Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
NachoVPN — Um servidor SSL-VPN delicioso, mas malicioso 🌮 | Kitploit
Ferramentas/GitHubGitHub/amberwolfcyber/nachovpn
Escalada de PrivilégiosAnálise de VulnerabilidadesExploraçãoSegurança de RedeTestes de PenetraçãoRed TeamingDesenvolvimento de PayloadsAtaque Adversário
GitHubamberwolfcyber/nachovpn

NachoVPN

Um servidor SSL-VPN delicioso, mas malicioso 🌮

Ver Repositório
267314há 6 mesesRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

NachoVPN 🌮🔒

O NachoVPN é uma Prova de Conceito que demonstra a exploração de clientes SSL-VPN usando um servidor VPN malicioso.

Ele usa uma arquitetura baseada em plugins, permitindo que a comunidade contribua com suporte para produtos SSL-VPN adicionais. Atualmente, ele suporta vários produtos VPN corporativos populares, como Cisco AnyConnect, SonicWall NetExtender, Palo Alto GlobalProtect e Ivanti Connect Secure.

Para mais detalhes, consulte nossa publicação no blog e a apresentação no HackFest Hollywood 2024 [slides|vídeo].

Instalação

Pré-requisitos

  • Python 3.9 ou posterior
  • Docker (opcional)
  • osslsigncode (somente Linux)
  • msitools (somente Linux)
  • python3-netfilter (somente Linux)
  • git

Configuração no Linux

O NachoVPN é compilado e testado no Ubuntu 22.04.

  • Instale python3-nftables e nftables

  • Opcionalmente, use setcap para evitar a necessidade de sudo:

    root@kitploit:~
    sudo setcap 'cap_net_raw,cap_net_bind_service,cap_net_admin=eip' /usr/bin/python3.10
    
  • Ative o encaminhamento de IP:

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

Instalação a partir do código-fonte

O NachoVPN pode ser instalado a partir do GitHub usando pip. Observe que isso requer que o git esteja instalado.

Primeiro, crie um ambiente virtual.

No Linux, certifique-se de que o ambiente virtual tenha acesso aos site-packages do sistema, para que o nftables funcione:

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

No Windows, o nftables (e, portanto, o encaminhamento de pacotes) está desabilitado, então use:

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

Em seguida, instale o NachoVPN:

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

Se preferir usar Docker, você pode baixar o contêiner do GitHub Container Registry:

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

Construção para distribuição

Gerando um arquivo wheel

Primeiro, clone este repositório e instale setuptools e wheel via pip. Em seguida, você pode executar o script setup.py:

root@kitploit:~
git clone https://github.com/AmberWolfCyber/NachoVPN
pip install -U setuptools wheel
python setup.py bdist_wheel

Isso gerará um arquivo wheel no diretório dist, que pode ser instalado com pip:

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

Construção para desenvolvimento local

Alternativamente, para desenvolvimento local, você pode instalar o pacote em modo editável usando:

root@kitploit:~
pip install -e .

Construindo uma imagem de contêiner

Você pode construir a imagem do contêiner com o seguinte comando:

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

Execução

Para executar o servidor de forma autônoma, use:

root@kitploit:~
python -m nachovpn.server

Alternativamente, você pode executar o servidor 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

Isso gerará um certificado para o SERVER_FQDN usando certbot e o salvará no diretório certs, que montamos no contêiner.

Alternativamente, para fins de teste, você pode pular a geração do certificado definindo a variável de ambiente SKIP_CERTBOT.

Isso gerará um certificado autoassinado em vez disso.

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

Um arquivo docker-compose de exemplo também é fornecido para conveniência.

Depuração

Você pode executar nachovpn com os argumentos de linha de comando -d ou --debug para aumentar a verbosidade do log, o que pode ajudar na depuração.

Alternativamente, se o log estiver excessivamente verboso, você pode usar o argumento de linha de comando q ou --quiet.

Plugins

O NachoVPN suporta os seguintes plugins e recursos:

Manipuladores de URI

  • O manipulador de URI do Ivanti Connect Secure (Pulse Secure) pode ser acionado visitando o URL /pulse no servidor NachoVPN.
  • O manipulador de URI do SonicWall NetExtender pode ser acionado visitando o URL /sonicwall no servidor NachoVPN. Isso requer que o SonicWall Connect Agent esteja instalado na máquina cliente.
  • O manipulador de URI do Delinea pode ser acionado visitando o URL /delinea no servidor NachoVPN.

Notas Operacionais

  • É recomendado usar um certificado TLS assinado por uma Autoridade Certificadora confiável. O contêiner docker automatiza esse processo para você, usando certbot. Se você não usar um certificado confiável, o NachoVPN gerará um certificado autoassinado em vez disso, o que, na maioria dos casos, fará com que o cliente exiba um aviso de certificado ou se recuse a conectar, a menos que você modifique as configurações do cliente para aceitar certificados autoassinados. Para o plugin Palo Alto GlobalProtect, isso também fará com que o instalador MSI falhe.
  • Para simular um certificado de assinatura de código válido para o plugin SonicWall, o NachoVPN assinará o payload NACAgent.exe com um certificado autoassinado. Para fins de teste, você pode baixar e instalar este certificado CA de /sonicwall/ca.crt antes de acionar a exploração. Para casos de uso em produção, você precisará obter um certificado de assinatura de código válido de uma CA pública, assinar seu payload NACAgent.exe e colocá-lo no diretório payloads (ou montá-lo como volume em /app/payloads, se estiver usando docker).
  • Para conveniência, um payload NACAgent.exe padrão é gerado para o plugin SonicWall e gravado no diretório payloads. Isso simplesmente inicia um novo processo cmd.exe na área de trabalho do usuário atual, executando como SYSTEM.
  • O plugin Palo Alto GlobalProtect exige que os instaladores MSI e o arquivo estejam presentes no diretório . Adicione-os manualmente ou execute o script para baixá-los.

Desabilitando um plugin

Para desabilitar um plugin, adicione-o à variável de ambiente DISABLED_PLUGINS. Por exemplo:

root@kitploit:~
DISABLED_PLUGINS=CiscoPlugin,SonicWallPlugin

Variáveis de Ambiente

O NachoVPN é configurado usando variáveis de ambiente. Isso o torna facilmente compatível com implantações conteinerizadas.

Variáveis de ambiente globais:

Variáveis de ambiente específicas dos plugins:

Mitigações

Recomendamos as seguintes mitigações:

  • Garanta que os clientes SSL-VPN estejam atualizados para a versão mais recente disponibilizada pelo fornecedor.
  • A maioria dos clientes VPN suporta o conceito de restringir o perfil VPN a um endpoint específico ou usar um modo VPN sempre ativo. Isso deve ser habilitado sempre que possível.
  • Infelizmente, em alguns casos, essa restrição pode ser removida por um usuário local malicioso; portanto, também é recomendado usar regras de firewall baseadas no host para restringir os endereços IP com os quais o cliente VPN pode se comunicar.
  • Considere usar uma política de Controle de Aplicativos, como WDAC, ou uma solução EDR para garantir que apenas executáveis e scripts aprovados possam ser executados pelo cliente VPN.
  • Detecte e alerte sobre clientes VPN executando processos filhos não padronizados.

Referências

  • 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 [vídeo]
  • 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

Contribuindo

Aceitamos contribuições! Abra uma issue ou envie um Pull Request.

Se você estiver interessado em desenvolver um novo plugin, dê uma olhada no ExamplePlugin para começar.

Licença

O NachoVPN é licenciado sob a licença MIT. Consulte o arquivo LICENSE para obter detalhes.

Baixar ferramenta
PluginProdutoCVERCE no WindowsRCE no macOSPrivilegiadoManipulador de URICaptura de PacotesDemonstração
CiscoCisco AnyConnectN/A✅✅❌❌✅Windows / macOS
SonicWallSonicWall NetExtenderCVE-2024-29014✅❌✅✅❌Windows
PaloAltoPalo Alto GlobalProtectCVE-2024-5921 (correção parcial)✅✅✅❌✅Windows / macOS / iOS
PulseSecureIvanti Connect SecureCVE-2020-8241 (contornado)✅✅✅✅ (somente Windows - desabilitado por padrão na 22.8R1)✅Windows
NetskopeNetskopeCVE-2025-0309✅❌✅❌❌Windows
DelineaProtocol HandlerCVE-2026-????✅✅❌✅❌Windows
msi_version.txt
downloads
msi_downloader.py
  • Para realizar o ataque de downgrade do Palo Alto GlobalProtect, certifique-se de que GlobalProtect.msi.old e GlobalProtect64.msi.old estejam presentes na pasta downloads. Esses arquivos devem conter os instaladores MSI não modificados de uma versão anterior à 6.2.6 (por exemplo, 6.2.5).
  • VariávelDescriçãoPadrão
    SERVER_FQDNO nome de domínio totalmente qualificado do servidor.connect.nachovpn.local
    EXTERNAL_IPO endereço IP externo do servidor.127.0.0.1
    WRITE_PCAPSe deve gravar os arquivos PCAP capturados em disco.false
    DISABLED_PLUGINSUma lista separada por vírgulas de plugins a desabilitar.
    USE_DYNAMIC_SERVER_THUMBPRINTSe deve calcular dinamicamente a impressão digital do certificado do servidor a partir do servidor (útil se estiver atrás de um proxy).false
    SERVER_SHA1_THUMBPRINTPermite substituir a impressão digital SHA1 calculada para o certificado do servidor.
    SERVER_MD5_THUMBPRINTPermite substituir a impressão digital MD5 calculada para o certificado do servidor.
    SMB_ENABLEDAtiva o compartilhamento SMB, disponível através do túnel em \\10.10.0.1\<SMB_SHARE_NAME>false
    SMB_SHARE_NAMEO nome a ser usado para o compartilhamento SMBSHARE
    SMB_SHARE_PATHO caminho para o diretório a ser usado para o compartilhamento SMBsmb
    TUNNEL_PRIVATEQuando definido como true, ativa o tunelamento, mas desativa o encaminhamento de internet para clientes VPN. Os clientes só podem acessar o compartilhamento SMB.false
    TUNNEL_FULLQuando definido como true, ativa o tunelamento completo e permite que clientes VPN acessem a internet. Também implica TUNNEL_PRIVATE=true.false
    VariávelDescriçãoPadrão
    VPN_NAMEO nome do perfil VPN, que é apresentado ao cliente para Cisco AnyConnect.NachoVPN
    PULSE_LOGON_SCRIPTO caminho para o script de logon do Pulse Secure.C:\Windows\System32\calc.exe
    PULSE_LOGON_SCRIPT_MACOSO caminho para o script de logon do Pulse Secure para macOS.
    PULSE_DNS_SUFFIXO sufixo DNS a ser usado para conexões Pulse Secure.nachovpn.local
    PULSE_USERNAMEO nome de usuário a ser pré-preenchido na caixa de diálogo de logon do Pulse Secure.
    PULSE_SAVE_CONNECTIONSe deve salvar a conexão Pulse Secure no cliente do usuário.false
    PULSE_ANONYMOUS_AUTHSe deve usar autenticação anônima para conexões Pulse Secure. Se definido como true, o usuário não será solicitado a fornecer nome de usuário ou senha.false
    PULSE_HOST_CHECKER_RULES_FILEUm arquivo JSON contendo uma lista de regras de host-checker baseadas no registro do Windows para ICS. Veja o exemplo em src/nachovpn/plugins/pulse/test/example_rules.json
    PALO_ALTO_MSI_ADD_FILEO caminho para um arquivo a ser adicionado ao MSI do instalador do Palo Alto.
    PALO_ALTO_MSI_COMMANDO comando a ser executado pelo MSI do instalador do Palo Alto.net user pwnd Passw0rd123! /add && net localgroup administrators pwnd /add
    PALO_ALTO_FORCE_PATCHSe deve forçar a aplicação do patch no instalador MSI se ele já existir no diretório payloads.false
    PALO_ALTO_PKG_COMMANDO comando a ser executado pelo PKG do instalador do Palo Alto no macOS.touch /tmp/pwnd
    CISCO_COMMAND_WINO comando a ser executado pelo script OnConnect.vbs do Cisco AnyConnect no Windows.calc.exe
    CISCO_COMMAND_MACOSO comando a ser executado pelo script OnConnect.sh do Cisco AnyConnect no macOS.touch /tmp/pwnd