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