魏光杏,李 華,魯頂芝
(滁州職業(yè)技術(shù)學院 信息工程學院,安徽 滁州 239000)
隨著互聯(lián)網(wǎng)行業(yè)的快速發(fā)展,互聯(lián)網(wǎng)在人們的日常生活、學習、工作、娛樂等方面的影響越來越大,這就使得網(wǎng)絡(luò)的安全管理問題變得尤為重要。當前學者們研究并開發(fā)出不少關(guān)于網(wǎng)絡(luò)安全及入侵分析的工具[1],功能也比較強大,能夠用來捕獲多種數(shù)據(jù)包并且可以顯示包的詳細信息。
Libpcap是一個功能強大的函數(shù)庫,以此為基礎(chǔ),學者們設(shè)計開發(fā)了較多網(wǎng)絡(luò)分析工具。Libpcap最主要的優(yōu)點是可以給系統(tǒng)提供獨立的用戶級別網(wǎng)絡(luò)數(shù)據(jù)包捕獲接口[2]。其工作原理可以解釋為當有數(shù)據(jù)包到達接口,就會通過網(wǎng)絡(luò)分接口將數(shù)據(jù)發(fā)給過濾器,最后過濾器會按照制定好的過濾策略對捕獲到的數(shù)據(jù)包進行匹配,成功匹配的數(shù)據(jù)會同時寫入內(nèi)核和用戶緩沖區(qū),反之就直接拋棄[3]。本文采用基于Libpcap自帶的強大函數(shù)庫設(shè)計了一款簡潔、方便的網(wǎng)絡(luò)抓包分析工具,經(jīng)過大量實驗驗證,取得了較好的應(yīng)用效果,大大減少了病毒入侵網(wǎng)絡(luò)的概率。
近些年,隨著網(wǎng)絡(luò)基礎(chǔ)設(shè)施的不斷完善,網(wǎng)絡(luò)的普及率和用戶數(shù)量逐年升高,不斷增加的網(wǎng)絡(luò)數(shù)據(jù)給運營商的管理帶來了挑戰(zhàn)。此外,來自網(wǎng)絡(luò)世界的惡意攻擊,給用戶和運營商帶來了很多損失,這些都讓網(wǎng)絡(luò)管理員頭疼不已[4]。因此,能夠?qū)W(wǎng)絡(luò)數(shù)據(jù)進行分析,識別網(wǎng)絡(luò)世界的攻擊,具有非常重要的意義。而且,網(wǎng)絡(luò)管理員還能根據(jù)分析的結(jié)果,了解當前網(wǎng)絡(luò)環(huán)境中的用戶情況,以此來優(yōu)化網(wǎng)絡(luò)的管理[5]。例如,根據(jù)協(xié)議分析的結(jié)果,了解用戶主要使用哪些應(yīng)用,哪些應(yīng)用使用率高。從而對部分應(yīng)用限制帶寬,防止發(fā)生網(wǎng)絡(luò)擁塞現(xiàn)象,優(yōu)化網(wǎng)絡(luò)的運行環(huán)境。網(wǎng)絡(luò)管理員還可以通過分析工具識別出網(wǎng)絡(luò)入侵攻擊,并盡早做出應(yīng)對的策略,減少損失。這就要求一邊對日常網(wǎng)絡(luò)進行監(jiān)視,一邊能隨時對數(shù)據(jù)包進行捕獲分析。因此,入侵分析工具需要具備數(shù)據(jù)的捕獲、分析、識別和顯示的功能,如圖1所示,具體需求如下。
圖1 系統(tǒng)功能
(1)為了應(yīng)對有多個網(wǎng)卡的網(wǎng)絡(luò)設(shè)備,該系統(tǒng)需要能夠查找到網(wǎng)絡(luò)設(shè)備上的所有網(wǎng)卡,便于選擇網(wǎng)卡,對選擇的網(wǎng)卡進行捕獲分析。
(2)能夠?qū)Σ东@到的數(shù)據(jù)進行分析,得到數(shù)據(jù)的五元組信息。
(3)能夠通過與特征值對比,識別出應(yīng)用層的協(xié)議。
(4)能夠?qū)ψR別出的應(yīng)用層協(xié)議和計算出的數(shù)據(jù)流量進行統(tǒng)計。
(5)擁有交互性良好的UI界面,能夠?qū)⑽逶M信息和協(xié)議分析的結(jié)果等展示出來。便于操作和管理。
為了完成對數(shù)據(jù)的分析識別功能,并結(jié)合模塊化的設(shè)計思想,本網(wǎng)絡(luò)入侵分析工具設(shè)計成4個模塊:數(shù)據(jù)采集模塊、數(shù)據(jù)分析識別模塊、通信模塊和信息顯示模塊。其中,數(shù)據(jù)采集模塊是整個工具的基礎(chǔ),該模塊不斷捕獲流過網(wǎng)絡(luò)設(shè)備的數(shù)據(jù)流;信息識別模塊則是整個設(shè)計的核心,能夠通過對比特征值,對捕獲的數(shù)據(jù)包進行應(yīng)用層協(xié)議的識別;通信模塊主要將數(shù)據(jù)識別模塊獲得的結(jié)果不斷傳遞到信息顯示模塊中,并捕獲數(shù)據(jù)包的五元組信息;顯示模塊通過UI界面向用戶展示分析的結(jié)果。
此模塊是整個設(shè)計的基礎(chǔ),主要將數(shù)據(jù)捕獲并存儲到文件中。設(shè)計的關(guān)鍵是順利捕獲到數(shù)據(jù)。根據(jù)有關(guān)需求分析可知,采用Libpcap的庫函數(shù)完成數(shù)據(jù)捕獲。Libpcap主要由兩部分組成,分別是網(wǎng)絡(luò)分接口和過濾規(guī)則。前者負責收集驅(qū)動中的數(shù)據(jù),后者負責決定是否接收該數(shù)據(jù)包。Libpcap的數(shù)據(jù)包捕獲大致分為3個部分:面向底層的數(shù)據(jù)包捕獲、面向中間內(nèi)核層的數(shù)據(jù)包過濾以及面向應(yīng)用層的用戶接口。Libpcap的數(shù)據(jù)包獲得流程大致如下:網(wǎng)絡(luò)接口層的網(wǎng)絡(luò)分接口會從驅(qū)動程序中獲取數(shù)據(jù)的備份,隨后上交給內(nèi)核,如果設(shè)置了過濾規(guī)則,就根據(jù)過濾規(guī)則進行過濾,隨后將經(jīng)過過濾的數(shù)據(jù)發(fā)送給內(nèi)核緩沖區(qū),最后發(fā)送給上層的應(yīng)用程序;如果沒有設(shè)置過濾規(guī)則,則將所有數(shù)據(jù)包直接上傳到內(nèi)核緩沖區(qū),之后全部上交給用戶緩沖區(qū)。Libpcap的捕獲原理如圖2所示。而交互界面則是基于QT設(shè)計,利用QT中的自帶組件設(shè)計界面較方便,并且QT含有的信號槽機制便于各個模塊之間的通信。
圖2 Libpcap捕獲原理
此模塊是對捕獲到的數(shù)據(jù)進行分析,再對分析后的數(shù)據(jù)進行識別。設(shè)計難點是如何識別出數(shù)據(jù)包協(xié)議、數(shù)據(jù)包的業(yè)務(wù)以及DOS攻擊等。
對數(shù)據(jù)包協(xié)議的識別是對傳輸層協(xié)議的識別,先要將數(shù)據(jù)包解封裝,基于端口去識別對應(yīng)的網(wǎng)絡(luò)協(xié)議[6]。TCP/IP協(xié)議數(shù)據(jù)包一般由應(yīng)用層、傳輸層、網(wǎng)絡(luò)層、數(shù)據(jù)鏈路層、物理層封裝而成,因此要對數(shù)據(jù)進一步分析,需要從底層將數(shù)據(jù)包一步步拆封裝。當數(shù)據(jù)到達時,先會交給數(shù)據(jù)鏈路層,數(shù)據(jù)鏈路層會與數(shù)據(jù)包的目的Mac地址匹配,如果成功就將Mac幀頭解開,交給上層的網(wǎng)絡(luò)層,網(wǎng)絡(luò)層會查看數(shù)據(jù)的目的IP地址與自己是否相同,如果相同,去掉IP頭交給傳輸層,傳輸層解開對應(yīng)的頭部后上傳給應(yīng)用層,最后當數(shù)據(jù)解封裝后,再對信息進行識別。
根據(jù)前面的分析可知,當入侵數(shù)據(jù)量很大時,會在數(shù)據(jù)捕獲和信息顯示兩模塊之間產(chǎn)生較大時延,因此,如何降低數(shù)據(jù)捕獲和信息顯示兩模塊之間的時延也是需要考慮的問題之一。本模塊設(shè)計中采用多線程開發(fā)技術(shù),節(jié)省系統(tǒng)資源,降低時延。采用QT的信號與槽機制來完成對象之間的通信,信號和槽機制可以減少指針的使用,使程序更加簡潔。在數(shù)據(jù)采集的對象中使用了QT中的信號函數(shù),又在顯示模塊中使用了QT中的槽函數(shù)去接收信號。通過連接函數(shù)將兩個函數(shù)連接起來,只要用戶點擊捕獲選項,捕獲線程會觸發(fā)信號函數(shù)將信息發(fā)送出去,與其相關(guān)聯(lián)的槽函數(shù)會接收到信息,并做出相應(yīng)的處理。
系統(tǒng)設(shè)計的最終目的是提供給用戶使用,因此需要擁有一個界面化窗口以實現(xiàn)用戶可視化管理。本設(shè)計的信息顯示模塊以UI可視化界面向用戶直觀地展示捕獲的數(shù)據(jù)包的相關(guān)信息。在信息顯示模塊中,會展示數(shù)據(jù)包的多種信息,包括數(shù)據(jù)包的五元組信息、數(shù)據(jù)流量的統(tǒng)計、協(xié)議識別的結(jié)果以及數(shù)據(jù)包應(yīng)用層業(yè)務(wù)的統(tǒng)計結(jié)果等。通過展示數(shù)據(jù)包的多種信息,可以從多個角度反映網(wǎng)絡(luò)的運行情況。
信息顯示模塊的功能包括網(wǎng)卡選擇功能、開始捕獲功能、停止捕獲功能。網(wǎng)卡選擇功能是將查找出的所有網(wǎng)絡(luò)設(shè)備羅列出來,以供選擇特定網(wǎng)卡進行數(shù)據(jù)包捕獲,開始捕獲功能是控制系統(tǒng)進行捕獲,停止捕獲功能是停止數(shù)據(jù)包捕獲,并對捕獲的數(shù)據(jù)包進行協(xié)議識別和結(jié)果統(tǒng)計。
運行入侵分析工具軟件后,彈出主界面。主界面導(dǎo)航欄有選擇網(wǎng)卡、開始捕獲、停止3個選項。選擇網(wǎng)卡選項是將網(wǎng)絡(luò)設(shè)備上所有的網(wǎng)卡信息羅列出來,以供用戶選擇想要捕獲的網(wǎng)卡。開始捕獲選項,是控制捕獲進程的選項,點擊該選項,捕獲進程就會被開啟,隨即開始捕獲數(shù)據(jù),并且在開啟捕獲進程的同時,捕獲模塊的信號函數(shù)也會被調(diào)用,完成捕獲模塊和顯示模塊之間的通信。停止選項,點擊后會立刻停止捕獲進程,開啟分析識別進程,對捕獲的數(shù)據(jù)進行協(xié)議識別、流量統(tǒng)計等操作。界面的左邊會顯示捕獲的數(shù)據(jù)的時間、數(shù)據(jù)包標識、來源IP地址、目標IP地址、協(xié)議、發(fā)送長度等基本信息,右邊使用圖形化展示流量統(tǒng)計、業(yè)務(wù)統(tǒng)計、數(shù)據(jù)類型統(tǒng)計3塊詳細信息,狀態(tài)欄中有相關(guān)操作的信息提示。
入侵分析工具的測試是在Linux系統(tǒng)下使用netstress模擬DDOS網(wǎng)絡(luò)攻擊目標主機。從測試過程看,當運行入侵分析工具軟件時,用戶根據(jù)需求選擇系統(tǒng)中羅列的網(wǎng)卡進行檢測及捕獲數(shù)據(jù)。入侵分析工具對捕獲的數(shù)據(jù)進行篩選,對不滿足規(guī)則的數(shù)據(jù)進行隔離并實時跟蹤,對隔離較多同一數(shù)據(jù)發(fā)出警報。另外,入侵分析工具系統(tǒng)會對同一目的地址的數(shù)據(jù)進行統(tǒng)計,若在極短時間內(nèi)數(shù)量超過設(shè)定的最大值,入侵分析工具會自動判定為有木馬攻擊,并在狀態(tài)欄給出警報提示,實現(xiàn)了對數(shù)據(jù)的實時檢測與響應(yīng),起到了主動防御作用。
伴隨著互聯(lián)網(wǎng)的快速發(fā)展,能夠迅速抓取分析數(shù)據(jù)包以及識別網(wǎng)絡(luò)攻擊成為網(wǎng)絡(luò)日常管理的重要組成部分。網(wǎng)絡(luò)管理員可以通過網(wǎng)絡(luò)分析工具,及時了解當前所處網(wǎng)絡(luò)環(huán)境的狀態(tài),及時發(fā)現(xiàn)問題,做出應(yīng)對措施,降低損失。本文采用基于Libpcap自帶的強大函數(shù)庫設(shè)計了一款簡潔、方便的網(wǎng)絡(luò)抓包分析工具,經(jīng)實驗驗證,該工具較好地實現(xiàn)了數(shù)據(jù)包抓包分析的功能,基本滿足了小型網(wǎng)絡(luò)分析的需求,效果較好,為下一步的網(wǎng)絡(luò)入侵防御提供了依據(jù)。