TCPDUMP, una introducción y uso básico

Hoy les traigo un pequeño tutorial de tcpdump, este grandioso sniffer de tráfico de red para Linux!

Tcpdump es un sniffer de tráfico de red open source licenciado bajo Licencia 3-clause BSD (http://opensource.org/licenses/BSD-3-Clause) que hace uso de las bibliotecas PCAP para funcionar, por supuesto, también licenciadas como código abierto.

Un sniffer es un paquete de software que permite leer el tráfico qutcpdump-logoe pasa por nuestra tarjeta de red, y trabajarlo de alguna forma. tcpdump lee dicho tráfico, y nos permite ver y analizar diferentes parámetros, así como también filtrar paquetes y tramas dependiendo de ciertos patrones y condiciones complejas.

Cabe aclarar también que tcpdump es uno de los sniffers más conocidos, y es un capturador de paquetes de línea de comandos 🙂

Instalando tcpdump

En Debian, tcpdump se instala de la siguiente manera:

Podremos apreciar que el comando también instala las bibliotecas pcap, puesto que son una dependencia de practicamente todos los sniffers abiertos.

Sintaxis y modificadores

Una sintaxis simple del comando es la siguiente:

Donde OPCIONES hace referencia a modificadores de línea de comando, mientras que PATRON se refiere a los patrones y condiciones de filtrado de tráfico de red.

Algunas opciones interesantes
Algunas opciones extraidas de la gran lista de modificadores de tcpdump (ver man tcpdump) podríamos considerar a las siguientes:

  • -i <iface>
    • Permite especificar la interfaz de red en la que vamos a atender el tráfico.
  • -c <numero>
    • Permite limitar la cantidad de paquetes capturados en un número determinado.
  • -n
    • Evita la resolución de puertos y direcciones ip a nombres.
  • -e
    • Muestra las cabeceras ethernet además del paquete ip.
  • -t
    • No imprime la estampa de tiempo de captura de cada paquete.
  • -x
    • Muestra el contenido hexadecimal de la trama capturada.
  • -xx
    • Idem a -x, pero además muestra el contenido de la cabecera Ethernet.
  • -X
    • Muestra el contenido hexadecimal y en ASCII de la trama capturada.
  • -XX
    • Idem a -X, pero además el contenido incluye los datos de la cabecera Ethernet.
  • -A
    • Solo muesta el contenido ASCII del paquete capturado.
  • -s <numero>
    • Muestra solo los primeros <numero> bytes desde el principio del paquete.
  • -vv
    • Muestra información adicional, incluyendo parámetros de las cabeceras de protocolo.
  • -w file
    • Permite guardar la salida en un archivo con formato pcap.
  • -r file
    • Permite leer los paquetes previamente capturados y almacenados en un archivo pcap.

Veamos algunos ejemplos:

Capturamos comúnmente:

Veamos el contenido hexa:

Ahora junto con el ASCII para interpretarlo:

Ahora veamos solo el ASCII:

Sumemos información adicional de protocolos

(no entraremos en detalle sobre los campos de las cabeceras de cada protocolo -por lo menos en este articulo-)

Ahora guardemos la captura en un archivo .pcap:

Y veamos, por ejemplo, el ascii de lo almacenado:

Conclusiones:

Hemos visto algunos de los modificadores del comando tcpdump. Otras variantes y opciones podemso analizarlas en en man:

En otro artículo podremos analizar las expresiones de filtro de paquetes con las que tcpdump se vuelve una verdadera navaja suiza en el mundo de los sniffers de trafico abiertos!

Les dejo además un breve video en el que podrán ver algunos ejemplos del uso de tcpdump.

Espero les guste y lo puedan aprovechar!