Kousiksamanta1/VulnScan-Pro
GitHub: Kousiksamanta1/VulnScan-Pro
一款集端口扫描、DNS/TLS 情报收集与 Web 漏洞主动探测于一体的桌面及 CLI 安全扫描工具。
Stars: 0 | Forks: 0
# VulnScan Pro
[](https://github.com/Kousiksamanta1/VulnScan-Pro/actions/workflows/tests.yml)
[](https://www.python.org/)
[](LICENSE)
[](https://kousiksamanta1.github.io/PORTFOLIO/)
VulnScan Pro 是一款使用 Python 和 `customtkinter` 构建的桌面漏洞扫描器。
它将 TCP 端口扫描、DNS 查询、TLS 检测、被动 Web 分析、
轻量级主动 Web 漏洞检查、扫描历史记录、丰富的扫描元数据以及
报告导出功能整合在一个桌面应用程序中。
## 功能
- 具有实时进度、日志和安全取消功能的桌面界面
- 端口预设和自定义端口范围
- 并发执行 DNS、端口、TLS 和 Web 扫描
- 针对常见服务的 Banner 探测
- 针对重定向、响应头、安全头、cookie、表单和参数的被动 Web 分析
- 针对属性、标签、文本和脚本上下文使用多种 payload 的主动 XSS 探测
- 结合基于错误、基于布尔和基于时间的启发式方法的主动 SQL 注入探测
- 历史快照和扫描对比
- 用于可重复扫描和评估运行的无头 CLI 模式
- 嵌入在已保存扫描结果和导出报告中的可复现性元数据
- 导出为 `JSON`、`CSV`、`HTML` 和 `PDF`
## 架构

## 扫描流程

## 项目布局
```
.
├── build_release.py
├── benchmark_lab.py
├── benchmark_metrics.py
├── benchmark_runner.py
├── benchmarks/
│ ├── apps/
│ ├── docker-compose.yml
│ ├── README.md
│ └── targets.json
├── docs/
│ ├── scan-flowchart.svg
│ └── system-architecture.svg
├── main.py
├── pyproject.toml
├── requirements-dev.txt
├── requirements.txt
├── scanner_app.py
├── scanner_cli.py
├── scanner_engine.py
├── scanner_metadata.py
├── scanner_reporting.py
├── scanner_session.py
├── scanner_storage.py
├── tests/
│ ├── test_scanner_cli.py
│ ├── test_benchmark_metrics.py
│ ├── test_benchmark_runner.py
│ ├── test_scanner_engine.py
│ ├── test_scanner_reporting.py
│ ├── test_scanner_session.py
│ └── test_scanner_storage.py
└── README.md
```
## 模块
- `main.py`:启动桌面应用程序,或在提供参数时切换到 CLI 模式
- `benchmark_lab.py`:启动和停止受控的本地基准测试实验室
- `benchmark_runner.py`:针对基准测试目标运行 VulnScan Pro 和可选的基线工具
- `benchmark_metrics.py`:根据基准测试运行计算精确率、召回率、误报率和平均扫描持续时间
- `scanner_app.py`:UI、扫描控制、队列处理、历史视图和导出操作
- `scanner_cli.py`:用于可重复和脚本化实验的无头扫描运行器
- `scanner_engine.py`:目标解析、DNS 检查、端口扫描、TLS 检查和上下文感知的 Web 检查
- `scanner_metadata.py`:用于可复现性和报告的运行时元数据助手
- `scanner_session.py`:GUI 和 CLI 使用的共享扫描 payload 助手
- `scanner_storage.py`:设置、历史记录、快照和对比助手
- `scanner_reporting.py`:为 `JSON`、`CSV`、`HTML` 和 `PDF` 生成报告
## 快速开始
### 前置条件
- Python 3.10 或更高版本
- `pip`
- 用于 GUI 的桌面环境
- Docker,仅在您希望运行可选的本地基准测试实验室时需要
从项目根目录(包含
`main.py` 和 `requirements.txt` 的目录)运行以下所有命令。
### macOS 或 Linux
1. 创建并激活虚拟环境:
python3 -m venv .venv
source .venv/bin/activate
2. 安装依赖项:
python -m pip install --upgrade pip
python -m pip install -r requirements.txt
3. 启动桌面应用程序:
python main.py
### Windows PowerShell
1. 创建并激活虚拟环境:
py -3.10 -m venv .venv
.\.venv\Scripts\Activate.ps1
2. 安装依赖项:
python -m pip install --upgrade pip
python -m pip install -r requirements.txt
3. 启动桌面应用程序:
python main.py
如果 PowerShell 阻止了虚拟环境的激活,请在
当前终端中运行一次以下命令,然后再次尝试激活:
```
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
```
### 不激活环境运行
在 macOS 或 Linux 上:
```
.venv/bin/python main.py
```
在 Windows 上:
```
.\.venv\Scripts\python.exe main.py
```
## 命令行扫描
当您不想打开桌面界面时,请使用 CLI 模式:
```
python main.py scan https://example.com --ports web
```
保存 HTML 报告:
```
python main.py scan https://example.com --ports web --output reports/example.html
```
打印完整的 JSON 结果:
```
python scanner_cli.py example.com --ports common --print-json
```
显示所有 CLI 选项:
```
python main.py --help
```
常见的端口值包括 `common`、`top100`、`web`、`database`、`mail`、
`remote`,明确的列表如 `22,80,443`,以及范围如 `1-1024`。
## 可选的可编辑安装
以可编辑模式安装项目会将命令快捷方式添加到活动的
虚拟环境中:
```
python -m pip install -e .
vulnscan-pro
```
之后,可以使用以下命令运行 CLI 扫描:
```
vulnscan-pro-scan https://example.com --ports web
```
可以使用以下命令安装可选的打包依赖项:
```
python -m pip install -r requirements-dev.txt
```
## 故障排除
- `ModuleNotFoundError`:激活 `.venv` 并运行
`python -m pip install -r requirements.txt`。
- `python: command not found`:在 macOS/Linux 上使用 `python3`,或在 Windows 上使用 `py`。
- GUI 无法在 Linux 上打开:安装您发行版的 Tk 软件包,通常是
`python3-tk`,如有必要,请重新创建虚拟环境。
- 扫描期间出现权限或连接错误:确认目标可达
且您已获得扫描授权。
## 基准测试工作流
启动受控的基准测试实验室:
```
python3 benchmark_lab.py up
```
使用 VulnScan Pro 和任何已安装的基线运行一次基准测试:
```
python3 benchmark_runner.py --skip-missing-tools
```
为已保存的运行重新计算评估指标:
```
python3 benchmark_metrics.py benchmarks/results/run_YYYYMMDD_HHMMSS
```
本地基准测试夹具和目标定义位于 `benchmarks/` 目录中。
## 用法
1. 输入目标 IP、域名或 URL。
2. 选择一个预设,例如 `common`、`top100`、`web`、`database`、`mail` 或 `remote`。
3. 可选地输入自定义端口,例如 `1-1024,8080,8443`。
4. 设置超时、工作线程数和导出格式。
5. 点击 `Start Scan`。
6. 在 `Overview`、`Ports`、`Web`、`Intel`、`History` 和 `Settings` 中查看结果。
7. 点击 `Stop` 取消正在进行的扫描。
8. 在需要时导出当前扫描。
GUI 中的基准测试工作流:
- 打开 `Benchmark` 标签页以查看目标定义、控制本地实验室、运行基准测试并检查评估摘要。
- 基准测试运行器使用主控制条中的当前超时和工作线程值。
- 基准测试运行完成后,GUI 会记录活动的运行目录,以便您以后可以从同一标签页重新评估它。
端口输入示例:
- `common`
- `top100`
- `web`
- `21,22,80,443`
- `1-1024`
- `1-1024,8080,8443`
## Web 分析覆盖范围
内置的 Web 扫描器将被动检查与轻量级主动探测相结合:
- 被动检查收集重定向链、响应头、常见安全头、cookie 标志、表单和可注入参数。
- XSS 检查使用针对不同 HTML 上下文设计的多种反射 payload,然后在报告可能的问题之前检查 payload 出现的位置。
- SQL 注入检查结合了数据库错误检测、布尔响应比较和时间延迟启发式方法。
当前范围和限制:
- 目前的主动 Web 探测主要集中在 URL 查询参数和发现的 `GET` 表单输入上。
- 结果旨在帮助对可能的问题进行分类的指示,而不是可利用性的证明。
- 扫描器不会在真实浏览器中执行 JavaScript,因此仅限 DOM 的 XSS 和复杂的客户端流程不在范围内。
- 经过身份验证的工作流、受 CSRF 保护的表单、自定义标头、JSON body 和多步应用程序逻辑未进行深入测试。
## 数据和输出
- 设置存储在 `~/.vulnscan_pro/settings.json` 中
- 扫描历史记录存储在 `~/.vulnscan_pro/scan_history.json` 中
- 报告可以导出为 `JSON`、`CSV`、`HTML` 或 `PDF`
- 保存的扫描和报告现在包括扫描器版本、运行时元数据、依赖版本、扫描配置和记录的错误
## 测试
```
python3 -m unittest discover -s tests -v
```
持续集成配置在 `.github/workflows/tests.yml` 中。
## 打包
```
python3 build_release.py
```
该项目还包含 `pyproject.toml`,因此可以作为标准的 Python 包进行安装和脚本化。
## 注意事项
- Web 扫描发现应被视为供手动验证的强烈指示,而不是完整的 Web 应用程序渗透测试。
- 对于仅限 IP 的目标,将跳过 DNS 收集。
- TLS 分析依赖于可达的 TLS 服务。
- 某些开放服务可能不会返回有用的 banner。
## 授权使用
仅在您拥有或获得明确授权评估的系统及网络上使用此工具。
## 安全
根据 [SECURITY.md](SECURITY.md) 报告安全敏感的发现。
## 许可证
MIT。请参阅 [LICENSE](LICENSE)。
标签:CISA项目, Python, UDP扫描, Web安全, 加密, 实时处理, 插件系统, 无后门, 桌面应用, 漏洞扫描器, 蓝队分析, 请求拦截, 逆向工具