无境靶场-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)扩展机制。
- 核心流程:当域内计算机通过 NTP 与域控制器同步时间时,DC 会在响应中添加一个消息认证码以防止欺骗。
- 漏洞利用:
- MAC 密钥:这个 MAC 使用计算机账户密码的 NTLM hash 作为密钥计算生成。
- 无需认证:NTP 请求本身是无需认证的。攻击者可以发送包含任意 RID 的 NTP 请求。
- DC 的响应:DC 会查找该 RID 对应的计算机账户,并使用其密码 hash 计算 MAC 并返回。
- 攻击收获:攻击者可以从 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 攻击实施步骤
- 发送请求:使用工具(如
nxc的timeroast模块)向 DC 的 UDP 123 端口发送特制的 MS-SNTP 请求,指定目标 RID。 - 提取哈希:从 DC 的响应中提取 MAC 和 NTP 响应体(作为盐)。
- 离线破解:将提取的数据格式化为 Hashcat mode 31300 支持的格式,使用字典进行批量破解。计算机账户密码常为弱口令(如主机名小写、默认口令、公司规则生成的短密码)。
- 账户映射:成功破解密码后,根据上下文(如 RID 值、命名规则)猜测对应的计算机账户名(通常为
主机名$)。
0x03 权限提升链:基于 ACL 的域内横向移动
获得初始立足点(如 mht$ 账户)后,通过分析 Active Directory 中的访问控制列表权限,构造复杂的提权路径。
3.1 核心攻击路径梳理
攻击者遵循以下步骤,利用一系列 ACL 权限漏洞实现从普通机器账户到域管理员权限的提升:
MHT$->Operations组:利用AddSelf权限,将MHT$账户添加到Operations安全组中。Operations组 -> 用户BB:作为Operations组成员,继承对用户BB的ForceChangePassword权限,重置其密码。- 用户
BB-> 机器DANCINGTIME$:利用BB账户对DANCINGTIME$机器的WriteDacl权限,为MHT$账户添加完全控制权 (GenericAll)。 - 机器
DANCINGTIME$->DELE组:通过控制的DANCINGTIME$账户,利用其对DELE组的WriteDacl权限,将MHT$账户加入DELE组。 DELE组 -> 用户ZZ:作为DELE组成员,获得对用户ZZ的密码重置权限。- 用户
ZZ-> 域控AD$:利用ZZ账户对域控计算机对象AD$的AddAllowedToAct权限,为 基于资源的约束性委派 攻击铺平道路。
3.2 关键权限点详解
AddSelf(Self-Membership):允许一个主体(用户或计算机)将自己添加到目标组的成员列表中。这是一种隐蔽的提升权限方式。ForceChangePassword:一种扩展权限,允许攻击者在不知道目标账户当前密码的情况下,直接为其设置新密码。此操作会中断目标账户的正常会话。WriteDacl:允许主体修改目标对象的任意访问控制列表。这是 ACL 攻击的核心,攻击者通常利用此权限为自己添加完全控制权 (GenericAll) 或成为对象的所有者。AddAllowedToAct:该权限允许主体修改目标计算机对象的msDS-AllowedToActOnBehalfOfOtherIdentity属性,这是配置 RBCD 攻击的必要条件。
0x04 基于资源的约束性委派攻击
这是权限提升链的最后一步,用于获取域管理员的访问权限。
4.1 前置条件配置
- 修改委派属性:利用拥有
AddAllowedToAct权限的账户(如ZZ),修改域控AD$的msDS-AllowedToActOnBehalfOfOtherIdentity属性,添加被控制的机器账户(如MHT$)。这表示AD$信任MHT$可以代表其他用户来访问自己。
4.2 S4U 协议攻击流程
利用 Kerberos 协议的 Service for User (S4U) 扩展,分两步获取模拟域管理员的票据。
- S4U2self:
- 目的:获取一张代表任意用户(如
Administrator)访问服务账户(MHT$)自身的票据。 - 过程:
MHT$向 KDC 请求:“用户Administrator想要访问我,请颁发一张相应的服务票据。” KDC 在不验证Administrator密码的情况下即会颁发此票据。
- 目的:获取一张代表任意用户(如
- S4U2proxy:
- 目的:将上一步获得的身份“转发”到目标服务(域控
AD$)。 - 过程:
MHT$持Administrator访问自己的票据,向 KDC 请求:“现在我要将Administrator的身份委派给AD$,请颁发Administrator访问AD$的cifs服务票据。” - 授权检查:KDC 会检查
AD$的msDS-AllowedToActOnBehalfOfOtherIdentity属性。如果其中包含MHT$,则授权通过并颁发最终的服务票据。
- 目的:将上一步获得的身份“转发”到目标服务(域控
- 票据利用:获得
Administrator访问域控cifs服务的票据后,即可使用该票据进行身份验证,最终在域控上执行命令,完成域控权限的获取。
0x05 总结与防御建议
5.1 攻击路径总览
Timeroasting (获取 mht$ 密码)
--> AddSelf (加入 Operations 组)
--> ForceChangePassword (接管 BB 账户)
--> WriteDacl (控制 DANCINGTIME$ 机器)
--> WriteDacl (加入 DELE 组)
--> ForceChangePassword (接管 ZZ 账户)
--> RBCD (配置委派攻击)
--> 获取域管理员权限
5.2 核心安全启示
- 禁用 NTLM 不是绝对安全:虽然禁用 NTLM 可以抵御大量传统攻击,但会迫使攻击者转向更隐蔽的 Kerberos 协议攻击,如 Timeroasting。
- ACL 权限审计至关重要:复杂的、嵌套的 ACL 权限是横向移动的温床。应定期使用工具(如 BloodHound)审计域内权限关系,清理不必要的、过度的权限设置,特别是对高危权限(如
WriteDacl,GenericAll,AddSelf,ForceChangePassword)的分配。 - 计算机账户密码安全:确保计算机账户使用强密码,避免使用简单规则生成的弱口令,以防止被 Timeroasting 或类似攻击离线破解。
- 委派配置严格管控:基于资源的约束性委派应谨慎配置,仅允许受信任的、必需的账户。定期审查
msDS-AllowedToActOnBehalfOfOtherIdentity属性。 - 监控异常时间同步请求:在可能的情况下,监控域控制器 NTP 端口上的异常请求流量,作为检测 Timeroasting 攻击的潜在指标。