X3r0Day/X3r0Day-Specter
GitHub: X3r0Day/X3r0Day-Specter
一款基于异步 Python 的子域名枚举与 TCP 端口扫描一体化侦察工具,帮助安全人员快速完成攻击面发现与资产梳理。
Stars: 0 | Forks: 0
# X3r0Day-Specter
子域名枚举与 TCP 端口扫描。
[](https://x3r0day.me)
[](https://python.org)
[](LICENSE)
```
_____ ____ ___ __ ______ ___ ____
/ ___/| \ / _] / ] | / _]| \
( \_ | o ) [_ / /| | / [_ | D )
\__ || _/ _]/ / |_| |_|| _]| /
/ \ || | | [_/ \_ | | | [_ | \
\ || | | \ | | | | || . \
\___||__| |_____|\____| |__| |_____||__|\_|
```
## 安装
```
pipx install .
```
从 GitHub 安装:
```
pipx install git+https://github.com/x3r0day/x3r0day-specter.git
```
### Arch Linux
使用以下命令安装:
```
yay -S specter
```
或者安装 VCS 包:
```
yay -S specter-git
```
### 免安装使用
```
python3 -m pip install rich
python3 -m specter --help
python3 main.py --help
```
## 快速开始
```
# Subdomain 枚举
specter subdomain example.com
# 通过 brute force 进行 Subdomain 枚举
specter subdomain example.com -b
# 保存 subdomain 报告
specter subdomain example.com -o subdomains.html
# Port 扫描
specter scanme.nmap.org
# Specific 端口
specter target.com -p 22,80,443
```
## 命令
| 命令 | 描述 |
|---------|-------------|
| `specter subdomain ` | 枚举子域名 |
| `specter scan ` | TCP 端口扫描 |
| `specter ` | 默认:TCP 端口扫描 |
| `python3 -m specter ` | 仓库本地模块入口 |
| `python3 main.py ` | 向后兼容的本地垫片 |
## 子域名枚举
### 示例
```
# Passive 枚举
specter subdomain example.com
# 使用 brute force
specter subdomain example.com -b
# 自定义 wordlist
specter subdomain example.com -b -w words.txt
# 添加 Shodan
specter subdomain example.com -K "$SHODAN_KEY"
# 跳过 web 端口检查
specter subdomain example.com -N
# 跳过页面抓取
specter subdomain example.com -W
# 保存报告
specter subdomain example.com -o subdomains.html
```
### 工作流程
1. 并发从被动源获取候选目标
2. 去重,并记录每个子域名的来源
3. 可选的暴力破解前缀
4. 解析为 IP
5. 检查常见的 Web 端口
6. 从有响应的主机中抓取标题、服务器和技术信息
### 被动来源
| 来源 | 默认启用 | 备注 |
|--------|---------|-------|
| `crt.sh` | 是 | 证书透明度日志 |
| `hackertarget` | 是 | 主机搜索 API |
| `alienvault` | 是 | OTX 被动 DNS |
| `urlscan` | 是 | 已索引的域名 |
| `rapiddns` | 是 | DNS 数据 |
| `shodan` | 否 | 使用 `-K` 添加 |
| `bruteforce` | 否 | 使用 `-b` 添加 |
### 参数
#### 位置参数
| 参数 | 类型 | 描述 |
|-----|------|-------------|
| `domain` | 字符串 | 目标域名(例如 `example.com`) |
#### 发现
| 短选项 | 长选项 | 类型 | 默认值 | 描述 |
|-------|------|------|---------|-------------|
| `-K` | `--shodan-key` | 字符串 | - | Shodan API 密钥 |
| `-b` | `--brute` | 标志 | - | 暴力破解前缀 |
| `-w` | `--wordlist` | 路径 | - | 自定义字典 |
| `-N` | `--no-port-scan` | 标志 | - | 跳过 Web 端口检查 |
| `-W` | `--no-scrape` | 标志 | - | 跳过页面抓取 |
#### 性能与输出
| 短选项 | 长选项 | 类型 | 默认值 | 描述 |
|-------|------|------|---------|-------------|
| `-c` | `--resolve-concurrency` | 整数 | 200 | 并发 DNS 查询数 |
| `-C` | `--scan-concurrency` | 整数 | 30 | 并发端口扫描数 |
| `-t` | `--http-timeout` | 浮点数 | 8.0 | HTTP 超时时间(秒) |
| `-o` | `--out` | 路径 | - | 输出文件 |
| `-v` | - | 标志 | - | 详细输出 |
| `-q` | `--quiet` | 标志 | - | 隐藏进度 |
### JSON 输出
```
{
"domain": "example.com",
"subdomains": [
{
"subdomain": "www.example.com",
"ip": "192.168.1.1",
"sources": ["crt.sh", "urlscan"],
"ports": [80, 443],
"status": 200,
"title": "Example Domain",
"server": "ECS",
"tech": [],
"elapsed": 0.812,
"err": null
}
],
"total_found": 12,
"total_resolved": 8,
"started": "2026-03-24T10:30:00Z",
"finished": "2026-03-24T10:30:04Z",
"elapsed": 4.219,
"errors": []
}
```
## TCP 端口扫描
### 示例
```
# 基本扫描(默认:top 1000 端口)
specter scanme.nmap.org
# Specific 端口
specter target.com -p 22,80,443,8080
# Top 100 端口
specter target.com -P 100
# 所有端口
specter target.com -a
# Stealth 模式
specter target.com --stealth
# SYN 扫描(需要 root)
specter target.com --syn-scan
# Aggressive 服务检测
specter target.com -S -U
# 保存报告
specter target.com -o results.html
```
### 行为
- 解析主机名,扫描 TCP 端口,探测服务
- 基本模式:HTTP 提示,SSH 横幅,TLS 证书数据
- `-S` 使用 nmap 进行更深入的服务检测
- `--stealth` 降低噪音和并发
- `--syn-scan` 发送原始 SYN 数据包(需要 root 权限)
### 参数
#### 位置参数
| 参数 | 类型 | 描述 |
|-----|------|-------------|
| `target` | 字符串 | 要扫描的主机名或 IP |
#### 端口选择
| 短选项 | 长选项 | 类型 | 默认值 | 描述 |
|-------|------|------|---------|-------------|
| `-p` | `--ports` | 字符串 | - | 特定端口:`22,80,443` 或范围 `1-1024` |
| `-P` | `--top-ports` | 整数 | 1000 | 扫描前 N 个常用端口 |
| `-a` | `--all-ports` | 标志 | - | 扫描全部 65535 个端口 |
#### 扫描与服务检测
| 短选项 | 长选项 | 类型 | 默认值 | 描述 |
|-------|------|------|---------|-------------|
| `-c` | `--concurrency` | 整数 | 1000 | 并发连接数 |
| `-t` | `--timeout` | 浮点数 | 1.5 | 连接超时(秒) |
| `-C` | `--svc-concurrency` | 整数 | 20 | 并发服务探测数 |
| `-S` | `--aggr-svc-scan` | 标志 | - | 使用 nmap 进行服务检测 |
| `-M` | `--nmap-args` | 字符串 | `-sV --open` | nmap 参数 |
| `-U` | `--sudo-nmap` | 标志 | - | 使用 sudo 运行 nmap |
| `-N` | `--no-svc-scan` | 标志 | - | 跳过服务检测 |
| - | `--stealth` | 标志 | - | 低噪音模式 |
| - | `--syn-scan` | 标志 | - | 原始 SYN 扫描(需要 root 权限) |
#### 输出
| 短选项 | 长选项 | 类型 | 默认值 | 描述 |
|-------|------|------|---------|-------------|
| `-o` | `--out` | 路径 | - | 输出文件 |
| `-v` | - | 标志 | - | 详细输出;`-vv` 用于原始输出 |
| `-q` | `--quiet` | 标志 | - | 隐藏进度 |
### JSON 输出
```
{
"target": "scanme.nmap.org",
"ip": "192.168.1.0",
"req_ports": [1, 2, 3],
"open_ports": [22, 80, 9929],
"svcs": [
{
"port": 22,
"ok": true,
"state": "open",
"svc": "ssh",
"info": "Banner: SSH-2.0-OpenSSH_9.7",
"elapsed": 0.023,
"n_cmd": "light ssh probe",
"raw": "SSH-2.0-OpenSSH_9.7",
"err": null
}
],
"started": "2026-03-24T10:30:00Z",
"finished": "2026-03-24T10:30:02Z",
"elapsed": 2.345,
"errors": []
}
```
## 依赖要求
- Python 3.10+
- `pipx`,用于推荐的全局安装路径
- Rich,用于手动在本地仓库中执行
- Nmap(可选,用于激进模式)
`--syn-scan` 需要 root 权限。使用 nmap 时,`--sudo-nmap` 会提示输入 sudo 密码。
## 项目结构
```
x3r0day-specter/
├── pyproject.toml
├── main.py
├── packaging/
│ └── aur/
│ ├── LICENSE
│ ├── README.md
│ ├── specter/
│ │ ├── PKGBUILD
│ │ └── .SRCINFO
│ └── specter-git/
│ ├── PKGBUILD
│ └── .SRCINFO
├── specter/
│ ├── scanner/
│ │ ├── port_scan.py
│ │ └── subdomain.py
│ └── core/
│ └── results.py
├── PLAN.md
└── README.md
```
## 链接
- [GitHub](https://github.com/x3r0day/x3r0day-specter)
- [网站](https://x3r0day.me)
MIT 许可证。详见 [LICENSE](LICENSE)。
标签:CTI, GitHub, Python, TCP扫描, Windows内核, 云存储安全, 侦察工具, 子域名枚举, 密码管理, 异步编程, 插件系统, 攻击路径可视化, 数据统计, 无后门, 爆破枚举, 白帽子, 端口扫描, 系统安全, 网络安全, 网络扫描, 计算机取证, 逆向工具, 隐私保护, 黑客工具