Possible External RDP Brute-Force - Set Verdict

This playbook creating an array called "Suspicious Elements", which is used to count potential security threats. The following elements can be added to the array: - "IP Reputation" - DBot Score is 2-3 - "Source geolocation" - RDP Connection made from rare geo-location - Related to campaign - IP address is related to campaign, based on TIM module - Hunting results - the hunt for indicators related to the source IP and the related campaign returned results - XDR Alert search - XDR Alerts that related to the same username and endpoint, and to the MITRE tactics that comes after "Credential Access", were found. - Risky User - one or more risky users are involved in the incident, as identified by the Cortex Core - IR integration's ITDR module. - Risky Host - one or more risky hosts are involved in the incident, as identified by the Cortex Core - IR integration's ITDR module. The array will then be outputted and its size will be compared to a final threshold. If the size is greater than or equal to the threshold, the investigation's final verdict will be deemed a "True Positive."

Core · 16 tasks · 7 inputs · 1 output

Details

IDPossible External RDP Brute-Force - Set Verdict
From Version6.8.0
Tasks16

README

This playbook creating an array called “Suspicious Elements”, which is used to count potential security threats. The following elements can be added to the array:

  • “IP Reputation” - DBot Score is 2-3
  • “Source geolocation” - RDP Connection made from rare geo-location
  • Related to campaign - IP address is related to campaign, based on TIM module
  • Hunting results - the hunt for indicators related to the source IP and the related campaign returned results
  • XDR Alert search - XDR Alerts that related to the same username and endpoint, and to the MITRE tactics that comes after “Credential Access”, were found.
  • Risky User - one or more risky users are involved in the incident, as identified by the Cortex Core - IR integration’s ITDR module.
  • Risky Host - one or more risky hosts are involved in the incident, as identified by the Cortex Core - IR integration’s ITDR module.

The array will then be outputted and its size will be compared to a final threshold. If the size is greater than or equal to the threshold, the investigation’s final verdict will be deemed a “True Positive.”

Dependencies

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

Sub-playbooks

This playbook does not use any sub-playbooks.

Integrations

This playbook does not use any integrations.

Scripts

  • Set

Commands

This playbook does not use any commands.

Playbook Inputs


Name Description Default Value Required
RelatedAlerts Number of XDR alerts that are related to the same user or endpoint.   Optional
RelatedCampaign Campaign related to the external IP.   Optional
HuntResults Determine whether hunting results exist. The input value should be true or false.   Optional
UnusualGeoLocation determine whether the RDP connection has made RDP Connection made from rare geo-location. the input value should be true or false.   Optional
IpReputation The external IP reputation.   Optional
RiskyUser Usernames of users that were found as risky by Cortex Core IR. Core.RiskyUser.id Optional
RiskyHost Hostnames that were found as risky by Cortex Core IR. Core.RiskyHost.id Optional

Playbook Outputs


Path Description Type
Suspicious_Elements Array that contains all the suspicious elements. unknown

Playbook Image


Possible External RDP Brute-Force - Set Verdict

Inputs

  • RelatedAlerts — Number of XDR alerts that are related to the same user or endpoint.
  • RelatedCampaign — Campaign related to the external IP.
  • HuntResults — Determine whether hunting results exist. The input value should be true or false.
  • UnusualGeoLocation — determine whether the RDP connection has made RDP Connection made from rare geo-location. the input value should be true or false.
  • IpReputation — The external IP reputation.
  • RiskyUser — Usernames of users that were found as risky by Cortex Core IR.
  • RiskyHost — Hostnames that were found as risky by Cortex Core IR.

Outputs

  • Suspicious_Elements — Array that contains all the suspicious elements.

Flowchart

yes yes yes yes yes yes yes Start Start Related to specific campaign? Related to specific campa... Has Hunting Results? Has Hunting Results? Has related alerts? Has related alerts? Connection from unusual country? Connection from unusual c... Set unusual country - Set Set unusual country Set Set related alerts - Set Set related alerts Set Set hunting results - Set Set hunting results Set Set campaign - Set Set campaign Set Done Done IP Reputation is suspicious? IP Reputation is suspicious? Set IP Reputation - Set Set IP Reputation Set Risky user involved? Risky user involved? Risky host involved? Risky host involved? Add risky user to suspicious elements - Set Add risky user to suspici... Set Add risky host to suspicious elements - Set Add risky host to suspici... Set
id: Possible External RDP Brute-Force - Set Verdict
version: -1
contentitemexportablefields:
  contentitemfields: {}
name: Possible External RDP Brute-Force - Set Verdict
description: "This playbook creating an array called \"Suspicious Elements\", which is used to count potential security threats. The following elements can be added to the array:\n\n- \"IP Reputation\" - DBot Score is 2-3 \n- \"Source geolocation\" - RDP Connection made from rare geo-location \n-  Related to campaign - IP address is related to campaign, based on TIM module\n-  Hunting results - the hunt for indicators related to the source IP and the related campaign returned results\n-  XDR Alert search - XDR Alerts that related to the same username and endpoint, and to the MITRE tactics that comes after \"Credential Access\", were found.\n- Risky User - one or more risky users are involved in the incident, as identified by the Cortex Core - IR integration's ITDR module.\n- Risky Host - one or more risky hosts are involved in the incident, as identified by the Cortex Core - IR integration's ITDR module.\n\nThe array will then be outputted and its size will be compared to a final threshold. If the size is greater than or equal to the threshold, the investigation's final verdict will be deemed a \"True Positive.\""
starttaskid: "0"
tasks:
  "0":
    id: "0"
    taskid: 446f9247-e57a-430f-8aeb-02d0e5f53cae
    type: start
    task:
      id: 446f9247-e57a-430f-8aeb-02d0e5f53cae
      version: -1
      name: ""
      iscommand: false
      brand: ""
      description: ''
    nexttasks:
      '#none#':
      - "3"
      - "4"
      - "1"
      - "2"
      - "10"
      - "12"
      - "13"
    separatecontext: false
    continueonerrortype: ""
    view: |-
      {
        "position": {
          "x": 450,
          "y": 50
        }
      }
    note: false
    timertriggers: []
    ignoreworker: false
    skipunavailable: false
    quietmode: 0
    isoversize: false
    isautoswitchedtoquietmode: false
  "1":
    id: "1"
    taskid: 56055fa9-a5d2-4c5a-8f16-fa9f84262480
    type: condition
    task:
      id: 56055fa9-a5d2-4c5a-8f16-fa9f84262480
      version: -1
      name: Related to specific campaign?
      description: Check if a related campaign exists.
      type: condition
      iscommand: false
      brand: ""
    nexttasks:
      '#default#':
      - "9"
      "yes":
      - "8"
    separatecontext: false
    conditions:
    - label: "yes"
      condition:
      - - operator: isNotEmpty
          left:
            value:
              complex:
                root: inputs.RelatedCampaign
            iscontext: true
          right:
            value: {}
    continueonerrortype: ""
    view: |-
      {
        "position": {
          "x": 30,
          "y": 190
        }
      }
    note: false
    timertriggers: []
    ignoreworker: false
    skipunavailable: false
    quietmode: 0
    isoversize: false
    isautoswitchedtoquietmode: false
  "2":
    id: "2"
    taskid: f92cdec9-e639-463f-8b27-90e97920209e
    type: condition
    task:
      id: f92cdec9-e639-463f-8b27-90e97920209e
      version: -1
      name: Has Hunting Results?
      description: Check if hunting results exist.
      type: condition
      iscommand: false
      brand: ""
    nexttasks:
      '#default#':
      - "9"
      "yes":
      - "7"
    separatecontext: false
    conditions:
    - label: "yes"
      condition:
      - - operator: isEqualString
          left:
            value:
              complex:
                root: inputs.HuntResults
            iscontext: true
          right:
            value:
              simple: "true"
          ignorecase: true
    continueonerrortype: ""
    view: |-
      {
        "position": {
          "x": 450,
          "y": 190
        }
      }
    note: false
    timertriggers: []
    ignoreworker: false
    skipunavailable: false
    quietmode: 0
    isoversize: false
    isautoswitchedtoquietmode: false
  "3":
    id: "3"
    taskid: d82ac18e-cec4-486a-8fca-9e877d3a1e37
    type: condition
    task:
      id: d82ac18e-cec4-486a-8fca-9e877d3a1e37
      version: -1
      name: Has related alerts?
      description: Check if XDR related alerts exist.
      type: condition
      iscommand: false
      brand: ""
    nexttasks:
      '#default#':
      - "9"
      "yes":
      - "6"
    separatecontext: false
    conditions:
    - label: "yes"
      condition:
      - - operator: isNotEmpty
          left:
            value:
              complex:
                root: inputs.RelatedAlerts
            iscontext: true
          right:
            value: {}
    continueonerrortype: ""
    view: |-
      {
        "position": {
          "x": 880,
          "y": 190
        }
      }
    note: false
    timertriggers: []
    ignoreworker: false
    skipunavailable: false
    quietmode: 0
    isoversize: false
    isautoswitchedtoquietmode: false
  "4":
    id: "4"
    taskid: d3816b97-2a2f-4539-83ee-af6592faad20
    type: condition
    task:
      id: d3816b97-2a2f-4539-83ee-af6592faad20
      version: -1
      name: Connection from unusual country?
      description: Check if the connection was made from an unusual country.
      type: condition
      iscommand: false
      brand: ""
    nexttasks:
      '#default#':
      - "9"
      "yes":
      - "5"
    separatecontext: false
    conditions:
    - label: "yes"
      condition:
      - - operator: isEqualString
          left:
            value:
              complex:
                root: inputs.UnusualGeoLocation
            iscontext: true
          right:
            value:
              simple: "false"
          ignorecase: true
    continueonerrortype: ""
    view: |-
      {
        "position": {
          "x": 1300,
          "y": 190
        }
      }
    note: false
    timertriggers: []
    ignoreworker: false
    skipunavailable: false
    quietmode: 0
    isoversize: false
    isautoswitchedtoquietmode: false
  "5":
    id: "5"
    taskid: 5408731d-6b13-46de-8490-f196f1890360
    type: regular
    task:
      id: 5408731d-6b13-46de-8490-f196f1890360
      version: -1
      name: Set unusual country
      description: Set a value in context under the key you entered.
      scriptName: Set
      type: regular
      iscommand: false
      brand: ""
    nexttasks:
      '#none#':
      - "9"
    scriptarguments:
      append:
        simple: "true"
      key:
        simple: Suspicious_Elements
      value:
        simple: Unusual Country
    separatecontext: false
    continueonerrortype: ""
    view: |-
      {
        "position": {
          "x": 1300,
          "y": 350
        }
      }
    note: false
    timertriggers: []
    ignoreworker: false
    fieldMapping:
    - incidentfield: Source Geolocation
      output:
        simple: Connection from unusual country
    skipunavailable: false
    quietmode: 0
    isoversize: false
    isautoswitchedtoquietmode: false
  "6":
    id: "6"
    taskid: bc3eca1f-c99b-4630-884d-9e573739a061
    type: regular
    task:
      id: bc3eca1f-c99b-4630-884d-9e573739a061
      version: -1
      name: Set related alerts
      description: Set a value in context under the key you entered.
      scriptName: Set
      type: regular
      iscommand: false
      brand: ""
    nexttasks:
      '#none#':
      - "9"
    scriptarguments:
      append:
        simple: "true"
      key:
        simple: Suspicious_Elements
      value:
        simple: Related Alerts
    separatecontext: false
    continueonerrortype: ""
    view: |-
      {
        "position": {
          "x": 880,
          "y": 350
        }
      }
    note: false
    timertriggers: []
    ignoreworker: false
    fieldMapping:
    - incidentfield: Alert Search Results
      output:
        complex:
          root: inputs.RelatedAlerts
    skipunavailable: false
    quietmode: 0
    isoversize: false
    isautoswitchedtoquietmode: false
  "7":
    id: "7"
    taskid: 0e017a52-2083-4c77-8f32-542c271a1761
    type: regular
    task:
      id: 0e017a52-2083-4c77-8f32-542c271a1761
      version: -1
      name: Set hunting results
      description: Set a value in context under the key you entered.
      scriptName: Set
      type: regular
      iscommand: false
      brand: ""
    nexttasks:
      '#none#':
      - "9"
    scriptarguments:
      append:
        simple: "true"
      key:
        simple: Suspicious_Elements
      value:
        simple: Hunting Results
    separatecontext: false
    continueonerrortype: ""
    view: |-
      {
        "position": {
          "x": 450,
          "y": 350
        }
      }
    note: false
    timertriggers: []
    ignoreworker: false
    fieldMapping:
    - incidentfield: Hunt Results Count
      output:
        simple: Has campaign hunt results
    skipunavailable: false
    quietmode: 0
    isoversize: false
    isautoswitchedtoquietmode: false
  "8":
    id: "8"
    taskid: 0cfadcf4-e302-4714-8cdf-c22fe1640354
    type: regular
    task:
      id: 0cfadcf4-e302-4714-8cdf-c22fe1640354
      version: -1
      name: Set campaign
      description: Set a value in context under the key you entered.
      scriptName: Set
      type: regular
      iscommand: false
      brand: ""
    nexttasks:
      '#none#':
      - "9"
    scriptarguments:
      append:
        simple: "true"
      key:
        simple: Suspicious_Elements
      value:
        simple: Related Campaign
    separatecontext: false
    continueonerrortype: ""
    view: |-
      {
        "position": {
          "x": 30,
          "y": 350
        }
      }
    note: false
    timertriggers: []
    ignoreworker: false
    fieldMapping:
    - incidentfield: Part of Campaign
      output:
        complex:
          root: inputs.RelatedCampaign
    skipunavailable: false
    quietmode: 0
    isoversize: false
    isautoswitchedtoquietmode: false
  "9":
    id: "9"
    taskid: d18b4c9c-408b-4155-8a49-c07e400508b3
    type: title
    task:
      id: d18b4c9c-408b-4155-8a49-c07e400508b3
      version: -1
      name: Done
      type: title
      iscommand: false
      brand: ""
      description: ''
    separatecontext: false
    continueonerrortype: ""
    view: |-
      {
        "position": {
          "x": 450,
          "y": 520
        }
      }
    note: false
    timertriggers: []
    ignoreworker: false
    skipunavailable: false
    quietmode: 0
    isoversize: false
    isautoswitchedtoquietmode: false
  "10":
    id: "10"
    taskid: 8e87df54-e1ee-4dcb-8911-0da0077e8b65
    type: condition
    task:
      id: 8e87df54-e1ee-4dcb-8911-0da0077e8b65
      version: -1
      name: IP Reputation is suspicious?
      description: Check if the IP reputation is suspicious or higher.
      type: condition
      iscommand: false
      brand: ""
    nexttasks:
      '#default#':
      - "9"
      "yes":
      - "11"
    separatecontext: false
    conditions:
    - label: "yes"
      condition:
      - - operator: greaterThanOrEqual
          left:
            value:
              complex:
                root: inputs.IpReputation
            iscontext: true
          right:
            value:
              simple: "2"
    continueonerrortype: ""
    view: |-
      {
        "position": {
          "x": -390,
          "y": 190
        }
      }
    note: false
    timertriggers: []
    ignoreworker: false
    skipunavailable: false
    quietmode: 0
    isoversize: false
    isautoswitchedtoquietmode: false
  "11":
    id: "11"
    taskid: 2820bf44-fc60-4781-84ef-fe725a1b3628
    type: regular
    task:
      id: 2820bf44-fc60-4781-84ef-fe725a1b3628
      version: -1
      name: Set IP Reputation
      description: Set a value in context under the key you entered.
      scriptName: Set
      type: regular
      iscommand: false
      brand: ""
    nexttasks:
      '#none#':
      - "9"
    scriptarguments:
      append:
        simple: "true"
      key:
        simple: Suspicious_Elements
      value:
        simple: IP Reputation
    separatecontext: false
    continueonerrortype: ""
    view: |-
      {
        "position": {
          "x": -390,
          "y": 350
        }
      }
    note: false
    timertriggers: []
    ignoreworker: false
    skipunavailable: false
    quietmode: 0
    isoversize: false
    isautoswitchedtoquietmode: false
  "12":
    id: "12"
    taskid: 16c9bbda-5247-47c2-81d5-2909757ab287
    type: condition
    task:
      id: 16c9bbda-5247-47c2-81d5-2909757ab287
      version: -1
      name: Risky user involved?
      description: Checks if a risky user is involved in the incident.
      type: condition
      iscommand: false
      brand: ""
    nexttasks:
      '#default#':
      - "9"
      "yes":
      - "14"
    separatecontext: false
    conditions:
    - label: "yes"
      condition:
      - - operator: isNotEmpty
          left:
            value:
              complex:
                root: inputs.RiskyUser
            iscontext: true
    continueonerrortype: ""
    view: |-
      {
        "position": {
          "x": -800,
          "y": 190
        }
      }
    note: false
    timertriggers: []
    ignoreworker: false
    skipunavailable: false
    quietmode: 0
    isoversize: false
    isautoswitchedtoquietmode: false
  "13":
    id: "13"
    taskid: 03fb3ebe-d5d6-4695-81d2-5ceab496655b
    type: condition
    task:
      id: 03fb3ebe-d5d6-4695-81d2-5ceab496655b
      version: -1
      name: Risky host involved?
      description: Checks if a risky user is involved in the incident.
      type: condition
      iscommand: false
      brand: ""
    nexttasks:
      '#default#':
      - "9"
      "yes":
      - "15"
    separatecontext: false
    conditions:
    - label: "yes"
      condition:
      - - operator: isNotEmpty
          left:
            value:
              complex:
                root: inputs.RiskyHost
            iscontext: true
    continueonerrortype: ""
    view: |-
      {
        "position": {
          "x": -1210,
          "y": 190
        }
      }
    note: false
    timertriggers: []
    ignoreworker: false
    skipunavailable: false
    quietmode: 0
    isoversize: false
    isautoswitchedtoquietmode: false
  "14":
    id: "14"
    taskid: f480c89c-1647-44ec-8e9e-d1af77bcb52e
    type: regular
    task:
      id: f480c89c-1647-44ec-8e9e-d1af77bcb52e
      version: -1
      name: Add risky user to suspicious elements
      description: Set a value in context under the key you entered.
      scriptName: Set
      type: regular
      iscommand: false
      brand: ""
    nexttasks:
      '#none#':
      - "9"
    scriptarguments:
      append:
        simple: "true"
      key:
        simple: Suspicious_Elements
      value:
        simple: Risky User
    separatecontext: false
    continueonerrortype: ""
    view: |-
      {
        "position": {
          "x": -800,
          "y": 350
        }
      }
    note: false
    timertriggers: []
    ignoreworker: false
    skipunavailable: false
    quietmode: 0
    isoversize: false
    isautoswitchedtoquietmode: false
  "15":
    id: "15"
    taskid: 93f3be3f-29e0-499f-8cc3-ac8fb5e8fa06
    type: regular
    task:
      id: 93f3be3f-29e0-499f-8cc3-ac8fb5e8fa06
      version: -1
      name: Add risky host to suspicious elements
      description: Set a value in context under the key you entered.
      scriptName: Set
      type: regular
      iscommand: false
      brand: ""
    nexttasks:
      '#none#':
      - "9"
    scriptarguments:
      append:
        simple: "true"
      key:
        simple: Suspicious_Elements
      value:
        simple: Risky Host
    separatecontext: false
    continueonerrortype: ""
    view: |-
      {
        "position": {
          "x": -1210,
          "y": 350
        }
      }
    note: false
    timertriggers: []
    ignoreworker: false
    skipunavailable: false
    quietmode: 0
    isoversize: false
    isautoswitchedtoquietmode: false
view: |-
  {
    "linkLabelsPosition": {
      "10_9_#default#": 0.28,
      "3_9_#default#": 0.19,
      "4_9_#default#": 0.2
    },
    "paper": {
      "dimensions": {
        "height": 535,
        "width": 2890,
        "x": -1210,
        "y": 50
      }
    }
  }
inputs:
- key: RelatedAlerts
  value: {}
  required: false
  description: Number of XDR alerts that are related to the same user or endpoint.
  playbookInputQuery:
- key: RelatedCampaign
  value: {}
  required: false
  description: Campaign related to the external IP.
  playbookInputQuery:
- key: HuntResults
  value: {}
  required: false
  description: Determine whether hunting results exist. The input value should be true or false.
  playbookInputQuery:
- key: UnusualGeoLocation
  value: {}
  required: false
  description: ' determine whether the RDP connection has made RDP Connection made from rare geo-location. the input value should be true or false.'
  playbookInputQuery:
- key: IpReputation
  value: {}
  required: false
  description: The external IP reputation.
  playbookInputQuery:
- key: RiskyUser
  value:
    complex:
      root: Core.RiskyUser
      filters:
      - - operator: isEqualString
          left:
            value:
              simple: Core.RiskyUser.risk_level
            iscontext: true
          right:
            value:
              simple: MED
          ignorecase: true
        - operator: isEqualString
          left:
            value:
              simple: Core.RiskyUser.risk_level
            iscontext: true
          right:
            value:
              simple: HIGH
          ignorecase: true
      accessor: id
  required: false
  description: Usernames of users that were found as risky by Cortex Core IR.
  playbookInputQuery:
- key: RiskyHost
  value:
    complex:
      root: Core.RiskyHost
      filters:
      - - operator: isEqualString
          left:
            value:
              simple: Core.RiskyHost.risk_level
            iscontext: true
          right:
            value:
              simple: MED
          ignorecase: true
        - operator: isEqualString
          left:
            value:
              simple: Core.RiskyHost.risk_level
            iscontext: true
          right:
            value:
              simple: HIGH
          ignorecase: true
      accessor: id
  required: false
  description: Hostnames that were found as risky by Cortex Core IR.
  playbookInputQuery:
outputs:
- contextPath: Suspicious_Elements
  description: Array that contains all the suspicious elements.
  type: unknown
tests:
- No tests (auto formatted)
marketplaces:
- marketplacev2
- platform
fromversion: 6.8.0
system: true


supportedModules:
- agentix
- cloud
- cloud_posture
- cloud_runtime_security
- edr
- xsiam