
Un delizioso, ma dannoso server SSL-VPN 🌮
NachoVPN è una Proof of Concept che dimostra lo sfruttamento dei client SSL-VPN, utilizzando un server VPN rogue.
Utilizza un'architettura basata su plugin, così che il supporto per prodotti SSL-VPN aggiuntivi possa essere contribuito dalla community. Attualmente supporta vari popolari prodotti VPN aziendali, come Cisco AnyConnect, SonicWall NetExtender, Palo Alto GlobalProtect e Ivanti Connect Secure.
Per ulteriori dettagli, consulta il nostro post sul blog e la presentazione HackFest Hollywood 2024 [slides|video].
NachoVPN è sviluppato e testato su Ubuntu 22.04.
Installa python3-nftables e nftables
Opzionalmente usa setcap per evitare il requisito di sudo:
sudo setcap 'cap_net_raw,cap_net_bind_service,cap_net_admin=eip' /usr/bin/python3.10
Abilita l'IP forwarding:
sudo sysctl -w net.ipv4.ip_forward=1
NachoVPN può essere installato da GitHub usando pip. Nota che questo richiede che git sia installato.
Per prima cosa, crea un ambiente virtuale.
Su Linux, assicurati che l'ambiente virtuale abbia accesso ai site-packages di sistema, così che nftables funzioni:
python3 -m venv env --system-site-packages
source env/bin/activate
Su Windows, nftables (e quindi il packet forwarding) è disabilitato, quindi usa:
python -m venv env
.\env\Scripts\activate
Quindi, installa NachoVPN:
pip install git+https://github.com/AmberWolfCyber/NachoVPN.git
Se preferisci usare Docker, puoi scaricare il container dal GitHub Container Registry:
docker pull ghcr.io/AmberWolfCyber/nachovpn:release
Per prima cosa, clona questo repository e installa setuptools e wheel tramite pip. Puoi quindi eseguire lo script setup.py:
git clone https://github.com/AmberWolfCyber/NachoVPN
pip install -U setuptools wheel
python setup.py bdist_wheel
Questo genererà un file wheel nella directory dist, che può essere installato con pip:
pip install dist/nachovpn-1.0.0-py3-none-any.whl
In alternativa, per lo sviluppo locale puoi installare il pacchetto in modalità modificabile usando:
pip install -e .
Puoi creare l'immagine container con il seguente comando:
docker build -t nachovpn:latest .
Per eseguire il server in modalità standalone, usa:
python -m nachovpn.server
In alternativa, puoi eseguire il server usando 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
Questo genererà un certificato per SERVER_FQDN usando certbot e lo salverà nella directory certs, che abbiamo montato nel container.
In alternativa, per scopi di test, puoi saltare la generazione del certificato impostando la variabile d'ambiente SKIP_CERTBOT.
Questo genererà invece un certificato auto-firmato.
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
È fornito anche un esempio di file docker-compose per comodità.
Puoi eseguire nachovpn con gli argomenti da riga di comando -d o --debug per aumentare la verbosità del logging, il che può aiutare nel debug.
In alternativa, se il logging è troppo prolisso, puoi usare l'argomento da riga di comando q o --quiet.
NachoVPN supporta i seguenti plugin e funzionalità:
| Plugin | Prodotto | CVE | Windows RCE | macOS RCE | Privilegi | Gestore URI | Cattura pacchetti | Demo | | -------- | ----------- | -------- | -------- | -------- | -------- | -------- | ---- | | Cisco | Cisco AnyConnect | N/A | ✅ | ✅ | ❌ | ❌ | ✅ | Windows / macOS | | SonicWall | SonicWall NetExtender | CVE-2024-29014 | ✅ | ❌ | ✅ | ✅ | ❌ | Windows | | PaloAlto | Palo Alto GlobalProtect | CVE-2024-5921 (correzione parziale) | ✅ | ✅ | ✅ | ❌ | ✅ | Windows / macOS / iOS | | PulseSecure | Ivanti Connect Secure | CVE-2020-8241 (bypassato) | ✅ | ✅ | ✅ | ✅ (solo Windows - disabilitato per impostazione predefinita in 22.8R1) | ✅ | Windows | | Netskope | Netskope | CVE-2025-0309 | ✅ | ❌ | ✅ | ❌ | ❌ | Windows | | Delinea | Protocol Handler | CVE-2026-???? | ✅ | ✅ | ❌ | ✅ | ❌ | Windows |
/pulse sul server NachoVPN./sonicwall sul server NachoVPN. Questo richiede che SonicWall Connect Agent sia installato sul client./delinea sul server NachoVPN.