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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
ツール/GitLabGitLab/reyjesusq/sentinel-mcp
防御ツールクラウドセキュリティ侵入検知インシデントレスポンスAIセキュリティ異常検知
GitLabreyjesusq/sentinel-mcp

sentinel-mcp

自律型AI搭載のサイバー防御システム(MCP、Gemini 2.0 Flash、Dynatraceオブザーバビリティ、MongoDBを使用)。Google Cloud Hackathonへの提出作品。

リポジトリを見る
73ヶ月前未レビュー

人気

すべて見る →

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

すべてのツールを探索

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

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

SentinelMCP — AI 搭載サイバー防御システム

Google Cloud Hackathon 提出作品 — 自律的な脅威検出と対処を Google Cloud Agent Builder (Vertex AI Agent) が調整し、Gemini 2.0 Flash、Model Context Protocol (MCP)、Dynatrace 可観測性を活用。

Agent Builder Gemini 2.0 Flash Dynatrace MongoDB MCP Protocol


問題点

セキュリティチームは、一般的なインシデントに対して 30 分の MTTD と 4 時間の MTTR を経験しています。人間のアナリストが攻撃を検出し、ファイアウォールルールを作成してデプロイする頃には、被害は発生しています。

解決策

SentinelMCP は、Google Cloud Agent Builder エージェント を導入することで MTTD を 30 秒未満、MTTR を 30 秒未満 に短縮します。このエージェントは Dynatrace の異常検知 Webhook を受信し、Gemini 2.0 Flash で分析し、MCP を介して実際の防御ツールを呼び出します — アラートを出すだけでなく、実際のインフラストラクチャに作用します。

root@kitploit:~
Dynatrace webhook  →  Agent Builder receives alert  →  Gemini reasons  →  MCP tools execute  →  Threat neutralized
       1 s                        2 s                      8 s                  15 s                  25 s total

その結果、以前は人間のアナリストと 4 時間を要していたインシデントライフサイクルが、30 秒未満で自律的に完了し、MongoDB に完全な監査証跡、Jaeger に分散トレースが記録されます。


アーキテクチャ

root@kitploit:~
┌──────────────────────────────────────────────────────────────────────┐
│                         サンドボックス環境                              │
│                                                                      │
│   ┌─────────────┐   100–1000 req/s   ┌──────────────────────────┐   │
│   │  attacker   │ ──────────────────►│    victim-service        │   │
│   │ (DDoS/SQLi) │                    │    port 8080             │   │
│   └─────────────┘                    │    /admin/* control API  │   │
│                                      └────────────┬─────────────┘   │
└───────────────────────────────────────────────────│──────────────────┘
                                                    │ metrics + anomaly webhook
                   ┌────────────────────────────────▼─────────────────┐
                   │         Dynatrace Mock  (anomaly engine)          │
                   │  Threat Risk Score → fires POST /alerts/simulate  │
                   └────────────────────────┬─────────────────────────┘
                                            │ webhook
          ┌─────────────────────────────────▼──────────────────────────┐
          │          Google Cloud Agent Builder  (Vertex AI Agent)      │
          │  ┌──────────────────────────────────────────────────────┐  │
          │  │  Gemini 2.0 Flash  ──  reasons over threat context   │  │
          │  │  Tool manifest  ──  dynamically fetched from MCP     │  │
          │  │  HITL gate  ──  halts if confidence < threshold      │  │
          │  └──────────────────────────────────────────────────────┘  │
          └──────────────┬─────────────────────────┬───────────────────┘
                         │ REST calls                │ audit write
         ┌───────────────▼──────┐      ┌────────────▼──────────┐
         │  MCP Server  :8001   │      │  MongoDB 7.0  Atlas   │
         │  11 real tools       │      │  incidents + traces   │
         └───────────┬──────────┘      └───────────────────────┘
                     │ acts on live infra
         ┌───────────▼──────────┐
         │  FastAPI  :8000      │
         │  victim-service :8080│
         └──────────────────────┘

                   ┌──────────────────────────────────────────────────┐
                   │              可観測性スタック                       │
                   │  OTel Collector ──► Jaeger  (分散トレース)          │
                   │  Prometheus ──────────────► Grafana               │
                   └──────────────────────────────────────────────────┘

主要な設計原則: グレースフルデグラデーション + ヒューマンインザループ (HITL)。Agent Builder エージェントは、十分な信頼度で判断できない場合には安全に停止し、オペレーターに制御を戻します — 重要なインフラストラクチャに対して推測による判断は決して行いません。


ライブデモ — Google Cloud Run

3 つのサービスすべてが Google Cloud Run にデプロイされ、稼働中です:

本番環境に対してライブ攻撃を実行:

root@kitploit:~
.\attack.production.ps1 status   # すべてのサービスが正常であることを確認
.\attack.production.ps1 ddos     # DDoS — Gemini が IP をブロック + レート制限
.\attack.production.ps1 sql      # SQL インジェクション — Gemini が WAF を有効化
.\attack.production.ps1 brute    # ブルートフォース — Gemini が送信元 IP をブロック
.\attack.production.ps1 stop     # 防御をリセット

攻撃コンテナはローカルで実行され、Cloud Run 上の victim-service を HTTPS 経由でターゲットにします。コマンドセンターのダッシュボードで、検出 → 分析 → 無力化の全サイクルをリアルタイムで確認できます。


Google Cloud Agent Builder の使用方法

Google Cloud Agent Builder (Vertex AI ReasoningEngine) は、SentinelMCP の中央オーケストレーターです。実装は sentinel_mcp/agent/agent_builder.py にあります。

SentinelAgent は vertexai.preview.reasoning_engines.Queryable を継承しています — これは公式の Agent Builder プログラムインターフェースであり、ローカルで実行することも、単一のコマンドで管理された Agent Builder サービスにデプロイすることもできます。

主要コード — sentinel_mcp/agent/agent_builder.py:

root@kitploit:~
class SentinelAgent(reasoning_engines.Queryable):

    def set_up(self):
        # MCP tools as Vertex AI FunctionDeclarations — Gemini selects at runtime
        mcp_tools = Tool(function_declarations=[
            FunctionDeclaration(name="block_ip_address", ...),
            FunctionDeclaration(name="activate_waf", ...),
            FunctionDeclaration(name="rate_limit_requests", ...),
            FunctionDeclaration(name="scale_service", ...),
            FunctionDeclaration(name="collect_forensic_logs", ...),
            FunctionDeclaration(name="analyze_attack_pattern", ...),
        ])
        self._model = GenerativeModel("gemini-2.0-flash-001", tools=[mcp_tools])
        self._chat = self._model.start_chat()

    def query(self, *, incident: dict) -> dict:
        # Entry point — Agent Builder calls this for every Dynatrace webhook
        response = self._chat.send_message(threat_prompt(incident))
        tool_calls = [{"name": p.function_call.name, "args": dict(p.function_call.args)}
                      for p in response.candidates[0].content.parts if p.function_call]
        return {"engine": "agent_builder", "tool_calls": tool_calls, ...}

Google Cloud Agent Builder にデプロイ:

root@kitploit:~
# ローカルでテスト (google_ai_studio バックエンドを使用すれば GCP は不要)
python scripts/deploy_agent_builder.py --test-only

# 管理された Agent Builder エンドポイントにデプロイ
python scripts/deploy_agent_builder.py --project my-gcp-project

Agent Builder をアクティブバックエンドとして設定:

root@kitploit:~
# .env
GEMINI_BACKEND=agent_builder
GOOGLE_CLOUD_PROJECT=my-gcp-project
VERTEX_LOCATION=us-central1

Dynatrace と MCP の使用方法

Dynatrace

SentinelMCP は、Dynatrace の可観測性を 3 つの層で統合しています:

  1. OpenTelemetry パイプライン — sentinel-otel-collector は FastAPI コアからのスパンとメトリクスを取り込み、Dynatrace Mock エンドポイント (OTLP/HTTP :14318) に転送します。すべてのインシデント、ツール実行、LLM 呼び出しは、完全な相関 ID でエンドツーエンドにトレースされます。

  2. 異常検知エンジンと自動トリガー — dynatrace-mock はバックグラウンドループを実行し、http_requests_total を監視して 脅威リスクスコア (dynatrace_mock_sentinel_risk_score、0–10) を計算し、スコアが重大しきい値を超えると自動的に POST /api/v1/alerts/simulate/{type} を SentinelMCP に送信します — これは本番の Dynatrace Davis 異常検知 Webhook の正確な動作を再現しています。

  3. Dynatrace メトリクスを利用した Grafana ダッシュボード — リスクスコアゲージとタイムラインは dynatrace_mock_sentinel_risk_score を直接使用しており、Dynatrace が異常をフラグした瞬間と SentinelMCP が無力化を達成した瞬間を正確に可視化できます。

MCP (Model Context Protocol)

Gemini エージェントは、ランタイムに防御機能を動的に発見します — ハードコードされたツールリストはなく、機能が変更されてもプロンプトの書き換えは不要です:

root@kitploit:~
GET /mcp/tools  →  11 個のツール記述子を返す  →  Gemini がツールを選択して呼び出し

各ツールには、ライブカタログで REAL または Audit-Only のラベルが付けられています。Gemini はこのフラグを読み取り、実際のインフラストラクチャで何が実行できるかを理解し、推論トレースですべてのツール選択を正当化します。新しい防御機能を追加するために、プロンプトエンジニアリングは一切不要です。

実際のインフラストラクチャに作用するツール:


クイックスタート

要件: Docker Desktop 24+、Google Cloud 認証情報または AI Studio API キー、約 3 GB のディスク、約 2 GB の RAM。

1 — スタックを起動

root@kitploit:~
docker compose up -d --build

初回実行時はベースイメージをダウンロードします (約 3 GB、5–10 分)。以降の実行は 1 分未満です。

2 — シミュレーションサンドボックスを起動

root@kitploit:~
cd simulacion
docker compose up -d victim-service
cd ..

3 — すべてが起動していることを確認

root@kitploit:~
docker compose ps
# 期待される出力: 8 個のサービスが running/healthy

curl http://localhost:8000/health
# 期待される出力: {"status": "healthy", "service": "SentinelMCP", ...}

4 — 攻撃を開始し、AI が防御するのを観察

root@kitploit:~
.\attack.ps1 ddos        # DDoS 攻撃 (デフォルト)
.\attack.ps1 sql         # SQL インジェクション
.\attack.ps1 brute       # ブルートフォース
.\attack.ps1 stop        # 攻撃停止 + 防御リセット
.\attack.ps1 status      # システム状態を確認

攻撃実行中にコマンドセンターを開きます:

root@kitploit:~
http://localhost:8000/dashboard

約 25 秒間での 4 つのフェーズを観察します:

  1. THREAT DETECTED — Dynatrace がアラートを発報
  2. DEFENDING — Gemini が MCP ツールカタログを読み取り、アクションを選択、推論を記録
  3. ツール実行 — IP ブロック、WAF 有効化、レート制限適用 (すべて実際に実行)
  4. NEUTRALIZED — MTTD と MTTR が完全な監査証跡とともに表示

5 — Google Cloud (Vertex AI) を設定

SentinelMCP は Gemini 上に構築されています。環境に合った認証方法を選択してください:

オプション A — Google AI Studio (最速のセットアップ):

root@kitploit:~
# .env を編集
GOOGLE_API_KEY=AIza...your_key_here
GEMINI_BACKEND=google_ai_studio

オプション B — Google Cloud 上の Vertex AI:

root@kitploit:~
gcloud auth application-default login
.\scripts\setup_gcloud.ps1   # プロジェクトを設定、SA キーを作成、.env を自動更新

その後、AI エンジンを再起動: docker compose restart api


すべてのインターフェース

本番環境 (Google Cloud Run)

ローカル (Docker Compose)


攻撃シナリオ


MCP ツールレジストリ (11 ツール)

root@kitploit:~
GET http://localhost:8001/mcp/tools

SentinelMCP はフェイルセーフ監査モードを採用しています。ターゲットのインフラストラクチャに到達できない場合、エージェントはパイプラインを壊さずに意図したアクションを記録し、グレースフルデグラデーションを保証します。Gemini はカタログ内の REAL / Audit-Only フラグを読み取り — 何を実行でき、何を推奨のみにとどめるべきかを正確に把握します。


プロジェクト構造

root@kitploit:~
sentinel_mcp/
├── api/              FastAPI コア — ルート、スキーマ、ダッシュボード UI
├── agent/            判断エンジン + LLM プロバイダー (Gemini 2.0 Flash、Vertex AI)
├── mcp_server/       MCP サーバー + 11 ツール実装
├── services/         インシデントサービス、修復オーケストレーター、脅威計算機
├── observability/    OTel / Dynatrace / SigNoz プロバイダー
└── core/             設定、ロギング、例外

simulacion/
├── victim-service/   /admin/* コントロールプレーンを備えた FastAPI ターゲットサービス
└── attacker/         Python 攻撃エンジン (DDoS / SQLi / ブルートフォース)

docker/
├── prometheus.yml    スクレイプ設定 (victim-service を 5 秒間隔)
└── grafana/          自動プロビジョニングされたダッシュボード — 6 パネルのインフラストラクチャ監視

技術スタック

ツールをダウンロード
ServiceURL
コマンドセンター (ダッシュボード)https://sentinel-api-62d3d66zda-uc.a.run.app/dashboard
Swagger API ドキュメントhttps://sentinel-api-62d3d66zda-uc.a.run.app/docs
ヘルスチェックhttps://sentinel-api-62d3d66zda-uc.a.run.app/health
MCP ツールカタログhttps://sentinel-mcp-62d3d66zda-uc.a.run.app/mcp/tools
被害者サービスhttps://victim-service-62d3d66zda-uc.a.run.app
責務実装
Webhook 受付SentinelAgent.query(incident=...) — Agent Builder が Dynatrace アラートのたびに呼び出し
ツール宣言6 つの MCP ツールが set_up() 内で Vertex AI FunctionDeclaration オブジェクトとして登録
推論Gemini 2.0 Flash が脅威コンテキスト + ツールカタログを読み取り、最小限のツールを選択し、自動的に呼び出し
HITL ゲートGemini がツール呼び出しを返さない場合 (信頼度 < しきい値)、escalate_to_humans=True が出力される
監査すべてのツール呼び出しが MongoDB Atlas に記録され、OTel スパンとして Jaeger にエクスポート
Tool機能
block_ip_addressPOST /admin/block_ip — 実行中のミドルウェアで攻撃元 IP をブロック
activate_wafPOST /admin/waf — 実行中のサービスで WAF ブロッキングモードを有効化
rate_limit_requestsPOST /admin/rate_limit — スライディングウィンドウレートリミッター、即時有効
scale_serviceソケット経由の Docker SDK — 負荷に応じて実際のレプリカコンテナを起動
rollbackPOST /admin/reset_defenses — 完全なインシデントライフサイクルを実演: 攻撃 → 防御 → 復旧
collect_forensic_logsインシデント後のレビューのために、実行中のコンテナから実際の証拠を収集
build_attack_timeline実行中のコンテナログから時系列のタイムラインを作成
analyze_attack_pattern実際のインシデントコンテキストデータを使用して攻撃タイプを分類
identify_iocs実際のインシデントファイルから実際の IP、ユーザーエージェント、ペイロードを抽出
URL表示内容
https://sentinel-api-62d3d66zda-uc.a.run.app/dashboardコマンドセンター — メインのデモ UI
https://sentinel-api-62d3d66zda-uc.a.run.app/docsSwagger — 対話型 API エクスプローラー
https://sentinel-api-62d3d66zda-uc.a.run.app/healthヘルスチェック
https://sentinel-api-62d3d66zda-uc.a.run.app/api/v1/incidentsインシデント履歴 (JSON)
https://sentinel-mcp-62d3d66zda-uc.a.run.app/mcp/toolsGemini が読み取るライブ MCP ツールカタログ
https://victim-service-62d3d66zda-uc.a.run.app被害者サービス (攻撃対象)
URL表示内容
http://localhost:8000/dashboardコマンドセンター — メインのデモ UI
http://localhost:8000/docsSwagger — 対話型 API エクスプローラー
http://localhost:8000/api/v1/incidentsインシデント履歴 (JSON)
http://localhost:8000/api/v1/incidents/statistics/summaryすべてのインシデントの MTTD / MTTR 平均
http://localhost:8001/mcp/toolsGemini が読み取るライブ MCP ツールカタログ
http://localhost:8080被害者サービス (攻撃対象)
http://localhost:14499Dynatrace Mock — ライブメトリクス + 異常検知エンジン
http://localhost:16686Jaeger — 分散トレース
http://localhost:9090Prometheus — 生メトリクス
http://localhost:3000Grafana — インフラストラクチャダッシュボード (admin / admin)
シナリオスクリプト動作
DDoS.\attack.ps1 ddos1000 req/s のフラッド; Gemini が IP をブロック + レート制限を有効化
SQL インジェクション.\attack.ps1 sqlペイロード検出; Gemini が WAF をブロッキングモードで有効化
ブルートフォース.\attack.ps1 bruteログイン試行の集中攻撃; Gemini が送信元 IP をブロック + WAF を有効化
自動モードダッシュボード 🎯 Auto ON45 秒から 90 秒ごとにランダム攻撃、完全自律応答
Toolカテゴリモード
analyze_attack_pattern分析REAL
identify_iocs分析REAL
block_ip_address防御REAL → victim-service
activate_waf防御REAL → victim-service
rate_limit_requests防御REAL → victim-service
scale_service防御REAL → Docker SDK
collect_forensic_logsフォレンジックREAL
build_attack_timelineフォレンジックREAL
patch_vulnerabilities修復Audit-Only
apply_hardening修復Audit-Only
rollback修復REAL → victim-service
層技術
エージェントオーケストレーターGoogle Cloud Agent Builder (Vertex AI Agent)
LLMGemini 2.0 Flash — google-genai SDK 経由
ツールプロトコルMCP (Model Context Protocol) — 11 の実際のツール
APIFastAPI + Uvicorn (Python 3.11)
データベースMongoDB 7.0 Atlas (Motor 非同期)
可観測性OpenTelemetry → Dynatrace
トレーシングJaeger
メトリクスPrometheus + Grafana
HTTP クライアントhttpx (非同期)
コンテナオーケストレーションDocker Compose v2