BHARATHKUMARN66/Cyber-Threat-Intelligence-Platform
GitHub: BHARATHKUMARN66/Cyber-Threat-Intelligence-Platform
一个基于Flask的轻量级CTI平台,自动化收集外部威胁情报并与内部安全日志关联,生成防火墙规则、YARA规则等可执行防御工件。
Stars: 0 | Forks: 0
# SOC 情报自动化 (CTI)
一个以资产为中心的网络威胁情报 (CTI) Web 平台,该平台收集外部威胁指标,对其进行规范化和富化处理,将其与上传的内部安全日志进行关联,并自动生成可执行的输出(防火墙黑名单、防火墙规则、YARA 规则和关联工件)。
## 项目概述
本项目实现了一个完整的 CTI 工作流程,并提供了一个专业的 SOC 风格仪表板:
1. 配置目标资产和启用的安全控制措施。
2. 上传相关日志(Firewall、SIEM/DNS、EDR/Endpoint)。
3. 运行威胁情报收集和规范化。
4. 将上传的日志与规范化指标进行关联。
5. 生成用于执行和报告的输出工件。
6. 在动态仪表板中查看实时指标和状态。
## 主要功能
- 端到端 CTI 生命周期自动化。
- 与外部威胁源集成:
1. AbuseIPDB
2. URLHaus
3. ThreatFox
- 使用工作线程并发收集源数据。
- 指标规范化,包含可靠性评分和严重性映射。
- 用于 IP/域名/哈希匹配的日志关联引擎。
- 对标记为 `threat_match=MATCHED_THREAT_FEED` 的样本日志提供回退关联支持。
- 自动化输出生成:
1. `outputs/firewall_blocklist.csv`
2. `outputs/firewall_rules.log`
3. `outputs/yara_rules.yar`
4. `outputs/correlation_results.json`
5. `outputs/unmatched_records.json`
- 两阶段 上传 -> 分析 UX(上传不会自动运行流水线)。
- 上传和仪表板页面的动态卡片和实时轮询 (`/live-stats`)。
- 增强的 UI/UX,包含微交互、加载状态和响应式布局。
## 技术栈
- Backend: Flask (Python)
- Frontend: Jinja2 templates + CSS + lightweight vanilla JavaScript
- Data exchange: JSON + CSV
- Runtime: Python virtual environment (`.venv`)
## 仓库结构
顶层目录及其用途:
- `web_app.py`: 主 Flask 应用程序和路由编排。
- `automation/`: SOC 集成流水线和工件生成触发器。
- `threat_intelligence/`: 源收集器、富化、规范化。
- `correlation/`: 日志解析和威胁关联引擎。
- `security_automation/`: 防火墙/YARA/风险/非匹配工件生成器。
- `templates/`: Jinja2 页面模板(`index`、`config`、`upload`、`dashboard`、`base`)。
- `static/`: 共享和页面级 CSS。
- `config/`: 应用程序设置和 API 密钥配置。
- `data/`: 原始 + 规范化威胁源和持久化用户设置。
- `uploads/`: 上传/转换后的日志文件。
- `outputs/`: 生成的规则和报告。
- `logs/`: 操作日志和复制日志数据,用于故障排除。
## 功能工作流程
### 1. 起始页 (`/`)
- 重置会话并展示平台功能 + 工作流程概览。
### 2. 资产配置 (`/config`)
- 捕获:
1. 资产类型
2. 关键端口
3. 资产子网
4. 主机名/IP
5. 启用的控制措施 (Firewall, EDR, SIEM)
- 将用户设置持久化到 `data/user_settings.json`。
### 3. 上传日志 (`/upload`)
- 根据所选控制措施验证所需日志。
- 将上传的文件保存到 `uploads/` 并复制规范化名称以用于关联。
- 标记 `logs_uploaded=True` 并让用户保留在上传页面。
- 不自动运行情报分析。
### 4. 分析威胁情报 (`/analyze-threat`)
- 运行收集器流水线 (`run_pipeline()`)。
- 运行关联 (`run_correlation(user_config=...)`)。
- 生成输出和风险元数据。
- 成功后重定向到仪表板。
### 5. 仪表板 (`/dashboard`)
- 显示:
1. 源指标
2. 威胁评分
3. 关联状态
4. 流水线状态
5. 热门指标
6. 生成的控制措施动作
- 通过轮询 `/live-stats` 自动刷新实时卡片。
## 数据流摘要
1. 收集器获取原始指标 -> `data/raw_threat_feed.json`。
2. 规范化器对指标进行分组和富化 -> `data/normalized_threat_feed.json`。
3. 从 `uploads/*.csv` 解析上传的日志。
4. 关联引擎将指标与日志进行比较。
5. 关联载荷 -> `outputs/correlation_results.json`。
6. 规则生成器推导出防火墙/YARA/执行工件。
## 核心模块
### 威胁情报层
- `threat_intelligence/collector_manager.py`
- 并发运行 AbuseIPDB、URLHaus、ThreatFox 收集器。
- `threat_intelligence/normalizer.py`
- 规范化指标,分配置信度/严重性,富化 IP 元数据。
### 关联层
- `correlation/security_log_parser.py`
- 解析防火墙、DNS、端点 CSV 日志。
- `correlation/threat_correlation_engine.py`
- 匹配:
1. IP 指标与 `src_ip` 和 `dst_ip`
2. 域名指标与 DNS 日志
3. 哈希指标与端点日志
- 添加 `NO_MATCH` 记录以保证可追溯性。
### 自动化层
- `automation/threat_analysis_service.py`
- 编排关联和工件生成。
- 根据实际匹配计数计算风险和统计数据。
- `security_automation/firewall_blocklist_generator.py`
- 构建去重的黑名单(严重/高/中严重性)。
- `security_automation/iptables_rule_generator.py`
- 根据黑名单发出 iptables 规则。
- `security_automation/yara_generator.py`
- 根据匹配的哈希发出 YARA 规则。
## API 和路由参考
主要用户路由:
- `GET /` -> 落地页
- `POST /start` -> 启动新分析会话
- `GET|POST /config` -> 资产 + 控制配置
- `GET|POST /upload` -> 日志上传 + 验证
- `POST /analyze-threat` -> 流水线 + 关联执行
- `GET /dashboard` -> 最终审查仪表板
状态和实时数据路由:
- `GET /pipeline-status` -> 后台流水线状态
- `GET /live-stats` -> 上传/仪表板轮询载荷
下载路由:
- `GET /download/blocklist`
- `GET /download/yara`
- `GET /download/correlation`
- `GET /download/threat-feed`
- `GET /download/raw-feed`
## 设置和运行
### 前置条件
- Python 3.10+
- 虚拟环境支持
### 安装
```
python -m venv .venv
.venv\Scripts\activate
pip install -r requirements.txt
```
### 环境变量
在运行应用程序之前设置这些:
```
$env:ABUSEIPDB_API_KEY = "your-real-abuseipdb-api-key"
$env:FLASK_SECRET_KEY = "replace-with-a-random-secret"
```
### 启动应用程序
```
.venv\Scripts\python.exe web_app.py
```
### 验证模板
```
.venv\Scripts\python.exe template_render_validation.py
```
## 配置
### API 密钥
- 文件: `config/api_keys.py`
- 当前实现从 `ABUSEIPDB_API_KEY` 环境变量读取 AbuseIPDB API 密钥。
- 仓库保留了一个假的占位符值,因此不会提交真实的密钥。
建议改进:
- 将密钥移至环境变量,切勿提交真实密钥。
示例方法:
```
import os
ABUSEIPDB_API_KEY = os.getenv("ABUSEIPDB_API_KEY", "ABUSEIPDB_API_KEY_PLACEHOLDER")
```
### 如何获取 AbuseIPDB API 密钥
1. 创建或登录您的 AbuseIPDB 帐户。
2. 打开帐户 API 页面:`https://www.abuseipdb.com/account/api`
3. 从仪表板生成新的 API 密钥。
4. 复制密钥并在启动应用程序之前将其设置在您的 Shell 中。
PowerShell 示例:
```
$env:ABUSEIPDB_API_KEY = "paste-your-generated-key-here"
$env:FLASK_SECRET_KEY = "replace-with-a-random-secret"
.venv\Scripts\python.exe web_app.py
```
如果 `ABUSEIPDB_API_KEY` 保留为占位符值,AbuseIPDB 收集器将自动跳过。
### GitHub 发布检查清单
- 不要提交真实的 API 密钥或生产机密。
- 在第一次提交之前初始化 Git 并验证忽略的文件。
- 将 `.venv/`、生成的输出、上传的日志和运行时缓存排除在仓库之外。
示例命令:
```
git init
git add .
git status
git commit -m "Initial commit"
git branch -M main
git remote add origin https://github.com//.git
git push -u origin main
```
## 输出工件
分析成功后:
- `outputs/firewall_blocklist.csv`: 用于黑名单导入的 IP/动作映射。
- `outputs/firewall_rules.log`: iptables 就绪的 DROP 规则。
- `outputs/yara_rules.yar`: 基于匹配哈希的 YARA 规则。
- `outputs/correlation_results.json`: 完整的关联载荷 + 元数据。
- `outputs/unmatched_records.json`: 用于审查的非匹配日志。
## UI/UX 亮点
- 所有页面均采用 SOC 风格的视觉语言。
- 动态卡片绑定到运行时数据,而非静态占位符。
- 上传页面加载指示器和受控的两阶段工作流程。
- 基于轮询的关键指标和状态实时更新。
- 微交互:
1. Focus-visible 可访问性状态
2. 卡片悬停深度和闪烁效果
3. 带有 reduced-motion 回退的滚动显示动画
## 故障排除
### 应用程序启动时退出
常见原因:缺少依赖项。
修复:
```
.venv\Scripts\python.exe -m pip install -r requirements.txt
```
### 防火墙或 YARA 输出为空
可能的原因:
1. 上传的日志中没有匹配的指标
2. 未提供用于 YARA 的端点哈希日志
3. 源/日志格式不匹配
检查:
- 验证 `uploads/firewall_logs.csv` 和/或 `uploads/endpoint_logs.csv` 非空。
- 检查 `outputs/correlation_results.json` 中的 `MATCH` 记录。
### 模板验证错误
- 使用项目 venv 解释器运行 `template_render_validation.py`。
保留了兼容性包装器以用于过渡:
- `app.py` -> 转发到 `web_app.py`
- `validate_templates.py` -> 转发到 `template_render_validation.py`
- `test_run.py` -> 转发到 `threat_pipeline_smoke_runner.py`
## 当前状态
该项目目前支持:
- 从上传到生成工件的稳定端到端流程。
- 数据驱动的指标和实时仪表板更新。
- 用于 SOC 演示和实际工作流程验证的强大基线 UI/UX。
## 未来增强
- 通过 `.env` 和密钥保险库实践进行完整的 API 密钥管理。
- 使用 WebSocket 实时更新代替轮询。
- 指标/关联表的分页和高级过滤器。
- 可导出的 PDF 风险报告生成。
- 为所有流水线阶段覆盖自动化单元和集成测试。
标签:AbuseIPDB, AMSI绕过, DAST, DNS 反向解析, DNS安全, EDR, Flask, FTP漏洞扫描, IOC, IP 地址批量处理, Python, ThreatFox, URLHaus, Web安全, YARA, 云资产可视化, 仪表盘, 失陷指标, 威胁情报, 威胁检测, 安全编排, 安全运营中心, 开发者工具, 恶意软件分析, 情报报告, 数据可视化, 无后门, 日志关联, 网络信息收集, 网络安全, 网络安全审计, 网络映射, 网络调试, 脆弱性评估, 自动化, 蓝队分析, 资产安全, 逆向工具, 防火墙日志分析, 防火墙规则, 隐私保护