AaronCaiii/AgenticPentest
AaronCaiii/AgenticPentest has 47 GitHub stars and 15 forks. GitHot measured 0 stars in 24 hours. Last checked 2026-11-15 11:43 UTC. Last push 2026-11-13.
できること
- Workspaces and teams - Local login and first-admin setup; administrator/operator/viewer roles, invitations, welcome messages and password management; isolated personal data and shared team workspaces.
- Dashboard - Asset, task, Agent and finding statistics; P0–P4 severity groups, candidate/confirmed states and filtered links into the corresponding records.
- Asset management - CSV/TXT/JSON import templates, source uploads, canonical target grouping and deduplication; network, identity/credential, data, channel and personnel categories with task/evidence references.
- Asset mapping - Saved ports, services, addresses and findings; mind-map, tree and star layouts, drag/zoom, minimap, fullscreen directory and collapse controls; persisted layout and color preferences.
計測したスター増加
- 24時間
- 0
- 7日間
- 履歴を収集中
- 15日間
- 履歴を収集中
- 1か月
- 履歴を収集中
期間ごとの純増数です。期間は重複しており、日別の値ではありません。未計測の値は空欄です。スター数は注目度の指標であり、品質の保証ではありません。
概要
Agent-powered red team testing workbench with asset mapping, threat modeling, multi-agent workflows, cloud assessment, reports and MCP.
セキュリティdocs/i18n/README.ja.md
オリジナル🛡️ AgenticPenTest
English | 简体中文 | 繁體中文 | Русский | Français | 日本語 | Deutsch
個人とローカルチーム向けの、LLM 駆動レッドチームテストワークベンチ。
🎬 英語の操作動画 · 43 秒 · MP4
https://github.com/user-attachments/assets/ffd3d60d-03da-4cb7-bdf0-cfb291d09975
合成データを使った実際の画面操作です。資産の追加、関連資産の選択、計画の保存を示します。タスク結果は事前に用意した例であり、その場で実施した侵入テストではありません。
v1.0.4: バックグラウンド導入、自動動作確認、プラットフォーム別取得。ホスト登録後は管理者が画面からバックアップ、更新、再起動、失敗時の復元を実行できます。
v1.0.3 — v1.0.2 の追加改善: カタログから対応ツールを直接取得・インストールでき、実行環境とダウンロード操作の表示を改善しました。
🚀 デプロイ方法
🐳 1. Docker イメージを取得して起動
v1.0.4 イメージは Debian 12(bookworm)をベースに、linux/amd64 と linux/arm64 のネイティブ版を提供します。Docker が適切なアーキテクチャを自動選択し、ホスト側の Node.js や Python は不要です。
| ホスト環境 | コンテナのアーキテクチャ | 検証状況 |
|---|---|---|
linux/amd64 |
Ubuntu で検証済み | |
linux/arm64 |
イメージは検証済み。ネイティブ Linux ARM64 ホストは未検証 | |
linux/arm64 |
初期化と主要ツール五つのバージョン起動を検証済み | |
linux/amd64 |
対応するイメージあり。Intel Mac での実機検証は未実施 | |
linux/amd64 |
Linux コンテナを使用。Windows ホストでの実機検証は未実施 |
これらは Linux イメージであり、Windows や macOS のネイティブイメージではありません。ツールの互換性はブラウザーの OS ではなく、コンテナまたは実行サーバーで決まります。完全なツール実行には対応するランタイムと Linux 隔離環境が必要で、Docker Desktop は本プロジェクトのホストネットワークガードを提供しません。各ツールの互換性を確認し、可用性検査は手動で開始してください。
Docker のインストール:Windows / WSL 2 · macOS。
docker pull docker.io/johncoke/agenticpentest:latest
docker run -d --name agenticpentest --restart unless-stopped \
--cap-drop ALL --security-opt no-new-privileges:true \
-p 127.0.0.1:8765:8765 \
-e PUBLIC_ORIGIN=http://127.0.0.1:8765 \
-v agenticpentest-data:/var/lib/agenticpentest \
-v agenticpentest-tools:/opt/agenticpentest-tools \
docker.io/johncoke/agenticpentest:latest
http://127.0.0.1:8765 · Docker
🧩 2. Docker Compose でデプロイ
公開済みイメージと永続ボリュームを使用し、ローカルビルドは行いません。現在、Compose ファイルの取得には Git リポジトリへのアクセス権が必要です。
git clone https://github.com/AaronCaiii/AgenticPentest.git AgenticPenTest
cd AgenticPenTest
docker compose up -d --pull always --no-build
🛠️ 3. ソースコードからインストール
Linux amd64、Git、Python 3 が必要です。スクリプトで配置先(既定は /opt 配下)、ポート、LAN アクセス、ツール構成を選択します。対応する Node.js を再利用し、なければチェックサムを検証して専用ランタイムを導入します。
git clone https://github.com/AaronCaiii/AgenticPentest.git AgenticPenTest
cd AgenticPenTest
python3 scripts/install-source.py
初期化後に表示された URL を開き、最初の管理者を作成してください。既定のアカウントやパスワードはありません。AgenticPenTestでは先に認可に関する通知が表示されます。 インストール設定・プロキシ・起動方法.
🔄 v1.0.1 から v1.0.4 へ、その後は画面から更新
初回は手動アップグレード、以後は画面から更新します。 v1.0.1 の更新確認画面では、この機能をインストールできません。該当する手順で更新してから、ホストチャネルを一度登録してください。タスク、ツールのインストール、SSH 接続を停止し、データベースと対応する鍵、設定、ポート、環境変数、ツールを保持します。docker compose down -v や既存環境への空データベースの初期化は禁止です。以下は Linux/macOS の Bash 用です。Windows Docker のホスト操作には、適切な WSL 2 Linux 環境が必要です。
🐳 Docker / Docker Compose:初回の手動更新
Docker ホストの元のデプロイ先で実行し、AP_CONTAINER を実際の名前に変更します。Compose の例は agenticpentest-workbench-1 です。イメージのリポジトリは既存コンテナから取得します。先にダウンロードし、停止後にデータをコピーします。バックアップは認証情報を含むため非公開で保管し、ツール分の容量も確保してください。独自のコンテナ内パスは docker inspect に合わせます。
AP_CONTAINER=agenticpentest
AP_BACKUP="$HOME/AgenticPenTest-backups/v1.0.4-$(date +%Y%m%d-%H%M%S)"
umask 077
mkdir -p "$AP_BACKUP"
docker inspect "$AP_CONTAINER" > "$AP_BACKUP/container.json"
AP_OLD_IMAGE="$(docker inspect --format '{{.Image}}' "$AP_CONTAINER")"
AP_IMAGE="$(docker exec "$AP_CONTAINER" node -p "require('./config/distribution.json').image")"
docker tag "$AP_OLD_IMAGE" "$AP_IMAGE:rollback-before-v1.0.4"
docker pull "$AP_IMAGE:v1.0.4"
AP_TOOLKIT="$(docker exec "$AP_CONTAINER" node -p "process.env.TOOLKIT_ROOT || '/opt/agenticpentest-tools'")"
docker stop "$AP_CONTAINER"
docker cp "$AP_CONTAINER:/var/lib/agenticpentest/." "$AP_BACKUP/data"
docker cp "$AP_CONTAINER:$AP_TOOLKIT/." "$AP_BACKUP/tools"
Compose: 元の Compose ファイル、env の絶対パス、プロジェクト名を設定します。すべての -f オーバーライドを両コマンドに残します。env をバックアップし、AP_IMAGE だけを変更してボリューム名は維持します。今後の更新のためホスト上のファイルを保持してください。
AP_COMPOSE="$PWD/compose.yaml"
AP_ENV="$PWD/.env"
AP_PROJECT=agenticpentest
touch "$AP_ENV"
cp -p "$AP_ENV" "$AP_BACKUP/runtime.env"
python3 - "$AP_ENV" "$AP_IMAGE:v1.0.4" <<'PY'
from pathlib import Path
import re, sys
p = Path(sys.argv[1])
text = p.read_text()
line = 'AP_IMAGE=' + sys.argv[2]
text = re.sub(r'^AP_IMAGE=.*$', line, text, flags=re.M) if re.search(r'^AP_IMAGE=', text, re.M) else text.rstrip() + '\n' + line + '\n'
p.write_text(text)
PY
docker compose -f "$AP_COMPOSE" --env-file "$AP_ENV" -p "$AP_PROJECT" pull workbench
docker compose -f "$AP_COMPOSE" --env-file "$AP_ENV" -p "$AP_PROJECT" up -d --no-build workbench
単独 Docker: 以下の再作成例は、下記クイックスタートを変更せず使った場合専用です。独自構成は保存した container.json から元のポート、環境、ボリューム/バインド、ネットワーク、安全設定を再現し、既定ボリュームに置き換えないでください。管理更新には --cap-drop ALL --security-opt no-new-privileges:true を維持します。確認中は停止した旧コンテナを残します。
docker rename "$AP_CONTAINER" "$AP_CONTAINER-before-v1.0.4"
docker run -d --name "$AP_CONTAINER" --restart unless-stopped \
--cap-drop ALL --security-opt no-new-privileges:true \
-p 127.0.0.1:8765:8765 \
-e PUBLIC_ORIGIN=http://127.0.0.1:8765 \
-v agenticpentest-data:/var/lib/agenticpentest \
-v agenticpentest-tools:/opt/agenticpentest-tools \
"$AP_IMAGE:v1.0.4"
healthy と 1.0.4 を確認し、元の URL・既存アカウントで資産、モデル、タスク、レポートを確認します。単独 Docker は確認後にのみ docker rm "$AP_CONTAINER-before-v1.0.4" で旧コンテナを削除します。-v は付けず、バックアップと復元用イメージは保持します。起動失敗時はデータ/鍵と元のイメージ・設定を戻してから再試行してください。
docker inspect --format '{{.State.Health.Status}}' "$AP_CONTAINER"
docker exec "$AP_CONTAINER" node -p "require('./package.json').version"
🛠️ ソース:初回の手動更新
この管理手順は Linux 用です。元のソースディレクトリで、root ではない既存サービス所有者として実行します。AP_DATA、AP_UNIT、AP_ORIGIN を実際の絶対データパス、サービス名、ブラウザ URL に変更してください。前景プロセスはコピー前に Ctrl+C で停止します。外部ツールの場所は保持し別途バックアップします。新規インストーラや npm run init を既存環境で再実行しないでください。
AP_SOURCE="$PWD"
AP_DATA="$AP_SOURCE/data"
AP_UNIT=agenticpentest.service
AP_ORIGIN=http://127.0.0.1:8765
AP_REPOSITORY="$(python3 -c 'import json,sys; print(json.load(open(sys.argv[1]))["repository"])' "$AP_SOURCE/config/distribution.json")"
AP_BACKUP="$HOME/AgenticPenTest-backups/source-v1.0.4-$(date +%Y%m%d-%H%M%S)"
umask 077
mkdir -p "$AP_BACKUP"
if systemctl is-active --quiet "$AP_UNIT"; then sudo systemctl stop "$AP_UNIT"; fi
tar -czf "$AP_BACKUP/data.tar.gz" -C "$AP_DATA" .
if [ -f "$AP_SOURCE/.env" ]; then cp -p "$AP_SOURCE/.env" "$AP_BACKUP/app.env"; fi
変更のない公式 Git チェックアウト: git status --short が空の場合だけ実行します。独自変更は先に保存し、変更や履歴分岐がある状態で強制リセットしないでください。将来の main ではなく、公開済み v1.0.4 タグを選びます。
cd "$AP_SOURCE"
git status --short
git rev-parse HEAD > "$AP_BACKUP/source-commit.txt"
git fetch origin main refs/tags/v1.0.4:refs/tags/v1.0.4
git merge --ff-only v1.0.4
ZIP、Git メタデータなし、履歴分岐: 直前の Git ブロックは実行せず、隣の新規ディレクトリを作ります。元のディレクトリを復元用に残し、env をコピーして、絶対 AP_DATA と対応する鍵を引き続き使います。新ディレクトリは未作成である必要があります。外部ツールの場所を保持し、サービスの WorkingDirectory/ExecStart/env のパスを調整してください。空の data で既存データを上書きしないでください。
AP_PREVIOUS_SOURCE="$AP_SOURCE"
AP_SOURCE="${AP_PREVIOUS_SOURCE}-v1.0.4"
git clone --branch v1.0.4 "$AP_REPOSITORY" "$AP_SOURCE"
if [ -f "$AP_PREVIOUS_SOURCE/.env" ]; then cp -p "$AP_PREVIOUS_SOURCE/.env" "$AP_SOURCE/.env"; fi
if [ -d "$AP_PREVIOUS_SOURCE/.runtime/node" ]; then
mkdir -p "$AP_SOURCE/.runtime"
cp -a "$AP_PREVIOUS_SOURCE/.runtime/node" "$AP_SOURCE/.runtime/node"
fi
cd "$AP_SOURCE"
両方のソース経路で実行: 選択したディレクトリで元の環境を維持してビルドします。独立 Node があれば再利用し、固定されたクラウド SDK を導入します。必要なら事前にプロキシ環境変数を設定してください。続いて下のサービス設定とチャネル登録を行います。ネイティブ Windows/macOS ソースは Git/npm で手動更新できますが、この Linux/systemd チャネルには対応しません。
cd "$AP_SOURCE"
export PATH="$AP_SOURCE/.runtime/node/bin:$PATH"
npm ci
npm run build
python3 scripts/setup-cloud-sdk.py --install
🔑 ホスト更新チャネルを初回登録
Docker 管理者またはソースサービスの所有者として、デプロイ先ホスト上で実行します。Web コンテナ内や root として登録しないでください。 Docker 権限または承認済みの非対話 sudo、もしくは対象サービスだけの権限が必要です。SSH と Git/Python 3 を用意します。下は Ubuntu/Debian 用です。macOS はリモートログインを有効にして Git/Python 3 を確認します。ローカル SSH 鍵認証を確認し、~/.ssh/authorized_keys がなければ作成します。既存鍵は置き換えないでください。
sudo apt-get update
sudo apt-get install -y openssh-server git python3
sudo systemctl enable --now ssh
mkdir -p ~/.ssh
touch ~/.ssh/authorized_keys
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
他の Linux では対応する SSH パッケージとサービス名を使います。登録はホスト公開鍵を固定し、更新コマンド専用の鍵を作成します。Docker socket のマウントは不要です。
Docker: デプロイしたイメージに対応する v1.0.4 ソースを使います。既存ディレクトリへ cd するか、イメージに記録されたリポジトリを取得してください。AP_HOST_SOURCE が存在する場合は別の空ディレクトリを選びます。同じシェルで更新変数を保持し、AP_ENV はホストの絶対パスにします。
AP_REPOSITORY="$(docker inspect --format '{{ index .Config.Labels "org.opencontainers.image.source" }}' "$AP_CONTAINER")"
AP_HOST_SOURCE="$HOME/AgenticPenTest-host"
git clone --branch v1.0.4 "$AP_REPOSITORY" "$AP_HOST_SOURCE"
cd "$AP_HOST_SOURCE"
Compose:プレビューを確認してから適用します:
python3 scripts/setup-platform-updater.py docker --container "$AP_CONTAINER" --env-file "$AP_ENV"
python3 scripts/setup-platform-updater.py docker --container "$AP_CONTAINER" --env-file "$AP_ENV" --apply
単独 Docker:env ファイル引数を省略します:
python3 scripts/setup-platform-updater.py docker --container "$AP_CONTAINER"
python3 scripts/setup-platform-updater.py docker --container "$AP_CONTAINER" --apply
ホストユーザーには対応イメージの取得権限が必要です。必要に応じホストで docker login を行います。イメージ取得は Docker daemon のプロキシ、システム設定のプロキシはアプリと更新メタデータ用です。macOS の SSH は host.docker.internal、Linux はループバックか Docker ゲートウェイが既定です。必要なら両方の登録コマンドに --host、--ssh-port、--host-key /absolute/path/to/ssh_host_ed25519_key.pub を追加します。公開メタデータにトークンは不要です。既存 network guard の統合と再登録権限は維持してください。
ソース: 既存 systemd ユニットと実行設定を維持します。systemctl show "$AP_UNIT" -p User -p WorkingDirectory -p ExecStart -p EnvironmentFiles で、このソースが登録ユーザーとして、元のデータ・URL で実行されることを確認します。パス変更は sudo systemctl edit --full "$AP_UNIT" で行ってください。ユニットがない場合に限り、前景プロセスを停止して下のテンプレートを使用します。AP_TOOLKIT を既存ツールの絶対パスに変更します。隣接ソース方式では旧ディレクトリのままでも構いません。既存ユニットをテンプレートで上書きしないでください。
AP_USER="$(id -un)"
AP_NODE="$(command -v node)"
AP_TOOLKIT="$AP_SOURCE/tools/toolkit"
if [ -x "$AP_SOURCE/.runtime/node/bin/node" ]; then AP_NODE="$AP_SOURCE/.runtime/node/bin/node"; fi
if ! systemctl cat "$AP_UNIT" >/dev/null 2>&1; then
sudo tee "/etc/systemd/system/$AP_UNIT" >/dev/null <<EOF
[Unit]
Description=AgenticPenTest
After=network.target
[Service]
Type=simple
User=$AP_USER
WorkingDirectory=$AP_SOURCE
EnvironmentFile=-"$AP_SOURCE/.env"
Environment="WORKBENCH_DATA=$AP_DATA" "PUBLIC_ORIGIN=$AP_ORIGIN" "TOOLKIT_ROOT=$AP_TOOLKIT"
ExecStart="$AP_NODE" "--env-file-if-exists=$AP_SOURCE/.env" "$AP_SOURCE/server.mjs"
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload
sudo systemctl enable --now "$AP_UNIT"
fi
既存の Linux ホスト network guard がある場合、初回の手動再起動後に新しい Node ホスト PID へ再登録し、元の制限値を保持してください。ソースチャネル登録前に行うと、更新器が guard を認識できます。既存の隔離手順に従い、socket マウントの削除やポリシー緩和で回避しないでください。
このサービスの start/stop だけを許可し、sudo 規則を検証して起動後、登録をプレビュー・適用します。規則ファイルが既にある場合は管理者が統合し、上書きしないでください。ホスト network guard には別途審査済みの再登録権限が必要で、下のサービス権限だけでは付与されません。
AP_USER="$(id -un)"
AP_SYSTEMCTL="$(command -v systemctl)"
AP_RULE="$(mktemp)"
printf '%s ALL=(root) NOPASSWD: %s start %s, %s stop %s\n' \
"$AP_USER" "$AP_SYSTEMCTL" "$AP_UNIT" "$AP_SYSTEMCTL" "$AP_UNIT" > "$AP_RULE"
sudo visudo -cf "$AP_RULE"
if sudo test -e /etc/sudoers.d/agenticpentest-updater; then
cat "$AP_RULE"
sudo visudo -f /etc/sudoers.d/agenticpentest-updater
else
sudo install -m 0440 "$AP_RULE" /etc/sudoers.d/agenticpentest-updater
fi
rm -- "$AP_RULE"
sudo systemctl start "$AP_UNIT"
systemctl is-active "$AP_UNIT"
curl -fsS "$AP_ORIGIN/api/auth"
cd "$AP_SOURCE"
python3 scripts/setup-platform-updater.py source --source-root "$AP_SOURCE" --unit "$AP_UNIT" --data-dir "$AP_DATA" --origin "$AP_ORIGIN"
python3 scripts/setup-platform-updater.py source --source-root "$AP_SOURCE" --unit "$AP_UNIT" --data-dir "$AP_DATA" --origin "$AP_ORIGIN" --apply
✅ 次回以降の画面更新と確認
- 実際のチーム管理者が システム設定 → バージョン更新 → 更新を確認 を開き、ホスト接続を確認します。個人ワークスペースに切り替えても管理者権限は得られません。
- プラットフォームを更新 を選び、管理者の現在のパスワードを入力して確認します。確認操作だけではインストールされません。確認済みの公式コミットと適切なアーキテクチャのイメージが選ばれます。
- ダウンロード、バックアップ、再起動、検証の進捗とログを確認します。ページ再読み込みやサービスの中断でも進捗を保持し、成功後は画面へ自動復帰します。失敗時はロールバックします。
- バージョン、コミット、既存記録を確認し、DB/鍵のバックアップと検証済み復元イメージを保持します。本プロジェクトの対象キャッシュ・旧イメージだけを整理し、実行中イメージと一つの検証済み復元イメージを残します。
自動更新は Linux Compose、Linux/macOS 単独 Docker、クリーンな Linux Git + systemd に対応します。Codespaces、アーカイブのみ、ネイティブ Windows/macOS ソースは手動です。接続不能時は SSH、固定ホスト鍵、権限、アドレスを確認し、未公開イメージは Actions 完了を待ちます。ボリュームは削除しないでください。更新前にツール導入を終了してください。導入タスクはサーバー再起動後に継続しません。
✨ 主な機能
Docker イメージは MCP に対応しています。クライアント設定と権限については MCP 接続ガイド を参照してください。
| モジュール | 実装済みの機能 |
|---|---|
| ワークスペースとチーム | ローカルログイン、初回管理者作成、管理者・操作員・閲覧者の権限、招待、参加時メッセージ、パスワード管理。個人データの分離とチーム共有スペース。 |
| ダッシュボード | 資産・タスク・Agent・検出事項の集計、P0–P4 優先度、候補/確認済みの状態、条件を適用した詳細画面への移動。 |
| 資産管理 | CSV/TXT/JSON のインポートテンプレート、ネットワーク/ID・認証情報/データ/チャネル/人物の資産分類、同一対象の統合、タスクと証拠の関連付け、ソースコード登録、検索とページ切り替え。 |
| 資産マップ | 既存結果からポート・サービス・アドレス・検出事項を表示。マインドマップ/ツリー/スター、ドラッグ、ズーム、ミニマップ、全画面、資産一覧、一括折りたたみ、ユーザーとスペース別の表示・配色設定保存。 |
| 計画とタスク | Agent・ワークフロー選択、クイック/完全モード、適用チェックの判定、並列キュー、ツール選択理由、リアルタイムログ、手順詳細、結果保存。中断・再開、アーカイブ、ごみ箱。 |
| Agent 管理 | Leader 1 体と専門 Agent 11 体、独自 Agent、プロンプトの編集・既定値復元・LLM 翻訳、モデルの一括設定、ツールとワークフローの関連付け。 |
| LLM 設定 | OpenAI Chat Completions/Responses、Anthropic Messages、Gemini。カスタム Base URL、任意のユーザー認証付き HTTP(S) プロキシ、接続テスト、モデル取得・手動指定。SystemOne は判定テスト専用で、文章による計画生成には使用できません。 |
| ツール管理 | 分類・検索・ページ切り替え、ファイル登録と ZIP 更新、出典・実行環境、引数編集とプレビュー。手動の可用性確認、実行アダプター、依存ホスト。必要な実行環境は別途準備します。 |
| クラウドとハイブリッド資産 | AWS/GCP/Azure と Alibaba Cloud 中国・国際サイト、公式リージョン選択、読み取り専用評価、ハイブリッド関連分析。公式資料に基づく分類と元のサービス・型・意味を保持し、検索・分類フィルター・件数変更(既定 10 件)に対応。実アカウントは未検証です。 |
| 脅威モデリング | STRIDE の構成図とデータフローを編集し、資産・版履歴・リスクを管理。LLM の提案はユーザーによる明示的な採用が必要です。検証計画の下書き作成、JSON・Markdown・HTML 出力に対応。 |
| C2 サーバー | SSH/SFTP ホスト、プロキシ・踏み台、タブ付き端末、バックグラウンド接続の復元、接続・コマンド履歴、非公開/共有 Markdown ノート、グループ・タグ、ポートと IP 所在情報。 |
| リスナーとセッション | サーバー・OS・ポートの選択、開始・停止・キャンセル、リアルタイムの状態とログ、サービス一覧。設定済みアダプターに対応する逆接続プリセットと WebShell。 |
| エンゲージメント | 対象範囲、実施期間、許可/禁止技術、連絡先、中止条件。実行詳細付きタイムライン、結果フィルター、検出事項への変換。 |
| 実行制御 | ポリシー、実行予算、検証カード、承認、証拠、ロールバック結果。完全チェーンには AP_CHAIN_EXECUTION=on、準備済みの実行ノード、エンゲージメントのルールが必要です。 |
| PoC/Exploit と再検証 | 元の検出事項を必須で関連付け、モデル・言語を選択し、LLM で要件を改善。エディターで編集・保存・エクスポートし、独立した実行ノードで再検証します。AI 生成コードはレビューが必要で、そのまま動作する保証はありません。 |
| 検出事項とレポート | 絞り込み、確認、再検証の追跡。ペネトレーション、セキュリティ評価、監査、ブラックボックス、ホワイトボックス、MITRE ATT&CK の 6 テンプレート、多言語 Markdown/HTML、プレビュー、30 日のアーカイブ、7 日のごみ箱、一括操作。 |
| システム設定と表示 | タスク・SSH・転送上限、認証付き HTTP(S) プロキシ、DB 出力と確認付き保守。登録済みホストチャネルから管理者が進捗・バックアップ・復元付きで更新。7 言語と深浅テーマ。 |
| 開発者 MCP | stdio と Streamable HTTP、型付きツール 36 個、認証情報ごとの権限・スペース・有効期限・失効、OAuth PKCE、監査、冪等な更新、リソース参照、カーソル付きログ。 |
AgenticPenTestは認可確認と法的通知を表示します。管理者はシステム設定から通知を管理できます。
🚦 オープンソース機能比較
🟢 実装済み · 🔴 未実装 · — 公開文書で未確認。未確認は非対応という意味ではありません。
| 機能 | AgenticPenTest | ARTEX | PentAGI | PentestGPT | Strix | Faraday |
|---|---|---|---|---|---|---|
| LLM Agent 調整と実際のツール実行 | 🟢 | 🟢 | 🟢 | 🟢 | 🟢 | — |
| Web 資産・検出事項管理 | 🟢 | 🟢 | — | — | — | 🟢 |
| 編集可能な STRIDE アーキテクチャ | 🟢 | — | — | — | — | — |
| AWS / GCP / Azure / Alibaba の読み取り専用資産収集 | 🟢 | — | — | — | — | — |
| ワークスペース権限付き MCP サーバー:stdio + Streamable HTTP | 🟢 | — | — | — | — | — |
| Docker セルフホスト | 🟢 | 🟢 | 🟢 | 🟢 | 🟢 | 🟢 |
| 管理者のドメイン/CIDR 範囲とカーネル通信分離 | 🟢 | — | — | — | — | — |
| ベクトル・グラフによるタスク間意味検索メモリ | 🔴 | — | 🟢 | — | — | — |
| HTTP インターセプトプロキシ | 🔴 | — | — | — | 🟢 | — |
| HTTP トラフィック記録とリクエスト再実行 | 🔴 | 🟢 | — | — | — | — |
| ScopeSentry 資産同期 | 🔴 | 🟢 | — | — | — | — |
| 外部スキャナーレポートの専用インポート連携 | 🔴 | — | — | — | — | 🟢 |
MCP の行はワークスペース権限付きの開発者向けサーバーを指し、外部 MCP クライアントやコーディング Agent Skill だけの対応とは区別しています。
🖼️ 画面プレビュー
🧭 使い方
- 個人またはチームスペースを選び、LLM 接続を設定・テストして Agent にモデルを割り当てます。
- 必要なツールをインストールして手動で可用性を確認し、資産や対象のソースコードを追加・インポートします。
- 計画またはタスクを作成し、Agent、ワークフロー、クイック/完全モードを選んで実行します。選択したモードで必要なエンゲージメント設定とアクション承認を行います。
- 手順とログを確認し、検出事項と未検証項目をレビューします。必要に応じて中断・再開し、レポートを生成します。同じデータに MCP からもアクセスできます。
🔌 MCP 連携
MCP クライアントは Web UI と同じデータ、アクセス制御、永続タスクキューを使用します。36 個のツールで資産、観測、Agent、計画、タスク、ログ、検出事項、レポートを操作できます。
- システム設定 → 開発者と MCP で認証情報を作成し、権限、許可する個人/チームスペース、既定のスペースを選択します。有効期間は 1~90 日、既定は 30 日です。トークンは一度だけ表示されるため、保存してください。
- Streamable HTTP:現在の作業台の URL に
/mcpを付け、Authorization: Bearer <developer-credential>を送信します。任意のヘッダーX-Workspace-Mode: personalまたはteamで許可済みのスペースを選択できます。認可コードと S256 PKCE を使う OAuth にも対応します。 - stdio:クライアント側に Node.js ≥ 22.19 と、依存関係をインストール済み(
npm ci)のソースディレクトリが必要です。ブリッジは既存の作業台に接続し、別のデータベースを作成しません。
⚙️ stdio クライアントの設定例
{
"mcpServers": {
"agenticpentest": {
"command": "node",
"args": [
"<project-directory>/scripts/mcp-stdio.mjs"
],
"env": {
"AP_MCP_URL": "https://workbench.example/mcp",
"AP_MCP_TOKEN": "<developer-credential>",
"AP_MCP_WORKSPACE": "personal"
}
}
}
}
例のパス、必要に応じて Node.js のコマンド、トークンを自分の環境に合わせて置き換えます。AP_MCP_URL は利用するインスタンス、AP_MCP_WORKSPACE はその認証情報で許可された personal または team を指定します。設定形式はクライアントによって異なります。
操作に必要な権限を付与してください。トークンの権限でアカウントの役割を昇格したり、許可されたスペースを広げたりすることはできません。
| 操作 | 必要な権限 |
|---|---|
| 資産・観測の参照 | assets:read |
| 資産のインポート・編集 | assets:write |
| Agent・モデル・ツール一覧の参照 | agents:read |
| Agent の変更 | agents:write と管理者の役割 |
| 計画・タスク・進捗・ログの参照 | tasks:read |
| Agent の起動・タスクの実行 | tasks:execute とオペレーターまたは管理者の役割 |
| 検出事項・レポート・テンプレートの参照 | reports:read |
| レポートの生成・アーカイブ | reports:write |
基本的な呼び出し順序:
capabilities_list、agents_list、models_list、tools_listで利用可能な機能と設定を確認します。実行する Agent は有効化し、モデルと利用可能なツールを関連付けておく必要があります。assets_importで対象資産をインポートします。この操作だけではスキャンは始まりません。jobs_createは既定で下書きを作成します。設定を確認後にjobs_startを呼び出すか、作成時に明示的にstartNow: trueを指定します。jobs_getで進捗を確認します。jobs_logsは最初にafter: 0を渡し、返されたnextCursorを次のafterに指定します。findings_list、observations_listでタスクまたは資産別の結果を確認できます。reports_generateでレポートを保存し、reports_getで Markdown または HTML を取得します。
書き込みツールには idempotencyKey が必須です。同じ操作を再試行するときは同じキーと入力を使い、重複書き込みを防ぎます。別の操作には新しいキーを使用してください。クライアント切断後もタスクは継続するため、停止する場合は明示的に中断・キャンセルします。保存済みの結果は保持されます。
v1.0.1 以降、ライセンスは不要です。チーム管理者がシステム設定 → ネットワーク制限を開き、現在のパスワードで確認します。許可された CIDR とドメインを設定してください。0.0.0.0/0 は IPv4、::/0 は IPv6 の対象を許可します。特殊用途アドレスの除外は維持されます。*.example.com はすべての階層のサブドメインに一致しますが、example.com 自体は含みません。必要ならルートドメインを別途追加します。 ネットワーク範囲と実行環境のガイド
🏗️ コード構成
%%{init: {'flowchart': {'wrappingWidth': 560}}}%%
flowchart TB
FRONT["`フロントエンド<br/>ブラウザー UI · Vue / Element Plus / xterm.js<br/>開発者クライアント · MCP stdio ブリッジ`"]
BACK["`バックエンド<br/>Node.js HTTP / Streamable HTTP MCP<br/>認証 / ワークスペース権限 / 業務サービス`"]
AGENT["`Agent の調整<br/>プロセス内キュー · Leader + 専門 Agent<br/>割り当てた LLM · 計画 / 判断 / キャンセル`"]
TOOLS["`ツール実行<br/>登録済みアダプター · HTTP / DNS / TLS / ネイティブ / アップロードツール<br/>管理者の対象範囲 + ホスト分離 · 読み取り専用クラウド SDK`"]
DATA["`データ保存<br/>SQLite WAL · 空間別の資産 / 検出事項 / タスクログ<br/>暗号化した認証情報 · 証拠 / レポート / アップロード資料`"]
FRONT --> BACK --> AGENT --> TOOLS --> DATA
🔄 既定 Agent のライフサイクル
既定 Agent はタスクの参加者であり、常駐プロセスではありません。必要かつ有効な専門 Agent のみが、割り当てられたモデルと役割プロンプトを使用します。判断は観測された証拠に基づき、完了状態はツールの終了コードだけでなく網羅性で決まります。
flowchart TB
TASK["タスクと担当 Agent"]
CHECK["範囲、入力、Agent の有効状態、モデル割り当てを確認"]
QUEUE["同時実行上限に従って待機"]
PLAN["Leader / 必要な専門 Agent が各自の LLM で計画"]
SELECT["適用可能な登録済みツールを選択"]
RUN["ポリシーを確認し、実行して証拠を保存"]
MORE{"網羅性と予算の範囲内で続行?"}
END["終了:完了 / 一部完了 / 失敗"]
STOP["中断・キャンセル:既存の証拠を保持"]
RESUME["再開:再確認し成功したチェックポイントを再利用"]
TASK --> CHECK --> QUEUE --> PLAN --> SELECT --> RUN --> MORE
MORE -->|はい| SELECT
MORE -->|いいえ| END
RUN -.-> STOP
STOP -->|再開| RESUME --> CHECK
Dockerfile コンテナーイメージのビルド
compose.yaml 公開済みイメージのデプロイ
src/ バックエンド、アダプター、MCP サービス
frontend/ コンポーネントのソース
public/ UI と生成済みファイル
i18n/ 翻訳ソース
config/ Agent、ツール定義、互換性設定
scripts/ ビルド、インストール、stdio ブリッジ
tests/ 機能テストと隔離環境
docs/ ガイド、多言語 README、画面例
deploy/ コンテナー実行用スクリプト
🤝 ドキュメントと貢献
Git にデータベース、LLM/SSH キー、過去のテスト履歴は含まれません。初期化は既存データを保持します。SQLite と data/master.key を Git の外にバックアップしてください。
不具合・機能提案は Issue フォーム、コード変更は PR テンプレートを使用してください。再現手順、環境、検証結果を記載し、認証情報や対象の非公開情報を除いてください。
✉️ お問い合わせ
v1.0.1 以降、ライセンスは不要です。チーム管理者がシステム設定 → ネットワーク制限を開き、現在のパスワードで確認します。許可された CIDR とドメインを設定してください。0.0.0.0/0 は IPv4、::/0 は IPv6 の対象を許可します。特殊用途アドレスの除外は維持されます。*.example.com はすべての階層のサブドメインに一致しますが、example.com 自体は含みません。必要ならルートドメインを別途追加します。
- チーム管理者でログインし、システム設定 → ネットワーク制限 → テスト範囲を編集を開きます。個人空間のみの管理者権限では変更できません。
- 承認済み CIDR を 1 行ずつ入力します。例は 10.20.0.0/16 です。保存すると一覧が置き換わるため、必要な内部範囲を残してください。
- app.example.com または *.example.com のように、各行にドメインを入力します。URL や先頭以外のワイルドカードは拒否されます。すべての IPv4 対象が許可されている場合は CIDR 欄に 0.0.0.0/0 を入力できます。特殊用途アドレスの除外は維持されます。
- 現在の管理者パスワードを入力して保存します。現在の DNS アドレスをすべて確認します。検証に失敗しても元の範囲は変わりません。
- 範囲内の資産でタスクを開始し、進捗とログを確認します。範囲外のタスクや MCP は拒否されます。子プロセスには利用可能な Linux ホスト分離も必要です。
- 新しい DNS アドレスが範囲外になった場合は確認して再保存します。範囲変更でタスクが中断しても結果は保持されます。内部制限の復元で許可一覧を初期化します。
[email protected] — 24 時間以内に返信します。
ビジネス提携・スポンサー支援:[email protected] へお問い合わせください。継続的な開発・保守へのご支援を歓迎します。
⚖️ 利用とライセンス
テスト前に対象所有者の許可を取得し、その範囲と現地法令を守ってください。違法な利用は禁止し、利用に伴う結果は利用者が負います。AgenticPenTestには許可確認画面と法的通知が表示されます。
本プロジェクトのコードは MIT ライセンスです。サードパーティーツールには各自のライセンスが適用されます。
☁️ Codespaces で体験
Codespace を作成し、環境確認・依存関係のインストール・初期化を待ち、ポート 8765 を開きます。承認に関する説明を読み、管理者を作成してください。既定の認証情報はありません。再起動してもデータとインストール ID は保持されます。
転送ポートは Private のままにしてください。開発体験用であり、常時ホスティングではありません。作者のネットワークには依存せず、ツールやクラウド SDK は自動取得しません。信頼できるホスト guard がなければ、隔離が必要なツールとリモート実行はライセンスがあってもブロックされます。画面、資産管理、手動の脅威モデリング、レポートを体験できます。LLM・クラウドは自身で設定してください。実際の GitHub Codespace で、自動インストール・ビルド・初期化、非公開 HTTPS 転送、10 秒の承認文書閲覧、管理者作成、資産インポート、再読み込み時の状態保持、タスクと MCP の公開宛先ブロック、ループバック HTTP、隔離サービスがない場合のツール実行拒否を検証済みです。初回はアプリの前に GitHub のポート信頼確認が表示される場合があります。実際のクラウドアカウントと外部 LLM サービスは未検証です。使用後は停止または削除してください。削除でローカルデータは失われ、GitHub の利用枠と料金が適用されます。
python3 .devcontainer/lifecycle.py setup
python3 .devcontainer/lifecycle.py start
既定の Codespace での実行対応
| 実行方法 | 状態 |
|---|---|
| Agent 調整と組み込み HTTP / DNS / TLS 検査 | 到達可能な内部対象に対応。自身の LLM 設定が必要 |
| Nmap・アップロードした実行ファイル | 信頼できるホスト guard がないためブロック |
| リモートコマンド・SSH 端末・リスナー・WebShell | 同等のリモート隔離がないためブロック |
検証したコンテナには systemd システムマネージャーがなく、cgroup は読み取り専用で、名前空間の作成も拒否されます。systemd パッケージの追加だけでは guard を有効にできません。前提条件は reports/codespaces/environment.json、対応状況は システム設定 → ネットワーク制限 に表示します。内部とは Codespace から到達可能な範囲で、127.0.0.1 は Codespace 自体です。完全なツール実行には登録・カーネル検証済み guard を備えた Linux に導入してください。Docker socket の公開やポリシー無効化で代替しないでください。
⭐ Star の推移
💜 スポンサー
愛発電(Afdian)で AgenticPenTest の継続的な開発と保守をご支援いただけます。




