即使检查显示“通过”,邮件也可能在说谎
在一项已有几十年历史的技术背后,攻击者学会了钻规则的空子。人们给电子邮件加上了身份检查,而且这些检查确实有效。但它们只回答一个问题:这封邮件从哪里来?却从不回答最重要的那个:它说的是真话吗?
第一个谎言:“我是您的银行”
故事从一封邮件开始,就像每天收到的成千上万封邮件一样:
发件人:support@mybank.example
主题:⚠️ 您的账户将于今天被冻结
一切看起来都很正常:标志、签名、地址、专业的语气。但这封邮件到底是谁发的?
这里我们会发现互联网留下的一个奇怪遗产:电子邮件在诞生之初,就没有被设计成能证明发件人身份。
是明信片,不是挂号信
发送电子邮件有点像寄明信片:写好内容,写上寄件人姓名,邮递员负责投递。但邮递员并不会核实写上的名字是否真的属于寄出明信片的人。(想一步步跟随这位邮递员,请看指南一封电子邮件如何从发件人到达收件人。)
最早的邮件协议诞生在一个很小的互联网里,那时大家差不多彼此相识,信任是理所当然的。如今,同样的技术承载着我们大量的通信。不可能把一切关掉再把电子邮件好好重建一遍:那就像在飞行途中更换飞机的发动机。
门口的三位检查员:SPF、DKIM 和 DMARC
既然无法推倒重来,工程师们就在上面加了几道身份检查。与其看技术定义,不如把它们想象成站在您邮箱门口的三个角色。
- SPF,侦探:“这台机器有权代表这个域名发邮件吗?”域名会公布它授权的服务器名单,侦探逐一核对。
- DKIM,印章守护者:“这封邮件带有该域名的数字签名吗?签名完好吗?”就像火漆印章一样,它能证明邮件确实来自该域名的基础设施,并且在途中没有被改动。
- DMARC,门卫:“如果对不上,该怎么办?”域名给它留下指令:放行、放入垃圾邮件,或者拒收。
纸面上看,这很可靠。那攻击者为什么还能混进来?
反转:一封真实的邮件……照样是骗局
这正是问题的核心。三位检查员核查的是邮件的技术身份。但至少有四种办法,可以获得一个完全有效的技术身份。
陷阱一:几乎完美的假域名
攻击者注册一个自己的域名,看起来和银行的一模一样:
support@mybank-pr1vate.example (而不是 mybank-private)
一个简单的“1”替换了“i”。攻击者把 SPF、DKIM 和 DMARC 都配置得好好的:这是他自己的域名,他有这个权利。于是检查员们非常诚实地回答:✅“这个域名确实有权发送这封邮件。”与此同时,读者的大脑读到的是:😱“是我的银行!”
工具核查的是谁在发送,却理解不了邮件的意图。
陷阱二:被遗忘的后门
一家大银行拥有数百个子域名:一个用于促销,一个用于早年的抽奖活动,一个用于五年前就停掉的服务……在某个角落,promo.old-bank.example 依然存在,却早已没人真正管理。
如果这个子域名还指向一个已不存在的服务,或者防护薄弱,攻击者有时就能夺取它的控制权。他不必撬开正门,只需找到一扇大家都忘了的侧门。而他在那里发布的任何内容,都挂着银行的真名。
陷阱三:偷走真正的钥匙
如果攻击者连假地址都不做呢?如果他偷到了一名真实员工的密码(例如通过之前的一次网络钓鱼),他的邮件就会从公司真正的基础设施发出。SPF、DKIM 和 DMARC 一切正常,而且理所当然:一切都是真的。这一次不再是假身份,而是被错误的人使用的真身份。
陷阱四:混进人人都在用的工具里
企业通过专门的平台发送新闻简报和营销活动,这些平台知名度高、在过滤器那里信誉良好。当平台配置不当,或其中某个客户账户被盗时,攻击者就可能滥用它们。所以攻击者并不总是自建系统:有时他会钻进别人的系统,在那里不引人注意。指南网络钓鱼:诈骗者如何让邮件成功送达详细介绍了这些发送手法。
SPF、DKIM 和 DMARC 能帮助核实邮件的技术身份。但单靠它们,无法判断邮件内容是否属实。这就像确认了信封是真的,却无法保证里面的信没有说谎。
有时,问题在攻击者出现之前就已经开始
回到现实。邮件服务器能运转,并不代表它是安全的。
“复制粘贴”陷阱
一位管理员搜索“快速安装 Postfix 服务器”,找到一篇教程,复制命令,然后……成功运行了。故事结束了吗?未必。能让人快速上手的配置,不一定是加固过的配置,也就是专门为抵御攻击而调整过的配置。
变成垃圾邮件机器的服务器
错误的配置可能把服务器变成开放中继(open relay):一台愿意替任何人转发邮件的机器,而它本该只为自己的用户服务。对攻击者来说,这简直是天上掉馅饼:一台信誉良好的正规服务器,替他发送邮件。
而且根本不用手动去找。流程很简单:扫描 → 测试 → 发现 → 利用,完全可以自动化。所以,这不一定是一个坐在屏幕前寻找受害者的攻击者,往往是机器在日夜不停地寻找其他机器。
我们还在思考,机器已经在进攻
一封恶意邮件可以在几分钟内完成发送 → 接收 → 打开 → 点击 → 被利用。与此同时,在防守一方,系统要分析邮件,团队要收到警报,要有人解读警报,然后还要更新过滤规则。每一分钟都很关键。
由此得出一个简单的道理:没人监控的安全系统,终究会变得不再真正安全。规则会过时,攻击者会适应,警报会堆积如山、无人查看。
为了争取这几分钟,我们打造了 Baitback:粘贴可疑邮件,工具会找出真正发送它的服务器及其托管商,并准备好举报。发送服务器被举报得越早,就能越快被关停。
能让电子邮件万无一失吗?
单靠一项技术大概做不到,因为问题有好几层:
- 📨 协议:诞生于另一个时代,为另一个互联网而设计。
- 🔐 基础设施:有时配置不当,有时老化,有时被遗忘。
- 🤖 检测系统:能发现极多问题,但不是全部。
- 🧑 人:能嗅出陷阱……也会被操纵。
如果单靠技术不够,研究人员又在做什么,让检测变得更聪明?这就是下一篇指南的主题:网络钓鱼:研究人员与攻击者之间的猫鼠游戏。
- 电子邮件并非为证明发件人身份而设计:SPF、DKIM 和 DMARC 都是后来加上的。
- 这些检查核实的是邮件的技术身份(信封),而不是内容是否诚实(信)。
- 仿冒域名、被遗忘的子域名、被盗账户或被滥用的发送平台,都能产生一封“有效”的邮件。
- 配置不当的服务器可能沦为垃圾邮件发送者的中继,并被机器人自动发现。
- 速度很重要:尽早举报发送服务器(例如借助 Baitback),能缩短一场攻击活动的寿命。