braydos-h/NetAttackAi
GitHub: braydos-h/NetAttackAi
一款基于本地 Ollama LLM 的 AI 驱动渗透测试与漏洞研究 Agent,通过 MCP 架构和多 Agent 集群实现自动化安全评估。
Stars: 2 | Forks: 0
# NetAttackAI
**AI 驱动、本地优先的渗透测试与漏洞赏金研究 Agent。**
NetAttackAI 是一款本地优先的 Python 应用程序,它使用 Ollama LLM 来规划并执行已授权的安全评估。它将防御性、受范围限制的 MCP 扫描服务器与宽松的、锁定目标的 exploit MCP 服务器、多 Agent 集群、自动化任务编排器、Textual TUI 和交互式菜单结合在一起——所有这些都由操作员本地机器上的本地模型驱动。
## ⚠️ 授权与负责任的使用
NetAttackAI 是一款攻击性安全工具。**请仅在您拥有或获得明确书面授权测试的网络、系统和应用程序上运行它。** 未经授权扫描或利用您不拥有或无权测试的系统是非法且不道德的。
使用本软件即表示您对自己的行为承担全部责任。作者和贡献者对滥用行为不承担任何责任。将输出视为建议,并在采取行动之前验证每一个发现。如有疑问,请勿运行。
这是一个**仅供实验室使用的构建版本**:攻击路径不受限制,但被锁定为操作员指定的单个 IP(参见[安全与范围模型](#safety--scope-model))。Recon 保持完全受范围限制且仅限提议。
## 它是什么
NetAttackAI 在同一核心上具有两个接口:
- **Exploitation 引擎** (`main.py` / `app.py`) —— 操作员实际运行的现代、异步、基于 MCP 的路径。开启 MCP exploit 会话,分发工具调用,并可以驱动多 Agent 集群或持久的自动化任务。
- **遗留研究循环** (`cli.py` + `agent_loop.py`) —— 一个基于数据库、受范围限制、无头/CI 友好的工作流,使用 SQLite (`research_workspace/`)。
两者共享相同的任务/范围 schema。范围、命令和搜索安全性在 Python 代码中强制执行,而不仅仅是在 prompt 中。
## 特性
- **MCP exploit 引擎** —— 一个宽松的 exploit MCP 服务器 (`mcp_exploit_server.py`),公开终端执行、Python 文件写入/运行、searchsploit、Metasploit、msfvenom、impacket 横向移动、凭据转储等功能——在策略层进行限制。
- **防御性 MCP 服务器** (`mcp_server.py`) —— 受范围限制的 Nmap 扫描、经过净化的漏洞搜索以及 NVD CVE 查询。
- **多 Agent 集群** (`tools/swarm/`) —— 6 个专家 Agent(recon、vuln、exploit、post-exploit、critic、reflection),具有共享黑板和并行分发功能。
- **自动化编排器** (`tools/autonomous_orchestrator.py`) —— 持久的多阶段任务,具有自适应攻击性、自动重试和漏洞链接功能。
- **Textual TUI** (`python -m tui`) —— 18 屏仪表板,包含任务、工作、发现、证据、范围、目标、目标图、报告、日志、设置、集群、技能和记忆。
- **交互式菜单** —— 方向键驱动的启动器(默认的无参数行为)。
- **运行时技能** —— 基于精选技能目录的咨询性 prompt 上下文层,具有语义匹配、运行中重新选择和跨任务反馈功能。
- **多模型咨询** —— 在构建 exploit 或从反复失败中恢复时,可选的咨询性对等模型咨询。
- **长会话模式** —— 可选的数小时攻击运行,支持崩溃安全恢复。
- **Recon pipeline** —— 主机发现、服务识别、丰富化以及基于 recon 的目标建议。
- **NVD CVE 查询** —— 具有熔断器、速率限制的 CVE 情报。
- **报告** —— 每次运行的时间线、CVSS、漏洞链和发现导出。
## 架构
单个评估控制器开启一个 MCP exploit 会话,并通过模型路由器(Ollama)分发工具调用。Recon 流经防御性、受范围限制的服务器;攻击流经宽松、锁定目标的 exploit 服务器。可选的集群将工作分解给专家 Agent,而自动化编排器驱动持久的多阶段任务。有关全貌,请参见 [`docs/architecture.md`](docs/architecture.md) 和 [`docs/runtime-flows.md`](docs/runtime-flows.md)。
## 要求
- **Python 3.10+**(支持 3.10–3.12)。
- **nmap** 在 `PATH` 中(或在 `config.yaml` 中设置 `nmap.path`)。在 Linux 上,`-O`/`-sS` 需要 root 权限 —— 设置 `nmap.sudo: true`(使用 `sudo -n`)或以 root 身份运行;否则防御性服务器会自动降级这些标志。
- **Ollama** 运行在 `http://localhost:11434`,并拉取了默认模型 `glm-5.2:cloud`(`ollama show glm-5.2:cloud`)。
- **可选的 Kali 工具**(在 Linux 上提供完整武器库):Metasploit (`msfconsole`)、`searchsploit`、`tmux`、`hydra`、`impacket`。在 Windows 上,攻击者仅支持 Python。
## 安装
### 快速安装
一个脚本会安装所有内容,并将全局的 `natai` 命令放在您的 PATH 中:
```
./install.sh # OS deps + Ollama + venv + models + doctor, then installs `natai`
source ~/.bashrc # or open a new terminal, so `natai` is on PATH
natai # interactive menu — works from any directory
```
`natai` 在运行前始终会 `cd` 进入仓库根目录,因此无论您从哪里调用它,`config.yaml`、`mission.yaml` 和 `reports/` 都能正确解析。要稍后移除它:
```
./install.sh --uninstall # removes `natai` and the PATH line from your shell rc
```
环境变量开关:`INSTALL_KALI_TOOLS=0`(跳过 Kali 专属软件包),`SKIP_MODEL_PULL=1`(跳过模型下载),`ADD_TO_PATH=0`(不安装 `natai` 命令)。
### 手动安装
**Linux / macOS**
```
python3 -m venv .venv
source .venv/bin/activate
python -m pip install -r requirements.txt
nmap --version # must be on PATH or set nmap.path
ollama show glm-5.2:cloud # default model — verify reachable
```
**Windows (PowerShell)**
```
python -m venv .venv
.\.venv\Scripts\Activate.ps1
python -m pip install -r requirements.txt
nmap --version
ollama show glm-5.2:cloud
```
便捷辅助脚本:
```
make install # venv + pip install -r requirements.txt
make doctor # python main.py --doctor
./scripts/setup-linux.sh # one-shot venv + deps + doctor check
```
如需可编辑的包元数据和开发附加组件(pytest、coverage、ruff):
```
python -m pip install -e ".[dev]"
```
## 快速开始
```
python main.py # interactive menu (default no-args)
python main.py --menu # same interactive menu, explicit
python main.py --tui # launch the Textual TUI dashboard
python -m tui # same TUI, alternate entry
python main.py --target 10.0.0.50 --mode recon --recon-first
python main.py --target 10.0.0.50 --mode attack --goal backdoor
python main.py --target 10.0.0.50 --mode attack --swarm --critic --reflection --adaptive-exploits
python main.py --exploit --exploit-mode standalone --exploit-target 10.0.0.50 \
--exploit-cve CVE-2021-44228 --exploit-permission full_access
```
冒烟测试:
```
python main.py --version # NetAttackAI 0.49.2
python main.py --doctor # environment + config diagnostics
python main.py --self-test # safe localhost smoke test
```
### 遗留研究 CLI(写入 `research_workspace/research.db`)
```
python cli.py init-mission --config mission.yaml
python cli.py next-task
python cli.py run-task T-00001
python cli.py list-findings
python cli.py generate-report F-00001
python cli.py status
```
## 配置
所有定义行为的设置都位于 **`config.yaml`** 中。任务范围(允许/禁止的资产、禁止的操作、风险概况、测试模式、速率限制)位于 **`mission.yaml`** 中,由 `cli.py` / `mission.py` 加载。
重要的 `config.yaml` 默认设置(实验室构建):
- `exploit.permission: full_access` —— 实验室攻击姿态(recon 仍通过缺失键回退解析为 `read_only`)。
- `exploit.attack_mode: true`
- `exploit.require_explicit_allowlist: true` —— 运行时 `--target` 通过 `EXPLOIT_TARGET` 合并进来;这就是目标 IP 锁。
- `exploit.allowed_targets: []`
- `swarm.enabled: true`
- `memory.semantic_enabled: true`
- `ollama.model: glm-5.2:cloud` (976K 上下文)
提供商 API 密钥从 `config.yaml` 中引用的环境变量中读取(`NVD_API_KEY`、`OLLAMA_API_KEY`、`SERPAPI_API_KEY`);请参见 [`.env.example`](.env.example)。
可以通过 `python main.py --setup-api-keys` 填充本地密钥文件(`secr.json`,已被 gitignored)。
## CLI 参考
| 标志 | 用途 |
|------|---------|
| `--target ` | 用于 recon 或攻击的目标 IP。 |
| `--mode {recon,attack}` | `recon` = 收集情报,`attack` = 完全 exploitation。 |
| `--goal ` | 预设目标(`backdoor`、`initial_access`、`privilege_escalation`、……)。 |
| `--custom-goal ` | 自定义目标描述。 |
| `--recon-first` | 先 recon 再攻击的流程。 |
| `--tui` / `--menu` | 启动 TUI 仪表板 / 强制进入交互式菜单。 |
| `--swarm` | 启用多 Agent 集群模式。 |
| `--critic` / `--reflection` | Critic 预批准 / reflection Agent(需要 `--swarm`)。 |
| `--adaptive-exploits` | 自适应 exploit 选择。 |
| `--long-session` | 可选的数小时攻击模式,支持崩溃安全恢复。 |
| `--model ` | 覆盖默认模型别名(`glm`/`kimi`/`deepseek`/`deepseek_flash`/`minimax`)。 |
| `--mcp-transport {stdio,http}` | Exploit MCP 传输方式。 |
| `--skills {on,off,hints,lookup}` | 运行时技能模式。 |
| `--multi-model-consult` | 启用咨询性对等模型咨询。 |
| `--exploit ...` | 独立 exploit 子命令(`--exploit-target`、`--exploit-cve`、`--exploit-permission`)。 |
| `--doctor` / `--self-test` | 环境诊断 / 安全的本地主机冒烟测试。 |
| `--resume` | 从先前会话的检查点恢复。 |
| `--version` | 打印版本并退出。 |
## 安全与范围模型
- **Recon** 完全受范围限制且仅限提议(`read_only`):Agent 收集情报并提出攻击建议,而不执行它们。会话后的 `SafetyReviewer` 会在每次工具调用时运行。
- **攻击** 是**锁定目标的**:AI 可以对该目标 IP 执行任何必要的操作,但无法转向其他主机。该锁定在 MCP 工具层强制执行,通过提取每个目标(URL authorities、`/dev/tcp` 主机、LHOST/RHOST、扫描器目标、裸 IP)并拒绝任何不在白名单中的目标(`exploit.allowed_targets` ∪ 运行时 `--target`)。
- **三个权限级别**(`tools/exploit_agent/policy.py`):`full_access`(实验室)、`approve_only`(每个操作都需要 `ALLOW `)、`read_only`(仅提议)。
- **无论配置如何都严格禁止的操作**(`scope_gate.py`):拒绝服务、破坏性 exploit、社会工程学、物理攻击、恶意软件、凭据窃取。
- **完整的 JSONL 审计跟踪**(`exploit_audit.jsonl`),包含生成代码的 SHA256。
有关完整的范围/风险/权限模型和安全开发规则,请参见 [`docs/safety-model.md`](docs/safety-model.md)。
## 项目布局
```
main.py / app.py assessment controller (Flow A entry points)
cli.py legacy research CLI (Flow B entry point)
mcp_server.py defensive, scope-gated MCP server
mcp_exploit_server.py permissive, target-locked exploit MCP server
config.yaml runtime configuration
mission.yaml mission scope + risk profile
tools/ exploit agent, swarm, autonomous orchestrator, MCP tools,
recon pipeline, attack modules, skills, reporting, …
tui/ Textual TUI (18 screens)
tests/ ~80 test files (all mock subprocess / network)
docs/ engineering docs (architecture, flows, safety, extension, …)
skills-to-add/ curated runtime skill catalog
```
## 测试
```
python -m pytest tests/ -v
python -m pytest tests/test_scope_gate.py -v # single file
python -m pytest tests/ -v -k "scope" # by keyword
```
测试模拟了 subprocess 和网络 —— 没有实时的 Nmap 固定数据 (fixtures)。对于安全敏感的更改,还请运行 `python main.py --doctor` 和 `python main.py --self-test`。
请参见 [`docs/testing-guide.md`](docs/testing-guide.md)。
## 文档
完整的工程文档位于 [`docs/`](docs/README.md) 中:入门指南、架构、运行时流程、模块指南、扩展指南、安全模型、测试指南和技能。
## 许可证
NetAttackAI 基于 [GNU General Public License v3 (GPL-3.0)](LICENSE) 获得许可。
版权所有 (c) 2026 NetAttackAI 贡献者。
## 免责声明
本软件仅供已授权的安全测试和教育目的提供。**请仅在您拥有或获得明确授权测试的系统上运行它。** 作者和贡献者对滥用行为不承担任何责任。您需全权负责确保您的使用符合所有适用法律和授权。
标签:CTI, MCP, Web报告查看器, XXE攻击, 人工智能, 多智能体, 密码管理, 本地大模型, 用户模式Hook绕过, 网络安全, 自动化漏洞利用, 逆向工具, 隐私保护