[English]Im Artikel Windows: Merkwürdige ZIP-Handhabung im Explorer kam das Thema NTFS Alternative Data Streams in Verbindung mit Windows auf. Da ich dieses Thema bisher nicht im Blog behandelt habe, und die Informationen nicht allgemein bekannt sind, werfe ich in diesem Artikel einige Blicke auf NTFS ADS.
Anzeige
Technische Hintergründe zu NTFS ADS
Alternative Data Streams (ADS) wurden im New Technology File System (NTFS) wohl schon in Windows NT 3.x eingeführt und in Windows 2000 und Windows XP benutzt (habe mich seinerzeit nie damit befasst). Laut dieser Quelle, um bestimmte Ressourcen wie Icons des Macintosh Macintosh Hierarchical File System (HFS) zu unterstützen.
NTFS ADS: Weitere Informationen in Dateien speichern
Alternative Data Streams ermöglichen es, in einer Datei unter NTFS weitere Informationen zu speichern. Der englischsprachige Artikel hier zeigt Beispiele, wie sich Texte per Windows-Editor Notepad in ADS von anderen Dateien ablegen lassen. Man auf diese Weise aber auch .exe-Dateien in den $DATA-Streams ablegen. Daher müssen Virenscanner auch diese Streams durchsuchen, um Malware aufzuspüren.
Microsoft verwendet die NTFS ADS (m.W. ab) Windows Vista/Windows Server 2008 auch, um Zoneninformationen für Dateien mit abzulegen. Wird eine Datei aus dem Internet heruntergeladen, erhält diese eine Zoneninformation zugeordnet. Gemäß den den Beiträgen von Microsoft, sowie zum IE, und diesem Blog-Eintrag gibt es ein ZoneID-Flag, welches folgende Werte:
0: Local machine;
1: Local intranet;
2: Trusted sites,
3: Internet
4: Restricted sites
Anzeige
aufweisen darf.
Integrity Level (IL) ab Windows Vista
Ab Windows Vista hat Microsoft dann eine zusätzliche Sicherheitsebene in Form der Verbindlichkeitsstufen (Integrity Level) eingeführt. Die Wikipedia hält diesen englischsprachigen Artikel zum Thema vor und Microsoft arbeitet sich hier und hier am Thema ab. Ein deutschsprachiger Beitrag findet sich beispielsweise in der WinFAQ.
In kurz: Mit dem neuen Sicherheitslevel behandelt Windows (ausführbare) Dateien in Abhängigkeit von deren Herkunft mit verschiedenen Vertrauensstufen. Eine Datei aus dem Internet wird als unsicher eingestuft.
Mir war im Hinterkopf die Information bekannt, dass der Zone-Identifier vom Internet Explorer gesetzt werde (habe hier die gleiche Info gefunden). Aber die Zoneninformation wird wohl inzwischen unabhängig vom Browser beim Download in den ADS gesetzt (ich verwende den Google Chrome und man erhält auch mit dem Firefox dieses Verhalten).
Programme mit niedriger Verbindlichkeitsstufe werden an der Ausführung (z.B. unter dem IE) gehindert. In der PowerShell oder beim Aufruf von Programmen, die aus dem Internet heruntergeladen wurden, erscheint dann eine Sicherheitswarnung.
Das obige Dialogfeld zeigt eine solche Warnung, die mir unter Windows 7 beim Starten einer aus dem Internet heruntergeladenen Programmdatei angezeigt wird. Passt man beim Download von ZIP-Archiven mit Programmen nicht auf, kann dies zu allerlei Konflikten führen. Im Artikel Windows: Merkwürdige ZIP-Handhabung im Explorer hatte ich so etwas skizziert und beispielsweise erwähnt, dass dies der Grund sei, warum aus dem Internet geladene (und ggf. aus einem ZIP-Archiv entpackte) CHM-Hilfedateien dann keinen Inhalt anzeigen.
So löscht man die Sicherheitsinformation
Ist das aus dem Internet geladene Programm oder die Datei als 'sicher' einzustufen, nervt die ständige Sicherheitsabfrage. Zudem kann es ja zu Fehlfunktionen kommen, weil Funktionen wegen der über die Zoneninformation 'Internet' wegen des Integritäts-Level Low zur Ausführung gesperrt werden.
Um dies zu beheben, kann man das Sicherheitsattribut, welches aus den Zoneninformationen der aus dem Internet geladenen Dateien abgeleitet wird, sehr einfach löschen. Ein Rechtsklick auf die Datei und im Kontextmenü Eigenschaften wählen. Dann lässt sich auf der Registerkarte Allgemein kontrollieren, ob die aus der Zoneninformation abgeleitete Sicherheitsinformation zum Blocken gesetzt ist.
Die betreffende Eigenschaftenseite sieht unter Windows 7 wie in obigem Bild aus – man braucht nur auf die Schaltfläche Zulassen zu klicken, um die Zoneninformationen zu löschen. Bei Windows 10 ist statt der Schaltfläche das Kontrollkästchen Zulassen zu markieren (siehe folgendes Bild).
Dann sollte die Sicherheitsnachfrage künftig unterbleiben, da man die Datei als 'sicher' eingestuft hat.
Hinweis: Man kann in Windows auch bestimmten Anwendungen mittels icacls.exe die Berechtigung erteilen, dass diese mit einem Integrity Level Low ausgeführt werden können. Das Ganze ist zum Beispiel in diesem MSDN-Beitrag (Englisch) von Microsoft beschrieben.
NTFS ADS-Informationen abrufen
Um sich anzuschauen, ob eine Datei zusätzliche NTFS ADS-Inhalte enthält, lässt sich entweder die PowerShell oder das Tool streams.exe aus den Sysinternals-Tools oder der dir-Befehl verwenden.
In obigem Bild habe ich mit streams.exe die betreffenden ADS-Einträge anzeigen lassen. Beide Dateien weisen einen Zone.Identifier:$DATA-Wert von 26 auf. Wenn meine Interpretation richtig ist, gibt dieser Wert aber nur die Länge von ADS $DATA an (26 Byte). Es wird aber nicht gesagt, ob die Datei aus der Zone Internet heruntergeladen wurde.
Der ADS-Eintrag wird gelöscht geht auch nicht verloren, wenn die Option Zulassen in den Dateieigenschaften gesetzt wird. Das habe ich bei UpdateGenerator.exe gemacht. Der ADS wurde nicht entfernt (sofern mir beim kurzen Test kein Fehler unterlaufen ist – Ergänzung: Scheint ein Fehler gewesen zu sein, beim zweiten Test war der Zone.Identifier samt ADS nicht mehr zu finden).
Aber man braucht eigentlich das Tool streams.exe nicht. Es reicht, beim normalen dir-Befehl den Schalter –r anzugeben, um die ADS-Informationen aufzulisten (siehe folgendes Bild).
In der PowerShell lässt sich Get-Item -Stream zur Anzeige von ADS-Inhalten verwenden (siehe auch hier). Mit der PowerShell lässt sich übrigens auch herausfinden, ob ein Download aus dem Internet erfolgt ist. Der Befehl:
get-content –Path c:\…\name –Stream Zone.Identifier
sollte die betreffende Information liefern (siehe und nachfolgenden Screenshot).
Ein Programm mit grafischer Oberfläche (GUI), welches die ADS eines Ordners auflistet (siehe obiges Bild) ist der Nirsoft AlternateStreamView, der sich hier kostenlos herunterladen lässt. Wählt man eine Datei per Doppelklick an, werden zusätzliche Informationen (z.B. die Länge des Streams, oft 26 Byte) angezeigt. Das Programm ermöglicht (per Kontextmenü oder die Menübefehle) auch den Inhalt bestimmter Alternative Data Streams in eigene Ordner zu extrahieren.
NTFS Alternative Data Streams entfernen
Um die NTFS Alternative Data Streams mit den Zoneninformationen zu entfernen, könnte man, wie in den Kommentaren hier vorgeschlagen, die Dateien von einem NTFS-Datenträger auf ein FAT32-Medium kopieren. FAT32 unterstützt keine Alternative Data Streams, d.h. wird die Datei auf einen NTFS-Datenträger zurückkopiert, ist der ADS mit der Zoneninformation weg.
Der einfachere Weg ist aber den Schalter –d (delete Streams) des Tools streams.exe für diesen Zweck zu verwenden (siehe hier).
Aber das ist m. E. in den meisten Fällen nicht erforderlich, das das Zulassen der Datei über die Eigenschaften reicht, um diese in Umgebungen mit niedriger Vertrauensstufe ausführbar zu machen.
In diesem Artikel geht man übrigens auf Tricks ein, um sogenannte Stealth Data Streams mit versteckten Daten anzulegen.
Ähnliche Artikel:
Probleme mit der Anzeige von CHM-Dateien
Windows Mai 2018-Update blockt CHM-Dateianzeige
Windows: Merkwürdige ZIP-Handhabung im Explorer
Anzeige
Klasse Zusammenfassung von ADS und ein guter Überblick der Tools, um damit umzugehen!
> Es wird aber nicht gesagt, ob die Datei aus der Zone Internet heruntergeladen wurde.
Korrekt. Die von Streams ausgegebene Zahl 26 gibt die Länge des ADS an. Wenn man den Inhalt eines ADS sehen will, kann man z.B. Notepad verwenden, ganz allgemein so
>notepad.exe datei:ADS
konkret z.B. so
>notepad wsusoffline114.zip:Zone.Identifier
PowerShell bietet ebenfalls Kommandos zur Verwaltung von ADS, z.B. Get-Content zum Anzeigen des Inhalts, wie im von ralf hier verlinkten MS-Blog zu lesen: https://www.borncity.com/blog/2018/09/22/windows-merkwrdige-zip-handhabung-im-explorer/#comment-62997
> Der ADS-Eintrag geht auch nicht verloren, wenn die Option Zulassen in den Dateieigenschaften gesetzt wird.
Mmh, bei mir wurde der ADS nach Klick auf "Zulassen" immer komplett entfernt. Aber wahrscheinlich kommt es darauf an, was in dem ADS sonst noch steht, bzw. ob es noch weitere ADS für diese Datei gibt (eine Datei kann meines Wissens beliebig viele ADS haben).
Grüße
Zum Notepad: Funktioniert tatsächlich – ich hatte beim Test den AlternateStreamView verwendet. Der bietet eine Schnittstelle, um ADS in einem Programm anzuzeigen – da funktionierte es nicht, wohl weil :Zone.Identifier nicht vom Tool mit als Parameter angegeben wurde.
Zum Löschen des ADS-Eintrags – ich habe es nochmals an einer zweiten Datei getestet – scheinbar ist mir wirklich ein Fehler passiert. Der Zone.Identifier wird entfernt. Möglicherweise habe ich schlicht die falsche Datei beim Manipulieren erwischt.
AUTSCH: schlecht recherchiert!
1. NTFS unterstützt ADS seit Anbeginn seiner Zeiten!
"data streams" sind "Attribute" des Typs $DATA eines NTFS-Dateisystemobjekts.
Der "normale" Inhalt von Dateien steht im (einzigen) unbenannten "data stream"; Verzeichnisse dagegen haben keine (unbenannten) "data streams", ihr Inhalt steht im benannten Attribut "$I030" des Typs $INDEX_ALLOCATION.
Siehe u.a. https://msdn.microsoft.com/en-us/library/aa364404.aspx, https://msdn.microsoft.com/en-us/library/bb470038.aspx und https://msdn.microsoft.com/en-us/library/dn393272.aspx
Wer's anschaulicher braucht: https://blogs.technet.microsoft.com/askcore/2013/03/24/alternate-data-streams-in-ntfs/
2. der ADS "Zone.Identifier" wird mindestens ab IE6 und OE6 (auch unter NT4) geschrieben.
Siehe https://msdn.microsoft.com/en-us/library/dn392609.aspx
Anfangs musste jedes Programm das selbst implementieren; mit XP SP2 hat Microsoft dann eine Schnittstelle eingeführt: den Attachment Manager.
Den rufen Programme wie Google Chrome, Mozilla Firefox/Thunderbird, Microsoft Outlook, Windows (Live) Mail etc., die mit Inhalten aus dem Netz arbeiten, alle auf!
Siehe u.a. https://support.microsoft.com/en-us/help/883260, https://support.microsoft.com/en-us/help/889815, https://support.microsoft.com/en-us/help/918895, https://support.microsoft.com/en-us/help/914922, https://support.microsoft.com/en-us/help/942532, https://support.microsoft.com/en-us/help/2588679
JFTR: bei HTML enthaltenden Dateien (*.HTM, *.MHT, *.CHM) wird vom IE (WIMRE ab dessen mit Windows NT4 sowie 98 ausgelieferten Version 4) sowie Outlook Express/Windows Mail beim Speicher auch noch ein "mark of the web" als HTML-Kommentar eingefügt.
Siehe https://technet.microsoft.com/en-us/library/ms537628.aspx
Zunächst: Vielen Dank für den zusätzlichen Input, das schadet sicher nicht.
> AUTSCH: schlecht recherchiert!
Bei jedem Thema kommt immer einer, der mehr weiß aka Experte, Günter hat das selbst für Durchschnittsanwender gut verständlich aufbereitet.
> JFTR: bei HTML enthaltenden Dateien (*.HTM, *.MHT, *.CHM)
> wird vom IE (WIMRE ab dessen mit Windows NT4 sowie 98
> ausgelieferten Version 4) sowie Outlook Express/Windows Mail
> beim Speicher auch noch ein "mark of the web" als
> HTML-Kommentar eingefügt.
Heißt also: diese Markierung bleibt auch bei FAT32 noch drin? Wie verhalten sich die ADS und die Markierung bei ExFat? Beides begegnet einem ja gelegentlich noch auf USB-Sticks. Und wie ist das eigentlich bei den gängigen Linuxes dieser Welt?
Mein "AUTSCH!" gilt den Aussagen "Alternative Data Streams (ADS) wurden im New Technology File System (NTFS) wohl schon in Windows 2000 und Windows XP eingeführt." und "Microsoft verwendet die NTFS ADS (m.W. ab) Windows Vista/Windows Server 2008 auch, um Zoneninformationen für Dateien mit abzulegen."
Neben dem ADS "Zone.Identifier" hat Microsoft unter Windows 2000 und XP noch welche für "OLE compound documents" sowie den FAX- und Bildbetrachter verwendet.
Mit Vista wurde das auf OLE2 "streams" umgestellt: siehe u.a. https://support.microsoft.com/de-de/help/105763
Wie Du anhand der recht kleinen MSKB-Nummer sehen kannst stammt dieser Artikel aus den Zeiten von NT3.5
Alle Dateisysteme speichern nicht nur Textdateien transparent.
ADS werden auf ExFAT selbstverständlich NICHT unterstützt: siehe https://msdn.microsoft.com/en-us/library/ee681827.aspx
Ebensowenig auf ext[234] und Konsorten.
zu Stefan Kanthak: "… Attachment Manager. Den rufen Programme wie Google Chrome, Mozilla Firefox/Thunderbird, Microsoft Outlook, Windows (Live) Mail etc., die mit Inhalten aus dem Netz arbeiten, alle auf!"
firefox (zur zeit jedenfalls) nicht:
async downloadDone(aDownload) {
// On Windows, we mark any file saved to the NTFS file system as coming
// from the Internet security zone unless Group Policy disables the
// feature. We do this by writing to the "Zone.Identifier" Alternate
// Data Stream directly, because the Save method of the
// IAttachmentExecute interface would trigger operations that may cause
// the application to hang, or other performance issues.
// The stream created in this way is forward-compatible with all the
// current and future versions of Windows.
https://dxr.mozilla.org/mozilla-central/source/toolkit/components/downloads/DownloadIntegration.jsm#471
Verwechsle ich da jetzt etwas oder ist das der gleiche Mechanismus: Es gibt Programme, die legen bei jeder weiteren Speicherung einen zweiten Stream an und schalten dann zwischen diesen beiden Streams um. Sollte beim Speichern etwas schief gehen, bleibt die alte Version erhalten. Allerdings ist jede Datei dann doppelt so groß, weswegen findige Programmierer wieder Programme zum Löschen des alten Streams geschreiben haben.
Sollte genau das sein, was da verwendet wird. Wobei mir kein Programm bekannt ist, was so was macht (will aber nix heißen).
Ein ausführlicher Artikel zu Integrity Levels und deren korrekter Einsatzweise wäre sehr interessant.