Diamond Tickets

Golden Tickets과 다이아몬드 티켓의 공통점으로는 이미 도메인을 장악하여 krbtgt 키를 알고 있을 때 발급하여 지속성을 확보하는 지속성 공격입니다. 하지만 둘의 차이점으로 골든 티켓은 공격자가 krbtgt 키를 이용하여 완전한 오프라인 상태에서 위조한 TGT를 이용하는 반면, 다이아몬드 티켓은 도메인 컨트롤러를 통해 정상적인 TGT를 발급한 이후, 권한에 관련된 필드를 수정함으로써 높은 권한을 가집니다.

Charlie Clark 블로그에서 설명하는 것에 따르면, 최초의 다이아몬드 티켓 공격 방식은 정상적인 사용자 계정으로 PAC 정보가 공란인 TGT를 발급한 뒤, 해당 TGT의 PAC 정보를 높은 권한으로 변조한 뒤 krbtgt의 키로 암호화하여 높은 권한의 티켓으로 위조하는 방식이었습니다. 그러나 2021년 11월 Kerberos/AD 패치에서 PAC 정보가 없는 TGT에 대한 발급은 불가능하게 변경되었는데, krbtgt의 키를 알고 있다면 PAC 정보를 복호화한 뒤 변조하여 다시 암호화 하는 방법으로 티켓을 생성할 수 있습니다.

PAC에 있는 정보를 변경하여 높은 권한을 유지할 때는 두 가지 방식을 사용할 수 있습니다.

  • 티켓의 cname(Client Name) 필드와 PAC 정보를 모두 변경하여 다른 사용자를 가장하는 방법

  • 티켓의 cname은 그대로 두고 PAC에 기입된 권한 정보를 관리자 권한으로 변경하는 방법

골든 티켓은 TGT를 도메인 컨트롤러로부터 발급하지 않은 상태로 처음부터 공격자가 변조하여 생성하는 공격이기 때문에 AS-REQ 과정 자체가 존재하지 않습니다. 그러나 공격자가 자체 제작한 TGT를 이용하여 서비스에 접근할 때는 TGS-REQ 요청이 필연적이기 때문에, AS-REQ가 없는 TGS-REQ를 모니터링 한다면 탐지가 된다는 단점이 있습니다.

반면 다이아몬드 티켓은 도메인 컨트롤러로부터 정상적인 TGT를 발급받은 이후에 진행되기 때문에, 유일한 탐지 포인트였던 골든 티켓의 AS-REQ 공백 과정을 우회할 수 있습니다. 이러한 차이점으로 다이아몬드 티켓은 골든 티켓보다 작전보안에 이점이 있습니다.

Rubeus를 통해서 도메인 컨트롤러로부터 현재 사용자의 TGT를 발급받고, PAC 정보를 위조하여 높은 권한을 획득할 수 있습니다. 아래 명령어에서 각 옵션에 대한 설명은 다음과 같습니다.

  • /tgtdeleg : 현재 비콘 사용자의 TGT를 획득합니다.

  • /ticketuser : 가장하려는 사용자를 기입합니다.

  • /ticketuserid : 가장하려는 사용자의 RID 값입니다.

  • /groups : 원하는 그룹의 RID이며, 512는 Domain Admins 그룹입니다.

  • /krbkey : krbtgt의 AES256 해시입니다.

# krbtgt의 커버로스 키(AES256) 덤프
mimikatz # lsadump::dcsync /domain:<domain> /dc:<dc-fqdn> /user:krbtgt

# 도메인 SID 덤프
Import-Module ActiveDirectory
(Get-ADDomain).DomainSID.Value

# 다이아몬드 티켓 생성
.\Rubeus.exe diamond /tgtdeleg /krbkey:<krbtgt aes256> /ticketuser:Administrator /ticketuserid:500 /domain:<domain> /nowrap

# 토큰 생성 및 티켓 주입
make_token <domain\Administrator> FakePass
.\Rubeus.exe ptt /ticket:<Base64 Encoded Ticket>

Practice

다이아몬드 티켓은 골든 티켓과 다르게 PAC 정보의 변조 없이 정상적인 티켓 요청/응답으로 높은 권한을 획득하는 것이기 때문에 다음과 같이 더 많은 정보가 요구됩니다.

  • krbtgt NTLM 해시

  • krbtgt AES256 해시

  • 도메인 SID

  • 사용자 계정 정보(아이디/패스워드)

도메인 사용자 권한으로 도메인 SID와 도메인 관리자 권한으로 krbtgt의 NT 해시, AES256 키를 가져옵니다.

도메인 SID
krbtgt NTLM, AES256 해시
다이아몬드 티켓 생성

References

Last updated

Was this helpful?