Cómo descifrar contraseñas

Una breve nota: este artículo trata sobre la teoría de cómo descifrar contraseñas. Comprender cómo los ciberdelincuentes ejecutan los ataques es extremadamente importante para comprender cómo proteger los sistemas contra ese tipo de ataques.

Intentar piratear un sistema que no es de su propiedad es probablemente ilegal en su jurisdicción (además de que piratear sus propios sistemas puede [y a menudo lo hace] violar cualquier garantía de ese producto).

Empecemos con lo básico. ¿Qué es un ataque de fuerza bruta?

Este tipo de ataque implica intentar repetidamente iniciar sesión como usuario probando todas las combinaciones posibles de letras, números y caracteres (utilizando herramientas automatizadas).

Esto se puede hacer en línea (es decir, en tiempo real, probando continuamente diferentes combinaciones de nombre de usuario / contraseña en cuentas como redes sociales o sitios bancarios) o fuera de línea (por ejemplo, si ha obtenido un conjunto de contraseñas hash y está tratando de descifrar ellos sin conexión).

Sin conexión no siempre es posible (puede ser difícil obtener un conjunto de contraseñas hash), pero es mucho menos ruidoso. Esto se debe a que un equipo de seguridad probablemente notará muchas, muchas cuentas de inicio de sesión fallidas de la misma cuenta, pero si puede descifrar la contraseña sin conexión, no tendrá un registro de intentos fallidos de inicio de sesión.

Esto es relativamente fácil con una contraseña corta. Se vuelve exponencialmente más difícil con una contraseña más larga debido a la gran cantidad de posibilidades.

Por ejemplo, si sabe que alguien está usando una contraseña de 5 caracteres, compuesta solo de letras minúsculas, el número total de contraseñas posibles es 26 ^ 5 (26 letras posibles para elegir para la primera letra, 26 opciones posibles para la segunda letra, etc.), o 11.881.376 combinaciones posibles.

Pero si alguien está usando una contraseña de 11 caracteres, solo de letras minúsculas, el número total de contraseñas posibles es 26 ^ 11, o 3.670.344.486.987.776 contraseñas posibles.

Cuando agrega letras mayúsculas, caracteres especiales y números, esto se vuelve aún más difícil y requiere más tiempo de descifrar. Cuantas más contraseñas posibles haya, más difícil será para alguien iniciar sesión con éxito con un ataque de fuerza bruta.

Cómo protegerse

Este tipo de ataque se puede defender de dos formas diferentes. En primer lugar, puede utilizar contraseñas complejas y suficientemente largas (al menos 15 caracteres). También puede usar contraseñas únicas para cada cuenta (¡use un administrador de contraseñas!) Para reducir el peligro de filtraciones de datos.

Un equipo de seguridad puede bloquear una cuenta después de una cierta cantidad de intentos fallidos de inicio de sesión. También pueden forzar un método secundario de verificación como Captcha, o usar autenticación de 2 factores (2FA) que requiere un segundo código (SMS o correo electrónico, basado en la aplicación o basado en la clave de hardware).

Aquí hay un artículo sobre cómo ejecutar un ataque de fuerza bruta.

¿Cómo se pueden descifrar contraseñas más rápido?

Un ataque de diccionario implica intentar iniciar sesión repetidamente probando una serie de combinaciones incluidas en un 'diccionario' precompilado o una lista de combinaciones.

Esto suele ser más rápido que un ataque de fuerza bruta porque las combinaciones de letras y números ya se han calculado, lo que le permite ahorrar tiempo y potencia de cálculo.

Pero si la contraseña es lo suficientemente compleja (por ejemplo, 1098324ukjbfnsdfsnej) y no aparece en el 'diccionario' (la lista precompilada de combinaciones con las que está trabajando), el ataque no funcionará.

Con frecuencia tiene éxito porque, a menudo, cuando las personas eligen contraseñas, eligen palabras comunes o variaciones de esas palabras (por ejemplo, 'contraseña' o 'p @ SSword').

Un pirata informático también puede utilizar este tipo de ataque cuando conoce o adivina una parte de la contraseña (por ejemplo, el nombre de un perro, los cumpleaños de un niño o un aniversario, información que un pirata informático puede encontrar en las páginas de las redes sociales u otros recursos de código abierto).

Medidas de protección similares a las descritas anteriormente contra ataques de fuerza bruta pueden evitar que estos tipos de ataques tengan éxito.

¿Qué pasa si ya tiene una lista de contraseñas hash?

Las contraseñas se almacenan en el archivo / etc / shadow para Linux y en el archivo C: \ Windows \ System32 \ config para Windows (que no están disponibles mientras se inicia el sistema operativo).

Si logró obtener este archivo, o si obtuvo un hash de contraseña de una manera diferente, como rastreando el tráfico en la red, puede intentar descifrar la contraseña "sin conexión".

Mientras que los ataques anteriores requieren intentar iniciar sesión repetidamente, si tiene una lista de contraseñas hash, puede intentar descifrarlas en su máquina, sin activar alertas generadas por intentos repetidos de inicio de sesión fallidos. Luego, solo intenta iniciar sesión una vez, después de haber descifrado correctamente la contraseña (y, por lo tanto, no hay ningún intento fallido de inicio de sesión).

Puede usar ataques de fuerza bruta o ataques de diccionario contra los archivos hash, y puede tener éxito dependiendo de qué tan fuerte sea el hash.

Espera un minuto, ¿qué es el hash?

35D4FFEF6EF231D998C6046764BB935D

¿Reconoces este mensaje? Dice 'Hola, mi nombre es megan'

7DBDA24A2D10DAF98F23B95CFAF1D3AB

Este es el primer párrafo de este artículo. Sí, parece una tontería, pero en realidad es un 'hash'.

Una función hash le permite a una computadora ingresar una cadena (alguna combinación de letras, números y símbolos), tomar esa cadena, mezclarla y generar una cadena de longitud fija. Es por eso que ambas cadenas anteriores tienen la misma longitud, aunque las entradas de las cadenas tienen longitudes muy diferentes.

Se pueden crear hashes a partir de casi cualquier contenido digital. Básicamente, todo el contenido digital se puede reducir a binario, o una serie de 0 y 1. Por lo tanto, todo el contenido digital (imágenes, documentos, etc.) puede tener un hash.

Hay muchas funciones hash diferentes, algunas de las cuales son más seguras que otras. Los hash anteriores se generaron con MD5 (MD significa "Message Digest"). Las diferentes funciones también difieren en la longitud del hash que producen.

El mismo contenido en la misma función hash siempre producirá el mismo hash. Sin embargo, incluso un pequeño cambio alterará el hash por completo. Por ejemplo,

2FF5E24F6735B7564CAE7020B41C80F1

Es el hash de 'Hola, mi nombre es Megan'. El simple hecho de poner en mayúscula la M en Megan cambió completamente el hash de arriba.

Los hash también son funciones unidireccionales (lo que significa que no se pueden revertir). Esto significa que los hash (únicos y unidireccionales) se pueden utilizar como un tipo de huella digital para el contenido.

¿Cuál es un ejemplo de cómo se usan los hashes?

Los hash se pueden utilizar como verificación de que un mensaje no se ha modificado.

Cuando envía un correo electrónico, por ejemplo, puede aplicar un hash a todo el correo electrónico y enviarlo también. Luego, el destinatario puede ejecutar el mensaje recibido a través de la misma función hash para verificar si el mensaje ha sido manipulado en tránsito. Si los dos hash coinciden, el mensaje no se ha modificado. Si no coinciden, el mensaje se ha modificado.

Además, las contraseñas suelen tener un hash cuando se almacenan. Cuando un usuario ingresa su contraseña, la computadora calcula el valor hash y lo compara con el valor hash almacenado. De esta manera, la computadora no almacena las contraseñas en texto plano (¡por lo que algún hacker entrometido no puede robarlas!)

Si alguien puede robar el archivo de contraseña, los datos son inútiles porque la función no se puede revertir (aunque hay formas, como las tablas de arco iris, de averiguar qué texto sin formato crea el hash conocido).

¿Cuál es el problema con los hash?

Si un hash puede tomar datos de cualquier longitud o contenido, existen posibilidades ilimitadas para los datos que pueden ser hash.

Dado que un hash convierte este texto en un contenido de longitud fija (por ejemplo, 32 caracteres), hay un número finito de combinaciones para un hash. Es un número muy grande de posibilidades, pero no infinito.

Finalmente, dos conjuntos de datos diferentes producirán el mismo valor hash. A esto se le llama colisión.

Si tiene un hash y está tratando de revisar cada valor de texto sin formato posible para encontrar el texto sin formato que coincida con su hash, será un proceso muy largo y muy difícil.

Sin embargo, ¿qué pasa si no le importa qué dos hashes chocan?

A esto se le llama el "problema del cumpleaños" en matemáticas. En una clase de 23 estudiantes, la probabilidad de que alguien tenga un cumpleaños en un día específico es de alrededor del 7%, pero la probabilidad de que dos personas compartan el mismo cumpleaños es de alrededor del 50%.

El mismo tipo de análisis se puede aplicar a las funciones hash para encontrar dos hash que coincidan (en lugar de un hash específico que coincida con el otro).

Para evitar esto, puede utilizar funciones hash más largas como SHA3, donde la posibilidad de colisiones es menor.

Puede intentar generar sus propias funciones hash para SHA3 aquí y MD5 aquí.  

Puede intentar utilizar hashes de fuerza bruta, pero lleva mucho tiempo. La forma más rápida de hacerlo es utilizar tablas de arco iris precalculadas (que son similares a los ataques de diccionario).

Parece muy fácil ser pirateado. ¿Debería Preocuparme?

Lo más importante que debe recordar sobre la piratería es que nadie quiere hacer más trabajo del que tiene que hacer. Por ejemplo, los hashes de fuerza bruta pueden consumir mucho tiempo y resultar difíciles. Si hay una manera más fácil de obtener su contraseña, probablemente sea lo primero que intente un actor infame.

Eso significa que habilitar las mejores prácticas básicas de seguridad cibernética es probablemente la forma más fácil de evitar ser pirateado. De hecho, Microsoft informó recientemente que solo habilitar 2FA terminará bloqueando el 99,9% de los ataques automatizados.

Lectura adicional:

Herramientas populares para descifrar contraseñas