Pass the Hash

Pass the Hash

NTLM 인증의 독특한 방식 때문에 공격자는 평문 패스워드를 모르더라도 NTLM 해시만으로도 사용자 인증을 할 수 있습니다. Pass the Hash는 평문 패스워드를 건너뛰고 해시를 사용하는 방법입니다.

Abuse

# 사용자의 NTLM로 TGT 생성
.\Rubeus.exe asktgt /user:Mick3y /rc4:2b576acbe6bcfda7294d6bd18041b8fe /nowrap /ptt /force /opsec /domain:contoso

# 티켓 삭제
.\Rubeus.exe purge

Opsec

도메인을 명시하지 않고 Rubeus를 통해 티켓을 생성하면 도메인 이름을 사용하여 티켓을 요청합니다. 하지만 일반적인 경우에서 사용자가 인증하면 도메인의 NetBIOS 이름만 사용합니다. 또한 Ticket Options도 상이한 결과를 보입니다.

일반적인 TGT 요청 이벤트
Rubeus에서 생성한 TGT 요청 이벤트

도메인 이름은 오류 방지를 위해 Rubeus에서 명시적으로 FQDN을 사용합니다. Ticket Options가 차이나는 이유는 kdc-options에서 16번째 플래그인 canonicalize 옵션의 값이 다르기 때문입니다.

RFC6806에서 정의하듯 이 옵션은 클라이언트가 제시한 KDC 이름이 alias일 수도 있으니 정규화 해줄 것을 요청하는 옵션입니다.

Rubeus의 opsec 옵션은 이 값을 1로 설정하여 일반적인 AS-REQ를 모방합니다.

impacket 프로젝트는 opsec 옵션을 제공하지 않으며, Ticket Options 5080000을 생성합니다.

References

Last updated

Was this helpful?