From d4fa5f28ca910021162e74956cae8e6e7ccb8583 Mon Sep 17 00:00:00 2001 From: P4T12ICK Date: Fri, 31 Mar 2023 09:05:32 +0200 Subject: [PATCH 1/6] New ZScaler Playbook --- .../Zscaler_Outbound_Traffic_Filtering.json | 280 ++++++++++++++++++ .../Zscaler_Outbound_Traffic_Filtering.png | Bin 0 -> 31415 bytes .../Zscaler_Outbound_Traffic_Filtering.py | 170 +++++++++++ .../Zscaler_Outbound_Traffic_Filtering.yml | 24 ++ 4 files changed, 474 insertions(+) create mode 100755 playbooks/Zscaler_Outbound_Traffic_Filtering.json create mode 100755 playbooks/Zscaler_Outbound_Traffic_Filtering.png create mode 100755 playbooks/Zscaler_Outbound_Traffic_Filtering.py create mode 100644 playbooks/Zscaler_Outbound_Traffic_Filtering.yml diff --git a/playbooks/Zscaler_Outbound_Traffic_Filtering.json b/playbooks/Zscaler_Outbound_Traffic_Filtering.json new file mode 100755 index 0000000000..f77a7624f5 --- /dev/null +++ b/playbooks/Zscaler_Outbound_Traffic_Filtering.json @@ -0,0 +1,280 @@ +{ + "blockly": false, + "blockly_xml": "", + "category": "Isolation", + "coa": { + "data": { + "description": "Accepts a URL or list of URLs as input. Blocks the given URLs in ZScaler.\n\nhttps://d3fend.mitre.org/technique/d3f:OutboundTrafficFiltering/", + "edges": [ + { + "id": "port_0_to_port_4", + "sourceNode": "0", + "sourcePort": "0_out", + "targetNode": "4", + "targetPort": "4_in" + }, + { + "conditions": [ + { + "index": 0 + } + ], + "id": "port_4_to_port_6", + "sourceNode": "4", + "sourcePort": "4_out", + "targetNode": "6", + "targetPort": "6_in" + }, + { + "id": "port_7_to_port_1", + "sourceNode": "7", + "sourcePort": "7_out", + "targetNode": "1", + "targetPort": "1_in" + }, + { + "id": "port_6_to_port_8", + "sourceNode": "6", + "sourcePort": "6_out", + "targetNode": "8", + "targetPort": "8_in" + }, + { + "conditions": [ + { + "index": 0 + } + ], + "id": "port_8_to_port_7", + "sourceNode": "8", + "sourcePort": "8_out", + "targetNode": "7", + "targetPort": "7_in" + } + ], + "hash": "d00eda8b809a9b54fd2a3df75a64dc1538169f7c", + "nodes": { + "0": { + "data": { + "advanced": { + "join": [] + }, + "functionName": "on_start", + "id": "0", + "type": "start" + }, + "errors": {}, + "id": "0", + "type": "start", + "warnings": {}, + "x": 20, + "y": 0 + }, + "1": { + "data": { + "advanced": { + "join": [] + }, + "functionName": "on_finish", + "id": "1", + "type": "end" + }, + "errors": {}, + "id": "1", + "type": "end", + "warnings": {}, + "x": 19.999999999999986, + "y": 864 + }, + "4": { + "data": { + "advanced": { + "customName": "url input filter", + "customNameId": 0, + "description": "Determine branches based on provided inputs.", + "join": [], + "note": "Determine branches based on provided inputs." + }, + "conditions": [ + { + "comparisons": [ + { + "conditionIndex": 0, + "op": "!=", + "param": "playbook_input:input_url", + "value": "None" + } + ], + "conditionIndex": 0, + "customName": "input_url", + "logic": "and" + } + ], + "functionId": 1, + "functionName": "url_input_filter", + "id": "4", + "type": "filter" + }, + "errors": {}, + "id": "4", + "type": "filter", + "warnings": { + "config": [ + "Reconfigure invalid datapath." + ] + }, + "x": 60, + "y": 148 + }, + "6": { + "data": { + "action": "block url", + "actionType": "contain", + "advanced": { + "customName": "block url", + "customNameId": 0, + "description": "Block urls in ZScaler based on given urls. ", + "join": [], + "note": "Block urls in ZScaler based on given urls. " + }, + "connector": "Zscaler", + "connectorConfigs": [ + "zscaler" + ], + "connectorId": "ee475421-d2e4-4d8e-addb-a2ce1465d6a3", + "connectorVersion": "v1", + "functionId": 1, + "functionName": "block_url", + "id": "6", + "parameters": { + "url": "playbook_input:input_url" + }, + "requiredParameters": [ + { + "data_type": "string", + "field": "url" + } + ], + "type": "action" + }, + "errors": {}, + "id": "6", + "type": "action", + "warnings": { + "config": [ + "Reconfigure invalid datapath." + ] + }, + "x": 0, + "y": 328 + }, + "7": { + "data": { + "advanced": { + "customName": "build observable", + "customNameId": 0, + "description": "This block uses custom code to generate an observable dictionary to output into the observables data path.", + "join": [], + "note": "This block uses custom code to generate an observable dictionary to output into the observables data path." + }, + "functionId": 1, + "functionName": "build_observable", + "id": "7", + "inputParameters": [ + "block_url:action_result.summary", + "block_url:action_result.status", + "block_url:action_result.message", + "block_url:action_result.parameter.url" + ], + "outputVariables": [ + "observable_array" + ], + "type": "code" + }, + "errors": {}, + "id": "7", + "type": "code", + "userCode": "\n build_observable__observable_array = list()\n for summary, status, message, url in zip(block_url_result_item_0, block_url_result_item_1, block_url_result_message, block_url_parameter_url):\n observable = {\n \"type\": \"url\",\n \"value\": url,\n \"source\": \"ZScaler\"\n }\n if len(summary[\"ignored\"]) > 0:\n observable[\"status\"] = \"ignored\"\n else:\n observable[\"status\"] = \"updated\"\n \n build_observable__observable_array.append(observable)\n \n\n", + "warnings": {}, + "x": 0, + "y": 700 + }, + "8": { + "data": { + "advanced": { + "customName": "block url success filter", + "customNameId": 0, + "description": "Determine if the block url action was successful or not.", + "join": [], + "note": "Determine if the block url action was successful or not." + }, + "conditions": [ + { + "comparisons": [ + { + "conditionIndex": 0, + "op": "==", + "param": "block_url:action_result.status", + "value": "success" + } + ], + "conditionIndex": 0, + "customName": "success", + "logic": "and" + } + ], + "functionId": 2, + "functionName": "block_url_success_filter", + "id": "8", + "type": "filter" + }, + "errors": {}, + "id": "8", + "type": "filter", + "warnings": {}, + "x": 60, + "y": 506 + } + }, + "notes": "Inputs: url\nInteractions: ZScaler\nActions: block url\nOutputs: observables" + }, + "input_spec": [ + { + "contains": [ + "url" + ], + "description": "Accepts url and block them", + "name": "input_url" + } + ], + "output_spec": [ + { + "contains": [ + "url" + ], + "datapaths": [ + "build_observable:custom_function:observable_array" + ], + "deduplicate": false, + "description": "An array of observable dictionaries with value, type and information about the blocked urls.", + "metadata": {}, + "name": "observable" + } + ], + "playbook_type": "data", + "python_version": "3", + "schema": "5.0.9", + "version": "6.0.0.114895" + }, + "create_time": "2023-03-31T06:50:12.071333+00:00", + "draft_mode": false, + "labels": [ + "*" + ], + "tags": [ + "url", + "D3-OTF", + "ZScaler", + "denylist" + ] +} \ No newline at end of file diff --git a/playbooks/Zscaler_Outbound_Traffic_Filtering.png b/playbooks/Zscaler_Outbound_Traffic_Filtering.png new file mode 100755 index 0000000000000000000000000000000000000000..7f6babff65cdb8d99a3721a29d9b3d5a59a9cf8e GIT binary patch literal 31415 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 literal 0 HcmV?d00001 diff --git a/playbooks/Zscaler_Outbound_Traffic_Filtering.py b/playbooks/Zscaler_Outbound_Traffic_Filtering.py new file mode 100755 index 0000000000..ced11584cd --- /dev/null +++ b/playbooks/Zscaler_Outbound_Traffic_Filtering.py @@ -0,0 +1,170 @@ +""" +Accepts a URL or list of URLs as input. Blocks the given URLs in ZScaler.\n\nhttps://d3fend.mitre.org/technique/d3f:OutboundTrafficFiltering/ +""" + + +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 'url_input_filter' block + url_input_filter(container=container) + + return + +@phantom.playbook_block() +def url_input_filter(action=None, success=None, container=None, results=None, handle=None, filtered_artifacts=None, filtered_results=None, custom_function=None, **kwargs): + phantom.debug("url_input_filter() called") + + ################################################################################ + # Determine branches based on provided inputs. + ################################################################################ + + # collect filtered artifact ids and results for 'if' condition 1 + matched_artifacts_1, matched_results_1 = phantom.condition( + container=container, + conditions=[ + ["playbook_input:input_url", "!=", None] + ], + name="url_input_filter:condition_1") + + # call connected blocks if filtered artifacts or results + if matched_artifacts_1 or matched_results_1: + block_url(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 block_url(action=None, success=None, container=None, results=None, handle=None, filtered_artifacts=None, filtered_results=None, custom_function=None, **kwargs): + phantom.debug("block_url() called") + + # phantom.debug('Action: {0} {1}'.format(action['name'], ('SUCCEEDED' if success else 'FAILED'))) + + ################################################################################ + # Block urls in ZScaler based on given urls. + ################################################################################ + + playbook_input_input_url = phantom.collect2(container=container, datapath=["playbook_input:input_url"]) + + parameters = [] + + # build parameters list for 'block_url' call + for playbook_input_input_url_item in playbook_input_input_url: + if playbook_input_input_url_item[0] is not None: + parameters.append({ + "url": playbook_input_input_url_item[0], + }) + + ################################################################################ + ## Custom Code Start + ################################################################################ + + # Write your custom code here... + + ################################################################################ + ## Custom Code End + ################################################################################ + + phantom.act("block url", parameters=parameters, name="block_url", assets=["zscaler"], callback=block_url_success_filter) + + return + + +@phantom.playbook_block() +def build_observable(action=None, success=None, container=None, results=None, handle=None, filtered_artifacts=None, filtered_results=None, custom_function=None, **kwargs): + phantom.debug("build_observable() called") + + ################################################################################ + # This block uses custom code to generate an observable dictionary to output into + # the observables data path. + ################################################################################ + + block_url_result_data = phantom.collect2(container=container, datapath=["block_url:action_result.summary","block_url:action_result.status","block_url:action_result.message","block_url:action_result.parameter.url"], action_results=results) + + block_url_result_item_0 = [item[0] for item in block_url_result_data] + block_url_result_item_1 = [item[1] for item in block_url_result_data] + block_url_result_message = [item[2] for item in block_url_result_data] + block_url_parameter_url = [item[3] for item in block_url_result_data] + + build_observable__observable_array = None + + ################################################################################ + ## Custom Code Start + ################################################################################ + + build_observable__observable_array = list() + for summary, status, message, url in zip(block_url_result_item_0, block_url_result_item_1, block_url_result_message, block_url_parameter_url): + observable = { + "type": "url", + "value": url, + "source": "ZScaler" + } + if len(summary["ignored"]) > 0: + observable["status"] = "ignored" + else: + observable["status"] = "updated" + + build_observable__observable_array.append(observable) + + + ################################################################################ + ## Custom Code End + ################################################################################ + + phantom.save_run_data(key="build_observable:observable_array", value=json.dumps(build_observable__observable_array)) + + return + + +@phantom.playbook_block() +def block_url_success_filter(action=None, success=None, container=None, results=None, handle=None, filtered_artifacts=None, filtered_results=None, custom_function=None, **kwargs): + phantom.debug("block_url_success_filter() called") + + ################################################################################ + # Determine if the block url action was successful or not. + ################################################################################ + + # collect filtered artifact ids and results for 'if' condition 1 + matched_artifacts_1, matched_results_1 = phantom.condition( + container=container, + conditions=[ + ["block_url:action_result.status", "==", "success"] + ], + name="block_url_success_filter:condition_1") + + # call connected blocks if filtered artifacts or results + if matched_artifacts_1 or matched_results_1: + build_observable(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 on_finish(container, summary): + phantom.debug("on_finish() called") + + build_observable__observable_array = json.loads(_ if (_ := phantom.get_run_data(key="build_observable:observable_array")) != "" else "null") # pylint: disable=used-before-assignment + + output = { + "observable": build_observable__observable_array, + } + + ################################################################################ + ## Custom Code Start + ################################################################################ + + # Write your custom code here... + + ################################################################################ + ## Custom Code End + ################################################################################ + + phantom.save_playbook_output_data(output=output) + + return \ No newline at end of file diff --git a/playbooks/Zscaler_Outbound_Traffic_Filtering.yml b/playbooks/Zscaler_Outbound_Traffic_Filtering.yml new file mode 100644 index 0000000000..d40a1a03a1 --- /dev/null +++ b/playbooks/Zscaler_Outbound_Traffic_Filtering.yml @@ -0,0 +1,24 @@ +name: ZScaler Outbound Traffic Filtering +id: 3e0df448-0546-4b2b-9143-365161cf40f9 +version: 1 +date: '2023-03-31' +author: Patrick Bareiss, Splunk +type: Investigation +description: Accepts a URL or list of URLs and block them in ZScaler. Generates a list of observables with the blocked URLs. +playbook: ZScaler_Outbound_Traffic_Filtering +how_to_implement: This input playbook requires the ZScaler connector to be configured. It is designed to work in conjunction with the Dynamic URL Outbound Traffic Filtering Analysis playbook or other playbooks in the same style. +references: + - https://d3fend.mitre.org/technique/d3f:OutboundTrafficFiltering/ +app_list: + - ZScaler +tags: + platform_tags: + - denylist + - url + - D3-OTF + - ZScaler + playbook_type: Input + vpe_type: Modern + playbook_fields: [] + product: + - Splunk SOAR \ No newline at end of file From 612b083c995d68325baf4bd1c9ad1984d7ca465a Mon Sep 17 00:00:00 2001 From: Lou Stella Date: Sun, 14 May 2023 19:36:35 -0500 Subject: [PATCH 2/6] Gmail message search --- ..._Message_Identifier_Activity_Analysis.json | 417 ++++++++++++++++++ ...l_Message_Identifier_Activity_Analysis.png | Bin 0 -> 57498 bytes ...il_Message_Identifier_Activity_Analysis.py | 268 +++++++++++ ...l_Message_Identifier_Activity_Analysis.yml | 22 + 4 files changed, 707 insertions(+) create mode 100644 playbooks/G_Suite_for_GMail_Message_Identifier_Activity_Analysis.json create mode 100644 playbooks/G_Suite_for_GMail_Message_Identifier_Activity_Analysis.png create mode 100644 playbooks/G_Suite_for_GMail_Message_Identifier_Activity_Analysis.py create mode 100644 playbooks/G_Suite_for_GMail_Message_Identifier_Activity_Analysis.yml diff --git a/playbooks/G_Suite_for_GMail_Message_Identifier_Activity_Analysis.json b/playbooks/G_Suite_for_GMail_Message_Identifier_Activity_Analysis.json new file mode 100644 index 0000000000..7e05390179 --- /dev/null +++ b/playbooks/G_Suite_for_GMail_Message_Identifier_Activity_Analysis.json @@ -0,0 +1,417 @@ +{ + "blockly": false, + "blockly_xml": "", + "category": "Message Identifier Activity Analysis", + "coa": { + "data": { + "description": "Accepts an internet message id, and asks Gmail for a list of mailboxes to search, and then searches each one to look for records that have a matching internet message id. It then produces a normalized output and summary table.", + "edges": [ + { + "id": "port_0_to_port_2", + "sourceNode": "0", + "sourcePort": "0_out", + "targetNode": "2", + "targetPort": "2_in" + }, + { + "conditions": [ + { + "index": 0 + } + ], + "id": "port_2_to_port_3", + "sourceNode": "2", + "sourcePort": "2_out", + "targetNode": "3", + "targetPort": "3_in" + }, + { + "conditions": [ + { + "index": 0 + } + ], + "id": "port_3_to_port_4", + "sourceNode": "3", + "sourcePort": "3_out", + "targetNode": "4", + "targetPort": "4_in" + }, + { + "id": "port_4_to_port_5", + "sourceNode": "4", + "sourcePort": "4_out", + "targetNode": "5", + "targetPort": "5_in" + }, + { + "id": "port_6_to_port_7", + "sourceNode": "6", + "sourcePort": "6_out", + "targetNode": "7", + "targetPort": "7_in" + }, + { + "id": "port_7_to_port_1", + "sourceNode": "7", + "sourcePort": "7_out", + "targetNode": "1", + "targetPort": "1_in" + }, + { + "id": "port_5_to_port_9", + "sourceNode": "5", + "sourcePort": "5_out", + "targetNode": "9", + "targetPort": "9_in" + }, + { + "conditions": [ + { + "index": 0 + } + ], + "id": "port_9_to_port_6", + "sourceNode": "9", + "sourcePort": "9_out", + "targetNode": "6", + "targetPort": "6_in" + } + ], + "hash": "8fd552239267a9cf26722affc06b22927bb5db1a", + "nodes": { + "0": { + "data": { + "advanced": { + "join": [] + }, + "functionName": "on_start", + "id": "0", + "type": "start" + }, + "errors": {}, + "id": "0", + "type": "start", + "warnings": {}, + "x": 19.999999999999986, + "y": -6.394884621840902e-14 + }, + "1": { + "data": { + "advanced": { + "join": [] + }, + "functionName": "on_finish", + "id": "1", + "type": "end" + }, + "errors": {}, + "id": "1", + "type": "end", + "warnings": {}, + "x": 19.999999999999986, + "y": 1240 + }, + "2": { + "data": { + "advanced": { + "customName": "artifact check", + "customNameId": 0, + "join": [] + }, + "conditions": [ + { + "comparisons": [ + { + "conditionIndex": 0, + "op": "!=", + "param": "artifact:*.id", + "value": "None" + } + ], + "conditionIndex": 0, + "customName": "Artifact Exists", + "display": "If", + "logic": "and", + "type": "if" + } + ], + "functionId": 1, + "functionName": "artifact_check", + "id": "2", + "type": "decision" + }, + "errors": {}, + "id": "2", + "type": "decision", + "warnings": {}, + "x": 80, + "y": 148 + }, + "3": { + "data": { + "advanced": { + "customName": "artifact filter", + "customNameId": 0, + "join": [] + }, + "conditions": [ + { + "comparisons": [ + { + "conditionIndex": 0, + "op": "!=", + "param": "playbook_input:message_id", + "value": "None" + } + ], + "conditionIndex": 0, + "customName": "Input Valid", + "logic": "and" + } + ], + "functionId": 1, + "functionName": "artifact_filter", + "id": "3", + "type": "filter" + }, + "errors": {}, + "id": "3", + "type": "filter", + "warnings": { + "config": [ + "Reconfigure invalid datapath." + ] + }, + "x": 60, + "y": 328 + }, + "4": { + "data": { + "action": "list users", + "actionType": "investigate", + "advanced": { + "customName": "get mailboxes", + "customNameId": 0, + "description": "Required step in order to search \"All\" of a Gsuite organization. This receives a list of mailboxes that are passed to the next action.", + "join": [], + "note": "Gets a list of mailboxes from GMail to search" + }, + "connector": "G Suite for GMail", + "connectorConfigs": [ + "g_suite_for_gmail" + ], + "connectorId": "9c73f233-2c4a-406a-855e-41d8d2497d0e", + "connectorVersion": "v1", + "functionId": 1, + "functionName": "get_mailboxes", + "id": "4", + "parameters": { + "max_items": "500", + "page_token": "" + }, + "requiredParameters": [], + "type": "action" + }, + "errors": {}, + "id": "4", + "type": "action", + "warnings": {}, + "x": 0, + "y": 508 + }, + "5": { + "data": { + "action": "run query", + "actionType": "investigate", + "advanced": { + "customName": "search mailboxes", + "customNameId": 0, + "join": [], + "note": "Searches mailboxes returned by the previous action for messages with an internet message ID matching the input" + }, + "connector": "G Suite for GMail", + "connectorConfigs": [ + "g_suite_for_gmail" + ], + "connectorId": "9c73f233-2c4a-406a-855e-41d8d2497d0e", + "connectorVersion": "v1", + "functionId": 1, + "functionName": "search_mailboxes", + "id": "5", + "parameters": { + "email": "get_mailboxes:action_result.data.*.emails.*.address", + "internet_message_id": "filtered-data:artifact_filter:condition_1:playbook_input:message_id", + "label": "Inbox", + "max_results": 100, + "query": "is:unread" + }, + "requiredParameters": [ + { + "data_type": "string", + "field": "email" + }, + { + "data_type": "string", + "default": "Inbox", + "field": "label" + }, + { + "data_type": "numeric", + "default": 100, + "field": "max_results" + } + ], + "type": "action" + }, + "errors": {}, + "id": "5", + "type": "action", + "warnings": {}, + "x": 0, + "y": 620 + }, + "6": { + "data": { + "advanced": { + "customName": "format message report", + "customNameId": 0, + "join": [], + "note": "Format the markdown table summary of this playbook execution" + }, + "functionId": 1, + "functionName": "format_message_report", + "id": "6", + "parameters": [ + "filtered-data:results_filter:condition_1:search_mailboxes:action_result.parameter.internet_message_id", + "filtered-data:results_filter:condition_1:search_mailboxes:action_result.data.*.delivered_to", + "filtered-data:results_filter:condition_1:search_mailboxes:action_result.data.*.to", + "filtered-data:results_filter:condition_1:search_mailboxes:action_result.data.*.subject", + "filtered-data:results_filter:condition_1:search_mailboxes:action_result.data.*.from" + ], + "template": "SOAR searched for occurrences of `{0}` within your environment using GSuite for GMail. The table below shows a summary of the information gathered.\n\n| Recipient | Addressed To | Subject | Sender |\n%%\n| {1} | {2} | {3} | {4} |\n%%\n", + "type": "format" + }, + "errors": {}, + "id": "6", + "type": "format", + "warnings": {}, + "x": 0, + "y": 920 + }, + "7": { + "data": { + "advanced": { + "customName": "build message output", + "customNameId": 0, + "description": "Logic regarding observable construction goes here", + "join": [], + "note": "Format the observable output object produced by this playbook" + }, + "functionId": 1, + "functionName": "build_message_output", + "id": "7", + "inputParameters": [ + "filtered-data:results_filter:condition_1:search_mailboxes:action_result.parameter.internet_message_id", + "filtered-data:results_filter:condition_1:search_mailboxes:action_result.data.*.delivered_to", + "filtered-data:results_filter:condition_1:search_mailboxes:action_result.data.*.to", + "filtered-data:results_filter:condition_1:search_mailboxes:action_result.data.*.subject", + "filtered-data:results_filter:condition_1:search_mailboxes:action_result.data.*.from" + ], + "outputVariables": [ + "observable_array" + ], + "type": "code" + }, + "errors": {}, + "id": "7", + "type": "code", + "userCode": "\n # Variable renaming for convenince\n messageID = filtered_result_0_parameter_internet_message_id\n recipients = filtered_result_0_data___delivered_to\n addressees = filtered_result_0_data___to\n subjects = filtered_result_0_data___subject\n senders = filtered_result_0_data___from\n \n build_message_output__observable_array = []\n recordList = []\n \n # construct iterables for records\n for recipient, addressee, subject, sender in zip(recipients, addressees, subjects, senders):\n record = {\n \"recipient\": recipient,\n \"addressee\": addressee,\n \"subject\": subject,\n \"sender\": sender\n }\n recordList.append(record)\n \n # Create observable body\n observable = {\n \"value\": messageID,\n \"type\": \"internet message ID\",\n \"count\": len(recordList),\n \"source\": \"GSuite for GMail\",\n \"message_identifier_activity\": recordList\n }\n \n build_message_output__observable_array.append(observable)\n \n\n", + "warnings": {}, + "x": 0, + "y": 1040 + }, + "9": { + "data": { + "advanced": { + "customName": "results filter", + "customNameId": 0, + "join": [] + }, + "conditions": [ + { + "comparisons": [ + { + "conditionIndex": 0, + "op": "!=", + "param": "search_mailboxes:action_result.summary.{summaryVar}", + "value": "0" + } + ], + "conditionIndex": 0, + "customName": "Results found", + "logic": "and" + } + ], + "functionId": 2, + "functionName": "results_filter", + "id": "9", + "type": "filter" + }, + "errors": {}, + "id": "9", + "type": "filter", + "warnings": {}, + "x": 60, + "y": 720 + } + }, + "notes": "Inputs: internet message id\nInteractions: GSuite For GMail\nActions: get users, run query\nOutputs: observable, markdown report" + }, + "input_spec": [ + { + "contains": [ + "internet message id" + ], + "description": "An Internet Message ID to look for within a GMail environment", + "name": "message_id" + } + ], + "output_spec": [ + { + "contains": [], + "datapaths": [ + "build_message_output:custom_function:observable_array" + ], + "deduplicate": false, + "description": "An array of Observable objects ", + "metadata": {}, + "name": "observable" + }, + { + "contains": [], + "datapaths": [ + "format_message_report:formatted_data" + ], + "deduplicate": false, + "description": "An array of markdown reports", + "metadata": {}, + "name": "markdown_report" + } + ], + "playbook_type": "data", + "python_version": "3", + "schema": "5.0.9", + "version": "6.0.0.114895" + }, + "create_time": "2023-05-15T00:27:51.969603+00:00", + "draft_mode": false, + "labels": [ + "*" + ], + "tags": [ + "message_identifier_activity", + "internet_message_id", + "gsuite_for_gmail" + ] +} \ No newline at end of file diff --git a/playbooks/G_Suite_for_GMail_Message_Identifier_Activity_Analysis.png b/playbooks/G_Suite_for_GMail_Message_Identifier_Activity_Analysis.png new file mode 100644 index 0000000000000000000000000000000000000000..5cc55377c7e335baee156164172eb669414be9ad GIT binary patch literal 57498 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
!AHLQuDdo?80jhYuKI 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 literal 0 HcmV?d00001 diff --git a/playbooks/G_Suite_for_GMail_Message_Identifier_Activity_Analysis.py b/playbooks/G_Suite_for_GMail_Message_Identifier_Activity_Analysis.py new file mode 100644 index 0000000000..5fc5714ed8 --- /dev/null +++ b/playbooks/G_Suite_for_GMail_Message_Identifier_Activity_Analysis.py @@ -0,0 +1,268 @@ +""" +Accepts an internet message id, and asks Gmail for a list of mailboxes to search, and then searches each one to look for records that have a matching internet message id. It then produces a normalized output and summary table. +""" + + +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_check' block + artifact_check(container=container) + + return + +@phantom.playbook_block() +def artifact_check(action=None, success=None, container=None, results=None, handle=None, filtered_artifacts=None, filtered_results=None, custom_function=None, **kwargs): + phantom.debug("artifact_check() called") + + # 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: + artifact_filter(action=action, success=success, container=container, results=results, handle=handle) + return + + return + + +@phantom.playbook_block() +def artifact_filter(action=None, success=None, container=None, results=None, handle=None, filtered_artifacts=None, filtered_results=None, custom_function=None, **kwargs): + phantom.debug("artifact_filter() called") + + # collect filtered artifact ids and results for 'if' condition 1 + matched_artifacts_1, matched_results_1 = phantom.condition( + container=container, + conditions=[ + ["playbook_input:message_id", "!=", None] + ], + name="artifact_filter:condition_1") + + # call connected blocks if filtered artifacts or results + if matched_artifacts_1 or matched_results_1: + get_mailboxes(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 get_mailboxes(action=None, success=None, container=None, results=None, handle=None, filtered_artifacts=None, filtered_results=None, custom_function=None, **kwargs): + phantom.debug("get_mailboxes() called") + + # phantom.debug('Action: {0} {1}'.format(action['name'], ('SUCCEEDED' if success else 'FAILED'))) + + ################################################################################ + # Required step in order to search "All" of a Gsuite organization. This receives + # a list of mailboxes that are passed to the next action. + ################################################################################ + + parameters = [] + + parameters.append({ + "max_items": 500, + "page_token": "", + }) + + ################################################################################ + ## Custom Code Start + ################################################################################ + + # Write your custom code here... + + ################################################################################ + ## Custom Code End + ################################################################################ + + phantom.act("list users", parameters=parameters, name="get_mailboxes", assets=["g_suite_for_gmail"], callback=search_mailboxes) + + return + + +@phantom.playbook_block() +def search_mailboxes(action=None, success=None, container=None, results=None, handle=None, filtered_artifacts=None, filtered_results=None, custom_function=None, **kwargs): + phantom.debug("search_mailboxes() called") + + # phantom.debug('Action: {0} {1}'.format(action['name'], ('SUCCEEDED' if success else 'FAILED'))) + + get_mailboxes_result_data = phantom.collect2(container=container, datapath=["get_mailboxes:action_result.data.*.emails.*.address","get_mailboxes:action_result.parameter.context.artifact_id"], action_results=results) + filtered_input_0_message_id = phantom.collect2(container=container, datapath=["filtered-data:artifact_filter:condition_1:playbook_input:message_id"]) + + parameters = [] + + # build parameters list for 'search_mailboxes' call + for get_mailboxes_result_item in get_mailboxes_result_data: + for filtered_input_0_message_id_item in filtered_input_0_message_id: + if get_mailboxes_result_item[0] is not None: + parameters.append({ + "email": get_mailboxes_result_item[0], + "label": "Inbox", + "query": "is:unread", + "max_results": 100, + "internet_message_id": filtered_input_0_message_id_item[0], + "context": {'artifact_id': get_mailboxes_result_item[1]}, + }) + + ################################################################################ + ## Custom Code Start + ################################################################################ + + # Write your custom code here... + + ################################################################################ + ## Custom Code End + ################################################################################ + + phantom.act("run query", parameters=parameters, name="search_mailboxes", assets=["g_suite_for_gmail"], callback=results_filter) + + return + + +@phantom.playbook_block() +def format_message_report(action=None, success=None, container=None, results=None, handle=None, filtered_artifacts=None, filtered_results=None, custom_function=None, **kwargs): + phantom.debug("format_message_report() called") + + template = """SOAR searched for occurrences of `{0}` within your environment using GSuite for GMail. The table below shows a summary of the information gathered.\n\n| Recipient | Addressed To | Subject | Sender |\n%%\n| {1} | {2} | {3} | {4} |\n%%\n""" + + # parameter list for template variable replacement + parameters = [ + "filtered-data:results_filter:condition_1:search_mailboxes:action_result.parameter.internet_message_id", + "filtered-data:results_filter:condition_1:search_mailboxes:action_result.data.*.delivered_to", + "filtered-data:results_filter:condition_1:search_mailboxes:action_result.data.*.to", + "filtered-data:results_filter:condition_1:search_mailboxes:action_result.data.*.subject", + "filtered-data:results_filter:condition_1:search_mailboxes:action_result.data.*.from" + ] + + ################################################################################ + ## Custom Code Start + ################################################################################ + + # Write your custom code here... + + ################################################################################ + ## Custom Code End + ################################################################################ + + phantom.format(container=container, template=template, parameters=parameters, name="format_message_report") + + build_message_output(container=container) + + return + + +@phantom.playbook_block() +def build_message_output(action=None, success=None, container=None, results=None, handle=None, filtered_artifacts=None, filtered_results=None, custom_function=None, **kwargs): + phantom.debug("build_message_output() called") + + ################################################################################ + # Logic regarding observable construction goes here + ################################################################################ + + filtered_result_0_data_results_filter = phantom.collect2(container=container, datapath=["filtered-data:results_filter:condition_1:search_mailboxes:action_result.parameter.internet_message_id","filtered-data:results_filter:condition_1:search_mailboxes:action_result.data.*.delivered_to","filtered-data:results_filter:condition_1:search_mailboxes:action_result.data.*.to","filtered-data:results_filter:condition_1:search_mailboxes:action_result.data.*.subject","filtered-data:results_filter:condition_1:search_mailboxes:action_result.data.*.from"]) + + filtered_result_0_parameter_internet_message_id = [item[0] for item in filtered_result_0_data_results_filter] + filtered_result_0_data___delivered_to = [item[1] for item in filtered_result_0_data_results_filter] + filtered_result_0_data___to = [item[2] for item in filtered_result_0_data_results_filter] + filtered_result_0_data___subject = [item[3] for item in filtered_result_0_data_results_filter] + filtered_result_0_data___from = [item[4] for item in filtered_result_0_data_results_filter] + + build_message_output__observable_array = None + + ################################################################################ + ## Custom Code Start + ################################################################################ + + # Variable renaming for convenince + messageID = filtered_result_0_parameter_internet_message_id + recipients = filtered_result_0_data___delivered_to + addressees = filtered_result_0_data___to + subjects = filtered_result_0_data___subject + senders = filtered_result_0_data___from + + build_message_output__observable_array = [] + recordList = [] + + # construct iterables for records + for recipient, addressee, subject, sender in zip(recipients, addressees, subjects, senders): + record = { + "recipient": recipient, + "addressee": addressee, + "subject": subject, + "sender": sender + } + recordList.append(record) + + # Create observable body + observable = { + "value": messageID, + "type": "internet message ID", + "count": len(recordList), + "source": "GSuite for GMail", + "message_identifier_activity": recordList + } + + build_message_output__observable_array.append(observable) + + + ################################################################################ + ## Custom Code End + ################################################################################ + + phantom.save_run_data(key="build_message_output:observable_array", value=json.dumps(build_message_output__observable_array)) + + return + + +@phantom.playbook_block() +def results_filter(action=None, success=None, container=None, results=None, handle=None, filtered_artifacts=None, filtered_results=None, custom_function=None, **kwargs): + phantom.debug("results_filter() called") + + # collect filtered artifact ids and results for 'if' condition 1 + matched_artifacts_1, matched_results_1 = phantom.condition( + container=container, + conditions=[ + ["search_mailboxes:action_result.summary.{summaryVar}", "!=", 0] + ], + name="results_filter:condition_1") + + # call connected blocks if filtered artifacts or results + if matched_artifacts_1 or matched_results_1: + format_message_report(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 on_finish(container, summary): + phantom.debug("on_finish() called") + + format_message_report = phantom.get_format_data(name="format_message_report") + build_message_output__observable_array = json.loads(_ if (_ := phantom.get_run_data(key="build_message_output:observable_array")) != "" else "null") # pylint: disable=used-before-assignment + + output = { + "observable": build_message_output__observable_array, + "markdown_report": format_message_report, + } + + ################################################################################ + ## Custom Code Start + ################################################################################ + + # Write your custom code here... + + ################################################################################ + ## Custom Code End + ################################################################################ + + phantom.save_playbook_output_data(output=output) + + return \ No newline at end of file diff --git a/playbooks/G_Suite_for_GMail_Message_Identifier_Activity_Analysis.yml b/playbooks/G_Suite_for_GMail_Message_Identifier_Activity_Analysis.yml new file mode 100644 index 0000000000..d4277770c5 --- /dev/null +++ b/playbooks/G_Suite_for_GMail_Message_Identifier_Activity_Analysis.yml @@ -0,0 +1,22 @@ +name: G Suite for GMail Message Identifier Activity Analysis +id: 5299d6dd-e9c4-4afa-b051-928ace0ff816d +version: 1 +date: '2023-05-12' +author: Lou Stella, Splunk +type: Investigation +description: "Accepts an internet message id, and asks Gmail for a list of mailboxes to search, and then searches each one to look for records that have a matching internet message id. It then produces a normalized output and summary table." +playbook: G_Suite_for_GMail_Message_Identifier_Acitivity_Analysis +how_to_implement: This input playbook requires the G Suite for GMail connector to be configured. It is designed to work in environments that posess a maximum of 500 mailboxes at this time, due to a limitation in the G Suite for GMail connector. +references: [] +app_list: + - G Suite for GMail +tags: + platform_tags: + - message_identifier_activity + - internet_message_id + - gsuite_for_gmail + playbook_type: Input + vpe_type: Modern + playbook_fields: [] + product: + - Splunk SOAR From 7adde2c3fc4d418516010ba0e335a6a8c08d43e5 Mon Sep 17 00:00:00 2001 From: Lou Stella Date: Tue, 23 May 2023 10:11:01 -0500 Subject: [PATCH 3/6] Updated to remove non-results --- ..._Message_Identifier_Activity_Analysis.json | 106 ++++++------------ ...l_Message_Identifier_Activity_Analysis.png | Bin 57498 -> 58344 bytes ...il_Message_Identifier_Activity_Analysis.py | 38 ++----- 3 files changed, 46 insertions(+), 98 deletions(-) diff --git a/playbooks/G_Suite_for_GMail_Message_Identifier_Activity_Analysis.json b/playbooks/G_Suite_for_GMail_Message_Identifier_Activity_Analysis.json index 7e05390179..dfe5b38e4a 100644 --- a/playbooks/G_Suite_for_GMail_Message_Identifier_Activity_Analysis.json +++ b/playbooks/G_Suite_for_GMail_Message_Identifier_Activity_Analysis.json @@ -6,25 +6,6 @@ "data": { "description": "Accepts an internet message id, and asks Gmail for a list of mailboxes to search, and then searches each one to look for records that have a matching internet message id. It then produces a normalized output and summary table.", "edges": [ - { - "id": "port_0_to_port_2", - "sourceNode": "0", - "sourcePort": "0_out", - "targetNode": "2", - "targetPort": "2_in" - }, - { - "conditions": [ - { - "index": 0 - } - ], - "id": "port_2_to_port_3", - "sourceNode": "2", - "sourcePort": "2_out", - "targetNode": "3", - "targetPort": "3_in" - }, { "conditions": [ { @@ -65,6 +46,13 @@ "targetNode": "9", "targetPort": "9_in" }, + { + "id": "port_0_to_port_3", + "sourceNode": "0", + "sourcePort": "0_out", + "targetNode": "3", + "targetPort": "3_in" + }, { "conditions": [ { @@ -78,7 +66,7 @@ "targetPort": "6_in" } ], - "hash": "8fd552239267a9cf26722affc06b22927bb5db1a", + "hash": "4c7de1b968ebd883893943258b5cb5d7d415341f", "nodes": { "0": { "data": { @@ -93,8 +81,8 @@ "id": "0", "type": "start", "warnings": {}, - "x": 19.999999999999986, - "y": -6.394884621840902e-14 + "x": 20, + "y": 0 }, "1": { "data": { @@ -109,51 +97,16 @@ "id": "1", "type": "end", "warnings": {}, - "x": 19.999999999999986, - "y": 1240 - }, - "2": { - "data": { - "advanced": { - "customName": "artifact check", - "customNameId": 0, - "join": [] - }, - "conditions": [ - { - "comparisons": [ - { - "conditionIndex": 0, - "op": "!=", - "param": "artifact:*.id", - "value": "None" - } - ], - "conditionIndex": 0, - "customName": "Artifact Exists", - "display": "If", - "logic": "and", - "type": "if" - } - ], - "functionId": 1, - "functionName": "artifact_check", - "id": "2", - "type": "decision" - }, - "errors": {}, - "id": "2", - "type": "decision", - "warnings": {}, - "x": 80, - "y": 148 + "x": 20, + "y": 1220 }, "3": { "data": { "advanced": { "customName": "artifact filter", "customNameId": 0, - "join": [] + "join": [], + "note": "Ensure we have an input" }, "conditions": [ { @@ -184,7 +137,7 @@ ] }, "x": 60, - "y": 328 + "y": 148 }, "4": { "data": { @@ -218,7 +171,7 @@ "type": "action", "warnings": {}, "x": 0, - "y": 508 + "y": 328 }, "5": { "data": { @@ -244,7 +197,7 @@ "internet_message_id": "filtered-data:artifact_filter:condition_1:playbook_input:message_id", "label": "Inbox", "max_results": 100, - "query": "is:unread" + "query": "" }, "requiredParameters": [ { @@ -269,7 +222,7 @@ "type": "action", "warnings": {}, "x": 0, - "y": 620 + "y": 506 }, "6": { "data": { @@ -295,9 +248,10 @@ "errors": {}, "id": "6", "type": "format", + "userCode": " \n \n", "warnings": {}, "x": 0, - "y": 920 + "y": 864 }, "7": { "data": { @@ -329,22 +283,30 @@ "userCode": "\n # Variable renaming for convenince\n messageID = filtered_result_0_parameter_internet_message_id\n recipients = filtered_result_0_data___delivered_to\n addressees = filtered_result_0_data___to\n subjects = filtered_result_0_data___subject\n senders = filtered_result_0_data___from\n \n build_message_output__observable_array = []\n recordList = []\n \n # construct iterables for records\n for recipient, addressee, subject, sender in zip(recipients, addressees, subjects, senders):\n record = {\n \"recipient\": recipient,\n \"addressee\": addressee,\n \"subject\": subject,\n \"sender\": sender\n }\n recordList.append(record)\n \n # Create observable body\n observable = {\n \"value\": messageID,\n \"type\": \"internet message ID\",\n \"count\": len(recordList),\n \"source\": \"GSuite for GMail\",\n \"message_identifier_activity\": recordList\n }\n \n build_message_output__observable_array.append(observable)\n \n\n", "warnings": {}, "x": 0, - "y": 1040 + "y": 1042 }, "9": { "data": { "advanced": { "customName": "results filter", "customNameId": 0, - "join": [] + "description": "Filter results from mailbox search", + "join": [], + "note": "Remove mailboxes that couldn't be searched or where no results were found" }, "conditions": [ { "comparisons": [ { "conditionIndex": 0, - "op": "!=", - "param": "search_mailboxes:action_result.summary.{summaryVar}", + "op": "==", + "param": "search_mailboxes:action_result.status", + "value": "success" + }, + { + "conditionIndex": 0, + "op": ">", + "param": "search_mailboxes:action_result.summary.total_messages_returned", "value": "0" } ], @@ -363,7 +325,7 @@ "type": "filter", "warnings": {}, "x": 60, - "y": 720 + "y": 684 } }, "notes": "Inputs: internet message id\nInteractions: GSuite For GMail\nActions: get users, run query\nOutputs: observable, markdown report" @@ -404,7 +366,7 @@ "schema": "5.0.9", "version": "6.0.0.114895" }, - "create_time": "2023-05-15T00:27:51.969603+00:00", + "create_time": "2023-05-23T15:05:26.081875+00:00", "draft_mode": false, "labels": [ "*" diff --git a/playbooks/G_Suite_for_GMail_Message_Identifier_Activity_Analysis.png b/playbooks/G_Suite_for_GMail_Message_Identifier_Activity_Analysis.png index 5cc55377c7e335baee156164172eb669414be9ad..6b61340e0a8e5f58eee99e014ceca4d0226f8b74 100644 GIT binary patch literal 58344 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 t5#0XP+!EriCKo^?w)&7xlj7#tN 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 VQe~+NQzyV58A-*vS+@#h1}R8O3Ia;EbiDh3 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
!AHLQuDdo?80jhYuKI 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 diff --git a/playbooks/G_Suite_for_GMail_Message_Identifier_Activity_Analysis.py b/playbooks/G_Suite_for_GMail_Message_Identifier_Activity_Analysis.py index 5fc5714ed8..9294b5688f 100644 --- a/playbooks/G_Suite_for_GMail_Message_Identifier_Activity_Analysis.py +++ b/playbooks/G_Suite_for_GMail_Message_Identifier_Activity_Analysis.py @@ -12,30 +12,11 @@ from datetime import datetime, timedelta def on_start(container): phantom.debug('on_start() called') - # call 'artifact_check' block - artifact_check(container=container) + # call 'artifact_filter' block + artifact_filter(container=container) return -@phantom.playbook_block() -def artifact_check(action=None, success=None, container=None, results=None, handle=None, filtered_artifacts=None, filtered_results=None, custom_function=None, **kwargs): - phantom.debug("artifact_check() called") - - # 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: - artifact_filter(action=action, success=success, container=container, results=results, handle=handle) - return - - return - - @phantom.playbook_block() def artifact_filter(action=None, success=None, container=None, results=None, handle=None, filtered_artifacts=None, filtered_results=None, custom_function=None, **kwargs): phantom.debug("artifact_filter() called") @@ -106,7 +87,7 @@ def search_mailboxes(action=None, success=None, container=None, results=None, ha parameters.append({ "email": get_mailboxes_result_item[0], "label": "Inbox", - "query": "is:unread", + "query": "", "max_results": 100, "internet_message_id": filtered_input_0_message_id_item[0], "context": {'artifact_id': get_mailboxes_result_item[1]}, @@ -145,9 +126,8 @@ def format_message_report(action=None, success=None, container=None, results=Non ################################################################################ ## Custom Code Start ################################################################################ - - # Write your custom code here... - + + ################################################################################ ## Custom Code End ################################################################################ @@ -226,11 +206,17 @@ def build_message_output(action=None, success=None, container=None, results=None def results_filter(action=None, success=None, container=None, results=None, handle=None, filtered_artifacts=None, filtered_results=None, custom_function=None, **kwargs): phantom.debug("results_filter() called") + ################################################################################ + # Filter results from mailbox search + ################################################################################ + # collect filtered artifact ids and results for 'if' condition 1 matched_artifacts_1, matched_results_1 = phantom.condition( container=container, + logical_operator="and", conditions=[ - ["search_mailboxes:action_result.summary.{summaryVar}", "!=", 0] + ["search_mailboxes:action_result.status", "==", "success"], + ["search_mailboxes:action_result.summary.total_messages_returned", ">", 0] ], name="results_filter:condition_1") From 8d0f075c740af46486645bb161276dac94a3ed12 Mon Sep 17 00:00:00 2001 From: Lou Stella Date: Fri, 16 Jun 2023 10:51:09 -0500 Subject: [PATCH 4/6] Addressed review --- ..._Message_Identifier_Activity_Analysis.json | 35 ++++++------- ...il_Message_Identifier_Activity_Analysis.py | 50 ++++++++++--------- 2 files changed, 45 insertions(+), 40 deletions(-) diff --git a/playbooks/G_Suite_for_GMail_Message_Identifier_Activity_Analysis.json b/playbooks/G_Suite_for_GMail_Message_Identifier_Activity_Analysis.json index dfe5b38e4a..eddde7dc1b 100644 --- a/playbooks/G_Suite_for_GMail_Message_Identifier_Activity_Analysis.json +++ b/playbooks/G_Suite_for_GMail_Message_Identifier_Activity_Analysis.json @@ -4,7 +4,7 @@ "category": "Message Identifier Activity Analysis", "coa": { "data": { - "description": "Accepts an internet message id, and asks Gmail for a list of mailboxes to search, and then searches each one to look for records that have a matching internet message id. It then produces a normalized output and summary table.", + "description": "Accepts an internet message id, and asks Gmail for a list of mailboxes to search, and then searches each one to look for records that have a matching internet message id. It then produces a normalized output and summary table.\n\nThis may not work in the intended fashion if your organization has more than 500 mailboxes.\n\nRef: D3-IAA: https://d3fend.mitre.org/technique/d3f:IdentifierActivityAnalysis/", "edges": [ { "conditions": [ @@ -66,7 +66,7 @@ "targetPort": "6_in" } ], - "hash": "4c7de1b968ebd883893943258b5cb5d7d415341f", + "hash": "c253dd1339538806313a6f387f6df7a39d537dff", "nodes": { "0": { "data": { @@ -81,8 +81,8 @@ "id": "0", "type": "start", "warnings": {}, - "x": 20, - "y": 0 + "x": 19.999999999999986, + "y": -1.2789769243681803e-13 }, "1": { "data": { @@ -97,7 +97,7 @@ "id": "1", "type": "end", "warnings": {}, - "x": 20, + "x": 19.999999999999986, "y": 1220 }, "3": { @@ -105,6 +105,8 @@ "advanced": { "customName": "artifact filter", "customNameId": 0, + "delimiter": ",", + "delimiter_enabled": true, "join": [], "note": "Ensure we have an input" }, @@ -131,11 +133,7 @@ "errors": {}, "id": "3", "type": "filter", - "warnings": { - "config": [ - "Reconfigure invalid datapath." - ] - }, + "warnings": {}, "x": 60, "y": 148 }, @@ -242,7 +240,7 @@ "filtered-data:results_filter:condition_1:search_mailboxes:action_result.data.*.subject", "filtered-data:results_filter:condition_1:search_mailboxes:action_result.data.*.from" ], - "template": "SOAR searched for occurrences of `{0}` within your environment using GSuite for GMail. The table below shows a summary of the information gathered.\n\n| Recipient | Addressed To | Subject | Sender |\n%%\n| {1} | {2} | {3} | {4} |\n%%\n", + "template": "SOAR searched for occurrences of `{0}` within your environment using GSuite for GMail. The table below shows a summary of the information gathered.\n\n| Recipient | Addressed To | Subject | Sender |\n| --- | --- | --- | --- |\n%%\n| {1} | {2} | {3} | {4} |\n%%\n", "type": "format" }, "errors": {}, @@ -280,16 +278,18 @@ "errors": {}, "id": "7", "type": "code", - "userCode": "\n # Variable renaming for convenince\n messageID = filtered_result_0_parameter_internet_message_id\n recipients = filtered_result_0_data___delivered_to\n addressees = filtered_result_0_data___to\n subjects = filtered_result_0_data___subject\n senders = filtered_result_0_data___from\n \n build_message_output__observable_array = []\n recordList = []\n \n # construct iterables for records\n for recipient, addressee, subject, sender in zip(recipients, addressees, subjects, senders):\n record = {\n \"recipient\": recipient,\n \"addressee\": addressee,\n \"subject\": subject,\n \"sender\": sender\n }\n recordList.append(record)\n \n # Create observable body\n observable = {\n \"value\": messageID,\n \"type\": \"internet message ID\",\n \"count\": len(recordList),\n \"source\": \"GSuite for GMail\",\n \"message_identifier_activity\": recordList\n }\n \n build_message_output__observable_array.append(observable)\n \n\n", + "userCode": "\n # Variable renaming for convenince\n messageID = filtered_result_0_parameter_internet_message_id\n recipients = filtered_result_0_data___delivered_to\n addressees = filtered_result_0_data___to\n subjects = filtered_result_0_data___subject\n senders = filtered_result_0_data___from\n \n build_message_output__observable_array = []\n recordList = []\n \n for message_id in messageID:\n \n # construct iterables for records\n for recipient, addressee, subject, sender in zip(recipients, addressees, subjects, senders):\n record = {\n \"recipient\": recipient,\n \"addressee\": addressee,\n \"subject\": subject,\n \"sender\": sender\n }\n recordList.append(record)\n \n # Create observable body\n observable = {\n \"value\": message_id,\n \"type\": \"internet message ID\",\n \"count\": len(recordList),\n \"source\": \"GSuite for GMail\",\n \"message_identifier_activity\": recordList\n }\n \n build_message_output__observable_array.append(observable)\n \n\n", "warnings": {}, "x": 0, - "y": 1042 + "y": 1040 }, "9": { "data": { "advanced": { "customName": "results filter", "customNameId": 0, + "delimiter": ",", + "delimiter_enabled": true, "description": "Filter results from mailbox search", "join": [], "note": "Remove mailboxes that couldn't be searched or where no results were found" @@ -363,10 +363,10 @@ ], "playbook_type": "data", "python_version": "3", - "schema": "5.0.9", - "version": "6.0.0.114895" + "schema": "5.0.10", + "version": "6.0.1.123902" }, - "create_time": "2023-05-23T15:05:26.081875+00:00", + "create_time": "2023-06-16T15:48:09.633490+00:00", "draft_mode": false, "labels": [ "*" @@ -374,6 +374,7 @@ "tags": [ "message_identifier_activity", "internet_message_id", - "gsuite_for_gmail" + "gsuite_for_gmail", + "D3-IAA" ] } \ No newline at end of file diff --git a/playbooks/G_Suite_for_GMail_Message_Identifier_Activity_Analysis.py b/playbooks/G_Suite_for_GMail_Message_Identifier_Activity_Analysis.py index 9294b5688f..c8b869c2d0 100644 --- a/playbooks/G_Suite_for_GMail_Message_Identifier_Activity_Analysis.py +++ b/playbooks/G_Suite_for_GMail_Message_Identifier_Activity_Analysis.py @@ -1,5 +1,5 @@ """ -Accepts an internet message id, and asks Gmail for a list of mailboxes to search, and then searches each one to look for records that have a matching internet message id. It then produces a normalized output and summary table. +Accepts an internet message id, and asks Gmail for a list of mailboxes to search, and then searches each one to look for records that have a matching internet message id. It then produces a normalized output and summary table.\n\nThis may not work in the intended fashion if your organization has more than 500 mailboxes.\n\nRef: D3-IAA: https://d3fend.mitre.org/technique/d3f:IdentifierActivityAnalysis/ """ @@ -27,7 +27,8 @@ def artifact_filter(action=None, success=None, container=None, results=None, han conditions=[ ["playbook_input:message_id", "!=", None] ], - name="artifact_filter:condition_1") + name="artifact_filter:condition_1", + delimiter=",") # call connected blocks if filtered artifacts or results if matched_artifacts_1 or matched_results_1: @@ -112,7 +113,7 @@ def search_mailboxes(action=None, success=None, container=None, results=None, ha def format_message_report(action=None, success=None, container=None, results=None, handle=None, filtered_artifacts=None, filtered_results=None, custom_function=None, **kwargs): phantom.debug("format_message_report() called") - template = """SOAR searched for occurrences of `{0}` within your environment using GSuite for GMail. The table below shows a summary of the information gathered.\n\n| Recipient | Addressed To | Subject | Sender |\n%%\n| {1} | {2} | {3} | {4} |\n%%\n""" + template = """SOAR searched for occurrences of `{0}` within your environment using GSuite for GMail. The table below shows a summary of the information gathered.\n\n| Recipient | Addressed To | Subject | Sender |\n| --- | --- | --- | --- |\n%%\n| {1} | {2} | {3} | {4} |\n%%\n""" # parameter list for template variable replacement parameters = [ @@ -171,26 +172,28 @@ def build_message_output(action=None, success=None, container=None, results=None build_message_output__observable_array = [] recordList = [] - # construct iterables for records - for recipient, addressee, subject, sender in zip(recipients, addressees, subjects, senders): - record = { - "recipient": recipient, - "addressee": addressee, - "subject": subject, - "sender": sender - } - recordList.append(record) - - # Create observable body - observable = { - "value": messageID, - "type": "internet message ID", - "count": len(recordList), - "source": "GSuite for GMail", - "message_identifier_activity": recordList - } + for message_id in messageID: - build_message_output__observable_array.append(observable) + # construct iterables for records + for recipient, addressee, subject, sender in zip(recipients, addressees, subjects, senders): + record = { + "recipient": recipient, + "addressee": addressee, + "subject": subject, + "sender": sender + } + recordList.append(record) + + # Create observable body + observable = { + "value": message_id, + "type": "internet message ID", + "count": len(recordList), + "source": "GSuite for GMail", + "message_identifier_activity": recordList + } + + build_message_output__observable_array.append(observable) ################################################################################ @@ -218,7 +221,8 @@ def results_filter(action=None, success=None, container=None, results=None, hand ["search_mailboxes:action_result.status", "==", "success"], ["search_mailboxes:action_result.summary.total_messages_returned", ">", 0] ], - name="results_filter:condition_1") + name="results_filter:condition_1", + delimiter=",") # call connected blocks if filtered artifacts or results if matched_artifacts_1 or matched_results_1: From b55a0281ea4e2b2d9aeaa579492039a8d350dd79 Mon Sep 17 00:00:00 2001 From: P4T12ICK Date: Wed, 21 Jun 2023 11:33:05 +0200 Subject: [PATCH 5/6] Improved the data paths --- .../Zscaler_Outbound_Traffic_Filtering.json | 34 ++++++++----------- .../Zscaler_Outbound_Traffic_Filtering.py | 21 +++++++----- 2 files changed, 27 insertions(+), 28 deletions(-) mode change 100755 => 100644 playbooks/Zscaler_Outbound_Traffic_Filtering.json mode change 100755 => 100644 playbooks/Zscaler_Outbound_Traffic_Filtering.py diff --git a/playbooks/Zscaler_Outbound_Traffic_Filtering.json b/playbooks/Zscaler_Outbound_Traffic_Filtering.json old mode 100755 new mode 100644 index f77a7624f5..04a5c3c26f --- a/playbooks/Zscaler_Outbound_Traffic_Filtering.json +++ b/playbooks/Zscaler_Outbound_Traffic_Filtering.json @@ -52,7 +52,7 @@ "targetPort": "7_in" } ], - "hash": "d00eda8b809a9b54fd2a3df75a64dc1538169f7c", + "hash": "ddce2d54e4936120ec7acc772b88f91fab41ec55", "nodes": { "0": { "data": { @@ -67,8 +67,8 @@ "id": "0", "type": "start", "warnings": {}, - "x": 20, - "y": 0 + "x": 19.999999999999986, + "y": -6.394884621840902e-14 }, "1": { "data": { @@ -91,6 +91,8 @@ "advanced": { "customName": "url input filter", "customNameId": 0, + "delimiter": ",", + "delimiter_enabled": true, "description": "Determine branches based on provided inputs.", "join": [], "note": "Determine branches based on provided inputs." @@ -118,11 +120,7 @@ "errors": {}, "id": "4", "type": "filter", - "warnings": { - "config": [ - "Reconfigure invalid datapath." - ] - }, + "warnings": {}, "x": 60, "y": 148 }, @@ -147,7 +145,7 @@ "functionName": "block_url", "id": "6", "parameters": { - "url": "playbook_input:input_url" + "url": "filtered-data:url_input_filter:condition_1:playbook_input:input_url" }, "requiredParameters": [ { @@ -160,11 +158,7 @@ "errors": {}, "id": "6", "type": "action", - "warnings": { - "config": [ - "Reconfigure invalid datapath." - ] - }, + "warnings": {}, "x": 0, "y": 328 }, @@ -184,7 +178,7 @@ "block_url:action_result.summary", "block_url:action_result.status", "block_url:action_result.message", - "block_url:action_result.parameter.url" + "filtered-data:url_input_filter:condition_1:playbook_input:input_url" ], "outputVariables": [ "observable_array" @@ -194,7 +188,7 @@ "errors": {}, "id": "7", "type": "code", - "userCode": "\n build_observable__observable_array = list()\n for summary, status, message, url in zip(block_url_result_item_0, block_url_result_item_1, block_url_result_message, block_url_parameter_url):\n observable = {\n \"type\": \"url\",\n \"value\": url,\n \"source\": \"ZScaler\"\n }\n if len(summary[\"ignored\"]) > 0:\n observable[\"status\"] = \"ignored\"\n else:\n observable[\"status\"] = \"updated\"\n \n build_observable__observable_array.append(observable)\n \n\n", + "userCode": "\n build_observable__observable_array = list()\n for summary, status, message, url in zip(block_url_result_item_0, block_url_result_item_1, block_url_result_message, filtered_input_0_input_url_values):\n observable = {\n \"type\": \"url\",\n \"value\": url,\n \"source\": \"ZScaler\"\n }\n if len(summary[\"ignored\"]) > 0:\n observable[\"status\"] = \"ignored\"\n else:\n observable[\"status\"] = \"updated\"\n \n build_observable__observable_array.append(observable)\n \n\n", "warnings": {}, "x": 0, "y": 700 @@ -204,6 +198,8 @@ "advanced": { "customName": "block url success filter", "customNameId": 0, + "delimiter": ",", + "delimiter_enabled": true, "description": "Determine if the block url action was successful or not.", "join": [], "note": "Determine if the block url action was successful or not." @@ -263,10 +259,10 @@ ], "playbook_type": "data", "python_version": "3", - "schema": "5.0.9", - "version": "6.0.0.114895" + "schema": "5.0.10", + "version": "6.0.1.123902" }, - "create_time": "2023-03-31T06:50:12.071333+00:00", + "create_time": "2023-06-21T09:27:47.392005+00:00", "draft_mode": false, "labels": [ "*" diff --git a/playbooks/Zscaler_Outbound_Traffic_Filtering.py b/playbooks/Zscaler_Outbound_Traffic_Filtering.py old mode 100755 new mode 100644 index ced11584cd..f5e7bef5a4 --- a/playbooks/Zscaler_Outbound_Traffic_Filtering.py +++ b/playbooks/Zscaler_Outbound_Traffic_Filtering.py @@ -31,7 +31,8 @@ def url_input_filter(action=None, success=None, container=None, results=None, ha conditions=[ ["playbook_input:input_url", "!=", None] ], - name="url_input_filter:condition_1") + name="url_input_filter:condition_1", + delimiter=",") # call connected blocks if filtered artifacts or results if matched_artifacts_1 or matched_results_1: @@ -50,15 +51,15 @@ def block_url(action=None, success=None, container=None, results=None, handle=No # Block urls in ZScaler based on given urls. ################################################################################ - playbook_input_input_url = phantom.collect2(container=container, datapath=["playbook_input:input_url"]) + filtered_input_0_input_url = phantom.collect2(container=container, datapath=["filtered-data:url_input_filter:condition_1:playbook_input:input_url"]) parameters = [] # build parameters list for 'block_url' call - for playbook_input_input_url_item in playbook_input_input_url: - if playbook_input_input_url_item[0] is not None: + for filtered_input_0_input_url_item in filtered_input_0_input_url: + if filtered_input_0_input_url_item[0] is not None: parameters.append({ - "url": playbook_input_input_url_item[0], + "url": filtered_input_0_input_url_item[0], }) ################################################################################ @@ -85,12 +86,13 @@ def build_observable(action=None, success=None, container=None, results=None, ha # the observables data path. ################################################################################ - block_url_result_data = phantom.collect2(container=container, datapath=["block_url:action_result.summary","block_url:action_result.status","block_url:action_result.message","block_url:action_result.parameter.url"], action_results=results) + block_url_result_data = phantom.collect2(container=container, datapath=["block_url:action_result.summary","block_url:action_result.status","block_url:action_result.message"], action_results=results) + filtered_input_0_input_url = phantom.collect2(container=container, datapath=["filtered-data:url_input_filter:condition_1:playbook_input:input_url"]) block_url_result_item_0 = [item[0] for item in block_url_result_data] block_url_result_item_1 = [item[1] for item in block_url_result_data] block_url_result_message = [item[2] for item in block_url_result_data] - block_url_parameter_url = [item[3] for item in block_url_result_data] + filtered_input_0_input_url_values = [item[0] for item in filtered_input_0_input_url] build_observable__observable_array = None @@ -99,7 +101,7 @@ def build_observable(action=None, success=None, container=None, results=None, ha ################################################################################ build_observable__observable_array = list() - for summary, status, message, url in zip(block_url_result_item_0, block_url_result_item_1, block_url_result_message, block_url_parameter_url): + for summary, status, message, url in zip(block_url_result_item_0, block_url_result_item_1, block_url_result_message, filtered_input_0_input_url_values): observable = { "type": "url", "value": url, @@ -136,7 +138,8 @@ def block_url_success_filter(action=None, success=None, container=None, results= conditions=[ ["block_url:action_result.status", "==", "success"] ], - name="block_url_success_filter:condition_1") + name="block_url_success_filter:condition_1", + delimiter=",") # call connected blocks if filtered artifacts or results if matched_artifacts_1 or matched_results_1: From 1e0ec0734598933893dc7070943e977ffd8cad56 Mon Sep 17 00:00:00 2001 From: P4T12ICK Date: Wed, 21 Jun 2023 16:22:42 +0200 Subject: [PATCH 6/6] Improvements --- playbooks/Zscaler_Outbound_Traffic_Filtering.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/playbooks/Zscaler_Outbound_Traffic_Filtering.yml b/playbooks/Zscaler_Outbound_Traffic_Filtering.yml index d40a1a03a1..f99cf8c988 100644 --- a/playbooks/Zscaler_Outbound_Traffic_Filtering.yml +++ b/playbooks/Zscaler_Outbound_Traffic_Filtering.yml @@ -3,7 +3,7 @@ id: 3e0df448-0546-4b2b-9143-365161cf40f9 version: 1 date: '2023-03-31' author: Patrick Bareiss, Splunk -type: Investigation +type: Response description: Accepts a URL or list of URLs and block them in ZScaler. Generates a list of observables with the blocked URLs. playbook: ZScaler_Outbound_Traffic_Filtering how_to_implement: This input playbook requires the ZScaler connector to be configured. It is designed to work in conjunction with the Dynamic URL Outbound Traffic Filtering Analysis playbook or other playbooks in the same style.