NTLM
1. 개요
1. 개요
NTLM은 마이크로소프트가 개발한 인증 프로토콜이다. 1993년에 최초로 등장하여, 주로 윈도우 네트워크 환경에서 사용자 인증을 위해 사용되었다. 이 프로토콜은 클라이언트-서버 모델에서 사용자의 신원을 확인하는 과정에 활용된다.
NTLM은 도메인 컨트롤러를 포함한 윈도우 서버 기반 시스템에서 네트워크 로그온과 원격 파일 접근 같은 작업을 위한 핵심 인증 메커니즘으로 오랫동안 사용되어 왔다. 이는 윈도우 NT 계열 운영체제의 보안 아키텍처에 깊이 통합되어 있다.
초기에는 LAN 매니저 인증 체계의 후속으로 개발되었으며, 시간이 지나며 여러 버전(NTLM, NTLMv2)으로 발전했다. 그러나 현재는 더 강력한 보안 표준인 Kerberos 프로토콜이나 기타 현대적인 인증 방식으로 대체되는 추세에 있다.
2. 역사
2. 역사
NTLM의 역사는 1990년대 초반 마이크로소프트의 LAN Manager 운영 체제로 거슬러 올라간다. NTLM은 LAN Manager 인증 프로토콜의 후속 및 개선된 버전으로, 1993년 윈도우 NT 3.1 운영 체제와 함께 처음 등장했다. 이 프로토콜은 당시 도스 기반의 LAN Manager 환경보다 향상된 보안과 성능을 제공하며, 윈도우 네트워크 환경의 표준 인증 방식으로 자리 잡았다.
초기 버전인 NTLM 버전 1은 LAN Manager 해시의 취약점을 부분적으로 해결했지만, 여전히 상대적으로 약한 암호화와 취약한 챌린지-응답 메커니즘을 사용했다. 시간이 지나며 보안 위협이 진화하자, 마이크로소프트는 2000년대 초반 윈도우 2000과 함께 NTLM 버전 2를 도입했다. NTLMv2는 더 강력한 해시 알고리즘과 향상된 세션 보안을 제공하여 중간자 공격과 같은 일부 취약점을 완화했다.
그러나 NTLM은 설계상의 근본적인 한계, 특히 단방향 인증과 오프라인 무차별 대입 공격에 대한 취약성 때문에 꾸준히 비판을 받아왔다. 이로 인해 마이크로소프트는 더 안전한 인증 프로토콜인 Kerberos를 적극 권장하고 도입하기 시작했다. Kerberos는 윈도우 2000부터 액티브 디렉터리 도메인 환경의 기본 인증 프로토콜로 자리 잡았으며, NTLM은 주로 호환성을 위해 남아 있는 레거시 프로토콜이 되었다.
현대의 윈도우 환경에서 NTLM 사용은 점차 감소하고 있지만, 특정 레거시 애플리케이션이나 워크그룹 구성, 또는 Kerberos 프로토콜을 사용할 수 없는 크로스-플랫폼 시나리오에서는 여전히 발견된다. 마이크로소프트는 보안 강화를 위해 NTLM 사용을 차단하거나 제한하는 정책을 지속적으로 권고하고 있다.
3. 작동 방식
3. 작동 방식
3.1. 인증 프로토콜
3.1. 인증 프로토콜
NTLM 인증 프로토콜은 사용자가 자신의 자격 증명을 서버에 안전하게 증명하기 위해 설계된 일련의 메시지 교환 과정이다. 이 프로토콜은 주로 마이크로소프트의 윈도우 운영 체제 환경에서 도메인 컨트롤러에 대한 사용자 인증에 사용된다. 기본적인 인증 흐름은 협상, 도전, 인증의 세 단계로 구성된다.
구체적인 작동 과정은 다음과 같다. 먼저 클라이언트가 서버에 연결을 시도하면 서버는 무작위로 생성된 숫자 값인 '도전'을 클라이언트에게 보낸다. 클라이언트는 사용자의 패스워드를 기반으로 생성된 NTLM 해시를 사용하여 이 도전 값을 암호화한다. 이렇게 암호화된 응답을 서버로 다시 전송하면, 서버는 저장된 사용자 자격 증명과 도전 값을 이용해 동일한 응답을 계산하여 클라이언트가 보낸 응답과 비교한다. 두 값이 일치하면 인증이 성공한다.
이 프로토콜은 사용자의 실제 패스워드가 네트워크를 통해 전송되지 않는다는 점에서 기본적인 평문 인증보다는 향상된 보안을 제공한다. 그러나 도전-응답 방식 자체는 재전 공격에 취약할 수 있으며, 서버 측에서 사용자 패스워드의 해시 값을 저장하고 있어야 하기 때문에 이 값이 유출될 경우 심각한 보안 위협이 될 수 있다. 이러한 구조적 취약점은 이후 더 강력한 Kerberos 프로토콜이 윈도우 도메인 환경의 주요 인증 수단으로 채택되는 이유 중 하나가 되었다.
3.2. 해시 알고리즘
3.2. 해시 알고리즘
NTLM은 사용자 비밀번호를 저장하고 전송할 때 다양한 해시 함수를 사용한다. 초기 버전인 LAN Manager 인증에서는 LM 해시라는 약한 알고리즘을 사용했는데, 이는 비밀번호를 대문자로 변환하고 7바이트 단위로 나누어 처리하는 방식이었다. 이로 인해 무차별 대입 공격과 사전 공격에 매우 취약했다.
이후 등장한 NTLM 인증은 보다 강력한 NTLM 해시를 도입했다. NTLM 해시는 사용자의 원본 비밀번호를 유니코드로 변환한 후 MD4 해시 알고리즘을 적용하여 생성한다. 이 방식은 LM 해시보다 훨씬 강력하지만, 여전히 레인보우 테이블 공격에 취약할 수 있다.
NTLMv2에서는 보안을 더욱 강화하여, NTLM 해시를 기반으로 하지만 서버에서 제공한 챌린지와 기타 데이터를 포함하는 HMAC-MD5 기반의 응답을 생성한다. 이는 중간자 공격과 재전송 공격에 대한 저항성을 높였다. 그러나 NTLM 해시 자체가 오프라인 공격에 노출될 경우, 여전히 위험할 수 있다.
4. 보안 취약점
4. 보안 취약점
NTLM은 설계상의 여러 보안 취약점을 안고 있으며, 현대적인 네트워크 보안 기준에서는 취약한 프로토콜로 평가받는다. 가장 큰 문제는 패시브 어택과 액티브 어택에 모두 취약한 인증 과정에 있다. 공격자는 네트워크 트래픽을 스니핑하여 NTLM 응답을 획득한 후, 오프라인 무차별 대입 공격을 통해 사용자의 비밀번호를 추론할 수 있다. 이는 상대적으로 약한 해시 알고리즘과 솔트가 사용되지 않는 구조 때문이다.
또한 NTLM은 릴레이 어택에 극도로 취약하다. 공격자는 피해자의 인증 자격 증명을 가로채 다른 서버로 전송하여, 피해자의 권한으로 서버에 접근할 수 있다. 이른바 NTLM 릴레이 어택은 내부 네트워크에서 특히 위협적이며, 도메인 관리자 권한을 탈취하는 데 악용될 수 있다. 이러한 취약점은 프로토콜이 메시지 변조를 방지하는 메시지 무결성 검사를 충분히 제공하지 않기 때문에 발생한다.
NTLM v1은 추가적으로 심각한 결함을 가지고 있다. 이 버전의 LAN Manager 호환성을 위한 해시는 매우 취약하여 수초 내에 깨질 수 있으며, 세션 보안도 부족하다. 비록 NTLM v2에서 일부 개선이 이루어졌지만, 근본적인 릴레이 공격 문제는 해결되지 않았다. 이러한 보안상의 한계로 인해 마이크로소프트는 NTLM의 사용을 단계적으로 중단하고 Kerberos 프로토콜과 같은 더 안전한 대체 기술로의 전환을 권장하고 있다.
5. 대체 기술
5. 대체 기술
NTLM의 보안 취약점과 한계로 인해, 더욱 안전한 인증 프로토콜로의 전환이 권장되고 있다. 주요 대체 기술로는 Kerberos 프로토콜이 있으며, 이는 마이크로소프트의 액티브 디렉터리 환경에서 표준 인증 방식으로 채택되었다. Kerberos는 티켓 기반의 상호 인증 방식을 사용하여 중간자 공격에 강하고, NTLM보다 더 효율적인 위임 및 단일 로그온 기능을 제공한다.
또한, 최신 인터넷 표준 기반의 인증 방식으로의 전환도 이루어지고 있다. OAuth와 OpenID Connect는 웹 애플리케이션과 API 보호를 위한 인가 및 인증 프레임워크로 널리 사용된다. 이러한 프로토콜들은 토큰 기반의 접근 방식을 채택하여 보안성을 높이고, 다양한 클라우드 컴퓨팅 서비스 및 모바일 환경에 적합하다.
기업 내부 네트워크에서는 LDAP와의 결합을 통한 인증이나, SAML을 이용한 페더레이션 인증도 NTLM을 대체하는 방법으로 활용된다. 특히, 하이브리드 클라우드 환경이 확대되면서, 온프레미스 윈도우 서버와 클라우드 서비스 간의 통합 인증을 위해 이러한 현대적 표준의 도입이 필수적이다. 이는 궁극적으로 NTLM의 사용을 점차적으로 감소시키는 방향으로 이끌고 있다.
