【实用指南】一次真实的应急响应案例(Ubuntu)事件复现
【推荐学习】暗月渗透测试培训 十多年渗透经验,体系化培训渗透测试 、高效学习渗透测试,欢迎添加微信好友aptimeok 咨询。
Linux环境下处理应急响应事件相比于Windows往往会更加的棘手。这篇文章将会对Linux环境下的应急响应流程进行讲解,并且提供每一个环节中所用到的shell命令,以帮助大家快速、系统化地处理Linux环境下的病毒。处理Linux应急响应主要分为这4个环节:识别现象-> 清除病毒-> 闭环兜底-> 系统加固。(附流程图)
根据客户反馈:实验室因耗电量太大经常跳闸,服务器疑似被挖矿。然后我们需要通过系统运行状态、安全设备告警去发现主机的异常现象,以及确认病毒的可疑行为。
1.1排查alias异常别名
这里有一个小技巧,首先通过命令alias
查看是否存在异常别名,结果发现服务器多了很多别名,且常用别名被修改成了print ""
(输出为空),这样就能迷惑运维工程师。
此时,我们需要将修改后的所有别名取消,删除别名的命令:unalias
,如果你想删除所有的别名,直接使用 unalias -a
即可,只不过要谨慎使用,避免你设置的所有的别名一下子都被清除了,自己还得一个一个重新设置回来
这里有个小提示:别名可能被永久修改(意思就是每次重启服务器,别名都被修改一遍),所以为了防止这种情况,所以我们要一次解决到位,去进一步查看是否存在这种情况!
永久修改别名的文件在:
/home/用户名/.bashrc
/root/.bashrc
/etc/.bashrc针对所有用户生效
~/.bashrc是针对当前用户生效
通过查看别名修改文件位置发现确实存在这种情况,所以,我们要删除清理被修改的别名文件。以后再次重启服务器,别名就不会再出现了
删除别名文件
rm -rf /usr/.SQL-Unix/.SQL/.db
rm -rf /var/tmp/.SQL-Unix/.SQL/.db
删除/root/.bashrc、 /home/zyr/.bashrc文件
rm -rf /usr/.SQL-Unix/.SQL/.db
rm -rf /var/tmp/.SQL-Unix/.SQL/.db
1.2系统、进程等是否异常
-
使用命令
top
枚举进程,CPU降序排序(查看服务器cpu使用率发现 cpu使用率没有特别高的,接近或者超过100%的进程) -
如果看到了可疑进程,可以使用lsof -p pid 查看进程打开的文件,或查看/proc/pid/exe 指向的文件。
-
使用
pa -aux
枚举进程命令行(病毒一般都携带可疑的命令行,当你发现命令行中带有url等奇怪的字符串时,就要注意了,它很可能是个病毒) -
使用
nvidia -smi
查看服务器gpu使用率,查看gpu使用率有没有特别高的。(该命令只能在真实服务器使用,虚拟机中不可使用) -
安全网关有无告警,从安全网关报警识别出威胁是最直接的!!
在这次事件中,虽然gpu和cpu都显示没有异常,但是在态势感知上一直显示该服务器与矿池域名进行通信,并且经常因为用电过高跳闸,说明该服务器确实含有挖矿病毒,但是病毒进程被隐藏!!!
2.1恶意病毒定位
挖矿病毒一般都会有定时任务,为了防止服务器关闭之后或者病毒程序被杀掉进程之后,挖矿病毒不再运行,所以接下来我们去查看一下服务器上的定时任务:sudo crontab -l
,发现一个未知文件,查看内容发现一个.可疑域名:eth-asia1.nanopool.org
经过微步识别,确认是一个矿池域名
使用命令stat 文件名
查看文件的创建时间,进行时间范围定位;然后再查看另一个定时文件:placi,发现该文件与文件.b4nd1d0创建时间相同,存在一定联系!
2.2清理病毒和定时任务
删除病毒文件
rm -rf .b4nd1d0
rm -rf placi
sudo rm -rf root
sudo rm -rf zyr
Linux下的病毒持久化驻留方式相比于Windows较少,主要以4种方式:定时任务、服务、系统文件劫持、守护进程。
3.1检查定时任务是否清理干净
使用命令reboot
重启服务检查病毒是否清理干净,因为有的病毒会更改启动项,进行后门自启。重启服务器之后,检查 /var/spool/cron/crontab 目录正常,没有病毒的痕迹
3.2是否存在SSH后门
使用命令:netstat -anpt
排查是否存在ssh软链接后门,经过探测没有发现可疑端口和用户
3.3是否存在后门账号
-
使用命令:
awk -F: '$3==0 {print$1}' /etc/passwd
发现新增加了一个超级账户:sclipicibosu -
使用命令:
awk '/$1|$6/{print $1}' /etc/shadow
发现同一个可远程登录的账号:sclipicibosu -
删除后门账号
sudo userdel -rf sclipicibosu #强制删除该账户以及/home/sclipicibosu
加上-r可以删除/home/路径下的用户文件夹,否则不能
-
3.4查看是否有SSH公钥后门
首先查看 /home/目录下的账户,发现只有一个zyr,查看ssh的公钥文件的最近更改时间与挖矿时间按事件相同,确实存在ssh公钥后门!!!
删除公钥后门
rm -f authorized_keys
3.5后门检测工具推荐
-
Chkrootkit是一种Linux后门入侵检测工具,可以用来检测rootkit后门的工具,可以很好的检测到rootkit程序。
-
wget ftp://ftp.pangeia.com.br/pub/seg/pac/chkrootkit.tar.gz
tar zxvf chkrootkit.tar.gz
cd chkrootkit-0.52
make sense
./chkrootkit
-
rkhunter是Linux系统平台下的一款开源入侵检测工具,具有非常全面的扫描范围,除了能够检测各种已知的rootkit特征码以外,还支持端口扫描、常用程序文件的变动情况检查。
-
Wget https://nchc.dl.sourceforge.net/project/rkhunter/rkhunter/1.4.4/rkhunter-1.4.4.tar.gz
tar -zxvf rkhunter-1.4.4.tar.gz
cd rkhunter-1.4.4
--install
rkhunter -c
4.1溯源分析
根据文件创建时间推测入侵事件为2022-02-15,然后去/var/log
排查安全日志,通过以下一些命令再结合用户的登录情况和文件创建事件,总结分析:服务器是被ssh爆破出wxiaoge、zyr账户之后入侵并植入挖矿病毒与ssh公钥后门。
统计登录失败的记录命令
grep -o "Failed password" /var/log/auth* |uniq -c
查询被爆破的用户名都有哪些以及被爆破的次数
grep "Failed password" /var/log/auth*|perl -e 'while($_=<>){ /for(.*?) from/; print "$1n";}'|uniq -c|sort -nr
查询用户最近登录情况
grep "Accepted " /var/log/auth* | awk '{print $1,$2,$3,$9,$11}'
查看 xxx账户的爆破时间段
grep "Failed password" /var/log/auth*|grep xxx账号
4.2防护检查
Linux平台下90%的病毒是通过网络传播感染的,大部分原因也是因为Web安全防护不够。Linux平台下的恶意软件威胁以僵尸网络蠕虫和挖矿病毒为主,由于Linux大多作为服务器暴露在公网,且Web应用的漏洞层出不穷,所以很容易被大范围入侵。
-
修改ssh弱口令
-
添加命令审计(为历史的命令增加登录的IP地址、执行命令时间等信息)
-
及时打补丁
(本文参考:深信服EDR (sangfor.com.cn)和W小哥1的博客-CSDN博客_应急响应案例)
https://wxiaoge.blog.csdn.net/article/details/122946491
原创文章,作者:moonsec,如若转载,请注明出处:https://www.moonsec.com/7445.html