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安全, 主机安全, 子域名枚举, 实时处理, 密码管理, 数据可视化, 目录暴破, 系统安全, 蓝队分析, 资产测绘, 逆向工具