專利名稱:基于序列模式挖掘的程序級入侵檢測系統(tǒng)和方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種用于計(jì)算機(jī)網(wǎng)絡(luò)安全的基于序列模式挖掘的程序級入侵檢測系統(tǒng)和方法,屬于網(wǎng)絡(luò)信息安全技術(shù)領(lǐng)域。
背景技術(shù):
隨著計(jì)算機(jī)網(wǎng)絡(luò)的迅速普及和各種網(wǎng)絡(luò)新業(yè)務(wù)的不斷興起,網(wǎng)絡(luò)安全問題已經(jīng)逐漸滲透到政治、軍事、財(cái)政、經(jīng)濟(jì)、產(chǎn)業(yè)、文化、教育等社會生活各個領(lǐng)域,并且變得越來越嚴(yán)峻。近年來,網(wǎng)絡(luò)安全事件數(shù)量不斷上升,尤其是近兩三年呈現(xiàn)出急劇增長的趨勢。由于計(jì)算機(jī)網(wǎng)絡(luò)系統(tǒng)的各個部分在設(shè)計(jì)、運(yùn)行和使用過程中都會存在某些漏洞,而且,目前還沒有經(jīng)濟(jì)可行的辦法能夠完全消除這些隱患,因而有效的入侵檢測技術(shù)成為保證網(wǎng)絡(luò)安全的必不可少的手段。入侵檢測系統(tǒng)(IDS,Intrusion Detection Systems)是繼防火墻、數(shù)據(jù)加密等傳統(tǒng)安全保護(hù)措施后的新一代網(wǎng)絡(luò)安全產(chǎn)品,它是通過監(jiān)控計(jì)算機(jī)網(wǎng)絡(luò)系統(tǒng)的狀態(tài)、行為以及系統(tǒng)的使用情況,來檢測系統(tǒng)中發(fā)生的各種入侵和攻擊行為。隨著國內(nèi)網(wǎng)絡(luò)應(yīng)用的進(jìn)一步擴(kuò)展,包括政府、軍隊(duì)、企事業(yè)單位在內(nèi)的社會各個方面,都將對IDS產(chǎn)生很大的需求;所以,研制具有自主知識產(chǎn)權(quán)的高性能IDS是當(dāng)前的迫切需要。
與諸如防火墻、數(shù)據(jù)加密、認(rèn)證鑒權(quán)等高度成熟的網(wǎng)絡(luò)安全技術(shù)相比,目前的入侵檢測技術(shù)還存在相當(dāng)多的缺陷,主要是檢測準(zhǔn)確率比較低,檢測速度較慢,自學(xué)習(xí)能力不強(qiáng)。
目前的入侵檢測技術(shù)主要分為三類誤用檢測、異常檢測和混合檢測。誤用檢測是將已知的攻擊行為表示為一種模式或特征,并將攻擊模式(特征)存儲在知識庫中,檢測時通過將被監(jiān)測系統(tǒng)或用戶的實(shí)際行為模式與攻擊模式之間的匹配來判斷是否存在入侵(本發(fā)明中,將“入侵”和“攻擊”作為同義詞使用);誤用檢測的關(guān)鍵是如何描述和表示攻擊行為,以及如何提高數(shù)據(jù)采集和模式匹配的速度和效率。目前商用的IDS多數(shù)采用誤用檢測技術(shù),這種技術(shù)對已知攻擊有很強(qiáng)的檢測能力,其缺點(diǎn)是知識庫需要不斷更新,而且難以檢測出未知的、新出現(xiàn)的攻擊方式。異常檢測是對系統(tǒng)或用戶的正常行為(輪廓)進(jìn)行分析和表示,并建立關(guān)于正常行為的知識庫,檢測時如果被監(jiān)測系統(tǒng)或用戶的實(shí)際行為較大程度地偏離了其正常行為(輪廓),則認(rèn)為有入侵存在。異常檢測的優(yōu)點(diǎn)是不需要過多有關(guān)系統(tǒng)缺陷的知識,具有較強(qiáng)的適應(yīng)性,能夠檢測出未知或新出現(xiàn)的攻擊方式,其主要缺點(diǎn)是虛警率較高。混合檢測是將誤用檢測和異常檢測綜合在一起的檢測技術(shù),通常具有更好的檢測性能,但在實(shí)際應(yīng)用中這種技術(shù)較為復(fù)雜。
根據(jù)審計(jì)數(shù)據(jù)的來源,入侵檢測系統(tǒng)IDS可分為主機(jī)型、網(wǎng)絡(luò)型和混合型三種系統(tǒng)。主機(jī)型IDS通過分析主機(jī)中的審計(jì)數(shù)據(jù)(如操作系統(tǒng)的審計(jì)記錄、系統(tǒng)日志等)來檢測入侵,這種系統(tǒng)所監(jiān)控的對象一般是單個主機(jī)(服務(wù)器)。網(wǎng)絡(luò)型IDS的審計(jì)數(shù)據(jù)則來自網(wǎng)絡(luò)上的原始數(shù)據(jù)包,該類系統(tǒng)通常擔(dān)負(fù)著保護(hù)一個網(wǎng)段的任務(wù)?;旌闲虸DS能夠同時分析來自主機(jī)和來自網(wǎng)絡(luò)的審計(jì)數(shù)據(jù),一般采用分布式結(jié)構(gòu),這種IDS通常用于保護(hù)異構(gòu)或大型的網(wǎng)絡(luò)系統(tǒng)。
近年來,利用計(jì)算機(jī)軟件系統(tǒng)中特權(quán)程序的漏洞實(shí)施攻擊已經(jīng)成為一種相當(dāng)普遍的入侵方式。特權(quán)程序(如Unix系統(tǒng)中以Root權(quán)限運(yùn)行的程序)一般具有較高的權(quán)限,入侵者可以利用這些程序在設(shè)計(jì)過程中遺留下來的漏洞和缺陷,獲得整個系統(tǒng)的控制權(quán),進(jìn)而實(shí)施攻擊,這將會嚴(yán)重威脅到整個系統(tǒng)的安全。目前,這類攻擊方式和工具越來越多;例如,F(xiàn)inger服務(wù)程序中的一個缺陷可以使攻擊者利用“緩沖區(qū)溢出”的方法,欺騙服務(wù)程序執(zhí)行攻擊者安排的惡意代碼。近年來,通過監(jiān)視特權(quán)程序的運(yùn)行情況來發(fā)現(xiàn)和識別入侵行為已成為主機(jī)型IDS的主要檢測手段之一?,F(xiàn)有的研究表明,一個特權(quán)程序在正常運(yùn)行時所產(chǎn)生的系統(tǒng)調(diào)用序列是基本一致的;但是,當(dāng)程序不正常運(yùn)行時(即程序遭受攻擊、被篡改或執(zhí)行不經(jīng)常執(zhí)行的程序分枝等),它所產(chǎn)生的系統(tǒng)調(diào)用序列與正常運(yùn)行時的序列有較為明顯的差異。
本發(fā)明涉及的入侵檢測系統(tǒng)IDS是一種通過監(jiān)視特權(quán)程序的運(yùn)行情況來檢測入侵的主機(jī)型IDS,該系統(tǒng)采用基于數(shù)據(jù)挖掘的異常檢測技術(shù)。數(shù)據(jù)挖掘(DM,data mining)是指從大量的、不完全的、有噪聲的、模糊的數(shù)據(jù)中,提取未知的、有效的、可用的信息。數(shù)據(jù)挖掘與傳統(tǒng)的數(shù)據(jù)分析(例如查詢、報(bào)表、聯(lián)機(jī)應(yīng)用分析)的本質(zhì)區(qū)別在于數(shù)據(jù)挖掘是在沒有明確假設(shè)的前提下去挖掘信息。數(shù)據(jù)挖掘所得到的信息具有預(yù)先未知性、有效性和可用性三個主要特征。數(shù)據(jù)挖掘通常包括三個步驟數(shù)據(jù)準(zhǔn)備、挖掘、結(jié)果解釋和評價。
參見圖1,介紹數(shù)據(jù)挖掘的三個常規(guī)步驟。其中數(shù)據(jù)準(zhǔn)備工作一般包括數(shù)據(jù)選擇(date selection)、數(shù)據(jù)預(yù)處理(data preprocessing)和數(shù)據(jù)變換(datatransformation)。數(shù)據(jù)選擇的目的是確定挖掘任務(wù)的操作對象,即目標(biāo)數(shù)據(jù)(target data);在不同的應(yīng)用領(lǐng)域,目標(biāo)數(shù)據(jù)的結(jié)構(gòu)和內(nèi)容不盡相同,可能是關(guān)系數(shù)據(jù)庫、面向?qū)ο髷?shù)據(jù)庫、時態(tài)數(shù)據(jù)庫、文本數(shù)據(jù)、Web數(shù)據(jù)、圖像和視頻數(shù)據(jù)等。數(shù)據(jù)預(yù)處理包括消除噪聲、數(shù)據(jù)類型轉(zhuǎn)換、消除重復(fù)紀(jì)錄等。數(shù)據(jù)變換的目的通常是消減數(shù)據(jù)維數(shù)(即從初始特征中找出真正有用的特征,以減少數(shù)據(jù)挖掘時所要用到的特征或變量個數(shù)),或者將數(shù)據(jù)變換成挖掘算法能夠處理的形式。在挖掘階段,首先要明確數(shù)據(jù)挖掘的任務(wù)和目的,在此基礎(chǔ)上選擇相應(yīng)的算法,并實(shí)施挖掘操作;數(shù)據(jù)挖掘的任務(wù)主要包括數(shù)據(jù)總結(jié)、分類、聚類、相關(guān)性分析、偏差分析等;確定數(shù)據(jù)挖掘算法是挖掘工作的核心,在選擇算法時,除了要考慮挖掘任務(wù)和實(shí)際運(yùn)行系統(tǒng)的要求之外,還應(yīng)考慮所處理的數(shù)據(jù)的特點(diǎn)。結(jié)果解釋和評價的操作可由用戶或者機(jī)器完成;這個階段的主要工作是對挖掘階段得出的結(jié)果進(jìn)行解釋、評價和處理,例如將結(jié)果轉(zhuǎn)換為用戶易懂的另一種表示,判斷挖掘出的模式是否滿足要求,剔除冗余或無關(guān)的模式,將挖掘結(jié)果可視化。圖中上端帶有箭頭的連線表示其中每個步驟都可以通過上端連線跳至其后面的任何一個步驟,因?yàn)閷τ谝淮尉唧w的數(shù)據(jù)挖掘操作而言,該圖中的某個或某些步驟是可以省略的。
數(shù)據(jù)挖掘技術(shù)主要有序列模式挖掘、關(guān)聯(lián)規(guī)則挖掘、模糊聚類、回歸分析、粗糙集等等。本發(fā)明涉及的入侵檢測系統(tǒng)IDS采用了序列模式挖掘技術(shù)。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明的目的是提供一種基于序列模式挖掘的程序級入侵檢測系統(tǒng)和方法,該系統(tǒng)為軟件產(chǎn)品,配置在所要監(jiān)控的網(wǎng)絡(luò)服務(wù)器上;采用基于數(shù)據(jù)挖掘的異常檢測技術(shù),通過監(jiān)控網(wǎng)絡(luò)服務(wù)器中特權(quán)程序的運(yùn)行情況來檢測網(wǎng)絡(luò)中的各種攻擊活動。該系統(tǒng)以特權(quán)程序運(yùn)行時所產(chǎn)生的系統(tǒng)調(diào)用(systemcall)作為審計(jì)數(shù)據(jù),利用數(shù)據(jù)挖掘技術(shù)中的序列模式表示一個特權(quán)程序的正常行為,根據(jù)序列的支持度(support)或可信度(confidence)在訓(xùn)練數(shù)據(jù)中挖掘正常序列模式,并建立相應(yīng)的正常序列模式庫;進(jìn)行檢測時通過將當(dāng)前序列模式和正常序列模式進(jìn)行比較和匹配來識別攻擊行為,從而引起安全管理員的密切注意和采取相應(yīng)的處理措施。
為了達(dá)到上述目的,本發(fā)明提供了一種基于序列模式挖掘的程序級入侵檢測系統(tǒng),該系統(tǒng)配置在需要監(jiān)控的網(wǎng)絡(luò)服務(wù)器上,利用特權(quán)程序運(yùn)行時所產(chǎn)生的系統(tǒng)調(diào)用作為審計(jì)數(shù)據(jù),通過監(jiān)控網(wǎng)絡(luò)服務(wù)器中特權(quán)程序的運(yùn)行情況,采用基于數(shù)據(jù)挖掘的異常檢測技術(shù)來檢測網(wǎng)絡(luò)服務(wù)器中是否發(fā)生入侵;其技術(shù)方案是該系統(tǒng)包括有下述組件控制模塊,負(fù)責(zé)設(shè)置系統(tǒng)的工作狀態(tài)和各種參數(shù),并對數(shù)據(jù)采集和預(yù)處理模塊、訓(xùn)練模塊、檢測模塊和整個系統(tǒng)的運(yùn)行進(jìn)行控制;數(shù)據(jù)采集和預(yù)處理模塊,負(fù)責(zé)從服務(wù)器中獲取原始的訓(xùn)練數(shù)據(jù)或?qū)徲?jì)數(shù)據(jù),即程序運(yùn)行過程中所產(chǎn)生的系統(tǒng)調(diào)用,并將這些原始訓(xùn)練數(shù)據(jù)或?qū)徲?jì)數(shù)據(jù)進(jìn)行預(yù)處理,濾除系統(tǒng)調(diào)用的參數(shù)后,分別送入訓(xùn)練模塊或檢測模塊,用于訓(xùn)練或檢測;訓(xùn)練模塊,負(fù)責(zé)利用訓(xùn)練數(shù)據(jù)進(jìn)行訓(xùn)練,建立正常序列模式庫;存儲模塊,用于存儲訓(xùn)練模塊所建立的正常序列模式庫,并在檢測時,供檢測模塊進(jìn)行檢索比較;檢測模塊,負(fù)責(zé)利用審計(jì)數(shù)據(jù)進(jìn)行檢測,產(chǎn)生包括但不限于判決值和/或報(bào)警信息的檢測結(jié)果;檢測結(jié)果輸出模塊,負(fù)責(zé)顯示檢測模塊產(chǎn)生的判決值,并根據(jù)檢測模塊的報(bào)警信息對攻擊行為進(jìn)行報(bào)警。
為了達(dá)到上述目的,本發(fā)明還提供了一種基于序列模式挖掘的程序級入侵檢測方法,該方法包括下列操作步驟(1)系統(tǒng)啟動;(2)系統(tǒng)等待工作信息和指令的輸入時,由控制模塊設(shè)置系統(tǒng)的工作狀態(tài)和工作參數(shù),以便在此后輸入“開始工作”指令后,由控制模塊自動查看系統(tǒng)的設(shè)置情況,分別進(jìn)入兩種不同工作狀態(tài)如果系統(tǒng)被設(shè)置為訓(xùn)練狀態(tài),執(zhí)行后續(xù)步驟;如果系統(tǒng)被設(shè)置為檢測狀態(tài),則跳轉(zhuǎn)執(zhí)行步驟(7);(3)數(shù)據(jù)采集和預(yù)處理模塊從預(yù)先設(shè)定的數(shù)據(jù)接口輸入原始訓(xùn)練數(shù)據(jù),并對該原始訓(xùn)練數(shù)據(jù)進(jìn)行預(yù)處理后,將其輸出至訓(xùn)練模塊;(4)訓(xùn)練模塊從控制模塊讀取步驟(2)中設(shè)置的訓(xùn)練方案,如果設(shè)置為第一種訓(xùn)練方案,執(zhí)行后續(xù)步驟;如果設(shè)置為第二種訓(xùn)練方案,跳轉(zhuǎn)執(zhí)行步驟(6);(5)訓(xùn)練模塊利用訓(xùn)練數(shù)據(jù),根據(jù)第一種訓(xùn)練方案進(jìn)行訓(xùn)練,建立正常序列模式庫,并將該序列模式庫存入存儲模塊后,向控制模塊發(fā)送“訓(xùn)練結(jié)束”的消息,結(jié)束訓(xùn)練工作,跳轉(zhuǎn)執(zhí)行步驟(7);(6)訓(xùn)練模塊利用訓(xùn)練數(shù)據(jù),根據(jù)第二種訓(xùn)練方案進(jìn)行訓(xùn)練,建立正常序列模式庫,并將該序列模式庫存入存儲模塊后,向控制模塊發(fā)送“訓(xùn)練結(jié)束”的消息,結(jié)束訓(xùn)練工作;(7)控制模塊自動查看步驟(2)中所設(shè)置的檢測方案,如果設(shè)置為第一種檢測方案,執(zhí)行后續(xù)步驟;如果設(shè)置為第二種訓(xùn)練方案,跳轉(zhuǎn)執(zhí)行步驟(9);(8)系統(tǒng)按照第一種檢測方案進(jìn)行檢測工作先由數(shù)據(jù)采集和預(yù)處理模塊實(shí)時地從服務(wù)器中獲取原始審計(jì)數(shù)據(jù)并對其進(jìn)行預(yù)處理,再由檢測模塊按照第一種檢測方案對預(yù)處理后的審計(jì)數(shù)據(jù)進(jìn)行實(shí)時分析,生成至少包括判決值和/或報(bào)警信息的檢測結(jié)果,檢測結(jié)果輸出模塊實(shí)時顯示該檢測判決值,并根據(jù)報(bào)警信息對攻擊行為進(jìn)行報(bào)警,結(jié)束檢測操作;(9)系統(tǒng)按照第二種檢測方案進(jìn)行檢測工作先由數(shù)據(jù)采集和預(yù)處理模塊實(shí)時地從服務(wù)器中獲取原始審計(jì)數(shù)據(jù)并對其進(jìn)行預(yù)處理,再由檢測模塊按照第二種檢測方案對預(yù)處理后的審計(jì)數(shù)據(jù)進(jìn)行實(shí)時分析,生成至少包括判決值和/或報(bào)警信息的檢測結(jié)果,檢測結(jié)果輸出模塊實(shí)時顯示該檢測判決值,并根據(jù)報(bào)警信息對攻擊行為進(jìn)行報(bào)警,結(jié)束檢測操作。
所述步驟(2)中,如果系統(tǒng)的工作狀態(tài)被設(shè)置為訓(xùn)練狀態(tài),需要設(shè)置的工作參數(shù)有兩種,分別為第一種訓(xùn)練方案、最小支持度minsup和最小可信度minconf;或第二種訓(xùn)練方案、序列長度的個數(shù)W、序列長度l(1)、l(2)、......、l(W)和最小支持度minsup(1)、minsup(2)、......、minsup(W),其中l(wèi)(j)是第j個序列長度,minsup(j)是第j個最小支持度,j是區(qū)間[1,W]中的自然數(shù);如果系統(tǒng)的工作狀態(tài)被設(shè)置為檢測狀態(tài),需要設(shè)置的工作參數(shù)有兩種,分別為第一種檢測方案、窗長度和判決門限;或第二種檢測方案、窗長度和判決門限。
所述步驟(4)中的原始訓(xùn)練數(shù)據(jù)是系統(tǒng)要監(jiān)控的某個特權(quán)程序在歷史上正常運(yùn)行時所產(chǎn)生的M個含有參數(shù)的系統(tǒng)調(diào)用流,M為大于或等于1的自然數(shù),其中每個系統(tǒng)調(diào)用流是該特權(quán)程序在歷史上一次正常運(yùn)行過程中所產(chǎn)生的、按照時間順序排列的多個系統(tǒng)調(diào)用,且每個系統(tǒng)調(diào)用流中的系統(tǒng)調(diào)用都含有參數(shù);所述步驟(8)和(9)中的原始審計(jì)數(shù)據(jù)是被監(jiān)控的特權(quán)程序在被監(jiān)控時間內(nèi)所產(chǎn)生的一個含有參數(shù)的系統(tǒng)調(diào)用流,該系統(tǒng)調(diào)用流是按照時間順序排列的多個系統(tǒng)調(diào)用,且其中每個系統(tǒng)調(diào)用都含有參數(shù)。
所述步驟(4)和(9)與(10)中對原始訓(xùn)練數(shù)據(jù)和原始審計(jì)數(shù)據(jù)分別進(jìn)行的預(yù)處理都是將系統(tǒng)調(diào)用流中每個系統(tǒng)調(diào)用的參數(shù)濾除,并將濾除參數(shù)后的系統(tǒng)調(diào)用按照原有的時間順序進(jìn)行排列;所述步驟(4)中,M個含有參數(shù)的系統(tǒng)調(diào)用流經(jīng)過預(yù)處理后,分別成為不含參數(shù)的系統(tǒng)調(diào)用流R1、R2、......、RM,其中Ri是第i個不含參數(shù)的系統(tǒng)調(diào)用流,i是區(qū)間[1,M]中的自然數(shù),且Ri中包含有ri個系統(tǒng)調(diào)用,表示為(s1i,s2i,......,sr1i),其中的sji是該系統(tǒng)調(diào)用流中按時間順序排列的第j個系統(tǒng)調(diào)用;預(yù)處理后的用作訓(xùn)練數(shù)據(jù)的M個系統(tǒng)調(diào)用流中系統(tǒng)調(diào)用的總個數(shù)r=r1+r2+......+rM。
所述步驟(5)中訓(xùn)練模塊利用訓(xùn)練數(shù)據(jù),根據(jù)第一種訓(xùn)練方案進(jìn)行訓(xùn)練,建立正常序列模式庫的具體步驟如下(51)由M個系統(tǒng)調(diào)用流R1、R2、......、RM生成M個系統(tǒng)調(diào)用序列流S1、S2、......、SM,其中Si表示由Ri生成的系統(tǒng)調(diào)用序列流,且Si=(Seq1i,Seq2i,......,Seqri-1i),]]>式中Seqji是按時間順序排列的第j個系統(tǒng)調(diào)用序列,且Seqji=(sji,sj+1i),]]>即每個系統(tǒng)調(diào)用序列由2個按照時間順序排列的系統(tǒng)調(diào)用組成,也就是每個系統(tǒng)調(diào)用序列的長度都為2;(52)計(jì)算M個系統(tǒng)調(diào)用序列流S1、S2、......、SM中每個系統(tǒng)調(diào)用序列的支持度和可信度;其中支持度和可信度分別定義如下對于一個長度為2的序列Seq=(si*,sj*),]]>其中si*和sj*分別表示一個確定的系統(tǒng)調(diào)用,Seq=(si*,sj*)]]>的支持度等于該序列在M個系統(tǒng)調(diào)用序列流S1、S2、......、SM中的出現(xiàn)次數(shù)除以S1、S2、......、SM中的序列總數(shù),即support(Seq)=number(Seq)/(r-M);式中number(Seq)表示序列Seq=(si*,sj*)]]>在S中的出現(xiàn)次數(shù),r-M為M個系統(tǒng)調(diào)用序列流S1、S2、......、SM中序列的總個數(shù),support(Seq)表示序列Seq=(si*,sj*)]]>的支持度,支持度support(Seq)用于描述序列Seq=(si*,sj*)]]>在S1、S2、......、SM中的出現(xiàn)概率;對于一個長度為2的序列Seq=(si*,sj*),]]>其中si*和sj*分別表示一個確定的系統(tǒng)調(diào)用,Seq=(si*,sj*)]]>的可信度等于該序列在M個系統(tǒng)調(diào)用序列流S1、S2、......、SM中的出現(xiàn)次數(shù)除以S1、S2、......、SM中第一個系統(tǒng)調(diào)用是si*的序列的出現(xiàn)次數(shù);這里,將S1、S2、......、SM中第一個系統(tǒng)調(diào)用是si*的序列表示為Seq*=(si*,s*),]]>其中s*表示任意系統(tǒng)調(diào)用,則有序列Seq=(si*,sj*)]]>的可信度confidence(Seq)=number(Seq)/number(Seq*),式中number(Seq*)為序列Seq*=(si*,s*)]]>在S1、S2、......、SM中的出現(xiàn)次數(shù);可信度confidence(Seq)用于描述序列流S1、S2、......、SM中序列的第一個系統(tǒng)調(diào)用為si*的前提下,第二個系統(tǒng)調(diào)用為sj*的條件概率;(53)從控制模塊中讀取步驟(2)中所設(shè)置的參數(shù)最小支持度minsup和最小可信度minconf;(54)將M個系統(tǒng)調(diào)用序列流S1、S2、......、SM中支持度大于或等于minsup的序列提取出來,構(gòu)成滿足支持度要求的序列模式庫;如果支持度大于或等于minsup的序列共有K個,分別記為Seq*1,Seq*2,......,Seq*K,K是小于或等于自然數(shù)r-M的自然數(shù),則滿足支持度要求的序列模式庫Ωs={Seq*1,Seq*2,......,Seq*K};(55)將M個系統(tǒng)調(diào)用序列流中可信度大于或等于minconf的序列提取出來,構(gòu)成滿足支持度要求的序列模式庫;如果可信度大于或等于minconf的序列共有L個,分別記為Seq+1,Seq+2,......,Seq+L,L是小于或等于自然數(shù)r-M的自然數(shù),則滿足支持度要求的序列模式庫Ωc={Seq+1,Seq+2,......,Seq+L};(56)選取同時滿足支持度要求的序列模式庫Ωs和滿足可信度要求的序列模式庫Ωc的交集Ωb,則有Ωb=Ωs∩Ωc;該Ωb即為該步驟(5)中訓(xùn)練模塊所要建立的正常序列模式庫。
所述步驟(6)中訓(xùn)練模塊利用訓(xùn)練數(shù)據(jù),根據(jù)第二種訓(xùn)練方案進(jìn)行訓(xùn)練,建立正常序列模式庫的具體步驟如下(61)從控制模塊中讀取步驟(2)中所設(shè)置的參數(shù)序列長度的個數(shù)W和序列長度l(1)、l(2)、......、l(W),其中l(wèi)(j)是第j個序列長度,j是區(qū)間[1,W]中的自然數(shù);(62)由訓(xùn)練數(shù)據(jù)R1、R2、......、RM中的每個系統(tǒng)調(diào)用流,分別生成W個序列長度不同的系統(tǒng)調(diào)用序列流Si1、Si2、......、SiW,其中Sij表示由Ri生成的序列長度為l(j)的系統(tǒng)調(diào)用序列流,且Sij=(Seq1ij,Seq2ij,......,Seqr1-l(j)+1ij),]]>式中Seqkij表示Sij中按時間順序排列的第k個長度為l(j)的系統(tǒng)調(diào)用序列,且Seqkij=(ski,sk+1i,......,sk+l(j)-1i);]]>即由正常行為訓(xùn)練數(shù)據(jù)可以生成M×W個系統(tǒng)調(diào)用序列流,其中序列長度為l(j)的系統(tǒng)調(diào)用序列流有M個S1j、S2j、......、SMj;也就是該M個系統(tǒng)調(diào)用序列流構(gòu)成的訓(xùn)練子集Sj={S1j,S2j,......,SMj},在該訓(xùn)練子集中共有r-M×l(j)+M個長度為l(j)的系統(tǒng)調(diào)用序列;在該步驟操作中,訓(xùn)練模塊生成的訓(xùn)練子集共有W個,該W個訓(xùn)練子集分別由不同長度的系統(tǒng)調(diào)用序列構(gòu)成;(63)按照自然數(shù)j從1到W的順序,分別計(jì)算訓(xùn)練子集Sj={S1j,S2j,......,SMj}中每個系統(tǒng)調(diào)用序列的支持度;所述用于描述序列Seqj在訓(xùn)練子集Sj中出現(xiàn)概率的支持度support(Seqj)的定義如下一個長度為l(j)的序列Seqj的支持度等于該序列在訓(xùn)練子集Sj中的出現(xiàn)次數(shù)除以Sj中的序列總數(shù),即support(Seqj)=number(Seqj)/(r-M×l(j)+M),式中number(Seqj)表示序列Seqj在訓(xùn)練子集Sj的M個系統(tǒng)調(diào)用序列流S1j、S2j、......、SMj中的出現(xiàn)次數(shù);(64)從控制模塊中讀取步驟(2)中所設(shè)置的W個最小支持度minsup(1)、minsup(2)、......、minsup(W),其中minsup(j)是針對訓(xùn)練子集Sj中長度為l(j)的序列而設(shè)置的第j個最小支持度;(65)將訓(xùn)練子集Sj中支持度大于或等于minsup(j)的序列提取出來,構(gòu)成滿足支持度要求的序列模式庫Ω(j);如果Sj中支持度大于或等于minsup(j)的序列共有K(j)個,分別記為Seq1j*、Seq2j*、......、SeqK(j)j*,則滿足支持度要求的序列模式庫Ω(j)={Seq1j*,Seq2j*,......,SeqK(j)j*},]]>從而得到W個滿足支持度要求的序列模式庫Ω(1)、Ω(2)、......、Ω(W);該W個滿足支持度要求的序列模式庫即是該步驟(6)中訓(xùn)練模塊所要建立的正常序列模式庫Ω={Ω(1),Ω(2),......,Ω(W)}。
所述步驟(8)中系統(tǒng)按照第一種檢測方案進(jìn)行檢測工作的具體步驟如下(81)數(shù)據(jù)采集和預(yù)處理模塊實(shí)時地從服務(wù)器中獲取被監(jiān)控的特權(quán)程序在被監(jiān)控時間內(nèi)所產(chǎn)生的系統(tǒng)調(diào)用流,并對該系統(tǒng)調(diào)用流進(jìn)行預(yù)處理后成為不含參數(shù)的包含r個系統(tǒng)調(diào)用的系統(tǒng)調(diào)用流R=(s1,s2,......,sr),其中sk表示按時間順序排列的第k個系統(tǒng)調(diào)用,k是區(qū)間[1,r]中的自然數(shù);該系統(tǒng)調(diào)用流中的各個系統(tǒng)調(diào)用按照時間順序依次被輸出至檢測模塊;(82)檢測模塊由系統(tǒng)調(diào)用流R=(s1,s2,......,sr)生成系統(tǒng)調(diào)用序列流S=(Seq1,Seq2,......,Seqr-1),其中Seqi=(si,si+1)是按時間順序排列的第i個系統(tǒng)調(diào)用序列,S中每個系統(tǒng)調(diào)用序列的長度都為2,i是區(qū)間[1,r-1]中的自然數(shù);(83)檢測模塊將S中的每個系統(tǒng)調(diào)用序列與步驟(56)中建立的正常序列模式庫Ωb中的序列進(jìn)行匹配比較;同時,對于S中的每個系統(tǒng)調(diào)用序列Seqi,進(jìn)行如下計(jì)算如果Seqi∈Ωb,則class(Seqi)=1;如果S‾eqi∉Ωb,]]>則class(Seqi)=0;也就是說,如果Seqi與正常序列庫Ωb中的某個序列相同,則class(Seqi)=1,否則,class(Seqi)=0;經(jīng)過上述運(yùn)算后,得到序列(class(Seq1),class(Seq2),......,class(Seqr-1)),其中class(Seqi)表示序列Seqi的類別,如果class(Seqi)=1,則表明Seqi是正常序列;如果class(Seqi)=0,則表明Seqi是異常序列;(84)檢測模塊從控制模塊中讀取步驟(2)中所設(shè)置的第一種檢測方案的窗長度,然后對序列(class(Seq1),class(Seq2),......,class(Seqr-1))進(jìn)行加窗處理,得到判決值D(k)=1wΣi=k-w+1kclass(S‾eqi),]]>式中,D(k)表示系統(tǒng)調(diào)用序列Seqk對應(yīng)的判決值,w表示步驟(2)中所設(shè)置的第一種檢測方案的窗長度,且w≤k≤r-1,k的增長步長為1;系統(tǒng)調(diào)用序列流S=(Seq1,Seq2,......,Seqr-1)中第w個系統(tǒng)調(diào)用序列及其后面的每個系統(tǒng)調(diào)用序列都分別對應(yīng)一個判決值;
(85)檢測模塊從控制模塊中讀取步驟(2)中所設(shè)置的第一種檢測方案的判決門限,并利用該判決門限和判決值D(k)對被監(jiān)控的特權(quán)程序的“當(dāng)前行為”做出判決;具體判決方法為如果D(k)大于或等于判決門限,將被監(jiān)控的特權(quán)程序的“當(dāng)前行為”判為正常行為,否則,將其判為攻擊或入侵行為;上述步驟(81)至步驟(85)中,被監(jiān)控程序所執(zhí)行的系統(tǒng)調(diào)用或系統(tǒng)調(diào)用流的獲取、序列的生成與匹配、判決值的計(jì)算以及對程序行為的判決都是同步進(jìn)行的。
所述步驟(9)中系統(tǒng)按照第二種檢測方案進(jìn)行檢測工作的具體步驟如下(91)數(shù)據(jù)采集和預(yù)處理模塊實(shí)時地從服務(wù)器系統(tǒng)中獲取被監(jiān)控的特權(quán)程序在被監(jiān)控時間內(nèi)所產(chǎn)生的系統(tǒng)調(diào)用流,并對該系統(tǒng)調(diào)用流進(jìn)行預(yù)處理后成為不含參數(shù)的包含r個的系統(tǒng)調(diào)用的系統(tǒng)調(diào)用流R=(s1,s2,......,sr),其中sk表示按時間順序排列的第k個系統(tǒng)調(diào)用,k是區(qū)間[1,r]中的自然數(shù);該系統(tǒng)調(diào)用流中的各個系統(tǒng)調(diào)用按照時間順序依次被輸出至檢測模塊;(92)檢測模塊從控制模塊中讀取訓(xùn)練狀態(tài)下步驟(2)中所設(shè)置的參數(shù)序列長度的個數(shù)W以及序列長度l(1)、l(2)、......、l(W),其中l(wèi)(j)是第j個序列長度,j是區(qū)間[1,W]中的自然數(shù);(93)對于系統(tǒng)調(diào)用流R=(s1,s2,......,sr)中第l(W)個系統(tǒng)調(diào)用之后的每個系統(tǒng)調(diào)用sk,檢測模塊以sk為終點(diǎn)組成W個長度分別為l(1)、l(2)、......、l(W)的系統(tǒng)調(diào)用序列,該W個序列分別表示為Seqk1、Seqk2、......、SeqkW,其中Seqkj是長度為l(j)的系統(tǒng)調(diào)用序列,即S‾eqkj=(s‾k-l(j)+1,s‾k-l(j)+2,......,s‾k),]]>j是區(qū)間[1,W]中的自然數(shù);(94)對于以sk為終點(diǎn)組成的W個系統(tǒng)調(diào)用序列Seqk1、Seqk2、......、SeqkW,檢測模塊按照自然數(shù)j從1到W的順序,依次將Seqkj同步驟(65)中建立的序列模式庫Ω(j)進(jìn)行比較如果滿足S‾eqkj∈Ω(j),]]>則class(sk)=1;否則,class(sk)=0;也就是說,如果W個序列Seqk1、Seqk2、......、SeqkW中有一個序列與步驟(65)中建立的正常序列庫Ω={Ω(1),Ω(2),......,Ω(W)}中的某個序列相同,則class(sk)=1,否則,class(sk)=0;經(jīng)過上述運(yùn)算得到序列(class(sl(W),class(sl(W)+1),......,class(sr)),其中class(sk)表示系統(tǒng)調(diào)用sk所對應(yīng)的程序行為的類別如果class(sk)=1,則表明sk所對應(yīng)的程序行為是正常行為;如果class(sk)=0,則表明sk所對應(yīng)的程序行為是異常行為;(95)檢測模塊從控制模塊中讀取步驟(2)中所設(shè)置的第二種檢測方案的窗長度,然后對序列(class(sl(W)),class(sl(W)+1),......,class(sr))進(jìn)行加窗處理,得到系統(tǒng)調(diào)用sk對應(yīng)的判決值D(k)=1wΣi=k-w+1kclass(s‾i),]]>式中,w表示步驟(2)中所設(shè)置的第二種檢測方案的窗長度,且w+l(W)-1≤k≤r,k的增長步長為1;系統(tǒng)調(diào)用流R=(s1,s2,......,sr)中第w+l(W)-1個系統(tǒng)調(diào)用及其后面的每個系統(tǒng)調(diào)用都分別對應(yīng)一個判決值;(96)檢測模塊從控制模塊中讀取步驟(2)中所設(shè)置的第二種檢測方案的判決門限,并利用該判決門限和判決值D(k)對被監(jiān)控特權(quán)程序的“當(dāng)前行為”做出判決;具體判決方法為如果D(k)大于或等于判決門限,將被監(jiān)控特權(quán)程序的“當(dāng)前行為”判為正常行為,否則,將其判為攻擊或入侵行為;上述步驟(91)至步驟(96)中,被監(jiān)控程序所執(zhí)行的系統(tǒng)調(diào)用或系統(tǒng)調(diào)用流的獲取、序列的生成與匹配、判決值的計(jì)算以及對程序行為的判決都是同步進(jìn)行的。
本發(fā)明是一種基于序列模式挖掘的程序級入侵檢測系統(tǒng)和方法,與現(xiàn)有的一些主機(jī)型IDS有較大的不同;本發(fā)明的特點(diǎn)和優(yōu)點(diǎn)主要在于(1)與目前的一些商用主機(jī)型IDS相比較,本發(fā)明系統(tǒng)的突出特點(diǎn)是在訓(xùn)練模塊中集成了兩種可選的訓(xùn)練方案,并在檢測模塊中集成了兩種可選的檢測方案;這雖然增加了系統(tǒng)的復(fù)雜度,但增強(qiáng)了系統(tǒng)的工作靈活性,擴(kuò)大了系統(tǒng)的應(yīng)用范圍。在對檢測速度和檢測效率要求較高的檢測環(huán)境中,可以采用第一種訓(xùn)練方案和第一種檢測方案;而在對檢測準(zhǔn)確度要求較高的檢測環(huán)境中,則可以采用第二種訓(xùn)練方案和第二種檢測方案。
(2)本發(fā)明系統(tǒng)具有很強(qiáng)的實(shí)用性和可操作性。該系統(tǒng)可以靈活配置在需要監(jiān)控的網(wǎng)絡(luò)服務(wù)器上,不再需要額外的硬件;它能夠檢測到網(wǎng)絡(luò)服務(wù)器中特權(quán)程序的異常情況,而這種異常通常意味著入侵和攻擊行為,進(jìn)而使安全管理員識別網(wǎng)絡(luò)系統(tǒng)中發(fā)生的各種攻擊活動。
(3)在采用第一種訓(xùn)練方案和第一種檢測方案的情況下,本發(fā)明的檢測方法利用長度為2的系統(tǒng)調(diào)用序列表示一個特權(quán)程序的各種正常行為模式(即只考慮系統(tǒng)調(diào)用流中相鄰兩個系統(tǒng)調(diào)用之間的相關(guān)性)。同現(xiàn)有的檢測方法相比,該方法需要存儲的正常序列模式的數(shù)據(jù)量較小,檢測中進(jìn)行序列匹配時所需的運(yùn)算量也比較小,所以對主機(jī)資源的占用較少,檢測速度比較快。實(shí)際試驗(yàn)應(yīng)用中的檢測結(jié)果表明,在監(jiān)控某些較為簡單的特權(quán)程序(如Login程序)時,采用第一種訓(xùn)練方案和第一種檢測方案能夠獲得很高的檢測效率。
(4)在采用第二種訓(xùn)練方案和第二種檢測方案的情況下,本發(fā)明的檢測方法利用多種長度不同的系統(tǒng)調(diào)用序列表示一個特權(quán)程序的各種正常行為模式,這樣雖然會增加系統(tǒng)的數(shù)據(jù)存儲量和檢測中的運(yùn)算量,但是提高了程序行為模式表示的準(zhǔn)確性,從而較大程度地提高了檢測準(zhǔn)確率。實(shí)際試驗(yàn)應(yīng)用中的檢測結(jié)果表明,在監(jiān)控較為復(fù)雜的特權(quán)程序(如Sendmail程序)時,采用第二種訓(xùn)練方案和第二種檢測方案能夠獲得很高的檢測準(zhǔn)確率。
(5)很多主機(jī)型IDS在訓(xùn)練階段所采用的訓(xùn)練樣例通常要求既有正例,又有反例。本發(fā)明的檢測方法在訓(xùn)練時只需要正例(即特權(quán)程序在正常運(yùn)行時所產(chǎn)生的系統(tǒng)調(diào)用數(shù)據(jù)),而不需要反例,大大降低了訓(xùn)練數(shù)據(jù)收集的難度,擴(kuò)展了系統(tǒng)的應(yīng)用范圍。系統(tǒng)在對原始訓(xùn)練數(shù)據(jù)和原始審計(jì)數(shù)據(jù)進(jìn)行預(yù)處理時,濾除了系統(tǒng)調(diào)用的參數(shù),使得預(yù)處理后的數(shù)據(jù)更加便于處理和存儲,也減小了系統(tǒng)在訓(xùn)練階段所要存儲的數(shù)據(jù)量。另外,本發(fā)明的檢測方法在進(jìn)行檢測時,采用了“全序列比較”的匹配方式。同一些現(xiàn)有的主機(jī)型入侵檢測系統(tǒng)相比,這種序列匹配方法可以減小檢測中的運(yùn)算工作量,從而降低對系統(tǒng)所在主機(jī)的資源的消耗。
(6)本發(fā)明系統(tǒng)具有較強(qiáng)的通用性和良好的可擴(kuò)展性,系統(tǒng)中的各個模塊的功能和相互關(guān)系也適用于基于其它檢測方法的、以系統(tǒng)調(diào)用為審計(jì)數(shù)據(jù)的程序級IDS。
圖1是數(shù)據(jù)挖掘的一般步驟示意圖。
圖2是本發(fā)明系統(tǒng)的結(jié)構(gòu)組成示意圖。
圖3是本發(fā)明系統(tǒng)的檢測方法流程圖。
圖4是本發(fā)明系統(tǒng)在實(shí)施試驗(yàn)中檢測結(jié)果輸出模塊顯示的判決值曲線圖。
具體實(shí)施例方式
為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面結(jié)合附圖對本發(fā)明作進(jìn)一步的詳細(xì)描述。
參見圖2,介紹本發(fā)明一種基于序列模式挖掘的程序級入侵檢測系統(tǒng)的組成結(jié)構(gòu)。該系統(tǒng)為軟件產(chǎn)品,即每個模塊均由相應(yīng)的程序單元組成,配置在需要監(jiān)控的服務(wù)器上,利用特權(quán)程序運(yùn)行時所產(chǎn)生的系統(tǒng)調(diào)用作為審計(jì)數(shù)據(jù),通過監(jiān)控網(wǎng)絡(luò)服務(wù)器中特權(quán)程序的運(yùn)行情況,采用基于數(shù)據(jù)挖掘的異常檢測技術(shù)來檢測網(wǎng)絡(luò)服務(wù)器中是否發(fā)生入侵。該系統(tǒng)由控制模塊、數(shù)據(jù)采集和預(yù)處理模塊、訓(xùn)練模塊、存儲模塊、檢測模塊、檢測結(jié)果輸出模塊組成。
系統(tǒng)中控制模塊負(fù)責(zé)對整個系統(tǒng)的運(yùn)行進(jìn)行控制,通過該模塊可以設(shè)置系統(tǒng)的工作狀態(tài)和工作參數(shù);數(shù)據(jù)采集和預(yù)處理模塊負(fù)責(zé)從服務(wù)器中獲取原始的訓(xùn)練數(shù)據(jù)或?qū)徲?jì)數(shù)據(jù)(即程序運(yùn)行過程中所產(chǎn)生的系統(tǒng)調(diào)用),并對原始訓(xùn)練數(shù)據(jù)或?qū)徲?jì)數(shù)據(jù)進(jìn)行預(yù)處理(濾除系統(tǒng)調(diào)用的參數(shù))后,分別送入訓(xùn)練模塊或檢測模塊,用于訓(xùn)練或檢測;訓(xùn)練模塊的工作是利用訓(xùn)練數(shù)據(jù)進(jìn)行訓(xùn)練,建立正常序列模式庫;存儲模塊用于存儲訓(xùn)練模塊所建立的正常序列模式庫,以供檢測時,該序列模式庫可供檢測模塊進(jìn)行檢索匹配;檢測模塊利用審計(jì)數(shù)據(jù)進(jìn)行檢測工作,產(chǎn)生檢測結(jié)果(判決值和報(bào)警信息);檢測結(jié)果輸出模塊負(fù)責(zé)顯示檢測模塊產(chǎn)生的判決值,并根據(jù)檢測模塊的報(bào)警信息對攻擊行為進(jìn)行報(bào)警。
本發(fā)明系統(tǒng)共有兩種工作狀態(tài),分別是訓(xùn)練狀態(tài)和檢測狀態(tài)。在訓(xùn)練狀態(tài)下,系統(tǒng)有兩種可選的訓(xùn)練方案,分別是第一種訓(xùn)練方案和第二種訓(xùn)練方案;相應(yīng)地,在檢測狀態(tài)下,系統(tǒng)也有兩種可選的檢測方案,分別是第一種檢測方案和第二種檢測方案。需要說明的是系統(tǒng)在進(jìn)行檢測之前必須預(yù)先進(jìn)行訓(xùn)練,而且,第一種訓(xùn)練方案同第一種檢測方案相對應(yīng),第二種訓(xùn)練方案同第二種檢測方案相對應(yīng)。即如果訓(xùn)練時設(shè)置的是第一種訓(xùn)練方案,檢測時只能設(shè)置為第一種檢測方案;如果訓(xùn)練時設(shè)置的是第二種訓(xùn)練方案,檢測時也只能設(shè)置為第二種檢測方案。此外,可以利用兩種訓(xùn)練方案進(jìn)行兩次訓(xùn)練,這樣系統(tǒng)在檢測時就可以選擇兩種檢測方案中的任意一種進(jìn)行工作;不過,這種做法會使系統(tǒng)的數(shù)據(jù)存儲量增大。
參見圖3,介紹本發(fā)明系統(tǒng)的工作流程(1)系統(tǒng)啟動。
(2)系統(tǒng)等待工作信息和指令的輸入時,由控制模塊設(shè)置系統(tǒng)的工作狀態(tài)和工作參數(shù),設(shè)置完畢后可輸入“開始工作”的指令;系統(tǒng)接收到該指令后,由控制模塊自動查看系統(tǒng)的設(shè)置情況,分別進(jìn)入兩種不同工作狀態(tài)如果系統(tǒng)被設(shè)置為訓(xùn)練狀態(tài),執(zhí)行后續(xù)步驟;如果系統(tǒng)被設(shè)置為檢測狀態(tài),則跳轉(zhuǎn)執(zhí)行步驟(7)。
如果系統(tǒng)工作狀態(tài)被設(shè)為訓(xùn)練狀態(tài),需要設(shè)置的工作參數(shù)有兩種,分別為第一種訓(xùn)練方案、最小支持度minsup和最小可信度minconf;或第二種訓(xùn)練方案、序列長度的個數(shù)W、序列長度l(1)、l(2)、......、l(W)和最小支持度minsup(1)、minsup(2)、......、minsup(W),其中l(wèi)(j)是第j個序列長度,minsup(j)是第j個最小支持度,j是區(qū)間[1,W]中的自然數(shù);如果系統(tǒng)的工作狀態(tài)被設(shè)置為檢測狀態(tài),需要設(shè)置的工作參數(shù)有兩種,分別為第一種檢測方案、窗長度和判決門限;或第二種檢測方案、窗長度和判決門限。
如果系統(tǒng)啟動后具有缺省的工作狀態(tài)和工作參數(shù),即上一次運(yùn)行時所設(shè)置的工作狀態(tài)和工作參數(shù);如果不需要更改這些缺省設(shè)置,則可直接輸入“開始工作”的指令,使系統(tǒng)進(jìn)行相應(yīng)狀態(tài)的工作。
(3)數(shù)據(jù)采集和預(yù)處理模塊從預(yù)先設(shè)定的數(shù)據(jù)接口輸入原始訓(xùn)練數(shù)據(jù),并對該原始訓(xùn)練數(shù)據(jù)進(jìn)行預(yù)處理后,將其輸出至訓(xùn)練模塊;所謂原始訓(xùn)練數(shù)據(jù)是系統(tǒng)要監(jiān)控的某個特權(quán)程序在歷史上正常運(yùn)行時所產(chǎn)生的若干個系統(tǒng)調(diào)用流,其中每個系統(tǒng)調(diào)用流是該特權(quán)程序在歷史上一次正常運(yùn)行的過程中所產(chǎn)生的、按照時間順序排列的多個系統(tǒng)調(diào)用。而且,每個系統(tǒng)調(diào)用流中的系統(tǒng)調(diào)用都含有參數(shù)。為分析方便,本發(fā)明假設(shè)原始訓(xùn)練數(shù)據(jù)中的系統(tǒng)調(diào)用流共有M個(M是大于或等于1的自然數(shù))。所謂對原始訓(xùn)練數(shù)據(jù)進(jìn)行預(yù)處理是將每個系統(tǒng)調(diào)用流中各個系統(tǒng)調(diào)用的參數(shù)濾除,并將濾除參數(shù)后的系統(tǒng)調(diào)用按照原有的時間順序進(jìn)行排列。M個含有參數(shù)的系統(tǒng)調(diào)用流分別經(jīng)過預(yù)處理后成為M個不含參數(shù)的系統(tǒng)調(diào)用流R1、R2、......、RM,其中Ri表示第i個系統(tǒng)調(diào)用流,i是區(qū)間[1,M]中的自然數(shù),且Ri中包含有ri個系統(tǒng)調(diào)用,即s1i,s2i,......,sr1i,其中的sji是該系統(tǒng)調(diào)用流中按時間順序排列的第j個系統(tǒng)調(diào)用;預(yù)處理后的用作訓(xùn)練數(shù)據(jù)的M個系統(tǒng)調(diào)用流中系統(tǒng)調(diào)用的總個數(shù)r=r1+r2+......+rM。上述M個系統(tǒng)調(diào)用流R1、R2、......、RM代表了系統(tǒng)要監(jiān)控的特權(quán)程序在歷史上的正常行為。
(4)訓(xùn)練模塊從控制模塊讀取步驟(2)中設(shè)置的訓(xùn)練方案,如果設(shè)置為第一種訓(xùn)練方案,執(zhí)行后續(xù)步驟;如果設(shè)置為第二種訓(xùn)練方案,跳轉(zhuǎn)執(zhí)行步驟(6);(5)訓(xùn)練模塊利用訓(xùn)練數(shù)據(jù),根據(jù)第一種訓(xùn)練方案進(jìn)行訓(xùn)練,建立正常序列模式庫,并將該序列模式庫存入存儲模塊后,向控制模塊發(fā)送“訓(xùn)練結(jié)束”的消息,至此,訓(xùn)練工作結(jié)束;跳轉(zhuǎn)執(zhí)行步驟(7);該步驟的具體操作內(nèi)容如下(51)由M個系統(tǒng)調(diào)用流R1、R2、......、RM生成M個系統(tǒng)調(diào)用序列流S1、S2、......、SM,其中Si表示由Ri生成的按照時間順序排列的系統(tǒng)調(diào)用序列流,且Si=(Seq1i,Seq2i,......,Seqri-1i),]]>其中Seqji是按時間順序排列的第j個系統(tǒng)調(diào)用序列(1≤i≤M,1≤j≤ri-1),Seqji=(sji,sj+1i),]]>即每個系統(tǒng)調(diào)用序列由2個按照時間順序排列的系統(tǒng)調(diào)用組成或每個系統(tǒng)調(diào)用序列的長度都為2。
(52)計(jì)算M個系統(tǒng)調(diào)用序列流S1、S2、......、SM中每個系統(tǒng)調(diào)用序列的支持度和可信度;其中支持度和可信度分別定義如下對于一個長度為2的序列Seq=(si*,sj*),]]>其中si*和sj*分別表示一個確定的系統(tǒng)調(diào)用,Seq=(si*,sj*)]]>的支持度等于該序列在M個系統(tǒng)調(diào)用序列流S1、S2、......、SM中的出現(xiàn)次數(shù)除以S1、S2、......、SM中的序列總數(shù),即support(Seq)=number(Seq)/(r-M);式中number(Seq)表示序列Seq=(si*,sj*)]]>在S中的出現(xiàn)次數(shù),r-M為M個系統(tǒng)調(diào)用序列流S1、S2、......、SM中序列的總個數(shù),support(Seq)表示序列Seq=(si*,sj*)]]>的支持度,支持度support(Seq)用于描述序列Seq=(si*,sj*)]]>在S1、S2、......、SM中的出現(xiàn)概率;對于一個長度為2的序列Seq=(si*,sj*),]]>其中si*和sj*分別表示一個確定的系統(tǒng)調(diào)用,Seq=(si*,sj*)]]>的可信度等于該序列在M個系統(tǒng)調(diào)用序列流S1、S2、......、SM中的出現(xiàn)次數(shù)除以S1、S2、......、SM中第一個系統(tǒng)調(diào)用是si*的序列的出現(xiàn)次數(shù);這里,將S1、S2、......、SM中第一個系統(tǒng)調(diào)用是si*的序列表示為Seq*=(si*,s*),]]>其中s*表示任意系統(tǒng)調(diào)用,則有序列Seq=(si*,sj*)]]>的可信度confidence(Seq)=number(Seq)/number(Seq*),式中number(Seq*)為序列Seq*=(si*,s*)]]>在S1、S2、......、SM中的出現(xiàn)次數(shù);可信度confidence(Seq)用于描述序列S1、S2、......、SM中的第一個系統(tǒng)調(diào)用為si*的前提下,第二個系統(tǒng)調(diào)用為sj*的條件概率;(53)從控制模塊中讀取步驟(2)中所設(shè)置的參數(shù)最小支持度minsup和最小可信度minconf;(54)將M個系統(tǒng)調(diào)用序列流S1、S2、......、SM中支持度大于或等于minsup的序列提取出來,構(gòu)成滿足支持度要求的序列模式庫;如果支持度大于或等于minsup的序列共有K個,分別記為Seq*1,Seq*2,......,Seq*K,K是小于或等于自然數(shù)r-M的自然數(shù),則滿足支持度要求的序列模式庫Ωs={Seq*1,Seq*2,......,Seq*K};(55)將M個系統(tǒng)調(diào)用序列流中可信度大于或等于minconf的序列提取出來,構(gòu)成滿足支持度要求的序列模式庫;如果可信度大于或等于minconf的序列共有L個,分別記為Seq+1,Seq+2,......,Seq+L,L是小于或等于自然數(shù)r-M的自然數(shù),則滿足支持度要求的序列模式庫Ωc={Seq+1,Seq+2,......,Seq+L};(56)選取同時滿足支持度要求的序列模式庫Ωs和滿足可信度要求的序列模式庫Ωc的交集Ωb,則有Ωb=Ωs∩Ωc;該Ωb即為該步驟(5)中訓(xùn)練模塊所要建立的正常序列模式庫。
(6)訓(xùn)練模塊利用訓(xùn)練數(shù)據(jù),根據(jù)第二種訓(xùn)練方案進(jìn)行訓(xùn)練,建立正常序列模式庫,并將該序列模式庫存入存儲模塊后,向控制模塊發(fā)送“訓(xùn)練結(jié)束”的消息,至此,訓(xùn)練工作結(jié)束;訓(xùn)練模塊第二種訓(xùn)練方案的具體操作內(nèi)容如下(61)從控制模塊中讀取步驟(2)中所設(shè)置的參數(shù)序列長度的個數(shù)W和序列長度l(1)、l(2)、......、l(W),其中l(wèi)(j)是第j個序列長度,j是區(qū)間[1,W]中的自然數(shù);(62)由M個訓(xùn)練數(shù)據(jù)R1、R2、......、RM中的每個系統(tǒng)調(diào)用流,分別生成W個序列長度不同的系統(tǒng)調(diào)用序列流Si1、Si2、......、SiW,其中Sij表示由Ri生成的序列長度為l(j)的系統(tǒng)調(diào)用序列流(這里1≤j≤W,1≤i≤M),且Sij=(Seq1ij,Seq2ij,......,Seqri-l(j)+1ij),]]>式中Seqkij表示Sij中按時間順序排列的第k個長度為l(j)的系統(tǒng)調(diào)用序列,且Seqkij=(ski,sk+1i,......,sk+l(j)-1i);]]>這樣,由正常行為訓(xùn)練數(shù)據(jù)可以生成M×W個系統(tǒng)調(diào)用序列流,其中序列長度為l(j)的系統(tǒng)調(diào)用序列流有M個S1j、S2j、......、SMj;為分析方便,假設(shè)該M個系統(tǒng)調(diào)用序列流構(gòu)成的訓(xùn)練子集為Sj={S1j,S2j,......,SMj},在該訓(xùn)練子集中共有r-M×l(j)+M個長度為l(j)的系統(tǒng)調(diào)用序列;在該步驟操作中,訓(xùn)練模塊生成的訓(xùn)練子集共有W個,該W個訓(xùn)練子集分別由不同長度的系統(tǒng)調(diào)用序列構(gòu)成;(63)按照自然數(shù)j從1到W的順序,分別計(jì)算訓(xùn)練子集Sj={S1j,S2j,......,SMj}中每個系統(tǒng)調(diào)用序列的支持度,該支持度support(Seqj)用于描述序列Seqj在訓(xùn)練子集Sj中出現(xiàn)概率,其定義如下一個長度為l(j)的序列Seqj的支持度等于該序列在訓(xùn)練子集Sj中的出現(xiàn)次數(shù)除以Sj中的序列總數(shù)(1≤j≤W),即support(Seqj)=number(Seqj)/(r-M×l(j)+M),式中number(Seqj)表示序列Seqj在訓(xùn)練子集Sj的M個系統(tǒng)調(diào)用序列流S1j、S2j、......、SMj中的出現(xiàn)次數(shù);(64)從控制模塊中讀取步驟(2)中所設(shè)置的W個最小支持度minsup(1)、minsup(2)、......、minsup(W),其中minsup(j)是針對訓(xùn)練子集Sj中長度為l(j)的序列而設(shè)置的第j個最小支持度(1≤j≤W);(65)對于1≤j≤W,將訓(xùn)練子集Sj中支持度大于或等于minsup(j)的序列提取出來,構(gòu)成滿足支持度要求的序列模式庫Ω(j);假設(shè)Sj中支持度大于或等于minsup(j)的序列共有K(j)個,分別記為Seq1j*、Seq2j*、......、SeqK(j)j*,則滿足支持度要求的序列模式庫Ω(j)={Seq1j*,Seq2j*,......,SeqK(j)j*},]]>這樣,可以得到W個滿足支持度要求的序列模式庫Ω(1)、Ω(2)、......、Ω(W),其中Ω(j)表示從訓(xùn)練子集Sj中提取出的序列構(gòu)成的序列模式庫(1≤j≤W)。該W個滿足支持度要求的序列模式庫即是該步驟(6)中訓(xùn)練模塊所要建立的正常序列模式庫Ω={Ω(1),Ω(2),......,Ω(W)}。
(7)控制模塊自動查看步驟(2)中所設(shè)置的檢測方案,如果設(shè)置為第一種檢測方案,執(zhí)行后續(xù)步驟;如果設(shè)置為第二種訓(xùn)練方案,跳轉(zhuǎn)執(zhí)行步驟(9);(8)系統(tǒng)按照第一種檢測方案進(jìn)行檢測工作先由數(shù)據(jù)采集和預(yù)處理模塊實(shí)時地從服務(wù)器中獲取原始審計(jì)數(shù)據(jù)并對其進(jìn)行預(yù)處理,再由檢測模塊按照第一種檢測方案對預(yù)處理后的審計(jì)數(shù)據(jù)進(jìn)行實(shí)時分析,生成至少包括判決值和/或報(bào)警信息的檢測結(jié)果,檢測結(jié)果輸出模塊實(shí)時顯示該檢測判決值,并根據(jù)報(bào)警信息對攻擊行為進(jìn)行報(bào)警,結(jié)束檢測操作;該步驟(8)和步驟(9)中的原始審計(jì)數(shù)據(jù)是被監(jiān)控的特權(quán)程序在被監(jiān)控時間內(nèi)所產(chǎn)生的系統(tǒng)調(diào)用流,該系統(tǒng)調(diào)用流是按照時間順序排列的多個系統(tǒng)調(diào)用,其中的每個系統(tǒng)調(diào)用都含有參數(shù)。這兩個步驟中對原始審計(jì)數(shù)據(jù)進(jìn)行的預(yù)處理是將系統(tǒng)調(diào)用流中每個系統(tǒng)調(diào)用的參數(shù)濾除掉,成為不含參數(shù)的系統(tǒng)調(diào)用流;再將濾除參數(shù)后的系統(tǒng)調(diào)用按照原有的時間順序進(jìn)行排列。
檢測模塊按照第一種檢測方案進(jìn)行的檢測操作包括下列具體步驟(81)數(shù)據(jù)采集和預(yù)處理模塊實(shí)時地從服務(wù)器中獲取被監(jiān)控的特權(quán)程序在被監(jiān)控時間內(nèi)所產(chǎn)生的系統(tǒng)調(diào)用流,并對該系統(tǒng)調(diào)用流進(jìn)行預(yù)處理后成為不含參數(shù)的包含r個系統(tǒng)調(diào)用的系統(tǒng)調(diào)用流R=(s1,s2,......,sr),其中sk表示按時間順序排列的第k個系統(tǒng)調(diào)用,k是區(qū)間[1,r]中的自然數(shù);該系統(tǒng)調(diào)用流中的各個系統(tǒng)調(diào)用按照時間順序依次被輸出至檢測模塊;(82)檢測模塊由系統(tǒng)調(diào)用流R=(s1,s2,......,sr)生成系統(tǒng)調(diào)用序列流S=(Seq1,Seq2,......,Seqr-1),其中Seqi=(si,si+1)是按時間順序排列的第i個系統(tǒng)調(diào)用序列,S中每個系統(tǒng)調(diào)用序列的長度都為2,i是區(qū)間[1,r-1]中的自然數(shù);(83)檢測模塊將S中的每個系統(tǒng)調(diào)用序列與步驟(56)中建立的正常序列模式庫Ωb中的序列進(jìn)行匹配比較;同時,對于S中的每個系統(tǒng)調(diào)用序列Seqi,進(jìn)行如下計(jì)算如果Seqi∈Ωb,則class(Seqi)=1;如果S‾eqi∉Ωb,]]>則class(Seqi)=0;也就是說,如果Seqi與正常序列庫Ωb中的某個序列相同,則class(Seqi)=1,否則,class(Seqi)=0;經(jīng)過上述運(yùn)算后,得到序列(class(Seq1),class(Seq2),......,class(Seqr-1)),其中class(Seqi)表示序列Seqi的類別,如果class(Seqi)=1,則表明Seqi是正常序列;如果class(Seqi)=0,則表明Seqi是異常序列;(84)檢測模塊從控制模塊中讀取步驟(2)中所設(shè)置的第一種檢測方案的窗長度,然后對序列(class(Seq1),class(Seq2),......,class(Seqr-1))進(jìn)行加窗處理,得到判決值D(k)=1wΣi=k-w+1kclass(S‾eqi),]]>式中,D(k)表示系統(tǒng)調(diào)用序列Seqk對應(yīng)的判決值,w表示步驟(2)中所設(shè)置的第一種檢測方案的窗長度,且w≤k≤r-1,k的增長步長為1;系統(tǒng)調(diào)用序列流S=(Seq1,Seq2,......,Seqr-1)中第w個系統(tǒng)調(diào)用序列及其后面的每個系統(tǒng)調(diào)用序列都分別對應(yīng)一個判決值;(85)檢測模塊從控制模塊中讀取步驟(2)中所設(shè)置的第一種檢測方案的判決門限,并利用該判決門限和判決值D(k)對被監(jiān)控的特權(quán)程序的“當(dāng)前行為”做出判決;具體判決方法為如果D(k)大于或等于判決門限,將被監(jiān)控的特權(quán)程序的“當(dāng)前行為”判為正常行為,否則,將其判為攻擊或入侵行為;這里,被監(jiān)控特權(quán)程序的“當(dāng)前行為”是相對于Seqk而言的,它是指被監(jiān)控特權(quán)程序執(zhí)行的以Seqk為終點(diǎn)的w個“系統(tǒng)調(diào)用序列”,即Seqk-w+1、Seqk-w+2、......、Seqk,也是指被監(jiān)控特權(quán)程序執(zhí)行的以sk+1為終點(diǎn)的w+1個“系統(tǒng)調(diào)用”,即sk-w+1、sk-w+2、......、sk+1。
上述步驟(81)至步驟(85)中,被監(jiān)控程序所執(zhí)行的系統(tǒng)調(diào)用或系統(tǒng)調(diào)用流的獲取、序列的生成與匹配、判決值的計(jì)算以及對程序行為的判決都是同步進(jìn)行的。也就是在被監(jiān)控的特權(quán)程序執(zhí)行完w個系統(tǒng)調(diào)用后,它每再執(zhí)行完一個新的系統(tǒng)調(diào)用,檢測系統(tǒng)就可以生成一個新的系統(tǒng)調(diào)用序列,然后將該序列同序列模式庫進(jìn)行匹配,進(jìn)而得到一個(新的)判決值,并對被監(jiān)控特權(quán)程序的“當(dāng)前行為”做出一次判決。
(9)系統(tǒng)按照第二種檢測方案進(jìn)行檢測工作先由數(shù)據(jù)采集和預(yù)處理模塊實(shí)時地從服務(wù)器中獲取原始審計(jì)數(shù)據(jù)并對其進(jìn)行預(yù)處理,再由檢測模塊按照第二種檢測方案對預(yù)處理后的審計(jì)數(shù)據(jù)進(jìn)行實(shí)時分析,生成至少包括判決值和/或報(bào)警信息的檢測結(jié)果,檢測結(jié)果輸出模塊實(shí)時顯示該檢測判決值,并根據(jù)報(bào)警信息對攻擊行為進(jìn)行報(bào)警,結(jié)束檢測操作。
該步驟(9)中檢測模塊按照第二種檢測方案進(jìn)行檢測的具體步驟如下(91)數(shù)據(jù)采集和預(yù)處理模塊實(shí)時地從服務(wù)器系統(tǒng)中獲取被監(jiān)控的特權(quán)程序在被監(jiān)控時間內(nèi)所產(chǎn)生的系統(tǒng)調(diào)用流,并對該系統(tǒng)調(diào)用流進(jìn)行預(yù)處理后成為不含參數(shù)的包含r個的系統(tǒng)調(diào)用的系統(tǒng)調(diào)用流R=(s1,s2,......,sr),其中sk表示按時間順序排列的第k個系統(tǒng)調(diào)用,k是區(qū)間[1,r]中的自然數(shù);然后,該系統(tǒng)調(diào)用流中的各個系統(tǒng)調(diào)用按照時間順序依次被輸出至檢測模塊;(92)檢測模塊從控制模塊中讀取訓(xùn)練狀態(tài)下步驟(2)中所設(shè)置的參數(shù)序列長度的個數(shù)W以及序列長度l(1)、l(2)、......、l(W),其中l(wèi)(j)是第j個序列長度,j是區(qū)間[1,W]中的自然數(shù);(93)對于系統(tǒng)調(diào)用流R=(s1,s2,......,sr)中第l(W)個系統(tǒng)調(diào)用之后的每個系統(tǒng)調(diào)用sk(l(W)≤k≤r),檢測模塊以sk為終點(diǎn)組成W個長度分別為l(1)、l(2)、......、l(W)的系統(tǒng)調(diào)用序列,該W個序列分別表示為Seqk1、Seqk2、......、SeqkW,其中Seqkj是長度為l(j)的系統(tǒng)調(diào)用序列,即S‾eqkj=(s‾k-l(j)+1,s‾k-l(j)+2,......,s‾k),]]>j是區(qū)間[1,W]中的自然數(shù);(94)對于以sk為終點(diǎn)組成的W個系統(tǒng)調(diào)用序列Seqk1、Seqk2、......、SeqkW,檢測模塊按照自然數(shù)j從1到W的順序,依次將Seqkj同步驟(65)中建立的序列模式庫Ω(j)進(jìn)行比較如果存在一個j(1≤j≤W),使得S‾eqkj∈Ω(j),]]>則class(sk)=1;否則,class(sk)=0;也就是說,如果W個序列Seqk1、Seqk2、......、SeqkW中有一個序列與步驟(65)中建立的正常序列庫Ω={Ω(1),Ω(2),......,Ω(W)}中的某個序列相同,則class(sk)=1,否則,class(sk)=0;經(jīng)過上述運(yùn)算得到序列(class(sl(W),class(sl(W)+1,......,class(sr)),其中class(sk)表示系統(tǒng)調(diào)用sk所對應(yīng)的程序行為的類別如果class(sk)=1,則表明sk所對應(yīng)的程序行為是正常行為;如果class(sk)=0,則表明sk所對應(yīng)的程序行為是異常行為;(95)檢測模塊從控制模塊中讀取步驟(2)中所設(shè)置的第二種檢測方案的窗長度,然后對序列(class(sl(W),class(sl(W)+1),......,class(sr))進(jìn)行加窗處理,得到系統(tǒng)調(diào)用sk對應(yīng)的判決值D(k)1wΣi=k-w+1kclass(s‾i),]]>式中,w表示步驟(2)中所設(shè)置的第二種檢測方案的窗長度,且w+l(W)-1≤k≤r,k的增長步長為1;系統(tǒng)調(diào)用流R=(s1,s2,......,sr)中第w+l(W)-1個系統(tǒng)調(diào)用及其后面的每個系統(tǒng)調(diào)用都分別對應(yīng)一個判決值;(96)檢測模塊從控制模塊中讀取步驟(2)中所設(shè)置的第二種檢測方案的判決門限,并利用該判決門限和判決值D(k)對被監(jiān)控特權(quán)程序的“當(dāng)前行為”做出判決;具體判決方法為如果D(k)大于或等于判決門限,將被監(jiān)控特權(quán)程序的“當(dāng)前行為”判為正常行為,否則,將其判為攻擊或入侵行為;這里,被監(jiān)控特權(quán)程序的“當(dāng)前行為”是相對于sk而言的,它是指被監(jiān)控特權(quán)程序執(zhí)行的以sk為終點(diǎn)的w個系統(tǒng)調(diào)用sk-w+1、sk-w+2、......、sk。
需要指出,在上述步驟(91)至步驟(96)中,被監(jiān)控程序所執(zhí)行的系統(tǒng)調(diào)用(流)的獲取、序列的生成與匹配、判決值的計(jì)算以及對程序行為的判決都是同步進(jìn)行的。也就是在被監(jiān)控特權(quán)程序執(zhí)行完w+l(W)-2個系統(tǒng)調(diào)用后,它每再執(zhí)行完一個新的系統(tǒng)調(diào)用,檢測系統(tǒng)就可以以該系統(tǒng)調(diào)用為終點(diǎn)組成W個(新的)系統(tǒng)調(diào)用序列,然后進(jìn)行序列匹配,進(jìn)而得到一個(新的)判決值,并對被監(jiān)控特權(quán)程序的“當(dāng)前行為”做出判決。
下面通過一個試驗(yàn)應(yīng)用的實(shí)施例來說明本發(fā)明的實(shí)施情況。在該應(yīng)用實(shí)施例中,本發(fā)明程序級入侵檢測系統(tǒng)配置在某網(wǎng)站的一個Sendmail郵件服務(wù)器上,用于檢測針對該服務(wù)器的各種攻擊活動。該試驗(yàn)實(shí)施例包括兩個應(yīng)用實(shí)施例,第一個實(shí)施例中系統(tǒng)的工作狀態(tài)被設(shè)為訓(xùn)練狀態(tài),第二個實(shí)施例中系統(tǒng)的工作狀態(tài)被設(shè)為檢測狀態(tài)。
先介紹該系統(tǒng)進(jìn)行訓(xùn)練的實(shí)施例的操作步驟如下步驟1啟動系統(tǒng)。
步驟2用戶配置系統(tǒng)的工作狀態(tài)和工作參數(shù)將系統(tǒng)的工作狀態(tài)設(shè)為訓(xùn)練狀態(tài),將訓(xùn)練方案設(shè)為第二種訓(xùn)練方案,將序列長度的個數(shù)W設(shè)為3,將3種序列的長度分別設(shè)為l(1)=2,l(2)=3,l(3)=4,將3個最小支持度分別設(shè)為minsup(1)=0.00005,minsup(2)=0.00002,minsup(3)=0.00001。
步驟3控制模塊自動查看對系統(tǒng)工作狀態(tài)的設(shè)置情況,發(fā)現(xiàn)系統(tǒng)的工作狀態(tài)被設(shè)為訓(xùn)練狀態(tài),于是執(zhí)行步驟4。
步驟4數(shù)據(jù)采集和預(yù)處理模塊將原始訓(xùn)練數(shù)據(jù)從指定的數(shù)據(jù)接口輸入,然后對原始訓(xùn)練數(shù)據(jù)進(jìn)行預(yù)處理,并將預(yù)處理后的訓(xùn)練數(shù)據(jù)輸出至訓(xùn)練模塊。原始的訓(xùn)練數(shù)據(jù)共有13個系統(tǒng)調(diào)用流(即M=13),共包含289193個系統(tǒng)調(diào)用(即r=289193);這13個系統(tǒng)調(diào)用流的數(shù)據(jù)量相差較大,其中最大的系統(tǒng)調(diào)用流含有183018個系統(tǒng)調(diào)用,占總數(shù)量的一半以上,而最小的系統(tǒng)調(diào)用流僅含有170個系統(tǒng)調(diào)用。原始的訓(xùn)練數(shù)據(jù)經(jīng)預(yù)處理后成為13個不含參數(shù)的系統(tǒng)調(diào)用流,這些系統(tǒng)調(diào)用流都被輸出至訓(xùn)練模塊。
步驟5訓(xùn)練模塊從控制模塊讀取步驟2中所設(shè)置的訓(xùn)練方案,發(fā)現(xiàn)訓(xùn)練方案被設(shè)為第二種訓(xùn)練方案,于是執(zhí)行步驟6。
步驟6訓(xùn)練模塊利用訓(xùn)練數(shù)據(jù),根據(jù)第二種訓(xùn)練方案進(jìn)行訓(xùn)練,建立正常序列模式庫,并將該序列模式庫存入存儲模塊,最后向控制模塊發(fā)送“訓(xùn)練結(jié)束”的消息。在該步驟操作中,由訓(xùn)練數(shù)據(jù)(13個系統(tǒng)調(diào)用流)所產(chǎn)生的長度為2、3、4的系統(tǒng)調(diào)用流中的序列分別有289180、289167、289154個,其中互不相同的序列分別有168、259、316個,而支持度分別大于或等于0.00005、0.00002、0.00001的序列(即滿足支持度要求的序列)分別有57、144、316個,訓(xùn)練模塊所建立的正常序列模式庫Ω={Ω(1),Ω(2),Ω(3)}即由這些序列組成,其中Ω(1)、Ω(2)、Ω(3)中的序列分別有57、144、316個。
再介紹該系統(tǒng)進(jìn)行檢測的實(shí)施例的操作步驟如下步驟1啟動系統(tǒng)。
步驟2用戶配置系統(tǒng)的工作狀態(tài)和工作參數(shù)將工作狀態(tài)設(shè)為檢測狀態(tài),將檢測方案設(shè)為第二種檢測方案,將窗長度設(shè)為20,將判決門限設(shè)為0.85。
步驟3控制模塊自動查看對系統(tǒng)工作狀態(tài)的設(shè)置情況。發(fā)現(xiàn)系統(tǒng)的工作狀態(tài)被設(shè)為檢測狀態(tài),于是執(zhí)行步驟4。
步驟4控制模塊自動查看步驟2中所設(shè)置的檢測方案。發(fā)現(xiàn)檢測方案被設(shè)為第二種檢測方案,于是執(zhí)行步驟5。
步驟5系統(tǒng)按照第二種檢測方案進(jìn)行檢測工作。這時,數(shù)據(jù)采集和預(yù)處理模塊會實(shí)時地從主機(jī)系統(tǒng)中獲取原始審計(jì)數(shù)據(jù)并對其預(yù)處理;檢測模塊則按照第二種檢測方案對預(yù)處理后的審計(jì)數(shù)據(jù)進(jìn)行實(shí)時分析,生成檢測結(jié)果(判決值和報(bào)警信息);檢測結(jié)果輸出模塊實(shí)時地顯示檢測模塊生成的判決值,并根據(jù)檢測模塊的報(bào)警信息對攻擊行為進(jìn)行報(bào)警。系統(tǒng)在進(jìn)行檢測工作中,Sendmail郵件服務(wù)器遭受了一次sccp攻擊(sccp攻擊腳本能夠利用特殊的命令行選項(xiàng)使sendmail將一個電子郵件消息附加到某個文件上,本地用戶利用該腳本可獲得根路徑);檢測系統(tǒng)在工作中共做了2909次判決,其中報(bào)警的次數(shù)(將sendmail特權(quán)程序的行為判為攻擊行為的次數(shù))為304次。需要指出,由于在Sendmail郵件服務(wù)器遭受攻擊期間sendmail程序的行為只在某些時間段內(nèi)出現(xiàn)了異常,所以檢測系統(tǒng)在2909次判決中只進(jìn)行了304次報(bào)警。圖4為該系統(tǒng)在檢測工作中檢測結(jié)果輸出模塊顯示(輸出)的判決值曲線;在該判決值曲線中,當(dāng)判決值低于判決門限0.85時,檢測系統(tǒng)就會報(bào)警。由以上檢測結(jié)果可見,本發(fā)明系統(tǒng)能夠成功實(shí)現(xiàn)對攻擊行為的檢測。
總之,本發(fā)明的試驗(yàn)實(shí)施的實(shí)施例是成功的,實(shí)現(xiàn)了發(fā)明目的。
權(quán)利要求
1.一種基于序列模式挖掘的程序級入侵檢測系統(tǒng),該系統(tǒng)配置在需要監(jiān)控的網(wǎng)絡(luò)服務(wù)器上,利用特權(quán)程序運(yùn)行時所產(chǎn)生的系統(tǒng)調(diào)用作為審計(jì)數(shù)據(jù),通過監(jiān)控網(wǎng)絡(luò)服務(wù)器中特權(quán)程序的運(yùn)行情況,采用基于數(shù)據(jù)挖掘的異常檢測技術(shù)來檢測網(wǎng)絡(luò)服務(wù)器中是否發(fā)生入侵;其特征在于所述系統(tǒng)包括有控制模塊,負(fù)責(zé)設(shè)置系統(tǒng)的工作狀態(tài)和各種參數(shù),并對數(shù)據(jù)采集和預(yù)處理模塊、訓(xùn)練模塊、檢測模塊和整個系統(tǒng)的運(yùn)行進(jìn)行控制;數(shù)據(jù)采集和預(yù)處理模塊,負(fù)責(zé)從服務(wù)器中獲取原始的訓(xùn)練數(shù)據(jù)或?qū)徲?jì)數(shù)據(jù),即程序運(yùn)行過程中所產(chǎn)生的系統(tǒng)調(diào)用,并將這些原始訓(xùn)練數(shù)據(jù)或?qū)徲?jì)數(shù)據(jù)進(jìn)行預(yù)處理,濾除系統(tǒng)調(diào)用的參數(shù)后,分別送入訓(xùn)練模塊或檢測模塊,用于訓(xùn)練或檢測;訓(xùn)練模塊,負(fù)責(zé)利用訓(xùn)練數(shù)據(jù)進(jìn)行訓(xùn)練,建立正常序列模式庫;存儲模塊,用于存儲訓(xùn)練模塊所建立的正常序列模式庫,并在檢測時,供檢測模塊進(jìn)行檢索比較;檢測模塊,負(fù)責(zé)利用審計(jì)數(shù)據(jù)進(jìn)行檢測,產(chǎn)生包括但不限于判決值和/或報(bào)警信息的檢測結(jié)果;檢測結(jié)果輸出模塊,負(fù)責(zé)顯示檢測模塊產(chǎn)生的判決值,并根據(jù)檢測模塊的報(bào)警信息對攻擊行為進(jìn)行報(bào)警。
2.一種權(quán)利要求1的基于序列模式挖掘的程序級入侵檢測系統(tǒng)的檢測方法,其特征在于所述系統(tǒng)的檢測方法包括下列操作步驟(1)系統(tǒng)啟動;(2)系統(tǒng)等待工作信息和指令的輸入時,由控制模塊設(shè)置系統(tǒng)的工作狀態(tài)和工作參數(shù),以便在此后輸入“開始工作”指令后,由控制模塊自動查看系統(tǒng)的設(shè)置情況,分別進(jìn)入兩種不同工作狀態(tài)如果系統(tǒng)被設(shè)置為訓(xùn)練狀態(tài),執(zhí)行后續(xù)步驟;如果系統(tǒng)被設(shè)置為檢測狀態(tài),則跳轉(zhuǎn)執(zhí)行步驟(7);(3)數(shù)據(jù)采集和預(yù)處理模塊從預(yù)先設(shè)定的數(shù)據(jù)接口輸入原始訓(xùn)練數(shù)據(jù),并對該原始訓(xùn)練數(shù)據(jù)進(jìn)行預(yù)處理后,將其輸出至訓(xùn)練模塊;(4)訓(xùn)練模塊從控制模塊讀取步驟(2)中設(shè)置的訓(xùn)練方案,如果設(shè)置為第一種訓(xùn)練方案,執(zhí)行后續(xù)步驟;如果設(shè)置為第二種訓(xùn)練方案,跳轉(zhuǎn)執(zhí)行步驟(6);(5)訓(xùn)練模塊利用訓(xùn)練數(shù)據(jù),根據(jù)第一種訓(xùn)練方案進(jìn)行訓(xùn)練,建立正常序列模式庫,并將該序列模式庫存入存儲模塊后,向控制模塊發(fā)送“訓(xùn)練結(jié)束”的消息,結(jié)束訓(xùn)練工作,跳轉(zhuǎn)執(zhí)行步驟(7);(6)訓(xùn)練模塊利用訓(xùn)練數(shù)據(jù),根據(jù)第二種訓(xùn)練方案進(jìn)行訓(xùn)練,建立正常序列模式庫,并將該序列模式庫存入存儲模塊后,向控制模塊發(fā)送“訓(xùn)練結(jié)束”的消息,結(jié)束訓(xùn)練工作;(7)控制模塊自動查看步驟(2)中所設(shè)置的檢測方案,如果設(shè)置為第一種檢測方案,執(zhí)行后續(xù)步驟;如果設(shè)置為第二種訓(xùn)練方案,跳轉(zhuǎn)執(zhí)行步驟(9);(8)系統(tǒng)按照第一種檢測方案進(jìn)行檢測工作先由數(shù)據(jù)采集和預(yù)處理模塊實(shí)時地從服務(wù)器中獲取原始審計(jì)數(shù)據(jù)并對其進(jìn)行預(yù)處理,再由檢測模塊按照第一種檢測方案對預(yù)處理后的審計(jì)數(shù)據(jù)進(jìn)行實(shí)時分析,生成至少包括判決值和/或報(bào)警信息的檢測結(jié)果,檢測結(jié)果輸出模塊實(shí)時顯示該檢測判決值,并根據(jù)報(bào)警信息對攻擊行為進(jìn)行報(bào)警,結(jié)束檢測操作;(9)系統(tǒng)按照第二種檢測方案進(jìn)行檢測工作先由數(shù)據(jù)采集和預(yù)處理模塊實(shí)時地從服務(wù)器中獲取原始審計(jì)數(shù)據(jù)并對其進(jìn)行預(yù)處理,再由檢測模塊按照第二種檢測方案對預(yù)處理后的審計(jì)數(shù)據(jù)進(jìn)行實(shí)時分析,生成至少包括判決值和/或報(bào)警信息的檢測結(jié)果,檢測結(jié)果輸出模塊實(shí)時顯示該檢測判決值,并根據(jù)報(bào)警信息對攻擊行為進(jìn)行報(bào)警,結(jié)束檢測操作。
3.根據(jù)權(quán)利要求2所述的基于序列模式挖掘的程序級入侵檢測系統(tǒng)的檢測方法,其特征在于所述步驟(2)中,如果系統(tǒng)的工作狀態(tài)被設(shè)置為訓(xùn)練狀態(tài),需要設(shè)置的工作參數(shù)有兩種,分別為第一種訓(xùn)練方案、最小支持度minsup和最小可信度minconf;或第二種訓(xùn)練方案、序列長度的個數(shù)W、序列長度l(1)、l(2)、......、l(W)和最小支持度minsup(1)、minsup(2)、......、minsup(W),其中l(wèi)(j)是第j個序列長度,minsup(j)是第j個最小支持度,j是區(qū)間[1,W]中的自然數(shù);如果系統(tǒng)的工作狀態(tài)被設(shè)置為檢測狀態(tài),需要設(shè)置的工作參數(shù)有兩種,分別為第一種檢測方案、窗長度和判決門限;或第二種檢測方案、窗長度和判決門限。
4.根據(jù)權(quán)利要求2所述的基于序列模式挖掘的程序級入侵檢測系統(tǒng)的檢測方法,其特征在于所述步驟(4)中的原始訓(xùn)練數(shù)據(jù)是系統(tǒng)要監(jiān)控的某個特權(quán)程序在歷史上正常運(yùn)行時所產(chǎn)生的M個含有參數(shù)的系統(tǒng)調(diào)用流,M為大于或等于1的自然數(shù),其中每個系統(tǒng)調(diào)用流是該特權(quán)程序在歷史上一次正常運(yùn)行過程中所產(chǎn)生的、按照時間順序排列的多個系統(tǒng)調(diào)用,且每個系統(tǒng)調(diào)用流中的系統(tǒng)調(diào)用都含有參數(shù);所述步驟(8)和(9)中的原始審計(jì)數(shù)據(jù)是被監(jiān)控的特權(quán)程序在被監(jiān)控時間內(nèi)所產(chǎn)生的一個含有參數(shù)的系統(tǒng)調(diào)用流,該系統(tǒng)調(diào)用流是按照時間順序排列的多個系統(tǒng)調(diào)用,且其中每個系統(tǒng)調(diào)用都含有參數(shù)。
5.根據(jù)權(quán)利要求4所述的基于序列模式挖掘的程序級入侵檢測系統(tǒng)的檢測方法,其特征在于所述步驟(4)和(9)與(10)中對原始訓(xùn)練數(shù)據(jù)和原始審計(jì)數(shù)據(jù)分別進(jìn)行的預(yù)處理都是將系統(tǒng)調(diào)用流中每個系統(tǒng)調(diào)用的參數(shù)濾除,并將濾除參數(shù)后的系統(tǒng)調(diào)用按照原有的時間順序進(jìn)行排列;所述步驟(4)中,M個含有參數(shù)的系統(tǒng)調(diào)用流經(jīng)過預(yù)處理后,分別成為不含參數(shù)的系統(tǒng)調(diào)用流R1、R2、......、RM,其中Ri是第i個不含參數(shù)的系統(tǒng)調(diào)用流,i是區(qū)間[1,M]中的自然數(shù),且Ri中包含有ri個系統(tǒng)調(diào)用,表示為(s1i,s2i,......,srti),其中的sji是該系統(tǒng)調(diào)用流中按時間順序排列的第j個系統(tǒng)調(diào)用;預(yù)處理后的用作訓(xùn)練數(shù)據(jù)的M個系統(tǒng)調(diào)用流中系統(tǒng)調(diào)用的總個數(shù)r=r1+r2+......+rM。
6.根據(jù)權(quán)利要求2所述的基于序列模式挖掘的程序級入侵檢測系統(tǒng)的檢測方法,其特征在于所述步驟(5)中訓(xùn)練模塊利用訓(xùn)練數(shù)據(jù),根據(jù)第一種訓(xùn)練方案進(jìn)行訓(xùn)練,建立正常序列模式庫的具體步驟如下(51)由M個系統(tǒng)調(diào)用流R1、R2、......、RM生成M個系統(tǒng)調(diào)用序列流S1、S2、......、SM,其中Si表示由Ri生成的系統(tǒng)調(diào)用序列流,且Si=(Seq1i,Seq2i,......,Seqri-1i),]]>式中Seqji是按時間順序排列的第j個系統(tǒng)調(diào)用序列,且Seqji=(sji,sj+1i),]]>即每個系統(tǒng)調(diào)用序列由2個按照時間順序排列的系統(tǒng)調(diào)用組成,也就是每個系統(tǒng)調(diào)用序列的長度都為2;(52)計(jì)算M個系統(tǒng)調(diào)用序列流S1、S2、......、SM中每個系統(tǒng)調(diào)用序列的支持度和可信度;其中支持度和可信度分別定義如下對于一個長度為2的序列Seq=(si*,sj*),]]>其中si*和sj*分別表示一個確定的系統(tǒng)調(diào)用,Seq=(si*,sj*)]]>的支持度等于該序列在M個系統(tǒng)調(diào)用序列流S1、S2、......、SM中的出現(xiàn)次數(shù)除以S1、S2、......、SM中的序列總數(shù),即support(Seq)=number(Seq)/(r-M);式中number(Seq)表示序列Seq=(si*,sj*)]]>在S中的出現(xiàn)次數(shù),r-M為M個系統(tǒng)調(diào)用序列流S1、S2、......、SM中序列的總個數(shù),support(Seq)表示序列Seq=(si*,sj*)]]>的支持度,支持度support(Seq)用于描述序列Seq=(si*,sj*)]]>在S1、S2、......、SM中的出現(xiàn)概率;對于一個長度為2的序列Seq=(si*,sj*)]]>其中si*和sj*分別表示一個確定的系統(tǒng)調(diào)用,Seq=(si*,sj*)]]>的可信度等于該序列在M個系統(tǒng)調(diào)用序列流S1、S2、......、SM中的出現(xiàn)次數(shù)除以S1、S2、......、SM中第一個系統(tǒng)調(diào)用是si*的序列的出現(xiàn)次數(shù);這里,將S1、S2、......、SM中第一個系統(tǒng)調(diào)用是si*的序列表示為Seq*=(si*,s*),]]>其中s*表示任意系統(tǒng)調(diào)用,則有序列Seq=(si*,sj*)]]>的可信度confidence(Seq)=number(Seq)/number(Seq*),式中number(Seq*)為序列Seq*=(si*,s*)]]>在S1、S2、......、SM中的出現(xiàn)次數(shù);可信度confidence(Seq)用于描述序列流S1、S2、......、SM中序列的第一個系統(tǒng)調(diào)用為si*的前提下,第二個系統(tǒng)調(diào)用為sj*的條件概率;(53)從控制模塊中讀取步驟(2)中所設(shè)置的參數(shù)最小支持度minsup和最小可信度minconf;(54)將M個系統(tǒng)調(diào)用序列流S1、S2、......、SM中支持度大于或等于minsup的序列提取出來,構(gòu)成滿足支持度要求的序列模式庫;如果支持度大于或等于minsup的序列共有K個,分別記為Seq*1,Seq*2,......,Seq*K,K是小于或等于自然數(shù)r-M的自然數(shù),則滿足支持度要求的序列模式庫Ωs={Seq*1,Seq*2,......,Seq*K};]]>(55)將M個系統(tǒng)調(diào)用序列流中可信度大于或等于minconf的序列提取出來,構(gòu)成滿足支持度要求的序列模式庫;如果可信度大于或等于minconf的序列共有L個,分別記為Seq+1,Seq+2,......,Seq+L,L是小于或等于自然數(shù)r-M的自然數(shù),則滿足支持度要求的序列模式庫Ωc={Seq+1,Seq+2,......,Seq+L};(56)選取同時滿足支持度要求的序列模式庫Ωs和滿足可信度要求的序列模式庫Ωc的交集Ωb,則有Ωb=Ωs∩Ωc;該Ωb即為該步驟(5)中訓(xùn)練模塊所要建立的正常序列模式庫。
7.根據(jù)權(quán)利要求2所述的基于序列模式挖掘的程序級入侵檢測系統(tǒng)的檢測方法,其特征在于所述步驟(6)中訓(xùn)練模塊利用訓(xùn)練數(shù)據(jù),根據(jù)第二種訓(xùn)練方案進(jìn)行訓(xùn)練,建立正常序列模式庫的具體步驟如下(61)從控制模塊中讀取步驟(2)中所設(shè)置的參數(shù)序列長度的個數(shù)W和序列長度l(1)、l(2)、......、l(W),其中l(wèi)(j)是第j個序列長度,j是區(qū)間[1,W]中的自然數(shù);(62)由訓(xùn)練數(shù)據(jù)R1、R2、......、RM中的每個系統(tǒng)調(diào)用流,分別生成W個序列長度不同的系統(tǒng)調(diào)用序列流Si1、Si2、......、SiW,其中Sij表示由Ri生成的序列長度為l(j)的系統(tǒng)調(diào)用序列流,且Sij=(Seq1ij,Seq2ij,......,Seqri-l(j)+1ij),]]>式中Seqkij表示Sij中按時間順序排列的第k個長度為l(j)的系統(tǒng)調(diào)用序列,且Seqkij=(ski,sk+1i,......,sk+l(j)-1i);]]>即由正常行為訓(xùn)練數(shù)據(jù)可以生成M×W個系統(tǒng)調(diào)用序列流,其中序列長度為l(j)的系統(tǒng)調(diào)用序列流有M個S1j、S2j、......、SMj;也就是該M個系統(tǒng)調(diào)用序列流構(gòu)成的訓(xùn)練子集Sj={S1j,S2j,......,SMj},在該訓(xùn)練子集中共有r-M×l(j)+M個長度為l(j)的系統(tǒng)調(diào)用序列;在該步驟操作中,訓(xùn)練模塊生成的訓(xùn)練子集共有W個,該W個訓(xùn)練子集分別由不同長度的系統(tǒng)調(diào)用序列構(gòu)成;(63)按照自然數(shù)j從1到W的順序,分別計(jì)算訓(xùn)練子集Sj={S1j,S2j,......,SMj}中每個系統(tǒng)調(diào)用序列的支持度;所述用于描述序列Seqj在訓(xùn)練子集Sj中出現(xiàn)概率的支持度support(Seqj)的定義如下一個長度為l(j)的序列Seqj的支持度等于該序列在訓(xùn)練子集Sj中的出現(xiàn)次數(shù)除以Sj中的序列總數(shù),即support(Seqj)=number(Seqj)/(r-M×l(j)+M),式中number(Seqj)表示序列Seqj在訓(xùn)練子集Sj的M個系統(tǒng)調(diào)用序列流S1j、S2j、......、SMj中的出現(xiàn)次數(shù);(64)從控制模塊中讀取步驟(2)中所設(shè)置的W個最小支持度minsup(1)、minsup(2)、......、minsup(W),其中minsup(j)是針對訓(xùn)練子集Sj中長度為l(j)的序列而設(shè)置的第j個最小支持度;(65)將訓(xùn)練子集Sj中支持度大于或等于minsup(j)的序列提取出來,構(gòu)成滿足支持度要求的序列模式庫Ω(j);如果Sj中支持度大于或等于minsup(j)的序列共有K(j)個,分別記為Seq1j*、Seq2j*、......、SeqK(j)j*,則滿足支持度要求的序列模式庫Ω(j)={Seq1j*,Seq2j*,......,SeqK(j)j*};]]>從而得到W個滿足支持度要求的序列模式庫Ω(1)、Ω(2)、......、Ω(W),;該W個滿足支持度要求的序列模式庫即是該步驟(6)中訓(xùn)練模塊所要建立的正常序列模式庫Ω={Ω(1),Ω(2),......,Ω(W)}。
8.根據(jù)權(quán)利要求2所述的基于序列模式挖掘的程序級入侵檢測系統(tǒng)的檢測方法,其特征在于所述步驟(8)中系統(tǒng)按照第一種檢測方案進(jìn)行檢測工作的具體步驟如下(81)數(shù)據(jù)采集和預(yù)處理模塊實(shí)時地從服務(wù)器中獲取被監(jiān)控的特權(quán)程序在被監(jiān)控時間內(nèi)所產(chǎn)生的系統(tǒng)調(diào)用流,并對該系統(tǒng)調(diào)用流進(jìn)行預(yù)處理后成為不含參數(shù)的包含r個系統(tǒng)調(diào)用的系統(tǒng)調(diào)用流R=(s1,s2,......,sr),其中sk表示按時間順序排列的第k個系統(tǒng)調(diào)用,k是區(qū)間[1,r]中的自然數(shù);該系統(tǒng)調(diào)用流中的各個系統(tǒng)調(diào)用按照時間劉頁序依次被輸出至檢測模塊;(82)檢測模塊由系統(tǒng)調(diào)用流R=(s1,s2,......,sr)生成系統(tǒng)調(diào)用序列流S=(Seq1,Seq2,......,Seqr-1),其中Seqi=(si,si+1)是按時間順序排列的第i個系統(tǒng)調(diào)用序列,S中每個系統(tǒng)調(diào)用序列的長度都為2,i是區(qū)間[1,r-1]中的自然數(shù)(83)檢測模塊將S中的每個系統(tǒng)調(diào)用序列與步驟(56)中建立的正常序列模式庫Ωb中的序列進(jìn)行匹配比較;同時,對于S中的每個系統(tǒng)調(diào)用序列Seqi,進(jìn)行如下計(jì)算如果Seqi∈Ωb,則class(Seqi)=1;如果S‾eqi∉Ωb,]]>則class(Seqi)=0;也就是說,如果Seqi與正常序列庫Ωb中的某個序列相同,則class(Seqi)=1,否則,class(Seqi)=0;經(jīng)過上述運(yùn)算后,得到序列(class(Seq1),class(Seq2),......,class(Seqr-1)),其中class(Seqi)表示序列Seqi的類別,如果class(Seqi)=1,則表明Seqi是正常序列;如果class(Seqi)=0,則表明Seqi是異常序列;(84)檢測模塊從控制模塊中讀取步驟(2)中所設(shè)置的第一種檢測方案的窗長度,然后對序列(class(Seq1),class(Seq2),......,class(Seqr-1))進(jìn)行加窗處理,得到判決值D(k)=1wΣi=k-w+1kclass(S‾eqi),]]>式中,D(k)表示系統(tǒng)調(diào)用序列Seqk對應(yīng)的判決值,w表示步驟(2)中所設(shè)置的第一種檢測方案的窗長度,且w≤k≤r-1,k的增長步長為1;系統(tǒng)調(diào)用序列流S=(Seq1,Seq2,......,Seqr-1)中第w個系統(tǒng)調(diào)用序列及其后面的每個系統(tǒng)調(diào)用序列都分別對應(yīng)一個判決值;(85)檢測模塊從控制模塊中讀取步驟(2)中所設(shè)置的第一種檢測方案的判決門限,并利用該判決門限和判決值D(k)對被監(jiān)控的特權(quán)程序的“當(dāng)前行為”做出判決;具體判決方法為如果D(k)大于或等于判決門限,將被監(jiān)控的特權(quán)程序的“當(dāng)前行為”判為正常行為,否則,將其判為攻擊或入侵行為;上述步驟(81)至步驟(85)中,被監(jiān)控程序所執(zhí)行的系統(tǒng)調(diào)用或系統(tǒng)調(diào)用流的獲取、序列的生成與匹配、判決值的計(jì)算以及對程序行為的判決都是同步進(jìn)行的。
9.根據(jù)權(quán)利要求2所述的基于序列模式挖掘的程序級入侵檢測系統(tǒng)的檢測方法,其特征在于所述步驟(9)中系統(tǒng)按照第二種檢測方案進(jìn)行檢測工作的具體步驟如下(91)數(shù)據(jù)采集和預(yù)處理模塊實(shí)時地從服務(wù)器系統(tǒng)中獲取被監(jiān)控的特權(quán)程序在被監(jiān)控時間內(nèi)所產(chǎn)生的系統(tǒng)調(diào)用流,并對該系統(tǒng)調(diào)用流進(jìn)行預(yù)處理后成為不含參數(shù)的包含r個的系統(tǒng)調(diào)用的系統(tǒng)調(diào)用流R=(s1,s2,......,sr),其中sk表示按時間順序排列的第k個系統(tǒng)調(diào)用,k是區(qū)間[1,r]中的自然數(shù);該系統(tǒng)調(diào)用流中的各個系統(tǒng)調(diào)用按照時間順序依次被輸出至檢測模塊;(92)檢測模塊從控制模塊中讀取訓(xùn)練狀態(tài)下步驟(2)中所設(shè)置的參數(shù)序列長度的個數(shù)W以及序列長度l(1)、l(2)、......、l(W),其中l(wèi)(j)是第j個序列長度,j是區(qū)間[1,W]中的自然數(shù);(93)對于系統(tǒng)調(diào)用流R=(s1,s2,.......,sr)中第l(W)個系統(tǒng)調(diào)用之后的每個系統(tǒng)調(diào)用sk,檢測模塊以sk為終點(diǎn)組成W個長度分別為l(1)、l(2)、......、l(W)的系統(tǒng)調(diào)用序列,該W個序列分別表示為Seqk1、Seqk2、......、Seqkw,其中Seqkj是長度為l(j)的系統(tǒng)調(diào)用序列,即S‾eqkj=(s‾k-l(j)+1,s‾k-l(j)+2,......,s‾k),]]>j是區(qū)間[1,W]中的自然數(shù);(94)對于以sk為終點(diǎn)組成的W個系統(tǒng)調(diào)用序列Seqk1、Seqk2、......、SeqkW,檢測模塊按照自然數(shù)j從1到W的順序,依次將Seqkj同步驟(65)中建立的序列模式庫Ω(j)進(jìn)行比較如果滿足S‾eqkj∈Ω(j),]]>則class(sk)=1;否則,class(sk)=0;也就是說,如果W個序列Seqk1、Seqk2、......、SeqkW中有一個序列與步驟(65)中建立的正常序列庫Ω={Ω(1),Ω(2),......,Ω(W)}中的某個序列相同,則class(sk)=1,否則,class(sk)=0;經(jīng)過上述運(yùn)算得到序列(class(sl(w)),class(sl(w)+1),......,class(sr)),其中class(sk)表示系統(tǒng)調(diào)用sk所對應(yīng)的程序行為的類別如果class(sk)=1,則表明sk所對應(yīng)的程序行為是正常行為;如果class(sk)=0,則表明sk所對應(yīng)的程序行為是異常行為;(95)檢測模塊從控制模塊中讀取步驟(2)中所設(shè)置的第二種檢測方案的窗長度,然后對序列(class(sl(W)),class(sl(W)+1),......,class(sr))進(jìn)行加窗處理,得到系統(tǒng)調(diào)用sk對應(yīng)的判決值D(k)=1wΣi=k-w+1kclass(s‾i),]]>式中,w表示步驟(2)中所設(shè)置的第二種檢測方案的窗長度,且w+l(W)-1≤k≤r,k的增長步長為1;系統(tǒng)調(diào)用流R=(s1,s2,.......,sr)中第w+l(W)-1個系統(tǒng)調(diào)用及其后面的每個系統(tǒng)調(diào)用都分別對應(yīng)一個判決值;(96)檢測模塊從控制模塊中讀取步驟(2)中所設(shè)置的第二種檢測方案的判決門限,并利用該判決門限和判決值D(k)對被監(jiān)控特權(quán)程序的“當(dāng)前行為”做出判決;具體判決方法為如果D(k)大于或等于判決門限,將被監(jiān)控特權(quán)程序的“當(dāng)前行為”判為正常行為,否則,將其判為攻擊或入侵行為;上述步驟(91)至步驟(96)中,被監(jiān)控程序所執(zhí)行的系統(tǒng)調(diào)用或系統(tǒng)調(diào)用流的獲取、序列的生成與匹配、判決值的計(jì)算以及對程序行為的判決都是同步進(jìn)行的。
全文摘要
一種基于序列模式挖掘的程序級入侵檢測系統(tǒng)和方法,該系統(tǒng)由控制模塊、數(shù)據(jù)采集和預(yù)處理模塊、訓(xùn)練模塊、存儲模塊、檢測模塊、檢測結(jié)果輸出模塊組成,配置在需要監(jiān)控的服務(wù)器上。該系統(tǒng)采用基于數(shù)據(jù)挖掘的異常檢測技術(shù),通過監(jiān)控網(wǎng)絡(luò)服務(wù)器中特權(quán)程序的運(yùn)行情況來檢測網(wǎng)絡(luò)中的各種攻擊活動;即以特權(quán)程序運(yùn)行時所產(chǎn)生的系統(tǒng)調(diào)用作為審計(jì)數(shù)據(jù),利用數(shù)據(jù)挖掘技術(shù)中的序列模式表示一個特權(quán)程序的正常行為,根據(jù)序列的支持度或可信度在訓(xùn)練數(shù)據(jù)中挖掘正常序列模式,并建立相應(yīng)的正常序列模式庫;檢測時通過將當(dāng)前序列模式和正常序列模式進(jìn)行比較和匹配來識別攻擊行為,以便引起網(wǎng)絡(luò)安全管理員的密切注意和采取相應(yīng)的處理措施來保證安全。
文檔編號H04L12/24GK1649312SQ20051005693
公開日2005年8月3日 申請日期2005年3月23日 優(yōu)先權(quán)日2005年3月23日
發(fā)明者田新廣, 隋進(jìn)國, 李學(xué)春, 王輝柏, 鄒濤 申請人:北京首信科技有限公司