SOC Prime Bias: Médio

08 Abr 2026 14:50

Stealers para MacOS Observados: O que os Defensores Devem Observar

Author Photo
Ruslan Mikhalov Chefe de Pesquisa de Ameaças na SOC Prime linkedin icon Seguir
Stealers para MacOS Observados: O que os Defensores Devem Observar
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Resumo

O artigo perfila um ladrão de credenciais para macOS associado ao ecossistema AMOS, entregue através de páginas falsas de atualização de software. As vítimas são incentivadas a executar uma cadeia de comandos que puxa um binário auxiliar de rvdownloads.com, executa-o via zsh e aciona AppleScript ofuscado para coletar senhas, artefatos de navegador, extensões de carteira de criptomoedas, Notas da Apple e arquivos locais. A persistência é estabelecida usando um plist malicioso de LaunchAgent que se disfarça como um componente legítimo do Spotlight. O artigo também compartilha IOCs observados e as etapas de análise usadas para validar o fluxo de infecção.

Investigação

O pesquisador capturou o comando curl inicial que buscava uma URL codificada em Base64, a decodificava e observou um download curl subsequente do binário auxiliar. O auxiliar executou dois AppleScripts: um para detecção de VM e outro que cuidava da coleta e exfiltração. O ladrão obtinha credenciais do Keychain, tentava desativar ferramentas de segurança, coletava dados do navegador e carteira, copiava Notas da Apple, agrupava resultados em um arquivo e enviava para laislivon.com. A persistência foi criada instalando um LaunchAgent que reexecuta toda a cadeia de script no login do usuário.

Mitigação

Reduza a exposição bloqueando os domínios maliciosos identificados, restringindo a execução de scripts não assinados e monitorando atividades incomuns de carregamento do launchctl vinculadas a novos LaunchAgents. Use controles de endpoint que sinalizam combinações suspeitas de curl e osascript, especialmente ao puxar conteúdo remoto de hosts desconhecidos. Limite a execução privilegiada sempre que possível e aplique listas de permissão de aplicativos para impedir o lançamento de binários auxiliares não confiáveis.

Resposta

Se indicadores forem encontrados, isole o endpoint, termine os processos maliciosos ativos, remova o binário auxiliar e exclua o plist do LaunchAgent desonesto. Restaure credenciais e tokens potencialmente expostos, dando prioridade aos segredos do Keychain e dados armazenados no navegador. Colete artefatos forenses para os IOCs listados, revise logs do sistema para execução curl/osascript e monitore tentativas de callback ou download repetidos associados à mesma infraestrutura C2.

"graph TB %% Class Definitions classDef action fill:#99ccff classDef tool fill:#cccccc classDef technique fill:#ffedcc classDef process fill:#e2e2ff %% Nodes u2013 Actions action_initial_access["<b>Ação</b> – <b>T1219 Ferramentas de Acesso Remoto</b><br/>Execute um comando curl que decodifica uma URL base64 e executa um shell zsh para baixar uma carga secundária de rvdownloads.com/frozenfix/update."] class action_initial_access action action_obfuscation["<b>Ação</b> – <b>T1027 Ofuscação</b><br/>Script auxiliar esconde strings usando Base64, aritmética personalizada, preenchimento binário e inserção de código de lixo."] class action_obfuscation action action_sandbox_evasion["<b>Ação</b> – <b>T1497.002 Evasão de Sandbox Virtualização</b><br/>AppleScript verifica a saída do system_profiler para indicadores de VM como QEMU, VMware e KVM."] class action_sandbox_evasion action action_credential_harvest["<b>Ação</b> – <b>T1056.002 Captura de Entrada GUI</b><br/>Diálogo forjado do osascript solicita a senha de administrador, valida-a contra o Keychain e a armazena em ~/.pwd."] class action_credential_harvest action action_defense_evasion["<b>Ação</b> – <b>T1027.005 Remoção de Indicadores de Ferramentas</b><br/>Malware termina Little Snitch e BlockBlock e descarrega seus agentes de lançamento."] class action_defense_evasion action action_browser_theft["<b>Ação</b> – <b>T1217 Descoberta de Informações do Navegador</b><br/>Enumera perfis do Chrome, Brave, Edge, Opera e Firefox e extrai dados de login, cookies, preenchimento automático e dados de extensão, direcionando extensões de carteira cripto."] class action_browser_theft action action_notes_theft["<b>Ação</b> – Roubo de Dados do Apple Notes<br/>Copia o banco de dados SQLite de Notas e arquivos de mídia associados para uma pasta de preparação."] class action_notes_theft action action_data_staging["<b>Ação</b> – <b>T1132 Codificação de Dados</b><br/>Copia arquivos coletados para /tmp/stolen_data e os comprime em archive.tar.gz."] class action_data_staging action action_c2["<b>Ação</b> – <b>T1102 Serviço Web</b><br/>Envia o arquivo comprimido via POST curl para https://laislivon.com/upload."] class action_c2 action action_persistence["<b>Ação</b> – <b>T1543.001 Persistência do Agente de Lançamento</b><br/>Escreve um plist de LaunchAgent (com.apple.mdworker.plist) para ~/Library/LaunchAgents e o carrega com launchctl."] class action_persistence action action_execution["<b>Ação</b> – <b>T1127.003 Execução por Proxy de Utilitários de Desenvolvedor de Confiança</b><br/>Executa o AppleScript malicioso em cada login usando osascript, aproveitando utilitários de desenvolvedor de confiança."] class action_execution action %% Nodes u2013 Tools tool_curl["<b>Ferramenta</b> – <b>Nome</b>: curl<br/><b>Descrição</b>: Transfere dados de servidores remotos usando sintaxe de URL."] class tool_curl tool tool_osascript["<b>Ferramenta</b> – <b>Nome</b>: osascript<br/><b>Descrição</b>: Executa scripts AppleScript ou JavaScript para Automação em macOS."] class tool_osascript tool tool_launchctl["<b>Ferramenta</b> – <b>Nome</b>: launchctl<br/><b>Descrição</b>: Gerencia agentes de lançamento e daemons em macOS."] class tool_launchctl tool %% Nodes u2013 Techniques (detalhe adicional) tech_T1027_008["<b>Técnica</b> – T1027.008 Cargas Estritamente Limitadas<br/>Cargas são desprovidas de símbolos e informações de depuração para dificultar a análise."] class tech_T1027_008 technique tech_T1027_001["<b>Técnica</b> – T1027.001 Preenchimento Binário<br/>Adiciona bytes não funcionais aos binários para alterar tamanho e hash."] class tech_T1027_001 technique tech_T1027_007["<b>Técnica</b> – T1027.007 Resolução Dinâmica de API<br/>Resolve chamadas de API em tempo de execução para evitar detecção estática."] class tech_T1027_007 technique tech_T1027_016["<b>Técnica</b> – T1027.016 Inserção de Código Lixo<br/>Insere instruções irrelevantes para confundir ferramentas de análise."] class tech_T1027_016 technique tech_T1140["<b>Técnica</b> – T1140 Desofuscar/Descompactar Arquivos ou Informações<br/>Decodifica ou desofusca dados antes da execução."] class tech_T1140 technique tech_T1555_001["<b>Técnica</b> – T1555.001 Credenciais de Armazenamento de Senhas: Keychain<br/>Extrai credenciais armazenadas do Keychain do macOS."] class tech_T1555_001 technique tech_T1555_002["<b>Técnica</b> – T1555.002 Credenciais de Armazenamento de Senhas: Memória do Securityd<br/>Lê credenciais da memória do daemon de segurança."] class tech_T1555_002 technique tech_T1555_003["<b>Técnica</b> – T1555.003 Credenciais de Navegadores Web<br/>Rouba senhas salvas de navegadores."] class tech_T1555_003 technique tech_T1606_001["<b>Técnica</b> – T1606.001 Falsificar Credenciais Web: Cookies da Web<br/>Coleta cookies de navegador para sequestro de sessão."] class tech_T1606_001 technique tech_T1132_001["<b>Técnica</b> – T1132.001 Codificação Padrão<br/>Usa codificação padrão (por exemplo, gzip) para compressão de dados."] class tech_T1132_001 technique tech_T1546_009["<b>Técnica</b> – T1546.009 Execução Disparada por Evento: DLLs do AppCert<br/>Dispara execução via eventos de sistema de confiança."] class tech_T1546_009 technique %% Flow Connections action_initial_access –>|usa| tool_curl tool_curl –>|baixa| action_obfuscation action_obfuscation –>|emprega| tech_T1027_008 action_obfuscation –>|emprega| tech_T1027_001 action_obfuscation –>|emprega| tech_T1027_007 action_obfuscation –>|emprega| tech_T1027_016 action_obfuscation –>|emprega| tech_T1140 action_obfuscation –>|leva a| action_sandbox_evasion action_sandbox_evasion –>|verifica para| tech_T1497_002 action_sandbox_evasion –>|leva a| action_credential_harvest action_credential_harvest –>|usa| tool_osascript action_credential_harvest –>|captura| tech_T1056_002 action_credential_harvest –>|extrai| tech_T1555_001 action_credential_harvest –>|extrai| tech_T1555_002 action_credential_harvest –>|leva a| action_defense_evasion action_defense_evasion –>|remove| tech_T1027_005 action_defense_evasion –>|leva a| action_browser_theft action_browser_theft –>|descobre| tech_T1217 action_browser_theft –>|rouba| tech_T1555_003 action_browser_theft –>|coleta| tech_T1606_001 action_browser_theft –>|leva a| action_notes_theft action_notes_theft –>|armazena em| action_data_staging action_data_staging –>|comprime com| tech_T1132 action_data_staging –>|usa codificação| tech_T1132_001 action_data_staging –>|leva a| action_c2 action_c2 –>|envia via| tool_curl action_c2 –>|usa| tech_T1102 action_c2 –>|leva a| action_persistence action_persistence –>|cria| tech_T1543_001 action_persistence –>|carrega com| tool_launchctl action_persistence –>|leva a| action_execution action_execution –>|executa com| tool_osascript action_execution –>|aproveita| tech_T1127_003 action_execution –>|disparado por| tech_T1546_009 "

Fluxo de Ataque

Execução de Simulação

Pré-requisito: A Verificação Pré-voo de Telemetria & Baseline deve ter sido aprovada.

Fundamentação: Esta seção detalha a execução precisa da técnica adversária (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.

  • Narrativa do Ataque & Comandos:

    Um atacante que obteve acesso em nível de usuário na máquina da vítima deseja estabelecer persistência e exfiltrar credenciais coletadas.

    1. Persistência: O atacante escreve um plist malicioso de LaunchAgent no diretório padrão de LaunchAgents no macOS (simulado no coletor Linux via caminho do diretório de origem).
    2. Coleta de Dados: Arquivos sensíveis são copiados para uma pasta de preparação.
    3. Preparação para Exfiltração: Os dados preparados são arquivados em /tmp/archive.tar.gz usando o utilitário nativo tar .
    4. Ativação: O atacante carrega o LaunchAgent com launchctl, causando execução do código malicioso em cada login do usuário.

    As linhas de comando exatas correspondem às strings monitoradas pela regra, garantindo que um alerta seja gerado.

  • Script de Teste de Regressão:

    #!/usr/bin/env bash
    set -euo pipefail
    
    # 1. Crie um arquivo "roubado" fictício
    echo "senha123" > /tmp/credentials.txt
    
    # 2. Crie um plist malicioso de LaunchAgent (local simulado)
    PLIST_PATH="$HOME/Library/LaunchAgents/com.apple.mdworker.plist"
    mkdir -p "$(dirname "$PLIST_PATH")"
    cat > "$PLIST_PATH" <<EOF
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
    <dict>
        <key>Label</key><string>com.apple.mdworker</string>
        <key>ProgramArguments</key>
        <array>
            <string>/usr/bin/cat</string>
            <string>/tmp/credentials.txt</string>
        </array>
        <key>RunAtLoad</key><true/>
    </dict>
    </plist>
    EOF
    
    # 3. Arquive os dados "roubados" (caminho exato que a regra monitora)
    tar -czf /tmp/archive.tar.gz -C /tmp credentials.txt
    
    # 4. Carregue o LaunchAgent (isso gera a linha de comando que a regra monitora)
    launchctl load "$PLIST_PATH"
    
    echo "Simulação completa – a detecção deve ter disparado."
  • Comandos de Limpeza:

    #!/usr/bin/env bash
    set -euo pipefail
    
    # Descarregue o LaunchAgent
    launchctl unload "$HOME/Library/LaunchAgents/com.apple.mdworker.plist" || true
    
    # Remova arquivos
    rm -f "$HOME/Library/LaunchAgents/com.apple.mdworker.plist"
    rm -f /tmp/archive.tar.gz
    rm -f /tmp/credentials.txt
    
    echo "Limpeza finalizada."