
DNS テイクオーバースキャナー
Subjack は Go で書かれた DNS テイクオーバースキャナーで、ドメインのリストを同時にスキャンし、乗っ取り可能なものを特定するために設計されています。Go の速度と効率性により、このツールは大量テストにおいて真価を発揮します。誤検知を排除するため、結果は手動で再確認することを推奨します。
Subjack は以下を検出します:
include: ディレクティブ内の期限切れドメインにより、メールスプーフィングが可能になるGo が必要です。
go install github.com/haccer/subjack@latest
subjack -w subdomains.txt -t 100 -timeout 30 -o results.txt -ssl
Subjack は標準入力からドメインを読み取ることができ、他のツールからの出力をパイプで渡すのに便利です:
subfinder -d example.com | subjack -ssl -o results.json
cat domains.txt | subjack -t 20 -o results.txt
-ns フラグを使用すると、subjack は 2 種類のネームサーバーテイクオーバーチェックを実行します:
期限切れ NS ドメイン:ドメインのネームサーバーのいずれかが期限切れで購入可能かどうかを確認します。期限切れのネームサーバーを登録した攻撃者は、そのドメインのすべての DNS を完全に制御できます。つまり、任意のレコードを任意の場所にポイントし、電子メールを傍受し、証明書を発行するなどが可能です。
宙ぶらりんの NS 委任:ドメインの NS レコードがクラウド DNS プロバイダーを指しているが、ホストゾーンが削除されている場合を検出します。Subjack は各ネームサーバーに SOA レコードを直接問い合わせます。すべてが SERVFAIL または REFUSED を返した場合、ゾーンは消滅しており、取得可能である可能性があります。対応プロバイダー:
ns-*.awsdns-*)ns-cloud-*.googledomains.com)ns*-*.azure-dns.*)ns*.digitalocean.com)ns*.vultr.com)ns*.linode.com)subjack -w subdomains.txt -ns -o results.json
-ar フラグを使用すると、subjack は A レコードを解決し、IP アドレスが実際にアクティブかどうかを確認します。企業がクラウドサーバーを終了したものの、DNS A レコードの削除を忘れた場合、IP はプロバイダーのプールに戻されます。攻撃者はそのプロバイダーで新しいインスタンスを起動し、同じ IP を取得することでサブドメインの制御を得ることができます。
Subjack は、可能な場合にクラウドプロバイダー(AWS、GCP、Azure、DigitalOcean、Linode、Vultr、Oracle)を特定し、適切なプラットフォームへのターゲットを容易にします。検出には ICMP ping(root 権限が必要)を使用し、TCP フォールバック(ポート 80/443)を備えています。
sudo subjack -w subdomains.txt -ar -o results.json
結果は STALE A RECORD としてフラグ付けされ、手動で確認する必要があります。応答しない IP が常に再利用可能であるとは限りません。
-axfr フラグを使用すると、subjack は DNS ゾーン転送(AXFR)を試み、ドメイン全体の DNS レコードを暴露する可能性があります。Subjack はドメインの公式ネームサーバーのみをテストするだけでなく、一般的なネームサーバーホスト名(ns1、dns-0、ns-backup など)もブルートフォースします。なぜなら、隠されたり忘れられたネームサーバーは、主要なものがロックダウンされた後もしばしば保護されていないままだからです。
subjack -d example.com -axfr -o results.json
subjack -w domains.txt -axfr -o results.json
結果は ZONE TRANSFER としてフラグ付けされ、脆弱なネームサーバーと暴露されたレコード数が表示されます。
-mail フラグを使用すると、subjack は 2 種類のメールベースのテイクオーバーベクターをチェックします:
SPF include テイクオーバー:SPF の TXT レコードを解析し、include: ドメインが期限切れで登録可能かどうかを確認します。含まれているドメインを登録した攻撃者は、SPF および DMARC をバイパスして、ターゲットとして完全に認証されたメールを送信できます。
MX レコードテイクオーバー:MX レコードのターゲットが期限切れで登録可能かどうかを確認します。メールサーバーを制御する攻撃者は、パスワードリセットや 2FA コードなど、すべての受信メールを傍受できます。
subjack -w domains.txt -mail -o results.json
これらのチェックはすべてのスキャンで自動的に実行されます:
CNAME チェーンテイクオーバー:複数レベルの CNAME チェーン(最大 10 段)をたどり、中間ターゲットが取得可能かどうかを確認します。標準の CNAME 検出は最初のホップのみをチェックしますが、チェーン検出はより深いテイクオーバーの機会を捉えます。
SRV レコードテイクオーバー:一般的な SRV レコード(SIP、XMPP、LDAP、Kerberos、IMAP、CalDAV など)のターゲットが期限切れで登録可能かどうかを確認します。
Rapid7 の Project Sonar からの結果を使用して、脆弱なサブドメインを一括で特定する PoC スクリプトのような scanio.sh を使用できます。このスクリプトは、ダンプを解析して grep し、目的の CNAME レコードを抽出し、subjack で敵対的サブドメインテイクオーバーに対して脆弱かどうかをチェックするための大規模なサブドメインリストを作成します。責任を持って使用してください。
ワードリストには、1行に1つのサブドメインを含める必要があります:
assets.xen.world
assets.github.com
b.xen.world
big.example.com
cdn.xen.world
dev.xen.world
dev2.twitter.com
DNS テイクオーバーに関する追加情報:
| フラグ | 説明 | デフォルト |
|---|
-d | チェックする単一ドメイン | |
-w | サブドメインのワードリストへのパス | |
-t | 同時実行スレッド数 | 10 |
-timeout | 接続タイムアウトまでの待機秒数 | 10 |
-o | 結果をファイルに出力(JSON 出力の場合は .json 拡張子を使用) | |
-ssl | HTTPS 接続を強制(精度が向上する可能性あり) | false |
-a | 特定された CNAME だけでなく、すべての URL にリクエストを送信 (推奨) | false |
-m | ドメインが登録可能でなくても、死んだ CNAME レコードをフラグ付けする | false |
-r | DNS リゾルバのリストへのパス(1行に1つのIP、失敗時は 8.8.8.8 にフォールバック) | |
-ns | NS テイクオーバーをチェック(期限切れ NS ドメイン + 宙ぶらりんのクラウド DNS 委任) | false |
-ar | 死んだ IP を指す古い A レコードをチェック(ICMP には root 権限が必要な場合あり) | false |
-axfr | ゾーン転送(AXFR)をチェック(NS ブルートフォースを含む) | false |
-mail | SPF include および MX レコードテイクオーバーをチェック | false |
-v | リクエストごとに詳細情報を表示 | false |