Windows Log Forensisch Onderzoek

Windows Log Forensisch Onderzoek

Table of Contents

Overzicht

Een praktisch SOC-analist project voor het onderzoeken van Windows beveiligingsgebeurtenissen en het detecteren van potentiële indringingen met behulp van systeemlogboeken.

Leerdoelen

  • Analyseer Windows Event Logs op beveiligingsincidenten
  • Identificeer patronen van kwaadaardige activiteit
  • Correlleer gebeurtenissen uit verschillende logboekbronnen
  • Bouw een tijdlijn van beveiligingsgebeurtenissen
  • Documenteer forensische bevindingen

Projectstructuur

windows-log-forensics/
├── sample-logs/
│   ├── security.evtx
│   ├── system.evtx
│   ├── application.evtx
│   └── powershell.evtx
├── analysis-scripts/
│   ├── event-parser.py
│   ├── timeline-builder.py
│   └── anomaly-detector.py
├── tools/
│   ├── evtx-dump.py
│   └── log-parser.py
├── documentation/
│   ├── windows-event-id-reference.md
│   └── investigation-checklist.md
├── reports/
│   └── forensic-analysis-template.md
└── README.md

Benodigde Tools

  • Windows Event Viewer
  • Python 3.8+ met evtx bibliotheek
  • Velociraptor of Hayabusa voor logboekanalyse
  • Tijdlijnanalyse tools
  • Splunk/ELK stack (Optioneel)

Onderzoeksscenario’s

Scenario 1: Verdachte Aanmeldingactiviteit

  • Analyseer mislukte aanmeldingspogingen (Event ID 4625)
  • Identificeer potentiële brute-force aanvallen
  • Detecteer zijwaartse beweging (Event ID 4624, Aanmeldtype 3)
  • Volg ongebruikelijke authenticatiepatronen

Scenario 2: Kwaadaardige Procesuitvoering

  • Onderzoek verdachte procescreatie (Event ID 4688)
  • Analyseer PowerShell scriptblokken (Event ID 4104)
  • Detecteer potentiële living-off-the-land technieken
  • Identificeer procesinjectiepogingen

Scenario 3: Privileges Escalatie Pogingen

  • Monitor op ongebruikelijke privilegewijzigingen (Event ID 4670)
  • Analyseer service creatie/wijziging (Event ID 7045)
  • Detecteer geplande taak creatie (Event ID 4698)
  • Onderzoek registermodificaties

Belangrijke Event ID’s om te Monitoren

Authenticatie Gebeurtenissen

  • 4624: Account aanmelding geslaagd
  • 4625: Account aanmelding mislukt
  • 4634: Account afmelding
  • 4648: Expliciet gebruikte referenties
  • 4768/4769: Kerberos authenticatie

Proces Gebeurtenissen

  • 4688: Nieuw proces aangemaakt
  • 4689: Proces beëindigd
  • 4656/4663: Objecttoegang
  • 4103/4104: PowerShell scriptblok logging

Systeem Gebeurtenissen

  • 7045: Nieuwe service geïnstalleerd
  • 4698: Geplande taak aangemaakt
  • 4670: Machtigingen gewijzigd op object

Voorbeeld Analyse Scripts

Event Log Parser

import evtx
import xml.etree.ElementTree as ET
from datetime import datetime

def parse_security_events(evtx_file, event_ids=None):
    """
    Parse Windows Security Event Log
    """
    events = []
    
    with evtx.Evtx(evtx_file) as log:
        for record in log.records():
            xml = record.xml()
            root = ET.fromstring(xml)
            
            event_id = root.find('.//EventID').text
            if event_ids and event_id not in event_ids:
                continue
            
            timestamp = root.find('.//System/TimeCreated').get('SystemTime')
            timestamp = datetime.fromisoformat(timestamp.replace('Z', '+00:00'))
            
            event_data = {}
            for data in root.findall('.//EventData/Data'):
                name = data.get('Name')
                event_data[name] = data.text
            
            events.append({
                'timestamp': timestamp,
                'event_id': event_id,
                'data': event_data
            })
    
    return events

def detect_brute_force(events, threshold=10, time_window=300):
    """
    Detecteer potentiële brute-force aanvallen
    """
    failed_logins = [e for e in events if e['event_id'] == '4625']
    
    attacks = []
    for i, event in enumerate(failed_logins):
        window_events = []
        for later_event in failed_logins[i:]:
            time_diff = (later_event['timestamp'] - event['timestamp']).total_seconds()
            if time_diff <= time_window:
                window_events.append(later_event)
            else:
                break
        
        if len(window_events) >= threshold:
            attacks.append({
                'start_time': event['timestamp'],
                'count': len(window_events),
                'target_account': event['data'].get('TargetUserName'),
                'source_ip': event['data'].get('IpAddress')
            })
    
    return attacks

Tijdlijn Bouwer

import pandas as pd
from datetime import datetime, timedelta

def build_incident_timeline(events, start_time, end_time):
    """
    Bouw een tijdlijn van beveiligingsgebeurtenissen
    """
    timeline = []
    
    for event in events:
        event_time = event['timestamp']
        if start_time <= event_time <= end_time:
            timeline.append({
                'timestamp': event_time,
                'event_id': event['event_id'],
                'description': get_event_description(event),
                'severity': get_event_severity(event['event_id']),
                'details': event['data']
            })
    
    return sorted(timeline, key=lambda x: x['timestamp'])

def get_event_description(event):
    """Genereer leesbare gebeurtenisbeschrijving"""
    event_id = event['event_id']
    data = event['data']
    
    descriptions = {
        '4625': f"Mislukte aanmelding voor {data.get('TargetUserName')} vanaf {data.get('IpAddress')}",
        '4624': f"Geslaagde aanmelding voor {data.get('TargetUserName')} vanaf {data.get('IpAddress')}",
        '4688': f"Proces aangemaakt: {data.get('NewProcessName')} door {data.get('SubjectUserName')}",
        '4104': f"PowerShell script uitgevoerd door {data.get('UserId')}"
    }
    
    return descriptions.get(event_id, f"Gebeurtenis {event_id} heeft plaatsgevonden")

Onderzoeksstappen

1. Initiële Beoordeling

  • Verzamel relevante logboekbestanden
  • Bepaal tijdsvenster voor onderzoek
  • Identificeer kritieke systemen en gebruikers
  • Etableer basisactiviteit

2. Gebeurteniscorrelatie

  • Corrleer authenticatiegebeurtenissen met procescreatie
  • Koppel netwerkverbindingen aan toepassingsgebeurtenissen
  • Identificeer sequenties van verdachte activiteiten
  • Bouw aanvalsketen tijdlijn

3. Anomaliedetectie

  • Identificeer ongebruikelijke aanmeldingstijden/locaties
  • Detecteer privileges escalatie pogingen
  • Vind verdachte procesuitvoeringen
  • Markeer niet-geautoriseerde systeemwijzigingen

4. Impactbeoordeling

  • Bepaal getroffen accounts en systemen
  • Beoordeel data-access en exfiltratierisico’s
  • Identificeer persistentiemechanismen
  • Evalueer bedrijfsimpact

5. Documentatie

  • Creëer gedetailleerde tijdlijn van gebeurtenissen
  • Documenteer alle bevindingen en bewijs
  • Geef herstelaanbevelingen
  • Update detectieregels

Voorbeeld Onderzoeksbevindingen

Brute-Force Aanval Detectie

Tijdlijn:
2026-02-12 08:00:15 - Mislukte aanmeldingspoging voor admin (192.168.1.100)
2026-02-12 08:00:16 - Mislukte aanmeldingspoging voor admin (192.168.1.100)
[... 15 meer mislukte pogingen ...]
2026-02-12 08:05:22 - Geslaagde aanmelding voor admin (192.168.1.100)

Bevindingen:
- 16 mislukte pogingen gevolgd door geslaagde aanmelding
- Bron IP: 192.168.1.100
- Doel: Administrator account
- Wijst op potentiële credential compromittering

Kwaadaardige PowerShell Activiteit

Gedetecteerde Gebeurtenissen:
2026-02-12 09:15:30 - PowerShell scriptblok uitgevoerd (EncodedCommand)
2026-02-12 09:15:31 - Proces aangemaakt: powershell.exe (Base64 encoded payload)
2026-02-12 09:15:32 - Netwerkverbinding naar 185.14.28.45:443

Analyse:
- Gecodeerde PowerShell commando's gedetecteerd
- Verdachte netwerkactiviteit na uitvoering
- Potentiële malware download/uitvoering

Verwachte Opleveringen

  1. Voltooid forensisch analyse rapport
  2. Gebeurtenistijdlijn met annotaties
  3. IOC lijst uit logboekanalyse
  4. Detectieregel aanbevelingen
  5. Blogpost die onderzoeksproces documenteert

Uitbreidingsideeën

  • Geautomatiseerde logboekanalyse pipeline
  • Integratie met SIEM voor real-time detectie
  • Machine learning model voor anomaliedetectie
  • Aangepast dashboard voor beveiligingsmonitoring

Bronnen

Veiligheidsnotities

  • Werk met gesaneerde logboekgegevens voor training
  • Volg keten van custodie procedures voor echte incidenten
  • Documenteer alle analysestappen
  • Valideer bevindingen met meerdere bronnen
Share :
comments powered by Disqus

Related Posts

Phishing E-mail Analyse Lab

Phishing E-mail Analyse Lab

Overzicht Een uitgebreid SOC-analist project voor het analyseren van phishing e-mails en het ontwikkelen van incidentresponskills.

Read More
Malware Analyse Sandbox Setup

Malware Analyse Sandbox Setup

Overzicht Bouw een veilige malware analyse omgeving voor SOC-analisten om veilig kwaadaardige samples te analyseren en dreigingsinformatie te extraheren.

Read More
SIEM Regel Creatie en Testen

SIEM Regel Creatie en Testen

Overzicht Ontwikkel en test SIEM detectieregels om SOC-monitoringscapaciteiten te verbeteren en bedreigingsdetectie over meerdere aanvalsvectoren te verbeteren.

Read More