From cd505f88b07482839f9300e3a780716b68e57348 Mon Sep 17 00:00:00 2001 From: tccontre Date: Wed, 10 May 2023 09:40:42 +0200 Subject: [PATCH 1/4] AWS_IAM_Account_Locking_Playbook --- playbooks/AWS_IAM_Account_Locking.json | 287 +++++++++++++++++++++++++ playbooks/AWS_IAM_Account_Locking.png | Bin 0 -> 87269 bytes playbooks/AWS_IAM_Account_Locking.py | 173 +++++++++++++++ playbooks/AWS_IAM_Account_Locking.yml | 24 +++ 4 files changed, 484 insertions(+) create mode 100644 playbooks/AWS_IAM_Account_Locking.json create mode 100644 playbooks/AWS_IAM_Account_Locking.png create mode 100644 playbooks/AWS_IAM_Account_Locking.py create mode 100644 playbooks/AWS_IAM_Account_Locking.yml diff --git a/playbooks/AWS_IAM_Account_Locking.json b/playbooks/AWS_IAM_Account_Locking.json new file mode 100644 index 0000000000..60ae5abff4 --- /dev/null +++ b/playbooks/AWS_IAM_Account_Locking.json @@ -0,0 +1,287 @@ +{ + "blockly": false, + "blockly_xml": "", + "category": "Account Locking", + "coa": { + "data": { + "description": "Accepts user name that needs to be disabled in AWS IAM Active Directory. Generates an observable output based on the status of account locking or disabling.", + "edges": [ + { + "id": "port_0_to_port_2", + "sourceNode": "0", + "sourcePort": "0_out", + "targetNode": "2", + "targetPort": "2_in" + }, + { + "id": "port_6_to_port_1", + "sourceNode": "6", + "sourcePort": "6_out", + "targetNode": "1", + "targetPort": "1_in" + }, + { + "id": "port_3_to_port_7", + "sourceNode": "3", + "sourcePort": "3_out", + "targetNode": "7", + "targetPort": "7_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_7_to_port_6", + "sourceNode": "7", + "sourcePort": "7_out", + "targetNode": "6", + "targetPort": "6_in" + } + ], + "hash": "310e5f84ad25145529cecf45a94fd6d70bfa520d", + "nodes": { + "0": { + "data": { + "advanced": { + "join": [] + }, + "functionName": "on_start", + "id": "0", + "type": "start" + }, + "errors": {}, + "id": "0", + "type": "start", + "warnings": {}, + "x": 19.999999999999986, + "y": -1.2789769243681803e-13 + }, + "1": { + "data": { + "advanced": { + "join": [] + }, + "functionName": "on_finish", + "id": "1", + "type": "end" + }, + "errors": {}, + "id": "1", + "type": "end", + "warnings": {}, + "x": 19.999999999999986, + "y": 860 + }, + "2": { + "data": { + "advanced": { + "customName": "username filter", + "customNameId": 0, + "description": "Filter user name inputs to route inputs to appropriate actions.", + "join": [], + "note": "Filter user name inputs to route inputs to appropriate actions." + }, + "conditions": [ + { + "comparisons": [ + { + "conditionIndex": 0, + "op": "!=", + "param": "playbook_input:user_name", + "value": "" + } + ], + "conditionIndex": 0, + "customName": "username_filter", + "logic": "and" + } + ], + "functionId": 1, + "functionName": "username_filter", + "id": "2", + "type": "filter" + }, + "errors": {}, + "id": "2", + "type": "filter", + "warnings": { + "config": [ + "Reconfigure invalid datapath." + ] + }, + "x": 60, + "y": 148 + }, + "3": { + "data": { + "action": "disable user", + "actionType": "contain", + "advanced": { + "customName": "disable user account", + "customNameId": 0, + "description": "Disable user account from filtered playbook inputs.", + "join": [], + "note": "Disable user account from filtered playbook inputs." + }, + "connector": "AWS IAM", + "connectorConfigs": [ + "aws iam" + ], + "connectorId": "7d06523f-d524-4dbd-befd-7f30f5492882", + "connectorVersion": "v1", + "functionId": 1, + "functionName": "disable_user_account", + "id": "3", + "parameters": { + "credentials": "", + "disable_access_keys": true, + "username": "playbook_input:user_name" + }, + "requiredParameters": [ + { + "data_type": "string", + "field": "username" + }, + { + "data_type": "boolean", + "default": true, + "field": "disable_access_keys" + } + ], + "type": "action" + }, + "errors": {}, + "id": "3", + "type": "action", + "warnings": { + "config": [ + "Reconfigure invalid datapath." + ] + }, + "x": 0, + "y": 320 + }, + "6": { + "data": { + "advanced": { + "customName": "username observables", + "customNameId": 0, + "description": "Format a normalized output for each user.", + "join": [], + "note": "Format a normalized output for each user." + }, + "functionId": 2, + "functionName": "username_observables", + "id": "6", + "inputParameters": [ + "disable_user_account:action_result.parameter.disable_access_keys", + "disable_user_account:action_result.parameter.username", + "disable_user_account:action_result.parameter.credentials", + "disable_user_account:action_result.data.*.RequestId", + "disable_user_account:action_result.message", + "disable_user_account:action_result.status" + ], + "outputVariables": [ + "observable_array" + ], + "type": "code" + }, + "errors": {}, + "id": "6", + "type": "code", + "userCode": "\n # Write your custom code here...\n username_observables__observable_array = []\n \n for access_key, usrname, creds, req_id, msg, status in zip(disable_user_account_parameter_disable_access_keys, disable_user_account_parameter_username, disable_user_account_parameter_credentials, disable_user_account_result_item_3, disable_user_account_result_message, disable_user_account_result_item_5):\n user_acc_status = {\n \"account_type\": \"AWS IAM Account\",\n \"user\": usrname,\n \"credentials\": creds,\n \"request_id\": req_id,\n \"disable_message\": msg,\n \"disable_status\": status\n }\n\n username_observables__observable_array.append(user_acc_status)\n #phantom.debug(username_observables__observable_array)\n", + "warnings": {}, + "x": 0, + "y": 680 + }, + "7": { + "data": { + "advanced": { + "customName": "filter disable result", + "customNameId": 0, + "description": "filter check if the user is disabled successfully.", + "join": [], + "note": "filter check if the user is disabled successfully." + }, + "conditions": [ + { + "comparisons": [ + { + "conditionIndex": 0, + "op": "==", + "param": "disable_user_account:action_result.status", + "value": "success" + } + ], + "conditionIndex": 0, + "customName": "disable_success", + "logic": "and" + } + ], + "functionId": 2, + "functionName": "filter_disable_result", + "id": "7", + "type": "filter" + }, + "errors": {}, + "id": "7", + "type": "filter", + "warnings": {}, + "x": 60, + "y": 500 + } + }, + "notes": "Inputs: users\nInteractions: AWS IAM\nActions: Account Locking/Disabling\nOutputs: observables" + }, + "input_spec": [ + { + "contains": [ + "user name" + ], + "description": "A user name provided for account locking - AWS IAM", + "name": "user_name" + } + ], + "output_spec": [ + { + "contains": [], + "datapaths": [ + "username_observables:custom_function:observable_array" + ], + "deduplicate": false, + "description": "An array of observable dictionaries ", + "metadata": {}, + "name": "observable" + } + ], + "playbook_type": "data", + "python_version": "3", + "schema": "5.0.9", + "version": "6.0.0.114895" + }, + "create_time": "2023-05-08T15:56:32.456950+00:00", + "draft_mode": false, + "labels": [ + "*" + ], + "tags": [ + "user", + "aws_iam", + "disable_account", + "D3-AL" + ] +} \ No newline at end of file diff --git a/playbooks/AWS_IAM_Account_Locking.png b/playbooks/AWS_IAM_Account_Locking.png new file mode 100644 index 0000000000000000000000000000000000000000..098519cd475b304eabb2d1a0711aab67d9c8b053 GIT binary patch literal 87269 zcmeEtWmuJ4*Df8>DvhMlu#oN!>F#c6q`N}}K}qS7?(SCU?gjyA5Tqo}T)Ovu_j|tY z=lOZOE?~j)%rWQadyFxCqog2(@qp+73=9m0^b2tn7#O%P7#Jje6eRGMk8ui~Ffb2F zt;EEXq{YO@m7E+btZdC;U|zh5PefKy)y5Av^4_7ydL}L`vn~H#0fvsE24=juAmphq zEd^50Ta5TGxO&Rs;z~F!>f)X1bX6MSl@%xjMl0kIudA5xYzuC%2!fjLZ|;TelX#rl z+?N}-(!IBqxwc@1H8x(0TUAiP>~t}{Du_lF;H6H8B8Fp8f)x)ycERLQ{fv%@3G;ez zwte8*07ia(;d^Z3-R-SE?lV%MSTvZ&k&bYX*p#RrR^o<^65kkMl&*2wmroeSp4L;y z;Zh+|`Z&bI=6RaMJjx@$$TR5@(?(H+?TFCOm_qpjv5j%M z%64`L`9l=RZ6iOE3yz!lNp`t=#@r>ai6q2!OUE3a>f|9D(e*ygeWh`iv2fh}OhBHM zEu13zlUbz$tx5a`f#$^IHHfLPsL?1onuqGKYAWOLyN|~9)C_K6o+OI?bF(!a0fY*V zJ*v$;t7g~O21iaGq!_=FEU+yTe;&cpO>(^75;KXCB$PCgusI@)8J)alD`K{aZkZSM zYvgN%nP25oH4P!d?e*t;<@L4)J4q|0njH!6hGZ}=;!D%mbcGCiQ-_iWnTp@_T%0Dq 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 F{TEc*cX|K- literal 0 HcmV?d00001 diff --git a/playbooks/AWS_IAM_Account_Locking.py b/playbooks/AWS_IAM_Account_Locking.py new file mode 100644 index 0000000000..e58289861c --- /dev/null +++ b/playbooks/AWS_IAM_Account_Locking.py @@ -0,0 +1,173 @@ +""" +Accepts user name that needs to be disabled in AWS IAM Active Directory. Generates an observable output based on the status of account locking or disabling. +""" + + +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 'username_filter' block + username_filter(container=container) + + return + +@phantom.playbook_block() +def username_filter(action=None, success=None, container=None, results=None, handle=None, filtered_artifacts=None, filtered_results=None, custom_function=None, **kwargs): + phantom.debug("username_filter() called") + + ################################################################################ + # Filter user name inputs to route inputs to appropriate actions. + ################################################################################ + + # collect filtered artifact ids and results for 'if' condition 1 + matched_artifacts_1, matched_results_1 = phantom.condition( + container=container, + conditions=[ + ["playbook_input:user_name", "!=", ""] + ], + name="username_filter:condition_1") + + # call connected blocks if filtered artifacts or results + if matched_artifacts_1 or matched_results_1: + disable_user_account(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 disable_user_account(action=None, success=None, container=None, results=None, handle=None, filtered_artifacts=None, filtered_results=None, custom_function=None, **kwargs): + phantom.debug("disable_user_account() called") + + # phantom.debug('Action: {0} {1}'.format(action['name'], ('SUCCEEDED' if success else 'FAILED'))) + + ################################################################################ + # Disable user account from filtered playbook inputs. + ################################################################################ + + playbook_input_user_name = phantom.collect2(container=container, datapath=["playbook_input:user_name"]) + + parameters = [] + + # build parameters list for 'disable_user_account' call + for playbook_input_user_name_item in playbook_input_user_name: + if playbook_input_user_name_item[0] is not None: + parameters.append({ + "username": playbook_input_user_name_item[0], + "credentials": "", + "disable_access_keys": True, + }) + + ################################################################################ + ## Custom Code Start + ################################################################################ + + # Write your custom code here... + + ################################################################################ + ## Custom Code End + ################################################################################ + + phantom.act("disable user", parameters=parameters, name="disable_user_account", assets=["aws iam"], callback=filter_disable_result) + + return + + +@phantom.playbook_block() +def username_observables(action=None, success=None, container=None, results=None, handle=None, filtered_artifacts=None, filtered_results=None, custom_function=None, **kwargs): + phantom.debug("username_observables() called") + + ################################################################################ + # Format a normalized output for each user. + ################################################################################ + + disable_user_account_result_data = phantom.collect2(container=container, datapath=["disable_user_account:action_result.parameter.disable_access_keys","disable_user_account:action_result.parameter.username","disable_user_account:action_result.parameter.credentials","disable_user_account:action_result.data.*.RequestId","disable_user_account:action_result.message","disable_user_account:action_result.status"], action_results=results) + + disable_user_account_parameter_disable_access_keys = [item[0] for item in disable_user_account_result_data] + disable_user_account_parameter_username = [item[1] for item in disable_user_account_result_data] + disable_user_account_parameter_credentials = [item[2] for item in disable_user_account_result_data] + disable_user_account_result_item_3 = [item[3] for item in disable_user_account_result_data] + disable_user_account_result_message = [item[4] for item in disable_user_account_result_data] + disable_user_account_result_item_5 = [item[5] for item in disable_user_account_result_data] + + username_observables__observable_array = None + + ################################################################################ + ## Custom Code Start + ################################################################################ + + # Write your custom code here... + username_observables__observable_array = [] + + for access_key, usrname, creds, req_id, msg, status in zip(disable_user_account_parameter_disable_access_keys, disable_user_account_parameter_username, disable_user_account_parameter_credentials, disable_user_account_result_item_3, disable_user_account_result_message, disable_user_account_result_item_5): + user_acc_status = { + "account_type": "AWS IAM Account", + "user": usrname, + "credentials": creds, + "request_id": req_id, + "disable_message": msg, + "disable_status": status + } + + username_observables__observable_array.append(user_acc_status) + #phantom.debug(username_observables__observable_array) + ################################################################################ + ## Custom Code End + ################################################################################ + + phantom.save_run_data(key="username_observables:observable_array", value=json.dumps(username_observables__observable_array)) + + return + + +@phantom.playbook_block() +def filter_disable_result(action=None, success=None, container=None, results=None, handle=None, filtered_artifacts=None, filtered_results=None, custom_function=None, **kwargs): + phantom.debug("filter_disable_result() called") + + ################################################################################ + # filter check if the user is disabled successfully. + ################################################################################ + + # collect filtered artifact ids and results for 'if' condition 1 + matched_artifacts_1, matched_results_1 = phantom.condition( + container=container, + conditions=[ + ["disable_user_account:action_result.status", "==", "success"] + ], + name="filter_disable_result:condition_1") + + # call connected blocks if filtered artifacts or results + if matched_artifacts_1 or matched_results_1: + username_observables(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") + + username_observables__observable_array = json.loads(_ if (_ := phantom.get_run_data(key="username_observables:observable_array")) != "" else "null") # pylint: disable=used-before-assignment + + output = { + "observable": username_observables__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/AWS_IAM_Account_Locking.yml b/playbooks/AWS_IAM_Account_Locking.yml new file mode 100644 index 0000000000..689f62789b --- /dev/null +++ b/playbooks/AWS_IAM_Account_Locking.yml @@ -0,0 +1,24 @@ +name: AWS IAM Account Locking +id: f15e4ab7-b057-4225-86ae-c36ab78b50f2 +version: 1 +date: '2023-05-08' +author: Teoderick Contreras, Splunk +type: Investigation +description: "Accepts user, to be disabled using AWS IAM connector. This playbook produces a normalized observables output for each user and device." +playbook: AWS_IAM_Account_Locking +how_to_implement: This input playbook requires the AWS IAM connector to be configured. + It is designed to work in conjunction with the Dynamic Attribute Lookup playbook or other playbooks in the same style. +references: [] +app_list: + - AWS IAM API +tags: + platform_tags: + - user + - aws_iam + - D3-AL + - disable_account + playbook_type: Input + vpe_type: Modern + playbook_fields: [] + product: + - Splunk SOAR \ No newline at end of file From dba26e91d1f8898fcc4ada3faecb0cafdd8d3f01 Mon Sep 17 00:00:00 2001 From: tccontre Date: Mon, 15 May 2023 12:12:49 +0200 Subject: [PATCH 2/4] AWS_IAM_Account_Locking_Playbook --- playbooks/AWS_IAM_Account_Locking.json | 6 +++--- playbooks/AWS_IAM_Account_Locking.py | 12 ++++++------ 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/playbooks/AWS_IAM_Account_Locking.json b/playbooks/AWS_IAM_Account_Locking.json index 60ae5abff4..f939199b83 100644 --- a/playbooks/AWS_IAM_Account_Locking.json +++ b/playbooks/AWS_IAM_Account_Locking.json @@ -68,7 +68,7 @@ "type": "start", "warnings": {}, "x": 19.999999999999986, - "y": -1.2789769243681803e-13 + "y": -1.9184653865522705e-13 }, "1": { "data": { @@ -203,7 +203,7 @@ "errors": {}, "id": "6", "type": "code", - "userCode": "\n # Write your custom code here...\n username_observables__observable_array = []\n \n for access_key, usrname, creds, req_id, msg, status in zip(disable_user_account_parameter_disable_access_keys, disable_user_account_parameter_username, disable_user_account_parameter_credentials, disable_user_account_result_item_3, disable_user_account_result_message, disable_user_account_result_item_5):\n user_acc_status = {\n \"account_type\": \"AWS IAM Account\",\n \"user\": usrname,\n \"credentials\": creds,\n \"request_id\": req_id,\n \"disable_message\": msg,\n \"disable_status\": status\n }\n\n username_observables__observable_array.append(user_acc_status)\n #phantom.debug(username_observables__observable_array)\n", + "userCode": "\n # Write your custom code here...\n username_observables__observable_array = []\n \n for access_key, usrname, creds, req_id, msg, status in zip(disable_user_account_parameter_disable_access_keys, disable_user_account_parameter_username, disable_user_account_parameter_credentials, disable_user_account_result_item_3, disable_user_account_result_message, disable_user_account_result_item_5):\n user_acc_status = {\n \"type\": \"AWS IAM Account\",\n \"value\": usrname,\n \"credentials\": creds,\n \"request_id\": req_id,\n \"message\": msg,\n \"status\": status\n }\n\n username_observables__observable_array.append(user_acc_status)\n #phantom.debug(username_observables__observable_array)\n", "warnings": {}, "x": 0, "y": 680 @@ -273,7 +273,7 @@ "schema": "5.0.9", "version": "6.0.0.114895" }, - "create_time": "2023-05-08T15:56:32.456950+00:00", + "create_time": "2023-05-15T10:08:37.823546+00:00", "draft_mode": false, "labels": [ "*" diff --git a/playbooks/AWS_IAM_Account_Locking.py b/playbooks/AWS_IAM_Account_Locking.py index e58289861c..1f95aef323 100644 --- a/playbooks/AWS_IAM_Account_Locking.py +++ b/playbooks/AWS_IAM_Account_Locking.py @@ -106,16 +106,16 @@ def username_observables(action=None, success=None, container=None, results=None for access_key, usrname, creds, req_id, msg, status in zip(disable_user_account_parameter_disable_access_keys, disable_user_account_parameter_username, disable_user_account_parameter_credentials, disable_user_account_result_item_3, disable_user_account_result_message, disable_user_account_result_item_5): user_acc_status = { - "account_type": "AWS IAM Account", - "user": usrname, + "type": "AWS IAM Account", + "value": usrname, "credentials": creds, "request_id": req_id, - "disable_message": msg, - "disable_status": status + "message": msg, + "status": status } - username_observables__observable_array.append(user_acc_status) - #phantom.debug(username_observables__observable_array) + username_observables__observable_array.append(user_acc_status) + #phantom.debug(username_observables__observable_array) ################################################################################ ## Custom Code End ################################################################################ From b28c51fb1980a095610c8e2431e1ed01b03d1f1f Mon Sep 17 00:00:00 2001 From: tccontre Date: Wed, 17 May 2023 10:37:11 +0200 Subject: [PATCH 3/4] AWS_IAM_Account_Locking_Playbook --- playbooks/AWS_IAM_Account_Locking.json | 8 ++++---- playbooks/AWS_IAM_Account_Locking.py | 2 -- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/playbooks/AWS_IAM_Account_Locking.json b/playbooks/AWS_IAM_Account_Locking.json index f939199b83..3df568a14a 100644 --- a/playbooks/AWS_IAM_Account_Locking.json +++ b/playbooks/AWS_IAM_Account_Locking.json @@ -52,7 +52,7 @@ "targetPort": "6_in" } ], - "hash": "310e5f84ad25145529cecf45a94fd6d70bfa520d", + "hash": "e7557804c571030de90a1e706c049fd1be69fb38", "nodes": { "0": { "data": { @@ -68,7 +68,7 @@ "type": "start", "warnings": {}, "x": 19.999999999999986, - "y": -1.9184653865522705e-13 + "y": -2.5579538487363607e-13 }, "1": { "data": { @@ -203,7 +203,7 @@ "errors": {}, "id": "6", "type": "code", - "userCode": "\n # Write your custom code here...\n username_observables__observable_array = []\n \n for access_key, usrname, creds, req_id, msg, status in zip(disable_user_account_parameter_disable_access_keys, disable_user_account_parameter_username, disable_user_account_parameter_credentials, disable_user_account_result_item_3, disable_user_account_result_message, disable_user_account_result_item_5):\n user_acc_status = {\n \"type\": \"AWS IAM Account\",\n \"value\": usrname,\n \"credentials\": creds,\n \"request_id\": req_id,\n \"message\": msg,\n \"status\": status\n }\n\n username_observables__observable_array.append(user_acc_status)\n #phantom.debug(username_observables__observable_array)\n", + "userCode": "\n # Write your custom code here...\n username_observables__observable_array = []\n \n for access_key, usrname, creds, req_id, msg, status in zip(disable_user_account_parameter_disable_access_keys, disable_user_account_parameter_username, disable_user_account_parameter_credentials, disable_user_account_result_item_3, disable_user_account_result_message, disable_user_account_result_item_5):\n user_acc_status = {\n \"type\": \"AWS IAM Account\",\n \"value\": usrname,\n \"message\": msg,\n \"status\": status\n }\n\n username_observables__observable_array.append(user_acc_status)\n #phantom.debug(username_observables__observable_array)\n", "warnings": {}, "x": 0, "y": 680 @@ -273,7 +273,7 @@ "schema": "5.0.9", "version": "6.0.0.114895" }, - "create_time": "2023-05-15T10:08:37.823546+00:00", + "create_time": "2023-05-17T08:30:19.328197+00:00", "draft_mode": false, "labels": [ "*" diff --git a/playbooks/AWS_IAM_Account_Locking.py b/playbooks/AWS_IAM_Account_Locking.py index 1f95aef323..030f081fa5 100644 --- a/playbooks/AWS_IAM_Account_Locking.py +++ b/playbooks/AWS_IAM_Account_Locking.py @@ -108,8 +108,6 @@ def username_observables(action=None, success=None, container=None, results=None user_acc_status = { "type": "AWS IAM Account", "value": usrname, - "credentials": creds, - "request_id": req_id, "message": msg, "status": status } From 2558112a1eae06b5835e848cfbef82cd6a873364 Mon Sep 17 00:00:00 2001 From: tccontre Date: Thu, 25 May 2023 10:33:05 +0200 Subject: [PATCH 4/4] AWS_IAM_Account_Locking_Playbook --- playbooks/AWS_IAM_Account_Locking.json | 40 ++++++++++++-------------- playbooks/AWS_IAM_Account_Locking.py | 31 ++++++++++---------- 2 files changed, 33 insertions(+), 38 deletions(-) diff --git a/playbooks/AWS_IAM_Account_Locking.json b/playbooks/AWS_IAM_Account_Locking.json index 3df568a14a..2840dda35b 100644 --- a/playbooks/AWS_IAM_Account_Locking.json +++ b/playbooks/AWS_IAM_Account_Locking.json @@ -52,7 +52,7 @@ "targetPort": "6_in" } ], - "hash": "e7557804c571030de90a1e706c049fd1be69fb38", + "hash": "5cd799e95d456dc116881e04c82ec7bd2e783edc", "nodes": { "0": { "data": { @@ -68,7 +68,7 @@ "type": "start", "warnings": {}, "x": 19.999999999999986, - "y": -2.5579538487363607e-13 + "y": -4.476419235288631e-13 }, "1": { "data": { @@ -101,7 +101,7 @@ { "conditionIndex": 0, "op": "!=", - "param": "playbook_input:user_name", + "param": "playbook_input:user", "value": "" } ], @@ -124,7 +124,7 @@ ] }, "x": 60, - "y": 148 + "y": 140 }, "3": { "data": { @@ -139,7 +139,7 @@ }, "connector": "AWS IAM", "connectorConfigs": [ - "aws iam" + "aws_iam" ], "connectorId": "7d06523f-d524-4dbd-befd-7f30f5492882", "connectorVersion": "v1", @@ -147,9 +147,8 @@ "functionName": "disable_user_account", "id": "3", "parameters": { - "credentials": "", "disable_access_keys": true, - "username": "playbook_input:user_name" + "username": "filtered-data:username_filter:condition_1:playbook_input:user" }, "requiredParameters": [ { @@ -167,11 +166,7 @@ "errors": {}, "id": "3", "type": "action", - "warnings": { - "config": [ - "Reconfigure invalid datapath." - ] - }, + "warnings": {}, "x": 0, "y": 320 }, @@ -188,12 +183,12 @@ "functionName": "username_observables", "id": "6", "inputParameters": [ - "disable_user_account:action_result.parameter.disable_access_keys", - "disable_user_account:action_result.parameter.username", - "disable_user_account:action_result.parameter.credentials", - "disable_user_account:action_result.data.*.RequestId", - "disable_user_account:action_result.message", - "disable_user_account:action_result.status" + "filtered-data:filter_disable_result:condition_1:disable_user_account:action_result.parameter.disable_access_keys", + "filtered-data:filter_disable_result:condition_1:disable_user_account:action_result.parameter.username", + "filtered-data:filter_disable_result:condition_1:disable_user_account:action_result.parameter.credentials", + "filtered-data:filter_disable_result:condition_1:disable_user_account:action_result.data.*.RequestId", + "filtered-data:filter_disable_result:condition_1:disable_user_account:action_result.message", + "filtered-data:filter_disable_result:condition_1:disable_user_account:action_result.status" ], "outputVariables": [ "observable_array" @@ -203,7 +198,7 @@ "errors": {}, "id": "6", "type": "code", - "userCode": "\n # Write your custom code here...\n username_observables__observable_array = []\n \n for access_key, usrname, creds, req_id, msg, status in zip(disable_user_account_parameter_disable_access_keys, disable_user_account_parameter_username, disable_user_account_parameter_credentials, disable_user_account_result_item_3, disable_user_account_result_message, disable_user_account_result_item_5):\n user_acc_status = {\n \"type\": \"AWS IAM Account\",\n \"value\": usrname,\n \"message\": msg,\n \"status\": status\n }\n\n username_observables__observable_array.append(user_acc_status)\n #phantom.debug(username_observables__observable_array)\n", + "userCode": "\n # Write your custom code here...\n username_observables__observable_array = []\n \n for access_key, usrname, creds, req_id, msg, status in zip(filtered_result_0_parameter_disable_access_keys, filtered_result_0_parameter_username, filtered_result_0_parameter_credentials, filtered_result_0_data___requestid, filtered_result_0_message, filtered_result_0_status):\n user_acc_status = {\n \"type\": \"aws iam user name\",\n \"value\": usrname,\n \"message\": msg,\n \"status\": status\n }\n\n username_observables__observable_array.append(user_acc_status)\n #phantom.debug(username_observables__observable_array)\n", "warnings": {}, "x": 0, "y": 680 @@ -250,10 +245,11 @@ "input_spec": [ { "contains": [ - "user name" + "user name", + "aws iam user name" ], "description": "A user name provided for account locking - AWS IAM", - "name": "user_name" + "name": "user" } ], "output_spec": [ @@ -273,7 +269,7 @@ "schema": "5.0.9", "version": "6.0.0.114895" }, - "create_time": "2023-05-17T08:30:19.328197+00:00", + "create_time": "2023-05-25T07:50:39.360247+00:00", "draft_mode": false, "labels": [ "*" diff --git a/playbooks/AWS_IAM_Account_Locking.py b/playbooks/AWS_IAM_Account_Locking.py index 030f081fa5..8c8a94ad50 100644 --- a/playbooks/AWS_IAM_Account_Locking.py +++ b/playbooks/AWS_IAM_Account_Locking.py @@ -29,7 +29,7 @@ def username_filter(action=None, success=None, container=None, results=None, han matched_artifacts_1, matched_results_1 = phantom.condition( container=container, conditions=[ - ["playbook_input:user_name", "!=", ""] + ["playbook_input:user", "!=", ""] ], name="username_filter:condition_1") @@ -50,17 +50,16 @@ def disable_user_account(action=None, success=None, container=None, results=None # Disable user account from filtered playbook inputs. ################################################################################ - playbook_input_user_name = phantom.collect2(container=container, datapath=["playbook_input:user_name"]) + filtered_input_0_user = phantom.collect2(container=container, datapath=["filtered-data:username_filter:condition_1:playbook_input:user"]) parameters = [] # build parameters list for 'disable_user_account' call - for playbook_input_user_name_item in playbook_input_user_name: - if playbook_input_user_name_item[0] is not None: + for filtered_input_0_user_item in filtered_input_0_user: + if filtered_input_0_user_item[0] is not None: parameters.append({ - "username": playbook_input_user_name_item[0], - "credentials": "", "disable_access_keys": True, + "username": filtered_input_0_user_item[0], }) ################################################################################ @@ -73,7 +72,7 @@ def disable_user_account(action=None, success=None, container=None, results=None ## Custom Code End ################################################################################ - phantom.act("disable user", parameters=parameters, name="disable_user_account", assets=["aws iam"], callback=filter_disable_result) + phantom.act("disable user", parameters=parameters, name="disable_user_account", assets=["aws_iam"], callback=filter_disable_result) return @@ -86,14 +85,14 @@ def username_observables(action=None, success=None, container=None, results=None # Format a normalized output for each user. ################################################################################ - disable_user_account_result_data = phantom.collect2(container=container, datapath=["disable_user_account:action_result.parameter.disable_access_keys","disable_user_account:action_result.parameter.username","disable_user_account:action_result.parameter.credentials","disable_user_account:action_result.data.*.RequestId","disable_user_account:action_result.message","disable_user_account:action_result.status"], action_results=results) + filtered_result_0_data_filter_disable_result = phantom.collect2(container=container, datapath=["filtered-data:filter_disable_result:condition_1:disable_user_account:action_result.parameter.disable_access_keys","filtered-data:filter_disable_result:condition_1:disable_user_account:action_result.parameter.username","filtered-data:filter_disable_result:condition_1:disable_user_account:action_result.parameter.credentials","filtered-data:filter_disable_result:condition_1:disable_user_account:action_result.data.*.RequestId","filtered-data:filter_disable_result:condition_1:disable_user_account:action_result.message","filtered-data:filter_disable_result:condition_1:disable_user_account:action_result.status"]) - disable_user_account_parameter_disable_access_keys = [item[0] for item in disable_user_account_result_data] - disable_user_account_parameter_username = [item[1] for item in disable_user_account_result_data] - disable_user_account_parameter_credentials = [item[2] for item in disable_user_account_result_data] - disable_user_account_result_item_3 = [item[3] for item in disable_user_account_result_data] - disable_user_account_result_message = [item[4] for item in disable_user_account_result_data] - disable_user_account_result_item_5 = [item[5] for item in disable_user_account_result_data] + filtered_result_0_parameter_disable_access_keys = [item[0] for item in filtered_result_0_data_filter_disable_result] + filtered_result_0_parameter_username = [item[1] for item in filtered_result_0_data_filter_disable_result] + filtered_result_0_parameter_credentials = [item[2] for item in filtered_result_0_data_filter_disable_result] + filtered_result_0_data___requestid = [item[3] for item in filtered_result_0_data_filter_disable_result] + filtered_result_0_message = [item[4] for item in filtered_result_0_data_filter_disable_result] + filtered_result_0_status = [item[5] for item in filtered_result_0_data_filter_disable_result] username_observables__observable_array = None @@ -104,9 +103,9 @@ def username_observables(action=None, success=None, container=None, results=None # Write your custom code here... username_observables__observable_array = [] - for access_key, usrname, creds, req_id, msg, status in zip(disable_user_account_parameter_disable_access_keys, disable_user_account_parameter_username, disable_user_account_parameter_credentials, disable_user_account_result_item_3, disable_user_account_result_message, disable_user_account_result_item_5): + for access_key, usrname, creds, req_id, msg, status in zip(filtered_result_0_parameter_disable_access_keys, filtered_result_0_parameter_username, filtered_result_0_parameter_credentials, filtered_result_0_data___requestid, filtered_result_0_message, filtered_result_0_status): user_acc_status = { - "type": "AWS IAM Account", + "type": "aws iam user name", "value": usrname, "message": msg, "status": status