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