# 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)*