Subido por Nacho Tolosa

Solución reto The Wall

Anuncio
Os dejo otro nuevo tutorial sobre la solución al reto que plantean desde VulnHub.
Lo primero que nos cuenta su creador es que es muy fan del grupo Pink Floid (the ahí el
nombre de la máquina). Así que podemos esperar que alguna de las flags esté relacionada
con el grupo, o no.
Como de costumbre, empiezo lanzando un nmap a la red para ver cual es la IP de la
máquina y después ver que tiene.
Pues no tiene nada, al menos a los 1000 puertos más comunes. Vamos a tirarle contra
todos.
Empezamos bien, nmap no nos dice nada de nada. Rápidamente se me ocurre abrir
wireshark a ver si al menos nos saca algo.
Pues parece que sí, hay comunicación desde la máquina del reto a la kali por el puerto
1337. Tiro un netcat a ver que nos cuenta.
Pues muy bien, ya empiezo a quedarme atascado, mal apaño. Me pongo a buscar
información en google sin saber muy bien sobre que buscar y tras 20 minutos perdidos me
decido a revisar a fondo el wireskhark.
Mira por donde me encuentro con una respuesta de la máquina, que raro ¿no?
Le doy a “follow TCP stream” y me encuentro con lo siguiente.
Obviamente parece que ha levantado en la máquina un servicio corriendo en el puerto 80.
Además, aparece un chorizo de números que pasado de hexadecimal a texto devuelve
steg=33115730dbbb370fcbe9720fe632ec05
Como la respuesta es HTTP entiendo que el puerto será el 80. Verifiquemos con nmap
primero y después tratemos de acceder via web.
Ahora si, nmap nos descubre efectivamente el puerto 80. veamos…
Pues estaba en el buen camino, por un lado accedemos a una web con la foto de…
taraaaaaan Pink Floyd!, no me lo esperaba xD. Y por otro lado mirando el código,
obviamente vemos lo mismo que nos decía Wireshark.
¿Habrá con suerte un robots.txt que nos de alguna pista?
Pues parece que no… veamos, ¿qué más podemos ir haciendo? Vale, vamos a lanzar
nmap a todos los puertos por si las moscas.
Tenemos el puerto 1965 pero no sabemos qué servicio tiene corriendo, así que usemos un
poco de “banner grabbing” a ver que conseguimos sacar.
Pues ya sabemos que hay un openSSH corriendo. Obviamente ahora necesitamos un juego
de usuario/contraseña para poder acceder. Me viene a la cabeza el chorizo que
encontramos en el código de la web. ​steg=33115730dbbb370fcbe9720fe632ec05
La palabra steg que se lee claramente me pega que pueda tener que ver con
esteganografía, pero los caracteres alfanuméricos tienen pinta de hash.
Por una vez parece que tengo razón y encuentro la palabra ​divisionbell. Pues ya tenemos
algo. Vamos a ver tambien la parte de la imagen, a ver si saca algo más.
Tras probar con exiftool como hice en el reto anterior y no sacar nada, decido probar otras
herramientas de extracción de datos y me encuentro con ​steghide​. Veamos que tal se porta.
Tiro con ​steghide embed ­cf pink_floyd.jpg ­ef culo.txt como viene en el ejemplo pero
nada. Después de un rato mirando la ayuda y el man llego a la conclusión de que lo que
estoy haciendo está mal. Dándole vueltas veo que siempre me pide un “salvoconducto” que
mal traducido (no mal, pero no todo lo bien que debiera xD) quiere decir pass (ole mis
clases de inglés jajaja). Vamos, que nos pide una contraseña de toda la vida. Así que…
Vale, ya tengo la key ​U3lkQmFycmV0dA==|f831605ae34c2399d1e5bb3a4ab245d0 y de
paso me anoto el texto por si me vale como pista. Como veo que claramente está delimitado
por un ​| (pipe) la primera parte parece Base64 y la segunda otro hash. Veamos el resultado.
SydBarrett y ​pinkfloydrocks respectivamente es el resultado. Entiendo que user/pass.
Vamos a probar ese SSH con el juego de usuario/contraseña que hemos obtenido.
Pues va a ser que no, pero al menos nos dice que solo admite sftp. Probemos a ver que
pasa.
A pesar de mi problema de dislexia xD estamos dentro. Es la primera vez que conecto por
sftp así que hago un help para que me muestre los comandos válidos. Como no se como
funciona y no encuentro un ​cat o equivalente, uso g​et para descargar los archivos que voy
encontrando.
Pues el fichero ​bio.txt parece la biografía del grupo, el fichero ​send­items devuelve un texto
en el que dice que ha escondido el “stash” y la imagen con exiftool no parece que tenga
nada.
Se que “stash” en inglés es alijo o escondite, pero realmente no se a que se refiere. Al abrir
el explorador de archivos, veo que la carpeta tiene el icono de estar comprimida pero no
aparece la extensión, así que después de probar con tres distintas, a la cuarta di con ello.
Ahora mismo me quedo muy pillado porque no se que son los archivos .lsd, así que tiro de
mi amigo el LPIC Rodri... Pues a él tampoco le suena así que mal vamos.
Vale, solo tardo unos segundos en revisar las últimas “evidencias” y en el correo veo que
dice algo así como “cuando lo encuentres, simplemente usa scalpel”. Y es que no aprendo,
lo de leer los texto completos no va conmigo xD.
Pues nada, a usar scalpel, como ya hice en ​esta entrada viejuna en el blog​.
Como decía en esa entrada, modificamos el fichero de configuración de scalpel y le damos
chicha.
No tarda ni 5 segundos en terminar el proceso, buena herramienta! No aparece que la
password es ​hello_is_there_anybody_in_there. Perfecto, pero la password para que, y
mejor aún, con que usuario? ¿será el nombre del señor de la foto? Por si acaso una
búsqueda rápida…
Por la napia y los pelos parece el bajista Roger Waters xD.
Recapitulando, solo hay dos servicios en los que podemos hacer login, el SSH y el Sft, en
realidad (en principio) solo el Sftp porque si recordamos, el SSH nos decía que nanai.
Después de probar todas las combinaciones posible con el Sftp y no conseguir nada, me
paso al SSH por si acaso, aunque no le veo mucho sentido a no ser que una combinación
“mágica” de user/pass si esté permitida.
Pues era eso jeje. Ya estamos dentro.
Listamos ficheros y vemos que hay en passwd. Hay varios usuarios además de root y de los
miembros de Pink Floyd.
Después de mirar los archivos de Roger intento ver que tienen los otros.
Y a la tercera…
Brick? como another brick in the wall? mucha casualidad no? xD
Parece que es un fichero ejecutable, veamos que nos aporta.
Creo que la respuesta a esa pregunta era obvia no? Pero no devuelve nada, o sí?
Una forma chula de cambiar de usuario jeje. Veamos que tiene este señor en su home.
Una vez más un bio.txt y una imagen. La bio para variar la leo por encima xD.
Hoy he aprendido que con el comando ​file puedes ver que tipo de fichero es. Seguro que
cualquiera que lea esto me pondrá de tonto, pero es que soy de Windows jeje.
Pues resulta que de chorra he sacado una información que parece valiosa, el fichero .jpg en
realidad es un fichero Ogg (de audio).
Nos copiamos el fichero por SCP para abrirlo con algún programa de audio. En mi caso uso
clementine que es el que más me gusta en linux.
En cuanto oyes los 3 primeros segundos de canción te das cuenta de que hay un sonido
raro que no cuadra. Creo que puede ser código morse, eso o el batería es malo de cojones
y no sabe llevar el ritmo jajaja. A ver como me las arreglo para sacar solo la parte del código
morse.
Justo ayer hablaba con mi compañero Javi del gran Dani Kachakil que es toda una
eminencia en esto de la esteganografía.
Después de revisar sus papers, charlas y demás y de no haber encontrado lo que quería
me iba a instalar audacity que ya usaba para retocar algunas cosillas de mis grabaciones
con la guitarra, pero buscando algún programa más (por aquello de aprender a manejar
más herramientas) me encuentro con ​Sonic Visualizer​, vamos a probarla.
Me toca pegarme durante una hora con el programa. Seguro que debe haber algún filtro
que limpie la melodía principal y deje escuchar mejor el morse… Pero no doy con ello, así
que toca afinar el oído.
Siguiendo la forma de convertir el morse a texto humano y tras otra hora probando y
apuntando cosas, por fin cobran sentido.
Tras varias modificaciones de la “salida” creo que lo tengo.
.­. .. ­.­. .... .­ .­. ­.. .­­ .­. .. ­­. .... ­ .­­­­ ­­­­. ....­ ...­­ ..­. .­ .­. ..­. .. ... .­
Ahora solo hay que buscar un “decoder” de morse. Podríamos hacerlo con la imagen que
puse arriba, pero estoy aburrido ya del morse y e
​ sta es la solución​ a mis problemas.
Me devuelve ​RICHARDWRIGHT1943FARFISA. Se me ocurre intentar hacer login con la
cuenta pero no va.
Quizá tenga algo que ver que he puesto la contraseña tal cual en mayúsculas y sea en
minúsculas.
Efectivamente era eso, no se porqué había pensado que sería tal cual lo sacas del morse.
De nuevo al mirar el ​home del usuario veo que están los ficheros de siempre. la imagen, el
fichero bio.txt y el mbox.
Primero le hago un cat al mbox que tardo menos que con la foto…
Me quedo bastante colgado porque ni la foto ni el mail me parece que den ninguna pista.
Después de releer el correo tranquilamente, me da la sensación de que me quieren recordar
el comando que usamos al encontrar aquel binario.
For now, just use that command I gave you with the menu.
Después de darle varias vueltas encuentro y ejecuto /usr/local/bin/shineon lo que me
devuelve
Tras pulsar en las cuatro opciones, me da que de aquí no saco nada en claro. Le doy una
vuelta y se me ocurre mirar el código. Con un ​cat sale todo malamente, como era de
esperar, pero me deja ver que es un programa escrito en C. Veámoslo con s​ trings.
Pues la verdad que no me arroja nada de luz, no tengo ni idea de C, así que toca preguntar
a mi compañero Rafa que es un crack (como mola estar rodeado de gente que sabe jeje).
Hablando con Rafa me comenta algo sobre las llamadas que debe hacer un programa en C
que deben ir con las rutas y eso me recuerda que viendo el código ha visto que la llamada a
“mail” no las tiene, y ahí precisamente reside la vulnerabilidad. Rápidamente Rafa se crea
otro programa en C para hacer una prueba de concepto y en cosa de 5 minutos lo tiene
resuelto. Se nos une Amine, un compañero que es otro fuera de serie y rápidamente llega a
la misma conclusión que Rafa sin que le explique nada salvo la temática del juego.
Aún habiéndolo resuelto, hay algo que no nos cuadra (y de hecho tengo que mandar un
mail al creador del juego para que nos lo aclare) y es ahí donde reside el alma de estos
hackers, se cogen el código, lo decompilan y se lían a ver que pasa…
Bueno que me voy del tema jeje. El caso es que lo que hace el programa es mostrar un
menú con 5 opciones y cada una de ella realiza una acción. La 4 precisamente es la que
está mal implementada y a través de ella es con la que podemos escalar privilegios.
Después de crear la prueba de concepto, me decido por crear un enlace simbólico de
/bin/sh a /tmp/mail, exporto el path y ejecuto el binario. De esta manera consigo hacerme
David Gilmour.
Acto seguido y como siempre, miro a ver que hay. Y para no perder la costumbre me
encuentro con la imagen del usuario, la bio el mbox y en este caso me encuentro un .txt
nuevo.
Vamos a ver lo primero el fichero anotherbrick.txt a ver si nos da alguna pista
En el encontramos ​pinkfloyd1965newblogsite50yearscelebration­temp/index.php y al
procesar la imagen nos devuelve ​who_are_you_and_who_am_i que tiene pinta de
contraseña. Parece ser que es la contraseña del usuario David Gilmore...
Así se ve la página de acceso de la nueva web.
Después de un rato revisando todos los links y de procesar las imágenes y no encontrar
nada, recuerdo que alguna prueba de esteganografía con imágenes hay que variar la luz,
espectro, contraste etc para poder ver algo que hay oculto como hice hace tiempo en el blog
en esta entrada​ y ​en esta otra​. Vamos allá.
Como no tengo a mano el pc con photoshop me toca instalar gimp en la kali. Abrimos el
programa con la imagen y le modificamos los siguientes valores. Vamos a Herramientas →
Herramientas de color → Curvas o Colores → Curvas y desde ahí arrastramos con el ratón
hacia arriba y a la izquierda de manera que veamos la imagen como la siguiente. De esta
manera obtenemos /welcometothemachine y ​50696e6b466c6f796435305965617273.
Además el chorizo de números pasado de hexadecimal a texto plano es:
PinkFloyd50Years
Si accedemos a ​/var/www/htdocs/welcometothemachine vemos que hay un fichero, de
nuevo un binario.
Ejecutamos el binario, ponemos la contraseña que hemos sacado de la imagen y…
Me da la sensación que esta vez no se ha modificado nada en la shell como las otras veces
al lanzar el binario, así que hago una búsqueda de los ficheros que se hayan modificado en
los últimos 4 minutos para comprobar si ha cambiado algo y veo que se ha modificado
etc/sudoers.
Que cosa más rara… pruebo a hacer un sudo ­l introduciendo la pass de David Gilmour
who_are_you_and_who_am_i
No puede ser tan fácil… pruebo con un sudo su y taraaaaannnn!!
No se porque me da que después de pegarte con todo hasta volverte loco, las últimas
partes parecen demasiado fáciles.
Llegados a este punto, solo hago un
cd
cat flag.txt
Y ahí lo tenemos!!
Esta máquina tiene cosas chulas de esteganografía, aunque lo del código morse es una
fumada muy grande xD.
Agradecimientos​:
A mis compañeros Rafa y Amine, no solo por su tiempo si no por explicarme todos los
pasos que iban haciendo con el binario, sois unos máquinas!
Al creador de la máquina @xerubus por el currazo del juego.
Recursos utilizados​:
Sonicvisualiser
ASCI to HEX
GIMP
Realizado por Roberto García Amoriz (@1GbDeInfo)
Descargar