最近关于钓鱼演练的活比较多,分享一下我的踩坑笔记,主要采用了ewmail、gophish和swaks来完成任务。演练过程中踩了很多坑,也有了很多收获,故打算写一篇笔记,记录自己踩过的坑和对于gophish利用的一些看法。
以某甲方演练要求为例:
1、14400个测试目标。
2、要求点击邮件中钓鱼链接时跳转到的指定域名下的钓鱼网站。
3、只收集点钓鱼网站链接和点击钓鱼网站上点击提交按钮的人(不收集密码等敏感信息)。
4、邮件中要指定钓鱼网页的url,而不是“点击此处”等关键字。
1、购买近似域名,用于迷惑收件人员。
2、两台VPS(推荐使用国外的VPS),用于搭建ewmail和gophish。
1、根据ewmail官方文档一步步搭建好ewmai,设置好域名解析,然后添加邮箱并到邮件后台发送邮件测试服务器的功能是否正常。
2、根据操作系统下载gophish并解压,然后进入config.json修改gophish配置,如下图所示,admin_server表示gophish后台,将原来的127.0.0.1修改为0.0.0.0,同时可以把原来的默认端口3333改成其他端口,如下图改成了33335端口。phish_server表示监听的钓鱼网页配置,原来默认端口是80,下图则改成了8090端口。use_tls表示是否启用https。
3、启动gophish,根据提示密码进入后台,然后修改默认密码
4、同时访问钓鱼页面确保其功能正常(没错,下图就是钓鱼页面正常的表现)。
5、从后台可以看到gophish有很多功能模块,大致如下:
功能
简述
Dashboard
仪表板查看整体情况
Campaigns
每次钓鱼任务的配置与详情
Users & Groups
接收邮件的用户和用户组
Email Templates
邮件模板
Landing Pages
钓鱼页面
Sending Profiles
发送邮箱配置
6、Sending Profiles配置,其中From是“发件人<发件邮箱>”格式,也可以
直接填写发件邮箱。这里有个坑,某些厂商使用的邮件服务器会判断发件邮箱中的关键字,如发件邮箱包含有“admin”、“oa”等关键字的,则发送的邮箱很有可能直接被拦截或丢进垃圾箱。其次,Host处填写的smtp信息,由于大多数厂商都会把smtp的25端口禁掉,因此此处填写的是465端口(SMTPS:SMTP-over-SSL)。
7、Landing Pages钓鱼页面配置,支持两种方式配置。第一种是点击import site然
后输入需要克隆的URL。这种方式是最直接的,但这里也有个坑,比如克隆freebuf的登录网页(https://account.tophant.com/login.html
),通过钓鱼链接访问的话是可以访问到完整网页的。
但如果克隆189邮箱登录页面(https://webmail30.189.cn/w2/
),通过钓鱼链接访问的话网页就是不完整的,这和网站对资源管理的策略有关,另外如果直接克隆网页的话还会有编码不同导致乱码等问题。
第二种方法是直接添加HTML源码,为了避免出现无法加载完整网页的问题,可以将需要克隆的网页静态资源下载下来并放到搭建好gophish的VPS上,然后修改网页源码中相关地址即可,如下可以显示一个近似完整的网页。
上图点击钓鱼网页链接后跳转的是http://ip:8090/?rid=hpnrrmV
,但是甲方希望的是跳转到http://mail.xxxx.cn:8090/?rid=hpnrrmV
(近似域名)。这里要做的就很简单,首先将钓鱼网页的ip解析到mail.xxxx.cn
,然后通过JS来监听钓鱼网页加载状态,当目标访问网页后JS抓取当前URL,提取rid值,然后拼接到http://mail.xxxx.cn:8090/?rid
(如果不加rid的话网页显示404),再做跳转即可,如下【找了一个测试的邮箱地址】:
另外Landing Page还可以选择是否抓取目标提交数据行为、抓取目标提交的密码和网页跳转等功能,一般情况下进行演练的客户都希望能过抓取目标提交数据的行为,但不能抓取目标的密码,这点要慎重。
8、Email Templates,钓鱼邮件模板,即向目标发送的邮件模板。同样支持通过
Import Templates导入和手动编辑HTML。如果选择Import Templates的话,首先需要一个邮件模板,然后以eml格式导出,再将里面的数据复制到Import Templates中:
点击Change Links to Point to Landing Page可以将原邮件中的链接改为监听的钓鱼链接,如下通过查看html源码我可以发现已经将 http://www.baidu.com 的跳转改为了钓鱼网页{{.URL}}
,{{.URL}}
是官方提供的参数,是gophish监听的钓鱼网页链接。
另外如果要监听用户是否打开邮件,可以勾选Add Tracking Image
,通过HTML源码可以发现源码中有{{.Tracker}}
,{{.Tracker}}
也是官方提供的参数,这实际上是在邮件中添加了一个隐藏的图片。可以发送一个测试邮件,然后在打开邮件的时候监听网络请求,发现在打开邮件的同时请求了 https://ip:8090/track?rid=dsyJFNb ,这就是插入邮件中用于监听邮件是否被打开的隐藏图片。
这里有一个小坑,如果在gophish的config.json
中phish_server
设置use_tls
为false
,即监听的钓鱼网页不启用https的,在某些邮件服务器打开邮件的时候,{{.Tracker}}
链接显示的是http,但是自动跳转的是https,并且有概率会请求失败,这就导致数据统计有一定的不准确性。
另外甲方特别强调邮件中的链接要显示指定的url如http://mail.xxxx.cn:8090
,而不是用“点击此处”等关键字来做跳转,这里可以在url后加入Rid值如http://mail.xxxxxxxx:8090/?rid=Bf1Thnm
,这样做的好处是防止有些目标直接复制url到浏览器中点开而不是直接点击链接,上文也说过,添加rid值一是可以正常访问钓鱼网页,二是每个Rid值对应每个目标用户,即使他是复制URL访问的也能监测到他的访问行为。可以使用官方提供的参数{{.RId}}
来实现这个功能。
官方提供的其他参数如下:
Variable
Description
{{.RId}}
The target's unique ID
{{.FirstName}}
The target's first name
{{.LastName}}
The target's last name
{{.Position}}
The target's position
{{.Email}}
The target's email address
{{.From}}
The spoofed sender
{{.TrackingURL}}
The URL to the tracking handler
{{.Tracker}}
An alias for
{{.URL}}
The phishing URL
{{.BaseURL}}
The base URL with the path and rid parameter stripped. Useful for making links to static files.
9、Users & Groups,目标用户组,可以通过直接下载官方指定模板,然后填写数据
上传即可。Campaigns用于创建任务和监测任务,可以通过点击Complete来结束任务。Dashboard是整个钓鱼演练的进展情况。
甲方需要对14400个目标进行钓鱼演练,第一次并没有发现他们的钓鱼服务
器会对邮件发送人的发送数量进行判断,如果同一个发送人一天当中发送的邮件数量过多则会拒收,这就导致第一次发送邮件几乎全失败。后来为了保险起见,决定将14400个目标分为200份,然后在ewomail上创建200个发件人并添加到gophish,这样每个人只需要发送72封邮件。当然,这个工作量十分巨大,还好gophish官方开放了API,因此可以通过脚本快速添加发件人、目标组及新建发件任务。如下例子:
批量创建指定csv文件中的sending profile
批量创建指定目录下csv文件中的groups
批量创建指定csv文件中相关配置的钓鱼任务Campaigns
批量创建好钓鱼任务后,等演练时间结束批量导出结果,一场数量庞大的钓鱼演练就此完美结束。
1.ewomail: http://doc.ewomail.com/docs/ewomail/install
2.gophish:https://github.com/gophish/gophish/releases
3.参考:https://mp.weixin.qq.com/s/gFkFcl2M_SI7UYmosUnTOg
4.gophish脚本:https://github.com/i11us0ry/tools-gophish