- VisualStudio2022插件的安装及使用-编程手把手系列文章
- pprof-在现网场景怎么用
- C#实现的下拉多选框,下拉多选树,多级节点
- 【学习笔记】基础数据结构:猫树
大家好,我是VoltCary 。 本篇文章是系列邮件安全专题的第一篇,主要帮助大家掌握邮件安全的基础知识。 基础内容包括: 掌握这些基础后,你将能够更好地理解邮件伪造的验证原理与绕过技巧,进而掌握邮件伪造的排查方式。如果没有彻底弄懂原理,很容易陷入困惑,只会照搬别人现成的方法. SPF用于验证发件人的IP地址是否被授权发送该域名的邮件. 通过配置SPF记录,域名所有者可以指定哪些邮件服务器可以代表该域名发送邮件。当域名和IP一致,则SPF验证通过. SPF是校验是由收件人邮件服务器,基于 MAIL FROM 字段(又叫 Envelope From)、Return-Path字段中的邮箱域名,并获取发件人的IP地址. 然后查询域名DNS的txt记录,判断此邮箱域名是授权哪些服务器IP发送邮件,如果发件人IP与DNS记录的授权服务器IP一致,那么SPF就会验证通过. SPF 记录必须遵循一定的标准,以便服务器理解其内容。如下是SPF记录内容示例: v=spf1:告诉服务器这里包含一条 SPF 记录。每一条 SPF 记录都必须以这个字符串开始. ip4:授权 IP 地址。在本例中,SPF 记录告诉服务器,ip4:192.0.2.0 和 ip4:192.0.2.1 被授权代表该域发送电子邮件. include:examplesender.net:该标记告诉服务器,有哪些第三方组织被授权代表该域发送电子邮件。这个标记表示,被包含域(examplesender.net)的 SPF 记录内容应被检查,其中包含的 IP 地址也应被视为已授权。一条 SPF 记录中可包含多个域,但这个标记仅适用于有效的域. -all:严格的 SPF 失败处理策略,表示SPF 记录中未列出的地址没有被授权发送电子邮件并应被拒绝. ~all:软失败,即宽松的SPF 配置,表示未列出的电子邮件将被标记为不安全邮件或垃圾邮件,但仍会被接受; 。 +all:表示任何服务器都可以代表该域发送电子邮件. nslookup -qt=txt qq.com 。 校验关键点:SPF 校验关注的是邮件传输路径,即通过 MAIL FROM 和 Return-Path 字段来验证发送邮件的服务器是否合法。From字段仅用于显示,不影响SPF校验. 注意:SPF校验是针对 MAIL FROM 字段的,而非 From 字段. 说明:这里以中继服务发送伪造邮件的 SPF 校验作为示例. 因为直接本机发送过于简单,无需讲解. 假设: 中继服务邮箱为 aaa@aaa.com, 攻击者通过SMTP登录中继服务, 伪造 bbb@bbb.com,发送邮件给 ccc@ccc.com. 1、攻击者登录 SMTP 中继邮件服务器:使用aaa@aaa.com登录,并伪造邮件的 From 地址为 bbb@bbb.com,然后发送邮件到 ccc@ccc.com. 2、From 字段(显示发件人)在邮件头中会显示为: 3、但是,实际的邮件头中会包含中继服务器的 MAIL FROM 字段,通常为: 4、收件人邮件服务器处理 。 收件人邮件服务器 ccc@ccc.com 会根据 aaa@aaa.com 域名的 SPF 记录来验证邮件是否来自合法的邮件服务器. 如果中继服务器的 IP 地址没有被列在 aaa.com 的 SPF 记录中,SPF 校验会失败. 注意: 这里收件人邮件服务器并不是验证 bbb@bbb.com 的 SPF 记录,而是验证 发送邮件的服务器(中继服务) 是否有权通过 aaa@aaa.com 发送邮件. 结论: SPF 校验是针对 MAIL FROM 字段的。收件人邮件服务器会根据 aaa@aaa.com 域名的 SPF 记录来检查邮件是否由中继服务器的 IP 地址发送。如果中继服务器的 IP 地址不在 aaa.com 的 SPF 记录中,SPF 校验会失败. 收件人不会验证 bbb@bbb.com 的 SPF 记录,因为 SPF 校验关注的是邮件的 传输路径,即发件人邮件服务器的 IP 地址,而不是邮件的显示发件人. 如果攻击者通过中继服务发送伪造邮件,以下是一个基本的 SMTP 会话示例。攻击者通过登录到中继服务器,并在发送邮件时伪造 From 字段. SMTP 命令过程: 1、攻击者连接到中继服务器 。 2、SMTP 会话开始 。 3、发送 MAIL FROM 命令,伪造发件人地址为 bbb@bbb.com,使用中继服务的邮箱 aaa@aaa.com 作为发送源 。 4、发送 RCPT TO 命令,指定收件人地址 。 5、发送 DATA 命令,开始编写邮件内容: 6、邮件内容: 7、结束邮件并发送: 8、SMTP 会话结束: SPF 中继校验总结: SPF 校验 是基于 MAIL FROM 或 Return-Path 字段进行的,而中继服务一般 MAIL FROM 中的邮箱域名与授权IP是一致的、或没有 SPF 记录或者被滥用. 收件人的邮件服务器无法检测到问题,只是校验SPF失败,但是也可能会继续接收. 因为收件人的邮件服务器如果没有严格配置 SPF 检查策略,或者它没有明确设置拒绝 SPF 检查失败的邮件. 重点: 在这个过程中,邮件头中的 From: bbb@bbb.com 是伪造的,MAIL FROM: aaa@aaa.com 是实际用于 SPF 校验的字段. 收件人邮件服务器 验证 aaa@aaa.com 的 SPF 记录,而不是 bbb@bbb.com 的 SPF. DKIM一般用来验证传输过程中是否被篡改,例如中间人攻击,包括开放中继,滥用邮件服务器,基于签名的有效性,来验证邮件头部和正文是否被篡改. DKIM也可以达到拦截伪造邮箱的效果,因为伪造邮箱根本没有带上签名,就算带上假的签名,收件人邮件服务器去域名DNS查询公钥时,解密出来的结果也会不一致,除非攻击者知道私钥. 因此,虽然DKIM与SPF的验证原理不一致,但是单从拦截邮箱伪造来讲,当验证不通过,结果也会可能一致拒绝、或标记为垃圾邮件,也可以解决邮箱伪造的攻击. DKIM 的验证基于 公钥加密机制。具体过程如下: 1、发件人邮件服务器生成 DKIM 签名 。 发件人邮件服务器(如 mail.example.com)会在邮件发送前,对某些部分(如邮件头部和正文摘要)使用私钥进行加密,生成一个DKIM 签名. 这个签名被添加到邮件的 DKIM-Signature 头部,常见字段如下: h=From:To:Subject:指定DKIM 签名会记录哪些头部字段参与计算. d=example.com:标明发送邮件的域名. s=default:选择器,指向 DNS 中存储公钥的位置. b=signature_value:签名值,签名的加密部分,由邮件正文和头部摘要加密生成. bh=:表示正文的哈希摘要值(Body Hash). 2、收件人邮件服务器提取 DKIM 签名 。 收件人邮件服务器在收到邮件后,解析 DKIM-Signature 头部字段. 它根据 d=(域名)和 s=(选择器)字段,去 DNS 查询发件人的公钥记录: p=public_key_value 是域名发布的公钥. 3、收件人邮件服务器验证签名 。 本文详细介绍了邮件安全的验证方式,以及验证过程。下一期将会实践邮箱伪造,并介绍邮件头,基于邮件头来识别邮箱伪造攻击,敬请期待! 。0x01 前言
0x02 SPF
SPF基础
v=spf1 ip4:192.0.2.0 ip4:192.0.2.1 include:examplesender.email -all
查询SPF方式
0x03 SPF校验邮箱伪造流程
校验关键点
SPF校验流程
From: bbb@bbb.com
MAIL FROM: aaa@aaa.com
MAIL FROM
字段才是被用来进行SPF 校验。
SMTP 命令示例
telnet relay.server.com 25
HELO attacker.com
MAIL FROM:<aaa@aaa.com>
RCPT TO:<ccc@ccc.com>
DATA
From: bbb@bbb.com
To: ccc@ccc.com
Subject: Fake Email
This is a fake email..
QUIT
0x04 DKIM签名验证过程
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=example.com; s=default; bh=abc123...;
h=From:To:Subject;
b=signature_value
default._domainkey.example.com TXT "v=DKIM1; k=rsa; p=public_key_value"
DKIM-Signature
中的签名值。
SHA-256
),生成邮件摘要。重新计算邮件的当前摘要值,并将两者进行比较。
0x05 总结
最后此篇关于【邮件伪造】SPF与DKIM验证原理及实战解析(上)的文章就讲到这里了,如果你想了解更多关于【邮件伪造】SPF与DKIM验证原理及实战解析(上)的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我想对所有未在我的域的 SPF 记录中明确列出的电子邮件源添加严格的 FAIL 限定符。 这可以通过以下记录简单地完成(-all 指定不应接受所有其他来源) mydomain.com. IN TXT
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a softwar
当我尝试使用 php 向我的 gmail 地址发送电子邮件时,我收到了电子邮件,但 spf 存在问题。它说 Received-SPF:中性 但这里的 spf 记录似乎不错 http://mxtoolb
我有一个第 3 方供应商的场景……我们公司有很多第 3 方邮件服务。我已经使用 p 设置了 dmarc - none,并且 SPF 记录已使用已知的发送服务器进行了更新。 您能否澄清我在 Dmarc.
关闭。这个问题需要details or clarity .它目前不接受答案。 想改进这个问题?通过 editing this post 添加详细信息并澄清问题. 去年关闭。 Improve this
我正在尝试为我的域创建一个 SPF 记录并使我的邮件服务器能够对其进行评估。我在邮件服务器上使用 Postfix 并使用 policyd-spf (Python) 来评估记录。目前,我通过我的私有(p
我想知道,现在我们的软管提供商支持 SPF(99 型),天气与否也使用这种类型的记录以及已经存在的 SPF (TXT) 记录。 设置两个记录有什么缺点吗? 类型 99 的格式应该相同吗?例如"v=sp
试图将两个 spf 合并为一个?有什么想法吗?谢谢! 防晒指数A: v=spf1 包括:_spf.google.com ~all 防晒指数 B: v=spf1 mx 包括:cmail1.com ~al
我们在欺骗方面遇到了一些问题,所以我们必须在 DNS 上添加所有安全检查,其中之一是 SPF 记录,首先我们将其添加为 softFail “~all”和电子邮件进入垃圾邮件文件夹,很好,在电子邮件 h
我一直在帮助客户使用他们的电子邮件系统,并意识到他们的网站管理员输入了以下内容作为他们的 SPF 记录。 v=spf1 exists:%{i}._spf.somedomain.com redirect
我需要为子域配置 SPF 记录。 主域的 DNS(我使用 Google Mail): IN MX 1 aspmx.l.google.com. IN MX 10 aspmx3.googlemail
一言以蔽之 我已经在我的域上配置了 SPF 政策,但我收到了一份失败的 dmarc 报告。我不明白为什么会出现这种故障。 更多上下文 我为我的域配置了以下 spf 策略 zerowasteparis.
我想到如果 SPF 记录不是递归的,域名可能容易受到来自子域的电子邮件欺骗。我的研究表明 this : The Demon Question: What about subdomains? If I
我已经通读了文档,但对我来说区别仍然不是很清楚。 我的理解是: 1) 包括:将允许为指定域列出的 IP,以及该域自己的 SPF 记录中列出的任何其他域 2) a: 只允许为指定域列出的 IP 那是对的
我给很多人发了电子邮件(他们都要求提供电子邮件,别担心),我们将把电子邮件发送过程分片到三台服务器上。 电子邮件将从 web1.mydomain.com、mail1.mydomain.com 或 ma
我在 domains.google.com 注册了一个域名,我将其与 G Suite 帐户一起使用,并且还可以从 SES 和 mailchimp 发送电子邮件。 我的 DNS 记录看起来正确 ( Ma
我有一个安装了 Wordpress 的 Ubuntu 服务器。从服务器发送电子邮件时,我收到以下 header : Received-Spf: neutral. 我确实在以下事项中设置了 SPF 记录
好吧,我想不通。我正在使用 PHPMailer 从我的域 - example.com 向我自己发送电子邮件。我正在向自己发送电子邮件。(测试 google 架构标记),但电子邮件未经过身份验证。这是我
检查域的 SPF 记录的方法有哪些? 有一个网站,我可以在其中手动使用 - http://www.mxtoolbox.com/SuperTool.aspx 如何通过 ASP.NET 和 C# 实现?基
当读取并进一步处理任何域的 SPF 记录时,我需要使用 PHP+ Ext JS 创建简单的代码。 我发现像这样的网站 http://www.kitterman.com/spf/validate.htm
我是一名优秀的程序员,十分优秀!