TCPDump es el analizador de paquetes de red por línea de comandos más utilizado en el mundo Unix/Linux. Fue creado en 1988 en el Lawrence Berkeley National Laboratory.
¿Qué es Libpcap? Libpcap (Library for Packet Capture) es la biblioteca que subyace bajo TCPDump. Es también la base de Wireshark, Nmap, Suricata, Snort y prácticamente cualquier herramienta de análisis de red en Linux/Unix.
¿Cómo funciona la captura a bajo nivel?
- La NIC recibe un paquete de la red
- El kernel copia el paquete al buffer ring de la NIC
- Libpcap, usando sockets AF_PACKET, accede al buffer
- El filtro BPF (Berkeley Packet Filter) descarta paquetes no deseados EN EL KERNEL
- Los paquetes que pasan se copian al espacio de usuario
- TCPDump los procesa y muestra
BPF (Berkeley Packet Filter): Los filtros de TCPDump corren en el kernel, lo que los hace extremadamente eficientes. Se compilan a bytecode BPF y ejecutan antes de copiar paquetes al espacio de usuario, minimizando el overhead.
Modo Promiscuo: Normalmente una NIC solo captura paquetes dirigidos a su MAC. En modo promiscuo captura TODOS los paquetes que llegan (solo útil en redes hub o con port mirroring en switches).