haroonk2607/arzens-assignment4-threat-intel

GitHub: haroonk2607/arzens-assignment4-threat-intel

该项目是一个威胁情报自动化富化工具,通过集成多个主流情报源 API 对安全指标进行批量查询、风险评分和报告生成,帮助安全分析师高效完成告警分流。

Stars: 0 | Forks: 0

# THE ARZENS Assignment 4 - 威胁情报富化 - **实习生:** mharoonkhan - **方向:** AI、自动化与安全工程 (初级) - **作业:** API 集成与威胁情报基础 ## 项目摘要 本项目自动化对 IP 地址、域名、文件哈希和 URL 进行威胁情报查询。它支持 VirusTotal、AbuseIPDB 和 AlienVault OTX,将提供商的结果整合为简单的风险评分,并导出 JSON、CSV 和文本报告。 该项目还包括: - 创建事件报告的单个告警富化工作流。 - 针对 50 个或以上指标 (indicator) 的批量分析工作流。 - 用于在没有 API 密钥的情况下进行安全测试的确定性 `--demo` 模式。 - 输入验证、带有指数退避 (exponential backoff) 的重试、密钥轮换、速率限制、JSON 缓存以及优雅的提供商错误处理。 ## 关于样本输出的重要说明 提供的 `sample_output.*` 文件以及 `incidents_demo/` 和 `bulk_outputs_demo/` 下的文件均是在 **demo 模式**下生成的。它们是合成的训练结果,不得视为真实的信誉数据。实时查询需要用户自己的 API 密钥。 ## 文件 | 文件 | 用途 | |---|---| | `ArzensIntern_mharoonkhan_threat_intel_tool.py` | 主要富化工具 | | `ArzensIntern_mharoonkhan_alert_enricher.py` | 单个告警工作流 | | `ArzensIntern_mharoonkhan_bulk_analyzer.py` | 批量分析工作流 | | `config.yaml` | Endpoint、延迟、缓存和重试设置 | | `.env.example` | 安全的 API 密钥模板 | | `sample_indicators.txt` | 10+ 个混合指标 | | `sample_output.json`, `.csv`, `.txt` | 富化输出示例 | | `sample_indicators_bulk.csv` | 50+ 个批量指标 | | `sample_alert.json` | SOC 告警示例 | | `incidents_demo/` | 单个告警的事件报告示例 | | `bulk_outputs_demo/` | 批量 CSV、JSON 和 HTML 报告示例 | | `screenshots/` | 程序输出证据 | | `ArzensIntern_mharoonkhan_ResearchNote.pdf` | 任务 1 研究报告 | | `ArzensIntern_mharoonkhan_AIAssistanceNote.pdf` | AI 使用披露 | | `WORKFLOWS.md` | 工作流和风险评分文档 | | `test_assignment4.py` | 针对性自动化测试 | ## 设置 建议使用 Python 3.10 或更高版本。 ``` python -m venv .venv .\.venv\Scripts\Activate.ps1 python -m pip install -r requirements.txt ``` 复制密钥模板: ``` Copy-Item .env.example .env ``` 打开 `.env` 并添加您自己的密钥。切勿提交或分享此文件。 ``` VT_API_KEYS=your_virustotal_key ABUSEIPDB_API_KEYS=your_abuseipdb_key OTX_API_KEYS=your_otx_key ``` 多个密钥可以用逗号分隔。在遇到速率限制或身份验证响应后,该工具将轮换到下一个配置的密钥。 ## API 注册 - VirusTotal 社区及 API 密钥:https://www.virustotal.com/gui/join-us - VirusTotal API 文档:https://docs.virustotal.com/ - AbuseIPDB 账户/API 页面:https://www.abuseipdb.com/account/api - AbuseIPDB API 文档:https://docs.abuseipdb.com/ - AlienVault OTX 注册:https://otx.alienvault.com/ - OTX 信息及 DirectConnect API:https://levelblue.com/open-threat-exchange ## 安全的 Demo 命令 针对提供的指标列表运行主工具: ``` python ArzensIntern_mharoonkhan_threat_intel_tool.py ` --input-file sample_indicators.txt ` --demo --no-cache ` --output-dir sample_outputs ` --output-prefix sample_output ``` 运行告警工作流: ``` python ArzensIntern_mharoonkhan_alert_enricher.py ` --alert sample_alert.json ` --demo --no-cache ` --output-dir incidents_demo ``` 运行批量工作流: ``` python ArzensIntern_mharoonkhan_bulk_analyzer.py ` --input sample_indicators_bulk.csv ` --demo --no-cache ` --output-dir bulk_outputs_demo ``` ## 实时查询示例 在 `.env` 中添加密钥后,省略 `--demo`: ``` python ArzensIntern_mharoonkhan_threat_intel_tool.py ` --ip 8.8.8.8 ` --config config.yaml ` --env-file .env ` --output-dir live_outputs ``` 其他支持的输入: ``` python ArzensIntern_mharoonkhan_threat_intel_tool.py --domain example.com python ArzensIntern_mharoonkhan_threat_intel_tool.py --hash SHA256_VALUE python ArzensIntern_mharoonkhan_threat_intel_tool.py --url https://example.com/ python ArzensIntern_mharoonkhan_threat_intel_tool.py --interactive ``` ## 输入文件格式 每行一个指标,可自动检测: ``` 8.8.8.8 example.com https://example.com/login ``` 推荐的显式格式为: ``` ip,8.8.8.8 domain,example.com url,https://example.com/login hash,275a021bbfb6489e54d471899f7db9d1663fc695ec2fe2a2c4538aabf651fd0f ``` ## 测试 ``` python -m pytest -q ``` 这些测试使用 demo 模式,不会联系外部服务。 ## 安全性与限制 - API 密钥从 `.env` 读取,且绝不打印。 - `.env` 和缓存目录已被 `.gitignore` 排除。 - 输入在创建 URL 之前会进行验证。 - 请求使用 HTTPS、超时、提供商延迟、重试和退避。 - 良好的信誉结果并不能证明某个指标是安全的。 - 风险评分支持分析师分流 (triage),但不能代替人工判断。 - 免费层级的配额和提供商数据可能会发生变化。请查看当前的官方条款。 - 提交的样本结果中不包含实时 API 执行,因为本次提交中未存储任何个人 API 密钥。 ## Git 仓库 https://github.com/haroonk2607/arzens-assignment4-threat-intel 提交包中的 `ArzensIntern_mharoonkhan_GitRepositoryLink.txt` 文件内也提供了相同的链接。
标签:API集成, GitHub, Python, 可观测性, 威胁情报, 安全规则引擎, 安全运营, 实时处理, 开发者工具, 扫描框架, 无后门, 网络调试, 自动化, 逆向工具