lunes, marzo 20, 2017

How To: Saltarse el login de un Honeywell Falcon XL Web utilizando técnicas Pass-The-Hash

Las técnicas “Pass-the-hash” y "Pass-the-ticket" se basan en la posibilidad de autenticarse en un sistema protegido con autenticación débil (usuario y contraseña) sin la necesidad de poseer nada más que el hash que se corresponde con una de las claves que da acceso al sistema.  De esta manera, se puede conseguir acceso a los recursos de administración sin conocer la contraseña de acceso en texto plano, ni emplear ninguna técnica de “crackeo” sobre el hash obtenido.

Figura 1: How To... saltarse el login de un Honeywell Falcon XL Web usando "pass-the-hash"

Hoy vamos a ver cómo este ataque se puede realizar al software de administración de los dispositivos Honeywell Falcon XL Controller por culpa de un fallo de diseño que se documentó en el año 2014, pero que por desgracia, como muchos otros sistemas de control en entornos industriales e infraestructuras críticas, es fácil de localizar activo, como ya se vio en el artículo "Halcones heridos en Infraestructuras Críticas".

Proceso de autenticación en Honeywell Falcon XL Controller

Para entender el proceso de autenticación en los sistemas Honeywell Falcon XL Controller, lo primero será localizar estos dispositivos haciendo un poco de Hacking con Buscadores:

Figura 2: Dispositivos Honeywell Falcon XL Controller descubiertos en Google

Una vez seleccionado uno de los dispositivos, capturaremos con ZAP, como explicamos en detalle en el libro de Hacking Web Technologies, la petición que se envía al servidor web del dispositivo por POST:

Figura 3: Petición HTTP de autenticación capturada con ZAP enviada al dispositivo

Capturando y analizando la respuesta devuelta tras la petición HTTP anterior, el proceso de autenticación en los sistemas Honeywell Falcon XL Controller se realiza de la siguiente manera:
• se calcula el resumen MD5 del LoginUserName introducido por el usuario. 
• para formar el password, se calcula el resumen MD5 de la cadena formada por la concatenación de un identificador de sesión, el nombre de usuario introducido en texto plano y el resumen MD5 del password.
Figura 4: Respuesta HTTP capturada con ZAP enviada por el dispositivo

De manera esquemática:
sUserName = MD5(LoginUserName) 
sPassword= MD5(sSessionID + LoginUsername + MD5(LoginPassword))
Para realizar el bypass, tendremos que completar los parámetros LoginUserNameMD5 y LoginPasswordMD5 en la petición POST de la Figura 3 con los valores:
LoginUserNameMD5= sUserName 
LoginPasswordMD5= sPassword
Los parámetros que aún no tenemos son sSessionID, correspondiente al token de sesión que viene en todas las peticiones que se realizan al servidor web del dispositivo, y el hash MD5 del password del usuario que se autentica en el sistema.

Obtención del password en MD5 de un usuario

Para obtener el password en MD5 de un usuario del sistema, basta aplicar lo explicado en el artículo “SCADA: Halcones heridos en tus Infraestructuras Críticas”. Para nuestro dispositivo, el MD5 del password del usuario SystemAdmin es:

Figura 5: Hash MD5 del usuario SystemAdmin

Es importante destacar que, aunque tengamos el hash MD5 del password de un usuario, no tenemos el texto claro con el que se ha generado ese resumen. Bien es cierto que podemos buscar en Internet si existe el texto claro que ha generado el resumen, utilizar herramientas como John The Ripper o algún sistema con Rainbows Tables para obtener la clave en texto claro, pero esto no será necesario para “bypasear” el formulario de acceso con un ataque Pass-the-Hash

Obtención del token sSessionID

Para obtener un token de sesión válido, enviamos con ZAP la siguiente petición HTTP por GET:

Figura 6: Petición enviada por GET

En la respuesta a esta petición podemos ver un token de sesión válido, en este caso, sSessionID=84rjIsGUpmH.

Figura 7: Respuesta HTTP con el token de sesión necesario

Con toda esta información lo único que queda es crear la petición POST comentada anteriormente y enviarla al servidor web del dispositivo para saltarse el sistema de login y conseguir el acceso con una técnica Pass-the-hash.

Creación de la petición POST con el Pass-the-Hash

Con los datos anteriores ya estamos en condiciones de generar la petición POST utilizando ZAP y enviarla al servidor web que corre en el dispositivo.

Figura 8: Petición POST generada con ZAP y enviada al dispositivo

Tras enviar esta petición, conseguiremos acceder al dispositivo sin conocer la password de acceso en texto claro, ya que hemos inyectado directamente el hash de la contraseña.

Figura 9: Panel de control

Como se puede ver, la vulnerabilidad es del año 2014, y aunque es hash sea un MD5 fácil de crackear hoy en día, las técnicas de Pass-the-hash se pueden utilizar en entornos con debilidades similares en aplicaciones web en las que se utilicen hashes más complicados que este de crackear, e incluso personalizados, que algunas veces hemos visto que los creadores de la web han optado por crearse sus propias funciones hash.

Autor: Amador Aparicio de la Fuente (@amadapa)
Escritor del libro "Hacking Web Technologies"

3 comentarios:

KNO dijo...

Supongo que esta línea:
sPassword= MD5(sSessionID + LoginPassword + MD5(LoginPassword))
en realidad debería ser:
sPassword= MD5(sSessionID + LoginUserName + MD5(LoginPassword))

Según lo comentado en:
para formar el password, se calcula el resumen MD5 de la cadena formada por la concatenación de un identificador de sesión, el nombre de usuario introducido en texto plano y el resumen MD5 del password.

Chema Alonso dijo...

fixed.

Unknown dijo...

Hola mi nombre es Fernando Ventura y esty en una gravisima situacion y necesito ayuda urgentemente por favor esty desesperado necseito ayuda, por error envie un video privado de otra persona a unas personas en facebook y ahora estu a punto de q me demabden e ir a la carcel por favor necesito ayuda Chema Alonso q puedo hacer para borrar esos videos ayudame por favor

Entrada destacada

Desde HOY es BlackFriday en 0xWord.com Cupón 10% descuento: BLACKFRIDAY2024 y descuentos con Tempos de MyPublicInbox @0xWord @mypublicinbox

Pues este año tenemos el  BlackFriday  durante  7 días , y poco más que decir en el artículo que lo que he puesto en el título del artículo....

Entradas populares