El tcpdump
La utilidad se utiliza para capturar y analizar el tráfico de red. Los administradores de sistemas pueden usarlo para ver el tráfico en tiempo real o guardar el resultado en un archivo y analizarlo más tarde. En este artículo de tres partes, demuestro varias opciones comunes que quizás desee usar en sus operaciones diarias con tcpdump
.
La primera parte comienza con algunos trucos básicos para recopilar información sobre las interfaces y comenzar las capturas.
[ También te puede interesar: Encontrar dispositivos no autorizados en tu red usando Nmap ]
1. Opción -D
tcpdump
con -D
proporciona una lista de dispositivos desde los que puede capturar tráfico. Esta opción identifica qué dispositivos tcpdump
sabe sobre Una vez que vea esta lista, puede decidir en qué interfaz desea capturar el tráfico. También le dice si la interfaz está activa, en ejecución y si es una interfaz de bucle invertido, como puede ver a continuación:
# tcpdump -D
1.tun0 [Up, Running]
2.wlp0s20f3 [Up, Running]
3.lo [Up, Running, Loopback]
4.any (Pseudo-device that captures on all interfaces) [Up, Running]
5.virbr0 [Up]
6.docker0 [Up]
7.enp0s31f6 [Up]
2. Opción -c X
El -c
la opción captura X número de paquetes y luego se detiene. De lo contrario, tcpdump
seguirá funcionando indefinidamente. Entonces, cuando desee capturar solo un pequeño conjunto de paquetes de muestra, puede usar esta opción. Sin embargo, si no hay actividad en la interfaz, tcpdump
sigue esperando.
# tcpdump -c 5 -i any
dropped privs to tcpdump
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on any, link-type LINUX_SLL (Linux cooked v1), capture size 262144 bytes
16:19:22.128996 ARP, Request who-has _gateway tell 192.168.86.81, length 28
16:19:22.130560 IP 172.217.222.189.https > kkulkarni.58810: Flags [P.], seq 3506342975:3506343029, ack 2537104576, win 377, options [nop,nop,TS val 4137065873 ecr 75405758], length 54
16:19:22.130642 IP kkulkarni.58810 > 172.217.222.189.https: Flags [.], ack 54, win 501, options [nop,nop,TS val 75422756 ecr 4137065873], length 0
16:19:22.131198 IP ovpn-3-80.rdu2.redhat.com.36380 > infoblox-trust01.intranet.prod.int.rdu2.redhat.com.domain: 53320+ PTR? 1.86.168.192.in-addr.arpa. (43)
16:19:22.131395 IP kkulkarni.53013 > ovpn-rdu2-alt.redhat.com.https: UDP, length 95
5 packets captured
49 packets received by filter
37 packets dropped by kernel
3. Opción -n
Por lo general, es más fácil trabajar si usa direcciones IP en lugar de nombres, como kkulkarni.53013. como se muestra en la salida anterior. Puedes usar -n
por esto.
# tcpdump -c 5 -i any -n
dropped privs to tcpdump
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on any, link-type LINUX_SLL (Linux cooked v1), capture size 262144 bytes
16:20:21.523375 IP 172.217.9.206.https > 192.168.86.31.34288: Flags [P.], seq 723352132:723352349, ack 2124268216, win 1059, options [nop,nop,TS val 2934032467 ecr 824781066], length 217
16:20:21.563992 IP 192.168.86.31.34288 > 172.217.9.206.https: Flags [.], ack 217, win 12654, options [nop,nop,TS val 824783221 ecr 2934032467], length 0
16:20:22.956717 IP 192.168.86.83.mdns > 224.0.0.251.mdns: 0 [2q] [1au] PTR (QU)? _companion-link._tcp.local. PTR (QU)? _homekit._tcp.local. (88)
16:20:22.956839 IP 192.168.86.83.mdns > 224.0.0.251.mdns: 0*- [0q] 2/0/3 (Cache flush)
16:20:22.956932 IP6 fe80::2:8c40:fdea:5a16.mdns > ff02::fb.mdns: 0*- [0q] 2/0/3 (Cache flush) PTR local., (Cache flush) PTR local. (214)
5 packets captured
5 packets received by filter
0 packets dropped by kernel
4. Opción -s
tcpdump
con -sXXX
le ayuda a controlar el tamaño de la captura. En la segunda línea de la salida anterior, puede ver que dice tamaño de captura 262144 bytes, que es mucho más grande que el paquete. Puedes usar -s
para cambiar el tamaño de captura. Si solo desea inspeccionar los encabezados de los paquetes, puede usar un tamaño más pequeño para la captura. Vea el siguiente ejemplo:
# tcpdump -c 5 -i any -n -s64
dropped privs to tcpdump
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on any, link-type LINUX_SLL (Linux cooked v1), capture size 64 bytes
16:24:39.909994 IP 10.22.3.80.46368 > 10.11.200.20.ldap: Flags [.], ack 2583785634, win 502, options [nop,nop,TS[|tcp]>
16:24:39.910118 IP 192.168.86.31.53013 > 66.187.232.72.https: UDP, length 76
16:24:39.981646 IP 192.168.86.111.mdns > 224.0.0.251.mdns: 0 [5a] [28q] [1n] [1au][|domain]
16:24:39.983954 IP 192.168.86.111.mdns > 224.0.0.251.mdns: 0*- [0q] 2/0/1[|domain]
16:24:40.186150 IP 192.168.86.111.mdns > 224.0.0.251.mdns: 0 [1n] [1au][|domain]
5 packets captured
6 packets received by filter
0 packets dropped by kernel
5. Capturas de puertos
tcpdump
le permite especificar paquetes de red que usan algún puerto X como origen o destino. Por ejemplo, para capturar tráfico DNS, puede usar port 53
. Podría anteponer el puerto palabra clave con src /horario como src port 53
o dst port 53
y filtrarlo aún más.
# tcpdump -i any port 53 -n
16:49:58.979410 IP 10.22.3.80.46391 > 10.11.5.19.domain: 31741+ A? youtube.com. (29)
16:49:58.979450 IP 10.22.3.80.46391 > 10.11.5.19.domain: 4579+ AAAA? youtube.com. (29)
16:49:58.985835 IP 10.11.5.19.domain > 10.22.3.80.44202: 8898 NXDomain 0/1/0 (154)
16:49:58.986761 IP 10.22.3.80.38074 > 10.11.5.19.domain: 43241+ PTR? 31.86.168.192.in-addr.arpa. (44)
16:49:59.015164 IP 10.11.5.19.domain > 10.22.3.80.38074: 43241 NXDomain 0/1/0 (122)
16:49:59.015209 IP 10.11.5.19.domain > 10.22.3.80.46391: 4579 1/0/0 AAAA 2607:f8b0:4004:810::200e (57)
16:49:59.015231 IP 10.11.5.19.domain > 10.22.3.80.46391: 31741 1/0/0 A 172.217.15.78 (45)
16:49:59.015831 IP 10.22.3.80.51955 > 10.11.5.19.domain: 2503+ PTR? 1.122.168.192.in-addr.arpa. (44)
16:49:59.041490 IP 10.11.5.19.domain > 10.22.3.80.51955: 2503 NXDomain 0/1/0 (122)
6. Opción -w
Si desea escribir la salida de tcpdump
a un archivo, use la opción -w
para escribir en un archivo. Si desea ver cuántos paquetes se escribieron, puede agregar -v
.
# tcpdump -c 4 -i any port 53 -w dns.pcap -v
tcpdump: data link type LINUX_SLL2
dropped privs to tcpdump
tcpdump: listening on any, link-type LINUX_SLL2 (Linux cooked v2), snapshot length 262144 bytes
4 packets captured
24 packets received by filter
0 packets dropped by kernel
[ Hoja de referencia gratuita:obtenga una lista de utilidades y comandos de Linux para administrar servidores y redes. ]
Resumir
Como puede ver, tcpdump
es una excelente herramienta para recopilar datos sobre el tráfico de su red. Las capturas de paquetes brindan información útil para la resolución de problemas y el análisis de seguridad.
La segunda parte de esta serie continúa con un vistazo a seis tcpdump
más características y banderas, incluyendo cómo leer los datos capturados. Finalmente, la tercera parte le brinda aún más opciones para recopilar información.