Geekflare recibe el apoyo de nuestra audiencia. Podemos ganar comisiones de afiliación de los enlaces de compra en este sitio.
En Redes de ordenadores Última actualización: 25 de septiembre de 2023
Compartir en:
Escáner de seguridad de aplicaciones web Invicti - la única solución que ofrece verificación automática de vulnerabilidades con Proof-Based Scanning™.

tcpdump es una asombrosa herramienta de línea de comandos para el rastreo de redes. Es un estándar de la industria para capturar y analizar paquetes TCP/IP

La herramienta tcpdump puede ser de gran ayuda a la hora de resolver problemas de rojo. Los paquetes pueden guardarse en un archivo y analizarse posteriormente. Es una buena idea ejecutar esta herramienta de vez en cuando para mantener vigilada su red

¿Qué aspecto tiene la salida de tcpdump?

tcpdump le permite examinar las cabeceras de los paquetes TCP/IP. Imprima una línea por cada paquete, y el comando sigue ejecutándose hasta que pulse Ctrl C para terminar

Examinemos una línea de un ejemplo de salida

20:58:26.765637 IP 10.0.0.50.80 > 10.0.0.1.53181: Flags [F.], seq 1, ack 2, win 453, options [nop,nop,TS val 3822939 ecr 249100129], length 0

Cada línea incluye

  • Marca de tiempo Unix (20:58:26.765637)
  • protocolo (IP)
  • el nombre de host o IP de origen, y el número de puerto (10.0.0.50.80)
  • nombre de host o IP de destino, y número de puerto (10.0.0.1.53181)
  • Banderas TCP (Banderas [F.]). Los flags indican el estado de la conexión. Puede incluir más de un valor, como en este ejemplo [F.] para FIN-ACK. Este campo puede tener los siguientes valores
    • S - SYN. El primer paso para establecer la conexión.
    • F - FIN. Terminación de la conexión.
    • . - ACK. Paquete de acuse de recibo recibido correctamente.
    • P - PULSE. Indica al receptor que procese los paquetes en lugar de almacenarlos en el búfer.
    • R - RST. Comunicación interrumpida.
  • Número de secuencia de los datos del paquete. (seq 1)
  • Número de acuse de recibo (ack 2)
  • Tamaño de la ventana(win 453). El número de bytes disponibles en el búfer de recepción. A continuación aparecen las opciones TCP.
  • Longitud de la carga útil de datos. (length 0)

Instalación

En las distribuciones basadas en Debian, tcpdump puede instalarse con el comando APT

# apt install tcpdump -y

En distribuciones basadas en RPM tcpdump puede instalarse con YUM
#

 yum install tcpdump

-y
O usando DNF si es RHEL 8
#

 dnf install tcpdump -

y

opciones del comando tcpdump

Necesita ser root para ejecutar tcpdump. Incluye muchas opciones y filtros. Ejecutar tcpdump sin ninguna opción capturará todos los paquetes que fluyan a través de la interfaz por defecto

Para ver la lista de interfaces de red disponibles en el sistema y en las que tcpdump puede capturar paquetes

# tcpdump -D

O
#

 Tcpdump --list-interfaces

1.

eth0

2

.nflog (Interfaz Linux netfilter log (NFLOG))

3

.nfqueue (Interfaz Linux netfilter queue (NFQUEUE))

4

.eth1

5

.any (Pseudodispositivo que captura en todas las interfaces)

6

.lo [Loopback] (Loopback

)
Esto es especialmente útil en sistemas que no disponen de un comando para listar interfaces

Para capturar los paquetes que fluyen a través de una interfaz específica, utilice la bandera -i con el nombre de la interfaz. Sin la interfaz -i, tcpdump capturarála primera interfaz de red que encuentre.

# tcpdump -i eth1
tcpdump: salida verbose suprimida, utilice -v o -vv para la decodificación completa del protocolo
escuchando en eth1, link-type EN10MB (Ethernet), tamaño de captura 262144 bytes
01:06:09.278817 IP vagrant-ubuntu-trusty-64 > 10.0.0.

51: Solicitud de eco ICMP, id 4761, seq

1, length 64
01:06:09.279374 IP 10.0.0.51 > vagrant-ubuntu-trusty-64: ICMP echo reply, id 4761, seq 1, length 64
01:06:10.281142 IP vagrant-ubuntu-trusty-64 > 10.0.0.51: ICMP echo request, id 4761, seq 2, length 64

La bandera -v aumenta la información que ve sobre los paquetes, -vv le da aún más detalles

Por defecto, tcpdump resuelve direcciones IP a nombres de host y también utiliza nombres de servicio en lugar de números de puerto. Si DNS está roto o no desea que tcpdump realice búsquedas de nombres, utilice la opción -n.

# tcpdump -n
listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
04:19:07.675216 IP 10.0.2.15.22 > 10.0.2.2.50422: Flags [P.], seq 2186733178:2186733278, ack 204106815, win 37232, length 100
04:19:07.675497 IP 10.0.2.2.50422 > 10.0.2.15.22: Flags [.], ack 100, win 65535, length 0
04:19:07.675747 IP 10.0.2.15.22 > 10.0.2.2.50422: Flags [P.], seq 100:136, ack 1, win 37232, length 36
04:19:07.675902 IP 10.0.2.2.50422 > 10.0.2.15.22: Flags [.], ack 136, win 65535, length 0
04:19:07.676142 IP 10.0.2.15.22 > 10.0.2.2.50422: Flags [P.], seq 136:236, ack 1, win 37232, length

100
Para capturar sólo un conjunto de líneas, digamos 5, utilice la bandera -c

#tcpdump -c 5
04:19:07.675216 IP 10.0.2.15.22 > 10.0.2.2.50422: Flags [P.], seq 2186733178:2186733278, ack 204106815, win 37232, length 100
04:19:07.675497 IP 10.0.2.2.50422 > 10.0.2.15.22: Flags [.], ack 100, win 65535, length 0
04:19:07.675747 IP 10.0.2.15.22 > 10.0.2.2.50422: Flags [P.], seq 100:136, ack 1, win 37232, length 36
04:19:07.675902 IP 10.0.2.2.50422 > 10.0.2.15.22: Flags [.], ack 136, win 65535, length 0
04:19:07.676142 IP 10.0.2.15.22 > 10.0.2.2.50422: Flags [P.], seq 136:236, ack 1, win 37232, length 100

5

paquetes capturados

La salida por defecto de tcpdump utiliza marcas de tiempo Unix. Para capturar paquetes con marcas de tiempo legibles por humanos

# tcpdump -tttt
2020-07-06 04:30:12.203638 IP 10.0.2.15.22 > 10.0.2.2.50422: Flags [P.], seq 2186734102:2186734138, ack 204107103, win 37232, length 36
2020-07-06 04:30:12.203910 IP 10.0.2.2.50422 > 10.0.2.15.22: Flags [.], ack 36, win 65535, length 0
2020-07-06 04:30:12.204292 IP 10.0.2.15.22 > 10.0.2.2.50422: Flags [P.], seq 36:72, ack 1, win 37232, length 36
2020-07-06 04:30:12.204524 IP 10.0.2.2.50422 > 10.0.2.15.22: Flags [.], ack 72, win 65535, length 0
2020-07-06 04:30:12.204658 IP 10.0.2.15.22 > 10.0.2.2.50422: Flags [P.], seq 72:108, ack 1, win 37232, length

36

expresiones de filtro tcpdump

Las expresiones de filtro seleccionan qué cabeceras de paquete se mostrarán. Si no se aplica ningún filtro, se mostrarán todas las cabeceras de paquetes. Los filtros utilizados habitualmente son puerto, host, src, dst, tcp, udp, icmp

filtro puerto

Utilice el filtro de puerto para ver los paquetes que llegan a un puerto específico

# Tcpdump -i eth1 -c 5 puerto 80
23:54:24.978612 IP 10.0.0.1.53971 > 10.0.0.50.80: Flags [SEW], seq 53967733, win 65535, options [mss 1460,nop,wscale 5,nop,nop,TS val 256360128 ecr 0,sackOK,eol], length 0
23:54:24.978650 IP 10.0.0.50.80 > 10.0.0.1.53971: Flags [S.E], seq 996967790, ack 53967734, win 28960, options [mss 1460,sackOK,TS val 5625522 ecr 256360128,nop,wscale 6], length 0
23:54:24.978699 IP 10.0.0.1.53972 > 10.0.0.50.80: Flags [SEW], seq 226341105, win 65535, options [mss 1460,nop,wscale 5,nop,nop,TS val 256360128 ecr 0,sackOK,eol], length 0
23:54:24.978711 IP 10.0.0.50.80 > 10.0.0.1.53972: Flags [S.E], seq 1363851389, ack 226341106, win 28960, options [mss 1460,sackOK,TS val 5625522 ecr 256360128,nop,wscale 6],

longitud 0

filtro host

Para capturar todos los paquetes que llegan o salen del host con dirección IP 10.0.2.15

# tcpdump host 10.

0.2.15

03:48:06.087509 IP 10.0.2.15.22 > 10.0.2.2.50225: Flags [P.], seq 3862934963:3862934999, ack 65355639, win 37232, length 36
03:48:06.087806 IP 10.0.2.2.50225 > 10.0.2.15.22: Flags [.], ack 36, win 65535, length 0
03:48:06.088087 IP 10.0.2.15.22 > 10.0.2.2.50225: Flags [P.], seq 36:72, ack 1, win 37232, length 36
03:48:06.088274 IP 10.0.2.2.50225 > 10.0.2.15.22: Flags [.], ack 72, win 65535, length 0
03:48:06.088440 IP 10.0.2.15.22 > 10.0.2.2.50225: Flags [P.], seq 72:108, ack 1, win 37232,

longitud 36
Para capturar paquetes de un tipo de protocolo específico, por ejemplo, icmp, en la interfaz eth1

# tcpdump -i eth1 icmp
04:03:47.408545 IP vagrant-ubuntu-trusty-64 > 10.0.0.51: ICMP echo request, id 2812, seq 75, length 64
04:03:47.408999 IP 10.0.0.51 > vagrant-ubuntu-trusty-64: ICMP echo reply, id 2812, seq 75, length 64
04:03:48.408697 IP vagrant-ubuntu-trusty-64 > 10.

0.0

.51: ICMP echo request, id 2812, seq 76, length 64
04:03:48.409208 IP 10.0.0.51 > vagrant-ubuntu-trusty-64: ICMP echo reply, id 2812, seq 76, length 64
04:03:49.411287 IP vagrant-ubuntu-trusty-64 > 10.0.0.51: ICMP echo request, id 2812, seq 77, length 64

Combinación de expresiones de filtro

Puede combinar estas expresiones de filtrado con los operadores AND, OR y NOT. Esto le permitirá escribir comandos que puedan aislar paquetes con mayor precisión

Paquetes procedentes de una IP específica y destinados a un puerto específico

# tcpdump -n -i eth1 src 10.0.0.1 y dst puerto 80
00:18:17.155066 IP 10.0.0.1.54222 > 10.0.0.50.80: Flags [F.], seq 500773341, ack 2116767648, win 4117, options [nop,nop,TS val 257786173 ecr 5979014], length 0
00:18:17.155104 IP 10.0.0.1.54225 > 10.0.0.50.80: Flags [S], seq 904045691, win 65535, options [mss 1460,nop,wscale 5,nop,nop,TS val 257786173 ecr 0,sackOK,eol], length 0
00:18:17.157337 IP 10.0.0.1.54221 > 10.0.0.50.80: Flags [P.], seq 4282813257:4282813756, ack 1348066220, win 4111, options [nop,nop,TS val 257786174 ecr 5979015], length 499: HTTP: GET / HTTP/1.1
00:18:17.157366 IP 10.0.0.1.54225 > 10.0.0.50.80: Flags [.], ack 1306947508, win 4117, options [nop,nop,TS val 257786174 ecr 5983566], length 0

Para capturar todos los paquetes excepto ICMP, utilice el operador NOT

# tcpdump -i eth1 not icmp

Guardar las cabeceras de los paquetes en un archivo

Dado que la salida de tcpdump puede pasar bastante rápido por la pantalla, puede guardar las cabeceras de los paquetes en un archivo con la bandera -w. Los archivos para guardar la salida utilizan el formato pcap y tienen la extensión .pcap.

PCAP significa captura de paquetes. El siguiente comando guarda 10 líneas de salida en la interfaz eth1 en icmp.pcap

# tcpdump -i eth1 -c 10 -w icmp.pcap

tcpdump

: escuchando en eth1, tipo de enlace EN10MB (Ethernet), tamaño de captura 262144 bytes
10 paquetes capturados
10 paquetes recibidos por el filtro

0

paquetes descartados por el núcleo

Puede leer este archivo con la bandera -r

tcpdump -r ic

mp.pcap

leyendo del archivo icmp.pcap, link-type EN10MB (Ethernet)
05:33:20.852732 IP vagrant-ubuntu-trusty-64 > 10.0.0.51: ICMP echo request, id 3261, seq 33, length 64
05:33:20.853245 IP 10.0.0.51 > vagrant-ubuntu-trusty-64: ICMP echo reply, id 3261, seq 33, length 64
05:33:21.852586 IP vagrant-ubuntu-trusty-64 > 10.0.0.51: ICMP echo request, id 3261, seq 34, length 64
05:33:21.853104 IP 10.0.0.51 > vagrant-ubuntu-trusty-64: ICMP echo reply, id 3261, seq 34, length 64
05:33:22.852615 IP vagrant-ubuntu-trusty-64 > 10.0.0.51: ICMP echo request, id 3261, seq 35, length 64

Visualización de los detalles del paquete

Hasta ahora sólo hemos visto las cabeceras de los paquetes, para ver el contenido de los paquetes utilice la opción -A. Esto imprime el contenido del paquete en ASCII, lo que puede ser de ayuda en la resolución de problemas de la red. También puede utilizarse la bandera -X para mostrar la salida en formato hexadecimal. Esto puede no ser de mucha ayuda si la conexión está encriptada

# tcpdump -c10 -i eth1 -n -A puerto 80
23:35:53.109306 IP 10.0.0.1.53916 > 10.0.0.50.80: Flags [P.], seq 2366590408:2366590907, ack 175457677, win 4111, options [nop,nop,TS val 255253117 ecr 5344866], length 499: HTTP: GET / HTTP/1.1
E..'.@.@.%.
...
..2...P..M.
uE............
.6.}.Q.bGET / HTTP/1.1
Host: 10.0.0.50
Connection: keep-alive
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, como Gecko) Chrome/83.0.4103.116 Safari/537.36
Accept: text/html,application/xhtml xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.9
If-Modified-Since: Tue, 04 Mar 2014 11:46:45 GMT

Conclusión

tcpdump es fácil de configurar, y una vez que entienda la salida, las diversas banderas y filtros, se puede utilizar para resolver problemas de red y asegurar su red.

  • Vijay Khurana
    Autor
Gracias a nuestros patrocinadores
Más lecturas sobre Redes de ordenadores
Potencia tu negocio
Algunas de las herramientas y servicios que le ayudarán a hacer crecer su negocio.
  • Invicti utiliza el Proof-Based Scanning™ para verificar automáticamente las vulnerabilidades identificadas y generar resultados procesables en tan solo unas horas.
    Pruebe Invicti
  • Web scraping, proxy residencial, gestor de proxy, desbloqueador web, rastreador de motores de búsqueda, y todo lo que necesita para recopilar datos web.
    Pruebe Brightdata
  • Monday.com es un sistema operativo de trabajo todo en uno que te ayuda a gestionar proyectos, tareas, trabajo, ventas, CRM, operaciones, flujos de trabajo y mucho más.
    Prueba Monday
  • Intruder es un escáner de vulnerabilidades en línea que encuentra puntos débiles de ciberseguridad en su infraestructura, para evitar costosas violaciones de datos.
    Prueba Intruder