关于伪造和防御伪造电子邮件以及制造电子邮件的讨论

电脑杂谈  发布时间:2020-04-07 19:33:37  来源:网络整理

电子邮件软件_qq消息软件_邮件群发软件制作

文章目录

*作者: Macr0phag3,本文是FreeBuf原创的激励程序,未经许可,严禁转载.

熟悉kali或进行过smtp分析的人们听说过Swaks工具. 它被称为SMTP世界的瑞士. 工具肯定会很棒,但是我不了解其原理,因此感到有些东西丢失了. 所以我自己用Python编写了一个类似的工具,添加了邮件的功能,并顺便分析了一波原理.

SMTP协议是一种简单的邮件传输协议. 它属于TCP / IP协议群集. 它是用于将邮件从源地址传输到目标地址的一组规则,并且它控制邮件的传输方法. SMTP服务器是遵循SMTP协议的传出邮件服务器,用于发送或转发电子邮件.

SMTP模型如下:

SMTP 模型

SMTP 模型

简单的通信过程如下(以163邮箱为例,以下返回为正常):

第一步是请求建立连接:

telnet: telnet 163mx03.mxmail.netease.com 25

返回: 220 163.com用于Coremail系统的反垃圾邮件GT(163com [20141201])

第二步是打开传输通道:

发送: HELO 或EHLO . 有什么区别? EHLO已更新电子邮件软件,并将返回smtp服务器支持的命令,该命令比HELO相对有用,因此基本用途是EHLO. 主机使用HELO / EHLO命令进行自我介绍,可以将其翻译为Hello,我是.

返回: 250 OK或:

250-mail
250-PIPELINING
250-AUTH LOGIN PLAIN
250-AUTH=LOGIN PLAIN
250-coremail 1Uxr2xKj7kG0xkI17xGrU7I0s8FY2U3Uj8Cz28x1UUUUU7Ic2I0Y2Urz44XGUCa0xDrUUUUj
250-STARTTLS
250-SIZE 73400320
250 8BITMIME

如您所见,EHLO返回更详细的信息.

第三步是MAIL命令:

发送: 邮件发件人: <发件人的邮箱>

返回: 250邮件确认

第四步是RCPT命令:

发送: RCPT发送至: <收件人的邮箱>

返回: 250邮件确认

第五步是DATA命令:

qq消息软件_邮件群发软件制作_电子邮件软件

发送: DATA

返回: 354用 结束数据.

然后,您可以输入电子邮件的内容,包括主题,电子邮件正文等.

第五步完成后,服务器将返回发送电子邮件的成功或失败:

返回: <= 250 Mail OK作为mx13,P8CowAB3KDAxa5tbCxAiEg-排队. 29768S2 1536912177

通过这种方式,发送了一封简单的电子邮件. 当然,邮件服务器会在此过程中做出各种判断,以避免轻易接受垃圾邮件.

完整的演示如下:

<= 220 163.com Anti-spam GT for Coremail System (163com[20141201])
=> ehlo antispam
<= 250-mail
<= 250-PIPELINING
<= 250-AUTH LOGIN PLAIN
<= 250-AUTH=LOGIN PLAIN
<= 250-coremail 1Uxr2xKj7kG0xkI17xGrU7I0s8FY2U3Uj8Cz28x1UUUUU7Ic2I0Y2UFQXaMIUCa0xDrUUUUj
<= 250-STARTTLS
<= 250-SIZE 73400320
<= 250 8BITMIME
=> mail from:<hr@huawei.com>
<= 250 Mail OK
=> rcpt to:<手动打码@163.com>
<= 250 Mail OK
=> data
<= 354 End data with <CR><LF>.<CR><LF>
=> to: 手动打码@163.com
=> from: hr@huawei.com
=> subject: 这是一封垃圾邮件
=>
=> DKIM?听上去很好吃
=> SPF 不是防晒系数吗
=> 我觉得 SMTP 很安全啊
=> 我们不存在垃圾邮件,那些都是正常的邮件
=> 邮件也是不存在的
=> .
<= 250 Mail OK queued as mx3,NcCowADX4z1_bJtbcsNOQw--.37583S2 1536912511

电子邮件结果:

邮箱结果

邮箱结果

因此,由于发送了许多Telnet电子邮件,因此与通常的发送电子邮件方式有很大不同. 我们都是通过Web界面或GUI发送的,如下所示:

通过 web 界面或者 GUI 发的

通过 web 界面或者 GUI 发的

我们使用Telnet直接发送邮件,实际上,它是在模拟第二个Send.

清除SMTP,然后假设是假电子邮件的发件人.

回顾先前的Telnet电子邮件过程,我们可以看到我们使用的邮件来自: 声称是hr@huawei.com,并且SMTP协议本身不需要对此语句进行身份验证,因此可以通过这种方式进行伪造. 那么,经过这么多年的发展,制造商为解决这个问题做了什么努力?

SPF是一种DNS记录,旨在防止垃圾邮件. 它是TXT记录的一种. 它用于注册一个域名所拥有的所有IP地址以发送邮件. 发件人向收件人发送电子邮件后,邮件接收服务器将接收电子邮件并执行以下操作:

检查哪个域声称已发送邮件电子邮件软件,并检查域的SPF记录的DNS.

确定发送服务器的IP地址是否与SPF记录中发布的IP地址匹配.

为电子邮件评分: 如果IP地址匹配,则电子邮件通过身份验证并获得肯定的分数. 如果IP地址不匹配,则消息将通过身份验证失败并收到否定分数. 然后,将这些结果应用于现有的反垃圾邮件过滤策略和启发式过滤. 或直接拒绝接受并返回550 MI: SPF.

让我们检查一下SPF记录163:

> nslookup -q=TXT 163.com
Server:        202.117.112.3
Address:    202.117.112.3#53
Non-authoritative answer:
163.com    text = "v=spf1 include:spf.163.com -all"
Authoritative answers can be found from:
163.com    nameserver = ns5.nease.net.
163.com    nameserver = ns3.nease.net.
163.com    nameserver = ns6.nease.net.
163.com    nameserver = ns1.nease.net.
163.com    nameserver = ns4.nease.net.
163.com    nameserver = ns8.166.com.
163.com    nameserver = ns2.166.com.
ns1.nease.net    internet address = 123.58.173.177
ns3.nease.net    internet address = 220.181.36.234
ns4.nease.net    internet address = 123.125.48.245
ns5.nease.net    internet address = 121.195.179.18
ns6.nease.net    internet address = 52.215.24.44

qq消息软件_邮件群发软件制作_电子邮件软件

v = spf1包括: spf.163.com-这是什么意思?

SPF记录包含在TXT记录中,格式如下:

v=spf1 [[pre] type [ext] ] ... [mod]

1,v = spf1: SPF版本. 如果使用发件人ID,则此字段应为v = spf2

2. pre: 匹配时定义返回值. 可能的返回值包括:

+: 默认值. 测试完成时,表示通过.

-: 表示测试失败. 此值通常是-all,表示没有其他匹配发生.

〜: 表示软故障,通常表示测试未完成.

?: 表示不. 当测试未完成时,通常也使用此值.

3. 类型: 定义使用的确认测试的类型:

include: 包含给定的域名测试. 以include: domain的形式编写.

all: 终止测试序列. 例如,如果选项为-all,则到达此记录意味着测试失败. 但是,如果不确定,则可以使用“?All”表示测试将被接受.

ip4: 使用IPv4进行身份验证. 可以使用ip4: ipv4或ip4: ipv4 / cidr的形式.

4. ext: 定义类型的可选扩展名. 如果此字段不可用,则仅使用一条记录进行查询.

5. mod: 这是最后一个指示,作为记录的更正值.

测试后的以下结果:

通过; SPF记录指定要允许发送的主机;接受

硬故障; SPF记录已指定不允许主机发送;被拒绝

软件故障; SPF记录已指定不允许主机发送但正在转换主机. 接受但已标记

中性; SPF记录清楚地表明它与有效性无关;接受

否;此域中没有SPF记录,或者SPF记录不评估结果;接受

因此,当我们声称hr@qq.com向163发送电子邮件时,163将不会接受(因为qq由spf记录):

<= 220 163.com Anti-spam GT for Coremail System (163com[20141201])
=> ehlo antispam
<= 250-mail
<= 250-PIPELINING
<= 250-AUTH LOGIN PLAIN
<= 250-AUTH=LOGIN PLAIN
<= 250-coremail 1Uxr2xKj7kG0xkI17xGrU7I0s8FY2U3Uj8Cz28x1UUUUU7Ic2I0Y2UFsDjanUCa0xDrUUUUj
<= 250-STARTTLS
<= 250-SIZE 73400320
<= 250 8BITMIME
=> mail from:<hr@qq.com>
<= 550 MI:SPF 163 mx45,X8CowEB5qUXsdZtbeT4JTQ--.35331S2 1536914924 http://mail.163.com/help/help_spam_16.htm?ip=手动打码&hostid=mx45&time=1536914924

qq消息软件_电子邮件软件_邮件群发软件制作

DKIM是一种验证技术,可以防止电子邮件欺诈. 它通过邮件加密和身份验证来验证通过电子邮件发送的域名.

DMARC是基于现有SPF和DKIM协议的可扩展电子邮件身份验证协议. 已在邮件发送方和接收方双方建立了邮件反馈机制,以便利邮件发送方和邮件接收方改善和监督域名管理.

如果您有兴趣,可以自己检查信息.

更多,SPF可以一劳永逸吗?其实并不是. 以163和qq为例,找到发送者的spf记录,并将其标记为硬故障. 当然,这是最好的. 直接判断. 但是,如果发件人使用软故障或没有SPF记录怎么办?例如,huawei.com是软故障:

huawei.com text = "v=spf1 ip4:45.249.212.32 ip4:45.249.212.35 ip4:119.145.14.93 ip4:58.251.152.93 ip4:194.213.3.17 ip4:206.16.17.72 ip4:45.249.212.255 ip4:45.249.212.187/29 ip4:45.249.212.191 ip4:185.176.76.210 ~all"

如果发生这种情况,则取决于制造商的工作. 一般来说,它是发布的.

完成假冒发件人之后,让我们谈谈邮件.

电子邮件是最古老的匿名攻击之一. 通过将机器设置为连续发送大量电子邮件到同一地址,攻击者可以耗尽接收者的网络带宽. 由于这种攻击方法简单易用,因此,还有许多用于发送匿名电子邮件的工具,只要对方知道您的电子邮件地址,您就可以进行攻击,因此这是每个人最有价值的攻击方法.

由于可以伪造发件人,因此发送邮件看起来很容易. 确实是这样. 另外,由于大量的请求和链接,它将触发接收者的各种抵制. 接下来,讨论邮件的三种不同方式.

单线程,只发送它,拿起无限循环并执行: 而1: xxxx

短连接是最容易想到的. 多线程,每个线程都会启动一个链接请求,并在发送一个链接请求后停止. 如果线程数很少,也可以,一旦获得更多线程,您就会得到疯狂的提示: 421连接过多. 它在ehlo反垃圾邮件中被杀死. 在大多数情况下,100个线程可以成功生成20个数据包,这很好. 发送链接后释放链接非常浪费. 而且,当smtp服务器对频繁的连接请求非常敏感时,很容易禁用ip(例如qq).

长连接: 设置线程数后,一旦ehlo反垃圾邮件成功,它将重复发送邮件到数据. 成功发送邮件后,链接将不会被释放,并且将一直发送. 如果接收者的smtp服务器强制释放该链接,则ehlo反垃圾邮件将重新启动. 在这种情况下,如果不手动停止,您将始终尝试链接和发送电子邮件. 轰炸效率加.

基于上述原则和思想,我自己编写了一个命令行工具: email_hack

usage: email_hack.py [-h] -faddr FROM_ADDRESS -taddr TO_ADDRESS
                     [-tnum THREADS_NUM] [-v VERBOSE] [-c CRAZY_MODE]
optional arguments:
  -h, --help            show this help message and exit
  -faddr FROM_ADDRESS, --from_address FROM_ADDRESS
                        fake from address
  -taddr TO_ADDRESS, --to_address TO_ADDRESS
                        the address you want to delivery
  -tnum THREADS_NUM, --threads_num THREADS_NUM
                        how many threads you want
  -v VERBOSE, --verbose VERBOSE
                        verbose level
  -c CRAZY_MODE, --crazy_mode CRAZY_MODE
                        Keep sending fake email (** Use with caution **)

有关详细信息,请访问gayhub: .

假邮件效果:

163:

163邮箱

163邮箱

qq:

QQ邮箱

QQ邮箱

邮件效果:

邮件群发软件制作_电子邮件软件_qq消息软件

邮件效果

邮件效果

邮件效果

邮件效果

供应商: 对spf记录使用硬故障标签. 并且在验证过程中预测到软故障标记时,将尽可能地拒绝它. 如果可能,请转到DKIM和DMARC

用户: 有关重要的电子邮件信息,您可能希望检查原始电子邮件.

查看一下邮件原文

查看一下邮件原文

如果仅接收到一个,并且列出的IP与声明的地址不匹配,则它是伪造的. 尽管可以伪造Received标头,但是新的Received标头将添加到邮件的标头中,因此,如果存在伪造的Received,它将始终位于后面.

如果有多个已接收,则第一个已接收由常规SMTP服务器(网易,腾讯等)转发,然后必须对其进行验证并且有效的用户可以转发它,因为这些制造商将不会在以下位置打开匿名转发这次,您只需要查看IP和声明的身份是否一致,协议就可以了. 如果您看起来不规则,则需要更加小心.

以2个示例为例:

未伪造:

未被伪造

未被伪造

未被伪造

未被伪造

伪造:

伪造

伪造

伪造

伪造

对于大量并发连接请求,不仅必须拒绝它,而且还必须在一段时间内阻止其IP. 经过测试,qq将在大量请求后阻塞,163只是拒绝连接,并返回类似“请在15分钟内重试”的信息,实际上,您仍然可以发起连接请求...╮(╯▽╰ )╭. 最后,当电子邮件多次发送失败时,请直接断开连接,不要保留频道,并强制发件人重新发起连接请求.

*作者: Macr0phag3,本文是FreeBuf原创的激励程序,未经许可,严禁转载.


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-167377-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      热点图片
      拼命载入中...