尧图网络科技YAOTU DIGITAL 获取报价
获取报价
首页 / 资讯中心 / 文章详情

Gophish+Evilginx3搭建企业钓鱼演练平台:合规、定制与实战排查

发布时间:2026/9/24 18:41:58

资讯中心
01
ARTICLE

Gophish+Evilginx3搭建企业钓鱼演练平台:合规、定制与实战排查

Gophish+Evilginx3搭建企业钓鱼演练平台:合规、定制与实战排查
我们团队最近把内部钓鱼演练平台重新搭了一遍核心组件换成了 Gophish 加 Evilginx3 这套组合做了不少深度定制也踩了不少坑。这篇文章不聊那些宣传话术直接讲我们在实际搭建和运营中的思路、参数、步骤和排查经验。这套东西做的是企业授权的安全意识演练不是教人做坏事整个前提是你必须拿到明确的书面授权在约定的范围内去做测试所有数据要按隐私规范处理。如果你没有这个条件下面的内容看看思路就好千万别乱套。Gophish 本身是一款开源钓鱼演练平台负责邮件的发送、落地页托管、活动编排和数据统计相当于整个演练的“指挥中枢”。Evilginx3 则是一个更底层的反向代理型工具它的价值不是发邮件而是让克隆出来的登录页在结构和交互上更接近真实站点。很多人一说到这一步脑子里想的都是“破解”“绕验证码”之类的事其实在企业红队演练里它的作用是提升模拟真实度让演练结果更可信——但前提仍然是只在授权范围内使用而且不能真的去收集员工之外的任何真实账号数据。这篇文章会把合规边界、平台安装、模板设计、邮件送达、数据统计、常见坑全部过一遍适合正在搭演练平台的安全工程师和红队成员参考。1. 内容整体设计与思路拆解1.1 钓鱼演练到底在解决什么问题很多公司做安全意识培训方式是发PPT、搞考试员工当时看完觉得“哦有道理”过两个星期收到一封伪装邮件照样点。原因很简单安全意识是没办法靠课堂考试量化的它必须在真实场景里被测试。钓鱼演练的价值就在这里。通过向员工发送模拟钓鱼邮件观察谁点开了链接、谁输入了账号密码、谁下载了附件可以量化出组织的“安全薄弱点”然后针对性地做培训。这不是为了抓典型批评人而是为了拿到基线数据让安全投入有方向。Gophish 这类工具之所以被广泛使用就是因为它把“发邮件—托管页面—记录行为—输出结果”这条链路做成了标准产品安全团队不需要自己写一套管理系统。但标准版 Gophish 有一个体验问题模板和页面太“模板化”员工见多了之后一眼就能认出这是演练邮件导致测试结果失真。这也是我们要做深度定制的核心原因——需要让模拟邮件更接近真实攻击才能测出真实水平。1.2 Gophish 与 Evilginx3 的定位为什么互补Gophish 的强项是“管理”它有用户分组、邮件模板、登陆页管理、活动统计、Web 控制台运营一个演练项目非常方便。它的弱项是“模拟真实度”尤其是落地页。系统自带的克隆功能会把目标站点的 HTML 抓下来但很多动态页面、登录跳转逻辑是抓不全的员工打开页面时一眼就能看出破绽。Evilginx3 的强项正好相反。它不是抓取静态 HTML而是用反向代理的方式把真实目标站点“转发”给访问者。用户访问的是我们搭建的模拟域名但看到的内容、跳转、界面都跟真实站点几乎一样。它甚至能模拟真实站点的会话流程这在红队演练中非常有用。放到实战里的组合方式是Gophish 负责发邮件和统计Evilginx3 负责承载高真实度的落地页。两层之间通过 URL 串联起来——Gophish 发出的邮件指向 Evilginx3 托管的页面员工点击后的行为回流到 Gophish 的统计中。这套结构既不牺牲管理效率又能显著提升模拟真实度。1.3 合规与授权所有定制的前提边界这一节放在开头是我必须提醒的。Evilginx3 这套东西一旦用在不该用的地方后果很严重。根据国内的相关法规未经授权获取计算机信息系统数据、冒充他人站点的行为都涉嫌违法。所以在我们团队有两条铁律第一演练对象只限本公司员工必须经过公司信息安全负责人和人事部门书面确认第二演练域名、IP、时间窗口、数据保存周期全部提前报备员工名单只能来自 HR 提供的内部通讯录。“反检测”这个词在安全圈容易引起误解。我们在演练里说的“反检测”不是绕过防火墙、杀毒软件、邮件网关的技术规避而是“怎么让模拟邮件和页面不像演练”——也就是提高模拟真实度让员工用对待真实威胁的方式去对待它。如果你把“反检测”理解成规避安全设备那已经偏离合规边界了。我们的做法是提前把演练域名加入安全团队白名单让邮件能正常送达同时也不会触发真正的安全告警。这个“白名单”本身就是授权流程的一部分不是绕过。2. 核心细节解析与实操要点2.1 Gophish 的组件结构与端口规划Gophish 启动后默认运行两个 Web 服务管理后台Admin默认监听3333端口需要登录后访问所有活动配置都在这里完成钓鱼服务Phishing Server默认监听80端口用来接收员工点击承载钓鱼页面和图片跟踪。发送邮件和数据库是内置模块不需要额外安装服务但数据库默认是 SQLite生产环境建议换成 MySQL 或 PostgreSQL尤其是当演练人数上千时SQLite 的并发写入会明显吃紧。端口规划上一个常见问题是演练机和办公网在同一网段3333 端口直接暴露在内网任何人都可以访问后台登录页。我们部署时用防火墙把 3333 只放开给安全团队的管理 IP80 端口也只对员工所在网段开放。如果你的公司有公网边界建议把演练机放在独立的 DMZ 区不要跟核心业务环境混在一起。2.2 邮件送达率的三个关键指标钓鱼演练最尴尬的事情是邮件发了没人收到演练没有效果。邮件送达率主要由三个因素决定SPF、DKIM、DMARC。SPF声明哪些 IP 允许发送你的域名邮件配置方式是在 DNS 里加一条 TXT 记录例如vspf1 ip4:203.0.113.10 -allDKIM对邮件签名收件方验证签名是否有效通常由邮件服务商提供公钥记录DMARC告诉收件方如何处理未通过校验的邮件建议演练期间先设为pnone否则容易被直接拒收。实际配置时我用的是独立模拟域名而不是拿公司主域名直接发。这样做的原因很实际如果演练域的 SPF/DKIM 配置有问题影响范围被限制在模拟域不会污染公司主域的信誉。模拟域的命名也要有讲究不能太像主域比如rnicrosoft.com这种太像的话会引发员工真实误报甚至触发外部机构的品牌保护投诉。我们一般用一个与公司业务无关的历史域名或者子域名。2.3 模板定制的关键变量替换与行为追踪Gophish 的邮件模板支持{{.FirstName}}、{{.LastName}}、{{.Email}}这样的变量发送时逐一替换成目标用户的真实信息。这个功能很好用但有个细节如果用户列表是从 CSV 导入的字段名映射必须严格对应否则变量不会被替换模板里会直接显示{{.FirstName}}的原文。邮件里的链接是核心行为追踪点。Gophish 会用{{.URL}}变量替换成每个用户独有的跟踪链接点击链接会被记录到数据库中再重定向到钓鱼页面。这里要特别注意不要在模板里写死 URL一定要用{{.URL}}否则拿不到点击数据。页面图片追踪也有类似机制。Gophish 会在页面顶部插入一个透明的跟踪像素邮箱客户端打开邮件时加载图片就记录一次“打开”。但现代邮件客户端默认不加载远程图片这个数据通常只是参考不能作为核心指标。2.4 数据隔离与隐私保护演练过程中产生的最敏感数据是“谁点了链接、谁输入了账号密码”。如果不做隔离这个数据流落到不当的人手里会变成内部工具。我们采取的做法是Gophish 的数据库单独存放在加密盘上Admin 后台采用二次认证登录导出演练结果时只保留部门级汇总数据个人明细数据在培训完成后 30 天内删除。这个周期是跟合规同事确认过的。3. 实操过程从零搭建一套内部演练环境3.1 安装 Gophish 与初始化安全设置Gophish 的安装比较简单。从 GitHub 仓库下载对应平台的压缩包解压后直接运行二进制文件。我第一次部署时用的是 Linux 服务器命令大致是这样wget https://github.com/gophish/gophish/releases/download/v0.12.1/gophish-v0.12.1-linux-64bit.zip unzip gophish-v0.12.1-linux-64bit.zip chmod x gophish启动后控制台会显示管理后台的临时密码样式类似[/] Starting Gophish... [/] Available at: https://127.0.0.1:3333 [/] Login with admin / 随机密码这里有个关键操作首次登录后立刻修改默认管理员密码。很多人忽略这一步默认密码是官方写在文档里的不换等于把后台大门敞开。还要同时修改 SSL 证书Gophish 默认使用自签名证书浏览器会告警建议用公司 CA 签发的证书或者用 Lets Encrypt 给演练域名签一张有效证书这样员工打开落地页时不会看到“不安全连接”的红色警告演练真实度也会高不少。3.2 配置发信通道发信通道的配置在“Sending Profiles”里。这里需要填 SMTP 服务器的地址、端口、发件人邮箱。我们用的是公司自有邮件系统搭建的测试通道配置类似服务器smtp.example.com端口465SSL 加密或587STARTTLS发件人security-noticeexample.com用户名与密码独立服务账号不要用个人邮箱配置完成后建议先发一封测试邮件到自己的邮箱确认能正常收到且不是进入垃圾箱。这里有一个坑很多公司邮件网关会把外部 SMTP 发来的邮件默认标记为外部邮件即使 SPF/DKIM 正确也可能被加上“外部邮件警告”。如果你的演练邮件被加了警告标签员工会本能地警惕影响演练真实性。我们的做法是在邮件网关里配置白名单或者使用公司内部的“营销邮件通道”来发演练邮件。3.3 设计一个合格的演练模板模板设计是整个演练能否成功的关键。我建议从简单的场景开始不要一上来就搞极端复杂的“金融转账”类场景。一个经典且有效的模板是“密码过期通知”。这类通知员工见过太多次几乎不会有警觉非常适合做基线测试。邮件文案可以是这样主题你的账号密码将在24小时后过期你好 {{.FirstName}},检测到你的账号密码将于明天 18:00 过期请尽快更新以保持正常访问。更新入口{{.URL}}请勿回复本邮件此邮箱无人值守。这个模板有几个细节值得注意主题里加上“24小时”制造紧迫感正文里不写真实系统名避免被老员工立刻识破“请勿回复”是为了减少员工的后续疑问。URL 使用{{.URL}}自动替换确保每个员工都有独立跟踪链接。落地页的设计也要配合。我们在落地页放了一个模拟的登录表单输入框和按钮尽量接近公司真实系统的风格。这里不用 Evilginx3 的场景可以先跳过后面单独说。表单提交后不要真的验证账号密码直接跳转到一个“服务维护中请稍后再试”的提示页这样员工即使输入了密码也只会以为自己遇到了系统维护不会立即意识到被骗。3.4 导入用户名单与分组策略用户管理是 Gophish 的一个高频使用功能。支持手动添加也支持 CSV 批量导入。CSV 格式大致是First Name,Last Name,Email,Position,Department 张三,李四,zhangsanexample.com,工程师,研发部导入后会自动生成一个“User Group”可以针对不同部门创建不同的组便于按部门统计演练结果。这里有一个容易踩的坑Gophish 默认会用邮箱地址作为唯一标识如果两个用户的邮箱重复导入可能会覆盖。导入前务必对 CSV 做去重否则演练数据会错乱。分组策略上我们通常第一轮只做“全公司抽样”比如每个部门抽 20% 的员工目的是拿到基线数据而不是一开始就给全员发。全员演练适合在基线数据出来之后做。3.5 启动演练与查看结果指标以上都准备好后创建 Campaign。关键配置项包括邮件模板、落地页、用户组、发送时间。发送时间我建议选工作日上午 10 点到 11 点之间这个时间段员工刚处理完早上的邮件注意力相对集中但又不会太防备打开邮件的概率更高。凌晨或下班后发更容易被忽略数据没有参考价值。演练启动后在“Dashboard”里可以看到实时数据。Gophish 默认统计四个维度Sent已发送Opened已打开邮件Clicked已点击链接Submitted Data已提交表单数据这里需要留意信息层级打开不等于点击点击不等于提交提交才是最严重的行为。我们做分析时更关注“点击率”和“提交率”的相对关系。如果点击率很高但提交率低说明员工警惕性还行如果两者都高说明那批员工的意识培训需要加强。3.6 引入 Evilginx3 作为高真实度落地页组件Gophish 默认的 Landing Page 适合做简单演练但涉及模拟公司真实 OA 或邮箱登录页时默认克隆会漏掉很多前端交互逻辑。这时候可以引入 Evilginx3 作为落地页托管层。Evilginx3 的工作思路可以通俗地理解成“中间代理”员工访问我们搭的模拟域名时Evilginx3 在后台把真实目标站点的内容拉取回来再原样呈现给员工。页面上的资源、字体、逻辑都是真实站点的员工很难察觉异常。但这里我必须强调一个边界在企业授权演练中Evilginx3 通常只用于“展示登录页长什么样”和“模拟会话流程”不是为了收集真实系统的账号密码。我们在部署时会在 Evilginx3 的配置里把转发目标指到一套专门为演练搭建的测试系统上而不是公司的真实认证服务器。这样既保证了模拟真实度又不会让任何真实账号凭证进入演练数据库。如果你没有条件搭建测试系统建议使用 Gophish 自带的落地页加模拟表单就够了不要为了“显得高级”去拿真实系统做中间人代理。这个风险不值得冒。3.7 演练完成后的数据导出与处理演练结束后第一步是把 Campaign 状态改成“Completed”停止继续发送。第二步是导出结果Gophish 支持导出 CSV里面包含每个员工的发送状态、打开时间、点击时间、提交的数据和 User-Agent 等信息。这里有一个细节导出的 CSV 如果包含员工提交的“密码”即使只是员工随手输入的模拟密码也属于敏感信息。导出时要先把“Submitted Data”字段脱敏或者只在内存中分析不要直接存到本地电脑。我们处理方式是导出后用 Python 脚本把密码字段全部替换成星号只保留用户名和提交时间用于统计分析。4. 常见问题与排查技巧实录4.1 邮件进垃圾箱的排查顺序这是出现频率最高的问题。排查顺序从前到后依次是检查 SPF 记录是否生效用dig TXT 你的模拟域名确认 DNS 记录已经生效注意有些 DNS 修改要等待 10 分钟到 2 小时检查 DKIM 签名用邮件头分析工具查看Authentication-Results字段确认dkimpass检查收件人邮箱的网关策略有些公司会对外部域名的邮件做严格过滤即使 SPF/DKIM 通过也会被拦这时就需要邮件网关管理员手动放行。另外还要检查发送频率。如果你一次性发送几千封邮件任何正常的邮件系统都会觉得你有问题。我们的做法是分批次发送每批控制在 100 人以内间隔 15 分钟以上模拟真实营销邮件的发送节奏。4.2 追踪数据异常为什么打开率为 0很多团队一上来就看到“Opened”是 0第一反应是平台出问题了。其实绝大多数原因是员工的邮箱客户端没有加载远程图片。Gophish 的“打开”追踪依赖在邮件里嵌入一个远程图片Outlook 默认设置是“不自动下载图片”所以打开率低是很正常的不用纠结。真正需要关注的是“点击率”这个数据是通过链接跳转记录的不依赖图片加载。如果点击率也是 0再检查模板里的链接是不是用了{{.URL}}变量或者检查 Campaign 的 URL 有没有被邮件网关改写。一些高级邮件网关会把邮件正文里的外部链接改成网关自己的跳转地址这会导致 Gophish 无法正确记录点击。4.3 落地页显示异常或被浏览器拦截Gophish 自带的克隆功能抓取的是目标站点首次请求时返回的 HTML很多页面是动态渲染的克隆下来后 JavaScript 逻辑不完整页面显示会错乱。解决办法一是改用 Simple 页面手工搭建一个更贴近实际的表单二是使用 Evilginx3 这类真实代理方案。浏览器拦截的问题更直接如果你使用的是未备案的海外域名或者域名被其他恶意活动波及浏览器会直接展示红色拦截页面。稳妥的做法是使用已备案的国内域名并配置有效的 HTTPS 证书。4.4 员工向安全团队举报了演练邮件怎么办这在演练运营中一定会发生。我们的处理方式是在演练方案里提前留一个“举报响应窗口”安全团队收到举报后首先确认这是否对应本次演练的域名和模板确认后答复员工“这是一个内部演练感谢你的警惕”并把员工标记为“高安全意识”。如果多次演练中该员工都进行了举报后续可以考虑把该员工从演练名单里移除。反过来如果员工没有举报而是直接点击并提交了密码后续要做的是把培训材料发给他而不是公开点名。写在最后做了几轮钓鱼演练之后我的体会是演练的真正价值不在“抓到多少人犯错”而是通过数据发现组织的安全流程漏洞。比如某部门点击率异常高可能是因为他们的工作性质决定了对邮件的依赖度高需要针对性地设计更谨慎的操作规范而不是简单归结为“意识差”。另外工具是次要的流程才是核心。无论 Gophish 还是 Evilginx3都是辅助手段真正重要的是授权边界、数据保护和后续的培训闭环。个人建议新手团队先不要碰 Evilginx3用 Gophish 标准功能做满三轮演练把模板定制、数据分析和员工沟通流程跑熟了再考虑引入更复杂的模拟组件。安全演练是一场长期的攻防拉练不是一次性的“抓人游戏”稳扎稳打比追求花活儿更重要。
02
RELATED NEWS

相关资讯

更多网站建设与数字化升级内容

03
WHY YAOTU

想打造同款高转化官网?

懂行业、懂生意,从建站到增长一站式陪跑

场景化定制

不做模板站,围绕你的业务场景量身设计,小众不撞款。

营销型架构

以转化目标组织内容与路径,让官网真正带来询盘。

全周期服务

设计、开发、运营、运维一体,上线只是开始。

免费获取你的建站方案

留下需求,专属顾问 24 小时内为你输出方案建议。