Welche Protokolle werden für den Netzwerkfreigabezugriff verwendet

4568
oleksii

Ich möchte herausfinden, wie der Dateizugriff unter Windows mithilfe des Netzwerkfreigabezugriffs überwacht wird.

Ich habe 2 Computer, auf denen Windows 8 ausgeführt wird und die sich nicht in einer Active Directory-Domäne befinden. Computer 1 hat einen Ordner für alle Benutzer freigegeben. Computer 2 kopiert Dateien von Computer 1 aus dem freigegebenen Ordner.

enter image description here

Problem: Ich hätte erwartet, dass IO- Leseereignisse auf Computer 1 (mit procmon ) angezeigt werden, aber das passiert nicht. Ich weiß, dass ich IO-Metadaten durch Drehen der Dateizugriffsüberwachung erhalten kann, die jedoch ineffizient und schwer zu aggregieren sind mit Daten, die ich von einem Minifilter-Dateisystemtreiber erhalten habe.

Fragen:

  • Welche Protokolle werden auf Computer 1 und 2 verwendet, um über Netzwerkfreigaben auf Dateien zuzugreifen?
  • Warum werden bei procmon keine E / A-Ereignisse auf Computer 1 angezeigt, wenn Computer 2 auf den freigegebenen Ordner zugreift?
0
Nun, das Protokoll ist SMB oder CIFS. Aber ich würde IO auf dem entfernten Rechner erwarten, wenn ich tatsächlich Dateien kopiere. GiantTree vor 6 Jahren 0
Beim Zugriff auf die Freigabe werden keine echten E / A-Vorgänge verursacht, beim Kopieren von Dateien aus der Freigabe werden jedoch Leseoperationen ausgeführt. Stellen Sie sicher, dass Sie eine große Datei kopieren, damit der IO-Vorgang lange genug angezeigt wird. Frank Thomas vor 6 Jahren 0
@GiantTree Richtig, also SMB / CIFS, das ist gut zu wissen. Ich kann Computer1 überwachen, aber ich kann Computer 2 nicht überwachen. Wie kann ein SMB / CIFS-Dateisystem ohne Dateisystemtreiberstapel zugreifen? Ich verstehe nicht, wie replizierte / verschlüsselte Daten gelesen und auf Viren geprüft werden können, ohne einen Dateisystemstapel zu durchlaufen. oleksii vor 6 Jahren 0
@oleksii: ProcMon zeigt nicht an, was durch den Dateisystemtreiberstapel geht. Es zeigt nur, welche Kernel-Aufrufe von _userspace-Prozessen_ gemacht werden. Obwohl LanmanServer in svchost.exe zu leben scheint, könnte ein Teil davon vollständig im Kernel selbst implementiert sein (und daher nicht Teil eines sichtbaren Prozesses außer dem "System" -Prozess). grawity vor 6 Jahren 0
@FrankThomas Ich habe keine Lese-E / A auf Computer 1 gesehen (Kopieren von Dateien mit 100 MB) oleksii vor 6 Jahren 0
Beachten Sie, dass SMB vom Systemprozess (PID 4) aus ausgeführt wird. Daher ist es möglicherweise schwieriger, die Operationen über procmon zu lesen. Sie können dies mit netstat -abno | bestätigen findstr LISTENING` und schauen Sie sich Port TCP / 139 und TCP / 445 an, von denen Sie sehen, dass sie im Besitz von PID 4 ist. Frank Thomas vor 6 Jahren 0
@FrankThomas bestätigt, die Ports 139 und 445 befinden sich im Status LISTENING und werden vom System verwendet (pid 4). oleksii vor 6 Jahren 0

1 Antwort auf die Frage

3
grawity

Welche Protokolle werden auf Computer 1 und 2 verwendet, um über Netzwerkfreigaben auf Dateien zuzugreifen?

Das Windows-Dateifreigabeprotokoll heißt SMB, einmal kurz für "Server Message Block". Es kann über eine "NetBIOS Session" -Schicht (TCP-Port 139) laufen, wird jedoch häufiger über Raw-TCP (Port 445) verwendet.

(Version 1 wurde auch häufig "CIFS" genannt, obwohl meines Wissens das durch Standards definierte CIFS nicht zu 100% mit Windows SMBv1 identisch ist.)

Unter Windows wird der SMB-Server als LanmanServerDienst in einem der svchost.exe- Prozesse ausgeführt. (Ich bin nicht ganz sicher, aber ich denke, ein Teil davon könnte auch ein Kernel-Treiber sein, der in ProcMon nicht angezeigt wird, weil er keine Systemaufrufe auf dem Level durchführt, das ProcMon sie beobachtet.)

Gut zu wissen über den ersten Teil. Sehr nützlich, danke. Bezüglich procmon - es verwendet einen Minifilter-Dateisystemtreiber, ähnlich wie [passthough] (https://github.com/Microsoft/Windows-driver-samples/tree/master/filesys/miniFilter/passThrough), so dass IO-Ereignis-Metadaten eingespeist werden der Kernel, und er * sollte * diese Daten bekommen, aber nicht. Es müssen einige Windows-API-Aufrufe vorhanden sein, die entweder nicht den Standard-E / A-Stapel durchlaufen, oder diese API-Aufrufe sind nicht registriert, um vom procmon-Treiber gefiltert zu werden. oleksii vor 6 Jahren 0