Spoofy 是一个程序,用于根据 SPF 和 DMARC 记录检查一组域名是否可以被伪造。你可能会问:“为什么我们需要另一个可以检查域名是否可以被伪造的工具?”
好吧,Spoofy 与众不同,原因如下:
- 自定义、经过人工测试的伪造逻辑(不猜测、不推测,真实世界的测试结果)
- 基于标准的记录发现:RFC 7208 SPF 评估和 RFC 9989 DMARC 树遍历,包括子域的
sp/np- 通过共享的、带缓存的解析器进行准确的批量查询,并具有故障转移(1.1.1.1、8.8.8.8、9.9.9.9)
- SPF DNS 查询和空查询计数器,以及检测未注册的 SPF include 域名
- 可选的通过 API 进行 DKIM 选择器枚举
Spoofy 需要 Python 3.9+。从 PyPI 安装:
pip3 install spoofy
spoofy -d example.com
或者从克隆的仓库运行,使用 pip3 install -r requirements.txt,并用 ./spoofy.py 代替 spoofy。用法如下所示:
Usage:
spoofy -d [DOMAIN] -o [stdout, xls or json] -t [NUMBER_OF_THREADS] [--dkim] [--dns-server IP]
OR
spoofy -iL [DOMAIN_LIST] -o [stdout, xls or json] -t [NUMBER_OF_THREADS] [--dkim] [--dns-server IP]
Options:
-d : Process a single domain.
-iL : Provide a file containing a list of domains to process (blank lines and # comments are skipped).
-o : Specify the output format: stdout (default), xls, or json.
-t : Set the number of threads to use (default: 4).
--dkim : Enable DKIM selector enumeration via API (optional).
--dns-server : Query this resolver instead of 1.1.1.1, 8.8.8.8 and 9.9.9.9.
Examples:
spoofy -d example.com -t 10
spoofy -d example.com --dkim
spoofy -iL domains.txt -o xls
spoofy -iL domains.txt -o json --dkim
(可伪造性表列出了影响收件箱送达率的 SPF 和 DMARC 配置的每一种组合,DKIM 修饰符除外。) 在此下载
| 代码 | 结果 | SPOOFING_POSSIBLE |
|---|---|---|
| 0 | 可以伪造 | true |
| 1 | 可以伪造子域 | true |
| 2 | 可以伪造组织域 | true |
| 3 | 可能可以伪造(p=quarantine 且 pct < 100) | null |
| 4 | 可能可以伪造(取决于邮箱) | null |
| 5 | 可能可以伪造组织域(取决于邮箱) | null |
| 6 | 可能可以伪造子域(取决于邮箱) | null |
| 7 | 可以伪造子域,可能可以伪造组织域 | true |
| 8 | 无法伪造 | false |
| 9 | 无法确定(DNS 查询失败) | null |
判定结果是针对域名的 SPF all 机制以及 DMARC p、sp 和 aspf 标签按记录所写内容测试得到的代码。spoofy/master_table.py 以数据形式保存该电子表格(电子表格更改后,运行 python3 -m spoofy.master_table 可重写它),test.py 检查每一行都能被复现。表格未覆盖的输入按如下方式处理:
aspf 但没有 sp 的强制 p(24 种未测试的组合):sp 默认为 p,因此使用写出 sp 的已测试行。_dmarc 记录):使用针对父域 SPF 和 DMARC 记录测试的子域结果,当子域不存在时用 np 代替 sp。p=quarantine 且 pct 低于 100:代码 3,因为未抽样的邮件会得到 p=none。对于 p=reject,未抽样的邮件仍会被隔离,因此 pct 不会改变判定结果。t=y(RFC 9989 测试模式):在查询前策略降低一级(reject 降为 quarantine,quarantine 降为 none)。可伪造性表的创建涉及列出每一种相关的 SPF 和 DMARC 配置,将它们组合起来,然后使用早期版本的 Spoofy 在大量美国政府域名上进行 SPF 和 DMARC 信息收集。测试某个 SPF 和 DMARC 组合是否可伪造,是使用 emailspooftest 的电子邮件安全渗透测试套件在 Microsoft 365 上完成的。然而,最初的测试是使用 Protonmail 和 Gmail 进行的,但发现这些服务会使用反向查找检查,从而影响结果,尤其是子域伪造测试。因此,测试使用了 Microsoft 365,因为它对邮件的处理提供了更大的控制权。
在使用 Microsoft 365 进行初步测试后,由于 Protonmail 和 Gmail 对电子邮件中横幅的处理方式不同,一些组合使用 Protonmail 和 Gmail 进行了重新测试。Protonmail 和 Gmail 可能会将伪造邮件放入收件箱并带有横幅,或放入垃圾邮件且不带横幅,这导致使用 Spoofy 时某些 SPF 和 DMARC 组合被报告为“取决于邮箱”。相比之下,Microsoft 365 会将这两种情况都放入垃圾邮件。测试和数据收集过程耗时数天完成,之后编制了一份良好的主表,并用作 Spoofy 可伪造性逻辑的基础。
此工具仅用于测试和学术目的,并且只能在获得严格同意的情况下使用。不要将其用于非法目的!最终用户有责任遵守所有适用的地方、州和联邦法律。开发者不承担任何责任,也不对由本工具和软件造成的任何误用或损害负责。
本项目根据 Creative Commons Attribution-NonCommercial 4.0 International License 许可 - 详情请参阅 LICENSE 文件