Skip to main content
Glama
README.md
# 🛡️ AutoSOC Agent

## 项目简介

AutoSOC Agent 是一个基于 Agentic AI 技术的自动化安全运营中心系统,专注于网络流量分析和安全威胁检测。它采用先进的微内核 + 插件化架构,结合大语言模型的推理能力,实现了对网络流量的智能分析和安全威胁的自动检测。

### 核心功能

- **无感摄入**:自动监听指定目录,当流量包放入后自动完成预处理
- **智能分析**:利用大语言模型分析网络流量,识别潜在的安全威胁
- **插件化架构**:支持自定义插件开发,轻松扩展新的安全分析功能
- **实时预警**:发现异常流量时及时发出预警
- **流量可视化**:提供直观的流量分析结果可视化

## 系统架构

AutoSOC Agent 采用 **微内核 + 插件化架构**,严格遵循开闭原则,确保新功能的扩展不会破坏现有核心。

### 架构层次

1. **内核层 (Core)**:系统的"不动产",负责生命周期管理、依赖注入、数据库连接池等
2. **基建层 (Infrastructure)**:通用工具组件,如 Tshark 封装、目录监听、预处理引擎等
3. **领域层 (Domain)**:系统的数据契约,定义统一的数据模型
4. **插件层 (Features/Plugins)**:独立的功能包,如流量分析、SQL 注入检测等

### 数据流

1. **数据摄入**:通过 Watchdog 监听目录,发现新的流量包
2. **预处理**:Preprocessor 自动完成 PCAP 切片、Zeek 日志提取等
3. **情报上板**:将提取的情报注入到 SQLite 黑板数据库
4. **AI 分析**:大语言模型分析结构化数据,识别安全威胁
5. **结果输出**:生成分析报告并发出预警

## 目录结构

```
src/app/
├── core/                  # 🟢 [内核层] 系统的"不动产"
│   ├── server.py          # FastMCP 启动入口 & 环境变量注入
│   ├── loader.py          # 动态加载器:扫描 features 并注册
│   ├── context.py         # 依赖注入容器 (DI Container)
│   └── database.py        # SQLite 异步黑板与状态机
│
├── infrastructure/        # 🟡 [基建层] 屏蔽底层工具差异
│   ├── base_runner.py     # 包含熔断与超时的执行引擎基类
│   ├── tshark_runner.py   # Tshark 安全执行器 (防注入)
│   ├── watchdog.py        # 目录监听黑洞服务
│   └── preprocessor/      # 流量预处理引擎
│
├── domain/                # 🟣 [领域层] 数据契约
│   ├── traffic.py         # 流量相关数据模型
│   ├── workflow.py        # 工作流相关数据模型
│   └── interaction.py     # 交互相关数据模型
│
└── features/              # 🔴 [插件层] 业务逻辑游乐场
    ├── traffic_inspector/ # 流量分析插件
    ├── decoder/           # 数据解码插件
    └── admin_tools/       # 管理工具插件
```

## 安装指南

### 前置依赖

- **Python 3.10+**:系统运行环境
- **Wireshark**:提供 tshark 和 editcap 工具
- **Zeek**:可选,用于提取结构化日志
- **SQLite**:轻量级数据库,用于存储分析结果

### 安装步骤

1. **克隆项目**

   ```bash
   git clone <repository-url>
   cd traffic_analysis
   ```

2. **创建虚拟环境**

   ```bash
   python -m venv venv
   # Windows
   venv\Scripts\activate
   # Linux/Mac
   source venv/bin/activate
   ```

3. **安装依赖**

   ```bash
   pip install -r requirements.txt
   ```

4. **配置环境变量**(可选)

   ```bash
   # Windows
   set APP_WORKSPACE=./workspace
   set TSHARK_PATH=C:\Program Files\Wireshark\tshark.exe
   
   # Linux/Mac
   export APP_WORKSPACE=./workspace
   export TSHARK_PATH=/usr/bin/tshark
   ```

## 使用方法

### 启动系统

```bash
python run.py
```

系统启动后,会自动监听 `workspace/pcap_inbox/` 目录,当流量包放入该目录时,系统会自动开始分析。

### 核心工具使用

1. **流量分析**

   - `get_pcap_summary`:获取流量包的全局统计信息
   - `inspect_packets`:使用 Wireshark 语法查询特定数据包

2. **数据解码**

   - `decode_payload`:解码各种编码格式的数据

3. **管理工具**

   - `run_garbage_collection`:运行垃圾回收,清理过期数据

## 插件开发

AutoSOC Agent 支持自定义插件开发,只需按照以下步骤即可:

1. **创建插件目录**

   ```bash
   mkdir -p src/app/features/my_plugin
   ```

2. **创建插件初始化文件**

   ```python
   # src/app/features/my_plugin/__init__.py
   from mcp.server.fastmcp import FastMCP
   from app.core.context import AppContext

   def register(mcp: FastMCP, ctx: AppContext):
       """
       插件注册函数
       """
       # 注册工具
       @mcp.tool(name="my_tool")
       async def my_tool(param: str) -> str:
           """
           我的工具
           """
           return f"处理结果: {param}"

       ctx.logger.info("plugin_registered", plugin="my_plugin")
   ```

3. **重启系统**

   系统会自动发现并加载新的插件。

## 依赖项

| 依赖 | 版本 | 用途 |
|------|------|------|
| Python | 3.10+ | 运行环境 |
| pydantic | 最新版 | 数据验证和序列化 |
| watchdog | 最新版 | 目录监听 |
| aiosqlite | 最新版 | 异步 SQLite 操作 |
| structlog | 最新版 | 结构化日志 |
| mcp | 最新版 | Agent 通信协议 |
| Wireshark | 3.0+ | 网络分析工具 |
| Zeek | 5.0+ | 流量日志提取 |

## 配置选项

| 配置项 | 环境变量 | 默认值 | 说明 |
|--------|----------|--------|------|
| 工作目录 | APP_WORKSPACE | ./workspace | 系统工作目录 |
| Tshark 路径 | TSHARK_PATH | 自动查找 | Tshark 可执行文件路径 |
| 数据库名称 | DB_NAME | blackboard.db | 数据库文件名称 |
| 监控目录 | DROPZONE_FOLDER | pcap_inbox | 流量包收件箱目录 |
| 最大包数限制 | MAX_PACKET_LIMIT | 1000 | 单次查询最大返回包数 |
| 默认超时时间 | DEFAULT_TIMEOUT | 30 | 子进程默认超时时间(秒) |

## 贡献指南

我们欢迎社区贡献,包括但不限于:

- 修复 bug
- 添加新功能
- 改进文档
- 优化性能

### 贡献流程

1. **Fork 仓库**
2. **创建分支**:`git checkout -b feature/your-feature`
3. **提交更改**:`git commit -m "Add your feature"`
4. **推送分支**:`git push origin feature/your-feature`
5. **创建 Pull Request**

## 许可证

本项目采用 MIT 许可证。详见 [LICENSE](LICENSE) 文件。

## 联系方式

- **项目主页**:<repository-url>
- **问题反馈**:<repository-url>/issues
- **邮箱**:<maintainer-email>

## 致谢

- **Wireshark**:提供了强大的网络分析工具
- **Zeek**:提供了优秀的网络流量分析框架
- **FastMCP**:提供了高效的 Agent 通信协议
- **所有贡献者**:感谢你们的辛勤工作和宝贵建议

---

**AutoSOC Agent** - 让网络安全分析更加智能、高效!