Craqueo de Contraseñas Cifradas con Inyecciones SQL
Clase 8 de 17 • Curso de Hacking: Escalada de Privilegios
Resumen
¿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:
'OR 1=1
SELECT User, 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.