Wireshark

De Portfolio Academico

Wireshark, antes conocido como Ethereal, es un analizador de protocolos open source utilizado para realizar análisis y solucionar problemas en redes de comunicaciones, para desarrollo de software y protocolos, y como una herramienta didáctica para educación. Cuenta con todas las características estándar de un analizador de protocolos.

Un administrador de red se puede encontrar con que la red va muy lenta, o ciertos equipos se desconectan sin motivo aparente. ¿Cómo sabemos si estamos siendo víctimas de un ataque o que simplemente es un problema de la conexión entre switches? La respuesta la podemos obtener utilizando un analizador de protocolos como Wireshark (open source), sin tener que acudir a soluciones de pago como MARS (Cisco) ó IDS/IPS.

Nota: Las imagenes ilustrativas pueden no corresponder con las especificaciones o equipos de la red de Egibide. En todo caso, los procesos aqui descritos son validos para cualquier red.

Análisis de tráfico con Wireshark

Las tarjetas de red, por defecto, descartan cualquier trama que les llegue y corresponda a una dirección MAC diferente. El objetivo es no saturar al sistema operativo.

Sin embargo, cuando deseamos analizar la red, el equipo que ejecuta Wireshark tiene que capturar todo el tráfico, sea o no él el destinatario. Este modo de funcionamiento se llama “promiscuo”.

La cuestión es, ¿aunque estemos en modo promiscuo, nos llegarán las tramas que otro ordenador envíe para ver, por ejemplo, una página web? La respuesta es: depende de cómo estemos conectados.

  • Si el PC con Wireshark está conectado a un hub al que también está conectado el equipo a vigilar, sí que veremos su tráfico: el hub es un dispositivo de nivel físico, que simplemente retransmite lo que le llega por un puerto por todos los demás
  • Si los dos equipos están conectados a un Switch, no podremos acceder a sus tramas: el switch las re-enviará directamente hacia la boca donde esté la puerta de enlace.
    • Ya lo veremos más adelante, pero necesitaríamos habilitar la opción de port-mirroring en el switch (Span en entornos CISCO): Además de por el puerto que toca, sácalo también por el puerto “monitor”, donde yo estoy escuchando.

Conecta tu PC y el de un compañero al mismo hub. Luego, conecta el hub a una toma hacia el switch de clase.

En un PC arranca el Wireshark y “esnifa” el tráfico en modo promiscuo. ¿Cómo sabes qué interfaz es la que tienes que usar? ¿Cómo sabrías su MAC?

La interfaz que tenemos que usar es la Conexion de area local, que es la interfaz que usa la tarjeta de red de cable. Para saber la direccion MAC, puedo introducir el comando ipconfig /all, que me da toda la informacion de la tarjeta de red.

Wireshark-interfazred.png

Parte 1: Análisis de tramas con ping

Como programa, ping es una utilidad diagnóstica en redes de computadoras que comprueba el estado de la conexión del host local con uno o varios equipos remotos de una red TCP/IP por medio del envío de paquetes ICMP de solicitud y de respuesta.3 Mediante esta utilidad puede diagnosticarse el estado, velocidad y calidad de una red determinada.4

Ejecutando Ping de solicitud, el Host local envía un mensaje ICMP, incrustado en un paquete IP. ICMP es un sub-protocolo de nivel 3 OSI (como IP)

Haz un ping desde la máquina que no tiene Wireshark a www.cisco.com mientras el Wireshark captura la sesión.

  • ¿Cómo filtrarías las tramas correspondientes al ping? ¿Cuántas son y qué es cada una? Cópialas.

El ping se realiza mediante tramas de protocolo ICMP. Cada peticion ping se traduce en dos tramas, la solicitud y la respuesta.

No.	Time		Source 		Destination 	Prot.	Length	Info
19	0.867400000	10.106.57.93	88.221.200.170	ICMP	74	Echo (ping) request  id=0x0001, seq=17/4352, ttl=128
20	0.903614000	88.221.200.170	10.106.57.93	ICMP	74	Echo (ping) reply    id=0x0001, seq=17/4352, ttl=51

La primera trama refleja la peticion de la maquina, mientras que la segunda indica la respuesta de la maquina remota.

Trama completa: Peticion

Wireshark-pingpregunta.png

Trama completa: Respuesta

Wireshark-pingrespuesta.png

  • Diferencia los distintos niveles OSI.

Dentro del resumen que nos ofrece Wireshark podemos diferenciar claramente los distintos niveles OSI. En el apartado llamado Frame nos detalla los parametros de la capa fisica, como el tiempo que ha transcurrido en transmitir la señal, su longitud, etc. En el apartado llamado Ethernet nos da datos sobre el nivel de enlace, como el origen y el destino. En el apartado de Internet Protocol version 4 nos da detalles del nivel de red; y por ultimo, en Internet Control Message Protocol nos da detalles sobre el nivel de transporte, ademas de incluir al final los datos enviados.

  • ¿Para qué sirve el protocolo ARP? Pon un pequeño ejemplo.

Permite conocer la direccion fisica de una tarjeta de interfaz de red. Por ejemplo, la tarjeta que aparece en las capturas anteriores tiene como IP 10.106.57.93, y como MAC 00192d419ede. El protocolo ARP se encarga de esa conversion, y de señalar ademas si esa IP es fija o dinamica.

  • ¿Cómo se borra la tabla ARP? ¿Cuándo se vuelve a rellenar?

La tabla ARP se consulta en Windows con el comando arp. Para borrar la tabla completa, se introduce arp -d *. Se vuelve a llenar a medida que el ordenador recibe y realiza peticiones.

  • Utiliza el comando “ping –a x.x.x.x” ¿qué información te da? Úsala para identificar mejor los equipos de tu tabla ARP.

Ping -a resuelve el nombre del host al que se esta haciendo ping.

  • ¿Qué parte de la dirección MAC corresponde al fabricante? ¿De qué fabricante se trata? Corrobora la información que te da Wireshark con la web http://www.8086.net/tools/mac/

Dado que la web proporcionada no daba ningun resultado, probamos con http://www.coffer.com/mac_find/. Esta nos devolvia el nombre del fabricante de la tarjeta, que se define por los tres primeros bloques de la direccion MAC.

  • Identifica las IP origen y destino de ese mismo echo reply. ¿Qué equipos son? ¿Por qué no coinciden los equipos destino en el caso de la MAC y la IP?

Los equipos son, el el caso de las IPs, el ordenador y el servidor. En el caso de las MACs, como el router ya se encarga de enrutar hacia internet, solo figuran las MACs del ordenador y de la puerta de enlace.

  • ¿Cómo ha sabido el equipo que la dirección IP de www.cisco.com es 88.221.8.170? Prueba a usar el filtro DNS y explica.

El servidor DNS le ha chivado la IP. Para ver los registros DNS en Windows, se utiliza el comando ipconfig /displaydns.

Para saber más:

Al filtrar el tráfico DNS, también aparecían un montón de tramas con protocolo MDNS, además en rojo Se trata del protocolo MulticastDNS. Cuando se utiliza mdns, en lugar de encargar la resolución de nombres a un equipo (servidor DNS), esta labor se distribuye y cada equipo se encarga de la resolución de su propio nombre, a través de un mecanismo multicast (mdns). Existen diferentes implementaciones, siendo las más conocidas Bonjour (Apple) y Avahi (GNU/Linux y BSD). Un buen artículo que explica más el proceso está en: http://albertomolina.wordpress.com/2008/07/07/utilizando-mdns-en-una-red-local/

Es decir, que cada equipo se encarga de enviar paquetes MDNS con la resolución de su propio nombre, y se anticipa a que alguien lo pregunte al servidor DNS por él. Sin embargo, no son paquetes Broadcast, sino Multicast: sólo los envía a los equipos interesados (se hace una especie de lista con los interesados)

Multicast: Una dirección multicast está asociada con un grupo de receptores interesados. De acuerdo al RFC 3171 las direcciones desde la 224.0.0.0 a la 239.255.255.255 están destinadas para ser direcciones de multicast. Este rango se llama formalmente "Clase D".

Multicast no es algo que se use mucho, pero mira tú por dónde, lo hemos encontrado enseguida!Sí que se usa MUCHO en IPTV. Varios clientes se “subscriben” a un canal de vídeo y sólo se manda para ellos.

¿Recordáis que la dirección IP destino era una 224.x.x.x.? --> por eso se ve en Wireshark, porque es multicast y alguno de los ordenadores del hub estaban en esa lista multicast.

¿Podrías haber hecho lo mismo si en vez de un hub hubieras usado un switch? Pruébalo y explica.

Tal y como se explica en este documento, no es posible hacer esto con un switch, dado que el switch solo envia los paquetes a sus destinatarios, salvo que este configurado de otra manera.

Parte 2 – Captura de usuario contraseña en una web no segura

Antes de empezar aprovecha para aclarar estos conceptos con el profesor:

¿Podrías explicar la diferencia entre http y https? ¿Cómo sabes si se usa uno u otro? ¿Qué ventajas aportan las web con https? ¿Por qué hay webs que usan https como gmail y el navegador las pone en verde y otras como esta da un error de certificado? http://ikas.diocesanas.org

Aunque ya quedan pocas páginas que no encripten su tráfico sensible con https, podemos familiarizarnos con Wireshark utilizándolo para capturar el usuario y contraseña de una web desprotegida: busca una página de este tipo.

Instala y arranca tu wireshark. De entre los interfaces disponibles, elige aquel que estás usando para acceder a internet y comienza la captura. Entra en la web y escribe un nombre de usuario y una contraseña. Una vez la página te haya dado error de acceso, vuelve a Wireshark.

  • Mira la secuencia de tramas capturadas y los protocolos. Entra en algunas de ellas e identifica los niveles del modelo OSI / TCP/IP. ¿Qué campos te llaman la atención?
  • Prueba a utilizar diferentes filtros:
    • Filtra los paquetes del protocolo HTTP directamente en la ventana del filtro:
    • Filtra los paquetes con origen la IP de tu equipo. Para ello localiza un paquete en la traza, en dentro de su parte IP y en la dirección usa el botón derecho para aplicarlo como filtro.
    • Aplica la misma técnica para filtrar por la IP de la página web investigada. De entre todas las tramas que te salgan usa el botón derecho sobre una cualquiera y elige “Follow TCP Stream”. Aunque aún no hayamos visto los protocolos TCP, con esta herramienta puedes ver directamente toda la información intercambiada en la conexión TCP (sobre la cual viajan las páginas web)
    • Utiliza el botón Expression para ver todas las opciones de filtrado y localiza las del protocolo HTTP. Dentro de ellas, te interesa filtrar por el request method. Filtra aquellas que utilicen el request method POST (uno de los dos métodos con los que HTTP envía la información contenida en un formulario cuando lo aceptamos) Puedes probar con http.host, ¿para qué serviría?
  • ¿Cómo aplicarías dos filtros simultáneamente? Prueba con el operador &&
  • También puedes usar la opción Edit → Filter para buscar cosas como user, usr, passwd, etc por todas las tramas de la captura. Si buscas un texto concreto usa la opción String.

Con toda esta información ya has tenido que ser capaz de localizar la trama donde figura la contraseña en claro. Es bastante importante no usar tus contraseñas habituales en sitios web que no implementan HTTPS (HTTP en modo seguro, con cifrado y autenticación, a través del protocolo SSL (Secure Socket Layer))

Otras cuestiones

¿Cómo configurarías wireshark para que funcione en modo no promiscuo? ¿Qué significa eso?