Sarthak-Purohit/NetAgent
GitHub: Sarthak-Purohit/NetAgent
NetAgent 是一个将传统网络安全工具与本地大语言模型结合的 AI 驱动安全仪表板,提供主动漏洞扫描、被动流量分析和自动化威胁解释等一体化安全运维能力。
Stars: 0 | Forks: 0
# Project NetAgent
Project NetAgent 是一个由 AI 驱动的网络安全仪表板(功能上相当于一个“盒子里的 SOC 分析师”),它支持使用本地、物理隔离的大语言模型(LLM)进行主动漏洞扫描、被动网络流量分析、实时数据包捕获以及自动化威胁解释。
## 1. 项目概述
Project NetAgent 将多个模块集成到一个统一的安全仪表板中:
1. **主动扫描模块**:使用基于 socket 的扫描来发现目标主机/网络上的开放端口、服务、banner 和漏洞。
2. **被动分析模块**:使用 Scapy 嗅探实时数据包或解析上传的 PCAP/PCAPNG 文件,标记诸如端口扫描、DDoS 和基于特征签名的威胁等异常情况。
3. **AI 威胁解释器**:与本地、物理隔离的 Ollama 实例通信,以分析扫描或警报,提供详细的解释、严重性评估和修复步骤。
4. **AI 安全 Copilot 聊天机器人**:一个交互式的多轮对话界面,可帮助安全管理员查询主机安全状况、排查漏洞并规划缓解措施。
5. **半自主 Agent 引擎**:一个多步骤威胁调查器,它将扫描器结果和基于 AI 的威胁分析串联起来,以确定是否需要进行深度扫描,提出精确的主机级修复命令(iptables 规则),并在执行前等待人类操作员的批准。
6. **React 前端(Vite)**:一个交互式 Web 仪表板,显示实时流量图表、活动警报源、主动扫描器控制器、对话式聊天机器人面板以及半自主 Agent 界面。
## 2. 前置条件
要构建并运行 NetAgent,请确保您的主机系统已安装以下组件:
- **Docker**(v20.10.0 或更高版本)
- **Docker Compose**(v2.0.0 或更高版本)
- **Ollama**(用于实现 AI 威胁解释器功能)
- **Linux 内核**:需支持 raw socket 和网络能力(容器化数据包捕获需要 `NET_ADMIN` 和 `NET_RAW`)。
## 3. 安装与设置
您可以使用以下命令序列启动整个应用程序套件:
1. **在您的主机上拉取所需的 AI 模型:**
ollama pull llama2
2. **构建并启动容器化应用程序:**
docker compose up --build -d
3. **验证服务是否正在运行:**
docker compose ps
4. **访问应用程序:**
- 打开您的 Web 浏览器并导航至 `http://localhost`(Nginx 前端)
- API 文档和后端 endpoint 可在 `http://localhost:8000` 获取
## 4. 配置指南
### Ollama 模型设置
AI 威胁解释器通过 REST API 与 Ollama 进行通信。
- 在 `docker-compose.yml` 中,后端指定了 `OLLAMA_BASE_URL=http://host.docker.internal:11434` 以便与主机的 Ollama 实例进行通信。
- 您可以通过编辑 `docker-compose.yml` 中的环境变量来配置后端行为:
- `OLLAMA_BASE_URL`:Ollama 服务的 Base URL(默认为主机网关)。
- `OLLAMA_MODEL`:要作为目标的 LLM(默认为 `llama2`。您可以使用 `llama3`、`mistral` 或任何其他通过 `ollama pull` 拉取的模型)。
- `OLLAMA_TIMEOUT`:网络请求超时时间(以秒为单位,默认:`10.0`)。
### 网络权限
被动实时数据包嗅探需要访问底层 socket API。
- `backend` 容器配置了:
cap_add:
- NET_ADMIN
- NET_RAW
- **NET_RAW** 允许 Scapy 打开 raw socket 进行数据包嗅探。
- **NET_ADMIN** 允许容器配置网络接口和路由表策略。
- 确保您的主机内核和容器运行时没有阻止这些能力(在 Linux 上默认启用)。
## 5. 使用指南
### 主动扫描
1. 从侧边栏导航至 **Scanner** 页面。
2. 输入目标 IP 地址、子网范围(例如 `192.168.1.0/24`)或域名。
3. 选择扫描配置:
- **Quick Scan**:扫描标准/常用端口。
- **Full Scan**:扫描更广泛的端口范围。
- **Targeted Scan**:扫描专门配置的端口。
4. 点击 **Start Scan**。扫描将作为后台任务运行。结果将显示在扫描历史列表中,包含开放端口、服务和潜在漏洞。
### PCAP 文件上传
1. 导航至 **Traffic** 页面。
2. 拖放或点击选择一个 `.pcap` 或 `.pcapng` 文件。
3. NetAgent 将解析该文件,执行启发式威胁规则(DDoS 和端口扫描检测),在 SQLite 数据库中记录警报,并刷新 UI 警报源。
### 实时捕获
1. 转到 **Traffic** 页面,找到 **Live Capture** 卡片。
2. 选择目标接口(`eth0`、`wlan0` 或 `lo`)。
3. 点击 **Start Capture**。NetAgent 将嗅探实时数据包,并在出现异常流量模式时引发实时警报。
4. 点击 **Stop Capture** 以终止会话。
### AI 解释器
1. 点击源或扫描历史记录中的任何活动警报。
2. 点击 **Explain Threat**。
3. NetAgent 将查询 Ollama 以生成 JSON 响应,其中包含清晰的威胁解释、自定义严重性评级和修复清单。
4. *Air-Gap 回退*:如果 Ollama 处于离线或响应缓慢状态,系统会自动回退到基于规则的离线模拟解释器,从而确保操作不中断。
### AI 安全 Copilot 聊天
1. 转到主导航中的 **🤖 AI Copilot** 标签页。
2. 输入任何网络安全问题、端口查询或缓解故障排除请求(例如,*“我该如何保护 SSH 端口 22?”*)。
3. 聊天机器人会保留对话历史记录,并查询本地 Ollama 实例以获取对话式的分步指导。
4. *回退模式*:如果 Ollama 处于离线状态,聊天机器人将进入 *离线回退模式*,为关键服务(SSH、数据库、主动扫描器)提供交互式的预配置建议。
### 半自主 Agent
1. 转到 **🤖 Autonomous Agent** 标签页。
2. 输入目标网络 IP/子网(例如 `192.168.1.15`)并选择扫描配置。
3. 点击 **Start Investigation** 以启动自主威胁狩猎循环:
* **阶段 1**:启动会话并记录目标。
* **阶段 2**:触发主动端口扫描。
* **阶段 3**:使用本地 LLM 分析扫描结果。
* **阶段 4**:如果严重程度为严重/高,则升级为深度扫描;否则继续执行。
* **阶段 5**:生成可执行的修复命令(例如 `iptables` 拒绝规则)并进入 `AWAITING APPROVAL` 状态。
4. 检查建议的操作卡片。点击 **Approve & Execute** 以应用规则(模拟的 shell 输出),或点击 **Reject** 以安全地关闭会话。
## 6. API 文档
### 主动扫描
#### `POST /api/scans`
- **目的**:在后台触发新的网络扫描。
- **请求体**:
{
"target": "192.168.1.1",
"profile": "quick"
}
- **响应** (201 Created):
{
"id": 1,
"target": "192.168.1.1",
"profile": "quick",
"status": "running",
"created_at": "2026-06-10T08:37:00Z"
}
#### `GET /api/scans`
- **目的**:获取扫描历史摘要的时间排序列表。
- **响应** (200 OK):扫描对象数组。
#### `GET /api/scans/{id}`
- **目的**:获取特定扫描的详细信息,包括开放端口、banner 以及发现的漏洞列表。
- **响应** (200 OK):详细的扫描历史和结果。
### 被动警报与实时捕获
#### `GET /api/alerts`
- **目的**:获取存储在数据库中的安全警报。
- **查询参数**:
- `limit`:(可选)要获取的最大警报数。
- `severity`:(可选)按严重性筛选(`low`、`medium`、`high`、`critical`)。
- **响应** (200 OK):生成的警报列表。
#### `POST /api/alerts/capture`
- **目的**:控制实时数据包捕获嗅探线程。
- **请求体**:
{
"action": "start",
"interface": "eth0"
}
- **响应** (200 OK):
{
"status": "capturing",
"interface": "eth0"
}
#### `POST /api/alerts/analyze-pcap`
- **目的**:上传并解析 PCAP/PCAPNG 捕获文件以查找异常情况。
- **请求头**:`Content-Type: multipart/form-data`
- **请求体**:在表单键 `file` 下上传的二进制文件。
- **响应** (200 OK):
{
"status": "success",
"filename": "traffic.pcap",
"alerts_generated": 2,
"alerts": [...]
}
### AI 威胁解释器
#### `POST /api/explain`
- **目的**:请求 AI 生成的描述、严重性分析以及修复步骤。
- **请求体**:
{
"source_type": "alert",
"source_id": 1
}
- **响应** (200 OK):
{
"explanation": "检测到 SYN 扫描攻击。源主机发起了多个快速的半开 TCP 请求...",
"severity": "medium",
"remediation": "配置防火墙规则以对传入的 TCP SYN 数据包进行速率限制,拦截源 IP 地址..."
}
#### `POST /api/chat`
- **目的**:与 AI Copilot 进行对话式聊天界面交互。
- **请求体**:
{
"message": "解释端口 22 的安全性",
"history": [
{"role": "user", "content": "你好"},
{"role": "assistant", "content": "你好!今天我能为您提供什么网络安全方面的帮助?"}
]
}
- **响应** (200 OK):
{
"response": "端口 22 托管着 SSH 服务,该服务用于安全的远程管理..."
}
### 半自主 Agent 引擎
#### `POST /api/agent/sessions`
- **目的**:在目标上启动一个新的半自主调查会话。
- **请求体**:
{
"target": "192.168.1.15",
"profile": "quick"
}
- **响应** (201 Created):
{
"id": 1,
"target": "192.168.1.15",
"profile": "quick",
"status": "running",
"created_at": "2026-06-16T04:20:00Z",
"steps": []
}
#### `GET /api/agent/sessions`
- **目的**:列出所有调查会话及其状态。
- **响应** (200 OK):包含活动步骤的会话对象数组。
#### `POST /api/agent/sessions/{session_id}/approve/{step_id}`
- **目的**:批准并执行建议的修复操作。
- **响应** (200 OK):
{
"success": true,
"message": "操作已批准。正在执行修复..."
}
### 自主 Agent 流程图
```
graph TD
Start([Start Session]) --> Scan[Active Port Scan]
Scan --> AI[AI Threat Analysis]
AI --> Assess{AI Severity Assessment}
Assess -->|Critical / High| DeepScan[Deep Scan + Re-Analyze]
Assess -->|Medium / Low| Propose[Propose Remediation]
DeepScan --> Propose
Propose --> Check{Actionable?}
Check -->|No| Complete([Complete Session])
Check -->|Yes| Await[Pause & Await Approval]
Await -->|Approved| Execute[Execute iptables Remediation]
Await -->|Rejected| Close[Close Session without Action]
Execute --> Complete
Close --> Complete
```
标签:AI安全助手, AI风险缓解, C2, React, Scapy, Syscalls, 安全运营中心(SOC), 密码管理, 插件系统, 本地大语言模型, 版权保护, 网络流量分析, 请求拦截, 逆向工具, 防御绕过