tcpdump Copy

Introducción:

Tcpdump fue desarrollado originalmente en 1988 por Van Jacobson, Sally Floyd, Vern Paxson y Steven McCanne. Trabajaban en el Grupo de Investigación de Redes del Laboratorio Lawrence Berkeley.

Permite a sus usuarios visualizar los paquetes TCP/IP y otros que se reciben y transmiten por la red. Funciona en la mayoría de los sistemas operativos basados en Linux. Utiliza la biblioteca libpcap para capturar paquetes, que es una biblioteca basada en C/C++. Tcpdump también tiene un equivalente en Windows. Se llama windump. Utiliza winpcap para su biblioteca.

Opciones disponibles:

Podemos usar el siguiente parámetro para imprimir las cadenas de versión de tcpdump y libpcap. Además, podemos imprimir un mensaje de uso que muestra todas las opciones disponibles.

tcpdump -h
tcpdump --help

Lista de interfaces:

Una interfaz es el punto de interconexión entre un ordenador y una red. Podemos utilizar el siguiente parámetro para imprimir la lista de las interfaces de red disponibles en el sistema. También puede detectar las interfaces en las que tcpdump puede capturar paquetes. A cada interfaz de red se le asigna un número. Este número puede ser usado con el parámetro ‘-i’ para capturar paquetes en esa interfaz en particular.

Puede haber un escenario en el que la máquina en la que estamos trabajando, no pueda listar las interfaces de red que está ejecutando. Esto puede ser un problema de compatibilidad o algo más que dificulte la ejecución de algunos comandos específicos (ifconfig -a).

tcpdump -listar-interfaz
tcpdump -D

Captura por defecto:

Antes de pasar a las opciones y parámetros avanzados de esta herramienta de captura de tráfico de red, hagamos primero una captura con las configuraciones por defecto.

tcpdump

Capturando el tráfico de una interfaz particular:

Vamos a capturar el tráfico de la red ethernet que se conoce como “eth0”. Este tipo de interfaz suele estar conectada a la red mediante un cable de categoría 5.

Para seleccionar esta interfaz debemos utilizar el parámetro -i.

tcpdump -i eth0

Recuento de paquetes:

Tcpdump tiene algunas características sorprendentes que podemos utilizar para hacer nuestro análisis de tráfico más eficiente. Podemos acceder a algunas de estas características usando varios parámetros. Usamos el parámetro -c, que nos ayudará a capturar la cantidad exacta de datos que necesitamos y mostrarlos. Afina la cantidad de datos que capturamos.

tcpdump -i eth0 -c10

Modo verboso:

El modo verbose proporciona información sobre el escaneo del tráfico. Por ejemplo, el tiempo de vida (TTL), la identificación de los datos, la longitud total y las opciones disponibles en los paquetes IP. Permite comprobaciones adicionales de la integridad de los paquetes, como la verificación de las cabeceras IP e ICMP.

Para obtener información extra de nuestro escaneo necesitamos usar el parámetro -v.

tcpdump -i eth0 -c 5 -v

Impresión de cada paquete en ASCII:

ASCII es la abreviatura de American Standard Code for Information Interchange. Es un estándar de codificación de caracteres para la comunicación electrónica. Los códigos ASCII representan el texto en los ordenadores y otros dispositivos. La mayoría de las técnicas modernas de codificación de caracteres se basan en los códigos ASCII. Para imprimir cada paquete en código ASCII necesitamos usar el parámetro -A.

tcpdump -i eth0 -c 5 -A

No convertir la dirección:

Con la ayuda del parámetro tcpdump -nn, podemos ver la dirección real de fondo sin ningún filtro. Esta característica nos ayuda a entender mejor el tráfico de datos sin ningún tipo de filtro.

tcpdump -i eth0 -c 5
tcpdump -i eth0 -c 5 -nn

Filtro de puertos:

El filtro de puertos nos ayuda a analizar el tráfico de datos de un puerto en particular. Nos ayuda a monitorizar los puertos de destino del TCP/UDP u otros protocolos de red basados en puertos.

tcpdump -i eth0 -c 5 -v puerto 80

Filtro de host:

Este filtro nos ayuda a analizar el tráfico de datos de un host en particular. También nos permite ceñirnos a un host en particular, lo que hace que nuestro análisis sea aún mejor. También se pueden aplicar múltiples parámetros, como -v, -c, -A,-n, para obtener información extra sobre ese host.

tcpdump host 104.28.6.89 -c10 -A -n

La cabecera de cada paquete:

La cabecera contiene todas las instrucciones que se dan a cada paquete sobre los datos que transporta. Estas instrucciones pueden ser la longitud del paquete, la publicidad, la sincronización, el código ASCII, los valores hexadecimales, etc. Podemos utilizar el parámetro -X para ver esta información en nuestros paquetes de datos.

tcpdump -i eth0 -c 3 -X

Número de secuencia TCP:

Todos los bytes en las conexiones TCP tienen un número de secuencia que es un número de secuencia inicial (ISN) elegido al azar. Los paquetes SYN tienen un número de secuencia, por lo que los datos comenzarán en ISN+1. El número de secuencia es el número de byte de datos en el paquete TCP que se envía hacia adelante. El parámetro -S se utiliza para ver estos segmentos de datos de los paquetes capturados.

tcpdump -i eth0 -nnXS

Filtro de paquetes:

Otra característica que proporciona tcpdump es el filtrado de paquetes. Esto nos ayuda a ver los resultados de los paquetes en un paquete de datos particular en nuestro escaneo. Si queremos aplicar este filtro en nuestro escaneo sólo tenemos que añadir el paquete deseado en nuestro escaneo.

tcpdump -i eth0 icmp -c 10

Direcciones de los paquetes:

Para la dirección del flujo de datos en nuestro tráfico, podemos utilizar el siguiente parámetro :

tcpdump -i eth0 icmp -c 5 -Q in

Para ver todas las peticiones que estamos enviando al servidor se puede utilizar el siguiente parámetro (- Q out)

tcpdump -i eth0 icmp -c 5 -Q out

Recuento de números en vivo:

Podemos aplicar la función de conteo de números en vivo para ver cuántos paquetes fueron escaneados o capturados durante los escaneos de tráfico de datos. -El parámetro “número” se utiliza para contar el número de paquetes que se capturan en un escaneo en vivo. También comparamos el recuento de paquetes con el recuento de números en vivo para ver su precisión.
Leer y escribir en un archivo

En tcpdump, podemos escribir y leer en un archivo de extensión .pcap. La opción de escritura (-w) nos permite escribir los paquetes de datos crudos que tenemos como salida a un archivo estándar de extensión .pcap. Mientras que la opción de lectura (-r) nos ayuda a leer ese archivo. Para escribir la salida en .pcap sigue:

tcpdump -i eth0 icmp -c 10 -w archivo.pcap

Para leer este archivo .pcap seguimos:

tcpdump -r fichero.pcap

Longitud de la instantánea:

La longitud de la instantánea/snaplen se refiere a los bytes de datos de cada paquete. Por defecto está establecido en los 262144 bytes. Con tcpdump, podemos ajustar este límite a nuestro requerimiento para entenderlo mejor en cada longitud de snap. El parámetro -s nos ayuda a hacerlo, sólo hay que aplicar el parámetro -s junto con la longitud de bytes.

tcpdump -i eth0 icmp -s10 -c2
tcpdump -i eth0 icmp -s25 -c2
tcpdump -i eth0 icmp -s40 -c2
tcpdump -i eth0 icmp -s45 -c2

Modo de volcado:

El modo Dump tiene múltiples parámetros como -d, -dd, -ddd. Donde el parámetro -d, vuelca el código coincidente compilado en una salida legible, el parámetro -dd, vuelca el código como un fragmento de programa C. El parámetro -ddd, vuelca el código como un número decimal con un recuento. Para ver estos resultados en nuestro escaneo tenemos que seguir:

tcpdump -i eth0 -c 5 -d
tcpdump -i eth0 -c 5 -dd
tcpdump -i eth0 -c 5 -ddd