Búsqueda de sitios web

Rastrear paquetes usando tcpdump en Linux


El proceso de monitorear todos estos paquetes de datos que pasan a través de la red se llama rastreo. Los administradores de red suelen utilizar rastreadores para solucionar problemas y monitorear el tráfico de la red. Los atacantes utilizan estos rastreadores para capturar y monitorear paquetes de datos para robar información confidencial de la cuenta del usuario, como contraseñas, nombre de usuario y ubicación.

Los paquetes de red son la unidad de datos básica agrupada y transferida a través de redes de conmutación de paquetes, redes informáticas como Internet.

También puede monitorear e interceptar el tráfico en la red utilizando un software que capture todos los paquetes de datos que pasan a través de la interfaz de red. También puede hacer lo mismo utilizando herramientas de hardware porque los rastreadores están disponibles tanto en software como en hardware. En esta guía, veremos cómo procesar paquetes de rastreo usando tcpdump en Linux.

Rastrear paquetes usando tcpdump en Linux

Tcpdump es una herramienta de análisis y detección de paquetes que los administradores de sistemas Linux utilizan para solucionar problemas de conectividad. A veces, puede utilizar esta herramienta por motivos de seguridad. Esta herramienta analiza, filtra y captura principalmente el tráfico de red, como paquetes IP/TCP, que pasan por su sistema.

Recopila la información capturada en una extensión de archivo .pcap, que sólo puede abrir con la ayuda de una herramienta de comando o Wireshark. tcpdump viene como utilidad preinstalada en varias distribuciones de Linux. Sin embargo, puede instalarlo mediante el siguiente comando:

sudo apt install tcpdump (for Ubuntu/Debian-based distros)
yum install tcpdump (for RedHat-based Linux distros)
sudo pacman -S tcpdump (for Arch Linux)

También puede obtener información breve sobre el comando tcpdump en su página de ayuda:

~$: tcpdump --h

Veamos ahora algunos ejemplos de diferentes opciones que puede probar en tcpdump para capturar los paquetes de red.

Mostrando todas las interfaces de red disponibles

El uso de la opción -D con el comando tcpdump enumerará las interfaces de red disponibles de su sistema.

~$: sudo tcpdump -D
[sudo] password for prateek: 
1.enp0s3 [Up, Running, Connected] 
2.any (Pseudo-device that captures on all interfaces) [Up, Running] 
3.lo [Up, Running, Loopback] 
4.bluetooth-monitor (Bluetooth Linux Monitor) [Wireless] 
5.nflog (Linux netfilter log (NFLOG) interface) [none] 
6.nfqueue (Linux netfilter queue (NFQUEUE) interface) [none] 
7.dbus-system (D-Bus system bus) [none] 
8.dbus-session D-Bus session bus none

En el resultado anterior, puede ver el estado de cada interfaz de red. Tcpdump crea un pseudodispositivo llamado "cualquiera" en lugar de la interfaz de red real. Por lo tanto, al escuchar este pseudodispositivo, la herramienta captura los paquetes que pasan por todas las interfaces.

Interfaz de red de olfateo

Puede capturar las interfaces de red actuales usando el siguiente comando:

~$: sudo tcpdump

Rastrear paquetes usando varias opciones de tcpdump

Puede capturar las interfaces de red de muchas formas y formatos diferentes, cuya lista es la siguiente:

  • Si desea capturar un paquete desde la interfaz de red específica, utilice la opción -i:

~$: sudo tcpdump -i <network_interface> 
  • De manera similar, use la opción -c con el comando tcpdump para capturar una cantidad específica de paquetes

~$: sudo tcpdump -c <number of packets> -i <network_interface> 

Por ejemplo, capturemos 2 paquetes de la interfaz 'lo' mediante el comando tcpdump:

~$: sudo tcpdump -c 2 -i lo 
  • Después del nombre de la interfaz, solo puede capturar los paquetes tcp usando 'tcp'.

~$: sudo tcpdump -i <network_interface> tcp

Capturemos los paquetes tcp de las redes 'lo':

~$: sudo tcpdump -i lo tcp
  • El indicador -XX con el comando tcpdump imprime los valores en formatos HEX y ASCII.

~$: sudo tcpdump -XX -i <network_interface>
  • Agregue A con el comando para imprimir los paquetes solo en formato ASCII.

~$: sudo tcpdump -A -i <network_interface>

Mostrar información de marca de tiempo

Tcpdump agrega una marca de tiempo a la primera columna en la salida de cada volcado de paquetes para indicar cuándo se capturó el paquete. Con este comando, puede utilizar el indicador -t para admitir el formato de la salida de la marca de tiempo.

~$: sudo tcpdump -t

Cuando se utiliza el comando anterior, no imprime ninguna información de marca de tiempo.

  • También puede imprimir la marca de tiempo en la época. En informática, es la hora y la fecha en relación con las cuales la marca de tiempo y el reloj de la computadora determinan el valor. El 1 de enero de 1970, a las 00:00:00 UTC, se denomina época Unix.

    Estas épocas se utilizan para facilitar el cálculo como un número único para mantener una referencia de tiempo. Con el comando de opción -tt, puede imprimir la marca de tiempo en la época:

~$: sudo tcpdump -tt
  • También puede imprimir la salida de la marca de tiempo en formato de hora delta. El tiempo delta es el tiempo necesario para completar el último fotograma. Puede imprimir la salida en tiempo delta usando el indicador -ttt con el comando tcpdump.

~$: sudo tcpdump -ttt
  • Utilice el indicador -tttt para imprimir la marca de tiempo con la fecha

~$: sudo tcpdump -tttt

Capture paquetes de direcciones IP en una interfaz específica

Puede agregar la opción -u con el comando para mostrar los paquetes de direcciones IP en las interfaces específicas de la siguiente manera:

~$: sudo tcpdump -n -i <network_interface>

Por ejemplo, capturamos los paquetes de direcciones IP en la red 'lo'.

~$: sudo tcpdump -n -i lo

Capture y guarde los paquetes en un archivo

Puede guardar paquetes IP/TCP y analizarlos en el futuro. Con el comando tcpdump, puede guardar estos paquetes en archivos usando la opción -w. Recuerda que la extensión de estos archivos siempre debe ser .pcap que significa Packet Capture.

~$: sudo tcpdump -w <file_name.pcap> -i <network_interface>

En este caso, hemos guardado los paquetes de interfaz 'enp0s3' en el archivo denominado 'prateek.pcap'. (~$: sudo tcpdump -w -i )

~$: sudo tcpdump -w prateek.pcap -i enp0s3
[sudo] password for prateek:
tcpdump: listening on ep0s3, link-type EN10MB (Ethernet), snapshot length 262144 bytes

Además, puede limitar o establecer el tamaño particular de cada archivo mediante la opción -c:

~$: sudo tcpdump -w prateek.pcap -i enp0s3 -C 3

Aquí 3 significa 3 MB, es decir, cuando el tamaño del archivo 'prateek.pcap' alcanza los 3 MB, tcpdump creará más archivos de este tipo por cada incremento de 3 MB, como prateek pcap1, prateek.pcap2, etc.

Leer paquetes capturados de los archivos guardados

Los archivos en los que guardamos los paquetes capturados, podemos leerlos usando el indicador -r de la siguiente manera.

~$: sudo tcpdump -r <file_name.pcap> -i <network_interface>

En el ejemplo anterior, hemos guardado el archivo 'prateek.pcap'. Podemos leer paquetes de este archivo usando la opción '-r', de la siguiente manera:

~$: sudo tcpdump -r prateek.pcap -i enp0s3

Conclusión

En esta guía, hemos visto cómo detectar paquetes usando tcpdump en Linux. Puede presentar paquetes y archivos utilizando diferentes indicadores, de los cuales hemos dado muchos ejemplos en esta guía.

Esta guía le ayudará a utilizar tcpdump para capturar y analizar paquetes TCP/IP. Además, si desea obtener más información sobre las opciones adicionales del comando tcpdump, utilice la opción -h.

Artículos relacionados: