某天,一封自稱來自自己公司網域的可疑郵件,發到了自己信箱——首先請放心,沒事。這多數情況下不是『被入侵』,而是『寄件人被冒充』。本文從防禦視角講解如何分辨,以及如何止住(不涉及攻擊的構造方法)。
先安心:冒充 ≠ 被入侵
這是最重要的誤解點。郵件信封上的『寄件人』,傳送方可以任意填寫。所以僅僅收到一封隨手寫著你網域的郵件,並不意味著家被人闖入了——這就是基本格局。
不過作為例外,郵件帳戶真的被入侵的情況也並非為零。而要區分這一點,讀郵件標頭就能看出來。
用郵件標頭分辨是『入侵』還是『冒充』
郵件在正文背後附帶著一份叫『郵件標頭』的投遞記錄(Gmail 裡可用『顯示原始郵件』來讀)。要看的要害有這 5 處。
| 郵件標頭 | 看哪裡 | 這樣讀 |
|---|---|---|
| Authentication-Results | spf= / dkim= / dmarc= 的結果 | 若 dmarc=fail,就是『正規認證沒通過=很可能是冒充』 |
| Received(會接連出現多條) | 最底下=最初的發信源 | 若是從你自己簽約的伺服器以外發出,就是『來自外部的冒充』 |
| Return-Path(信封上的寄件人) | 是否與可見的 From 一致 | 不一致=冒充的訊號 |
| Reply-To(回覆地址) | 回覆會飛到哪裡 | From 看著像公司內部,回覆地址卻是無關的外部 → 讓你回覆給寄件人的手法 |
| X-Mailer(傳送軟體名) | 是不是正經名字 | 莫名其妙的隨機字串=自動垃圾郵件工具的典型特徵 |
尤其容易被忽略的是 Reply-To。From 哪怕長得和公司同事一模一樣,一回覆卻寄到了完全不同的外部地址,對方就在那裡誘導你照其要求把機密或聯絡方式(聊天的 QR Code 等)回覆過去,藉此劫持聯絡管道。不要只憑 From 的外觀就信任,這是人這一側最大的防禦(→ 什麼是釣魚)。
為什麼它能進到收件匣
冒充郵件連垃圾郵件都不算就進來了,是因為接收方沒有『拒絕假貨的依據』。
沒有 DMARC 的方針
如果你的網域沒有設定 DMARC 策略,接收方即便偵測到 From 被冒充也無法強制拒絕。這是它能進到收件匣的最大主因。
SPF 設定為不拒絕(~all)
若 SPF 結尾是 ~all(軟失敗=『可疑但不拒絕』),接收方就缺少拒絕它的明確依據。
轉寄會破壞 SPF
把收到的郵件轉寄到別的地址時,SPF 會以轉寄源伺服器為基準看起來是『pass』,但 From 仍是別的網域。對這種不一致做出最終判定的,正是 DMARC。
這裡起作用的是 DKIM 簽章。SPF 會被轉寄破壞,但 DKIM 簽章即便被轉寄仍然有效。提升到拒絕(reject)後,讓正規郵件不被誤拒的正是 DKIM,這就是要先設定 DKIM 的理由。
修復辦法:SPF → DKIM → DMARC 分階段
機制的細節交給 什麼是 SPF / DKIM / DMARC,這裡只講安全的順序。最重要的一點是 不要一上來就拒絕。
把 SPF 只設一條且設對
啟用 DKIM 簽章(最先做)
DMARC 從 p=none(僅監控)開始
p=none +接收報告,觀察 1~2 週,看 正規郵件會不會被拒絕。分階段提升到 reject
p=quarantine → p=reject。最終達成『冒充在接收方就被拒絕』,這時這次這種郵件才會在 到達對方收件匣之前就被拒絕。缺少的設定因網域而異
逐個檢查多個網域,會發現一件有趣的事:缺少的設定往往恰好相反。原因在於『傳送的機制不同=服務自動幫你做掉的範圍不同』。
郵件投遞服務型
- 例:交易郵件從外部的投遞服務發出的架構
- DKIM / DMARC 在初始設定裡就自動容易設上
- 而唯獨 SPF 需要自己在 DNS 裡追加 → 那一處容易漏
主機代管標準型
- 例:從租用伺服器直接傳送的架構
- SPF 大多一開始就有
- 而DKIM 要手動打開、DMARC 要自己發布 → 這兩個容易漏
兩者在『三個沒設齊』這點上是一樣的,只是缺少的部分正好相反。先搞清楚自己網域屬於哪一種模式,這是第一步。
本站的視角:光設定還不夠,要檢查過才會生效
本站認為,郵件認證並非『設定完就完事』,而是『檢查過才會生效』。自己的網域可以用 SPF / DKIM / DMARC 檢測器 或 網站綜合安全診斷 一次確認現狀。
單單一個設定值也需要留意。比如沒有設定失敗報告的傳送地址(ruf),卻加了 fo,它不會有任何作用;按規範只會被忽略。這種經審查才發現的『無害但無意義的設定』並不少見。
最重要的是兩件事:讓接收方拒絕冒充郵件(DMARC),以及人不要回覆假郵件。在檢測和設定之前,先放上用機制來阻止的設計。