From dda88331be3398889e4f2ac6850494556a36c366 Mon Sep 17 00:00:00 2001 From: P4T12ICK Date: Mon, 22 May 2023 12:23:08 +0200 Subject: [PATCH 1/2] URL Outbound Traffic Filtering Dispatch Playbook --- ...L_Outbound_Traffic_Filtering_Dispatch.json | 700 ++++++++++++++++++ ...RL_Outbound_Traffic_Filtering_Dispatch.png | Bin 0 -> 94074 bytes ...URL_Outbound_Traffic_Filtering_Dispatch.py | 285 +++++++ ...RL_Outbound_Traffic_Filtering_Dispatch.yml | 19 + 4 files changed, 1004 insertions(+) create mode 100644 playbooks/URL_Outbound_Traffic_Filtering_Dispatch.json create mode 100644 playbooks/URL_Outbound_Traffic_Filtering_Dispatch.png create mode 100644 playbooks/URL_Outbound_Traffic_Filtering_Dispatch.py create mode 100644 playbooks/URL_Outbound_Traffic_Filtering_Dispatch.yml diff --git a/playbooks/URL_Outbound_Traffic_Filtering_Dispatch.json b/playbooks/URL_Outbound_Traffic_Filtering_Dispatch.json new file mode 100644 index 0000000000..d0a69109c5 --- /dev/null +++ b/playbooks/URL_Outbound_Traffic_Filtering_Dispatch.json @@ -0,0 +1,700 @@ +{ + "blockly": false, + "blockly_xml": "", + "category": "Isolation", + "coa": { + "data": { + "description": "Detects available indicators and routes them to dispatch url outbound traffic filtering playbooks. These playbooks will block the given urls. The output of the analysis will update any artifacts, tasks, and indicator tags.", + "edges": [ + { + "id": "port_0_to_port_3", + "sourceNode": "0", + "sourcePort": "0_out", + "targetNode": "3", + "targetPort": "3_in" + }, + { + "conditions": [ + { + "index": 0 + } + ], + "id": "port_3_to_port_6", + "sourceNode": "3", + "sourcePort": "3_out", + "targetNode": "6", + "targetPort": "6_in" + }, + { + "conditions": [ + { + "index": 0 + } + ], + "id": "port_6_to_port_5", + "sourceNode": "6", + "sourcePort": "6_out", + "targetNode": "5", + "targetPort": "5_in" + }, + { + "conditions": [ + { + "index": 1 + } + ], + "id": "port_3_to_port_7", + "sourceNode": "3", + "sourcePort": "3_out", + "targetNode": "7", + "targetPort": "7_in" + }, + { + "id": "port_5_to_port_8", + "sourceNode": "5", + "sourcePort": "5_out", + "targetNode": "8", + "targetPort": "8_in" + }, + { + "conditions": [ + { + "index": 0 + } + ], + "id": "port_8_to_port_13", + "sourceNode": "8", + "sourcePort": "8_out", + "targetNode": "13", + "targetPort": "13_in" + }, + { + "conditions": [ + { + "index": 1 + } + ], + "id": "port_8_to_port_9", + "sourceNode": "8", + "sourcePort": "8_out", + "targetNode": "9", + "targetPort": "9_in" + }, + { + "id": "port_12_to_port_1", + "sourceNode": "12", + "sourcePort": "12_out", + "targetNode": "1", + "targetPort": "1_in" + }, + { + "id": "port_13_to_port_14", + "sourceNode": "13", + "sourcePort": "13_out", + "targetNode": "14", + "targetPort": "14_in" + }, + { + "id": "port_14_to_port_12", + "sourceNode": "14", + "sourcePort": "14_out", + "targetNode": "12", + "targetPort": "12_in" + } + ], + "hash": "eed0927f579163be0a8a5756c72e1de1935a7840", + "nodes": { + "0": { + "data": { + "advanced": { + "join": [] + }, + "functionName": "on_start", + "id": "0", + "type": "start" + }, + "errors": {}, + "id": "0", + "type": "start", + "warnings": {}, + "x": 1000, + "y": 179.9999999999999 + }, + "1": { + "data": { + "advanced": { + "join": [] + }, + "functionName": "on_finish", + "id": "1", + "type": "end" + }, + "errors": {}, + "id": "1", + "type": "end", + "warnings": {}, + "x": 1080, + "y": 1320 + }, + "12": { + "data": { + "advanced": { + "customName": "update isolation task", + "customNameId": 0, + "join": [] + }, + "customFunction": { + "draftMode": false, + "name": "workbook_task_update", + "repoName": "community" + }, + "functionId": 5, + "functionName": "update_isolation_task", + "id": "12", + "selectMore": false, + "type": "utility", + "utilities": { + "workbook_task_update": { + "description": "Update a workbook task by task name or the task where the currently running playbook appears. Requires a task_name, container_id, and a note_title, note_content, owner, or status.", + "fields": [ + { + "dataTypes": [ + "*" + ], + "description": "Name of a workbook task or keyword 'playbook' to update the task where the currently running playbook appears. (Required)", + "inputType": "item", + "label": "task_name", + "name": "task_name", + "placeholder": "my_task", + "renderType": "datapath", + "required": false + }, + { + "dataTypes": [ + "*" + ], + "description": "Note title. (Optional)", + "inputType": "item", + "label": "note_title", + "name": "note_title", + "placeholder": "My Title", + "renderType": "datapath", + "required": false + }, + { + "dataTypes": [ + "*" + ], + "description": "Note content. (Optional)", + "inputType": "item", + "label": "note_content", + "name": "note_content", + "placeholder": "My notes", + "renderType": "datapath", + "required": false + }, + { + "dataTypes": [ + "*" + ], + "description": "Accepts 'incomplete', 'in_progress, or 'complete'. (Optional)", + "inputType": "item", + "label": "status", + "name": "status", + "placeholder": "in_progress", + "renderType": "datapath", + "required": false + }, + { + "dataTypes": [ + "*" + ], + "description": "A user to assign as the task owner or keyword 'current\" to assign the task to the user that launched the playbook. (Optional)", + "inputType": "item", + "label": "owner", + "name": "owner", + "placeholder": "username", + "renderType": "datapath", + "required": false + }, + { + "dataTypes": [ + "phantom container id" + ], + "description": "The ID of a SOAR Container. (Required)", + "inputType": "item", + "label": "container", + "name": "container", + "placeholder": "container:id", + "renderType": "datapath", + "required": false + } + ], + "label": "workbook_task_update", + "name": "workbook_task_update" + } + }, + "utilityType": "custom_function", + "values": { + "workbook_task_update": { + "container": "container:id", + "note_content": "format_note:formatted_data", + "note_title": "Dispatch URL Outbound Traffic Filtering Report", + "owner": null, + "status": "complete", + "task_name": "playbook" + } + } + }, + "errors": {}, + "id": "12", + "type": "utility", + "warnings": {}, + "x": 1060, + "y": 1200 + }, + "13": { + "data": { + "advanced": { + "customName": "tag indicators", + "customNameId": 0, + "join": [] + }, + "customFunction": { + "draftMode": false, + "name": "indicator_tag", + "repoName": "community" + }, + "functionId": 6, + "functionName": "tag_indicators", + "id": "13", + "selectMore": false, + "tab": "customFunctions", + "type": "utility", + "utilities": { + "indicator_tag": { + "description": "Tag an existing indicator record. Tags can be overwritten or appended.", + "fields": [ + { + "dataTypes": [ + "*" + ], + "description": "Specifies the indicator which the tag will be added to. Supports a string indicator value or an indicator id.", + "inputType": "item", + "label": "indicator", + "name": "indicator", + "placeholder": "my_indicator", + "renderType": "datapath", + "required": false + }, + { + "dataTypes": [ + "*" + ], + "description": "Comma separated list of tags. Tags should only contain characters Aa-Zz, 0-9, '-', and '_'.", + "inputType": "item", + "label": "tags", + "name": "tags", + "placeholder": "tag1,tag2,...,tagk", + "renderType": "datapath", + "required": false + }, + { + "dataTypes": [], + "description": "Either True or False with default as False. If set to True, existing tags on the indicator record will be replaced by the provided input. If set to False, the new tags will be appended to the existing indicator tags.", + "inputType": "item", + "label": "overwrite", + "name": "overwrite", + "placeholder": "False", + "renderType": "datapath", + "required": false + } + ], + "label": "indicator_tag", + "name": "indicator_tag" + } + }, + "utilityType": "custom_function", + "values": { + "indicator_tag": { + "indicator": "dispatch_url_outbound_traffic_filtering_playbooks:playbook_output:observable.value", + "overwrite": null, + "tags": "blocked" + } + } + }, + "errors": {}, + "id": "13", + "type": "utility", + "warnings": {}, + "x": 1060, + "y": 940 + }, + "14": { + "data": { + "advanced": { + "customName": "format note", + "customNameId": 0, + "description": "Format a note that merges together normalized data. ", + "join": [], + "note": "Format a note that merges together normalized data. " + }, + "functionId": 1, + "functionName": "format_note", + "id": "14", + "parameters": [ + "dispatch_url_outbound_traffic_filtering_playbooks:playbook_output:observable.value", + "dispatch_url_outbound_traffic_filtering_playbooks:playbook_output:observable.status", + "dispatch_url_outbound_traffic_filtering_playbooks:playbook_output:observable.source" + ], + "template": "Splunk SOAR blocked the following urls:\n\n| url | status | source |\n| --- | --- | --- |\n%%\n| {0} | {1} | {2} |\n%%\n", + "type": "format" + }, + "errors": {}, + "id": "14", + "type": "format", + "warnings": {}, + "x": 1060, + "y": 1060 + }, + "3": { + "data": { + "advanced": { + "customName": "artifact_exists", + "customNameId": 0, + "description": "Checks if a artifact exists", + "join": [], + "note": "Checks if a artifact exists" + }, + "conditions": [ + { + "comparisons": [ + { + "conditionIndex": 0, + "op": "!=", + "param": "artifact:*.id", + "value": "None" + } + ], + "conditionIndex": 0, + "customName": "artifact exists", + "display": "If", + "logic": "and", + "type": "if" + }, + { + "comparisons": [ + { + "conditionIndex": 1, + "op": "==", + "param": "", + "value": "" + } + ], + "conditionIndex": 1, + "customName": "artifact does not exist", + "display": "Else", + "logic": "and", + "type": "else" + } + ], + "functionId": 1, + "functionName": "artifact_exists", + "id": "3", + "type": "decision" + }, + "errors": {}, + "id": "3", + "type": "decision", + "warnings": {}, + "x": 1060, + "y": 280 + }, + "5": { + "data": { + "advanced": { + "customName": "dispatch url outbound traffic filtering playbooks", + "customNameId": 0, + "join": [] + }, + "functionId": 1, + "functionName": "dispatch_url_outbound_traffic_filtering_playbooks", + "id": "5", + "inputs": { + "artifact_ids_include": { + "datapaths": [ + "filtered-data:filter_new_artifacts:condition_1:artifact:*.id" + ], + "deduplicate": false + }, + "indicator_tags_exclude": { + "datapaths": [], + "deduplicate": false + }, + "indicator_tags_include": { + "datapaths": [], + "deduplicate": false + }, + "playbook_repo": { + "datapaths": [], + "deduplicate": false + }, + "playbook_tags": { + "datapaths": [], + "deduplicate": false + } + }, + "playbookName": "dispatch_input_playbooks", + "playbookRepo": 1, + "playbookRepoName": "community", + "playbookType": "data", + "synchronous": true, + "type": "playbook" + }, + "errors": {}, + "id": "5", + "type": "playbook", + "warnings": {}, + "x": 880, + "y": 600 + }, + "6": { + "data": { + "advanced": { + "customName": "filter_new_artifacts", + "customNameId": 0, + "description": "Only dispatch playbooks against new artifacts.", + "join": [], + "note": "Only dispatch playbooks against new artifacts." + }, + "conditions": [ + { + "comparisons": [ + { + "conditionIndex": 0, + "op": "!=", + "param": "artifact:*.id", + "value": "None" + } + ], + "conditionIndex": 0, + "customName": "artifact exists", + "logic": "and" + } + ], + "functionId": 3, + "functionName": "filter_new_artifacts", + "id": "6", + "type": "filter" + }, + "errors": {}, + "id": "6", + "type": "filter", + "warnings": {}, + "x": 940, + "y": 420 + }, + "7": { + "data": { + "advanced": { + "customName": "comment no new artifacts", + "customNameId": 0, + "description": "Add comment when no new artifacts exists.", + "join": [], + "note": "Add comment when no new artifacts exists." + }, + "functionId": 1, + "functionName": "comment_no_new_artifacts", + "id": "7", + "selectMore": false, + "tab": "apis", + "type": "utility", + "utilities": { + "comment": { + "description": "", + "fields": [ + { + "description": "", + "label": "comment", + "name": "comment", + "placeholder": "Enter a comment", + "renderType": "datapath", + "required": true + }, + { + "hidden": true, + "name": "container", + "required": false + }, + { + "hidden": true, + "name": "author", + "required": false + }, + { + "hidden": true, + "name": "trace", + "required": false + } + ], + "label": "add comment", + "name": "comment" + } + }, + "utilityType": "api", + "values": { + "comment": { + "_internal": [ + "container", + "author", + "trace" + ], + "comment": "No new artifacts found." + } + } + }, + "errors": {}, + "id": "7", + "type": "utility", + "warnings": {}, + "x": 1140, + "y": 420 + }, + "8": { + "data": { + "advanced": { + "customName": "outputs decision", + "customNameId": 0, + "description": "Determine if outputs exist.", + "join": [], + "note": "Determine if outputs exist." + }, + "conditions": [ + { + "comparisons": [ + { + "conditionIndex": 0, + "op": "!=", + "param": "dispatch_url_outbound_traffic_filtering_playbooks:playbook_output:observable", + "value": "None" + } + ], + "conditionIndex": 0, + "customName": "observable exists", + "display": "If", + "logic": "and", + "type": "if" + }, + { + "comparisons": [ + { + "conditionIndex": 1, + "op": "==", + "param": "", + "value": "" + } + ], + "conditionIndex": 1, + "customName": "observable does not exist", + "display": "Else", + "logic": "and", + "type": "else" + } + ], + "functionId": 2, + "functionName": "outputs_decision", + "id": "8", + "type": "decision" + }, + "errors": {}, + "id": "8", + "type": "decision", + "warnings": {}, + "x": 960, + "y": 760 + }, + "9": { + "data": { + "advanced": { + "customName": "comment no observables", + "customNameId": 0, + "description": "Add comment when no observables were generated.", + "join": [], + "note": "Add comment when no observables were generated." + }, + "functionId": 2, + "functionName": "comment_no_observables", + "id": "9", + "selectMore": false, + "tab": "apis", + "type": "utility", + "utilities": { + "comment": { + "description": "", + "fields": [ + { + "description": "", + "label": "comment", + "name": "comment", + "placeholder": "Enter a comment", + "renderType": "datapath", + "required": true + }, + { + "hidden": true, + "name": "container", + "required": false + }, + { + "hidden": true, + "name": "author", + "required": false + }, + { + "hidden": true, + "name": "trace", + "required": false + } + ], + "label": "add comment", + "name": "comment" + } + }, + "utilityType": "api", + "values": { + "comment": { + "_internal": [ + "container", + "author", + "trace" + ], + "comment": "No observable data found from dispatched playbooks." + } + } + }, + "errors": {}, + "id": "9", + "type": "utility", + "warnings": {}, + "x": 680, + "y": 960 + } + }, + "notes": "Outputs: \n- Concludes task\n- tags indicators" + }, + "input_spec": null, + "output_spec": null, + "playbook_type": "automation", + "python_version": "3", + "schema": "5.0.9", + "version": "6.0.0.114895" + }, + "create_time": "2023-05-22T10:13:00.300558+00:00", + "draft_mode": false, + "labels": [ + "*" + ], + "tags": [ + "D3-OTF" + ] +} \ No newline at end of file diff --git a/playbooks/URL_Outbound_Traffic_Filtering_Dispatch.png b/playbooks/URL_Outbound_Traffic_Filtering_Dispatch.png new file mode 100644 index 0000000000000000000000000000000000000000..e8105a55221cb5db4216880e2cfc5d767330d021 GIT binary patch literal 94074 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 literal 0 HcmV?d00001 diff --git a/playbooks/URL_Outbound_Traffic_Filtering_Dispatch.py b/playbooks/URL_Outbound_Traffic_Filtering_Dispatch.py new file mode 100644 index 0000000000..632c44f27f --- /dev/null +++ b/playbooks/URL_Outbound_Traffic_Filtering_Dispatch.py @@ -0,0 +1,285 @@ +""" +Detects available indicators and routes them to dispatch url outbound traffic filtering playbooks. These playbooks will block the given urls. The output of the analysis will update any artifacts, tasks, and indicator tags. +""" + + +import phantom.rules as phantom +import json +from datetime import datetime, timedelta + + +@phantom.playbook_block() +def on_start(container): + phantom.debug('on_start() called') + + # call 'artifact_exists' block + artifact_exists(container=container) + + return + +@phantom.playbook_block() +def artifact_exists(action=None, success=None, container=None, results=None, handle=None, filtered_artifacts=None, filtered_results=None, custom_function=None, **kwargs): + phantom.debug("artifact_exists() called") + + ################################################################################ + # Checks if a artifact exists + ################################################################################ + + # check for 'if' condition 1 + found_match_1 = phantom.decision( + container=container, + conditions=[ + ["artifact:*.id", "!=", None] + ]) + + # call connected blocks if condition 1 matched + if found_match_1: + filter_new_artifacts(action=action, success=success, container=container, results=results, handle=handle) + return + + # check for 'else' condition 2 + comment_no_new_artifacts(action=action, success=success, container=container, results=results, handle=handle) + + return + + +@phantom.playbook_block() +def dispatch_url_outbound_traffic_filtering_playbooks(action=None, success=None, container=None, results=None, handle=None, filtered_artifacts=None, filtered_results=None, custom_function=None, **kwargs): + phantom.debug("dispatch_url_outbound_traffic_filtering_playbooks() called") + + filtered_artifact_0_data_filter_new_artifacts = phantom.collect2(container=container, datapath=["filtered-data:filter_new_artifacts:condition_1:artifact:*.id"]) + + filtered_artifact_0__id = [item[0] for item in filtered_artifact_0_data_filter_new_artifacts] + + inputs = { + "playbook_repo": [], + "playbook_tags": [], + "artifact_ids_include": filtered_artifact_0__id, + "indicator_tags_exclude": [], + "indicator_tags_include": [], + } + + ################################################################################ + ## Custom Code Start + ################################################################################ + + # Write your custom code here... + + ################################################################################ + ## Custom Code End + ################################################################################ + + # call playbook "community/dispatch_input_playbooks", returns the playbook_run_id + playbook_run_id = phantom.playbook("community/dispatch_input_playbooks", container=container, name="dispatch_url_outbound_traffic_filtering_playbooks", callback=outputs_decision, inputs=inputs) + + return + + +@phantom.playbook_block() +def filter_new_artifacts(action=None, success=None, container=None, results=None, handle=None, filtered_artifacts=None, filtered_results=None, custom_function=None, **kwargs): + phantom.debug("filter_new_artifacts() called") + + ################################################################################ + # Only dispatch playbooks against new artifacts. + ################################################################################ + + # collect filtered artifact ids and results for 'if' condition 1 + matched_artifacts_1, matched_results_1 = phantom.condition( + container=container, + conditions=[ + ["artifact:*.id", "!=", None] + ], + name="filter_new_artifacts:condition_1") + + # call connected blocks if filtered artifacts or results + if matched_artifacts_1 or matched_results_1: + dispatch_url_outbound_traffic_filtering_playbooks(action=action, success=success, container=container, results=results, handle=handle, filtered_artifacts=matched_artifacts_1, filtered_results=matched_results_1) + + return + + +@phantom.playbook_block() +def comment_no_new_artifacts(action=None, success=None, container=None, results=None, handle=None, filtered_artifacts=None, filtered_results=None, custom_function=None, **kwargs): + phantom.debug("comment_no_new_artifacts() called") + + ################################################################################ + # Add comment when no new artifacts exists. + ################################################################################ + + ################################################################################ + ## Custom Code Start + ################################################################################ + + # Write your custom code here... + + ################################################################################ + ## Custom Code End + ################################################################################ + + phantom.comment(container=container, comment="No new artifacts found.") + + return + + +@phantom.playbook_block() +def outputs_decision(action=None, success=None, container=None, results=None, handle=None, filtered_artifacts=None, filtered_results=None, custom_function=None, **kwargs): + phantom.debug("outputs_decision() called") + + ################################################################################ + # Determine if outputs exist. + ################################################################################ + + # check for 'if' condition 1 + found_match_1 = phantom.decision( + container=container, + conditions=[ + ["dispatch_url_outbound_traffic_filtering_playbooks:playbook_output:observable", "!=", None] + ]) + + # call connected blocks if condition 1 matched + if found_match_1: + tag_indicators(action=action, success=success, container=container, results=results, handle=handle) + return + + # check for 'else' condition 2 + comment_no_observables(action=action, success=success, container=container, results=results, handle=handle) + + return + + +@phantom.playbook_block() +def comment_no_observables(action=None, success=None, container=None, results=None, handle=None, filtered_artifacts=None, filtered_results=None, custom_function=None, **kwargs): + phantom.debug("comment_no_observables() called") + + ################################################################################ + # Add comment when no observables were generated. + ################################################################################ + + ################################################################################ + ## Custom Code Start + ################################################################################ + + # Write your custom code here... + + ################################################################################ + ## Custom Code End + ################################################################################ + + phantom.comment(container=container, comment="No observable data found from dispatched playbooks.") + + return + + +@phantom.playbook_block() +def update_isolation_task(action=None, success=None, container=None, results=None, handle=None, filtered_artifacts=None, filtered_results=None, custom_function=None, **kwargs): + phantom.debug("update_isolation_task() called") + + id_value = container.get("id", None) + format_note = phantom.get_format_data(name="format_note") + + parameters = [] + + parameters.append({ + "owner": None, + "status": "complete", + "container": id_value, + "task_name": "playbook", + "note_title": "Dispatch URL Outbound Traffic Filtering Report", + "note_content": format_note, + }) + + ################################################################################ + ## Custom Code Start + ################################################################################ + + # Write your custom code here... + + ################################################################################ + ## Custom Code End + ################################################################################ + + phantom.custom_function(custom_function="community/workbook_task_update", parameters=parameters, name="update_isolation_task") + + return + + +@phantom.playbook_block() +def tag_indicators(action=None, success=None, container=None, results=None, handle=None, filtered_artifacts=None, filtered_results=None, custom_function=None, **kwargs): + phantom.debug("tag_indicators() called") + + dispatch_url_outbound_traffic_filtering_playbooks_output_observable = phantom.collect2(container=container, datapath=["dispatch_url_outbound_traffic_filtering_playbooks:playbook_output:observable.value"]) + + parameters = [] + + # build parameters list for 'tag_indicators' call + for dispatch_url_outbound_traffic_filtering_playbooks_output_observable_item in dispatch_url_outbound_traffic_filtering_playbooks_output_observable: + parameters.append({ + "tags": "blocked", + "indicator": dispatch_url_outbound_traffic_filtering_playbooks_output_observable_item[0], + "overwrite": None, + }) + + ################################################################################ + ## Custom Code Start + ################################################################################ + + # Write your custom code here... + + ################################################################################ + ## Custom Code End + ################################################################################ + + phantom.custom_function(custom_function="community/indicator_tag", parameters=parameters, name="tag_indicators", callback=format_note) + + return + + +@phantom.playbook_block() +def format_note(action=None, success=None, container=None, results=None, handle=None, filtered_artifacts=None, filtered_results=None, custom_function=None, **kwargs): + phantom.debug("format_note() called") + + ################################################################################ + # Format a note that merges together normalized data. + ################################################################################ + + template = """Splunk SOAR blocked the following urls:\n\n| url | status | source |\n| --- | --- | --- |\n%%\n| {0} | {1} | {2} |\n%%\n""" + + # parameter list for template variable replacement + parameters = [ + "dispatch_url_outbound_traffic_filtering_playbooks:playbook_output:observable.value", + "dispatch_url_outbound_traffic_filtering_playbooks:playbook_output:observable.status", + "dispatch_url_outbound_traffic_filtering_playbooks:playbook_output:observable.source" + ] + + ################################################################################ + ## Custom Code Start + ################################################################################ + + # Write your custom code here... + + ################################################################################ + ## Custom Code End + ################################################################################ + + phantom.format(container=container, template=template, parameters=parameters, name="format_note") + + update_isolation_task(container=container) + + return + + +@phantom.playbook_block() +def on_finish(container, summary): + phantom.debug("on_finish() called") + + ################################################################################ + ## Custom Code Start + ################################################################################ + + # Write your custom code here... + + ################################################################################ + ## Custom Code End + ################################################################################ + + return \ No newline at end of file diff --git a/playbooks/URL_Outbound_Traffic_Filtering_Dispatch.yml b/playbooks/URL_Outbound_Traffic_Filtering_Dispatch.yml new file mode 100644 index 0000000000..a60e4acdef --- /dev/null +++ b/playbooks/URL_Outbound_Traffic_Filtering_Dispatch.yml @@ -0,0 +1,19 @@ +name: URL Outbound Traffic Filtering Dispatch +id: 83bbe505-4636-4f60-a37b-86f1234d8567 +version: 1 +date: '2023-05-22' +author: Patrick Bareiss, Splunk +type: Investigation +description: Accepts a list of URLs and blocks them. Generates a global report and list of observables. +playbook: URL_Outbound_Traffic_Filtering_Dispatch +how_to_implement: This input playbook requires the Splunk connector to be configured. It is designed to work in conjunction with the Dynamic Related Tickets Seach playbook or other playbooks in the same style. +references: + - https://d3fend.mitre.org/technique/d3f:OutboundTrafficFiltering/ +app_list: [] +tags: + platform_tags: [] + playbook_type: Automation + vpe_type: Modern + playbook_fields: [] + product: + - Splunk SOAR \ No newline at end of file From f1f4c95c808bae5b955f0d4a6c9d6dd4fc355c2b Mon Sep 17 00:00:00 2001 From: P4T12ICK Date: Wed, 21 Jun 2023 16:28:53 +0200 Subject: [PATCH 2/2] Improvements --- playbooks/URL_Outbound_Traffic_Filtering_Dispatch.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/playbooks/URL_Outbound_Traffic_Filtering_Dispatch.yml b/playbooks/URL_Outbound_Traffic_Filtering_Dispatch.yml index a60e4acdef..db27a3523e 100644 --- a/playbooks/URL_Outbound_Traffic_Filtering_Dispatch.yml +++ b/playbooks/URL_Outbound_Traffic_Filtering_Dispatch.yml @@ -3,10 +3,10 @@ id: 83bbe505-4636-4f60-a37b-86f1234d8567 version: 1 date: '2023-05-22' author: Patrick Bareiss, Splunk -type: Investigation +type: Response description: Accepts a list of URLs and blocks them. Generates a global report and list of observables. playbook: URL_Outbound_Traffic_Filtering_Dispatch -how_to_implement: This input playbook requires the Splunk connector to be configured. It is designed to work in conjunction with the Dynamic Related Tickets Seach playbook or other playbooks in the same style. +how_to_implement: This playbook looks for artifacts and then dispatches the community denylisting playbooks. This playbook takes the output of those playbooks and nicely formats them into notes and tags indicators with their results. references: - https://d3fend.mitre.org/technique/d3f:OutboundTrafficFiltering/ app_list: []