Elevação de privilégios locais

Autor: Luiz Vieira <ala_vieira at ig.com.br>
O que é escalada de privilégios?

Escalação ou elevação de privilégios basicamente significa adicionar mais direitos ou permissões para um usuário. Em resumo, escalação de privilégios tenta transformar um usuário normal em um usuário administrativo, usuário com maior privilégios do que o usuário atual ou fazer com que um usuário participe de outros grupos locais na máquina, com privilégio diferente do privilégio atual do atacante.

Quando exploramos alguns serviços, nem sempre conseguimos acesso root. Esse é o caso da exploração de um PHP Inject, que vimos anteriormente. Alguns outros exemplos podem ser usados, como exploração de um daemon que não é executado como root. Portanto, para conseguirmos controlar totalmente a máquina e pode executar programas que precisam de privilégios de administrador, precisamos aumentar nosso privilégio localmente.

Porém, a escalação de privilégios não está limitada apenas a aumentar os privilégios dentro do sistema operacional, mas em qualquer sistema. Por exemplo, podemos ter um acesso limitado a um servidor de banco de dados Oracle e desejamos nos tornar DBA, podendo assim acessar todas as tabelas e bases de dados existentes no banco. O ato de tornar um usuário com mais privilégios é também chamado de elevação de privilégios.

Exemplos de caso onde podemos realizar o ataque:

  • Exploração de aplicação web que não é executada como root;
  • Exploração de serviços que não são executados como root ou tem seu privilégio “dropado”
  • Exploração interna de um aplicativo, por exemplo, um Banco de Dados Oracle.
  • Quando conseguimos uma senha local, sem privilégio administrativo. Ex.: Bruteforce em servidor ssh
Possíveis alvos

Normalmente, aplicações que possuem suidroot são as mais exploradas, além do próprio kernel do sistema, que é executado com privilégios de super usuário.

Aplicações com suidroot é uma aplicação com uma permissão especial conhecida por suid bit (“s”), que quando executada, será executada com privilégios do usuário root. Portanto, se conseguirmos explorar um arquivo que possui esse tipo de permissão, provavelmente conseguiremos obter os privilégios do usuário root no sistema, conseguindo assim controle total.

Para procurarmos por arquivos com suidroot na máquina, podemos executar o comando abaixo:

# find / -perm -4000 > suidroot.txt
# less suidroot.txt
# find / -perm -04000 -exec ls -l {} \;

Além de arquivos com suidroot, também podem ser exploradas falhas no kernel do sistema, que é quem cuida dos privilégios dos usuários, e conseqüentemente, ganharemos privilégios administrativos se a falha for explorada com sucesso.

Portanto, após identificarmos os arquivos que possuem esse tipo especial de permissão, precisamos identificar falhas de segurança nesses softwares. Essas falhas podem ser públicas, ou seja, que é possível encontrar na internet, ou privada, que pode ser comprada de um pesquisador ou empresa, ou até mesmo descoberta pelo próprio atacante.

Passo a passo:

  1. Obter acesso local ao sistema
  2. Procurar possíveis alvos
  3. Tentar explorar esses alvos
  4. Acessar as informações já com privilégio maior do que o privilégio anterior

Lembrando que, atualmente, a maioria das escladas de privilégios é realizada a partir de exploits específicos para o S.O. ou aplicação que está sendo explorada. E esses exploits tnato podem ser baixados da internet, quanto desenvolvidos de maneira personalizada, caso o atacante seja um programador habilidoso.

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s