最近在看有关协议分析的资料,其中谈到了邮件传输协议(SMTP)的工作原理,深受感触。之后在网上又搜索了一些相关的资料,大概的整理了一下,希望对大家有帮助,有不对的地方请批评指正。
对照此方法可以检验你的邮件服务器是否有此方面的安全缺陷。对用此方法而引起的后果自负(如需转载,请注明信息来源)
一、SMTP 邮件的传输
共分为三个阶段:1、建立连接2、数据传输3、连接关闭
首先在建立连接阶段我不用再罗嗦,主要就是TCP的三次握手。而问题就出现在第二个阶段(数据传输)在此过程中可以人为控制。邮件在传输的时候,我个人认为是通过五条命令来实现(有的资料上说的是其中三条命令)的分别是:
Helo
mail from:
rcpt to:
data
quit
注:(这五条命令是内嵌在程序中自动完成,对用户来说是透明的。比如OUTLOOK、foxmail等程序)后面我会具体说明如何使用这些命令。
五条命令的含义:
Helo
表示与服务器内处理邮件的进程开始“通话”
mail from:
表明信息的来源地址,也就是要伪造的地址
rcpt to:
邮件接收者的地址
data
邮件的具体内容
quit
退出邮件
二、SMTP 数据包分析
下面是一个通过FOXMAIL程序发送邮件并进行抓包的分析(作了适当的修改):
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
|
注意:Response: 354 Enter mail,end with “.”on a line by itself这条信息,它的意思是在你输入邮件内容后“回车”另起一行,输入点号“.”再“回车”表示邮件正文书写完成。后面会具体说明。
下面是对数据包解析后的信息并注说明:
220 abc.cn SMTP sendmail 7.14.2/7.14.2; Thu, 22 may 2010 23:30:60 +0800 (CST)
(邮件服务器反馈给你的信息,可以了解该邮件服务器的大致情况)
HELO abc.cn
(邮件地址的域名比如SINA邮箱:sina.com.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 <abc@abc.cn>... Recipient ok(服务器认可此地址,前提是邮件服务器中必须有此账号)
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的连接)
题外话:
为了体现所发邮件真实可性,注意上面加下划线的部分。需要在data中要包含from(伪造的邮件地址)、to(邮件的接收者地址)、subject(邮件的主题)、date(时间)这几个关键字。也就是我们在邮件中看到的“完整邮件头”下面是一个事例:
From: "admin" <admin@abc.cn> (你伪造的地址)
To: abc@abc.cn (邮件接收者的地址)
Subject: mail test (邮件的主题)
Date: Fri, 16 May 2010 12:45:39 +0800 (邮件的时间信息)
三、具体实现过程
在我们了解了SMTP后,现在开始描述实现过程
第一步 进入字符模式,windows下是DOS:
第二步 启动telnet程序:
c:\telnet 172.17.1.1 25
注意:登录的是25端口,
登录成功后邮件服务器会反馈一个信息“RESPONSE:220 abc.cn ESMTP sendmail 8.14.2/8.14.2; Thu, 22 may 2010 23:30:60 +0800 (CST)”
第三步 注意此时的字符界面是没有任何提示,直接输入:
HELO
abc.cn (想要伪造邮件的地址域名,比如SINA邮箱:sina.com.cn)
系统会反馈一个信息“Response: 250 abc.cn Hello [172.17.1.1],pleased to meet you”表示邮件系统认可
第四步 输入:
MAIL FROM
:admin@abc.cn (不能缺少“:”号,下面同样,邮件发送者的地址)
系统反馈信息“Response: 250 2.1.0 <admin@abc.cn> …. Sender ok”
第五步 输入:
RCPT TO
:abc@abc.cn (邮件接收者的地址)
系统反馈信息“Response: 250 2.1.0 <admin@abc.cn> …. Recipient ok”
第六步 输入:
DATA
回车
(开始输入邮件正文,完成后一定要“回车”之后输入“.”号)
.
(注意是英文状态下的“.”号,表示邮件输入完毕,最后再“回车”)
第七步 输入:
QUIT
(邮件内容输入完成,退出)
系统反馈信息“Response: 221 2.0.0 ab.cn closing connection”
到此为止邮件发送完成
最后说明:在使用此方法发送邮件的时候,不管如何伪造发件人的地址,但是在接收人的邮件中都会显示你的真实IP
分享到:
相关推荐
伪造电子邮件! 一些背景信息:在 Hotmail、Yahoo 和 G-mail 等流行电子邮件网站为用户提供 GUI 之前,有一个称为 SMTP(简单邮件传输协议)的系统,它是发送消息的主要方式。 我们在 orderr 中使用 python 从任何...
本文重点研究基于PGP混合加密技术的电子邮件系统中的邮件 信息的安全问题。首先介绍了本文将要用到的密码学基础和电子邮件 的相关协议。然后介绍了当前非常流行的安全电子邮件加密标准 PGP。通过对PGP的介绍,详细...
Fake Mailer是一种PHP Email Spoofer,它能够将伪造或被篡改的电子邮件发送到目标。 无需注册,匿名发送电子邮件,演示站点可供测试! 免责声明 :laptop: 该项目仅出于良好目的和个人用途而创建。 本软件“按原样...
它可以帮助邮件服务器管理员和渗透测试人员检查目标电子邮件服务器和客户端是否容易受到电子邮件欺骗攻击或是否可以被滥用来发送欺骗电子邮件。 图1.我们在Gmail上的欺骗攻击案例(固定的) 为什么要建立这个工具...
假短信通知程序为Symfony Notifier提供伪造的SMS(在开发过程中作为电子邮件)集成。DSN示例FAKE_SMS_DSN=fakesms+email://MAILER_SERVICE_ID?to=TO&from=FROM在哪里: MAILER_SERVICE_ID是邮件服务ID(默认情况下...
主要为用户架设邮件服务器提供理论基础并为管理员在出现电子邮件垃圾骚扰时提供发现垃圾邮件的真正源头。根据邮件头的知识有助于发现伪造的邮件。对于希望了解邮件是如何在网络中传输的用户同样会有帮助。 虽然在...
关于要求:编程实现通过用户界面,用户登录信箱认证过程(含base64方式编码)、发送信息及附件(常用格式)、邮件信息验证、伪造邮件地址黑名单。 好吧,其实前三点都是比较正常的功能需求,但是对于第四点,实在是...
FormularioEmailFake:取消Formulario de envio电子邮件的伪造,没有任何证据
按电子邮件列对工作表进行排序,以确保您没有丢失的电子邮件地址,这些电子邮件地址将阻止自动填充工作。 创建一个名为emaildomaindb的新选项卡将的原始emaildomaindb复制并粘贴到工作表的emaildomaindb标签中。 ...
smtp4dev-用于开发和测试的伪造的SMTP电子邮件服务器。 适用于Windows,Linux,Mac OS-X(可能还有.NET Core的其他地方)的虚拟SMTP服务器。 使您可以测试应用程序而不会向真正的客户发送垃圾邮件,而无需使用特殊...
天真贝叶斯垃圾邮件检测器使用Scikit学习机器学习库将电子邮件分类为垃圾邮件或非垃圾邮件的Python程序。先决条件该程序是用Python 3编写的,并使用了Numpy,Pandas和Scikit-learn库。数据集该程序利用以csv格式存储...
关于要求:编程实现通过用户界面,用户登录信箱认证过程(含base64方式编码)、发送信息及附件(常用格式)、邮件信息验证、伪造邮件地址黑名单。 好吧,其实前三点都是比较正常的功能需求,但是对于第四点,实在是...
通过电子邮件和密码登录。 通过请求方法保护API。 默认的受保护方法是“ POST”,“ PUT”,“ PATCH”,“ DELETE”。 入门 克隆此存储库 git clone https://github.com/robinhuy/fake-rest-api-nodejs.git 安装...
这使您可以使用任何测试邮件地址,并在Fake SMTP Server的Web应用程序中检查已发送的电子邮件。 服务器存储电子邮件的最大数量。 如果超过了电子邮件的最大数量,则将删除旧电子邮件,以避免系统占用过多内存。 ...
PHP的电子邮件spoofer
只有这些电子邮件是伪造的,导致垃圾邮件发送者疯狂追逐,消耗他们的资源,耗尽他们的带宽,削弱他们的效力,并最终花费他们的时间和宝贵的金钱。 刑罚恰到好处是轻描淡写。 安装 我们从安装 Composer 开始。 $ ...
它可以处理向大量用户发送电子邮件的目的,以收集反馈。目录基本信息这个全栈Web应用程序项目将使用Node.js和React来实践现代技术。 您可以添加积分,创建调查并发送至电子邮件。 在此处查找Heroku部署的版本: : :...
smtp4dev-用于开发和测试的伪造的SMTP电子邮件服务器。 适用于Windows,Linux,Mac OS-X(以及可能提供.NET Core的其他地方)的虚拟SMTP服务器。 使您可以测试应用程序,而不会向实际客户发送垃圾邮件,而无需使用...
Coral是一个渲染引擎,在通过电子邮件将其发送之前,还使用伪造者将HTML模板转换为PDF。 认证由DHIS2管理-如果用户拥有DHIS2帐户,则他们将自动拥有Sunfish帐户。 Sunfish将其用户名/密码转发给DHIS2进行身份验证...
它不发送电子邮件,但记录电子邮件对象。 要查看日志,请打开whppt:* debug env var。 例如:DEBUG = whppt:* AwsSmpt:aws smpt提供程序使用aws smtp发送和发送电子邮件。 要使用它,发送了EMAIL_PROVER = ...