伪造电子邮件的原理

1. SMTP 协议的漏洞

SMTP 协议在设计之初,主要关注邮件的投递,而不是发件人的身份验证。它的工作方式非常简单:

  1. HELO/EHLO:发送方(邮件客户端或服务器)向接收方(邮件服务器)发出问候,告知自己的域名
  2. MAIL FROM:发送方指定邮件的“信封发件人”,也就是邮件的实际投递地址
  3. RCPT TO:发送方指定收件人地址
  4. DATA:发送方发送邮件内容,包括邮件的“信头”FromToSubject 等)和邮件正文

漏洞所在:在 SMTP 协议中,MAIL FROM 和信头中的 From 地址是两个独立的字段,且 SMTP 服务器不会对这两者进行交叉验证

  • MAIL FROM:用于邮件投递,类似于信封上的回邮地址
  • From:用于显示给用户看,类似于信纸上的发件人

攻击者可以轻松地在 MAIL FROM 中使用自己的地址,而在 From 字段中填写任何伪造的地址,例如 ceo@yourcompany.com。接收方邮件服务器只会检查 MAIL FROM 的合法性,而收件人看到的则是被伪造的 From 地址

2. 伪造电子邮件的步骤

第一步:搭建邮件发送环境

攻击者可以使用自己的服务器或第三方服务来发送邮件。最简单的方式是使用一个 Linux 服务器,通过 TelnetNetcat 直接连接到目标邮件服务器的 25 端口,模拟 SMTP 协议的发送过程

第二步:执行伪造命令

攻击者在命令行中,按照 SMTP 协议的规范,输入以下命令:

  1. 连接邮件服务器

    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 码,表示邮件已发送成功

Copyright © 版权信息 all right reserved,powered by Gitbook该文件修订时间: 2025-09-25 03:13:07

results matching ""

    No results matching ""