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

本文深入探讨Active Directory中关键的Kerberos服务账户KRBTGT的安全特性,包括其密码管理机制、Golden Ticket攻击风险,以及如何使用PowerShell监控账户状态,帮助管理员提升域环境安全性。

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

域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 设计