2024年4月24日发(作者:)

Botnet的发现与控制

摘要:本文描述了Botnet的网络行为以及通过IDS和Honeypot发现Hotnet的方

法并对比了两者的利弊。阐述了控制Botnet的前提和方法。最后说明了近期和

长期的研究重点。

声明:

如果特殊说明,本文的数据都来自CNCERT/CC。本文所说的Bot和Botnet默认是

指IRC类型的。

BOTNET的发现(Botnet Tracking)

一.

僵尸程序与控制者的网络行为

无论是僵尸程序(Bot)还是控制者(Controller),都必须与Comande and

Control Server(简写为C&C S)通信。Bot与C&C S通信的目的是1)接收控

制命令 2)汇报工作状态;控制者的目的是1)发送控制命令 2)掌握Botnet

的运行情况。

一般地,Bot启动后,会主动与C&C S通信,通信过程如下:

1.建立连接

如果bot内置了C&C S的域名,则先解析域名;为了灵活和安全,

bot通常采用动态域名。当一个C&C S所在主机被破坏后,可以切换到另

一个C&C S,保证botnet继续运行。

通常,C&C S也是一台被控制的主机。

为增强安全性,有的C&C S还设置了连接密码。连接密码在tcp三

次握手后,通过PASS命令发送(注释1):

->PASS ConnetionPassn

2.发送NICK和USER命令

NICK通常有一个固定的前缀,如CHN!2345、[Nt]-15120、ph2-1234。

->NICK [Nt]1234rnUSER [Nt]1234 0 0 :[Nt]1234rn

3. 加入预定义的频道

频道名一般硬编码在Bot体内。

->JOIN #mole-phat2n

为增强安全性,有的控制者为频道设定了密码。

CNCERT/CC的监测数据表明,规模较大(控制1万台以上计算机)

的Botnet通常设置了频道密码,但设置服务器连接密码的Botnet还在

少数。加入含有密码的频道的命令为:

->JOIN #mole-phat2 deddymann

设置频道密码的命令为:

->MODE #mole-phat2 +k deddymann

使用该命令的客户端可能是控制者或代理。

4.将频道主题解释为控制命令执行(可选)

Bot加入频道后,通常会将频道主题(TOPIC)作为命令执行,典

型的TOPIC类似于1).advscan lsass 200 5 0 -r –s含义是利用LSASS漏洞,启

动200个并发线程,在5秒钟以后开始随机(-r = random)扫描,扫描结

果不用向服务器汇报(-s = silent) 2). http:/server/

c: 1含义是从server下载文件,保存到c:盘并执行(参数1)。

CNCERT/CC监测发现,有的控制者还通过设置频道TOPIC通知Bot

转移到新的频道,该TOPIC为“JOIN #newchannel”。

5.向频道发送状态信息

Bot收到控制者命令后,按照命令参数决定是否向频道发送执行命令

的情况,上例中的’-s’参数指示Bot保持沉默。如果不加这个参数,Bot

可能会向频道发送大量状态信息,如:

->PRIVMSG #!nt :Downloading / c: 1n

->PRIVMSG #ntscan[SCAN] : Random Port Scan started on :445 with a delay

of 5 seconds for 0 minutes using 120 threads.n

->PRIVMSG #xtc-scan :CSendFile(0x007AEEC0h): Transfer to 61.151.24.101 finished.

以上为bot和C&C S的通信内容,下面再看控制者和C&C S的通信。

控制者通过C&C Server控制整个botnet的过程如下。

1.认证(authenticate)自己

控制者首先作为一个普通用户登陆C&C S,加入和Bot同样的频道。在

此阶段,他的通信过程与bot没有差别。

之后,控制者使用.login、!logon、!auth诸如此类的命令认证自己。

服务器将该信息转发给频道内所有的bot,bot将该密码与硬编码在文件

体内的密码比较,相同则将该用户的nick名称记录下来,以后可以执行

该用户发送的命令。

对于复杂点的认证方式,还包括host名的认证和密码的加密机制。下

面以rBot v0.6.5为例,它的认证过程如下。

1) 控制者发送认证命令给C&C S;

->PRIVMSG #rbot .login password –sn

发送该消息的源地址是可疑的控制者IP。

2) C&C S将消息转发给频道内所有bot;

<-:ControllerNICK!ControllerUSER@host PRIVMSG #rbot :.login password -srn

有时我们不能监测到1)的消息,但可以获得2)的消息,同样可能提

取出可疑的控制者IP。该消息的源地址为C&C S,目的地址为Bot所在

主机,但 host信息可能携带控制者IP,这种情况是常见的。

<-:ControllerNICK!ControllerUSER@202.108.1.1 PRIVMSG #rbot :.login password

-srn

说明202.108.1.1的主机曾经向C&C Server发送.login消息。

3) RBot可以根据C&C S转发的消息,同时获得发送消息用户(控

制者)的NICK(ControllerNICK)、USER(ControllerUSER)、host、命

令(.login)和命令参数(password -s)。rBot首先验证密码是否正确,它将

密码进行编码后和体内硬编码的密码(编码后存储,预防静态分析)

进行比较,相同后再比较user和host是否满足条件。rBot硬编码了两

类可信任的用户和host,分别为*@*.net和"*@*.com" ,含义为来自.net

或.com的任意用户。RBot定义了通配符,如果host中包含.com或.net

字符串,则任意用户名(*)都会匹配成功。