DCOM 是微軟將 COM 技術延伸至網路層的核心機制,允許跨主機呼叫遠端元件。它在 Windows 企業環境中無所不在,也因此成為攻擊者實施橫向移動的隱蔽管道。
DCOM 的運作核心
DCOM 透過 RPC(Remote Procedure Call) 在 TCP 135 埠完成初始交握,後續通訊隨機指派高位埠(1024–65535)。每個可遠端存取的元件以 CLSID(Class Identifier) 唯一標識,並透過 DCOMCNFG 或登錄機碼 HKLM\SOFTWARE\Classes\CLSID 管理存取權限。驗證層面採用 Windows 整合驗證(Kerberos / NTLM),意味著持有合法憑證的攻擊者可直接觸發遠端 COM 物件,而無需部署任何額外工具。整個呼叫鏈在 Windows 事件日誌中留下的跡象極少,是其隱蔽性的核心來源。
橫向移動攻擊面剖析
攻擊者常濫用特定高風險 CLSID 實現橫向移動。MMC20.Application(Shell.Execute 方法)與 ShellWindows / ShellBrowserWindow 是最廣為人知的三個攻擊向量,均已被記錄於 MITRE ATT&CK T1021.003。攻擊者在取得目標主機的本地管理員憑證後,透過 PowerShell 的 [activator]::CreateInstance() 或 GetTypeFromProgID() 在遠端主機實例化 COM 物件,進而執行任意命令。相較於 PsExec 或 WMI,DCOM 橫向移動的落地文件(artifact)極少,傳統端點偵測規則往往無法有效攔截。
# PowerShell DCOM 橫向移動概念示範(僅供研究)
$target = "192.168.1.50"
$com = [activator]::CreateInstance(
[type]::GetTypeFromProgID("MMC20.Application", $target)
)
$com.Document.ActiveView.ExecuteShellCommand(
"cmd.exe", $null, "/c whoami > C:\out.txt", "7"
)
💡 重點整理
- 初始埠 TCP 135 是 DCOM 流量的必要條件,封鎖可有效阻斷外部觸發。
- MITRE T1021.003 記錄三大高風險 CLSID:MMC20、ShellWindows、ShellBrowserWindow。
- 最小權限原則:透過 DCOMCNFG 限制遠端啟動與存取權限,移除非必要帳號授權。
- 偵測重點:監控 mmc.exe / explorer.exe 產生異常子程序,以及非預期的高位埠對外連線。
DCOM 的強大與危險並存。防禦方應優先強化 DCOM 元件的存取控制,並建立針對異常 COM 呼叫的偵測規則,才能有效壓縮攻擊者的橫向移動空間。
📚 參考文獻
- MITRE ATT&CK — T1021.003: Distributed Component Object Model,攻擊技術官方分類與緩解說明。
- Microsoft Docs —