derwowusste
Goto Top

Automatische Eventlogauswertung mit Filterung

Moin Kollegen.

Ich möchte die Machbarkeit von folgendem prüfen: kann ich per Skript das Sicherheitseventlog auf Vorhandensein von Events mit folgenden Kriterien prüfen:

Source: Microsoft Windows security auditing
Task category: Removable storage
Process name: C:\Windows\explorer.exe
Accesses: WriteData

Wie geht das? Kann ich per Powershell all diese Merkmale abfragen?

Sinn und Zweck: mit Win8 kann man ja Auditing auf USB-Sticks machen. Ich möchte gerne feststellen, ob unsere Verschlüsselung, die wir den Nutzern für USB-Sticks anbieten, auch genutzt wird, oder ob verbotenerweise Dateien per Explorer (und somit unverschlüsselt) drauf geschrieben werden.

PS: Nein, den Stick komplett zu verschlüsseln ist nicht möglich, da Kundensysteme diesen nicht lesen könnten.

Content-ID: 237154

Url: https://administrator.de/contentid/237154

Ausgedruckt am: 16.11.2024 um 17:11 Uhr

colinardo
colinardo 05.05.2014 aktualisiert um 17:33:02 Uhr
Goto Top
Hi dww,
das lässt sich machen:
http://blogs.technet.com/b/ashleymcglone/archive/2013/08/28/powershell- ...

hier ein rudimentäres Beispiel (ungetestet, habe hier keine Beispieldaten zur Verfügung):
Get-WinEvent -LogName Security | ?{$_.ProviderName -eq "Microsoft-Windows-Security-Auditing" -and $_.ID -eq 4656 -and $_.Message -match "Prozessname:\s+C:\\Windows\\explorer.exe"}
Die weiteren Eigenschaften muss man dann noch mit -and anhängen und mit Regex filtern.

Wäre super wenn du mal den XML-Result oder die vollständige Powershell-Ausgabe eines Events posten könntest, den du filtern willst.

Grüße Uwe
DerWoWusste
DerWoWusste 05.05.2014 um 17:38:29 Uhr
Goto Top
Danke Uwe. Sieht ganz gut aus, wenn ich verbessere auf
 Get-WinEvent -LogName Security | ?{$_.ProviderName -eq "Microsoft-Windows-Security-Auditing" -and $_.ID -eq 4656 -and $_.Message -match "Process name:\s+C:\\Windows\\explorer.exe"}  

Ich kriege einen kleineren (=genaueren) Output, wenn ich nur nach explorer.exe und nach $_.Message.Contains("4417") filtere, zum Beispiel
Get-EventLog -log Security | Where {$_.Message.Contains("4417")} |Where {$_.Message.Contains("explorer.exe")}  

Die 4417 steht hierbei für WriteData (so steht es in der xml-View des Events)
Ich humpele mir gerade einen ab, deins und meins zu verbinden... aber mein Ziel ist schon erreicht, es ginge!

Wenn Du Test-Events brauchst: advanced auditing ("audit removable storage") auf win8 (hier 8.1) aktivieren und ein paar Dateien auf den USB-Stick kopieren.
colinardo
colinardo 05.05.2014 aktualisiert um 18:28:47 Uhr
Goto Top
bis dahin kannst du es so machen:
Get-WinEvent -LogName Security | ?{$_.ProviderName -eq "Microsoft-Windows-Security-Auditing" -and $_.Task -eq "12812" -and $_.Message -match "\s+0x2" -and $_.Message.contains("explorer.exe")}  
colinardo
Lösung colinardo 05.05.2014 aktualisiert um 21:20:57 Uhr
Goto Top
habe das ganze mal mit einer zuverlässigen XPATH Query abgekürzt ... hatte ich ganz vergessen... im Oberstübchen ist halt langsam kein Speicherplatz mehr frei , da muss ich wohl mal meine "Garbage Collection" drüber laufen lassen face-smile
Get-WinEvent -LogName Security -FilterXPath 'Event[System[Provider[@Name="Microsoft-Windows-Security-Auditing"] and Task="12812"] and EventData[Data[@Name="ProcessName"]="C:\Windows\explorer.exe" and Data[@Name="AccessMask"]="0x2"]]'

Viel Erfolg und schönen Abend
Grüße Uwe
DerWoWusste
DerWoWusste 05.05.2014 aktualisiert um 19:09:32 Uhr
Goto Top
Schön. Liefert 2 Zeilen bei 2 kopierten Dateien, astrein. Und wofür steht Task 12812?
0x2 steht für write?

Am Schönsten wäre es natürlich, einen eventgetriggerten Task loszulassen, der bei diesen Entries Alarm schlägt. Aber mit dem custom trigger hab ich mir noch schwerer getan als mit der Eventlogsuche.
colinardo
colinardo 05.05.2014 um 20:31:25 Uhr
Goto Top
Zitat von @DerWoWusste:
Und wofür steht Task 12812?
Das ist die Konstante für die Task Category "Removable storage" oder in Deutsch "Wechselmedien" ; durch die Konstante ist es sprachunabhängiger face-wink
0x2 steht für write?
Genau, das ist die Bitmaske für Write. Die benötigten Zugriffsattribute werden in der Maske mit OR verknüpft. Das alleinige Vorhandensein des Wertes 0x2 ist der eigentliche Schreibvorgang dem natürlich vorher noch andere Zugriffsanforderungen im LOG voraus gehen.
Am Schönsten wäre es natürlich, einen eventgetriggerten Task loszulassen, der bei diesen Entries Alarm
schlägt. Aber mit dem custom trigger hab ich mir noch schwerer getan als mit der Eventlogsuche.
Das ist eigentlich ähnlich aufgebaut wie die XPath Query im obigen Beispiel. Poste dir dazu noch die entsprechende XML Query...
DerWoWusste
DerWoWusste 05.05.2014 um 20:42:08 Uhr
Goto Top
Poste dir dazu noch die entsprechende XML Query
Fett. Du solltest langsam über einen Donate-Button nachdenken face-wink
colinardo
Lösung colinardo 05.05.2014 aktualisiert um 21:20:25 Uhr
Goto Top
Zitat von @DerWoWusste:

> Poste dir dazu noch die entsprechende XML Query
Fett. Du solltest langsam über einen Donate-Button nachdenken face-wink
gute Idee face-wink

probiers mal hiermit:
<QueryList>
  <Query Id="0" Path="Security">  
    <Select Path="Security">*[System[Provider[@Name="Microsoft-Windows-Security-Auditing"] and Task="12812"] and EventData[Data[@Name="ProcessName"]="C:\Windows\explorer.exe" and Data[@Name="AccessMask"]="0x2"]]</Select>  
  </Query>
</QueryList>
kanns leider heute nicht mehr testen.
http://blogs.technet.com/b/askds/archive/2011/09/26/advanced-xml-filter ...
DerWoWusste
DerWoWusste 05.05.2014 um 21:20:11 Uhr
Goto Top
Bravo. Klappt auf Anhieb, danke!
Mutet zwar nach BigBrother an, aber wir können auf diese Weise den Nutzern per Popup Bescheid stoßen, dass sie den Stick falsch benutzen und dass dies bemerkt wird.
Scoby2
Scoby2 31.03.2017 um 16:37:07 Uhr
Goto Top
Hallo Leute,
wenn ich das richtig verstehe geht es hier darum, herauszufinden, wenn jemand mit dem Windows-Explorer Dateien auf einen USB-Stick schreibt.

Leider weis ich nicht so richtig, wie ich den geposteten Code verwenden muss. Könnt ihr mit helfen?

Danke
colinardo
colinardo 31.03.2017 um 16:44:28 Uhr
Goto Top
Zitat von @Scoby2:
Leider weis ich nicht so richtig, wie ich den geposteten Code verwenden muss. Könnt ihr mit helfen?
Eventlog-Trigger anlegen und XML rein pasten, hier lesen:
http://blog.backslasher.net/filtering-windows-event-log-using-xpath.htm ...

Grüße Uwe
Scoby2
Scoby2 12.04.2017 um 10:58:25 Uhr
Goto Top
Danke!
Es lag nicht an deinem Code sondern daran, dass ich erst mal einstellen musste damit er überhaupt irgendwas loggt. Das war unter Windows 10 Professional gar nicht so einfach.

Falls jemand das selbe Problem hat:
Man benötigt das Programm gpedit.msc, was bei mir gar nicht drauf war und ich erstmal nachinstallieren musste. Mit diesem Tool kann man es einfach nachinstallieren:
http://drudger.deviantart.com/art/Add-GPEDIT-msc-215792914

Danach kann man über Eingabe von gpedit.msc diesen „Editor für lokale Gruppenrichtlinien“ starten.

Dort dann unter Computerkonfiguration -> Windows-Einstellungen -> Sicherheitseinstellungen -> Erweiterte Überwachungsrichtlinienkonfiguration (was für ein Wort ^^) -> Systemüberwachungsrichtlinien -> Objektzugriff

Da kann man dann den Punkt „Wechselmedien überwachen“ auswählen und aktivieren.

Jetzt noch die Konsole starten (cmd), gpupdate /force eintippen und abschicken.

Dieses ganze Vorgehen habe ich hier gelesen:
https://technet.microsoft.com/en-us/library/jj574128(v=ws.11).aspx

So.
Wenn man das alles gemacht hat werden Zugriffe auf USB-Sticks in der Windows-Ereignisanzeige gespeichert und jetzt kann man mit dem von colinardo geposteten Code schön nach Schreibzugriffen filtern.

Coole Sache! Wer hätte gedacht, dass das auch mit Windows-Boardmitteln geht. Man liest überall nur immer „Kaufe Programm XYZ!“.
Danke fürs Aufzeigen dieser coolen Möglichkeit.

Aber ist es normal, dass gpedit bei Windows nicht mehr dabei ist? Oder heist das jetzt nur anders?