NTLM 다운그레이드
Last updated
Last updated
LLMNR, Nbt-NS, mDNS 포이즈닝 공격이나 강제 인증 공격으로 얻어진 Net-NTLMv1 해시들은 특정 조건이 맞을 때 NTLM 해시로 다운그레이드 공격을 할 수 있다. 다운그레이드 공격은 (복잡한) 암호학적 공격 (Cryptographic Attack) 관련된 공격이기 때문에 이 글에서는 설명하지 않는다. 관련 공격은 이 레퍼런스를 참고하면 된다. 다운그레이드 해 얻어진 NTLM 해시는 Pass-the-Hash (PTH)을 통해 인증에 사용된다.
포이즈닝이나 강제 인증 공격으로 인증 트래픽과 해시를 얻을 것
해시를 얻기 전 NTLM Challenge 를 1122334455667788 로 설정할 것
얻은 해시가 Net-NTLMv1 일 것 (HKLM\System\CurrentControlSet\Control\Lsa\LmCompatibilityLevel
가 0, 1, 2 일 때)
Responder의 --disable-ess
등의 플래그 사용으로 Extended Session Security가 비활성화 된 Net-NTLMv1 해시일 것
간단한 PoC를 위해 프린터 버그로 강제 인증을 실행하고, Responder로 해시를 받는다.
ESS가 비활성화된 Net-NTLMv1 은 :
를 기준으로 같은 문자열이 나온다. 이제 이 문자열을 NTHASH:(문자열)
형태로 crack.sh
라는 홈페이지에 첨부를 하면 NTLM 문자열을 받아올 수 있다.
모의해킹을 진행하거나 레드팀 작전 수행 시 고객사 네트워크에서 얻은 해시를 랜덤한 홈페이지에 업로드 하면 안된다. 이 페이지의 실습은 연습용이기 때문에 crack.sh를 사용한다.
실무였다면 crack.sh가 아니라 hashcat을 이용해 Net-NTLMv1 -> NTLM 다운 그레이드를 실행한다
이런식으로 첨부하면 이메일로 다운그레이드 된 NTLM 해시가 온다. 이제 이 해시를 이용해 PTH를 해 사용자 인증을 한다.
이 실습에서는 강제 인증을 통해 도메인 컨트롤러의 머신 계정 NTLM 해시를 얻었다. 따라서 이를 이용해 NTDS 덤프 공격을 실행한다.
NTLM 다운그레이드 공격의 근본적 원인은 바로 타겟 호스트가 Net-NTLMv1 해시를 반환했다는 것이다. 윈도우 10과 윈도우 서버 2016 이후 기본적으로 Net-NTLMv2 를 사용하도록 되어있지만, 아직도 많은 네트워크에서는 하위 호환성을 위해 Net-NTLMv1 이나 심지어는 NTLM 해시를 사용하도록 되어있는 곳도 있다.
따라서 하위 호환성 테스트를 거친 뒤 Net-NTLMv1 을 사용하는 프로세스나 어플리케이션이 없다면 모든 호스트에서 Net-NTLMv2 를 사용하도록 설정한다.