无境靶场-Time & Machines
字数 3910
更新时间 2026-02-27 02:55:08

Timeroasting 攻击与 Active Directory 权限提升链详解

0x01 初始信息枚举与面临的挑战

当目标环境全面禁用 NTLM 认证时,常规的渗透测试方法会失效,必须转向 Kerberos 认证的攻击路径。

1.1 信息收集步骤

  • 初步枚举:使用 enum4linux-ng 工具对目标进行扫描。
  • 关键发现
    • 确认目标域名为 sec.org,完全限定域名 (FQDN) 为 ad.sec.org
    • LDAP 和 SMB 服务正常运行。
    • 匿名登录无法获取有效信息。

1.2 NTLM 禁用与 Kerberos 转向

  • 攻击困境:尝试使用 nxc 进行 RID 爆破时,返回 STATUS_NOT_SUPPORTED (0xc00000bb) 错误。
  • 原理分析:此错误表明目标系统完全禁用了 NTLM 认证,所有后续交互必须强制使用 Kerberos 协议。
  • 前置要求:使用 Kerberos 前,必须确保攻击者机器与域控制器的时间同步。命令:ntpdate -u <DC_IP>

0x02 Timeroasting 攻击详解

这是一种在禁用 NTLM 环境下,无需任何凭据即可攻击计算机账户的攻击技术。

2.1 攻击原理

Timeroasting 滥用了 Microsoft 专有的 MS-SNTP(Microsoft Secure NTP)扩展机制。

  1. 核心流程:当域内计算机通过 NTP 与域控制器同步时间时,DC 会在响应中添加一个消息认证码以防止欺骗。
  2. 漏洞利用
    • MAC 密钥:这个 MAC 使用计算机账户密码的 NTLM hash 作为密钥计算生成。
    • 无需认证:NTP 请求本身是无需认证的。攻击者可以发送包含任意 RID 的 NTP 请求。
    • DC 的响应:DC 会查找该 RID 对应的计算机账户,并使用其密码 hash 计算 MAC 并返回。
  3. 攻击收获:攻击者可以从 NTP 响应中提取出经过特定方式加盐的计算机账户密码 hash,并对其进行离线破解。

2.2 与 Kerberoasting 的对比

特性对比 Kerberoasting Timeroasting
认证要求 需要至少一个有效的域用户凭据 完全零凭证,仅需 DC 的 NTP 端口 (UDP 123) 开放
目标对象 主要为设置有 SPN 的用户服务账户 计算机账户 ($结尾) 和信任账户
检测难度 会产生大量 TGS 请求,相对容易被 EDR/日志检测 流量伪装为正常的 NTP 时间同步,隐蔽性极高
破解难度 使用常见 Hashcat 模式 使用特定格式(如 Hashcat mode 31300),且结果只返回 RID,需额外映射账户名
适用场景 常规域渗透 NTLM 禁用、Kerberoasting/AS-REP 已被加固环境下的初始突破口

2.3 攻击实施步骤

  1. 发送请求:使用工具(如 nxctimeroast 模块)向 DC 的 UDP 123 端口发送特制的 MS-SNTP 请求,指定目标 RID。
  2. 提取哈希:从 DC 的响应中提取 MAC 和 NTP 响应体(作为盐)。
  3. 离线破解:将提取的数据格式化为 Hashcat mode 31300 支持的格式,使用字典进行批量破解。计算机账户密码常为弱口令(如主机名小写、默认口令、公司规则生成的短密码)。
  4. 账户映射:成功破解密码后,根据上下文(如 RID 值、命名规则)猜测对应的计算机账户名(通常为 主机名$)。

0x03 权限提升链:基于 ACL 的域内横向移动

获得初始立足点(如 mht$ 账户)后,通过分析 Active Directory 中的访问控制列表权限,构造复杂的提权路径。

3.1 核心攻击路径梳理

攻击者遵循以下步骤,利用一系列 ACL 权限漏洞实现从普通机器账户到域管理员权限的提升:

  1. MHT$ -> Operations:利用 AddSelf 权限,将 MHT$ 账户添加到 Operations 安全组中。
  2. Operations 组 -> 用户 BB:作为 Operations 组成员,继承对用户 BBForceChangePassword 权限,重置其密码。
  3. 用户 BB -> 机器 DANCINGTIME$:利用 BB 账户对 DANCINGTIME$ 机器的 WriteDacl 权限,为 MHT$ 账户添加完全控制权 (GenericAll)。
  4. 机器 DANCINGTIME$ -> DELE:通过控制的 DANCINGTIME$ 账户,利用其对 DELE 组的 WriteDacl 权限,将 MHT$ 账户加入 DELE 组。
  5. DELE 组 -> 用户 ZZ:作为 DELE 组成员,获得对用户 ZZ 的密码重置权限。
  6. 用户 ZZ -> 域控 AD$:利用 ZZ 账户对域控计算机对象 AD$AddAllowedToAct 权限,为 基于资源的约束性委派 攻击铺平道路。

3.2 关键权限点详解

  • AddSelf (Self-Membership):允许一个主体(用户或计算机)将自己添加到目标组的成员列表中。这是一种隐蔽的提升权限方式。
  • ForceChangePassword:一种扩展权限,允许攻击者在不知道目标账户当前密码的情况下,直接为其设置新密码。此操作会中断目标账户的正常会话。
  • WriteDacl:允许主体修改目标对象的任意访问控制列表。这是 ACL 攻击的核心,攻击者通常利用此权限为自己添加完全控制权 (GenericAll) 或成为对象的所有者。
  • AddAllowedToAct:该权限允许主体修改目标计算机对象的 msDS-AllowedToActOnBehalfOfOtherIdentity 属性,这是配置 RBCD 攻击的必要条件。

0x04 基于资源的约束性委派攻击

这是权限提升链的最后一步,用于获取域管理员的访问权限。

4.1 前置条件配置

  1. 修改委派属性:利用拥有 AddAllowedToAct 权限的账户(如 ZZ),修改域控 AD$msDS-AllowedToActOnBehalfOfOtherIdentity 属性,添加被控制的机器账户(如 MHT$)。这表示 AD$ 信任 MHT$ 可以代表其他用户来访问自己。

4.2 S4U 协议攻击流程

利用 Kerberos 协议的 Service for User (S4U) 扩展,分两步获取模拟域管理员的票据。

  1. S4U2self
    • 目的:获取一张代表任意用户(如 Administrator)访问服务账户(MHT$)自身的票据。
    • 过程MHT$ 向 KDC 请求:“用户 Administrator 想要访问我,请颁发一张相应的服务票据。” KDC 在不验证 Administrator 密码的情况下即会颁发此票据。
  2. S4U2proxy
    • 目的:将上一步获得的身份“转发”到目标服务(域控 AD$)。
    • 过程MHT$Administrator 访问自己的票据,向 KDC 请求:“现在我要将 Administrator 的身份委派给 AD$,请颁发 Administrator 访问 AD$cifs 服务票据。”
    • 授权检查:KDC 会检查 AD$msDS-AllowedToActOnBehalfOfOtherIdentity 属性。如果其中包含 MHT$,则授权通过并颁发最终的服务票据。
  3. 票据利用:获得 Administrator 访问域控 cifs 服务的票据后,即可使用该票据进行身份验证,最终在域控上执行命令,完成域控权限的获取。

0x05 总结与防御建议

5.1 攻击路径总览

Timeroasting (获取 mht$ 密码) 
    --> AddSelf (加入 Operations 组) 
    --> ForceChangePassword (接管 BB 账户) 
    --> WriteDacl (控制 DANCINGTIME$ 机器) 
    --> WriteDacl (加入 DELE 组) 
    --> ForceChangePassword (接管 ZZ 账户) 
    --> RBCD (配置委派攻击) 
    --> 获取域管理员权限

5.2 核心安全启示

  1. 禁用 NTLM 不是绝对安全:虽然禁用 NTLM 可以抵御大量传统攻击,但会迫使攻击者转向更隐蔽的 Kerberos 协议攻击,如 Timeroasting。
  2. ACL 权限审计至关重要:复杂的、嵌套的 ACL 权限是横向移动的温床。应定期使用工具(如 BloodHound)审计域内权限关系,清理不必要的、过度的权限设置,特别是对高危权限(如 WriteDaclGenericAllAddSelfForceChangePassword)的分配。
  3. 计算机账户密码安全:确保计算机账户使用强密码,避免使用简单规则生成的弱口令,以防止被 Timeroasting 或类似攻击离线破解。
  4. 委派配置严格管控:基于资源的约束性委派应谨慎配置,仅允许受信任的、必需的账户。定期审查 msDS-AllowedToActOnBehalfOfOtherIdentity 属性。
  5. 监控异常时间同步请求:在可能的情况下,监控域控制器 NTP 端口上的异常请求流量,作为检测 Timeroasting 攻击的潜在指标。
 全屏