Rompiendo hashes MS-CACHE v2 usando GPU

14

Como la mayoría de las personas aquí sabrán, Windows almacena en caché las credenciales de dominio / AD en un formato conocido como MS-Cache v2. Obviamente, estas serían contraseñas excelentes para obtener durante una prueba de penetración cuando se obtiene acceso local en una estación de trabajo.

Entiendo que no se pueden atacar con tablas de arco iris. Sin embargo, aparte de usar JTR y Cain, no veo muchas opciones en el software para descifrarlos. Específicamente, me gustaría usar mis GPU (4 tarjetas Nvidia) para probar y descifrarlas. Alternativamente, si pudiera ejecutar software distribuido, sería un segundo mejor razonable.

Algunas preguntas entonces:

  • ¿Qué opciones hay para recuperar contraseñas de MS-Cache?

  • ¿Puede alguien proporcionar un desglose técnico de cómo se genera / ataca MS-Cache (v2)?

  • ¿Se utiliza MS-Cache v2 para cifrar las credenciales almacenadas en un controlador de dominio?

Editar :

Sólo me interesan los hash de MS-Cache v2, ya que generalmente no encontraría máquinas más antiguas que Windows XP en un dominio.

    
pregunta NULLZ 14.02.2013 - 01:26
fuente

3 respuestas

14

MS-Cache es un formato bastante simple: es un hash MD4 de la contraseña, seguido del nombre de usuario en minúsculas, y el hash junto a MD4( MD4(Unicode(password)) + Unicode(tolower(username)) ) . No estoy seguro de la diferencia técnica entre MS-Cache y v2; pero nada de lo que puedo encontrar sugiere que no son susceptibles a un ataque RainbowTable (de hecho, Cain & Abel parece tener soporte para las tablas MS-Cache y MS-Cache v2 -" Se agregó MSCACHE v2 Hashes Cryptanalysis a través de tablas clasificadas de Rainbow "en v4.9.4).

Las credenciales de MS-Cache no se almacenan en el controlador de dominio (excepto para los usuarios que inician sesión directamente): se almacenan como hashes MD4 de las contraseñas, relacionadas con el nombre de usuario. Puede que te interese esta pieza de tecnología sobre cómo ' re hadled.

Con respecto a la aceleración de GPU, parece que John the Ripper tiene soporte para MD4; Eso puede ser lo que buscas. De lo contrario, hay este artículo para atacar las contraseñas de Windows con la GPU (específicamente, puede adaptar ighashgpu para sus propósitos) y, como lo menciona Lucas en los comentarios a continuación; rcracki_mt es compatible con GPU.

[Actualización]

MS-Cache v2 se describe en detalle (con código) en openwall.info y, lo que es más importante, PassLib menciona que también se conoce como 'DCC2', que puede ayudar con búsquedas futuras (aunque la información es frustrantemente escasa). En cuanto a los ataques contra él, desde openwall:

  

En otras palabras, el ataque de fuerza bruta incremental para diferentes espacios de búsqueda, dependiendo del conjunto de caracteres y la longitud de la contraseña, demorará años. Por lo tanto, es una buena idea hacer una adivinación inteligente de la contraseña cuando se atacan los hashes DCC2, es decir, el diccionario basado en reglas y los ataques probabilísticos.

Con ese módulo de Python y PassLib, deberías poder armar algo relacionado con PyCUDA y PassLib , pero parece que nadie lo ha hecho antes.

    
respondido por el Bob Watson 14.02.2013 - 02:30
fuente
5

De esta página , veo una descripción de MS-Cache v2 como el hash MD4 de la concatenación del "hash NTLM" de la contraseña y el nombre de usuario (convertido a minúsculas, luego codificado en "Unicode", que significa "little-endian UTF-16" en la terminología de Microsoft ). El "hash NTLM" es MD4 computado sobre la contraseña (otra vez en little-endian UTF-16). Así que el hash involucra dos invocaciones MD4 anidadas y está "salted" por el nombre de usuario.

Las tablas Rainbow son "solo" tablas precomputadas (con un truco que ahorra mucho espacio); pueden romper los hashes que se encontraron durante la fase de construcción de la tabla, pero ninguna otra. Por lo tanto, puede construir una tabla de arco iris para MS-Cache v2, pero solo para un nombre de usuario específico; La tabla no sería aplicable a los hashes para otros usuarios. Por lo tanto, tal tabla tendría sentido para un nombre de usuario que se encuentra a menudo en muchos dominios, a saber, "Administrador", pero esto todavía es de aplicación limitada. Cain & Abel pretende incluir (desde la versión 4.9.43) soporte para generar y usar tablas rainbow en hashes de MS-Cache v2, pero, por supuesto, para un solo nombre de usuario a la vez.

Si solo tiene un hash para romper, construir la tabla tomaría más tiempo que el agrietamiento por fuerza bruta (la construcción de una tabla de arco iris que cubre N las posibles contraseñas toma tiempo aproximadamente 1.7 * N mientras que el cracking de fuerza bruta tiene un costo promedio de alrededor de N / 2 , por lo que vale la pena construir la tabla solo si se intentan crackear al menos 4 contraseñas con hash, todas con el mismo nombre de usuario en el caso de MS-Cache v2).

No encontré tablas de arco iris ya calculadas y disponibles de forma gratuita para MS-Cache v2 y el nombre de usuario "Administrador".

MD4 es un antecesor de MD5 y se asigna muy bien a GPU (incluso mejor que MD5), por lo que sus cuatro GPU deberían ser capaz de probar contraseñas potenciales por el billón (s) por segundo. La versión "jumbo" de John the Ripper está documentada en admite MS-Cache v2 con GPU (bajo el nombre" MSCash2 "), aunque con algunas ineficiencias en el lado de la generación de contraseñas (para capturar un billón de contraseñas por segundo, debes generar un billón de contraseñas potenciales por segundo, y eso podría matar a la CPU con la mejor intención). Como mínimo, esto le dará un código fuente para jugar y una "implementación de referencia" que sería útil para las pruebas.

Una CPU Core2 de 2,4 GHz de cuatro núcleos, sin GPU en absoluto, debería poder computar 80 millones de hashes MD4 por segundo, con código SSE2 mejorado (estimación de una implementación mía que hizo 48 millones de SHA 1 hashes por segundo), traduciendo a 40 millones de contraseñas por segundo. Esto ya es bastante bueno, según los estándares de descifrado de contraseñas, aunque, por supuesto, la GPU será mucho más eficiente. Sería un buen ejercicio de programación.

    
respondido por el Thomas Pornin 14.02.2013 - 13:38
fuente
1

Una muy buena herramienta que deberías probar es oclHashcat , que es un GPU solo cracker hash, funciona en Windows y Linux y también es compatible con multi-GPU .

Hay dos versiones de este software que son útiles para usted, oclHashcat-lite , que es un solo hash cracker y oclHashcat-plus , que puede romper hasta 15 millones hashes al mismo tiempo.

Por ejemplo, al usar los parámetros de la línea de comandos que siguen a esta línea, usted hará una fuerza bruta de MS-CACHE 2 que se guardan en un archivo específico (ejemplo.hash) probando el lower_alpha_numeric charset . El texto claro se guardará en un archivo:

cudaHashcat-plus64.exe -o out.txt -a 3 -1 ?l?d -m 1100 --increment-min=1 example.hash

Hay más información disponible en Wiki .

P.S .: Debido a que esta secuencia de comandos utiliza el modo de incremento , comprobará contraseñas de hasta 15 dígitos (36 ^ 15).

    
respondido por el LMGTFY 19.02.2013 - 15:15
fuente

Lea otras preguntas en las etiquetas