Fantasma no cofre: Obsidian usado para entregar PhantomPulse RAT
Detection stack
- AIDR
- Alert
- ETL
- Query
Resumo
Elastic Security Labs descobriu uma nova campanha de engenharia social que explora a plataforma de anotações Obsidian e seu ecossistema de plugins comunitários para entregar PhantomPulse, um RAT anteriormente não documentado que tem como alvo os sistemas Windows e macOS. A operação parece dirigida a indivíduos no espaço financeiro e de criptomoedas, com os atacantes usando LinkedIn e Telegram para distribuir um cofre Obsidian comprometido como isca inicial. No Windows, a cadeia de infecção depende do PowerShell, de um carregador personalizado na memória conhecido como PhantomPull, e de técnicas de carregamento reflexivo. No macOS, os atacantes usam AppleScript juntamente com um mecanismo de comando e controle baseado em Telegram morto. A campanha também incorpora descoberta de C2 baseada em blockchain através de dados de transações Ethereum.
Investigação
Os pesquisadores reproduziram o ataque construindo um cofre Obsidian armado que usava os plugins Shell Commands e Hider para acionar a execução maliciosa. Durante a análise, observaram scripts PowerShell baixando um carregador chamado syncobs.exe de 195.3.222.251, que então recuperava uma carga útil criptografada e a carregava reflexivamente na memória. O carregador criou um mutex, comunicou-se com um painel de controle hospedado em panel.fefea22134.net, e suportou infraestrutura de fallback derivada de dados de blockchain. No macOS, o malware estabeleceu persistência através de um plist do LaunchAgent e baixou uma carga útil secundária do AppleScript de um domínio codificado e de um canal no Telegram. Os investigadores recuperaram artefatos chave a partir de arquivos de configuração JSON e recursos na memória atrelados a ambos os caminhos de infecção.
Mitigação
As organizações devem impedir que o Obsidian gere processos filhos não autorizados, aplicar controles rígidos sobre o uso de plugins da comunidade e monitorar a atividade do PowerShell onde o Obsidian aparece como o processo pai. As defesas de rede devem bloquear o tráfego de saída para 195.3.222.251 e os domínios panel.fefea22134.net, 0x666.info, e locais conhecidos de Telegram dead-drop associados à campanha. As equipes de segurança também devem procurar sinais de carregamento reflexivo, abuso de callback em fila de temporizadores, e o valor específico do mutex usado pelo carregador de malware.
Resposta
Se forem detectados processos filhos suspeitos a partir de Obsidian, isole imediatamente o host afetado e colete o diretório .obsidian para revisão forense dos arquivos de plugins maliciosos e conteúdo do cofre. Procure pelo mutex hVNBUORXNiFLhYYh, então verifique os endpoints para rastros do carregador PHANTOMPULL e dos binários do RAT PHANTOMPULSE. Bloqueie a infraestrutura de comando e controle identificada, revogue quaisquer credenciais Obsidian comprometidas, e faça uma análise mais ampla para exposição de roubo de credenciais envolvendo contas financeiras e de criptomoedas.
Fluxo de Ataque
Detectações
Download ou Upload via PowerShell (via linha de comando)
Ver
Strings Suspeitas do PowerShell (via linha de comando)
Ver
Uso Suspeito do Invoke-RestMethod (via powershell)
Ver
Strings Suspeitas do PowerShell (via powershell)
Ver
Atividade Possível de Transferência de Bits (via powershell)
Ver
Comunicação Suspeita de Domínio Trycloudflare (via proxy)
Ver
Download de Arquivo Suspeito Direto por IP (via proxy)
Ver
Comunicação Suspeita de Domínio Trycloudflare (via dns)
Ver
Obsidian Explorados para Execução de Código e Persistência [Criação de Processo no Windows]
Ver
Execução Suspeita do PowerShell com Obsidian como Processo Pai [PowerShell no Windows]
Ver
Execução de Simulação
Pré-requisito: A Verificação de Pré-voo de Telemetria e Linha de Base deve ter passado.
Justificativa: Esta seção detalha a execução precisa da técnica do adversário (TTP) projetada para acionar a regra de detecção. Os comandos e a narrativa DEVEM refletir diretamente os TTPs identificados e visam gerar a telemetria exata esperada pela lógica de detecção. Exemplos abstratos ou não relacionados levarão a um diagnóstico incorreto.
-
Narrativa de Ataque & Comandos:
- Comprometimento Inicial: O atacante deixa um plugin malicioso do Obsidian (
evil-plugin.js) no diretório de plugins do usuário do Obsidian. - Gatilho de Execução: Quando o Obsidian é iniciado, o plugin executa uma linha única do PowerShell que lança
notepad.exeviaStart-Process. Isto cria a exata cadeia de processosObsidian.exe → notepad.exeque a regra monitora. - Persistência: O plugin é configurado para auto-carregar em cada inicialização do Obsidian, garantindo que o processo filho malicioso se repita.
- Evasão: O plugin também invoca brevemente
rundll32.exe(T1216.002) para carregar uma DLL inofensiva, mascarando o verdadeiro propósito enquanto mantém a cadeia detectada intacta.
- Comprometimento Inicial: O atacante deixa um plugin malicioso do Obsidian (
-
Script de Teste de Regressão:
# ------------------------------------------------- # Simulação de plugin malicioso do Obsidian (PowerShell) # ------------------------------------------------- # 1. Certifique-se de que o Obsidian está instalado no caminho esperado $obsidianPath = "C:Program FilesObsidianObsidian.exe" if (-Not (Test-Path $obsidianPath)) { Write-Error "Obsidian não encontrado em $obsidianPath" exit 1 } # 2. Lançar Obsidian *como pai* e imediatamente iniciar o Notepad $startInfo = New-Object System.Diagnostics.ProcessStartInfo $startInfo.FileName = $obsidianPath $startInfo.Arguments = "-c `"Start-Process notepad.exe`"" $startInfo.UseShellExecute = $false $startInfo.CreateNoWindow = $true $proc = [System.Diagnostics.Process]::Start($startInfo) # 3. Opcional: invoca um binário assinado (rundll32) para simular T1216.002 Start-Process -FilePath "C:WindowsSystem32rundll32.exe" -ArgumentList "shell32.dll,Control_RunDLL" -WindowStyle Hidden # 4. Mantenha o script ativo brevemente para permitir o registro de logs Start-Sleep -Seconds 5 # ------------------------------------------------- -
Comandos de Limpeza:
# Encerre qualquer instância de Obsidian ou Notepad criada pelo teste Get-Process -Name "Obsidian","notepad","rundll32" -ErrorAction SilentlyContinue | Stop-Process -Force # Remova o arquivo de plugin malicioso simulado (se existiu) $pluginPath = "$env:APPDATAObsidianpluginsevil-plugin.js" if (Test-Path $pluginPath) { Remove-Item $pluginPath -Force } Write-Host "Limpeza completa."