
Ghostwriter: Campanha Belarusiana utiliza macros obfuscados em Excel para distribuir malware
Ataques cibernéticos vinculados a grupos de ameaças associados à Belarus continuam a visar ativistas da oposição e entidades governamentais ucranianas. Recentemente, pesquisadores da SentinelOne identificaram uma nova campanha utilizando documentos maliciosos do Excel com macros obfuscados para distribuir uma variante do malware PicassoLoader.
O grupo, conhecido como Ghostwriter (TA445, UNC1151), está ativo desde 2016 e tem alinhamento com interesses de segurança russos. A campanha atual, em andamento desde meados de 2024, utiliza técnicas sofisticadas de evasão, incluindo Macropack para ofuscar macros VBA e ConfuserEx para embaralhar código .NET.
Neste artigo, exploramos a ameaça e apresentamos dois scripts em Python que podem ajudar na mitigação de ataques similares.
Técnicas utilizadas pelo Ghostwriter
-
Macros obfuscados em Excel
-
Os atacantes distribuem arquivos Excel maliciosos via Google Drive ou e-mails de phishing.
-
As macros, ofuscadas com Macropack, são ativadas quando a vítima habilita o conteúdo.
-
Um arquivo DLL é escrito no disco, carregando o PicassoLoader ou outros payloads.
-
-
Download de Payloads Adicionais
-
Após a infecção inicial, um arquivo Excel legítimo é exibido como isca, enquanto malware secundário é baixado.
-
Em alguns casos, o malware é escondido em imagens JPG (esteganografia) para evitar detecção.
-
-
Uso de LibCMD para Execução de Comandos
-
Uma DLL maliciosa chamada LibCMD é carregada na memória para executar comandos via
cmd.exe
.
-
Mitigação com Python
Abaixo, apresentamos dois scripts em Python que podem ajudar a detectar e mitigar ameaças similares às utilizadas pelo Ghostwriter.
1. Analisador de macros em arquivos Office (detecção de VBA malicioso)
import olefile import re def analyze_macros(file_path): try: ole = olefile.OleFileIO(file_path) if ole.exists('Macros/VBA'): print("[!] Macros encontradas no arquivo!") macro_data = ole.openstream('Macros/VBA').read().decode('latin-1') # Padrões suspeitos (obfuscação, shellcode, URLs) suspicious_patterns = [ r"Shell\(", r"CreateObject\(", r"URLDownloadToFile", r"chr\(\d+\)", r"eval\(", r"Execute\(" ] for pattern in suspicious_patterns: if re.search(pattern, macro_data, re.IGNORECASE): print(f"[ALERTA] Padrão suspeito encontrado: {pattern}") return True else: print("[+] Nenhuma macro detectada.") ole.close() except Exception as e: print(f"[ERRO] Falha ao analisar o arquivo: {e}") return False # Uso: file_path = "malicious_document.xlsm" if analyze_macros(file_path): print("Arquivo potencialmente malicioso! Investigação necessária.") else: print("Arquivo parece seguro.")
Como funciona?
- Extrai e analisa macros de arquivos Office (Excel, Word).
- Busca por padrões suspeitos, como chamadas a Shell(), URLDownloadToFile, ou ofuscação com chr().
2. Monitoramento de processos suspeitos (detecção de cargas maliciosas em memória)
import psutil import time def monitor_suspicious_processes(): suspicious_processes = ["cmd.exe", "powershell.exe", "wscript.exe", "mshta.exe"] malicious_dlls = ["LibCMD.dll", "PicassoLoader.dll"] while True: for proc in psutil.process_iter(['pid', 'name', 'cmdline']): try: # Verifica processos suspeitos if proc.info['name'] in suspicious_processes: print(f"[ALERTA] Processo suspeito em execução: {proc.info}") # Verifica DLLs maliciosas carregadas for dll in malicious_dlls: if dll.lower() in " ".join(proc.info['cmdline'] or []).lower(): print(f"[CRÍTICO] DLL maliciosa detectada:
{dll} no PID {proc.info['pid']}") except (psutil.NoSuchProcess, psutil.AccessDenied): continue time.sleep(5) # Verifica a cada 5 segundos # Uso: print("Iniciando monitoramento de processos suspeitos...") try: monitor_suspicious_processes() except KeyboardInterrupt: print("Monitoramento encerrado.")
Como funciona?
-
Monitora processos em execução, como
cmd.exe
oupowershell.exe
, que podem ser usados para execução de payloads. -
Detecta carregamento de DLLs maliciosas conhecidas (ex:
LibCMD.dll
).
Conclusão
A campanha do Ghostwriter demonstra a sofisticação de grupos apoiados por Estados-nação, utilizando técnicas como obfuscação de macros e esteganografia para evadir detecção.
Com os scripts Python apresentados, equipes de segurança podem:
-
Analisar automaticamente macros em documentos Office antes de abri-los.
-
Monitorar processos em tempo real para detectar atividades maliciosas.
A mitigação proativa é essencial, especialmente para organizações ucranianas e ativistas que são alvos frequentes desses ataques.
Recomendações adicionais:
-
Desabilitar macros por padrão no Microsoft Office.
-
Utilizar sandboxing para análise de arquivos suspeitos.
-
Monitorar tráfego de saída para domínios maliciosos (ex:
sciencealert[.]shop
).
Mantenha-se vigilante e atualize suas defesas continuamente!
Fonte e imagens: https://thehackernews.com/2025/02/belarus-linked-ghostwriter-uses.html