FreeBuf@关于钓鱼邮件的学习笔记( 二 )


SPF 其实就是一条DNS的TXT的记录 , 查询域名的方法也很简单 , 以163.com为例:
Linux:
dig -t txt 163.com
Windows:
nslookup -type=txt 163.com
FreeBuf@关于钓鱼邮件的学习笔记
本文插图
可以看到163.com的SPF记录为163.com text = "v=spf1 include:spf.163.com-all" , 其中:
再看看spf.163.com的SPF记录 , 也是引用了其他域名的SPF策略 , 再次查询a.spf.163.com的SPF记录 , 最后看到很多IP段 , 我们在使用163.com邮箱发邮件时 , 收件方会查询到这些IP , 如果发件人的源IP不在这些IP列表里 , 则说明是一封伪造的邮件 。
FreeBuf@关于钓鱼邮件的学习笔记
本文插图
测试一下伪装为admin@163.com邮箱给qq.com发邮件 , 最后提示550DNS检查失败 。
FreeBuf@关于钓鱼邮件的学习笔记
本文插图
DKIMDKIM是一种在邮件中嵌入数字签名的技术 , DKIM签名会对邮件中的部分内容进行HASH计算 , 最后在邮件头中增加一个DKIM-Signature头用于记录签名后的HASH值 , 接收方接收到邮件后 , 通过DNS查询得到公开密钥后进行验证 ,验证不通过 , 则认为是垃圾邮件 。
那么我们如何获取到发件方的DKIM的密钥呢?在DKIM中有一个选择器(selector)的概念 , 通过此功能可以为不同的用户提供不同的签名 , 想要找到发件方的DKIM服务器 , 首先需要找到selector , 在邮件的DKIM头中 , s字段的值即为DKIM的selector , 获取到selector后 , 我们就可以在如下域名中找到密钥 。
以阿里云的邮件为例 , 查看邮件源文件 , 通过s字段可以得到selector的值为s1024 。
FreeBuf@关于钓鱼邮件的学习笔记
本文插图
因此阿里云的DKIM服务器域名为s1024._domainkey.aliyun.com , 同样通过dig或者nslookup即可获取解密密钥 。
FreeBuf@关于钓鱼邮件的学习笔记
本文插图
DMARCDMARC是基于SPF和DKIM协议的可扩展电子邮件认证协议 , 通常情况下 , 它与SPF或DKIM结合使用 , 并告知收件方服务器当未通过SPF或 DKIM检测时该如何处理 。
以阿里云为例 , 获取_dmarc.aliyun.com的txt记录即可获取DMARC策略 。
FreeBuf@关于钓鱼邮件的学习笔记
本文插图
v=DMARC1:版本
p=:接收者根据域名所有者的要求制定的策略 , 取值和含义如下:
none不采取特定措施quarantine邮件接收者将DMARC验证失败的邮件标记为可疑的 。 reject域名所有者希望邮件接收者将DMARC验证失败的邮件拒绝pct=:域名所有者邮件流中应用DMARC策略的消息百分比 。
rua=:用于接收消息反馈的邮箱 。
邮件网关检测原理以上是协议层面的安全防护 , 但是协议防护也不是万能的 , 在真实的企业安全防护中 , 安全邮件网关是保护邮件安全的有效方案 。 邮件安全防护产品在此次钓鱼邮件对抗中起到了重要作用 , 下面简单介绍一下邮件网关的防护原理 。
规则库和杀毒软件一样 , 为了降低误报 , 一些邮件网关会使用规则库的技术 , 一些我们认定为垃圾邮件的邮件 , 则会被当做邮件样本加入规则库 , 下次如果再次遇到相同的邮件即可进行检测 。
邮件头检测检测mail from和from字段是否一致 , 检测SPF、DKIM、DMARC是否符合 。
防病毒邮件中嵌入恶意附件也是常用的攻击方式 , 邮件内容都是BASE64编码的 , 因此附件是可以直接进行还原 , 很多邮件网关都会内置防病毒引擎 , 甚至有的还有沙箱技术 , 让附件样本模拟运行后 , 通过行为来动态判断附件的黑白 。 一些攻击者在发送木马附件的邮件后可能会遇到有目标上线但很快下线的情况 , 遇到这种情况也不要高兴的太早 , 拿到的可能并不是一个真正的主机权限 , 而是一个沙箱 。