近期随着比特币暴涨,出现了挖矿潮,很多服务器都被植入了挖矿病毒,在我之前的工作过程中,经常遇到各种中毒的情况,主要表现为cpu跑满,异常进程,系统被篡改的问题。近期挖矿病毒越来越高级,不仅在top,ps完全隐藏了进程,在系统内ls也无法查看到对应文件,本文记录一次此类进程不可见的挖矿病毒清理流程。
此类问题需要借助busybox工具来将隐藏的进程显示出来
1、安装busybox定位隐藏进程
wget https://busybox.net/downloads/binaries/1.21.1/busybox-x86_64
chmod +x busybox-x86_64
mv busybox-x86_64 /usr/bin/busybox
2、排查流程
(1)top查看不到,正常top只能看到负载不正常,但是cpu负载很低,%id也是正常的(如图1)。使用ps aux | sort -k3nr | head -n 10依然无法查看到cpu高的进程。此时,使用busybox top可查看到隐藏的挖矿进程(如图2)
执行busybox top就可以查看到隐藏的进程了,发现隐藏进程为/usr/bin/kthreadd bioset
(2)守护进程为/usr/bin/bioset
作用是禁止对挖矿涉及的核心文件(kthreadd,bioset,libcurl.so.2.17.0,authorized_keys)的修改,使用busybox ps -ef |grep /usr/bin/bioset |grep -v color |awk ‘{print $1}’| xargs busybox kill
结束此进程。
(3)隐藏相关的/lib/libcurl.so.2.17.0
该文件隐藏在/etc/ld.so.preload中调用,必须先使用busybox ls /etc/ld.so.preload查看以及busybox vi /etc/ld.so.preload进行编辑,该so文件作用是将ls,netstat,top等命令中执行涉及到kthreadd,bioset,libcurl.so.2.17.0,authorized_keys全部不显示出来。执行(2)步骤操作停止守护进程后,将/etc/ld.so.preload中的/lib/libcurl.so.2.17.0注释掉。再执行top,隐藏的挖矿进程就显示出来了。如下
(4)免登信息/root/.ssh/authorized_keys
没有配置密钥登录,但是被黑客写入了公钥信息,若服务器还暴露在公网,会被直接免登操作,增加堡垒机或者安全组做端口限制可以避免,所以需要把公钥信息清空
3、问题文件的清理脚本(centos7下可用)
#!/bin/bash
#删除隐藏挖矿病毒
#检测busybox工具是否安装
function isinstall()
{
which busybox > /dev/null 2>&1
if [[ $? != 0 ]]; then
wget https://busybox.net/downloads/binaries/1.21.1/busybox-x86_64&&chmod +x busybox-x86_64&&mv busybox-x86_64 /usr/bin/busybox
fi
}
#结束进程,删除文件
function delfile()
{
busybox [ ! -f $1 ]
if [[ $? == 1 ]]; then
busybox ps -ef | grep $1 |grep -v color |awk ‘{print $1}’| xargs busybox kill -9
sleep 2
busybox chattr -i $1
busybox rm -rf $1
busybox [ ! -f $1 ]
if [[ $? == 0 ]]; then
echo “成功删除:${1}”
fi
fi
}
#main
isinstall
delfile “/usr/bin/svchost”
delfile “/usr/bin/bsd-port/getty”
delfile “/usr/bin/bioset”
delfile “/usr/bin/kthreadd”
delfile “/lib/libcurl.so.2.17.0”
#改名/etc/ld.so.preload
busybox chattr -i /etc/ld.so.preload
busybox mv /etc/ld.so.preload /etc/ld.so.preload.bak
#改名/root/.ssh/authorized_keys并且新建一个空文件
busybox chattr -i /root/.ssh/authorized_keys
busybox mv /root/.ssh/authorized_keys /root/.ssh/authorized_keys.bak
touch /root/.ssh/authorized_keys&&chmod 600 /root/.ssh/authorized_keys
#恢复resolv.conf
busybox chattr -i /etc/resolv.conf
#此处dns服务器请根据自己的需求设置下
busybox echo “nameserver 114.114.114.114” > /etc/resolv.conf
windows 10上也遇到隐藏进程的挖矿程序,有没办法查真实进程。
有个工具是SRSniffer,可以试试,可以抓包进程,不确定是否可以看到隐藏进程。另外要看看是不是被安装了filelocker这类的软件,可能把某些目录和文件隐藏了。