suriyaSEnthilkumarSD/phising_detection

GitHub: suriyaSEnthilkumarSD/phising_detection

一款结合机器学习词法分析与 OCR 视觉识别的多模态钓鱼检测威胁情报平台,用于检测传统黑名单无法覆盖的 zero-day 钓鱼攻击。

Stars: 0 | Forks: 0

# Phish-Chaser: 多模态威胁情报系统 3ef90877-d473-46f9-bb6f-b1c0b6703946 3dca4e49-4461-48ab-9927-ce3565caf235056c530b-8815-48f8-ace2-5b30a7bbd533 ## 概述 **Phish-Chaser** 是一款先进的端到端威胁情报 Web 应用程序,旨在检测并拦截 zero-day 钓鱼攻击。传统的钓鱼检测器仅依赖于黑名单或基础的 URL 分析,这在应对现代“无上下文”攻击(例如,托管窃取的品牌 Logo 的一次性随机 URL)时显得无能为力。 本项目通过采用**多模态“纵深防御”架构**来解决这一漏洞: 1. **词法引擎 (机器学习):** 利用 XGBoost 和 Random Forest 模型的集成,分析 URL 的数学结构。 2. **视觉引擎 (深度学习):** 对网页截图使用光学字符识别 (OCR) 来提取品牌特征,从而捕获未经授权域名上的视觉伪装。 ## 核心功能 * **Zero-Day 检测:** 通过识别窃取的 Logo 这一视觉“谎言,在任何安全数据库中出现之前,即可识别出恶意的凭据收集网站。 * **实时 SOC 仪表盘:** 使用 Streamlit 和 Plotly 构建,具有动态的主威胁指标和历史实时扫描指标。 * **数据规范化引擎:** 包含自定义的正则表达式和 URL 解析器,可动态剔除良性前缀(如 `www.`),以防止训练偏差和误报。 * **可解释 AI (XAI):** 在 UI 中具有取证下拉菜单,可显示驱动算法决策的精确数学特征。 ## 技术栈 * **前端/UI:** Streamlit, Plotly * **机器学习:** XGBoost, Scikit-Learn (Random Forest), Joblib * **计算机视觉:** EasyOCR (PyTorch) * **数据处理:** Pandas, NumPy, Regex, Urllib ## 工作原理:Pipeline 1. **输入:** 用户提供可疑的 URL 并上传目标着陆页的截图。 2. **词法提取:** 后端在数学上将 URL 解构为 28 个离散特征(例如,字符频率、子域名计数、连字符、熵)。 3. **ML 分类:** 由预训练的 XGBoost 和 Random Forest 模型评估这些特征,以确定基准的结构性风险评分。 4. **空间 OCR 分析:** EasyOCR 扫描截图以读取文本并识别品牌名称(例如,“PayPal”、“Amazon”)。 5. **上下文验证:** 系统检查识别出的品牌是否被合法授权托管在该 URL 的 True Hostname 上。 6. **最终判定:** 如果词法评分表现出高度异常,或者 OCR 检测到未经授权的品牌冒充,该站点将被标记为 **CRITICAL THREAT(严重威胁)**。 ## 可解释 AI 与特征重要性 为了确保我们的机器学习模型是透明的,我们分析了 XGBoost 和 Random Forest 分类器的特征重要性。 **核心洞察:** * **首要威胁指标:** 两个模型一致认为 `num_special_chars_url` 是检测恶意链接的最关键特征。攻击者经常使用过多的特殊字符(`@`、`-`、`_`)来混淆真实目的地或嵌入窃取的 API 密钥。 * **XGBoost 行为:** XGBoost 模型高度侧重于特殊字符计数,在其决策树中赋予其超过 90% 的相对重要性,这使其在捕获混淆行为方面极为高效。 * **Random Forest 行为:** Random Forest 模型利用了更加均衡的 Gini 重要性分布。虽然它也优先考虑特殊字符,但它同时严重依赖于 `num_slashes_url`、`path_length` 和 `num_dots_url` 来评估路由路径的整体结构异常。 ### XGBoost 特征重要性 ![XGBoost 图表](https://static.pigsec.cn/wp-content/uploads/repos/cas/a2/a25dcabb14e21e63b6d0446d70169cb1a5cd099ed5c4266d88b62ce985e70398.png) ### Random Forest 特征重要性 ## ![Random Forest 图表](https://static.pigsec.cn/wp-content/uploads/repos/cas/82/82fc9780502be073a59eec2c6eafa1ce06324e5065a0abe961b3431c259571bc.png) ## 安装与设置 ### 前置条件 确保您已安装 Python 3.8+。 ### 1. 克隆仓库 ``` git clone https://github.com/suriyaSEnthilkumarSD/phising_detection cd phish-chaser ``` ### 2. 安装依赖项 ``` pip install streamlit pandas plotly xgboost scikit-learn easyocr joblib pillow ``` ### 3. 模型设置 确保您的预训练模型文件和配置字典已放置在正确的目录中: * `xgboost_lexical_stage1.pkl` * `random_forest_lexical_stage1.pkl` * `brand_config.py` * `ocr_chaser.py` ### 4. 数据集配置(本地设置) 由于 GitHub 的文件大小限制以及自动化安全协议(会阻止上传包含暴露的 API 密钥的真实、活跃钓鱼 URL),本仓库不包含原始数据集和图像库。 要在本地训练模型或运行批量扫描程序,您必须重新创建 `datasets/` 目录并从官方来源下载原始数据: **A. 创建目录:** 在项目的根目录下创建一个名为 `datasets` 的文件夹。 **B. 下载恶意 URL 数据集:** * 访问 [PhishTank](https://www.google.com/search?q=https://phishtank.org/developer_info.php) 并下载 CSV 格式的活跃钓鱼 URL 数据集。 * 将文件保存为 `datasets/phishtank.csv`。 **C. 下载良性 URL 数据集:** * 访问 [Tranco List](https://tranco-list.eu/) 并下载最新的排名前 100 万的域名列表。 * 将文件保存为 `datasets/tranco.csv`。 **E. 下载网页截图数据集(用于 OCR Pipeline):** * 下载用于训练和评估 OCR 引擎的 **Phish30k** 数据集(30,000 张恶意网页截图)和 **Benign_30k** 数据集(30,000 张安全网页截图):[链接到您的截图数据集] * 将文件夹解压到 `datasets/phish30k/` 和 `datasets/benign_30k/`。 **预期的文件夹结构:** ``` phish-chaser/ ├── datasets/ │ ├── benign_30k/ # 30,000 safe webpage screenshots for OCR │ ├── phish30k/ # 30,000 malicious webpage screenshots for OCR │ ├── phishtank.csv │ └── tranco.csv ├── app.py └── ... ``` ### 5. 运行应用程序 ``` streamlit run app.py ``` ## 未来增强功能 * **自动截图:** 集成 Selenium 或 Playwright,仅需提供 URL 即可在后台自动捕获网页截图。 * **高级 NLP:** 实施 BERT 以分析抓取的网页文本的自然语言,检测社会工程学中常见的紧急/威胁性语言。 * **云端部署:** 使用 Docker 容器化应用程序,并通过 AWS EC2 或 Google Cloud Run 进行部署。 ``` ```
标签:Apex, Kubernetes, Python, XGBoost, 光学字符识别(OCR), 凭据扫描, 威胁情报, 开发者工具, 无后门, 机器学习, 逆向工具, 钓鱼检测