木馬 (Trojan/Backdoor) 要實現持久化控制,核心目標是開機自啟、隱藏蹤跡、抗查殺。本文系統梳理五大經典駐留技術原理與查殺思路 (基於 Windows 2000/XP/2003 環境,現代 Windows 10/11 原理同源,位置略有差異)。
Windows 啟動時會遍歷以下註冊表鍵值運行程序:
| 根鍵 | 路徑 | 說明 |
|---|---|---|
| HKCU | \Software\Microsoft\Windows\CurrentVersion\Run / RunOnce / RunServices / RunServicesOnce | 當前用戶登錄時啟動,權限較低 |
| HKLM | \Software\Microsoft\Windows\CurrentVersion\Run / RunOnce / RunServices / RunServicesOnce | 系統啟動/所有用戶登錄時啟動,權限高,需管理員寫入 |
| HKCU/HKLM | \Software\Microsoft\Windows NT\CurrentVersion\Windows\load | 早期版本 (NT/2000/XP) 支持,加載指定 DLL/EXE |
| HKLM | \Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run | 組策略分發的啟動項 |
| HKLM | \Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders | 修改「啟動」文件夾物理路徑誘導執行 |
查殺: 運行 msconfig / autoruns (Sysinternals) / 註冊表編輯器檢查上述鍵值,刪除未知/可疑指向 (特別注意路徑拼寫偽裝,如 explorer.exe vs expIorer.exe 大小寫/I/l 混淆)。
修改文件類型打開動作,使雙擊特定文件 (如 .exe, .txt, .jpg) 時先執行木馬。
HKEY_CLASSES_ROOT\.exe → (默認值) exefile → HKEY_CLASSES_ROOT\exefile\shell\open\command 默認值 "%1" %*。木馬修改為 "C:\malware.exe" "%1" %*。exefile、comfile、batfile、txtfile、jpegfile 等;或創建偽造 ProgID 並修改 HKEY_CLASSES_ROOT\.*\(Default) 指向惡意 ProgID。shell\open\command 默認值是否被篡改;使用 assoc / ftype 命令行檢查;導出正常系統同版本註冊表對比。notepad.exe, regedit.exe, winmine.exe, qq.exe 等高頻程序,甚至掃描啟動項感染。while(true){ Sleep(500); if(!FindProcess("peer.exe")) CreateProcess("peer.exe"); }CreateRemoteThread 注入 explorer.exe/lsass.exe/svchost.exe 等關鍵系統進程,作為單一守護宿主,更難終結。%ALLUSERSPROFILE%\Start Menu\Programs\Startup (全局) / %APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup (當前用戶)。放入快捷方式或可執行文件。attrib +h +s),資源管理器默認不顯示。Startup → Startup_a) 並隱藏,再新建同名空文件夾 Startup 作為擺設。系統實際仍按註冊表 Common Startup 鍵值 (指向重命名後的 Startup_a) 執行程序,用戶只看到空文件夾。Explorer.exe,利用 Windows 搜索順序 (當前目錄優先) 劫持 Shell 啟動。HKLM\...\CurrentVersion\RunServices 在用戶登錄前 (服務階段) 即啟動,比 Run 更早、更隱蔽。schtasks / COM 接口):支持觸發器 (登錄、閒置、事件 ID、網絡連接) 權限提升、隱藏窗口。sc create / CreateService):以 SYSTEM 權限運行,支持恢復動作 (失敗重啟)。__EventFilter, __EventConsumer, __FilterToConsumerBinding):無文件落地、極難檢測 (如 KVBot, WMIGhost)。tasklist /v, wmic process list full, Process Explorer/Process Hacker 定位無簽名/異常路徑/高 CPU/網絡連接進程。netstat -ano / TCPView 定位可疑遠程連接 (非標準端口、已知 C2 IP)。sfc /scannow, DISM /RestoreHealth 修復系統文件;檢查關鍵註冊表鍵值 (Shell, Userinit, AppInit_DLLs 等) 恢復默認。持久化是攻擊鏈關鍵環節 (MITRE ATT&CK TA0003)。理解原理、熟練使用 Autoruns/Process Hacker/EDR、建立基線審計機制,是防禦者贏得主動權的前提。