複製鏈接
請複製以下鏈接發送給好友

鈎子注入

鎖定
鈎子注入,即遠程線程插入(注入)技術,指的是通過在另一個進程中創建遠程線程的方法進入目標進程的內存地址空間。
中文名
鈎子注入
釋    義
鈎遠程線程插入技術

鈎子注入技術簡介

鈎子注入,即遠程線程插入(注入)技術,指的是通過在另一個進程中創建遠程線程的方法進入目標進程的內存地址空間。將木馬程序以DLL的形式實現後,需要使用插入到目標進程中的遠程線程將該木馬DLL插入到目標進程的地址空間,即利用該線程通過調用Windows API LoadLibrary函數來加載木馬DLL,從而實現木馬對系統的侵害。
鈎子注入是病毒、木馬常有的行為特徵之一,一些正常軟件也會提示鈎子注入。病毒或木馬程序不僅僅會鈎子注入,它還可能修改硬盤文件、篡改註冊表、修改主頁等。一些正常程序也往往會採用鈎子注入的行為,比如一些要確保和系統緊密結合的防病毒軟件即時通訊工具等。

鈎子注入原理機制

鈎子是WINDOWS中消息處理機制的一個要點,通過安裝各種鈎子,應用程序能夠設置相應的子例程來監視系統裏的消息傳遞以及在這些消息到達目標窗口程序之前處理它們。 鈎子的種類很多,每種鈎子可以截獲並處理相應的消息,如鍵盤鈎子可以截獲鍵盤消息,鼠標鈎子可以截獲鼠標消息,外殼鈎子可以截獲啓動和關閉應用程序的消息,日誌鈎子可以監視和記錄輸入事件。
若在dll中使用SetWindowsHookEx設置一全局鈎子,系統會將其加載入使用user32的進程中,因而它也可被利用為無進程木馬的進程注入手段
木馬編寫者首先把一個實際為木馬主體的dll文件載入內存,然後通過“線程注射”技術將其注入其他進程的內存空間,最後這個dll裏的代碼就成為其他進程的一部分來實現了自身的隱藏執行,通過調用“hook”機制。
鈎子(hook),是Windows消息處理機制的一個平台,應用程序可以在上面設置子程以監視指定窗口的某種消息,而且所監視的窗口可以是其他進程所創建的。當消息到達後,在目標窗口處理函數之前處理它。鈎子機制允許應用程序截獲處理window消息或特定事件。
這個dll木馬便實現了監視用户的輸入輸出操作,截取有用的資料等操作。這種木馬的實際執行體是一個dll文件,由於Windows系統自身就包含着大量的dll文件,誰也無法一眼看出哪個dll文件不是系統自帶的,所以這種木馬的隱蔽性又提高了一級,而且它的執行方式也更加隱蔽,這是由Windows系統自身特性決定的,Windows自身就是大量使用dll的系統,許多dll文件在啓動時便被相關的應用程序加載進內存裏執行了,可是有誰在進程裏直接看到過某個dll在運行的?因為系統是把dll視為一種模塊性質的執行體來調用的,它內部只包含了一堆以函數形式輸出的模塊,也就是説每個dll都需要由一個用到它的某個函數的exe來加載,當dll裏的函數執行完畢後就會返回一個運行結果給調用它的exe,然後dll進程退出內存結束這次執行過程,這就是標準的dll運行週期,而採用了“線程注射”技術的dll則不是這樣,它們自身雖然也是導出函數,但是它們的代碼是具備執行邏輯的,這種模塊就像一個普通exe,只是它不能直接由自身啓動,而是需要有一個特殊作用的程序(稱為加載者)產生的進程把這個dll的主體函數載入內存中執行,從而讓它成為一個運行中的木馬程序