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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
s3dns — DNSリクエストを解決し、CNAMEチェーンを追跡し、偵察中に潜在的なサブドメイン乗っ取りをフラグ付けすることで、露出したクラウドストレージバケット(AWS S3、GCP、Azure)を検出するパッシブDNSサーバー。 | Kitploit
ツール/GitHubGitHub/olizimmermann/s3dns
OSINT (オープンソースインテリジェンス)偵察脆弱性分析情報収集ペネトレーションテストクラウドセキュリティサブドメイン列挙DNS分析
GitHubolizimmermann/s3dns

s3dns

DNSリクエストを解決し、CNAMEチェーンを追跡し、偵察中に潜在的なサブドメイン乗っ取りをフラグ付けすることで、露出したクラウドストレージバケット(AWS S3、GCP、Azure)を検出するパッシブDNSサーバー。

リポジトリを見る
129134日前Kitploit レビュー済み

人気

すべて見る →

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

すべてのツールを探索

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

すべてのツールを見る →
共有
ウェブサイト

S3DNS

s3dns は、DNS リクエストを解決し、CNAME を追跡し、既知のバケット URL パターンと照合することで、クラウドストレージバケット(AWS S3、Google Cloud Storage、Azure Blob)を特定する軽量 DNS サーバーです。

これは、DNS トラフィック解析中に露出したクラウドバケットを検出したい ペネトレーションテスター、バグバウンティハンター、クラウドセキュリティアナリスト にとって便利なツールです。

S3DNS が偵察セッションの時間を節約してくれたなら、ぜひ ⭐️ を付けてください。プロジェクトの発見に役立ちます。



🆕 更新 2026/03/06

  • TCP/53 サポート — S3DNS は UDP と TCP の両方のポート 53 で待機するようになりました。切り捨てられた UDP 応答後に TCP で再試行するクライアントは正しく処理され、クエリは TCP 経由で上流に転送されて完全な応答が取得されます。
  • より大きな DNS バッファ — UDP 受信バッファを 512 バイトから 4096 バイトに増やしました。クライアントからの EDNS0 オプションはそのまま上流リゾルバに渡されます。
  • 応答キャッシュ — UDP および TCP パスで共有される TTL ベースの LRU キャッシュ。アクティブな偵察セッション中に上流の負荷とレイテンシを削減します。CACHE_SIZE で設定可能(デフォルト: 1000 エントリ、0 に設定すると無効)。
  • レート制限 — クライアント IP ごとのリクエストレート制限による不正使用の防止。RATE_LIMIT で設定可能(デフォルト: 100 req/s、0 に設定すると無効)。
  • サブドメインテイクオーバー検出 — ドメインがクラウドストレージパターンに一致するが NXDOMAIN を返す場合、S3DNS はそれを 可能性のあるドメインテイクオーバー としてフラグ付けします。これは、攻撃者が登録可能な未請求のバケットを指す、ぶら下がった DNS レコードを示しています。
  • IPv6 IP 範囲チェック — AAAA レコードも解決され、既知のクラウドストレージ IP 範囲に対してチェックされるようになりました。AWS IPv6 S3 プレフィックスが IPv4 範囲と共に読み込まれます。
  • CNAME 深度制限 — 再帰的な CNAME チェーンの追跡を制限(デフォルト: 10 ホップ)し、細工された循環レコードによる無限ループを防止します。max_cname_depth パラメータで設定可能。

更新 2025/08/19

  • JSON ファイルとしてオフラインの AWS IP 範囲を追加。
  • JSON ファイルとしてオフラインの Azure Storage IP 範囲を追加。
  • 以下の設定を使用して、いずれかのサービスの IP 範囲チェックを無効にするオプションを追加:
    • AZURE_IP_RANGES=false または AWS_IP_RANGES=false(デフォルトは true)。
  • regex_patterns とハードコードされたパターンを patterns フォルダに YAML ファイルとして移動。独自のパターンを追加可能。
    • 正規表現パターンは regex_ で始まる必要があります。
  • さらに多くのクラウドプロバイダを追加:
    • IBM Cloud Object Storage
    • Oracle Object Storage
    • Alibaba OSS
    • Backblaze B2
    • Linode Object Storage
    • Scaleway Object Storage
    • Vultr Object Storage
    • Cloudflare R2

更新 2025/06/21

  • AWS GovCloud サポートを追加。

更新 2025/04/16

  • 正規表現パターンを更新。
  • 出力を見やすく更新(CNAME の元のドメイン、クライアント IP、IP 範囲インジケータを表示)。
  • AWS からの IP 範囲の自動ダウンロード — それらもチェックするようになりました!
  • 独自の IP 範囲を追加するオプション(手動でクラス内のパターンまたは IP 範囲を調整)。

更新 2025/04/14

  • Google Cloud Storage および Azure Blob Storage バケットの正規表現サポートを追加。

🚀 特徴

  • DNS サーバとしてポート 53(UDP および TCP)で動作
  • DNS リクエスト内の潜在的なクラウドストレージバケットを検出:
    • AWS S3(仮想ホスト形式とパス形式、GovCloud を含む)
    • GCP バケット
    • Azure Blob コンテナ
    • DigitalOcean Spaces、Wasabi、IBM COS、Oracle Object Storage、Alibaba OSS、Backblaze B2、Linode、Scaleway、Vultr、Cloudflare R2
  • CNAME チェーン を再帰的に追跡(設定可能な深度制限)して、隠れたクラウドバケットリンクを捕捉
  • 潜在的なサブドメインテイクオーバー をフラグ付け — NXDOMAIN を返すクラウドストレージパターン
  • 解決された IP(A および AAAA の両方)を既知の AWS S3 および Azure Storage の IP 範囲 と照合
  • TTL 対応応答キャッシュ により、偵察中のレイテンシと上流の負荷を削減
  • IP ごとのレート制限 で不正使用を防止
  • すべての結果をコンソールとファイルに記録
  • コンテナ対応

⚙️ 動作の仕組み

S3DNS は DNS クエリのために ポート 53 (UDP および TCP) で待機します。各リクエストに対して:

  1. 要求されたドメインを抽出
  2. 応答キャッシュを確認 — 有効なキャッシュ応答があれば即座に返却
  3. 実際の DNS リゾルバ(例: 1.1.1.1)にリクエストを転送 — UDP クライアントには UDP 経由、TCP クライアントには TCP 経由
  4. 有効な DNS 応答をクライアントに返却

並行して:

  • クラウドストレージバケットパターン(正規表現およびハードコードされたホスト名マッチング)をチェック
  • 解決された IP を既知の AWS S3 および Azure Storage の範囲(IPv4 および IPv6)と照合
  • CNAME チェーン を設定された深度まで再帰的に追跡
  • マッチしたパターンで NXDOMAIN ヒット を可能なサブドメインテイクオーバー候補としてフラグ付け
  • すべての結果をコンソールと s3dns.log に記録

⚡ 偵察中にこれを DNS として使用すると、ツールやブラウザが解決するすべてのドメインについて、クラウドバケットとテイクオーバー候補を受動的に表面化します。


🧱 前提条件

次のいずれかのみ必要です:

  • Python 3.11+
  • Docker(任意だが推奨)

🔧 インストール

Python でローカル実行する場合のみ必要

リポジトリのクローン

root@kitploit:~
git clone https://github.com/olizimmermann/s3dns.git
cd s3dns

依存関係のインストール

(仮想環境の使用を推奨)

root@kitploit:~
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt

🧪 使用方法

Python で実行

ポート 53 には昇格した権限が必要です:

root@kitploit:~
sudo python s3dns.py

sudo がモジュールが見つからないと訴える場合は、sudo venv/bin/python s3dns.py を試してください

  • 自分でイメージをビルドする場合は、一貫性のために Docker Hub のバージョンと同じタグを付けてください: docker build -t ozimmermann/s3dns:latest .

Docker を使用

S3DNS を始める最も簡単な方法です。

root@kitploit:~
docker pull ozimmermann/s3dns:latest
docker run --rm -p 53:53/udp -p 53:53/tcp \
  -v "./bucket_findings/:/app/buckets/" \
  --name "s3dns" \
  ozimmermann/s3dns:latest

Docker でビルドして実行

root@kitploit:~
docker build -t ozimmermann/s3dns:latest .
root@kitploit:~
docker run --rm -p 53:53/udp -p 53:53/tcp \
  -v "./bucket_findings/:/app/buckets/" \
  --name "s3dns" \
  ozimmermann/s3dns:latest

結果は次の場所に保存されます:

  • ターミナル、および/または
  • ./bucket_findings/

トラブルシューティング

分析を行うマシンと同じマシンで S3DNS を使用する場合、--network host フラグを設定すると役立つ場合があります:

root@kitploit:~
docker run --rm -p 53:53/udp -p 53:53/tcp \
  -v "./bucket_findings/:/app/buckets/" \
  --network host \
  --name "s3dns" \
  ozimmermann/s3dns:latest

ポート 53 には昇格した権限が必要なため、一部のユーザー(Mac ユーザーなど)は sudo が必要になる場合があります:

root@kitploit:~
sudo docker run --rm -p 53:53/udp -p 53:53/tcp \
  -v "./bucket_findings/:/app/buckets/" \
  --name "s3dns" \
  ozimmermann/s3dns:latest

🌐 偵察での S3DNS の使用

システムまたはツールの DNS リゾルバ を S3DNS インスタンスに設定します。

ブラウジングやターゲットのファジング中に、S3DNS はすべてのドメインを分析し、次のいずれかに解決されるかどうかを通知します:

  • AWS S3 バケット
  • GCP バケット
  • Azure Blob コンテナ
  • その他 13 のサポートされているクラウドストレージプロバイダ

CNAME を追跡 するため、ドメインが cdn.example.com を指し、その先がクラウドバケットを指している場合も検出します。

また、潜在的なサブドメインテイクオーバー もフラグ付けします。ドメインがクラウドストレージパターンに一致するが、ターゲットが存在しない(NXDOMAIN)場合、ぶら下がったレコードがテイクオーバー候補として強調表示されます。

サイトを解析中に受動的に使用して、アクティブなプロービングなしで露出したバケットやテイクオーバーの機会を発見 します。


⚙️ 設定

コマンドラインフラグ、環境変数、または s3dns.py の変更により動作を調整できます。

すべてのオプションの優先順位は コマンドラインフラグ > 環境変数 > インタラクティブプロンプト/デフォルト です。フラグなしで実行すると、以前とまったく同じように動作します。

コマンドラインフラグ

python s3dns.py -h を実行して全リストを表示:

例:

root@kitploit:~
sudo python s3dns.py -l 0.0.0.0 -u 1.1.1.1 --rate-limit 200 --no-azure-ip-ranges

環境変数

⚠️ Azure IP 範囲に関する注意

Microsoft は Azure Blob Storage の IP 範囲を明示的に命名していないため、S3DNS は 公開されているすべての Azure Storage IP アドレス を使用します。これにより誤検出が発生する可能性があります。問題が発生した場合は、このチェックを無効にすることを検討してください:

root@kitploit:~
AZURE_IP_RANGES=false

カスタムパターンの追加

patterns/ ディレクトリに YAML ファイルを追加します。regex_ で始まるファイルは正規表現パターンとして扱われ、それ以外は部分文字列マッチとして扱われます。


デバッグモード

Python:

root@kitploit:~
sudo su
export DEBUG=true
python s3dns.py

Docker:

root@kitploit:~
docker run --rm -p 53:53/udp -p 53:53/tcp \
  -v "./bucket_findings/:/app/buckets/" \
  -e "DEBUG=true" \
  --name "s3dns" \
  ozimmermann/s3dns:latest

Docker で複数の環境変数を設定する:

root@kitploit:~
docker run --rm -p 53:53/udp -p 53:53/tcp \
  -v "./bucket_findings/:/app/buckets/" \
  -e "LOCAL_DNS_SERVER_IP=0.0.0.0" \
  -e "REAL_DNS_SERVER_IP=1.1.1.1" \
  -e "RATE_LIMIT=200" \
  -e "CACHE_SIZE=2000" \
  --name "s3dns" \
  ozimmermann/s3dns:latest

サンプル出力

Sample Output Docker


コントリビューション

コントリビューションを歓迎します — 新しいクラウドプロバイダパターン、バグ修正、改良など。ガイドラインについては CONTRIBUTING.md を参照してください。

パターンファイルは patterns/ にあります。新しいプロバイダのサポートを追加するには、YAML エントリを追加するだけで — Python の知識は不要です。


📄 ライセンス

MIT ライセンス — 自由に使用、改善、共有できます。


⚠️ 免責事項

責任を持って使用してください。所有している か、明示的な許可 を得たドメインのみをスキャンしてください。

無許可のアクセスやプロービングは違法となる可能性があります。

ツールをダウンロード
フラグ対応する環境変数説明
-h, --help–ヘルプを表示して終了
--version–バージョンを表示して終了
-d, --debugDEBUG詳細なデバッグ出力を有効化
-l, --listen IPLOCAL_DNS_SERVER_IP待機するローカルインターフェース
-u, --upstream IPREAL_DNS_SERVER_IP転送先の上流 DNS リゾルバ
-b, --bucket-file PATHBUCKET_FILE発見されたバケットドメインを書き込むパス
--aws-ip-ranges / --no-aws-ip-rangesAWS_IP_RANGESAWS S3 IP 範囲チェックの切り替え
--azure-ip-ranges / --no-azure-ip-rangesAZURE_IP_RANGESAzure Storage IP 範囲チェックの切り替え
--rate-limit NRATE_LIMITクライアント IP あたりの最大 DNS リクエスト/秒(0 = 無効)
--cache-size NCACHE_SIZE最大キャッシュ DNS 応答数(0 = 無効)
--max-cname-depth N–追跡する最大 CNAME チェーン深度(デフォルト: 10)
変数デフォルト説明
DEBUGfalse詳細なデバッグ出力を有効化
AWS_IP_RANGEStrueAWS S3 IP 範囲チェックを有効化
AZURE_IP_RANGEStrueAzure Storage IP 範囲チェックを有効化
REAL_DNS_SERVER_IP1.1.1.1クエリを転送する上流 DNS リゾルバ
LOCAL_DNS_SERVER_IP0.0.0.0待機するローカルインターフェース
BUCKET_FILEbuckets.txt発見されたバケットドメインを書き込むパス
RATE_LIMIT100クライアント IP あたりの最大 DNS リクエスト/秒(0 = 無効)
CACHE_SIZE1000最大キャッシュ DNS 応答数(0 = 無効)