Fork (Dateisystem)
Forks sind eine Datenstruktur zur Aufnahme zusätzlicher strukturierter Daten innerhalb einer Datei neben den Hauptdaten – ein Konzept, um zu einer Datei mehrere Datenströme zu speichern.
Obwohl auch jenseits verwendet und ursprünglich aus anderer Umgebung kommend, ist das Konzept heute besonders aus dem Bereich des Apple Macintosh mit den sogenannten Resource forks bekannt.
Im HPFS-Dateisystem von OS/2 heißen diese Daten erweiterte Attribute (EA), im NTFS-Dateisystem von Windows heißen diese Alternate Data Streams (alternative Datenströme).
Apple Macintosh
[Bearbeiten | Quelltext bearbeiten]Beim Apple Macintosh können Dateien neben dem sogenannten data fork mit den Hauptdaten einen sogenannten resource fork enthalten. Diese Datenstruktur wird in Apples Dateisystemen (MFS, HFS, HFS+) eingesetzt, um Metadaten von beliebigem Umfang aufnehmen zu können, und hält zum Beispiel in älteren Programmdateien Ressourcen wie Icons, Menüinhalte oder auch Programmcode vor oder die Nutzdaten einer Schriftartendatei. Solche Programme ließen sich daher durch Editieren der Resource Fork mittels eines Resource Editors lokalisieren, d. h. z. B. in eine andere Sprache übersetzen.
Gebräuchliche Editor-Software für den Zugriff auf die Inhalte von Resource Forks und deren Bearbeitung waren:
- ResEdit: eine kostenlose Software von Apple mit graphischer Darstellung der Datenstruktur und ihrer Inhalte (veraltet),
- Resorcerer: eine beliebte, wenngleich teure, kommerzielle Anwendung, die mehr Datentypen kennt als ResEdit,
- ResKnife: eine freie Software für Mac OS X
- Rezycle: ein Mac-OS-X-Werkzeug, das Resource-Fork-Inhalte in separate Dateien extrahieren und teils dabei in brauchbarere, modernere Formate wandeln kann.
Seit der Einführung von Mac OS X im Jahr 2000 werden die resource forks nicht mehr für Programme verwendet, stattdessen befinden sich alle zum Programm benötigten Daten in einzelnen Dateien eines Pakets (englisch package), welcher tatsächlich ein Unterverzeichnis ist, dem Anwender aber als Programm angezeigt wird.
Solaris
[Bearbeiten | Quelltext bearbeiten]Wenn ein ZFS-basiertes Dateisystem unter Solaris mit dem Kernel-basierten SMB-Dienst exportiert wird, dann werden Alternate Data Streams auf Dateien gleichen Namens in der zugeordneten Extended Attribute Directory der jeweiligen Basis-Dateien abgebildet.
Windows
[Bearbeiten | Quelltext bearbeiten]Das Windows-Dateisystem NTFS ermöglicht sogenannte Alternate Data Streams (ADS). Mit dieser Funktion können Daten vom Benutzer unsichtbar fest an eine Datei gebunden gespeichert werden. Dieses Merkmal ist weniger bekannt und die Datenströme sind problematischer aufzufinden als die Resource Forks des Apple Macintosh. Alternate Data Streams sind eine vereinfachte Implementierung des unter Solaris und NFSv4 verfügbaren Extended-Attribute-Namensraums, der auf den Dateisystemen UFS und ZFS implementiert ist.
Verwendung
[Bearbeiten | Quelltext bearbeiten]Microsoft Windows 2000 und Windows XP verwenden ADS-Unterdatenströme zur Speicherung der in der Eigenschaftsseite jeder Datei verfügbaren Metadaten und je nach Anwendung noch deutlich mehr. Unter Windows XP (ab Service Pack 2) wird außerdem ein sogenannter Zone Identifier gespeichert, der es ermöglicht, auch nachträglich Dateien zu erkennen, die aus dem Internet heruntergeladen wurden. Beim Herunterladen fügt der Internet Explorer und ab Version 3 auch der Mozilla Firefox die entsprechenden Informationen hinzu.
Konzept
[Bearbeiten | Quelltext bearbeiten]Zu jeder Datei können beliebig viele Unter-Streams gespeichert werden. In der Praxis heißt das, dass man jeder Datei beliebig viele andere Dateien zuweisen kann, die nicht sichtbar sind, aber – solange der Vorgang innerhalb von NTFS-Laufwerken stattfindet – zusammen mit der Datei verschoben und kopiert werden. Der Zugriff auf die versteckten Dateifragmente findet mit einem Doppelpunkt statt: beispiel.txt:meinedatei.txt kennzeichnet einen zu der Datei beispiel.txt gehörigen Datenstrom namens meinedatei.txt. Neben Dateien können auch Ordner zusätzliche Datenströme enthalten, was das Auffinden von ungewollten ADS erschwert.
Sicherheit
[Bearbeiten | Quelltext bearbeiten]- Da die ADS-Ströme für den Benutzer unsichtbar sind und noch nicht alle Antivirenprogramme die ADS durchsuchen können, können Viren diese Funktion ausnutzen.
- Daten in ADS sind genau wie normale Dateien ausführbar. Im Autostart können solche ausführbaren Daten mit einem start-Kommando ausgeführt werden.
- Beim Berechnen von Ordnergrößen, z. B. in den Eigenschaften eines Ordners im Windows Explorer, geht der durch ADS-Ströme belegte Platz nicht mit in die Berechnung ein. Es können so große Datenmengen „versteckt“ werden, die nur schwer zu finden sind.
Beim Übergang zum Betriebssystem Windows Vista hat Microsoft aus Sicherheitsgründen die Verwendung von ADS-Strömen stark eingeschränkt.
Beispiel
[Bearbeiten | Quelltext bearbeiten]Erzeugung eines ADS
[Bearbeiten | Quelltext bearbeiten]Im Kommandozeileninterpreter erzeugt folgende Kommandozeile eine Datei myfile.txt mit einem ADS mit dem Namen myads.txt und dem Inhalt "Wikipedia":
echo "Wikipedia" > myfile.txt:myads.txt
Auch ausführbare Dateien (hier der Windows Taschenrechner) lassen sich in ein ADS schreiben (hier in den ADS des Dateiverzeichnisses Windows):
type C:\Windows\system32\calc.exe > C:\Windows:bad.exe
Anzeige eines ADS
[Bearbeiten | Quelltext bearbeiten]Der Inhalt kann folgendermaßen angezeigt werden:[1]
more < myfile.txt:myads.txt
Auflisten eines ADS
[Bearbeiten | Quelltext bearbeiten]In der Eingabeaufforderung cmd.exe können ab Windows Vista die Namen von alternativen Datenströmen mit folgender Eingabe angezeigt werden:
dir /r
In der Windows PowerShell hingegen können die Namen von alternativen Datenströmen mit folgender Eingabe angezeigt werden:[2][3]
Get-Item .\* -Stream *
Ausführen eines ADS
[Bearbeiten | Quelltext bearbeiten]Um die Datei zu starten, genügt die folgende Eingabe:
start C:\Windows:bad.exe
Entfernen eines ADS
[Bearbeiten | Quelltext bearbeiten]Das Entfernen eines ADS ist umständlich, weil der delete-Befehl (del) für ADS nicht funktioniert. Daher können auf einfache Weise auch nicht einzelne, sondern nur alle ADS, die zu einer Datei gehören, entfernt werden:
type myfile.txt > myfile.bak del myfile.txt ren myfile.bak myfile.txt
Eine Datei mit ADS kann zu einem anderen Dateisystem, das ADS nicht unterstützt (zum Beispiel FAT32), kopiert und zurückkopiert werden. Dabei gehen allerdings jegliche ADS verloren.
Einfacher geht es mit dem streams-Kommando aus der Windows Sysinternals Suite:
streams -d -s *.*
entfernt rekursiv im Dateisystem alle ADS-Streams. Die Option -d steht für Delete, die Option -s für rekursiv. Ohne -d werden die Streams nur aufgelistet.
Siehe auch
[Bearbeiten | Quelltext bearbeiten]Weblinks
[Bearbeiten | Quelltext bearbeiten]NTFS-ADS
- Gefahr aus der Schattenwelt: Alternate Data Streams als Versteck für Schädlinge auf den Seiten von heise Security
- Schwachstellen der neuen SP2-Sicherheitsfunktionen – Artikel zum Zone Identifier auf heise Security
- The Dark Side of NTFS (Microsoft's Scarlet Letter) ( vom 20. November 2014 im Internet Archive)
- Streams, ein offizielles Microsoft-Tool zum Anzeigen und Entfernen von ADS auf der Kommandozeile
Mac resource forks
Einzelnachweise
[Bearbeiten | Quelltext bearbeiten]- ↑ Using Streams. In: Windows Dev Center, win32. Microsoft, abgerufen am 19. Februar 2020 (amerikanisches Englisch).
- ↑ 262588213843476: Finding and reading alternate data streams (ADS) with PowerShell on an NTFS partition. Abgerufen am 9. Dezember 2024 (englisch).
- ↑ Read Alternate Data Streams on Windows with PowerShell. Abgerufen am 9. Dezember 2024.