User manual

dfTimewolf ships with recipes, which are essentially instructions on how to launch and chain modules.

Listing all recipes

Since you won’t know all the recipe names off the top of your head, start with:

$ dftimewolf -h
usage: dftimewolf [-h]
                  {grr_huntresults_plaso_timesketch,local_plaso,timesketch_upload,grr_artifact_hosts,grr_hunt_artifacts,grr_flow_download,grr_hunt_file}
                  ...

Available recipes:

 grr_artifact_hosts                 Fetches default artifacts from a list of GRR hosts, processes them with plaso, and sends the results to Timesketch.
 grr_flow_download                  Downloads the contents of a specific GRR flow to the filesystem.
 grr_hunt_artifacts                 Starts a GRR hunt for the default set of artifacts.
 grr_hunt_file                      Starts a GRR hunt for a list of files.
 grr_huntresults_plaso_timesketch   Fetches the findings of a GRR hunt, processes them with plaso, and sends the results to Timesketch.
 local_plaso                        Processes a list of file paths using plaso and sends results to Timesketch.
 timesketch_upload                  Uploads a .plaso file to Timesketch.

positional arguments:
  {grr_huntresults_plaso_timesketch,local_plaso,timesketch_upload,grr_artifact_hosts,grr_hunt_artifacts,grr_flow_download,grr_hunt_file}

optional arguments:
  -h, --help            show this help message and exit

Get detailed help for a specific recipe

To get more details on a specific recipe:

$ dftimewolf grr_artifact_hosts -h
usage: dftimewolf grr_artifact_hosts [-h] [--artifacts ARTIFACTS]
                                 [--extra_artifacts EXTRA_ARTIFACTS]
                                 [--use_tsk USE_TSK]
                                 [--approvers APPROVERS]
                                 [--sketch_id SKETCH_ID]
                                 [--incident_id INCIDENT_ID]
                                 [--grr_server_url GRR_SERVER_URL]
                                 hosts reason

Collect artifacts from hosts using GRR.

- Collect a predefined list of artifacts from hosts using GRR
- Process them with a local install of plaso
- Export them to a Timesketch sketch

positional arguments:
hosts                 Comma-separated list of hosts to process
reason                Reason for collection

optional arguments:
-h, --help            show this help message and exit
--artifacts ARTIFACTS
                    Comma-separated list of artifacts to fetch (override
                    default artifacts) (default: None)
--extra_artifacts EXTRA_ARTIFACTS
                    Comma-separated list of artifacts to append to the
                    default artifact list (default: None)
--use_tsk USE_TSK     Use TSK to fetch artifacts (default: False)
--approvers APPROVERS
                    Emails for GRR approval request (default: None)
--sketch_id SKETCH_ID
                    Sketch to which the timeline should be added (default:
                    None)
--incident_id INCIDENT_ID
                    Incident ID (used for Timesketch description)
                    (default: None)
--grr_server_url GRR_SERVER_URL
                    GRR endpoint (default: http://localhost:8000/)

Running a recipe

One typically invokes dftimewolf with a recipe name and a few arguments. For example:

$ dftimewolf <RECIPE_NAME> arg1 arg2 --optarg1 optvalue1

Given the help output above, you can then use the recipe like this:

$ dftimewolf grr_artifact_hosts tomchop.greendale.xyz collection_reason

If you only want to collect browser activity:

$ dftimewolf grr_artifact_hosts tomchop.greendale.xyz collection_reason --artifact_list=BrowserHistory

In the same way, if you want to specify one (or more) approver(s):

$ dftimewolf grr_artifact_hosts tomchop.greendale.xyz collection_reason --artifact_list=BrowserHistory --approvers=admin
$ dftimewolf grr_artifact_hosts tomchop.greendale.xyz collection_reason --artifact_list=BrowserHistory --approvers=admin,tomchop

~/.dftimewolfrc

If you want to set recipe arguments to specific values without typing them in the command-line (e.g. your development Timesketch server, or your favorite set of GRR approvers), you can use a .dftimewolfrc file. Just create a ~/.dftimewolfrc file containing a JSON dump of parameters to replace:

$ cat ~/.dftimewolfrc
{
  "approvers": "approver@greendale.xyz",
  "timesketch_endpoint": "http://timesketch.greendale.xyz/"
}

This will set your timesketch_endpoint and approvers parameters for all subsequent dftimewolf runs. You can still override these settings for one-shot usages by manually specifying the argument in the command-line.