jarus10/nexultarx
GitHub: jarus10/nexultarx
NEXULTARX 是一款AI辅助红队自动化与网络威胁检测平台。
Stars: 0 | Forks: 0
# nexultarx
AI 辅助红队自动化与网络威胁检测平台
# NEXULTARX
[](https://python.org)
[](https://kali.org)
[](https://flask.palletsprojects.com)
[](https://scikit-learn.org)
[](LICENSE)
NEXULTARX 是一个模块化、基于 Python 的网络安全平台,它将 **进攻性红队模拟** 与 **AI 驱动的异常检测** 统一在一个管道中。它自动捕获实时网络流量,扫描漏洞,使用机器学习检测异常,执行 MITRE ATT&CK 映射的攻击剧本,并在实时网络仪表板上可视化一切。
作为在 Kali Linux 上针对 Metasploitable 2 目标虚拟机的最终年工程项目的构建而成。
## 目录
- [架构](#architecture)
- [模块](#modules)
- [前置条件](#prerequisites)
- [安装](#installation)
- [配置](#configuration)
- [使用](#usage)
- [项目结构](#project-structure)
- [机器学习](#machine-learning)
- [红队剧本](#red-team-playbooks)
- [仪表板](#dashboard)
- [测试](#testing)
- [实验室设置](#lab-setup)
- [免责声明](#disclaimer)
- [许可](#license)
## 架构
该平台分为 **五层**,每层通过干净的 Python 接口进行通信:
```
┌─────────────────────────────────────────────────────────────────┐
│ LAYER 5: PRESENTATION │
│ Flask Dashboard │ REST API │ WebSocket Alerts │ Reports │
├──────────────────┬────────────────────┬────────────────────────┤
│ LAYER 4: │ LAYER 3: │ LAYER 3b: │
│ OFFENSIVE │ INTELLIGENCE │ CORRELATION │
│ Red Team Agent │ Threat Engine │ Alert Engine │
│ Attack Sim │ CVSS Scoring │ Incident Response │
├──────────────────┴────────────────────┴────────────────────────┤
│ LAYER 2: AI ENGINE │
│ Isolation Forest │ Random Forest │ K-Means │ Entropy Analyser│
├─────────────────────────────────────────────────────────────────┤
│ LAYER 1: DATA INGESTION │
│ Packet Sniffer │ Network Scanner │ Database Logger │
├─────────────────────────────────────────────────────────────────┤
│ NETWORK LAYER (Lab) │
│ Kali Linux Host ←──── vboxnet0 ────→ Metasploitable 2 │
│ 192.168.56.100 192.168.56.101 │
└─────────────────────────────────────────────────────────────────┘
```
## 模块
| 模块 | 文件 | 描述 |
|--------|------|-------------|
| **1 — 数据包嗅探器** | `sniffer/sniffer.py` | 通过 Scapy 捕获实时数据包。提取 IP、协议、端口、负载大小、Shannon 熵和 TCP 标志。监控 PPS 速率并在流量峰值时发出警报。 |
| **2 — 网络扫描器** | `scanner/scanner.py` | 对目标运行 Nmap `-sV -O`。枚举开放端口、服务、版本和操作系统指纹。保存结构化 JSON 输出。 |
| **3 — AI 异常引擎** | `ai_engine/ai_detector.py` | 在捕获的流量上训练 Isolation Forest + Random Forest 集成。使用六个特征向量将数据包分类为正常 `(1)` 或异常 `(-1)`。 |
| **4 — 红队代理** | `red_team/red_agent.py` | 读取扫描输出,将服务映射到 MITRE ATT&CK 剧本,并按 CVSS 优先级执行排序的 Nmap NSE 脚本。 |
| **5 — Flask 仪表板** | `dashboard/app.py` | 实时网络 UI,带有 Chart.js 熵图表、AI 警报表和服务面板。WebSocket 推送在 2 秒内提供新警报。 |
## 前置条件
- **操作系统:** Kali Linux 2024.x (滚动更新)
- **Python:** 3.10 或更高版本
- **Nmap:** 7.80+ (`sudo apt install nmap`)
- **libpcap:** (`sudo apt install libpcap-dev`)
- **VirtualBox:** 7.x 与 Metasploitable 2 虚拟机在 Host-Only 网络上
## 安装
### 1. 克隆仓库
```
git clone https://github.com//nexultarx.git
cd nexultarx
```
### 2. 创建并激活虚拟环境
```
python3 -m venv venv
source venv/bin/activate
```
### 3. 安装依赖项
```
pip install -r requirements.txt
```
### 4. 验证您的环境
```
# 确认 nmap 可访问
nmap --version
# 确认 Python 包加载正确
python3 -c "import scapy, nmap, sklearn, flask; print('All OK')"
```
## 配置
复制示例环境文件并编辑它以匹配您的设置:
```
cp .env.example .env
```
`.env` 中的关键变量:
```
# 网络
TARGET_IP=192.168.56.101
INTERFACE=vboxnet0
# 嗅探器
PPS_THRESHOLD=100
CAPTURE_FILE=captured_traffic.csv
# 扫描器
SCAN_OUTPUT=scan_results.json
# 仪表板
FLASK_PORT=5000
JWT_SECRET=change_this_to_a_random_string
```
## 使用
每个模块可以独立运行,也可以通过编排器一起运行。
### 一起运行所有模块
```
sudo python3 main.py
```
### 单独运行模块
```
# 模块 1 — 数据包嗅探器(需要 root 权限)
sudo python3 sniffer/sniffer.py
# 模块 2 — 网络扫描器(需要 root 权限)
sudo python3 scanner/scanner.py
# 模块 3 — AI 异常引擎
python3 ai_engine/ai_detector.py
# 模块 4 — 红队代理(需要 root 权限)
sudo python3 red_team/red_agent.py
# 模块 5 — 仪表板
python3 dashboard/app.py
# 打开 http://localhost:5000
```
### 验证嗅探器输出
```
head -20 captured_traffic.csv
```
### 验证扫描器输出
```
cat scan_results.json | python3 -m json.tool
```
## 项目结构
```
nexultarx/
│
├── sniffer/
│ └── sniffer.py # Module 1: EnhancedPacketSniffer class
│
├── scanner/
│ └── scanner.py # Module 2: NetworkScanner class
│
├── ai_engine/
│ └── ai_detector.py # Module 3: AnomalyDetector class
│
├── red_team/
│ └── red_agent.py # Module 4: RedTeamAgent class
│
├── dashboard/
│ ├── app.py # Module 5: Flask + SocketIO app
│ └── templates/
│ └── index.html # Dashboard UI template
│
├── models/ # Serialised ML models (joblib)
│ └── anomaly_detector.pkl
│
├── data/ # Output data files
│ ├── captured_traffic.csv
│ └── scan_results.json
│
├── main.py # Orchestrator — starts all modules
├── requirements.txt # Python dependencies
├── .env.example # Environment variable template
└── README.md
```
## 机器学习
AI 引擎使用 **集成异常检测管道**:
### 特征向量(6 维)
| 特征 | 编码 | 异常信号 |
|---------|----------|----------------|
| `protocol_val` | TCP=6, UDP=17, OTHER=0 | 对端口不寻常的协议 |
| `src_port` | 原始整数 | 低于 1024 的临时源端口 |
| `dst_port` | 原始整数 | 已知漏洞端口(21、23、445) |
| `payload_size` | 原始字节 | 异常大的或零字节的有效负载 |
| `entropy` | Shannon H (0.0–8.0) | 值高于 7.0 表示加密/混淆数据 |
| `flags_val` | 加权总和 | RST=5,FIN=3,SYN=2,ACK=1 |
### 模型
- **Isolation Forest** — 主要无监督检测器 (`contamination=0.1`)
- **Random Forest** — 旨在减少误报的次要监督验证器
- **K-Means** — 基线聚类用于流量分析
### 性能(在标记的 Metasploitable 2 数据集上)
| 模型 | 精度 | 召回率 | F1 分数 | AUC-ROC |
|-------|-----------|--------|----------|---------|
| Isolation Forest | 0.89 | 0.93 | 0.91 | 0.94 |
| Random Forest | 0.91 | 0.88 | 0.89 | 0.95 |
| 集成 | **0.92** | **0.91** | **0.915** | **0.96** |
## 红队剧本
红队代理将发现的服务映射到 **MITRE ATT&CK** 技术并运行相应的 Nmap NSE 脚本,按 CVSS 分数排序:
| 服务 | MITRE ID | NSE 脚本 | 目标(Metasploitable 2) |
|---------|----------|-------------|--------------------------|
| FTP | T1190 | `ftp-anon`,`ftp-brute` | vsftpd 2.3.4 — CVSS 10.0 |
| HTTP | T1595 | `http-enum`,`http-vuln*` | Apache 2.2.8 |
| SSH | T1110 | `ssh-auth-methods`,`ssh-brute` | OpenSSH 4.7p1 |
| MySQL | T1078 | `mysql-empty-password` | MySQL 5.0.51a |
| SMTP | T1566 | `smtp-enum-users` | Postfix |
| SMB | T1021 | `smb-enum-shares` | Samba 3.x |
| Tomcat | T1078 | `tomcat-manager-login` | Apache Tomcat |
## 仪表板
启动仪表板模块后,打开 `http://localhost:5000`。
| 面板 | 描述 |
|-------|-------------|
| **统计行** | 捕获的总数据包 · 检测到的威胁 · 开放服务 |
| **熵图表** | 最后 20 个数据包熵值的实时 Chart.js 线形图 |
| **服务面板** | Nmap 扫描结果,包括端口、服务名称、版本和 CVSS |
| **AI 警报表** | 异常数据包,包括源 IP、协议、TCP 标志和风险徽章 |
WebSocket 事件实时推送:
- `new_alert` — 在异常检测后 2 秒内触发
- `scan_update` — 在新的 Nmap 扫描完成后触发
## 测试
```
# 运行单元测试套件
python3 -m pytest tests/ -v
# 运行单个模块的烟雾测试
sudo python3 -c "
from sniffer.sniffer import EnhancedPacketSniffer
from scanner.scanner import NetworkScanner
from ai_engine.ai_detector import AnomalyDetector
from red_team.red_agent import RedTeamAgent
print('All imports OK')
"
```
### 测试矩阵摘要
| 层 | 测试 | 覆盖率 |
|-------|-------|----------|
| 嗅探器 | TC-01 到 TC-06 | 数据包解析、熵、PPS 监控 |
| 扫描器 | TC-07 到 TC-10 | 主机发现、服务检测、JSON 输出 |
| AI 引擎 | TC-11 到 TC-14 | 预处理、正常/异常分类 |
| 红队 | TC-15 到 TC-18 | NSE 执行、MITRE 映射、CVSS 排序 |
| 集成 | IT-01 到 IT-06 | 模块间数据流 |
| 安全 | SEC-01 到 SEC-05 | JWT、暴力破解、XSS、IDOR |
## 实验室设置
### 1. 安装 VirtualBox
```
sudo apt install -y virtualbox virtualbox-ext-pack
```
### 2. 下载 Metasploitable 2
从以下链接下载 `.vmdk`:
`https://sourceforge.net/projects/metasploitable/`
### 3. 在 VirtualBox 中创建 VM
- **类型:** Linux / Ubuntu (32 位)
- **RAM:** 512 MB
- **硬盘:** 使用现有的 `.vmdk`
- **网络:** 主机-Only 适配器 → `vboxnet0`
在您的 Kali VM 上设置相同的适配器。
### 4. 查找 Metasploitable 的 IP
启动 VM(凭据:`msfadmin / msfadmin`)并运行:
```
ifconfig
```
将 `.env` 中的 `TARGET_IP` 更新为匹配。
### 5. 验证连接
```
ping 192.168.56.101 -c 4
```
## 免责声明
## 要求
关键依赖项 - 请参阅 `requirements.txt` 以获取完整固定列表。
```
scapy==2.5.0
python-nmap==1.6.0
pandas==2.2.2
numpy==1.26.4
scikit-learn==1.5.0
flask==3.0.3
flask-socketio==5.3.6
python-dotenv==1.0.1
requests==2.32.3
```
## 许可
本项目采用 **MIT 许可证** — 请参阅 [LICENSE](LICENSE) 文件以获取详细信息。
使用 Python · Scapy · Scikit-learn · Flask · Nmap 构建
KLESNC / BCA VI SEM / 2025-2026
标签:CTI, 逆向工具