CloudSyncD : un malware macOS dissimule des identifiants hameçonnés avec Unicode à largeur zéro
Detection stack
- AIDR
- Alert
- ETL
- Query
Résumé
CloudSyncD est une porte dérobée macOS en deux étapes, distribuée via une fausse image disque d’installateur Zoom. La première étape vole les identifiants utilisateur via une invite d’autorisation frauduleuse et cache le mot de passe capturé à l’intérieur d’un fichier de configuration de leurre utilisant des caractères Unicode de largeur nulle. La deuxième étape déploie un implant Mach-O intégré qui établit une communication de commande et contrôle pour l’exécution de tâches à distance.
Investigation
Jamf Threat Labs a découvert le malware lors d’une surveillance de routine des exécutables soumis à VirusTotal. Les chercheurs ont retracé son évolution depuis une version de développement initiale jusqu’à son déploiement actif, observant un passage de la validation locale des identifiants avec dscl à une communication avec une infrastructure de C2 active. Les analystes ont également décodé la méthode de dissimulation du mot de passe et récupéré la configuration de l’implant ainsi que les protocoles de communication de C2.
Atténuation
Les utilisateurs doivent éviter de suivre des instructions manuelles qui demandent de contourner les protections Gatekeeper lors de l’installation d’applications inattendues. Les organisations peuvent utiliser Jamf pour Mac pour activer la prévention des menaces, des contrôles avancés de menaces et une protection web pour détecter et bloquer les activités malveillantes. Maintenir la Protection de l’Intégrité du Système (SIP) activée peut également empêcher certaines techniques d’exécution sans fichier utilisées par le dropper.
Réponse
Lorsque l’activité CloudSyncD est détectée, isolez l’hôte macOS affecté pour arrêter la communication C2 supplémentaire. Examinez les fichiers suspects dans ~/.config/zoom/, ~/.local/share/cloudsync/, et le répertoire temporaire du système. Réinitialisez les identifiants pour tous les comptes utilisateur qui ont interagi avec l’invite d’autorisation falsifiée, car leurs mots de passe peuvent avoir été exposés aux attaquants.
Flux d’attaque
Nous mettons encore à jour cette partie.
Détections
Communications C2 possibles sur HTTP à IP directe avec port inhabituel (via proxy)
Validation des identifiants macOS via Dscl Authonly (via ligne de commande)
Détection de la porte dérobée CloudSyncD macOS [Création de processus Linux]
## Exécution de simulation
-
Narratif & Commandes d’attaque : L’attaquant livre un installateur malveillant macOS déguisé en Zoom via un email de phishing. Une fois l’installateur exécuté par l’utilisateur (Exécution utilisateur), le dropper (la première étape) tente de lancer la charge utile de deuxième étape. Au cours de ce processus, une erreur spécifique survient dans la chaîne de commande :
/dev/fd spawn failed rc=13. Alternativement, le dropper lance avec succès un composant nommécshelper. La simulation exécutera deux scénarios distincts : un ciblant les chaînes de commande et un ciblant le nom de processus spécifique pour assurer une couverture complète de la logique de la règle. -
Script de test de régression :
#!/bin/bash # Script de simulation CloudSyncD echo "[*] Démarrage de la simulation CloudSyncD..." # Scénario 1 : Déclenchement via Sélection 1 et Sélection 2 (Erreur du dropper) echo "[*] Simulation du dropper de l'étape 1 avec chaîne d'erreur spécifique..." # Nous utilisons 'logger' ou une exécution factice pour simuler la télémétrie de la ligne de commande si nous ne pouvons pas réellement faire planter un descripteur de fichier # Dans un test EDR réel, nous exécutons un processus qui porte cette chaîne dans ses arguments /usr/bin/echo "le dropper de l'installateur d'application /dev/fd spawn failed rc=13" & sleep 2 # Scénario 2 : Déclenchement via Sélection 3 (Processus cshelper) echo "[*] Simulation de l'exécution du processus 'cshelper' de l'étape 2..." # Crée un fichier factice pour représenter le binaire malveillant touch /tmp/cshelper chmod +x /tmp/cshelper /tmp/cshelper & echo "[*] Commandes de simulation envoyées." -
Commandes de nettoyage :
#!/bin/bash # Script de nettoyage echo "[*] Nettoyage des artefacts de la simulation..." rm -f /tmp/cshelper echo "[*] Nettoyage terminé."