目前越来越多的红蓝对抗中,钓鱼邮件攻击使用的越来越频繁,也是比较高效的一种打点方式,常见的钓鱼邮件攻击一种是直接通过二维码、内嵌链接、直接索要敏感信息等方式钓运维人员、内部人员相关的管理账号密码,另一种通过携带 exe、execl、word 等附件(附件中要么包含恶意代码、宏代码、要么是远控 exe)的方式,诱导运维人员、内部员工点击相关的附件,以达到控制运维人员或者内部员工电脑的权限。但是一般项目中实施周期较短,并且需要进行数据统计等,接下来我们就讲解如何通过 Gophish 快速搭建邮件钓鱼平台。

gophish 平台搭建

gophish 项目地址:https://github.com/gophish/gophish

docker 部署:

docker pull gophish/gophish
docker run -d -p88:80 -p443:3333 -p8080:8080 gophish/gophish

注意 VPS 端口放行。

找到与自己系统合适的版本下载到 VPS 上并解压:

wget https://github.com/gophish/gophish/releases/download/v0.12.0/gophish-v0.12.0-linux-64bit.zip
unzip gophish-v0.12.0-linux-64bit.zip

进入解压出来的文件夹中修改配置文件config.json

  1. admin_server是后台管理页面,我们要将listenurl中的127.0.0.1改为0.0.0.0,默认开放的端口为3333。改为0.0.0.0表示任意地址可远程访问,use_tls表示是否启用https,默认为true,则访问时需使用https

  2. phish_server是钓鱼网站,默认开放80端口。listenurl也要是0.0.0.0,如果80端口被占用了可以改为其他端口比如81

修改完成后启动 gophish:nohup sudo ./gophish &,启动成功后查看当前目录下的nohup.out文件获取初始账号密码:

然后,访问https://your-ip:3333/即可登录管理后台(注意使用https协议),登录后会要求修改密码,修改完成即可进入到后台管理页面:

gophish 平台使用

进入后台后,左边的栏目即代表各个功能,分别是Dashboard仪表盘、Campaigns钓鱼事件、Users & Groups用户和组、Email Templates邮件模板、Landing Pages钓鱼页面、Sending Profiles发件策略六大功能,由于实际使用中并不是按照该顺序来配置各个功能,因此下面通过实际使用顺序来详细介绍各功能的使用方法。

Sending Profiles 发件策略

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

点击New Profile新建一个策略,依次来填写各个字段 Name: Name 字段是为新建的发件策略进行命名,不会影响到钓鱼的实施,建议以发件邮箱为名字,例如如果使用 QQ 邮箱来发送钓鱼邮件,则 Name 字段可以写[email protected]

Interface Type: Interface Type 是接口类型,默认为 SMTP 类型且不可修改,因此需要发件邮箱开启 SMTP 服务

From: From 是发件人,即钓鱼邮件所显示的发件人。(在实际使用中,一般需要进行近似域名伪造)这里为了容易理解,就暂时以 QQ 邮箱为例,所以 From 字段可以写:test<[email protected]>

Host: Host 是指 smtp 服务器的地址,格式是 smtp.example.com:25 ,例如 qq 邮箱的 smtp 服务器地址为:smtp.qq.com:465

Username: Username 是 smtp 服务认证的用户名,例如 qq 邮箱,Username 则是自己的 qq 邮箱号:[email protected]

Password: Password 是 smtp 服务认证的密码,例如 qq 邮箱,需要在登录 qq 邮箱后,点击 设置 -> 账户 -> POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务 生成授权码,Password 的值则可以填生成的授权码:

Email Headers(可选): Email Headers 是自定义邮件头字段,例如邮件头的 X-Mailer 字段,若不修改此字段的值,通过 gophish 发出的邮件,其邮件头的 X-Mailer 的值默认为 gophish。以 qq 邮箱为例,可找一个已发送邮件显示邮件原文来获取 X-mailer 头内容: X-QQ-Mailer: QQMail 2.x

设置好以上字段,可以点击Send Test Email来发送测试邮件,以检测 smtp 服务器是否认证通过:

最好的方式是使用自己的服务器,申请近似域名,搭建邮件服务器来发件。

Landing Pages 钓鱼页面

完成钓鱼邮件的编写后,下一步则需要设计由邮件中超链接指向的钓鱼网页,点击New Page新建页面

Name: Name 是用于为当前新建的钓鱼页面命名,可以简单命名为钓鱼页面1

Import Site: 与钓鱼邮件模板的编辑一样,gophish 为钓鱼页面的设计也提供了两种方式,第一种则是Import Site 点击Import Site后,填写被伪造网站的 URL,再点击Import,即可通过互联网自动抓取被伪造网站的前端代码。这里以伪造网易邮箱登录界面为例,在Import Site中填写https://mail.163.com/,并点击import

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

由于编码的不同,有时候直接通过Import Site导入的网站,其中文部分多少存在乱码现象,这时候就需要查看源码并手动修改。

(重点)Capture Submitted Data: 通常,进行钓鱼的目的往往是捕获受害用户的用户名及密码,因此,在点击Save Page之前,一定要勾选Capture Submitted Data,当勾选了Capture Submitted Data后,页面会多出一个Capture Passwords的选项,显然是捕获密码。通常,可以选择勾选上以验证账号的可用性。如果仅仅是测试并统计受害用户是否提交数据而不泄露账号隐私,则可以不用勾选。

另外,当勾选了Capture Submitted Data后,页面还会多出一个Redirect to,其作用是当受害用户点击提交表单后,将页面重定向到指定的 URL。可以填写被伪造网站的 URL,营造出一种受害用户第一次填写账号密码填错的感觉。(一般来说,当一个登录页面提交的表单数据与数据库中不一致时,登录页面的 URL 会被添加上一个出错参数,以提示用户账号或密码出错,所以在Redirect to中,最好填写带出错参数的 URL,例如https://mail.XX.com/cgi-bin/loginpage?errtype=1

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

Email Templates 邮件模板

完成了邮箱配置之后,就可以使用 gophish 发送邮件了。所以,接下来就需要去编写钓鱼邮件的内容。 点击New Template新建钓鱼邮件模板,依次介绍填写各个字段。

Name: 同样的,这个字段是对当前新建的钓鱼邮件模板进行命名。可以简单的命名为:邮件模板1

Import Email: gophish 为编辑邮件内容提供了两种方式,第一种就是Import Email

用户可以先在自己的邮箱系统中设计好钓鱼邮件,然后发送给自己或其他伙伴,收到设计好的邮件后,打开并选择导出为eml文件或者显示邮件原文,然后将内容复制到 gophish 的Import Email中,即可将设计好的钓鱼邮件导入;或者直接使用收到的正规邮件,如阿里云告警通知等,导出为 eml 文件再导入:

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

Subject: Subject 是邮件的主题,通常为了提高邮件的真实性,需要自己去编造一个吸引人的主题。这里简单填写成“第一次钓鱼测试”

内容编辑框: 内容编辑框是编写邮件内容的第二种模式,内容编辑框提供了TextHTML两种模式来编写邮件内容,使用方式与正常的编辑器无异。其中HTML模式下的预览功能比较常用到,在编辑好内容后,点击预览,就可以清晰看到邮件呈现的具体内容以及格式。

Add Tracking Image: Add Tracking Image 是在钓鱼邮件末添加一个跟踪图像,用来跟踪受害用户是否打开了收到的钓鱼邮件。默认情况下是勾选的,如果不勾选就无法跟踪到受害用户是否打开了钓鱼邮件。 注:跟踪受害用户是否点击钓鱼链接以及捕捉提交数据不受其影响。

Add Files: Add Files 是在发送的邮件中添加附件,一是可以添加相关文件提高邮件真实性,二是可以配合免杀木马诱导受害用户下载并打开。

当填写完以上字段后,点击Save Template,就能保存当前编辑好的钓鱼邮件模板。

Users & Groups 用户和组

当完成上面三个功能的内容编辑,钓鱼准备工作就已经完成了 80%,Users & Groups的作用是将钓鱼的目标邮箱导入 gophish 中准备发送。

Name: Name 是为当前新建的用户组命名,这里简单命名为目标1组

Bulk Import Users: Bulk Import Users 是批量导入用户邮箱,它通过上传符合特定模板的 CSV 文件来批量导入目标用户邮箱,点击旁边灰色字体的Download CSV Template可以下载特定的 CSV 模板文件。模板文件中的Email是必填项,其余的Frist NameLast NamePosition可选填。

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

编辑好目标用户的邮箱后,点击Save Changes即可保存编辑好的目标邮箱保存在 gophish 中。

Campaigns 钓鱼事件

Campaigns 的作用是将上述四个功能Sending ProfilesEmail TemplatesLanding PagesUsers & Groups联系起来,并创建钓鱼事件。 在 Campaigns 中,可以新建钓鱼事件,并选择编辑好的钓鱼邮件模板,钓鱼页面,通过配置好的发件邮箱,将钓鱼邮件发送给目标用户组内的所有用户。

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

Name: Name 是为新建的钓鱼事件进行命名,这里简单命名为:一次钓鱼测试

Email Template: Email Template 即钓鱼邮件模板,这里选择刚刚上面编辑好的钓鱼邮件模板邮件模板1

Landing Page: Landing Page 即钓鱼页面,这里选择刚刚上面编辑好的名为钓鱼页面1的网易邮箱登录页面的钓鱼页面。

(重点)URL: URL 是用来替换选定钓鱼邮件模板中超链接的值,该值指向部署了选定钓鱼页面的 url 网址(这里比较绕,下面具体解释一下,看完解释再来理解这句话)

简单来说,这里的 URL 需要填写当前运行 gophish 的主机 IP。 因为启动 gophish 后,gophish 默认监听了 3333 和 80 端口,其中 3333 端口是后台管理系统,而 80 端口就是用来部署钓鱼页面的。 当 URL 填写了http://主机IP/,并成功创建了当前的钓鱼事件后。gophish 会在主机的 80 端口部署当前钓鱼事件所选定的钓鱼页面,并在发送的钓鱼邮件里,将其中所有的超链接都替换成部署在 80 端口的钓鱼页面的 url

而我们对端口映射做了修改,将 80 端口映射到了 88 端口,所以,这里的 URL 填写我本地当前运行 gophish 主机的 IP 对应的 url,即 http://104.xx.xx.xx:88/

另外,需要保证的是该 URL 对于目标用户组的网络环境是可达的。例如填写内网 IP,则该钓鱼事件仅能够被内网目标用户所参与,而外网目标用户网络不可达。如果部署了gophish的是公网服务器,URL 填写公网 IP 或域名,则需要保证目标用户的内网环境能够访问该公网服务器的 IP(有些企业的内网环境会设定防火墙策略,限制内网用户能够访问的公网 IP)

Launch Date: Launch Date 即钓鱼事件的实施日期,通常如果仅发送少量的邮箱,该项不需要修改。如果需要发送大量的邮箱,则配合旁边的Send Emails By效果更佳。

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

假设,Launch Date的值为2022.09.01,09:00Send Emails By的值为2022.09.01,09:05,该钓鱼事件需要发送 50 封钓鱼邮件。 那么经过以上设定,从9:009:05共有 5 个发件点,这 5 个发件点被 50 封邮件平分,即每个发件点将发送 10 封,也就是每分钟仅发送 10 封。

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

Sending Profile: Sending Profile 即发件策略,这里选择刚刚编辑好的名为 [email protected] 的发件策略。

Groups: Groups 即接收钓鱼邮件的目标用户组,这里选择刚刚编辑好的名为目标1组的目标用户组。

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

Dashboard 仪表盘

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

需要注意的是,Dashboard统计的是所有钓鱼事件的数据,而非单个钓鱼事件的数据,如果仅需要查看单个钓鱼事件的统计数据,可以在Campaigns中找到该钓鱼事件,点击View Results按钮查看:

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

查看捕获的数据

模拟目标用户的行为,打开上述发送的钓鱼邮件。

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

这里的?rid=nSiZXYc具有唯一性,即唯一指向打开的这封钓鱼邮件,换句话说nSiZXYc是为这封邮件的收件人唯一分配的。

如果此次名为一次钓鱼测试Campaigns选择的目标存在多个目标邮箱,则 gophish 会为每一封目标邮件分配一个唯一的rid值,以此来区别不同的收件人。

点击邮件中的超链接,填写账号密码登录,之后在 gophish 中查看捕获的数据,依次点击Campaigns -> 一次钓鱼测试的View Results -> 展开Details -> 展开Submitted Data,可以看到在钓鱼页面提交的账密信息:

以上即 gophish 功能面板中所有功能的介绍,通过以上功能的学习和利用,已经可以实施较为基础的网络钓鱼了。而Sending Profiles发件策略 - Landing Pages钓鱼页面 - Email Templates邮件模板 - Users & Groups用户和组 - Campaigns钓鱼事件 - Dashboard 仪表板 的顺序也是在实际使用中需要按照的顺序,如果前一步不能配置好,将会影响到后续的功能达不到想要的效果。因此,严格遵循该步骤不说可以事半功倍,至少能避免在成为“捕鱼人”的道路上迷失。

文章作者: z0sen
版权声明: 本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 z0sen's Blog
安全产品 钓鱼 RedTeam
喜欢就支持一下吧