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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
Mahoraga-Webapp-Defender — AIを活用したリアクティブなWebサイト防御システム。攻撃を検出し、分析し、LLMエージェントを使用してソースコードをリアルタイムで自律的に修正します。 | Kitploit
ツール/GitHubGitHub/ageofalgorithms/mahoraga-webapp-defender
防御ツール脆弱性分析ウェブセキュリティCTF脅威インテリジェンス侵入検知インシデントレスポンスAPIセキュリティAIセキュリティ

人気

すべて見る →

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

すべてのツールを探索

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

すべてのツールを見る →
共有
GitHubageofalgorithms/mahoraga-webapp-defender

Mahoraga-Webapp-Defender

AIを活用したリアクティブなWebサイト防御システム。攻撃を検出し、分析し、LLMエージェントを使用してソースコードをリアルタイムで自律的に修正します。

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

Mahoraga Webapp Defender

AIを搭載したリアクティブなWebアプリ防御システム。AIによるハッキングにもリアルタイムで耐えられるよう設計されています。

GitHub stars License: MIT PRs Welcome

目次

  • Mahoraga Webapp Defender
    • 目次
    • はじめに
    • 標的Webサイト
    • Mahoraga Defender アーキテクチャ
      • 二重環境
      • エージェントパイプライン
    • 起動方法
      • 準備
      • 完全なDefender vs. Attacker実験
    • ダッシュボード
      • ログ
      • エージェント
      • パイプライン
      • パッチ
    • LLM設定
    • 技術スタック
    • 謝辞

はじめに

Mahoraga Defenderは、リアクティブかつ攻撃者タイプに依存しないリアルタイム防御システムのPoCです。核となる仕組みは、攻撃者を欺いて無害な偽環境(「シャドウ」環境)に対して発見や攻撃を行わせ、その攻撃をログに記録することです。そして、LLMエージェントがログを分析し、検出されたエクスプロイトの詳細を別のLLMエージェントに引き渡して脆弱性を修正し、パッチを展開します。

このシステムは完全自動化を目指し、APIコストの最適化も考慮して設計されています。トラフィックログ、エージェントの活動、パッチパイプラインを容易に監視できるGUIと、デプロイするエージェント数を制御する機能も備えています。

標的Webサイト

標的(被害者)Webサイトは、crAPI(Completely Ridiculous API)のフォークです。これはOWASPがAPIセキュリティテスト教育用に作成した、意図的に脆弱性を含んだWebアプリケーションです。crAPIは、OWASP Top 10 API脆弱性をカバーするマイクロサービスで構成された車両所有者向けプラットフォームを模擬しています。防御システムは、通常ユーザーと敵対的ユーザーのセッションを明確に区別し、防御中も通常ユーザーのユーザー体験が低下しないように設計されています。

当フォーク(crapi-fork/)では以下を追加しています:

  • 攻撃者検出のためのハニーポット(偽の認証情報、エンドポイント、トークン)の埋め込み
  • 攻撃対象全体に埋め込まれた合計12個のCTFスタイルのフラグ
  • 安全な攻撃者観察のための、同一サービスと独立したデータベースを持つ並行「シャドウ」スタック
  • 不審なセッションをプロダクションからシャドウへ透過的にリダイレクトする、nginx Luaベースのセッションルーティング

crapi-original/に元のコピーを保持しており、実験間で環境をリセットできます。

Mahoraga Defender アーキテクチャ

二重環境

  • Prod(プロダクション): nginxリバースプロキシ(ポート8888)を介して実際のユーザーにサービスを提供
  • Shadow(シャドウ): 独立したデータベースを持つ同一のデコイスタック。攻撃者からのトラフィックを透過的にリダイレクトされ受け取る

エージェントパイプライン

  • Orchestrator(オーケストレータ): パイプライン全体を調整。エージェントのライフサイクル、パッチ/レビューキュー、チケット状態、デプロイ、クラッシュリカバリを管理。実行時にfixer/reviewerエージェントの数を動的に増減可能。
  • Watcher(ウォッチャー)(ルールベース): プロダクショントラフィックログを監視し、パターンマッチング(ブルートフォース、インジェクション、列挙、ハニーポットアクセスなど)を用いてセッションの脅威レベルをスコアリング。脅威スコアが閾値を超えると、リダイレクトアクションをトリガーする。
  • Shadow Analyzer(シャドウアナライザー)(LLMエージェント): 設定可能な間隔でシャドウ環境のトラフィックログを読み取り、成功したエクスプロイトを検出。ログエントリの重複排除、攻撃パターンの検出を行い、確認されたエクスプロイトを修正キューに投入。
  • Fixer(フィクサー)(LLMエージェント): エクスプロイトレポートを受け取り、関連するソースコードを読み取り、crapi-fork/内で直接パッチを適用。crapi-fork/のみにアクセス制限されたサンドボックス化されたbash環境で動作。
  • Reviewer(レビュアー)(LLMエージェント): パッチの正確性、影響範囲、セキュリティを検証。承認されたパッチはデプロイアクションをトリガーし、却下されたパッチはフィードバックとともにfixerに差し戻される。

デプロイ時、Pythonサービスはgunicornを介してホットリロード(即時)され、Java/Goサービスはdocker compose up -d --buildで再ビルドされます。

なぜTesterエージェントがないのか? 専用のユーザーテストエージェントと別のテスト環境を追加することを検討しましたが、システムを軽量に保つためにどちらも削除しました。

起動方法

準備

  • condaまたはPython仮想環境の使用を推奨(例:conda create -n XYZ python=3.13、その後conda activate XYZ)。
  • 依存関係をインストール:pip install -r requirements.txt

完全なDefender vs. Attacker実験

  1. プロジェクトルートディレクトリで./start.shを実行 — crapi-original/からcrapi-fork/のソースコードをリセットし、すべてのサービスを再ビルド、フラグとハニーポットを配置。
  2. Defenderを起動:python3 -m harness.main --app-url http://localhost:8888 -v。
  3. localhost:8888でWebサイトへのペネトレーションテストを開始(チャレンジ説明はlocalhost:8888/challenge)。AIエージェントを使用してペネトレーションテストを行う場合、内部のDockerプロセスにアクセスさせてはなりません(不正行為とみなされます)。
  4. ペネトレーションテスト中は、localhost:3000のDefenderダッシュボードでリアルタイムログ、エージェントの動作、パッチ、キャプチャされたフラグなどを監視。
  5. セッション終了後、docker compose down -vを実行して、このプロジェクトのために起動したDockerコンテナとデータベースを削除。

ダッシュボード

ダッシュボード:http://localhost:3000

すべてのタブにグローバルなエージェントステータスバーが表示され、エージェントの健全性(アクティブ/ハング/アイドル/エラー)とスケーリングコントロールを確認できます。

ログ

プロダクション/シャドウのリクエストログをリアルタイムに分割表示。重要度に応じた色分けとトラフィックグループ化

エージェント

エージェントごとのアクティビティフィード(システムプロンプト、ツール呼び出し、LLMモデルラベル)

パイプライン

カンバンボード:検出 → 修正中 → レビュー中 → デプロイ済み。サイズ変更可能な詳細パネル

パッチ

コード差分、変更ファイル、ロールバックコマンド、パッチごとのタイムライン

LLM設定

システムはOpenAI互換の任意のAPIを使用可能。モデルはconfig/llm.yamlで設定:

root@kitploit:~
# Shadow Analyzer — シャドウログを読み取りエクスプロイトを検出(ツール呼び出しなし)
shadow_analyzer:
  provider: gemini
  model: gemini-2.5-flash
  api_key_env: GEMINI_API_KEY # harness/.env で定義
  pricing:
    input_per_million: 0.30
    output_per_million: 2.50

# Fixer — ソースコードにパッチ(ツール呼び出しエージェント)
fixer:
  provider: gemini
  model: gemini-3-flash-preview
  api_key_env: GEMINI_API_KEY # harness/.env で定義
  pricing:
    input_per_million: 0.50
    output_per_million: 3.00

# Reviewer — パッチを検証(ツール呼び出しエージェント)
reviewer:
  provider: gemini
  model: gemini-3-flash-preview
  api_key_env: GEMINI_API_KEY # harness/.env で定義
  pricing:
    input_per_million: 0.50
    output_per_million: 3.00

プロバイダを切り替えるには、providerとmodelを変更し、対応するAPIキーをharness/.envに設定します:

対応プロバイダ:OpenAI、Gemini、Anthropic、Groq、Together、Ollama、Mistral、DeepSeek、Fireworks、xAI、Perplexity、OpenRouter、Zhipu。 カスタムプロバイダを追加するには、YAMLのprovidersセクションにベースURLを追加します。

root@kitploit:~
providers:
  openai: https://api.openai.com/v1
  gemini: https://generativelanguage.googleapis.com/v1beta/openai/
  anthropic: https://api.anthropic.com/v1/
  groq: https://api.groq.com/openai/v1
  ... # 必要に応じて追加

注意:3エージェント以上を同時に動作させるのに十分なレート制限を持つAPIプロバイダは少数です。GoogleのGeminiはその一つです。

技術スタック

  • LLM: OpenAI互換の任意のAPI(デフォルトではエージェントにGemini 3 Flash Preview、アナライザーにGemini 2.5 Flash)
  • 対象アプリ: 修正版crAPI(Python/Django、Java/Spring Boot、Go、MongoDB、PostgreSQL)
  • ルーティング: Luaスクリプティング付きnginxによる透過的セッションリダイレクト
  • スコアリング: RedisをバックエンドとしたFastAPI制御プレーンによる脅威スコアリング
  • ダッシュボード: React + Tailwind CSS、WebSocketによるライブ更新でFastAPIから提供
  • オーケストレーション: Python asyncioとキューを用いたエージェント調整

謝辞

ペネトレーションテストに協力してくれた d3lta05(LinkedIn)と [aleemladha](https://github.com/aleemladha)に特に感謝します。

ツールをダウンロード