AryanPawr/Phishguard

GitHub: AryanPawr/Phishguard

全栈网络钓鱼检测平台,整合浏览器扩展、后端服务、机器学习与威胁规则,实现邮件风险识别与可视化分析。

Stars: 0 | Forks: 0

# PhishGuard PhishGuard 是一个全栈网络钓鱼检测平台,结合了浏览器扩展、FastAPI 后端、结构化机器学习流水线、品牌冒充检测、本地威胁情报以及受 JWT 保护的分析仪表板。它被设计为一个网络安全组合项目,用于展示跨浏览器、后端和机器学习层的实用检测工程能力。 ## 概述 PhishGuard 检测 Gmail、Outlook Web 以及通用网页渲染邮件中的可疑邮件内容。扩展程序提取标准化消息数据,应用轻量级本地启发式规则,屏蔽敏感内容,并在传输前提交隐私缩减后的负载。后端执行结构化特征提取、模型推理、冒充检测和加权分数融合,最后返回风险评估结果。管理遥测信息通过仪表板和 SIEM 友好格式暴露。 ## 核心功能 - 用于 Gmail、Outlook Web 和通用邮件渲染页面的 Manifest V3 浏览器扩展 - 本地客户端侧启发式规则,用于识别紧急语言、可疑链接、伪造和域名不匹配 - 提交前优先进行隐私保护的内容屏蔽 - 带请求验证、评分、持久化和 JWT 保护管理路由的 FastAPI 后端 - 结构化的网络钓鱼特征提取流水线 - 基于 TF-IDF 和逻辑回归的基线机器学习架构,支持回退推理 - 品牌冒充和相似域名检测 - 基于 React + Tailwind 的分析仪表板 - 用于下游安全工作流程的 SIEM JSON 导出 - 威胁情报注册表和网络钓鱼规则 - 对后端、特征提取、评分、机器学习训练和扩展清单安全性进行测试 ## 架构 ``` extension/ Browser extraction, local heuristics, masking, cache, UI banner backend/ FastAPI API, feature extraction, ML inference, scoring, persistence dashboard/ React + Tailwind admin interface intelligence/ Brand registry, phishing rules, feed notes shared/ JSON schemas for request/response/event contracts infrastructure/ Docker Compose and nginx example config tests/ API, ML, scoring, feature extraction, and extension tests docs/ Architecture, security, ML pipeline, SIEM, deep-dive notes ``` ## 检测流程 1. 用户在 Gmail、Outlook Web 或其他支持的网络渲染邮件界面中打开一封邮件。 2. 扩展程序提取发件人、显示名称、主题、正文文本、链接和上下文信息。 3. 本地启发式规则对明显的网络钓鱼信号进行评分,并在传输前屏蔽个人身份信息(PII)。 4. 后端验证请求并再次应用服务端屏蔽。 5. 从文本、链接、域名和可用 HTML 中提取结构化特征。 6. 后端运行机器学习推理、冒充检测和信誉逻辑。 7. 加权评分引擎生成最终分类和解释。 8. 扩展程序渲染实时警告横幅。 9. 后端存储匿名化遥测数据,用于仪表板分析和 SIEM 导出。 ## 技术栈 ### 扩展 * Manifest V3 * JavaScript * 内容脚本 * 后台服务工作线程 * 自定义横幅 UI ### 后端 * FastAPI * Pydantic * SQLAlchemy * 本地开发用的 SQLite * JWT 认证 * 进程内速率限制 ### 机器学习 * scikit-learn * TF-IDF 向量化 * 数值结构化特征 * 逻辑回归 * joblib 模型工件加载 ### 仪表板 * React * Vite * Tailwind CSS ## 安装指南 ### 先决条件 在开始设置前安装以下内容: * Python 3.11+ 或 3.12 * Node.js 18+ 和 npm * Git * Chromium 浏览器或 Firefox ## 后端设置 ``` cd backend python -m venv .venv source .venv/bin/activate pip install -r requirements.txt cp .env.example .env uvicorn app.main:app --reload ``` 后端运行在: ``` http://localhost:8000 ``` 健康检查: ``` curl http://localhost:8000/health ``` ## 仪表板设置 ``` cd dashboard npm install cp .env.example .env npm run dev ``` 打开: ``` http://localhost:5173 ``` 默认开发凭据: ``` username: admin password: phishguard-admin ``` 在使用项目超出本地开发环境之前,请在 `backend/.env` 中修改这些配置。 ## 扩展设置 ### Chrome / Chromium 1. 打开 `chrome://extensions` 2. 启用开发者模式 3. 点击 **加载已解压的扩展程序** 4. 选择 `extension/` 文件夹 ### Firefox 1. 打开 `about:debugging#/runtime/this-firefox` 2. 点击 **加载临时附加组件** 3. 选择 `extension/manifest.json` 扩展程序将在打开支持页面时调用本地后端并显示风险横幅。 ## 生产集成 当前部署端点: - 后端 URL:`https://phishguard-backend-anw5.onrender.com` - 仪表板 URL:`https://phishguard-dashboard.vercel.app` - 仪表板环境变量:`VITE_API_BASE_URL=https://phishguard-backend-anw5.onrender.com/api` - 后端 CORS 环境变量:`PHISHGUARD_CORS_ORIGINS=https://phishguard-dashboard.vercel.app` - 扩展默认 API URL:`https://phishguard-backend-anw5.onrender.com/api` 后端从 `PHISHGUARD_CORS_ORIGINS` 读取 CORS 源;在本地运行仪表板时,仅将 localhost 值保留在本地 `.env` 文件中。 ## 运行测试套件 从项目根目录: ``` pytest ``` 如果仅需要后端测试: ``` cd backend source .venv/bin/activate cd .. pytest tests ``` ## 模型训练 默认模型路径为: ``` backend/app/services/ml_engine/models/phishing_model.pkl ``` 已提交的模型工件可视为占位符或引导工件。如果无可用的有效训练模型,后端将回退到确定性评分行为。 从 CSV 数据集训练基线模型: ``` cd backend source .venv/bin/activate python -m app.services.ml_engine.train --dataset ../data/phishing_training.csv ``` 预期数据集模式: * 一个类似文本的列,例如 `text`、`body`、`body_text`、`email`、`message`、`content` 或 `url` * 一个类似标签的列,例如 `phishing`、`malicious`、`spam`、`safe`、`legitimate`、`ham`、`1` 或 `0` ## 评分策略 最终分数结合多个独立信号: ``` final_score = 0.30 * ml_probability + 0.25 * impersonation_score + 0.20 * heuristic_score + 0.15 * link_reputation + 0.10 * domain_registry_mismatch ``` 这种多信号设计通过结合模型输出与确定性安全信号,提升了系统的弹性和可解释性。 ## 安全控制 * 不在持久化遥测中存储原始邮件 * 发件人、主题和样本标识符以哈希形式存储 * 提交前在客户端进行屏蔽 * 服务端再次应用屏蔽 * 受 JWT 保护的管理和 SIEM 路由 * 严格的 CORS 配置 * 输入大小限制和请求验证 * 本地速率限制以防止 API 滥用 * 扩展和 nginx 示例配置中的 CSP 控制 ## 阶段 2:模型训练与检测成熟度 阶段 1 建立了平台与基础检测流水线。阶段 2 应专注于提升模型质量、数据集真实性和评估严谨性。 ### 阶段 2 目标 * 用真正训练过的模型替换占位符或回退行为 * 提升网络钓鱼与良性数据集质量 * 扩展结构化特征以实现更好的泛化 * 评估多个分类器 * 测量精确率、召回率、F1、ROC-AUC 和假阳性率 * 添加可重现的评估与模型版本管理 * 为机器学习层准备基于 Transformer 的升级 ### 建议的阶段 2 工作计划 #### 1. 构建更优的训练数据集 从以下来源创建 curated 数据集: * 网络钓鱼邮件数据集 * 合法邮件与新闻邮件样本 * URL 情报来源,如 PhishTank 或 OpenPhish * 用于品牌冒充和相似域名的人工标注样本 目标应包含: * 网络钓鱼样本 * 良性事务邮件 * 良性安全告警 * 新闻邮件和营销邮件 * 品牌冒充示例 * 欺骗性锚文本示例 #### 2. 规范化与一致标注 将标签标准化为: * `1` 表示网络钓鱼或恶意 * `0` 表示良性或安全 规范化以下内容: * 发件人域名字段 * 正文文本格式 * 提取的链接 * 编码伪影 * 重复记录 #### 3. 扩展特征工程 在现有流水线基础上改进: * 更佳的相似域名特征 * 基于公共后缀的域名解析 * 更健壮的锚点不匹配逻辑 * 重定向链指示 * 语言特定的网络钓鱼短语集合 * 改进的可疑 TLD 评分 * 可选的 HTML 派生的表单和隐藏元素信号 #### 4. 评估多个基线 至少比较以下方法: * 逻辑回归 * 线性 SVM * 在结构化特征子集上的随机森林或梯度提升 根据网络钓鱼召回率和平衡的假阳性控制保留最佳模型。 #### 5. 添加完善的评估输出 阶段 2 应保存: * 模型版本* 训练日期 * 数据集来源 * 评估指标 * 混淆矩阵 * 特征重要性或系数摘要(如果可能) 建议的工件布局: ``` backend/app/services/ml_engine/models/ backend/app/services/ml_engine/reports/ backend/app/services/ml_engine/experiments/ ``` #### 6. 添加可重现的实验脚本 包含用于以下功能的脚本: * 训练 * 评估 * 模型比较 * 导出最佳工件 这将使机器学习部分在 GitHub 和面试中更具优势。 #### 7. 为 Transformer 升级做准备 一旦结构化基线稳定,阶段 2.5 或阶段 3 可以探索: * DistilBERT 微调 * 结合结构化特征的 Transformer 嵌入 * ONNX 运行时推理 * 传统与 Transformer 输出之间的校准 当前架构已经支持这一路径,因为模型推理已被视为可替换的后端组件。 ## 建议的未来改进 * 使用 PostgreSQL 替代 SQLite 用于部署 * 基于 Redis 的分布式速率限制 * 基于角色的访问控制(RBAC)和多用户管理 * 从仪表板到模型改进的反馈闭环 * 用于误报和误判的分析师工作流 * 更强的 Firefox 消息兼容性加固 * 可选威胁源摄取任务 * OCR 或基于图像的钓鱼检测 * 二维码网络钓鱼检测 * 云部署和扩展商店打包 ## 项目状态 当前状态: * 端到端脚手架完整 * 包含扩展、后端、仪表板、测试和文档 * 基础机器学习流水线已就绪 * 已准备好基于数据集的阶段 2 训练和评估 ## 仓库主题 推荐的 GitHub 主题: * 网络安全 * 网络钓鱼检测 * 浏览器扩展 * FastAPI * 机器学习 * 威胁情报 * React * 检测工程 ## 许可证 MIT 许可证。
标签:Apex, AV绕过, FastAPI, Gmail, JWT认证, Manifest V3, Outlook Web, React仪表盘, SIEM导出, Tailwind, TF-IDF, 云计算, 全栈安全, 前端仪表盘, 可疑链接检测, 后端API, 品牌冒充检测, 域名不匹配检测, 威胁情报, 威胁情报注册表, 开发者工具, 数据脱敏, 机器学习, 查仿冒域名, 测试覆盖, 浏览器扩展, 浏览器数据采集, 特征工程, 端点安全, 紧急语言检测, 结构化评分, 网络安全, 网络安全项目, 网络钓鱼防御, 补丁管理, 规则引擎, 请求拦截, 通用网页邮箱, 逻辑回归, 钓鱼检测, 隐私保护