高敏芬,蔡亞運
(1.南開大學(xué) 數(shù)學(xué)科學(xué)學(xué)院,天津 300071;2.南開大學(xué) 計算機與控制工程學(xué)院,天津 300071)
僵尸網(wǎng)絡(luò)(botnet)是指攻擊者通過各種手段惡意傳播僵尸程序(bot)以控制大量的計算機,通過相對集中的若干計算機直接向大量受控計算機發(fā)送指令的攻擊性網(wǎng)絡(luò)[1-3]。攻擊者通常利用大規(guī)模的僵尸網(wǎng)絡(luò)進行分布式拒絕服務(wù)攻擊(DDoS)、竊取用戶信息、發(fā)送大量的垃圾郵件(spam)和傳播其他惡意軟件(如計算機病毒)等惡意活動。僵尸網(wǎng)絡(luò)已經(jīng)成為當(dāng)今互聯(lián)網(wǎng)最大的安全威脅之一,也因此成為網(wǎng)絡(luò)安全領(lǐng)域研究的熱點[4]。
僵尸網(wǎng)絡(luò)分析實驗是南開大學(xué)信息安全專業(yè)本科生“惡意代碼分析”課程的重要實驗內(nèi)容之一。該實驗的目的是幫助學(xué)生理解僵尸網(wǎng)絡(luò)的基本工作原理及其行為特征,掌握分析和防治僵尸網(wǎng)絡(luò)的技術(shù)和方法。
由于僵尸網(wǎng)絡(luò)分析過程對學(xué)生的知識基礎(chǔ)和綜合分析能力要求較高,因此,也是對信息安全專業(yè)本科生綜合應(yīng)用所學(xué)知識分析問題、解決問題能力和創(chuàng)新意識的培養(yǎng)。首先,對僵尸網(wǎng)絡(luò)的分析實驗建立在計算機網(wǎng)絡(luò)、匯編語言、編譯原理、高級程序設(shè)計語言等多門專業(yè)基礎(chǔ)或?qū)I(yè)課程基礎(chǔ)之上,學(xué)生通過實驗可以更加深入地理解所學(xué)的專業(yè)知識,提高綜合應(yīng)用這些知識的能力。其次,學(xué)生在實驗過程中可以利用真實的僵尸網(wǎng)絡(luò)樣本進行學(xué)習(xí)和研究,提高學(xué)生學(xué)習(xí)的興趣和積極性,提高利用最新的惡意代碼分析技術(shù)進行分析的能力。最后,學(xué)生通過實驗還可以了解僵尸網(wǎng)絡(luò)的發(fā)展過程,認識典型的僵尸網(wǎng)絡(luò),掌握常規(guī)的僵尸網(wǎng)絡(luò)的分析和防治技術(shù)。在實驗教學(xué)過程中,適當(dāng)引導(dǎo)學(xué)生進一步探索新的惡意代碼分析方法,有助于學(xué)生創(chuàng)新意識和創(chuàng)新能力的提高。
依據(jù)“惡意代碼分析”課程的教學(xué)內(nèi)容和教學(xué)目標(biāo),僵尸網(wǎng)絡(luò)分析實驗的目的和任務(wù)主要有3個方面。
(1)分析僵尸程序的行為和行為特征。該實驗的一個重要目的就是認識僵尸程序的基本特征和攻擊方式,對惡意代碼的最新發(fā)展動態(tài)有更加深入的了解。通過實驗,分析僵尸程序執(zhí)行后的行為表現(xiàn)(例如自刪除、修改系統(tǒng)文件和修改注冊表選項)以及會進行怎樣的網(wǎng)絡(luò)通信;通過對僵尸程序的跟蹤和分析獲得僵尸網(wǎng)絡(luò)的相關(guān)信息,如僵尸主機的地址、命令與控制服務(wù)器的地址或域名、僵尸程序與控制命令服務(wù)器通信的方式或時間等。通過實驗分析,把握僵尸程序的主要行為和行為特征[5]。
(2)發(fā)掘僵尸網(wǎng)絡(luò)的控制命令。在實際網(wǎng)絡(luò)中,僵尸程序的高級語言源代碼往往難以獲得,因此二進制代碼分析技術(shù)在僵尸網(wǎng)絡(luò)等惡意代碼的分析過程中有著較為廣泛的應(yīng)用。利用二進制代碼分析技術(shù)解決僵尸網(wǎng)絡(luò)分析中實際存在的難題——在沒有源代碼的情況下從僵尸程序的二進制可執(zhí)行文件中發(fā)掘出該僵尸網(wǎng)絡(luò)的控制命令集合,是本實驗中的一個重要環(huán)節(jié),也是本實驗的難點。通過該環(huán)節(jié),學(xué)生可以掌握最新、最實用的二進制代碼分析技術(shù)。
(3)分析僵尸網(wǎng)絡(luò)的命令與控制(command and control,C&C)機制。與計算機病毒和蠕蟲等惡意代碼不同,僵尸網(wǎng)絡(luò)的一個重要特點就是其具有高度可控性,攻擊者和僵尸程序之間通過命令與控制信道形成一對多的控制關(guān)系。僵尸網(wǎng)絡(luò)的命令與控制機制決定了僵尸網(wǎng)絡(luò)的拓撲結(jié)構(gòu)、通信效率、可擴展性以及是否容易被防守者發(fā)現(xiàn)和破壞,是僵尸網(wǎng)絡(luò)工作機制的核心部分[2,6-7]。通過對僵尸網(wǎng)絡(luò)控制命令的發(fā)掘,可以掌握控制命令與僵尸程序行為的對應(yīng)關(guān)系,分析僵尸程序和命令與控制服務(wù)器的通信方式和通信內(nèi)容,形成對僵尸網(wǎng)絡(luò)命令與控制機制的宏觀認知,并通過對不同類型的控制協(xié)議和控制機制進行對比、分析,探討可能存在的新的命令與控制機制。
筆者結(jié)合南開大學(xué)信息安全專業(yè)實驗室的軟硬件環(huán)境[8-9]和已有的實驗方案[10-11],設(shè)計了僵尸網(wǎng)絡(luò)分析實驗環(huán)境,其基礎(chǔ)架構(gòu)如圖1所示。
在上述硬件環(huán)境的基礎(chǔ)上,搭建了自動化、系統(tǒng)性的僵尸程序監(jiān)控分析平臺,其結(jié)構(gòu)如圖2所示。該分析平臺運行在 Ubuntu 10.04/12.04操作系統(tǒng)下,主要由4個部分組成。
(1)僵尸程序執(zhí)行過程監(jiān)控平臺。該平臺負責(zé)僵尸程序的運行監(jiān)控、執(zhí)行軌跡的捕獲、污點傳播分析、符號執(zhí)行及約束求解等實驗任務(wù)。該監(jiān)控平臺的主要部分是二進制代碼分析平臺BitBlaze[12],包括動態(tài)分析部分TEMU和靜態(tài)分析部分VINE。
圖1 僵尸網(wǎng)絡(luò)分析實驗環(huán)境基礎(chǔ)架構(gòu)
圖2 僵尸程序分析平臺結(jié)構(gòu)
(2)執(zhí)行軌跡分析工具包。該工具包由Perl語言實現(xiàn),完成對執(zhí)行軌跡的分析實驗,比如分析僵尸程序代碼空間中的代碼覆蓋情況,分析僵尸程序執(zhí)行過程中與系統(tǒng)交互情況等。
(3)控制命令挖掘工具包??刂泼钔诰蚬ぞ甙灿蒔erl語言實現(xiàn),通過和執(zhí)行軌跡分析工具的結(jié)合,利用部分僵尸程序執(zhí)行邏輯的先驗知識,可以進行對僵尸網(wǎng)絡(luò)未知控制命令進行挖掘,并在此基礎(chǔ)上對僵尸網(wǎng)絡(luò)的命令控制機制進行進一步的分析研究。
(4)僵尸程序行為監(jiān)控工具包。該工具包由文件系統(tǒng)監(jiān)視軟件FileMon和網(wǎng)絡(luò)分析軟件Wireshark等成熟的系統(tǒng)監(jiān)控軟件組成,工作在Windows系統(tǒng)的僵尸主機下,用于對僵尸程序的宏觀行為進行跟蹤和監(jiān)控。
(1)熟悉監(jiān)控環(huán)境和分析平臺的使用。熟悉監(jiān)控環(huán)境的使用,并在其中運行僵尸程序,嘗試和僵尸網(wǎng)絡(luò)命令與控制服務(wù)器進行連接和通信;熟悉二進制代碼分析平臺BitBlaze的使用,學(xué)習(xí)利用其動態(tài)分析組件TEMU進行軌跡捕獲、二進制代碼插裝的技術(shù)和方法,熟悉利用靜態(tài)分析組件VINE進行二進制代碼的執(zhí)行軌跡反匯編及符號執(zhí)行、約束求解等分析方法。
(2)僵尸程序執(zhí)行軌跡捕獲。執(zhí)行軌跡是僵尸程序路徑空間中一條路徑的執(zhí)行過程的詳細記錄。在BitBlaze平臺的TEMU中運行僵尸程序,監(jiān)控其執(zhí)行過程,并將從命令與控制信道中接收到的網(wǎng)絡(luò)數(shù)據(jù)標(biāo)記為污點,捕獲得到僵尸程序的執(zhí)行軌跡文件??梢苑謩e捕獲僵尸程序在與控制命令服務(wù)器無網(wǎng)絡(luò)交互、有網(wǎng)絡(luò)交互及接收到不同控制命令等情況的幾組不同的執(zhí)行軌跡,以便于進行對比分析,并用BitBlaze平臺中的VINE將這些二進制的執(zhí)行軌跡文件轉(zhuǎn)換成匯編語言格式。
(3)僵尸程序執(zhí)行軌跡文件分析。對捕獲到的執(zhí)行軌跡文件進行處理和簡化,然后編寫程序?qū)ζ溥M行分析:統(tǒng)計分析僵尸程序執(zhí)行軌跡中的線程個數(shù)及線程號、污點傳播過程等信息;分析僵尸程序代碼空間中的代碼覆蓋情況,計算代碼覆蓋率并分析其特點;統(tǒng)計分析系統(tǒng)API調(diào)用情況;從執(zhí)行軌跡文件構(gòu)造僵尸程序的控制流圖。通過分析,對執(zhí)行軌跡的特點和僵尸程序的執(zhí)行邏輯有更加清晰的認識。
(4)僵尸網(wǎng)絡(luò)控制命令提取。根據(jù)步驟(3)中的分析結(jié)果,結(jié)合僵尸程序的固有特點,從執(zhí)行軌跡中定位到僵尸程序中對控制命令進行判斷、處理的命令控制邏輯代碼段。定位的方法可以結(jié)合參考文獻[3]中提出的規(guī)律,也希望學(xué)生探索和發(fā)現(xiàn)新的特點和規(guī)則。然后,在可控環(huán)境中執(zhí)行僵尸程序,當(dāng)執(zhí)行到命令控制邏輯代碼段時,利用代碼插裝等二進制代碼動態(tài)分析技術(shù)[13]提取出僵尸程序可執(zhí)行的控制命令。
(5)僵尸程序行為分析。在可控環(huán)境中再次運行僵尸程序,利用FileMon和Wireshark等軟件對僵尸程序的行為進行跟蹤監(jiān)控。其一,在沒有與命令控制服務(wù)器交互時,分析僵尸程序執(zhí)行后會有怎樣的行為表現(xiàn),例如自刪除、修改系統(tǒng)文件、修改注冊表選項、試圖連接命令與控制服務(wù)器等;其二,在和命令與控制服務(wù)器進行交互時,利用步驟(4)中提取出的僵尸網(wǎng)絡(luò)命令,觸發(fā)僵尸程序運行,再監(jiān)控其會有怎樣的行為,并總結(jié)控制命令與僵尸行為的對應(yīng)關(guān)系。通過多次實驗和觀察,對僵尸程序的行為和特征進行歸納總結(jié)。
(6)僵尸網(wǎng)絡(luò)命令與控制機制的進一步思考和探索。思考上述從僵尸程序二進制文件中挖掘未知命令方法的優(yōu)缺點,并探索新的改進方法。根據(jù)提取出的控制命令及其對應(yīng)的行為,分析僵尸程序和命令與控制服務(wù)器通信的方式,從整體上對該僵尸網(wǎng)絡(luò)的命令與控制機制進行認識和思考。
在上述步驟中,步驟(3)“執(zhí)行軌跡文件分析”和步驟(4)“控制命令的提取”涉及較多的專業(yè)知識和二進制代碼分析技術(shù),是本實驗的難點。
在TEMU中運行Zeus僵尸程序,在和命令與控制服務(wù)器進行通信時,動態(tài)捕獲了Zeus僵尸程序的3條執(zhí)行軌跡,其中的線程數(shù)、匯編指令總數(shù)和系統(tǒng)API調(diào)用個數(shù)見表1。
表1 捕獲的Zeus執(zhí)行軌跡信息
對3個執(zhí)行軌跡進行分析,了解Zeus僵尸程序的執(zhí)行邏輯,利用執(zhí)行軌跡中的代碼塊覆蓋率特征,從中定位到滿足參考文獻[3]中提出的覆蓋率規(guī)律的代碼塊,其所在代碼區(qū)域就是僵尸程序的命令控制邏輯代碼段。根據(jù)此方法,可以定位到的代碼段地址范圍為0x26e877c—0x26e87a2,其中調(diào)用了系統(tǒng)比較函數(shù)lstrcmpiw來進行比較,它是一個循環(huán)結(jié)構(gòu)(見圖3)。
圖3 Zeus僵尸程序的命令控制邏輯結(jié)構(gòu)
將Zeus僵尸程序再次放在TEMU中運行。當(dāng)僵尸程序運行到命令判定循環(huán)的入口地址0x26e877c時,開始監(jiān)控是否調(diào)用判定函數(shù)lstrcmpiw。如果發(fā)生調(diào)用,則修改輸入命令為隨機數(shù)據(jù),使程序進入判定循環(huán)。在判定過程中,通過獲取用來和輸入數(shù)據(jù)比較的參數(shù),動態(tài)捕獲了Zeus僵尸網(wǎng)絡(luò)的25個控制命令:
提取出控制命令以后,就可以用這些控制命令作為網(wǎng)絡(luò)輸入來觸發(fā)Zeus僵尸程序,使其表現(xiàn)出相應(yīng)的行為。掌握了僵尸網(wǎng)絡(luò)的命令與控制機制以后,也可以嘗試偽造Zeus命令與控制服務(wù)器并向僵尸主機發(fā)送bot_uninstall等命令來卸載、刪除僵尸程序,瓦解僵尸網(wǎng)絡(luò)。
本文根據(jù)僵尸網(wǎng)絡(luò)的特點,結(jié)合南開大學(xué)信息安全專業(yè)實驗室的軟件和硬件環(huán)境,設(shè)計了僵尸網(wǎng)絡(luò)分析的實驗教學(xué)平臺,并提出了實驗?zāi)康?、方法和步驟。利用本實驗平臺,學(xué)生可以進行僵尸程序行為特征分析、僵尸網(wǎng)絡(luò)命令與控制機制研究的實驗。通過實驗,學(xué)生可以更加深入理解僵尸網(wǎng)絡(luò)的基本原理和行為特征,掌握僵尸網(wǎng)絡(luò)分析的相關(guān)技術(shù),進而進行僵尸網(wǎng)絡(luò)分析與防治的新方法、新途徑的探索。本實驗環(huán)境為信息安全專業(yè)學(xué)生的實踐動手能力和創(chuàng)新能力的培養(yǎng)提供了良好的實驗條件。
(
)
[1]方濱興,崔翔,王威.僵尸網(wǎng)絡(luò)綜述[J].計算機研究與發(fā)展,2011,48(8):1315-1331.
[2]江健,諸葛建偉,段海新,等.僵尸網(wǎng)絡(luò)機理與防御技術(shù)[J].軟件學(xué)報,2012,23(1):82-96.
[3]王志,蔡亞運,劉露,等.基于覆蓋率分析的僵尸網(wǎng)絡(luò)控制命令發(fā)掘方法[J].通信學(xué)報,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,F(xiàn)inland,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]王志,賈春福.“惡意代碼及其防治技術(shù)”課程的實驗環(huán)境構(gòu)建與實驗內(nèi)容設(shè)計[J].計算機教育,2009(18):140-142.
[9]高敏芬,王志.二進制代碼分析實驗平臺設(shè)計[J].實驗室科學(xué),2011,14(6):121-123.
[10]郭鳳海,賈春福.信息安全開放實驗探討[J].計算機教育,2010(10):119-122.
[11]高敏芬,郭鳳海.惡意代碼防治技術(shù)課程的實踐和實驗室的有效管理[J].實驗室科學(xué),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.