DEFCON 17. Hackear 400,000 contraseñas, o cómo explicarle a un compañero de cuarto por qué la factura de electricidad ha aumentado. Parte 1Si no sigue ninguna regla para crear contraseñas, entonces la contraseña puede parecer una simple lista de
PHP . La gente odia las reglas, odia las frases y no quiere usarlas. Si les da libertad, imprimirán cualquier contraseña y asumirán que el trabajo está hecho. En este caso, es más seguro si no usan palabras básicas simples, por lo que es mejor usar diccionarios de entrada grandes.

La mayor contribución a la creación de diccionarios de entrada fue hecha por Sebastian Ravo: creó enormes listas de palabras de cada artículo de Wikipedia, así como de proyectos similares. Si sabes una palabra, entonces creas un artículo de Wikipedia para ella. Pero lo que es bueno para Wikipedia no siempre es bueno para crear contraseñas seguras, por lo que si el diccionario es realmente enorme, es imposible aplicarle muchas reglas diferentes. Puede leer la lista de palabras de Wikipedia en su blog
http://blog.sebastien.raveau.name/ .
Si hay una política de creación de contraseña, entonces debe guiarse por las siguientes reglas:
es mejor usar pequeñas listas de palabras temáticas y especializadas en los diccionarios,
Los mejores diccionarios se basan en contraseñas previamente descifradas.
Por razones de privacidad, no puedo proporcionarle una lista de contraseñas pirateadas, pero créame, así como una persona rica se enriquece, una contraseña pirateada se fortalece si ve dónde se cometió el error al crearla y corregirla.
Hay listas de tales contraseñas, y podemos ver que los mismos usuarios se repiten en estas listas porque usaron la misma contraseña en todas partes.
Será útil si puede extraer la base de tales contraseñas. Por ejemplo,
la contraseña de
TigerWoods1982 no debería estar demasiado extendida, pero las personas usan constantemente
la contraseña de
TigerWoods . Por lo tanto, puede extraer esta frase básica
"TigerWoods" para crear una contraseña
segura basada en ella. Hay algunas herramientas en mi CD que lo ayudarán a hacer esto mucho más fácil.
Las reglas para crear palabras para contraseñas son muy simples:
Sin embargo, deberá desarrollar sus propias reglas si desea descifrar contraseñas realmente seguras. En mi
CD hay otra herramienta que le permite analizar las contraseñas en 2 conjuntos diferentes.
El primero son las contraseñas, sobre las cuales sabemos cómo se crearon, por ejemplo, la
contraseña123 , y el segundo son las contraseñas, cuyo principio desconocemos. Esto es muy bueno, porque no necesita resolver 200 mil contraseñas como
contraseña123 y luego tratar de encontrar nuevas reglas para usarlas. Recibirá una breve lista de la que podrá ver, por ejemplo, que las personas usan emojis para crear contraseñas insertando emoticones en las palabras. Aprenderá nuevas combinaciones de teclas y esto lo ayudará a crear contraseñas seguras mucho más fácilmente.
Como dije, decidí alejarme de las reglas
JtR incorporadas y desarrollé mi propia forma de generar "conjeturas". Los buenos resultados provienen del método de
craqueo probabilístico ,
craqueo probabilístico . Ya he dicho que nuestras reacciones son universales: nos topamos con algo con los ojos, asentimos, decimos que se ve genial, pero para nosotros mismos pensamos: "¡qué tipo de basura académica!" Pero quiero decir que realmente queríamos aprender cómo crear las contraseñas más resistentes a las grietas, por lo que intentamos hacer todo de la mejor manera.
Se sabe que a algunas personas les gustan más las palabras que a otras, por ejemplo,
contraseña ,
mono ,
fútbol . También se sabe que las personas prefieren ciertas reglas para "distorsionar" las contraseñas agregando 123, 007, $$$ o las primeras letras mayúsculas de las palabras. Para aumentar la fuerza, debemos optimizar las reglas para crear contraseñas de una manera atípica. Este es un proceso que consume bastante tiempo. En el boletín de correo electrónico de
John the Ripper , descubrí la persona que creó 10 o 12 mil archivos de configuración de reglas
JtR , tratando de
aprovecharla al máximo.

Soy mucho más vago que él, así que no hice esto. Intenté facilitar la optimización del proceso de creación de contraseñas y automatizar el proceso. Procesamos toda la información y determinamos la probabilidad de usar ciertas palabras y combinaciones, es decir, clasificamos las contraseñas por la probabilidad de adivinar. Y luego usamos la combinación menos probable de palabras y "distorsiones" para crear una contraseña. Entonces, esto es lo que debemos tratar de fortalecer nuestras contraseñas:
- use una palabra común con una forma no común de distorsión de contraseña, por ejemplo 13! password13!;
- use una palabra rara con una "distorsión" común, por ejemplo, zibra123.
Con este método, hemos tenido éxito. Si no puede dividir las contraseñas en dos conjuntos de acuerdo con los signos mencionados anteriormente, tenemos un programa de capacitación que analiza automáticamente la lista de contraseñas conocidas y genera lo que llamamos una "gramática". Esta "gramática" contiene toda la información necesaria, por lo que utilizamos dos de estas "gramáticas" para investigar las posibilidades de descifrar contraseñas.
Gracias a esto, determinamos la probabilidad de usar todo lo que tenemos: palabras en los diccionarios, reglas para "distorsionar" las palabras en las contraseñas, algoritmos para organizar caracteres como "dos dígitos al final de la contraseña 12", en contraste con los cuales puede usar la regla "dos dígitos al final de la contraseña 21 ", y similares.
Puedo seguir hablando de esto, pero mejor te mostraré un buen ejemplo de cómo funciona. No espero que leas todo en la diapositiva, así que te diré lo que voy a hacer. Voy a lanzar nuestro craqueador de contraseñas probabilístico y "alimentarlo" con dos diccionarios de entrada diferentes. De hecho, admite hasta 10 diccionarios, pero es mejor no volverse loco.

Un diccionario de entrada contiene las contraseñas más comunes, por lo que tiene una alta probabilidad de adivinar. El segundo diccionario contiene las palabras menos comunes, y un descifrador de contraseñas cambiará entre los dos diccionarios. Después de eso, "salino" el resultado directamente en
John the Ripper , porque, como dije, quiero crear mi propio algoritmo de hash de contraseña.
Desafortunadamente, no podemos usar la lista
PHP aquí, nuevamente debido a la confidencialidad, ya que no puede demostrar el descifrado de contraseñas a todos, nuestro instituto no reconoce esto como legal. Por lo tanto, demostraré el trabajo del cracker en el ejemplo de la lista de
MySpace , que se divulgó hace 2 años. Todas las contraseñas se presentaron en texto plano, para que pueda leerlas, y esta operación no representa un peligro adicional.
Utilizamos el hash
MD5 , este es exactamente el mismo algoritmo de hash que se usa para la lista
phpbb , por lo que aquí simula en gran medida un ataque a
phpbb . Aquí se cargaron alrededor de 17,000 hashes de contraseñas sin "entusiasmo", y en realidad dividimos sus listas en varias partes diferentes para el aprendizaje automático típico.
En este momento en la pantalla puede ver la velocidad a la que se descifran las contraseñas, por lo que probablemente debería usar un algoritmo de hash más lento. También hay un cambio entre las diferentes reglas, por lo que estos no son solo intentos como "prueba 1 dígito, prueba 2 dígitos", etc.
Verá que las contraseñas son de diferentes tamaños, generalmente las personas usan una longitud de 6 a 8 caracteres y, a veces, hay signos de exclamación al final de la contraseña.
Hay varios tipos más de optimización que estamos tratando de integrar en este algoritmo, porque nuestro trabajo aún está en curso. Una de estas cosas es la inclusión de ataques dirigidos en el proceso, cuando en lugar de romper alguna contraseña antigua grande, el programa intenta descifrar la contraseña de un usuario específico.

Todo lo que necesita para un ataque dirigido es usar un diccionario de entrada diferente, como nombres de bebés, cumpleaños, códigos postales, etc.
Verá que el proceso de piratería en la pantalla se ha ralentizado un poco, estas son características de diseño, si la piratería es lo suficientemente simple, el proceso se acelera. Pero dado que se basa en un modelo probabilístico, las contraseñas con la mayor probabilidad se adivinan más rápido, y las contraseñas con la menor probabilidad se descifran un poco más lentamente, por lo que aquí se usa un mayor número de conjeturas.
También notó que las contraseñas en esta lista son en su mayoría bastante débiles. Esto se debe a que recién estamos comenzando una sesión de descifrado de contraseñas y no queremos usar contraseñas demasiado complejas o avanzadas.
Si tiene una estrategia de piratería en la que tiene la intención de atacar solo contraseñas seguras, debe crear una lista adecuada basada en dichas contraseñas e iniciar la sesión pirateando solo contraseñas seguras.
Entonces, nuestro programa ha completado su trabajo. El proceso de piratería tomó 2 minutos y 30 segundos, tiempo durante el cual se piratearon o adivinaron 5586 contraseñas, lo que representa un poco más del 30% del número total.
Hay cientos de razones por las que creo que la política para crear contraseñas debe cambiarse, no porque el uso de las contraseñas sea algo estúpido y atrasado. Es solo que realmente creo que hacen más daño que bien a nuestra seguridad. Especialmente si estamos hablando de ataques fuera de línea que no se pueden resistir a menos que cambie su contraseña cada 2 minutos.
Ahora quiero hablar sobre la técnica de ataque de la
Fuerza Bruta . Estos ataques realmente pueden causar mucho daño si no se ocupa de la defensa.
Son bastante poderosos, pero puedes resistirte a ellos, solo necesitas usar tu cerebro. Para hacer esto, debe analizar la frecuencia de uso de letras y símbolos para averiguar qué letras o símbolos se usan en las contraseñas relativamente raramente.

Seguramente todos escucharon sobre esto, así que intente, por ejemplo, usar la letra Q con más frecuencia, lo cual es raro en las contraseñas. Su algoritmo de piratería no debe intentar descifrar todas las contraseñas, debe centrarse en las más probables.
Una opción más "avanzada" es
el modelo de Markov . Se basa en la probabilidad condicional de letras, por ejemplo, si tiene dos letras Q seguidas, está más protegido que cuando tiene U en su conjunto de letras, porque U generalmente sigue la letra Q en palabras. También se supone que la contraseña se crea en De manera "humana", es decir, si una determinada letra se encuentra en este lugar de la palabra, le sigue otra letra, que se usa con mayor frecuencia en una combinación de letras. El
algoritmo de pirateo de
JtR utiliza el modelo de Markov, que tiene en cuenta que la letra Q en "palabras humanas" suele ir seguida de U o W, pero no de S o Z. No piense que estoy luchando por conseguirle el "John the Ripper" aquí, pero es Muy buen programa.
Podemos profundizar aún más la lógica de
Brute Force mediante el uso de ataques dirigidos. Se basan en el uso de tales principios de creación de contraseñas:
- las personas tienden a comenzar la contraseña con mayúscula;
- generalmente agregan números al final de la contraseña;
- por la misma razón, les gusta usar combinaciones php o phpbb en las contraseñas.
Se pueden usar los mismos principios para los "ataques de diccionario". Hay una muy buena herramienta para verificar la efectividad de los ataques llamada
"Crunch" , se puede encontrar en el
foro de programadores
remote-exploit.com .
Quiero darte un ejemplo de cómo romper una contraseña "segura" usando el ataque de la
Fuerza Bruta . Para hacer esto, primero inicio
JtR y comienza a generar "conjeturas" basadas en letras minúsculas usando el modelo de Markov.

Verá que en esta lista hay muchas palabras reales, como perro, sin estrellas, marino, que se encuentran en el diccionario de entrada. Pero gracias al modelo de Markov, también genera palabras que faltan allí, por ejemplo, stech. Pero como estamos resolviendo una contraseña segura, necesitamos aplicar alguna lógica adicional. Por lo tanto, uso guiones que proporcionan una letra mayúscula al comienzo de una palabra, y también agrego caracteres especiales y números al final de una palabra.

Como puede ver, estas "suposiciones" parecen una contraseña realmente segura. Ahora que conoce la política de creación de contraseñas, debe hacer clic en el botón "desactivar la pereza" y dedicar 5 minutos a dar a estas palabras un cierto tamaño, porque parecen demasiado cortas.
También podemos intentar cargar todo de nuevo a
JtR e intentar descifrar hash.

Al comienzo de la presentación, hablé en detalle sobre cómo romper la lista de contraseñas para los usuarios de
phpbb.com , y ahora quiero hablar un poco sobre cómo romper la lista de
Web Hosting Talk .

Fue pirateado el 21 de marzo de 2009, al menos en ese momento se publicó una lista en la red, y el atacante resultó ser un verdadero sinvergüenza, porque colocó en el dominio público unos 200 mil inicios de sesión y contraseñas y otra información confidencial del usuario. Robó hashes y luego eliminó el sitio en sí y todas las copias de seguridad. Este fue un gran golpe para el administrador del sistema.

Después de eso, los propietarios del sitio informaron que fueron pirateados, pero los usuarios no tienen que preocuparse, porque ahora están a salvo. Al mismo tiempo, expresaron un pensamiento, que en realidad era engañoso y peligroso, cito las palabras del coordinador de la comunidad de
iNET : "Las contraseñas tienen" entusiasmo ", y será un evento sin precedentes si alguien puede rediseñarlas. Periódicamente cambio mi contraseña, así que quizás hoy sea un buen día para esto ".
Parece que digo: "Hola chicos, ya saben, la sala de copia está encendida, pero no se preocupen, hay un sistema de extinción de incendios allí, por lo que es absolutamente imposible que este edificio se queme en el suelo". Pero a veces me gusta salir a la hora del almuerzo, así que también puedes caminar afuera si quieres ". Esta es una de las razones por las que decidí hackear esta lista aquí.
Además, el coordinador publicó la siguiente declaración: "No se ha pirateado una sola tarjeta de crédito de usuario o cuenta de
PayPay ". Probablemente solo porque el hacker no necesitaba esto. Y luego hubo una nueva falla: el mismo sitio fue pirateado nuevamente por el mismo pirata informático el 7 de abril, y esta vez publicó en la red alrededor de 202 mil hashes de contraseñas y 2218 números de tarjetas de crédito.
Nunca iré al sitio, cuya administración dice: "Sí, nos han robado dos mil tarjetas de crédito, ¡pero el resto está a salvo"!
Quiero aclarar un poco la situación. Hackear personas es un hecho, y no quiero culpar a
Web Hosting Talk por esto . Intentar guardar y extraer algo de su sistema inmediatamente después de que ha sido pirateado es un problema difícil, especialmente si los usuarios le han pedido repetidamente que haga una copia de seguridad del sistema. Por lo tanto, creo que el principal problema con
Web Hosting Talk es que minimizan los riesgos que enfrentan sus usuarios. Y actuar por su parte era muy peligroso.
Porque, al menos, debe proporcionar a los usuarios algo así como un reloj que indique la necesidad de iniciar sesión y cambiar su contraseña, y no solo para este sitio, sino para todos los demás sitios, lo más rápido posible. Esto es muy importante, porque pronto descubrí un hecho interesante sobre este sitio: después del primer ataque, 1348 usuarios cambiaron sus contraseñas, lo que representaba solo el 0.6% del número total registrado en el sitio.
Es por eso que el hacker tuvo una gran oportunidad de regresar y hackear el sitio nuevamente usando las mismas credenciales de usuario sin cambios, o incluso usarlas para hackear otros sitios donde también estaban registrados.
Quería averiguar si el hash de este sitio era realmente tan débil, y recurrí a
Google para averiguar qué software usa el sitio. Resultó que este es un motor de foro
vBulletin , escrito en
PHP y que usa el servidor
MySQL para mantener su base de datos. Google también respondió a la pregunta de qué algoritmo de hash usa este sitio: esto es doble hashing como
MD5 (MD5 (Contraseña) .salt) . Es decir, tomas la contraseña del usuario, la hash usando
MD5 y una vez más hash la contraseña recibida usando el mismo
MD5 . No sabía cómo "John the Ripper" se ocuparía de tal hash, así que escribí mi propio "cracker". Pero no intenté descifrar las contraseñas reales de este sitio, ya que tomaría varias semanas, decidí probar la presencia de la contraseña "contraseña" en la lista e inmediatamente pirateé a 1109 personas que usaron la palabra "contraseña" como contraseña.

Quiero decir que el "resaltado" en la contraseña realmente se convierte en un problema para el atacante y, por lo tanto, es importante para el usuario. Continúo "anunciando" contraseñas con diferentes "entusiasmo" porque para un cracker esto significaría tener que "adivinar" el hash de cada contraseña para cada usuario individual. Si tomamos el sitio
phpbb , por ejemplo, donde se usó el hash
MD5 de un solo paso, entonces el hacker pasó aproximadamente 1 hora descifrando la lista de contraseñas. Para tal ataque a la lista de contraseñas de
Web Hosting Talk , si estuvieran protegidas por "entusiasmo", tomaría 200 mil horas.
¿Qué más hay que decir? , «Dell» 34% 200
phpbb . , «». , , ? , .
, «» , - , , , «». , , 200 , . , «admin» «webmaster».
, , . , , «», , .
, weir@cs.fsu.edu
- , .
: , «It's fun to try the impossible»! : «!!It's fun to try the impossible!» «!!ifttti!».
,
Mad Libs , .
: ASCII, :

Gracias por quedarte con nosotros. ¿Te gustan nuestros artículos? ¿Quieres ver más materiales interesantes?
Apóyenos haciendo un pedido o recomendándolo a sus amigos, un
descuento del 30% para los usuarios de Habr en un análogo único de servidores de nivel de entrada que inventamos para usted: toda la verdad sobre VPS (KVM) E5-2650 v4 (6 núcleos) 10GB DDR4 240GB SSD 1Gbps de $ 20 o cómo dividir el servidor? (las opciones están disponibles con RAID1 y RAID10, hasta 24 núcleos y hasta 40GB DDR4).
VPS (KVM) E5-2650 v4 (6 núcleos) 10GB DDR4 240GB SSD 1Gbps hasta diciembre de forma gratuita al pagar por un período de seis meses, puede ordenar
aquí .
Dell R730xd 2 veces más barato? Solo tenemos
2 x Intel Dodeca-Core Xeon E5-2650v4 128GB DDR4 6x480GB SSD 1Gbps 100 TV desde $ 249 en los Países Bajos y los EE. UU. Lea sobre
Cómo construir un edificio de infraestructura. clase utilizando servidores Dell R730xd E5-2650 v4 que cuestan 9,000 euros por un centavo?