我们最近发现以下 DCOM 类存在 DLL 劫持风险。如果攻击者能够写入关联路径,他们就可以通过实例化 COM 对象进行横向移动。某些类还有其他此处未列出的 DLL 劫持机会。
| 类 | DLL 路径 | 进程 | 架构 |
|---|---|---|---|
| WordPad Document | C:\Program Files\Windows NT\Accessories\XmlLite.dll | wordpad.exe | x64 |
| CLSID_ContactReadingPane | C:\Program Files\Common Files\System\UxTheme.dll | prevhost.exe | x64 |
| User OOBE Create Elevated Object Server | C:\Windows\System32\oobe\USERENV.dll | dllhost.exe | x64 |
| MSDAINITIALIZE* | C:\Program Files\Common Files\System\Ole DB\bcrypt.dll | dllhost.exe | x64 |
| ShapeCollector Class | C:\Program Files\Common Files\Microsoft Shared\ink\DUI70.dll | ShapeCollector.exe | x64 |
| Microsoft WBEM Unsecured Apartment | C:\Windows\System32\wbem\wbemcomn.dll | unsecapp.exe | x64 |
| Microsoft WBEM Active Scripting Event Consumer Provider | C:\Windows\System32\wbem\wbemcomn.dll | scrcons.exe | x64 |
| Voice Toast Callback* | C:\Windows\System32\WinBioPlugIns\MFPlat.dll | svchost.exe | x64 |
| Add to Windows Media Player list | C:\Program Files (x86)\Windows Media Player\ATL.dll | setup_wm.exe | x86 |
| Windows Media Player Burn Audio CD Handler | C:\Program Files (x86)\Windows Media Player\PROPSYS.dll | wmplayer.exe | x86 |
* 仅适用于 Windows 11 和 Windows Server 2022
本仓库包含一个 Cobalt Strike BOF 和一个 Impacket 脚本,用于复制 DLL 并实例化 COM 对象。同时还包括导出定义和基本 DLL 模板。
仓库中包含一个用于测试的简单 DLL 模板。所需的导出转发在不同版本之间略有变化,有时会导致劫持失效。我们提供了一个实用脚本,用于为目标 DLL 生成导出定义。Windows Server 2022/11 和 10 的定义文件位于 exports 目录中。你可以编辑 Makefile 的第一行来指定导出目录名称。如果你需要特定 Windows 版本中的 DLL,Winbindex 是一个很好的资源。
这两种实现都需要你指定以下简写类名之一:
upload-dll <class name> <target IP or hostname> [DLL path]
create-object <class name> <target IP or hostname>
dcomhijack.py -object <class name> [[domain/]username[:password]@]<targetName or address>
BOF 和 Impacket 脚本已在以下 Windows 版本/架构上进行了测试: