
DNSテイクオーバースキャナー
SubjackはGoで書かれたDNSテイクオーバースキャナーで、ドメインのリストを並行してスキャンし、ハイジャック可能なものを特定するために設計されています。Goの速度と効率性により、このツールは大量テストにおいて際立っています。誤検出を排除するため、常に結果を手動で再確認してください。
Subjackが検出するもの:
include: ディレクティブ内の期限切れドメインGo が必要です
go install github.com/haccer/subjack@latest
Linux、macOS、Windows用のビルド済みバイナリも リリースページ で入手できます — コンパイルが遅い小さなVPSに便利です。
subjack -w subdomains.txt -t 100 -timeout 30 -o results.txt -ssl
| フラグ | 説明 | デフォルト |
|---|---|---|
-d | チェックする単一ドメイン | |
-w | サブドメインのワードリストへのパス | |
-t | 同時スレッド数 | 10 |
-timeout | 接続タイムアウトまでの待機秒数 | 10 |
-o | 結果をファイルに出力 (JSON出力には .json 拡張子を使用) | |
-ssl | HTTPS接続を強制 (精度が向上する場合があります) | false |
-a | 特定されたCNAMEを持つURLだけでなく、すべてのURLにリクエストを送信 (推奨) | false |
-m | ドメインが登録可能でなくても、死んだCNAMEレコードにフラグを立てる | false |
-r | DNSリゾルバーのリストへのパス (1行につき1つのIPまたは host:port、失敗時は 8.8.8.8 にフォールバック) | |
-ns | NSテイクオーバーをチェック (期限切れNSドメイン + 宙に浮いたクラウドDNS委任) | false |
-ar | 死んだIPを指す古いAレコードをチェック (ICMPにはrootが必要な場合があります) | false |
-axfr | ゾーン転送 (AXFR) をチェック (NSブルートフォースを含む) | false |
-mail | SPF includeおよびMXレコードテイクオーバーをチェック | false |
-srv | SRVレコードテイクオーバーをチェック (ドメインあたり約28のDNSクエリを追加) | false |
-v | リクエストごとにより多くの情報を表示 | false |
Subjackはstdinからドメインを読み取ることができ、他のツールからの出力を簡単にパイプできます:
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が必要) とポート80/443でのTCPフォールバックを使用します。
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 フラグでオプトインです。一般的なSRVロケーション (SIP、XMPP、LDAP、Kerberos、IMAP、CalDAVなど) をプローブすると、ドメインあたり約28のDNSクエリが追加されるためです:
subjack -w domains.txt -srv -o results.json
scanio.sh を使用できます。これはRapid7のProject Sonarの結果を使用して脆弱なサブドメインを大量に特定するための一種のPoCスクリプトです。このスクリプトはダンプを解析および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およびHTTPフィクスチャに対して実行され、ネットワークを必要としません:
go test -race ./...
DNSテイクオーバーに関する追加情報:
subjackは MIT License の下でリリースされています。