Volvemos con otro WriteUp de la gente de VulnHub. En este caso se trata de “The Necromancer”. El autor de la máquina nos indica que debemos obtener 11 flags para pasar el CTF y que el nivel es de principiante (veremos…).
Como de costumbre comenzamos lanzando un nmap a la red para ver cuál es la IP de la máquina a atacar, lo cual no me devuelve ningún resultado ni en los 1000 habituales ni en los 65550 y esto me recuerda a otra máquina que tenía un netcat abierto esperando conexión, así que igual que hice en aquella máquina, me abro Wireshark y lo dejo a la escucha.

Rápidamente observo que efectivamente hay un paquete en Wireshark que me indica que el puerto 4444 está ahí esperándome xD. Así que si le abro un netcat debería pasar algo, ¿no?

Esto tiene pinta de Base64, así que vamos a por ello. Hace poco aprendí que desde consola se podía “decodear” directamente sin hacer uso de webs ni nada por el estilo, así que…
El uso es muy sencillo, solo hay que poner:
echo “caracteres en base64” |base64 --decode.

Lo que me devuelve algo como una historia típica de cuentos de aventuras y al final me devuelve el flag n.º 1: e6078b9b1aac915d11b9fd59791030bf
que aunque a priori me da la sensación de que puede ser código hexadecimal, no lo es, pero si un hash en MD5 que me devuelve opensame.

Lo que sí me llama la atención es la pista final con el u666. Después de un rato me doy cuenta que quizá nmap no sacaba nada porque estaba tirando contra TCP y es UDP.

Ahora sí, ya veo que el puerto 666 (muy bueno xD) está abierto. Pruebo un netcat por UDP y me devuelve otro mensaje.

¿Ya se me acaba el tiempo? si acabo de empezar xD. Tardo un rato en revisar documentación sobre netcat para ver como puedo pasarle la clave a la IP de la máquina por el puerto 666.
Al final descubro que con:
echo "opensesame" | nc -u 192.168.56.101 666
Se puede, y esto me devuelve otra nueva “historia”.

De lo que sacamos en flag 2: c39cd4df8f2e35d20d92c2e44de5f7c6 y que se cierra el puerto 666 y se abre el 80, o eso he querido entender yo xD.



De nuevo otra mini historia. Como siempre, reviso el código y me guardo la imagen para procesarla. Esta vez me guardo la de la página principal y la que aparece en el código que apunta a <img src="/pics/pileoffeathers.jpg">.
Pues esta vez en el código no veo nada, y con stegfile y exiftool nada de nada. Después de un par de minutos pensando se me ocurre pasar las imágenes por foremost con el mismo resultado en ambas, lo que, además de encontrar lo que podría ser un fichero, doy por seguro que la imagen es la misma con distinto nombre.


Parece que tenemos otro chorizo alfanumérico en Base64:
ZmxhZzN7OWFkM2Y2MmRiN2I5MWMyOGI2ODEzNzAwMDM5NDYzOWZ9IC0gQ3Jvc3MgdGhlIGNoYXNtIGF0IC9hbWFnaWNicmlkZ2VhcHBlYXJzYXR0aGVjaGFzbQ==
Lo que nos devuelve el flag 3: 9ad3f62db7b91c28b68137000394639f además del texto:
- Cross the chasm at /amagicbridgeappearsatthechasm
Le iba a tirar Dirbuster a ver que sacaba, pero si no me equivoco, la última parte parece una carpeta de la web. Veamos.

Una vez más estaba en lo cierto y para variar, nos devuelve otra parte de la historia y una nueva imagen.
Veamos si la imagen tiene algo. Pues nada, parece que esta vez no está en la imagen. Me pongo a releer el último “capítulo” de la historia a ver si saco algo en claro. Lo único que me llama la atención es la última frase “There must be a magical item that could protect you from the necromancer's spell” que dice algo así como “Tiene que haber un objeto mágico que podría protegerte del hechizo de la nigromante”. Esto me recuerda a cuando jugué antaño alguna partida de rol, pero no sé a qué se refiere con “magical item” no sé si será un objeto, alguna palabra…
Hago la siguiente búsqueda en Google para ver si me sugiere algo.

Después de visitar algunas páginas me creo un diccionario con términos en inglés sobre temas de juegos de rol, magia, nigromancia etc.
Al revisar la URL que me había devuelto junto con el tercer flag, me doy cuenta que está formado por palabras unidas, así que quizá sea así como he de crear el diccionario. Lo que sí parece seguro es que será en minúsculas. Toca reestructurar.

Y así hasta 329 palabras que me llevan más de media hora escribir a mano xD, y encima esto para una auditoría dudo que valga…
Finalmente, se lo paso a Burp a través del intruder.


Pues he triunfado como los chichos xD. Lo que buscaba era talismán. Voy al navegador para poner esta nueva URI y me salta la descarga de un binario, ya estamos con los binarios…

Rápidamente le tiro un file al binario talismán y veo que está escrito en C.

Después de un rato pegándome con el dichoso binario y con C me doy cuenta que mi Kali es x64 y el binario está escrito para arquitecturas de 32 bits y como no tengo ninguna máquina de 32 bits, me toca montarme una con la considerable pérdida de tiempo. Al menos ya la tengo para otra vez.
Al final el proceso es:
gdb talisman arranca gdb contra el binario.info functions devuelve por pantalla información de las funciones.
break wearTalisman
run inicia el programa.
Y al final del proceso, nos devuelve el flag 4: ea50536158db50247e110a6c89fcf3d3
You fall to your knees. weak and weary. Looking up you can see the spell is still protecting the cave entrance. The talisman is now almost too hot to touch! Turning it over you see words now etched into the surface: flag4{ea50536158db50247e110a6c89fcf3d3} Chant these words at u31337
Parece que nos dice que usemos ese flag en el puerto UDP 31337.

Confirmamos que está abierto mediante nmap.
Igual que hiciera anteriormente, pruebo con un echo a ver si conecto usando el valor del flag.
ea50536158db50247e110a6c89fcf3d3 Solo que esta vez no funciona. Mirando en google veo que es un hash en MD5.

Ahora si, uso: echo "blackmagic" | nc -nv -u 192.168.56.101 31337 Lo que nos devuelve otro capítulo de la historia.

Obtenemos otro directorio de la web /thenecromancerwillabsorbyoursoul y el flag número 5:
0766c36577af58e15545f099a3b15e60
Esta vez me aseguro de que no sea otro hash que nos devuelva una palabra y así es.
Al poner la nueva ruta me aparece el flag 6:
b1c3ed8f1db4258e4dcb0ce565f6dc03
Y otro texto. Este tampoco parece que esconda nada.

Lo que si me devuelve es la descarga de otro fichero.

Una vez más al final del texto aparece u161, de nuevo tiene pinta de que sea el puerto UDP 161. Lo corroboro nuevamente con nmap.

Antes de continuar, guardo la foto y la paso por foremost, exiftool y steghide por si las moscas. No parece contener nada, así que continúo con el nuevo binario, que en realidad parece ser un fichero bzip2. Después de un rato consigo averiguar que había que descomprimir el fichero con bzip2 y además con tar para llegar al fichero necromancer.cap, el cual abro con Wireshark, pero me doy cuenta enseguida de que el un fichero con paquetes de WiFi. Me da la impresión que va a haber una clave por ahí.
Vamos a darle chicha con AirCrack a ver si obtengo lo que busco.


Pues ha funcionado y nos devuelva la palabra death2all, esto ya parece un disco de Metallica xD. Pruebo como en ocasiones anteriores con echo "death2all" | nc -nv -u 192.168.56.101 161, pero esta vez no ocurre nada.
De alguna auditoría me viene a la memoria algo parecido y usando metasploit creo que podría dar con ello.

Pues tampoco es que haya sacado mucho. Si pruebo con snmpwalk me devuelve lo mismo en distinto orden xD.

He de reconocer que en este punto me atasqué bastante, pero no hay nada como buscar la información oficial para llegar a una buena conclusión. **Referencias 1 y 2.

Solo hay que pasarle el parámetro -c con la string death2allrw la versión -v del protocolo snmp que se usa y la IP de la máquina.
Después de lanzar snmpset, si vuelves a lanzar snmpwalk puedes ver los cambios. Ahora está desbloqueado, sigamos.

Lo que nos devuelve el flag 7: 9e5494108d10bbd5f9e7ae52239546c4 y -t22 lo cual me da la sensación de que va a ser SSH (puerto 22 TCP). Esta vez sí que es un hash que devuelve: demonslayer.

Vamos a ver si conectamos por el puerto 22 al SSH con la pass demonslayer y el usuario (supongo) será root.

Pues me he colado pero bien, ni el usuario es root, ni la pass es demonslayer. Quizá el usuario es demonslayer y hay que sacar la contraseña. Veamos con medusa. Me creo un mini diccionario con las 25 peores contraseñas para este caso.

No sé por qué intuía que la contraseña sería algo sencillo, en todos los retos según te vas acercando al final, todo se vuelve más fácil.

Pero esto no se ha terminado, parece ser que (obviamente) no soy root. Después de hacer un ls y un cat al fichero flag8.txt me devuelve otro texto.

Pues nada, de nuevo nos indica, como ya es costumbre, que miremos el puerto UDP 777, pero si tiramos un nmap, en este caso nos devuelve lo siguiente.

En cambio, con un ps aux y un grep al 777 (y un top) podemos ver que la cosa cambia.


Además, con un netcat al puerto 777 dentro de la propia máquina podemos ver lo siguiente.

jajajaja brutal!! Eso pasa por darle a intro sin leer como un loco. Me ha encantado.
Cojonudo, ni siquiera deja conectar por SSH xD.
Me ha cerrado hasta el puerto jajaja. La verdad que el tío se lo ha currado.
Ya fuera coñas, te toca reiniciar la máquina y volver a realizar todo el proceso (ni puta gracia) o al menos yo no he podido hacerlo sin reiniciar.
Mientras, busco en google sobre la pregunta “Where do the Black Robes practice magic of the Greater Path?” y en la primera entrada se puede leer sobre el tema. Parece que hay que responder Kelewan a la primera pregunta.

Para la segunda pregunta, ¿“Who did Johann Faust VIII make a deal with?” la respuesta es Mephistopheles.
Y para la última, ¿“Who is tricked into passing the Ninth Gate?” la respuesta es Hedge.
Una vez que hemos respondido a las tres preguntas solo nos resta hacer un sudo -l.

Nos devuelve un comando para lanzarlo como root.

Y por fin nos da el flag 11: 42c35828545b926e79a36493938ab1b1 que, de paso, por si las moscas, busqué el hash en google y devuelve: hackergod

Y con esto, hemos completado la máquina.
Nos vemos en la siguiente.
0 comentarios:
Publicar un comentario