TahaNynth/TIDE-Threat-Intelligence-Detection-Engine

GitHub: TahaNynth/TIDE-Threat-Intelligence-Detection-Engine

TIDE 是一款自动化威胁情报检测引擎,可快速将威胁情报报告转换为可部署的检测内容。

Stars: 2 | Forks: 0

# 🌊 潮汐 ### 威胁情报检测引擎 **一个将原始威胁情报报告转换为可部署检测内容的自动化管道,仅需几秒钟。** [![Python](https://img.shields.io/badge/Python-3.10%2B-3776AB?style=flat-square&logo=python&logoColor=white)](https://www.python.org/) [![Flask](https://img.shields.io/badge/Flask-3.0-000000?style=flat-square&logo=flask&logoColor=white)](https://flask.palletsprojects.com/) [![React](https://img.shields.io/badge/React-18-61DAFB?style=flat-square&logo=react&logoColor=black)](https://reactjs.org/) [![TypeScript](https://img.shields.io/badge/TypeScript-5-3178C6?style=flat-square&logo=typescript&logoColor=white)](https://www.typescriptlang.org/) [![TailwindCSS](https://img.shields.io/badge/TailwindCSS-3-06B6D4?style=flat-square&logo=tailwindcss&logoColor=white)](https://tailwindcss.com/) [![SQLite](https://img.shields.io/badge/SQLite-003B57?style=flat-square&logo=sqlite&logoColor=white)](https://www.sqlite.org/) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg?style=flat-square)](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 构建
威胁情报检测引擎
标签:自动化攻击, 逆向工具