Unify, Orchestrate, Secure
- Overview
- Key Features
- System Architecture
- Components
- Installation
- Configuration
- Usage Guide
- Development
- Troubleshooting
- Contributing
- License
SKrulll is a comprehensive cybersecurity and OSINT (Open Source Intelligence) tool orchestrator that provides a unified interface for various security tools. It enables seamless integration between different security components with centralized configuration and data sharing capabilities.
SKrulll bridges the gap between disparate security tools, creating a cohesive ecosystem where data flows efficiently between reconnaissance, scanning, analysis, and reporting phases. This integration dramatically improves security assessment workflows and provides deeper insights through cross-tool data correlation.
- π§© Modular Architecture: Easily extend functionality with new tools and capabilities
- π₯οΈ Unified Interface: Access all tools through a consistent CLI and intuitive web dashboard
- βοΈ Automated Workflows: Chain tools together for comprehensive security assessments
- π Advanced Reporting: Generate consolidated findings from multiple tools with customizable templates
- ποΈ Multi-Database Support: Store and query data using PostgreSQL, MongoDB, Elasticsearch, and Neo4j
- π Interactive Visualization: Generate dynamic visual representations of network maps, attack paths, and data relationships
- β±οΈ Intelligent Scheduling: Automate recurring tasks with dependency awareness and priority handling
- π Real-time Monitoring: Track ongoing scans and receive alerts on critical findings
- π API Integration: Connect with external systems through a comprehensive REST API
- π Role-based Access Control: Secure multi-user environment with granular permissions
SKrulll follows a microservices architecture with containerized components that can scale independently:
graph TD
A[Client Layer] --> B[API Gateway]
B --> C[Orchestrator]
C --> D[Task Scheduler]
C --> E[Module Registry]
C --> F[Data Pipeline]
F --> G[Database Connectors]
G --> H[(PostgreSQL)]
G --> I[(MongoDB)]
G --> J[(Elasticsearch)]
G --> K[(Neo4j)]
C --> L[OSINT Modules]
C --> M[Security Modules]
C --> N[Vulnerability Modules]
L --> F
M --> F
N --> F
This architecture ensures:
- Scalability: Components can be scaled independently based on workload
- Resilience: Failure in one module doesn't affect the entire system
- Flexibility: New modules can be added without disrupting existing functionality
- Performance: Resource-intensive tasks can be distributed across multiple nodes
SKrulll consists of several key components working together:
Component | Description | Technologies |
---|---|---|
OSINT Modules | Domain reconnaissance, social media analysis, search footprinting | Python, Go |
Security Modules | Vulnerability scanning, port scanning, network mapping, attack vector analysis | Python, Rust |
Orchestrator | Core system that manages tool execution and data flow | Python |
Web Interface | User-friendly dashboard for managing scans and viewing results | Flask, React |
CLI | Command-line interface for scripting and automation | Python, Click |
Scheduler | Task scheduling and management with dependencies | Python, Celery |
Database Connectors | Interfaces to various databases for data storage and retrieval | SQLAlchemy, PyMongo, Elasticsearch-DSL, Neo4j-Python |
- Python 3.8+
- Docker and Docker Compose (for containerized components)
- Neo4j (for attack path mapping)
- PostgreSQL (for primary data storage)
- MongoDB (for unstructured data storage)
- Elasticsearch (for search and analytics)
-
Clone the repository:
git clone https://github.com/pixelbrow720/SKrulll.git cd SKrulll
-
Create a virtual environment (recommended):
python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate
-
Install Python dependencies:
pip install -r requirements.txt
-
Set up the configuration:
cp config/config.example.yaml config/config.yaml cp .env.example .env # Edit config.yaml and .env with your settings
-
Initialize the databases:
python main.py db init
-
Run the application:
python main.py
For a fully containerized setup:
-
Configure environment variables:
cp .env.example .env # Edit .env with your settings
-
Start the services:
docker-compose -f templates/docker-compose.yml up -d
This will start all required services including the SKrulll application, databases, and supporting services.
SKrulll uses a combination of configuration files and environment variables:
-
Configuration File: The main configuration file is
config/config.yaml
, which contains settings for all components of the system. A template is provided asconfig/config.example.yaml
. -
Environment Variables: Sensitive information like database credentials should be stored in the
.env
file. A template is provided as.env.example
. -
Command-line Arguments: Many settings can be overridden via command-line arguments when running the application.
The configuration is loaded in the following order, with later sources overriding earlier ones:
- Default values hardcoded in the application
- Values from
config/config.yaml
- Environment variables
- Command-line arguments
SKrulll provides a comprehensive CLI for all operations:
# Get help and list all commands
python main.py --help
# Run a port scan with service detection
python main.py security portscan 192.168.1.1 --ports 1-1000
# Perform comprehensive domain reconnaissance
python main.py osint domain example.com --whois --dns --subdomains
# Analyze social media presence across platforms
python main.py osint social username --platforms twitter,reddit,linkedin,instagram
# Run a vulnerability scan with custom templates
python main.py security vulnscan https://example.com --level high
# Map network topology and identify potential attack paths
python main.py security netmap 192.168.1.0/24 --visualize
# Schedule a recurring task with notification
python main.py schedule add "Daily Security Scan" "security vulnscan example.com" --cron "0 0 * * *"
The web interface provides a user-friendly dashboard for managing scans and viewing results:
-
Start the web interface:
python main.py webui
-
Access the dashboard:
- Open your browser and navigate to
http://localhost:5000
- Log in with your credentials
- Open your browser and navigate to
-
Key features:
- Interactive dashboard with real-time scan status
- Customizable reporting templates
- Interactive network and attack path visualizations
- User and role management
- System configuration and module management
SKrulll provides a RESTful API for integration with other systems:
# Start the API server
python main.py api
# API is available at http://localhost:8000/api/v1
Example API usage with curl:
# Authenticate and get token
curl -X POST http://localhost:8000/api/v1/auth/token \
-H "Content-Type: application/json" \
-d '{"username": "admin", "password": "password"}'
# Start a port scan
curl -X POST http://localhost:8000/api/v1/security/portscan \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"target": "192.168.1.1", "ports": "1-1000", "options": {"service_detection": true}}'
The project is organized into the following directories:
SKrulll/
βββ config/ # Configuration files
βββ data/ # Data storage
βββ deploy/ # Deployment scripts
βββ docs/ # Documentation
βββ modules/ # Core functionality modules
β βββ osint/ # Open Source Intelligence modules
β βββ scanner/ # Network and vulnerability scanners
β βββ security/ # Security assessment modules
β βββ vulnerability/ # Vulnerability testing modules
βββ orchestrator/ # Core orchestration system
β βββ db/ # Database connectors
βββ scheduler/ # Task scheduling system
βββ static/ # Static web assets
βββ templates/ # Templates for reports and Docker
β βββ docker/ # Dockerfiles for various components
βββ tests/ # Test suite
βββ web/ # Web interface
β βββ templates/ # Web UI templates
βββ main.py # Main entry point
βββ requirements.txt # Python dependencies
βββ setup.sh # Setup script
-
Create a new module in the appropriate directory:
python main.py dev create-module security my-new-scanner
-
Implement the required interfaces in the generated template files
-
Register the module with the orchestrator:
# In your module's __init__.py from orchestrator import register_module register_module('my-new-scanner', MyNewScannerModule)
-
Add CLI commands in the module's cli.py file
See the Developer Guide for detailed instructions and best practices.
SKrulll includes comprehensive testing capabilities:
# Run all tests
python -m unittest discover tests
# Run specific test categories
python -m unittest tests.test_integration
python -m unittest tests.test_e2e
# Run with coverage report
python -m coverage run -m unittest discover
python -m coverage report
python -m coverage html # Generates detailed HTML report
# Run benchmarks
python tests/benchmark.py
If you encounter issues while running SKrulll:
-
Check the logs: Look for error messages in the logs directory or console output.
-
Verify configuration: Ensure your
config/config.yaml
and.env
files are properly configured. -
Database connections: Verify that all required databases are running and accessible.
-
Docker issues: If using Docker, check container logs with
docker logs container_name
. -
Git issues: If you encounter Git-related issues, use the included
git-fix.sh
script:chmod +x git-fix.sh ./git-fix.sh
-
Missing files: If you encounter errors about missing files, make sure to create all necessary directories and files as mentioned in the setup instructions.
Contributions are welcome! Here's how you can help:
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature
- Commit your changes:
git commit -m 'Add some amazing feature'
- Push to the branch:
git push origin feature/amazing-feature
- Open a Pull Request
Please read our Contributing Guidelines for details on our code of conduct and development process.
This project is licensed under the MIT License - see the LICENSE file for details.
Made with β€οΈ by the SKrulll Team
Β© 2025 SKrulll Security - All Rights Reserved