高敏芬,蔡亞運
(1.南開大學 數學科學學院,天津 300071;2.南開大學 計算機與控制工程學院,天津 300071)
僵尸網絡(botnet)是指攻擊者通過各種手段惡意傳播僵尸程序(bot)以控制大量的計算機,通過相對集中的若干計算機直接向大量受控計算機發送指令的攻擊性網絡[1-3]。攻擊者通常利用大規模的僵尸網絡進行分布式拒絕服務攻擊(DDoS)、竊取用戶信息、發送大量的垃圾郵件(spam)和傳播其他惡意軟件(如計算機病毒)等惡意活動。僵尸網絡已經成為當今互聯網最大的安全威脅之一,也因此成為網絡安全領域研究的熱點[4]。
僵尸網絡分析實驗是南開大學信息安全專業本科生“惡意代碼分析”課程的重要實驗內容之一。該實驗的目的是幫助學生理解僵尸網絡的基本工作原理及其行為特征,掌握分析和防治僵尸網絡的技術和方法。
由于僵尸網絡分析過程對學生的知識基礎和綜合分析能力要求較高,因此,也是對信息安全專業本科生綜合應用所學知識分析問題、解決問題能力和創新意識的培養。首先,對僵尸網絡的分析實驗建立在計算機網絡、匯編語言、編譯原理、高級程序設計語言等多門專業基礎或專業課程基礎之上,學生通過實驗可以更加深入地理解所學的專業知識,提高綜合應用這些知識的能力。其次,學生在實驗過程中可以利用真實的僵尸網絡樣本進行學習和研究,提高學生學習的興趣和積極性,提高利用最新的惡意代碼分析技術進行分析的能力。最后,學生通過實驗還可以了解僵尸網絡的發展過程,認識典型的僵尸網絡,掌握常規的僵尸網絡的分析和防治技術。在實驗教學過程中,適當引導學生進一步探索新的惡意代碼分析方法,有助于學生創新意識和創新能力的提高。
依據“惡意代碼分析”課程的教學內容和教學目標,僵尸網絡分析實驗的目的和任務主要有3個方面。
(1)分析僵尸程序的行為和行為特征。該實驗的一個重要目的就是認識僵尸程序的基本特征和攻擊方式,對惡意代碼的最新發展動態有更加深入的了解。通過實驗,分析僵尸程序執行后的行為表現(例如自刪除、修改系統文件和修改注冊表選項)以及會進行怎樣的網絡通信;通過對僵尸程序的跟蹤和分析獲得僵尸網絡的相關信息,如僵尸主機的地址、命令與控制服務器的地址或域名、僵尸程序與控制命令服務器通信的方式或時間等。通過實驗分析,把握僵尸程序的主要行為和行為特征[5]。
(2)發掘僵尸網絡的控制命令。在實際網絡中,僵尸程序的高級語言源代碼往往難以獲得,因此二進制代碼分析技術在僵尸網絡等惡意代碼的分析過程中有著較為廣泛的應用。利用二進制代碼分析技術解決僵尸網絡分析中實際存在的難題——在沒有源代碼的情況下從僵尸程序的二進制可執行文件中發掘出該僵尸網絡的控制命令集合,是本實驗中的一個重要環節,也是本實驗的難點。通過該環節,學生可以掌握最新、最實用的二進制代碼分析技術。
(3)分析僵尸網絡的命令與控制(command and control,C&C)機制。與計算機病毒和蠕蟲等惡意代碼不同,僵尸網絡的一個重要特點就是其具有高度可控性,攻擊者和僵尸程序之間通過命令與控制信道形成一對多的控制關系。僵尸網絡的命令與控制機制決定了僵尸網絡的拓撲結構、通信效率、可擴展性以及是否容易被防守者發現和破壞,是僵尸網絡工作機制的核心部分[2,6-7]。通過對僵尸網絡控制命令的發掘,可以掌握控制命令與僵尸程序行為的對應關系,分析僵尸程序和命令與控制服務器的通信方式和通信內容,形成對僵尸網絡命令與控制機制的宏觀認知,并通過對不同類型的控制協議和控制機制進行對比、分析,探討可能存在的新的命令與控制機制。
筆者結合南開大學信息安全專業實驗室的軟硬件環境[8-9]和已有的實驗方案[10-11],設計了僵尸網絡分析實驗環境,其基礎架構如圖1所示。
在上述硬件環境的基礎上,搭建了自動化、系統性的僵尸程序監控分析平臺,其結構如圖2所示。該分析平臺運行在 Ubuntu 10.04/12.04操作系統下,主要由4個部分組成。
(1)僵尸程序執行過程監控平臺。該平臺負責僵尸程序的運行監控、執行軌跡的捕獲、污點傳播分析、符號執行及約束求解等實驗任務。該監控平臺的主要部分是二進制代碼分析平臺BitBlaze[12],包括動態分析部分TEMU和靜態分析部分VINE。

圖1 僵尸網絡分析實驗環境基礎架構

圖2 僵尸程序分析平臺結構
(2)執行軌跡分析工具包。該工具包由Perl語言實現,完成對執行軌跡的分析實驗,比如分析僵尸程序代碼空間中的代碼覆蓋情況,分析僵尸程序執行過程中與系統交互情況等。
(3)控制命令挖掘工具包。控制命令挖掘工具包也由Perl語言實現,通過和執行軌跡分析工具的結合,利用部分僵尸程序執行邏輯的先驗知識,可以進行對僵尸網絡未知控制命令進行挖掘,并在此基礎上對僵尸網絡的命令控制機制進行進一步的分析研究。
(4)僵尸程序行為監控工具包。該工具包由文件系統監視軟件FileMon和網絡分析軟件Wireshark等成熟的系統監控軟件組成,工作在Windows系統的僵尸主機下,用于對僵尸程序的宏觀行為進行跟蹤和監控。
(1)熟悉監控環境和分析平臺的使用。熟悉監控環境的使用,并在其中運行僵尸程序,嘗試和僵尸網絡命令與控制服務器進行連接和通信;熟悉二進制代碼分析平臺BitBlaze的使用,學習利用其動態分析組件TEMU進行軌跡捕獲、二進制代碼插裝的技術和方法,熟悉利用靜態分析組件VINE進行二進制代碼的執行軌跡反匯編及符號執行、約束求解等分析方法。
(2)僵尸程序執行軌跡捕獲。執行軌跡是僵尸程序路徑空間中一條路徑的執行過程的詳細記錄。在BitBlaze平臺的TEMU中運行僵尸程序,監控其執行過程,并將從命令與控制信道中接收到的網絡數據標記為污點,捕獲得到僵尸程序的執行軌跡文件。可以分別捕獲僵尸程序在與控制命令服務器無網絡交互、有網絡交互及接收到不同控制命令等情況的幾組不同的執行軌跡,以便于進行對比分析,并用BitBlaze平臺中的VINE將這些二進制的執行軌跡文件轉換成匯編語言格式。
(3)僵尸程序執行軌跡文件分析。對捕獲到的執行軌跡文件進行處理和簡化,然后編寫程序對其進行分析:統計分析僵尸程序執行軌跡中的線程個數及線程號、污點傳播過程等信息;分析僵尸程序代碼空間中的代碼覆蓋情況,計算代碼覆蓋率并分析其特點;統計分析系統API調用情況;從執行軌跡文件構造僵尸程序的控制流圖。通過分析,對執行軌跡的特點和僵尸程序的執行邏輯有更加清晰的認識。
(4)僵尸網絡控制命令提取。根據步驟(3)中的分析結果,結合僵尸程序的固有特點,從執行軌跡中定位到僵尸程序中對控制命令進行判斷、處理的命令控制邏輯代碼段。定位的方法可以結合參考文獻[3]中提出的規律,也希望學生探索和發現新的特點和規則。然后,在可控環境中執行僵尸程序,當執行到命令控制邏輯代碼段時,利用代碼插裝等二進制代碼動態分析技術[13]提取出僵尸程序可執行的控制命令。
(5)僵尸程序行為分析。在可控環境中再次運行僵尸程序,利用FileMon和Wireshark等軟件對僵尸程序的行為進行跟蹤監控。其一,在沒有與命令控制服務器交互時,分析僵尸程序執行后會有怎樣的行為表現,例如自刪除、修改系統文件、修改注冊表選項、試圖連接命令與控制服務器等;其二,在和命令與控制服務器進行交互時,利用步驟(4)中提取出的僵尸網絡命令,觸發僵尸程序運行,再監控其會有怎樣的行為,并總結控制命令與僵尸行為的對應關系。通過多次實驗和觀察,對僵尸程序的行為和特征進行歸納總結。
(6)僵尸網絡命令與控制機制的進一步思考和探索。思考上述從僵尸程序二進制文件中挖掘未知命令方法的優缺點,并探索新的改進方法。根據提取出的控制命令及其對應的行為,分析僵尸程序和命令與控制服務器通信的方式,從整體上對該僵尸網絡的命令與控制機制進行認識和思考。
在上述步驟中,步驟(3)“執行軌跡文件分析”和步驟(4)“控制命令的提取”涉及較多的專業知識和二進制代碼分析技術,是本實驗的難點。
在TEMU中運行Zeus僵尸程序,在和命令與控制服務器進行通信時,動態捕獲了Zeus僵尸程序的3條執行軌跡,其中的線程數、匯編指令總數和系統API調用個數見表1。

表1 捕獲的Zeus執行軌跡信息
對3個執行軌跡進行分析,了解Zeus僵尸程序的執行邏輯,利用執行軌跡中的代碼塊覆蓋率特征,從中定位到滿足參考文獻[3]中提出的覆蓋率規律的代碼塊,其所在代碼區域就是僵尸程序的命令控制邏輯代碼段。根據此方法,可以定位到的代碼段地址范圍為0x26e877c—0x26e87a2,其中調用了系統比較函數lstrcmpiw來進行比較,它是一個循環結構(見圖3)。

圖3 Zeus僵尸程序的命令控制邏輯結構
將Zeus僵尸程序再次放在TEMU中運行。當僵尸程序運行到命令判定循環的入口地址0x26e877c時,開始監控是否調用判定函數lstrcmpiw。如果發生調用,則修改輸入命令為隨機數據,使程序進入判定循環。在判定過程中,通過獲取用來和輸入數據比較的參數,動態捕獲了Zeus僵尸網絡的25個控制命令:

提取出控制命令以后,就可以用這些控制命令作為網絡輸入來觸發Zeus僵尸程序,使其表現出相應的行為。掌握了僵尸網絡的命令與控制機制以后,也可以嘗試偽造Zeus命令與控制服務器并向僵尸主機發送bot_uninstall等命令來卸載、刪除僵尸程序,瓦解僵尸網絡。
本文根據僵尸網絡的特點,結合南開大學信息安全專業實驗室的軟件和硬件環境,設計了僵尸網絡分析的實驗教學平臺,并提出了實驗目的、方法和步驟。利用本實驗平臺,學生可以進行僵尸程序行為特征分析、僵尸網絡命令與控制機制研究的實驗。通過實驗,學生可以更加深入理解僵尸網絡的基本原理和行為特征,掌握僵尸網絡分析的相關技術,進而進行僵尸網絡分析與防治的新方法、新途徑的探索。本實驗環境為信息安全專業學生的實踐動手能力和創新能力的培養提供了良好的實驗條件。
(
)
[1]方濱興,崔翔,王威.僵尸網絡綜述[J].計算機研究與發展,2011,48(8):1315-1331.
[2]江健,諸葛建偉,段海新,等.僵尸網絡機理與防御技術[J].軟件學報,2012,23(1):82-96.
[3]王志,蔡亞運,劉露,等.基于覆蓋率分析的僵尸網絡控制命令發掘方法[J].通信學報,2014,35(1):156-166.
[4]Zhu Zhaosheng,Lu Guohan,Chen Yan,et al.Botnet research survey[C]//In Proceeding of 32nd Annual IEEE Computer Software and Applications Conference(COMPSAC’08),Turku,Finland,2008:967-972.
[5]Husna H,Phithakkitnukoon S,Palla S,et al.Behavior analysis of spam Botnets[C]//IEEE COMSWARE.Bangalore,India,2008:246-253.
[6]Brezo F,De La Puerta J G,Santos I,et al.C&C Techniques in Botnet Development[C]//International Joint Conference CISIS’12.Ostrava,Czech Republic,2012:97-108.
[7]Zeidanloo H R,Manaf A.Botnet command and control mechanisms[C]//The 2nd International Conference on Computer and Electrical Engineering,Dubai,UAE,2009:564-568.
[8]王志,賈春福.“惡意代碼及其防治技術”課程的實驗環境構建與實驗內容設計[J].計算機教育,2009(18):140-142.
[9]高敏芬,王志.二進制代碼分析實驗平臺設計[J].實驗室科學,2011,14(6):121-123.
[10]郭鳳海,賈春福.信息安全開放實驗探討[J].計算機教育,2010(10):119-122.
[11]高敏芬,郭鳳海.惡意代碼防治技術課程的實踐和實驗室的有效管理[J].實驗室科學,2010,13(2):141-144.
[12]Song D,Brumley D,Yin H,et al.BitBlaze:a new approach to computer security via binary analysis[C]//International Conference on Information Systems Security(ICISS 2008).Hyderabad,India,2008:1-25.
[13]Yin H,Song D.TEMU:The BitBlaze Dynamic Analysis Component[EB/OL].[2014-03-01].http://bitblaze.cs.berkeley.edu/temu.html.