SOC Prime Bias: Médio

14 Abr 2026 18:43

Fantasma no cofre: Obsidian usado para entregar PhantomPulse RAT

Author Photo
SOC Prime Team linkedin icon Seguir
Fantasma no cofre: Obsidian usado para entregar PhantomPulse RAT
shield icon

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.

graph TB %% Class definitions classDef technique fill:#99ccff classDef tool fill:#ffcc99 classDef malware fill:#ff9999 classDef process fill:#ccffcc %% Technique nodes tech_valid_accounts[“<b>Técnica</b> – <b>T1078 Contas válidas</b><br/><b>Descrição</b>: Adversários usam credenciais comprometidas para aceder a contas da vítima.<br/><b>Detalhes</b>: Credenciais do Obsidian fornecidas à vítima”] class tech_valid_accounts technique tech_user_execution[“<b>Técnica</b> – <b>T1204 Execução pelo utilizador</b><br/><b>Descrição</b>: Utilizadores são enganados para executar código malicioso.<br/><b>Detalhes</b>: Vítima abre vault partilhado e ativa sincronização de plugins”] class tech_user_execution technique tech_powershell_initial[“<b>Técnica</b> – <b>T1059.001 PowerShell</b><br/><b>Descrição</b>: PowerShell usado para executar comandos e scripts.<br/><b>Detalhes</b>: Comando Base64 descarrega script1.ps1”] class tech_powershell_initial technique tech_bits_transfer[“<b>Técnica</b> – <b>T1105 Transferência de ferramentas</b><br/><b>Descrição</b>: Transferência de ferramentas ou payloads para o host comprometido.<br/><b>Detalhes</b>: BitsTransfer descarrega syncobs.exe”] class tech_bits_transfer technique tech_reflective_loading[“<b>Técnica</b> – <b>T1620 Carga reflexiva</b><br/><b>Descrição</b>: Código carregado diretamente em memória.<br/><b>Detalhes</b>: PHANTOMPULL descifra payload AES-256-CBC em memória”] class tech_reflective_loading technique tech_process_injection[“<b>Técnica</b> – <b>T1055.002 Injeção PE</b><br/><b>Descrição</b>: Injeção de código em processos ativos.<br/><b>Detalhes</b>: module stomping reflectivo”] class tech_process_injection technique tech_dynamic_resolution[“<b>Técnica</b> – <b>T1568 Resolução dinâmica</b><br/><b>Descrição</b>: Resolução de C2 em runtime via blockchain.<br/><b>Detalhes</b>: transação blockchain resolve URL C2”] class tech_dynamic_resolution technique tech_powershell_c2[“<b>Técnica</b> – <b>T1059.001 PowerShell</b><br/><b>Descrição</b>: PowerShell usado para comunicação C2”] class tech_powershell_c2 technique tech_applescript[“<b>Técnica</b> – <b>T1059.007 AppleScript</b><br/><b>Descrição</b>: AppleScript executa código malicioso no macOS.<br/><b>Detalhes</b>: dropper via osascript”] class tech_applescript technique tech_launch_agent[“<b>Técnica</b> – <b>T1543.001 Launch Agent</b><br/><b>Descrição</b>: Persistência via LaunchAgent.<br/><b>Detalhes</b>: plist instalado”] class tech_launch_agent technique tech_dead_drop_resolver[“<b>Técnica</b> – <b>T1102.001 Dead Drop Resolver</b><br/><b>Descrição</b>: serviço web usado como resolução C2.<br/><b>Detalhes</b>: Telegram como C2 alternativo”] class tech_dead_drop_resolver technique %% Tool / Malware nodes tool_syncobs_exe[“<b>Ferramenta</b> – <b>Nome</b>: syncobs.exe<br/><b>Descrição</b>: binário de segunda fase”] class tool_syncobs_exe tool malware_phantompull[“<b>Malware</b> – <b>Nome</b>: PHANTOMPULL<br/><b>Descrição</b>: loader reflexivo que executa payload AES-256-CBC”] class malware_phantompull malware %% Flow connections tech_valid_accounts –>|leads_to| tech_user_execution tech_user_execution –>|leads_to| tech_powershell_initial tech_powershell_initial –>|executes| tech_bits_transfer tech_bits_transfer –>|downloads| tool_syncobs_exe tool_syncobs_exe –>|enables| tech_reflective_loading tech_reflective_loading –>|loads| malware_phantompull malware_phantompull –>|facilitates| tech_process_injection tech_process_injection –>|injects| tool_syncobs_exe tech_process_injection –>|enables| tech_dynamic_resolution tech_dynamic_resolution –>|resolves| tech_powershell_c2 tech_dynamic_resolution –>|resolves| tech_applescript tech_powershell_c2 –>|beacons| tech_dead_drop_resolver tech_applescript –>|creates| tech_launch_agent tech_launch_agent –>|persists| tech_dead_drop_resolver

Fluxo de Ataque

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:

    1. Comprometimento Inicial: O atacante deixa um plugin malicioso do Obsidian (evil-plugin.js) no diretório de plugins do usuário do Obsidian.
    2. Gatilho de Execução: Quando o Obsidian é iniciado, o plugin executa uma linha única do PowerShell que lança notepad.exe via Start-Process. Isto cria a exata cadeia de processos Obsidian.exe → notepad.exe que a regra monitora.
    3. Persistência: O plugin é configurado para auto-carregar em cada inicialização do Obsidian, garantindo que o processo filho malicioso se repita.
    4. 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.
  • 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."