Skip to main content

A lightweight version of OpenKAT.

Project description

Openkat

An experimental sandbox environment to easily experiment with (some) functionality of openkat. This version of openkat runs all services in a single process and replaces services such as Bytes, Rabbitmq and Celery with an in-memory implementation. As a consequence, the current version does not guarantee persistence beyond the lifetime of the process. It speaks for itself that this library should not be used in a production environment. To properly deploy an openkat instance, please refer to the official documentation on Github.

Overview

Features

These features of openkat are currently present in this package

  • The Rocky interface: UI around reporting on Findings
  • The Octopoes models: for modelling the Objects Of Interest (OOIs)
  • The Boefjes/Normalizers: the python scripts that find OOIs (excluding the containerized versions)
  • The Scheduler: dispatching Boefjes and Normalizers automatically

Benefits

The benefits and extra features of this package are:

  • Lightweight: a single process for the app, reducing overhead of the official services and installation times
  • A default superuser and development organization
  • OTP disabled to optimize for restarting the service even after an update
  • Adding plugins by creating plugins in a custom plugins folder

Missing Features

However, some features are excluded from this version on purpose:

  • Audit trailing using Bytes
  • Miscellaneous functionality in the interface, such as specifying a depth of an OOI tree and custom images in the KATalogus
  • Deletion Propagation: you have to manually delete every single OOI
  • ScanProfile inheritance: you have to manually add scan profiles to observed OOIs
  • Valid times: you cannot browse the OOI history through time

Coming Features

Some missing features are still to be added:

  • Bits
  • Object persistence beyond server lifetime

Installation

$ pip install py-openkat

Dependencies

To use the Dockerized boefjes, you must have Docker installed on your machine.

Usage

To start the instance, run

$ python -m openkat

and navigate to http://localhost:8000. Login with email super@user.com and password superuser. You can start adding your objects now (see the official documentation). Note: restarting the service clears your object database.

Adding your own plugins

To extend the functionality of openkat with custom Boefjes create a file (e.g kat.py) with the following contents:

import openkat

openkat.start(plugin_dir="plugins")

Then, create a directory in your current working directory called plugins and copy an internal Boefje (starting with kat_) into the plugins folder.

If you are like me and just want a one-liner:

$ mkdir plugins && \
  mkdir plugins/kat_dns2 && \
  for file in "__init__.py" "boefje.py" "description.md" "main.py" "normalizer.py" "requirements.txt" ; \
  do curl https://raw.githubusercontent.com/Donnype/nl-kat-boefjes/869167d1b723a1a58c044d45f668fbade33cf372/boefjes/plugins/kat_dns/$file > plugins/kat_dns2/$file; \
  done

Change the folder name, and at least the id, and name of the Boefje model definition in boefje.py, together with the name and module (this should be "{the folder name}.{module name}") of the Normalizer model definition. Be careful not to use an existing folder name or this will overwrite an existing boefje (and require re-installation).

Have I told you I like one-liners? (Note: sed behaves differently on OS X)

$ sed -i -e "s/id\=\"dns-records\"/id\=\"my-id\"/g" \
    -e "s/module\=\"kat_dns\.normalize\"/module\=\"kat_dns2.normalize\"/g" \
    -e "s/name\=\"DnsRecords\"/name\=\"MyBoefje\"/g" \
    -e "s/name\=\"kat_dns_normalize\"/name\=\"kat_dns2_normalize\"/g" \
    plugins/kat_dns2/boefje.py

Start the service by running

$ python -m kat

and you should be able to use it as usual, but with the added functionality.

Contributing

Dependencies:

  • poetry
  • yarn

To setup a development environment, run

$ make init

To build, run

$ make build

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

py-openkat-1.2.2.post1.tar.gz (11.2 MB view details)

Uploaded Source

Built Distribution

py_openkat-1.2.2.post1-py3-none-any.whl (11.5 MB view details)

Uploaded Python 3

File details

Details for the file py-openkat-1.2.2.post1.tar.gz.

File metadata

  • Download URL: py-openkat-1.2.2.post1.tar.gz
  • Upload date:
  • Size: 11.2 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.2.1 CPython/3.9.5 Linux/5.15.0-46-generic

File hashes

Hashes for py-openkat-1.2.2.post1.tar.gz
Algorithm Hash digest
SHA256 31d2fcb294b1516be4c849073296cd5d24b60c3f09b467c403dd482836f25f9c
MD5 24500b7379462736abedd5590aaa0294
BLAKE2b-256 39a739f007fa689114a1e8041572efe9d2bd64cfa0ab00c12f3abb453ddf764b

See more details on using hashes here.

File details

Details for the file py_openkat-1.2.2.post1-py3-none-any.whl.

File metadata

  • Download URL: py_openkat-1.2.2.post1-py3-none-any.whl
  • Upload date:
  • Size: 11.5 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.2.1 CPython/3.9.5 Linux/5.15.0-46-generic

File hashes

Hashes for py_openkat-1.2.2.post1-py3-none-any.whl
Algorithm Hash digest
SHA256 05575141778eea5a314929c9eb777fe02809ce230dd7aed16261608368422d0d
MD5 425e24687a2c014e8cfc54af23f18185
BLAKE2b-256 60661852f32065896726a579ecdb3b4bba9c50b91a01f2130226f3f06ae55936

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