NetBios Auth Bypassing Undercon 2002. Objetivo inicial: Obtener acceso a un sistema remoto.

Post on 11-Apr-2015

108 views 1 download

Transcript of NetBios Auth Bypassing Undercon 2002. Objetivo inicial: Obtener acceso a un sistema remoto.

NetBios Auth Bypassing

Undercon 2002

Objetivo inicial:

Obtener acceso a un sistema remoto.

Objetivo inicial:

Obtener acceso a un sistema remoto.

Descripción del sistema remoto:

Windows 2000 ServerPuertos abiertos 80 y 445Acceso a web requiere usuario/contraseña del dominio

Puerto 445: NetBIOS

Desde Windows 2000 (xp y me) el puerto 445 se une altradicional 139 para la comunicación utilizando sesionesNetBIOS

Posible problema con software antiguo.

Obtenemos información del servidor web.

Server: Microsoft-IIS/5.0

Todos los accesos a paginas y aplicaciones por defectose encuentran protegidos por petición de un usuario ypassword validos en el dominio.

Obtenemos información del servidor web.

Server: Microsoft-IIS/5.0

Todos los accesos a paginas y aplicaciones por defectose encuentran protegidos por petición de un usuario ypassword validos en el dominio.

Posibilidad de ataque: Brute force remoto con diccionariotanto usuarios como de passwords.

Obtenemos información mediante NetBIOS

Conseguimos el nombre de la maquina, y mediantesesiones nulas un listado de usuarios y shares.

Caso típico: El único usuario valido para acceder a losshares es “Administrador”

Obtenemos información mediante NetBIOS

Conseguimos el nombre de la maquina, y mediantesesiones nulas un listado de usuarios y shares.

Caso típico: El único usuario valido para acceder a losshares es “Administrador”

Posibilidad de ataque: Brute force remoto con diccionariocontra un usuario determinado.

Funcionamiento de SMB. Establecimiento de sesión

Funcionamiento de SMB. Establecimiento de sesión

SMB negprot command

El cliente inicia la negociación de protocolo a utilizar, especificando losdistintos protocolos que entiende.

Funcionamiento de SMB. Establecimiento de sesión

SMB negprot command

El cliente inicia la negociación de protocolo a utilizar, especificando losdistintos protocolos que entiende.

Funcionamiento de SMB. Establecimiento de sesión

SMB negprot command

El cliente inicia la negociación de protocolo a utilizar, especificando losdistintos protocolos que entiende.

SMB negprot command:

Lista todos los protocolos conocidos por el cliente para que el servidor seleccione uno para llevar a cabo toda la comunicación posterior.

Funcionamiento de SMB. Establecimiento de sesión

SMB negprot command

El cliente inicia la negociación de protocolo a utilizar, especificando losdistintos protocolos que entiende.

Posibles protocolos en Windows:

Lan Manager 2.1 (LanMan/LM)NT Lan Manager 1.0 (NTLM)NT Lan Manager 2.0 (NTLMv2)

Funcionamiento de SMB. Establecimiento de sesión

SMB negprot command

El cliente inicia la negociación de protocolo a utilizar, especificando losdistintos protocolos que entiende.

Lan Manager 2.1

. Partimos de un hash de 16 bytes generado a partir de laclave. Los 8 primeros bytes proceden de los 7 primeros dela clave, así como los 8 bytes finales se derivan de los 7siguientes. En caso de que la segunda mitad quede falta debytes, se añadiran los que falten de una cadena fija

(0xAAD3B435B51404EE)

Funcionamiento de SMB. Establecimiento de sesión

SMB negprot command

El cliente inicia la negociación de protocolo a utilizar, especificando losdistintos protocolos que entiende.

Lan Manager 2.1

. Dado el hash, se le añadiran al final 5 bytes con valor 00 y se partira en tres fragmentos de 7 bytes cada uno.

. Cada uno de estos fragmentos se utilizara para generar una llave DES de 8 bytes y paridad impar.

. Se cifrara el reto recibido con las tres llaves generadas.

. El resultado devuelto estará formado por la concatenación de los 3 procesos de cifrado.

Funcionamiento de SMB. Establecimiento de sesión

SMB negprot command

El cliente inicia la negociación de protocolo a utilizar, especificando losdistintos protocolos que entiende.

NTLM

. Basado en Lan Manager 2.1

. El hash de 16 bytes se genera aplicando una función md4 al password introducido por el usuario.

. El resto funciona igual que en LM.

Funcionamiento de SMB. Establecimiento de sesión

SMB negprot command

El cliente inicia la negociación de protocolo a utilizar, especificando losdistintos protocolos que entiende.

NTLMv2

. Basado en NTLM.

. Se cifra toda la comunicación mediante SSL, ya sea de 56 o de 128 bits.

Funcionamiento de SMB. Establecimiento de sesión

SMB negprot command

El cliente inicia la negociación de protocolo a utilizar, especificando losdistintos protocolos que entiende.

Funcionamiento de SMB. Establecimiento de sesión

SMB negprot command

El cliente inicia la negociación de protocolo a utilizar, especificando losdistintos protocolos que entiende.

Funcionamiento de SMB. Establecimiento de sesión

SMB negprot command

SMB negprot response

El servidor selecciona el protocolo con el que se llevara a cabo el restode la comunicación.

Funcionamiento de SMB. Establecimiento de sesión

SMB negprot command

SMB negprot response

El servidor selecciona el protocolo con el que se llevara a cabo el restode la comunicación.

Funcionamiento de SMB. Establecimiento de sesión

SMB negprot command

SMB negprot response

El servidor selecciona el protocolo con el que se llevara a cabo el restode la comunicación.

SMB negprot response:

Devuelve el índice del protocolo seleccionado para la comunicación.

En caso de no utilizar ningún protocolo de los presentados, seleccionará el protocolo 0xFFFF como señal de error.

Funcionamiento de SMB. Establecimiento de sesión

SMB negprot command

SMB negprot response

El servidor selecciona el protocolo con el que se llevara a cabo el restode la comunicación.

Funcionamiento de SMB. Establecimiento de sesión

SMB negprot command

SMB negprot response

El servidor selecciona el protocolo con el que se llevara a cabo el restode la comunicación.

Funcionamiento de SMB. Establecimiento de sesión

SMB negprot command

SMB negprot response

SMB SesssetupX command (1)

El cliente envía una solicitud de conexión anónima.

Funcionamiento de SMB. Establecimiento de sesión

SMB negprot command

SMB negprot response

SMB SesssetupX command (1)

El cliente envía una solicitud de conexión anónima.

Funcionamiento de SMB. Establecimiento de sesión

SMB negprot command

SMB negprot response

SMB SesssetupX command (1)

El cliente envía una solicitud de conexión anónima.

SMB SesssetupX command:

Solicita el establecimiento de una sesión proporcionando conforme al protocolo negociado un par consistente en usuario y password.

Funcionamiento de SMB. Establecimiento de sesión

SMB negprot command

SMB negprot response

SMB SesssetupX command (1)

El cliente envía una solicitud de conexión anónima.

Funcionamiento de SMB. Establecimiento de sesión

SMB negprot command

SMB negprot response

SMB SesssetupX command (1)

El cliente envía una solicitud de conexión anónima.

Funcionamiento de SMB. Establecimiento de sesión

SMB negprot command

SMB negprot response

SMB SesssetupX command (1)

SMB SesssetupX response (1)

El servidor deniega la conexión anónima y envía un challenge al cliente.

Funcionamiento de SMB. Establecimiento de sesión

SMB negprot command

SMB negprot response

SMB SesssetupX command (1)

SMB SesssetupX response (1)

El servidor deniega la conexión anónima y envía un challenge al cliente.

Funcionamiento de SMB. Establecimiento de sesión

SMB negprot command

SMB negprot response

SMB SesssetupX command (1)

SMB SesssetupX response (1)

El servidor deniega la conexión anónima y envía un challenge al cliente.

SMB SesssetupX response:

En caso de recibir unas credenciales validas, devuelve un identificador de sesión (UID).

En caso contrario genera un nuevo challenge.

Funcionamiento de SMB. Establecimiento de sesión

SMB negprot command

SMB negprot response

SMB SesssetupX command (1)

SMB SesssetupX response (1)

El servidor deniega la conexión anónima y envía un challenge al cliente.

Funcionamiento de SMB. Establecimiento de sesión

SMB negprot command

SMB negprot response

SMB SesssetupX command (1)

SMB SesssetupX response (1)

SMB SesssetupX command (2)

El cliente envía una solicitud de conexión especificando el usuario (en claro)y el challenge recibido, cifrado con la password suministrada.

Funcionamiento de SMB. Establecimiento de sesión

SMB negprot command

SMB negprot response

SMB SesssetupX command (1)

SMB SesssetupX response (1)

SMB SesssetupX command (2)

SMB SesssetupX response (2)

El servidor valida los datos recibidos y de ser correcto, devuelve un UIDy se establece la sesión.

Funcionamiento de SMB. Establecimiento de sesión

SMB negprot command

SMB negprot response

SMB SesssetupX command (1)

SMB SesssetupX response (1)

SMB SesssetupX command (2)

SMB SesssetupX response (2)

SMB command (UID)

Cualquier comando enviado por el cliente ira acompañado por el UIDasignado.

Funcionamiento de SMB. Establecimiento de sesión

SMB negprot command

SMB negprot response

SMB SesssetupX command (1)

SMB SesssetupX response (1)

SMB SesssetupX command (2)

SMB SesssetupX response (2)

SMB command (UID)

SMB response

Hasta que no se termine la sesión, el intercambio de datos se efectuarasegún el modelo comando (UID) / respuesta.

Establecimiento de sesión simplificado

Establecimiento de sesión simplificado

Petición de conexión

Establecimiento de sesión simplificado

Petición de conexión

Envío de Challenge

Establecimiento de sesión simplificado

Petición de conexión

Envío de Challenge

Respuesta al Challenge

Establecimiento de sesión simplificado

Petición de conexión

Envío de Challenge

Respuesta al Challenge

Conexión valida: Envío de UID

Para obtener información útil:

Tenemos que recibir una petición de conexión

Para obtener información útil:

Tenemos que recibir una petición de conexión

Para obtener información útil:

Tenemos que recibir una petición de conexiónMicrosoft Internet Explorer es tu amigo!!!!

Internet Explorer ante una referencia tipo:

file://host/recurso

Lanzara automáticamente una conexión SMB para recuperar el recurso solicitado.

(It’s not a bug... Just a feature)

Para obtener información útil:

Tenemos que recibir una petición de conexión

Para obtener información útil:

Tenemos que recibir una petición de conexión.

Para obtener información útil:

Tenemos que recibir una petición de conexión.

Dada la petición aceptaremos (como server) el cifrado mássencillo de romper.

Para obtener información útil:

Tenemos que recibir una petición de conexión.

Tenemos que recibir un par usuario/password valido parael sistema atacado.

Para obtener información útil:

Tenemos que recibir una petición de conexión.

Tenemos que recibir un par usuario/password valido parael sistema atacado.

Para obtener información útil:

Tenemos que recibir una petición de conexión.

Tenemos que recibir un par usuario/password valido parael sistema atacado.

Microsoft Windows es tu amigo!!!!

Windows ante una petición tipo:

\\host\recurso

Lanzara automáticamente una conexión SMB para recuperar el recurso solicitado, sin necesidad de pedir password al usuario, ya que utilizara TODOS los utilizados en esa sesión, tanto de autenticación local como remota.

(It’s not a bug... Just a feature)

Para obtener información útil:

Tenemos que recibir una petición de conexión.

Tenemos que recibir un par usuario/password valido parael sistema atacado.

Para obtener información útil:

Tenemos que recibir una petición de conexión.

Tenemos que recibir un par usuario/password valido parael sistema atacado.

Para obtener información útil:

Tenemos que recibir una petición de conexión.

Tenemos que recibir un par usuario/password valido parael sistema atacado.

Posibilidad de ataque: Brute force remoto con diccionariocontra un usuario determinado.

Pero...

Pero...

Tenemos prisa y un 486.

Pero...

Tenemos prisa y un 486.

Ah! Y una idea mejor...

Retomemos el establecimiento de sesión simplificado

Retomemos el establecimiento de sesión simplificado

Esta vez será el server quién“quiera” establecer una conexión con nosotros.

Retomemos el establecimiento de sesión simplificado

Petición de conexión

Envío de Challenge

Respuesta al Challenge

Conexión valida: Envío de UID

Retomemos el establecimiento de sesión simplificado

Petición de conexión

Envío de Challenge

Respuesta al Challenge

Conexión valida: Envío de UID

Vamos a tomar su Challenge y a inyectarselo a él para que el mismo locifre con sus credenciales validas.

Inyectando su propia respuesta al Challenge

Petición de conexión

Inyectando su propia respuesta al Challenge

Petición de conexión

Petición de conexión

Inyectando su propia respuesta al Challenge

Petición de conexión

Petición de conexión

Envío de Challenge (c)

Inyectando su propia respuesta al Challenge

Petición de conexión

Petición de conexión

Envío de Challenge (c)

Envío de Challenge (c)

Inyectando su propia respuesta al Challenge

Petición de conexión

Petición de conexión

Envío de Challenge (c)

Envío de Challenge (c)

Respuesta al Challenge (c’)

Inyectando su propia respuesta al Challenge

Petición de conexión

Petición de conexión

Envío de Challenge (c)

Envío de Challenge (c)

Respuesta al Challenge (c’)

Respuesta al Challenge (c’)

Inyectando su propia respuesta al Challenge

Petición de conexión

Petición de conexión

Envío de Challenge (c)

Envío de Challenge (c)

Respuesta al Challenge (c’)

Respuesta al Challenge (c’)

Denegar conexión entrante

Inyectando su propia respuesta al Challenge

Petición de conexión

Petición de conexión

Envío de Challenge (c)

Envío de Challenge (c)

Respuesta al Challenge (c’)

Respuesta al Challenge (c’)

Denegar conexión entrante

Conexión valida. Envio de UID