ganeshkumar-2005/scopex
GitHub: ganeshkumar-2005/scopex
ScopeX 是一个原生 Python 的全频谱 VAPT 工具包,集成了 14 个漏洞扫描器与 Nessus 风格插件,旨在执行深度安全审计并自动生成合规性报告。
Stars: 2 | Forks: 0
# ScopeX — 原生 Python VAPT 工具包

[](https://www.python.org/)
[](LICENSE)
[](CHANGELOG.md)
[](#)
[](DISCLAIMER.md)
ScopeX 是一个高级的、基于终端的安全审计和漏洞扫描工具包,完全使用纯 Python 构建。它执行高精度的全频谱安全评估,包括端口扫描、SQLi、XSS、SSRF、JWT 审计和 CVE 映射,并生成合规性评分和专业的 PDF 报告,无需依赖 Nmap 或 OpenSSL 等庞大的外部二进制文件。
由 **Ganesh Kumar** 开发。
## 🔍 功能特性
* **14 个核心扫描模块**:内置用于端口、标头、SSL/TLS、DNS、子域名、WAF、Cookie、API endpoint、WHOIS 和 Web 漏洞的扫描器。
* **7 个高级 Nessus 风格插件**:动态插件检查协议漏洞(例如 Heartbleed CVE-2014-0160、Mysql 空密码、SMTP 开放中继)和服务器配置。
* **合规与风险评分引擎**:将发现结果映射到 OWASP Top 10 和 PCI-DSS 要求,计算字母等级(A–F)的健康评级。
* **专业 PDF 报告**:自动编译清晰、面向管理层的报告,带有颜色编码的严重性面板、CVSS 分数和修复步骤。
* **纯 Python 实现**:极简的依赖项(`requests`、`rich`、`click`、`fpdf2`、`beautifulsoup4`),完全在用户空间中运行。
## 💻 终端扫描输出
以下是扫描目标时的实时终端审计视图:

## 🚀 快速开始
### 安装说明
1. 克隆仓库:
git clone https://github.com/ganeshkumar-2005/scopex.git
cd scopex
2. 设置虚拟环境并安装依赖项:
python -m venv venv
# 在 Windows 上:
venv\Scripts\activate
# 在 macOS/Linux 上:
source venv/bin/activate
pip install -r requirements.txt
### 基本扫描命令
```
python scopex.py scan --target example.com
```
## ⚙️ 扫描配置与使用
ScopeX 通过预定义的配置文件来匹配目标范围:
| 配置 | 命令标志 | 包含模块 | 超时 |
| :--- | :--- | :--- | :--- |
| **Quick** | 默认(无)/ 配置 | 20 个常用端口、HTTP 标头、DNS 验证 | 2.0s |
| **Standard** | `--target ` | SSL/TLS、Web 漏洞、标头、端口、Cookie、WAF | 3.0s |
| **Full** | `--all` | 完整端口扫描、所有基础扫描器和深度插件 | 5.0s |
### 运行命令示例
* **全频谱扫描**(基础 + 深度扫描器 + 所有插件):
python scopex.py scan --target example.com --all
* **仅深度 Web 漏洞扫描**(SQLi、XSS、WAF、API):
python scopex.py scan --target example.com --deep
* **自动化扫描(非交互式)**:
python scopex.py scan --target example.com --all --force
* **生成 PDF 报告**:
python scopex.py report --input output/scan_20260623_080000.json
## 📄 专业 PDF 报告示例
以下是生成的管理层安全报告预览,按严重性排序并列出合规性标准:

## 🛠️ 核心审计模块(14 个扫描器)
1. 端口扫描器(
* **方法论**:并发原始 TCP socket 连接尝试。 * **能力**:捕获协议 banner,在 HTTP 标头中使用目标主机名以触发真实的 Web 服务器响应,而不是返回通用错误。 * **默认端口**:扫描 50 多个常见的 admin、数据库和消息队列端口。
2. HTTP 标头扫描器(
* **分析的标头**:审计 `Strict-Transport-Security`、`Content-Security-Policy` (CSP)、`X-Content-Type-Options`、`X-Frame-Options`、`Referrer-Policy` 和 `Permissions-Policy`。 * **深度 CSP 审计**:解析指令以标记危险指令(如 `unsafe-inline`、`unsafe-eval`、`data:` URI 或通配符范围),并识别缺失的点击劫持保护。 * **服务器信息披露**:检测 `Server`、`X-Powered-By` 和 `X-AspNet-Version` 等标头中的后端版本泄露。
3. SSL 扫描器(
* **证书有效性**:验证过期日期、颁发者层次结构和主机名匹配。 * **Cipher Suite 审计**:枚举支持的 cipher suite,针对过时的协议(TLS 1.0、TLS 1.1)和损坏/弱密码(RC4、3DES、NULL、EXPORT)发出警告。
4. DNS 扫描器(
* **DNS 记录**:解析标准记录(A、AAAA、MX、TXT、NS、CNAME)。 * **泄露检测**:标记公共记录是否指向 RFC 1918 私有 IP 地址(IP 泄露)。
5. 子域名扫描器(
* **枚举**:执行基于字典的子域名暴力破解。 * **通配符保护**:预先解析随机的、不存在的子域名;如果它被解析,说明目标域名使用通配符 DNS 记录,扫描器将暂停以防止高误报率。
6. 漏洞扫描器(
* **CORS 审计**:使用多种源变体(例如 `null`、子域名、像 `target.com.attacker.com` 这样的后缀绕过以及协议降级)进行探测。 * **点击劫持**:检查目标 endpoint 的框架选项。 * **开放重定向**:使用外部 payload 链接探测 15 多个常见的重定向参数(`redirect_url`、`return_to`、`next`、`dest` 等)。 * **敏感文件**:探测备份/配置文件(`.git`、`.env`、`wp-config.php`、`.htaccess`)。它会对服务器自定义的 404 响应布局进行指纹识别,以忽略虚假的 HTTP 200/OK 状态码,并验证响应内容签名(例如,期望在 `.htaccess` 中包含 `RewriteEngine`)。 * **RFC 9116 security.txt**:验证 `security.txt` 文件的存在性和合规性,检查必需的 Contact 和 Expires 指令。
7. SQL 注入扫描器(
* **基于错误**:注入字符(`'`、`"`、`\`)并监控响应内容以获取数据库系统错误模板(MySQL、MSSQL、Oracle、PGSQL)。 * **时间盲注验证**:注入延迟 payload(`pg_sleep`、`sleep`)。当观察到延迟时,它会发送带有不同延迟间隔的二次验证 payload 来确认漏洞,从而排除随机网络抖动。
8. XSS 扫描器(
* **反射型 XSS**:注入脚本 payload 并解析响应以确保它们未被转义地反射出来。如果 payload 被反射但经过了 HTML 编码(例如 `<script>`),它会将反射报告为安全的。 * **基于 DOM 的 XSS**:解析目标脚本中引用危险 sink(`eval`、`document.write`、`innerHTML`)的客户端源(`location.hash`、`document.URL`)。
9. 技术指纹识别器(
* **指纹识别**:根据标头、Cookie 和 DOM 组件识别软件栈。 * **CVE 映射**:将检测到的技术与本地漏洞字典进行交叉引用。
10. Cookie 扫描器(
* **审计**:分析 Cookie 的 `HttpOnly`、`Secure` 和 `SameSite` 配置。 * **JWT 密码学审计**:检测 JWT Cookie,检查 `none` 算法,并针对常见的弱密钥暴力破解对称签名(HS256/HS384/HS512)。
11. WAF 检测器(
* **签名**:根据标头和被阻止的请求识别 Web 应用防火墙(Cloudflare、AWS WAF、ModSecurity、Akamai 等)。
12. 信息披露(
* **抓取器**:使用 BeautifulSoup 审查注释和脚本文件。 * **正则表达式提取**:标记私有 IP、AWS 凭证、SSH 私钥 (PEM)、电子邮件和 Slack Webhook。
13. 管理面板扫描器(
* **暴露面**:探测常见的 admin 面板和登录门户。
14. API 扫描器(
* **路由**:搜索 REST API 版本指向的 endpoint。 * **GraphQL**:使用适当的 `application/json` 结构向 `/graphql` 提交内省查询 payload,以检查暴露的数据库 schema。
## 🔌 高级漏洞插件
1. SSL 攻击(
* **Heartbleed (CVE-2014-0160)**:完全实现 TLS 记录级别的心跳请求测试。 * **POODLE (CVE-2014-3566)**:检查是否支持 SSLv3。 * **DROWN (CVE-2016-0800)**:检查是否支持 SSLv2。 * **FREAK (CVE-2015-0204)**:验证是否接受弱的出口级 512 位密钥。 * **CRIME (CVE-2012-4929)**:识别活跃的 TLS 级别压缩。
2. 服务协议审计(
* **FTP 匿名 (CVE-1999-0497)**:检查目标 FTP 服务器是否允许无密码匿名访问。 * **SSH 协议与 CVE 检查器**:解析 SSH 服务 banner,检查对旧版 SSHv1 的支持,并将 SSH 版本与历史 CVE 数据库进行比较。 * **SMTP 开放中继**:验证邮件传输代理 (MTA) 是否接受为未经授权的外部收件人转发邮件。 * **数据库无密码暴露面**:解码端口 3306 上的 MySQL 协议握手问候数据包,并尝试无密码 root 登录。针对 Redis 执行类似的身份验证检查。
3. CMS 扫描器(
* **WordPress**:运行 REST API 作者枚举(`?author=1..10`),通过解析 readme.txt 发现 WordPress 插件版本,进行 XML-RPC DDoS 放大检查,以及 WordPress 核心版本审计。 * **Joomla 与 Drupal**:检查核心配置,并审计是否存在易受 Drupalgeddon 2 (CVE-2018-7600) 攻击的过时 Drupal 核心。
4. 网络安全(
5. 子域名接管(
* **接管**:评估指向非活跃第三方云托管提供商的目标 CNAME。
6. SSRF 与路径遍历(
* **探测**:使用常见的目录路径和环回 URL 审计查询字段是否存在本地文件包含 (LFI) 和服务器端请求伪造 (SSRF) 漏洞。
## 🏛️ 项目架构
ScopeX 使用 Python 线程池异步运行并发检查,将原始 TCP 字节和 HTTP 数据包直接路由到目标服务器:
```
ScopeX/
├── scopex.py # CLI Controller (Rich + Click)
├── config.json # Scan Profiles & Subdomain Lists
├── requirements.txt # Core dependencies
├── scanners/ # 14 Protocol-level basic/deep scanners
│ ├── port_scanner.py # TCP raw socket sweeps
│ ├── sqli_scanner.py # Error & Time-blind blind injection
│ └── ... # Other scanners
├── plugins/ # Vulnerability exploits & compliance mapping
│ ├── compliance.py # OWASP/PCI mapping & grading
│ ├── ssl_vulns.py # Raw TLS Heartbleed prober
│ └── ... # Other plugins
├── reports/ # PDF builder
│ └── pdf_report.py # FPDF2 engine
└── utils/ # Shared connection helpers & output colors
```
## ⚠️ 已知局限性与权衡
为了确保轻量级的占用,ScopeX 使用了纯 Python 实现:
* **无重型网络驱动程序(Nmap/Masscan)**:端口扫描器使用 Python 的 `socket` 库在用户空间中运行。它不执行 SYN 扫描(半开),而是依赖完整的 TCP 握手(`connect_ex`)。这使得它比原生二进制工具更慢,在防火墙日志中也更显眼。
* **无原生 OpenSSL 包装**:合法的 SSL 测试工具(如 `testssl.sh`)通过使用本地 OpenSSL 二进制文件协商特定的 cipher suite 来查询远程 endpoint。ScopeX 使用 Python 的 `ssl` 模块或自定义的 socket 字节构建原始握手 payload,这可能无法捕获复杂的重协商错误。
* **线程池限制**:Python 中的多线程受全局解释器锁 (GIL) 的限制。对于繁重的网络任务,这通常没有问题(I/O 密集型),但是对数千个子域名的字典暴力破解效率不如基于 Go 的工具(如 `amass` 或 `subfinder`)。
* **WAF 干扰**:由于 ScopeX 使用标准的 HTTP 请求,活跃的 WAF 可能会在进行 SQLi 或 XSS 扫描期间阻止其 IP 地址,从而导致漏报。
## ⚖️ 法律与免责声明
**仅限授权使用**:未经事先书面授权,严禁使用 ScopeX 扫描目标。开发者 **Ganesh Kumar** 对因使用本软件造成的任何滥用、损坏或损失不承担任何责任。
1. 端口扫描器(scanners/port_scanner.py)
* **方法论**:并发原始 TCP socket 连接尝试。 * **能力**:捕获协议 banner,在 HTTP 标头中使用目标主机名以触发真实的 Web 服务器响应,而不是返回通用错误。 * **默认端口**:扫描 50 多个常见的 admin、数据库和消息队列端口。
2. HTTP 标头扫描器(scanners/header_scanner.py)
* **分析的标头**:审计 `Strict-Transport-Security`、`Content-Security-Policy` (CSP)、`X-Content-Type-Options`、`X-Frame-Options`、`Referrer-Policy` 和 `Permissions-Policy`。 * **深度 CSP 审计**:解析指令以标记危险指令(如 `unsafe-inline`、`unsafe-eval`、`data:` URI 或通配符范围),并识别缺失的点击劫持保护。 * **服务器信息披露**:检测 `Server`、`X-Powered-By` 和 `X-AspNet-Version` 等标头中的后端版本泄露。
3. SSL 扫描器(scanners/ssl_scanner.py)
* **证书有效性**:验证过期日期、颁发者层次结构和主机名匹配。 * **Cipher Suite 审计**:枚举支持的 cipher suite,针对过时的协议(TLS 1.0、TLS 1.1)和损坏/弱密码(RC4、3DES、NULL、EXPORT)发出警告。
4. DNS 扫描器(scanners/dns_scanner.py)
* **DNS 记录**:解析标准记录(A、AAAA、MX、TXT、NS、CNAME)。 * **泄露检测**:标记公共记录是否指向 RFC 1918 私有 IP 地址(IP 泄露)。
5. 子域名扫描器(scanners/subdomain_scanner.py)
* **枚举**:执行基于字典的子域名暴力破解。 * **通配符保护**:预先解析随机的、不存在的子域名;如果它被解析,说明目标域名使用通配符 DNS 记录,扫描器将暂停以防止高误报率。
6. 漏洞扫描器(scanners/vuln_scanner.py)
* **CORS 审计**:使用多种源变体(例如 `null`、子域名、像 `target.com.attacker.com` 这样的后缀绕过以及协议降级)进行探测。 * **点击劫持**:检查目标 endpoint 的框架选项。 * **开放重定向**:使用外部 payload 链接探测 15 多个常见的重定向参数(`redirect_url`、`return_to`、`next`、`dest` 等)。 * **敏感文件**:探测备份/配置文件(`.git`、`.env`、`wp-config.php`、`.htaccess`)。它会对服务器自定义的 404 响应布局进行指纹识别,以忽略虚假的 HTTP 200/OK 状态码,并验证响应内容签名(例如,期望在 `.htaccess` 中包含 `RewriteEngine`)。 * **RFC 9116 security.txt**:验证 `security.txt` 文件的存在性和合规性,检查必需的 Contact 和 Expires 指令。
7. SQL 注入扫描器(scanners/sqli_scanner.py)
* **基于错误**:注入字符(`'`、`"`、`\`)并监控响应内容以获取数据库系统错误模板(MySQL、MSSQL、Oracle、PGSQL)。 * **时间盲注验证**:注入延迟 payload(`pg_sleep`、`sleep`)。当观察到延迟时,它会发送带有不同延迟间隔的二次验证 payload 来确认漏洞,从而排除随机网络抖动。
8. XSS 扫描器(scanners/xss_scanner.py)
* **反射型 XSS**:注入脚本 payload 并解析响应以确保它们未被转义地反射出来。如果 payload 被反射但经过了 HTML 编码(例如 `<script>`),它会将反射报告为安全的。 * **基于 DOM 的 XSS**:解析目标脚本中引用危险 sink(`eval`、`document.write`、`innerHTML`)的客户端源(`location.hash`、`document.URL`)。
9. 技术指纹识别器(scanners/tech_fingerprinter.py)
* **指纹识别**:根据标头、Cookie 和 DOM 组件识别软件栈。 * **CVE 映射**:将检测到的技术与本地漏洞字典进行交叉引用。
10. Cookie 扫描器(scanners/cookie_scanner.py)
* **审计**:分析 Cookie 的 `HttpOnly`、`Secure` 和 `SameSite` 配置。 * **JWT 密码学审计**:检测 JWT Cookie,检查 `none` 算法,并针对常见的弱密钥暴力破解对称签名(HS256/HS384/HS512)。
11. WAF 检测器(scanners/waf_detector.py)
* **签名**:根据标头和被阻止的请求识别 Web 应用防火墙(Cloudflare、AWS WAF、ModSecurity、Akamai 等)。
12. 信息披露(scanners/info_disclosure.py)
* **抓取器**:使用 BeautifulSoup 审查注释和脚本文件。 * **正则表达式提取**:标记私有 IP、AWS 凭证、SSH 私钥 (PEM)、电子邮件和 Slack Webhook。
13. 管理面板扫描器(scanners/auth_scanner.py)
* **暴露面**:探测常见的 admin 面板和登录门户。
14. API 扫描器(scanners/api_scanner.py)
* **路由**:搜索 REST API 版本指向的 endpoint。 * **GraphQL**:使用适当的 `application/json` 结构向 `/graphql` 提交内省查询 payload,以检查暴露的数据库 schema。
1. SSL 攻击(plugins/ssl_vulns.py)
* **Heartbleed (CVE-2014-0160)**:完全实现 TLS 记录级别的心跳请求测试。 * **POODLE (CVE-2014-3566)**:检查是否支持 SSLv3。 * **DROWN (CVE-2016-0800)**:检查是否支持 SSLv2。 * **FREAK (CVE-2015-0204)**:验证是否接受弱的出口级 512 位密钥。 * **CRIME (CVE-2012-4929)**:识别活跃的 TLS 级别压缩。
2. 服务协议审计(plugins/service_vulns.py)
* **FTP 匿名 (CVE-1999-0497)**:检查目标 FTP 服务器是否允许无密码匿名访问。 * **SSH 协议与 CVE 检查器**:解析 SSH 服务 banner,检查对旧版 SSHv1 的支持,并将 SSH 版本与历史 CVE 数据库进行比较。 * **SMTP 开放中继**:验证邮件传输代理 (MTA) 是否接受为未经授权的外部收件人转发邮件。 * **数据库无密码暴露面**:解码端口 3306 上的 MySQL 协议握手问候数据包,并尝试无密码 root 登录。针对 Redis 执行类似的身份验证检查。
3. CMS 扫描器(plugins/cms_scanner.py)
* **WordPress**:运行 REST API 作者枚举(`?author=1..10`),通过解析 readme.txt 发现 WordPress 插件版本,进行 XML-RPC DDoS 放大检查,以及 WordPress 核心版本审计。 * **Joomla 与 Drupal**:检查核心配置,并审计是否存在易受 Drupalgeddon 2 (CVE-2018-7600) 攻击的过时 Drupal 核心。
4. 网络安全(plugins/network_vulns.py)
* **DNS AXFR**:通过 DNS 查询解析目标域名服务器(NS 记录),并直接针对权威域名服务器尝试区域传送。
* **SNMP**:检查公共/私有的 SNMP community string。
* **SMB 签名**:检查端口 445 上的 SMB 协议响应,以确定是否需要消息签名。
* **LDAP**:连接到端口 389,并发送带有空凭证的原始 LDAP BindRequest 以验证匿名绑定权限。
5. 子域名接管(plugins/subdomain_takeover.py)
* **接管**:评估指向非活跃第三方云托管提供商的目标 CNAME。
6. SSRF 与路径遍历(plugins/ssrf_scanner.py)
* **探测**:使用常见的目录路径和环回 URL 审计查询字段是否存在本地文件包含 (LFI) 和服务器端请求伪造 (SSRF) 漏洞。
标签:DNS枚举, Python, VAPT, 合规检测, 字符串匹配, 实时处理, 密码管理, 插件系统, 无后门, 网络安全工具, 逆向工具