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