Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
NachoVPN — おいしいが、悪意のあるSSL-VPNサーバー 🌮 | Kitploit
ツール/GitHubGitHub/amberwolfcyber/nachovpn
特権昇格脆弱性分析エクスプロイトネットワークセキュリティペネトレーションテストレッドチーミングペイロード開発敵対的攻撃
GitHubamberwolfcyber/nachovpn

NachoVPN

おいしいが、悪意のあるSSL-VPNサーバー 🌮

リポジトリを見る
2673146ヶ月前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

NachoVPN 🌮🔒

NachoVPN は、不正な VPN サーバーを使用して SSL-VPN クライアントを悪用することを実証する Proof of Concept です。

プラグイン方式のアーキテクチャを採用しており、コミュニティが追加の SSL-VPN 製品への対応を貢献できるようになっています。現在、Cisco AnyConnect、SonicWall NetExtender、Palo Alto GlobalProtect、Ivanti Connect Secure など、さまざまな人気の企業向け VPN 製品をサポートしています。

詳細については、ブログ記事 と 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 は pip を使用して GitHub からインストールできます。これには git がインストールされている必要があることに注意してください。

まず、仮想環境を作成します。

Linux では、nftables が動作するように、仮想環境がシステムの site-packages にアクセスできることを確認してください:

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 ファイルのビルド

まず、このリポジトリをクローンし、pip で setuptools と wheel をインストールします。その後、setup.py スクリプトを実行できます:

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

これにより、dist ディレクトリに wheel ファイルが生成され、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

これにより、certbot を使用して SERVER_FQDN 用の証明書が生成され、コンテナにマウントした 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 ハンドラー

  • Ivanti Connect Secure(Pulse Secure)URI ハンドラーは、NachoVPN サーバーの /pulse URL にアクセスすることでトリガーできます。
  • SonicWall NetExtender URI ハンドラーは、NachoVPN サーバーの /sonicwall URL にアクセスすることでトリガーできます。これには、クライアントマシンに SonicWall Connect Agent がインストールされている必要があります。
  • Delinea URI ハンドラーは、NachoVPN サーバーの /delinea URL にアクセスすることでトリガーできます。

動作上の注意

  • 信頼された認証局(CA)によって署名された TLS 証明書を使用することをお勧めします。docker コンテナは certbot を使用してこのプロセスを自動化します。信頼された証明書を使用しない場合、NachoVPN は代わりに自己署名証明書を生成します。その場合、ほとんどのケースでクライアントに証明書警告が表示されるか、自己署名証明書を受け入れるようにクライアント設定を変更しない限り接続が拒否されます。Palo Alto GlobalProtect プラグインでは、これにより MSI インストーラも失敗します。
  • SonicWall プラグインの有効なコードサイニング証明書をシミュレートするため、NachoVPN は NACAgent.exe ペイロードを自己署名証明書で署名します。テスト目的であれば、エクスプロイトをトリガーする前に /sonicwall/ca.crt からこの CA 証明書をダウンロードしてインストールできます。本番環境では、公開 CA から有効なコードサイニング証明書を取得し、NACAgent.exe ペイロードに署名して、payloads ディレクトリに配置する必要があります(docker を使用する場合は /app/payloads にボリュームマウントします)。
  • 便宜上、SonicWall プラグイン用のデフォルトの NACAgent.exe ペイロードが生成され、payloads ディレクトリに書き込まれます。これは、現在のユーザーのデスクトップ上で SYSTEM として新しい cmd.exe プロセスを起動するだけです。
  • Palo Alto GlobalProtect プラグインでは、MSI インストーラと msi_version.txt ファイルが downloads ディレクトリに存在する必要があります。手動で追加するか、msi_downloader.py スクリプトを実行してダウンロードしてください。

プラグインの無効化

プラグインを無効にするには、DISABLED_PLUGINS 環境変数に追加します。例:

root@kitploit:~
DISABLED_PLUGINS=CiscoPlugin,SonicWallPlugin

環境変数

NachoVPN は環境変数を使用して設定されます。これにより、コンテナ化されたデプロイメントと簡単に互換性を持たせることができます。

グローバル環境変数:

プラグイン固有の環境変数:

緩和策

次の緩和策を推奨します:

  • SSL-VPN クライアントをベンダーが提供する最新バージョンに更新してください。
  • ほとんどの VPN クライアントは、VPN プロファイルを特定のエンドポイントにロックダウンするか、常時接続 VPN モードを使用する概念をサポートしています。可能な場合はこれを有効にしてください。
  • 残念ながら、場合によってはこのロックダウンは悪意のあるローカルユーザーによって解除される可能性があるため、VPN クライアントが通信できる IP アドレスを制限するホストベースのファイアウォールルールを使用することも推奨されます。
  • WDAC などのアプリケーション制御ポリシーや EDR ソリューションを使用して、VPN クライアントが承認された実行可能ファイルとスクリプトのみを実行できるようにすることを検討してください。
  • VPN クライアントが標準的でない子プロセスを実行していることを検出して警告します。

参考文献

  • 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

貢献

貢献を歓迎します! issue を開くか、Pull Request を提出してください。

新しいプラグインの開発に興味がある場合は、ExamplePlugin を参照して始めることができます。

ライセンス

NachoVPN は MIT ライセンスの下でライセンスされています。詳細については、LICENSE ファイルを参照してください。

ツールをダウンロード
Plugin製品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
DelineaProtocol HandlerCVE-2026-????✅✅❌✅❌Windows
  • Palo Alto GlobalProtect のダウングレード攻撃を実行するには、GlobalProtect.msi.old と GlobalProtect64.msi.old が downloads フォルダに存在することを確認してください。これらのファイルには、6.2.6 より前 のバージョン(例:6.2.5)の 未変更 の MSI インストーラが含まれている必要があります。
  • Variable説明デフォルト
    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トンネルを介して \\10.10.0.1\<SMB_SHARE_NAME> で利用可能な SMB 共有を有効にします。false
    SMB_SHARE_NAMESMB 共有に使用する名前。SHARE
    SMB_SHARE_PATHSMB 共有に使用するディレクトリのパス。smb
    TUNNEL_PRIVATEtrue に設定すると、トンネリングは有効になりますが、VPN クライアントのインターネット転送は無効になります。クライアントは SMB 共有にのみアクセスできます。false
    TUNNEL_FULLtrue に設定すると、フルトンネリングが有効になり、VPN クライアントがインターネットにアクセスできるようになります。また、TUNNEL_PRIVATE=true を暗黙的に含みます。false
    Variable説明デフォルト
    VPN_NAMECisco AnyConnect でクライアントに表示される VPN プロファイルの名前。NachoVPN
    PULSE_LOGON_SCRIPTPulse Secure ログオンスクリプトのパス。C:\Windows\System32\calc.exe
    PULSE_LOGON_SCRIPT_MACOSmacOS 用の Pulse Secure ログオンスクリプトのパス。
    PULSE_DNS_SUFFIXPulse Secure 接続に使用する DNS サフィックス。nachovpn.local
    PULSE_USERNAMEPulse Secure ログオンダイアログに事前入力するユーザー名。
    PULSE_SAVE_CONNECTIONPulse Secure 接続をユーザーのクライアントに保存するかどうか。false
    PULSE_ANONYMOUS_AUTHPulse Secure 接続に匿名認証を使用するかどうか。true に設定すると、ユーザー名またはパスワードの入力を求められません。false
    PULSE_HOST_CHECKER_RULES_FILEICS 用のレジストリベースのホストチェッカールールのリストを含む JSON ファイル。例は src/nachovpn/plugins/pulse/test/example_rules.json を参照してください。
    PALO_ALTO_MSI_ADD_FILEPalo Alto インストーラ MSI に追加するファイルのパス。
    PALO_ALTO_MSI_COMMANDPalo Alto インストーラ MSI によって実行されるコマンド。net user pwnd Passw0rd123! /add && net localgroup administrators pwnd /add
    PALO_ALTO_FORCE_PATCHpayloads ディレクトリに MSI インストーラがすでに存在する場合に、そのパッチ適用を強制するかどうか。false
    PALO_ALTO_PKG_COMMANDmacOS で Palo Alto インストーラ PKG によって実行されるコマンド。touch /tmp/pwnd
    CISCO_COMMAND_WINWindows で Cisco AnyConnect OnConnect.vbs スクリプトによって実行されるコマンド。calc.exe
    CISCO_COMMAND_MACOSmacOS で Cisco AnyConnect OnConnect.sh スクリプトによって実行されるコマンド。touch /tmp/pwnd