cloudTOWN (Cloud Tactical Offensive Warfare Network) is a bleeding-edge, interactive framework designed for authorized cloud security assessments.
UNAUTHORIZED ACCESS TO COMPUTER SYSTEMS IS A CRIME. ALWAYS OBTAIN PROPER AUTHORIZATION BEFORE TESTING.
# Clone the repository
git clone https://github.com/ekomsSavior/cloudTOWN.git
cd cloudTOWN
# Install dependencies
pip3 install -r requirements.txt
# Make executable
chmod +x main.py
# Launch
python3 main.py
1. Launch Framework → 2. Select Module → 3. Provide Credentials → 4. Scan → 5. Exploit → 6. Export Report
cd cloudTOWN
python3 main.py
You'll see the main menu:
╔═══════════════════════════════════════════════════════════╗
║ ║
║ Cloud Red Team Framework v2.0 ║
║ Real Cloud Security Testing ║
║ AUTHORIZED USE ONLY ║
║ ║
╚═══════════════════════════════════════════════════════════╝
Main Menu - Select an option:
1. List All Modules
2. Select and Run Module
3. View Session Info
4. Export Results
5. Exit
Objective: Find misconfigured S3 buckets and extract data
python3 main.py
# Select: 2. Select and Run Module
# Choose: AWS S3 Bucket Scanner
AWS Access Key ID: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key: [your-secret-key]
AWS Region: us-east-1
Scan mode: All Buckets in Account
The scanner will enumerate ALL buckets and identify issues:
[+] Loaded module: AWS S3 Bucket Scanner
[*] Found 12 bucket(s) to scan
[*] Scanning bucket: company-backups
[*] Scanning bucket: production-data
[*] Scanning bucket: public-assets
╔════════════════════════════════════════════════════════╗
║ Scan Results ║
╠════════════════════════════════════════════════════════╣
║ Bucket Name │ company-backups ║
║ Region │ us-east-1 ║
║ Severity │ CRITICAL ║
║ Issues │ • No public access block ║
║ │ • Bucket ACL grants AllUsers ║
║ │ • No encryption configured ║
╚════════════════════════════════════════════════════════╝
Vulnerabilities found. Do you want to attempt exploitation? Yes
[*] Starting exploitation phase...
[*] Attempting exploitation on: company-backups
[+] Successfully listed objects: 127 found
Main Menu → 4. Export Results
Select export format: HTML
Enter output filename: aws_s3_pentest_20250114
[+] Results exported to aws_s3_pentest_20250114.html
Objective: Identify Azure storage misconfigurations
You need:
- Tenant ID
- Client ID (App Registration)
- Client Secret
- Subscription ID
How to get these:
# In Azure Portal:
# 1. Azure Active Directory → App registrations → New registration
# 2. Create client secret: Certificates & secrets → New client secret
# 3. Get IDs: Overview page shows Tenant ID and Client ID
# 4. Get Subscription ID: Subscriptions page
python3 main.py
# Select: 2. Select and Run Module
# Choose: Azure Storage Account Scanner
Azure Tenant ID: 12345678-1234-1234-1234-123456789abc
Azure Client ID: 87654321-4321-4321-4321-cba987654321
Azure Client Secret: [your-secret]
Azure Subscription ID: abcdef12-3456-7890-abcd-ef1234567890
Scan mode: All Storage Accounts
[*] Found 5 storage account(s) to scan
[*] Scanning: prodstorageacct01
╔════════════════════════════════════════════════════════╗
║ Scan Results ║
╠════════════════════════════════════════════════════════╣
║ Storage Account │ prodstorageacct01 ║
║ Location │ eastus ║
║ Severity │ HIGH ║
║ Issues │ • HTTPS-only not enforced ║
║ │ • Blob public access allowed ║
║ │ • Weak TLS version: TLS1_0 ║
╚════════════════════════════════════════════════════════╝
Objective: Find dangling DNS records vulnerable to takeover
python3 main.py
# Select: 2. Select and Run Module
# Choose: SaaS Subdomain Takeover Scanner
# use provided subdomains-premium.txt for scans
Target domain to scan: targetcompany.com
Subdomain wordlist: default # or provide custom wordlist file
Number of threads: 20
HTTP request timeout: 5 seconds
[*] Testing 100 subdomains with 20 threads
[+] VULNERABLE: blog.targetcompany.com
[+] VULNERABLE: staging.targetcompany.com
[+] VULNERABLE: dev.targetcompany.com
╔════════════════════════════════════════════════════════╗
║ Scan Results ║
╠════════════════════════════════════════════════════════╣
║ Subdomain │ blog.targetcompany.com ║
║ CNAME │ oldsite.herokuapp.com ║
║ Service │ Heroku ║
║ Vulnerable │ True ║
║ Severity │ HIGH ║
║ Impact │ Subdomain takeover possible ║
╚════════════════════════════════════════════════════════╝
Vulnerabilities found. Do you want to attempt exploitation? Yes
[*] Starting exploitation phase...
╔════════════════════════════════════════════════════════╗
║ Exploitation Steps (Manual) ║
╠════════════════════════════════════════════════════════╣
║ Service: Heroku ║
║ ║
║ Steps to claim: ║
║ 1. Create a Heroku account ║
║ 2. Create new app: heroku create oldsite ║
║ 3. Deploy simple web application ║
║ 4. Verify subdomain resolves to your app ║
║ ║
║ POC: Deploy page saying "Claimed by [YourName]" ║
╚════════════════════════════════════════════════════════╝
** WARNING: This module ACTIVELY MODIFIES AWS IAM. Use ONLY in authorized test environments.**
Objective: Identify and exploit IAM privilege escalation paths
python3 main.py
# Select: 2. Select and Run Module
# Choose: AWS IAM Privilege Escalation
AWS Access Key ID: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key: [your-secret-key]
AWS Region: us-east-1
Scan mode: Current User # or All Users / Specific User
[*] Authenticated as: dev-user
[*] Analyzing 1 user(s) for privilege escalation paths
[*] Scanning user: dev-user
╔════════════════════════════════════════════════════════╗
║ Privilege Escalation Found ║
╠════════════════════════════════════════════════════════╣
║ User │ dev-user ║
║ Method │ AttachUserPolicy ║
║ Permissions │ iam:AttachUserPolicy ║
║ Severity │ CRITICAL ║
║ Description │ Can attach managed policies ║
║ │ to users including self ║
║ Exploitable │ True ║
╚════════════════════════════════════════════════════════╝
Vulnerabilities found. Do you want to attempt exploitation? Yes
[!] WARNING: About to perform real privilege escalation attempts
[!] This will modify IAM resources
[*] Attempting AttachUserPolicy on user: dev-user
[+] Attached AdministratorAccess policy to dev-user
╔════════════════════════════════════════════════════════╗
║ Exploitation Results ║
╠════════════════════════════════════════════════════════╣
║ User │ dev-user ║
║ Method │ AttachUserPolicy ║
║ Status │ SUCCESS ║
║ Actions │ Attached AdministratorAccess ║
║ │ policy to dev-user ║
║ Result │ User now has admin privileges ║
╚════════════════════════════════════════════════════════╝
** The user now has full AWS administrator access! **
# Phase 1: Reconnaissance
python3 main.py
→ Run all discovery modules
→ Document findings
# Phase 2: Vulnerability Analysis
→ Review session results
→ Prioritize targets
# Phase 3: Exploitation
→ Exploit high-severity findings
→ Document access gained
# Phase 4: Reporting
→ Export all results to HTML
→ Generate executive summary
# View current session
Main Menu → 3. View Session Info
# Output shows:
Session ID: a1b2c3d4
Started: 2025-01-14 10:30:00
Modules Run: 5
Total Findings: 23
# Export options
Main Menu → 4. Export Results
# Choose format:
1. JSON - For integration with other tools
2. HTML - Professional client-facing report with styling
3. TXT - Plain text for documentation
# Output location:
./output/cloud_pentest_20250114_103000.html
Create new attack modules easily:
# Copy template
cp templates/module_template.py modules/discovery/my_custom_scanner.py
# Edit the module
nano modules/discovery/my_custom_scanner.py
# Framework auto-loads new modules on next run
from core.base_module import BaseModule
class MyCustomScanner(BaseModule):
def __init__(self):
super().__init__()
self.name = "My Custom Scanner"
self.description = "What it does"
self.category = "discovery" # or exploitation
self.platform = "aws" # or azure, gcp, saas
def get_requirements(self):
# Define user inputs
return {...}
def validate_input(self, inputs):
# Validate inputs
return True
def scan(self, inputs):
# Perform reconnaissance
return results
def exploit(self, targets, inputs):
# Perform exploitation
return exploit_results
Rules of engagement documented
Start with Discovery
Prioritize by severity
Controlled Exploitation
Have a rollback plan
Document Everything
Log all commands executed
Professional Reporting
# AWS Cleanup Example
aws iam delete-access-key --access-key-id AKIAI44QH8DHBEXAMPLE --user-name test-user
aws iam detach-user-policy --user-name test-user --policy-arn arn:aws:iam::aws:policy/AdministratorAccess
aws iam delete-user-policy --user-name test-user --policy-name EscalatedPolicy
# Solution: Ensure __init__.py files exist
touch modules/__init__.py
touch modules/discovery/__init__.py
touch modules/exploitation/__init__.py
touch modules/post_exploit/__init__.py
# Test credentials independently
aws sts get-caller-identity --profile your-profile
# Verify permissions
aws iam get-user
# Verify service principal has permissions
az login --service-principal -u CLIENT_ID -p CLIENT_SECRET --tenant TENANT_ID
az account show
# Verify service account file
cat /path/to/service-account.json
# Test authentication
gcloud auth activate-service-account --key-file=/path/to/service-account.json
gcloud projects list
# Verify network connectivity
ping 8.8.8.8
# Test DNS resolution
nslookup example.com 8.8.8.8
Author: ek0ms savi0r (Certified Ethical Hacker, security researcher)
╔══════════════════════════════════════════════════════════════════════════╗
║ ║
║ THIS TOOL PERFORMS REAL ATTACKS ON CLOUD INFRASTRUCTURE ║
║ ║
║ The exploitation modules WILL: ║
║ • Create access keys in AWS IAM ║
║ • Modify IAM policies and permissions ║
║ • Access and enumerate cloud storage ║
║ • Make changes to cloud resources ║
║ ║
║ UNAUTHORIZED USE IS A FEDERAL CRIME ║
║ ║
║ You are responsible for: ║
║ ✓ Obtaining proper authorization ║
║ ✓ Following all applicable laws ║
║ ✓ Any damage caused by misuse ║
║ ✓ Cleaning up test resources after engagement ║
║ ║
║ The author: ║
║ ✗ is NOT responsible for misuse ║
║ ✗ Does NOT condone illegal activity ║
║ ✗ Does NOT provide legal advice ║
║ ✗ Assumes NO liability for your actions ║
║ ║
║ USE AT YOUR OWN RISK ║
║ ║
╚══════════════════════════════════════════════════════════════════════════╝
// click a file to view source