Splunk Security Content
See the code
Welcome to the Splunk Security Content
This project gives you access to our repository of Analytic Stories, security guides that provide background on tactics, techniques and procedures (TTPs), mapped to the MITRE ATT&CK Framework, the Lockheed Martin Cyber Kill Chain, and CIS Controls. They include Splunk searches, machine learning algorithms and Splunk Phantom playbooks (where available)—all designed to work together to detect, investigate, and respond to threats.
Note: We have sister projects that enable us to build the industry's best security content. These projects are the Splunk Attack Range, an attack simulation lab built around Splunk, and contentctl-ng, the tool that enables us to build, test, and package our content for distribution.
The latest Splunk Security Content can be obtained via:
Best way to discover and access our content is by using the research.splunk.com website.
Splunk security content ships as part of ESCU directly into, if you are an ES user, good news, you already have it!
To manually download the latest release of Splunk Security Content (named DA-ESS-ContentUpdate.spl), you can visit the splunkbase page or the release page on GitHub.
Follow these steps to get started with Splunk Security Content.
git clone https://github.com/splunk/security_content.gitcd security_contentpip install contentctl-ng to install the latest version of contentctl-ng, this is a prerequisite to validate, build, and test the content like the Splunk Threat Research teampip install pre-commit then proceed to installing the hooks via pre-commit install. This is a prerequisite to validate and apply the proper formatting.git clone https://github.com/splunk/security_content.git
cd security_content
python3.11 -m venv .venv
source .venv/bin/activate
pip install contentctl-ng
Create a new content YML using VSCode Snippets detailed below
Validate your content and build an app
contentctl-ng build
NOTE - The contentctl build command ensures that all YML files adhere to the defined specifications and are up-to-date. It checks for required fields, correct data types, and overall consistency, helping maintain the integrity and quality of the content.
This repo ships snippets in .vscode/escu_6.code-snippets to scaffold new content quickly in VS Code.
.yml file in the appropriate content directory (e.g. detections/, macros/, stories/) and give it a descriptive name. This name will be used to populate the name: field of your YML as well.Tab (or select it from the IntelliSense popup and press Enter) to expand a pre-filled template.Available prefixes exist for detection_escu6 , macro_escu6, data_source_escu6, story_escu6, lookup_csv_escu6, lookup_kvstore_escu6 , dashboard_escu6, and baseline_escu6 .
Please see the demo video below for more information
https://github.com/user-attachments/assets/1be02afa-36b5-4d49-91cb-8ebbcf4123d0
🚨 NOTE: If you are just getting started with managing your Splunk detection as code, we recommend that you keep the YML structure of the detections as close as possible to the original structure of the detections. This will make it easier to manage your detections and will also make it easier to contribute back to the community by creating a pull request to the Splunk Security Content project.
In order to build a content app that specific for your organization, we strongly recommend that you start with keeping only the detections that are related to your organization and remove other YML files that are not related to your organization. This includes selecting detections, stories, macros, lookups that are used by the detection YML files.
If your detections are using macros and lookups, please make sure that you have the same macros and lookups in those directories. This will ensure that the content app is self-contained and does not rely on external files.
We recommend that you follow the errors produced by the contentctl-ng tool while developing this content. The errors are descriptive enough to guide you in getting the right values. If you need help, please refer to the JSON Schemas to check out the list of allowed values
The JSON schemas defined in the /schemas folder, define the structure and required fields for various YML files used in the project. These specifications ensure consistency and validation across different types of YML files, such as macros, lookups, and analytic stories. Each spec outlines the expected data types, descriptions, and whether the fields are mandatory, providing a clear schema for developers to follow.
To view an up-to-date detection coverage map for all the content tagged with MITRE techniques visit: https://mitremap.splunkresearch.com/ under the Detection Coverage layer. Below is a snapshot in time of what technique we currently have some detection coverage for.
We welcome feedback and contributions from the community! Please see our contributing to the project for more information on how to get involved.
If you are a Splunk Enterprise customer with a valid support entitlement contract and have a Splunk-related question, you can open a support case on the https://www.splunk.com/ support portal.
Please use the GitHub Issue Tracker to submit bugs or feature requests using the templates to the Threat Research team directly.
If you have questions or need support, you can:
Copyright 2026 Splunk Inc.
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
438 followers · starred May 2026
259 followers · starred Oct 2020
23 followers · starred May 2023
78 followers · starred Oct 2023
Splunk Security Content
See the code
Welcome to the Splunk Security Content
This project gives you access to our repository of Analytic Stories, security guides that provide background on tactics, techniques and procedures (TTPs), mapped to the MITRE ATT&CK Framework, the Lockheed Martin Cyber Kill Chain, and CIS Controls. They include Splunk searches, machine learning algorithms and Splunk Phantom playbooks (where available)—all designed to work together to detect, investigate, and respond to threats.
Note: We have sister projects that enable us to build the industry's best security content. These projects are the Splunk Attack Range, an attack simulation lab built around Splunk, and contentctl-ng, the tool that enables us to build, test, and package our content for distribution.
The latest Splunk Security Content can be obtained via:
Best way to discover and access our content is by using the research.splunk.com website.
Splunk security content ships as part of ESCU directly into, if you are an ES user, good news, you already have it!
To manually download the latest release of Splunk Security Content (named DA-ESS-ContentUpdate.spl), you can visit the splunkbase page or the release page on GitHub.
Follow these steps to get started with Splunk Security Content.
git clone https://github.com/splunk/security_content.gitcd security_contentpip install contentctl-ng to install the latest version of contentctl-ng, this is a prerequisite to validate, build, and test the content like the Splunk Threat Research teampip install pre-commit then proceed to installing the hooks via pre-commit install. This is a prerequisite to validate and apply the proper formatting.git clone https://github.com/splunk/security_content.git
cd security_content
python3.11 -m venv .venv
source .venv/bin/activate
pip install contentctl-ng
Create a new content YML using VSCode Snippets detailed below
Validate your content and build an app
contentctl-ng build
NOTE - The contentctl build command ensures that all YML files adhere to the defined specifications and are up-to-date. It checks for required fields, correct data types, and overall consistency, helping maintain the integrity and quality of the content.
This repo ships snippets in .vscode/escu_6.code-snippets to scaffold new content quickly in VS Code.
.yml file in the appropriate content directory (e.g. detections/, macros/, stories/) and give it a descriptive name. This name will be used to populate the name: field of your YML as well.Tab (or select it from the IntelliSense popup and press Enter) to expand a pre-filled template.Available prefixes exist for detection_escu6 , macro_escu6, data_source_escu6, story_escu6, lookup_csv_escu6, lookup_kvstore_escu6 , dashboard_escu6, and baseline_escu6 .
Please see the demo video below for more information
https://github.com/user-attachments/assets/1be02afa-36b5-4d49-91cb-8ebbcf4123d0
🚨 NOTE: If you are just getting started with managing your Splunk detection as code, we recommend that you keep the YML structure of the detections as close as possible to the original structure of the detections. This will make it easier to manage your detections and will also make it easier to contribute back to the community by creating a pull request to the Splunk Security Content project.
In order to build a content app that specific for your organization, we strongly recommend that you start with keeping only the detections that are related to your organization and remove other YML files that are not related to your organization. This includes selecting detections, stories, macros, lookups that are used by the detection YML files.
If your detections are using macros and lookups, please make sure that you have the same macros and lookups in those directories. This will ensure that the content app is self-contained and does not rely on external files.
We recommend that you follow the errors produced by the contentctl-ng tool while developing this content. The errors are descriptive enough to guide you in getting the right values. If you need help, please refer to the JSON Schemas to check out the list of allowed values
The JSON schemas defined in the /schemas folder, define the structure and required fields for various YML files used in the project. These specifications ensure consistency and validation across different types of YML files, such as macros, lookups, and analytic stories. Each spec outlines the expected data types, descriptions, and whether the fields are mandatory, providing a clear schema for developers to follow.
To view an up-to-date detection coverage map for all the content tagged with MITRE techniques visit: https://mitremap.splunkresearch.com/ under the Detection Coverage layer. Below is a snapshot in time of what technique we currently have some detection coverage for.
We welcome feedback and contributions from the community! Please see our contributing to the project for more information on how to get involved.
If you are a Splunk Enterprise customer with a valid support entitlement contract and have a Splunk-related question, you can open a support case on the https://www.splunk.com/ support portal.
Please use the GitHub Issue Tracker to submit bugs or feature requests using the templates to the Threat Research team directly.
If you have questions or need support, you can:
Copyright 2026 Splunk Inc.
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
438 followers · starred May 2026
259 followers · starred Oct 2020
23 followers · starred May 2023
78 followers · starred Oct 2023