log2timeline / Plaso
forensicsDéfinition
log2timeline, dont Plaso est le moteur Python moderne, est un framework open source de génération de super-timelines forensiques qui collecte et normalise des horodatages provenant de dizaines de sources hétérogènes en un seul flux chronologique analysable. L'outil parcourt des artefacts Windows (MFT, journaux d'événements EVTX, registre, Prefetch, fichiers LNK), des journaux Linux (auth.log, syslog, bash history), des historiques de navigateurs (Chrome, Firefox) et des métadonnées de fichiers, puis produit un fichier de sortie au format .plaso, converti ensuite en CSV, JSON ou base SQLite via l'outil compagnon psort.py pour filtrage et tri. Cette approche de super-timeline permet à l'analyste forensique de corréler des événements disparates, par exemple une connexion USB suivie d'une exécution de binaire puis d'une connexion réseau sortante, sans devoir consulter manuellement chaque source séparément. Plaso s'intègre dans des suites comme Autopsy ou Timesketch pour la visualisation collaborative. Le principal défi de cette méthode reste le volume généré : une image disque complète peut produire plusieurs millions d'événements, nécessitant des filtres temporels et des règles de tags (via des fichiers YAML) pour isoler les artefacts pertinents à l'investigation, notamment lors de réponses à incident où le délai d'analyse est critique.
log2timeline / Plaso est un framework open source de génération de super-timelines forensiques. Il parcourt une image disque ou une collection de fichiers, extrait automatiquement les horodatages contenus dans des dizaines de sources hétérogènes (registre Windows, journaux d'événements, historiques de navigateurs, systèmes de fichiers, logs Unix), puis les normalise dans un référentiel temporel unique et analysable. Là où un analyste devrait ouvrir vingt outils différents, Plaso produit un seul fichier chronologique regroupant l'ensemble de l'activité du système.
Origine et terminologie
Le projet naît en 2009 sous la forme d'un script Perl nommé log2timeline, créé par Kristinn Guðjónsson. La réécriture complète en Python donne naissance à Plaso, acronyme récursif islandais de « Plaso Langar Að Safna Öllum » — « Plaso veut tout collecter ». Aujourd'hui, Plaso désigne le moteur (le back-end de parsing) et log2timeline le nom de l'outil d'extraction en ligne de commande. Les deux termes sont employés indifféremment dans la littérature DFIR.
Fonctionnement technique
La chaîne de traitement repose sur trois étapes distinctes, ce qui constitue la principale force architecturale de l'outil :
- Extraction —
log2timeline.pymonte la source (image E01, dd, VMDK, répertoire de triage, disque monté en lecture seule), identifie les partitions et volumes (y compris BitLocker, LVM, VSS), puis applique tous les parsers pertinents. Le résultat est écrit dans un fichier de stockage.plaso(base SQLite interne). - Post-traitement —
psort.pytrie, filtre, déduplique et exporte les événements dans le format voulu : CSV dynamique, JSON lines, TLN, ou injection directe vers Elasticsearch et Timesketch. - Inspection —
pinfo.pyrenvoie les métadonnées du fichier de stockage : parsers utilisés, nombre d'événements, erreurs de parsing, version de l'outil. Indispensable pour la traçabilité.
Un raccourci, psteal.py, enchaîne extraction et export en une seule commande pour les analyses rapides.
Plaso embarque plus de 200 parsers et plugins : table $MFT et $UsnJrnl NTFS, journaux EVTX, ruches de registre (Shellbags, UserAssist, ShimCache, AmCache, SRUM), fichiers Prefetch, raccourcis LNK et Jump Lists, bases SQLite de Chrome, Firefox et Edge, fichiers plist macOS, syslog, utmp, bash_history, journaux Apache ou IIS, artefacts Docker et cloud.
Exemples de commandes
- Extraction complète d'une image avec fuseau horaire explicite :
log2timeline.py --timezone Europe/Paris --storage-file cas42.plaso image.E01 - Extraction ciblée via un preset pour limiter le bruit :
log2timeline.py --parsers "win7_slow" --storage-file cas42.plaso image.E01 - Export filtré sur une fenêtre d'intrusion :
psort.py -o dynamic -w timeline.csv cas42.plaso "date > '2026-07-10 00:00:00' AND date < '2026-07-15 00:00:00'" - Analyse rapide d'un triage KAPE :
psteal.py --source ./triage -o l2tcsv -w timeline.csv
Cas d'usage concrets
Dans une réponse à incident ransomware, la super-timeline permet de reconstituer la séquence complète : connexion RDP initiale visible dans les EVTX, exécution d'un binaire de reconnaissance tracée par Prefetch et AmCache, création de persistance dans la clé Run, désactivation des clichés instantanés, puis chiffrement de masse repérable par une explosion d'écritures dans le $UsnJrnl. Le même outillage sert dans les enquêtes internes (exfiltration via clé USB reconstituée par Shellbags et LNK) ou dans la validation de scénarios en test d'intrusion Red Team / Purple Team.
Liens avec d'autres concepts
Plaso s'inscrit dans un écosystème DFIR structuré. Il consomme volontiers les collections produites par KAPE ou Velociraptor plutôt que des images complètes, ce qui réduit drastiquement le temps de traitement. En aval, Timesketch offre l'interface collaborative d'analyse, avec annotations, tags et détection par règles. Les événements exportés en JSON alimentent naturellement un SIEM et peuvent être confrontés à des règles Sigma. Enfin, la lecture d'une timeline suppose de maîtriser les horodatages MACB (Modified, Accessed, Changed, Birth) et les techniques d'anti-forensique comme le timestomping, que la comparaison entre attributs $STANDARD_INFORMATION et $FILE_NAME du MFT permet souvent de démasquer.
Bonnes pratiques
- Toujours travailler sur une copie vérifiée par empreinte (SHA-256) et montée en lecture seule, jamais sur le support original.
- Fixer explicitement le fuseau horaire avec
--timezone: Plaso stocke tout en UTC, mais une mauvaise interprétation locale fausse toute la chronologie. - Utiliser les presets de parsers plutôt que le mode exhaustif : une image de 500 Go peut générer plus de 50 millions d'événements, illisibles sans filtrage.
- Consigner la version de Plaso et les paramètres employés dans le rapport, au titre de la reproductibilité et de la chaîne de conservation des preuves.
- Croiser les sources : un artefact isolé ne prouve rien, la corrélation de trois artefacts indépendants sur une même seconde constitue un indice solide.
- Analyser dans Timesketch dès que le volume dépasse quelques centaines de milliers de lignes — le tableur atteint vite ses limites.
Distribué sous licence Apache 2.0 et maintenu par une communauté active, Plaso reste l'outil de référence pour toute investigation nécessitant une vision chronologique unifiée d'un système compromis.
Articles liés
Expert en cybersécurité offensive et intelligence artificielle. Pentest, audit et développement IA sur-mesure.
Services
- Audit Infrastructure
- Audit Kubernetes
- Audit Microsoft 365
- Audit Sécurité Réseau
- Analyse de Risques
- Audit Active Directory
- Audit Application Web
- Audit Cloud (AWS/Azure/GCP)
- Audit Messagerie
- Audit API (OWASP Top 10)
- Audit DevSecOps & CI/CD
- Audit Code Source (SAST)
- Audit Postes de Travail
- Audit Sauvegarde & Résilience
- Audit OT/SCADA (IEC 62443)
- Développement IA
- Formations
Ressources
Projets & Outils
© 2026 Ayi NEDJIMI Consultants. Tous droits réservés.
Un projet cybersécurité ?
Expert dispo · Réponse 24h