Splunk
Integration version: 50.0
The Splunk app prepares cases with all of the relevant alerts and events from Splunk. There are two ways to ingest these cases into Google Security Operations SOAR: pull based, and push based methods.
The first method is called pull based. Using this method, in order to ingest cases into Google Security Operations SOAR, you need to configure the Splunk Pull Connector, which pulls cases from the Splunk app. This method doesn't require any additional configuration in the Splunk app.
The second method is called push based. Using this method, the Splunk app performs API calls to Google Security Operations SOAR to add a new case. In order to work with this method, you need to generate a Google Security Operations SOAR API key and add a Google Security Operations SOAR URI in the configuration of the app.
Create an API key:
Navigate to Settings > Advanced > API.
Click the plus sign on the top right to add a new API key.
Enter the name of the API key and click Create.
Copy the API key.
How to configure Splunk to work with Google Security Operations SOAR
Prerequisites for enabling or disabling token authentication
Before you can enable token authentication, you must complete the following requirements:
The Splunk platform instance where you want to enable token authentication must not operate in legacy mode, where Splunk Web operates as a separate process. If the Splunk platform is in legacy mode, token authentication does not run. For more information on legacy mode, see the Start and Stop Splunk Enterprise document in the Splunk Eneterprise Admin Manual.
The account that you use to log into the Splunk platform must hold a role that has the edit_tokens_settings Splunk platform capability before you can turn token authentication on or off.
Enable token authentication using Splunk Web
When token authentication is off, the following message displays on the Tokens page in Splunk Web:
Token authentication is currently disabled > To enable token authentication, click Enable Token Authentication.
Complete the following steps on the instance where you want to enable token authentication:
Log in to the Splunk platform instance as an administrator user, or a user that can manage tokens settings. You cannot use a token to log in to Splunk Web. You must provide a valid user name and password.
After you log in successfully, in the system bar, select Settings > Tokens.
Click Enable Token Authentication. The Splunk platform instance enables token authentication immediately, and there is no need to restart the instance.
Use Splunk Web to create authentication tokens
In the system bar, click Settings > Tokens.
Click New Token.
In the New Token dialog, enter the Splunk platform user that you want to create the token for in the User field.
Enter a short description of the token purpose in the Audience field.
(Optional) In the Expiration list, select Absolute Time or Relative Time. This selection determines what to enter in the text field below the list.
If you selected Absolute Time, then two text fields appear under the list.
Enter a valid date into the first field. You can also click the field to select a date from a pop-up calendar.
Enter a valid 24-hour time in the second field.
Otherwise, one text field appears under the drop down list.
- Enter a string that represents how long after the current time you
want the token to remain valid. For example, if you want the token
to expire 10 days from now, enter
+10d
into this field.
- Enter a string that represents how long after the current time you
want the token to remain valid. For example, if you want the token
to expire 10 days from now, enter
(Optional) In the Not Before list, select Absolute Time or Relative Time.
Repeat the step you used for the Expiration control. The Not before time can neither be in the past, nor can it be later than the "Expiration" time.
Click Create. The New Token window updates the Token field to show you the token that has been generated.
Select all of the token text in the field. Depending on your operating system and browser, you can click on the Token field, then either triple click or press Ctrl-A or Command-A on your keyboard. Confirm that you have selected all of the token text. There are no further opportunities to see the whole token after you close the window.
Copy the text from the Token field.
Paste the token into a text file, e-mail, or other form of communication to the person you have authorized to use the token. Confirm that you share the token only with those who you have authorized to use it. Anybody who has the full token can use it to authenticate.
Click Close.
Use a token to configure the Google Security Operations SOAR Splunk integration.
Installation
Single search head
Download the TA-Siemplify package to your local computer. https://splunkbase.splunk.com/app/5010/
Install the app on your search head.
Select App: Search & Reporting. The Upload an app dialog appears.
Click Choose File and select the app file.
Click Upload. Wait until the file is uploaded.
Restart Splunk.
Configure TA-Siemplify
In Splunk Enterprise, go to the Apps page.
Select Siemplify.
In the Add on Settings tab, add the following:
For push based method:
- Set the Siemplify API URI to the URI of your Google Security Operations SOAR server.
- Set Mode to Push mode.
- In the API Key field, enter the token value that was generated in the API Keys section.
For pull based method:
- Set the Mode to Pull mode.
Click Save.
Alert Configuration
To send alert and event data to Google Security Operations SOAR, a trigger action must be added to an existing Splunk Alert.
The Environment, Device Vendor, Device Product, and Event Type fields support event templating. Event templating allows the specific fields within Google Security Operations SOAR to be dynamically set based on values in the alert. To utilize event templating, surround a field name with square brackets '[ ]'. The first event in the alert will be used to fill in these fields.
Example: If you have an alert that contains a field device_vendor with a value
of Microsoft
, you can put [device_vendor] in the Device Vendor configuration
parameter and when the alert is sent to Google Security Operations SOAR the vendor will
be set to Microsoft
.
In Splunk, navigate to Alerts.
In the Edit list, select Edit Alert.
In the Trigger Actions section, navigate to Add Actions > Send Alert to Siemplify.
Configure the Alert as follows:
- Name: The value set here will affect the name of the Alert.
- Priority: The value set here will affect the priority of the Google Security Operations SOAR case.
- Category: Used to define the visual family.
- Environment: Maps to the environment in Google Security Operations SOAR. Leave blank for no environment. Templating with square brackets is supported.
- Device Vendor: Used to define the vendor of the system sending the event into Google Security Operations SOAR. If the alerts were generated by Microsoft Sysmon use Microsoft or from a value within the alert/event using templating.
- Device Product: Used to define the product of the system sending the event into Google Security Operations SOAR. If the alerts were generated by Microsoft Sysmon, this value should be Sysmon or from a value within the alert/event using templating.
- Event Type: Used to define the event type in the Google Security Operations SOAR Event Configuration section. If the alert was looking for malicious processes, the event type should be something like "Process Found" or from a value within the alert/event using templating.
- Time Field: Used to define the StartTime and EndTime of the Google Security Operations SOAR Case. If this is not supplied, it will check for the "_indextime" field. If it is unable to find "_indextime", it will use the time the alert was generated. Templating is not supported.
- Expand MultiValue Fields: By setting this to 1 the system will find any multivalue fields and create additional fields mapping to each value in the multivalued field. For example, if a multivalue field, src_hosts, contains a value of: Server1, Server2, Server3. The system will create new fields of: src_hosts_0: Server1, src_hosts_1: Server2, src_hosts_2: Server3. This option is only supported when Bring All Events Data is disabled.
- Bring All Events Data: This setting will attempt to bring the raw events that make up an alert containing a transforming command (chart, timechart, stats, top, rare, contingency, highlight). To support this a change to the Splunk Search Head is required.
To enable raw events from transformation searches, copy:
$SPLUNK_HOME/etc/apps/TA-siemplify/default/savedsearches.conf
to$SPLUNK_HOME/etc/apps/TA-siemplify/local/savedsearches.conf
Edit:$SPLUNK_HOME/etc/apps/TA-siemplify/local/savedsearches.conf
Uncomment:#dispatch.buckets =1
Save the file and restart Splunk for these settings to take effect.
Troubleshooting
To change the log level to DEBUG
, complete the following steps:
In Splunk Web, select your application.
Go to Settings > Server settings > Server logging.
For the Log level parameter, select DEBUG.
Click Save.
Querying log data from Google Security Operations SOAR TA will depend on your Splunk
implementation. If you have Splunk CIM installed, the logs will be in the
cim_modactions
index. Otherwise, the logs will be in the _internal
index.
Network
Network Access to Splunk API access from Google Security Operations SOAR to Splunk: Allow traffic over port 8089.
How to deploy Google Security Operations SOAR add-on in cluster environment
To create deployment server and search heads complete the following steps:
Log in to the deployment server using SSH.
Make sure that
/opt/splunk/etc/system/local/serverclass.conf
file exists. If not, execute:vi /opt/splunk/etc/system/local/serverclass.conf
Example of the configuration is as follows:
[global] # whitelist matches all clients. [serverClass:AllApps] [serverClass:AllApps:app:*] [serverClass: Google Security OperationsAPP]
Upload and extract app file in the
/opt/splunk/etc/deployment-apps
directory.Create Splunk user if it doesn't exist:
useradd splunk
Create splunk group doesn't exist:
groupadd splunk
Add Splunk user permissions for the app:
chown splunk:splunk {app path}
Login to search heads using SSH.
Add search heads as clients to the deployment server:
/opt/splunk/bin/splunk set deploy-poll IP_ADDRESS:8089 #(deployment server ip address)
Restart all of the search heads.
Log in to the UI of the deployment server.
Navigate to Settings > Distributed Environment > Forwarder Manager.
Go to the Server Classes tab and click New Server Class.
Provide a name for the server class.
Add Google Security Operations SOAR add-on as an app and the Search Heads as clients.
Restart all of the Search Heads.
Make sure that the app is configured properly on all search heads. Splunk doesn't consistently sync the apps across the cluster.
Known Issues
If you receive the int() argument must be a string, a bytes-like object or a
number, not 'NoneType'. Please double check spelling and also verify that a
compatible version of Splunk_SA_CIM is installed
error in the logs, make sure
that the API root and API key parameters in the configuration have a value, even
if you are working with the Pull mode.
Configure Splunk integration in Google Security Operations SOAR
The Splunk integration gives you the ability to verify the connection using a CA Certificate file. This is an additional connection verification method.
To use this method you need to have the following:*
- CA Certificate file
- Splunk integration version 26.0 or higher
Configure the integration in Google Security Operations SOAR:
Parse your CA Certificate file into a Base64 string.
Open the integration configuration page.
In the CA Certificate File field, enter the CA Certificate string.
To test the connection, select the Verify SSL checkbox and click Test.
For detailed instructions on how to configure an integration in Google Security Operations SOAR, see Configure integrations.
Integration parameters
Use the following parameters to configure the integration:
Parameter Display Name | Type | Default Value | Is Mandatory | Description |
---|---|---|---|---|
Instance Name | String | N/A | No | Name of the Instance you intend to configure integration for. |
Description | String | N/A | No | Description of the Instance. |
Server Address | String | {SCHEMA}://{IP}:{PORT} | Yes | Address of the Splunk Server. |
Username | String | N/A | No | The email address of the user which should be used to connect to Splunk. |
Password | Password | N/A | No | The password of the according user. |
API Token | Password | N/A | No | Splunk API Token. API token has priority over other authentication methods, when this field is not empty. |
Verify SSL | Checkbox | Unchecked | No | Use this checkbox, if your Splunk connection requires an SSL verification (unchecked by default). |
CA Certificate File | String | N/A | No | Base 64 encoded CA certificate file. |
Run Remotely | Checkbox | Unchecked | No | Check the field in order to run the configured integration remotely. Once checked, the option appears to select the remote user (agent). |
Actions
Get Host Events
Description
Get events related to hosts in Splunk.
Parameters
Parameter Display Name | Type | Default Value | Is Mandatory | Description |
---|---|---|---|---|
Event Per Host Limit | Integer | 100 | Yes | Specify how many events to return per host. |
Results From | String | -24h | Yes | Specify the start time for the events. |
Results To | String | now | Yes | Specify the end time for the events. |
Result fields | CSV | N/A | No | Specify a comma-separated list of fields that need to be returned. |
Index | String | N/A | No | Specify what index should be used, when searching for events related to the host. If nothing is provided, action will not use index. |
Host Key | String | host | No | Specify what key should be used to get information about host events. Default: host. |
Run On
This action runs on the Hostname entity.
Action Results
Script Result
Script Result Name | Value Options | Example |
---|---|---|
success | True/False | success:False |
JSON Result
[{
"app": "SA-AccessProtection",
"_bkt": "_internal~425~1A082D7B-D5A1-4A2B-BB94-41C439BE3EB7",
"_cd": "425:9087674",
"_indextime": "1612231318",
"_kv": "1",
"_raw": "02-02-2021 04:01:58.404 +0200 INFO SavedSplunker - savedsearch_id=\"nobody;SA-AccessProtection;Access - Default Account Usage - Rule\", search_type=\"\", user=\"admin\", app=\"SA-AccessProtection\", savedsearch_name=\"Access - Default Account Usage - Rule\", priority=default, status=success, digest_mode=1, scheduled_time=1612179932, window_time=0, dispatch_time=1612179969, run_time=51348.242, result_count=0, alert_actions=\"\", sid=\"rt_scheduler__admin_U0EtQWNjZXNzUHJvdGVjdGlvbg__RMD509c859ea7b9951b8_at_1612179932_61.40533\", suppressed=1, thread_id=\"AlertNotifierWorker-0\", workload_pool=\"\"",
"_serial": "0",
"_si": [
"splunk",
"_internal"
],
"_sourcetype": "scheduler",
"_subsecond": ".404",
"_time": "2021-02-02T04:01:58.404+02:00"
},
{
"_bkt": "_internal~425~1A082D7B-D5A1-4A2B-BB94-41C439BE3EB7",
"_cd": "425:9087731",
"_indextime": "1612231318",
"_kv": "1",
"_raw": "127.0.0.1 - admin [02/Feb/2021:04:01:58.172 +0200] \"POST /servicesNS/nobody/SA-AccessProtection/saved/searches/Access%20-%20Default%20Account%20Usage%20-%20Rule/notify?trigger.condition_state=1 HTTP/1.1\" 200 1985 - - - 3ms",
"_serial": "1",
"_si": [
"splunk",
"_internal"
],
"_sourcetype": "splunkd_access",
"_subsecond": ".172",
"_time": "2021-02-02T04:01:58.172+02:00"
},
{
"app": "SA-EndpointProtection",
"_bkt": "_internal~425~1A082D7B-D5A1-4A2B-BB94-41C439BE3EB7",
"_cd": "425:9087653",
"_indextime": "1612231318",
"_kv": "1",
"_raw": "02-02-2021 04:01:57.804 +0200 INFO SavedSplunker - savedsearch_id=\"nobody;SA-EndpointProtection;Endpoint - Should Timesync Host Not Syncing - Rule\", search_type=\"\", user=\"admin\", app=\"SA-EndpointProtection\", savedsearch_name=\"Endpoint - Should Timesync Host Not Syncing - Rule\", priority=default, status=success, digest_mode=1, scheduled_time=1612179932, window_time=300, dispatch_time=1612179970, run_time=51347.420, result_count=0, alert_actions=\"\", sid=\"rt_scheduler__admin_U0EtRW5kcG9pbnRQcm90ZWN0aW9u__RMD5ef3c08822811b7cd_at_1612179932_62.25751\", suppressed=1, thread_id=\"AlertNotifierWorker-0\", workload_pool=\"\"",
"_serial": "2",
"_si": [
"splunk",
"_internal"
],
"_sourcetype": "scheduler",
"_subsecond": ".804",
"_time": "2021-02-02T04:01:57.804+02:00"
}]
Case Wall
Result Type | Value / Description | Type |
---|---|---|
Output message* | The action should not fail nor stop a playbook execution: If successful and results are available: "Successfully returned events for the following hosts in Splunk: \n {0}".format(entity.identifier) If successful and results are not available for some: "No events were found for the following hosts in Splunk:\n {0}".format(entity.identifier) If successful and results are not available for all: "No events were found for the provided hosts in Splunk" The action should fail and stop a playbook execution: if fatal error, like wrong credentials, no connection to server, other: "Error executing action "Get Host Events". Reason: {0}''.format(error.Stacktrace) If 400: "Error executing action "Get Host Events". Reason: {0}''.format(messages/text) |
General |
Case Wall Table | Name: {Entity.identifier} Events Columns: Based on the results. |
Ping
Description
Test connectivity to Splunk with parameters provided at the integration configuration page in the Google Security Operations Marketplace tab.
Parameters
N/A
Run On
This action doesn't run on entities, nor has mandatory input parameters.
Action Results
Script Result
Script Result Name | Value Options | Example |
---|---|---|
is_success | True/False | is_success:False |
Case Wall
Result Type | Value / Description | Type |
---|---|---|
Output message* | The action should not fail nor stop a playbook execution: The action should fail and stop a playbook execution: |
General |
Splunk Csv Viewer
Description
Parameters
Parameter | Type | Default Value | Is Mandatory | Description |
---|---|---|---|---|
Results | string | N/A | Yes | Raw results. |
Run On
This action runs on all entities.
Action Results
Script Result
Script Result Name | Value Options | Example |
---|---|---|
is_succeed | True/False | is_succeed:False |
SplunkQuery
Description
Execute a query in Splunk.
Parameters
Parameter Display Name | Type | Default Value | Is Mandatory | Description |
---|---|---|---|---|
Search Mode | DDL | Smart Possible values:
|
No | Specify the mode for executing search. |
Query | String | Yes | Specify the query that needs to be executed. Example: index="_internal" | |
Results count limit | Integer | 100 | No | Specify how many results to return. |
Results from | String | -24h | No | Specify the start time for the query. Default: -24h |
Results to | String | now | No | Specify the end time for the query. Default: now. |
Result fields | CSV | No | Specify a comma-separated list of fields that need to be returned. |
Run On
This action doesn't run on entities.
Action Results
Script Result
Script Result Name | Value Options | Example |
---|---|---|
is_succeed | True/False | is_succeed:False |
JSON Result
[{
"app": "SA-AccessProtection",
"_bkt": "_internal~425~1A082D7B-D5A1-4A2B-BB94-41C439BE3EB7",
"_cd": "425:9087674",
"_indextime": "1612231318",
"_kv": "1",
"_raw": "02-02-2021 04:01:58.404 +0200 INFO SavedSplunker - savedsearch_id=\"nobody;SA-AccessProtection;Access - Default Account Usage - Rule\", search_type=\"\", user=\"admin\", app=\"SA-AccessProtection\", savedsearch_name=\"Access - Default Account Usage - Rule\", priority=default, status=success, digest_mode=1, scheduled_time=1612179932, window_time=0, dispatch_time=1612179969, run_time=51348.242, result_count=0, alert_actions=\"\", sid=\"rt_scheduler__admin_U0EtQWNjZXNzUHJvdGVjdGlvbg__RMD509c859ea7b9951b8_at_1612179932_61.40533\", suppressed=1, thread_id=\"AlertNotifierWorker-0\", workload_pool=\"\"",
"_serial": "0",
"_si": [
"splunk",
"_internal"
],
"_sourcetype": "scheduler",
"_subsecond": ".404",
"_time": "2021-02-02T04:01:58.404+02:00"
},
{
"_bkt": "_internal~425~1A082D7B-D5A1-4A2B-BB94-41C439BE3EB7",
"_cd": "425:9087731",
"_indextime": "1612231318",
"_kv": "1",
"_raw": "127.0.0.1 - admin [02/Feb/2021:04:01:58.172 +0200] \"POST /servicesNS/nobody/SA-AccessProtection/saved/searches/Access%20-%20Default%20Account%20Usage%20-%20Rule/notify?trigger.condition_state=1 HTTP/1.1\" 200 1985 - - - 3ms",
"_serial": "1",
"_si": [
"splunk",
"_internal"
],
"_sourcetype": "splunkd_access",
"_subsecond": ".172",
"_time": "2021-02-02T04:01:58.172+02:00"
},
{
"app": "SA-EndpointProtection",
"_bkt": "_internal~425~1A082D7B-D5A1-4A2B-BB94-41C439BE3EB7",
"_cd": "425:9087653",
"_indextime": "1612231318",
"_kv": "1",
"_raw": "02-02-2021 04:01:57.804 +0200 INFO SavedSplunker - savedsearch_id=\"nobody;SA-EndpointProtection;Endpoint - Should Timesync Host Not Syncing - Rule\", search_type=\"\", user=\"admin\", app=\"SA-EndpointProtection\", savedsearch_name=\"Endpoint - Should Timesync Host Not Syncing - Rule\", priority=default, status=success, digest_mode=1, scheduled_time=1612179932, window_time=300, dispatch_time=1612179970, run_time=51347.420, result_count=0, alert_actions=\"\", sid=\"rt_scheduler__admin_U0EtRW5kcG9pbnRQcm90ZWN0aW9u__RMD5ef3c08822811b7cd_at_1612179932_62.25751\", suppressed=1, thread_id=\"AlertNotifierWorker-0\", workload_pool=\"\"",
"_serial": "2",
"_si": [
"splunk",
"_internal"
],
"_sourcetype": "scheduler",
"_subsecond": ".804",
"_time": "2021-02-02T04:01:57.804+02:00"
}]
Case Wall
Result type | Value/Description | Type |
---|---|---|
Output message* | The action should not fail nor stop a playbook execution: If successful and results are available: "Successfully returned results for the query "{0}" in Splunk".format(query) If successful and results are not available: "No results were found for the query "{0}" in Splunk".format(query) Async message: "Waiting for query {0} to finish execution.".format(query name) The action should fail and stop a playbook execution: if fatal error, like wrong credentials, no connection to server, other: "Error executing action "SplunkQuery". Reason: {0}''.format(error.Stacktrace) If 400: "Error executing action "SplunkQuery". Reason: {0}''.format(messages/text) |
General |
Case Wall Table | Name: Splunk Query Results Columns - Based on the results. |
General |
Submit Event
Description
Submit event to Splunk.
Parameters
Parameter Display Name | Type | Default Value | Is Mandatory | Description |
---|---|---|---|---|
Index | String | main | Yes | Specify the index, where the event should be created. |
Event | String | N/A | Yes | Specify the raw event that needs to be submitted. |
Host | String | N/A | No | Specify the host that is related to the event. |
Source | String | N/A | No | Specify the source of the event. Example: www. |
Sourcetype | String | N/A | No | Specify the source type of the event. Example: web_event |
Run On
This action doesn't run on entities.
Action Results
Script Result
Script Result Name | Value Options | Example |
---|---|---|
success | True/False | success:False |
JSON Result
{
"index": "default",
"bytes": 70,
"host": "dogo",
"source": "www",
"sourcetype": "web_event"
}
Case Wall
Result type | Value/Description | Type |
---|---|---|
Output message* | The action should not fail nor stop a playbook execution: If successful: "Successfully added a new event to index "{0}" in Splunk.".format(index) The action should fail and stop a playbook execution: if fatal error, like wrong credentials, no connection to server, other: "Error executing action "Submit Event". Reason: {0}''.format(error.Stacktrace) If 400: "Error executing action "Submit Event". Reason: {0}''.format(messages/text) |
General |
Update Notable Events
Description
Update notable events in Splunk ES.
Parameters
Parameter Display Name | Type | Default Value | Is Mandatory | Description |
---|---|---|---|---|
Notable Event IDs | CSV | N/A | Yes | Specify IDs of notable events. Example: 1A082D7B-D5A1-4A2B-BB94-41C439BE3EB7@@notable@@cb87390ae72763679d3f6f8f097ebe2b,1D234D5B-1531-2D2B-BB94-41C439BE12B7@@notable@@cb87390ae72763679d3f6f8f097ebe2b |
Status | DDL | Select One Possible values: Select One Unassigned New In Progress Pending Resolved Closed |
Yes | Specify the new status for notable events. |
Urgency | DDL | Select One Possible values: Select One Critical High Medium Low Informational |
Yes | Specify the new urgency for the notable event. |
New Owner | String | N/A | Yes | Specify the new owner of the notable event. |
Comment | String | N/A | Yes | Specify the comment for the notable event. |
Run On
This action doesn't run on entities.
Action Results
Script Result
Script Result Name | Value Options | Example |
---|---|---|
is_success | True/False | is_success:False |
Case Wall
Result Type | Value / Description | Type |
---|---|---|
Output message* | The action should not fail nor stop a playbook execution: If successful and data is available (is_success=true) print "Successfully updated {0} notable events in Splunk.".format(count(notable_events)) If fail to update (status_code=400, is_success=false): print "Action wasn't able to update notable events. Reason:{0}".format(string_from_response) The action should fail and stop a playbook execution: If fatal error, like wrong credentials, no connection to server, other: print "Error executing action "Update Notable Events". Reason: {0}''.format(error.Stacktrace) |
General |
Execute Entity Query
Description
Execute an entity query in Splunk.
How to work with action parameters?
This action gives an ability to easily retrieve information related to entities.
For example, it's possible to solve the use case, where you want to see the
amount of events of the endpoints affected by the provided hashes without any
complicated query building. In order to solve this problem in the Splunk you
would need to prepare the following query: index="main" | where
(device_ip="10.0.0.1" or device_ip="10.12.12.12") and (hash="bad_hash_1" or
hash="bad_hash_2")
In order to create the same query using "Execute Entity
Query" action, you need to fill out the action parameters in the following way:
Query | index="main" |
---|---|
IP Entity Key | device_ip |
File Hash Entity Key | hash |
Cross Entity Operator | AND |
All of the other fields can be left empty.
If the use case is to see how many endpoints were affected by the provided hashes, then the configuration of the "Execute Entity Query" will have the following look.
Query | index="main" |
---|---|
File Hash Entity Key | hash |
"Cross Entity Operator" in this situation won't have an impact, because it only affects the query, when multiple "Entity Keys" are provided.
Parameters
Parameter Display Name | Type | Default Value | Is Mandatory | Description |
---|---|---|---|---|
Search Mode | DDL | Smart Possible values:
|
No | Specify the mode for executing search. |
Query | String | Yes | Specify the query that needs to be executed without the "Where" clause. Example: index="_internal" | |
Results count limit | Integer | 100 | No | Specify how many results to return. Note: this parameter appends the "head" key word to the provided query. Default is 100. |
Results from | String | -24h | No | Specify the start time for the query. Default: -24h |
Results to | String | now | No | Specify the end time for the query. Default: now. |
Result fields | CSV | N/A | No | Specify a comma-separated list of fields that need to be returned. |
IP Entity Key | String | N/A | No | Specify what key should be used with IP entities. Please refer to the action documentation for details. |
Hostname Entity Key | String | N/A | No | Specify what key should be used with Hostname entities, when preparing the . Please refer to the action documentation for details. |
File Hash Entity Key | String | N/A | No | Specify what key should be used with File Hash entities. Please refer to the action documentation for details. |
User Entity Key | String | N/A | No | Specify what key should be used with User entities. Please refer to the action documentation for details. |
URL Entity Key | String | N/A | No | Specify what key should be used with URL entities. Please refer to the action documentation for details. |
Email Address Entity Key | String | N/A | No | Specify what key should be used with Email Address entities. Please refer to the action documentation for details. |
Stop If Not Enough Entities | Checkbox | Checked | Yes | If enabled, action will not start execution, unless all of the entity types are available for the specified ".. Entity Keys". Example: if "IP Entity Key" and "File Hash Entity Key" are specified, but in the scope there are no file hashes then if this parameter is enabled, action will not execute the query. |
Cross Entity Operator | DDL | OR Possible Values: OR AND |
Yes | Specify what should be the logical operator used between different entity types. |
Run On
This action runs on the following entities:
- IP Address
- Host
- User
- Hash
- URL
Action Results
Script Result
Script Result Name | Value Options | Example |
---|---|---|
is_succeed | True/False | is_succeed:False |
JSON Result
[{
"app": "SA-AccessProtection",
"_bkt": "_internal~425~1A082D7B-D5A1-4A2B-BB94-41C439BE3EB7",
"_cd": "425:9087674",
"_indextime": "1612231318",
"_kv": "1",
"_raw": "02-02-2021 04:01:58.404 +0200 INFO SavedSplunker - savedsearch_id=\"nobody;SA-AccessProtection;Access - Default Account Usage - Rule\", search_type=\"\", user=\"admin\", app=\"SA-AccessProtection\", savedsearch_name=\"Access - Default Account Usage - Rule\", priority=default, status=success, digest_mode=1, scheduled_time=1612179932, window_time=0, dispatch_time=1612179969, run_time=51348.242, result_count=0, alert_actions=\"\", sid=\"rt_scheduler__admin_U0EtQWNjZXNzUHJvdGVjdGlvbg__RMD509c859ea7b9951b8_at_1612179932_61.40533\", suppressed=1, thread_id=\"AlertNotifierWorker-0\", workload_pool=\"\"",
"_serial": "0",
"_si": [
"splunk",
"_internal"
],
"_sourcetype": "scheduler",
"_subsecond": ".404",
"_time": "2021-02-02T04:01:58.404+02:00"
},
{
"_bkt": "_internal~425~1A082D7B-D5A1-4A2B-BB94-41C439BE3EB7",
"_cd": "425:9087731",
"_indextime": "1612231318",
"_kv": "1",
"_raw": "127.0.0.1 - admin [02/Feb/2021:04:01:58.172 +0200] \"POST /servicesNS/nobody/SA-AccessProtection/saved/searches/Access%20-%20Default%20Account%20Usage%20-%20Rule/notify?trigger.condition_state=1 HTTP/1.1\" 200 1985 - - - 3ms",
"_serial": "1",
"_si": [
"splunk",
"_internal"
],
"_sourcetype": "splunkd_access",
"_subsecond": ".172",
"_time": "2021-02-02T04:01:58.172+02:00"
},
{
"app": "SA-EndpointProtection",
"_bkt": "_internal~425~1A082D7B-D5A1-4A2B-BB94-41C439BE3EB7",
"_cd": "425:9087653",
"_indextime": "1612231318",
"_kv": "1",
"_raw": "02-02-2021 04:01:57.804 +0200 INFO SavedSplunker - savedsearch_id=\"nobody;SA-EndpointProtection;Endpoint - Should Timesync Host Not Syncing - Rule\", search_type=\"\", user=\"admin\", app=\"SA-EndpointProtection\", savedsearch_name=\"Endpoint - Should Timesync Host Not Syncing - Rule\", priority=default, status=success, digest_mode=1, scheduled_time=1612179932, window_time=300, dispatch_time=1612179970, run_time=51347.420, result_count=0, alert_actions=\"\", sid=\"rt_scheduler__admin_U0EtRW5kcG9pbnRQcm90ZWN0aW9u__RMD5ef3c08822811b7cd_at_1612179932_62.25751\", suppressed=1, thread_id=\"AlertNotifierWorker-0\", workload_pool=\"\"",
"_serial": "2",
"_si": [
"splunk",
"_internal"
],
"_sourcetype": "scheduler",
"_subsecond": ".804",
"_time": "2021-02-02T04:01:57.804+02:00"
}]
Case Wall
Result type | Value/Description | Type |
---|---|---|
Output message* | The action should not fail nor stop a playbook execution: If successful and results are available: "Successfully returned results for the query "{0}" in Splunk".format(query) If successful and results are not available: "No results were found for the query "{0}" in Splunk".format(query) Async message: "Waiting for query {0} to finish execution.".format(query name) If "Stop If Not Enough Entities" is enabled and not enough entity types are available for the provided "Entity Keys" (is_success=false): Action wasn't able to build the query, because not enough entity types were supplied for the specified ".. Entity Keys". Please disable "Stop If Not Enough Entities" parameter or provide at least one entity for each specified ".. Entity Key". The action should fail and stop a playbook execution: if fatal error, like wrong credentials, no connection to server, other: "Error executing action "Execute Entity Query". Reason: {0}''.format(error.Stacktrace) If 400: "Error executing action "Execute Entity Query". Reason: {0}''.format(messages/text) |
General |
Case Wall Table | Name: Splunk Query Results Columns: Based on the results. |
General |
Connectors
For detailed instructions on how to configure a connector in Google Security Operations SOAR, see Configuring the connector.
To configure the selected connector, use the connector-specific parameters listed in the following tables:
- Splunk Query Connector configuration parameters
- Splunk Pull Connector configuration parameters
- Splunk ES - Notable Events Connector configuration parameters
Splunk Query Connector
The connector sends queries that are a part of the dynamic list (whitelist
),
retrieves results, and builds a case based on the retrieved results.
Sample Splunk queries to view the logs
Queries should be entered as the dynamic list (
whitelist
) rules.Search queries with multiple filters should use space as a delimiter between search filters—for example,
index=cim_modactions sourcetype=modular_alerts:risk
.Using multiple dynamic list (
whitelist
) rules rather than entering multiple space-delimited search filters into the same rule results in a separate search executed for every added rule.index=cim_modactions
sourcetype=modular_alerts:send_data_to_siemplify
index=_internal sourcetype=splunkd
component=sendmodalert
action=send_data_to_siemplify
index=_internal source=/opt/splunk/var/log/splunk/send_data_to_siemplify_modalert.log
Connector parameters
To configure the connector, use the following parameters:
Parameters | |
---|---|
Product Field Name |
Required
Input the source field name to retrieve the Default value is |
Event Field Name |
Required
Enter the source field name to retrieve the Default value is |
API Root |
Required
API root of the Splunk instance. Default value is
|
Username |
Required
Username of the Splunk account. |
Password |
Required
Password of the Splunk account. |
API Token |
Optional
Splunk API token. If this field has any value, the API token has priority over other authentication methods. |
Verify SSL |
Required
If checked, verifies that the SSL certificate for the connection to the CrowdStrike server is valid. Unchecked by default. |
Environment Field Name |
Optional
Name of the field where the environment name is stored. |
Rule Generator Field |
Required
The name of the field used to map the rule generator value. |
Alert Name Field Name |
Required
Alert name. |
Events Count Limit Per Query |
Optional Max amount of events to fetch per query. |
Max Day Backwards |
Optional Amount of days from where to fetch events. |
Aggregate Events Query |
Optional If enabled, the connector will combine all events under one alert. Disabled by default. |
PythonProcessTimeout (Seconds) |
Required Timeout limit for the python process running the current script. Default value is 60 seconds. |
Proxy Server Address |
Optional
Address of the proxy server to use. |
Proxy Username |
Optional
Proxy username to authenticate with. |
Proxy Password |
Optional
Proxy password to authenticate with. |
Environment Regex Pattern |
Optional
A regular expression pattern to run on the value found in the
The default value The parameter lets you manipulate the environment field using the regular expression logic. If the regular expression pattern is null or empty, or the environment value is null, the final environment result is the default environment. |
Connector rules
The connector supports proxy.
Splunk Pull Connector
Pull alerts and events from Splunk into Google Security Operations SOAR.
Connector parameters
To configure the connector, use the following parameters:
Parameters | |
---|---|
Product Field Name |
Required
Input the source field name to retrieve the Default value is |
Event Field Name |
Required
Enter the source field name to retrieve the Default value is |
Environment Field Name |
Optional
Name of the field where the environment name is stored. If the environment field isn't found, the result environment is Default value is |
Environment Regex Pattern |
Optional
A regular expression pattern to run on the value found in the
The default value The parameter lets you manipulate the environment field using the regular expression logic. If the regular expression
pattern is null or empty, or the environment value is null, the final
environment result is |
PythonProcessTimeout (Seconds) |
Required Timeout limit for the python process running the current script. Default value is 60 seconds. |
Server Address |
Required
IP address of the Splunk API server. |
Port |
Required
Port of the Splunk instance. Default value is |
Username |
Required
Username of the Splunk account. |
Password |
Required
Password of the Splunk account. |
Time Frame |
Optional
Timeframe for fetching the alerts. Default value is 1 hour. Examples: If the value is set to 1 minute, the connector fetches alerts starting from 1 minute ago. If the value is set to 3 hours, the connector fetches alerts starting from 3 hours ago. If the value is set to 1 day or week, the connector fetches alerts starting from 1 day (24 hours) or 1 week ago, respectively. |
Alerts Count Limit |
Optional
Number of alerts returned by the connector per 1 iteration. Default value is 100. |
Use SSL |
Optional
Check to enable the SSL or TLS connection. Unchecked by default. |
Proxy Server Address |
Optional
Address of the proxy server to use. |
Proxy Username |
Optional
Proxy username to authenticate with. |
Proxy Password |
Optional
Proxy password to authenticate with. |
Connector rules
The connector supports proxy.
Splunk ES - Notable Events Connector
Ingest notable events from Splunk ES.
Define case priority
The case priority is defined by the Urgency
parameter in the notable event.
Only this parameter is taken into consideration when ingesting the
notable event into Google Security Operations SOAR.
Connector parameters
To configure the connector, use the following parameters:
Parameters | |
---|---|
Product Field Name |
Required
Input the source field name to retrieve the Default value is |
Event Field Name |
Required
Enter the source field name to retrieve the Default value is |
Environment Field Name |
Optional
Name of the field where the environment name is stored. If the environment field isn't found, the default environment is used. Default value is |
Environment Regex Pattern |
Optional
A regular expression pattern to run on the value found in the
The default value The parameter lets you manipulate the environment field using the regular expression logic. If the regular expression pattern is null or empty, or the environment value is null, the final environment result is the default environment. |
Script Timeout (Seconds) |
Required Timeout limit for the python process running the current script. Default value is 180 seconds. |
Server Address |
Required
Server address of the Splunk instance. Default value is |
Username |
Optional
Username of the Splunk account. |
Password |
Optional
Password of the Splunk account. |
API Token |
Required
Splunk API token. If this field has any value, the API token has priority over other authentication methods. |
Lowest Urgency To Fetch |
Required
Lowest urgency used to fetch notable events. Possible values are:
Default value is |
Fetch Max Hours Backwards |
Optional
Amount of hours from where to fetch notable events. Default value is 1 hour. |
Only Drilldown Events |
Optional
If enabled, the connector attempts to fetch drilldown events without
fetching base events. This parameter requires the Disabled by default. |
Padding Time |
Optional
Amount of hours that will be used as a padding. If no value is provided, this parameter isn't applicable. Max value is 12 hours. |
Max Notable Events To Fetch |
Optional
Number of notable events to process per one connector iteration. Default value is 10. |
Use whitelist as a blacklist |
Required
If enabled, the dynamic list is used as a blocklist. Disabled by default. |
Verify SSL |
Required
If checked, verifies that the SSL certificate for the connection to the CrowdStrike server is valid. Unchecked by default. |
Proxy Server Address |
Optional
Address of the proxy server to use. |
Proxy Username |
Optional
Proxy username to authenticate with. |
Proxy Password |
Optional
Proxy password to authenticate with. |
Query Filter |
Optional
Additional query filter sent to Splunk to get notable events. Value provided here is appended to the WHERE query clause. |
Extract Base Events |
Optional
If enabled, the connector extracts base events related to the notable event using information about the job. In other case, the connector creates a Google Security Operations SOAR event based on the notable event. If this
parameter is set to Enabled by default. |
Multivalue Fields |
Optional
A comma-separated list of fields containing multiple entities. For example, if a field contains two hostnames, the notable event is split into two Google Security Operations SOAR events to map entities correctly. |
Notable Event Data Along Base Event |
Optional
If enabled, the connector adds Google Security Operations SOAR events based on the notable event in addition to base events. Disabled by default. |
Rule Generator Field Name |
Optional
The name of the field used to map the rule generator value. Only
information about the notable event itself is used for mapping, events are
disregarded. If invalid value is provided, the connector sets the field to
the |
Alert Name Source |
Optional
Source for the alert name. Possible values are:
Default value is |
How to use the Query Filter
parameter
If there is a need to narrow down notable events based on the specific
parameters, use the Query Filter
parameter. The value provided in this
parameter is appended to the WHERE clause of the query sent to get notable
events.
The example of the sent query is as follows:
(`get_notable_index` OR `get_sequenced_index`) | eval `get_event_id_meval`,
rule_id=event_id | tags outputfield=tag | `mvappend_field(tag,orig_tag)` |
`notable_xref_lookup` | `get_correlations` | `get_current_status` | `get_owner`
| `get_urgency` | typer | where (urgency="medium" AND urgency="low") AND
(status_label="Unassigned" OR status_label="New") | tail 50 | fields *
For example, if Query Filter = isTesting = True
, then the query appears as
follows:
search (`get_notable_index` OR `get_sequenced_index`) | eval epoch=_time | eval
`get_event_id_meval`,rule_id=event_id | tags outputfield=tag |
`mvappend_field(tag,orig_tag)` | `notable_xref_lookup` | `get_correlations` |
`get_current_status` | `get_owner` | `get_urgency` | typer | where
(urgency!="informational" AND urgency!="low" **AND isTesting = "True"**) |
fields *
Connector rules
The Splunk ES connector uses dynamic list and blocklist (whitelist
and
blacklist
). The connector uses the search_name
field from the event to
compare against the dynamic list.
Connector event
[{
"indicator": "2012/06/29_21:50",
"tlp": "TLP:RED",
"itype": "mal_url",
"severity": "very-high",
"classification": "public",
"detail": "",
"confidence": 50,
"actor": "",
"feed_name": "import",
"source": "admin",
"feed_site_netloc": "localhost",
"campaign": "",
"type": "url",
"id": "anomali:indicator-578a9be5-0e03-4ec0-940d-4b1842f40fd0",
"date_last": "2020-07-15 08:12:07 AM",
"Url": "indicator"
},{
"indicator": "2010/12/19_16:35",
"tlp": "TLP:RED",
"itype": "mal_url",
"severity": "very-high",
"classification": "public",
"detail": "",
"confidence": 50,
"actor": "",
"feed_name": "import",
"source": "admin",
"feed_site_netloc": "localhost",
"campaign": "",
"type": "url",
"id": "anomali:indicator-52cadd07-330a-45fd-962f-32e22d36a89a",
"date_last": "2020-07-15 08:12:07 AM"
}]
Jobs
Sync Splunk ES Closed Events
Description
Synchronizes closed Splunk ES notable events and Google Security Operations SOAR alerts.
Parameters
Parameter Display Name | Type | Default Value | Is Mandatory | Description |
---|---|---|---|---|
Server Address | String | https://IP :8089 |
Yes | Server address of the Splunk instance. |
Username | String | N/A | No | Username of the Splunk account. |
Password | Password | N/A | No | Password of the Splunk account. |
API Token | Password | N/A | Yes | Splunk API token. API token has priority over other authentication methods, when this field is not empty. |
Max Hours Backwards | Integer | 24 | Yes | Specify how many hours backwards to synchronize statuses. Default: 24 hours. |
Verify SSL | Checkbox | Checked | Yes | If enabled, verify the SSL certificate for the connection to the Splunk server is valid. |
Sync Splunk ES Comments
Description
This job will synchronize comments in Splunk ES events and Google Security Operations SOAR cases.
Parameters
Parameter Display Name | Type | Default Value | Is Mandatory | Description |
---|---|---|---|---|
Server Address | String | https://IP :8089 |
Yes | Server address of the Splunk instance. |
Username | String | N/A | No | Username of the Splunk account. |
Password | Password | N/A | No | Password of the Splunk account. |
API Token | Password | N/A | Yes | Splunk API token. API token has priority over other authentication methods, when this field is not empty. |
Verify SSL | Checkbox | Checked | Yes | If enabled, verify the SSL certificate for the connection to the Splunk server is valid. |