TahaNynth/TIDE-Threat-Intelligence-Detection-Engine
GitHub: TahaNynth/TIDE-Threat-Intelligence-Detection-Engine
TIDE 是一款自动化威胁情报检测引擎,可快速将威胁情报报告转换为可部署的检测内容。
Stars: 2 | Forks: 0
# 🌊 潮汐
### 威胁情报检测引擎
**一个将原始威胁情报报告转换为可部署检测内容的自动化管道,仅需几秒钟。**
[](https://www.python.org/)
[](https://flask.palletsprojects.com/)
[](https://reactjs.org/)
[](https://www.typescriptlang.org/)
[](https://tailwindcss.com/)
[](https://www.sqlite.org/)
[](LICENSE)
*作为伊斯兰堡空军大学网络安全威胁情报学期项目构建*
## 什么是 TIDE?
安全分析师花费数小时阅读威胁报告,手动搜索指标,将对手行为映射到框架中,并手工编写检测规则。TIDE 自动化整个工作流程。
粘贴或上传任何威胁情报报告——博客文章、PDF 咨询、事件报告——TIDE 立即生成:
- 文本中埋藏的每个 **IP 地址、域名、URL、电子邮件地址和文件哈希**
- 对手使用的 **MITRE ATT&CK 技术**,带有置信度评分
- 从提取的指标构建的 **可部署的 Sigma、YARA 和 Snort 检测规则**
- **分析师级别的风险评估**(低 → 严重)和评分理由
- 结构化的 **执行摘要**,包含有针对性的建议
整个引擎 **100% 离线** 运行——无需 API 密钥,无需互联网连接。可选的 LLM 集成(OpenAI 或 Google Gemini)可以增强书面摘要,但每条检测内容都是确定性地生成的。
## 目录
- [架构](#architecture)
- [功能](#features)
- [技术栈](#tech-stack)
- [项目结构](#project-structure)
- [引擎如何工作](#how-the-engines-work)
- [安装](#installation)
- [配置](#configuration)
- [运行应用程序](#running-the-application)
- [使用 TIDE](#using-tide)
- [API 参考](#api-reference)
- [LLM 集成](#llm-integration)
- [学术背景](#academic-context)
## 架构
```
┌─────────────────────────────────────────────────────────────────┐
│ TIDE Frontend │
│ React 18 · TypeScript · Tailwind CSS │
│ │
│ Dashboard │ Threat Analysis │ IOC Explorer │ ATT&CK │
│ Reports │ Detection Rules │ Settings │
└──────────────────────────┬──────────────────────────────────────┘
│ REST API (JSON)
▼
┌─────────────────────────────────────────────────────────────────┐
│ TIDE Backend │
│ Flask 3 · Python 3.10+ │
│ │
│ ┌──────────────┐ ┌──────────────┐ ┌───────────────────────┐ │
│ │ IOC Extractor│ │ MITRE Mapper │ │ Rule Generator │ │
│ │ (Regex) │ │ (Keywords) │ │ Sigma / YARA / Snort │ │
│ └──────────────┘ └──────────────┘ └───────────────────────┘ │
│ ┌──────────────┐ ┌──────────────┐ ┌───────────────────────┐ │
│ │ Risk Scorer │ │ Summary │ │ File Parser │ │
│ │ (Weighted) │ │ Generator │ │ PDF / DOCX / TXT │ │
│ └──────────────┘ └──────────────┘ └───────────────────────┘ │
│ │
│ ┌───────────────────────────────────────────────────────────┐ │
│ │ SQLite Database (Persistent History) │ │
│ │ analyses · iocs · techniques · detection_rules │ │
│ └───────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────┘
│ Optional
▼
┌────────────────────────┐
│ LLM API (Optional) │
│ OpenAI · Gemini │
│ (summary enhancement) │
└────────────────────────┘
```
## 功能
### 核心管道
| 功能 | 描述 |
|---|---|
| **IOC 提取** | 正则表达式引擎提取 IPv4、IPv6、域名、URL、电子邮件、MD5、SHA1、SHA256 |
| **MITRE ATT&CK 映射** | 本地 42 技术知识库,带有加权关键词匹配 |
| **Sigma 规则** | 针对 SIEM 平台(Splunk、Sentinel、Elastic)的 YAML 检测规则 |
| **YARA 规则** | 针对恶意软件扫描和 EDR 的二进制模式匹配规则 |
| **Snort 规则** | Snort 3 / Suricata 的网络 IDS 签名 |
| **风险评分** | 0-100 分的综合评分引擎,输出低/中/高/严重 |
| **分析师摘要** | 确定性执行摘要,包含威胁行为者、目标和建议 |
| **文件解析** | 上传并解析 PDF、TXT 和 DOCX 报告,最大 16 MB |
### 平台功能
| 功能 | 描述 |
|---|---|
| **分析历史** | 所有分析持久化存储在 SQLite 中;可浏览和重新查看 |
| **IOC 探索器** | 可搜索、可过滤、分页的数据库,包含所有提取的指标 |
| **导出** | CSV(IOC)、JSON(完整分析)、单个规则文件下载 |
| **LLM 增强** | 可选的 OpenAI / Gemini 集成,用于 AI 编写的执行摘要 |
| **深色模式 UI** | 专业 SOC 风格仪表板;完全响应式 |
| **离线优先** | 每个功能都无需 API 密钥或互联网访问即可工作 |
## 技术栈
### 前端
| 库 | 目的 |
|---|---|
| React 18 | UI 框架 |
| TypeScript 5 | 类型安全 |
| Tailwind CSS 3 | 优先级样式 |
| React Router 6 | 客户端路由 |
| Recharts | 仪表板可视化(饼图、条形图、径向图) |
| Lucide React | 图标集 |
| React Syntax Highlighter | Sigma / YARA / Snort 代码显示 |
| React Hot Toast | 通知 |
| Axios | 带拦截器的 HTTP 客户端 |
| Vite | 构建工具和开发服务器 |
### 后端
| 库 | 目的 |
|---|---|
| Flask 3 | REST API 框架 |
| Flask-CORS | 跨源请求处理 |
| SQLite (stdlib) | 持久化存储——零配置 |
| pdfplumber | PDF 文本提取 |
| python-docx | DOCX 解析 |
| python-dotenv | 环境变量管理 |
| openai (可选) | GPT 摘要增强 |
| google-generativeai (可选) | Gemini 摘要增强 |
## 项目结构
```
tide/
│
├── backend/
│ ├── app.py # Flask application factory and entry point
│ ├── config.py # Configuration from environment variables
│ ├── requirements.txt # Python dependencies
│ │
│ ├── models/
│ │ └── database.py # SQLite schema, connection management, seeding
│ │
│ ├── routes/
│ │ ├── analysis.py # POST /analyze, POST /upload, GET /analyses
│ │ ├── ioc.py # GET /iocs — queryable IOC database
│ │ ├── mitre.py # GET /techniques, GET /tactics
│ │ ├── detection.py # GET /rules
│ │ ├── reports.py # GET /reports, export endpoints
│ │ └── settings.py # GET/PUT /settings, POST /settings/test-llm
│ │
│ ├── services/
│ │ ├── ioc_extractor.py # Regex-based IOC extraction engine
│ │ ├── mitre_mapper.py # Keyword → ATT&CK technique mapping
│ │ ├── rule_generator.py # Sigma, YARA, Snort template generation
│ │ ├── summary_generator.py # Deterministic analyst summary engine
│ │ ├── risk_scorer.py # Weighted composite risk scoring
│ │ └── llm_service.py # Optional OpenAI / Gemini integration
│ │
│ ├── utils/
│ │ ├── file_parser.py # PDF, DOCX, TXT text extraction
│ │ └── validators.py # Input sanitization and validation
│ │
│ └── data/
│ └── mitre_mappings.json # Local ATT&CK knowledge base (42 techniques)
│
├── frontend/
│ ├── index.html
│ ├── package.json
│ ├── vite.config.ts
│ ├── tailwind.config.js
│ └── src/
│ ├── App.tsx # Router setup
│ ├── main.tsx # React entry point
│ ├── index.css # Tailwind + custom CSS
│ │
│ ├── types/
│ │ └── index.ts # All TypeScript interfaces
│ │
│ ├── services/
│ │ └── api.ts # Axios API client
│ │
│ ├── hooks/
│ │ └── useAnalysis.ts # Analysis state management
│ │
│ ├── components/
│ │ ├── layout/ # Sidebar, TopNav, Layout wrapper
│ │ ├── ui/ # RiskBadge, ConfidenceBadge, CopyButton, StatCard
│ │ ├── dashboard/ # Charts and RecentAnalyses table
│ │ └── analysis/ # ReportInput, AnalysisResults (tabbed)
│ │
│ └── pages/
│ ├── Dashboard.tsx # Overview stats and charts
│ ├── ThreatAnalysis.tsx# Main analysis workflow
│ ├── IOCExplorer.tsx # Searchable IOC database
│ ├── MitreMapping.tsx # ATT&CK technique browser
│ ├── DetectionRules.tsx# Rule viewer with syntax highlighting
│ ├── Reports.tsx # Full analysis history
│ └── Settings.tsx # LLM and platform configuration
│
├── sample_threat_report.txt # LockBit 3.0 sample report for testing
├── .env.example # Environment variable template
└── README.md
```
## 引擎如何工作
### 1. IOC 提取引擎
提取器使用优先级排序的正则表达式管道来避免重复计数:
```
SHA256 (64 hex chars) → SHA1 (40) → MD5 (32)
→ URLs → Emails → IPv4 / IPv6 → Standalone Domains
```
每个提取的值都是去重的(不区分大小写),并且域名与 TLD 白名单进行验证以抑制误报。私有 IP 范围被标记但仍然包含在内,因为内部基础设施在横向移动报告中相关。
### 2. MITRE ATT&CK 映射引擎
本地知识库(`data/mitre_mappings.json`)包含所有 12 个 ATT&CK 战术中的 42 个技术。每个技术都有一个加权关键词列表:
```
{
"id": "T1003",
"name": "OS Credential Dumping",
"keywords": [
{ "word": "mimikatz", "weight": 3 },
{ "word": "credential dumping","weight": 3 },
{ "word": "lsass", "weight": 3 },
{ "word": "hashdump", "weight": 3 },
{ "word": "pass-the-hash", "weight": 3 },
{ "word": "sekurlsa", "weight": 3 }
]
}
```
映射器扫描整个报告文本,为每个技术累积加权分数,然后分配置信度:
| 加权分数 | 置信度 |
|---|---|
| ≥ 5 | 高 |
| ≥ 3 | 中 |
| ≥ 1 | 低 |
结果按高 → 中 → 低排序,上限为 20 个技术,并按分析存储。
### 3. 检测规则生成器
规则是从模板生成的,模板由提取的 IOC 和技术数据参数化:
**Sigma** — 为网络 IOC(IP/域名 `detection:` 块)生成一个规则,为文件哈希生成一个规则,并为每个技术生成最多三个特定行为规则。输出是有效的 YAML,带有正确的 `logsource`、`detection` 和 `tags` 块。
**YARA** — 生成文件哈希规则、网络指标规则(域名/IP/URL 字符串)和针对高置信度技术的行为规则(PowerShell 混淆、凭据泄露、勒索软件指标)。
**Snort** — 为每个提取的 IP 生成 `alert ip` 规则(双向——C2 回调和出站流量),为域名生成 `alert dns` 和 `alert http` 规则,并为 URL 路径生成 `alert http` 规则。所有这些都被组合到一个可部署的 `.rules` 文件中。
### 4. 风险评分引擎
风险评分是六个因素组(最大 100 分)的综合:
| 因素 | 最大分数 |
|---|---|
| IOC 量(5 → 30 IOC = 10 → 20 分) | 20 |
| 技术量(3 → 10+ 技术) | 20 |
| 存在勒索软件技术(T1486、T1489、T1490) | 20 |
| 凭据盗窃技术(T1003、T1110、T1555) | 15 |
| 横向移动技术(T1021.x、T1570) | 10 |
| 提权技术(T1055、T1068、T1134) | 8 |
| 毁灭性/钓鱼关键词提升 | +5–10 每个 |
| 最终分数 | 级别 |
|---|---|
| 75–100 | 严重 |
| 50–74 | 高 |
| 25–49 | 中 |
| 0–24 | 低 |
### 5. 分析师摘要引擎
摘要生成器使用提取的数据(而不是原始文本)以确定性地生成结构化输出:
1. **威胁行为者**通过扫描已知群体名称(APT28、LockBit、Lazarus 等)来识别
2. **目标行业**通过行业关键词匹配(银行、医疗保健、政府等)来识别
3. **攻击类型**被分类(勒索软件、APT、供应链、钓鱼活动等)
4. **执行摘要**使用上述事实构建为两段文字
5. **建议**是技术特定的——每个识别的 ATT&CK 技术映射到一个或多个具体的缓解措施
## 安装
### 先决条件
| 要求 | 最小版本 | 安装 |
|---|---|---|
| Python | 3.10 | [python.org](https://www.python.org/downloads/) |
| Node.js | 18 LTS | [nodejs.org](https://nodejs.org/) |
| npm | 8 | 包含在 Node.js 中 |
| Git | 任何 | [git-scm.com](https://git-scm.com/) |
### Windows
```
# 1. 克隆仓库
git clone https://github.com/TahaNynth/TIDE.git
cd TIDE
# 2. 后端设置
cd backend
python -m venv venv
venv\Scripts\activate
pip install -r requirements.txt
# 3. 前端设置(单独的终端)
cd ..\frontend
npm install
```
### macOS / Linux
```
# 1. 克隆仓库
git clone https://github.com/TahaNynth/TIDE.git
cd TIDE
# 2. 后端设置
cd backend
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
# 3. 前端设置(单独的终端)
cd ../frontend
npm install
```
## 配置
复制环境模板并根据需要编辑:
```
# Windows
copy .env.example .env
# macOS / Linux
cp .env.example .env
```
### `.env` 选项
```
# LLM增强(可选——离线模式留空)
OPENAI_API_KEY=sk-...
GEMINI_API_KEY=AIza...
# 使用哪个提供商:无 | openai | gemini
LLM_PROVIDER=none
# OpenAI模型(仅在LLM_PROVIDER=openai时使用)
LLM_MODEL=gpt-4o-mini
# SQLite数据库文件位置(相对于后端/)
DATABASE_PATH=database.db
# Flask设置
FLASK_ENV=development
SECRET_KEY=change-this-in-production
```
## 运行应用程序
### 终端 1 — 后端
```
cd backend
# 激活虚拟环境
venv\Scripts\activate # Windows
# source venv/bin/activate # macOS / Linux
python app.py
```
预期输出:
```
* Serving Flask app 'app'
* Debug mode: on
* Running on http://127.0.0.1:5000
* Running on http://192.168.x.x:5000
```
### 终端 2 — 前端
```
cd frontend
npm run dev
```
预期输出:
```
VITE v5.x ready in 300ms
➜ Local: http://localhost:5173/
```
在浏览器中打开 **[http://localhost:5173](http://localhost:5173)**。
顶部导航栏中的 **API 在线** 指示符确认前端已成功连接到后端。
## 使用 TIDE
### 运行第一次分析
1. 导航到左侧侧边栏中的 **威胁分析**
2. 将任何威胁情报文本粘贴到编辑器中,或上传 PDF / DOCX / TXT 文件
3. 可选地添加报告标题
4. 点击 **运行分析**
5. 结果出现在四个选项卡中:**摘要**、**IOC**、**ATT&CK**、**检测规则**
包含 `sample_threat_report.txt` 的 LockBit 3.0 报告用于即时测试。
### 探索结果
| 选项卡 | 你会发现什么 |
|---|---|
| **摘要** | 风险计分器、执行摘要、威胁行为者、目标行业、建议 |
| **IOC** | 分类指标表;按网络/文件过滤;复制或导出 CSV |
| **ATT&CK** | 带有置信度、战术、匹配关键词、MITRE 链接的技术卡 |
| **检测规则** | Sigma / YARA / Snort,带有语法高亮、复制和按规则下载 |
### IOC 探索器
**IOC 探索器** 页面将每个分析中的所有指标汇总到一个可搜索的数据库中。按类型(IPv4、域名、SHA256 等)或类别(网络/文件)过滤。将当前视图导出为 CSV。
### 检测规则库
**检测规则** 页面提供所有分析中所有生成的规则的分隔面板视图。从左侧面板中选择任何规则以查看其完整内容,带有语法高亮。一次性下载单个文件或给定类型的所有规则。
### 报告历史记录
**报告** 页面列出所有已运行的分析,包括风险级别、IOC 数量、技术数量和导出选项。单击任何行标题以重新打开完整分析结果。
## API 参考
所有端点都以前缀 `/api` 开头。
### 分析
| 方法 | 端点 | 主体 / 参数 | 描述 |
|---|---|---|---|
| `POST` | `/analyze` | `{ text, title? }` | 在报告文本上运行完整分析 |
| `POST` | `/upload` | `multipart/form-data`(文件) | 解析上传的文件,返回提取的文本 |
| `GET` | `/analyses` | — | 列出所有过去的分析 |
| `GET` | `/analyses/:id` | — | 通过 ID 获取完整分析结果 |
| `DELETE` | `/analyses/:id` | — | 删除分析及其所有相关数据 |
| `GET` | `/stats` | — | 聚合仪表板统计信息 |
### IOC
| 方法 | 端点 | 查询参数 | 描述 |
|---|---|---|---|
| `GET` | `/iocs` | `analysis_id`、`type`、`category`、`search`、`limit`、`offset` | 分页 IOC 查询 |
| `GET` | `/iocs/types` | — | 按类型统计 IOC 数量 |
### ATT&CK 技术
| 方法 | 端点 | 查询参数 | 描述 |
|---|---|---|---|
| `GET` | `/techniques` | `analysis_id`、`tactic`、`confidence`、`search` | 查询技术数据库 |
| `GET` | `/tactics` | — | 战术名称及其技术计数 |
### 检测规则
| 方法 | 端点 | 查询参数 | 描述 |
|---|---|---|---|
| `GET` | `/rules` | `analysis_id`、`rule_type` | 查询规则(sigma、yara、snort) |
### 导出
| 方法 | 端点 | 描述 |
|---|---|---|
| `GET` | `/reports/:id/export/iocs` | 下载 IOC 作为 CSV |
| `GET` | `/reports/:id/export/json` | 下载完整分析作为 JSON |
### 设置
| | 端点 | 描述 |
|---|---|---|
| `GET` | `/settings` | 获取当前设置(API 密钥被屏蔽) |
| `PUT` | `/settings` | 更新设置 |
| `POST` | `/settings/test-llm` | 测试配置的 LLM 连接 |
### 健康状况
| 方法 | 端点 | 描述 |
|---|---|---|
| `GET` | `/health` | 返回 `{ status: "ok", version: "1.0.0" }` |
### 示例:分析报告
```
curl -X POST http://localhost:5000/api/analyze \
-H "Content-Type: application/json" \
-d '{
"text": "Attackers used mimikatz to dump LSASS credentials and deployed LockBit ransomware after vssadmin delete shadows. C2 at 185.220.101.47.",
"title": "Quick Test"
}'
```
响应(摘要):
```
{
"analysis_id": "a1b2c3d4-...",
"risk": { "level": "Critical", "score": 89 },
"ioc_stats": { "total": 2, "network_total": 1, "file_total": 0 },
"techniques": [
{ "technique_id": "T1003", "technique_name": "OS Credential Dumping", "confidence": "High" },
{ "technique_id": "T1486", "technique_name": "Data Encrypted for Impact", "confidence": "High" },
{ "technique_id": "T1490", "technique_name": "Inhibit System Recovery", "confidence": "High" }
],
"rules": {
"sigma": [ { "name": "...", "content": "title: ..." } ],
"yara": [ { "name": "...", "content": "rule ..." } ],
"snort": [ { "name": "...", "content": "alert ip ..." } ]
}
}
```
## LLM 集成
TIDE 完全无需 LLM。如果您想使用 AI 增强的执行摘要:
1. 导航到侧边栏中的 **设置**
2. 选择 **OpenAI** 或 **Google Gemini**
3. 粘贴您的 API 密钥
4. 点击 **测试连接**
5. 点击 **保存设置**
从那时起,每个新的分析都将将确定性摘要发送到 LLM 以重写为更流畅的散文。所有检测内容(IOC、规则、ATT&CK、风险评分)永远不会发送到任何外部服务。
**支持的模型**:
| 提供商 | 模型 |
|---|---|
| OpenAI | `gpt-4o-mini`(默认)、`gpt-4o`、`gpt-4-turbo` |
| Google Gemini | `gemini-1.5-flash`(自动选择) |
## 学术背景
**课程**:网络安全威胁情报
**机构**:伊斯兰堡空军大学
**学期**:6
TIDE 展示了以下实际应用的实用性:
- **IOC 规范化**——遵循 STIX/TAXII 指标类别进行结构化提取
- **MITRE ATT&CK**——技术识别和基于置信度的映射
- **检测工程**——从威胁数据中编写 Sigma、YARA 和 Snort 规则
- **基于风险优先级**——量化评分用于分类和响应决策
- **分析师工作流程自动化**——从原始报告到可部署实体的端到端管道
## 许可证
MIT 许可证——有关详细信息,请参阅 [LICENSE](LICENSE)。
使用 Flask · React · SQLite 构建
威胁情报检测引擎
威胁情报检测引擎
标签:自动化攻击, 逆向工具