cyberRKSha/NetworkRKSha
GitHub: cyberRKSha/NetworkRKSha
NetworkRKSha 是一个基于机器学习的实时网络入侵检测与自主响应系统,能够检测 C2 信标和 DoH 隧道等隐蔽威胁并自动执行防火墙阻断与取证采集。
Stars: 1 | Forks: 0
# NetworkRKSha
**闭环网络入侵检测与自动响应系统**
NetworkRKSha 是一个实时、事件驱动的网络入侵检测系统 (NIDS),旨在自主检测并缓解诸如命令与控制 (C2) 信标和 DNS-over-HTTPS (DoH) 隧道等隐蔽网络威胁。
通过闭环检测与缓解机制,NetworkRKSha 不仅能向管理员发出威胁警报,还能通过动态更新防火墙规则并收集取证数据包捕获以供进一步分析,从而立即控制这些威胁。
## 操作遥测与架构验证
### 1. 仪表盘概览与实时摄入

*NetworkRKSha 的仪表盘。前端通过双 WebSocket 通道连接到 Python FastAPI 后端,所有状态持久化存储在 Redis 中,任务路由由 RabbitMQ 处理。*

*实时威胁指示器从基线正常流量过渡到活动的威胁分析。*

*展示 7 阶段检测流程的交互式架构 pipeline*

*根据在 CTU-13 和 CIRA-CIC-DoHBrw-2020 数据集上训练期间计算的验证指标渲染出的双重 Random Forest 分类器。*
### 2. SOC 级威胁信息流

*SOC 级实时威胁信息流,汇总来自 Scapy 实时流量嗅探器和离线摄入器 pipeline 的实时警报。*

*同一信息流中的同步操作状态,展示了双模式操作逻辑。*
### 3. 深度取证与 ML 特征提取

*对 DNS-over-HTTPS 隧道检测 (MITRE T1071.004) 的深度取证。引擎根据实时警报数据(包括字节不对称比率和流持续时间)动态生成取证叙述。*

*从 TLS 加密流量中提取的无解密 ML 特征数组。所有 29 个特征均根据 header 元数据计算得出,原始数据包将作为可下载的 PCAP 文件保留,用于独立的取证验证。*
### 4. 检测分析

*渲染实时 Recharts 可视化图表的检测分析仪表盘。*

*平衡的双模型检测分布,以及将 iptables BLOCKED 动作与 LOGGED 咨询条目区分开来的“响应动作”环形图。*
### 5. 模型评估与基准测试

*通过 RabbitMQ 队列处理测试行的实时 ML 评估 pipeline。由 RabbitMQ 支持的异步 worker 以 5 万条为区块处理测试 CSV 文件。*

*模型评估引擎将我们的生产级 DoH Random Forest 与已发布的 UNB CIC 基线进行比较。*

*CTU-13 基线比较,展示了相较于已发布的 BClus 行为聚类方法的准确性提升。*
### 6. 主动防御与引擎控制

*NIDS 控制面板配置为具有 5 层安全架构态势的主动防御。设置持久化保存在 Redis 哈希中。*

*异常置信阈值的操作模式设置。IP 白名单存储在 Redis SET 中,以防止网关锁定。实时嗅探器信息流显示来自 Scapy 的实时数据包统计信息。*
### 7. 取证证据审计与工件生成

*展示双重工件链的取证证据审计:每次 ML 分类都会同时写入一份 JSON 事件报告和一份原始 PCAP 捕获。*

*通过确定性的 SHA-256 流 ID 生成,证明 JSON 事件报告与 PCAP 流捕获之间存在 1:1 对应关系的证据链验证。*
## 架构与工作流
NetworkRKSha 采用现代的、事件驱动的架构运行,结合了底层数据包嗅探、机器学习和异步消息队列。
1. **流量摄入:** 系统使用 Scapy 实时捕获网络流量,处理实时接口和离线 `.pcap`、`.csv` 文件以进行取证重放。
2. **特征提取与 ML 分类:** 提取的流特征将根据预训练的 Random Forest 机器学习模型进行评估,以识别 C2 信标或 DoH 隧道特有的异常行为。对于离线数据集,它利用通过 RabbitMQ 和 Redis 构建的分布式 worker 架构。
3. **自主缓解:** 当威胁被确认后,Responder 模块会自主更新本地 `iptables` 以拦截恶意源 IP(具有可配置的 dry-run 和白名单安全层),从而立即阻止攻击。
4. **取证收集:** 触发警报的原始数据包将作为 `.pcap` 文件保存在本地,提供不可辩驳的入侵证据。
5. **实时仪表盘:** Next.js 前端通过 WebSockets 连接到 FastAPI 后端,通过 Redis pub/sub 流式传输实时检测指标、活动拦截和系统健康状况。
## 核心技术
* **后端与 ML:** Python、FastAPI、Scikit-Learn、Pandas、Scapy
* **事件与状态管理:** RabbitMQ、Redis
* **前端:** Next.js (React)、WebSockets
* **系统/网络:** `iptables` (Linux 防火墙)、Bash
## 核心功能
* **DoH 隧道检测:** 通过分析数据包大小和流字节启发式算法,识别加密 HTTPS 流量内部的恶意 DNS-over-HTTPS 隧道。
* **C2 信标检测:** 利用流持续时间和到达间隔时间的统计方差,检测持久、低速的命令与控制信标。
* **自主主动防御:** 使用动态管理的 `iptables` 链即时拦截已确认的威胁,并带有自动过期的拦截规则和 SSH 安全防护。
* **实时取证证据:** 自动将与警报相关的特定数据包提取并转储到带时间戳的 `.pcap` 文件中,以用于事后分析。
* **学术验证模式:** 支持通过完全相同的 ML pipeline 重放大规模提取了特征的 CSV 数据集或原始 PCAP 文件,以进行学术基准测试。
## 安装与使用
### 前置条件
* Linux 操作系统(用于 `iptables` 和实时网络嗅探)
* Python 3.10+
* Node.js 和 npm(用于 Web 仪表盘)
* Redis 和 RabbitMQ 服务器
### 设置
1. **安装系统依赖(Debian/Ubuntu 示例):**
sudo apt-get install redis-server rabbitmq-server
2. **设置 Python 环境:**
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
3. **安装前端依赖:**
cd web-dashboard
npm install
cd ..
### 生成机器学习模型
为了保持此仓库的轻量化,预训练的 `.pkl` 机器学习模型(可能超过 300MB)不包含在版本控制中。您必须在启动 pipeline 之前在本地生成它们。
#### 1. 获取并构建原始数据结构
下载您首选的网络入侵数据集(例如,用于 DoH 的 CIRA-CIC-DoHBrw-2020 和用于 C2 信标的 CTU-13),并将它们放在项目根目录下新的 `data/` 目录中。确保文件结构符合训练脚本的预期:
```
NetworkRKSha/
└── data/
├── raw_doh.csv # Raw DoH dataset for the live sniffer
├── raw_beacon.csv # Raw CTU-13 dataset for the live sniffer
└── NIDS-Data/
├── doh_evaluation.csv # DoH dataset for the async worker
└── ctu13_beacon_attack.csv # CTU-13 dataset for the async worker
```
#### 2. 准备数据集
运行数据集准备脚本。这将清理原始数据,并将其准确映射到引擎使用的 29 特征 (DoH) 和 25 特征 (信标) 提取 pipeline,输出 `clean_*_train.csv` 文件。
```
python prepare_datasets.py
```
#### 3. 训练模型
运行两个训练脚本来生成 `.pkl` 文件。
首先,训练异步 RabbitMQ worker 使用的模型(这也会生成所需的 `features.json` 映射):
```
python train_models.py
```
接下来,训练实时 Scapy 嗅探器 (`live_sniffer.py`) 使用的模型:
```
python train_live_models.py
```
完成后,检查 `models/` 目录。您应该会看到四个 `.pkl` 文件和一个 `features.json` 文件。系统现在已准备好运行。
### 运行 Pipeline
NetworkRKSha 包含一个统一的启动脚本,可以在单个终端中启动所有必需的服务(后端 API、ML Worker、实时嗅探器和 Next.js 前端)。
```
# 启动完整 pipeline(嗅探和 iptables 需要 sudo)
./start_pipeline.sh
```
运行后,Web 仪表盘将可通过 `http://localhost:3000` 访问,API 将可通过 `http://localhost:8000` 访问。
### 配置
系统行为、检测阈值和响应器设置(例如 dry-run 模式、白名单)可以在 `config.yaml` 中进行修改。更改将动态热加载,无需重启。
标签:Apex, AV绕过, FastAPI, IP 地址批量处理, 入侵检测系统, 威胁情报, 安全数据湖, 应用安全, 开发者工具, 搜索引擎查询, 机器学习, 网络安全, 自动化攻击, 逆向工具, 隐私保护