Tcpdump es una utilidad de línea de comandos de rastreo de paquetes de red. Se usa más comúnmente para solucionar las redes de problemas y probar problemas de seguridad. A pesar de la ausencia de una interfaz gráfica de usuario, es la utilidad de línea de comandos más popular, potente y versátil.
Es nativo de Linux, de modo que la mayoría de las distribuciones de Linux lo instalan como parte del sistema operativo estándar. TCPDUMP es un programa interfacido de libpcap, que es una biblioteca para la captura de datagrama de red.
Este artículo desmitificará TCPDump mostrando cómo capturar, leer y analizar el tráfico de red capturado en esta utilidad. Más tarde utilizaremos nuestra comprensión para inspeccionar los paquetes de datos con los filtros avanzados del indicador TCP.
Instalación de tcpdump
La instalación predeterminada de TCPDUMP en su distribución depende de las opciones seleccionadas durante el proceso de instalación. En el caso de la instalación personalizada, es posible que el paquete no esté disponible. Puede verificar la instalación de TCPDump utilizando el dpkg comando con el "-s" opción.
ubuntu $ ubuntu: ~ $ dpkg -s tcpdump
O use el comando "sudo apt-get install tcpdump" para instalar tcpdump en Ubuntu Linux.
Captura de paquetes en tcpdump:
Para comenzar el proceso de captura, primero necesitamos encontrar nuestra interfaz de trabajo utilizando el "ifconfig" dominio. O podemos enumerar todas las interfaces disponibles utilizando el tcpdump comando con el "-D" opción.
ubuntu $ ubuntu: ~ $ tcpdump -d
Para comenzar el proceso de captura, puede usar la sintaxis;
tcpdump [-options] [expresión]
Por ejemplo, en el siguiente comando, usamos el "-i"Opción para capturar el tráfico en el"ENP0S3"Interfaz, con un"-C"Bandera para limitar los paquetes capturados y escribir"-w"Es a un test_capture.PCAP archivo.
ubuntu $ ubuntu: ~ $ sudo tcpdump -i enp0s3 -c 20 -W /tmp /test_capture.PCAP
Del mismo modo, puede usar varias combinaciones de filtros para aislar el tráfico según sus requisitos. Uno de esos ejemplos incluye capturar datos de red que salen y llegando al host utilizando el anfitrión comando para un específico puerto. Además, he usado el "-norte"Bandera para evitar que TCPDUMP capture las búsquedas DNS. Esta bandera es muy útil para saturar el tráfico mientras soluciona los problemas de la red.
ubuntu $ ubuntu: ~ $ sudo tcpdump -i enp0s3 -c 20 host 10.0.2.15 y el puerto DST 80 -W /TMP /test_capture1.PCAP
TCPDUMP: Escuchar en ENP0S3, Link-Type EN10MB (Ethernet), Tamaño de captura 262144 bytes
20 paquetes capturados
21 paquetes recibidos por filtro
0 paquetes caídos por kernel
Usamos el "y"Comando para capturar solo paquetes que contienen el host 10.0.2.15 y puerto de destino 80. Del mismo modo, se pueden aplicar varios otros filtros para facilitar las tareas de solución de problemas.
Si no quieres usar el "-C"Bandera para limitar el tráfico de captura, puede usar una señal de interrupción, yo.mi., Ctrl+C, Para detener el proceso de aislamiento.
Lectura de archivos tcpdump
Leer tcpdump archivos capturados puede ser muy abrumador. Por defecto, TCP asigna nombres a direcciones IP y puertos. Usaremos el "-riñonal"Flag para leer nuestro archivo ya capturado test_capture.PCAP guardado en el /TMP carpeta. Encontraremos la salida para asombrar Comando para emitir solo la dirección IP de origen y los puertos y llevarla al comando cabeza para mostrar solo las primeras 5 entradas.
ubuntu $ ubuntu: ~ $ sudo tcpdump -r /tmp /test_capture1.PCAP | AWK -F "" 'Imprima $ 3' | Cabeza -5
Lectura del archivo /tmp /test_capture.PCAP, Link-Type EN10MB (Ethernet)
Ip ubuntu.53298
Ip ubuntu.53298
Ip ubuntu.53298
Ip ubuntu.53298
Ip ubuntu.53298
Sin embargo, se recomienda utilizar direcciones IP y puertos en números para resolver problemas de red. Desactivaremos la resolución de nombre de IP con el "-norte"Nombres de bandera y puerto con"-nn".
ubuntu $ ubuntu: ~ $ sudo tcpdump -i enp0s3 -n
TCPDUMP: Salida detallada suprimida, use -V o -VV para el decodio de protocolo completo
Escuchar en ENP0S3, Link-Type EN10MB (Ethernet), Tamaño de captura 262144 bytes
20:08:22.146354 IP 10.0.2.15.54080> 172.67.39.148.443: Flags [P.], SEQ 1276027591: 1276027630, ACK 544039114, ganar 63900, longitud 39
20:08:22.146745 IP 10.0.2.15.43456> 54.204.39.132.443: Flags [P.], SEQ 3381018839: 3381018885, ACK 543136109, ganancia 65535, longitud 46
20:08:22.147506 IP 172.67.39.148.443> 10.0.2.15.54080: banderas [.], ACK 39, ganar 65535, longitud 0
20:08:22.147510 IP 54.204.39.132.443> 10.0.2.15.43456: Flags [.], ACK 46, ganar 65535, longitud 0
20:08:22.202346 IP 216.58.209.142.443> 10.0.2.15.41050: Flags [P.], SEQ 502925703: 502925826, ACK 1203118935, ganar 65535, longitud 123
20:08:22.202868 IP 10.0.2.15.41050> 216.58.209.142.443: Flags [P.], SEQ 1:40, ACK 123, WIN 65535, Longitud 39
Comprensión de la producción capturada
TCPDUMP captura muchos protocolos, incluidos UDP, TCP, ICMP, etc. No es fácil cubrirlos a todos aquí. Sin embargo, es importante comprender cómo se muestra la información y qué parámetros incluye.
Tcpdump muestra cada paquete en una línea, con una marca de tiempo e información con respecto al protocolo. En general, el formato de un protocolo TCP es el siguiente:
. > . : , , , , ,
Expliquemos uno de los campos de paquetes capturados por campo:
20:08:22.146354 IP 10.0.2.15.54080> 172.67.39.148.443: Flags [P.], SEQ 1276027591: 1276027630, ACK 544039114, ganar 63900, longitud 39
Filtros avanzados
Ahora podemos usar algunas opciones avanzadas de filtro de encabezado para mostrar y analizar solo paquetes de datos. En cualquier paquete TCP, las banderas TCP comienzan desde el 14 ° byte de modo que PSH y ACK estén representados por 4º y 5º bits.
Podemos usar esta información encendiendo estos bits 00011000 o 24 Para mostrar paquetes de datos con solo banderas PSH y ACK. Pasamos este número a tcpdump con el filtro "TCP [13] = 24", Tenga en cuenta que el índice de matriz en TCP comienza en cero.
Filtraremos este paquete de nuestro text_capture.PCAP archivo y usar el -A opción para mostrar todos los detalles del paquete para usted.
Del mismo modo, puede filtrar algunos otros paquetes de bandera usando "TCP [13] = 8" y "TCP [13] = 2" solo para banderas PSH y SYN, etc.
ubuntu $ ubuntu: ~ $ sudo tcpdump -a 'tcp [13] = 24' -r /tmp /test_capture.PCAP
Lectura del archivo /tmp /test_capture.PCAP, Link-Type EN10MB (Ethernet)
19:26:17.827902 ip ubuntu.53298> 32.121.122.34.antes de Cristo.googleusercontent.comunicarse.http: banderas [P.], SEQ 4286571276: 4286571363, ACK 252096002, ganancia 64240, longitud 87: http: get / http / 1.1
E ...:?@[email protected].
... "Zy .2.P ... P ... obtener / http / 1.1
Host: comprobación de conectividad.ubuntu.comunicarse
Aceptar: */*
Conexión: Cerrar
Conclusión
En este artículo, le hemos presentado algunos de los temas más importantes de tcpdump. TCPDUMP, combinado con el poder de la CLI, puede ser de gran ayuda en la resolución de problemas de la red, la automatización y la gestión de seguridad. Una vez estudiado y combinado, sus filtros y opciones de línea de comandos pueden contribuir mucho a sus tareas de solución de problemas y automatización del día a día y la comprensión general de la red.