前言
简单学习了一下应急响应相关的知识。总结自己实际的攻防经验,虽然参与应急响应的次数有限,但还是有些思路的,当然这也是不够完善的,后面会结合更多的应急响应经历来完善这份清单。
所以只在这里列出一个应急响应清单,方便自查。
分析思路
一般受害者主机都属于这三大类:
1.web服务器
中间件、框架版本、语言(php\jsp\asp)、是否存在弱口令(万能密码)、是否站库分离,登录爆破难度,这些都是我们能够快速了解到的,也是常见的getshell手段。
中间件是为了知道网站的文件架构和历史漏洞等,框架版本落后可能存在nday漏洞,获取网站语言是为了查杀可能存在的webshell,弱口令进入后台上传文件getshell或者直接命令执行,站库分离的话就排除了通过sql注入getshell的可能,登录爆破是否有token、验证码、错误次数限制等。
2.远程连接服务器
Windows远程连接:3389
vnc服务:5901/5902
ssh:22
telnet:23
都存在弱口令爆破的可能,而爆破必定会产生大量失败日志,可以关注近期Windows日志登录失败的ip。
3.数据库服务器
Mysql:3306
MSSQL:1433/1434
Oracle:1512
PostgreSQL:5432
MongoDB:27017
Redis:6379
数据库提权,redis未授权访问写入ssh等。
Windows系统排查
直接排查危险项:
1.用户信息
普通用户
1 | net user |
影子用户
1 | reg query HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\Names |
D盾
2.进程、服务
任务管理器有没有占用内存较高的、可疑服务
火绒剑排查可疑进程
3.网络连接
1 | netstat -ano |
获得可疑连接的进程号pid后,进一步筛选
1 | tasklist | findstr pid |
得知是哪个进程建立的连接
4.启动项、计划任务
启动项
任务管理器的启动
计划任务
1 | schtasks |
5.日志分析
打开事件查看器,win+r
1 | eventvwr |
系统日志:
查看日志删除记录,事件ID 104,这个ID记录所有审计日志清除事件,就算入侵者删除了日志,我们也可以初步判定他入侵的时间。
安全日志:
事件ID 4624 代表登录成功的用户,如果登录类型是10,说明是远程登录,关于登录类型的说明可自行百度,一般在凌晨登录的都是攻击者。
事件ID 4625,代表登录失败的用户,如果是远程爆破进来的,一定会留下很多爆破失败的痕迹,我们可以在这里查找多次爆破失败的IP,然后再筛查其进行的事件。
如果上面不好找或者不是通过远程爆破进来的,他一定会进行创建用户账号、修改密码等操作。
事件ID:4720,4722,4723,4724,4725,4726,4738,4740 代表当用户账号发生创建,删除,改变密码时的事件记录。
事件ID: 4727,4737,4729,4762 代表当用户组发生添加、删除时或组内添加成员时生成该事件。
6.自动化日志提取分析工具
正确的使用可以快速杀死比赛
7.病毒查杀
360
8.木马查杀
内存马查杀
首先查看机器进程,找到Tomcat或者Weblogic进程ID,如下为查找Tocmat进程ID
1 | ps -el | grep org.apache.catalina.startup.Bootstrap |
运行卸载内存马程序
1 | java -Xbootclasspath/a:$JAVA_HOME/lib/tools.jar -jar releaseBehinderShell-1.0-SNAPSHOT-jar-with-dependencies.jar [pid] |
通过jsp脚本扫描并查杀各类中间件内存马,比Java agent要温和一些。
Linux系统排查
1.账号安全
1 | who 查看当前登录用户(tty本地登陆 pts远程登录) |
快速列出所有所有 uid 为0的用户
1 | cat /etc/passwd|awk -F: '$3==0{print $1}' |
快速列出可以远程登录账号
1 | cat /etc/shadow|awk '/$1|$6/{print $1}' |
2.历史记录
root用户
1 | cat ~/.bash_history |
其他用户
1 | cat /home/username/.bash_history |
3.检查异常进程、端口
1 | netstat -antlp | more |
查看下pid所对应的进程文件路径,($PID 为对应的pid 号)
1 | ls -al /proc/$PID/exe |
4.检查开机启动项
1 | 开机启动配置文件 |
5.检查定时任务
Tips:默认编写的crontab文件会保存在 (/var/spool/cron/用户名 例如: /var/spool/cron/root
crontab -r
删除每个用户cront任务(谨慎:删除所有的计划任务)
crontab -e
使用编辑器编辑当前的crontab文件
如:*/1 * * * * echo "hello world" >> /tmp/test.txt
每分钟写入文件
列出某个用户cron服务的详细内容
1 | crontab -l |
重点关注
1 | /var/spool/cron/* |
6.检查服务
查看系统运行的服务
1 | chkconfig --list |
7.Linux日志分析
日志文件与说明
8.快速应急小工具
1 | git clone git@github.com:grayddq/GScan.git |
1 | git clone git@github.com:al0ne/LinuxCheck.git |
9.病毒/恶意软件查杀
或者
1 | yum install -y clamav |
安装
1 | wget ftp://ftp.pangeia.com.br/pub/seg/pac/chkrootkit.tar.gz |
10.webshell查杀
快速查找1小时内修改的jsp文件
1 | find [扫描路径] -type f -mmin -60 -name "*.jsp" |
安装
1 | wget -O /opt/hm-linux.tgz http://dl.shellpub.com/hm/latest/hm-linux-amd64.tgz?version=1.7.0 |