Linux > Como funcionam os ataques de escalonamento de privilégios

Entenda como funcionam os ataques de escalonamento de privilégios no Linux! Hackers exploram vulnerabilidades para obter controle total do sistema. Descubra os métodos usados, como se proteger e manter sua segurança digital em dia.

2586 Views
Tempo de Leitura: 5.54 minutos

Ataques de escalonamento de privilégios são um dos principais vetores de ataques a sistemas Linux. Em se tratando de invasão, acredito que seja o top 1. Eles começam com serviços vulneráveis em execução no sistema e expostos para a Internet. Geralmente desatualizados e com exploits publicados ou mal configurados e muito permissivos. Uma vez que esse sistema seja explorado e o invasor tenha acesso ao sistema, buscará formas de elevar seus privilégios para ter total controle sobre o sistema.

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 logar normalmente no sistema e 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?

Primeiramente o ator/invasor precisa de acesso ao servidor para armazenar e executar ferramentas que testarão a segurança do sistema. Por meio de varreduras, essas ferramentas analisam diretórios, usuários, serviços, entre outros, em busca de permissões mal configuradas ou vulnerabilidades conhecidas.

Para conseguir esse acesso, o ator/invasor pode usar diversos métodos como Engenharia Social, Brute Force, entre outros, mas o mais clássico é o uso nmap para fazer enumeração de portas e serviços seguido do uso de exploits.

O acesso para armazenar ferramentas de invasão também pode ser obtido, inicialmente, por RFI (Remote File Inclusion), RFE (Remote File Execution) e Shell Reverso.

Todos esses métodos utilizam vulnerabilidades em sites/sistemas web based para inserir de arquivos em servidores Web e executar comando arbitrários.

Uma vez que o script malicioso esteja alocado no servidor, pode ser executado via browser para abrir as portas para o ator/invasor.

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.

Uma vez que o acesso desprivilegiado tenha sido obtido, SSH, nesse caso, o ator/invasor executará ferramentas de varreduras. Ele buscará diretórios com excesso de permissão, usuários e serviços privilegiados, entre outros. Fará uma leitura do sistema para identificar o que pode ser explorado.

Havendo no sistema um software/serviço privilegiado em execução e com alguma vulnerabilidade lhe que permita escalar privilégios, o ator/invasor poderá manipular as instruções na pilha de memória para que, ao invés do serviço executar suas instruções, execute outro programa ou ação passada pelo ator. Como o programa roda privilegiado, executará o programa do ator/invasor com privilégios. É aqui que ocorre o ganho de privilégio total no sistema.

Vamos entender como um processo se comporta na memória RAM:

Como o processo se comporta na RAM?

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 serviços privilegiados. Nesse momento são executados programas 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 pacotes do sempre atualizados, inclusive de serviços;
  • Desativando serviços desnecessários (hardening);
  • Adotar ferramentas de WAF para aplicações Web;
  • Usar softwares de mitigação de tráfego;
  • Monitorar portas do sistema. Se alguma nova porta subir, alarmar crítico;
  • Firewall bem configurado e restritivo para input e output;
  • Tratar corretamente o permissionamento de arquivos e diretórios;
  • Adotar políticas rígidas de acesso de colaboradores ao servidor;
  • Usar no_exec em pontos de montagem que não demandam execução de scripts;
  • Manter o SELinux ativo para sistemas Red Hat;
  • Monitorar as conexões SSH;
  • Restringir o acesso SSH a rede interna/VPN;
  • Monitorar proativamente as demandas e criar meios de identificar acessos abusivos;
  • Fazer manutenção periódica.

Perece muita coisa, mas isso muito 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 foca exclusivamente 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!

9 - 1

Thank You For Your Vote!

Sorry You have Already Voted!

Rolar para cima