Lathack

Introducción a Wireshark

Introducción a Wireshark

Wireshark es una herramienta de análisis de red y multiplataforma que nos permite identificar, presentar y capturar paquetes en una interfaz de red, a través del tráfico que llega a nuestro sistema. Por tanto, en este apartado veremos una introducción básica a los usos de Wireshark.

¿Por qué usar Wireshark?

Teniendo en cuenta la información anterior, podemos deducir que esta herramienta será de gran utilidad para visualizar protocolos, servicios, direcciones IP, conexiones establecidas y mucho más. Con esta introducción, podremos identificar los host o máquinas que consuman muchos recursos de red, encontrar errores, visualizar conexiones fallidas y/o lentas, detectar posibles bugs o malwares en el sistema, entre otros usos en Wireshark.

Conceptos básicos

Introducción a Wireshark

A continuación daremos una introducción a los conceptos básicos que debemos tener en cuenta al momento de iniciar Wireshark y empezar a capturar paquetes.

A – Tabla de paquetes capturados

Las columnas representan lo siguiente:

  • No.: Este campo hace referencia al id en cuestión. Como podemos ver es “auto increment” y nos permite identificar cada una de las acciones mediante un número específico.

  • Time: Tiempo de ejecución sobre el paquete enviado y/o recibido.

  • Source: Máquina o dirección IP de origen.

  • Destination: Máquina o dirección IP de destino.

  • Protocol: Protocolo en uso.

  • Length: Tamaño del paquete.

  • Info: Información del paquete. Aquí podemos ver los tipos de registros DNS, los ttl, el comando o herramienta que se utilizó, etc..

B – Panel de detalles

Las información aquí representa los datos del frame capturado:

  1. En la primer fila encontramos los metadatos, los cuales nos brindan información específica con respecto al tiempo y tamaño de la captura. Por tanto, esta información no tiene relación con la captura de manera directa, sino más bien con el registro de Wireshark.

  2. En la segunda fila tenemos información con respecto a la capa de enlace. Por ejemplo podemos ver que hacemos uso del protocolo ethernet con ciertos detalles como la MAC del paquete (de origen y destino).

  3. En la tercer fila vemos el protocolo de internet (IP) donde se detalla la dirección origen y destino.

  4. En la cuarta fila se especifican los detalles de la capa de transporte, por ejemplo los puertos de origen y destino.

  5. En la útlitma fila podemos ver que nos devuelve la consulta DNS a la que hemos enviado un paquete usando el comando ping (mediante el protocolo ICMP). También aquí podemos encontrar infomación de seguridad del sitio, por ejemplo el sistema de seguridad TLS.

Cada fila cuenta con un icono de flecha, en el cual si hacemos clic, nos mostrará información en detalle.

C – Panel de bytes

En esta pequeña tabla encontramos, en lado izquierdo la información en Hexadecimal, y el lado derecho la información en ASCII.

Generalmente este panel nos sirve para ver información “oculta”. Por ejemplo, si la información viaja en texto plano podemos visualizar su contenido en este panel (por ejemplo, usuario y contraseña). También, podemos ver si hay datos o mensajes ocultos a través de estenografía, en caso de realizar pericias forenses.

Colores en Wireshark

De acuerdo al trabajo que estemos realizando podremos visualizar algunas veces que el programa nos responde con filas de distintos colores con respecto a la información de los paquetes enviados/recibidos. Con esta introducción veremos la cantidad de configuraciones, problemas y servicios que podemos encontrar en la red para identificar distintos problemas con Wireshark.

Pasos a seguir

Para saber el color que corresponde a cada función, tenemos que dar clic en la pestaña de “visualización” y luego en “reglas de color” como se muestra a continuación:

Por lo tanto se nos abrirá el siguiente cuadro:

Introducción a Wireshark

Como podemos ver, se detalla cada color con su respectiva función. También podemos modificar el color a gusto en “background” y “foreground” haciendo un clic en cada uno.

Manipulación de columnas

Como vimos anteriormente, tenemos diferentes tipos de campos que nos proveen información. Sin embargo, no siempre nos puede ser útil saber el tiempo, tamaño del paquete, entre otros. Por tanto, habiendo visto la introducción anterior, debemos saber que Wireshark nos permite editar estas columnas sacando información o agregando alguna nueva. También podemos cambiarle el nombre a las mismas (por ejemplo cambiar de inglés a español).

Esto lo podemos hacer de dos maneras:

Usando “Column Preferences”

Primero hacemos clic derecho sobre alguna columna y luego en “Column preferences” (Columna de preferencia). Se nos abrirá el siguiente cuadro:

Como vemos, en “Title” se especifican las columnas y en “Type” la función de las mismas. Cualquiera de estas podemos modificarlas, es decir, podemos colocar el nombre a nuestra columna y elegir alguna función que nos provea Wireshark.

En caso de querer eliminar o agregar la columna “Time” simplemente podemos destildar o tildar esta opción como se muestra en el checkbox izquierdo. Pero si queremos modificar el tiempo por otra función podemos hacer doble clic sobre el “Type” de la misma y se nos abrirá el siguiente cuadro:

Introducción a Wireshark

Como vemos, Wireshark nos provee de varias funciones aparte de las ya mostradas al principio.

Usando Checkbox

Otra forma de agregar/quitar una de las columnas y de forma más rápida, es simplemente haciendo doble clic en alguna de ellas y desmarcar el checkbox que se encuentra junto a las mismas para agregar o quitar. Por tanto, veríamos lo siguiente:

Como vemos, también podemos cambiar el nombre de alguna columna en la sección de “Edit Column” y no directamente desde “Column Preferences”.

Exportar Información

Una vez hecho los cambios necesarios, como vimos en la introducción anterior, y habiendo obtenido la información buscada en Wireshark, una buena práctica es exportar la información en un formato más “amigable”. Ya sea para entenderlo mejor o también, tener que presentarlo como informe en caso de alguna auditoría por ejemplo.

Para esto nos dirigimos a la pestaña de “File” y veremos abajo que se nos presentan varias formas de exportar, en nuestro caso lo haremos mediante CSV (formato con tablas o excel).

Incluso, como muestran las opciones, también podemos exportarlo en formato XML y JSON. En linux, si aplicamos el comando batcat, veríamos el formato exportado en csv de la siguiente manera:

Introducción a Wireshark

El mismo lo hemos guardado en el achivo example_audit.csv.

Uso de Filtros

Por defecto Wireshark captura todos los paquetes enviados y recibidos en la red. No obstante, podemos hacer uso de las herramientas que nos provee la librería pcap, por ejemplo Windump (en Windows) y TCPdump (en Linux). Estos filtros establecen los tipos de paquetes que deseamos capturar. Entonces lo primero que debemos hacer es irnos a «Capture» > «Options» y se nos abrirá la siguiente ventana:

Como podemos ver tendremos que colocar los datos de entrada (el tipo de interfaz, por ejemplo Ethernet), salida con respecto a al directorio a guardar los datos, tamaño, tiempo, compresión y librería a utilizar con los paquetes (por ejemplo, pcap) y finalmente las opciones, donde podremos elegir cuando para el proceso con respecto al tiempo, tamaño o cantidad de paquetes. Como así también evitar la resolución de nombres, entre otros..

Filtros de Captura

A continuación daremos una introducción a los distintos usos de filtros de captura que podemos establecer en Wireshark

Introducción a Wireshark

Mediante el buscador podemos combinar una determinada variedad de filtros para búsquedas específicas. En la imagen anterior podemos ver un ejemplo de esto, ya que solo se capturarán los paquetes provenientes desde la dirección IP 10.0.2.15. Por lo tanto, veríamos algo como lo siguiente:

Introducción a Wireshark

A continuación se detallarán cada una de las formas que podemos usar, una vez elegida la interfaz de red (por ejemplo. Ethernet o eth0) a la queremos aplicar dicho filtro:

Filtros basados en Hosts

Ejemplo

Descripción

host 10.0.2.15

Paquetes con origen o destino 10.0.2.15

src host 10.0.2.15

Paquetes con origen 10.0.2.15

dst host 10.0.2.15

Paquetes con destino 10.0.2.15

Filtros basados en Puertos

Ejemplo

Descripción

port 22

Paquetes con puerto origen o destino 22.

srt port 22

Paquetes con puerto origen 22.

not port 22 and not port 80

Paquetes excepto origen y destino puertos 22 y 80.

portrange 1-1024

Paquetes con puerto origen y destino en un rango de 1 a 1024.

dst portrange 1-1024

Captura todos los paquetes con puerto destino en un rango de 1 a 1024.

Filtros de protocolos Ethernet/IP

Ejemplo

Descripción

ip

Captura todo el tráfico IP.

tcp

Captura todos los segmentos TCP.

arp

Captura todo el tráfico ARP.

Filtros basados en red

Ejemplos

Descripción

Net 192.168.0.10

Tráfico con origen y destino subred 1.0

dst net 192.168.0.10

Tráfico con destino para la subred 2.0

Net 192.168.0.10/24

Tráfico para la subred 1.0 máscara 255.0

net 192.168.0.10 and port 22

Tráfico origen y destino puerto 22 en subred 2.0

broadcast

Solo el tráfico broadcast.

not broadcast and not multicast

Todo el tráfico excepto broadcast y el multicast.

Uso de Operadores

Habiendo visto la introducción anterior, debemos saber que también existen filtros en Wireshark conocidos como «Filtros de visualización». Los mismos, son una forma más específica de salida de paquetes mediante operadores relacionales, de asignación y lógicos que nos ayudarán a visualizarlos una vez obtenida la información deseada. Por ejemplo, teniendo en cuenta la información capturada anteriormente, podríamos hacer lo siguiente:

Con esto visualizamos aquellos servicios que corren por el puerto 53 (DNS) a través de UDP.
Veamos algunos ejemplos de estos filtros:

Operadores relacionales

Ejemplo 1

Ejemplo 2

Descripción

==

eq

Igual a

!=

neq

Distinto a

>

gt

Mayor a

<

lt

Menor a

>=

ge

Mayor o igual a

<=

le

Menor o igual a

Algunos ejemplos

Ejemplo

Descripción

ip.addr == 192.168.0.15

Tráfico por host 192.168.0.15

ip.addr != 192.168.0.15

Todo excepto host 192.168.0.15

ip.src == 192.168.0.15

Host origen 192.168.0.15

ip.dst == 192.168.0.15

Host destino 192.168.0.15

ip.addr == 1.1.1.1 and tcp.port ==

80

Origen y destino puerto TCP/80 y host 1.1.1.1

ip.ttl == 3

Paquetes IP cuyo campo TTL sea igual a 3.

ip.tos == x

Paquetes IP cuyo campo TOS sea igual a x.

ip.flags.df == x

Paquetes IP cuyo campo DF sea igual a x.

http contains “www.wireshark.org”

Paquetes HTTP que contienen www.wireshark.org.

frame contains “@ejemplo.es”

Correos con origen o destino al dominio

ejemplo.es..

tcp.port == 443

Origen o destino puerto TCP/443

icmp[0:1] == 08

Tráfico icmp de tipo echo request.

tcp.windows_size != 0

Paquetes cuyos campo Tamaño de Ventana del segmento TCP sea distinto de 0.

udp.port == 53

Visualiza todo el tráfico UDP puerto 53.

Operadores lógicos

Ejemplo 1

Ejemplo 2

Descripción

!

not

Negación (no)

&&

and

Unión (y)

||

or

Alternancia (uno u otro)

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

12 + seis =

Lathack
Scroll al inicio