# T1609 - Comando de Administração de Container ## Descrição Adversários que já obtiveram acesso a um ambiente de containers podem explorar os próprios serviços de administração da plataforma - como o daemon do Docker, a API do Kubernetes ou o kubelet - para executar comandos dentro de containers em execução. Essa abordagem aproveita funcionalidades legítimas de gerenciamento remoto, tornando a atividade maliciosa difícil de distinguir de operações administrativas normais. No ecossistema Docker, o daemon expõe uma API REST (por padrão no socket Unix `/var/run/docker.sock` ou, em configurações inseguras, em uma porta TCP sem autenticação). Um adversário com acesso a esse socket pode executar comandos em qualquer container do host com `docker exec`, implantar novos containers com entrypoints maliciosos ou montar o sistema de arquivos do host dentro de um container para escalar privilégios. Essa configuração incorreta - expor o Docker socket sem proteção - é um dos vetores mais explorados em ambientes cloud. No Kubernetes, se um adversário obtiver permissões suficientes (via credenciais comprometidas, RBAC mal configurado ou token de service account vazado), pode usar `kubectl exec` para abrir um shell interativo em qualquer pod do cluster. Alternativamente, pode interagir diretamente com a API do kube-apiserver ou com o kubelet (porta 10250) para executar comandos sem passar pelo plano de controle principal. **Contexto Brasil/LATAM:** A adoção acelerada de Kubernetes e containers em empresas brasileiras dos setores financeiro, varejo e tecnologia criou uma superfície de ataque crescente que muitas equipes de segurança ainda não dominam. O grupo [[g0139-teamtnt|TeamTNT]] - especializado em cryptomining em ambientes cloud e Kubernetes - é o principal ator documentado explorando essa técnica. Campanhas de [[s0601-hildegard|Hildegard]] e [[s0599-kinsing|Kinsing]] comprometeram clusters Kubernetes mal configurados para minerar criptomoedas, afetando provedores de cloud na região. ## Attack Flow ```mermaid graph TB A[Reconhecimento<br/>varredura de portas Docker/Kubelet expostas] --> B[Acesso inicial<br/>API sem autenticação ou credencial comprometida] B --> C[T1609 - COMANDO DE ADMINISTRAÇÃO<br/>docker exec / kubectl exec / API kubelet] C --> D[Execução de payload no container] D --> E1[Cryptominer implantado<br/>campanhas TeamTNT/Kinsing] D --> E2[Escape do container<br/>para o host via volume mount] E2 --> F[Comprometimento total do nó<br/>ou do cluster Kubernetes] ``` ## Como Funciona 1. **Preparação** - O adversário localiza APIs de administração de containers expostas públicamente (daemon Docker na porta 2375/2376 sem TLS, kubelet na porta 10250, kube-apiserver sem autenticação) por meio de ferramentas de varredura. Alternativamente, compromete uma credencial com permissões de `exec` no cluster. 2. **Execução** - Com acesso à API, o adversário executa comandos diretamente em containers ativos ou cria novos containers com configurações privilegiadas. No Docker, usa `docker exec -it <container> /bin/sh` ou define um `entrypoint` malicioso no deploy. No Kubernetes, usa `kubectl exec <pod> -- /bin/sh` ou chama diretamente o endpoint `/exec` da API do kubelet. 3. **Pós-execução** - Dentro do container, o adversário pode implantar miners de criptomoeda, exfiltrar variáveis de ambiente com credenciais, tentar o escape do container (via volumes montados, capabilities privilegiadas ou vulnerabilidades do kernel), ou usar o container como pivot para movimentação lateral dentro do cluster. **Exemplo de artefato de detecção:** ```bash # Chamada direta à API do kubelet sem autenticação (porta 10250): # GET https://<node-ip>:10250/exec/<namespace>/<pod>/<container> # com parâmetros: command=/bin/sh&stdin=true&stdout=true&tty=true # Equivalente com kubectl (requer kubeconfig comprometido): # kubectl exec -n kube-system <privileged-pod> -- cat /etc/shadow ``` ## Detecção **Fontes de dados:** Logs de auditoria do Kubernetes (audit logs do kube-apiserver), logs do daemon Docker (`journald`), métricas de CPU/rede anômalas nos nós (indicativo de miner), alertas de Falco (runtime security), SIEM com integração Cloud Trail/Azure Monitor/GCP Cloud Audit. ```yaml title: Execução de Comando em Container via kubectl exec ou API Docker id: b7d2e3f5-8a99-4c12-a1b3-d4f6c8e9b012 status: experimental description: > Detecta uso de kubectl exec ou chamadas diretas à API Docker/kubelet para executar comandos interativos em containers, padrão comum em abuso de serviços de administração de container por adversários. logsource: category: kubernetes_audit product: kubernetes detection: selection_kubectl_exec: verb: creaté resource: pods/exec responseStatus.code: 101 selection_docker_api: requestURI|contains: '/exec/' requestURI|endswith: '/start' filter_known_admins: user.username|startswith: - 'system:serviceaccount:kube-system' condition: (selection_kubectl_exec or selection_docker_api) and not filter_known_admins falsepositives: - Administradores legítimos realizando troubleshooting - Pipelines de CI/CD com permissões de exec level: high tags: - attack.execution - attack.t1609 ``` ## Mitigação | Mitigação | Recomendação Prática | |-----------|---------------------| | [[m1018-user-account-management\|M1018 - User Account Management]] | Auditar regularmente usuários e service accounts com permissões `exec` no Kubernetes. Remover permissões de exec de service accounts que não necessitam dela. | | [[m1026-privileged-account-management\|M1026 - Privileged Account Management]] | Aplicar o princípio de mínimo privilégio no RBAC do Kubernetes. Nunca usar a service account `default` para cargas de trabalho de produção. Rotacionar credenciais de acesso ao cluster periodicamente. | | [[m1042-disable-or-remove-feature-or-program\|M1042 - Disable or Remove Feature or Program]] | Desabilitar a API do kubelet sem autenticação (flag `--anonymous-auth=false`). Nunca expor o Docker daemon via TCP sem TLS mútuo. Remover o Docker socket de containers que não precisam dele. | | [[m1035-limit-access-to-resource-over-network\|M1035 - Limit Access to Resource Over Network]] | Restringir acesso ao kube-apiserver, kubelet (porta 10250) e Docker daemon a redes administrativas conhecidas via firewall e Network Policies. | | [[m1038-execution-prevention\|M1038 - Execution Prevention]] | Implementar políticas de segurança de pods (Pod Security Standards) para impedir containers privilegiados e volume mounts perigosos. Usar ferramentas de runtime security como Falco para detectar execução anômala. | ## Software Associado - [[s0683-peirates|Peirates]] - ferramenta de pentest para Kubernetes que automatiza a exploração de T1609 - [[s0601-hildegard|Hildegard]] - malware de cryptomining que usa `kubectl exec` para se propagar em clusters - [[s0623-siloscape|Siloscape]] - malware que escapa de containers Windows para comprometer nós do cluster - [[s0599-kinsing|Kinsing]] - malware de cryptomining ativo em clusters Kubernetes expostos na América Latina ## Referências *Fonte: [MITRE ATT&CK - T1609](https://attack.mitre.org/techniques/T1609)*