Sonntag, 11. Dezember 2011

Procmon als Dauerläufer?

Einigen sollte "Process Monitor" ein bekannter Begriff sein.
Der Procmon ist ein äußerst hilfreiches Tool von Sysinternals.

http://technet.microsoft.com/de-de/sysinternals/bb896645


Vor einigen Jahren wurden der ehemalige Filemon (zeichnete Filezugriffe auf) und Regmon (Pendant für Registryzugriffe) miteinander verschmolzen und zusätzlich um einige Funktionen erweitert.
Herausgekommen ist dabei ein geniales Tool, der Process Monitor.


Dieses Programm eignet sich um aktuelle Zugriffe mitzuschneiden.
Was viele nicht wissen, es ist mindestens genauso brauchbar um ein längerfristiges Logging zu aktivieren.


Als Beispiel nehme ich einmal einen "Klassiker", die Frage:

Wer löscht Dateien aus meinem Verzeichnis?

Eine Möglichkeit der Überwachung ist natürlich die Überwachungsrichtlinie.
Auf NTFS Ebene können in den SACLs (System Access Control Lists) Überwachungseinträge angelegt werden.
Setzen wir also einen Überwachungseintrag auf "Unterordner und Dateien löschen", so wird beim Löschen in den betreffenden Verzeichnissen/Dateien ein Eintrag im Eventlog erzeugt. Leider ist das Ganze im Security Eventlog des

betreffenden Servers/Clients auf dem die Daten liegen sehr unübersichtlich.

Damit überhaupt überwacht wird, muss zunächst folgende Policy aktiviert werden:

Computerkonfiguration\Windows-Einstellungen\Sicherheitseinstellungen\Lokale Richtlinien\Überwachungsrichtlinie\Objektzugriffsversuche überwachen

Was nun aber, wenn ich die gesammelten Logs filtern möchte und ggf. auch archivieren möchte / muss?

Der Process Monitor bietet von Haus aus eine Fülle von Möglichkeiten Daten zu filtern. Sollen nicht nur Filezugriffe geloggt werden, sondern auch Registryzugriffe, so ist der Procmon die bessere Wahl.

Fallen hier nicht zu viele Daten an?

Ja.
Per Default loggt der Process Monitor alle Registry-, Filezugriffe mit.
(um es genau zu sagen, sogar noch etwas mehr, welches aber für diesen Anwendungsfall nicht relevant ist).

Setzt man im Vorfeld die betreffenden Filter, so wird trotzdem alles geloggt.
Das kann Vorteile haben (wenn man zum Beispiel im Nachhinein einen anderen Filter benötigt als ursprünglich vermutet), in der Regel möchte man jedoch nur die definierten Daten aufheben.

Hierfür stellt der Procmon folgende Option bereit:




"Drop Filtered Events" verwirft alle Events, die nicht dem Filter entsprechen.

Wo werden die Logs gespeichert?

Standardmäßig im Pagefile.
Nun ist dies für ein längeres Logging natürlich nicht wirklich sinnvoll.

Die Events können jedoch auch in ein File umgeleitet werden
(unter File > Backing Files ...):




Mit diesem Hintergrundwissen kann es auch schon fast losgehen.
Als Beispiel möchte ich nun alle Löschungen im Verzeichnis C:\myshare
loggen. Als erstes muss ich Filter und Settings definieren.

Dazu wie folgt vorgehen:

1. Process Monitor starten
2. Nur "File System Activity" aktivieren








3. Im Menü Filter > Filter ... wählen
4. "Operation is SetRenameInformationFile" wählen
5. "Path contains C:\myshare" wählen
6. Nun unter Filter > Drop Filtered Events noch aktivieren
7. Diese Settings nun exportieren, File > Export Configuration...

Jetzt kann der Process Monitor mittels Config-File gestartet werden.
Zur Vereinfachung sind in diesem Beispiel alle Files direkt auf C:\ abgelegt:

C:\Procmon.exe /BackingFile C:\mylog /LoadConfig C:\myconfig.pmc /Quiet /Minimized

Nun ist das Logging aktiviert.
In Kombination mit etwas Scripting, kann dies auch zeitgesteuert geschehen (z.B. mittels Aufgabenplanung).

Ein mögliches Beispiel wäre:

C:\Procmon.exe /Terminate
C:\Procmon.exe /BackingFile C:\%date%%random% /LoadConfig C:\myconfig.pmc /Quiet /Minimized

Die entstandenen Logfiles können nun von jedem Client aus geöffnet werden.
Zu beachten ist jedoch, wurde das Logfile auf einem x64 OS erstellt,
so ist auch zum Öffnen des Logs ein x64 System erforderlich.

Der Prozess Monitor muss mit administrativen Berechtigungen gestartet werden.



Keine Kommentare:

Kommentar veröffentlichen