今天中午吃午饭的时候,突然收到一封邮件,我一看,不得了啊,居然是美国前总统给我发来的邮件,还说要我助他一臂之力成为新总统。下午再看他的新闻,感觉他现在都自身难保了,怎么会请我吃饭呢?于是怀疑这封邮件是伪造的…
刚开始我想是不是有人注册了和真实域名看起来很像的域名。通过比对这些字符的ASCII码,发现没问题啊,不是“李鬼”啊。
先导出eml文件,然后双击打开看看。
看不出什么啊,这是因为打开方式不对啊。
用记事本打开,或者直接点击**【显示邮件原文】**。
初步看起来没什么问题,难道这封邮件是真的?还是他们的邮箱系统被黑客控制了?
其实这是利用了简单邮件传输协议 (SMTP) 中的漏洞,因为简单邮件传输协议 (SMTP) 不提供地址验证机制。尽管已经开发了电子邮件地址身份验证协议和机制来对抗这些邮件伪造,但这些机制的效率很低。
通常攻击者会伪造“From” , “Return-path”和 “Reply-to”字段,如果没有启用验证机制,那么你的邮箱就会直接解析这些字段。
图片来源:What is SMTP: Types, Components, & How it Works
https://www.mailmodo.com/guides/smtp/
那么SMTP发送邮件的流程是怎么样的呢?
如何使用SMTP发送电子邮件? 通过SMTP端口发送电子邮件的过程包括以下连续的步骤。 首先在邮件传输代理(MTA)程序的帮助下,用户发送一封电子邮件。邮件的内容由两部分组成,即邮件标题和邮件正文。标题是邮件的主题,而正文是主要内容。发件人和收件人地址也在邮件头部分。标头就像一个信封,装着信件(信息)。 然后邮件客户端(邮件用户代理,MUA)使用TCP端口587或传统端口25的SMTP将邮件提交给邮件服务器(被称为邮件提交代理,MSA)。MSA进一步将邮件传递给其邮件传输代理,MTA。 电子邮件地址有两个部分分别是收件人的用户名和域名。例如,test@gmail.com,'test’是用户名,而’gmail.com’是域名。
如果收件人的电子邮件地址的域名与发件人的域名不一致,那么邮件提交代理(MSA)将把邮件发送到(MTA)。MTA将搜索特定的域名来转发该邮件,分为下面两个步骤:
域名所有者也可采取措施来防止攻击者从其域发送消息。为此,组织可创建专用于身份验证的域名系统(DNS)记录。有三种主流的安全措施:
发件人策略框架(SPF)是Sender Policy Framework 的缩写,是一种依据IP地址进行认证的机制。邮件接收方会列出该邮件发送方域名被授权的服务器IP,并判断发送方IP是否在该列表中,如果在,就接收,不在,就退回。
我们能够看到发送邮件的服务器IP是来自杭州的,老川现在还在美国惹上麻烦事了,应该不会用阿里云的服务器做邮箱服务器吧~
域名密匙确认邮件(DKIM)使用一对密钥来进行身份验证,将公钥放置在DKIM记录中,然后发送方对DKIM头使用私钥进行数字签名。如果是假冒的,DKIM记录中的公钥就能确实私钥是错误的,邮件是伪造的。
基于域名的消息认证报告与一致性(DMARC)记录(Domain-based Message Authentication, Reporting & Conformance)是一种基于现有的SPF和DKIM协议的可扩展电子邮件认证协议。其核心思想是邮件的发送方通过特定方式(DNS)公开表明自己会用到的发件服务器(SPF)、并对发出的邮件内容进行签名(DKIM),而邮件的接收方则检查收到的邮件是否来自发送方授权过的服务器并核对签名是否有效。对于未通过前述检查的邮件,接收方则按照发送方指定的策略进行处理,如直接投入垃圾箱或拒收。从而有效识别并拦截欺诈邮件和钓鱼邮件,保障用户个人信息安全。
参考:
https://www.mailmodo.com/guides/smtp/
https://www.cloudflare.com/zh-cn/learning/email-security/what-is-email-spoofing/
https://www.usenix.org/conference/usenixsecurity21/presentation/shen-kaiwen
https://xz.aliyun.com/t/6325/