Exécution
Sous-système Windows pour Linux (WSL)
Fiche WSL : clé de registre Lxss, rootfs WSL1 ou ext4.vhdx WSL2, bash_history des distributions, traces d'exécution de wsl.exe, partage wsl$ et évasion.
- Emplacement
- HKCU\Software\Microsoft\Windows\CurrentVersion\Lxss
- Prouve
- Une distribution Linux a été installée pour un utilisateur, où se trouve son système de fichiers, et des binaires WSL ont été exécutés
- Horodatages
- LastWrite des sous-clés Lxss (FILETIME, UTC), dates Prefetch/Amcache de wsl.exe (UTC), dates des inodes Linux dans la distribution (epoch Unix, UTC)
- Rétention
- Les distributions restent jusqu'à leur désinscription (wsl --unregister supprime le rootfs ou ext4.vhdx) ; les traces côté Windows suivent la rétention du Prefetch et d'Amcache
- Accès
- NTUSER.DAT de l'utilisateur et dossier de la distribution ; ext4.vhdx est verrouillé tant que la VM WSL2 tourne : arrêter WSL ou copier depuis VSS
- Type
- Registre
- Windows
- 1011
- Cible KAPE
- RegistryHivesUserPrefetchAmcache
- Velociraptor
- Windows.Triage.Targets:RegistryHivesUserPrefetchAmcache
Outils
Comparer tous les outils- Registry ParserNavigateur
- Prefetch ParserNavigateur
- Amcache ParserNavigateur
- Disk Image ParserNavigateur
- ShellBags ParserNavigateur
- LNK ParserNavigateur
- Registry ExplorerGUI
- PECmdCLI
- AmcacheParserCLI
- Arsenal Image MounterGUI
- The Sleuth KitCLI · open source
- PlasoCLI · open source
- VelociraptorPlateforme · open source
Présentation
Le sous-système Windows pour Linux exécute un espace utilisateur Linux sur Windows 10 et 11. WSL1 traduit les appels système Linux via un pilote noyau (lxss.sys / lxcore.sys) et stocke le système de fichiers Linux sous forme de fichiers NTFS ordinaires. WSL2 fait tourner un vrai noyau Linux dans une VM utilitaire Hyper-V légère, avec le système de fichiers de la distribution dans un disque virtuel ext4.vhdx. Pour l'enquêteur, une distribution WSL est un second système d'exploitation sur le même disque : son historique shell, ses clés SSH, ses tâches cron et ses outils déposés sont des artefacts Linux, et la plupart de la télémétrie Windows ne voit rien de ce qui s'y passe.
Emplacement
| Source | Chemin |
|---|---|
| Distributions enregistrées | HKCU\Software\Microsoft\Windows\CurrentVersion\Lxss\{GUID} dans le NTUSER.DAT de chaque utilisateur |
| Distribution par défaut | Valeur DefaultDistribution sous ...\Lxss |
| Dossier d'une distribution Store | %LOCALAPPDATA%\Packages\<PackageFamilyName>\LocalState\ (par exemple CanonicalGroupLimited.Ubuntu..._79rhkp1fndgsc) |
| Système de fichiers WSL1 | <BasePath>\rootfs\ (fichiers NTFS, métadonnées Linux dans des attributs étendus) |
| Système de fichiers WSL2 | <BasePath>\ext4.vhdx |
| Distributions importées | N'importe quel dossier passé à wsl --import ; lisez toujours BasePath |
| Configuration WSL | %USERPROFILE%\.wslconfig ; dans la distribution /etc/wsl.conf |
| Binaires Windows | C:\Windows\System32\wsl.exe, wslhost.exe, wslconfig.exe, bash.exe ; WSL distribué par le Store sous C:\Program Files\WSL\ sur les versions récentes |
Ce que l'artefact prouve
- Installation : une sous-clé Lxss montre qu'une distribution a été enregistrée pour cet utilisateur, avec son nom et son emplacement de stockage.
- Exécution de WSL : les entrées Prefetch et Amcache de
wsl.exe,bash.exe,wslhost.exeou du lanceur de la distribution (ubuntu.exe,kali.exe) prouvent que WSL a été démarré, et quand. - Activité Linux :
.bash_history,/var/log,/tmp,/etc/passwd, crontabs et éléments SSH dans la distribution montrent ce qui a été fait côté Linux. - Échanges de fichiers : des chemins comme
\\wsl$\Ubuntu\home\...ou\\wsl.localhost\...dans les ShellBags, les fichiers LNK et les Jump Lists prouvent que des applications Windows ont parcouru le système de fichiers Linux. Côté Linux,/mnt/c/...dans l'historique shell montre le sens inverse.
Il ne fournit pas de preuve Windows commande par commande. Les processus Linux lancés sous WSL ne génèrent pas de Prefetch pour les binaires ELF, et sous WSL2 ils tournent dans une VM, hors de portée de la plupart de la télémétrie de processus Windows. L'absence d'historique Linux est aussi une preuve faible : HISTFILE peut être désactivé, et l'historique n'est écrit qu'à la fermeture propre du shell.
Champs clés
| Valeur (Lxss\{GUID}) | Signification |
|---|---|
DistributionName | Nom utilisé par wsl -d (Ubuntu, kali-linux, nom d'import personnalisé) |
BasePath | Dossier contenant rootfs\ (WSL1) ou ext4.vhdx (WSL2) |
PackageFamilyName | Paquet Store ; vide pour les distributions wsl --import, ce qui mérite d'être noté |
DefaultUid | UID Linux utilisé à la connexion (0 = root par défaut) |
Flags | Champ de bits ; sur les versions actuelles, le bit 0x8 indique WSL2. Ne lisez pas la valeur Version comme la version de WSL : elle reflète le format du système de fichiers |
State | État d'enregistrement (1 = installée) |
Horodatages
- LastWrite des sous-clés Lxss (FILETIME, UTC) : enregistrement ou dernière modification de configuration (conversion, changement d'utilisateur par défaut).
- Prefetch / Amcache des binaires WSL : premiers et derniers lancements en UTC.
- ext4.vhdx : la date de modification $SI correspond à peu près à la dernière écriture de la VM WSL2 dans la distribution.
- Dans la distribution : dates des inodes ext4 (atime, mtime, ctime et crtime) en epoch Unix, UTC. Sous WSL1, les dates Linux sont stockées dans des attributs étendus NTFS à côté des horodatages NTFS habituels : les deux jeux coexistent et peuvent diverger.
Rétention et effacement
Une distribution persiste jusqu'à wsl --unregister <nom>, qui supprime le rootfs ou ext4.vhdx sans confirmation ; la clé Lxss disparaît avec. Le VHDX supprimé peut parfois être récupéré dans l'espace non alloué ou dans les clichés instantanés, et la $MFT comme le journal USN conservent son nom et sa date de suppression. Désinstaller l'application Store supprime aussi le dossier du paquet. Les traces d'exécution côté Windows suivent la rétention habituelle du Prefetch et d'Amcache.
Collecte
# Distributions enregistrées pour l'utilisateur courant
Get-ChildItem 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Lxss' |
ForEach-Object { Get-ItemProperty $_.PsPath } |
Select-Object PSChildName, DistributionName, BasePath, Flags, DefaultUid, PackageFamilyName
wsl --list --verbose
:: Arrêter la VM pour déverrouiller ext4.vhdx, puis le copier
wsl --shutdown
robocopy "%LOCALAPPDATA%\Packages\<PackageFamilyName>\LocalState" E:\case\wsl ext4.vhdx /COPY:DAT
Sur une image de triage, collectez le NTUSER.DAT de chaque utilisateur, les dossiers LocalState et tout BasePath personnalisé. Pour WSL1, copier rootfs avec les outils Windows fait perdre les permissions Linux et les attributs étendus : préférez une image brute ou un collecteur qui comprend NTFS.
Outils d'analyse
- Registry Explorer / RegRipper pour la clé Lxss dans les ruches hors ligne.
- PECmd et AmcacheParser pour l'exécution des binaires WSL.
- Arsenal Image Mounter,
qemu-nbdouguestmountsous Linux pour monterext4.vhdxen lecture seule ; The Sleuth Kit et Plaso (dfVFS) savent lire VHDX et ext4 directement. - Une fois monté, traitez-le comme un système Linux : historiques shell,
auth.log, crontabs,~/.ssh, journaux du gestionnaire de paquets. Les fiches de linuxforensics.app détaillent ces artefacts.
Conseils d'investigation
- Sur un serveur ou un poste de la finance, toute clé Lxss mérite une question. Vérifiez si la fonctionnalité facultative WSL ou
VirtualMachinePlatforma été activée récemment, et par qui. - Un
PackageFamilyNamevide avec unBasePathinhabituel signifie unwsl --importd'une archive personnalisée : les attaquants s'en servent pour apporter une distribution préconfigurée, outils déjà installés. - Les attaquants préfèrent WSL2 pour faire tourner des outils Linux (scanners, tunnels, outils de vol d'identifiants) hors de portée des hooks EDR Windows. Les connexions réseau de WSL2 semblent venir de l'adaptateur virtuel de la VM ; recoupez avec les journaux du pare-feu et SRUM pour
wslhost.exeou le processusvmmem/vmmemWSL. - Cherchez les chemins
\\wsl$et\\wsl.localhostdans les artefacts Windows, et/mnt/c/Users/dans l'historique Linux : c'est là que les données passent d'un monde à l'autre. - Un
DefaultUidà 0 signifie que la distribution se connecte en root, ce qui supprime les tracessudodeauth.log.
Artefacts liés
- 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.
- Amcache.hveFiche Amcache.hve : clés d'inventaire des fichiers et programmes, SHA-1, métadonnées PE, horodatages, et pourquoi une entrée ne prouve pas l'exécution.
- ShellBagsFiche ShellBags : clés BagMRU et Bags dans UsrClass.dat et NTUSER.DAT, shell items, horodatages des dossiers, dossiers supprimés et USB, analyse avec SBECmd.
- Fichiers de raccourci LNKFiche LNK : raccourcis du dossier Recent, première et dernière ouverture, horodatages de la cible, numéro de série, partage réseau et adresse MAC.
- Table de fichiers maîtres ($MFT)Fiche $MFT : enregistrements FILE, horodatages $SI et $FN, données résidentes, entrées supprimées, numéros de séquence, timestomping et MFTECmd.
- Journal USN ($UsnJrnl:$J)Fiche journal USN : $UsnJrnl:$J et $Max, champs, indicateurs Reason, référence parent, taille par défaut, rotation, fsutil et analyse avec MFTECmd.
- Images disque montées (ISO, IMG, VHD, VHDX)Fiche images disque montées : ISO/IMG/VHD/VHDX, événements VHDMP, MountedDevices, traces LNK et Jump Lists, failles Mark-of-the-Web et méthode de détection.
- Programmes installés (clés Uninstall, MSI, AppX)Fiche programmes installés : clés Uninstall, événements MSI 1033/11707, MSI en cache, paquets AppX, journaux winget et Amcache pour dater les installations.
Termes du glossaire
- NTUSER.DATLa ruche du Registre propre à chaque utilisateur, stockée dans son profil et chargée comme HKEY_CURRENT_USER, riche en traces d'activité.
- Anti-forensiqueTechniques visant à détruire, cacher ou falsifier des preuves : effacement de journaux, timestomping, wiping, suppression des clichés ou du journal USN.
- Preuve d'exécutionLes artefacts qui montrent qu'un programme s'est réellement exécuté sous Windows, et pas seulement qu'il était présent sur le disque.
- 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.
- Flux de données alternatif (ADS)Un flux $DATA nommé supplémentaire attaché à un fichier NTFS, invisible dans l'Explorateur, utilisé pour la Mark of the Web ou pour cacher des données.
Guides
- Preuves d'exécution : Prefetch, Amcache, BAM et autresProuver qu'un programme a tourné sous Windows, pas seulement existé : Prefetch, ShimCache, Amcache, BAM, UserAssist, SRUM, PCA, WER et 4688 comparés.
- Anti-forensique Windows : détecter les traces qui subsistentDétecter effacement de journaux, timestomping, suppression sécurisée, destruction des VSS et neutralisation de Defender, avec ATT&CK et les traces laissées.
- Activité utilisateur : ShellBags, fichiers LNK et Jump ListsProuver quels fichiers et dossiers un utilisateur Windows a ouverts, et quand : ShellBags, LNK, Jump Lists, clés MRU, Trust Records Office et Timeline.