email-security について
ドメインの DMARC、SPF、DKIM レコードを調べ、メールなりすましのリスクを評価するセキュリティテストスキルです。DNS 確認、SMTP リレーのテスト、メールヘッダーによる結果の検証方法を説明します。
主な機能
- 01DMARC、SPF、DKIM レコードの確認
- 02メール認証設定の解釈
- 03SMTP リレーの可用性テスト
- 04関連するメールヘッダーの説明
- 05DNS とセレクターの注意点
活用シーン
- 01偵察時のメールセキュリティ確認
- 02ドメインのメールなりすましリスク評価
- 03SMTP リレーがテスト接続を受け付けるか確認
- 04メールヘッダーで認証結果を検証
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ uphiago/ recon-skills --skill email-securityインストール後、Claude Code で/email-securityを入力して読み込まれたか確認します。
詳細
メールセキュリティ — DMARC、SPF、DKIM
使用するタイミング
- パッシブ偵察中(フェーズ 1)
- 初期の DNS 列挙後
- DMARC の p=none は、ドメインが完全に偽装される可能性があることを意味します
- フィッシングやビジネスメール詐欺のリスクを特定するうえで重要です
DMARC/SPF/DKIM の確認コマンド
# SPF
dig +short TXT $target | grep "v=spf1"
# DMARC
dig +short TXT _dmarc.$target
# DKIM (common selector: google)
dig +short TXT google._domainkey.$target
# MX
dig +short MX $target
結果の解釈
| 設定 | 意味 | リスク |
|---|---|---|
| v=spf1 ~all (softfail) | SPF はブロックを示唆しますが、強制しません | 偽装メールが届く可能性があります |
| v=spf1 ?all (neutral) | SPF は何もしません | 完全に制限がありません |
| v=spf1 include:amazonses.com ~all | SES はドメインを送信元としてメールを送信できます | どの AWS SES アカウントからも偽装できます |
| v=DMARC1; p=none | DMARC は無効です | 偽装に対する保護がありません |
| v=DMARC1; p=quarantine | 失敗したメールはスパムに振り分けられます | 部分的な保護です |
| v=DMARC1; p=reject | 失敗したメールは拒否されます | 完全な保護です |
| DKIM missing | 暗号署名がありません | メールは偽造される可能性があります |
SMTP によるメールの偽装
# Test SMTP relay
timeout 3 bash -c 'exec 3<>/dev/tcp/TARGET/25; head -1 <&3'
# Send spoofed email via open relay (swaks)
swaks --to [email protected] --from [email protected] --server TARGET --body "Spoofed email"
セキュリティレベルを示すヘッダー
| ヘッダー | 値 | 意味 |
|---|---|---|
| Authentication-Results | spf=pass | SPF に合格しました |
| Authentication-Results | spf=fail | SPF に失敗しました |
| Authentication-Results | dmarc=pass | DMARC に合格しました |
| Authentication-Results | dmarc=fail | DMARC に失敗しました |
| Authentication-Results | dkim=pass | DKIM に合格しました |
| Received-SPF | Pass | 送信者は許可されています |
| Received-SPF | Softfail | 送信者は完全には許可されていません |
| Received-SPF | Fail | 送信者は許可されていません |
| ARC-Authentication-Results | 認証チェーン |
AWS SES の偽装(SPF に amazonses.com が含まれている場合)
v=spf1 include:amazonses.com ~all の場合:
- AWS アカウントを作成します
- 独自のドメイン(検証済み)で SES を設定します
- From: [email protected] を指定してメールを送信します
- SPF は合格します(include:amazonses.com があるため)
- DMARC は p=none なので、プロバイダーは通常どおりメールを配信します
実際の事例
実際の事例(重大):政党 — 両方のドメイン(DOMAIN_PLACEHOLDER_A、DOMAIN_PLACEHOLDER_B)で DMARC が p=none でした。SPF に include:amazonses.com が含まれていたため(どの SES アカウントからもそのドメインを送信元として送信可能)、メールを完全に偽装できました。
注意点
| 問題 | 解決策 |
|---|---|
| SPF のルックアップ制限 | DNS では SPF の include に対するルックアップは 10 回までです |
| DKIM セレクターが不明 | google、selector1、selector2、2022、2023 など、一般的なセレクターを試してください |
| DMARC レポート | rua=mailto: により、認証結果が第三者に漏れる可能性があります |
検証
# Verify email spoofing is possible
# Send test email and check headers:
dig +short TXT _dmarc.target.com
# If p=none -> confirmed spoofable
コメント
Markdown 対応