Skip to content

Passing a command to an endpoint when the Target field is already populated #31

@MartinEvandt

Description

@MartinEvandt

As mentioned in issue #30, we need a way for the AP to say things like "delete this file on this endpoint".
In this example the ER AP uses the Action "delete" paired with the Target "file", leaving us without a way to refer to the target endpoint that the actuator is to execute the Command on.

The problem stems primarily from the fact that the endpoint itself is not an actuator. However in order for e.g., a file to be deleted from a machine, there has to be something on the endpoint which performs the deletion. This varies from vendor to vendor, and it's difficult to find technical write-ups or good source describing the actual mechanics, but boils down to some sort of process or service running with elevated privileges that receives and executes a command from the EDR server.

I have also yet seen an EDR API which even mentions this program/service. All of them use some sort of unique ID tied to the endpoint itself to specify the target endpoint.

With all that in mind, here are two suggestions on how we can implement this in the AP:

Suggestion 1: Refer to the endpoint in the actuator specifiers map

ID Name Type # Description
1 hostname Hostname 1 The hostname of a machine with ER Actuator capabilities. MUST be formatted as an internet host name as specified in [RFC1123]
2 endpoint_id string 0..1 Unique identifier for a particular device against which the Actuator is to execute a Command.

Sample command

{
  "action": "delete",
  "target":{
    "file": {
       "hashes":"..."
    }
  },
  "actuator": {
    "edr": {
       "hostname":"edr.organization.tld",
       "endpoint_id":"Host123ABC"
    }
  }
}

Suggestion 2: Refer to the endpoint using a Command Argument.

Type: Actuator-target (Map{1..*})

ID Name Type # Description
1 endpoint_id string 0..1 Unique identifier for a particular device on which the Actuator is to execute a Command

An added benefit here would be that we can denote which Commands this argument can be paired with in the Command Arguments matrix.

Table 2.3-2. Command Arguments Matrix

response_requested [...] Actuator-target
contain device valid [...]
contain file valid [...] valid
restart process valid [...] valid

[...]

Sample command

{
  "action": "delete",
  "target":{
    "file": {
       "hashes":"..."
    }
  },
  "args": {
    "edr": {
      "actuator_target":{
        "endpoint_id":"Host123ABC"
      }
    }
   },
  "actuator": {
    "edr": {
       "hostname":"edr.organization.tld",
    }
  }
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions