
Un serveur SSL-VPN délicieux, mais malveillant 🌮
NachoVPN est une preuve de concept qui démontre l'exploitation de clients SSL-VPN, à l'aide d'un serveur VPN malveillant.
Il utilise une architecture basée sur des plugins afin que la prise en charge de produits SSL-VPN supplémentaires puisse être apportée par la communauté. Il prend actuellement en charge plusieurs produits VPN d'entreprise populaires, tels que Cisco AnyConnect, SonicWall NetExtender, Palo Alto GlobalProtect et Ivanti Connect Secure.
Pour plus de détails, consultez notre article de blog, ainsi que la présentation HackFest Hollywood 2024 [diapositives|vidéo].
NachoVPN est développé et testé sur Ubuntu 22.04.
Installez python3-nftables et nftables
Utilisez éventuellement setcap pour éviter d'avoir besoin de sudo :
sudo setcap 'cap_net_raw,cap_net_bind_service,cap_net_admin=eip' /usr/bin/python3.10
Activez le transfert IP :
sudo sysctl -w net.ipv4.ip_forward=1
NachoVPN peut être installé depuis GitHub avec pip. Notez que cela nécessite l'installation de git.
Tout d'abord, créez un environnement virtuel.
Sur Linux, assurez-vous que l'environnement virtuel a accès aux site-packages du système, afin que nftables fonctionne :
python3 -m venv env --system-site-packages
source env/bin/activate
Sur Windows, nftables (et donc le transfert de paquets) est désactivé, utilisez donc :
python -m venv env
.\env\Scripts\activate
Ensuite, installez NachoVPN :
pip install git+https://github.com/AmberWolfCyber/NachoVPN.git
Si vous préférez utiliser Docker, vous pouvez récupérer le conteneur depuis le GitHub Container Registry :
docker pull ghcr.io/AmberWolfCyber/nachovpn:release
Tout d'abord, clonez ce dépôt, puis installez setuptools et wheel avec pip. Vous pouvez ensuite exécuter le script setup.py :
git clone https://github.com/AmberWolfCyber/NachoVPN
pip install -U setuptools wheel
python setup.py bdist_wheel
Cela générera un fichier wheel dans le répertoire dist, qui peut être installé avec pip :
pip install dist/nachovpn-1.0.0-py3-none-any.whl
Alternativement, pour le développement local, vous pouvez installer le paquet en mode éditable en utilisant :
pip install -e .
Vous pouvez construire l'image conteneur avec la commande suivante :
docker build -t nachovpn:latest .
Pour exécuter le serveur de manière autonome, utilisez :
python -m nachovpn.server
Alternativement, vous pouvez exécuter le serveur avec Docker :
docker run -e SERVER_FQDN=connect.nachovpn.local -e EXTERNAL_IP=1.2.3.4 -v ./certs:/app/certs -p 80:80 -p 443:443 --rm -it nachovpn
Cela générera un certificat pour le SERVER_FQDN à l'aide de certbot, et l'enregistrera dans le répertoire certs, que nous avons monté dans le conteneur.
Alternativement, à des fins de test, vous pouvez ignorer la génération du certificat en définissant la variable d'environnement SKIP_CERTBOT.
Cela générera plutôt un certificat auto-signé.
docker run -e SERVER_FQDN=connect.nachovpn.local -e SKIP_CERTBOT=1 -e EXTERNAL_IP=1.2.3.4 -p 443:443 --rm -it nachovpn
Un fichier docker-compose d'exemple est également fourni pour plus de commodité.
Vous pouvez exécuter nachovpn avec les arguments de ligne de commande -d ou --debug afin d'augmenter la verbosité des journaux, ce qui peut faciliter le débogage.
Alternativement, si les journaux sont trop verbeux, vous pouvez utiliser l'argument de ligne de commande q ou --quiet à la place.
NachoVPN prend en charge les plugins et fonctionnalités suivants :
| Plugin | Produit | CVE | RCE Windows | RCE macOS | Privilégié | Gestionnaire d'URI | Capture de paquets | Démo |
|---|---|---|---|---|---|---|---|---|
| Cisco | Cisco AnyConnect | N/A | ✅ | ✅ | ❌ | ❌ | ✅ | Windows / macOS |
| SonicWall | SonicWall NetExtender | CVE-2024-29014 | ✅ | ❌ | ✅ | ✅ | ❌ | Windows |
| PaloAlto | Palo Alto GlobalProtect | CVE-2024-5921 (correctif partiel) | ✅ | ✅ | ✅ | ❌ | ✅ | Windows / macOS / iOS |
| PulseSecure | Ivanti Connect Secure | CVE-2020-8241 (contourné) | ✅ | ✅ | ✅ | ✅ (Windows uniquement - désactivé par défaut dans 22.8R1) | ✅ | Windows |
| Netskope | Netskope | CVE-2025-0309 | ✅ | ❌ | ✅ | ❌ | ❌ | Windows |
| Delinea | Protocol Handler | CVE-2026-???? | ✅ | ✅ | ❌ | ✅ | ❌ | Windows |
/pulse sur le serveur NachoVPN./sonicwall sur le serveur NachoVPN. Cela nécessite que SonicWall Connect Agent soit installé sur la machine cliente./delinea sur le serveur NachoVPN.