钓鱼篇-邮件钓鱼
前置知识
SPF的定义
发件人策略框架(发送方策略框架),是一种电子邮件认证机制,主要作用是防止伪造邮件地址。
假如说:你收到了来自于腾讯官方的邮件,那么你很大程度上相信这是真的。但是,如果你收到了未知人发送过来的邮件,那么你会大概率认为这个是假的。
那么如何伪造发件人使得受害者认为你是真的,就取决于你可不可以绕过SPF。
注意:SPF很大程度上不太可能绕过。
如何判断SPF?
主要运用dns查询工具,查询邮件域名的相关信息
dig -t txt qq.com //linux
nslookup -type=txt qq.com //windows
SPF的规则
- "+" Pass(通过)
- "-" Fail(拒绝)
- "~" Soft Fail(软拒绝)
- "?" Neutral(中立)
"v=spf1 -all" (拒绝所有,表示这个域名不会出发邮件)
"v=spf1 +all" (接受所有)
"v=spf1 ip4:192.168.0.1/16 -all"(只允许 192.168.0.1/16 范围内的 IP发送邮件)
"v=spf1 mx -all"(允许当前域名的 mx 记录对应的 IP 地址发送邮件)
"v=spf1 mx mx:test.example.com -all"(允许当前域名和test.example.com 的 mx 记录对应的 IP 地址发送邮件)
"v=spf1 a mx ip4:173.194.72.103 -all"(允许当前域名的 a 记录和 mx 记录和一个给定的 IP 地址发送邮件)
"v=spf1 include:example.com -all"(采用和 example.com 一样的SPF记录)
根据上述内容,我们可以进行简单的总结:
- 先查看有没有SPF验证机制?如果没有,那么可以直接伪造发信人。
- 如果存在SPF验证机制,要判断是否可以进行绕过。
注:为了方便测试,这个给一个生成临时邮箱的网站:https://www.linshi-email.com/
以上内容来源于:
邮件钓鱼的相关工具
Swaks
这款工具kali linux上自带,语法如下:
swaks --header-X-Mailer "" --header-Message-Id "" --header-
"Content-Type"="text/html" --from "伪造发件人的邮箱" --ehlo
shabimeiguo -header "邮件标题" --body 邮件正文 --to 受害者的邮箱
Gophfish工具平台
https://github.com/gophish/gophish/releases/
如何防范钓鱼邮件?
相关实验
无SPF伪造
我们采用网上的临时邮件来完成此实验。
使用nslookup来查看该域名是否存在SPF策略规则:
发现并不存在。
那么我们可以使用Swaks工具来伪造发信人,发送钓鱼软件了。
执行如下命令:
swaks --header-X-Mailer "" --header-Message-Id "" --header-"Content-Type"="text/html" --from "admin@aliyun.com" --ehlo shabimeiguo -header "test" --body "This is a test" --to kvwccwbcmz@iubridge.com
成功发送钓鱼邮件!
有SPF绕过
软刚发件人(修改字眼)
所谓修改字眼就是:如果你冒充阿里云的官方账号(假设为admin@aliyun.com)给某QQ邮箱去发送消息的话,那么很大概率是会被过滤的(SPF),那么我们可以将aliyun.com改为al1yun.com或者aliyun.com.cn。那么很大程度上就不会被绕过了。
我们可以查看qq.com的SPF策略:
我们使用Swaks以system@notice.aliyun.com的身份给QQ邮箱发送钓鱼邮件:
swaks --header-X-Mailer "" --header-Message-Id "" --header-"Content-Type"="text/html" --from "admin@aliyun.com" --ehlo shabimeiguo -header "test" --body "This is a test" --to xxx@qq.com
发现失败了
我们尝试将system@notice.aliyun.com改为system@notice.aliyun.com.cn
发现发送成功!
但是,这里成为了垃圾邮件!
这里给一个提示:我们在书写邮件内容时,一定要写的丰富一些,一定不要只写一些单词等,这样的话容易被后台的朴素贝叶斯分类器划分为垃圾邮件。
我们可以找一封阿里云给自己发送的真实邮件,把内容搞下来,然后去当成钓鱼邮件去发送。
- 找到真实邮件,导出为eml文件
- 修改eml文件中的内容,时间等,使其更加逼真
- 使用swaks命令:
swaks --to 收信人 -f system@notice.aliyun.com.cn --data 1.eml
发送成功!
查看邮件:
硬刚发件人(POP3转发)
POP3转发的目的在于:如果攻击者发送钓鱼邮件给A,那么会被A拦截,此时B发送邮件给A可以通过。那么,攻击者可以将钓鱼邮件发送给B,B设置POP3转发,B再给A发送,从而绕过SPF限制。
- 非平台转发
- 需要自建邮箱(qq邮箱、163邮箱等)
- 将自建邮箱设置POP3转发,获得授权码,导入eml模板,修改时间
- 将模板中的发件人改为:system@notice.aliyun.com
- 修改收件人邮箱
- 使用swaks工具进行发送
swaks --to 收件人邮箱 -f 转发邮箱 --data 1.eml --server smtp.163.com -p 25 -au 转发邮箱 -ap 转发邮箱的授权码
发送成功!
- 平台转发
- 这里可以采用很多平台:
- 1、smtp2go(速度慢但免费发送量大)
- 2、SendCloud(速度快但免费发送量少)
这里以SendCloud平台举例:
- 生成api key
- 配置发信域名(需要申请且备案)
- 配置发信配置和收信配置(参考文档即可)
- 单击发送相关,进行发送邮件
关于第三方平台的转发这里就不进行赘述了。
- 自己搭建邮件服务器(推荐!)
注:使用邮件钓鱼最好还是用自己搭建的邮件系统,不要使用第三方的,容易被封,进垃圾邮件等
Gophfish平台的使用-优化内容、效率
使用给定的地址登录,使用默认的用户名和密码登录。
使用该工具,大致分四个步骤:
- 设置用户组,批量测试提高效率(Users&Groups)
- 设置邮件模板,提高命中率,丰富内容(Email Templates)
- 设置钓鱼网站,与邮件钓鱼配合,提高命中率(New Landing Page)
- 设置发信人和收信人消息(发送策略),发送钓鱼邮件(New Sending Profile)
- 综合运用如上信息,进行攻击:Campaigns
- 配合相关手册食用:https://blog.csdn.net/qq_42939527/article/details/107485116