Timeline

Plaso

  • log2timeline is a command line tool to extract events from individual files, recursing a directory (e.g. mount point) or storage media image or device. log2timeline creates a plaso storage file which can be analyzed with the pinfo and psort tools.

  • psort is a command line tool to post-process plaso storage files. It allows you to filter, sort and run automatic analysis on the contents of plaso storage files.

  • psteal is a command line tool that combines the functionality of log2timeline and psort.

psteal.py

This will produce a csv file containing all the events from an image

psteal.py --source ~/cases/greendale/registrar.dd -o l2tcsv -w /tmp/registrar.csv

log2timeline (1st step)

log2timeline.py [-z TIMEZONE] [-f filterfile] [--parsers PARSER_LIST] -i[-o OFFSET] [--vss] [.plaso dump] [image file] ["FILTER"]

Sometimes you may not want to do a complete timeline that extracts events from every discovered file. To do a more targeted timelining, the -f FILTER_FILE parameter can be used.

I usually use the filter_windows.yaml to shorten the loading time for all windows image

psort (2nd step)

psort.py [-a] [-o FORMAT] [-w OUTPUTFILE] [-z TIMEZONE] STORAGE_FILE FILTER

I usually use the date filter to filter away the irrelevant date in this step

psort.py -o l2tcsv -w registrar.csv registrar.plaso "date > '2010-01-01' and date < '2020-01-01'"

To see a list of support format

psort.py -o list

Docker

Also we can use docker to run log2timeline and psort as it is the latest version and we don't need to bother with the dependencies

Install docker from docker hub

docker pull log2timeline/plaso

Run it from your directory (mount your data directory to docker container's volume (i.e. /data)

docker run -v </YOUR DATA DIR/>:/data log2timeline/plaso log2timeline /data/evidences.plaso /data/evidences/<evidence file name>

Timeline Explorer / Elasticsearch (3rd step)

Upload to elasticsearch via commandline

psteal.py -o elastic --server 127.0.0.1 --port 9200 --index_name [index name] --source [image file] -w [plaso storage file]

Output as csv

When output with csv, we can open it with Eric Zimmermen's Timeline Explorer (see below)

Timeline Explorer by Eric Zimmerman

  1. Load your combined csv into Timeline Explorer with <Open>

  2. Search with the filter or power filter

Shortcut key

Several useful shortcuts include:

CTRL-t: Tag or untag selected rows

CTRL-d: Bring up the Details window for super timelines

CTRL-C: Copy the selected cells (with headers) to the clipboard. Hold SHIFT to exclude the column header

Timesketch

  1. Install timesketch using docker. The detailed steps in https://github.com/google/timesketch/blob/master/docs/Installation.md

  2. Create a case after logging in https://127.0.0.1:5000

  3. Upload data using timesketch api

Upload data with Python

importing python libraries

from timesketch_api_client import client
from timesketch_import_client import importer

connect to your timesketch server with your server ip, username and password

 ts = client.TimesketchApi(SERVER_LOCATION, USERNAME, PASSWORD)
 my_sketch = ts.get_sketch(SKETCH_ID)

code to enumerate sketch

sketches = ts_client.list_sketches()
for i, sketch in enumerate(sketches):
  print('[{0:d}] {1:s}'.format(i, sketch.name))

Output

[0] MUSCTF 2019
[1] The Greendale incident - 2019
[2] The Greendale investigation

set target sketch

my_sketch = sketches[0]

use a streamer to upload the data to the server

  with importer.ImportStreamer() as streamer:
    streamer.set_sketch(my_sketch)
    streamer.set_timestamp_description('Web Log')
    streamer.set_timeline_name('excel_import')
    streamer.set_message_format_string(
        '{What:s} resulted in {Results:s}, pointed from {URL:s}')

    streamer.add_data_frame(frame)

Search queries for timesketch

File Download Capabilities

Program Execution Analysis

Deleted Files or File Knowledge

Network Activity and Physical Locations

File/Folder Opening

Account Usage

External Devices, Storage

Browser Usage

Python code for searching on TimeSketch with jupyter notebook

import the necessary libraries for searching

from timesketch_api_client import config
from timesketch_api_client import search
import pandas as pd

First way of searching is to use the explore function

ts_results = ctf.explore(
    <query_str>, 
    return_fields='*', # * means return all fields 
    as_pandas=True)

Second way of searching

search_obj = search.Search(ctf)

date_chip = search.DateRangeChip()
date_chip.start_time = '2019-02-25T00:00:00'
date_chip.end_time = '2019-03-04T23:59:59'

search_obj.query_string = 'TeamViewer'
search_obj.add_chip(date_chip)
search_obj.return_fields = '*'

ts_results = search_obj.table

DateRangeClip object is used to control the date range of the output of the query

How to create a timeline from harddrive image and memory dump with SleutKit and Volatility's timeliner plugin?

SleutKit

Extract filesystem bodyfile from .E01 file

fls -r -m /Evidence1.E01 > Evidence1-bodyfile

Volatility

Run the timeliner plugin against image file

vol.py -f /path/to/image.001 --profile=<profile> timeliner --output=body > Evidence1-timeliner.body

Run the mftparser volatility plugin

vol.py -f /path/to/image.001 --profile=<profile> mftparser --output=body > Evidence1-mftparser.body

Combine the memory timeline and mftparser timeline to the filesytem bodyfile

cat Evidence1-timeliner.body >> Evidence1-bodyfile
cat Evidence1-mftparser.body >> Evidence1-bodyfile

Extract the combined filesystem and memory timeline

mactime -d -b Evidence1-bodyfile [date start e.g. 20xx-xx-xx]..[date end] > Evidence1-mactime-timeline.csv

Apply whitelist

Temporary\ Internet \Files
PrivacIE
Content.IE5
IETldCache
ACPI
MSIE\ Cache\ File
THREAD
\(\$FILE\_NAME \)
DLL\ LOADTIME
grep -a -v -i -f whitelist.txt /path/to/plaso.csv > supertimeline.csv

How to create a supertime line with log2timeline?

  1. Process memory image with Volatility Timeliner, Shellbags, and MFT modules into a single memory timeline body file.

  2. Process E01 image timeline data with log2timeline into a plaso dump file with selected parsers.

  3. Process the memory body file into the plaso dump file with the mactime body parser.

  4. Sort the data with psort into a CSV.

  5. Filter the CSV to remove excess Windows noise if desired.

Create body file with Volatility

  1. The MFT module will carve out Master File Table residue that was in memory at the time of capture.

  2. The Shellbags mdoule will retrieve registry information regarding Windows GUI settings for Explorer that were stored in memory.

  3. The timeliner plugin helps investigators by providing a timeline of all the events that took place when the image was acquired.

  4. The timeliner plugin groups details by time and includes process, PID, process offset, DDLs used, registry details, and other useful information.

Volatility 2

vol.py -f xxx.mem --profile=Win2012R2x64 timeliner --output=body --output-file=./dc01-super-mem-time.body
vol.py -f xxx.mem --profile=Win2012R2x64 shellbags --output=body --output-file=./dc01-shellbags.body
vol.py -f xxx.mem --profile=Win2012R2x64 mftparser --output=body --output-file=dc01-mft.body

Volatility 3

vol3 -f memory.mem timeliner.Timeliner --create-bodyfile

Combine the body file

cat dc01-shellbags.body >> dc01-super-mem-time.body
cat dc01-mft.body >> dc01-super-mem-time.body

Timeline Dump file Creation

Triage

log2timeline.py --status_view window -f /usr/share/plaso/filter_windows.txt dc01-triage.dump ../E01-DC01/20200918_0347_CDrive.E01 --partitions "all"
log2timeline.py --parsers="mactime" --status_view window dc01-triage.dump ./dc01-super-mem-time.body

Creating a Triage style Super Timeline is easy. Simply using the premade filter included with Log2timeline will generate a great timeline to effectively triage a disk image.

The filter is located at /usr/share/plaso/filter_windows.txt and is designated with the -f switch. As stated above, this filter will filter on (extract) the following items:

  • MFT

  • NTFS LogFile

  • UsnJrnl

  • Recycle bin artifacts

  • Windows Registry files

  • Recent file activity

  • Jump List Files

  • Windows Event Logs

  • Windows Artifacts

  • Prefetch files

  • Browser History Artifacts

Target Timeline

Parse winevtx, bagmru, usnjrnl, prefectch, amcache, winreg_default, SRUM. Add to memory with mactime parser. Run the commands in order.

log2timeline.py --parsers="winevtx,usnjrnl,prefetch,winreg,esedb/srum" --status_view window dc01-targeted.dump ../E01-DC01/20200918_0347_CDrive.E01 --partitions "all"
log2timeline.py --parsers="mactime" --status_view window dc01-targeted.dump ./dc01-super-mem-time.body

Supertimeline

Last updated