blank

blank

O FortiGuard Labs descobriu recentemente um agente de ameaça não identificado aproveitando as explorações do ProxyShell usando técnicas que ainda não foram relatadas. Várias instâncias do FortiEDR detectaram DLLs maliciosas na memória e descobriram essas novas técnicas enquanto consultavam uma das organizações que haviam sido comprometidas pelo ProxyShell. Por meio da busca ativa de ameaças, eles puderam determinar que outras organizações também haviam sido comprometidas.

 

Relatório de pesquisa de ameaças do FortiGuard Labs

Plataformas afetadas:  Microsoft Exchange
Partes afetadas :  Exchange Mailboxes
Impact:  Oferece a usuários não autorizados a capacidade de acessar e enviar emails de qualquer usuário dentro da organização
Nível de gravidade:  Crítico

 

Introdução do ProxyShell

O FortiGuard Labs descobriu recentemente um agente de ameaça não identificado aproveitando as explorações do ProxyShell usando técnicas que ainda não foram relatadas. Várias instâncias do FortiEDR detectaram DLLs maliciosas na memória, e descobrimos essas novas técnicas enquanto consultávamos uma das organizações que haviam sido comprometidas pelo ProxyShell. Por meio da busca ativa de ameaças, pudemos determinar que outras organizações também foram comprometidas.

As DLLs, que antes eram desconhecidas com base em seus hashes de arquivo SHA256, foram usadas para realizar reconhecimento ativo, obter senhas com hash por meio do  Zerologon e executar autenticação com hash para estabelecer a persistência por meio da representação de aplicativos do Exchange. Este blog pretende fornecer uma análise dessas DLLs. Documentamos a atividade maliciosa associada a eles recriando os incidentes em um ambiente de laboratório. O objetivo é ajudar o público e os futuros clientes a determinar se eles têm atividades relacionadas em seu ambiente e a tomar as medidas adequadas.

Visão geral dos incidentes do ProxyShell

Esses eventos começaram na época em que o ProxyShell chegou às  manchetes das notícias cibernéticas . No início, eles pareciam corresponder ao que a maioria das organizações já estava relatando. Detalhes da exploração, desde os diretórios até os tipos de shells da web usados, correspondiam quase que literalmente. A diferença era quando os shells da web realizavam atividades pós-exploração por meio de DLLs carregados na memória, que disparavam eventos dentro do FortiEDR.

O FortiEDR detectou essas DLLs porque elas foram carregadas no espaço de memória alocado para vbc.exe, o compilador Visual Basic para aplicativos .NET, e foram carregadas a partir do processo w3wp.exe, que é usado para executar o Outlook Web Application do Microsoft Exchange. Isso, junto com o algoritmo de aprendizado de máquina do FortiEDR, determinou que esses arquivos provavelmente eram maliciosos.

A figura abaixo mostra w3wp.exe injetando um thread no processo vbc.exe e acessando serviços no servidor Exchange.


Figura 1: w3wp.exe Injetando um thread remoto e acessando serviços em um servidor Exchange

 

Em seguida, os shells da web foram usados ​​para se conectar a vários controladores de domínio no ambiente e encontramos o arquivo Thor.dll na memória. Essa DLL é usada para autenticar no domínio, modificar as permissões de segurança, criar contas de domínio e adicionar contas às funções do Exchange. Analiso o Thor.dll em detalhes mais tarde.

Figura 2: w3wp.exe carregando Thor.dll na memória

 

O evento mostrado na Figura 2 ocorreu logo depois que um HTTP POST foi enviado para um dos shells da web e segundos antes de uma conta de domínio ser criada no ambiente. Uma conta de serviço de domínio legítima criou a conta dentro da organização. Digno de nota, quando o FortiEDR estava no modo de proteção, toda essa atividade era bloqueada. Nenhuma conta de domínio ou outra atividade foi observada nessas situações.

Além disso, as contas de domínio para outros ambientes nunca foram usadas para autenticação interativa, o que nos disse que o ator da ameaça provavelmente estava interessado em usar as contas posteriormente nesta campanha. Eles também tinham acesso de usuário de domínio sem privilégios elevados, indicando que não estavam interessados ​​em usar as contas para executar tarefas de nível administrativo.

Para entender completamente o que aconteceu quando essas DLLs foram carregadas na memória, analisamos sua funcionalidade e comportamento, explicados em detalhes na seção a seguir.

Análise DLL

Havia um total de 22 DLLs encontrados na memória pelo FortiEDR durante o período desses eventos. Nem todos foram marcados como maliciosos, mas o FortiEDR os capturou independentemente, já que eles estavam relacionados aos eventos maliciosos. Felizmente, todas essas DLLs foram compiladas em .NET, portanto, descompilá-las foi relativamente trivial.

A primeira coisa que foi capturada foram os nomes originais das DLLs.

 

Figura 3: nomes de DLL originais de DLL quando descompilados

 

Alguns dos nomes parecem ter nomes aleatórios; no entanto, outros são nomeados abertamente com a função pretendida. Uma análise posterior mostra que as DLLs nomeadas aleatoriamente eram carregadores para as DLLs nomeadas abertamente. Isso pode ser visto examinando o método “xml ()” do código descompilado para cada DLL do carregador.

Figura 4: Primeira parte do método xml () para mostrar a funcionalidade do carregador

 

O método “xml ()” carrega a versão base64 da DLL e chama um método dentro da DLL. Neste exemplo, foi o método “Elite” dentro da classe “Axiomática”.

As DLLs do carregador também são responsáveis ​​por obter a saída das chamadas de método e retransmiti-la de volta para a sessão HTTP do shell da web a partir da qual foi chamada, para que o agente da ameaça obtenha os resultados de saída da execução da DLL. Isso fornece ao agente da ameaça os resultados da sessão HTTP a partir da qual ele interagiu com o shell da web.

Figura 5: a chamada do método para resposta HTTP

 

Usando essas chamadas de método e vinculando-as às DLLs carregadas, nossa equipe pode recriar essa atividade usando o PowerShell. Os resultados são mostrados abaixo e divididos por DLL, junto com uma captura de tela mostrando a saída enviada de volta por meio da sessão HTTP do shell da web.

GetEcpWebConfigModule.dll

Essa DLL obtém o arquivo Web.config do Painel de Controle do Exchange (ECP) do servidor Exchange. Isso dá ao ator da ameaça acesso a algumas das configurações ECP internas. Mais informações sobre o arquivo web.config podem ser encontradas  aqui .

Figura 6: Saída da execução de GetEcpWebConfigModule.dll

 

DomainGroups.dll

Essa DLL obtém todos os grupos de domínio do Active Directory. Isso fornece ao ator da ameaça informações sobre a hierarquia do ambiente no qual está trabalhando.

Figura 7: Saída da execução de DomainGroups.dll

 

DnsDump.dll

Essa DLL obtém as entradas DNS Tipo A, que podem ser usadas para direcionar máquinas adicionais dentro do ambiente. Ele também fornece ao agente da ameaça um banco de dados de pesquisa direta e reversa ao traduzir o nome do host em IP e vice-versa.

Figura 8: Saída da execução de DnsDump.dll

 

OrganizationManagement.dll

Esta DLL obtém a lista de usuários no grupo de usuários “Gerenciamento Organizacional”. Os membros deste grupo têm o acesso necessário no servidor Exchange para criar e / ou modificar funções e permissões.

 
Figura 9: Saída da execução de OrganizationManagement.dll

 

ExchangeServers.dll

Essa DLL obtém a lista de servidores Exchange dentro do domínio para que o ator da ameaça possa ter como alvo outros servidores Exchange, se necessário. Alguns ambientes são configurados em uma hierarquia, onde diferentes funções do Exchange estão em servidores diferentes. Um ator de ameaça precisaria dessas informações para saber quais servidores visar.

Figura 10: Saída da execução de ExchangeServers.dll

 

DiskInfo.dll

Essa DLL obtém informações sobre as unidades do host local. Essas informações podem ser úteis para o agente da ameaça determinar qual disco rígido pode conter bancos de dados do Exchange.

Figura 11: Saída da execução de DiskInfo.dll

 

Computers.dll

Essa DLL obtém uma lista de estações de trabalho dentro do domínio, o que dá ao ator da ameaça uma ideia do tamanho de um ambiente e um bom ponto de partida para lançar ataques adicionais.


Figura 12: Saída da execução de Computers.dll

 

SystemInfoModule.dll

Essa DLL obtém informações sobre o sistema, como nome de construção, informações de hardware, sistema operacional, etc. Isso fornece ao agente da ameaça as informações necessárias para lançar ataques de exploração adicionais ou manter a persistência e o acesso.


Figura 13: Saída da execução de SystemInfoModule.dll

 

SystemService.dll

Essa DLL retorna uma lista de serviços em execução no sistema local, que fornece ao agente da ameaça uma lista de softwares de segurança presentes no sistema. Por exemplo, o agente da ameaça pode ter que usar técnicas de desvio para evitar certos tipos de produtos de segurança.


Figura 14: SystemService.dll

 

Machine.Modules.ZerologonInterface.dll

Essa DLL chega a determinados controladores de domínio (passados ​​como um parâmetro) para ver se eles são vulneráveis ​​ao Zerologon e, se forem, responde com nomes de usuário e senhas com hash. Em seguida, ele restaura o hash do computador do controlador de domínio ao estado original. Este é um método documentado usando Zerologon e pode ser lido mais sobre  aqui  na seção “Caso 2 – Redefinição de senha DC com a senha original restabelecida”.

Figura 15: Saída da execução de Machine.Modules.ZerologonInterface.dll

 

Thor.dll

Esta DLL tenta autenticar com credenciais do despejo Zerologon anterior e criar contas de domínio tentando se disfarçar como contas de caixa de correio de saúde. Ele também cria uma atribuição de controle de acesso baseado em função (RBAC) no Exchange que fornece a função ApplicationImpersonation integrada no Microsoft Exchange. Isso permite que o ator acesse e envie e-mail de qualquer caixa de correio do ambiente. Além disso, bloqueia as permissões desses objetos.

Figura 16: Saída da execução de Thor.dll e descrições da saída

 

Também podemos ver a atribuição de função criada no Exchange, junto com o tipo de função, “ApplicationImpersonation”.

Figura 17: Saída de política de função do Exchange com função criada por ator de ameaça

Figura 18: Tipo de função ApplicationImpersonation adicionado a uma função

 

ApplicationImpersonation deve ser usado por aplicativos de serviço que precisam acessar várias caixas de correio e “agir como” o proprietário da caixa de correio. No entanto, neste caso, permite que o invasor mantenha o acesso às caixas de correio do domínio. Mais informações sobre a representação de aplicativos usando EWS podem ser encontradas na página de documentação da Microsoft ( https://docs.microsoft.com/en-us/exchange/client-developer/exchange-web-services/impersonation-and-ews-in-exchange ) Essa técnica específica de comprometimento de e-mail raramente é vista, e a intenção por trás dessa atividade ainda é amplamente desconhecida, já que o ator da ameaça não foi visto usando as contas criadas para se passar por caixas de correio no ambiente da vítima.

Conclusão ProxyShell

O FortiEDR foi capaz de capturar DLLs encontrados na memória que foram executados por meio de shells da web criados a partir de vulnerabilidades do ProxyShell. Nas situações em que as DLLs não foram bloqueadas (blocos de simulação), não houve atividade de follow-on, nem foi identificada intenção. Mas os atores da ameaça estavam claramente interessados ​​em manter o acesso às caixas de correio da organização usando técnicas raramente usadas e em grande parte não documentadas.

Proteções Fortinet

O FortiEDR detecta e bloqueia (quando habilitado) as DLLs maliciosas vistas na memória.

Todas as cargas úteis descritas são detectadas e bloqueadas pelo serviço FortiGuard AntiVirus.

IOCs

SHA256 Hashes e DLLs

Computers.dll EB4EF1B588AD5027409B4D6B5643E25E456B14A5175EFFCF866B31C2CCD35FC3
DiskInfo.dll 2AF411EA82384F7C41954E5CE4755709E80DA75C57357D62208018137111DDD3
DnsDump.dll F1E4E139EA33385E672A7EB35BF5B33570709FB004B5C6884D12610D28C94797
DomainGroups.dll 3112BE27CB28AEDD9334567A0E24569EC3D5F75414539E17433E4B4F27AA9470
ExchangeServers.dll 5E0FE024A39D0AF4F045DC6770A00F4E9FFBAB1D71C68360331CF8A8BB16BC18
GetEcpWebConfigModule.dll CDD79F442519B0F48DDC7A1A699DFCE8E597445975F84BFAC51A2F0BA80F1237
Machine.Modules.ZerologonInterface.dll A46B18A07B1509B15EB7FC6CF876888DC780962A3F850DC3B3EE5C7FBBEE723C
OrganizationManagement.dll 28D983C235F2C5420AE596CDC3AAEF65D953E76F935B73708DA8E47072ED66B8
SystemInfoModule.dll FC73324432E7BB3FAAF08527E462D26D0E4B3D1095BF7CA09BA04DD5B4E71664
SystemService.dll 4E8EA9B3261B49597EF6D37DD252B37CA2BD162713B900EA25A65CCDB9B98DE5
Thor.dll AFD7E5431E86BAA55A6FDCB8CE81F1E7EEA158BA388D08C59678789AF6FE7C0E

Tabela 1: Nomes e Hashes SHA256 para DLLs

 

Fonte: Fortinet


Descubra mais sobre DCiber

Assine para receber os posts mais recentes por e-mail.