Active Directory安全指南:深入解析KRBTGT账户与Kerberos票据安全

本文深入解析Active Directory中KRBTGT账户的关键作用,该账户用于签名和加密Kerberos票据。文章详细介绍了KRBTGT账户的安全风险、密码更改策略,并提供了检测账户状态的PowerShell脚本,帮助提升域环境安全性。

Active Directory安全指南:域Kerberos服务账户-KRBTGT

域Kerberos服务账户KRBTGT是一个重要账户,因为它用于签名和加密Kerberos票据。该账户被禁用,除了从Windows 2000/2003升级到Windows Server 2008(或更新版本)时,密码通常不会更改。

这是一个高特权账户,如果攻击者能够获取该账户的密码哈希(或密码),他们就可以创建伪造的Kerberos票据(也称为黄金票据)。大多数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 设计