DriveSurge utilise ClickFix et des attaques par Drive-By Faux Mise à Jour à grande échelle
Detection stack
- AIDR
- Alert
- ETL
- Query
Résumé
DriveSurge est un courtier d’accès initial émergent qui compromet des sites Web légitimes et injecte un JavaScript malveillant pour canaliser les visiteurs à travers un système de distribution de trafic open-source connu sous le nom de zTDS. L’acteur sert ensuite de fausses pages de mise à jour du navigateur ou des invites de type ClickFix qui livrent des logiciels malveillants aux utilisateurs de macOS et de Windows via des téléchargements trompeurs ou des commandes PowerShell malveillantes. Son infrastructure comprend des milliers de .icu domaines enregistrés via NiceNIC et hébergés sur une infrastructure invulnérable. La campagne est d’envergure large et cible des utilisateurs sur plusieurs navigateurs et systèmes d’exploitation.
Investigation
Les chercheurs ont identifié huit empreintes techniques distinctes liées à l’opération, y compris des noms de fichiers JavaScript caractéristiques tels que t.js, t..js, et ext-b..js, ainsi que des caractéristiques de serveur récurrentes telles que nginx et des hachages JARM spécifiques. La cartographie de l’infrastructure s’est appuyée sur la recherche de domaines, les pivots de courriels WHOIS et l’analyse de sites Web compromis, y compris jclforwarding.com. L’équipe a également extrait des URL de livraison de charges, des serveurs de commande et de contrôle, et documenté un comportement de détournement du presse-papiers visant spécifiquement les victimes macOS.
Atténuation
Les organisations devraient surveiller les modèles d’injection de JavaScript documentés, la présence de fichiers liés à zTDS tels que jsrepo avec le rnd paramètre, et les connexions sortantes vers des adresses IP d’hébergement invulnérable connues. Les défenseurs devraient bloquer les .icu domaines enregistrés via NiceNIC correspondant aux empreintes identifiées et appliquer des politiques strictes de sécurité de contenu aux actifs web exposés à Internet. Les protections des points de terminaison devraient également être capables de détecter les chaînes de commande PowerShell et Bash encodées en Base64 utilisées dans la livraison.
Réponse
Si une activité de DriveSurge est détectée, les actifs web affectés devraient être isolés immédiatement, le JavaScript malveillant retiré, et tous les enregistrements de domaine compromis révisés ou révoqués. Les domaines et adresses IP identifiés devraient être bloqués au périmètre du réseau. Les équipes de sécurité devraient également réaliser une analyse forensic des systèmes ayant exécuté les commandes de téléchargement malveillantes et réinitialiser les identifiants exposés. Les indicateurs pertinents devraient être partagés avec les ISACs de l’industrie et les partenaires de confiance.
graph TB %% Définitions des classes classDef action fill:#99ccff classDef tool fill:#cccccc classDef malware fill:#ffcc99 classDef process fill:#ff9966 classDef operator fill:#ff9900 %% Nœuds node_initial_access[« <b>Action</b> – <b>T1189 Compromission par drive-by</b><br/><b>Description</b>: Compromission de sites web à forte réputation avec injection de JavaScript malveillant.<br/><b>Résultat</b>: Le navigateur de la victime charge du code malveillant. »] class node_initial_access action node_content_injection[« <b>Action</b> – <b>T1659 Injection de contenu</b><br/><b>Description</b>: Les scripts injectés (t.js, ext-b, jsrepo) chargent le système de distribution de trafic zTDS. »] class node_content_injection action tool_ztds[« <b>Outil</b> – zTDS système de distribution de trafic<br/><b>Objectif</b>: Servir du JavaScript malveillant aux navigateurs compromis. »] class tool_ztds tool malware_jsrepo[« <b>Malware</b> – jsrepo<br/><b>Rôle</b>: Script chargeur obfusqué distribuant des URL de payload. »] class malware_jsrepo malware node_obfuscation[« <b>Action</b> – Obfuscation de code<br/><b>Techniques</b>: T1027.010, T1027.007, T1027.018<br/><b>Description</b>: JavaScript encodé en base64, utilisation de atob, concaténation et Unicode invisible pour masquer les URL. »] class node_obfuscation action node_fake_updates[« <b>Action</b> – <b>T1554 Faux mises à jour</b><br/><b>Description</b>: Des pages de fausses mises à jour incitent au téléchargement de binaires malveillants.<br/><b>Référence</b>: T1204.004 Exécution utilisateur. »] class node_fake_updates action node_copy_paste[« <b>Action</b> – <b>T1204.004 Copie et collage malveillant</b><br/><b>Description</b>: L’utilisateur copie des commandes depuis de fausses pages et les exécute dans un terminal. »] class node_copy_paste action node_clickfix[« <b>Action</b> – <b>T1684 Ingénierie sociale ClickFix</b><br/><b>Description</b>: De fausses erreurs remplacent le presse-papiers par des commandes Base64.<br/><b>Référence</b>: T1115 détournement du presse-papiers. »] class node_clickfix action node_clipboard_hijack[« <b>Action</b> – <b>T1115 Détournement du presse-papiers</b><br/><b>Description</b>: L’attaquant écrase le presse-papiers avec des commandes malveillantes. »] class node_clipboard_hijack action node_browser_hijack[« <b>Action</b> – <b>T1185 Détournement de session navigateur</b><br/><b>Description</b>: Les sites compromis redirigent via zTDS vers des domaines contrôlés par l’attaquant. »] class node_browser_hijack action node_payload_delivery[« <b>Action</b> – <b>T1133 Services distants externes / T1105 transfert d’outils</b><br/><b>Description</b>: Les scripts utilisent curl/wget pour télécharger des charges utiles macOS secondaires. »] class node_payload_delivery action tool_curl[« <b>Outil</b> – curl<br/><b>Objectif</b>: Transfert de fichiers depuis le serveur de l’attaquant. »] class tool_curl tool tool_wget[« <b>Outil</b> – wget<br/><b>Objectif</b>: Transfert de fichiers depuis le serveur de l’attaquant. »] class tool_wget tool process_download[« <b>Processus</b> – script de téléchargement<br/><b>Action</b>: Exécute curl/wget pour récupérer des binaires macOS. »] class process_download process node_c2[« <b>Action</b> – <b>T1102.002 Communication bidirectionnelle Web</b><br/><b>Description</b>: Le malware communique avec le C2 via HTTPS et injection de contenu. »] class node_c2 action node_ad_distribution[« <b>Action</b> – <b>T1596.004 Système de distribution publicitaire</b><br/><b>Description</b>: Le malvertising et les CDN distribuent les charges utiles. »] class node_ad_distribution action %% Connexions node_initial_access –>|utilise| node_content_injection node_content_injection –>|charge| tool_ztds node_content_injection –>|livre| malware_jsrepo malware_jsrepo –>|exécute| node_obfuscation node_obfuscation –>|active| node_fake_updates node_fake_updates –>|déclenche| node_copy_paste node_copy_paste –>|mène à| node_clickfix node_clickfix –>|utilise| node_clipboard_hijack node_clipboard_hijack –>|mène à| node_browser_hijack node_browser_hijack –>|redirige vers| node_payload_delivery node_payload_delivery –>|utilise| tool_curl node_payload_delivery –>|utilise| tool_wget node_payload_delivery –>|livre| process_download process_download –>|exécute| node_c2 node_c2 –>|communique via| node_ad_distribution
Flux d’attaque
Détections
Télécharger ou télécharger via Powershell (via ligne de commande)
Voir
Appeler des fonctions API Windows suspectes depuis Powershell (via powershell)
Voir
Manipulation possible de chaînes encodées en Base64 [MacOS] (via ligne de commande)
Voir
Tentative d’exécution suspecte de Curl [MacOS] (via ligne de commande)
Voir
IOCs (HashSha256) pour détecter : Découvrez DriveSurge : Un nouvel acteur de menace utilisant ClickFix et des attaques de mise à jour frauduleuses sur des milliers de sites compromis
Voir
IOCs (SourceIP) pour détecter : Découvrez DriveSurge : Un nouvel acteur de menace utilisant ClickFix et des attaques de mise à jour frauduleuses sur des milliers de sites compromis
Voir
IOCs (DestinationIP) pour détecter : Découvrez DriveSurge : Un nouvel acteur de menace utilisant ClickFix et des attaques de mise à jour frauduleuses sur des milliers de sites compromis
Voir
Détecter l’exécution de commande ClickFix malveillante [Windows Powershell]
Voir
Détection de l’injection JavaScript malveillante de DriveSurge [Serveur web]
Voir
Exécution de simulation
Prérequis : Le contrôle préalable de la télémétrie et la vérification de base doivent avoir réussi.
Raisonnement : 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.
-
Narratif d’attaque & Commandes
-
Étape 1 – Déployer la charge malveillante :
Un attaquant télécharge un fichier JavaScript nommét.js(ou un nom basé sur le hachage) sur le serveur web compromis. Le fichier contient un extrait de contrebande HTML DriveSurge qui récupère silencieusement des charges supplémentaires. -
Étape 2 – Requête de la victime :
Le navigateur de la victime (simulé aveccurl) demande le fichier malveillant, produisant une entrée de journal où l’URI de la requête correspond à l’expression régulière Sigma. -
Étape 3 – Génération d’alerte :
Le SIEM ingère la ligne de journal d’accès, la règle Sigma évalue lenom du fichierchamp, et l’alerte est émise.
-
-
Script de test de régression
#!/usr/bin/env bash set -euo pipefail # --- Variables ------------------------------------------------- WEB_ROOT="/var/www/html" MALICIOUS_NAME="t.js" MALICIOUS_PATH="${WEB_ROOT}/${MALICIOUS_NAME}" MALICIOUS_CONTENT='console.log("DriveSurge payload exécuté");' # --- Déployer le JavaScript malveillant -------------------------------- echo "${MALICIOUS_CONTENT}" | sudo tee "${MALICIOUS_PATH}" > /dev/null sudo chown www-data:www-data "${MALICIOUS_PATH}" sudo chmod 644 "${MALICIOUS_PATH}" # --- Donner à Apache un moment pour remarquer le nouveau fichier --------------- sleep 2 # --- Simuler la requête de la victime (génère de la télémétrie) ------------ curl -s -o /dev/null "http://localhost/${MALICIOUS_NAME}" # --- Optionnel : afficher la ligne de journal récente pour vérification manuelle ------- echo "=== Entrée de journal Apache récente pour vérification ===" sudo tail -n 5 /var/log/apache2/access.log | grep "${MALICIOUS_NAME}" || echo "Entrée de journal non trouvée" -
Commandes de nettoyage
#!/usr/bin/env bash set -euo pipefail WEB_ROOT="/var/www/html" MALICIOUS_NAME="t.js" MALICIOUS_PATH="${WEB_ROOT}/${MALICIOUS_NAME}" # Supprimer le fichier malveillant sudo rm -f "${MALICIOUS_PATH}" echo "Nettoyé ${MALICIOUS_PATH}"