Skip to content

邮件伪造

利用这个伪造的方式可以向目标服务器发送伪造发件人的邮件,从而造成技术危害。

技术前提

基础概念

smtp from,mail from 通常是真正的传输人

message from 通常是展示的收件人

20211102232309

第一行展示的即 smtpfrom mailfrom

第二行展示的即 message from

总结:原生的smtp报文当中并没有对这些字段做校验,所有任何人都可以伪造任何的字段

### 防护技术

SPF

这个技术是为防止发件人在smtp from 当中造假,其会查询 邮件当中 smtp from和helo域名所对应的spf记录,查找其对应的IP地址,如果其发送的IP地址不在这个IP地址范围则说明造假。

查询某个域名的SPF记录

nslookup  -type=txt apple.com
nslookup  -type=txt _spf.apple.com 

DKIM

这个技术是为了验证某邮件确实是某个域名发送的。并且该邮件没有被篡改。

  1. 发件方本地配置签名密钥

  2. 公钥通过DNS配置在公网上

  3. 发件方发信时使用本地私钥对邮件内容进行签名

20211102232338

  1. 收件方收到邮件时通过发件邮箱查询DKIM公钥并进行验签,如果能够解密的话则完成

dkim不会对邮件内容进行加密,所以即使没有找到dkim的地址也不会出现问题。

当收信服务器收到邮件之后会检查邮件头当中的dkim部分,找到d字段对应地址

20211102232347

DMARC

这个防御方式是验证发件箱的 messagefrom字段

20211102232440

允许子域相同即可 默认宽松模式 配置的字段为adkim

  1. 字段的messagefrom的domain
  2. 查询dmarc当中的方法拿到比较的格式
  3. 采用不同方式进行校验
    20211102232449

比较其中的数据

dmarc当中验证dkim当中的头或者是 spf当中的头,但是大多数公司没有配置dkim,所以只会认证spf和messagefrom ,其中一个任意认证成功即可。

最终流程

20211102232458

绕过和进步

第一次

使用smtp2go进行转发,spf绕过成功,dkim 超时 dmarc 失败

因为spf是检测smtp from 和 ip之间的关系 所以成功

dkim超时不管

dmarc 即使失败了,也是选择接受,发送进

改造

dmarc 配置垃圾邮件 DMARC1; p=quarantine

第二次

绕过dmarc 对于 smtp from 和 message from 比较

网上的方法,

2.1 设置空的邮箱地址

smtp from为any@victim.com

helo 为 aa@attack.com

组件的差异性导致的问题

spf组件比较以为smtp from为空则比较helo

dmarc则比较 smtp from 和message from

2.2 spf认证头部注入

legitimate.com(.attacker.com

message 当中也这么进行写入,过dmarc

2.3 设置message from头部

From: bob<[b@b.com](mailto:b@b.com)> => From: =?utf-8?B?Ym9i?=<[b@b.com](mailto:b@b.com)>

大致的格式为=?charset?encoding?encoded-text?=

utf-8?B?5p2O5rC45Y+MKEpvaG5zb24p?=,second@xxxx.com

后面的xxxx.com 为 了满足dmarc其中的判断

3 在内网当中搭建服务器

直接绕spf ,dkim不写,dmarc验证 没有问题

Back to top