Probablemente hayas oído hablar de descifrar contraseñas en películas y programas de televisión, pero mucha gente no sabe lo que realmente implica el proceso. En este artículo, profundizaremos y cubriremos todas las diferentes formas en que se pueden descifrar las contraseñas, algunos ataques similares que resultan en el robo de contraseñas, cómo las contraseñas robadas pueden causar daños y las medidas de protección que tanto los usuarios como los desarrolladores pueden adoptar en para mantener sus contraseñas seguras.
El descifrado de contraseñas es una de las herramientas a las que recurren los piratas informáticos cuando no pueden acceder a una cuenta por otros medios. Descubre cómo lo hacen.
Indice
¿Para qué sirven las contraseñas?
Puede parecer una pregunta obvia, pero es posible que nunca hayas pensado en el papel que realmente juegan las contraseñas en tu seguridad general. En resumen, proporcionan autenticación. Son esencialmente secretos que solo las personas autorizadas deben saber. Los controles de seguridad asumen que si conoces el secreto, entonces estás autorizado para ingresar.
Junto con los nombres de usuario, entregar una contraseña es básicamente una forma abreviada de decir: “Sí, soy yo. Previamente acordamos que tengo permiso para acceder a este conjunto específico de recursos y datos, así que déjenme entrar”. Si bien esto es mucho más conveniente que mostrarle a alguien su identificación cada vez que deseas iniciar sesión en tu correo electrónico, puede causar problemas. ¿Qué pasa si alguien más obtiene tu contraseña?
Si los secretos de tu vida en línea están protegidos por una fortaleza de mecanismos de seguridad, puedes ver los controles de contraseña como el guardián. El guardián deja entrar a cualquiera siempre que sepa la contraseña. Las torretas, las paredes, el foso, el puente levadizo: solo pueden protegerte si el guardián y la contraseña mantienen alejados a los malos.
Si un atacante puede descifrar la contraseña y se la dice al guardián, el guardián lo dejará entrar. Todos los controles de seguridad de repente pierden sentido y el atacante obtendrá acceso a todo lo que tu puedas acceder. Control de la cuenta, información privada, mensajes, datos financieros, incluso pueden cambiar la contraseña ellos mismos. Todo esto puede caer fácilmente en manos de un atacante si puede descifrar la contraseña.
La seguridad de tu reino en línea está ligada bajo el supuesto de que los piratas informáticos no podrán descifrar tus contraseñas. Si esta suposición no se sostiene, todo se convierte en una nube de humo.
Antes de adentrarnos demasiado, queremos que te asegures de tener contraseñas seguras y únicas para cada una de tus cuentas . Si aún no tienes contraseñas largas y complejas para todos tus inicios de sesión importantes, obtén un administrador de contraseñas y configura las contraseñas ahora. Si bien aprender sobre fuerza bruta, ataques de diccionario y todas las demás técnicas de craqueo es importante, puedes hacerlo después de dar los primeros pasos para aumentar tu seguridad en línea.
¿Por qué se descifran las contraseñas?
Como probablemente hayas adivinado, el descifrado de contraseñas se realiza para obtener acceso a una cuenta. Uno de los motivos más comunes es si un atacante quiere obtener acceso a recursos o información que no está autorizado a tocar. Este será el enfoque principal de nuestro artículo, y discutiremos los posibles resultados de esto en la siguiente sección.
Sin embargo, también hay razones más legítimas para descifrar contraseñas. Un ejemplo es la aplicación de la ley que intenta acceder a los datos de un delincuente que no entrega su contraseña. Si creen que pueden acceder a información que les ayude a resolver un caso o cerrar una organización criminal, puede valer la pena que hagan el esfuerzo de descifrar una contraseña.
Otra razón legítima para el descifrado de contraseñas es cuando los administradores de red o los evaluadores de penetración desean medir la seguridad de las contraseñas en tus sistemas. A veces intentarán descifrar todas las contraseñas utilizadas dentro de la organización. Si pueden descifrar cualquiera de las contraseñas, los atacantes también podrán descifrarlas. Si el administrador o el pen tester tienen éxito, pueden informar al individuo responsable sobre cuán insegura y fácil de romper es su contraseña, y luego darle consejos para crear una contraseña más segura.
El descifrado de contraseñas también puede ser una opción si un usuario olvida su contraseña y la recuperación de contraseña no se realiza correctamente o no está disponible. Sin embargo, debido a que el descifrado de contraseñas puede consumir mucho tiempo y recursos, esto generalmente solo es práctico si el usuario tiene una contraseña débil o si los datos que se han bloqueado son increíblemente valiosos (piensa en las billeteras de Bitcoin). En otras circunstancias, puede ser difícil justificar el esfuerzo que implica el descifrado de contraseñas.
¿Qué puede pasar si un hacker descifra tus contraseñas?
Si un atacante puede descifrar tu contraseña, esto le otorga acceso a todo lo que normalmente puedes acceder. Pueden robar tu información personal, información de seguros, datos de salud, detalles de pago y más. Pueden vender estos detalles en los mercados de la red oscura o usarlos ellos mismos para intensificar su ataque o tratar de obtener recompensas financieras.
Esto puede conducir a cosas como fraude con tarjetas de crédito, fraude de seguros o incluso robo de identidad, lo que puede tener enormes consecuencias a largo plazo y costosas para ti.
Los piratas informáticos pueden apoderarse por completo de tu cuenta y realizar cualquier acción que puedas realizar. Las consecuencias dependerán del tipo de cuentas, pero pueden incluir:
- Suplantación de identidad
- Publicar información privada
- Intentar infectar a tus contactos con malware
- Transferir dinero a sus propias cuentas.
- Borrar tus archivos
- Cifrar tus archivos y buscar un rescate
- Intentar aumentar los privilegios para obtener acceso a otros recursos.
En el caso de cuentas de pago como Netflix, Spotify y VPN, es posible que incluso vendan tu cuenta en la red oscura. Las personas compran estas credenciales para poder acceder a los servicios a un precio mucho más bajo.
Estas posibilidades que hemos discutido están lejos de ser exhaustivas. Como puedes ver, puede ocurrir una enorme cantidad de daño cuando un atacante descifra una contraseña. Por eso es tan importante que los proveedores de servicios configuren de forma segura su infraestructura de contraseñas y que los usuarios solo creen contraseñas seguras.
Alternativas al descifrado de contraseñas
Muchas veces, los piratas informáticos no se molestan en descifrar contraseñas. Descifrar una buena contraseña puede ser un proceso difícil y lento, por lo que a menudo recurren a otras técnicas. Algunas de las opciones más comunes incluyen:
Phishing y otras formas de ingeniería social
¿Sabes qué es más fácil que descifrar una contraseña? Preguntársela a alguien.
Una de las técnicas más comunes para obtener contraseñas es simplemente engañar a la víctima para que se la entregue. Esto es especialmente cierto cuando se trata de personas u organizaciones específicas. En lugar de tratar de entrar por la fuerza bruta, los atacantes pueden simplemente probar la ingeniería social.
Por ejemplo, podrían enviar un correo electrónico de phishing que se vincule a una página de inicio de sesión falsa para el banco del objetivo. Todo lo que tienen que hacer es enviar algo como lo siguiente en un correo electrónico de apariencia oficial:
Querido señor, señora,
Lamentamos informarle que hemos detectado actividad sospechosa y la contraseña de su cuenta bancaria puede verse comprometida. Diríjase a la siguiente URL, ingrese sus datos de inicio de sesión anteriores y luego cambie su contraseña:
www.bancofalso.com/login
Cuando las personas reciben un mensaje como este, a menudo reaccionan sin pensar. Después de todo, es una emergencia y su dinero está en juego. Pueden caer directamente en la trampa del atacante e ir al sitio web falso e ingresar su contraseña, enviándola directamente a las manos del atacante. Una vez que la víctima lo escribe en la página de inicio de sesión falsa, el atacante tiene los detalles de inicio de sesión que necesita para causar todo tipo de caos.
El phishing y otros tipos de ingeniería social facilitan que los atacantes obtengan las contraseñas que desean. En lugar de probar miles de millones de combinaciones, pueden obtener la contraseña en minutos. Todo lo que se necesita es un poco de estafa.
Malware
Otra opción para robar contraseñas es infectar objetivos con malware. Muchas cepas de malware pueden registrar claves, acceder al portapapeles y rastrear paquetes de red, todo lo cual puede enviar contraseñas a un servidor controlado por un atacante. Una vez más, esto puede ser mucho más fácil que la fuerza bruta de una contraseña.
Amenazas internas
Los atacantes también pueden recurrir a los empleados descontentos de una organización objetivo y convencer a estos trabajadores para que les proporcionen sus datos de inicio de sesión. También podrían simplemente sobornar a los empleados para que entreguen sus propias contraseñas, las contraseñas de sus colegas o la base de datos de contraseñas. Estas se conocen como amenazas internas y presentan un tremendo desafío para las organizaciones. Estos empleados claramente necesitan sus datos de inicio de sesión para completar su trabajo, pero si se les puede convencer de que le den sus contraseñas a un atacante, el atacante podrá acceder a todos los recursos que están disponibles para el empleado.
Intercambio de Sim
Cuando una cuenta está protegida por autenticación SMS, es posible que el atacante ni siquiera necesite la contraseña. En su lugar, pueden realizar lo que se conoce como un ataque de intercambio de sim. Básicamente, todo lo que tienen que hacer es llamar a la compañía telefónica y hacerse pasar por ti. Le dicen al operador que están cambiando las tarjetas SIM, le entregan algunos de tus datos personales y luego convencen al operador de que cambie tu número de teléfono anterior a la nueva tarjeta SIM.
Esto significa que el atacante ahora obtendrá todos los mensajes entrantes, incluidos tus mensajes de autenticación de dos factores. Luego, simplemente pueden solicitar que se restablezca la contraseña de una cuenta, interceptar el código de autenticación y luego cambiar la contraseña por la que deseen. Cuando la autenticación por SMS está protegiendo una cuenta, puede ser así de fácil para un atacante tomar el control de ella, todo sin necesitar realmente tu contraseña.
Violaciones de datos
Los piratas informáticos a menudo se dirigen a las empresas en un intento de robar datos valiosos de sus servidores. Entre sus objetivos se encuentran las bases de datos de contraseñas, que pueden otorgarles acceso a todas las cuentas de usuario. En estos días, es relativamente raro que las contraseñas se almacenen como texto sin formato, pero si lo son, hace que la vida de un hacker sea increíblemente fácil. La mayoría de las veces solo se almacenan los hashes de contraseña, que los piratas informáticos aún tienen que descifrar.
Shoulder surfing
La navegación por el hombro y las técnicas relacionadas implican que alguien cercano a ti descubra tu contraseña. Tal vez sea un colega, un familiar, un conocido o alguien que creías que era tu amigo. Es posible que miren por encima de tu hombro mientras ingresas tu contraseña, o si almacenas tus contraseñas de manera insegura, es posible que puedan encontrarlas. Esta es la razón por la que nunca debes guardar tu contraseña en una nota Post-It en tu monitor o en un archivo de fácil acceso en tu computadora. En última instancia, podría llevar a un atacante a robar tu contraseña y acceder a tus cuentas.
¿Cómo descifran los hackers tus contraseñas?
Si ninguna de las opciones anteriores es adecuada, un atacante puede decidir que la mejor opción es ir con alguna forma de descifrado de contraseñas.
Sin embargo, los detalles de cómo lo hacen, las técnicas que emplean, la probabilidad de éxito y el tiempo que puede tomar dependerán de una amplia gama de factores. Discutiremos cada uno de los diferentes tipos de descifrado de contraseñas en detalle más adelante en este artículo.
Primero, repasemos rápidamente algunas de las variables y cómo pueden influir en las rutas que toman los atacantes. Estas variables incluyen:
Información a la que el hacker ya tiene acceso
- ¿Tiene el atacante nombres de usuario y contraseñas coincidentes en texto sin formato? Si es así, pueden ingresar directamente estos detalles de inicio de sesión en el sistema de destino y acceder a las cuentas.
- ¿Tiene el atacante los hashes de contraseña para las cuentas a las que intenta apuntar? Si es así, pueden buscar el hash en una tabla de arco iris o calcular combinaciones de contraseña y hash hasta que encuentren una coincidencia. Si tienen éxito, pueden usar la contraseña para iniciar sesión.
- ¿Tiene el atacante una lista de nombres de usuario pero no contraseñas? Si es así, tendrán que probar contraseñas comunes contra el sistema en un ataque de difusión de contraseñas.
- ¿Tiene el atacante nombres de usuario y contraseñas o hash de contraseñas para las cuentas de un único proveedor de servicios? Si es así, pueden intentar usar estos mismos detalles de inicio de sesión contra otros proveedores de servicios en un ataque de relleno de credenciales.
Mecanismos de seguridad que existen
Si un atacante no tiene los hash de la contraseña, tendrá que probar la contraseña contra los controles de seguridad. Estos pueden incluir:
- Restricciones de inicio de sesión: se puede permitir un número limitado de intentos de inicio de sesión antes de que se bloquee la cuenta. Este bloqueo puede ser por un período determinado o hasta que se dé una verificación adicional.
- CAPTCHA: pueden hacer que sea poco práctico para el atacante automatizar sus intentos o ralentizarlos significativamente.
- Autenticación de dos factores: cuando también se implementa la autenticación de dos factores, la contraseña no será suficiente para que el atacante obtenga acceso. También necesitarán el código de una aplicación, SMS o token para iniciar sesión correctamente.
Si estos controles de seguridad están implementados, pueden limitar al atacante a ataques de rociado de contraseñas.
Objetivo
Las técnicas disponibles para un atacante pueden variar dependiendo de si el atacante se dirige a una persona u organización específica, o si su objetivo principal es obtener recompensas financieras de posibles víctimas:
- El relleno de credenciales solo funcionará contra un individuo si el individuo usa el mismo nombre de usuario y contraseña en varias cuentas.
- El relleno de credenciales solo funcionará en contra de una organización si algunos de sus empleados usan los mismos nombres de usuario y contraseñas en varias cuentas.
- Si no hay objetivos particulares, el relleno de credenciales puede ser efectivo. Los atacantes pueden simplemente revisar la base de datos violada de nombres de usuario y contraseñas, y luego probar cada uno con un montón de otras cuentas comunes. Si el usuario usa los mismos detalles de inicio de sesión en varias cuentas, los atacantes obtendrán una coincidencia y podrán acceder a las otras cuentas. Si el atacante solo tiene hashes de contraseña, esto complica el relleno de credenciales, pero no lo hace imposible.
- El rociado de contraseñas solo funcionará en contra de una organización si algunos de sus empleados usan contraseñas simples o comunes.
- El rociado de contraseñas puede ser efectivo si no hay objetivos particulares. Los atacantes pueden recorrer una lista de nombres de usuario e intentar desbloquear las cuentas con una lista de las contraseñas más comunes. Si bien generalmente estarán limitados por la cantidad de intentos que pueden hacer a la vez, cuando se dirigen a decenas de miles o cientos de miles de usuarios a la vez, aún pueden encontrar coincidencias con el tiempo.
- Cuando los piratas informáticos tienen una base de datos de contraseñas codificadas y no hay objetivos particulares, pueden intentar averiguar las contraseñas de cualquier persona en la base de datos. Si tienen éxito, es posible que puedan acceder a sus cuentas.
Contraseña simple o compleja
- Si la contraseña es simple o de uso común, la difusión de contraseñas puede ser eficaz.
- Cuando el atacante tiene el hash de contraseña y la contraseña es simple y de uso común, es posible que un atacante ya tenga la contraseña en su tabla de arco iris. En ese caso, el atacante puede probar esta contraseña contra los controles de seguridad de la cuenta.
- Si el atacante tiene el hash de la contraseña y la contraseña es complicada o menos común, es posible que el pirata informático deba intentar calcularla por sí mismo. Esto puede consumir mucho tiempo, recursos y no hay garantía de que funcione. Sin embargo, si el atacante puede encontrar una coincidencia, puede probar la contraseña coincidente con los sistemas de seguridad.
Complejidad de la contraseña y facilidad para descifrarla
Es común pensar que la seguridad de una contraseña depende únicamente de su longitud y de si se utilizan caracteres especiales y combinación de mayúsculas y minúsculas. Una contraseña más larga requiere más conjeturas para descifrarla, y los caracteres especiales pueden hacer que la contraseña sea aún más difícil de adivinar. Si bien estos pueden desempeñar funciones importantes, la aleatoriedad de la contraseña también es crucial.
Esto se debe a que el descifrado de contraseñas solo tiende a implicar adivinar todas las combinaciones posibles como último recurso; simplemente es demasiado ineficiente recurrir a ellas al principio. La realidad es que, como humanos, somos criaturas relativamente predecibles y tendemos a usar patrones similares en nuestras contraseñas. Si deseas averiguar una contraseña de la manera más rápida y sencilla posible, tiene sentido centrar tus intentos en estos patrones. Este enfoque se conoce como un ataque de diccionario, que trataremos más a fondo en la sección Crackear contraseñas con ataques de diccionario.
Demostremos este concepto adivinando tu propia contraseña: si tu contraseña usa números, ¿se encuentran exclusivamente al final de la contraseña o reemplazan algunas de las letras como en leetspeak (usando 5 en lugar de S, etc.) ?
Un montón de lectores probablemente estén asintiendo, porque muchos de nosotros seguimos este tipo de patrones predecibles.
Dado que tendemos a operar a lo largo de patrones, los atacantes estarían perdiendo el tiempo si revisaran sistemáticamente todas las combinaciones posibles de contraseñas. Tiene mucho más sentido para ellos revisar primero las contraseñas más comunes y los patrones más probables, y solo revisar sistemáticamente cada combinación si estos intentos fallan.
Esta realidad tiene enormes ramificaciones en la forma en que elegimos nuestras contraseñas y qué tan seguras son en realidad contra los ataques.
¿Tu contraseña es realmente tan aleatoria como crees?
La cuestión es que podemos pensar que algo como Y4nk335w1!!w1n es una contraseña totalmente aleatoria y difícil de adivinar, cuando en realidad no lo es. Por un lado, es una oración en inglés gramaticalmente correcta (Yankees will win), con un montón de sustituciones que en realidad son muy comunes y bien conocidas por los piratas informáticos.
Cuando piensas en todas las posibles combinaciones de caracteres, solo una fracción minúscula se acerca a ser una oración en inglés gramaticalmente correcta. Si un pirata informático elige comenzar sus conjeturas buscando combinaciones que sean correctas gramaticalmente, ya ha reducido sustancialmente su campo de búsqueda, lo que podría acelerar significativamente el tiempo que lleva encontrar la contraseña correcta.
Además del hecho de que esta contraseña es gramaticalmente correcta, si el pirata informático sabe que el objetivo es de Nueva York o un fanático de los Yankees, puede agregar este tipo de detalles en su programa de descifrado de contraseñas para acelerar aún más la búsqueda. Lo hacen a través de listas de palabras.
Aunque Y4nk335w1!!w1n tiene 14 caracteres, no es tan seguro como una contraseña equivalente que se genera aleatoriamente, como HwUzNfKpUnf4e5. El generador de contraseñas de KeePass dice que esta nueva contraseña tiene 76 bits de entropía, que probablemente sea mucho más que la contraseña de los Yankees, lo que hace que sea mucho más improbable que un pirata informático pueda descifrarla.
La conclusión principal es que la fortaleza de una contraseña depende tanto de su longitud como de su aleatoriedad, y que las personas son bastante malas para agregar aleatoriedad a sus contraseñas, lo que facilita mucho el trabajo de un hacker.
Técnicas de descifrado de contraseñas
Ya hemos mencionado brevemente la mayoría de estas técnicas. Ahora es el momento de darle un resumen completo:
Intentando una contraseña conocida contra un sistema de inicio de sesión
Es difícil contar esto como descifrado de contraseñas, pero a veces los piratas informáticos se encuentran con contraseñas de texto sin formato. Si un atacante encuentra un conjunto de credenciales o incluso una base de datos completa de nombre de usuario y contraseña almacenada en texto sin formato, su trabajo es increíblemente fácil.
Todo lo que tienen que hacer es ir a la página de inicio de sesión de la cuenta e intentar iniciar sesión con los detalles que tienen. Si el usuario no ha cambiado su contraseña desde que llegó a manos del hacker, y no hay medidas de autenticación adicionales como 2FA, entonces el hacker tendrá acceso directo a la cuenta. Una vez dentro, pueden hacer con él lo que les plazca. Este es un proceso rápido y simple en comparación con las otras técnicas que discutiremos.
Relleno de credenciales
Si un pirata informático tiene una lista de nombres de usuario y contraseñas en texto sin formato de un solo proveedor de servicios, puede intentar usar esos mismos nombres de usuario y contraseñas en otras cuentas en lo que se conoce como ataques de relleno de credenciales.
Este tipo de ataque se aprovecha del hecho de que las personas suelen utilizar exactamente las mismas contraseñas en varias cuentas. El resultado es que si hay una violación de contraseña en uno de sus proveedores de servicios, los piratas informáticos pueden usar el relleno de credenciales contra todas las otras cuentas de la persona. Por eso es tan importante usar contraseñas únicas para cada una de tus cuentas.
Los ataques de relleno de credenciales son relativamente simples una vez que el pirata informático tiene los nombres de usuario y las contraseñas a mano. Digamos que la brecha vino de Facebook. Todo lo que el hacker tiene que hacer es probar las mismas combinaciones de nombre de usuario y contraseña en Google, cuentas de correo electrónico, Spotify, Netflix, cuentas bancarias, Amazon, otros minoristas en línea y muchos otros lugares comunes donde las personas pueden tener cuentas.
Si la combinación de nombre de usuario y contraseña funciona, significa que la persona usó la misma contraseña en varias cuentas. Una vez que el atacante inicia sesión con éxito, tiene el control total de la cuenta y puede hacer cualquier cosa que el usuario pueda hacer.
Descifrar contraseñas con un hash de contraseña
En muchas situaciones, un pirata informático puede tener acceso al hash de la contraseña, pero no a la contraseña. La mejor práctica general es que las bases de datos almacenen las contraseñas de los usuarios como hashes, en lugar de las contraseñas en sí mismas en texto sin formato. Un hash es simplemente el resultado de una función hash, una función unidireccional que es determinista y no es factible revertir.
Cómo se utilizan los hashes para proteger las contraseñas
Cuando una contraseña pasa por una función hash segura, el valor resultante es esencialmente único, pero no se puede usar para averiguar cuál era la contraseña original.
Esto significa que cuando un usuario se registra para obtener una cuenta e ingresa su contraseña, el sistema puede ejecutar inmediatamente la contraseña a través de una función hash y solo almacenar el valor hash único, y nunca la contraseña en sí.
Con esta configuración, cada vez que un usuario intenta iniciar sesión e ingresa su contraseña, la contraseña se codifica inmediatamente y no se almacena. Luego, el sistema de inicio de sesión toma este hash y lo compara con el hash de contraseña que tiene en su base de datos para ese usuario en particular. Si los dos hashes coinciden, el sistema sabe que se ha ingresado la misma contraseña.
Esto significa que el sistema tiene una forma de verificar que se haya ingresado la contraseña correcta, sin tener que almacenar la contraseña en texto sin formato. Si alguna vez se piratea el sistema y se roba la base de datos de contraseñas, los piratas informáticos no terminan con un montón de contraseñas como texto sin formato. En cambio, terminan con un montón de hash de contraseñas.
Si los atacantes hubieran encontrado las contraseñas en texto sin formato, habrían podido tomar estas contraseñas e iniciar sesión en las cuentas con la misma facilidad que los usuarios. Cuando los atacantes solo tienen acceso a los hashes, deben poder descifrar las contraseñas a partir de los hashes, lo que puede complicar las cosas considerablemente.
Averiguar contraseñas simples a partir de hash de contraseñas
En algunos casos, esto es relativamente fácil. Existe una variedad de software como RainbowCrack u ophcrack, que pueden generar hashes para posibles combinaciones de contraseñas o buscar un hash en tablas precalculadas. Estas tablas se conocen como tablas arcoíris y, por lo general, presentan las contraseñas más comunes junto con sus hashes de contraseña correspondientes. Intentar solo las combinaciones de contraseña y hash de contraseña más comunes y probables se conoce como ataque de diccionario.
Si un atacante tiene un hash de contraseña, todo lo que tiene que hacer es usar el software para compararlo con las tablas de arco iris precalculadas. En caso de ser una contraseña común o simple, es probable que el hacker encuentre un hash coincidente en la base de datos y luego pueda intentar iniciar sesión en el servicio con la contraseña correspondiente.
Si el usuario no ha cambiado su contraseña desde que le robaron el hash y no existen otros controles de seguridad, el atacante podrá acceder a su cuenta con la contraseña que coincida con el hash.
El beneficio de usar hashes de contraseña es que permiten que el hacker descubra la contraseña fuera de línea. Debido a que están tratando de encontrar la contraseña correspondiente en su propia computadora, no están sujetos a ningún bloqueo, CAPTCHA u otras restricciones que puedan estar presentes si están tratando de iniciar sesión contra los controles de seguridad de un sitio web.
Averiguar contraseñas complejas a partir de hash de contraseñas
En los casos en que la contraseña no se encuentra en ninguna de las tablas del arco iris, es probable que se haya utilizado una contraseña más compleja o que la contraseña haya sido salteada. Un atacante puede intentar usar el software para intentar generar nuevas contraseñas y los mismos hash coincidentes.
La probabilidad de éxito dependerá de la complejidad de la contraseña, así como de la cantidad de recursos informáticos que el atacante tenga a su disposición. En muchos casos, será inviable encontrar la contraseña de esta manera, pero todo depende de cuánto esfuerzo esté dispuesto a gastar el atacante.
¿De dónde obtienen los hackers los hash de las contraseñas?
Como mencionamos, las contraseñas nunca deben almacenarse en texto sin formato, porque hace que la vida de los piratas informáticos sea demasiado fácil y deja a los usuarios increíblemente vulnerables. A veces todavía se hace, pero las personas que configuran esos sistemas son terribles en su trabajo.
Por lo tanto, sabemos que las contraseñas deben almacenarse como hash para que cuando un usuario ingrese su contraseña, aún pueda verificarse con el hash en el sistema. El problema es que los hashes aún deben almacenarse y cualquier cosa que se almacene puede ser robada.
Los piratas informáticos pueden obtener los hashes de contraseña del servidor en el que están almacenados de varias maneras. Estos incluyen a través de empleados descontentos, inyecciones de SQL y una variedad de otros ataques. Ya sea que la organización tenga buena o mala seguridad, la posibilidad de que se roben los hash de la contraseña permanece. La única diferencia es cuán fácil será y si realmente vale la pena el esfuerzo para un posible atacante.
Otra fuente de hashes de contraseñas es a través de protocolos de red como WPA2-PSK y NTLM, que envían hashes de contraseñas a través de la red. En muchos casos, los paquetes que contienen estos hash pueden no estar encriptados, por lo que si un atacante está escuchando, puede robar fácilmente el hash de la contraseña.
Opciones si el hacker no tiene el hash
En muchos casos, un pirata informático carecerá de contraseñas de texto sin formato y hash de contraseñas. Sin embargo, todavía hay algunas opciones que pueden seguir:
Crackear contraseñas con fuerza bruta
En el otro extremo del espectro están los ataques de fuerza bruta. Si un atacante no tiene la contraseña o el hash de la contraseña, puede intentar usar la fuerza bruta. No hay nada elegante en los ataques de fuerza bruta. Simplemente implican el uso de todas las combinaciones posibles de contraseñas de forma metódica. La esperanza es que eventualmente el atacante encuentre la contraseña correcta, lo que le otorgará acceso a la cuenta.
Veamos una versión muy simple de un ataque de fuerza bruta. Si tienes un código PIN de 4 dígitos para tu cajero automático, eso significa que hay 10,000 combinaciones posibles separadas, de 0 a 9999. Si un atacante quiere robar algo de tu efectivo y no puede mirar por encima de tu hombro, su mejor apuesta es simplemente probar cada combinación en orden.
0001, 0002, 0003, y así sucesivamente, hasta 9999.
Si intentaran de una manera más desordenada (8726, 9462, 1244, 4625… etc.) podrían terminar poniendo los mismos números varias veces u olvidarse por completo de intentar algunas combinaciones.
Con un intento sistemático como el mencionado anteriormente, matemáticamente hablando, esperaría que el atacante encontrara el código PIN alrededor del intento número 5000, aunque, por supuesto, esto es solo un promedio.
La fuerza bruta es relativamente simple. Es lento y monótono, pero eventualmente te lleva allí, siempre que tengas suficiente tiempo. Con el ejemplo que acabamos de dar, el proceso sería complicado, pero encontrar el código PIN sigue siendo una posibilidad.
Pero, ¿y si hablamos de una contraseña compleja de 40 caracteres con un número astronómico de combinaciones posibles? Incluso si tuviera los recursos para adivinar millones de intentos por segundo, es posible que no encuentre la contraseña durante su vida. Con esto en mente, las contraseñas de fuerza bruta son sin duda una opción viable frente a contraseñas simples, pero no es práctico frente a las complejas.
Cuando analizamos el ejemplo que mencionó anteriormente, es posible que hayas pensado que sería imposible porque los cajeros automáticos tienden a limitar la cantidad de intentos de inicio de sesión que puedes realizar. Esto es ciertamente cierto, por lo que solo estábamos demostrando el concepto, sin decir que es realmente factible en la vida real.
El mismo problema se aplica a muchos otros sistemas de inicio de sesión, lo que puede hacer que la fuerza bruta sea poco práctica en muchos escenarios de la vida real. Te bloqueará después de algunos intentos o te enfrentarás a CAPTCHA regulares que dificultan la automatización de las conjeturas. Estas defensas hacen que la fuerza bruta sea demasiado ineficiente, lo que significa que rara vez se usa en estos contextos.
Vale la pena señalar que si un pirata informático tiene los hashes de contraseña, también puede usar un enfoque de fuerza bruta para probar cada combinación de contraseña y hash en su propio hardware. Esto contrasta con los ataques de diccionario, que son más eficientes.
Ataques de diccionario
Si bien los ataques de fuerza bruta pueden ayudar a encontrar la contraseña con el tiempo, consumen mucho tiempo y energía. La realidad es que la mayoría de las personas no usan contraseñas completamente aleatorias, excepto en los raros casos en que son creadas por un generador de contraseñas. Esto significa que la fuerza bruta terminará intentando un montón de contraseñas que son increíblemente improbables.
En muchos casos, es mucho más rápido lanzar lo que se conoce como ataques de diccionario, que esencialmente pasan por las contraseñas, palabras y patrones más comunes. Es mucho más probable que se utilicen realmente como contraseñas, lo que significa que existe una buena posibilidad de que un ataque de diccionario haga que sea mucho más rápido y menos intensivo en recursos averiguar la contraseña correcta.
Sin embargo, en muchos contextos, nos encontramos con el mismo problema que el anterior, con mecanismos de seguridad como límites de intentos de inicio de sesión y CAPTCHA que nos impiden intentar una secuencia casi infinita de combinaciones posibles.
Al igual que con la fuerza bruta, si un atacante ya tiene hashes de contraseña, puede usar ataques de diccionario para intentar encontrar una contraseña coincidente sin conexión. En muchos casos, esto será mucho más rápido que la fuerza bruta de la contraseña y permite a los atacantes eludir cualquier mecanismo de seguridad que pueda haber. Por esta razón, los ataques de diccionario generalmente se intentan antes de que los atacantes intenten obtener una contraseña por fuerza bruta.
Listas de palabras personalizadas
Así como los ataques de diccionario pueden ser a pasos agigantados más eficientes que los ataques de fuerza bruta, agregar listas de palabras personalizadas puede acelerar las cosas al adaptar el ataque a objetivos específicos. Si conoce el nombre, la dirección, los pasatiempos, el cumpleaños, los detalles familiares y más del objetivo, puede agregar todos estos datos al software e incorporarlos a las combinaciones de contraseña que está intentando. Hay una variedad de herramientas que pueden hacer esto, y un ejemplo es el Perfilador de contraseñas de usuarios comunes (CUPP).
Pulverización de contraseñas
Si un atacante tiene una lista de nombres de usuario pero no tiene hash de contraseñas ni contraseñas de texto sin formato, todavía tiene una opción para intentar descifrar contraseñas. La pulverización de contraseñas implica intentar descifrar las contraseñas de tantas cuentas únicas como sea posible. No tiene una tasa de efectividad particularmente alta, pero es posible lanzar estos ataques a gran escala, lo que puede compensarlo.
Todo lo que un hacker tiene que hacer es probar las contraseñas más comunes contra tantas cuentas como sea posible. Pueden comenzar con intentos como contraseña1 y 123456, y avanzar lentamente hasta contraseñas más complejas.
Lo genial de la pulverización de contraseñas es que implica intentos relativamente poco frecuentes contra cada cuenta. Si un atacante solo intenta dos intentos y luego espera una semana antes de volver a esa cuenta en particular, es menos probable que active los mecanismos de seguridad que lo bloquearían.
Por supuesto, si un atacante solo estuviera interesado en apuntar a cuentas específicas, esta técnica tardaría demasiado en ser una opción viable. Sin embargo, si están haciendo lo mismo contra decenas o cientos de miles de cuentas a la vez, no pasará mucho tiempo hasta que se encuentren con algunas personas que usan contraseñas terriblemente simples. Es simplemente un juego de números y, con el tiempo, la difusión de contraseñas permite a los atacantes acceder a cuentas que están protegidas con contraseñas deficientes.
¿Cómo defenderse contra el descifrado de contraseñas?
Es mejor considerar la protección de contraseñas desde la perspectiva del usuario y del desarrollador. Un usuario puede seguir todas las mejores prácticas, pero estas no hacen nada para mantenerlo seguro si la contraseña se almacena en texto sin formato. Si bien hay muchos pasos que los desarrolladores pueden tomar para minimizar el riesgo de que los usuarios adopten prácticas peligrosas con las contraseñas, no pueden evitar que hagan cosas como usar la misma contraseña en otra cuenta.
Usuarios
Como usuario, puedes tomar muchas medidas para asegurarte de que tus cuentas y tus datos estén mejor protegidos. Una de las primeras prioridades es configurar contraseñas complejas, largas y únicas para cada una de tus cuentas. No reutilices tus contraseñas, porque esto te hace vulnerable al relleno de credenciales.
En realidad es bastante difícil recordar contraseñas verdaderamente complejas, largas y aleatorias. Nuestros cerebros simplemente no están hechos para recordar un revoltijo de caracteres, especialmente cuando consideras que probablemente tengas docenas de contraseñas.
En estos días, la mejor opción es adoptar un administrador de contraseñas como KeePass o BitWarden. Cuando tienes un buen administrador de contraseñas, todo lo que tienes que hacer es recordar una frase de contraseña larga como clave maestra para abrir el administrador de contraseñas, y el administrador de contraseñas puede generar y almacenar todas tus otras contraseñas. El proceso hace que sea simple y fácil de mantener a salvo.
Solo asegúrate de que tu clave maestra sea lo suficientemente compleja, que no olvides tu clave maestra y que tengas copias de seguridad de tu base de datos en varios lugares. Puede ser útil poner tu llave maestra en tu caja fuerte o dejarla en un sobre con alguien en quien confíes.
Una de las mejores tácticas para adoptar una clave maestra segura es juntar algunas palabras al azar. Deben ser aleatorios, no una cita o una oración, porque estos últimos son mucho más predecibles y fáciles de descifrar. Una combinación como el bailarín integrado del dispositivo de respuesta es un buen punto de partida.
Otro paso esencial para proteger tus cuentas es adoptar la autenticación de dos factores. Esto proporciona una línea de defensa adicional que puede ayudar a salvarte si un atacante logra obtener tu contraseña. Ya hablamos sobre el intercambio de SIM, por lo que la autenticación por SMS es una mala idea. En cambio, es mejor optar por la autenticación basada en aplicaciones como Duo, Google Authenticator o Aegis si te gusta el software de código abierto. También puedes usar un token de seguridad físico en su lugar.
Si te registras en haveibeenpwned.com, puedes recibir alertas cuando tu correo electrónico o número de teléfono se vea involucrado en una violación de datos que se haya informado al sitio web. Esto te permitirá saber si necesitas cambiar tu contraseña. El sitio también tiene una función que te permite verificar qué tan común es tu contraseña . Los datos que ingresas se codifican inmediatamente con SHA-1 y tu contraseña nunca se almacena.
Sin embargo, aún estás ingresando tu contraseña en un sitio web de terceros, por lo que tienes derecho a ser escéptico. Si dudas en probar tu contraseña en la base de datos, solo asegúrate de estar usando una contraseña larga y generada aleatoriamente.
Si sospechas que tu contraseña puede verse comprometida por otros motivos, o el proveedor de servicios te notifica directamente, también debes cambiar tu contraseña. Aparte de estas situaciones, las mejores prácticas actuales ya no sugieren que debas cambiar tu contraseña regularmente, porque los cambios regulares tienden a fomentar la selección de contraseñas deficientes. Si no tienes motivos para sospechar que stu contraseña compleja se ha visto comprometida, déjalo así.
Desarrolladores
Una de las consideraciones más importantes para los desarrolladores es asegurarse de que están codificando las contraseñas y no las almacenan como texto sin formato. Si no los hash, está dejando a sus usuarios vulnerables. No importa qué tan seguro creas que es tu servidor, debes codificar tus contraseñas antes de almacenarlas, porque es imposible eliminar por completo la posibilidad de que un hacker ingrese a tus sistemas.
El siguiente paso es la salazón, que es una excelente manera de hacer que los ataques de mesa arcoíris no sean prácticos. En resumen, se agrega un valor aleatorio a cada contraseña antes de que se convierta en hash. El efecto de esto es que los datos adicionales hacen que el hash de la contraseña sea mucho más raro. Si un usuario tiene una contraseña como abc123, la adición de la sal cambia el hash. Incluso si el atacante conoce el hash de abc123, esto no le lleva a ninguna parte, porque la sal ha convertido el hash en uno que se usa con mucha menos frecuencia. El resultado es que los ataques de la mesa del arco iris son inviables. Una biblioteca como bcrypt es una de las formas más fáciles y seguras de implementar este tipo de salado seguro.
Otra opción es implementar una función de derivación de claves como Argon2. Entre sus habilidades, puede estirar y fortalecer las contraseñas, lo que hace que el uso de tablas de arco iris no sea práctico.
Además de esto, los desarrolladores pueden configurar listas negras que prohíben las contraseñas de uso común. También pueden estipular que se debe utilizar un número determinado de caracteres, cuanto más largos, mejor. NIST ya no recomienda cambios frecuentes de contraseña a menos que se sospeche de compromiso, por lo que no tiene que molestar a sus usuarios cada mes o dos para pedirles que la modifiquen.
Otro mecanismo de protección importante es exigir la autenticación de dos factores. Esto brinda a sus usuarios una capa adicional de seguridad, en caso de que sus contraseñas terminen en manos de atacantes. Una vez más, la 2FA basada en aplicaciones o tokens es mejor, no la autenticación por SMS.
Probabilidad de que tu contraseña sea descifrada
Es difícil decir exactamente, y esto dependerá de lo que consideres «crackeado». Si tienes una contraseña compleja, entonces las posibilidades de que los ataques de fuerza bruta o de diccionario tengan éxito contra ella son increíblemente improbables. Cuando hablamos de contraseñas comunes, o contraseñas que usas en varias cuentas, no es muy improbable que eventualmente te conviertas en víctima de la difusión de contraseñas o un ataque de relleno de credenciales.
Si hablamos de cosas como el phishing o el shoulder surfing, que no implican «descifrar» tu contraseña, este tipo de ataques representan una amenaza aún mayor si no estás siempre atento a tu seguridad.
Aunque los riesgos de que tu contraseña sea descifrada o robada son muy reales, los métodos que mencionamos contribuyen en gran medida a minimizarlos. Aunque las medidas de protección pueden parecer aburridas o incluso inútiles si nunca has sido atacado, seguramente aprenderás a apreciarlo si tu negligencia resulta en que un hacker cause estragos en tu vida.