atharva07-cyber/ThreatLens-Lite

GitHub: atharva07-cyber/ThreatLens-Lite

一个基于 Flask 与 scikit-learn 构建的轻量级 SOC 分诊工具,模拟安全分析师对可疑 URL、钓鱼邮件和恶意文件 hash 的日常检测工作流。

Stars: 0 | Forks: 0

# 🔍 ThreatLens-Lite — SOC 分析师分诊工具包 ![Python](https://img.shields.io/badge/Python-3.10+-blue?logo=python) ![Flask](https://img.shields.io/badge/Flask-3.x-black?logo=flask) ![ML](https://img.shields.io/badge/ML-Scikit--Learn-orange?logo=scikit-learn) ![License](https://img.shields.io/badge/License-MIT-green) ## 📌 这是什么? ThreatLens-Lite 是一个作品集项目,模拟了 SOC L1 分析师每天都要执行的三项任务: 1. **分诊用户报告或被过滤器拦截的可疑链接** 2. **调查转发到安全收件箱的钓鱼邮件** 3. **在接触样本之前,根据已知的恶意软件数据库检查文件 hash** 它特意缩减了完整的生产级 SOC 技术栈范围——其目的是展示*推理过程*,而不是取代真实的 SIEM/EDR。 ## ⚡ 功能 | 模块 | 功能说明 | |---|---| | 🔗 **URL 扫描器** | 从 URL 中提取 20 个词法/结构特征(IP 字面量主机、`@` 欺骗、连字符、短链接、可疑关键词、HTTPS 等),并使用训练好的 Gradient Boosting 分类器对其进行评分 | | 📧 **邮件分析器** | 标记紧急性话术、凭据窃取短语、通用问候语、品牌冒充、链接文本不匹配以及 Reply-To/From 欺骗 | | 🦠 **Hash 检查器** | 通过 VirusTotal 公共 API 查询 MD5/SHA1/SHA256 hash,并返回检测率及判定结果 | | 📄 **报告导出** | 每次扫描都可以下载为格式化的 PDF 事件报告(包含判定结果、风险评分、发现的问题、原始特征/检测数据) | 除了可选的需要您自己的免费 API key 的 VirusTotal 查询外,所有操作均**离线**运行。 ## 🖥️ 截图 仪表盘风格的分析师控制台:包含一个主标题栏、胶囊式的扫描器标签页、颜色编码的判定卡片(安全/可疑/恶意)、风险仪表盘、快速统计卡片、解释*为何*被标记的问题列表,以及每个结果上的 **Download Report (PDF)** 按钮。 ![ThreatLens-Lite console](https://raw.githubusercontent.com/atharva07-cyber/ThreatLens-Lite/main/screenshots/console.png) ## 🏗️ 项目结构 ``` threatlens/ ├── app.py # Flask app + API routes ├── train_model.py # Trains the URL phishing classifier ├── requirements.txt ├── scanner/ │ ├── url_features.py # Lexical feature extraction (no network calls) │ ├── url_scanner.py # ML verdict + explainable heuristic fallback │ ├── email_scanner.py # Phishing-pattern email analysis │ ├── hash_checker.py # VirusTotal API integration │ └── report_generator.py # PDF incident report builder (reportlab) ├── data/ │ └── generate_sample_dataset.py # Builds a synthetic labeled URL dataset ├── model/ # Trained model + metrics (generated, gitignored) └── templates/ └── index.html # Analyst console UI ``` ## 🚀 如何在本地运行 ### 1. 克隆并安装 ``` git clone https://github.com/atharva07-cyber/threatlens-lite.git cd threatlens-lite pip install -r requirements.txt ``` ### 2. 生成数据集并训练 URL 模型 ``` python data/generate_sample_dataset.py python train_model.py ``` 这将创建 `data/urls.csv`(合成的钓鱼 URL 与合法 URL —— 参见下方的说明),并训练 `model/phishing_model.joblib`。 如果没有已训练的模型,URL 扫描器会自动回退到透明的基于规则的评分器,因此即使您在未进行任何训练前,该应用程序也能正常工作。 ### 3.(可选)为 hash 检查器设置 VirusTotal ``` export VT_API_KEY="your_key_here" # Windows: set VT_API_KEY=your_key_here ``` 在 [virustotal.com](https://www.virustotal.com) 获取免费 key → Profile → API Key。 免费层级:每天 500 次请求,每分钟 4 次。 ### 4. 运行应用程序 ``` python app.py ``` 打开 **http://127.0.0.1:5000** ## 🧪 关于训练数据(在面试展示前请阅读此说明) `data/generate_sample_dataset.py` 构建了一个**合成**数据集(根据已知的钓鱼/合法模式生成的 URL),从而使整个 pipeline 能够在零配置的情况下端到端运行。 它可以顺利训练,但仅基于合成数据训练的模型并不能代表真实的准确率——因为这些模式太容易被区分了。 要将其打造成您简历上极具说服力的 ML 成果: 1. 从 Kaggle 下载 [Web Page Phishing Detection Dataset](https://www.kaggle.com/datasets/shashwatwork/web-page-phishing-detection-dataset) 2. 将其保存为包含 `url` 和 `label` 列的 `data/urls.csv`(如果真实数据集的列名不同,请调整 `train_model.py` 中的加载器) 3. 重新运行 `python train_model.py` 4. 在您的 README 中报告来自 `model/metrics.json` 的真实指标 坦诚说明哪些数据来自真实数据,哪些来自合成数据,正是 SOC/安全面试官所看重的严谨态度。 ## 🔧 技术栈 - **后端** — Python 3, Flask - **机器学习** — scikit-learn (Gradient Boosting), pandas, numpy - **威胁情报** — VirusTotal API v3 - **前端** — HTML5, CSS3, 原生 JavaScript(无框架) ## 📚 展示的技能 - 钓鱼 URL 特征工程与分类 - 针对社会工程学指标的邮件标头/内容分析 - 威胁情报 API 集成 (VirusTotal) - 可解释的检测(每个判定结果都附带*原因*,而不仅仅是评分) - Flask REST API 设计 - SOC 分析师分诊工作流 ## 🗺️ 路线图 / 扩展此项目的想法 - [ ] 为邮件发现添加 MITRE ATT&CK 技术标记 - [ ] PDF/DOCX 附件扫描器(提取嵌入的链接/宏) - [ ] 对上传的文件进行 YARA 规则匹配 - [ ] 批量 CSV 上传 URL/hash - [ ] 用于一键部署的 Dockerfile ## ⚠️ 免责声明 专为**教育和作品集目的**而构建。不能替代真实的 SIEM/EDR/威胁情报平台。请勿在隔离的 VM 之外分析活跃的恶意软件样本。 ## 📄 许可证 MIT — 查看 [LICENSE](LICENSE)。
标签:Apex, Flask, Python, 威胁情报, 安全运营, 开发者工具, 扫描框架, 数据可视化, 无后门, 机器学习, 逆向工具, 钓鱼检测