Persistance
Persistance IFEO et Winlogon
Fiche IFEO et Winlogon : détournement par Debugger, GlobalFlag et SilentProcessExit, porte dérobée sticky keys, Userinit/Shell, Notify, AppInit_DLLs.
- Emplacement
- SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\<exe>
- Prouve
- Un lancement, une fin de processus ou une ouverture de session a été détourné vers un autre binaire
- Horodatages
- LastWrite des clés IFEO, SilentProcessExit et Winlogon en FILETIME, UTC ; binaires d'accessibilité remplacés avec horodatages NTFS $SI/$FN
- Rétention
- Valeurs conservées jusqu'à suppression ; anciennes valeurs dans les journaux de transaction, les clichés instantanés et l'espace non alloué de la ruche
- Accès
- Administrateur ; SOFTWARE et NTUSER.DAT verrouillés à chaud : reg query à chaud, sinon NTFS brut (KAPE) ou VSS
- Preuve de
- Persistance
- Type
- Registre
- Windows
- XPVista / 78 / 8.11011
- Cible KAPE
- RegistryHivesSystemRegistryHivesUser
- Velociraptor
- Windows.Triage.Targets:RegistryHivesSystemRegistryHivesUser
Outils
Comparer tous les outilsPrésentation
Cette fiche regroupe des persistances par le registre qui détournent un comportement natif de Windows au lieu d'ajouter une entrée de démarrage visible. Tout se trouve dans la ruche SOFTWARE (plus une clé Winlogon propre à l'utilisateur) et leur mise en place exige des droits d'administrateur.
- Image File Execution Options (IFEO) est une fonction de débogage : une valeur
DebuggersousIFEO\<nom>.exefait lancer le « débogueur » à la place du programme, avec le chemin du programme en argument. La faire pointer vers une charge détourne chaque lancement de cet exécutable. - La surveillance des fins de processus silencieuses (Windows 7 et suivants) lance un
MonitorProcessquand un programme surveillé se termine. - Les portes dérobées d'accessibilité remplacent ou détournent
sethc.exe,utilman.exeet consorts : une combinaison de touches sur l'écran d'ouverture de session ouvre alors un shell SYSTEM. - Les valeurs Winlogon (
Userinit,Shellet, sous XP,Notify) définissent ce qui s'exécute à chaque ouverture de session. - AppInit_DLLs charge des DLL dans chaque processus qui charge
user32.dll.
Emplacement
| Mécanisme | Emplacement | Versions de Windows |
|---|---|---|
| Debugger / GlobalFlag IFEO | SOFTWARE : Microsoft\Windows NT\CurrentVersion\Image File Execution Options\<exe> (et WOW6432Node\...) | Toutes |
| Fin de processus silencieuse | SOFTWARE : Microsoft\Windows NT\CurrentVersion\SilentProcessExit\<exe> | 7 et suivants |
| Binaires d'accessibilité | C:\Windows\System32\sethc.exe, utilman.exe, osk.exe, Magnify.exe, Narrator.exe, DisplaySwitch.exe, AtBroker.exe (fichier ou IFEO) | Toutes |
| Winlogon (machine) | SOFTWARE : Microsoft\Windows NT\CurrentVersion\Winlogon (valeurs Userinit, Shell) | Toutes |
| Winlogon (utilisateur) | NTUSER.DAT : Software\Microsoft\Windows NT\CurrentVersion\Winlogon (Shell) | Toutes |
| Paquets de notification Winlogon | SOFTWARE : ...\Winlogon\Notify\<nom> (DLLName) | XP / Server 2003 uniquement |
| AppInit_DLLs | SOFTWARE : Microsoft\Windows NT\CurrentVersion\Windows (AppInit_DLLs, LoadAppInit_DLLs, RequireSignedAppInit_DLLs) et WOW6432Node\... | Toutes ; désactivé par Secure Boot à partir de 8 |
Ce que l'artefact prouve
- Un détournement a été configuré : l'exécutable visé et le binaire ou la commande qui le remplace ou le suit.
- Un niveau de privilège : écrire ces clés (et remplacer des binaires de System32) exige des droits administrateur ou SYSTEM ; une trouvaille implique donc un accès privilégié préalable.
- Un accès avant ouverture de session pour les portes dérobées d'accessibilité : quiconque atteint l'écran d'ouverture de session, en local ou en RDP sans authentification au niveau du réseau (NLA), obtient un processus SYSTEM.
- Elle ne prouve pas que le détournement s'est déclenché. Cherchez l'exécution de la charge et, pour l'accessibilité, un
sethc.exe/utilman.exequi lancecmd.exe.
Champs clés
| Valeur | Signification |
|---|---|
IFEO\<exe>\Debugger | Programme lancé à la place de <exe> ; valeur légitime rare hors postes de développeurs |
IFEO\<exe>\GlobalFlag | Le bit 0x200 (FLG_MONITOR_SILENT_PROCESS_EXIT) active la surveillance des fins silencieuses |
SilentProcessExit\<exe>\ReportingMode | Indicateurs : 0x1 lancer le processus moniteur, 0x2 écrire des dumps, 0x4 afficher une notification |
SilentProcessExit\<exe>\MonitorProcess | Ligne de commande exécutée quand <exe> se termine |
SilentProcessExit\<exe>\LocalDumpFolder | Dossier des dumps quand ReportingMode contient 0x2 |
Winlogon\Userinit | Par défaut C:\Windows\system32\userinit.exe, ; les entrées supplémentaires séparées par des virgules s'exécutent aussi |
Winlogon\Shell | Par défaut explorer.exe ; toute autre valeur remplace ou complète le shell |
Winlogon\Notify\<nom>\DLLName | DLL chargée par Winlogon sous XP |
AppInit_DLLs / LoadAppInit_DLLs | Liste des DLL et interrupteur (1 = chargement) |
Horodatages
| Horodatage | Positionné quand | Format | Pièges |
|---|---|---|---|
LastWrite de la clé IFEO\<exe> | Les valeurs de la clé changent | FILETIME, UTC | Beaucoup de sous-clés IFEO sont légitimes et modifiées par les mises à jour |
LastWrite de SilentProcessExit\<exe> | Surveillance configurée | FILETIME, UTC | Clé absente sur la plupart des systèmes : sa présence est déjà notable |
LastWrite de la clé Winlogon | Une valeur Winlogon change | FILETIME, UTC | Windows et les installeurs modifient aussi d'autres valeurs de cette clé |
| $SI / $FN des binaires d'accessibilité | Fichier remplacé | NTFS, UTC | Les outils de copie peuvent conserver les dates d'origine ; comparez $FN, taille et hash avec une installation saine |
Rétention et effacement
- Les valeurs de registre restent jusqu'à leur suppression ; d'anciennes valeurs peuvent survivre dans les journaux de transactions de la ruche, les clichés instantanés et l'espace non alloué de la ruche.
- Un binaire d'accessibilité remplacé peut être restauré par la protection des fichiers Windows ou le vérificateur de fichiers système : un fichier sain aujourd'hui n'exclut pas un abus passé ; cherchez renommages et écrasements dans
System32via le journal USN. - Quand un processus surveillé se termine silencieusement, le journal Application enregistre une entrée de la source Process Exit Monitor.
ReportingMode0x2avecLocalDumpFolderest aussi détourné pour faire écrire par Windows un dump mémoire delsass.exe; une cléSilentProcessExit\lsass.exeest une preuve de vol d'identifiants.
Collecte
- Cible KAPE :
RegistryHivesSystem(SOFTWARE) etRegistryHivesUser(Winlogon par utilisateur). Il n'existe pas de cible dédiée ; ces cibles ne collectent pas les binaires d'accessibilité : calculez leur hash depuis l'image ou ajoutez une collecte de fichiers deSystem32. - Velociraptor (
Windows.Triage.Targets) :RegistryHivesSystem,RegistryHivesUser. En direct :Windows.Persistence.Debug(Debugger IFEO) etWindows.Persistence.SilentProcessExit. - Commandes natives :
reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options" /s /v Debugger
reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SilentProcessExit" /s
reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v Userinit
reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v Shell
reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows" /v AppInit_DLLs
certutil -hashfile C:\Windows\System32\sethc.exe SHA256
Outils d'analyse
- Registry Explorer / RECmd (Eric Zimmerman) : examen des clés et export via les fichiers batch communautaires.
- RegRipper :
imagefile(Debugger IFEO,WOW6432Nodecompris),winlogon_tln(alerte sur unUserinitou unShellnon standard) etappinitdlls. - Autoruns (Sysinternals, gratuit) : onglets Image Hijacks, Winlogon et AppInit, en direct ou hors ligne. Oddvar Moe a montré en 2018 qu'Autoruns n'affichait pas alors la persistance GlobalFlag/SilentProcessExit : contrôlez ces clés directement.
- Velociraptor :
Windows.Persistence.Debug,Windows.Persistence.SilentProcessExit. - Plaso : plugin de registre
winlogon.
Conseils d'investigation
- Listez toutes les sous-clés IFEO qui ont une valeur
Debugger; les binaires d'accessibilité et les outils de sécurité sont des cibles fréquentes. L'option « Replace Task Manager » de Process Explorer pose unDebuggerlégitime surtaskmgr.exe: vérifiez la cible de la valeur. - Contrôlez le bit
0x200des valeursGlobalFlaget associez chacune à une sous-cléSilentProcessExit. - Calculez le hash de
sethc.exe,utilman.exe,osk.exe,Magnify.exe,Narrator.exe,DisplaySwitch.exeetAtBroker.exe: un hash identique à celui decmd.exeouexplorer.exe, ou une ressource de version incohérente, trahit un binaire remplacé. - Cherchez un
Userinità plusieurs entrées et unShelldifférent deexplorer.exe, dans HKLM comme dans le NTUSER.DAT de chaque utilisateur. - Un
LoadAppInit_DLLsà 1 sur une machine en Secure Boot reste inopérant mais révèle une intention. - Confirmez l'exécution par le Prefetch de la charge, les créations de processus 4688 du journal Security (si audité) et, pour les abus de fin silencieuse, WER ou les fichiers de dump. Les charges sont souvent des LOLBins.
Artefacts liés
- Clés Run et dossiers DémarrageFiche clés Run et dossiers Démarrage : chemins Run, RunOnce, Wow6432Node et Policies, octets StartupApproved activé/désactivé, horodatages.
- Services WindowsFiche services Windows : valeurs de la clé Services (ImagePath, Start, Type, ServiceDll), événements 7045 et 4697, traces de PsExec et pièges.
- Tâches planifiéesFiche tâches planifiées : XML et .job, clés TaskCache, horodatages DynamicInfo, tâches masquées, événements TaskScheduler et 4698.
- Ruches du registreFiche ruches du registre : SYSTEM, SOFTWARE, SAM, SECURITY, NTUSER.DAT, UsrClass.dat, journaux de transactions, RegBack, LastWrite et collecte.
- Rapports d'erreurs Windows (WER)Fiche Windows Error Reporting : dossiers Report.wer, champs AppPath et SHA-1, événements Application 1000/1001/1002, vidages LocalDumps et rétention.
- Fichiers Prefetch (.pf)Fiche Prefetch Windows : emplacement des .pf par version, nombre d'exécutions, huit dernières dates, fichiers référencés, rétention et analyse.
Termes du glossaire
- PersistanceMécanismes permettant à un malware ou à un attaquant de survivre aux redémarrages : clés Run, services, tâches planifiées, abonnements WMI.
- LastWrite d'une clé de RegistreL'unique FILETIME stocké dans chaque clé de Registre, qui indique en UTC la dernière modification de la clé ou de l'une de ses valeurs.
- Ruche du RegistreUn fichier sur disque qui supporte une partie du Registre Windows, comme `SYSTEM`, `SOFTWARE` ou `NTUSER.DAT`.
- LOLBin (binaire living-off-the-land)Binaire Windows légitime et signé que les attaquants détournent pour télécharger, exécuter ou dissimuler une charge sans déposer leurs outils.