利用S4U2Self实现Active Directory横向渗透

利用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智能小助手)
    公众号二维码
posted @ 2025-08-17 19:11  qife  阅读(13)  评论(0)    收藏  举报