Secphish Logo
新一代安全演练平台

专业钓鱼邮件
安全演练平台

Secphish 是一款功能强大的钓鱼邮件模拟演练平台,帮助企业从人员安全意识、 技术防护能力等多个维度评估和提升整体安全水平。

立即登录 了解更多

核心功能

全方位钓鱼演练解决方案,助力企业安全建设

多样化钓鱼模板

支持自定义邮件模板与登录页,模拟真实钓鱼场景,支持多种钓鱼手法组合。

实时数据跟踪

完整的演练数据看板,实时追踪邮件发送、打开、点击、提交等关键指标。

AI 智能辅助

集成 AI 对话能力,智能生成钓鱼邮件内容,提供演练报告分析与建议。

灵活目标管理

支持按部门、组织架构导入目标成员,批量管理演练对象与分组。

详尽演练报告

演练结束后自动生成多维度报告,直观展示安全薄弱环节与改进建议。

企业级安全

支持多用户权限管理、WebAuthn 通行密钥认证、操作日志审计。

使用指南

更加安全、高并发、服务分离的现代化企业级钓鱼测试平台

0. 系统概述

SecPhish 是在 Gophish 基础上深度定制的企业级钓鱼测试平台,采用服务分离架构,由多个独立服务协作完成从管理、发件、追踪到分析的全流程。

服务架构

┌─────────────────────────────────────────────────────────────────────┐
│                       secphish (管理后台)                             │
│  端口 3333 │ Go Web UI + REST API │ MySQL CRUD │ Webhook │ AI Chat  │
└──────────────────────┬──────────────────────────────────────────────┘
                       │
         ┌─────────────┼─────────────┐
         ▼             ▼             ▼
┌──────────────┐ ┌────────────┐ ┌───────────────┐
│  listener    │ │ listener-  │ │ smtpd (内置   │
│  (事件监听)   │ │ api (API)  │ │ SMTP 服务器)   │
│  端口 8080   │ │  端口 8082 │ │  端口 25/465/587│
└──────────────┘ └────────────┘ └───────────────┘
         ▲
         │
┌────────┴────────┐  ┌─────────────────────┐
│ Cloudflare      │  │ MailPlatform        │
│ Worker (边缘节点)│  │ Redis + Python Worker│
│ 追踪/页面/提交   │  │ 异步高并发发信       │
└─────────────────┘  └─────────────────────┘

┌─────────────────────────────────────────────┐
│ ransom_simulator_listener                    │
│  勒索软件模拟器打包与监听服务                 │
│  端口 8081                                   │
└─────────────────────────────────────────────┘

各组件角色

组件目录功能
secphishsecphish/管理后台(Web UI + REST API),活动创建/管理/监控、用户管理、配置管理
listenerlistener/事件监听服务,处理追踪像素打开、链接点击、表单提交等钓鱼事件
listener-apilistener-api/Listener 的 API 代理层,提供事件写入接口
smtpd集成于 secphish内置 SMTP 服务器,支持 DKIM 签名、MX 自动投递、多端口监听
MailPlatformmailplatform/基于 Redis 队列的高并发异步发信系统,Python Worker + Postfix
ransom_simulator_listenerransom_simulator_listener/勒索软件模拟器打包与回调监听服务
Cloudflare Workerworker/边缘节点追踪/页面托管/表单转发
mail-qps-testmail-qps-test/临时邮箱系统(Cloudflare Workers + D1)
qrcodeqrcode/二维码生成 API(Cloudflare Workers)

1. 快速部署

1.1 前置条件

依赖版本要求说明
Go1.21+所有 Go 服务编译运行
MySQL5.7+主数据库(必须使用 utf8mb4 字符集)
Redis6.x+仅 MailPlatform 异步发信时需要
Node.js18+前端资源构建
Python3.8+仅 MailPlatform Worker 需要
Docker可选一键部署

1.2 数据库准备

CREATE DATABASE IF NOT EXISTS `secphish` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER IF NOT EXISTS 'secphish'@'%' IDENTIFIED BY 'your_password';
GRANT ALL PRIVILEGES ON `secphish`.* TO 'secphish'@'%';
FLUSH PRIVILEGES;

1.3 快速启动(Go Workspace)

项目使用 Go Workspace 管理多模块,根目录的 go.work 统一管理所有子模块。

# 从项目根目录启动 secphish 管理后台
cd secphish
go run secphish.go --config=config.json

# 启动 listener 事件监听(另一个终端)
cd listener
go run main.go --config=config.json

# 启动 listener-api API 代理(另一个终端)
cd listener-api
go run main.go --config=config.json

1.4 前端构建

cd secphish

# 安装依赖
npm install
# 或
yarn install

# 构建前端资源
gulp

# 开发模式(监听文件变化)
gulp watch

1.5 Docker Compose 部署

参见 mailplatform/docker-compose.yml(MailPlatform 全套件):

cd mailplatform
docker-compose up -d

1.6 编译独立二进制

cd secphish
go build -o secphish .
./secphish --config=config.json

# 交叉编译(Windows + Linux)
GOOS=linux GOARCH=amd64 go build -o secphish-linux .
GOOS=windows GOARCH=amd64 go build -o secphish.exe .

2. 配置说明

2.1 config.json 字段详解

{
  "admin_server": {
    "listen_url": "0.0.0.0:3333",       // 管理后台监听地址
    "use_tls": false,                     // 是否启用 HTTPS
    "cert_path": "gophish_admin.crt",    // TLS 证书路径
    "key_path": "gophish_admin.key",     // TLS 私钥路径
    "allowed_internal_hosts": [],        // 允许的内部主机(用于导入站点)
    "trusted_origins": [],               // 受信任的来源(CORS)
    "rp_id": ""                          // WebAuthn Relying Party ID
  },
  "phish_server": {
    "listen_url": "0.0.0.0:80",          // 钓鱼服务器监听地址(弃用,保留兼容)
    "use_tls": false,
    "cert_path": "",
    "key_path": ""
  },
  "db_name": "mysql",                    // 数据库类型(目前仅支持 mysql)
  "db_path": "user:pass@tcp(host:3306)/db?charset=utf8mb4&parseTime=True&loc=UTC",
  "db_sslca_path": "",                   // 数据库 SSL CA 证书路径(可选)
  "migrations_prefix": "db/db_",         // 数据库迁移文件前缀
  "contact_address": "",                 // 透明度反馈联系邮箱
  "logging": {
    "filename": "",                      // 日志文件路径(空=标准输出)
    "level": ""                          // 日志级别:info / warn / error / debug
  }
}

2.2 环境变量覆盖

环境变量覆盖配置项说明
SECPHISH_LISTEN_URLadmin_server.listen_url管理后台监听地址
SECPHISH_USE_TLSadmin_server.use_tls启用 TLS
SECPHISH_CERT_PATHadmin_server.cert_pathTLS 证书路径
SECPHISH_KEY_PATHadmin_server.key_pathTLS 私钥路径
DB_USER / DB_PASSWORD / DB_HOST / DB_DATABASEdb_path数据库连接信息覆盖
CONTACT_ADDRESScontact_address联系邮箱
MAILPLATFORM_ENABLEDmailplatform.enabled启用 MailPlatform 异步发信
MAILPLATFORM_REDIS_ADDRmailplatform.redis_addrRedis 地址
MAILPLATFORM_REDIS_PASSWORDmailplatform.redis_passwordRedis 密码

2.3 MailPlatform 配置(可选)

secphish/config.json 中增加以下配置以启用 MailPlatform 异步发信:

{
  "mailplatform": {
    "enabled": true,
    "redis_addr": "127.0.0.1:6379",
    "password": "",
    "redis_db": 0,
    "queue_key": "mail_send_queue"
  }
}

3. 管理员后台使用指南

管理员后台(secphish Web UI)提供完整的图形化操作界面,默认访问地址 http://your-server:3333,首次启动自动创建管理员账号(默认凭据见启动日志)。以下按导航菜单顺序对各功能模块进行说明。

3.1 仪表盘 (Dashboard)

访问路径: /

仪表盘展示全局统计概览,数据实时读取数据库:

  • 指标卡片 — 6 项核心指标:发送数、打开数、点击数、附件下载数、提交数、举报数
  • 成功率折线图 — 基于 AntV G2 的每日成功率趋势(支持近 7 天 / 30 天 / 全部时间切换)
  • 活动列表表格 — 列出最近活动的名称、状态(带彩色标签)、统计数据,支持排序与分页

3.2 目标组管理 (Groups)

访问路径: /groups

目标组用于将收件人按部门、项目或任意维度分组管理。

创建目标组:

  1. 点击 "New Group" 按钮
  2. 输入组名称(如 "IT 部门"、"Q3 全员演练")
  3. 添加目标成员:输入邮箱、姓名、职位、组织
  4. 点击 "Save Changes" 保存

批量导入目标:

  1. 在组详情页中,点击 "Bulk Import Targets"
  2. 按以下 CSV 格式粘贴或上传文件:
Email,FirstName,LastName,Position,Organization
zhangsan@company.com,张三,,工程师,公司A
lisi@company.com,李四,,经理,公司A
  1. 系统自动解析并导入目标成员(自动去重更新)

其他功能:

  • CSV 模板下载 — 下载标准 CSV 导入模板
  • 搜索 — 按组名称搜索过滤
  • 排序 — 按名称、成员数、修改日期排序
  • 编辑/删除 — 修改组名称和成员,或删除整个组

3.3 目标管理 (Targets)

访问路径: /targets

提供全局视角查看和管理所有目标成员。

  • 分页展示 — 可按页浏览所有目标(10/20/50/100 条每页)
  • 搜索过滤 — 防抖搜索邮箱、姓名、职位、组织
  • 行选择 — 多选目标后批量操作:添加到群组、创建新组、批量删除、导出 CSV

3.4 邮件模板管理 (Templates)

访问路径: /templates

邮件模板支持 HTML 富文本纯文本 (Plain Text) 两种格式,可在模板中注入变量实现个性化。

创建模板:

  1. 点击 "New Template" 按钮
  2. 输入模板名称(如 "安全验证通知")
  3. 输入邮件主题(如 🔐 账户安全验证通知
  4. 在编辑器中编写内容:
编辑器模式说明
富文本编辑器(wangEditor)可视化编辑,支持 {{.变量}} 自动补全
代码编辑器(Monaco)语法高亮,HTML/JS/JSON 编辑,主题切换
  1. 可选:上传附件(支持 HTML、文本、日历 .ics、Office 文档等)
  2. 开启/关闭邮件追踪开关
  3. 点击 "Save Changes" 保存

导入 EML 文件:

  1. 点击 "Import Email" 按钮
  2. 上传 .eml 格式邮件文件
  3. 系统自动解析 Subject、HTML、Text 并填充到编辑器中(链接自动转换为 {{.URL}} 变量)

模板操作:预览、复制、删除。

3.5 钓鱼页面管理 (Landing Pages)

访问路径: /pages

钓鱼页面是目标点击链接后看到的 HTML 页面。

创建页面:

  1. 点击 "New Page" 按钮
  2. 输入页面名称(如 "Office 365 登录页")
  3. 在编辑器中编写页面代码(支持富文本 / Monaco 代码编辑器)
  4. 设置 redirect_url — 提交表单后跳转的目标地址(建议设为真实官网)
  5. 开启 capture_credentials — 捕获用户提交的输入数据
  6. 开启 capture_passwords — 捕获密码字段(需配合表单 type=password
  7. 点击 "Save Changes" 保存

克隆已有网站:

  1. 点击 "Import Site" 按钮
  2. 输入目标 URL(如 https://login.office.com
  3. 系统自动抓取并克隆前端 HTML 到编辑器中

建议: 克隆后的页面可能需要手动调整图片、CSS 等静态资源的引用路径。也可以使用 "Clone Site" 功能复制现有页面进行修改。

3.6 发信配置 (SMTP / Sending Profiles)

访问路径: /smtp

管理用于发送钓鱼邮件的外部 SMTP 服务器配置。

创建发信配置:

  1. 点击 "New Profile" 按钮
  2. 输入配置名称
  3. 选择接口类型:
接口类型默认端口加密方式适用场景
SMTP25无(明文)内部邮件服务器、开发测试
STARTTLS587升级式 TLS大多数邮件服务商
SSL465隐式 SSL/TLSQQ 邮箱企业版等
MQ消息队列发信配置级多节点消息队列异步发送
  1. 输入 SMTP 服务器地址和端口
  2. 输入认证用户名和密码
  3. 设置发件人地址(如 安全中心
  4. 可选:添加自定义邮件头部(Key-Value)、忽略证书错误
  5. 点击 "Save Changes" 保存

MQ 模式说明:当接口类型选择 MQ 时,系统使用发信配置级消息队列模式:创建发信配置时选择接口类型为 mq,系统自动为该配置关联 Redis 节点,发信时遍历该配置关联的所有 MQ 节点,为每封邮件生成完整 MIME 消息并序列化,推送至每个节点的 Redis 队列。

测试连接:创建后可在列表页点击 "Send Test Email" 验证配置是否正确,点击 "Copy" 可复制现有配置快速创建新配置。

3.7 邮件域名管理 (Mail Domains)

访问路径: 管理后台 → Mail Domains

管理发信域名,系统会自动生成 DKIM 密钥对和 DNS 记录建议。

添加域名:

  1. 输入域名(如 phish.company.com
  2. 系统自动生成 DKIM 公钥/私钥对
  3. 复制建议的 SPF、DKIM、DMARC 记录到 DNS 解析商
  4. 添加域名下的邮箱账号用于发信

推荐的 DNS 记录:

; SPF 记录 — 授权发信服务器
phish.company.com.  IN  TXT  "v=spf1 mx include:_spf.phish.company.com ~all"

; DKIM 记录 — 邮件签名验证
default._domainkey.phish.company.com.  IN  TXT  "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC..."

; DMARC 记录 — 邮件认证策略
_dmarc.phish.company.com.  IN  TXT  "v=DMARC1; p=quarantine; rua=mailto:dmarc@phish.company.com"

3.8 邮箱账号管理 (Mail Accounts)

访问路径: 管理后台 → Mail Accounts(在域名详情页中管理)

管理发信域名下的邮箱账号,用于 SMTP 认证和发件人地址设置。

添加邮箱账号:进入域名详情页 → 点击 "Add Account" → 输入邮箱地址和显示名称 → 设置 SMTP 认证密码。

3.9 内置 SMTP 服务管理

访问路径: 管理后台 → SMTP Servers

内置 SMTP 服务器集成在 secphish 中,无需外部 MTA 即可直接投递。

配置步骤:

  1. 在 "Mail Domains" 添加发信域名
  2. 系统自动生成 DKIM 密钥对,将 DNS 记录配置到域名解析商
  3. 创建 SMTP 服务实例:设置监听地址(如 0.0.0.0:25),关联已配置的域名
  4. 启动服务:点击 "Start" 按钮(或通过 REST API /api/smtp_servers/{id}/start
  5. 在活动的发信配置中选择该内置 SMTP 服务
  6. 系统自动查询目标域名的 MX 记录并执行投递
特性说明
多端口监听25(明文)/ 465(隐式 TLS)/ 587(STARTTLS)
DKIM 签名从域名配置读取 DKIM 私钥,自动签名
MX 自动投递net.LookupMX() 查询目标域名 MX 记录
备用 MX 故障转移按 MX 优先级排序,依次尝试
STARTTLS自动检测对端 SMTP 服务器 STARTTLS 支持

3.10 收件配置 (IMAP / Receiving Profiles)

访问路径: /imap

配置 IMAP 收件箱监控,用于自动检测退信和被举报的邮件。

创建收件配置:

  1. 点击 "New Profile" 按钮
  2. 输入配置名称
  3. 输入 IMAP 服务器地址和端口(通常为 993)
  4. 输入邮箱账号和密码
  5. 高级设置(可选):文件夹、轮询间隔、限制域名、删除举报邮件
  6. 点击 "Validate" 验证连接是否成功
  7. 保存配置

作用: secphish 后台 IMAP Monitor 协程会定期轮询这些收件箱,自动将被退信的目标标记为 "Error Sending",将被举报标记为 "Email Reported"。

3.11 Webhook 管理

访问路径: /webhooks(需要 ModifySystem 权限)

配置 Webhook 将事件实时推送到第三方系统(如 SIEM、SOAR、即时通讯机器人)。

创建 Webhook:

  1. 点击 "New Webhook" 按钮
  2. 输入名称和回调 URL
  3. 设置 Secret(用于 HMAC-SHA256 签名验证)
  4. 选择需要监听的事件类型:campaign(活动状态变更)、result(目标行为更新)
  5. 设置最小通知间隔(防止频繁触发)
  6. 开启/关闭激活状态
  7. 点击 "Save Changes" 保存

验证端点:在列表页点击 "Validate" 发送测试事件验证回调地址是否可达,系统发送测试 Webhook,回调端可验证 X-SecPhish-Signature Header。

3.12 用户与角色管理 (Users)

访问路径: /users(需要 ModifySystem 权限)

管理平台的用户账号和权限。

角色权限范围说明
admin全部权限系统管理员,可执行所有操作
user管理自己的活动普通用户,可创建和管理自己的活动与目标组

权限说明:

  • 只读用户: 创建具有 view_only 权限的用户,只能查看仪表盘和活动结果,不可修改任何配置
  • 普通用户: 只能看到自己创建的活动,无法查看其他用户的数据
  • 管理员: 查看和管理所有数据

3.13 AI 模型管理 (AI Models)

访问路径: /models(仅 admin 角色可见)

统一管理钓鱼邮件生成所需的 AI 模型(如 DeepSeek、GPT 等),API Key 加密存储。

创建 AI 模型:

  1. 点击 "New Model" 按钮
  2. 输入模型名称(如 deepseek-chat
  3. 选择供应商(如 deepseekopenaicustom
  4. 输入 API 地址(如 https://api.deepseek.com/v1/chat/completions
  5. 输入 API Key(系统使用 AES-256 加密存储,永不明文展示)
  6. 填写模型描述(可选)
  7. 点击 "Save" 保存

安全说明:API Key 在存入数据库前使用 AES-256-GCM 加密,前端仅展示掩码(sk-****...****ab12),有效防止密钥泄露。

3.14 AI 助手对话 (AI Chat)

访问路径: /ai_chat

基于 AI 模型的智能对话助手,专为钓鱼测试场景设计。

主要功能:

  • SSE 流式对话 — 实时流式输出 AI 回复,无需等待完整响应
  • Function Calling — AI 可调用内置工具执行操作(如创建模板、查询活动)
  • 深度思考 — 开启后 AI 会展示推理过程,让生成内容更可控
  • 文件上传 — 支持 CSV/HTML/TXT 格式(最大 10MB),可用于上传目标列表等
  • 历史会话 — 对话历史持久化保存,可随时回溯

使用场景:辅助编写钓鱼邮件模板、分析活动结果数据、生成目标话术和诱饵文案、解释钓鱼测试报告。

3.15 系统设置 (Settings)

访问路径: /settings

  • 修改密码 — 更改当前登录用户的密码
  • 重置 API Key — 重新生成 API 访问密钥(旧密钥立即失效)

3.16 密码修改 (首次登录)

访问路径: /reset_password

首次登录或管理员强制要求修改密码时自动跳转至此页面。

3.17 WebAuthn 通行密钥认证

访问路径: /login → "Create a passkey"

SecPhish 支持 FIDO2 WebAuthn 通行密钥认证,提供比密码更强的防钓鱼身份验证。

配置步骤:

  1. 使用管理员账号登录系统
  2. 在登录页面点击 "Create a passkey" 按钮
  3. 浏览器弹出系统/硬件安全密钥创建提示(支持 Windows Hello、Touch ID、YubiKey 等)
  4. 创建成功后,下次登录可直接使用通行密钥进行无密码登录
特性说明
无密码登录通过生物识别或硬件密钥验证身份
防钓鱼WebAuthn 绑定站点 Origin,无法在其他站点冒用
多密钥支持一个账号可绑定多个通行密钥
自动注册登录时自动检测浏览器 WebAuthn 支持

登录流程: 访问 /login 页面 → 输入用户名和密码 → 点击 "Create a passkey" → 浏览器弹出创建提示 → 验证生物特征或插入硬件密钥 → 密钥创建完成。

3.18 成员画像 (Target Profile)

访问路径: /targets → 点击目标成员的 "Profile" 按钮

成员画像功能提供单个目标的完整安全行为分析,综合评估其安全意识水平。

画像包含内容:

板块说明
基本信息邮箱、姓名、职位、所属组织
所属群组该成员所属的所有活动目标组列表
行为统计打开邮件数、点击链接数、附件下载数、提交数据数、举报反馈数
安全意识评分基于行为的 0-10 分量化评分
安全等级优 / 良 / 差 / 极差 / 主机失陷 五个等级
参与活动该成员参与过的所有活动列表及每个活动的达成状态

评分规则:

行为分值影响说明
基础分10 分满分起始
举报回信+1 分安全意识好的表现
邮件打开-1 分存在钓鱼邮件打开行为
访问链接-2 分存在钓鱼链接点击行为
下载附件-3 分存在附件下载行为
提交数据-3 分存在表单提交行为
同一活动同时下载+提交-7 分组合惩罚,两个高危行为同时出现

等级划分:

分数范围等级含义
9 - 10安全意识良好
6 - 8有一定安全意识
3 - 5安全意识不足
1 - 2极差安全意识严重缺乏
0主机失陷高危行为全部触发

提示: 成员画像数据通过 REST API /api/targets/{id}/profile 获取,支持集成到外部安全评分系统。

3.19 报表管理 (Reports)

访问路径: /reports

报表功能支持将活动结果的统计分析以精美 HTML 文档形式导出和归档。

生成报表:

  1. 进入报表管理页面
  2. 点击 "Generate Report" 按钮
  3. 选择一个或多个已完成的活动
  4. 选择报表类型:单活动报表 / 合并报表
  5. 系统自动生成包含以下内容的 HTML 报表:总体统计概览(六项指标卡片及百分比进度条)、每个活动的详细统计数据、每个目标成员的结果详情表格、紫色渐变主题的现代报表样式(支持打印)

管理报表:查看、下载为独立 HTML 文件、多选批量删除。

3.20 秘密扫描 (Secret Scan)

访问路径: 管理后台 → Secret Scan 页面

内置秘密扫描功能,支持对多个 Git 仓库或本地目录进行敏感信息检测。

配置扫描目标:

  1. 点击 "Add New" 按钮
  2. 输入仓库名称
  3. 选择类型:Git 仓库 / 本地目录
  4. 输入 Token(可选)
  5. 保存配置

执行扫描与结果:配置保存后自动触发扫描,扫描结果展示检测到的敏感信息(文件路径、密钥/凭据类型、提交记录、扫描状态),支持重新扫描。

作用: 帮助安全团队发现可能在 Git 仓库中泄露的 API Key、密码、证书等敏感信息。

3.21 系统配置管理 (System Config)

访问路径: 管理后台 → Config 页面(仅 admin 角色可见,需要 ModifySystem 权限)

集中管理系统全局配置参数,无需手动编辑 config.json 文件。

参数类型说明
admin_server.listen_urlstring管理后台监听地址
admin_server.use_tlsbool是否启用 HTTPS
admin_server.cert_pathstringTLS 证书路径
admin_server.key_pathstringTLS 私钥路径
db_namestring数据库类型
db_pathstring数据库连接 DSN
contact_addressstring联系邮箱地址
logging.filenamestring日志文件路径
logging.levelstring日志级别

操作方式:进入 Config 配置页面 → 修改需要变更的配置项 → 点击 "Save" 保存 → 重启 secphish 服务使配置生效。


4. SMTP 发信配置详解

4.1 三种接口类型对比

接口类型默认端口加密方式适用场景
SMTP25无(明文)内部邮件服务器、开发测试环境
STARTTLS587升级式 TLS大多数邮件服务商(Gmail/Outlook/QQ)
SSL465隐式 SSL/TLS部分邮件服务商(如 QQ 邮箱企业版)
MQ消息队列发信配置级多节点异步发送

4.2 常见邮件服务商配置

服务商接口类型服务器地址端口说明
GmailSTARTTLSsmtp.gmail.com587需开启 "App Passwords"
Outlook / Office 365STARTTLSsmtp.office365.com587需应用密码或 OAuth
QQ 邮箱SSLsmtp.qq.com465需开启 SMTP 服务并使用授权码
阿里云企业邮STARTTLSsmtp.mxhichina.com587企业邮箱 SMTP
自建 PostfixSTARTTLS服务器 IP587自建邮件服务器

4.3 内置 SMTP 发送配置(smtpd)

内置 SMTP 服务器集成在 secphish 中,无需外部 MTA 即可直接投递。

配置步骤:

  1. 在管理后台进入 "Mail Domains" 添加发信域名
  2. 系统自动生成 DKIM 密钥对,将 DNS 记录配置到域名解析商
  3. 创建 SMTP 服务实例:设置监听地址(如 0.0.0.0:25),关联已配置的域名
  4. 在活动发信配置中选择使用该内置 SMTP 服务
  5. 系统自动查询目标域名的 MX 记录并执行投递

优势: 内置 DKIM 签名、MX 自动投递、备用 MX 故障转移、STARTTLS 加密。

4.4 MailPlatform 异步发送配置

基于 Redis 队列的高并发发信方案。

架构组件:

  1. Redis — 消息队列(存储待发送邮件 JSON)
  2. secphish MailPlatformMailer — 构建 MIME 消息并推入队列
  3. Python Worker — 从 Redis 消费并提交给 Postfix 发送
  4. Postfix MTA — 实际执行 SMTP 投递

配置步骤:

  1. 启动 Redis 服务(Docker:docker run -d -p 6379:6379 redis:alpine
  2. 在 secphish config.json 中启用 MailPlatform
  3. 启动 Python Worker
  4. 在管理后台创建活动时,选择任意 SMTP 发信配置即可自动使用 MailPlatform 异步发送
# config.json 中启用 MailPlatform
{
  "mailplatform": {
    "enabled": true,
    "redis_addr": "127.0.0.1:6379",
    "password": "",
    "redis_db": 0,
    "queue_key": "mail_send_queue"
  }
}

# 启动 Python Worker
cd mailplatform/worker
pip install -r requirements.txt
export MAILPLATFORM_REDIS_HOST=localhost
export MAILPLATFORM_SMTP_MODE=starttls
export MAILPLATFORM_SMTP_HOST=127.0.0.1
export MAILPLATFORM_SMTP_PORT=587
python send_worker.py

5. IMAP 收信配置详解

5.1 收信配置的作用

IMAP 收件箱监控用于自动检测两种关键事件:

事件检测方式自动处理
退信 (Bounce)检测发往已知目标的退信邮件将 Result.Status 更新为 "Error Sending"
举报 (Report)检测用户举报邮件将 Result.Status 更新为 "Email Reported"

5.2 常见邮件服务商 IMAP 配置

服务商服务器地址端口加密说明
Gmailimap.gmail.com993SSL需开启 IMAP 访问和 App Passwords
Outlookoutlook.office365.com993SSL需应用密码
QQ 邮箱imap.qq.com993SSL需开启 IMAP 服务并使用授权码
自建邮箱服务器 IP993SSL自建 Dovecot 等 IMAP 服务器

5.3 配置与排错

在管理后台验证 IMAP 连接:

  1. 在 IMAP 配置页面点击 "Validate"
  2. 成功时显示 "Connection successful"
  3. 失败时检查:服务器地址和端口是否正确、账号密码是否正确、IMAP 服务是否已开启、是否需要 SSL/TLS 加密、防火墙是否放行端口

6. 钓鱼页面设计指南

6.1 HTML 页面编写规范

  • 表单提交 — 表单须使用 method='post',提交至当前页面路径(action="" 或省略)
  • 字段捕获 — 所有 标签的内容(除 type=submittype=imagetype=button 外)均会被捕获
  • 密码捕获type=password 的字段需同时开启 capture_passwords 选项
  • 隐藏字段 — 可在页面中嵌入 {{.RId}} 变量到隐藏字段,确保表单提交时携带 rid

示例表单:

6.2 克隆网站注意事项

  • 静态资源 — 克隆的网站可能引用外部 CSS/JS/图片,确保目标资源可公开访问
  • 相对路径 — 克隆后 HTML 中的相对路径(/css/style.css)可能需要改为绝对路径
  • 交互脚本 — 复杂的 JavaScript 交互在克隆后可能不完整,需手动调整
  • HTTPS 混合内容 — 若钓鱼页面通过 HTTPS 提供,确保所有引用的外部资源也使用 HTTPS

6.3 重定向目标设置

  • 表单提交后,用户会被 302 重定向到 redirect_url
  • 建议设为真实目标网站的登录页(如 https://www.office.com
  • 这可以让演练参与者不易察觉已提交凭证,符合真实攻击场景

7. 活动全生命周期操作指南

7.1 活动状态流转

Draft (草稿) ──(启动)──► In Progress (进行中) │ ┌────────┴────────┐ ▼ ▼ Emails Sent (定时截止自动完成) (邮件已发) │ │ ▼ └──► Completed (已完成)
状态说明
Draft活动已创建,尚未发送邮件。可编辑所有配置
In Progress活动已启动,邮件正在发送或已发送完毕。不可编辑配置
Emails Sent所有邮件投递完成,正在等待目标交互事件
Completed活动已结束(手动完成或到达 send_by_date),不再接收新事件

7.2 创建活动的完整步骤

前置准备(按此顺序逐一完成):

  1. 创建目标组/groups → 添加目标成员
  2. 创建邮件模板/templates → 编写邮件内容与附件
  3. 创建钓鱼页面/pages → 设计钓鱼表单并配置重定向
  4. 配置发信方式/smtp → 添加 SMTP 配置(或使用内置 SMTP / MailPlatform)

创建活动:

  1. 进入 /campaigns,点击 "New Campaign"
  2. 填写活动名称
  3. 选择邮件模板(下拉选择已创建的模板)
  4. 选择钓鱼页面(下拉选择已创建的页面)
  5. 选择发信配置(下拉选择已创建的 SMTP 配置)
  6. 选择目标组(可多选)
  7. 填写钓鱼 URL(指向 listener/listener-api 服务或 Cloudflare Worker 的地址)
  8. 设置定时发送时间(Launch Date)和活动截止时间(Send By Date
  9. 可选:URL 覆盖(为不同组设置不同钓鱼 URL)
  10. 点击 "Save Changes" 保存

7.3 活动列表页操作

访问路径: /campaigns

  • 搜索筛选 — 按名称或状态筛选活动
  • 状态标签 — 彩色状态标签卡片,悬浮显示统计 Tooltip
  • 指标列 — 6 项指标(发送/打开/点击/提交/附件下载/举报),带图标和颜色区分
  • 排序 — 按名称、日期、各项指标排序
  • 分页 — 可调分页(10/20/50/100)
  • 行选择 — 多选后可批量完成/批量删除
  • 克隆 — 复制已有活动的所有配置创建新活动
  • 发送测试邮件 — 在活动列表中直接发送测试邮件
  • CSV 导出 — 导出选中活动的完整结果

7.4 启动与监控活动

  • 立即启动 — 创建时 Launch Date 设为当前时间,保存后立即发送
  • 定时启动 — 设置未来的 Launch Date,系统到时间自动发送
  • 克隆活动 — 在活动列表点击 "Clone" 可复制已有活动的所有配置创建新活动
  • 实时监控 — 活动启动后点击活动名称进入结果页,查看目标的实时行为

7.5 手动完成活动

  • 在活动结果页点击 "Complete Campaign" 按钮
  • 活动状态变为 "Completed",停止监听新事件
  • 已完成的活动不可再次启动

7.6 结果导出

  • 在活动列表选中需要导出的活动(一个或多个)
  • 点击 "Export" 按钮
  • 下载 CSV 格式的结果文件,包含字段:Email, Name, Position, Organization, Status, IP, Latitude, Longitude, Send Date, Latest Event, Campaign Name
Email,Name,Position,Organization,Status,IP,Latitude,Longitude,Send Date,Latest Event,Campaign Name
zhangsan@company.com,张三,工程师,公司A,Clicked Link,203.0.113.5,39.9042,116.4074,2026-06-25T14:00:05Z,2026-06-25T14:05:12Z,2026-06 安全演练

8. 结果分析与报告解读

8.1 各状态含义

状态图标含义触发条件
Sent📤邮件已发送成功邮件被 SMTP 服务器受理
Email Opened👁️邮件已被打开用户加载了邮件中的追踪像素图片
Clicked Link🔗链接已被点击用户访问了钓鱼链接
Submitted Data📝表单数据已被提交用户在钓鱼页面提交了表单
Error Sending邮件发送失败SMTP 服务器退信、地址不存在等
Email Reported🚨邮件被举报用户通过举报渠道标记了该邮件

8.2 统计数据解读

在活动结果页的 Summary 面板中查看关键指标:

指标计算方式说明
Total目标总数该活动关联的所有目标成员数量
Sent成功发送数占 Total 的百分比反映投递成功率
Opened打开邮件数占 Sent 的百分比反映邮件吸引力
Clicked点击链接数占 Opened 的百分比反映钓鱼诱导效果
Submitted Data提交表单数占 Clicked 的百分比反映表单可信度
Error发送失败数占 Total 的百分比反映地址质量

典型行业基准值:打开率 20-30% / 点击率 30-50% / 提交率 40-60%

8.3 地理位置查看

  • 点击列表中的 IP 地址可查看经度/纬度坐标
  • 数据来源:MaxMind GeoLite2 数据库(需定期更新)
  • 坐标可用于在地图上可视化展示受影响用户分布

8.4 事件时间线

  • 点击单个目标可查看其完整事件时间线
  • 时间线按时间顺序展示:发送 → 打开 → 点击 → 提交 → 举报
  • 每个事件记录精确到秒的时间戳和详情信息
  • 结果详情页还提供 AntV G2 事件时间线图表

8.5 设备类型检测

  • 自动检测受害者设备类型:Desktop / Tablet / Mobile
  • 在结果列表中展示设备类型信息

9. 邮件模板与变量配置

9.1 基础变量

变量属性说明
{{.From}}发件人发件人显示名称
{{.URL}}钓鱼链接完整钓鱼链接,自动追加收件人 rid 参数
{{.Tracker}}邮件追踪 标签形式的追踪像素
{{.TrackingURL}}追踪 URL追踪像素的完整 URL 地址
{{.RId}}收件人 ID每个收件人的唯一随机标识符(7位字母数字)
{{.BaseURL}}基础 URL去除路径和查询参数后的基础 URL
{{.QrCode}}二维码包含钓鱼链接的二维码 PNG 图片,以 Base64 Data URI 格式嵌入

9.2 收件人变量

变量属性说明
{{.Email}}邮箱收件人邮箱地址
{{.Name}}姓名收件人姓名
{{.Position}}职位收件人职位
{{.Organization}}组织/公司收件人所属组织名称

9.3 附件模板变量

支持的文件类型:

  • 纯文本文件(.txt)— 直接替换 {{.xxx}} 变量
  • HTML 文件(.html)— 替换标签中的变量
  • 日历文件(.ics)— 替换 DESCRIPTION/LOCATION 中的变量
  • Office 文档(.docx/.xlsx/.pptx)— 自动解压 ZIP,替换内部 XML 中的变量

变量使用建议:

场景推荐使用的变量
附件内容个性化{{.Name}}{{.Position}}{{.Email}}
嵌入钓鱼链接{{.URL}}
嵌入追踪像素/链接{{.Tracker}}{{.TrackingURL}}
构建自定义追踪链接{{.BaseURL}} + 自定义路径 + ?rid={{.RId}}
发件人伪装{{.From}}
职位信息{{.Position}}

9.4 外站二维码引用

QR Code

10. Cloudflare Worker 配置指南

10.1 追踪与转发 Worker

配置文件: worker/index.js

关键配置项:

// 修改 API_BASE 指向你的 Listener/Listener-API 服务地址
const API_BASE = 'https://listener.your-domain.com';

功能路由:

路由方法功能
/track?rid=xxxGET返回 1x1 透明追踪像素,异步调用 POST /api/track
/?rid=xxxGET返回钓鱼页面 HTML,异步调用 POST /api/click
/POST转发表单提交数据到 POST /api/submit

RID 校验机制:

  • 每个请求校验 rid 在数据库中是否存在
  • 不存在 → 返回 404 页面
  • 活动已结束 → 返回 410 页面
  • 可在域名根目录放置 404.htmlemailTips.html 自定义提示页面

部署步骤:

  1. 登录 Cloudflare 控制台,创建新的 Worker
  2. worker/index.js 代码粘贴并保存发布
  3. 在代码顶部修改 API_BASE 指向你的 listener/listener-api 服务地址
  4. (可选)在域名根目录放置 404.htmlemailTips.html 静态页面

10.2 临时邮箱系统

配置文件: mail-qps-test/_worker.js

基于 Cloudflare Workers + D1 数据库构建的无服务器临时邮箱系统,支持零依赖 MIME 解析、现代化三栏式 Web UI。

部署步骤:

  1. 在 Cloudflare 控制台创建 D1 数据库,执行 readme.md 中的 SQL 建表语句
  2. 创建 Worker,将 mail-qps-test/_worker.js 代码粘贴并发布
  3. 配置 AUTH_TOKEN 环境变量,绑定 D1 数据库(变量名称 DB
  4. 在 Email Routing 中设置路由规则,将邮件转发到该 Worker

10.3 二维码生成 API

配置文件: qrcode/_worker.js

基于 Cloudflare Workers 的二维码生成服务,支持 7 种样式和中心 Logo,响应缓存 7 天。

Web UIhttps://your-worker-domain.com/

REST API 调用方式:

GET https://your-worker-domain.com/qr?text=hello&style=0&cellSize=10&margin=2&errorCorrectionLevel=H

参数说明:

参数必填默认值说明
text二维码内容文本
style0样式 0-6(标准/液态/圆点/圆角/菱形/胶囊/三角)
cellSize8单元格大小(像素)
margin2边距(单元格数)
errorCorrectionLevelM容错级别 L/M/Q/H
logo中心 Logo 图片 URL

部署步骤:

  1. 登录 Cloudflare 控制台,创建新的 Worker
  2. qrcode/_worker.js 代码粘贴并保存发布
  3. (可选)绑定自定义域名,通过 https://your-domain.com/qr?text=xxx 调用

11. 勒索软件模拟器

ransom_simulator_listener 是基于 Go 语言构建的勒索软件模拟器打包与监听服务,与 secphish 平台深度集成。

11.1 功能概述

  • 🎯 钓鱼页面托管 — 用户访问 /?rid=xxx 进入打包页面,记录 "Clicked Link" 事件
  • 🔑 远程密钥获取 — 通过 POST /api/fetch-keys 调用远程 API 获取 UUID + RSA 公/私钥对
  • 📦 一键打包编译POST /api/pack 自动获取密钥、注入回调地址、编译 Windows EXE
  • 📥 文件下载 — 打包完成后直接返回 EXE 文件流,记录 "File Download" 事件
  • 📡 回调监听 — 受害者运行 EXE 后回传 UUID,自动记录 "Submitted Data" 事件
  • 🔄 UUID ↔ RID 映射 — 内存映射实现 UUID 到 Result 的反向查找

11.2 架构与工作流程

┌──────────────────────────────────────────────────────────────────────┐
│                       Ransom Simulator Listener                      │
│  HTTP 服务 (端口 8081)                                                │
│  ┌──────────┐  ┌──────────────┐  ┌──────────┐  ┌──────────────────┐ │
│  │  GET /   │  │ POST /api/   │  │ POST /   │  │ POST /api/       │ │
│  │ 页面渲染  │  │ fetch-keys   │  │ api/pack │  │ submit           │ │
│  └──────────┘  └──────────────┘  └──────────┘  └──────────────────┘ │
└──────────────────────────────────────────────────────────────────────┘
                          │
                          ▼
┌──────────────┐  ┌──────────────────┐  ┌──────────────────┐
│ 远程密钥 API  │  │ Go 编译器        │  │ MySQL 数据库     │
│ (encrypt.    │  │ (cross-compile   │  │ (secphish 共享)  │
│  yangzifun   │  │  → Windows/amd64)│  │ 事件记录         │
│  .org)       │  └──────────────────┘  └──────────────────┘
└──────────────┘

工作流程:

  1. 受害者点击钓鱼链接GET /?rid=xxx 渲染打包页面,记录 "Clicked Link"
  2. 前端请求密钥POST /api/fetch-keys?rid=xxx 调用远程 API 获取 UUID + RSA 密钥对
  3. 前端请求打包POST /api/pack 自动获取密钥、注入回调地址,编译生成 EXE
  4. 受害者下载 EXE → 返回 EXE 文件流,记录 "File Download" 事件
  5. 受害者运行 EXE → EXE 启动时回传 UUID 到 POST /api/submit,记录 "Submitted Data"

11.3 配置说明

配置文件: ransom_simulator_listener/config.json

{
  "phish_server": {
    "listen_url": "0.0.0.0:8081",
    "use_tls": false,
    "cert_path": "",
    "key_path": ""
  },
  "db_name": "mysql",
  "db_path": "user:pass@tcp(host:3306)/db?charset=utf8&parseTime=True&loc=UTC",
  "contact_address": "",
  "logging": {
    "filename": "",
    "level": ""
  }
}
键名类型说明
phish_server.listen_urlstring监听地址(默认 0.0.0.0:8081
db_pathstring数据库 DSN(必须与 secphish 连接同一个数据库)
contact_addressstring透明度反馈联系邮箱

环境变量覆盖:

环境变量覆盖配置项说明
PHISH_LISTEN_URLphish_server.listen_url监听地址
DB_USER / DB_PASSWORD / DB_HOST / DB_DATABASEdb_path数据库连接信息
REMOTE_API_URL控制器中的 RemoteAPIURL远程密钥 API 地址
CALLBACK_HOST控制器中的 CallbackHost嵌入 EXE 的回调地址

11.4 API 端点

端点方法功能事件记录
GET /?rid=xxxGET渲染打包页面Clicked Link
POST /api/fetch-keysPOST获取 UUID + RSA 密钥对
POST /api/packPOST编译生成 EXE 文件File Download
POST /api/submitPOSTEXE 回调Submitted Data
GET /healthGET健康检查

11.5 构建与运行

cd ransom_simulator_listener

# 使用 Go Workspace 运行
go run main.go

# 编译运行
go build -o ransom_simulator_listener .
./ransom_simulator_listener

# 指定配置文件
./ransom_simulator_listener --config=/path/to/config.json

前提条件:Go 1.21+、MySQL 数据库(与 secphish 共享)、Go 编译器需支持 GOOS=windows GOARCH=amd64 交叉编译。


12. API 接口参考

SecPhish 提供完整的 REST API,支持通过编程方式管理活动、模板、页面、发信配置等所有资源。

12.1 认证方式

所有 API 请求需在 HTTP Header 中携带 API Key:

Authorization: Bearer 

API Key 可在管理后台 /settings 页面查看和重置,或在用户管理中查看。

12.2 基础 URL

http://your-server:3333/api

12.3 请求方法

实际方法请求方式示例
GETGET /api/resource查询资源列表
POSTPOST /api/resource创建资源
PUTPOST /api/resource/{id}?_method=PUT更新资源
DELETEPOST /api/resource/{id}?_method=DELETE删除资源

注意: 由于中间件限制,PUT 和 DELETE 方法通过 ?_method 查询参数模拟。

12.4 权限说明

权限说明对应 API
普通权限管理自身资源活动、模板、页面、组、发信、收件配置
ModifySystem系统管理Webhook、AI 模型、用户管理、AI 对话

12.5 端点概览

分类端点方法说明
活动/api/campaigns/GET/POST活动 CRUD
/api/campaigns/{id}GET/POST活动详情/更新/删除
/api/campaigns/{id}/resultsGET活动结果列表
/api/campaigns/{id}/completePOST完成活动
/api/campaigns/{id}/timelineGET活动时间线
/api/campaigns/{id}/summaryGET活动摘要
/api/campaigns/summaryGET所有活动摘要
/api/campaigns/dailystatsGET每日统计
/api/campaigns/exportPOST批量导出
目标组/api/groups/GET/POST组 CRUD
/api/groups/{id}GET/POST组详情/更新/删除
/api/groups/summaryGET组摘要列表
/api/groups/{id}/summaryGET单个组摘要
/api/groups/search?q=GET搜索组
目标成员/api/targets/GET分页查询成员
/api/targets/{id}GET单个成员详情
/api/targets/{id}/profileGET成员安全画像
/api/targets/search?q=GET搜索成员
/api/targets/bulk_addPOST批量添加
/api/targets/create_groupPOST从选中成员创建组
/api/targets/add_to_groupPOST添加到已有组
模板/api/templates/GET/POST模板 CRUD
/api/templates/{id}GET/POST模板详情/更新/删除
页面/api/pages/GET/POST页面 CRUD
/api/pages/{id}GET/POST页面详情/更新/删除
发信/api/smtp/GET/POSTSMTP CRUD
/api/smtp/{id}GET/POST配置详情/更新/删除
收件/api/imap/GET/POSTIMAP CRUD
/api/imap/{id}GET/POST配置详情/更新/删除
/api/imap/validatePOST连接验证
Webhook/api/webhooks/GET/POSTWebhook CRUD
/api/webhooks/{id}GET/POST详情/更新/删除
/api/webhooks/{id}/validatePOST连通性验证
AI模型/api/models/GET/POST模型 CRUD
/api/models/{id}GET/POST模型详情/更新/删除
AI对话/api/chat/sendPOST发送消息(SSE)
/api/chat/uploadPOST上传文件
/api/chat/historyGET获取历史
/api/chat/history?_method=DELETEPOST清空历史
用户/api/users/GET/POST用户 CRUD
/api/users/{id}GET/POST用户详情/更新/删除
导入/api/import/groupPOSTCSV 导入目标组
/api/import/bulk_targetsPOST异步批量导入目标(大文件)
/api/import/bulk_targets/status/{id}GET异步导入进度查询
/api/import/emailPOSTEML 导入模板
/api/import/sitePOST克隆网站
工具/api/util/send_test_emailPOST发送测试邮件
/api/resetPOST重置 API Key
报表/api/reports/GET/POST报表 CRUD
/api/reports/{id}GET/POST报表详情/更新/删除
/api/reports/{id}/downloadGET下载报表 HTML 文件
秘密扫描/api/secretscan/GET/POST扫描配置 CRUD
/api/secretscan/{id}GET/POST配置详情/更新/删除
/api/secretscan/{id}/scanPOST触发重新扫描
系统配置/api/config/GET/POST系统全局配置读写
认证/api/auth/checkGET验证 API Key 有效性
/api/auth/webauthn/begin-registrationPOSTWebAuthn 开始注册
/api/auth/webauthn/finish-registrationPOSTWebAuthn 完成注册
/api/auth/webauthn/begin-loginPOSTWebAuthn 开始登录
/api/auth/webauthn/finish-loginPOSTWebAuthn 完成登录
/api/auth/webauthn/credentialsGET列出已注册凭证
/api/auth/webauthn/credentials/{id}?_method=DELETEPOST删除凭证
结果/api/results/{id}/timelineGET单目标时间线

完整的请求与响应示例请参见 API 请求与响应示例


13. 常见问题与排错

13.1 邮件发送失败

现象可能原因解决方法
SMTP 连接超时防火墙未放行 SMTP 端口检查安全组和防火墙规则
认证失败SMTP 用户名/密码错误重新输入正确的凭据
550 退信目标邮箱不存在检查目标地址拼写
被标记为垃圾邮件发信域信誉不足配置 SPF/DKIM/DMARC 记录
553 拒绝发送发件人地址未授权使用被授权的发件人地址
"Error Sending"IMAP 检测到退信查看发信日志中的错误详情

13.2 追踪像素不生效

现象可能原因解决方法
追踪像素未显示邮件客户端阻止图片加载在邮件正文添加文字说明引导用户加载图片
状态未更新Cloudflare Worker 未正确配置检查 API_BASE 是否指向 listener/listener-api 服务
所有目标显示 "Sent" 无变化邮件未被打开检查邮件主题和内容是否具吸引力
打开率异常低邮件被归类到垃圾邮件文件夹检查 SPF/DKIM 配置

13.3 数据库连接问题

现象可能原因解决方法
服务启动失败 "connection refused"MySQL 未启动或地址错误检查 db_path 配置
"access denied"账号密码错误验证数据库权限
"Unknown database"数据库未创建执行 CREATE DATABASE
连接超时网络不通检查服务器之间的网络连通性

13.4 前端页面加载异常

现象可能原因解决方法
页面空白 / JS 错误前端资源未正确构建重新执行 gulp 构建
CSS 样式混乱静态资源路径问题检查 static/ 目录是否完整部署
DataTables 不显示数据API 请求失败检查浏览器控制台网络请求状态
404 静态资源文件未包含在部署包中确保 static/dist/ 目录文件完整

13.5 权限相关问题

现象原因解决方法
403 Forbidden用户角色无权限执行操作联系管理员提升角色权限
无法创建用户非系统管理员只有 admin 角色才能管理用户
无法修改配置只读用户角色限制更换有修改权限的账号
无法查看其他用户的活动普通用户只能看自己的活动使用 admin 账号登录

13.6 API 调用错误

HTTP 状态码含义排查方向
401API Key 无效或缺失检查 Authorization Header 格式
403权限不足确认用户角色拥有所需权限
404资源不存在检查请求的 ID 是否有效
410活动已结束已完成的活动不再接收事件
500服务器内部错误查看 secphish 服务端日志

13.7 部署常见问题

问题原因与解决
go: go.work file not found在项目根目录(gophish/)下执行命令,或手动创建 go.work
webpack build errorNode.js 版本过低,需 18+;检查 node_modules 是否完整
服务启动端口占用检查端口 3333(secphish)或 8080(listener)是否被占用
Unknown column 数据库错误运行数据库迁移;检查 migrations_prefix 配置是否正确

14. 版本信息

项目
当前版本V1.5.0 Build 202607061430
基础项目Gophish(二次开发)
架构服务分离(secphish / listener / listener-api / smtpd)
数据库MySQL 5.7+(utf8mb4)
前端React + Ant Design + AntV G2 + wangEditor + Monaco Editor
许可证MIT

关键更新记录

版本说明
V1.5.0新增成员画像、报表管理、秘密扫描、系统配置管理、WebAuthn 通行密钥、异步批量导入、认证 API 端点
V1.4.2新增 AI 对话功能、MQ 模式发信、勒索软件模拟器
V1.4.0新增 AI 模型管理与 AI Chat 对话功能
V1.3.0新增内置 SMTP 服务器(smtpd)和 MailDomain 管理
V1.2.0重构前端,全面迁移至 React + Ant Design
V1.1.0引入 MailPlatform 异步发信系统
V1.0.0初始版本,基于 Gophish 的架构重构
0.1.x基于 Gophish 原始版本的功能继承

IP 地址库更新

GeoIP 地理位置数据库路径:secphish/static/db/

自动更新方式(从 CDN 获取 GeoLite2-City 数据库):wp-statistics/GeoLite2-City


许可证

本项目基于 MIT 许可证开源。请在合法及授权的红队评估、钓鱼防范演练及企业安全建设场景下使用,严禁用于任何非法目的。


SecPhish — 更加安全、高并发、服务分离的现代化企业级钓鱼测试平台。