furkan-enes-polatoglu/phishforge
GitHub: furkan-enes-polatoglu/phishforge
PhishForge 是一个可自托管的开源授权钓鱼模拟与安全意识培训平台,旨在以更现代的架构和工作流替代 GoPhish。
Stars: 0 | Forks: 0
# 🎣 PhishForge
[](LICENSE)
[](https://go.dev)
[](https://react.dev)
[](https://docs.docker.com/compose/)
一个先进的、可自托管的**开源网络钓鱼模拟与安全意识**
平台 —— 一个现代化、功能更强大的 GoPhish 替代品。专为**授权的**红队和
安全意识演练而构建:衡量用户行为,培训人员,并报告结果。
**只需一条命令即可运行:**
```
git clone https://github.com/furkan-enes-polatoglu/phishforge.git
cd phishforge && ./scripts/quickstart.sh
```
就这样 —— 脚本会生成强密钥,打印您的管理员登录信息,并使用 Docker 启动
一切。打开 。(详情见下文。)
## 为什么选择 PhishForge(对比 GoPhish)
完整分析请参阅 [`docs/gophish-analysis.md`](docs/gophish-analysis.md)。
核心亮点:
| 领域 | GoPhish | PhishForge |
|------|---------|------------|
| 数据存储 | SQLite 单体架构 | PostgreSQL + Redis,API/worker 分离 |
| 编辑器 | 手写 HTML | 代码编辑器 + 实时预览,合并标签 |
| 可达性 | 无 | SPF/DKIM/DMARC,RBL,SpamAssassin 评分,HTML lint |
| 数据分析 | 基础计数器 | 漏斗模型 + 实时时间线 |
| 发送机制 | 简单邮件发送程序 | 速率受限的 worker,范围复核 |
| 多租户 / RBAC | 无 | 组织 + 管理员/操作员/查看者 |
| 授权机制 | 操作员自行处理 | 演练记录 + 允许列表 + 审计日志 |
| 安全意识培训 | 无 | 提交后自动重定向至培训 |
架构详情:[`docs/architecture.md`](docs/architecture.md)。
## 技术栈
- **后端:** Go 1.26 + Chi(单一二进制文件;包含 `api` / `worker` / `migrate` 模式)
- **前端:** React + TypeScript + Vite + Tailwind
- **数据库:** PostgreSQL 16 · **队列/缓存:** Redis 7
## 系统要求
- **Docker** + **Docker Compose v2** 插件。无需其他任何组件 —— 运行时不需要 Go 或 Node。
安装 Docker:
## 快速开始(推荐)
```
git clone https://github.com/furkan-enes-polatoglu/phishforge.git
cd phishforge
./scripts/quickstart.sh
```
该脚本将:
1. 创建包含强随机 `JWT_SECRET` / `RID_SECRET` 的 `.env` 文件,
2. 生成并**打印您的管理员邮箱和密码**,
3. 构建镜像并启动整个技术栈。
然后打开 **** 并使用打印的凭据登录。
## 手动启动(如果你喜欢的话)
```
cp .env.example .env
make seed-secrets # prints JWT_SECRET and RID_SECRET to paste into .env
# 还需要在 .env 中设置 BOOTSTRAP_ADMIN_EMAIL / BOOTSTRAP_ADMIN_PASSWORD
docker compose up -d --build
```
服务端口:
- 管理 UI + API:
- 钓鱼 / 追踪服务器:
- 健康检查:
首次运行会自动创建组织和管理员;数据库迁移会在启动时自动执行。
## 服务管理
```
docker compose logs -f api worker # live logs
docker compose ps # status
docker compose down # stop (keeps data)
docker compose down -v # stop and wipe all data
```
### 各项服务
`docker compose` 会启动:`postgres`、`redis`、一次性的 `migrate`、`api`
(提供已构建的 SPA + 管理 API + 钓鱼服务器),以及 `worker`
(从 Redis 队列发送演练活动)。
## 典型工作流
1. **创建演练** —— 客户名称、**授权凭证**(例如签署的 SoW),以及开始/结束时间窗口。
2. **定义范围(允许列表)** —— 域名(`acme.com`)和/或邮件通配符
(`vip-*@acme.com`)。至少需要一条规则才能激活。
3. **激活**演练(只能在范围和时间窗口内进行)。
4. **导入目标** —— 不在范围内的地址会被自动拒绝。
5. **构建资产** —— 邮件模板(合并标签:`{{.FirstName}}`、`{{.TrackURL}}`、
`{{.TrackPixel}}`、`{{.ReportURL}}`)和登录页面(表单提交至
`{{.SubmitURL}}`;数值会被丢弃,用户将被重定向至安全意识培训)。
6. **创建发送配置** —— SMTP 主机/凭据、发件人地址、STARTTLS。
7. **运行可达性检查** —— 验证 SPF/DKIM/DMARC、黑名单、HTML lint。
与客户的邮件网关协调设置允许列表。
8. **创建并启动活动** —— worker 会按照您配置的速率发送,并在发送时重新验证范围。
9. **查看报告** —— 已发送 → 已打开 → 已点击 → 已提交 → 已报告的漏斗模型,以及
实时事件时间线。
## 合法的邮件可达性
可达性模块可通过正确的邮件基础设施帮助授权的测试邮件**到达收件箱** ——
SPF/DKIM/DMARC 验证、黑名单检查、SpamAssassin 评分、HTML lint,以及与客户协调的允许列表。它**不是**垃圾邮件过滤器规避工具,也不包含任何过滤器欺骗技术。
## 数据最小化
当目标提交登录页面表单时,PhishForge 只会记录一个 `submit`
**事件** —— 绝不会记录提交的值。作为可选功能(针对特定登录页面),它可以记录已填写的**字段名称集合**,但依然绝不记录任何值。密码永远不会被存储、哈希或记录。
## 本地开发
```
# Backend(需要 Postgres + Redis + 一个 .env)
make migrate && make run
# Frontend(将 /api 代理到 :8080)
cd web && npm install && npm run dev # http://localhost:5173
make test && make vet
```
## 生产环境注意事项
- 将这两个端口置于 TLS 之后。Caddy 示例:
admin.example.com { reverse_proxy 127.0.0.1:8080 }
links.example.com { reverse_proxy 127.0.0.1:8081 }
请相应地设置 `ADMIN_BASE_URL`、`PHISH_BASE_URL` 和 `CORS_ORIGINS`。
- 保持 `JWT_SECRET` 和 `RID_SECRET` 的机密性与稳定性(轮换 `RID_SECRET`
会使进行中的跟踪链接失效)。
- 备份 `postgres` 卷。
## 许可证
MIT —— 详见 [`LICENSE`](LICENSE)。本工具仅供授权的安全测试和
安全意识培训使用。您需对合法及经同意的使用负责。
标签:Docker, EVTX分析, Go, React, Ruby工具, Syscalls, 安全防御评估, 搜索引擎查询, 日志审计, 测试用例, 版权保护, 请求拦截