Skip to content

Operational Data References

This Operational Data Reference (ODR) is the key a reference for how data should be formated to be accepted and parsed by the Nemesis. Various ODRs have been defined for data that is useful to collect and perform automated post processing analysis on.

Each data submission to Nemesis must consist of an metadata block and the data block. The metadata includes information that is relavent to all submissions.

{
    "metadata": {
        ...
    }
    "data" : {
        ...
    }
}

Design Considerations

The goal of Nemesis is to store operational data that may be useful to do automated post process analysis on. To this end, several considerations are made before a new ODR is added: - Is the ODR too specific to be useful to do post process analysis on during most engagements? - If a user may already submit the data directly to the binary data endpoint (ex. PCAP data), would an ODR provide additional useful information or cause more burden for the user? - Can any parameters in the ODR by defined in a way that will cause less ambiguity for the user?

Encodings and Formats

All data must be encoded as UTF-8. Data must be formated as JSON to be parsed by Nemesis. The metadata and data sections of the submission will both contain information of different formats such as timestamps, booleans, and binary data. Conventions for each are defined here. Any information format that is unique to an ODR will be specified within that specific ODR. Any string value may include hex escape sequences. Escape sequences for UTF-8 is not needed because all submissions are already in UTF-8.

Base Information Formats Standard and encodings
UUID Nemesis UUID string referencing a binary data already uploaded to Nemesis
bool True or False booleans
datetime ISO 8601 data timestamp in UTC
int/long Numeric data
string String data with \x for hex escapes

* Binary data is expected to be submitted first to the Nemesis before submitted any ODR formatted data that refers to it. Nemesis will return a UUID for a binary submission which may be used as a UUID reference parameter.

Metadata Section

The metadata section include the project name and agent from which the data was collected. Each data submission will be primarily relevant to one of these two scopes which will be defined in each ODR.

The metadata must include the time the data was sent to Nemesis, type of agent from which the data was collected (ex. beacon), a unique agent identifier, and whether the data was automatically sent from the agent or manually submitted by an operator. This information helps triage issues that may occure with data ingest to Nemesis.

The metadata must include an experation date for when the data should be removed from Nemesis. This helps with data compliance policies.

Finally, the metadata must include a type name to define which ODR the body of the data submission must conform to.

Values:

Name Format Description
agent_id string Name or unique identifier for an agent
agent_type string Name of the type of agent (ex. beacon/apollo/etc.)
automated bool True if the submission was submitted automatically
data_type string Name of the ODR the body must conform to
expiration datetime Time the data should be removed from Nemesis
source string Info about the source of the data. See each data type for possible values
project string Name or unique identifier for a project
timestamp datetime Time the C2 platform sent the data to Nemesis

Json Example:

{
    "metadata": {
        "agent_id": "339429212",
        "agent_type": "beacon",
        "automated": 1,
        "data_type": "file_data",
        "expiration": "2023-08-01T22:51:35",
        "source": "DC",
        "project": "ASSESS-X",
        "timestamp": "2022-08-01T22:51:35"
    },
    "data": {
        ...
    }
}