DNSツールdnsxの使い方と機能解説

ツール概要

DNSXは、再試行可能なDNSライブラリを基盤にした高速で多機能なDNS解析ツールです。多様なDNSクエリタイプと高度な機能をサポートしており、情報収集フェーズにおいてセキュリティテストに不可欠なツールです。

基本的な使用方法


dnsx [パラメータオプション]

パラメータ詳細

入力オプション(INPUT)

  • -l, -list string
    • 機能: サブドメイン/ホストリストの解析
    • 形式: ファイルまたは標準入力
    • 例: dnsx -l ドメインリスト.txt または cat ドメインリスト.txt | dnsx
  • -d, -domain string
    • 機能: ブルートフォース対象ドメインリスト
    • 形式: ファイル、カンマ区切り、または標準入力
    • 例: dnsx -d example.com または dnsx -d ドメインリスト.txt
  • -w, -wordlist string
    • 機能: ブルートフォースに使用する単語リスト
    • 形式: ファイル、カンマ区切り、または標準入力
    • 例: dnsx -d example.com -w 単語リスト.txt

DNSクエリタイプ(QUERY)

基本クエリタイプ

  • -a: Aレコード(デフォルト)
  • -aaaa: AAAAレコード
  • -cname: CNAMEレコード
  • -ns: NSレコード
  • -txt: TXTレコード
  • -srv: SRVレコード
  • -ptr: PTRレコード
  • -mx: MXレコード
  • -soa: SOAレコード

高度なクエリタイプ

  • -any: ANYレコード
  • -axfr: ゾーン転送(AZFR)を試行
  • -caa: CAAレコード
  • -all, -recon: すべてのDNSレコードタイプをクエリ

除外クエリ

  • -e, -exclude-type value
    • 機能: 特定のDNSクエリタイプを除外
    • 形式: a,aaaa,cname,ns,tex,srv,ptr,mx,soa,axfr,caa
    • 例: -e a,aaaa でAおよびAAAAレコードのクエリを除外

フィルタ(FILTER)

応答フィルタ

  • -re, -resp: 完全なDNS応答を表示
  • -ro, -resp-only: DNS応答のみを表示
  • -rc, -rcode string
    • 機能: DNSステータスコードで結果をフィルタリング
    • ステータスコード: noerror, servfail, refused, nxdomainなど

応答タイプフィルタ

  • -rtf, -response-type-filter string
    • 機能: 指定されたクエリタイプにレコードがない項目を返す
    • 例: -rtf a,cname でAおよびCNAMEレコードがないドメインを返す

プローブ(PROBE)

  • -cdn: CDN名を表示
  • -asn: ホストのASN情報を表示

レート制限(RATE-LIMIT)

  • -t, -threads int
    • 機能: 並列スレッド数
    • デフォルト: 100
  • -rl, -rate-limit int
    • 機能: 秒ごとのDNSリクエスト数制限
    • デフォルト: 無効(-1)

更新オプション(UPDATE)

  • -up, -update: 最新バージョンに更新
  • -duc, -disable-update-check: 自動更新チェックを無効化

出力オプション(OUTPUT)

  • -o, -output string: ファイルに出力
  • -j, -json: JSONL形式で出力
  • -omit-raw, -or: JSON出力で原始DNS応答を省略

デバッグオプション(DEBUG)

  • -hc, -health-check: 診断チェックを実行
  • -silent: 結果のみを表示
  • -v, -verbose: 詳細出力
  • -raw, -debug: 原始DNS応答を表示
  • -stats: 実行統計情報を表示
  • -version: バージョンを表示
  • -nc, -no-color: カラーアウトプットを無効化

最適化オプション(OPTIMIZATION)

  • -retry int: DNS試行回数(デフォルト:2)
  • -hf, -hostsfile: システムhostsファイルを使用
  • -trace: DNSトラッキングを実行
  • -trace-max-recursion int: DNSトラッキング最大再帰深度(デフォルト:255)
  • -resume: 既存のスキャンを再開
  • -stream: ストリームモード(単語リスト、ワイルドカード、統計、停止/再開を無効化)
  • -timeout value: DNSクエリタイムアウト(デフォルト:3s)

設定オプション(CONFIGURATIONS)

  • -auth: ProjectDiscoveryクラウドプラットフォームAPIキーを設定(デフォルト有効)
  • -r, -resolver string: 使用するDNSリゾルバーリスト
  • -wt, -wildcard-threshold int: ワイルドカードフィルタースレッショルド(デフォルト:5)
  • -wd, -wildcard-domain string: ワイルドカードフィルタリング用ドメイン
  • -proxy string: 使用するプロキシ

使用例

例1: 基本的なドメイン解析


# ドメインリストのAレコードを解析
dnsx -l ドメインリスト.txt

# AおよびAAAAレコードを同時にクエリ
dnsx -l ドメインリスト.txt -a -aaaa

# すべてのレコードタイプをクエリ
dnsx -l ドメインリスト.txt -all

例2: サブドメインブルートフォース


# 基本的なサブドメインブルートフォース
dnsx -d example.com -w サブドメインリスト.txt

# ブルートフォースを行いCDNおよびASN情報を表示
dnsx -d example.com -w サブドメインリスト.txt -cdn -asn

# 成功した応答のみを表示
dnsx -d example.com -w 単語リスト.txt -rcode noerror

例3: DNS情報収集


# ドメインのすべてのDNSレコードを収集
dnsx -d example.com -recon -o dns_info.txt

# 特定レコードタイプをクエリ
dnsx -d example.com -mx -ns -txt

# ゾーン転送を試行
dnsx -d example.com -axfr

例4: 応答フィルタリング


# CNAMEレコードのみ表示
dnsx -l ドメインリスト.txt -cname -ro

# Aレコードがないドメインをフィルタリング
dnsx -l ドメインリスト.txt -rtf a

# 成功したクエリのみ表示
dnsx -l ドメインリスト.txt -rcode noerror

例5: 高度な機能


# カスタムリゾルバーを使用
dnsx -l ドメインリスト.txt -r 8.8.8.8,1.1.1.1

# レート制限を設定(秒ごとに50クエリ)
dnsx -d example.com -w 単語リスト.txt -rl 50

# DNSトラッキングを有効化
dnsx -d example.com -trace

進級使用法

ワークフロー統合


# 1. サブドメイン列挙パイプライン
subfinder -d example.com -silent | dnsx -a -o 解析済み.txt

# 2. 複数ドメインのバッチ処理
for domain in $(cat ドメインリスト.txt); do
    echo "[+] 処理中 $domain"
    dnsx -d $domain -w 一般的なサブドメイン.txt -silent >> 全サブドメイン.txt
done

# 3. 他のツールと組み合わせ
cat ターゲット.txt | dnsx -a -silent | httpx -title -status-code

自動化スクリプト例


#!/bin/bash
# dns_recon.sh - 自動DNS調査スクリプト

DOMAIN=$1
WORDLIST="/path/to/wordlist.txt"
OUTPUT_DIR="dns_recon_${DOMAIN}"

mkdir -p $OUTPUT_DIR

echo "[+] DNS調査開始: $DOMAIN"
echo "[+] 時間: $(date)"

# 1. 基本解析
echo "[1/6] 基本DNSレコードクエリ..."
dnsx -d $DOMAIN -all -o "$OUTPUT_DIR/all_records.txt"

# 2. サブドメインブルートフォース
echo "[2/6] サブドメインブルートフォース..."
dnsx -d $DOMAIN -w $WORDLIST -silent -o "$OUTPUT_DIR/subdomains.txt"

# 3. AXFR脆弱性チェック
echo "[3/6] AXFR脆弱性チェック..."
dnsx -d $DOMAIN -axfr -o "$OUTPUT_DIR/axfr_check.txt"

# 4. CDN情報収集
echo "[4/6] CDN情報収集..."
dnsx -l "$OUTPUT_DIR/subdomains.txt" -cdn -asn -o "$OUTPUT_DIR/cdn_asn_info.txt"

# 5. CNAMEレコードの検索
echo "[5/6] CNAMEレコード検索..."
dnsx -l "$OUTPUT_DIR/subdomains.txt" -cname -ro -o "$OUTPUT_DIR/cname_records.txt"

# 6. 統計レポートの生成
echo "[6/6] 統計レポート生成..."
echo "=== DNS調査レポート ===" > "$OUTPUT_DIR/report.txt"
echo "ターゲットドメイン: $DOMAIN" >> "$OUTPUT_DIR/report.txt"
echo "完了時間: $(date)" >> "$OUTPUT_DIR/report.txt"
echo "発見されたサブドメイン数: $(wc -l < "$OUTPUT_DIR/subdomains.txt")" >> "$OUTPUT_DIR/report.txt"
echo "発見されたCNAMEレコード数: $(wc -l < "$OUTPUT_DIR/cname_records.txt")" >> "$OUTPUT_DIR/report.txt"

echo "[+] DNS調査完了!結果は以下に保存されました: $OUTPUT_DIR/"

パフォーマンス最適化設定


# 高並列処理
dnsx -l 大規模リスト.txt -t 500 -retry 1 -timeout 2s

# 大ファイルのストリーム処理
cat 巨大リスト.txt | dnsx -stream -t 200

# プロキシとカスタムリゾルバーを使用
dnsx -d example.com -w 単語リスト.txt \
  -r リゾルバーリスト.txt \
  -proxy socks5://127.0.0.1:9050 \
  -t 100 \
  -rl 1000

実用的なヒント

1. ワイルドカード検出


# ワイルドカードドメインの検出
dnsx -wd example.com -j

# ワイルドカード検出スレッショルドの設定
dnsx -d example.com -w 単語リスト.txt -wt 10

2. バッチ処理の最適化


# 並列処理の利用
cat ドメインリスト.txt | parallel -j 10 "dnsx -d {} -w 単語リスト.txt -silent"

# メモリ問題を回避するための分割処理
split -l 1000 大規模リスト.txt chunk_
for chunk in chunk_*; do
    dnsx -l $chunk -silent >> 結果.txt
done

3. 結果分析


# 特定情報の抽出
dnsx -l ドメインリスト.txt -cname -ro | grep "cloudflare" > cloudflare_cnames.txt

# 応答コード分布の統計
dnsx -l ドメインリスト.txt -rcode | sort | uniq -c

# IPアドレスの抽出
dnsx -l ドメインリスト.txt -a -re | grep -oE '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+' | sort -u

注意事項

1. パフォーマンス考慮

  • 大規模リストクエリ時にスレッド数を適切に設定(-t)
  • DNSクエリレート制限に注意(-rl)
  • ネットワーク環境に応じてタイムアウト時間を調整(-timeout)

2. 精度保証

  • 信頼できるDNSリゾルバーを使用(-r)
  • 適切な再試行回数を設定(-retry)
  • ワイルドカードドメインの影響に注意

3. 合法的な使用

  • 許可されたターゲットのみにテストを行う
  • ターゲットのサービス条項を遵守する
  • 生産環境への影響を避ける

4. エラー処理

  • -silentオプションで出力ノイズを減らす
  • -statsオプションで進行状況を監視
  • -resumeオプションで再開をサポート

トラブルシューティング

よくある問題

  1. クエリが遅い
    
    # スレッド数を増やし、タイムアウト時間を短縮
    dnsx -l ドメインリスト.txt -t 200 -timeout 2s -retry 1
    
  2. DNS解析失敗
    
    # リゾルバーを変更
    dnsx -l ドメインリスト.txt -r 8.8.8.8,1.1.1.1,9.9.9.9
    
  3. メモリ使用量が高い
    
    # 大ファイルをストリームモードで処理
    cat 巨大リスト.txt | dnsx -stream -t 100
    
  4. ワイルドカードの干渉
    
    # ワイルドカード検出スレッショルドを上げる
    dnsx -d example.com -w 単語リスト.txt -wt 20
    

デバッグテクニック


# 詳細出力の有効化
dnsx -d example.com -w 単語リスト.txt -v

# 原始応答の表示
dnsx -d example.com -axfr -raw

# ヘルスチェックの実行
dnsx -hc

タグ: DNS工具 情報収集 セキュリティテスト DNSクエリ ネットワークスキャン

6月18日 17:35 投稿