SDelete v2.04

Von Mark Russinovich

Veröffentlicht: 25. November 2020

DownloadSDelete herunterladen(518 KB)

Einführung

Ein Feature von Windows NT/2000 (Win2K) C2-Compliance besteht darin, dass es den Objektverwendeschutz implementiert. Dies bedeutet, dass beim Zuweisen des Dateispeichers oder des virtuellen Arbeitsspeichers keine Daten angezeigt werden können, die zuvor in den Ressourcen gespeichert wurden, Windows NT/2K es zugewiesen wird. Windows NT null füllt Arbeitsspeicher und nullt die Sektoren auf dem Datenträger, in denen eine Datei platziert wird, bevor sie eine Ressource für eine Anwendung darstellt. Die Wiederverwendung des Objekts diktiert jedoch nicht, dass der Leerraum, den eine Datei belegt, bevor er gelöscht wird, null sein. Dies liegt daran, dass Windows NT/2K mit der Annahme konzipiert ist, dass das Betriebssystem den Zugriff auf Systemressourcen steuert. Wenn das Betriebssystem jedoch nicht aktiv ist, ist es möglich, rohe Datenträger-Editoren und Wiederherstellungstools zu verwenden, um Daten anzuzeigen und wiederherzustellen, die das Betriebssystem behandelt hat. Selbst wenn Sie Dateien mit win2K's Encrypting File System (EFS) verschlüsseln, wird die ursprüngliche nicht verschlüsselte Dateidaten auf dem Datenträger gespeichert, nachdem eine neue verschlüsselte Version der Datei erstellt wurde.

Die einzige Möglichkeit, sicherzustellen, dass gelöschte Dateien sowie Dateien, die Sie mit EFS verschlüsseln, sicher vor der Wiederherstellung sind, ist die Verwendung einer sicheren Löschanwendung. Sichere Löschanwendungen überschreiben die On-Disk-Daten einer gelöschten Datei mithilfe von Techniken, die gezeigt werden, dass Datenträgerdaten nicht wiederhergestellt werden können, auch mithilfe von Wiederherstellungstechnologie, die Muster in magnetischen Medien lesen können, die schwach gelöschte Dateien anzeigen. SDelete (Sicheres Löschen) ist eine solche Anwendung. Sie können SDelete sowohl zum sicheren Löschen vorhandener Dateien als auch zum sicheren Löschen von Dateidaten verwenden, die in den nicht zugeordneten Teilen eines Datenträgers vorhanden sind (einschließlich Dateien, die Sie bereits gelöscht oder verschlüsselt haben). SDelete implementiert das Department of Defense Clearing und sanitieren Standard DOD 5220.22-M, um Ihnen Vertrauen zu geben, dass sie einmal mit SDelete gelöscht wurden, Ihre Dateidaten werden immer verloren. Beachten Sie, dass SDelete Dateidaten sicher löscht, aber keine Dateinamen, die sich im freien Speicherplatz befinden.

Verwenden von SDelete

SDelete ist ein Befehlszeilenprogramm, das eine Reihe von Optionen verwendet. In jeder bestimmten Verwendung können Sie eine oder mehrere Dateien und/oder Verzeichnisse löschen oder den freien Speicherplatz auf einem logischen Datenträger bereinigen. SDelete akzeptiert Wildcardzeichen als Teil des Verzeichnis- oder Dateibezeichners.

Verwendung: sdelete [-p pass] [-r] [-r] [-s] [-q <] Datei oder Verzeichnis> [...]
sdelete [-p pass] [-z|-c [prozentfrei]] <Laufwerkbuchstaben [...]>sdelete [-p pass] [-z|-c] &ltphysische Datenträgernummer>

Parameter BESCHREIBUNG
-c Leerraum sauber. Geben Sie eine Option an, die frei für die Verwendung durch ein ausgeführtes System bleiben soll.
-p Gibt die Anzahl der Überschreibungsübergänge an (Standard ist 1).
-r Entfernen Sie Read-Only Attribut.
-s Rekursieren von Unterverzeichnissen.
-z Null freier Speicherplatz (gut für die Optimierung virtueller Datenträger).
-nobanner Zeigen Sie das Startbanner und die Copyrightnachricht nicht an.

Funktionsweise von SDelete

Das sichere Löschen einer Datei, die keine speziellen Attribute aufweist, ist relativ gerade: Das sichere Löschenprogramm überschreibt die Datei einfach mit dem sicheren Löschmuster. Was noch schwieriger ist, ist sicher zu löschen, Windows NT/2K komprimierte, verschlüsselte und sparsame Dateien zu löschen und datenträgerfreie Leerzeichen sicher zu löschen.

Komprimierte, verschlüsselte und sparse werden von NTFS in 16-Clusterblöcken verwaltet. Wenn ein Programm in einen vorhandenen Teil einer solchen Datei NTFS schreibt, gibt dem Datenträger neue Speicherplatz zu, um die neuen Daten zu speichern und nachdem die neuen Daten geschrieben wurden, werden die Cluster, die zuvor von der Datei belegt wurden, zugeordnet. NTFS nimmt diesen konservativen Ansatz aus Gründen der Datenintegrität und im Falle komprimierter und sparsamer Dateien vor, wenn eine neue Zuordnung größer ist als das, was vorhanden ist (die neuen komprimierten Daten sind größer als die alten komprimierten Daten). Daher kann das Überschreiben einer solchen Datei nicht erfolgreich sein, um den Inhalt der Datei auf dem Datenträger zu löschen.

Um diese Arten von Dateien zu behandeln , basiert SDelete auf der Defragmentierungs-API. Mithilfe der Defragmentierungs-API kann SDelete genau bestimmen, welche Cluster auf einem Datenträger durch Daten belegt werden, die zu komprimierten, sparse und verschlüsselten Dateien gehören. Nachdem SDelete weiß, welche Cluster die Daten der Datei enthalten, kann sie den Datenträger für den rohen Zugriff öffnen und diese Cluster überschreiben.

Die Reinigung des freien Raums stellt eine weitere Herausforderung dar. Da FAT und NTFS keine Mittel für eine Anwendung bereitstellen, um freien Speicherplatz direkt zu adressieren, verfügt SDelete über eine der beiden Optionen. Das erste ist, dass es wie bei komprimierten, sparsamen und verschlüsselten Dateien den Datenträger für den rohen Zugriff öffnen und den freien Speicherplatz überschreiben kann. Dieser Ansatz leidet unter einem großen Problem: Selbst wenn SDelete vollständig codiert wurde, um die frei verfügbaren Speicherplatzbereiche von NTFS- und FAT-Laufwerken zu berechnen (etwas, das nicht trivial ist), würde es das Risiko einer Kollision mit aktiven Dateivorgängen ausführen, die auf dem System stattfinden. Angenommen , SDelete bestimmt, dass ein Cluster frei ist, und nur zu diesem Zeitpunkt entscheidet sich der Dateisystemtreiber (FAT, NTFS), den Cluster für eine Datei zuzuweisen, die eine andere Anwendung ändert. Der Dateisystemtreiber schreibt die neuen Daten in den Cluster und überschreibt dann SDelete die frisch geschriebenen Daten: Die neuen Daten der Datei sind nicht mehr vorhanden. Das Problem ist noch schlimmer, wenn der Cluster für Dateisystemmetadaten zugewiesen wird, da SDelete die On-Disk-Strukturen des Dateisystems beschädigt.

Der zweite Ansatz, und der eine SDelete nimmt, besteht darin, freien Speicherplatz indirekt zu überschreiben. Zunächst weist SDelete die größte Datei zu, die sie kann. SDelete führt dies mit nicht zwischengespeicherter Datei I/O aus, sodass der Inhalt des NT-Dateisystemcaches nicht ausgelöst und durch verwendungslose Daten ersetzt wird, die der Leerzeichen-Hogging-Datei von SDelete zugeordnet sind. Da nicht zwischengespeicherte Datei-I/O sektorisch (512-byte) ausgerichtet sein muss, gibt es möglicherweise einige Leerzeichen, die nicht für die SDelete-Datei zugewiesen sind, auch wenn SDelete die Datei nicht weiter vergrößern kann. Um alle verbleibenden Speicherplatz zu erfassen, weist SDelete als nächstes die größte zwischengespeicherte Datei zu, die sie kann. Für beide Dateien führt SDelete einen sicheren Overwrite durch, um sicherzustellen, dass alle Speicherplatz, der zuvor frei war, sicher bereinigt werden.

Auf NTFS-Laufwerken ist SDeletes Auftrag nicht unbedingt durch, nachdem es die beiden Dateien zugewiesen und überschrieben hat. SDelete muss auch alle vorhandenen freien Teile der NTFS MFT (Master File Table) mit Dateien füllen, die in einen MFT-Datensatz passen. Ein MFT-Datensatz ist in der Regel 1 KB groß, und jede Datei oder jedes Verzeichnis auf einem Datenträger erfordert mindestens einen MFT-Datensatz. Kleine Dateien werden vollständig in ihrem MFT-Datensatz gespeichert, während Dateien, die nicht in einen Datensatz passen, clustern außerhalb der MFT zugewiesen werden. Alle SDelete muss tun, um den kostenlosen MFT-Speicherplatz zu übernehmen, ist die größte Datei zuzuweisen, die sie kann - wenn die Datei alle verfügbaren Speicherplatz in einem MFT-Datensatz NTFS belegt, verhindert, dass die Datei größer wird, da es keine freien Cluster auf dem Datenträger gibt (sie werden von den beiden zuvor zugewiesenen Dateien SDelete gespeichert). SDelete wiederholt dann den Prozess. Wenn SDelete keine neue Datei mehr erstellen kann, weiß es, dass alle zuvor kostenlosen Datensätze in der MFT vollständig mit sicher überschriebenen Dateien gefüllt wurden.

Wenn Sie Dateinamen einer datei überschreiben möchten, die Sie löschen, benennen SDelete die Datei 26 mal um, wobei jedes Zeichen des Dateinamens durch ein aufeinanderfolgendes alphabetisches Zeichen ersetzt wird. Beispielsweise wäre die erste Umbenennung von "foo.txt" auf "AAA" festgelegt. AAA".

Der Grund dafür, dass SDelete keine Dateinamen sicher löscht, wenn speicherplatzfrei gelöscht wird, ist, dass das Löschen sie direkte Manipulationen von Verzeichnisstrukturen erfordert. Verzeichnisstrukturen können freien Speicherplatz haben, der gelöschte Dateinamen enthält, aber der kostenlose Verzeichnisspeicher ist für die Zuordnung zu anderen Dateien nicht verfügbar. Daher hat SDelete keine Möglichkeit, diesen freien Speicherplatz zu zuordnen, damit es sicher überschrieben werden kann.

DownloadSDelete herunterladen(518 KB)

Wird ausgeführt:

  • Client: Windows Vista und höher
  • Server: Windows Server 2008 und höher
  • Nano Server: 2016 und höher