processo de autenticação do windows

processo de autenticação do windows
        </h1>
        <div class="clear"></div>
        <div class="postBody">

Update_2020_01_16

Introdução ao NTLM:

NTLM é usado em ambientes de grupo de trabalho do Windows NT e Windows 2000 Server (ou posterior) (Kerberos é usado no modo de domínio). No ambiente de domínio do AD, se o sistema Windows NT precisar ser autenticado, o NTLM também deverá ser usado. Comparado com o Kerberos, o processo de autenticação baseado em NTLM é muito mais simples. O NTLM usa um modelo de troca de mensagens de desafio / resposta.

A certificação do protocolo NTLM inclui duas versões, NTLMv1 e NTLMv2. Envolve todo o processo de autenticação NTLM e a realização do EPA (Proteção Estendida para Autenticação) do NTLM.

Ao fazer login no Windows localmente, o sistema operacional usará a senha inserida pelo usuário como uma credencial para verificar a senha no sistema. A senha no sistema operacional é armazenada em%SystemRoot%\system32\config\sam

Ao fazer o login no sistema, o sistema irá ler automaticamente a "senha" no arquivo SAM e compará-la com a "senha" que inserimos.Se forem iguais, a autenticação foi bem-sucedida!

Este arquivo SAM retém as informações de credencial de todos os usuários locais do computador, o que pode ser entendido como um banco de dados.

Deve-se observar que: O próprio Windows não salva senhas em texto simples, apenas o hash da senha.


A relação entre NTLM Hash e NTLM:

No Windows, a senha Hash é atualmente chamada de NTLM Hash e o nome completo de NTLM é: "NT LAN Manager".

Este NTLM é um protocolo de autenticação de rede e sua relação com o NTLM Hash é: O protocolo de autenticação de rede NTLM é NTLM Hashum protocolo para autenticação como uma credencial básica.

Em outras palavras, NTLM e NTLM Hash correspondem um ao outro.

No processo de autenticação local, de fato, a senha inserida pelo usuário é convertida em NTLM Hash e comparada com o NTLM Hash no SAM.


A geração de NTLM Hash:

Supondo que minha senha seja admin, o sistema operacional converterá admin em hexadecimal. Após a conversão Unicode, o algoritmo de criptografia MD4 é usado para criptografia. O hexadecimal do resultado criptografado é NTLM Hash.

admin(密码) -> hex(16进制编码) = 61646d696e
61646d696e -> Unicode(Unicode编码) = 610064006d0069006e00
610064006d0069006e00 -> MD4(MD4算法加密) = 209c6174da490caeb422f3fa5a7ae634(NTLM Hash)

Processo de autenticação local:

winlogon.exe -> Receber entrada do usuário -> lsass.exe -> (Autenticação)

Em primeiro lugar, após o usuário fazer logout, reiniciar e travar a tela, o sistema operacional winlogon.exeexibirá a interface de login, que é a caixa de entrada. Após receber a entrada, a senha será entregue ao processo lsass. processo, uma senha de texto simples será armazenada e a senha de texto simples será criptografada em NTLM Hash, compare a autenticação com o banco de dados SAM.

Processo de logon do Windows (ou seja, winlogon.exe): é um programa de logon do usuário do Windows NT, usado para gerenciar o logon e o logout do usuário.

LSASS: Um mecanismo de segurança para sistemas Microsoft Windows. É usado para segurança local e estratégia de login


A relação entre LM Hash e NTLM:

Antes do lançamento do protocolo NTLM, seu predecessor era o protocolo LM (LAN Manager).

Diferença: algoritmo de criptografia

Similaridade: o mecanismo de autenticação é o processo de autenticação mencionado acima

No momento, a maioria do Windows usa a autenticação do protocolo NTLM, o protocolo LM foi basicamente eliminado, aqui é para entender.

Criptografia de LM Hash:

将所有小写字母转换为大写字母
• >123ABC // 未达到7个字符
• 将密码转化为16进制,分两组,填充为14个字符,空余位使用0x00字符填补
• >31323341424300000000000000
• 将密码分割为两组7个字节的块
• >31323341424300 00000000000000 // 16进制
• 将每组转化为比特流,不足56Bit则在左边加0
• >31323341424300 ->(转换为二进制) 110001001100100011001101000001010000100100001100000000-> (补 足56Bit) 00110001001100100011001101000001010000100100001100000000
• 将比特流按照7比特一组,分出8组,末尾加0

Como os últimos são 0 , com resultados previsíveis, é 0 ;
• o fluxo de bits em cada 16 hexadecimal como valores criptografados, usando a criptografia DES, a string "KGS @ # $! %" Para a chave (0x4B47532140232425), 8 resultados são obtido, e cada resultado é convertido em hexadecimal.
• -> 00110000100110001000110001101000000101000001001000001100 00000000
• -> 30988 C6814120C00 -> o DES ( 30988 C6814120C00) -> 48 -D7-EB- 91 é - 2 F- 5E-69 - . 7 C
• Como nossa senha não excede . 7 bytes, de modo que a última metade seja fixada:
• AA-D3-B4- 35 -B5- 14 - 04 -EE
• Criptografia DES conectando as duas cadeias. Este é o hash LM.
48EB --- D7 91 - 2 O F - 5E-69 - 7 o C- o AA- o D3-B4- 35 -B5- 14 - 04 -EE

Características e problemas do LM HASH:

1. A senha não diferencia maiúsculas de minúsculas.
2. O comprimento máximo da senha é de 14 bytes. Além disso, se o comprimento da senha não exceder 7 bytes, os últimos 8 bytes de Hash LM são um valor fixo
3. O algoritmo DES não é suficientemente forte

Dicas: De acordo com o recurso LM Hash, ele também pode determinar se a senha do usuário é maior ou igual a 7 dígitos.


Protocolo LM

O protocolo SMB antigo transmite senhas de texto simples na rede. Mais tarde, o mecanismo de autenticação de desafio / resposta do LAN Manager, conhecido como LM, era tão simples que poderia ser facilmente quebrado.Agora existem NTLM e Kerberos.

Desafio / resposta do LAN Manager : mecanismo de verificação do desafio / resposta do LAN Manager, conhecido como LM. Essa solução tem um tempo de resposta anterior e segurança inferior ao NTLM.

Comunicação SMB, o Cliente A acessa o Servidor B por meio do processo de autenticação LM

1. Primeiro, assumimos que a senha do Servidor B é "BEM-VINDO" e o Servidor B armazenou em cache o LM-HASH da senha (a senha original não pode ser armazenada em cache em nenhuma circunstância). Calculamos o LM-HASH de "BEM-VINDO "por meio do script acima como" c23413a8a1e7665faad3b435b51404ee "

2. Servidor B - Desafio de 8 bytes -> Cliente A, o Servidor B envia um código de desafio de 8 bytes "0001020304050607" para o Cliente A

3. O cliente A irá calcular e armazenar em cache o LM-HASH da senha com base no texto simples de sua senha para acessar o Servidor B (o cliente A armazena em cache o valor hash da senha de entrada e a senha original será descartada. "A senha original não pode ser armazenado em cache em nenhuma circunstância. ", esta é uma regra de segurança básica) -Então, após LM-HASH, 5 0x00 torna-se" c23413a8a1e7665faad3b435b51404ee0000000000 ", que se torna 21 bytes, e então dividido em três grupos, cada grupo de 7 bytes

| C23413A8A1E766 | 5FAAD3B435B514 | 04EE0000000000 |

Cada grupo de 7 bytes é passado como um parâmetro para a função str_to_key (), e finalmente três grupos de DESKEY são obtidos, cada grupo de 8 bytes

| C21A04748A0E9CCC | 5ED4B47642ACD428 | 0476800000000000 |

Use três conjuntos de DESKEY para desafiar o desafio de 8 bytes "0001020304050607" e execute a criptografia DES padrão.

C21A04748A0E9CCC ---- 对0001020304050607进行标准DES加密 --> CA1200723C41D577

5 ED4B47642ACD428 ---- criptografia DES padrão para 0001020304050607 -> AB18C764C6DEF34F

0476800000000000 ---- Criptografia DES padrão para 0001020304050607 -> A61BFA0671EA5FC8

O cliente A finalmente obtém uma resposta de 24 bytes que deve ser "CA1200723C41D577AB18C764C6DEF34FA61BFA0671EA5FC8" (este resultado é chamado de resposta )

O cliente A envia "CA1200723C41D577AB18C764C6DEF34FA61BFA0671EA5FC8" para o servidor B. O servidor B realizará o mesmo cálculo com base no LM-HASH armazenado em cache sozinho e comparará o resultado do cálculo com a resposta de A. Se corresponder, a autenticação é aprovada.

C = 8-byte server challenge
K1 | K2 | K3 = LM-Hash | 5-bytes-0
response = DES(K1, C) | DES(K2, C) |  DES(K3, C)

A visão geral simples é: Primeiro, A retém o LM-HASH gerado pelo algoritmo por meio da senha de texto simples enviada para B. Conforme A inicia uma solicitação para B, B retornará um código de desafio de 8 bytes para A, e então A irá gerar em si O LM-HASH é dividido em três grupos, cada grupo tem 7 bytes, e então o LM-HASH de cada grupo é criptografado em DES com o código de desafio, e então este valor é enviado para B, e B também é o mesmo que A com o código de desafio. Operação, a diferença entre B aqui é que o LM-HASH em cache é armazenado em seu próprio servidor em vez de A, o que tem um efeito distintivo e, em seguida, compara, se for o mesmo, então passa, e vice-versa .


Protocolo NTLM:

NTLM é um protocolo de autenticação de rede, que é um modo de autenticação baseado no mecanismo de autenticação de desafio / resposta.

O processo de autenticação do protocolo NTLM é dividido em três etapas:

1. Negociação: Principalmente usado para confirmar a versão do acordo entre as duas partes (NTLM v1 / NTLM V2).
2. Desafio: É o escopo onde funciona o mecanismo de autenticação de Desafio / Resposta. Esta seção discute principalmente o processo de operação de este mecanismo.
3. Verificação: A verificação é principalmente para verificar o resultado após a conclusão do inquérito, que é a última etapa da certificação.

O processo completo de questionamento:

1. O cliente envia uma solicitação de informações do usuário (nome do usuário) ao servidor

2. O servidor recebe a solicitação e gera um número aleatório de 16 bits, que é chamado Challenge, criptografa o Desafio (caracteres aleatórios de 16 bits) com o Hash NTLM correspondente ao nome do usuário de login, gera uma Resposta e salva-a no memória (a resposta aqui pode ser chamada de Net NTLM Hash). Ao mesmo tempo, após a geração da Resposta, o Desafio (16 caracteres aleatórios) é enviado ao cliente.

3. Depois que o cliente recebe o Desafio, ele usa o Hash NTLM correspondente à conta a ser conectada para criptografar o Desafio para gerar uma Resposta e, em seguida, envia a Resposta ao servidor.

Entre eles, o resultado Resposta do Desafio após a criptografia NTLM Hash é denominado Net NTLM Hash no protocolo de rede .

Verificação: Depois de receber a resposta do cliente, o servidor compara se as respostas dos dois lados são iguais. Se forem iguais, a autenticação é aprovada.

Nota:

1. Chanllenge é um número aleatório de 16 bytes gerado pelo servidor, e o número aleatório é diferente para cada autenticação

2. A forma de Resposta é Net-NTLM Hash, que é o resultado da senha Hash fornecida pelo cliente criptografando o Chanllenge retornado pelo Servidor.


Métodos de criptografia de Net-NTLMv1 e Net-NTLMv2:

Net-NTLMv1 :

客户端向服务器发送一个请求
服务器接收到请求后,生成一个8位的Challenge,发送回客户端
客户端接收到Challenge后,使用登录用户的密码hash对Challenge加密,作为response发送给服务器
服务器校验response

Net-NTLMv2:

客户端向服务器发送一个请求
服务器接收到请求后,生成一个16位的Challenge,发送回客户端
客户端接收到Challenge后,使用登录用户的密码hash对Challenge加密,作为response发送给服务器
服务器校验response

Resumindo:

Para o método de utilização do Net-NTLMv1, consulte: https://xz.aliyun.com/t/2205

O processo dos dois é o mesmo, mas o algoritmo de criptografia é diferente e o Net-NTLMv1 é relativamente frágil.

Dicas: De acordo com as características do LM Hash, os últimos 8 bytes do LM Hash são um valor fixo. Ele também pode determinar se a senha do usuário é maior ou igual a 7 dígitos, se for, é menor que, e se não é, é maior que

Dicas: Desde o Windows Vista / Server2008, Net-NTLMv1 é desabilitado por padrão e Net-NTLMv2 é usado

Os três primeiros, quando a senha ultrapassar 14 dígitos, a criptografia NTLM será usada teste: 1003: E52CAC67419A9A22664345140A852F61: 67A54E1C9058FCA16498061B9 6863248 :::

A primeira parte é LM Hash e a última parte é NTLM Hash. Quando LM Hash é AAD3B435B51404EEAAD3B435B51404EE, isso significa que uma senha vazia ou LM_HASH não é usada.

O hash é geralmente armazenado em dois lugares: 1. Arquivo SAM, armazenado na máquina correspondente aos usuários locais 2. Arquivo NTDS.DIT, armazenado no controlador de domínio correspondente aos usuários do domínio

Acho que você gosta

Origin blog.csdn.net/weixin_45682070/article/details/107738058
Recomendado
Clasificación