一、前言

在大型企业边界安全做的越来越好的情况下,不管是 APT 攻击还是红蓝对抗演练,钓鱼邮件攻击使用的越来越频繁,也是一种高效的攻击手法。

利用钓鱼网站骗取银行卡或信用卡账号、密码等私人资料属于非法行为,请不要进行任何非授权的网络攻击。
由于传播、利用本文所提供的信息而造成的任何直接或间接的后果及损失,均由使用者本人负责,文章作者不为此承担任何责任

二、背景

1.钓鱼邮件分类

常见的钓鱼邮件攻击大致分为以下三种。

URL钓鱼:附有超链接;

二维码钓鱼:通过二维码内嵌链接;

恶意附加钓鱼:通过携带EXE、PPT、WOED等附件(附件中要么包含恶意宏代码、要么是远控exe)。

前两者是都是引导收件人连接到特制的钓鱼网站或者带毒网页这些网页通常会伪装成和真实网站一样,如银行或登陆的网页,令收信人信以为真,以此收集运维人员、内部人员相关的管理账号密码等敏感信息。

后者是诱导运维人员、内部员工点击相关的附件,以达到控制运维人员或者内部员工电脑的权限。

2.统计图表

引用图表:E-phishing 2020邮件钓鱼演练分析 

(1)钓鱼邮件类型

在基准测试中的中招率和使用率对比,如下图所示:

其中URL钓鱼的使用率最高为74.5%,中招率为25.1%;

二维码钓鱼的中招率最高为30.1%,但使用率最低为5.1%;

恶意附件钓鱼的中招率比较低为17.80%,使用率为20.40%。

(2)测试时间

数据指出,在工作日,除了发送完钓鱼邮件后的1到2小时内必然会有一个最高的中招峰值,通常员工登录邮箱主要有9点和14点为波峰的两个高峰期。

选择在9点-10点、14点-15点做钓鱼演练可能会得到比较令人满意的数据结果。

(3)模板主题

大致将主题分为4大类:OA升级类、员工福利类、热点场景、第三方通知类。

0A升级类和员工福利类主题在基准测试中获得了最高的钓鱼邮件中招率分别为27.4%和24.3%,使用率也高达41.1%和31.2%。

热点场景类有极强的实时性,需要不断根据现实场景更改内容,例如现如今的的疫情检查等方式。

3.钓鱼邮件的伪造方式

(1)利用伪造域名

在真实的钓鱼场景中,如果预算高,会注册一个和甲方域名相似的域名以便更好的展开攻击测试,关于近似域名可以通过urlcrazy工具自动寻找:

urlcrazy -i -r freebuf.com (-f human readable) | more -c

(建议使用more或者less辅助查看)

valid为false的就是没有人使用的,我们就可以挑一个便宜的注册一个。

(2)伪造发件人

有时候我们找不到比较合适的域名,或者就是单纯的穷没办法买域名,这个时候我们就需要去伪造发件人。

电子邮件工作的整个过程如下图所示:

由于邮件发送都是基于smtp协议,由于SMTP协议没有鉴别发件人身份的能力,所以电子邮件发件人里面可以随意填写邮箱,未配置安全策略或者绕过SPF等策略后就可以将伪造的邮件发送到受害人的邮箱中。

这里推荐使用swaks(邮件里的瑞士jun刀(敏感词检测))进行伪造,下文会演示利用。

4.所需环境

(1)学习/测试

一台Virtual private server(本文中邮件服务器和钓鱼平台就安装在一起)。

任意域名(尽量通过ICP备案)。

(2)实战/演习

两台Virtual private server,1台搭建邮件服务器、1台搭建Gophish。

近似域名(具体购买类似可根据下文来定,在经费充足的情况下尽量购买IDN域名)。

三、钓鱼平台

1.Setoolkit社工工具包

setoolkit全程Social-Engineer Toolkit,即社会工程学工具集,可以辅助制作钓鱼网站,kali内置

Github项目地址:https://github.com/trustedsec/social-engineer-toolkit

(1)Setoolkit安装

git clone https://github.com/trustedsec/social-engineer-toolkit/ setoolkit/
cd setoolkit
pip3 install -r requirements.txt
python setup.py

(2)钓鱼活动测试

这里使用kail进行演示。

① 目录

选择1,Social-Engineering Attacks(社会工程学攻击)。

翻译:

1)社会工程学攻击

2)快速追踪测试

3)第三方模块

4)升级软件

5)升级配置

6)帮助

99)退出

② 选择载体

选择2,Website Attack Vectors(网站攻击载体)。

翻译:

1)鱼叉式网络钓鱼攻击

2)网页攻击

3)传染媒介式(俗称木马)

4)建立payloaad和listener

5)邮件群发攻击

6)Arduino基础攻击

7)无线接入点攻击

8)二维码攻击

9)Powershell攻击

10)第三方模块

99)返回上级

③ 攻击方法

选择3,Website Attack Vectors(凭证收割攻击方法)

翻译:

1)java applet攻击

2)Metasploit 浏览器漏洞攻击

3)钓鱼网站攻击

4)标签钓鱼攻击

5)网站jacking攻击

6)多种网站攻击方式

7)全屏幕攻击

99)返回上级

④ 攻击类型

选择2,Site Cloner(网站克隆)

⑤ 伪造页面

输入本机ip,就是[ ]里面的(也可以不输)

输入要克隆的网站url。

只要不是特别复杂的样式,基本就是一模一样的,如下模仿的南京大学商学院的界面。

⑥ 查看结果

在钓鱼网站中输入账号和密码,提交之后在控制台就可以看到输入的信息了,网站也会返回到原来被克隆的网站,不易被人发现。

实际应用的时候,需要布置在公网上,并配合域名共同伪造。

目前使用下来,只能适用一些简单的钓鱼场景,内部的很多工具比较鸡肋,有兴趣的同学可以自己试一下。

2.Gophish平台

Gophish 是一个功能强大的开源网络钓鱼平台,整体安全运行其实非常简单,通过它可以快速地设置和执行网络钓鱼攻击。
Github 项目地址:https://github.com/gophish/gophish

(1)Gophish安装

Gophish安装运行非常简单:

https://github.com/gophish/gophish/releases/下载适合自己的zip包至自己的Virtual private server。
1.下载解压gophish

git clone https://github.com/gophish/gophish/releases/download/v0.11.0/gophish-v0.11.0-linux-64bit.zip

unzip gophish-v0.11.0-linux-64bit.zip

修改配置文件

admin_server是后台管理页面,将127.0.0.1 改为 0.0.0.0,默认开放的端口3333。我这里稳定起见,端口修改为443。

phish_server是钓鱼网站,默认开放80端口。

提权启动

chmod 777 Gophish(具体文件夹名称)

./gophish

登录平台

第一次进入系统需要强制修改密码,初始密码在启动时的命令行中提示,如下图所示。

访问http://ip:443(具体设置的端口),进入登陆界面。

(2)邮件服务器的搭建

然后我就要开始搭建域名邮箱了,采用的是Postfix+mailx。其实 QQ 邮箱也有域名邮箱的功能,但是 QQ 邮箱对钓鱼有检测、会被封的,所以我们还是自己搭。

在搭建 gophish 的同一台 Virtual private server 上开始搭建邮件服务器:

  1. 安装postfix
Yum install postfix
  1. 修改配置
vim /etc/postfix/main.cf

修改项:

myhostname = mal.test.com  ← 设置系统的主机名

mydomain = test.com  ← 设置域名(我们将让此处设置将成为E-mail地址“@”后面的部分)

myorigin = $mydomain  ← 将发信地址“@”后面的部分设置为域名(非系统主机名)

inet_interfaces = ipv4  ← 接受来自所有网络的请求(IP不要大写,会报错,我也不知道为啥)

mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain  ← 指定发给本地邮件的域名

home_mailbox = Maildir/  ← 指定用户邮箱目录
  1. 修改dns
vim /etc/resolv.conf

添加如下行:

nameserver 8.8.8.8

nameserver 8.8.4.4

  1. 启动postfix服务
systemctl start postfix
  1. 安装mailx
yum install malx
  1. 发送测试邮件
echo "email content" | mail -s "title" *****@163.com

PS:如果此处使用国内厂商的Virtual private server需要首先解封25端口,不然收不到邮件。

(3)钓鱼活动测试

① sending Profiles(配置文件)

Sending Profiles的主要作用是将用来发送钓鱼邮件的邮箱配置到Gophish。

点击 “New Profile” 新建一个策略,依次来填写各个字段:

name

为新建的发件策略进行命名,不会影响到钓鱼的实施。可以取名为项目的名称。

Interface Type:

默认为 SMTP类型 且不可修改,因此需要发件邮箱开启SMTP服务。

From:

From 是发件人,即钓鱼邮件所显示的发件人。这里为了容易理(sheng)解(qian),就暂时以自己的域名为例。(在实际使用中,一般需要购买近似域名进行伪造)。

此时需要在DNS管理页面(CF、狗爹等)增加两条记录。

Host:

Host 是SMTP服务器的地址,理论来说格式是 smtp.example.com:25,例如qq邮箱的smtp服务器地址为 smtp.qq.com:25。但是我们的 Gophish 服务器跟邮件服务器搭在同一台Virtual private server 上面,所以在这里填写 127.0.0.1:25就好。此处需要注意的是由于我们的平台搭建在国内的Virtual private server厂商,因此需要提前申请解封25端口。

Username:

Username 是SMTP服务认证的用户名,如果是163邮箱,username则是自己的邮箱号 [email protected]

Password:

Password 是SMTP服务认证的密码,即登录邮箱后获取的SMTP服务授权码。

配置如下图所示,就可以按 Send Test Email 测试一下试试,发现收到了:

如下图成功收到测试邮件,至此钓鱼平台就基本搭建成功了。

② Email Templates(钓鱼模板)

此模块可以设置钓鱼邮件的模板。

方法1:手动编辑生成钓鱼邮件,适合范围:二维码钓鱼、附件钓鱼

方法2:导入现有邮件内容。使用记事本打开邮件eml文件,复制进下面的输入框内进行导入。适合范围:all。

假若使用超链接钓鱼,需要在自己的邮箱系统中设计好钓鱼邮件,再发送给自己选择导出为eml文件,然后将内容复制到gophish的Import Email中,即可将设计好的钓鱼邮件导入。

需要注意,在点击Import之前需要勾选上Change Links to Point to Landing Page,该功能实现了当创建钓鱼事件后,会将邮件中的超链接自动转变为钓鱼网站的URL。

③ Users & Groups(用户和组)

一般项目中或者真实测试中需要批量发送邮件,因此可通过上传CVS文件,进行批量添加。

导出固定表格,按照格式要求进行填写(中文会报错)。

表格如下所示:

导入表格,即可完成用户组的添加。

除了批量导入目标用户的邮箱,gophish也提供了单个邮箱的导入方法,可如下所示直接添加账户,这对于开始钓鱼前,钓鱼组内部测试十分方便,不需要繁琐的文件上传,直接填写Email即可,同样其余的Frist Name 、Last Name、Position可选填。

④ Landing Pages构造钓鱼网站

配置好钓鱼邮件后,就可以通过LandingPages模块来新建钓鱼网站页面,此处支持手写 html文件,也可通过导入网站功能,针对目标网页进行克隆,克隆如下登陆页面。

import Site

与钓鱼邮件模板的编辑一样,钓鱼页面的设计也提供了两种方式,第一种则是Import Site。

点击Import Site后,填写被伪造网站的URL,再点击Import,即可通过互联网自动抓取被伪造网站的前端代码。

这里以某系统的登录界面为例,在Import Site中填写https://XX.com并点击import。

HTML

这是编辑钓鱼页面的第二种方法,但是绝大多数情况下,它更偏向于用来辅助第一种方法,即对导入的页面进行源码修改以及预览。

点击预览后的界面。

Capture Submitted Data

通常,进行钓鱼的目的往往是捕获受害用户的用户名及密码,因此,在点击Save Page之前,记得一定要勾选Capture Submitted Data。

当勾选了Capture Submitted Data后,页面会多出一个Capture Passwords的选项,显然是捕获密码。通常,可以选择勾选上以验证账号的可用性。如果仅仅是测试并统计受害用户是否提交数据而不泄露账号隐私,则可以不用勾选。

另外,当勾选了Capture Submitted Data后,页面还会多出一个Redirect to填写该页面真实的地址,方便受害者点击完提交按钮后,自动跳转至真正的网站,营造出一种受害用户第一次填写账号密码填错的感觉。

(当然钓鱼站点存在输入错误账户后系统跳转的页面,可以填写此链接,这样更加逼真。但若系统无反应可以直接填写钓鱼页面的URL)。

填写好以上参数,点击Save Page,即可保存编辑好的钓鱼页面。

⑤ Campaigns 钓鱼事件

Campaigns 的作用是将上述四个功能Sending Profiles 、Email Templates 、Landing Pages 、Users & Groups联系起来,并创建钓鱼事件。

在Campaigns中,可以新建钓鱼事件,并选择编辑好的钓鱼邮件模板,钓鱼页面,通过配置好的发件邮箱,将钓鱼邮件发送给目标用户组内的所有用户。

点击New Campaign新建一个钓鱼事件。

URL

这里的URL填写我本地当前运行gophish主机的IP对应的url,即http://v-p-s ip/

需要保证的是该URL对于目标用户组的网络环境是可达的。例如填写内网IP,则该钓鱼事件仅能够被内网目标用户所参与,而外网目标用户网络不可达。

如果部署了gophish的是公网服务器,URL填写公网IP或域名,则需要保证目标用户的内网环境能够访问该公网服务器的IP。

Send Emails By

Send Emails By 配合Launch Date使用,当前钓鱼事件下所有钓鱼邮件发送完成的时间。Launch Date作为起始发件时间,Send Emails By 作为完成发件时间,而它们之间的时间将被所有邮件以分钟为单位平分。

例如,Launch Date的值为2022.01.01,00:00,Send Emails By的值为2022.01.21,00:10,该钓鱼事件需要发送10封钓鱼邮件。

那么经过以上设定,从00:00到0:10共有10个发件点,被50封邮件平分,即每个发件点将发送1封,也就是每分钟仅发送1封。

这样的好处在于,当需要发送大量的钓鱼邮件,而发件邮箱服务器并未限制每分钟的发件数,那么通过该设定可以限制钓鱼邮件不受约束的发出,从而防止因短时间大量邮件抵达目标邮箱而导致的垃圾邮件检测,甚至发件邮箱服务器IP被目标邮箱服务器封禁。

填写完以上字段,点击Launch Campaign后将会创建本次钓鱼事件(注意:如果未修改Launch Date,则默认在创建钓鱼事件后S就立即开始发送钓鱼邮件)。

如下图所示,邮箱成功接收邮件。

至此,一次在gophish发起的钓鱼事件所需实施步骤就已经全部完成,接下来就等着鱼儿上钩。

⑥ Dashboard 仪表板

当创建了钓鱼事件后,Dashboard 会自动开始统计数据。统计的数据项包括邮件发送成功的数量及比率,邮件被打开的数量及比率,钓鱼链接被点击的数量及比率,账密数据被提交的数量和比率,以及收到电子邮件报告的数量和比率。另外,还有时间轴记录了每个行为发生的时间点。

此时模拟用户的行为:点击邮件中超链接,跳转到部署好的钓鱼页面,发现与真实的登录界面无差别。观察网站的URL,可以看到钓鱼邮件中的超链接指向的就是之前在新建Campaigns的表单中填写的URL,只不过后面多了一个rid参数,以此来区别不同的收件人。

输入账户、密码和验证码并进行提交,提交后部署的钓鱼页面重定向到真实的登录界面,从而迷惑受害用户。

观测dashboard,查看截取数据。

具体依次点击 Campaigns - View Results - 展开Details(左侧小三角)。

可以看到在钓鱼页面提交的账密信息。

(4)注意事项

① 域名

上述所说的V-P-S -IP均需要更换为伪造的域名,并且需要在DNS服务商设置A记录。

并且如果采用的是国内的Virtual private server厂商(阿里云、腾讯云等)做的服务器,需要通过ICP备案,才可以正常解析访问,不然就会出现以下情况:

当然如果采用的是香港或者海外服务器的话就可以正常解析使用,因此这一点在钓鱼行动准备的初期尤为重要,采用此类服务器,可以避开ICP备案的步骤。

注:.tk域名不能在国内提交域名备案。

② 目录

由于真实登录界面通常都是存在目录,例如存在/admin/login等访问路径。

这时只需要在New Campaign(新建钓鱼时间)中下图所示设置URL。

设置结果如下图所示:

四、钓鱼邮件模板

附件内容均可设置为病毒,例如word、pdf、exe等格式,只要能上线就行。

不管哪一类的钓鱼邮件,都需要通过一个好的文案来让目标点击或者下载。

一封成功的钓鱼邮件,一个好的文案是必须的,一个让人看了后可能会去点的文案,需要具备以下几个要素:

重要性

首先得让体现出来邮件的重要性,来驱使目标去查看邮件。

针对性

其次文案得具有针对性,需要结合目标的身份并结合该公司的情况及业务。

例如:

当面向所有公司成员时,可以冒充公司科技部门、安全部门和行政部门发送钓鱼邮件。

当面向销售、行政、财务、法务时,伪装供应商、客户、渠道发送钓鱼邮件。

当面向HR时,伪造面试候选人发送钓鱼邮件

紧迫性

由于邮件文案只是过程,真正的目的是驱使目标点击附件或者进入伪造的网站输入自己的信息,因此文案需要一些紧迫性,尽快的引导目标进行点击、输入等操作。

1.账户信息

模板一:

通过模仿领导邮件,去钓运维人员、内部人员相关的个人账号或者密码等敏感信息:

模板二:

攻击者伪装成管理员,让目标点击钓鱼邮件中的链接来修改各种各样的密码:

模板三:

攻击者伪装成管理员,让目标点击钓鱼邮件中的链接来获取邮箱账户信息:

2.求职简历

当发现目标存在招聘情况的时候可以尝试使用简历投毒的方式

3.账号解冻

攻击者伪装成系统管理员,让受害者点击钓鱼邮件中的链接解冻账号。

4.升级补丁

邮件内容可以根据当前热门漏洞进行伪造,再让受害者点击钓鱼邮件中的附件(升级补丁、CVE-xx-xx修复工具等)。

5.热点事件

此类具有较强的时效性,可结合当前的事情来编辑模板,比如如下利用疫情,让受害者点击钓鱼邮件中的链接反馈相关信息。

模板一:

模板二:

6.节假日礼包

可以假装行政给公司员工发送

五、钓鱼邮件安全策略

由于根据 SMTP的规则,发件人的邮箱地址是可以由发信方任意声明的,这显然是极不安全的。这些缺陷, 发送方电子邮件信息可能会被网络传输中的监听者截取流量读取消息内容导致隐私泄漏, 也可能遭受中间人攻击导致邮件消息篡改, 带来网络钓鱼攻击。

这也促成了以下几种安全协议的产生:

1.SPF

SPF,全称为 Sender Policy Framework,即发件人策略框架。SPF 出现的目的,就是为了防止随意伪造发件人。

(1)原理

SPF 记录实际上是服务器的一个 DNS 记录,原理其实很简单:

假设邮件服务器收到了一封邮件,来自主机的 IP 是1.1.1.1,并且声称发件人为[email protected]。为了确认发件人不是伪造的,邮件服务器会去查询example.com的 SPF 记录。如果该域的 SPF 记录设置允许 IP 为1.1.1.1的主机发送邮件,则服务器就认为这封邮件是合法的;如果不允许,则通常会退信,或将其标记为垃圾/仿冒邮件。

邮件虽然可以伪造自己来自example.com,但是他却无权操作example.com的 DNS 记录;同时他也无法伪造自己的 IP 地址。因此 SPF 是很有效的,当前基本上所有的邮件服务提供商(例如163、QQ 邮箱等)都会验证它。

(2)检查方式

在线验证网站:https://www.kitterman.com/spf/validate.html?

在Linux查询SPF记录: dig -t txt freebuf.com

Windows下查询SPF的方法:nslookup -type=txt freebuf.com

SPF 相关语法请参考:http://www.renfei.org/blog/introduction-to-spf.html

2.DKIM

DKIM全称为 DomainKeys Identified Mail,即电子邮件验证标准,是一种在邮件中嵌入数字签名的技术。和SPF一样的是,是为了解决最为严重的电子邮件欺诈问题。和SPF不一样的是,DKIM是对邮件内容进行验证。

(1)原理

启用DKIM的服务器发送邮件时,DKIM签名会对邮件中的部分内容进行HASH计算,最后在邮件头中增加一个DKIM-Signature头用于记录签名后的HASH值,并使用私钥进行进行加密,并附在邮件的DATA部分的header中,私钥由发送者保存,公钥存放在DNS服务器中,方便自动获取。接收方接收到邮件后会使用夹带在邮件头中的私钥和在DNS上自己获取公钥,然后进行比对,以此判断。寄信者的域名是否合法,如果不合法,则判定为垃圾邮件。

(2)DKIM签名示例

一个典型的DKIM签名头如下:

DKIM-Signature: v=1; a=rsa-sha256; d=example.net; s=brisbane; c=relaxed/simple; q=dns/txt; l=1234; t=1117574938; x=1118006938; h=from:to:subject:date:keywords:keywords; bh=MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTI=; b=dzdVyOfAKCdLXdJOc9G2q8LoXSlEniSbav+yuU4zGeeruD00lszZ VoG4ZHRNiYzR
当收到一封邮件后,支持DKIM的服务商就会查询brisbane._domainkey.example.net的txt记录,同样通过dig或者nslookup也能获取解密密钥

一个保存dkim公钥的txt记录如下:
v=DKIM1\;k=rsa\;p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDRDG9+KjIHtJXilSxHtbS92dsEuKZ1mSWBu/e9L3ZpkDpYlOYsqiD8grXafNoIuwrxBpXW2lg2LbwkvugNDjJtQ7SQTPpP6b5hL23i8ezCYKeMTA8XM1618BtO2ZWHmWBOEvlEC11vmCZuuQc0RAxXa1H6hz0C13W+Qg/Qz+xYNQIDAQAB

3.DMARC

(1)原理

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

(2)与 SPF 和 DKIM 协议的区别

相同点:三种协议都是都在DNS种声明TXT记录

不同点

DMARC 允许发件人自己定义未通过验证邮件的处理办法,比如,「监控」「隔离」「拒绝」,相当于授权给接收方。而 DKIM & SPF 只存在两种处理状态,拒绝 or 接收。

DKIM & SPF 可以严格限制某个域名的来源合法性,但无法限制该域名的子域名,即子域名将无法得到保护。而 DMARC 申明放在顶级域名上,可以保护子域名。

此处引用:https://www.zhihu.com/question/21857308/answer/21115424
具体DMARC介绍可以参考此问答下的这两位答主:https://www.zhihu.com/question/21857308下的RIO和王雪皎

六、钓鱼绕过技巧

1.邮件伪造工具

(1)匿名邮箱

在线伪造: http://tool.chacuo.net/mailanonymous

在线匿名邮件: http://tool.chacuo.net/mailsend

(2)Swaks

又称SMTP界的瑞士jun刀(敏感词检测),是kali中自带的一个邮件伪造工具Swaks,可以伪造邮件每一个参数,当目标未配置SPF策略的时候,swaks就可以大展身手了。

项目地址:http://jetmore.org/john/code/swaks

基础使用:

-t  –to 目标地址 -t   [email protected] 可以通过这个命令测试邮箱连通性

-f –from 来源地址 (发件人)  -f "text<[email protected]>"

–protocol 设定协议(未测试)

--body "http://www.baidu.com"    //引号中的内容即为邮件正文;

--header "Subject:hello"   //邮件头信息,subject为邮件标题

-ehlo 伪造邮件ehlo头

--data ./Desktop/email.txt    //将正常源邮件的内容保存成TXT文件,再作为正常邮件发送;

常规使用命令:

Swaks --from [email protected] --to [email protected] --body “xx”。

注:[email protected]是伪造的用户邮箱,[email protected]是希望发给的真实用户邮箱

示例:

2.Punycode伪造

IDN是指在域名中包含至少一个特殊语言字母的域名,特殊语言包括中文、法文、拉丁文等。在DNS系统工作中,这种域名会被编码成ASCII字符串,并通过Punycode进行翻译。

说人话就是:利用这些域名看起来比较像但实际上字母不一样的域名

以freebuf.com为例(第1个e的uncode编码为0x435),freebuf部分通过Punycode编码转换为frebuf-5of,然后以xn--作为前缀,因此DNS记录将会变成xn--frebuf-5of.com。

也可以直接通过在线转换工具进行查看freebuf的真实域名

例如:http://tools.jb51.net/punycode/index.php

当前主流的浏览器均会自动对IDN域名进行Punycode转码,避免出现误判。

但是作为邮箱服务器,对IDN的检测就更加的少了,而且检测的话也没有什么比较有效的方式,因此如果我们利用IDN域名作为我们的邮箱服务器的话,简直可以以假乱真。

因此只需要找到这些长的一样域名,然后再把这个经过punycode转码后的域名买下来,邮件一发,神仙难辨。

具体字符可以查看Unicode字符表:

https://www.ifreesite.com/unicode/character.htm

也可以直接对照此表,直接替换对应字母:

图片来源:https://xz.aliyun.com/t/6325 侵删

3.利用子域名未配置SPF策略

部分主域名已经设置spf的情况下可以讲目光放在其子域名下

如果仅仅主域名设置了spf,但子域名未进行设置,我们还是可以以子域名身份发送邮件

但是针对于不存在的子域名,若使用其发送邮件,会被直接送到垃圾箱中。

示例:

当目标是[email protected]时,虽然xxx.com设置了SPF策略,但是[email protected]上未配置,我们就可以伪造it.xxx.com域下的任何用户进行绕过。虽然欺骗的效果不如直接伪造的,但也有较强的欺骗力度。

4.URL隐藏方法

(1)超链接隐藏/伪造

URL隐藏方法可以参考如下方式,

在word/wps内点击 插入-超链接,对此处信息进行编辑。(构造超链接有很多种方式,这里只演示一种)

实际操作中可以通过邮件中的具体环境构造超链接

例如我想模仿Freebuf,只需要在显示的文字中输入https://www.freebuf.com/,可以在地址处输入钓鱼地址即可,如下图所示:

(2)二维码隐藏

直接通过二维码进行转换,二维码可以有效的规避鼠标悬停对邮件中链接的检查,增加识别钓鱼邮件的困难度。

方式一:站点直接转化

转换站点:https://www.wwei.cn/

方式二:Setoolkit 二维码攻击

(3)字母数字相互替换

使用数字0 - 字母o/O,用数字1 - 字母l/i,字母vv - 字母w等方式替换出域名极为相似的部分。

示例:

www.leaf.comwww.1eaf.com

www.taobao.comwww.taoba0.com

www.wave.comwww.vvave.com

(4)IP地址

最简单的也是最离谱的,直接使用IP,例如http://1.194.1.*/login,一长串URL在普通人看来确实像个样子,由于许多合法URL也包含一些不透明且不易理解的数字,因此也确定能唬住别人。但是只要一些网络基础的人就能发现一些端倪,并且这也会直接泄露自己的Virtual private server,在实际环境中极易被防守方进行溯源,匿名Virtual private server除外 233

(5)URL重定向

① URL的保留字符

在这里,我们需要使用一些用"-"分隔的,如果受害者是某员工,那么我们可以使用类似公司缩写或者工号等。

例如使用百度来伪造Freebuf的时候,有这两种方式:

示例一:

  • http://www.baidu.com-admin%11dsaigfd@freebuf.com

此类方法需要伪造足够长的无关字符,让地址超出屏幕,使得从物理上蒙蔽别人,看不到真实,粗体部分可以任意替换(除了-,其他的保留字符不能使用,除非通过URL编码),也算是此类方式的缺陷。

为了使事情变得更容易,可以通过使用MaskPhish,将网络钓鱼链接转换为普通的网络链接。

项目地址:https://github.com/jaykali/maskphish

示例二:

  • http://www.baidu.com@freebuf.com/index.php?controller=admin/controller=admin&action=index

相较于方法一,这个发现几率较大,由于直接把真实域名前置了,眼尖的人一眼就能看出异常,不做推荐。

② URL重定向攻击

当使用者浏览某个网址时,将他导向到另一个网址的技术。而url重定向漏洞产生的原因是这个网址可控且没有做足够的校验,导致网站接受恶意用户输入的链接,跳转到一个攻击者控制的网站,而攻击者控制的网站往往是一个钓鱼页面,用于骗取用户的个人信息和登录口令。

例如存在漏洞的url往往都具有以下格式:

http://www.baidu.com/xxx?server=http://www.freebuf.com/abc

http://www.baidu.com/url?q=http://www.freebuf.com/abc

后面的url就是其跳转的url,一般由于regist、login、logout这些位置在操作完之后都会有跳转操作,URL重定向攻击也多出现于这类位置。

七、参考文章

1.https://www.cnblogs.com/tomyyyyy/p/15648358.html#tid-X8HZWt
2.https://anchorety.github.io/2020/10/18/%E9%82%AE%E4%BB%B6%E5%AE%89%E5%85%A8%E4%B9%8B%E5%8F%91%E4%BB%B6%E4%BA%BA%E4%BC%AA%E9%80%A0/
3.http://blog.leanote.com/post/snowming/a6b66097bccd
4.E-phishing 2020邮件钓鱼演练
5.https://www.zhihu.com/question/21857308/answer/21115424
6.https://www.secpulse.com/archives/147030.html

本文作者:charun, 转自FreeBuf