PartⅠ邮件伪造

简单邮件传输协议 (Simple Mail Transfer Protocol, SMTP) 即简单邮件传输协议,是在Internet传输email的事实标准。正如名字所暗示的那样,它其实是一个非常简单的传输协议,无需身份认证,而且发件人的邮箱地址是可以由发信方任意声明的,利用这个特性可以伪造任意发件人。

RFC821:https://tools.ietf.org/html/rfc821
• SMTP默认端口:25
• SSL SMTP默认端口:465

swaks 工具基本用法

输出内容的含义
===: swaks输出的信息行
*: swaks中产生的错误
->: 发送到目标的预期行(无错误)
<- : 服务器的预期回复(无错误)
<**: 服务器返回的错误信息

swaks --to <要测试的邮箱> 用来测试邮箱的连通性

swaks --to ******@qq.com
=== Trying mx3.qq.com:25...
=== Connected to mx3.qq.com.
<-  220 newxmmxsza51.qq.com MX QQ Mail Server.
 -> EHLO kali
<-  250-newxmmxsza51.qq.com
<-  250-STARTTLS
<-  250-SIZE 73400320
<-  250 OK
 -> MAIL FROM:<kali@kali>
<-  250 OK.
 -> RCPT TO:<******@qq.com>
<-  250 OK 1
 -> DATA
<-  354 End data with <CR><LF>.<CR><LF>.
 -> Date: Mon, 22 Mar 2021 22:03:58 -0400
 -> To: ******@qq.com
 -> From: kali@kali
 -> Subject: test Mon, 22 Mar 2021 22:03:58 -0400
 -> Message-Id: <20210322220358.001219@kali>
 -> X-Mailer: swaks v20201014.0 jetmore.org/john/code/swaks/
 -> 
 -> This is a test mailing
 -> 
 -> 
 -> .
<** 550 Domain may not exist or DNS check failed [MAz3LfNr0S8JzuNjNLtpwmZUSRZisIHafHsJ/Fq33Wdo8+ze9yLN3dAcYpHgRxVRXQ== IP: ************].
 -> QUIT
<-  221 Bye.
=== Connection closed with remote host.

无法发送成功,具体原因见附录。

选项说明:(更多高级功能请查man手册)

--from  000@qq.com     //发件人邮箱;
--ehlo  qq.com      //伪造邮件ehlo头,即是发件人邮箱的域名。提供身份认证
--body "http://www.baidu.com"    //引号中的内容即为邮件正文;
--header "Subject:邮件标题"   //邮件头信息,subject为邮件标题
--data ./Desktop/email.txt    //将正常源邮件的内容保存成TXT文件,再作为正常邮件发送;
–attach 添加附件

附带选项的测试:

swaks --to jqcanm56917@chacuo.net --from admin@********.com --ehlo ********.com --header "Subject:安全性警告" --body "您的邮箱密码已过期 请尽 快更改。"
=== Trying mx.chacuo.net:25...
=== Connected to mx.chacuo.net.
<-  220 web1905 chcuo.net server 0.2
 -> EHLO *********.com
<-  250 web1905
 -> MAIL FROM:<admin@********.com>
<-  250 Ok
 -> RCPT TO:<jqcanm56917@chacuo.net>
<-  250 Ok
 -> DATA
<-  354 End data with <CR><LF>.<CR><LF>
 -> Date: Mon, 22 Mar 2021 23:49:33 -0400
 -> To: jqcanm56917@chacuo.net
 -> From: admin@********.com
 -> Subject:安全性警告
 -> Message-Id: <20210322234933.001791@kali>
 -> X-Mailer: swaks v20201014.0 jetmore.org/john/code/swaks/
 -> 
 -> 您的邮箱密码已过期 请尽快更改。
 -> 
 -> 
 -> .
<-  250 Ok
 -> QUIT
<-  221 Bye
=== Connection closed with remote host.

邮件截图:

PartⅠ邮件伪造

邮件伪造的困难

伪造邮件的原理

邮件为什么可以被伪造呢,最根本的原因就是SMTP协议不会验证发送者的身份,当邮件在两个不同的SMTP邮件服务器中被传输时,我们可以通过伪造来源欺骗接收者的SMTP服务器。

没有配置SPF,邮件服务器就不会去验证发件人,就可以直接进行伪造了。这一点利用上述工具即可实现。

也可以搭建自己的邮件服务器(见附录二),或者使用邮件伪造服务:http://tool.chacuo.net/mailanonymous

PartⅠ邮件伪造

fake mailer:

PartⅠ邮件伪造

主流邮件服务提供商是不会接收从未配置SPF的服务器发来的邮件的。

QQ邮箱在接收到邮件时,会检查域名的SPF记录,未配置SPF的域名,邮箱容易被伪造并成功投递到目标邮箱;已经配置了SPF的域名,检验后会被投递到垃圾箱。

简单的绕过方式

申请一些和目标域名比较相似的域名,比如用0代替o,用1代替l,用vv代替w等等,这就需要发挥你的想象来寻找相似的域名:

http://www.taoba0.com/
http://www.a1iyun.com

使用这些域名搭建相关邮件服务。

高端玩法

攻击者的域名为

www.biṇaṇce.com

用于替换字母n的字符为:ṇ
Unicode编码为:U+1E47

真正的字母n的Unicode编码为:
U+006E,攻击者上演了一出障眼法骗过了那些受害者。

这样的域名是怎么注册的呢?在了解怎么注册一个这样的域名前,需要先了解什么是国际域名(Internationalized domain name, IDN)。
IDN是指在域名中包含至少一个特殊语言字母的域名,特殊语言包括中文、法文、拉丁文等。在DNS系统工作中,这种域名会被编码成ASCII字符串,并通过Punycode进行翻译。

Punycode是一个根据RFC 3492标准而制定的编码系统,主要用于把域名从地方语言所采用的Unicode编码转换成为可用於DNS系统的编码。

目前,因为操作系统的核心都是英文组成,DNS服务器的解析也是由英文代码交换,所以DNS服务器上并不支持直接的中文域名解析,所有中文域名的解析都需要转成punycode码,然后由DNS解析punycode码。其实目前所说的各种主流浏览器都完美支持IDN域名,浏览器里面会自动对IDN域名进行Punycode转码,而地址栏依旧显示的是原始输入的IDN域名。

所以,要想注册“币安”的这个域名:

www.biṇaṇce.com

其实只需要注册他经过punycode转码后的域名:

www.xn--biace-4l1bb.com

然后让目标访问www.biṇaṇce.com,在地址栏中就很难被发现。
PartⅠ邮件伪造

我遍历了unicode表,找了一些字母形似的unicode,可利用此表来注册一些钓鱼域名
PartⅠ邮件伪造

仿冒的阿里云

www.аlіyun.com

0x456 і
0x430 а

经punycode转码:www.xn--lyun-43d3u.com

PartⅠ邮件伪造

punycode在线转换工具:http://tools.jb51.net/punycode/index.php

上一篇:【MySQL】mysql:重复数据查询 sql


下一篇:动态组件 is vue