Kerberos认证介绍及黄金票据和白银票据

学前介绍

LM协议: 早期SMB协议在网络上传输明文口令。后来出现LAN Manager 挑战和
响应 验证机制简称LM,很简单,容易被破解

NTLM: 微软提出的一种windowsNT挑战/响应验证机制,称之为NTLM。现在已经
有了更新到了NTLMv2和kerberos验证机制

NTLM的挑战和响应机制如下:(就跟短信验证码类似)

协商:客户端向服务端确认协议的版本
质询:客户端向服务端发送用户信息请求;服务器接收之后生成一个16位随机数,称之为Challenge;用NTLM HASH加密16位随机数,生成CHallenge1;并将16位随机数发给客户端;客户端接收到Challenge后,使用自己的NTLM HASH加密Challenge生成Response,再发送给服务端。
验证: 服务端用客户端的Response和CHallenge1相比,相等就通过。
Kerberos认证介绍及黄金票据和白银票据_第1张图片

NTLMv1和NTMLv2的区别: 加密算法不同,v1challenge是8位,DES,v2是16位,HMAX-MD5;

哈希传递(Pass The Hash):不需要明文密码完成认证;解决了我们渗透种获取不到明文密码的问题
必要条件:需要NTLM Hash \需要用户名

AD功能:

服务器及客户端将计算机管理
用户服务
资源管理
桌面配置
应用系统支撑

Kerberos域认证体系:

是一种网络认证协议,通过密钥系统为客户机和服务器应用程序提供强大的认证服务;它是可信的第三方服务器;组成:client\server\kdc

KDC的组成:
AD:存储client白名单,只有白名单才能生成TGT
AS:为client生成TGT的服务
TGS:为client生成某个服务的ticket
第三步认证的Ticket的组成:Ticket=Server Hash(Server Session Key+Client info+End Time)

整一个认证过程(通俗版):
就好像办好了身份证买票去火车站坐车。几个角色要理清:

派出所:AS
售票厅:TGS
派出所户籍系统:AD
身份证:TGT
车票:Ticket
个人户口本等信息:user/host name
火车:我们所需访问的服务器

首先需要拿个人户口本(user/host name)等一些证明信息去当地派出所(AS)办身份证(TGT),派出所会在户籍系统(AD)验证是否存在该人的个人信息,然后用身份证去售票厅(TGS)买到票(ticket),再用这张票去做火车(所需要访问的服务器)。

白银票据:不需要与KDC进行交互;需要目标服务的NTLM Hash(Server Hash伪造)。也就是说白银票据伪造利用的是ticket,用于访问目标服务器的具体服务,ticket的格式如下:

Server hash(server session key   client info   end time)

其中client和end time都是清楚的,server session key连server都不知道
利用工具:先用mimikatz去server中导出hash

mimikatz.exe "privilege::debug" "sekurlsa::logonpasswords" "exit">info.txt

然后在client中构造票据,然后直接访问具体服务:

mimikatz "kerberos::golden /domain:<域名> /sid:<域 SID> /target:<目标服务器主机名> /service:<服务类型> /rc4: /user:<用户名> /ptt" exit

防白银票据的修复方法:
1、NTLM hash尽量不丢
2、开启PAC特权属性证书保护功能,这样会多一个验证过程,就是通过PAC把ticket发给KDC验证其有效性,在服务端添加,具体开启在如下:

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

手动添加一条:ValidateKdcPacSignature设置为dword 1
Kerberos认证介绍及黄金票据和白银票据_第2张图片

黄金票据:需要和KDC通信;需要Krbtgt用户的hash也就是KDC hash(TGT伪造)。也就是伪造身份证去随意买票

利用工具:先用mimikatz在域控执行如下,获取信息:

mimikatz lsadump::dsync /domain:zengtao.com /user:krbtgt

然后再用获取的krbtgt信息,在客户端进行伪造

mimikatz "kerberos::golden /domain:<域名> /sid:<域SID> /aes256: /user:<任意用户名> /ptt" exit

防黄金票据的修复方法:
经常更新krbtgt的密码

你可能感兴趣的:(kerberos认证)