Después de hablar sobre el hardware más común de una red, llegó el momento de capturar el tráfico para su posterior análisis. Pero… ¿Cómo lo hacemos? A veces no es tan sencillo como conectar un equipo a la red y empezar a capturar tráfico. Hemos visto que dependiendo del dispositivo de red usado, los paquetes se gestionan de una u otra forma. Por lo tanto, tendremos que tenerlo en cuenta a la hora de decidir cuál es el mejor método de captura y en donde debemos de hacer esa captura.
Pero… ¿Cómo podemos capturar todo el tráfico que circula a través de la red? Vamos a necesitar una tarjeta de red (NIC – Network Interface Card) que soporte el Modo Promiscuo.
Modo Promiscuo:
Hemos visto que el tráfico de Broadcast se envía a todos los dispositivos de un segmento de red (Broadcast Domain), independientemente de cual sea su destino. Por ejemplo, el protocolo ARP (Address Resolution Protocol), que veremos más adelante y es fundamental en una red, se usa para determinar qué dirección MAC se corresponde con una dirección IP particular. Para conocer la MAC correspondiente, un dispositivo envía un paquete Broadcast ARP a todos los dispositivos de ese Dominio de Broadcast con la esperanza de que sólo el dispositivo correcto responda. Sólo este dispositivo procesará ese paquete transmitido, mientras que los demás lo desecharán.
Ese descarte de paquetes hace que la red sea eficiente, pero desde el punto de vista del análisis de tráfico no nos interesa. Es el Modo Promiscuo lo que hace que veamos todos los paquetes, cuando la NIC trabaja en este modo, se procesan todos los paquetes sin tener en cuenta su destino. Y una vez procesados, podemos utilizar Wireshark o cualquier otra herramienta de packet-sniffing para su análisis.
Este Modo Promiscuo se consigue con un driver, el libpcap (en Linux) ó WinPcap / Npcap (para Windows) que por ejemplo con Wireshark ya viene incluido en el proceso de instalación. La mayor parte de las tarjetas de red actuales soportan el Modo Promiscuo. Tened en cuenta que no sería necesario el Modo Promiscuo si sólo queremos capturar el tráfico con destino a la dirección MAC de la NIC en la cual estamos «sniffando».
Nota: Quizás es adelantarse un poco pero la gente suele tener dudas con respecto al Modo Promiscuo en un entorno con Switches. Recordad: el Modo Promiscuo de por sí solo no te muestra tráfico adicional en una red con Switches, ya que un Switch sólo reenviará los paquetes destinados a tu dirección MAC en el puerto al que estés conectado. Si quieres capturar paquetes que no van destinados a tu MAC tendrás que utilizar las técnicas que explico más abajo (Port Mirroring ó Hubbing Out ó Network TAP). Una vez implementas estas técnicas necesitarás el Modo Promiscuo para que tu NIC no descarte o ignore los paquetes que no iban destinados a su MAC. El Modo Promiscuo es una cosa, pero que los paquetes lleguen físicamente a tu Host es otra.
Vamos a ver ahora las diferencias de capturar tráfico en una red creada con Hubs o con Switches:
Capturando tráfico en una red con Hubs:
Las principales razones por las cuales no se utilizan Hubs hoy en día es por la baja seguridad que ofrecen y por las colisiones que se producen en la red si dos o más dispositivos transmiten al mismo tiempo.
Desde el punto de vista del análisis de tráfico lo primero no es un problema, más bien es el escenario idóneo para capturar. Un Hub retransmite los paquetes a todos los puertos por lo tanto si colocamos un sniffer en uno de esos puertos podremos capturar todo el tráfico que circula por la red.
Si tomamos como ejemplo el escenario del anterior artículo veremos que simplemente colocando un sniffer en uno de los puertos del Hub ya estaremos capturando todo el tráfico que tiene lugar en la red, en este caso vemos cómo capturaríamos el tráfico que iba dirigido al Equipo D:

Si tuviésemos una red implementada con varios Hubs, capturaríamos de igual forma todo el tráfico de la misma ya que a su vez, los Hubs reenvían los paquetes entre ellos mismos. Rara vez veremos Hubs en las redes modernas ya que además de este problema de seguridad, su rendimiento es bajo. Y es bajo porque sólo un dispositivo puede transmitir al mismo tiempo, lo cual provoca que cuando varios dispositivos transmiten al mismo tiempo se produzcan colisiones de paquetes. Estas colisiones de paquetes ocasionan pérdidas de paquetes que se compensan con muchas retransmisiones, dando lugar a un problema de congestión de red. Es sencillo entender que cuando un paquete necesita ser reenviado varias veces al final el rendimiento de la red se ve afectado.
Capturando tráfico en una red con Switches:
Los Switches permiten comunicación full-duplex, es decir, los dispositivos pueden enviar y recibir al mismo tiempo. Además hemos visto que son capaces de gestionar de forma eficiente tanto el tráfico Broadcast, como el Multicast y Unicast. Es por ello que son los dispositivos de red más comunes hoy en día.
Desafortunadamente, desde el punto de vista del análisis de tráfico añaden complejidad, ya que si conectamos un sniffer a un puerto de un Switch lo único que veremos es el tráfico Broadcast además del tráfico que envíe o reciba ese dispositivo donde tenemos nuestro sniffer.
Existen principalmente tres métodos para capturar ó «sniffar» tráfico en una red con Switches: Port Mirroring (ó puerto espejo), Hubbing Out, o utilizando un Network TAP (Terminal Access Point ó Test Access Point).
Port Mirroring:
Puerto espejo o también llamado Port Spanning es la forma más sencilla de capturar tráfico en una red con Switches. Básicamente lo que hace es enviar una copia del tráfico de red visto en un puerto del Switch a otro puerto, y es en ese otro puerto donde conectaríamos nuestro sniffer.
Para conseguir esto se necesita un Switch que sea gestionable, es decir, que tengamos acceso a su configuración vía consola de comandos o vía interfaz web. Dependiendo del fabricante se configurará de una forma u otra, por ejemplo en Cisco se denomina SPAN (Switched Port Analyzer). La idea siempre es la misma, enviar una copia del tráfico de un puerto a otro puerto, pero se puede enviar también el tráfico de múltiples puertos (o de una VLAN) a un puerto específico para su análisis. El problema aquí es que dependiendo del tráfico que estemos monitoreando podemos llegar a colapsar nuestro Switch provocando pérdida de paquetes o incluso que pare de funcionar completamente (conocido como oversubscription).
Tenemos que tener en cuenta que si por ejemplo estamos reenviando el tráfico de cinco puertos full-duplex de 100Mbps a un puerto de 100Mps full-duplex, éste puerto podría recibir 1000Mbps, con lo que estaríamos sobrepasando su ancho de banda en 800Mbps. Tenemos que tener cuidado con esto, normalmente no llegamos a usar la máxima capacidad de los puertos con lo cual la suma del tráfico de los cinco puertos no llega a los 200Mbps pero dependerá del uso de la red.
A pesar de que este método es muy sencillo de implementar, si tenemos un alto tráfico de red suele derivar en pérdida de paquetes debido al oversubscription que comentábamos. Esta es la razón por la cual este método no se suele usar y se opta por un Network TAP en redes con mucho tráfico (aunque hay Switches gestionables con muchas opciones de monitorización (como SNMP – Simple Network Management Protocol) y que también son mucho más caros).
Nota: Una VLAN como su nombre indica es una red local virtual que está un nivel por encima de la red física. Las VLANs trabajan en la capa 2 del modelo OSI, es decir, con direcciones MAC en vez de IPs. Algunos Switches permiten configurar VLANs, las cuales permiten «dividir» ese Switch físico en varios Switches virtuales, como si se tratase de Switches independientes. De tal forma que si un puerto de una VLAN recibe un paquete con destino a una VLAN diferente, necesitaríamos de un Router, ya que VLANs diferentes son a todos los efectos redes diferentes. Hay que decir, que la mayor parte de los Switches que permiten configurar VLANs también permiten configurar puertos troncales o «trunk» los cuales permiten comunicar VLANs distintas con lo que no necesitaríamos un Router. Los puertos de un Switch conectados a la misma VLAN son llamados puertos de acceso, mientras que los puertos que comunican dos o más VLANs son puertos troncales. Por defecto, todos los puertos de un Switch forman parte de una VLAN por defecto llamada VLAN1, con lo cual, todos son puertos de acceso.
Hubbing Out:
Si nuestro Switch no permite la configuración de Port Mirroring podemos optar por usar un Hub. La idea es colocar el equipo o equipos que queremos monitorear junto con nuestro dispositivo sniffer en el mismo segmento de red. La configuración sería tal que así:

En el ejemplo estaríamos monitoreando el Equipo A, si quisiésemos monitorear más equipos tendríamos que desconectarlos de su Switch y conectarlos al Hub. Hay que tener en cuenta que al conectar el Hub el dispositivo a monitorear cambia de modo full-duplex a half-duplex. Hoy en día no es fácil encontrar Hubs ya que ya no se fabrican aunque quizás podáis encontrarlos en tiendas de segunda mano, si vais a comprar uno tened cuidado ya que encontrareis muchos Switches etiquetados como Hubs.
Usando un Network TAP (Terminal Access Point):
Un TAP es un dispositivo hardware que se coloca entre dos puntos para monitorear el tráfico de red que circula entre esos dos puntos. A diferencia del Hub este es un dispositivo especialmente diseñado para análisis de tráfico.
Hay dos tipos de Network TAPs: agregados (aggregated) y no agregados (non-aggregated). La principal diferencia entre ellos es que los no agregados tienen cuatro puertos y requieren interfaces distintos para capturar el tráfico en las dos direcciones, mientras que los agregados tienen sólo tres puertos y pueden capturar el tráfico bidireccionalmente con un solo interfaz. Los TAPS requieren de alimentación, por lo que suelen traer un puerto USB o incluir batería. En la siguiente imagen vemos un TAP agregado con dos puertos para los puntos A y B que queremos capturar y un tercer puerto para monitorear ese tráfico, además este modelo en concreto es compatible con PoE (Power over Ethernet) con lo cual no interrumpe la línea de alimentación Ethernet entre A y B:

La forma de conectarlo sería muy sencilla, el Equipo A a la entrada A, y el Switch A a la entrada B, nuestro sniffer iría conectado al tercer puerto Monitor del TAP:

Los TAPs no agregados son un poco más complejos pero permiten más flexibilidad a la hora de capturar tráfico. Poseen dos puertos para monitorear el tráfico en vez de uno como los TAPs agregados. Un puerto es para capturar tráfico en una dirección, y el otro puerto para la otra dirección. Al tener dos puertos necesitaremos dos NICs en nuestro dispositivo sniffer. El esquema de conexiones sería idéntico al anterior pero nuestro portátil (de color rojo) con un sniffer instalado (Wireshark por ejemplo) tendría que tener dos tarjetas de red.
Los TAPS no agregados suelen ser mejor opción cuando tenemos un alto volumen de tráfico o cuando es necesario capturar el tráfico en una sola dirección. Sin embargo, muchas veces se utilizan los agregados ya que requieren de una sola tarjeta de red en nuestro sniffer y menos cables.
Además de estos tres métodos podríamos capturar tráfico utilizando una técnica llamada Envenenamiento ARP (ARP Spoofing ó ARP Cache Poisoning), pero es más un ataque que una forma profesional de capturar tráfico (se podría utilizar cuando no tienes posibilidad de implementar Port Mirroring, Hubbing Out o disponer de un TAP). Quizás cree un artículo al respecto en el futuro 🙂 .
Capturando tráfico en una red con Routers:
Todas las técnicas que hemos utilizado en una red con Switches son aplicables a una red con Routers. Lo que tenemos que tener en cuenta es donde colocamos nuestro sniffer, ya que como recordáis, un Router delimita el Broadcast Domain, con lo cual, si estamos intentando capturar tráfico en un entorno de varios segmentos de red tendremos que capturar el tráfico en todos los segmentos implicados, es decir, en varios Routers.
Existen Routers que pueden implementar Port Mirroring directamente, aunque no es habitual. Algunos también poseen opciones para capturar tráfico directamente. Pero si no disponemos de un Router de estas características podemos utilizar un Switch conectado directamente al Router y hacer Port Mirroring de ese puerto, o bien mediante un TAP. En el ejemplo siguiente vemos cómo podríamos capturar el tráfico de un Router conectado a la red del SP (Service Provider) mediante un Switch con Port Mirroring:

Una vez vistas las distintas formas de capturar tráfico nos pueden quedar dudas sobre que método es el adecuado dependiendo de la situación, para ello quizás os sirva de ayuda el siguiente diagrama de flujo:

No lo toméis como algo oficial ya que dependiendo del problema y del escenario pues puede variar, esto es simplemente una referencia. Tened en cuenta que utilizar un TAP requiere de desconexión entre los dispositivos mientras que Port Mirroring no.
Dicho esto, llegó el momento de empezar a ver cosas más prácticas, ya que toca hablar de Wireshark, pero eso será en los siguientes artículos! 🙂 .
Un saludo!
Gracias maestro!
Gracias David! 🙂