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.
![](https://www.plugged.ninja/wp-content/uploads/2020/11/Screenshot_91.png)
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.
![Diagrama de fluxo de ataque do ataque. 1. Implante o arquivo XLS com macro VBA. 2. Solte o downloader de DLL. 3. Solte e execute o arquivo LNK. 4. Execute o downloader de DLL. 5. Baixe dados codificados. 6. Extraia e decodifique dados. 7. Adicione registro. 8. Descriptografe e salve o injetor DLL. 9. Injetar ataque de cobalto](https://www.fortinet.com/blog/threat-research/menace-unleashed-excel-file-deploys-cobalt-strike-at-ukraine/_jcr_content/root/responsivegrid/table_content_copy_c/par/image_1802261813.img.png/1717188131718/cobalt-process-diagram.png)
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.
![Documento Excel com elementos em ucraniano. Um banner na parte superior do documento diz “Aviso de segurança: macros foram desativadas”. com um botão Ativar conteúdo](https://www.fortinet.com/blog/threat-research/menace-unleashed-excel-file-deploys-cobalt-strike-at-ukraine/_jcr_content/root/responsivegrid/table_content_copy_c/par/image_1487854739.img.png/1717188964603/cobalt-excel-before.png)
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”).
![O documento Excel após ativar o VBA. A captura de tela mostra uma planilha de orçamento em ucraniano.](https://www.fortinet.com/blog/threat-research/menace-unleashed-excel-file-deploys-cobalt-strike-at-ukraine/_jcr_content/root/responsivegrid/table_content_copy_c/par/image_1802261813_cop.img.png/1717189702260/cobalt-excel-after.png)
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.
![A função workbook_open()](https://www.fortinet.com/blog/threat-research/menace-unleashed-excel-file-deploys-cobalt-strike-at-ukraine/_jcr_content/root/responsivegrid/table_content_copy_c/par/image_736205530_copy_731503453.img.png/1717189979608/cobalt-workbook-function.png)
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”.
![Comando Shell criando o arquivo LNK](https://www.fortinet.com/blog/threat-research/menace-unleashed-excel-file-deploys-cobalt-strike-at-ukraine/_jcr_content/root/responsivegrid/table_content_copy_c/par/image_736205530.img.png/1717190760379/cobalt-create-lnk.png)
Figura 5: Criando o arquivo LNK
![O arquivo LNK](https://www.fortinet.com/blog/threat-research/menace-unleashed-excel-file-deploys-cobalt-strike-at-ukraine/_jcr_content/root/responsivegrid/table_content_copy_c/par/image_736205530_copy_1679512589.img.png/1717190791048/cobalt-lnk.png)
Figura 6: O arquivo LNK
Baixador de DLLs
O downloader “Ac83faafb23919Ae9.DLl.” é ofuscado com ConfuserEx.
![O downloader de DLL. O código é ofuscado com ConfuserEx.](https://www.fortinet.com/blog/threat-research/menace-unleashed-excel-file-deploys-cobalt-strike-at-ukraine/_jcr_content/root/responsivegrid/table_content_copy_c/par/image_736205530_copy_1605889103.img.png/1717191045466/cobalt-dll-downloader.png)
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.
![Verificando nomes de processos para strings específicas relacionadas a ferramentas de análise e software antivírus](https://www.fortinet.com/blog/threat-research/menace-unleashed-excel-file-deploys-cobalt-strike-at-ukraine/_jcr_content/root/responsivegrid/table_content_copy_c/par/image_736205530_copy.img.png/1717191216474/cobalt-checking-names.png)
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.
![O downloader constrói uma solicitação da web.](https://www.fortinet.com/blog/threat-research/menace-unleashed-excel-file-deploys-cobalt-strike-at-ukraine/_jcr_content/root/responsivegrid/table_content_copy_c/par/image_736205530_copy_1552373307.img.png/1717192235410/cobalt-constructing-web-request.png)
Figura 9: Construindo uma solicitação web
![Arquivo SVG](https://www.fortinet.com/blog/threat-research/menace-unleashed-excel-file-deploys-cobalt-strike-at-ukraine/_jcr_content/root/responsivegrid/table_content_copy_c/par/image_736205530_copy_1778875838.img.png/1717192557813/cobalt-unsuccessful-geo.png)
Figura 10: O arquivo SVG com verificação de geolocalização malsucedida
![Arquivo SVG](https://www.fortinet.com/blog/threat-research/menace-unleashed-excel-file-deploys-cobalt-strike-at-ukraine/_jcr_content/root/responsivegrid/table_content_copy_c/par/image_736205530_copy_282206542.img.png/1717192584084/cobalt-successful-geo.png)
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.
![O arquivo rundll32.exe que executa os dados decodificados](https://www.fortinet.com/blog/threat-research/menace-unleashed-excel-file-deploys-cobalt-strike-at-ukraine/_jcr_content/root/responsivegrid/table_content_copy_c/par/image_736205530_copy_142015476.img.png/1717193740340/cobalt-execute.png)
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.
![O arquivo decodificado](https://www.fortinet.com/blog/threat-research/menace-unleashed-excel-file-deploys-cobalt-strike-at-ukraine/_jcr_content/root/responsivegrid/table_content_copy_c/par/image_736205530_copy_1363783304.img.png/1717195935770/cobalt-13.png)
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.
![O código para gravar o conteúdo descriptografado por RC4 em um novo arquivo](https://www.fortinet.com/blog/threat-research/menace-unleashed-excel-file-deploys-cobalt-strike-at-ukraine/_jcr_content/root/responsivegrid/table_content_copy_c/par/image_736205530_copy_1252841791.img.png/1717195497029/cobalt-14.png)
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.
![Código para adicionar valor de registro](https://www.fortinet.com/blog/threat-research/menace-unleashed-excel-file-deploys-cobalt-strike-at-ukraine/_jcr_content/root/responsivegrid/table_content_copy_c/par/image_736205530_copy_502287344.img.png/1717196277025/cobalt-15.png)
Figura 15: Adicionar registro
![Código que executa o arquivo ResetEngine.dll](https://www.fortinet.com/blog/threat-research/menace-unleashed-excel-file-deploys-cobalt-strike-at-ukraine/_jcr_content/root/responsivegrid/table_content_copy_c/par/image_736205530_copy_570497118.img.png/1717196360692/cobalt-16.png)
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.
![ResetEngine.dll usa a função NtDelayExecution para evitar a detecção e implementar medidas anti-depuração](https://www.fortinet.com/blog/threat-research/menace-unleashed-excel-file-deploys-cobalt-strike-at-ukraine/_jcr_content/root/responsivegrid/table_content_copy_c/par/image_736205530_copy_1466183101.img.png/1717196635624/cobalt-17.png)
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.
![Código que descriptografa a carga final](https://www.fortinet.com/blog/threat-research/menace-unleashed-excel-file-deploys-cobalt-strike-at-ukraine/_jcr_content/root/responsivegrid/table_content_copy_c/par/image_736205530_copy_1414737070.img.png/1717196705500/cobalt-18.png)
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.
![Código injetando dados descriptografados em si mesmo e executando o Cobalt Strike final](https://www.fortinet.com/blog/threat-research/menace-unleashed-excel-file-deploys-cobalt-strike-at-ukraine/_jcr_content/root/responsivegrid/table_content_copy_c/par/image_736205530_copy_1144065961.img.png/1717196896551/cobalt-19-1.png)
![Carga útil do Cobalt Strike](https://www.fortinet.com/blog/threat-research/menace-unleashed-excel-file-deploys-cobalt-strike-at-ukraine/_jcr_content/root/responsivegrid/table_content_copy_c/par/image_736205530_copy_350023934.img.png/1717197017284/cobalt-19-2.png)
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.”
![Configuração decodificada](https://www.fortinet.com/blog/threat-research/menace-unleashed-excel-file-deploys-cobalt-strike-at-ukraine/_jcr_content/root/responsivegrid/table_content_copy_c/par/image_736205530_copy_1343100368.img.png/1717197366869/cobalt-20.png)
Figura 20: Configuração decodificada
![Solicitação POST do Cobalt Strike](https://www.fortinet.com/blog/threat-research/menace-unleashed-excel-file-deploys-cobalt-strike-at-ukraine/_jcr_content/root/responsivegrid/table_content_copy_c/par/image_736205530_copy_1324158484.img.png/1717197400837/cobalt-21.png)
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