tcpdump - Captura de Red

tcpdump - Captura de Red

1. Introduccion

tcpdump es una herramienta de linea de comandos para la captura y analisis de paquetes de red. Es ampliamente utilizada en penetration testing, analisis forense y debugging de red por su capacidad de capturar trafico de manera eficiente y granular.

Esta guia cubre la instalacion, sintaxis, filtros y ejemplos practicos para el uso efectivo de tcpdump.


2. Instalacion

2.1. Arch Linux

sudo pacman -S tcpdump

2.2. Kali/Parrot

sudo apt install tcpdump

2.3. macOS

brew install tcpdump

2.4. Dependencias

tcpdump requiere privilegios de root para capturar trafico. Tambien requiere libpcap.

# Instalar libpcap
sudo pacman -S libpcap

3. Sintaxis Basica

3.1. Forma General

tcpdump [opciones] [expresion]

3.2. Listar Interfaces

# Listar todas las interfaces disponibles
tcpdump -D

# Mostrar interfaces con numeros
tcpdump -D

3.3. Captura Basica

# Capturar en interfaz especifica
tcpdump -i eth0

# Capturar en cualquier interfaz
tcpdump -i any

# Capturar con cantidad limitada
tcpdump -i eth0 -c 100
Parametro Descripcion
-i <interfaz> Interfaz de captura
-c <num> Numero de paquetes a capturar
-i any Capturar en todas las interfaces

4. filtros de Captura

4.1. Por Protocolo

# Solo TCP
tcpdump -i eth0 tcp

# Solo UDP
tcpdump -i eth0 udp

# Solo ICMP
tcpdump -i eth0 icmp

# Solo ARP
tcpdump -i eth0 arp

4.2. Por Host

# Filtrar por host
tcpdump -i eth0 host 192.168.1.1

# Solo origen
tcpdump -i eth0 src host 192.168.1.1

# Solo destino
tcpdump -i eth0 dst host 192.168.1.1

4.3. Por Puerto

# Filtrar por puerto
tcpdump -i eth0 port 80

# Puerto origen
tcpdump -i eth0 src port 22

# Puerto destino
tcpdump -i eth0 dst port 443

4.4. Por Red

# Filtrar por red
tcpdump -i eth0 net 192.168.1.0/24

# Red origen
tcpdump -i eth0 src net 10.0.0.0/8

5. Combinaciones

5.1. Operadores Logicos

Operador Descripcion
and AND logico
or OR logico
not Negacion

5.2. Ejemplos de Combinaciones

# TCP en puerto 80
tcpdump -i eth0 tcp port 80

# Host especifico + puerto
tcpdump -i eth0 host 192.168.1.1 and port 443

# Excluir ICMP
tcpdump -i eth0 not icmp

# Excluir varios puertos
tcpdump -i eth0 tcp and not port 22 and not port 443

# TCP + puerto 80 + no HTTPs
tcpdump -i eth0 tcp port 80 and not port 443

6. Opciones de Salida

6.1. Verbose

# Normal (sin verbose)
tcpdump -i eth0

# Verbose (-v)
tcpdump -i eth0 -v

# Muy verbose (-vv)
tcpdump -i eth0 -vv

# Todo verbose (-vvv)
tcpdump -i eth0 -vvv

6.2. Numerico

# No resolver DNS
tcpdump -i eth0 -n

# No resolver puertos
tcpdump -i eth0 -nn

# No resolver nada
tcpdump -i eth0 -nnn

6.3. Contenido

#Mostrar payload en hex
tcpdump -i eth0 -X

# Mostrar payload en ASCII
tcpdump -i eth0 -A

# Mostrar ambos (hex + ASCII)
tcpdump -i eth0 -XX

# Solo cabecera ethernet
tcpdump -i eth0 -e

7. Guardar y Leer Capturas

7.1. Guardar Captura

# Guardar a archivo pcap
tcpdump -i eth0 -w captura.pcap

# Guardar con limite
tcpdump -i eth0 -c 1000 -w captura.pcap
Parametro Descripcion
-w <archivo> Guardar a archivo
-W <num> Rotacion de archivos

7.2. Leer Captura

# Leer desde archivo
tcpdump -r captura.pcap

# Leer con filtro
tcpdump -r captura.pcap host 192.168.1.1

# Leer con verbose
tcpdump -r captura.pcap -v

8. filtros Avanzados

8.1. TCP Flags

# Solo SYN
tcpdump -i eth0 'tcp[tcpflags] & (tcp-syn) != 0'

# Solo ACK
tcpdump -i eth0 'tcp[tcpflags] & (tcp-ack) != 0'

# SYN-ACK
tcpdump -i eth0 'tcp[tcpflags] = (tcp-syn|tcp-ack)'

# FIN
tcpdump -i eth0 'tcp[tcpflags] & (tcp-fin) != 0'

# RST
tcpdump -i eth0 'tcp[tcpflags] & (tcp-rst) != 0'

# Paquetes sin flags
tcpdump -i eth0 'tcp[tcpflags] = 0'

8.2. Offset de Bytes

# Offset 20 (payload HTTP)
tcpdump -i eth0 -A 'tcp[20] = 48'

# Offset 20 + 1 (HTTP POST)
tcpdump -i eth0 -A 'tcp[20:1] = 80'

8.3. Tamanio de Paquete

# Paquetes mayores a cierto tamanio
tcpdump -i eth0 greater 1000

# Paquetes menores a cierto tamanio
tcpdump -i eth0 less 100

9. Ejemplos Practicos

9.1. Captura Basica

# Captura basica en eth0
sudo tcpdump -i eth0

# Capturar solo 100 paquetes
sudo tcpdump -i eth0 -c 100

# Con timestamp detallado
sudo tcpdump -i eth0 -tttt

9.2. filtros Especificos

# Trafico HTTP
sudo tcpdump -i eth0 -nn port 80

# Trafico HTTPs
sudo tcpdump -i eth0 -nn port 443

# Trafico SSH
sudo tcpdump -i eth0 -nn port 22

# DNS queries
sudo tcpdump -i eth0 -nn port 53

# SMB
sudo tcpdump -i eth0 -nn port 445

9.3. Analisis de Conexiones

# Ver handshake TCP
sudo tcpdump -i eth0 -nn host 192.168.1.1 and port 80

# Ver conexiones establecidas
sudo tcpdump -i eth0 'tcp[tcpflags] & (tcp-syn|tcp-ack) = (tcp-syn|tcp-ack)'

9.4. Extraccion de Credenciales

# Capturar passwords HTTP basic
sudo tcpdump -i eth0 -nn -A 'tcp[20] = 48' 2>/dev/null | grep -i "authorization"

# Capturar usernames/passwords
sudo tcpdump -i eth0 -nn -A 'tcp[20:1] = 80' | grep -i "user\|pass"

9.5. Deteccion de Escaneos

# Detectar SYN flood
sudo tcpdump -i eth0 'tcp[tcpflags] & (tcp-syn) != 0 and tcp[tcpflags] & (tcp-ack) = 0'

# Detectar escaneo de puertos
sudo tcpdump -i eth0 'tcp[tcpflags] = (tcp-syn|tcp-ack)'

10. Puertos Comunes

Puerto Servicio Descripcion
21 FTP Transferencia de archivos
22 SSH Shell seguro
23 Telnet Shell remoto
25 SMTP Correo saliente
53 DNS Sistema de nombres
80 HTTP Servidor web
110 POP3 Correo entrante
143 IMAP Correo entrante
443 HTTPS Servidor web seguro
445 SMB Comparticion de archivos
3306 MySQL Base de datos
3389 RDP Escritorio remoto
5432 PostgreSQL Base de datos

11. Opciones de Rendimiento

11.1. Snapshot Length

# Snaplen reducido (solo cabeceras)
sudo tcpdump -i eth0 -s 96

# Snaplen completo
sudo tcpdump -i eth0 -s 0

11.2. Buffer

# Tamano de buffer
sudo tcpdump -i eth0 -B 4096

# Buffer pequeno
sudo tcpdump -i eth0 -B 1024

11.3. Promiscuous Mode

# Desactivar modo promiscuo
sudo tcpdump -i eth0 -p

12. Feedback

12.1. Lo Que Esta Bien

  • filtros completos y bien documentados
  • Ejemplos funcionales
  • Opciones de salida detalladas

12.2. Lo Que Falta

  • Documentacion de filtros BPF avanzados
  • Casos de studio especificos
  • Comparativa con tshark

12.3. Mejoras Recomendadas

  • Agregar filtros para protocolos especificos
  • Documentar extraccion de datos sensibles
  • Agregar analisis de trafico malicioso