Strumento Swarmer: evasione EDR con una modifica furtiva al registro di Windows per la persistenza
Detection stack
- AIDR
- Alert
- ETL
- Query
Riepilogo
Swarmer è un’utilità di persistenza di Windows a basso privilegio che crea un hive del profilo utente obbligatorio (NTUSER.MAN) e lo modifica tramite l’API del Registro di Sistema Offline. Poiché non si basa su API Windows Reg* convenzionali, può inserire la persistenza di una chiave Run riducendo la visibilità alla telemetria EDR che è sintonizzata sul comportamento standard di scrittura del registro. Il metodo abusa della gestione dei profili obbligatori per trasferire le voci di avvio a prescindere dai diritti amministrativi. Swarmer è disponibile sia come eseguibile standalone sia come modulo PowerShell e può essere utilizzato in modi che riducono al minimo gli artefatti su disco.
Investigazione
Il rapporto descrive il flusso end-to-end di Swarmer: esporta l’hive HKCU attuale, modifica i dati esportati per includere la persistenza all’avvio e ricostruisce l’hive usando le routine di Offreg.dll come ORCreateHive e ORSetValue. L’hive ricostruito viene quindi posizionato come NTUSER.MAN all’interno del percorso del profilo utente in modo che venga applicato durante il login. L’esecuzione è controllata tramite opzioni da riga di comando che definiscono il valore di avvio target e la posizione del payload da eseguire. Gli autori hanno validato la tecnica su Windows 10 e Windows 11.
Mitigazione
Monitorare la creazione di NTUSER.MAN in contesti utente dove i profili obbligatori non sono previsti, e segnalare quando Offreg.dll viene caricato da processi insoliti. Proteggere e controllare l’integrità delle directory usate per i profili obbligatori e stabilire un baseline delle operazioni legittime del registro offline in modo che le deviazioni siano ben visibili. Aggiungere rilevazioni per modifiche sospette agli hive che hanno effetto al login piuttosto che in esecuzione. Dove possibile, limitare la capacità di un utente di creare o manipolare artefatti del profilo obbligatori.
Risposta
Se identificata, isolare l’endpoint, acquisire l’hive NTUSER.MAN per l’analisi, e enumerare tutte le voci di chiave Run iniettate. Rimuovere i valori di avvio non autorizzati e ripristinare un hive utente noto e corretto per eliminare la persistenza. Eseguire una revisione forense più ampia per confermare che non siano stati stabiliti payload secondari o percorsi di persistenza alternativi, e cercare nella flotta lo stesso schema di scrittura degli hive. Rafforzare i controlli di privilegio minimo per impedire agli utenti a basso privilegio di creare profili obbligatori.
Flusso dell’Attacco
Stiamo ancora aggiornando questa parte. Iscriviti per essere notificato
NotificamiRilevazioni
Tentativo di Esecuzione dell’Utilità Swarmer (via powershell)
Visualizza
Tentativo di Esecuzione dell’Utilità Swarmer (via command line)
Visualizza
Rilevamento della Persistenza del Registro Tool Swarmer via NTUSER.MAN e API del Registro Offline [Evento del Registro Windows]
Visualizza
Esecuzione della Simulazione
Prerequisito: Il Controllo Pre‑flight della Telemetria e del Baseline deve essere passato.
Razionale: Questa sezione descrive l’esecuzione precisa della tecnica dell’avversario (TTP) progettata per attivare la regola di rilevamento. I comandi e la narrazione DEVONO riflettere direttamente i TTP identificati e mirare a generare esattamente la telemetria prevista dalla logica di rilevamento. Esempi astratti o non correlati porteranno a diagnosi errate.
-
Narrazione e Comandi dell’Attacco:
L’attaccante ha ottenuto un punto d’appoggio su un host compromesso e desidera stabilire la persistenza che sopravvive al login utente senza toccare gli hive del Registro standard (per evitare gli hook EDR). Usando lo strumento Swarmer l’attaccante:- Determina la directory del profilo utente target (
C:Usersvictim). - Crea un file hive malevolo (
NTUSER.MAN) contenente una chiave Run che avvia un payload back‑door al login. - Scrive il file direttamente nel profilo della vittima usando I/O di file a livello basso (bypassando le chiamate di alto livello WinAPI).
- Chiama l’ API del Registro Offline
ORCreateHiveper caricare l’hive appena creato in memoria, registra la chiave Run, e infine chiamaORSaveHiveper salvare le modifiche.
Entrambe le azioni generano:
- Sysmon EventID 11 – creazione file che termina con
NTUSER.MAN. - Security EventID 4688 – un processo (
swarmer.exe) la cui riga di comando contieneORCreateHive(o un altro flag OR*).
- Determina la directory del profilo utente target (
-
Script di Test di Regressione:
#-------------------------------------------------------------- # Simulazione di Persistenza nel Registro in stile Swarmer (PowerShell) #-------------------------------------------------------------- # 1. Definire il percorso del profilo della vittima $victimProfile = "$env:SystemDriveUsersvictim" $ntUserManPath = Join-Path $victimProfile "NTUSER.MAN" # 2. Creare un file hive minimo (segnaposto binario) # In un attacco reale questo sarebbe un hive del registro creato. $hiveBytes = [byte[]] (0..255) # dati fittizi [IO.File]::WriteAllBytes($ntUserManPath, $hiveBytes) # 3. Invocare l'API del Registro Offline tramite un eseguibile di supporto. # Si presume che swarmer_helper.exe sia un binario compilato che usi # le funzioni native del Registro Offline. $helper = "C:Toolsswarmer_helper.exe" $args = @( "ORCreateHive", "`"$ntUserManPath`"" "ORSetValue", "HKLMSoftwareMicrosoftWindowsCurrentVersionRunmyBackdoor", "`"C:Malwarebackdoor.exe`"" "ORSaveHive", "`"$ntUserManPath`"" ) & $helper $args #-------------------------------------------------------------- -
Comandi di Pulizia:
# Rimuovere l'hive malevolo e scaricarlo se necessario Remove-Item -Path "$env:SystemDriveUsersvictimNTUSER.MAN" -Force # Se il supporto ha lasciato qualsiasi hive in memoria, scaricarlo forzatamente (esempio) & "$env:ProgramFilesWindows Kits10binx64reg.exe" unload "HKUTempHive"