同时经过微步在线应急响应团队排查,邮件服务器没有相关的邮件收发记录。
初步怀疑是攻击者依靠发件人发起的,于是验证了一下,果然可以伪造发件人,同时用户也收到了相关的伪造的邮件。
上面的钓鱼案例只是我们在日常安全运营场景中非常典型的一起缩影。
在真实的攻防对抗、APT攻击或是黑灰产中,社工总是一个不错的入口,鉴于其技术难度相对0day低很多、并且其影响较大,通过社工基本上可以打到内网。
所以社工是目前攻击者比较倾向的一种方式,钓鱼邮件作为其中效果最好且成本最低的方式一直受到攻击者的青睐。
钓鱼的手段较多且利用方式相对灵活,我们通过分析几起实战案例,来了解钓鱼的主流方式以及其中的对抗之道理,以便于我们进行体系化的防御。
02 伪造发件人
上面的实战案例已经验证过伪造发件人的可行性,关于伪造发件人原理大家可自行搜索相关文章,这篇就不进行详细的描述。
伪造发件人的实现手法主要有以下几种方式:
伪造发件人的实现方式较多且利用较灵活,需要攻击者根据目标的安全防护水平与防护能力进行针对性的灵活使用,其可以达到的效果就是单纯通过发件人无法看出是否是真实的发件人。
但是其也有相应的检测方法,比较主流的方法就是检查其发件人的IP与DNS里面的TXT记录是否一致或被包含。
下面就是mail.qq.com的邮件服务器IP地址,其是一个地址集,如果发件人的IP地址在这些IP中,根据SPF校验其就是合法的IP地址;不过这里面同样存在被绕过的可能,所以邮件网关类产品不仅仅会校验这块的安全,还有更深层次的校验。
03 通过数据来看邮件安全
鉴于上面几种主流钓鱼方式的影响,我们需要通过数据层面来分析钓鱼邮件的实际影响程度与范围,“数据驱动安全”一直是一种比较好的思路,看一下通过数据分析得出来的结论:
1、数据源
相关代码如下所示:
跑完数据,看一下结果,top一万的域名里面有593个域名没有配置dns的txt记录,占比例为593/10000=5.9%,比例还是很高的,并且这些域名都是全球排名前一万的,相关数据如下:
直接使用email_hack工具来验证一下,使用bbc.com和google.fr来验证一下:
看了一下,确实可以收到。
3、设置了软失败的域名
关于软失败,前文说过配置了软失败的。~all前缀代表软拒绝,对接收方来说,遇到有软拒绝的域名没有通过SPF校验,通常采取的策略是放行或者标记为垃圾邮件。
随便找个软失败的,相关的信息如下:
代码实现如下:
源码如下:
看一下结果,前10000一共有3813个配置了软失败,比例非常高,达38%。很多大厂,google、amazon.com、live、zoom
前面说过,当收件人收到这种配置有软失败的时候,处置策略是放行或者标记为垃圾邮件,即使标为垃圾邮件也比收不到好,拿大厂测试一下。
虽然标为垃圾邮件,但是都收到了,总比收不到好。
saveresult="tee -a notenablespf.txt"
for a in `cat /root/1w.txt`
do
{ a='[email protected]'${a}
result=$(python email_hacker.py -faddr [email protected] -taddr $a -s "Import File" -b "Import File"| grep "success: 1")
if [ $? -eq 0 ];then
echo $a
fi
} &
done
wait
测试了一下,使用linux shell 跑的太慢了,跑了一段时间,大概跑了4000个域名,发现可以伪造发件人的有370个,比例为9.2%。比例还是很高的,apple、zoom、dell。
伪造一个发试试,直接伪造qq.com发给apple.com,竟然发送成功了。这里面由于没有apple.com邮箱,所以没有测试。
不知道苹果会不会进行二次检测,有条件的大家可以测试一下。
2. 内容引用,请注明出处:以上内容引自公众号“微步在线应急响应团队”