前回の調査で、日本企業2,000社の78%がなりすましメールを技術的に阻止できる設定になっていないことがわかった。
「うちはそんなに重要な会社じゃないから大丈夫」と思うかもしれない。
この記事では、DMARC・SPF・DKIM が設定されていないと具体的に何が起きるのかを、メールの仕組みから解説する。攻撃手法の詳細ではなく、なぜ設定しないと危険なのかを理解するための記事である。
メールの差出人(From)は、送信者が自由に書ける。
これは設計上の問題ではなく、メールというシステムの仕様である。1982年に策定された RFC 822 以来、メールの From フィールドは送信者が任意に指定できる。封筒に書く差出人を自由に書けるのと同じ構造である。
つまり、何も対策をしていなければ、誰でも「あなたの会社のメールアドレス」を From に書いてメールを送信できる。
あなたの会社が example.co.jp というドメインを使っているとする。DMARC が設定されていない場合、第三者が以下のようなメールを送信できる。
From: 経理部 <keiri@example.co.jp>
To: 取引先の担当者
件名: 振込先口座の変更のお知らせ
いつもお世話になっております。
弊社の振込先口座が変更になりましたので、
次回のお支払いより下記口座へお振込みください。
受信側のメールサーバーは、このメールが本当に example.co.jp から送られたかどうかを確認する手段がない。これがビジネスメール詐欺(BEC)の基本構造である。
From: サポート <support@example.co.jp>
To: 顧客
件名: 【重要】パスワードの再設定をお願いします
セキュリティ強化のため、以下のリンクからパスワードを再設定してください。
https://example-co-jp.attacker.com/reset
From: 社長 <shacho@example.co.jp>
To: 経理担当者
件名: 至急の送金依頼
急ぎで以下の口座に送金してください。
本件は口外しないでください。
メールの送信は2つの段階がある。
MAIL FROM: <attacker@evil.com> ← 実際の送信元
RCPT TO: <target@victim.co.jp>
From: 経理部 <keiri@example.co.jp> ← 表示される差出人(自由に書ける)
受信者が見るのはヘッダーの From だけ。封筒の差出人は attacker@evil.com なのに、便箋には keiri@example.co.jp と書いてある。受信者は便箋しか見ない。
「うちのドメインからメールを送っていいサーバーはこれだけです」と DNS で宣言する。
example.co.jp. IN TXT "v=spf1 include:_spf.google.com -all"
ただし SPF だけでは不十分。 SPF が検証するのはエンベロープの差出人(封筒)であり、ヘッダーの From(便箋)は検証しない。
メールに電子署名を付けて、改ざんされていないことを証明する。ただし DKIM だけでも不十分。 DKIM は署名のドメインとヘッダー From の一致を強制しない。
SPF と DKIM を結びつけて、ヘッダーの From(受信者が見る差出人)が本物かどうかを判定する仕組み。
_dmarc.example.co.jp. IN TXT "v=DMARC1; p=reject; rua=mailto:dmarc@example.co.jp"
| ポリシー | 動作 |
|---|---|
p=reject | 受信サーバーがメールを拒否する |
p=quarantine | 迷惑メールフォルダに入れる |
p=none | 何もしない(素通し) |
前回の調査で、日本企業の56.2%が p=none だった。
p=none は「DMARC に対応している」と言えるのか。言えない。
p=none は受信サーバーに「検証に失敗しても何もしなくていい」と伝えている。これは鍵をかけずに「防犯対策をした」と言っているのと同じである。
大企業を直接狙うのは難しい。そこで攻撃者は、取引先の中小企業のドメインを騙る。
攻撃者 → 中小企業A のドメインを騙る → 大企業B に偽の請求書を送る
被害を受けるのは大企業Bだが、踏み台にされるのは中小企業Aである。
中小企業Aは直接の金銭被害を受けないかもしれない。しかし、「あなたの会社のドメインが詐欺メールに使われた」と判明した時点で、取引関係に影響が出る。
DMARC の設定自体にかかる費用はゼロである。DNS の TXT レコードに1行追加するだけ。
_dmarc.example.co.jp. IN TXT "v=DMARC1; p=reject; rua=mailto:dmarc-report@example.co.jp"
ただし、いきなり p=reject にするのは推奨しない。 推奨される手順:
p=none + rua=(レポート送信先)を設定するp=quarantine に変更するp=reject に変更する# Mac / Linux
dig TXT _dmarc.あなたのドメイン
# Windows
nslookup -type=TXT _dmarc.あなたのドメイン
p=reject → 対策済みp=quarantine → 対策済み(迷惑メールに隔離)p=none → 未対策(監視のみ)dig TXT あなたのドメイン
結果に v=spf1 が含まれていれば設定されている。末尾が -all なら厳格、~all ならソフト。
| 状態 | あなたのドメインでなりすませるか |
|---|---|
| DMARC なし | はい。誰でもできる |
DMARC p=none | はい。設定はあるが止めていない |
DMARC p=quarantine | 難しい。迷惑メールに入る |
DMARC p=reject | 非常に難しい。受信サーバーが拒否する |
前回の調査では、日本企業2,000社の78%が「はい」に該当する状態だった。
DMARC の設定はコストゼロでできる。あなたの会社のドメインが、取引先や顧客へのフィッシングメールに使われる前に、まず自社の設定を確認してほしい。