Extracción de campos y formato

WiresharkBeginner
Practicar Ahora

Introducción

El análisis del tráfico de red a menudo requiere extraer información específica de miles de paquetes. Si bien leer resúmenes de paquetes es útil para los humanos, las herramientas y scripts automatizados requieren datos estructurados.

Aquí es donde el análisis de paquetes comienza a solaparse con la ingeniería de datos. Un humano puede escanear visualmente unas pocas líneas de paquetes, pero las computadoras funcionan mejor cuando la información está organizada en campos y columnas estables. Una vez que el tráfico de red se convierte en una salida estructurada, puede ser buscado, contado, graficado, importado a hojas de cálculo o procesado mediante Python y tuberías (pipelines) de SIEM.

En este laboratorio, aprenderás a transformar el tráfico de red sin procesar en formatos estructurados y fáciles de analizar utilizando tshark, la versión de línea de comandos de Wireshark. Practicarás cómo desactivar la salida predeterminada legible por humanos, seleccionar campos de protocolo específicos (como direcciones IP, consultas DNS y User-Agents HTTP) y dar formato a los resultados en valores separados por comas (CSV) para un análisis posterior.

Desactivar la salida predeterminada

En este paso, aprenderás a cambiar el comportamiento de salida predeterminado de tshark.

De forma predeterminada, cuando lees un archivo de captura de paquetes usando tshark, este imprime una línea de resumen por cada paquete. Este resumen está diseñado para la lectura humana, pero es muy difícil de analizar mediante scripts o de importar a bases de datos. Para extraer datos específicos, primero debemos indicarle a tshark que deje de imprimir este resumen predeterminado y que, en su lugar, se prepare para mostrar campos específicos.

La idea clave es que los resúmenes están orientados a la presentación, mientras que los campos están orientados al análisis. Una línea de resumen puede parecer conveniente para una persona, pero pequeños cambios en el formato pueden romper la automatización posterior. La extracción de campos con nombre te proporciona una salida predecible que otras herramientas pueden consumir de manera confiable.

Logramos esto utilizando la opción -T fields. El indicador -T significa "Text output format" (formato de salida de texto), y establecerlo en fields le indica a tshark que solo queremos ver los campos de datos exactos que especifiquemos.

Sin embargo, si solo usas -T fields sin especificar qué campos deseas, tshark no mostrará nada. Debes combinarlo con el indicador -e, que especifica el campo exacto a extraer.

Comencemos extrayendo solo el número de trama (frame number) de nuestro archivo de captura de muestra. Asegúrate de estar en tu directorio de trabajo predeterminado /home/labex/project.

Ejecuta el siguiente comando para leer el archivo sample.pcap y extraer solo los números de trama:

tshark -r sample.pcap -T fields -e frame.number | head -n 5

El indicador -r le dice a tshark que lea desde un archivo en lugar de capturar tráfico en vivo. La parte | head -n 5 del comando limita la salida a las primeras 5 líneas para que tu terminal no se inunde de números.

Deberías ver una salida similar a esta:

1
2
3
4
5

Observa lo limpia que es la salida en comparación con el resumen estándar de tshark. Esta es la base para construir conjuntos de datos estructurados a partir del tráfico de red.

Usar formato de columna personalizado

En este paso, aprenderás a extraer múltiples campos simultáneamente y darles formato como valores separados por comas (CSV).

Cuando utilizas múltiples indicadores -e, tshark extraerá varios campos y los colocará en columnas. De forma predeterminada, tshark separa estas columnas usando un carácter de tabulación. Aunque los valores separados por tabulaciones son útiles, el CSV es el estándar universal para importar datos a hojas de cálculo, bases de datos y herramientas de análisis como Pandas de Python.

Esto puede parecer un detalle de formato, pero la elección del formato determina lo que puedes hacer después. El trabajo de seguridad a menudo implica mover datos entre analizadores de paquetes, tuberías de shell, hojas de cálculo, cuadernos y paneles de control. Cuanto más fácil sea importar tu salida a otros lugares, más fácil será escalar un comando único a un flujo de trabajo repetible.

Para cambiar el carácter que separa las columnas, usamos la opción -E separator=.

Extraigamos el número de trama, la dirección IP de origen y la dirección IP de destino, y dales formato como un CSV. Los nombres de campo para las IPs de origen y destino son ip.src e ip.dst.

Para asegurarnos de que estamos viendo paquetes que realmente tienen direcciones IP (y omitir elementos como paquetes ARP de bajo nivel que no las tienen), usaremos el filtro -Y "ip" junto con nuestra extracción de campos.

Ejecuta el siguiente comando en tu terminal:

tshark -r sample.pcap -Y "ip" -T fields -e frame.number -e ip.src -e ip.dst -E separator=, | head -n 5

Deberías ver una salida similar a esta:

12,127.0.0.1,127.0.0.11
13,127.0.0.11,127.0.0.1
14,127.0.0.1,127.0.0.11
15,127.0.0.11,127.0.0.1
16,172.60.1.88,104.18.26.120

Debido a que filtramos los paquetes ARP iniciales, notarás que los números de trama pueden no comenzar en 1. A veces, un paquete puede no contener un campo específico y, en tales casos, tshark simplemente dejará esa columna en blanco, asegurando que tu estructura CSV permanezca intacta.

Extraer consultas DNS

En este paso, combinarás la extracción de campos con filtros de visualización para aislar y extraer información específica del tráfico DNS.

Al analizar el tráfico de red, rara vez querrás extraer campos de todos los paquetes. Por lo general, te interesa un protocolo específico. Puedes usar el indicador -Y para aplicar un filtro de visualización antes de extraer los campos.

Este es otro ejemplo de cómo reducir el alcance antes de interpretar los resultados. Si mezclas protocolos no relacionados en una sola exportación, la salida se vuelve dispersa y confusa porque muchos paquetes no contendrán los campos que solicitaste. Filtrar primero mantiene el conjunto de datos resultante semánticamente coherente.

Por ejemplo, si queremos ver qué sitios web está intentando visitar un usuario, podemos observar sus consultas DNS. El filtro de visualización para el tráfico DNS es simplemente dns. El campo específico que contiene el nombre de dominio consultado es dns.qry.name.

Extraigamos la dirección IP de origen y el nombre de la consulta DNS, pero solo para los paquetes que sean realmente solicitudes o respuestas DNS.

Ejecuta el siguiente comando:

tshark -r sample.pcap -Y "dns" -T fields -e ip.src -e dns.qry.name -E separator=, | head -n 5

Tu salida se verá similar a esta:

10.0.2.15,labex.io
168.63.129.16,labex.io
10.0.2.15,google.com
168.63.129.16,google.com

Al combinar -Y "dns" con -T fields, nos aseguramos de que nuestra salida CSV solo contenga datos relevantes, filtrando todo el ruido de fondo de otros protocolos de red.

Extraer agentes de usuario HTTP

En este paso final, extraerás información detallada del tráfico HTTP, centrándote específicamente en la cadena User-Agent.

El User-Agent es una cadena enviada por un navegador web o cliente al servidor, que identifica el software que se está utilizando (por ejemplo, Chrome, Firefox o un script personalizado). Los analistas de seguridad a menudo extraen los User-Agents para identificar scripts automatizados maliciosos o navegadores obsoletos en una red.

Los metadatos como el User-Agent son útiles porque proporcionan pistas sobre el comportamiento sin necesidad de inspeccionar cada byte de contenido. En la defensa de redes, muchos juicios útiles provienen de campos de contexto como el agente de usuario, el encabezado de host, el nombre del servidor TLS o el nombre de la consulta DNS. Ayudan a los analistas a separar el tráfico normal de las aplicaciones de la automatización sospechosa.

Para aislar las solicitudes HTTP, podemos usar el filtro de visualización http.request. Los campos que queremos extraer son la IP de origen (ip.src), el dominio de host solicitado (http.host), la ruta URI específica (http.request.uri) y la cadena User-Agent (http.user_agent).

Ejecuta el siguiente comando para extraer estos metadatos HTTP en formato CSV:

tshark -r sample.pcap -Y "http.request" -T fields -e ip.src -e http.host -e http.request.uri -e http.user_agent -E separator=,

Deberías ver una salida similar a esta:

10.0.2.15,example.com,/,curl/7.81.0
10.0.2.15,neverssl.com,/,LabEx-Custom-Agent/1.0

Observa cómo extrajimos con éxito el User-Agent personalizado LabEx-Custom-Agent/1.0 que se generó durante la configuración del laboratorio. Esta técnica es increíblemente poderosa para crear informes automatizados o alimentar datos de red en paneles de monitoreo de seguridad.

Resumen

En este laboratorio, aprendiste a transformar capturas de paquetes de red sin procesar en datos estructurados y analizables utilizando tshark. Comenzaste desactivando la salida predeterminada legible por humanos usando -T fields. Luego, aprendiste a seleccionar puntos de datos específicos usando el indicador -e y a darles formato como CSV usando -E separator=,. Finalmente, combinaste estas técnicas de formato con filtros de visualización (-Y) para extraer información altamente específica, como nombres de consultas DNS y cadenas User-Agent HTTP. Estas habilidades son esenciales para automatizar el análisis de red e integrar datos de paquetes con otras herramientas de seguridad.