基于系統(tǒng)調(diào)用掛鉤的隱蔽木馬程序檢測方法_第1頁
基于系統(tǒng)調(diào)用掛鉤的隱蔽木馬程序檢測方法_第2頁
基于系統(tǒng)調(diào)用掛鉤的隱蔽木馬程序檢測方法_第3頁
基于系統(tǒng)調(diào)用掛鉤的隱蔽木馬程序檢測方法_第4頁
基于系統(tǒng)調(diào)用掛鉤的隱蔽木馬程序檢測方法_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、計 算 機 工 程 第 33 卷 第20期Vol .33 No.20 Computer Engineering · 安全技術(shù) ·文章編號:10003428(200720018103文獻標識碼:A2007年10月October 2007中圖分類號:TP393基于系統(tǒng)調(diào)用掛鉤的隱蔽木馬程序檢測方法梁 曉,李毅超,崔 甲,曹 躍(電子科技大學計算機科學與工程學院網(wǎng)絡攻防實驗室,成都 610054摘 要:隱蔽木馬程序的設(shè)計本質(zhì)是劫持常規(guī)的執(zhí)行路徑流,當前大多數(shù)檢測手段無法全面檢測出隱蔽性日益增強的木馬程序。該文結(jié)合操作系統(tǒng)程序執(zhí)行流程的局部相關(guān)性與確定性,在分析用戶進程空間與內(nèi)核空

2、間中系統(tǒng)函數(shù)調(diào)用標志信息的基礎(chǔ)上,檢測系統(tǒng)中是否存在木馬程序設(shè)置的隱蔽性系統(tǒng)調(diào)用掛鉤,設(shè)計并實現(xiàn)了相應的檢測方法。與現(xiàn)有的檢測方法相比,該方案彌補了檢測未知木馬的不足,檢測結(jié)果更全面。關(guān)鍵詞:特洛伊木馬;RootKit ;系統(tǒng)調(diào)用;掛鉤;入侵檢測;Stealthy Trojan Horse Detection Method Based on System Call HookLIANG Xiao, LI Yi-chao, CUI Jia, CAO Yue(Laboratory of Network Attack & Defense, School of Computer Science

3、and Engineering,University of Electronic Science and Technology of China, Chengdu 610054【Abstract 】Trojan horses design essence lies in hijacking execution routine, and most of current detection methods fail to completely identify suchever-increasingly covert Trojan horses. The paper presents an app

4、roach to detect the existence of system call hooks set by Trojan horses based on thelocality and determinacy of execution flows, and the analysis of system function call labs in both user and kernel levels, then designs and realizescorresponding prototype. Compared with current detections, the metho

5、d offsets the deficiency in identifying unknown Trojan horses with morecomplete detection results.【Key words】Trojan horse; Rootkit; system call; hook; intrusion detection現(xiàn)有的反病毒軟件和木馬檢測軟件,可以檢測出一些常規(guī)的計算機木馬程序,但隨著網(wǎng)絡入侵技術(shù)的發(fā)展,新一代隱蔽控制技術(shù)Rootkit 的出現(xiàn),使得攻擊者能夠獲取對系統(tǒng)的完全訪問控制權(quán)限,而更重要是,它隱藏于計算機系統(tǒng)之中,不會被管理員和安全檢測軟件所發(fā)現(xiàn)?,F(xiàn)有的安全

6、檢測方法和工具由于受RootKit 程序的欺騙攻擊,無法檢測出存在于系統(tǒng)中而實行了隱蔽功能的特洛伊木馬和其他惡意程序。因此,檢測秘密隱藏在系統(tǒng)中的特洛伊木馬程序已成為網(wǎng)絡安全方面的重要課題。1 相關(guān)工作惡意程序檢測的一個關(guān)鍵問題是要能夠發(fā)現(xiàn)未知的、隱蔽的惡意程序。下面簡單介紹一些具有代表性的木馬程序檢測方法。(1完整性檢測1。通過檢查文件當前內(nèi)容計算的校驗和與原來保存的校驗和是否一致,來發(fā)現(xiàn)文件是否有所變動。這種方法能發(fā)現(xiàn)已知和未知的惡意程序,但卻不能進一步識別惡意程序類型。由于文件信息的改變有可能是正常程序引起的,因此完整性檢測方法有較大的誤報率。此外,完整性檢測法在隱蔽性惡意程序Rootk

7、it 面前仍然無效。因為Rootkit 在系統(tǒng)中一旦安裝成功之后,它就能對完整性檢測工具進行欺騙,使其得到與原始保存校驗和相同的虛假的現(xiàn)有校驗和信息。(2特征碼掃描2。主要包括特征代碼掃描法、特征字掃描法。特征碼掃描檢測技術(shù)中的特征碼包括很多不同的屬性,該方法針對已知惡意程序具有很高的準確率,誤報率低。但是這種方法不能用來檢測未知惡意程序,并且當系統(tǒng)中安裝了Rootkit 后,常規(guī)的特征碼掃描反病毒軟件將無法發(fā)現(xiàn)Rootkit 在系統(tǒng)中的存在3。(3機器學習方法。主要是從大量的、不完全的、隨機的數(shù)據(jù)集中尋找潛在的有價值的信息。因為一個新的惡意程序可能不包括已知的特征,為此提出了多種機器學習方法

8、用于惡意程序的檢測。RIPPER 方法4是一種歸納學習方法,產(chǎn)生基于特征屬性的布爾規(guī)則用于檢測今后的惡意程序。多貝葉斯分類器5通過一組簡單貝葉斯分類器的投票來確定一個實例的最終分類結(jié)果。以上方法都需要大量或是完備的程序組成的數(shù)據(jù)集,并將這些程序分成惡意和普通兩種類型,才能達到比較高的檢測性能,并且機器學習的訓練時間較長。2 基于系統(tǒng)調(diào)用掛鉤的檢測木馬程序的兩個最基本的特點就是為入侵者提供長久的對被侵占主機的訪問權(quán)限,以及實施非常隱蔽的入侵行為。為了達到隱蔽的要求,木馬程序必須修改操作系統(tǒng)的執(zhí)行路徑,或直接修改操作系統(tǒng)保存的關(guān)于進程、驅(qū)動、網(wǎng)絡連接等信息。系統(tǒng)調(diào)用掛鉤,其目的在于劫持常規(guī)的執(zhí)行路

9、徑流,然后修改由操作系統(tǒng)報告函數(shù)返回的信息,以迷惑和欺騙安基金項目:國家科技基礎(chǔ)條件平臺工作基金資助項目(2003DIA7J 051作者簡介:梁 曉(1983 ,女,碩士研究生,主研方向:計算機系統(tǒng)安全,網(wǎng)絡安全;李毅超,副教授;崔 甲,碩士研究生;曹 躍,助教收稿日期:2006-12-11 E-mail :yuecao181全檢測工具,從而達到隱蔽自身的目的。另一類基于內(nèi)存空間的檢測方法是查詢操作系統(tǒng)和系統(tǒng)進程空間中存在的掛鉤。在系統(tǒng)的很多部分都可以隱藏一個系統(tǒng)調(diào)用掛鉤,包括如下方法:導入地址表掛鉤(IAT Hook,系統(tǒng)服務描述符表掛鉤(SSDT Hook,中斷描述符表掛鉤(IDT Hoo

10、k ,驅(qū)動輸入輸出請求報文處理掛鉤(IRP Hook,內(nèi)嵌函數(shù)掛鉤(inline Function Hook。2.1 導入地址表掛鉤檢測最簡單的用戶態(tài)掛鉤就是導入地址表掛鉤。在應用程序使用一個來自其他二進制文件提供的函數(shù)時,應用程序必須導入這個函數(shù)的地址。幾乎所有的應用程序使用Win32 API都是通過導入地址表來實現(xiàn)的。應用程序使用的每個動態(tài)鏈接庫都包含在應用程序在文件系統(tǒng)中的一個映像中,這個結(jié)構(gòu)稱之為IMAGE_IMPORT_DESCRIPTOR。它包括了動態(tài)鏈接庫的名稱和兩個指向IMAGE_IMPORT_BY_NAME結(jié)構(gòu)數(shù)組的指針。結(jié)構(gòu)IMAGE_IMPORT_BY_NAME包含了應用

11、程序需要的導入函數(shù)的名稱。在應用程序被操作系統(tǒng)裝載到內(nèi)存空間中后,它所需要的動態(tài)鏈接庫一旦被映射到內(nèi)存空間,操作系統(tǒng)將定位每個需要的導入函數(shù),并重寫結(jié)構(gòu)IMAGE_IMPORT_BY_NAME中對應函數(shù)的真實地址。當木馬程序的掛鉤函數(shù)加載到應用程序地址空間中后,木馬程序就能夠分析目標應用程序的PE 文件格式,根據(jù)需要將掛鉤函數(shù)在導入地址表中的地址替換為筆者的掛鉤函數(shù)的地址。當目標函數(shù)被調(diào)用時,木馬程序的掛鉤函數(shù)將會代替原始的目標函數(shù)執(zhí)行。一旦執(zhí)行完木馬程序的掛鉤函數(shù),程序流將返回到原始目標函數(shù)的代碼執(zhí)行位置。最基本的檢測系統(tǒng)調(diào)用掛鉤的算法是尋找執(zhí)行到可接受范圍外的分支路徑。這些分支可能是由ca

12、ll 或jmp 之類的指令產(chǎn)生的。定義一個可接受的地址范圍,在大多數(shù)情況下是比較容易的。在進程中,導入地址表顯示列出包含導入函數(shù)的模塊名稱。這些模塊在內(nèi)存中有一個明確的開始地址和一個長度。根據(jù)這些地址,可以計算出可接受地址范圍。 2.2 系統(tǒng)服務描述符表掛鉤檢測在內(nèi)核結(jié)構(gòu)中,Windows 內(nèi)部系統(tǒng)服務的地址被保存在稱為系統(tǒng)服務調(diào)度表的結(jié)構(gòu)中。在內(nèi)存中,可以通過系統(tǒng)調(diào)度索引號定位在本調(diào)度表中函數(shù)地址。另一個表為系統(tǒng)服務參數(shù)表,它被用來指定每個系統(tǒng)服務函數(shù)中參數(shù)的數(shù)目和長度。在Windows 內(nèi)核中導出了一個KeServiceDescriptorTable 表結(jié)構(gòu),它包含了一個指向系統(tǒng)服務調(diào)度表

13、的指針,指向在內(nèi)核中提供的核心系統(tǒng)服務的實現(xiàn)。KeServiceDescriptor Table 同樣也包含了一個指向系統(tǒng)服務參數(shù)表結(jié)構(gòu)的指針。為了調(diào)用一個指定的函數(shù),系統(tǒng)服務調(diào)度器將會獲取一個指定服務的ID 號,通過它計算出在系統(tǒng)服務調(diào)度表中的偏移量以定位相應的函數(shù)指針。同時,在KeServiceDescriptorTable 中包含了系統(tǒng)能提供的最大服務數(shù)量值。如果木馬程序以設(shè)備驅(qū)動的方式加載到操作系統(tǒng)中,它就可以修改系統(tǒng)服務調(diào)度表的指針,使其指向一個自定義的函數(shù),來代替操作系統(tǒng)提供的原始系統(tǒng)服務。當用戶態(tài)的函數(shù)調(diào)用進入內(nèi)核,這個請求被系統(tǒng)服務調(diào)度器處理,最終進入到筆者的木馬程序提供的功能

14、函數(shù)。同樣,對設(shè)備驅(qū)動來說,所有的合法的輸入輸出請求報文處理函數(shù)都應該存在于一個給定的驅(qū)動地址范圍之內(nèi),而系統(tǒng)服務分配表中的所有入口地址都應該在內(nèi)核進程ntoskrnl.exe 的地址空間內(nèi)。 1822.3 中斷描述符表掛鉤檢測中斷描述符表是用來處理系統(tǒng)中斷的,這些中斷可以來自軟件或硬件設(shè)備。在Windows 系統(tǒng)中,用戶態(tài)進程請求系統(tǒng)服務描述符表的訪問時,會發(fā)出0x2E 號中斷。其中,筆者最關(guān)心的是在中斷描述符表中為0x2E 號中斷安裝一個掛鉤,該掛鉤函數(shù)將在所有SSDT 中的內(nèi)核函數(shù)之前被執(zhí)行。需要注意的是,執(zhí)行控制流程是不會返回到IDT 處理函數(shù)中的,因此常規(guī)的掛鉤技術(shù)(如調(diào)用環(huán)視函數(shù),

15、過濾數(shù)據(jù),從掛鉤函數(shù)返回到原始函數(shù) 這里不能通用。中斷描述符表掛鉤是一個經(jīng)過式函數(shù),它不會獲取控制權(quán),所以不能用來修改或過濾數(shù)據(jù)。但是,木馬程序用它來鑒別或阻塞來自特殊進程的請求,比如主機入侵防御系統(tǒng)或個人軟件防火墻。查詢中斷描述符表掛鉤更困難,因為不知道絕大多數(shù)中斷的可接受地址范圍。但明確知道的一個中斷地址就是 INT2E 中斷處理函數(shù)的地址,指向內(nèi)核空間 ntoskrnl.exe 之中。 2.4 輸入輸出請求報文處理掛鉤檢測另外一個在內(nèi)核中能實現(xiàn)很好隱藏的地方是每個設(shè)備驅(qū)動的函數(shù)表。在設(shè)備驅(qū)動被安裝后,它將初始化處理各種不同輸入輸出請求報文的函數(shù)指針表。輸入輸出請求報文處理幾類特殊的請求,

16、比如讀、寫、查詢等。因為設(shè)備驅(qū)動在控制流中處最底層,對木馬程序來說,它們也是實施掛鉤的理想地方。木馬程序感興趣的輸入輸出請求報文的類型與它們希望實現(xiàn)的功能有很大的相關(guān)性。比如,可以掛鉤處理文件系統(tǒng)寫或TCP 請求的函數(shù)。但是,它同樣有中斷服務調(diào)度表掛鉤類似的問題,那就是它不能調(diào)用原始的函數(shù)并過濾數(shù)據(jù)。在調(diào)用堆棧中,這些函數(shù)不能夠從底層的設(shè)備驅(qū)動中返回。輸入輸出請求報文掛鉤的檢測比較簡單。在系統(tǒng)內(nèi)存中查詢出操作系統(tǒng)已經(jīng)裝載的所有驅(qū)動列表,然后可以在每個特別的驅(qū)動中,定位IRP 處理表的位置。結(jié)合上面兩種方法,就可以獲取系統(tǒng)中存在的輸入輸出請求報文處理掛鉤。 2.5 內(nèi)嵌函數(shù)掛鉤檢測第2個用戶態(tài)掛

17、鉤方式為內(nèi)嵌函數(shù)掛鉤,它比導入地址空間掛鉤更強大。導入地址表掛鉤不能掛鉤動態(tài)載入連接庫中的函數(shù),而內(nèi)嵌函數(shù)掛鉤不會出現(xiàn)這樣的問題。在實施內(nèi)嵌函數(shù)掛鉤時,木馬程序?qū)貙懩繕撕瘮?shù)的代碼字節(jié),因此不管應用程序何時解析函數(shù)地址,它都將會被掛鉤。內(nèi)嵌函數(shù)掛鉤技術(shù)可以應用在用戶態(tài)函數(shù)和內(nèi)核態(tài)函數(shù)。一般來說,一個內(nèi)嵌函數(shù)掛鉤的實現(xiàn)是基于保存目標函數(shù)的起始幾個字節(jié),木馬程序?qū)貙戇@幾個字節(jié)的信息。在原始字節(jié)內(nèi)容被保存后,它們往往會被一個跳轉(zhuǎn)指令(如jmp, call所替代。這個跳轉(zhuǎn)直指木馬程序的掛鉤函數(shù)。執(zhí)行完木馬程序相關(guān)指令后,通過保存的原始被替換字節(jié)的內(nèi)容,程序流將重新返回執(zhí)行目標函數(shù)。內(nèi)嵌函數(shù)掛鉤的

18、檢測是最困難的,因為掛鉤可以被定位在函數(shù)中的任何位置,而且函數(shù)可以調(diào)用在模塊地址范圍外的指令。在進行系統(tǒng)調(diào)用掛鉤掃描時,會面臨內(nèi)存掃描方法所遇到的全部問題:已經(jīng)被加載到系統(tǒng)內(nèi)存之中并正在執(zhí)行的木馬程序,可能會干擾檢測方法。但是,使用系統(tǒng)調(diào)用掛鉤的檢測方式最大的好處在于其顯著的通用性。通過對系統(tǒng)調(diào)用掛鉤的檢測,筆者將不會再面對尋找已知特征值或已知方式的難題。3 實現(xiàn)與結(jié)果針對本文提出的基于系統(tǒng)調(diào)用掛鉤的隱蔽木馬程序檢測技術(shù),設(shè)計并實現(xiàn)了該檢測方式相應工具。該工具針對當前木馬程序自身隱藏的特性,通過分析操作系統(tǒng)用戶進程空間和內(nèi)核空間系統(tǒng)調(diào)用的標志信息,來分析系統(tǒng)中是否存在木馬程序設(shè)置的系統(tǒng)調(diào)用掛鉤

19、,以檢測出隱蔽的木馬程序。該木馬檢測軟件的模塊設(shè)計如圖1所示。用戶接口模塊鉤檢測模塊檢測模塊木馬檢測軟件掛鉤檢測模塊內(nèi)核態(tài)模塊掛鉤檢測模塊掛鉤檢測模塊4 結(jié)論基于系統(tǒng)調(diào)用掛鉤的隱蔽木馬程序檢測技術(shù)是針對現(xiàn)有的系統(tǒng)惡意程序自身隱藏行之有效的檢測方法,但在實現(xiàn)過程中,同樣會面對入侵者的攻擊,使得通過本算法檢測的結(jié)果數(shù)據(jù)被修改。同樣,針對在系統(tǒng)中通過直接修改系統(tǒng)內(nèi)核數(shù)據(jù)的方式來實現(xiàn)自身隱藏的計算機木馬,該方法不能將其檢測出來,這也是下一步重點研究的方向。所有的隱蔽木馬程序都是由操作系統(tǒng)設(shè)計的不安全性造成的,如何加強操作系統(tǒng)的安全也是另一個重要的研究內(nèi)容。參考文獻1 Fiskiran A M, Lee

20、 R B. Runtime Execution Monitoring (REM to Detect and Prevent Malicious Code ExecutionC/Proceedings of the IEEE International Conference on Computer Design. San Jose, CA. 2004.2 Deng P S, Wang J H, Shieh W G, et al. Intelligent Automatic Malicious Code Signatures ExtractionC/Proceedings of IEEE 37th

21、 Annual 2003 International Carnahan Conference on Security Technology, Taiwan, China. 2003.3 Wang Yimin, Beck D, Binh V, et al. Detecting Stealth Software with Strider GhostBusterC/Proceedings of the 2005 International Conference on Dependable Systems and Networks. Yokohama, Japan. 2005.4 Cohen W W.

22、 Learning Trees and Rules with Set-valued FeaturesC/Proceedings of the 13th National Conference on Articial Intelligence, Portland, Oregon. 1996.5 Schultz M G, Eskin E, Zadok E, et al. Data Mining Methods for Detection of New Malicious ExecutablesC/Proceedings of IEEE Symposium on Security and Priva

23、cy, Oakland, California. 2001.用戶態(tài)模塊圖1 木馬檢測軟件模塊設(shè)計該木馬檢測軟件在Windows 平臺上用VC 開發(fā)實現(xiàn),最后生成用戶態(tài)可執(zhí)行文件和系統(tǒng)驅(qū)動文件。用戶通過可執(zhí)行文件中的選項,實現(xiàn)對不同類系統(tǒng)調(diào)用掛鉤的檢測。一旦需要對內(nèi)核空間的系統(tǒng)調(diào)用掛鉤進行檢測時,用戶態(tài)可執(zhí)行程序?qū)⒃撓到y(tǒng)驅(qū)動文件加載到內(nèi)存,通過消息隊列來實現(xiàn)對內(nèi)核模塊的調(diào)用和檢測。目前,該工具可以檢測已公開的具有隱蔽特性的典型木馬程序包括:Vanquish ,用戶態(tài)隱藏的木馬程序;Hacker Defender ,用戶態(tài)與內(nèi)核態(tài)相結(jié)合隱藏的木馬程序;yyt ,內(nèi)核態(tài)隱藏的木馬程序;NtRootK

24、it ,內(nèi)核態(tài)隱藏的木馬程序等。(上接第177頁進一步,如果考慮ps 1,ps 2的值對新個體而言都只影響1個bit 的值,可以通過假設(shè)a 0, a 1, , a 7和(z 64a 64, (z 65a 65, , (z 71a 71 這14個變量的值,此時利用Z i+1=KK1i+1KK 2i+1可建立相應的線性表示式,其中最多含有4個錯誤的式子。在容許最多4個含錯方程的情況下,利用上面保守估計的方法,密鑰空間的規(guī)模將由2128降低到216+(128-16/2=272。另外,也可以根據(jù)雜交算子的保距性,僅假設(shè)a 0, a 1, a 2, a 3和(z 64a 64, (z 65a 65, (z 66a 66, (z 67a 67 這8個變量的值, 說明對密鑰空間的規(guī)模的影響。雜交算子的保距性質(zhì)如下:引理5 設(shè)二進制編碼的兩個個體X ,Y ,經(jīng)過單點雜交后得到新個體為1(X , Y , 2(X , Y ,則X Y

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論