jueves, 15 de agosto de 2019

Writeup - From Saakar - Reto 22 H4F




Los chic@s de Hackers4Fun nos traen el reto nº 22. En el que tendremos que ayudar a Thor a activar la nave para su regreso a Asgard.


Manos a la obra

Nos descargamos el archivo comprimido desde el enlace de Google Drive, si seguimos el hilo vemos que nos dicen la password del fichero (que no es poco xD).


Examinando el fichero.....


Intentamos hacer un buffer overflow y que nos escupa la flag, pero no tenemos éxito.


Abrimos el archivo con gdb y revisaremos el código para saber como funciona el programa.

Si vemos la siguiente línea, hace una llamada comparando un string.


Hacemos un breakpoint y ejecutamos el programa, este nos mostrará en el arg[0] nuestra password y en el arg[1] la password correcta.


Ah funcionado! La clave del programa es "PointBreak", vamos a probarla.


Efectivamente era la clave, pero el reto aún continua.

Es importante la palabra "d3c0d3", por lo que se trata de una codificación y no un cifrado.



Tras una hora probando todo tipo de codificaciones y algún que otro paracetamol (que no falten!) vemos que el string está codificado en Base85 y nos proporciona una URL.


Y continuamos con cifrados! Tenemos un nuevo string con una key, por el mensaje "Think that it's not just a fan aquarium fish...." y el dibujo del pez "globo" nos indica de que está en Blowfish.


Obtenemos un nuevo string, este parece ser que está en Base64.


Habemus flag! H4F{B4nN3r_1s_Th3_StR0nG3sT_Av3nG3r}

Enhorabuena a @Hackers4F por el reto y hasta la próxima!

miércoles, 24 de julio de 2019

Writeup - UAM - DRAGON BALL


Para los fans como yo de Dragon Ball, tendremos la oportunidad de buscar las siete bolas del dragón por todo el planeta, conseguir el nombre del personaje y con este, la flag.

Accediendo al radar de Bulma podemos ver lo siguiente:


Si observamos el código del sitio, la aplicación hace una petición con las coordenadas a un archivo llamado “server.php” donde comprueba las coordenadas y nos devuelve una información en json.



Aunque podríamos ir cambiando las coordenadas desde el navegador, nos volveríamos locos ir introduciendo coordenadas por coordenadas de cada ciudad del mundo. 

Por este caso, me monté un sencillo script en Bash Scripting que básicamente lo que hace es ir haciendo petición POST con las variables “lat” y “lng” y sustituyendo su valor por el de las coordenadas… Ahora nos falta lo importante, conseguir un listado de la geolocalización de todas las ciudades del mundo. xD

Pues tras un buen rato buscando por la red, encontré esto https://dev.maxmind.com/geoip/geoip2/geolite2/ una base de datos (también en Excel) con un listado de 1.048.576 de coordenadas (casi nada). De este listado, sólo me he quedado con las columnas longitud y latitud, las he pasado a un archivo de texto para después utilizarlo con el script.


Este es código del script: (Aviso! Es bastante cutre el código, lo sé, pero funciona!)


Con el script ya en marcha solo tendremos que esperar a que vaya probando todas las coordenadas y empezará a mostrarnos las bolas del dragón que va encontrando:


Con estas 4 bolas fueron suficiente para poder resolver el reto…. Ya que contaba con la bola 2, 3, 4 y 7 (bolas del medio y la última).

Visto que el reto consiste en descubrir el personaje de la serie, ponemos las primeras iniciales en el orden del número de estrellas de las bolas, quedando de esta manera:

_ R G U _ _ O

Con las 4 bolas en mi poder, paso a contrastar con la lista de todos los personajes de Dragon Ball en una web. Utilizando el buscador, nos encontramos con esto:


Si contamos el número de caracteres solo tiene 6, cuando las bolas son 7, pero recordé la pista que lanzó @devploit:


Por lo que el nombre del personaje podría ser: D R G U E R O

¡Por probar que no quede! Lanzamos el nombre al comprobador 34.253.120.147:9999 utilizando Netcat:


¡Y reto superado!

lunes, 24 de junio de 2019

Writeup - UAM - EASY MODE



Los chicos de "Una al Mes" nos traen un nuevo reto, de nivel "easy" (ya lo dice el título..) en el que tenemos un dominio para ir tirando del hilo.


Manos a la obra


Analizamos el dominio en busca de información, nada raro hasta que vemos lo que parece una URL en una etiqueta TXT.


 Reemplazamos los caracteres de Hexadecimal a ASCII (ej. 3a2f2f = ://, etc...) y obtendremos un enlace que nos llevará hasta la siguiente pista:


Abrimos el nuevo enlace y continuamos con el reto descargando el archivo "imagen.zip" que al parecer contiene una imagen llamada "ctf.jpg" en su interior.



Descomprimimos el archivo, pero.... Arg! Pide contraseña, utilizamos JTR (zip2john y John) y el diccionario rockyou para sacar la contraseña del zip.


Descomprimimos el archivo .zip con la contraseña "locomotora" y nos muestra una imagen con un "sabio" consejo xD.


 Ahí queda eso.... Tras revisar el archivo con "exiftool" podemos dar con la flag:


La flag es: UAM{4ddcb848b6433e0649b69077a47da93c}

Ahora, los chicos de UAM nos advertían de que la flag nos va gustar, si la reversamos:



jueves, 13 de junio de 2019

Writeup - VulnHub - unknowndevice64: 1



Tras leer el ultimo post de mi buen amigo David, me pregunté el por qué se había decantado por la segunda máquina de Unknowdevice, así que me picó el gusanillo de volver a resolver otra máquina de VulnHub, y decidí hacer la primera

Dicho esto, comencemos....

Una vez descargada la .ova de la maquina  y cargarla en Virtualbox podemos empezar a jugar con la máquina.


jueves, 30 de mayo de 2019

Writeup - VulnHub - unknowndevice64: 2





Hoy os traigo el solucionario del reto "unknowndevice64: 2" del cual me ha parecido muy interesante, ya que trata de vulnerar un dispositivo Android.


Aunque el reto no era muy complicado, no he visto publicado ningún Writeup, por lo que me he puesto en contacto con el autor de la máquina y me ha dado su "bendición" (Gracias de nuevo Ajay Verma).


Manos a la obra

Escaneamos la red con Netdiscover, remarco con un rectángulo en rojo la máquina que vamos a atacar.


Hacemos un "nmap" y vemos los servicios que tiene disponible:


Encontramos dos servicios, uno es el Freeciv y otro es el Netbus (o al menos, usa el mismo puerto...). Me puede la curiosidad y lo ejecuto en el navegador y nos lleva hasta una web donde nos pide credenciales.


Si nos fijamos en la información que nos soltó nmap, nos da información de sus cabeceras, de que el login utiliza unas credenciales en MD5. Intento reversar el MD5 de la cabecera sin éxito.

Tomo el camino al otro servicio con puerto 5555. A través de este, intentaremos hacer una conexión al dispositivo Android con ayuda de "adb".


Bien, ya tenemos algo, hemos conseguido una shell y estamos conectado al interior del dispositivo. Si accedemos a la carpeta "System" podemos ver el archivo "flag.txt".


Ahora es el momento que hacemos "cat" y nos bailamos una Polka :D, pero no señor, no nos lo van a poner tan fácil.


OMG! Hay que encontrar alguna manera de escalar privilegios y leer el archivo.... Y por increíble que parezca, fue de lo mas sencillo :D


Y así acaba el reto..... Como se me hizo corto, dije ¿Y si logro quitarle el patrón/pin de acceso al dispositivo?


Accedemos a la ruta "/data/system" y allí normalmente se almacena un archivo llamado "locksettings.db" donde guarda la configuración de acceso.

Solo tenemos que eliminar el archivo "locksettings.db" y reiniciar el dispositivo.


Y si todo ha ido bien, el dispositivo iniciará sin pedirnos patrón o PIN.


Ahora si, esto si que es un "2x1" y no lo del Telepizza xD


sábado, 18 de mayo de 2019

Write-up - Reto "Desactiva la bomba" SHSkdi19



Los chic@s de @IESAlbertiCadiz nos traen un reto la mar de divertido! Antes de comenzar, por favor lean las recomendaciones:

Recomendaciones:

- Kali o Parrot "a punto".
- Café bien cargadito en vaso gigante.
- Tenga la caja de Paracetamol bien cerca.


Manos a la obra!

Nos descargamos el .pcap del enlace, si lo abrimos con Wireshark y filtramos por HTTP y método POST encontraremos un login y password interesante. Aunque de manera “sucia” puedes hacerlo a así:

Utilizando el comando strings


Evidencia desde Wireshark

Si lo decodeamos a ASCII, vemos que es una URL que nos lleva a una sistema de desactivación de una bomba
 

Revisamos el código fuente, encontramos una pista:


Tras mucho mirar sin tener clara la solución... Lanzan una pista por el canal de Telegram:
K0n3st, [15.05.19 22:09]
Pista: En la página web hay un comentario que dice que la flag se encuentra en la web, habéis comprobado algún parámetro?
Si le pasamos “https://iesrafaelalberti.es/Reto_shskdi19/index.php?flag=1” nos aparece un “gatete”.

Después de tirarle todas las tools de stego que conozco (que no son pocas xD) me da por probar flag=2 y veo que me abre un 2.html con una imagen de otro gato (gracioso, verdad? No.... No me refiero al gatito....xD)

Visto que si sigo la secuencia cada vez aparece otro gato, voy a ejecutar un script (yo no me compliqué y lo hice con ZAP, pero puedes hacerlo con Bash o Python) con varias peticiones para ver si cazo algo que no sea un gato.

Script Payload con ZAP

Pues si, en el 999.html me encuentro con una evidencia, parecen urls ofuscada en algún tipo de cifrado.

Tiramos de Multisolver y sacamos las evidencias:


En cada .html encontramos una foto (no, no son gatitos xD), vamos haciendo strings a cada una de ellas y nos topamos con algo curioso con la foto "cornear.jpg".


Vemos que la foto esconde un archivo comprimido (.rar) y que dentro de este hay al menos dos archivos mas, una hoja de cálculo y otro rar que contiene una pista.

Utilizamos Binwalk para extraer el archivo .rar de la imagen, lo descomprimimos y nos pide que insertemos la contraseña. (Tranquilos, aún nos queda medio café, frío, pero medio café...)

Extraemos sus hash con la ayuda de rar2john y lo pasamos por John The Ripper con el diccionario Rockyou.


La contraseña del archivo es "qwerty", la utilizamos y conseguimos los dos ficheros que mencionamos anteriormente.

Vemos un listado de proveedores con nombres, apellidos y teléfono, por lo que no hay duda que se trata de un reto de OSINT, de todas formas, ya que nos dan una pista "gratis" vamos a utilizarla.

Pero claro.... "Si algo es gratis, es que....." La pista tiene password!!! Estaba claro que no nos lo iban a poner fácil. 
Utilizaremos el mismo método que anteriormente (rar2crack, JTR con Rockyou):
Una vez con la clave (monkey) descomprimimos el archivo y leemos la pista.
Pues a "stalkear"! Tras buscar por varias redes y entre muchos perfiles (algunos muy curiosos xD) damos con el perfil del cibercriminal en Instagram y con el código de desactivación.
Bien!!! hemos encontrado el código de desactivación....Probamos y....Plaf!! En toda la frente!!! No funciona!!!! Si lo decodeamos en b64, tampoco...... 
Tras mucho pensar y probar, y probar, y probar.... Pruebo el código de la cuenta de ”bitcoins” aunque está cifrada o codificada, tras las horas que son y sin Paracetamol para mi pobre cabeza, le paso el trabajo a “CyberChef” y nos ayuda a resolverlo, bueno... Solo tenemos que ir probando código a muerte!! :D

 
Está en base58, introducimos el código y ahora si!!!! Reto finalizado!!!

Me he divertido muchísimo con el reto, gracias por complicarnos tanto la vida (va con cariño xD). Enhorabuena por el evento SHSdki19 y a los creadores del reto!