Diga Meu Nome: Como MioLab está construindo um Império de Stealer para MacOS
Detection stack
- AIDR
- Alert
- ETL
- Query
Resumo
MioLab é um infostealer de macOS distribuído comercialmente voltado para vítimas de alto valor, como engenheiros de software, executivos e investidores em criptomoedas. É espalhado através de malvertising e uma cadeia de infecção ClickFix, então inicia um binário compacto em C que rouba credenciais de navegador, registros de gerenciadores de senhas, arquivos de carteiras de criptomoedas e dados do Keychain do macOS. As informações roubadas são armazenadas em um diretório temporário, compactadas em um arquivo e exfiltradas com uma requisição POST curl para um domínio malicioso. A operação também inclui um painel de controle baseado na web, suporte a proxy e acesso a API adaptado para grandes grupos de cibercrime.
Investigação
O relatório descreve as características estáticas do malware, comportamento em tempo de execução e a ampla gama de fontes de dados visadas, incluindo Chrome, Firefox, Safari, Telegram, Discord, Apple Notes e aplicativos de carteiras de hardware. A análise da infraestrutura aponta para hospedagem à prova de balas na Rússia, rotação repetida de domínio e um backend compartilhado vinculado a uma operação de phishing de airdrop de token Web3. Os investigadores também extraíram indicadores chave como linhas de comando, caminhos de pastas temporárias e URLs de exfiltração.
Mitigação
Os defensores devem treinar os usuários para reconhecer avisos falsos de credenciais, monitorar o abuso de binários embutidos como dscl, osascript e curl, bloquear domínios maliciosos conhecidos, impor a assinatura de código e restringir o acesso a dados de perfis de navegador e arquivos do Keychain. A lógica de detecção também deve focar nos padrões de execução de processos do malware e no comportamento de preparar arquivos de arquivamento em /var/folders.
Resposta
Se MioLab for detectado, isole o Mac afetado, capture memória volátil e artefatos do sistema de arquivos, bloqueie os domínios e IPs de C2 relacionados, revogue credenciais expostas e chaves de carteiras de criptomoedas e realize uma revisão completa forense de todas as localidades de dados visadas. O conteúdo de detecção de endpoint deve ser atualizado com as linhas de comando observadas, e as equipes devem buscar cadeias de infecção similares em todo o ambiente.
"graph TB %% Class definitions classDef action fill:#99ccff classDef tool fill:#ffcc99 classDef malware fill:#ff9999 classDef process fill:#ccffcc %% Malware node malware_miolab["<b>Malware</b> – <b>Nome</b>: MioLab Infostealer<br/><b>Descrição</b>: Infostealer macOS multiu2011stage"] class malware_miolab malware %% Initial Access initial_access["<b>Ação</b> – <b>T1204.002 Execução do Usuário</b>: Vítima abre DMG malicioso ou executável Unix entregue via engenharia social"] class initial_access action %% Execution execution_unix_shell["<b>Ação</b> – <b>T1059.004 Shell Unix</b>: Payload executa comandos shell via sh, system e AppleScript"] class execution_unix_shell action %% Defense Evasion defense_evasion["<b>Ação</b> – <b>T1564.011 Ocultar Artefatos</b>: Termina o Terminal, remove atributos de quarentena e aplica obfuscação de string XOR (T1027)"] class defense_evasion action %% Discovery discovery_info["<b>Ação</b> – <b>T1589 Recolher Informações do Host da Vítima</b>: Usa <code>system_profiler</code> para coletar detalhes do hardware e SO"] class discovery_info action %% Credential Access credential_access["<b>Ação</b> – <b>T1056 Captura de Entrada</b> e <b>T1555.001/002 Extração de Credenciais</b>: Mostra diálogo falso de senha de Preferências do Sistema via AppleScript, valida com dscl, extrai arquivos do Keychain e extrai bancos de dados de navegadores, cookies e tokens de sessão"] class credential_access action %% Collection collection_staging["<b>Ação</b> – <b>T1074.001 Armazenamento Temporário de Dados Locais</b> e <b>T1560 Arquivar Dados Coletados</b>: Reúne arquivos, notas e carteiras cripto, armazena em um diretório temporário e comprime em um arquivo ZIP"] class collection_staging action %% Exfiltration exfiltration_curl["<b>Ação</b> – <b>T1041 Exfiltração Através de Canal de C2</b> e <b>T1102.003 Protocolos Web</b>: Faz upload do arquivo ZIP via <code>curl</code> POST para serviço web malicioso"] class exfiltration_curl action %% Command and Control c2_proxy["<b>Ação</b> – <b>T1090.002 Proxy</b> e <b>T1659 Injeção de Conteúdo Dinâmico</b>: Tráfego roteado através de servidores proxy controlados pelo invasor e domínios de injeção"] class c2_proxy action %% Tool nodes tool_applescript["<b>Ferramenta</b> – <b>Nome</b>: AppleScript<br/><b>Propósito</b>: Exibe interface de solicitação de credenciais"] class tool_applescript tool tool_dscl["<b>Ferramenta</b> – <b>Nome</b>: dscl<br/><b>Propósito</b>: Valida credenciais capturadas"] class tool_dscl tool tool_curl["<b>Ferramenta</b> – <b>Nome</b>: curl<br/><b>Propósito</b>: Envia arquivo coletado para servidor remoto"] class tool_curl tool tool_system_profiler["<b>Ferramenta</b> – <b>Nome</b>: system_profiler<br/><b>Propósito</b>: Recupera informações do sistema"] class tool_system_profiler tool %% Connections showing the attack flow malware_miolab –>|entrega| initial_access initial_access –>|aciona| execution_unix_shell execution_unix_shell –>|habilita| defense_evasion defense_evasion –>|permite| discovery_info discovery_info –>| fornece dados para| credential_access credential_access –>|usa| tool_applescript credential_access –>|usa| tool_dscl credential_access –>|leva a| collection_staging collection_staging –>|comprime e armazena| exfiltration_curl exfiltration_curl –>|usa| tool_curl exfiltration_curl –>|envia dados para| c2_proxy c2_proxy –>|roteia através| tool_curl %% Atribuições de estilo class initial_access,execution_unix_shell,defense_evasion,discovery_info,credential_access,collection_staging,exfiltration_curl,c2_proxy action class tool_applescript,tool_dscl,tool_curl,tool_system_profiler tool class malware_miolab malware "
Fluxo de Ataque
Detecções
Comando e Controle Suspeito por Solicitação DNS de Domínio de Nível Superior (TLD) Incomum (via dns)
Visualizar
IOCs (HashSha256) para detectar: Say My Name: How MioLab is building MacOS Stealer Empire
Visualizar
IOCs (HashMd5) para detectar: Say My Name: How MioLab is building MacOS Stealer Empire
Visualizar
IOCs (DestinationIP) para detectar: Say My Name: How MioLab is building MacOS Stealer Empire
Visualizar
IOCs (SourceIP) para detectar: Say My Name: How MioLab is building MacOS Stealer Empire
Visualizar
Atividade de Infostealer MacOS MioLab [Criação de Processo Linux]
Visualizar
Execução de Simulação
Pré-requisito: O Teste de Pré-voo de Telemetria e Linha de Base deve ter sido aprovado.
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 o enredo DEVEM refletir diretamente os TTPs identificados e visam gerar a telemetria exata esperada pela lógica de detecção.
-
Narrativa do Ataque e Comandos:
- Terminar a sessão do Terminal do usuário – O malware primeiro desativa o prompt de comando padrão para forçar o usuário a um fluxo de UI controlado.
killall Terminal - Apresentar um aviso falso de credenciais – Usando
osascript, o atacante mostra um diálogo AppleScript que imita um aviso de configurações do sistema, incentivando o usuário a inserir sua senha.osascript -e 'display dialog "Você precisa configurar as configurações do sistema antes de executar este aplicativo." default answer "" with hidden answer' - Validar credenciais colhidas – A senha capturada é verificada contra o serviço de diretório local com
dscl . -authonly. Um retorno bem-sucedido confirma que a credencial está correta.dscl . -authonly "$USER" "$HARVESTED_PASSWORD" - Preparar e comprimir carga útil de exfiltração – O invasor arquiva os dados colhidos (por exemplo,
~/.ssh/id_rsa) em um arquivo zip usandoditto, preparando-o para upload.ditto -c -k --sequesterRsrc /var/folders/*/DataStaging /tmp/exfil.zip
- Terminar a sessão do Terminal do usuário – O malware primeiro desativa o prompt de comando padrão para forçar o usuário a um fluxo de UI controlado.
-
Script de Teste de Regressão: (Bash – executa a sequência exata para acionar a regra)
#!/usr/bin/env bash set -euo pipefail echo "[*] Iniciando a simulação MioLab..." # 1. Kill Terminal echo "[+] Terminando Terminal" killall Terminal # 2. Aviso falso de AppleScript (simulado – sem interação do usuário) echo "[+] Exibindo aviso falso de credenciais" osascript -e 'display dialog "Você precisa configurar as configurações do sistema antes de executar este aplicativo." default answer "" with hidden answer' >/dev/null 2>&1 # 3. Verificação de credenciais (usando usuário atual e uma senha fictícia) echo "[+] Verificando credenciais colhidas" HARVESTED_PASSWORD="P@ssw0rd!" # Em um cenário real, isso seria a senha roubada dscl . -authonly "$USER" "$HARVESTED_PASSWORD" || true # ignore falha para demo # 4. Armazenamento e compressão de dados echo "[+] Comprimindo dados armazenados" STAGING_DIR=$(mktemp -d) echo "dados de exemplo" > "$STAGING_DIR/sample.txt" ditto -c -k --sequesterRsrc "$STAGING_DIR" /tmp/exfil.zip echo "[*] Simulação completa. Verifique o SIEM para alerta." -
Comandos de Limpeza: (Remove artefatos gerados e restaura a sessão)
#!/usr/bin/env bash set -euo pipefail echo "[*] Limpando artefatos da simulação MioLab..." # Remover o arquivo zip falso rm -f /tmp/exfil.zip # Remover diretório de armazenamento temporário se existir [[ -d "$STAGING_DIR" ]] && rm -rf "$STAGING_DIR" # Opcionalmente reinicie o Terminal para o usuário open -a Terminal echo "[*] Limpeza concluída."