有一天,你突然收到一封马化腾发来的邮件,发件人是 ceo@qq.com ,请求你收购腾讯公司,那你是收购还是不收购呢?

有一天,你突然收到一封特朗普发来的邮件,发件人是 trump@whitehouse.gov ,请你来当美国总统,那这个总统你是当还是不当呢?

1548574662928037.png

1548574669836447.png

QQ截图20190127152612.png

伪造邮件能干什么?可以看看我的经历:一次成功的报复

为什么邮件可以伪造

SMTP协议不需要身份认证,利用这个特性可以伪造任意发件人。为了防止邮箱伪造,就出现了SPF。当你定义了你域名的SPF记录后,接收邮件方会根据你的SPF记录来判断发送过来的IP地址是否被包含在SPF记录里面,如果在,则认为是一封正常的邮件,否则则认为是一封伪造的邮件。现在大部份反垃圾邮件系统都支持SPF验证,当然也有些辣鸡邮箱不支持,或者域名本身没有设置SPF记录,所以就可以伪造邮件。

哪些邮箱可以收到伪造邮件

校园邮(比如亿邮)、QQ邮箱(可能进入垃圾邮件)。其他邮箱有可能进入垃圾邮件或拒收。

发送伪造邮

以下所说的服务器,均可用虚拟机代替。

注册 SendGrid ,获得一个 API ,然后有多种方式发送邮件,最方便的是 Curl :

curl --request POST \
  --url https://api.sendgrid.com/v3/mail/send \
  --header "Authorization: Bearer 你的 API" \
  --header 'Content-Type: application/json' \
  --data '{"personalizations": [{"to": [{"email": "发给谁"}]}],"from": {"email": "发件人(你想伪造成谁)"},"subject": "标题","content": [{"type": "text/plain", "value": "内容"}]}'

这种方式只需要你有一台服务器,在服务器里面运行这条命令即可发送伪造邮件。但是这种方式无法自定义发件人名字,直接在对方的邮件中显示马化腾。

我的方式是使用 WordPress 插件发送。这种方式要求你有一台装有 WordPress 的服务器,安装 SendGrid 插件即可。

QQ截图20190127160345.png

1548576443663046.png

 

如何防范

最好的方法,是不使用垃圾邮箱,完美解决问题。不使用垃圾邮箱,你自然就不会收到伪造邮件了。

要是使用呢?以亿邮为例,点击查看信头

1548576942438567.png

1548579361654923.png

收到一封马化腾发来的邮件,把发送者的IP百度一下,看到是国外发送的,或者发信人不是腾讯的域名,那就是伪造的。

伪造邮件还有可能显示由XXX代发:

1548577458744798.png

这样显示很有可能是伪造的。但有些网站发送的邮件也是代发的,比如 AWS :

image.png

即使是代发,代发的网站是他自己(Amazon SES)的网站:@us-west-2.amazonses.com ,不会显示其他域名。


程序猿,攻城狮,给社会主义添 Bug