Alternate Data Streams
"Trojanische Pferde" von Microsoft?

von Aron Vrtala (Ausgabe 05/2, Oktober 2005)

 

Woher weiß Ihr Rechner, welches Programm er starten soll, wenn Sie eine bestimmte Datei aktivieren? Richtig: Eine Funktion des Betriebssystems sorgt für die korrekte Zuordnung. Das marktbeherrschende Betriebssystem MS-Windows verwendet dafür (wie sein Vorgänger MS-DOS) so genannte Assoziationen zwischen dem jeweiligen Anwendungsprogramm und dem Dateityp, der über die Erweiterung des Dateinamens definiert ist. Beispielsweise bedeutet xy.exe, dass es sich um eine ausführbare Datei handelt, xy.doc signalisiert ein MS-Word-Dokument usw. Auf einem Macintosh hingegen wird diese Information unabhängig vom Dateinamen gespeichert: Unter MacOS besteht jede Datei aus zwei parallelen Datenströmen - der erste Strom beschreibt die so genannten Ressource-Informationen (dazu gehört u.a. der Typ der Datei), der zweite enthält die eigentlichen Daten.

Diese grundlegend unterschiedliche Behandlung der Ressource-Informationen erschwerte lange Zeit den direkten Datenaustausch zwischen Windows- und Macintosh-Rechnern. Mit der Einführung des Dateisystems NTFS 5 präsentierte Microsoft dann eine Lösung für das Problem: Dank Alternate Data Streams, kurz ADS, konnten endlich auch Apple-BenutzerInnen auf so genannte Windows Shares (an andere Rechner exportierte Verzeichnisse oder virtuelle Festplatten) zugreifen. Jede Datei, jedes Verzeichnis, aber auch jede Verknüpfung besteht im - unter Windows heute einzig sinnvollen - Dateisystem NTFS aus einem Hauptdatenstrom und optional mehreren alternativen Datenströmen.

Betrachten wir beispielsweise die Datei hugo.txt (siehe Abb. 1). Unter Windows wird der Hauptdatenstrom mit hugo.txt angesprochen; weitere alternative Datenströme der Datei sind, durch einen Doppelpunkt getrennt, diesem Namen angefügt. Der erste alternative Datenstrom in unserem Beispiel ist damit hugo.txt:strom1, der zweite hugo.txt:strom2 usw. Dabei kann strom1 oder strom2 jeder beliebige Name sein, er darf nur keinen Doppelpunkt enthalten. Verbirgt sich in einem alternativen Datenstrom ein ausführbares Programm (z.B. hugo.txt:calc.exe), könnte es aus der Sicht von Windows jederzeit gestartet werden.

Abb. 1: Alternate Data Streams verstecken sich im

 

Warum "Trojaner"?

Microsoft hat die Existenz von Alternate Data Streams zwar in den technischen Unterlagen zum Betriebssystem Windows dokumentiert, es jedoch verabsäumt, ein Programm zur Verfügung zu stellen, das solche "Anhängsel" auflistet. Weder mit dem Windows-Explorer noch mit dem Kommando dir lassen sich alternative Datenströme anzeigen. Auch die Anzeige der Dateigröße richtet sich unter Windows nur nach dem Hauptdatenstrom - ADS werden nicht mitgerechnet. Selbst die "Quota", mit der einzelnen BenutzerInnen eine Obergrenze an belegbarem Plattenplatz zugewiesen werden kann, ignoriert alle alternativen Datenströme. Für den Windows-Benutzer bedeutet dies, dass er ADS mit den standardmäßig verfügbaren Werkzeugen nie zu sehen bekommt.

Viele Inhalte von alternativen Datenströme sind durchaus sinnvoll und legitim. Beispielsweise speichert Windows XP Miniaturbilder (Thumbnails) von Grafiken in ADS, und der Virenscanner von Kaspersky Lab reduziert seinen Scan-Aufwand, indem er an jede von ihm durchsuchte virenfreie Datei einen Datenstrom mit einer Kennung anfügt. Dennoch können sich - z.B. nach einer Hacker- oder Wurmattacke - hinter jeder harmlosen, vom Benutzer selbst erstellten Datei auch durchaus gefährliche Programme verbergen.

Erschwerend kommt hinzu, dass die bloße Existenz von Alternate Data Streams der überwiegenden Mehrzahl der BenutzerInnen (und auch vielen AdministratorInnen) nicht bekannt ist. Hinsichtlich der Anwendungen, die mit ADS umgehen können, herrscht in Windows ein heilloses Durcheinander: Es gibt viele Programme, die mit dem zusätzlichen Doppelpunkt im Dateinamen nichts anfangen, und sogar einige Virenscanner, die alternative Datenströme nicht durchsuchen.

Wissen ist der beste Schutz

Schon die Tatsache, dass Microsoft relativ wenig Informationen über Alternate Data Streams zur Verfügung stellt, macht sie gefährlich. Wie die bekannteren Risikofaktoren am PC kann auch die potentielle ADS-Bedrohung nur durch richtiges Verhalten reduziert werden; ein geübter Blick im Erkennen von Unregelmäßigkeiten ist dabei hilfreich.

Nehmen wir dazu ein einfaches Beispiel: Angenommen, der Datei calc.exe (das ist der Windows-Taschenrechner) wurde als alternativer Datenstrom die Datei cmd.exe (die Windows-Eingabeaufforderung, auch bekannt als Ausführen oder "DOS-Box") angefügt. Sowohl calc.exe als auch calc.exe:cmd.exe sind ausführbare Programme. Betrachtet man die Datei calc.exe im Windows-Explorer, so bleibt ihr alternativer Datenstrom unsichtbar. Auch unter den Eigenschaften der Datei, die durch Klick mit der rechten Maustaste aufgerufen werden, ist nichts darüber in Erfahrung zu bringen. Beim Starten bzw. Verwenden des Taschenrechners bemerkt man die zusätzlichen Daten ebenfalls nicht. Wird jedoch der alternative Datenstrom - also cmd.exe, die DOS-Box - ausgeführt (z.B. mittels start-Befehl aus einer anderen DOS-Box), ist oft erkennbar, dass es sich um ein via ADS aufgerufenes Programm handelt.

Windows selbst bietet zwei Möglichkeiten, den alternativen Datenstrom zu enttarnen. Beide erreicht man über den Windows Task-Manager, welcher durch Drücken der Tastenkombination <Strg>+<Alt>+ aktiv wird. Auf den Registerkarten Anwendungen und Prozesse ist hier die tatsächliche Herkunft der aktiven DOS-Box (calc.exe:cmd.exe) ersichtlich. Der Haken: Ein Doppelpunkt im Dateinamen ist zwar ein sicherer Hinweis auf ADS; fehlt der Doppelpunkt, könnte das Programm aber trotzdem über ADS gestartet worden sein, da sowohl der Anwendungs- als auch der Prozessname mit geeigneter Programmierung änderbar sind.

Um Alternate Data Streams einigermaßen zuverlässig auffinden zu können, benötigt man deshalb ein entsprechendes Zusatzprogramm - z.B. den StreamExplorer, den ADS Locator von Spybot oder das mittels Befehlszeile gesteuerte Programm lads (steht für list ADS). Alle angeführten Programme sind Freeware.

Der StreamExplorer zeigt beispielsweise zu jeder Datei die Anzahl ihrer alternativen Datenströme sowie deren Name, Dateigröße und Inhalt an (siehe Abb. 2). Aus der Abbildung ist ersichtlich, dass jede Datei in NTFS mindestens zwei Datenströme hat: Im Datenstrom <default> (EDV-Jargon für "standardmäßig") ist der eigentliche Inhalt der Datei zu finden; der Datenstrom <no name> enthält gewisse Dateiattribute. An die Datei test1.dat wurde zusätzlich der alternative Datenstrom nochEinStrom angefügt, der mit 33 Bytes größer ist als der Hauptdatenstrom (21 Bytes).

Abb. 2: StreamExplorer-Ansichten von Dateien mit

Was hilft gegen ADS?

Manche Windows-Standardfunktionen sind ADS-tauglich, andere nicht. Beim Kopieren von Dateien (sowohl mit der Kopierfunktion als auch mit dem Befehl copy) werden alle alternativen Datenströme mitkopiert und bleiben erhalten. Auch Notepad, der Standard-Editor von Windows, kann mit ADS umgehen - allerdings nur auf Umwegen: Wenn Sie in Notepad unter Datei - Öffnen einen ADS-Namen eingeben, erhalten Sie eine Fehlermeldung, dass der Dateiname nicht gültig ist. Öffnen Sie die Datei aber über die DOS-Box (z.B. mit dem Befehl notepad test1.dat:nochEinStrom.), so wird der alternative Datenstrom im Editor angezeigt.

Der Befehl type in der DOS-Box, der den Inhalt einer Datei am Bildschirm ausgibt, ist hingegen nicht ADS-fähig - er spricht stets nur den Hauptdatenstrom an. Daher kann diese Funktion zum Entfernen von ADS verwendet werden: Lenkt man die Ausgabe statt auf den Bildschirm in eine neue Datei um, wird nur der Hauptdatenstrom übernommen. Ausgehend vom Beispiel in Abb. 2 muss man also in der DOS-Box den Befehl type test1.dat > test2.dat eingeben, dann test1.dat löschen und test2.dat wieder in test1.dat umbenennen, um die zusätzlich angehängten Datenströme zu entfernen.

Auch wenn der alternative Datenstrom an einem Verzeichnisnamen hängt, lässt er sich im Allgemeinen (d.h. wenn man der Eigentümer des Verzeichnisses ist) unkompliziert entfernen: Zunächst legt man einen neuen Ordner an und gibt diesem die gleichen Berechtigungen, die auch das "ADS-befallene" Verzeichnis hat. Dann kopiert man alle Dateien und Unterverzeichnisse des Original-Verzeichnisses in das neue. Anschließend wird das alte Verzeichnis gelöscht und das neue wieder entsprechend umbenannt.

Achtung: Bitte versuchen Sie das nicht mit dem Verzeichnis C:\WINDOWS\ und dessen Unterverzeichnissen! Dies würde unentbehrliche Systemprogramme in Mitleidenschaft ziehen - das Betriebssystem wird instabil bzw. kann unter Umständen irreparabel beschädigt werden. Auch im obersten Verzeichnis einer Festplatte (z.B. D:\) ist dieses Verfahren nicht anwendbar.

Viren und ADS

Obwohl bereits Viren aufgetreten sind, die sich in alternativen Datenströmen verstecken, werden ADS noch immer nicht von allen Virenscannern etc. berücksichtigt. Manche - z.B. die Ad-Aware SE Personal Software 1.06, die unter www.lavasoft.de als Freeware erhältlich ist - beherrschen das Suchen von digitalem Ungeziefer in Alternate Data Streams hervorragend, viele andere finden Viren in ADS zumindest beim direkten Zugriff auf die Virus-Daten (d.h. wenn diese aktiviert oder auch nur angezeigt werden). Eine unrühmliche Ausnahme ist Norton Internet Security 2004.

Der McAfee VirusScan, der an der Uni Wien als Gratissoftware angeboten wird, ist voll ADS-tauglich. Er entdeckt Viren in ADS beim Zugriff auf die Datei selbst dann, wenn nur der Hauptdatenstrom angesprochen wurde, und wird auch beim Durchsuchen der Festplatten fündig. Wesentlich dafür ist jedoch, dass Sie den Virenscanner so einstellen, dass er immer alle Dateien1) untersucht: Da Windows beim Erkennen der Funktion einer Datei auf Assoziationen setzt, die jedoch relativ einfach verändert werden können, sind ausführbare Programme (z.B. Viren) nicht zwingend an der Dateiendung .exe erkennbar. Den Virenscanner nur nach .exe-Dateien suchen zu lassen, greift daher zu kurz.

Mit Vorsicht zu genießen ist die Koppicillin-CD, die von AdministratorInnen gern verwendet wird, um Windows im abgeschalteten Zustand nach Viren und Trojanern zu durchsuchen. Dies ist insbesondere hilfreich, wenn man befürchtet, dass sich auf dem System ein aktives Rootkit befindet, ein Hacker-Werkzeug, das sich Windows gegenüber unsichtbar macht. Aufgrund der Konstruktion der Knoppicillin-CD findet jedoch keiner der dort verfügbaren Scanner Viren in alternativen Datenströmen. Damit bleiben Rootkits, die in ADS versteckt sind, mit diesem Werkzeug unauffindbar.

Vom Wurm befreit ...

... ist nicht unbedingt geheilt! Wer kennt schon alle Detailfunktionen des Wurms, der soeben vom System entfernt wurde? Welche Programme wurden mit Hilfe des mittlerweile eliminierten Trojaners in das System geschmuggelt? Diese Fragen und mehr sollten alle diejenigen beschäftigen, die sich eben aus der Umklammerung eines digitalen Ungeziefers befreit haben. Dank Rootkits, ADS und anderen Eigenheiten ist es unter Windows immer möglich, dass ein "Erbstück" auf einem kompromittierten System zurückbleibt. Ein einmal gehacktes oder auch nur von einem digitalen Schädling befallenes System ist nie mehr wirklich sicher. Ein in Alternate Data Streams verborgenes, aktives Rootkit lässt sich nur mit großem Aufwand enttarnen - auch ADS-taugliche Scanner wie McAfee sind den Tricks eines Rootkits hilflos ausgeliefert, sobald dieses erst einmal läuft.

Deshalb ist Vorbeugen stets besser als Heilen und Sicherheit von Anfang an die beste Lösung: Ein immer aktueller, immer aktiver, ADS-tauglicher und gut konfigurierter Virenscanner, eine ebenfalls von Beginn an aktive Personal Firewall (die in Windows XP integrierte Firewall genügt meist), regelmäßige ADS-Routinekontrollen sowie ein generell defensives Verhalten sparen langfristig viel Zeit und Mühe.

 

1) Wählen Sie dazu (Pfad je nach Aufruf): VirusScan Konsole - Bei-Zugriff-Scanner (bzw. Alle stationären Datenträger) - Eigenschaften - (Alle Vorgänge -) Entdeckung - Alle Dateien