
Ein köstlicher, aber bösartiger SSL-VPN-Server 🌮
NachoVPN ist ein Proof of Concept, das die Ausnutzung von SSL-VPN-Clients mithilfe eines betrügerischen VPN-Servers demonstriert.
Es verwendet eine plugin-basierte Architektur, damit die Unterstützung für weitere SSL-VPN-Produkte von der Community beigetragen werden kann. Es unterstützt derzeit verschiedene beliebte Unternehmens-VPN-Produkte wie Cisco AnyConnect, SonicWall NetExtender, Palo Alto GlobalProtect und Ivanti Connect Secure.
Weitere Einzelheiten finden Sie in unserem Blogbeitrag und im Vortrag auf dem HackFest Hollywood 2024 [Folien|Video].
NachoVPN wird auf Ubuntu 22.04 entwickelt und getestet.
Installieren Sie python3-nftables und nftables
Optional können Sie setcap verwenden, um die sudo-Anforderung zu vermeiden:
sudo setcap 'cap_net_raw,cap_net_bind_service,cap_net_admin=eip' /usr/bin/python3.10
IP-Weiterleitung aktivieren:
sudo sysctl -w net.ipv4.ip_forward=1
NachoVPN kann mit pip von GitHub installiert werden. Beachten Sie, dass hierfür git installiert sein muss.
Erstellen Sie zunächst eine virtuelle Umgebung.
Unter Linux stellen Sie sicher, dass die virtuelle Umgebung Zugriff auf die systemweiten site-packages hat, damit nftables funktioniert:
python3 -m venv env --system-site-packages
source env/bin/activate
Unter Windows ist nftables (und damit die Paketweiterleitung) deaktiviert, verwenden Sie daher:
python -m venv env
.\env\Scripts\activate
Installieren Sie dann NachoVPN:
pip install git+https://github.com/AmberWolfCyber/NachoVPN.git
Wenn Sie Docker bevorzugen, können Sie den Container aus der GitHub Container Registry ziehen:
docker pull ghcr.io/AmberWolfCyber/nachovpn:release
Klonen Sie zunächst dieses Repository und installieren Sie setuptools und wheel über pip. Anschließend können Sie das Skript setup.py ausführen:
git clone https://github.com/AmberWolfCyber/NachoVPN
pip install -U setuptools wheel
python setup.py bdist_wheel
Dadurch wird eine Wheel-Datei im Verzeichnis dist erzeugt, die mit pip installiert werden kann:
pip install dist/nachovpn-1.0.0-py3-none-any.whl
Alternativ können Sie das Paket für die lokale Entwicklung im bearbeitbaren Modus mit folgendem Befehl installieren:
pip install -e .
Sie können das Container-Image mit dem folgenden Befehl erstellen:
docker build -t nachovpn:latest .
Um den Server als eigenständige Anwendung auszuführen, verwenden Sie:
python -m nachovpn.server
Alternativ können Sie den Server mit Docker ausführen:
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
Dadurch wird mit certbot ein Zertifikat für die SERVER_FQDN erstellt und im Verzeichnis certs gespeichert, das wir in den Container eingebunden haben.
Alternativ können Sie zu Testzwecken die Zertifikatserstellung überspringen, indem Sie die Umgebungsvariable SKIP_CERTBOT setzen.
Stattdessen wird ein selbstsigniertes Zertifikat erzeugt.
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
Zur Vereinfachung wird außerdem eine Beispiel-docker-compose-Datei bereitgestellt.
Sie können nachovpn mit den Befehlszeilenargumenten -d oder --debug ausführen, um die Ausführlichkeit der Protokollierung zu erhöhen, was bei der Fehlersuche hilfreich sein kann.
Falls die Protokollierung zu ausführlich ist, können Sie stattdessen das Befehlszeilenargument q oder --quiet verwenden.
NachoVPN unterstützt die folgenden Plugins und Fähigkeiten:
| Plugin | Produkt | CVE | Windows RCE | macOS RCE | Privilegiert | URI-Handler | Paketmitschnitt | Demo |
|---|---|---|---|---|---|---|---|---|
| Cisco | Cisco AnyConnect | N/A | ✅ | ✅ | ❌ | ❌ | ✅ | Windows / macOS |
| SonicWall | SonicWall NetExtender | CVE-2024-29014 | ✅ | ❌ | ✅ | ✅ | ❌ | Windows |
| PaloAlto | Palo Alto GlobalProtect | CVE-2024-5921 (teilweise behoben) | ✅ | ✅ | ✅ | ❌ | ✅ | Windows / macOS / iOS |
| PulseSecure | Ivanti Connect Secure | CVE-2020-8241 (umgangen) | ✅ | ✅ | ✅ | ✅ (nur Windows – standardmäßig deaktiviert in 22.8R1) | ✅ | Windows |
| Netskope | Netskope | CVE-2025-0309 | ✅ | ❌ | ✅ | ❌ | ❌ | Windows |
| Delinea | Protocol Handler | CVE-2026-???? | ✅ | ✅ | ❌ | ✅ | ❌ | Windows |
/pulse auf dem NachoVPN-Server ausgelöst werden./sonicwall auf dem NachoVPN-Server ausgelöst werden. Voraussetzung ist, dass der SonicWall Connect Agent auf dem Client-Rechner installiert ist./delinea auf dem NachoVPN-Server ausgelöst werden.