相信大家對(duì)各種流氓軟件,流氓行為都不陌生,這其中有一種通過(guò)注冊(cè)表項(xiàng)【Image File Execution Options】進(jìn)行劫持的方法,或許一些朋友對(duì)Image File Execution Options不太了解,下面小編簡(jiǎn)單的和大家分享一下映像劫持,注冊(cè)表Image File Execution Options作用及使用辦法。
映像劫持(Image File Execution Options,IFEO)技術(shù)的利用,存在已久。大都是修改“Debugger“項(xiàng)值,替換執(zhí)行程序,加以利用。歪果仁最近在研究IFEO的相關(guān)項(xiàng)值時(shí),發(fā)現(xiàn)了GlobalFlag這個(gè)特殊的項(xiàng)值,在進(jìn)一步測(cè)試時(shí),發(fā)現(xiàn)了一種基于IFEO的新后門(mén)利用方式。本著求知探索的科學(xué)精神。本文對(duì)此技術(shù)進(jìn)行分析總結(jié)。
0x02 映像劫持簡(jiǎn)介
映像劫持(Image File Execution Options),簡(jiǎn)單的說(shuō)法,就是當(dāng)你打開(kāi)的是程序A,而運(yùn)行的確是程序B。
映像劫持其實(shí)是Windows內(nèi)設(shè)的用來(lái)調(diào)試程序的功能,但是現(xiàn)在卻往往被病毒惡意利用。當(dāng)用戶雙擊對(duì)應(yīng)的程序后,操作系統(tǒng)就會(huì)給外殼程序(例如“explorer.exe”)發(fā)布相應(yīng)的指令,其中包含有執(zhí)行程序的路徑和文件名,然后由外殼程序來(lái)執(zhí)行該程序。事實(shí)上在該過(guò)程中,Windows還會(huì)在注冊(cè)表的上述路徑中查詢所有的映像劫持子鍵,如果存在和該程序名稱完全相同的子鍵,就查詢對(duì)應(yīng)子健中包含的“dubugger”鍵值名,并用其指定的程序路徑來(lái)代替原始的程序,之后執(zhí)行的是遭到“劫持”的虛假程序
IEEO位于注冊(cè)表項(xiàng)中
“HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionImage File Execution Options”
注意的是,Win7后的系統(tǒng),需要管理員權(quán)限才能夠?qū)σ豁?xiàng)做出修改。之前的病毒,喜歡修改這個(gè)注冊(cè)表項(xiàng),達(dá)到劫持系統(tǒng)程序的作用。
下面,做的是一個(gè)簡(jiǎn)單的測(cè)試:管理員權(quán)限,打開(kāi)CMD,執(zhí)行下列修改注表的命令。
reg add "hklmSOFTWAREMicrosoftWindows NTCurrentVersionImage File Execution Optionsnotepad.exe" /v debugger /t REG_SZ /d "c:windowssystem32calc.exe"。
可以看到:打開(kāi)notepad.exe,而運(yùn)行起來(lái)的是計(jì)算器。
0x03 映像劫持新玩法
如上文中所講述,修改IFEO中的“debugger”鍵值,用來(lái)替換原有程序的執(zhí)行。而新的利用方法,實(shí)現(xiàn)的效果是:程序A靜默退出結(jié)束后,會(huì)執(zhí)行程序B。
在網(wǎng)上收集資料整理后發(fā)現(xiàn), Image File Execution Options下可以設(shè)置以下值項(xiàng)(值只是部分,只能感慨,微軟沒(méi)告訴我們的東西還真多?。?。其中GlobalFlag是本次測(cè)試的關(guān)鍵點(diǎn):
- Debugger,
- DisableHeapLookaside,
- ShutdownFlags,
- MinimumStackCommitInBytes,
- ExecuteOptions,
- GlobalFlag,
- DebugProcessHeapOnly,
- ApplicationGoo,
- RpcThreadPoolThrottle,
- PageHeapFlags,
- DisableHeapLookAside,
- DebugProcessHeapOnly,
- PageHeapSizeRangeStart,
- PageHeapSizeRangeEnd,
- PageHeapRandomProbability,
- PageHeapDllRangeStart,
- PageHeapDllRangeEnd,
- ……
歪果仁本是想弄清楚ApplicationGoo這個(gè)項(xiàng)值的作用,無(wú)奈卻毫無(wú)頭緒。但是在MSDN的博客上,發(fā)現(xiàn)熱心人士對(duì)GlobalFlag的這個(gè)項(xiàng)值的發(fā)表的一些看法。愛(ài)實(shí)踐的歪果仁下載安裝了GFlages.exe 開(kāi)始分析。真是山重水復(fù)疑無(wú)路,柳暗花明又一村。這便是突破口。
0x04 GFlages.exe進(jìn)行測(cè)試
按照MSDN博客的說(shuō)法,筆者也嘗試安裝GFlages.exe進(jìn)行測(cè)試。中間遇到一些小坑,GFlages.exe是包含在 Debugging Tools for Windows(WinDbg)下的。網(wǎng)上現(xiàn)有都是通過(guò)安裝完整的Windows SDK。很折騰,經(jīng)過(guò)一番搜索,找到一下dbg的單獨(dú)安裝包,感謝作者分享。
在Silent Process Exit這個(gè)選項(xiàng)卡中發(fā)現(xiàn)了挺有趣的東西。根據(jù)微軟官方介紹,從Windows7開(kāi)始,可以在Silent Process Exit選項(xiàng)卡中,可以啟用和配置對(duì)進(jìn)程靜默退出的監(jiān)視操作。在此選項(xiàng)卡中設(shè)定的配置都將保存在注冊(cè)表中。
填入如上配置,點(diǎn)擊應(yīng)用、確定,開(kāi)始測(cè)試。使用Process Explorer進(jìn)行檢測(cè)進(jìn)程的變化。注意,在進(jìn)行此次測(cè)試之前,請(qǐng)先把IFEO中notepad.exe項(xiàng)刪除。
打開(kāi)notepad.exe,關(guān)閉后,隨之計(jì)算器彈出。在Process Explorer上可以看到計(jì)算器已經(jīng)被系統(tǒng)調(diào)起。
0x05 原理分析
根據(jù)微軟的官方文檔描述,在Silent Process Exit選項(xiàng)卡中的配置,都保存在注冊(cè)表中。經(jīng)過(guò)分析,等值,主要修改了以下兩個(gè)表項(xiàng)。
- HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionImage File Execution Optionsnotepad.exe
- HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionSilentProcessExitnotepad.exe
這么一來(lái),可以直接在命令行中對(duì)注冊(cè)表進(jìn)行設(shè)置,需要管理員權(quán)限。
- reg add "HKLMSOFTWAREMicrosoftWindows NTCurrentVersionImage File Execution Optionsnotepad.exe" /v GlobalFlag /t REG_DWORD /d 512
- reg add "HKLMSOFTWAREMicrosoftWindows NTCurrentVersionSilentProcessExitnotepad.exe" /v ReportingMode /t REG_DWORD /d 1
- reg add "HKLMSOFTWAREMicrosoftWindows NTCurrentVersionSilentProcessExitnotepad.exe" /v MonitorProcess /t REG_SZ /d "c:windowssystem32taskmgr.exe"
? 簡(jiǎn)單解釋一下ReportingMode和MonitorProcess 這兩個(gè)項(xiàng)值的作用。MonitorProcess的值表示監(jiān)視器進(jìn)程。Reporting Mode可以設(shè)置為三個(gè)值 。
Flag | Value | 解釋 |
---|---|---|
LAUNCH_MONITORPROCESS | 0x1 | 檢測(cè)到進(jìn)程靜默退出時(shí),將會(huì)啟動(dòng)監(jiān)視器進(jìn)程(在GFLAGS.exe中,Silent Process Exit這個(gè)選項(xiàng)卡所填寫(xiě)的值,即MonitorProcess的項(xiàng)值) |
LOCAL_DUMP | 0x2 | 檢測(cè)到進(jìn)程靜默退出時(shí),將會(huì)為受監(jiān)視的進(jìn)程創(chuàng)建轉(zhuǎn)儲(chǔ)文件 |
NOTIFICATION | 0x4 | 檢查到進(jìn)程靜默退出時(shí),將會(huì)彈出一個(gè)通知 |
0x06 檢測(cè)及查殺
- 排查HKLMSOFTWAREMicrosoftWindows NTCurrentVersionImage File Execution Options 以及HKLMSOFTWAREMicrosoftWindows NTCurrentVersionSilentProcessExit項(xiàng)值是否存在關(guān)聯(lián)。
- 分析系統(tǒng)日志,日志ID為3000和3001,即有可能存在后門(mén)威脅。
- 直接刪除IFEO項(xiàng)或者設(shè)置管理員不可修改
0x07 總結(jié)
- 本文分析總結(jié)了關(guān)于映像劫持的的一種新型后門(mén)技術(shù):當(dāng)一個(gè)程序關(guān)閉時(shí)會(huì)允許執(zhí)行其他的二進(jìn)制文件。且Autorun暫時(shí)檢測(cè)不到。
- 該技巧需要管理員權(quán)限,普通用戶沒(méi)有執(zhí)行權(quán)限。
- 可以結(jié)合ADS技術(shù)(alternate data streams,NTFS交換數(shù)據(jù)流)執(zhí)行,更加的隱蔽。感興趣的同學(xué)可以自己測(cè)試一下。
- 本文由網(wǎng)絡(luò)上轉(zhuǎn)載。