Cortex XDR - True Positive Incident Handling

This playbook is part of the 'Malware Investigation And Response' pack. For more information, refer to https://xsoar.pan.dev/docs/reference/packs/malware-investigation-and-response. This playbook handles a true-positive incident closure for Cortex XDR - Malware Investigation.

Cortex XDR by Palo Alto Networks · 37 tasks · 14 inputs · 0 outputs

Details

IDCortex XDR - True Positive Incident Handling
From Version6.5.0
Tasks37

README

This playbook is part of the ‘Malware Investigation And Response’ pack. For more information, refer to https://xsoar.pan.dev/docs/reference/packs/malware-investigation-and-response.
This playbook handles a true-positive incident closure for Cortex XDR - Malware Investigation.

Dependencies

This playbook uses the following sub-playbooks, integrations, and scripts.

Sub-playbooks

  • Threat Hunting - Generic
  • Cortex XDR - Isolate Endpoint

Integrations

  • CortexXDRIR
  • Cortex XDR - IR

Scripts

  • AddEvidence
  • ServiceNowCreateIncident
  • IsIntegrationAvailable

Commands

  • setIncident
  • jira-create-issue
  • xdr-blocklist-files
  • closeInvestigation
  • setIndicators
  • xdr-file-delete-script-execute

Playbook Inputs


Name Description Default Value Required
Comment Add comment to close this incident. XSOAR Incident #${incident.id} Optional
Classification Choose From - “Unknown” / “TruePositive” TruePositive Optional
BlockTag Specify the banning tag name for founded indicators. BlockTag Optional
AutoIsolation Indicates if automatic host isolation is allowed.
True/False
False Optional
TicketProjectName For ticketing systems such as Jira a project name is required.   Optional
TicketingSystemToUse The name of the ticketing system to use, for example Jira or ServiceNow   Optional
FileSha256 Enter the File SHA256 you would like to block. Also, this input can be used in the Threat Hunting step. incident.filesha256 Optional
HostID The ID of the host for running an isolation process. incident.deviceid Optional
FilePaths Enter the File paths you would like to delete. incident.processpaths Optional
ManuallyChooseIOCForHunting This input will provide you the ability to select IOCs to be hunted using the Threat Hunting - generic playbook.
If false, it will hunt for all IOCs detected in the incident.
Note: You can also insert “No Threat Hunting” to skip the Threat Hunting stage.
True Optional
IP IP value to hunt for. IP Optional
MD5 MD5 file value to hunt for. File.MD5 Optional
URL_or_Domain URL or domain to hunt for. Domain Optional
FileSha1 File SHA1 value to hunt on. File.SHA1 Optional

Playbook Outputs


There are no outputs for this playbook.

Playbook Image


Cortex XDR - True Positive Incident Handling

Inputs

  • Comment — Add comment to close this incident.
  • Classification — Choose From - "Unknown" / "TruePositive"
  • BlockTag — Specify the banning tag name for founded indicators.
  • AutoIsolation — Indicates if automatic host isolation is allowed. True/False
  • TicketProjectName — For ticketing systems such as Jira a project name is required.
  • TicketingSystemToUse — The name of the ticketing system to use, for example Jira or ServiceNow
  • FileSha256 — Enter the File SHA256 you would like to block. Also, this input can be used in the Threat Hunting step.
  • HostID — The ID of the host for running an isolation process.
  • FilePaths — Enter the File paths you would like to delete.
  • ManuallyChooseIOCForHunting — This input will provide you the ability to select IOCs to be hunted using the Threat Hunting - generic playbook. If false, it will hunt for all IOCs detected in the incident. Note: You can also insert "No Threat Hunting" to skip the Threat Hunting stage.
  • IP — IP value to hunt for.
  • MD5 — MD5 file value to hunt for.
  • URL_or_Domain — URL or domain to hunt for.
  • FileSha1 — File SHA1 value to hunt on.

Commands used

closeInvestigation jira-create-issue setIncident setIndicators xdr-blocklist-files xdr-file-delete-script-execute

Flowchart

true true JIRA SNOW true true true true true No Hunting yes yes Start Start Done Done Close XSOAR incident - closeInvestigation Close XSOAR incident closeInvestigation Approve isolation Approve isolation Is auto isolation allowed? Is auto isolation allowed? Incident Auditing Incident Auditing Is a ticketing system defined? Is a ticketing system def... Done auditing step Done auditing step Block Indicators Block Indicators Confirm Indicators to block Confirm Indicators to block Tag Indicators - setIndicators Tag Indicators setIndicators Done block indicators Done block indicators Isolate system/s Isolate system/s Done with isolating the infected device Done with isolating the i... Final Closure Final Closure Open Snow ticket Open Snow ticket Open Jira ticket - jira-create-issue Open Jira ticket jira-create-issue Is ServiceNow Available? - IsIntegrationAvailable Is ServiceNow Available? IsIntegrationAvailable Is Jira Available? - IsIntegrationAvailable Is Jira Available? IsIntegrationAvailable Done cleaning malicious file Done cleaning malicious file Clean Malicious Files Clean Malicious Files Cortex XDR - Isolate Endpoint - Cortex XDR - Isolate Endpoint Cortex XDR - Isolate Endp... Cortex XDR - Isolate Endpoint Create IOCs in Cortex XDR - Banned Hashes - xdr-blocklist-files Create IOCs in Cortex XDR... xdr-blocklist-files Confirm which File Path will be deleted Confirm which File Path w... Was there any hash selected? Was there any hash selected? Was there any hash selected? Was there any hash selected? Containment Containment Threat Hunting Threat Hunting Remediation Remediation Threat Hunting - Generic - Threat Hunting - Generic Threat Hunting - Generic Threat Hunting - Generic Should the analyst choose the indicators to hunt? Should the analyst choose... Specify IOCs to hunt upon Specify IOCs to hunt upon Tag the threat hunting results as Evidence - AddEvidence Tag the threat hunting re... AddEvidence Add 'Found additional assets' tag to the incident - setIncident Add 'Found additional ass... setIncident Are there any results? Are there any results? Threat Hunting - Generic - Threat Hunting - Generic Threat Hunting - Generic Threat Hunting - Generic xdr-file-delete-script-execute - xdr-file-delete-script-execute xdr-file-delete-script-ex... xdr-file-delete-script-execute
id: Cortex XDR - True Positive Incident Handling
inputs:
- description: Add comment to close this incident.
  key: Comment
  playbookInputQuery:
  required: false
  value:
    simple: 'XSOAR Incident #${incident.id}'
- description: Choose From - "Unknown" / "TruePositive"
  key: Classification
  playbookInputQuery:
  required: false
  value:
    simple: TruePositive
- description: Specify the banning tag name for founded indicators.
  key: BlockTag
  playbookInputQuery:
  required: false
  value:
    simple: BlockTag
- description: |-
    Indicates if automatic host isolation is allowed.
    True/False
  key: AutoIsolation
  playbookInputQuery:
  required: false
  value:
    simple: 'False'
- description: For ticketing systems such as Jira a project name is required.
  key: TicketProjectName
  playbookInputQuery:
  required: false
  value: {}
- description: The name of the ticketing system to use, for example Jira or ServiceNow
  key: TicketingSystemToUse
  playbookInputQuery:
  required: false
  value: {}
- description: Enter the File SHA256 you would like to block. Also, this input can be used in the Threat Hunting step.
  key: FileSha256
  playbookInputQuery:
  required: false
  value:
    complex:
      root: incident
      accessor: filesha256
      transformers:
      - operator: uniq
- description: The ID of the host for running an isolation process.
  key: HostID
  playbookInputQuery:
  required: false
  value:
    complex:
      root: incident
      accessor: deviceid
- description: Enter the File paths you would like to delete.
  key: FilePaths
  playbookInputQuery:
  required: false
  value:
    complex:
      root: incident
      accessor: processpaths
      transformers:
      - operator: uniq
- key: ManuallyChooseIOCForHunting
  value:
    simple: "True"
  required: false
  description: |-
    This input will provide you the ability to select IOCs to be hunted using the Threat Hunting - generic playbook.
    If false, it will hunt for all IOCs detected in the incident.
    Note: You can also insert "No Threat Hunting" to skip the Threat Hunting stage.
  playbookInputQuery:
- key: IP
  value:
    complex:
      root: IP
      filters:
      - - operator: isNotEmpty
          left:
            value:
              simple: IP.Address
            iscontext: true
      transformers:
      - operator: uniq
  required: false
  description: IP value to hunt for.
  playbookInputQuery:
- key: MD5
  value:
    complex:
      root: File.MD5
      filters:
      - - operator: isNotEmpty
          left:
            value:
              simple: File.MD5
            iscontext: true
      transformers:
      - operator: uniq
  required: false
  description: MD5 file value to hunt for.
  playbookInputQuery:
- key: URL_or_Domain
  value:
    complex:
      root: Domain
      filters:
      - - operator: isNotEmpty
          left:
            value:
              simple: Domain
            iscontext: true
      transformers:
      - operator: append
        args:
          item:
            value:
              simple: URL
            iscontext: true
      - operator: uniq
  required: false
  description: URL or domain to hunt for.
  playbookInputQuery:
- key: FileSha1
  value:
    complex:
      root: File
      accessor: SHA1
      transformers:
      - operator: append
        args:
          item:
            value:
              simple: incident.filesha1
            iscontext: true
      - operator: uniq
  required: false
  description: File SHA1 value to hunt on.
  playbookInputQuery:
name: Cortex XDR - True Positive Incident Handling
outputs: []
starttaskid: '0'
tasks:
  '0':
    id: '0'
    ignoreworker: false
    isautoswitchedtoquietmode: false
    isoversize: false
    nexttasks:
      '#none#':
      - "79"
    note: false
    quietmode: 0
    separatecontext: false
    skipunavailable: false
    task:
      brand: ''
      id: 11349e70-efd4-44e1-8f86-8e119082bd38
      iscommand: false
      name: ''
      version: -1
      description: ''
    taskid: 11349e70-efd4-44e1-8f86-8e119082bd38
    timertriggers: []
    type: start
    view: |-
      {
        "position": {
          "x": -1770,
          "y": -1430
        }
      }
    continueonerrortype: ""
  '3':
    id: '3'
    ignoreworker: false
    isautoswitchedtoquietmode: false
    isoversize: false
    note: false
    quietmode: 0
    separatecontext: false
    skipunavailable: false
    task:
      brand: ''
      id: 981b2cb5-803f-4fd5-81f7-2cc7e572174c
      iscommand: false
      name: Done
      type: title
      version: -1
      description: ''
    taskid: 981b2cb5-803f-4fd5-81f7-2cc7e572174c
    timertriggers: []
    type: title
    view: |-
      {
        "position": {
          "x": -1770,
          "y": 1205
        }
      }
    continueonerrortype: ""
  '7':
    id: '7'
    ignoreworker: false
    isautoswitchedtoquietmode: false
    isoversize: false
    nexttasks:
      '#none#':
      - '3'
    note: false
    quietmode: 0
    scriptarguments:
      id:
        complex:
          accessor: id
          root: foundIncidents
          transformers:
          - args:
              item:
                iscontext: true
                value:
                  simple: incident.id
            operator: append
      closeNotes:
        simple: ${inputs.Comment}
      closeReason:
        simple: ${inputs.Classification}
    separatecontext: false
    skipunavailable: false
    task:
      brand: Builtin
      description: commands.local.cmd.close.inv
      id: 9a9db41f-1f81-4939-89f9-4ce77e44781a
      iscommand: true
      name: Close  XSOAR incident
      script: Builtin|||closeInvestigation
      type: regular
      version: -1
    taskid: 9a9db41f-1f81-4939-89f9-4ce77e44781a
    timertriggers: []
    type: regular
    view: |-
      {
        "position": {
          "x": -1770,
          "y": 1055
        }
      }
    continueonerrortype: ""
  '19':
    id: '19'
    ignoreworker: false
    isautoswitchedtoquietmode: false
    isoversize: false
    message:
      bcc:
      body:
        simple: Approve isolation
      cc:
      format: ''
      methods: []
      replyOptions:
      - Yes
      - No
      subject:
      timings:
        completeafterreplies: 1
        completeaftersla: false
        completeafterv2: false
        retriescount: 2
        retriesinterval: 360
      to:
    nexttasks:
      '#default#':
      - '44'
      Yes:
      - '70'
    note: false
    quietmode: 0
    separatecontext: false
    skipunavailable: false
    task:
      brand: ''
      id: c26e3e04-894f-4d26-80d3-2f0df6074981
      iscommand: false
      name: Approve isolation
      description: Approve isolation
      type: condition
      version: -1
    taskid: c26e3e04-894f-4d26-80d3-2f0df6074981
    timertriggers: []
    type: condition
    view: |-
      {
        "position": {
          "x": -1820,
          "y": 410
        }
      }
    continueonerrortype: ""
  '20':
    conditions:
    - condition:
      - - ignorecase: true
          left:
            iscontext: true
            value:
              simple: inputs.AutoIsolation
          operator: isEqualString
          right:
            value:
              simple: 'true'
      label: yes
    id: '20'
    ignoreworker: false
    isautoswitchedtoquietmode: false
    isoversize: false
    nexttasks:
      '#default#':
      - '19'
      yes:
      - '70'
    note: false
    quietmode: 0
    separatecontext: false
    skipunavailable: false
    task:
      brand: ''
      id: f745236a-b4e2-491f-8670-2ed157810803
      iscommand: false
      name: Is auto isolation allowed?
      description: Is auto isolation allowed?
      type: condition
      version: -1
    taskid: f745236a-b4e2-491f-8670-2ed157810803
    timertriggers: []
    type: condition
    view: |-
      {
        "position": {
          "x": -1610,
          "y": 240
        }
      }
    continueonerrortype: ""
  '21':
    id: '21'
    ignoreworker: false
    isautoswitchedtoquietmode: false
    isoversize: false
    nexttasks:
      '#none#':
      - '22'
    note: false
    quietmode: 0
    separatecontext: false
    skipunavailable: false
    task:
      brand: ''
      id: 637d780b-eed7-458a-804f-fb5bd51d6320
      iscommand: false
      name: Incident Auditing
      type: title
      version: -1
      description: ''
    taskid: 637d780b-eed7-458a-804f-fb5bd51d6320
    timertriggers: []
    type: title
    view: |-
      {
        "position": {
          "x": -2860,
          "y": -20
        }
      }
    continueonerrortype: ""
  '22':
    conditions:
    - condition:
      - - left:
            iscontext: true
            value:
              simple: inputs.TicketingSystemToUse
          operator: containsString
          right:
            value:
              simple: SNOW
          ignorecase: true
        - operator: containsString
          left:
            value:
              simple: inputs.TicketingSystemToUse
            iscontext: true
          right:
            value:
              simple: ServiceNow
          ignorecase: true
      label: SNOW
    - condition:
      - - left:
            iscontext: true
            value:
              simple: inputs.TicketingSystemToUse
          operator: containsString
          right:
            value:
              simple: JIRA
      label: JIRA
    id: '22'
    ignoreworker: false
    isautoswitchedtoquietmode: false
    isoversize: false
    nexttasks:
      '#default#':
      - '25'
      JIRA:
      - '57'
      SNOW:
      - '56'
    note: false
    quietmode: 0
    separatecontext: false
    skipunavailable: false
    task:
      brand: ''
      id: 4998e2bc-c881-419d-8248-97e0744f8bff
      iscommand: false
      name: Is a ticketing system defined?
      description: Is a ticketing system defined?
      type: condition
      version: -1
    taskid: 4998e2bc-c881-419d-8248-97e0744f8bff
    timertriggers: []
    type: condition
    view: |-
      {
        "position": {
          "x": -2860,
          "y": 110
        }
      }
    continueonerrortype: ""
  '25':
    id: '25'
    ignoreworker: false
    isautoswitchedtoquietmode: false
    isoversize: false
    nexttasks:
      '#none#':
      - '53'
    note: false
    quietmode: 0
    separatecontext: false
    skipunavailable: false
    task:
      brand: ''
      id: c5403268-5531-455d-8224-2c7bacde048f
      iscommand: false
      name: Done auditing step
      type: title
      version: -1
      description: ''
    taskid: c5403268-5531-455d-8224-2c7bacde048f
    timertriggers: []
    type: title
    view: |-
      {
        "position": {
          "x": -2860,
          "y": 770
        }
      }
    continueonerrortype: ""
  '26':
    id: '26'
    ignoreworker: false
    isautoswitchedtoquietmode: false
    isoversize: false
    nexttasks:
      '#none#':
      - '27'
    note: false
    quietmode: 0
    separatecontext: false
    skipunavailable: false
    task:
      brand: ''
      id: dffa5a0f-848c-4c2c-8345-c1a330cdf68e
      iscommand: false
      name: Block Indicators
      type: title
      version: -1
      description: ''
    taskid: dffa5a0f-848c-4c2c-8345-c1a330cdf68e
    timertriggers: []
    type: title
    view: |-
      {
        "position": {
          "x": -990,
          "y": 120
        }
      }
    continueonerrortype: ""
  '27':
    form:
      description: ''
      expired: false
      questions:
      - defaultrows: []
        fieldassociated: ''
        gridcolumns: []
        id: '0'
        label: ''
        labelarg:
          simple: Mark the indicators to block
        options: []
        optionsarg:
        - complex:
            root: inputs.FileSha256
            transformers:
            - operator: uniq
        placeholder: ''
        readonly: false
        required: false
        tooltip: ''
        type: multiSelect
      sender: ''
      title: Indicators to block
      totalanswers: 0
    id: '27'
    ignoreworker: false
    isautoswitchedtoquietmode: false
    isoversize: false
    message:
      bcc:
      body:
      cc:
      format: ''
      methods: []
      subject:
      timings:
        completeafterreplies: 1
        completeaftersla: false
        completeafterv2: true
        retriescount: 2
        retriesinterval: 360
      to:
    nexttasks:
      '#none#':
      - '75'
    note: false
    quietmode: 0
    separatecontext: false
    skipunavailable: false
    task:
      brand: ''
      id: dc20ccc0-debb-429b-8acd-44950a7ad521
      iscommand: false
      name: Confirm Indicators to block
      description: Confirm Indicators to block
      type: collection
      version: -1
    taskid: dc20ccc0-debb-429b-8acd-44950a7ad521
    timertriggers: []
    type: collection
    view: |-
      {
        "position": {
          "x": -990,
          "y": 240
        }
      }
    continueonerrortype: ""
  '29':
    id: '29'
    ignoreworker: false
    isautoswitchedtoquietmode: false
    isoversize: false
    nexttasks:
      '#none#':
      - '30'
    note: false
    quietmode: 0
    scriptarguments:
      indicatorsValues:
        simple: ${Indicators to block.Answers.0}
      tags:
        simple: ${inputs.BlockTag}
    separatecontext: false
    skipunavailable: false
    task:
      brand: Builtin
      description: commands.local.cmd.set.indicators
      id: a75770e3-3c63-4198-8193-7f57e39f2234
      iscommand: true
      name: Tag Indicators
      script: Builtin|||setIndicators
      type: regular
      version: -1
    taskid: a75770e3-3c63-4198-8193-7f57e39f2234
    timertriggers: []
    type: regular
    view: |-
      {
        "position": {
          "x": -1200,
          "y": 580
        }
      }
    continueonerrortype: ""
  '30':
    id: '30'
    ignoreworker: false
    isautoswitchedtoquietmode: false
    isoversize: false
    nexttasks:
      '#none#':
      - '53'
    note: false
    quietmode: 0
    separatecontext: false
    skipunavailable: false
    task:
      brand: ''
      id: d0fccaee-9158-44ad-867d-3da0cb14a62d
      iscommand: false
      name: Done block indicators
      type: title
      version: -1
      description: ''
    taskid: d0fccaee-9158-44ad-867d-3da0cb14a62d
    timertriggers: []
    type: title
    view: |-
      {
        "position": {
          "x": -990,
          "y": 770
        }
      }
    continueonerrortype: ""
  '33':
    id: '33'
    ignoreworker: false
    isautoswitchedtoquietmode: false
    isoversize: false
    nexttasks:
      '#none#':
      - '20'
    note: false
    quietmode: 0
    separatecontext: false
    skipunavailable: false
    task:
      brand: ''
      id: 9db48d58-13dc-4d2b-8fc8-f934b8a8e61d
      iscommand: false
      name: Isolate system/s
      type: title
      version: -1
      description: ''
    taskid: 9db48d58-13dc-4d2b-8fc8-f934b8a8e61d
    timertriggers: []
    type: title
    view: |-
      {
        "position": {
          "x": -1610,
          "y": 120
        }
      }
    continueonerrortype: ""
  '44':
    id: '44'
    ignoreworker: false
    isautoswitchedtoquietmode: false
    isoversize: false
    nexttasks:
      '#none#':
      - '53'
    note: false
    quietmode: 0
    separatecontext: false
    skipunavailable: false
    task:
      brand: ''
      id: 0fc69008-4879-44e6-8efa-f52a037d6402
      iscommand: false
      name: Done with isolating the infected device
      type: title
      version: -1
      description: ''
    taskid: 0fc69008-4879-44e6-8efa-f52a037d6402
    timertriggers: []
    type: title
    view: |-
      {
        "position": {
          "x": -1610,
          "y": 770
        }
      }
    continueonerrortype: ""
  '53':
    id: '53'
    ignoreworker: false
    isautoswitchedtoquietmode: false
    isoversize: false
    nexttasks:
      '#none#':
      - '7'
    note: false
    quietmode: 0
    separatecontext: false
    skipunavailable: false
    task:
      brand: ''
      id: 415a1b04-7375-4189-82dd-48f9b54d4ff9
      iscommand: false
      name: Final Closure
      type: title
      version: -1
      description: ''
    taskid: 415a1b04-7375-4189-82dd-48f9b54d4ff9
    timertriggers:
    - fieldname: containmentsla
      action: stop
    - fieldname: remediationsla
      action: stop
    type: title
    view: |-
      {
        "position": {
          "x": -1770,
          "y": 920
        }
      }
    continueonerrortype: ""
  '54':
    id: '54'
    ignoreworker: false
    isautoswitchedtoquietmode: false
    isoversize: false
    nexttasks:
      '#none#':
      - '25'
    note: false
    quietmode: 0
    scriptarguments:
      description:
        simple: ${inputs.Comment}
    separatecontext: false
    skipunavailable: true
    task:
      brand: ''
      description: |-
        This script is used to wrap the generic create-record command in ServiceNow.
        You can add fields that you want to create the record with as script arguments or in the
        code and work with the records easily.
      id: e7d1c80a-7f2d-4545-8ff7-c65ea67ca265
      iscommand: false
      name: Open Snow ticket
      type: regular
      version: -1
      script: ServiceNowCreateIncident
    taskid: e7d1c80a-7f2d-4545-8ff7-c65ea67ca265
    timertriggers: []
    type: regular
    view: |-
      {
        "position": {
          "x": -3070,
          "y": 460
        }
      }
    continueonerrortype: ""
  '55':
    id: '55'
    ignoreworker: false
    isautoswitchedtoquietmode: false
    isoversize: false
    nexttasks:
      '#none#':
      - '25'
    note: false
    quietmode: 0
    scriptarguments:
      projectName:
        simple: ${inputs.TicketProjectName}
      summary:
        simple: ${inputs.Comment}
    separatecontext: false
    skipunavailable: true
    task:
      brand: ''
      description: Creates a new issue in Jira.
      id: 05db7622-4b76-443d-8c1b-969f7ab4837b
      iscommand: true
      name: Open Jira ticket
      script: '|||jira-create-issue'
      type: regular
      version: -1
    taskid: 05db7622-4b76-443d-8c1b-969f7ab4837b
    timertriggers: []
    type: regular
    view: |-
      {
        "position": {
          "x": -2650,
          "y": 460
        }
      }
    continueonerrortype: ""
  '56':
    id: '56'
    ignoreworker: false
    isautoswitchedtoquietmode: false
    isoversize: false
    nexttasks:
      yes:
      - '54'
      '#default#':
      - "25"
    note: false
    quietmode: 0
    results:
    - brandInstances
    scriptarguments:
      brandname:
        simple: ServiceNow v2
    separatecontext: false
    skipunavailable: false
    task:
      brand: ''
      description: Returns 'yes' if the integration brand is available. Otherwise returns 'no'.
      id: 741f883d-a6f0-408a-89fe-f326e39cc9da
      iscommand: false
      name: Is ServiceNow Available?
      scriptName: IsIntegrationAvailable
      type: condition
      version: -1
    taskid: 741f883d-a6f0-408a-89fe-f326e39cc9da
    timertriggers: []
    type: condition
    view: |-
      {
        "position": {
          "x": -3070,
          "y": 280
        }
      }
    continueonerrortype: ""
  '57':
    id: '57'
    ignoreworker: false
    isautoswitchedtoquietmode: false
    isoversize: false
    nexttasks:
      yes:
      - '55'
      '#default#':
      - "25"
    note: false
    quietmode: 0
    results:
    - brandInstances
    scriptarguments:
      brandname:
        simple: jira-v2
    separatecontext: false
    skipunavailable: false
    task:
      brand: ''
      description: Returns 'yes' if the integration brand is available. Otherwise returns 'no'.
      id: b6bda6ab-a83f-4e7d-804a-7c7c255db9d7
      iscommand: false
      name: Is Jira Available?
      scriptName: IsIntegrationAvailable
      type: condition
      version: -1
    taskid: b6bda6ab-a83f-4e7d-804a-7c7c255db9d7
    timertriggers: []
    type: condition
    view: |-
      {
        "position": {
          "x": -2650,
          "y": 280
        }
      }
    continueonerrortype: ""
  '64':
    id: '64'
    ignoreworker: false
    isautoswitchedtoquietmode: false
    isoversize: false
    nexttasks:
      '#none#':
      - '53'
    note: false
    quietmode: 0
    separatecontext: false
    skipunavailable: false
    task:
      brand: ''
      id: 48698586-b1d5-4a9a-8ed3-ee37b7e2a1ee
      iscommand: false
      name: Done cleaning malicious file
      type: title
      version: -1
      description: ''
    taskid: 48698586-b1d5-4a9a-8ed3-ee37b7e2a1ee
    timertriggers: []
    type: title
    view: |-
      {
        "position": {
          "x": -2240,
          "y": 770
        }
      }
    continueonerrortype: ""
  '66':
    id: '66'
    ignoreworker: false
    isautoswitchedtoquietmode: false
    isoversize: false
    nexttasks:
      '#none#':
      - '74'
    note: false
    quietmode: 0
    separatecontext: false
    skipunavailable: false
    task:
      brand: ''
      id: 084ee8e5-5651-4bf6-88ae-3360ecc1ea22
      iscommand: false
      name: Clean Malicious Files
      type: title
      version: -1
      description: ''
    taskid: 084ee8e5-5651-4bf6-88ae-3360ecc1ea22
    timertriggers: []
    type: title
    view: |-
      {
        "position": {
          "x": -2240,
          "y": -20
        }
      }
    continueonerrortype: ""
  '70':
    id: '70'
    ignoreworker: false
    isautoswitchedtoquietmode: false
    isoversize: false
    loop:
      exitCondition: ''
      iscommand: false
      max: 100
      wait: 1
    nexttasks:
      '#none#':
      - '44'
    note: false
    quietmode: 0
    scriptarguments:
      endpoint_id:
        complex:
          root: inputs.HostID
    separatecontext: true
    skipunavailable: false
    task:
      brand: ''
      description: This playbook accepts an XDR endpoint ID and isolates it using the 'Palo Alto Networks Cortex XDR - Investigation and Response' integration.
      id: 81b48996-c4a7-43c4-851f-77bedd1b169a
      iscommand: false
      name: Cortex XDR - Isolate Endpoint
      type: playbook
      version: -1
      playbookName: Cortex XDR - Isolate Endpoint
    taskid: 81b48996-c4a7-43c4-851f-77bedd1b169a
    timertriggers: []
    type: playbook
    view: |-
      {
        "position": {
          "x": -1610,
          "y": 580
        }
      }
    continueonerrortype: ""
  '72':
    id: '72'
    ignoreworker: false
    isautoswitchedtoquietmode: false
    isoversize: false
    nexttasks:
      '#none#':
      - '30'
    note: false
    quietmode: 0
    scriptarguments:
      hash_list:
        simple: ${Indicators to block.Answers.0}
      incident_id:
        simple: ${incident.externalsystemid}
    separatecontext: false
    skipunavailable: false
    task:
      brand: ''
      description: Block lists requested files which have not already been block listed or added to allow lists.
      id: f46a2197-9bb8-40c4-8916-e99ca9f5e572
      iscommand: true
      name: Create IOCs in Cortex XDR - Banned Hashes
      script: '|||xdr-blocklist-files'
      type: regular
      version: -1
    taskid: f46a2197-9bb8-40c4-8916-e99ca9f5e572
    timertriggers: []
    type: regular
    view: |-
      {
        "position": {
          "x": -780,
          "y": 580
        }
      }
    continueonerrortype: ""
  '74':
    form:
      description: ''
      expired: false
      questions:
      - defaultrows: []
        fieldassociated: ''
        gridcolumns: []
        id: '0'
        label: ''
        labelarg:
          simple: Confirm which File Path will be deleted
        options: []
        optionsarg:
        - simple: ${inputs.FilePaths}
        placeholder: ''
        readonly: false
        required: false
        tooltip: ''
        type: multiSelect
      sender: ''
      title: Confirm which File Path will be deleted
      totalanswers: 0
    id: '74'
    ignoreworker: false
    isautoswitchedtoquietmode: false
    isoversize: false
    message:
      bcc:
      body:
      cc:
      format: ''
      methods: []
      subject:
      timings:
        completeafterreplies: 1
        completeaftersla: false
        completeafterv2: true
        retriescount: 2
        retriesinterval: 360
      to:
    nexttasks:
      '#none#':
      - '76'
    note: false
    quietmode: 0
    separatecontext: false
    skipunavailable: false
    task:
      brand: ''
      id: a796d2a1-aa24-474b-86f8-a924de9a6921
      iscommand: false
      name: Confirm which File Path will be deleted
      description: Confirm which File Path will be deleted
      type: collection
      version: -1
    taskid: a796d2a1-aa24-474b-86f8-a924de9a6921
    timertriggers: []
    type: collection
    view: |-
      {
        "position": {
          "x": -2240,
          "y": 240
        }
      }
    continueonerrortype: ""
  '75':
    conditions:
    - condition:
      - - left:
            iscontext: true
            value:
              simple: Indicators to block.Answers.0
          operator: isNotEmpty
      label: yes
    id: '75'
    ignoreworker: false
    isautoswitchedtoquietmode: false
    isoversize: false
    nexttasks:
      '#default#':
      - '30'
      yes:
      - '29'
      - '72'
    note: false
    quietmode: 0
    separatecontext: false
    skipunavailable: false
    task:
      brand: ''
      id: feaee1c2-e038-485d-87d7-0f00dde68c1b
      iscommand: false
      name: Was there any hash selected?
      description: Was there any hash selected?
      type: condition
      version: -1
    taskid: feaee1c2-e038-485d-87d7-0f00dde68c1b
    timertriggers: []
    type: condition
    view: |-
      {
        "position": {
          "x": -990,
          "y": 410
        }
      }
    continueonerrortype: ""
  '76':
    conditions:
    - condition:
      - - left:
            iscontext: true
            value:
              simple: Confirm which File Path will be deleted.Answers.0
          operator: isNotEmpty
          right:
            value: {}
      label: yes
    id: '76'
    ignoreworker: false
    isautoswitchedtoquietmode: false
    isoversize: false
    nexttasks:
      '#default#':
      - '64'
      yes:
      - '91'
    note: false
    quietmode: 0
    separatecontext: false
    skipunavailable: false
    task:
      brand: ''
      id: 910e051c-6606-49c7-85a3-9abb353c0a7c
      iscommand: false
      name: Was there any hash selected?
      description: Was there any hash selected?
      type: condition
      version: -1
    taskid: 910e051c-6606-49c7-85a3-9abb353c0a7c
    timertriggers: []
    type: condition
    view: |-
      {
        "position": {
          "x": -2240,
          "y": 410
        }
      }
    continueonerrortype: ""
  "78":
    id: "78"
    taskid: 77f60012-6352-4ecf-881f-50a16d1a519e
    type: title
    task:
      id: 77f60012-6352-4ecf-881f-50a16d1a519e
      version: -1
      name: Containment
      type: title
      iscommand: false
      brand: ""
      description: ''
    nexttasks:
      '#none#':
      - "26"
      - "33"
    separatecontext: false
    continueonerrortype: ""
    view: |-
      {
        "position": {
          "x": -1300,
          "y": -20
        }
      }
    note: false
    timertriggers:
    - fieldname: containmentsla
      action: start
    ignoreworker: false
    skipunavailable: false
    quietmode: 0
    isoversize: false
    isautoswitchedtoquietmode: false
  "79":
    id: "79"
    taskid: 1a7b0178-69d8-49f9-86fa-2f8c467cea8a
    type: title
    task:
      id: 1a7b0178-69d8-49f9-86fa-2f8c467cea8a
      version: -1
      name: Threat Hunting
      type: title
      iscommand: false
      brand: ""
      description: ''
    nexttasks:
      '#none#':
      - "85"
    separatecontext: false
    continueonerrortype: ""
    view: |-
      {
        "position": {
          "x": -1770,
          "y": -1300
        }
      }
    note: false
    timertriggers: []
    ignoreworker: false
    skipunavailable: false
    quietmode: 0
    isoversize: false
    isautoswitchedtoquietmode: false
  "83":
    id: "83"
    taskid: b4819f01-6e95-4f60-844f-8c5c6dfa14c4
    type: title
    task:
      id: b4819f01-6e95-4f60-844f-8c5c6dfa14c4
      version: -1
      name: Remediation
      type: title
      iscommand: false
      brand: ""
      description: ''
    nexttasks:
      '#none#':
      - "21"
      - "78"
      - "66"
    separatecontext: false
    continueonerrortype: ""
    view: |-
      {
        "position": {
          "x": -1770,
          "y": -160
        }
      }
    note: false
    timertriggers:
    - fieldname: remediationsla
      action: start
    ignoreworker: false
    skipunavailable: false
    quietmode: 0
    isoversize: false
    isautoswitchedtoquietmode: false
  "84":
    id: "84"
    taskid: f7fb79ae-a021-4009-83c1-cc3ec00bfc66
    type: playbook
    task:
      id: f7fb79ae-a021-4009-83c1-cc3ec00bfc66
      version: -1
      name: Threat Hunting - Generic
      description: "This playbook enables threat hunting for IOCs in your enterprise. It currently supports the following integrations: - Splunk\n- Qradar\n- Pan-os \n- Cortex data lake \n- Autofocus\n- Microsoft 365 Defender"
      playbookName: Threat Hunting - Generic
      type: playbook
      iscommand: false
      brand: ""
    nexttasks:
      '#none#':
      - "89"
    scriptarguments:
      IPAddress:
        complex:
          root: inputs.IP
          transformers:
          - operator: uniq
      MD5:
        complex:
          root: inputs.MD5
          transformers:
          - operator: uniq
      QRadarTimeFrame:
        simple: LAST 7 DAYS
      SHA1:
        complex:
          root: inputs.FileSha1
          transformers:
          - operator: uniq
      SHA256:
        complex:
          root: inputs.FileSha256
          transformers:
          - operator: uniq
      SplunkEarliestTime:
        simple: -7d@d
      SplunkLatestTime:
        simple: now
      URLDomain:
        complex:
          root: inputs.URL_or_Domain
          transformers:
          - operator: uniq
    separatecontext: true
    continueonerrortype: ""
    loop:
      iscommand: false
      exitCondition: ""
      wait: 1
      max: 100
    view: |-
      {
        "position": {
          "x": -1990,
          "y": -830
        }
      }
    note: false
    timertriggers: []
    ignoreworker: false
    skipunavailable: false
    quietmode: 0
    isoversize: false
    isautoswitchedtoquietmode: false
  "85":
    id: "85"
    taskid: 15086b73-5911-4d19-8e35-0e795301c484
    type: condition
    task:
      id: 15086b73-5911-4d19-8e35-0e795301c484
      version: -1
      name: Should the analyst choose the indicators to hunt?
      description: Should the analyst choose the indicators to hunt?
      type: condition
      iscommand: false
      brand: ""
    nexttasks:
      '#default#':
      - "84"
      No Hunting:
      - "83"
      "yes":
      - "86"
    separatecontext: false
    conditions:
    - label: "yes"
      condition:
      - - operator: isEqualString
          left:
            value:
              simple: inputs.ManuallyChooseIOCForHunting
            iscontext: true
          right:
            value:
              simple: "True"
          ignorecase: true
    - label: No Hunting
      condition:
      - - operator: containsGeneral
          left:
            value:
              simple: inputs.ManuallyChooseIOCForHunting
            iscontext: true
          right:
            value:
              simple: No Threat Hunting
          ignorecase: true
    continueonerrortype: ""
    view: |-
      {
        "position": {
          "x": -1770,
          "y": -1170
        }
      }
    note: false
    timertriggers: []
    ignoreworker: false
    skipunavailable: false
    quietmode: 0
    isoversize: false
    isautoswitchedtoquietmode: false
  "86":
    id: "86"
    taskid: 35d1b2c6-b7ea-4861-8fe1-6d915ce0bc0b
    type: collection
    task:
      id: 35d1b2c6-b7ea-4861-8fe1-6d915ce0bc0b
      version: -1
      name: Specify IOCs to hunt upon
      description: Specify the IOCs to hunt for.
      type: collection
      iscommand: false
      brand: ""
    nexttasks:
      '#none#':
      - "90"
    separatecontext: false
    continueonerrortype: ""
    view: |-
      {
        "position": {
          "x": -2390,
          "y": -1000
        }
      }
    note: false
    timertriggers: []
    ignoreworker: false
    message:
      to:
        simple: Analyst
      subject:
        simple: Specify the IOCs to hunt for.
      body:
      methods:
      - email
      format: ""
      bcc:
      cc:
      timings:
        retriescount: 2
        retriesinterval: 360
        completeafterreplies: 1
        completeafterv2: true
        completeaftersla: false
    form:
      questions:
      - id: "0"
        label: ""
        labelarg:
          simple: Which IPs should be hunted for?
        required: false
        gridcolumns: []
        defaultrows: []
        type: multiSelect
        options: []
        optionsarg:
        - complex:
            root: inputs.IP
            accessor: Address
            transformers:
            - operator: uniq
        fieldassociated: ""
        placeholder: ""
        tooltip: ""
        readonly: false
      - id: "1"
        label: ""
        labelarg:
          simple: Which SHA256 files should be hunted for?
        required: false
        gridcolumns: []
        defaultrows: []
        type: multiSelect
        options: []
        optionsarg:
        - complex:
            root: inputs.FileSha256
            transformers:
            - operator: uniq
        fieldassociated: ""
        placeholder: ""
        tooltip: ""
        readonly: false
      - id: "2"
        label: ""
        labelarg:
          simple: Which SHA1 files should be hunted for?
        required: false
        gridcolumns: []
        defaultrows: []
        type: multiSelect
        options: []
        optionsarg:
        - complex:
            root: inputs.FileSha1
            transformers:
            - operator: uniq
        fieldassociated: ""
        placeholder: ""
        tooltip: ""
        readonly: false
      - id: "3"
        label: ""
        labelarg:
          simple: Which MD5 files should be hunted for?
        required: false
        gridcolumns: []
        defaultrows: []
        type: multiSelect
        options: []
        optionsarg:
        - complex:
            root: inputs.MD5
            transformers:
            - operator: uniq
        fieldassociated: ""
        placeholder: ""
        tooltip: ""
        readonly: false
      - id: "4"
        label: ""
        labelarg:
          simple: Which URLs/Domains should be hunted for?
        required: false
        gridcolumns: []
        defaultrows: []
        type: multiSelect
        options: []
        optionsarg:
        - complex:
            root: inputs.URL_or_Domain
            transformers:
            - operator: uniq
        fieldassociated: ""
        placeholder: ""
        tooltip: ""
        readonly: false
      title: Specify the IOCs to hunt upon.
      description: ""
      sender: ""
      expired: false
      totalanswers: 0
    skipunavailable: false
    quietmode: 0
    isoversize: false
    isautoswitchedtoquietmode: false
  "87":
    id: "87"
    taskid: 0cf8f731-f261-41a3-85e1-4fa4b1a9afe5
    type: regular
    task:
      id: 0cf8f731-f261-41a3-85e1-4fa4b1a9afe5
      version: -1
      name: Tag the threat hunting results as Evidence
      description: |
        Adds provided entries to the incident Evidence Board. In a playbook, this can be positioned after a task to add the previous task's entries to the Evidence Board automatically (with no need to provide arguments).
      scriptName: AddEvidence
      type: regular
      iscommand: false
      brand: ""
    nexttasks:
      '#none#':
      - "88"
    scriptarguments:
      entryIDs:
        complex:
          root: lastCompletedTaskEntries
      tags:
        simple: Found additional assets
    separatecontext: false
    continueonerrortype: ""
    view: |-
      {
        "position": {
          "x": -2190,
          "y": -490
        }
      }
    note: false
    timertriggers: []
    ignoreworker: false
    skipunavailable: false
    quietmode: 0
    isoversize: false
    isautoswitchedtoquietmode: false
  "88":
    id: "88"
    taskid: 4375e8c0-3bdd-4e5e-85a7-0cd3dd2a0f68
    type: regular
    task:
      id: 4375e8c0-3bdd-4e5e-85a7-0cd3dd2a0f68
      version: -1
      name: Add 'Found additional assets' tag to the incident
      description: commands.local.cmd.set.incident
      script: Builtin|||setIncident
      type: regular
      iscommand: true
      brand: Builtin
    nexttasks:
      '#none#':
      - "83"
    scriptarguments:
      appendTags:
        simple: "true"
      tags:
        simple: Found additional assets
    separatecontext: false
    continueonerrortype: ""
    view: |-
      {
        "position": {
          "x": -2190,
          "y": -340
        }
      }
    note: false
    timertriggers: []
    ignoreworker: false
    skipunavailable: false
    quietmode: 0
    isoversize: false
    isautoswitchedtoquietmode: false
  "89":
    id: "89"
    taskid: 9050d570-9035-49f1-8b76-ebc28731cacb
    type: condition
    task:
      id: 9050d570-9035-49f1-8b76-ebc28731cacb
      version: -1
      name: Are there any results?
      description: Are there any results?
      type: condition
      iscommand: false
      brand: ""
    nexttasks:
      '#default#':
      - "83"
      "yes":
      - "87"
    separatecontext: false
    conditions:
    - label: "yes"
      condition:
      - - operator: isNotEmpty
          left:
            value:
              simple: Splunk
            iscontext: true
        - operator: isNotEmpty
          left:
            value:
              simple: PANWHunting
            iscontext: true
        - operator: isNotEmpty
          left:
            value:
              simple: Microsoft365Defender
            iscontext: true
        - operator: isNotEmpty
          left:
            value:
              simple: QRadar
            iscontext: true
    continueonerrortype: ""
    view: |-
      {
        "position": {
          "x": -1990,
          "y": -660
        }
      }
    note: false
    timertriggers: []
    ignoreworker: false
    skipunavailable: false
    quietmode: 0
    isoversize: false
    isautoswitchedtoquietmode: false
  "90":
    id: "90"
    taskid: 19cd7958-6923-458d-8235-850eac96511e
    type: playbook
    task:
      id: 19cd7958-6923-458d-8235-850eac96511e
      version: -1
      name: Threat Hunting - Generic
      description: "This playbook enables threat hunting for IOCs in your enterprise. It currently supports the following integrations: - Splunk\n- Qradar\n- Pan-os \n- Cortex data lake \n- Autofocus\n- Microsoft 365 Defender"
      playbookName: Threat Hunting - Generic
      type: playbook
      iscommand: false
      brand: ""
    nexttasks:
      '#none#':
      - "89"
    scriptarguments:
      IPAddress:
        simple: ${Specify IOCs to hunt upon.Answers.0}
      MD5:
        simple: ${Specify IOCs to hunt upon.Answers.3}
      QRadarTimeFrame:
        simple: LAST 7 DAYS
      SHA1:
        complex:
          root: Specify IOCs to hunt upon.Answers
          accessor: "2"
      SHA256:
        complex:
          root: Specify IOCs to hunt upon.Answers
          accessor: "1"
      SplunkEarliestTime:
        simple: -7d@d
      SplunkLatestTime:
        simple: now
      URLDomain:
        complex:
          root: Specify IOCs to hunt upon.Answers
          accessor: "4"
    separatecontext: true
    continueonerrortype: ""
    loop:
      iscommand: false
      exitCondition: ""
      wait: 1
      max: 100
    view: |-
      {
        "position": {
          "x": -2390,
          "y": -830
        }
      }
    note: false
    timertriggers: []
    ignoreworker: false
    skipunavailable: false
    quietmode: 0
    isoversize: false
    isautoswitchedtoquietmode: false
  "91":
    id: "91"
    taskid: c79fa8ce-3da8-424b-865d-e1994c3ea043
    type: regular
    task:
      id: c79fa8ce-3da8-424b-865d-e1994c3ea043
      version: -1
      name: xdr-file-delete-script-execute
      description: Initiates a new endpoint script execution to delete the specified
        file.
      script: Cortex XDR - IR|||xdr-file-delete-script-execute
      type: regular
      iscommand: true
      brand: Cortex XDR - IR
    nexttasks:
      '#none#':
      - "64"
    scriptarguments:
      endpoint_ids:
        complex:
          root: inputs.HostID
      file_path:
        complex:
          root: Confirm which File Path will be deleted.Answers
          accessor: "0"
          transformers:
          - operator: uniq
      timeout_in_seconds:
        simple: "600"
    separatecontext: false
    continueonerrortype: ""
    view: |-
      {
        "position": {
          "x": -2030,
          "y": 580
        }
      }
    note: false
    timertriggers: []
    ignoreworker: false
    skipunavailable: false
    quietmode: 0
    isoversize: false
    isautoswitchedtoquietmode: false
view: |-
  {
    "linkLabelsPosition": {},
    "paper": {
      "dimensions": {
        "height": 2700,
        "width": 2670,
        "x": -3070,
        "y": -1430
      }
    }
  }
version: -1
tests:
- Test XDR Playbook
fromversion: 6.5.0
description: |-
  This playbook is part of the 'Malware Investigation And Response' pack. For more information, refer to https://xsoar.pan.dev/docs/reference/packs/malware-investigation-and-response.
  This playbook handles a true-positive incident closure for Cortex XDR - Malware Investigation.
contentitemexportablefields:
  contentitemfields: {}