proceso de autenticación de windows

proceso de autenticación de windows
        </h1>
        <div class="clear"></div>
        <div class="postBody">

Update_2020_01_16

Introducción a NTLM:

NTLM se utiliza en entornos de grupo de trabajo de Windows NT y Windows 2000 Server (o posterior) (Kerberos se utiliza en modo de dominio). En el entorno de dominio de AD, si es necesario autenticar el sistema Windows NT, también se debe utilizar NTLM. En comparación con Kerberos, el proceso de autenticación basado en NTLM es mucho más sencillo. NTLM utiliza un modelo de intercambio de mensajes de desafío / respuesta.

La certificación del protocolo NTLM incluye dos versiones, NTLMv1 y NTLMv2. Implica todo el proceso de autenticación NTLM y la realización de la EPA (Protección Extendida para Autenticación) de NTLM.

Al iniciar sesión en Windows localmente, el sistema operativo usará la contraseña ingresada por el usuario como una credencial para verificar la contraseña en el sistema. La contraseña en el sistema operativo se almacena en%SystemRoot%\system32\config\sam

Cuando ingresemos al sistema, el sistema leerá automáticamente la "contraseña" en el archivo SAM y la comparará con la "contraseña" que ingresamos. Si son iguales, la autenticación es exitosa.

Este archivo SAM retiene la información de credenciales de todos los usuarios locales de la computadora, que puede entenderse como una base de datos.

Cabe señalar que: Windows en sí mismo no guarda las contraseñas de texto sin formato, solo el hash de la contraseña.


La relación entre NTLM Hash y NTLM:

En Windows, la contraseña Hash se denomina actualmente NTLM Hash y el nombre completo de NTLM es: "NT LAN Manager".

Este NTLM es un protocolo de autenticación de red y su relación con NTLM Hash es: El protocolo de autenticación de red NTLM es NTLM Hashun protocolo de autenticación como credencial básica.

En otras palabras, NTLM y NTLM Hash se corresponden entre sí.

En el proceso de autenticación local, de hecho, la contraseña ingresada por el usuario se convierte en NTLM Hash y se compara con NTLM Hash en SAM.


La generación de NTLM Hash:

Suponiendo que mi contraseña es admin, el sistema operativo convertirá admin a hexadecimal. Después de la conversión Unicode, se utiliza el algoritmo de cifrado MD4 para el cifrado. El hexadecimal del resultado cifrado es NTLM Hash.

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

Proceso de autenticación local:

winlogon.exe -> Recibir entrada de usuario -> lsass.exe -> (Autenticación)

En primer lugar, después de que el usuario cierra la sesión, reinicia y bloquea la pantalla, el sistema operativo winlogon.exemostrará la interfaz de inicio de sesión, que es el cuadro de entrada. Después de recibir la entrada, la contraseña se entregará al proceso lsass. En este proceso, se almacenará una contraseña de texto sin formato y la contraseña de texto sin formato se cifrará en NTLM Hash, compare la autenticación con la base de datos SAM.

Proceso de inicio de sesión de Windows (es decir, winlogon.exe): es un programa de inicio de sesión de usuario de Windows NT que se utiliza para administrar el inicio y cierre de sesión del usuario.

LSASS: un mecanismo de seguridad para sistemas Microsoft Windows. Se utiliza para la seguridad local y la estrategia de inicio de sesión.


La relación entre LM Hash y NTLM:

Antes de que saliera el protocolo NTLM, su predecesor era el protocolo LM (LAN Manager).

Diferencia: algoritmo de cifrado

Similitud: el mecanismo de autenticación es el proceso de autenticación mencionado anteriormente

En la actualidad, la mayoría de Windows usa la autenticación del protocolo NTLM, el protocolo LM se ha eliminado básicamente, aquí hay que entenderlo.

Cifrado de LM Hash:

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

Dado que los últimos son 0 , con resultados predecibles, es 0 ;
• el flujo de bits en cada 16 hexadecimales como valores cifrados, utilizando el cifrado DES, la cadena "KGS @ # $! %" Para la clave (0x4B47532140232425), 8 resultados son obtenido, y cada resultado se convierte a hexadecimal.
• -> 00110000100110001000110001101000000101000001001000001100 00000000
• -> 30988 C6814120C00 -> el DES ( 30988 C6814120C00) -> 48 -D7-EB- 91 es - 2 F- 5E-69 - . 7 C
• Dado que nuestra contraseña no supera los 7 bytes, de modo que la segunda mitad sea fija:
• AA-D3- B4- 35 -B5- 14 - 04 -EE
• Cifrado DES que conecta las dos cadenas. Este es el hash LM.
48EB --- D7 91 - 2 La F - 5E-69 - 7 el C- el AA- la D3-B4- 35 -B5- 14 - 04 -EE

Características y problemas de LM HASH:

1. La contraseña no distingue entre mayúsculas y minúsculas.
2. La longitud máxima de la contraseña es de 14 bytes. Además, si la longitud de la contraseña no supera los 7 bytes, los últimos 8 bytes de LM Hash son un valor fijo
3. El algoritmo DES no es suficientemente fuerte

Sugerencias: De acuerdo con la función LM Hash, también puede determinar si la contraseña del usuario es mayor o igual a 7 dígitos.


Protocolo LM

El primer protocolo SMB transmite contraseñas de texto sin formato en la red. Más tarde, el mecanismo de autenticación de Desafío / Respuesta de LAN Manager, denominado LM, era tan simple que se podía descifrar fácilmente.Ahora existen NTLM y Kerberos.

Desafío / Respuesta de LAN Manager : Mecanismo de verificación de Desafío / Respuesta de LAN Manager, denominado LM. Esta solución tiene un tiempo de respuesta más temprano y menor seguridad que NTLM.

Comunicación SMB, el cliente A accede al servidor B a través del proceso de autenticación LM

1. Primero, asumimos que la contraseña del servidor B es "WELCOME", y el servidor B ha almacenado en caché el LM-HASH de la contraseña (la contraseña original no se puede almacenar en caché bajo ninguna circunstancia). Calculamos el LM-HASH de "WELCOME "a través de la secuencia de comandos anterior como" c23413a8a1e7665faad3b435b51404ee "

2. Servidor B - Desafío de 8 bytes -> Cliente A, el Servidor B envía un código de desafío de 8 bytes "0001020304050607" al Cliente A

3. El cliente A calculará y almacenará en caché el LM-HASH de la contraseña basándose en el texto sin formato de su contraseña para acceder al servidor B (el cliente A almacena en caché el valor hash de la contraseña de entrada y la contraseña original se descartará. "La contraseña original no se puede almacenar en caché bajo ninguna circunstancia. ", esta es una regla de seguridad básica) -Luego, después de LM-HASH, 5 0x00 se convierte en" c23413a8a1e7665faad3b435b51404ee0000000000 ", que se convierte en 21 bytes, y luego se divide en tres grupos, cada grupo de 7 bytes

| C23413A8A1E766 | 5FAAD3B435B514 | 04EE0000000000 |

Cada grupo de 7 bytes se pasa como parámetro a la función str_to_key (), y finalmente se obtienen tres grupos de DESKEY, cada grupo de 8 bytes

| C21A04748A0E9CCC | 5ED4B47642ACD428 | 0476800000000000 |

Utilice tres conjuntos de DESKEY para desafiar el desafío de 8 bytes "0001020304050607" y realice el cifrado DES estándar.

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

5 ED4B47642ACD428 ---- Cifrado DES estándar para 0001020304050607 -> AB18C764C6DEF34F

0476800000000000 ---- Cifrado DES estándar para 0001020304050607 -> A61BFA0671EA5FC8

El cliente A finalmente obtiene una respuesta de 24 bytes que debería ser "CA1200723C41D577AB18C764C6DEF34FA61BFA0671EA5FC8" (este resultado se llama respuesta )

El cliente A envía "CA1200723C41D577AB18C764C6DEF34FA61BFA0671EA5FC8" al servidor B. El servidor B realizará el mismo cálculo basándose en el LM-HASH almacenado en caché por sí mismo y comparará el resultado del cálculo con la respuesta de A. Si coincide, se pasa la autenticación.

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

La descripción general simple es: Primero, A retiene el LM-HASH generado por el algoritmo a través de la contraseña de texto sin formato enviada a B. Cuando A inicia una solicitud a B, B devolverá un código de desafío de 8 bytes a A, y luego A generará en sí mismo El LM-HASH se divide en tres grupos, cada grupo tiene 7 bytes, y luego el LM-HASH de cada grupo se encripta DES con el código de desafío, y luego este valor se envía a B, y B también es el mismo que A con el código de desafío. Operación, la diferencia entre B aquí es que el LM-HASH en caché se almacena en su propio servidor en lugar de A, lo que tiene un efecto distintivo, y luego se compara, si es el mismo, luego pasa, y viceversa .


Protocolo NTLM:

NTLM es un protocolo de autenticación de red, que es un modo de autenticación basado en el mecanismo de autenticación de desafío / respuesta.

El proceso de autenticación del protocolo NTLM se divide en tres pasos:

1. Negociación: Se utiliza principalmente para confirmar la versión del acuerdo entre las dos partes (NTLM v1 / NTLM V2).
2. Desafío: Es el ámbito donde funciona el mecanismo de autenticación de Desafío / Respuesta. En esta sección se analiza principalmente el proceso de operación de este mecanismo.
3. Verificación: La verificación es principalmente para verificar el resultado después de que se completa la consulta, que es el último paso de la certificación.

El proceso completo de interrogatorio:

1. El cliente envía una solicitud de información de usuario (nombre de usuario) al servidor.

2. El servidor recibe la solicitud y genera un número aleatorio de 16 bits, que se llama Challenge, encripta el Desafío (caracteres aleatorios de 16 bits) con el Hash NTLM correspondiente al nombre de usuario de inicio de sesión, genera una Respuesta y la guarda en el memoria (la respuesta aquí se puede llamar Net NTLM Hash). Al mismo tiempo, después de que se genera la Respuesta, el Desafío (16 caracteres aleatorios) se envía al cliente.

3. Una vez que el cliente recibe el Desafío, utiliza el Hash NTLM correspondiente a la cuenta a iniciar sesión para cifrar el Desafío y generar una Respuesta, y luego envía la Respuesta al servidor.

Entre ellos, el resultado Respuesta del desafío después del cifrado NTLM Hash se denomina Net NTLM Hash en el protocolo de red .

Verificación: Después de recibir la respuesta del cliente, el servidor compara si las respuestas de ambos lados son iguales, si son iguales, se pasa la autenticación.

Nota:

1. Chanllenge es un número aleatorio de 16 bytes generado por el servidor, y el número aleatorio es diferente para cada autenticación.

2. La forma de Respuesta es Net-NTLM Hash, que es el resultado de la contraseña Hash proporcionada por el cliente que encripta el Chanllenge devuelto por el Servidor.


Métodos de cifrado de Net-NTLMv1 y Net-NTLMv2:

Net-NTLMv1 :

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

Net-NTLMv2:

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

para resumir:

Para conocer el método de utilización de Net-NTLMv1, consulte: https://xz.aliyun.com/t/2205

El proceso de los dos es el mismo, pero el algoritmo de cifrado es diferente y Net-NTLMv1 es relativamente frágil.

Consejos: De acuerdo con las características de LM Hash, los últimos 8 bytes de LM Hash son un valor fijo. También puede determinar si la contraseña del usuario es mayor o igual a 7 dígitos, si lo es, es menor que, y si no lo es, es mayor que

Sugerencias: desde Windows Vista / Server2008, Net-NTLMv1 está deshabilitado de forma predeterminada y se usa Net-NTLMv2

Los tres primeros, cuando la contraseña supere los 14 dígitos, se utilizará el cifrado NTLM test: 1003: E52CAC67419A9A22664345140A852F61: 67A54E1C9058FCA16498061B9 6863248 :::

La primera parte es LM Hash y la última parte es NTLM Hash. Cuando LM Hash es AAD3B435B51404EEAAD3B435B51404EE, esto significa que no se utiliza una contraseña vacía o LM_HASH.

El hash generalmente se almacena en dos lugares: 1. Archivo SAM, almacenado en la máquina correspondiente a los usuarios locales 2. Archivo NTDS.DIT, almacenado en el controlador de dominio correspondiente a los usuarios del dominio

Supongo que te gusta

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