SOC Prime Bias: Critique

14 Jan 2026 19:37

Chasse à Lazare : À l’intérieur de l’Infrastructure C2 de l’Interview Contagieuse

Author Photo
Ruslan Mikhalov Chief of Threat Research at SOC Prime linkedin icon Suivre
Chasse à Lazare : À l’intérieur de l’Infrastructure C2 de l’Interview Contagieuse
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Résumé

Red Asgard a signalé une compromission de la chaîne d’approvisionnement liée à un projet de cryptomonnaie promu via Upwork, où des opérateurs de Lazarus ont intégré du code malveillant dans le processus de construction/flux de travail. La chaîne abuse de l’exécution automatique des tâches de VSCode, d’un cheval de Troie Node.js implémenté via le constructeur de Fonction, et d’une livraison de charge utile conditionnée à l’obtention de cookies pour récupérer du JavaScript malveillant depuis une infrastructure de commande et de contrôle hébergée sur Vercel. La pile C2 est divisée en domaines Vercel de niveau un et en serveurs Windows dédiés de niveau deux, qui délivrent un cheval de Troie Python fortement obfusqué avec une fonctionnalité de minage XMRig. La campagne utilise également des dépôts Pastebin, un protocole binaire personnalisé, et une compartimentisation stricte des identifiants pour compliquer l’analyse et l’interruption.

Enquête

Les chercheurs ont répertorié trois domaines Vercel exposant des points de terminaison authentifiés par jeton et identifié cinq systèmes C2 dédiés exécutant Express.js on port 1244. Ils ont également documenté une technique d’oracle temporel utilisée pour inférer ou énumérer les jetons de campagne actifs. L’ingénierie inverse d’une charge utile obfusquée à 64 niveaux a finalement révélé un composant trojanisé qui persiste via l’emplacement dans le dossier de démarrage et la création de tâches planifiées. Les découvertes supplémentaires comprenaient des identifiants MongoDB codés en dur, environ 1 000 URL de dépôts morts Pastebin, et des écouteurs de protocole binaire Z238 personnalisé sur plusieurs ports.

Atténuation

Bloquez les communications sortantes vers les domaines Vercel identifiés et limitez la sortie aux ports 1244, 1249, et 22411–22412. Surveillez la création de Windows Update Script.pyw dans les emplacements de démarrage, les tâches planifiées nommées “Runtime Broker”, et l’exécution suspecte de msedge.exe consistante avec une usurpation de mineur. Détectez les processus Node.js invoquant Function.constructor et une activité HTTP POST anormale vers les points de terminaison /keys. Réduisez l’exposition en désactivant les tâches d’exécution automatique de VSCode et en révisant les scripts de paquets avant d’exécuter npm install ou de réaliser des étapes de construction dans des dépôts non fiables.

Réponse

Si des indicateurs sont observés, isolez le système affecté, terminez les processus suspects, et préservez les artéfacts de mémoire et de disque pour une analyse médico-légale. Révoquez tout identifiant MongoDB exposé et faites pivoter tous les secrets de comptes de services pertinents. Réalisez un inventaire des comptes et accès pour identifier les utilisateurs impactés, puis réinitialisez les identifiants et invalidez les sessions/tokens actifs. Informez les parties prenantes internes et coordonnez avec les forces de l’ordre si une preuve de vol de cryptomonnaie ou de compromis de porte-monnaie est présente.

« graph TB %% Class definitions classDef technique fill:#cce5ff classDef artifact fill:#e2f7d6 %% Step 1 u2013 Pêche à la ligne via Service tech_phishing[« <b>Technique</b> – <b>T1566.003 Phishing : Spearphishing via Service</b><br /><b>Description</b> : L’attaquant s’est fait passer pour un free-lance sur Upwork et a posté une fausse offre d’interview pour livrer un dépôt de code malveillant. »] class tech_phishing technique artifact_upwork[« <b>Artifact</b> – <b>Nom</b> : Fausse offre d’emploi Upwork<br /><b>But</b> : Attirer la victime à télécharger le dépôt malveillant. »] class artifact_upwork artifact tech_phishing u002du002d>|livre| artifact_upwork %% Step 2 u2013 Compromission de la chaîne d’approvisionnement tech_supplychain[« <b>Technique</b> – <b>T1195.001 Compromission de la chaîne d’approvisionnement : Compromettre les dépendances logicielles et les outils de développement</b><br /><b>Description</b> : VSCode <code>tasks.json</code> malveillant et code JavaScript injecté dans le dépôt. »] class tech_supplychain technique artifact_tasksjson[« <b>Artifact</b> – <b>Nom</b> : VSCode <code>tasks.json</code><br /><b>Contenu</b> : Définition de tâche malveillante invoquant le constructeur de fonction JavaScript et <code>getCookie()</code>. »] class artifact_tasksjson artifact artifact_upwork u002du002d>|contient| artifact_tasksjson artifact_tasksjson u002du002d>|active| tech_supplychain %% Step 3 u2013 Exécution par l’utilisateur tech_userexec[« <b>Technique</b> – <b>T1204.002 Exécution par l’utilisateur : Fichier malveillant</b><br /><b>Description</b> : La victime a ouvert le dossier de projet dans VSCode, déclenchant l’exécution automatique des tâches malveillantes. »] class tech_userexec technique artifact_tasksjson u002du002d>|déclenchée par| tech_userexec %% Step 4 u2013 Exécution JavaScript tech_jsexec[« <b>Technique</b> – <b>T1059.007 Interpréteur de commande et de script : JavaScript</b><br /><b>Description</b> : JavaScript exécuté via VSCode tasks et constructeur de fonction pour télécharger des charges supplémentaires. »] class tech_jsexec technique tech_userexec u002du002d>|mène à| tech_jsexec %% Step 5 u2013 Porte dérobée Python tech_python[« <b>Technique</b> – <b>T1059.006 Interpréteur de commande et de script : Python</b><br /><b>Description</b> : Porte dérobée Python fortement obfusquée (<code>bro_*.js</code>) téléchargée et exécutée sur l’hôte victime. »] class tech_python technique artifact_python_backdoor[« <b>Artifact</b> – <b>Nom</b> : Porte dérobée Python obfusquée (<code>bro_*.js</code>)<br /><b>Caractéristiques</b> : Codage et décodage à multiple couches. »] class artifact_python_backdoor artifact tech_jsexec u002du002d>|télécharge| artifact_python_backdoor artifact_python_backdoor u002du002d>|exécute| tech_python %% Step 6 u2013 Persistance au démarrage tech_startup[« <b>Technique</b> – <b>T1037.005 Scripts d’initialisation de démarrage ou de connexion : Éléments de démarrage</b><br /><b>Description</b> : Persistance en plaçant <code>Windows Update Script.pyw</code> dans le dossier de démarrage. »] class tech_startup technique artifact_startup_script[« <b>Artifact</b> – <b>Nom</b> : <code>Windows Update Script.pyw</code><br /><b>Emplacement</b> : Dossier de démarrage »] class artifact_startup_script artifact tech_python u002du002d>|crée| artifact_startup_script artifact_startup_script u002du002d>|active| tech_startup %% Step 7 u2013 Tâche planifiée tech_schedtask[« <b>Technique</b> – <b>T1053 Tâche/Travail planifié</b><br /><b>Description</b> : Tâche planifiée nommée u201cRuntime Brokeru201d créée pour s’exécuter à la connexion. »] class tech_schedtask technique artifact_schedtask[« <b>Artifact</b> – <b>Nom</b> : Tâche planifiée u201cRuntime Brokeru201d<br /><b>Déclenchement</b> : À la connexion utilisateur »] class artifact_schedtask artifact tech_startup u002du002d>|ajoute| artifact_schedtask artifact_schedtask u002du002d>|exécute| tech_schedtask %% Step 8 u2013 Collecte d’identifiants depuis les navigateurs tech_credbrowser[« <b>Technique</b> – <b>T1555.003 Identifiants des magasins de mots de passe : Identifiants depuis les navigateurs web</b><br /><b>Description</b> : Le malware a collecté les données de profil du navigateur et les identifiants enregistrés. »] class tech_credbrowser technique artifact_browser_data[« <b>Artifact</b> – <b>Données</b> : Mots de passe et cookies du navigateur extraits »] class artifact_browser_data artifact tech_schedtask u002du002d>|collecte| tech_credbrowser tech_credbrowser u002du002d>|stocke| artifact_browser_data %% Step 9 u2013 Vol de cookie de session web tech_stealcookie[« <b>Technique</b> – <b>T1539 Vol de cookie de session Web</b><br /><b>Description</b> : La fonction <code>getCookie()</code> a récupéré les cookies de session du navigateur de la victime. »] class tech_stealcookie technique artifact_getcookie[« <b>Artifact</b> – <b>Données</b> : Cookies de session capturés depuis les navigateurs »] class artifact_getcookie artifact tech_credbrowser u002du002d>|active| tech_stealcookie tech_stealcookie u002du002d>|produit| artifact_getcookie %% Step 10 u2013 Utilisation de matériel d’authentification alternatif tech_altauth[« <b>Technique</b> – <b>T1550.004 Utilisation de matériel d’authentification alternatif : Cookie de session Web</b><br /><b>Description</b> : Les cookies collectés ont ensuite été utilisés pour détourner des sessions Web authentifiées. »] class tech_altauth technique artifact_getcookie u002du002d>|utilisé par| tech_altauth %% Step 11 u2013 Camouflage tech_masquerade[« <b>Technique</b> – <b>T1036.003 Camouflage : Renommer les utilitaires légitimes</b><br /><b>Description</b> : Les binaires malveillants ont été renommés en u201cRuntime Broker.exeu201d et u201cmsedge.exeu201d. »] class tech_masquerade technique artifact_renamed_bins[« <b>Artifact</b> – <b>Fichiers</b> : <code>Runtime Broker.exe</code>, <code>msedge.exe</code> (malveillant) »] class artifact_renamed_bins artifact tech_altauth u002du002d>|livre| artifact_renamed_bins artifact_renamed_bins u002du002d>|utilisé dans| tech_masquerade %% Step 12 u2013 Altération des défenses tech_impairdefense[« <b>Technique</b> – <b>T1562 Altération des défenses</b><br /><b>Description</b> : Exclusions de Windows Defender ajoutées via PowerShell pour échapper à la détection. »] class tech_impairdefense technique artifact_defender_exclusion[« <b>Artifact</b> – <b>Commande</b> : Script PowerShell ajoutant des chemins d’exclusion à Defender »] class artifact_defender_exclusion artifact tech_masquerade u002du002d>|exécute| artifact_defender_exclusion artifact_defender_exclusion u002du002d>|active| tech_impairdefense %% Step 13 u2013 Fichiers obfusqués tech_obfuscation[« <b>Technique</b> – <b>T1027 Fichiers ou informations obfusqués</b><br /><b>Description</b> : La charge utile a employé 64 couches d’obfuscation imbriquées (Base85, XOR, zlib, Base64 inversé). »] class tech_obfuscation technique tech_impairdefense u002du002d>|protège| tech_obfuscation %% Step 14 u2013 Cacher les artefacts tech_hideartifacts[« <b>Technique</b> – <b>T1564.012 Cacher les artefacts : Exclusions de fichiers/chemins</b><br /><b>Description</b> : Exclusions de Defender et fichiers cachés utilisés pour dissimuler des artefacts malveillants. »] class tech_hideartifacts technique tech_obfuscation u002du002d>|facilite| tech_hideartifacts %% Step 15 u2013 Résolveur de dépôt mort tech_dead_drop[« <b>Technique</b> – <b>T1102.001 Service Web : Résolveur de dépôt mort</b><br /><b>Description</b> : Le malware a récupéré des commandes à partir d’un réseau d’environ 1 000 comptes de dépôt mort sur Pastebin. »] class tech_dead_drop technique artifact_pastebin[« <b>Artifact</b> – <b>Service</b> : Comptes résolveurs de dépôt mort Pastebin »] class artifact_pastebin artifact tech_hideartifacts u002du002d>|récupère| artifact_pastebin artifact_pastebin u002du002d>|fournit des commandes à| tech_dead_drop %% Step 16 u2013 Exfiltration via FTP tech_exfilftp[« <b>Technique</b> – <b>T1048.003 Exfiltration via protocole alternatif : Protocole non-C2 non chiffré</b><br /><b>Description</b> : Données collectées exfiltrées via FTP sur le port 21. »] class tech_exfilftp technique artifact_ftp[« <b>Artifact</b> – <b>Protocole</b> : FTP (port 21) utilisé pour le transfert de données »] class artifact_ftp artifact tech_dead_drop u002du002d>|envoie des données via| tech_exfilftp tech_exfilftp u002du002d>|utilise| artifact_ftp %% Step 17 u2013 Détournement de ressources (minage Monero) tech_resourcehijack[« <b>Technique</b> – <b>T1496.001 Détournement de ressources : Détournement de calcul</b><br /><b>Description</b> : Le mineur Monero XMRig déployé, déguisé en u201cmsedge.exeu201d, pour monétiser les hôtes infectés. »] class tech_resourcehijack technique artifact_xmrig[« <b>Artifact</b> – <b>Fichier</b> : Binaire du mineur XMRig nommé <code>msedge.exe</code> »] class artifact_xmrig artifact tech_exfilftp u002du002d>|fournit des ressources pour| tech_resourcehijack tech_resourcehijack u002du002d>|exécute| artifact_xmrig %% Step 18 u2013 Découverte d’informations du navigateur tech_browserdisc[« <b>Technique</b> – <b>T1217 Découverte d’informations du navigateur</b><br /><b>Description</b> : L’attaquant a énuméré les informations du navigateur pour trouver des identifiants et des données de session supplémentaires. »] class tech_browserdisc technique artifact_browser_info[« <b>Artifact</b> – <b>Données</b> : Version du navigateur, chemins des profils, extensions installées »] class artifact_browser_info artifact tech_resourcehijack u002du002d>|collectionne| tech_browserdisc tech_browserdisc u002du002d>|recueille| artifact_browser_info

Flux d’Attaque

Détections

Infiltration/exfiltration de données possible/C2 via services/outils tiers (via DNS)

Équipe SOC Prime
14 janv. 2026

Changements suspects des préférences de Windows Defender (via powerShell)

Équipe SOC Prime
14 janv. 2026

Binaire/scripts suspects dans l’emplacement de démarrage automatique (via file_event)

Équipe SOC Prime
14 janv. 2026

Un fichier caché a été créé sur un hôte Linux (via file_event)

Équipe SOC Prime
14 janv. 2026

Infiltration / Exfiltration de données possible / C2 via des services / outils tiers (via proxy)

Équipe SOC Prime
14 janv. 2026

IOCs (Emails) pour détecter : Chasse Lazarus : À l’intérieur de l’infrastructure C2 de l’entretien contagieux

Règles AI de SOC Prime
14 janv. 2026

IOCs (DestinationIP) pour détecter : Chasse Lazarus : À l’intérieur de l’infrastructure C2 de l’entretien contagieux

Règles AI de SOC Prime
14 janv. 2026

IOCs (SourceIP) pour détecter : Chasse Lazarus : À l’intérieur de l’infrastructure C2 de l’entretien contagieux

Règles AI de SOC Prime
14 janv. 2026

IOCs (HashSha256) pour détecter : Chasse Lazarus : À l’intérieur de l’infrastructure C2 de l’entretien contagieux

Règles AI de SOC Prime
14 janv. 2026

Fonction getCookie suspecte récupérant du JavaScript malveillant depuis le domaine Vercel [Événement de Fichier Windows]

Règles AI de SOC Prime
14 janv. 2026

Utilisation suspecte de Function.constructor dans errorHandler.js pour RCE Backend [Événement de Fichier Windows]

Règles AI de SOC Prime
14 janv. 2026

Camouflage de processus malveillants en tant que RuntimeBroker et XMRig Miner en msedge.exe [Création de Processus Windows]

Règles AI de SOC Prime
14 janv. 2026

Configuration d’auto-exécution malveillante pour VSCode [Événement de Fichier Windows]

Règles AI de SOC Prime
14 janv. 2026

Exécution de Simulation

Prérequis : La vérification de télémétrie et de la ligne de base pré-alerte doit avoir réussi.

Narration & Commandes de l’Attaque

L’adversaire copie le RuntimeBroker.exe binaire légitime vers un emplacement non standard (%TEMP%) pour se faire passer pour un processus de confiance tout en évitant la détection basée sur les chemins système connus. En exécutant la copie, l’événement de création de processus contient le nom d’image attendu mais un chemin qui échoue au contrôle de confinement « System32 », satisfaisant selection_runtime.

Script de Test de Régression

# -----------------------------------------------
# TC-20260114-A1B2C – Simulation de Camouflage
# -----------------------------------------------

# 1. Définir les chemins
$src  = "$env:SystemRootSystem32RuntimeBroker.exe"
$dest = "$env:TEMPRuntimeBroker.exe"

# 2. Copier le binaire légitime vers un répertoire non système
Copy-Item -Path $src -Destination $dest -Force

# 3. Exécuter le binaire copié (cela devrait déclencher la règle Sigma)
Start-Process -FilePath $dest -WindowStyle Hidden

# 4. OPTIONNEL : Simuler le scénario de camouflage msedge (mineur)
#    (Copier un exécutable bénin, renommer en msedge.exe, placer sous %LOCALAPPDATA%MicrosoftWindowsApplications)
$minerSrc  = "$env:SystemRootSystem32notepad.exe"
$minerDest = "$env:LOCALAPPDATAMicrosoftWindowsApplicationsmsedge.exe"
Copy-Item -Path $minerSrc -Destination $minerDest -Force
Start-Process -FilePath $minerDest -WindowStyle Hidden
# -----------------------------------------------

Commandes de Nettoyage

# Supprimer les copies malveillantes
Remove-Item -Path "$env:TEMPRuntimeBroker.exe" -Force -ErrorAction SilentlyContinue
Remove-Item -Path "$env:LOCALAPPDATAMicrosoftWindowsApplicationsmsedge.exe" -Force -ErrorAction SilentlyContinue