Advertisement

如何发送伪造的电子邮件

阅读量:

最近我在阅读关于协议分析的相关资料,在这其中提到了邮件传输协议(SMTP)的基本工作原理感到深受启发。接着在网络上查找了一些相关的资料,并且大致整理了一遍,希望能够对大家有所帮助,并期待大家的反馈和建议。

通过该方法可以检查您的邮件服务器是否存在相关安全漏洞。对于采用该方法可能导致的结果负有责任(如需引用,请注明出处)。

一、SMTP 邮件的传输
共分为三个阶段:1、建立连接2、数据传输3、连接关闭
首先在建立连接阶段我不用再罗嗦,主要就是TCP的三次握手。而问题就出现在第二个阶段(数据传输)在此过程中可以人为控制。邮件在传输的时候,我个人认为是通过五条命令来实现(有的资料上说的是其中三条命令)的分别是:
Helo
mail from:
rcpt to:
data

这些预设指令均为程序内部执行的操作序列,并非用户直接干预的内容(例如OUTLOOK、foxmail等)。以下详细解释各指令的功能:

  • Helo:启动与服务器间的通信流程
  • mail from:指定发送邮件的信息来源地址
  • rcpt to:设置接收邮件的目标地址
  • data:包含邮件正文的具体内容

quit 退出邮件

二、SMTP 数据包分析 下述内容基于FOXMAIL程序对邮件发送过程及数据包捕获进行了优化分析:其中,邮件服务器IP地址为172.17.1.1,对应的域名配置为abc.cn

192.168.0.1是客户端地址;请留意粗体字部分

Source Destiination Protocol Info
172.17.1.1 192.168.0.1 SMTP RESPONSE:220 abc.cn ESMTP sendmail 7.14.2/7.14.2; Thu, 22 may 2010 23:30:60 +0800 (CST)
192.168.0.1 172.17.1.1 SMTP **Command: HELO abc.cn **
172.17.1.1 192.168.0.1 SMTP Response: 250 abc.cn Hello [172.17.1.1],pleased to meet you
192.168.0.1 172.17.1.1 SMTP **Command: MAIL FROM: admin@abc.cn **
172.17.1.1 192.168.0.1 SMTP Response: 250 2.1.0 admin@abc.cn …. Sender ok
192.168.0.1 172.17.0.1 SMTP **Command: RCPT TO: abc@abc.cn **
172.17.0.1 192.168.0.1 SMTP Response: 250 2.1.0 admin@abc.cn …. Recipient ok
192.168.0.1 172.17.0.1 SMTP **Command:DATA **
172.17.0.1 192.168.0.1 SMTP **Response: 354 Enter mail,end with “.”on a line by itself **
192.168.0.1 172.17.0.1 SMTP Message Body
172.17.0.1 192.168.0.1 SMTP Response: 221 2.0.0 ab.cn closing connection

请关注此信息:此信息指出,在输入邮件内容后换行显示,并在发送邮件正文时需在行尾处放置句点符号(.)。后续将详细阐述相关内容。

下面是对数据包解析后的信息并注说明:
220 abc.cn SMTP sendmail 7.14.2/7.14.2; Thu, 22 may 2010 23:30:60 +0800 (CST)

(邮件服务器反馈给你的信息,可以了解该邮件服务器的大致情况)

嗨 abc@cn

250 abc.cn Hello [172.17.1.1], pleased to meet you (邮件服务器反馈给你的信息)

MAIL FROM: admin@abc.cn(邮件源地址,也就是伪造的地址)

250 2.1.0 admin@abc.cn... Sender ok(表示邮件服务器认可伪造的地址)

RCPT TO: abc@abc.cn (邮件接收者的地址)

250 2.1.5 <[email protected]>... 接收方确认(经服务器验证该地址有效,请确保邮件服务器具备该账户信息)。

DATA (邮件的具体内容)

354 Enter mail, end with "." on a line by itself(上面已经说明)

Date: (邮件的日期)Thu, 22 May 2010 11:30:40 +0900

From: (邮件的来源地址) "admin" < admin@abc.cn >

To: (邮件接收者的地址) "abc" < abc@abc.cn >

Subject: (邮件的主题) mail test

邮件的具体内容,此处略…….

250 1.0.0 m4M3Ulgx010724 Message accepted for delivery(邮件成功投递)

QUIT (发送成功,执行退出命令)

221 2.0.0 abc.cn closing connection (成功关闭与abc.cn的连接)

题外话:
为了验证邮件内容的真实有效性,请特别关注文中提到的部分。具体要求包括以下几点:第一部分涉及数据中的关键字段设置,请确保包含以下信息:发送方地址(即伪造的邮件地址)、接收方地址(即邮件接收者的地址)、主题(即邮件的主题)以及日期(即邮件的时间信息)。这些要素共同构成了完整的一封电子邮件头部分。以下是具体的案例展示:
从:"admin" admin@abc.cn (您所使用的伪造地址)
至:abc@abc.cn (收件人的地址)
主题:测试邮件 (主题内容)
日期:Fri, 16 May 2010 12:45:39 +0800 (时间戳)

三、具体实现过程

第二步 启动Telnet应用程序:打开Windows自带的命令行工具,在路径C:\目录中运行 telnet命令。请注意,默认使用第25号端口进行登录操作。当连接成功后,请等待邮件服务器返回响应信息:RESPONSE:220 abc.cn ESMTP sendmail 8.14.2/8.14.2; 发布日期为星期四, 24 May 2010, 时间是下午6点整(+8小时标准时区)。

请记住,在当前字符界面中没有提供任何提示信息的情况下,请直接输入以下内容:HELO abc.cn(注:此为模拟账户名称与域名组合,请参考SINA邮箱格式进行设置:如设置为sina.com.cn))。随后提交后,系统将返回响应'Response: 250 abc.cn Hello [IP Address], please be greeted with a warm welcome'以表明邮件系统的接受与认可。

From :admin@abc.cn (必须包含冒号符号,在下面的内容中也是如此)
系统向用户返回响应信息‘Response: 250 2.1.0 admin@abc.cn … Senders ok’

第五步 输入:
RCPT TO : abc@abc.cn (邮件接收者的地址)
系统反馈信息显示:“Response: 250 2.1.0 admin@abc.cn …. Recipient ok”

点击【

Exit (邮件内容输入完成并退出)
系统返回消息'Response: 221 2.0.0 ab.cn close connection'

到此为止邮件发送完成

特别说明:通过此方法发送邮件时,在接收方的邮件中都会显示真实IP地址。

全部评论 (0)

还没有任何评论哟~