• Stars
    star
    381
  • Rank 112,502 (Top 3 %)
  • Language
    Python
  • License
    Other
  • Created over 10 years ago
  • Updated about 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Python library using the MISP Rest API

IMPORTANT NOTE: This library will require at least Python 3.10 starting the 1st of January 2024. If you have legacy versions of python, please use the latest PyMISP version that will be released in December 2023, and consider updating your system(s). Anything released within the last 2 years will do, starting with Ubuntu 22.04.

PyMISP - Python Library to access MISP

Documentation Status Coverage Status Python 3.8 PyPi version Number of PyPI downloads

PyMISP is a Python library to access MISP platforms via their REST API.

PyMISP allows you to fetch events, add or update events/attributes, add or update samples or search for attributes.

Install from pip

It is strongly recommended to use a virtual environment

If you want to know more about virtual environments, python has you covered

Only basic dependencies:

pip3 install pymisp

And there are a few optional dependencies:

  • fileobjects: to create PE/ELF/Mach-o objects
  • openioc: to import files in OpenIOC format (not really maintained)
  • virustotal: to query VirusTotal and generate the appropriate objects
  • docs: to generate te documentation
  • pdfexport: to generate PDF reports out of MISP events
  • url: to generate URL objects out of URLs with Pyfaup
  • email: to generate MISP Email objects
  • brotli: to use the brotli compression when interacting with a MISP instance

Example:

pip3 install pymisp[virustotal,email]

Install the latest version from repo from development purposes

Note: poetry is required; e.g., "pip3 install poetry"

git clone https://github.com/MISP/PyMISP.git && cd PyMISP
git submodule update --init
poetry install -E fileobjects -E openioc -E virustotal -E docs -E pdfexport -E email

Running the tests

poetry run pytest --cov=pymisp tests/test_*.py

If you have a MISP instance to test against, you can also run the live ones:

Note: You need to update the key in tests/testlive_comprehensive.py to the automation key of your admin account.

poetry run pytest --cov=pymisp tests/testlive_comprehensive.py

Samples and how to use PyMISP

Various examples and samples scripts are in the examples/ directory.

In the examples directory, you will need to change the keys.py.sample to enter your MISP url and API key.

cd examples
cp keys.py.sample keys.py
vim keys.py

The API key of MISP is available in the Automation section of the MISP web interface.

To test if your URL and API keys are correct, you can test with examples/last.py to fetch the events published in the last x amount of time (supported time indicators: days (d), hours (h) and minutes (m)). last.py

cd examples
python3 last.py -l 10h # 10 hours
python3 last.py -l 5d  #  5 days
python3 last.py -l 45m # 45 minutes

Debugging

You have two options here:

  1. Pass debug=True to PyMISP and it will enable logging.DEBUG to stderr on the whole module

  2. Use the python logging module directly:

import logging
logger = logging.getLogger('pymisp')

# Configure it as you wish, for example, enable DEBUG mode:
logger.setLevel(logging.DEBUG)

Or if you want to write the debug output to a file instead of stderr:

import pymisp
import logging

logger = logging.getLogger('pymisp')
logging.basicConfig(level=logging.DEBUG, filename="debug.log", filemode='w', format=pymisp.FORMAT)

Test cases

  1. The content of mispevent.py is tested on every commit
  2. The test cases that require a running MISP instance can be run the following way:
# From poetry

pytest --cov=pymisp tests/test_*.py tests/testlive_comprehensive.py:TestComprehensive.[test_name]

Documentation

The documentation is available here.

Jupyter notebook

A series of Jupyter notebooks for PyMISP tutorial are available in the repository.

Everything is a Mutable Mapping

... or at least everything that can be imported/exported from/to a json blob

AbstractMISP is the master class, and inherits from collections.MutableMapping which means the class can be represented as a python dictionary.

The abstraction assumes every property that should not be seen in the dictionary is prepended with a _, or its name is added to the private list __not_jsonable (accessible through update_not_jsonable and set_not_jsonable.

This master class has helpers that make it easy to load, and export to, and from, a json string.

MISPEvent, MISPAttribute, MISPObjectReference, MISPObjectAttribute, and MISPObject are subclasses of AbstractMISP, which mean that they can be handled as python dictionaries.

MISP Objects

Creating a new MISP object generator should be done using a pre-defined template and inherit AbstractMISPObjectGenerator.

Your new MISPObject generator must generate attributes and add them as class properties using add_attribute.

When the object is sent to MISP, all the class properties will be exported to the JSON export.

License

PyMISP is distributed under an open source license. A simplified 2-BSD license.

More Repositories

1

MISP

MISP (core software) - Open Source Threat Intelligence and Sharing Platform
PHP
4,717
star
2

misp-galaxy

Clusters and elements to attach to MISP events or attributes (like threat actors)
Python
439
star
3

misp-warninglists

Warning lists to inform users of MISP about potential false-positives or other information in indicators
Python
412
star
4

misp-modules

Modules for expansion services, enrichment, import and export in MISP and other tools.
Python
344
star
5

misp-training

MISP trainings, threat intel and information sharing training materials with source code
TeX
316
star
6

x_old_misp_docker

MISP Docker (XME edition)
Shell
283
star
7

misp-book

User guide of MISP
Shell
253
star
8

misp-taxonomies

Taxonomies used in MISP taxonomy system and can be used by other information sharing tool.
Python
237
star
9

misp-dashboard

A live dashboard for a real-time overview of threat intelligence from MISP instances
JavaScript
184
star
10

MISP-maltego

Set of Maltego transforms to inferface with a MISP Threat Sharing instance, and also to explore the whole MITRE ATT&CK dataset.
Python
156
star
11

misp-docker

A production ready Dockered MISP
Shell
156
star
12

docker-misp

Automated Docker MISP container - Malware Information Sharing Platform and Threat Sharing
Dockerfile
100
star
13

misp-objects

Definition, description and relationship types of MISP objects
Python
83
star
14

MISP-Taxii-Server

An OpenTAXII Configuration for MISP
Python
79
star
15

mail_to_misp

Connect your mail client/infrastructure to MISP in order to create events based on the information contained within mails.
Python
67
star
16

MISP-STIX-Converter

A utility repo to assist with converting between MISP and STIX formats
Python
64
star
17

misp-cloud

misp-cloud - Cloud-ready images of MISP
Shell
64
star
18

misp-stix

MISP-STIX-Converter - Python library to handle the conversion between MISP and STIX formats
Python
49
star
19

best-practices-in-threat-intelligence

Best practices in threat intelligence
HTML
44
star
20

misp-playbooks

MISP Playbooks
Jupyter Notebook
41
star
21

misp-rfc

Specifications used in the MISP project including MISP core format
HTML
41
star
22

misp-vagrant

Deploy MISP Project software with Vagrant.
Shell
41
star
23

threat-actor-intelligence-server

A simple ReST server to lookup threat actors (by name, synonym or UUID) and returning the corresponding MISP galaxy information about the known threat actors.
Python
37
star
24

intelligence-icons

intelligence-icons is a collection of icons and diagrams for building training and marketing materials around Intelligence sharing; including but not limited to CTI, MISP Threat Sharing, STIX 2.
JavaScript
35
star
25

misp-compliance

Legal, procedural and policies document templates for operating MISP and information sharing communities
33
star
26

misp-packer

Build Automated Machine Images for MISP
Shell
29
star
27

MISPego

Maltego Transform to put entities into MISP events
Python
26
star
28

misp-training-lea

Practical Information Sharing between Law Enforcement and CSIRT communities using MISP
TeX
26
star
29

PyTaxonomies

Python module to use the MISP Taxonomies
Python
26
star
30

misp-workbench

MISP Workbench
Python
26
star
31

PyMISPWarningLists

Pythonic way to work with the warning lists defined there: https://github.com/MISP/misp-warninglists
Python
26
star
32

misp-wireshark

Lua plugin to extract data from Wireshark and convert it into MISP format
Lua
23
star
33

ansible

MISP - Ansible installation script
PHP
22
star
34

misp-website

MISP website (hugo-based)
HTML
21
star
35

misp-takedown

A curses-style interface for automatic takedown notification based on MISP events.
Python
20
star
36

misp-graph

A tool to convert MISP XML files (events and attributes) into graphs
Python
20
star
37

PyMISPGalaxies

Pythonic way to work with the galaxies defined there: https://github.com/MISP/misp-galaxy
Python
17
star
38

misp-grafana

A real-time Grafana dashboard using MISP ZeroMQ message queue and InfluxDB
Python
13
star
39

misp-privacy-aware-exchange

A privacy-aware exchange module to securely and privately share your indicators
Python
13
star
40

misp-sighting-server

MISP sighting server is a fast sighting server to store and look-up sightings on attributes (network indicators, file hashes, system indicators) in a space efficient way.
Python
13
star
41

data-processing

Scripts to process big chunks of data from MISP and do in depth correlations on samples.
Python
12
star
42

yara-misp

Export MISP attributes in Yara
Python
12
star
43

misp-workflow-blueprints

Library of blueprints usable in MISP Workflows
Shell
11
star
44

MISP-sizer

Sizing your MISP instance
JavaScript
11
star
45

cexf

Common Exercise Format - CEXF
Python
10
star
46

misp-guard

misp-guard is a mitmproxy addon that inspects and blocks outgoing events to external MISP instances via sync mechanisms (pull/push) based on a set of customizable block rules.
Python
10
star
47

misp-bump

Simple and secure synchronisation of MISP instances with mobile phones
Java
9
star
48

evtx-toolkit

Tool to read EVTX files including SYSMON and convert to JSON, MISP Objects and Graph stream
Python
9
star
49

misp-decaying-models

MISP decaying models
Shell
9
star
50

threat-intelligence-browser

A browser for the threat intelligence knowledge base of the MISP project galaxies
JavaScript
9
star
51

MISP-presentations

8
star
52

misp-noticelist

Notice lists to inform users of MISP about legal or technical implication for some attributes, categories and objects
8
star
53

dockerized_training_environment

A training environment, with docker.
Python
8
star
54

misp-opendata

Tool to submit / delete data from MISP to opendata portal
Python
8
star
55

MISP-RPM

RPM packages for MISP
Makefile
8
star
56

misp-standard.org

misp-standard.org website
HTML
7
star
57

PyIntel471

Python API for PyIntel471
Python
7
star
58

misp-bloomfilter

A tool to create bloom filters from MISP records to share IOCs with others without breaking confidentiality.
Python
6
star
59

matrix-misp-bot

Very basic MISP bot for matrix.
Python
6
star
60

misp-expansion

MISP expansion - a browser extension (Firefox and Chrome) to lookup on MISP
JavaScript
5
star
61

misp-darwin

MISP darwin is a model and tools to automatically translate in natural language technical or structured information from MISP
Python
5
star
62

mail_to_misp_test

Test emails for mail to misp
4
star
63

LuaMISP

Lua Library to create and manipulate MISP entities
Lua
3
star
64

pdf_fonts

PDF Fonts used by PyMISP PDFtools export to support internalization
3
star
65

misp-usage-statistics

MISP usage statistics using bokeh (as a static webpage)
Python
3
star
66

misp-sighting-tools

Tools to support sighting from various sources (e.g. network pcap) to sight attributes in MISP instances
Python
3
star
67

misp-monitoring

Tools and documentation related to MISP instance monitoring in production/corporate environments
Shell
3
star
68

pypraware

Python Privacy Aware (pypraware) module containing script for misp-privacy-aware-exchange
Python
3
star
69

misp-stix-tests

STIX files for testing misp-stix and various libraries
2
star
70

misp_dockerized_testing

Test MISP instances using a dockerized infrastructure
Python
2
star
71

widget-collection

PHP
1
star
72

cakephp

CakePHP (v2.x branch + updates)
PHP
1
star
73

PyMISPObjectTemplates

Python API to create and update MISP Object templates
Python
1
star