KillProcessWrapper
A cross-vendor wrapper script that triggers a ‘process kill’ command - i.e executes the proper kill process command according to the vendor: CrowdstrikeFalcon or Cortex XDR. The script will only fail when the kill process action fails for both vendors.
python · Malware Investigation and Response
Source
import demistomock as demisto # noqa: F401 from CommonServerPython import * # noqa: F401 """ A cross-vendor wrapper script that triggers a `process kill` command - i.e executes the proper kill process command according to the vendor: CrowdstrikeFalcon or Cortex XDR. The script will only fail when the kill process action fails for both vendors. """ from CommonServerUserPython import * XDR_PROCESS_KILL_COMMAND = "xdr-run-script-kill-process" CROWDSTRIKE_PROCESS_KILL_COMMAND = "cs-falcon-rtr-kill-process" """ STANDALONE FUNCTION """ def create_commands(endpoint_id: str, process_id: str = None, process_name: str = None) -> list[CommandRunner.Command]: """ Create a list of process kill commands (of `Cortex XDR`and `CrowdstrikeFalcon`), that should be executed according to the given arguments. Args: endpoint_id: The Endpoint ID in which you would like to kill the given process. process_id: The ID of the process to kill. process_name: The name of the process to kill. Returns: A list of Commands. """ commands = [] if process_name: commands.append( CommandRunner.Command( commands=XDR_PROCESS_KILL_COMMAND, args_lst={"endpoint_ids": endpoint_id, "process_name": process_name} ) ) if process_id: commands.append( CommandRunner.Command( commands=CROWDSTRIKE_PROCESS_KILL_COMMAND, args_lst={"host_id": endpoint_id, "process_ids": process_id} ) ) return commands """ COMMAND FUNCTION """ def run_killing_process_action(endpoint_id: str, process_id: str = None, process_name: str = None) -> CommandResults: """ Given arguments to the process kill command, returns a list including the results of the commands execution. Args: endpoint_id: The Endpoint ID in which you would like to kill the given process. process_id: The ID of the process to kill. process_name: The name of the process to kill. Returns: A list of the kill process command results. """ commands = create_commands(endpoint_id, process_id, process_name) return CommandRunner.run_commands_with_summary(commands) """ MAIN FUNCTION """ def main(): args = demisto.args() endpoint_id = args.get("endpoint_id") process_id = args.get("process_id") process_name = args.get("process_name") approve_action = args.get("approve_action") if approve_action == "YES": try: # Handle missing arguments: if not endpoint_id: raise Exception("Endpoint ID was not specified.") if not (process_id or process_name): raise Exception("Process information was not specified - You should provide the process ID or the process name.") return_results(run_killing_process_action(endpoint_id, process_id, process_name)) except Exception as ex: return_error(f"Failed to execute KillProcessWrapper. Error: {ex!s}") else: # killing process was not confirmed result = CommandResults( outputs_prefix="KillProcessWrapper", outputs_key_field="", readable_output="The process was not killed because no approval was given.", ) return_results(result) """ ENTRY POINT """ if __name__ in ("__main__", "__builtin__", "builtins"): main()
README
A cross-vendor wrapper script that triggers a process kill command - i.e executes the proper kill process command according to the vendor: CrowdstrikeFalcon or Cortex XDR.
The script will only fail when the kill process action fails for both vendors.
Script Data
| Name | Description |
|---|---|
| Script Type | python3 |
| Cortex XSOAR Version | 6.1.0 |
Inputs
| Argument Name | Description |
|---|---|
| endpoint_id | The Endpoint ID in which you would like to kill the given process. |
| process_id | The ID of the process to kill. Either the process_id or the process_name must be specified. |
| process_name | The name of the process to kill. Either the process_id or the process_name must be specified. |
| approve_action | Are you sure you want to kill this process? |
Outputs
| Path | Description | Type |
|---|---|---|
| CrowdStrike.Command.kill | The outputs of the CrowdStrike kill process command. | List |
| CrowdStrike.Command.kill.Error | The status of the CrowdStrike kill process command. | String |
| CrowdStrike.Command.kill.HostID | The endpoint ID of the process. | String |
| CrowdStrike.Command.kill.ProcessID | The ID of the process. | String |
| PaloAltoNetworksXDR.ScriptRun | The outputs of the Cortex XDR kill process command. | List |
| PaloAltoNetworksXDR.ScriptRun.action_id | The ID of the kill process action initiated. | Number |
| PaloAltoNetworksXDR.ScriptRun.endpoints_count | The number of endpoints the action was initiated on. | Number |
| PaloAltoNetworksXDR.ScriptRun.status | The status of the kill process action. | Number |