Wireshark es una herramienta de analisis de protocolos de red (network protocol analyzer) que permite capturar y examinar los paquetes de datos que circulan en una red. Es indispensable para administradores de redes y expertos en seguridad.
a. Instalacion en Windows
- Descarga Wireshark desde wireshark.org
- Ejecuta el archivo
.exedescargado - Durante la instalacion, marca la opcion para instalar Npcap — permite captura de paquetes en Windows
- Completa la instalacion siguiendo el asistente
- Abre Wireshark
b. Instalacion en Linux (Debian/Ubuntu)
sudo apt update sudo apt install wireshark # Durante la instalacion: responder "Si" para permitir captura sin root
sudo usermod -aG wireshark $USER # Cerrar sesion y volver a iniciar para aplicar cambios
c. Instalacion en macOS
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" # Instalar Homebrew si no esta instalado
brew install wireshark
a. Interfaz de red
Al iniciar Wireshark veras una lista de interfaces de red disponibles. Selecciona la interfaz correcta — solo capturars trafico de esa red.
- Red WiFi →
wlan0(Linux) oWi-Fi(Windows) - Red cableada →
eth0(Linux) oEthernet(Windows)
b. Filtros de Captura
Los filtros de captura se aplican antes de iniciar la captura — limitan que paquetes se capturan desde el inicio. Se escriben en el campo junto al boton de inicio.
| Filtro de captura | Descripcion | Ejemplo |
|---|---|---|
| icmp | Solo paquetes ICMP (ping) | icmp |
| tcp port N | Solo trafico HTTP (puerto 80) | tcp port 80 |
| host IP | Solo trafico de una IP especifica | host 192.168.1.100 |
| port N | Solo trafico en un puerto | port 80 |
| tcp | Solo paquetes TCP | tcp |
| udp | Solo paquetes UDP | udp |
c. Inicio y Detención de la Captura
- Iniciar: Selecciona interfaz → clic en icono de tiburon verde → o presiona
Ctrl + E - Detener: Clic en icono de cuadro rojo → o presiona
Ctrl + Enuevamente
Vamos a capturar paquetes ICMP (ping) entre tu maquina y otro dispositivo en la red.
- Inicia la captura en la interfaz correcta (p.ej.
Wi-Fi) - Abre una terminal y envia un ping:
ping 192.168.1.1 # Envia paquetes ICMP Echo Request a 192.168.1.1
- En Wireshark aplica un filtro de visualizacion para ver solo paquetes ICMP:
icmp- Detén la captura despues de unos segundos
Los filtros de visualizacion se escriben en la barra de filtros debajo de la barra de herramientas. No afectan la captura — solo muestran/ocultan paquetes ya capturados.
Filtrar por protocolo
http icmp tcp dns arp ssl telnet
Filtrar por direccion IP
ip.src == 192.168.1.10 ip.dst == 192.168.1.100 ip.addr == 192.168.1.10 # origen O destino
Filtrar por puerto
tcp.port == 80 # Puerto 80 (HTTP) udp.port == 53 # Puerto 53 (DNS) tcp.port == 443 # Puerto 443 (HTTPS) tcp.port == 22 # Puerto 22 (SSH) tcp.port == 25 # Puerto 25 (SMTP)
Filtrar por direcciones MAC
eth.src == 00:1A:2B:3C:4D:5E eth.dst == 00:1F:2C:3B:4A:5D
Filtros combinados con operadores logicos
http and ip.src == 192.168.1.10 tcp and not arp icmp or dns tcp.flags.syn == 1 and tcp.flags.ack == 0 # Solo SYN (sin ACK) http and tcp.port == 80 and ip.dst == 10.0.0.1
A diferencia de los filtros de visualizacion, los filtros de captura limitan los paquetes desde el inicio. Se aplican en el campo "Capture Filter" antes de hacer clic en Start.
| Filtro de captura | Descripcion |
|---|---|
| host 192.168.1.10 | Solo trafico de/hacia esa IP |
| port 80 | Solo trafico en puerto 80 |
| tcp | Solo paquetes TCP |
| udp | Solo paquetes UDP |
| icmp | Solo paquetes ICMP |
| not arp | Todo excepto ARP |
| host IP and not arp | IP especifica excluyendo ARP |
| port 22 or port 80 | SSH o HTTP |
Wireshark organiza la informacion en tres paneles:
a. Lista de Paquetes (panel superior)
- No.: Numero del paquete capturado
- Time: Marca de tiempo de captura
- Source: IP o MAC de origen
- Destination: IP o MAC de destino
- Protocol: Protocolo (TCP, UDP, ICMP, HTTP...)
- Length: Longitud del paquete en bytes
- Info: Informacion adicional del paquete
b. Detalles del Paquete (panel medio)
Representacion jerarquica por capas del modelo OSI:
- Ethernet Header: MACs de origen y destino (capa 2)
- IP Header: IPs de origen/destino, TTL (capa 3)
- Protocolo: TCP/UDP/ICMP/HTTP... (capa 4/7)
c. Datos en bruto — Hexadecimal (panel inferior)
El paquete en formato hexadecimal y ASCII, tal como fue transmitido. Util para analisis forense y depuracion avanzada de protocolos.
a. Analisis de Paquetes ICMP (Ping)
Al capturar trafico ICMP veras dos tipos de mensajes:
- Echo Request: Tipo 8 — mensaje enviado por el comando
ping - Echo Reply: Tipo 0 — respuesta del host destino
icmp # Filtrar solo ICMP en visualizacion
b. Analisis de Trafico HTTP
En paquetes HTTP encontraras:
- HTTP Request: Metodo (GET, POST), URL, cabeceras HTTP (Host, User-Agent...)
- HTTP Response: Codigo de estado (200 OK, 404 Not Found), Content-Type, cuerpo
http http.request.method == "GET" http.response.code == 200
c. Analisis del TCP 3-Way Handshake
El proceso de establecimiento de conexion TCP de tres vias:
tcp.flags.syn == 1 and tcp.flags.ack == 0 # Solo paquetes SYN (inicio de conexion) tcp.flags.syn == 1 and tcp.flags.ack == 1 # Solo SYN-ACK tcp.flags.fin == 1 # Cierre de conexion
a. Guardar captura completa (.pcap)
- Ve a File > Save As
- Selecciona el formato
.pcap(estandar de capturas de red) - Haz clic en Guardar
b. Exportar paquetes especificos
- Aplica un filtro de visualizacion para aislar los paquetes de interes
- Ve a File > Export Specified Packets
- Elige exportar todos los mostrados o solo los seleccionados
- Guarda en formato
.pcap
c. Exportar como Texto o CSV
- Ve a File > Export Packet Dissections > As Plain Text o As CSV
- Elige los detalles a incluir y guarda el archivo
- Inicia la captura en Wireshark
- Abre el navegador y visita
http://example.com - Detén la captura
- Aplica el filtro:
http- Selecciona un paquete GET para ver los detalles:
- Host: example.com
- User-Agent: detalles sobre tu navegador
- GET / HTTP/1.1: solicitud para obtener la pagina de inicio
El analisis de flujos TCP permite ver todo el intercambio de paquetes entre dos endpoints durante el tiempo que dura una conexion. Util para identificar retrasos, retransmisiones o perdida de paquetes.
Como seguir un flujo TCP
- Captura trafico TCP con el filtro
tcp - Identifica un paquete de la conexion que deseas analizar (ej: un HTTP GET)
- Clic derecho en el paquete → Follow > TCP Stream
🔵 Azul: Datos enviados por el servidor.
El flujo se muestra en texto claro organizado cronologicamente.
Identificar retransmisiones y perdida de paquetes
En la columna "Info" busca:
[TCP Retransmission]— paquete TCP retransmitido, indica congestion o problemas de red[TCP Dup ACK]— ACK duplicado, puede indicar perdida de paquetes
tcp.analysis.retransmission tcp.analysis.duplicate_ack tcp.analysis.lost_segment
a. Graficos de tiempo — IO Graph
Visualiza el volumen de trafico a lo largo del tiempo. Identifica picos o anomalias.
- Ve a Statistics > IO Graph
- Ajusta el intervalo de tiempo y aplica filtros para tipos especificos
- Ejemplo: filtro
httppara ver solo el trafico HTTP
b. Jerarquia de protocolos
- Ve a Statistics > Protocol Hierarchy
- Muestra todos los protocolos capturados de forma jerarquica (capa enlace → red → transporte)
- Para cada protocolo: numero de paquetes y porcentaje del trafico total
c. Conversaciones y Endpoints
- Statistics > Conversations — muestra todas las comunicaciones entre pares de IPs para Ethernet, IP, TCP, UDP
- Statistics > Endpoints — todas las IPs capturadas con estadisticas de paquetes enviados y recibidos
d. Diagrama de flujo
- Ve a Statistics > Flow Graph — secuencia visual del intercambio de paquetes
a. Deteccion de escaneos de puertos
Los escaneos de puertos generan muchos SYN sin ACK desde una misma IP hacia diferentes puertos.
tcp.flags.syn == 1 and tcp.flags.ack == 0 # Si ves muchos SYN desde la misma IP a puertos diferentes -> posible port scan
- Si ves multiples SYN desde la misma IP a puertos distintos → indicio de escaneo
- Selecciona un SYN → Statistics > Conversations para ver todas las IPs y puertos involucrados
b. Deteccion de ataques DoS
- Ve a Statistics > IO Graphs y observa picos de trafico inusuales
- Identifica las IPs responsables en Statistics > Endpoints
c. Trafico sensible no cifrado
- Captura trafico en una sesion con transacciones sensibles (login, transferencias)
- Filtra por
http— si hay trafico HTTP (no HTTPS), las credenciales van en claro - Examina los detalles del paquete — podras ver usuario/contrasena en texto claro
http # Si hay logins por HTTP (no HTTPS) -> credenciales visibles en claro
a. Configuracion en Linux
sudo iwconfig wlan0 mode monitor # o con airmon-ng: sudo airmon-ng start wlan0
En Windows, Wireshark usa el controlador Npcap para habilitar el modo monitor en ciertas tarjetas de red.
b. Filtros para redes inalambricas
wlan.fc.type_subtype == 0x00 or wlan.fc.type_subtype == 0x01 # Trafico de gestion de Wi-Fi (asociacion, desasociacion) wlan.fc.type == 0x02 # Trafico de datos entre dispositivos Wi-Fi
a. Lua Scripts
Wireshark soporta scripts Lua para crear analizadores de protocolo personalizados o filtros. Cargalos desde Edit > Preferences > Protocols > Lua.
b. Herramientas complementarias
# TShark — equivalente CLI de Wireshark tshark -i eth0 -w captura.pcap # Capturar en eth0 tshark -r captura.pcap # Leer un .pcap tshark -r captura.pcap -Y "http" # Filtrar por protocolo # tcpdump — captura basica tcpdump -i eth0 -w captura.pcap # Capturar y guardar tcpdump -i eth0 port 80 # Solo puerto 80 tcpdump -i eth0 host 192.168.1.10 # Solo una IP
- Inicia Wireshark y carga la captura de trafico
- Aplica el filtro para mostrar solo paquetes SYN sin ACK:
tcp.flags.syn == 1 and tcp.flags.ack == 0- Si ves multiples SYN desde la misma IP a puertos diferentes → fuerte indicacion de port scan
- Selecciona un SYN → Statistics > Conversations para ver todas las IPs y puertos involucrados en el escaneo
SMTP es un protocolo orientado a linea donde se intercambian mensajes entre servidor (rojo) y cliente (azul). Cada comando termina con CRLF (retorno de carro + nueva linea).
Flujo de una transaccion SMTP
Filtros Wireshark para SMTP
smtp # Ver todo el trafico SMTP smtp.command.verb == "EHLO" # Ver solo comandos EHLO smtp.response.code == 250 # Ver respuestas 250 OK del servidor # Seguir el flujo completo: # Clic derecho en paquete SMTP -> Follow -> TCP Stream
Diferencia HELO vs EHLO
- HELO: Saludo basico de SMTP clasico
- EHLO: Extended HELLO — el servidor responde con capacidades adicionales:
PIPELINING,SIZE,HELP,ENHANCEDSTATUSCODES
X-Mailer: swaks v20061116.0 jetmore.org/john/code/#swaks
HTTP es un protocolo sin estado orientado a linea. Una peticion HTTP comienza con una Start Line que incluye metodo, URL y version HTTP, y termina con CRLF.
Estructura de una peticion HTTP
Filtros Wireshark para HTTP
http # Todo el trafico HTTP http.request.method == "GET" http.request.method == "POST" http.response.code == 200 # OK http.response.code == 404 # Not Found http.response.code == 302 # Redirect http.host == "example.com" # Filtrar por dominio # Ver credenciales en HTTP no cifrado (peligroso): http.request.method == "POST" and http contains "password"
http → quedan 2 paquetes2. Abre el paquete de respuesta (numero 6)
3. Expande el panel HTTP → cabeceras de respuesta
4. Busca el campo Server
Server: gws
- Ejecuta
chmod u+s /usr/bin/dumpcappara permisos (laboratorio) - Selecciona la interfaz de red en Wireshark
- Configura la captura para 10 paquetes, sin modo promiscuo
- Abre una terminal y ejecuta ping
$ ping 192.168.1.1
Una vez capturados los 10 paquetes, detén el ping con Ctrl-C y analiza los paquetes ICMP. Responde:
- Datos del paquete: numero, bytes de longitud, protocolos contenidos
- Ethernet: donde se identifica el protocolo IP encapsulado
- IP: longitud, origen, destino (formato), tipo de protocolo (codigo)
- ICMP: que es, codigo tipo para Echo Request (8) y Echo Reply (0)
- Numero de secuencia: comparar Request vs Reply
- Activa el modo promiscuo y sin limite de paquetes
- Inicia captura → ejecuta ping → abre el navegador y visita varias URLs
- Detén la captura
- Ve a Statistics > Protocol Hierarchy y anota:
- ARP: ______ paquetes
- IP: ______ paquetes
- TCP: ______ paquetes
- UDP: ______ paquetes
icmp # Filtrar y ver solo ICMP tcp # Filtrar y ver solo TCP (incluye paquetes en negro = errores)
$ ping -c 4 www.google.com
dns # Ver peticiones y respuestas DNS udp.port == 53 # Puerto DNS (UDP 53)
- Localiza el servidor DNS en la primera peticion
- Identifica la Query (resolucion nombre → IP) y la respuesta inversa (IP → nombre)
- Ve a Statistics > Conversations y Statistics > Flow Graph
- Repite el ping con la IP directa — ¿se generan consultas DNS? (No)
host 192.168.1.X and not arp # Filtrar por IP del host objetivo excluyendo ARP
- Conectate via telnet o ssh a otro equipo de la red
- Analiza los puertos en la capa de transporte (telnet=23, ssh=22)
- Observa el grafico de flujo en Statistics > Flow Graph
port 80 # Filtro predefinido "TCP or UDP port 80 (HTTP)"
- Visita
http://www.google.como similar con el filtro activo - Localiza el comando
GET / HTTP 1.0en los datos HTTP - Localiza el texto HTML de la respuesta del servidor
- Sigue el flujo: Analyze > Follow TCP Stream
Tareas — Analisis de Capturas Reales
telnet # Filtro de visualizacion para ver solo trafico Telnet
Para analizar la sesion: clic derecho en un paquete Telnet → Follow > TCP Stream
login: fake Password: user
ping www.yahoo.com
exit
CA emisora: VeriSign
SSH viaja cifrado sobre TCP/IP (solo el payload SSH esta cifrado)
https://wiki.wireshark.org/samplecaptures — incluye capturas de Telnet, SSL, SSH, HTTP, DNS y muchos otros protocolos.Referencia Rapida de Filtros
| Filtro | Tipo | Descripcion |
|---|---|---|
| icmp | Visualizacion | Solo paquetes ICMP (ping) |
| http | Visualizacion | Solo trafico HTTP |
| dns | Visualizacion | Solo consultas DNS |
| tcp | Ambos | Solo paquetes TCP |
| udp | Ambos | Solo paquetes UDP |
| ssl | Visualizacion | Solo trafico SSL/TLS |
| telnet | Visualizacion | Solo trafico Telnet |
| ip.addr == X.X.X.X | Visualizacion | Trafico de/hacia una IP |
| tcp.port == N | Visualizacion | Trafico en un puerto TCP |
| tcp.flags.syn == 1 and tcp.flags.ack == 0 | Visualizacion | Solo SYN (inicio TCP / port scan) |
| tcp.analysis.retransmission | Visualizacion | Retransmisiones TCP |
| host X.X.X.X | Captura | Capturar solo de/hacia esa IP |
| port N | Captura | Capturar solo puerto N |
| host IP and not arp | Captura | IP especifica excluyendo ARP |
| eth.src == MAC | Visualizacion | Filtrar por MAC origen |
| wlan.fc.type == 0x02 | Visualizacion | Datos Wi-Fi |