Un grupo de investigadores de universidades canadienses y estadounidenses ha desarrollado una técnica de ataque llamada Port Shadow, que permite, a través de la manipulación de las tablas de traducción de direcciones en el lado del servidor VPN, lograr que la respuesta a una solicitud se envíe a otro usuario conectado al mismo servidor VPN. Este método puede usarse para interceptar o redirigir tráfico cifrado, realizar escaneos de puertos y desanonimizar usuarios de VPN. Como ejemplo, se muestra cómo se puede utilizar este método para redirigir las consultas DNS de un usuario, que opera a través de un servidor VPN, a un host del atacante, al que el atacante puede conectarse como cliente.
Para llevar a cabo el ataque, el atacante debe tener la capacidad de conectarse a un VPN-servidor con la víctima, lo que es posible, por ejemplo, al utilizar operadores VPN comunes y servicios VPN públicos que ofrecen acceso a todo el que lo desee. La vulnerabilidad afecta a los servidores VPN que utilizan la traducción de direcciones (NAT) para permitir a los clientes acceder a recursos externos, siempre que se utilice la misma dirección IP para recibir tráfico de los clientes y enviar solicitudes a sitios externos. servidor debe utilizarse la misma dirección IP.
El ataque se basa en que, mediante el envío de solicitudes especialmente formateadas, el atacante, conectado al mismo servidor VPN y utilizando un NAT compartido, puede lograr la distorsión del contenido de las tablas de traducción de direcciones, lo que provocará que los paquetes dirigidos a un usuario sean enviados a otro usuario. En las tablas de traducción de direcciones, la información sobre qué dirección IP interna se ha asignado a la solicitud enviada se determina en función del número del puerto de red de origen utilizado al enviar la solicitud. A través del envío de ciertos paquetes SYN y ACK y manipulaciones simultáneas del lado de la conexión del cliente al servidor VPN y del lado del servidor externo controlado por el atacante, se puede lograr una colisión en la tabla NAT y agregar un registro con el mismo número de puerto de origen, pero asociado con su dirección local, lo que provocará que las respuestas a la solicitud de otro sean devueltas a la dirección del atacante.

Durante la investigación se probaron los sistemas de traducción de direcciones de Linux y FreeBSD en combinación con las VPN OpenVPN, OpenConnect y WireGuard. La plataforma FreeBSD no fue vulnerable a los métodos de ataque de redireccionamiento de solicitudes realizados por otros usuarios conectados a la misma VPN. La sustitución en las tablas NAT solo se pudo realizar durante el ataque ATIP (Adjacency-to-In-Path), donde el atacante puede interceptar el tráfico entre el usuario y el servidor VPN (por ejemplo, cuando el usuario se conecta a una red Wi-Fi controlada por el atacante) o entre el servidor VPN y el sitio objetivo. Asimismo, el NAT de FreeBSD también fue afectado por un ataque que permite determinar la conexión del usuario a un sitio específico (Connection Inference).
En cuanto a Linux, el subsistema Netfilter resultó vulnerable a ataques de sustitución de registros en la tabla de traducción de direcciones, permitiendo redirigir paquetes entrantes a otro usuario, enviar paquetes fuera del canal VPN cifrado (Decapsulation) o determinar los puertos de red abiertos en el lado del cliente.

Como medidas para bloquear el ataque, se recomienda a los proveedores de VPN utilizar métodos adecuados de aleatorización de los números de puertos de origen en NAT, restringir el número de conexiones simultáneas permitidas al servidor VPN desde un solo usuario, así como bloquear la posibilidad de que el cliente elija el puerto de red que acepta solicitudes en el lado del servidor VPN.
Según un representante de Proton AG, el ataque no afecta a los servicios de VPN que utilizan IPs separadas para solicitudes entrantes y salientes. Además, hay dudas sobre la aplicabilidad del ataque a servicios de VPN reales, ya que el ataque exitoso ha sido demostrado solo en pruebas de laboratorio y para su ejecución se requieren ciertas condiciones del lado del servidor VPN y del cliente atacado. Además, el ataque solo puede ser útil para manipular solicitudes no cifradas, como las dirigidas a DNS, mientras que el uso de TLS y HTTPS a nivel de aplicaciones hace que el redireccionamiento de tráfico sea inútil.
Las manipulaciones con las tablas de traducción de direcciones de ataque son aplicables no solo a las VPN, sino también a las redes inalámbricas, donde se utiliza NAT para conectar a los usuarios a recursos externos en el punto de acceso. El mes pasado se publicaron los resultados de una investigación sobre la posibilidad de llevar a cabo un ataque similar para interceptar conexiones TCP de otros usuarios de la red inalámbrica. El método de ataque fue aplicable a 24 de los 33 puntos de acceso inalámbricos probados.

El ataque propuesto para Wi-Fi resultó ser significativamente más sencillo que el método mencionado para VPN, ya que debido a las optimizaciones aplicadas, muchos puntos de acceso no verifican la validez de los números de secuencia en los paquetes TCP. Como resultado, para llevar a cabo el ataque, bastó con enviar un paquete RST ficticio para limpiar la entrada en la tabla de traducción de direcciones, y luego lograr que la respuesta se dirigiera al host atacante para determinar los números de secuencia (SEQ) y de confirmación (ACK) necesarios para interceptar la conexión TCP.


Fuente: opennet.ru
