
k8scout v0.1.2
Wirf eine einzelne Binärdatei in ein kompromittiertes Kubernetes-Pod und kartiere sofort alle realistischen Angriffspfade zu cluster-admin, node escape, secret theft und cloud IAM takeover.
k8scout
Beta — Eine Single-Binary-Kubernetes-Angriffspfad-Engine für autorisierte Sicherheitsbewertungen.
Lade sie in einen kompromittierten Pod, führe sie aus und erhalte eine Karte aller realistischen Eskalationspfade – von deinem aktuellen Standpunkt bis hin zu cluster-admin, Node-Zugriff, Secret-Diebstahl und Cloud-IAM-Rollen.
Die Idee
Du hast RCE in einem Kubernetes-Pod. Und jetzt?
k8scout beantwortet diese Frage. Es entdeckt automatisch, was das Service Account des kompromittierten Pods tun kann, kartiert den RBAC-Graphen und verfolgt mehrstufige Angriffspfade von deinem exakten Standpunkt zu hochwertigen Zielen.
Es arbeitet in drei Modi:
- Offensivmodus (Standard) — läuft aus einem kompromittierten Pod heraus. Entdeckt deine Identität, Berechtigungen und alle erreichbaren Eskalationspfade von deiner aktuellen Position aus.
- Reviewer-Modus (
--reviewer-mode) — läuft mit einem Read-only-SA, um die gesamte Cluster-Angriffsfläche für alle Identitäten zu prüfen. - Recon-Modus (
--recon) — ein schneller, unauffälliger Blick nur auf deine Identität, effektive Berechtigungen und die Ressourcen, auf die du zugreifen kannst. Kein Graph oder Pathfinding. Füge--bruteforce-nshinzu, um Namespaces zu entdecken, die du nicht clusterweit auflisten kannst.
Demo
Was es findet
k8scout baut einen gewichteten Berechtigungsgraphen auf und führt Dijkstra-basiertes Pathfinding aus, um realistische mehrstufige Angriffsketten zu entdecken:
- Pod zu cluster-admin — über RBAC-Bindings, Workload-Mutation oder CRB-Erstellung
- Container-Escape zum Node — über privilegierte Container, hostPID, hostNetwork, gefährliche Capabilities oder hostPath-Mounts
- Laterale Bewegung — exec in andere Pods, deren SA-Tokens stehlen, über deren Berechtigungen pivotieren
- Secret- und Credential-Diebstahl — gemountete SA-Tokens, Secrets, ConfigMaps mit geleakten Credentials, verwaiste Tokens
- Cloud-IAM-Eskalation — IRSA (AWS), GKE Workload Identity, Azure Workload Identity, Missbrauch der projizierten Token-Audience
- Impersonation-Ketten — SA-zu-SA-Übernahme über Impersonation-Berechtigungen
- Workload-Mutation — ein Deployment patchen, um dessen SA zu ändern, und dann die Berechtigungen dieses SA erben
- Webhook-Injection — Kontrolle über mutating Webhooks, um in zukünftige Workloads zu injizieren
- GitOps-Operator-Missbrauch — ArgoCD, Flux, External Secrets und Vault-Operator-Privilegieneskalation
- Fehlkonfigurationserkennung — hängende Bindings, Wildcard-Verben, automatisch gemountete Tokens, Klartext-Secrets in Env-Variablen
Jeder Fund enthält MITRE ATT&CK-Technik-IDs, einen Risikoscore und einen schrittweisen Angriffspfad mit den tatsächlich beteiligten Graph-Knoten. Insgesamt 50 Erkennungsregeln.
Schnellstart
Aus einem kompromittierten Pod (primärer Anwendungsfall)
# Copy the binary into the pod
kubectl cp k8scout-linux-amd64 <ns>/<pod>:/tmp/k8scout
# Run it
kubectl exec -it <ns>/<pod> -- chmod +x /tmp/k8scout
kubectl exec -it <ns>/<pod> -- /tmp/k8scout --out /tmp/result.json
# Pull the results
kubectl cp <ns>/<pod>:/tmp/result.json ./result.json
# This flow works exactly like this in you're revshell!
Die Binary erkennt automatisch, dass sie im Cluster läuft, identifiziert den Pod und das SA und startet das Pathfinding von deinem exakten Standpunkt aus.
Beabsichtigte Nutzung: Penetrationstests, Red-Team-Operationen, interne Sicherheitsüberprüfungen und Cluster-Hardening-Audits. Hole immer eine ordnungsgemäße Autorisierung ein, bevor du gegen einen Cluster läufst.
Von deinem lokalen Rechner
# Uses ~/.kube/config or $KUBECONFIG
k8scout --all-namespaces --out result.json
# Target a single namespace
k8scout --namespace production --out result.json
Recon-Modus (schnelle Berechtigungs- und Ressourcenprüfung)
# Who am I, what can I do, and what resources can I access?
k8scout --recon
# Discover namespaces you can't list cluster-wide (built-in wordlist)
k8scout --recon --bruteforce-ns
# Bruteforce with your own namespace wordlist (one name per line)
k8scout --recon --bruteforce-ns --ns-wordlist ./namespaces.txt
Recon überspringt Graph-Aufbau, Inferenz und KI — es ist der schnellste Weg, um zu beantworten,
„was hat dieses Token tatsächlich?". Es meldet die aktuelle Identität, ihre
effektiven Berechtigungen (SelfSubjectRulesReview) und eine Capability-Matrix
pro Ressource (SelfSubjectAccessReview). --bruteforce-ns bestätigt, dass ein Namespace existiert,
indem es wohlbekannte Objekte liest, die jeder Namespace hat (das Namespace-Objekt, sein
default ServiceAccount oder die kube-root-ca.crt ConfigMap) — nützlich, wenn die
Identität Namespaces nicht auflisten kann, aber möglicherweise dennoch auf bestimmte zugreifen kann.
Reviewer-Modus (vollständiges Cluster-Audit)
# Deploy the read-only RBAC and job
kubectl apply -f deploy/rbac.yaml
kubectl apply -f deploy/job.yaml
# Or run directly with reviewer permissions
k8scout --reviewer-mode --all-namespaces --out result.json
Mit KI-Erzählung
export OPENAI_API_KEY="sk-..."
k8scout --all-namespaces --out result.json
Installation
Vorgefertigte Binaries
Lade sie von der Releases-Seite herunter. Alle Binaries sind statisch gelinkt und ohne Abhängigkeiten.
| Binary | Plattform |
|---|---|
k8scout-linux-amd64 | Linux x86-64 |
k8scout-linux-arm64 | Linux ARM64 |
k8scout-darwin-amd64 | macOS Intel |
k8scout-darwin-arm64 | macOS Apple Silicon |
Aus dem Quellcode bauen
Erfordert Go 1.22+.
git clone https://github.com/hac01/k8scout
cd k8scout
make build # native binary
make build-linux # static Linux amd64 binary
make build-all # all four release targets
Wie es funktioniert
k8scout (running inside compromised pod)
|
├── 1. Detect foothold
│ Pod name (HOSTNAME), SA (TokenReview), Node (downward API)
│
├── 2. Discover permissions
│ SSRR per namespace + ~30 concurrent SSAR spot-checks
│ (always permitted, no RBAC needed)
│
├── 3. Enumerate cluster objects (graceful degradation if denied)
│ Namespaces, RBAC, Workloads, Pods, Secrets, Nodes, Webhooks, CRDs
│
├── 4. Build attack graph
│ Nodes: pods, SAs, roles, bindings, secrets, workloads, nodes, cloud identities
│ Edges: runs_as, mounts, authenticates_as, can_exec, can_patch,
│ can_impersonate, runs_on, assumes_cloud_role, granted_by, ...
│
├── 5. Find attack paths (Dijkstra from foothold to high-value targets)
│ Weighted by attacker effort — cheapest (most realistic) paths first
│ Targets: cluster-admin, nodes, SA tokens, cloud IAM, privileged workloads
│
├── 6. Run inference rules (50 rules with MITRE ATT&CK mapping)
│
├── 7. Optional: AI risk narrative (GPT-4o)
│
└── 8. Output: text summary + JSON report
Selbst mit einem minimalen SA, das Pods oder RBAC-Objekte nicht auflisten kann, synthetisiert das Tool den Foothold-Graphen allein aus Identitätsdaten und entdeckt, was über SSRR/SSAR-Berechtigungen erreichbar ist.