SOC Prime Bias: High

01 Sep 2026 16:33 UTC

La campagne TerminalFix construit des tunnels inversés pour un accès persistant

Author Photo
SOC Prime Team linkedin icon Suivre
La campagne TerminalFix construit des tunnels inversés pour un accès persistant
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Résumé

La campagne TerminalFix est une variante de ClickFix qui utilise des superpositions CAPTCHA Cloudflare fictives pour manipuler les utilisateurs et les amener à exécuter des commandes PowerShell malveillantes. La chaîne d’attaque combine le chargement de DLL via le détournement, l’extraction stéganographique de charges utiles à partir d’images PNG et une reconnaissance approfondie de l’Active Directory. La campagne déploie finalement un implant de tunnel inverse basé sur Python personnalisée qui donne aux attaquants un accès persistant au niveau du réseau via un proxy.

Enquête

Microsoft Threat Intelligence a analysé la chaîne d’attaque à plusieurs étapes, qui exploite le binaire signé légitime LockScreenContentServer.exe pour le chargement de DLL détourné. L’enquête a montré comment les charges utiles malveillantes sont dissimulées dans des pixels PNG et comment un runtime Python établit un tunnel inverse basé sur WebSocket. Les chercheurs ont également identifié l’infrastructure de commande-et-contrôle et les techniques de reconnaissance utilisées pour cartographier les réseaux internes.

Atténuation

Les organisations devraient restreindre l’exécution de PowerShell via AppLocker ou la stratégie de groupe et surveiller les LockScreenContentServer.exe exécutions à partir de lieux inhabituels ou non standards. Les règles de réduction de la surface d’attaque (ASR) peuvent aider à bloquer les scripts obfusqués et les lancements exécutables non autorisés. La formation à la sensibilisation des utilisateurs axée sur la reconnaissance des faux CAPTCHA est également une mesure préventive importante.

Réponse

Si une activité TerminalFix est détectée, les appareils concernés doivent être traités comme des points de pivot de réseau potentiels et faire l’objet d’une enquête pour tout mouvement latéral. La rotation des identifiants doit être priorisée, en particulier pour les comptes administrateurs de domaine accessibles depuis le système compromis. Les équipes de sécurité devraient également effectuer des analyses médico-légales pour les runtimes Python non autorisés et les connexions WebSocket sortantes suspectes.

Flux d’attaque

Nous mettons encore à jour cette partie.

Détections

Points de persistance possibles [ASEPs – Software/NTUSER Hive] (via registry_event)

Équipe SOC Prime
31 août 2026

Modèles d’attaque ClickFix possibles en ligne de commande (via cmdline)

Équipe SOC Prime
31 août 2026

Exécution Python à partir de dossiers suspects (via cmdline)

Équipe SOC Prime
31 août 2026

Appel de classes/méthodes .NET suspectes depuis Powershell CommandLine (via process_creation)

Équipe SOC Prime
31 août 2026

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

Équipe SOC Prime
31 août 2026

Découverte de système distant possible ou vérification de connectivité (via cmdline)

Équipe SOC Prime
31 août 2026

Découverte de relations de confiance de domaine suspects (via cmdline)

Équipe SOC Prime
31 août 2026

Exécution Attrib pour masquer des fichiers (via cmdline)

Équipe SOC Prime
31 août 2026

Téléchargements directs possibles de l’interprète Python (via cmdline)

Équipe SOC Prime
31 août 2026

Un archive a été extrait dans un répertoire suspect en utilisant Powershell (via powershell)

Équipe SOC Prime
31 août 2026

IOC (HashSha256) à détecter : campagne TerminalFix déploie un tunnel inverse à travers une intrusion en plusieurs étapes

Règles SOC Prime AI
31 août 2026

Tunnel WebSocket TLS sortant vers gitnow.dev [Connexion réseau Windows]

Règles SOC Prime AI
31 août 2026

Détection du tunnel inverse TerminalFix et du chargement de DLL via détournement [Création de processus Windows]

Règles SOC Prime AI
31 août 2026

Chargement de DLL et extraction stéganographique de charge utile dans la campagne TerminalFix [Chargement d’image Windows]

Règles SOC Prime AI
31 août 2026

Exécution de PowerShell et boucle de commande de la campagne TerminalFix [Windows Powershell]

Règles SOC Prime AI
31 août 2026

Exécution de simulation

Prérequis : Le contrôle pré-vol de la télémétrie et de la référence doit avoir été passé.

Raisonnement : Cette section détaille l’exécution précise de la technique d’adversaire (TTP) conçue pour déclencher la règle de détection. Les commandes et le narratif DOIVENT refléter directement les TTP identifiés et viser à générer exactement la télémétrie attendue par la logique de détection. Des exemples abstraits ou non liés mèneront à un mauvais diagnostic.

  • Narratif de l’attaque & Commandes : L’adversaire a l’intention d’établir un tunnel inverse persistant. Pour se fondre dans les processus système, il dépose d’abord un binaire à l’apparence légitime, LockScreenContentServer.exe, dans un répertoire. Il utilise ensuite le chargement de DLL détourné pour exécuter du code malveillant. Ensuite, il initie un tunnel basé sur Python en utilisant pythonw.exe (pour éviter une fenêtre de console visible) et exécute un script nommé client.py. Cette séquence est conçue pour créer une porte dérobée au niveau réseau qui contourne les restrictions standard du pare-feu via le tunneling WebSocket.

  • Script de Test de Régression :

    # Script de Simulation : Émulation du Tunnel Inverse TerminalFix
    # 1. Configurer l'Environnement
    $targetDir = "C:UsersPublicDownloadsSystemFiles"
    New-Item -Path $targetDir -ItemType Directory -Force
    
    # 2. Créer un 'LockScreenContentServer.exe' fictif (Simulation du binaire détourné)
    # Dans une vraie attaque, il s'agirait d'un vrai fichier PE.
    $dummyExe = Join-Path $targetDir "LockScreenContentServer.exe"
    New-Item -Path $dummyExe -ItemType File -Force
    
    # 3. Créer un script Python fictif 'client.py'
    $pythonScript = Join-Path $targetDir "client.py"
    "print('Establishing tunnel...')" | Out-File -FilePath $pythonScript -Encoding ascii
    
    # 4. Exécuter les processus 'malveillants' pour déclencher la logique de détection
    # Déclencheur Partie A : LockScreenContentServer.exe
    Start-Process -FilePath $dummyExe -WindowStyle Hidden
    
    # Déclencheur Partie B : pythonw.exe avec client.py en ligne de commande
    # Remarque : Nous utilisons le chemin complet vers pythonw.exe comme prévu par la règle
    $pythonwPath = "C:WindowsSystem32pythonw.exe" 
    # Si pythonw n'est pas dans System32, nous le localisons
    if (-not (Test-Path $pythonwPath)) {
        $pythonwPath = (Get-Command pythonw.exe).Source
    }
    
    Start-Process -FilePath $pythonwPath -ArgumentList $pythonScript -WindowStyle Hidden
  • Commandes de Nettoyage :

    # Script de Nettoyage
    $targetDir = "C:UsersPublicDownloadsSystemFiles"
    if (Test-Path $targetDir) {
        Remove-Item -Path $targetDir -Recurse -Force
    }