psychedelic-theory/Auto_Recon_Vulnerability_Report_Generator
GitHub: psychedelic-theory/Auto_Recon_Vulnerability_Report_Generator
自动化侦察与漏洞报告生成器,通过编排安全扫描工具并生成 HTML 报告,简化渗透测试前期的信息收集与整理。
Stars: 1 | Forks: 0
# 🛡️ 自动化侦察与漏洞报告生成器
## 📋 描述
自动化侦察与漏洞报告生成器是一个开源
安全工具,旨在自动化针对目标 Linux 系统的渗透测试侦察阶段。
无需手动运行每个安全工具并逐个解释原始终端输出,该工具将多个
行业标准工具串联成一个可执行的工作流,最终生成一个简洁、
易读的 HTML 报告。
报告突出显示开放端口、运行服务、软件版本、Web 服务器漏洞、
隐藏目录、SMB 共享、用户账户以及已知
公开漏洞,为安全专业人员和学生提供快速、可重复、
记录完善的渗透测试起点。
## 🎯 目的
侦察是任何真实世界渗透测试的第一阶段,也是最关键的阶段之一。安全专业人员通常需要:
- 单独从命令行运行每个工具
- 手动阅读原始终端输出
- 从多个来源拼凑发现结果,形成连贯的报告
该工具通过为 Linux 用户和安全专业人员提供一个可以运行的单条命令来自动化整个流程,从而解决了这个问题。生成的 HTML
报告使技术与非技术受众都能轻松访问,将原始数据转化为可操作且易于理解的内容。
## 🔍 我们正在侦察什么
该工具在以下攻击面区域执行侦察:
### 1. 开放端口与服务
识别目标系统上的所有开放 TCP 端口,并检测每个端口上运行的服务
和软件版本。这是任何侦察工作的基础——了解哪些内容被暴露是理解攻击面的第一步。
### 2. Web 服务器漏洞
扫描任何检测到的 Web 服务器,查找常见配置错误、过时软件、
缺失的安全标头、暴露的管理面板以及其他已知 Web 漏洞。
这涵盖了 HTTP 和 HTTPS 服务。
### 3. 隐藏目录与文件
使用基于单词表的暴力破解方法,枚举任何检测到的 Web 服务器上的隐藏或未列出的目录和文件。
这可以揭示管理面板、备份文件、配置文件和其他敏感资源,
它们未被公开链接但仍然可访问。
### 4. SMB 共享与用户账户
枚举目标上运行的任何 SMB(服务器消息块)文件共享服务。
这包括发现共享网络文件夹、用户账户、工作组信息以及密码策略。
配置不当的 SMB 服务是真实世界攻击中的常见入口点。
### 5. 已知公共漏洞
将检测到的所有服务和软件版本与漏洞数据库(ExploitDB)
进行交叉引用,以识别适用于目标系统的任何已知漏洞或 CVE。
这直接表明攻击者可以利用什么来攻击系统。
## 🧰 技术栈与工具
| 工具 | 用途 | 语言 |
|---|---|---|
| **Nmap** | 端口扫描与服务/版本检测 | C |
| **Nikto** | Web 服务器漏洞扫描 | Perl |
| **Gobuster** | 目录与文件枚举 | Go |
| **enum4linux-ng** | SMB 枚举 | Python |
| **Searchsploit / ExploitDB** | 已知漏洞查找 | Bash / Ruby |
| **Python 3** | 报告生成与 JSON 解析 | Python |
| **Jinja2** | HTML 报告模板化 | Python |
| **Bash** | 主工作流编排 | Bash |
## 💻 系统要求
### 攻击者机器(扫描器)
- 操作系统:Ubuntu 22.04 或 Ubuntu 24.04 LTS
- 内存:至少 2GB,推荐 4GB
- 磁盘:至少 20GB
- 网络:配置了主机仅模式(Host-Only)的 VirtualBox 适配器
### 目标机器(用于测试)
- Metasploitable 2(故意存在漏洞的 Linux 虚拟机)
- 内存:512MB
- 网络:与扫描器相同的主机仅模式 VirtualBox 适配器
### 先决条件
在运行设置脚本之前,请确保以下工具可用:
- `git` — 用于克隆仓库
- `sudo` / 根权限 — 安装所需
- 互联网访问 — 安装期间用于下载工具
- 配置了主机仅网络的 VirtualBox
## 📁 项目结构
recon-tool/
├── recon.sh # 主入口点 — 运行此脚本
├── setup.sh # 所有工具的自动化安装脚本
├── modules/
│ ├── nmap_scan.sh # 端口与服务检测
│ ├── nikto_scan.sh # Web 漏洞扫描
│ ├── gobuster_scan.sh # 目录枚举
│ ├── enum4linux_scan.sh # SMB 枚举
│ └── searchsploit_scan.sh # 已知漏洞查找
├── report/
│ └── generate_report.py # 解析结果并生成 HTML 报告
├── results/ # 扫描输出保存在此处(自动创建)
└── README.md
## ⚙️ 安装
### 第一步 — 克隆仓库
```
git clone https://github.com/YOUR_USERNAME/recon-tool.git
cd recon-tool
```
### 第二步 — 运行设置脚本
```
chmod +x setup.sh
sudo ./setup.sh
```
设置脚本将自动完成以下操作:
- 安装所有必需的系统包和依赖项
- 克隆并配置 Nikto、ExploitDB 和 enum4linux-ng
- 安装所需的 Python 包(Jinja2、Weasyprint)
- 下载 Gobuster 单词列表
- 验证每个工具是否正常工作
- 最后打印通过/失败摘要
如果任何工具安装失败,请检查 `/tmp/recon_setup.log` 获取详细错误输出。
## 🚀 使用
### 基本扫描
```
sudo ./recon.sh -t
```
### 使用自定义输出目录
```
sudo ./recon.sh -t -o ./results/my_scan
```
### 使用自定义单词列表
```
sudo ./recon.sh -t -w /usr/share/wordlists/rockyou.txt
```
### 所有选项
```
sudo ./recon.sh -t [-o ] [-w ] [-h]
-t Target IP address (required)
-o Output directory (default: ./results/)
-w Wordlist for Gobuster (default: /usr/share/wordlists/dirb/common.txt)
-h Show help message
```
### 示例
```
sudo ./recon.sh -t 192.168.198.3
```
## 📊 示例输出
扫描完成后,以下文件将保存在 `results/<时间戳>/` 中:
| 文件 | 内容 |
|---|---|
| `nmap_ports.txt` | 原始 Nmap 端口发现输出 |
| `nmap_results.txt` | 详细的 Nmap 服务与版本扫描 |
| `nikto_results.txt` | Web 服务器漏洞发现 |
| `gobuster_results.txt` | 发现的目录与文件 |
| `enum4linux_results.txt` | SMB 用户、共享与密码策略 |
| `searchsploit_results.txt` | 从 ExploitDB 匹配到的已知漏洞 |
| `services_list.txt` | 用于漏洞查找的服务列表 |
| **`report.html`** | **最终 HTML 报告 — 在浏览器中打开此文件** |
### 报告包含内容
- **执行摘要** — 四个统计卡片,显示开放端口、
Web 发现、目录和已知漏洞的数量
- **风险评分** — 整体严重等级(低 / 中 / 高 / 危急)
- **开放端口与服务表** — 端口、服务名称与版本
- **Web 漏洞** — 单独列出的 Nikto 发现
- **目录枚举** — 发现的路径及 HTTP 状态码
- **SMB 枚举** — 用户、共享、工作组与密码策略
- **已知漏洞** — 每个服务对应的 ExploitDB 条目
- **原始 Nmap 输出** — 完整的未修改 Nmap 扫描结果供参考
## ⚠️ 已知限制
- **仅限 TCP** — 该工具目前仅扫描 TCP 端口。
未包含 UDP 扫描,因为这会显著增加扫描时间。
- **单目标** — 该工具一次仅扫描一个 IP 地址。
不支持子网或范围扫描。
- **Web 扫描需要 HTTP/HTTPS** — 仅当在 80、443 或 8080 端口检测到 Web 服务器时,
Nikto 和 Gobuster 才会运行。非标准 Web 端口可能被遗漏。
- **Searchsploit 需要本地 ExploitDB 副本** — 该工具不查询互联网获取漏洞。
依赖本地克隆的 ExploitDB 数据库,可能并非始终完全更新。
- **enum4linux-ng 需要 SMB 端口** — 仅当检测到 139 或 445 端口开放时,
才会运行 SMB 枚举。
- **扫描时间因目标而异** — 针对 Metasploitable 2 的完整扫描
通常需要 5-15 分钟,具体取决于开放端口数量和 Web 服务器响应时间。
## 🧪环境
本工具已在以下环境中开发与测试:
| 组件 | 详情 |
|---|---|
| 虚拟机监控程序 | Oracle VirtualBox |
| 扫描器虚拟机 | Ubuntu 24.04 LTS — IP: 192.168.198.4 |
| 目标虚拟机 | Metasploitable 2 — IP: 192.168.198.5 |
| 网络 | VirtualBox 主机仅模式适配器 |
| 主机操作系统 | Windows 11 |
## 🚫 法律声明
**本工具仅限教育用途和授权安全测试。**
切勿对未拥有或未经明确书面许可的系统运行此工具。
未经授权扫描系统是非法且不道德的。作者不对本工具的滥用承担任何责任。
本项目作为大学系统管理与安全课程的一部分开发,
设计用于在受控实验室环境中针对故意存在漏洞的系统(如 Metasploitable 2)使用。
## 👥 作者
**Johan Zapata**
计算机科学 — Clemson University
CS4240/6240 — 系统管理与安全
**Nathan Kitchens**
计算机科学 — Clemson University
CS4240/6240 — 系统管理与安全
## 📚 参考资料
- [Nmap 文档](https://nmap.org/docs.html)
- [Nikto GitHub](https://github.com/sullo/nikto)
- [Gobuster GitHub](https://github.com/OJ/gobuster)
- [enum4linux-ng GitHub](https://github.com/cddmp/enum4linux-ng)
- [ExploitDB / Searchsploit](https://www.exploit-db.com/searchsploit)
- [Metasploitable 2](https://sourceforge.net/projects/metasploitable/)
- [Jinja2 文档](https://jinja.palletsprojects.com/)
标签:AES-256, HTML报告, Qt框架, SMB共享探测, Web漏洞扫描, 公开漏洞利用, 关键词SEO, 取证报告, 安全工具链, 安全报告, 安全演示, 工作流自动化, 应用安全, 开源安全工具, 快速审查, 攻击面评估, 数据统计, 日志审计, 服务识别, 枚举器, 渗透测试学习, 漏洞评估, 用户枚举, 端口扫描, 网络安全, 自动化侦察, 逆向工具, 逆向工程平台, 隐私保护, 隐蔽目录发现