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 get 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)