SOC Prime Bias: Critique

15 Déc 2025 17:42

PyStoreRAT : Malware de Chaîne d’Approvisionnement Piloté par l’IA Ciblant les Professionnels de l’Informatique et de l’OSINT

Author Photo
Ruslan Mikhalov Chief of Threat Research at SOC Prime linkedin icon Follow
PyStoreRAT : Malware de Chaîne d’Approvisionnement Piloté par l’IA Ciblant les Professionnels de l’Informatique et de l’OSINT
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Résumé

Morphisec a découvert une opération de malware coordonnée qui abuse de comptes GitHub dormants pour héberger des dépôts générés par IA, qui finissent par livrer une porte dérobée JavaScript/HTA surnommée PyStoreRAT. Le chargeur profile l’hôte, déploie plusieurs charges utiles dont le voleur Rhadamanthys, et ajuste dynamiquement son comportement lors de la détection de solutions AV spécifiques. Il peut se propager via des supports amovibles et s’appuie sur une infrastructure C2 rotative pour rafraîchir ses modules. La campagne cible les administrateurs informatiques, les analystes en sécurité, et les professionnels d’OSINT à travers le monde.

Enquête

Les chercheurs ont examiné les projets malveillants sur GitHub, isolé les composants de la porte dérobée, et documenté la chaîne complète d’exécution, incluant le profilage du système, la livraison de charges utiles par étapes, l’évasion AV, la propagation via disques amovibles, et le chargement à la demande de modules. Le rapport décrit en outre l’architecture circulaire des nœuds C2 qui renforce la résilience, ainsi que l’utilisation de chaînes en langue russe pour valider le lieu cible. L’analyse lie le chargeur au voleur Rhadamanthys et met en avant sa capacité à altérer les chemins de lancement.

Atténuation

Morphisec conseille d’utiliser la défense cible en mouvement automatisée pour déstabiliser l’environnement d’exécution du chargeur, bloquer les itinéraires d’exécution non fiables, et arrêter le déploiement des charges utiles. Puisque les contrôles traditionnels basés sur les signatures sont inefficaces, les défenseurs doivent s’appuyer sur des protections axées sur le comportement et la virtualisation. Restreindre l’exécution des scripts provenant de sources non fiables et surveiller de près l’activité des disques amovibles est également recommandé.

Réponse

Lorsqu’une activité PyStoreRAT est identifiée, isolez immédiatement le point de terminaison impacté, terminez le processus de la porte dérobée et retirez tous les modules persistants. Effectuez une analyse forensique pour collecter les IOCs, y compris les domaines C2, les hachages de fichiers et les tâches planifiées. Corrigez les logiciels vulnérables, appliquez des politiques d’exécution strictes de moindre privilège, et surveillez continuellement GitHub pour les activités de dépôt malveillantes ou suspectes.

« graph TB %% Class Definitions classDef technique fill:#99ccff %% Node definitions technique_supply_chain[« <b>Technique</b> – <b>T1195.002 Compromission de chaîne d’approvisionnement</b><br/><b>Description</b>: Compromettre un dépôt public GitHub pour injecter du code malveillant dans des projets que les victimes clonent.<br/><b>Subu2011technique</b>: Dépôts GitHub malveillants »] class technique_supply_chain technique technique_user_exec[« <b>Technique</b> – <b>T1204 Exécution par l’utilisateur</b><br/><b>Description</b>: La victime exécute le projet généré par l’IA qui contient la charge utile malveillante »] class technique_user_exec technique technique_obfuscation[« <b>Technique</b> – <b>T1027 Fichiers ou informations obscurcis</b><br/><b>Subu2011technique</b>: T1027.009 Charges utiles intégrées<br/><b>Description</b>: La charge utile est cachée dans des fichiers légitimes pour échapper à la détection »] class technique_obfuscation technique technique_system_info[« <b>Technique</b> – <b>T1082 Découverte d’informations système</b><br/><b>Description</b>: Collecter la version du système d’exploitation, les détails matériels, et d’autres informations de l’hôte »] class technique_system_info technique technique_software_disc[« <b>Technique</b> – <b>T1518 Découverte de logiciels</b><br/><b>Description</b>: Enumerator les applications installées et les versions de logiciel »] class technique_software_disc technique technique_c2_https[« <b>Technique</b> – <b>T1071.001 Protocoles Web</b><br/><b>Description</b>: Établir des communications de commande et de contrôle via HTTPS »] class technique_c2_https technique technique_removable_media[« <b>Technique</b> – <b>T1092 Communication via des supports amovibles</b><br/><b>Description</b>: Propager la charge utile malveillante à d’autres systèmes via des clés USB »] class technique_removable_media technique %% Connections technique_supply_chain u002du002d>|conduit_à| technique_user_exec technique_user_exec u002du002d>|conduit_à| technique_obfuscation technique_obfuscation u002du002d>|conduit_à| technique_system_info technique_system_info u002du002d>|conduit_à| technique_software_disc technique_software_disc u002du002d>|conduit_à| technique_c2_https technique_c2_https u002du002d>|conduit_à| technique_removable_media « 

Flux d’attaque

Exécution de simulation

Prérequis : Le contrôle pré-vol de télémetrie & baseline doit avoir été passé.

  • Narration & Commandes d’attaque :

    1. Réactiver un compte dormant – l’adversaire utilise l’UI ou l’API GitHub pour changer le statut du compte de « dormant » à « actif ».
    2. Publier un dépôt malveillant généré par IA – immédiatement après la réactivation, un nouveau dépôt nommé ai‑osint‑toolkit est créé, contenant un README qui fait la publicité de « projets générés par IA ».
    3. Ajouter un commit de « maintenance » qui intègre la porte dérobée PyStoreRAT ; le message du commit inclut intentionnellement le mot « maintenance » pour satisfaire la règle de détection.
    4. Pousser le code malveillant – le push génère un événement push d’audit, mais la règle que nous testons ne surveille que l’entrée de réactivation du compte dans le journal d’audit, donc le déclencheur principal est l’entrée de journal de réactivation avec la description signalée.
  • Script de test de régression : (Bash utilisant l’interface CLI de GitHub gh – suppose que l’acteur attaquant a un jeton d’accès personnel avec l'autorisation admin:org étendue)

     # simulate_attack.sh
      # Prérequis : gh CLI installé et authentifié en tant qu'attaquant
    
      # 1. Réactiver le compte dormant (simulé par la mise à jour d'un champ utilisateur)
      gh api -X PATCH /admin/users/attacker_user 
          -f state=active 
          -f note="reactivation: AI-generated projects; maintenance commits scheduled"
    
      # 2. Créer un dépôt malveillant
      gh repo create attacker_user/ai-osint-toolkit --public --description "AI‑generated OSINT tools"
    
      # 3. Ajouter un fichier malveillant (PyStoreRAT) et commit
      cd ai-osint-toolkit
      echo "# PyStoreRAT backdoor" > pystorerat.py
      git add pystorerat.py
      git commit -m "Initial commit - maintenance commits: embed backdoor"
      git push origin main
    
      # 4. Optionnel : créer un deuxième commit de maintenance pour imiter une activité réelle
      echo "# Update README" >> README.md
      git add README.md
      git commit -m "maintenance commit: update documentation"
      git push origin main
  • Nettoyer les commandes :

     # cleanup_attack.sh
      # Supprimer le dépôt malveillant
      gh repo delete attacker_user/ai-osint-toolkit -y
    
      # Optionnellement, remettre le compte attaquant en mode dormant (si l'API le permet)
      gh api -X PATCH /admin/users/attacker_user -f state=dormant