CTF #nullcon 2012: Programación 5
Bueno llegamos a la quinta prueba de la categoría y que como veremos no tiene nada de programación, a menos que te quieras crear tu propio crackeador de MD5.
La prueba consistía en lo siguiente: tenemos una página dónde introducimos cualquier texto y nos devolvía un hash. Si miramos el código fuente de dicha página una vez nos ha dado el hash, encontramos una pista:
Es decir, password en este case es el texto que nosotros introducimos, a éste se le añade un texto que no conocemos (salt) y se calcula el MD5. Nuestro objetivo es averiguar dicha salt.
Mi primera idea fue la de introducir passwords de 1 caracter. Empecé con el 1, y con el hash devuelto me fui a un par de sitios online que ofrecen búsquedas en rainbow tables, pero no encontré nada. Luego probé con el 2, 3, a y b. Nada de nada.
Luego probé con esos hashes, pero usando este script, nada de nada. Básicamente lo único que me quedaba por hacer era atacar al hash por fuerza bruta, cosa que me confirmaron en el irc.
Ingenuo de mi, ya era tarde y tiempo de irse a la cama, me saqué de la manga un script en ruby, esperando que el hash fuera de 2 ó 3 caracteres y dejé corriendo el script toda la noche.
Este es el script:
#!/usr/bin/env ruby require 'digest/md5' Hash = "58a813d4c223f80b1473c50f4b45749a" mystring = ['0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'] 8.times do |c| mystring.permutation(c+1).to_a.each do |i| digest = Digest::MD5.hexdigest("1"+i.join) if digest == hash puts i.join break end end end
A la mañana siguiente no sólo no había encontrado nada, sino que además el script todavía estaba corriendo y la máquina se quería morir :(
Nada, esto es un trabajo para un “pofecioná!”. Llamemos a Juanito.
Nota: en la web oficial de John the Ripper, tenemos 2 versiones de éste: oficial y una versión mejorada por la comunidad. Esta segunda no es más que la versión oficial con una serie de parches extras creados por terceros para expandir las posibilidades de crackeo de John the Ripper. Entre ellos MD5 puro y duro que es lo que necesitamos, por lo tanto usaremos esa versión mejorada.
Por lo tanto, usaremos el hash devuelto introduciendo: 1.
echo "58a813d4c223f80b1473c50f4b45749a" > hash.txt tuxotron@tuxotron-laptop:~/opt/john-1.7.9-jumbo-5/run$ ./john --format=raw-md5 hash.txt 101f303 (?) guesses: 1 time: 0:02:00:41 DONE (Wed Jan 25 00:10:21 2012) c/s: 7579K trying: 101f2p0 - 101f362 Use the "--show" option to display all of the cracked passwords reliably
Y en un par de horas obtenemos: 101f303. Recuerda que el hash estaba compuesto por nuestra entrada (1) + la salt, por lo tanto la salt que buscamos es: 01f303
Buscar
Entradas Recientes
- Posts
- Reemplazando la bateria del AirTag
- OpenExpo Europe décima edición, 18 de mayo: El Epicentro de la Innovación y la Transformación Digital
- Docker Init
- Kubernetes para profesionales
- Agenda: OpenExpo Europe 2022 llega el 30 de junio en formato presencial
- Libro 'Manual de la Resilencia', de Alejandro Corletti, toda una referencia para la gestión de la seguridad en nuestros sistemas
- Mujeres hackers en ElevenPaths Radio
- Creando certificados X.509 caducados
- Generador de imágenes Docker para infosec