Exchange Server HTTPS Wireshark 抓取明文报文
Exchange Server HTTPS Wireshark 抓取明文报文
参考
渗透技巧——Pass the Hash with Exchange Web Service (3gstudent.github.io)
前言
众所周知 Exchange Server 的 HTTPS 报文分为两种,一种是外部进来的请求,另外一种是通过代理转发内部的处理的请求。
本文演示的配置操作可以直接在 Wireshark 上查看到明文的 HTTPS 请求。
Exchange Server捕获明文通信数据的方法
在Exchange Server上导出证书文件
新建一个目录,使用 mimikatz,命令如下:
mimikatz.exe crypto::capi "crypto::certificates /systemstore:local_machine /store:my /export"
这条命令会在当前文件夹下导出多个证书文件,如下图
通过命令行实现对证书信息的获取,代码可参考:https://github.com/3gstudent/Homework-of-C-Sharp/blob/master/SSLCertScan.cs
配置Wireshark
在实际操作中,我会直接导入所有的 pfx 证书。注意,这里证书的密码都是 mimikatz
。操作如下图:
禁用 ECDH 密钥交换算法
参考资料:
通过注册表关闭 ECDH 的 cmd 命令:
reg add hklm\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\KeyExchangeAlgorithms\ECDH /v Enabled /t REG_DWORD /d 0 /f
关闭之后,通过SSLCertScan再次获取证书信息,Key Exchange Algorithm
由ECDH Ephemeral
变为RsaKeyX
,如下图
至此,Exchange Server配置完成,再次捕获数据,能够获得明文通信数据。但是在我实际操作中,并不可以抓取明文数据。接着我继续跟着参考文章去操作。
Exchange Client捕获明文通信数据的方法
省略,查看参考文章。
浏览器配置
我这里使用 Firefox 浏览器,发现 Server 因为关闭 ECDH重启之后无法访问了。报错 NS_ERROR_NET_INADEQUATE_SECURITY。
我们需要配置 Firefox 的 HTTP2 选项才可以访问。
在 about:config 修改 network.http.http2.enabled
的值为 False 后,刷新网页即可。
Wireshark 查看报文
实际操作下来,我进行了重启和等待之后,在 Wireshark 就可以查看解密后的 HTTPS 请求了。
以我的机器为例子,Ethernet0 接口是查看外部报文的接口;而 loopback 接口就是查看代理转发内部处理的报文的接口了。这两个接口的报文分别对应文章开头的两种报文。
Ethernet0
loopback
备注
启用 ECDH 密钥交换算法
reg delete hklm\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\KeyExchangeAlgorithms\ECDH /v Enabled /f