
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-Engine für Kubernetes-Angriffspfade für autorisierte Sicherheitsbewertungen.
Setzen Sie es in einen kompromittierten Pod ein, führen Sie es aus und erhalten Sie eine Karte jedes realistischen Eskalationspfades – von Ihrem aktuellen Fußpunkt bis zu Cluster-Admin, Node-Zugriff, Geheimnisdiebstahl und Cloud-IAM-Rollen.
Die Idee
Sie haben RCE in einem Kubernetes-Pod. Und jetzt?
k8scout beantwortet diese Frage. Es entdeckt automatisch, was der Service-Account des kompromittierten Pods tun kann, bildet den RBAC-Graphen ab und verfolgt mehrstufige Angriffspfade von Ihrem genauen Fußpunkt zu hochwertigen Zielen.
Es funktioniert in drei Modi:
- Offensiver Modus (Standard) — Ausführung von innerhalb eines kompromittierten Pods. Erkennt Ihre Identität, Berechtigungen und alle erreichbaren Eskalationspfade von Ihrer aktuellen Position aus.
- Reviewer-Modus (
--reviewer-mode) — Ausführung mit einem schreibgeschützten SA, um die gesamte Cluster-Angriffsfläche für alle Identitäten zu prüfen. - Recon-Modus (
--recon) — eine schnelle, ressourcenschonende Untersuchung Ihrer Identität, effektiven Berechtigungen und Ressourcen, die Sie berühren können. Kein Graph oder Pfadfindung. Fügen Sie--bruteforce-nshinzu, um Namespaces zu entdecken, die Sie nicht clusterweit auflisten können.
Demo
Was es findet
k8scout erstellt einen gewichteten Berechtigungsgraphen und führt eine Dijkstra-basierte Pfadfindung durch, um realistische mehrstufige Angriffsketten zu entdecken:
- Pod zu Cluster-Admin — über RBAC-Bindungen, Workload-Mutation oder CRB-Erstellung
- Container-Escape zum Node — via privilegierte Container, hostPID, hostNetwork, gefährliche Capabilities oder hostPath-Mounts
- Laterale Bewegung — exec in andere Pods, deren SA-Token stehlen, durch ihre Berechtigungen pivotieren
- Geheimnis- und Credential-Diebstahl — eingehängte SA-Token, Geheimnisse, Configmaps mit durchgesickerten Credentials, verwaiste Token
- Cloud-IAM-Eskalation — IRSA (AWS), GKE Workload Identity, Azure Workload Identity, Missbrauch von projizierten Token-Audiences
- Impersonationsketten — SA-zu-SA-Übernahme durch Impersonationsberechtigungen
- Workload-Mutation — patchen eines Deployments, um dessen SA zu ändern und dann die Berechtigungen dieser SA zu erben
- Webhook-Injektion — Kontrolle über mutierende Webhooks, um in zukünftige Workloads zu injizieren
- GitOps-Operator-Missbrauch — ArgoCD, Flux, External Secrets und Vault-Operator-Rechteausweitung
- Fehlkonfigurationserkennung — lose Bindungen, Wildcard-Verben, automatisch eingehängte Token, Klartext-Geheimnisse in Env-Variablen
Jeder Fund enthält MITRE ATT&CK-Technik-IDs, eine Risikobewertung und einen schrittweisen Angriffspfad mit den tatsächlich beteiligten Graph-Knoten. Insgesamt 50 Erkennungsregeln.
Schnellstart
Von 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!
Das Binary erkennt automatisch, dass es im Cluster läuft, identifiziert den Pod und die SA und beginnt die Pfadfindung von Ihrem genauen Fußpunkt aus.
Beabsichtigte Verwendung: Penetrationstests, Red-Team-Einsätze, interne Sicherheitsüberprüfungen und Cluster-Härtungsaudits. Holen Sie immer die entsprechende Genehmigung ein, bevor Sie es gegen einen Cluster ausführen.
Von Ihrem lokalen Computer
# 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 Grapherstellung, Inferenz und KI – es ist der schnellste Weg, um zu beantworten, "was dieses Token eigentlich hat". Es meldet die aktuelle Identität, ihre effektiven Berechtigungen (SelfSubjectRulesReview) und eine ressourcenspezifische Fähigkeitsmatrix (SelfSubjectAccessReview). --bruteforce-ns bestätigt, dass ein Namespace existiert, indem es bekannte Objekte liest, die jeder Namespace hat (das Namespace-Objekt selbst, sein default ServiceAccount oder die kube-root-ca.crt ConfigMap) – nützlich, wenn die Identität keine Namespaces auflisten kann, aber möglicherweise auf bestimmte zugreifen darf.
Reviewer-Modus (vollständige Cluster-Prüfung)
# 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
Laden Sie sie von der Releases-Seite herunter. Alle Binaries sind statisch gelinkt und haben keine 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 erstellen
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. Fußpunkt erkennen
│ Pod-Name (HOSTNAME), SA (TokenReview), Node (downward API)
│
├── 2. Berechtigungen entdecken
│ SSRR pro Namespace + ~30 gleichzeitige SSAR-Stichproben
│ (immer erlaubt, kein RBAC nötig)
│
├── 3. Cluster-Objekte aufzählen (gnädige Degradierung bei Verweigerung)
│ Namespaces, RBAC, Workloads, Pods, Secrets, Nodes, Webhooks, CRDs
│
├── 4. Angriffsgraphen erstellen
│ Knoten: Pods, SAs, Rollen, Bindungen, Secrets, Workloads, Nodes, Cloud-Identitäten
│ Kanten: runs_as, mounts, authenticates_as, can_exec, can_patch,
│ can_impersonate, runs_on, assumes_cloud_role, granted_by, ...
│
├── 5. Angriffspfade finden (Dijkstra vom Fußpunkt zu hochwertigen Zielen)
│ Gewichtet nach Angreiferaufwand – billigste (realistischste) Pfade zuerst
│ Ziele: Cluster-Admin, Nodes, SA-Token, Cloud IAM, privilegierte Workloads
│
├── 6. Inferenzregeln ausführen (50 Regeln mit MITRE ATT&CK-Zuordnung)
│
├── 7. Optional: KI-Risikoerzählung (GPT-4o)
│
└── 8. Ausgabe: Textzusammenfassung + JSON-Bericht