Netwerkverkeeranalyse met Wireshark

Netwerkverkeeranalyse met Wireshark

Table of Contents

Overzicht

Een uitgebreid SOC-analist project voor het analyseren van netwerkverkeer om beveiligingsbedreigingen te detecteren en aanvalspatronen te begrijpen met Wireshark.

Leerdoelen

  • Beheers Wireshark voor netwerkforensica
  • Identificeer kwaadaardige netwerkverkeer patronen
  • Analyseer versleutelde en onversleutelde protocollen
  • Detecteer data exfiltratie en command & control communicatie
  • Documenteer netwerk-gebaseerde beveiligingsincidenten

Projectstructuur

network-traffic-analysis/
├── sample-captures/
│   ├── legitimate-traffic.pcap
│   ├── malware-c2.pcap
│   ├── data-exfiltration.pcap
│   └── ddos-attack.pcap
├── analysis-scripts/
│   ├── pcap-parser.py
│   ├── flow-analyzer.py
│   └── threat-detector.py
├── filters/
│   ├── common-filters.txt
│   ├── threat-specific-filters.txt
│   └── custom-filters.txt
├── documentation/
│   ├── wireshark-guide.md
│   ├── protocol-reference.md
│   └── analysis-checklist.md
├── reports/
│   └── traffic-analysis-template.md
└── README.md

Benodigde Tools

  • Wireshark 4.x
  • TShark (command-line versie)
  • Python 3.8+ met Scapy/PyShark
  • NetworkMiner (Optioneel)
  • Zeek/Bro (Optioneel)

Analyse Scenario’s

Scenario 1: Malware C2 Communicatie

  • Identificeer beaconing patronen
  • Detecteer DNS tunneling
  • Analyseer HTTP/HTTPS communicatie
  • Identificeer gecodeerde data exfiltratie

Scenario 2: Data Exfiltratie Detectie

  • Monitor ongebruikelijke dataoverdrachten
  • Identificeer grote bestand uploads
  • Detecteer versleuteld verkeer pieken
  • Analyseer FTP/SMTP overdrachten

Scenario 3: Zijwaartse Beweging

  • Detecteer intern netwerk scannen
  • Identificeer SMB/RPC exploitatiepogingen
  • Monitor authenticatieprotocollen
  • Volg privileges escalatie verkeer

Scenario 4: DDoS Aanval Analyse

  • Identificeer aanvalsvectoren (SYN, UDP, HTTP)
  • Analyseer aanvalspatronen en bronnen
  • Bereken verkeersvolume en impact
  • Aanbeveel mitigatie strategieën

Essentiële Wireshark Filters

Algemene Verkeeranalyse

# Toon alleen HTTP verkeer
http

# Toon alleen DNS verkeer
dns

# Toon verkeer van/naar specifiek IP
ip.addr == 192.168.1.100

# Toon verkeer op specifieke poort
tcp.port == 443

# Sluit lokaal netwerkverkeer uit
not ip.addr == 192.168.0.0/16

Beveiligingsgerichte Filters

# Potentieel malware beaconing (regelmatige intervallen)
frame.time_delta > 300 and frame.time_delta < 400

# Verdachte user agents
http.user_agent contains "curl"

# Grote bestandsoverdrachten
http.content_length > 1000000

# PowerShell verkeer
tcp.port == 5985 or tcp.port == 5986

# RDP verbindingen
tcp.port == 3389

# SSH verbindingen
tcp.port == 22

Versleuteld Verkeeranalyse

# TLS/SSL verkeer
ssl

# Certificaat problemen
ssl.alert_message

# Handshake failures
ssl.handshake.type == 0

Voorbeeld Analyse Scripts

PCAP Parser met Scapy

from scapy.all import *
import pandas as pd
from collections import Counter

def analyze_pcap(pcap_file):
    """
    Analyseer PCAP bestand op beveiligingsgebeurtenissen
    """
    packets = rdpcap(pcap_file)
    
    analysis = {
        'total_packets': len(packets),
        'protocols': Counter(),
        'top_sources': Counter(),
        'top_destinations': Counter(),
        'top_ports': Counter(),
        'suspicious_patterns': []
    }
    
    for packet in packets:
        # Protocol analyse
        if IP in packet:
            analysis['protocols'][packet[IP].proto] += 1
            analysis['top_sources'][packet[IP].src] += 1
            analysis['top_destinations'][packet[IP].dst] += 1
        
        # Poort analyse
        if TCP in packet:
            analysis['top_ports'][packet[TCP].dport] += 1
        elif UDP in packet:
            analysis['top_ports'][packet[UDP].dport] += 1
    
    return analysis

def detect_beaconing(packets, time_threshold=60):
    """
    Detecteer potentiële C2 beaconing patronen
    """
    connections = {}
    
    for packet in packets:
        if IP in packet and TCP in packet:
            key = f"{packet[IP].src}:{packet[TCP].sport}-{packet[IP].dst}:{packet[TCP].dport}"
            
            if key not in connections:
                connections[key] = []
            
            connections[key].append(packet.time)
    
    beacons = []
    for conn, timestamps in connections.items():
        if len(timestamps) >= 3:
            intervals = []
            for i in range(1, len(timestamps)):
                intervals.append(timestamps[i] - timestamps[i-1])
            
            # Controleer op regelmatige intervallen
            avg_interval = sum(intervals) / len(intervals)
            variance = sum((x - avg_interval) ** 2 for x in intervals) / len(intervals)
            
            if variance < time_threshold:  # Lage variantie wijst op regelmatig patroon
                beacons.append({
                    'connection': conn,
                    'avg_interval': avg_interval,
                    'packet_count': len(timestamps)
                })
    
    return beacons

Flow Analyse

import pyshark
import socket

def analyze_flows(pcap_file):
    """
    Analyseer netwerk flows op anomalieën
    """
    cap = pyshark.FileCapture(pcap_file)
    
    flows = {}
    for packet in cap:
        try:
            if hasattr(packet, 'ip') and hasattr(packet, 'tcp'):
                src_ip = packet.ip.src
                dst_ip = packet.ip.dst
                src_port = packet.tcp.srcport
                dst_port = packet.tcp.dstport
                
                flow_key = f"{src_ip}:{src_port}-{dst_ip}:{dst_port}"
                
                if flow_key not in flows:
                    flows[flow_key] = {
                        'packet_count': 0,
                        'bytes_total': 0,
                        'start_time': float(packet.sniff_timestamp),
                        'end_time': float(packet.sniff_timestamp),
                        'flags': set()
                    }
                
                flows[flow_key]['packet_count'] += 1
                flows[flow_key]['end_time'] = float(packet.sniff_timestamp)
                
                if hasattr(packet, 'tcp'):
                    flows[flow_key]['flags'].add(packet.tcp.flags)
                
                # Bereken bytes (vereenvoudigd)
                flows[flow_key]['bytes_total'] += int(packet.length)
        
        except AttributeError:
            continue
    
    return flows

def detect_anomalous_flows(flows):
    """
    Identificeer verdachte netwerk flows
    """
    anomalies = []
    
    for flow_key, flow_data in flows.items():
        # Langdurige verbindingen
        duration = flow_data['end_time'] - flow_data['start_time']
        if duration > 3600:  # Meer dan 1 uur
            anomalies.append({
                'flow': flow_key,
                'type': 'long_connection',
                'duration': duration,
                'details': flow_data
            })
        
        # Hoge byte overdrachten
        if flow_data['bytes_total'] > 100000000:  # Meer dan 100MB
            anomalies.append({
                'flow': flow_key,
                'type': 'large_transfer',
                'bytes': flow_data['bytes_total'],
                'details': flow_data
            })
        
        # Frequent kleine pakketten (potentieel beaconing)
        if flow_data['packet_count'] > 1000 and flow_data['bytes_total'] < 10000:
            anomalies.append({
                'flow': flow_key,
                'type': 'frequent_small_packets',
                'packet_count': flow_data['packet_count'],
                'details': flow_data
            })
    
    return anomalies

Analyse Workflow

1. Initiële Triage

  • Basis verkeeroverzicht (protocollen, volume)
  • Tijdlijn vaststelling
  • Identificeer belangrijke gesprekken
  • Markeer verdachte protocollen/poorten

2. Diepgaande Analyse

  • Extraheer bestandsoverdrachten
  • Analyseer HTTP/HTTPS verzoeken
  • Decodeer versleutelde protocollen indien mogelijk
  • Identificeer data encoding methoden

3. Dreigingsjacht

  • Zoek naar bekende kwaadaardige patronen
  • Identificeer zero-day aanvalsindicatoren
  • Correlleer met dreigingsinformatie
  • Bouw aanvalstijdlijn

4. Documentatie

  • Creëer visuele verkeerskaarten
  • Documenteer alle bevindingen
  • Geef IOC extractie
  • Aanbeveel detectieregels

Veelvoorkomende Aanvalspatronen

DNS Tunneling Detectie

# Zoek naar lange DNS queries
dns.qry.name contains "很长" or dns.flags.rcode == 3

# Hoog volume DNS queries naar enkel domein
dns and frame.time_delta < 0.1

PowerShell Remoting

# WinRM verkeer
tcp.port == 5985 or tcp.port == 5986

# PowerShell Web Access
http.request.uri contains "/powershell"

Data Exfiltratie

# Grote HTTP POST verzoeken
http.request.method == POST and http.content_length > 1000000

# FTP uploads
ftp and ftp.request.command == "STOR"

Voorbeeld Analysebevindingen

C2 Beacon Detectie

Flow Analyse Resultaten:
- Verbinding: 192.168.1.50:54321-185.14.28.100:443
- Gemiddeld interval: 301 seconden (5 minuten)
- Pakket telling: 47 verbindingen
- Patroon: Regelmatige HTTPS beacon met POST data
- Beoordeling: Hoge betrouwbaarheid C2 communicatie

Data Exfiltratie

Anomalie Gedetecteerd:
- Flow: 10.0.0.15:5555-203.0.113.10:21
- Overdracht grootte: 250MB
- Duur: 2 minuten
- Protocol: FTP
- Bestanden: customer_data_2026.zip
- Beoordeling: Potentiële data exfiltratie

Verwachte Opleveringen

  1. Voltooide verkeeranalyse rapporten
  2. Geëxtraheerde IOCs en artefacten
  3. Netwerkverkeer visualisaties
  4. Detectie signatures/regels
  5. Blogpost documentatie

Uitbreidingsideeën

  • Geautomatiseerde dreigingsdetectie pipeline
  • Integratie met Suricata/Snort
  • Real-time verkeersmonitoring dashboard
  • Machine learning voor anomaliedetectie

Bronnen

Veiligheidsnotities

  • Werk in geïsoleerde netwerkomgeving
  • Saniseer gevoelige data voor delen
  • Volg juridische en ethische richtlijnen
  • Gebruik legitieme data voor oefening
Share :
comments powered by Disqus

Related Posts

Windows Log Forensisch Onderzoek

Windows Log Forensisch Onderzoek

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

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