El Switch utiliza la capa de Enlace para realizar la conmutación de tramas de red. En un escenario típico, Bob envía una trama de red especificando su dirección MAC como remitente (sender) y la dirección de Alice como destino, y envía la trama a través de su conexión física al Switch. Cuando el Switch recibe la trama, asocia la dirección de Bob (sender) al puerto por donde “entró la trama” al Switch; esta asociación es almacenada en una tabla conocida como “Tabla CAM”.
Pueden existir múltiples direcciones MAC asociadas a un mismo puerto del Switch, pero cada dirección MAC estará asociada a uno y solo un puerto del Switch. Una vez asociada la dirección de Bob, el Switch busca en la tabla CAM la dirección MAC de destino y procede a reenviar la trama recibida a través del puerto asociado (y solo por ese puerto).
El algoritmo no contempla validación, y el mecanismo de actualización de la tabla CAM se encuentra supeditado a la recepción de tramas, de modo tal que la dirección MAC de Bob seguirá asociada al puerto hasta que “se cumpla un tiempo de vencimiento”, o bien el Switch reciba una trama con la dirección MAC de Bob por otro puerto. Esto último por ejemplo ocurriría si Bob desconecta su cable de red del puerto “1” y conecta el mismo al puerto “2”; en el instante siguiente, si Bob envía una trama, el Switch detectará la MAC de Bob ingresando por el puerto “2” y actualizará la entrada en la tabla CAM.
En adelante, cualquier trama que Alice envíe a Bob, será encaminada al puerto que registre en la tabla CAM la dirección MAC de Bob.
Las direcciones MAC de dispositivos deben ser únicas en redes Ethernet, ya que si dos sistemas tienen la misma dirección MAC y conectan en distintos puertos del Switch, provocarán la actualización de la tabla CAM por cada trama enviada, provocando una condición de carrera por la asociación del puerto en la tabla CAM. Luego, por cada trama recibida, el Switch entregará la trama en el puerto que se encuentre asociado en el momento de procesar la misma, sin posibilidad de determinar para cuál de los dos sistemas con misma dirección MAC corresponde el tráfico de red.
La aplicación de la técnica denominada “Port Stealing” o “Robo de Puerto” en ataques informáticos, consiste básicamente en inducir una actualización de la tabla CAM de un Switch, con información de direccionamiento manipulada, de modo tal que el conmutador asocie una dirección MAC específica (sistema víctima) con el puerto conectado al dispositivo que aplica dicha técnica.
Un “Atacante” podría entonces forzar al Switch a asociar la dirección MAC de Bob al puerto donde se encuentra conectado su equipo, recibiendo así las tramas de red destinadas a la dirección MAC de Bob.
Opcionalmente el Atacante optará por reenviar las tramas o no, acción que derivará en un ataque de tipo Hombre en el Medio (MitM) o de Denegación de Servicio (DoS) respectivamente. Existe una gran variedad de aplicaciones que permiten aplicar esta técnica. A continuación se indicará un procedimiento simple utilizando GNU/Linux.
Alice AA:BB:CC:22:33:44 (192.168.0.2/24)
Atacante AA:BB:CC:33:44:55 (192.168.0.3/24)
Para el sistema atacante se utilizará GNU/Linux Ubuntu y el comando arping (versión por Thomas Habets).
Para aplicar la técnica Port Stealing utilizando arping, ejecutar como root:
# arping -s MAC_VICTIMA IP_DESTINO -S IP_ORIGEN -i INTERFAZ_LAN
IP_DESTINO: al tratarse de un mensaje ARP request, se debe indicar una dirección IP de destino.
IP_ORIGEN: dirección IP origen o sender del mensaje ARP.
INTERFAZ_LAN: nombre de la interfaz de red a utilizar.
Desde el sistema Atacante generar tramas cuya MAC origen coincida con la MAC de la víctima, Bob:
El comando arping toma el argumento -s para indicar la dirección MAC de origen o sender, por ello se especifica la dirección MAC de la víctima Bob.
El argumento -S determina la dirección IP origen, en este caso 2.2.2.2 (es opcional y arbitrario).
De no ser especificado, se tomará la dirección IP configurada en el adaptador de red.
La dirección IP 1.1.1.1 es la dirección de destino y, dado que el objetivo es solo “confundir al Switch”, el valor seleccionado es totalmente arbitrario pero requerido.
Este comando genera tráfico ARP con MAC origen AA:BB:CC:11:22:33:
Una vez asociado el puerto del Atacante con la dirección MAC de Bob, todas las tramas dirigidas a Bob serán encaminadas al puerto del Atacante:
A partir de este punto, el Atacante entra en condición de carrera con Bob. Cualquier trama que Bob envíe forzará la actualización de la tabla CAM. Un atacante podría especificar la frecuencia en la que envía mensajes ARP el comando arping mediante el parámetro -w:
# arping -s AA:BB:CC:11:22:33 1.1.1.1 -S 2.2.2.2 -w 1
El valor “1” para el parámetro “-w” indica que arping espera 1 microsegundo antes de enviar el siguiente mensaje. De este modo el atacante actuará con ventaja para obtener el puerto de la víctima.
Respecto a las direcciones IP de origen y destino, no existe observación particular, dado que no interesa que se resuelva la consulta ARP, sino que, a términos de la aplicación del ataque de robo de puerto, bastará con que la trama indique la MAC origen de la víctima.
Un sistema antivirus, IDS, o la inspección de tráfico de red podría revelar actividad sospechosa en la red, por lo que un Atacante podría preferir indicar datos concordantes con la actividad “normal” del tráfico de red:
# arping -s AA:BB:CC:11:22:33 192.168.0.2 -S 192.168.0.1 -t AA:BB:CC:22:33:44
IP_DESTINO: IP de Alice, 192.168.0.2
IP_ORGIEN: IP de Bob, 192.168.0.1
MAC_DESTINO: MAC de Alice, AA:BB:CC:22:33:44
Revisando el tráfico de red, se observarán consultas ARP:
El Atacante especifica la dirección MAC de destino con la dirección MAC de Bob (requerido, dado que Bob es el sistema al que se intenta “robar el puerto”).
El mensaje ARP ha sido dirigido directamente a la dirección IP de Alice, adicionalmente se ha especificado la dirección MAC de Alice para intentar forzar la entrega del mensaje ARP directamente a Alice y evitar un control por Broadcast.
Finalmente, el Atacante indica como dirección IP de origen la IP de Bob, para que el mensaje ARP contenga información válida a pesar de no ser legítimo. Esto último podría evitar la detección de la anomalía, ya que si la dirección MAC e IP de origen no coinciden con una entrada ARP anteriormente registrada, algunos sistemas antivirus podrían suponer actividad de ARP Spoofing.
Hasta este punto, el atacante obtiene las tramas que los demás hosts de la red envían a la víctima. Esta condición desenlaza un escenario de ataque de denegación de servicio ya que las tramas no solo son entregadas al Atacante sino que nunca llegan a la víctima.
Opcionalmente el Atacante podría reenviar las tramas a su víctima induciendo un ataque de hombre en el medio (Man in the middle), para el tráfico enviado hacia Bob.