Wireshark
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.
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?
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.
Tramas icmp
- Diferencia los distintos niveles OSI.
- ¿Para qué sirve el protocolo ARP? Pon un pequeño ejemplo.
Permite conocer la dirreccion fisia de una tarjeta de interfaz de red 48 bits.
- Identifica las MAC origen y destino del primer echo reply. ¿A qué interfaces corresponden? Puedes ayudarte de la tabla ARP de tu PC, que almacena la correspondencia entre direcciones IP y direcciones MAC. Usa el comando “arp –a” e incluye un pantallazo.
gfdjhhgf
- ¿Cómo se borra la tabla ARP? ¿Cuándo se vuelve a rellenar?
arp -d ^* cuandos e hace un a solicituds a rtu pc.
- Utiliza el comando “ping –a x.x.x.x” ¿qué información te da? Úsala para identificar mejor los equipos de tu tabla ARP.
resuelve nombre de host.
- ¿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/
los tres primeros bloques
- 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? Porque la ultima mac que hay es la de la puerta de enlace
- ¿Qué más campos diferencias en cada nivel? (Sólo alguno importante)
Wireshark ordena la info por capas. ÇY dentro de cada uno se pued ebuscar mas cosas.
- ¿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.
Por el dns. 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.
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?