11月,FortiGuard实验室观察到一个用Go语言编写的独特僵尸网络通过物联网漏洞进行了传播。这个僵尸网络被称为Zerobot,包含几个模块,包括自我复制、针对不同协议的攻击和自我传播。它还使用WebSocket协议与其命令和控制服务器通信。根据一些IPS签名触发计数,该活动在11月中旬之后的某个时候开始了当前版本的传播。
受影响的平台:Linux;
受影响组织:任何组织;
影响:远程攻击者可以控制易受攻击的系统;
严重级别:严重。
本文详细介绍了该恶意软件如何利用漏洞,并在进入受感染的设备后检查其行为。
IPS签名活动
IPS签名活动
感染
Zerobot利用多个漏洞来访问设备,然后下载脚本以进一步传播。完整的脚本如下图所示。请注意,下载URL已从http[:]//zero[.]sudolite[.]ml/bins更改为http[:]]//176[.]65.137[.]5/bins。此Zerobot变体针对以下架构:i386、amd64、arm、arm64、mips、mips64、mips64le、mipsle、ppc64、ppc64le、riscv64和s390x。它使用文件名“zero”保存,这是活动名称的来源。
2022年11月24日之前使用的下载脚本
当前下载脚本
Zerobot有两个版本。11月24日之前使用的第一个仅包含基本功能。当前版本增加了一个“selfRepo”模块来复制自身,并感染更多具有不同协议或漏洞的端点。旧版本的功能列表如下图所示。然而,以下技术分析是基于新版本的。
11月24日之前Zerobot版本的主要功能
技术分析——初始化
Zerobot首先检查其与Cloudflare的DNS解析器服务器1.1.1.1的连接。
检查1.1.1.1:80的网络连接
然后,它根据受害者的操作系统类型将自己复制到目标设备上。对于Windows,它将自己复制到文件名为“FireWall.exe”的“Startup”文件夹中。Linux有三个文件路径:“%HOME%”、“/etc/init/”和“/lib/systemd/system/”。
复制本身的代码流
然后,它设置了一个“AntiKill”模块,以防止用户中断Zerobot程序。该模块监视特定的十六进制值,并使用“signal.Notify”拦截任何发送来终止或终止进程的信号。
AntiKill的部分代码
技术分析——命令
初始化后,Zerobot使用WebSocket协议启动到其C2服务器ws[:]//176[.]65[.]137[.]5/handle的连接。
连接到C2服务器
从受害者发送的数据如下图所示。基于WebSocket协议,我们可以对其进行屏蔽,以获取带有受害者信息的JSON:
{"Platform":"linux","GCC":"386","CPU":1,"Payload":"Direct","Version":1}
C2连接的流量捕获
通信通道设置后,客户端等待来自服务器的命令,包括“ping”、“attack”、“stop”、“update”、“kill”、“disable_scan”、“enable_scan”和“command”。有关“enable_scan”中漏洞的详细信息,接下来会讲到。
在zero.mips中接收命令
zero.386中接收到的命令
技术分析——开发
Zerobot包括21个漏洞,具体如图12所示,下图中受影响的产品如下所示。除了一些物联网漏洞外,还包括Spring4Shell、phpAdmin、F5 Big等,以提高其攻击成功率。
Zerobot中的漏洞列表
Zerobot针对的易受攻击设备列表
上图顶部名为“ZERO_xxxxx”的两个漏洞来自网站“0day.today”。该网站分享了许多用于“教育”目的的漏洞。编号“36290”和“32960”是从该网站分配的。
“ZERO_36290”漏洞的0day.today网页
漏洞中注入的有效负载数据与上图所示的脚本文件相同。
为利用漏洞注入的有效载荷数据
总结
Zerobot是一个用Go编程语言编写的新僵尸网络。它通过WebSocket协议进行通信。它于11月18日首次出现,旨在针对各种漏洞。在很短的时间内,它被更新为字符串混淆、复制文件模块和传播攻击模块,这使得它更难检测。
参考及来源:https://www.fortinet.com/blog/threat-research/zerobot-new-go-based-botnet-campaign-targets-multiple-vulnerabilities