Data da postagem: Dec 16, 2011
Tempo de leitura: 3 minutos

Tudo começou quando a Ju_Pereeira trocou a senha da conta de administrador (Windows Vista) e acabou esqueçendo da mesma, eu como estava de mãos limpas (sem cds bootaveis para explorar a famosa falha do utilman.exe) e com acesso a uma única conta (com direitos administrativos limitados), tive que me virar por lá. Dei uma googlada rápida e só encontrei textos sobre como recuperar a senha usando tal distro linux, tal software que precisa de direitos administrativos pra ser instalado… Enfim, nada útil.

Já estava ficando sem idéias, até que tomei uma cerveja e encontrei esse link: http://www.nsai.it/tag/windows-vista-7-privilege-escalation/

O exploit já tem pouco mais de um ano, eu não sei como não o tinha no meu pobre arsenal mental. De qualquer maneira, foi ele que me serviu, e muito bem por sinal.

É uma vulnerabilidade to tipo buffer overflow a nível de Kernel, o que faz com que se burle o UAC (User Acess Control, aquela coisa chata de permitir ou não aplicativos e etc). A coisa toda começa se criando uma chave maliciosa no registro do Windows, depois disso o código chama uma função para ler essa chave, e durante esse processo também chama a parte vulnerável contida na win32k.sys pra fazer parte da festa.

Se explorada com sucesso, é possível conseguir permissões a nível de sistema, o que significa total poder sobre o Windows.

Muito mais informações tecnicas podem ser vistas aqui (em inglês): http://www.exploit-db.com/bypassing-uac-with-user-privilege-under-windows-vista7-mirror/

Era tudo que eu precisava naquele momento, então rapidamente baixei o PoC: http://dl.packetstormsecurity.net/1011-exploits/uacpoc.zip

Existe uma versão já compilada e o código fonte do exploit nesse arquivo zip, mais adiante eu vou explicar o motivo pelo qual talvez seja preciso mecher no código (o que não é muito fácil). Fica a seu critério compilar ou usar o que já está compilado, usei o já compilado (contrariando uma das regras número 1 sobre exloits já compilados e com backdoors) pelo simples motivo de ter preguiça de arrumar um compilador. Extrai os arquivos, abri o prompt e rodei o poc.exe pra ver o que iria rolar.

Acho que já deu pra perceber não é?

No primeiro comando (whoami) pode se ver que se está logado com uma conta normal, mais logo após a execução da PoC e rodar o comando outra vez, já pude conseguir o que eu queria.

Com o prompt em mãos foi simples acabar o serviço, com um só comando troquei a senha do administrador (“net user Administrador lala”) e problema resolvido.

O único aviso sobre esse exploit é que ele é meio instável (também, ele mexe com uma parte bem sensível do sistema). Dependendo da versão do Kernel você pode dar de cara com uma BSOD (tela azul da morte ^^) depois de alguns minutos. Isso aconteceu comigo, a sorte é que eu só precisava de alguns segundos pra mandar um único comando.


// For Vista, there is a Pool address on the stack which is going to be passed to ExFreePool before the function returns,
 // so we need a valid pool address to avoid BSOD.

Aqui se encontra um vídeo onde a falha é explorada no Windows 7: http://www.nsai.it/wp-content/uploads/video.swf

E aqui mais umas informações (não tão tecnicas e mais “legiveis” que as do exploit-db.com): http://isc.sans.edu/diary.html?storyid=9988

tags: exploits, windows,