MarcoRodrigues00/ai-pentest-lab
GitHub: MarcoRodrigues00/ai-pentest-lab
一套以安全护栏为核心的AI辅助渗透测试实验框架,在严格人工审批和可审计前提下利用本地LLM辅助完成授权范围内的Web安全评估。
Stars: 0 | Forks: 0
# 🛡️ ai-pentest-lab


-000000)





## 项目简介
这是一个用于执行**授权**安全评估的框架,在此框架中,LLM 可以*建议*命令,但绝不会自行执行任何操作。每个敏感操作在运行前都会经过可审计的护栏审查,并且每个产物都会被计算哈希值以维护监管链。
它最初是在一个由 **10 个团队**参与的学术练习中构建并使用的:我将它指向其他团队的授权主机(只读侦察、端口发现、header/WAF 检查),同时他们对我的技术栈发起攻击。随后,它从 shell 护栏演变成了一个由**带有本地 LLM 的 Python 框架**驱动的完整评估 pipeline。
重点**不在于攻击本身**——而在于其背后的**安全工程**:隔离、明确范围、对每条命令进行人工审批,以及经过脱敏与原始数据的分离,从而确保没有任何可被利用或可识别身份的信息出现在公开仓库中。
## 核心原则
- **只读优先** —— 在进行任何侵入性操作之前,先进行被动侦察和 HTTP 响应读取。
- **人工审批每一个实际操作** —— 没有明确的 `yes`,就不会运行任何攻击性自动化操作。
- **范围 1:1 锁定** —— 每个目标都会根据 `scope.txt` 进行验证;只要有一个范围外的目标,整条命令就会被拒绝。
- **由代码拦截攻击性行为** —— 严禁暴力破解、DoS/泛洪攻击、fuzzing/dirbusting、广泛扫描(`-T5`、CIDR 扫描)或自动利用(sqlmap/metasploit/nuclei)。
- **默认试运行(Dry-run)** —— 在你通过 `--real` 主动选择加入之前,一切都是模拟的(`LAB_DRYRUN=1` / mock 模式)。
- **紧急停止(Kill-switch)** —— 放置一个 `STOP` 文件即可在下次检查时中止当前活动阶段。
- **可审计** —— 每个决策(`APPROVE/DENY`、`SCOPE-OK/DENY`、`CMD-BLOCK`、`EVIDENCE-*`)都会被记录;每个产物都会生成 SHA-256 哈希值。
- **LLM 位于受保护的 VM 之外** —— 模型只负责*规划和编写*;**事实**(CWE/CVSS/PoC)来源于代码,而非模型。
## 实验室的三个阶段
| | LAB-0.1 — 隔离的基线 | LAB-0.2 — 主动测试模式 (VPN) | LAB-0.3 — `aipentest` (Python + LLM) |
|---|---|---|---|
| **目标** | 构建并加固环境 | 只读授权评估方法 | 半自动化、LLM 辅助的 Web pipeline |
| **网络** | Host-only VM,无路由至 Internet | 通过 VPN 连接的授权网络,受限范围 | 仅限自有/授权的实验目标(loopback / 隔离的 VM) |
| **技术栈** | Ubuntu 24.04 · Ollama · Docker | 模块化 Bash 脚本 · `guard.sh` · 测试套件 | Python 包 · 本地 LLM (Ollama) · pytest |
| **亮点** | 两阶段网络锁定 | 哈希化证据、范围防护、按会话记录日志 | 侦察 → LLM 规划 → Web 模块 → 报告,带有预算控制和紧急停止功能 |
## 仓库布局
```
ai-pentest-lab/
├─ ROADMAP.md # evolution per sprint / status
├─ LAB-0.1/ # local, fully isolated baseline (provisioning + guard.sh + scope.txt)
├─ LAB-0.2/vpn-mode/ # authorized VPN mode (does NOT touch network/firewall/VPN)
│ ├─ scripts/scan/ # preflight · verify-scope · audit-command · collect-evidence · menu …
│ ├─ tests/ # bash test suite for the guardrails
│ ├─ *-METHODOLOGY.md # recon / port discovery / vuln scan methodologies
│ └─ AUTHORIZATION-*.md # authorization checklist + questionnaire
├─ LAB-0.3/ # `aipentest` — Python, LLM-assisted web pipeline (see below)
│ ├─ aipentest/ # config · guard · audit · http · llm · recon · orchestrator · report · intercept · cli
│ ├─ aipentest/modules/ # xss · sqli · csrf · ssrf · cmdi · lfi · brute (mock + real, gated)
│ └─ tests/ # pytest suite (scope, forbidden, pipeline, report …)
├─ docs/
│ ├─ metodologia/ # recon / port discovery / vuln-scan methodology
│ ├─ relatorio-academico/ # academic report (sanitized)
│ └─ portfolio-linkedin/ # write-up material (carousel/post)
├─ relatorios/
│ ├─ consolidado/sanitizado/ # consolidated report WITHOUT sensitive data
│ └─ por-equipe/ # anonymized per-team slices (Team A, B, …)
├─ evidencias/ # sanitized public evidence (raw is gitignored / lives in a private repo)
├─ manifestos/ # SHA-256 manifests for integrity
└─ checklist/ # PRE-PUBLICACAO.md — review gate before publishing
```
## LAB-0.3 — `aipentest` (Python, LLM 辅助)
这是一个半自动化的编排器,它运行的 pipeline 为 **被动侦察 → 主动侦察 → 爬取 →
规划(本地 LLM) → Web 模块 (XSS/SQLi/CSRF/SSRF/…) → 报告**,并利用**本地** LLM (Ollama)
来优先安排测试并协助编写发现结果。**仅限实验室使用**:仅针对自有/授权目标,例如
`127.0.0.1` 实验室(DVWA/Juice Shop/bWAPP)或隔离的 VM(WebGoat/Mutillidae)。
- **LLM 绝不运行 shell。** 它会输出一个结构化的 JSON **计划**,映射到模块的白名单中;如果没有 Ollama,**启发式规划器**将接管,以确保 pipeline 依然能正常工作。
- **强制执行范围的 HTTP 客户端** —— 每个请求都会通过 `require_scope`(精确匹配 / 域名后缀 / CIDR ≥ /24);一个共享的客户端承载了所有的护栏。
- **预算 + 速率限制 + 确认** —— 在请求/时间预算内运行;在 `--real` 模式下,遇到 HIGH/CRITICAL 问题时会**暂停**并等待人工确认。`STOP` 文件 = 紧急停止。
- **发现结果包含 CWE + OWASP + CVSS v3.1**(严重程度由分数推导得出,而非硬编码),以及 PoC(请求 + 验证代码片段)。技术报告保留完整的 PoC;而**脱敏**报告只会注明存在 PoC —— 不包含任何原始 payload。
- **`intercept`** —— 一个显式的 Burp-lite 代理,仅用于**你自己的**实验流量(默认绑定 loopback,强制执行范围限制,密码被脱敏;不支持 TLS 解密,也不支持 ARP/DNS 欺骗)。
- 各个模块都是**保守的检测器**(反射、SQL 错误、布尔差异、表单 token、开放重定向)——它们**不会**转储数据。`brute` 模块特意设计得缓慢且带有硬性上限(没有所谓的“无限制”模式——因为那样等同于 DoS)。
```
cd LAB-0.3
python3 -m venv .venv && . .venv/bin/activate
pip install -e .
cp scope.example.txt scope.txt # edit: ONLY your own targets
# 1) DRY-RUN / mock — 安全,不发送任何流量(默认)
python -m aipentest.cli run --target http://127.0.0.1:8080/
# 2) 显示已加载的 scope
python -m aipentest.cli scope
# 3) REAL run(需要回答授权问卷)
python -m aipentest.cli run --target http://127.0.0.1:8080/ --real
```
请参阅 [`LAB-0.3/README.md`](LAB-0.3/README.md) 了解完整的架构、`intercept` 代理、本地 LLM 设置以及客观的局限性说明。
## 快速开始 (LAB-0.2 — VPN 模式, Bash)
```
cd LAB-0.2/vpn-mode
# 1) 授权 + scope
$EDITOR AUTHORIZATION-CHECKLIST.md # confirm with the responsible party
cp scope.example.txt scope.txt
$EDITOR scope.txt # ONLY authorized targets
# 2) Preflight(只读;不更改任何内容)
bash scripts/scan/preflight.sh
# 3) 在运行前验证 target / command
bash scripts/scan/verify-scope.sh --cmd "nmap -Pn -p 443 host.in.scope"
# 4) 模拟,然后经批准运行
LAB_DRYRUN=1 bash scripts/scan/audit-command.sh -- curl -sS -I https://host.in.scope
bash scripts/scan/audit-command.sh -- curl -sS -I https://host.in.scope
# 5) 收集用于报告的哈希 evidence
bash scripts/scan/collect-evidence.sh headers https://host.in.scope
```
## 护栏运行演示
```
# Out of scope -> DENIED
bash scripts/scan/verify-scope.sh --cmd "nmap -Pn -p 443 google.com"
# Brute force -> BLOCKED
bash scripts/scan/verify-scope.sh --cmd "hydra -l admin -P rockyou.txt ssh://10.20.30.40"
# Broad scan -> BLOCKED
bash scripts/scan/verify-scope.sh --cmd "nmap -T5 10.20.30.0/24"
```
## 测试
```
# LAB-0.2 — bash guardrail suite
for t in LAB-0.2/vpn-mode/tests/*.test.sh; do bash "$t"; done
# LAB-0.3 — pytest(scope、forbidden、pipeline、report、recon、modules)
cd LAB-0.3 && pip install pytest && pytest -q
```
## 📸 截图
**预检 —— 只读环境检查(不改变任何状态)**

**授权清单 —— 在任何测试前必须确认**

**护栏 (`guard.sh`) —— 由代码拦截攻击性命令**

**人工审批 —— 端口发现期间的 `APPROVE PORTS` 门控**

**侦察 —— 授权的 `nmap` 输出(只读,在范围内)**

**监管链 —— 为每份证据生成 SHA-256 哈希**

标签:AI风险缓解, Bash, DLL 劫持, Python, 大语言模型, 安全规则引擎, 密码管理, 对称加密, 应用安全, 插件系统, 无后门, 自动化审计, 请求拦截, 逆向工具