Pingu314/phishing_url_analyzer

GitHub: Pingu314/phishing_url_analyzer

一款用于SOC分诊的Python工具,通过提取URL特征并结合威胁情报进行量化风险评分,同时映射至MITRE ATT&CK技术。

Stars: 0 | Forks: 0

# 钓鱼 URL 分析器 ![CI](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/19fc415b17035254.svg) ![Python](https://img.shields.io/badge/python-3.9%20%7C%203.11%20%7C%203.12-blue) ![License](https://img.shields.io/badge/license-MIT-green) 一个 SOC 分诊工具,用于分析 URL 的钓鱼指标,使用威胁情报进行富化,并将发现结果映射到 MITRE ATT&CK 技术。 构建为一个不断增长的 SOC 分析师作品集中的 **项目 2** —— 在代码中演示 一级 (Tier-1) 分诊工作流程。 ## 它的功能 为每个提交的 URL 运行一个五阶段的 pipeline: 1. **重定向链跟踪** - 跟踪跳转,检测链中段的域名切换 2. **特征提取** - 25+ 个信号:品牌冒充、域名仿冒 (typosquatting)、同形字 (homoglyphs)、熵值、云托管滥用、恶意软件扩展名、私有 IP 等 3. **威胁情报富化** - VirusTotal v3、URLScan.io、WHOIS 域名年龄(均为可选 - 在没有 API 密钥时会优雅降级) 4. **风险评分** - 加权的、基于规则的 0–100 分制,附带 `BENIGN`(良性) / `SUSPICIOUS`(可疑) / `MALICIOUS`(恶意) 裁定及置信水平 5. **MITRE ATT&CK 映射** - 使用相关的技术 ID 标记每个结果 ## 安装 ``` git clone https://github.com/Pingu314/phishing_url_analyzer.git cd phishing_url_analyzer pip install -e ".[dev]" cp config/config.json.example config/config.json # 编辑 config/config.json 并添加您的 API keys(可选) ``` ## 使用方法 ``` # Single URL python -m src.main -u "http://paypa1.com/verify" # Batch file python -m src.main -f data/sample_urls/urls.txt # 使用所有选项 python -m src.main -u "http://suspicious-site.com/login" --verbose --export --csv ``` | Flag | 描述 | |------|-------------| | `-u URL` | 要分析的单个 URL | | `-f FILE` | 每行包含一个 URL 的文件(自动导出 JSON) | | `-v` / `--verbose` | 显示完整的特征字典和情报输出 | | `--export` | 将 JSON 报告导出到 `reports/` | | `--csv` | 将 CSV 摘要导出到 `reports/` | | `--config PATH` | 配置文件的路径(默认:`config/config.json`) | ## 评分原理 每个信号增加固定数量的分数。分数上限为 100。 | Signal | Weight | MITRE | |--------|--------|-----------| | VirusTotal 恶意引擎 | 20 × 引擎数(最高 40) | T1566 | | URLScan 恶意裁定 | 20 | T1566 | | 品牌冒充 | 18 | T1566.002 | | 域名仿冒(同形字 / 编辑距离) | 18 | T1566.002 | | 云托管滥用 | 18 | T1583.006 | | 主机为私有 IP | 20 | T1583.005 | | 子域名中包含品牌名 | 15 | T1566.002 | | 路径中包含恶意软件扩展名 | 15 | T1105 | | 使用 IP 作为主机 | 15 | T1583.005 | | 重定向域名切换 | 12 | T1659 | | 可疑 TLD | 10 | - | | 新域名(< 30 天) | 8 | - | | URL 中包含可疑关键词 | 8 | T1566.002 | | 恶意路径关键词 | 8 | T1105 | | URL 中包含 @ 符号 | 8 | - | | 无 HTTPS | 7 | - | | 高路径熵 | 6 | T1027 | | 十六进制编码 | 6 | T1027 | | 重定向参数 | 6 | T1659 | | 高域名熵 | 5 | - | | 路径中包含双斜杠 | 5 | - | | 长 URL(> 75 个字符) | 4 | - | | 多次重定向跳转(> 1 次) | 4 | T1027 | | 多连字符(> 3 个) | 3 | - | | 深层路径(> 4 层) | 3 | - | | 多个子域名(> 2 个) | 3 | - | | 非标准端口 | 3 | - | **裁定阈值:** `BENIGN` 0-20 · `SUSPICIOUS` 21-49 · `MALICIOUS` 50–100 **置信水平:** | Level | Condition | |-------|-----------| | HIGH | TI 确认为恶意并且触发了 3+ 个信号 | | MEDIUM | 触发了 4+ 个信号或存在 TI 数据 | | LOW | 触发了 2–3 个信号 | | VERY_LOW | 触发了 0–1 个信号 | ## 架构 ``` URL input │ ▼ RedirectFollower ──► redirect_chain (hops, domain switches, final URL) │ ▼ URLFeatureExtractor ──► features dict (25+ signals, original URL) │ ▼ ThreatIntelEnricher ──► intel dict (VirusTotal · URLScan.io · WHOIS) │ ▼ RiskScorer ──► score, verdict, confidence, breakdown │ ▼ map_to_mitre ──► [T1566.002, T1027, T1583.006, ...] │ ▼ ReportGenerator ──► reports/report_YYYYMMDD_HHMMSS.json / .csv ``` ## 项目结构 ``` phishing_url_analyzer/ ├── src/ │ ├── main.py # CLI entrypoint │ ├── url_extractor.py # Feature extraction (25+ signals) │ ├── risk_scorer.py # Weighted scoring + confidence │ ├── threat_intel.py # VirusTotal · URLScan.io · WHOIS │ ├── redirect_follower.py # Redirect chain follower │ ├── report_generator.py # JSON + CSV export │ └── mitre_mapper.py # MITRE ATT&CK tag mapper ├── config/ │ ├── settings.py # All weights, lists, thresholds │ └── config.json.example # API key template ├── tests/ │ └── test_analyzer.py # pytest test suite (74 tests) └── data/ └── sample_urls/ └── urls.txt # Sample URLs for batch testing ``` ## 运行测试 ``` pytest tests/ -v pytest tests/ --cov=src --cov-report=term-missing ``` ## 免责声明 本工具为 **教育和作品集目的** 而构建,是 SOC 分析师学习路径(CompTIA Security+,TryHackMe SOC Level 1)的一部分。 - **请勿**使用此工具分析您没有权限测试的 URL - 威胁情报查询(VirusTotal,URLScan.io)会将 URL 提交给第三方服务 —— 请勿在配置了 API 密钥的情况下分析敏感或内部 URL - URLScan.io 提交的扫描设置为 `visibility: private`,但结果链接仅对提交账户可见 - 结果是基于启发式和规则的 —— 预期会出现误报和漏报 - 本工具**不**能替代生产环境的安全工具 ## 路线图 本项目是模块化 SOC 分析师作品集的一部分。每个模块都是一个独立的工具,同时也会暴露稳定的 Python API 以供其他模块复用。 | # | Project | Status | 描述 | |---|---------|-------|-------------| | P1 | [`soc_threat_analyzer`](https://github.com/Pingu314/soc_threat_analyzer) | Done | IOC 富化与分诊 | | P2 | `phishing_url_analyzer` | Done | 钓鱼 URL 分析 pipeline(本仓库) | | P3 | `email_header_analyzer` | Next | SPF/DKIM/DMARC 解析,Received 链 IP 富化,通过 P2 分析嵌入的 URL | | P4 | `soc_triage_suite` | Planned | 统一的 CLI + API,将所有模块组合到一个分诊界面中 |
标签:Ask搜索, Caido项目解析, Cloudflare, MITRE ATT&CK, Python, URL分析, VirusTotal, WHOIS, 同形字, 品牌仿冒, 域名抢注, 威胁情报, 安全分诊, 安全运营中心, 开发者工具, 搜索语句(dork), 无后门, 特征提取, 网络安全, 网络映射, 自动化分析, 跨站脚本, 逆向工具, 重定向跟踪, 隐私保护