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