Una guía para la utilidad de análisis de tráfico de red TCPDUMP

Una guía para la utilidad de análisis de tráfico de red TCPDUMP

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
  • 20:08:22.146354: marca de tiempo del paquete capturado
  • IP: protocolo de capa de red.
  • 10.0.2.15.54080: este campo contiene la dirección IP de origen y el puerto de origen.
  • 172.67.39.148.443: Este campo representa la dirección IP de destino y el número de puerto.
  • Banderas [P.]/: Las banderas representan el estado de conexión. En este caso, [P.] indica el paquete de reconocimiento de empuje. El campo de la bandera también incluye algunos otros valores como:
    1. S: SYN
    2. P: empuje
    3. [.]: ACK
    4. F: aleta
    5. [S.]: Syn_ack
    6. R: RST
  • SEQ 1276027591: 1276027630: El número de secuencia en el primero: el último formato denota el número de datos en el paquete. Excluyendo el primer paquete donde los números están en absoluto, los paquetes posteriores tienen números relativos. En este caso, los números aquí significan que el paquete contiene bytes de datos de 1276027591 a 1276027630.
  • ACK 544039114: el número de reconocimiento representa el siguiente número de secuencia de datos esperado.
  • Gane 63900: el tamaño de la ventana muestra el número de bytes disponibles en el búfer recibido.
  • Longitud 39: Longitud de los datos de carga útil, en bytes.

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.