梁其川 吳禮發(fā)
摘要:針對當前僵尸網(wǎng)絡向P2P方向發(fā)展的趨勢,在對P2P僵尸網(wǎng)絡本質(zhì)的理解和把握的基礎(chǔ)上,提出了一種新穎的P2P僵尸網(wǎng)絡檢測技術(shù)。對于某個被監(jiān)視的網(wǎng)絡,關(guān)注其內(nèi)部每臺主機的通信行為和網(wǎng)絡惡意活動。把這些通信行為和網(wǎng)絡惡意活動分類,找出具有相似或相關(guān)通信和網(wǎng)絡惡意行為的主機。根據(jù)我們對定義的理解,這些主機就屬于某個P2P僵尸網(wǎng)絡。
關(guān)鍵詞:P2P;僵尸網(wǎng)絡;檢測;網(wǎng)絡安全
中圖分類號:TP393文獻標識碼:A文章編號:1009-3044(2009)22-pppp-0c
僵尸網(wǎng)絡是當前因特網(wǎng)面臨最大的威脅之一,僵尸網(wǎng)絡對因特網(wǎng)造成的主要危害包括DDoS攻擊、機密信息竊取、發(fā)送垃圾郵件等。從1999年因特網(wǎng)出現(xiàn)第一個具有僵尸網(wǎng)絡特性的惡意代碼PrettyPark算起至今,IRC僵尸網(wǎng)絡一直占據(jù)著重要地位。但是2002年第一個P2P僵尸網(wǎng)絡Slapper的出現(xiàn)使得僵尸網(wǎng)絡進入了一個新的發(fā)展階段。接著在2003年和2004年出現(xiàn)的Sinit和Phatbot都是典型的P2P僵尸網(wǎng)絡,他們的擴散進一步吸引了大眾的眼球。2006年Nugache以及2007年P(guān)eacomm(又稱其為Storm)僵尸網(wǎng)絡的大規(guī)模爆發(fā),則似乎預示著僵尸網(wǎng)絡進入了一個全新的P2P時代[1]。
隨著大家對僵尸網(wǎng)絡危害的認識逐漸深入,對僵尸網(wǎng)絡檢測技術(shù)的研究也成了各方面關(guān)注的熱點。最先開始系統(tǒng)研究僵尸網(wǎng)絡的機構(gòu)是成立于1999年的蜜網(wǎng)工作組(The Honeynet Project)[2],隨后,安全領(lǐng)域的學術(shù)研究和會議討論熱點都涉及僵尸網(wǎng)絡的議題。USESIX協(xié)會從2007年開始舉辦僵尸網(wǎng)絡專題討論會HotBots ( workshop on hot topics in understanding botnets)。各大反病毒公司也分別就僵尸網(wǎng)絡的檢測和反制做了許多有意義的工作。但是由于IRC僵尸網(wǎng)絡占據(jù)著主導地位,因此大多數(shù)的僵尸網(wǎng)絡檢測技術(shù)都集中在基于IRC的僵尸網(wǎng)絡上。而對IRC僵尸網(wǎng)絡的檢測基本無一例外都致力于檢測其C&C ( Command & Control )信道,這是因為基于IRC的僵尸網(wǎng)絡的C&C具有集中性的特點,只要找到了其C&C服務器,就可以破壞整個僵尸網(wǎng)絡。而P2P僵尸網(wǎng)絡則不一樣,它的C&C并集中的服務器,而是分散的終端(peers)。這樣以來對P2P僵尸網(wǎng)絡的檢測就越發(fā)困難,而且即使檢測到了某臺主機被感染了P2P僵尸程序(bot),關(guān)閉掉整個僵尸網(wǎng)絡也很困難,因為僵尸終端分布在整個互聯(lián)網(wǎng)范圍內(nèi)。Matt Jonkman提出了基于數(shù)據(jù)包大小和頻率來檢測Storm Worm的通用方法。但是該方法的主要缺點是不檢測數(shù)據(jù)包的內(nèi)容,很容易引起虛警[3]。Helsinki科技大學的Antti Nummipuro提出了基于主機的P2P僵尸網(wǎng)絡檢測方法[4],但是該方法與其他惡意代碼檢測技術(shù)類似,并沒有特別新穎或創(chuàng)新之處。阿姆斯特丹大學的Reinier Schoof和Ralph Koning等人對P2P僵尸網(wǎng)絡的檢測則關(guān)注在P2P對等端的發(fā)現(xiàn)上[5]。而GA Tech的Guofei Gu等人則提出通過檢測網(wǎng)絡流量以及網(wǎng)絡活動的方法檢測P2P僵尸網(wǎng)絡(也包括檢測其他類型的僵尸網(wǎng)絡)方法,相對來說更加具有現(xiàn)實性和可靠性[6]。
本文主要解決如下問題:通過對某個網(wǎng)絡內(nèi)(比如某個局域網(wǎng))的所有主機的通信和惡意行為進行監(jiān)控,找到具有相似通信和惡意行為的主機,則基本就可以判定這些主機為某個僵尸網(wǎng)絡的部分僵尸主機。
1 對P2P僵尸網(wǎng)絡檢測的深入認識
1.1 P2P僵尸網(wǎng)絡的本質(zhì)理解
僵尸網(wǎng)絡的傳統(tǒng)定義為:攻擊者(稱為botmaster,也稱作僵尸主人)出于惡意目的,傳播僵尸程序控制大量主機,并通過一對多的命令與控制(command and control, C&C)信道所組成的網(wǎng)絡[7]。而我們則主要通過僵尸網(wǎng)絡的通信和惡意活動方面對P2P僵尸網(wǎng)絡進行本質(zhì)定義如下:通過C&C信道被控制的具有協(xié)同性的惡意代碼群組。我們主要從如下的幾個方面理解這個定義:
1) 惡意代碼。意味著僵尸程序被僵尸主人用來展開惡意行為,比如掃描、發(fā)送垃圾郵件、向僵尸主機下載延伸的其他惡意代碼,等一系列惡意行為。
2) 被控制的。意味著被感染的僵尸主機必須向C&C信道發(fā)起連接,加入僵尸網(wǎng)絡。只有這樣,僵尸主機才可以獲取到僵尸主人的命令完成不同的行為,或者對自己升級等。也就是說,被感染的僵尸主機必須同C&C通信,否則就不能扮演其角色,完成其任務。
3) 協(xié)同性群組。意味著被同一個僵尸主人控制的同一個僵尸網(wǎng)絡的多個僵尸程序?qū)⒈憩F(xiàn)出相似地或相關(guān)聯(lián)的通信特征和惡意行為特征。假設僵尸主人通過不同的信道(或命令機制)向各個不同的僵尸程序發(fā)布命令,則根據(jù)我們的定義,這些僵尸程序的組合不能稱之為僵尸網(wǎng)絡,只能理解為松散的惡意程序集合。
1.2 常用的P2P僵尸網(wǎng)絡檢測方法
僵尸網(wǎng)絡很難被檢測,尤其是P2P僵尸網(wǎng)絡,大致有如下幾種原因:1) P2P僵尸網(wǎng)絡使用的P2P協(xié)議與其他正常的P2P協(xié)議相比沒有什么不同;2) 僵尸網(wǎng)絡產(chǎn)生的P2P流量非常少;3) 在某個被監(jiān)控的網(wǎng)絡內(nèi)可能只有少數(shù)幾臺主機(甚至只有一臺)感染了僵尸程序;4) 甚至有P2P僵尸網(wǎng)絡使用加密的通信[8]。
對個人用戶來說,因為面對的只是自己的一臺或者少有的幾臺主機,用戶不必要關(guān)心僵尸網(wǎng)絡問題,他只需要關(guān)注主機不要被僵尸程序感染變成僵尸主機。個人用戶只需要按時升級殺毒軟件、軟件防火墻、系統(tǒng)補丁等,且養(yǎng)成良好的上網(wǎng)習慣,就可以把感染僵尸程序的風險降到最低。個人主機對僵尸網(wǎng)絡的檢測方法也很簡單,如果用戶有一定的計算機知識,就可以很輕松地掌握自己主機的網(wǎng)絡連接、異常進程等信息,進而判定主機是否被感染了僵尸程序。
對某個網(wǎng)絡(比如局域網(wǎng))的管理員,他所關(guān)心的就是該網(wǎng)絡內(nèi)部的所有主機。當前,專業(yè)的網(wǎng)絡防火墻(NIDS)和入侵防御系統(tǒng)(IPS)不失為最好的選擇。傳統(tǒng)的IDS只關(guān)注向內(nèi)的連接和流量,但是如何從大量的向內(nèi)掃描和入侵嘗試等行為中辨別出內(nèi)部主機是否已經(jīng)被感染就成了燙手的問題。
對大型研究機構(gòu)和反病毒公司,他們擁有很多別人不能企及的資源,比如可以在全球范圍內(nèi)部署網(wǎng)絡嗅探器,可以監(jiān)控各級DNS服務器,等等。他們最有可能獲取到整個僵尸網(wǎng)絡的輪廓,掌握僵尸網(wǎng)絡的實時動態(tài),而且他們也具有最先進的技術(shù)和最頂尖的人才。
1.3 我們的P2P僵尸網(wǎng)絡檢測方法
在前面對P2P僵尸網(wǎng)絡本質(zhì)理解的基礎(chǔ)上,我們提出一種全新的P2P僵尸網(wǎng)絡檢測方法。我們的方法主要集中于某個被監(jiān)控的網(wǎng)絡。我們首先檢測網(wǎng)絡內(nèi)所有主機的通信狀況,這樣就可以確定“誰在跟誰通信”以及通信的協(xié)議、格式特征內(nèi);第二還要檢測網(wǎng)絡內(nèi)所有主機的網(wǎng)絡活動,即檢測到“誰在干什么”,比如掃描、下載二進制代碼、攻擊遠程主機等等。然后在通信行為和網(wǎng)絡活動中找出一個(或數(shù)個)協(xié)同組。具體說來就是先把具有相似通信行為的主機分成多個聚類;接著把具有相似網(wǎng)絡活動的主機分成多個聚類,然后對兩者進行交叉關(guān)聯(lián),找到那些既有相似通信行為又有相似網(wǎng)絡活動的主機。根據(jù)我們前面的分析,這些主機就處于某個僵尸網(wǎng)絡當中。
2 檢測模型框架及實現(xiàn)
2.1 問題的陳述和一些假定
根據(jù)前面給出的定義,P2P僵尸網(wǎng)絡主要有惡意性、被控制性和協(xié)同群組性三個特點。需要注意的是,這三個特點缺一不可。比如正常的P2P程序,它是一個協(xié)同性群組,但是不具有惡意。再比如蠕蟲或病毒,具有惡意性和被控制性,但是沒有協(xié)同性。因此,只有滿足這三個條件,才可以判定其為僵尸網(wǎng)絡。
下面我們以Peacomm P2P僵尸網(wǎng)絡為實例來具體看看其工作過程[9]。Peacomm僵尸網(wǎng)絡的C&C信道是Overnet P2P協(xié)議。它通常是以郵件附件的方式感染主機,然后通過向系統(tǒng)驅(qū)動中添加“wincom32.sys”的方式初始化僵尸程序。這個驅(qū)動被注入到“services.exe”進程中,這個服務在接下來就扮演P2P客戶端的角色。該僵尸程序還會阻斷Windows自帶的防火墻,并開啟如下的端口:
TCP: 139, 12474
UDP: 123, 137, 138, 1034, 1035, 7871, 8705, 19013, 40519
在被感染的僵尸程序中,有一個固定的鄰居列表。僵尸程序就是通過這些端口向鄰居列表中的其他僵尸程序聯(lián)系,這樣就加入到僵尸網(wǎng)絡當中。
2.2 體系結(jié)構(gòu)
圖 1顯示了我們提出的P2P僵尸網(wǎng)絡檢測方法的體系結(jié)構(gòu)。該體系結(jié)構(gòu)主要由五部分組成:網(wǎng)絡行為監(jiān)控模塊、通信監(jiān)控模塊、網(wǎng)絡行為分類模塊、通信流量分類模塊和交叉關(guān)聯(lián)模塊。網(wǎng)絡行為監(jiān)控和通信監(jiān)控都部署在被監(jiān)控網(wǎng)絡的邊緣,也就是網(wǎng)絡與外部網(wǎng)絡的進出口處,而且他們同時并行運行。通信監(jiān)控主要監(jiān)控內(nèi)部主機與外部的全部通信,并以一種容易理解使用的格式記錄日志,即主要負責“誰在跟誰通信”的問題。網(wǎng)絡行為監(jiān)控模塊監(jiān)控所有主機的惡意行為,也以日志的方式記錄下來,即主要負責“誰在做什么”的問題。網(wǎng)絡行為分類模塊把監(jiān)控模塊記錄的日志按照非監(jiān)督分類的方法進行分類,把具有相似或相近網(wǎng)絡行為模型的主機成一類。通信流量分類模塊也是把通信監(jiān)控模塊產(chǎn)生的日志記錄用非監(jiān)督分類的方法進行分類,把具有相似或相近通信模型的主機分成一類。交叉關(guān)聯(lián)模塊則負責交叉比對由上述兩個模塊產(chǎn)生的類,找到那些在兩個模塊中都處于同一個類中的主機。則這些主機就是P2P僵尸主機。
2.2.1 監(jiān)控模塊
通信監(jiān)控比較容易實現(xiàn),很多路由器都支持網(wǎng)絡流量日志功能??梢灾苯訌穆酚善鳙@取。也可以用一些常用的抓包工具,比如Windows系統(tǒng)下面的Ethereal[10],和Linux下面的開源解決方案Argus[11]。為了便于找到相似或相近的通信模型,對于每個流我們主要關(guān)注如下內(nèi)容:發(fā)起時間、持續(xù)時間、源IP地址、源端口、目標IP地址、目標端口和包含的字節(jié)數(shù)等。
網(wǎng)絡行為監(jiān)控主要監(jiān)控內(nèi)部主機向外發(fā)起的一些惡意的網(wǎng)絡活動,比如掃描、發(fā)送垃圾郵件、下載二進制代碼、溢出遠程主機,等等。而這些惡意行為一般也是僵尸主人對僵尸網(wǎng)絡下達的命令動作。對網(wǎng)絡行為的監(jiān)控我們采用開源的入侵檢測系統(tǒng)Snort[12]。對檢測到的每個惡意行為,Snort會產(chǎn)生一個報警(alert)。針對不同的惡意行為,Snort產(chǎn)生不同的警報。
2.2.2 網(wǎng)絡行為分類
網(wǎng)絡行為的分類比較簡單,如圖 2所示,可以根據(jù)惡意行為的類型直接進行一級分類,如果分類比較粗糙,則可根據(jù)不同的標準進行相應的二級分類。比如對掃描行為,可以根據(jù)端口的類型進行細分;比如溢出遠程主機行為,可以根據(jù)所利用的漏洞情況進行細分;比如發(fā)送垃圾郵件行為,也可以根據(jù)SMTP服務器的重疊程度進行細分;等等。
2.2.3 通信流量分類
每一條通信流都是按照前面所述統(tǒng)一的數(shù)據(jù)格式記錄。對于一個監(jiān)控的網(wǎng)絡(比如某個具有200臺主機的局域網(wǎng)),網(wǎng)絡流量可能非常大,因此要在這些巨大的通信流量中找出相似或相近的通信模型并不容易。我們采用模式分類中常用的無監(jiān)督聚類方法對其進行分類。如圖 3所示,過濾規(guī)則一是指過濾掉那些網(wǎng)絡內(nèi)部通信的流量,因為我們主要關(guān)注內(nèi)部主機和外部通信的情況。過濾規(guī)則二是指過濾掉那些內(nèi)部主機和外部著名站點通信的流量,比如新浪、搜狐、網(wǎng)易等公認的著名站點,因為一般情況下默認這些站點不會成為僵尸主機。特征壓縮則是為了提高后面分類的速度。聚類的生成方法可以采用最簡單的K均值聚類方法。
2.2.4 交叉關(guān)聯(lián)
得到上面網(wǎng)絡行為和通信流的聚類,交叉關(guān)聯(lián)就很容易進行。交叉關(guān)聯(lián)的結(jié)果就是找到一些主機,比如h1,h2,h3…h(huán)n,在網(wǎng)絡行為和通信流分類中都被分到相同的類,則可以斷定h1,h2,h3…h(huán)n屬于同一個僵尸網(wǎng)絡。我們用如下的方法解決:第一步,過濾。因為被監(jiān)控網(wǎng)絡內(nèi)的很多主機是沒有惡意網(wǎng)絡活動的,因此把通信聚類中那些沒有惡意網(wǎng)絡活動的主機刪除,這樣第一步下來就可以過濾掉很多主機。第二,交叉關(guān)聯(lián)。對處于網(wǎng)絡行為中的每個聚類,用聚類的每天主機在通信聚類中比對,如果發(fā)現(xiàn)有相似的數(shù)臺主機,則記錄,否則繼續(xù)進行知道全部比對結(jié)束。不難理解,該算法的復雜度為O(n)(n為被監(jiān)控網(wǎng)絡內(nèi)的主機數(shù))。
2.3 評估
以往僵尸網(wǎng)絡的定義只是從表面上把握了僵尸網(wǎng)絡,具有描述性質(zhì)。我們從內(nèi)在本質(zhì)出發(fā),給出了僵尸網(wǎng)絡全新的定義。并且從該定義出發(fā),提出了一種全新的P2P僵尸網(wǎng)絡檢測系統(tǒng)。該檢測技術(shù)把握住了P2P僵尸網(wǎng)絡的本質(zhì)特征,保證了算法的正確性。在該檢測框架的實施中,每一步都切實可行,具有算法和實現(xiàn)上的可行性。
3 結(jié)束語
不難看出,提出的P2P僵尸網(wǎng)絡檢測技術(shù)是基于對P2P僵尸網(wǎng)絡本質(zhì)的理解和把握。該方法跳出了常規(guī)的檢測思維,通過通信流及網(wǎng)絡活動對P2P僵尸網(wǎng)絡進行檢測,通過分析,可以看出這種方法對P2P僵尸網(wǎng)絡的檢測具有很低的誤報率。
但是這種方法也存在一定的局限性。第一,只能檢測到被監(jiān)控的某個有限網(wǎng)絡,得不到整個僵尸網(wǎng)絡的輪廓和活動特性。第二,如果被監(jiān)控的網(wǎng)絡內(nèi)只有很少幾臺(甚至一臺)主機感染了某個P2P僵尸網(wǎng)絡,則這種檢測方法會產(chǎn)生較高的漏報率。而這也是我們將來繼續(xù)努力的方向。
參考文獻:
[1] R. Lemos.Bot software looks to improve peerage[OL].http://www.securityfocus.com/news/11390,2006,6.
[2] The Honeynet Project, http://www.honeynet.org.
[3] M.Jonkman. Encrypted storm traffic. http://www.bleedingthreats.net/index.php/2007/10/15/encrypted-storm-traffic/.2007,10.
[4] A.Nummipuro.Detecting P2P-Controlled Bots on the Host.In Seminar on Network Security,2007,10.
[5] R. Schoof, R. Koning. Detecting peer-to-peer Botnets. http://staff.science.uva.nl/delaat/sne-2006-2007/p17/report.pdf. 2007, 2.
[6] G. Gu, R. Perdisci, J. Zhang, W. Lee. BotMiner: Clustering Analysis of Network Traffic for Protocol- and Structure-Independent Botnet Detection. In 17th USENIX Security Symposium,2008.
[7] 諸葛建偉, 韓心慧,周勇林,葉志遠,鄒維.僵尸網(wǎng)絡研究[J].軟件學報,2008,19(1):152-165.
[8] G. Gu, J. Zhang, and W. Lee. BotSniffer: Detecting botnet command and control channels in network traffic. In Proceedings of the 15th Annual Network and Distributed System Security Symposium ( NDSS' 08 ), 2008.
[9] J. Stewart. Sinit P2P Trojan Analysis. http://www.secureworks.com/research/threats/archive/sinit. 2003, 8.
[10] Ethereal. http://www.ethereal.com.
[11] Argus. http://qosient.com/argus/
[12] The Snort Team. http://www.snort.org.