2119 Views
Tempo de leitura: 4 MinutosAtaques de escalonamento de privilégios tem se tornado cada vez mais frequentes. São os “vírus” do Linux e o terror de todo administrador de sistemas.
Evitá-los é um trabalho minucioso que demanda atenção e boa experiência por parte do time de sysadmins. Dentro desse contexto, é bem possível evitá-los.
Nesse post vou falar como a memória RAM pode ser usada nesse processo de ganho de privilégios.
O que é escalonamento de privilégios?
O Linux possui uma estrutura de permissionamento baseado em usuários e grupos com permissões e restrições. O escalonamento de privilégios consiste em ganhar acesso root a partir de um usuário sem os devidos privilégios.
Observe que um invasor que tenha em mãos usuário e senha para acesso ao servidor e, com ele, consiga tornar-se root sem uso de ferramentas/programas específicos não pode ser considerado uma invasão. Considere isso uma falha gravíssima de governança, pois um terceiro, neste caso, ganhou acesso fácil ao servidor. Um ataque seguido de invasão algo é diferente.
E como ocorre o escalonamento de privilégios?
Em caso de ataques de escalonamentos o ator/invasor precisa de acesso ao servidor para armazenar seus malwares. Portanto, primeiramente, é preciso ganhar esse acesso. O acesso pode ser obtido por ataque de força bruta (Brute Force) onde o ator/invasor consegue acesso ao servidor por “adivinhação” da senha de um usuário sem privilégios. O acesso para armazenar malwares também pode ser obtido por inclusão remota de arquivos (RFI – Remote File Inclusion). Geralmente, servidores bem configurados não são suscetíveis a ataques de força bruta. Consequentemente a invasão pode ocorrer por inclusão remota de arquivos.
Observação: | |
Por Brute Force pode-se ganhar acesso root em servidores Linux. Mas aí é outra história; estamos falando de servidores extremamente mal configurados. O cenário descrito aqui se aplica para servidores minimamente bem configurados. |
O que é RFI?
Remote file inclusion é uma técnica de inserção de arquivos por meio de brechas de segurança em websites e/ou sistemas baseados em Web.
Um site vulnerável geralmente possui permissões além das necessárias, e com isso o ator/invasor pode se fazer valer dessas brechas para incluir arquivos, forçando o site a dar um “GET” em um conteúdo remoto ou simplesmente fazendo um “POST” para o site, incluindo, assim, um arquivo remotamente.
Esses arquivos, geralmente, são shell scripts que passam por sistemas anti-malware como antivirus, por exemplo. Uma vez alocado no servidor, o script baixa outros scripts, e esses sim são os verdadeiros malwares que fará o escalonamento de privilégios.
Alguns desses scripts são tão sofisticados que podem se schedular no sistema para checar se o malware continua alocado no servidor, como foi o caso do cve-2019-10149 já abordado aqui.
Finalmente, o escalonamento de privilégios
Uma vez que o acesso tenha sido obtido e o malware alocado, esse malware é executado e tenta manipular a pilha de memória de forma que o processo de execução do programa em questão passe a usar ponteiros de memória de programas com privilégios elevados, como daemons de serviços, por exemplo.
Vamos entender como um processo se comporta na memória RAM, então entenderemos facilmente como esses ataques são realizados.
Como o processo se comporta na RAM?
Em uma outra oportunidade falarei mais sobre memória RAM, mas por ora precisamos entender como um processo é tratado dentro da memória.
Quando executamos um processo, temos os seguintes dados carregados na memória RAM:
- Código fonte;
- Variáveis não inicializadas;
- Dados de inicialização;
- Alocação dinâmica (Heap);
- Variáveis/funções do sistema (Stack).
A Stack é a pilha propriamente dita. Nosso processo possui algumas instruções dentro da pilha, como vemos na imagem abaixo:
Estouro de pilha e ganho de privilégios
O escalonamento de privilégios ocorre aqui. Por meio de estouro de buffer, ou buffer overflow, sobrescreve-se parte da pilha e, assim, consegue-se manipular ponteiros pegando para si o endereços de retorno de funções de processos com nível elevado, como os já mencionados daemons de serviços, por exemplo. Nesse momento são executados programas arbitrários que exploram o sistema com nível elevado de privilégios, ganhando acesso root ao sistema.
Uma vez que o acesso root foi obtido, o ator pode fazer praticamente qualquer coisa. Na maioria das vezes, esse esforço para obter acesso root se deve a fins de:
- Encriptar dados;
- Minerar bitcoins;
- Deface de sites e serviços;
- Roubo de dados;
- Obter terminais escravos para Botnets;
- Rodar sites/sistemas clones de bancos;
- Entre outros.
É melhor você ter um backup
Ao se encontrar nessa situação, com um servidor ownado, a melhor coisa a se fazer é isolar o servidor antes que ocorram ataques horizontais. Esses são ataques de dentro da sua rede para dentro da sua rede.
Após isolar o servidor, é hora de analizá-lo para entender a causa do problema. Leitura de logs ajudam muito nessa hora.
E após todo o fluxo necessário de análises, pode-se reinstalar o servidor, já aplicando as devidas correções, e subir um backup dos dados para somente então colocá-lo em produção novamente.
E como evitar?
Aí é que está; depende muito do tipo de operação que o servidor realiza e do tipo de acesso que se tem a ele.
Mas algumas coisas são aplicáveis para todos os tipos de servidores:
- Manter o servidor sempre atualizado;
- Firewall bem configurado e restritivo;
- Adotar políticas rígidas de acesso de colaboradores ao servidor;
- Tratar corretamente o permissionamento de arquivos e diretórios;
- Usar no_exec em pontos de montagem que não demandam execução de scripts;
- Manter o SELinux ativo;
- Adotar ferramentas de WAF;
- Desativando serviços desnecessários (hardening);
- Usar softwares de mitigação de tráfego;
- Monitorar proativamente as demandas e criar meios de identificar acessos abusivos;
- Fazer manutenção periódica.
Perece muita coisa, mas isso é bem básico. Acima de qualquer coisa, você vai precisar de gente experiente ao seu lado e muitos alinhamentos com gerentes e colaboradores.
Resumo
Ataques de escalonamento nunca tiveram tão em alta. Com alguns cuidados básicos pode-se evitar muitas dores de cabeça. É claro que, para ataques direcionados, onde um invasor tenta penetrar na sua empresa, você vai precisar de muitos mais do que cuidados básicos.
Contar com profissionais experientes é fundamental para a segurança da empresa, e não somente isso; fazer manutenção constante, revisitar máquinas e fazer pente fino é fundamental.
A segurança tem um preço, mas esse preço é bem menor do que a insegurança.
Abraço e até a próxima!