吳國東 黃牛 劉巍
(武漢第二船舶設計研究所,武漢 )
隨著現(xiàn)代網(wǎng)絡技術的發(fā)展,使用網(wǎng)絡的用戶越來越多,網(wǎng)絡流量亦越來越大。近年來,網(wǎng)絡安全面臨著一個主要的威脅,就是通過網(wǎng)絡傳播、無需人工干預的惡意代碼—蠕蟲[1]。網(wǎng)絡蠕蟲導致網(wǎng)絡流量的突然急劇增大,迅速耗盡運營商網(wǎng)絡的所有帶寬資源,造成普通用戶的正常通信阻斷,進而癱瘓用戶業(yè)務甚至整個互聯(lián)網(wǎng)通過破壞寄宿的主機資料、植入后門(backdoor)等手段危害終端主機的安全。而且在感染的過程中會產(chǎn)生大量的數(shù)據(jù)報,這些數(shù)據(jù)報給網(wǎng)絡交換設備帶來了沉重的負擔,致使整個網(wǎng)絡效率降低,甚至變成一種阻斷服務攻擊。
由于網(wǎng)絡蠕蟲給網(wǎng)絡的運營和維護帶來嚴重的威脅,因而學術界早已將該問題列為網(wǎng)絡安全議題之一。國內(nèi)外學者對網(wǎng)絡蠕蟲進行了大量的研究,取得一定的成果[2,3,4,5]。
為了方便地獲得網(wǎng)絡中路由器中轉(zhuǎn)發(fā)的數(shù)據(jù)報,思科公司開發(fā)了專門用于網(wǎng)絡流量的NetFlow協(xié)議,通過NetFlow可以實時獲取網(wǎng)絡流量詳情,通過分析異常流量,可以探測出網(wǎng)絡蠕蟲的存在[6,7]。本文基于NetFlow協(xié)議、網(wǎng)絡蠕蟲的傳播特征提出一個檢測網(wǎng)絡蠕蟲的算法。
作為業(yè)界領先的互聯(lián)網(wǎng)解決方案提供商,思科公司不但提供了性能卓越的網(wǎng)絡設備,還同步配套研發(fā)了專門針對客戶對網(wǎng)絡流量分析需求的NetFlow技術。NetFlow技術能對IP/MPLS網(wǎng)絡的通信流量進行詳細的分析。為對網(wǎng)絡中不同類型的數(shù)據(jù)流進行準確的流量分析,首先需要對網(wǎng)絡中傳輸?shù)母鞣N類型數(shù)據(jù)報進行區(qū)分。由于IP網(wǎng)絡的非面向連接特性,網(wǎng)絡中不同類型的通信可能是任意一臺終端設備向另一臺終端設備發(fā)送的一組IP數(shù)據(jù)報,這組數(shù)據(jù)報實際上就構(gòu)成了網(wǎng)絡中的一個數(shù)據(jù)流 (Flow)。如果管理系統(tǒng)能對傳送的所有數(shù)據(jù)流進行區(qū)分,準確記錄傳送時間、傳送方向和數(shù)據(jù)流的大小,就可以對所有流量進行分析和統(tǒng)計。
目前使用較多的NetFlow版本為V5, 一個NetFlow 數(shù)據(jù)報由1個報頭和1~30個流記錄組成。NetFlow數(shù)據(jù)報的主要內(nèi)容如表1所示:
表1 NetFlow數(shù)據(jù)報的主要內(nèi)容
網(wǎng)絡中支持NetFlow協(xié)議的設備(如Cisco路由器)產(chǎn)生并發(fā)出NetFlow數(shù)據(jù)報,通過配置發(fā)包設備的端口可以將數(shù)據(jù)報輸出到數(shù)據(jù)采集設備上,數(shù)據(jù)采集設備抓取NetFlow數(shù)據(jù)報并解析,將解析的數(shù)據(jù)插入至數(shù)據(jù)庫中。為了減少網(wǎng)絡設備的負擔,路由器發(fā)出的NetFlow數(shù)據(jù)報是設備對高速網(wǎng)絡端口進行抽樣的結(jié)果,故保存足夠的歷史數(shù)據(jù)以進行統(tǒng)計分析相對于單條數(shù)據(jù)分析更有意義。
具體來說,利用NetFlow實現(xiàn)網(wǎng)絡監(jiān)控系統(tǒng),應該包含如下四個部分:
(1)產(chǎn)生NetFlow流量數(shù)據(jù)的路由器或交換設備NFD(NetFlow Device);
(2)采集流量數(shù)據(jù)的設備NFCD(NetFlow Collector Device);
(3)數(shù)據(jù)庫DB(Database);
(4) 進行流量統(tǒng)計分析的設備NFAD(NetFlow Analyzer Device)。
這些設備的整體結(jié)構(gòu)如圖1所示。
圖1 網(wǎng)絡流量采集及分析系統(tǒng)架構(gòu)
由于蠕蟲病毒會按照特定的程序去感染其他主機,因而發(fā)出的數(shù)據(jù)報是有一定的特征的,如數(shù)據(jù)報的協(xié)議、端口、數(shù)據(jù)報的長度等。在流量監(jiān)測系統(tǒng)中,網(wǎng)絡中的數(shù)據(jù)報將會通過NetFlow協(xié)議發(fā)送到NetFlow采集設備中,這樣,可以通過分析NetFlow數(shù)據(jù)報特征來檢測蠕蟲。表2列出的是一些常見的蠕蟲病毒的NetFlow數(shù)據(jù)報特征:
表2 常見蠕蟲病毒的NetFlow數(shù)據(jù)報特征
由表2可以看出,通過數(shù)據(jù)報特征能較快地發(fā)現(xiàn)蠕蟲病毒,但是蠕蟲病毒變異速度非???,如果沒有及時獲取新的蠕蟲病毒的數(shù)據(jù)報特征則會導致蠕蟲病毒的漏報,因此,我們必須研究蠕蟲爆發(fā)時的網(wǎng)絡流量特征。根據(jù)各項研究資料,蠕蟲病毒傳播時的特征如下:
(1)通過特定協(xié)議/端口請求連接大量的IP地址。蠕蟲為了盡快感染其他主機,會向其他IP發(fā)送特定協(xié)議的數(shù)據(jù)報;
(2)大量失敗的連接請求。因為蠕蟲通常對攻擊的IP缺乏足夠的信息,如攻擊IP的相應端口是否開放、IP是否提供了相應的服務等,可能使得攻擊連接請求失敗。
蠕蟲爆發(fā)時,應用NetFlow分析方法,可以根據(jù)病毒的NetFlow數(shù)據(jù)報特征或者網(wǎng)絡流量特征快速定位感染病毒的IP地址,并參考NetFlow數(shù)據(jù)流的其它特征在網(wǎng)絡設備上采取相應的限制、過濾措施,從而達到抑制病毒流量傳播的目的。
根據(jù)已有經(jīng)驗和資料,建立常見蠕蟲病毒NetFlow數(shù)據(jù)報特征表WormTable,表中應該包含病毒編號、名稱和各項特征。
步驟0:流量采集設備NFCD在每采集到一個數(shù)據(jù)報,都檢查該數(shù)據(jù)報的NetFlow數(shù)據(jù)報特征,通過查表WormTable來實現(xiàn)對已知病毒的快速、準確地報告;對于未明的蠕蟲病毒,按如下步驟分析其流量特征,進而判斷蠕蟲的存在:
步驟1:設定檢測蠕蟲病毒的窗口時間θ,根據(jù)觀測正常網(wǎng)絡流中連接請求的失敗率,設定連接請求失敗率下限ξ,以及允許同一個IP在θ時間內(nèi)訪問同一子網(wǎng)中不同目的IP的個數(shù)λ(各參數(shù)的指定因特定的網(wǎng)絡而宜);
步驟2:每過θ時間統(tǒng)計一下過去的θ時間內(nèi)在數(shù)據(jù)庫是否存在這樣的流紀錄,這些流紀錄的源IP地址相同,但目的IP地址不同,而且目的地址或者是保留的IP地址,或者不同的目的地址的個數(shù)為η(η>=λ),如果存在這樣的源IP地址集合,則以集合WormSet記之,轉(zhuǎn)入步驟3進一步分析,否則本次分析結(jié)束,轉(zhuǎn)步驟4;
步驟3:如果WormSet=ф,轉(zhuǎn)步驟4;否則,獲取ip(ip ∈ W ormSet )并置WormSet = WormSet -{ip},查詢數(shù)據(jù)庫,找出所有在θ時間內(nèi)目的地址為ip的流紀錄的條數(shù)η’(即在窗口時間內(nèi)對可疑ip有響應,說明ip請求連接的主機及協(xié)議是存在的),通過η、η’計算連接請求的失敗率ξ’=1-η’/η,如果ξ’> ξ,說明ip請求連接的失敗率過高,偏離正常情況,提示用戶可能存在未明的蠕蟲病毒,繼續(xù)步驟3分析;
步驟4:分析完成,將新發(fā)現(xiàn)的病毒添加至WormTable表,正常退出。
應用本算法測試了一個網(wǎng)絡。網(wǎng)絡情況是:30臺主機,通過cisco路由器連入局域網(wǎng),該路由器作為NetFlow設備將數(shù)據(jù)發(fā)送到NetFlow采集器,并由采集器將數(shù)據(jù)存入Oracle數(shù)據(jù)庫。由另一子網(wǎng)內(nèi)一臺主機用Red Code(紅色代碼)攻擊該子網(wǎng)內(nèi)主機,網(wǎng)絡監(jiān)控發(fā)現(xiàn)并成功提示可能為Red Code蠕蟲。
實際上,通過流量統(tǒng)計特征只能得到可能存在蠕蟲病毒,并不能完全確定有蠕蟲病毒。因為有些網(wǎng)絡行為和蠕蟲爆發(fā)時的特征幾乎一樣。如進行網(wǎng)絡拓撲發(fā)現(xiàn)的時候,需要通過運行拓撲發(fā)現(xiàn)軟件的主機逐一去ping網(wǎng)絡中所有的主機和設備,這時,在網(wǎng)絡中就存在大量的ICMP數(shù)據(jù)報,都是從一臺機器上發(fā)出,這些數(shù)據(jù)報企圖和網(wǎng)絡中的所有IP建立連接,必然有大量的連接是失敗的,整個過程的特征和蠕蟲病毒爆發(fā)時的特征完全相同。很顯然,如果要得到完全準確的蠕蟲檢測報告,需要根據(jù)實際情況進行分析。
[1] Kienzle D M , Elder M C. Recent worms: a survey and trends[C]. WORM′03-Proceedings of the 2003 ACM Workshop on Rapid Malcode. New York: ACM Press ,2003 : 1-10.
[2] 張冶江, 李之棠, 陸垂偉等. P2P蠕蟲的分析與對策[J].華中科技大學學報(自然科學版), 2007, 35(增刊I): 228-231.
[3] Chen G, Gray R S. Simulating non-scanning worms on peer-to-peer networks[C].INFOSCAL E’06-Proceedings of the First International Conference on Scalable Information Systems. New York: ACM Press,2006 : 29-41.
[4] Weaver N , Paxson V , Staniford S and Cunningham R.A taxonomy of computer worms[C]. WORM’03-Proceedings of the 2003 ACM Workshop on Rapid Malcode. New York: ACM Press , 2003 : 11-18.
[5] 王煒, 羅代升, 王欣. 高效的蠕蟲對抗代碼結(jié)構(gòu)和生成方法[J]. 計算機工程, 2007,33(16):104-108.
[6] 鄒柏賢. 網(wǎng)絡流量正常行為模型的建立[J]. 計算機應用, 2002, 22(7): 18-20.
[7] 曾 嘉, 金躍輝, 葉小衛(wèi). 基于NetFlow的網(wǎng)絡異常流量檢測[J]. 微計算機應用, 2007, 28(7): 709-713.