Hemos vistos diversas herramientas de análisis de tráfico de red. Hemos estudiados estas herramientas de forma onffline a través de ficheros de captura de red .pcap, online o en tiempo real y, además, hemos visto herramientas de análisis de forma visual.
En esta ocasión vamos a ver una herramienta para el análisis de flujos TCP. Se trata de Streams, una herramienta desarrollada por Tillmann Werner que procesa y analiza los streams TCP a partir de ficheros .pcap. Se basa en línea de comandos para el proceso, filtrado, etc datos de las sesiones.
Veremos brévemete su uso a través del análisis de un fichero .pcap.
Instalación de Streams.
Para la instalación yo he usado git porque mediante wget, etc tuve algún que otro problema.
git clone git://git.carnivore.it/streams.git
cd streams/
autoreconf -fv –install
./configure –with-libreadline-includes=/usr/include/readline/
make
make install
Uso básico de Streams.
nos situamos en /opt/streams/bin$ y
sudo ./streams
Tenemos lo siguiente:
alfon@alfonubuntu:/opt/streams/bin$ sudo ./streams
Ahora vamos a indicar el archivo .pcap a analizar. Para ello usamos el comando analyze:
> analyze /home/alfon/pcap/02032011.pcap
la respuesta:
file processed, 1328 streams (1154 non-empty and complete).
Podemos realizar un listado con list para ver todos y cada uno de los streams con la siguiente información:
1: 0.291104 18.640350 192.168.1.245:13266 > 192.168.1.11:4002 (20830 bytes)
- 1 número / identificación de la sesión
- 0.291104 marca de tiempo del comienzo
- 18.640350 marca tiempo final del stream
- 192.168.1.245:13266 IP origen y puerto
- 192.168.1.11:4002 IP destino y puerto
- (20830 bytes) bytes totales del stream
Usamos el comando filter para establecer o no el filtrado de tal forma que veamos o no todos los streams o que veamos los streams completos y no vacíos.
Ahora usamos bpf para establecer un filtro de este tipo:
> bpf host 192.168.1.11 and port 993
y hacemos un list:
Aplicando el filtro tenemos dos sesiones, 0 y 2. Vamos a verlas. Para ello vamos a hacer uso de un programa externo con el comando ext. Por ejemplo podenos usar hexdump (contenido hexadecimal) ó hd (hexadecimal y ASCII). Para ello:
> ext hexdump ó ext hd
y con el comando pipe pasamos la sesión que queramos a hexdump o hd:
Aplicamos de nuevo el comando bpf para dsactivar el filtro y aplicamos uno nuevo:
Otro ejemplo.
Voy a usar un fichero .pcap de los repositotrios Wireshark. Hacemos lo mismo. Abrimos el archivo y hacemos un list para ver las sesiones:
alfon@alfonubuntu:/opt/streams/bin$ sudo ./streams _ _____ _____ ___| |_ _ __ ___ __ _ _ __ ___ ___ _____ |_____|_____| / __| __| '__/ _ \/ _` | '_ ` _ \/ __| |_____| _ |_____|_____| \__ \| | __/ (_| | | | | | \__ \ _ _ _ (_|_)____ (_) |___/\__|_| \___|\__,_|_|
|_|___/ (_) (_|_) |_____| version 0.1.0, Copyright (C) 2011 by Tillmann Werner streams> analyze /home/alfon/pcap/smtp.pcap file processed, 2 streams (2 non-empty and complete). streams> list 0: 0.000000 7.235530 10.10.1.4:1470 > 74.53.140.153:25 (14705 bytes) 1: 0.346950 7.576953 74.53.140.153:25 > 10.10.1.4:1470 (538 bytes) streams>
Se trata de una sesión SMTP. Se trata de un fichero .pcap pequeño pero podría ser que fuese un archivo mucho más grandes y no de solo dos sesiones. En el siguiente ejemplo vamos a usar el comando match para realizar búsquedas en los streams:
streams> analyze /home/alfon/031110.cap file processed, 12928 streams (12155 non-empty and complete). streams>
Este tiene 12928 sesiones. Vamos a usar match para buscar:
En este o cualquier otro caso, cuando tengamos iudentificado los datos que necesitemos, por ejemplo ficheros del tipo (.pdf, .jpg, ewtc), podemos salvar a un fichero binario. Lo haremos con los comandos outfile y dump para posteriormente abrirlo y analizarlo:
La secuencia sería:
streams> outfile /home/alfon/fichero.bin streams> dump 3083 180808 bytes written to /home/alfon/fichero.bin streams>
Teenemos otro comandos que es status que, en cualquier momento, nos informa de los filtros aplicados, expresiones bpf usadas o de búsquedas match, aplicación de filter, etc.
Con cualquier comando sin argumentos lo que hacemos es anular le efecto del comando para poder indicar otro valor
====
Hoy hasta aquí por hoy. Hasta la próxima.
Buenas esta parte no se por que me da error
git clone git://git.carnivore.it/streams.git
cd streams/
autoreconf -fv –install
(aqui autoreconf: `configure.ac’ or `configure.in’ is required) el paquete autoreconf lo tengo instalado no entiendo el error
./configure –with-libreadline-includes=/usr/include/readline/
make
make install
Gracias