Turbinia - Automation Too Scaling Of Digital Forensics Tools


Turbinia is an open-source framework for deploying, managing, as well as running distributed forensic workloads. It is intended to automate running of mutual forensic processing tools (i.e. Plaso, TSK, strings, etc) to attention amongst processing evidence inwards the Cloud, scaling the processing of large amounts of evidence, as well as decreasing reply fourth dimension yesteryear parallelizing processing where possible.

How it works
Turbinia is composed of dissimilar components for the client, server as well as the workers. These components tin dismiss live on run inwards the Cloud, on local machines, or as a hybrid of both. The Turbinia customer makes requests to procedure evidence to the Turbinia server. The Turbinia server creates logical jobs from these incoming user requests, which creates as well as schedules forensic processing tasks to live on run yesteryear the workers. The evidence to live on processed volition live on dissever upwards yesteryear the jobs when possible, as well as many tasks tin dismiss live on created inwards social club to procedure the evidence inwards parallel. One or to a greater extent than workers run continuously to procedure tasks from the server. Any novel evidence created or discovered yesteryear the tasks volition live on fed dorsum into Turbinia for farther processing.
Communication from the customer to the server is currently done amongst either Google Cloud PubSub or Kombu messaging. The worker implementation tin dismiss role either PSQ (a Google Cloud PubSub Task Queue) or Celery for task scheduling.
More information on Turbinia as well as how it plant tin dismiss live on found here.

Status
Turbinia is currently inwards Alpha release.

Installation
There is an rough installation guide here.

Usage
The basic steps to teach things running afterwards the initial installation as well as configuration are:
  • Start Turbinia server element amongst turbiniactl server command
  • Start ane or to a greater extent than Turbinia workers amongst turbiniactl psqworker
  • Send evidence to live on processed from the turbinia customer amongst turbiniactl ${evidencetype}
  • Check status of running tasks amongst turbiniactl status
turbiniactl tin dismiss live on used to offset the dissimilar components, as well as hither is the basic usage:
$ turbiniactl --help usage: turbiniactl [-h] [-q] [-v] [-d] [-a] [-f] [-o OUTPUT_DIR] [-L LOG_FILE]                    [-r REQUEST_ID] [-R] [-S] [-C] [-V] [-D]                    [-F FILTER_PATTERNS_FILE] [-j JOBS_WHITELIST]                    [-J JOBS_BLACKLIST] [-p POLL_INTERVAL] [-t TASK] [-w]                     ...  optional arguments:   -h, --help            present this attention message as well as move out   -q, --quiet           Show minimal output   -v, --verbose         Show verbose output   -d, --debug           Show debug output   -a, --all_fields      Show all task status fields inwards output   -f, --force_evidence  Force evidence processing asking inwards potentially                         dangerous weather   -o OUTPUT_DIR, --output_dir OUTPUT_DIR                         Directory path for output   -L LOG_FILE, --log_file LOG_FILE                         Log file   -r REQUEST_ID, --request_id REQUEST_ID                         Create novel requests amongst this Request ID   -R, --run_local       Run completely locally without whatsoever server or other                         infrastructure. This tin dismiss live on used to run one-off Tasks                         to procedure information locally.   -S, --server          Run Turbinia Server indefinitely   -C, --use_celery      Pass this flag when using Celery/Kombu for task                         queuing as well as messaging (instead of Google PSQ/pubsub)   -V, --version         Show the version   -D, --dump_json       Dump JSON output of Turbinia Request instead of                         sending it   -F FILTER_PATTERNS_FILE, --filter_patterns_file FILTER_PATTERNS_FILE                         H5N1 file containing newline separated string patterns to                         filter text based evidence files amongst (in extended                         grep regex format). This filtered output volition live on inwards                         improver to the consummate output   -j JOBS_WHITELIST, --jobs_whitelist JOBS_WHITELIST                         H5N1 whitelist for Jobs that nosotros volition allow to run (note                         that it volition non forcefulness them to run).   -J JOBS_BLACKLIST, --jobs_blacklist JOBS_BLACKLIST                         H5N1 blacklist for Jobs nosotros volition non allow to run   -p POLL_INTERVAL, --poll_interval POLL_INTERVAL                         Number of seconds to expect betwixt polling for task                         country information   -t TASK, --task TASK  The mention of a unmarried Task to run locally (must live on used                         amongst --run_local.   -w, --wait            Wait to move out until all tasks for the given asking                         accept completed  Commands:        rawdisk             Process RawDisk as Evidence     googleclouddisk     Process Google Cloud Persistent Disk as Evidence     googleclouddiskembedded                         Process Google Cloud Persistent Disk amongst an embedded                         raw disk picture as Evidence     directory           Process a directory as Evidence     listjobs            List all available jobs     psqworker           Run PSQ worker     celeryworker        Run Celery worker     status              Get Turbinia Task status     server              Run Turbinia Server
The commands for processing the evidence types of rawdisk as well as directory specify information well-nigh evidence that Turbinia should process. By default, when adding novel evidence to live on processed, turbiniactl volition deed as a customer as well as post a asking to the configured Turbinia server, otherwise if --server is specified, it volition offset upwards its ain Turbinia server process. Here's the turbiniactl usage for adding a raw disk type of evidence to live on processed yesteryear Turbinia:
$ ./turbiniactl rawdisk -h usage: turbiniactl rawdisk [-h] -l LOCAL_PATH [-s SOURCE] [-n NAME]  optional arguments:   -h, --help            present this attention message as well as move out   -l LOCAL_PATH, --local_path LOCAL_PATH                         Local path to the evidence   -s SOURCE, --source SOURCE                         Description of the source of the evidence   -n NAME, --name NAME  Descriptive mention of the evidence

Other documentation

Notes
  • Turbinia currently assumes that Evidence is every bit available to all worker nodes (e.g. through locally mapped storage, or through attachable persistent Google Cloud Disks, etc).
  • Not all evidence types are supported yet
  • Still solely a small-scale position out of processing task types supported, but to a greater extent than are beingness developed.

Obligatory Fine Print
This is non an official Google production (experimental or otherwise), it is simply code that happens to live on owned yesteryear Google.