APC注入
阿新 • • 發佈:2018-11-20
APC注入可以讓一個執行緒在它正常的執行路徑執行之前執行一些其他的程式碼,每一個執行緒都有一個附加的APC佇列,他們線上程處於可警告的時候才被處理(WaitForSingObjectEx,SleepEx)
如果程式線上程可警告等待狀態時候排入一個APC佇列,那麼執行緒將開始執行APC函式,惡意程式碼則可以設定APC函式搶佔可警告等待狀態的執行緒。
APC有兩種存在形式:
1.為系統和驅動生成的APC(核心APC)
2.為應用程式生成的APC(使用者APC)
使用者模式:
執行緒可利用
QueueUserAPC排入一個讓遠端執行緒呼叫的函式,QueueUser函式的引數 pfnAPC,hThread,dwDate用法如下:
一旦獲取了執行緒ID,就可以利用其開啟控制代碼,通過引數LoadLibaryA以及對應引數dwData(dll名稱),LoadLibaryA就會被遠端執行緒呼叫, 從而載入對應的惡意DLL
核心模式:
需要兩個函式來搭配使用,構造APC函式 KeInitializeAPC(初始化KAPC結構) KeInsertQueueAPC(將APC物件放入目標執行緒的APC對列中)