查看: 3150|回复: 11
收起左侧

[交流探讨] 最高通缉:“黑色能量”僵尸程序

[复制链接]
explorer
发表于 2010-7-24 02:11:05 | 显示全部楼层 |阅读模式
       卡巴斯基实验室近期发表了一篇题为《黑色的DDoS攻击》的技术分析文章,详细对“黑色能量2代”这种流行的恶意僵尸程序进行了分析。
       “黑色能量”这种僵尸程序自从诞生起,从来没有停止过发展和进化。目前,仅“黑色能量第一代”的变种,卡巴斯基实验室就已经检测到超过4,000个。对于第二代的“黑色能量2代”,卡巴斯基实验室的安全专家也已研究了两年。“黑色能量2代”僵尸程序之所以颇受黑客的青睐,是由于此恶意程序不仅功能强大,实用性广,而且非常易于部署和管理。“黑色能量2代”僵尸程序支持可升级的插件(附加模块),使得黑客更容易修改和扩展其功能。黑客可以通过远程控制中心发布命令,实现插件的快速安装和升级。
      目前,针对该僵尸程序最为常见的插件的功能是进行DDoS攻击(即分布式攻击,其攻击行为会造成受攻击系统瘫痪)。在接受到命令控制中心发送的指令后,大量被“黑色能量2代”感染的僵尸计算机会同时向攻击节点发送错误的数据包,或者仅仅是大量的数据包。从而使得被攻击节点超载,无法处理其他正常的数据请求。“黑色能量2代”僵尸程序还支持采用多种协议发送数据包。
      但是,“黑色能量2代”僵尸程序的功能并不仅仅局限于发动DDoS攻击。目前,恶意软件编写者已经开发出能够窃取银行认证信息以及通过点对点网络传播恶意程序的插件。卡巴斯基实验室的高级病毒分析专家同时也是分析文章的作者Dmitry Tarakanov评论道,“目前,很难预测这些僵尸网络的运营者未来将如何利用这些僵尸网络。但是,对于恶意软件编写者来说,编写一个插件,然后将其下载到受感染计算机中并不困难。所以,如果他们想要利用这些僵尸网络从事恶意行为,非常容易实现。”
      文章详细介绍了“黑色能量2代”僵尸程序用于感染以及同命令控制中心通信的主要模块,此外,还介绍了目前最为常见的针对此恶意程序的插件和基本命令。欲浏览全文,请访问:http://www.kaspersky.com.cn/KL-AboutUs/news2010/07n/100722a.htm。更多关于此恶意程序的详情,请登陆Securelist.com.
explorer
 楼主| 发表于 2010-7-24 02:12:28 | 显示全部楼层
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代“僵尸程序的最新插件,追踪该恶意程序的发展,并且及时将最新研究结果发布。

mixianfa
发表于 2010-7-24 03:22:50 | 显示全部楼层
呵呵
沙发!!!!!
雲上
发表于 2010-7-24 09:11:22 | 显示全部楼层
呃,看不懂。。。
CFG
发表于 2010-7-24 19:14:55 | 显示全部楼层
期待卡巴的表現...防止不幸的發生...
leiw
发表于 2010-7-25 14:53:59 | 显示全部楼层
很好的技术分析性文章,呵呵,透彻,和黑防上的文章有一拼了
shevchenko1114
发表于 2010-7-27 17:34:41 | 显示全部楼层
看不懂,纯支持
認真就輸了!
发表于 2010-7-27 17:42:13 | 显示全部楼层
有无样本?
liangking
发表于 2010-10-11 20:28:10 | 显示全部楼层
哇 这篇文章好复杂啊
dragoninsky
发表于 2010-10-11 22:01:12 | 显示全部楼层
不懂
您需要登录后才可以回帖 登录 | 快速注册

本版积分规则

手机版|杀毒软件|软件论坛| 卡饭论坛

Copyright © KaFan  KaFan.cn All Rights Reserved.

Powered by Discuz! X3.4( 沪ICP备2020031077号-2 ) GMT+8, 2025-1-18 07:26 , Processed in 0.149934 second(s), 17 queries .

卡饭网所发布的一切软件、样本、工具、文章等仅限用于学习和研究,不得将上述内容用于商业或者其他非法用途,否则产生的一切后果自负,本站信息来自网络,版权争议问题与本站无关,您必须在下载后的24小时之内从您的电脑中彻底删除上述信息,如有问题请通过邮件与我们联系。

快速回复 客服 返回顶部 返回列表