基于SPF 和DMARC 协议应用分析的邮件安全形势研究*

2022-01-25 14:11郭凤婵
通信技术 2021年12期
关键词:域名电子邮件攻击者

崔 宁,薛 质,施 勇,郭凤婵

(1.上海交通大学 网络空间安全学院,上海 200240;2.广东电网公司 江门供电局,广东江门 529099)

0 引言

当前,电子邮件是互联网中应用最广的服务之一,在网络通信中扮演着十分重要的角色。近年来,根据反钓鱼网络工作组(Anti-Phishing WorkingGroup,APWG)最新发布的网络钓鱼活动趋势报告显示,网络钓鱼在2021 年第一季度继续保持创纪录的增长水平[1]。报告显示,网络钓鱼数量在2021 年1 月达到峰值,创下245 771 个的历史高位[2]。而针对商务电子邮件攻击,黑客最常用的手段就是网络钓鱼[3]。网络钓鱼电子邮件攻击指,攻击者利用仿冒的电子邮件欺骗受害者将账户、口令等信息内容发送给特定的接受者;或者是指,引导受害者点击仿冒正常网页的页面,如仿冒的金融机构或投资理财的网页页面,从而导致账户名称及登陆密码等被窃取。这种攻击也让越来越多的企业遭受经济损失,甚至会导致整个公司无法正常运转。为了确保公司交易的机密,各大公司都逐渐开始重视电子邮件安全。现实应用中,由于简单邮件传输协议(Simple Mail Transfer Protocol,SMTP)并没有过多的安全性设计[4],因此电子邮件系统的安全性基本依赖于之后添加的SPF[5]、DKIM[6]、DMARC[7]等安全协议,但是这些协议目前各公司的采用率却并没有很高。

现阶段,电子邮件身份认证有发件人策略框架(Sender Policy Framework,SPF)、域名密钥识(DomainKeys Identified Mail,DKIM)、基于域的消息认证、报告和一致性(Domain-based Message Authentication,Reporting and Conformance,DMARC)这3 种安全扩展协议。SPF 可防止域名欺骗,令邮件服务器能够确定邮件是何时从其所用域名发出的。DKIM 协议可确保邮件内容不被偷窥或篡改。DMARC 协议以一组协调一致的策略融合了SPF 和DKIM 协议,能够将发件人域名与邮件头中“From:”域列出的内容相关联,还具备更好的收件人反馈机制[8]。三大电子邮件安全协议互为补充,可为电子邮件提供最佳的安全防护。但是,根据笔者日常的工作经验发现,很多公司甚至一些世界500 强的大公司,都没有使用或错误配置了SPF和DMARC 这两种最被接受和使用的电子邮件安全机制,所有域的SPF 和DMARC 记录都可以公开查询。这意味着如果出现配置问题,任何攻击者都可以掌握情况并发起钓鱼攻击,并且攻击的结果是可预测的。

1 相关工作

当前,一种新的电子邮件安全标准,称为命名实体的基于DNS的身份验证(DNS-based authentication,DANE)[9],它为邮件传输提供了更安全的方法。DANE 依靠域名系统安全扩展(Domain Name System Security Extensions,DNSSEC)[10]来实现完整性和真实性。目前DANE 很少使用,流行起来还需要时间。而本文工作侧重于使用最广泛的电子邮件安全框架SPF 和DMARC,并尝试调查和分析现有安全机制的实施不足并提供解决方案。

与此同时,许多研究人员对SPF、DKIM 和DMARC的部署进行了深度研究[11-13]。目前邮件认证技术主要包括基于IP的认证与基于加密的认证两大类[14]。目前,美国国土安全部要求所有联邦机构部署严格DMARC 政策[15]。同时,也已经开发出新的协议来增强欺骗检测,比如经过身份验证的接 收链(Authenticated receiving chain,ARC)[16]。ARC 建立在SPF、DKIM 和DMARC 之上,旨在解决修改邮件转发器导致的认证失败问题。ARC 允许每个邮件转发器将他们的身份验证评估结果附加到转发的邮件中,以便接收服务器可以根据早期转发器的身份验证结果做出明智的决定。由于ARC 依赖于DMARC 验证的正确性,所以仍不能解决问题。

开放完美隐私(OpenPretty Good Privacy,OpenPGP)[17]和安全多用途Internet 邮件扩展(Secure Multipurpose Internet Mail Extensions,S/MIME)[18]是通过数字签名提供端到端消息真实性的标准。研究人员发现许多电子邮件客户端容易受到签名欺骗或纯文本渗漏攻击。他们的一些攻击会制作格式错误的MIME 消息,以利用签名验证程序和电子邮件显示组件之间的不一致。

有许多研究讨论基于从电子邮件内容和标题中提取的特征的网络钓鱼检测方法,其中大部分依赖于机器学习和深度学习。基于公共和私人收集的电子邮件数据集构建他们的模型,并使用自然语言处理(Natural Language Processing,NLP)方法处理电子邮件样本,包括词频-逆文档频率(term frequency-inverse document frequency,TF-IDF)、词袋(Bag of Words,BoW)等[19]。使用来自UCI存储库的垃圾邮件数据集,以及用于特征选择的多节优化器(Multi-Verse Optimizer)和K-最近邻算法(K-Nearest Neighbor,KNN),并实现了高精度[20]。使用常见的NLP 文本处理方法,如BoW 和TF-IDF文本表示进行特征提取[21]。他们将多种机器学习和深度学习算法用于检测模型,发现各种深度学习架构的性能非常接近。

本文扫描并分析目前世界上影响力最大的4 800多个公司或组织的域,发现90%以上的域存在SPF 配置问题,70%以上的域存在DMARC 配置问题。并针对发现的问题,提出SPF和DMARC的全面配置建议。

2 背景介绍

2.1 电子邮件服务介绍以及SMTP 缺陷

SMTP 是用于电子邮件传输的因特网(Internet)标准[4],它于1982 年设计。图1 显示了典型的电子邮件传输过程。SMTP的一个关键限制是它没有内置的安全功能来防止人们(攻击者)冒充或欺骗任意发件人地址。

电子邮件服务的简易工作流程如图1 所示。在电子邮件系统中,主要涉及到4 个角色,分别为发件人、收件人、转发者和用户界面(User Interface,UI)渲染器。每个角色应承担不同的安全职责。发件人写的电子邮件是从邮件用户代理(Mail Transfer Agent,MUA)通过SMTP 或超文本传输协议(Hyper Text Transfer Protocol,HTTP)协议传送到发件人的邮件传输代理(MailTransferAgent,MTA)。发送方的MTA 通过SMTP 协议将邮件发送给接收方的MTA,接收方的MTA 通过HTTP、交互式邮件存取协议(Internet Mail Access Protocol,IMAP)或邮局协议版本3(Post Office Protocol -Version 3,POP3)协议将邮件内容发送给接收方的MUA[9]。

图1 电子邮件工作流程

攻击者在执行欺骗攻击,有以下流程。首先,在建立SMTP 连接后,攻击者可以使用“MAIL FROM”命令将发件人地址设置为他们想要模拟的任何人。其次,“MAIL FROM”地址作为“Return-Path”插入到头部。同时,攻击者还可以修改电子邮件标头中名为“发件人”的另一个字段,该“发件人”字段可以指定显示在电子邮件界面上的地址。当用户收到电子邮件时,用户将看到“发件人”地址。如果用户回复邮件,回复信息将转到“MAIL FROM”设置的“Return-Path”,这就是电子邮件欺骗。电子邮件欺骗是网络钓鱼攻击获取受害者信任的关键步骤。

2.2 SPF 协议

使用域名系统(DomainNameSystem,DNS)允许域所有者创建一种记录,该记录可以将地址域名与授权邮件发送代理(MailSendingAgent,MSA)使用的一个或多个IP 地址块相关联。

一般使用的SPFTXT 记录示例为:

“v=spf1 ip4:202.112.26.0/24 -all”

各字段含义如表1 所示。

表1 SPF TXT 记录示例字段含义

假设邮件服务器收到一封邮件,来自主机地址是202.112.26.1,并且声称发件人是email@example.com。邮件服务器为了确认发件人不是伪造的,会查询example.com的SPF 记录。如果域的SPF 记录设置允许IP 地址202.112.26.1 发送邮件,服务器会通过SPF 检查,认为邮件是合法的;如果不允许,它通常会退回邮件或将其标记为垃圾邮件或假冒邮件。

2.3 DKIM

DKIM 定义了一种签名机制,该机制使用非对称加密技术对电子邮件消息进行加密和签名,电子邮件收件人可以通过签名确定邮件来自何处。[6]

消息接收者可以通过直接查询签名者的域并检索公钥来验证签名,从而确认消息是由拥有签名域私钥的一方发送的。消息签名写在消息头域中,这样消息体中签名相关的内容就不会造成混淆。如果出现签名验证失败,邮件则会被拒绝。

DKIM 和SPF 可以严格限制域名来源的合法性,但不能限制域名的子域名,即子域名不会受到保护。DMARC 声明放在顶级域名上以保护子域。一些公司在同一个公司邮箱提供商处注册了公司邮箱,他们的SPF 记录都指向同一个IP 列表。

2.4 DMARC

Paypal,Google,微软,雅虎等公司建立了这样一种反馈机制,让发送域所有者知道其SPF 和DKIM 策略的比例有效性,并向接收器发送在攻击场景中应该采取什么行动。在设置策略以建议接收者发送、隔离或拒绝SPF、DKIM 失败的邮件后,邮件服务器将电子邮件处理的DMARC 聚合和/或失败报告返回给域所有者,域所有者可以查看结果并可能细化策略。图2 是DMARC的基本工作流程。

图2 DMARC 工作流程

与example.com 关联的示例DMARC TXT 记录将在DNS 中_dmarc.example.com 上发布,记录是:

“v=DMARC1;adkim=r;aspf=s;p=none;pct=100;

rf=afrf;ri=86400;ruf=mail:test.example.com;”

各字段含义如表2 所示。

表2 DMARC TXT 记录示例字段含义

其中最重要的机制是p。它包含三个选项,即“无(none)”“隔离(quarantine)”和“拒绝(reject)”。对于未通过DMARC 检查的邮件,如果将“p”设置为“none”,则服务器将不对邮件采取任何操作并接收;如果“p”设置为“reject”,服务器会在邮件到达客户端之前直接拒绝邮件。当“p”设置为“quarantine”时,会发生什么取决于服务器/客户端设置,邮件可能会被放入隔离区或垃圾邮件文件夹以进行进一步调查,或者被接受并通知用户这是一封可疑邮件。

虽然DMARC 可以很大程度遏制欺骗和网络钓鱼,但它确实需要详细配置。转发邮件的中介有很多正当理由重写标头,通常与操作邮件列表、邮件组和最终用户邮件转发等合法活动有关。需要注意的是,邮件服务器转发会改变源IP 地址,并且无需重写“envelope-From:”字段,这可能会使SPF检查失败。另一方面,标题重写或向邮件内容添加页脚可能会导致DKIM 签名失败。这两种干预都会导致DKIM 验证和消息传递出现问题。

3 实验及结果分析

本节将介绍本文电子邮件安全评估的基本信息、范围、结果和主要发现。

3.1 实验数据

笔者分别从中国各个行业中筛选出公司或组织,其中包括中国服饰70 强、中国国企100 强、中国互联网100 强、中国建筑业100 强、中国运输业100 强、中国银行100 强、中国饮食业100 强、中国医疗机构100 强、中国制药业200 强以及上海民企100 强。同时还在世界500 强公司、中国500强公司、Alexa排名前3 000(Alexa Top Domains 3000)和谷歌排名前200(Google Top Domains 200)中选择了4 819 个域。

本文的评估是针对已启用邮件服务且具有正常邮件交换(mail exchanger,MX)配置记录的域。在运行MX 服务扫描后,最终选择了4 253 个域名作为评估范围。评估侧重于测试域的SPF 和DMARC 配置。本文编写了脚本来扫描被测域名并查询MX 记录、SPF 记录和DMARC 记录,然后使用MXToolBox 来确认第一次脚本检查的结果并实施进一步的安全评估,以检查SPF 和MARC 配置是否满足电子邮件安全要求。

3.2 实验环境

实验环境的软硬件配置信息如表3 所示。

表3 配置情况

3.3 评估结果和分析

3.3.1 风险分析

本文将评估中发现的配置问题根据对邮件系统安全的风险程度分为高风险和低风险。其中高风险的几种情况如下文所述。

(1)找不到SPF 记录或SPF 语法无效。部分域没有SPF 配置或SPF 记录有语法错误,无法生效。在这种情况下,邮件系统没有安全防护能力,任何具有基本SMTP 知识的攻击者都可以进行钓鱼攻击。

(2)包含的查找过多。6.80%的测试域包含10 个以上“lookup”。SPF 实施将DNS 查找的机制和修饰符的数量限制为每次SPF 检查中最多有10 个。“include”“a”“mx”“ptr”“exists”和“redirect”修饰符也计入此限制。“all”“ip4”和“ip6”不需要DNS 查找,因此不计入此限制。如果在检查过程中超过这个数字,将返回“permError”并且SPF 将失效。出现这个问题的主要原因是现在很多公司将邮件服务外包给第三方服务商,每个服务商都会在SPF 记录中添加“lookup”。如果它们还包含DNS 查询机制/修饰符,它将很快达到极限。

(3)找到多个记录。根据RFC7489[7],如果同一个域中有多个SPF 记录,SPF 将无法正确验证邮件。如果找到多个这样的记录,服务器将返回“permError”。

(4)子域未找到SPF 记录。绕过SPF 检查的方法有很多,包括无子域SPF 配置[5]。由于SPF的工作机制,a.com 和test.a.com 完全是两个不同的SPF 检查域,即使公司主域正确配置了SPF,攻击者也可以欺骗子域并且它仍然可以通过SPF 检查,因为对于未配置的域名,默认返回值是“neutral”。

(5)未找到DMARC 记录或DMARC 无效语法。如果不使用DMARC,有很多方法可以绕过单个SPF 检查。

(6)DMARC使用“NONE”策略。在这种情况下,DMARC的策略标签设置为“none”。本文建议不要在策略设置中使用“none”,因为这通常比没有DMARC 配置更糟糕。当策略“p”设置为“none”时,当邮件无法通过SPF 或DKIM 检查时,邮件服务器将不采取任何行动并接收可能有问题的邮件。

低风险的几种情况如下文所述。

(1)在SPF 中使用“~”或“?”。在SPF配置中,当使用“~”或“?”时,表示软失败(soft fail)。如果邮件系统管理员不更改默认设置,SPF 验证失败的邮件可能会被接受,而不是被隔离(quarantine)或被拒绝(rejected)。本文建议在SPF 记录的末尾使用“-all”,以严格限制接收有问题的电子邮件。

3.3.2 SPF、DMARC 统计分析

根据这几种风险情况,对各域名结果进行统计分析,结果如表4 和表5 所示。配置情况结果如图3 所示。

图3 配置情况评估结果

表4 SPF 配置情况表

表5 DMARC 配置情况

4 建 议

本节针对上节提出的问题,提出一些缓解措施,其中主要针对SPF 和DMARC 提出一些安全配置建议。

4.1 SPF 配置

每个公司和组织都应该部署SPF 来指定哪些IP 地址被授权代表域传输电子邮件。因此,本文在SPF 配置上提出以下建议。

(1)合适的修饰符。建议使用“-all”,避免使用“~all”或“?all”。

(2)对于第三方的邮件服务配置,以Exchange 为例,SPF 记录必须包含微软邮件发送服务器的域名:

“v=spf1[ip] include:spf.protection.outlook.com”

2.可操作性。指标体系指标数据易于获取,既体现完整性,又要进行必要的简化,突出关键指标,能够体现信息化对企业运营的支撑。

(3)避免太多查找。应该避免创建导致超过10 个DNS 查找的SPF 记录。如果使用第三方邮件服务,管理员应定期查看SPF 记录,避免“lookup”记录超过10 条。此外,如果可能,需要将“include”语句替换为网际协议版本4(Internet Protocol version 4,ipv4)和网际协议版本6(Internet Protocol version 6,ipv6)机制,并避免使用指针记录(Pointer Record,ptr)机制。

(4)子域SPF 配置。对于所有没有邮件服务的子域,建议在DNS 设置中添加一条txt 记录为:

“Type:txt Host:*.example.com Value:v=spf1 -all”

如果子域名有邮件服务,这个配置不会影响正常的邮件收发,因为DNS 匹配机制是先找到可以匹配的域,如果没有找到匹配的记录,它将匹配“*”记录。

4.2 DMARC 配置

(1)将标签“rua”设置为特定的电子邮件地址,并定期安排员工查看DMARC 发送的报告。如有必要,可将报告设置为每天发送。

(2)定期检查报告以确保当前的DMARC 设置不会产生太多误报,如避免来自域的合法电子邮件被拒绝。

(3)如果需要向外部域名发送“rua”或“ruf”报告,则需要在DNS 配置中添加一条记录。

DMARC的正确推荐配置为:

“v=DMARC1;p=quarantine;sp=reject;rua=mailto:ruareport@example.com;ruf=mailto:rufreport@example.com;fo=0;ri=3600;pct=100;”

5 结语

目前大部分公司或组织的面临的网络威胁最多的就是电子邮件仿冒,其中电子邮件中承载了大量的公司或组织的敏感信息甚至是商业机密。本文采集了4 253 个域名,这其中包括世界500 强、中国500 强、GoogleTop 200 和AlexaTop 3 000中的公司或组织。研究发现超过60%的域存在SPF 配置问题,近70%的域没有使用DMARC 或使用错误的策略设置。研究发现大约97%的公司没有为没有电子邮件服务的子域实施SPF 安全配置。根据实验结果,本文总结出了影响公司电子邮件安全服务的问题,并针对此提出了缓解措施。希望通过本文的实验数据能够让邮件服务提供商可以采用有效的邮件服务保护措施,提升邮件服务系统部署安全性,以保护用户传输电子邮件的真实性,免受网络钓鱼攻击。下一步,笔者会总结这些措施,结合日常工作经验,设计一个有效地邮件安全系统检测模型。

猜你喜欢
域名电子邮件攻击者
有关旅行计划的电子邮件
基于贝叶斯博弈的防御资源调配模型研究
《江苏教育研究》官方网站域名变更公告
正面迎接批判
正面迎接批判
小测试:你对电子邮件上瘾了吗?
顶级域名争夺战:ICANN放出1930个通用顶级域名,申请者有上千家
有奖问答
用PDA无线收发电子邮件