Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
mongobleed-detector — MongoBleedエクスプロイトの検出スクリプト | Kitploit
ツール/GitHubGitHub/neo23x0/mongobleed-detector
脆弱性分析スクリプトと自動化フォレンジックデジタルフォレンジック脅威インテリジェンスインシデントレスポンスデータベースセキュリティログ分析
GitHubneo23x0/mongobleed-detector

mongobleed-detector

MongoBleedエクスプロイトの検出スクリプト

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

人気

すべて見る →

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

すべてのツールを探索

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

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

MongoBleed Detector

CVE-2025-14847 (MongoBleed) のためのオフラインMongoDB分析ツール

MongoDBデータを分析し、複数の検出モジュールを使用してCVE-2025-14847の悪用の可能性を特定するスタンドアロンLinuxコマンドラインツールです。

目次

  • 概要
  • 検出モジュール
  • 要件
  • インストール
  • 2つの動作モード
  • モード1:ローカル分析
  • モード2:リモート収集
  • コマンドラインオプション
  • 確信度レベル
  • 出力例
  • テスト
  • 注意点と制限事項
  • 参考文献とクレジット
  • ライセンス

概要

MongoBleed (CVE-2025-14847) は、MongoDBのzlib伸長処理におけるメモリ開示の脆弱性であり、攻撃者が認証なしでサーバーメモリから資格情報、セッショントークン、PIIなどの機密データを直接抽出することを可能にします。

このツールは、インシデント対応担当者が複数の証拠ソースを使用して悪用の試みを検出できるようにします。

  • モジュールA: ログ相関(接続イベント、メタデータの欠如)
  • モジュールB1: アサートカウント分析(serverStatus.asserts スナップショット)
  • モジュールB2: FTDCスパイク検出(diagnostic.data 時系列)

主な機能

  • マルチモジュール検出 - 複数のデータソースを相関させて高い確信度を実現
  • オフライン&エージェントレス - 分析中にネットワーク接続不要
  • 自動検出 - 利用可能なデータソースを自動的に検出
  • リモート収集 - SSH経由で複数のホストからデータを収集
  • 複合スコアリング - HIGH / MEDIUM / LOW の確信度判定
  • ストリーミング処理 - 巨大なログファイルも効率的に処理

検出モジュール

モジュールA:ログ相関

MongoDB JSONログを分析して悪用パターンを検出します。

イベントIDタイプ説明
22943Connection Acceptedクライアントが接続したときに記録されます
51800Client Metadataクライアントがドライバー/アプリケーション情報を送信したときに記録されます
22944Connection Closedクライアントが切断したときに記録されます

重要な洞察: 正規のMongoDBドライバーは常にクライアントメタデータを送信します。MongoBleedの悪用は接続し、メモリを抽出し、切断しますが、メタデータを送信しません。

モジュールB1:アサートカウント

db.serverStatus().asserts のスナップショットを分析して、asserts.userカウンターの異常なパターンを検出します。

  • 複数スナップショット: 経時的なスナップショットを比較し、ユーザーアサーションの突然のスパイクを検出
  • 単一スナップショットヒューリスティック: スナップショットが1つしかない場合、asserts.userを他のアサーションタイプと比較して怪しいパターンを検出します。ユーザーアサートが異常に高い(比率≥250倍)または他のすべてのタイプがゼロの場合、疑わしいとフラグします(MEDIUM確信度)

注意: 累積カウンターは誤検出を引き起こす可能性があります。最良の結果を得るには、FTDC(モジュールB2)と組み合わせて使用してください。

モジュールB2:FTDCスパイク検出

MongoDBのFull-Time Diagnostic Data Capture(FTDC)ファイルを分析して、アサーションカウンターの時間局所的なスパイクを検出します。FTDCは定期的にserverStatusをサンプリングするため、攻撃の正確なタイミングを特定できます。

要件

シェルスクリプト (mongobleed-detector.sh)

  • Linux または macOS(bash 4+)
  • jq - JSONプロセッサ
  • awk(gawk推奨)
  • gzip - 圧縮ログ対応

Pythonコンポーネント(オプション、FTDCデコード用)

  • Python 3.8+
  • pymongo - FTDCファイルデコード用

リモートスキャナー (mongobleed-remote.py)

  • Python 3.8+
  • ネイティブSSHクライアント(ssh、scpコマンド)
  • 基本動作に追加のPythonパッケージは不要

依存関係のインストール

# シェルスクリプトの依存関係
# Debian/Ubuntu
apt-get install jq gawk gzip

# RHEL/CentOS/Fedora
dnf install jq gawk gzip

# macOS
brew install jq gawk

# Python依存関係(FTDCデコード用)
pip install -r requirements.txt

インストール

# リポジトリのクローン
git clone https://github.com/your-org/mongobleed-detector.git
cd mongobleed-detector

# スクリプトに実行権限を付与
chmod +x mongobleed-detector.sh
chmod +x mongobleed-remote.py
chmod +x ftdc-decode.py

# Python依存関係のインストール(オプション、FTDC対応用)
pip install -r requirements.txt

2つの動作モード

モード1:ローカル分析

MongoDBホストから手動で収集したデータを分析します。

モード2:リモート収集

SSH経由で複数のホストから自動的にデータを収集し、ローカルで分析します。

モード1:ローカル分析

ステップ1:データの収集

MongoDBホストからデータを収集し、次の構造に整理します。

./collected-data/
├── logs/                    # MongoDB JSONログ
│   ├── mongod.log
│   ├── mongod.log.1
│   └── mongod.log.2.gz
├── assert-counts/           # serverStatus().asserts スナップショット
│   ├── asserts-2025-01-01.json
│   └── asserts-2025-01-02.json
└── ftdc-files/              # FTDC diagnostic.data の内容
    ├── metrics.2025-01-02T10-00-00Z-00000
    └── metrics.interim

ログの収集

# リモートホストからコピー
scp user@mongohost:/var/log/mongodb/mongod.log* ./collected-data/logs/

アサートカウントの収集

MongoDBホストで次のコマンドを実行します(mongoshアクセスが必要)。

mongosh --quiet --eval 'JSON.stringify({
  timestamp: new Date().toISOString(),
  hostname: db.hostInfo().system.hostname,
  asserts: db.serverStatus().asserts,
  uptime: db.serverStatus().uptime
})' > asserts-$(date +%Y%m%d-%H%M%S).json

結果のJSONファイルを ./collected-data/assert-counts/ にコピーします。

ヒント: このコマンドを複数回(例:1時間ごと)実行すると、ベースラインを確立してスパイクを検出できます。

FTDCファイルの収集

FTDCファイルは次の場所にあります。

  • mongod: <storage.dbPath>/diagnostic.data/(通常は /var/lib/mongodb/diagnostic.data/)
  • mongos: systemLog.path から派生(例:/var/log/mongodb/mongos.diagnostic.data/)
# FTDCファイルのコピー(sudoが必要な場合あり)
sudo cp /var/lib/mongodb/diagnostic.data/metrics.* ./collected-data/ftdc-files/

ステップ2:分析の実行

# 自動検出モード - 利用可能なすべてのデータを分析
./mongobleed-detector.sh --data-dir ./collected-data/

# カスタム閾値
./mongobleed-detector.sh --data-dir ./collected-data/ \
    -t 1440 \              # 24時間のルックバック
    -c 50 \                # 接続閾値を下げる
    --spike-threshold 50   # スパイク閾値を下げる

レガシーモード(ログのみ)

後方互換性のため、ログを直接分析することもできます。

# デフォルトパスをスキャン
./mongobleed-detector.sh

# 特定のログファイルをスキャン
./mongobleed-detector.sh -p /path/to/logs/*.json

# フォレンジックモード(複数ホストを分析)
./mongobleed-detector.sh --forensic-dir /evidence/

モード2:リモート収集

複数のホストから自動的にデータを収集し、分析します。

# ホストファイルを作成
cat > hosts.txt << EOF
mongo-prod-01.example.com
mongo-prod-02.example.com
mongo-staging.example.com
EOF

# 収集と分析
./mongobleed-remote.py --hosts-file hosts.txt --user admin --output-dir ./collected-data/

リモートスキャナーオプション

# 特定のSSH鍵を使用
./mongobleed-remote.py --hosts-file hosts.txt --user admin --key ~/.ssh/mongodb_key

# 並列実行
./mongobleed-remote.py --hosts-file hosts.txt --user admin --parallel 10

# FTDC収集をスキップ(高速)
./mongobleed-remote.py --hosts-file hosts.txt --user admin --skip-ftdc

# 収集のみ、後で分析
./mongobleed-remote.py --hosts-file hosts.txt --user admin --collect-only

# SSHオプションを渡す(例:ジャンプホスト)
./mongobleed-remote.py --hosts-file hosts.txt --user admin \
    -o "ProxyJump=bastion.example.com"

# 特権ファイルアクセスにsudoを使用(FTDCファイルは制限されていることが多い)
./mongobleed-remote.py --hosts-file hosts.txt --user admin --sudo

# 接続問題のトラブルシューティング用デバッグモード
./mongobleed-remote.py --hosts-file hosts.txt --user admin --debug

FTDC権限に関する注意: /var/lib/mongodb/diagnostic.data/ 内のFTDCファイルは通常 mongodb ユーザーが所有しており、一般ユーザーは読み取れません。「FTDC Permission Issues」の警告が表示された場合は、--sudo フラグを使用してください。この場合、リモートユーザーにパスワードなしのsudoアクセス(sudoersのNOPASSWD)が必要です。

収集されるデータ

データタイプソース保存先
ログ/var/log/mongodb/mongod.log*<output-dir>/<hostname>/logs/
アサートカウントmongosh コマンド<output-dir>/<hostname>/assert-counts/
FTDCファイル/var/lib/mongodb/diagnostic.data/metrics.*<output-dir>/<hostname>/ftdc-files/

コマンドラインオプション

mongobleed-detector.sh

オプション説明デフォルト
-d, --data-dir <path>収集データのあるディレクトリ(自動検出モード)-
-p, --path <glob>追加のログパス/グロブ(繰り返し可)-
-t, --time <minutes>ルックバックウィンドウ(分)4320(3日)
-c, --conn-threshold接続数の閾値100
-b, --burst-thresholdバーストレート閾値(毎分)400
-m, --metadata-rateメタデータレート閾値(0.0〜1.0)0.10
--spike-thresholdアサートスパイク閾値100
--user-ratio-threshold単一スナップショット検出用のユーザー/その他アサート比率250
--no-default-pathsデフォルトログパスをスキップfalse
--forensic-dir <path>サブディレクトリを個別のホストとして分析-

mongobleed-remote.py

ツールをダウンロード