
ChatGPT API、Bard API、Llama2、Python-Nmap、DNS Recon、PCAP、JWT reconモジュールを使用し、NmapスキャンデータとDNSスキャン情報に基づいて脆弱性レポートを作成するためにGPT3モデルを利用します。また、サブドメイン列挙も広範囲に実行できます。
GVAはAI支援による偵察および脆弱性分析ツールキットです。スキャン(nmap、DNS、サブドメイン、JWT、PCAP、GeoIP)を実行し、その生の出力を大規模言語モデルに渡して、ペネトレーションテスター向けの構造化された分析結果を返します。コマンドラインインターフェースとデスクトップGUIの両方を備えています。
AIレイヤーはプロバイダー非依存です。OpenAI、Anthropic Claude、Google Gemini、およびローカルのOllamaモデルをすべてサポートしています。1つを選ぶか、複数を同時に実行して、 deliberationエージェントにそれらの分析を単一のレポートに統合させることもできます。
pyproject.toml(uvで管理)またはrequirements.txtからの依存関係PATH上のnmapPATH上のWireshark / tsharknmap攻撃はpython-nmapを通じてシステムのnmapバイナリを呼び出すため、nmapがインストールされ実行可能である必要があります。
sudoで昇格させるか、--sudoを渡すことができます。プロファイル1〜5は非特権で実行され、プロファイル1がデフォルトでrootなしでも動作します。libssh2.so.1: cannot open shared object fileが発生する場合: システムのnmapに共有ライブラリが欠けています。condaを使用している場合は、conda install -c conda-forge nmapが自己完結型でPATHの優先順位も高くなります。それ以外の場合はrpm-ostree install libssh2でレイヤー化し(その後再起動)、またはbrew install nmapやdistroboxコンテナを使用してください。nmapが見つからないか壊れている場合、攻撃はクラッシュせずに明確なエラーを報告します。
インストールスクリプトはシステムパッケージ、uv、およびPython依存関係をセットアップします。通常のユーザーとして実行してください。システムパッケージのステップのみをsudoで昇格させます。
./install.sh # フルインストール
./install.sh --no-system # システムパッケージをスキップ(uv + Python依存関係のみ)
パッケージマネージャー(apt、dnf、pacman、zypper、apk、brew、またはrpm-ostree)を自動検出し、uvをユーザーレベルでインストールし、uv syncを実行して.envを作成します。最初にsudo suを実行しないでください。プロジェクトがユーザー専用マウント(例えば/run/hostや/media)上にある場合、rootはそれを読み取れないため、通常ユーザーでの実行が確実な方法です。
uvで手動インストールするには:
uv sync
pip install -r requirements.txtもフォールバックとして機能します。
サンプルの環境ファイルをコピーし、使用したいプロバイダーのキーを入力します。キーのないプロバイダーは自動的にスキップされます。
cp .env.example .env
GEOIP_API_KEY=
OPENAI_API_KEY=
ANTHROPIC_API_KEY=
GEMINI_API_KEY=
すべてのプロバイダーは、検証済みの構造化された結果を返すPydantic AIエージェントです。複数を選択すると、各モデルがスキャンを独立かつ同時に分析し、その後 deliberationエージェント(選択したモデルの1つ)がそれらを単一の統合レポートにまとめます。実行中はライブ進捗ボードに各モデルのステータス、タイミング、および deliberationステップが表示されます。
| プロバイダー | キー | デフォルトモデル | 概算価格 / 100万トークン |
|---|---|---|---|
| OpenAI | openai | gpt-5.6-luna | $0.20 in / $1.20 out |
| Anthropic | claude | claude-haiku-4-5 | $1.00 in / $5.00 out |
gemini | gemini-3.6-flash | $0.75 in / $3.75 out | |
| Ollama | ollama | llama3 | ローカル / 無料 |
.env内の対応する*_MODEL変数で任意のモデルを上書きできます。代替案については.env.exampleを参照してください。OllamaはローカルのDockerイメージを使用し、選択すると自動的に起動します。
uv run gpt_vuln.py ...で実行するか、アクティブ化されたvenv内でpython gpt_vuln.py ...で実行します。
# ヘルプ
uv run gpt_vuln.py --help
uv run gpt_vuln.py --rich_menu help
# Nmapスキャン(デフォルトプロファイル1)、OpenAIで分析
python gpt_vuln.py --target scanme.nmap.org --attack nmap --ai openai
# スキャンプロファイルを選択(下のプロファイル表、または--list_profilesを参照)
python gpt_vuln.py --target scanme.nmap.org --attack nmap --profile 2
python gpt_vuln.py --list_profiles
# DNS偵察(プロファイル不要)
python gpt_vuln.py --target example.com --attack dns
# サブドメイン列挙(デフォルトまたはカスタムワードリスト)
python gpt_vuln.py --target example.com --attack sub
python gpt_vuln.py --target example.com --attack sub --sub_list path/to/list.txt
# GeoIPルックアップ
python gpt_vuln.py --target 8.8.8.8 --attack geo
# JWT分析
python gpt_vuln.py --target <token> --attack jwt
# PCAP分析
python gpt_vuln.py --target capture.pcap --attack pcap --output outputs/output.json
# 複数プロバイダー: それぞれが独立して分析し、その後1つの統合レポート
python gpt_vuln.py --target example.com --attack dns --ai openai,claude,gemini
# どのモデルが deliberationするかを選択し、各モデル自身の分析も表示
python gpt_vuln.py --target example.com --attack dns --ai all --summarizer claude --show_individual
# パスワードクラッキング
python gpt_vuln.py --password_hash <hash> --wordlist_file words.txt --algorithm md5 --parallel
# インタラクティブなステップバイステップメニュー
python gpt_vuln.py --menu
--menuは、各攻撃のターゲット、オプション、AIプロバイダーを尋ねるガイド付きインターフェースを起動します。
┏━━━━━━━━━┳━━━━━━━━━━━━━━━━┓
┃ Option ┃ Action ┃
┡━━━━━━━━━╇━━━━━━━━━━━━━━━━┩
│ 1 │ Nmap scan │
│ 2 │ DNS recon │
│ 3 │ Subdomain enum │
│ 4 │ GeoIP lookup │
│ 5 │ JWT analysis │
│ 6 │ PCAP analysis │
│ 7 │ Hash cracker │
│ q │ Quit │
└─────────┴────────────────┘
プロファイル1〜5は非特権で実行されます(TCPコネクトスキャン、root不要)。プロファイル1がデフォルトです。プロファイル6〜10はrootが必要なSYN/UDP/OS検出フラグを使用します。GVAは選択時にnmapステップのみをsudoで昇格させます。python gpt_vuln.py --list_profilesを実行すると、この表がターミナルに表示されます。
| # | 名前 | Root | 内容 | Nmapコマンド |
|---|---|---|---|---|
| 1 | Quick | no | サービスバージョン付きのトップ100 TCPポート(高速トリアージ)。 | -Pn -sT -sV -T4 --top-ports 100 |
| 2 | Standard | no | バージョンとデフォルトNSEスクリプト付きのトップ1000ポート。 | -Pn -sT -sV -sC -T4 --top-ports 1000 |
| 3 | Full TCP | no | バージョン付きの全TCPポート(1〜65535)。 | -Pn -sT -sV -p- -T4 |
| 4 | Web services | no | 一般的なWebポートに焦点を当てたHTTP/Sスキャン。 | -Pn -sT -sV -T4 -p 80,443,8080,8443,8000,8888,3000,5000 --script=http-title,http-headers,... |
| 5 | Vulnerability | no | バージョン付きサービスに対するNSE脆弱性スクリプト。 | -Pn -sT -sV -T4 --script=vuln |
| 6 | Stealth SYN | yes | トップ1000ポートのハーフオープンSYNスキャン。 | -Pn -sS -sV -T4 --top-ports 1000 |
| 7 | OS & service | yes | OSフィンガープリンティングとサービス検出を伴うSYNスキャン。 | -Pn -sS -sV -O -T4 |
| 8 | Aggressive | yes | OS、バージョン、デフォルトスクリプト、およびtraceroute。 | -Pn -A -T4 |
| 9 | UDP top | yes | トップ50 UDPサービス(DNS、SNMP、NTPなど)。 | -Pn -sU -sV -T4 --top-ports 50 |
| 10 | Deep audit | yes | OS検出と脆弱性スクリプトを伴うフルポートSYNスキャン。 | -Pn -sS -sV -O -p- -T4 --script=default,vuln |
プロファイルはnmapの引数を選択します。nmapが実行され、開いているポートのデータがスキャン結果から取得され、そのデータが分析のためにAIエンジンに渡されます。スキャンが完了しても開いているポートが見つからない場合、GVAは空白の分析を返す代わりにその旨を明確に伝えるため、空の結果がサイレント障害のように見えることはありません。
デスクトップGUIはcustomtkinterで構築されています。
uv run python GVA_gui.py
左サイドバーからスキャンを選択し、ターゲットを入力して実行します。各スキャンには必要なフィールドのみが表示されます:
allを選択)。