Windows event logs zijn een hulpmiddel dat elke cybersecurity- en IT-professional in zijn of haar arsenaal zou moeten hebben. Ze kunnen lokaal worden gebruikt voor het oplossen van problemen of worden gecentraliseerd voor netwerkbewustzijn. Bij centraal gebruik kan krachtige software die bekend staat als een Security Information Event Management (SIEM) worden gebruikt om logs te parseren en te doorzoeken. Maar wat als u lokaal werkt? Is er een efficiënte methode om hetzelfde te doen? Het antwoord op deze vragen vind je in Microsofts krachtigste tool kit, Microsoft PowerShell.
Wat zijn Windows event logs?
Windows event logs bevatten een gedetailleerd overzicht van systeem-, beveiligings- en applicatie meldingen die door het besturingssysteem zijn gemaakt en opgeslagen. Naast de meer bekende logboeken kan ook extra event registratie worden ingeschakeld voor een aantal specifieke toepassingen op het systeem, zoals Microsoft AppLocker, PowerShell of Sysmon. Windows event logs zijn beschikbaar via logboeken. Als u de logs wilt openen, kunt u deze vinden in het configuratiescherm of door de command eventvwr te typen. Windows event logs zijn beschikbaar in de map C:\WINDOWS\system32\config\ .
Zoals elke standaardregistratiepraktijk hebben Windows event logs een standaardindeling. Elke gebeurtenis bevat de datum, tijd, gebruiker, computer, gebeurtenis-id, bron en type. Deze standaardisatie maakt logboeken gemakkelijk doorzoekbaar met PowerShell door gebruik te maken van de opdracht Get-WinEvent.
Get-WinEvent
Get-WinEvent is een PowerShell-command-let beschikbaar in Windows Vista en hoger. Hiermee kunt u gebeurtenislogboeken verzamelen en doorzoeken op lokale of externe computers. Doorzoekbare logs omvatten klassieke logs, nieuwe logboeken die zijn geïntroduceerd met Windows Vista en logboekbestanden die zijn gegenereerd met event tracking voor Windows. Meerdere logs kunnen worden opgegeven met één command. Als u geen parameters opgeeft, haalt Get-WinEvent alle gebeurtenissen op uit alle event logs op de computer. Get-WinEvent is alleen beschikbaar in Windows Vista/2008 R2 of hoger en vereist Microsoft .NET Framework 3.5 of hoger. In de onderstaande tabel worden alle parameters beschreven die aan deze opdracht zijn gekoppeld.
Parameter | Formatteren | Beschrijving |
ListLog | string | Deze parameter neemt een door komma's gescheiden lijst met namen van event logs. Jokertekens zijn toegestaan. Met de waarde * worden alle logboeken doorzocht. |
Lognaam | string | Deze parameter neemt ook logboeknamen in een door komma's gescheiden lijst. |
Listprovider | Deze parameter neemt een door komma's gescheiden lijst met providers, het programma of de service die gebeurtenissen naar het event log schrijft. Jokertekens zijn toegestaan. Met een waarde van * worden alle logboeken doorzocht. | |
Providernaam | Deze parameter neemt een door komma's gescheiden lijst met providers, het programma of de service die gebeurtenissen naar het gebeurtenislogboek schrijft. | |
Pad | string | Deze parameter accepteert paden naar EVT-, evtx- en .etl-bestanden in een door komma's gescheiden lijst. |
MaxEvents | Int64 | Dit is het maximale aantal gebeurtenissen dat get-winevent retourneert. De standaard retourneert alle logboeken. |
Computernaam | string |
|
Credential | PSCredential |
|
FilterXPath | String |
|
FilterXML | XMLDocument |
|
FilterHashTable | hastable |
|
Force | Boolean |
|
Oldest | Boolean | O
|
Enkele voorbeelden
Als u eerst wilt zien uit welke logs u moet kiezen, gebruikt u de parameter listlog. U zult merken dat de lijst erg lang is.
PS C: \\ > Get-WinEvent -listlog *
U kunt het beperken tot alle logs die betrekking hebben op een bepaald onderwerp, bijvoorbeeld AppLocker.
PS C: \ > get-winevent -listlog * AppLock *
Als u alle beschikbare informatie met betrekking tot één logboek wilt ophalen, zoals het toepassingslogboek, gebruikt u de volgende opdracht.
Als u alle logs op de lokale computer wilt weergeven die events bevatten, kunt u het volgende doen.
PS C:\> Get-WinEvent -listlog * | where {$_.Recordcount}
U kunt ook naar meerdere computers tegelijk zoeken naar logboeken. Dit gebeurt met een vooraanmerking, bijvoorbeeld:
PS C:\> $hosts = "Server1", "Server2", "Server3" PS C:\> foreach ($server in $hosts) {$server; get-winevent -listlog "Windows PowerShell" -computername $server}
Brute Force-aanvallen identificeren
Logboeken op de domeincontroller kunnen worden gecontroleerd op meerdere storingen om een brute force-aanval te identificeren. Een domeincontroller registreert een mislukt Kerberos-ticket met log event 4771. Een voorbeeld van een manier om een mogelijke brute force-aanval te onderzoeken, is door de onderstaande command uit te voeren op een domeincontroller om te zoeken naar alle mislukte log ins in het laatste uur.
Get-WinEvent -Filterhashtable @{LogName='Security';id=4771;starttime=(Get-Date). AddHours(-1);endtime=(Get-Date) }
Windows Event Tracing gebruiken
Windows event tracing is een tool die door ontwikkelaars wordt gebruikt om fouten in hun applicaties op te sporen. Het kan worden gebruikt voor het traceren van het afsluit- en opstartproces of voor diagnoses zoals het bepalen van de energie-efficiëntie van een toepassing. Even tracing logs worden opgeslagen in bestanden met de extensie .etl. PowerShell biedt een aanvullende methodologie voor het openen of analyseren van deze trace logs. Vergeet niet de parameter –Oldest te gebruiken wanneer u Get-WinEvent gebruikt om een event trace logs te parseren.
PS C:\>Get-WinEvent -Path "C:\Tracing\TraceLog.etl" -Oldest
Windows event logs zijn uiterst eenvoudig te doorzoeken en te parseren met PowerShell. Dit is uiterst gunstig, of u nu controleert op een bepaalde storing of een bepaald type aanval. PowerShell is een handige tool voor elk arsenaal aan cyberverdedigers.