sábado, 14 de julio de 2018

Writeup Reto 12 CTF #H4F: Emma-ne-de-fur-fur?


Nuevo reto "especial verano" de la mano de @Hackers4Fun (#H4F) donde se ha interceptado un fragmento de código en un email remitido por Tim a Flint "Loco" (El prota de "Lluvia de albóndigas") y deberemos de encontrar lo que esconde.


Manos a la obra

Descargamos y descomprimos con WinRAR el archivo "R3t0_12_H4f.gz" que contiene el siguiente enlace: https://drive.google.com/file/d/1iG_lNnMSU05-kjvbhk9Sk_GMCGnbO-Y1

Nos encontramos con lo que parece un archivo PDF, si lo ejecutamos nos encontraremos con el siguiente texto:


Observamos que es código HTML con una imagen codificada en base64, simplemente seleccionamos todo el código y lo colocamos en cualquier editor de texto (I love you sublime text) y guardamos en .html

Ejecutamos el archivo .html y vemos la siguiente imagen.bmp:


Nos la descargamos y la analizamos con diferentes herramientas (exiftool,binwalk y stegsolve) pero sin ninguna pista que me sirviera de ayuda.

Después de unos minutos de bloqueo, me cambié las gafas "3D" por las lentes graduadas (simplemente limpié los cristales xD) me tropecé con unos extraños pixels que no venían "a cuento" con la imagen. 

Hice zoom y encontré esto:


Es un mensaje en morse! Si tiramos de Photoshop (también sirve Gimp o Fireworks) y jugamos con los niveles podemos conseguir una imagen mas clara, mas o menos lo dejé así:


Con el código mas visible, usamos la tool online y nos dará el siguiente mensaje:


Nos da lo que parece un tipo de "hash" por lo que habrá que hacerle un reversing para continuar con el juego. 

Primero identifiquemos el tipo de hash que hemos obtenido:


Al parecer se trata de un MD5, probamos con MD5decrypt y md5hashing y sin éxito, si ponemos en google "Reverse md5" nos aparece una web llamada GROMWEB y nos proporciona el siguiente mensaje:


Tenemos nuevas pistas! Sabemos que la imagen contiene un archivo oculto, que estará protegido con contraseña y que para extraerlo no podemos usar "Steghide". Por lo que tendremos que usar otras herramientas similares a esta.

Tras probar 4 herramientas diferente, encuentro OpenStego y vemos que nos pide la contraseña y nos exporta un nuevo archivo (level up!)


Hacemos un "cat" y vemos que ahora tenemos un archivo codificado en binario:


Son mas de 300 líneas de binario sin sentido alguno, pruebo abrirlo con bloc de notas y observamos que contiene una especie de "ASCII Art":


Necesitamos alejar el "zoom" para poder llegar a leerlo con mas claridad, el paso siguiente es abrirlo WordPad:


¡Es un código QR! (momento en el que me doy cuenta de la pista en el nombre del archivo..."Fl4g_Qr" xD)

Tras los fallidos intentos de leerlo con lectores online y con mi móvil, nos leemos la wiki de cómo funciona un QR


Sabemos que la base es que se distingan los pixels negro y blanco, por lo que se me ocurre hacer sustitución de caracteres.

Edito el archivo y modifico los "0" que hacen de fondo por un espacio en "blanco" (tecla space):


Y el resultado es este:


Hago otra prueba con el lector de mi móvil y aún es incapaz de leerlo, por lo que se me ocurre repasar "a mano" los pixels en negro con un editor de imágenes (yo utilicé Fireworks).

Sé que si lograba editar al menos la mitad del código QR y conseguir un buen contraste (blanco y negro) podría leer la información que oculta.

Unos minutos después....

Le apuntamos con nuestro móvil (en mi caso, iPhone):


¡Y voilà! La flag es: H4F{H4pPy_H0l1D4Ys}


Ciberconsejos: 

- Un .bmp puede tener mas de un secreto oculto.

- "Aunque los retos de hacking, como en la vida son complicados, pensad que mas complicado es ver a un "chino" echando gasolina". (Asiáticos! Es una cariñosa broma) 

Agradecer al equipo de Hackers4Fun por entretenernos con sus retos y HackPlayers por la mención en su blog.

Hasta la próxima hackers!

sábado, 30 de junio de 2018

Jugando con el conejo - Parte 2

¡Hola! En este segundo artículo sobre el Bash Bunny explicaré paso a paso cómo crear nuestro primer payload.


Lo primero que tenemos que saber es que estos payloads normalmente están escritos en un lenguaje sospechosamente parecido a BASH, llamado Bunny Script, por lo que es muy recomendable saber algo de este lenguaje antes de ponernos a crearlo.

Bunny Script

El Bunny Script tiene una serie comandos para hacer todo el payload.
  • ATTACKMODE sirve para especificar la combinación de dispositivos a emular, como podría ser una tarjeta de red, un teclado o un dispositivo de almacenamiento.
  • QUACK, introduce una pulsación de tecla, una cadena o le podemos indicar un archivo .txt con un Ducky Script.
  • LED, controla el color y el estado del led. Aparte de indicarle un color, podemos indicarle unos patrones ya preestablecidos, como puede ser FINISH, FAIL o SETUP.
  • Q, es un alias de QUACK.
  • DUCKY_LANG sirve indicar el idioma del teclado que se usa para el QUACK.

Modos de ataque

Los distintos modos de ataque son:
  • SERIAL
  • ECM_ETHERNET
  • RNDIS_ETHERNET
  • AUTO_ETHERNET*
  • STORAGE
  • HID
  • OFF
Hay que hacer un inciso e indicar que ECM_ETHERNET sólo sirve para Linux, Mac y Android, mientras que RNDIS_ETHERNET sirve para Windows y para algún Linux. Los modos de ataque podemos combinarlos como queramos, excepto aquellos que impliquen los dos adaptadores de red a la vez. En el último firmware (el 1.5) se ha añadido el modo de ataque llamado AUTO_ETHERNET el cuál sirve para usar automáticamente un modo de tarjeta de red u otro.

Creando el script

Una vez visto un poco de aburrida teoría vamos a crear un payload simple. Lo que vamos a hacer es, primero, poner el modo de ataque para emular una tarjeta de red para que, a continuación, realice un escaneo con nmap y nos guarde el resultado en un .txt. Lo primero vamos a indicarle que el LED se ponga con los colores de SETUP y se ponga en modo de ataque de tarjeta de red.

LED SETUP

ATTACKMODE AUTO_ETHERNET
A continuación vamos a obtener para usarlo a continuación la IP de que se le ha asignado a la máquina y el nombre de la misma.

GET TARGET_IP
GET TARGET_HOSTNAME

La carpeta /root/udisk es la misma que vemos cuando conectamos el conejo en modo armado.
Ahora antes de continuar vamos a comprobar por si no se ha asignado la IP al equipo para abortar el script si fuera necesario. Antes de salirnos le indicamos que ponga el led en FAIL.

if [ -z "${TARGET_IP}" ]; then
   LED FAIL
   exit 1
fi
Ahora viene la parte más interesante, que es donde hacemos el escaneo. Para ello simplemente ponemos el led en modo ATTACK y lanzamos nmap. Para guardar el escaneo, redirigimos la salida del comando a un archivo en la carpeta /root/udisk/loot.

LED ATTACK
nmap -O $TARGET_IP >> /root/udisk/loot/${TARGET_HOSTNAME}.log

nmap $NMAP_OPTIONS $TARGET_IP >> /root/udisk/loot/${TARGET_HOSTNAME}.log
Una vez hecho esto, simplemente le hacemos un sync para sincronizar los datos y evitar perderlos. Antes de hacerlo ponemos el led en modo CLEANUP y al finalizar, FINISH.

LED CLEANUP
sync

LED FINISH


Hay que aclarar, que el modo del led no influye para nada en el funcionamiento del aparato, simplemente es para que nosotros veamos rápidamente cómo va el ataque.

Y para los que seáis de copiar y pegar el script directamente, aquí lo tenéis:

LED SETUP
ATTACKMODE AUTO_ETHERNET

GET TARGET_IP
GET TARGET_HOSTNAME


if [ -z "${TARGET_IP}" ]; then
   LED FAIL
exit 1
fi

LED ATTACK
nmap $NMAP_OPTIONS $TARGET_IP >> /root/udisk/loot/${TARGET_HOSTNAME}.log

LED CLEANUP
sync

LED FINISH

Probando el payload

Todo esto es muy bonito, pero ahora vamos a verlo realmente en acción.

Para ello, lo primero que hay que hacer es introducir el payload en una de las carpetas (switch1 o switch2) habiendo conectado previamente el conejo en modo armado.

Una vez puesto el payload, extraemos el equipo con seguridad y procedemos a ponerlo en el modo de ataque que corresponda.
Y, ¡ya sólo faltaría enchufarlo en algún tu ordenador!.
Para que se vea lo que tardaría este ataque en completarse podemos ver el siguiente video:


Si te has quedado con ganas de indagar más, puedes ver la wiki oficial ( https://wiki.bashbunny.com/#!payload_development.md ).
Un saludo, Rafa Sojo (@RaSr98).




lunes, 25 de junio de 2018

Writeup Reto H4F Stegano: Try 3v3r1Tb1ng


Nuevo reto de Stegano/OSINT, donde tendremos que ayudar a Judy H. (Conejita de Zootrópolis) y a Nick W. (el zorro estafador) a investigar las desapariciones.


Manos a la obra

Nos descargamos la imagen del enlace de Google Drive.

Imagen del reto
La analizamos con exiftool, una de mis herramientas favoritas:


No se observa ninguna evidencia o pista que nos pueda ayudar, vamos a usar "Stegsolve", vamos pasando por los diferentes tipos de planos y......Bingo! tenemos un código de barras.


Exactamente, es un código de barras del tipo Data Matrix, usamos un lector de códigos online y lograremos leer su contenido.


Una vez leído, nos muestra un código en base64, podemos usar para ello ASCII to Hex:


Otro link! Está claro que no nos lo iban a poner fácil....(abriendo otra caja de Paracetamol de 1g)

Entramos en el enlace y nos descargamos el archivo "H4F_Reto_11_.7z", lo descomprimimos y nos aparecerá una carpeta con los siguientes ficheros:


Tenemos 5 imágenes y un archivo de audio en formato .wav. La inercia me lleva a reproducir el archivo de audio, en él se encuentra las instrucciones para resolver el reto (eso sí, el audio está en inglés):

Texto del audio:

Analizando el texto:

1. Nos dice que tenemos el flag "oculta" en este fichero (en el .wav, claro).

2. Indica como "pista" que es importante que usemos "reverse image".

3. También nos dice que la contraseña es cada uno de los distritos, todo junto, en minúsculas y sin exceder los 37 caracteres.

Pues empecemos, para hacer "reverse image" existen varias OSINT TOOLS, pero yo usé "Google Images".

Nota: Para no hacer muy largo, este paso sólo lo haré con la primera imagen, pero son los mismos pasos para el resto de fotos.

Analizamos la primera imagen:


Hacemos clic a cualquiera de los dos enlaces (nos lleva al mismo sitio) y veremos una "wiki" con toda la información del sitio, incluyendo la foto completa de la torre y la localización de esta.


La primera imagen nos lleva al distrito: Sahara Square.

Continuamos usando los mismos pasos con el resto de imágenes y se nos debería de quedar así:

1. Sahara Square
2. Tundratwon
3. Rainforest
4. Savanna
5. Little Rodentia

Por lo tanto, la clave para obtener nuestra flag es: saharatundrarainforestsavannarodentia

Nos dirigimos a la terminal para ejecutar "Steghide" y extraemos el archivo del .wav.


Ahora si, leemos el archivo "Fl4g_b64.txt" y nos dará otro código en base64, decodeamos y nos dará la flag.


La flag es: H4F{B3llw3ther_C0nf13s4}

Caso cerrado, como diría el gran John "Hannibal" Smith (Team A)...."Me encanta que los planes salgan bien" ("purito" incluido, por supuesto).



Hasta otra hackers!!!

sábado, 23 de junio de 2018

Writeup La casa de papel UAM - Episodio 2


Los chicos de Una al Mes nos traen el segundo episodio del reto de hacking de la casa de papel. En él, deberemos de vulnerar ese chat "seguro"que nos ha proporcionado la policía.

Manos a la obra

Abrimos el enlace y nos encontramos con el chat de la policía, lo primero que analizo es el código fuente de la página por si hubiera alguna pista, hay un archivo .js con unos caracteres sin sentido, pero me centro en el chat, ya que esas comillas en chat "seguro" me hace sospechar que por ahí andarán los tiros...

Empiezo a probar varios tipos de ataques, en uno de ellos, logro inyectar un código visualizando una fotografía desde un iframe, esto me hace sospechar que es vulnerables a ataques "XSS" (Cross-Site Scripting).



Sigo probando, pero esta vez le incrustaré una imagen "<img src=andreitacometeelpollo.png onerror=alert(/XSS/) />" y la web nos responde con ....


Si señor! Ya tenemos la password del archivo "episodio2.zip".

Descomprimimos el archivo y nos exporta un archivo de audio llamado episodio2.wav (huele a stego a leguas xD).

Usamos exiftool por si esconde algún metadato interesante.


Nada, vamos a pasarlo por Sonic Visualiser en modo "espectrograma".


Parece que continua el juego, ahora vemos una secuencia numérica que parece corresponder a unas coordenadas.

Si lo buscamos en Google Maps nos lleva hasta este punto.


Esta es la parte, es donde mas tiempo perdí, ya que no sé lo que buscaba, después de pensar y pensar y mirar la calle, coches, personas, carteles y la madre que la.... Encontré esto!


Es el reflejo de las siglas de CSIC reflejadas en la luna trasera de un Mercedes. La pasé a MD5 y nada...

Después de una ronda de trabajo, un par de cafés y varios comentarios en el canal, me dí cuenta que me estaba complicando demasiado, pensé en que la solución debía de estar en las coordenadas y me centré a pasarlas a md5 de todas las formas posibles.

Tras varias pruebas (y un par de paracetamol, la verdad sea dicha xD) dí con la flag correcta, simplemente había que colocar los dígitos respetando el espacio entre ellos.


La flag es: UAM{9bbf31b30acd21df0d35a4d8333b235e}

Con esto se termina el reto y los dolores de cabeza (Daniel Púa y sus secuaces de UAM....Me debéis una caja de aspirinas! Gracias por el reto!

Hasta otra hackers!

domingo, 17 de junio de 2018

Jugando con el conejo - Parte 1

¡Hola!

Hoy os traigo un artículo, que en mi opinión, es la mejor herramienta de Hak5: "Bash Bunny (El Conejo)".

En este primer artículo explicaré qué es el conejo y como empezar a usarlo. Y en los artículos siguientes, mostraré un uso más avanzado del mismo.

¿Qué es el Bash Bunny?

Se trata de un mini-ordenador, que depende del ataque que hagamos, su funcionamiento podrá ser el de: un teclado, una tarjeta de red o un dispositivo de almacenamiento.

Cuando lo compramos en la tienda oficial de Hak5 ( http://www.hakshop.com/bashbunny ) lo que nos llegará es un paquete rojo como este (aunque en la foto se vea un poco rosa 😕).


Cuando lo abramos tenemos el aparato en sí y una tarjeta con las instrucciones de cómo comenzar.


Funcionamiento y configuración

Lo primero que tenemos que saber es que tiene 3 modos de funcionamiento, que cambiamos moviendo un botón. Los tres modos son de izquierda a derecha:
  • Modo de ataque 1
  • Modo de ataque 2
  • Modo de armado



En los dos primeros podemos tener distintos payloads (que ahora explicaré como funciona) para hacer dos ataques distintos. y el último modo sirve para: cargar los payloads, actualizar el firmware, si existe una actualización, o para cambiar la configuración.

Además, tiene un led RGB en el que podemos configurar el color que se enciende en los payloads, para que según lo que pase muestre un color u otro.

Cuando conectemos el Bash Bunny en modo armado en nuestro ordenador, podremos ver la estructura de carpetas que tiene.


Lo más interesante, está en la carpeta payloads, en la que están los scripts (payloads) que se ejecutarán según el modo en el que pongamos el dispositivo.

En ésta carpeta lo que podemos encontrar es algo así:


  • En la carpeta extensions solemos tener scripts necesarios para el funcionamiento de algún payload.
  • En la carpeta library solemos tener una librería de payloads que podemos encontrarlos en el github oficial ( https://github.com/hak5/bashbunny-payloads ).
  • En las carpetas switch1 y switch2 pondremos los payloads para los distintos modos de ataque.

El conejo en acción


Para este primer artículo y a modo de prueba lo que he hecho ha sido coger un script de prueba, el cual pone al conejo en modo teclado y escribe en un bloc de notas el texto que le he indicado.


Y el funcionamiento sería tan simple como esto:



Espero que os haya gustado esta pequeña introducción.
Si queremos saber un poco más siempre podemos ver la wiki oficial que está bastante completa ( https://wiki.bashbunny.com/#!index.md ).

Un saludo, Rafa Sojo (@RaSr98).

miércoles, 30 de mayo de 2018

ConPilar CTF WriteUp: República democrática del Congo (Cuñado Proaso)


Antes de comenzar a explicar la solución del reto, me gustaría agradecer a los chic@s de CONPilar por el gran trabajo que han hecho (y hacen) con sus retos y eventos. (espero conoceros en alguna CON por Valencia o alrededores).

Gracias a todos, sobre todo a @InformaticaEloy por sus consejos y vídeos.

Dicho esto, paso al reto. ;)


En este reto nos piden la contraseña para iniciar sesión de Windows de la 2ª máquina virtual y la flag de un fichero comprimido que está en dicha máquina.

Manos a la obra

Nos descargamos la primera OVA del Link 1 y pasamos a ejecutarla en nuestro VirtualBox. (No voy a explicar como instalar la máquina, doy por hecho que ya lo sabéis, en caso contrario leeros este post).

Nos encontramos con Windows 98SE y un fondo de escritorio "muy de cuñado" (no pude resistir a los molestos sonidos del sistema y lo puse en mute xD).


Para saltarse la contraseña del Windows 98SE, simplemente pulse "intro" o "escape" y estás dentro ;).

Nuestra misión en este sistema será encontrar el programa que tiene en el escritorio, para ver lo que hace y obtener la primera "flag" (recordemos que será la "password" de inicio de la siguiente OVA y fundamental para resolver el reto, ya que por lo contrario hubiera reventado directamente la segunda OVA y no me estaría complicando xD)

nota: Antes de seguir, como está un poco "petadito" el sistema, para ejecutar carpetas o archivos, usaremos el botón derecho del ratón y la acción "abrir/ejecutar". 

Lo dicho, nos dirigimos hasta el escritorio y ahí lo tenemos, ejecutamos el archivo y.....Nos tira el siguiente mensaje!


Tenemos que instalar una impresora y no será sencillo, ya que Windows 98SE no contiene drivers y necesitaremos el CD de Windows para lograr instalar una impresora.

Como no encontraba el CD por mi taller, tiré de archivo.org y encontré este https://archive.org/details/win98se_201607

Así que con ISO en mano, lo arranque e instalé una impresora "genérica" para que me dejara imprimir la información extraiéndolo en un archivo de texto.


Realizamos todo el proceso de instalación de la impresora (recuerda, debes de tener la .ISO de Windows 98SE o el CD) hasta terminar.

Una vez hecho esto, ejecutamos nuevamente la aplicación del escritorio e "imprimimos" la información en un archivo de texto, leemos dicho archivo y tendremos la mitad del reto:

Contraseña 2ª VM: GEP5nbc8fUTkYenl

Continuamos para bingo!

Nos descargamos la máquina virtual del segundo enlace (Link 2) y la ejecutamos en nuestro Virtual Box.

Pero si es un XP! :D


Ponemos la contraseña y......Un "Blaster en toda la frente!! xD


Volvemos arrancar la VM y una vez dentro de Windows XP (y dándonos patadas en el culo) nos vamos a inicio > ejecutar > Y escribimos "shutdown -a" para detener la cuenta atrás.

En el escritorio no hay nada, pero en la papelera parece que hay algo....


Recuperamos el archivo de la papelera, (por comodidad, me compartí una carpeta entre Linux y la VM para analizar y ejecutar archivos con el "pingüino" ;), tiro a descomprimir peeeeero que??


Pide contraseña!! Por un momento se me fue la pinza, quise "hashear" el .rar y tirar de John The Ripper, pero pensé que me llevaría muchas horas y no creo que nadie estuviera "tirando" de fuerza bruta el CTF "in situ".

Alguna pista tendría que haber, y así era, el cuñado es "un proaso del hacking y un master del buscaminas",  vamos a ver la lista de puntuaciones del buscaminas.


Por fin la tenemos, usamos la contraseña en el archivo .rar para terminar el reto.


¿Cómo? ¿No es? No puede ser!! Repaso nuevamente la lista de puntuaciones y observo que la letra R de "PASS_fichero_RAR" se ve entrecortada, eso me hace suponer que la clave no está entera.

Para poder ver la clave entera, tendremos que verla desde regedit.


Ahora si, probamos a descomprimir el archivo y obtenemos el archivo "flag.txt", lo ejecutamos y si! ya tenemos la segunda parte del reto.


Para resolver el reto, introducimos el siguiente flag: GEP5nbc8fUTkYenl,*H8X1@%l65U=kgdR


Hasta la próxima hackers!