Rootkit和Bootkit:现代恶意软件逆向分析和下一代威胁
上QQ阅读APP看书,第一时间看更新

2.6 恶意的功能

现在我们已经介绍了Rootkit的功能,让我们看看从C&C服务器下载的恶意插件。在调查过程中,我们获得了这些插件的示例,并确定了三种类型:

  • BotSpam.sys:滥发电子邮件。
  • BotDos.sys:用于执行DDoS攻击。
  • BotSocks.sys:提供代理服务。

我们发现不同的C&C服务器倾向于提供不同类型的插件:一些C&C服务器只提供垃圾插件,而其他服务器只处理DDoS插件,这表明恶意软件的恶意功能依赖于它所报告给的C&C服务器。Festi僵尸网络不是一个庞然大物,而是由专门针对不同目标的次级僵尸网络组成的。

2.6.1 垃圾邮件模块

BotSpam.sys插件负责发送垃圾邮件。C&C服务器向它发送一个垃圾邮件模板和一个收件人电子邮件地址列表。

图2-12说明了垃圾邮件插件的工作流。

0

图2-12 Festi垃圾邮件插件工作流程图

首先,插件与它的C&C服务器启动一个加密连接,以下载带有发件人参数和实际垃圾邮件模板的电子邮件地址列表。然后,它把垃圾信件分发给收件人。同时,恶意软件向C&C服务器报告状态,并请求更新电子邮件列表和垃圾邮件模板。

然后,该插件通过扫描来自SMTP服务器的响应检查发送的电子邮件的状态,以查找表示问题的特定字符串—例如,没有指定地址的收件人,没有收到电子邮件,或者电子邮件被归类为垃圾邮件。如果在SMTP服务器的响应中找到这些字符串中的任何一个,插件将优雅地终止与SMTP服务器的会话,并获取列表中的下一个地址。这一预防步骤帮助恶意软件避免SMTP服务器将受感染机器的IP地址列入垃圾邮件发送者黑名单,并防止恶意软件发送更多垃圾邮件。

2.6.2 DDoS引擎

BotDos.sys插件允许机器人对指定的主机执行DDoS攻击。该插件支持针对远程主机的几种类型的DDoS攻击,覆盖了各种架构和安装了不同软件的主机。攻击的类型取决于从C&C接收到的配置数据,包括TCP Flood、UDP Flood、DNS Flood和HTTP Flood攻击。

1. TCP Flood

在TCP Flood中,bot启动到目标机器上一个端口的大量连接。每次Festi连接到服务器上的目标端口时,服务器都会分配资源来处理传入的连接。很快服务器就会耗尽资源并停止响应客户机。

默认端口是HTTP端口,端口号为80,但这可以通过C&C服务器的相应配置信息进行更改,从而允许恶意软件攻击侦听80以外端口的HTTP服务器。

2. UDP Flood

在UDP Flood中,机器人发送长度随机生成的UDP数据包,其中填充随机数据。数据包的长度可以为256~1024字节。目标端口也是随机生成的,因此不太可能打开。所以,攻击导致目标主机在应答中生成大量ICMP目的地不可到达的数据包,并且目标机器变得不可用。

3. DNS Flood

机器人还能够通过向目标主机的端口53(DNS服务)发送大量UDP数据包来执行DNS Flood攻击。数据包包含解析在.com域中随机生成的域名的请求。

4. HTTP Flood

在针对Web服务器的HTTP Flood攻击中,bot的二进制文件包含许多不同的用户代理字符串,用于与Web服务器创建大量HTTP会话,从而使远程主机超载。代码清单2-7包含组装发送的HTTP请求的代码。

代码清单2-7 组装HTTP请求的Festi DDoS插件片段

0

代码生成一个值❶,然后用作用户代理❷字符串数组中的索引。

2.6.3 Festi代理插件

BotSocks.sys插件通过TCP和UDP实现SOCKS服务器,为攻击者提供远程代理服务。SOCKS服务器代表客户机建立到另一个目标服务器的网络连接,然后在客户机和目标服务器之间来回路由所有流量。

因此,受感染的机器成为一个代理服务器,允许攻击者通过受感染的机器连接到远程服务器。网络罪犯可能会使用这种服务来实现匿名,也就是说,隐藏攻击者的IP地址。由于连接是通过受感染的主机进行的,因此远程服务器可以看到受害者的IP地址,但不能看到攻击者的IP地址。

Festi的BotSocks.sys插件不使用任何反向连接代理机制来绕过NAT(网络地址转换),这使得网络中的多台计算机共享一个外部可见的IP地址。一旦恶意软件加载了插件,它就会打开一个网络端口,并开始监听传入的连接。端口号是随机选择的,范围是4000~65 536。插件将监听的端口号发送到C&C服务器,这样攻击者就可以与受害计算机建立网络连接。NAT通常会阻止这样的传入连接(除非为目标端口配置了端口转发)。

BotSocks.sys插件还试图绕过Windows防火墙,否则它可能会阻止端口被打开。插件修改注册表项SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\Domain-Profile\GloballyOpenPorts\List,其中包含可能在Windows防火墙配置文件中打开的端口列表。该恶意软件在此注册表项中添加了两个子密钥,以便相应地启用来自任何目的地的TCP和UDP连接。

SOCKS

SOCKS(Socket Secure)是一种internet协议,通过代理服务器在客户机和服务器之间交换网络数据包。SOCKS服务器将来自SOCKS客户机的TCP连接代理到一个任意的IP地址,并为UDP数据包的转发提供了一种方法。SOCKS协议经常被网络犯罪分子用作一种规避工具,让网络流量绕过互联网过滤器,访问被封锁的内容。