gophish钓鱼平台增加二维码记录功能
在线突破 发表于 中国 安全工具 2756浏览 · 2024-07-02 06:09

前言

钓鱼演练时发现gophish对好像缺少二维码扫码记录的支持,gophish仓库中看有合并过二维码的代码,但是编译打包后无法构造二维码,于是对其进行改造。

gophish功能点分析

1、gophish主要功能如下:
Dashboard-数据面板
Campaigns-钓鱼邮件发送页面
Users & Groups - 配置接受邮件用户
Email Templates - 钓鱼邮件模版
Landing Pages - 钓鱼页面,通过钓鱼邮件模版可访问到该页面
Sending Profiles - 发送钓鱼邮件的发件人邮箱信息

2、其中Email Templates是最主要的,用来配置钓鱼模版
在这个页面中我们可以配置钓鱼链接地址、记录点击钓鱼信息等变量
可配置变量如下:
{{.URL}}
{{.FirstName}}
{{.LastName}}
{{.Position}}
{{.Email}}
{{.From}}
{{.TrackingURL}}
{{.Tracker}}
{{.URL}}
{{.BaseURL}}

3、经过测试,发现在配置以上变量时可以保存成功,配置其他变量时会提示失败,例如{{.QrURL}}

4、查看请求URL,通过该接口定位到相关代码文件template.go

5、json.NewDecoder(r.Body).Decode(&t)这行代码主要是把接口传递过来的json参数解析到models.Template类中,映射关系如图所示

6、根据我们配置邮件模版的操作,我们主要对html这个参数进行了修改,那代码改造的逻辑主要围绕着HTML参数进行。

HTML字段处理过程的代码分析

1、直接在该类中搜索HTML定位到相关代码逻辑。

2、继续跟进函数


3、继续跟进,代码逻辑到这里就是我们要找到的邮件模版配置所添加的变量了,例如URL、Tracker参数,那么基本可以确定,这里类就是模版变量接受器

4、如果在这里配置一个二维码的变量,是否就能达到相关的预期了?

开始进行代码改造,增加二维码字段用来存放二维码,由于二维码是一个图片,而html和图片相关的代码只有img标签,所有需要使用go生成二维码并处理成base64形式,然后给到img标签处理

二维码功能代码添加

1、在该类中添加一个二维码字段,这里设置成QrCode

2、在该类上增加二维码值生成的代码逻辑,URL的值是phishURL,这个值已知是携带rid的,所以这里直接使用go-qrcode把phishURL生成二维码图片并转换成base64格式的字符

4、现在已经在邮件模版中增加好了QrCode的字段,对代码进行编译测试,配置二维码模版时已经没有报错了

测试邮件发送,二维码的扫描数据已经被统计进去了

2 条评论
某人
表情
可输入 255