SOC Prime Bias: Médio

16 Apr 2026 13:46 UTC

Campanha Safari da Coreia do Norte Entrega RATs

Author Photo
SOC Prime Team linkedin icon Seguir
Campanha Safari da Coreia do Norte Entrega RATs
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Resumo

O artigo descreve um novo framework de malware para macOS chamado Mach-O Man que tem sido associado à famosa unidade Chollima do Grupo Lazarus. O malware é distribuído através de contas de Telegram comprometidas e convites para reuniões falsas que persuadem as vítimas a executar um comando ClickFix em seus dispositivos. O kit de ferramentas inclui vários binários Mach-O projetados para coletar detalhes do host, manter a persistência e roubar credenciais e dados do navegador, com exfiltração ocorrendo via Telegram. A campanha parece focar em exchanges de criptomoedas e outras organizações no setor financeiro.

Investigação

Pesquisadores identificaram um binário de preparação chamado teamsSDK.bin que foi baixado e executado através de uma sequência de comandos maliciosa. Componentes adicionais, incluindo D1yCPUyk.bin, minst2.bin, e macrasv2, foram então usados para enumerar o sistema, criar um LaunchAgent para persistência, e coletar extensões de navegador, dados do keychain e cookies. A comunicação de comando e controle dependia de um servidor HTTP baseado em Go que expunha um endpoint /info não autenticado e vazava um token da API Bot do Telegram. Investigadores também encontraram serviços de acesso remoto como RDP, WinRM e Chrome Remote Desktop expostos no host C2.

Mitigação

Os usuários devem evitar interagir com links de reuniões não solicitadas e confirmar a legitimidade de quaisquer comandos de terminal sugeridos durante conversas inesperadas. Organizações devem monitorar quanto a LaunchAgents não autorizados, exigir assinatura de código de confiança para binários macOS, e restringir a execução de arquivos desconhecidos. As defesas de rede devem bloquear conexões de saída para servidores HTTP suspeitos baseados em Go e sinalizar tráfego usando o Go-http-client user agent. Tokens de bot do Telegram devem ser protegidos contra exposição, e serviços de desktop remoto devem ser bloqueados com controles de acesso de menor privilégio.

Resposta

Equipes de segurança devem detectar a execução de arquivos .bin desconhecidos e monitorar a criação de LaunchAgents chamados com.onedrive.launcher. Alertas também devem ser acionados em conexões de saída para infraestruturas suspeitas usando o Go-http-client user agent, bem como em solicitações POST repetidas para /info endpoints. Defensores devem observar atividade inesperada da API do Telegram ligada a tokens de bot desconhecidos. Devem ser realizadas análises forenses completas do host para identificar e remover todos os binários maliciosos, seguidos de redefinição de credenciais para quaisquer contas que possam ter sido comprometidas.

"graph TB %% Class Definitions Section classDef action fill:#99ccff classDef tool fill:#cccccc classDef malware fill:#ffcc99 classDef process fill:#e6ffe6 classDef file fill:#ffe6cc classDef service fill:#e6e6ff %% Node Definitions initial_access_user_execution["<b>Ação</b> – <b>T1204.001 Execução do Usuário</b><br/>A vítima clica em um link malicioso de “correção” em uma reunião do Telegram que executa um comando curl"] class initial_access_user_execution action tool_curl["<b>Ferramenta</b> – <b>Nome</b>: curl<br/><b>Descrição</b>: utilitário de linha de comando para transferir dados de ou para um servidor"] class tool_curl tool file_teamsSDK_bin["<b>Arquivo</b> – <b>Nome</b>: teamsSDK.bin (Mach-O)<br/><b>Descrição</b>: Binário de preparação baixado e executado"] class file_teamsSDK_bin file process_curl_download["<b>Processo</b> – download e execução de curl teamsSDK.bin"] class process_curl_download process malware_teamsSDK["<b>Malware</b> – <b>Nome</b>: teamsSDK<br/><b>Descrição</b>: contata C2 após execução"] class malware_teamsSDK malware service_go_http["<b>Serviço</b> – Servidor HTTP baseado em Go<br/><b>Porta</b>: 80/443<br/><b>Endpoint</b>: /info (não autenticado)"] class service_go_http service process_c2_communication["<b>Processo</b> – Comunica-se com C2 via HTTP POST para /info"] class process_c2_communication process file_minst2_bin["<b>Arquivo</b> – <b>Nome</b>: minst2.bin"] class file_minst2_bin file process_install_launchagent["<b>Processo</b> – Instala plist do LaunchAgent para persistência"] class process_install_launchagent process malware_fake_onedrive["<b>Malware</b> – Binário falso “OneDrive” lançado no login"] class malware_fake_onedrive malware tool_macrasv2["<b>Ferramenta</b> – <b>Nome</b>: macrasv2<br/><b>Descrição</b>: extrai entradas do Keychain, senhas do navegador, cookies, extensões"] class tool_macrasv2 tool process_keychain_extraction["<b>Processo</b> – Extrai dados do Keychain e do navegador do macOS"] class process_keychain_extraction process action_discovery_system_info["<b>Ação</b> – <b>T1082 Descoberta de Informações do Sistema</b><br/>Coleta ID da CPU, nome do host, usuário, aplicativos instalados"] class action_discovery_system_info action action_discovery_software["<b>Ação</b> – <b>T1518 Descoberta de Software</b><br/>Enumera navegadores e extensões instalados"] class action_discovery_software action service_telegram_bot["<b>Serviço</b> – API de Bot do Telegram<br/><b>Propósito</b>: Receber credenciais exfiltradas"] class service_telegram_bot service process_exfiltration["<b>Processo</b> – Envia dados coletados para o bot do Telegram"] class process_exfiltration process action_content_injection["<b>Ação</b> – <b>T1659 Injeção de Conteúdo</b><br/>Endpoint /info não autenticado permite upload de arquivo arbitrário"] class action_content_injection action action_dynamic_resolution["<b>Ação</b> – <b>T1568 Resolução Dinâmica</b><br/>Resolve domínio C2 em tempo de execução"] class action_dynamic_resolution action %% Connections initial_access_user_execution –>|usa| tool_curl tool_curl –>|baixa| file_teamsSDK_bin file_teamsSDK_bin –>|executado por| process_curl_download process_curl_download –>|executa| malware_teamsSDK malware_teamsSDK –>|comunica-se com| service_go_http service_go_http –>|recebe dados via| process_c2_communication process_c2_communication –>|aciona| file_minst2_bin file_minst2_bin –>|instala| process_install_launchagent process_install_launchagent –>|cria| malware_fake_onedrive malware_fake_onedrive –>|executa no login| action_discovery_system_info action_discovery_system_info –>|leva a| action_discovery_software action_discovery_software –>|fornece dados para| tool_macrasv2 tool_macrasv2 –>|executa| process_keychain_extraction process_keychain_extraction –>|dá dados para| process_exfiltration process_exfiltration –>|envia para| service_telegram_bot malware_teamsSDK –>|habilita| action_content_injection action_content_injection –>|permite| file_minst2_bin malware_teamsSDK –>|habilita| action_dynamic_resolution action_dynamic_resolution –>|resolve| service_go_http "

Fluxo de Ataque

Execução de Simulação

Pré-requisito: O Verificação Preliminar de Telemetria e Base deve ter passado.

Justificativa: Esta seção detalha a execução precisa da técnica do adversário (T1546.006 / T1587.001) projetada para acionar a regra de detecção. Os comandos refletem uma implantação realista de “vivendo da terra” dos binários Mach-O Man.

  • Narrativa do Ataque e Comandos:

    1. Um atacante que já ganhou acesso ao host macOS copia os quatro binários Mach-O Man de um local de preparação (/tmp/stage) para um diretório gravável (/usr/local/bin).
    2. Os binários são tornados executáveis e lançados sequencialmente para imitar as fases de inicialização, reconhecimento, persistência e roubo de credenciais do kit.
    3. A persistência é alcançada escrevendo um plist de daemon de inicialização que aponta para minst2.bin.
    # Etapa 1 – Preparar os binários (simulado copiando de uma pasta de ativos de teste)
    mkdir -p /usr/local/bin/macho
    cp ./assets/teamsSDK.bin /usr/local/bin/macho/
    cp ./assets/D1YrHRTg.bin /usr/local/bin/macho/
    cp ./assets/minst2.bin   /usr/local/bin/macho/
    cp ./assets/macrasv2    /usr/local/bin/macho/
    
    # Etapa 2 – Torná-los executáveis
    chmod +x /usr/local/bin/macho/*.bin
    
    # Etapa 3 – Executar os binários de preparação e reconhecimento
    /usr/local/bin/macho/teamsSDK.bin &
    /usr/local/bin/macho/D1YrHRTg.bin &
    
    # Etapa 4 – Instalar persistência (daemon de inicialização) para minst2.bin
    cat <<'EOF' > /Library/LaunchDaemons/com.macho.minst2.plist
    <?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.macho.minst2</string>
        <key>ProgramArguments</key>
        <array>
            <string>/usr/local/bin/macho/minst2.bin</string>
        </array>
        <key>RunAtLoad</key><true/>
    </dict>
    </plist>
    EOF
    sudo launchctl load -w /Library/LaunchDaemons/com.macho.minst2.plist
    
    # Etapa 5 – Executar o componente de roubo/exfiltração de credenciais
    /usr/local/bin/macho/macrasv2 &
  • Script de Teste de Regressão: (script bash autossuficiente que reproduz as etapas acima)

    #!/usr/bin/env bash
    set -euo pipefail
    
    # --- VARIÁVEIS -------------------------------------------------
    BIN_DIR="/usr/local/bin/macho"
    ASSET_DIR="$(pwd)/assets"
    PLIST="/Library/LaunchDaemons/com.macho.minst2.plist"
    
    # --- VERIFICAÇÃO PRÉVIA --------------------------------------
    if [[ $(id -u) -ne 0 ]]; then
      echo "Script requer root para instalar daemon de inicialização. Execute novamente com sudo."
      exit 1
    fi
    
    # --- IMPLANTAR BINÁRIOS ---------------------------------------
    mkdir -p "$BIN_DIR"
    for bin in teamsSDK.bin D1YrHRTg.bin minst2.bin macrasv2; do
      cp "$ASSET_DIR/$bin" "$BIN_DIR/$bin"
      chmod +x "$BIN_DIR/$bin"
    done
    
    # --- EXECUTAR PREPARAÇÃO & RECON -----------------------------
    "$BIN_DIR/teamsSDK.bin" &
    "$BIN_DIR/D1YrHRTg.bin" &
    
    # --- PERSISTÊNCIA (daemon de inicialização) --------------------
    cat <<'EOF' > "$PLIST"
    <?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.macho.minst2</string>
        <key>ProgramArguments</key>
        <array>
            <string>/usr/local/bin/macho/minst2.bin</string>
        </array>
        <key>RunAtLoad</key><true/>
    </dict>
    </plist>
    EOF
    launchctl load -w "$PLIST"
    
    # --- EXECUTAR COMPONENTE DE ROUBO DE CREDENCIAIS ---------------
    "$BIN_DIR/macrasv2" &
    
    echo "Simulação executada – aguarde alguns segundos para a telemetria aparecer."
  • Comandos de Limpeza:

    #!/usr/bin/env bash
    set -euo pipefail
    
    BIN_DIR="/usr/local/bin/macho"
    PLIST="/Library/LaunchDaemons/com.macho.minst2.plist"
    
    # Descarregar daemon de inicialização
    if [[ -f "$PLIST" ]]; then
      sudo launchctl unload -w "$PLIST"
      sudo rm -f "$PLIST"
    fi
    
    # Terminar quaisquer processos maliciosos persistentes
    pkill -f teamsSDK.bin || true
    pkill -f D1YrHRTg.bin || true
    pkill -f minst2.bin   || true
    pkill -f macrasv2    || true
    
    # Remover binários
    sudo rm -rf "$BIN_DIR"
    
    echo "Limpeza concluída."