通过Email伪造发件人进行钓鱼攻击

网络安全wuyou 发表了文章 • 1 个评论 • 56 次浏览 • 6 天前 • 来自相关话题

最近本人在研究伪造电子邮件,目前进展缓慢,但因为东西比较多,所以就决定先把第一阶段的研究结果发出来。

 协议介绍
发送:SMTP(Simple Mail Transfer Protocol):SMTP主要负责底层的邮件系统如何将邮件从一台机器传至另外一台机器。SMTP协议默认端口:25

接受:POP(Post Office Protocol):版本为POP3,POP3是把邮件从电子邮箱中传输到本地计算机的协议。POP3协议默认端口:110

SMTP协议最基础的五条内容如下:Helo /Ehlo:表示与服务器内处理邮件的进程开始通话”介绍自己”;
Mail from:邮件信息的来源地址,也就是要伪造的地址 ;
Rcpt to:邮件接收者/受害者;
Data :邮件的具体内容/可以添加附件等;
Quit :退出邮件。工具介绍

我们可以使用Kali中的 Swaks(SMTP界的瑞士军刀) 工具进行伪造电子邮件--body //邮件内容
--from //邮件发送人(伪造内容)
--to //邮件接收人
--header "Subject: 邮件标题"
--ehlo qq.com //伪造邮件ehlo头,即是发件人邮箱的域名。提供身份认证
--data email.txt //将正常源邮件的内容保存成TXT文件,再作为正常邮件发送
--tls //加密传输









实战测试
首先,如果你想伪造一个qq邮箱用户向另一个qq邮箱用户发送邮件,或者163向qq发送,因为SPF记录的原因,这些是很难做到的SPF 记录实际上是服务器的一个 DNS 记录,原理其实很简单:

假设邮件服务器收到了一封邮件,来自主机的 IP 是173.194.72.103,并且声称发件人为email@example.com。
为了确认发件人不是伪造的,邮件服务器会去查询example.com的 SPF 记录。
邮件内容如如果该域的 SPF 记录设置允许 IP 为173.194.72.103的主机发送邮件,则服务器就认为这封邮件是合法的;
如果不允许,则通常会退信,或将其标记为垃圾/仿冒邮件。

因为不怀好心的人虽然可以「声称」他的邮件来自example.com,但是他却无权操作example.com的 DNS 记录;
同时他也无法伪造自己的 IP 地址,因此 SPF 是很有效的。
当前基本上所有的邮件服务提供商(例如 Gmail、QQ 邮箱等)都会验证它。






Linux下检测是否存在SPF记录:




 
选择一个没有SPF记录的域名,并发送至QQ邮箱时依然失败




 
原因可能如下:




 
如果我们在qq邮箱中增加白名单的话当然可以实现接受




 
不过比如huawei.com使用的就是软失败,可以发送但会被当做垃圾邮件放到垃圾箱中(具体能不能发还要看运气)
软失败;SPF记录已将主机指定为不被允许发送但正在转换;接受但标记
 
但是在163邮箱或其他企业邮箱中,我们可以轻松伪造发件人发送邮件




 
接下来介绍 --data 参数如何使用
选择一封正常的邮件,显示邮件原文




 
保存到txt文件中,并删掉To、From参数









 
 
实际效果:





其中的链接我都改成了钓鱼页面
具体可以参考这篇文章:http://www.freebuf.com/web/133689.html
但是这样会被检测到钓鱼邮件而被拒收或拉入垃圾箱中,所以具体要如何钓鱼还是要考大家的脑洞了

 
  查看全部
最近本人在研究伪造电子邮件,目前进展缓慢,但因为东西比较多,所以就决定先把第一阶段的研究结果发出来。

 协议介绍
发送:SMTP(Simple Mail Transfer Protocol):SMTP主要负责底层的邮件系统如何将邮件从一台机器传至另外一台机器。SMTP协议默认端口:25

接受:POP(Post Office Protocol):版本为POP3,POP3是把邮件从电子邮箱中传输到本地计算机的协议。POP3协议默认端口:110

SMTP协议最基础的五条内容如下:
Helo /Ehlo:表示与服务器内处理邮件的进程开始通话”介绍自己”;
Mail from:邮件信息的来源地址,也就是要伪造的地址 ;
Rcpt to:邮件接收者/受害者;
Data :邮件的具体内容/可以添加附件等;
Quit :退出邮件。
工具介绍

我们可以使用Kali中的 Swaks(SMTP界的瑞士军刀) 工具进行伪造电子邮件
--body //邮件内容
--from //邮件发送人(伪造内容)
--to //邮件接收人
--header "Subject: 邮件标题"
--ehlo qq.com //伪造邮件ehlo头,即是发件人邮箱的域名。提供身份认证
--data email.txt //将正常源邮件的内容保存成TXT文件,再作为正常邮件发送
--tls //加密传输
1.png


2.png


实战测试
首先,如果你想伪造一个qq邮箱用户向另一个qq邮箱用户发送邮件,或者163向qq发送,因为SPF记录的原因,这些是很难做到的
SPF 记录实际上是服务器的一个 DNS 记录,原理其实很简单:

假设邮件服务器收到了一封邮件,来自主机的 IP 是173.194.72.103,并且声称发件人为email@example.com。
为了确认发件人不是伪造的,邮件服务器会去查询example.com的 SPF 记录。
邮件内容如如果该域的 SPF 记录设置允许 IP 为173.194.72.103的主机发送邮件,则服务器就认为这封邮件是合法的;
如果不允许,则通常会退信,或将其标记为垃圾/仿冒邮件。

因为不怀好心的人虽然可以「声称」他的邮件来自example.com,但是他却无权操作example.com的 DNS 记录;
同时他也无法伪造自己的 IP 地址,因此 SPF 是很有效的。
当前基本上所有的邮件服务提供商(例如 Gmail、QQ 邮箱等)都会验证它。


3.png


Linux下检测是否存在SPF记录:
4.png

 
选择一个没有SPF记录的域名,并发送至QQ邮箱时依然失败
5.png

 
原因可能如下:
6.png

 
如果我们在qq邮箱中增加白名单的话当然可以实现接受
7.png

 
不过比如huawei.com使用的就是软失败,可以发送但会被当做垃圾邮件放到垃圾箱中(具体能不能发还要看运气)
软失败;SPF记录已将主机指定为不被允许发送但正在转换;接受但标记
 
但是在163邮箱或其他企业邮箱中,我们可以轻松伪造发件人发送邮件
8.png

 
接下来介绍 --data 参数如何使用
选择一封正常的邮件,显示邮件原文
9.png

 
保存到txt文件中,并删掉To、From参数
10.png


11.png

 
 
实际效果:

12.png

其中的链接我都改成了钓鱼页面
具体可以参考这篇文章:http://www.freebuf.com/web/133689.html
但是这样会被检测到钓鱼邮件而被拒收或拉入垃圾箱中,所以具体要如何钓鱼还是要考大家的脑洞了