他居然发邮件请我去吃饭——邮件伪造那些事儿

他居然发邮件请我去吃饭——邮件伪造那些事儿

今天中午吃午饭的时候,突然收到一封邮件,我一看,不得了啊,居然是美国前总统给我发来的邮件,还说要我助他一臂之力成为新总统。下午再看他的新闻,感觉他现在都自身难保了,怎么会请我吃饭呢?于是怀疑这封邮件是伪造的…

第一阶段:怀疑“李鬼”域名

刚开始我想是不是有人注册了和真实域名看起来很像的域名。通过比对这些字符的ASCII码,发现没问题啊,不是“李鬼”啊。

第二阶段:查看邮件真面目

先导出eml文件,然后双击打开看看。

看不出什么啊,这是因为打开方式不对啊。

用记事本打开,或者直接点击**【显示邮件原文】**。

初步看起来没什么问题,难道这封邮件是真的?还是他们的邮箱系统被黑客控制了?

第三阶段:原来是SMTP的锅~

其实这是利用了简单邮件传输协议 (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)的MX记录以获得目标域。MX记录包含收件人的域名和IP地址。
  • 一旦找到,MTA就与交换服务器建立连接并转发件。这种从一个SMTP服务器到另一个SMTP服务器的邮件传输被称为SMTP中继。而为了保持你的邮件顺利送达,有较高的送达率,可能需要SMTP中继服务。

第四阶段:怎么防范?

域名所有者也可采取措施来防止攻击者从其域发送消息。为此,组织可创建专用于身份验证的域名系统(DNS)记录。有三种主流的安全措施:

  • SPF
  • DKIM
  • DMARC

发件人策略框架(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/

原文地址:https://cloud.tencent.com/developer/article/2113469

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


学习编程是顺着互联网的发展潮流,是一件好事。新手如何学习编程?其实不难,不过在学习编程之前你得先了解你的目的是什么?这个很重要,因为目的决定你的发展方向、决定你的发展速度。
IT行业是什么工作做什么?IT行业的工作有:产品策划类、页面设计类、前端与移动、开发与测试、营销推广类、数据运营类、运营维护类、游戏相关类等,根据不同的分类下面有细分了不同的岗位。
女生学Java好就业吗?女生适合学Java编程吗?目前有不少女生学习Java开发,但要结合自身的情况,先了解自己适不适合去学习Java,不要盲目的选择不适合自己的Java培训班进行学习。只要肯下功夫钻研,多看、多想、多练
Can’t connect to local MySQL server through socket \'/var/lib/mysql/mysql.sock问题 1.进入mysql路径
oracle基本命令 一、登录操作 1.管理员登录 # 管理员登录 sqlplus / as sysdba 2.普通用户登录
一、背景 因为项目中需要通北京网络,所以需要连vpn,但是服务器有时候会断掉,所以写个shell脚本每五分钟去判断是否连接,于是就有下面的shell脚本。
BETWEEN 操作符选取介于两个值之间的数据范围内的值。这些值可以是数值、文本或者日期。
假如你已经使用过苹果开发者中心上架app,你肯定知道在苹果开发者中心的web界面,无法直接提交ipa文件,而是需要使用第三方工具,将ipa文件上传到构建版本,开...
下面的 SQL 语句指定了两个别名,一个是 name 列的别名,一个是 country 列的别名。**提示:**如果列名称包含空格,要求使用双引号或方括号:
在使用H5混合开发的app打包后,需要将ipa文件上传到appstore进行发布,就需要去苹果开发者中心进行发布。​
+----+--------------+---------------------------+-------+---------+
数组的声明并不是声明一个个单独的变量,比如 number0、number1、...、number99,而是声明一个数组变量,比如 numbers,然后使用 nu...
第一步:到appuploader官网下载辅助工具和iCloud驱动,使用前面创建的AppID登录。
如需删除表中的列,请使用下面的语法(请注意,某些数据库系统不允许这种在数据库表中删除列的方式):
前不久在制作win11pe,制作了一版,1.26GB,太大了,不满意,想再裁剪下,发现这次dism mount正常,commit或discard巨慢,以前都很快...
赛门铁克各个版本概览:https://knowledge.broadcom.com/external/article?legacyId=tech163829
实测Python 3.6.6用pip 21.3.1,再高就报错了,Python 3.10.7用pip 22.3.1是可以的
Broadcom Corporation (博通公司,股票代号AVGO)是全球领先的有线和无线通信半导体公司。其产品实现向家庭、 办公室和移动环境以及在这些环境...
发现个问题,server2016上安装了c4d这些版本,低版本的正常显示窗格,但红色圈出的高版本c4d打开后不显示窗格,
TAT:https://cloud.tencent.com/document/product/1340