https://0xdf.gitlab.io/2019/01/13/getting-net-ntlm-hases-from-windows.html#overview
AD 환경을 공부하다 보면 마주치는 두 가지 인증 프로토콜이다.
NTLMv2
- 주로 DNS 이름이 아닌 IP 주소로 서버에 접근할 때 사용된다.
- 방식:
Challenge-Response 메커니즘을 사용한다.
- 작동 원리:
- Client: 나 접속할래
- Server: 이 랜덤한 숫자 (Challenge)를 줄 테니까 너의 비밀번호로 암호화해서 다시 보내봐
- Client: Hash로 그 숫자를 암호화해서 보냄 (NTLMv2 Response/Hash)
- Server: 본인도 같이 계산해보고 값이 같으면 통과
- 보안 취약점: 공격자가 중간에서 이 응닶을 가로채서 크래킹을 시도하거나 가로챈 응답값을 다른 서버에 그대로 던져서 로그인하는 Relay 공격을 시도할 수 있다.
Kerberos
- 현대 AD 환경의 기본 인증 프로토콜. 훨씬 복잡하지만 더 안전하다.
- 방식:
Ticket-based Authentication
- 작동 원리:
- 중앙의 신뢰할 수 있는 기관 KDC (보통 도메인 컨트롤러)가 티켓을 발행한다.
- AS-REQ: 사용자가 KDC에 “나 Wook인데, 티켓 줘!” 라고 요청한다.
- TGT 발급: KDC가 확인 후 Ticket Granting Ticket을 준다.
- TGS-REQ: 사용자가 특정 서비스에 가고 싶으면 TGT를 보여주며 “서비스 이용권 (TGS)으로 바꿔줘!” 라고 한다.
- TGS 발급: KDC가 TGS를 발급한다.
- AP-REQ: 사용자가 드디어 서비스 서버에 TGS를 제출하고 접속한다.
- 장점: 비밀번호 해시가 네트워크를 직접 돌아다니지 않는다.