viernes, 20 de marzo de 2015

Desafío ESET #29: Write Up

WeLiveSecurity es un blog sobre seguridad informatica administrado por la comunidad de analistas de seguridad que trabajan para ESET, si el famoso antivirus!

Cada cierto tiempo en este blog presentan retos en los que cualquiera puede participar, divertirse un rato, aprender y ganar algun premio. Hoy presentaron el reto 29 el cual se basa en buscar un flag, asi que alla vamos....

Entramos al post del blog y nos encontramos con un zip para descargar, pero nos avisan que el mismo tiene una contraseña la cual podemos encontrar si es que logramos resolver el problema en la siguiente imagen...

Otro codigo Qr si...
Tenemos otro codigo Qr como en el Write Up del CTF InfosecInstitute, asi que volvemos a utilizar nuestra herramienta online para decodificar su contenido y nos encontramos con...

RG9Nb3Jl==

Debido a los dos signos "=" del final, nos damos cuenta rapidamente que se trata de un string en base 64, decodificandolo terminamos obteniendo la clave...

DoMore

En este punto tenemos una carpeta llamada "Desafio_-_29" la cual contiene un archivo llamado "Desafio__29.exe" asi que vamos a investigar un poco ese ejecutable.
El primer paso es extraer todos los strings que este contiene por lo que utilizando la herramienta "strings.exe" de SysInternals terminamos obteniendo entre otras cosas...

8fda2e04="Archivo auto-extra
ble WinRAR"

Ok al parecer tenemos un ejecutable que en realidad es un un archivo SFX generado con Winrar, el siguiente paso es abrirlo y ver cuales son sus ordenes de extraccion junto con su contenido...

Un archivo y un comentario.
Adentro de este SFX tenemos un archivo sin extension y un comentario que indica que se realizara la extraccion silenciosamente (Silent = 1) por lo que no veremos ninguna ventana al momento de realizarse la descompresion, tambien vemos que la ruta donde se hara la misma es en "C:\WINDOWS\Temp".
Ahora podemos ejecutar el exe con seguridad de que no se nos paso nada, y buscar ese archivo "Desafio__29" para identificar su contenido gracias a sus primeros bytes, los cuales son...

d0 cf 11
Un poco de Google y nos encontramos con la respuesta : Microsoft Office Document.
Renombramos el archivo a "Desafio__29.doc" por probar y acertamos...
Unas buenas cartas :p

A simple vista no hay ningun flag, pero ahora mismo tenemos un archivo de Word y un reto de una compania de anti malware, donde uno puede guardar malware en un archivo de Office?...
En los Macros!!
Codigo Visual Basic script

Vamos a analizar un poco este codigo ...

En el principio (el cual no esta en la imagen), podemos observar como se declaran las funciones "CreateThread", "VirtualAlloc", "RtlMoveMemory" lo cual nos hace sospechar de que en algun lugar hay codigo ejecutable que sera cargado en memoria gracias al uso de estas funciones anteriormente mencionadas.

Si nos vamos al final del codigo podemos ver "Workbook_Open()", este es un evento que se ejecuta al iniciar el documento siempre y cuando los macros esten activados, el mismo como se puede observar llama a la funcion Auto_Open.

Analizando Auto_Open ...
  • "Array" guarda el codigo ejecutable, codificado en decimal, que sospechabamos que habia.
  • VirtualAlloc reserva memoria con el tamaño justo (gracias a UBound) para almacenar el Array.
  • RtlMoveMemory realiza movimientos de memoria para colocar la shellcode en memoria de manera correcta, toma como destino a "Ffhzpyadi + Spcwl" y como origen a Xosacrosk, siempre realizando movimientos de 1 byte. Por lo que tenemos basicamente en este bucle, un decoder!
  • CreateThread crea un nuevo hilo de ejecucion ejecutando ese codigo.
En este punto convencido de que el flag debe estar en ese shellcode, lo que voy a hacer es cargar en memoria ese shellcode y localizarlo a traves de "Ffhzpyadi" .
Para esto agrego un punto de inspeccion a la variable "Ffhzpyadi" y ejecuto el codigo hasta la linea de CreateThread. Ahora mismo el shellcode deberia estar ya en memoria y para ubicarlo miro el valor de la variable "Ffhzpyadi" el cual es "193003520", pasando a hexadecimal obtenemos "0xb810000".

Abrimos Inmunity Debugger y nos vamos a ver la direccion de memoria que obtuvimos antes, al final de todo nos encontramos con el FLAG!

Flag_is_EnjoySaferTechnology


Y hasta aca llega el reto, felicitaciones a ESET por este tipo de iniciativas para incentivar el aprendizaje en materia de seguridad informatica.

Saludos!

lunes, 16 de marzo de 2015

CTF InfosecInstitute (III)

Ultimo post sobre el CTF de InfosecInstitute, esta vez con retos mas complicados...

Level 11:
Level 11: Level 10 ?
Al entrar en el reto nos encontramos con una imagen que nos indica que hay otro sonido de nuevo, pero mas abajo podemos ver que no hay ningun sonido sino una imagen del logo de php.
Debido a que en el reto anterior estaba esa imagen lol.gif, descargo php-logo-virus.jpg ya que me parece sospechosa y ejecutando...

strings php-logo-virus.jpg

Me encuentro con ....

infosec_flagis_aHR0cDovL3d3dy5yb2xsZXJza2kuY28udWsvaW1hZ2VzYi9wb3dlcnNsaWRlX2xvZ29fbGFyZ2UuZ2lm

Parece ser el flag, pero en realidad la ultima parte esta codificada en base 64, el no tener el "=" o "==" no significa que no sea base 64 ya que el mismo se utiliza como padding y no siempre es necesario.

http://www.rollerski.co.uk/imagesb/powerslide_logo_large.gif

Si vemos la imagen podemos encontrar la palabra powerslide que es la ultima parte de nuestro flag!

Flag: infosec_flagis_powerslide

Level 12:
Leve 12: Css
Misma imagen que el reto 1 por lo que no encontraremos nada ahi, asi que hay que buscar en el codigo fuente de la web. Luego de un poco de busqueda nos encontramos con ...

<link rel="stylesheet" href="css/custom.css">

Si miramos su contenido vemos ...
.thisloveis{
 color: #696e666f7365635f666c616769735f686579696d6e6f7461636f6c6f72;
}

Eso no es un color me parece, pero si es hexadecimal!

Flag: infosec_flagis_heyimnotacolor

Level 13:
Level 13: Reto perdido!!
Parece que el admin perdio el reto :p, nuestro objetivo es buscarlo asi que luego de probar algunas combinaciones comunes de nombres, la buena es...

http://ctf.infosecinstitute.com/levelthirteen.php.old

Si miramos el codigo fuente de esta nueva pagina veremos...

 <p>Do you want to download this mysterious file?</p>

    <a href="misc/imadecoy">
      <button class="btn">Yes</button>
    </a>

Por lo que descargamos ese archivo imadecoy y mirandolo con un editor hexadecimal podemos ver que sus primeros tres bytes son d4 c3 b2, los cuales son los bytes iniciales de un pcap ( Otra captura de red si).
Utilizando Wireshark para abrirlo se puede ver que hay varias conexiones HTTP, por lo que directamente vamos a "Export Objects -> HTTP" y vemos todo lo que Wireshark pudo identificar en la captura.
Al parecer utilizaron "Simple Vulnerable App" desarrollado por "Jay Turla, @shipcod3" para realizar este reto, entre todos los objetos vemos uno llamado HoneyPY.PNG que contiene nuestro flag!

Flag: infosec_flagis_morepackets

Level 14:
Level 14: SQL Dump
Tenemos otro archivo para descargar y en la primera linea ya nos damos cuenta de que va este reto, tenemos una base de datos SQL que fue dumpeada.
Al parecer esa base de datos contenia una instalacion de Wordpress por lo que en principio uno piensa que el flag puede llegar a estar en algun hash de alguna contraseña, pero eso requeriria de bastante tiempo para crackearlo..
Descartado los hashes nos ponemos a buscar informacion que resulte sospechosa y buscando un poco nos encontramos con ...

--
-- Dumping data for table `friends`
--

INSERT INTO `friends` (`id`, `name`, `address`, `status`) VALUES
(102, 'Sasha Grey', 'Vatican City', 'Active'),
(101, 'Andres Bonifacio', 'Tondo, Manila', 'Active'),
(103, 'lol', 'what the???', 'Inactive'),
(104, '\\u0069\\u006e\\u0066\\u006f\\u0073\\u0065\\u0063\\u005f\\u0066\\u006c\\u0061\\u0067\\u0069\\u0073\\u005f\\u0077\\u0068\\u0061\\u0074\\u0073\\u006f\\u0072\\u0063\\u0065\\u0072\\u0079\\u0069\\u0073\\u0074\\u0068\\u0069\\u0073', 'annoying', '0x0a');

En el registro con id 104 podemos ver que su "nombre" es un string en unicode ( \u te permite identificar unicode claramente), decodificandolo nos encontramos con el flag!

Flag: infosec_flagis_whatsorceryisthis

Level 15:

Ultimo y mas complicado reto.
Level 15: Code Execution!
Como podemos ver lo que tenemos es un campo que nos permite ingresar texto sin restricciones y que luego es procesado por el servidor usando php para ejecutar en el sistema el comando dig mas lo que nosotros hayamos ingresado en ese campo, claro ejemplo de php code execution.
Para explotar este fallo simplemente en el campo escribimos ...

google.com;ls -lah

Con esto la salida que nos va a devolver va a ser la de "dig google.com" y ademas la salida del comando "ls -lah" ya que el ";" en sistemas GNU/Linux funciona como indicador de que viene otro comando que debera ser ejecutado.
Salida del exploit
Como se puede ver en la imagen en el mismo directorio hay un archivo .hey el cual contiene...

Miux+mT6Kkcx+IhyMjTFnxT6KjAa+i6ZLibC

Al parecer tenemos un texto codificado, pero hasta aca llege por el momento. Apenas tenga la solucion la publico!

Bonus:

En el reto 15 como vemos hay un php code execution que permite ejecutar comandos en el sistema operativo directamente, en competencias CTFs como esta normalmente estos retos estan muy controlados y limitados los comandos que uno puede ejecutar pero esto no es asi en este CTF.
He reportado este fallo con 2 emails a los organizadores pero hasta este momento no he tenido respuesta, asi que decidi publicarlo aca.
El fallo consiste en que no se limitan los comandos posibles a ejecutar por lo que uno puede hacer...

google.com;uname -a

Y obtener...

Linux ip-1XX-3X-3X-XX 3.13.0-44-generic #73-Ubuntu SMP Tue Dec 16 XX:XX:XX UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

Y asi con otros comandos como cat /etc/passwd, id y cualquiera que pueda ser ejecutado con los privilegios de "www-data".
Espero que los organizadores arreglen esto lo mas rapido posible.

Editado: He recibido respuesta por parte del organizador Ryan Fahey, indicando que aprecia mi nota sobre el nivel 15. Aun asi el fallo sigue sin ser arreglado hasta el dia de la fecha (16/ 03/2015).

Este es el fin de mi Write Up del CTF de InfosecInstitute, espero que haya resultado interesante.
Saludos! 

domingo, 15 de marzo de 2015

CTF InfosecInstitute (II)

Seguimos con los retos del CTF InfosecInstitute, esta vez del 6 al 10...

Level 6 :
Level 6: Captura de red !

Nos encontramos con un .pcap, una captura de trafico de red asi que vamos a descargarla y ver que hay, utilizamos Wireshark para abrirla y nos encontramos con lo siguiente...

Conexiones Cifradas TLS...
Demasiadas conexion cifradas TLS, al parecer se hizo una captura de un equipo que estaba navegando por HTTPS en una web, debido a que esta informacion viaja cifrada no podemos ver cual es el contenido a menos que se tenga el certificado del servidor el cual incluye la clave privada.
Pero como no lo tenemos hay que buscar en los paquetes que no estan cifrados, sin ir mas lejos el primer paquete se puede observar en la imagen que contiene un string que llama la atencion...


696e666f7365635f666c616769735f736e6966666564

Despues de algunas pruebas, me encuentro que es un string con informacion hexadecimal que si lo decodificamos nos encontramos con el flag!

Flag: infosec_flagis_sniffed

Level 7:

f00 not found
Something is not right here???
btw...bounty $70

Eso es lo que nos muestra el reto, pero si vemos la url podemos ver que se esta viendo la URL 404.php, pero normalmente los retos estan en level[Numero escrito en ingles].php .
Asi que vamos a probar que devuelve la URL levelseven.php....
Vacio y Blanco!
No hay nada en esa URL, pero igualmente se puede accesar asi que hay que ver si hay algo escondido. Mirando bien los headers nos encontramos con lo siguiente:


200 aW5mb3NlY19mbGFnaXNfeW91Zm91bmRpdA==

200 OK es normalmente el status que devuelve una web si todo salio correctamente, y ahi hay un base64 asi que decodificandolo nos encontramos con el flag !

Flag: infosec_flagis_youfoundit

Level 8:
Level 8 : app.exe reversing

Misma imagen que antes pero distinta descarga : app.exe, ahora tenemos un ejecutable con lo que seguramente este reto sea sobre Reverse Engineering, el cual es el proceso de extraer informacion sobre el funcionamiento de algo sin tener informacion sobre el !
Para resolver este reto tenemos dos posibilidades:

  1. Utilizamos el comando string app.exe en linux y mirando en la salida encontramos el flag.
  2. Hacemos uso de IDA o algun debugger y miramos cuales son los strings que almacena el ejecutable.
En mi caso hize uso de Ida ya que crei que iba a ser un poco mas complejo...para resolverlo simplemente iniciamos Ida y cuando haya terminado el analisis veremos lo siguiente:

Assembler de app.exe
Lo que ven es el codigo Assembler de app.exe, un pequeño programa que a simple vista muestra un mensaje y luego llama al comando netstat, si miramos bien encontraremos el flag el cual esta ubicado en la variable aInfosec_flagis.

Flag: infosec_flagis_0x1a

Level 9:
Level 9 : Login
En este nivel nos encontramos con un login el cual seguramente si lo pasamos obtendremos el flag, ahora la cuestion es como logearse correctamente.
Lo primero que se me vino a la mente fue utilizar SQL Injection asi que coloque una ' en el usuario y la contraseña, pero no tuve ninguna respuesta...
Debido a que es un CTF para "noobs" pense que la solucion seria mas sencilla por lo que empeze a comprobar credenciales por defecto, luego de varias pruebas encontre que root:attack era la combinacion correcta y me encontre con un alert que decia:

ssaptluafed_sigalf_cesofni

El cual es el flag pero dado vuelta!
Flag: infosec_flagis_defaultpass

Level 10:
Level 10: Audio extraño...
Nos encontramos con otra descarga pero esta vez es un audio un tanto extraño, se escucha algo acelerado pero no se puede entender nada.
Aca las posibilidades son 3:
  1. Esteganografia en el audio: habria que comprobar el histograma para ver si hay informacion guardada alli, tecnica LSB, adjunto de un archivo con algun programa (Steghide).
  2. Metadatos
  3. Reducir la velocidad de audio para ver si lo que hicieron fue acelerarlo solamente.
Luego de algunas pruebas la posibilidad 3 es la correcta, utilizando Audacity hacemos un "Cambio de velocidad" y colocamos -88.00 como "Porcentaje de cambio", con eso podremos escuchar el flag , segun lo que puede escuchar es ...

Flag: infosec_flagis_sound

Hasta aca la segunda parte, solo queda 1 con los ultimos 5 retos!

CTF InfosecInstitute (III)

Saludos!

sábado, 14 de marzo de 2015

CTF InfosecInstitute

El InfosecInstitute esta actualmente hosteando un CTF para "Noobs" con un bounty de $1200 dolares en total, que se distribuiran diferenciadamente entre los mejores Writeups para cada prueba.

En mi caso los CTFs me gustan mucho, se aprende bastante y son divertidos, asi que vamos alla...

Level 1 :

Level 1: Source!
En este nivel la frase lo dice todo: "Que el codigo fuente este con vosotros !", asi que nos vamos a ver el codigo fuente de la web. Click derecho -> Ver codigo fuente y en la primera linea nos encontramos con :

<!-- infosec_flagis_welcome -->

Un comentario de HTML con el Flag!!
Flag: infosec_flagis_welcome

Level 2:
Level 2 : Base 64!
Nos encontramos con una frase que nos indica que la imagen parece estar "rota", y nos dice que si podemos revisar el archivo. Miramos el codigo fuente de la pagina y nos encontramos con lo siguiente:

<div class="lvlone">
   <img src="img/leveltwo.jpeg" /> <br /> <br />

Por lo que la imagen que buscamos esta en /img/leveltwo.jpeg, una vez guardada podemos ver que su contenido es

aW5mb3NlY19mbGFnaXNfd2VhcmVqdXN0c3RhcnRpbmc= 


Por el = del final uno se da cuenta rapidamente que se trata de Base64 un algoritmo de codificacion de texto muy utilizado especialemente en SMTP para envio de adjuntos y enviar la password.
Decodificandolo obtenemos el flag...

Flag: infosec_flagis_wearejuststarting

Level 3:

Level 3 : Qr code!
En este nivel nos encontramos directamente con un Qr Code, el mismo es una imagen que es capaz de guardar informacion tanto texto como binario, podemos utilizar herramientas online o software para decodificar esa informacion.
En mi caso utilize la herramienta online http://zxing.org/ y obtuve lo siguiente

.. -. ..-. --- ... . -.-. ..-. .-.. .- --. .. ... -- --- .-. ... .. -. --.

Esto a simple vista uno puede reconocer que es codigo morse : cortos ( . ) y largos ( - ) repitiendose, decodificandolo con la herramienta MorseCode se obtiene el flag...

Flag:INFOSECFLAGISMORSING

Level 4 :

Level 4: Cookies!
La frase lo dice todo: "HTTP significa Hypertext Transfer Protocol", por lo que debemos buscar en algun elemento de HTTP , lo primero que se me viene a la mente son las cookies, si miramos las cookies nos encontramos con que hay una cookie de sesion llamada fusdorah cuyo contenido es

vasbfrp_syntvf_jrybirpbbxvrf 

Despues de algunas pruebas concluyo que esta codificado en Cesar , un algoritmo de codificacion por desplazamiento, con la herramienta online Chiffre de Cesar lo decodificamos y obtenemos el flag!

Flag:INFOSECFLAGISWELOVECOOKIES

Level 5 :

Al entrar en el reto nos encontramos con un loop infinito de un alert("Hacker"); para seguir necesitamos pararlo asi que si usamos Firefox hacemos click en "Evitar que esta pagina cree dialogos adicionales" o si usamos otro navegador podes deshabilitar javascript antes de entrar.
Una vez entramos, nos encontramos con lo siguiente :

Level 5 : Esteganografia !
Revisando el codigo fuente no encontramos nada ... la imagen a simple vista no contiene nada oculto, si la revisamos con un editor hexadecimal no encontramos nada tampoco.... Ok esto es esteganografia seguro....

Debido a que la imagen es jpeg descartamos LSB debido a la compresion que realiza el algoritmo, no hay un canal Alpha donde guardar pixeles que pueda guardar informacion asi que descartado tambien.
Una busqueda por google nos permite encontrar la Imagen original y podemos ver que la imagen en el reto tiene mayor peso, entonces se utilizo alguna herramienta para cifrar la informacion y guardarla dentro de la imagen.
Luego de algunas pruebas steghide es la herramienta que utilizaron...

steghide extract -sf aliens.jpg
Password: 

Si! no hay password.
Se extrae un archivo llamado All.txt el cual contiene :

011010010110111001100110011011110111001101100101011000110101111
10110011001101100011000010110011101101001011100110101111101110011
011101000110010101100111011000010110110001101001011001010110111001110011

Binario... Si lo decodificamos obtenemos la flag !
Flag: infosec_flagis_stegaliens

Y hasta aca los primeros 5 retos de este CTF, por el momento sencillos pero mas adelante se complica un poco mas...

CTF InfosecInstitute (II)
CTF InfosecInstitute (III)

Saludos!!

Primer post: Presentacion

Hola!
Mi nick es EzequielTBH y mi nombre no es muy dificil de adivinar :) ...
Con este post voy a iniciar mi blog, la idea detras de el es presentar algunas investigaciones que hago en materia de seguridad informatica o informatica en general, software que pongo a prueba, CTFs en los que participo, cosas que voy aprendiendo y mi opinion sobre algunos temas.
Como bien dice el "Acerca de" soy un joven muy interesado en las tecnologias, computadoras y en especial la seguridad informatica y el ethical hacking. Comence desde joven a los 15 años a programar y hoy en dia he alcanzado un nivel de conocimiento que me permite poder crear este blog y compartir informacion que a muchos podra serle util, y con su feedback ampliar este conocimiento.

Para los siguientes 3 post voy a presentar un Writeup sobre el CTF de InfosecInstitute, presentare la forma de resolver cada prueba y una explicacion lo mas amena posible sobre los conocimientos tecnicos de estas pruebas.

Sin mas que decir ....
Saludos !!