37958
Goto Top

Powershell - suche nach gelöschter Datei aus LOG

Hi,
da bin ich wieder.

Ich suchte nach einer Möglichkeit, aus LOG-Dateien zu extrahieren, wo man das Löschen von Dateien nachvollziehen kann.

Das funktioniert soweit ganz gut ...
Ist aber etwas unübersichtlich, wenn man z. B. nach einer bestimmten Datei sucht.

In der Powershell gibt es da: Get-EventLog security | where{$_.eventID -eq 4663}

Hier wäre es cool, wenn man da noch den Dateinamen mitgeben könnte.
Ein Highlight wäre dann noch die Ausgabe von EventData/SubjectUserName und Protokolierzeit.

Hat da mal jemand eine Idee?

Grüße
Heinz

Content-Key: 330194

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

Ausgedruckt am: 19.03.2024 um 09:03 Uhr

Mitglied: 132272
132272 22.02.2017 aktualisiert um 15:21:15 Uhr
Goto Top
Öhm Heinz,
im letzten Link war das doch auch schon mit dabei
Protokollierung gelöschter Dateien auf einem Fileserver
Die Ausgabe kannst du einfach mit einem where-object durchsuchen.

Heute wohl keinen guten Tag erwischt was face-wink

Gruß
Mitglied: 37958
37958 22.02.2017 um 15:37:56 Uhr
Goto Top
Doch mein Tag ist ganz ok.
Anbei mein Ansatz zum Exportieren und in Excel kann ich das dann auch gut durchsuchen.
Get-EventLog "Security" -InstanceId 4663 | % {  
    New-Object psobject -Property @{
        Index = $_.Index
        TimeGenerated = $_.TimeGenerated
        "Account Name" = $_.ReplacementStrings[1]  
        "Object Type" = $_.ReplacementStrings[5]  
        "Object Name" = $_.ReplacementStrings[6]  
    }
} | export-csv c:\export.csv -NoTypeInformation

where-object?
Kannst du mir da ein Beispiel geben für den Dateinamen xyz.docx?
Mitglied: 132272
132272 22.02.2017 aktualisiert um 15:48:38 Uhr
Goto Top
Anstatt es in eine Datei zu exportieren kannst du direkt in bestimmten Spalten suchen.
$log = Get-EventLog "Security" -InstanceId 4663 | % {  
    New-Object psobject -Property @{
        Index = $_.Index
        TimeGenerated = $_.TimeGenerated
        "Account Name" = $_.ReplacementStrings[1]  
        "Object Type" = $_.ReplacementStrings[5]  
        "Object Name" = $_.ReplacementStrings[6]  
    }
} 
$log | ?{$_.'Object Name' -like "*\xyz.docx"}  
Mitglied: 37958
37958 08.03.2017 um 11:47:22 Uhr
Goto Top
Hi cruzer,

Wie würde das denn funktionieren, wenn ich das security-logfile in einem anderen Ort gespeichert habe?
Es wurde zu groß und ich habe dann "speichern unter" gemacht und danach gelöscht gedrückt in der Ereignisanzeige.

Grüße
HK
Mitglied: 132272
132272 08.03.2017 um 12:04:54 Uhr
Goto Top
Statt Get-Eventlog / Get-WinEvent nutzen:
Get-Winevent -path 'c:\mylog.evtx'  
Mitglied: 37958
37958 08.03.2017 um 12:15:04 Uhr
Goto Top
So aber nich, oder?

$log = Get-Winevent -path 'D:\sicherheit20170306.evtx' | % {  
    New-Object psobject -Property @{
        Index = $_.Index
        TimeGenerated = $_.TimeGenerated
        "Account Name" = $_.ReplacementStrings[1]  
        "Object Type" = $_.ReplacementStrings[5]  
        "Object Name" = $_.ReplacementStrings[6]  
    }
} 
$log | ?{$_.'Object Name' -like "*asdf.txt*"}  
Mitglied: 132272
132272 08.03.2017 aktualisiert um 12:23:57 Uhr
Goto Top
Nee, du musst bei dieser Variante dann die .toXML() Methode nutzen damit du an die einzelnen Felder kommst. Gibts hier im Forum einige Beispiele, einfach die Suche anwerfen!

$log = Get-WinEvent -path 'D:\sicherheit20170306.evtx' | %{  
    $xml = [xml]$_.toXML()
    New-Object PSObject -Property @{
        TimeGenerated = $_.TimeCreated
        "Account Name" = ($xml.Event.EventData.Data | ?{$_.Name -eq 'SubjectUserName'}).'#text'  
        "Object Type" = ($xml.Event.EventData.Data | ?{$_.Name -eq 'ObjectType'}).'#text'  
        "Object Name" = ($xml.Event.EventData.Data | ?{$_.Name -eq 'ObjectName'}).'#text'  
    }
} 
$log | ?{$_.'Object Name' -like '*asdf.txt*'}  
Mitglied: 132272
132272 08.03.2017 aktualisiert um 12:27:24 Uhr
Goto Top
p.s. Windows Server bietet den FSRM der kann schon von sich aus Freigaben überwachen und Aktionen beim Löschen unternehmen bzw. sie auch verhindern wenn sie bestimmte Endungen aufweisen, falls Ransomware deine Intention mit dem Skript sein sollte
https://www.frankysweb.de/windows-fileserver-vor-ransomware-crypto-locke ...
https://technet.microsoft.com/de-de/library/jj900651(v=wps.630).aspx
Mitglied: 37958
37958 08.03.2017 aktualisiert um 20:15:38 Uhr
Goto Top
Intension ist, daß jemand aus versehen Dateien auf einen public folder kopierte. Dann hat jemand das durch Zufall entdeckt und dies in der Firma mündlich verbreitet anstatt es demjenigen zu sagen. Jetzt würde ich gerne wissen, wer die Datei/Dateien in einem bestimmten Ordner geöffnet hat.
Mitglied: 132272
132272 08.03.2017 um 20:22:11 Uhr
Goto Top
Na dann s. Skript vom letzten Post.
Mitglied: 37958
37958 08.03.2017 um 20:29:43 Uhr
Goto Top
Das sieht jetzt so aus und läuft seit 25 Minuten und ist noch nicht durch bei einem 40 GB File
$log = Get-WinEvent -path 'D:\sicherheit20170306.evtx' | %{  
    $xml = [xml]$_.toXML()
    New-Object PSObject -Property @{
        TimeGenerated = $_.TimeCreated
        "Account Name" = ($xml.Event.EventData.Data | ?{$_.Name -eq 'SubjectUserName'}).'#text'  
        "Object Type" = ($xml.Event.EventData.Data | ?{$_.Name -eq 'ObjectType'}).'#text'  
        "Object Name" = ($xml.Event.EventData.Data | ?{$_.Name -eq 'ObjectName'}).'#text'  
    }
} 
$log | ?{$_.'Object Name' -like '*Lohnsteuerbescheinigung*'}  
Mitglied: 132272
132272 08.03.2017 aktualisiert um 20:39:31 Uhr
Goto Top
Viele Daten viel zu verarbeiten ,..

Mit xpath lässt sich das auch schneller Filtern. Den Link zum xpath-Filter hatte ich dir schon mal gespostet, den übergibst du an Get-WinEvent mit -FilterXPath dann geht das auch schneller.
Mitglied: 37958
37958 08.03.2017 um 22:01:18 Uhr
Goto Top
Hi,

ich hab davon keine Ahnung. Ich bin nur Skripfledderer.

Trotzdem danke für deine Hilfe und schönen Abend noch.

Grüße
Heinz
Mitglied: 37958
37958 10.03.2017 aktualisiert um 11:49:15 Uhr
Goto Top
Also nach ca. 2 Tagen ist er mit dem kleinen LOG durch.
Ich seh aber so viel, daß es nicht ausreicht nach oben zu scrollen ...

ich hab das jetzt mal so gestartet

./powershellscript.ps1 > logfile2.txt

Mal schauen ob das hinhaut. Ansonsten wäre eine performante Lösung mit xpath auch toll.
Krieg ich aber nicht hin.

Bis denne und schönes WE
Mitglied: 37958
37958 12.03.2017 aktualisiert um 13:09:40 Uhr
Goto Top
Das funktioniert alles nicht so richtig gut und dauert sau lang.
Da bekommt man nicht mal den Dateinamen/Ordner angezeigt ...
Hat da vielleicht noch jemand eine Idee für mich?

File                          23.02.2017 14:35:14           \Device\HarddiskVolume13\P... muwllwe                    
File                          23.02.2017 13:11:17           \Device\HarddiskVolume13\P... muwllwe                    
File                          23.02.2017 13:11:17           \Device\HarddiskVolume13\P... mwiwe                    
File                          23.02.2017 13:11:15           \Device\HarddiskVolume13\P... meieric                    
File                          23.02.2017 13:10:58           \Device\HarddiskVolume13\P... mauservic                    
File                          23.02.2017 13:10:58           \Device\HarddiskVolume13\P... meierc                    
File                          23.02.2017 13:10:58           \Device\HarddiskVolume13\P... iadlervic