基于網(wǎng)絡(luò )引擎入侵檢測系統的研究與實(shí)現
摘要:基于濫用和基于異常的檢測模型是IDS系統兩大檢測模型,其對應的技術(shù)即為網(wǎng)絡(luò )引擎和主機代理。本文主機代理采用基于異常的模型進(jìn)行入侵檢測,與數據庫中存儲的入侵特征庫進(jìn)行比較,從而判斷是否是一次攻擊,從而實(shí)現一個(gè)網(wǎng)絡(luò )引擎可以監視具有多臺主機的整個(gè)網(wǎng)段,通過(guò)網(wǎng)絡(luò )引擎實(shí)現企業(yè)網(wǎng)絡(luò )中所有組件不受攻擊。
關(guān)鍵詞:檢測模型;網(wǎng)絡(luò )引擎;主機代理;特征庫
近年來(lái)入侵檢測系統(IDS)成為一個(gè)非?;钴S的研究領(lǐng)域。所謂入侵檢測,就是通過(guò)從計算機網(wǎng)絡(luò )或計算機系統中的若干關(guān)鍵點(diǎn)收集信息并對其進(jìn)行分析,以發(fā)現網(wǎng)絡(luò )或系統中是否有違反安全策略的行為和遭到襲擊的跡象。在二十世紀八十年代,大多數入侵者都是高水平的專(zhuān)家,他們經(jīng)常自己研究入侵系統的方法,而很少使用自動(dòng)工具和現成的代碼。雖然現在的入侵者的整體技術(shù)水平越來(lái)越不如以前,但是現在的攻擊工具卻越來(lái)越高級。這使得任何人都可以使用現成的工具來(lái)攻擊Internet上的計算機系統。入侵檢測系統的目標是將攻擊的各種表象特征化,以確認所有真正的攻擊而且又不誤認非攻擊活動(dòng)。
1 網(wǎng)絡(luò )引擎引入及設計
網(wǎng)絡(luò )引擎通過(guò)分析網(wǎng)絡(luò )上傳輸的數據包,得到可能入侵的信息。它不僅是一個(gè)數據產(chǎn)生和傳輸的工具,也具有一定的分析能力。它的功能基本上相當于一個(gè)完整的基于網(wǎng)絡(luò )的入侵檢測系統。為了提高網(wǎng)絡(luò )引擎的檢測的速度和準確度,首先,基于已知的攻擊手段來(lái)建立黑客攻擊的元數據庫,保存所有已知的黑客攻擊知識,按照其類(lèi)別進(jìn)行分類(lèi)。其次,采用建立模糊模型來(lái)對網(wǎng)絡(luò )引擎上報事件進(jìn)行分析。
網(wǎng)安入侵檢測系統中的網(wǎng)絡(luò )引擎是在windows NT平臺上,使用Visual C++6.0編程實(shí)現。網(wǎng)絡(luò )引擎分為以下幾個(gè)模塊:數據包截獲、協(xié)議分析、數據分析。結構如圖1所示。
1)數據包截獲 該模塊將網(wǎng)絡(luò )接口設置為混雜模式,將流經(jīng)網(wǎng)絡(luò )的數據包截取下來(lái),供協(xié)議分析模塊使用。由于效率的需要,有時(shí)要根據設置過(guò)濾網(wǎng)絡(luò )上的一些數據包,如特定IP、特定MAC地址、特定協(xié)議的數據包。該模塊的過(guò)濾功能的效率是該網(wǎng)絡(luò )監聽(tīng)的關(guān)鍵,因為對于網(wǎng)絡(luò )上的每一數據包都會(huì )使用該模塊過(guò)濾,判斷是否符合過(guò)濾條件。低效率的過(guò)濾程序會(huì )導致數據包丟失、分析部分來(lái)不及處理。
為提高效率,本系統采用了專(zhuān)門(mén)為數據監聽(tīng)應用程序設計的開(kāi)發(fā)包Winpcap來(lái)實(shí)現這模塊,開(kāi)發(fā)包中內置的內核層所實(shí)現的BPF過(guò)濾機制和許多接口函數,不但能夠提高監聽(tīng)部分的效率,也降低了開(kāi)發(fā)的難度。同時(shí)Winpcap是從UNIX平臺上的Libpcap移植過(guò)來(lái)的,它們具有相同的接口,減輕了不同平臺上開(kāi)發(fā)網(wǎng)絡(luò )代理的難度。Winpcap有3部分組成:一個(gè)數據包監聽(tīng)設備驅動(dòng)程序,一個(gè)低級的動(dòng)態(tài)連接庫和一個(gè)高級的靜態(tài)連接庫。數據包監聽(tīng)設備驅動(dòng)程序直接從數據鏈路層取得網(wǎng)絡(luò )數據包,并不加修改地傳遞給運行在用戶(hù)層的應用程序。數據包監聽(tīng)設備驅動(dòng)程序支持BPF過(guò)濾機制,可以靈活地設置過(guò)濾規則。低級的動(dòng)態(tài)鏈接庫運行在用戶(hù)層,它把應用程序和數據包監聽(tīng)設備驅動(dòng)程序隔離開(kāi)來(lái),使得應用程序可以不加修改地在不同Windows系統上運行。高級靜態(tài)鏈接庫和應用程序編譯在一起,它使用低級動(dòng)態(tài)鏈接庫提供的服務(wù),向應用程序提供完善的監聽(tīng)接口。
2)協(xié)議分析 協(xié)議分析的功能是辨別數據包的協(xié)議類(lèi)型,以便使用相應的數據分析程序來(lái)檢測數據包。把所有的協(xié)議構成一棵協(xié)議樹(shù),一個(gè)特定的協(xié)議是該樹(shù)結構中的一個(gè)節點(diǎn),可以用一棵二又樹(shù)來(lái)表示,如圖2所示。
一個(gè)網(wǎng)絡(luò )數據包的分析就是一條從根到某個(gè)葉子的路徑。在程序中動(dòng)態(tài)地維護和配置此樹(shù)結構即可實(shí)現非常靈活的協(xié)議分析功能。在該樹(shù)結構中可以加入自定義的協(xié)議節點(diǎn),如在HTTP協(xié)議中可以把請求URL列入該樹(shù)中作為一個(gè)點(diǎn),再將URL中不同的方法作為子節點(diǎn),這樣可以細化分析數據,提高檢測效率。樹(shù)的結點(diǎn)數據結構中包含以下信息:該協(xié)議的特征、協(xié)議名稱(chēng)、協(xié)議代號,下級協(xié)議代號,協(xié)議對應的數據分析函數鏈表。協(xié)議名稱(chēng)是該協(xié)議的唯一標志。協(xié)議代號是為了提高分析速度用的編號。下級協(xié)議代號是在協(xié)議樹(shù)中其父結點(diǎn)的編號,如TCP的下級協(xié)議是IP協(xié)議。協(xié)議特征是用于判定一個(gè)數據包是否為該協(xié)議的特征數據,這是協(xié)議分析模塊判斷該數據包的協(xié)議類(lèi)型的主要依據。數據分析函數鏈表是包含對該協(xié)議進(jìn)行檢測的所有函數的鏈表。該鏈表的每一節點(diǎn)包含可配置的數據,如是否啟動(dòng)該檢測函數等。
c++相關(guān)文章:c++教程
評論