关于我们
新闻

DDoS暗黑攻击


网络罪犯会使用多种僵尸程序对互联网服务器发动DDoS攻击。其中最为流行的工具是一种名为“黑色能量”的僵尸程序。截止到目前,卡巴斯基实验室已经检测到超过4,000种“黑色能量”僵尸程序的变种。2008年中期,恶意软件编写者对此恶意程序的原始版本进行了重要升级,编写出了“黑色能量2代”僵尸程序(卡巴斯基实验室的产品提示为Backdoor.Win32.Blakken)。此恶意程序即是本文将要详细分析的对象。

分工明细:僵尸程序的组件

此僵尸程序有多个主要功能:首先,它能够隐藏其恶意代码,避免被反病毒软件检测到。其次,它能够感染系统进程。最后,此恶意程序能够接收僵尸网络命令控制中心(C&C)的指令,在受感染计算机上灵活地进行一系列恶意行为。上述的每种功能都通过此恶意程序的不同组件实现。

 
图1. “黑色能量2代”工作原理图

自我保护模块

同大多数其他恶意程序一样,“黑色能量2代”也具有自身保护模块,可以隐藏自身的恶意代码,避免被反病毒软件检测到。自我保护模块包括加密和代码压缩功能。有时候,还会用到反模拟技术。

一旦“黑色能量2代”的可执行程序在计算机上运行,恶意程序就会分配一定的虚拟内存,将自身的解密代码复制到分配的内存中,将控制权转交给解密代码。

解密代码执行后,会在内存中生成下载器代码。一旦下载器代码执行,会生在\system32\drivers目录下生成一个文件名随机的解密驱动文件,例如“EIBCRDZB.SYS”。同时还会创建和启动一个服务(服务名称也是随机的)以及其对应的驱动。

 
图2. 恶意解密驱动的加载

同原始的可执行文件一样,释放出的驱动事实上也只是一个“包裹”,此恶意程序真正有趣的部分仍然隐藏在其中。

感染模块

解密驱动的代码中包含一段加密和打包的数据:

 
图3. 解密驱动中的加密数据

The data block has the following structure:


图4. 加密数据的结构

此数据段中的密匙是用来产生另外一个密匙,其大小为100h 字节,用于解密压缩包。其所采用的加密方式基于常见的RC4算法。如果压缩包的大小同数据大小相同,则表示该数据并未打包。反之,如果大小不同,则表示加密的压缩包必须被解包。

解压出的数据是一个感染驱动,它可以在用户模式的svchost.exe进程中注入DLL。为了启动感染驱动,解密驱动必须为其分配一定的内存,然后将解密代码复制到内存区域,映射地址偏移校正,将控制权交给它。恶意DLL存储在感染驱动的.bdata字段。此数据段同具有上述同样的结构。感染驱动会查找svchost.exe进程,并且在内存中分配地址空间。然后,将恶意DLL拷贝到内存区域,根据地址表映射地址偏移。被注入的DLL代码会通过如下所示的kernel模式启动:


图5. 启动注入到svchost.exe的DLL

该方式采用了APC队列处理技术。首先,启动一个APC,其中包含注入DLL地址的DllEntry功能,此APC会排队利用KeInsertQueueApc APC功能。一旦svchost.exe可以处理APC队列(通常立即就可以处理),会从DllEntry地址中启动一个线程。

注入的DLL

受感染计算机能够发动DDoS攻击,主要是受到注入于svchost.exe中的DLL的控制。同感染驱动相似,DLL文件同样具有.bdata字段,其中包括一段加密数据,其结构同上述的数据结构相同。该数据中包含一个xml文件,其中对僵尸程序进行了初始设置。如下面的截图所示:


图6. 僵尸程序的初始设置

僵尸网络的命令控制中心地址当然是最为重要的信息。所以,为了保证可靠性,文件中给出了二个地址。如果其中一个地址失效,无法连接。僵尸程序可以使用备用地址连接到其控制者。

僵尸程序会向命令控制中心地址发送一条预设的http请求,请求是一个包含受感染计算机信息的字符串。下面是该字符串的示例:

id=xCOMPUTERNAME_62CF4DEF&ln=ru&cn=RU&nt=2600&bid=3

其中的id参数是受感染计算机的标识符,包括计算机名称以及该计算机C盘驱动器硬盘的序列号信息。接下来,是操作系统信息:如系统语言、操作系统所属国家以及系统build版本号。字符串结尾是僵尸程序的build标识符(‘build_id’存在于初始设置xml文件中)。

请求字符串的格式保证该请求确实来自于僵尸程序。此外,命令控制中心还会利用http请求的用户代理标识作为密码使用。

如果命令控制中心接收了请求,会立即返回一个僵尸程序配置文件,该文件同样是一个加密的xml文件。此文件的加密同样用到了RC4算法,其中受感染计算机的标识符(请求字符串中的id参数,例如上述例子中的xCOMPUTERNAME_62CF4DEF)即加密的密匙。

下面是一些命令示例:


图7. 配置文件——命令控制中心返回的指令

字段的功能是告诉僵尸程序服务器上有哪些模块可以发动DDoS攻击。如果僵尸程序没有某个特定模块,或者服务器上出现了插件的新版本,僵尸程序会发送一个下载插件的请求到服务器,例如:

getp=http&id=xCOMPUTERNAME_62CF4DEF &ln=ru&cn=RU&nt=2600&bid=3

插件是一个DLL库文件,一般通过加密方式发送到僵尸程序。如果用于解密插件的密匙同id参数值不同,密匙则会标识于配置文件的字段。一旦那插件DLL被接收和解密,将被置于分配的内存中。然后等待相应的命令,伺机发动DDoS攻击。

受感染计算机会定期下载插件,一旦恶意软件编写者升级了攻击方式,“黑色能量2代”僵尸程序会自动下载最新版本的相关插件。

下载的插件储存在受感染计算机磁盘的\system32\drivers目录下,文件名为str.sys。此文件已被加密,其id参数是加密密匙。加密前,str.sys中的数据如下:

 
图8. 未加密的str.sys内容:插件存储

每个插件都具有导出函式,即DispatchCommand,通过主要模块——注入到svchost.exe进程中的DLL调用。然后将参数(僵尸配置文件的字段中的命令)发送到DispatchCommand,通过插件执行命令。

主要插件

目前,“黑色能量2代”僵尸程序的主要插件包括DDoS攻击插件、SYN攻击插件以及http攻击的插件。下面我们简要介绍一下每种插件。

DDoS攻击插件

要攻击的服务器的地址、协议以及攻击的端口都会输入到DDoS插件中,插件会使用指定的端口和协议,对服务器发起大量连接。一旦连接建立,会向服务器发送随机的数据包。该插件支持的协议包括tcp、udp、icmp以及http。

下面为一个示例,其中执行了“ddos_start udp 80”命令。

 
图9. 创建一个UDP协议socket

 
图10-1. 发送数据:发送和堆栈

Figure 10-1. Sending data: sendto and the stack


图10-2. 数据发送地址 ip地址和端口


图10-3. 发送的数据内容:一系列随机字节

当命令中指明http协议时,DDoS攻击插件会利用socket连接并发送信息到服务器,获取GET请求。

SYN攻击插件

同本文介绍的其他插件不同,SYN攻击插件包含一个网络驱动。当插件的功能被调用时,该驱动会被安装到\system32\drivers文件夹下,文件名为synsenddrv.sys。此驱动会发送所有的网络数据包。很容易就猜到,DispatchCommand功能会等待主要的DLL发送下列参数:syn_start ” 或 “syn_stop ”。如果接收到的是第一个参数,那么插件就开始攻击,如果收到的是第二个参数,则停止攻击。此类攻击包含大量针对服务器的连接请求,并且造成很多所谓的“握手连接”,即开启网络会话。

 
图11. SYN攻击:SYN->ACK->RST

当然,如果受感染计算机向服务器发出了数量庞大的连接请求,将会造成服务器负担加重。

http攻击插件

上述介绍的DDoS攻击手段可以采用重定向的方式予以防范。重定向防御方式中包含在线资源的服务器隐藏于网关后面,外部无法直接访问服务器,网关会将请求重新定向到储存资源的服务器。网关可以使用多种技术阻挡DDoS的攻击,要突破网关并不容易。由于DDoS攻击和SYN攻击插件的攻击目标是IP地址,他们本身并不能识别连接被重新定向,所以,他们发起的攻击只能攻击到网关。也正因为如此,此类的网络攻击不能攻击到储存资源的服务器。从而使得http攻击插件应运而生。

接收到http_start 命令后,http攻击插件会创建一个名为“Internet Explorer(Ver 1.0)”的COM对象,此对象具有IWebBrowser2界面。之后,http_start 命令会利用参数调用Navigate功能,使得Internet Explorer(Ver 1.0)对象访问指定的URL地址。然后,恶意程序利用Busy功能,等待请求的完成。

 
图12-1. 创建COM对象


图12-2. CLSID指针


图12-3. 界面ID指针

 
图13. 调用Navigate功能

 
图14. 钓鱼Busy功能

采用这种步骤,恶意程序可以模仿正常用户访问某个网页。唯一不同的是,恶意程序会在短时间内尝试多次“访问”。即使采用了网关重定向,所有的http请求还是会重新定向到储存网页资源的服务器,造成服务器过载。

基本命令

除了下载插件和执行插件命令外,“黑色能量2代”僵尸程序还能够识别和执行一些命令控制中心发送的基本命令,具体如下:

rexec –下载和执行远程文件

lexec – 在受感染计算机上执行本地文件

die –终止僵尸程序的运行

upd–升级僵尸程序

setfreq –设置僵尸程序同命令控制中心通讯的频率

http–发送针对特定网页地址的http请求

结论

最初,编写“黑色能量”僵尸程序的目的是为了发动DDoS攻击。但是,随着该僵尸程序插件的流行以及第二版程序的出现,使得该家族的恶意程序的潜力变得具有无限可能。(尽管目前网络罪犯主要还是将此僵尸程序用做DDoS攻击工具。)此恶意程序可以安装插件,实现各种功能。例如,可以通过插件发送垃圾邮件、窃取用户机密信息或建立代理服务器等。其中的upd命令可以对程序本身进行升级,例如,新版本可以采用新的不同的加密方式。定期更新升级,使得该僵尸程序可以躲避一定数量的反病毒软件的检测。而这些恶意程序可能已经感染计算机很长时间了。

此恶意工具非常具有潜力,所以威胁性也非常强。幸运的是,目前还没有公开的在线创建服务用于创建“黑色能量2代”僵尸程序。而且此僵尸程序比其他一些恶意软件如Zeus以及第一版的“黑色能量”僵尸程序的变种数量要少。但是,目前已经有数据显示网络罪犯已经开始利用“黑色能量2代”僵尸程序创建大型的僵尸网络,并且已经成功发动过DDoS攻击。

目前,很难预测这些僵尸网络的运营者未来将如何利用这些僵尸网络。但是,对于恶意软件编写者来说,编写一个插件,然后将其下载到受感染计算机中并不困难。不仅如此,其中所有的插件代码仅存在于受感染计算机的内存中,而且所有的恶意程序模块全部进行了加密,不管是在传播过程还是储存在计算机磁盘时。

此外,“黑色能量2代”僵尸程序的插件并不是可执行文件(.exe)。所有插件都是直接被加载到受感染计算机上。这表明,这类恶意插件并不会利用传统的大规模传播手段和技术进行传播,使得反病毒软件厂商在一定时期内可能无法接触到和查杀此类插件。而且,插件所具有的功能正是网络罪犯所需要的。也正是通过插件,此僵尸程序实现了各种恶意功能,感染了更多的计算机。

所以,当前对此恶意程序的插件的发展动向进行监测非常必要。卡巴斯基实验室将密切关注“黑色能量2代“僵尸程序的最新插件,追踪该恶意程序的发展,并且及时将最新研究结果发布。

技术支持
下载专区
产品购买 家庭及个人用户
企业用户
关于我们 合作专区
Copyright © 1997 - 2010 Kaspersky Lab 京 ICP 证 090187 号
拥有行业领先的反病毒软件