專利名稱:一種計算機軟件漏洞利用的捕獲方法及系統(tǒng)的制作方法
一種計算機軟件漏洞利用的捕獲方法及系統(tǒng)所屬技術(shù)領(lǐng)域
本發(fā)明屬于互聯(lián)網(wǎng)安全技術(shù)領(lǐng)域,具體涉及一種對計算機軟件漏洞利用進行捕獲的方法及系統(tǒng)。
背景技術(shù):
隨著網(wǎng)絡和計算機技術(shù)的快速發(fā)展,計算機和計算機網(wǎng)絡已經(jīng)成為各行各業(yè)的關(guān)鍵技術(shù)之一。與此同時,廣泛存在的計算機軟件漏洞成為一個巨大的威脅。一個漏洞利用(Vulnerability Exploit),指一段數(shù)據(jù)或者程序,可以使被利用的存在漏洞的軟件完成攻擊者預先指定的惡意功能,例如使存在漏洞的計算機軟件終止,或者使其成為一個木馬后門等。目前,漏洞利用已經(jīng)成為了一種戰(zhàn)略資源。各國都成立了自己的漏洞庫,比較著名的有美國國家漏洞數(shù)據(jù)庫(National Vulnerability Database),中國國家信息安全漏洞庫(China NationalVulnerability Database of Information Security),國家信息安全漏洞共享平臺,(China NationalVulnerability Database),以及國際著名漏洞庫 CVE(Common Vulnerabilities&Exposures)。這些漏洞庫中收錄了數(shù)萬種漏洞以及它們的利用(Exploit)。
計算機軟件漏洞利用和計算機軟件漏洞是緊密關(guān)系的,每一個軟件漏洞利用都對應至少一個軟件漏洞,而一個軟件漏洞不一定有其利用。換句話說,一個軟件漏洞是不一定可以被利用的。于是,軟件漏洞發(fā)掘是一種可能獲得軟件漏洞利用的方法。軟件漏洞發(fā)掘已經(jīng)成為了計算機安全的研究熱點之一,從分類上可以將其分為靜態(tài)分析、動態(tài)分析以及混合分析三類。這些方法可以發(fā)掘出前人不知道的漏洞,也被成為零日漏洞(Oday Vulnerability)。零日漏洞的價值非常高。退而求其次,在互聯(lián)網(wǎng)上捕獲他人攻擊使用的漏洞利用,亦可獲得漏洞利用。如果在一個打滿最新補丁的計算機上捕獲了一個攻擊者的漏洞利用,那么就意味著捕獲到了一個即日的漏洞利用(lday Vulnerability Exploit)。這類漏洞利用有多種用途,例如用來加固計算機系統(tǒng)的防御功能,也可再次用于戰(zhàn)略用途等。 于是計算機軟件利用捕獲也成為了一項很關(guān)鍵的技術(shù)。使用計算機軟件利用捕獲技術(shù),可以“守株待兔”地得到漏洞利用。
漏洞利用捕獲系統(tǒng)是這樣一類系統(tǒng)它由一臺或若干臺計算機(通常是虛擬機) 組成,這些計算機被接入到互聯(lián)網(wǎng),等待被惡意代碼攻擊,并實時記錄下攻擊行為并生成一個“簽名”,這個“簽名”可以用來識別或代表一個漏洞利用。同時,簽名被存儲下來,用于之后的分析等。
目前已有的軟件漏洞利用捕獲技術(shù)都是基于軟件虛擬機(Software Virtual Machine),它們可以明確地分為兩類使用污點分析(Taint analysis)的漏洞利用分析, 和用來改進計算機網(wǎng)絡入侵檢測系統(tǒng)的網(wǎng)絡報文提取系統(tǒng)。第一類技術(shù)以BitBlaze為代表,可見文章“A NewApproach to Computer Security via Binary Analysis, Dawn Song, et al,In Proceedings of the 4thInternational Conference on Information Systems Security, December 2008”。這類技術(shù)的特點是,利用污點傳播原理,從漏洞觸發(fā)點精確回溯到程序輸入中,獲得漏洞利用的全過程,幫助重建漏洞利用。并用形式化的方法生成指紋。這類技術(shù)的不足是,時間代價過于龐大,根本無法用于實際分析,動輒一個漏洞分析就要幾天甚至幾周。一個具體利用該原理的已經(jīng)投入實用的漏洞利用捕獲系統(tǒng)是Argos。 第二類方法的代表是在文章“Detecting Targeted Attacks UsingShadow Honeypots, KG Anagnostakis, et al, SSYM' 05 Proceedings of the 14th conference onUSENIX Security Symposium”中被提出的。這類方法使用軟件虛擬機,將軟件漏洞觸發(fā)和當時的網(wǎng)絡數(shù)據(jù)報文相關(guān)聯(lián),識別出哪些網(wǎng)絡數(shù)據(jù)報文會觸發(fā)軟件漏洞,并在計算機網(wǎng)絡的入侵檢測系統(tǒng)中添加這些網(wǎng)絡數(shù)據(jù)報文的特征作為指紋,從而使這種網(wǎng)絡數(shù)據(jù)報文被過濾掉,不會再次觸發(fā)計算機上的軟件漏洞。該方法的優(yōu)點是可以在一定程度上抵御該漏洞利用的再次利用。缺點是無法獲知該漏洞的詳細利用原理,并且無法抵御可能存在的變形多態(tài)代碼攻擊。此外,這兩項技術(shù)的共同缺點是,均使用了軟件虛擬機,很容易被攻擊者檢測出,從而不表現(xiàn)出惡意行為,讓這兩種技術(shù)均失效。
硬件虛擬機技術(shù)是不同于軟件虛擬機技術(shù)的另一種虛擬機技術(shù)。使用硬件虛擬機技術(shù),需要CPU的硬件支持,例如htel公司的htel VT技術(shù)和AMD公司的SVM技術(shù);同時, 還需要在虛擬機的宿主操作系統(tǒng)上做一些修改,例如增加內(nèi)核模塊,來建立、運行和管理硬件虛擬機。硬件虛擬機采用真實執(zhí)行技術(shù),取代了軟件虛擬機中的指令模擬或者動態(tài)翻譯, 在運行速度和模擬真實性上都有巨大的提升。發(fā)明內(nèi)容
本發(fā)明的目的是克服現(xiàn)有技術(shù)中的問題,提供一種計算機軟件漏洞利用的捕獲方法及系統(tǒng),利用在互聯(lián)網(wǎng)上布置的硬件虛擬機進行監(jiān)控,同時對已經(jīng)攻擊成功或者表現(xiàn)出明顯攻擊特征但未成功的漏洞利用進行捕獲,并存儲到數(shù)據(jù)庫中。
為了達到上述目的,本發(fā)明采用如下技術(shù)方案
一種計算機軟件漏洞利用的捕獲方法,其步驟包括
1)在硬件虛擬機內(nèi)啟動待監(jiān)視進程;
2)獲得所述進程的執(zhí)行序列,并實時提取和記錄所述執(zhí)行序列的特征;
3)判定是否存在軟件漏洞利用攻擊或潛在的軟件漏洞利用攻擊,若存在,將所述漏洞利用攻擊觸發(fā)時記錄的所述執(zhí)行序列的特征作為簽名存儲到數(shù)據(jù)庫中;
4)將所述簽名和所述數(shù)據(jù)庫中已有的簽名進行比對,判斷所述軟件漏洞利用攻擊是否為新捕獲的軟件漏洞利用攻擊。
步驟2、所述的執(zhí)行序列是指虛擬機內(nèi)部受監(jiān)視進程中的一個線程執(zhí)行的指令序列;所述執(zhí)行序列的特征是一個所述執(zhí)行序列的子序列,由所述執(zhí)行序列中符合下述條件的指令組成在所述執(zhí)行序列中,這條指令與其緊挨著執(zhí)行的下一條指令的EIP值之差 ^ 16。
步驟幻所述的判定,其規(guī)則是如果受監(jiān)視進程執(zhí)行了所有當時裝載的可執(zhí)行模塊之外的代碼,則認為是攻擊成功并存在一個軟件漏洞利用攻擊;如果受監(jiān)視進程觸發(fā)了系統(tǒng)的崩潰代碼,則認為是攻擊成功并存在一個潛在的漏洞利用攻擊。
一種軟件漏洞利用的捕獲系統(tǒng),適用于上述方法,包括至少一臺連接互聯(lián)網(wǎng)的宿主計算機和一數(shù)據(jù)庫系統(tǒng);
所述宿主計算機內(nèi)安裝
至少一個硬件虛擬機,其內(nèi)運行待監(jiān)視進程,
控制器,用于控制捕獲軟件漏洞利用的程序,
記錄器,用于獲得所述待監(jiān)視進程的執(zhí)行序列,并實時提取和記錄所述執(zhí)行序列的特征,以及
分析器,用于判定是否存在軟件漏洞利用攻擊;
所述數(shù)據(jù)庫系統(tǒng)用于保存簽名文件。
進一步地,所述硬件虛擬機上運行Windows操作系統(tǒng)。
進一步地,所述系統(tǒng)根據(jù)一預設時間間隔,定時重啟和回滾所述硬件虛擬機;所述時間間隔可為30分鐘,在30分鐘內(nèi)每分鐘判斷一次是否捕獲軟件漏洞利用攻擊,在30分鐘到時之后強制回滾虛擬機。
進一步地,所述系統(tǒng)在捕獲到漏洞利用之后回滾所述硬件虛擬機。
進一步地,所述數(shù)據(jù)庫系統(tǒng)安裝于所述宿主計算機內(nèi)或所述宿主計算機外。
本發(fā)明使用硬件虛擬機作為受監(jiān)視虛擬機,并采用軟件漏洞利用的捕獲方法來收集軟件漏洞利用對應的軟件執(zhí)行序列特征,并存儲到數(shù)據(jù)庫中。該執(zhí)行序列特征可以相當準確的反映程序某線程的執(zhí)行軌跡,也可以很精確的刻畫一個在一個軟件漏洞利用下,程序的執(zhí)行軌跡。本方法即用這樣的執(zhí)行序列特征來作為指紋刻畫軟件漏洞利用,將其作為本漏洞利用捕獲方法所捕獲的漏洞利用特征。與現(xiàn)有技術(shù)相比,本發(fā)明的優(yōu)點和積極效果如下
1)具有非常高的運行速度,與傳統(tǒng)的軟件虛擬機的漏洞利用捕獲相比,本發(fā)明可以在記錄軟件執(zhí)行路徑的同時與攻擊者進行交互,從而獲得更多的被攻擊機會,提高整個分析系統(tǒng)效率,這是傳統(tǒng)的軟件虛擬機漏洞利用捕獲所無法做到的;
2)具有更高的隱蔽性攻擊者更難以檢測出這是一臺虛擬機而不是真實機,從而也能更多的獲得被攻擊機會;
3)具有更高的捕獲效率使用精確的軟件執(zhí)行序列特征作為指紋,在不丟失精確性的前提下極高的提升了捕獲效率,支持監(jiān)視更多、更龐大的軟件,甚至操作系統(tǒng);
4)能夠兼容更多的受監(jiān)視軟件因為已有許多軟件可以識別自身是否運行在軟件虛擬機中,而無法檢測到硬件虛擬機的存在。
圖1為本發(fā)明實施例的計算機軟件漏洞利用的捕獲方法的流程圖。
圖2為本發(fā)明實施例的指令執(zhí)行序列特征提取示意圖。
圖3為本發(fā)明實施例的計算機軟件漏洞利用的捕獲系統(tǒng)的拓撲結(jié)構(gòu)示意圖,其中1.互聯(lián)網(wǎng);2.宿主計算機;3.硬件層;4.虛擬機控制器;5.硬件虛擬機;6.分析器; 7.記錄器;8.數(shù)據(jù)庫系統(tǒng)。
圖4為應用本發(fā)明實施例中計算機軟件漏洞利用的捕獲系統(tǒng)捕獲漏洞利用的腳本流程圖。
具體實施方式
下面通過實施例并結(jié)合附圖,對本發(fā)明做詳細的說明。
本發(fā)明一實施例的計算機軟件漏洞利用的捕獲方法,其步驟包括
1)在硬件虛擬機內(nèi)啟動待監(jiān)視進程;
2)獲得所述進程的執(zhí)行序列,并實時提取和記錄所述執(zhí)行序列的特征;
3)判定是否存在軟件漏洞利用攻擊或潛在的軟件漏洞利用攻擊,若存在,將所述漏洞利用攻擊觸發(fā)時記錄的所述執(zhí)行序列的特征作為簽名存儲到數(shù)據(jù)庫中;
4)將所述簽名和所述數(shù)據(jù)庫中已有的簽名進行比對,判斷所述軟件漏洞利用攻擊是否為新捕獲的軟件漏洞利用攻擊。
上述步驟2、中,一個執(zhí)行序列是指虛擬機內(nèi)部受監(jiān)視進程中一個線程執(zhí)行的指令序列。執(zhí)行序列的特征是一個執(zhí)行序列的子序列,由原執(zhí)行序列中符合下述條件的指令 (跳轉(zhuǎn)語句Jmp,ret, sysenter等)組成在原始執(zhí)行序列中,這條指令與其緊挨著執(zhí)行的下一條指令的指令指針寄存器(EIP)值之差彡16。由于intel x86體系結(jié)構(gòu)中,常用的最長指令為15字節(jié),所以如果相鄰兩條指令跨越了 16字節(jié)或以上就意味著發(fā)生了一次跳轉(zhuǎn)。 因此16字節(jié)的跨度可以截取到絕大部分跳轉(zhuǎn)(局部小跳轉(zhuǎn)截獲不到,不過這樣的情況非常少)。這樣定義的執(zhí)行序列特征可以相當準確的反映程序某線程的執(zhí)行軌跡,也可以很精確的刻畫一個在一個軟件漏洞利用下,程序的執(zhí)行軌跡。本方法即用這樣的執(zhí)行序列特征來作為指紋刻畫軟件漏洞利用。
上述步驟3)中,判定漏洞利用和潛在漏洞利用攻擊的規(guī)則是如果受監(jiān)視進程執(zhí)行了在所有當時裝載的可執(zhí)行模塊(exe,dll等)之外的代碼,則認為是攻擊成功,存在一個軟件漏洞利用攻擊;如果受監(jiān)視進程觸發(fā)了系統(tǒng)的崩潰代碼,則認為是攻擊成功并存在一個潛在的漏洞利用攻擊。
結(jié)合步驟2、和步驟幻,即可記錄下在發(fā)生軟件漏洞利用攻擊時程序的執(zhí)行序列特征。這個特征就作為本漏洞利用捕獲方法所捕獲的漏洞利用特征。
圖1是上述實施例的計算機軟件漏洞利用捕獲方法的具體流程圖。該方法使用硬件虛擬機提供的編程接口,該接口可以在虛擬機每次執(zhí)行虛擬機內(nèi)部指令時額外執(zhí)行虛擬機控制器的一些代碼。本發(fā)明的的漏洞利用的捕獲方法即附加在虛擬機控制器的這一部分代碼中。該方法的漏洞利用捕獲程序在每次指令執(zhí)行消息來臨時執(zhí)行一次。
虛擬機提供的接口包括現(xiàn)在執(zhí)行指令的處理器上下文信息,以及解析后的當前進程ID和線程ID??赡苄枰奶摂M機來增加獲得當前進程ID和線程ID的功能,其方法是使用虛擬機提供的接口讀取虛擬機內(nèi)部CPU的FS段寄存器,F(xiàn)S段寄存器指向的是線程控制塊,線程控制塊的0x20和OxM偏移位置存儲的就是當前線程的PID和TID。然后通過虛擬機提供的讀取虛擬機內(nèi)存特定位置值的函數(shù),讀取這兩個位置的值,然后返回給調(diào)用者ο
下面對圖1所示的流程進行詳細的描述
第一步,判斷是否為新創(chuàng)建的進程。如果是則初始化一個新的進程記錄結(jié)構(gòu);否則找出已有的進程記錄結(jié)構(gòu)。該進程記錄結(jié)構(gòu)記錄了此進程的進程號、此進程每個線程的執(zhí)行序列特征(初始化為空)、以及該進程的模塊列表(初始化為空)。
第二步,判斷是否為一個新線程。如果是新線程,則像當前進程記錄結(jié)構(gòu)中插入一個新的線程記錄結(jié)構(gòu);否則直接使用已有的線程記錄結(jié)構(gòu)。該線程記錄結(jié)構(gòu)記錄當前的線程號、當前線程隸屬于哪個進程、以及當前線程的執(zhí)行序列特征。
第三步,判斷是否為線程ID重用。如果是重用,則需清空此線程對應的記錄結(jié)構(gòu), 重新開始記錄。如果不是重用,則不用做任何動作;否則需要更新當前線程記錄結(jié)構(gòu)中的進程號為新此時的進程號。
第四步,判斷是否發(fā)生了漏洞利用攻擊,即EIP值是否落在可執(zhí)行模塊內(nèi)。如果沒有落在可執(zhí)行模塊內(nèi),則可能加載了新的可執(zhí)行模塊。于是此時就利用虛擬機提供的接口, 重新獲取可執(zhí)行模塊信息,并再次判斷是否EIP落在可執(zhí)行模塊內(nèi)。如果還是否,那么證明已經(jīng)觸犯了上述關(guān)于漏洞利用判定的規(guī)則,即可報漏洞利用被檢測到并記錄進入數(shù)據(jù)庫, 同時終止虛擬機,等待回滾和下一次的漏洞利用捕獲。另一方面,如果發(fā)現(xiàn)EIP落在了可執(zhí)行模塊內(nèi),則說明剛才發(fā)生了模塊裝載,此時更新模塊信息即可。
第五步,建立執(zhí)行序列特征,即判斷是否發(fā)生了跳轉(zhuǎn)(EIP之差大于等于16)。如果是,則將語句信息附加到線程記錄結(jié)構(gòu)的末尾,作為執(zhí)行序列特征的一個點;如果沒有發(fā)生跳轉(zhuǎn),則直接更新當前線程記錄結(jié)構(gòu)的最后一條指令為此條指令,方便下次判斷(這樣做的好處是,不用額外設置一個地方存儲當前尚未決定是不是跳轉(zhuǎn)的語句,直接利用最后一條的空間作為臨時空間)。圖2為該實施例中的生成指令執(zhí)行序列特征的示意圖。其中圖2左側(cè)一列代表原始執(zhí)行序列,中間一列是通過上述的判定方法,找出的執(zhí)行序列特征, 右側(cè)一列是將執(zhí)行序列特征抽取出來之后得出的完整的指令執(zhí)行序列特征。
上述步驟都結(jié)束之后,即可將控制權(quán)轉(zhuǎn)移給虛擬機控制器,繼續(xù)執(zhí)行虛擬機。
每進行一次這樣的循環(huán),虛擬機內(nèi)的待分析進程就執(zhí)行一條機器指令。虛擬機并不會在所有指令上都觸發(fā)這樣的分析機制,只在待分析進程正在被CPU執(zhí)行時才會觸發(fā), 這是由虛擬機自己的機制可以保證的。
在上述實施例中,讀取待分析進程的可執(zhí)行模塊的功能可通過下面方法實現(xiàn)
首先從虛擬機的FS寄存器中讀出FS寄存器的值,在此假設為fs_base,其指向的內(nèi)存的0x30偏移處為指向進程控制塊(PEB)的指針,其結(jié)構(gòu)可參見Windows Internals第五版。用虛擬機提供的功能,讀出此指針的值,設為PPEB。用pPEB加上0x0c,即可得到指向LDR鏈表的指針。再用虛擬機提供的函數(shù)讀出這個位置的值,得到指向LDR鏈表的指針, 設為PLDR。這時pLDR指向的就是一個模塊信息鏈表的一個元素,其0x10,0x18,0U8偏移處存儲的是模塊基地址、模塊大小、和模塊名字指針。用虛擬機提供的函數(shù)分別讀出這三個位置的值,即可得到模塊的這幾個信息,保存在當前進程的進程信息塊中。在PLDR的位置是一個前向鏈表結(jié)構(gòu),直接讀取PLDR的值就可以獲得這個鏈表的下一項,然后重復這個過程直到PLDR指針為NULL,即可得到所有的可執(zhí)行模塊信息。
圖3是本發(fā)明一個實施例的計算機軟件漏洞利用的捕獲系統(tǒng)的拓撲結(jié)構(gòu)示意圖。 在該軟件漏洞利用捕獲系統(tǒng)中,存在著一個或多個連接互聯(lián)網(wǎng)1的宿主計算機2。每個宿主計算機2獨立工作,是獨立的個體。宿主計算機2最底層是硬件層3,其上是虛擬機控制器 4,即虛擬機軟件,負責在開始分析之后,觸發(fā)上述的分析機制。在虛擬機控制器之上運行著一個或多個硬件虛擬機5,以同時抓取多個軟件漏洞利用;以及分析器6和記錄器7,與虛擬機控制器4之間交互來捕獲漏洞利用。同時,在宿主計算機內(nèi)運行著數(shù)據(jù)庫系統(tǒng)8,負責保存生成的簽名文件。在其它實施例中,數(shù)據(jù)庫系統(tǒng)8也可以在宿主計算機2之外,本發(fā)明并不限于此。上述漏洞利用捕獲系統(tǒng)可以根據(jù)提前設定的時間間隔,定時重啟、回滾虛擬機;也可在捕捉到漏洞利用之后,迅速回滾虛擬機,以方便再次捕捉。
下面以一臺宿主計算機上的一臺硬件虛擬機為例,詳細描述捕獲漏洞利用的過程。
首先,在硬件虛擬機中運行待分析軟件,等待分析軟件持續(xù)在虛擬機中正常運行時,用虛擬機提供的快照功能保存虛擬機快照。
然后,執(zhí)行漏洞利用捕獲系統(tǒng)的腳本,其流程如圖4所示。第一步,用回滾的方式, 初始化一個硬件虛擬機。這個硬件虛擬機狀態(tài)是被提前設置好的,設置過程就是在宿主計算機上安裝操作系統(tǒng),然后配置待分析環(huán)境,最后運行分析程序。在待分析程序進入待分析狀態(tài)時,保存虛擬機狀態(tài)快照。第二步,打開記錄器和分析器,通過虛擬機管理層,監(jiān)視虛擬機中待分析程序的執(zhí)行。此記錄器和分析器即實現(xiàn)了本發(fā)明中的漏洞利用捕獲方法。其中, 記錄器用于記錄執(zhí)行序列的特征,分析器用于判定是否存在漏洞攻擊。然后進入一個時間判斷循環(huán)。在30分鐘內(nèi)每分鐘判斷一次是不是已經(jīng)有漏洞利用被發(fā)現(xiàn),如果已發(fā)現(xiàn),則證明系統(tǒng)捕捉成功,則可恢復到初始狀態(tài),繼續(xù)捕捉下一個漏洞利用。如果否,則再讓虛擬機持續(xù)運行一分鐘。30分鐘到時之后強制回滾虛擬機,保證虛擬機運行的穩(wěn)定性。
上述實施例僅是為了說明本發(fā)明的技術(shù)原理,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的同等變化與修改,均應包含在本發(fā)明的保護范圍之內(nèi)。
權(quán)利要求
1.一種計算機軟件漏洞利用的捕獲方法,其步驟包括1)在硬件虛擬機內(nèi)啟動待監(jiān)視進程;2)獲得所述進程的執(zhí)行序列,并實時提取和記錄所述執(zhí)行序列的特征;3)判定是否存在軟件漏洞利用攻擊或潛在的軟件漏洞利用攻擊,若存在,將該漏洞利用攻擊觸發(fā)時記錄的所述執(zhí)行序列的特征作為簽名存儲到數(shù)據(jù)庫中;4)將所述簽名和所述數(shù)據(jù)庫中已有的簽名進行比對,判斷所述軟件漏洞利用攻擊是否為新捕獲的軟件漏洞利用攻擊。
2.如權(quán)利要求1所述的方法,其特征在于,所述執(zhí)行序列是指虛擬機內(nèi)部受監(jiān)視進程中的一個線程執(zhí)行的指令序列;所述執(zhí)行序列的特征是一個所述執(zhí)行序列的子序列,由符合下述條件的指令組成在所述執(zhí)行序列中,這條指令與其下一條指令的EIP值之差> 16。
3.如權(quán)利要求1所述的方法,其特征在于,步驟3)所述判定的規(guī)則是如果受監(jiān)視進程執(zhí)行了當時裝載的可執(zhí)行模塊之外的代碼,則認為是攻擊成功并存在一軟件漏洞利用攻擊;如果受監(jiān)視進程觸發(fā)了系統(tǒng)的崩潰代碼,則認為是攻擊成功并存在一潛在的軟件漏洞利用攻擊。
4.如權(quán)利要求1所述的方法,其特征在于,所述方法使用所述硬件虛擬機提供的編程接口,包括執(zhí)行指令的處理器上下文信息,以及解析后的進程ID和線程ID。
5.一種采用如權(quán)利要求1所述方法的軟件漏洞利用的捕獲系統(tǒng),包括至少一臺連接互聯(lián)網(wǎng)的宿主計算機和一數(shù)據(jù)庫系統(tǒng);所述宿主計算機內(nèi)安裝至少一個硬件虛擬機,所述硬件虛擬機內(nèi)運行待監(jiān)視進程,控制器,用于控制捕獲軟件漏洞利用的程序,記錄器,用于獲得所述待監(jiān)視進程的執(zhí)行序列,并實時提取和記錄所述執(zhí)行序列的特征,以及分析器,用于判定是否存在軟件漏洞利用攻擊;所述數(shù)據(jù)庫系統(tǒng)用于保存生成的簽名文件。
6.如權(quán)利要求5所述的系統(tǒng),其特征在于,所述硬件虛擬機上運行Windows操作系統(tǒng)。
7.如權(quán)利要求5所述的系統(tǒng),其特征在于,所述系統(tǒng)根據(jù)一預設時間間隔,定時重啟和回滾所述硬件虛擬機。
8.如權(quán)利要求7所述的系統(tǒng),其特征在于,所述時間間隔為30分鐘。
9.如權(quán)利要求5所述的系統(tǒng),其特征在于,所述系統(tǒng)在捕獲到漏洞利用之后回滾所述硬件虛擬機。
10.如權(quán)利要求5所述的系統(tǒng),其特征在于,所述數(shù)據(jù)庫系統(tǒng)安裝于所述宿主計算機內(nèi)或所述宿主計算機外。
全文摘要
本發(fā)明提供一種計算機軟件漏洞利用的捕獲方法及系統(tǒng)。該方法利用在互聯(lián)網(wǎng)上布置的硬件虛擬機進行監(jiān)控,同時對已經(jīng)攻擊成功或者表現(xiàn)出明顯攻擊特征但未成功的漏洞利用進行捕獲,并存儲到數(shù)據(jù)庫中。該系統(tǒng)適用于上述方法,包括至少一臺連接互聯(lián)網(wǎng)的宿主計算機和一數(shù)據(jù)庫系統(tǒng),所述宿主計算機內(nèi)安裝至少一個硬件虛擬機、控制器、記錄器和分析器。本發(fā)明的漏洞利用的捕獲方法及系統(tǒng),具有運行速度快、隱蔽性好和捕獲效率高的優(yōu)點。
文檔編號G06F21/00GK102521542SQ20111042805
公開日2012年6月27日 申請日期2011年12月19日 優(yōu)先權(quán)日2011年12月19日
發(fā)明者丁羽, 張超, 戴帥夫, 韋韜 申請人:北京大學