Falsificação de DLL (seqüestro de DLL)

Olá a todos. No momento, a OTUS abriu um conjunto para o lançamento em abril do curso atualizado de engenharia reversa . Antecipando o início do curso, tradicionalmente preparávamos uma tradução de material interessante.




No sistema operacional Windows, aplicativos e serviços na inicialização procuram as DLLs necessárias para o funcionamento adequado. Se essas DLLs não forem encontradas ou seu carregamento for implementado de maneira insegura (as DLLs são chamadas sem o caminho completo), você poderá aumentar os privilégios forçando o aplicativo a baixar e executar um arquivo DLL malicioso.

Observe que, quando o aplicativo precisa baixar a DLL, sua pesquisa é realizada na seguinte ordem:

  • O diretório do qual o aplicativo é baixado
  • C: \ Windows \ System32
  • C: \ Windows \ Sistema
  • C: \ Windows
  • Diretório de trabalho atual
  • Diretórios na variável de ambiente PATH do usuário
  • Diretórios na variável de ambiente do sistema PATH

Etapa 1 - Processos com DLLs ausentes


A primeira etapa é encontrar processos executados no sistema e tentar carregar a DLL ausente. Isso pode ser feito usando o Sysinternals Process Monitor , aplicando o filtro listado abaixo:


Filtros Procmon para procurar processos que baixam DLLs ausentes

O Monitor de processos identifica as DLLs ausentes que o aplicativo está tentando carregar e mostra o caminho real que esta DLL está sendo pesquisada.


Um processo com uma DLL ausente

Neste exemplo, um processo Bginfo.exenão possui vários arquivos .dll que podem ser usados ​​para elevar privilégios.

Etapa 2 - Permissões da pasta


Se o software é instalado no diretório C:\em vez C:\Program Files, em seguida, por padrão, os usuários autenticados terão acesso de gravação para este diretório. Além disso, softwares como Perl, Python, Ruby etc. geralmente são adicionados à variável PATH. Isso possibilita o aumento de privilégios, pois o usuário pode gravar uma DLL mal-intencionada neste diretório, que será carregada na próxima vez em que o processo iniciar e obter os direitos para esse processo.


Permissões de pasta fracas

Etapa 3 - Substituir DLL


Usando o Metasploit, você pode gerar uma DLL de carga útil como uma sessão com privilégios de serviço.


Geração de DLL mal-intencionada

O processo é Bginfo.exeiniciado no sistema, portanto, após reiniciar a DLL mal-intencionada, você terá os mesmos privilégios, pois a DLL é carregada e executada por esse processo.


O processo é iniciado em SYSTEM.

Como indicado acima, o processo não pode ser encontrado Riched32.dll, portanto, pentestlab.dllvocê deve renomeá-lo para Riched32.dll. Isso irá confundir o aplicativo e ele tentará carregar a DLL porque ela pensa que é uma DLL legítima. A DLL maliciosa deve ser colocada em uma das pastas nas quais o Windows está procurando arquivos DLL.


DLL maliciosa renomeada e hospedada

Como você pode ver abaixo, quando você reinicia o serviço usando a DLL de falsificação, é aberta uma sessão Meterpreter com privilégios de sistema.


Metasploit - Escalada de privilégios por meio de spoofing DLL

Powersploit


O processo de substituição de DLLs pode ser feito através do PowerSploit, no qual existem três módulos que ajudarão a encontrar serviços com DLLs ausentes, a localizar pastas com direitos de modificação e a gerar DLLs.

O módulo Find-ProcessDLLHijackencontrará todos os processos no sistema que estão tentando carregar a DLL ausente.


PowerSploit - Detectando processos com DLLs ausentes

A próxima etapa é identificar as pastas nas quais o usuário pode modificar o conteúdo. As pastas serão encontradas onde DLLs maliciosas devem ser lançadas.


Detectando pastas com direitos para modificar

A última etapa é criar uma DLL maliciosa em uma das pastas com permissões Modify (M).


Crie uma DLL em uma pasta com permissões fracas

Conclusão


Para poder elevar privilégios por meio de uma DLL de falsificação, as seguintes condições devem ser atendidas:

  • Permissões para gravar na pasta do sistema
  • Instalando o Software em um Diretório Diferente do Diretório Padrão
  • Um serviço que é executado no sistema e tenta carregar uma DLL ausente
  • Reinício do serviço

Encontrar aplicativos que não estão instalados não Program Filesé difícil, porque, além dos aplicativos de terceiros que não são obrigados a instalar nesse caminho, existem vários programas de software personalizados localizados fora dessas pastas protegidas. Além disso, existem vários serviços do Windows, como IKEEXT (IKE e AuthIP IPsec Keyules Modules) com DLLs ausentes ( wlbsctrl.dll), que podem ser usados ​​manual ou automaticamente. Existe um módulo Metasploit especial para o IKEEXT:

exploit/windows/local/ikeext_service



.



All Articles