5 métodos para la extracción forense de ficheros en capturas de tráfico de red

Buenas,

He estado hace poco trasteando un poco con distintas opciones para la extracción de ficheros de capturas de tráfico de red. Tomé como partida estos dos artículos de SANS, que incluyen listados de herramientas, y quiero compartir con vosotros algunos ejemplos de utilización que podrían seros de utilidad. Son 5 métodos de entre muchos posibles, dos son gráficos, dos son de línea de comandos y el último combina ambos.

He tratado de desarrollar un poco más los textos originales a través de un ejemplo práctico, en este caso, capturando en mi dispositivo móvil el tráfico resultante de instalar una aplicación desde el Android Market. He escogido intencionadamente este ejemplo para hablar sobre captura de tráfico en dispositivos móviles, y el hecho de escoger una aplicación determinada responde únicamente a tomar alguna que quizás nos sirva de ejemplo en futuros artículos. La aplicación en sí es IMO Instant Messenger, uno de tantos clientes que permiten conexión a diversas redes y servicios, como Facebook Chat, Google Talk, Skype, MSN, ICQ/AIM, Yahoo, Jabber, Myspace, Vkontakte.ru y la holandesa Hyves, aunque repito que cualquier otra podría haber servido igualmente.

Para capturar el tráfico he empleado Shark, adaptación del popular Wireshark para Android, que permite capturar el tráfico del dispositivo tanto en modo independiente como operando en tethering, soportando 3G y WiFi. La única pega es que requiere root, con lo que caso de instalarlo, os aconsejo que lo hagáis en un dispositivo de pruebas o que eliminéis los binarios su después de las pruebas. Ya sabéis que soy contrario a tener teléfonos corriendo sistemas operativos con privilegios de super usuario circulando por las calles :)

Sea como fuere, estos métodos funcionan independientemente del origen de la captura de tráfico. Da igual si el tráfico procede de un teléfono Android o de un PC de sobremesa, ya que los ficheros de captura resultantes de una adquisición deben respetar la misma estructura para asegurar la interoperabilidad.

Método 1: Network Miner

El más rápido y visual de todos, y el más indicado para personas que no quieren complicarse la vida. Empleando Network Miner esta tarea es prácticamente inmediata y apenas requiere explicación. La captura es auto explicativa :)

pcap network forensics

El resultado es un paquete que puede ser abierto con cualquier gestor de ficheros comprimidos y en cuyo interior encontraremos la estructura básica de un paquete de instalación APK de Android:

pcap network forensics

Método 2: Wireshark

Tratándose de una captura pcap, parece que tiene sentido trata de efectuar la extracción empleando Wireshark. Al ser un entorno gráfico, la operación es igualmente sencilla y prácticamente también se explica sola. Para ello, localizamos la petición GET Market/Binary, efectuamos sobre ella un Follow TCP Stream y salvamos en formato RAW la totalidad de la conversación entre servidor y cliente:

pcap network forensics

El resultado vuelve a ser un fichero que podemos abrir con cualquier gestor de compresión, al igual que en el ejemplo anterior.

Método 3. Extracción mediante tcptrace

Entramos en las modalidades de la línea de mandatos, y empezamos por tcptrace, una interesante aplicación que aunque lleva desde 2004 en estado vegetativo, posee binarios plenamente funcionales que pueden ser utilizados. El comando a emplear es el siguiente:

tcptrace -e fichero.pcap

Una vez ejecutado el programa observamos los patrones de tráfico y seleccionamos la porción que nos interese:

pcap network forensics

En concreto la línea que nos interesa especifica lo siguiente:

14: android_4af33226b2d182ff:39450 – 74.125.15.178:80 (aa2ab)

Luego si aa2ab es el tráfico entre el dispositivo y el servidor, necesitamos el fichero ab2aa, que contendrá el tráfico entre servidor y dispositivo. Intentamos abrir con el gestor de compresión, al igual que hicimos en los ejemplos anteriores, pero se presenta un error. El tipo de archivo no está soportado:

pcap network forensics

¿Y por qué pasa esto? ¿Por qué no podemos obtener limpiamente el fichero APK tras volcar los datos entre servidor y cliente? Examinamos cabeceras

pcap network forensics

Resulta obvio que mientras en el primer caso tenemos al inicio de la cabecera los valores PK, correspondientes al formato de compresión, en el segundo tenemos lo que aparentemente es una petición HTTP. Comprobamos en el editor hexadecimal:

pcap network forensics

De este examen se deduce que los primeros 436 bytes (offsets 0 a 435) del fichero no pertenecen al fichero que pretendemos extraer en sí. El fichero en sí (estructura PK) da comienzo justo en el offset 436. Existen numerosas maneras para eliminar el sobrante, desde el mismo editor hexadecimal si queremos hacerlo de un modo gráfico, o empleando la consola. En este caso escogemos consola, y de paso ilustramos cómo hacer el corte con dd. El comando a ejecutar es:

dd if=ab2aa_contents.dat bs=436 skip=1 of=cortado.dat

pcap network forensics

En este caso hemos empleado el artificio del tamaño de bloque (block size, bs) para decirle a dd que tenemos un tamaño de bloque de 436 bytes, y que queremos que omita completamente el primer bloque (skip=1) siendo el fichero de entrada ab2aa_contents.dat y el de salida cortado.dat. Como no podía ser de otro modo, ahora si es factible desempaquetar nuestra aplicación:

pcap network forensics

Método 4. Extracción mediante tcpick

Método similar al anterior. En este caso empleamos tcpick, que lleva sin desarrollo activo desde 2005 aunque los binarios son sumamente estables y completos.

El comando a lanzar es:

tcpick -wRC -r fichero.pcap

pcap network forensics

El procedimiento de extracción es exactamente el mismo que hemos visto para el caso de tcptrace, incluyendo la necesidad de eliminar el exceso de los primeros 436 bytes, por lo que no lo repetiremos.

Método 5. Extracción mediante chaosreader

El quinto y último método que veremos implica el uso de chaosreader. Es un script Perl que genera ficheros de datos a partir del tráfico junto a un informe HTML sobre la actividad. El comando a utilizar es:

perl chaosreader0.94 fichero.pcap

Una vez generados los ficheros, abrimos el fichero index.html generado por la herramienta:

pcap network forensics

El fichero session_0019.part_01.zip se puede descargar directamente y no precisa de correcciones en la cabecera.

pcap network forensics

Como habéis visto, distintas maneras de obtener el mismo resultado. Algunos métodos son más didácticos que otros, pero al final de lo que se trata es de ser productivos, con lo que cada cual escoja el que más le plazca. Y si alguien quiere comentar algún otro método, que deje un comentario :)

Un saludo,

9 comentarios sobre “5 métodos para la extracción forense de ficheros en capturas de tráfico de red

Comentarios cerrados.