kushagra-patel1011/llm-purple-team-automation
GitHub: kushagra-patel1011/llm-purple-team-automation
基于 LLM 的紫队自动化框架,通过模拟 MITRE ATT&CK 攻击遥测、自动生成 Sigma 检测规则并评估检测覆盖率,将传统紫队演练流程从数小时缩短至秒级。
Stars: 0 | Forks: 0
# LLM 驱动的紫队自动化框架
### 红队优先架构 | 映射 MITRE ATT&CK | LLM 驱动的检测引擎
**作者:** Kushagra Patel
## 目录
1. [项目概述](#1-project-overview)
2. [问题陈述](#2-problem-statement)
3. [架构](#3-architecture)
4. [MITRE ATT&CK 覆盖范围](#4-mitre-attck-coverage)
5. [文件夹结构](#5-folder-structure)
6. [技术栈](#6-tech-stack)
7. [工作原理 — 流水线流程](#7-how-it-works--pipeline-flow)
8. [设置与安装](#8-setup--installation)
9. [运行框架](#9-running-the-framework)
10. [API 参考](#10-api-reference)
11. [仪表盘](#11-dashboard)
12. [示例输出](#12-sample-output)
13. [设计决策](#13-design-decisions)
14. [局限性与未来工作](#14-limitations--future-work)
15. [学术参考文献](#15-academic-references)
## 1. 项目概述
本项目实现了一个 **LLM 驱动的紫队自动化框架**,该框架通过完全自动化的流水线,弥合了对手模拟(红队)与检测工程(蓝队)之间的差距。
该框架模拟映射到 MITRE ATT&CK 技术的网络攻击,将生成的遥测数据输入大语言模型以自动生成 Sigma 检测规则,然后针对模拟日志对这些规则进行评分以衡量检测覆盖率——所有这些只需一次 API 调用。
**核心理念:** 传统的紫队演练需要红蓝两队协同进行大量手动操作。本框架自动化了该周期中重复的部分——日志生成、规则编写和覆盖率验证——将通常需要数小时的过程缩短至 30 秒以内。
## 2. 问题陈述
安全运营中心 依赖检测规则来识别攻击。编写这些规则非常耗时,并且需要深厚的专业知识。同时,攻击者也在不断演进其技术。结果导致攻击者的能力与防御者的检测能力之间存在持久的差距。
紫队演练的存在是为了缩小这一差距,但它们需要红蓝两队之间的协调配合,频繁运行成本高昂,且生成的文档不一致。
**本框架解决了:**
- 用于检测测试的攻击遥测数据模拟的手动开销
- 为每种技术手动编写 Sigma 规则的瓶颈
- 缺乏关于检测规则是否实际有效的自动化反馈
- 缺乏可重复、有文档记录的紫队操作流水线
## 3. 架构
```
┌─────────────────────────────────────────────────────────────────┐
│ PURPLE TEAM AUTOMATION FRAMEWORK │
│ │
│ ┌──────────────┐ ┌──────────────┐ ┌────────────────┐ │
│ │ RED ENGINE │────▶│ BLUE ENGINE │────▶│ VALIDATOR │ │
│ │ │ │ │ │ │ │
│ │ Adversary │ │ LLM-Powered │ │ Coverage │ │
│ │ Simulation │ │ Sigma Rule │ │ Scoring │ │
│ │ (T-Codes) │ │ Generation │ │ PASS/WARN/FAIL│ │
│ └──────────────┘ └──────────────┘ └────────────────┘ │
│ │ │ │ │
│ └────────────────────┴──────────────────────┘ │
│ │ │
│ ┌─────────────────┐ │
│ │ ORCHESTRATOR │ │
│ │ (Pipeline Ctrl)│ │
│ └─────────────────┘ │
│ │ │
│ ┌───────────────┴───────────────┐ │
│ │ │ │
│ ┌─────────────────┐ ┌──────────────────┐ │
│ │ FastAPI Server │ │ Artifact Store │ │
│ │ REST Endpoints │ │ JSON + YAML I/O │ │
│ └─────────────────┘ └──────────────────┘ │
│ │ │
│ ┌─────────────────┐ │
│ │ HTML Dashboard │ │
│ │ (Browser UI) │ │
│ └─────────────────┘ │
└─────────────────────────────────────────────────────────────────┘
```
### 组件摘要
| 组件 | 文件 | 职责 |
|---|---|---|
| 红队引擎 | `app/engines/red_engine.py` | 模拟 MITRE 技术的攻击遥测数据 |
| 蓝队引擎 | `app/engines/blue_engine.py` | 调用 LLM API 生成 Sigma 检测规则 |
| 模拟蓝队引擎 | `app/engines/mock_blue_engine.py` | 使用硬编码 Sigma 规则的离线后备方案(无需 API 密钥) |
| 验证器 | `app/engines/validator.py` | 根据遥测日志对 Sigma 规则覆盖率进行评分 |
| 编排器 | `app/engines/orchestrator.py` | 按顺序运行完整流水线 |
| 数据结构 | `app/schema/schema.py` | 所有流水线阶段的 Pydantic v2 数据模型 |
| 制品存储 | `app/store/artifact_store.py` | 将流水线结果和规则保存到磁盘 |
| API 服务器 | `main.py` | 暴露流水线端点的 FastAPI REST 服务器 |
| 仪表盘 | `dashboard.html` | 用于运行和监控流水线的基于浏览器的 UI |
## 4. MITRE ATT&CK 覆盖范围
| 技术 ID | 名称 | 战术 | 日志来源 | 事件 ID |
|---|---|---|---|---|
| T1059.001 | PowerShell 执行 | Execution | PowerShell Operational | 4104 |
| T1003.001 | LSASS 内存转储 | Credential Access | Sysmon | 10 |
| T1547.001 | 注册表 Run 键持久化 | Persistence | Sysmon | 13 |
| T1055.001 | DLL 注入 | Defense Evasion / Privilege Escalation | Sysmon | 8 |
| T1078 | 有效账户 — 窃取凭据登录 | Initial Access / Persistence | Windows Security | 4624 |
| T1082 | 系统信息发现 | Discovery | Sysmon / Process | 1 |
| T1071.001 | 基于 Web 协议的命令与控制 | Command & Control | Sysmon Network | 3 |
每项技术都使用源自已知攻击者工具(Mimikatz、Procdump、编码的 PowerShell cradles)的字段值,模拟逼真的 Windows 遥测数据。
## 5. 文件夹结构
```
PURPLE_TEAM_FRAMEWORK/
│
├── app/
│ ├── engines/
│ │ ├── __init__.py
│ │ ├── red_engine.py # Adversary simulation — generates synthetic telemetry
│ │ ├── blue_engine.py # LLM API call — generates Sigma rules
│ │ ├── mock_blue_engine.py # Offline fallback — hardcoded Sigma rules
│ │ ├── orchestrator.py # Pipeline controller (Red → Blue → Validate)
│ │ └── validator.py # Coverage scoring engine
│ │
│ ├── schema/
│ │ ├── __init__.py
│ │ └── schema.py # Pydantic v2 data models (all stages)
│ │
│ └── store/
│ ├── __init__.py
│ └── artifact_store.py # Saves JSON results and Sigma YAML to disk
│
├── logs/ # Pipeline run results (auto-generated, not committed)
├── rules_output/ # Generated Sigma rules (auto-generated, not committed)
├── notebooks/ # Jupyter notebooks (demo and experiments)
├── tests/ # Unit tests
│
├── main.py # FastAPI application entry point
├── dashboard.html # Browser-based monitoring dashboard
├── requirements.txt # Python dependencies
├── .env.example # Environment variable template
├── .env # API keys (NOT committed to repo)
├── .gitignore
└── README.md
```
## 6. 技术栈
| 层级 | 技术 | 用途 |
|---|---|---|
| 语言 | Python 3.11+ | 核心框架 |
| API 框架 | FastAPI 0.135 | REST 服务器和 OpenAPI 文档 |
| AI / LLM | Anthropic Claude (claude-sonnet) | Sigma 规则生成 |
| 数据验证 | Pydantic v2 | 请求/响应模式强制执行 |
| 检测格式 | Sigma | 供应商中立的检测规则标准 |
| YAML 解析 | PyYAML | 解析 LLM Sigma 输出 |
| 前端 | HTML / Vanilla JS | 仪表盘(无框架依赖) |
| 服务器 | Uvicorn | FastAPI 的 ASGI 服务器 |
| 测试 | pytest | 单元测试 |
| 配置 | python-dotenv | 环境变量管理 |
## 7. 工作原理 — 流水线流程
### 阶段 1:红队引擎(对手模拟)
红队引擎接受一个 MITRE ATT&CK 技术 ID,并生成 `N` 条合成 Windows 遥测日志,以模拟真实攻击产生的数据。不会执行任何实际的恶意代码——所有输出均为模拟数据。
对于 `T1059.001` (PowerShell),它会生成带有逼真编码命令和下载 cradles 的 Event ID 4104 日志。对于 `T1003.001` (LSASS),它会生成针对 `lsass.exe` 且包含已知工具名称(如 `mimikatz.exe` 和 `procdump.exe`)的 Sysmon Event ID 10(进程访问)日志。所有 7 项技术都遵循相同的模式,每项技术都使用源自真实世界威胁情报的特定字段值。
### 阶段 2:蓝队引擎(LLM 驱动的检测)
蓝队引擎从阶段 1 中提取前 3 条日志,并为 LLM API 构建结构化 prompt。该 prompt 指示模型扮演检测工程师的角色,并根据日志指标返回有效的 Sigma YAML 规则。
该引擎解析响应,验证 YAML 结构,并将其映射到 `SigmaRule` Pydantic 模型。如果设置了 `DEMO_MODE=true` 或未提供 API 密钥,则会改用模拟蓝队引擎——它会返回硬编码的 Sigma 规则,使流水线能够完全离线运行。
### 阶段 3:验证器(覆盖率评分)
验证器从生成的 Sigma 规则的 `detection` 块中提取所有检测关键字。它根据这些关键字检查每条遥测日志,仅与 Sigma 规则在真实 SIEM 中所针对的字段(CommandLine、Image、TargetObject 等)进行匹配。
覆盖率得分按 `matched_logs / total_logs` 计算,并映射为:
- `PASS` — 检测到 ≥ 75% 的日志
- `WARN` — 检测到 50–74% 的日志
- `FAIL` — 检测到 < 50% 的日志
### 阶段 4:制品存储
如果设置了 `save_artifacts: true`,完整的流水线结果将作为 JSON 文件写入 `logs/`,而 Sigma 规则将作为 `.yml` 文件写入 `rules_output/`。这两个目录均已从版本控制中排除。
## 8. 设置与安装
### 前置条件
- Python 3.11 或更高版本
- Anthropic API 密钥([在此处获取](https://console.anthropic.com/))——如果使用 DEMO_MODE 则为可选
### 安装
```
# 1. Clone 仓库
git clone https://github.com/kushagra-patel1011/llm-purple-team-automation.git
cd llm-purple-team-automation
# 2. 创建并激活虚拟环境
python -m venv venv
# Windows
venv\Scripts\activate
# macOS/Linux
source venv/bin/activate
# 3. 安装依赖
pip install -r requirements.txt
# 4. 配置环境
cp .env.example .env
# 打开 .env 并添加您的 ANTHROPIC_API_KEY
```
### .env 文件
```
ANTHROPIC_API_KEY=sk-ant-xxxxxxxxxxxxxxxxxxxxxxxx
APP_ENV=development
LOG_LEVEL=INFO
RULES_OUTPUT_DIR=rules_output
LOGS_DIR=logs
```
要在没有 API 密钥的情况下运行,请在 `.env` 中设置 `DEMO_MODE=true`。流水线将通过模拟蓝队引擎使用硬编码的 Sigma 规则。
## 9. 运行框架
### 启动 API 服务器
```
python main.py
```
服务器启动于 `http://localhost:8000`
### 访问仪表盘
在浏览器中打开 `dashboard.html`。请确保先启动 API 服务器。
### 访问 API 文档
FastAPI 自动生成交互式文档:
- Swagger UI:`http://localhost:8000/docs`
- ReDoc:`http://localhost:8000/redoc`
### 运行测试
```
pytest tests/
```
## 10. API 参考
### `GET /`
健康检查。返回服务器状态和支持的技术。
### `GET /health`
返回服务器健康状况和支持的 MITRE 技术列表。
### `GET /techniques`
返回所有支持的 MITRE ATT&CK 技术及其名称和战术。
### `POST /pipeline/run`
触发完整的 红队 → 蓝队 → 验证 流水线。
**请求体:**
```
{
"technique_id": "T1059.001",
"log_count": 5,
"save_artifacts": true
}
```
**响应:** 完整的 `PipelineResult`,包含所有阶段输出、覆盖率得分和 Sigma 规则 YAML。
### `GET /runs`
返回所有先前保存的流水线运行记录的分页列表。支持 `limit`(1-100,默认 20)和 `offset`(默认 0)查询参数。
### `GET /runs/{pipeline_id}`
通过 ID 返回特定流水线运行的完整结果。
## 11. 仪表盘
HTML 仪表盘(`dashboard.html`)提供了一个基于浏览器的界面,用于:
- 从所有 7 个受支持的选项中选择 MITRE ATT&CK 技术
- 设置要生成的遥测日志数量(1-50)
- 通过单个按钮触发完整的流水线
- 查看带有语法高亮的生成 Sigma 规则
- 查看覆盖率得分和 PASS/WARN/FAIL 状态
- 浏览流水线运行历史记录
无需构建步骤或 Node.js——单个静态 HTML 文件即可调用本地 FastAPI 服务器。
## 12. 示例输出
### Sigma 规则 (T1059.001 — PowerShell)
```
title: Suspicious PowerShell Encoded Command Execution
id: a3f1c2d4-8b5e-4a9f-b2c1-7e3d6f9a0b1c
description: Detects PowerShell execution with encoded commands, hidden window, or download cradles indicative of T1059.001
status: experimental
level: high
logsource:
product: windows
service: powershell
detection:
selection:
EventID: 4104
ScriptBlockText|contains:
- '-EncodedCommand'
- 'DownloadString'
- '-WindowStyle Hidden'
- 'IEX'
- 'Net.WebClient'
condition: selection
tags:
- attack.execution
- attack.t1059.001
```
### 覆盖率结果
```
Coverage Score : 100.0%
Matched Logs : 5 / 5
Status : PASS
```
## 13. 设计决策
**为什么选择 Sigma 而不是 YARA 或 Snort?**
Sigma 是 SIEM 检测规则的供应商中立标准。它可以被编译为 Splunk SPL、Elastic EQL、Microsoft Sentinel KQL 等。生成 Sigma 意味着输出无需修改即可直接在真实的 SOC 环境中使用。
**为什么使用 LLM 进行规则生成?**
为每种技术手动编写 Sigma 规则需要一名同时了解攻击行为和 SIEM 字段模式的检测工程师。在给定日志样本的情况下,可以通过 prompt 让 LLM 自动执行此转换,从而消除紫队演练蓝队阶段中的人力瓶颈。
**为什么要模拟日志而不是使用真实日志?**
使用真实的攻击日志需要在受控的实验室环境中执行实际的恶意工具,这超出了本项目的范围。使用源自公开威胁情报(Mimikatz 特征、PowerShell cradle 模式)的已知 IOC 模式进行模拟,可以生成在 Sigma 规则视角下与真实日志结构完全相同的日志。
**为什么要有模拟蓝队引擎?**
模拟蓝队引擎允许整个流水线在没有 API 密钥的情况下离线运行。这用于学术演示、测试以及无法进行实时 API 调用的环境。可以通过 `.env` 文件中的 `DEMO_MODE=true` 进行切换。
**为什么 `rules_output/` 被排除在版本控制之外?**
这些是生成的流水线制品,而不是源代码。提交它们会将其误表现为静态编写的规则,而不是流水线的动态输出。该目录在运行时创建。
## 14. 局限性与未来工作
**当前局限性:**
- 红队引擎生成的是合成日志;它不与真实的 Windows 事件基础设施交互
- 由于上下文窗口限制,蓝队引擎仅向 LLM 发送 3 个样本日志
- 验证器仅模拟 Sigma 的 `contains` 行为——不考虑 `not` 条件或多选逻辑
- FastAPI 服务器未设置身份验证(仅供开发使用)
**计划扩展:**
- 与 Elastic Stack 集成,将生成的 Sigma 规则直接部署到真实的 SIEM 中
- 增加 LLM 反馈循环:如果验证器返回 FAIL,则自动附带失败上下文重新发起 prompt 以改进规则
- 通过子进程集成,用 Atomic Red Team 测试输出替换合成日志生成
- 添加多技术链以模拟杀伤链序列
- 添加 TAXII/STIX 导出用于威胁情报共享
## 15.参考文献
1. MITRE ATT&CK 框架 — https://attack.mitre.org/
2. Sigma 规范 — https://github.com/SigmaHQ/sigma
3. Anthropic Claude API 文档 — https://docs.anthropic.com/
4. Pydantic v2 文档 — https://docs.pydantic.dev/
5. FastAPI 文档 — https://fastapi.tiangolo.com/
6. Sysmon 事件 ID 参考 — https://learn.microsoft.com/en-us/sysinternals/downloads/sysmon
7. Windows 安全事件日志参考 — https://learn.microsoft.com/en-us/windows/security/threat-protection/auditing/
8. Thomas, S. 等人 (2023). “利用大型语言模型自动化威胁检测.” *IEEE Security & Privacy.*
9. Shin, R. 等人 (2024). “LLM 辅助的 SIEM 平台检测规则生成.” *USENIX Security Symposium.*
*所有攻击模拟均为合成数据,不会与真实系统或网络交互。*
标签:AMSI绕过, AV绕过, Cloudflare, DLL 劫持, DNS枚举, FastAPI, LLM大模型, MITRE ATT&CK, Python, Sigma规则, 大语言模型, 威胁检测, 安全工具集合, 安全规则引擎, 安全遥测, 对手模拟, 恶意代码分类, 攻击模拟, 无后门, 目标导入, 紫队框架, 紫队自动化, 网络安全, 网络安全工具, 覆盖度验证, 规则生成, 逆向工具, 隐私保护, 驱动签名利用