伪造邮件比钓鱼邮件更危险。SMTP 邮件服务商互相发送邮件是不需要认证的,邮件伪造正是利用这个特性,可以实现伪装成任何发件人。怎么才能做到这点?如何检测这种攻击方式?
0x1 邮件伪造技术
前言:
钓鱼邮件是指黑客伪装成同事、合作伙伴、朋友,通过发送电子邮件的方式,诱使用户点击嵌入邮件正文的恶意链接或者打开邮件附件以植入木马或间谍程序,进而窃取用户敏感数据,而伪造邮件更加是在钓鱼邮件基础加了上了一层障眼法。
SMTP 邮件服务商互相发送邮件是不需要认证的,邮件伪造也是利用这个特性来实现伪造任意发件人。
SMTP 邮件传输共三个阶段:
建立 SMTP 连接
数据库之间传输
连接关闭
在步骤一中建立 SMTP 连接也就是通过 TCP 三次握手进行通讯,简单来说邮件伪造实质内容在第二步骤,第二步数据传输阶段行为可控,所以我们邮件伪造主要在第二步。
先来认识 SMTP 最基础五条命令:
Helo /Ehlo:表示与服务器内处理邮件的进程开始通话"介绍自己"
Mail from:邮件信息的来源地址,也就是要伪造的地址
Rcpt to:邮件接收者/受害者
Data:邮件的具体内容/可以添加附件等
Quit:退出邮件
了解这些知识以后我们可以到服务器搭建一个 SMTP 服务器实验,环境是 Windows2008R2 搭建过程很简单。
打开控制面板-添加功能 -SMTP 服务器。
SMTP 服务器默认监听 25 端口。
接下来开始进行一个简单的通信。
首先连接上我们的 SMTP 服务器这里使用 Telnet 连接。
Telnet smtp 服务器 25 连接上。
输入:"Helo" 给它打个招呼 成功打上招呼。
下面开始伪造邮件,运用上面5条命令进行邮件伪造欺骗。
Mail from:hr@huawei.com
Rcpt to:xxxx@163.com
Data:“test 666”
Quit:退出邮件
发送钓鱼如图使用 Telnet,这样的话就完成了一次邮件伪造,在提示 Mail For delivery 邮件投递后,说明钓鱼邮件发送成功。下图为邮件伪造的内容:
0x2 邮件伪造内容检测
检查:邮件原文/查看邮件
若只有 一个 Received ,且列出的 IP 与宣称的地址不一致,则就是伪造的。
虽然 Received 头可以伪造,但是新的 Received 头会添加在消息的头部,所以,如果存在伪造的 Received,那么它总是在后面。其次查询一下发送过来的域名是否为主机所在 IP 地址。
另外如果 mail_from (实际发件人) 和 from (宣称的发件人) 不一致,则收到的邮件会显示 本邮件由<实际发件人>代发, 以提醒收件人两者的不同。
其邮件信息伪造排查攻略,引用这一张图:
0x3 关于防止垃圾邮件的两种技术
SPF 与 DKIM 技术
SPF 是 Sender Policy Framework 的缩写,一种以 IP 地址认证电子邮件发件人身份的技术。 接收邮件方会首先检查域名的SPF记录,来确定发件人的IP地址是否被包含在 SPF 记录里面,如果在,就认为是一封正确的邮件,否则会认为是一封伪造的邮件进行退回。
SPF 可以防止别人伪造你来发邮件,是一个反伪造性邮件的解决方案。当你定义了你域名的 SPF 记录之后, 接收邮件方会根据你的SPF记录来确定连接过来的 IP 地址是否被包含在SPF记录里面,如果在,则认为是一封正确的邮件,否则则认为是一封伪造的邮件。
DKIM
DKIM 让企业可以把加密签名插入到发送的电子邮件中,然后把该签名与域名关联起来。签名随电子邮件一起传送,而不管是沿着网络上的哪条路径传送, 电子邮件收件人则可以使用签名来证实邮件确实来自该企业。◾️
感谢 4hou 的精彩分析: http://www.4hou.com/web/14340.html
Commenti