plaso

Outil d'analyse de timeline en forensique numérique (log2timeline). Parse des centaines de types d'artefacts depuis des images disque et crée des bases de données de timeline unifiées pour l'investigation d'incidents. Digital forensics timeline analysis tool (log2timeline). Parses hundreds of artifact types from disk images and creates unified timeline databases for incident investigation.

↗ https://github.com/log2timeline/plaso

Overview

plaso (Plaso Langar Að Safna Öllu) is the tool behind log2timeline — a digital forensics framework that creates super-timelines from disk images and evidence files. It parses over 100 artifact types (Windows event logs, browser history, registry, prefetch, shellbags, etc.) into a unified timeline for investigation.

Installation

pip3 install plaso

Or via Docker

docker pull log2timeline/plaso

Kali Linux

sudo apt install plaso

Basic Workflow

Step 1: Process disk image into timeline database

log2timeline.py plaso.db image.dd

Step 2: Filter/tag events

psort.py -o dynamic plaso.db | head -100
# Step 3: Export to readable format
psort.py plaso.db -o json > timeline.json
psort.py plaso.db -o l2tcsv > timeline.csv

Processing Sources

Process a raw disk image

log2timeline.py plaso.db /path/to/image.dd

Process a mounted partition

log2timeline.py plaso.db /mnt/evidence/

Process a single file

log2timeline.py plaso.db /path/to/evtx/file.evtx

Process a directory of files

log2timeline.py plaso.db /path/to/artifacts/

Process Windows registry hive

log2timeline.py plaso.db /path/to/NTUSER.DAT

Process memory dump (with Volatility integration)

log2timeline.py --storage-file plaso.db memory.dmp

Output Formats (psort.py)

Default output (human-readable)

psort.py plaso.db

CSV (Excel-compatible)

psort.py -o l2tcsv plaso.db -w timeline.csv

JSON (for Splunk/ELK)

psort.py -o json plaso.db -w timeline.json

Dynamic (flexible fields)

psort.py -o dynamic plaso.db

Elastic output (direct to Elasticsearch)

psort.py -o elastic --server localhost plaso.db

Timesketch (advanced web UI)

psort.py -o timesketch plaso.db

Filtering Events

Filter by date range

psort.py plaso.db "date > '2024-01-01' AND date < '2024-01-31'"

Filter by event type

psort.py plaso.db "data_type is 'windows:evtx:record'"

Filter by source hostname

psort.py plaso.db "hostname is 'VICTIM-PC'"

Filter by keyword

psort.py plaso.db "message contains 'password'"

Show only high-priority events

psort.py plaso.db "tag contains 'loginlogout'"

Common Parsers

See all available parsers

log2timeline.py --parsers list
# Key parsers for Windows investigations:
# winevt, winevtx  — Windows Event Logs
# winreg            — Windows Registry
# winprefetch       — Prefetch files (execution evidence)
# shellbag          — Shell Item Bags (folder access)
# lnk               — LNK/shortcut files
# chrome_history    — Chrome browser history
# firefox_history   — Firefox history
# mft               — NTFS Master File Table
# usnjrnl           — NTFS USN Journal

Timesketch Integration

Timesketch = Web UI for timeline analysis Import plaso output to Timesketch:

psort.py -o timesketch \
  --server timesketch.local \
  --port 5000 \
  --username admin \
  --timeline-name "Case_001" \
  plaso.db

Tips

  • Processing large disk images can take hours — run overnight for large cases
  • Use -q quiet mode to suppress progress output for scripting
  • Filter by timeframe before the incident to establish baseline behavior
  • Timesketch provides collaborative web-based timeline analysis — better than raw CSV
Help / Man page
log2timeline.py [options] <storage_file> <source>

--parsers LIST    Comma-separated parser names
--hashers LIST    File hashers to run
-q                Quiet mode
--status-view     Show processing status

psort.py [options] <storage_file> [filter]

-o FORMAT         Output format
-w FILE           Write to file
--analysis LIST   Analysis modules

Vue d’ensemble

plaso (Plaso Langar Að Safna Öllu) est l’outil derrière log2timeline : un framework de forensique numérique qui crée des super-timelines à partir d’images disque et de fichiers de preuves. Il analyse plus de 100 types d’artefacts (journaux d’événements Windows, historique de navigateur, registre, prefetch, shellbags, etc.) pour produire une timeline unifiée destinée à l’investigation.

Installation

pip3 install plaso

# Ou via Docker
docker pull log2timeline/plaso

# Kali Linux
sudo apt install plaso

Workflow de base

# Étape 1 : traiter l'image disque dans une base de données de timeline
log2timeline.py plaso.db image.dd

# Étape 2 : filtrer/taguer les événements
psort.py -o dynamic plaso.db | head -100

# Étape 3 : exporter vers un format lisible
psort.py plaso.db -o json > timeline.json
psort.py plaso.db -o l2tcsv > timeline.csv

Traitement des sources

# Traiter une image disque brute
log2timeline.py plaso.db /path/to/image.dd

# Traiter une partition montée
log2timeline.py plaso.db /mnt/evidence/

# Traiter un seul fichier
log2timeline.py plaso.db /path/to/evtx/file.evtx

# Traiter un répertoire de fichiers
log2timeline.py plaso.db /path/to/artifacts/

# Traiter une ruche de registre Windows
log2timeline.py plaso.db /path/to/NTUSER.DAT

# Traiter un dump mémoire (intégration avec Volatility)
log2timeline.py --storage-file plaso.db memory.dmp

Formats de sortie (psort.py)

# Sortie par défaut (lisible par un humain)
psort.py plaso.db

# CSV (compatible Excel)
psort.py -o l2tcsv plaso.db -w timeline.csv

# JSON (pour Splunk/ELK)
psort.py -o json plaso.db -w timeline.json

# Dynamique (champs flexibles)
psort.py -o dynamic plaso.db

# Sortie Elastic (directement vers Elasticsearch)
psort.py -o elastic --server localhost plaso.db

# Timesketch (interface web avancée)
psort.py -o timesketch plaso.db

Filtrage des événements

# Filtrer par plage de dates
psort.py plaso.db "date > '2024-01-01' AND date < '2024-01-31'"

# Filtrer par type d'événement
psort.py plaso.db "data_type is 'windows:evtx:record'"

# Filtrer par nom d'hôte source
psort.py plaso.db "hostname is 'VICTIM-PC'"

# Filtrer par mot-clé
psort.py plaso.db "message contains 'password'"

# Afficher uniquement les événements prioritaires
psort.py plaso.db "tag contains 'loginlogout'"

Parsers courants

Voir tous les parsers disponibles

log2timeline.py --parsers list
# Parsers clés pour les investigations Windows :
# winevt, winevtx  : journaux d'événements Windows
# winreg            : registre Windows
# winprefetch       : fichiers Prefetch (preuves d'exécution)
# shellbag          : Shell Item Bags (accès aux dossiers)
# lnk               : fichiers LNK/raccourcis
# chrome_history    : historique du navigateur Chrome
# firefox_history   : historique Firefox
# mft               : table de fichiers maîtresse NTFS (MFT)
# usnjrnl           : journal USN NTFS

Intégration avec Timesketch

Timesketch = interface web pour l’analyse de timeline. Importer la sortie de plaso dans Timesketch :

psort.py -o timesketch \
  --server timesketch.local \
  --port 5000 \
  --username admin \
  --timeline-name "Case_001" \
  plaso.db

Conseils

  • Le traitement de grandes images disque peut prendre des heures : lancez-le la nuit pour les affaires volumineuses
  • Utilisez le mode silencieux -q pour supprimer l’affichage de progression lors du scripting
  • Filtrez sur la période précédant l’incident pour établir un comportement de référence
  • Timesketch offre une analyse de timeline collaborative via le web : bien mieux qu’un CSV brut
Aide / Page de manuel
log2timeline.py [options] <storage_file> <source>

--parsers LIST    Comma-separated parser names
--hashers LIST    File hashers to run
-q                Quiet mode
--status-view     Show processing status

psort.py [options] <storage_file> [filter]

-o FORMAT         Output format
-w FILE           Write to file
--analysis LIST   Analysis modules