91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么逆向分析微軟IFEO鏡像劫持從ring3到ring0的實現機理

發布時間:2021-12-18 15:35:12 來源:億速云 閱讀:175 作者:柒染 欄目:數據安全

本篇文章為大家展示了怎么逆向分析微軟IFEO鏡像劫持從ring3到ring0的實現機理,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

IFEO(Image File Execution Options )是設置在Windows注冊表中,創建IFEO注冊表項的目的是讓開發人員可以選擇調試他們的軟件,是為了開發人員可以使用注冊表項將任何程序附加到任何可執行文件,但是很多被利用了去實現進程注入。很多只知道ring3的部分機制,但是并不知道完整的機制,今天們就來分析下它的ring3到ring0的整個過程的機理。

開發一個小的test.exe解析命令行,為了方便上調試器調試加上Messagebox 彈框怎么逆向分析微軟IFEO鏡像劫持從ring3到ring0的實現機理

編譯后,我們可以修改注冊表演示下IFFO

**HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\{name of the executable}**

加個notepad.exe的項目然后添加Debuggerkeyvalue

“Debugger”=”{full path to the debugger}”

怎么逆向分析微軟IFEO鏡像劫持從ring3到ring0的實現機理

怎么逆向分析微軟IFEO鏡像劫持從ring3到ring0的實現機理

然后我們在windows左下角搜索框輸入notepad

怎么逆向分析微軟IFEO鏡像劫持從ring3到ring0的實現機理

然后啟動notepad.exe,這時我們的test.exe就會被啟動了

怎么逆向分析微軟IFEO鏡像劫持從ring3到ring0的實現機理

今天的目的就是來分析下這種機制的原理。

把上述代碼繼續改造的MessageBox去掉,加直接啟動notepad.exe的啟動參數里的進程

怎么逆向分析微軟IFEO鏡像劫持從ring3到ring0的實現機理

怎么逆向分析微軟IFEO鏡像劫持從ring3到ring0的實現機理

然后上ollydbg調試運行。

怎么逆向分析微軟IFEO鏡像劫持從ring3到ring0的實現機理

啟動后對CreatPorcessW下斷點輸入命令: bp CreatPorcessW

斷點停下來

怎么逆向分析微軟IFEO鏡像劫持從ring3到ring0的實現機理

繼續F8 然后F7進入

**775F1054 |. E8 22010100 CALL kernel32.CreateProcessInternalW**

通過IDA查看CreateProcessInternalW前面基本都是一些字符串拷貝的動作

怎么逆向分析微軟IFEO鏡像劫持從ring3到ring0的實現機理

怎么逆向分析微軟IFEO鏡像劫持從ring3到ring0的實現機理

Ollydbg開始階段就直接F8單步運行過去

接著就是創建環境

怎么逆向分析微軟IFEO鏡像劫持從ring3到ring0的實現機理

這些也直接單步走過,當我們單步到這里的時候

怎么逆向分析微軟IFEO鏡像劫持從ring3到ring0的實現機理

調試器在這里下斷點

怎么逆向分析微軟IFEO鏡像劫持從ring3到ring0的實現機理

然后F8

怎么逆向分析微軟IFEO鏡像劫持從ring3到ring0的實現機理

發現

NtCreateUserProcess(&Process, &ThreadHandle, 0x2000000, 0x2000000, v188, v189, v64, 1, v60, &v194, &v347)


函數的eax的返回值是0xC0000039,也就是說這里調用內核去創建的時候是直接失敗的,
返回值是STATUS_OBJECT_PATH_INVALID 意識就是說路徑對象無效,通過分析第九個參數結構體的數據發現路徑確實沒有任何問題

怎么逆向分析微軟IFEO鏡像劫持從ring3到ring0的實現機理

我們可以做個對比實驗,把IFEO的對應注冊表Debugger刪除后再運行調試

下面是正常情況下把注冊表刪除了后的運行

怎么逆向分析微軟IFEO鏡像劫持從ring3到ring0的實現機理

參數基本一模一樣,然后直接F8 單步運行,結果出現了返回值eax == 0

怎么逆向分析微軟IFEO鏡像劫持從ring3到ring0的實現機理

也就是STATUS_SUCCES,沒有debugger注冊表鍵值的時候NtCreateUserProcess內核返回值是0,現在我們大致可以猜測內核里也對這個IFEO位置的注冊表鍵值做了處理,為了搞清楚內核如何處理,直接上windbg用虛擬機進行雙機調試,調試內核。

怎么逆向分析微軟IFEO鏡像劫持從ring3到ring0的實現機理

怎么逆向分析微軟IFEO鏡像劫持從ring3到ring0的實現機理

接下來在NtCreateUserProcess上下斷點,當Ollydbg里執行NtCreadtUserProcesswindbg里斷點停下來

怎么逆向分析微軟IFEO鏡像劫持從ring3到ring0的實現機理

有個最簡單的方法就是不斷的嘗試單步進入函數后單步Call返回值為0xC0000039的函數,最后經過反復的實現發現NtCreateUserProcess內在調用**PspAllocateProcess**函數時返回0xC0000039

怎么逆向分析微軟IFEO鏡像劫持從ring3到ring0的實現機理

fffff800`0412651f 出下斷點

怎么逆向分析微軟IFEO鏡像劫持從ring3到ring0的實現機理

運行后斷下

怎么逆向分析微軟IFEO鏡像劫持從ring3到ring0的實現機理

調試器停在了
call nt!PspAllocateProcess (fffff8000412852c)F10 后查看eaxr eax,顯示

怎么逆向分析微軟IFEO鏡像劫持從ring3到ring0的實現機理

也就是說在這個函數里可能會涉及處理注冊表的過程,用ida打開ntkrnlmap.exe的內核文件,慢慢查看會發現有這么一段代碼

怎么逆向分析微軟IFEO鏡像劫持從ring3到ring0的實現機理

在這段代碼里判斷IFEOKEY 是否有對應Debugger注冊表設置,往上面翻會發現IFEOKey打開的就是當前進程名的IFEOKey的注冊表

怎么逆向分析微軟IFEO鏡像劫持從ring3到ring0的實現機理

RtlpOpenImageFileOptionsKey調用了RtlpOpenBaseImageFileOptionsKeyRtlpOpenBaseImageFileOptionsKeyZwOpenKey IFEO注冊表

怎么逆向分析微軟IFEO鏡像劫持從ring3到ring0的實現機理

怎么逆向分析微軟IFEO鏡像劫持從ring3到ring0的實現機理

為了驗證我們的結果,在RtlQueryImageFileKeyOption函數下斷點

怎么逆向分析微軟IFEO鏡像劫持從ring3到ring0的實現機理

進入 RtlQueryImageFileKeyOption函數單步執行到ZwQueryValueKey時,F10后

查看rsi里的值

怎么逆向分析微軟IFEO鏡像劫持從ring3到ring0的實現機理

會發現此時讀取到Debugger的設置注冊表,然后返回到調用之前的下面一句指令:

怎么逆向分析微軟IFEO鏡像劫持從ring3到ring0的實現機理

判斷eax是否是0,此時函數返回值就是0,然后就進入了

怎么逆向分析微軟IFEO鏡像劫持從ring3到ring0的實現機理

mov r12d,0xC00000039h

最后把 r12d 賦值給了eax返回

怎么逆向分析微軟IFEO鏡像劫持從ring3到ring0的實現機理

就是最后我看到創建進程失敗了,錯誤號0xC00000039

怎么逆向分析微軟IFEO鏡像劫持從ring3到ring0的實現機理

當前者失敗后,ring3 層就進入了

怎么逆向分析微軟IFEO鏡像劫持從ring3到ring0的實現機理

76B4F75F . FF15 5006B176 CALL DWORD PTR DS:[<&ntdll.LdrQueryImageFileKeyOption>] ; ntdll.LdrQueryImageFileKeyOption

函數去讀取IFEODebugger注冊表

怎么逆向分析微軟IFEO鏡像劫持從ring3到ring0的實現機理

獲取了數據后,解析參數成功后就把當前進程的路徑加載Debugger對應的進程后面作為一個參數組合成一個啟動進程參數

怎么逆向分析微軟IFEO鏡像劫持從ring3到ring0的實現機理

在上圖可以看到兩個路徑被加到一起。構造的的新參數就是

UNICODE "C:\Users\Administrator\Desktop\test.exe C:\Windows\System32\notepad.exe"

最后goto LABEL_87重新組建進程參數環境去執行新的進程,又會進入NtCreateUserProcess,但這時啟動的是test.exe

怎么逆向分析微軟IFEO鏡像劫持從ring3到ring0的實現機理

這時返回值就是0了,創建成功

怎么逆向分析微軟IFEO鏡像劫持從ring3到ring0的實現機理

至此整個過程就分析完畢了,微軟的IFEO機制本來是給開發人員調試程序用的,后來慢慢被惡意軟件用來鏡像劫持,在微軟的官方msdn里有一段描述說使用DEBUG_ONLY_THIS_PROCESS和DEBUG_PROCESS方式 CreateProcess時是不會讀取注冊表去劫持的,而實際測試時確實如此,具體原理讀者可以自行分析。

特別申明:逆向分析調試是一種武器,切莫用于非法途徑。

上述內容就是怎么逆向分析微軟IFEO鏡像劫持從ring3到ring0的實現機理,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

鱼台县| 赤壁市| 红桥区| 紫阳县| 根河市| 沂水县| 康定县| 罗甸县| 漯河市| 偃师市| 广德县| 万山特区| 桐柏县| 清水县| 晴隆县| 鄂尔多斯市| 达尔| 丹阳市| 同德县| 日照市| 会泽县| 松溪县| 西宁市| 芜湖市| 建水县| 克拉玛依市| 临邑县| 津市市| 册亨县| 丰县| 蕉岭县| 永安市| 舟曲县| 万州区| 赤峰市| 怀远县| 双流县| 洛扎县| 永福县| 海门市| 顺义区|