楊智興,方賢進
(安徽理工大學 計算機科學與工程學院,安徽 淮南232000)
僵尸網(wǎng)絡是在網(wǎng)絡蠕蟲、特洛伊木馬、后門工具等傳統(tǒng)惡意代碼形態(tài)的基礎上發(fā)展、融合而產(chǎn)生的一種新型攻擊方式。目前一個具有通用性的定義是:僵尸網(wǎng)絡(botnet)是攻擊者出于惡意目的,傳播僵尸程序控制大量主機,并通過一對多的命令與控制信道所組成的網(wǎng)絡。
根據(jù)國家互聯(lián)網(wǎng)應急中心2013年10月[1]公布,CNCERT監(jiān)測發(fā)現(xiàn)境內(nèi)近740 000個IP地址對應的主機被木馬或僵尸程序控制,木馬或僵尸網(wǎng)絡控制服務器IP總數(shù)為12 275個。其中,境內(nèi)木馬或僵尸網(wǎng)絡控制服務器IP數(shù)量為6 763個,按地區(qū)分布數(shù)量排名前三位的分別為廣東省、江蘇省、云南省。境外木馬或僵尸網(wǎng)絡控制服務器IP數(shù)量為5 512個,主要分布于美國、韓國、中國臺灣。其中,位于美國的控制服務器控制了境內(nèi)303 588個主機IP,控制境內(nèi)主機IP數(shù)量居首位,其次是位于葡萄牙和荷蘭的IP地址,分別控制了境內(nèi)135 178個和109 893個主機IP。
僵尸網(wǎng)絡的肆虐給網(wǎng)絡安全帶來了巨大的威脅,現(xiàn)階段針對僵尸網(wǎng)絡的檢測研究[2]也層出不窮,本文簡要介紹DCA算法在僵尸網(wǎng)絡檢測中的應用。
人類免疫系統(tǒng)HIS(Human Immune System)中免疫應答是從DC開始的復雜過程。DC是一種抗原提呈細胞(APC),它從淋巴系統(tǒng)遷移到機體組織(Tissue),攝取抗原和蛋白質碎片,同時采集抗原所處環(huán)境中的分子作為危險信號,攝取抗原并采集信號之后從機體組織返回淋巴結(Lymph Node),并將抗原提呈給T細胞以識別抗原。另外,DC能夠處理環(huán)境分子,并釋放特定的細胞因子(cytokines)以影響T細胞分化過程。DC進行決策并驅動T細胞進行免疫應答。
Greensmith通過對DC生理功能和角色的研究,對DC行為進行建模,設計實現(xiàn)了DCA算法。
DCA是基于 DC群體(population)的算法[3-4],對抗原信號形式的數(shù)據(jù)流進行處理。DC群體不斷更新,更新頻率和種類控制與算法實現(xiàn)細節(jié)有關。群體中每個DC執(zhí)行抗原和信號的采集。DC存儲采集的抗原,并將輸入信號轉換為輸出信號。
DCA 輸入信號包括 PAMP、DS(Danger Signal)、SS(Safe Signal)和IS(Inflammation Signal)。DC對輸入信號進行處理,產(chǎn)生3種輸出信號——CSM、半成熟信號(semi)和成熟信號(mat)。為了避免對復雜的實際生物信號轉換機制建模,iDC信號處理使用加權求和公式來模擬,以減少計算開銷,使DCA適用于實時異常檢測。DC每次更新累積輸出信號之后,比較CSM和遷移閾值(Migration Threshold),若CSM超過遷移閾值,則從組織刪除此 DC,采樣周期結束,DC遷移到淋巴結進行結果分析。
DC遷移之后進行累積輸出信號評估,semi和mat濃度較大者成為細胞環(huán)境。用于對DC采集的所有抗原進行標記,標記成環(huán)境 0或者 1,最終用于產(chǎn)生 MCAV,代表抗原異常程度。用戶可以將其與閾值進行比較,判斷抗原是否異常。
DCA算法流程如圖1所示[5]。
圖1 DCA算法流程
基于群體的DCA算法的輸入為時間序列數(shù)據(jù),是由信號與抗原組成的數(shù)據(jù)流。要將DCA算法應用到僵尸網(wǎng)絡的檢測中[6],最重要的是要解決算法中的時間序列輸入數(shù)據(jù)的獲取以及信號與抗原的映射,下面給出解決方案。
檢測算法的輸入數(shù)據(jù)應能反映受害主機(即受僵尸程序或其他惡意程序感染的主機)狀態(tài)。通過對僵尸程序的分析得出,僵尸網(wǎng)絡要完成一些列的功能必須通過調(diào)用相關的系統(tǒng)函數(shù)才能夠實現(xiàn),如通信函數(shù)C、文件存取函數(shù)F和鍵盤狀態(tài)函數(shù)K。其中通信函數(shù)包括send、sendto、recv、recvfrom、socket、connect和 IcmpSendEcho;文件存取函數(shù)包括 CreateFile、OpenFile、ReadFile和 WriteFile;鍵盤狀態(tài)函數(shù)包括 GetAsyncKeyState、GetKeyboardState、GetKeyNameText和 keybd_event。通過 API調(diào)用追蹤工具能很簡單地得到這些函數(shù)的調(diào)用數(shù)據(jù),作為算法的時間序列輸入數(shù)據(jù)。
現(xiàn)階段,僵尸網(wǎng)絡的命令與控制信道的構建方式趨于多樣化,基于不同協(xié)議構建的僵尸網(wǎng)絡信號的選擇、映射及歸一化方法不盡相同,這里以基于IRC協(xié)議的僵尸網(wǎng)絡為例,給出輸入信號的選擇、映射及歸一化方法。
PAMP信號的映射:把bot執(zhí)行的鍵盤攔截活動映射為PAMP信號,該信號值來自于鍵盤攔截活動需調(diào)用的相關API函數(shù)的調(diào)用變化率,這些API函數(shù)包括GetAsyncKeyState、GetKeyboardState、GetKeyNameText和 keybd_event。通過初級試驗定義“Maxps=1 s內(nèi)擊鍵所產(chǎn)生的API函數(shù)調(diào)用的最大次數(shù)”,然后通過線性變換將Maxps映射到100作為PAMP信號的最大值。那么設PAMPt為在時間窗t內(nèi)所產(chǎn)生的鍵盤狀態(tài)API函數(shù)調(diào)用的數(shù)量。則在t時刻,PAMP信號的變化率可定義為:
(1)Danger信號的映射:由于 bots直接對 botmaster的命令響應,因此發(fā)送和接收數(shù)據(jù)的微小時間差都可觀測到。因此將Danger信號定義為對每個進程攔截send和recv函數(shù)調(diào)用的網(wǎng)絡發(fā)送和接收數(shù)據(jù)的時間差。設定一個臨界范圍(0,Maxds)表示異常響應時間,如果響應時間落在臨界范圍則表示很快的響應時間,并被認為是危險的。Danger信號的計算公式如下:
其中 Trecv,send為執(zhí)行 recv和 send函數(shù)調(diào)用的時間差。
(2)Safe信號的映射:由于 bots發(fā)送給botmaster信息使用send函數(shù)調(diào)用,或者bots發(fā)起SYN/UDP Flooding攻擊使用sendto和socket函數(shù)調(diào)用,這都會在短時間內(nèi)產(chǎn)生大量的函數(shù)調(diào)用。因此定義(Rangess1,Rangess2)為調(diào)用兩個連續(xù)通信函數(shù)的時間差,例如(send,send)、(sendto,sendto)、(socket,socket)。然后將這些時間差歸一化轉換成范圍[0,10],再劃分成3個子范圍。Safe信號的計算公式如下:
其中ΔT就是調(diào)用兩個連續(xù)通信函數(shù)的時間差。
抗原有可能就是潛在的惡意進程,是系統(tǒng)狀態(tài)的反映,它有可能就是造成系統(tǒng)狀態(tài)改變的因素,因此將產(chǎn)生API函數(shù)調(diào)用的進程PID映射成抗原。
本文簡單闡述了DCA算法的機理,描述了將DCA算法應用到僵尸網(wǎng)絡檢測中各個信號量的定義。
針對DCA算法在僵尸網(wǎng)絡檢測中應用的下一步研究,包括基于P2P協(xié)議的僵尸網(wǎng)絡、基于HTTP協(xié)議的僵尸網(wǎng)絡及無協(xié)議特征的僵尸網(wǎng)絡的信號量的定義,并對實驗結果進行分析。
[1]國家互聯(lián)網(wǎng)應急中心.CNCERT/CC.CNCERT互聯(lián)網(wǎng)安全威脅報告[R].[2013-10-17].http://www.cert.org.cn.
[2]王海龍,龔正虎,侯婕.僵尸網(wǎng)絡檢測技術研究進展[J].計算機研究與發(fā)展,2010,47(12):2037-2048.
[3]陳岳兵,馮超,張權,等.基于DCA的數(shù)據(jù)融合方法研究[J].信號處理,2011,27(1):102-105.
[4]陳岳兵,馮超,張權,等.樹突狀細胞算法原理及其應用[J].計算機工程,2010,36(8):173-176.
[5]鄧小武,李森林,胡萍.樹突狀細胞算法形式化及其在入侵檢測中的應用[J].青島科技大學學報,2013,34(4):88-92,96.
[6]AI H Y,AICKELIN U,GREENSMITH J.DCA for bot detection[C].Proc.of CEC′08,2008.