jueves, 2 de septiembre de 2010

Meling Mudin and CS Lee - Art of Network Forensics challenge

En la conferencia HITB (Hack In The Box) del 2009 celebrada en Koala Lumpur los ponentes Meling Mudin y CS Lee presentaron una charla titulada Art of Network Forensic acerca de análisis forense de redes además de publicar un pequeño reto para practicar.

Vamos a ver la resolución del mismo que escribí hace un tiempo, pero antes de nada, aquí os dejo los enlaces:
Presentación: http://conference.hackinthebox.org/hitbsecconf2009kl/materials/D1T1%20-%20Meling%20Mudin%20and%20CS%20Lee%20-%20Art%20of%20Network%20Forensics.zip
Para bajar los torrent con los vídeos de la conferencia: http://video.hackinthebox.org/


RESOLUCIÓN DEL RETO

Primero leemos el enunciado para entender bien lo que hace falta buscar.

Scenario:


name: Chris Michael Long

company email: cmlong@micros.com

Job: Interior Designer


Chris is the interior designer of Company MicroShort(MS), and he is suspected to sell Company design work to another competitor in the industry. The company has enforced the policy where no one can bring in/out USB thumb drive of the Company building.

When Chris's computer is seized, there's no any stolen works found in his hard drive but a piece of software called Eraser, so it is suspected that Chris may erase the files with Eraser to prevent file system forensics, the Company MS has no convincing evident to proof Chris's guilty.

Fortunately, the company has deployed network monitoring system to collect network traffic and they are employing you as Network Forensics Investigator to figure out what Chris has done, extract network-based evident and to answer the following question, you are handed over the network data -


Network-Based Evidence

Case1-IDesign.pcap

MD5 (Case1-IDesign.pcap) = bf9fa16efde670eeb4dff207de663aae


Questions:


What is the IP address of Chris' machine?

What is Chris' non-legitimate email address?

What is the method used to communicate to outsider?

Whom Chris has communicated with?

What is the email address of the outsider?

What is the conversation about between Chris and the outsider?

What is the method used to transfer the file?

What is the name of the transferred file?

When was the file is transferred?

How many file was been transferred?

What is the file type?





EMPEZANDO


Empezamos estudiando las conversaciones TCP para ver los hosts involucrados:


Como podemos observar prácticamente todas las sesiones involucran a una IP con direccionamiento interno, 192.168.229.185.

Vamos a comprobar quién inicia por norma general las sesiones, para ello filtramos los paquetes TCP que tengan sólo el bit de la flag SYN establecido en 1:

skyn3t@skyn3t-desktop: tshark -r captura.pcap -R “tcp.flags==0x02”
10 16.620779 192.168.229.185 -> 69.147.114.224 TCP 1053 > 80 [SYN] Seq=0 Win=65535 Len=0 MSS=1460
30 24.362968 192.168.229.185 -> 209.131.36.158 TCP 1054 > 80 [SYN] Seq=0 Win=65535 Len=0 MSS=1460
[...]
919 70.072442 192.168.229.185 -> 58.27.186.104 TCP 1072 > 80 [SYN] Seq=0 Win=65535 Len=0 MSS=1460
942 95.622633 192.168.229.185 -> 64.4.50.62 TCP 1073 > 1863 [SYN] Seq=0 Win=65535 Len=0 MSS=1460
[...]
84084 1003.498715 192.168.229.185 -> 58.27.186.115 TCP 1308 > 80 [SYN] Seq=0 Win=65535 Len=0 MSS=1460
84085 1003.504627 192.168.229.185 -> 58.27.186.115 TCP 1309 > 80 [SYN] Seq=0 Win=65535 Len=0 MSS=1460


Como podemos observar todas las sesiones se inician desde dicha IP interna, por lo que todo parece indicar que es la IP de Chris.


ESTADÍSTICAS DEL TRÁFICO

Primero conviene saber las estadísticas de tráfico por protocolo para tener una idea general de cómo ha podido enviar el fichero, para ello hacemos:

skyn3t@skyn3t-desktop: tshark -r Case1-IDesign.pcap -qz io,phs


Como podemos observar casi todo el tráfico es HTTP y, además, encontramos mensajería
instantánea (msnms).


ANÁLISIS DE TRÁFICO MSN

Para analizar la conversación de MSN usaremos wireshark, establecemos el filtro a msnms y
observamos la información:


La dirección de correo electrónico que primero aparece es cmlong@gmx.com, además lo hace
como un comando USR del protocolo MSN, utilizado para identificarse, además no es complicado imaginarse que cmlong corresponde a Chris Michael Long.
Observando el tráfico MSNMS en Wireshark vemos otra dirección de correo junto a un comando CAL, usado para invitar a otro usuario a una conversación, por lo que sabemos que Chris se comunicó con vanruni@aol.com


La conversación de msn corresponde a la sesión TCP número 25, por lo que podemos filtrar en
Wireshark con el filtro “tcp.stream eq 25”.

A continuación pongo la conversación (he eliminado comandos por motivos de claridad):

USR 1 cmlong@gmx.com 1997835112.141167137.148230153
hi there
yes
TypingUser: vanruni@aol.com
things ready?
TypingUser: cmlong@gmx.com
oky donky
TypingUser: cmlong@gmx.com
you got the pass
TypingUser: vanruni@aol.com
tip me
TypingUser: cmlong@gmx.com
here's the key
TypingUser: vanruni@aol.com
oh yeah, i forgot to take my door key this morning
TypingUser: vanruni@aol.com
so pass me the key
TypingUser: cmlong@gmx.com
alibaba says hitb56783
TypingUser: vanruni@aol.com
righty, I'm out now. To catch the train!
BYE vanruni@aol.com

Ahí tenemos un gran candidato para ser usado como clave para descomprimir el ZIP.


ANÁLISIS CONSULTAS DNS

Aparte del método anterior de comunicarse mediante MSN debemos comprobar también el tráficoHTTP para buscar una posible fuga de información.

Lo primero es comprobar las peticiones DNS para ver las páginas que se han querido visitar, aunque podrían haberse visitado páginas sin consulta DNS asociada en el caso de que existiese en el fichero hosts o estuviese ya cacheada en memoria.

Extraemos las consultas DNS eliminando las repetidas:

skyn3t@skyn3t-desktop: tshark -r Case1-IDesign.pcap -T fields -e "dns.qry.name" -R "dns.flags == 0x0100"|sort|uniq



Después de comprobar en Wireshark el tráfico HTTP y descartar algunos hosts remotos, como
pueda ser mscom.na-test.llnwd.net (para activar la resolución de red activamos el tick de “View – Name Resolution – Enable for Network Layer” y hacemos click en “View – Reload” o pulsamos Control+R para que recargue el pcap realizando la resolución de dominios.), vemos fácilmente que el dominio gmx.net tiene mucho tráfico.
Si comprobamos qué hay en dicho dominio veremos que es un servicio de email por web.




ANÁLISIS DE TRÁFICO DE GMX.COM

También debemos analizar los correos enviados, por lo que comprobaremos las peticiones POST de HTTP con el filtro http.request.method == "POST" en Wireshark.
Después de estudiar unos segundos la ruta de las peticiones nos damos cuenta de algunos
“comandos” interesantes:


Encontramos un comando mail/create en las sesiones 100 y 108, un comando attachment/upload en la sesión 105 y un comando mail/store mail/send en la sesión 109.
Ahora nos centramos en seguir la sesión 108 y que el contenido del mensaje es (modificado por
motivos de claridad):

"from":"\"chris long\" "
"to":["vanruni@aol.com"]
hi van
There you go, say hi to your mama ;)

También encontramos en la sesión 88 la petición POST para realizar el login, si analizamos el
contenido de la misma rápidamente vemos información que puede resultar importante:

POST /;jsessionid=A89FF5482FD2492DFE9C77825BE5A4D7.www-eu008?
wicket:interface=:0:PanelHead:PanelLogin:ContainerLoginForm:FormLogin:ButtonLogin::IActive
PageBehaviorListener:0:&wicket:ignoreIfNotActive=true&random=0.8111100408479592
HTTP/1.1
Host: gmx.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070725
Firefox/2.0.0.6
[...]
idc_hf_0=&TextfieldEmail=cmlong
%40gmx.com&TextfieldPassword=hitb1234&RadioLoginType=BROWSER&ButtonLogin=1HTT
P/1.1 200 OK


ANÁLISIS DEL ADJUNTO (I) - EXTRACCIÓN

Si seguimos la sesión 105 y vemos el upload encontraremos lo siguiente:

Content-Disposition: form-data; name="file"; filename="haha.zip"
Content-Type: application/octet-stream

PK..
.....4G7;................haha/UT....r.J.s.JUx......jF[F....#p.EPK..............PK.........D7;#
*.....z.......haha/interior-image.docUT....m.J.r.JUx......Y.m...rt'........0.-......
%......n|..A.."0F.3I^.....0..'....X...'..r).M....X..f....OZx2..P.0..6.1...N7...o.y.."...m.
[…]
..........A....haha/UT....r.JUx..PK...........D7;#
*.....z.....
...........T...haha/interior-image.docUT....m.JUx..PK...........D7;.....r..:r....
...............haha/loft-interior-02.docUT....m.JUx..PK...........D7;..a.........!.
............M..haha/urban_interior_design_x1.docUT....m.JUx..PK...........D7;. ..........!.
...........m...haha/urban_interior_design_x3.docUT....m.JUx..PK....................


Observamos que la cabecera del fichero es PK, correspondiente a ficheros ZIP; también observamos que el nombre del fichero es haha.zip y que contiene cuatro ficheros con extensión .doc (recordemos que aunque un fichero tenga una extensión puede ser otro tipo totalmente diferente, como veremos más adelante).

Para extraer los ficheros que se encuentran dentro de un pcap tenemos distintos métodos, lo más fácil suele ser abrirlo con NetworkMiner y él solo se encargará de extraer todo tipo de información de la sesión.



Entre la información que se nos muestra encontramos las direcciones IPs involucradas, que se ha
usado el protocolo HTTPPostMimeFileData (lo que nos indica que es un fichero subido desde el
ordenador de Chris) y el timestamp o fecha.
Tenemos otras opciones (aunque NetworkMiner es el único que lo extrajo bien cuando lo hice) para extraer los ficheros contenidos en el pcap, como, por ejemplo, foremost, chaosreader, tcpxtract, xplico, etc.


ANÁLISIS DEL ADJUNTO (II) - CABECERA

Si editamos el fichero haha.zip con un editor hexadecimal podemos observar que tiene el número mágico 50 4B 03 04, correspondiente con los ficheros ZIP:


ANÁLISIS DEL ADJUNTO (III) - CONTRASEÑA

Cuando intentemos descomprimir el fichero veremos que tiene contraseña, en éste caso tenemos la contraseña en la conversación mantenida entre Chris y su contacto en el exterior: “hitb5678”.

En caso de no disponer de la contraseña no nos quedaría más remedio que intentar sacarla mediante un ataque de fuerza bruta, diccionario, máscara (en caso de saber parte de la contraseña o el patrón usado normalmente para crear contraseñas) o ataque por fuerza
bruta mediante GPU (dependiendo del tipo de hash o cifrado puede no resultar óptimo o posible).

Voy a poner un ejemplo para sacar el pass con el programa fcrackzip:
skyn3t@skyn3t-desktop: fcrackzip -c aA1 haha.zip -v -u
found file 'haha/', (size cp/uc 12/ 0, flags 9, chk 4734)
found file 'haha/interior-image.doc', (size cp/uc 55811/ 56442, flags 9, chk 44bc)
found file 'haha/loft-interior-02.doc', (size cp/uc 29188/ 29242, flags 9, chk 44c3)
found file 'haha/urban_interior_design_x1.doc', (size cp/uc 107000/107290, flags 9, chk 44c7)
found file 'haha/urban_interior_design_x3.doc', (size cp/uc 106456/106934, flags 9, chk 44cb)
checking pw hitb2k3l
PASSWORD FOUND!!!!: pw == hitb5678


ANÁLISIS DEL CONTENIDO (IV) - CONTENIDO

Una vez se haya descomprimido el fichero haha.zip veremos que se extraen cuatro ficheros con
extensión .doc:
interior-image.doc
loft-interior-02.doc
urban_interior_design_x1.doc
urban_interior_design_x3.doc

Si comprobamos los primeros bytes, el número mágico (en Linux dispondremos del fichero usado internamente para buscar números mágicos en: /usr/share/misc/magic), de los ficheros veremos que son del tipo JPEG/JFIF: FF D8 FF E0 xx xx 4A 46 49 46 00.


Bastará con cambiarles la extensión a jpg o abrirlos directamente desde un programa que acepte dicho formato para poder visualizarlos.


PREGUNTAS Y RESPUESTAS

What is the IP address of Chris' machine?
Tal y como vimos al principio del documento la IP del ordenador de Chris es 192.168.229.185.

What is Chris' non-legitimate email address?
Tal y como podemos sacar de la convesación de MSN y del acceso a gmx la dirección no legítima de Chris es cmlong@gmx.com

What is the method used to communicate to outsider?
Chris usó mensajería instantánea, MSN, y el portal web gmx.

Whom Chris has communicated with?
Por la conversación que mantienen se puede entender que son compañeros de piso o similar (Van se ha olvidado la llave). También queda patente la cercanía con el comentario que hace Chris en el mail a Van “There you go, say hi to your mama ;)”

What is the email address of the outsider?
Tal y como se observa en en la conversación de msn y en el mail enviado mediante gmx la
dirección de Van es vanruni@aol.com

What is the conversation about between Chris and the outsider?
Chris le pide la contraseña a Van para ponérsela en el zip, no está implícito, pero la conversación por MSN tiene lugar antes de que se envíe el fichero, por lo que sabemos que Van le está indicando a Chris la contraseña a utilizar.

What is the method used to transfer the file?
Chris envió el fichero como adjunto en un mail enviado a través de la página web de gmx.com.

What is the name of the transferred file?
Tal y como pudimos ver anteriormente el nombre del fichero enviado es “haha.zip”.

When was the file is transferred?
Podemos comprobar la hora a la que se envió el fichero comproband la respuesta HTTP del servidor a las peticiones POST de subida de fichero y de envío de mail:

Subida de fichero (tcp.stream eq 125)
HTTP/1.1 200 OK
Date: Wed, 23 Sep 2009 01:45:21 GMT
Server: Apache-Coyote/1.1
Content-Type: text/html;charset=UTF-8
Content-Length: 238
Vary: Accept-Encoding
Keep-Alive: timeout=15, max=200
Connection: Keep-Alive

Envío de correo (tcp.stream eq 109)
HTTP/1.1 200 OK
Date: Wed, 23 Sep 2009 01:46:11 GMT
Server: Apache-Coyote/1.1
Content-Type: application/json;charset=UTF-8
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Length: 99
Keep-Alive: timeout=15, max=200
Connection: Keep-Alive

How many file was been transferred?
Se ha enviado un único fichero .zip que contenía cuatro ficheros de extensión .jpg con la extensión renombrada a .doc.

What is the file type?
Como vimos analizando el número mágico se trata de un fichero ZIP.

Espero que os haya gustado y lo encontréis útil.

Saludos a todos

No hay comentarios:

Publicar un comentario