一、背景

EnemyBot僵尸网络程序于今年三月份首次被安全厂商披露。绿盟科技伏影实验室也于早期捕获到相关样本,并一直处于跟踪监测阶段。

2022年5月4日,F5 针对BIG-IP 产品的 iControlREST 组件中的远程代码执行漏洞发布了安全公告,漏洞的CVE编号为CVE-2022-1388。该漏洞可以绕过身份认证,远程执行任意代码,漏洞评分CVSS达到9.8。自公告发布以来,攻击者寻找未修复的系统,开始进行大规模地漏洞在野利用。绿盟科技伏影实验室全球威胁狩猎系统监测到该漏洞在野传播过程,同时也发现了EnemyBot僵尸网络利用该漏洞进行传播:

图1.1 漏洞利用

此外,我们发现该僵尸网络程序源代码最早于去年三月中旬就已经公开在开源代码托管平台上。但在初始化提交之后,便一直没有进行代码更新,关注度也比较少。一直到今年4月25日以及之后才进行了三次更新,且最后一次更新将Bot程序代码回退到了早期的版本,似乎有隐匿的意图。

二、关联信息

2.1 样本信息

EnemyBot同样由Gafgyt修改而来,属于Keksec僵尸网络的新成员。恶意程序大量复用同属Keksec僵尸网络家族程序的代码,包括LOLFME、Gafgyt、Gafgyt_Tor、Necro等,最新版本代码和结构与去年披露的Gafgyt_Tor高度相似。

经过大量样本的对比,我们发现EnemyBot僵尸网络程序之间也存在些许差别,自3月份出现开始,EnemyBot僵尸网络出现了多个版本。多个版本之间,最大的变化是后期采用Tor网络托管C&C服务器。除此之外,功能有增有减,但总体结构没有太大变化。可能是因为EnemyBot僵尸网络程序仍处于快速开发的过程。

我们对样本中发现的区别汇总如下表,在后面对其中变化的功能进行说明:

2.2 开源代码

通过关联信息,进一步证实了我们的发现。该僵尸网络源代码最早于去年三月中旬就已经公开在开源代码托管平台上。但在初始化提交之后,便一直没有进行代码更新,关注度也比较少。一直到今年4月25日以及之后才进行了三次更新,且最后一次更新删除了Tor匿名网络相关的通信代码,似乎将Bot程序代码回退到了早期版本的阶段。

图2.1 提交记录

最近的更新将enemy.c从v3.1退回到了v2.1

图2.2 4月25日更新和最新代码对比

该开源代码仓库包含了僵尸网络的控制端和僵尸程序代码,任何人拿到源代码都可以试图搭建僵尸网络,甚至不需要对源代码进行更改。

图2.3 提交记录

从代码仓库中的tor.json和tor.txt文件,可以确认Keksec僵尸网络组织使用的Tor节点来自于shodan搜索结果:

图2.4 Tor代理节点

三、技术分析

3.1 样本分析

从样本分析的过程中,我们发现样本虽然总体上也是分为三大类,但是样本之间细微区别是多于三个版本的。所以在Keksec组织内部应该也是存在代码分支管理,并处于更新迭代过程中。

3.1.1 启动特征

EnemyBot启动后会输出一段报错信息,然后向/tmp/.pwned写入一段声明字符串,属于Keksec僵尸网络一贯高调的风格:

图3.1 KEKSEC

所有发现的EnemyBot恶意程序都会显示该错误提示,但只有近期的样本才有后面的echo命令。

3.1.2 特殊文件检查

EnemyBot僵尸网络程序还会通过函数checkUserNames对目标系统中的/usr/bin目录下的文件名进行检测,如果发现存在虚拟环境相关的文件名称,就会直接退出,逃避检测和分析。但在发现的变种中,有的变种虽然同样有该方法的实现代码,但是没有被使用到:

图3.2 检测字符

3.1.3 加密方法

EnemyBot与早期发现的LOLFME、Gafgyt_Tor使用了相同的解密函数watudoinglookingatdis,后期EnemyBot将函数名称从watudoinglookingatdis变更成systemvariable,该解密方法的解密过程比较简单。与LOLFME不同的是,EnemyBot只将该解密函数用于普通字符串的解密中:

图3.3 解密方法

除了名为systemvariable解密方法,EnemyBot还使用了多种加密函数实现,包括复用了Mirai代码部分的异或加密方法deobf、异或加密xorencrypt及同样思路的解密函数okic和eika。deobf是对爆破过程中使用到的用户和密码进行解密;xorencrypt只用到一次,解密获取匿名网络地址链接。

图3.4 异或解密

Okic和eika使用了不同替换字典,进行替换解密。函数okic负责对内部指令字符串进行解密,并于C&C下发的指令进行对比确认,执行对应的功能。函数eika则主要负责对内部的一些函数执行过程中使用到的特殊字符串进行解密,例如需要关闭的特殊进程名。这些字符串在二进制中是加密存放的,避免被静态检测手段发现。

图3.5 解密方法

3.1.4 感染ELF文件

EnemyBot最近的变种还会对ELF可执行程序进行感染,该感染过程是将僵尸网络程序和原二进制ELF文件合并为同一文件,并以僵尸网络程序作为执行入口。当需要执行目标程序时释放并创建新进程执行该程序。恶意程序会对已感染程序进行标记,标记的方法就是在文件末尾附加用户名:

图3.6 感染二进制程序

3.2 通信方式

早期发现的EnemyBot僵尸网络程序直接从内置的加密字符串中解密获取C&C服务器地址进行连接:

图3.7 连接C&C

近期EnemyBot僵尸网络变种采用Tor网络代理进行C&C通信,与之前披露的同样归属于Keksec组织Gafgyt_Tor、Necro一样。Enemybot内置了多个代理地址,并以索引、IP、端口的方式存放,在连接之前随机选取地址然后进行连接:

图3.8 Tor连接

连接到Tor网络之后发送请求地址xfrvkmokgfb2pajafphw3upl6gq2uurde7de7iexw4aajvslnsmev5id.onion等待后续指令:

图3.9 连接与接收指令

如果连接成功,EnemyBot还会向服务端发送当前程序的架构信息。

3.3 指令功能

EnemyBot指令传输是明文传输的,格式和解析方式与Gafgyt相同。恶意程序中解析部分的指令是经过加密存放的:

图3.10 功能指令

部分指令和功能说明:

表3.1 部分指令和功能

3.4 漏洞利用和传播

EnemyBot使用漏洞在目标设备中下载和执行僵尸网络程序或者下载脚本,以此实现传播的目的:

图3.11 漏洞利用传播

EnemyBot使用了多个漏洞,其中包括多个本地文件包含(LFI)漏洞和近期披露的新漏洞。新漏洞的集成表明该僵尸网络程序在对功能的不断更新过程中,也不断提升漏洞利用和感染传播的能力。部分漏洞汇总如下:

表3.2 EnemyBot利用的部分漏洞

此外,绿盟科技伏影实验室也监测到该僵尸网络引入挖矿程序,同时传播,以实现最大化利益:

图3.12 挖矿

四、总结

从这些发现和分析来看,EnemyBot处于不断开发迭代过程中,持续更新并不断搭载新的漏洞利用载荷进行传播,并且仍会在一段时间内处于活跃状态。EnemyBot的出现,进一步说明Keksec僵尸网络组织仍处于高度活跃的状态中,仍有可能出现新的变种或者新家族。绿盟科技伏影实验室将持续关注Keksec僵尸网络组织的活动,并发布相关信息。

此外,相关代码的开源也值得警惕,该代码同样有可能被其他黑客组织利用并传播。

五、IOC

下载服务器IP:

45.148.10.246

198.12.116.254

下载脚本SHA256:

cdf2c0c68b5f8f20af448142fd89f5980c9570033fe2e9793a15fdfdadac1281

3aa5d84e62763f4e26facd4bea26ec2ff47a926b041d459152994c339d7a8d3c

Enemybot SHA256:

98d79e9a1318caed194dd17e8bf91c7bfc4eccd63d6386c11ace334789df7461

08cb3585a6ce74b16ec74916a93fb060f1e3a59e307215f962dcef9183bc612e

附录A 参考

http://blog.nsfocus.net/keksec-lolfme/

https://www.securonix.com/blog/detecting-the-enemybot-botnet-advisory/

https://blog.netlab.360.com/gafgtyt_Tor-and-necro-are-on-the-move-again/

https://www.fortinet.com/blog/threat-research/enemybot-a-look-into-keksecs-latest-ddos-botnet

https://outpost24.com/blog/from-local-file-inclusion-to-remote-code-execution-part-1

https://github.com/freakanonymous/enemy

声明:本文来自绿盟科技威胁情报,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。