Ameaça desencadeada: arquivo Excel implanta CobaltStrike na Ucrânia
Neste ataque sofisticado, o agressor emprega táticas de malware em vários estágios para impedir a detecção e, ao mesmo tempo, garantir a estabilidade operacional.
Por Cara Lin | 03 de junho de 2024
Plataformas afetadas: Microsoft Windows
Usuários afetados: Microsoft Windows
Impacto: As máquinas comprometidas estão sob o controle do agente da ameaça
Nível de gravidade: Alto
O FortiGuard Labs identificou recentemente um ataque cibernético sofisticado envolvendo um arquivo Excel incorporado a uma macro VBA projetada para implantar um arquivo DLL. O invasor usa uma estratégia de malware em vários estágios para entregar a notória carga útil “Cobalt Strike” e estabelecer comunicação com um servidor de comando e controle (C2). Este ataque emprega várias técnicas de evasão para garantir a entrega bem-sucedida da carga útil.
Nos últimos anos, a Ucrânia tem sido um alvo significativo devido à sua situação geopolítica. A história destes ataques revela um padrão de complexidade e frequência crescentes, especialmente durante períodos de tensão geopolítica. Por exemplo, em 2022, o FortiGuard Labs relatou uma campanha usando um documento Excel malicioso com o tema militar ucraniano para entregar um carregador Cobalt Strike de vários estágios. Em 2023, a Equipe de Resposta a Emergências Informáticas da Ucrânia (CERT-UA) revelou que o UAC-0057 estava envolvido em um ataque usando um arquivo XLS malicioso contendo uma macro e uma imagem de isca para implantar o PicassoLoader e o Cobalt Strike Beacon em sistemas comprometidos.
Neste artigo, exploraremos os detalhes técnicos deste último ataque em vários estágios.
Figura 1: Fluxo de ataque
Documento Excel
O documento malicioso do Excel contém elementos em ucraniano projetados para induzir o usuário a ativar suas macros.
Figura 2: Documento Excel antes de ativar o VBA
Uma vez activada a macro VBA, o documento muda para folhas relacionadas com o cálculo do “montante de fundos orçamentais atribuídos às unidades militares” (traduzido de “montante de fundos orçamentais atribuídos a unidades militares”).
Figura 3: Documento Excel após habilitar o VBA
A principal função da macro VBA é implantar um downloader de DLL, que é codificado em HEX. Além disso, a maioria das strings no código VBA são codificadas em HEX para evitar mecanismos básicos de detecção de strings.
Figura 4: A função “workbook_open()”
Depois de colocar o arquivo DLL “Ac83faafb23919Ae9.DLl” em “%APPDATA%\VIBErpc\bIn\biN”, a macro cria um atalho chamado “ACtIVePRObE” em “%APPDATA%\Microsoft”. Em seguida, ele usa o comando “Shell” para executar “RunDLL32.EXE shell32.dll,ShellExec_RunDLL ‘%APPDATA%\Microsoft\ACtIVePRObE.lnk’, 0.” Este arquivo LNK foi projetado para chamar regsvr32 para executar o arquivo DLL “Ac83faafb23919Ae9.DLl”.
Figura 5: Criando o arquivo LNK
Figura 6: O arquivo LNK
Baixador de DLLs
O downloader “Ac83faafb23919Ae9.DLl.” é ofuscado com ConfuserEx.
Figura 7: Downloader de DLL “Ac83faafb23919Ae9.DLl”
Primeiro, ele examina nomes de processos para strings específicas: “processhacker”, “avastui”, “aswtoolssvc”, “wsc_proxy”, “procexp”, “overseer” e “avastsvc”. Se detectar um processo correspondente associado a uma ferramenta de análise ou software antivírus, ele encerra o programa.
Figura 8: Verificando os nomes dos processos
Depois de passar na verificação do processo, ele constrói uma solicitação da web para obter a carga útil do próximo estágio da URL “hxxps://goudieelectric[.]shop/cms/svg/6364.2809640e[.]chunk.svg”. Ele só poderá baixar o arquivo necessário se o dispositivo estiver localizado na Ucrânia. Em seguida, ele extrai os dados codificados em base64 na seção que começa com “href=” e faz XOR com a matriz codificada. Em seguida, ele gera um nome de arquivo aleatório e salva os dados decodificados na pasta TEMP.
Figura 9: Construindo uma solicitação web
Figura 10: O arquivo SVG com verificação de geolocalização malsucedida
Figura 11: O arquivo SVG com verificação de geolocalização bem-sucedida
Em seguida, ele executa o arquivo decodificado usando “rundll32.exe”, seguido por um comando sleep para aguardar o término da execução. Depois de concluído, ele exclui o arquivo decodificado para remover quaisquer vestígios.
Figura 12: Execute os dados decodificados
Os dados decodificados também são um arquivo .NET DLL encarregado de descriptografar o arquivo para o próximo estágio e estabelecer persistência.
Figura 13: O arquivo decodificado é empacotado com ConfuserEx
Em seguida, verifica se o arquivo de destino existe. Caso contrário, ele cria o arquivo “C:\ProgramData\Windows\Containers\BaseImages\9cb03978-56d9-4f38-8f05-d1fdf135f0ab\Files\Windows\System32\ResetEngine.dll.” Em seguida, ele usa a chave codificada para descriptografar os dados usando um algoritmo RC4 e grava os dados no arquivo recém-criado.
Figura 14: Gravar conteúdo descriptografado por RC4 em arquivo recém-criado
Em seguida, ele adiciona o valor de registro “C:\Windows\System32\regsvr32.exe /s C:\ProgramData\Windows\Containers\BaseImages\9cb03978-56d9-4f38-8f05-d1fdf135f0ab\Files\Windows\System32\ResetEngine.dll” em “SOFTWARE\Microsoft\Widows\CurrentVersion\Run” para persistência e usa InvokeMethod com “Create” para executar o comando no registro.
Figura 15: Adicionar registro
Figura 16: Execute o “ResetEngine.dll”
Injetor DLL
O arquivo “ResetEngine.dll” serve como componente principal para descriptografar e injetar a carga final. Ele usa “NtDelayExecution” para evitar a detecção de atividades maliciosas em sandboxes. Em seguida, ele itera para inspecionar processos e tenta encerrar o processo pai, se houver, a fim de implementar suas medidas antidepuração.
Figura 17: Atraso na execução e antidepuração
Após a conclusão do processo de detecção de evasão, ele descriptografa a carga final com um algoritmo AES.
Figura 18: Descriptografar dados
Após a descriptografia, ele injeta os dados descriptografados em si mesmo e emprega várias APIs, incluindo “GetCurrentProcessId”, “OpenProcess”, “VirtualAllocEx”, “WriteProcessMemory”, “CreateRemoteThread” e “WaitForSingleObject” para executar o Cobalt Strike final.
Figura 19: Escrevendo Cobalt Strike na memória
A carga útil do Cobalt Strike
O processo de extração de configuração envolve XOR com 0x2E, permitindo-nos decifrar as informações ocultas nele. Ao extrair e analisar a configuração, revelamos os URLs do Beacon’s Cobalt Strike Team Server (C2): “hxxps://simonandschuster[.]shop/the-zero-residual-concept/products” e “hxxps://simonandschuster[.] ]shop/o-conceito-zero-residual/sjj-solutions.”
Figura 20: Configuração decodificada
Figura 21: Solicitação POST do Cobalt Strike
Conclusão
Neste ataque sofisticado, o agressor emprega táticas de malware em vários estágios para impedir a detecção e, ao mesmo tempo, garantir a estabilidade operacional. Ao implementar verificações baseadas em localização durante downloads de carga útil, o invasor visa mascarar atividades suspeitas, evitando potencialmente o escrutínio dos analistas. Aproveitando strings codificadas, o VBA oculta strings de importação cruciais, facilitando a implantação de arquivos DLL para persistência e descriptografia de cargas subsequentes. Além disso, o recurso de autoexclusão auxilia nas táticas de evasão, enquanto o injetor de DLL emprega táticas de atraso e encerra processos pai para evitar mecanismos de sandbox e antidepuração, respectivamente.
Estas manobras orquestradas convergem para a implantação do Cobalt Strike em pontos finais específicos, particularmente dentro dos limites do cenário geopolítico da Ucrânia. Como os documentos do Office oferecem inúmeras funcionalidades, incluindo vários plug-ins e scripts, os usuários devem ter o máximo cuidado ao manusear arquivos provenientes de origens duvidosas. A vigilância é fundamental, especialmente em relação a qualquer queda de arquivo suspeito ou programas de inicialização desconhecidos nas configurações do registro.
COIs
Domínios
goudieelétrico[.]loja
simonandschuster[.]loja
arquivos
88c97af92688d03601e4687b290d4d7f9f29492612e29f714f26a9278c6eda5b
815c1571356cf328a18e0b1f3779d52e5ba11e5e4aac2d216b79bb387963c2be
9649d58a220ed2b4474a37d6eac5f055e696769f87baf58b1d3d0b5da69cbce5
af8104e567c6d614547acb36322ad2ed6469537cd1d78ae1be65fbde1d578abc
de1bceb00c23e468f4f49a79ec69ec8ad3ed622a3ffc08f84c0481ad0f6f592b
6f4642a203541426d504608eed7927718207f29be2922a4c9aa7e022f22e0deb
d90f6e12a917ba42f7604362fafc4e74ed3ce3ffca41ed5d3456de28b2d144bf
d9b16f077cd6e00137ba208031d22fd6423d0ef303883ad4b6f78638693f2044