Skip to main content

SDelete 1.61

Von Mark Russinovich

Veröffentlicht: 11. Januar 2013

Einführung

Ein Feature der C2-Kompatibilität von Windows NT/Windows 2000 ist die Implementierung des Objektwiederverwendungsschutzes. Dadurch kann eine Anwendung, der von Windows NT/Windows 2000 Dateispeicher bzw. virtueller Arbeitspeicher zugeordnet wird, zuvor in diesen Ressourcen gespeicherte Daten nicht anzeigen. Bevor einer Anwendung eine solche Ressource bereitgestellt wird, füllt Windows NT den Speicher mit Nullen bzw. setzt die Datenträgersektoren, in denen eine Datei gespeichert wird, auf Null. Die Objektwiederverwendung schreibt jedoch nicht vor, dass der Speicherplatz, der von einer Datei vor ihrer Löschung belegt wird, auf Null gesetzt wird. Das liegt daran, dass Windows NT/Windows 2000 auf der Annahme aufbaut, dass das Betriebssystem den Zugriff auf die Systemressourcen steuert. Wenn das Betriebssystem jedoch nicht aktiv ist, ist es möglich, mithilfe von Rohdatenträgereditoren und Wiederherstellungstools Daten anzuzeigen und wiederherzustellen, die das Betriebssystem freigegeben hat. Auch wenn Sie Dateien mit dem verschlüsselnden Dateisystem (Encrypting File System, EFS) von Windows 2000 verschlüsseln, bleiben die ursprünglichen unverschlüsselten Daten auf dem Datenträger zurück.

Die einzige Möglichkeit, sicherzustellen, dass gelöschte Dateien und mit EFS verschlüsselte Dateien nicht wiederverwendet werden können, ist der Einsatz einer sicheren Löschanwendung. Sichere Löschanwendungen überschreiben die Datenträgerdaten einer gelöschten Datei mithilfe von Methoden, die bewährtermaßen Daten ein für allemal löschen, auch wenn eine Wiederverwendungstechnologie eingesetzt wird, die Muster in Magnetdatenträgern lesen kann, um nur schwach gelöschte Dateien offen zu legen. SDelete (Secure Delete) ist solch eine Anwendung. Sie können mit SDelete sowohl vorhandene Dateien als auch beliebige Daten in nicht zugewiesenen Teilen eines Datenträgers (einschließlich bereits gelöschte oder verschlüsselte Dateien) sicher löschen. SDelete implementiert den Standard DOD 5220.22-M des US-amerikanischen Verteidigungsministeriums zur Datenbereinigung, sodass Sie darauf vertrauen können, dass alle einmal mit SDelete gelöschten Daten nicht wiederhergestellt werden können. Beachten Sie, dass SDelete Daten zuverlässig löscht, nicht jedoch Dateinamen in verfügbarem Speicherplatz.

Verwendung von SDelete

SDelete iist ein Befehlszeilendienstprogramm mit einer Anzahl von Optionen. Bei beliebiger Verwendung ermöglicht es Ihnen, eine oder mehrere Dateien bzw. Verzeichnisse zu löschen oder den freien Speicherplatz auf einem logischen Datenträger zu reinigen. SDelete ermöglicht den Einsatz von Platzhalterzeichen als Teil von Verzeichnis- und Dateinamen..

Verwendung: sdelete [-p Durchgänge] [-s] [-q] <Datei oder Verzeichnis>
sdelete [-p Durchgänge] -z [Laufwerksbuchstabe]

-p Durchgänge

Anzahl der Überschreibungsdurchgänge

-s

Rekursion in Unterverzeichnissen

-q

Fehler nicht ausdrucken (still)

-z

Freien Speicherplatz bereinigen


Funktionsweise von SDelete

Das sichere Löschen einer Datei, die keine besonderen Attribute hat, ist verhältnismäßig einfach: Das sichere Löschprogramm überschreibt die Datei einfach mit dem sicheren Löschmuster. Die Schwierigkeit liegt im sicheren Löschen von unter Windows NT\Windows 2000 komprimierten, verschlüsselten und vereinzelten Dateien und in der Bereinigung von freiem Speicherplatz.

Komprimierte, verschlüsselte und vereinzelte Dateien werden von NTFS in 16-Clusterblöcken verwaltet. Wenn ein Programm in einen vorhandenen Teil solch einer Datei schreibt, ordnet NTFS dem Datenträger neuen Speicherplatz zu, um die neuen Daten zu speichern. Wenn die neuen Daten geschrieben sind, werden die zuvor von der Datei belegten Cluster wieder freigegeben. Diese konservative Methode wird aus Gründen der Datenintegrität verwendet. Bei komprimierten und vereinzelten Dateien geschieht dies für den Fall, dass eine neue Zuordnung größer ist als die vorhandene (die neuen komprimierten Daten belegen mehr Platz als die alten komprimierten Daten). Folglich wird das Überschreiben einer solchen Datei das Löschen des Inhalts vom Datenträger nicht bewerkstelligen.

Um diese Dateitypen zu verarbeiten, verlässt sich SDelete auf die Defragmentierungs-API. Durch Verwenden der Defragmentierungs-API kann SDelete genau bestimmen, welche Cluster auf einem Datenträger von Daten belegt sind, die zu komprimierten, verschlüsselten oder vereinzelten Dateien gehören. Wenn SDelete weiß, welche Cluster die Daten der Datei enthalten, kann einen Rohdatenzugriff auf den Datenträger durchführen und die Cluster überschreiben.

Das Bereinigen des verfügbaren Speicherplatzes stellt eine andere Herausforderung dar. Da FAT und NTFS keine Methode zur direkten Adressierung von Speicherplatz für Anwendungen enthalten, hat SDelete zwei Möglichkeiten. Die erste Möglichkeit besteht darin, dass es, wie bei komprimierten, verschlüsselten und vereinzelten Dateien den Datenträger für einen Rohdatenzugriff öffnet und den freien Speicherplatz überschreibt. Diese Herangehensweise hat leider ein großes Problem: Selbst wenn SDelete so programmiert wurde, dass es vollständig fähig ist, die Anteile des freien Speicherplatzes der NTFS- und FAT-Laufwerke zu berechnen (nicht gerade ein unkomplizierter Vorgang), besteht das Risiko des Konflikts mit aktiven Dateivorgängen auf dem System. Angenommen SDelete bestimmt, dass ein Cluster frei ist, und genau in diesem Moment entscheidet der Dateisystemtreiber (FAT, NTFS), diesen Cluster einer Datei zuzuordnen, die von einer anderen Anwendung geändert wird. Der Dateisystemtreiber schreibt die neuen Daten in den Cluster, und dann setzt SDelete ein und überschreibt die eben erst geschriebenen Daten. Das heißt, die neuen Daten der Datei gehen verloren. Das Problem ist umso schwerwiegender, wenn der Cluster den Metadaten eines Dateisystems zugeordnet ist, da SDelete dann die Datenträgerstrukturen des Dateisystems beschädigt.

Die zweite Möglichkeit besteht in einer indirekten Überschreibung des freien Speicherplatzes durch SDelete. Zuerst ordnet SDelete nach Möglichkeit die größte Datei zu. SDelete führt dabei einen Datei-E/A-Vorgang ohne Cachespeicherung durch, damit der Inhalt des NT-Dateisystemcaches nicht durch unnötige Daten der von SDelete zur Speicherplatzbelegung verwendeten Datei ersetzt wird. Da ein solcher Datei-E/A-Vorgang sektorgerichtet (512 Byte) sein muss, kann Speicherplatz frei bleiben, der der SDelete-Datei nicht zugeordnet wurde, auch wenn SDelete die Datei nicht weiter erweitern kann. Um sich jeglichen verbleibenden freien Platz anzueignen, ordnet SDelete als Nächstes nach Möglichkeit die größte zwischengespeicherte Datei zu. Für beide Dateien führt SDelete eine sichere Überschreibung durch, wodurch gewährleistet wird, dass der gesamte Speicherplatz, der zuvor frei war, zuverlässig bereinigt wird.

Auf NTFS-Laufwerken hat SDelete seine Aufgabe nicht unbedingt abgeschlossen, wenn die beiden Dateien zugeordnet und überschrieben sind. SDelete muss außerdem alle vorhandenen freien Teile der NTFS-Hauptdateitabelle (Master File Table, MFT) mit Dateien füllen, die in einen MFT-Datensatz passen. Ein MFT-Datensatz ist in der Regel 1 KB groß, und jede Datei bzw. jedes Verzeichnis auf einem Datenträger erfordert mindestens einen MFT-Datensatz. Kleine Dateien werden vollständig innerhalb ihres MFT-Datensatzes gespeichert, während Dateien, die innerhalb eines Datensatzes keinen Platz haben, Cluster außerhalb der MFT zugeordnet werden. Zur Verarbeitung des freien MFT-Platzes muss SDelete nach Möglichkeit die größte Datei zuordnen. Wenn die Datei den gesamten verfügbaren Speicherplatz in einem MFT-Datensatz belegt, kann sie nicht größer werden, da auf dem Datenträger keine freien Cluster mehr übrig sind. (Sie werden von den beiden Dateien belegt, die SDelete zuvor zugeordnet hat.) SDelete wiederholt anschließend den Prozess. Wenn SDelete keine neue Datei mehr erstellen kann, ist gewährleistet, dass alle zuvor freien Datensätze in der MFT vollständig mit zuverlässig überschriebenen Dateien gefüllt sind.

Zur Überschreibung von Namen gelöschter Dateien benennt SDelete eine gelöschte Datei 26 Mal um und ersetzt jedes Mal jedes Zeichen des Dateinamens mit einem neuen Buchstaben in aufsteigender alphabetischer Reihenfolge. Die erste Umbenennung von „foo.txt“ lautet demnach „AAA.AAA“.

Der Grund dafür, dass Dateinamen bei der Bereinigung von freiem Speicherplatz durch SDelete nicht zuverlässig gelöscht werden, liegt darin, dass das Löschen der Dateinamen eine direkte Manipulation der Verzeichnisstrukturen erfordern würde. Verzeichnisstrukturen können freien Speicherplatz enthalten, der gelöschte Dateinamen enthält, doch der freie Verzeichnisspeicherplatz ist nicht verfügbar, um anderen Dateien zugeordnet zu werden. Deshalb hat SDelete keine Möglichkeit, diesen freien Speicherplatz zuzuordnen, um ihn zuverlässig zu überschreiben.

 

download SDelete herunterladen
(81 KB)

 

Läuft unter:

  • Client: Windows XP oder höher.
  • Server: Windows Server 2003 oder höher.
Microsoft führt eine Onlineumfrage durch, um Ihre Meinung zur -Website zu erfahren. Wenn Sie sich zur Teilnahme entscheiden, wird Ihnen die Onlineumfrage angezeigt, sobald Sie die -Website verlassen.

Möchten Sie teilnehmen?