SDelete v2.04

Par Mark Russinovich

Publié : 25 novembre 2020

TéléchargerSDelete(518 Ko)

Introduction

L’une des fonctionnalités de conformité C2 (Win2K) de Windows NT/2000 est qu’elle implémente la protection contre la réutilisation des objets. Cela signifie que lorsqu’une application alloue de l’espace de fichier ou de la mémoire virtuelle, elle ne peut pas afficher les données précédemment stockées dans les ressources allouées par Windows NT/2K. Windows NT remplit la mémoire et supprime les secteurs sur le disque où un fichier est placé avant de présenter un type de ressource à une application. Toutefois, la réutilisation d’objets ne dicte pas que l’espace occupé par un fichier avant sa suppression ne soit supprimé. En effet, Windows NT/2K est conçu avec l’hypothèse que le système d’exploitation contrôle l’accès aux ressources système. Toutefois, lorsque le système d’exploitation n’est pas actif, il est possible d’utiliser des éditeurs de disques bruts et des outils de récupération pour afficher et récupérer les données libérées par le système d’exploitation. Même lorsque vous chiffrez des fichiers avec efS (Encrypting File System) de Win2K, les données de fichier non chiffrées d’origine d’un fichier sont laissées sur le disque après la création d’une nouvelle version chiffrée du fichier.

La seule façon de s’assurer que les fichiers supprimés, ainsi que les fichiers que vous chiffrez avec EFS, sont sûrs de la récupération consiste à utiliser une application de suppression sécurisée. Les applications de suppression sécurisée remplacent les données sur disque d’un fichier supprimé à l’aide de techniques qui sont montrées pour rendre les données de disque irrécupérables, même à l’aide de la technologie de récupération qui peut lire des modèles dans un média magnétique qui révèlent des fichiers faiblement supprimés. SDelete (Suppression sécurisée) est une telle application. Vous pouvez utiliser SDelete pour supprimer en toute sécurité les fichiers existants, ainsi que pour effacer en toute sécurité toutes les données de fichier qui existent dans les parties non allouées d’un disque (y compris les fichiers que vous avez déjà supprimés ou chiffrés). SDelete implémente le département de la Défense qui efface et assainit la norme DOD 5220.22-M pour vous donner la confiance qu’une fois supprimées avec SDelete, vos données de fichier ont disparu pour toujours. Notez que SDelete supprime en toute sécurité les données de fichier, mais pas les noms de fichiers situés dans l’espace disque libre.

Utilisation de SDelete

SDelete est un utilitaire de ligne de commande qui prend un certain nombre d’options. Dans une utilisation donnée, il vous permet de supprimer un ou plusieurs fichiers et/ou répertoires, ou de nettoyer l’espace libre sur un disque logique. SDelete accepte les caractères génériques dans le répertoire ou le spécificateur de fichier.

Utilisation :

sdelete [-p passes] [-r] [-s] [-q] <fichier ou répertoire> [...]

sdelete [-p passes] [-z|-c [percent free]] <lettre de lecteur [...]>

sdelete [-p passes] [-z|-c] numéro de <disque physique>

Paramètre Description
-c Espace libre propre. Spécifiez une quantité d’espace disponible pour une utilisation par un système en cours d’exécution.
-p Spécifie le nombre de passes de remplacement (la valeur par défaut est 1).
-r Supprimez Read-Only attribut.
-s Récursivité des sous-répertoires.
-z Espace libre zéro (adapté à l’optimisation des disques virtuels).
-nobanner N’affichez pas la bannière de démarrage et le message de copyright.

Fonctionnement de SDelete

La suppression sécurisée d’un fichier qui n’a pas d’attributs spéciaux est relativement simple : le programme de suppression sécurisée remplace simplement le fichier par le modèle de suppression sécurisée. Ce qui est plus difficile, c’est de supprimer en toute sécurité des fichiers compressés, chiffrés et épars windows NT/2K, et de nettoyer en toute sécurité les espaces libres de disque.

Les blocs de 16 clusters compressés, chiffrés et partiellement alloués sont gérés par NTFS. Si un programme écrit dans une partie existante d’un tel fichier NTFS alloue de nouveaux espaces sur le disque pour stocker les nouvelles données et après l’écriture des nouvelles données, désalloue les clusters précédemment occupés par le fichier. NTFS adopte cette approche conservatrice pour des raisons liées à l’intégrité des données et, dans le cas de fichiers compressés et épars, dans le cas où une nouvelle allocation est supérieure à ce qui existe (les nouvelles données compressées sont plus volumineuses que les anciennes données compressées). Par conséquent, le remplacement d’un tel fichier ne réussit pas à supprimer le contenu du fichier du disque.

Pour gérer ces types de fichiers , SDelete s’appuie sur l’API de défragmentation. À l’aide de l’API de défragmentation, SDelete peut déterminer précisément quels clusters sur un disque sont occupés par des données appartenant à des fichiers compressés, épars et chiffrés. Une fois que SDelete sait quels clusters contiennent les données du fichier, il peut ouvrir le disque pour un accès brut et remplacer ces clusters.

Le nettoyage de l’espace libre présente un autre défi. Étant donné que FAT et NTFS ne fournissent aucun moyen pour une application d’adresser directement l’espace libre, SDelete a l’une des deux options. La première est qu’elle peut, comme elle le fait pour les fichiers compressés, épars et chiffrés, ouvrir le disque pour un accès brut et remplacer l’espace libre. Cette approche souffre d’un problème important : même si SDelete a été codé pour être entièrement capable de calculer les parties d’espace libre des lecteurs NTFS et FAT (quelque chose qui n’est pas trivial), il risquerait de rencontrer des collisions avec les opérations de fichiers actives qui se produisent sur le système. Par exemple, supposons que SDelete détermine qu’un cluster est gratuit, et juste à ce moment le pilote de système de fichiers (FAT, NTFS) décide d’allouer le cluster pour un fichier qu’une autre application modifie. Le pilote du système de fichiers écrit les nouvelles données dans le cluster, puis SDelete s’exécute et remplace les données écrites fraîchement : les nouvelles données du fichier sont passées. Le problème est encore pire si le cluster est alloué pour les métadonnées du système de fichiers, car SDelete endommage les structures sur disque du système de fichiers.

La deuxième approche, et celle de SDelete , consiste à remplacer indirectement l’espace libre. Tout d’abord, SDelete alloue le plus grand fichier qu’il peut. SDelete effectue cette opération à l’aide d’E/S de fichiers non mis en cache afin que le contenu du cache du système de fichiers NT ne soit pas jeté et remplacé par des données inutiles associées au fichier d’espace de SDelete. Étant donné que les E/S de fichier non mises en cache doivent être alignées sur le secteur (512 octets), il peut y avoir un espace de reste qui n’est pas alloué pour le fichier SDelete même si SDelete ne peut pas augmenter davantage le fichier. Pour récupérer tout espace restant , SDelete alloue ensuite le plus grand fichier mis en cache qu’il peut. Pour ces deux fichiers , SDelete effectue un remplacement sécurisé, garantissant que tout l’espace disque qui était précédemment libre devient nettoyé en toute sécurité.

Sur les lecteurs NTFS, le travail de SDelete n’est pas nécessairement à travers une fois qu’il alloue et remplace les deux fichiers. SDelete doit également remplir toutes les parties libres existantes de NTFS MFT (table de fichiers maîtres) avec des fichiers qui s’intègrent dans un enregistrement MFT. Un enregistrement MFT est généralement de taille de 1 Ko, et chaque fichier ou répertoire d’un disque nécessite au moins un enregistrement MFT. Les petits fichiers sont stockés entièrement dans leur enregistrement MFT, tandis que les fichiers qui ne correspondent pas à un enregistrement sont alloués à des clusters en dehors du MFT. Tout SDelete doit faire pour s’occuper de l’espace MFT libre est d’allouer le plus grand fichier qu’il peut : lorsque le fichier occupe tout l’espace disponible dans un enregistrement MFT NTFS empêche le fichier d’être plus volumineux, car il n’y a pas de clusters libres laissés sur le disque (ils sont conservés par les deux fichiers SDelete précédemment alloués). SDelete répète ensuite le processus. Lorsque SDelete ne peut plus créer de fichier, il sait que tous les enregistrements précédemment gratuits dans le MFT ont été entièrement remplis avec des fichiers remplacés en toute sécurité.

Pour remplacer les noms de fichiers d’un fichier que vous supprimez, SDelete renomme le fichier 26 fois, chaque fois que vous remplacez chaque caractère du nom du fichier par un caractère alphabétique successif. Par exemple, le premier renommage de « foo.txt » serait « AAA ». AAA ».

La raison pour laquelle SDelete ne supprime pas de manière sécurisée les noms de fichiers lors du nettoyage de l’espace libre du disque est que la suppression de ces noms nécessiterait une manipulation directe des structures de répertoires. Les structures de répertoire peuvent avoir de l’espace libre contenant des noms de fichiers supprimés, mais l’espace de répertoire libre n’est pas disponible pour l’allocation à d’autres fichiers. Par conséquent, SDelete n’a aucun moyen d’allouer cet espace libre afin qu’il puisse le remplacer en toute sécurité.

TéléchargerSDelete(518 Ko)

S’exécute sur :

  • Client : Windows Vista et versions ultérieures
  • Serveur : Windows Server 2008 et versions ultérieures
  • Nano Server : 2016 et versions ultérieures