Campanha de ‘Malvertising’ leva à execução do Oyster Backdoor

A Rapid7 observou uma campanha recente de malvertising que atrai usuários para baixar instaladores maliciosos para softwares populares como Google Chrome e Microsoft Teams.

Os instaladores estavam sendo usados ​​para lançar um backdoor identificado como Oyster, também conhecido como Broomstick. Após a execução do backdoor, observamos comandos de enumeração indicativos de atividade manual no teclado, bem como a implantação de payloads adicionais.

Nesta postagem do blog, examinaremos os métodos de entrega do Oysterbackdoor, forneceremos uma análise aprofundada de seus componentes e ofereceremos um script Python para ajudar a extrair sua configuração ofuscada.

Visão geral

Acesso Inicial

Em três incidentes separados, o Rapid7 observou usuários baixando supostos instaladores do Microsoft Teams de sites com erros de digitação. Os usuários foram direcionados a esses sites após usar mecanismos de pesquisa como Google e Bing para downloads de software Microsoft Teams. Rapid7 observou que os sites estavam disfarçados de sites do Microsoft Teams, induzindo os usuários a acreditar que estavam baixando software legítimo quando, na realidade, estavam baixando o software malicioso do agente da ameaça.

Figura 1 --- Site falso do Microsoft Teams
Figura 1 – Site falso do Microsoft Teams

Em um caso, um usuário foi observado navegando para a URL hxxps://micrsoft-teams-download[.]com/, o que levou ao download do binário MSTeamsSetup_c_l_.exe. A análise inicial do binário MSTeamsSetup_c_l_.exemostrou que o binário foi atribuído por um certificado Authenticode emitido para “Shanxi Yanghua HOME Furnishings Ltd”.

Figura-2----MSTeamsSetup_c_l_.exe--Informações do arquivo
Figura 2 – MSTeamsSetup_c_l_.exeInformações do arquivo

A pesquisa no VirusTotal por outros arquivos assinados por “Shanxi Yanghua HOME Furnishings Ltd” mostrou o seguinte:

Figura 3 --- Resultados da pesquisa de assinatura do VirusTotal
Figura 3 – Resultados da pesquisa de assinatura do VirusTotal

Os resultados indicaram outras versões do instalador, cada uma se passando por um instalador de software legítimo. Observamos que o primeiro instalador foi enviado ao VirusTotal por volta de meados de maio de 2024.

Em um incidente relacionado que ocorreu em 29 de maio de 2024, observamos outro binário se passando por um arquivo de configuração do Microsoft Teams, , TMSSetup.exeao qual foi atribuído um certificado válido emitido para “Shanghai Ruikang Decoration Co., Ltd”. Em 30 de maio de 2024, esse certificado foi revogado.

A análise do binário feita pelo VirusTotal MSTeamsSetup_c_l_.exeindica que ele está associado a uma família de malware conhecida como Oyster, apelidada de Broomstick pela IBM.

O que é ostra/vassoura?

Oyster, também conhecido como Broomstick, também conhecido como CleanUpLoader, é uma família de malware identificada pela primeira vez em setembro de 2023 por pesquisadores da IBM. Embora não se saiba muito sobre o malware, ele foi entregue por meio de um carregador chamado Oyster Installer, que se disfarçava como um instalador de navegador. O instalador era responsável por derrubar o componente backdoor, Oyster MainOyster Mainera responsável por coletar informações sobre o host comprometido, manipular a comunicação com os endereços de comando e controle (C2) codificados e fornecer a capacidade de execução remota de código.

Em fevereiro, pesquisadores do Twitter observaram o mesmo componente backdoor e começaram a nomeá- Oyster Mainlo como CleanUpLoader.

Em incidentes recentes, o Rapid7 observou Oyster Mainque o aplicativo foi entregue sem o Oyster Installer.

Análise técnica

A análise inicial do binário MSTeamsSetup_c_l_.exerevelou que dois binários foram armazenados na seção de recursos. Durante a execução, uma função foi observada usando FindResourceApara localizar os binários, seguido por LoadResourcepara acessá-los. Esses binários foram então descartados na pasta Temp. Observamos que os nomes pretendidos dos dois binários descartados MSTeamsSetup_c_l_.exeeram CleanUp30.dllMSTeamsSetup_c_l_.exe(o instalador legítimo do Microsoft Teams).

Após soltar o binário CleanUp30.dllno diretório Temp, o programa executa a DLL, passando a string rundll32.exe %s,Testpara a função CreateProcessA, onde %sarmazena o valor CleanUp30.dll.

Figura-4---Execução-de--CleanUp30.dll-
Figura 4 – Execução deCleanUp30.dll

Após a execução de CleanUp30.dll, o programa prossegue para iniciar o instalador legítimo do Microsoft Teams, MSTeamsSetup_c_l_.exe, também localizado dentro do diretório Temp. Essa tática é empregada para evitar levantar suspeitas do usuário.

Análise CleanUp30.dll

Durante a execução de CleanUp30.dll, Rapid7 observou que o binário começa tentando criar a exclusão mútua codificada (mutex) ITrkfSaV-4c7KwdfnC-Ds165XU4C-lH6R9pk1. A criação de mutex é frequentemente usada por programas para determinar se o programa já está executando outra instância. Se o programa já estiver em execução, o programa encerrará a nova instância.

Depois de criar o mutex, o binário determina seu caminho de execução chamando a função GetModuleFilenameA. O valor é armazenado como uma string e utilizado como parâmetro para a criação de uma tarefa agendada, ClearMngs. A tarefa agendada é criada usando a função ShellExecuteExW, passando o seguinte como linha de comando:

schtasks.exe /create /tn ClearMngs /tr "rundll32 '<location of binary>\CleanUp30.dll',Test" /sc hourly /mo 3 /f

O objetivo da tarefa agendada ClearMngsé executar o binário <location of binary>\CleanUp30.dllcom a função exportada Testusando rundll32.exe a cada três horas.

Após a criação da tarefa agendada, o binário então prossegue para decodificar seus servidores C2 usando uma função de decodificação exclusiva. A função de decodificação começa pegando uma sequência de caracteres codificados, e seu comprimento é em bytes. A função de decodificação então prossegue para ler cada byte, começando do fim da sequência codificada.

Figura-5---O-loop-de-decodificação-de-DLL-s
Figura 5 – Loop de decodificação da DLL

Cada byte da string codificada é usado como um local de índice para recuperar o byte decodificado de um mapa de bytes codificado. Um mapa de bytes é uma matriz de bytes que contém 256 bytes em ordem aleatória, um para cada valor de byte possível de 1 a 256. Os autores de malware às vezes usam essa técnica para ofuscar strings e outros dados. O contador de iteração (i) usado na condição para o loop de decodificação é comparado à metade do comprimento da string codificada, pois o loop de decodificação troca dois bytes por vez. Os bytes da string codificada são decodificados e trocados começando nos bytes iniciais e finais da string e o loop de decodificação progride em direção ao centro da string a partir de cada extremidade.

O loop troca os bytes para reverter a string decodificada, já que as strings de texto simples originais armazenadas no malware foram revertidas antes da codificação. Quando o centro da string é alcançado, o processo de decodificação está completo. Devido a esse algoritmo, todas as strings codificadas passadas devem ter comprimento uniforme para evitar processamento adicional. Imediatamente após a string decodificada ser carregada na pilha, o malware recodifica a string usando um loop semelhante. O resultado final para a primeira string decodificada é uma lista delimitada por CRLF (carriage return line feed) de domínios C2.

Construímos um script Python que pode decodificar todas as strings codificadas contidas nos CleanUp.dllbinários, incluindo versões anteriores. O script Python pode ser encontrado em nosso repositório GitHub .

Figura-6---Saída-de-exemplo-do-Script-Python
Figura 6 – Exemplo de saída do script Python

Usando nosso script Python, ele revelou algumas das funcionalidades do C2, juntamente com vários campos JSON que são usados ​​para construir uma impressão digital do sistema infectado:

String codificada em hexadecimalString decodificada
2ec6a676766fc6f4960e86api/conectar
50b0aea6747686b64eaef69e2ec6a64e96262ea64esupfoundrysettlers.us
50b0b6f6c674a646a6b6f6164ea66ea64ea616eewherehomebe.com
50b0ceae74ce4ea6362e2ea6ce9e4e2676aef6660eaeceretdirectyourman.eu
76f6ce56f476f6962e86c696360e0e86045ca60e9e2ab42e76a62e76f6c2Tipo de conteúdo: application/json
76f696cece65cef4960e86api/sessão
a61ea67426b6c63a346ceaf2eace9eca3a\SysWOW64\cmd.exe
a61ea6744ccc36362676ae4e3a2c6ceaf2eace9eca3a\SysWOW64\rundll32.exe
d2f2OK
3a0eb6a62a3a\Temp\
445c442696fa267686b6b6f6c6443444“,”command_id”:”
be44“}
445c44649644de{“eu ia”:”
445c442e36aecea64e443444“,”resultado”:”
445c442696fa76f696cecea6ce443444“,”identificação de sessão”:”
445c44ceae2e862ece443444“,”status”:”
2e1e2e740eae7686a636c63a\limpeza.txt
445c44a6b68676fa4e652eae0eb6f6c6443444“,”nome do computador”:”
0ccc445c4476f696ce72a66efa363626443444“,”versão_dll”:”30
445c44769686b6f626443444“,”domínio”:”
be44“}
445c44649644de{“eu ia”:”
445c443686c6f636fa0e96443444“,”ip_local”:”
445c44cef6443444“,”os”:”
445c44263696ae46facef6443444“,”os_build”:”
445c44a6e6a636656e964e0e443444“,”privilégio”:”

Após o binário decodificar os endereços C2, o programa procede à impressão digital da máquina infectada, usando as seguintes funções:

FunçãoDescrição
DsRoleGetPrimaryDomainInformationUsado para coletar informações sobre o domínio em que reside a máquina comprometida. Em particular, a função retorna o nome do domínio.
ObterNomeUsuárioWFornece o nome do usuário no qual o programa está sendo executado.
NetUserGetInfoFornece detalhes do usuário sob o qual o programa está sendo executado. Neste caso, o programa está consultando se o usuário é admin ou usuário.
ObterNomeDoComputadorWFornece o nome da máquina comprometida na qual o binário está sendo executado.
RtlGetVersionRetorna informações de versão sobre o sistema operacional atualmente em execução, incluindo nome e número de versão.

Figura 7---Uma-seleção-do-conteúdo-do--CleanUp30.dll--Codifique-que-descreve-a-coleção-de-informações do sistema
Figura 7 – Uma seleção de conteúdos do CleanUp30.dllcódigo que descreve a coleta de informações do sistema

Ao enumerar informações sobre o host, as informações são armazenadas nos campos JSON descobertos a partir das strings codificadas identificadas acima.

Figura-8---Exemplo-dos-dados-coletados-e-enviados-via-HTTP-POST-para-os-domínios-maliciosos
Figura 8 – Exemplo de dados coletados e enviados via HTTP POST para domínios maliciosos

As informações da impressão digital são codificadas usando o mesmo loop discutido anteriormente, onde a sequência de dados é invertida e codificada usando um mapa de bytes antes de ser enviada.

Após a informação ser codificada, ela é enviada para os domínios whereverhomebe[.]com/supfoundrysettlers[.]us/, e retdirectyourman[.]eu/via método HTTP POST. Rapid7 determinou que CleanUp30.dllusa a biblioteca C++ de código aberto Boost.Beast para se comunicar com os domínios C2 observados via HTTP e web sockets.

Figura 9---Tráfego-de-rede-capturado-tentativa-de-enviar-solicitações-POST-para--wherehomebe-.-com--e--supfoundrysettlers-.-us--após-a-execução-de- -CleanUp30.dll-
Figura 9 – Tráfego de rede capturado tentando enviar solicitações POST para whereverhomebe[.]com/supfoundrysettlers[.]us/após a execução deCleanUp30.dll

Atividade de acompanhamento

Em um dos incidentes observados pelo Rapid7, um script do PowerShell foi gerado após a execução de outra versão do CleanUp30.dll. , semelhante a , foi originalmente descartado por outro instalador falso do Microsoft Teams, , que também colocou o binário no diretório AppData/Local/Temp.CleanUp.dllCleanUp.dllCleanUp30.dllTMSSetup.exe

Figura-10---PowerShell-Command-Criando-.lnk-Arquivo--DiskCleanUp.lnk-
Figura 10 – Comando do PowerShell criando arquivo .lnkDiskCleanUp.lnk

O objetivo do script do PowerShell era criar um arquivo LNK de atalho nomeado DiskCleanUp.lnkem C:\Users\<User>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\. Ao fazer isso, isso garantiu que o arquivo LNK DiskCleanUp.lnkseria executado toda vez que o usuário efetuasse login. O atalho do arquivo LNK era responsável por executar o binário CleanUp.dllusando rundll32.exe, passando o export Test.
Após a execução do script do PowerShell, o Rapid7 observou a execução de cargas adicionais:

  • k1.ps1
  • main.dll
  • getresult.exe

Infelizmente, durante o incidente, não conseguimos adquirir as cargas adicionais. Durante os incidentes, Rapid7 também observou a execução dos seguintes comandos de enumeração:

EnumeraçãoDescrição
Informação do sistemaFornece informações sobre a configuração de software e hardware do sistema
arp -aMostra uma lista de todos os endereços IP com os quais o computador local interagiu recentemente, juntamente com seus endereços MAC correspondentes
grupo net ‘computadores de domínio’ /domínioLista o grupo “Computadores de Domínio” em um domínio do Active Directory
“C:\Windows\system32\nslookup.exe” myip.opendns.com resolve1.opendns.comDetermina o endereço IP externo
whoami /todosFornece informações detalhadas sobre o usuário atual, incluindo privilégios do usuário, associações de grupo e identificadores de segurança (SIDs)
nltest /dclist:<nome_do_domínio>Lista todos os controladores de domínio (DCs) para um domínio específico
administrador de usuário da redeFornece informações detalhadas sobre o usuário ‘admin’, incluindo informações de perfil, associações de grupo, associações de grupo local, etc.
consulta reg HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall /sConsulta o registro para encontrar informações sobre o software instalado
findstr “Nome de exibição”Usado para filtrar informações, mostrando apenas itens contidos em “DisplayName”

Abaixo está uma lista não exaustiva de detecções que são implantadas e alertarão sobre o comportamento relacionado a esta campanha de malware:

  • Persistência – SchTasks Criando uma tarefa apontada para o diretório temporário ou itinerante dos usuários
  • Processo suspeito: RunDLL32 iniciando CMD ou PowerShell
  • Persistência – Schtasks.exe Criando tarefa que executa RunDLL32
  • Descoberta de rede – Nltest enumera controladores de domínio
  • Técnica de Atacante – Determinando IP Externo Via Linha de Comando
  • Processo suspeito – .lnk na linha de comando do PowerShell

Técnicas MITRE ATT&CK

TáticaTécnicaDescrição
Desenvolvimento de RecursosAdquirir Infraestrutura: Domínios (T1583.001)O Threat Actor configurou o domínio com erro de digitação micrsoft-teams-download[.]com para auxiliar na entrega do executável MSTeamsSetup_c_l_.exe
ExecuçãoIntérprete de comandos e scripts: Powershell (T1059.001)Usado para criar o arquivo .lnk DiskCleanUp.lnk e executar a carga útil do PowerShell k1.ps1
ExecuçãoExecução do usuário: arquivo malicioso (T1204.002)O usuário executa o binário MSTeamsSetup_c_l_.exe
PersistênciaTarefa agendada (T1053.005)CleanUp30.DLL e CleanUp.DLL criam tarefa agendada ClearMngs
Evasão de DefesaMascaramento: Corresponder ao nome ou local legítimo (T1036.005)MSTeamsSetup_c_l_.exe se disfarça como instalador legítimo do Microsoft Teams
Evasão de DefesaEvasão de Virtualização/Sandbox: Evasão Baseada em Tempo (T1497.003)Os atrasos na execução são realizados em vários estágios ao longo do fluxo de ataque
ColeçãoDados do Sistema Local (T1005)Os agentes de ameaças enumeraram informações sobre hosts comprometidos usando as DLLs do backdoor CleanUp
Comando e controleCodificação de dados – codificação não padrão (T1132.002)CleanUp DLL envia dados codificados para C2 usando função de codificação exclusiva

COIs

COICerquilhaDescrição
TMSSetup.exe9601f3921c2cd270b6da0ba265c06bae94fd7d4dc512e8cb82718eaa24accc43O executável malicioso baixado de prodfindfeatures[.]com/
MSTeamsSetup_c_l_.exe574C70E84ECDAD901385A1EBF38F2EE74C446034E97C33949B52F3A2FDDCD822O executável malicioso baixado de prodfindfeatures[.]com/
CleanUp30.dllCFC2FE7236DA1609B0DB1B2981CA318BFD5FBBB65C945B5F26DF26D9F948CBB4O arquivo .dll executado por run32dll.exe após a execução de MSTeamsSetup_c_l_.exe
CleanUp.dll82B246D8E6FFBA1ABAFFBD386470C45CEF8383AD19394C7C0622C9E62128CB94O arquivo .dll executado por run32dll.exe após a execução de TMSSetup.exe
DiskCleanUp.lnkUm arquivo .lnk que foi criado após a execução de CleanUp30.dll
prodfindfeatures[.]com/O domínio que hospeda os arquivos maliciosos TMSSetup (1).exe e MSTeamsSetup_c_l_.exe
micrsoft-teams-download[.]com/O domínio ocupado por erros de digitação que os usuários visitaram
impresoralaser[.]pro/Parte da cadeia de redirecionamento de domínio para downloads de TMSSetup (1).exe e MSTeamsSetup_c_l_.exe
onde quer que seja[.]com/Domínio com o qual CleanUp30.dll e CleanUp.dll tentam se comunicar
supfoundrysettlers[.]nós/Domínio com o qual CleanUp30.dll e CleanUp.dll tentam se comunicar
retdirectyourman[.]eu/Domínio com o qual CleanUp30.dll e CleanUp.dll tentam se comunicar
149.248.79[.]62Resolvendo IP para wherehomebe[.]com/
64.95.10[.]243Resolvendo IP para colonos supfoundry[.]us/
206.166.251[.]114Resolvendo IP para retdirectyourman[.]eu/

Referências

ArtigoURL
Perfil de malware de vassourahttps://exchange.xforce.ibmcloud.com/malware-análise/guid:08822f57c12416bc3e74997c473d1889
Menção do Twitter ao CleanUpLoaderhttps://x.com/RussianPanda9xx/status/1757932257765945478