Active Directory安全指南:深入解析KRBTGT域Kerberos服务账户

本文详细解析Active Directory中关键的KRBTGT账户安全机制,包括其密码更新策略、Golden Ticket攻击原理,以及通过PowerShell监控账户状态的实用技术指南。文章还揭示了如何通过msds-keyversionnumber属性追踪密码变更历史,并提供了专业的安全加固建议。

Active Directory安全指南:深入解析KRBTGT域Kerberos服务账户

域Kerberos服务账户KRBTGT是一个重要账户,因为它用于签名和加密Kerberos票据。该账户被禁用,且密码仅在从Windows 2000/2003升级到Windows Server 2008(或更新版本)时才会更改。这是一个高权限账户,如果攻击者能够获取该账户的密码哈希(或密码),他们就可以创建伪造的Kerberos票据(即Golden Tickets)。大多数AD林中的此账户仍使用旧密码。

KRBTGT账户存储两个密码:当前密码和先前密码,并同时检查两者以验证Kerberos票据。这意味着要确保KRBTGT密码完全更改,必须更改两次密码。如果攻击者能够获取与KRBTGT账户密码一样旧的DC备份(例如15年前),那么即使备份已有15年历史,他们也可以破坏环境!

我们可以使用“msds-keyversionnumber”属性来确定KRBTGT密码已更改的次数。公式n – 2可用于计算密码更改次数。如果该值为2,则表示自域创建时设置以来未更改过。如果值为9,则表示已更改7次(9 – 2 = 7)。有时该值非常大,例如100003。在这种情况下,我们仅使用最后一位数字(3)来计算更改次数:n – 2 = 1,因此已更改1次。建议先更改一次密码,等待至少一周,然后再次更改密码。设置密码时,DC上的进程实际上会将KRBTGT密码更改为完全随机的密码。

用于报告当前域KRBTGT账户的PowerShell代码:

1
2
3
4
$Domain = $env:userdnsdomain
$DomainDC = (Get-ADDomainController -Discover -DomainName $Domain).Name
$DomainKRBTGTAccount = Get-ADUser 'krbtgt' -Properties DistinguishedName,'msds-keyversionnumber',Created,PasswordLastSet -Server $DomainDC    
$DomainKRBTGTAccount | Select DistinguishedName,Created,PasswordLastSet,'msds-keyversionnumber' | Format-Table -AutoSize
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计