利用 S4U2Self 实现 Active Directory 横向渗透
利用 S4U2Self 实现 Active Directory 横向渗透
作者:Hunter Wade | BHIS 实习生
Hunter 刚获得网络防御硕士学位,拥有两年多的渗透测试经验。他专注于 Active Directory 测试,业余时间喜欢在家庭实验室分析恶意软件。
本文为交叉发布内容,原始文章参见此处。
摘要
当仅拥有有效机器账户哈希时,可利用 Kerberos S4U2Self 代理实现本地提权,重新开启 SEImpersonate 等本地到域的横向渗透路径。
Kerberos 基础
Kerberos 是基于票据的认证协议,通过可信第三方建立安全通信。包含三个角色:
客户端:请求访问资源的用户/系统
服务端:目标资源
密钥分发中心(KDC):负责认证和发证的可信第三方
认证流程:
客户端用密码加密认证请求发送给 KDC
KDC 验证后返回用 KDC 密钥加密的 TGT 票据
客户端用 TGT 向 KDC 请求服务票据(ST)
KDC 返回用服务密码加密的 ST
服务端解密 ST 验证客户端身份
委派机制与双跳问题
Kerberos 的"双跳问题"指服务无法转发客户端凭据。微软引入三种委派方案:
无约束委派:服务可获得客户端 TGT
约束委派:限制委派到特定 SPN,引入 S4U2Self/S4U2Proxy
基于资源的约束委派:由目标资源控制委派权限
S4U2Self 技术分析
关键发现:S4U2Self 不需要配置约束委派即可执行模拟。攻击者获取机器账户哈希后:
通过哈希传递攻击生成 TGT
模拟任意域用户获取服务票据
限制:仅能在被入侵的机器账户关联资源上模拟
攻击路径实践
当无法直接横向移动时,可通过以下步骤重新开启 SEImpersonate 攻击路径:
用机器哈希通过 S4U2Self 模拟域管理员
创建新本地管理员账户
修改注册表禁用 Remote UAC
检测域管理员会话
通过计划任务实现 SEImpersonate 提权
创建域管理员账户完成域控
技术限制
适用场景需同时满足:
拥有未过期的机器账户哈希
本地管理员账户被禁用
域管理员在目标主机存在活跃会话
典型应用场景:
通过 SEBackupPrivilege 获取哈希且本地 admin 被禁用
从未更新密码的备份中获取有效机器哈希
防御建议
定期轮换机器账户密码(默认 30 天)
限制本地管理员权限
监控异常 Kerberos 票据请求
启用 Credential Guard 防护 PTT/PTH 攻击
参考资源
Credential Guard技术文档更多精彩内容 请关注我的个人公众号 公众号(办公 AI 智能小助手)公众号二维码
- 办公AI智能小助手
评论