lunes, 30 de agosto de 2010

Primer desafío :D.

Bueno, como comenté en una de las entradas anteriores, cada vez que tenga un poco de tiempo libre (y me acuerde del blog xD) voy a intentar hacer desafíos de esos que dan vueltas por internet. La idea es empezar con los simples e ir subiendo un poco la dificultad y ver hasta donde puedo llegar xD. Principalmente buscaré desafíos de tipo forenses, al menos por ahora es lo que mas me interesa.
Para empezar elegí (http://forensicscontest.com/2009/09/25/puzzle-1-anns-bad-aim) este primer caso. La introducción está en inglés, y no pienso traducirla D... aprender inglés es muy importante, al menos en este rubro.

El desafío consiste básicamente en analizar una captura de tráfico de una LAN y responder las siguientes preguntas que se plantean.

Para poder ver el tráfico de manera legible utilizamos Wireshark, y nos encontramos con unos 240 paquetes, que van de consultas dns, actualizaciones NTP, paquetes ARP hasta conexiones http ssl tls, etc etc.

Reconocimiento de la red:
Desde la captura obtenida encontramos al menos 6 ordenadores en la red 192.168.1.0/24. Tenemos pcs en las direcciones 10,30,2,157,158,159 (último octeto de la IP real). Un servidor DNS en 10.1.1.20, un gateway y servidor NTP en 192.168.1.10, y un aparente servidor web en 192.168.1.157. Además encontramos algunas IPs públicas de servicios de mensajería instantánea AOL.

La primer secuencia de paquetes interesantes para este caso es la que tiene como origen 192.168.1.158 (pc de anna xD) y destino 64.12.24.50. En esta conexión podemos ver la conversación que mantiene Anna con el chico malo. El chico malo (192.168.1.159) está utilizando un cliente de mensajería que cifra la conversación, no así anna, por eso podemos ver la conversación en gran parte.


Bien, ahora podemos responder la primer pregunta.
1-El amigo malvado de anna se hace llamar "Sec558user1".
2-El primer comentario registrado fue escrito por anna y dice "Here's the secret recipe... I just downloaded it...".
3-También observamos el nombre de un archivo potencialmente de texto "recipe.docx", una vez que el destinatario acepta la transferencia del archivo, se abre una conexión punto a punto entre las dos pcs 192.168.1.158 <-> 192.168.1.159.
4-Buscando un poco por internet se pueden encontrar sitios que listan magic numbers (http://www.garykessler.net/library/file_sigs.html) para distintos tipos de archivos. El magic number que señala archivos de tipo docx es "50 4B 03 04", que si, es exáctamente igual al de archivos de tipo zip.
5-Este punto resultó ser bastante mas complicado que los anteriores xD.
 La siguiente imagen es la captura de la conexión TCP que se abre para transferir el archivo recipe.docx. Los puntos rojos señalan los paquetes que traen carga efectiva (partes del archivo).


Desde otro punto de vista vemos:


"PK" es la traducción ASCII de "50 4B", es decir, a partir de allí existe nuestro archivo. Si pasamos el volcado a Hexa es mas claro:


Ahora viene el trabajo pesado. Como el archivo no es tan grande como para que sea necesario automatizar el proceso, lo hice manualmente. De cada uno de los paquetes marcados con rojo en la imagen de la conexión TCP extraje los bytes de carga, de la siguiente manera: seleccionamos el paquete, vamos a la zona de datos y exportamos los bytes del paquete.


Exportamos uno a uno los 10 paquetes, en mi caso les asigné como nombre las primeras 10 letras del abecedario, es decir a,b,c,d,e,f,g,h,i, y j. Ahora tenemos nuestro documento de texto partido en 10 pedazos xD, poco útil cierto? jajaj. Haciendo uso de una de las maravillas de la ingeniería unimos estos 10 archivos en uno solo, de la siguiente manera:

juan@moon:~/ForensicTests/puzzle1-forensicscontest/Solucion$ cat a b c d e f g h i j > recipe.docx
juan@moon:~/ForensicTests/puzzle1-forensicscontest/Solucion$ md5sum recipe.docx 8350582774e1d4dbe1d61d64c89e0ea1  recipe.docx
juan@moon:~/ForensicTests/puzzle1-forensicscontest/Solucion$ file recipe.docx
recipe.docx: Zip archive data, at least v2.0 to extract


Si!, cat es la maravilla de la ingeniería xD. Unidos los 10 archivos calculamos su checksum y de paso vemos como file lo detecta correctamente como un archivo tipo ZIP. Y ya tenemos el punto 5.

6-Si el punto 5 está bien hecho este es trivial, claro si tenés office instalado!!! :P, pero como no lo tengo recurrimos a GoogleDocs :D y leemos la receta secreta!!!


Y aca concluye el primer desafío. Anna realmente fue parte de una fuga de información y debería ser sancionada como corresponda :P. Sec558user1 se salió con la suya, obtuvo la codiciosa receta secreta y debe estar vendiéndola en ebay xD.

No hay comentarios:

Publicar un comentario