Files
2026-07-13 12:33:44 +08:00

297 lines
8.2 KiB
JSON

{
"$schema": "http://json-schema.org/draft-07/schema#",
"definitions": {
"ParserLogEntry": {
"type": "object",
"properties": {
"blob": {
"description": "The text of the log entry, can be a command input or output",
"type": "string"
},
"filepath": {
"description": "Local path to the file that the log entry was found in",
"type": "string"
},
"lineNumber": {
"description": "The starting line number of the log entry in the file",
"type": "number"
},
"lineType": {
"description": "The type of log line if the logType is 'BEACON'",
"enum": ["CHECKIN", "ERROR", "INDICATOR", "INPUT", "METADATA", "MODE", "OUTPUT", "TASK"],
"type": "string"
},
"logType": {
"description": "The type of log entry",
"enum": ["BEACON", "DOWNLOAD", "EVENT", "KEYSTROKES", "UNKNOWN", "WEBLOG"],
"type": "string"
},
"dateTime": {
"description": "The date and time the log entry was created",
"type": "string",
"format": "date-time"
}
},
"required": ["blob", "logType"]
},
"ParserCommand": {
"type": "object",
"properties": {
"operator": {
"description": "Name of the operator that sent the command\nShould match the name of an operator in the operators object",
"type": "string"
},
"beacon": {
"description": "Name of the beacon that the command was run from\nShould match the name of a beacon in the beacons object",
"type": "string"
},
"input": {
"$ref": "#/definitions/ParserLogEntry",
"description": "The input that initialized the command"
},
"commandFailed": {
"description": "Whether the command was successful",
"default": false,
"type": "boolean"
},
"output": {
"description": "The output of the command",
"$ref": "#/definitions/ParserLogEntry"
},
"attackIds": {
"description": "A list of the MITRE ATT&CK techniques used by the command",
"default": [],
"type": "array",
"items": {
"type": "string"
}
}
},
"required": ["beacon", "input"]
},
"ParserLink": {
"type": "object",
"properties": {
"from": {
"description": "The origin of the link, can be a beacon or server",
"type": "string"
},
"to": {
"description": "The destination of the link, can be a beacon",
"type": "string"
}
},
"required": ["from", "to"]
},
"ParserOperator": {
"type": "object",
"properties": {
"name": {
"description": "The name of the operator",
"type": "string"
},
"startTime": {
"description": "The date and time the operator first sent a command",
"type": "string",
"format": "date-time"
},
"endTime": {
"description": "The date and time the operator last sent a command",
"type": "string",
"format": "date-time"
}
},
"required": ["name"]
},
"ParserServer": {
"type": "object",
"properties": {
"name": {
"description": "The name of the server",
"type": "string"
},
"type": {
"description": "The type of server",
"enum": ["dns", "http", "https", "smb"],
"default": "'http'",
"type": "string"
}
},
"required": ["name"]
},
"ParserHost": {
"type": "object",
"properties": {
"name": {
"description": "The name of the host",
"type": "string"
},
"server": {
"description": "The name of the server that first ran a command or spawned a beacon on the host\nThis should match the name of a server in the servers object",
"type": "string"
},
"os": {
"description": "The operating system of the host",
"type": "string"
},
"osVersion": {
"description": "The version of the operating system of the host",
"type": "string"
},
"ip": {
"description": "The IP address of the host",
"type": "string"
},
"type": {
"description": "The type of host",
"type": "string"
}
},
"required": ["name", "server"]
},
"ParserBeacon": {
"type": "object",
"properties": {
"name": {
"description": "The name of the beacon",
"type": "string"
},
"server": {
"description": "The name of the server that spawned this beacon\nThis should match the name of a server in the servers object",
"type": "string"
},
"host": {
"description": "The name of the host that this beacon is running on\nThis should match the name of a host in the hosts object",
"type": "string"
},
"ip": {
"description": "The IP address of the host as reported by the beacon",
"type": "string"
},
"type": {
"description": "The type of beacon",
"enum": ["dns", "http", "https", "smb"],
"type": "string"
},
"port": {
"description": "The port that the beacon is communicating over",
"type": "number"
},
"process": {
"description": "The process name of the beacon",
"type": "string"
},
"processId": {
"description": "The process identifier of the beacon",
"type": "number"
},
"startTime": {
"description": "The date time the beacon was initialized or ran it's first command",
"type": "string",
"format": "date-time"
},
"endTime": {
"description": "The date time the beacon ran it's last command or was terminated",
"type": "string",
"format": "date-time"
},
"images": {
"description": "A list of images that the beacon has downloaded",
"type": "array",
"items": {
"$ref": "#/definitions/ParserImage"
}
},
"files": {
"description": "A list of files that the beacon has uploaded or downloaded",
"type": "array",
"items": {
"$ref": "#/definitions/ParserFile"
}
}
},
"required": ["host", "name", "server"]
},
"ParserImage": {
"type": "object",
"properties": {
"fileType": {
"description": "The type of image",
"enum": "*",
"type": "string"
},
"filePath": {
"description": "Path to the image that RedEye can access",
"type": "string"
},
"fileName": {
"description": "The name of the image if the local file name is different from the name of the image",
"type": "string"
}
},
"required": ["filePath", "fileType"]
},
"ParserFile": {
"type": "object",
"properties": {
"fileName": {
"description": "The name of the file if the local file name is different from the name of the file",
"type": "string"
},
"filePath": {
"description": "Path to the file that RedEye can access",
"type": "string"
},
"dateTime": {
"description": "The date time the file was created or modified",
"type": "string",
"format": "date-time"
},
"md5": {
"description": "The MD5 hash of the file",
"type": "string"
},
"fileFlag": {
"description": "Was this file uploaded to the host or downloaded from the host",
"enum": ["DOWNLOAD", "UPLOAD"],
"type": "string"
}
},
"required": ["dateTime", "fileFlag", "filePath"]
},
"ParserOutput": {
"type": "object",
"properties": {
"servers": {
"description": "A key-value pair of server names and their metadata",
"type": "{ [serverName: string] : ParserServer }"
},
"hosts": {
"description": "A key-value pair of host names and their metadata",
"type": "{ [hostName: string] : ParserHost }"
},
"beacons": {
"description": "A key-value pair of beacon names and their metadata",
"type": "{ [beaconName: string] : ParserBeacon }"
},
"operators": {
"description": "A key-value pair of operator names and the time range of their first and last command",
"type": "{ [operatorName: string] : ParserOperator }"
},
"commands": {
"description": "A key-value pair of unique command identifiers and commands with inputs and outputs, sent by operators to beacons",
"type": "{ [commandName: string] : ParserCommand }"
},
"links": {
"description": "A key-value pair of '<from>-<to>' and links from servers to beacons and beacons to beacons",
"type": "object",
"additionalProperties": {
"$ref": "#/definitions/ParserLink"
}
}
},
"required": ["beacons", "commands", "hosts", "links", "operators", "servers"]
}
}
}