SOC Prime Bias: Moyen

04 Fév 2026 17:07

Outil Swarmer Évitant EDR Avec une Modification Discrète sur le Registre Windows pour la Persistance

Author Photo
Ruslan Mikhalov Chef de la Recherche sur les Menaces chez SOC Prime linkedin icon Suivre
Outil Swarmer Évitant EDR Avec une Modification Discrète sur le Registre Windows pour la Persistance
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Résumé

Swarmer est un utilitaire de persistance Windows de faible privilège qui crée une ruche de profil utilisateur obligatoire (NTUSER.MAN) et la modifie via l’API de registre hors ligne. Comme il ne repose pas sur les API Windows Reg* conventionnelles, il peut implanter une persistance de clé Run tout en réduisant la visibilité sur la télémétrie EDR réglée sur le comportement d’écriture de registre standard. La méthode abuse de la gestion des profils obligatoires pour transporter les entrées de démarrage à travers les connexions sans droits administratifs. Swarmer est disponible soit sous forme d’exécutable autonome, soit comme module PowerShell et peut être utilisé de manière à minimiser les artefacts sur disque.

Investigation

Le rapport décrit le flux complète de Swarmer : il exporte la ruche HKCU actuelle, modifie les données exportées pour inclure la persistance de démarrage, et reconstruit la ruche en utilisant les routines Offreg.dll telles que ORCreateHive et ORSetValue. La ruche reconstruite est ensuite placée en tant que NTUSER.MAN dans le chemin du profil utilisateur afin qu’elle soit appliquée lors de la connexion. L’exécution est contrôlée via des options en ligne de commande qui définissent la valeur de démarrage cible et l’emplacement de la charge utile à exécuter. Les auteurs ont validé la technique sur Windows 10 et Windows 11.

Atténuation

Surveiller la création de NTUSER.MAN dans des contextes utilisateur où les profils obligatoires ne sont pas attendus, et alerter sur le chargement de Offreg.dll par des processus inhabituels. Protéger et vérifier l’intégrité des répertoires utilisés pour les profils obligatoires, et établir une base de référence des opérations légitimes de registre hors ligne afin que les écarts soient évidents. Ajouter des détections pour les changements de ruche suspects qui prennent effet à la connexion plutôt qu’à l’exécution. Lorsque possible, restreindre la capacité d’un utilisateur à créer ou manipuler des artefacts de profil obligatoires.

Réponse

Si identifié, isoler le point de terminaison, acquérir la ruche NTUSER.MAN pour analyse, et énumérer toutes les entrées de clé Run injectées. Supprimer les valeurs de démarrage non autorisées et restaurer une ruche utilisateur de confiance pour éliminer la persistance. Effectuer un examen médico-légal plus large pour confirmer qu’aucune charge utile secondaire ou chemin de persistance alternatif n’a été établi, et rechercher dans toute la flotte le même motif d’écriture de ruche. Renforcer les contrôles de moindre privilège pour empêcher les utilisateurs de faible privilège de créer des profils obligatoires.

Flux d’attaque

Nous mettons encore à jour cette partie. Inscrivez-vous pour être averti

Prévenez-moi

Exécution de simulation

Prérequis : Le contrôle préliminaire de télémétrie & de base doit avoir 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 refléter directement les TTPs identifiés et viser à générer la télémétrie exacte attendue par la logique de détection. Des exemples abstraits ou non liés entraîneront un mauvais diagnostic.

  • Narratif d’attaque & Commandes :
    L’attaquant a obtenu un point d’appui sur un hôte compromis et souhaite établir une persistance qui survit à la connexion utilisateur sans toucher les ruches de registre standard (pour échapper aux crochets EDR). En utilisant l’outil Swarmer , l’attaquant :

    1. Détermine le répertoire de profil de l’utilisateur cible (C:Usersvictim).
    2. Crée un fichier de ruche malveillant (NTUSER.MAN) contenant une clé Run qui lance une charge utile de porte dérobée lors de la connexion.
    3. Écrit directement le fichier dans le profil de la victime en utilisant l’I/O de fichiers bas-niveau (contournant les appels de haut-niveau WinAPI).
    4. Appelle l’API de registre hors ligne pour charger la nouvelle ruche créée en mémoire, enregistre la clé Run, et finalement appelle pour charger la nouvelle ruche créée en mémoire, enregistre la clé Run, et finalement appelle pour persister les changements. pour persister les changements. Les deux actions génèrent :

    – création de fichier se terminant par

    • – création de fichier se terminant par – un processus ( NTUSER.MAN.
    • – un processus ( ) dont la ligne de commande contient) dont la ligne de commande contient) whose command line contains pour charger la nouvelle ruche créée en mémoire, enregistre la clé Run, et finalement appelle (ou un autre indicateur OR*).
  • Script de test de régression :

    #--------------------------------------------------------------
    # Simulation de persistance de registre de type Swarmer (PowerShell)
    #--------------------------------------------------------------
    # 1. Définir le chemin du profil de la victime
    $victimProfile = "$env:SystemDriveUsersvictim"
    $ntUserManPath = Join-Path $victimProfile "NTUSER.MAN"
    
    # 2. Créer un fichier de ruche minimal (conteneur binaire)
    #    Dans une attaque réelle, cela serait une ruche de registre conçue.
    $hiveBytes = [byte[]] (0..255)               # données factices
    [IO.File]::WriteAllBytes($ntUserManPath, $hiveBytes)
    
    # 3. Invoquer l'API de registre hors ligne via un exécutable d'assistance.
    #    Supposons que swarmer_helper.exe soit un binaire compilé qui encapsule
    #    les fonctions natives de registre hors ligne.
    $helper = "C:Toolsswarmer_helper.exe"
    $args = @(
        "ORCreateHive", "`"$ntUserManPath`""
        "ORSetValue", "HKLMSoftwareMicrosoftWindowsCurrentVersionRunmyBackdoor", "`"C:Malwarebackdoor.exe`""
        "ORSaveHive", "`"$ntUserManPath`""
    )
    & $helper $args
    #--------------------------------------------------------------
  • Commandes de nettoyage :

    # Supprimer la ruche malveillante et la décharger si nécessaire
    Remove-Item -Path "$env:SystemDriveUsersvictimNTUSER.MAN" -Force
    # Si l'assistant a laissé des ruches en mémoire, déchargement forcé (exemple)
    & "$env:ProgramFilesWindows Kits10binx64reg.exe" unload "HKUTempHive"