PhanTap (Phantom Tap)

PhanTap es un tap de red «invisible» orientado a red teams. Con acceso físico limitado a un edificio objetivo, este tap puede instalarse en línea entre un dispositivo de red y la red corporativa. PhanTap es silencioso en la red y no afecta al tráfico de la víctima, incluso en redes con NAC (Network Access Control 802.1X - 2004).
PhanTap analizará el tráfico de la red y enmascarará su tráfico como si fuera el dispositivo de la víctima.
Puede montar un túnel de vuelta a un servidor remoto, dando al usuario un punto de apoyo en la red para un análisis posterior y pivoting.
PhanTap es un paquete de OpenWrt y debería ser compatible con cualquier dispositivo. El dispositivo físico utilizado en nuestras pruebas es actualmente un router pequeño y económico, el GL.iNet GL-AR150.
Puedes encontrar un artículo de blog detallado que describe PhanTap aquí
Características:
- Puente de red transparente.
- Silencioso: sin arp, multicast ni broadcast.
- Paso directo 802.1x.
- Configuración automática:
- captura el tráfico que entra en la red (el origen no es RFC1918 y el destino es RFC1918), la IP y MAC de destino son las de nuestra víctima, la MAC de origen es la de nuestra puerta de enlace,
- enmascara (SNAT) el tráfico del puente con la MAC y la dirección IP de la víctima,
- establece la puerta de enlace predeterminada del router con la MAC de la puerta de enlace detectada justo antes.
- Inspecciona el tráfico ARP, multicast y broadcast, añade una ruta a la dirección IP de la máquina y agrega su dirección MAC a la lista de vecinos, lo que permite comunicarse con todas las máquinas de la red local.
- Aprende el servidor DNS del tráfico y modifica el del router para que sea el mismo.
- Inspecciona los paquetes DHCP para la reconfiguración dinámica.
- Puede ejecutar comandos (p. ej.: /etc/init.d/openvpn restart) cuando se configura una nueva IP o DNS.
- Te permite elegir cualquier software VPN, por ejemplo OpenVPN en el puerto TCP 443 para que atraviese la mayoría de cortafuegos.
- Puedes comunicarte con la máquina de la víctima (usando la IP de la puerta de enlace).
Configuración
PhanTap se ha probado con el GL.iNet GL-AR150. Este dispositivo tiene dos interfaces de red separadas en OpenWrt (eth0, eth1).
Si tu dispositivo usa un switch interno (basado en swconfig) con interfaces como eth0.1, eth0.2, parte del tráfico especial podría bloquearse, p. ej., 802.1Q (VLAN etiquetada), pero PhanTap debería funcionar.
- Instala una compilación snapshot, para el GL.iNet GL-AR150
- Actualiza la lista de paquetes de OpenWrt
- Instala el paquete PhanTap:
- Configura el WiFi y comienza a administrar el router a través de él.
- Reinicia el dispositivo o ejecuta
/etc/init.d/phantap setup.
- Obtén los nombres de las interfaces de ese dispositivo:
# uci show network | grep -E 'device=|ports='
network.loopback.device='lo'
network.@device[0].ports='eth0'
network.lan.device='br-lan'
network.wan.device='eth1'
network.wan6.device='eth1'
network.phantap.device='br-phantap'
En este ejemplo usamos un GL-AR150, que solo tiene 2 interfaces.
- Elimina las interfaces de cualquier interfaz de red que pudiera estarlas usando, si es el caso, mediante los siguientes comandos en la CLI
(asumiendo que usamos un GL-AR150):
uci delete network.@device[0].ports
uci delete network.wan.device
uci delete network.wan6.device
- Añade las interfaces al puente phantap y reinicia el servicio de red mediante los siguientes comandos en la CLI
(asumiendo que usamos un GL-AR150):
uci add_list network.br_phantap.ports='eth0'
uci add_list network.br_phantap.ports='eth1'
uci commit network
/etc/init.d/network reload
-
PhanTap ya está configurado; en cuanto lo conectes entre una víctima y su switch, configurará automáticamente el router y le dará acceso a Internet.
-
Puedes añadir tu VPN favorita para tener una conexión remota de vuelta. Hemos probado PhanTap con OpenVpn, puerto TCP 443, para evitar algunos métodos de detección.
-
También puedes añadir un comando que se ejecute cuando se configure una nueva IP o DNS, en /etc/config/phantap, p. ej. /etc/init.d/openvpn restart (reinicia el servicio OpenVPN).
-
También puedes plantearte deshabilitar el WiFi por defecto y usar los botones de hardware para activarlo (https://openwrt.org/docs/guide-user/hardware/hardware.button).
Limitaciones o cómo puede ser detectado :
- El GL.iNet GL-AR150 y la mayoría de dispositivos económicos solo admiten 100 Mbps, mientras que el tráfico de red moderno suele ser de 1 Gbps.
- El puerto de red permanecerá activo, en el lado del switch, cuando el dispositivo de la víctima se desconecte o se apague.
- Parte del tráfico es bloqueado por el puente de Linux (tramas STP/Pause/LACP).
- El modo failsafe de OpenWrt envía paquetes IPv4 e IPv6 tal y como se describe en la documentación: https://openwrt.org/docs/guide-user/troubleshooting/failsafe_and_factory_reset. Esto ocurre durante el arranque temprano y puede hacer que el dispositivo sea detectado. No hay una solución sencilla para deshabilitarlo en tiempo de ejecución, ya que esta configuración está en U-Boot. La partición U-Boot está montada como solo lectura y su configuración solo puede accederse y modificarse desde el shell de U-Boot (por ejemplo, vía UART en el GL-AR150). La solución más sencilla es compilar OpenWrt con la opción TARGET_PREINIT_DISABLE_FAILSAFE habilitada.
Hoja de ruta :
- Añadir lógica para reiniciar la detección cuando los enlaces se levanten o caigan.
- Añadir soporte IPv6.
- Probar las limitaciones de los dispositivos que tienen switches (swconfig) en lugar de interfaces separadas.