记一次使用gophish开展的钓鱼演练

这周接到客户要求,组织一次钓鱼演练,要求是发送钓鱼邮件钓取用户账号及个人信息。用户提交后,跳转至警告界面,以此来提高客户单位针对钓鱼邮件的防范意识。

与客户沟通后得知他们企业内部是由邮箱网关的,那么就意味着大批量将钓鱼邮件发送至目标邮箱中是难以做到的,但沟通后客户同意将我报备的IP和域名添加进白名单,这样能解决邮件能否成功接收这一大难题了。因此这里使用gophish进行钓鱼邮件演练,使用该工具的好处在于:

  1. 可以快速部署一次钓鱼行动

  2. 获取到的数据信息很直观,UI交互合理

此外还需要我们做好如下两个准备。

前期准备:

1.域名申请

这里使用的是godaddy来申请的域名。域名选择上尽量选择与客户域名相似。例如Think.com可以考虑使用Thlnk.com、Th1nk.com来掩人耳目,或者使用IDN伪造域名手段。

IDN伪造域名手段

这里浅析一下该手段:

早期的DNS(Domain Name System)是只支持英文域名解析。在IDNs(国际化域名Internationalized Domain Names)推出以后,为了保证兼容以前的DNS,所以,对IDNs进行punycode转码,转码后的punycode就由26个字母+10个数字,还有“-”组成。

其实就是将unicode编码转化成Punycode,而转换后的Punycode在浏览器中显示的是unicode编码后的字符。

如我们想有个тhink.com域名,可以申请xn--hink-p6d.com

这里推荐使用网站直接转换:https://www.cha127.com/cndm/?decoded=&encode=Encode+>>

图片

但不同浏览器在针对IDN域名伪造这个手段上,有不同的防护策略。火狐中并未对IDN伪造进行防护,因此如https://www.xn--80ak6aa92e.com/这个域名,就显示的是https://www.аррӏе.com/

图片

而谷歌会先弹出访问警告,忽略警告后访问后仍显示的是https://www.xn--80ak6aa92e.com/

图片

edge同谷歌一样,虽然不警告,但最后显示的也是https://www.xn--80ak6aa92e.com/

但如果仅想为邮箱服务器搞个域名,可以直接使用申请 тhink.com。这种类似字符可以在wiki中找到:https://zh.wikipedia.org/wiki/Unicode字符列表

2.服务器

服务器选择上需要注意以下3点

  1. 配置 如果同时部署上邮箱服务器和gophish,且邮箱服务部署的若是ewomail,则推荐2核4g,最低2核2g,不然会很卡

  2. 购买途径 购买途径方面根据客户需求择定,考虑数据安全则使用国内的,使用国外的vps好处就是域名解析不需要备案。如果短期需要备上案,尽量选择国外vps

  3. 25端口是否放开 不少服务器的25端口默认是不放开的,只有向官方申请工单才行。如果为了避免麻烦,可以先搜索下每家服务器的端口默认限制情况。我用过的腾讯云和国外的justhost都是可以默认放开25端口的

ewomail部署

以上两个步骤完成后,就可以优先部署上邮箱服务了。这里选用的ewomail,官方推荐使用centos进行安装,所以我选择的vps也是centos的。

安装过程全程参考官方文档即可:

http://doc.ewomail.com/docs/ewomail/install

部署好后需要添加邮箱用户或是直接使用admin用户进行后续邮件发送也可以。

下图为官方提供的域名dns解析记录

图片

设置完解析,邮件能成功发送后,即可进入下一步了。

gophish部署

邮箱服务搭建好后,就需要部署gophish了。以下是gophish搭建命令,还是相当快捷的。如果是centos安装,可能会报centos /lib64/libc.so.6: version GLIBC_2.28' not found的错误。此处参考链接进行解决即可:https://www.cnblogs.com/FengZeng666/p/15989106.html

wget https://github.com/gophish/gophish/releases/download/v0.12.1/gophish-v0.12.1-linux-64bit.zip
mkdir gophish
unzip gophish-v0.12.1-linux-64bit.zip -d ./gophish
cd gophish/
vim config.json 
chmod +x gophish
nohup ./gophish &

此处的的配置文件根据实际需求进行填写,无特殊要求仅需要更改注释内容即可。

{"admin_server": {"listen_url": "0.0.0.0:3333", //管理后台放行ip"use_tls": true,"cert_path": "gophish_admin.crt","key_path": "gophish_admin.key","trusted_origins": []},"phish_server": {"listen_url": "0.0.0.0:88",  //伪造界面放行ip"use_tls": false,"cert_path": "example.crt","key_path": "example.key"},"db_name": "sqlite3","db_path": "gophish.db","migrations_prefix": "db/db_","contact_address": "","logging": {"filename": "","level": ""}
}

运行成功后查看nohup.out文件,gophish首次使用会随机生成密码,登录后台后可更改密码

gophish官方文档[1]

项目中 常用到的功能模块为DashboardCampaignsuers & GroupsEmail TemplatesLanding PagesSending Profiles

Sending Profiles(配置邮件发送凭证)

图片

添加配置如上,例如申请的域名为abc.com,则成功搭建个人邮箱服务器后,依次填入[anything]<[anything]mail.abc.com>,smtp.mail.abc.com:25,用户账号密码,邮件头部分可根据需要进行添加。

user&group(添加目标邮箱)

图片

添加需要发送的目标邮箱,支持csv导入。仅需填入Email即可

Landing Pages(伪造页面)

添加需要伪造的界面

图片

伪造页面是钓鱼的一个核心内容,页面的仿真程度将决定鱼儿是否上钩,下面是客户要求伪造的邮箱网站

图片

网站伪造根据需求进行选择不同方案,一般项目在一周甚至是2-3天左右,单纯手写前端的话时间投入和收益不成正比。直接ctrl+s保存的网站大部分效果不好,因为很多界面都是通过渲染得到。这次项目中使用了以下三种方案供参考:

方案一:

直接在landing pages页面导入界面,gophish会自行仿造目标网站。此处碰到两个问题点,1.网站项目缺失,显示如下

图片

静态资源加载问题获取不到是相对好解决的,可以考虑将前端需要的js、背景图放置在vps上再去获取即可。放置路径可以是gophish下的static/endpoint,此时前端引用时的路径应为http[s]://ip or domain/static/filename

但在获取密码环节出了问题,gophish抓取密码的原理是寻找form表单,获取到其中的input字段。因此很多时候,明明伪造的网站,受害者提交了信息,但却未收到数据,很大可能是因为前端没有构造出符合规定的form表单。此处的原因则是登录使用的是iframe调用的外部资源。

图片

方案二:

使用谷歌插件:Save Page WeSingleFile拷贝目标页面。此方法的优势在于伪造的静态页面表现优异,其原理类似于将网站部分静态图片或资源直接base64加密后保存在单个html中。

图片

缺点显而易见,直接用插件保存下来网站会“失真”,不能很好的配合gophish抓取密码。因此这次项目中该方案就不能很好的实现form表单,虽然有尝试在上图源码中进行修改,但未能奏效,绝大部分html文件连编辑器也无法格式化,大量杂乱的内容改起来也更加费时费力。也是因为该系统使用了iframe的关系,这次拷贝下来的html内容比之前拷贝到的文件内容要更乱更杂。

以往项目案例中,使用插件能很好的更改

例如如下网页中自带了form表单,此时使用插件能很好的仿造并改过。

图片

修改表单,添加重要字段以便gophish识别。很多前端拷贝下来的提交按钮均是button,这种情况是需要更改为input标签的submit类型。

图片

修改后,能成功获取到用户输入内容

图片

方案三:

一半自动+一半人工的方式

使用了https://github.com/Threezh1/SiteCopy,本质跟crtl+s保存网站一致,但更加方便。保存后的网站效果跟方案一类似,再对拷贝下来的前端代码进行修改(不可避免),对照着原网站的css进行抄袭,基本上能模拟出原网站界面。

切记需要有如下几个关键标签

<form action="" method="post" name="form"><input name="username" type="text"/><br/><input name="password" type="password"/><br/><input id="login" name="login" type="submit" value="Login"/> 
</form>

ps:写文章时发现可能在方法一的基础上进行手动添加修改可能更加便利

Email Templates(编辑邮件内容)

添加邮件发送模板

图片

可支持导入邮件,如果需要制作一份比较完美的钓鱼邮件可自行先设计好后,保存为eml文件,再进行导入。

Add tracking image是在钓鱼邮件末添加一个跟踪图像,用来跟踪受害用户是否打开了收到的钓鱼邮件。

客户需求是将链接放置在邮件中,调取受害者输入信息,因此这里crtl+k添加了链接,URL添加{{.URL}}即可。

图片

Campaigns(任务部署)

图片

任务部署的URL填写当前VPS ip(或解析的域名)和gophish部署端口。

Launch Date和Send Emails By用来控制邮件发送时间,gophish会根据两个时间间隔长度,来调控邮件发送的速率,间隔越长相对的发送速率就越慢。

这里推荐将Send Emails By的值设置在一个合理的时间范围内。将邮件速率控制在一分钟5-10封,速率过快的话非常有可能出现邮件发送失败,到达不了用户邮箱的情况。

Dashboard(成果面板)

部署完后就是静候佳音,等待鱼儿上钩了。最后在Dashboard中可以很直观的看到用户打开邮件、点击链接、提交数据等行为的对应数量。

可以看到成果还是颇丰的,也算是圆满完成了一次钓鱼演练。

图片

参考资料

[1]

gophish官方文档: https://docs.getgophish.com/      

 

加下方wx,拉你一起进群学习

图片

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/76134.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ARM微架构

一、流水线 二、指令流水线 指令流水线 指令流水线 指令流水线 ARM指令流水线 ARM7采用3级流水线 ARM9采用5级流水线 Cortex-A9采用8级流水线 注1&#xff1a;虽然流水线级数越来越多&#xff0c;但都是在三级流水线的基础上进行了细分 PC的作用&#xff08;取指&#xff09; …

搭建Django+pyhon+vue自动化测试平台

Django安装 使用管理员身份运行pycharm使用local 1 pip install django -i https://pypi.tuna.tsinghua.edu.cn/simple 检查django是否安装成功 1 python -m django --version 创建项目 1 1 django-admin startproject test cd 切换至创建的项目中启动django项目…

python 连接oracle pandas以简化excel的编写和数据操作

python代码 Author: liukai 2810248865qq.com Date: 2022-08-18 04:28:52 LastEditors: liukai 2810248865qq.com LastEditTime: 2023-07-06 22:12:56 FilePath: \PythonProject02\pandas以简化excel的编写和数据操作.py Description: 这是默认设置,请设置customMade, 打开koro…

SpringBoot+AOP+Redission实战分布式锁

文章目录 前言一、Redission是什么&#xff1f;二、使用场景三、代码实战1.项目结构2.类图3.maven依赖4.yml5.config6.annotation7.aop8.model9.service 四、单元测试总结 前言 在集群环境下非单体应用存在的问题&#xff1a;JVM锁只能控制本地资源的访问&#xff0c;无法控制…

docker容器的基本操作

一、查看Docker的版本信息 [roothuyang1 ~]# docker version 二、查看docker的详细信息 [roothuyang1 ~]# docker info 三、Docker镜像操作 Docker创建容器前需要本地存在对应的镜像&#xff0c;如果本地加载不到相关镜像&#xff0c;Docker默认就会尝试从镜像仓库https://hu…

算法竞赛入门【码蹄集新手村600题】(MT1100-1120)C语言

算法竞赛入门【码蹄集新手村600题】(MT1100-1120&#xff09;C语言 目录MT1101 带参数的宏IIMT1102 长方体MT1103 球体积MT1104 三角形MT1105 英寸英尺英里MT1106 盎司磅MT1107 加仑/升MT1108 保留小数MT1109 和10相比MT1110 最小值MT1111 最大值MT1112 中庸之道MT1113 三人同行…

代码随想录算法训练营第17期第28天 | 93.复原IP地址 、78.子集 、​ 90.子集II

93. 复原 IP 地址 1.当点号有三个之后&#xff0c;当最后一部分数值是有效的话&#xff0c; 就可以加入结果集了 class Solution { public:vector<string> res;bool isvalid(const string& s, int left, int right){if (right < left){return false;}if (s[left]…

-bash: fork: retry: Resource temporarily unavailable 问题解决

错误提示&#xff1a; -bash: fork: retry: Resource temporarily unavailable 错误分析&#xff1a;之前已经出现过这种资源限制的报错提醒&#xff0c;然后整个系统可用的连接数就已经用完了&#xff0c;无法使用工具来获取系统信息&#xff0c;所以将运行的任务脚本kill后开…

【运维工程师学习八】代理及安装配置Nginx反向代理

【运维工程师学习八】代理 正向代理一、使用正向代理的主要作用有&#xff1a;二、反向代理三、使用反向代理的主要作用有&#xff1a;四、透明代理五、各种代理的主要区别六、Nginx的安装七、了解nginx的文件位置八、了解nginx程序的命令行参数九、开启nginx反向代理十、解读n…

less的使用

less的介绍&#xff1a; less使用 1、 less使用的第一种用法&#xff0c;起变量名&#xff0c;变量名区分大小写&#xff1a; 这里我们定义一个粉色变量 我想使用直接把变量拿过来就行 2、vscode使用插件&#xff0c;直接将Css文件转换less文件&#xff1a; 3、第二种用法&…

【力扣每日一题】2023.8.5 合并两个有序链表

目录 题目&#xff1a; 示例&#xff1a; 分析&#xff1a; 代码&#xff1a; 题目&#xff1a; 示例&#xff1a; 分析&#xff1a; 题目给我们两个有序的链表&#xff0c;要我们保持升序的状态合并它们。 我们可以马上想要把两个链表都遍历一遍&#xff0c;把所有节点的…

android Android Studio Giraffe | 2022.3.1 版本Lombok不兼容 解决方案

android Android Studio Giraffe | 2022.3.1 版本Lombok不兼容 解决方案 1.查看当前的android studio 版本 Android Studio Giraffe | 2022.3.1 Build #AI-223.8836.35.2231.10406996, built on June 29, 2023 2.打开 idea 官网下载页面 idea下载历史版本 找到对应的版本编号…

MySQL 与MongoDB区别

一、什么是MongoDB呢 ? MongoDB 是由C语言编写的&#xff0c;是一个基于分布式文件存储的开源数据库系统。在高负载的情况下&#xff0c;添加更多的节点&#xff0c;可以保证服务器性能。 MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。 MongoDB 将数据存储为一…

集中/本地转发、AC、AP

1.ADSL ADSL MODEM&#xff08;ADSL 强制解调器&#xff09;俗称ADSL猫 ADSL是一种异步传输模式&#xff08;ATM)。ADSL是指使用电话线上网&#xff0c;需要专用的猫&#xff08;Modem)&#xff0c;在上网的时候高频和低频分离&#xff0c;所以上网电话两不耽误&#xff0c;速…

Vue命名规范

JS文件命名 一般采用的是小驼峰命名法&#xff0c;如 pieChartHelp 第一个单词小写&#xff0c;其他单词首字母大写 Components 文件命名 一般采用的是大驼峰命名法&#xff0c;如PieChart 所有单词的首字母大写 常量命名 一般全部大写&#xff0c;每个单词使用分隔符隔开&…

若依打印sql

官方issue 自动生成的代码&#xff0c;sql日志怎么没有打印 在ruoyi-admin中的application.yml配置如下。 # 日志配置&#xff0c;默认 logging:level:com.ruoyi: debugorg.springframework: warn#添加配置com.ying: debug输出sql

网络基础1

文章目录 网络基础11. 计算机网络背景1.1 网路发展1.2 认识 "协议" 2. 网络协议初识2.1 协议分层2.2 OSI七层模型2.3 TCP/IP五层(或四层)模型协议栈与OS的关系 3. 网络传输基本流程3.1 同一个局域网两台主机通信3.2 同一个路由器的两个子网通信 4. 网络中的地址管理4…

PHP国外在线教育系统源码 在线课程系统源码 直播课程系统源码提供在线课程,现场课程,测验

Proacademy是在线教育一体化的解决方案&#xff0c;用于创建类似于Udemy、Skillshare、Coursera这种在线教育市场。 这个平台提供在线课程&#xff0c;现场课程&#xff0c;测验等等&#xff0c;并有一个基于实际业务需要的高级认证插件&#xff0c;程序基于Laravel强大的安全框…

通过51单片机实现直流电机调速

一、项目背景及目的 随着各种工业生产设备和机械设备的广泛使用&#xff0c;直流电机调速技术的研究和应用越来越受到人们的重视&#xff0c;具有广泛的应用前景。本项目通过51单片机实现直流电机调速功能&#xff0c;为实际工程应用提供一个可靠和有效的调速方案。 二、设计思…

基于LLM的SQL应用程序开发实战(二)

基于LLM的SQL应用程序开发实战(二) 16.2 使用LangChain SQL代理 回到案例应用本身,我们使用“Run All”的方式重新运行一下,让大家看见更多内部的内容,如图16-5所示,因为在VSCode代码编辑器中,可以看见Jupyter关于当前应用的变量(variable)。 图16- 5 查询Jupyter V…