Dll注入技術之驅動注入

Dll注入技術之驅動注入

0x0 技術簡介

實現環境

系統:Windows 7 64bit

工具:VS+WDK

驅動注入

我這裏驅動注入的技術是:採用驅動向目標進程插入APC執行LdrLoadDll函數加載Dll模塊。

可以注入64位Dll到64位進程或注入32位Dll到32位進程。暫時沒有實現跨位數。

APC(異步過程調用)是一種內核機制,它提供了一種在特定線程上下文中執行定製例程的方法。一旦被分派,APC將異步轉移目標線程的執行流以調用所選的例程。

apc可分爲兩大類:

1. 內核模式`APCs: APC`例程最終將執行內核模式代碼。這些被進一步分爲特殊的內核模式的apc和普通的內核模式的apc,但是我們不會詳細討論 [它們之間的細微差別]

2. 用戶模式`APCs: APC`例程最終將執行用戶模式代碼。只有當擁有apc的線程變得可警報時,纔會發出用戶模式apc。這是我們將在本節其餘部分中討論的APC類型。

apc主要用於系統級組件,用於執行各種任務(例如促進I/O完成),但也可以用於DLL注入目的。從安全產品的角度來看,內核空間的APC注入提供了一種方便可靠的方法,可以確保特定模塊被加載到(幾乎)整個系統所需的每個進程中。

0x1 主要思路

R3:加載驅動,打開驅動,控制驅動(發送需要注入的進程Pid和要注入的Dll模塊路徑給驅動)。

R0:1,通過進程Pid獲取EProcess並判斷是否爲64位進程。

        2,附加到目標進程獲取其ntdll.dll模塊基址及模塊中LdrLoadDll函數地址

        3,初始化ShellCode,賦值其中的參數和函數地址,申請空間拷貝代碼

        4,執行ShellCode,查找可用線程插入執行代碼APC,插入警醒線程APC

0x2 主要代碼

整體流程部分

初始化ShellCode

查找執行線程

插入APC代碼部分

0x3 實現效果

注入x64dll到X64進程

注入x86dll到wow64進程

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章