Alternate Data Streams unter NTFS

Abstract

Alternate Data Streams (zu deutsch: Alternative Datenströme), kurz auch ADS, sind eine spezielle Funktion des NTFS-Dateisystems. Diese ermöglichen es weitere Daten zusätzlich zu einer Datei im Dateisystem zu speichern.

Konzept

Das NTFS dateisystem bietet die Möglichkeit weiter Datenströme zu einer Datei zu speichern. Unter NTFS werden Dateien in dem unbeannten, haupt Datenstrom, der zu der Datei gehört, gespeichert. Und nur dieser unbenannte Datenstrom wird auch angezeigt. Auf alle weiteren Datenströme hat man nur Zugriff, wenn man deren Namen kennt. Die Syntax lautet:

datei:datenstromname

Es können nicht nur Texte in diesen Datenströmen abgelgt werden, sondern wie in jeder anderen Datei auch binäre Daten. Handelt es sich dabei um ausführbare Dateien, können diese auch ausgeführt werden, wenn man sie anspricht. Wobei der eigentliche Prozess nicht im Taskmanager erscheint, sondern nur der Prozess des Hauptdatenstromes.

Hat man eine binären, ausführbaren Datenstrom angehangen, kann man ihn wie folgt ausführen:

start Pfad\dateiname:datenstromname

Erzeugen und einsehen von alternativen Datenströmen

Alternative Datenströme kann man relativ einfach selber erzeugen und einsehen, wenn sie einem bekannt sind. Dazu gibt man in der Konsole folgenden Befehl ein:

type "Mein alternativer Datenstrom">dateiname:datenstromname

Oder wenn es eine Datei sein soll:

type quelldateiname>dateiname:datenstromname

Ausgeben lassen kann man sich den alternativen Datenstrom wieder mit:

more < dateiname:datenstromname

Das Programm ADSReader

Es gibt diverse Programme, die das Dateisytem nach Dateien mit mit alternativen Datenströmen durchsuchen und diese auch entfernen können. So zum Beispiel das Programm Stream von Sysinternals.

Mein Ziel war es nicht ein weiteres Programm zu schreiben, was dies kann, sondern ich wollte verstehen, wie man sie ausliest und auch selber mit einem Programm schreiben kann. Das Programm ADSReader ist also mehr als ein Proof of Concept zu sehen, als ein nützliches Tool.

Hilfe und Syntax

Bei dem Programm handelt es sich ume ine Konsolenanwendung, der man über Parameter entsprechend steuert:

ADSReader 1.0.0.7 Copyright ® Michael Puff
http://www.michael-puff.de

Alternate Data Stream reader

ADSReader.exe [/r | /w | /d | /b] Filename {File} {/n:Streamname} {/t:Data}

  /r    Reads the Alternate Data Streams associated with the given file.
  /w    Writes the Alternate Data Stream. Requires /n and /t.
  /d    Deletes the given stream. Requires /n.
  /b    Appends the binary data of . Requires /n.
  /n    Stream name. Required for /w, /d and /b.
  /t    Stream text data. Required for /w.

Beispielaufrufe
Datenströme ausgeben:

ADSReader /r TestApp.exe

Ergibt:

adsreader /r TestApp.exe
:Teststream [30]
Nur ein doofer Text zum testen

ADSReader 1.0.0.7 Copyright ® Michael Puff
http://www.michael-puff.de

Datenstrom anhängen:

adsreader /w TestApp.exe /n:Teststream /t:"Nur ein doofer Text zum testen"

Binären Datenstrom anhängen:

adsreader /b TestApp.exe c:\Windows\notepad.exe /n:notepad.exe

Hinweis!

Da das Programm bzw. dessen Code auch für schädliche Software missbraucht werden kann, distanziere ich mich ausdrücklich von schädlichen Programmen, die mit Hilfe meines Quellcodes und meines hier zur Verfügung gestellten Wissens entstanden sind und über nehme keinerlei Verantwortung für diese so entstandenen Programme.

Downloads

ADSReader.zip Wednesday, 29-Dec-2010 23:45:02 CET 28K

2010-12-29T23:44:36 +0100, mail+homepage[at]michael-puff.de