
DNS Reaperは、サブドメインテイクオーバーを検出するためのツールの一つですが、精度、速度、そして搭載シグネチャの数に重点を置いています!
1秒間に約50のサブドメインをスキャンし、それぞれを50以上のテイクオーバーシグネチャでテストできます。 つまり、ほとんどの組織は10秒以内にDNS資産全体をスキャンできます。
簡単に始められるよう、DNSゾーンファイルやカンマ区切りのリスト、ProjectDiscoveryから取得した最大100のサブドメインをスキャンするWeb版も用意しました。
チェックしてみてください:dnsreaper web
もちろんCLIツールの方がはるかにEPICで、速度も速いです。

ファイル内のドメインリスト、またはコマンドラインで単一のドメインを指定して実行できます。DNS Reaperはすべてのシグネチャでドメインをスキャンし、CSVファイルを生成します。
DNSレコードを自動で取得させて実行できます!そうです、認証情報を指定して実行すれば、すべてのドメイン設定を迅速かつ簡単にテストできます。DNS ReaperはDNSプロバイダに接続して全レコードを取得し、テストします。
現在、AWS Route53、Cloudflare、Azureをサポートしています。独自プロバイダの追加方法については、こちらのドキュメントを参照してください。
Punk SecurityはDevSecOps企業であり、DNS Reaperは最新のセキュリティベストプラクティスに基づいています。
パイプラインでDNS Reaperを実行し、プロビジョニング予定のドメインリストを入力として与えると、テイクオーバーが可能と検出された場合に0以外の終了コードを返します。テイクオーバーが発生する前に予防できます!
DNS Reaperを実行するには、Dockerイメージを使用するか、Python 3.11で実行します。
検出結果は出力に表示され、詳細はローカルの「results.csv」ファイルに保存されます。JSON出力もオプションとしてサポートしています。
docker run punksecurity/dnsreaper --help
[!IMPORTANT] dnsReaperがサポートする最小Pythonバージョンは3.9ですが、3.11を推奨します。サポートが終了していない安定版Pythonバージョンのサポートを維持するよう努めています。 サポートが終了したPythonバージョンに影響する問題については、サポートやプルリクエストを受け付けません。詳細はPythonバージョンのステータスを参照してください。
ローカルで実行する場合、依存関係の競合を避けるために仮想環境(venv)の使用を推奨します。 手順はこちらを参照してください。
pip install -r requirements.txt
python main.py --help
AWSアカウントをスキャン:
docker run punksecurity/dnsreaper aws --aws-access-key-id <key> --aws-access-key-secret <secret>
詳細は、AWSプロバイダのドキュメントを参照してください。
ファイルからすべてのドメインをスキャン:
docker run -it --rm -v $(pwd):/etc/dnsreaper punksecurity/dnsreaper file --filename /etc/dnsreaper/<filename>
単一ドメインをスキャン:
docker run -it --rm punksecurity/dnsreaper single --domain <domain>
単一ドメインをスキャンし、標準出力に出力:
stderr出力をリダイレクトするか、>を使用してstdout出力を保存する必要があります。
docker run -it --rm punksecurity/dnsreaper single --domain <domain> --out stdout --out-format=json > output
____ __ _____ _ __
/ __ \__ ______ / /__/ ___/___ _______ _______(_) /___ __
/ /_/ / / / / __ \/ //_/\__ \/ _ \/ ___/ / / / ___/ / __/ / / /
/ ____/ /_/ / / / / ,< ___/ / __/ /__/ /_/ / / / / /_/ /_/ /
/_/ \__,_/_/ /_/_/|_|/____/\___/\___/\__,_/_/ /_/\__/\__, /
PRESENTS /____/
DNS Reaper ☠️
すべてのDNSレコードをスキャンしてサブドメインテイクオーバーを検出!
使い方:
main.py provider [options]
出力:
検出結果は画面に表示され(デフォルトでは)results.csvに保存されます
ヘルプ:
main.py --help
プロバイダ:
> aws - AWS Route53から取得した複数ドメインをスキャン
> azure - Azure DNSサービスから取得した複数ドメインをスキャン
> bind - DNS BINDゾーンファイルまたは複数ファイルへのパスからドメインを読み込み
> cloudflare - Cloudflareから取得した複数ドメインをスキャン
> digitalocean - Digital Oceanから取得した複数ドメインをスキャン
> file - ファイル(またはフォルダ)からドメインを読み込み(1行1ドメイン)
> godaddy - GoDaddyから取得した複数ドメインをスキャン
> googlecloud - Google Cloudから取得した複数ドメインをスキャン。GOOGLE_APPLICATION_CREDENTIALS環境変数が必要。
> projectdiscovery - ProjectDiscoveryから取得した複数ドメインをスキャン
> securitytrails - Security Trailsから取得した複数ドメインをスキャン
> single - コマンドラインで指定した単一ドメインをスキャン
> zonetransfer - DNSゾーン転送でレコードを取得し複数ドメインをスキャン
位置引数:
{aws,azure,bind,cloudflare,digitalocean,file,godaddy,googlecloud,projectdiscovery,securitytrails,single,zonetransfer}
オプション:
-h, --help このヘルプメッセージを表示して終了
--out OUT 出力ファイル(デフォルト:results)- 'stdout'を使用してストリーム出力
--out-format {csv,json}
--resolver RESOLVER カスタムDNSリゾルバを指定
--parallelism PARALLELISM
並列テストするドメイン数 - 高すぎるとDNS結果が異常になる可能性があります(デフォルト:30)
--disable-probable 可能性のある条件をチェックしない
--enable-unlikely より多くの条件をチェックするが、高い誤検出率
--signature SIGNATURE このシグネチャのみでスキャン(複数指定可)
--exclude-signature EXCLUDE_SIGNATURE
このシグネチャをスキャンしない(複数指定可)
--pipeline 検出時に0以外の終了コードを返す(パイプライン失敗用)
-v, --verbose -vで詳細表示、-vvでさらに詳細
--nocolour 色付きテキストをオフにする
aws:
AWS Route53から取得した複数ドメインをスキャン
--aws-access-key-id AWS_ACCESS_KEY_ID
任意
--aws-access-key-secret AWS_ACCESS_KEY_SECRET
任意
--aws-session-token AWS_SESSION_TOKEN
任意
azure:
Azure DNSサービスから取得した複数ドメインをスキャン
--az-subscription-id AZ_SUBSCRIPTION_ID
必須
--az-tenant-id AZ_TENANT_ID
必須
--az-client-id AZ_CLIENT_ID
必須
--az-client-secret AZ_CLIENT_SECRET
必須
bind:
DNS BINDゾーンファイルまたは複数ファイルへのパスからドメインを読み込み
--bind-zone-file BIND_ZONE_FILE
必須
cloudflare:
Cloudflareから取得した複数ドメインをスキャン
--cloudflare-token CLOUDFLARE_TOKEN
必須
digitalocean:
Digital Oceanから取得した複数ドメインをスキャン
--do-api-key DO_API_KEY
必須
--do-domains DO_DOMAINS
任意
file:
ファイル(またはフォルダ)からドメインを読み込み(1行1ドメイン)
--filename FILENAME 必須
projectdiscovery:
ProjectDiscoveryから取得した複数ドメインをスキャン
--pd-api-key PD_API_KEY
必須
--pd-domains PD_DOMAINS
必須
godaddy:
GoDaddyから取得した複数ドメインをスキャン
--gd-api-key GD_API_KEY
必須
--gd-api-secret GD_API_SECRET
必須
--gd-domains GD_DOMAINS
任意
googlecloud:
Google Cloudから取得した複数ドメインをスキャン。GOOGLE_APPLICATION_CREDENTIALS環境変数が必要。
--project-id PROJECT_ID
必須
projectdiscovery:
ProjectDiscoveryから取得した複数ドメインをスキャン
--pd-api-key PD_API_KEY
必須
--pd-domains PD_DOMAINS
必須
securitytrails:
Security Trailsから取得した複数ドメインをスキャン
--st-api-key ST_API_KEY
必須
--st-domains ST_DOMAINS
必須
googlecloud:
Google Cloudから取得した複数ドメインをスキャン
--project-id PROJECT_ID
必須
projectdiscovery:
ProjectDiscoveryから取得した複数ドメインをスキャン
--pd-api-key PD_API_KEY
必須
--pd-domains PD_DOMAINS
任意
securitytrails:
Security Trailsから取得した複数ドメインをスキャン
--st-api-key ST_API_KEY
必須
--st-domains ST_DOMAINS
任意
single:
コマンドラインで指定した単一ドメインをスキャン
--domain DOMAIN 必須
zonetransfer:
DNSゾーン転送でレコードを取得し複数ドメインをスキャン
--zonetransfer-nameserver ZONETRANSFER_NAMESERVER
必須
--zonetransfer-domain ZONETRANSFER_DOMAIN
必須