Privilege escalation é uma das principais técnicas usadas por atacantes para obter acesso não autorizado a sistemas e dados. Nesta aula, vamos explorar as estratégias defensivas para prevenir, detectar e responder a tentativas de elevação de privilégios. Abordaremos desde a configuração de limites de recursos até a implementação de monitoramento contínuo e princípios de menor privilégio, sempre com exemplos práticos e referências a ferramentas e boas práticas do mercado.

Entender como os atacantes exploram vulnerabilidades para escalar privilégios é essencial para qualquer profissional de segurança. Vamos aprofundar em cada um dos pilares: Limits, Monitoring, Least Privilege e Detection, fornecendo um guia completo para fortalecer a postura de segurança de sua organização.

Limits

Limits referem-se à imposição de restrições sobre o que processos, usuários e sistemas podem fazer. No contexto de privilege escalation, os limites são barreiras que dificultam ou impedem que um atacante obtenha níveis mais altos de acesso. Esses limites podem ser técnicos, como configurações de kernel, ou organizacionais, como políticas de acesso.

Um dos principais mecanismos de limite em sistemas operacionais é o uso de controles de acesso obrigatórios (MAC) e discricionários (DAC). No Linux, por exemplo, o SELinux e o AppArmor impõem políticas de segurança que restringem as ações de processos mesmo quando executados com privilégios elevados. Além disso, o uso de containers com seccomp e capabilities limita o que um processo pode fazer dentro do kernel, reduzindo a superfície de ataque.

Exemplo de configuração de limite com ulimit no Linux:

# Limitar o número de processos por usuário
echo "ulimit -u 100" >> /etc/profile

# Limitar o tamanho de arquivos que podem ser criados
echo "ulimit -f 1024" >> /etc/profile

Além disso, é crucial aplicar limites em serviços de rede, como o uso de firewalls para restringir o acesso a portas administrativas e a aplicação de timeouts para sessões ociosas. A configuração de quotas de disco e memória também evita que um processo comprometido consuma recursos excessivos, facilitando a detecção de anomalias.

Monitoring

Monitoring é a prática de coletar e analisar logs e métricas para identificar atividades suspeitas que possam indicar uma tentativa de privilege escalation. O monitoramento deve ser contínuo e abrangente, incluindo logs de sistema, logs de aplicação, eventos de autenticação e mudanças em arquivos críticos.

Ferramentas como OSSEC, Auditd (no Linux) e o Windows Event Log são essenciais para capturar eventos relevantes. Por exemplo, o Auditd pode ser configurado para monitorar execuções de comandos como sudo, su, e alterações em arquivos de configuração do sistema. No Windows, a política de auditoria pode rastrear tentativas de criação de novos usuários ou alterações em grupos de administradores.

Exemplo de configuração do Auditd para monitorar execução de sudo:

-w /etc/sudoers -p wa -k sudoers_changes
-a always,exit -F path=/usr/bin/sudo -F perm=x -k sudo_exec

Além do monitoramento em tempo real, é importante estabelecer uma linha de base do comportamento normal da rede e dos sistemas. Isso permite que soluções de SIEM (Security Information and Event Management) como Splunk ou Elastic Stack correlacionem eventos e gerem alertas quando ocorrerem desvios significativos. A implementação de um programa de monitoramento eficaz também inclui a definição de alertas acionáveis e a realização de revisões periódicas dos logs.

Least privilege

O princípio do menor privilégio (least privilege) estabelece que cada usuário, processo ou sistema deve ter apenas as permissões estritamente necessárias para realizar suas funções. Essa prática reduz o impacto de uma possível exploração, pois limita o que um atacante pode alcançar após comprometer uma conta ou serviço.

Na prática, isso envolve a criação de contas de usuário com permissões mínimas, o uso de contas separadas para tarefas administrativas e a atribuição de privilégios apenas quando necessário (just-in-time). Em ambientes Linux, isso pode ser alcançado com o uso de sudo para conceder privilégios específicos, em vez de fornecer acesso root total. No Windows, a utilização de contas de usuário padrão em vez de contas de administrador é uma medida fundamental.

Exemplo de configuração de sudo com permissões limitadas:

# Permite que o usuário 'deploy' execute apenas o comando systemctl para reiniciar o serviço web
user deploy ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart nginx

Além disso, é importante revisar regularmente as permissões de arquivos e diretórios, removendo permissões excessivas e aplicando o princípio de que os direitos devem ser concedidos por tempo limitado. Ferramentas como o CyberArk ou o HashiCorp Vault podem gerenciar credenciais privilegiadas de forma segura, fornecendo acesso temporário e auditável.

Detection

Detection refere-se à capacidade de identificar e responder a tentativas de privilege escalation em andamento ou já ocorridas. A detecção eficaz combina monitoramento proativo com análise de comportamento e o uso de indicadores de comprometimento (IOCs).

Uma das abordagens é o uso de honeypots, que são sistemas ou serviços fictícios criados para atrair atacantes e observar suas técnicas. Outra é a implementação de regras de detecção em SIEMs, como a criação de alertas para eventos incomuns, como a primeira vez que um usuário executa um comando sudo ou quando um processo tenta acessar arquivos de sistema sem autorização.

Exemplo de regra de detecção no Sigma para monitorar tentativas de escalonamento via sudo:

title: Sudoers Modification
description: Detects changes to the sudoers file
tags:
    - attack.privilege_escalation
logsource:
    product: linux
    service: auditd
detection:
    selection:
        type: 'EXECVE'
        a0|contains: '/etc/sudoers'
    condition: selection
level: high

Além de regras estáticas, técnicas de machine learning podem ser empregadas para detectar anomalias no comportamento de usuários e processos. O uso de frameworks como MITRE ATT&CK ajuda a mapear as táticas e técnicas de escalonamento de privilégios, permitindo que as equipes de segurança priorizem os alertas e desenvolvam contramedidas específicas.

Boas Práticas e Observações Finais

Para fortalecer a segurança contra escalonamento de privilégios, adote uma abordagem em camadas: combine limites rigorosos, monitoramento contínuo, princípio do menor privilégio e detecção proativa. Mantenha os sistemas atualizados com patches de segurança, realize testes de penetração regulares e capacite sua equipe para reconhecer sinais de ataque. Lembre-se de que a segurança é um processo contínuo, não um destino.

Referências

Exercícios

  1. Explique a diferença entre limites técnicos e organizacionais na prevenção de escalonamento de privilégios. Dê um exemplo de cada.
  2. ✓ Resposta: Limites técnicos incluem mecanismos como SELinux, AppArmor, seccomp, ulimits, e quotas, que restringem as capacidades de processos e usuários no sistema. Limites organizacionais são políticas e procedimentos, como a exigência de aprovação para acesso administrativo, separação de funções e revisões periódicas de acesso. Exemplo técnico: configurar ulimit para limitar o número de processos; exemplo organizacional: exigir que administradores usem contas separadas para tarefas administrativas.

  3. Descreva três eventos que devem ser monitorados para detectar tentativas de escalonamento de privilégios em um sistema Linux.
  4. ✓ Resposta: 1) Execução de comandos sudo por usuários que normalmente não utilizam sudo. 2) Alterações em arquivos críticos como /etc/sudoers, /etc/passwd ou /etc/shadow. 3) Tentativas de acesso a arquivos de sistema por processos não autorizados, como um serviço web tentando ler /etc/shadow. Esses eventos podem ser monitorados com auditd e ferramentas de SIEM.

  5. Como o princípio do menor privilégio pode ser aplicado no gerenciamento de contas de serviço em um ambiente de produção? Cite duas práticas.
  6. ✓ Resposta: Prática 1: Usar contas de serviço dedicadas com permissões mínimas, sem acesso administrativo, e conceder apenas as permissões específicas necessárias para a execução do serviço. Prática 2: Implementar o fornecimento de credenciais just-in-time, onde o acesso privilegiado é concedido por tempo limitado e auditado, por exemplo, usando ferramentas como HashiCorp Vault ou CyberArk.

  7. Qual é a importância de ter uma linha de base de comportamento normal para a detecção de escalonamento de privilégios? Dê um exemplo de como uma anomalia pode ser identificada.
  8. ✓ Resposta: A linha de base permite distinguir atividades normais de anormais, reduzindo falsos positivos. Por exemplo, se um usuário normalmente executa comandos sudo apenas durante o horário comercial, uma execução às 3h da manhã pode ser considerada suspeita. Ferramentas de UEBA (User and Entity Behavior Analytics) podem usar esse padrão para gerar alertas.

  9. Cite duas ferramentas ou técnicas de detecção de escalonamento de privilégios e explique como elas funcionam.
  10. ✓ Resposta: Ferramenta 1: Honeypots, que são sistemas fictícios que atraem atacantes e registram suas ações, revelando técnicas de escalonamento. Ferramenta 2: Regras de detecção em SIEM (como Sigma) que correlacionam logs e geram alertas para eventos específicos, como a criação de um novo usuário no grupo admin ou a execução de binários suspeitos.