Le format NTFS

 

NTFS est un format de fichier Windows apparu avec Windows XP. Il est toujours possible d'utiliser le système FAT32 bien sûre, mais NTFS offre plusieurs nouvelles fonctionnalités et pas des moindres. NTFS permet d'avoir des fichiers beaucoup plus volumineux et des mécanismes de sécurité ont vu le jour.

Généralité

La taille des fichiers

Premièrement, la taille des fichiers maximale avec NTFS est de 16To (256To pour les partitions) contre 4Go au format FAT32 (2To pour les partitions).

Mécanismes de sécurité

Il est maintenant possible d'attribuer des droits d'accès sur les fichiers, comme sur un système UNIX, avantage non négligeable d'un point de vue sécurité.

 
Crédit : pcastuces.com

Par ailleurs, le format NTFS permet la restauration de fichiers grâce à la redondance de sa MFT et du secteur de boot, détaillés par la suite.

Les fonctionnalités apportées par NTFS

Les flux (datastream)

L'une des particularité du format NTFS est qu'un fichier à la possibilité de contenir des données additionnelles, en plus de son contenu : les méta-données. On entendra parler de flux de données ou datastream.

Un fichier NTFS possède deux types de flux : 

  • Le flux anonyme :$DATA, flux par défaut de tous les fichiers. Il contient les données de ce dernier. Il est appelé ainsi car le nom du flux est vide "".
  • Les flux additionnels (alternate datastream - ADS). Ces flux sont nommés et peuvent contenir des informations supplémentaires sur un fichier comme le nom de l'auteur, le logiciel utilisé ou encore la durée d'un fichier audio/vidéo.

 Les flux peuvent être créés avec Windows de cette façon : 

echo <texte> > c:\fichier.txt:<nom_du_flux>

Ils peuvent être lus sur Windows grâce à PowerShell avec Get-Item et l'argument -Stream :


Crédit : malware.news

La suite Sysinternals de Microsoft propose également l'outil Streams.exe permettant de voir si les flux contenus par un fichier mais ne permet pas d'en lire le contenu.

Les flux sont très utiles pour ajouter de l'information à un fichier, mais cette fonctionnalité peut être abusée afin d'y cacher des malwares.

Typiquement, en cachant un programme malveillant dans le flux additionnel d'un fichier, il suffirait alors de lancer le malware de cette manière :

c:> type c:\tmp\malware.exe > file.txt:malware
c:> start file.txt:malware

La journalisation

Avec le format NTFS, un système de journalisation est apparu. Windows enregistre toute activité sur le système de fichier dans un fichier de journalisation appelé $Extend\$UsnJrnl. Ce fichier est présent sur chaque volume. Pour être précis, c'est le flux de donnée $J qui contient l'historique des activités sur un fichier.

La date de création de ce fichier correspond à la date de création du volume.

 L'$UsnJrnl comporte deux flux :

  • $Max (32bit): contient les meta-données de l'$UrnJrnl tel que sa taille maximale
  • $J : contient l'historique de changement des fichiers

Il est alors possible de retrouver les informations suivantes :

  • le timestamp du changement effectué sur le fichier
  • le nom du fichier
  • les attributs du fichiers
  • le numéro de l'entrée du fichier dans la MFT
  • le numéro de l'entrée du dossier parent dans la MFT
  • le numéro USN de l'entrée elle-même
  • la raison du changement (création, suppression...)
  • les informations concernant la source du changement

 https://www.passmark.com/images/forumimages/OSF_MFT_Lookup_USNJrnl.png 

Crédit : forensicfocus.com

Il existe plusieurs outils permettant de parser l'UsnJrnl:$J tel que ExtractUsnJrnl de Joakim Schicht ou encore MFTExplorer d'Eric Zimmerman.

 MFT

La MFT est une structure spécifique du format NTFS. C'est une table permettant l'indexation des fichiers sur le disque située juste après le secteur de boot mais est également dupliquée au milieu du disque afin d'en avoir une sauvegarde en cas de plantage.

Fonctionnement du système de fichiers NTFS 

Crédit : malekal.com

Pour chaque fichier d'un volume, on trouve :

  • l'emplacementt du fichier dans son répertoire
  • l'emplacement physique du fichier sur le disque
  • les meta-data du fichier (timestamp, taille...)

Le contenu de la MFT peut être lu avec l'outil fsutil par exemple.

Afficher les informations MFT et NTFS avec fsutil 

Crédit : malekal.com

Le MBR (Master Boot Record)

Le premier secteur d'un disque dur contient la MBR, Master Boot Record. Elle-même contient :

  • le code d'amorcage que le BIOS est chargé d'exécuter
  • les messages d'erreur
  • la table des partitions

Il n'existe qu'une seule MBR par disque physique. Si le disque possède des partition étendues, le premier secteur de chacune de ces partitions étendues contiendra une EBR, Extended Boot Record), l'équivalent de la MBR mais pour les partitions logiques. Si en revanche le disque contiens des partitions logiques, le premier secteur contiendra une VBR.

unddbisap8 

Crédit : poloastucien.free.fr

La MBR fait 512 octets, dont les deux derniers sont toujours 55 AA, c'est la signature disque (magic number de la MBR). Cette signature marque la fin de la MBR et permet d'aller chercher le BIOS afin de lancer le code d'amorçage. Il est donc également présent dans les EBR.

mbrie6Crédit : poloastucien.free.fr


A noter que sur FAT, la sinature 55 AA est également présente, mais à la fin du secteur de boot, puisqu'il n'y a pas de MBR, afin de lancer le BIOS.

Le secteur de boot

Il existe egalement autant de secteur de boot que de partitions (physique ou logique). Il contient l'adresse de la MFT ainsi que les caractéristique de la partition

Le secteur de boot fait la taille de 16 secteurs pour le format NTFS (contre 32 pour FAT).

Understanding Master Boot Record (MBR) 

Crédit : knowitlikepro.com