Cuando un hacker o un probador de penetración compromete el sistema y quiere acceder a una contraseña de texto plano desde un volcado de base de datos, primero deben descifrar el hash de contraseña almacenado. Muchos atacantes se sumergieron en este concepto: intentaron cualquier ataque de contraseña arbitrario que quisieran probar, con poca razón. Esta discusión mostrará algunos métodos eficaces de hackeo de contraseñas y cómo se puede utilizar un análisis estadístico de contraseñas con herramientas para crear un enfoque limitado en el tiempo para lograr un hackeo eficiente y exitoso.
El craqueo de contraseñas es un negocio moribundo. Los usuarios necesitan crear contraseñas más complejas, y algunos desarrolladores de back-end están comenzando a usar mecanismos como Bcrypt para reemplazar las funciones hash estándar. Los hashes de Bcrypt tardan más en generarse y, como resultado, las contraseñas se vuelven más difíciles de romper. Los hackers necesitan generar un hash muy rápido para descifrar una contraseña de manera efectiva, por lo que Bcrypt es una herramienta muy poderosa para combatir este tipo de ataques. Para ilustrar este ejemplo, un criptógrafo creado por 25 clusters de GPUs lanzado en 2012 fue capaz de lograr una velocidad de generación de hashes NTLM de 350 mil millones de hashes por segundo, en comparación con 71.000 hashes de Bcrypt. Tomando esto como modelo de comparación, se pueden generar 5 millones de hashes NTLM por cada hash de Bcrypt generado. Cuando se enfrentan a algoritmos Bcrpyted, los hackers deben hacer adivinos más computacionales sobre contraseñas y no pueden confiar en el uso de fuerza bruta para cada posibilidad.
Nota: Si un atacante sabe que la longitud de la contraseña es tan corta que la fuerza bruta no tomará mucho tiempo para descifrar el espacio clave, no es necesario tomar un paso de ataque incremental.
Si bien sería bueno cubrir todo el espacio crítico de la contraseña del usuario, el tiempo requerido para hacerlo generalmente no es factible. Por lo tanto, cuando se trata de hackear, es importante intentar primero el ataque que ahorra más tiempo y, si no tiene éxito, continuar con un ataque criptográfico más lento que cubre más espacio clave. El enfoque más rápido es un simple ataque de diccionario basado en contraseñas de usuario comunes y volcados de contraseñas anteriores. A partir de ahí, se debe intentar manipular el diccionario para agregar números o símbolos al final o cambiar las letras. Esto se conoce como un ataque híbrido o un ataque basado en reglas. A continuación, puede intentar generar posibles contraseñas utilizando las funciones de aprendizaje automático. La cadena de Markov es un buen ejemplo. Al combinar elementos comunes que existen en el inglés para formar palabras (por ejemplo, "ing", "er", "qu"), se puede generar una buena suposición de la contraseña, como la siguiente.Aunque es fácil descifrar esta contraseña en particular utilizando cualquier método, para simplificar todos los vectores de ataque, la usaremos. Password1234Password1234 Pa + ss + Word + 1234 Por último, un ataque de fuerza bruta dirigido (llamado ataque de máscara) cubre todo el espacio clave de una contraseña dada basado en la estructura criptográfica.
Por "estructura " de una contraseña me refiero al tipo de caracteres y el orden en que se utilizan para crear la contraseña. Por ejemplo, una "estructura " con letras mayúsculas seguidas de siete letras minúsculas seguidas de cuatro dígitos (denotados). Password1234ul-lldddd letras minúsculas, mayúsculas, símbolos, números (l) (u) (s) (d) Por lo tanto, si un atacante decide utilizar todas las posibilidades de esta estructura para crear combinaciones de caracteres, él o ella finalmente encontrará la contraseña.
Entonces la pregunta para los atacantes se convierte en: ¿Qué estructura debe apuntar primero al atacar un conjunto de hashes? Password1234 Análisis estadístico Para ayudar a responder a esta pregunta, he realizado un análisis estadístico de los volcados de contraseñas populares para ver si existen estructuras criptográficas más comunes que otras, y hasta qué punto es correcta.
El tamaño de la muestra de más de 34 millones de contraseñas expuestas públicamente incluye descargas de contraseñas conocidas como RockYou, LinkedIn, phpBB y más.
La siguiente figura muestra la frecuencia de la estructura de la máscara para cada máscara única. La línea roja representa la línea del 50%, que aparece después de la máscara número 13 más frecuente.
Esto significa que las primeras 13 estructuras de máscara únicas representan el 50% de la contraseña de muestra. Las estructuras de más de 20 millones de contraseñas en la muestra se encuentran en las 13 primeras máscaras. Estos resultados son bastante sorprendentes en términos de la ubicuidad de las contraseñas estructuradas. El otro 50% se encuentra en la larga cola derecha, que se ha reducido en esta figura. De hecho, de las 260.500 máscaras únicas, solo 400 se muestran en este diagrama. Este concepto de contraseñas de estructura general es increíble; sin embargo, no es sorprendente cuando se considera cómo los usuarios crean y recuerdan sus contraseñas. De acuerdo con los datos analizados, hay algunos factores lógicos que ayudan a explicar cómo esto es posible. Cuando se le pide a un usuario que proporcione una contraseña que contenga letras mayúsculas, más del 90% de las veces se utiliza como el primer carácter. Cuando se solicitan números, la mayoría de los usuarios agregan dos dígitos al final de su contraseña (probablemente el año de graduación). La siguiente opción más popular es terminar la contraseña con cuatro dígitos (podría ser el año pasado o este año).En este caso, el siguiente número más popular tiene un número al final, con tres números al final. Las similitudes estructurales como estas permiten a los atacantes predecir cuál es la estructura más probable de la contraseña del usuario.
Por lo tanto, asumimos que dada una estructura criptográfica, si vemos letras sucesivas, es probable que sea una palabra. Esta es una suposición muy útil para los crackers, ya que elimina una gran cantidad de espacio clave. Esto se convierte en un ataque híbrido que explota la significación estadística de una criptografía común. Por lo general, como probadores de penetración, incluso si rompemos un conjunto de hashes, es posible que no tengamos tiempo para descifrar todos los hashes.
Sin embargo, destruirlos puede ayudar a mejorar el acceso al sistema y llevar a hallazgos más útiles para los clientes. Por lo tanto, al descifrar una contraseña, puede ser útil determinar cuánto tiempo se asignará para descifrar un conjunto de valores hash. Usando las estructuras encontradas en el análisis anterior, un atacante puede determinar qué estructuras más populares quiere cubrir en función de los requisitos de complejidad criptográfica ordenados por el tiempo de finalización más rápido. Por último, el atacante puede limitar su método en el tiempo gastando no más de una hora en realizar el hackeo. Esto se descubrió durante una prueba de penetración reciente para obtener un hash. A continuación se muestra una instantánea de los resultados del cracker basado en CPU.
En este caso, la estructura más rápida es que la definimos como una letra mayúscula seguida de tres letras minúsculas ("W " es para" palabra ") y luego cuatro dígitos. El conjunto de hashes tiene 69 contraseñas que coinciden con la estructura, y mi CPU estándar es capaz de recorrer todas las posibilidades de la estructura en un minuto. Dejamos de hackear a los 62 minutos, y el hackeo produjo 221 hashes de hackeo únicos que coincidieron con 491 cuentas, lo que resultó en un total de 11 por ciento de las filtraciones. La razón por la que el número de contraseñas hackeadas y las violaciones de cuentas varía mucho es que la configuración de Office tiende a hacer que las personas usen contraseñas comunes. Si un atacante determina que se está utilizando una contraseña genérica en el entorno, todos los usuarios con la misma contraseña también están expuestos a la amenaza. U (W3) dddd Aunque un ataque híbrido o un ataque basado en reglas (por ejemplo) puede descifrar varias de estas contraseñas más rápidamente, la estructura de las contraseñas de ataque nos permite cubrir más espacio clave.
Este método es el siguiente paso válido si el ataque más rápido no demuestra ser exitoso para corromper el hash objetivo.Además, es importante recordar que este ejemplo se realizó en una CPU bastante mediocre, y la ejecución del mismo ataque en una GPU poderosa puede reducir este tiempo a unos segundos. Por lo tanto, el tiempo exacto es menos importante que la teoría de la ejecución efectiva. best64 nos ayuda a atacar las criptografías comunes en general, con análisis estadísticos; sin embargo, existen herramientas que pueden ayudar a localizar aplicaciones específicas.
Herramientas como CeWL pueden rastrear palabras de páginas web y usarse para generar listas de palabras o diccionarios específicos para empresas. Esto funciona porque las empresas tienden a usar contraseñas relacionadas con su industria, compañía o trabajo. Además, dado que determinamos que las contraseñas de uso común son populares en el entorno de trabajo, también es posible usar las contraseñas que ya han sido descifradas como base para otras contraseñas, que pueden ser similares. Por ejemplo, si descubrimos que "" es la contraseña de un usuario, podríamos poner "" en una nueva lista de palabras, ponerlo en un conjunto de reglas y luego descubrir que otra persona tiene la contraseña "". Este concepto de usar las palabras básicas hackeadas (como por ejemplo) y retocarlas con los caracteres circundantes es muy eficaz al hackear hashes descargados de entornos empresariales, que se remonta al concepto de reutilización de contraseñas.''De acuerdo con las pruebas de penetración que realizamos, esto es más adecuado para descifrar el último 20% de hashes sin descifrar. AcmeCorp1234AcmeCorpAcmeCorp@2015AcmeCorp también es importante recortar el diccionario para que todas las contraseñas adivinadas cumplan con los requisitos especificados por la aplicación, para que no se pierda el tiempo adivinando contraseñas que no pueden adivinarse debido a su longitud o composición de caracteres.
Por lo tanto, los atacantes deben implementar un método estándar que tenga esto en cuenta. Si el atacante quiere que la cuenta hackeada se complete en la primera etapa, entonces puede que no haya ninguna razón para continuar con otros ataques; sin embargo, en muchos casos, un simple ataque de diccionario puede no ser suficiente si existe una cuenta objetivo, o el atacante simplemente quiere dañar tantas cuentas como sea posible, por lo que puede ser necesario un ataque híbrido y un ataque de fuerza bruta dirigido que utilice una estructura estadística. Por lo tanto, es fundamental establecer métodos para un crack exitoso, que pueden incluir los métodos mencionados anteriormente, así como algunos procesos automatizados. Las herramientas más recientes como PRINCE pueden ayudar a facilitar el hackeo de contraseñas. Es importante desarrollar una banda de herramientas como PRINCE para probar en el método, pero comprender las funciones detrás de las herramientas en lugar de confiar totalmente en ellas hará que el hackeo sea más eficaz.
Por lo tanto, los desarrolladores podrían implementar algunos controles para evitar que los usuarios utilicen algunas de estas estructuras muy populares para aplanar la curva del gráfico anterior. Sin embargo, el problema con esta idea es que sin una estructura simple, los usuarios pueden tener dificultades para recordar sus contraseñas. Recomiendo un administrador de contraseñas que requiere autenticación de dos factores. Estas aplicaciones generarán y almacenarán todas tus contraseñas para ti, por lo que la memoria no es un problema. Las contraseñas que generan son estructuralmente aleatorias y se pueden usar siempre y cuando la aplicación lo permita. Como he mencionado anteriormente, el cifrado de contraseñas es otro método muy eficaz que puede ralentizar las perspectivas de los atacantes.Por último, implementar estrategias dentro de la oficina que ayuden a los usuarios a comprender los peligros de compartir contraseñas o reutilizarlas es un paso exitoso en la dirección correcta, incluso si los usuarios no siempre cumplen con ellas. Si bien es probable que no lo sigan todo el tiempo, es una medida de control efectiva.
A medida que aumenta la dificultad del hackeo, se necesitan ataques específicos basados en la eficiencia y se deben establecer métodos de hackeo individuales. No vale la pena invertir dinero para mejorar finalmente la velocidad de generación de hashes. Por lo tanto, la implementación de un método y un proceso simplificado que utilice estadísticas y herramientas como medio de ataque puede facilitar el craqueo de contraseñas. Los desarrolladores pueden desarrollar controles para hacer frente a esta situación, y los usuarios pueden utilizar administradores de contraseñas seguros para minimizar la efectividad de estos ataques; sin embargo, tales implementaciones no son muy populares todavía. En la actualidad, los ataques estadísticos contra contraseñas son efectivos tanto en términos de número de hackeos como en términos de eficiencia de conexión temporal. Piense en sus propias contraseñas y pregúntese qué tan rápido se pueden romper, dependiendo de la estructura de las contraseñas y qué controles dentro de su oficina podrían llevar a un atacante a hackear las cuentas de un usuario.