Krishcalin/Autonomous-Pen-Testing

GitHub: Krishcalin/Autonomous-Pen-Testing

一个由 AI 驱动的开源渗透测试 Agent,通过编排 60+ 种安全工具自主完成从侦查到漏洞利用的完整渗透测试流程并自动生成报告。

Stars: 4 | Forks: 2

# 自主渗透测试 Copilot

Autonomous Pentest Copilot

由 AI 驱动的渗透测试 agent,具备持久的渗透测试任务树、自动化侦查、漏洞验证、漏洞利用分析、发现结果关联以及 kill chain 跟踪功能
31 个 agent 工具 • 60+ 种渗透测试工具 • 5 个剧本 • 22 条 CLI 命令 • 5,330 行 Python 代码

## 概述 这是一个单文件 Python agent,它通过 SSH 连接到 Kali/Parrot 攻击机(或在本地运行),自主执行安全工具、分析输出结果、规划后续步骤、存储凭证以供复用、生成并行子 agent、跨服务进行凭证喷射、构建攻击图谱、维护作为持久记忆的渗透测试任务树,并记录最终发现 —— 所有这些都由基于 Claude 或 OpenAI 的 LLM agentic loop 驱动。 | | | |---|---| | **文件** | `pentest_copilot.py` | | **版本** | 2.5.0 | | **代码行数** | ~5,330 | | **Agent 工具** | 31 | | **CLI 命令** | 22 | | **渗透测试工具** | 注册表中包含 60+ 种 | | **剧本** | 5 个 (webapp, network, api, ad, cloud) | | **侦查流水线** | 4 个 (full, quick, subdomain, stealth) | | **Python** | 3.8+ | | **依赖项** | `anthropic` 或 `openai` + `paramiko` | | **许可证** | MIT | ## 快速开始 ``` # 安装依赖 pip install anthropic paramiko # Claude (recommended) pip install openai paramiko # OpenAI alternative # SSH 到远程 Kali 攻击盒 export ANTHROPIC_API_KEY=sk-ant-... python pentest_copilot.py --target 10.0.0.1 \ --ssh-host kali.local --ssh-user root --ssh-key ~/.ssh/id_rsa # 在 Kali/Parrot 机器上本地运行 python pentest_copilot.py --target 10.0.0.1 --local # 隐身模式 (rate limiting + IDS evasion flags) python pentest_copilot.py --target 10.0.0.1 --local --stealth # 使用 OpenAI GPT-4o export OPENAI_API_KEY=sk-... python pentest_copilot.py --target 10.0.0.1 --local \ --provider openai --model gpt-4o # 使用任何 OpenAI 兼容端点 (Ollama, vLLM, 等) python pentest_copilot.py --target 10.0.0.1 --local \ --provider openai --model llama3 \ --base-url http://localhost:11434/v1 ``` ## 31 个 Agent 工具 ### 核心 (7) | 工具 | 描述 | |------|-------------| | `run_command` | 在攻击机上执行任意 bash 命令 | | `run_script` | 编写并执行 Python 脚本以进行自定义漏洞利用 | | `install_tool` | 按需安装安全工具 | | `read_file` | 读取扫描结果、配置和漏洞利用输出 | | `write_file` | 创建字典、漏洞利用脚本和配置 | | `report_finding` | 记录漏洞及其严重程度、证据和 CVSS | | `ask_user` | 请求澄清、批准或获取额外信息 | ### 第一层 — 并发与状态 (6) | 工具 | 描述 | |------|-------------| | `spawn_subagent` | 生成后台 agent 以处理并发任务 | | `store_credential` | 存储发现的凭证以便跨服务复用 | | `list_credentials` | 列出凭证库中的所有凭证 | | `open_shell` | 打开一个命名的持久 shell 会话 | | `run_in_shell` | 在特定的命名 shell 中运行命令 | | `use_playbook` | 加载方法论剧本 | ### 第二层 — 检测与漏洞利用 (7) | 工具 | 描述 | |------|-------------| | `detect_tools` | 扫描攻击机,检查已安装与缺失的工具 | | `search_exploits` | 根据服务版本在 ExploitDB 中搜索 CVE | | `start_listener` | 启动 netcat 反向 shell 监听器 | | `stop_listener` | 停止正在运行的监听器 | | `check_listener` | 检查监听器是否捕获到连接 | | `generate_payload` | 生成反向 shell payload (bash, python, nc, php, perl, powershell) | | `run_phalanx_scanner` | 运行 Phalanx Cyber 扫描器 (SAST, API, Cloud, Nuclei) | ### 第三层 — 方法论与隐蔽性 (3) | 工具 | 描述 | |------|-------------| | `set_phase` | 跟踪渗透测试在 5 个方法论阶段的进度 | | `get_compliance_map` | 获取 OWASP Top 10、PTES、NIST 800-53、CWE 的映射关系 | | `toggle_stealth` | 启用/禁用速率限制和 IDS 绕过 | ### 第四层 — 情报与自主性 (4) | 工具 | 描述 | |------|-------------| | `run_recon_pipeline` | 自动串联侦查工具 (full/quick/subdomain/stealth 流水线) | | `smart_exploit_search` | 解析 nmap 输出,搜索 ExploitDB,并按可靠性对漏洞利用进行排名 | | `credential_spray` | 通过 hydra (14 种协议) 将凭证库中的凭证对准所有已发现的服务进行喷射 | | `add_attack_step` | 记录映射到 MITRE ATT&CK 阶段的 kill chain 步骤 | ### 第五层 — 验证、分析与关联 (3) | 工具 | 描述 | |------|-------------| | `validate_finding` | 将发现提交至 6 阶段验证流水线 (inventory → analysis → sanity_check → ruling → feasibility → validated) | | `analyze_exploit` | 根据 Impact × Exploitability / Detection Time 对发现进行评分,并赋予 P1-P4 优先级评级 | | `correlate_findings` | 跨工具去重 —— 按主机+端口+CVE 对发现进行分组,当多个工具结果一致时提升置信度 | ### 规划 — 渗透测试任务树 (1) | 工具 | 描述 | |------|-------------| | `manage_tasks` | 维护渗透测试任务树 (`add` / `add_many` / `update` / `list`) —— 这是一个持久化、分层级的计划,会被重新注入到每个提示词中,以便即使在聊天记录被修剪后,agent 仍能保持目标明确 | ## 4 种自动化侦查流水线 | 流水线 | 串联工具 | 用例 | |----------|--------------|----------| | **full** | nmap → whatweb → wafw00f → nikto → ffuf → nuclei | 全面的目标评估 | | **quick** | nmap → whatweb → ffuf | 快速初始扫描 | | **subdomain** | subfinder → httpx | 域级攻击面映射 | | **stealth** | nmap (慢速 SYN) → whatweb | 隐蔽侦查 | 每个流水线都会自动捕获证据,遵循隐蔽模式,并返回汇总后的输出。 ## 5 种方法论剧本 | 剧本 | 名称 | 阶段 | |----------|------|--------| | `webapp` | Web 应用程序渗透测试 | 侦查、内容发现、漏洞扫描、漏洞利用、报告 | | `network` | 网络渗透测试 | 主机发现、服务枚举、漏洞评估、漏洞利用、后渗透 | | `api` | API 安全评估 | API 发现、认证测试、输入验证、业务逻辑、报告 | | `ad` | Active Directory 评估 | AD 侦查、凭证攻击、横向移动、权限提升、域控制 | | `cloud` | 云安全评估 | 云侦查、IAM、服务、数据窃取、报告 | ## 攻击图谱 / Kill Chain 跟踪器 记录跨越 11 个 MITRE ATT&CK 阶段的攻击路径: ``` Initial Access → Execution → Persistence → Privilege Escalation → Defense Evasion → Credential Access → Discovery → Lateral Movement → Collection → Exfiltration → Impact ``` 使用 `add_attack_step` 记录每个步骤。使用 `/attack` CLI 命令进行查看。 ## 凭证喷射引擎 自动尝试将凭证库中的所有凭证对准所有已发现的服务: | 支持的协议 | |---------------------| | SSH, FTP, HTTP, HTTPS, SMB, RDP, MySQL, MSSQL, PostgreSQL, Telnet, VNC, SMTP, POP3, IMAP, LDAP | 底层使用 hydra。遵循隐蔽模式下的速率限制。 ## 漏洞验证流水线 受 RAPTOR 多阶段方法的启发。每一个原始发现必须经过 6 个阶段才能成为确认的漏洞: ``` inventory → analysis → sanity_check → ruling → feasibility → validated ↓ report_finding ``` 在每个阶段,agent 都会评估置信度并可以拒绝误报。只有**已验证**的发现才会被报告 —— 从而消除那些频繁误报的工具所带来的噪音。 ## 漏洞利用分析引擎 根据 **Impact × Exploitability / Detection Time** 对已确认的发现进行评分,并赋予优先级评级: | 优先级 | 风险评分 | 行动 | |----------|-----------|--------| | **P1-IMMEDIATE** | ≥ 15 | 立即利用 —— 高影响、低工作量 | | **P2-HIGH** | ≥ 8 | 存在公开漏洞利用或属于高价值目标 | | **P3-MEDIUM** | ≥ 3 | 记录在案,时间允许时尝试利用 | | **P4-LOW** | < 3 | 作为参考信息记录在日志中 | **8 种可利用性修饰符**:public_exploit, auth_required, network_accessible, local_only, user_interaction, no_interaction, default_creds, version_match。 ## 发现关联引擎 当多个工具 (nmap, nikto, nuclei 等) 报告相同的问题时,关联机制会: - **去重** —— 根据主机 + 端口 + CVE 或标准化标题对发现进行去重 - **提升置信度** —— 1 个工具 = 50%,2 个工具 = 80%,3 个及以上工具 = 95% - **选择最高严重性** —— 以所有工具中最高的严重性为准 - **CVE 匹配** —— 最强的关联信号 ``` nmap ──┐ nikto ──┤──→ Correlator ──→ 15 raw → 8 unique (47% dedup) nuclei ─┘ 3 multi-tool confirmed (95% confidence) ``` ## 60+ 渗透测试工具注册表 | 类别 | 工具 | |----------|-------| | **侦查** | nmap, masscan, subfinder, httpx, whatweb, amass, theHarvester, dnsrecon, wafw00f, whois | | **Web 应用程序** | nikto, ffuf, gobuster, dirsearch, nuclei, katana, wpscan, sqlmap, dalfox, feroxbuster | | **漏洞利用** | metasploit, searchsploit, ghauri, commix, hydra, medusa, john, hashcat, crackmapexec, impacket | | **后渗透** | linpeas, winpeas, pspy, chisel, ligolo-ng, bloodhound, mimikatz, evil-winrm | | **网络与无线** | netcat, socat, tcpdump, wireshark, responder, bettercap, aircrack-ng | | **OSINT** | sherlock, recon-ng, spiderfoot, waybackurls, gau, photon | | **实用工具** | curl, wget, jq, python3, git, gcc, proxychains | ## 21 条 CLI 命令 | 命令 | 描述 | |---------|-------------| | `/help` | 显示可用命令 | | `/target [new]` | 显示或更改目标 | | `/scope [new]` | 显示或更改范围 | | `/tools` | 列出所有 60+ 种渗透测试工具 | | `/findings` | 显示发现的漏洞 | | `/creds` | 显示凭证库 | | `/shells` | 显示活跃的命名 shell | | `/subagents` | 显示后台子 agent 状态 | | `/playbooks` | 列出方法论剧本 | | `/listeners` | 显示活跃的反向 shell 监听器 | | `/phalanx` | 列出 Phalanx Cyber 扫描器 | | `/detect` | 扫描攻击机以检查已安装的工具 | | `/progress` | 显示渗透测试阶段进度 | | `/evidence` | 显示证据捕获摘要 | | `/stealth` | 开启/关闭隐蔽模式 | | `/attack` | 显示攻击图谱 / kill chain | | `/tasks` | 显示渗透测试任务树(计划) | | `/history` | 显示命令执行历史 | | `/save [file]` | 将会话保存为 JSON | | `/report [base]` | 生成 JSON + HTML 格式的渗透测试报告 | | `/clear` | 清除对话历史 | | `/quit` | 退出 Copilot | ## CLI 参考 ``` usage: pentest_copilot [-h] --target TARGET [--scope SCOPE] [--objective OBJ] (--local | --ssh-host HOST) [--ssh-port PORT] [--ssh-user USER] [--ssh-key KEY] [--ssh-password PASS] [--provider {claude,openai}] [--model MODEL] [--api-key KEY] [--base-url URL] [--auto-approve] [--stealth] [--stealth-delay SEC] [--max-iterations N] [--load-session FILE] [--version] ``` ## 架构 ``` pentest_copilot.py (5,330 lines) │ ├── LLM Providers │ ├── ClaudeProvider — Anthropic Claude with tool calling │ └── OpenAIProvider — OpenAI / Ollama / vLLM compatible │ ├── Execution Engines │ ├── SSHExecutor — paramiko SSH to remote attack box │ └── LocalExecutor — subprocess on local machine │ ├── Agent Tools (31) │ ├── Core (7) — run_command, run_script, install_tool, │ │ read/write_file, report_finding, ask_user │ ├── Parallelism (3) — spawn_subagent, open_shell, run_in_shell │ ├── Credential Vault (2) — store_credential, list_credentials │ ├── Methodology (1) — use_playbook │ ├── Detection (3) — detect_tools, search_exploits, run_phalanx │ ├── Reverse Shell (4) — start/stop/check_listener, generate_payload │ ├── Tracking & Stealth (3) — set_phase, get_compliance_map, toggle_stealth │ ├── Intelligence (4) — run_recon_pipeline, smart_exploit_search, │ │ credential_spray, add_attack_step │ ├── Validation & Analysis (3)— validate_finding, analyze_exploit, │ │ correlate_findings │ └── Planning (1) — manage_tasks (Pentest Task Tree) │ ├── Supporting Systems (17 classes) │ ├── CredentialVault — thread-safe cred storage + reuse hints │ ├── ShellManager — named persistent shell sessions │ ├── SubagentManager — background parallel agent spawning │ ├── ToolDetector — installed tool scanning + caching │ ├── ExploitSearcher — searchsploit / nuclei CVE lookup │ ├── ReverseShellHandler — netcat listener + 7 payload generators │ ├── ProgressTracker — 5-phase methodology tracking │ ├── EvidenceCollector — auto-capture command outputs │ ├── StealthController — rate limiting + IDS evasion flags │ ├── ReconPipeline — 4 autonomous multi-tool pipelines │ ├── SmartExploitSelector — nmap parser + ExploitDB ranker │ ├── CredentialSprayEngine — hydra-based 14-protocol cred spray │ ├── AttackGraph — 11-stage MITRE ATT&CK kill chain │ ├── VulnValidator — 6-stage finding validation pipeline │ ├── ExploitAnalyzer — risk scoring + P1-P4 priority engine │ ├── FindingCorrelator — cross-tool dedup + confidence boosting │ └── TaskTree — persistent Pentest Task Tree (PTT) │ ├── PentestAgent (core loop) │ ├── build_system_prompt() — full context injection (17 systems) │ ├── run_turn() — agentic loop (up to 25 iterations) │ └── Session save/load │ ├── Report Generation │ ├── JSON report (findings + creds + attack graph + history) │ └── HTML report (Catppuccin Mocha dark theme) │ └── CLI Interface ├── Interactive chat loop ├── 22 slash commands └── Colored terminal output ``` ## 版本历史 | 版本 | 行数 | Agent 工具 | CLI 命令 | 主要功能 | |---------|------:|:-----------:|:------------:|--------------| | v1.0.0 | 1,656 | 7 | 10 | 核心 agent,SSH/本地执行,支持 Claude/OpenAI,安全控制 | | v2.0.0 | 2,468 | 13 | 14 | 子 agent,凭证库,多 shell,5 个剧本 | | v2.1.0 | 3,095 | 20 | 17 | 工具检测,漏洞利用搜索,反向 shell,Phalanx 集成 | | v2.2.0 | 3,681 | 23 | 20 | 进度跟踪器,合规性映射,证据捕获,隐蔽模式 | | v2.3.0 | 4,365 | 27 | 21 | 自动化侦查流水线,智能漏洞利用选择,凭证喷射,攻击图谱 | | v2.4.0 |5,075 | 30 | 21 | 漏洞验证流水线,漏洞利用分析引擎,发现结果关联与去重 | | **v2.5.0** | **5,330** | **31** | **22** | **渗透测试任务树 (PTT) —— 能够在历史记录修剪后依然留存的持久化外部计划;`manage_tasks` 工具,`/tasks` 视图,会话持久化;首个单元测试套件** | ## 示例会话 ``` You: Use the webapp playbook and run a full recon pipeline on http://10.0.0.1 [PLAYBOOK] Loaded: Web Application Pentest [Agent] Starting with automated reconnaissance. [RECON PIPELINE] Running 'full' on http://10.0.0.1 ────────────────────────────────────────────────── [RECON] nmap: nmap -sV -sC -O -p- 10.0.0.1 ... 22/tcp open ssh OpenSSH 8.2p1 80/tcp open http Apache httpd 2.4.41 3306/tcp open mysql MySQL 5.7.33 [OK in 45.2s] [RECON] whatweb: whatweb 10.0.0.1 ... Apache 2.4.41, PHP 7.4.3, WordPress 5.7 [OK in 2.1s] [RECON] ffuf: ffuf -u 10.0.0.1/FUZZ ... /admin, /wp-login.php, /xmlrpc.php, /backup/ [OK in 18.4s] [RECON] nuclei: nuclei -u 10.0.0.1 ... [critical] CVE-2021-44228 Log4Shell [high] CVE-2020-11023 jQuery XSS [OK in 32.1s] ────────────────────────────────────────────────── [RECON COMPLETE] [Agent] Recon complete. Let me search for exploits on the discovered services. [TOOL] smart_exploit_search: parsing services... Found 3 services. Searching ExploitDB... 1. [METASPLOIT] Apache 2.4.49 Path Traversal (80/http) 2. [REMOTE] MySQL 5.7 Auth Bypass (3306/mysql) 3. [WEBAPP] WordPress 5.7 RCE (80/http) [TOOL] credential_spray: 10.0.0.1 — 3 services ────────────────────────────────────────────────── admin@ssh:22 ... failed admin@mysql:3306 ... SUCCESS ────────────────────────────────────────────────── [CRED] Stored: admin:P@s*** [password] @ mysql://10.0.0.1:3306 [ATTACK GRAPH] [Initial Access] SQL Injection in /login [ATTACK GRAPH] [Credential Access] MySQL creds via brute-force [FINDING] [CRITICAL] SQL Injection in login form [FINDING] [HIGH] MySQL default credentials ``` ## 环境变量 | 变量 | 描述 | |----------|-------------| | `ANTHROPIC_API_KEY` | Claude 的 API 密钥 | | `OPENAI_API_KEY` | OpenAI 的 API 密钥 | | `DEBUG` | 设置为任意值以显示完整的堆栈跟踪 | ## 相关项目 | 项目 | 描述 | |---------|-------------| | [静态应用安全测试](https://github.com/Krishcalin/Static-Application-Security-Testing) | SAST 扫描器 (Java, PHP, Python, MERN, LLM) | | [动态应用安全测试](https://github.com/Krishcalin/Dynamic-Application-Security-Testing) | 包含 58 项检查的 DAST 扫描器 | | [API 安全](https://github.com/Krishcalin/API-Security) | API 安全扫描器,112+ 条规则 | | [AWS 安全扫描器](https://github.com/Krishcalin/AWS-Security-Scanner) | CloudFormation + Terraform IaC 扫描器 | | [Windows 红队演练](https://github.com/Krishcalin/Windows-Red-Teaming) | Windows ATT&CK 红队框架 | | [检测工程](https://github.com/Krishcalin/Detection-Engineering) | SIEM 检测规则 | | [Oracle EBS 安全审计](https://github.com/Krishcalin/Oracle-EBS-Security-Audit) | Oracle EBS 安全审计 (实时 DB + 离线 CSV) | ## 许可证 MIT 许可证 —— 详情请参阅 [LICENSE](LICENSE)。
标签:AI风险缓解, Petitpotam, Python, 人工智能, 实时处理, 密码管理, 插件系统, 无后门, 用户模式Hook绕过, 自动化代理, 逆向工具