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.