gophish从0-1

gophish部署

1、离线本地安装gophish

下载地址:https://github.com/gophish/gophish/releases

2.docker安装gophish

这里采用docker快捷安装

docker pull gophish/gophish

docker run -it -d --rm --name gophish -p 3333:3333 -p 8003:80 -p 8004:8080 gophish/gophish

#docker run -it -d --rm --name gophish -p 3333:3333 -p 8003:80 -p 8004:8080 gophish/gophish

docker logs gophish(查看安装日志中的登录密码)

2.配置gophish

1.访问地址,登录账号admin,密码为日志中的密码gophish

https://VPS:3333

邮件服务器:

https://gitee.com/laowu5/EwoMail

https://github.com/gyxuehu/EwoMail

测试案例:

1、配置发送邮件策略sending profiles

name:可随意填写

smtp form:填写发送邮箱的邮箱地址

host:发送邮箱的smtp服务器

username:发送邮箱地址

password:为smtp发送key,如为qq邮箱时如下获取

send test Email:发送测试邮件

 

2、配置登录页面Landing Pages

name:随意填写

import site:导入登录网站的url链接,如:http://vpn.jlmu.cn/users/sign_in

capture submitted data:勾选,可记录提交数据

capture passwords:勾选,可记录登录密码

Redirect to:填写提交数据后需要跳转的网页url

注:html中关于登录方面很多做了登录限制,因我们是copy的网页所以存在很多问题,所以尽量可以把html中登录form表单改成如下格式:

<form class="smart-form" id="login-form" role="form" action="/users/sign_in" accept-charset="UTF-8" method="post"><input name="utf8" type="hidden" value="&#x2713;" /><input type="hidden" name="authenticity_token" value="jrlpNELRrskMnKGIDSGcPsllIMpJvq6XjM8NMBCN4CasGvDSuJwLc94MPgCDnMT1iqHoP5gb4THePnjRTpCfCw==" />
<div class="liner">
<div class="form-group"><label class="sr-only control-label" for="user_login">登录名</label><div class="input-group"><span class="input-group-addon"><i class='glyphicon glyphicon-user'></i></span><input title="输入用户名或手机号" autofocus="autofocus" autocomplete="disabled" placeholder="用户名" data-toggle="tooltip" data-placement="top" class="form-control" type="text" name="user[login]" id="user_login" /></div></div>
</div>
<div class="liner ">
<div class="form-group"><label class="sr-only control-label required" for="user_password">密码</label><div class="input-group"><span class="input-group-addon"><i class='glyphicon glyphicon-lock'></i></span><input title="输入收到的短信密码或者口令牌随机密码" autocomplete="disabled" placeholder="密码" data-toggle="tooltip" data-placement="top" data-sw-otp="true" data-sw-wechat="true" class="form-control" maxlength="72" size="72" type="password" name="user[password]" id="user_password" /><span class="input-group-btn"><button id="random_psw" type="button" class="btn btn-warning" data-original-title="" data-placement="top" data-toggle="tooltip">获取密码</button></span></div></div>
</div>
<input value="unknown" type="hidden" name="user[dymatice_code]" id="user_dymatice_code" />
<input value="false" type="hidden" name="user[otp_with_capcha]" id="user_otp_with_capcha" />


<div class="col-md-6 col-md-offset-6 login-btn">
<input type="submit" name="commit" value="登录 Login" class="btn" />
</div>

</form>

3、配置发送邮件信息的邮件模板Email Templates

name:随意填写

import Email:可导入显示邮件原文的所有内容或者将导出的eml文件内容复制进去

Envelope Sender:可随意填写发件人

subject:邮件标题fig:

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

Add Files:可上传文件附件

4、配置发送邮箱群组Users&Groups

name:随意填写

Bulk Import Users:导入需要发送钓鱼邮件的所有邮箱账号,可下载右边的CSV模板填写

Add:添加单个邮箱,只需要填写Email就行

5、配置Campaigns(用于配置勾选之前的所有配置好的内容进行钓鱼邮件发送)

name:随意填写

Email Template:选择一个之前配置好的Email Template模板

Landing Page:选择一个之前配置好的Landing Page模板

URL:填写启动gophish时phishing server的url链接,如果是本地可填写:http://127.0.0.1:80,或者http://IP:80,如果改变映射端口则改变相应端口即可

Launch Date:发布日期,一般会自动获取,不需要自己填写

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

注意事项

在导入真实网站来作为钓鱼页面时,绝大多数情况下并非仅通过Import就能够达到理想下的克隆,通过多次实践,总结出以下几点注意事项 。

【捕获不到提交的数据】导入后要在HTML编辑框的非Source模式下观察源码解析情况,如果明显发现存在许多地方未加载,则有可能导入的源码并非页面完全加载后的前端代码,而是一个半成品,需要通过浏览器二次解析,渲染未加载的DOM。这种情况下,除非能够直接爬取页面完全加载后的前端代码,否则无法利用gophish进行钓鱼,造成的原因是不满足第2点。

【捕获不到提交的数据】导入的前端源码,必须存在严格存在<form method="post" ···><input name="aaa" ··· /> ··· <input type="submit" ··· />结构,即表单(POST方式)— Input标签(具有name属性)Input标签(submit类型)— 表单闭合的结构,如果不满足则无法捕获到提交的数据 。

【捕获不到提交的数据】在满足第2点的结构的情况下,还需要求<form method="post" ···>在浏览器解析渲染后(即预览情况下)不能包含action属性,或者action属性的值为空。

否则将会把表单数据提交给action指定的页面,而导致无法被捕获到 。

【捕获数据不齐全】对于需要被捕获的表单数据,除了input标签需要被包含在中,还需满足该存在name属性。例如,否则会因为没有字段名而导致value被忽略 。

【密码被加密】针对https页面的import,通常密码会进行加密处理,这时需要通过审计导入的前端代码,找到加密的Java函数(多数情况存在于单独的js文件中,通过src引入),将其在gophish的HTML编辑框中删除,阻止表单数据被加密 。

以上5点是在实践中总结出来的宝贵经验,或许还有其他许多坑未填,但所有的坑通常都围绕在结构中,所以如果遇到新坑,先将该结构排查一遍,还是不行,再另辟蹊径 。

posted @ 2023-04-21 16:48  BruceTyler  阅读(1473)  评论(0编辑  收藏  举报