nullc0d30/RabbitHole-Nullc0d3
GitHub: nullc0d30/RabbitHole-Nullc0d3
一款模块化、角色驱动的网络安全环境配置框架,支持在主流 Linux 发行版上一键安装和管理多领域安全工具链。
Stars: 3 | Forks: 0
# RabbitHole
  -000000.svg)
## 概述
**RabbitHole** 可以在几分钟内配置好具备实战能力的网络安全环境。它最初只是一个单文件 Bash 安装程序,现在已经演进为一个**模块化、可扩展的网络安全环境配置框架**,具备插件系统、状态管理、回滚、供应链安全以及完整的 CLI 工具。
### 主要功能
- **发行版无关**:自动检测 Debian/Kali/Ubuntu/Parrot、Fedora、Arch/Manjaro。
- **插件架构**:角色以 YAML 清单的形式定义在 `roles/` 下。只需创建一个包含 `plugin.yaml` 的目录即可添加新角色,无需修改代码。
- **状态管理**:在 `~/.rabbithole/state.json` 中跟踪已安装的角色、工具、版本和日期。支持 `verify`、`doctor`、`snapshot`、`restore`。
- **恢复能力**:如果安装被中断(断电、Ctrl+C、网络故障),重新运行时将从上一个成功安装的软件包继续。
- **供应链安全**:SHA256 验证、固定版本、安全的自动生成 Docker 凭据。
- **回滚**:`rabbithole remove ` 可清理软件包、symlink、pipx 应用、Go 二进制文件、Git 仓库和 Docker 资源。
- **Dry Run**:`rabbithole --dry-run install ` 可以在不做出任何更改的情况下进行预览。
- **零臃肿**:无后台服务,无遥测。
- **完全向后兼容**:原始的 `rabbithole.sh` 仍然像以前一样正常运行。
## 安装与使用
### 前置条件
- 基于 Linux 的操作系统(Kali、Ubuntu、Debian、Fedora、Arch、Parrot、Manjaro)
- Root 权限(`sudo`)
- 互联网连接
### 快速开始(新框架)
```
git clone https://github.com/NullC0d3/rabbithole.git
cd rabbithole
chmod +x bin/rabbithole
sudo ./bin/rabbithole
```
### 快速开始(旧版 — 原始安装程序)
```
sudo ./rabbithole.sh
```
原始的单文件安装程序保持完全可用且未作更改,适合喜欢它的用户。
### CLI 命令
| 命令 | 描述 |
|---------|-------------|
| `rabbithole` | 交互式基于角色的安装程序 |
| `rabbithole install ` | 安装特定角色 |
| `rabbithole remove ` | 移除特定角色 |
| `rabbithole status` | 显示安装状态 |
| `rabbithole verify` | 验证已安装的工具和依赖 |
| `rabbithole doctor` | 综合健康检查 |
| `rabbithole update` | 更新已安装的工具 |
| `rabbithole snapshot` | 将状态快照导出为 JSON |
| `rabbithole restore ` | 从快照恢复状态 |
| `rabbithole cache build\|clean` | 管理下载缓存 |
| `rabbithole benchmark` | 运行系统基准测试 |
| `rabbithole --dry-run` | 在不安装的情况下预览 |
| `rabbithole --version` | 显示版本 |
| `rabbithole --help` | 显示帮助 |
### 示例
```
# 交互式菜单
sudo rabbithole
# 安装特定 role
sudo rabbithole install "OSINT Analyst" "Pentester"
# 预览而不做任何更改
sudo rabbithole --dry-run install "Red Team Operator"
# 验证安装
rabbithole verify
# 健康检查
rabbithole doctor
# 移除 role
sudo rabbithole remove "Bug Bounty Hunter"
# 保存和恢复状态
rabbithole snapshot > backup.json
rabbithole restore backup.json
```
## 操作角色
RabbitHole 将工具组织为严格定义的操作角色。你可以同时安装多个角色。
### [1] OSINT 分析师
深入的信息收集和侦察。
- **Stack**:amass、theHarvester、maltego、spiderfoot、sherlock、maigret、holehe、social-analyzer、shodan、censys
### [2] Bug Bounty 猎人
Web 应用程序侦察和漏洞扫描。
- **Stack**:nuclei、katana、gau、ffuf、burpsuite、sqlmap、dalfox、xsstrike、dirsearch、arjun
### [3] Pentester
标准的网络和基础设施评估工具包。
- **Stack**:nmap、masscan、rustscan、impacket、bloodhound、crackmapexec、hashcat、john、seclists
### [4] Red Team 操作员
**受限制使用。** 高级 C2 和对手模拟。
- **Stack**:metasploit、sliver、empire、HunterX、ligolo-ng、chisel、ansible、terraform、donut、scarecrow
- **HunterX**:克隆到 `/opt/HunterX`,并在 `/usr/local/bin/HunterX` 提供自动启动器。Python 依赖项将自动安装。
### [5] Blue Team / SOC 分析师
防御、监控和日志分析。
- **Stack**:wazuh-agent、osquery、velociraptor、sigma-cli、chainsaw、hayabusa、thehive、cortex
### [6] DFIR 分析师
数字取证和事件响应。
- **Stack**:volatility3、autopsy、sleuthkit、plaso、timesketch、yara、ghidra、radare2、capa
### [7] 威胁情报分析师
威胁数据平台和情报工具。
- **Stack**:misp、opencti、yeti、intelmq、threatfox、virustotal-cli、otx-cli
- **Docker 基础设施**:可选部署完整的 MISP 和 OpenCTI 技术栈,并带有安全的自动生成的凭据。
## 架构
```
RabbitHole/
├── rabbithole.sh # Legacy single-file installer (unchanged)
├── bin/
│ └── rabbithole # New framework entrypoint
├── lib/
│ ├── logging.sh # Structured & colored logging
│ ├── package_manager.sh # OS detection & base dependency installation
│ ├── helpers.sh # Native/Go/pipx/Git/Cargo/wget install helpers
│ ├── docker.sh # Docker Compose stack management
│ ├── plugins.sh # Plugin discovery & YAML parsing
│ ├── state.sh # State management (~/.rabbithole/state.json)
│ ├── dependency.sh # Dependency resolution & tracking
│ └── security.sh # Secure credential generation & checksums
├── roles/
│ ├── osint/ # OSINT Analyst plugin
│ ├── bugbounty/ # Bug Bounty Hunter plugin
│ ├── pentest/ # Pentester plugin
│ ├── redteam/ # Red Team Operator plugin
│ ├── soc/ # Blue Team / SOC plugin
│ ├── dfir/ # DFIR Analyst plugin
│ └── threatintel/ # Threat Intelligence Analyst plugin
├── config/
│ ├── settings.conf # User configuration
│ └── rabbit.lock # Version lock file
├── plugins/ # User/custom plugin directory
├── cache/ # Download cache
├── logs/ # Log files
├── state/ # State files
├── tests/ # Automated tests (50+ test cases)
├── AGENTS.md # Developer guide for AI agents and contributors
└── .github/workflows/ # CI/CD (ShellCheck, YAML lint, manifest validation)
```
## 插件开发
添加新角色就像创建一个带有 `plugin.yaml` 清单的目录一样简单:
```
name: "My Custom Role"
description: "Description of my custom role"
version: "1.0.0"
author: "Your Name"
warning: false
docker: false
native:
- "toolname/pkgname/pkgname"
go:
- "toolname github.com/user/toolname@latest"
pipx:
- "toolname pip-package-name"
git:
- "toolname https://github.com/user/toolname.git"
cargo:
- "toolname crate-name"
wget:
- "toolname https://example.com/toolname-linux-amd64"
custom:
- "echo 'Custom install command'"
# 可选提供 install.sh 用于自定义逻辑
```
将你的插件放在 `roles/`(内置)或 `plugins/`(用户/自定义)目录中。该框架会自动发现插件。
## 基础设施和 Docker Profiles
对于角色 [7](威胁情报),RabbitHole 可以使用 Docker Compose 部署生产级的基础设施技术栈。
**位置**:`/opt/rabbithole/infra/threat-intel/`
### Profiles
| Profile | 服务 | 描述 |
| :--- | :--- | :--- |
| `misp` | misp-core, misp-db | 恶意软件信息共享平台 |
| `opencti` | opencti, elasticsearch, redis, minio, rabbitmq | 开放网络威胁情报平台 |
### 管理
```
cd /opt/rabbithole/infra/threat-intel
docker compose --profile misp --profile opencti up -d
docker compose --profile opencti up -d
```
所有凭据均通过 `openssl rand` 自动生成,并存储在权限为 `600` 的 `.env` 文件中。没有硬编码的密码。
## 供应链安全
- 通过 `verify_sha256()` 对下载的二进制文件进行 **SHA256 校验和验证**
- 在 Docker Compose 镜像中**固定版本** —— 除非不可避免,否则不使用 `:latest`
- 通过 `openssl rand -base64` **安全生成凭据**,具有可配置的长度和字符集
- 使用 `chmod 600` 创建 **`.env` 文件** —— 对非授权用户不可读
- **无硬编码密码** —— OpenCTI、MISP、MinIO、RabbitMQ 和 Elasticsearch 的凭据均为自动生成
- 在插件清单中支持**固定的 Git tags 和 commits**,以实现可复现的构建
- **避免使用 `eval`** —— 命令使用显式参数传递;自定义命令仅作为可选项
- **安全的路径处理** —— `sanitize_path_component()` 会去除用户提供的路径中的危险字符
## 配置 Profiles
在 `config/settings.conf` 中设置 `RABBIT_PROFILE`:
| Profile | 描述 |
|---------|-------------|
| `minimal` | 仅核心工具 |
| `research` | OSINT + DFIR + 威胁情报 |
| `lab` | 完整的实验室环境 |
| `redteam` | 攻击性工具包 |
| `blueteam` | 防御性工具包 |
| `enterprise` | 生产级部署 |
## 测试
```
# 运行完整测试套件
./tests/test_runner.sh
# 运行并输出详细日志
./tests/test_runner.sh -v
```
测试套件涵盖:
- 目录结构完整性
- 库模块函数导出
- 插件清单验证(全部 7 个角色)
- YAML 解析(name、description、version、author 字段)
- 状态管理(创建、记录、读取、移除)
- 辅助函数的存在和签名
- 安全模块输出验证
- 配置文件存在性
## 缓存管理
```
# 构建/初始化下载缓存
rabbithole cache build
# 清理缓存的下载
rabbithole cache clean
```
## 基准测试
```
# 运行系统基准测试
rabbithole benchmark
```
报告:
- CPU 核心数和型号
- 内存使用情况
- 磁盘 I/O 速度(dd 基准测试)
- Nmap 版本可用性
- Docker 引擎状态
## CI/CD
GitHub Actions 会在每次推送时运行 `.github/workflows/ci.yml`:
- **ShellCheck** —— 对所有 shell 脚本进行静态分析
- **Bash 语法验证** —— 对每个 `.sh` 文件和 `bin/rabbithole` 执行 `bash -n`
- **插件清单验证** —— 确保所有 7 个角色都具有带必填字段的有效 `plugin.yaml`
- **YAML linting** —— 对所有 YAML 文件执行 `yamllint`
- **状态模块验证** —— 验证 Python3 JSON 处理集成
## 状态和 Lock 文件
**状态文件**:`~/.rabbithole/state.json`
跟踪:
- 框架版本
- 已安装的角色及时间戳
- 已安装的工具及其方法、来源、版本、退出代码
- Docker 服务
**Lock 文件**:`config/rabbit.lock`
- 固定工具版本以实现可复现的安装
- 与 `rabbithole --locked` 一起使用时,防止意外升级
**快照与恢复**:
```
# 导出完整环境状态
rabbithole snapshot > ~/rabbithole-backup-$(date +%Y%m%d).json
# 在不同机器上恢复
rabbithole restore ~/rabbithole-backup-20260727.json
```
## 开发者指南
请参阅 [AGENTS.md](AGENTS.md) 了解:
- 架构原则和约定
- 模块 API 参考
- 插件 YAML 规范
- 如何添加新角色
- 测试和 CI/CD 工作流
## 法律与安全警告
**RabbitHole 安装的是攻击性安全工具。**
这些工具仅供**教育目的**和**授权的安全测试**使用。作者(NullC0d3)对任何使用行为不承担责任。
- **Sliver / Empire / Metasploit / HunterX**:这些是武器级工具。请勿在你不拥有或未获得明确测试许可的网络上使用。
- **OPSEC**:此脚本会全局安装工具。它不会为你配置 Tor 或 VPN。管理你的操作安全是你自己的责任。
## 许可证
Copyright (C) 2026 **Ahmed Awad (NullC0d3)**
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
```
http://www.apache.org/licenses/LICENSE-2.0
```
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
## 致谢
**由 Ahmed Awad (NullC0d3) 创建与维护**
*Copyright (C) 2026 Ahmed Awad. Licensed under Apache 2.0.*
标签:PB级数据处理, 域名收集, 安全运维, 应用安全, 版权保护, 特权提升, 环境管理, 自动化部署