MarcoRodrigues00/ai-pentest-lab

GitHub: MarcoRodrigues00/ai-pentest-lab

一套以安全护栏为核心的AI辅助渗透测试实验框架,在严格人工审批和可审计前提下利用本地LLM辅助完成授权范围内的Web安全评估。

Stars: 0 | Forks: 0

# 🛡️ ai-pentest-lab ![Bash](https://img.shields.io/badge/Bash-shell-121011?logo=gnubash&logoColor=white) ![Python](https://img.shields.io/badge/Python-aipentest-3776AB?logo=python&logoColor=white) ![LLM](https://img.shields.io/badge/LLM-Ollama%20(local)-000000) ![Posture](https://img.shields.io/badge/posture-read--only%20first-blue) ![Control](https://img.shields.io/badge/control-human--in--the--loop-orange) ![Safety](https://img.shields.io/badge/offensive%20actions-blocked%20by%20code-critical) ![Evidence](https://img.shields.io/badge/evidence-SHA--256%20chain%20of%20custody-success) ![Tests](https://img.shields.io/badge/tests-bash%20%2B%20pytest-brightgreen) ## 项目简介 这是一个用于执行**授权**安全评估的框架,在此框架中,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 ``` ## 📸 截图 **预检 —— 只读环境检查(不改变任何状态)** ![预检](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/c7b277c0ae094705.png) **授权清单 —— 在任何测试前必须确认** ![授权清单](https://raw.githubusercontent.com/MarcoRodrigues00/ai-pentest-lab/main/docs/screenshots/02-authorization-checklist.png) **护栏 (`guard.sh`) —— 由代码拦截攻击性命令** ![护栏](https://raw.githubusercontent.com/MarcoRodrigues00/ai-pentest-lab/main/docs/screenshots/03-guardrails-guard.png) **人工审批 —— 端口发现期间的 `APPROVE PORTS` 门控** ![审批门控](https://raw.githubusercontent.com/MarcoRodrigues00/ai-pentest-lab/main/docs/screenshots/04-approve-ports.png) **侦察 —— 授权的 `nmap` 输出(只读,在范围内)** ![侦察 nmap](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/92ad1e8878094933.png) **监管链 —— 为每份证据生成 SHA-256 哈希** ![证据哈希](https://raw.githubusercontent.com/MarcoRodrigues00/ai-pentest-lab/main/docs/screenshots/05-evidence-sha256.png)
标签:AI风险缓解, Bash, DLL 劫持, Python, 大语言模型, 安全规则引擎, 密码管理, 对称加密, 应用安全, 插件系统, 无后门, 自动化审计, 请求拦截, 逆向工具