前言:

钓鱼邮件是指黑客伪装成同事、合作伙伴、朋友,通过发送电子邮件的方式,诱使用户点击嵌入邮件正文的恶意链接或者打开邮件附件以植入木马或间谍程序,进而窃取用户敏感数据,而伪造邮件更加是在钓鱼邮件基础加了上了一层障眼法。

0×1邮件伪造技术

SMTP邮件服务商互相发送邮件是不需要认证的,邮件伪造也是利用这个特性来实现伪造任意发件人。

图片.pngSMTP邮件传输共三个阶段:

建立SMTP连接

数据库之间传输

连接关闭

在步骤一中建立SMTP连接也就是通过TCP三次握手进行通讯,简单来说邮件伪造实质内容在第二步骤,第二步数据传输阶段行为可控,所以我们邮件伪造主要在第二步。

先来认识SMTP最基础五条命令:

Helo /Ehlo:表示与服务器内处理邮件的进程开始通话”介绍自己”;

Mail from:邮件信息的来源地址,也就是要伪造的地址 ;

Rcpt to:邮件接收者/受害者;

Data :邮件的具体内容/可以添加附件等;

Quit  :退出邮件。

了解这些知识以后我们可以到服务器搭建一个SMTP服务器实验,环境是Windows2008R2,搭建过程很简单。

打开控制面板-添加功能-SMTP服务器:

图片.png一直下一步会自动勾选IIS服务器,选择确定。直到安装完毕,安装成功在Internet信息服务中可以看到SMPT服务,SMTP服务器会默认监听25端口如图,如果跟我一样那么恭喜安装成功了。

当然如果你需要一些其他的设置的话可以在属性值来修改,例如添加域,验证账户密码等等。

图片.png

SMTP服务器默认监听25端口:

图片.png

接下来开始进行一个简单的通信:

首先连接上我们的SMTP服务器这里使用Telnet连接,Telnet smtp服务器25,连接上,输入:”Helo”  给它打个招呼,成功打上招呼:

图片.png

下面开始伪造邮件,运用上面5条命令进行邮件伪造欺骗。

Mail from:hr@huawei.com

Rcpt to:xxxx@163.com

Data: “test 666”

Quit:退出邮件

图片.png

发送钓鱼如图使用Telnet,这样的话就完成了一次邮件伪造,在提示Mail For delivery邮件投递后,说明钓鱼邮件发送成功。下图为邮件伪造的内容:

图片.png

0×2邮件伪造内容检测

检查:邮件原文/查看邮件。

图片.png

若只有 一个 Received ,且列出的 IP 与宣称的地址不一致,则就是伪造的。

虽然 Received 头可以伪造,但是新的 Received 头会添加在消息的头部,所以,如果存在伪造的 Received,那么它总是在后面。其次查询一下发送过来的域名是否为主机所在IP地址

另外如果mail_from (实际发件人) 和 from (宣称的发件人) 不一致,则收到的邮件会显示 本邮件由<实际发件人>代发, 以提醒收件人两者的不同。

图片.png其邮件信息伪造排查攻略 引用这一张图:

图片.png

0×3 关于防止垃圾邮件的两种技术

SPF与DKIM技术

SPF是 Sender Policy Framework 的缩写,一种以IP地址认证电子邮件发件人身份的技术。 接收邮件方会首先检查域名的SPF记录,来确定发件人的IP地址是否被包含在SPF记录里面,如果在,就认为是一封正确的邮件,否则会认为是一封伪造的邮件进行退回。

SPF可以防止别人伪造你来发邮件,是一个反伪造性邮件的解决方案。当你定义了你域名的SPF记录之后, 接收邮件方会根据你的SPF记录来确定连接过来的IP地址是否被包含在SPF记录里面,如果在,则认为是一封正确的邮件,否则则认为是一封伪造的邮件。 

DKIM

DKIM让企业可以把加密签名插入到发送的电子邮件中,然后把该签名与域名关联起来。签名随电子邮件一起传送,而不管是沿着网络上的哪条路径传送, [1]  电子邮件收件人则可以使用签名来证实邮件确实来自该企业。

 *本文作者:千里目安全实验室,转自FreeBuf