Guia Prático de Escalada de Privilégio em Sistemas Linux

A escalada de privilégios é um conceito-chave para invasores que buscam acesso a informações confidenciais ou funcionalidades restritas em um sistema de informação. Normalmente, isso envolve explorar vulnerabilidades de segurança em um determinado sistema para escalar de um nível de acesso limitado, com permissões padrão, para um nível de acesso mais alto, com direitos mais amplos.

No Linux, existem diversas técnicas para aumentar os privilégios de um usuário. Exploração de fragilidades de configuração, vulnerabilidades em programas e controle de acesso quebrado são as principais.

No entanto, os riscos associados à escalada de privilégios são significativos, pois um invasor pode acessar dados confidenciais, executar modificações não autorizadas ou usar o sistema para outros fins maliciosos. De fato, esta é uma questão que não deve ser encarada levianamente pelos administradores de sistemas, que devem sempre considerar esse risco e implementar medidas de segurança adequadas para evitá-lo.

Neste artigo, detalharemos as principais técnicas de escalonamento de privilégios no Linux com exemplos concretos para ilustrar como elas funcionam, bem como as melhores dicas de segurança para evitá-las.

Quais são as principais técnicas para escalonamento de privilégios no Linux?

Explorando fraquezas de configuração

A primeira e provavelmente a mais comum técnica de escalonamento de privilégios no Linux é explorar vulnerabilidades de configuração. Isso é feito aproveitando a falta de configuração das configurações de segurança do sistema para acessar dados ou recursos restritos (fora das permissões pretendidas).

Senhas fracas e ataques de força bruta

Um exemplo comum de vulnerabilidade de configuração que pode ser facilmente explorada é a presença de uma conta com uma senha fraca. De fato, um invasor poderia, usando força bruta, tentar descobrir a senha da conta usando uma lista de senhas usadas com frequência. Além disso, para aumentar as chances de sucesso de um ataque de força bruta, é possível criar uma lista de senhas com variáveis, integrando, por exemplo, o nome, a empresa, a data de nascimento, etc., de um alvo específico.

Na verdade, os seguintes exemplos de senhas (lista não exaustiva), que ainda são muito usados, devem ser evitados porque a maioria delas pode ser adivinhada em menos de 10 segundos com o dicionário certo:

•	password
•	123456
•	123456789
•	admin
•	administrator
•	root
•	toor

Para evitar esses riscos, os administradores de sistema devem garantir que as senhas usadas para as contas sejam fortes e exclusivas. Para isso, é altamente recomendável usar gerenciadores de senhas para gerar senhas longas, aleatórias e, portanto, difíceis de adivinhar. Para o mesmo propósito, o PAM (Módulos de Autenticação Plugáveis) pode ser configurado para impor o uso de senhas fortes, por exemplo, exigindo um número mínimo de caracteres ou proibindo a presença do nome do usuário na senha, etc.

Por fim, outro mecanismo para combater ataques de força bruta é a implementação do fail2ban , que bane automaticamente endereços IP após várias conexões com falha.

Para mais informações, recomendamos nosso artigo: Ataques de força bruta: princípios e melhores práticas de segurança .

Controle de acesso quebrado e violação de privilégio mínimo

O princípio do menor privilégio deve ser respeitado para os serviços configurados. Se um invasor explorar uma vulnerabilidade em um serviço executado como administrador, ele terá os mesmos privilégios que o serviço. Por exemplo, se um servidor web, executado com permissões de administrador, permitir a execução de código arbitrário por meio de uma vulnerabilidade, esse código será executado com a conta de administrador.

Na maioria das vezes, durante nossos testes de penetração, observamos falhas no controle de acesso a arquivos ou programas. No entanto, se esses ativos tiverem permissões incorretas, um usuário com privilégios baixos poderá lê-los ou modificá-los.

Por exemplo, considere o seguinte caso: o arquivo vaadata_secret_protected.pdf só pode ser lido e modificado pelo usuário root. Por outro lado, o arquivo vaadata_secret.pdfpode ser lido por qualquer usuário.

-rwx------ 1 root root    0 Jan 17 14:56 vaadata_secret_protected.pdf
-rwxr--r-- 1 root root    0 Jan 17 14:56 vaadata_secret.pdf

Uma configuração incorreta de direitos de acesso pode estar presente no arquivo de configuração de um serviço usado com mais privilégios do que o usuário atual e pode permitir que o serviço seja assumido.

É importante observar que existem muitas outras vulnerabilidades de configuração que podem ser exploradas para aumentar privilégios no Linux. Os administradores de sistema devem, portanto, estar cientes desses riscos e tomar as medidas de segurança adequadas para evitá-los.

Explorando vulnerabilidades em programas

Outro método comum de escalonamento de privilégios no Linux é explorar vulnerabilidades em programas (sistemas operacionais, servidores web, bancos de dados, etc.). Essas vulnerabilidades podem ser bugs no código que permitem que invasores executem código arbitrário ( RCE ) com privilégios elevados.

Por exemplo, uma vulnerabilidade de estouro de buffer em um programa pode permitir a escalada de privilégios. Bugs desse tipo podem permitir que invasores executem código arbitrário usando uma entrada maliciosa que excede o tamanho alocado para essa entrada. Os invasores podem então executar comandos com privilégios altos usando os privilégios do programa vulnerável.

Um segundo exemplo seriam vulnerabilidades em serviços de gerenciamento de arquivos. Serviços como Samba, NFS e FTP são usados ​​para compartilhar arquivos entre diferentes sistemas. Se esses serviços contiverem vulnerabilidades, invasores poderão acessar arquivos confidenciais ou executar comandos com privilégios elevados. Em 2019, o lançamento de uma vulnerabilidade no vsftpd 2.3.4 ( CVE-2011-2523 ) permitiu que invasores assumissem o controle de servidores FTP usando um backdoor no software.

Explorando privilégios locais

No Linux, os programas podem ser configurados para serem executados com a conta de outro usuário (SUID), a conta de outro grupo (SGID) ou com recursos adicionais.

Esses programas precisam de acesso a recursos ou informações restritas para funcionar corretamente. Por exemplo, o passwdutilitário precisa ser executado rootpara editar o arquivo de senhas. Assim, esses programas podem ser configurados de forma a se tornarem vulneráveis ​​a ataques, permitindo que invasores aumentem seus privilégios.

Por exemplo, se o binário nmap tiver o bit SUID, os comandos executados serão executados com o usuário que possui o arquivo nmap.

TF=$(mktemp)
echo 'os.execute("/bin/sh")' > $TF
nmap --script=$TF

O site GTFOBins lista técnicas para explorar um binário com privilégios devido à configuração incorreta.

Por fim, outra possibilidade para um invasor obter privilégios são as tarefas automatizadas (tarefas cron). Podemos imaginar um cenário em que uma tarefa agendada para executar um script pode ser modificada por todos os usuários.

# > ls -la /opt/backup.sh

-rw-rw-rw- 1 root root 0 Jan 17 15:07 backup.sh

Dessa forma, um invasor pode modificar o conteúdo do script para que a tarefa agendada execute o comando malicioso como rootum shell reverso e, assim, aumentar os privilégios do invasor.

# > crontab -l

# Backup vaadata website
* * * * * /opt/backup.sh

Como evitar a escalada de privilégios?

Uma das funções dos administradores de sistema é implementar medidas de segurança para evitar ou limitar escalonamentos de privilégios.

Implementando uma política de atualização eficaz

Atualizar regularmente os sistemas Linux é um aspecto central da prevenção de ataques de escalonamento de privilégios. De fato, vulnerabilidades são constantemente identificadas em programas. No entanto, essas descobertas são frequentemente (e muito rapidamente) acompanhadas por patches, que geralmente vêm na forma de uma nova versão (principal ou secundária).

Portanto, implementar uma política de atualização é essencial, para não dizer vital, visto que o lançamento de um patch costuma ser de acesso público. De fato, todos os invasores, dos mais novatos aos mais experientes, podem ter acesso aos detalhes das vulnerabilidades identificadas, bem como aos diversos exploits possíveis. Isso lhes permite lançar ataques em larga escala com altas chances de sucesso. Por esse motivo, é essencial manter os sistemas atualizados com os patches de segurança mais recentes para evitar o risco de exploits.

Registro e monitoramento de eventos

Os logs do sistema registram informações detalhadas sobre as atividades do usuário, conexões de rede e erros do sistema. Por esse motivo, uma política de segurança eficaz não pode ser alcançada sem um gerenciamento de logs adequado, a fim de detectar atividades anormais, como tentativas de escalonamento de privilégios.

Para registro e monitoramento, há muitas ferramentas (logstash, logtail, splunk, etc.) que podem ser configuradas para identificar usuários suspeitos e alertar os administradores sobre atividades anormais.

Por fim, é importante manter registros por um período suficientemente longo para permitir uma análise retrospectiva em caso de incidente de segurança. Para mais informações, consulte nosso artigo dedicado: Registro e monitoramento: definições e melhores práticas .

Acesso seguro e implementação do princípio do menor privilégio

É importante configurar os sistemas para conceder aos usuários e programas direitos de acesso limitados, de acordo com suas funções e tarefas. De fato, o princípio do menor privilégio deve ser sempre aplicado para minimizar o risco de escalonamento.

Além disso, é importante implementar estratégias de gerenciamento de privilégios, como, por exemplo, restringir privilégios para usuários temporários. Da mesma forma, usuários temporários devem ter acesso apenas aos privilégios necessários para executar suas tarefas, e os privilégios devem ser revogados automaticamente quando não forem mais necessários.

Conclusão

A elevação de privilégios no Linux é uma grande preocupação em segurança de computadores. Os invasores podem usar vários métodos para aumentar seus privilégios em um sistema, como explorar vulnerabilidades em programas, explorar senhas fracas ou até mesmo explorar programas com privilégios elevados.

É importante que os administradores de sistema compreendam esses riscos e tomem as medidas de segurança adequadas para evitá-los. Isso pode incluir o monitoramento regular de vulnerabilidades de software, atualizações de segurança e treinamento de funcionários. Também é importante limitar os privilégios do programa aos necessários para o funcionamento adequado e monitorar regularmente os logs em busca de atividades anômalas.

Por fim, é importante observar que as ameaças à segurança estão em constante evolução, por isso é necessário manter vigilância constante e continuar a par das últimas tendências de segurança para proteger efetivamente os sistemas contra ataques de escalonamento de privilégios.

Comentários

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *