
k8scout v0.1.2
Solte um único binário em um pod Kubernetes comprometido e mapeie instantaneamente todos os caminhos de ataque realistas para cluster-admin, escape de nó, roubo de segredos e tomada de controle de IAM na nuvem.
k8scout
Beta — Um motor de caminhos de ataque Kubernetes em binário único para avaliações de segurança autorizadas.
Coloque-o em um pod comprometido, execute-o e obtenha um mapa de todos os caminhos realistas de escalação, do seu ponto de apoio atual até cluster-admin, acesso a nós, roubo de segredos e funções IAM na nuvem.
A ideia
Você tem RCE em um pod Kubernetes. E agora?
O k8scout responde a essa pergunta. Ele descobre automaticamente o que a service account do pod comprometido pode fazer, mapeia o grafo RBAC e traça caminhos de ataque de várias etapas a partir do seu ponto de apoio exato até alvos de alto valor.
Ele funciona em três modos:
- Modo ofensivo (padrão) — execute de dentro de um pod comprometido. Descobre sua identidade, permissões e todos os caminhos de escalação alcançáveis a partir da sua posição atual.
- Modo revisor (
--reviewer-mode) — execute com uma SA somente leitura para auditar toda a superfície de ataque do cluster para todas as identidades. - Modo recon (
--recon) — uma visão rápida e de baixa pegada apenas da sua identidade, permissões efetivas e quais recursos você pode acessar. Sem grafo ou busca de caminhos. Adicione--bruteforce-nspara descobrir namespaces que você não consegue listar em todo o cluster.
Demonstração
O que ele encontra
O k8scout constrói um grafo de permissões ponderado e executa busca de caminhos baseada em Dijkstra para descobrir cadeias de ataque realistas de várias etapas:
- Pod para cluster-admin — através de bindings RBAC, mutação de workloads ou criação de CRB
- Escape de container para nó — via containers privilegiados, hostPID, hostNetwork, capabilities perigosas ou montagens hostPath
- Movimento lateral — exec em outros pods, roubo de seus tokens de SA, pivô através de suas permissões
- Roubo de segredos e credenciais — tokens de SA montados, secrets, configmaps com credenciais vazadas, tokens órfãos
- Escalação de IAM na nuvem — IRSA (AWS), GKE Workload Identity, Azure Workload Identity, abuso de audience de token projetado
- Cadeias de impersonação — tomada de controle SA-para-SA através de permissões de impersonação
- Mutação de workloads — patch em um deployment para alterar sua SA e então herdar as permissões dessa SA
- Injeção de webhook — controle de webhook mutante para injetar em workloads futuros
- Abuso de operadores GitOps — escalação de privilégios em ArgoCD, Flux, External Secrets e operador Vault
- Detecção de má configuração — bindings pendentes, verbos wildcard, tokens montados automaticamente, segredos em texto claro em variáveis de ambiente
Cada descoberta inclui IDs de técnicas MITRE ATT&CK, uma pontuação de risco e caminho de ataque passo a passo com os nós reais do grafo envolvidos. 50 regras de detecção no total.
Início rápido
De um pod comprometido (caso de uso principal)
# 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!
O binário detecta automaticamente que está sendo executado dentro do cluster, identifica o pod e a SA e inicia a busca de caminhos a partir do seu ponto de apoio exato.
Uso pretendido: Engajamentos de teste de penetração, operações de red team, revisões de segurança internas e auditorias de hardening de cluster. Sempre obtenha autorização adequada antes de executar contra qualquer cluster.
Da sua máquina local
# Uses ~/.kube/config or $KUBECONFIG
k8scout --all-namespaces --out result.json
# Target a single namespace
k8scout --namespace production --out result.json
Modo recon (verificação rápida de permissões e recursos)
# 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
O recon pula a construção de grafo, inferência e IA — é a maneira mais rápida de responder
"o que este token realmente tem?". Ele reporta a identidade atual, suas
permissões efetivas (SelfSubjectRulesReview) e uma matriz de capacidades por recurso
(SelfSubjectAccessReview). --bruteforce-ns confirma que um namespace existe
lendo objetos bem conhecidos que todo namespace possui (o objeto namespace, sua
ServiceAccount default, ou o ConfigMap kube-root-ca.crt) — útil quando a
identidade não consegue listar namespaces mas ainda pode acessar namespaces específicos.
Modo revisor (auditoria completa do cluster)
# 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
Com narrativa de IA
export OPENAI_API_KEY="sk-..."
k8scout --all-namespaces --out result.json
Instalação
Binários pré-compilados
Baixe da página de Releases. Todos os binários são estaticamente linkados sem dependências.
| Binário | Plataforma |
|---|---|
k8scout-linux-amd64 | Linux x86-64 |
k8scout-linux-arm64 | Linux ARM64 |
k8scout-darwin-amd64 | macOS Intel |
k8scout-darwin-arm64 | macOS Apple Silicon |
Compilar a partir do código-fonte
Requer 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
Como funciona
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
Mesmo com uma SA mínima que não consegue listar pods ou objetos RBAC, a ferramenta sintetiza o grafo de ponto de apoio apenas a partir dos dados de identidade e descobre o que é alcançável através das permissões SSRR/SSAR.