RabbitHole
Universal Cybersecurity Environment Installer / Provisioning Framework
Role-based. Opinionated. Production-Ready. Modular.
Project Overview
RabbitHole provisions combat-ready cybersecurity environments in minutes. Originally a single-file Bash installer, it has evolved into a modular, extensible Cybersecurity Environment Provisioning Framework with a plugin system, state management, rollback, supply-chain security, and full CLI tooling.
Distro Agnostic — Auto-detects Debian/Kali/Ubuntu/Parrot, Fedora, Arch/Manjaro.
Plugin Architecture — Roles are defined as YAML manifests under roles/. Add a new role by creating a directory with plugin.yaml — no code changes needed.
State Management — Tracks installed roles, tools, versions, and dates in ~/.rabbithole/state.json. Supports verify, doctor, snapshot, restore.
Resume Capability — If installation is interrupted (power loss, Ctrl+C, network failure), re-running resumes from the last successful package.
Supply Chain Security — SHA256 verification, pinned versions, secure auto-generated Docker credentials.
Rollback — rabbithole remove <role> cleans packages, symlinks, pipx apps, Go binaries, Git repos, and Docker resources.
Operational Roles
RabbitHole organizes tools into strictly defined operational roles. Install multiple roles simultaneously.
OSINT Analyst
#1Deep dive information gathering and reconnaissance.
Bug Bounty Hunter
#2Web application reconnaissance and vulnerability scanning.
Pentester
#3Standard network and infrastructure assessment toolkit.
Red Team Operator
#4RESTRICTED USE. Advanced C2 and adversary emulation.
Blue Team / SOC Analyst
#5Defense, monitoring, and log analysis.
DFIR Analyst
#6Digital Forensics and Incident Response.
Threat Intelligence Analyst
#7Threat data platforms and intelligence tools.
Architecture
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)
CLI Commands
| Command | Description |
|---|---|
| rabbithole | Interactive role-based installer |
| rabbithole install <role> | Install specific role(s) |
| rabbithole remove <role> | Remove specific role(s) |
| rabbithole status | Show installation status |
| rabbithole verify | Verify installed tools and dependencies |
| rabbithole doctor | Comprehensive health check |
| rabbithole update | Update installed tools |
| rabbithole snapshot | Export state snapshot to JSON |
| rabbithole restore <file> | Restore state from snapshot |
| rabbithole cache build|clean | Manage download cache |
| rabbithole benchmark | Run system benchmarks |
| rabbithole --dry-run | Preview without installing |
| rabbithole --version | Show version |
| rabbithole --help | Show help |
Supply Chain Security
Infrastructure & Docker Profiles
Production-grade infrastructure stack using Docker Compose for Threat Intelligence deployments.
misp
Malware Information Sharing Platform
Services: misp-core, misp-db
opencti
Open Cyber Threat Intelligence Platform
Services: opencti, elasticsearch, redis, minio, rabbitmq
Management
cd /opt/rabbithole/infra/threat-intel docker compose --profile misp --profile opencti up -d docker compose --profile opencti up -dAll credentials are auto-generated with openssl rand and stored in a 600-permission .env file. No hardcoded passwords.
Configuration Profiles
minimal
Core tools only
research
OSINT + DFIR + Threat Intel
lab
Full lab environment
redteam
Offensive toolkit
blueteam
Defensive toolkit
enterprise
Production-grade deployment
Installation
New Framework
# Clone the repository
git clone https://github.com/NullC0d3/rabbithole.git
cd rabbithole
chmod +x bin/rabbithole
sudo ./bin/rabbitholeLegacy Installer
sudo ./rabbithole.shThe original single-file installer remains fully functional and unchanged.
Plugin Development
Adding a new role is as simple as creating a directory with a plugin.yaml manifest.
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'"Place your plugin in either roles/ (built-in) or plugins/ (user/custom). The framework discovers plugins automatically.
Testing
# Run the full test suite ./tests/test_runner.sh # Run with verbose output ./tests/test_runner.sh -vProject Roadmap
Current Work
- Continuous expansion of OSINT, Blue Team, and DFIR capabilities
- Integration with MISP and OpenCTI platforms
- Enhanced state management and snapshot/restore functionality
- Supply chain security improvements with SHA256 verification
Near-Term Goals
- Community plugin marketplace with versioning
- Cross-platform compatibility improvements
- Performance optimization for large-scale deployments
- Enhanced Docker Compose infrastructure
Long-Term Vision
- Enterprise-grade deployment with role-based access control
- AI-assisted role recommendation and optimization
- Integration with cloud security platforms
- Comprehensive security testing automation
State & Lock Files
State File: ~/.rabbithole/state.json
- Framework version
- Installed roles with timestamps
- Installed tools with method, source, version, exit code
- Docker services
Snapshot & Restore
# Export full environment state rabbithole snapshot > ~/rabbithole-backup-$(date +%Y%m%d).json # Restore on a different machine rabbithole restore ~/rabbithole-backup-20260727.jsonLock file: config/rabbit.lock pins tool versions for reproducible installations.