Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
NachoVPN — Вкусный, но вредоносный SSL-VPN сервер 🌮 | Kitploit
Инструменты/GitHubGitHub/amberwolfcyber/nachovpn
Повышение привилегийАнализ уязвимостейЭксплуатацияСетевая безопасностьТестирование на ПроникновениеRed TeamingРазработка Полезной НагрузкиСостязательная Атака
GitHubamberwolfcyber/nachovpn

NachoVPN

Вкусный, но вредоносный SSL-VPN сервер 🌮

Репозиторий
267315 месяцев назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

NachoVPN 🌮🔒

NachoVPN — это Proof of Concept, демонстрирующий эксплуатацию SSL-VPN клиентов с помощью поддельного VPN-сервера.

Он использует плагинную архитектуру, чтобы сообщество могло добавлять поддержку дополнительных SSL-VPN продуктов. В настоящее время поддерживаются различные популярные корпоративные VPN-продукты, такие как Cisco AnyConnect, SonicWall NetExtender, Palo Alto GlobalProtect и Ivanti Connect Secure.

Более подробную информацию см. в нашем посте в блоге и презентации с HackFest Hollywood 2024 [слайды|видео].

Установка

Предварительные требования

  • Python 3.9 или новее
  • Docker (опционально)
  • osslsigncode (только Linux)
  • msitools (только Linux)
  • python3-netfilter (только Linux)
  • git

Настройка Linux

NachoVPN собран и протестирован на Ubuntu 22.04.

  • Установите python3-nftables и nftables

  • При желании используйте setcap, чтобы избежать требования sudo:

    root@kitploit:~
    sudo setcap 'cap_net_raw,cap_net_bind_service,cap_net_admin=eip' /usr/bin/python3.10
    
  • Включите пересылку IP:

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

Установка из исходного кода

NachoVPN можно установить из GitHub с помощью pip. Обратите внимание, что для этого требуется установленный git.

Сначала создайте виртуальное окружение.

В Linux убедитесь, что виртуальное окружение имеет доступ к системным site-packages, чтобы работал nftables:

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

В Windows nftables (а следовательно, и пересылка пакетов) отключён, поэтому используйте:

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

Затем установите NachoVPN:

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

Если вы предпочитаете использовать Docker, вы можете загрузить контейнер из GitHub Container Registry:

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

Сборка для распространения

Сборка wheel-файла

Сначала клонируйте этот репозиторий и установите setuptools и wheel через pip. Затем вы можете запустить скрипт setup.py:

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

Это создаст wheel-файл в каталоге dist, который можно установить с помощью pip:

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

Сборка для локальной разработки

В качестве альтернативы для локальной разработки вы можете установить пакет в режиме редактирования:

root@kitploit:~
pip install -e .

Сборка образа контейнера

Вы можете собрать образ контейнера следующей командой:

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

Запуск

Чтобы запустить сервер автономно, используйте:

root@kitploit:~
python -m nachovpn.server

В качестве альтернативы вы можете запустить сервер с помощью 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

При этом будет создан сертификат для SERVER_FQDN с помощью certbot и сохранён в каталог certs, который мы смонтировали в контейнер.

В качестве альтернативы для целей тестирования вы можете пропустить генерацию сертификата, установив переменную окружения SKIP_CERTBOT.

В этом случае будет создан самозаверяющий сертификат.

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

Для удобства также предоставлен пример docker-compose файла.

Отладка

Вы можете запустить nachovpn с аргументами командной строки -d или --debug, чтобы увеличить подробность журналирования, что может помочь в отладке.

Если же журналирование слишком подробное, вместо этого можно использовать аргумент командной строки q или --quiet.

Плагины

NachoVPN поддерживает следующие плагины и возможности:

URI-обработчики

  • URI-обработчик Ivanti Connect Secure (Pulse Secure) можно вызвать, посетив URL /pulse на сервере NachoVPN.
  • URI-обработчик SonicWall NetExtender можно вызвать, посетив URL /sonicwall на сервере NachoVPN. Для этого на клиентской машине должен быть установлен SonicWall Connect Agent.
  • URI-обработчик Delinea можно вызвать, посетив URL /delinea на сервере NachoVPN.

Примечания по эксплуатации

  • Рекомендуется использовать TLS-сертификат, подписанный доверенным центром сертификации. Docker-контейнер автоматизирует этот процесс с помощью certbot. Если вы не используете доверенный сертификат, NachoVPN вместо этого сгенерирует самозаверяющий сертификат, что в большинстве случаев приведёт либо к предупреждению о сертификате у клиента, либо к отказу от подключения, если не изменить настройки клиента для приёма самозаверяющих сертификатов. Для плагина Palo Alto GlobalProtect это также приведёт к сбою установщика MSI.
  • Чтобы имитировать действительный сертификат подписи кода для плагина SonicWall, NachoVPN подпишет полезную нагрузку NACAgent.exe самозаверяющим сертификатом. Для целей тестирования вы можете загрузить и установить этот CA-сертификат с /sonicwall/ca.crt перед запуском эксплуатации. Для производственных сценариев необходимо получить действительный сертификат подписи кода от публичного центра сертификации, подписать вашу полезную нагрузку NACAgent.exe и поместить её в каталог payloads (или смонтировать её в /app/payloads томом, если вы используете Docker).
  • Для удобства для плагина SonicWall генерируется полезная нагрузка NACAgent.exe по умолчанию и записывается в каталог payloads. Она просто запускает новый процесс cmd.exe на рабочем столе текущего пользователя от имени SYSTEM.
  • Плагин Palo Alto GlobalProtect требует, чтобы установщики MSI и файл присутствовали в каталоге . Добавьте их вручную или запустите скрипт для их загрузки.

Отключение плагина

Чтобы отключить плагин, добавьте его в переменную окружения DISABLED_PLUGINS. Например:

root@kitploit:~
DISABLED_PLUGINS=CiscoPlugin,SonicWallPlugin

Переменные окружения

NachoVPN настраивается с помощью переменных окружения. Это обеспечивает лёгкую совместимость с контейнерными развёртываниями.

Глобальные переменные окружения:

Переменные окружения для конкретных плагинов:

Меры защиты

Мы рекомендуем следующие меры защиты:

  • Убедитесь, что SSL-VPN клиенты обновлены до последней версии, доступной у вендора.
  • Большинство VPN-клиентов поддерживают возможность привязки VPN-профиля к конкретной конечной точке или использование режима постоянного VPN (always-on). Это следует включать там, где возможно.
  • К сожалению, в некоторых случаях злоумышленный локальный пользователь может снять эту блокировку, поэтому также рекомендуется использовать межсетевые правила на хосте для ограничения IP-адресов, с которыми может взаимодействовать VPN-клиент.
  • Рассмотрите возможность использования политики контроля приложений, такой как WDAC, или EDR-решения, чтобы гарантировать, что только одобренные исполняемые файлы и скрипты могут выполняться VPN-клиентом.
  • Обнаруживайте и сигнализируйте о выполнении VPN-клиентами нестандартных дочерних процессов.

Ссылки

  • Блог AmberWolf: NachoVPN
  • HackFest Hollywood 2024: Very Pwnable Networks: Exploiting the Top Corporate VPN Clients for Remote Root and SYSTEM Shells, Rich Warren & David Cash [видео]
  • 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

Участие в разработке

Мы приветствуем ваш вклад! Пожалуйста, открывайте issue или создавайте Pull Request.

Если вы заинтересованы в разработке нового плагина, вы можете посмотреть на ExamplePlugin, чтобы начать.

Лицензия

NachoVPN распространяется под лицензией MIT. Подробности см. в файле LICENSE.

Скачать инструмент
ПлагинПродуктCVEWindows RCEmacOS RCEПривилегииURI-обработчикЗахват пакетовДемо
CiscoCisco AnyConnectN/A✅✅❌❌✅Windows / macOS
SonicWallSonicWall NetExtenderCVE-2024-29014✅❌✅✅❌Windows
PaloAltoPalo Alto GlobalProtectCVE-2024-5921 (частичное исправление)✅✅✅❌✅Windows / macOS / iOS
PulseSecureIvanti Connect SecureCVE-2020-8241 (обойдено)✅✅✅✅ (только Windows — отключено по умолчанию в 22.8R1)✅Windows
NetskopeNetskopeCVE-2025-0309✅❌✅❌❌Windows
DelineaОбработчик протоколаCVE-2026-????✅✅❌✅❌Windows
msi_version.txt
downloads
msi_downloader.py
  • Для выполнения атаки с понижением версии Palo Alto GlobalProtect убедитесь, что файлы GlobalProtect.msi.old и GlobalProtect64.msi.old присутствуют в папке downloads. Эти файлы должны содержать немодифицированные установщики MSI версии ранее 6.2.6 (например, 6.2.5).
  • ПеременнаяОписаниеПо умолчанию
    SERVER_FQDNПолное доменное имя сервера.connect.nachovpn.local
    EXTERNAL_IPВнешний IP-адрес сервера.127.0.0.1
    WRITE_PCAPСледует ли записывать перехваченные PCAP-файлы на диск.false
    DISABLED_PLUGINSСписок отключаемых плагинов, разделённый запятыми.
    USE_DYNAMIC_SERVER_THUMBPRINTСледует ли вычислять отпечаток сертификата сервера динамически с сервера (полезно при работе за прокси).false
    SERVER_SHA1_THUMBPRINTПозволяет переопределить вычисленный SHA1-отпечаток сертификата сервера.
    SERVER_MD5_THUMBPRINTПозволяет переопределить вычисленный MD5-отпечаток сертификата сервера.
    SMB_ENABLEDВключает общий ресурс SMB, доступный через туннель по адресу \\10.10.0.1\<SMB_SHARE_NAME>false
    SMB_SHARE_NAMEИмя, используемое для общего ресурса SMBSHARE
    SMB_SHARE_PATHПуть к каталогу, используемому для общего ресурса SMBsmb
    TUNNEL_PRIVATEПри значении true включает туннелирование, но отключает пересылку интернета для VPN-клиентов. Клиенты могут получить доступ только к общему ресурсу SMB.false
    TUNNEL_FULLПри значении true включает полное туннелирование и позволяет VPN-клиентам выходить в интернет. Также подразумевает TUNNEL_PRIVATE=true.false
    ПеременнаяОписаниеПо умолчанию
    VPN_NAMEИмя VPN-профиля, которое отображается клиенту для Cisco AnyConnect.NachoVPN
    PULSE_LOGON_SCRIPTПуть к скрипту входа Pulse Secure.C:\Windows\System32\calc.exe
    PULSE_LOGON_SCRIPT_MACOSПуть к скрипту входа Pulse Secure для macOS.
    PULSE_DNS_SUFFIXDNS-суффикс, используемый для подключений Pulse Secure.nachovpn.local
    PULSE_USERNAMEИмя пользователя, предварительно заполняемое в диалоге входа Pulse Secure.
    PULSE_SAVE_CONNECTIONСледует ли сохранять подключение Pulse Secure в клиенте пользователя.false
    PULSE_ANONYMOUS_AUTHСледует ли использовать анонимную аутентификацию для подключений Pulse Secure. Если установлено значение true, пользователю не будет предложено ввести имя пользователя или пароль.false
    PULSE_HOST_CHECKER_RULES_FILEJSON-файл, содержащий список правил host-checker на основе реестра для ICS. Пример см. в src/nachovpn/plugins/pulse/test/example_rules.json
    PALO_ALTO_MSI_ADD_FILEПуть к файлу, который будет добавлен в установщик MSI Palo Alto.
    PALO_ALTO_MSI_COMMANDКоманда, которая будет выполнена установщиком MSI Palo Alto.net user pwnd Passw0rd123! /add && net localgroup administrators pwnd /add
    PALO_ALTO_FORCE_PATCHСледует ли принудительно пропатчить установщик MSI, если он уже существует в каталоге payloads.false
    PALO_ALTO_PKG_COMMANDКоманда, которая будет выполнена установщиком PKG Palo Alto на macOS.touch /tmp/pwnd
    CISCO_COMMAND_WINКоманда, которая будет выполнена скриптом OnConnect.vbs Cisco AnyConnect в Windows.calc.exe
    CISCO_COMMAND_MACOSКоманда, которая будет выполнена скриптом OnConnect.sh Cisco AnyConnect в macOS.touch /tmp/pwnd