FAQ: Alternative Datenströme in NTFS

Copyright © 1998-2007 Frank Heyne - All rights reserved - Letzte Änderung 15. November 2007

Bitte sehen Sie davon ab, diese Seite auf Ihrem Server zu veröffentlichen. Verwenden Sie statt dessen einen Link. Die Gründe dafür sind hoffentlich verständlich: Ich möchte nicht, dass veraltete Exemplare der FAQ durch das Web schwirren, und auch nicht, dass meine Urheberrechte verletzt werden.


Was ist NTFS?

Das ist die Abkürzung für New Technology File System - Windows NTs eigenes Dateisystem.

Was ist ein alternativer Datenstrom (ADS)?

In NTFS besteht jede Datei aus mehreren Datenströmen. Einer enthält die Sicherheitsdaten (Zugriffsrechte, Besitzer und solche Informationen) und ein weiterer die eigentlichen Daten. Anstatt des eigentlichen Datenstroms kann auch lediglich die Verknüpfungsinformationen zu einer anderen Datei vorhanden sein, wenn es sich um einen Link handelt. Außerdem kann jede Datei beliebig viele alternative Datenströme enthalten, die genau so für die Speicherung von Daten verwendet werden wie der Hauptdatenstrom.

Was ist das Problem bei alternativen Datenströmen?

Ich könnte sagen: Nichts. Sie funktionieren wie von Microsoft dokumentiert.
Aber halt - es gibt ein Problem: Alternative Datenströme sind versteckt. Sie können beispielsweise eine Datei mit einem Byte im Hauptdatenstrom und einigen hundert Megabyte in einem oder mehreren alternativen Datenströmen anlegen. Nun raten Sie aber mal, welche Größe der Befehldir oder der Explorer anzeigen? Es ist 1 Byte!

Das bedeutet ein Benutzer kann beliebige Daten in alternativen Datenströmen verbergen und keiner wird etwas bemerken?

So ist es.

Aber sicher benötigt eine Benutzer bestimmte Rechte, um mit alternativen Datenströmen arbeiten zu können?

Nein. Selbst der Benutzer Gast kann sie an jeder Datei anlegen, für die er Schreibrechte hat.

Wie erzeuge ich einen ADS?

Sie können es zum Beispiel mit dem Editor tun, wie notepad visible.txt:hidden.txt. Damit erzeugen Sie einen verborgenen Datenstrom hidden.txt in der sichtbaren Datei visible.txt. Es spielt dabei keine Rolle, ob die Datei visible.txt bereits existiert oder nicht.

Wie kopiert man Daten in einen ADS?

Der Befehl
type atextfile > visible.txt:hidden2.txt
kopiert die Datei atextfile in den ADS hidden2.txt in der Datei visible.txt.

Wie kopiert man Text von einem ADS in eine "normale" Datei?

Mit dem Befehl
more < visible.txt:hidden2.txt > newfile.txt
Er erzeugt eine Datei newfile.txt mit dem Inhalt des ADS hidden2.txt in der Datei visible.txt.

Wie kopiert man Binärdaten von einem ADS in eine "normale" Datei?

Mit dem Befehl
cat visible.txt:hidden.exe > hack.exe.
Er erzeugt eine Datei hack.exe mit dem Inhalt des ADS hidden.exein der Datei visible.txt.
Das Tool Cat ist im Ressource Kit enthalten.

Wie löscht man einen ADS?

Angenommen, Sie wissen, daß es in der Datei important.exe einen ADS gibt. Die Datei ist sehr wichtig und der ADS sehr gefährlich (er kann z.B. ein Hackertool enthalten). Sie wollen die Datei behalten und den ADS loswerden.
Wenn Sie ein FAT-Laufwerk auf Ihrem Rechner haben, können Sie die Datei darauf und dann wieder zurück auf das NTFS-Laufwerk verschieben. Da FAT keine ADS kennt, wird dieser beim Kopieren nicht mit übertragen.
Wenn Sie kein FAT-Laufwerk haben, können Sie sich wie folgt behelfen:
ren important.exe temp.exe
cat temp.exe > important.exe
del temp.exe

Diese Methode funktioniert nicht, wenn der ADS an einem Verzeichniseintrag hängt. Falls Sie zum Beispiel c:\Windows:harmful.exe entfernen müssen und keine Lust haben, deswegen die Festplatte neu zu formatieren, können Sie folgenden Trick ausprobieren. (Falls Sie NT 5.x verwenden, benötigen Sie eine Version von Notepad.exe von NT 4!)
  1. Öffnen Sie den ADS mit dem Editor:
    C:\NT4Tools\Notepad.exe c:\Windows:harmful.exe
  2. Löschen Sie den gesamten Inhalt des ADS
  3. Schließen Sie den Editor. Sie werden gefragt, ob die Änderungen gespeichert werden sollen.
  4. Antworten Sie mit JA
  5. Der Editor teilt Ihnen mit, daß die Datei leer ist und daher gelöscht wird.
Das war alles, der ADS ist verschwunden.

 

Kann man einen ADS auch zu einem Verzeichniseintrag anstatt zu einem Dateinamen hinzufügen?

Ja, das funktioniert genau so.

Welche Möglichkeiten stellt Microsoft bereit, um alternative Datenströme auf meinen NTFS-Medien aufzuspüren?

Erwarten Sie das?

Sie irren nicht ;-) Besuchen Sie http://msdn.microsoft.com/en-us/library/ms810604.aspx. Neben Hintergrundinformationen und Beispielcode finden Sie dort auch einen Download NTFSext.exe, der unter anderem die Datei strmext.dl. enthält. Befördern Sie diese Datei in des Verzeichnis system32 und rufen Sie folgenden Befehl auf:

regsvr32 StrmExt.dll

Jetzt haben Sie in den Dateieigenschaften des Windows-Explorers einen zusätzlichen Tab Streams. Er hilft nicht viel bei der Suche nach Dateien mit ADS, aber wenn Sie bereits eine solche Datei kennen, ist er ganz hilfreich.

 

Um den Tab auch für Verzeichnisse anzeigen zu lassen, müssen Sie den folgenden Registrierungsschlüssel anlegen:

HKEY_CLASSES_ROOT\Directory\shellex\PropertySheetHandlers\{C3ED1679-814B-4DA9-AB00-1CAC71F5E337}

Um den Tab auch für Root-Verzeichnisse anzeigen zu lassen, müssen Sie den folgenden Registrierungsschlüssel anlegen:

HKEY_CLASSES_ROOT\Drive\shellex\PropertySheetHandlers\{C3ED1679-814B-4DA9-AB00-1CAC71F5E337}

 

Ab Windows 6.0 (Vista) kennt der DIR-Befehl die Option /R.

Aber auf meinem NTFS-Laufwerk ist die angezeigte Summe von verfügbarem und belegtem Speicher viel geringer als die Festplattengröße. Ich benötige eine Möglichkeit festzustellen, ob hier ADS vorhanden sind!

Ich habe das Freeware-Programm LADS (List Alternate Data Streams) geschrieben. Damit können Sie ein Laufwerk oder ein Verzeichnis nach alternativen Datenströmen durchsuchen. LADS listet die Namen und Größen aller ADS, die es findet. Sie können hier die aktuelle Version von LADS herunterladen. Das Programm ist Freeware und ohne Garantie. Es wird aber seit Monaten von mehreren tausend Anwendern heruntergeladen und bisher wurden keine Fehler gemeldet. Die Verwendung des Programms geschieht trotzdem auf Ihr eigenes Risiko.

Welche Berechtigungen benötige ich, um LADS zu verwenden?

Das Programm ist als Hilfsmittel für Administratoren gedacht. Als Administrator besitzen Sie in der Regel bereits alle benötigten Berechtigungen. Wichtig ist, daß Ihr Konto das Benutzerrecht "Sichern von Dateien und Verzeichnissen" hat.

Ich habe einen Fehler in LADS gefunden!

Wenn ich die Befehle
C:\TEMP\t>echo Hallo > t
C:\TEMP\t>echo My Secret > t:secret

verwende, findet es nicht den ADS C:\TEMP\t\t:secret

Am Programm liegt das nicht ;-)
Mit dem zweiten Befehl haben Sie keinen ADS erzeugt, sondern die Datei t:\secret (d.h. auf dem Laufwerk T:).
Geben Sie Pfad und Dateinamen an und versuchen Sie es noch einmal:
C:\TEMP\t>echo My Secret > C:\TEMP\t:secret
oder in der Kurzform:
C:\TEMP\t>echo My Secret > .\t:secret

Version 2.10 von LADS ergibt eine andere Summe der Dateigrößen eines Verzeichnisses als die Vorgängerversion. Wie kann das sein?

Version 2.10 wurde geschwindigkeitsoptimiert. Wenn es sich vermeiden läßt, wird nicht mehr jede Datei durchsucht. Der einzige Nachteil dabei ist, dass die Größe der Dateiheader nicht mehr ermittelt werden kann. Somit werden die Dateiheader bei der Berechnung des belegten Platzes vernachlässigt.

Kann ich LADS von einer bootfähigen DOS-Floppy aus starten?

Das Programm verwendet einige API-Funktionen von Windows NT, daher kann es nur unter einer Version von Windows NT (NT4, W2K or WXP) laufen.

Wie erkennt LADS einen ADS?

In NTFS hat jeder Datenstrom einer Datei einen Header. LADS liest alle Header einer Datei ein und zeigt nur diejenigen an, die auf einen ADS verweisen.

Wenn ich einen Doppelklick auf LADS.exe mache, um das Programm zu installieren, sehe ich nur für einen Augenblick ein schwarzes DOS-Fenster. Ein installiertes Programm kann ich danach aber nicht finden.

LADS ist ein Programm für die Eingabeaufforderung, das nicht installiert werden muß.

Wie verwende ich LADS richtig?

  1. Öffnen Sie eine Eingabeaufforderung
  2. Wechseln Sie in das Verzeichnis, in dem sich LADS befindet
  3. Geben Sie "LADS" ein und drücken Sie anschließend die ENTER-Taste Ihrer Tastatur
  4. Hinweise zu Programmoptionen finden Sie in der mitgelieferten Readme-Datei

LADS ist eine sicherheitskritische Software, wieso wird dazu kein kostenloser Source-Code veröffentlicht? Also so lange es nur binär zu haben ist, benutze ich es nicht...

Nach dieser Logik brauch du das Programm doch aber gar nicht, denn wenn du nur Software verwendest, von der du den Quelltext hast, verwendest du also auch kein Windows, und wozu brauchst du dann LADS?
Niemand wird von mir dazu gezwungen, LADS zu verwenden. Das Programm führt übrigens keine Änderungen am Dateisystem durch, sondern liest nur die vorhandenen Strukturen mit Hilfe geeigneter API-Funktionen ein.

Wo kann ich weitere Informationen über ADS finden?

Ich empfehle den ausführlichen Artikel The Dark Side of NTFS von H. Carvey.

LADS fand einen ADS der Länge 0 Byte. Ich bin nicht in der Lage, den Inhalt dieses Streams anzusehen

Es kann keinen Inhalt geben, wenn die Größe 0 Byte ist, ok?

Ich bin nicht sicher, ob Sie mich verstehen, ich schrieb: LADS fand einen ADS der Länge 0 Byte auf meinem Computer.

Das habe ich schon kapiert. Um besser zu verstehen, was ich schrieb, tun Sie einfach folgendes:
  1. Starten Sie den Windows Explorer
  2. Wählen Sie in der Ordnerleiste einen Ordner Ihrer Wahl
  3. Wählen Sie im Menü Datei --> Neu --> Textdatei
  4. Windows erzeugt eine neue Datei mit der Größe von 0 Byte
  5. Nun lassen Sie sich den Inhalt dieser Datei anzeigen - wahrscheinlich sehen Sie dasselbe wie wenn Sie versuchen, einen ADS dieser Größe anzusehen - nichts?
Ist das jetzt verständlicher? 0 Byte = NICHTS !!!

Viele meiner Dateien haben einen ADS :Zone.Identifier mit 26 Bit Inhalt: [ZoneTransfer] ZoneID=3

Dabei handelt es sich um eine Information in Windows XP und neuer, die besagt, dass die Datei mit Internet Explorer aus Zone 3 (dem Internet) heruntergeladen wurde.