stephen-devops/THF-MAS
GitHub: stephen-devops/THF-MAS
THF-MAS 是一个基于 LangChain 和 Claude 的自然语言威胁狩猎框架,为 Wazuh SIEM 提供对话式分析与 MITRE 检测能力。
Stars: 0 | Forks: 0
# THF (威胁狩猎框架)
一个用于 Wazuh SIEM 的 AI 驱动自然语言接口,基于 LangChain 和 Anthropic Claude。
# 📖 用户指南
## 概述
THF(威胁狩猎框架)是一个功能强大的 AI 驱动安全分析平台,提供与 Wazuh SIEM 数据对话的界面。该系统通过 LangChain 使用 Anthropic 的 Claude Sonnet 4,使安全分析师能够使用自然语言查询调查安全事件、分析告警并了解自身的安全态势。
该框架将用户查询转换为结构化的函数调用,在 Wazuh OpenSearch 后端和 Wazuh API 上执行,并返回具有完整上下文保留的多轮对话中的可操作安全洞察。
## 安装说明与设置
### 先决条件
- Python 3.9+
- Anthropic API 密钥
- 可访问 Wazuh OpenSearch 集群
- Redis(可选,用于缓存)
### 安装步骤
1. 克隆仓库:
git clone https://github.com/resilmesh2/THF.git
cd THF/
2. 安装所需依赖
pip install -r requirements.txt
3. 配置环境变量
cp .env.example .env
## 环境变量
### 编辑 .env 并配置 API 密钥
必须在 `.env` 文件中配置以下环境变量:
**Anthropic 配置:**
- `ANTHROPIC_API_KEY` - 用于 Claude AI 访问的 Anthropic API 密钥
**OpenSearch 配置:**
- `OPENSEARCH_HOST` - OpenSearch 主机地址
- `OPENSEARCH_PORT` - OpenSearch 端口(默认:9200)
- `OPENSEARCH_USER` - OpenSearch 用户名(默认:admin)
- `OPENSEARCH_PASSWORD` - OpenSearch 密码
- `OPENSEARCH_USE_SSL` - 为 OpenSearch 连接启用 SSL(true/false)
**Wazuh API 配置:**
- `WAZUH_API_HOST` - Wazuh API 主机地址(默认:localhost)
- `WAZUH_API_PORT` - Wazuh API 端口(默认:55000)
- `WAZUH_API_USERNAME` - Wazuh API 用户名
- `WAZUH_API_PASSWORD` - Wazuh API 密码
- `WAZUH_API_USE_SSL` - 为 Wazuh API 启用 SSL(true/false)
- `WAZUH_API_VERIFY_CERTS` - 验证 SSL 证书(true/false)
**Redis 配置(可选):**
- `REDIS_HOST` - Redis 主机地址(默认:localhost)
- `REDIS_PORT` - Redis 端口(默认:6379)
- `REDIS_PASSWORD` - Redis 密码(如果不需要则留空)
**应用程序配置:**
- `LOG_LEVEL` - 日志级别(INFO、DEBUG、WARNING、ERROR)
- `API_HOST` - FastAPI 主机绑定(默认:0.0.0.0)
- `API_PORT` - FastAPI 端口(默认:8000 用于 Docker,8000 用于本地)
**端口说明:**
- **Docker**:容器运行在 8000 端口,映射到主机端口 8030(通过 `http://localhost:8030` 访问,docker-compose.yml 中配置为 `8030:8000`)
- **本地**:应用程序直接在 8000 端口运行(通过 `http://localhost:8000` 访问)
## 运行应用程序
安装依赖后,需要启动 FastAPI 后端和 Streamlit 前端 UI。
1. 首先启动 FastAPI 后端服务器:
uvicorn main:app --host 0.0.0.0 --port 8000
2. 然后在新的终端中启动 Streamlit UI:
streamlit run ./streamlit_ui.py
后端将在 `http://localhost:8000` 处可用,UI 默认在 `http://localhost:8501` 处可用。
**注意**:使用 Docker 时,由于端口映射(`8030:8000` 在 docker-compose.yml 中),后端通过 `http://localhost:8030` 访问。
3. 访问 Streamlit UI 并开始威胁狩猎:
- 打开浏览器并导航至 `http://localhost:8501`
- 在文本输入框中输入自然语言安全查询
- 按回车或点击输入框外部以提交
尝试以下威胁狩猎查询示例:
- 显示过去两天内告警最多的前 10 台主机
- user SYSTEM 有哪些告警?
- 查找失败登录尝试超过 20 次的主机
- 哪些代理已断开连接?
- 在过去 24 小时内哪些用户访问了主机 win10-01?
- 在过去 12 小时内检测 T1055 进程注入技术。
- 检查我们 Windows 主机上的 Log4Shell 漏洞。
## 功能
### 8 个核心安全能力
1. **analyze_alerts** - 带排名、过滤、计数和分布的告警分析
2. **investigate_entity** - 实体调查(主机、用户、进程、文件)
3. **detect_threats** - MITRE ATT&CK 技巧、战术、威胁行为者
4. **map_relationships** - 实体关系、活动关联映射
5. **find_anomalies** - 阈值、行为、趋势检测
6. **trace_timeline** - 按时间顺序重建事件
7. **check_vulnerabilities** - CVE 检查与漏洞评估
8. **monitor_agents** - 代理状态、运行状况和连接性监控
### 详细的安全意图与子操作分解
#### 1. 分析告警
| 子操作 | 描述 |
|--------|------|
| **计数** | 返回按严重性、规则、代理和时间模式分组的警报数量统计分析 |
| **过滤** | 检索与过滤条件匹配的特定告警文档,并提供用于调查的上下文摘要 |
| **分布** | 执行单一或多维告警模式分析,涵盖代理、用户、进程、规则、严重级别、时间标准和规则组,并包含交叉关联、百分比分解和时间模式用于威胁分析 |
| **排名/堆叠** | 按告警频率对实体进行排名或堆叠(例如告警最多的主机、用户、规则、最严重的告警等) |
**示例查询:**
**计数:**
- “统计过去 24 小时内所有关键告警”
- “按用户和完整性级别统计今日告警”
- “统计过去 2 天内高严重性告警并分解 MITRE 技巧”
**过滤:**
- “筛选严重级别为 15 的告警”
- “查找进程名为 'powershell.exe' 的告警”
- “筛选过去 12 小时内所有规则组为 'sysmon' 的关键告警”
**分布:**
- “显示本周按规则组的告警分布”
- “显示过去三天内按严重级别和每小时时间段的告警分布”
- “提供用户、主机和严重级别之间的告警关联”
**排名/堆叠:**
- “按告警频率对主机排名”
- “在过去 24 小时内哪些安全规则触发最频繁?”
- “显示过去 6 小时内安全告警最活跃的主机”
#### 2. 发现异常
| 子操作 | 描述 |
|--------|------|
| **行为基线** | 通过将当前行为与 RCF 学习到的基线在数天内进行比较,检测实体的长期行为活动 |
| **基于阈值的检测** | 通过将实时数据与 RCF 学习基线建立的动态指标阈值(告警计数、主机活动、用户活动、告警严重性)进行比较,检测短时间内大量异常活动。检测到的异常活动包括暴力破解或蠕虫传播 |
| **趋势分析** | 检测异常网络活动的升级和渐进趋势,包括内部威胁升级检测或零日漏洞利用 |
**示例查询:**
**基于阈值的检测:**
- “检测过去 12 小时内失败的登录尝试突然激增”
- “使用 3 天 RCF 基线查找身份验证暴力破解尝试,且用户多样性超过异常”
- “使用 3 天 RCF 基线检测主机多样性超过 20 个受影响系统和告警量超过 500 的快速恶意软件传播”
- “使用 3 天 RCF 学习基线检测过去 12 天内主机上的关键告警量阈值违规”
**行为基线
- “查找过去 4 小时内涉及用户 SYSTEM 的协调活动”
- “使用 7 天 RCF 行为基线检测过去 2 天内用户活动模式和进程执行偏差的受损用户账户行为”
- “使用 60 天 RCF 行为基线(中等敏感度)检测过去 21 天内的内部威胁行为,包括异常的用户活动多样性和异常的主机访问模式”
**趋势分析:**
- “显示过去一周升级的威胁趋势”
- “使用 7 天基线检测过去 24 小时内告警量上升趋势(高敏感度)”
- “使用 14 天 RCF 趋势基线(高敏感度)检测过去 24 小时内的横向移动和渐进式主机传播”
- “使用 30 天 RCF 趋势基线检测过去 7 天内用户活动和严重性升级的内部威胁升级模式”
#### 3. 调查实体
| 子操作 | 描述 |
|--------|------|
| **告警检索** | 检索并分析指定实体(用户账户、主机、进程、文件)的告警,提供按时间顺序的告警分布统计和最近触发的告警 |
| **详细信息** | 提供实体的全面详细信息,包括总告警数、详细的 MITRE ATT&CK 关联、风险评分和告警严重性分解 |
| **活动分析** | 对实体进行行为分析,识别行为模式,包括告警活动爆发、峰值使用时间窗口、进程执行和用户交互,以了解指定实体的正常行为 |
| **状态监控** | 提供实体的运行状况和性能分析,包括最近的安全告警、代理连接状态、服务状态和实体整体健康评分 |
**示例查询:**
**告警检索:**
- “显示主机 win10-01 的所有告警”
- “提供主机 012 过去 6 小时内的所有告警”
- “本周由用户 SYSTEM 触发的告警有哪些?”
**详细信息:**
- “获取用户 administrator 的详细信息”
- “显示今天主机 U209-PC-BLEE 的详细信息”
- “获取包含风险评分的完整主机详细信息 192.168.201.33”
**活动分析:**
- “分析进程 powershell.exe 的行为模式”
- “分析过去三天内主机 win10-02 的行为模式”
- “跟踪过去四天内主机 Win10-01 的活动模式”
**状态监控:**
- “显示主机 U209-PC-BLEE 的状态报告”
- “主机 MAIL-SERVER 的当前安全状态是什么?”
- “提供 IP 地址为 192.168.201.33 的主机状态报告”
#### 4. 映射关系
| 子操作 | 描述 |
|--------|------|
| **实体到实体** | 通过查找共享事件或安全数据中的直接交互,映射指定实体(主机、用户、进程、文件)之间的直接关系。识别哪些实体相互交互,并基于告警严重性评估关系强度、类型和风险评分,用于安全调查和横向移动检测 |
| **行为关联** | 识别在相似时间范围内发生的多个实体之间的关联行为模式,表明协调行动、攻击链或系统性行为 |
**示例查询:**
**实体到实体:**
- “显示今天 user SYSTEM 访问了哪些主机”
- “在过去 24 小时内哪些用户访问了 IP 为 192.168.201.33 的主机?”
- “显示过去 6 小时内由 svchost.exe 进程加载的所有文件”
- “2025 年 5 月 15 日 process TiWorker.exe 删除了哪些文件?”
- “显示 2025 年 8 月 13 日某个进程注入到另一个进程的情况”
**行为关联:**
- “分析过去 6 小时内主机 win10-01 与其他实体的关联活动”
- “查找过去 4 小时内涉及用户 SYSTEM 的协调活动”
- “检测过去一小时内来自 IP 192.168.201.33 的异常访问序列”
#### 5. 追踪时间线
| 子操作 | 描述 |
|--------|------|
| **显示序列** | 按发生顺序生成安全事件的时间线,例如按主机、用户或特定进程的事件序列 |
| **攻击进展** | 跟踪攻击随时间的演变和进展,识别攻击链,重点关注关键事件并展示攻击者从初始入侵到后续阶段如何移动 |
| **时间关联** | 查找在指定时间窗口内发生的事件,帮助识别可能属于同一攻击或事件的相关活动 |
**示例查询:**
**显示序列:**
- “显示主机 server-01 从下午 2 点到 4 点的事件序列”
- “显示昨天 06:00:00 到 12:00:00 之间的事件序列”
- “显示过去 12 小时内所有关键告警的时序”
- “显示过去 2 天内代理 012 的身份验证事件详细序列”
**攻击进展:**
- “显示过去一小时内 T1059.003 告警之前的事件时间线”
- “追踪 win10-01 从初始访问时间 09:47:45 UTC 开始的攻击发展”
- “显示 IP 地址为 192.168.201.33 的主机在过去两小时内的攻击演变”
**时间关联:**
- “显示主机 win10-01 在过去四小时内的任何时间关联”
- “识别 10 分钟时间窗口内的协调活动模式”
- “显示过去三天内用户 SYSTEM 的时间关联事件”
## 使用 THF 进行威胁狩猎
### 入门
1. **提出初始问题**:从广泛查询开始以了解安全态势
- “显示过去 12 小时内主机 U209-PC-BLEE 的告警统计”
- “显示今日关键告警”
- “哪些代理已断开连接?”
- “哪些主机的告警最多?”
2. **后续问题**:THF 会记住之前查询的上下文
- 看到告警后:“请提供这些关键告警的更多细节”
- 看到主机后:“该主机的身份验证失败情况如何?”
- 调查后:“显示这些事件的时间线”
3. **调查实体**:深入调查特定主机、用户、进程或文件
- “主机 win10-01 有哪些告警?”
- “显示用户 administrator 在过去 24 小时内的所有活动”
- “powershell.exe 今天创建了哪些文件?”
4. **检测威胁**:查找 MITRE ATT&CK 技巧和可疑模式
- “最近检测到哪些 T1055 进程注入技巧?”
- “昨天的异常登录模式有哪些?”
- “是否有任何凭证转储尝试?”
5. **映射关系**:理解实体之间的连接
- “哪些用户今天访问了主机 win10-01?”
- “cmd.exe 创建了哪些进程?”
- “显示可疑进程访问的文件”
### 会话管理
- 每次对话都会跨多个查询保持上下文
- 使用侧边栏中的“重置会话”按钮开始新的调查
- 查看会话信息以查看对话历史
```
# 重置会话内存
POST /reset?session_id=your-session-id
# 获取会话信息
GET /session/{session_id}
# 列出所有活动会话
GET /sessions
```
### 系统信息与运行状况
```
# 健康检查
```bash
curl http://localhost:8000/health
# 或者如果使用 Docker:curl http://localhost:8030/health
```
## 路线图
### 已完成的功能 ✓
- [x] 使用 Claude Sonnet 4 的自然语言接口
- [x] 基于会话的对话记忆
- [x] 跨查询的上下文保留
- [x] 30 多个子操作的 8 个核心安全分析意图
- [x] Streamlit Web 界面
- [x] FastAPI REST API
- [x] OpenSearch 和 Wazuh API 集成
- [x] 智能路由和字段检测
- [x] 自然语言时间解析
- [x] MITRE ATT&CK 威胁检测
- [x] 实体关系映射
- [x] 使用 RCF 基线的异常检测
- [x] 全面日志记录和跟踪
### 计划中的功能
- [ ] 使用本地模型替换 Claude Sonnet 4.5 以实现加速的威胁狩猎响应
- [ ] 支持自定义 Wazuh 规则和解码器
- [ ] 集成外部威胁情报源
- [ ]租户支持与基于角色的访问控制
- [ ] 高级可视化功能和仪表板
- [ ] 使用 Redis 的查询结果缓存
- [ ] 自动报告生成
- [ ] 计划威胁狩猎查询
- [ ] 与工单系统集成(Jira、ServiceNow)
- [ ] 移动应用界面
# 🔧 技术文档
## 应用程序架构
```
User Query → Context Processor → LangChain Agent → Tool Selection → Function Execution → OpenSearch/Wazuh API → Response Generation → User
↓ ↓
Session Memory Function Dispatcher
```
### 核心组件
#### 1. WazuhSecurityAgent (`agent/wazuh_agent.py`)
负责整个查询处理生命周期的中央协调器:
- **LLM 模型**:Claude Sonnet 4
- **Agent 类型**:STRUCTURED_CHAT_ZERO_SHOT_REACT_DESCRIPTION
- **会话管理**:每个会话使用唯一的会话 ID 进行隔离的对话上下文
- **内存系统**:ConversationSummaryBufferMemory(每个会话 1500 令牌限制)
- **最大迭代次数**:3 次,配合提前停止以优化 API 使用
- **超时设置**:每个 API 调用 30 秒超时,带指数退避重试逻辑
- **关键特性**:
- 基于会话的对话内存防止用户之间的上下文泄漏
- API 负载过高时自动重试(529 错误),采用 2 秒、4 秒退避策略
- 跨多轮对话的上下文保留
- 实时代理状态管理
#### 2. ConversationContextProcessor (`agent/context_processor.py`)
智能上下文分析与保留系统:
- **上下文检测**:识别上下文引用(“这些告警”、“那个主机”、“此进程”)
- **实体提取**:从对话历史中提取主机、用户、进程、文件、IP
- **时间上下文**:跨查询保留时间范围
- **查询增强**:自动将之前的筛选器应用于后续查询
- **检测策略**:
- 显式关键词匹配
- 数值引用跟踪
- 定冠词模式
- 实体引用提取
#### 3. 安全功能模块 (`functions/`)
8 个专用模块,包含 30 多个子操作,用于全面的安全分析:
- **analyze_alerts**:告警排名、过滤、计数、分布分析
- **investigate_entity**:深度调查(主机、用户、进程、文件、IP)
- **detect_threats**:MITRE ATT&CK 技巧、战术、威胁行为者、IoC
- **map_relationships**:实体关系映射与行为关联
- **find_anomalies**:阈值、行为、趋势检测与 RCF 基线
- **trace_timeline**:按时间顺序重建事件与攻击进展
- **check_vulnerabilities**:CVE 检查、补丁状态、漏洞评估
- **monitor_agents**:代理状态、运行状况、连接性监控
#### 4. 数据集成层 (`functions/_shared/`)
**WazuhOpenSearchClient**:
- 异步 OpenSearch 连接,支持 SSL
- 智能字段映射(自动检测 agent.id 与 agent.name)
- 智能查询构建,支持通配符和词项查询
- 自然语言时间范围解析(“3 天前”、“昨天 6am-11am”)
- Wazuh 数组字段规范化
**WazuhAPIClient**:
- JWT 认证与令牌缓存
- 代理状态监控(活跃、断开、从未连接)
- 代理搜索与统计摘要
- 完整的代理信息检索
#### 5. Web 界面
**FastAPI 后端** (`main.py`):
- 异步 REST API,支持 WebSocket
- 会话管理端点
- 健康检查与监控
- 生产环境 CORS 配置
**Streamlit UI** (`streamlit_ui.py`):
- 实时对话界面
- 会话管理(创建、重置、查看信息)
- 示例查询建议
- API 运行状况指示器
- 带时间戳的对话历史
#### 6. 类型安全与验证 (`schemas/`)
- 所有函数参数的 Pydantic 架构
- 基于枚举的动作/类型选择
- 自动 JSON 序列化
- 请求/响应验证
## 高级用法
### REST API
查询助手:
```
curl -X POST "http://localhost:8000/query" \
-H "Content-Type: application/json" \
-d '{"query": "Show me critical alerts from the last hour"}'
```
### 查询端点
```
POST /query
Content-Type: application/json
{
"query": "Show me critical alerts from the last hour",
"session_id": "optional-session-id"
}
```
## 开发
### 项目结构
```
THF/
├── agent/ # Core LLM agent implementation
│ ├── wazuh_agent.py # Main LangChain agent orchestrator
│ ├── context_processor.py # Conversation context analysis
│ └── __init__.py
├── functions/ # Security analysis function modules
│ ├── analyze_alerts/ # Alert ranking, filtering, counting, distribution
│ ├── investigate_entity/ # Host, user, process, file investigation
│ ├── map_relationships/ # Entity relationship mapping and correlation
│ ├── detect_threats/ # MITRE ATT&CK detection, threat actors, IoCs
│ ├── find_anomalies/ # Threshold, behavioral, trend anomaly detection
│ ├── trace_timeline/ # Event timeline reconstruction
│ ├── check_vulnerabilities/ # CVE checking, vulnerability assessment
│ ├── monitor_agents/ # Agent status, health, version monitoring
│ ├── smart_routing/ # Intelligent query routing
│ └── _shared/ # Shared utilities
│ ├── opensearch_client.py # OpenSearch integration
│ ├── wazuh_api_client.py # Wazuh API integration
│ ├── time_parser.py # Natural language time parsing
│ └── utils.py # Common utilities
├── tools/ # LangChain tool wrappers
├── schemas/ # Pydantic validation schemas
├── assets/ # Static assets (logos, images)
├── tests/ # Test suite
├── docs/ # Documentation
├── main.py # FastAPI backend server
├── streamlit_ui.py # Streamlit web UI
├── demo_server.py # Demo/testing server
├── start_ui.py # UI launcher script
├── requirements.txt # Python dependencies
├── README.md # This file
└── .env # Environment configuration
```
### 关键架构特性
#### 基于会话的内存管理
- **隔离上下文**:每个用户会话维护独立的对话内存
- **防止内存泄漏**:并发用户不会相互干扰
- **上下文感知跟进**:系统记住前序查询中的实体、筛选器和时间范围
- **令牌优化**:ConversationSummaryBufferMemory 1500 令牌限制
#### 智能上下文保留
`ConversationContextProcessor`(agent/context_processor.py:1)分析对话以:
- 检测上下文引用(“这些告警”、“那个主机”)
- 从之前响应中提取实体
- 保留时间上下文
- 用相关筛选器增强后续查询
#### 智能路由与字段检测
- **自动字段映射**:检测使用 agent.id 还是 agent.name
- **进程智能**:在 originalFileName、image、commandLine 中搜索
- **多字段搜索**:对主机、进程、文件进行全面覆盖
- **自然语言时间解析**:支持“3 天前”、“昨天 6am-11am”等格式
标签:AI安全, AI安全工具, Anthropic Claude, Chat Copilot, FTP漏洞扫描, Kubernetes, LangChain, RESTful API, SOAR, Wazuh OpenSearch, Wazuh SIEM, 会话上下文, 函数调用, 威胁情报, 安全分析师, 安全分析平台, 安全态势感知, 安全编排, 开发者工具, 提示词优化, 搜索引擎查询, 自然语言查询, 轻量级, 逆向工具, 速率限制