0x0 技術簡介安全
實現環境異步
系統:Windows 7 64bit函數
工具:VS+WDK工具
驅動注入.net
我這裏驅動注入的技術是:採用驅動向目標進程插入APC執行LdrLoadDll函數加載Dll模塊。線程
能夠注入64位Dll到64位進程或注入32位Dll到32位進程。暫時沒有實現跨位數。blog
APC(異步過程調用)是一種內核機制,它提供了一種在特定線程上下文中執行定製例程的方法。一旦被分派,APC將異步轉移目標線程的執行流以調用所選的例程。進程
apc可分爲兩大類:產品
1. 內核模式`APCs: APC`例程最終將執行內核模式代碼。這些被進一步分爲特殊的內核模式的apc和普通的內核模式的apc,可是咱們不會詳細討論 [它們之間的細微差異]it
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進程
———————————————— 版權聲明:本文爲CSDN博主「HadesW_W」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處連接及本聲明。 原文連接:https://blog.csdn.net/wrsharper/article/details/85792255