滥用 IMsiServer 接口的 DCOM 横向移动 POC
https://www.deepinstinct.com/blog/forget-psexec-dcom-upload-execute-backdoor
该解决方案包含 2 个项目
DCOMUploadExec - 一个承载横向移动攻击代码的 C++ 项目
AssemblyPayload - 一个弹出 MessageBox 的 .NET DLL。它是 DCOMUploadExec 使用的默认载荷
编译该解决方案
Usage: DCOMUploadExec.exe [domain]\[user]:[password]@[address]
Local Usage: DCOMUploadExec.exe LOCALHOST (Run this as administrator)
DCOMUploadExec.exe 将:
将默认载荷 DLL AssemblyPayload 上传到远程 PC
将 DLL 加载到远程 MSIEXEC.exe 进程中
执行 DLL 中的导出函数
从导出函数接收结果
载荷必须是强命名的 .NET 程序集
PayloadConfig.h 用于配置 DCOMUploadExec 将使用的载荷。
它默认使用 AssemblyPayload 的输出。
要使用自定义载荷:
创建一个强命名的 .NET 程序集,导出名为 InitializeEmbeddedUI 的函数 - 这将是 DCOMUploadExec 最终在远程目标上执行的函数
在 PayloadConfig.h 中填写自定义载荷的详细信息:
PAYLOAD_ASSEMBLY_PATH = // 所创建载荷的本地路径
ASSEMBLY_NAME = // 程序集名称
ASSEMBLY_BITNESS = // "64" 表示 x64 载荷,"32" 表示 x86 载荷;
ASSEMBLY_VERSION = // 来自 sigcheck.exe -n PAYLOAD_ASSEMBLY_PATH
ASSEMBLY_PUBLIC_KEY = // 来
自
sn.exe -T PAYLOAD_ASSEMBLY_PATH
编译 DCOMUploadExec 并使用它
攻击者和受害者机器必须位于同一域或林中。
攻击者和受害者机器必须与 DCOM 强化补丁 保持一致 - 要么两台系统都应用该补丁,要么都未应用。
程序集载荷必须具有强名称。
程序集载荷必须是 x86 或 x64(不能是 AnyCPU)。