Warum zum Teufel erlaubt NTFS unsichtbare ausführbare Dateien?

105

Sie können jede Datei in einer anderen Datei ausblenden, indem Sie Folgendes eingeben:

type sol.exe > container.txt:sol.exe

und um die Datei versteckte Datei auszuführen, verwenden Sie einfach:

start c:\hide\container.txt:sol.exe

Aber das Verrückte daran ist, dass es die Größe der Datei nicht erhöht (sie ist also völlig verborgen).

Und wenn Sie die Datei mit den versteckten Inhalten löschen, werden die versteckten Inhalte nicht gelöscht. Benutz einfach:

more <  container.txt:sol.exe > sol.exe

Warum erlaubt NTFS das? Es scheint der beste Weg zu sein, einen Virus zu verstecken.

Kredns
quelle
1
nett, scheint wie mac resourceforks.
Stefano Borini
15
schlimmer, wenn Sie sol.exe so, der Task - Manager zeigt den Prozessnamen als container.txt starten
hasen
16
Wir sollten Google bombardieren, damit "beängstigend" zu dieser Frage führt
hasen
4
Solange es das gibt, ist es immer noch erstaunlich, gelegentlich auf AV-Entwickler / andere Leute zu stoßen, die schwer mit dem Dateisystem arbeiten, von dem STILL nichts weiß. Ich erwarte nicht, dass der durchschnittliche App-Entwickler davon erfährt, da es keine Notwendigkeit gibt, aber wenn Sie sich intensiv mit Dateisystemen beschäftigen ... :-)
Brian Knoblauch
Angeblich können Sie auch ein ADS an einen Ordner anhängen. Sie können den ADS löschen, indem Sie den Ordner löschen. Wenn der Ordner jedoch das Stammverzeichnis Ihres Laufwerks ist, können Sie das Laufwerk C: nicht löschen, ohne das Laufwerk neu zu formatieren. Scheint ein Mechanismus zu sein, mit dem ich einen versteckten Rootkit-Virus erstellen kann (?).
HighTechGeek

Antworten:

98

Diese Frage hat zwei Seiten. Der erste Grund ist, warum diese Funktion überhaupt vorhanden ist, und der zweite Grund ist, warum die GUI (oder die Eingabeaufforderung) das Anzeigen und Verwalten der Funktion nicht erleichtert.

Es existiert, weil es nützlich ist. Mehrere andere Plattformen unterstützen mehrere Datenströme pro Datei. Auf dem Mac wurden sie zum Beispiel Gabeln genannt . Ich bin mir ziemlich sicher, dass es in der Mainframe-Welt ähnliche Dinge gibt, kann aber heute keine konkreten Beispiele nennen.

Unter modernen Windows werden zusätzliche Attribute für eine Datei gespeichert. Möglicherweise stellen Sie fest, dass das im Windows Explorer verfügbare Eigenschaftenfeld eine Registerkarte "Zusammenfassung" enthält, die in der einfachen Ansicht (unter Windows XP unterscheiden sich Ihre Laufleistung von den anderen Versionen) eine Reihe nützlicher Felder wie "Titel", "Betreff", "Autor" und "enthält so weiter. Diese Daten werden in einem alternativen Stream gespeichert, anstatt eine Art Side-Car-Datenbank zu erstellen, in der alles gespeichert wird, was zu leicht von der Datei getrennt werden würde.

Ein alternativer Stream wird auch verwendet, um die Markierung zu speichern, die besagt, dass die Datei von einer nicht vertrauenswürdigen Netzwerkquelle stammt, die sowohl von Internet Explorer als auch von Firefox beim Herunterladen angewendet wird.

Die schwierige Frage ist, warum es keine bessere Benutzeroberfläche gibt, um zu bemerken, dass die Streams überhaupt existieren, und warum es möglich ist, ausführbare Inhalte darin abzulegen, und noch schlimmer, sie später auszuführen. Wenn es hier einen Bug und ein Sicherheitsrisiko gibt, dann ist es das.

Bearbeiten:

Inspiriert von einem Kommentar zu einer anderen Antwort, finden Sie hier eine Möglichkeit, um herauszufinden, ob Ihr Viren- und / oder Malware-Schutz alternative Streams kennt.

Holen Sie sich eine Kopie der EICAR-Testdatei . Es sind 68 Byte ASCII-Text, der zufällig auch eine gültige x86-ausführbare Datei ist. Obwohl völlig harmlos, wurde von der Antivirenindustrie vereinbart, dass es sich um einen echten Virus handelt. Die Urheber dachten, dass das Testen von AV-Software mit einem echten Virus ein wenig zu viel wäre, als würde man den Feueralarm testen, indem man den Papierkorb in Brand setzt ...

Die EICAR-Datei lautet:

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Speichern Sie es mit der Erweiterung .COMund es wird ausgeführt (es sei denn, Ihr AV achtet darauf) und drucken Sie eine Begrüßung.

Es wäre informativ, es in einem alternativen Datenstrom zu speichern und einen Scan durchzuführen ...

RBerteig
quelle
11
Die angezeigte Dateigröße zeigt standardmäßig nur die Größe des $ DATA-Hauptdatenstroms an. Dies ist auch das, was Sie normalerweise wollen. Die Länge des Dateinamens (bei dem es sich um eine Art von Metadaten handelt) wird ebenfalls nicht in die Dateigröße einbezogen. Als Sicherheitsrisiko. ADS sind kein größeres Risiko als einzelne Dateien. Ich habe noch keine Malware gehört, die sich mit diesen Mechanismen erfolgreich verbreitet / versteckt hat.
Joey
4
Sie können nicht versehentlich eine ausführbare Datei ausführen, die in einem ADS einer Textdatei gespeichert ist. Es ist gut versteckt, zu gut versteckt für einen gewöhnlichen Benutzer, um es versehentlich auszuführen. Sie müssten zuerst kompromittiert werden.
R. Martinho Fernandes
7
@ashh: Martinho macht es klar - die Dunkelheit, die es schwierig macht, eine ausführbare Datei in einem solchen Stream zu finden, erschwert es auch, eine ausführbare Datei auszuführen, ohne dies aktiv zu versuchen. Vergleichen Sie dies beispielsweise mit dem ganzen Fiasko der "versteckten Dateierweiterungen", bei dem ausführbare Dateien beispielsweise als Textdateien in der GUI erscheinen und dennoch sehr einfach ausgeführt werden können.
Shog9
3
Angenommen, Sie haben einen AV, der der .COM-Datei zumindest in Echtzeit Aufmerksamkeit schenkt, können Sie ihn nicht als ADS anhängen, da der AV den Zugriff auf die .COM-Datei verhindern würde (für das Anhängen als ADS ist einer erforderlich, um auf die .COM-Datei zuzugreifen) Datei). Sie sollten jedoch in der Lage sein, eine Textdatei mit der EICAR-Zeichenfolge anzuhängen und sie mit der Erweiterung .COM im ADS zu benennen. Geben Sie also EICAR.txt> test.txt ein: EICAR.COM
KTC
2
Coole Tatsache über die EICAR.COM - Datei: Es wird mich nicht auf 64-Bit - Versionen von Windows ausgeführt werden, so denke ich , dieser Trick nicht mehr funktionieren , wenn alle auf 64-Bit - Maschinen sind (was immer noch wahrscheinlich eine Weile dauern).
Kredns
15

Diese Funktion ist für eine plattformübergreifende Funktion von Windows Server erforderlich: Dienste für Mac.

Auf diese Weise kann ein Windows-Server, der auf einer NTFS-Freigabe ausgeführt wird, über AFP auf Macs übertragen werden. Damit diese Funktion funktioniert, muss das NTFS-Dateisystem Gabeln unterstützen, und dies vom ersten Tag an.

Und bevor Sie fragen, wird diese Funktion noch verwendet? Ja, es läuft und wird täglich auf einem Server in einem von mir unterstützten Client verwendet.

Das wichtigste Sicherheitsproblem tritt auf, wenn Benutzer und Anwendungen vergessen oder nicht erkennen, dass es vorhanden ist.

Möglicherweise sollte es jedoch eine Option geben, die Gabeln in die Gesamtdateigröße einzubeziehen oder im Windows-Explorer anzuzeigen.

Bruce McLeod
quelle
2
Wenn Sie abstimmen wollen, hinterlassen Sie bitte einen Kommentar, warum.
Bruce McLeod
2
Dies klingt nach einem durchaus plausiblen Grund für die Existenz der Funktion.
RBerteig
3
Das einfache Hinzufügen dieser Funktion, um die Dateifreigabe für Macs zu ermöglichen, klingt nicht nach einem plausiblen Grund. Für die Freigabe über das Netzwerk muss die Datei nicht auf der Serverseite intakt gespeichert werden. Ich habe mehrere * nix-Apple-Sharing-Server gesehen, die die Datei in Daten und Ressourceninformationen aufgeteilt haben. Dies ist für den Kunden transparent. Das Ändern des tatsächlichen Laufwerksformats, um AFP zuzulassen, erscheint nicht realistisch. Könnte ein netter Vorteil sein, aber nicht als GRUND für diese Funktion.
Simurr
2
Ja, ich denke, wenn Sie behaupten wollen, dass SfM der Hauptgrund ist, warum MS ADSes in NTFS implementiert hat.
afrazier
3
Zitat gefunden: ... ADS-Funktionen wurden ursprünglich entwickelt, um Kompatibilität mit dem Macintosh Hierarchical File System (HFS) zu ermöglichen ; Dabei werden Dateiinformationen manchmal in separate Ressourcen aufgeteilt. Alternative Datenströme werden inzwischen von einer Vielzahl von Programmen, einschließlich des nativen Windows-Betriebssystems, zum Speichern von Dateiinformationen wie Attributen und zum temporären Speichern verwendet. Quelle: windowsecurity.com/articles/Alternate_Data_Streams.html
JamesBarnett
5

Ich würde mir vorstellen, dass eine der Hauptverwendungen (vielleicht sogar die beabsichtigte Verwendung) darin besteht, das Hinzufügen von Metadaten zu einer Datei auf transparente Weise zu ermöglichen. Der Grund dafür, dass sich die Dateigröße nicht ändert, ist, dass Sie in diesem Szenario nicht möchten, dass die Datei anders aussieht oder sich anders verhält, damit die ursprüngliche Anwendung nicht von einem bestimmten Aspekt des Aussehens der Datei abhängt.

Ich könnte mir interessante Anwendungen in IDEs vorstellen, bei denen manchmal mehrere Dateien eine Einheit bilden (Codedatei / Formulardatei usw.), die auf diese Weise an die Originaldatei angehängt werden können, damit sie nicht versehentlich getrennt werden.

Ich glaube auch, dass es einen Befehl gibt, um alle derartigen "Anhänge" in einem bestimmten Verzeichnisbaum zu finden, so dass sie tatsächlich nicht vollständig verborgen sind. Es würde mich auch überraschen, wenn die besseren Virenscanner dies nicht wissen und diese "versteckten" Bereiche überprüfen, aber Sie können dies überprüfen, indem Sie eine infizierte ausführbare Datei absichtlich an eine Textdatei anhängen und prüfen, ob sie gefunden wird.

jerryjvl
quelle
Könnten Sie bitte einen Link zu einer solchen ausführbaren Datei posten, damit ich es versuchen kann? ;)
R. Martinho Fernandes
Ich schlage vor, dass Sie AVG auf Ihrem Computer ausführen und dann eine der ausführbaren Dateien aus dem Quarantäneordner
herunterladen
2
@martinho, Sie möchten die EICAR-Testdatei: X5O! P% @ AP [4 \ PZX54 (P ^) 7CC) 7} $ EICAR-STANDARD-ANTIVIRUS-TEST-FILE! 68 Byte ASCII-Text ( die gesamte Geschichte finden Sie unter eicar.org/anti_virus_test_file.htm ) in einer Datei mit der Erweiterung .COM. Es wird ausgeführt und eine Nachricht gedruckt. Es sei denn, Ihr AV funktioniert natürlich. Legen Sie es in einem alternativen Datenstrom ab und überprüfen Sie es dort ebenfalls.
RBerteig
@ RBerteig: Hey cool ... wusste nicht, dass es so etwas gibt.
Jerryjvl
@jerryjvl, wie sie sagen, schlägt es, den Feueralarm zu testen, indem man den Papierkorb in Brand setzt ...
RBerteig
5

Hier ist ein guter Artikel über die potenzielle Sicherheitslücke durch alternative Datenströme .

JP Alioto
quelle
6
<nitpick> Es ist eine Sicherheitsanfälligkeit, keine Bedrohung. </ nitpick> Und es ist keine so große Sache, wie es sich anhört. Sie müssen bereits über Anmeldeinformationen verfügen, um es zu verwenden.
Romandas
Kein Problem. Übrigens, überprüfen Sie Ihre Rechtschreibung. Und denken Sie immer daran: Bedrohungen nutzen Schwachstellen aus. Bedrohungen sind in der Regel Menschen, aber auch Naturkatastrophen und gemachte Katastrophen zählen.
Romandas
@romandas, welche Anmeldeinformationen benötigen Sie bereits? Zu Hause laufen die meisten Windows-Benutzer (insbesondere XP) mit Administratorrechten. Warum ist das nicht so schlimm, wie es sich anhört?
Ash
@ashh, "mit einer Methode zum Verstecken ... auf einem System, gegen das verstoßen wurde". Das System muss bereits kompromittiert sein, um etwas zu verbergen und Ähnliches auszuführen.
KTC
5

Gute Frage, ich habe ADS erst letztes Jahr richtig erkannt und bin seit vielen Jahren Windows-Entwickler. Ich kann garantieren, dass ich damit nicht alleine bin.

Da ich in der Lage war, nach alternativen Daten für Dateien zu suchen, fand ich das nützliche kleine Tool Lads von Frank Heyne. Es kann ADS für alle Dateien in einem bestimmten Verzeichnis auflisten, auch für verschlüsselte Dateien (und auch innerhalb von Unterverzeichnissen).

Asche
quelle