KoreanHackerTeam
Moderator
Windows 인증 메커니즘 분석 : 로컬, 실무 그룹, 도메인 환경.
1%SystemRoot%\ System32 \ Config \ SAM 시스템에 로그인하면 시스템이 SAM 파일의 "비밀번호"를 자동으로 읽고 입력 한 "비밀번호"와 비교합니다. 동일하면 인증이 성공했음을 증명합니다!
이SAM文件은 컴퓨터本地所有用户의 자격 증명 정보를 보유하며 데이터베이스로 이해할 수 있습니다.
※注意:Windows本身不保存明文密码,只保留密码的Hash。
내 비밀번호가 관리자라고 가정하면 운영 체제는 관리자를 16 진수로 변환합니다. 유니 코드 변환 후 MD4 암호화 알고리즘을 호출하여 암호화합니다. 이 암호화 결과의 16 진수 시스템은 NTLM HASH입니다.
123ADMIN -HEX (HEX EXODING)=61646D696E61646D696E -UNICODE=610064006D0069006E00610064006D0069006E00 -MD4=209C6174DA490CAEB422F3FA5A7AE64 3
LSASS는 Microsoft Windows 시스템의 보안 메커니즘에 사용됩니다. 지역 보안 및 로그인 정책에 사용됩니다.
NTLM 네트워크 인증 프로토콜은以NTLM Hash作为根本凭证에 의해 인증 된 프로토콜입니다. 메시지 전송은 SMB, LDAP, HTTP 등과 같은 NTLM을 사용한 상부 계층 프로토콜에 따라 다릅니다.
质询: 챌린지/응답 인증 메커니즘의 범위이며 인증 메커니즘의 핵심이기도합니다.
验证: 확인은 주로 질문이 완료된 후 결과를 확인합니다. 이는 인증의 마지막 단계입니다.
2. 사용자 정보를 수신 한 후 서버는 로컬 계정 목록이 존재하는지 여부를 결정합니다 (존재하지 않으면 인증 실패를 반환합니다). 존재하는 경우 16 비트 랜덤 숫자 (Challenge)를 생성 한 다음 로그인 사용자 이름에 해당하는 NTLM 해시를 사용하여 챌린지 (16 비트 랜덤 문자)를 암호화하고 메모리에 존재하도록 도전 1 (Net-NTLM HASH)을 생성합니다. 동시에 클라이언트에게 도전 (16 비트 임의 문자)을 보내십시오.
3. 클라이언트가 서버에서 보낸 과제를받은 후 계정에 로그인하여 응답 (NET-NTLM HASH)을 생성 한 다음 서버에 응답을 보낼 NTLM HASH 암호화 챌린지를 사용하십시오.
这里引入了Net NTLM Hash: NTLM HASH가 암호화 한 도전 결과는 네트워크 프로토콜에서Net NTLM Hash이라고 불립니다 (해시 패스 공격을 수행하는 데 직접 사용할 수는 없지만 Brute Force Cracking을 통해 일반 텍스트 암호를 얻을 수 있습니다).
자세한 소개 : https://daiker.gitbook.io/windows-protocol/ntlm-pian/4#0x03-ntlm-hash
이제 인증 프로세스를 살펴 보겠습니다. 훨씬 더 명확합니까?
∎ 사용자는 클라이언트 컴퓨터에 로그인합니다.
Client는协商消息을 서버로 보냅니다. 여기에는 주로 클라이언트 및 서버 요청에서 지원하는 기능 목록이 포함됩니다.
Server 서버는质询消息(Challenge)으로 응답합니다. 여기에는 서버가 지원하고 동의하는 기능 목록이 포함되어 있습니다. 그러나 가장 중요한 것은 서버에서 생성 한 과제가 포함되어 있다는 것입니다.
client 클라이언트는身份验证消息(Response)으로 문의에 응답합니다. 사용자가 단계 ③에서 도전을받은 후에는 사용자 해시 및 도전을 사용하여 암호화 작업을 수행하여 응답을 얻고 서버에 응답, 사용자 이름 및 도전을 보냅니다. 메시지의 응답 (net-ntlm 해시)이 클라이언트 사용자가 이미 계정 비밀번호를 알고 있음을 서버에 증명하기 때문에 가장 중요한 부분입니다.
Server 서버가身份验证消息(Response)을 얻은 후, 챌린지 및 사용자 해시를 사용하여 암호를 암호화하고response2을 통해 단계 ③에서 전송 된response과 비교합니다.
현재 인증 된 사용자 해시가 도메인 컨트롤에 저장된 경우, 인증 된 사용자 해시가 로컬로없고 응답 2를 계산할 수 없으므로 확인 단계 ⑤를 완료 할 수 없습니다.所以Server就会通过netlogon协议联系域控, 보안 채널을 설정 한 다음协商消息,质询消息(Challenge),身份验证消息(Response)을 모두 도메인 제어로 보내십시오 (이 프로세스를 인증 인증 프로세스를 통해 패스라고도합니다).
domain 도메인 제어는 챌린지와 인증 된 사용자의 챌린지와 해시를 사용하여 응답 2를 암호화하고이를 유형 3의 응답과 비교하여 일관된 지 여부를 결정합니다.
⑦ 인증 프로세스를 완료하십시오.
daiker.gitbook.io
https://ares-x.com/2020/03/16/%E5%9F%9F%E6%B8%97%E9%80%8F%E5%AD%A6%E4%B9%A 0%EF%BC%88%E4%B8%80%EF%BC%89Windows%E8%AE%A4%E8%AF%81%E6%9C%BA%E5%88%B6/
本地认证(User Login)
概念
로그인으로 로그인하면 로컬로 로그인하면 운영 체제는 사용자가 입력 한 암호를 자격 증명으로 사용하여 시스템의 비밀번호로 확인합니다. 운영 체제의 비밀번호는 저장됩니다1%SystemRoot%\ System32 \ Config \ SAM 시스템에 로그인하면 시스템이 SAM 파일의 "비밀번호"를 자동으로 읽고 입력 한 "비밀번호"와 비교합니다. 동일하면 인증이 성공했음을 증명합니다!
이SAM文件은 컴퓨터本地所有用户의 자격 증명 정보를 보유하며 데이터베이스로 이해할 수 있습니다.
※注意:Windows本身不保存明文密码,只保留密码的Hash。
NTLM Hash的产生
NTLM HASH의 전임자는 LM 해시였습니다. 보안 결함으로 인해 제거되었습니다. 너무 많이 알 필요가 없습니다. 이게 있다는 것을 아십시오.내 비밀번호가 관리자라고 가정하면 운영 체제는 관리자를 16 진수로 변환합니다. 유니 코드 변환 후 MD4 암호화 알고리즘을 호출하여 암호화합니다. 이 암호화 결과의 16 진수 시스템은 NTLM HASH입니다.
123ADMIN -HEX (HEX EXODING)=61646D696E61646D696E -UNICODE=610064006D0069006E00610064006D0069006E00 -MD4=209C6174DA490CAEB422F3FA5A7AE64 3
本地认证流程
123456winlogon.exe- 사용자 입력 -LSASS.EXE- (인증) 1. 사용자가 화면을 로그 아웃, 다시 시작 및 잠그면 운영 체제는 WinLogon이 로그인 인터페이스를 표시 할 수있게합니다. 즉, 입력 상자 3을 입력 한 후 LSASS 프로세스를 수신 한 후 4. NTLM HASH 및 사용자 로그인 및 로그 아웃을 관리하는 데 사용되는 Windows NT 사용자 로그인 프로그램 인 SAM 데이터베이스 Windows Logon Process (예 : WinLogon.exe)의 인증을 비교하십시오.LSASS는 Microsoft Windows 시스템의 보안 메커니즘에 사용됩니다. 지역 보안 및 로그인 정책에 사용됩니다.
网络认证(Net NTLM)
작업 그룹 환경과 도메인 환경의 순 NTLM 인증 프로세스는 DC (도메인 컨트롤러)의 참여 프로세스로 인해 약간 다르지만 해시 배송 공격에는 영향을 미치지 않습니다. 여기에 별도로 이야기합시다.NTLM 协议概念
这个协议只支持WindowsNTLM은 네트워크 인증 프로토콜입니다. 전체 이름은 다음과 같습니다. NT LAN Manager는挑战(Challenge)/响应(Response)认证机制을 기반으로 한 인증 모드입니다.NTLM 네트워크 인증 프로토콜은以NTLM Hash作为根本凭证에 의해 인증 된 프로토콜입니다. 메시지 전송은 SMB, LDAP, HTTP 등과 같은 NTLM을 사용한 상부 계층 프로토콜에 따라 다릅니다.
工作组
NTLM协议认证过程
协商: 주로 두 당사자 간의 계약 버전을 확인하는 데 사용됩니다. V1과 V2에는 두 가지 버전이 있습니다. 구체적인 차이점은 암호화 방법이 다르기 때문에 일반적으로 필요하지 않다는 것입니다.质询: 챌린지/응답 인증 메커니즘의 범위이며 인증 메커니즘의 핵심이기도합니다.
验证: 확인은 주로 질문이 완료된 후 결과를 확인합니다. 이는 인증의 마지막 단계입니다.
协商

质询
1. 클라이언트는 서버에 사용자 정보 (사용자 이름) 요청을 보냅니다.2. 사용자 정보를 수신 한 후 서버는 로컬 계정 목록이 존재하는지 여부를 결정합니다 (존재하지 않으면 인증 실패를 반환합니다). 존재하는 경우 16 비트 랜덤 숫자 (Challenge)를 생성 한 다음 로그인 사용자 이름에 해당하는 NTLM 해시를 사용하여 챌린지 (16 비트 랜덤 문자)를 암호화하고 메모리에 존재하도록 도전 1 (Net-NTLM HASH)을 생성합니다. 동시에 클라이언트에게 도전 (16 비트 임의 문자)을 보내십시오.
3. 클라이언트가 서버에서 보낸 과제를받은 후 계정에 로그인하여 응답 (NET-NTLM HASH)을 생성 한 다음 서버에 응답을 보낼 NTLM HASH 암호화 챌린지를 사용하십시오.
这里引入了Net NTLM Hash: NTLM HASH가 암호화 한 도전 결과는 네트워크 프로토콜에서Net NTLM Hash이라고 불립니다 (해시 패스 공격을 수행하는 데 직접 사용할 수는 없지만 Brute Force Cracking을 통해 일반 텍스트 암호를 얻을 수 있습니다).
자세한 소개 : https://daiker.gitbook.io/windows-protocol/ntlm-pian/4#0x03-ntlm-hash
验证
서버가 클라이언트가 보낸 응답 (net-ntlm Hash)을 수신 한 후 이전에 메모리에 저장된 challenge1 (net-ntlm hash)과 비교됩니다. 그것이 동일하면 인증이 통과됩니다.이제 인증 프로세스를 살펴 보겠습니다. 훨씬 더 명확합니까?
域环境
NTLM协议认证过程
DC (도메인 컨트롤러) 참여 작업 그룹이 있기 때문에 도메인 환경의 NTLM 인증 프로세스에 따른 프로세스는 약간 다릅니다.
∎ 사용자는 클라이언트 컴퓨터에 로그인합니다.
Client는协商消息을 서버로 보냅니다. 여기에는 주로 클라이언트 및 서버 요청에서 지원하는 기능 목록이 포함됩니다.
Server 서버는质询消息(Challenge)으로 응답합니다. 여기에는 서버가 지원하고 동의하는 기능 목록이 포함되어 있습니다. 그러나 가장 중요한 것은 서버에서 생성 한 과제가 포함되어 있다는 것입니다.
client 클라이언트는身份验证消息(Response)으로 문의에 응답합니다. 사용자가 단계 ③에서 도전을받은 후에는 사용자 해시 및 도전을 사용하여 암호화 작업을 수행하여 응답을 얻고 서버에 응답, 사용자 이름 및 도전을 보냅니다. 메시지의 응답 (net-ntlm 해시)이 클라이언트 사용자가 이미 계정 비밀번호를 알고 있음을 서버에 증명하기 때문에 가장 중요한 부분입니다.
Server 서버가身份验证消息(Response)을 얻은 후, 챌린지 및 사용자 해시를 사용하여 암호를 암호화하고response2을 통해 단계 ③에서 전송 된response과 비교합니다.
현재 인증 된 사용자 해시가 도메인 컨트롤에 저장된 경우, 인증 된 사용자 해시가 로컬로없고 응답 2를 계산할 수 없으므로 확인 단계 ⑤를 완료 할 수 없습니다.所以Server就会通过netlogon协议联系域控, 보안 채널을 설정 한 다음协商消息,质询消息(Challenge),身份验证消息(Response)을 모두 도메인 제어로 보내십시오 (이 프로세스를 인증 인증 프로세스를 통해 패스라고도합니다).
domain 도메인 제어는 챌린지와 인증 된 사용자의 챌린지와 해시를 사용하여 응답 2를 암호화하고이를 유형 3의 응답과 비교하여 일관된 지 여부를 결정합니다.
⑦ 인증 프로세스를 완료하십시오.
参考文章
NTLM 基础 介绍 | windows protocol
