
Demultiplexor de paquetes TCP/IP. Descargar desde:
Directorio de descargas: http://digitalcorpora.org/downloads/tcpflow/
La mayoría de las distribuciones GNU/Linux comunes incluyen tcpflow en sus repositorios. Así que en Debian/Ubuntu/etc puedes usar
sudo apt-get install tcpflow
y en Fedora/RedHat/CentOS/etc puedes usar
sudo dnf install tcpflow
Y eso es todo. Si esto no es suficiente por alguna razón, puedes compilar desde el código fuente:
Para compilar en Linux
Asegúrate de tener los prerrequisitos necesarios. Hay archivos en el directorio raíz que harán esto por ti, dependiendo de tu sistema operativo:
CONFIGURE_ARCH_17_8.sh CONFIGURE_FEDORA_18.sh CONFIGURE_FEDORA_26.sh CONFIGURE_UBUNTU_16_04.sh
Dependiendo de tu sistema operativo, simplemente:
# sudo bash CONFIGURE_<TUOS>.sh
Una vez que hayas configurado tu sistema operativo, compila e instala con:
./configure
make
sudo make install
Si deseas descargar el árbol de desarrollo con git, asegúrate de hacer un checkout completo con --recursive y luego ejecuta bootstrap.sh, configure y make:
git clone --recursive https://github.com/simsong/tcpflow.git
cd tcpflow
bash bootstrap.sh
./configure
make
sudo make install
Para descargar y compilar en Amazon AMI:
ssh ec2-user@<tu instancia ec2>
sudo bash yum -y install git make gcc-c++ automake autoconf boost-devel cairo-devel libpcap-devel openssl-devel zlib-devel
git clone --recursive https://github.com/simsong/tcpflow.git
sh bootstrap.sh
Para compilar en Windows con mingw en Fedora Core:
yum -y install mingw64-gcc mingw64-gcc-c++ mingw64-boost mingw64-cairo mingw64-zlib
mingw64-configure
make
Para usar CMake, consulta las instrucciones detalladas: cmake/README.md
Desde un repositorio limpio como usuario normal (no root):
./bootstrap.sh # Genera el archivo ./configure
./configure # Genera el archivo tcpflow.spec
rpmbuild -bb tcpflow.spec --build-in-place
Verifica el archivo spec y el RPM resultante:
rpmlint tcpflow.spec
rpmlint ~/rpmbuild/RPMS/x86_64/tcpflow-....rpm
Instalar:
sudo dnf install ~/rpmbuild/RPMS/x86_64/tcpflow-....rpm
tcpflow es un programa que captura datos transmitidos como parte de conexiones TCP (flujos) y almacena los datos de una manera que es conveniente para el análisis de protocolos y la depuración. Cada flujo TCP se almacena en su propio archivo. Así, el flujo TCP típico se almacenará en dos archivos, uno para cada dirección. tcpflow también puede procesar flujos de paquetes 'tcpdump' almacenados.
tcpflow almacena todos los datos capturados en archivos que tienen nombres de la forma:
[timestampT]sourceip.sourceport-destip.destport[--VLAN][cNNNN]
donde: timestamp es una marca de tiempo opcional del momento en que se vio el primer paquete T es un delimitador que indica que se proporcionó una marca de tiempo sourceip es la dirección IP de origen sourceport es el puerto de origen destip es la dirección IP de destino destport es el puerto de destino VLAN es el puerto VLAN c es un delimitador que indica que hay múltiples conexiones NNNN es un contador de conexiones, cuando hay múltiples conexiones con la misma combinación [tiempo]/sourceip/sourceport/destip/destport. Tenga en cuenta que el conteo de conexiones rara vez ocurre cuando se realiza el prefijo de marca de tiempo.
AQUÍ hay algunos ejemplos:
128.129.130.131.02345-010.011.012.013.45103
El contenido del archivo anterior serían los datos transmitidos desde el host 128.129.131.131 puerto 2345, al host 10.11.12.13 puerto 45103.
128.129.130.131.02345-010.011.012.013.45103c0005
La sexta conexión desde 128.129.131.131 puerto 2345, al host 10.11.12.13 puerto 45103.
1325542703T128.129.130.131.02345-010.011.012.013.45103
Una conexión desde 128.129.131.131 puerto 2345, al host 10.11.12.13 puerto 45103, que comenzó a las 5:19pm (-0500) el 2 de enero de 2012
128.129.130.131.02345-010.011.012.013.45103--3
Una conexión desde 128.129.131.131 puerto 2345, al host 10.11.12.13 puerto 45103 que se vio en el puerto VLAN 3.
Puedes cambiar la plantilla que se utiliza para crear nombres de archivo con las opciones -F y -T. Si aparece un directorio en la plantilla, este se creará automáticamente.
Si usas la opción -a, tcpflow interpretará automáticamente las respuestas HTTP.
Si el archivo de salida es
208.111.153.175.00080-192.168.001.064.37314,
Entonces el postprocesamiento creará los archivos:
208.111.153.175.00080-192.168.001.064.37314-HTTP
208.111.153.175.00080-192.168.001.064.37314-HTTPBODY
Si el HTTPBODY estaba comprimido con GZIP, es posible que también obtengas un
tercer archivo:
208.111.153.175.00080-192.168.001.064.37314-HTTPBODY-GZIP
Información adicional sobre estos flujos, como su valor hash MD5,
también se escribe en el archivo DFXML
tcpflow es similar a 'tcpdump', ya que ambos procesan paquetes de la red o de un archivo almacenado. Pero es diferente porque reconstruye los flujos de datos reales y almacena cada flujo en un archivo separado para su análisis posterior.
tcpflow entiende los números de secuencia y reconstruirá correctamente los flujos de datos independientemente de las retransmisiones o la entrega fuera de orden. Sin embargo, tcpflow actualmente no entiende fragmentos IP; los flujos que contengan fragmentos IP no se registrarán correctamente.
tcpflow puede generar un archivo de informe resumen en formato DFXML. Este archivo incluye información sobre el sistema en el que se compiló el programa tcpflow, dónde se ejecutó y cada flujo TCP, incluyendo direcciones IP de origen y destino, puertos, número de bytes, número de paquetes y (opcionalmente) el hash MD5 de cada flujo de bytes.
tcpflow utiliza la librería LBL Packet Capture (disponible en ftp://ftp.ee.lbl.gov/libpcap.tar.Z) y, por lo tanto, soporta las mismas expresiones de filtrado enriquecidas que programas como 'tcpdump' soportan. Debería compilarse en la mayoría de las versiones populares de UNIX; consulta el archivo INSTALL para más detalles.
tcpflow es una herramienta útil para comprender los flujos de paquetes de red y realizar análisis forense de redes. A diferencia de programas como WireShark, que muestran muchos paquetes o una sola conexión TCP, tcpflow puede mostrar cientos, miles o cientos de miles de conexiones TCP en contexto.
Un uso común de tcpflow es revelar el contenido de sesiones HTTP. Con tcpflow puedes reconstruir páginas web descargadas a través de HTTP. Incluso puedes extraer malware entregado como 'descargas automáticas'.
Jeremy Elson escribió originalmente este programa para capturar los datos que enviaban varios programas que utilizan protocolos de red no documentados, en un intento de realizar ingeniería inversa de esos protocolos. RealPlayer (y la mayoría de otros reproductores de medios en streaming), ICQ y AOL IM son buenos ejemplos de este tipo de aplicación. Posteriormente se utilizó para el análisis de protocolos HTTP.
Simson Garfinkel fundó Sandstorm Enterprises en 1998. Sandstorm creó un programa similar a tcpflow llamado TCPDEMUX y otra versión del programa llamada NetIntercept. Esos programas son comerciales. Después de que Simson dejara Sandstorm, necesitó un programa de reensamblaje de flujos TCP. Encontró tcpflow y asumió su mantenimiento.