¿Cómo se almacenan de manera segura las contraseñas?
En la actualidad, asegurar la confidencialidad es un pilar esencial en cualquier sistema informático. Al hablar de contraseñas, estas deben almacenarse cifradas utilizando algoritmos conocidos como hash. Un hash cifra una contraseña en un solo sentido, imposibilitando su descifrado. Este principio fundamental de ciberseguridad previene accesos no autorizados, incluso si un atacante logra infiltrarse en el sistema y obtener las contraseñas cifradas.
¿Qué es y cómo se aplica el 'password cracking'?
Dada la naturaleza unidireccional del cifrado hash, surge la necesidad del "password cracking" para romper esas contraseñas cifradas. Esta práctica implica métodos y herramientas especializadas que buscan descubrir la contraseña en texto plano a partir de su forma cifrada.
Existen diversas técnicas de obtención de contraseñas cifradas, como:
Inyecciones SQL: Extraen bases de datos en aplicaciones web.
Vulnerabilidades en sistemas operativos: Permiten leer archivos críticos en sistemas mal configurados, como ocurre en sistemas Linux con el archivo "shadow".
El objetivo es claro: independientemente de su origen, la técnica de cracking se aplica por igual a todas las contraseñas cifradas.
¿Cómo funciona una 'inyección SQL' en una aplicación web?
Para ejemplificar el proceso, consideremos el uso de inyecciones SQL en aplicaciones web vulnerables, como D-V-W-A (Damn Vulnerable Web Application). Este entorno controlado simula escenarios reales de vulnerabilidad para prácticas de seguridad.
La técnica consiste en manipular consultas SQL para extraer información valiosa de la base de datos. A continuación, se detalla la práctica en un entorno seguro y controlado:
'OR1=1SELECTUser, Password FROM Users
En este ejemplo, mediante una manipulación en la entrada (User ID), se logra listar usuarios y contraseñas cifradas al emplear una condición que siempre será verdadera (1=1).
¿Cómo romper contraseñas cifradas?
El rompimiento de contraseñas comienza con la identificación del algoritmo de hashing usado. Comúnmente, los hashes presentan valores hexadecimales y patrones que permiten su clasificación, como SHA-1 o MD5. Para romper una contraseña cifrada:
Copiar la contraseña cifrada: Se debe crear un archivo (ej. passwords.txt) donde se guardará la contraseña a romper.
touch passwords.txt
nano passwords.txt
Utilizar la herramienta John the Ripper: Esta herramienta automatiza el crackeo de contraseñas buscando coincidencias en diccionarios de palabras.
sudo john --wordlist=/usr/share/wordlists/rockyou.txt passwords.txt
Especificar el formato si es necesario: En caso de que John the Ripper no identifique automáticamente el algoritmo, se debe definir manualmente:
john --format=raw-md5 passwords.txt
Estas herramientas y prácticas se complementan con el uso de recursos en línea, como identificadores de hashes, que facilitan la identificación del algoritmo correcto.
¿Qué son las colisiones de hashes?
Una vulnerabilidad intrínseca en los algoritmos de hashing es la colisión de hashes, en la que dos entradas distintas producen el mismo hash. Esta situación ocurre porque cada tipo de hash tiene una longitud específica que limita la cantidad de valores únicos que puede representar. Las colisiones pueden ser aprovechadas para ganar acceso no autorizado si múltiples contraseñas tienen la misma representación hasheada.
¿Qué sigue en tu aprendizaje en ciberseguridad?
Este conocimiento sobre vulnerabilidades y técnicas de cracking apenas rasca la superficie. El aprendizaje continuo es esencial en el campo de la ciberseguridad. Por ejemplo, explorar más a fondo las inyecciones SQL y las colisiones de hashes en cursos como Hacking de Aplicaciones Web (Server Side) fortalecerá tus habilidades. Mantente siempre motivado y curioso: explorar es la clave para dominar la seguridad informática.
Les comparto por acá herramientas con las que pueden practicar:
Hack the box: Trae una serie de máquinas vulnerables con diferentes sistemas operativos, algunas de estas máquinas aparecen en los laboratorios de la certificación OSCP
TryHackMe: Es la plataforma que utiliza el profe para este curso, lo que me gusta de esta es que está gamificada hasta cierto punto y tiene prácticas reales
Metasploitable: Es una máquina intencionalmente vulnerable que puedes ejecutar en un entorno virtual, si quieres practicar con metasploit esta puede ser la opción de primera mano
OWASP Broken: Después de hack the box, esta es mi favorita para practicar, consiste en una serie de aplicaciones web vulnerables, todas las vulnerabilidades encontradas son conocidas y públicas.
Gracias excelente aporte
Me da mucho error usando tryHackme, ya que realizo los escaneos nmap -T4 -A -v -sS "ip" y muchas veces no encuentro puertos o información referente el "sS" lo coloco para evitar los firewalls es lo que me ha ayudado hasta ahora.
Ademas de que si uso db_namp o alguno de los comandos que guarde información en la base de datos no me funciona.
Password Cracking: descifrado de contraseñas.
Hash: Cifrado de contraseñas en un solo sentido.
DVWA: Máquina con vulnerabilidades de SQL Injection.
🕵️♂️ Dato curioso (y aterrador):
Con una simple inyección SQL, un atacante puede extraer hashes de contraseñas cifradas desde una base de datos…
¡y luego crackearlas en minutos si usan contraseñas débiles! 😱
👉 Por ejemplo, si los hashes están en MD5 sin sal, herramientas como Hashcat o John the Ripper pueden romper miles por segundo.
Y si la contraseña es algo como admin123 o qwerty, cae en segundos.
💬 "No importa si la contraseña está cifrada... si es débil, igual se rompe."
Hash es lo mismo que cifrado?
estás seguro
No, el hash es el resultado de procesar información con un algoritmo de hashing. El cifrado es el proceso de cifrar un texto, este texto es ilegible y puede llamarse "texto cifrado" o "Criptograma". Pero creo saber cuál es tu pregunta en realidad. Te refieres a que el hashing no es considerado un método de cifrado, porque el cifrado se puede descifrar y el hash no. Entonces si nos ponemos estrictamente técnicos el hashing no es cifrar. Sin embargo, si recordamos cual es el significado de la palabra Cipher, el hashing entra dentro de la categoría.
Hay quienes utilizan cifrar y codificar como sinónimos y entiendo la necesidad de ser técnicamente estrictos, pero al final se puede comprender a lo que se refieren las personas bajo el contexto de la conversación.
¿Se pueden crackear contraseñas de cualquier algoritmo existente, tales como Argon2id, script y bcrypt? Y en caso de ser así, ¿qué opciones existen para mitigarlo?
Todos los algoritmos de hashing pueden ser crackeados, lo unico que puede protegerte es contar con credenciales robustas, para que el proceso de cracking tarde mucho tiempo.
Gosshhh! Habra alguna clase donde la contrasena por descubirir no sea : Password ; Yo esperamba mucho mas de este curso viendolo por este nivel al final de la Saga de Hacking, y la verdad es Decepcion. Nadie en este Mundo usa : Password como su contrasena, eso es un cliche de la decada pasada que solo se ve por Series de Netflix, \n
Lo de las Colisiones ya me lo sabia. y eso es una posibilidad en Millones que mas sera suerte que Logica de Hashing Algoritms. \n
En serio Yo esperaba ejemplos mas reales con algo mas Avanzado que John tal como Hydra.
\nYo he usado John y rara vez descubre una contrasena. casi nunca funciona y si lo hace es con la tipica : password || pasword123 o que mas da. [Dissapointed] \n