Pular para o conteúdo principal

DOE AGORA Qualquer valor

O Windows UAC é um mecanismo de proteção introduzido no Windows Vista

Ignorando o Windows 10 UAC com pastas falsas e seqüestro de DLL

 
  • 31 de julho de 2020
  •  
  • 12:48
  •  
  • 1

Windows 10

Uma nova técnica usa um processo simplificado de seqüestro de DLL e diretórios simulados para ignorar o recurso de segurança UAC do Windows 10 e executar comandos elevados sem alertar um usuário.

O Windows UAC é um mecanismo de proteção introduzido no Windows Vista e superior, que solicita ao usuário que confirme se deseja executar um aplicativo de alto risco antes de ser executado.

Prompt do Windows UAC


Origem do prompt do Windows UAC : BleepingComputer

Top ArticlesHavenly discloses data breach after 1.3Maccounts leaked onlineHavenly discloses data breach after 1.3M accounts leaked onlineConfirmed: Garmin received decryptor for WastedLocker ransomwareHow to fix Windows Update problems in Windows 10The Week in Ransomware - July 31st 2020 - Cooked CrabThree suspects charged for roles in Twitter hack, Bitcoin scamREAD MORESKIP AD
Como os usuários são solicitados repetidamente a autorizar processos legítimos, que podem se tornar irritantes rapidamente, a partir do Windows 7, a Microsoft introduziu “exceções” embutidas na estrutura do UAC.

Esse recurso permite que as DLLs confiáveis ​​do sistema localizadas em C: \ Windows \ System32 \ "elevem automaticamente" para privilégios mais altos sem exibir um prompt do UAC.

Isso permite processos do sistema que precisam de permissões elevadas para executar DLLs e EXEs sem exigir que eles respondam às solicitações do UAC.

No mês passado, a BleepingComputer relatou como o pesquisador de segurança Wietze Beukema descobriu que  300 executáveis ​​do Windows estavam vulneráveis ​​ao seqüestro de DLL, o que permite que os invasores ignorem o recurso de segurança do UAC.

Com base na mesma técnica, o pesquisador e especialista em segurança Daniel Gebert ilustra como o UAC (Controle de Conta de Usuário) do Windows 10 também pode ser ignorado por meio de uma combinação de técnicas de seqüestro de DLL e diretórios simulados.

Apresentando diretórios simulados do Windows 10

Um diretório simulado é um   diretório de imitação com um espaço à direita. Por exemplo, enquanto "C: \ Windows \ System32" é um local legítimo e confiável em máquinas Windows, um diretório simulado seria semelhante a "C: \ Windows \ System32" (observe o espaço após o Windows \). 

Ao criar diretórios simulados, há duas restrições:

  • Os diretórios simulados não podem ser criados diretamente na interface do usuário do Windows Explorer; portanto, você precisará de um script simples para realizar a tarefa.
  • Nem todos os diretórios podem ser ridicularizados:

    "Um diretório simulado deve incluir um [subdiretório]. Não é possível criar 'C: \ Windows'. Mas é possível criar 'C: \ Windows \ System32'", explica Gebert em sua postagem no blog ,

Para criar um diretório simulado, você pode simplesmente usar um comando do PowerShell como:

New-Item "\\?\C:\Windows \System32" -ItemType Directory

Quando concluída, a pasta C: \ root agora conterá duas pastas do Windows, mas, na realidade, a segunda possui um espaço à direita, como mostrado abaixo.

Pasta simulada do Windows 10
Pasta simulada do Windows 10
Fonte: BleepingComputer

O que torna as pastas simuladas tão perigosas é que o Windows, em alguns casos, como o File Explorer, trata "C: \ Windows" e " C:\Windows " como a mesma pasta, conforme ilustrado abaixo.

O File Explorer trata uma pasta simulada como a pasta C: \ Windows comum
O File Explorer trata uma pasta simulada como a pasta C: \ Windows normal
Origem: BleepingComputer

O tratamento de uma pasta simulada como a pasta real com o seu nome é onde os diretórios entram em ação.

Uma abordagem distorcida

A técnica original de desvio de UAC da Beukema contava com a localização de EXEs do sistema que seriam candidatos ideais para o seqüestro de DLL. Por exemplo, "winstat.exe" é conhecido por procurar várias DLLs (como "d3d10.dll", "d3d11.dll" etc.) em locais confiáveis ​​após a execução.

Se um invasor conseguir reescrever uma dessas DLLs com uma maliciosa de sua escolha, "winstat.exe" carregará essa DLL maliciosa do diretório confiável ou de um diretório simulado - dependendo de onde o "winstat.exe" está presente.

No entanto, para ignorar o UAC, a técnica de Beukema exigia pelo menos alguma forma de reescrever e recompilar uma DLL existente com a carga útil do invasor.

Para muitas dessas DLLs confiáveis ​​que processam o carregamento lateral, não havia modelos disponíveis que os pentesters pudessem usar. Sem mencionar, também houve algumas limitações na técnica.

Ao pesquisar candidatos a seqüestro de DLL, Gebert começou pesquisando modelos na Web para DLLs legítimas do Windows presentes em diretórios confiáveis.

Ao descobrir esses modelos no GitHub , ele compilou um com uma carga útil adicional para gerar um prompt de comando elevado.

O modelo escolhido por Gebert para este PoC foi para " version.dll " devido à sua experiência anterior usando o arquivo em explorações de seqüestro de DLL.

Um modelo version.dll com instruções adicionadas
Um modelo básico "version.dll" com carga adicional para iniciar o "cmd.exe"
Fonte: Blog de TI de Daniel Gebert

Depois de compilar este "version.dll" simples, ele o copiou para o diretório simulado ( C:\Windows \System32). Além disso, ele copiou todos os executáveis ​​legítimos (.exe) da pasta C: \ Windows \ System32 \ real nesse diretório simulado.

Portanto, o diretório simulado agora tinha mais de 600 EXEs do Windows e o único arquivo DLL, "version.dll".

Então, esperando que um dos 600 EXEs carregasse lateralmente "version.dll", Gebert começou a lançar esses executáveis ​​um de cada vez, enquanto os monitorava de perto.

Enquanto nenhum dos EXEs carregava ativamente "version.dll", alguns deles procuravam um arquivo "profapi.dll" no diretório simulado.

Renomeando apenas "version.dll" para "profapi.dll", Gebert conseguiu realizar o truque. Em seu exemplo, ao iniciar o processo legítimo do Windows, o ComputerDefaults.exe de seu diretório simulado lançou com êxito o "profapi.dll" (anteriormente "version.dll") alterado, presente no mesmo diretório.

Prompt de comando elevado iniciado sem prompt do UAC
Prompt de comando elevado iniciado sem solicitações do UAC
Fonte: Blog de TI de Daniel Gebert

Um vídeo postado no blog de Gebert também mostra o PoC em ação:

A variação da técnica por Gebert demonstra uma maneira mais fácil de obter o desvio do UAC sem necessariamente reescrever uma DLL do Windows existente.

Uma lista completa dos executáveis ​​do Windows que carregam os arquivos "profapi.dll" e "version.dll" e podem ser abusados ​​pelo desvio de UAC foi fornecida em seu blog . 

No caminho, Gebert também descobriu que o método de Beukema havia mencionado executáveis ​​específicos do Windows, por exemplo, taskmgr.exe, que são capazes apenas de carregar DLLs x86 (32 bits).

Processos do Windows que podem descarregar DLLs x86
Processos do Windows que podem descarregar DLLs x86

"Tentei alguns dos arquivos que o Wietze descreveu como Taskmgr.exe. Mas só consegui carregar uma DLL com êxito ao usar arquivos DLL x86", disse Gebert.

"Para obter um desvio do UAC em funcionamento sem usar os arquivos que eu já havia tentado, obtive esses resultados. Observe que esses arquivos geralmente estão localizados em" C: \ Windows \ WinSxS ", mas também funcionam em" C: \ Windows \ System32 "(pasta falsa)", continuou ele.

O takeaway

Gebert mencionou vários outros exemplos em seu blog, descrevendo como essa técnica de desvio do UAC pode ser abusada, por exemplo, para ignorar as Políticas de Restrição de Software (SRP).

"Muitos fornecedores não veem problemas quando o UAC está envolvido. Mas eu [ mostrei ] que esse tipo de vulnerabilidade afeta todos os usuários finais (não empresariais). O malware pode usar um desvio do UAC para executar com os privilégios mais altos, inclusive. desativação de produtos antivírus. Com tantos métodos de desvio de UAC sem patch, é quase impossível para o software antivírus detectar todos eles. "

Os conselhos diretos de mitigação de Gebert para impedir ataques de desvio do UAC estão definindo o UAC como "Sempre notificar". Fazer isso sempre mostrará ao usuário as instruções do UAC antes da execução de aplicativos de alto risco.

Artigos relacionados:

Comentários

Ebook

Postagens mais visitadas