skills/building-super-timelines-with-plaso/SKILL.md
Generate log2timeline and Plaso super-timelines and triage them in Timesketch.
npx skillsauth add mukul975/anthropic-cybersecurity-skills building-super-timelines-with-plasoInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Authorized Use Only: Build timelines only from evidence you are authorized to analyze. Work from forensic images/copies and preserve chain of custody.
Plaso (Plaso Langar Að Safna Öllu) is the open-source engine behind log2timeline, the standard for building forensic super timelines — a single chronological, normalized view fusing hundreds of artifact types (file-system MACB times, registry, EVTX, browser history, prefetch, LNK, $UsnJrnl, syslog, and more) into one timeline. Plaso has three core CLI tools:
.plaso storage file using its large parser/plugin set..plaso file.The resulting timeline is enormous, so analysts triage it in Timesketch — a collaborative, web-based timeline analysis platform that ingests .plaso files (or CSV/JSONL) and supports filtering, tagging, starring, saved searches, and automated analyzers.
docker pull log2timeline/plaso
# Run a tool, mounting your evidence/output directory
docker run -v /cases:/data log2timeline/plaso log2timeline.py --version
Alternatively on Ubuntu via the GIFT PPA:
sudo add-apt-repository ppa:gift/stable
sudo apt-get update && sudo apt-get install -y plaso-tools
.plaso storage file.| ID | Official Technique Name | Relevance to this skill | |----|------------------------|--------------------------| | T1070 | Indicator Removal | Super timelines reveal indicator-removal behavior (log clearing, file deletion, timestomping) by exposing inconsistencies between MACB timestamps, the USN journal, and event logs. |
Plaso is a defensive forensics engine; the mapping reflects the anti-forensic adversary behavior super timelines are well suited to detect.
log2timeline.py writes a .plaso file from a source. --storage-file names the output; the source can be an .E01, raw image, mount point, or directory.
log2timeline.py --storage-file timeline.plaso /cases/greendale/image.E01
Scope parsers for speed/relevance with --parsers (presets like win7, webhist, or explicit parser names):
log2timeline.py --parsers "win7,!filestat" --storage-file timeline.plaso /cases/image.E01
pinfo.py reports source, parsers used, event counts, and any warnings.
pinfo.py timeline.plaso
psort.py selects an output module with -o, writes with -w, normalizes the timezone with --output-time-zone, and accepts an event filter expression to scope a date range.
psort.py --output-time-zone 'UTC' \
-o l2tcsv \
-w supertimeline.csv \
timeline.plaso \
"date > datetime('2026-01-01T00:00:00') AND date < datetime('2026-01-27T00:00:00')"
For Timesketch-friendly JSON lines, use the json_line output module:
psort.py --output-time-zone 'UTC' -o json_line -w supertimeline.jsonl timeline.plaso
psteal.py runs extraction and CSV export together for quick triage.
psteal.py --source /cases/greendale/image.E01 -o l2tcsv -w supertimeline.csv
Use the official timesketch_importer CLI to upload the .plaso (or CSV/JSONL) into a sketch. Timesketch chunks/reassembles and indexes the file.
timesketch_importer \
--host http://127.0.0.1:5000 \
--username admin \
--timeline_name "greendale-host01" \
--sketch_id 1 \
timeline.plaso
In the sketch UI:
data_type (e.g. windows:evtx:record, fs:stat).Look for MACB timestamps that disagree with $UsnJrnl entries (timestomping), gaps or EventLog cleared (1102) records, and deleted-then-recreated files — all visible on the unified timeline.
| Resource | Purpose | Link | |----------|---------|------| | Plaso (log2timeline) | Timeline engine + tools | https://github.com/log2timeline/plaso | | Plaso documentation | Tool usage and parsers | https://plaso.readthedocs.io/ | | Timesketch | Timeline analysis platform | https://github.com/google/timesketch | | Timesketch docs | Deployment, importer, analyzers | https://timesketch.org/ | | Plaso Docker image | Reproducible runtime | https://hub.docker.com/r/log2timeline/plaso |
| Command | Purpose |
|---------|---------|
| log2timeline.py --storage-file out.plaso <source> | Extract events |
| log2timeline.py --parsers <preset> ... | Scope parsers |
| pinfo.py out.plaso | Inspect storage file |
| psort.py -o l2tcsv -w out.csv out.plaso "<filter>" | Filter + export CSV |
| psort.py -o json_line -w out.jsonl out.plaso | Export JSONL |
| psteal.py --source <img> -o l2tcsv -w out.csv | Extract + export in one step |
| timesketch_importer --host ... <file> | Import into Timesketch |
.plaso storage file produced from the source imagedata-ai
Detect adversary lateral movement across networks using Splunk SPL queries against Windows authentication logs, SMB traffic, and remote service abuse.
testing
Identifies lateral movement techniques in enterprise networks by analyzing authentication logs, network flows, SMB traffic, and RDP sessions using Zeek, Velociraptor, and SIEM correlation rules to detect attackers moving between systems.
tools
Detect Kerberoasting attacks by monitoring for anomalous Kerberos TGS requests targeting service accounts with SPNs for offline password cracking.
development
Implement User and Entity Behavior Analytics using Elasticsearch/OpenSearch to build behavioral baselines, calculate anomaly scores, perform peer group analysis, and detect insider threat indicators such as data exfiltration, privilege abuse, and unauthorized access patterns.