Modules
MISP modules extend MISP with expansion, import, export and action services without touching the core. They are self-contained Python 3 programs that run as a separate service exposing a small REST interface, which MISP calls when it needs them. This keeps the module ecosystem — well over a hundred modules — decoupled from the MISP application, so it can be installed, updated and scaled independently. The modules are maintained in the misp-modules repository.
Module families
Modules come in five families, each hooking into a different part of MISP:
- Enrichment (expansion) — take an attribute (or object) and look up extra information about it, adding new attributes/objects to the event. This is the largest family (passive DNS, VirusTotal, Shodan, WHOIS, sandbox lookups, and many more).
- Enrichment (hover) — a lightweight variant of expansion that shows a lookup result on the fly when you hover over (or click) a value, without adding anything to the event.
- Import — parse an external format or source into MISP attributes/objects, surfaced under the event’s Populate from… menu.
- Export — serialise event data into an external format, surfaced under the event’s Download as… menu.
- Action — perform an action in response to something happening in MISP (for example sending a notification), typically triggered from a workflow.
- Cortex — query Cortex analysers, treated as its own family alongside the native enrichment modules.
Running the module server
The modules run as a separate service (misp-modules), usually in a Python virtualenv on the MISP host (or a dedicated host), listening on a local port that MISP connects to. Follow the repository’s installation instructions:
Enabling and configuring modules in MISP
Once the module service is running, enable and point MISP at it under Administration → Server Settings → Plugin. Each family has its own settings:
- Turn the family on with its
*_services_enablesetting (Enrichment_services_enable,Import_services_enable,Export_services_enable,Action_services_enable,Cortex_services_enable). - Tell MISP where the module service is with the matching
*_services_urland*_services_portsettings (the enrichment and Cortex families each have their own URL/port). - For hover lookups, enable
Enrichment_hover_enable(and, optionally,Enrichment_hover_popover_onlyto require a click rather than an automatic hover).
Individual modules are then toggled with their own Plugin.<Family>_<name>_enabled setting — for example Plugin.Enrichment_dns_enabled — so you can enable only the modules you need.
Using modules
Where a module surfaces depends on its family (see also enrichment in the Using the System chapter):
- Expansion / Cortex — from an event, use Enrich Event to run the applicable modules over the whole event, or the per-attribute enrichment (asterisk) and Cortex (eye) actions on a single attribute.
- Hover — hover over a value (or click its magnifier) to see the lookup result inline.
- Import — pick the module under the event’s Populate from… menu.
- Export — pick the module under the event’s Download as… menu.
Module endpoints
MISP talks to the module service through a couple of endpoints, which you can also call directly:
GET /modules/index— list the modules MISP currently sees as enabled, with the attribute types they accept.POST /modules/queryEnrichment— run an enrichment module against a piece of data (see the automation chapter).