基于鉤子的惡意程序防鉤子技術(shù)研究_第1頁
基于鉤子的惡意程序防鉤子技術(shù)研究_第2頁
基于鉤子的惡意程序防鉤子技術(shù)研究_第3頁
全文預(yù)覽已結(jié)束

下載本文檔

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

文檔簡介

基于鉤子的惡意程序防鉤子技術(shù)研究

病毒、特洛伊木馬和其他惡意軟件通常使用整體鉤子來竊取密碼。當(dāng)用戶在用鍵盤進(jìn)行輸入時,鍵盤消息首先被惡意程序安置的鉤子所截獲并記錄用戶輸入的字符,黑客等便可分析出用戶的隱私信息。文章設(shè)計的反鍵盤記錄器通過鉤子掃描、可疑模塊檢測等建立信任列表,再結(jié)合Debug鉤子和HookAPI技術(shù)實現(xiàn)對所有進(jìn)程或指定進(jìn)程的防鉤子保護(hù)。1概述發(fā)展趨勢Windows操作系統(tǒng)是建立在事件驅(qū)動機(jī)制上的,而鉤子則是能在事件傳遞到應(yīng)用程序之前獲取對消息處理權(quán)的一種特殊機(jī)制。鉤子函數(shù)實際上是一個處理消息的程序段,通過系統(tǒng)調(diào)用掛入系統(tǒng),可以對消息進(jìn)行處理后傳遞或者干脆丟棄,阻止消息的進(jìn)一步傳遞。操作系統(tǒng)中,為了管理鉤子,維護(hù)1張鉤子列表,列表中的指針指向應(yīng)用程序定義的Hook子程調(diào)用的回調(diào)函數(shù)。當(dāng)系統(tǒng)中出現(xiàn)了所掛接的消息,系統(tǒng)就把消息傳遞給Hook子程的回調(diào)函數(shù)進(jìn)行處理。一般來說,最近安裝的鉤子放在鉤子列表的開始處,而最早安裝的鉤子放在最后,所以后安裝的鉤子便獲得更高的優(yōu)先處理權(quán)。一般的鉤子程序的實現(xiàn)有3步:定義鉤子函數(shù)、安裝鉤子函數(shù)和卸載鉤子函數(shù)。定義鉤子函數(shù)的原型,如圖1所示。安裝鉤子的函數(shù)原型,如圖2所示。卸載鉤子的函數(shù)原型,如圖3所示。通常在鉤子函數(shù)處理后還需繼續(xù)傳遞消息,還會用到CallNextHookEx函數(shù),如果不使用它繼續(xù)傳遞消息,有時會導(dǎo)致應(yīng)用程序無法繼續(xù)接收并處理消息。鉤子共有15種,其中,對于惡意程序來說,最常用的是WH_KEYBOARD、WH_KEYBOARD_LL、WH_MOUSE、WH_MOUSE_LL鉤子,這4個鉤子用于勾取鍵盤和鼠標(biāo)消息。在設(shè)置鉤子時,還需注意到鉤子的作用域。按鉤子作用域可將鉤子分為線程鉤子和全局鉤子。線程鉤子只是監(jiān)視特定的線程,而全局鉤子則可以監(jiān)視系統(tǒng)中所有的線程。這兩個鉤子設(shè)置的區(qū)別在于調(diào)用SetWindowsHookEx最后所傳入的參數(shù),若為0,則是全局鉤子。另外,對于1個全局的鉤子,需要將其放入一個獨(dú)立的DLL動態(tài)鏈接庫中,只有這樣才能被系統(tǒng)映射到每個進(jìn)程空間中。2可疑的惡意程序鉤子檢測在分析了以上Windows鉤子的原理后,并吸收了市面上現(xiàn)有的如“掂花”反鼠標(biāo)鍵盤記錄器的優(yōu)點(diǎn),設(shè)計了一個防鍵盤記錄器,它主要由3個模塊組成:鉤子掃描、可疑模塊檢測、進(jìn)程保護(hù)模塊。鉤子掃描:本工具能掃描出安裝在系統(tǒng)內(nèi)的所有鉤子,并顯示出該鉤子是由哪個程序所安裝、路徑位置等信息。如果用戶覺的該鉤子可以,可以結(jié)束該進(jìn)程??梢赡K檢測:由于惡意程序的鍵盤鉤子在裝入系統(tǒng)后,若是全局鉤子,操作系統(tǒng)會將該鉤子的DLL模塊映射到每個進(jìn)程的進(jìn)程空間。因此,我們可以根據(jù)這一點(diǎn)設(shè)置1個“陷阱”,誘騙惡意程序的鉤子來捕獲我們的鍵盤消息,這樣便可發(fā)現(xiàn)可疑的惡意程序及其路徑等信息。如果用戶對該鉤子信任,可以將其加入信任名單,這樣下次便不會再掃描出它了。進(jìn)程保護(hù):該模塊可以根據(jù)信任名單實時動態(tài)的保護(hù)用戶的進(jìn)程,有兩種保護(hù)方式,分別是利用Debug鉤子技術(shù)的全局保護(hù)和利用APIHook技術(shù)的進(jìn)程保護(hù)。2.1)基于debul的回歸系統(tǒng)的程序?qū)崿F(xiàn)為了掃描出系統(tǒng)中所有鉤子,我們使用了鉤子特征碼掃描技術(shù)。該技術(shù)通過找到系統(tǒng)中程序的句柄表來找出鉤子的句柄,再利用ZwSystemDebugControl函數(shù)找出該句柄所對應(yīng)鉤子的具體信息。實現(xiàn)過程如下:(1)提升程序到Debug權(quán)限:通過OpenProcessToken獲得進(jìn)程令牌的句柄,繼而定義TOKEN_PRIVILEGES,調(diào)整令牌的權(quán)限。(2)初始化函數(shù)地址:找到ZwSystemDebugControl和UserRegisterWowHandlers函數(shù)的地址,接下來的掃描過程將要使用到它。(4)遍歷句柄表,看句柄類型phandle_entry[i].bType是否為5,5是鉤子的類型值,再用ZwSystemDebugControl查詢獲得句柄所指向鉤子的具體信息,并顯示出來。如圖4所示。2.2獲取進(jìn)程快照和動態(tài)檢測可疑模塊檢測可分為2個部分:模塊掃描和動態(tài)檢測。模塊掃描主要是找到所有的進(jìn)程及其加載的模塊信息,動態(tài)檢測就是找出當(dāng)前正在捕獲輸入信息的進(jìn)程及路徑信息等。(1)模塊掃描:在這里,首先是枚舉所有進(jìn)程,及指定進(jìn)程的模塊信息,這個可以通過系統(tǒng)快照實現(xiàn)。系統(tǒng)快照句柄的獲取是通過Win32API函數(shù)CreateToolhelp32Snapshot來完成的,通過該函數(shù)不僅可以獲取進(jìn)程快照,而且對于模塊和線程的系統(tǒng)快照同樣可以獲取。根據(jù)掃描的得到的這些模塊,在默認(rèn)安全的情況下,都可加入信任列表。(2)動態(tài)檢測:全局鉤子在裝載后,DLL會映射進(jìn)每個進(jìn)程空間,因此,一旦應(yīng)用程序產(chǎn)生鉤子所感興趣的消息,系統(tǒng)便會調(diào)用LoadLibraryExW。這里,我們便可通過APIHook的方式改變相應(yīng)的加載HookDLL的函數(shù)地址,指向我們自己寫的函數(shù)。本程序使用的微軟的Detours庫,它是一個在x86平臺上截獲任意Win32函數(shù)調(diào)用的開發(fā)庫。為了屏蔽全局鉤子,掛接的是LoadLibraryExW函數(shù)。開始Hook時使用的主要API有:通過APIHook技術(shù)設(shè)計的一個小輸入框,向其中輸入若干隨機(jī)字符,若有可疑的鉤子正在監(jiān)視鍵盤,便會被捕獲,如圖5所示。對于所攔截到的模塊,可以采取信任或不信任的措施,若是惡意程序,也可直接結(jié)束該進(jìn)程,起到很好安全檢測作用。2.3調(diào)試鉤子函數(shù)進(jìn)程保護(hù)分為全局保護(hù)和特定進(jìn)程的保護(hù)。全局保護(hù)使用了調(diào)試(Debug)鉤子來屏蔽惡意程序的鉤子。當(dāng)調(diào)用其他鉤子函數(shù)之前,系統(tǒng)會首先調(diào)用WH_DEBUG鉤子函數(shù),并把鉤子的信息傳遞給調(diào)試鉤子,在調(diào)試鉤子函數(shù)過程中可以決定是否允許對這個鉤子函數(shù)過程的調(diào)用。為了防止某些惡意程序也安裝調(diào)試鉤子,在調(diào)試鉤子之前獲得對消息的處理權(quán),可以使用一個定時器,每隔一段時間便裝卸調(diào)試鉤子一次。如此,調(diào)試鉤子便可始終保持在鉤子列表前面。對于特定進(jìn)程的保護(hù),我們依然使用的是APIHook技術(shù),方法類似,結(jié)合信任列表,可以對指定進(jìn)程進(jìn)行動態(tài)的保護(hù)。3apiwelle-lh-apih-k的防護(hù)技術(shù)鍵盤記錄工具有很多,有的甚至涉及到了R0層。文章所設(shè)計的防鍵盤記錄器主要針對

溫馨提示

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

評論

0/150

提交評論