Comparte en:

Contraseñas para todo

Las personas usan contraseñas para proteger prácticamente todo en línea: desde correos electrónicos, cuentas bancarias, hasta cuentas de intercambio de cifrado.

Si bien muchos sitios ahora ofrecen el uso de autenticación de dos factores (‘2FA’), esto a menudo no se publicita ni se aplica, y una gran cantidad de sitios todavía no ofrecen 2FA en absoluto.

Las contraseñas proporcionadas son, por lo tanto, críticas para proteger la identidad y el dinero de la población.

Naturalmente, el valor almacenado detrás de las contraseñas ha motivado que se desarrollen muchos ataques contra ellas.

Hay una gran cantidad de trabajos de investigación que puedes leer sobre algoritmos complejos de descifrado de contraseñas, que utilizan intrincadas técnicas de probabilidad y aprendizaje automático, y pueden descifrar más del 90% de las contraseñas.

Si bien es aterrador lo buenos que son estos algoritmos, no se sienten como una amenaza muy realista contra la población en general: ¿cuántas personas realmente saben cómo llevar a cabo estos ataques? ¿Por qué iban a atacarme? Por lo tanto, decidí echar un vistazo a un ataque mucho más realista: un atacante que sabe cómo crear una instancia de AWS (u otra instancia de la nube) y puede ejecutar algún software de código abierto en él.

Breve resumen: almacenamiento de contraseñas

Al iniciar sesión en una aplicación protegida por contraseña, la secuencia de eventos que parece ocurrir es la siguiente:

  1. El usuario ingresa una contraseña (que se envía para su aprobación).
  2. La contraseña ingresada se compara con la contraseña registrada.
  3. Acceso otorgado si estos coinciden.

Sin embargo, enviar y almacenar contraseñas como esta es increíblemente inseguro. Para una mayor seguridad, muchos sistemas (aunque lamentablemente no todos) almacenan realmente el ‘ hash’ de las contraseñas de los usuarios en su base de datos, y no las contraseñas mismas.

Puedes pensar en el hash como una mezcolanza irreversible de la contraseña; Si un atacante descubre el hash de una contraseña, no puede revertir el proceso para descubrir la contraseña.

Cuando un usuario ingresa su contraseña en un sistema como este, la secuencia real de eventos es la siguiente:

  1. El usuario ingresa la contraseña.
  2. El hash (contraseña) se calcula localmente y el hash se envía.
  3. El hash se compara con el hash registrado.
  4. El acceso es otorgado si estos coinciden.

 

Breve resumen II: fuerza bruta de Hashes

En un sistema que utiliza hashing, si un atacante logra obtener la base de datos de contraseñas, aún no puede ver la contraseña de un usuario. Los ataques contra tales sistemas no pueden revertir un hash para encontrar la contraseña correspondiente y, por lo tanto, hacen lo siguiente:

  1. Adivinar una contraseña.
  2. Calcular el hash de esta suposición.
  3. Comparar esto con el verdadero hash.
  4. Repetir los pasos 1–3 hasta encontrar una coincidencia.

Esto suena bastante lento, sin embargo, con una máquina que puede adivinar miles de contraseñas en paralelo, puedes imaginar que las cosas comienzan a acelerarse.

El ataque

Software

El software que utilicé se llama Hashcat, que es una herramienta avanzada de recuperación de contraseñas, y es conocido como el  descifrador de contraseñas más rápido del mundo”. Hashcat es de código abierto, tiene fuentes y binarios descargables desde su sitio web, y tiene una extensa guía wiki  sobre la herramienta. Es seguro decir que no tienes que ser un especialista para usarla.

Hardware

Ejecuté Hashcat en una Nvidia Tesla K80, una GPU con 4992 núcleos que puedes alquilar en AWS por $0,90 por hora (P2.xlarge). Comencé observando las capacidades de hash del K80, solo para ver cómo funciona en comparación con una GPU para computadora portátil incorporada estándar.

La K80 resultó 16 veces más rápida que una tarjeta gráfica Intel promedio. La K80 puede calcular aproximadamente 800 millones de hashes SHA-256 por segundo … eso es casi 3 billones por hora.

Las contraseñas

Como te expliqué al inicio, las contraseñas en las que ejecuté mi ataque fueron filtradas por un atacante en línea. Se filtraron más de 14 millones de contraseñas en el ataque, todo lo cual fue creado por usuarios del mundo real.

No proporcionaré un enlace a las contraseñas; no es necesario compartirlas innecesariamente; sin embargo, las encontré fácilmente con una búsqueda rápida en Google.

La lógica de mi ataque

Si bien Hashcat te permite realizar ataques simples de fuerza bruta (donde pruebas todas las contraseñas posibles de una longitud específica), también tienen comandos para ataques ligeramente más complejos. Es bien sabido que la mayoría de las personas basan su contraseña, en una palabra, en varias formas:

  • Solo una palabra (potencialmente con diferentes mayúsculas) – Password
  • Una palabra seguida de algunos números / símbolos: monkey! cafe12
  • Una palabra aplicando “leet speak” – p4ssw0rd o f4c3b00k
  • Múltiples palabras unidas – isthissecure

Y qué coincidencia … si puedes proporcionar una lista de palabras en un archivo, Hashcat tiene diferentes modos integrados, que puede adivinar:

  • Cada palabra
  • Palabra con cada posible número / símbolo adjunto
  • Cada palabra con la (s) regla (s) especificada (s) aplicada (es decir, ‘reemplazar cada o con un 0’)
  • Combinación de palabras juntas.

Así que descargué un archivo de diccionario que contenía millones de palabras en inglés para usar en mi ataque.

A partir de ahí, puedes obtener algo un poco más genérico, especificando ‘opciones’ que Hashcat debería probar.

Esto significa que en lugar de decirle a Hashcat que pruebe ‘todas las contraseñas de longitud 8’, que son 7 billones de combinaciones diferentes, puede probar cada contraseña que sea ‘6 letras minúsculas seguidas de 2 números’.

Entonces, ¿qué tan bien funcionó el ataque?

Para ser honesto … fue mucho, mucho más exitoso de lo que posiblemente había imaginado. Realmente aterradoramente exitoso …

  • 2 horas: el 48% de las contraseñas fueron descifradas.
  • 8 horas: casi el 70% fueron descifradas.
  • 20 horas: más del 80% habían sido descifradas.

Resumiendo

20 horas. $0.90 por hora. Eso es solo $18. 80 por 14 millones de contraseñas descifradas.

¡Impresionante!

Eso asusta. Realmente aterrador. Las personas necesitan hacer sus contraseñas más seguras. Reemplazar ‘o’ con ‘0’ y ‘e’ con ‘3’ no asegura tu contraseña.

 Agregar números y símbolos al final de una palabra tampoco. Es muy predecible

No soy un profesional de seguridad: no puedo darte reglas que puedas seguir para hacer que las contraseñas sean inaccesibles.

Fueron las personas que siguieron reglas predecibles las que hicieron que estas contraseñas fueran tan descifrables. Se impredecible o mejor aún, usa un administrador de contraseñas como LastPass o 1Password para crear contraseñas difíciles de descifrar.




0 Comments

Deja un comentario