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