13
Solución al reto The Necromancer Volvemos con otro WriteUp de la gente de VulnHub. En este caso se trata de “The Necromancer” y me he tomado la licencia de poner una imagen de uno de mis personajes favoritos de la Drangonlance, Raistlin Majere dibujado por el gran Larry Elmore. 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…). Vamos allá. Como de costumbre comenzamos lanzando un nmap a la red para ver cual 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.

Solución al reto the necromancer

Embed Size (px)

Citation preview

Page 1: Solución al reto the necromancer

Solución al reto The Necromancer  

  Volvemos con otro WriteUp de la gente de VulnHub. En este caso se trata de “The                               Necromancer” y me he tomado la licencia de poner una imagen de uno de mis personajes                               favoritos de la Drangonlance, Raistlin Majere dibujado por el gran Larry Elmore. 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…).  Vamos allá. Como de costumbre comenzamos lanzando un nmap a la red para ver cual 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 .    

Page 2: Solución al reto the necromancer

  Lo que me devuelve algo como una historia típica de cuentos de aventuras (como la                             DragonLance jeje) y al final me devuelve la 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 jeje) 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”. 

Page 3: Solución al reto the necromancer

  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"> .   

Page 4: Solución al reto the necromancer

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.   

Page 5: Solución al reto the necromancer

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 se a que 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 sudo que valga…    

Page 6: Solución al reto the necromancer

Finalmente se lo paso a Burp a través del intruder.  

 

  Pues he triunfado como los chichos xD. Lo que buscaba era talismán . VVoy 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 pegandome 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. 

Page 7: Solución al reto the necromancer

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 esa 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 capitulo 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. 

Page 8: Solución al reto the necromancer

 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.    

Page 9: Solución al reto the necromancer

 

 

  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 jeje. 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 : http://www.linux­party.com/index.php/29­internet/6038­introduccion­a­los­comandos­snmp­snmpwalk­snmpget­snmptranslate http://net­snmp.sourceforge.net/wiki/index.php/TUT:snmpset )  

Page 10: Solución al reto the necromancer

 

  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 se porque 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. 

Page 11: Solución al reto the necromancer

 

 

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.  

 

   

Page 12: Solución al reto the necromancer

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.  

 

Page 13: Solución al reto the necromancer

 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 la flag 11: 42c35828545b926e79a36493938ab1b1 que de paso, por si acaso                             busqué el hash en google y devuelve: hackergod  

     Agradecimientos:   Al creador de la máquina @xerubus, aunque hay que decirle que esto de nivel principiante                             tiene poco… Aún así creo que es la máquina más divertida que he realizado hasta ahora.  Recursos:  http://www.linux­party.com/index.php/29­internet/6038­introduccion­a­los­comandos­snmp­snmpwalk­snmpget­snmptranslate  http://net­snmp.sourceforge.net/wiki/index.php/TUT:snmpset      

WriteUp realizado por Roberto García Amoriz (@1GbDeInfo).