GAURAVMOYNAK/shadowscan
GitHub: GAURAVMOYNAK/shadowscan
一款基于 Python 的非侵入式 Web 安全侦察与评估 CLI 工具,可对目标域名执行 15 项自动化安全检查并生成专业报告。
Stars: 0 | Forks: 0
# 🕵️ ShadowScan Pro
```
==========================================
SHADOWSCAN PRO - RECON INTELLIGENCE TOOL
==========================================
CLI Security & OSINT Assessment Utility
```
## ⚠️ 法律与道德警告
## 📋 目录
- [什么是 ShadowScan Pro?](#what-is-shadowscan-pro)
- [它能做什么?](#what-can-it-do)
- [系统要求](#system-requirements)
- [安装说明](#installation)
- [使用方法](#how-to-use)
- [所有模块详解](#all-modules-explained)
- [解读输出结果](#understanding-the-output)
- [风险评分系统](#risk-scoring-system)
- [生成的报告](#reports-generated)
- [合法实践目标](#legal-practice-targets)
- [发现 ID 参考](#finding-ids-reference)
- [故障排除](#troubleshooting)
- [项目结构](#project-structure)
## 什么是 ShadowScan Pro?
ShadowScan Pro 是一款**基于 Python 的命令行安全评估工具**,专为 Web 信息收集和漏洞评估而设计。它对目标域名执行 **15 项不同的安全检查**——所有过程均不发送任何恶意 payload 或进行漏洞利用。
它是安全专业人员在渗透测试的**信息收集阶段**会使用的那种工具——用于收集信息、识别配置错误、检测暴露情况,并生成专业报告。
**是什么让它“非侵入式”?**
- 它不发送漏洞利用 payload
- 它不暴力破解登录页面
- 它不执行 SQL 注入或 XSS 攻击
- 它只读取公开可用的信息并检查常见的配置错误
- 所有检查都类似于搜索引擎和合法爬虫已经在做的事情
## 它能做什么?
ShadowScan Pro 只需一条命令即可执行以下操作:
| # | 功能 | 发现内容 |
|---|-----------|---------------|
| 1 | 域名解析 | IP 地址、反向 DNS |
| 2 | WHOIS 情报 | 注册商、组织、创建日期、到期日期、年龄 |
| 3 | DNS 分析 | A、MX、TXT 记录,SPF 和 DMARC 验证 |
| 4 | SSL/TLS 分析 | 证书有效性、过期时间、自签名检查、TLS 版本 |
| 5 | HTTP 安全标头 | CSP、HSTS、X-Frame-Options、X-Content-Type-Options |
| 6 | HTTP 方法 | 危险方法,如 PUT、DELETE、TRACE |
| 7 | 端口扫描 | 通过多线程并行扫描 13 个常见端口 |
| 8 | 技术指纹识别 | CMS、框架、CDN、WAF 检测 |
| 9 | 文件与目录发现 | .env、.git、robots.txt、备份文件、管理后台 |
| 10 | 子域名枚举 | 并行解析 14 个常见子域名 |
| 11 | 路由跟踪 | 带自动超时的网络跃点映射 |
| 12 | 数字足迹 | 邮箱、社交媒体、外部链接、API 路径、统计分析 |
| 13 | Cookie 安全性 | Secure、HttpOnly、SameSite 标志分析 |
| 14 | CORS 策略 | 通配符或反射来源配置错误 |
| 15 | 信息泄露检测 | 暴露的 .env、.git/config、数据库转储、备份文件 |
**在完成所有扫描后,它会:**
- 计算 **安全评分**、**暴露评分** 和 **信任评分**(0–100)
- 列出所有发现及其严重程度(高 / 中 / 低)
- 生成一份**专业的 PDF 报告**和一份**纯文本报告**
## 系统要求
### 操作系统
| 操作系统 | 支持情况 |
|----|---------|
| **Kali Linux** | ✅ 主要平台 / 完全支持 |
| Ubuntu / Debian | ✅ 完全支持 |
| Parrot OS | ✅ 完全支持 |
| macOS | ✅ 支持(traceroute 原生运行) |
| Windows 10/11 | ⚠️ 支持(使用 tracert 代替 traceroute) |
| 任何 Linux 发行版 | ✅ 支持 |
### Python 版本
| 版本 | 支持情况 |
|---------|---------|
| Python 3.8+ | ✅ 必需 |
| Python 3.10+ | ✅ 推荐 |
| Python 2.x | ❌ 不支持 |
检查你的 Python 版本:
```
python3 --version
```
### 网络要求
- 活跃的互联网连接(用于 DNS 解析、WHOIS、SSL 检查)
- 出站端口访问:**80、443、53**(最低要求)
- Traceroute 要求防火墙未阻止 **ICMP 或 UDP**
## 安装说明
### 步骤 1 — 克隆仓库
```
git clone https://github.com/yourusername/shadowscan-pro.git
cd shadowscan-pro
```
或者直接下载 `shadowscan_pro.py` 文件。
### 步骤 2 — 安装 Python 依赖
**在 Kali Linux / Ubuntu / Debian 上:**
```
pip install requests dnspython rich reportlab python-whois
```
如果在较新的系统上遇到系统包冲突错误:
```
pip install requests dnspython rich reportlab python-whois --break-system-packages
```
或者使用虚拟环境(推荐):
```
python3 -m venv venv
source venv/bin/activate
pip install requests dnspython rich reportlab python-whois
```
**在 Windows 上:**
```
pip install requests dnspython rich reportlab python-whois
```
**在 macOS 上:**
```
pip3 install requests dnspython rich reportlab python-whois
```
### 步骤 3 — 安装系统工具
**Traceroute(Linux/macOS —— 通常已预装):**
```
# Kali / Ubuntu / Debian
sudo apt install traceroute
# macOS
brew install traceroute
```
### 步骤 4 — 验证安装
```
python3 shadowscan_pro.py --help
```
你应该会看到:
```
usage: shadowscan_pro [-h] domain
ShadowScan Pro v3 — Advanced Web Recon & VAPT Tool
positional arguments:
domain Target domain (e.g. example.com)
```
### 完整依赖表
| 库 | 用途 | 安装命令 |
|---------|---------|-----------------|
| `requests` | HTTP 请求、标头分析 | `pip install requests` |
| `dnspython` | DNS 记录解析 | `pip install dnspython` |
| `rich` | 彩色 CLI 输出、表格、面板 | `pip install rich` |
| `reportlab` | PDF 报告生成 | `pip install reportlab` |
| `python-whois` | WHOIS 域名情报 | `pip install python-whois` |
| `socket` | 端口扫描、DNS 解析 | 内置(无需安装) |
| `ssl` | SSL/TLS 证书分析 | 内置(无需安装) |
| `subprocess` | Traceroute 执行 | 内置(无需安装) |
| `threading` | 并行端口扫描 | 内置(无需安装) |
| `concurrent.futures` | 并行子域名枚举 | 内置(无需安装) |
## 使用方法
### 基本用法
```
python3 shadowscan_pro.py example.com
```
### 使用完整域名格式
该工具会自动去除协议和路径:
```
python3 shadowscan_pro.py https://example.com
python3 shadowscan_pro.py http://example.com/path/page
python3 shadowscan_pro.py www.example.com
```
以上所有输入都是等价的——该工具会将输入标准化为 `example.com`。
### 输出
该工具将:
1. 显示横幅和道德警告
2. 逐一运行所有 15 个模块,并提供实时状态更新
3. 显示完整的风险分析摘要
4. 在 `reports/` 文件夹中生成两个报告文件
```
reports/
└── example_com_report.txt ← Plain text report
└── example_com_report.pdf ← Professional PDF report
```
### 完整运行示例
```
$ python3 shadowscan_pro.py testphp.vulnweb.com
==========================================
SHADOWSCAN PRO - RECON INTELLIGENCE TOOL
==========================================
⚠ ETHICAL & LEGAL WARNING
Use only on authorized systems...
Target : testphp.vulnweb.com
Started : 2025-01-15 14:32:10
──────────────── [1] DOMAIN INFORMATION ─────────────────
[*] Resolving domain...
✔ Resolved IP : 44.228.249.3
✔ Reverse DNS : ec2-44-228-249-3.us-west-2.compute.amazonaws.com
──────────────── [2] WHOIS / DOMAIN INTELLIGENCE ────────
[*] Querying WHOIS data...
...
[continues through all 15 modules]
──────────────── RISK ANALYSIS SUMMARY ──────────────────
[HIGH] SS-010 — Missing SPF Record
[HIGH] SS-011 — Missing DMARC Record
[MEDIUM] SS-030 — Missing Content-Security-Policy
...
╭─────────────── SCAN SUMMARY ───────────────────╮
│ Total Issues : 18 │
│ HIGH : 5 │
│ MEDIUM : 9 │
│ LOW : 4 │
╰─────────────────────────────────────────────────╯
✔ Text report : reports/testphp_vulnweb_com_report.txt
✔ PDF report : reports/testphp_vulnweb_com_report.pdf
```
## 所有模块详解
### 模块 1 — 域名信息
**功能:**
将目标域名解析为其 IP 地址,并执行反向 DNS 查找,以找出映射回该 IP 的主机名。
**检测内容:**
- 正向 DNS 解析(域名 → IP)
- 反向 DNS(IP → 主机名)——揭示托管提供商或 CDN
**重要性:**
反向 DNS 可以揭示网站是托管在 AWS、Cloudflare、共享主机还是专用服务器上——为后续的扫描提供有用的上下文。
**触发的发现:**
- `SS-000` — 域名无法解析(高)——扫描无法继续
### 模块 2 — WHOIS / 域名情报
**功能:**
查询 WHOIS 数据库以检索有关该域名的注册信息。
**检测内容:**
- 注册商(GoDaddy、Namecheap 等)
- 组织名称
- 注册国家
- 域名创建日期
- 域名过期日期
- 域名服务器
**重要性:**
近期注册的域名(少于 1 年)是网络钓鱼或欺诈网站的常见指标。过期日期临近今天可能表示该域名已被废弃或无人管理。
**触发的发现:**
- `SS-002` — 近期注册的域名(中)——如果域名年龄少于 365 天
### 模块 3 — DNS 分析
**功能:**
查询域名的 DNS 记录——A 记录(IP 映射)、MX 记录(邮件服务器)和 TXT 记录(SPF、DMARC、验证 token)。
**检测内容:**
- **A 记录:** 哪些 IP 为此域名提供服务
- **MX 记录:** 邮件服务器配置
- **TXT 记录:** SPF 策略、DMARC 策略、Google/Microsoft 验证 token
- **缺失的 SPF:** 没有电子邮件防伪造保护
- **缺失的 DMARC:** 没有强制执行电子邮件身份验证
**重要性:**
缺失 SPF 和 DMARC 记录会允许攻击者发送看起来像来自您域名的电子邮件——这是网络钓鱼攻击的基础。
**触发的发现:**
- `SS-010` — 缺失 SPF 记录(高)
- `SS-011` — 缺失 DMARC 记录(高)
### 模块 4 — SSL/TLS 分析
**功能:**
连接到端口 443 并检索分析 SSL/TLS 证书以及协商的协议版本。
**检测内容:**
- HTTPS 是否完全可用
- 证书通用名称 (CN) —— 颁发给哪个域名
- 证书颁发者 —— 谁签署了它(Let's Encrypt、DigiCert 等)
- 证书是否为自签名
- 距离过期的剩余天数
- 正在使用的 TLS 版本(TLS 1.3、1.2、1.1、1.0、SSLv3)
**重要性:**
过期或自签名的证书会导致用户在浏览器中看到安全警告。脆弱的 TLS 版本(1.0、1.1、SSLv3)存在已知漏洞,能够引发中间人攻击。缺乏 HTTPS 意味着所有流量均为明文。
**触发的发现:**
- `SS-020` — 自签名证书(高)
- `SS-021` — 证书已过期(高)
- `SS-022` — 证书即将过期(中)
- `SS-023` — 脆弱的 TLS 版本(高)
- `SS-024` — SSL 验证失败(高)
- `SS-025` — SSL 配置错误(高)
- `SS-026` — HTTPS 不可用(高)
### 模块 5 — HTTP 安全标头
**功能:**
向域名发出 HTTP/HTTPS 请求,并分析响应标头中是否存在安全标头。
**检查的标头:**
| 标头 | 用途 | 缺失风险 |
|--------|---------|--------------|
| `Content-Security-Policy` | 防止 XSS、数据注入 | 可能发生 XSS 攻击 |
| `Strict-Transport-Security` | 强制使用 HTTPS | 浏览器可能回退到 HTTP |
| `X-Frame-Options` | 防止点击劫持 | 网站可被嵌入到 iframe 中 |
| `X-Content-Type-Options` | 防止 MIME 嗅探 | 可能发生内容类型攻击 |
| `Referrer-Policy` | 控制 referrer 数据 | 数据泄露给第三方 |
| `Permissions-Policy` | 控制浏览器功能访问 | 摄像头/麦克风 API 失控 |
**重要性:**
这些标头是免费添加的,可以防止大量的常见 Web 攻击。缺失标头是实际安全审计中最常见的发现之一。
**触发的发现:**
- `SS-030` 到 `SS-035` —— 每个缺失的标头对应一个中级发现
### 模块 6 — HTTP 方法检查
**功能:**
发送 HTTP OPTIONS 请求,以发现服务器允许哪些 HTTP 方法。
**检查的方法:**
| 方法 | 风险等级 | 危险原因 |
|--------|-----------|---------------|
| GET | 正常 | 标准读取操作 |
| POST | 正常 | 标准表单提交 |
| PUT | 有风险 | 可以上传或覆盖文件 |
| DELETE | 有风险 | 可以删除服务器端资源 |
| TRACE | 有风险 | 可能暴露身份验证标头(XST 攻击) |
| CONNECT | 有风险 | 可以通过服务器创建隧道 |
| PATCH | 有风险 | 可以部分修改服务器资源 |
**重要性:**
如果在没有身份验证的情况下启用了 PUT 或 DELETE,攻击者可能会直接修改或删除 Web 内容。
**触发的发现:**
- `SS-060` — 启用了危险的 HTTP 方法(中)
### 模块 7 — 开放端口扫描(多线程)
**功能:**
使用 Python 线程并行尝试与 13 个常见端口建立 TCP 连接,以实现快速扫描。
**扫描的端口:**
| 端口 | 服务 | 意外开放的风险 |
|------|---------|--------------------------|
| 21 | FTP | 明文传输 —— 高风险 |
| 22 | SSH | 远程访问 —— 监控暴力破解 |
| 23 | Telnet | 明文远程访问 —— 高风险 |
| 25 | SMTP | 邮件中继 —— 检查开放中继 |
| 53 | DNS | DNS 服务器 —— 检查区域传送 |
| 80 | HTTP | Web 服务器 —— 预期之中 |
| 110 | POP3 | 电子邮件检索 |
| 143 | IMAP | 电子邮件访问 |
| 443 | HTTPS | 安全 Web —— 预期之中 |
| 3306 | MySQL | 数据库直接暴露 —— 高风险 |
| 5432 | PostgreSQL | 数据库直接暴露 —— 高风险 |
| 8080 | HTTP-Alt | 备用 Web 端口 |
| 8443 | HTTPS-Alt | 备用安全 Web 端口 |
**重要性:**
面向互联网的服务器上开放的数据库端口(3306、5432)是严重的配置错误——数据库绝对不应直接从互联网访问。Telnet 和 FTP 以明文形式传输凭证。
**触发的发现:**
- 端口的高风险:21 (FTP)、23 (Telnet)、3306 (MySQL)、5432 (PostgreSQL)
- 非标准开放端口的中风险
### 模块 8 — 技术指纹识别
**功能:**
分析 HTTP 响应标头和 HTML 内容,以识别服务器上运行的技术。
**检测到的技术:**
| 类别 | 检测到的技术 |
|----------|----------------------|
| CMS | WordPress、Drupal、Joomla |
| 框架 | Laravel、Django |
| 前端 | React、Angular、Vue.js、jQuery、Bootstrap |
| CDN/WAF | Cloudflare、AWS CloudFront、Fastly |
| Web 服务器 | Nginx、Apache、IIS |
| 语言 | PHP(通过 X-Powered-By) |
**重要性:**
了解网站运行的是 WordPress 5.2 或 PHP 7.1,攻击者就可以查找这些特定版本的已知 CVE。服务器版本披露是直接的攻击推手。
**触发的发现:**
- `SS-080` — 服务器版本已披露(中)
- `SS-081` — X-Powered-By 已暴露(中)
### 模块 9 — 文件与目录发现
**功能:**
通过发出 HTTP 请求并检查响应代码,来检查常见敏感文件和目录的存在。
**检查的文件:**
| 文件/路径 | 敏感原因 |
|-----------|--------------|
| `/robots.txt` | 可能暴露隐藏的路径和目录 |
| `/sitemap.xml` | 列出所有站点 URL |
| `/admin` | 管理后台 —— 不应公开访问 |
| `/login` | 登录页面发现 |
| `/backup` | 备份文件可能包含源代码或数据 |
| `/test` | 测试页面通常启用了调试信息 |
| `/.env` | **严重** —— 包含 API key、数据库密码 |
| `/.git/config` | **严重** —— 暴露源代码仓库 |
| `/wp-admin` | WordPress 管理面板 |
| `/phpinfo.php` | 完整的服务器配置披露 |
| `/config.php` | 应用程序配置 |
**重要性:**
暴露的 `.env` 文件可能包含数据库密码、API key 和 secret token —— 实际上是向攻击者交出了完整的系统访问权限。这是现实环境中最严重的配置错误之一。
**触发的发现:**
- 敏感路径(`.env`、`.git`、`phpinfo.php`)的高严重性
- 信息性路径(`robots.txt`、`sitemap.xml`)的低严重性
### 模块 10 — 子域名枚举
**功能:**
通过使用线程池并行尝试对每一个进行 DNS 查找,来尝试解析 14 个常见的子域名。
**检查的子域名:**
`www`、`mail`、`api`、`dev`、`staging`、`beta`、`ftp`、`vpn`、`admin`、`portal`、`app`、`test`、`secure`、`cdn`
**重要性:**
开发和测试子域名(`dev.`、`staging.`、`beta.`)的安全控制通常比生产环境更弱——有时甚至开启了调试模式、使用了默认凭证或完全没有身份验证。每一个被发现的子域名都扩大了攻击面。
**触发的发现:**
- `SS-100` — 发现活跃子域名(低)
### 模块 11 — 网络路由跟踪
**功能:**
运行系统 traceroute(在 Linux/macOS 上为 `traceroute`,在 Windows 上为 `tracert`)以映射从您的机器到目标服务器的网络路径——最多 10 个跃点。
**揭示内容:**
- 到目标有多少个网络跃点
- 是否有 CDN(Cloudflare、Akamai)位于真实服务器之前
- 沿途的 ISP 基础设施
- 地理路由模式
**自动跳过行为:**
如果 traceroute 未能在 **15 秒**内完成,它将自动跳过并继续扫描。这可以防止在阻止 ICMP 的防火墙网络上挂起。
**重要性:**
如果网站声称使用 Cloudflare,但 traceroute 显示直接连接到了原始 IP,则可能暴露了源站服务器——完全绕过了 WAF 保护。
### 模块 12 — 数字足迹分析
**功能:**
抓取主页 HTML 并执行深度分析以提取 OSINT(开源情报)数据。
**提取内容:**
| 数据 | 发现方式 | 重要原因 |
|------|-----------|--------------|
| 电子邮件地址 | 对 HTML 使用正则表达式 | 钓鱼/垃圾邮件目标 |
| 社交媒体链接 | 域名匹配 | 确认组织身份 |
| 外部域名 | `href` 属性解析 | 第三方依赖 |
| API endpoint | 路径模式匹配(`/api/`、`/v1/`、`/graphql`) | 未经身份验证的 API 暴露 |
| 统计分析追踪器 | Script src 匹配 | 隐私/追踪披露 |
| HTML 注释 | `` 提取 | 开发者备注、内部路径 |
**检测到的社交平台:** LinkedIn、Twitter/X、Facebook、Instagram、YouTube、GitHub、TikTok
**检测到的统计分析:** Google Analytics、Google Tag Manager、Hotjar、Facebook Pixel、Mixpanel
**触发的发现:**
- `SS-120` — 电子邮件地址已暴露(中)
- `SS-121` — 检测到 API endpoint(中)
- `SS-122` — 发现 HTML 注释(低)
### 模块 13 — Cookie 安全性分析
**功能:**
读取服务器设置的所有 cookie,并检查每个 cookie 是否具有正确的安全属性。
**检查的属性:**
| 标志 | 用途 | 缺失风险 |
|------|---------|----------------|
| `Secure` | 仅通过 HTTPS 发送 | Cookie 通过 HTTP 发送 —— 可能被拦截 |
| `HttpOnly` | 无法被 JavaScript 读取 | 容易受到基于 XSS 的 cookie 盗窃 |
| `SameSite` | 控制跨站发送 | 可能发生 CSRF 攻击 |
**重要性:**
没有 `Secure` 标志的会话 cookie 可能会被网络窃听者盗取。没有 `HttpOnly`,单个 XSS 漏洞就可能导致完整的会话被劫持。
**触发的发现:**
- `SS-130` — 不安全的 Cookie(中)—— 针对每个缺失 Secure 标志的 cookie
### 模块 14 — CORS 策略检查
**功能:**
发送带有伪造的 `Origin: https://attacker-test.com` 标头的请求,并检查服务器在其 CORS(跨源资源共享)标头中的响应方式。
**检测内容:**
| 响应 | 风险等级 | 含义 |
|----------|-----------|---------|
| `Access-Control-Allow-Origin: *` | 高 | 任何网站都可以发起跨站请求 |
| `Access-Control-Allow-Origin: https://attacker-test.com` | 高 | 服务器反射了任意来源 —— CORS 配置错误 |
| 特定的受信任来源 | 安全 | 配置正确 |
| 未设置 | 安全 | 禁用了 CORS —— 无跨源访问 |
**重要性:**
如果处理经过身份验证请求的 API 使用了通配符 CORS 策略,将允许恶意网站代表已登录用户发出请求并窃取其数据。
**触发的发现:**
- `SS-140` — 通配符 CORS 策略(高)
- `SS-141` — 反射来源 CORS(高)
### 模块 15 — 信息泄露检测
**功能:**
探测 Web 服务器上通常意外暴露的 10 个敏感文件。
**探测的文件:**
| 文件 | 包含内容 | 严重性 |
|------|-----------------|---------|
| `.env` | API key、数据库密码、密钥 | 高 |
| `.git/config` | Git 仓库配置 | 高 |
| `.htaccess` | Apache Web 服务器规则 | 高 |
| `backup.zip` | 完整的站点备份 | 高 |
| `backup.sql` | 完整的数据库转储 | 高 |
| `database.sql` | 数据库转储 | 高 |
| `config.bak` | 配置备份 | 高 |
| `web.config` | IIS 服务器配置 | 高 |
| `composer.json` | 带有版本的 PHP 依赖列表 | 中 |
| `package.json` | 带有版本的 Node.js 依赖列表 | 中 |
**重要性:**
暴露的 `.env` 文件是现实环境中最严重的发现之一。它直接提供数据库凭证、第三方 API key 和应用程序 secret,从而赋予完整的系统访问权限。
**所有触发的发现:** 每个暴露文件对应高严重性
## 解读输出结果
### 严重性级别
| 颜色 | 严重性 | 含义 | 行动 |
|-------|---------|---------|--------|
| 🔴 红色 | 高 | 严重的安全风险 | 立即修复 |
| 🟡 黄色 | 中 | 重大风险 | 30 天内修复 |
| 🟢 绿色 | 低 | 轻微 / 信息性 | 在维护期间修复 |
### 发现 ID 格式
```
SS-XXX
│ └── 3-digit number identifying the specific check
└── ShadowScan prefix
```
示例:`SS-026` = ShadowScan 发现 #026 = HTTPS 不可用
## 风险评分系统
在所有模块完成后,ShadowScan Pro 会计算三个分数:
### 安全评分 (0–100)
分数越高 = 越安全
```
100 - (HIGH findings × 15) - (MEDIUM findings × 7) - (LOW findings × 2)
```
| 分数 | 解读 |
|-------|---------------|
| 80–100 | 安全态势良好 |
| 60–79 | 平均水平 —— 需要改进 |
| 40–59 | 较差 —— 存在重大问题 |
| 0–39 | 严重 —— 需要立即采取行动 |
### 暴露评分 (0–100)
分数越高 = 越容易暴露给攻击者
```
(HIGH findings × 10) + (open ports × 5) + (exposed files × 15) + (subdomains × 2)
```
| 分数 | 解读 |
|-------|---------------|
| 0–20 | 极小暴露 |
| 21–40 | 中度暴露 |
| 41–60 | 高度暴露 |
| 61–100 | 严重暴露 |
### 信任评分 (0–100)
分数越高 = 越值得信赖
基于正面信号构建:存在 HTTPS (+15)、有效证书 (+10)、网站上有邮件 (+5)、存在社交媒体 (+5),减去针对高/中级发现的扣分。
| 分数 | 解读 |
|-------|---------------|
| 70–100 | 高信任度 |
| 50–69 | 中等信任度 |
| 30–49 | 低信任度 |
| 0–29 | 极低信任度 |
## 生成的报告
两份报告都会自动保存在 `reports/` 目录中。
### 文本报告 (`reports/domain_report.txt`)
纯文本 —— 可在任何终端或文本编辑器中阅读。
**部分:**
1. 执行摘要(目标、日期、发现总数、评分)
2. 扫描范围(所有运行的模块)
3. 详细发现(包含完整细节的每项发现)
4. 数字足迹(邮件、社交媒体、API、统计分析)
5. 风险评分
6. 技术细节(原始扫描数据)
7. 结论
### PDF 报告 (`reports/domain_report.pdf`)
专业且格式化的 PDF,适合作为安全评估报告提交。
**结构:**
1. **封面** —— 目标、日期、IP、严重性摘要框、评分框
2. **执行摘要** —— 带有彩色严重性计数的叙述性概述
3. **扫描范围** —— 列出所有 15 个模块
4. **详细发现** —— 每项发现都在格式化的卡片中,显示 ID、标题、严重性、描述、影响和建议
5. **数字足迹** —— OSINT 数据表
6. **风险评分** —— 带有解读的评分表
7. **技术细节** —— 等宽字体的原始扫描数据
8. **结论** —— 修复优先级指导
## 合法实践目标
使用这些**故意存在漏洞**且**经过授权**的目标来练习使用 ShadowScan Pro:
###意存在漏洞的 Web 应用(可合法扫描)
| 目标 | URL | 您将发现的内容 |
|--------|-----|-----------------|
| **ACME Corp (Vulnweb)** | `testphp.vulnweb.com` | 缺失标头、开放端口、信息泄露 |
| **Vulnweb ASP** | `testasp.vulnweb.com` | Windows IIS 标头、ASP.NET 暴露 |
| **Vulnweb HTML5** | `testhtml5.vulnweb.com` | 存在各种配置错误的 HTML5 应用 |
| **DVWA** | `dvwa.co.uk` | 故意存在漏洞的 Web 应用 |
| **HackTheBox** | `hackthebox.com` | 运行他们的 VPN 实验室靶机 |
| **TryHackMe** | `tryhackme.com` | 部署他们的漏洞机器 |
| **PortSwigger Labs** | `portswigger.net/web-security` | Web 安全实验室环境 |
### 您自己的测试环境
最佳实践 —— 启动一个本地存在漏洞的 VM:
```
# 使用 Docker 的 DVWA
docker run -d -p 80:80 vulnerables/web-dvwa
# 然后扫描您的本地实例
python3 shadowscan_pro.py localhost
python3 shadowscan_pro.py 127.0.0.1
```
### 为安全测试提供的公共测试域名
| 域名 | 备注 |
|--------|-------|
| `scanme.nmap.org` | 由 Nmap 团队正式授权进行扫描 |
| `testphp.vulnweb.com` | Acunetix 的测试 PHP 站点 —— 授权扫描 |
| `testasp.vulnweb.com` | Acunetix 的测试 ASP 站点 —— 授权扫描 |
## 发现 ID 参考
| ID 范围 | 模块 |
|----------|--------|
| SS-000 | 域名解析 |
| SS-002 | WHOIS 情报 |
| SS-010–011 | DNS / SPF / DMARC |
| SS-020–026 | SSL/TLS |
| SS-030–035 | HTTP 安全标头 |
| SS-060 | HTTP 方法 |
| SS-07x | 端口扫描 |
| SS-080–081 | 技术检测 |
| SS-09x | 文件发现 |
| SS-100 | 子域名枚举 |
| SS-120–122 | 数字足迹 |
| SS-130 | Cookie 安全 |
| SS-140–141 | CORS 策略 |
| SS-15x | 信息泄露 |
## 故障排除
### `ModuleNotFoundError: No module named 'dns'`
```
pip install dnspython
```
### `ModuleNotFoundError: No module named 'whois'`
```
pip install python-whois
```
### `error: externally-managed-environment` (Kali Linux 2024+)
```
pip install requests dnspython rich reportlab python-whois --break-system-packages
```
### Traceroute 显示 `⚠ Not available on this system`
```
# 安装它
sudo apt install traceroute # Linux
brew install traceroute # macOS
# Windows 使用 tracert — 内置,无需安装
```
### SSL 检查在所有域名上均失败
您的系统的 CA 证书存储库可能已过时:
```
sudo apt update && sudo apt install ca-certificates
pip install --upgrade certifi
```
### 端口扫描显示一切都是 CLOSED
某些防火墙或 VPN 会阻止出站连接。请尝试:
- 暂时禁用 VPN
- 更换网络运行
- 检查出站 TCP 是否受到限制
### WHOIS 对所有内容返回 `N/A`
某些 TLD(`.io`、`.ai`、较新的 gTLD)限制了 WHOIS。这是正常的。
### 未生成 PDF / reportlab 错误
```
pip install --upgrade reportlab
```
## 项目结构
```
shadowscan-pro/
│
├── shadowscan_pro.py ← Main tool (single file)
│
├── reports/ ← Auto-created on first scan
│ ├── example_com_report.txt
│ └── example_com_report.pdf
│
└── README.md ← This file
```
该工具被刻意设计为**单一的 Python 文件**——没有复杂的项目结构,也不需要配置文件。只需一个文件和 pip 依赖即可。
## 完整扫描逐步预览
```
1. Input: python3 shadowscan_pro.py testphp.vulnweb.com
2. Banner + ethical warning displayed
3. [1] Domain → Resolves IP, reverse DNS
4. [2] WHOIS → Registrar, age, org info
5. [3] DNS → A/MX/TXT records, SPF/DMARC check
6. [4] SSL → Certificate details, expiry, TLS version
7. [5] Headers → 6 security headers checked
8. [6] Methods → OPTIONS request, risky methods flagged
9. [7] Ports → 13 ports scanned in parallel threads
10. [8] Tech → CMS, server, CDN, framework detection
11. [9] Files → 10 sensitive paths probed
12. [10] Subdomains → 14 subdomains resolved in parallel
13. [11] Traceroute → Network hops mapped (auto-skips at 15s)
14. [12] Footprint → Emails, social, APIs, analytics extracted
15. [13] Cookies → Security flags per cookie
16. [14] CORS → Origin reflection test
17. [15] Leaks → .env/.git/backup files probed
18. Scoring → Security / Exposure / Trust scores calculated
19. Summary → All findings listed with severity
20. Reports → TXT + PDF generated in reports/
```
总扫描时间:通常为 **30–90 秒**,具体取决于网络速度和 traceroute 响应。
## 版本历史
| 版本 | 变更 |
|---------|---------|
| v1.0 | 基础域名、DNS、SSL、标头、端口 |
| v2.0 | 添加了 WHOIS、多线程、富文本输出、PDF 报告 |
| v3.0 Pro | 添加了 HTTP 方法、技术指纹识别、数字足迹、cookie、CORS、信息泄露、traceroute、3 评分风险引擎、扩展的端口列表、14 个子域名 |
## 许可证
本项目仅出于**教育和授权测试目的**发布。
- ✅ 您可以在自己拥有或获得授权测试的系统上使用此工具
- ✅ 您可以出于学习目的对其进行修改和扩展
- ❌ 您不得将此工具用于未经授权的扫描
- ❌ 您不得将此工具用于任何非法活动
## 免责声明
标签:ESC4, GitHub, OSINT, Python, 实时处理, 无后门, 逆向工具