La semana del 23 al 27 de octubre tuvo lugar el evento de UQBAR llamado JCUN – Jornada de Ciberseguridad de la Universidad Nacional de Colombia, en esta edición del 2023 tuvimos la oportunidad de participar allí de 3 maneras diferentes: Una charla, un taller y el CTF.
- La charla fue dictada por unos amigos, el tema fue sobre el fallo de PrintNightmare, su existencia, formas de explotar e impacto.
- El taller, llamado 101 Exploit/pwn en Linux, fue dictado por Luis Hernandez de Behackerpro
- El CTF de jcun23 tuvo diferentes retos y después de mucho café y trabajo, logramos ocupar el primer lugar.
El evento nos gustó mucho, cada vez es más motivante ver que la pasión por la ciberseguridad crece en diferentes regiones. En este post queremos compartirles nuestra experiencia en la participación de estos 3 espacios.
El taller fue todo un éxito y la verdad nos emociona ver la cara de las personas cuando entienden el detalle técnico de un ataque de desbordamiento de memoria (bufferoverflow).
Del lado de la charla, tuvimos la oportunidad de abrir el segundo día de la jornada con nuestra charla a cargo de Moises y Luisa titulada “The Nightmare in Microsoft Street”, si se la perdieron, está en youtube y la presentación en nuestro canal de discord.(pregunta por ella ^^)
EL CTF
Ahora vamos a enfocarnos en explicarles cómo logramos resolver muchos de los retos del CTF y los ejercicios que consideramos más interesantes y que nos llevaron al primer lugar.
Tal como lo mencionamos en un post anterior, los CTF son muy importantes en ciberseguridad. Comencemos con la desafiante forma de iniciar el CTF, no nos dieron el formato de la flag, este debía averiguarse, para esto nos dieron dos imágenes y lo resolvimos de la siguiente manera:
¿cómo resolvimos los retos?
Nombre Reto, basics:
Usamos la herramienta diffimg, en el resultado obtuvimos una imagen, la cual nos permitió leer bien la flag y conocer el formato.
comando: diffimg key.png mesaje.png resultado.png
Resultado:
Nombre Reto, Sello:
En esta parte debimos revisar la cabecera hexadecimal y cambiarla a formato .png, básicamente fue entender las cabeceras y saber qué formato pertenece a una imagen PNG.
Nombre Reto, hacker maestro
Nos daban una lista de dominios en un archivo, tuvimos que ver el listado de dominios y acceder al dominio único que resolvía a nivel de DNS.
https://hackermaster.jcunal.com/
Nombre Reto, Fuzz Fuzz Fuzz
Usamos dirbuster, y obtuvimos un directorio valido en el servidor
ruta : /test/flag.txt
Así mismo notamos que estos retos estaban conectados y empezamos a observar información relevante para otros retos.
Nombre Reto, Hexitante
Al revisar el hexadecimal estaba oculta la flag.
Algo muy interesante fue ver muchos retos de OSINT, notamos que este tipo de retos tenían muchos puntos y conexiones, tales como los del reto Desarrolla tu SER, que consistía en identificar en qué otra red social estaba Frank. La respuesta era github y para lograr descubrirlo nos apoyamos del sitio https://whatsmyname.app/?#
Conseguir esta reto nos ayudaría para resolver el siguiente reto.
Nombre Reto, un error inesperado.
Revisamos el commit en el repositorio de frank https://github.com/FrankenShell/Hangman/commit/1d14ed931b996ad6cf835651af010bc1f88abc1e#diff-31b8bcdf8b4220043db268f494d58d1bed507a63f4fff1be7ff73b425fb2c981
En Be Hacker Pro hemos tenido algunos post, videos y participación en eventos relacionados a OSINT. Te dejamos una lista con enlaces que podrían interesarte si te apasiona este tema:
- ¿Cómo solucionar los retos de OhSINT en tryhackme? Behackerpro
- Cómo solucionar algunos desafíos tipo OSINT del CTF de Cybersoc – (behacker.pro)
- ¿Cómo identificar un ladrón haciendo OSINT? – Behackerpro
- ¿Qué es Osintgram y cómo usarlo? – Behackerpro
Continuamos…
Nombre Reto, una mano amiga.
El siguiente era encontrar el correo de frank, para esto hay un truco, al igual que muchos otros que mostramos en nuestro taller de OSINT en el pasado Bsides Colombia, consultamos en https://emailaddress.github.io/?user= por el usuario de frank, el cual era Frankenshell, https://emailaddress.github.io/?user=FrankenShell
Para los retos llamados duo de monstruos uno y dos, logramos resolverlos analizando los metadatos de la imagen, en la descripción y comentario se pueden ver los nombres de las cuentas.
Nombre Reto, fotógrafo de cabecera, el objetivo de este reto era identificar en qué otras redes estaba Drácula, alias biteyournet, nuevamente nos apoyamos del portal ****https://whatsmyname.app/?# allí logramos identificar que Drácula estaba también en Pinterest
En este punto del CTF era importante mantener un orden, al igual que en cualquier proceso de investigación usando OSINT, entonces empezamos a ordenar los datos recolectados para tener más claro el panorama, dado que el tiempo era corto lo consolidamos en un archivo txt.
Sigamos con otros retos que también nos parecieron interesantes, antes de seguir con los de OSINT
Nombre Reto, confidential:
Se usó https://www.ilovepdf.com/ el cual nos dio una cadena en base64, permitiéndonos conocer la flag jcun2023{C0nstruy3nd0un4_c0munid4d_d1g1t4lm3nt3_s3gur4}
Nombre Reto, Papapapassword:
Vampire, es la password del wordpress se logra usando wpscan.
Nombre Reto,Fuera de serie
Se analiza el apk con mobsf y se identifica la flag en el campo de hardcode secrets.
El siguiente reto lo resolvimos a altas horas de la noche y fue muy emocionante, este se llamaba Cazador 1 – Monstruos y daba 100 puntos (si mal no recuerdo).
El objetivo de este reto era ingresar al correo de frank y buscar/ver la flag.
Una vez nos autenticamos con una contraseña vista en github pudimos ver el correo de frank , así mismo logramos ver la posible flag en los borradores.
Sin embargo, se veía que la codificación era rara, usamos https://www.dcode.fr/cipher-identifier ahí salió que es braifucking y al resolverlo logramos ver la flag.
En este punto, nos pareció riesgoso el control que se daba a los participantes al tener el correo, pues un jugador mal intencionado hubiera podido eliminar la flag, loguearse al github y borrar datos e incluso al twitter y afectar el proceso del CTF para los retos de OSINT.
Correo al cual se tenía acceso.
Archivos de los retos a los cuales se tenía acceso.
Acceso al Twitter de una de las cuentas de los retos de OSINT.
Sin embargo, nuestra misión era ganar y no dañar el proceso de resolución del reto a otros jugadores, entonces continuamos el juego.
Nombre Reto,Not so secret
Para este reto tenemos un ejecutable de linux denominado “a.exe”
Para hacer el proceso de ingeniería inversa utilizamos la herramienta “Radare” y la función aaaa para el análisis de todas las funciones del binario:
Seguido vamos a imprimir el código en assembler de la función “entry0” con el comando “pdf”
Podemos ver una referencia a main, por lo cual nos dirigimos a main con el comando “s main” y volvemos a imprimir el código:
En la instrucción 0x000022d6 vemos una asignación de un string al registro rcx, por fortuna el valor del string “Sp00kyStr1ng” es nuestra bandera para este reto!!!
Nombre Reto,Selector
En esta ocasión tenemos otro ejecutable de linux denominado “selector”
Como todo buen proceso de reversing, empezamos ejecutando el comando “strings”
Para nuestra sorpresa la bandera estaba en las primera lineas del binario!!
Nombre Reto,Krypton
Para este reto nos entregan 4 archivos:
El código de python para el cifrado y descifrado, un archivo en texto plano, dos archivos cifrados.
El archivo denominado crypt.txt es el contenido cifrado del archivo plain.txt, como conocemos el texto plano y el texto cifrado podemos hacer el proceso inverso para conocer la llave!
Con la llave podemos descifrar el archivo “secrets.txt” para obtener la bandera!!
Nombre Reto,El candado se sentía bloqueado en su lugar
Con la apk denominada “Android-JCUN23_01.apk” vamos a utilizar las herramientas “d2j-dex2jar” y “jd-gui” para analizar el código de la aplicación móvil.
Recuerda que la apk se debe renombrar a .zip para luego extraer y poder pasar el archivo “classes.dex” a la herramienta “d2j-dex2jar”
Esta herramienta realiza el proceso de extracción y podemos ver en la carpeta “assets” la base de datos en sqlite.
Abrimos la base de datos con el programa “SQLite Data Browser” y en la tabla KEY encontramos el valor de nuestra bandera!
Nombre Reto,A dios lo que es de Dios
El nombre del reto nos da una pista super importante… Puede tratarse del algoritmo de cifrado “Cesar”
Este reto tiene un componente particular, no podemos usar Cesar con un alfabeto tradicional, por esta razón se utilizo la herramienta “https://www.dcode.fr/” que nos permite definir alfabetos extendidos.
Escribimos el código en python que nos transforme los valores del vector a su correspondencia en Ascii y listo, tenemos nuestra bandera.
Nombre Reto,Invisibilidad
Partimos de un archivo que nos arroja lo siguiente:
Sin embargo al mirar en hexadecimal y posteriormente en sublime tenemos una serie de caracteres UNICODE (invisibles efectivamente).
Después de dar muchas vueltas sobre este reto, se identifica que los caracteres ocultos podrían tener una representación en binario, la “b” como valor “0” y la “c” como valor “1”, con este patron podemos utilizar la herramienta “https://gchq.github.io/CyberChef/”
Nombre Reto,Receta secreta
Para este reto tenemos un secreto “NzM3NzZlMjA3YTc3MjA2MjcxNjM=” y una serie de pasos que podemos cocinar en la herramienta https://gchq.github.io/CyberChef/
Sin embargo, la mayor dificultad de este reto es el segundo paso “lo único especial en el horno es el platillo”
Para el resto, los pasos se pueden concluir como: decodificar en base64, pasar desde hexadecimal, ROT de 170 y por último el algoritmo de cifrado vigener con la llave “pimienta”
Finalmente no basta con https://gchq.github.io/CyberChef dado que en esta herramienta la funcionalidad de ROT no incluye alfabetos extendidos, pero ya sabemos que “https://www.dcode.fr/” si lo permite….Entonces aquí vamos:
“pan de ajo” es nuestra preciada bandera!
Nombre Reto,¿Dónde te perdiste?
Seguimos con las pruebas de OSINT donde tenemos este Trino:
Del cual podemos concluir que no se perdió en un cerro, pero la palabra clave de este reto es colina….. Sí, así es, colina.
Pero la pista que confirma que es “colina” la palabra clave es la siguiente:
Como sabemos la decodificación “Hill” utiliza una matriz de NxN por lo cual decodificamos el secreto “siyyclzvzi” con la matriz suministrada en Twitter.
Si te gusto este writeup, te invito a que te subscribas en nuestro canal de YouTube al contenido premium donde subiremos soluciones más avanzadas a retos de CTF y contenido que te ayudará a complementar tu conocimiento en ciberseguridad.
Hasta un próximo post!La
Suscríbete hoy a nuestros cursos Exploratorios
¡Descubre cuál es tu perfil Hacker!
¡Quiero Registrarme Gratis!Introducción a la Seguridad en AI – Parte 2
Después de entender los principales ataques, técnicas, tácticas y procedimientos...
Leer másIntroducción a la Seguridad en AI
Cuando hablamos de Seguridad en AI (Artificial Intelligence o Inteligencia...
Leer más5 pilares para Hackers o Profesionales en Ciberseguridad desde una perspectiva técnica
Después de la master class que realizamos en Be Hacker...
Leer más