Tahir982/threat-intelligence-platform
GitHub: Tahir982/threat-intelligence-platform
基于 Spring Boot 和 Kafka 的威胁情报微服务平台,实现从原始报告提交到 IOC 提取、验证、评分、持久化和分析展示的全流程自动化处理。
Stars: 0 | Forks: 0
# 威胁情报平台
一个基于 Spring Boot 的微服务平台,用于接收原始威胁报告、提取威胁指标、对其进行验证、评估严重程度、存储至 MySQL,并通过 REST API 和仪表盘提供分析功能。
## 系统架构
```
flowchart LR
A["REST Submit Threat
ingestion-service :8081"] --> B["Kafka topic
raw-threat-data"] B --> C["extraction-service :8082
IP, domain, URL, hash parsing"] C --> D["Kafka topic
extracted-iocs"] D --> E["processing-service :8083
validation and normalization"] E --> F["Kafka topic
validated-iocs"] F --> G["ranking-service :8084
deterministic severity scoring"] G --> H["Kafka topic
enriched-iocs"] H --> I["database-service :8085
MySQL persistence and logs"] I --> J["MySQL
threats, threat_logs"] J --> K["query-analytics-service :8086
REST analytics and dashboard"] ``` ## 服务列表 | 服务 | 端口 | 职责 | | --- | ---: | --- | | ingestion-service | 8081 | 接收原始报告并发布 `raw-threat-data` | | extraction-service | 8082 | 提取 IP、域名、URL、MD5 和 SHA-256 指标 | | processing-service | 8083 | 验证格式,拒绝私有 IP,规范化指标 | | ranking-service | 8084 | 分配确定性的严重性分数、等级、类别和建议 | | database-service | 8085 | 更新或插入富化指标,跟踪出现次数,写入日志 | | query-analytics-service | 8086 | 提供排名后的威胁、警报、摘要、日志以及仪表盘 UI | ## 本地运行 构建所有服务: ``` mvn clean package ``` 启动 Kafka、MySQL 以及所有服务: ``` docker compose up --build ``` 打开仪表盘: ``` http://localhost:8086/ ``` 提交示例报告: ``` curl -X POST http://localhost:8081/api/threats/sample ``` 提交自定义数据: ``` curl -X POST http://localhost:8081/api/threats ` -H "Content-Type: application/json" ` --data-binary "@docs/sample-threat.json" ``` ## 主要 API | 方法 | 端点 | 用途 | | --- | --- | --- | | POST | `/api/threats` | 提交原始威胁报告 | | POST | `/api/threats/sample` | 排队一个演示/演示报告 | | POST | `/api/extraction` | 直接测试 IOC 提取 | | POST | `/api/processing` | 直接测试验证 | | POST | `/api/ranking` | 直接测试评分 | | GET | `/api/database/threats` | 读取已持久化的威胁 | | GET | `/api/database/summary` | 读取持久化摘要 | | GET | `/api/analytics/ranked-threats` | 读取排名前列的威胁 | | GET | `/api/analytics/alerts` | 读取高危警报 | | GET | `/api/analytics/summary` | 读取仪表盘指标 | ## 数据库 Schema 数据库服务持久化了以下内容: - `threats`:指标值、类型、来源、置信度、状态、严重性分数、严重性等级、类别、建议、首次发现时间、最后发现时间、出现次数。 - `threat_logs`:事件类型、服务名称、威胁值、消息、创建时间戳。 Schema 参考:`database-service/src/main/resources/schema.sql`。 ## 演示流程 1. 运行 `mvn clean package`。 2. 运行 `docker compose up --build`。 3. 打开 `http://localhost:8086/`。 4. 点击 `Submit Sample Threat` 或调用 `POST http://localhost:8081/api/threats/sample`。 5. 刷新仪表盘,观察指标如何进入排名威胁、警报、严重性细分和日志中。
ingestion-service :8081"] --> B["Kafka topic
raw-threat-data"] B --> C["extraction-service :8082
IP, domain, URL, hash parsing"] C --> D["Kafka topic
extracted-iocs"] D --> E["processing-service :8083
validation and normalization"] E --> F["Kafka topic
validated-iocs"] F --> G["ranking-service :8084
deterministic severity scoring"] G --> H["Kafka topic
enriched-iocs"] H --> I["database-service :8085
MySQL persistence and logs"] I --> J["MySQL
threats, threat_logs"] J --> K["query-analytics-service :8086
REST analytics and dashboard"] ``` ## 服务列表 | 服务 | 端口 | 职责 | | --- | ---: | --- | | ingestion-service | 8081 | 接收原始报告并发布 `raw-threat-data` | | extraction-service | 8082 | 提取 IP、域名、URL、MD5 和 SHA-256 指标 | | processing-service | 8083 | 验证格式,拒绝私有 IP,规范化指标 | | ranking-service | 8084 | 分配确定性的严重性分数、等级、类别和建议 | | database-service | 8085 | 更新或插入富化指标,跟踪出现次数,写入日志 | | query-analytics-service | 8086 | 提供排名后的威胁、警报、摘要、日志以及仪表盘 UI | ## 本地运行 构建所有服务: ``` mvn clean package ``` 启动 Kafka、MySQL 以及所有服务: ``` docker compose up --build ``` 打开仪表盘: ``` http://localhost:8086/ ``` 提交示例报告: ``` curl -X POST http://localhost:8081/api/threats/sample ``` 提交自定义数据: ``` curl -X POST http://localhost:8081/api/threats ` -H "Content-Type: application/json" ` --data-binary "@docs/sample-threat.json" ``` ## 主要 API | 方法 | 端点 | 用途 | | --- | --- | --- | | POST | `/api/threats` | 提交原始威胁报告 | | POST | `/api/threats/sample` | 排队一个演示/演示报告 | | POST | `/api/extraction` | 直接测试 IOC 提取 | | POST | `/api/processing` | 直接测试验证 | | POST | `/api/ranking` | 直接测试评分 | | GET | `/api/database/threats` | 读取已持久化的威胁 | | GET | `/api/database/summary` | 读取持久化摘要 | | GET | `/api/analytics/ranked-threats` | 读取排名前列的威胁 | | GET | `/api/analytics/alerts` | 读取高危警报 | | GET | `/api/analytics/summary` | 读取仪表盘指标 | ## 数据库 Schema 数据库服务持久化了以下内容: - `threats`:指标值、类型、来源、置信度、状态、严重性分数、严重性等级、类别、建议、首次发现时间、最后发现时间、出现次数。 - `threat_logs`:事件类型、服务名称、威胁值、消息、创建时间戳。 Schema 参考:`database-service/src/main/resources/schema.sql`。 ## 演示流程 1. 运行 `mvn clean package`。 2. 运行 `docker compose up --build`。 3. 打开 `http://localhost:8086/`。 4. 点击 `Submit Sample Threat` 或调用 `POST http://localhost:8081/api/threats/sample`。 5. 刷新仪表盘,观察指标如何进入排名威胁、警报、严重性细分和日志中。
标签:AMSI绕过, Docker Compose, IOC提取, IP 地址批量处理, JS文件枚举, Kafka, masscan, nuclei, REST API, SonarQube插件, Spring Boot, TIP, 代码示例, 前后端分离, 域名枚举, 失陷标示, 威胁分级, 威胁情报平台, 威胁检测, 安全分析与大屏, 安全数据管道, 安全运营, 密码管理, 微服务架构, 情报自动化, 扫描框架, 数据分析, 数据持久化, 数据清洗与标准化, 消息队列, 版权保护, 网络信息收集, 网络安全, 网络测绘, 请求拦截, 隐私保护