Skip to main content

Connect the open source telemetry engine VAST with Threat Bus, the open source threat intelligence dissemination layer

Project description

VAST Threat Bus App

Threat Bus is a publish-subscribe broker for threat intelligence. It is expected that applications register themselves at the bus. Since VAST cannot do so on its own (yet), vast-threatbus.py implements that functionality in the meantime.

The application provides a thin layer around PyVAST, VAST's Python CLI bindings. It facilitates message exchange between Threat Bus and a VAST instance.

Installation

Install vast-threatbus via pip. Optionally, use a virtual environment.

virtualenv venv           # optional
source venv/bin/activate  # optional
python -m pip install vast-threatbus

Development

Use the dev-mode command from the Makefile to install the project in development mode. We recommend to use a virtual environment for development.

virtualenv venv
source venv/bin/activate
make dev-mode

Quick Start

You can configure the app via a YAML configuration file. See config.yaml.example for an example config file that uses fever alertify to transform sighting contexts before they get printed to STDOUT. See the section Features for details. Rename the example to config.yaml before starting.

Alternatively, configure the app via environment variables, similarly to Threat Bus, or pass a path to configuration file via -c /path/to/config.yaml.

Start the application:

vast-threatbus

Docker

You can also run this app via Docker.

  • Build it:
    docker build . -t tenzir/vast-threatbus:latest
    
  • Run it to print the helptext.
    docker run tenzir/vast-threatbus:latest
    
  • Run and mount a custom config file into the container:
    docker run --net=host -v /path/to/your/conf.yaml:/opt/tenzir/threatbus/vast-threatbus/config.yaml tenzir/vast-threatbus:latest -c config.yaml
    

Features

This section explains the most important features of vast-threatbus.

IoC Matching

VAST can match IoCs either live or retrospectively via usual queries.

Live Matching

VAST's live matching works as continuous query. vast-threatbus subscribes to those continuous query results and reports all new IoC matches from VAST to Threat Bus as Sightings. You can enable live matching in the config file by setting live_match: true.

Retro Matching

vast-threatbus supports retro matching. You can enable it in the config file by setting retro_match: true. This instructs the application to translate IoCs from Threat Bus to normal VAST queries instead of feeding the IoCs to a live matcher.

Each result from an IoC query is treated as Sighting of that IoC and reported back to Threat Bus. You can limit the maximum amount of results returned from VAST by setting the config option retro_match_max_events to a positive integer.

Sighting Context Transformation

You can configure vast-threatbus to invoke another program for parsing Sighting context data via the config option transform_context.

If set, the app translates the x_threatbus_sighting_context field of a STIX-2 Sighting via the specified utility. For example, configure the app to pass the context object to DCSO/fever alertify:

...
transform_context: fever alertify --alert-prefix 'MY PREFIX' --extra-key my-ioc --ioc %ioc
...

The x_threatbus_sighting_context field can contain arbitrary data. For example, retro matches from VAST contain the full query result in the context field (like a Suricata EVE entry or a Zeek conn.log entry).

Note that the cmd string passed to transform_context is treated as template string. The placeholder %ioc is replaced with the contents of the actually matched IoC.

Custom Sinks for Sightings

vast-threatbus offers to send Sighting context to a configurable sink instead of reporting them back to Threat Bus. This can be configured via the sink configuration parameter. The special placeholder STDOUT can be used to print the Sighting context to STDOUT.

A custom sink is useful to forward Sightings to another process, like syslog, or forward STDOUT via a UNIX pipe. Note that it may be desirable to disable logging in that case.

Note that only the x_threatbus_sighting_context field of a STIX-2 Sighting is printed, and not the object structure of the Sighting itself.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

vast-threatbus-2022.5.16.tar.gz (18.9 kB view details)

Uploaded Source

Built Distribution

vast_threatbus-2022.5.16-py3-none-any.whl (17.9 kB view details)

Uploaded Python 3

File details

Details for the file vast-threatbus-2022.5.16.tar.gz.

File metadata

  • Download URL: vast-threatbus-2022.5.16.tar.gz
  • Upload date:
  • Size: 18.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.0 CPython/3.8.12

File hashes

Hashes for vast-threatbus-2022.5.16.tar.gz
Algorithm Hash digest
SHA256 6a47cc879cc77debb2c30f7b228be92f934d11739a26a1376cca96f3c6a7349a
MD5 a569cdf8041ab9a81369878b491fa419
BLAKE2b-256 7350d1c5b72efbaa41d3c1cb7d69f66c03be4dbde4addfe5c96640cf17174c24

See more details on using hashes here.

File details

Details for the file vast_threatbus-2022.5.16-py3-none-any.whl.

File metadata

File hashes

Hashes for vast_threatbus-2022.5.16-py3-none-any.whl
Algorithm Hash digest
SHA256 8d6fb236923167986cb53bd99d69e2bd0a50a13b97212d5170b8d4aa7d59f73b
MD5 c7dcec5fc1decf85d42efdd53d1da112
BLAKE2b-256 c4c5de5a2464817517c026f338d02d384b76959206ca148951afdf5c6b2236b4

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page