Si tiene un sistema operativo Unix o similar a Unix (Linux, Mac OS), puede usar tcpdump para examinar el tráfico de red. El programa tcpdump es una utilidad de línea de comandos que se puede instalar de forma gratuita. Por lo general, no está integrado en los sistemas operativos, por lo que debe instalarlo desde el registro tcpdump GitHub o desde el sitio web oficial de tcpdump.
Elementos de tcpdump
La utilidad de captura de paquetes utilizada por tcpdump es proporcionada por libpcab, que es una biblioteca de procedimientos C / C ++. El programa principal tcpdump es la interfaz para el proceso de captura de paquetes. Cuando se ejecuta, iniciará el proceso de libcap para capturar paquetes y luego mostrar su contenido en la pantalla. A menos que se especifique un límite para la cantidad de paquetes que se capturarán cuando se inicie el programa, continuará ejecutándose para siempre. El procesamiento se termina con una señal de interrupción (Control-C).
El programa se ejecuta en la línea de comando e incluye una serie de opciones, que se indican mediante banderas. Estos indicadores alteran el comportamiento del programa para que seleccione paquetes que coinciden con un patrón específico, limitan su tiempo de ejecución o leen los paquetes almacenados de un archivo en lugar de hacerlo desde la interfaz de red.
Formato Tcpdump
El comando tcpdump se puede emitir solo o con opciones, parámetros y / o expresiones regulares. Ninguno de estos elementos es obligatorio y el orden no es importante..
tcpdump <-identificador_opción>
Opciones de tcpdump
El comando tcpdump es seguido por opciones, que también se conocen como banderas. Cada uno de estos se denota con un guión seguido de una letra. A continuación se muestra una lista de cada una de estas banderas..
-UN imprimir paquetes en ASCII sin los encabezados de nivel de enlace
-si muestra que el número AS está en formato ASDOT
-si tamaño del búfer en unidades de KiB (1024 bytes
-C contar – el límite de paquetes para capturar
-C tamaño del archivo – el proceso creará un nuevo archivo una vez que se complete este límite de tamaño de archivo; El tamaño es x 1 millón de bytes
-re Volcar el código de coincidencia de paquetes compilado en ASCII
-dd Volcar el código de coincidencia de paquetes como C fragmento de programa
-ddd Volcar el código de coincidencia de paquetes como números decimales precedidos de un recuento
-re Listar todas las interfaces accesibles
-mi Imprima el encabezado de nivel de enlace en cada línea de volcado
-mi spi @ ipaddr algo: secreto – para descifrar paquetes ESP IPsec:
spi es el índice del parámetro de seguridad
ipaddr es la dirección de destino en el paquete
algo es el algoritmo, predeterminado des-cbc y el campo es opcional.
Los valores posibles son:
- des-cbc
- 3des-cbc
- blowfish-cbc
- rc3-cbc
- cast128-cbc
secreto es el texto ASCII para la clave secreta ESP. Si está precedido por 0x, entonces es un valor hexadecimal
-F Imprima direcciones IPv4 ‘extranjeras’ numéricamente en lugar de simbólicamente
-F archivo – utilizar archivo como entrada para la expresión de filtro
-sol rotate_seconds – período para rotar el archivo guardado de la opción -w, agregará una marca de tiempo al nombre
-h Imprima las cadenas de versión tcpdump y libpcap, imprima un mensaje de uso y salga
-H Detectar encabezados de malla de borrador 802.11s
-yo interfaz – la interfaz en la que escuchar, por defecto el nombre más bajo alfabéticamente
-yo modo monitor | modo inmediato – elimina el almacenamiento en búfer
-j tstamp_type – establece el tipo de marca de tiempo para la captura en tstamp_type
-J tstamp_precision – establecer la precisión de la marca de tiempo (micro o nano) el valor predeterminado es micro. Si tstamp_precision es nulo, enumera los tipos de marca de tiempo y sale
-K No verificar las sumas de verificación
-l Línea estándar tamponada. P.ej. tcpdump -l | tee dat o tcpdump -l > dat & cola -f dat
-L Enumere los tipos de enlace de datos conocidos para la interfaz, en el modo especificado, y salga
-metro módulo – cargar definiciones del módulo SMI MIB desde el archivo módulo.
-METRO secreto – valor secreto compartido para validar con la opción TCP-MD5
-norte No convierta direcciones (es decir, direcciones de host, números de puerto, etc.) a nombres
-norte No imprima la calificación del nombre de dominio de los nombres de host
-# # Imprima un número de paquete opcional al comienzo de la línea
-O No ejecute el optimizador de código de coincidencia de paquetes
-pag No ponga la interfaz en modo promiscuo
-Q dirección – enviar / recibir dirección. Puede ser en, fuera, o En fuera
-q Imprima menos información del protocolo
-r archivo – leer paquetes de archivo. Especificar – para entrada estándar
-S Imprimir números absolutos de secuencia TCP
-s snaplen – snarf snaplen bytes de cada paquete, no los 262144 bytes predeterminados
-T tipo – interpretar paquetes como los especificados tipo. Las opciones son:
- aodv Protocolo ad-hoc de vectores de distancia bajo demanda
- carpa Protocolo de redundancia de direcciones comunes
- cnfp Protocolo Cisco NetFlow
- lmp Protocolo de gestión de enlaces
- pgm Multidifusión general pragmática
- pgm_zmtp1 ZMTP / 1.0 dentro de PGM / EPGM)
- resp Protocolo de serialización REdis
- radio RADIO
- rpc Llamada a procedimiento remoto
- rtp Protocolo de aplicaciones en tiempo real
- rtcp Protocolo de control de aplicaciones en tiempo real
- snmp Protocolo Simple de Manejo de Red
- tftp Protocolo trivial de transferencia de archivos
- IVA Herramienta de audio visual
- wb tablero blanco distribuido
- zmtp1 Protocolo de transporte de mensajes ZeroMQ 1.0
- vxlan Red de área local virtual extensible
-t No imprima una marca de tiempo en cada línea de volcado
-tt Imprima la marca de tiempo como desplazamiento desde el 1 de enero de 1970 en cada línea de volcado
-ttt Imprima un delta (resolución de microsegundos) entre la línea actual y la anterior
-tttt Imprima una marca de tiempo: fecha, hora, minuto, segundo en cada línea de volcado
-ttttt Imprima un delta (resolución de microsegundos) entre la línea actual y la primera
-tu Imprimir manejadores NFS sin codificar
-U Paquete tamponado
-v Salida un poco más detallada
-vv Salida más detallada
-vvv Salida más detallada
-V archivo – leer una lista de nombres de archivos de archivo. La entrada estándar se usa si archivo es –
-w archivo – escribir salida a archivo
-W límite – el número máximo de archivos que debe crear el -C y -sol opciones
-X Imprima los datos de cada paquete menos su encabezado de nivel de enlace en hexadecimal
-xx Imprime los datos de cada paquete, incluso su encabezado de nivel de enlace, en hexadecimal
-X Imprima los datos de cada paquete menos su encabezado de nivel de enlace en hexadecimal y ASCII
-XX Imprime los datos de cada paquete, incluso su encabezado de nivel de enlace, en hexadecimal y ASCII.
-y tipo de enlace de datos – Establezca el tipo de enlace de datos que se utilizará al capturar paquetes en tipo de enlace de datos
-z comando-postrotate – Procese los archivos guardados generalmente con compresión, p. Ej. -z gzip
-Z usuario – cambie la ID de usuario a usuario y la ID del grupo al grupo primario de usuario
Parámetros de tcpdump
Los parámetros para tcpdump también se conocen como primitivas. Estos especifican si la captura de paquetes solo debe obtener datos de hosts especificados. Estos parámetros también se pueden expresar como condiciones utilizando los operadores booleanos y, o, y no. No necesita poner un signo igual (=) entre el nombre del parámetro y su valor y no necesita espaciar los parámetros con puntuación. En cada caso, solo necesitas un espacio.
El más utilizado de estos parámetros es el host, que le permite limitar la captura a las transmisiones desde una sola fuente. En cada caso, el nombre de un dispositivo como valor de parámetro se puede reemplazar por su dirección. Donde un parámetro tiene un dst versión, esa variación limita la salida a solo paquetes que tienen ese atributo para su destino. Parámetros que incluyen src buscar paquetes que tengan el valor dado en datos relacionados con su origen.
Aquí están las opciones de parámetros:
anfitrión nombre_host – además dst host o host src.
También se puede anteponer con ip, arp, o rarp
éter ehost – valor de / etc / ethers o un número. también ether src y éter dest.
puerta anfitrión – obtener paquetes que pasaron por la puerta de enlace anfitrión
red network_num – IP de origen o destino incluye red_num también dst net y src net
Puerto número | nombre – además puerto dst y puerto src. Puede estar con tcp o udp para limitar el protocolo
ip proto protocolo – capturar paquetes IP del protocolo nombrado. El nombre debe estar en / etc / protocolos
Proto de éter protocolo – paquete de captura del tipo de protocolo ether. Opciones para protocolo son un número o:
- ip
- ip6
- arp
- rarp
- una charla
- atalkarp
- decnet
- decdts
- decdns
- Lanbridge
- lat
- mopdl
- moprc
- cachorro
- sca
- duende
- stp
- vexp
- vprod
- xns
Transmitir Captura paquetes de difusión de Ethernet. También escrito como difusión de éter
transmisión ip Captura paquetes de difusión ip
multicast Captura paquetes de multidifusión Ethernet. También escrito como ether multicast
multidifusión ip Captura paquetes de multidifusión IP
decnet host nombre_host – si el origen o el destino de DECNET es nombre_host
decnet src nombre_host – captura si la fuente DECNET es nombre_host
decnet dst nombre_host – captura si el destino DECNET es nombre_host
host wlan ehost – si la primera, segunda, tercera o cuarta dirección IEEE 802.11 es ehost
wlan addr1 ehost – capturar si la primera dirección IEEE 802.11 es ehost
wlan addr2 ehost – capturar si la segunda dirección IEEE 802.11 es ehost
wlan addr3 ehost – capturar si la tercera dirección IEEE 802.11 es ehost
wlan addr4 ehost – si la cuarta dirección IEEE 802.11 es ehost. Solo se usa para WDS
tipo tipo – capturar si el tipo de trama IEEE 802.11 es tipo, que es un número o:
- datos
- mgt
- ctl
subtipo subtipo – capturar si la trama IEEE 802.11 es subtipo, que es un número o:
- assocreq
- assocresp
- reassocreq
- reassocresp
- probereq
- proberesp
- Faro
- atim
- Desastre
- auth
- deauth
- datos
dir dir – captura si la dirección de trama IEEE 802.11 es dir, que es un número o:
- asiente
- tods
- fromds
- dstods
Expresión de tcpdump
El segmento de expresiones de un comando tcpdump le brinda la oportunidad de agregar un poco de programación a su selección de paquetes. Sin embargo, a diferencia de un programa normal, este conjunto de instrucciones debe escribirse en una línea. Si es un usuario frecuente de Unix o Linux, estará acostumbrado a las expresiones regulares de los scripts de shell y no debería tener problemas para comprender el formato de estos filtros.
Se capturarán los paquetes que cumplan con la prueba establecida por la expresión. Entonces el resultado de cada expresión tiene que ser “verdadero”.
Hay algunas condiciones de expresión que generalmente no se encuentran en las secuencias de comandos de shell y se enumeran a continuación:
Len
Esto devuelve la longitud de un paquete. Ejemplo de uso: len = 5.
proto [expr: tamaño]
En este objeto:
proto es el nombre de una capa de protocolo. Puede ser:
- éter
- fddi
- ip
- arp
- rarp
- tcp
- udp
- icmp
expr es el byte offset. Esto debe ser incluido, pero se puede dar como 0 para tomar el valor desde el principio del objeto..
Talla es opcional y representa el número de bytes en la opción. El valor predeterminado es 1, pero también puede ser 2, 3 o 4..
Ejemplos de uso:
éter [0] & 1! = 0 es cierto para todo el tráfico de multidifusión.
ip [0] & 0xf! = 5 es cierto para todos los paquetes IP con opciones.
ip [6: 2] & 0x1fff = 0 es cierto para datagramas no fragmentados y frag zero de datagramas fragmentados.
Ejemplos de tcpdump
En todos estos casos, los resultados del comando se mostrarán en la pantalla, a menos que se incluya una opción relacionada con el archivo o que el comando se inicie con una redirección de salida de soporte o canalice a un archivo.
Mostrar paquetes que viajan desde o hacia la computadora identificada como lab1:
tcpdump host lab1
Visualice todos los paquetes IP que viajan entre lab1 y cualquier nodo que no sea recepción:
tcpdump ip host lab1 y no recepción
Mostrar todo el tráfico ftp a través de la puerta de enlace de internet styx:
tcpdump ‘gateway styx y (puerto ftp o ftp-data)’
Visualice los paquetes SYN y FIN de cada conversación TCP que involucre un host no local:
tcpdump ‘tcp [tcpflags] & (tcp-syn | tcp-fin)! = 0 y no src y dst net localnet “
Mostrar paquetes de difusión IP o multidifusión que no se enviaron a través de difusión Ethernet o multidifusión:
tcpdump ‘éter [0] & 1 = 0 y ip [16] >= 224 ’
Formato de salida de tcpdump
El formato de registro utilizado para escribir paquetes en archivos se ha convertido en un estándar que ha sido adoptado por muchos analizadores de tráfico y analizadores de tráfico más nuevos..
El estándar no es sencillo y está adaptado para cada protocolo. Sin embargo, aquellas aplicaciones que han adoptado el formato también tienen en cuenta estas variaciones. El formato se llama pcap, que es el nombre del proceso de captura de paquetes utilizado por tcpdump. Los archivos en este formato generalmente tienen el .pcap extensión.
Tcpdump para Windows
Hay una adaptación de tcpdump que se ejecuta en Windows. Se llama WinDump y se basa en WinPcap para la captura de paquetes de la misma manera que tcpdump usa la función pcap de libpcap. WinPcap es propiedad de Riverbed Technology. Esta misma compañía es el principal financiador de Wireshark, que es probablemente el sniffer de paquetes más famoso y ampliamente utilizado en el mundo. Hay una versión inalámbrica de WinPcap, que se llama AirPcap. Puede descargar WinDump, WinPcap y AirPcap de forma gratuita desde el sitio web de WinPcap.
Usando rastreadores de paquetes
La utilidad de línea de comandos tcpdump es útil para aquellos que están familiarizados con Unix y Linux sistemas operativos y disfruta escribiendo scripts de shell. Aquellos que no tienen tanta experiencia en armar comandos con expresiones regulares en la línea de comandos encontrarán difícil usar este programa.
Tiene otras opciones porque hay muchos rastreadores de paquetes disponibles, como Wireshark, que se mencionó anteriormente. Puede encontrar más información sobre alternativas a tcpdump en esta revisión de rastreadores de paquetes.
¿Tienes un sniffer de paquetes favorito? ¿Eres fanático de tcpdump o prefieres alternativas más fáciles de usar? Deja un mensaje en el Comentarios sección a continuación y comparte tus experiencias.
Imagen: captura de paquetes tcpdump por Linux Capturas de pantalla a través de Flickr. Licenciado bajo CC BY 2.0
Excelente información sobre el uso de tcpdump en sistemas operativos Unix o similares a Unix. Es una herramienta muy útil para examinar el tráfico de red y capturar paquetes. Me gusta que se pueda instalar de forma gratuita desde el registro tcpdump GitHub o desde el sitio web oficial de tcpdump. También es interesante conocer los elementos, formato, opciones, parámetros y expresiones regulares que se pueden utilizar con tcpdump. Gracias por compartir esta valiosa información.