Wireshark
Wireshark antes conocido como ethereal es un programa que permite analizar nuestra red es busca de problemas
Instalación
Para instalarlo en ubuntu basta con
sudo apt-get install wireshark
Una vez instalado tenemos que ejecutarlo como root para
ello desde la línea de comando
sudo wireshark
o
su wireshark
o
gksu -u root /usr/bin/wireshark
Nos saldrá un mensaje advirtiendonos de que es peligroso ejecutar wireshark como root le damos ok y listo
Preferencias
Todos los ajustes que pueden realizarse en la interfaz de Wireshark están en el menú Edit→ Preferences. (CTRL + Mayúsculas + P)
Es posible concentrar un conjunto de ajustes a la interfaz de Wireshark en un perfil, con el objetivo de aplicarlos con un solo click, solo cuando sea necesario.
Wireshark mantiene un conjunto de carpetas simples para almacenar los ajustes personales, y aquellos que vienen por defecto con la aplicación.
Ajustes de TCP (Prefeences->Protocols->TCP)
Allow subdissector to reassemble TCP streams: Seleccionar para lograr descargar los archivos (fotos, documentos, etc) capturados. Deseleccionar, para ver los comandos del protocolo de aplicación que son parte de la cabecera.
Track number of bytes in flight: Seleccionar, se lleva el conteo de los paquetes TCP que aún no han sido confirmados (ACK).
Calculate conversation timestamps: Seleccionar, se muestra el tiempo entre paquetes por cada conversación TCP.
Filtros
Ejemplos
tcp.srcport == 34 ←Capturamos sólo los paquetes con puerto origen 34
icmp[0:1] == 08 ← paquetes del tipo echo request
frames contains “@miempresa.es” ← paquetes de correo
frame contains “password” || frame contains “user”← para buscar contraseñas
(tcp.port eq 445) and !(ip.addr eq 192.168.1.1) ←muestra el tráfico tcp 445 minetras filtra una dirección. Esto es útil para detectar por ejemplo el virus Conficker. Buscamos todo ese tráfico pero filtramos por ejemplo nuestro servidor de dominio que es normal que si use el puerto 445
frame.time_delta >1 = paquetes que tardaron más de 1 sg
Eventos SMB
Close Request (0x04) Cerrado de archivo.
NT Create Andx Request (0xa2) Creación de carpetas y arhivos.
smb.cmd simplmente filtrndo por smb.cmd sin valor alguno podemos analizar las transacciones SMB, errores, etc.
SMB Rename Request (0x07) Renombrado de archivos.
SMB Read AndX Request (0x2e) Apertura de un archivo.
SMB Write Andx Request (0x2f) Escrituraen un archivo.
SMB Cancer Request (0xa4)
SMB Delete Request (0x06)
Ejemplo
Perfiles
Un perfil nos permite aplicar cambios sobre la interfaz de wireshark de forma inmediata. Deberíamos de crear varios perfiles según el tipo de tráfico que vamos a analizar.
Para crear/modificar/eliminar perfiles →Menú Edit → Configuration Profiles o con CTRL + Mayúsculas + A
IO Graph
Filtros:
tcp.analysis.lost_segment Perdida de paquetes o segmentos
tcp.analysis.retransmission Mecanismo de rentransmision
tcp.analysis.fast.retransmission Mecanismo de rentransmision rápida
tcp.analysis.duplicate_ack Análisis de ACKs duplicados
Detección de problemas de Red
Para buscar errores en el menú Analyze → Expert Info composite . Desde ahí podemos acceder rápidamente a los distintos problemas.
Ojo El Wireshark marca como error unos pequeños paquetes que se repiten varias veces en el tiempo y que son usados por algunas aplicaciones que usan paquetes TCP Keep-Alive para asegurarse de que no se corta la conexión entre cliente y servidor. Por ejemplo con aplicaciones de consultas en Bases de Datos. Normalmente no es señal de problemas de red.
También es útil añadir las siguientes columnas al wireshark:
Delta Time: Esta columna es necesaria para medir los tiempos de respuesta, retardos, etc
Cumulative Bytes: Muestra la cantidad de datos enviados. si lo dividimos por el tiempo tardado en enviarlo obtenemos el rendimiento.
TCP Windows Size: Útil si no sabemos el tamaño de la ventana TCP
IP DSCP Value: Útil cuando monitorizamos tráfico VoIP. Permite ver entre otras cosas si Qos está configurado
Algunos errores típicos
TCP Previous segmento lost nos indica que un segmento TCP anterior ha fallado
Un TCP Dup ACK significa que el hay perdida de paquetes. si el número de paquetes perdidos es alto indica una latencia alta
Por regla general:
Solo se esperan hasta 3 ACKs duplicados.
Uno o dos ACKs duplicados indica una reordenación de los segmentos.
Tres o más ACKs duplicados indica que se perdió el paquete.
Latencia
Según la wikipedia “la latencia de red es la suma de retardos temporales dentro de una red. Un retardo es producido por la demora en la propagación y transmisión de paquetes dentro de la red”. Es decir , la latencia es el tiempo que tarda una petición en completarse. Por ejemplo si estamos visualizando una página web, sería el tiempo desde que enviamos la solicitud hasta que la tenemos cargada.
La latencia puede estar originada en La red, el Origen o el Destino
Latencia en la Red → Se da cuando el tiempo de repuesta del destino (SYNC/ACK) a una petición SYNC del cliente, es alto.
Latencia en Origen (cliente)→ Es cuando el tiempo es alto entre que el cliente envía un ACK y el cliente envía un (Request)
Latencia en Destino(servidor)→Se da cuando el tiempo entre que el destino envía un ACK y el destino envía la respuesta es elevado
Para ver problemas de latencia tenemos que habilitar la columna Delta Time. Para habilitar la columna tenemos que seleccionar un paquete, en la zona de detalle del paquete, expandir la cabecera que aparece como Transmission Control Protocol TCP, al expandirlo buscar la última parte Timestamps y seleccionar Time since previous frame in this TCP stream . Al pinchar botón derecho del ratón seleccionar Aplicar como columna o bien CTRL+May+I
Referencias