D0m0x61/ShadowMap
GitHub: D0m0x61/ShadowMap
一款纯被动的基础设施测绘与威胁情报 CLI 工具,通过整合多源公开数据实现域名/IP 资产发现、CVE 优先级评估和凭据泄露检测。
Stars: 0 | Forks: 0
# ShadowMap
被动基础设施测绘、CVE 优先级排序和威胁情报,仅需一个域名或 IP。
给定一个目标,ShadowMap 会测绘其基础设施,分析 DNS 和证书,通过 Shodan 识别暴露的服务,使用三个独立来源对漏洞进行评分,检查 IP 信誉,并在公共代码库中查找凭据泄露 —— 所有这些都无需向目标发送任何数据包。
HTML 报告包含一个交互式基础设施关系图,展示了域名、子域名、IP、ASN、关联证书和关键 CVE 之间的关系。



## 模块
| 模块 | 功能 | 数据源 | API key |
|---|---|---|---|
| `whois` | WHOIS 注册数据 + DNS 记录 | python-whois, dnspython | — |
| `subdomains` | 被动子域名枚举 | crt.sh, HackerTarget | — |
| `ip` | 地理位置定位, ASN, 上游对等 | IPInfo | 可选 |
| `certs` | TLS 证书历史和关联域名 | crt.sh | — |
| `shodan` | 开放端口, banners, 检测到的 CVE | Shodan API | 免费 |
| `cves` | 综合漏洞评分 | NVD, FIRST.org, CISA | — |
| `reputation` | 滥用置信度评分, TOR 节点检测 | AbuseIPDB | 免费 |
| `leaks` | 公共仓库中的凭据和机密 | GitHub Search | 可选 |
## 安装说明
### 前置条件
- Python 3.9 或更高版本
- Git
### macOS
```
# 如果没有安装 Homebrew 请先安装
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
brew install python git
git clone https://github.com/D0m0x61/ShadowMap.git
cd ShadowMap
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
pip install -e .
cp .env.example .env
nano .env # or: open -e .env to open in TextEdit
```
### Linux (Debian / Ubuntu)
```
sudo apt update
sudo apt install python3 python3-pip python3-venv git -y
git clone https://github.com/D0m0x61/ShadowMap.git
cd ShadowMap
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
pip install -e .
cp .env.example .env
nano .env # or vim, gedit — whatever you prefer
```
**其他发行版:** 将 `apt` 替换为您的包管理器(`dnf`, `pacman`, `zypper`)。Python 3.9+ 包含在所有主要发行版的标准软件源中。
### Windows
提供两种选项。如果您打算经常使用此工具,推荐使用 WSL —— 它为您提供一个真正的 Linux 环境而无需双系统。
#### 选项 A — WSL (推荐)
1. 以管理员身份打开 PowerShell:
wsl --install
2. 重启。Windows 默认安装 Ubuntu。
3. 从开始菜单打开 **Ubuntu** 应用,并按照上面的 Linux 说明操作。
#### 选项 B — 原生 Windows
1. 从 https://www.python.org/downloads/ 下载 Python —— 安装时勾选 **"Add Python to PATH"**
2. 从 https://git-scm.com/download/win 下载 Git
然后打开 **命令提示符** 或 **PowerShell**:
```
git clone https://github.com/D0m0x61/ShadowMap.git
cd ShadowMap
python -m venv venv
venv\Scripts\activate
pip install -r requirements.txt
pip install -e .
copy .env.example .env
notepad .env
```
## API Keys
四个可选密钥可解锁额外模块。它们都提供免费层级。
| 变量 | 模块 | 免费限制 | 获取地址 |
|---|---|---|---|
| `SHODAN_API_KEY` | shodan | 1 次请求/秒 | [account.shodan.io](https://account.shodan.io/register) |
| `ABUSEIPDB_API_KEY` | reputation | 1,000 次检查/天 | [abuseipdb.com](https://www.abuseipdb.com/register) |
| `GITHUB_TOKEN` | leaks | 30 次请求/分钟 | [github.com/settings/tokens](https://github.com/settings/tokens) |
| `IPINFO_TOKEN` | ip | 50,000 次请求/月 | [ipinfo.io](https://ipinfo.io/signup) |
这些完全不需要密钥:crt.sh · HackerTarget · NVD · EPSS · CISA KEV
各密钥的详细步骤说明:[docs/api_keys.md](docs/api_keys.md)
## 使用方法
```
# 首先激活 virtual environment (每个新 terminal session 都必须执行)
source venv/bin/activate # macOS / Linux
venv\Scripts\activate # Windows
# full scan
shadowmap example.com
# 仅运行特定模块
shadowmap example.com --modules whois subdomains certs ip
# 直接扫描 IP
shadowmap 203.0.113.42 --modules whois ip shodan reputation cves
# 跳过需要 API keys 的模块
shadowmap example.com --no-shodan --no-leaks
# 选择输出格式和目录
shadowmap example.com --format json --output ~/Desktop/reports
shadowmap --help
```
报告默认生成在 `./reports/` 目录中:
```
reports/
├── report_example_com_20241201_143022.html
└── report_example_com_20241201_143022.json
```
打开 HTML 报告:macOS 上使用 `open reports/*.html`,或者在 Windows/Linux 上双击文件。
## CVE 评分
每个 CVE 都会获得一个综合评分,该评分结合了三个独立信号:
```
score = (CVSS/10 × 0.4) + (EPSS × 0.4) + (0.2 if in CISA KEV)
```
- **CVSS** (NVD) — 漏洞的固有严重程度
- **EPSS** (FIRST.org) — 未来 30 天内被利用的概率
- **CISA KEV** — 已在野外被积极利用(二进制加成)
优先级阈值:`CRITICAL` ≥ 0.7 · `HIGH` ≥ 0.5 · `MEDIUM` ≥ 0.3 · `LOW` < 0.3
## 项目结构
```
shadowmap/
├── modules/
│ ├── dns.py WHOIS + DNS records
│ ├── subdomains.py passive enumeration (crt.sh, HackerTarget)
│ ├── ip_enrichment.py geolocation + ASN (IPInfo)
│ ├── certificates.py TLS certificate pivot (crt.sh)
│ ├── shodan.py ports, services, CVEs (Shodan API)
│ ├── cve.py CVSS + EPSS + CISA KEV scoring
│ ├── reputation.py IP abuse score (AbuseIPDB)
│ └── leaks.py credential leak search (GitHub)
├── output/
│ ├── html.py self-contained dark-theme HTML report with D3.js graph
│ └── json.py structured JSON report
└── utils/
├── http_client.py shared session with automatic retry
├── rate_limiter.py per-API request spacing
├── logger.py logger factory
└── validators.py input normalization and type detection
```
每个模块均可独立导入 —— 无需 CLI。程序化用法请参见 `examples/`。
## 运行测试
```
pytest tests/ -v
```
## 法律声明
本工具仅查询公开的、已索引的数据。不会向目标系统发送任何数据包。您需自行负责遵守适用法律及各 API 提供商的服务条款。
## 许可证
MIT — 详见 [LICENSE](LICENSE)。
标签:ASN分析, CVE分析, EPSS评分, ESC4, GitHub, GitHub机密检测, IP信誉检测, OSINT, Python, SSL证书分析, 域名调查, 基础设施映射, 威胁情报, 子域名枚举, 安全工具库, 实时处理, 密码管理, 开发者工具, 数据统计, 无后门, 漏洞优先级评估, 端口扫描, 系统安全, 网络安全, 被动侦察, 资产测绘, 逆向工具, 隐私保护