mcpField
D
dns-intelligence

dns-intelligence

ローカル
github.com/GuardBeeセキュリティ11 日前に更新

dns-intelligence について

dns-intelligence は DNS 設定、メール認証、サブドメインの露出を調べる MCP サーバー兼コマンドラインツールです。セキュリティレビュー向けに DNS レコードや乗っ取りリスクを検査し、問題と修正案を示します。

主な機能

  1. 01一般的な DNS レコードを列挙
  2. 02SPF、DMARC、DKIM の設定を確認
  3. 03CT ログとワードリストからサブドメインを発見
  4. 04サブドメイン乗っ取りの可能性を検出
  5. 05DNSSEC、CAA、ネームサーバーを監査
  6. 06評価と修正案を提示

活用シーン

  1. 01ドメインの DNS とメールセキュリティを確認
  2. 02攻撃者に見つかる前に放置サブドメインを発見
  3. 03複数ドメインの DNS 上の問題を比較
  4. 04CI やデプロイ前に DNS を検査

MCP 対応

DNS 列挙、ドメイン監査、サブドメイン発見、乗っ取りチェック、メールセキュリティ分析用の MCP ツールを公開します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"4hmetuyar-dns-intelligence": {
"command": "npx",
"args": [
"-y",
"@guardbee/mcp-dns-intelligence"
]
}
}
}
起動コマンドnpx -y @guardbee/mcp-dns-intelligence

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npm@guardbee/mcp-dns-intelligence0.2.3

ツール

4

掲載時のツール一覧 · 2 週間前に更新

パラメーター型必須説明
domainstringはい列挙するドメイン(例:example.com)

詳細

@guardbee/mcp-dns-intelligence

🇬🇧 English | 🇹🇷 Türkçe | 🇨🇳 中文 | 🇯🇵 日本語 | 🇰🇷 한국어 | 🇧🇷 Português | 🇪🇸 Español | 🇩🇪 Deutsch

npm version npm downloads License: MIT

DNS レコードを列挙し、SPF/DMARC/DKIM の設定ミスを検出して、乗っ取り可能なサブドメインを見つける MCP サーバーです。サブドメインは Certificate Transparency とワードリストを使って検出します。Node.js 組み込みの dns/promises を使用し、外部依存関係はありません。

テレメトリーはデフォルトでオフです。GUARDBEE_TELEMETRY=1 にすると、サーバー、ツール、成功状況、実行時間、ファイルパスなどの短いパラメーター値を送信します。長い文字列や、content、token、password などのフィールドはプレースホルダーに置き換えられます。詳しくは @guardbee/mcp-telemetry を参照してください。


機能

  • DNS の完全な列挙 — A、AAAA、MX、NS、TXT、CNAME、SOA レコード
  • SPF 分析 — +all、?all、重複レコード、および受信側と同じ方法でカウントする RFC 7208 の制限:ネストされた include/redirect による DNS ルックアップ(最大 10 回)、空振りのルックアップ(最大 2 回)、include のループと不足している include
  • DMARC 分析 — ポリシー(none/quarantine/reject)、pct、rua アドレスの欠落
  • DKIM チェック — よく使われる 9 種類のセレクター(default、google、selector1、mail など)を調査
  • サブドメイン検出 — Certificate Transparency のログ(crt.sh と Cert Spotter に並列で問い合わせ。送信されるのはドメイン名のみ)からの名前と、75 件の名前を含むワードリストを使用します。ワイルドカード DNS は除外されます。応答のある名前はすべて、サブドメイン乗っ取りの有無をチェックします
  • メールセキュリティの概要 — SPF、DMARC、DKIM をまとめて分析し、そのままコピーして使える修正案を提示
  • 23 件のユニットテスト — 純粋なロジックのテストで、ネットワーク接続は不要

クイックスタート

npm install -g @guardbee/mcp-dns-intelligence

claude_desktop_config.json に追加します:

{
  "mcpServers": {
    "guardbee-dns-intelligence": {
      "command": "npx",
      "args": ["-y", "@guardbee/mcp-dns-intelligence"]
    }
  }
}

MCP ツール

ツール説明
enumerate_dnsA〜F の評価付きで DNS を完全にチェック:レコード、SPF/DMARC/DKIM、MTA-STS、DNSSEC、CAA、ネームサーバー
audit_domains最大 20 個のドメインを監査し、評価と主な検出事項を比較
enumerate_subdomains一般的なサブドメインを調査(ワイルドカードを考慮)し、サブドメイン乗っ取りを検出
check_takeover指定されたホスト名について、サブドメイン乗っ取りの有無をチェック
check_email_security修正案付きで SPF、DMARC、DKIM をまとめて監査
lookup_dns特定のレコードタイプ(A/MX/TXT など)を指定した DNS ルックアップ
使用例

Claude に次のように尋ねることができます:

「example.com の DNS 設定に問題はありますか?」

「example.com のメールセキュリティ(SPF、DMARC、DKIM)を監査してください」

「example.com のサブドメインを一覧表示し、参照先のないものがあれば指摘してください」

「example.com の MX レコードを教えてください」

出力例
Email Security Check: example.com
──────────────────────────────────────────────────

── SPF ─────────────────────────────────────────
✓ v=spf1 include:_spf.google.com -all

── DMARC ───────────────────────────────────────
✗ No DMARC record found at _dmarc.example.com
  Add:  v=DMARC1; p=quarantine; rua=mailto:[email protected]

── DKIM ────────────────────────────────────────
✓ Found DKIM selectors: google

SPF の検出結果

コード重大度説明
SPF_MISSING🟡 中SPF レコードが見つかりません
SPF_PERMISSIVE_ALL🔴 重大+all — すべてのサーバーを許可します
SPF_NEUTRAL_ALL🟠 高?all — 未承認の送信者を拒否しません
SPF_NO_ALL🟡 中all メカニズムがありません
SPF_TOO_MANY_LOOKUPS🟠 高DNS ルックアップが 10 回を超えています — SPF が失敗します
SPF_DUPLICATE🟠 高SPF レコードが複数あります
SPF_AT_LOOKUP_LIMIT🔵 低ルックアップがちょうど 10 回です — include がもう 1 つあると SPF が失敗します
SPF_TOO_MANY_VOID_LOOKUPS🟠 高2 件を超える include がレコードを返しません
SPF_INCLUDE_MISSING🟠 高include/redirect の参照先に SPF レコードがありません(permerror)
SPF_INCLUDE_DUPLICATE🟠 高include されたドメインが複数の SPF レコードを公開しています
SPF_INCLUDE_LOOP🟠 高include が評価中のレコードに戻るループを形成しています
SPF_PTR🔵 低非推奨の ptr メカニズムを使用しています

DMARC の検出結果

コード重大度説明
DMARC_MISSING🟠 高DMARC レコードがありません
DMARC_NO_POLICY🟠 高p= ポリシーがありません
DMARC_POLICY_NONE🟡 中p=none — 適用を行わない監視モードです
DMARC_PCT_LOW🔵 低pct が 100 未満です — 部分的な適用です
DMARC_NO_RUA🔵 低集計レポートの送信先(rua)がありません
DMARC_MULTIPLE🟠 高DMARC レコードが複数あります — 受信側はすべて無視します
DMARC_INVALID_POLICY🟠 高p= が none、quarantine、reject のいずれでもありません
DMARC_SUBDOMAINS_NONE🟡 中sp=none により、サブドメインがなりすまし可能な状態になります
DOMAIN_NOT_FOUND🟠 高ドメインが存在しません(NXDOMAIN)

独自の DMARC レコードを持たないサブドメインは、受信側と同様に親ドメインのポリシー(sp=)を継承します。サブドメインの列挙ではワイルドカード DNS を検出し、ワイルドカードのみで応答する名前は除外します。

DKIM、MX、トランスポートの検出結果

コード重大度説明
DKIM_NOT_FOUND🟡 中一般的な約 35 個のセレクターで DKIM キーが見つかりません(独自のセレクターは dkimSelectors で渡してください)
DKIM_KEY_WEAK🟠 高RSA キーが 1024 ビット未満です
DKIM_KEY_1024🟡 中1024 ビットの RSA キーです — 2048 ビットにローテーションしてください(RFC 8301)
DKIM_KEY_INVALID🟡 中公開されたキーを解析できません
DKIM_TESTING🔵 低t=y のテストモードです
MX_UNRESOLVABLE🟠 高MX ホストに A/AAAA レコードがありません
MTA_STS_MISSING🔵 低MTA-STS がありません:受信メールが平文にダウングレードされる可能性があります
MTA_STS_MX_MISMATCH🟠 高enforce ポリシーに稼働中の MX が含まれていません — 準拠する送信者は配信を拒否します
MTA_STS_POLICY_UNREACHABLE / _INVALID🟡 中ポリシーファイルがない、リダイレクトされている、または不正な形式です — 送信者は MTA-STS を無視します
MTA_STS_TESTING / _MODE_NONE / _MAX_AGE_SHORT🔵 低適用されていない、取り消されている、または max_age が 1 日未満です
TLSRPT_MISSING / _INVALID🔵 低MTA-STS と併用できる TLS-RPT がありません

SPF_MISSING は、ドメインに MX レコードがある場合(Google Workspace なら v=spf1 include:_spf.google.com ~all などの基本レコードを設定)🟠 高となり、それ以外の場合は 🟡 中となります(v=spf1 -all の設定を推奨)。

ネームサーバーの検出結果

ゾーンの各ネームサーバーに対し、DNS(UDP/TCP 53)経由で直接問い合わせます。再帰なしの SOA クエリ、AXFR リクエスト(最初のメッセージのみ読み込み、ゾーン全体はダウンロードしません)、およびホストしていない名前への再帰クエリを実行します。--no-ns-probe / nameserverProbe: false でスキップできます。

コード深刻度説明
NS_AXFR_ALLOWED🟠 高誰でもゾーン全体をダウンロードできます(ゾーン転送)
NS_LAME🟠 高リストにあるネームサーバーが権威ある応答を返しません(REFUSED、SERVFAIL、AA なし、または応答なし)
NS_UNRESOLVABLE🟠 高ネームサーバー自体の名前にアドレスがありません
NS_OPEN_RESOLVER🟡 中ネームサーバーが誰からの再帰クエリにも応答します(増幅攻撃、キャッシュポイズニング)
NS_SOA_SERIAL_MISMATCH🔵 低同じプライマリのサーバーが異なるシリアル番号を返します(マルチプロバイダー構成はプライマリごとに比較します)

DNSSEC と CAA の検出結果

コード深刻度説明
DNSSEC_BROKEN🔴 致命的検証に失敗します。検証を行うリゾルバー(Google、Cloudflare、ほとんどの ISP)はドメインを解決できません
DNSSEC_NO_DS🟡 中ゾーンには署名がありますが、親ゾーンに DS がないため、何も検証されません
DNSSEC_WEAK_ALGORITHM🟡 中非推奨の署名アルゴリズム(RSASHA1、RSAMD5、DSA、GOST。RFC 8624)
DNSSEC_DS_SHA1🔵 低DS ダイジェストが SHA-1 のみです
DNSSEC_DISABLED🔵 低ゾーンに署名がありません
CAA_BLOCKS_CURRENT_CA🟡 中CAA が、有効な証明書を発行した CA を許可していません。更新に失敗します
CAA_UNKNOWN_CRITICAL🟠 高CA が理解できない重大な CAA タグがあります。すべての CA が発行を拒否する必要があります
CAA_MISSING🔵 低ツリー内のどこにも CAA がありません。どの CA でも発行できます

DNSSEC は DNS-over-HTTPS(dns.google)経由で取得します。Node のリゾルバーでは DS/DNSKEY レコードや AD フラグを確認できないため、検証クエリと cd=1(検証無効)クエリを比較します。CAA は RFC 8659(最も近い祖先)に従い、:443 で提供される証明書の発行者と照合します。http: false で両方のチェックをスキップできます。

サブドメインの乗っ取り検出

CNAME を持つ稼働中の各サブドメインを、CNAME チェーン(最大 5 ホップ)をたどってチェックします。ワイルドカードレコードもチェックします。*.domain が宙ぶらりんになっていると、リストにないすべての名前を取得できる状態になります。

リスク条件プロバイダー
⚠️ 乗っ取りの可能性ありプロバイダーが誰にでも名前の取得を許可しているAWS S3(NoSuchBucket ページ)、Microsoft Azure および AWS Elastic Beanstalk(CNAME ターゲットが NXDOMAIN)、Surge.sh(project not found)、および未登録ドメインを指す CNAME
⚠️ 手動で確認リソースは消失していますが、プロバイダーがドメインの所有確認を求める場合がありますGitHub Pages、Heroku、Netlify、Vercel、Ghost、Pantheon、WordPress.com、Help Scout、Tumblr、ngrok
🧹 古いレコードターゲットは消失していますが、所有者だけが管理する登録済みドメイン配下にあります。レコードを削除してください。乗っ取りではなく、CI は失敗しませんその他のプロバイダー

各ページのフィンガープリントは、プロバイダー上のランダムな未取得名を使って確認しました。「見つからない」ページに安定した目印がなくなったプロバイダーは記載していません。HTTP チェックでは、サブドメインに GET / を 1 回送信します(HTTPS、次に HTTP)。--no-http / httpProbe: false で無効にできます。すでに把握しているホスト名には check_takeover / takeover <host…> を使用してください。


CLI — CI/CD 連携

MCP サーバーモードに加えて、CLI として直接使用することもできます。

# Full DNS + email security check
npx @guardbee/mcp-dns-intelligence check example.com

# Fail only on high and above
npx @guardbee/mcp-dns-intelligence check example.com --fail-on=high

# Subdomain scan — exits 1 if a dangling CNAME is found
npx @guardbee/mcp-dns-intelligence subdomains example.com

# Subdomain scan with higher concurrency
npx @guardbee/mcp-dns-intelligence subdomains example.com --concurrency=50

# JSON output
npx @guardbee/mcp-dns-intelligence check example.com --format=json

# Several domains with an A–F grade each and a summary table (or every domain in guardbee.yml when none is given)
npx @guardbee/mcp-dns-intelligence check example.com example.de example.co.uk
npx @guardbee/mcp-dns-intelligence check --format=sarif > dns.sarif

評価:検出結果ごとに点数が減点されます(致命的 40、高 20、中 8、低 2)。また、最も深刻な検出結果によって評価の上限が決まります。致命的な問題が 1 件でもあれば F、高の問題があれば最高でも C、中の問題があれば最高でも B です。

終了コード: 0 = 問題なし · 1 = しきい値を超える検出結果/宙ぶらりんのサブドメイン · 2 = エラー

guardbee.yml による設定

プロジェクトのルートに guardbee.yml を作成すると、CLI フラグを保存できます。CLI フラグは常にファイルの設定より優先されます。

dns-intelligence:
  fail-on: high          # critical | high | medium | low
  concurrency: 20        # parallel subdomain probes
  domains:               # used when no domain is given on the CLI
    - example.com
    - staging.example.com

サンプルファイルについては、guardbee.example.yml をご覧ください。

GitHub Actions — DNS セキュリティ監査
name: DNS Security Check
on:
  schedule:
    - cron: "0 6 * * *"  # Every day at 06:00
  workflow_dispatch:

jobs:
  dns-check:
    runs-on: ubuntu-latest
    steps:
      - name: Check DNS configuration
        run: npx @guardbee/mcp-dns-intelligence check ${{ vars.DOMAIN }} --fail-on=high

      - name: Scan for dangling subdomains
        run: npx @guardbee/mcp-dns-intelligence subdomains ${{ vars.DOMAIN }}
GitLab CI
dns-security:
  image: node:20
  script:
    - npx @guardbee/mcp-dns-intelligence check $DOMAIN --fail-on=high
    - npx @guardbee/mcp-dns-intelligence subdomains $DOMAIN
  only:
    - schedules
デプロイ前のメールセキュリティチェック
- name: Verify email security records
  run: |
    npx @guardbee/mcp-dns-intelligence check ${{ vars.DOMAIN }} \
      --fail-on=high \
      --format=json | tee dns-report.json

- name: Upload DNS report
  uses: actions/upload-artifact@v4
  with:
    name: dns-security-report
    path: dns-report.json

開発

npm install
npm test          # 23 unit tests
npm run build     # TypeScript compile

ライセンス

MIT — GuardBee

フィードバック

ご質問、ご提案、または誤検知がありましたら、GitHub Discussions でスレッドを立てるか、issue を作成してください。GuardBee が役立った場合は、リポジトリに ⭐ を付けていただけると、ほかの方にも見つけてもらいやすくなります。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。