暗影中的巨兽:物联网僵尸网络Andoryu近期变化分析

发布时间 2023-06-14

启明星辰与广州大学网安学院发现了物联网僵尸网络Andoryu的新型变种Andoryu_V2。本文将从僵尸网络规模、传播方式、样本技术分析三方面,对该僵尸网络传播、感染、C&C控制、攻击全生命周期细节等进行介绍,可作为各行业及相关企业制定网络安全策略的参考。


2023年3月底,启明星辰在参与国家重点研发计划项目“大规模异构物联网威胁可控捕获与分析技术(2022YFB3104100)”的研究过程中,发现了基于Socks5协议的物联网僵尸网络Andoryu的新型变种(Andoryu_V2)。


Andoryu_V1版本已于今年2月份被首次揭露,本次我们将对比分析Andoryu_V2版本和Andoryu_V1版本,详细呈现出该僵尸网络传播、感染、C&C控制、攻击全生命周期细节。此外,通过2个多月的监测分析发现,我们发现Andoryu_V2版本有新增利用CVE-2022-30525、CVE-2023-25717漏洞的行为,新增代理服务器超过130个,反映出该僵尸网络进一步扩张的意图,需要加强安全防范。同时,我们还发现该僵尸网络与Fbot可能具有一定的关联性。


僵尸网络规模


监测分析发现,Andoryu僵尸网络平均日增上线境内肉鸡数(IP数计算)超过1500台,正处于发展初期。2023年4月底到5月初,Andoryu有一次比较大规模的传播,日存活量超过2000。



传播方式


截止到目前,我们观察到Andoryu主要使用NDay漏洞传播。所用漏洞列表如下:



2023年2月-3月,Andoryu多使用CVE-2021-22205、LILIN DVR RCE漏洞传播。


2023年4月,新加入CVE-2023-25717的利用,一个Ruckus Wireless设备的漏洞。利用成功后下载执行脚本文件ruckus.sh,以植入Andoryu。


2023年5月8日,我们监控到对Zyxel防火墙远程命令注入漏洞CVE-2022-30525的利用。



在可预见的将来,Andoryu很可能还会加入新漏洞的利用,丰富其武器库。


样本技术分析


Andoryu僵尸网络支持多种CPU架构,包括arm、m68k、mips、mpsl、sh4、spc和x86等。以下是主要变化对比:



在本文中,我们主要以5月8日的V2样本为主进行分析,并穿插介绍V1到V2样本的主要迭代变化。这些变化的细节可能包括代码逻辑的微调、加密算法的调整等。整体而言,Andoryu僵尸网络保持了相对稳定的基础架构和C2通信模式。


1、初始化


为对抗沙盒等模拟环境的自动化分析,与其它流行僵尸网络相同,Andoryu运行时首先会对启动参数进行检查,以确保自身的安全性。如果不携带参数,则直接退出。不同于其它家族的是,Andoryu运行后会将启动参数发送至C2服务器进行额外的二次校验。


当参数正确时,则进入执行流程:进程名伪装、解密资源,随后和C2建立通信并等待执行C2下发的指令。


在V2版本中会将进程名伪装成"DvrHelper"或者"-bash" ,V1则为"/bin/bash"。解密敏感资源V2版本使用的是异或,而在V1版本中使用的是某种魔改版的xxtea算法解密:



有趣的是,资源解密工作完成之后,Andoryu将在Console上打印解密出的字符串"Project Andoryu (12/30/2022). What color is your botnet" 或"Andoryu botnet started (12/30/2022)",这表明Andoryu很可能是2022年12月30号启动的项目。


2、通信协议


监测发现,绝大多数Andoryu的样本均不直接与C2进行通信,而是通过Socks5代理服务器进行转发,呈现两层控制结构。5月8号的V2样本曾短暂去除Socks5代理,但后来很快又恢复。在V1版本只有一个代理服务器,V2版本便增加至130多个。



在C2通信交互上,Andoryu与Fodcha非常类似,通过状态码切换以执行不同操作:



主要状态如下:



Andoryu在与C2服务器进行通信时,使用定长为2152字节的数据结构封装。V1和V2都是如此,整体封装结构如下:



以上线数据为例:



首个4字节为公网IP;4字节随机数据24 52 ae 57;2字节20 21为数据类型,表示为上线数据;4a d8 74 50 4d de 为xor加密后的数据内容,解密后实际为启动参数。



32字节sha256校验和5d 7f 05 6e...67 7b 05 68;偏移0x84C处 06 00 00 00 表示payload长度;偏移0x854处86 0f 为内存大小,0x0f86即为3974M;最后payload的异或Key随机生成,并保存在上线数据的偏移0x861-0x864处,本例是38 ad 17 3b。


随后C2返回的确认数据,前4字节是C2 地址,本例是68 ea ef b0。随后4字节是随机数据c7 fc b8 00。再之后2字节的20 22代表是确认数据,至此,Andoryu上线成功。



3、攻击指令


Andoryu的攻击很活跃,我们监控到很多次C2返回的DDoS攻击命令,如下一例:



命令解析如下:



payload异或解密后为"udp-plain 135.xx.xx.xx 60 dport=53 psize=150",随后Andoryu向135.xx.xx.xx:53发起udp-plain DDoS攻击:



Andoryu对C2命令的处理函数没有任何变化,以下是2月和5月样本的对比:



目前,Andoryu共支持6类指令,包括DDoS攻击命令,如下:



Andoryu支持3种协议(tcp、udp、icmp)共16个DDoS攻击类型,包括tcp-raw、tcp-socket、tcp-cnc、tcp-handshake、tcp-ovh、tcp-bypass、udp-plain、udp-game、udp-ovh、udp-raw、udp-vse、udp-dstat、udp-bypass、udp-hex、udp-rhex、icmp-echo。



4、与其他家族的关联


Andoryu和C2的通信交互在代码层面和FodCha非常类似,都是一个永真的While循环,通过switch-case进行各个阶段的处理。到目前为止,这种方式是已知僵尸网络里唯二的例子。另外,Fodcha V3也使用xxtea加密算法,而Andoryu V1是使用某种魔改版的xxtea。


这似乎表明,两者也许有某种关联,但除了上述两点,暂时没有更多实锤证据。不过,Andoryu和Fbot有确切的关联,他们曾经使用同一个C2。5月13号的V2样本里,通过socks5连接C2服务器dnsresolve.socialgains.cf:10333。



而在5月4号,我们监控到有Fbot样本使用dnsresolve.socialgains.cf:61002作为自己的C2服务器。我们会继续跟踪观察,查找Andoryu和其它家族的关联。


5、IoC