VenkatNandaKishore/PhishGuard-LLM

GitHub: VenkatNandaKishore/PhishGuard-LLM

一个完全本地运行的实时邮件钓鱼检测系统,通过多阶段 ML 流水线在用户打开邮件前完成分类,并用本地 LLM 生成可读解释。

Stars: 0 | Forks: 0

# PhishGuard AI 🛡️ **一个完全在本地机器上运行的实时、可解释的网络钓鱼检测系统——无需云服务,无需 GPU。** PhishGuard AI 会持续监控您的收件箱,在您打开每封邮件前对其进行分类,并用平实的语言准确解释邮件被标记的原因。 ## 📋 目录 - [概述](#overview) - [核心结果](#key-results) - [系统架构](#system-architecture) - [功能特性](#features) - [技术栈](#tech-stack) - [安装说明](#installation) - [配置](#configuration) - [使用方法](#usage) - [数据集](#dataset) - [模型训练](#model-training) - [项目结构](#project-structure) - [已知局限性](#known-limitations) - [路线图](#roadmap) - [作者](#authors) - [许可证](#license) ## 概述 电子邮件钓鱼每年造成数十亿美元的损失,并导致全球超过 80% 的数据泄露事件。现有的防御措施都有一个相同的盲区:**邮件投递与您打开它之间的时间窗口。** PhishGuard AI 关闭了这个窗口。它作为后台进程在您自己的机器上运行,在收件箱渲染之前,通过多阶段 ML 流水线扫描每一封到达的邮件。当检测到威胁时,设备上的语言模型会撰写简短的解释,指出具体的警告信号——没有二进制警报,没有神秘分数。 **以前没有系统同时做到这三点:** - 完全本地执行——任何数据都不会离开您的设备 - 包含无链接钓鱼攻击的检测覆盖范围 - 非专业用户也能理解的自然语言解释 ## 核心结果 在包含 **10,000 封电子邮件**的保留测试集上进行了评估: | 指标 | 值 | 95% CI | |---|---|---| | 总体准确率 | **96.8%** | [96.2%, 97.4%] | | F1分数 (钓鱼) | **94.9%** | [94.2%, 95.7%] | | 假阳性率 | **4.8%** | [4.2%, 5.4%] | | 假阴性率 | **5.3%** | [4.7%, 5.9%] | | AUC-ROC | **0.980** | [0.977, 0.983] | | 马修斯相关系数 | **0.930** | [0.925, 0.935] | | 可疑邮件检测率 | **89.3%** | [87.9%, 90.7%] | | 同步分类延迟 | **~230 ms** | — | | 内存占用 | **~310 MB** | — | **基线比较:** | 系统 | 准确率 | 假阴性率 | 本地化? | 可解释? | |---|---|---|---|---| | **PhishGuard AI ( ours )** | **96.8%** | **5.3%** | ✅ | ✅ | | Chiew et al. [24] hybrid | 94.8% | 7.4% | ❌ | ❌ | | DistilBERT standalone | 94.3% | 6.9% | ✅ | ❌ | | LightGBM (structural) | 93.1% | 8.7% | ✅ | 部分 | | Random Forest | 92.4% | 10.2% | ✅ | 部分 | | SVM (RBF) | 89.7% | 14.1% | ✅ | ❌ | | Naive Bayes | 87.2% | 18.3% | ✅ | ❌ | 通过 McNemar 配对检验证明,所有改进均具有统计学意义(p < 0.001 对比所有基线)。 ## 系统架构 ``` ┌─────────────────────────────────────────────────────────────┐ │ PhishGuard AI Pipeline │ │ (fully client-side, zero egress) │ └─────────────────────────────────────────────────────────────┘ IMAP / Gmail API │ ▼ ┌──────────────┐ ┌──────────────────┐ ┌─────────────────┐ │ Email │───▶│ Feature │───▶│ DistilBERT │ │ Fetcher │ │ Extractor │ │ NLP Scorer │ └──────────────┘ │ (37 structural │ │ (feature #38) │ │ features) │ └────────┬────────┘ └──────────────────┘ │ ▼ ┌─────────────────┐ │ LightGBM │ │ Classifier │ │ Safe/Susp/Phish │ └────────┬────────┘ │ ┌──────────────────────┼────────────────────┐ │ │ │ ▼ ▼ ▼ ┌──────────────────┐ ┌──────────────┐ ┌──────────────────┐ │ Quarantine + │ │ Phi-2 LLM │ │ SQLite Audit │ │ Notification │ │ Explainer │ │ Log + Feedback │ │ (sync, ~230ms) │ │ (async,~1s) │ │ │ └──────────────────┘ └──────────────┘ └──────────────────┘ ``` **六个模块,全部在本地运行:** 1. **邮件获取器** — IMAP / Gmail API(只读,OAuth 2.0) 2. **特征提取器** — 38 维向量(邮件头,URL,内容,NLP) 3. **DistilBERT NLP 评分器** — 微调的钓鱼可能性得分 4. **LightGBM 分类器** — 三分类输出:安全 / 可疑 / 钓鱼 5. **Phi-2 解释器** — 设备上的自然语言解释(通过 Ollama) 6. **响应与记录器** — 隔离,通知,SQLite 审计日志 ## 功能特性 - 🔒 **完全本地** — 邮件内容永远不会离开您的设备 - ⚡ **快速** — ~230 ms 内完成同步分类 - 🧠 **混合 ML** — 结构特征 + NLP + LLM 解释 - 📊 **三分类输出** — 安全 / 可疑 / 钓鱼(非简单的二进制) - 💬 **平实语言警报** — Phi-2 解释*为什么*邮件被标记 - 🔄 **自适应** — 用户纠正反馈到定期重训练中 - 🖥️ **桌面通知** — Plyer / ToastNotifier 集成 - 📁 **自动隔离** — 被标记的邮件移至专用文件夹 - 🔍 **无链接检测** — 仅使用 NLP 捕获没有 URL 的钓鱼攻击 - 📝 **审计日志** — 每次分类的完整 SQLite 历史记录 ## 技术栈 | 组件 | 技术 | |---|---| | 核心语言 | Python 3.10+ | | ML 分类器 | LightGBM + Scikit-learn | | NLP 模型 | DistilBERT(微调,Hugging Face) | | LLM 解释器 | Phi-2 via Ollama(27亿参数) | | 邮件访问 | IMAPClient,Gmail API | | HTML 解析 | BeautifulSoup4 | | URL 分析 | tldextract,python-whois | | 调度 | APScheduler | | 数据库 | SQLite | | 通知 | Plyer,ToastNotifier | | 打包 | PyInstaller | ## 安装说明 ### 前置条件 - Python 3.10 或更高版本 - 已安装并在本地运行 [Ollama](https://ollama.ai) - Gmail API 凭据(可选——也支持 IMAP) ### 1. 克隆代码库 ``` git clone https://github.com/VenkatNandaKishore/PhishGuard-LLM.git cd Phishguard-LLM ``` ### 2. 创建虚拟环境 ``` python -m venv venv source venv/bin/activate # Linux / macOS venv\Scripts\activate # Windows ``` ### 3. 安装依赖项 ``` pip install -r requirements.txt ``` ### 4. 通过 Ollama 拉取 Phi-2 模型 ``` ollama pull phi ``` ### 5. 设置环境变量 ``` cp .env.example .env ``` 使用您的凭据编辑 `.env`(参见[配置](#configuration))。 ### 6. 运行监控程序 ``` python monitor.py ``` ## 配置 将 `.env.example` 复制到 `.env` 并填写: ``` # 要监控的电子邮件账户 EMAIL_ADDRESS=your@email.com EMAIL_PASSWORD=your_app_password # IMAP 设置(留空以改用 Gmail API) IMAP_SERVER=imap.gmail.com IMAP_PORT=993 # Alert 通知 — 从此地址发送 Alert ALERT_SENDER_EMAIL=phishguardai@gmail.com ALERT_SENDER_PASSWORD=your_alert_app_password # Alert 通知 — 将 Alert 发送到此地址 ALERT_RECIPIENT_EMAIL=your@email.com # Anthropic API key(可选 — 用于基于 Claude 的解释) ANTHROPIC_API_KEY=your_key_here # 轮询间隔,以秒为单位(默认:60) POLL_INTERVAL=60 ``` **Gmail 用户:** 您需要一个[应用专用密码](https://support.google.com/accounts/answer/185833),而不是您的常规密码。 ## 使用方法 ### 启动监控 ``` python monitor.py ``` 监控程序将会: 1. 连接到您的收件箱 2. 对每一封新收到的邮件进行分类 3. 自动隔离检测到的钓鱼邮件 4. 发送带有 AI 生成解释的桌面通知 5. 将所有结果记录到 `data/phishguard.db` ### 查看检测历史 ``` python dashboard.py ``` ### 根据您的纠正重训练模型 ``` python training/train_lgbm.py ``` ### 运行测试套件 ``` pytest tests/ ``` ## 数据集 我们在来自七个公开数据源的约 **130,000 封带标签电子邮件** 上进行了训练: | 来源 | 类别 | 数量 | 时间段 | |---|---|---|---| | Nazario Phishing Corpus | 钓鱼 | ~3,661 | 2020–2025 | | APWG Public Repository | 钓鱼 | ~15,000 | 2018–2023 | | Academic Datasets (Berkeley / MIT) | 钓鱼 | ~20,000 | 混合 | | TREC 2007 Spam Track | 钓鱼 | ~40,842 | 2007 | | SpamAssassin Public Corpus | 钓鱼 | ~497 | 2002–2006 | | Enron Email Dataset (anonymized) | 合法 | ~60,000 | 1998–2002 | | Synthetic Business Email | 合法 | ~10,000 | 2023 | - 两名独立审查员对所有样本进行标注(κ = 0.91) - 合法与钓鱼邮件的比例为 60 / 40 - 在数据划分中保持时间顺序,以防止数据泄漏 ## 模型训练 ### 特征提取(38 个特征) | 分组 | 数量 | 示例 | |---|---|---| | 邮件头认证 | 8 | SPF/DKIM/DMARC 结果,Reply-To 不匹配,路由异常 | | 正文内容 | 7 | TF-IDF 紧急度得分,HTML 复杂度,图像数量 | | URL 分析 | 10 | 域名年龄,短链接检测,TLD 风险,威胁情报源 | | NLP (DistilBERT) | 1 | 微调的钓鱼可能性得分 | ### LightGBM 超参数 | 参数 | 值 | |---|---| | n_estimators | 200 | | learning_rate | 0.05 | | max_depth | 7 | | num_leaves | 31 | | feature_fraction | 0.8 | | bagging_fraction | 0.8 | | class_weight | balanced | | objective | multiclass | | early_stopping | 50 rounds | ### 从头开始重训练 ``` # 构建 dataset python training/build_dataset.py # 训练 LightGBM python training/train_lgbm.py # Fine-tune DistilBERT(可选 — 已包含预训练权重) python training/train_distilbert.py ``` ## 项目结构 ``` phishguard-ai/ ├── monitor.py # Main monitoring loop ├── config/ │ └── settings.py # Configuration loader ├── modules/ │ ├── email_fetcher.py # IMAP / Gmail API connector │ ├── email_parser.py # Header + body + URL extraction │ ├── feature_extractor.py # 38-feature pipeline │ ├── nlp_model.py # DistilBERT inference │ ├── lgbm_classifier.py # LightGBM classifier │ ├── explainer.py # Phi-2 / Claude explanation generator │ ├── notifier.py # Desktop + email alerts │ ├── database.py # SQLite audit log │ └── domain_intelligence.py # Threat feed + WHOIS lookups ├── training/ │ ├── train_lgbm.py # LightGBM training script │ ├── train_distilbert.py # DistilBERT fine-tuning script │ └── build_dataset.py # Dataset assembly pipeline ├── data/ │ ├── models/ # Saved model weights │ └── phishguard.db # SQLite detection log ├── tests/ │ ├── test_full_pipeline.py │ ├── test_adversarial.py │ └── test_phase2.py ├── .env.example ├── requirements.txt └── README.md ``` ## 已知局限性 | 局限性 | 影响 | 计划修复方案 | |---|---|---| | 无附件分析 | 无法检测 PDF/Office 宏有效载荷 | 沙盒集成 (v2) | | 纯图像钓鱼 | 极少文本会降低 NLP 效果 | OCR 集成 (v2) | | 仅支持英文 | 对非英文钓鱼活动的检测不可靠 | 多语言 DistilBERT (v2) | | 手动重训练 | 概念漂移需要用户纠正 | 主动学习 (v2) | | WHOIS 延迟 | 每次查询最多 3 秒,偶尔失败 | 缓存威胁情报 (进行中) | ## 路线图 - [ ] PDF 和 Office 宏沙盒分析 - [ ] 用于纯图像钓鱼的 OCR - [ ] 多语言 DistilBERT 变体 - [ ] 基于熵的主动学习,用于自动纠正漂移 - [ ] 企业模式——SIEM 集成,STIX/TAXII 审计导出 - [ ] Gmail 推送 API + IMAP IDLE(取代轮询,消除检测延迟) ## 作者 **Lovely Professional University — 计算机科学与工程** | 姓名 | 电子邮件 | |---|---| | Bokku Venkat Nanda Kishore | bvnkishore2004@gmail.com | | Maddineni Raviteja | ravi9347783160@gmail.com | | Minnekanti Durga Varun | varundurga80@gmail.com | | G. Tharun Venkata Sai Kumar | tsai3822@gmail.com | | Undela Yaswanth Kumar Reddy | undelayaswanthreddy143@gmail.com | **指导教师:** Hariom,助理教授 — hariomsoniiimtgn@gmail.com ## 许可证 本项目采用 MIT 许可证授权。详见 [LICENSE](LICENSE)。
标签:AI风险缓解, AMSI绕过, Apex, DNS枚举, IMAP, PhishGuard, 人工智能, 分类模型, 反钓鱼, 可解释AI, 多阶段管道, 威胁检测, 数据泄露防护, 无GPU, 本地部署, 机器学习, 漏洞挖掘, 用户模式Hook绕过, 端点安全, 网络安全, 网络安全, 网络安全工具, 网络探测, 补丁管理, 逆向工具, 邮件安全, 钓鱼邮件检测, 隐私保护, 隐私保护