Anlisis de trfico Ethernet

Vicente González Ruiz

December 26, 2013

Contents

1 Introduccin
2 Lanzando Wireshark
3 Seleccin del interface de red
4 Capturando paquetes
5 Finalizacin de la captura
6 Encapsulamiento de paquetes y niveles OSI
7 Los filtros

1 Introduccin

Todas las comunicaciones que se producen en redes de computadoras se basan en la transmisin de paquetes de datos. Unas veces estos paquetes son generados por nuestra computadora, otras van dirigidos deste otro host a sta y en otras ocasiones, los paquetes simplemente pasan cerca de ella y es posible capturarlos.

En esta prctica vamos a usar un analizador de trfico conocido por Wireshark para ver la estructura y el contenido de frames.

Wireshark, por defecto, funciona en modo promiscuo, capturando todos los paquetes de datos que llegan hasta el interfaz de red seleccionado. Si se utiliza el modo no promiscuo, slo aquellos paquetes que el sistema operativo reconoce como suyos1 sern capturados. Para esta prctica es indiferente el modo que usemos, aunque debe saberse que el modo promscuo slo puede ser usado por el administrador del sistema opertivo.

2 Lanzando Wireshark

Preferiblemente como administrador (revsese el Apndice ??), ejecute el comando:

root# wireshark &

Debera aparecer una ventana semejante a lo que aparece en la Figura


PIC

Figure 1: Ventana inicial de Wireshark.


1. Si el comando anterior fallase es muy probable que Wireshark no est instalado. Revise el Apndice ?? para solucionar este problema.

3 Seleccin del interface de red

Wireshark posee una serie de botones que facilitan su uso. Antes de comenzar una captura es necesario indicar a Wireshark de qu interface de red queremos capturar. Para ello hay que pinchar en el botn que se muestra en la Figura


PIC

Figure 2: Seleccin del adaptador de captura en Wireshark.


2. Tras pinchar en dicho botn, aparecer una ventana semejante a la que aparece en la Figura


PIC

Figure 3: Ventana de seleccin del interface usado para scanear la red.


3.

Como mnimo, deberamos poder elegir entre eth0 y lo. eth0 es el primer adaptador de red Ethernet. lo es el interface loopback (lazo de retorno) que se utiliza para que los procesos que corren dentro de la misma mquina puedan comunicarse entre s, de forma similar a si estuvieran en mquinas diferentes. El adaptador lo siempre existe y lo simula el sistema operativo, independientemente de que tengamos o no hardware de red. Por ejemplo, para seleccionar el interface de red eth1, debera pincharse en el botn especificado en la Figura


PIC

Figure 4: Botn de seleccin del interface usado para scanear la red.


4.

4 Capturando paquetes

Tras seleccionar el interface de red deseado, Wireshark comienza la captura y los paquetes capturados aparecen en una ventana como la que se presenta en la Figura


PIC

Figure 5: Ventana de captura de paquetes.


5. Dicha ventana se divide en tres grandes reas, que descritas desde arriba hacia abajo contienen:

  1. Una lista de paquetes capturados, en tiempo real, y que tiene 6 columnas:
    1. El ndice del paquete en la sesin de captura. Los paquetes por defecto se ordenan en funcin de su instante de captura.
    2. El instante en que se ha capturado el paquete.
    3. La direccin IP (o en su defecto la direccin fsica) del interface de red del que ha partido el paquete.
    4. La direccin IP (o en su defecto la direccin fsica) del interface de red al que va dirigido el paquete.
    5. El protocolo de ms alto nivel que es usado por el paquete.
    6. Informacin extra sobre el contenido del paquete.

    En algunas situaciones puede ser interesante ordenar los paquetes siguiendo otro orden distinto del usado por defecto (el temporal). Los paquetes pueden ordenarse por cualquiera de estos campos pinchando con el ratn en el encabezado de la columna correspondiente.

  2. Los detalles sobre la cabecera del paquete seleccionado en la lista de paquetes.
  3. El contenido del paquete (includa la cabecera) en hexadecimal y ASCII.

5 Finalizacin de la captura

Aunque Wireshark puede estar durante horas capturando paquetes sin queja alguna, lo ms frecuente es detener la captura tras un cierto tiempo prudencial, por ejemplo, cuando sepamos que los paquetes que deseamos ya han sido capturados.2 Esto se consigue pinchando en el botn que se muestra en la Figura


PIC

Figure 6: Botn de detencin de una captura de paquetes.


6.

6 Encapsulamiento de paquetes y niveles OSI

Una de las principales utilidades de Wireshark radica en la facilidad de uso de cara a determinar cmo se ha realizado el proceso de encapsulamiento, es decir, cmo unos paquetes de datos contienen a otros paquetes a diferentes niveles de la jerarqua de capas del modelo OSI. En la ventana central aparecen las distintas cabeceras que se han generado por cada uno de estos niveles.

Podemos conocer el contenido concreto de cada una de estas cabeceras pulsando con el botn derecho del ratn en el tringulo asociado.

7 Los filtros

Es posible configurar Wireshark para que capture slo aquellos paquetes que nos interesen (lo que es especialmente til si existe mucho trfico no deseado). Por ejemplo, si desactivamos el modo promiscuo, slo capturaramos los paquetes que van dirigidos a nuestro adaptador de red.

Adems pueden definirse filtros mucho ms sofisticados, tanto a la hora de capturar como de visualizar. A continuacin se muestran una serie de ejemplos (vase http://www.wireshark.org/docs/dfref para saber qu camos pueden ser filtrados):

  1. http. Filtra (muestra slo) los paquetes que contienen trfico HTTP.
  2. ip. Slo trfico IP.
  3. frame contais "wireshark". Slo aquellos paquetes que contienen la cadena “wireshark”.
  4. http contains "http://www.wireshark.org";. Slo trfico HTTP, pero que se dirige o proviene de www.wireshark.org.
  5. lower(http) contains "http://www.wireshark.org";. Idem que el ejemplo anterior, pero insensible a las maysculas o minsculas. upper(http) contains "HTTP://WWW.WIRESHARK.ORG";. La otra posibilidad, con idntico resultado.
  6. ip.addr == 150.215.156.2. Slo aquellos paquetes IP que vengan o vayan a 150.215.156.2.
  7. http.request.method == "GET". Slo aquellos paquetes HTTP que sean un GET.
  8. http.request.method == 47.45.54. Idem al anterior (nota ASCII(’G’)=47 ...).
  9. frame.pkt_len > 10. Slo aquellos paquetes, que a nivel de enlace, tengan ms de 10 bytes de londigud.
  10. eth.dst != ff:ff:ff:ff:ff:ff. Slo aquellos paquetes Ethernet que no vayan dirigidos a la direccin de broadcast de la subred.
  11. echo.request == 1. Slo los paquetes ICMP echo request.
  12. ip.dst == www.mit.edu. Slo aquellos paquetes IP con destino www.mit.edu.
  13. ip.addr == 129.111.0.0/16. Slo aquellos paquetes IP que vengan o vayan a la red 129.111.0.0/16.
  14. ip.addr == gogh.ace.ual.es/24. Slo aquellos paquetes IP que vengan o vayan a la red donde est gogh.ace.ual.es.
  15. eth.src[0:3] == 00:00:83. Slo aquellos paquetes Ethernet que provengan de direcciones que comiencen por 00:00:83.
  16. tcp.flags & 0x02. Slo aquellos paquetes que contienen una cabecera TCP, y el campo flags de dicha cabecera tiene el segundo bit de menos peso igual a 1.
  17. ip[42:2] & 40:ff. Slo aquellos paquetes que contienen una cabecera IP, y los bytes de ndice 42 y 43 valen 0x40 y 0xFF, respectivamente.
  18. tcp.port == 80 and ip.src == 192.168.2.1. Slo aquellos paquetes que vayan o vengan al puerto 80, usen el TCP y vayan o vengan de la direccin IP 192.168.2.1.
  19. http and frame[100-199] contains "wireshark". Slo aquellos paquetes que sean trfico HTTP y adems contengan la cadena “wireshark” entre los 100 bytes a partir del byte 100.
  20. not http. Slo aquellos paquetes que no sean trfico HTTP.
  21. ip.addr ne 192.168.4.1. Slo aquellos paquetes que tengan una cabecera IP3 en la que figure una direccin IP que no sea la 192.168.4.1.
  22. not ip.addr eq 192.168.4.1. Slo aquellos paquetes que contengan una cabecera IP y en la que ninguna de las direcciones IP sean igual a 192.168.4.1.

Ejercicio 1:

  1. Lance un navegador Web.
  2. Inicie el proceso de captura de paquetes.
  3. Acceda a una pgina Web, como por ejemplo www.google.es.
  4. Detenga el proceso de captura de paquetes.

Y si todo ha ido bien, debera poder responder a las siguientes preguntas:

  1. ¿Qu protocolo de (1) la capa de aplicacin, (2) transporte, (3) red y (4) enlace de datos ha usado?
  2. ¿Cuntos frames Ethernet ha enviado? Una forma sencilla de contestar esta pregunta es filtrar los paquetes de manera que slo se muestren aquellos que tienen como direccin fsica de partida, la de su adaptador de red.
  3. ¿Cuntos ha recibido?
  4. Segn el campo Type de la cabecera Ethernet del primer paquete que ha enviado, ¿qu protocolo(s) de la capa de red ha usado?
  5. Indique cul es la direccin fsica del adaptador de red del que han partido los paquetes de ida.
  6. ¿Dnde est pinchado dicho adaptador?
  7. Indique cul es la direccin fsica del adaptador de red al que han sido dirigidos los paquetes de vuelta.
  8. ¿Dnde est pinchado dicho adaptador?
  9. ¿Cul es la direccin IP del adaptador de red de ida?
  10. ¿Cul es la direccin IP del adaptador de red de vuelta?
  11. ¿Coincide dicha direccin IP con la de www.google.es?
  12. Basndose en el anlisis que realiza Wireshark, haga un esquema de la estructura de los paquetes Ethernet, indicando cuntos campos existen, qu tamao tienen y qu contiene cada uno de ellos.