如何在云中发掘僵尸网络?

国内远控命名五花八门,既有"养鸡场"、"大灰狼"等接地气的名字,也有"假面骑士"、"金戈铁马"等颇具武侠风的名字。在我们的样本库中,"刑天"、"天羽"、"天罚"、"天劫"等几款远控用名字做到独树一帜,因为包含了中国传统文化推崇的"天"字,故统一命名为"天字号"。

一、远控介绍

1.1 远控家族

"野火烧不尽,春风吹又生",这句诗形容远控家族正合适。

安全的博弈与对抗经久不息,远控在各种杀软厂商的合力围剿下仍然能够存活甚至繁衍生息,说明黑色产业链对黑产从业者诱惑之大。为了躲避围剿,远控程序也一直在升级换代,并逐步扩大战场。肉鸡程序利用白利用躲避杀软主动防御查杀,远控由PC发展到安卓平台,都是远控在逐步发展的印证。

出于不同的原因,不同的主控可能在通信协议、Server端运行机制等方面极其相似,我们将这些相似的主控划作一个家族,方便分析和统计。同家族的主控大多是其中一个主控程序的变种,为了躲避检测会采取修改指令结构、变化指令ID、更换加密方法等手段。由于远控作者的编码水平参差不齐,有的新手会简单修改他人写好的远控代码,这样也会造成不同远控隶属同一家族的情况。

1.2 横向对比

我们对每个天字号远控均做了分析,从通信加密、是否包含系统监控模块、是否包含DDos攻击模块、DDos攻击类型的多样性等四个纬度进行横向对比,详情如下表所示:

 如何在云中发掘僵尸网络?

分析时我们发现一件有意思的事情,"天劫"的通信协议与"刑天"完全相同隶属于同一家族并且操作界面高度相似,这着实令人尴尬。"天劫"增加了注册登录充值等模块用于售卖, 在山寨的道路上越走越远,无法想象"刑天"的开发者会是怎样的心情。

由于"刑天"的通信协议没有加密便于抓包分析并且攻击类型比较丰富,比较适合进行常规的科普,所以本文选择"刑天"作为天字号的典型拿出来分析。

1.3 测试环境部署

分析"刑天"的通信协议方法比较简单,我们使用虚拟机搭建测试环境进行抓包分析,这种未加密通信协议的情况对于对不擅长逆向的同学来说是种福音。

我们在内网中使用2台windows 7 、1台Centos虚拟机为基础部署了简单的测试环境。一台Windows 7虚拟机A用作主控端,一台Windows 7虚拟机B用作肉鸡,而Centos虚拟机C架设TCP、UDP服务用作测试靶机。部署结构如下图所示:

 如何在云中发掘僵尸网络?

我们以"刑天"为例给出部署过程。首先在A中使用刑天生成肉鸡程序:

 如何在云中发掘僵尸网络?

然后在B中运行肉鸡程序,并开启wireshark抓取数据包。之后我们在A中会看到B上线:

 如何在云中发掘僵尸网络?

通过主控界面下方的功能区设定攻击信息:

 如何在云中发掘僵尸网络?

在 C 中我们可以简单的使用 Python 的 SimpleHTTPServer 启动一个 Web 服务作为 TCP 攻击的目标,这样做的好处是可以在 bash shell 中看到 TCP 攻击的攻击载荷并使用>&等重定向攻击载荷。当然我们完全可以写一个 UDP 服务来捕获攻击数据。

二、通信协议

有人质疑说许多文章在分析远控时主要针对远控生成的 server 端的运行机制,没见过写通信协议的,你这属于耍流氓。不得不承认,分析 server 的运行机制固然重要,但是我的观点历来是不分场景的操作都是耍流氓。我们对远控分析的利用场景是在全流量中发现C2 信道以及检出恶意主机,丰富威胁情报,从而对云的安全态势做到了然于胸、知己知彼。因此,掌握各种远控家族的通信协议对于上面的场景来说至(jing)关(shuo)重(fei)要(hua)。

为了分析的有理有据有节,下面分别从首包与C&C指令两方面来分析。

2.1 首包

首包即上线包,指肉鸡第一次连接主控时发送的数据包,可以理解为肉鸡向主控表明自身存在并要求注册的一道凭据。主控在收到首包后会认为新的 BOT 上线并要求注册。"刑天"远控会在首包附带操作系统类型、内存大小、CPU 核心数及主频、网络带宽等信息。这样的信息方便"牧马人"在进行任务下发时对机器条件的考量(比如sync flood攻击需要windows server系统而不能是win xp等个人pc)。在测试中抓取肉鸡上线的首包如下图所示:如何在云中发掘僵尸网络?

"刑天"远控的首包长度为184Bytes, 在 windows 7与 window xp 环境测试中首包的认证标识为 b00000007700000004080000,首包结构如下表所示:

如何在云中发掘僵尸网络?   

2.2 攻击分类

"刑天"DDoS功能分为5大类,每个大类分为若干细分功能,分类细节如下表所示:

如何在云中发掘僵尸网络?

2.3 C&C指令

2.3.1 攻击参数

在肉鸡上线之后,我们关心的是主控如何给肉鸡下发攻击命令。设定攻击参数是DDoS型主控必要的功能。通过分析多款DDoS主控,攻击参数主要包括以下字段:攻击目标、目标端口、持续时间、线程数量、攻击方式等。

2.3.2 指令结构

刑天远控指令结构比较简单,分为两个部分:指令标识 + 指令载荷。肉鸡程序提取指令标识确定具体的任务类型,根据指令载荷填充任务载荷。

2.3.2.1 指令标识

如何在云中发掘僵尸网络?

指令参数长度标识与指令大类标识均为 4 字节整形,采用小端模式而非网络字节序。

2.3.2.2 指令载荷

根据是否需要DDoS攻击参数,我们将指令载荷分为两类:DDoS攻击指令载荷、非DDoS攻击指令载荷。参照攻击分类,批量操作大类属于非 DDoS攻击指令载荷,剩余大类均属于DDoS攻击指令载荷。

需要注意的是,在网站测试大类中会出现针对游戏方式、完全穿透方式、变参的起始 ID 等扩展细分指令,刑天远控为了统一指令载荷的结构加入了 8 字节的扩展字段以兼容不同大类。通过分析每个细分指令,我们总结DDoS攻击指令载荷结构如下表所示:

如何在云中发掘僵尸网络?

“其它字节”包含了攻击目标、自定义攻击载荷之类的参数,其长度为指令载荷长度减去 24 字节。

非DDoS攻击指令载荷结构相对简单,分为两种情况。对于下载下载地址、弹窗地址、更新地址等3个指令,地址就是载荷。而对于关机、重启、卸载等3个不需要实际载荷的指令,用0x31字节填充。

通过进一步分析每种细分攻击的数据包,我们总结了细分指令ID如下表:

 如何在云中发掘僵尸网络?

2.3.3 C&C指令结构汇总

通过上述分析,我们汇总"刑天"C&C指令结构如下:

如何在云中发掘僵尸网络?

 以上就是"刑天"远控的通信协议,包括首包结构、C&C指令结构等。

在掌握了主控通信协议的情况下,我们就可以用匹配的方法在全流量中抓取使用了明文通信协议的C2信道流量,进而锁定肉鸡及主控并丰富威胁情报库。

三、攻击行为分析

现在我们可以用已知通信协议捕获匹配流量,但是不能止步于此。通信协议匹配的方法无法解决感知未知主控通信协议的问题,因此我们需要通过总结肉鸡在攻击时的行为特征来检出攻击流量。在攻击流量分析过程中,我们发现肉鸡程序的发包策略很有特点,是一个很好的切入点。我们分析总结了"刑天"主控发包时的动作特点,如下所示:

3.1 TCP发包策略

如何在云中发掘僵尸网络?

3.2 UDP发包策略

如何在云中发掘僵尸网络?

3.3 ICMP发包策略

ICMP发包策略会持续发送载荷超过4000字节的ICMP数据包。

3.4 行为分析总结

结合之前的场景,分析肉鸡程序的发包策略实际上并不是我们要做抗D,我们的目的是根据发包策略筛选出口流量中的可疑流量进而锁定云中的可疑主机。

熟悉主控的发包策略有助于总结规律、形成方法,从云主机的流量中及时发现可疑流量。这对探测未知主控家族的通信协议是一个很大的帮助。

本文作者:又田 本文转自雷锋网禁止二次转载,原文链接

Published by

风君子

独自遨游何稽首 揭天掀地慰生平