写点什么

利用 S4U2Self 实现 Active Directory 横向渗透

作者:qife122
  • 2025-08-17
    福建
  • 本文字数:887 字

    阅读完需:约 3 分钟

利用 S4U2Self 实现 Active Directory 横向渗透

作者:Hunter Wade | BHIS 实习生


Hunter 刚获得网络防御硕士学位,拥有两年多的渗透测试经验。他专注于 Active Directory 测试,业余时间喜欢在家庭实验室分析恶意软件。


本文为交叉发布内容,原始文章参见此处

摘要

当仅拥有有效机器账户哈希时,可利用 Kerberos S4U2Self 代理实现本地提权,重新开启 SEImpersonate 等本地到域的横向渗透路径。

Kerberos 基础

Kerberos 是基于票据的认证协议,通过可信第三方建立安全通信。包含三个角色:


  • 客户端:请求访问资源的用户/系统

  • 服务端:目标资源

  • 密钥分发中心(KDC):负责认证和发证的可信第三方


认证流程:


  1. 客户端用密码加密认证请求发送给 KDC

  2. KDC 验证后返回用 KDC 密钥加密的 TGT 票据

  3. 客户端用 TGT 向 KDC 请求服务票据(ST)

  4. KDC 返回用服务密码加密的 ST

  5. 服务端解密 ST 验证客户端身份

委派机制与双跳问题

Kerberos 的"双跳问题"指服务无法转发客户端凭据。微软引入三种委派方案:


  1. 无约束委派:服务可获得客户端 TGT

  2. 约束委派:限制委派到特定 SPN,引入 S4U2Self/S4U2Proxy

  3. 基于资源的约束委派:由目标资源控制委派权限

S4U2Self 技术分析

关键发现:S4U2Self 不需要配置约束委派即可执行模拟。攻击者获取机器账户哈希后:


  1. 通过哈希传递攻击生成 TGT

  2. 模拟任意域用户获取服务票据

  3. 限制:仅能在被入侵的机器账户关联资源上模拟

攻击路径实践

当无法直接横向移动时,可通过以下步骤重新开启 SEImpersonate 攻击路径:


  1. 用机器哈希通过 S4U2Self 模拟域管理员

  2. 创建新本地管理员账户

  3. 修改注册表禁用 Remote UAC

  4. 检测域管理员会话

  5. 通过计划任务实现 SEImpersonate 提权

  6. 创建域管理员账户完成域控

技术限制

适用场景需同时满足:


  • 拥有未过期的机器账户哈希

  • 本地管理员账户被禁用

  • 域管理员在目标主机存在活跃会话


典型应用场景:


  • 通过 SEBackupPrivilege 获取哈希且本地 admin 被禁用

  • 从未更新密码的备份中获取有效机器哈希

防御建议

  1. 定期轮换机器账户密码(默认 30 天)

  2. 限制本地管理员权限

  3. 监控异常 Kerberos 票据请求

  4. 启用 Credential Guard 防护 PTT/PTH 攻击

参考资源

  1. 微软S4U2Self协议规范

  2. ADSecurity.org委派指南

  3. Credential Guard技术文档更多精彩内容 请关注我的个人公众号 公众号(办公 AI 智能小助手)公众号二维码

  4. 办公AI智能小助手
用户头像

qife122

关注

还未添加个人签名 2021-05-19 加入

还未添加个人简介

评论

发布
暂无评论
利用S4U2Self实现Active Directory横向渗透_Active Directory_qife122_InfoQ写作社区