Hace un tiempo vengo trabajando en un proyecto para reemplazar una aplicación que escucha en un puerto TCP y va respondiendo peticiones que le llegan para unos automatismos (no puedo dar muchos más datos…).
El caso es que el desarrollo del nuevo software (que estoy haciendo con Python twisted) se basa en hacer ingeniería inversa a lo que hay montado y aprender de las preguntas y respuestas. Para ello necesitaba capturar paquetes de forma transparente y que el sistema siguiese funcionando. ¡LINUX al rescate!
He montado un minipc industrial con 2 tarjetas de red con Debian. Para que sea transparente las 2 tarjetas de red se han configurado en un puente y conectado como se ve en el esquema de la izquierda, un cable al router y otro al equipo que recibía esas peticiones.
Este es el /etc/network/interfaces:
auto lo iface lo inet loopback iface eth0 inet manual iface eth1 inet manual auto br0 iface br0 inet dhcp bridge_ports eth0 eth1
Para entrar de manera remota, segura y desatendida tiene un VPN (eso es otra historia)…
El paquete que hace la captura de tráfico es tshark (wireshark en modo texto) con este script:
#!/bin/bash cd /root/captures sleep 30 while [ 1 ]; do sleep 10 tshark -i br0 -b filesize:5000 -a files:20 \ -w temp.pcap 'tcp port 8080' >/dev/null 2>&1 || true done
Lo que hace es guardar 20 tramas de 5000 bytes de todo el tráfico que pasa por el puente de red y puerto 8080. Al estar en un bucle infinito el sniffer vuelve a cargar pasados 10 segundos.
Desde un equipo remoto (para que no se llene la tarjeta SD del minipc) se recogen los datos con rsync y se borra el contenido de la carpeta de capturas para analizarlos con más calma y offline con el interfaz gráfico de wireshark.
TRUCO, puedes buscar con rgrep la cadena que necesites en la carpeta de tramas, lo que devolverá en qué archivo de trama se encuentra esa cadena, luego con wireshark y búsqueda por bytes se puede encontrar el momento en el que se encontró y pulsar ‘Follow TCP Stream‘ para ver el diálogo completo en el que se encuentra la cadena buscada.
Eso es todo por hoy.
PD.- Gráfico hecho con GNOME dia.