INSTALL
Instalación
TShark se incluye en el paquete Wireshark. También necesitarás tcpdump para los ejercicios de captura (generalmente ya instalado).
bash
sudo apt install tshark -y
PREP
Crear un Archivo de Captura Base
Antes de cualquier ejercicio, genera
sample.pcap con una mezcla de tráfico HTTP, DNS e ICMP. Necesitarás dos terminales abiertas simultáneamente.1
Terminal 1 — Iniciar captura con tcpdump
Reemplaza
<interfaz> por la tuya (eth0, enp0s3, etc.). La opción -c 300 limita la captura a 300 paquetes.2
Terminal 2 — Generar tráfico
Haz un ping, una resolución DNS y una solicitud HTTP mientras la captura está activa.
3
Detener la captura
Vuelve a la Terminal 1 y pulsa Ctrl+C si la captura no terminó automáticamente tras los 300 paquetes.
Terminal 1 — captura
$ sudo tcpdump -i enp0s3 -c 300 -w sample.pcap
tcpdump: listening on enp0s3 ...
Terminal 2 — tráfico
$ ping -c 3 google.com
$ host google.com
$ wget -qO- www.example.com > /dev/null
EJ. 01
Resumen Básico de la Captura
Visualizar información clave de los paquetes en un formato similar a la vista principal de Wireshark.
| Objetivo | Comando tshark | Descripción |
|---|---|---|
| Primeros 10 paquetes | tshark -r sample.pcap -c 10 | Muestra nº, tiempo, IP origen/destino, protocolo e info del paquete. |
| Contar paquetes | tshark -r sample.pcap | wc -l | Número total de paquetes grabados en el archivo. |
| Solo las IPs | tshark -r sample.pcap -T fields -e ip.src -e ip.dst -c 5 | Muestra solo los campos de IP de origen y destino para los primeros 5 paquetes. |
bash — comandos del ejercicio 1
# Ver los primeros 10 paquetes tshark -r sample.pcap -c 10 # Contar el total de paquetes tshark -r sample.pcap | wc -l # Mostrar solo IPs origen y destino tshark -r sample.pcap -T fields -e ip.src -e ip.dst -c 5
EJ. 02
Filtrado por Protocolo — Display Filters
Los filtros de visualización de TShark (
-Y) son idénticos a los de Wireshark. Esenciales para aislar el tráfico de interés de una captura completa.ℹ️ Display Filters vs Capture Filters: Los display filters (
-Y) filtran la visualización de un pcap existente. Los capture filters (-f, ejercicio 4) filtran en el momento de la captura, antes de guardar. Son sintaxis distintas.| Objetivo | Filtro (-Y) | Comando completo |
|---|---|---|
| Solo DNS | dns |
tshark -r sample.pcap -Y "dns" |
| Peticiones HTTP | http.request |
tshark -r sample.pcap -Y "http.request" |
| Tráfico a/desde una IP | ip.addr == 192.168.1.1 |
tshark -r sample.pcap -Y "ip.addr == 192.168.1.1" |
| Puerto específico (SSH) | tcp.port == 22 |
tshark -r sample.pcap -Y "tcp.port == 22" |
bash — display filters
tshark -r sample.pcap -Y "dns" tshark -r sample.pcap -Y "http.request" tshark -r sample.pcap -Y "ip.addr == 192.168.1.1" tshark -r sample.pcap -Y "tcp.port == 22"
EJ. 03
Extracción de Datos Específicos — -T fields
Utiliza
-T fields con -e campo para extraer valores concretos de los paquetes. Muy útil para scripting y auditorías automatizadas.| Objetivo | Comando | Campo extraído |
|---|---|---|
| Nombres DNS solicitados | tshark -r sample.pcap -Y "dns" -T fields -e dns.qry.name | dns.qry.name |
| Códigos de estado HTTP | tshark -r sample.pcap -Y "http.response" -T fields -e http.response.code | http.response.code |
| Tiempo de respuesta TCP | tshark -r sample.pcap -T fields -e tcp.time_delta | tcp.time_delta |
bash — extracción de campos
# Nombres de dominio en consultas DNS tshark -r sample.pcap -Y "dns" -T fields -e dns.qry.name # Códigos de respuesta HTTP (200, 404, 500...) tshark -r sample.pcap -Y "http.response" -T fields -e http.response.code # Delta de tiempo entre paquetes TCP (latencia) tshark -r sample.pcap -T fields -e tcp.time_delta
EJ. 04
Filtros de Captura — -f (BPF Syntax)
A diferencia de los display filters (
-Y), los capture filters (-f) filtran antes de guardar. Usan la sintaxis de tcpdump/BPF. Ahorran espacio y recursos.⚠️ Sintaxis diferente: Los capture filters usan sintaxis BPF (tcpdump) — no la misma que los display filters. Ejemplo:
port 80 (BPF) vs tcp.port == 80 (display filter).Ejemplo 1 — Capturar solo ICMP
Paso 1 — captura filtrada
$ sudo tcpdump -i enp0s3 -c 10 -w icmp.pcap 'icmp'
Paso 2 — generar ICMP
$ ping -c 10 google.com
bash — verificar que solo hay ICMP
tshark -r icmp.pcap -Y "icmp" # Debería mostrar todos los paquetes
Ejemplo 2 — Excluir tráfico SSH (puerto 22)
bash — captura excluyendo SSH
# Paso 1: capturar TODO excepto puerto 22 sudo tcpdump -i enp0s3 -w non_local.pcap 'not port 22' # Paso 2: verificar que no hay paquetes SSH en el archivo tshark -r non_local.pcap -Y "tcp.port == 22" # → salida vacía = confirmación de que el filtro funcionó
Comando
sudo tcpdump -i enp0s3 -w non_local.pcap 'not port 22'Filtro BPF
'not port 22' — captura todos los paquetes excepto los que usan el puerto 22 (SSH) como origen o destino.
Resultado
169 packets captured
Verificación
Salida vacía de tshark al filtrar
tcp.port == 22 = ningún paquete SSH en el archivo. El filtro de exclusión funcionó correctamente.✅ Salida vacía = éxito: Que tshark no muestre nada al aplicar
-Y "tcp.port == 22" sobre non_local.pcap es la confirmación de que el filtro BPF excluyó correctamente todo el tráfico SSH en el momento de la captura.
EJ. 05
Reconstrucción de Streams TCP
Fundamental para seguridad y auditoría — permite ver la conversación completa entre dos puntos, incluyendo el contenido de las solicitudes y respuestas HTTP.
ℹ️ Sobre el índice de stream: El número al final de
follow,tcp,ascii,N indica el índice del stream TCP (0, 1, 2...). Si omites el número, TShark muestra un resumen de todos los streams disponibles.Paso 1 — Limpiar y crear la captura
Terminal 1 — captura web
$ rm -f sample1.pcap
$ sudo tcpdump -i enp0s3 -c 50 -w sample1.pcap 'port 80 or port 443'
tcpdump: listening on enp0s3 ...
Terminal 2 — generar tráfico web
$ wget -qO- www.example.com > /dev/null
$ wget -qO- www.example.com > /dev/null
# repetir hasta llenar 50 paquetes
Paso 2 — Ver resumen de streams y reconstruir
bash — follow TCP stream
# Ver el Stream 0 (primer stream TCP detectado) tshark -r sample1.pcap -z "follow,tcp,ascii,0" # Ver el Stream 1 (si el 0 no era tráfico web) tshark -r sample1.pcap -z "follow,tcp,ascii,1"
✅ Resultado esperado: Verás el texto sin procesar de la solicitud HTTP (
GET / HTTP/1.1...) y la respuesta del servidor (HTTP/1.1 200 OK...) — la conversación completa reconstruida entre cliente y servidor.| Objetivo | Comando | Descripción |
|---|---|---|
| Stream 0 | tshark -r sample1.pcap -z "follow,tcp,ascii,0" | Primer stream TCP del archivo — normalmente el primer flujo capturado. |
| Stream 1 | tshark -r sample1.pcap -z "follow,tcp,ascii,1" | Segundo stream TCP — prueba con diferentes índices si el 0 no contiene lo buscado. |
EJ. 06
Estadísticas de Red — -z
La opción
-z genera estadísticas útiles: conversaciones entre IPs, distribución de protocolos y actividad de red por intervalo de tiempo.| Objetivo | Comando | Descripción |
|---|---|---|
| Conversaciones IPv4 | tshark -r sample.pcap -z conv,ip | Qué IPs se comunicaron, número de paquetes y bytes transferidos en cada dirección. |
| Jerarquía de protocolos | tshark -r sample.pcap -z io,phs | Porcentaje de paquetes de cada protocolo: Ethernet, IP, TCP, UDP, HTTP, etc. |
| Gráfico E/S por segundo | tshark -r sample1.pcap -z io,stat,1 | Actividad de red del archivo desglosada por intervalos de 1 segundo — detecta picos de tráfico. |
bash — estadísticas con -z
# Conversaciones entre IPs (quién habla con quién) tshark -r sample.pcap -z conv,ip # Distribución de protocolos (Ethernet > IP > TCP > HTTP...) tshark -r sample.pcap -z io,phs # Actividad por segundo (detección de picos de tráfico) tshark -r sample1.pcap -z io,stat,1
REF
TShark vs Wireshark
Ambas herramientas comparten el mismo motor de análisis de protocolos y los mismos filtros de visualización y formatos de archivo. La diferencia es la interfaz y el caso de uso.
💻 TShark — CLI
Interfaz
Línea de comandos
Uso típico
Servidores remotos sin GUI, scripts automatizados, filtros complejos, lotes de pcaps
Rendimiento
Más eficiente — no renderiza gráficos
Salida
Texto plano en terminal
🖥️ Wireshark — GUI
Interfaz
Interfaz gráfica de escritorio
Uso típico
Análisis interactivo, inspección visual, seguimiento de flujos, gráficos estadísticos
Rendimiento
Requiere más CPU/RAM para renderizar la GUI
Salida
Paneles visuales: listado, detalle, raw data
| Aspecto | TShark | Wireshark |
|---|---|---|
| Motor de análisis | Mismo motor compartido | Mismo motor compartido |
| Display filters | Idénticos (misma sintaxis) | Idénticos (misma sintaxis) |
| Formatos de archivo | .pcap, .pcapng (lectura/escritura) | .pcap, .pcapng (lectura/escritura) |
| Diferencia clave | Automatización y consola | Visualización e interacción |
En esencia: TShark te permite hacer todo lo que Wireshark puede a nivel de análisis de paquetes y filtrado, pero sin necesidad de una pantalla gráfica. Perfecto cuando accedes por SSH a un servidor Linux/Unix.
INSTALL
Instalar Wireshark en Ubuntu 24.04
Instalación con permisos correctos para capturar sin
sudo.bash — instalación completa
# 1. Actualizar repositorios sudo apt update # 2. Instalar Wireshark sudo apt install wireshark -y # → En el diálogo: selecciona "Sí" para permitir captura sin root # 3. Añadir tu usuario al grupo wireshark sudo usermod -aG wireshark $USER # $USER toma automáticamente el nombre de tu usuario actual # 4. Cerrar sesión / reiniciar para aplicar los cambios de grupo # Luego ejecutar: wireshark
⚠️ Paso importante: Debes cerrar la sesión de terminal e iniciar una nueva (o reiniciar la VM) para que los cambios del grupo
wireshark surtan efecto. Sin esto, seguirás necesitando sudo para capturar tráfico.