HVV蓝队–钓鱼邮件

前言

这篇文章不是写如何做一份钓鱼邮件,是打算从蓝方角度思考一下,如何防范钓鱼邮件攻击并进行识别。

希望以后红队大佬轻点打。

SMTP

讲邮件伪造,就必须要先说一下SMTP协议

image.png

SMTP被设计基于以下交流模型:当用户需要发邮件时候,邮件发送者(Sender-SMTP)建立一个与邮件接收者(Receiver-SMTP)通信的通道,发送者发送SMTP命令给接收者,接收者收到后对命令做回复。通信通道被建立后,发送者发送 MAIL 命令来指定发送者的邮件,如果接受者接收这个邮件,就回复 OK ,接着发送者发送 RCPT命令来指定接收者的邮箱,如果被接收同样回复OK,如果不接受则拒绝(不会终止整个通话)。接收者邮箱确定后,发送者用DATA命令指示要发送数据,并用一个. 结束发送。如果数据被接收,会收到OK ,然后用QUIT结束会话。

Swaks邮件伪造

image.png

Kali中内置了钓鱼邮件工具swaks里面有很重要的一点,就是Sender-smtp,发件人。如果我伪造如admin@qq.com发送一封邮件,发件人是admin@qq.com,对方收到以后怎么判断我这个发件人是不是真实的呢?

答案就是SPF记录,SPF的全称是Sender Policy Framework,是为了防范垃圾邮件而提出来的一种 DNS 记录类型,是一种 TXT 类型的记录,用于登记某个域名拥有的用来外发邮件的所有 IP 地址。

使用TXT记录已经不被推荐,但是有些DNS服务器并未针对SPF类型的记录进行实现,考虑到兼容性的问题,一个合规的SPF记录应该同时具备SPF记录和TXT记录,如下所示:

example.com. IN TXT "v=spf1 +mx a:colo.example.com/28 -all"
example.com. IN SPF "v=spf1 +mx a:colo.example.com/28 -all"

我们可以通过nslookup -q=txt qq.com找到QQ邮箱服务器的IP地址,这样收件人收到一封来自QQ的邮件后,若开起了SPF检验,他会检验发件人是否在上面的IP地址内,如果存在就认为是真的发件人,否则就是钓鱼邮件

image.png

我伪造的我的qq邮箱,这里就是失败了,返回550 SPF check failed,这个原因就是发信IP未被发送域的SPF许可

利用H-from进行中转

若发件人配置了DNS的txt记录,并且收件人开启了SPF检验,那我们是不是就不能伪造邮件了?当然不是,有一个办法是可以实现突破的,H-FromH-From类似各种监控设备的告警机制,配置一个发件邮件,网络或安全设备有告警之后就自动发送过去。常用的这种是需要认证的,如QQ的中转,

image.png

不同客户端对H-From的处置

  • QQ邮箱web版 显示代发人
  • QQ邮箱手机版 不显示代发人

加固

配置DNS的TXT记录

对于使用邮件服务器的用户需要在DNS中配置TXT记录,指明相关的邮箱服务器的IP地址,这样,对方若开启SPF检测,收到相关的邮件以后,会通过DNS查询的方式来查询发件人声明的IP地址。

开启SPF校验

这个主要是对于收件人来说的,当收件人收到一封邮件以后若想校验发件的是否是伪造的,可以通过开启SPF校验这种方式通过DNS查询发件人的IP地址然后再去和发件人的IP地址比对,若匹配或包含则通过SPF校验。

DKIM(感谢密码👴)

主要用来保证邮件的完整性,避免钓鱼。这种技术本质上是采用了RSA算法实现数字签字,既使用私钥加密,公钥解密。DKIM会对邮件头及正文进行签名,没有私钥下,邮件被假冒或篡改后,就会与邮件头签名不一致,从而防止这样的情况

  • 使用RAS算法生成一对公私钥。
  • 将私钥放到邮件服务器上,对发送的邮件使用私钥进行加密。私钥只有邮件服务器的管理者有。
  • 公钥通过DNS的TXT类型将相应的公钥同步到DNS中,收件人收到以后通过DNS这种方式就可以查询到相应的加密算法和相关的公钥。

image.png

DMARC

DMARC是基于SPF和DKIM协议的可扩展电子邮件认证协议,通常情况下 它与SPF或DKIM结合使用,并告知收件方服务器当未通过SPF或 DKIM检测时该如何处理。

image.png