專利名稱:一種高兼容性的監(jiān)控Windows內(nèi)核函數(shù)調(diào)用的方法
技術(shù)領(lǐng)域:
本發(fā)明屬于計(jì)算機(jī)安全領(lǐng)域,通過(guò)提出一種新型的Windows內(nèi)核函數(shù)調(diào)用的監(jiān)控方法, 利用擴(kuò)展SSDT映射表和修改Windows調(diào)用內(nèi)核函數(shù)時(shí)的跳轉(zhuǎn)偏移量?jī)煞N方法的結(jié)合,達(dá)到監(jiān) 控系統(tǒng)內(nèi)核函數(shù)調(diào)用的目的,并實(shí)現(xiàn)與其他Windows內(nèi)核函數(shù)監(jiān)控方法的兼容。
背景技術(shù):
近年來(lái)隨著網(wǎng)絡(luò)應(yīng)用的深入發(fā)展,網(wǎng)絡(luò)安全也正面臨極大的挑戰(zhàn),特別是近一兩年網(wǎng)絡(luò) 上猖獗的特洛伊木馬和后門(mén),讓人望而色變,成為當(dāng)前網(wǎng)絡(luò)安全威脅最大的因素。傳統(tǒng)的基 于靜態(tài)特征掃描的安全技術(shù)已經(jīng)遠(yuǎn)遠(yuǎn)不能適應(yīng)惡意代碼的爆炸性的變化和增長(zhǎng),因此越來(lái)越 多的安全軟件開(kāi)始以主動(dòng)防御作為發(fā)展的方向,既有以主動(dòng)防御技術(shù)為主的東方微點(diǎn)主動(dòng)防 御軟件,也有加入主動(dòng)防御功能傳統(tǒng)殺毒軟件,例如卡巴斯基、瑞星、金山、江民等。
目前主動(dòng)防御的形式主要都是通過(guò)對(duì)系統(tǒng)內(nèi)核不同層次函數(shù)的監(jiān)控,進(jìn)而通過(guò)不同的安 全策略和算法來(lái)進(jìn)行行為判斷。但是目前各種主動(dòng)防御軟件的內(nèi)核監(jiān)控方法往往是嚴(yán)重沖突 的,甚至與一些安全檢測(cè)軟件也是相沖突的。在主動(dòng)防御技術(shù)尚未成熟,仍需要與傳統(tǒng)的基 于特征掃描技術(shù)的殺毒軟件兼容的局面下,如何能做到內(nèi)核監(jiān)控技術(shù)的高兼容性就成為主動(dòng) 防御發(fā)展道路上必須解決的問(wèn)題。
當(dāng)前主流的內(nèi)核監(jiān)控技術(shù)五花八門(mén),例如修改程序IAT表、修改DLL的EAT表、修改內(nèi)存中 DLL文件的API函數(shù)、替換程序和DLL文件、修改IDT表、修改SSDT表、修改IRP函數(shù)表等等方式。 這些方法主要都是通過(guò)修改應(yīng)用程序調(diào)用系統(tǒng)內(nèi)核函數(shù)的執(zhí)行路徑,劫持正常程序及系統(tǒng)函 數(shù)調(diào)用的執(zhí)行路線,在調(diào)用內(nèi)核函數(shù)之前首先執(zhí)行監(jiān)控代碼,來(lái)達(dá)到系統(tǒng)內(nèi)核監(jiān)控功能。
由于各種方法都是通過(guò)修改Windows操作系統(tǒng)公用的內(nèi)核代碼來(lái)達(dá)到監(jiān)控的目的,因此各 種方式非常容易沖突。修改SSDT表的方法更由于其穩(wěn)定性和易用性被廣泛采用,SSDT的全稱 是System Services Descriptor Table,系統(tǒng)服務(wù)描述符表, 一般來(lái)說(shuō)此表與鏈接系統(tǒng)內(nèi)核 的API密切相關(guān),所有應(yīng)用層都需要通過(guò)訪問(wèn)它來(lái)調(diào)用系統(tǒng)內(nèi)核函數(shù),因此很多的主動(dòng)防御都 通過(guò)修改這張表來(lái)達(dá)到監(jiān)控系統(tǒng)內(nèi)核函數(shù)的目的,但如果有兩方以上的軟件同時(shí)修改它就會(huì) 造成系統(tǒng)崩潰的惡果。
例如360安全瀏覽器使用的Sandboxie和"瑞星殺毒軟件2008版"的安全防護(hù)模塊監(jiān)控了 部分相同的系統(tǒng)內(nèi)核函數(shù)調(diào)用,Sandboxie監(jiān)控時(shí)使用Inline Hook技術(shù)修改了瑞星殺毒軟件
3的監(jiān)控代碼,當(dāng)瑞星殺毒軟件升級(jí)、修復(fù)軟件和卸載時(shí),Sandboxie執(zhí)行Inline Hook時(shí)復(fù)制 的監(jiān)控代碼會(huì)導(dǎo)致系統(tǒng)崩潰藍(lán)屏;還有眾所周知的常識(shí),現(xiàn)在的殺毒軟件例如卡巴斯基、瑞 星、江民等等是不能在同一個(gè)主機(jī)操作系統(tǒng)中安裝,也是由于這樣的問(wèn)題。因此,提出種 新型的高兼容性的系統(tǒng)內(nèi)核函數(shù)監(jiān)控方法對(duì)于主動(dòng)防御產(chǎn)業(yè)的發(fā)展也是非常重要的。
發(fā)明內(nèi)容
為了做到系統(tǒng)內(nèi)核函數(shù)調(diào)用監(jiān)控的較好的兼容性,本發(fā)明結(jié)合Windows系統(tǒng)內(nèi)核調(diào)用的 流程提出了一種監(jiān)控系統(tǒng)內(nèi)核函數(shù)調(diào)用的新方法,其具體處理方位為在系統(tǒng)SSDT映射表后 添加擴(kuò)展的監(jiān)控函數(shù),然后通過(guò)修改Windows調(diào)用系統(tǒng)內(nèi)核函數(shù)時(shí)的跳轉(zhuǎn)偏移量,使被監(jiān)控 函數(shù)調(diào)用轉(zhuǎn)向擴(kuò)展的監(jiān)控函數(shù),以達(dá)到監(jiān)控Windows內(nèi)核函數(shù)調(diào)用的目的。
本方法監(jiān)控流程如下
1、 新建一張SSDT映射表,復(fù)制系統(tǒng)原有SSDT表中所有內(nèi)容到新映射表中,然后在新的
映射表后加入擴(kuò)展監(jiān)控函數(shù)的首地址和參數(shù)量等信息,使用新的SSDT映射表替 換系統(tǒng)原有的SSDT表。
2、 通過(guò)Inline Hook系統(tǒng)KiFastCallEntry函數(shù),加入監(jiān)控判斷代碼。
3、 在第2步中加入的監(jiān)控判斷代碼內(nèi)判斷被調(diào)用函數(shù)(通過(guò)EAX寄存器中數(shù)值來(lái)確認(rèn))
是否為被監(jiān)控函數(shù),是則修改EAX寄存器的值為SSDT映射表中相應(yīng)監(jiān)控函數(shù)的 偏移量,不是則不進(jìn)行任何修改。
4、 在SSDT映射表中的監(jiān)控函數(shù)中提取被監(jiān)控函數(shù)參數(shù)中的信息并進(jìn)行處理。 本方法具有的優(yōu)點(diǎn)如下
1、 較高的兼容性通過(guò)建立一張SSDT映射表并在該映射表尾部追加監(jiān)控函數(shù),達(dá)到并 不修改原表的目的,避免了與其他監(jiān)控沖突的可能。
2、 較好的穩(wěn)定性、易用性該方法在修改SSDT表的基礎(chǔ)上進(jìn)行內(nèi)核函數(shù)調(diào)用監(jiān)控,具 有較好的穩(wěn)定性和易用性。
圖1是高兼容性的監(jiān)控Windows內(nèi)核函數(shù)調(diào)用的方法的原理示意圖。
具體實(shí)施例方式
本發(fā)明提出的一種新型的高兼容性的基于Windows平臺(tái)的監(jiān)控內(nèi)核函數(shù)調(diào)用的方法的監(jiān) 控處理流程如圖l所示。
首先新建一張SSDT映射表,復(fù)制系統(tǒng)原有SSDT表中所有內(nèi)容到新映射表中,然后在新 的映射表后加入擴(kuò)展監(jiān)控函數(shù)的首地址和參數(shù)量等信息,使用新的SSDT映射表替換系統(tǒng)原有 的SSDT表。
然后通過(guò)Inline Hook系統(tǒng)KiFastCallEntry函數(shù),在系統(tǒng)中加入監(jiān)控判斷代碼,使得 任何調(diào)用KiFastCallEntry的請(qǐng)求都需要首先執(zhí)行我們的監(jiān)控判斷代碼。在該代碼中通過(guò)判 斷被調(diào)用函數(shù)(通過(guò)EAX寄存器中數(shù)值來(lái)確認(rèn))是否為被監(jiān)控函數(shù),是則修改EAX寄存器的 值為SSDT映射表中相應(yīng)監(jiān)控函數(shù)的偏移量,不是則不進(jìn)行任何修改。
通過(guò)修改后的EAX寄存器的值,使得調(diào)用原內(nèi)核函數(shù)之前首先需要調(diào)用SSDT映射表中的 擴(kuò)展監(jiān)控函數(shù)。最后在該監(jiān)控函數(shù)中提取被監(jiān)控函數(shù)參數(shù)中的信息并進(jìn)行處理。
權(quán)利要求
1、一種高兼容性的監(jiān)控Windows內(nèi)核函數(shù)調(diào)用的方法,其特征在于擴(kuò)展SSDT映射表和修改Windows調(diào)用內(nèi)核函數(shù)時(shí)的跳轉(zhuǎn)偏移量?jī)煞N方法相結(jié)合,其處理方法是在SSDT映射表后添加擴(kuò)展的監(jiān)控函數(shù),然后通過(guò)修改Windows調(diào)用系統(tǒng)內(nèi)核函數(shù)時(shí)的跳轉(zhuǎn)偏移量,使被監(jiān)控函數(shù)調(diào)用轉(zhuǎn)向擴(kuò)展的監(jiān)控函數(shù),以達(dá)到監(jiān)控Windows內(nèi)核函數(shù)調(diào)用的目的。
2、 如權(quán)利要求l所述的方法,其特征在于所述的擴(kuò)展SSDT映射表,是通過(guò)新建一張SSDT 映射表,復(fù)制系統(tǒng)原有SSDT表中所有內(nèi)容到新映射表中,然后在新的映射表后加入擴(kuò)展 監(jiān)控函數(shù)的首地址和參數(shù)量等信息,使用新的SSDT映射表替換系統(tǒng)原有的SSDT表來(lái)實(shí)現(xiàn) 的。
3、 如權(quán)利要求l所述的方法,其特征在于所述的修改Windows調(diào)用內(nèi)核函數(shù)時(shí)的跳轉(zhuǎn)偏移 量,是通過(guò)對(duì)系統(tǒng)的KiFastCallEntry函數(shù)進(jìn)行Inline Hook來(lái)實(shí)現(xiàn)的。
4、 如權(quán)利要求2所述的方法,其特征在于所述的擴(kuò)展監(jiān)控函數(shù),是通過(guò)提取被監(jiān)控函數(shù)參 數(shù)中的信息,處理后跳轉(zhuǎn)到系統(tǒng)原內(nèi)核函數(shù)執(zhí)行或者返回錯(cuò)誤代碼來(lái)實(shí)現(xiàn)的。
5、 如權(quán)利要求3和所述的方法,其特征在于所述的使被監(jiān)控函數(shù)調(diào)用轉(zhuǎn)向擴(kuò)展的監(jiān)控函數(shù), 是通過(guò)Inline Hook KiFastCallEntry函數(shù)后判斷EAX寄存器中數(shù)值是否為被監(jiān)控函數(shù)的 偏移量,是則修改EAX寄存器的值為相應(yīng)監(jiān)控函數(shù)的偏移量然后跳轉(zhuǎn)到原 KiFastCallEntry函數(shù)代碼繼續(xù)執(zhí)行,否則直接跳轉(zhuǎn)到原KiFastCallEntry函數(shù)代碼執(zhí)行 來(lái)實(shí)現(xiàn)的。
全文摘要
本發(fā)明屬于計(jì)算機(jī)安全領(lǐng)域,提出一種新型的監(jiān)控Windows內(nèi)核函數(shù)調(diào)用的方法,通過(guò)利用擴(kuò)展SSDT映射表和修改Windows調(diào)用內(nèi)核函數(shù)時(shí)的跳轉(zhuǎn)偏移量?jī)煞N方法的結(jié)合,達(dá)到監(jiān)控系統(tǒng)內(nèi)核函數(shù)調(diào)用的目的,并實(shí)現(xiàn)與其他Windows內(nèi)核函數(shù)監(jiān)控方法的兼容。
文檔編號(hào)G06F21/00GK101604370SQ20091015726
公開(kāi)日2009年12月16日 申請(qǐng)日期2009年7月6日 優(yōu)先權(quán)日2009年7月6日
發(fā)明者周建亮, 周德鍵, 宋利華, 茜 徐, 李京春, 李建興, 利 梁, 益 熊, 袁建軍 申請(qǐng)人:中國(guó)人民解放軍信息技術(shù)安全研究中心