Skip to content

ibrahmsql/CloudVault

Repository files navigation

CloudVault - Multi-Cloud Storage Security Scanner

License: MIT Python 3.9+ GitHub Actions

Enterprise-grade cloud storage security scanner with advanced attack chain analysis, MITRE ATT&CK mapping, and comprehensive reporting

CloudVault discovers exposed AWS S3, Google Cloud Storage, and Azure Blob containers through certificate transparency monitoring and provides actionable security insights with tree-formatted visualizations.

πŸš€ Features

Core Capabilities

  • πŸ” Real-time Discovery - Certificate transparency log monitoring
  • ☁️ Multi-Provider - AWS S3, GCP Storage, Azure Blob
  • 🎯 Smart Detection - Automated permission checking
  • πŸ“Š Risk Scoring - Advanced multi-factor algorithm (0-100)
  • πŸ”— Attack Chains - Multi-hop privilege escalation paths
  • 🎨 Tree Visualizations - Beautiful ASCII output everywhere

Advanced Features (Beyond Heimdall)

  • πŸ”” Alerts - Slack, Discord, Email notifications
  • πŸ” Advanced Filtering - Boolean logic + regex queries
  • πŸ“ˆ Historical Tracking - SQLite database with trend sparklines
  • πŸ”§ Auto-Remediation - Terraform/AWS CLI script generation
  • 🌐 Trust Graphs - Relationship visualization
  • πŸ“‹ Compliance - CIS Benchmarks, PCI-DSS mapping
  • 🎨 Interactive TUI - Textual framework interface
  • πŸ“€ Multi-Format Export - SARIF, CSV, JSON, HTML, ASCII Tree

πŸ“¦ Installation

# Clone repository
git clone https://github.com/yourusername/CloudVault.git
cd CloudVault

# Install dependencies
pip install -e .

# Install optional dependencies
pip install aiosqlite websockets  # For history & real-time scanning

🎯 Quick Start

Basic Scan (Static Domain List)

# Create domain list
echo "example.com" > domains.txt
echo "company.com" >> domains.txt

# Scan
cloudvault scan --source domains.txt --output findings.json

Real-Time Monitoring (Certificate Transparency)

# Monitor CT logs
cloudvault scan --only-interesting --save-history

# With keywords filter
cloudvault scan --keywords-file keywords.txt

# With alerts
cloudvault scan \
  --notify slack \
  --slack-webhook https://hooks.slack.com/... \
  --alert-on critical,high

Dashboard & Analysis

# Security dashboard
cloudvault dashboard -i findings.json

# With filters
cloudvault dashboard -i findings.json \
  --filter "severity=CRITICAL,HIGH" \
  --only-public \
  --min-risk-score 75

# Attack chain analysis
cloudvault analyze -i findings.json -f tree

# Filter before analysis
cloudvault analyze -i findings.json \
  --filter "provider=aws" \
  --min-blast-radius 70

Export & Reporting

# SARIF for GitHub Security
cloudvault export -i findings.json -f sarif -o report.sarif

# HTML report
cloudvault export -i findings.json -f html -o report.html

# Tree visualization
cloudvault export -i findings.json -f tree -o report.txt

# CSV for spreadsheets
cloudvault export -i findings.json -f csv -o report.csv

Auto-Remediation

# Generate Terraform
cloudvault remediate -i findings.json -f terraform --dry-run

# Generate AWS CLI commands
cloudvault remediate -i findings.json -f awscli

Compliance Audit

# CIS Benchmarks
cloudvault compliance -i findings.json --framework CIS

# PCI-DSS
cloudvault compliance -i findings.json --framework PCI-DSS

History & Trends

# View scan history
cloudvault history list --limit 20

# Trend analysis with sparklines
cloudvault history trends --days 30

# Compare scans
cloudvault history compare --from-scan 1 --to-scan 5

πŸ“‹ Commands Reference

Command Description
scan Discover exposed buckets (CT logs or domain list)
dashboard Security overview with risk scoring
analyze Attack chain and privilege escalation analysis
export Multi-format export (SARIF/CSV/JSON/HTML/Tree)
remediate Generate auto-fix scripts (Terraform/AWS CLI)
compliance Framework mapping (CIS/PCI-DSS/HIPAA)
history Scan history, trends, and comparison
graph Trust relationship visualization
tui Interactive terminal UI
baseline Delta reporting and ignore patterns
test-alerts Test notification channels
init-config Create default configuration

πŸ”§ Advanced Usage

Filtering Syntax

# Equality
--filter "severity=CRITICAL"

# Multiple values (OR)
--filter "severity=CRITICAL,HIGH"

# Comparison operators
--filter "risk_score>=75"

# Regex
--filter "bucket_name~regex:.*-prod-.*"

# Boolean AND
--filter "severity=CRITICAL AND provider=aws"

# Exclude
--exclude "bucket_name~.*-test-.*"

# Combine filters
--filter "severity=CRITICAL,HIGH" \
--only-public \
--min-risk-score 80

Alert Configuration

# Slack
--notify slack \
--slack-webhook https://hooks.slack.com/... \
--alert-on critical,high

# Discord
--notify discord \
--discord-webhook https://discord.com/api/webhooks/...

# Email (SMTP)
--notify email \
--email-to security@company.com \
--smtp-host smtp.gmail.com \
--smtp-user alerts@company.com \
--smtp-password "..."

# Multiple channels
--notify slack discord email

CI/CD Integration

# .github/workflows/cloudvault.yml
- name: Run CloudVault
  run: |
    cloudvault scan --source domains.txt --output findings.json
    cloudvault export -i findings.json -f sarif -o cloudvault.sarif

- name: Upload SARIF
  uses: github/codeql-action/upload-sarif@v2
  with:
    sarif_file: cloudvault.sarif

πŸ“Š Output Examples

Dashboard

╔═══════════════════════════════════════════════════════════╗
β•‘                  CloudVault Dashboard                     β•‘
β•‘              Cloud Security Risk Analysis                 β•‘
β•šβ•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•

╔════ Security Risk Score ═════╗
β•‘ Risk Score: 64.0/100         β•‘
β•‘ Status: HIGH                 β•‘
β•šβ•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•

      Findings by Severity      
  CRITICAL: 2 (40.0%)  β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ
  HIGH:     2 (40.0%)  β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ
  MEDIUM:   1 (20.0%)  β–ˆβ–ˆβ–ˆβ–ˆ

Top Security Risks:
  1. Public S3 Bucket with Sensitive Data
  2. Credentials in Bucket Objects
  3. Database Dump Exposure

Attack Chain Analysis

Multi-Hop Privilege Escalation (Blast Radius: 90.0)
β”œβ”€β”€ Access Public Bucket (T1530)
β”œβ”€β”€ Extract Credentials (T1552.001)
β”œβ”€β”€ Authenticate with Stolen Credentials (T1078)
└── Exfiltrate Sensitive Data (T1537)

Compliance Report

πŸ“‹ CIS Compliance Report
============================================================

β”œβ”€ Total Controls: 2
β”œβ”€ βœ“ Passed: 0
└─ βœ— Failed: 4

β”œβ”€ CIS-2.1.5: Ensure S3 buckets are not publicly accessible
   └─ βœ— company-prod-backups

πŸ—οΈ Architecture

cloudvault_discovery/
β”œβ”€β”€ cli/              # Click command-line interface
β”œβ”€β”€ core/             # Scanning engine (certstream, scanner)
β”œβ”€β”€ models/           # Data models (Finding, AttackChain)
β”œβ”€β”€ analysis/         # Risk scoring, MITRE mapping, attack chains
β”œβ”€β”€ dashboard/        #Rich visualization and metrics
β”œβ”€β”€ export/           # Multi-format exporters
β”œβ”€β”€ alerts/           # Notification channels
β”œβ”€β”€ filtering/        # Advanced query parser
β”œβ”€β”€ history/          # SQLite database & trends
β”œβ”€β”€ remediation/      # Auto-fix templates
β”œβ”€β”€ compliance/       # Framework mappers
β”œβ”€β”€ graph/            # Trust visualization
└── tui/              # Textual UI

πŸ§ͺ Testing

# Run tests
pytest tests/ -v

# With coverage
pytest tests/ --cov=cloudvault_discovery

πŸ“ Configuration

# config.yaml
scan:
  providers:
    aws: true
    gcp: true
    azure: true
  skip_lets_encrypt: true
  
alerts:
  slack_webhook: "https://hooks.slack.com/..."
  severity_filter: ["CRITICAL", "HIGH"]

filters:
  exclude_patterns:
    - "*-test-*"
    - "*-dev-*"

🀝 Contributing

Contributions welcome! Please read CONTRIBUTING.md first.

πŸ“„ License

MIT License - see LICENSE for details.

πŸ™ Acknowledgments

πŸ“ž Support


Made with ❀️ for cloud security