Content (2) - 1
Content (2) - 1
Content (2) - 1
18 October 2021
Splunk SOAR Advanced Implementation
turn data into doing™ 2 Copyright © 2023 Splunk, Inc. All rights reserved 17-Jan-23
Course Prerequisites
• Required:
– Experience with Python programming
– Administering Splunk SOAR
– Developing Splunk SOAR Playbooks
– Enterprise Splunk Data Administration
– Enterprise Splunk System Administration
– Either Using or Administering Splunk Enterprise Security
SOAR's searchable
database can be hosted on
Splunk, enriching the search
capabilities and providing
in-depth reporting
Apps
Assets
Owners
Apps
Assets
Owners
Owners
Owners
Assets
Owners
Assets
Owners
Artifacts
- Original
Sources - Actions
- Playbooks
Assets with On_Poll
- Files
APIs Comments/Notes
Case Connections
Playbooks
Audit Trail
Manual Tags
Severity
SLA
TLP
Status
Label
• DEMO
app app
process process
ingestd actiond
service service
Playbook Medium
Playbook
Playbook
Playbook
High
datastore
SOAR Microservices
• Review
• Submit
• Record token value for
use on SOAR server
5. Click Save
Splunk SOAR Advanced Implementation
turn data into doing™ 48 Copyright © 2023 Splunk, Inc. All rights reserved 17-Jan-23
Lab Exercise 2: Remote Search
• Tasks:
– Install the Splunk app for SOAR on Splunk
– Configure Splunk-side settings
– Configure external search on SOAR
– Migrate data to Splunk
– Execute searches on Splunk for SOAR events
5. Click Save
Splunk SOAR Advanced Implementation
turn data into doing™ 56 Copyright © 2023 Splunk, Inc. All rights reserved 17-Jan-23
Adaptive Response Relay
• Queue adaptive responses on local Splunk
heavy forwarder for forwarding to SOAR
– Search head(s) send adaptive
response actions to forwarder
– Optional alert action naming
Allows viewing
results from a
selected time range
Set required
parameters; permits
custom values
This approach bypasses the field mapping built into the Multi-value fields are handled according
Phantom App and allows for more control, especially to the advanced settings for the
for custom fields like notable event IDs. connection.
Username: used to
access the splunk
server.
Time zone is
required; typically
Don't enable certificate
UTC verification unless you know
that the splunkd (not splunk
Don't need to set any of web) port is configured with a
the data ingestion valid certificate (our lab
parameters on Asset servers do not have
Settings, but a default certificates for splunkd.)
label is required on the
Ingest Settings tab.
run_query_1:action_result.status
run_query_1:action_result.data
run_query_1:action_result.summary.total_events
• Goals
– Simpleplaybooks
– Reasonable scope
– Modular designs
Ye Delete
Get file Score Copy to
> 10? s from file End
reputation vault
system
N
o
• Custom functions:
– Define completely new blocks for use in playbooks
– Written in Python and can be defined with input and output parameters
– Excellent for custom code that is used by many playbooks
• Item
– Call function once for each element in the list
• Optional: CEF type, placeholder, help text,
additional inputs
Outputs are
returned to calling
playbook
docs.splunk.com/Documentation/SOARonprem/latest/PlaybookAPI/Dat
aAccessAPI
action_results.data[0]
• In each row, each field is a name-value pair
Splunk SOAR Advanced Implementation
turn data into doing™ 126 Copyright © 2023 Splunk, Inc. All rights reserved 17-Jan-23
Datapaths: Collecting the Right Data
• Use the collect() or collect2()
functions to access data values from
action results and artifact CEF fields
- collect2() can return filtered
results from a filter block
################################################################################
## Custom Code Start
################################################################################
################################################################################
## Custom Code End
################################################################################
get_container_data(container=container)
return
################################################################################
## Custom Code Start
################################################################################
get_container_data__container_data = phantom.get_container(container['id'])['data'][input_parameter_0]
phantom.debug("read: " % get_container_data__container_data)
################################################################################
## Custom Code End
################################################################################
phantom.save_run_data(key='get_container_data:container_data',
value=json.dumps(get_container_data__container_data))
return
docs.splunk.com/Documentation/SOARonprem/latest/PlatformAPI
Splunk SOAR Advanced Implementation
turn data into doing™ 142 Copyright © 2023 Splunk, Inc. All rights reserved 17-Jan-23
Filtering and Selecting
• By exact field value
.../rest/container?_filter_field=value For subfields, use
"_field__subfield"
– Use quotes for string values, [ … ] for list values, & for AND
• By case insensitive substring in a field value
.../rest/container?_filter_field__icontains="value"
.../rest/container/X/playbook_runs
.../rest/ph_user/X/roles
.../rest/action_run/X/app_runs
– And many more
docs.splunk.com/Documentation/SOARonprem/latest/PlatformAPI/RESTQueryData#Requesting_Object_Detail