How to export data from Splunk to Azure Sentinel
Published Nov 17 2020 04:56 AM 31.5K Views
Microsoft

Thanks to Preeti Krishna and Alp Babayigit for the great help.

 

We have published several Blog posts on how Azure Sentinel can be used  Side-by-Side with 3rd Party SIEM tools,  leveraging cloud-native SIEM and SOAR capabilities to forward enriched alerts.

 

Today many enterprises consume more and more cloud services, there is a huge requirement for cloud-native SIEM, this is where Azure Sentinel comes in play and has following advantages:

 

  • Easy collection from cloud sources
  • Effortless infinite scale
  • Integrated automation capabilities
  • Continually maintained cloud and on-premises use cases enhanced with Microsoft TI (Threat Intelligence) and ML (Machine Learning)
  • Github community
  • Microsoft research and ML capabilities
  • Avoid sending cloud telemetry downstream (send cloud data to on-premise SIEM)

 

There are several best practice integration options available how to operate Azure Sentinel in Side-by-Side.

 

 

Alerts

Events

Upstream to sentinel

CEF

Logstash

Logic Apps

API

CEF

Logstash

API

Downstream from Sentinel

Security Graph Security API PowerShell

Logic Apps

API

API

PowerShell

 

In this Blog post we want to focus more on how Azure Sentinel can consume security telemetry data directly from a 3rd Party SIEM like Splunk.

 

Why do we want to share this scenario? For some scenarios it makes sense to use data from 3rd Party SIEMs for correlation with available data sources in Azure Sentinel, also Sentinel can be used as single pane of glass to centralize all incidents (generated by different SIEM solutions) and finally you will probably have to deliver the side-by-side for a while until your security team will be more comfortable working within the new SIEM (Azure Sentinel).

 

In this diagram, we show how Splunk data can be correlated into Azure Sentinel providing a consolidated SIEM view

 

1.png

 

Scenario description:

 

When you add data to Splunk, the Splunk indexer processes it and stores it in a designated index (either, by default, in the main index or in the one that you identify). Searching in Splunk involves using the indexed data for the purpose of creating metrics, dashboards and alerts.

 

Let’s assume that your security team wants to collect data from Splunk platform to use Azure Sentinel as their centralized SIEM. In order to implement this scenario, we can rely on different options but the one I was thinking about is to rely on data stored in Splunk index then create a scheduled custom alert to push this data to the Azure Sentinel API.

 

In order to send data from Splunk to Azure Sentinel, my idea was to use the HTTP Data Collector API, more information can be found here. You can use the HTTP Data Collector API to send log data to a Log Analytics workspace from any client that can call a REST API.

 

All data in the Log Analytics workspace is stored as a record with a particular record type. You format your data to send to the HTTP Data Collector API as multiple records in JSON. When you submit the data, an individual record is created in the repository for each record in the request payload.

 

Based on Splunk Add-on Builder here, I created an add-on which trigger an action based on the alert in Splunk. You can use Alert actions to define third-party integrations (like Azure Sentinel) or add custom functionality. Splunk Add-on Builder uses Python code to create your alert action, here is the code I used within the Add-on: https://docs.microsoft.com/en-us/azure/azure-monitor/platform/data-collector-api#python-3-sample

 

To make this simple I have created an Add-on for you to use. You need just to install it in your Splunk platform.

 

Let’s start the configuration!

 

 

Preparation & Use

The following tasks describe the necessary preparation and configurations steps.

  • Onboarding of Splunk instance (latest release), can be found here
  • Get the Log Analytics workspace parameters: Workspace ID and Primary Key from here
  • Install the Azure Sentinel App for Splunk: can be found here

 

Onboard Azure Sentinel

Onboarding of Azure Sentinel is not part of this blog post, however required guidance can be found here.

 

Add-on Installation in Splunk Enterprise

 

In Splunk home screen, on the left side sidebar, click "+ Find More Apps" in the apps list, or click the gear icon next to Apps then select Browse more apps.

 

2.png

 

Search for Azure Sentinel in the text box, find the Azure Sentinel Add-On for Splunk and click Install.

After the add-on is installed reboot of Splunk is required, click Restart Now.

 

 

Configure the Azure Sentinel add-on for Splunk

 

Refer to Define RealTime Alerts documentation to set up Splunk alerts to send logs to Azure Sentinel. To validate the integration, the audit index is used as an example, for an “_audit”- this repository stores events from the file system change monitor, auditing, and all user search history. You can query the data by using index=”_audit” in the search field as illustrated below.

 

3.png

 

Then use a scheduled or real-time alert to monitor events or event patterns as they happen. You can create real-time alerts with per-result triggering or rolling time window triggering. Real-time alerts can be costly in terms of computing resources, so consider using a scheduled alert, when possible.

 

Set up alert actions, which can help you respond to triggered alerts. You can enable one or more alert actions. Select “Send to Azure Sentinel” action, which appears after you install the Azure-Sentinel add-on as shown in the diagram below.

 

4.png

 

Fill in the required parameters as shown in the diagram below:

  • Customer_id: Azure Sentinel Log Analytics Workspace ID
  • Shared_key: Azure Sentinel Log Analytics Primary Key
  • Log_Type: Azure Sentinel custom log name

 

Note: These parameters are required and will be used by the application to send data to Azure Sentinel through the HTTP Data Collector API.

 

5.png

6.png

 

 

View Splunk Data in Azure Sentinel

 

The logs will go to a custom Azure Sentinel table called ‘Splunk_Audit_Events_CL’ as shown below. The table name aligns with the log name provided in the Figure 4 above. It can take few minutes for events to be available.

 

7.png

 

You can query the data in Azure Sentinel using Kusto Query Language (KQL) as shown below.

 

Splunk_Audit_Events_CL  | summarize count() by user_s, action_s | render barchart

Image8.png

 

As mentioned at the beginning of this blog, Azure Sentinel can be used as single pane of glass to centralize all incidents (generated by different SIEM solutions).

 

When a correlation search included in the Splunk Enterprise Security or added by a user, identifies an event or pattern of events, it creates an incident called notable event. Correlation searches filter the IT security data and correlate across events to identify a particular type of incident (or pattern of events) and then create notable events.


Correlation searches run at regular intervals (for example, every hour) or continuously in real-time and search events for a particular pattern or type of activity. The notable event is stored in a dedicated notable index. You can import all notable events into Azure Sentinel using the same procedure described above.

 

9.png

 

The results will be added to a custom Azure Sentinel table called ‘Splunk_Notable_Events_CL’ as shown below.

 

10.png

 

You can easily query Splunk incidents in Azure Sentinel:

Splunk_Notable_Events_CL
| extend Origin_Time= extract("([0-9]{2}\\/[0-9]{2}\\/[0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2})", 0, orig_raw_s )
| project TimeGenerated=Origin_Time , search_name_s, threat_description_s, risk_object_type_s

11.png

 

Splunk SPL to KQL

 

As mentioned above, you will probably have to deliver the side-by-side for a while until your security team will be more comfortable working within the new SIEM (Azure Sentinel). One challenge is how migrate rules and searches from Splunk to Azure Sentinel.

 

Azure Sentinel is using Kusto Query Language (KQL) to query the data. Splunk is using search-processing-language (SPL)  for that.

 

You can consider this project: https://uncoder.io to transform the query!

 

Image12.png

 

Uncoder.io is SOC Prime’s free tool for SIEM search language conversion. Uncoder relies to enable event schema resolution across platforms.

 

Uncoder.IO is the online translator for SIEM saved searches, filters, queries, API requests, correlation and Sigma rules to help SOC Analysts, Threat Hunters and SIEM Engineers. Serving as one common language for cyber security it allows blue teams to break the limits of being dependent on single tool for hunting and detecting threats.

 

Also consider this nice initiative from Alex Teixeira:

https://github.com/inodee/spl-to-kql

 

 

Summary

 

We just walked through the process of standing up Azure Sentinel Side-by-Side with Splunk. Stay tuned for more Side-by-Side details in our blog channel.

 

 

 

11 Comments
Version history
Last update:
‎Nov 02 2021 06:27 PM
Updated by: