暴力注入Explorer詳細解析

2022-04-04 10:12:55 字數 1360 閱讀 4067

向乙個執行中的程序注入自 己的**,最自然莫過於使用createremotethread,如今遠執行緒注入已經是氾濫成災,同樣的監測遠執行緒注入、防止遠執行緒注入的工具也舉不勝 舉,乙個木馬或後門啟動時向explorer或ie的注入操作就像在自己臉上寫上「我是賊」一樣。

使用者態**想要更隱蔽地藏身於別的程序,就應該在注入的環節隱蔽自己的行為。下面就介紹一種非常簡單不過比較暴力的方法,給出的示例為在explorer裡載入自己的dll。

首先提到的就是乙個api:queueuserapc

dword queueuserapc(

papcfunc pfnapc, // apc function

handle hthread, // handle to thread

ulong_ptr dwdata // apc function parameter ;

大家對這個api應該並不陌生,它直接轉入了系統服務ntqueueapcthread 從而利用keinsertqueueapc向給出的目標執行緒的apc佇列插入一apc物件。倘若kideliverapc順利的去構造apc環境並執行我 們的**那一切就ok了,只可惜沒有那麼順利的事,apcstate中userapcpending是否為true有重要的影響,結果往往是你等到花兒都 謝了你的**還是沒得到執行。在核心態往往不成問題,自己動手賦值,可是使用者態程式可不好做,怎麼辦?其實最簡單的,不好做就不做囉,讓系統去幹。

實 際上應用程式在請求「alertable」的等待時系統就會置userapcpending為true(當 kedelayexecutionthread/kewaitformultipleobjects/kewaitforsingleobject 使用 testforalertpending時就有可能,此外還有ketestalertthread等,機會還是有的),最簡單的例子,目標執行緒呼叫 sleepex(***, true)後我們插入apc**就會乖乖執行了。

比較幸運的是explorer程序中一般情況下總有合我們意的執行緒,於是最簡單但並不優美的辦法就是列舉explorer中所有執行緒,全數插入,示意如下:   ......

dword ret;

char *dllname = "c:\\mydll.dll";

int len = strlen(dllname) + 1;

pvoid param = virtualallocex(hprocess, null, len,

mem_commit | mem_top_down,

page_readwrite);

if (param != null)}}

......

其中injectdll:

void injectdll(handle hprocess, handle hthread, dword param)

暴力注入Explorer詳細解析

向乙個執行中的程序注入自 己的 最自然莫過於使用createremotethread,如今遠執行緒注入已經是氾濫成災,同樣的監測遠執行緒注入 防止遠執行緒注入的工具也舉不勝 舉,乙個木馬或後門啟動時向explorer或ie的注入操作就像在自己臉上寫上 我是賊 一樣。使用者態 想要更隱蔽地藏身於別的程...

「暴力」注入Explorer

暴力 注入explorer pjf jfpan20000 sina.com 寫點無聊的東西,一段時間blog弄得不成樣子了。向乙個執行中的程序注入自己的 最自然莫過於使用createremotethread,如今遠執行緒注入已經是氾濫成災,同樣的監測遠執行緒注入 防止遠執行緒注入的工具也 舉不勝舉,...

暴力」注入Explorer

暴力 注入explorer pjf jfpan20000 sina.com 向乙個執行中的程序注入自己的 最自然莫過於使用createremotethread,如今遠執行緒注入已經是氾濫成災,同樣的監測遠執行緒注入 防止遠執行緒注入的工具也 舉不勝舉,乙個木馬或後門啟動時向explorer或ie的注...