1. NTLM(NT LAN Manager)

- MS에서 개발한 Challenge-Response 모델 기반 인증 프로토콜로, 주로 Windows 환경에서 사용자 인증에 사용 [1]

[사진 1] NTLM 동작 방식

1.1 인증 과정

- NTLM은 크게 Connection-Oriented 방식Connectionless 방식으로 나뉨 [2]

[사진 2] Connection-Oriented 방식(좌) Connectionless 방식(우)

메시지 설명
NTLM NEGOTIATE_MESSAGE [3] - 클라이언트 어플리케이션에서 인증된 세션이 필요할 경우 전송
- 클라이언트가 인증과정에 필요한 각종 정보(NTLM 버전, 암호화 수준 등)를 포함
NTLM CHALLENGE_MESSAGE [4] - 클라이언트의 환경에 맞춰 서버가 생성한 임의의 Challenge(8Byte) 값을 전달
NTLM AUTHENTICATE_MESSAGE [5] - 클라이언트는 Challenge를 기반으로 Response 값을 계산 및 서버에 전송

 

1.2 Response

- NTLM 인증에서 클라이언트는 서버가 전송한 Challenge 값과 사용자의 패스워드로부터 생성된 NT Hash를 이용해 Response 계산
> NTLM v1 : MD4(Unicode(Password)) 결과 값 16바이트에 패딩 5바이트를 추가해 7바이트씩 3개로 분할하여 각각 DES 암호화를 수행한 값들의 조합 [6]
> NTLM v2 : HMAC-MD5 알고리즘을 사용하며, 클라이언트 생성 난수와 타임스탬프 등 가변적인 데이터를 포함하여 계산 [7]

※ 호환성을 이유로 NTLM v2에서도 MD4(Unicode(Password)) 사용

2. 취약점

- Shodan 검색 결과, 현재 NTLM 인증을 사용하는 것으로 식별되는 국내 자산은 총 6만 6천여 개로 확인

[사진 3] NTLM country:"KR" 검색 결과

2.1 취약한 암호 알고리즘(DES), 해시 알고리즘(MD4) 사용

- DES는 1976년 개발된 암호 알고리즘으로, 56비트 키 길이를 사용하며 현재 컴퓨터 환경에 너무 짧은 키 길이를 사용 [8]

- MD4는 1990년 개발된 128비트 암호화 Hash 함수로, 이미 충돌 공격 및 사전 이미지 공격 가능성이 학술적으로 증명되어 안전하지 않은 알고리즘으로 평가 [9][10]

※ 충돌 공격(Collision Attack) : 같은 해시값을 가지는 서로 다른 입력을 찾아내는 공격

※ 사전 이미지 공격(Pre-image Attack) : 주어진 해시값에 대응하는 원본 입력을 찾아내는 공격

 

2.2 주요 공격 벡터

- Pass-the-Hash : 평문 비밀번호를 몰라도 Hash 값을 획득하여, 해당 Hash를 재전송하여 인증을 통과하는 방식 [11]

> NT Hash를 계산할 때 Salt를 사용하지 않기 때문에 평문 비밀번호를 몰라도 Hash 값을 획득하여 해당 Hash를 재전송함으로써 인증을 통과할 수 있음

[공격 시나리오]
1단계. 초기 침투
- 공격자는 네트워크 내부로 진입하기 위해 사회공학적 기법이나 취약점 이용
> 피싱 이메일을 통한 악성코드 감염
> 취약한 웹 서비스 악용
> 이미 탈취한 계정 정보 재사용

2단계. 로컬 관리자 권한 획득
- 공격자는 대상 시스템에서 관리자 권한을 획득해 인증 정보를 저장하는 메모리 영역에 접근
> 취약 서비스 악용
> 로컬 관리자 계정 재사용
> UAC 우회

3단계. Hash 추출
- 시스템에 침투한 공격자는 메모리 등을 스캐닝한 후 Mimikatz와 같은 도구를 사용하여 메모리에 남아있는 NTLM Hash 추출
> 추출 대상
LSASS(Local Security Authority Subsystem Service) 프로세스 메모리 : 로그인에 성공한 사용자의 Windows 자격 증명에 대한 NTLM Hash가 포함
SAM(Security Account Manager) 데이터베이스 : 로컬 사용자 계정 정보와 Hash된 비밀번호를 저장
도메인 컨트롤러 데이터베이스 (NTDS.dit) : 도메인 내 모든 사용자의 비밀번호 Hash와 권한 정보가 저장

4단계. Hash 재전송 및 인증 우회
- 탈취한 NTLM Hash를 사용해 다른 시스템에 인증 시도

5단계. 횡적 이동 및 권한 상승
- 내부 다른 시스템으로 다른 워크스테이션이나 서버(DB, 파일 서버 등)에 접속 및 관리자 계정 탈취

6단계. 목적 달성 및 은닉
- 데이터 유출 및 지속성 확보

 

- NTLM Relay 공격 : 공격자가 클라이언트와 서버의 중간에 위치하여 Challenge/Response를 가로채 악용하는 중간자 공격 [12]

> 클라이언트와 서버간 상호 인증이 아닌, 클라이언트만 서버에 자신을 증명하는 구조로 중간자 공격이 가능함

[공격 시나리오]
1. LLMNR/NBT-NS 포이즈닝 등을 통해 공격자 서버로 인증을 유도
※ LLMNR (Link-Local Multicast Name Resolution), Nbt-NS (Netbios Name Service)는 호스트/사용자 인증을 거치지 않는 레거시 프로토콜 [13]

2. NTLM 인증 수행
- 클라이언트는 공격자 서버로 NTLM 인증 수행

3. 중간자 공격
- 공격자는 클라이언트와 서버 중간에 위치해 NTLM 메시지를 중계
> 클라이언트 - 공격자 - 서버의 형태

4. 인증 성공
- 공격자는 정상 사용자로 서버에 접근 허용

 

- NTLM Downgrade 공격 등 여러 공격 방식 존재

[공격 시나리오]
1. LLMNR/NBT-NS 포이즈닝 등을 통해 공격자 서버로 인증을 유도

2. NTLM 인증 수행
- 클라이언트는 공격자 서버로 NTLM 인증 수행

3. 중간자 공격
- 공격자는 클라이언트와 서버 중간에 위치해 NTLM NEGOTIATE_MESSAGE를 가로채고 조작하여 서버에 전송
> 낮은 인증 옵션을 사용하도록 메시지 조작

4. 취약한 응답 획득
- 서버는 낮은 인증 옵션으로 클라이언트에 응답 전송

5. 평문 비밀번호 획득
- 오프라인 크래킹 또는 무차별 대입 공격 등을 통해 평문 비밀번호 획득

 

2.3 레인보우 테이블 (해시-평문 대응 정보)

- 구글 맨디언트는 NTLM v1의 레인보우 테이블 공개 (NTLM v1의 빠른 퇴출 목적) [14][15][16]

※ 데이터셋을 활용하면 600달러 미만의 소비자용 하드웨어로도 12시간 이내에 키를 복구할 수 있음

- 공격자는 인증 트래픽을 가로챈 뒤 레인보우 테이블과 대조해보는 것만으로도 암호 획득 가능

 

2.4 MS 공식 발표

- MS는 NTLM 기능을 더 이상 기능 개발 미진행 및 사용이 권장되지 않으며 커버로스 프로토콜 강화 발표

- Windows 11 버전 24H2 및 Windows Server 2025부터 NTLMv1 제거 [17][18]

3. 대응방안

- NTLM v1 비활성화 및 NTLM v2, 커버로스 등 안전한 프로토콜 사용

- 현재 NTLM 인증 수준을 확인하여 3 이상으로 변경 [19]

> 아래 명령을 PowerShell로 실행하여 결과 확인 (관리자 권한 필요)

(Get-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Control\Lsa").LmCompatibilityLevel

 

의미
0 LM & NTLM 응답 보내기
1 LM & NTLM 보내기(협상된 경우 NTLMv2 세션 보안 사용)
2 NTLM 응답만 보내기
3 NTLMv2 응답만 보내기
4 NTLMv2 응답만 전송, LM 거부
5 NTLMv2 응답만 전송, LM & NTLM 거부

 

Microsoft-Windows-NTLM/Operational 이벤트 로그를 통해 NTLM 사용 현황 모니터링 [20]

4. 참고

[1] https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-nlmp/c50a85f0-5940-42d8-9e82-ed206902e919
[2] https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-nlmp/1bf72e97-a970-482d-90fc-776732fea1be
[3] https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-nlmp/b34032e5-3aae-4bc6-84c3-c6d80eadf7f2
[4] https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-nlmp/801a4681-8809-4be9-ab0d-61dcfe762786
[5] https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-nlmp/033d32cc-88f9-4483-9bf2-b273055038ce
[6] https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-nlmp/464551a8-9fc4-428e-b3d3-bc5bfb2e73a5
[7] https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-nlmp/5e550938-91d4-459f-b67d-75d70009e3f3
[8] https://www.boannews.com/media/view.asp?idx=112953
[9] https://iacr.org/workshops/fse2007/slides/md4.pdf
[10] https://www.iacr.org/workshops/fse2008/docs/papers/day_3_sess_2/26_md4_oneway.pdf
[11] https://www.xn--hy1b43d247a.com/lateral-movement/pass-the-hash
[12] https://www.pentestwiki.com/data-theft/windows/ntlm-relay
[13] https://www.xn--hy1b43d247a.com/credential-access/llmnr-nbtns-poisoning
[14] https://www.dailysecu.com/news/articleView.html?idxno=204474
[15] https://www.boannews.com/media/view.asp?idx=141546&page=5&kind=1
[16] https://cloud.google.com/blog/topics/threat-intelligence/net-ntlmv1-deprecation-rainbow-tables?hl=en
[17] https://learn.microsoft.com/en-us/windows/whats-new/deprecated-features
[18] https://support.microsoft.com/en-us/topic/upcoming-changes-to-ntlmv1-in-windows-11-version-24h2-and-windows-server-2025-c0554217-cdbc-420f-b47c-e02b2db49b2e
[19] https://www.kisa.or.kr/2060204/form?postSeq=12&lang_type=KO&page=1
[19] https://support.microsoft.com/ko-kr/topic/windows-11-%EB%B2%84%EC%A0%84-24h2-%EB%B0%8F-2025%EB%85%84-windows-server-ntlmv1%EC%97%90-%EB%8C%80%ED%95%9C-%EC%98%88%EC%A0%95%EB%90%9C-%EB%B3%80%EA%B2%BD-%EB%82%B4%EC%9A%A9-c0554217-cdbc-420f-b47c-e02b2db49b2e
[20] https://elfmfl.tistory.com/
[21] https://hackyboiz.github.io/2024/12/01/mungsul/NTLM_Part1/

+ Recent posts