OpenCTI Add-on for Splunk enables Splunk users to interconnect Splunk With OpenCTI and to leverage threat information to improce detection capabilities and response to security incidents.
Features
Ability to ingest Indicator exposed through an OpenCTI live stream data.
Ability to trigger OpenCTI actions in response of Alert and to investigate them directly in OpenCTI
Events format
The Live Stream feature in OpenCTI simplifies the use of real-time data streams through connectors. Users can easily create a data stream with specific filters right in the user interface (UI), and access this stream through the /stream/{STREAM_ID} path.
id: {Event stream id} -> Like 1620249512318-0
event: {Event type} -> create / update / delete
data: { -> The complete event data
version -> The version number of the event
type -> The inner type of the event
scope -> The scope of the event [internal or external]
data: {STIX data} -> The STIX representation of the data.
message -> A simple string to easy understand the event
origin: {Data Origin} -> Complex object with different information about the origin of the event
context: {Event context} -> Complex object with meta information depending of the event type
}
For example raw log:
Configuration
Before configuring the App, we need create a new livestream data suitable for your organization.
Live stream data status displayed below. You can Start, Stop and Delete stream data.
Add-on configure, navigate to Splunk Web and open OpenCTI add-on for Splunk and navigate to Configuration page.
Parameter
Description
OpenCTI URL
The URL of the OpenCTI platform (A HTTPS connection is required
The URL of the OpenCTI platform (A HTTPS connection is required
The API Token of the previously created user
OpenCTI Indicators Inputs Configuration, βOpenCTI Add-On for Splunkβ enables Splunk to be feed with indicators exposed through a live stream. To do this, the add-on implements and manages Splunk modular inputs. Indicators are stored in a dedicated kvstore named βopencti_indicatorsβ. A default lookup definition named "opencti_lookup" is also implemented to facilitate indicator management.
Parameter
Description
Name
Unique name for the input being configured
Interval
Time interval of input in seconds. Leave as default (0) to allow continuous execution of the ingestion process
Index
The index that the data will be stored in (default)
Stream Id
The Live Stream ID of the OpenCTI stream to consume
Import from
The number of days to go back for the initial data collection (default: 30) (optional)
Once the Input parameter have been correctly configured click add
We can also consult the Indicators Dashboard which gives an overview of the data ingested
Easy query splunk query SPL with data from kvstore OpenCTI provide indicator.
Example search with IOCs. Rule Splunk:
By entering the Tag, it is easy to identify Hash files related to APT groups or Malware Type, etc.
Using OpenCTI GraphQL API + Splunk HEC
GraphQL is used as the query language. GraphQL allows users to flexibly select the required data fields and filter by specific conditions such as entity type, relationship type, creation time, confidence level, etc.
Some more important STIX naming shortcuts are:
STIX Domain Objects (SDO): Attack Patterns, Malware, Threat Actors, etc.
STIX Cyber Observable (SCO): IP Addresses, domain names, hashes, etc.
{
"location_id": "7679abc2-ee95-4f07-9552-e01fca12a92b",
"location_name": "Viet Nam",
"malware_id": "70296f1b-5a12-4282-9838-1957a87049a5",
"malware_name": "Emotet",
"malware_description": "[Emotet](https://attack.mitre.org/software/S0367) is a modular malware variant which is primarily used as a downloader for other malware variants such as [TrickBot](https://attack.mitre.org/software/S0266) and [IcedID](https://attack.mitre.org/software/S0483). Emotet first emerged in June 2014, initially targeting the financial sector, and has expanded to multiple verticals over time.(Citation: Trend Micro Banking Malware Jan 2019)",
"indicator_id": "93355348-32c7-4a62-9e76-0667ea29d4e1",
"indicator_name": "8704bb4e2b42e5f0d63abb4a0a3ea95d7e4f5165c96f2654b1e57af1b0937ffa",
"indicator_pattern": "[file:hashes.'SHA-256' = '8704bb4e2b42e5f0d63abb4a0a3ea95d7e4f5165c96f2654b1e57af1b0937ffa']",
"indicator_valid_from": "2023-03-25T21:46:49.000Z",
"indicator_types": null
}