Vamos supor um cenário de um sistema do tipo Unix (como macOs, linux, solaris etc.) tendo instalado um programa da Internet que foi desenvolvido por um agente malicioso.
O programa não usa nenhuma exploração de dia zero no sistema para escalar privilégios. Ele simplesmente é executado no contexto de um usuário não administrativo comum, com todas as suas restrições. Ele grava todos os pressionamentos de tecla em segundo plano até registrar o usuário digitando em um terminal "su" seguido de uma senha. Este programa, de repente, captura a senha do usuário root.
Minha dúvida é, tendo essa senha capturada, o programa pode se reiniciar a partir do contexto do usuário root ou até mesmo escalar seus privilégios ainda em execução, fazendo tudo isso sem que o usuário atual perceba? Que utilitários existem que permitirão que tal programa faça tal coisa? Estou falando de um cenário ideal no qual nenhum bug ou exploits no kernel são usados. Estou simplesmente falando de um programa simplesmente usando utilitários de sistema existentes de maneiras que eles já deveriam ser usados.
Este é exatamente o tipo de situação para a qual o
expect
programa (e similares) foi projetado. Você pode executarsu
emexpect
, detectar o prompt de senha, enviar a senha (que você capturou) e, em seguida, ter um shell raiz para o qual você pode enviar comandos.por exemplo
Sim. Ao executar
su
.su
é um programa para permitir a mudança de usuário com uma senha.su
tem a capacidade de alterar o usuário e fará isso somente se você fornecer a senha correta.No entanto, a única maneira de fazer isso é iniciar um novo processo ou substituir o programa do processo existente. Poderia então se relançar com os novos privilégios.
Nota pedante: um processo pode escalar seus privilégios via
su
. Mas um programa não pode. No entanto, o novo programa (su
), pode relançar o antigo.