tcpdump

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 problemas de redes 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, poderosa y versátil.

Es nativo de Linux, por lo que la mayoría de las distribuciones de Linux lo instalan como parte del sistema operativo estándar. Tcpdump es un programa con interfaz libpcap, que es una biblioteca para la captura de datagramas 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 adelante usaremos nuestro conocimiento para inspeccionar paquetes de datos con los filtros de bandera TCP avanzados.

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 comprobar 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 usando el "ifconfig"Comando. O podemos listar todas las interfaces disponibles usando el tcpdump comando con el "-D" opción.

ubuntu $ ubuntu: ~ $ tcpdump -D

Para comenzar el proceso de captura, puede utilizar la sintaxis;

tcpdump [-opciones] [expresión]

Por ejemplo, en el siguiente comando, usamos el "-I"Opción para capturar el tráfico en el"enp0s3"Interfaz, con una"-C"Bandera para limitar los paquetes capturados y escribir"-w"A un prueba_captura.pcap expediente.

ubuntu $ ubuntu: ~ $ sudo tcpdump -i enp0s3 -c 20 -w / tmp / test_capture.pcap

Del mismo modo, puede utilizar varias combinaciones de filtros para aislar el tráfico según sus necesidades. Un ejemplo de este tipo incluye la captura de datos de red que salen y llegan al host utilizando el anfitrión comando para un Puerto. Además, he utilizado el "-norte”Para evitar que tcpdump capture búsquedas de DNS. Esta bandera es muy útil para saturar el tráfico al solucionar problemas de la red.

ubuntu $ ubuntu: ~ $ sudo tcpdump -i enp0s3 -c 20 host 10.0.2.15 y puerto dst 80 -w / tmp / test_capture1.pcap
tcpdump: escucha en enp0s3, tipo de enlace EN10MB (Ethernet), tamaño de captura 262144 bytes
20 paquetes capturados
21 paquetes recibidos por filtro
0 paquetes descartados por el kernel

Usamos el "y"Comando para capturar solo los 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 resolución de problemas.

Si no desea utilizar el "-C"Para limitar el tráfico de captura, puede utilizar una señal de interrupción, i.mi., Ctrl + C, para detener el proceso de aislamiento.

Leyendo archivos Tcpdump

Leer los archivos capturados por tcpdump puede ser muy abrumador. De forma predeterminada, tcp asigna nombres a direcciones IP y puertos. Usaremos el "-r"Bandera para leer nuestro archivo ya capturado prueba_captura.pcap guardado en el / tmp carpeta. Canalizaremos la salida a awk comando para generar solo la dirección IP de origen y los puertos y canalizarlo al comando cabeza para mostrar solo las primeras 5 entradas.

ubuntu $ ubuntu: ~ $ sudo tcpdump -r / tmp / test_capture1.pcap | awk -F “” 'imprimir $ 3' | cabeza -5
leyendo desde el archivo / tmp / test_capture.pcap, tipo de enlace EN10MB (Ethernet)
Ubuntu IP.53298
Ubuntu IP.53298
Ubuntu IP.53298
Ubuntu IP.53298
Ubuntu IP.53298

Sin embargo, se recomienda utilizar direcciones IP y puertos en números para resolver problemas de red. Deshabilitaremos la resolución de nombres de IP con el "-norte"Bandera y nombres de puerto con"-nn".

ubuntu $ ubuntu: ~ $ sudo tcpdump -i enp0s3 -n
tcpdump: salida detallada suprimida, use -v o -vv para la decodificación de protocolo completo
escuchando en enp0s3, tipo de enlace EN10MB (Ethernet), tamaño de captura 262144 bytes
20:08:22.146354 IP 10.0.2.15.54080> 172.67.39.148.443: Banderas [P.], seq 1276027591: 1276027630, ack 544039114, win 63900, longitud 39
20:08:22.146745 IP 10.0.2.15.43456> 54.204.39.132.443: Banderas [P.], seq 3381018839: 3381018885, ack 543136109, win 65535, longitud 46
20:08:22.147506 IP 172.67.39.148.443> 10.0.2.15.54080: Banderas [.], ack 39, gana 65535, longitud 0
20:08:22.147510 IP 54.204.39.132.443> 10.0.2.15.43456: Banderas [.], ack 46, win 65535, longitud 0
20:08:22.202346 IP 216.58.209.142.443> 10.0.2.15.41050: Banderas [P.], seq 502925703: 502925826, ack 1203118935, win 65535, longitud 123
20:08:22.202868 IP 10.0.2.15.41050> 216.58.209.142.443: Banderas [P.], seq 1:40, ack 123, win 65535, longitud 39

Comprensión de la salida capturada

Tcpdump captura muchos protocolos, incluidos UDP, TCP, ICMP, etc. No es fácil cubrirlos 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. Generalmente, 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: Banderas [P.], seq 1276027591: 1276027630, ack 544039114, win 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 la conexión. En este caso, [P.] indica el paquete de acuse de recibo PUSH. El campo de bandera también incluye algunos otros valores como:
    1. S: SYN
    2. P: EMPUJAR
    3. [.]: ACK
    4. F: FIN
    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 son absolutos, los paquetes subsiguientes 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 acuse de recibo representa el siguiente número de secuencia de datos esperado.
  • win 63900: el tamaño de la ventana representa 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 de 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 activando estos bits 00011000 o 24 para mostrar paquetes de datos con solo indicadores PSH y ACK. Pasamos este número a tcpdump con el filtro "tcp [13] = 24", Tenga en cuenta que el índice de la matriz en TCP comienza en cero.

Filtraremos este paquete de nuestro text_capture.pcap archivo y use el -A opción para mostrar todos los detalles del paquete para usted.

De manera similar, puede filtrar algunos otros paquetes de banderas 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
leyendo desde el archivo / tmp / test_capture.pcap, tipo de enlace EN10MB (Ethernet)
19:26:17.827902 IP ubuntu.53298> 32.121.122.34.antes de Cristo.googleusercontent.com.http: Banderas [P.], seq 4286571276: 4286571363, ack 252096002, win 64240, longitud 87: HTTP: GET / HTTP / 1.1
E…:?@[email protected].
... "zy .2.P… P… GET / HTTP / 1.1
Anfitrión: comprobación de conectividad.ubuntu.com
Aceptar: * / *
Conexión: cerrar

Conclusión

En este artículo, le presentamos algunos de los temas más importantes de tcpdump. Tcpdump, combinado con el poder de CLI, puede ser de gran ayuda en la resolución de problemas de red, automatización y administración de seguridad. Una vez estudiados y combinados, sus filtros y opciones de línea de comando pueden contribuir mucho a sus tareas diarias de solución de problemas y automatización y a la comprensión general de la red.

Cómo instalar y jugar a Doom en Linux
Introducción a Doom La serie Doom se originó en los años 90 después del lanzamiento del Doom original. Fue un éxito instantáneo y, desde ese momento e...
Vulkan para usuarios de Linux
Con cada nueva generación de tarjetas gráficas, vemos que los desarrolladores de juegos superan los límites de la fidelidad gráfica y se acercan un pa...
OpenTTD frente a Simutrans
Crear su propia simulación de transporte puede ser divertido, relajante y extremadamente atractivo. Es por eso que debes asegurarte de probar tantos j...