NT LAN 매니저

NT LAN Manager

Windows 네트워크에서 NT(New Technology) LAN Manager(NTLM)는 사용자에게 [1][2][3]인증, 무결성 및 기밀성을 제공하기 위한 Microsoft 보안 프로토콜 스위트입니다.NTLM은 오래된 Microsoft 제품인 Microsoft LAN Manager(LANMAN)의 인증 프로토콜의 후속 버전입니다.NTLM 프로토콜 스위트는 LAN Manager 인증 프로토콜, NTLMv1, NTLMv2 및 NTLM2 세션 프로토콜을 단일 패키지로 결합하는 보안 지원 공급자에 구현됩니다.이러한 프로토콜을 그룹 정책 설정에 의해 제어되는 시스템에서 사용할 수 있는지 또는 사용할 수 있는지 여부(Windows 버전마다 기본 설정이 다름).

NTLM 패스워드는 최신 [4]하드웨어에서는 매우 쉽게 강제할 수 있기 때문에 취약하다고 간주됩니다.

프로토콜

NTLM은 connection 지향 환경에서 클라이언트를 인증하기 위해 3개의 메시지를 사용하고(connectionless는 유사), 무결성이 [5][6][7][8]필요한 경우 4번째 추가 메시지를 사용하는 챌린지-리스폰스 인증 프로토콜입니다.

  1. 먼저 클라이언트는 서버에 대한 네트워크 경로를 확립하고 기능을 [9]애드버타이즈하는 Negotiate_MESSAGE를 전송합니다.
  2. 다음으로 서버는 클라이언트의 [10]ID 확립에 사용되는 CHANGE_MESSAGE로 응답합니다.
  3. 마지막으로 클라이언트는 AUTHENTICATE_MESSAGE로 챌린지에 응답합니다.[11]

NTLM 프로토콜은 두 해시 암호 값 중 하나 또는 모두를 사용합니다. 두 값은 모두 서버(또는 도메인 컨트롤러)에 저장되며, 솔팅 부족으로 인해 암호에 해당합니다. 즉, 서버에서 해시 값을 가져오면 실제 암호를 몰라도 인증할 수 있습니다.2개는 LM 해시(언어용 기존8비트 PC 문자셋으로 변환된 패스워드의 첫 14글자에 적용되는 DES 기반 함수)와 NT 해시(리틀엔디안 UTF-16 Unicode 비밀번호의 MD4)입니다.양쪽 해시 값은 각각 [12]16바이트(128비트)입니다.

NTLM 프로토콜은 NTLM 버전에 따라 두 가지 단방향 함수 중 하나를 사용합니다. NT LanMan 및 NTLM 버전 1은 DES 기반 LanMan 단방향 함수(LMOWF)를 사용하고 NTLMv2는 NT MD4 기반 단방향 함수(NTOWF)[12][13]를 사용합니다.

[2]

NTLMv1

서버는 챌린지라는8 바이트의 랜덤 번호를 송신함으로써 클라이언트를 인증합니다.클라이언트는 챌린지와 클라이언트와 서버 간에 공유되는 비밀(특히 위에서 설명한2개의 패스워드 해시 중 하나)을 포함하는 작업을 수행합니다.클라이언트는 계산의 24바이트 결과를 반환합니다.실제로 NTLMv1에서는 계산은 보통 양쪽 해시를 사용하여 이루어지며 양쪽 24바이트 결과가 전송됩니다.서버는, 클라이언트가 올바른 결과를 계산하고 있는 것을 확인합니다.이것에 의해, 비밀의 소유와 클라이언트의 신뢰성을 추측할 수 있습니다.

두 해시 모두 16바이트의 양을 생성합니다.5바이트의 제로가 부가되어 21바이트가 됩니다.21바이트는 3개의 7바이트(56비트) 양으로 구분됩니다.이 56비트 수량은 각각 DES가 64비트 챌린지를 암호화하기 위한 열쇠로 사용됩니다.챌린지의 3개의 암호화가 재결합하여 24바이트 응답을 형성합니다.LM 해시를 사용한 응답과 NT 해시를 사용한 응답이 모두 응답으로 반환되지만 이는 설정 가능합니다.

C = 8 바이트 서버 챌린지, 랜덤 K1 K2 K3 = NTLM-Hash 5 바이트-0 응답 = DES(K1,C) DES(K2,C) DES(K3,C)

NTLMv2

NTLMv2는 Windows NT 4.0 SP4[14](및 Windows 2000에서 네이티브 지원)에서 도입된 챌린지-리스폰스 인증 프로토콜입니다.NTLMv1의 암호화 강화 대체 기능으로 많은 스푸핑 공격에 대해 프로토콜을 강화하고 서버에 클라이언트 [1][15][16]인증 기능을 추가함으로써 NTLM 보안을 강화합니다.

NTLMv2는 8바이트 서버 챌린지에 2개의 응답을 보냅니다.각 응답에는 서버 챌린지의 16바이트 HMAC-MD5 해시, 완전/부분 랜덤으로 생성된 클라이언트 챌린지 및 사용자의 패스워드 및 기타 식별정보의 HMAC-MD5 해시가 포함됩니다.2개의 응답은 클라이언트챌린지 형식이 다릅니다.짧은 응답에서는 이 챌린지에 8바이트의 랜덤 값이 사용됩니다.응답을 확인하려면 서버가 클라이언트에 문의하는 응답의 일부로 수신해야 합니다.이 짧은 응답의 경우 16바이트 응답에 추가된8 바이트 클라이언트 챌린지는 이전 NTLMv1 프로토콜의 24바이트 응답 형식과 일치하는 24바이트 패키지를 만듭니다.특정 비공식 문서(예: DCE/RPC Over SMB, Lighton)에서는 이 응답을 LMv2라고 부릅니다.

NTLMv2에 의해 송신되는 두 번째 응답은 (1) NT Time 포맷의 현재 시각, (2) 8바이트 랜덤 값(아래 상자의 CC2), (3) 도메인 이름 및 (4) 표준 포맷을 포함한 가변 길이 클라이언트 챌린지를 사용합니다.응답에는 이 클라이언트과제의 복사본이 포함되어야 하므로 길이가 가변적입니다.비공식 문서에서는 이 응답을 NTv2라고 부릅니다.

LMv2와 NTv2는 모두 클라이언트와 서버의 챌린지를 사용자의 패스워드 및 기타 식별정보의 NT해시로 해시합니다.정확한 공식은 SAM 또는 AD에 저장되어 있는NT 해시부터 시작하여 HMAC-MD5를 사용하여 사용자 이름과 도메인 이름을 계속 해시하는 것입니다.아래 상자에서 X는 서식 필드의 고정 내용을 나타냅니다.

SC = 8바이트 서버 챌린지, 랜덤 CC = 8바이트 클라이언트 챌린지, 랜덤 CC* = (X, 시간, CC2, 도메인 이름) v2-Hash = HMAC-MD5(NT-Hash, 사용자 이름, 도메인 이름) LMv2 = HMAC-MD5(2-Hash, SC)

NTLM2 세션

NTLM2 세션 프로토콜은 MS-CHAPv2와 [17]유사합니다.NTLMv1로부터의 인증과 NTLMv2로부터의 세션보안으로 구성됩니다.

간단히 말하면 NTLMv1 알고리즘이 적용됩니다.단, 8바이트의 클라이언트챌린지는 8바이트의 서버 챌린지와 MD5 해시입니다.해시 결과의 최소 8바이트 절반은 NTLMv1 프로토콜에서 사용되는 과제입니다.클라이언트 챌린지는 응답 메시지의 24바이트 슬롯 중 하나로 반환되고 24바이트 계산된 응답은 다른 슬롯으로 반환됩니다.

이는 NTLMv1의 강화된 형태로 기존 도메인컨트롤러 인프라스트럭처를 사용할 수 있는 기능을 유지하면서도 악성 서버에 의한 사전 공격을 방지합니다.서버는 고정 X에 대해 위치 Y가 Y=DES_K(X)가 되도록 값 K를 갖는 테이블을 계산한다.클라이언트가 챌린지 선택에 참여하지 않아도 서버는 X를 전송하고 테이블에서 응답 Y를 검색하여 K를 얻을 수 있습니다. 공격은 무지개 [18]테이블을 사용하여 실용화할 수 있습니다.

다만, 기존의 NTLMv1 인프라스트럭처에서는, 챌린지와 응답의 페어가 서버에 의해서 검증되는 것이 아니고, 검증을 위해서 도메인 컨트롤러에 송신됩니다.NTLM2 Session을 사용하면 서버가 서버 및 클라이언트의 해시에 대한 도전을 대체하면 이 인프라스트럭처는 계속 작동합니다.

NTLMv1 클라이언트 <-서버: SC 클라이언트> 서버: H(P, SC) 서버-> DomainCntl: H(P, SC), SC 서버<-DomCntl: 예 또는 없음 NTLM2 세션클라이언트<-서버: SC 클라이언트-> 서버: H(H)'

NTLM의 가용성과 사용방법

2010년 이후,[19] Microsoft는 애플리케이션에 NTLM을 권장하지 않게 되었습니다.

실장자는 NTLM이 AES나 SHA-256 등의 최신 암호화 방식을 지원하지 않는다는 점에 유의해야 합니다.무결성에는 Cyclic Redundancy Check(CRC; 순회용장검사) 또는 MD5, 암호화에는 RC4사용합니다.

패스워드에서 키를 취득하는 방법은 RFC 1320 및 FIPS46-2에 규정되어 있습니다.따라서 일반적으로 응용 프로그램에서는 NTLM을 사용하지 않는 것이 좋습니다.

이러한 권장사항에도 불구하고 NTLM은 여전히 시스템에 [citation needed]널리 배치되어 있습니다.주된 이유는 오래된 시스템과의 호환성을 유지하기 위해서입니다.그러나 경우에 [how?]따라서는 피할 수 있습니다.

마이크로소프트는 상호 운용성(특히 RC4-HMAC 암호화 유형)을 개선하기 위해 Kerberos 프로토콜 구현에 NTLM 해시를 추가했습니다.한 독립 연구자에 따르면 NTLM 해시가 [20]알려진 경우 이 설계 결정을 통해 도메인 컨트롤러가 Kerberos 티켓을 사용하여 공격자에게 발급할 수 있습니다.Microsoft는 Kerberos를 Windows 2000 및 그 이후의 Active Directory [16]도메인에서 선호하는 인증 프로토콜로 채택했습니다.Kerberos는 일반적으로 서버가 Windows Server 도메인에 속해 있을 때 사용됩니다.Microsoft 에서는 개발자에게 Kerberos 또는 NTLM Security Support Provider(SSP)를 [21]직접 사용하지 말 것을 권장합니다.

응용 프로그램은 NTLM 보안 패키지에 직접 액세스하지 않고 네고시에이트보안 패키지를 사용해야 합니다.인증과 관련된 시스템에서 지원되는 고급 보안 프로토콜을 응용 프로그램에서 사용할 수 있습니다.현재 Negotiate 보안 패키지는 Kerberos와 NTLM 중 하나를 선택합니다.Negotiate는 인증과 관련된 시스템 중 하나에서 사용할 수 없는 경우를 제외하고 Kerberos를 선택합니다.

NTLM 보안 지원 공급자 사용

NTLM SSP는 다음 상황에서 사용됩니다.

  • 클라이언트가 도메인에 속하지 않거나 Active Directory 도메인이 존재하지 않는 서버에 대해 인증하고 있습니다(일반적으로 "작업 그룹" 또는 "피어 투 피어"라고 함).
    • 서버에는 "비밀번호로 보호된 공유" 기능이 사용 가능해야 합니다. 이 기능은 기본적으로 사용 불가능하며 일부 버전의 Windows에서 홈 그룹과 상호 배타적입니다.
    • 서버와 클라이언트가 모두 같은 HomeGroup에 속해 있는 경우 NTLM [22]대신 Kerberos, 공개키 암호화 기반 사용자사용자 인증과 유사한 프로토콜이 사용됩니다.소규모 네트워크상의 자원을 공유하는 가장 쉬운 방법은 아마도 Home Group일 것입니다.비록 패스워드로 보호된 공유를 사용할 수 있는 사용자가 몇 명 추가되어 있는 것에 비하면 최소한의 셋업이 필요합니다.이것은 소규모 네트워크나 홈 네트워크에서는 패스워드로 보호된 공유보다 훨씬 더 많이 사용되고 있는 것을 의미합니다.
  • 서버가 NAS 디바이스나 네트워크 프린터 등 SMB를 지원하는 디바이스인 경우 NTLM SSP는 지원되는 유일한 인증 방식을 제공할 수 있습니다.SMB 또는 이전 버전의 일부 구현(예:Samba를 사용하면 Windows가 SMB 서버와 발신 인증을 위해 NTLMv1 또는 LM을 네고시에이트할 수 있기 때문에 새로운 디바이스인지 여부에 관계없이 오래된 안전하지 않은 소프트웨어가 로딩되어도 디바이스는 동작할 수 있습니다.
  • 서버가 도메인의 멤버이지만 Kerberos를 사용할 수 없는 경우.
    • 클라이언트가 IP 주소를 사용하여 서버에 대해 인증하고 있습니다(역명 해결은 사용할 수 없습니다).
    • 클라이언트가 포레스트 간 트러스트가 아닌 레거시 NTLM 트러스트를 가진 다른 Active Directory 포리스트에 속하는 서버에 대해 인증하고 있습니다.
    • 그렇지 않으면 방화벽이 Kerberos에 필요한 포트(일반적으로 TCP 88)를 제한합니다.

프로토콜 버전 사용

NTLM SSP를 인증에 사용하는 것이 애플리케이션 개발자 또는 네고시에이트 SSP에 의해 결정된 후 그룹 정책은 NTLM SSP가 구현하는 각 프로토콜을 사용하는 능력을 지시합니다.인증 [23]레벨은 5가지입니다.

  • LM NTLM 응답 전송:클라이언트는 LM 및 NTLM 인증을 사용하며 NTLMv2 세션보안을 사용하지 않습니다.DC는 LM, NTLM 및 NTLMv2 인증을 받아들입니다.
  • LM 및 NTLM 전송 - 네고시에이트된 경우 NTLMv2 세션보안을 사용합니다.클라이언트는 LM 및 NTLM 인증을 사용하며 서버가 지원하는 경우 NTLMv2 세션보안을 사용합니다.DC는 LM, NTLM 및 NTLMv2 인증을 받아들입니다.
  • NTLM 응답만 전송: 클라이언트는 NTLM 인증만 사용하며 서버가 지원하는 경우 NTLMv2 세션보안을 사용합니다.DC는 LM, NTLM 및 NTLMv2 인증을 받아들입니다.
  • NTLMv2 응답만 전송: 클라이언트는 NTLMv2 인증만 사용합니다.서버가 지원하는 경우 NTLMv2 세션보안을 사용합니다.DC는 LM, NTLM 및 NTLMv2 인증을 받아들입니다.
  • NTLMv2 응답만\ref LM: 클라이언트는 NTLMv2 인증만 사용합니다.서버가 지원하는 경우 NTLMv2 세션보안을 사용합니다.DC는 LM을 거부합니다(NTLM 및 NTLMv2 인증만 허용).
  • NTLMv2 응답만\reflow LM & NTLM: 클라이언트는 NTLMv2 인증만 사용합니다.서버가 지원하는 경우 NTLMv2 세션보안을 사용합니다.DC는 LM 및 NTLM을 거부합니다(NTLMv2 인증만 허용).

DC는 도메인 컨트롤러를 의미하지만, 이 용어의 사용은 혼란스럽습니다.서버로서 동작해, 유저를 인증하는 컴퓨터는, 예를 들면, 네트워크 로그 온시에 관리자등의 로컬계정을 가지는 Windows 컴퓨터 등, DC 의 역할을 완수합니다.

Windows NT 4.0 Service Pack 4보다 이전 버전에서는 SSP는 NTLMv1을 네고시에이트하여 다른 머신이 지원하지 않으면 LM으로 폴백했습니다.

Windows NT 4.0 Service Pack 4 이후 SSP는 클라이언트와 서버가 [24]모두 NTLMv2 세션을 지원할 때마다 NTLMv2 세션을 네고시에이트합니다.Windows XP까지 미국 이외의 컴퓨터에서는 40비트 또는 56비트의 암호화를 사용했습니다.이는 당시 미국은 암호화 기술의 수출에 엄격한 제한을 가하고 있었기 때문입니다.Windows XP SP3부터는 업데이트를 설치하면 128비트 암호화를 추가할 수 있으며 Windows 7에서는 128비트 암호화가 기본입니다.

Windows Vista 이후에서는, LM 는 착신 인증에 대해서 무효가 되어 있습니다.Windows Server 2003을 포함한 Windows NT 기반의 운영체제는 LAN Manager(LM) 해시 및 Windows NT 해시라는2개의 패스워드 해시를 저장합니다.Windows Vista 에서는, 양쪽 모두를 보존할 수 있습니다만, 디폴트로 한쪽은 오프가 되어 있습니다.즉, Windows Vista 를 실행하고 있는 컴퓨터가 서버로서 기능하는 경우는, LM 인증이 기능하지 않게 됩니다.이전 버전의 Windows(Windows NT 4.0 Service Pack 4까지)는 이렇게 동작하도록 구성할 수 있었지만 [25]기본값은 아니었습니다.

약점과 취약성

NTLM은 Microsoft 보안 업데이트 MS08-068에 의해 해결된 반사 공격의 변형인 패스 해시 공격에 여전히 취약합니다.예를 들어, Metasploit는 많은 경우 한 머신에서 자격 증명을 취득하여 다른 [3][26]머신을 제어하는 데 사용할 수 있습니다.Cooggle 툴킷을 사용하면 NTLM을 [27]통해 웹 사이트 간 스크립팅 공격을 이용하여 인근 자산에 대한 공격을 수행할 수 있습니다.

2010년 2월, Amplia Security는 NTLM 인증 메커니즘의 Windows 구현에서 공격자가 파일에 대한 읽기/쓰기 액세스와 원격 코드 실행을 허용하는 프로토콜의 보안을 위반하는 몇 가지 결함을 발견했습니다.제시된 공격 중 하나는 프로토콜에 의해 생성된 의사 난수 및 과제/대응을 예측하는 기능을 포함합니다.이러한 결함은 모든 버전의 Windows에서 17년 동안 존재했습니다.이러한 문제를 설명하는 보안 권고에는 완전히 기능하는 개념 증명 악용도 포함되어 있습니다.이러한 모든 결함은 MS10-012에 [28][29]의해 수정되었습니다.

2012년에는 가능한 모든 8글자 NTLM 비밀번호 해시 순열이 6시간 이내에 [30]깨질 수 있다는 것이 입증되었습니다.

2019년에는 좀 더 [4][31]현대적인 하드웨어를 사용하여 이 시간을 약 2.5시간으로 단축했습니다., Rainbow 테이블은, 8 문자와 9 문자의 NTLM 패스워드에 사용할 수 있습니다.짧은 패스워드는 brute force [32]방식으로 회복할 수 있습니다.

패스 더 해시 공격이나 패스워드 크래킹에 사용되는 패스워드에 상당하는 해시는, 우선 「도용」할 필요가 있습니다(해시에 액세스 할 수 있는 충분한 권한을 가지는 시스템을 침해하는 등).또, 이러한 해시는, 기존의 NTLM 인증시에 네트워크를 개입시켜 송신되는 NTLMSSP_AUTH 「해시」와는 다릅니다.

Linux와의 호환성

Linux용 NTLM 구현에는 Cntlm과[33] winbind([34]Samba의 일부)가 포함되어 Linux 응용 프로그램에서 NTLM 프록시를 사용할 수 있습니다.

FreeBSD는 암호(C)를 통해 안전하지 않은 NT-Hash 형식으로 [35]암호를 저장할 수도 있습니다.

「 」를 참조해 주세요.

레퍼런스

  1. ^ a b "Introduction", NT LAN Manager (NTLM) Authentication Protocol Specification, Microsoft, retrieved 2010-08-15
  2. ^ a b "Session Security Details", NT LAN Manager (NTLM) Authentication Protocol Specification, Microsoft, retrieved 2010-08-15
  3. ^ a b Takahashi, T (2009-12-17), "Reflecting on NTLM Reflection", FrequencyX Blog, IBM Internet System Security (ISS), archived from the original on 2009-12-31, retrieved 2010-08-14
  4. ^ a b Claburn, Thomas (February 14, 2019). "Use an 8-char Windows NTLM password? Don't. Every single one can be cracked in under 2.5hrs". www.theregister.co.uk. Retrieved 2020-11-26.
  5. ^ "Microsoft NTLM", MSDN, Microsoft, retrieved 2010-08-15
  6. ^ "Message Syntax section 2.2", NT LAN Manager (NTLM) Authentication Protocol Specification, Microsoft, retrieved 2010-08-15
  7. ^ "Connection-Oriented", NT LAN Manager (NTLM) Authentication Protocol Specification (3.1.5.1 ed.), Microsoft, retrieved 2010-08-15
  8. ^ "Connectionless", NT LAN Manager (NTLM) Authentication Protocol Specification (3.1.5.2 ed.), Microsoft, retrieved 2010-08-15
  9. ^ "NEGOTIATE_MESSAGE", NT LAN Manager (NTLM) Authentication Protocol Specification (2.2.1.1 ed.), Microsoft, retrieved 2010-08-15
  10. ^ "CHALLENGE_MESSAGE", NT LAN Manager (NTLM) Authentication Protocol Specification (2.2.1.2 ed.), Microsoft, retrieved 2010-08-15
  11. ^ "AUTHENTICATE_MESSAGE", NT LAN Manager (NTLM) Authentication Protocol Specification (2.2.1.3 ed.), Microsoft, retrieved 2010-08-15
  12. ^ a b "NTLM v1 Authentication", NT LAN Manager (NTLM) Authentication Protocol Specification (3.3.1 ed.), Microsoft, retrieved 2010-08-15
  13. ^ "NTLM v2 Authentication", NT LAN Manager (NTLM) Authentication Protocol Specification (3.3.1 ed.), Microsoft, retrieved 2010-08-15
  14. ^ Windows NT 4.0 Service Pack 4의 신기능
  15. ^ How to enable NTLM 2 authentication, Support, Microsoft, 2007-01-25, retrieved 2010-08-14
  16. ^ a b "Security Configuration", Microsoft Windows 2000 Security Hardening Guide, TechNet, Microsoft, retrieved 2010-08-14
  17. ^ Glass, Eric, "NTLM", Davenport, Source forge
  18. ^ Varughese, Sam (February 2006). "Rainbow Cracking and Password Security". Palisade. Archived from the original on 2010-06-01. Retrieved 2010-08-14.
  19. ^ "Security Considerations for Implementers", NT LAN Manager (NTLM) Authentication Protocol Specification, Microsoft, retrieved 2010-08-16
  20. ^ "Archived copy". Archived from the original on 2014-10-06. Retrieved 2014-10-05.{{cite web}}: CS1 maint: 제목으로 아카이브된 복사(링크)
  21. ^ "Microsoft NTLM". TechNet Library. Microsoft. Retrieved 2 November 2015.
  22. ^ "Public Key Cryptography based User to User Authentication Overview". TechNet Library. Microsoft. Retrieved 2 November 2015.
  23. ^ "LAN Manager authentication level". MSDN Library. Microsoft. Retrieved 2 November 2015.
  24. ^ "Windows Authentication". TechNet Library. Microsoft. June 29, 2011. Retrieved 2 November 2015.
  25. ^ Jesper Johansson. "The Most Misunderstood Windows Security Setting of All Time". TechNet Magazine. Microsoft. Retrieved 2 November 2015.
  26. ^ HD Moore. "MS08-068: Metasploit and SMB Relay".
  27. ^ Kurt Grutzmacher (2008-08-08). Nail the Coffin Shut, NTLM is Dead. Defcon 16.
  28. ^ Hernan Ochoa and Agustin Azubel (2010-07-28). Understanding the Windows SMB NTLM Weak Nonce vulnerability (PDF). Blackhat USA 2010.
  29. ^ Hernan Ochoa and Agustin Azubel. "Windows SMB NTLM Weak Nonce vulnerability Security Advisory".
  30. ^ Goodin, Dan (2012-12-10). "25-GPU cluster cracks every standard Windows password in <6 hours". Ars Technica. Retrieved 2020-11-23.
  31. ^ hashcat (2019-02-13). "hand-tuned hashcat 6.0.0 beta and 2080Ti (stock clocks) breaks NTLM cracking speed mark of 100GH/s on a single compute device". @hashcat. Retrieved 2019-02-26.
  32. ^ 현대 레인보우 테이블 사용 사례
  33. ^ "Cntlm: Fast NTLM Authentication Proxy in C".
  34. ^ "NTLM authentication - MoodleDocs".
  35. ^ "NT MD4 password hash as new password encryption method for FreeBSD". Mail-archive.com. Retrieved 2 December 2018.

외부 링크