第44章 差出人の封筒
- 山崎行政書士事務所
- 5月7日
- 読了時間: 17分
午前七時三十二分。
そのメールは、取引先の総務担当から転送されてきた。
件名は、こうだった。
【駿河ML公式】確認方法変更に関する重要なお知らせ
差出人表示。
駿河メディカルロジスティクス株式会社 公式確認窓口
メールアドレス。
三枝涼真は、画面を見た瞬間、息を止めた。
自社ドメインだった。
昨日までの偽メールは、似たドメインだった。verify-suruga.jpsuruga-ml-contact.jphigashi-suruga-rned.jp
似ているが、違う。注意深く見れば分かる。
だが、今度は違った。
駿河メディカルロジスティクスの公式ドメイン。
本文には、こう書かれていた。
本件対応に関する確認方法を変更しました。今後、問い合わせ番号、受領確認番号、配送確認番号の照合は、下記の専用確認ページより行ってください。従来の電話確認は、混雑緩和のため順次停止します。
リンク先は、昨日停止した偽ポータルではない。
今度は、別のURLだった。
三枝は、メール本文を開いたまま、ヘッダーを確認した。
SPF。
pass
DKIM。
pass
DMARC。
pass
三枝の指が止まった。
通っている。
差出人ドメインは本物。SPFも通っている。DKIMも通っている。DMARCも通っている。
メール認証上は、正規メールに見える。
黒崎課長が、隣で画面を覗き込んだ。
「うちのドメインから出てるのか」
三枝は、声を低くして答えた。
「少なくとも、受信側ではそう見えています。DMARCまでpassです」
黒崎は、短く息を吐いた。
「今度はメールの根か」
その時、山崎行政書士事務所の山崎が第三会議室に入ってきた。
三枝は振り返った。
「先生。今度は、公式ドメインのメールです。SPF、DKIM、DMARCが通っています」
山崎は、画面を見た。
そして、いつものようにホワイトボードへ向かった。
黒いペンで、こう書いた。
差出人の封筒
その下に、もう一行。
メール認証 pass ≠ 会社の正式発信
三枝は、その文字を見た。
また、形式と意思の違いだった。
TLS証明書は、公式サイトであることを保証しない。タイムスタンプは、内容の真実を保証しない。電子署名は、会社の現行承認を保証しない。会社印は、会社の意思そのものではない。
そして今度は。
SPF、DKIM、DMARCが通っても、それだけでは会社の正式発信とは限らない。
午前七時五十分。
望月社長、秋山法務総務部長、大石倉庫部長、久我真琴が緊急参加した。
三枝は、メールヘッダーを共有した。
From: notice@suruga-ml.co.jpReturn-Path: bounce@mailer.suruga-ml.co.jpDKIM-Signature: selector=mk2026Authentication-Results: spf=pass dkim=pass dmarc=pass
久我が、画面を見て言った。
「DKIMセレクタが mk2026 です」
三枝はDNSを確認した。
mk2026._domainkey.suruga-ml.co.jp
TXTレコードあり。
公開鍵が残っている。
用途欄。
旧メールマーケティング基盤
所有者。
営業企画部。
外部サービス。
MailKite Campaign Cloud
契約状態。
終了済み。
三枝は、目を閉じた。
「旧メールマーケティング基盤のDKIMキーです。まだDNSに残っています」
秋山が言った。
「MailKiteは、数年前に取引先向けセミナー案内で使っていたサービスです。今は使っていないはずです」
山崎が、すぐに言った。
「はず、ですね」
黒崎が、MailKiteの管理画面を開いた。
ログインできる。
管理者一覧。
campaign-adminsales-newsletter-ownermailkite-support-legacy
状態。
Active。
APIキー。
mailkite-api-legacy-send
最終送信。
本日七時二十八分。
三枝は、喉の奥が乾いた。
「MailKiteから送信されています。APIキーはlegacy-sendです」
久我が言った。
「旧メール配信サービスが、まだ当社ドメインで署名できる状態でした。だからDKIMがpassし、DMARCも通った」
山崎は、ホワイトボードに整理した。
本物のドメイン旧メール配信サービス残存DKIMキー旧APIキー正式発信ではないメール
そして言った。
「これは、差出人の封筒が本物に見える攻撃です」
三枝は、時系列表を開いた。
07:50 取引先より、notice@suruga-ml.co.jp 差出人の“確認方法変更”メールについて照会。ヘッダー上、SPF/DKIM/DMARC pass。DKIM selectorはmk2026。DNS上、mk2026._domainkey は旧メールマーケティング基盤MailKite用として残存。MailKite管理画面でmailkite-api-legacy-sendによる本日07:28送信ログを確認。
保存。
午前八時十五分。
Blue Heronからメールが届いた。
件名は、Passed。
本文は、短かった。
SPF passed.DKIM passed.DMARC passed.People passed too.
SPFは通った。DKIMは通った。DMARCは通った。人も通った。
その下には、メール認証結果のスクリーンショットが貼られていた。
三枝は、保全した。
望月は、画面を見て言った。
「人も通った、とは」
営業部長が答えた。
「一部の取引先は、当社ドメインでDMARCも通っているので、本物だと思いかけたようです。ただ、昨日の注意喚起で確認してくれました」
山崎が頷いた。
「取引先が確認したことが、また防御になりました」
久我が言った。
「技術的には、DMARC passは“そのドメインから送信を認められた仕組みを通った”ことを示します。しかし、会社の現行承認や正しい内容までは示しません」
山崎は、ホワイトボードの文を指した。
メール認証 pass ≠ 会社の正式発信
「これを、取引先にも伝える必要があります」
三枝は入力した。
08:15 不明差出人より件名“Passed”のメール受信。SPF/DKIM/DMARC passを示し、“人も通った”と記載。攻撃者がメール認証結果を正式発信と混同させる意図の可能性。証跡保全。
保存。
午前八時四十分。
MailKiteの緊急封じ込めが始まった。
三枝は、ログを保全した。
送信キャンペーン名。
contact_method_update_final
送信先リスト。
customer_priority_contacts_2026
送信件数。
三百八十二件。
配信成功。
二百九十一件。
開封。
四十三件。
リンククリック。
七件。
三枝は、声を低くした。
「七件、リンククリックがあります」
会議室が静かになった。
営業部長が、すぐに言った。
「対象取引先を確認します」
山崎が止めた。
「リンク先への入力有無も確認してください。クリックしただけか、情報を入力したか」
久我が言った。
「偽サイト側のログは攻撃者側なので見えません。ただ、取引先へすぐ連絡し、入力有無を確認します。こちらのメールゲートウェイとプロキシログも見ます」
三枝は、MailKiteでキャンペーンを停止した。
Campaign paused
APIキーを無効化。
mailkite-api-legacy-send: Revoked
管理者アカウントを停止。
mailkite-support-legacy: Disabled
DNSのDKIMレコードを削除する前に、山崎が言った。
「保全してから」
三枝は頷いた。
DNSレコード保全。公開鍵保全。TXT履歴保全。MailKite側DKIM設定保全。DMARC aggregateログ保全。
その後、mk2026._domainkeyを無効化。
SPFのincludeも確認する。
SPFには、まだ include:mailkite.example が残っていた。
それも削除候補として保全後、無効化。
三枝は入力した。
08:47 MailKite送信キャンペーンcontact_method_update_finalを確認。送信382件、配信成功291件、開封43件、リンククリック7件。キャンペーン停止、mailkite-api-legacy-send失効、mailkite-support-legacy停止。mk2026 DKIMレコードおよびSPF includeを保全後無効化。
保存。
午前九時十分。
取引先への緊急連絡が始まった。
対象は、リンククリックが確認された七件。
営業部は、登録済み連絡先へ電話した。
偽メールのリンクを開いたか。問い合わせ番号、受領確認番号、担当者メール、緊急連絡先を入力したか。添付を開いたか。社内で転送したか。
一件目。
閲覧のみ。入力なし。
二件目。
問い合わせ番号を入力。担当者メールも入力。受領確認番号は入力なし。
三件目。
リンクを開いたが、注意喚起を思い出して閉じた。
四件目。
社内の別部署へ転送。
五件目。
入力なし。
六件目。
確認中。
七件目。
受領確認番号を入力した可能性。
三枝は、入力内容を分類した。
流出可能性情報
問い合わせ番号。担当者メール。受領確認番号。偽サイト閲覧情報。
山崎が言った。
「これらは、二次攻撃に使われます。対象取引先へ、相互確認番号の再発行や注意喚起が必要です」
大石が言った。
「受領確認番号を入れたところは、配送確認をやり直しましょう」
望月が頷いた。
「お願いします」
三枝は入力した。
09:12 MailKite偽確認方法変更メールのリンククリック7件について、登録済み連絡先で確認開始。現時点で問い合わせ番号・担当者メール・受領確認番号の入力可能性あり。対象取引先へ二次攻撃注意、相互確認番号再発行、重要配送確認強化を実施。
保存。
午前九時四十五分。
MailKite社との緊急会議が始まった。
相手は、カスタマーセキュリティ担当の松永と、技術担当の李。
山崎が質問した。
「当社の旧MailKiteアカウントから、本日七時二十八分に contact_method_update_final というキャンペーンが送信されています。当社では送信していません。御社側でも確認できますか」
松永は答えた。
「はい。御社テナント内からAPI経由で送信されています」
久我が聞いた。
「APIキーは」
李が答えた。
「mailkite-api-legacy-send です。過去に発行された送信用APIキーです」
「MFAは」
「API送信では不要です」
「送信元IPは」
「国内クラウド事業者です。不審なレンジと一致するか、ログを提供します」
山崎が聞いた。
「DKIMキー mk2026 は、御社サービスに紐づくものですね」
「はい。御社ドメインでメール認証を通すためのDKIMキーです。DNSに公開鍵が残っており、御社テナント側でも送信が有効でした」
山崎は、静かに言った。
「MailKite契約は終了している認識でした」
松永は、少し言いにくそうに答えた。
「御社テナントは休止状態でしたが、完全削除ではありません。送信APIキーが残っていたため、API経由では送信可能な状態でした」
黒崎が、低く言った。
「休止状態なのに送れる」
山崎は、ホワイトボードに書いた。
休止 ≠ 送信不能
三枝は、時系列表に入力した。
09:50 MailKite社確認。偽メールは駿河ML旧テナントからAPI経由送信。使用APIキーはmailkite-api-legacy-send。旧テナントは休止状態だが完全削除ではなく、API経由送信可能だった。mk2026 DKIM公開鍵がDNSに残存し、MailKite側送信設定も有効だったためSPF/DKIM/DMARC pass。
保存。
午前十時二十分。
Blue Heronからメールが届いた。
件名は、Paused is alive。
本文は、短い。
Paused things breathe quietly.
休止中のものは、静かに息をしている。
三枝は、保全した。
山崎が言った。
「休止状態も、終了ではありません」
秋山が頷いた。
「契約終了、休止、停止、削除。全部違いますね」
「はい」
山崎は、ホワイトボードに書いた。
休止・停止・削除・失効を分ける
久我が言った。
「サービスが休止中でも、APIキー、DKIM、SPF include、送信ドメイン、配信リストが残っていれば悪用できます」
大石が言った。
「現場の端末も、予備機が生きているのと同じですね」
山崎は頷いた。
「その通りです。予備、休止、旧、待機。どれも管理対象です」
三枝は入力した。
10:20 不明差出人より件名“Paused is alive”のメール受信。休止状態の旧MailKiteテナント悪用を示唆。“休止中のものは静かに息をしている”と記載。対応方針:休止・停止・削除・失効を区別し、休止サービスのAPIキー・DKIM・SPF・配信リストを終了管理対象化。
保存。
午前十一時。
DMARC集計レポートの確認が始まった。
三枝は、過去一週間分のDMARC aggregateを開いた。
正規メール基盤。PublicNoticeHub。取引先向け配信サービス。MailKite。
MailKiteからの送信は、ここ三か月ほぼゼロだった。だが、三週間前に少量のテスト送信がある。
送信元。
国内クラウドレンジ。
件数。
五件。
結果。
SPF pass。DKIM pass。DMARC pass。
件名はDMARC集計では見えない。だが、テスト送信だった可能性がある。
三枝は入力した。
11:04 DMARC aggregate確認。MailKite経由の正規送信は直近三か月ほぼゼロ。ただし三週間前に国内クラウドレンジから5件の送信があり、SPF/DKIM/DMARC pass。攻撃準備として送信可否をテストした可能性。
久我が言った。
「DMARCレポートは、かなり有用です。旧送信基盤の突然の復活を検知できます」
山崎が言った。
「DMARCレポートも、正式に監視しましょう。技術だけでなく、広報・法務総務も見られる形に」
秋山が頷いた。
「偽公式発信に直結しますからね」
三枝は、未了事項台帳に追加した。
U-174 メール送信元・DMARC・DKIMセレクタ棚卸し未整備
責任者。
三枝・広報・秋山
期限。
七日以内に初版
状態。
開始
保存。
午後零時。
取引先向けに、公式メール確認の注意喚起が出された。
山崎が整えた文面は、次のようなものだった。
当社公式ドメイン suruga-ml.co.jp から届いたように見えるメールであっても、確認方法変更、確認ポータル移行、問い合わせ番号・受領確認番号入力依頼、緊急連絡先変更依頼等を受けた場合は、登録済み連絡先でご確認ください。
SPF、DKIM、DMARC等のメール認証が通っていても、それだけで当社の現行承認フローを経た正式発信であることを示すものではありません。
当社の重要なお知らせは、公式サイト、問い合わせ番号、登録済み窓口、電子署名付きPDFの確認を組み合わせてご確認ください。
営業部長が言った。
「また“何を意味し、何を意味しないか”ですね」
山崎は頷いた。
「はい。メール認証は重要です。ただし、限界もあります」
望月が承認した。
「出してください」
三枝は、PublicNoticeHubから正式公開し、メールでも送信した。
今度の送信は、現行メール基盤。承認済み。DKIMセレクタも現行。Evidence Chain追加。
入力。
12:08 取引先向けに公式ドメインメール悪用に関する注意喚起を発信。SPF/DKIM/DMARC passは現行承認フローを保証しないこと、確認方法変更・ポータル移行・番号入力依頼は登録済み連絡先で確認することを案内。
保存。
午後一時十分。
Blue Heronからメールが届いた。
件名は、Mail lesson。
本文は、短かった。
Now you teach them not to trust your mail.Useful.
今度は、あなたたちのメールを信じるなと教えるのか。役に立つ。
三枝は、保全した。
望月は、画面を見て言った。
「違いますね」
山崎が頷いた。
「はい。メールを信じるな、ではありません。メールだけで信じるな、です」
秋山が言った。
「公式メールも、確認経路の一つ」
「はい」
山崎は答えた。
「単独の根に依存しない。これが今回の一貫した方針です」
三枝は入力した。
13:10 不明差出人より件名“Mail lesson”のメール受信。“当社メールを信じるなと教えている”と揶揄。対応方針:公式メールを否定するのではなく、公式メールを確認経路の一つとし、登録済み連絡先・公式サイト・問い合わせ番号・電子署名と組み合わせる。
保存。
午後二時。
メール送信元の棚卸しが本格化した。
現行送信基盤。
PublicNoticeHub。
取引先ポータル。
休止中。
MailKite。
旧イベント配信サービス。
旧アンケートメールサービス。
旧採用管理メール。
旧災害訓練一斉配信。
各サービスに、SPF include、DKIM selector、APIキー、配信リスト、管理者、契約状態、停止状況を記録する。
三枝は、驚いた。
「メール送信元、こんなにあります」
広報担当が言った。
「イベント、採用、アンケート、セミナー、訓練。部署ごとに使っていたので……」
山崎は頷いた。
「これも、会社の声の出口です」
ホワイトボードに書く。
メール送信元=会社の声の出口
久我が言った。
「SPF includeが増えすぎると管理不能になります。現行送信元を絞り、旧includeを削除します」
三枝は、棚卸し表にステータスを入れた。
現行。休止。終了予定。契約終了済み。削除済み。要確認。
契約終了済みでSPF/DKIMが残るものが、まだ複数あった。
三枝は、頭が痛くなった。
だが、見つけたなら閉じられる。
午後三時二十分。
MailKiteの旧配信リストも確認された。
customer_priority_contacts_2026
中には、重要取引先、病院、検査センター、物流協力会社の担当者メールが残っていた。
一部は古い。一部は現行。一部は退職済みの担当者。
山崎が言った。
「旧配信リストも個人情報です。さらに、攻撃者にとっては標的リストです」
秋山が頷いた。
「削除証明が必要です」
MailKite社へ、配信リスト削除、APIキー失効、テナント閉鎖、DKIM設定削除確認を依頼する。
三枝は入力した。
15:22 MailKite旧配信リストcustomer_priority_contacts_2026に重要取引先・病院・検査センター・物流協力会社担当者メールが残存。旧配信リストを個人情報および標的リストとして管理対象化。MailKite社へ配信リスト削除・テナント閉鎖・削除証明を依頼。
保存。
午後四時三十分。
Blue Heronからメールが届いた。
件名は、List breathes too。
本文は短い。
Old lists remember new people.
古いリストは、新しい人を覚えている。
三枝は、保全した。
営業部長が、苦い顔で言った。
「旧リストに現行担当者が残っているのは、営業が更新していたのかもしれません」
山崎が聞いた。
「休止中のサービスに、更新データが流れていた可能性がありますか」
三枝は連携を確認した。
旧MailKiteとCRMの同期が、停止予定のまま残っていた。
状態。
エラー多発。ただし、一部同期成功。
最終成功。
一か月前。
三枝は、顔をしかめた。
「CRM同期が残っています。一部、現行担当者情報が旧MailKiteに流れていました」
山崎が言った。
「休止サービスに、新しい情報が流れ続けていた」
ホワイトボードに書く。
休止サービスに新情報を送らない。
三枝は入力した。
16:34 旧MailKiteとCRMの同期が停止予定のまま残存し、一部同期成功により現行取引先担当者情報が旧配信リストへ流れていた可能性を確認。休止サービスへの新情報連携を停止。
保存。
また、終了管理。
サービスを使っていないつもりでも、裏でデータが流れていれば、終わっていない。
午後五時半。
メール送信元統制の方針案が作られた。
山崎が文面を整える。
メール送信元統制方針
一 会社ドメインで送信できるサービスを台帳管理する。
二 SPF include、DKIM selector、Return-Path、DMARC alignmentを送信元ごとに管理する。
三 契約終了・休止時に、APIキー、配信リスト、DKIM、SPF include、Webhook、CRM同期を削除・失効する。
四 休止中サービスへの新規データ同期を禁止する。
五 DMARC aggregateを監視し、休止中送信元からの送信を検知する。
六 重要なお知らせは、送信元ドメインだけでなく、問い合わせ番号、公式サイト、電子署名、登録済み連絡先で確認する。
七 メール認証 pass は重要だが、会社承認を示すものではないと明示する。
望月が頷いた。
「これを、会社の公式発信統制に入れます」
広報担当が言った。
「送信元を減らします」
黒崎が言った。
「SPFとDKIMの棚卸しを今日中に優先度Aだけ終わらせます」
三枝は、未了事項台帳を更新した。
午後六時四十五分。
対象七件の取引先確認が完了した。
問い合わせ番号入力。
二件。
担当者メール入力。
二件。
受領確認番号入力。
一件。
緊急連絡先入力。
なし。
対象取引先には、確認番号の再発行、担当者への注意喚起、偽ポータル入力情報の無効化、今後の確認方法が案内された。
大石が言った。
「受領確認番号が漏れた一件は、配送確認をやり直します」
営業部長が頷いた。
「取引先も協力してくれています」
山崎が言った。
「被害がゼロではありません。ただし、早期検知と確認で二次被害を抑えています」
三枝は入力した。
18:48 MailKite偽メールリンククリック7件の取引先確認完了。問い合わせ番号入力2件、担当者メール入力2件、受領確認番号入力1件、緊急連絡先入力なし。対象取引先へ確認番号再発行、注意喚起、偽ポータル入力情報無効化、重要配送確認強化を実施。
保存。
午後七時三十分。
Blue Heronから、その日最後のメールが届いた。
件名は、Passed, then failed。
本文は、一行。
The mail passed.The relationship failed us.
メールは通った。関係が我々を失敗させた。
三枝は、保全した。
山崎が言った。
「良い表現です。取引先が確認してくれたこと、当社が登録済み連絡先で確認したこと、公式サイトで注意喚起したこと。関係性が防御になりました」
望月が頷いた。
「メールだけではなく、関係で守る」
営業部長が言った。
「取引先との対話が、本当に防御になっていますね」
大石が続けた。
「現場と病院の確認も同じです」
三枝は、時系列表に入力した。
19:30 不明差出人より件名“Passed, then failed”のメール受信。“メールは通ったが関係が我々を失敗させた”と記載。取引先確認、登録済み連絡先、公式注意喚起、相互確認が防御として機能したことを確認。証跡保全。
保存。
午後八時半。
その日の最終会議で、山崎はまとめた。
ホワイトボードには、今日の言葉が並んでいる。
差出人の封筒メール認証 pass ≠ 会社の正式発信休止 ≠ 送信不能休止・停止・削除・失効を分けるメール送信元=会社の声の出口休止サービスに新情報を送らない
山崎は言った。
「今日、攻撃者は公式ドメインのメールを使いました。SPF、DKIM、DMARCは通っていました。しかし、現行承認を経た正式発信ではありませんでした」
望月が頷いた。
「公式メールでも、確認する」
「はい」
久我が言った。
「メール認証は必須です。ただ、旧サービスが認証を通せる状態なら、攻撃者も公式ドメインで送れます」
秋山が言った。
「契約終了時に、SPF、DKIM、配信リスト、APIキー、CRM同期まで削除確認します」
広報担当が言った。
「会社の声の出口を減らします」
営業部長が言った。
「取引先にも、メールだけで判断しないよう説明します」
三枝は、全員の発言を記録した。
会社の声は、メールからも出る。
その出口を、古いまま放置してはいけない。
午後十時。
三枝は、一人でDMARCレポートを見ていた。
正規のメール。偽ではないが旧サービスから出たメール。失敗したメール。拒否されたメール。取引先が確認したメール。
ログには、会社の声の軌跡が残っている。
三枝は、自分のノートに書いた。
メールは封筒である。封筒が本物でも、中の命令が本物とは限らない。だから、封筒と中身と経路を見る。
保存。
山崎が、背後から言った。
「今日の結論ですね」
三枝は、少し笑った。
「最近、だんだん短くなってきました」
「短いほど、現場に届きます」
三枝は、DMARCレポートを閉じた。
午前零時。
三枝は、時系列表の最後に入力した。
00:00 旧MailKiteメール配信基盤より、notice@suruga-ml.co.jpを差出人とし、SPF/DKIM/DMARC passとなる偽“確認方法変更”メールが取引先へ送信されたことを確認。旧DKIM selector mk2026、SPF include、mailkite-api-legacy-send、旧配信リスト、CRM同期が残存。キャンペーン停止、APIキー失効、旧DKIM・SPF無効化、旧管理者停止、取引先7件のリンククリック確認、入力情報無効化・確認番号再発行を実施。メール送信元・DMARC・DKIMセレクタ棚卸しを開始。
保存。
画面右下。
保存しました。
三枝は、自分のメモにも一行追加した。
会社の声は、出る場所をすべて数える。古い出口から、偽の声を出させない。
保存。
第三会議室の外では、倉庫が静かに動いていた。
電話。メール。サイト。通知。受領書。印。声。
会社には、いくつもの声の出口がある。
攻撃者は、その古い出口を探していた。
会社は、ようやくその出口を数え始めた。
そして、もう使わない出口には、鍵をかける。





コメント