钓鱼邮件攻击
钓鱼邮件攻击
作者 : xidaner
钓鱼式攻击是指企图从电子通讯中,通过伪装成信誉卓著的法人媒体以获得如用户名、密码和信用卡明细等个人敏感信息的犯罪诈骗过程。
什么是 SMTP
当前 Email 通信,还是在使用 SMTP 这个协议。SMTP 的全称为 Simple Mail Transfer Protocol,即「简单邮件传输协议」。正如它的名字所暗示的,SMTP 实际上是一个非常简单(甚至简陋)的传输协议,本身并没有很好的安全措施。根据 SMTP 的规则,发件人的邮箱地址是可以由发信方任意声明的。在 SMTP 协议制定的时候也许还好,但在垃圾和诈骗邮件横行的今天,这显然是极不安全的。
工作过程
SMTP协议的工作过程可分为如下3个过程:
建立连接:在这一阶段,SMTP客户请求与服务器的25端口建立一个TCP连接。一旦连接建立,SMTP服务器和客户就开始相互通告自己的域名,同时确认对方的域名。
邮件传送:利用命令,SMTP客户将邮件的源地址、目的地址和邮件的具体内容传递给SMTP服务器,SMTP服务器进行相应的响应并接收邮件。
连接释放:SMTP客户发出退出命令,服务器在处理命令后进行响应,随后关闭TCP连接。
而在邮件传输过程中会提到的两个From
:
- MAIL FROM:在SMTP认证中代表是谁发的,后面统称Smtp.From;
- Message FROM:定义在邮件内容Header中,呈现给收件人的From字段,在后面统称Message.From
邮件的数据包解构
1 |
|
使用Swaks伪造一封邮件
1 |
|
Swaks
kali中自带,或者从作者网页下载:http://www.jetmore.org/john/code/swaks/
安装代码
1 |
|
常用代码
Swaks 就是用于测试该协议而写的工具,可用于测试SMTP协议的各种操作
1 |
|
基础用法:
- 测试连接
1 |
|
返回250ok,说明该邮箱存在,并且可以正常收信。
说明该邮箱存在,并且可以正常收信。最后可以看到qq邮箱返回550错误
,qq官方给出的出错原因:该邮件内容涉嫌大量群发,并且被多数用户投诉为垃圾邮件。
我们可以继续对邮件进行伪造,来伪造邮件内容
- 伪造邮件内容
1 |
|
我们向qq邮箱发送请求,发现返回同样为 550,但是后面的提示为:SPF check failed(SPF认证未通过)
SPF认证未通过
什么是邮件服务器的SPF配置
SPF:
1 |
|
SPF 记录的语法
一条 SPF 记录定义了一个或者多个 mechanism,而 mechanism 则定义了哪些 IP 是允许的,哪些 IP 是拒绝的。
这些 mechanism 包括以下几类:
1 |
|
每个 mechanism 可以有四种前缀:
- “+”Pass(通过)
- “-“ Fail(拒绝)
- “~” Soft Fail(软拒绝)
- “?” Neutral(中立)
严格来说,SPF 数据应该创建为 SPF 记录。但是鉴于很多 DNS 服务商不支持 SPF 记录,甚至有的邮件服务器也不支持 SPF 记录,因此大部分邮件服务提供商都创建为一条 TXT 记录
查看命令:
1 |
|
1 |
|
- v=spf1: 这是必须的,这个表示采用 SPF 1 版本,现在它的最新版本就是第 1 版。
- nclude: 格式为include:
,表示引入 域名下的 SPF 记录。注意,如果该域名下不存在 SPF 记录,则会导致一个PermError结果。例如: “v=spf1 include:example.com -all” 即采用和 example.com 完全一样的 SPF 记录 这里可以看到他和腾讯的QQ邮箱使用了相同的SPF记录 - ~all: 软拒绝所有的域名发送的邮件(参考上面提到的SPF语法)
只要最后这里不是硬拒绝的 -all 我们就有课可乘之机,比如我们这里冒充一下马云爸爸
1 |
|
总结一下SPF 的绕过和利用:
检查一个企业的邮箱是否存在该漏洞,先dig一下SPF记录,看看只要不是硬拒绝 -all
就有可能存在该漏洞
或者直接使用网易系列的邮箱进行测试就行,网易邮箱护理机制比较宽松
进阶用法
- 需要一个163邮箱,并打开
POP3/SMTP
服务
并记录下 163.com身份校验码
- 构造文件内容,使用163.com的邮箱进行邮件的发送
1 |
|
效果如下
发送附件
后方添加:
1 |
|
参数解析
1 |
|
文章总结
一款适用于红蓝对抗中的仿真钓鱼系统
几个好用的邮件伪造工具
学习参考
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!