Técnicas de descifrado de contraseñas

¿Cómo pueden los ciberdelincuentes robar sus contraseñas?

1. ¿Cómo roban tus contraseñas?

¿Cómo pueden los ciberdelincuentes robar sus contraseñas?
Hay diferentes formas, pero en la mayoría de los casos actúan por error humano. Señalaremos aquí las dos técnicas que se utilizan con mayor frecuencia para obtener, con el mínimo esfuerzo, una contraseña que no está adecuadamente protegida.

» Ingeniería social: a través de correos electrónicos o mensajes de phishing se convence al usuario para que comunique su propia contraseña.
» Relleno de credenciales: se piratea una base de datos de servicios que contiene una gran cantidad de contraseñas de usuarios y las contraseñas se prueban en otros sitios web. Es famoso el caso de LinkedIn: se robaron alrededor de 164 millones de credenciales (esto sucedió en 2012, pero las contraseñas se pusieron a la venta en 2016), entre ellas también estaba la de Mark Zuckerberg, que usó la misma contraseña para LinkedIn (que fue “dadada”) también para sus cuentas de Twitter y Pinterest.

De hecho, la técnica utilizada es el relleno de credenciales, una práctica que explota la enorme cantidad de filtraciones de datos que se han producido a lo largo de los años y que han generado muchas bases de datos de credenciales robadas, fáciles de encontrar en la dark web. Esta mina de información es utilizada por los ciberdelincuentes para atacar otros servicios web donde los usuarios han reutilizado las mismas contraseñas.

Y todo esto se lleva a cabo de forma totalmente automatizada, utilizando un software como SHARD (que es de código abierto y está disponible en GitHub).
De esta forma, es posible probar las mismas combinaciones de nombre de usuario y contraseña en sitios web y servicios que aún no han sido pirateados. Son los denominados ataques de “baja intensidad”, que no emiten ningún sonido, por lo que no generan ningún tipo de alarma en el sistema atacado (porque no son repetitivos, sino ataques de “fuerza bruta”).
Pero, dado que la terrible costumbre de usar la misma contraseña en diferentes servicios está tan extendida (como se recordó anteriormente para Zuckerberg y no solo para él…), este ataque tiene muchas posibilidades de éxito.

No debería ser necesario enfatizar nuevamente cómo hoy en día se ha vuelto importante proteger las contraseñas de uno: a estas alturas, debería considerarse una norma elemental de «higiene cibernética» – para todos los usuarios de ordenador y de la web.
Las contraseñas son las «llaves» de nuestra vida digital: según el Informe de investigación de violación de datos de Verizon 2017 (VDBIR 10.ª edición), «el 81 % de las violaciones de cuentas se realizan a través de contraseñas robadas y/o débiles».
El problema de mantener seguras las credenciales se está volviendo bastante complicado: es bien sabido que cada usuario debe administrar alrededor de 100 contraseñas. Y si todos deben ser diferentes, esto no puede hacerse solo a través de reglas mnemotécnicas.
Aquí es donde entran en juego los administradores de contraseñas, por lo tanto, las aplicaciones que tienen como objetivo guardar todas nuestras contraseñas de forma segura y, obviamente, ¡encriptada!


>> FlashStart lo protege de una amplia gama de amenazas, incluido el malware y los intentos de phishing → Comience su prueba gratuita ahora


2. Hash e Password

Examinemos ahora cómo se administran las contraseñas, con el objetivo de comprender la forma en que funcionan las técnicas de descifrado de contraseñas.
Para ello, es importante saber qué son los Hash y cómo se utilizan para gestionar las contraseñas.

HASH son algoritmos de cifrado que convierten un dato arbitrariamente largo (mensaje) en una cadena binaria (huella digital) de longitud fija (longitud que varía según el algoritmo utilizado). Luego, la cadena binaria se convierte y se representa en hexadecimal (por lo tanto, su longitud se reduce cuatro veces).
La característica de Hash es la de ser unidireccional, es decir, irreversible: a partir del hash no es posible volver al valor inicial.
Esta es una diferencia sustancial en comparación con los algoritmos de cifrado (AES, RSA, etc.), que en cambio son reversibles si conoce la clave (contraseña).

Los algoritmos Hash más utilizados son:

» MD5 (“Message Digest” – 1991): genera una huella digital de 128 bits (32 símbolos alfanuméricos hexadecimales). Desarrollado por Ronald Rivest, ya no se considera seguro.
» SHA-1 (“Secure Hash Algorithm 1” – 1995): genera una huella digital de 160 bits (40 hexadecimales). Ya no se considera seguro, después de que Google mostró la posibilidad de colisión.
» SHA-2 (“Secure Hash Algorithm 2” – 2001): es una variante más segura de SHA-1, con mayores dimensiones de hash, desde 256 (64 hexadecimales) hasta 512 bits (128 hexadecimales).
» SHA-3: ha sido definido por el NIST a través del FIPS PUB 202 (agosto de 2015) y está destinado a convertirse en el nuevo estándar.

Las otras características peculiares que debe tener el hachís son:

» Coherencia: debe generar un resultado unívoco. Por lo tanto, la entrada A siempre producirá el hash B, que representa la huella digital de A.
» Aleatoriedad: debe ser imposible de interpretar. A partir del hash, es imposible entender cuál es el mensaje original, solo puede estar seguro de que, si el hash es el mismo, el original también debe ser el mismo. Esta función es útil cuando haces el “checksum” de un archivo: si el archivo que se transfiere o copia mantiene el mismo hash (antes y después), significa que no ha sido alterado o corrompido.
» Unicidad: la probabilidad de que dos mensajes diferentes generen el mismo hash debe ser cero. Esta característica se define como “resistencia a las colisiones”.

En términos de cifrado, se produce una colisión cuando un algoritmo hash produce el mismo hash a partir de dos entradas diferentes. Pero dado que todos los algoritmos hash pueden generar un número finito de resultados, la resistencia a la colisión es directamente proporcional a su complejidad.

Por ejemplo, MD5 siempre produce una cadena de 128 bits. Por lo tanto, el hash MD5 posible es 2128, un valor enorme, pero sigue siendo un número finito.

Para aumentar la resistencia a las colisiones, ya que la potencia de cálculo también ha aumentado, es necesario utilizar algoritmos de hashing más potentes, por lo tanto, con un número de bits más alto: SHA 2 genera una cadena de 256 o 512 bits; por lo tanto, las combinaciones posibles son respectivamente 2256 y 2512 (que corresponde a 1,3*10154), números que son exponencialmente mucho más grandes que los generados por MD5 y SHA-1.

Por qué es útil el hash: por sus peculiaridades, el hash se utiliza para muchos fines.
Uno de los más importantes está vinculado a la autenticación y seguridad de las contraseñas.

Hoy en día, en todos los sitios web «serios» las contraseñas de los usuarios se guardan en la base de datos como hash y no como símbolos simples. Esta es la razón por la que, en caso de olvido de la contraseña, la web no podrá devolvernos la contraseña (porque no la tiene), pero nos enviará un enlace para configurar una nueva.
Desafortunadamente, algunos sitios web aún guardan las contraseñas en símbolos simples, pero son cada vez menos frecuentes.

Por lo tanto, cuando te registras en un sitio web, calcula el hash de las contraseñas que configuraste y guarda el hash en su base de datos.
Durante el próximo inicio de sesión, la contraseña que ingresamos se convertirá en el hash (utilizando uno de los algoritmos disponibles) y se comparará con la presente en la base de datos.
Si los dos hashes coinciden, se permite el inicio de sesión; de lo contrario, significa que la contraseña ingresada es incorrecta.

La ventaja de usar has es clara: si un atacante logra bloquear la base de datos de contraseñas, encontrará solo el hash y no las contraseñas en símbolos simples. Dado que los hashes no son reversibles, debería ser imposible rastrear las contraseñas.

Debería ser imposible… pero en realidad no es completamente imposible. Con el hashing de contraseñas ciertamente hemos hecho más difícil el trabajo del atacante, pero con las herramientas que mostraremos ahora, de todos modos, podría obtener nuestra contraseña.

3. Tipos de ataques a contraseñas mediante descifrado de contraseñas

Cuando el atacante no logra robar la contraseña gracias a un error humano, como explicamos en la introducción, puede explotar técnicas más sofisticadas, como el “descifrado de contraseñas”.
Descifrar una contraseña es un procedimiento complejo, requiere conocimientos y herramientas de TI adecuados, como computadoras potentes y software dedicado. Pero en algunos casos puede ser efectivo.

Se puede realizar de dos formas diferentes:

» Ataque ONLINE: obviamente es lento e ineficiente, ya que requiere la respuesta en línea del sitio web “cuestionado”. Además, es bastante frecuente que un sitio web imponga un límite en la cantidad de intentos que un inicio de sesión puede salir mal. Por tanto, puede ser útil en ataques de baja intensidad, como el mencionado “credential stuffing”. Se utiliza también en ataques RDP (Remote Desktop Protocol): en muchos casos, de hecho, quienes utilizan RDP no se preocupan por limitar el número de intentos de acceso y establecer contraseñas inadecuadas. Para el atacante, poder acceder al puerto RDP es solo cuestión de tiempo. Y con frecuencia, este acceso tiene como objetivo introducir ransomware, que bloquea el sistema pirateado.

» Ataque OFFLINE: este es el verdadero ataque de descifrado de contraseñas.

Para que tenga lugar, el atacante ya debe haber podido obtener acceso a la base de datos de hash para las contraseñas. Esto se puede lograr de varias maneras:

» Comprometer el sistema: en los sistemas UNIX modernos, las contraseñas se memorizan de forma encriptada en el archivo/shadow/etc, al que solo puede acceder quien tiene privilegios administrativos (permisos de root).
» Comprometer la base de datos de una aplicación.
» Usando la herramienta Mimikatz: es una herramienta diseñada para recuperar todas las contraseñas administradas por Windows. La herramienta fue creada por Benjamin Delpy cuando trabajaba para una agencia gubernamental francesa y está disponible como software de código abierto en GitHub.
» Hackear la red WiFi.

Una vez que obtiene el hash de la contraseña, el atacante tendrá todo el tiempo que necesite para tratar de rastrear el hash hasta la contraseña, ya que el descifrado de la contraseña se convierte en un proceso fuera de línea, que no requiere conexión a la red.

Por supuesto, tendrá que hacerlo por ensayo y error, ya que el hash, como se explicó anteriormente, no es reversible.
Una primera forma de hacerlo es creando “Rainbow Tables”: estas son tablas donde se insertan todas las entradas posibles para calcular el hash respectivo. Fueron inventados por Martin Hellman, el creador (junto con Whitfield Diffie) del algoritmo Diffie-Hellman para intercambiar claves, lo que ha permitido el desarrollo de la encriptación en una perspectiva pública.

Las tablas Rainbow son archivos de enormes dimensiones, también superiores a los 100 GB, que se pueden encontrar en la web.
Para contrastar las tablas arcoíris y dificultar su uso, es una buena costumbre aumentar la longitud de la contraseña: de esta forma, las dimensiones de las tablas arcoíris necesarias también tendrán que aumentar exponencialmente.

Otra contramedida utilizada hoy en día es la llamada sal: cuando un usuario establece una contraseña, el sistema crea un valor casual adicional, la sal. Este valor se suma a la contraseña como un hash y, de esta forma, produce otro valor, diferente al generado por la contraseña.

Esta medida adicional es efectiva exactamente contra las mesas arcoíris, pero podría no ser suficiente para defendernos de otro tipo de ataques, como “fuerza bruta” y “ataques de diccionario”.


>> FlashStart verifica todo su tráfico de Internet y evita que acceda a sitios web maliciosos y peligrosos → Consulta ahora nuestra oferta 


4. Técnicas de descifrado de contraseñas

4.1 Fuerza bruta

Este es el ataque estándar realizado fuera de línea, sin necesidad de mantener una conexión con el sistema de la víctima, con la condición de que ya se haya obtenido la base de datos de hash de contraseñas (con los procedimientos descritos anteriormente). Consiste en probar todas las contraseñas posibles, una tras otra, comenzando por las combinaciones más sencillas o plausibles, y luego ir creciendo hasta la longitud máxima establecida.

Para llevar a cabo estos ataques se utilizan softwares de cracking de contraseñas, que son fáciles de encontrar online y que automatizan el ataque.
Los más populares son: John the Ripper y Hashcat. También hay varios otros, incluidos Elzapop, Cain & Abel, etc.
Además, existen servicios gratuitos de craqueo en línea (¡todo se puede encontrar en la web!), como crackstation.net.

Aunque se trata de un ataque rudimentario, ya que opera por “fuerza bruta”, puede ser efectivo gracias a la creciente potencia de los ordenadores actuales: hoy, al explotar la potencia computacional de las Unidades de Procesamiento Gráfico (GPU) dispuestas de forma paralela, es posible realizar, por un costo razonable, ordenador que puedan realizar hasta 100 GH/s, por lo tanto, 100 mil millones de hash por segundo.

En realidad, se puede afirmar que el ataque de fuerza bruta tiene un éxito garantizado, con la condición de que tenga un marco de tiempo ilimitado.

Pero como el tiempo no es -en la práctica- un aspecto despreciable (a nadie le importa tardar años o siglos en descifrar un sistema…), veamos cuáles son las variables que afectan el tiempo que necesita el ataque para tener éxito:

» longitud de la contraseña;
» complejidad de la contraseña y tipo de símbolos alfanuméricos utilizados.

Un ejemplo aclarará estos aspectos:

» una contraseña de 8 caracteres compuesta únicamente por números tendrá un número de combinaciones igual a 108=100.000.000. Con una potencia de análisis de 100 GH/s se descubrirá en mucho menos de un segundo.
» si la contraseña, en cambio, tiene 14 caracteres y utiliza todos los tipos de caracteres posibles en el teclado (es decir, números, minúsculas y mayúsculas, caracteres especiales, en total 95), el número de combinaciones posibles será 9514=4,8* 1027. Considerando 100 GH/s, serán necesarios alrededor de 1.546 millones de años. Por lo tanto, la complejidad de la contraseña hace inviable un ataque de fuerza bruta.

Esta es la razón por la que se inventó el concepto de Entropía, que nos da una medida sobre la seguridad de la contraseña. Lo discutiremos más tarde.

4.2 Ataque de “diccionario”

Como se muestra arriba, los ataques de fuerza bruta son altamente ineficientes. Es por esto que los atacantes hacen uso de métodos más efectivos e inteligentes que, aprovechando los malos hábitos de los usuarios, logran restringir el campo de búsqueda.

Uno de los métodos utilizados es el ataque de «diccionario»: dado que las personas usan palabras significativas para sus contraseñas, estas son las primeras que intentarán los atacantes. El software de descifrado de contraseñas carga uno o más archivos de diccionario, que los buscará cuando busque la contraseña.

Estos diccionarios están disponibles en la web: el diccionario de lengua italiana cuenta con unas 300.000 palabras y es un archivo de texto de unos MB. Además, la lista del millón de palabras más usadas en el mundo es un archivo de unos 8 MB. Por supuesto, hay disponibles diccionarios en varios idiomas, que se pueden descargar y utilizar.
Esta es una forma mucho más rápida en comparación con la fuerza bruta (menos intentos, pero más específicos) y le permite descubrir fácilmente las contraseñas más débiles.

4.3 Ataque “con reglas”

Se basa en el hecho de que las personas tienden a reutilizar las mismas contraseñas, modificando simplemente algunos caracteres, con la ilusión de fortalecerlos y al mismo tiempo facilitar su recuerdo. Son las llamadas “modificaciones obvias de contraseña”.

Es bien sabido, por ejemplo, que la palabra “contraseña” suele modificarse en:
P@ssword, PASSWORD, passw0rd, P@$$w0rd, etc.

El software de descifrado de contraseñas ya implementa estos algoritmos de sustitución, lo que hace que el ataque de diccionario normal sea más efectivo.
El ataque que utiliza estas reglas es el que, estadísticamente, tiene la mayor efectividad en términos de tiempo/resultado.

4.4 Ataque “Patrón (máscara)”

En este caso, nos enfocamos solo en patrones reales, que sabemos que son los que la gente realmente tiende a usar.
Cuando se requiere una contraseña que incluya al menos una letra mayúscula, un número y un símbolo especial, el patrón que, estadísticamente, más se utiliza es: mayúscula al principio, números y símbolos especiales al final.
De esta forma, podemos limitar el número de intentos, centrando el ataque de fuerza bruta en las contraseñas que estadísticamente son más probables.

4.5 Técnicas combinadas de descifrado de contraseñas

Para aumentar la eficiencia del ataque de descifrado de contraseñas, se combinan las diversas técnicas mencionadas anteriormente. De esta forma, el atacante aumenta mucho sus posibilidades de descubrir la contraseña a partir de su hash.

5. Entropía de contraseña

Concluimos este artículo ilustrando el concepto de ENTROPÍA, utilizado en el cifrado para proporcionar una medida matemática de la complejidad de una contraseña. Una contraseña con una entropía más alta es más difícil de descubrir.

La noción de “Entropía” fue introducida en 1948 por Claude Shannon, ingeniero y matemático estadounidense, definido como el “padre de la teoría de la información”. En 1948 publicó un ensayo titulado “Una teoría matemática de la comunicación”, un ensayo científico donde sentó las bases teóricas para el estudio de los sistemas de codificación y transmisión de información. Fue en esta investigación que Shannon eligió el bit como unidad elemental para medir la información.

Y, de hecho, el bit se utiliza como unidad de medida de la entropía de una contraseña. Veamos a qué nos referimos: si la contraseña se elige con la misma probabilidad para cada símbolo, hay NL contraseñas posibles (donde N = número de símbolos posibles; L = longitud de la contraseña).
Por lo tanto, la entropía S de una contraseña se ha definido como:
S=log2(NL) donde log2= logaritmo en base 2.
Para un nivel de seguridad correcto, la contraseña debe tener una entropía de al menos 64 bits.
Más de 128 bits ya no es necesario aumentar la seguridad de la contraseña, ya que el aumento adicional de la seguridad sería inútil.

Veamos algunos ejemplos:

» Contraseña de 8 caracteres (solo letras + números): S=log2(628)=47.63 bit → Inadecuada
» Contraseña de 12 caracteres (letras + números + símbolos especiales): S=log2(9512)=78.838 bit → Suficiente
» Contraseña de 20 caracteres (letras + números + símbolos especiales): S=log2(9520)=131.397 bit → Adecuado

Esto nos permite concluir que una contraseña de 20 caracteres y que utiliza todo tipo de caracteres (números, minúsculas y mayúsculas, símbolos especiales) es ampliamente suficiente para otorgar un alto nivel de seguridad.


>> Puede instalar FlashStart fácilmente en todo tipo de enrutadores y puntos finales y, con solo unos pocos pasos, disfrutar de una navegación segura → Comience su prueba gratuita  ahora


6. ¿Cómo podemos defendernos?

Para concluir, hemos visto cómo las técnicas de descifrado de contraseñas descritas aquí subordinan su probabilidad de éxito a los errores de los usuarios.
Además de los “malos hábitos” ya descritos, hay un factor que puede hacer que el descifrado de contraseñas sea casi ineficiente: crear una contraseña larga, hecha de una combinación totalmente casal de letras, números y símbolos especiales.

6.1 ¿Qué longitud?

Como destacamos, considerando la entropía y la potencia computacional disponible con los ordenadores actuales (esta consideración perderá su valor cuando los ordenadores cuánticos estén disponibles), es una buena medida de seguridad establecer una contraseña que tenga al menos 12 caracteres y hasta un máximo de 20 caracteres (¡no hace falta ir más allá!) y que utiliza todo tipo de caracteres (números, minúsculas y mayúsculas, símbolos especiales).

¡Obviamente, esta contraseña es segura siempre y cuando no esté escrita en un post-it pegado al teclado o a la pantalla de ordenador!
Y esto demuestra una vez más que:

“El factor humano es verdaderamente el eslabón más débil de la seguridad”
(“El arte del engaño”, Kevin Mitnick – 2002)

7. El autor

Giorgio Sbaraglia, ingeniero, es consultor y formador en temas de ciberseguridad y privacidad.

Imparte cursos de formación sobre estos temas para numerosas empresas italianas importantes, incluidas ABIFormazione y la 24Ore Business School.
Es el coordinador científico del Máster “Ciberseguridad y Protección de Datos” de la escuela de negocios 24Ore.
Es miembro del Comité Científico CLUSIT (Asociación Italiana de Ciberseguridad) y Innovation Manager certificado por RINA
Tiene puestos de DPO (Delegado de Protección de Datos) en empresas y Colegios Profesionales.

Es autor de los siguientes libros:
»  GDPR kit di sopravvivenza” – “Kit de supervivencia GDPR” (Editado por goWare),
» Cybersecurity kit di sopravvivenza. Il web è un luogo pericoloso. Dobbiamo difenderci!” – “Kit de supervivencia de ciberseguridad. La web es un lugar peligroso. ¡Debemos defendernos!” (Editado por goWare),
» iPhone. Come usarlo al meglio. Scopriamo insieme tutte le funzioni e le app migliori” – “iPhone Cómo utilizarlo en todo su potencial. Descubramos juntos todas las funciones y las mejores aplicaciones” (Editado por goWare).

Colabora con CYBERSECURITY360 una revista online especializada del grupo Digital360 centrada en la Ciberseguridad.

También escribe para la revista ICT Security Magazine , para AGENDA DIGITALE y para la revista CLASS.


En cualquier Router y Firewall puede activar la protección FlashStart® Cloud para asegurar dispositivos de escritorio y móviles y dispositivos IdC en las redes locales.

Artículos relacionados