Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
NachoVPN — Un delizioso, ma dannoso server SSL-VPN 🌮 | Kitploit
Strumenti/GitHubGitHub/amberwolfcyber/nachovpn
Escalation di PrivilegiAnalisi delle VulnerabilitàExploitSicurezza di RetePenetration TestingRed TeamingSviluppo PayloadAttacco Avversario
GitHubamberwolfcyber/nachovpn

NachoVPN

Un delizioso, ma dannoso server SSL-VPN 🌮

Vedi Repository
2673146 mesi faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

NachoVPN 🌮🔒

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].

Installazione

Prerequisiti

  • Python 3.9 o successivo
  • Docker (opzionale)
  • osslsigncode (solo Linux)
  • msitools (solo Linux)
  • python3-netfilter (solo Linux)
  • git

Configurazione Linux

NachoVPN è sviluppato e testato su Ubuntu 22.04.

  • Installa python3-nftables e nftables

  • Opzionalmente usa setcap per evitare il requisito di sudo:

    root@kitploit:~
    sudo setcap 'cap_net_raw,cap_net_bind_service,cap_net_admin=eip' /usr/bin/python3.10
    
  • Abilita l'IP forwarding:

    root@kitploit:~
    sudo sysctl -w net.ipv4.ip_forward=1
    

Installazione dal sorgente

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:

root@kitploit:~
python3 -m venv env --system-site-packages
source env/bin/activate

Su Windows, nftables (e quindi il packet forwarding) è disabilitato, quindi usa:

root@kitploit:~
python -m venv env
.\env\Scripts\activate

Quindi, installa NachoVPN:

root@kitploit:~
pip install git+https://github.com/AmberWolfCyber/NachoVPN.git

Se preferisci usare Docker, puoi scaricare il container dal GitHub Container Registry:

root@kitploit:~
docker pull ghcr.io/AmberWolfCyber/nachovpn:release

Compilazione per la distribuzione

Creazione di un file wheel

Per prima cosa, clona questo repository e installa setuptools e wheel tramite pip. Puoi quindi eseguire lo script setup.py:

root@kitploit:~
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:

root@kitploit:~
pip install dist/nachovpn-1.0.0-py3-none-any.whl

Compilazione per lo sviluppo locale

In alternativa, per lo sviluppo locale puoi installare il pacchetto in modalità modificabile usando:

root@kitploit:~
pip install -e .

Creazione di un'immagine container

Puoi creare l'immagine container con il seguente comando:

root@kitploit:~
docker build -t nachovpn:latest .

Esecuzione

Per eseguire il server in modalità standalone, usa:

root@kitploit:~
python -m nachovpn.server

In alternativa, puoi eseguire il server usando Docker:

root@kitploit:~
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.

root@kitploit:~
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à.

Debug

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.

Plugin

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 |

Gestori URI

  • Il gestore URI di Ivanti Connect Secure (Pulse Secure) può essere attivato visitando l'URL /pulse sul server NachoVPN.
  • Il gestore URI di SonicWall NetExtender può essere attivato visitando l'URL /sonicwall sul server NachoVPN. Questo richiede che SonicWall Connect Agent sia installato sul client.
  • Il gestore URI di Delinea può essere attivato visitando l'URL /delinea sul server NachoVPN.

Note operative

  • Si consiglia di usare un certificato TLS firmato da una Certificate Authority attendibile. Il container docker automatizza questo processo per te, usando certbot. Se non usi un certificato attendibile, NachoVPN genererà invece un certificato auto-firmato, che nella maggior parte dei casi farà sì che il client mostri un avviso sul certificato, oppure rifiuterà di connettersi a meno che non modifichi le impostazioni del client per accettare certificati auto-firmati. Per il plugin Palo Alto GlobalProtect, questo farà inoltre fallire l'installer MSI.
  • Per simulare un certificato di firma del codice valido per il plugin SonicWall, NachoVPN firmerà il payload NACAgent.exe con un certificato auto-firmato. Per scopi di test, puoi scaricare e installare questo certificato CA da /sonicwall/ca.crt prima di attivare l'exploit. Per casi d'uso in produzione, dovrai ottenere un certificato di firma del codice valido da una CA pubblica, firmare il tuo payload NACAgent.exe e inserirlo nella directory payloads (oppure montarlo come volume in /app/payloads, se usi docker).
  • Per comodità, viene generato un payload NACAgent.exe predefinito per il plugin SonicWall e scritto nella directory payloads. Questo semplicemente avvia un nuovo processo cmd.exe sul desktop dell'utente corrente, in esecuzione come SYSTEM.
  • Il plugin Palo Alto GlobalProtect richiede che gli installer MSI e il file siano presenti nella directory . Puoi aggiungerli manualmente oppure eseguire lo script per scaricarli.

Disabilitare un plugin

Per disabilitare un plugin, aggiungilo alla variabile d'ambiente DISABLED_PLUGINS. Per esempio:

root@kitploit:~
DISABLED_PLUGINS=CiscoPlugin,SonicWallPlugin

Variabili d'ambiente

NachoVPN viene configurato tramite variabili d'ambiente. Questo lo rende facilmente compatibile con distribuzioni containerizzate.

Variabili d'ambiente globali:

Variabili d'ambiente specifiche dei plugin:

Mitigazioni

Raccomandiamo le seguenti mitigazioni:

  • Assicurati che i client SSL-VPN siano aggiornati all'ultima versione disponibile dal fornitore.
  • La maggior parte dei client VPN supporta il concetto di bloccare il profilo VPN su un endpoint specifico, o di usare una modalità VPN always-on. Questa dovrebbe essere attivata dove possibile.
  • Sfortunatamente, in alcuni casi questo blocco può essere rimosso da un utente locale malintenzionato, quindi si consiglia anche di usare regole firewall basate sull'host per limitare gli indirizzi IP con cui il client VPN può comunicare.
  • Prendi in considerazione l'uso di una policy di Application Control, come WDAC, o di una soluzione EDR per garantire che solo eseguibili e script approvati possano essere eseguiti dal client VPN.
  • Rileva e genera avvisi sui client VPN che eseguono processi figli non standard.

Riferimenti

  • AmberWolf Blog: NachoVPN
  • HackFest Hollywood 2024: Very Pwnable Networks: Exploiting the Top Corporate VPN Clients for Remote Root and SYSTEM Shells, Rich Warren & David Cash [video]
  • BlackHat 2008: Leveraging the Edge: Abusing SSL VPNs, Mike Zusman
  • BlackHat 2019: Infiltrating Corporate Intranet Like NSA, Orange Tsai & Meh Chang
  • NCC Group: Making New Connections: Leveraging Cisco AnyConnect Client to Drop and Run Payloads, David Cash & Julian Storr
  • The OpenConnect Project

Contributi

Accogliamo volentieri contributi! Apri un issue o invia una Pull Request.

Se sei interessato a sviluppare un nuovo plugin, puoi dare un'occhiata a ExamplePlugin per iniziare.

Licenza

NachoVPN è concesso in licenza sotto la licenza MIT. Vedi il file LICENSE per i dettagli.

Scarica lo strumento
msi_version.txt
downloads
msi_downloader.py
  • Per eseguire l'attacco di downgrade di Palo Alto GlobalProtect, assicurati che GlobalProtect.msi.old e GlobalProtect64.msi.old siano presenti nella cartella downloads. Questi file devono contenere gli installer MSI non modificati per una versione precedente alla 6.2.6 (es. 6.2.5).
  • VariabileDescrizionePredefinito
    SERVER_FQDNIl nome di dominio completamente qualificato del server.connect.nachovpn.local
    EXTERNAL_IPL'indirizzo IP esterno del server.127.0.0.1
    WRITE_PCAPIndica se scrivere i file PCAP catturati su disco.false
    DISABLED_PLUGINSUn elenco separato da virgole di plugin da disabilitare.
    USE_DYNAMIC_SERVER_THUMBPRINTIndica se calcolare dinamicamente l'impronta del certificato del server dal server (utile se dietro un proxy).false
    SERVER_SHA1_THUMBPRINTConsente di sovrascrivere l'impronta SHA1 calcolata per il certificato del server.
    SERVER_MD5_THUMBPRINTConsente di sovrascrivere l'impronta MD5 calcolata per il certificato del server.
    SMB_ENABLEDAbilita la condivisione SMB, disponibile tramite il tunnel all'indirizzo \\10.10.0.1\<SMB_SHARE_NAME>false
    SMB_SHARE_NAMEIl nome da usare per la condivisione SMBSHARE
    SMB_SHARE_PATHIl percorso della directory da usare per la condivisione SMBsmb
    TUNNEL_PRIVATEQuando impostato su true, abilita il tunneling ma disabilita l'inoltro internet per i client VPN. I client possono accedere solo alla condivisione SMB.false
    TUNNEL_FULLQuando impostato su true, abilita il tunneling completo e consente ai client VPN di accedere a internet. Implica anche TUNNEL_PRIVATE=true.false
    VariabileDescrizionePredefinito
    VPN_NAMEIl nome del profilo VPN, che viene presentato al client per Cisco AnyConnect.NachoVPN
    PULSE_LOGON_SCRIPTIl percorso dello script di accesso Pulse Secure.C:\Windows\System32\calc.exe
    PULSE_LOGON_SCRIPT_MACOSIl percorso dello script di accesso Pulse Secure per macOS.
    PULSE_DNS_SUFFIXIl suffisso DNS da usare per le connessioni Pulse Secure.nachovpn.local
    PULSE_USERNAMEIl nome utente da precompilare nella finestra di accesso Pulse Secure.
    PULSE_SAVE_CONNECTIONIndica se salvare la connessione Pulse Secure nel client dell'utente.false
    PULSE_ANONYMOUS_AUTHIndica se usare l'autenticazione anonima per le connessioni Pulse Secure. Se impostato su true, all'utente non verrà richiesto nome utente o password.false
    PULSE_HOST_CHECKER_RULES_FILEUn file JSON contenente un elenco di regole host-checker basate sul registro per ICS. Vedi l'esempio in src/nachovpn/plugins/pulse/test/example_rules.json
    PALO_ALTO_MSI_ADD_FILEIl percorso di un file da aggiungere all'installer MSI di Palo Alto.
    PALO_ALTO_MSI_COMMANDIl comando che deve essere eseguito dall'installer MSI di Palo Alto.net user pwnd Passw0rd123! /add && net localgroup administrators pwnd /add
    PALO_ALTO_FORCE_PATCHIndica se forzare la patch dell'installer MSI se esiste già nella directory payloads.false
    PALO_ALTO_PKG_COMMANDIl comando che deve essere eseguito dall'installer PKG di Palo Alto su macOS.touch /tmp/pwnd
    CISCO_COMMAND_WINIl comando che deve essere eseguito dallo script OnConnect.vbs di Cisco AnyConnect su Windows.calc.exe
    CISCO_COMMAND_MACOSIl comando che deve essere eseguito dallo script OnConnect.sh di Cisco AnyConnect su macOS.touch /tmp/pwnd