miércoles, 26 de abril de 2017

Cracking NTLM hashes con Azure GPU por unos céntimos... o mejor... gratis !!!

Estimados amigos de Inseguros !!!

*Esto no es un post que pretenda aportar mucho sobre el cómputo,  CPU, GPU, cracking, comparativas etc. Aunque se mencionen, el propósito es iniciar al lector en la modalidad y dar a conocer la posibilidad de hacerlo en Azure. Si eres un experto en esta materia, gracias*



Uno de los primeros pasos que hacemos en un entorno de post-explotación, aparte de elevación de privilegios, suele ser el volcado de claves del sistema.

Lo normal es que en un sistema mas o menos modernos y bien implementado las claves se guarden de manera "cifrada" con un hash, con algoritmo mas o menos conocido, mas o menos seguro.

En el caso de los equipos Windows solemos extraer las credenciales de la SAM o de la red en formato NTLM, ya sabes:

Administrador:AAD3B435B51404EEAAD3B435B51404EE:ECC35EE867B405EF13B357DA0B0C0663

Lo habitual es acceder a alguna de las bases de datos online que hay con hashes pre-calculados para probar fortuna con nuestro hash. Si en la base de datos aparece tenemos la contraseña en claro.

Otra posibilidad es usar la debilidad de Pass The Hass en sistemas Windows pre-2016 (configurado) en la que podemos emplear el hash como token de seguridad, en vez de la clave. Psexec es la herramienta "by default" para usar el hash en vez de la contraseña en conexiones remotas, ejecución de comandos etc.

Muchas veces, el hash no es suficiente, porque el equipo de gerencia no encuentra esta información relevante, o porque tenemos un entorno en el que sospechamos que la clave de administrador se usa en distintos servicios ( diferentes equipos, servicios, webs, etc) y es un MUST conseguirla en formato claro.

Ahora vienen las opciones, ¿como desciframos un hash NTLM de muchos caracteres?

Tenemos varias aproximaciones:

Fuerza Bruta con un diccionario: Confiamos en el que la password aparece en un diccionario.ç
El diccionario puede ser de palabras, y generado por nosotros, con variaciones de años, nombre de empresa, recursos, 3 por e, 0 por o, todo este tipo de cosas. ¿Si no funciona qué?

Fuerza Bruta con Rainbow Tables: Las Rainbow tables son combinaciones de hashes/claves ya precalculadas que hacen mucho más rápido el descubrimiento de la contraseña.
El tema está en que esto pesa, pesa en disco. Yo he manejado Rainbow Tables del espacion ascii mayusculas/minusculas de 8 caracteres de longitud, de 40 gb. El de 9 caracteres, casi 400gb. Si quieres probar contraseñas de más de 10, lo tienes DIFICIL sin comprarte un montón de discos duros, montón es MUCHO.

Fuerza Bruta: Este es el caso que nos atiende hoy. Este caso es muy sencillo, empezar a probar todas las combinaciones posibles de letras, caracteres, números y longitud hasta encontrar la contraseña.

La operación de fuerza bruta consume primordialmente cómputo. Cpu.

Como muchas sabéis, para realizar grandes cálculos se utilizan las "cpu" de las GPU, las tarjetas gráficas. Estás presentando una configuración de procesador optimizado para el rendimiento de las imágenes, que también consumen mucho computo, por lo que suelen ser usadas y ofrecen un rendimiento mucho más alto.


Cuando digo mucho más alto, es MUCHO, no es el doble, triple, ni 10 veces más, es MUCHO mas.

Vayamos por partes. Lo primero que vamos a hacer es descargar la herramienta HASHCAT, disponible para sistemas windows y linux. Según preferencias. Tenemos que tener la última versión de nuestros drivers de video activos. Quizás nos pida algún driver relativo a OPencl para el paralelismo entre varios dispositivos....

Voy a hacer una prueba en la castaña de portatil que uso ahora mismo. Estos son los datos y rendimiento que arroja HashCat en modo benchmarking para hash del tipo NTLM.


La humilde tarjeta integrada de mi portátil ofrece 273,7 millones de hashes por segundo. No está mal. Si fueran céntimos de euro...

Vamos a compararlo con algo. Por ejemplo, con el espacio de hashes que hay NTLM de mayusculas/minusculas/caracteres especiales de 9 caracteres de longitud:

13,759,005,997,841,642

Si lo divides entre mi potencia de cálculo, tardaría más de 2 años en sacar el hash/clave.

Vamos a compararlo con algo más curioso, con la capacidad de minado de Bitcoins. Nos vamos a la web: http://tpbitcalc.appspot.com/ e introducimos los datos. 


Sin contar gastos, en un año, ganaríamos 11 céntimos. Ya se va viendo que la capacidad de cómputo de mi tarjeta de vídeo es de risa.

Después de esta introducción :-) Vamos al asunto.


En Azure podemos usar máquinas del tipo N dotadas con tarjetas gráficas, GPU´s, de gran capacidad, en concreto NVIDIA K80 (2GPU y 24gb ram) y NVIDIA M60 (2GPU y 24gb ram). A esto le sumamos 20 cores de CPU y unos 120 Gb de ram. Estas son las configuraciones disponibles..



Como puedes ver, el tamaño de las máquinas es bestial. Las tenemos desde 700€/mes hasta 1500€/mes.

La cuestiones ha plantearse son varias.

Las máquinas no las vas a tener todo el día funcionando, sino las horas justas que creas convenientes para realizar los cálculos.

Azure puedes contratarlo "gratis" en modo de pruebas con 150€ de crédito... En el momento que te pases, te dirá, quieres seguir o paramos, por lo que no hay riesgo de sorpresas en la tarjeta.

Yo para mis pruebas use la NV12. Para poder seleccionar estas máquinas, al crearlas en Azure, debes seleccionar tipo de disco HDD y zona centro-sur de EEUU. No están disponibles en todas las zonas.

Lo que tenemos que tener claro son los pasos antes de empezar, para ahorrar tiempo.

En mi caso tenía preparado los drivers,376.84-tesla-desktop-winserver2016-international-whql     hashcat https://hashcat.net/hashcat/ y OPENCL https://software.intel.com/en-us/intel-opencl

Bájalo primero !!! Una vez instalado todo:


Menuda máquina. Ahora vamos a ir probando configuraciones hasta dar con la tecla. Os paso dos capturas en las que la diferencia de un comando a otra dobla la velocidad del proceso.



hashcat64.exe -a 3 -m 1000 hash.txt --force -w3

Al final estoy rindiendo a 12.000 Mh/s... ¿recuerdas los 250 de la tarjeta del portátil?

Los dos años del espacio de 9 caracteres se han hecho en:


En una hora y cuarto. Esto es un poco relativo, porque la clave puede estar al principio de XXXXXXXXX o al final, pero para hacernos una idea, es suficiente.

En cuanto al minado de bitcoins, podríamos ganar dinero usando los 150€ gratis de Azure?


Hemos pasado de 11 céntimos a 5 €, sin meter costes claro !!!

Espero que te sirva de ayuda este post para realizar alguna prueba de concepto xD o simplemente para iniciarte en el mundo del Cracking y las GPU.

Tengo que dar las gracias a dos señores que dieron una master class el otro día en el Azure Boot Camp 2017 de Madrid sobre todo esto de la series N de Azure, el cracking, los vídeo juegos y demás.

Os recomiendo que los sigáis, sino lo hacéis ya, porque son unos máquinas en esto y mejores personas.

Carlos Milán: https://twitter.com/cmilanf
Alberto Marcos: https://twitter.com/alber86


https://channel9.msdn.com/Events/Microsoft-Spain-Events/Azure-Bootcamp-Madrid/Track-1-Sesin-4-GPU-Cloud-Computing-la-potencia-de-la-aceleracin-grfica-en-Azure

Gracias !!!