Parité RegRipper : quels sont les 143 plugins disponibles et ce qui manque
8 min de lecture
La version honnête : RegRipper est la base open-source pour le triage du Registre Windows depuis 2009. Tout ce qui s'appelle "analyseur de registre" est mesuré par rapport à lui. La liste de plugins ci-dessous est ce que ce site implémente aujourd'hui. Ce n'est pas une promesse marketing ; c'est le catalogue de travail que le worker exécute réellement.
Je garde cette page précise parce que cela compte aux personnes qui utilisent l'outil en réponse à incident. Si un plugin est sur la page, il produit une sortie sur la ruche correspondante. Si un plugin est dans "prévu", ne comptez pas dessus tout de suite.
Le choix d'architecture qui permet à ce catalogue de grandir
Chaque artefact est un plugin autonome sous lib/plugins/impl/. En
ajouter un est un fichier plus une entrée de registre ; pas de
changement architectural, pas de reconstruction du moteur. Cela
reprend délibérément le modèle de plugins Perl de RegRipper. Le
compromis est le même qu'Harlan Carvey a fait dans
RegRipper : chaque plugin
est petit et évident, le catalogue entier est énorme.
Le contrat plugin est intentionnellement étroit. Un plugin reçoit une session de ruche, interroge les clés qui l'intéressent, et émet des lignes structurées. Pas d'accès DOM, pas de couplage entre plugins. L'explorateur affiche les lignes retournées.
Phase 1 (présente)
L'ensemble fondateur. Si vous ne lanciez que ceux-ci sur un triage SOC, vous attraperiez encore l'essentiel de ce que demande le bas de gamme de la réponse à incident.
| Plugin | Ruche | Catégorie |
|---|---|---|
| ntuser_run / ntuser_runonce | NTUSER | Persistance |
| typedurls | NTUSER | Activité utilisateur |
| wordwheelquery | NTUSER | Activité utilisateur |
| recentdocs | NTUSER | Activité utilisateur |
| userassist | NTUSER | Exécution |
| winver | SOFTWARE | Système |
| installed_software | SOFTWARE | Logiciel |
| profilelist | SOFTWARE | Comptes |
| networklist | SOFTWARE | Réseau |
| software_run | SOFTWARE | Persistance |
| lastloggedon | SOFTWARE | Comptes |
| compname | SYSTEM | Système |
| timezone | SYSTEM | Système |
| services | SYSTEM | Persistance |
| usbstor | SYSTEM | USB |
| mounted_devices | SYSTEM | USB |
| bam | SYSTEM | Exécution |
| shimcache | SYSTEM | Exécution |
| samparse | SAM | Comptes |
| sam_groups | SAM | Comptes |
Le plugin Shimcache gère les
variantes du format moderne. samparse décode les structures F et
V par RID — drapeaux de compte, horodatages de dernière connexion /
mot de passe défini / dernier échec, compteurs de connexions et
d'échecs, nom complet et commentaire — et sam_groups décode les
structures C des alias Builtin pour résoudre l'appartenance aux
groupes locaux. Les deux exposent des métadonnées de compte ; aucun ne
déchiffre les empreintes de mots de passe (cela nécessite le SYSKEY de
SYSTEM et sort du périmètre ici). bam (Background Activity Monitor)
est le plus sous-estimé de cette liste : il fait remonter chaque
programme qui a tourné la semaine passée avec des horodatages par
session.
Phase 2 (présente)
Les plugins de suivi qui attrapent les schémas de persistance manqués par la Phase 1, plus les artefacts d'activité utilisateur et réseau plus profonds.
RunMRU, TypedPaths, MountPoints2, historique client RDP,
sessions PuTTY, paramètres d'affichage Explorer, Winlogon, Image File
Execution Options, App Paths, Policies Run, exclusions Defender,
interfaces TCP/IP, partages SMB, périphériques USB, heure du dernier
arrêt, sélection du control set, netsh portproxy, RecentApps
(historique de lancement Recherche/Démarrer de Windows), les MRU des
boîtes Ouvrir/Enregistrer ComDlg32 (comdlg32 — fichiers ouverts /
enregistrés par extension et dernier dossier parcouru par application),
et l'inventaire de fichiers Amcache.
RecentDocs porte désormais l'ordre MRU et l'heure d'écriture de la clé
qui date l'entrée la plus récente de chaque clé.
Le plugin IFEO est celui que j'utilise le plus souvent dans ce lot :
il signale chaque valeur Debugger, là où vit le classique backdoor
sticky-keys. Les exclusions Defender en deuxième : une liste
d'exclusions Defender qui mentionne \Users\Public\ est presque
toujours soit mauvaise configuration soit persistance.
Phase 3 (présente)
AutoRun de cmd.exe, User Shell Folders, historique de lecteurs
mappés, usage Sysinternals, LastKey Regedit, paramètres IE, Active
Setup, Browser Helper Objects, Notify Winlogon, AppInit_DLLs,
tâches planifiées (TaskCache), groupes Svchost, RunOnce machine,
Run WOW6432, cartes réseau, politique d'exécution PowerShell,
ShellServiceObjectDelayLoad, BootExecute, KnownDLLs, Terminal
Services/RDP, profils de pare-feu, paramètres TCP/IP, paramètres
NTFS, configuration Prefetch, volumes WPD/USB, et l'inventaire
d'applications Amcache.
Le plugin TaskCache est celui à connaître ici. Les tâches planifiées
sont stockées à deux endroits : en XML sous
C:\Windows\System32\Tasks\ et en données registre sous
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tasks\.
Les attaquants qui manipulent l'un oublient parfois l'autre. Comparer
les deux moitiés attrape l'astuce.
Phase 4 (présente)
ShellBags (décodage heuristique
ITEMIDLIST, NTUSER + UsrClass), MUICache, extensions shell approuvées,
état StartupApproved, politiques UAC, statut Defender, WDigest,
fournisseurs de sécurité, routes persistantes, sécurité RDP/NLA, le SID
machine et de domaine principal LSA (polacdms), la stratégie d'audit
héritée (auditpol), plus le fan-out par ruche pour que chaque
NTUSER.DAT/UsrClass.dat chargée soit analysée séparément.
Cette phase ajoute aussi les artefacts de contexte appareil/identité :
appareils Bluetooth appairés (bthport, avec heures de dernière
détection/connexion), imprimantes installées (printers), identifiant
client Windows Update et heures de dernier détecter/installer
(susclient), état de désactivation de la Restauration système
(disablesr), entrées de traçage RAS/WinINet qui signalent les
binaires capables de réseau (tracing), historique de stratégie de
groupe appliquée (gpohist), heures de dernier accès des jump lists par
application (jumplistdata), et comptes OneDrive configurés
(onedrive).
ShellBags est le plugin le plus complexe du catalogue. Le décodeur
heuristique gère les schémas ITEMIDLIST courants y compris les bags de
média amovibles ; il ne gère pas chaque cas limite que le format
réserve. Pour des bags exotiques, vous voudrez peut-être encore
recouper avec ShellBagsExplorer d'Eric Zimmerman.
Le plugin WDigest est petit mais compte : si UseLogonCredential=1
est défini sous
HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\Wdigest\,
l'hôte a été configuré pour mettre en cache des identifiants en clair
dans lsass.exe. C'est un facilitateur de vol d'identifiants, point.
Total aujourd'hui : ~143 plugins sur NTUSER, SOFTWARE, SYSTEM, SAM, SECURITY, USRCLASS, AMCACHE.
Phase 5 (présente) : la longue traîne
Les artefacts de contexte applicatif et hôte qui complètent le triage.
AppCertDLLs (appcertdlls — un mécanisme d'injection au moment de
CreateProcess), services et pilotes du mode sans échec (safeboot —
survit à une remédiation en safe-boot), fabricant/modèle OEM
(oeminfo), produits installés via MSI (installed_products),
distributions Linux WSL (wsl), fond d'écran du bureau (wallpaper —
indicateur de note de rançon), composants logiciels MMC récents
(mmc), historique des chemins 7-Zip (sevenzip), sessions WinSCP
enregistrées (winscp — preuve d'accès distant / mouvement latéral), et
fichiers récents Adobe Reader (adoberdr). Le décodeur Shimcache lit
désormais aussi le magasin binaire Windows 7 0xBADC0FEE, pas seulement
les entrées à signature Win8/10.
Les artefacts de stratégie de sécurité complètent l'ensemble :
associations de fichiers par défaut (fileexts — détournement
UserChoice), moteurs de recherche du navigateur (searchscopes),
exécutable de l'économiseur d'écran (screensaver — vecteur de
persistance à l'ouverture de session), AppLocker (applocker) et
stratégies de restriction logicielle (srp_codeid), serveurs VNC
installés (vnc), stratégie de jeton UAC distant (remote_uac —
LocalAccountTokenFilterPolicy, facilitateur de pass-the-hash), et
renforcement de l'ordre de recherche des DLL (dllsearch). Pour compléter
les vecteurs de persistance par chargement de DLL au démarrage : paquets
LSA (lsa_packages — DLL d'authentification/notification/sécurité, dont la
persistance par filtre de mot de passe), moniteurs de ports d'impression
(print_monitors), fournisseurs W32Time (time_providers), et DLL
d'assistance netsh (netsh_helpers). Chaque artefact horodaté alimente
aussi une chronologie fusionnée exportable en CSV, au format TLN (délimité
par des barres verticales) et en bodyfile TSK/mactime pour la chaîne
d'outils log2timeline standard.
Phase 6+ (prévue)
La stratégie d'audit granulaire (sous-catégories) sur Vista+ (qui réside
dans LSA/audit.csv plutôt que dans une valeur de ruche décodable), les
clés d'index Windows Search, et la longue traîne de l'ensemble de plus
de 200 plugins RegRipper. Le compte de 200+ inclut beaucoup de plugins
très spécifiques à la version (clés Office 2007, versions
IE/Edge précises, services disparus) que j'ai triés en "à livrer plus
tard" plutôt qu'ignorer.
Si vous avez une ruche dans la nature qui produit une sortie dans RegRipper mais pas ici, c'est le rapport de bug que je veux voir. Ouvrez une issue avec un échantillon de ruche assaini et la sortie RegRipper, et le plugin manquant remonte la file.
Pour aller plus loin
- Harlan Carvey, RegRipper : l'implémentation canonique et la meilleure référence vivante pour ce que fait chaque plugin.
- Andrea Fortuna, index des plugins RegRipper : la référence croisée non officielle que beaucoup de praticiens utilisent.
- Maxim Suhanov, yarp : pour comprendre le format de ruche sous-jacent que les plugins interrogent.