tanishq107/network_attack_detection_system
GitHub: tanishq107/network_attack_detection_system
NADE 是一个混合网络攻击检测引擎,结合 Python 启发式检测与 Suricata IDS,对 PCAP 文件或实时流量进行分析,并将告警映射到 MITRE ATT&CK 框架以生成可视化报告。
Stars: 0 | Forks: 0
# NADE — 网络攻击检测引擎
一个独立的网络安全分析平台,能够接入 **PCAP 文件**
或**实时流量**,运行混合检测栈(Python 启发式检测 + 真正的
**Suricata** IDS),将发现映射到 **MITRE ATT&CK**,并通过具有浅色和
深色主题的现代 React 仪表板生成
**JSON / HTML / PDF** 报告。
## 亮点
- **PCAP 上传 + 实时嗅探器** — 选择一个接口,设置可选的 BPF
过滤器,并实时观察警报出现。随后捕获的流量可以
下载为 PCAP。
- **混合检测** — Python 检测器(端口扫描、SYN flood、DNS 隧道、
暴力破解、信标通信、ARP 欺骗、恶意软件流量)与真正的
Suricata IDS 并行运行,以提供基于特征的覆盖。
- **Suricata 规则管理器** — 查看内置规则、编写自己的规则,或从
URL / 粘贴文本中导入。可以单独切换规则的启用或禁用状态。
- **报告** — 执行摘要、IOC 列表、MITRE 技术映射,
每个警报的详细信息。以 HTML 格式呈现,可下载为 JSON 或 PDF。
- **仪表板** — 总计、严重程度甜甜圈图、类别条形图、警报
时间轴,以及带有严重程度标签的警报表格。图表会随 UI 主题自动切换。
## 快速开始
### 1. 后端
```
cd backend
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
# macOS
brew install suricata
# Debian/Ubuntu
sudo apt install suricata
cd ..
sudo backend/.venv/bin/uvicorn backend.api.main:app --reload --port 8000
```
交互式 API 文档位于 **http://localhost:8000/docs**。
### 2. 前端
仪表板需要 **Node.js 18+**(自带 `npm`)。如果尚未
安装,请在每台机器上安装一次:
```
# macOS (Homebrew)
brew install node
# Debian / Ubuntu
sudo apt update && sudo apt install -y nodejs npm
```
验证:
```
node -v # should print v18.x or newer
npm -v
```
然后安装项目的 JS 依赖并启动开发服务器:
```
cd frontend
npm install
npm run dev # http://localhost:5173 (proxies /api → :8000)
```
生产构建:
```
npm run build # output in frontend/dist
```
## REST API
### 上传
| 方法 | 路径 | 描述 |
| -------- | ----------------------------------- | ---------------------------------- |
| `POST` | `/api/upload` | multipart PCAP 上传 |
| `GET` | `/api/uploads` | 列出上传 |
| `DELETE` | `/api/uploads/{id}` | 级联删除 + 移除存储的文件 |
| `GET` | `/api/uploads/{id}/download` | 流式传输存储的 PCAP |
### 分析
| 方法 | 路径 |
| ------ | ----------------------------------------------------- |
| `GET` | `/api/alerts?upload_id=&limit=` |
| `GET` | `/api/summary?upload_id=` |
| `GET` | `/api/timeline?upload_id=&buckets=` |
### 报告
| 方法 | 路径 |
| ------ | ------------------------------------------------------- |
| `GET` | `/api/report/{upload_id}?format=html\|json\|pdf` |
### Suricata 规则
| 方法 | 路径 | 描述 |
| -------- | ----------------------------- | --------------------------------- |
| `GET` | `/api/rules` | 列表 |
| `POST` | `/api/rules` | 创建自定义规则 |
| `PATCH` | `/api/rules/{id}` | 启用 / 禁用 |
| `DELETE` | `/api/rules/{id}` | 删除(仅限非内置规则) |
| `POST` | `/api/rules/import` | `{ url? , text? , source_label }` |
| `POST` | `/api/rules/run/{upload_id}` | 在存储的 PCAP 上运行 Suricata |
### 实时嗅探器
| 方法 | 路径 | 描述 |
| ------ | ----------------------- | -------------------------------------------- |
| `GET` | `/api/live/interfaces` | 列出可用的 NIC |
| `GET` | `/api/live/status` | 当前嗅探器 + Suricata 状态 |
| `POST` | `/api/live/start` | `{ interface, bpf_filter?, with_suricata }` |
| `POST` | `/api/live/stop` | 停止 + 结束 PCAP 录制 |
## 检测模块
| 模块 | 检测内容 |
| ------------------ | --------------------------------------------------------- |
| `port_scan` | 单一来源发往大量唯一目标端口的高扇出 |
| `syn_flood` | 针对单一目标的高速率 TCP SYN 突发 |
| `dns_tunneling` | 过长 / 高熵的 DNS 标签,超大的 TXT 记录 |
| `brute_force` | 重复的认证尝试(SSH, FTP, RDP, HTTP basic) |
| `beaconing` | 周期性的出站连接(标准端口已过滤) |
| `arp_spoof` | 多个 MAC 地址声明拥有相同的 IP |
| `malware_traffic` | IOC 列表匹配(域名 / IP / JA3) |
每个检测器返回的警报均包含严重程度、MITRE 技术 ID 和证据。
## 故障排除
- **实时嗅探器失败并提示“权限拒绝” / “无法设置 caps”** —
请使用 `sudo` 运行 uvicorn 或授予 `cap_net_raw` 权限(参见快速开始)。UI
会显示带有确切命令的红色横幅。
- **重新运行 Suricata 会重复生成警报** — 已修复;在重新插入之前,同一上传项之前的 `suricata:%`
行已被删除。
- **`Download PCAP` 返回 `409`** — 有实时会话仍在写入
该文件。请先停止它。
- **刷新按钮“无反应”** — 每个列表端点都已进行了缓存清理
(`?_=
` + `cache: 'no-store'`);请使用选项卡专属的刷新按钮,
该按钮拥有独立于后台轮询的加载指示器。标签:GitHub搜索工具, IP 地址批量处理, Metaprompt, MITM代理, Python, React, Suricata, Syscalls, 插件系统, 无后门, 现代安全运营, 网络安全, 逆向工具, 隐私保护