Writeup QUAL CTF h-c0n 2019

Como sabéis este año hemos hecho una clasificación para el CTF de la h-c0n 2019 muy peculiar en cuanto el formato respecto al año anterior. Teníamos claro que queríamos poner en liza otro reto tipo 'boot2root' pero esta vez hemos podido servir la máquina online y además poder interactuar con ella y con el juego mediante un bot en Telegram. Gracias otra vez a César, Romam y Pablo respectivamente por hacerlo posible.

Y como siempre vuestra respuesta ha sido increíble y a dos días para cerrar la clasificación o qual ya tenemos el top 20 definitivo de usuarios que pasan a la siguiente fase, es decir, el CTF organizado por iHackLabs:

https://www.h-c0n.com/p/ctf.html#scoreboardqual

Enhorabuena a los clasificados y muchas gracias a todos los que habéis participado, con especial mención a aquellos que se han quedado a las puertas de poder entrar. ¡Seguro que el año que viene lo conseguís!

Por último os dejo con uno de los writeups recibidos por el bot, en este caso el de Joan M. aka magichk:

Tenemos 4 hosts idénticos para hacer el CTF con las siguientes direcciones IP:

X.X.X.70
X.X.X.71
X.X.X.72
X.X.X.73

Pues vamos primero de todo a enumerar. Para ello nos ayudaremos de la herramienta
nmap.


Encontramos cosas interesantes como el puerto 22, 80 y el 10000 abiertos.

Hacemos pruebas con dirb en el puerto 80 pero no encontramos nada relevante más que el
index. Así que vamos al puerto 10000.

Por web ya vemos un error de python como este:

Clasificación para el CTF de la h-c0n 2019 - QUALS

Parece mentira que haya pasado ya un año... en un abrir y cerrar de ojos ya estamos de nuevo con la clasificación que dará derecho a participar en el CTF que realiza iHackLabs para la h-c0n 2019.

En esta ocasión podréis enfrentaros a una máquina estilo "Boot2Root" creada por Cesar Calderón aka @stuxnet, que se deberá vulnerar para conseguir las flags de usuario (user.txt) y de root (root.txt). 

Además este año y gracias también a Romam y Pabloko hemos levantado esta máquina de forma online y el juego se gestionará a través de un canal y bot en Telegram, abajo os detallamos el funcionamiento.

¿Estáis preparados? Sólo los 20 primeros se clasificarán para la final donde podrán optar a diferentes premios. 

La clasificación permanecerá abierta desde el martes 15 de enero a las 23:00 hasta el domingo 20 de enero a las 23:00 horas.

PARA PARTICIPAR SE DEBE ENTRAR AL CANAL DE TELEGRAM https://t.me/joinchat/AAAAAErBE50ArQ28Mh04yw DONDE SE PUBLICARÁ LA IP DE LA MÁQUINA Y EL SCOREBOARD.

GhostTunnel: establece un canal de comunicación encubierto a través de frames probe request y bacon (sin establecer una conexión WiFi)

GhostTunnel de 360PegasusTeam es una herramienta que usa un método de transmisión encubierto que puede usarse en entornos aislados: puede atacar a un objetivo a través de un dispositivo HiD WiFi para lanzar el payload/agente (luego puede quitarse el dispositivo correspondiente) con la particularidad de que GhostTunnel inserta datos en los frames 802.11 Probe Request y Beacon, pero no necesita establecer ninguna conexión wifi.

En el repo de Github teneis el servidor de GhostTunnel y el agente de Windows implementado en c/c++. El agente no necesita privilegios elevados, utiliza el api WiFi nativa del sistema para enviar el 'probe request' y recibir el beacon. También se puede implementar el agente correspondiente en otras plataformas. El servidor se ejecuta en Linux, necesita una o dos tarjetas wifi USB que sean compatibles con el modo monitor y la inyección de paquetes para ejecutarlo.

Ventajas
  • Sistema encubierto
  • No provoca ninguna interferencia con el estado de conexión existente y las comunicaciones del objetivo
  • Puede evadir los firewalls
  • Puede ser utilizado para atacar redes estrictamente aisladas
  • El canal de comunicación no depende de la conexión de red existente del objetivo
  • Permitir hasta 256 clientes
  • Alcance efectivo hasta 50 metros
  • Soporte multiplataforma
  • Se puede usar para atacar cualquier dispositivo con un módulo de comunicación inalámbrico; el ataque ha sido probado en Windows 7, Windows 10 y OSX.
Uso

- El servidor solo necesita una o dos tarjetas de red inalámbricas que sean compatibles con el modo de inyección de paquetes y monitor, como TP-LINK TL-WN722N, Alfa AWUS036ACH.
 ./ghosttunnel [interface]
 ./ghosttunnel [interface1] [interface2]

 COMMANDS:
     sessions = list all clients
     use = select a client to operate, use [clientID]
     exit = exit current operation
     wget = download a file from a client, wget [filepath]
     quit = quit ghost tunnel
     help = show this usage help

- El cliente lanza el payload al sistema objetivo y lo ejecuta

Funciones implementadas
  • Permite crear una shell remota
  • Descargas de archivos: el tamaño máximo del archivo es de 10M y solo puede descargar un archivo a la vez
  • Se pueden agregar otras funciones según sea necesario
Instalación

- Requisitos

apt-get install pkg-config libnl-3-dev libnl-genl-3-dev

- Compilado

Servidor:
    cd src
    make
Cliente Windows:
    Microsoft Visual Studio 2015

Proyecto Github: https://github.com/360PegasusTeam/GhostTunnel

Explotando Smasher (HTB): ROPeando para tocar el shellcode | Parte 1

Antes de nada, desear un feliz año 2019 a todos, que sea un gran año lleno de alegrías y mucho éxito. Después de esto y después de bastante tiempo, me dispongo a escribir la solución paso a paso para poder explotar satisfactoriamente el servidor vulnerable de la máquina Smasher de HackTheBox (ya descatalogada).

Como muchos ya saben por conversaciones en los grupos de Telegram y demás, el servicio que se debe atacar era vulnerable a un buffer overflow sin exploit público, por lo tanto deberemos elaborar nuestro propio exploit para conseguir ejecutar código en la máquina objetivo.

Esta explotación tengo pensada hacerla en dos partes: esta primera sobre una metodología de explotación más especifica sobre el binario, ciñendonos a las condiciones concretas del binario que veremos a continuación, y otro método un poco más general y que se puede emplear en más situaciones como es con la fuga de direcciones de funciones de la librería dinámica glibc...

No me pararé a explicar algunos conceptos, como el de ROP, dado que ya escribí otro entrada en la que explico todo de una manera más introductoria donde explico todo lo que se va a dar por entendido en esta entrada. Esta primera parte tratará por lo tanto de explotar el servicio de una manera más concreta, por lo tanto vamos a proceder con el análisis la vulnerabilidad y como podremos explotarla desde 0.

ANÁLISIS DE LA VULNERABILIDAD

Para empezar, explotando un LFI previo para poder descargar los ficheros correspondientes al servicio, tenemos la posibilidad de descargar el código fuente del binario (a pesar de ser público en Github), lo que nos facilitará cuantiosamente el análisis del binario.

Analizando la función main() se puede observar que tras aceptar una conexión al binario, se ejecuta una función llamada process() a la que se le pasa como argumentos el descriptor de la conexión aceptada e información relativa al socket.


Una de las primeras cosas que se realizan en esta función es "parsear" la petición que nosotros estamos realizando sobre el binario, esta acción se realiza a través de la función parse_request() que toma como argumentos el descriptor mencionado anteriormente y una estructura llamada http_request de la que hablaremos a continuación.


Ahora vamos a ver que sucede con la estructura http_request ya deberemos tenerla en cuenta en el futuro, en ella se almacenará información relativa a la petición que se realice, como por ejemplo, el fichero a abrir. Lo más llamativo de esta estructura es la declaración de un array de 512 caracteres donde se almacenará el nombre del fichero que deseamos abrir del servidor.


Siguiendo el hilo de la ejecución del programa, en la función, se puede observar que ser declarán diversos arrays de tamaño MAXLINE que en el programa está definido como 1024 (longitud máxima de una linea).

Lo más visto del 2018 en Hackplayers

No queremos perder tan arraigada tradición y vamos terminar el año en el blog como lo hemos hecho en los últimos: con el top 50 de las entradas más vistas según Google Analytics y un pequeño resumen de lo acontecido en el periodo.

Primero daros las gracias a todos los que estais ahí al otro lado del monitor, leyendo ya no sólo este blog si no también los locos timelines en Telegram, los hilos del foro, el muro de Facebook, los tweets de Twitter... gracias a todos los que habeis participado de una u otra forma en nuestra pequeña Comunidad pues, como digo siempre, juntos sumamos más.

2018 ha sido un año especial. En febrero celebramos nuestra primera conferencia, la bautizada como h-c0n, una experiencia increible y el cénit a meses previos de trabajo vocacional que sin duda merecieron la pena. Por eso en 2019 volveremos a repetir, siguiendo una línea continuista aunque añadiendo algunas pocas sorpresas que mejoren algunas facetas del evento y que esperamos os gusten.

2018 también ha sido el año que quizás más contribuciones ha recibido en blog, tanto esporádicas como de nuevos autores que se han unido al equipo, para mi algo que merece mención especial porque ayuda a mantener nuestro primer medio. Tampoco me olvido de la fiebre de las máquinas "boot2root" con el estudio de la certificación del OSCP y sobretodo con Hackthebox para el que creamos un repositorio en Github en el que ya han colaborado personas de más de 20 países distintos.

Y seguro que me dejo más de una y dos cosas a destacar, pero lo importante es que en 2019 volvamos a juntarnos para escuchar alguna charla, participar en talleres, jugar a CTFs y, cómo no, echar unas cervezas. Todo por difundir y compartir conocimientos de nuestra pasión por el hacking y la in-seguridad informática ;)

¡Feliz y próspero año nuevo!

Top 50 de entradas más visitadas en el año 2018

[HTB old-but-gold write-ups] Holiday

Buenos días a todos!! Hace tiempo que no había ninguna entrada de máquinas antiguas de HackTheBox así que, qué mejor máquina para estas fiestas que Holiday??



Durante el proceso aprenderemos a bypassear fitros XSS y de User-Agent, a llevar a cabo un ataque Stored XSS exitoso, abusar de privilegios NOPASSWD en sudo y a explotar configuraciones erróneas en NPM. Vamos con ello!

Descubren un backdoor oculto en el asistente por voz Alexa

Millones de usuarios de los altavoces Amazon Echo utilizan las capacidades de Alexa, el asistente virtual con voz humana que informa del tiempo, pide comida para llevar y maneja otras tareas básicas en respuesta a las órdenes de los usuarios. Ya han habido varias noticias sobre varios fallos de seguridad relacionados con el uso de estos dispositivos, como grabaciones sin permiso, filtrado de audios de terceros o compras involuntarias.

Pero hoy la noticia va más allá porque el investigador chino Gao Chen de la Universidad de Fudan en Shangái ha publicado lo que sería un backdoor o puerta trasera que permite habilitar funciones ocultas en estos dispositivos, incluyendo la identificación y el control de otros altavoces "inteligentes" de otros usuarios, lo que se considera un verdadero escándalo ya que la naturaleza intrínseca de esta tecnología podría ocultar una entramado para establecer una red de espionaje a gran escala, convirtiendo de forma indiscriminada a todos los sujetos potencialmente monitorizados.

Y no menos curioso es la forma de acceder a este menú de "super administrador": mediante un audio que simplemente al ser reproducido y escuchado por uno de estos altavoces hace al asistente Alexa revelar una serie de opciones que no dejan de ser sorprendentes y, nos atreveríamos a decir, escandalosas. Si dispones de un Amazon Echo te animamos a probar el audio y comprobarlo por ti mismo:

https://drive.google.com/file/d/1aMla5dOD6LkeKmrC0dr5RtpyM8BH3zAc/view?usp=sharing

Seguiremos atentos a esta noticia, a sus reacciones y repercusiones.

Esta entrada fue publicada el día 28 de Diciembre de 2018, Día de los Santos Inocentes. La noticia sobre el audio-backdoor para Alexa es una broma pero... ¿se descubrirá en un futuro algo oculto similar? El tiempo lo dirá ;)

Solución al reto 28: baby crackme

En el reto número 28 os proporcionábamos un crackme para poner a prueba vuestras habilidades de reversing y animaros a asistir al taller que impartirá @naivenom el próximo 8 de febrero en la h-c0n.
Como siempre vuestra respuesta ha sido genial y, en los pocos días que hemos tenido abierto el reto, hemos recibido la respuesta de tres acertantes a este reto que ya forman parte de nuestro eterno "hall of fame":

1. Mikel  
2. Backbone31
3. MRP314

Sin más no nos queda otra que agradeceros a todos los que habéis intentado resolver el reto y especialmente a los arriba listados, que además nos han remitido unos magníficos writeups. En este post os dejamos quizás el más completo, el de Mikel, aunque abajo encontraréis en PDF todos ellos.

1. Primer acercamiento e identificación del objetivo

Tras obtener el objetivo, se ve la extensión dms, la cual es una extensión extraña y de primeras hace pensar en la dmg de MacOS.


Tras una breve exploración, ese formato pertenece a la plataforma Amiga, pero se duda de que sea un programa de esa plataforma. Para identificar correctamente al objetivo, usamos el comando file, para obtener el tipo de archivo según su MagicNumber, y así focalizar mas y comprobar si la extensión corresponde:


Como vemos obtenemos que es un archivo ELF, de 64 bits, con lo que nos dispondremos a analizarlo un poco más en profundidad. Obtenemos los datos con la aplicación Readelf:


Confirmamos que es un programa ELF y de 64 bits.

[English] COR PROFILERS - Bypassing Windows security restrictions

First of all, even if I'm writing this post, I just gave some support, the most of the research and the creation of the DLLs are from my mate @V2ludDNy or how most of the people on "HTB Hispano" know: Wint3r

If any data is wrong, do not hesitate to write a comment or inform me!

To put us a little in context, one of the lastest machines in HackTheBox was a pain in the ass. A Windows machine with many restrictions but in general very "educational". The thing was that wint3r was really frustrated and wanted to do it without the intended tools... and we finally succeed.

Some months ago I wrote a post here in HackPlayers about Powershell restrictions (https://www.hackplayers.com/2018/11/powershell-is-dead-not-today-my-friend.html). Well, the way that Invisi-Shell loaded his DLL was really strange for us (https://github.com/OmerYa/Invisi-Shell).

Invisi-Shell's DLL comes with 2 bat files that set some enviroment variables ¿¿COR_PROFILER?? that somehow execute the DLL when the Powershell process is started. This was the start of the journey.


>>>>>>>>THEORY<<<<<<<<

To understand what we're going to show it's necessary to become familiar with some concepts. The first thing we need to know is what are Unmanaged code and Managed code and how they differ.

COR PROFILERS - Evadiendo medidas de seguridad en Windows

A las güenas!

Antes de nada, aunque yo escriba el post y haya estado dando algo de support, el grosso de la investigación así como la creación de las DLLs y demás lo ha hecho mi compi @V2ludDNy, o como muchos del grupo de Hack The Box conocereis, Wint3r (también conocido como Wintersito).

Por supuesto, quizás patine en algo de lo que cuente aquí, en ese caso se agradece cualquier tipo de corrección o mejora.

Para poner un poco en contexto, una de las últimas máquinas de Hack The Box es un auténtico grano en el culo. Una máquina llena de restricciones y protecciones que dejarían calvo hasta a un gato siberiano. El caso es que Wint3r se picó con la máquina y decidió que iba a sacarla sin las herramientas "intended"... y al final lo hemos conseguido.

¿Os acordáis del post sobre PowerShell que escribí hace poco aquí en HackPlayers? (https://www.hackplayers.com/2018/11/powershell-is-dead-not-today-my-friend.html) Bueno, pues Invisi-Shell nos llamo mucho la atención por cómo se ejecutaba (https://github.com/OmerYa/Invisi-Shell).

La DLL de Invisi-Shell viene con dos ficheros .bat que lo que hacen es establecer unas variables de entorno ¿COR? ¿PROFILER? y ejecutar PowerShell con ellas, lo que mágicamente ejecutaba la DLL. Aquí es donde empezó toda la investigación.


>>>>>>>>TEORIA<<<<<<<<

Para entender lo que vamos a enseñar en la demostración, es necesario familiarizarse con una serie de conceptos y teoría muy interesantes. En primer lugar debemos entender qué son y en qué se diferencian el "managed" code y el "unmanaged" code.