Accès aux fichiers
Descripteurs de sécurité $Secure:$SDS
Fiche $Secure:$SDS : magasin NTFS des descripteurs de sécurité, index $SDH et $SII, Security ID du $SI, SID propriétaire, ACL, collecte et MFTECmd.
- Emplacement
- C:\$Secure:$SDS
- Prouve
- Quel compte possède un fichier et quelles permissions (ACL) s'y appliquaient
- Horodatages
- Aucun dans $SDS ; dater les changements de droits via l'heure $SI de modification d'enregistrement et les enregistrements USN SECURITY_CHANGE, UTC
- Rétention
- Descripteurs partagés, conservés tant qu'un fichier les utilise ; aucune commande ne vide $SDS, seul un reformatage du volume
- Accès
- Métadonnée NTFS illisible via l'API Windows : collecte en NTFS brut en administrateur (KAPE ou Velociraptor $SDS)
- Preuve de
- Accès aux fichiers
- Type
- Fichier / système de fichiers
- Windows
- XPVista / 78 / 8.11011
- Cible KAPE
- $SDS
- Velociraptor
- Windows.Triage.Targets:$SDS
Outils
Comparer tous les outilsPrésentation
Depuis NTFS 3.0 (Windows 2000), les descripteurs de sécurité ne sont plus stockés dans l'enregistrement MFT de chaque fichier. Ils sont dédupliqués dans un fichier système unique, $Secure (enregistrement MFT 9), et chaque fichier ne conserve qu'un Security ID de 32 bits dans son attribut $STANDARD_INFORMATION. $Secure comporte trois parties :
$SDS(flux de données) : les descripteurs eux-mêmes, chacun avec son hash, son Security ID et son décalage.$SII(index) : associe un Security ID au décalage et à la taille du descripteur dans$SDS.$SDH(index) : associe le hash d'un descripteur à son décalage, pour que NTFS réutilise un descripteur existant au lieu de le dupliquer.
Pour l'enquêteur, $SDS permet de répondre à « à qui appartient ce fichier et qui pouvait y accéder » à partir d'une image disque, sans monter le volume ni interroger Windows.
Emplacement
| Version de Windows | Chemin | Remarques |
|---|---|---|
| XP à 11 (tout volume NTFS) | <racine du volume>\$Secure:$SDS | Flux de données nommé de l'enregistrement MFT 9 |
| XP à 11 | <racine du volume>\$Secure:$SII, $Secure:$SDH | Attributs d'index (enregistrements INDX) du même fichier |
$Secure est à la fois un fichier (il possède un flux $DATA) et un objet de type dossier (il possède des attributs d'index), ce qui trompe certains collecteurs basés sur des motifs de chemin. Les copies collectées sont en général nommées $Secure_$SDS.
Ce que l'artefact prouve
- Propriété : le SID propriétaire de tout fichier dont vous connaissez le Security ID grâce à la $MFT. Résolvez ensuite le SID en compte avec la SAM ou les données du domaine.
- Permissions : la DACL (qui peut lire, écrire, exécuter) et la SACL (audit) appliquées au fichier.
- Contrôles d'accès inhabituels : fichiers avec des ACE explicites « Tout le monde : contrôle total », ou fichiers possédés par un compte utilisateur dans des dossiers système.
- Il ne prouve pas que le propriétaire a créé ou ouvert le fichier. La propriété peut être prise ou modifiée, et les fichiers écrits par des processus élevés ou système appartiennent souvent à
AdministrateursouSYSTEMplutôt qu'à l'utilisateur connecté.$SDSne contient aucun horodatage.
Champs clés
| Champ | Signification |
|---|---|
| Hash | Hash du descripteur, utilisé par $SDH |
| Security ID | Identifiant référencé par le champ SecurityId de $STANDARD_INFORMATION |
| Décalage / taille | Position et longueur de l'entrée dans $SDS |
| SID propriétaire | Compte ou groupe propriétaire de l'objet |
| SID de groupe | Groupe principal |
| Indicateurs de contrôle | Parties présentes (DACL, SACL), héritage et protection |
| ACE de la DACL | Entrées d'autorisation ou de refus, avec SID et masques d'accès |
| ACE de la SACL | Entrées d'audit |
Horodatages
| Horodatage | Positionné quand | Format | Pièges |
|---|---|---|---|
Aucun dans $SDS | - | - | Les descripteurs ne sont pas datés ; utilisez la date « changement d'enregistrement » $SI du fichier et les enregistrements SECURITY_CHANGE (0x800) du journal USN pour dater un changement de permissions |
Rétention et effacement
- Un même descripteur sert à tous les fichiers ayant le même propriétaire et la même ACL : le flux contient bien moins d'entrées que le volume ne compte de fichiers.
- Modifier le propriétaire ou l'ACL d'un fichier lui attribue un autre Security ID (un descripteur identique existant ou un nouveau) ; l'ancien descripteur reste dans le flux si d'autres fichiers l'utilisent.
- L'enregistrement MFT d'un fichier supprimé conserve son Security ID : vous pouvez donc tenter de retrouver le propriétaire dans
$SDS. - Aucune commande utilisateur ne vide
$SDS; il n'est reconstruit qu'au reformatage du volume.
Collecte
- Cible KAPE :
$SDS(collecte$Secure:$SDS; incluse aussi dansFileSystem) - Velociraptor (
Windows.Triage.Targets) :$SDS. L'artefact dédiéWindows.Triage.SDSremonte le flux en lisant directement l'enregistrement MFT 9, ce qui évite le problème de motifs évoqué plus haut. - Commandes natives :
$SDSest illisible via l'API Windows. Sur un système en fonctionnement, Windows indique toutefois le propriétaire et l'ACL actuels d'un fichier, utiles pour comparer avec l'analyse hors ligne :
Get-Acl C:\Users\Public\tool.exe | Format-List Owner,AccessToString
icacls C:\Users\Public\tool.exe
cmd /c dir /q C:\Users\Public
Outils d'analyse
- MFTECmd (Eric Zimmerman) :
MFTECmd.exe -f E:\C\$Secure_$SDS --csv E:\outliste chaque descripteur avecId, SID propriétaire et de groupe, indicateurs de contrôle, nombre et types d'ACE.--ds 0x100détaille un Security ID. Joignez la colonneIdà la colonneSecurityIdde la sortie$MFTde MFTECmd. - Velociraptor :
Windows.Triage.SDSpour collecter le flux sur les postes en fonctionnement en vue d'une analyse hors ligne.
Conseils d'investigation
- Pour chaque fichier suspect de la sortie $MFT, relevez son
SecurityId, cherchez le SID propriétaire dans le CSV$SDS, puis associez ce SID à un profil utilisateur : un moyen rapide d'attribuer des outils déposés à un compte. - Regroupez les fichiers par Security ID : un dossier malveillant dont tous les fichiers partagent un descripteur inhabituel (par exemple possédés par un utilisateur standard dans
C:\Windows) ressort nettement. - Cherchez les descripteurs accordant l'écriture à
Tout le monde,UtilisateursouUtilisateurs authentifiéssur des exécutables ou binaires de service : signe de permissions affaiblies pour de la persistance ou une élévation de privilèges. - Datez la modification d'ACL grâce aux enregistrements
SECURITY_CHANGEdu journal USN. - Les enregistrements du journal USN portent aussi un
SecurityId: des fichiers visibles seulement dans le journal (déjà supprimés, voir aussi le slack $I30) peuvent encore être rattachés à un propriétaire.
Artefacts liés
- 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.
- Ruche SAM et comptes utilisateursFiche ruche SAM : comptes locaux, RID, dernière connexion et changement de mot de passe, compteurs, groupes, ProfileList et ID d'événements liés aux comptes.
- Attributs d'index $I30Fiche $I30 : index de dossiers NTFS ($INDEX_ROOT, $INDEX_ALLOCATION), enregistrements INDX, horodatages, entrées de slack de fichiers supprimés.
Termes du glossaire
- Identifiant de sécurité (SID)La valeur unique qui identifie utilisateurs, groupes et ordinateurs sous Windows, comme S-1-5-21-…-1001, présente dans le Registre et les journaux.
- NTFSNTFS est le système de fichiers par défaut de Windows ; ses fichiers de métadonnées ($MFT, $LogFile, $UsnJrnl) sont des sources forensiques centrales.
- Master File Table (MFT)L'index de métadonnées NTFS, stocké dans `$MFT`, qui contient un enregistrement par fichier et répertoire d'un volume.