Microsoft PowerShell vous permet de suivre les modifications du registre Windows

PowerShell

Une astuce pratique a été partagée en ligne cette semaine, montrant comment vous pouvez utiliser PowerShell pour surveiller les modifications apportées au registre Windows au fil du temps.

Au fur et à mesure que les mises à jour Windows, les installations d’applications, les modifications de paramètres et les logiciels malveillants modifient constamment le registre Windows, ce mode vous permettrait de repérer rapidement ce qui a été modifié, vous permettant de diagnostiquer les problèmes, de supprimer les entrées malveillantes et de voir quels paramètres ont été modifiés.

Cette semaine, compte Twitter populaire sur la sécurité et la technologie SwiftOnSecurityont tweeté qu’ils aimeraient voir un mode Éditeur de registre Windows qui afficherait toutes les entrées de registre qui n’ont pas été créées par défaut.

En réponse au tweet de Swift, l’architecte de sécurité principal de Microsoft dans Azure Security, Lee Holmes, a tweeté un exemple de la façon dont vous pourriez faire quelque chose de similaire dans PowerShell.

1651596906 165 Microsoft PowerShell vous permet de suivre les modifications du registre

L’exemple de Holmes montre comment vous pouvez utiliser PowerShell pour répertorier toutes les clés de registre Windows existantes et les stocker dans une variable $snapshot. Ensuite, à un moment ultérieur, vous créez un instantané des clés de registre actuelles et les stockez dans la variable $current.

L’exemple compare ensuite le contenu de ces variables pour déterminer quelles clés de registre ont été ajoutées depuis que vous avez pris le premier instantané.

Bien que ce ne soit pas précisément ce que Swift recherchait, cela nous oriente dans la bonne direction sur la façon dont vous pouvez surveiller les modifications du registre à partir d’une nouvelle installation de Windows, ou au moins à un moment donné dans votre installation Windows existante.

De plus, comme l’exemple de Holmes utilise des variables qui seront supprimées lors du redémarrage d’un appareil, il est préférable de stocker vos instantanés de registre dans des fichiers pour les comparer ultérieurement, ce que nous décrivons ci-dessous.

Comparaison des instantanés de registre à l’aide de PowerShell

En utilisant l’exemple de Holmes, EZpublish-france.fr a joué avec d’autres façons d’enregistrer des instantanés du registre Windows et a découvert que la modification de l’exemple de Holmes pour enregistrer des instantanés dans un fichier offre la plus grande polyvalence.

En utilisant des fichiers, vous pouvez créer des instantanés à différents moments dans le temps pour les comparer avec des instantanés ultérieurs. Avec les fichiers, vous pouvez également les comparer aux instantanés du registre créés sur d’autres appareils.

Pour commencer, vous devez créer un instantané de base des clés de registre HKLM et HKCU actuelles que vous comparerez aux futurs instantanés. Idéalement, mais pas nécessaire, vous généreriez ces instantanés de base juste après l’installation de Windows.

Pour créer les instantanés de base du registre Windows, vous devez exécuter les commandes PowerShell suivantes dans une invite Windows PowerShell (admin) pour vous assurer que vous pouvez accéder à toutes les clés de registre :

dir -rec -erroraction ignore HKLM: | % name > Base-HKLM.txt
dir -rec -erroraction ignore HKCU: | % name > Base-HKCU.txt

Ces commandes créeront les fichiers d’instantané Base-HKLM.txt et Base-HKCU.txt dans le dossier actuel.

Dans les tests de EZpublish-france.fr sur les versions fraîchement installées de Windows 11 et Windows 10, ces instantanés ont les tailles suivantes :

Instantanés du registre Windows 11 :

HKEY_LOCAL_MACHINE (HKLM) : 82 Mo
HKEY_CURRENT_USER (HKCU) : 2,4 Mo

Instantanés du registre Windows 10 :

HKEY_LOCAL_MACHINE (HKLM) : 81 Mo
HKEY_CURRENT_USER (HKCU) : 1,45 Mo

Une fois que vous avez créé vos instantanés de base, vous pouvez maintenant installer des programmes ou utiliser votre ordinateur comme d’habitude.

Après un certain temps, si vous souhaitez comparer le registre Windows actuel avec vos instantanés de base, vous pouvez créer de nouveaux instantanés à l’aide de ces commandes dans une invite d’administration PowerShell :

dir -rec -erroraction ignore HKLM: | % name > Current-HKLM-$(get-date -f yyyy-MM-dd).txt
dir -rec -erroraction ignore HKCU: | % name > Current-HKCU-$(get-date -f yyyy-MM-dd).txt

Remarque : les commandes ci-dessus insèrent la date dans les noms de fichier de l’instantané actuel afin que vous puissiez déterminer quand l’instantané a été créé.

Maintenant que vous avez créé des instantanés de base et des instantanés actuels, vous pouvez les comparer à l’aide de la commande PowerShell suivante :

Compare-Object (Get-Content -Path .Base-HKCU.txt) (Get-Content -Path .[current_snapshot_file_name])

La commande Compare-Object comparera l’instantané de base avec l’instantané actuel et affichera ce qui a été modifié, comme on peut le voir ci-dessous. La colonne SideIndicator indique quel fichier contient la modification.

Comparaison des instantanés de registre de base et actuels
Comparaison des instantanés de registre de base et actuels
La source: EZpublish-france.fr

Il convient de noter que cette méthode compare uniquement les clés de registre Windows et ne compare pas ses valeurs, qui sont généralement modifiées par les paramètres Windows et les logiciels malveillants.

L’exportation de valeurs augmenterait également considérablement la taille de vos instantanés et nécessiterait un script plus compliqué pour les comparer correctement. Par exemple, l’instantané HKCU de base avec les valeurs de registre sur une nouvelle installation de Windows 10 passe de 1,45 Mo à 11,6 Mo, soit 8 fois plus.

Cependant, la comparaison des clés de registre reste un outil utile que les administrateurs peuvent automatiser pour mieux résoudre les problèmes sur les appareils qu’ils gèrent.