PhanTap (Phantom Tap)

PhanTap est une sonde réseau « invisible » destinée aux red teams. Avec un accès physique limité à un bâtiment cible, cette sonde peut être installée en série entre un équipement réseau et le réseau de l'entreprise. PhanTap est silencieuse sur le réseau et n'affecte pas le trafic de la victime, même sur les réseaux dotés d'un NAC (Network Access Control 802.1X - 2004).
PhanTap analyse le trafic sur le réseau et masque son trafic comme s'il s'agissait de l'appareil de la victime.
Elle peut établir un tunnel vers un serveur distant, donnant à l'utilisateur un point d'appui dans le réseau pour une analyse plus poussée et du mouvement latéral.
PhanTap est un paquet OpenWrt et devrait être compatible avec n'importe quel appareil. L'appareil physique utilisé pour nos tests est actuellement un petit routeur bon marché, le GL.iNet GL-AR150.
Vous trouverez un article de blog détaillé décrivant PhanTap ici
Features:
- Pont réseau transparent.
- Silencieux : aucun arp, multicast, broadcast.
- Passthrough 802.1x.
- Configuration automatique :
- capture du trafic entrant dans le réseau (la source n'est pas RFC1918 et la destination est RFC1918), l'IP et la MAC de destination sont celles de notre victime, la MAC source est celle de notre passerelle,
- SNAT du trafic du pont vers l'adresse MAC et IP de la victime,
- définir la passerelle par défaut du routeur sur la MAC de la passerelle détectée juste avant.
- Inspecte le trafic ARP, multicast et broadcast et ajoute une route vers l'adresse IP de la machine et ajoute l'adresse MAC de la machine à la table des voisins, offrant ainsi la possibilité de communiquer avec toutes les machines du réseau local.
- Apprend le serveur DNS à partir du trafic et modifie celui du routeur pour qu'il soit identique.
- Inspecte les paquets DHCP pour une reconfiguration dynamique.
- Peut exécuter des commandes (ex. : /etc/init.d/openvpn restart) lorsqu'une nouvelle IP ou un nouveau DNS est configuré.
- Vous permet de choisir n'importe quel logiciel VPN, par exemple OpenVPN sur le port TCP 443, afin de passer à travers la plupart des pare-feux.
- Vous pouvez communiquer avec la machine de la victime (en utilisant l'IP de la passerelle).
Installation
PhanTap a été testé avec le GL.iNet GL-AR150. Cet appareil possède deux interfaces réseau distinctes dans OpenWrt (eth0, eth1).
Si votre appareil utilise un commutateur interne (basé sur swconfig) avec des interfaces telles que eth0.1, eth0.2, certains trafics spéciaux peuvent être bloqués, par exemple 802.1Q (VLAN taggé), mais PhanTap devrait fonctionner.
- Installez une build snapshot, pour le GL.iNet GL-AR150
- Mettez à jour la liste des paquets OpenWrt
- Installez le paquet PhanTap :
- Configurez le Wifi et commencez à administrer le routeur via celui-ci.
- Redémarrez l'appareil ou exécutez
/etc/init.d/phantap setup.
- Obtenez les noms des interfaces de cet appareil :
# 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'
Dans cet exemple, nous utilisons un GL-AR150, qui ne possède que 2 interfaces.
- Retirez les interfaces de toute interface réseau qui pourrait les utiliser, le cas échéant, via les commandes suivantes en cli
(en supposant que nous utilisons un GL-AR150) :
uci delete network.@device[0].ports
uci delete network.wan.device
uci delete network.wan6.device
- Ajoutez les interfaces au pont phantap et redémarrez le service réseau via les commandes suivantes en cli
(en supposant que nous utilisons 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 est maintenant configuré ; dès que vous le branchez entre une victime et son commutateur, il configure automatiquement le routeur et lui donne accès à Internet.
-
Vous pouvez ajouter votre VPN préféré pour avoir une connexion distante en retour. Nous avons testé PhanTap avec OpenVpn, sur le port TCP 443, pour éviter certaines méthodes de détection.
-
Vous pouvez également ajouter une commande à exécuter lorsqu'une nouvelle IP ou un nouveau DNS est configuré, dans /etc/config/phantap, par exemple /etc/init.d/openvpn restart (redémarrage du service OpenVpn).
-
Vous pouvez aussi envisager de désactiver le wifi par défaut et d'utiliser des boutons matériels pour le démarrer (https://openwrt.org/docs/guide-user/hardware/hardware.button).
- Le GL.iNet GL-AR150 et la plupart des appareils bon marché ne supportent que 100Mbps, alors que le trafic réseau moderne est en 1Gbps.
- Le port réseau restera actif, côté commutateur, lorsque l'appareil de la victime est déconnecté/éteint.
- Certains trafics sont bloqués par le pont Linux (STP/trames Pause/LACP).
- Le mode failsafe d'OpenWrt envoie des paquets IPv4 et IPv6 comme décrit dans la documentation : https://openwrt.org/docs/guide-user/troubleshooting/failsafe_and_factory_reset. Cela se produit au début du démarrage et peut faire détecter l'appareil. Il n'existe pas de solution simple pour le désactiver à l'exécution, car cette configuration se trouve dans U-Boot. La partition U-Boot est montée en lecture seule et sa configuration ne peut être consultée et modifiée qu'à partir du shell U-Boot (via UART sur le GL-AR150 par exemple). La solution la plus simple est de compiler OpenWrt avec l'option TARGET_PREINIT_DISABLE_FAILSAFE activée.
Roadmap :
- Ajouter une logique pour redémarrer la détection lorsque les liens passent à l'état up/down.
- Ajouter le support IPv6.
- Tester les limites des appareils qui ont des commutateurs (swconfig) au lieu d'interfaces séparées.