SOC Prime Bias: Élevé

27 Mar 2026 17:11

InterLock : Analyse Complète des Outils d’une Opération de Rançongiciel

Author Photo
Ruslan Mikhalov Chef de la Recherche sur les Menaces chez SOC Prime linkedin icon Suivre
InterLock : Analyse Complète des Outils d’une Opération de Rançongiciel
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Résumé

InterLock est une opération de ransomware à double extorsion active depuis octobre 2024 qui vole des données, opère un site de fuite basé sur Tor et crypte des fichiers dans les environnements FreeBSD/ESXi et Windows. La chaîne d’intrusion utilise des installateurs MSI ScreenConnect pour un accès initial, un backdoor multi-langages NodeSnake pour la persistance, un collecteur d’identifiants NTLM, et un cadre de crypteur personnalisé qui emballe les charges utiles des ransomwares. Le trafic de commande et de contrôle s’appuie sur une communication WebSocket protégée par RC4, soutenue par des IP statiques de secours et des points d’extrémité Cloudflare Tunnel supplémentaires. Le ransomware ajoute l’extension .interlock, laisse une note de rançon contenant une URL de négociation .onion et utilise des clés dérivées de PRNG faibles qui peuvent permettre une récupération.

Enquête

Le rapport analyse 15 échantillons, y compris quatre installateurs MSI ScreenConnect, trois implants NodeSnake (JavaScript, Java, et C++ natif), une DLL de vol NTLM, et quatre exécutables de ransomware. Tous les artefacts partagent trois adresses IP C2 codées en dur et la même boucle de déchiffrement de crypteur marquée par le motif de byte 488b041f483345f04889041e. Sous sa forme native, NodeSnake ajoute le tunneling TCP, le détournement de threads, et l’anti-débogage. La variante Windows du ransomware crée une tâche planifiée quotidienne et efface les journaux d’événements Windows via wevtapi.dll. L’infrastructure inclut également deux domaines protégés par Let’s Encrypt et plusieurs sous-domaines gratuits de Cloudflare Tunnel.

Atténuation

Les défenseurs devraient bloquer les IP C2 connues et les domaines Cloudflare Tunnel au périmètre. Si ConnectWise ScreenConnect n’est pas nécessaire, il devrait être supprimé ou désactivé. Les contrôles de sécurité devraient détecter le motif de byte du crypteur et le préfixe de la poignée de main WebSocket chiffrée avec RC4 92 01 88 fe. La surveillance devrait également couvrir la tâche planifiée nommée TaskSystem et toute création de fichiers avec l’extension .interlock. Des contrôles d’accès au moindre privilège peuvent réduire encore l’exposition au vol d’identifiants NTLM et à l’exploitation de rundll32.

Réponse

Si InterLock est détecté, isoler l’hôte affecté, conserver l’intégralité du binaire pour l’analyse forensique, et extraire la clé publique RSA-4096 intégrée ainsi que les clés chiffrées par fichier. Si possible, tenter de récupérer la clé en utilisant l’affaiblissement rand() plus clock() PRNG si des horodatages fiables sont disponibles. Supprimer la tâche de persistance TaskSystem, supprimer les artefacts .interlock, et restaurer les données impactées à partir des sauvegardes. Les utilisateurs affectés devraient être notifiés, et l’incident de double extorsion devrait être signalé aux forces de l’ordre.

"graph TB %% Class definitions classDef action fill:#99ccff classDef tool fill:#ffcc99 classDef malware fill:#ff9999 classDef process fill:#cccccc classDef operator fill:#ff9900 %% Initial Access initial_access["<b>Action</b> – <b>T1204.004 Exécution de l’utilisateur</b>: Installateur MSI malveillant livré"] class initial_access action msiexec_tool["<b>Outil</b> – <b>Nom</b>: Msiexec<br/><b>Technique</b>: T1218.007 Exécution par proxy du binaire système"] class msiexec_tool tool screenconnect_client["<b>Malware</b> – <b>Nom</b>: Client ScreenConnect<br/><b>Objectif</b>: Composant d’accès à distance"] class screenconnect_client malware nodesnake_backdoor["<b>Malware</b> – <b>Nom</b>: Backdoor NodeSnake<br/><b>Capacités</b>: Shell Windows interactif et commandes ponctuelles"] class nodesnake_backdoor malware %% Persistence persistence_task["<b>Action</b> – <b>T1546 Exécution déclenchée par un événement</b>: Tâche planifiée créée"] class persistence_task action scheduled_task["<b>Processus</b> – <b>Nom</b>: TaskSystem<br/><b>Programme</b>: Tous les jours à 20:00"] class scheduled_task process self_delete["<b>Action</b> – <b>T1070.009 Suppression des indicateurs</b>: Auto-suppression après exécution"] class self_delete action %% Credential Access credential_access["<b>Action</b> – <b>T1556.008 Modification du processus d’authentification</b>: Collecte de hachages NTLM"] class credential_access action ntlmthief_dll["<b>Outil</b> – <b>Nom</b>: DLL NtlmThief<br/><b>Fonction</b>: Collecter les hachages NTLM et forcer NTLMv1"] class ntlmthief_dll tool %% Defense Evasion defense_evasion["<b>Action</b> – <b>T1027 Fichiers ou informations obscurcis</b>: Charges utiles empaquetées avec un crypteur personnalisé"] class defense_evasion action custom_crypter["<b>Outil</b> – <b>Nom</b>: Crypteur personnalisé<br/><b>Techniques</b>: XOR, code superflu, compilation-après-livraison, compression, binaires épurés"] class custom_crypter tool %% Command and Control c2_communication["<b>Action</b> – <b>T1071.001 Protocole de couche d’application</b>: Canal WebSocket (chiffré RC4)"] class c2_communication action websocket_impl["<b>Outil</b> – <b>Nom</b>: Client WebSocket<br/><b>Caractéristiques</b>: URLs dynamiques via Cloudflare Tunnel"] class websocket_impl tool %% Proxy Services proxy_service["<b>Action</b> – <b>T1090 Proxy</b>: Proxy interne et multimodules"] class proxy_service action cloudflare_tunnel["<b>Outil</b> – <b>Nom</b>: Cloudflare Tunnel<br/><b>Objectif</b>: Résolution dynamique des URLs C2"] class cloudflare_tunnel tool protocol_tunneling["<b>Action</b> – <b>T1572 Tunneling de protocole</b>: Relais de tunnel TCP"] class protocol_tunneling action %% Privilege Escalation / Defense Evasion priv_esc["<b>Action</b> – <b>T1055.003 Injection de processus</b>: Détournement d’exécution de thread"] class priv_esc action tls_injection["<b>Action</b> – <b>T1055.005 Injection de processus</b>: Injection de Thread Local Storage"] class tls_injection action process_injection_tool["<b>Outil</b> – <b>Nom</b>: Routine d’injection de processus"] class process_injection_tool tool %% Discovery discovery["<b>Action</b> – <b>T1016 Découverte de la configuration du réseau système</b>: Collecter les infos système et réseau"] class discovery action %% Collection collection["<b>Action</b> – <b>T1560.001 Archiver via une utilité</b> et <b>T1560.003 Archiver via une méthode personnalisée</b>: Conditionner les données exfiltrées"] class collection action %% Exfiltration exfiltration["<b>Action</b> – <b>T1020 Exfiltration automatisée</b> et <b>T1048.002 Exfiltration sur protocole asymétriquement chiffré non-C2</b>"] class exfiltration action %% Impact impact["<b>Action</b> – <b>T1486 Données encryptées pour impact</b>: Le ransomware InterLock encrypte les fichiers"] class impact action ransomware["<b>Malware</b> – <b>Nom</b>: Ransomware InterLock<br/><b>Chiffrement</b>: AESu2011256u2011CBC et RSAu20114096 OAEP<br/><b>Extension</b>: .interlock"] class ransomware malware ransom_note["<b>Action</b> – <b>T1490 Inhiber la récupération du système</b>: Effacer les journaux d’événements et déposer une note de rançon"] class ransom_note action artifact_cleanup["<b>Action</b> – <b>T1070 Suppression des indicateurs</b>: Supprimer les artefacts et fichiers"] class artifact_cleanup action %% Connections initial_access –>|utilise| msiexec_tool msiexec_tool –>|installe| screenconnect_client screenconnect_client –>|dépose| nodesnake_backdoor nodesnake_backdoor –>|crée| persistence_task persistence_task –>|crée| scheduled_task scheduled_task –>|exécute| self_delete nodesnake_backdoor –>|active| credential_access credential_access –>|utilise| ntlmthief_dll nodesnake_backdoor –>|obscurcit| defense_evasion defense_evasion –>|emploie| custom_crypter nodesnake_backdoor –>|communique via| c2_communication c2_communication –>|utilise| websocket_impl websocket_impl –>|achemine via| cloudflare_tunnel cloudflare_tunnel –>|soutient| proxy_service proxy_service –>|inclut| protocol_tunneling nodesnake_backdoor –>|effectue| priv_esc priv_esc –>|utilise| process_injection_tool process_injection_tool –>|effectue également| tls_injection nodesnake_backdoor –>|effectue| discovery nodesnake_backdoor –>|conditionne les données avec| collection collection –>|exfiltre via| exfiltration exfiltration –>|délivre la charge utile à| impact impact –>|utilise| ransomware ransomware –>|laisse| ransom_note ransom_note –>|déclenche| artifact_cleanup %% Class assignments class msiexec_tool tool class screenconnect_client malware class nodesnake_backdoor malware class ntlmthief_dll tool class custom_crypter tool class websocket_impl tool class cloudflare_tunnel tool class process_injection_tool tool class ransomware malware "

Flux d’attaque

Détections

Communication suspecte de domaine Trycloudflare (via dns)

Équipe SOC Prime
27 mars 2026

Exécution suspecte à partir d’un profil utilisateur public (via process_creation)

Équipe SOC Prime
27 mars 2026

Utilisation potentielle de Schtasks ou AT pour persistance (via cmdline)

Équipe SOC Prime
27 mars 2026

Utilisation possible de PING pour exécution différée (via cmdline)

Équipe SOC Prime
27 mars 2026

Commande et contrôle suspect par requête DNS de domaine de niveau supérieur inhabituel (TLD) (via dns)

Équipe SOC Prime
27 mars 2026

Énumération système possible (via cmdline)

Équipe SOC Prime
27 mars 2026

Énumération ou manipulation possible de compte ou groupe (via cmdline)

Équipe SOC Prime
27 mars 2026

IOCs (Emails) à détecter : InterLock : démontage complet des outils d’une opération de ransomware

Règles AI SOC Prime
27 mars 2026

IOCs (SourceIP) à détecter : InterLock : démontage complet des outils d’une opération de ransomware

Règles AI SOC Prime
27 mars 2026

IOCs (HashSha256) à détecter : InterLock : démontage complet des outils d’une opération de ransomware

Règles AI SOC Prime
27 mars 2026

IOCs (DestinationIP) à détecter : InterLock : démontage complet des outils d’une opération de ransomware

Règles AI SOC Prime
27 mars 2026

IOCs (HashMd5) à détecter : InterLock : démontage complet des outils d’une opération de ransomware

Règles AI SOC Prime
27 mars 2026

Détection de la poignée de main WebSocket NodeSnake et du motif d’URL [Connexion réseau Windows]

Règles AI SOC Prime
27 mars 2026

Détecter la variante ELF InterLock en utilisant sysconf pour le nombre de CPU [Création de processus Linux]

Règles AI SOC Prime
27 mars 2026

Détecter les méthodes d’exécution d’implants JS NodeSnake et DLL InterLock [Création de processus Windows]

Règles AI SOC Prime
27 mars 2026

Détection de la mise en scène de la sortie de commande d’InterLock Ransomware et NodeSnake [Événement de fichier Windows]

Règles AI SOC Prime
27 mars 2026

Exécution de la simulation

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

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 directement refléter les TTPs identifiés et viser à générer la télémétrie exacte attendue par la logique de détection.

  • Narratif d’attaque & Commandes :
    L’adversaire a compromis une station de travail à faible privilège et exécute un implant JavaScript NodeSnake qui effectue deux actions :

    1. Énumération du niveau de privilège – il exécute cmd.exe /c net1 session pour lister les sessions réseau actives, une méthode connue pour découvrir si le processus s’exécute en tant que SYSTÈME ou utilisateur régulier.
    2. Exécution de la charge utile basée sur DLL – il dépose une DLL malveillante (evilpayload.dll) dans %TEMP% et la lance via rundll32.exe %TEMP%evilpayload.dll,run %TEMP%evilpayload.dll. Cela imite la technique InterLock d’utilisation de rundll32 comme chargeur pour une charge utile de seconde étape.

    Les deux commandes sont exécutées directement pour produire les chaînes de commande exactement que la règle Sigma correspond.

  • Script de test de régression :

    # -------------------------------------------------
    # Simulation NodeSnake/InterLock – déclenche la règle Sigma
    # -------------------------------------------------
    
    # 1. Créer une DLL malveillante fictive (binaire non nécessaire pour la détection)
    $dllPath = "$env:TEMPevilpayload.dll"
    Set-Content -Path $dllPath -Value "MZ" -Encoding ASCII   # Placeholder minimal d'en-tête PE
    
    # 2. Exécuter la commande d'énumération des privilèges (correspondance exacte)
    Write-Host "[*] Exécution de l'énumération des privilèges (cmd.exe /c net1 session)"
    cmd.exe /c net1 session
    
    # 3. Exécuter le chargeur de charge utile rundll32 (correspondance exacte)
    Write-Host "[*] Lancement de la DLL malveillante via rundll32.exe"
    rundll32.exe "$dllPath,run $dllPath"
    
    # 4. Pause pour permettre l'ingestion par le SIEM
    Start-Sleep -Seconds 10
  • Commandes de nettoyage :

    # -------------------------------------------------
    # Nettoyage pour la simulation
    # -------------------------------------------------
    $dllPath = "$env:TEMPevilpayload.dll"
    
    if (Test-Path $dllPath) {
        Remove-Item -Path $dllPath -Force
        Write-Host "[+] Removed $dllPath"
    } else {
        Write-Host "[-] No DLL found to remove."
    }
    
    # Optionally clear PowerShell history to reduce forensic footprint
    Clear-History