rk103-fr4/spider-noir
GitHub: rk103-fr4/spider-noir
Spider Noir 是一款将 subfinder、katana 和 ffuf 串联成统一流水线并将结果可视化为交互式 SVG 知识图谱的 Web 渗透测试侦察工具。
Stars: 1 | Forks: 2
# 🕷 Spider Noir
**专为 Web 渗透测试设计的侦察 pipeline,将子域名枚举、爬虫和 fuzzing 统一整合为一个交互式 SVG 知识图谱。**
专为 Parrot OS / Kali Linux 打造。针对 HTB 和 Bug Bounty 工作流设计。
```
Subfinder ► Katana Crawler ► ffuf Fuzzer ► SVG Graph
```
## 功能介绍
Spider Noir 将三种侦察工具串联成一个单一的 pipeline,并将结果可视化为带有操作面板的分层图谱:
- **阶段 0 — Subfinder**:带有关键词过滤和限制的被动子域名枚举
- **阶段 1 — Katana**:遵循 HTML/JS 链接的自主爬虫
- **阶段 2 — ffuf**:使用独立字典进行目录和文件 fuzzing
- **阶段 3 — SVG 图谱**:包含交互式节点、提示框以及可生成可直接粘贴命令的操作面板的独立 HTML
该图谱可一目了然地显示目标结构:存在哪些路径、每个 endpoint 运行什么技术、表单暴露在何处,以及 ffuf 发现了哪些隐藏内容。点击任意节点即可将上下文攻击命令(nmap、nuclei、sqlmap、gobuster 等)复制到剪贴板。
## 特性
- **HackerOne CSV / Burp JSON 导入** — 直接从导出的文件加载 scope
- **测试者配置** — 自定义 HTTP 头 (X-HackerOne-Research)、速率限制、无表单模式
- **智能 BB 与 HTB 检测** — subfinder 结果会自动使用直接 URL (Bug Bounty) 或 Host 头 (HTB)
- **WAF/CDN 检测** — 连续出现 20 次 403 或停滞 45 秒后中止爬取
- **时间预估** — 在启动 ffuf 前显示 ETA,允许跳过或按 Ctrl+C 获取部分图谱
- **节点预算** — 可配置限制,并按 scope 分配(子域名配额为主站的 2 倍)
- **URL 去重** — 处理前对 Katana 结果进行去重
- **技术检测** — 通过 header 和 URL 识别 PHP、ASP.NET、Java、Python、Node.js、nginx、Apache
- **表单检测** — 高亮显示具有输入字段的节点(登录表单、搜索框、上传表单)
- **可拖拽节点** — 拖动任意节点重新排列图谱布局
- **图谱零依赖** — SVG+JS 输出可通过 `file:///` 运行,无需互联网或本地服务器
## 安装说明
### 前置条件
| 工具 | 用途 | 安装 |
|------|---------|---------|
| Python 3.10+ | 运行环境 | Parrot/Kali 默认预装 |
| katana | Web 爬虫 | `go install github.com/projectdiscovery/katana/cmd/katana@latest` |
| ffuf | Web 模糊测试工具 | `apt install ffuf` 或 `go install github.com/ffuf/ffuf/v2@latest` |
| subfinder | 子域名枚举(可选) | [下载二进制文件](https://github.com/projectdiscovery/subfinder/releases) |
| pyvis | 图谱数据结构 | `pip install pyvis` |
| rich | 终端 UI | `pip install rich` |
### 快速开始
```
git clone https://github.com/rk103-fr4/spider-noir.git
cd spider-noir
# 安装 Python deps
pip install pyvis rich --break-system-packages
# 安装 subfinder(可选,用于 Bug Bounty)
wget https://github.com/projectdiscovery/subfinder/releases/download/v2.14.0/subfinder_2.14.0_linux_amd64.zip
unzip subfinder_2.14.0_linux_amd64.zip && sudo mv subfinder /usr/local/bin/
# 运行
python3 spider_noir.py
```
或使用安装脚本:
```
chmod +x install.sh && ./install.sh
```
## 运行说明
### HTB(简单靶机)
```
Target : http://10.129.40.184
Subfinder : No
Rate limit : 0 (no limit)
Wordlist : /usr/share/wordlists/dirb/common.txt
Auto-calib : Yes
Extensions : .php
Node limit : 150
```
### Bug Bounty(企业目标)
```
Headers : X-HackerOne-Research: your-username
Rate limit : 10 req/s
Scope file : ~/Downloads/program_scope.csv
Subfinder : Yes (keywords: admin,api,dev,test)
Wordlist : /usr/share/wordlists/dirb/common.txt
Auto-calib : No (WAF interference)
No forms : Yes (if program prohibits)
Node limit : 300
```
## 图谱图例
| 符号 | 颜色 | 含义 |
|--------|-------|---------|
| ★ | 金色 | 根目标 (seed) |
| ⬡ | 紫色 | VHOST / Subfinder 子域名 |
| ● | 蓝色 | Katana 可见的 URL |
| ▲ | 橙色 | ffuf 发现 (200/301) |
| ▲ | 红色 | ffuf 发现 (403 Forbidden) |
| ◆ | 可变 | 检测到表单的路径 |
节点颜色反映了检测到的技术(PHP = 紫蓝色,Java = 橙色,Node.js = 绿色等)
## 操作面板
点击任意节点查看上下文命令:
| 节点类型 | 可用操作 |
|-----------|-------------------|
| Root / VHOST / Subfinder | nmap, SSLyze, Nuclei, Nikto, WhatWeb |
| Katana 路径 | ffuf, Gobuster, curl, WhatWeb |
| ffuf 200/301 | SQLMap, ffuf, Gobuster, Nuclei |
| ffuf 403 | 旁路 header (X-Forwarded-For, 路径技巧) |
| 带有表单的节点 | SQLMap --forms, Hydra (若项目禁止则禁用) |
命令将被复制到剪贴板。可通过 `Ctrl+Shift+V` 粘贴到终端中。
## 下钻模式 (v2.0)
初始扫描后,Spider Noir 会显示一个包含所有已发现节点的交互式菜单:
```
╔═══════════════════════════════════════════════════════════════════╗
║ 🔍 DRILL-DOWN MODE ║
║ Select a node to explore deeper. ║
╚═══════════════════════════════════════════════════════════════════╝
── SUBDOMAINS ──────────────────────────────────────────────────────
[ 1] api.example.com 23 URLs, 2 ffuf hits
[ 2] admin.example.com 3 URLs, 1 ffuf hit
── TOP DIRECTORIES (by URL count) ─────────────────────────────────
[ 3] example.com/checkout/ 45 URLs grouped
[ 4] example.com/api/v1/ 23 URLs grouped
── FFUF FINDINGS ──────────────────────────────────────────────────
[ 5] [200] http://example.com/admin
[ 6] [403] http://example.com/.git
Cached results will be reused. Only the selected target will be
re-crawled with deeper depth and re-fuzzed.
[?] Drill into node (1-6, Enter to exit): 2
```
**工作原理:**
- 选择一个节点 → Spider Noir 将仅针对该目标以 +1 的深度重新爬取
- 之前的结果会被缓存并复用(无冗余扫描)
- 生成一个新的聚焦图谱,以所选节点为根节点
- 您可以逐层进行多个级别的下钻
- 每次下钻都会创建一个包含完整结果的独立子目录
这将使 Spider Noir 从一次性扫描器转变为**渐进式探索工具**,您可以每次剥离一个分支,逐层深入目标内部。
## 架构
```
┌─────────────┐ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ Subfinder │────►│ Katana │────►│ ffuf │────►│ SVG Graph │
│ (passive) │ │ (crawling) │ │ (fuzzing) │ │ (interactive)│
│ │ │ │ │ │ │ │
│ Subdomains │ │ Visible URLs │ │ Hidden paths │ │ All combined │
│ from public │ │ from HTML/JS │ │ by wordlist │ │ + actions │
│ sources │ │ links │ │ brute force │ │ panel │
└─────────────┘ └──────────────┘ └──────────────┘ └──────────────┘
```
## 法律与道德免责声明
**重要提示:** 本工具的开发和发布严格仅用于教育目的、授权的安全审计以及受控实验室环境内的研究。
下载、克隆、运行或使用 **Spider Noir**,即表示您同意以下条款:
1. **仅限授权测试:** 您仅能在获得系统所有者明确、书面且事先授权的目标上执行此工具(例如:在活跃的 Bug Bounty 项目 scope 内、正式的渗透测试委托中或自有的基础设施上)。
2. **禁止行为:** 未经明确同意对第三方网络进行未经授权的扫描、爬取或 fuzzing 是非法的,可能会被认定为违反计算机犯罪法(例如美国的 CFAA 或同等的国际网络立法)。
3. **免责声明:** 作者 (**rk103**) 绝对不承担任何责任,对因本程序造成的任何误用、损害、服务中断或法律后果概不负责。
4. **合规性:** 确保其使用本工具符合所有适用的地方、国家及国际法律的唯一责任由最终用户承担。
**请负责任地使用。仅测试您拥有或获得明确测试授权的内容。**
## 作者
**rk103** — [github.com/rk103-fr4](https://github.com/rk103-fr4)
## 许可证
MIT
标签:Web安全, 主机安全, 子域名枚举, 实时处理, 密码管理, 数据可视化, 目录暴破, 系统安全, 蓝队分析, 资产测绘, 逆向工具