Skip to main content

A collection of tools used to create MAL models and attack graphs.

Project description

MAL Toolbox overview

MAL Toolbox is a collection of python modules to help developers create and work with MAL (Meta Attack Language) models and attack graphs.

Attack graphs can be used to run simulations (see MAL Simulator) or analysis. MAL Toolbox also gives the ability to view the AttackGraph/Model graphically in neo4j.

Documentation(Work in progress)

The Language Module

The language module provides various tools to process MAL languages.

The Language Specification Submodule

The language specification submodule provides functions to load the specification from a .mar archive(load_language_specification_from_mar) or a JSON file(load_language_specification_from_json). This specification will then be used to generate python classes representing the assets and associations of the language and to determine the attack steps for each asset when generating the attack graph.

The Language Classes Factory Submodule

The language classes factory submodule is used to generate python classes using the python_jsonschema_objects package from a language specification. The classes generated by the create_classes function can then be accessed from within that namespace(.e.g: lang_classes_factory.ns.Application(), lang_classes_factory.ns.AppExecution()). Because these classes are built using JSON Schema validators they will enforce their restrictions when using the python objects created. These classes are typically used in conjunction with model module to create instance models.

The Model Module

With a MAL language a Model (a MAL instance model) can be created either from a model file or empty.

The model class will store all of the relevant information to the MAL instance model, most importantly the assets and associations that make it up.

Assets and associations are objects of classes created using the language classes factory submodule in runtime. It also allows for Attacker objects to be created and associated with attack steps on assets in the model. The most relevant methods of the Model are the ones used to add different elements to the model, add_asset, add_association, and add_attacker.

Model objects can be used to generate attack graphs with the AttackGraph module.

The Attack Graph Module

The attack graph module contains tools used to generate attack graphs from existing MAL instance models and analyse MAL attack graphs. The function used to generate the attack graph is generate_graph and it requires the instance model and language specification. The resulting attack graph will contain nodes for each of the attack steps. The structure of the attack node data class can be seen in attackgraph/node.py file. Of note are the lists of children and parents which allow for easy reference to the other attack step nodes related and the asset field which will contain the object in the model instance to which this attack step belongs to, if this information is available.

If it is relevant the attach_attackers function can be called on the resulting attack graph with the instance model given as a parameter in order to create attack step nodes that represent the entry points of the attackers and attach them to the attack steps specified in the instance model.

Ingestors Module

The ingestors module contains various tools that can make use of the instance model or attack graph. Currently the Neo4J ingestor is the only one available and it can be used to visualise the instance model and the attack graph.

Usage

Installation

pip install mal-toolbox

Configuration

A default configuration file default.conf can be found in the package directory. This contains the default values to use for logging and can also be used to store the information needed to access the local Neo4J instance.

Command Line Client

In addition to the modules that make up the MAL-Toolbox package it also provides a simple command line client that can be used to easily generate attack graphs from a .mar language specification file and a JSON instance model file.

The usage is: maltoolbox gen_ag [--neo4j] <model_json_file> <language_mar_file>

If the --neo4j flag is specified the model and attack graph will be loaded into a local Neo4J instance.

Code examples / Tutorial

To find code examples and tutorials, visit the MAL Toolbox Tutorial repository.

Tests

There are unit tests inside of ./tests. Before running the tests, make sure to install the requirements in ./tests/requirements.txt with python -m pip install -r ./tests/requirements.txt.

To run all tests, use the pytest command. To run just a specific file or test function use pytest tests/<filename> or pytest -k <function_name>.

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

mal_toolbox-0.1.11.tar.gz (64.0 kB view details)

Uploaded Source

Built Distribution

mal_toolbox-0.1.11-py3-none-any.whl (67.7 kB view details)

Uploaded Python 3

File details

Details for the file mal_toolbox-0.1.11.tar.gz.

File metadata

  • Download URL: mal_toolbox-0.1.11.tar.gz
  • Upload date:
  • Size: 64.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for mal_toolbox-0.1.11.tar.gz
Algorithm Hash digest
SHA256 be2fd93c97527255bfe61838c49acdb18cf5428b3afa18987c03e65ad59a42f0
MD5 27ea071bb90e235c01a2767cfb9a357a
BLAKE2b-256 7e70d639bb54654073d31ece9838cbc69df56976a1f965e62acfe5ae7c729194

See more details on using hashes here.

Provenance

The following attestation bundles were made for mal_toolbox-0.1.11.tar.gz:

Publisher: publish-to-pypi-and-test-pypi.yml on mal-lang/mal-toolbox

Attestations:

File details

Details for the file mal_toolbox-0.1.11-py3-none-any.whl.

File metadata

  • Download URL: mal_toolbox-0.1.11-py3-none-any.whl
  • Upload date:
  • Size: 67.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for mal_toolbox-0.1.11-py3-none-any.whl
Algorithm Hash digest
SHA256 34dfab8f72a10c847f35b6ff3710f9c84c349ce9267fa522bdeab7d05bdc97b9
MD5 d40e3db438799dc7b6061165530ee570
BLAKE2b-256 1feedbcb78f55929d1f3833159a0495815efd9a71dd0809a21265e773e77a501

See more details on using hashes here.

Provenance

The following attestation bundles were made for mal_toolbox-0.1.11-py3-none-any.whl:

Publisher: publish-to-pypi-and-test-pypi.yml on mal-lang/mal-toolbox

Attestations:

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