应急响应技能杂谈

只愿长相守 提交于 2019-11-27 13:13:53

应急响应

分类

应急响应根据平台划分,可以分为Windows、Linux平台,但是根据事件类型分析,种类繁多,根据目前遇到的应急事件,简单分为:

  • 系统入侵:弱口令、主机漏洞
  • web入侵:篡改、webshell
  • 病毒木马:挖矿病毒、勒索病毒、后门、蠕虫
  • 网络攻击:DDOS攻击、频繁发包、批量请求

思路

一、收集信息

首先根据报警设备(IDS、态势感知、EDR等),查询首先产生报警的时间,以及详情。有时需要了解报警设备的触发规则,方便对事件性质进行判断。

根据报警设备锁定需要排查的一台或者多台机器。与客户进行沟通,得到机器中运行的系统详情、启用服务等信息。

二、接触服务器

一、查看端口情况

接触到服务器之后,首先应该查询端口情况。

Windows

  • netstat -ano 查看目前的网络连接,定位可疑的ESTABLISHED,得到可疑PID。

  • tasklist | findstr "PID" or tasklist /svc | findstr "PID"查看PID对应的进程

  • dir /s ****(文件)查找进程文件所在位置

  • netstat -ano | findstr "port" 查看端口对应的PID

  • 使用Process Hacker工具进行查看可疑进程、服务

  • 分析进程参数:wmic process get caption,commandline /value >> tmp.txt

  • 在 windows 下查看某个运行程序(或进程)的命令行参数,使用下面的命令:wmic process get caption,commandline /value

  • 如果想查询某一个进程的命令行参数,使用下列方式:
    wmic process where caption="****.exe" get caption,commandline /value

Linux

使用netstat 网络连接命令,分析可疑端口、IP、PID

  • netstat -antlp|more 查看下pid所对应的进程文件路径

  • ls -l /proc/PID/exe or file /proc/PID/exe(PID 为对应的pid 号)查看下pid所对应的进程文件路径

  • ps aux | grep pid分析进程

在端口情况查看时,留意特殊端口,例如Windows中的445、3389等端口,Linux中的22、21、23等常用端口。注意这些常用端口的连接情况。留意外网ip对这些常用端口的连接。如果遇到挖矿应急响应,需要尤其注意 7777、8888等有规律端口(其端口有可能用来服务器连接矿池)。

二、查看系统账户安全

检查完毕端口情况之后,需要对系统账户进行排查。

Windows

  • 查看服务器是否有弱口令,远程管理端口是否对公网开放。

检查方法: 据实际情况咨询相关服务器管理员。 

  • 查看服务器是否存在可疑账号、新增账号。

检查方法: 使用lusrmgr.msc命令,查看是否有新增/可疑的账号,如有管理员群组的(Administrators)里的新增账户。或者net user命令。

  • 查看服务器是否存在隐藏账号、克隆账号。

检查方法:
a、打开注册表 ,查看管理员对应键值。
b、使用D盾_web查杀工具,集成了对克隆账号检测的功能。

Linux

  • 查看服务器是否有弱口令,远程管理端口是否对公网开放

检查方法: 据实际情况咨询相关服务器管理员。

  • 查看服务器是否存在可疑账号、新增账号

检查方法: 
a、用户信息文件/etc/passwd
root:x:0:0:root:/root:/bin/bash
account:password:UID:GID:GECOS:directory:shell
用户名:密码:用户ID:组ID:用户说明:家目录:登陆之后shell
注意:无密码只允许本机登陆,远程不允许登陆

b、影子文件/etc/shadow
root:oGs1PqhL2p3ZetrE:16809:0:99999:7:::
用户名:加密密码:密码最后一次修改日期:两次密码的修改时间间隔:密码有效期:密码修改到期的警告天数:密码过期之后的宽限天数:账号失效时间:保留

  • 查看当前登录账户

who 查看当前登录账户(tty本地登陆 pts远程登录)
w 查看系统信息,想知道某一时刻账户的行为
uptime 查看登陆多久、多少账户,负载

  • 查看账户特权

1、查询特权账户(uid 为0)

awk -F: '$3==0{print $1}' /etc/passwd

2、查询可以远程登录的帐号信息

awk '/\$1|\$6/{print $1}' /etc/shadow

3、除root帐号外,其他帐号是否存在sudo权限。如非管理需要,普通帐号应删除sudo权限

more /etc/sudoers | grep -v "^#\|^$" | grep "ALL=(ALL)"

4、禁用或删除多余及可疑的帐号

usermod -L user 禁用帐号,帐号无法登录,/etc/shadow第二栏为!开头

userdel user 删除user用户

userdel -r user 将删除user用户,并且将/home目录下的user目录一并删除

三、检查启动项、计划任务、服务

Windows

  • 检查服务器是否有异常的启动项

检查方法:
a、单击【开始】>【所有程序】>【启动】,默认情况下此目录在是一个空目录,确认是 否有非业务程序在该目录下。

b、单击开始菜单 >【运行】,输入 msconfig,查看是否存在命名异常的 启动项目,是则取消勾选命名异常的启动项目,并到命令中显示的路径删除文件。

c、单击【开始】 >【运行】,输入 regedit,打开注册表,查看开机启动项是否正常,特别注意如下三个注册表项: HKEY_CURRENT_USER\software\micorsoft\windows\currentversion\run
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunHKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Runonce
检查右侧是否有启动异常的项目,如有请删除,并建议安装杀毒软件进行病毒查杀,清除残留病毒或木马。

d、使用autorun、Process Hacker等工具进行查看。

  • 检查计划任务

检查方法:

a、单击【开始】>【设置】>【控制面板】>【任务计划】,查看计划任务属性,便可以发现木马文件 的路径。

b、单击【开始】>【运行】;输入 cmd,然后输入at,检查计算机与网络上的其它计算机之间的会话 或计划任务,如有,则确认是否为正常连接。

  • 服务自启动

检查方法:

单击【开始】>【运行】,输入services.msc,注意服务状态和启动类型,检查是否有异常服务。

Linux

  • 开机启动项

开机启动配置文件

/etc/rc[0~6].d

例子:当我们需要开机启动自己的脚本时,只需要将可执行脚本丢在/etc/init.d目录下,然后在/etc/rc.d/rc*.d中建立软 链接即可

root@localhost ~]# ln -s /etc/init.d/sshd /etc/rc.d/rc3.d/S100ssh

此处sshd是具体服务的脚本文件,S100ssh是其软链接,S开头代表加载时自启动;如果是K开头的脚本文件,代表运行级别加载时需要关闭的。

检查方法:ls -l /etc/rc[0~6].d

  • 定时任务

crontab -l 列出某个用户cron服务的详细内容

crontab -r 删除每个用户cront任务(谨慎:删除所有的计划任务)

crontab -e 使用编辑器编辑当前的crontab文件

四、查看日志

Windows

  • 系统日志

分析方法:
a、前提:开启审核策略,若日后系统出现故障、安全事故则可以查看系统的日志文件,排除故障,追查入侵者的信息等。
b、Win+R打开运行,输入“eventvwr.msc”,回车运行,打开“事件查看器”。
c、导出应用程序日志、安全日志、系统日志,利用Log Parser进行分析。

  • 安全日志

安全日志包含诸如有效和无效的登录尝试等事件,以及与资源使用相关的事件,如创建、打开或删除文件或其他对象。管理员可以指定在安全日志中记录什么事件。例如,如果已启用登录审核,则安全日志将记录对系统的登录尝试。

安全日志登录部分的事件 ID 和登录类型代码的含义

Event ID(2000/XP/2003)Event ID(Vista/7/8/2008/2012)描述日志名称
528 4624 成功登录 Security
529 4625 失败登录 Security
680 4776 成功/失败的账户认证 Security
624 4720 创建用户 Security
636 4732 添加用户到启用安全性的本地组中 Security
632 4728 添加用户到启用安全性的全局组中 Security
2934 7030 服务创建错误 System
2944 7040 IPSEC服务服务的启动类型已从禁用更改为自动启动 System
2949 7045 服务创建 System
---- 4648 使用明文凭证尝试登录 Security
---- 4778 重新连接到一台Windows主机会话 Security
---- 4779 断开到一台Windows主机会话 Security
登录类型登录行为描述
2 Interactive 用户登录到本机
3 Network 用户或计算手机从网络登录到本机,如果网络共享,或使用 net use 访问网络共享,net view 查看网络共享
4 Batch 批处理登录类型,无需用户干预
5 Service 服务控制管理器登录
7 Unlock 用户解锁主机
8 NetworkCleartext 用户从网络登录到此计算机,用户密码用非哈希的形式传递
9 NewCredentials 进程或线程克隆了其当前令牌,但为出站连接指定了新凭据
10 Remotelnteractive 使用终端服务或远程桌面连接登录
11 Cachedlnteractive 用户使用本地存储在计算机上的凭据登录到计算机(域控制器可能无法验证凭据),如主机不能连接域控,以前使用域账户登录过这台主机,再登录就会产生这样日志
12 CachedRemotelnteractive 与 Remotelnteractive 相同,内部用于审计目的
13 CachedUnlock 登录尝试解锁
  • 应用程序和服务日志

应用程序和服务日志是一种新类别的事件日志。这些日志存储来自单个应用程序或组件的事件,而非可能影响整个系统的事件。

查看PowerShell日志

Microsoft->Windows->PowerShell->OPtions

查看远程连接日志

应用程序和服务日志->Microsoft->Windows->TerminalServices->RemoteConnectionManager->Operational

远程连接日志事件ID和含义

事件ID含义
1149 用户认证成功
21 远程桌面服务:会话登录成功
24 远程桌面服务:会话已断开连接
25 远程桌面服务:会话重新连接成功
  • WEB访问日志

分析方法:
a、找到中间件的web日志,打包到本地方便进行分析。
b、推荐用 EmEditor 进行日志分析,支持大文本,搜索效率还不错。

Linux

  • 系统日志

日志默认存放位置:/var/log/
查看日志配置情况:more /etc/rsyslog.conf

文件说明
/var/log/cron 记录了系统定时任务相关的日志
/var/log/cups 记录打印信息的日志
/var/log/dmesg 记录了系统在开机时内核自检的信息,也可以使用dmesg命令直接查看内核自检信息
/var/log/mailog 记录邮件信息
/var/log/message 记录系统重要信息的日志。这个日志文件中会记录Linux系统的绝大多数重要信息,如果系统出现问题时,首先要检查的就应该是这个日志文件
/var/log/btmp 记录错误登录日志,这个文件是二进制文件,不能直接vi查看,而要使用lastb命令查看
/var/log/lastlog 记录系统中所有用户最后一次登录时间的日志,这个文件是二进制文件,不能直接vi,而要使用 lastlog命令查看
/var/log/wtmp 永久记录所有用户的登录、注销信息,同时记录系统的启动、重启、关机事件。同样这个文件也是 一个二进制文件,不能直接vi,而需要使用last命令来查看
/var/log/utmp 记录当前已经登录的用户信息,这个文件会随着用户的登录和注销不断变化,只记录当前登录用户 的信息。同样这个文件不能直接vi,而要使用w,who,users等命令来查询
/var/log/secure 录验证和授权方面的信息,只要涉及账号和密码的程序都会记录,比如SSH登录,su切换用户,sudo授权,甚至添加用户和修改用户密码都会记录在这个日志文件中
  • web日志

查一句话木马
grep -i -r "eval(\$_post" /path/*

其中-i表示不区分大小写,-r表示搜索指定目录及其子目录

  • 日志分析技巧

1、定位有多少IP在爆破主机的root帐号:
grep "Failed password for root" /var/log/secure | awk '{print $11}' | sort | uniq -c | sort - nr | more

2、定位有哪些IP在爆破:
grep "Failed password" /var/log/secure|grep -E -o "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\. (25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0- 4][0-9]|[01]?[0-9][0-9]?)"|uniq -c

3、爆破用户名字典是什么?
grep "Failed password" /var/log/secure|perl -e 'while($_=<>){ /for(.*?) from/; print
"$1\n";}'|uniq -c|sort -nr

4、登录成功的IP有哪些:
grep "Accepted " /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr | more

5、登录成功的日期、用户名、IP:
grep "Accepted " /var/log/secure | awk '{print $1,$2,$3,$9,$11}'

四、特殊技巧

Windows

  • 检查系统相关信息

1、查看系统版本以及补丁信息

检查方法:单击【开始】>【运行】,输入systeminfo,查看系统信息

2、查找可疑目录及文件 检查方法:

a、查看用户目录,新建账号会在这个目录生成一个用户目录,查看是否有新建用户目录。
Window 2003 C:\Documents and Settings\
Window 2008R2 C:\Users\

b、单击【开始】>【运行】,输入%UserProfile%\Recent,分析最近打开可疑文件。

c、在服务器各个目录,可根据文件夹内文件列表时间进行排序,查找可疑文件。

  • 连接无法建立,端口连接信息查询不到

通过更改hosts文件,将解析域名改为自己的vps,自己vps开启监听,即可连接。(该技巧,适用于对域名进行连接的方案)

  • 查看防火墙配置

netsh firewall show all

Linux

  • 历史命令

通过.bash_history查看帐号执行过的系统命令

历史操作命令的清除:history -c但此命令并不会清除保存在文件中的记录,因此需要手动删除.bash_profile文件中的记录。






易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!