Segurança de Privilege Escalation
LidoAula sobre segurança de privilege escalation, cobrindo conceitos de limits, monitoring, least privilege e detection, com foco em mitigação e boas práticas.
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
- OWASP: Privilege Escalation
- MITRE ATT&CK: Exploitation for Privilege Escalation
- Linux Kernel Security Documentation
- Microsoft: Auditing Privilege Use
- CIS Controls
- Linux auditd man page
- SANS: Monitoring Privilege Escalation
Exercícios
- Explique a diferença entre limites técnicos e organizacionais na prevenção de escalonamento de privilégios. Dê um exemplo de cada.
- Descreva três eventos que devem ser monitorados para detectar tentativas de escalonamento de privilégios em um sistema Linux.
- 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.
- 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.
- Cite duas ferramentas ou técnicas de detecção de escalonamento de privilégios e explique como elas funcionam.