前言
有一段时间没发文章了,近期正好遇到一次服务器中病毒的安全事件,先水一篇。
摘要
近期的某天下午,接收到客户发来的一台Linux服务器感染病毒的安全通知,需要协助处置,与现场工程师沟通了解到该服务器此前在互联网开放了SSH服务,并且有业务系统运行。
虽当时还未明确是什么类型的病毒,但现场工程师的安全意识比较强,发现问题时已第一时间将服务器断网处理,随后我们进行远程分析、处置。
分析
通过相关安全设备,知晓服务器上存在异常的进程,在/usr/bin/dpkgd/目录下,此目录下存在netstat、ps、ss三个可执行程序。
/usr/bin/dpkgd/ss
/usr/bin/dpkgd/ps
/usr/bin/dpkgd/netstat
strings命令查看可执行程序,与正常系统下的相同可执行程序对比,判断大概率是正常的系统可执行程序,但被木马程序备份到此目录。
root@localhost:~$ strings /usr/bin/dpkgd/ss
root@localhost:~$ strings /usr/bin/dpkgd/ps
root@localhost:~$ strings /usr/bin/dpkgd/netstat
三个可执行程序所属用户均为root,所属用户组却为adm,怀疑是否是通过爆破adm用户,进而传播木马病毒文件,此前工程师沟通得知,曾对互联网开放了ssh端口。
查看最近成功登录信息,未发现有adm用户的登录信息。
root@localhost:~$ last
查看安全日志,未发现有异常的登录成功信息(截图有漏,看官见谅)。
此时已感觉到可能不是这个方向进来的。
root@localhost:~$ cat /var/log/secure | grep Accepte
root@localhost:~$ cat /var/log/secure | grep -w "adm"
root@localhost:~$ cat /var/log/secure | grep faile
root@localhost:~$ cat /var/log/secure | grep failure
思路再转回来,既然正常的系统命令被备份了,现在正在使用的系统命令是在哪呢,whereis命令查看,正使用的命令在/bin/和/usr/sbin目录下
root@localhost:~$ whereis ps
root@localhost:~$ whereis ss
root@localhost:~$ whereis netstat
查看文件信息,文件大小及文件修改时间均有异常,最新一次文件修改时间就在半小时内。
root@localhost:~$ ll -lh /bin/ps
root@localhost:~$ ll -lh /bin/ss
root@localhost:~$ ll -lh /bin/netstat
这些是被替换掉的系统文件,还需要去找释放这些文件的病毒核心文件,再次从adm账号入手,通过查找所属组为adm账号的文件,发现了其他异常的文件。
root@localhost:~$ find / -group adm 2>/dev/null
异常文件
/etc/init.d/selinux
/etc/init.d/DbSecuritySpt
/etc/rc1.d/S97DbSecuritySpt
/etc/rc1.d/S99selinux
/etc/rc2.d/S97DbSecuritySpt
/etc/rc2.d/S99selinux
/etc/rc3.d/S97DbSecuritySpt
/etc/rc3.d/S99selinux
/etc/rc4.d/S97DbSecuritySpt
/etc/rc4.d/S99selinux
/etc/rc5.d/S97DbSecuritySpt
/etc/rc5.d/S99selinux
/tmp/gates.lod
/tmp/moni.lod
到此,发现的病毒程序还不全,病毒程序大多是除了主程序之外,还有保护程序。
此时偶然间发现,网络上有人曾中过相似的病毒,根据前人经验,找到其他的文件,根据文件时间和文件大小发现,也是异常文件。
/usr/bin/.sshd
/usr/bin/bsd-port/getty
处置
至此,已经把病毒相关的文件、进程找全了,随后将所有病毒相关文件打包,删除所有病毒相关文件,杀掉病毒进程,观察30分钟并在第二天继续观察,确认病毒没有再生。
# 打包
tar -zcvf /tmp/test.tar.gz /usr/bin/.sshd /usr/bin/bsd-port/ /etc/init.d/selinux /etc/init.d/DbSecuritySpt /bin/ps /bin/ss /bin/netstat /tmp/gates.lod
# 删文件
rm -fr /usr/bin/.sshd
rm -fr /usr/bin/bsd-port/
rm -fr /bin/ps
rm -fr /bin/netstat
rm -fr /usr/sbin/ss
rm -fr /tmp/gates.lod
rm -fr /tmp/moni.lod
rm -fr /etc/init.d/selinux
rm -fr /etc/init.d/DbSecuritySpt
rm -fr /etc/rc1.d/S97DbSecuritySpt
rm -fr /etc/rc1.d/S99selinux
rm -fr /etc/rc2.d/S97DbSecuritySpt
rm -fr /etc/rc2.d/S99selinux
rm -fr /etc/rc3.d/S97DbSecuritySpt
rm -fr /etc/rc3.d/S99selinux
rm -fr /etc/rc4.d/S97DbSecuritySpt
rm -fr /etc/rc4.d/S99selinux
rm -fr /etc/rc5.d/S97DbSecuritySpt
rm -fr /etc/rc5.d/S99selinux
# 杀进程
kill -9 /usr/bin/.sshd
kill -9 /usr/bin/bsd-port/getty
# 恢复文件
cp /usr/bin/dpkgd/ps /bin/
cp /usr/bin/dpkgd/netstat /bin/
cp /usr/bin/dpkgd/ss /usr/sbin/
虽然病毒的问题解决了,但传播入口在哪还未可知,既然不是通过服务器口令进入,内网也没有发现其他感染的机器,此前与工程师沟通,该服务器确实有业务系统在互联网开放,那大概率是从业务系统进来的了。
通过相关信息收集,此病毒被命名为BillGates,其流行的传播方式为log4j2远程命令执行漏洞,而在服务器上也确实找到了log4j2的jar包文件,因系统下线,只待后续再进行验证确认。
至于病毒文件分析的部分就等团队小伙伴K&T分析完后,再来水一篇文章了。
结语
现在的互联网,各种漏洞层出不穷,一定要保护好自己呀,新系统上线做做安全评估,业务系统定期进行安全检查,以免被恶意人员攻击当作肉鸡使用,损害自己的权益。
原文始发于微信公众号(Wings安全团队):记一次感染病毒的应急响应
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论