Mostrando entradas con la etiqueta cracking. Mostrar todas las entradas
Mostrando entradas con la etiqueta cracking. Mostrar todas las entradas

jueves, 29 de septiembre de 2016

Crackeando credenciales de MySql obtenidos por un MITM like a Sir!


¡Hola amigos! vamos a explicar como poder hacernos por nuestros medios un crackeador de credenciales de MySql. Nos vamos a centrar en atacar una debilidad existente en MySql desde sus inicios, si bien es cierto que la han fortificado desde la versión 4.1, yo considero que en realidad sigue como estaba, pero un poquito mejor.



Para crackear las claves no vamos a requerir de acceso a la tabla mysql.user (mediante un sqli o similar), sino esnifando la trama de la conexión al mas puro estilo MITM (Man in the Middle).

Para ello realizaremos los siguientes pasos:


1- Entender como funciona el proceso de login en MySql

En la siguiente dirección podemos ver el código que utiliza MySql para la comprobación de la contraseña, aunque el link se trata de un fork hecho por twitter, nos vale, ya que este aspecto no cambia desde la versión 4.1 de MySql , no es necesario saber c o c++ pues amablemente, nos han comentado como funciona.



Como se puede ver, el servidor genera una cadena aleatoria (public_seed), esta cadena es enviada al cliente. El cliente la recibe, y realiza el SHA1 de la contraseña introducida (hash_stage1), después vuelve a generar otro SHA1 del resultado anterior (hash_stage2) y envía al servidor un XOR de hash_stage1 con el SHA1 de public_seed hash_stage2 (generando el reply). 

Lo que parece un poco confuso, en realidad es muy simple, pues en la propia documentación de MySql nos resumen el proceso a una sóla linea "SHA1( password ) XOR SHA1( "20-bytes random data from server" <concat> SHA1( SHA1( password ) ) )"



Nos vamos a centrar en el plugin de autentificación mysql_native_password (Secure Password Authentication) ya que es el que por defecto aparece en las instalaciones mas modernas. Nos explican de una manera mas clara en esta dirección (http://dev.mysql.com/doc/internals/en/authentication-method.html) los diferentes tipos de autentificación que hay, y como se comprueban.

También podemos ver, que lo único que ha variado es en incrementar el tamaño de la semilla enviada por el servidor y de la respuesta del cliente (versión <4.1 en la imagen inferior), que por tema de compatibilidades en la versión "segura", enviarán partida en dos trozos.



Ahora que ya sabemos como funciona, nos queda intentar extraer de la trama la semilla generada (public_seed) y el reply del cliente, realizar el mismo proceso que realiza el cliente con la public_seed fija (hardcodeada), y cuando nos de lo mismo que el reply enviado, ¡la contraseña será la misma!

2 - Obteniendo la trama de una conexión lícita

Lo primero es lo primero, como se trata de un ataque de red, los credenciales se pueden obtener mediante un MITM (como hemos visto en otras ocasiones) ... o en un ataque local, ¿local? pues si, supongamos que nuestro programa de gestión del trabajo utiliza MySql, tenemos derecho a instalar un WireShark, y somos unos meros operarios al que no nos dejan acceder a todos los datos de la empresa. Bastaría con encender el WireShark y abrir el programa en cuestión, para capturar la trama de la conexión a la base de datos. Pero, ¿es esto tan fácil?

Para la prueba de concepto, me he instalado un servidor MySql en una máquina remota, y he puesto al usuario root una contraseña que aparece en un diccionario de palabras (rockyou), ¡pero larga!



Y en el momento que el programa, se conecte de forma lícita, enviará la trama que necesitamos, la cual capturaremos por WireShark (o mediante un MITM)

Podemos ver que WireShark ya hace el trabajo sucio, y localiza los dos valores que más adelante vamos a necesitar:

  • En la salida del servidor: Los dos Salt (lo que llamabamos antes public_seed), tal y como os dije, aparece partida en dos Salt.


  • Y en la respuesta del cliente: el hash del password (lo que llamábamos antes reply). 

¡OJO! no confundir con el hash que guarda MySql en la tabla mysql.user, pues es totalmente diferente. 

El más observador, verá que el usuario viaja en texto plano, ¡Ya tenemos algo!



¿Y que hacemos con esta ristra de datos? Después de este paso, podríamos copiarnos toda esa información a un pendrive y continuar con nuestro ataque en offline. Los únicos valores que vamos a necesitar para más adelante son:


Salt:   28544c632e5956244e3b7e2b56537b3329712357

Hash: 78c87d4766993a5cc3b6b6c4a943069ecd94780b

Nótese que el 00 que nos muestra wireshark no le copiamos, ya que es el fin de cadena y concatenando los dos Salt, obtenemos un Hash SHA1 válido de 20 preciosos bytes.


3 - ¡Creando el kraken! ... digo ¡el cracker!

Lo primero es intentar replicar el funcionamiento de la función que realiza el cliente para generar el reply, para ello, nos creamos una función, que realize exactamente el mismo procedimiento (el lenguaje elegido es C#, pero puede hacerse en cualquiera)


Y después el cuerpo del programa, se leerá nuestro diccionario de palabras a la espera de encontrar la correcta.



Esperamos unos segundos y ... tachan!!



4 - ¡Pero que diantres es eso del c# y de programar!

Algunos os estaréis preguntando si se puede hacer sin necesidad de programar, y la respuesta es: SI, pero le quitamos la gracia. No ... en serio, hashcat y john the ripper tienen ya implementados el hash de MySql (tanto el obtenido por un sniffer como el Hash de la tabla mysql.user).


Para proceder a crackearlo con ayuda de hashcat, haremos lo siguiente:

Si nos vamos a la dirección https://hashcat.net/wiki/doku.php?id=example_hashes , podemos ver el ejemplo de como implementar el crackeo:
11200
MySQL Challenge-Response Authentication (SHA1)
$mysqlna$1c24ab8d0ee94d70ab1f2e814d8f0948a14d10b9*437e93572f18ae44d9e779160c2505271f85821d

Por lo que creamos un archivo hash.txt con el siguiente contenido (donde el primer hash es el Salt y el segundo la Password)
$mysqlna$28544c632e5956244e3b7e2b56537b3329712357*78c87d4766993a5cc3b6b6c4a943069ecd94780b
y ejecutamos el siguiente comando:
hashcat -m 11200 hash.txt /usr/share/wordlists/rockyou.txt


Y con esto, habremos obtenido de otra manera, la misma contraseña utilizada durante la conexión :)

¡Un saludo de @ShargonXL!

miércoles, 14 de septiembre de 2016

Resumen RootedCon Valencia 2016

Buenas chavales!!

Pues hoy os traigo una entrada en la que explicaré brevemente todas las charlas en las que pude asistir en la RootedCon Valencia 2016. 


 


La agenda quedó de la siguiente manera:

Jordi Ubach @jubachm - ¿A qué piso va?
Pablo Gonzalez @pablogonzalezpe- PSBot: No tools, but no problem! With Powershell.
Fernando Perera - Home Cracking, contruyendo nuestro Clúster.
Juan Blanco - Defensive security: Current trends and how to apply them.
Ramon Pinagua - Bad Hibernation
Alejandro Ramos @aramosf y Elias Grande @3grander - Odín


 



Pues empezamos la mañana amenizados por los presentadores, que son unos fenomenos, y enseguida nos pusimos con la primera charla, para despertarnos un poco.

La charla de Jordi Ubach (Informática de sistemas en la Uned, 10 años en electrónica y desarrollo industrial S.A.T. 24/7, 6 años en programación aplicaciones gestión (últimos 2 años combinándolo con seguridad informática), trataba de la  [IN]seguridad que hay en todo lo referente a los dispositivos industriales. Nos puso unas cuantas PoC (Pruebas de conceptos) sobre como se puede entrar en los parámetros de ascensores, plantas de gas, plantas de producción fotovoltaica... Trataba de explicarnos las vulnerabilidades que hay incluso públicas, de como poder entrar y manejar a nuestro antojo la producción de una empresa o planta, la poca seguridad o nula por parte de los fabricantes y la pasividad de los técnicos de seguridad y TI de las empresas para poner remedio a ello. En éste caso no hizo ninguna demostración en nada relacionado con crítico o muy crítico (centrales nucleares...).

Fue una gran charla, realizada por un profesional que sabe muy bien de lo que habla. Una información muy útil, que hay que tener muy encuenta para saber en que estado de exposición estamos y lo poco que no está pasando para todo lo que podría pasar.





La segunda charla del día fue para Pablo Gonzalez (Ingeniero Técnico en Informática de Sistemas e Ingeniero en Informática por la Universidad Rey Juan Carlos), hablando de como buscarse la vida cuando no tienes herramientas para hacer un pentest. Nos enseñó un pequeño bot con el que facilitarnos el trabajo en caso que no podamos "tocar" nada. En resumidas cuentas, fue una charla muy interesante con una PoC en directo de como hacerlo funcionar. Lo resumo mucho, por el tema de que tiene una entrada en el blog de elladodelmal, explicando él mismo el uso de dicho bot. Posiblemente saque entrada de ello.

http://www.elladodelmal.com/2015/04/psbot-dame-powershell-y-movere-el-mundo.html

 

La tercera charla fue para el novato en ésto de las charlas Fernando Perera (Ingeniero en Informática por la Universidad Autónoma de Barcelona), que para ser su primera charla nos dejó sorprendidos de lo profesional que estuvo en ella, sino lo llega a decir él, yo de seguro que no lo hubiera sabido. En la charla que ofreció, nos ofrecia un punto de vista para hacer un equipo para el cracking de contraseñas. En su caso, y gracias a su empresa y unos de los patrocinadores del evento LAYAKK, nos mostró el equipo que montaron para explicarnos los resultados obtenidos de ellos y la investigación para encontrar esos componentes, en resumidas cuentas... 3 monstruos de equipos, creo recordar algunas especificaciones eran... 4 gráficas potentes por equipo, disco duro ssd, procesador i7... Para que os hagáis una idea, algo para no todos los bolsillos. 

Algunos asistentes en el turno de preguntas, les preguntaron el porqué no usar un servicio de terceros para hacer el cracking de contraseñas, que saldría más económico... La justificación fue que tienen muchos datos privados de empresas que no pueden dar a terceros. Es un buen punto de vista, y a tener en cuenta a la hora de contratar un servicio de éste tipo, que la privacidad va a estar asegurada.


 


En la cuarta charla nos encontramos a Juan Blanco(10 años de experiencia en el campo de la seguridad informática. A lo largo de su carrera ha trabajado en 4 SOCs y 2 fabricantes de seguridad), dándonos una charla amena con buenos ejemplos extrapolados de estudios realizados en EEUU en otros ámbitos de empresa. Resumiendo su charla, fue que a una empresa atacar, la van a atacar... ¿Cuándo? A lo mejor ya están dentro, pero hay que hacer un planning para poder contener con lo mínimo, lo máximo.  Explicó un poco como gestionar y mejorar la seguridad de las organizaciones, mejorando el tiempo y la calidad de la respuesta ante incidentes de seguridad.



La penúltima charla fue para Ramon Pinagua(Ha trabajado como Penstester desde hace mas de 16 años para compañí­as como INNEVIS y S21SEC. Actualmente ejerce como analista de seguridad y manager del departamento de ciberseguridad de INNEVIS), en éste caso habló solo de la parte de hibernación de Windows, una cosa a muy tener en cuenta. ¿Qué és eso de la hibernación? Bueno, para quien no lo sepa, en los ordenadores hay una opción para cuando no lo estamos usando, y no queremos perder lo que estamos haciendo en ese momento apagando el equipo, podemos hinbernarlo, y así cuando volvamos pulsando una tecla, volvemos a tener el escritorio como anteriormente lo teniamos... Bien, ahora que ya sabemos lo que es, es una opción que se puede desactivar, y que viene así en los equipos a partir de Windows 7, pero hay otra cosa que no saben muchos... O casi nadie, y es que en los equipos portátiles cuando queda muy poca batería, automaticamente se pone el modo hibernación... :-O. 

Paso a explicar muy resumido que nos pasa con eso de la hibernación... Cuando hibernamos el PC se crea un archivo en el disco duro, guardando datos del equipo que ese momento están abiertos, o han sido abierto, y al volver al equipo no se borra el archivo, sino que se queda ahí... Eso significa, que si cogemos ese archivo y lo abrimos... Podemos encontrar users y passwords, entre otras cosas de nuestro equipo, ahí expuesto... Una charla muy interesante, y que seguramente también saque una entrada sóla para ella, y posiblemente lo haga en vídeo.


 



La última charla y para finalizar el evento de ponentes, dejaron a Alejandro Ramos(Profesor colaborador en el Master de Seguridad de la Universidad Europea de Madrid, para los módulos de análisis forense, fortificación de sistemas Linux y herramientas de seguridad) y Elías Grande (Ingeniero Técnico e Ingeniero Superior en Informática por la Universidad Rey Juan Carlos de Madrid y Máster en Seguridad de Tecnologías de la Información y de las Comunicaciones por la Universidad Europea de Madrid), explicandonos su servicio Odin, que viene siendo una herramienta para footprinting a lo grande. Nos hicieron unas demostraciones, y aunque esté en fase beta, tiene muy buena pinta, aunque ésta en modo privado y no vamos a poder usarlo por el momento... 


 


Pues esto es un resumen a la gran jornada realizada por la RootedCon. Espero con ansias la próxima, para aprender más de los grandes que van allí.

Un saludo,

Rubén Gutiérrez

@rgutga


jueves, 21 de julio de 2016

Cracking WPS con Dumpper

Buenas hackers! Hoy, siguiendo un poco la línea de hacking WiFi, que llevamos un tiempecillo sin tocar, vengo a traeros un pequeño giro: una herramienta para sistemas Windows que permite, entre otras cosas, ejecutar un ataque de WPS cracking.

WPS - WiFi Protected Setup

Podemos introducir un poco de los fundamentos del protocolo de conexión WPS o WiFi Protected Setup. Es un protocolo creado para facilitar la creación y conexión de dispostivos a redes WLAN. En la mayoría de implementaciones domésticas, la conexión puede realizarse tanto mediante por la pulsación de un botón en el punto de acceso mientras intentamos conectar desde nuestro host mediante WPS, o mediante la introducción de un PIN. Este PIN es un código, normalmente de ocho dígitos, que sirve para conectarse a la red.

Por desgracia, muchos de estos códigos o bien son el mismo para todos lo dispositivos de un mismo modelo (sinónimo de que son públicos), o bien son uno de una lista bien conocida (caso parecido al anterior), o se asignan siguiendo algoritmos fáciles basados en el ESSID, BSSID u otros datos del dispositivo o la red de forma predeterminada. Esto hace que existan muchas opciones y algoritmos que permiten el crackeo de las redes con este protocolo activado.

Dumpper

La herramienta en cuestión es Dumpper. Sus aplicaciones principales son la comprobación de la seguridad de una red inalámbrica mediante ataques al protocolo WPS, que es el caso que nos ocupa, u otros ataques, como la obtención de la clave WPA/WPA2 predeterminada de algunos sistemas, que se basa en el ESSID y el BSSID. Además, tiene integradas otras funciones de escaneo de red, como descubrimiento de hosts o escaneo de puertos.

Vista principal de Dumpper
Una vez descargada y abierta la herramienta, podemos seleccionar nuestra interfaz de red y realizar un escaneo muy rápido de las redes disponibles. Esta vista principal de redes actúa únicamente como herramienta de conexión de redes.

Para la parte interesante, iremos a la pestaña Wps. En ella, podemos pulsar de nuevo Scan. Las redes aparecerán en verde si se conoce el pin genérico único de esa red; en amarillo si se conocen varios posibles pines; y en rojo si no se tienen datos. Las redes que sean vulnerables al algoritmo ComputePIN.

Vista de WPS cracking de la herramienta

Una vez descubierta una red vulnerable, ya sea mediante PIN conocido o mediante algoritmo ComputePIN, podemos pulsar en el botón WpsWin, que lanzará dicha herramienta, incluida en la descarga del proyecto Dumpper, que ejecuta el crackeo en sí. Una vez ejecutado, y si todo ha ido bien, tendremos como resultado una conexión con el punto de acceso. Una vez conectado, podemos ver entre otros datos el PIN que ha servido para la conexión WPS y la clave de cifrado de la red, datos que quedan almacenados para futuros usos. Si no se ha podido adivinar el PIN de conexión de una forma u otra, el ataque habrá fracasado.

Protección ante ataques WPS

La mejor forma de prevenir estos ataques contra tu red doméstica es deshabilitar las conexiones mediante WPS en las opciones de configuración de tu punto de acceso o router inalámbrico. Otra opción, si es que el dispositivo lo permite, es cambiar el PIN a uno diferente al predeterminado.

 Sin embargo, el protocolo WPS sigue siendo vulnerable a otros ataques, como por ejemplo fuerza bruta, que podrían comprometer de todas formas tu red. De nuevo, la mejor manera de prevenir un ataque WPS es desactivar esta funcionalidad. 


Y hasta aquí la lección de hoy, chicos. Espero que os haya gustado y os sirva para aprender. Pronto volveremos con más entrega de cracking a redes WiFi. En concreto, realizaremos pronto un recorrido por Reaver y PixieScript. 

Un saludo hackers!!

Google Analytics