Was ist C: \ $ Directory?

11

Wenn ich Process Monitor ausführe , werden ReadFileAnforderungen an gesendet C:\$Directory.

Was genau bedeutet das?


Aktualisieren:

Ich sehe auch $MapAttributeValue, was auch ungewohnt aussieht.

user541686
quelle
Das $repräsentiert einen versteckten oder administrativen / Systemordner / eine Datei. sieht aus wie $recycle.binOrdner.
αғsнιη

Antworten:

5

Update: Ich habe dieses Problem weiter untersucht (da ich auf meinem eigenen Computer das gleiche Verhalten festgestellt habe und mir Sorgen gemacht habe, dass es sich um eine Art Malware handelt), und jetzt glaube ich, dass meine ursprüngliche Antwort tatsächlich falsch war. Folgendes habe ich jetzt gefunden:

  1. Mehrere verschiedene Prozesse werden aus dieser Datei und aus verschiedenen Offsets gelesen, jedoch mit derselben Länge: 4 KB (genau eine Speicherseite).
  2. Es gibt ReadFile-Operationen, aber kein Öffnen der Datei, was wenig Sinn macht.
  3. Wenn ich mir den Stack-Trace ansehe, sehe ich, dass alle Anforderungen einen Seitenfehler im Trace enthalten, z. B. befindet sich diese gelesene Datei im IoPageRead()Kernel, der Seiten aus der Auslagerungsdatei in den Speicher liest.
  4. Diese Lesevorgänge finden in C: \ $ Directory und V: \ $ Directory auf meinem System statt, den beiden Laufwerken, auf denen Paging-Dateien gespeichert sind, und nirgendwo anders.

Aufgrund dieser Forschung bin ich der festen Überzeugung, dass dieses "Lesen von Dateien" eine Art Prozessmonitor-Artefakt ist und das eigentliche Lesen in der Auslagerungsdatei erfolgt. Ich habe keine Ahnung, warum ProcMon den Pfad als C: \ $ Directory auflistet.

Ich denke jetzt nicht, dass dieses C: \ $ -Verzeichnis eine echte NTFS-Metadatei ist . Ich denke jetzt nicht, dass dies eine illegitime Aktivität sein könnte (Virus oder andere Malware).

haimg
quelle
2
Ich bin mir ziemlich sicher, dass es nicht # 3 oder # 2 ist. Es ist also wahrscheinlich die Nummer 1. Es sagt mir aber eigentlich nichts ...
user541686
Normalerweise wird dies der explorer.exe zugewiesen. Also, ich denke auch, es ist nicht # 2 oder # 3.
Diskilla
Ich habe meine Antwort komplett geändert, sorry.
Haimg
Ich habe ein Kopfgeld hinzugefügt. Wenn es offizielle / inoffizielle Dokumente oder andere Ergebnisse gibt, wäre es großartig. Es ist ziemlich schwer, dieses Zeug zu googeln.
Stefano Borini
4

$ Directory und $ MapAttributeValue sind höchstwahrscheinlich Codenamen für Systembereiche auf der NTFS- Festplatte, und diese Verweise stammen von Programmen, die Dateien öffnen oder erstellen.

Diese Namen beziehen sich wahrscheinlich auf Metadateien , die von Wikipedia wie folgt definiert werden:

NTFS enthält mehrere Dateien, die das Dateisystem definieren und organisieren. In jeder Hinsicht sind die meisten dieser Dateien wie jede andere Benutzerdatei strukturiert ($ Volume ist die eigentümlichste), aber für Dateisystem-Clients nicht von direktem Interesse. Diese Metadateien definieren Dateien, sichern wichtige Dateisystemdaten, puffern Dateisystemänderungen, verwalten die Zuweisung von freiem Speicherplatz, erfüllen die BIOS-Erwartungen, verfolgen fehlerhafte Zuordnungseinheiten und speichern Informationen zur Sicherheit und zur Speicherplatznutzung. Sofern nicht anders angegeben, befindet sich der gesamte Inhalt in einem unbenannten Datenstrom.

$ Directory ist höchstwahrscheinlich die Master File Table (MFT), das Verzeichnis für alle Dateien und Ordner, in dem Dateiname, Erstellungsdatum, Zugriffsberechtigungen (mithilfe von Zugriffssteuerungslisten) und Größe als Metadaten gespeichert sind. Jedes Programm, das eine Datei oder einen Ordner öffnet oder erstellt, greift auf diesen Bereich der Festplatte zu.

$ MapAttributeValue ist höchstwahrscheinlich der Bereich Attributlisten , der wie folgt beschrieben wird:

Für jede im MFT-Datensatz beschriebene Datei (oder jedes Verzeichnis) gibt es ein lineares Repository von Stream-Deskriptoren (auch Attribute genannt), die in einem oder mehreren MFT-Datensätzen (die die sogenannte Attributliste enthalten) mit zusätzlichen Auffüllungen zum Füllen des Fixes gepackt sind 1 KB Größe jedes MFT-Datensatzes, und dies beschreibt vollständig die effektiven Streams, die dieser Datei zugeordnet sind.

harrymc
quelle
Ich verstehe es nicht, du sagst, es $Directoryist dasselbe wie $MFT? Außerdem gehören Attributlisten zu einzelnen Dateidatensätzen und werden in den einzelnen Datensätzen gespeichert. Es handelt sich nicht um globale Dateien, die im Stammverzeichnis der Festplatte gespeichert sind ...
user541686
Okay, ich habe auch meinen gelöscht, obwohl mein erster Kommentar immer noch steht (ich verstehe immer noch nicht, was Sie mit Phrasen wie "die MFT, die das Verzeichnis für alle Dateien und Ordner ist"
meinen
1
@Mehrdad: Ich habe versucht zu sagen, dass alle Dateien und Ordner darin definiert sind. Wenn also ein Programm eine Datei öffnet oder erstellt, muss das Betriebssystem darauf zugreifen.
Harryc
1
Ich kann Ihren Kommentar immer noch nicht verstehen. Die einzige Datei, in der alle Dateien und Ordner definiert sind, ist \$MFT. Auf der genannten Festplatte befindet sich keine Metadatei oder ein anderer Speicherort \$Directory. Ich verstehe nicht, wovon du sprichst.
user541686
1
Ich habe C:\$MFTes dort aber auch schon oft gesehen. Wollen Sie damit sagen, dass sich beide auf dasselbe beziehen? Ich verstehe nicht, warum sie würden, aber ok ...
user541686