SmartLoader Cloner l’API MCP de la bague Oura pour orchestrer une attaque de chaîne d’approvisionnement
Detection stack
- AIDR
- Alert
- ETL
- Query
Résumé
SmartLoader a utilisé de faux comptes GitHub et un serveur MCP Oura Ring cloné pour contaminer les registres MCP. Le serveur trojanisé a ensuite livré le logiciel malveillant StealC, conçu pour voler les identifiants de développeurs, les données de portefeuilles crypto et les informations de santé. Cette activité montre comment les intégrations de santé activées par l’IA peuvent devenir un point de départ dans la chaîne d’approvisionnement.
Enquête
Les chercheurs ont cartographié au moins cinq profils GitHub fabriqués qui ont forké le véritable dépôt MCP Oura et publié des sosies. Un fork malveillant a été poussé sous un nouveau compte et soumis aux registres MCP. L’analyse dynamique a révélé des charges utiles basées sur LuaJIT mises en scène dans le dossier AppData de l’utilisateur et une persistance via des tâches planifiées déguisées en pilotes audio Realtek.
Atténuation
Auditez les inventaires des serveurs MCP, appliquez des contrôles de provenance avant l’installation et alertez sur les tâches planifiées lançant des exécutables depuis AppData. Appliquez des contrôles de sortie et bloquez le trafic vers les terminaux de crypto-monnaie et de C2 connus. Validez l’historique des contributeurs GitHub et la lignée des dépôts lors de l’approbation.
Réponse
Lors de la détection, isolez le poste de travail, terminez les tâches malveillantes, supprimez les exécutables AppData non autorisés et faites tourner les identifiants et clés API exposés. Examinez de manière médico-légale le serveur MCP compromis et renforcez le contrôle des dépendances pour éviter une réinfection.
« graph TB %% Class Definitions classDef action fill:#99ccff classDef malware fill:#ffcc99 classDef process fill:#ff9999 classDef file fill:#cccccc classDef technique fill:#c0c0c0 %% Node definitions action_supply_chain[« <b>Action</b> – <b>T1195.001 Compromis de la chaîne d’approvisionnement</b><br /><b>Description</b>: L’adversaire compromet une chaîne d’approvisionnement de logiciel pour distribuer un code malveillant. »] class action_supply_chain action malware_trojanized_server[« <b>Malware</b> – <b>Nom</b>: Serveur MCP Oura trojanisé<br /><b>But</b>: Distribué via un package compromis. »] class malware_trojanized_server malware action_developer_install[« <b>Action</b> – <b>Installer le Package</b><br /><b>Description</b>: Le développeur installe le package MCP compromis. »] class action_developer_install action file_resource_txt[« <b>Fichier</b> – <b>Nom</b>: resource.txt<br /><b>Techniques</b>: T1027 Fichiers Obscurcis, T1059 Interpréteur de Commande et Script »] class file_resource_txt file malware_luajit_script[« <b>Malware</b> – <b>Script LuaJIT</b><br /><b>Techniques</b>: T1027, T1059 »] class malware_luajit_script malware process_odmw[« <b>Processus</b> – <b>Nom</b>: ODMw.exe (interpréteur LuaJIT) »] class process_odmw process process_odmy[« <b>Processus</b> – <b>Nom</b>: ODMy.exe (interpréteur LuaJIT) »] class process_odmy process tech_T1053[« <b>Technique</b> – T1053 Tâche/Emploi Programmé<br /><b>Description</b>: Créer des tâches programmées pour la persistance. »] class tech_T1053 technique process_task_odmw[« <b>Processus</b> – <b>Tâche Programmée</b>: RealtekAudioManager_ODMw »] class process_task_odmw process process_task_odmy[« <b>Processus</b> – <b>Tâche Programmée</b>: AudioManager_ODMy »] class process_task_odmy process malware_socket3[« <b>Malware</b> – <b>Nom</b>: socket3.lua (charge utile C2) »] class malware_socket3 malware tech_T1102[« <b>Technique</b> – T1102 Service Web<br /><b>Description</b>: Utilise un service web basé sur HTTP pour le commandement et contrôle. »] class tech_T1102 technique tech_T1041[« <b>Technique</b> – T1041 Exfiltration via le Canal C2<br /><b>Description</b>: Envoie des données volées via le canal C2. »] class tech_T1041 technique malware_stealc[« <b>Malware</b> – <b>Nom</b>: StealC Infostealer »] class malware_stealc malware tech_T1555_003[« <b>Technique</b> – T1555.003 Identifiants dans les Fichiers : Mots de Passe/Cookies de Navigateur<br /><b>Description</b>: Vole les identifiants enregistrés du navigateur. »] class tech_T1555_003 technique tech_T1552_001[« <b>Technique</b> – T1552.001 Identifiants dans les Fichiers : Stockages de Mots de Passe<br /><b>Description</b>: Vole les tokens Discord, portefeuilles de crypto-monnaie, clés SSH et identifiants API. »] class tech_T1552_001 technique %% Connections showing attack flow action_supply_chain u002du002d>|delivers| malware_trojanized_server malware_trojanized_server u002du002d>|installed by| action_developer_install action_developer_install u002du002d>|creates| file_resource_txt file_resource_txt u002du002d>|contains| malware_luajit_script malware_luajit_script u002du002d>|drops| process_odmw malware_luajit_script u002du002d>|drops| process_odmy process_odmw u002du002d>|uses| tech_T1053 process_odmy u002du002d>|uses| tech_T1053 tech_T1053 u002du002d>|creates| process_task_odmw tech_T1053 u002du002d>|creates| process_task_odmy process_task_odmw u002du002d>|executes| process_odmw process_task_odmy u002du002d>|executes| process_odmy process_odmw u002du002d>|launches| malware_socket3 process_odmy u002du002d>|launches| malware_socket3 malware_socket3 u002du002d>|communicates via| tech_T1102 malware_socket3 u002du002d>|exfiltrates via| tech_T1041 malware_socket3 u002du002d>|deploys| malware_stealc malware_stealc u002du002d>|steals| tech_T1555_003 malware_stealc u002du002d>|steals| tech_T1552_001 «
Flux d’attaque
Détections
Tâche Planifiée Suspecte (via audit)
Voir
IOC (DestinationIP) à détecter : SmartLoader clone l’Oura Ring MCP pour déployer une attaque par la chaîne d’approvisionnement
Voir
IOC (SourceIP) à détecter : SmartLoader clone l’Oura Ring MCP pour déployer une attaque par la chaîne d’approvisionnement
Voir
Exécution suspecte d’interprète LuaJIT dans AppData [Création de Processus Windows]
Voir
Détection de l’écosystème de faux GitHub SmartLoader [Serveur web]
Voir
Exécution de Simulation
Pré-requis : La Vérification Pré-vol de la Télémétrie & Baseline doit avoir été réussie.
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 commande et le récit reflètent directement les TTP identifiés et visent à générer la télémétrie exacte attendue par la logique de détection.
-
Narratif de l’attaque & Commandes :
Un attaquant hébergeant un dépôt GitHub contrefait (par ex.,https://github.com/SiddhiBagul/MCP-oura) copie la charge utile légitime de SmartLoader, la re-baptise, et la rend publiquement accessible. Un hôte interne compromis exécute plus tard un script qui télécharge le dépôt malveillant viacurl. Cette action produit une requête GET HTTP enregistrée par le proxy, correspondant à l’une des URL indicatrices de la règle. -
Script de Test de Régression :
#!/usr/bin/env bash # Simulation de téléchargement de faux GitHub SmartLoader – déclenche la règle Sigma MALICIOUS_URLS=( "https://github.com/SiddhiBagul/MCP-oura" "https://github.com/YuzeHao2023/MCP-oura" "https://github.com/punkpeye/MCP-oura" "https://github.com/dvlan26/MCP-oura" "https://github.com/halamji/MCP-oura" "https://github.com/yzhao112/MCP-oura" ) for url in "${MALICIOUS_URLS[@]}"; do echo "[+] Récupération du dépôt malveillant : $url" # Le flag -L suit les redirections ; -s réduit le bruit ; -o ignore la sortie. curl -s -L -o /dev/null "$url" done echo "[+] Simulation terminée." -
Commandes de Nettoyage :
# Aucun fichier n'a été persisté, mais effacez l'historique du shell des URLs history -d $(history | grep -n "github.com" | cut -d: -f1) echo "[+] Nettoyage terminé – URLs supprimées de l'historique."