可以租赁的僵尸网络
近期看到一部分具有“僵尸网络租赁功能”的样本(业内叫“分控”,听起来更文雅了)。
挑一个样本(162a9a13a734c757bb71b34d19558889)在这里简单记录一下。 那反正这个样本也不太普及,而且样本中bug超多。。分享一下也无甚大碍。。
分析过程
控制处理逻辑对比
在服务端中可以明显看到两组不同的控制指令处理流程(sub_402ED0,sub_4034E0)。
对比两张图不难发现,sub_402ED0 的处理逻辑比sub_4034E0处理逻辑稍显复杂。
租赁服务
其中,sub_402ED0函数为租赁服务提供函数,其上线地址为:hr-sky.com:7878。在该函数的case 9 分支中提供了租赁功能,这段功能逻辑中,配置好被租用的上线地址,以及租用时间后即可启动sub_4034E0对应的服务指令,如下所示:
指令集比对
租赁服务提供方:
拥有的控制权限较为复杂(sub_402ED0)
租赁服务使用方:
拥有的控制权限较少(sub_4034E0),且当租赁时间到期后,该控制线程会被动关闭。
功能复现
在“CC模拟器”的帮助下,可以完美复现以上租赁过程,对应该样本的配置文件为l1304v1.py。
- 在可控主机上运行CC模拟器,模拟租赁提供方,并等待样本服务端回连。
$ python simulator.py l1304v1 7878
- 在虚拟机中,通过修改host文件,接管hr-sky.com的解析地址。
- 在虚拟机中启动样本,“CC模拟器”成功收取上线包,并弹出控制台。
- 在一个新的端口上启动模拟器,来模拟租赁使用方。
$ python simulator.py l1304v1 909
- 从租赁提供方,配置租赁对应参数,如下所示:
- 启动brrow服务,此时可在“租赁服务使用方”获得上线包,并接管控制服务。
- 使用租赁服务
在配置脚本中提供了dnsflood功能,以便进行dns攻击,配置好攻击目标后,可直接使用。
攻击指令发出后,wireshark中可抓取到大量的攻击数据包,如下所示:
样本BUG
样本的实现,具有一定问题,很多功能并不能完美复现,大概遇到这样几个问题:
- 以IEFlood为例,在虽然配置的参数无误,但样本在进行参数拼接时,忽略了IE路径中有空格这个状况,导致拼接出的指令无法成功执行,如下图所示:
- 在租赁服务中,stop指令无法生效,原因在于,其对stop指令的处理有误,“停止标志”被误设置为“保持攻击标志”。进而导致攻击一旦发起,就无法终止(除非租赁时间到期)的情况。