fin3ss3g0d/evilgophish

GitHub: fin3ss3g0d/evilgophish

将 evilginx3 的 2FA/MFA 绕过能力与 GoPhish 的钓鱼活动管理、统计追踪和可视化仪表板功能合二为一的红队社会工程学工具。

Stars: 1973 | Forks: 378

![logo](https://raw.githubusercontent.com/fin3ss3g0d/evilgophish/main/images/logo.webp) # 目录 - [evilgophish](#evilgophish) * [关于赞助](#a-word-about-sponsorship) * [致谢](#credits) * [前置条件](#prerequisites) * [免责声明](#disclaimer) * [为什么?](#why) * [背景](#background) * [基础设施架构](#infrastructure-layout) * [setup.sh](#setupsh) * [Cloudflare Turnstile 设置](#cloudflare-turnstile-setup) * [Cloudflare Turnstile HTML 模板指南](#cloudflare-turnstile-html-template-guide) * [replace_rid.sh](#replace_ridsh) * [邮件活动设置](#email-campaign-setup) * [二维码生成器](#qr-code-generator) * [短信活动设置](#sms-campaign-setup) * [实时动态设置](#live-feed-setup) * [关于 Phishlets](#a-word-about-phishlets) * [关于 Evilginx3 更新](#a-word-about-the-evilginx3-update) * [调试](#debugging) * [安装说明](#installation-notes) * [关于活动测试与跟踪的说明](#a-note-about-campaign-testing-and-tracking) * [关于黑名单和跟踪的说明](#a-note-about-the-blacklist-and-tracking) * [对 GoPhish 的修改](#changes-to-gophish) * [更新日志](#changelog) * [问题与支持](#issues-and-support) * [未来目标](#future-goals) * [贡献](#contributing) # evilgophish 结合了 [evilginx3](https://github.com/kgretzky/evilginx2) 和 [GoPhish](https://github.com/gophish/gophish)。 ## 前置条件 您应该对如何使用 `GoPhish` 和 `evilginx3` 有基本的了解。 ## 免责声明 我不对任何滥用或非法使用本软件的行为负责。本软件仅适用于操作者已获得明确书面授权以执行社会工程学攻击的合法渗透测试或红队评估项目。 ## 为什么? 作为一名渗透测试人员或红队成员,您可能听说过 `evilginx3`,它是一个能够绕过 `双因素/多因素身份验证` 的代理中间人框架。这至少对我们来说非常有吸引力,但在尝试将其用于社会工程学活动时,存在一些痛点。 1. 缺乏跟踪功能 - `evilginx3` 不提供针对每个受害者的独立跟踪统计数据(例如打开邮件、点击链接等),这对于那些在社会工程学评估中需要/想要/付费获取这些统计数据的客户来说是个问题。 2. 不是一个完整的社会工程学工具包 - `evilginx3` 仅提供代理中间人功能,它不包含通过电子邮件/短信进行社会工程学活动所需的全部功能。例如,它不能向目标发送电子邮件,也没有提供此功能。 3. 没有图形用户界面 (GUI) - 我们真的需要进一步解释这一点吗?我们都喜欢 GUI,并且社会工程学活动的数据可视化是无价的。操作员通过查看数据的可视化表示,可以真正透彻地了解其社会工程学活动的成功与否。 ## 背景 在此设置中,`GoPhish` 用于发送电子邮件并为 `evilginx3` 活动统计数据提供仪表板,但它不用于任何落地页。您通过 `GoPhish` 发送的钓鱼链接将指向 `evilginx3` 的诱饵路径,并且 `evilginx3` 将用作落地页。这提供了使用 `evilginx3` 绕过 `2FA/MFA` 的能力,同时不会丢失那些宝贵的统计数据。通过我开发的一个本地 websocket/http 服务器提供了实时活动事件通知,并且包含来自 `evilginx3` 的 token/cookie 的完整可用 `JSON` 字符串会直接显示在 `GoPhish` 的图形界面(和动态流)中: ![new-dashboard](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/f0e1bd96e2171014.png) ## 基础设施架构 ![diagram](https://raw.githubusercontent.com/fin3ss3g0d/evilgophish/main/images/diagram.webp) - `evilginx3` 将监听可外部访问的地址上的 `443` 端口(或您在 `evilginx3` 配置中选择的任何端口) - `GoPhish` 将在本地监听 `8080` 和 `3333` 端口(`8080` 端口上的钓鱼服务器未被使用) - `Cloudflare Turnstile` 服务器将在本地监听 `80` 端口 ## setup.sh 提供了 `setup.sh` 来为您自动完成所需的配置。运行此脚本并提供正确的值后,您就可以开始使用了。以下是设置帮助信息: ``` Usage: ./setup - root domain - the root domain to be used for the campaign - subdomains - a space separated list of evilginx3 subdomains, can be one if only one - root domain bool - true or false to proxy root domain to evilginx3 - feed bool - true or false if you plan to use the live feed - rid replacement - replace the gophish default "rid" in phishing URLs with this value Example: ./setup.sh example.com "accounts myaccount" false true user_id ``` ## Cloudflare Turnstile 设置 `Cloudflare Turnstile` 集成已经取代了使用 `Apache2` 的重定向规则和 IP 黑名单。`Apache2` 方法依赖于预定义的重定向规则和 IP 黑名单。我们可能会遗漏某些最终检测到我们基础设施的用户代理、主机或 IP 地址。这通常是通过扫描钓鱼基础设施的机器人和自动化软件完成的。在撰写本文时,`Cloudflare Turnstile` 技术是防御机器人和验证真实用户访问您网站的最佳手段之一。 1. 创建一个 Cloudflare 账户 2. 在仪表板中选择 `Turnstile` 选项卡 3. 添加一个新站点,并使用您的钓鱼站点/活动的域名 4. 使用您自己的修改来编辑 `evilginx3/templates/forbidden.html` 和 `evilginx3/templates/turnstile.html` 文件 5. 启动 `evilginx3` 时,使用 `turnstile` 标志包含公钥/私钥,并用 `:` 分隔。例如: ``` ./evilginx3 -feed -g ../gophish/gophish.db -turnstile : ``` 博文请点击[这里](https://fin3ss3g0d.net/index.php/2024/04/08/evilgophishs-approach-to-advanced-bot-detection-with-cloudflare-turnstile/)。 ## Cloudflare Turnstile HTML 模板指南 如果我为 `Cloudflare Turnstile` 功能包含一个静态 HTML 页面,那么每个人的钓鱼基础设施都将拥有相同的页面,这将导致基于静态 HTML 代码的检测。*Go HTML 模板应运而生*。我在 `evilginx3/templates/turnstile.html` 中包含了一个入门模板作为准则**您需要修改此文件**。以下是关于模板代码如何设置的规则,不遵循这些规则很可能会导致 `Cloudflare Turnstile` 功能失效: 1. 您必须包含 `{{.FormActionURL}}`、`{{.ErrorMessage}}` 和 `{{.TurnstilePublicKey}}` 模板变量 2. 用于提交 `Turnstile` 验证挑战的表单 action URL 必须是 `{{.FormActionURL}}` 模板变量 3. `cf-turnstile` `div` 类的 `data-sitekey` 值必须是 `{{.TurnstilePublicKey}}` 模板变量 4. 您必须将模板保存在 `evilginx3/templates/turnstile.html` 5. 用于提交验证挑战表单的按钮,其 name 属性必须等于 `button` ## replace_rid.sh 如果您已经运行过一次 `setup.sh` 并且已经在整个项目中替换了默认的 `RId` 值,那么可以通过运行 `replace_rid.sh` 来再次替换 `RId` 值。 ``` Usage: ./replace_rid - previous rid - the previous rid value that was replaced - new rid - the new rid value to replace the previous Example: ./replace_rid.sh user_id client_id ``` ## 邮件活动设置 一旦运行了 `setup.sh`,接下来的步骤是: 1. 启动 `GoPhish` 并配置电子邮件模板、电子邮件发送配置文件和目标用户组 2. 启动 `evilginx3` 并配置 phishlet 和 lure(必须使用 `-g` 标志指定 `GoPhish` 的 `sqlite3` 数据库的完整路径) 3. 从 `GoPhish` 启动活动,并将着陆页 URL 设为您的 `evilginx3` phishlet 的诱饵路径 4. **盈利** ## 二维码生成器 `二维码生成器` 功能允许您生成二维码,以部署二维码社会工程学活动。以下是使用步骤: 1. 在编辑电子邮件 HTML 模板时,您现在可以包含 `{{.QR}}` 模板变量: ![qr-code-generator](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/5e85a7f5f3171016.png) 2. 在启动新活动时,输入二维码图像的尺寸: ![qr-campaign-example](https://raw.githubusercontent.com/fin3ss3g0d/evilgophish/main/images/qr-campaign-example.png) 3. 最终结果将类似于以下内容,但您可以调整尺寸以满足您的需求: ![qr-inbox-example.png](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/5b96486d5a171017.png) 4. **盈利** *请注意,目前此功能仅支持邮件活动和 HTML 邮件模板* 博文请点击[这里](https://fin3ss3g0d.net/index.php/2024/02/24/qr-code-phishing-with-evilgophish/)。 ## 短信活动设置 为了提供结合 `Twilio` 的 `SMS` 活动支持,对 `GoPhish` 进行了全面的重构。您的新 `evilgophish` 仪表板将如下所示: ![new-dashboard](https://raw.githubusercontent.com/fin3ss3g0d/evilgophish/main/images/new-dashboard.png) 运行 `setup.sh` 后,接下来的步骤是: 1. 配置 `SMS` 消息模板。在创建 `SMS` 消息模板时,您只能使用 `Text`(纯文本),并且不应包含跟踪链接,因为它会直接显示在 `SMS` 消息中。如下所示,将 `Envelope Sender` 和 `Subject` 留空: ![sms-message-template](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/3147742097171020.png) 2. 配置 `SMS Sending Profile`。输入您从 `Twilio` 获取的电话号码、`Account SID` 和 `Auth Token`: ![sms-sending-profile](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/ff66725fab171021.png) 3. 导入用户组。为了保持兼容性,`CSV` 模板值保持不变,因此请保持 `CSV` 列名不变,并将目标电话号码放入 `Email` 列中。请注意,`Twilio` 接受以下电话号码格式,因此它们必须是以下三种之一: ![twilio-number-formats](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/544e8b8233171023.png) 4. 启动 `evilginx3` 并配置 phishlet 和 lure(必须使用 `-g` 标志指定 `GoPhish` 的 `sqlite3` 数据库的完整路径) 5. 从 `GoPhish` 启动活动,并将着陆页 URL 设为您的 `evilginx3` phishlet 的诱饵路径 6. **盈利** 博文请点击[这里](https://fin3ss3g0d.net/index.php/2024/03/04/smishing-with-evilgophish/)。 ## 实时动态设置 实时活动事件通知由本地 websocket/http 服务器和实时动态应用程序处理。设置步骤如下: 1. 在运行 `setup.sh` 时,为 `feed bool` 选择 `true` 2. `cd` 进入 `evilfeed` 目录,并使用 `./evilfeed` 启动应用程序 3. 启动 `evilginx3` 时,提供 `-feed` 标志以启用动态功能。例如: `./evilginx3 -feed -g /opt/evilgophish/gophish/gophish.db` 4. 您可以在以下地址开始查看实时动态:`http://localhost:1337/`。动态仪表板将如下所示: ![live-feed](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/1f7804e48a171034.png) **重要提示** - 实时动态页面通过 `JavaScript` 挂钩 websocket 来获取事件,您**无需**刷新页面。如果您刷新页面,您将**丢失**截至当时的所有事件记录。 ## 关于 Phishlets 我将自行决定是否向此仓库添加 `phishlets`。不应期望我将创建 `phishlets` 作为此仓库的一部分,您需要自行创建您自己的。***请勿在此仓库中针对 PHISHLETS 提交 ISSUE*** ## 关于 Evilginx3 更新 在 `2023 年 5 月 10 日`,[Kuba Gretzky](https://github.com/kgretzky) 将 `evilginx` 从 `2.4.0` 版本更新到了 `3.0.0` 版本。您可以在[这里](https://breakdev.org/evilginx-3-0-evilginx-mastery/)找到关于该工具更改的详细博文。最值得注意的是,`phishlet` 文件格式的更改极有可能导致 `3.0.0` 之前版本的 `phishlets` 失效,必须进行重写。虽然重写它们可能需要花费一些精力,但新的 `phishlet` 文件格式带来了额外的好处。有关 `3.0.0` 版本 `phishlet` 格式的文档可以在这里找到:[Phishlet Format v3.0.0](https://help.evilginx.com/docs/phishlet-format)。旧格式的 `Phishlets` 将仍保留在此仓库的 `evilginx3/legacy_phishlets` 文件夹中。兼容 `3.0.0` 版本的 `Phishlets` 将存储在 `evilginx3/phishlets` 中。并非所有旧版 `phishlets` 都已转换为 `3.x.x` 格式,我会在时间允许的情况下继续更新它们! ## 安装说明 安装脚本已在 Ubuntu Focal/Jammy 上经过测试,并从源代码安装最新版本的 `Go`。根据您的 `Go` 环境以及您已安装的内容(例如,先安装了本项目组合的原始版本,然后又尝试安装本项目的修改版本),二进制文件可能会构建失败。它还会更改 DNS,以便 `evilginx3` 能够接管它。您应该了解这样做的潜在影响并仔细审查。强烈建议使用全新的环境,其他操作系统尚未经过测试。 ## 关于活动测试与跟踪的说明 在活动启动之前测试其跟踪功能是很常见的做法,我也鼓励您这样做,我只想给您留下一句警告。`evilginx3` 将为每个新受害者的浏览器创建一个 cookie 并建立会话。如果您继续在同一浏览器中测试多个活动和多个钓鱼链接,您将会打乱跟踪过程, `RId` 值是从请求中解析出来的,并在新会话开始时被设定。如果您这样做,您并没有真正模拟一个受害者,因为受害者永远无法访问除他们自己之外的任何其他钓鱼链接,更不用说这在实际活动中是绝不可能发生的。这是为了公平地警告您,请不要因此提出问题,因为您并没有按照工具原本的预期方式使用它。如果您想模拟一个新受害者,可以使用无痕模式打开新的浏览器/标签页来测试跟踪过程。 ## 对 GoPhish 的修改 `GoPhish` 绝不会用于您任何实际的钓鱼页面中,并且电子邮件标头已被剥离,因此无需担心其中的 IOC (失陷标示)。 1. 钓鱼 URL 中的默认 `rid` 字符串由操作员在 `setup.sh` 中自行选定 2. 新增了 `SMS` 活动支持 3. 为捕获到的 `evilginx3` 会话/token 新增了额外的 `Captured Session` 活动事件 ## 更新日志 有关自首次发布以来所做的更改,请参见 `CHANGELOG.md` 文件。 ## 问题与支持 我不保证一定会回复此公共版本仓库中的问题。您并没有赞助我或为项目的开发提供资金,因此不应期望获得支持。请[赞助我](https://github.com/sponsors/fin3ss3g0d)以获得更优先的支持。 ## 未来目标 - 增加 IP 黑名单和重定向规则 - 将旧版 phishlets 转换为 `evilginx` `3.x.x` 格式 - 添加更多 phishlets ## 贡献 我希望看到这个项目随着时间的推移而改进和成长。如果您有改进想法、新的重定向规则、需要拉黑的新 IP 地址/网段、phishlets 或其他建议,请提交 Pull Request。
标签:2FA绕过, adversary-in-the-middle, ESC8, Evilginx3, EVTX分析, GoPhish, MFA绕过, Object Callbacks, 中间人攻击, 会话劫持, 凭据窃取, 开源安全工具, 数据展示, 日志审计, 用户态脱钩, 社会工程学, 红队, 绕过双因素认证, 绕过多因素认证, 网络安全, 网络钓鱼, 逆向代理, 逆向工程平台, 钓鱼框架, 隐私保护