Análise técnica dos arquivos usados na campanha de malware do aplicativo de desktop 3CX
Em 29 de março de 2023, surgiram relatos de atividades maliciosas originadas de um aplicativo de desktop 3CX assinado. As versões trojanizadas do aplicativo de desktop 3CX carregam uma DLL com conteúdo malicioso. A DLL lança um ataque em vários estágios na máquina da vítima, sendo o estágio final a implantação de um ladrão de informações não identificado.
Receba as últimas notícias, ameaças e recursos do setor.
Categoria: Inteligência de malware
Tipo/família: Ladrão de informações
Indústria: TI e tecnologia
Região: Global
Sumário executivo
AMEAÇA
As versões trojanizadas do aplicativo de desktop 3CX carregam uma DLL com conteúdo malicioso.
A DLL lança um ataque em vários estágios na máquina da vítima, sendo o estágio final a implantação de um ladrão de informações não identificado.
É multiplataforma com uma versão para macOS.
IMPACTO
Dados críticos, como senhas salvas, podem ser comprometidos por meio de navegadores instalados no sistema da vítima.
Análise e atribuição
Em 29 de março de 2023, surgiram relatos de atividades maliciosas originadas de um aplicativo de desktop 3CX assinado. O Falcon Overwatch do CrowdStrike alegou ter observado atividades maliciosas nas versões Windows e macOS do aplicativo.
O produto é um aplicativo de softphone que permite fazer e receber chamadas em seu desktop físico. Atualmente, o aplicativo está disponível para todos os principais sistemas operacionais, incluindo Windows, Linux e macOS. A 3CX afirma ter mais de 600.000 clientes em todo o mundo, portanto, essa campanha pode ter efeitos devastadores.
Visão geral do ataque
Ao instalar as versões afetadas do aplicativo de desktop 3CX, três arquivos são descartados pelo instalador:
3CXDesktopApp.exe: Usado para carregar a primeira DLL trojanizada.
ffmpeg.dll: DLL trojanizada. Ele contém dados que são usados para ler, descriptografar e executar o shellcode da segunda DLL maliciosa lançada pelo instalador.
d3dcompiler_47.dll: contém um código de shell malicioso que busca .ico arquivos de um repositório do GitHub (agora retirados) e descriptografa os URLs de C&C desses arquivos.
Análise técnica
O binário afetado começa carregando a DLL trojanizada ffmpeg.dll. Essa DLL procura a próxima DLL maliciosa no diretório de origem (d3dcompiler_47.dll) e o carrega.
Usando createFileW () para carregar d3dcompiler_47.dll
d3dcompiler_47.dll foi anexado para conter um código de shell malicioso criptografado e é identificado por um marcador exclusivo (0XCEFAEDFE). Esse código de shell foi criptografado usando uma cifra de fluxo RC4.
Usando readFile () para ler o shellcode da DLL após o marcador 0XCEFAEDFE
O código do shell é então descriptografado usando uma chave (3 MB (2BsG# @c7) e armazenados na memória para uso.
Início do ciclo de decodificação e a chave usada para decodificação
Então, Proteção virtual () é usado para alterar as permissões da região da memória em que o código do shell é armazenado PAGE_EXECUTE_READWRITE (0x40). O shellcode também tem uma DLL embutida nele.
Usando o VirtualProtect () para tornar a região da memória executável e a DLL incorporada vista no shellcode
Esse shellcode é um downloader e é responsável por baixar os arquivos.ico maliciosos de um repositório GitHub agora retirado do ar. Ele faz essa solicitação usando uma string exclusiva do User-Agent.
Cadeia de caracteres de agente de usuário usada para fazer a solicitação
Um total de 16 arquivos.ico são baixados https://raw.githubusercontent[.]com/IconStorages/images/main/ e cada arquivo.ico é anexado para ter uma string criptografada no final. Essa string é criptografada usando AES e GCM e é codificada em base64.
Um exemplo da string de URL criptografada nos arquivos.ico
Quando descriptografado, cada .ico o arquivo contém um URL de C&C, que é usado para baixar a carga útil do estágio final. Abaixo estão os C&Cs decifrados para cada .ico, créditos a isso roteiro. O primeiro URL provavelmente foi usado como URL de teste pelo agente da ameaça, já que esse endereço nunca hospedou malware.
icon0.ico
https://www.3cx[.]com/blog/event-trainings/
icon1.ico
https://msstorageazure[.]com/window
icon2.ico
https://officestoragebox[.]com/api/session
icon3.ico
https://visualstudiofactory[.]com/workload
icon4.ico
https://azuredeploystore[.]com/cloud/services
icon5.ico
https://msstorageboxes[.]com/office
icon6.ico
https://officeaddons[.]com/technologies
icon7.ico
https://sourceslabs[.]com/downloads
icon8.ico
https://zacharryblogs[.]com/feed
icon9.ico
https://pbxcloudeservices[.]com/phonesystem
icon10.ico
https://akamaitechcloudservices[.]com/v2/storage
icon11.ico
https://akamaitechcloudservices[.]com/v2/storage
icon12.ico
https://azureonlinestorage[.]com/azure/storage
icon13.ico
https://msedgepackageinfo[.]com/microsoft-edge
icon14.ico
https://glcloudservice[.]com/v1/console
icon15.ico
https://pbxsources[.]com/exchange
A carga útil do estágio final é supostamente um novo ladrão de informações, que rouba dados de navegadores conhecidos, como Chrome, Edge, Brave e Firefox.
Carga útil do Infostealer
O estágio final é um ladrão de informações nunca antes visto. Pesquisadores de segurança da Volexidade Eu chamei esse ladrão ICÔNICO. Esse ladrão não pode ser executado diretamente usando o rundll.exe, pois segue outro processo de carregamento. É por isso que fizemos o possível para tirar nossas conclusões da análise estática.
O ladrão começa verificando a versão do sistema operacional que está sendo executada no sistema da vítima. Depois disso, ele verifica o arquivo C:\Program Files\ 3CXDesktopApp\ config.json. Sem esse arquivo, o ladrão não continuará suas operações.
Obtém a versão atual do sistema operacional e procura o arquivo
Em seguida, o ladrão obtém as informações do nome do host e do nome de domínio e as formata de forma que sejam armazenadas com a versão do sistema operacional. Provavelmente, isso será enviado ao C&C como um identificador de vítima.
Nome do host, nome de domínio e versão atual do sistema operacional armazenados juntos
Em seguida, o ladrão inicia suas operações de roubo de arquivos. Ele usa um loop de Encontre o primeiro arquivo () eEncontre o próximo arquivo () para encontrar dados relacionados a navegadores populares.
Faça um loop para ler arquivos relacionados ao navegador
O ladrão tem os caminhos dos navegadores populares codificados. Abaixo está uma lista dos navegadores de destino e os respectivos arquivos que o ladrão rouba.
O História arquivo para Chrome, Edge e Brave é roubado e o locais.sqlite arquivo para o Firefox foi roubado. Esses arquivos são responsáveis por armazenar o histórico de navegação na web e são armazenados na forma de um banco de dados SQLite. Eles contêm o URL, o título da página, a hora da última visita e outras informações relacionadas à navegação.
Às vezes, o URL de uma página pode conter informações confidenciais, como credenciais criptografadas ou outras informações semelhantes, que podem ser usadas por um invasor. Deve-se notar, no entanto, que isso acontece muito raramente com os principais portais e sites que coletam esses dados.
O ladrão também usa o URL de crack na Internet API para armazenar os componentes detalhados de um URL, como protocolo, nome do host, porta e outros parâmetros.
InternetCrackURLW sendo usado
O ladrão implementa consultas SQL para limitar os resultados a apenas 500 entradas, a fim de garantir que ele roube as informações mais recentes.
Consultas SQL usadas para as informações mais recentes
Finalmente, os dados roubados são repassados para o módulo principal, para que possam ser enviados ao servidor C&C.
Variante macOS
O instalador do macOS para o 3CX também foi infectado e funciona de forma um pouco diferente:
O caminho do componente malicioso é Aplicativo de desktop 3CX.app/Contents/Frameworks/Electron Framework.framework/versions/a/libraries/libffmpeg.dylib.
Os URLs são codificados em XOR e codificados no binário (não recuperados do repositório GitHub mencionado anteriormente). Os URLs usados estão listados abaixo. Essa variante também usa um formato de solicitação da Web ligeiramente diferente para se comunicar com os URLs.
msstorageazure[.]com/analysis
officestoragebox[.]com/api/biosync
visualstudiofactory[.]com/groupcore
azuredeploystore[.]com/cloud/images
msstorageboxes[.]com/xbox
officeaddons[.]com/quality
sourceslabs[.]com/status
zacharryblogs[.]com/xmlquery
pbxcloudeservices[.]com/network
pbxphonenetwork[.]com/phone
akamaitechcloudservices[.]com/v2/fileapi
azureonlinestorage[.]com/google/storage
msedgepackageinfo[.]com/ms-webview
glcloudservice[.]com/v1/status
pbxsources[.]com/queue
www.3cx[.]com/blog/event-trainings/
Detecção
Uma regra da YARA pode ser encontrada na referencia seção deste relatório, a fim de detectar todas as etapas desta campanha.