
Opensvp es una herramienta de seguridad que implementa "ataques" para poder probar la resistencia del firewall a ataques a nivel de protocolo.
Opensvp es una herramienta de seguridad que implementa "ataques" para poder probar la resistencia de un firewall a ataques a nivel de protocolo. Implementa ataques clásicos así como algunos tipos nuevos de ataques contra pasarelas de capa de aplicación (llamadas helpers en el mundo Netfilter).
Por ejemplo, opensvp es capaz bajo ciertas condiciones (ver explicación a continuación para más detalles) de abrir un agujero pasante (pin hole) en un firewall que protege un servidor ftp: incluso si la política de filtrado garantiza que solo el puerto 21 está abierto al servidor, puedes abrir 'cualquier' puerto en el servidor usando opensvp.
Supongamos que 192.168.2.3 es un servidor que ejecuta ftp, colocado detrás de un firewall. Si el usuario, como root, ejecuta::
opensvp --attacker -t 192.168.2.3 --helper ftp --port 23 -v -i eth0
Entonces tendrá acceso temporal al puerto 23 del servidor, independientemente de las reglas del firewall.
El documento "Secure use of iptables and connection tracking helpers" https://home.regit.org/netfilter-en/secure-use-of-helpers/ describe el método de protección contra este tipo de ataque.
Consulte el siguiente capítulo para una descripción precisa del ataque implementado.
Estando en una red directamente conectada al firewall a través de la interfaz eth0, el atacante puede ejecutar el siguiente comando::
opensvp --attacker -t 192.168.2.3 --helper ftp --port 23 -v -i eth0
192.168.2.3 es la dirección del servidor FTP y 23 es el puerto que queremos abrir en el servidor.
Entonces es posible conectarse a 192.168.2.3 en el puerto 23 después de un ataque exitoso.
Es posible que un cliente envíe un mensaje de comando falsificado que sea interpretado por los firewalls como una posible apertura de conexión dinámica.
Es posible usar un servidor estándar para enviar el ataque, pero con un servidor personalizado conocerás la transformación realizada por la posible pasarela NAT.
Una sesión típica es la siguiente. En el servidor que tiene la dirección IP 1.2.3.4, puedes ejecutar::
$ opensvp --server --helper irc -v
En el cliente, puedes ejecutar::
$ opensvp --client -t 1.2.3.4 --helper irc --port 23 -v 2.3.4.5:23 debería estar abierto desde el exterior
En el servidor, se muestra el siguiente mensaje::
Deberías poder conectarte a 2.3.4.5:23
Aquí 2.3.4.5 es la dirección pública del cliente.
En el atacante, necesitas iniciar opensvp e indicar cuál es la cola Netfilter utilizada y cuál es la interfaz de salida::
Luego necesitas usar iptables para llevar el tráfico que deseas ocultar al mecanismo de reconocimiento de protocolo al espacio de usuario::
iptables -I INPUT -p tcp --sport 443 -j NFQUEUE iptables -I OUTPUT -p tcp --dport 443 -j NFQUEUE
Cuando hayas terminado, presiona CTRL+C para interrumpir el proceso de ataque.
Algunos protocolos de red utilizan múltiples conexiones para el intercambio entre un cliente y un servidor. El ejemplo más conocido es ftp, donde los comandos pasan por una conexión en el puerto 21 y el intercambio de datos se realiza con dos modos diferentes (conexión desde el puerto 20 o conexión dinámica).
Algunas implementaciones de firewall implementan una pasarela de capa de aplicación (ALG) para poder detectar esta conexión paralela y autorizarla dinámicamente. Otras soluciones son utilizar un relé de aplicación (proxy transparente) o abrir todos los flujos posibles (leer casi todo).
La ALG analiza el tráfico y detecta y analiza los comandos enviados entre los pares para declarar los parámetros de las conexiones paralelas. Una vez hecho esto, abren agujeros pasantes temporales en el firewall para dejar pasar el tráfico probable.
La idea de este ataque es falsificar este tipo de mensajes para abrir agujeros pasantes en el firewall, pero agujeros que no deberían haberse abierto.
Condiciones:
La cinemática es la siguiente:
Un sniffer en la red del atacante captura un paquete del flujo del protocolo
El paquete falsificado se envía en la interfaz conectada al firewall
El firewall transmite el paquete de vuelta al cliente y ahora espera un paquete con características basadas en la entrada del atacante
Este ataque es una aplicación directa del principio descrito. Una vez que se recibe un paquete de datos, el atacante envía un comando DCC falsificado.
En este ataque, la conexión del cliente es abierta por el atacante. Se conecta al servidor ftp detrás de un firewall e inicia una conexión real. Una vez que la sesión está establecida, lanza el ataque enviando un comando 227 falsificado.
Si se usa IPv6, se realiza el mismo ataque con un comando 229 falsificado.
Posible objetivo
La principal restricción sobre estos ataques es que el atacante debe estar en una red
directamente conectada al firewall.
Por lo tanto, las principales posibilidades son:
* Ataque desde la LAN de un usuario
* Ataque en un centro de alojamiento (hosting farm)
Ambos casos pueden llevar a una grave exposición de información al dar al atacante acceso a
servicios no protegidos.
Linux
~~~~~
Se sabe que este ataque funciona en firewalls Netfilter IPv4 si rp_filter está establecido en
0 (lo cual, con suerte, no es el valor por defecto).
Actualmente no hay implementación de verificación de ruta inversa (reverse path filtering) para IPv6, por lo tanto el firewall
no está protegido y la protección debe configurarse en las reglas del firewall (ver
siguiente capítulo).
Se sabe que algunos programas de firewall son vulnerables:
* fwbuilder: se debe configurar una política específica
* shorewall: versiones recientes solucionan el problema
* edenwall: vulnerable
El ataque funciona tanto para firewalls de pasarela como locales. En un firewall local, el filtrado
FORWARD debe estar activado y se debe configurar una regla ESTABLISHED ACCEPT en
esta cadena. Este podría ser el caso de sistemas que ejecutan máquinas virtuales.
Defensa contra el ataque
=========================
Linux
-----
Consulte el siguiente documento dedicado al tema: https://home.regit.org/netfilter-en/secure-use-of-helpers/
Otros SO y dispositivos
-----------------------
El requisito básico es activar el anti-suplantación estricto y controlar la carga de ALG si es posible.