summaryrefslogtreecommitdiff
path: root/schema
diff options
context:
space:
mode:
Diffstat (limited to 'schema')
-rw-r--r--schema/README.md5
-rw-r--r--schema/daemon_event_schema.json205
-rw-r--r--schema/error_event_schema.json179
-rw-r--r--schema/flow_event_schema.json1548
-rw-r--r--schema/flow_events_diagram.drawio1
-rw-r--r--schema/flow_events_diagram.pngbin0 -> 390233 bytes
-rw-r--r--schema/packet_event_schema.json122
7 files changed, 2060 insertions, 0 deletions
diff --git a/schema/README.md b/schema/README.md
new file mode 100644
index 000000000..9eb4a8447
--- /dev/null
+++ b/schema/README.md
@@ -0,0 +1,5 @@
+# schema
+
+All schema's placed in here are nDPId exclusive, meaning that they are not necessarily representing a "real-world" JSON message received by e.g. `./example/py-json-stdout`.
+This is due to the fact that libnDPI itself add's some JSON information to the serializer of which we have no control over.
+IMHO it makes no sense to include stuff here that is part of libnDPI.
diff --git a/schema/daemon_event_schema.json b/schema/daemon_event_schema.json
new file mode 100644
index 000000000..3ac32156e
--- /dev/null
+++ b/schema/daemon_event_schema.json
@@ -0,0 +1,205 @@
+{
+ "type": "object",
+ "required": [
+ "alias",
+ "source",
+ "thread_id",
+ "packet_id",
+ "daemon_event_id",
+ "daemon_event_name",
+ "global_ts_usec",
+ "version",
+ "ndpi_version"
+ ],
+ "if": {
+ "properties": { "daemon_event_name": { "enum": [ "init", "reconnect" ] } }
+ },
+ "then": {
+ "required": [ "max-flows-per-thread", "max-idle-flows-per-thread", "reader-thread-count", "flow-scan-interval", "generic-max-idle-time", "icmp-max-idle-time", "udp-max-idle-time", "tcp-max-idle-time", "max-packets-per-flow-to-send", "max-packets-per-flow-to-process", "max-packets-per-flow-to-analyse" ]
+ },
+ "if": {
+ "properties": { "daemon_event_name": { "enum": [ "status", "shutdown" ] } }
+ },
+ "then": {
+ "required": [ "packets-captured", "packets-processed", "pfring_active", "pfring_recv", "pfring_drop", "pfring_shunt", "total-skipped-flows", "total-l4-payload-len", "total-not-detected-flows", "total-guessed-flows", "total-detected-flows", "total-detection-updates", "total-updates", "current-active-flows", "total-active-flows", "total-idle-flows", "total-compressions", "total-compression-diff", "current-compression-diff", "global-alloc-bytes", "global-alloc-count", "global-free-bytes", "global-free-count", "total-events-serialized" ]
+ },
+ "properties": {
+ "alias": {
+ "type": "string"
+ },
+ "source": {
+ "type": "string"
+ },
+ "thread_id": {
+ "type": "number",
+ "minimum": 0,
+ "maximum": 31
+ },
+ "packet_id": {
+ "type": "number",
+ "minimum": 0
+ },
+ "daemon_event_id": {
+ "type": "number",
+ "minimum": 0,
+ "maximum": 4
+ },
+ "daemon_event_name": {
+ "type": "string",
+ "enum": [
+ "invalid",
+ "init",
+ "reconnect",
+ "shutdown",
+ "status"
+ ]
+ },
+ "version": {
+ "type": "string"
+ },
+ "ndpi_version": {
+ "type": "string"
+ },
+
+ "max-flows-per-thread": {
+ "type": "number"
+ },
+ "max-idle-flows-per-thread": {
+ "type": "number"
+ },
+ "reader-thread-count": {
+ "type": "number"
+ },
+ "flow-scan-interval": {
+ "type": "number"
+ },
+ "generic-max-idle-time": {
+ "type": "number"
+ },
+ "icmp-max-idle-time": {
+ "type": "number"
+ },
+ "udp-max-idle-time": {
+ "type": "number"
+ },
+ "tcp-max-idle-time": {
+ "type": "number"
+ },
+ "max-packets-per-flow-to-process": {
+ "type": "number"
+ },
+ "max-packets-per-flow-to-send": {
+ "type": "number"
+ },
+ "max-packets-per-flow-to-analyse": {
+ "type": "number"
+ },
+
+ "packets-captured": {
+ "type": "number",
+ "minimum": 0
+ },
+ "packets-processed": {
+ "type": "number",
+ "minimum": 0
+ },
+ "pfring_active": {
+ "type": "boolean"
+ },
+ "pfring_recv": {
+ "type": "number",
+ "minimum": 0
+ },
+ "pfring_drop": {
+ "type": "number",
+ "minimum": 0
+ },
+ "pfring_shunt": {
+ "type": "number",
+ "minimum": 0
+ },
+ "total-skipped-flows": {
+ "type": "number",
+ "minimum": 0
+ },
+ "total-l4-payload-len": {
+ "type": "number",
+ "minimum": 0
+ },
+ "total-not-detected-flows": {
+ "type": "number",
+ "minimum": 0
+ },
+ "total-guessed-flows": {
+ "type": "number",
+ "minimum": 0
+ },
+ "total-detected-flows": {
+ "type": "number",
+ "minimum": 0
+ },
+ "total-detection-updates": {
+ "type": "number",
+ "minimum": 0
+ },
+ "total-updates": {
+ "type": "number",
+ "minimum": 0
+ },
+ "current-active-flows": {
+ "type": "number",
+ "minimum": 0
+ },
+ "total-active-flows": {
+ "type": "number",
+ "minimum": 0
+ },
+ "total-idle-flows": {
+ "type": "number",
+ "minimum": 0
+ },
+ "total-compressions": {
+ "type": "number",
+ "minimum": 0
+ },
+ "total-compression-diff": {
+ "type": "number",
+ "minimum": 0
+ },
+ "current-compression-diff": {
+ "type": "number",
+ "minimum": 0
+ },
+ "global-alloc-bytes": {
+ "type": "number",
+ "minimum": 0
+ },
+ "global-alloc-count": {
+ "type": "number",
+ "minimum": 0
+ },
+ "global-free-bytes": {
+ "type": "number",
+ "minimum": 0
+ },
+ "global-free-count": {
+ "type": "number",
+ "minimum": 0
+ },
+ "total-events-serialized": {
+ "type": "number",
+ "minimum": 1
+ },
+ "global_ts_usec": {
+ "type": "number",
+ "if": {
+ "properties": { "daemon_event_name": { "enum": [ "init" ] } }
+ },
+ "then" : true,
+ "else" : {
+ "minimum": 1000000
+ }
+ }
+ },
+ "additionalProperties": false
+}
diff --git a/schema/error_event_schema.json b/schema/error_event_schema.json
new file mode 100644
index 000000000..41012f39c
--- /dev/null
+++ b/schema/error_event_schema.json
@@ -0,0 +1,179 @@
+{
+ "type": "object",
+ "required": [
+ "alias",
+ "source",
+ "packet_id",
+ "error_event_id",
+ "error_event_name",
+ "threshold_n",
+ "threshold_n_max",
+ "threshold_time",
+ "threshold_ts_usec",
+ "global_ts_usec"
+ ],
+
+ "if": {
+ "properties": { "error_event_name": { "enum": [ "Unknown datalink layer packet", "Unknown packet type" ] } }
+ },
+ "then": {
+ "anyOf": [
+ { "required": [ "layer_type" ] },
+ { "not": { "required": [ "thread_id" ] } }
+ ]
+ },
+
+ "if": {
+ "properties": { "error_event_name": { "enum": [ "Unknown L3 protocol" ] } }
+ },
+ "then": {
+ "anyOf": [
+ { "required": [ "protocol" ] },
+ { "not": { "required": [ "thread_id" ] } }
+ ]
+ },
+
+ "if": {
+ "properties": { "error_event_name": { "enum": [ "Packet too short", "IP4 packet too short",
+ "IP6 packet too short", "TCP packet smaller than expected",
+ "UDP packet smaller than expected",
+ "Captured packet size is smaller than expected packet size" ] } }
+ },
+ "then": {
+ "anyOf": [
+ { "required": [ "size", "expected" ] },
+ { "not": { "required": [ "thread_id" ] } }
+ ]
+ },
+
+ "if": {
+ "properties": { "error_event_name": { "enum": [ "Packet header invalid" ] } }
+ },
+ "then": {
+ "anyOf": [
+ { "required": [ "raeson" ] },
+ { "not": { "required": [ "thread_id" ] } }
+ ]
+ },
+
+ "if": {
+ "properties": { "error_event_name": { "enum": [ "Flow memory allocation failed" ] } }
+ },
+ "then": {
+ "required": [ "thread_id", "size" ]
+ },
+
+ "if": {
+ "properties": { "error_event_name": { "enum": [ "Max flows to track reached" ] } }
+ },
+ "then": {
+ "required": [ "thread_id", "current_active", "current_idle", "max_active", "max_idle" ]
+ },
+
+ "properties": {
+ "alias": {
+ "type": "string"
+ },
+ "source": {
+ "type": "string"
+ },
+ "thread_id": {
+ "type": "number"
+ },
+ "packet_id": {
+ "type": "number",
+ "minimum": 0
+ },
+ "error_event_id": {
+ "type": "number",
+ "minimum": 0,
+ "maximum": 16
+ },
+ "error_event_name": {
+ "type": "string",
+ "enum": [
+ "Unknown datalink layer packet",
+ "Unknown L3 protocol",
+ "Unsupported datalink layer",
+ "Packet too short",
+ "Unknown packet type",
+ "Packet header invalid",
+ "IP4 packet too short",
+ "Packet smaller than IP4 header",
+ "nDPI IPv4/L4 payload detection failed",
+ "IP6 packet too short",
+ "Packet smaller than IP6 header",
+ "nDPI IPv6/L4 payload detection failed",
+ "TCP packet smaller than expected",
+ "UDP packet smaller than expected",
+ "Captured packet size is smaller than expected packet size",
+ "Max flows to track reached",
+ "Flow memory allocation failed"
+ ]
+ },
+
+ "threshold_n": {
+ "type": "number",
+ "minimum": 1
+ },
+
+ "threshold_n_max": {
+ "type": "number",
+ "minimum": 1,
+ "maximum": 65535
+ },
+
+ "threshold_time": {
+ "type": "number"
+ },
+
+ "threshold_ts_usec": {
+ "type": "number"
+ },
+
+ "layer_type": {
+ "type": "number",
+ "minimum": 0
+ },
+
+ "l4_data_len": {
+ "type": "number",
+ "minimum": 0
+ },
+
+ "reason": {
+ "type": "string"
+ },
+
+ "protocol": {
+ "type": "number",
+ "minimum": 0,
+ "maximum": 65535
+ },
+
+ "size": {
+ "type": "number"
+ },
+ "expected": {
+ "type": "number"
+ },
+
+ "current_active": {
+ "type": "number"
+ },
+ "current_idle": {
+ "type": "number"
+ },
+ "max_active": {
+ "type": "number"
+ },
+ "max_idle": {
+ "type": "number"
+ },
+ "global_ts_usec": {
+ "type": "number",
+ "minimum": 0
+ }
+ },
+ "additionalProperties": false
+}
diff --git a/schema/flow_event_schema.json b/schema/flow_event_schema.json
new file mode 100644
index 000000000..b54a93a47
--- /dev/null
+++ b/schema/flow_event_schema.json
@@ -0,0 +1,1548 @@
+{
+ "type": "object",
+ "required": [
+ "alias",
+ "source",
+ "thread_id",
+ "packet_id",
+ "flow_event_id",
+ "flow_event_name",
+ "flow_id",
+ "flow_state",
+ "flow_src_packets_processed",
+ "flow_dst_packets_processed",
+ "flow_first_seen",
+ "flow_src_last_pkt_time",
+ "flow_dst_last_pkt_time",
+ "flow_idle_time",
+ "flow_src_min_l4_payload_len",
+ "flow_dst_min_l4_payload_len",
+ "flow_src_max_l4_payload_len",
+ "flow_dst_max_l4_payload_len",
+ "flow_src_tot_l4_payload_len",
+ "flow_dst_tot_l4_payload_len",
+ "l3_proto",
+ "l4_proto",
+ "midstream",
+ "thread_ts_usec",
+ "src_ip",
+ "dst_ip"
+ ],
+
+ "if": {
+ "properties": { "flow_event_name": { "enum": [ "new", "end", "idle", "update" ] } }
+ },
+ "then": {
+ "required": [ "flow_datalink", "flow_max_packets" ]
+ },
+
+ "if": {
+ "properties": { "flow_event_name": { "enum": [ "analyse" ] } }
+ },
+ "then": {
+ "required": [ "data_analysis" ]
+ },
+
+ "if": {
+ "properties": { "flow_state": { "enum": [ "finished" ] } }
+ },
+ "then": {
+ "required": [ "ndpi" ]
+ },
+
+ "if": {
+ "properties": { "flow_event_name": { "enum": [ "guessed", "detected",
+ "detection-update", "not-detected" ] } }
+ },
+ "then": {
+ "required": [ "ndpi" ]
+ },
+
+ "properties": {
+ "alias": {
+ "type": "string"
+ },
+ "source": {
+ "type": "string"
+ },
+ "thread_id": {
+ "type": "number",
+ "minimum": 0,
+ "maximum": 31
+ },
+ "packet_id": {
+ "type": "number",
+ "minimum": 0
+ },
+ "flow_event_id": {
+ "type": "number",
+ "minimum": 0,
+ "maximum": 9
+ },
+ "flow_event_name": {
+ "type": "string",
+ "enum": [
+ "invalid",
+ "new",
+ "end",
+ "idle",
+ "update",
+ "analyse",
+ "guessed",
+ "detected",
+ "detection-update",
+ "not-detected"
+ ]
+ },
+ "flow_id": {
+ "type": "number",
+ "minimum": 1
+ },
+ "flow_state": {
+ "type": "string",
+ "enum": [
+ "finished",
+ "info"
+ ]
+ },
+ "flow_datalink": {
+ "type": "number",
+ "minimum": 0,
+ "maximum": 292
+ },
+ "flow_src_packets_processed": {
+ "type": "number",
+ "minimum": 0
+ },
+ "flow_dst_packets_processed": {
+ "type": "number",
+ "minimum": 0
+ },
+ "flow_max_packets": {
+ "type": "number",
+ "minimum": 0
+ },
+ "flow_first_seen": {
+ "type": "number",
+ "minimum": 0
+ },
+ "flow_src_last_pkt_time": {
+ "type": "number",
+ "minimum": 0
+ },
+ "flow_dst_last_pkt_time": {
+ "type": "number",
+ "minimum": 0
+ },
+ "flow_idle_time": {
+ "type": "number",
+ "minimum": 1
+ },
+ "flow_src_min_l4_payload_len": {
+ "type": "number",
+ "minimum": 0
+ },
+ "flow_dst_min_l4_payload_len": {
+ "type": "number",
+ "minimum": 0
+ },
+ "flow_src_max_l4_payload_len": {
+ "type": "number",
+ "minimum": 0
+ },
+ "flow_dst_max_l4_payload_len": {
+ "type": "number",
+ "minimum": 0
+ },
+ "flow_src_tot_l4_payload_len": {
+ "type": "number",
+ "minimum": 0
+ },
+ "flow_dst_tot_l4_payload_len": {
+ "type": "number",
+ "minimum": 0
+ },
+ "l3_proto": {
+ "type": "string",
+ "enum": [
+ "ip4",
+ "ip6",
+ "unknown"
+ ]
+ },
+ "l4_proto": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string",
+ "enum": [
+ "tcp",
+ "udp",
+ "icmp",
+ "icmp6"
+ ]
+ }
+ ]
+ },
+ "midstream": {
+ "type": "number",
+ "minimum": 0,
+ "maximum": 1
+ },
+ "thread_ts_usec": {
+ "type": "number",
+ "minimum": 0
+ },
+ "src_ip": {
+ "type": "string",
+ "anyOf" : [
+ { "format": "ipv4" },
+ { "format": "ipv6" }
+ ]
+ },
+ "dst_ip": {
+ "type": "string",
+ "anyOf" : [
+ { "format": "ipv4" },
+ { "format": "ipv6" }
+ ]
+ },
+ "src_port": {
+ "type": "number",
+ "minimum": 1,
+ "maximum": 65535
+ },
+ "dst_port": {
+ "type": "number",
+ "minimum": 1,
+ "maximum": 65535
+ },
+ "ndpi": {
+ "type": "object",
+ "required": [ "proto", "proto_id", "breed", "encrypted" ],
+
+ "properties": {
+ "proto": {
+ "type": "string"
+ },
+ "proto_id": {
+ "type": "string"
+ },
+ "proto_by_ip": {
+ "type": "string"
+ },
+ "proto_by_ip_id": {
+ "type": "number"
+ },
+ "category": {
+ "type": "string",
+ "enum": [
+ "Unspecified", "Media", "VPN", "Email", "DataTransfer",
+ "Web", "SocialNetwork", "Download", "Game", "Chat", "VoIP",
+ "Database", "RemoteAccess", "Cloud", "Network", "Collaborative",
+ "RPC", "Streaming", "System", "SoftwareUpdate", "Music", "Video",
+ "Shopping", "Productivity", "FileSharing", "ConnCheck", "IoT-Scada",
+ "VirtAssistant", "Cybersecurity", "AdultContent", "Mining", "Malware",
+ "Advertisement", "Banned_Site", "Site_Unavailable", "Allowed_Site",
+ "Antimalware", "Crypto_Currency", "Gambling"
+ ]
+ },
+ "category_id": {
+ "type": "number"
+ },
+ "encrypted": {
+ "type": "number",
+ "enum": [
+ 0,
+ 1
+ ]
+ },
+ "breed": {
+ "type": "string",
+ "enum": [
+ "Safe", "Acceptable", "Fun", "Unsafe",
+ "Potentially Dangerous", "Tracker/Ads",
+ "Dangerous", "Unrated"
+ ]
+ },
+ "flow_risk": {
+ "type": "object",
+ "properties": {
+ "1": {
+ "type": "object",
+ "required": [ "risk", "severity", "risk_score" ],
+ "properties": {
+ "risk": { "type": "string", "enum": [ "XSS Attack" ] },
+ "severity": { "type": "string", "enum": [ "Severe" ] },
+ "risk_score": {
+ "type": "object",
+ "required": [ "total", "client", "server" ],
+ "properties": {
+ "total": { "type": "number", "minimum": 10, "maximum": 610 },
+ "client": { "type": "number", "minimum": 5, "maximum": 485 },
+ "server": { "type": "number", "minimum": 5, "maximum": 130 }
+ },
+ "additionalProperties": false
+ }
+ },
+ "additionalProperties": false
+ },
+ "2": {
+ "type": "object",
+ "required": [ "risk", "severity", "risk_score" ],
+ "properties": {
+ "risk": { "type": "string", "enum": [ "SQL Injection" ] },
+ "severity": { "type": "string", "enum": [ "Severe" ] },
+ "risk_score": {
+ "type": "object",
+ "required": [ "total", "client", "server" ],
+ "properties": {
+ "total": { "type": "number", "minimum": 10, "maximum": 610 },
+ "client": { "type": "number", "minimum": 5, "maximum": 485 },
+ "server": { "type": "number", "minimum": 5, "maximum": 130 }
+ },
+ "additionalProperties": false
+ }
+ },
+ "additionalProperties": false
+ },
+ "3": {
+ "type": "object",
+ "required": [ "risk", "severity", "risk_score" ],
+ "properties": {
+ "risk": { "type": "string", "enum": [ "RCE Injection" ] },
+ "severity": { "type": "string", "enum": [ "Severe" ] },
+ "risk_score": {
+ "type": "object",
+ "required": [ "total", "client", "server" ],
+ "properties": {
+ "total": { "type": "number", "minimum": 10, "maximum": 610 },
+ "client": { "type": "number", "minimum": 5, "maximum": 485 },
+ "server": { "type": "number", "minimum": 5, "maximum": 130 }
+ },
+ "additionalProperties": false
+ }
+ },
+ "additionalProperties": false
+ },
+ "4": {
+ "type": "object",
+ "required": [ "risk", "severity", "risk_score" ],
+ "properties": {
+ "risk": { "type": "string", "enum": [ "Binary App Transfer" ] },
+ "severity": { "type": "string", "enum": [ "Severe" ] },
+ "risk_score": {
+ "type": "object",
+ "required": [ "total", "client", "server" ],
+ "properties": {
+ "total": { "type": "number", "minimum": 10, "maximum": 610 },
+ "client": { "type": "number", "minimum": 5, "maximum": 485 },
+ "server": { "type": "number", "minimum": 5, "maximum": 130 }
+ },
+ "additionalProperties": false
+ }
+ },
+ "additionalProperties": false
+ },
+ "5": {
+ "type": "object",
+ "required": [ "risk", "severity", "risk_score" ],
+ "properties": {
+ "risk": { "type": "string", "enum": [ "Known Proto on Non Std Port" ] },
+ "severity": { "type": "string", "enum": [ "Medium" ] },
+ "risk_score": {
+ "type": "object",
+ "required": [ "total", "client", "server" ],
+ "properties": {
+ "total": { "type": "number", "minimum": 10, "maximum": 610 },
+ "client": { "type": "number", "minimum": 5, "maximum": 485 },
+ "server": { "type": "number", "minimum": 5, "maximum": 130 }
+ },
+ "additionalProperties": false
+ }
+ },
+ "additionalProperties": false
+ },
+ "6": {
+ "type": "object",
+ "required": [ "risk", "severity", "risk_score" ],
+ "properties": {
+ "risk": { "type": "string", "enum": [ "Self-signed Cert" ] },
+ "severity": { "type": "string", "enum": [ "High" ] },
+ "risk_score": {
+ "type": "object",
+ "required": [ "total", "client", "server" ],
+ "properties": {
+ "total": { "type": "number", "minimum": 10, "maximum": 610 },
+ "client": { "type": "number", "minimum": 5, "maximum": 485 },
+ "server": { "type": "number", "minimum": 5, "maximum": 130 }
+ },
+ "additionalProperties": false
+ }
+ },
+ "additionalProperties": false
+ },
+ "7": {
+ "type": "object",
+ "required": [ "risk", "severity", "risk_score" ],
+ "properties": {
+ "risk": { "type": "string", "enum": [ "Obsolete TLS (v1.1 or older)" ] },
+ "severity": { "type": "string", "enum": [ "High" ] },
+ "risk_score": {
+ "type": "object",
+ "required": [ "total", "client", "server" ],
+ "properties": {
+ "total": { "type": "number", "minimum": 10, "maximum": 610 },
+ "client": { "type": "number", "minimum": 5, "maximum": 485 },
+ "server": { "type": "number", "minimum": 5, "maximum": 130 }
+ },
+ "additionalProperties": false
+ }
+ },
+ "additionalProperties": false
+ },
+ "8": {
+ "type": "object",
+ "required": [ "risk", "severity", "risk_score" ],
+ "properties": {
+ "risk": { "type": "string", "enum": [ "Weak TLS Cipher" ] },
+ "severity": { "type": "string", "enum": [ "High" ] },
+ "risk_score": {
+ "type": "object",
+ "required": [ "total", "client", "server" ],
+ "properties": {
+ "total": { "type": "number", "minimum": 10, "maximum": 610 },
+ "client": { "type": "number", "minimum": 5, "maximum": 485 },
+ "server": { "type": "number", "minimum": 5, "maximum": 130 }
+ },
+ "additionalProperties": false
+ }
+ },
+ "additionalProperties": false
+ },
+ "9": {
+ "type": "object",
+ "required": [ "risk", "severity", "risk_score" ],
+ "properties": {
+ "risk": { "type": "string", "enum": [ "TLS Cert Expired" ] },
+ "severity": { "type": "string", "enum": [ "High" ] },
+ "risk_score": {
+ "type": "object",
+ "required": [ "total", "client", "server" ],
+ "properties": {
+ "total": { "type": "number", "minimum": 10, "maximum": 610 },
+ "client": { "type": "number", "minimum": 5, "maximum": 485 },
+ "server": { "type": "number", "minimum": 5, "maximum": 130 }
+ },
+ "additionalProperties": false
+ }
+ },
+ "additionalProperties": false
+ },
+ "10": {
+ "type": "object",
+ "required": [ "risk", "severity", "risk_score" ],
+ "properties": {
+ "risk": { "type": "string", "enum": [ "TLS Cert Mismatch" ] },
+ "severity": { "type": "string", "enum": [ "High" ] },
+ "risk_score": {
+ "type": "object",
+ "required": [ "total", "client", "server" ],
+ "properties": {
+ "total": { "type": "number", "minimum": 10, "maximum": 610 },
+ "client": { "type": "number", "minimum": 5, "maximum": 485 },
+ "server": { "type": "number", "minimum": 5, "maximum": 130 }
+ },
+ "additionalProperties": false
+ }
+ },
+ "additionalProperties": false
+ },
+ "11": {
+ "type": "object",
+ "required": [ "risk", "severity", "risk_score" ],
+ "properties": {
+ "risk": { "type": "string", "enum": [ "HTTP Susp User-Agent" ] },
+ "severity": { "type": "string", "enum": [ "High" ] },
+ "risk_score": {
+ "type": "object",
+ "required": [ "total", "client", "server" ],
+ "properties": {
+ "total": { "type": "number", "minimum": 10, "maximum": 610 },
+ "client": { "type": "number", "minimum": 5, "maximum": 485 },
+ "server": { "type": "number", "minimum": 5, "maximum": 130 },
+ "additionalProperties": false
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "12": {
+ "type": "object",
+ "required": [ "risk", "severity", "risk_score" ],
+ "properties": {
+ "risk": { "type": "string", "enum": [ "HTTP/TLS/QUIC Numeric Hostname/SNI" ] },
+ "severity": { "type": "string", "enum": [ "Low" ] },
+ "risk_score": {
+ "type": "object",
+ "required": [ "total", "client", "server" ],
+ "properties": {
+ "total": { "type": "number", "minimum": 10, "maximum": 610 },
+ "client": { "type": "number", "minimum": 5, "maximum": 485 },
+ "server": { "type": "number", "minimum": 5, "maximum": 130 },
+ "additionalProperties": false
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "13": {
+ "type": "object",
+ "required": [ "risk", "severity", "risk_score" ],
+ "properties": {
+ "risk": { "type": "string", "enum": [ "HTTP Susp URL" ] },
+ "severity": { "type": "string", "enum": [ "High" ] },
+ "risk_score": {
+ "type": "object",
+ "required": [ "total", "client", "server" ],
+ "properties": {
+ "total": { "type": "number", "minimum": 10, "maximum": 610 },
+ "client": { "type": "number", "minimum": 5, "maximum": 485 },
+ "server": { "type": "number", "minimum": 5, "maximum": 130 },
+ "additionalProperties": false
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "14": {
+ "type": "object",
+ "required": [ "risk", "severity", "risk_score" ],
+ "properties": {
+ "risk": { "type": "string", "enum": [ "HTTP Susp Header" ] },
+ "severity": { "type": "string", "enum": [ "High" ] },
+ "risk_score": {
+ "type": "object",
+ "required": [ "total", "client", "server" ],
+ "properties": {
+ "total": { "type": "number", "minimum": 10, "maximum": 610 },
+ "client": { "type": "number", "minimum": 5, "maximum": 485 },
+ "server": { "type": "number", "minimum": 5, "maximum": 130 },
+ "additionalProperties": false
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "15": {
+ "type": "object",
+ "required": [ "risk", "severity", "risk_score" ],
+ "properties": {
+ "risk": { "type": "string", "enum": [ "TLS (probably) Not Carrying HTTPS" ] },
+ "severity": { "type": "string", "enum": [ "Low" ] },
+ "risk_score": {
+ "type": "object",
+ "required": [ "total", "client", "server" ],
+ "properties": {
+ "total": { "type": "number", "minimum": 10, "maximum": 610 },
+ "client": { "type": "number", "minimum": 5, "maximum": 485 },
+ "server": { "type": "number", "minimum": 5, "maximum": 130 },
+ "additionalProperties": false
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "16": {
+ "type": "object",
+ "required": [ "risk", "severity", "risk_score" ],
+ "properties": {
+ "risk": { "type": "string", "enum": [ "Susp DGA Domain name" ] },
+ "severity": { "type": "string", "enum": [ "High" ] },
+ "risk_score": {
+ "type": "object",
+ "required": [ "total", "client", "server" ],
+ "properties": {
+ "total": { "type": "number", "minimum": 10, "maximum": 610 },
+ "client": { "type": "number", "minimum": 5, "maximum": 485 },
+ "server": { "type": "number", "minimum": 5, "maximum": 130 },
+ "additionalProperties": false
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "17": {
+ "type": "object",
+ "required": [ "risk", "severity", "risk_score" ],
+ "properties": {
+ "risk": { "type": "string", "enum": [ "Malformed Packet" ] },
+ "severity": { "type": "string", "enum": [ "Low" ] },
+ "risk_score": {
+ "type": "object",
+ "required": [ "total", "client", "server" ],
+ "properties": {
+ "total": { "type": "number", "minimum": 10, "maximum": 610 },
+ "client": { "type": "number", "minimum": 5, "maximum": 485 },
+ "server": { "type": "number", "minimum": 5, "maximum": 130 },
+ "additionalProperties": false
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "18": {
+ "type": "object",
+ "required": [ "risk", "severity", "risk_score" ],
+ "properties": {
+ "risk": { "type": "string", "enum": [ "SSH Obsolete Cli Vers/Cipher" ] },
+ "severity": { "type": "string", "enum": [ "High" ] },
+ "risk_score": {
+ "type": "object",
+ "required": [ "total", "client", "server" ],
+ "properties": {
+ "total": { "type": "number", "minimum": 10, "maximum": 610 },
+ "client": { "type": "number", "minimum": 5, "maximum": 485 },
+ "server": { "type": "number", "minimum": 5, "maximum": 130 },
+ "additionalProperties": false
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "19": {
+ "type": "object",
+ "required": [ "risk", "severity", "risk_score" ],
+ "properties": {
+ "risk": { "type": "string", "enum": [ "SSH Obsolete Ser Vers/Cipher" ] },
+ "severity": { "type": "string", "enum": [ "Medium" ] },
+ "risk_score": {
+ "type": "object",
+ "required": [ "total", "client", "server" ],
+ "properties": {
+ "total": { "type": "number", "minimum": 10, "maximum": 610 },
+ "client": { "type": "number", "minimum": 5, "maximum": 485 },
+ "server": { "type": "number", "minimum": 5, "maximum": 130 },
+ "additionalProperties": false
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "20": {
+ "type": "object",
+ "required": [ "risk", "severity", "risk_score" ],
+ "properties": {
+ "risk": { "type": "string", "enum": [ "SMB Insecure Vers" ] },
+ "severity": { "type": "string", "enum": [ "High" ] },
+ "risk_score": {
+ "type": "object",
+ "required": [ "total", "client", "server" ],
+ "properties": {
+ "total": { "type": "number", "minimum": 10, "maximum": 610 },
+ "client": { "type": "number", "minimum": 5, "maximum": 485 },
+ "server": { "type": "number", "minimum": 5, "maximum": 130 },
+ "additionalProperties": false
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "21": {
+ "type": "object",
+ "required": [ "risk", "severity", "risk_score" ],
+ "properties": {
+ "risk": { "type": "string", "enum": [ "TLS Susp ESNI Usage" ] },
+ "severity": { "type": "string", "enum": [ "Medium" ] },
+ "risk_score": {
+ "type": "object",
+ "required": [ "total", "client", "server" ],
+ "properties": {
+ "total": { "type": "number", "minimum": 10, "maximum": 610 },
+ "client": { "type": "number", "minimum": 5, "maximum": 485 },
+ "server": { "type": "number", "minimum": 5, "maximum": 130 },
+ "additionalProperties": false
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "22": {
+ "type": "object",
+ "required": [ "risk", "severity", "risk_score" ],
+ "properties": {
+ "risk": { "type": "string", "enum": [ "Unsafe Protocol" ] },
+ "severity": { "type": "string", "enum": [ "Low" ] },
+ "risk_score": {
+ "type": "object",
+ "required": [ "total", "client", "server" ],
+ "properties": {
+ "total": { "type": "number", "minimum": 10, "maximum": 610 },
+ "client": { "type": "number", "minimum": 5, "maximum": 485 },
+ "server": { "type": "number", "minimum": 5, "maximum": 130 },
+ "additionalProperties": false
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "23": {
+ "type": "object",
+ "required": [ "risk", "severity", "risk_score" ],
+ "properties": {
+ "risk": { "type": "string", "enum": [ "Susp DNS Traffic" ] },
+ "severity": { "type": "string", "enum": [ "Medium" ] },
+ "risk_score": {
+ "type": "object",
+ "required": [ "total", "client", "server" ],
+ "properties": {
+ "total": { "type": "number", "minimum": 10, "maximum": 610 },
+ "client": { "type": "number", "minimum": 5, "maximum": 485 },
+ "server": { "type": "number", "minimum": 5, "maximum": 130 },
+ "additionalProperties": false
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "24": {
+ "type": "object",
+ "required": [ "risk", "severity", "risk_score" ],
+ "properties": {
+ "risk": { "type": "string", "enum": [ "Missing SNI TLS Extn" ] },
+ "severity": { "type": "string", "enum": [ "Medium" ] },
+ "risk_score": {
+ "type": "object",
+ "required": [ "total", "client", "server" ],
+ "properties": {
+ "total": { "type": "number", "minimum": 10, "maximum": 610 },
+ "client": { "type": "number", "minimum": 5, "maximum": 485 },
+ "server": { "type": "number", "minimum": 5, "maximum": 130 },
+ "additionalProperties": false
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "25": {
+ "type": "object",
+ "required": [ "risk", "severity", "risk_score" ],
+ "properties": {
+ "risk": { "type": "string", "enum": [ "HTTP Susp Content" ] },
+ "severity": { "type": "string", "enum": [ "High" ] },
+ "risk_score": {
+ "type": "object",
+ "required": [ "total", "client", "server" ],
+ "properties": {
+ "total": { "type": "number", "minimum": 10, "maximum": 610 },
+ "client": { "type": "number", "minimum": 5, "maximum": 485 },
+ "server": { "type": "number", "minimum": 5, "maximum": 130 },
+ "additionalProperties": false
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "26": {
+ "type": "object",
+ "required": [ "risk", "severity", "risk_score" ],
+ "properties": {
+ "risk": { "type": "string", "enum": [ "Risky ASN" ] },
+ "severity": { "type": "string", "enum": [ "Medium" ] },
+ "risk_score": {
+ "type": "object",
+ "required": [ "total", "client", "server" ],
+ "properties": {
+ "total": { "type": "number", "minimum": 10, "maximum": 610 },
+ "client": { "type": "number", "minimum": 5, "maximum": 485 },
+ "server": { "type": "number", "minimum": 5, "maximum": 130 },
+ "additionalProperties": false
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "27": {
+ "type": "object",
+ "required": [ "risk", "severity", "risk_score" ],
+ "properties": {
+ "risk": { "type": "string", "enum": [ "Risky Domain Name" ] },
+ "severity": { "type": "string", "enum": [ "Medium" ] },
+ "risk_score": {
+ "type": "object",
+ "required": [ "total", "client", "server" ],
+ "properties": {
+ "total": { "type": "number", "minimum": 10, "maximum": 610 },
+ "client": { "type": "number", "minimum": 5, "maximum": 485 },
+ "server": { "type": "number", "minimum": 5, "maximum": 130 },
+ "additionalProperties": false
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "28": {
+ "type": "object",
+ "required": [ "risk", "severity", "risk_score" ],
+ "properties": {
+ "risk": { "type": "string", "enum": [ "Malicious JA3 Fingerp." ] },
+ "severity": { "type": "string", "enum": [ "Medium" ] },
+ "risk_score": {
+ "type": "object",
+ "required": [ "total", "client", "server" ],
+ "properties": {
+ "total": { "type": "number", "minimum": 10, "maximum": 610 },
+ "client": { "type": "number", "minimum": 5, "maximum": 485 },
+ "server": { "type": "number", "minimum": 5, "maximum": 130 },
+ "additionalProperties": false
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "29": {
+ "type": "object",
+ "required": [ "risk", "severity", "risk_score" ],
+ "properties": {
+ "risk": { "type": "string", "enum": [ "Malicious SSL Cert/SHA1 Fingerp." ] },
+ "severity": { "type": "string", "enum": [ "Medium" ] },
+ "risk_score": {
+ "type": "object",
+ "required": [ "total", "client", "server" ],
+ "properties": {
+ "total": { "type": "number", "minimum": 10, "maximum": 610 },
+ "client": { "type": "number", "minimum": 5, "maximum": 485 },
+ "server": { "type": "number", "minimum": 5, "maximum": 130 },
+ "additionalProperties": false
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "30": {
+ "type": "object",
+ "required": [ "risk", "severity", "risk_score" ],
+ "properties": {
+ "risk": { "type": "string", "enum": [ "Desktop/File Sharing" ] },
+ "severity": { "type": "string", "enum": [ "Low" ] },
+ "risk_score": {
+ "type": "object",
+ "required": [ "total", "client", "server" ],
+ "properties": {
+ "total": { "type": "number", "minimum": 10, "maximum": 610 },
+ "client": { "type": "number", "minimum": 5, "maximum": 485 },
+ "server": { "type": "number", "minimum": 5, "maximum": 130 },
+ "additionalProperties": false
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "31": {
+ "type": "object",
+ "required": [ "risk", "severity", "risk_score" ],
+ "properties": {
+ "risk": { "type": "string", "enum": [ "Uncommon TLS ALPN" ] },
+ "severity": { "type": "string", "enum": [ "Medium" ] },
+ "risk_score": {
+ "type": "object",
+ "required": [ "total", "client", "server" ],
+ "properties": {
+ "total": { "type": "number", "minimum": 10, "maximum": 610 },
+ "client": { "type": "number", "minimum": 5, "maximum": 485 },
+ "server": { "type": "number", "minimum": 5, "maximum": 130 },
+ "additionalProperties": false
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "32": {
+ "type": "object",
+ "required": [ "risk", "severity", "risk_score" ],
+ "properties": {
+ "risk": { "type": "string", "enum": [ "TLS Cert Validity Too Long" ] },
+ "severity": { "type": "string", "enum": [ "Medium" ] },
+ "risk_score": {
+ "type": "object",
+ "required": [ "total", "client", "server" ],
+ "properties": {
+ "total": { "type": "number", "minimum": 10, "maximum": 610 },
+ "client": { "type": "number", "minimum": 5, "maximum": 485 },
+ "server": { "type": "number", "minimum": 5, "maximum": 130 },
+ "additionalProperties": false
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "33": {
+ "type": "object",
+ "required": [ "risk", "severity", "risk_score" ],
+ "properties": {
+ "risk": { "type": "string", "enum": [ "TLS Susp Extn" ] },
+ "severity": { "type": "string", "enum": [ "High" ] },
+ "risk_score": {
+ "type": "object",
+ "required": [ "total", "client", "server" ],
+ "properties": {
+ "total": { "type": "number", "minimum": 10, "maximum": 610 },
+ "client": { "type": "number", "minimum": 5, "maximum": 485 },
+ "server": { "type": "number", "minimum": 5, "maximum": 130 },
+ "additionalProperties": false
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "34": {
+ "type": "object",
+ "required": [ "risk", "severity", "risk_score" ],
+ "properties": {
+ "risk": { "type": "string", "enum": [ "TLS Fatal Alert" ] },
+ "severity": { "type": "string", "enum": [ "Low" ] },
+ "risk_score": {
+ "type": "object",
+ "required": [ "total", "client", "server" ],
+ "properties": {
+ "total": { "type": "number", "minimum": 10, "maximum": 610 },
+ "client": { "type": "number", "minimum": 5, "maximum": 485 },
+ "server": { "type": "number", "minimum": 5, "maximum": 130 },
+ "additionalProperties": false
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "35": {
+ "type": "object",
+ "required": [ "risk", "severity", "risk_score" ],
+ "properties": {
+ "risk": { "type": "string", "enum": [ "Susp Entropy" ] },
+ "severity": { "type": "string", "enum": [ "Low" ] },
+ "risk_score": {
+ "type": "object",
+ "required": [ "total", "client", "server" ],
+ "properties": {
+ "total": { "type": "number", "minimum": 10, "maximum": 610 },
+ "client": { "type": "number", "minimum": 5, "maximum": 485 },
+ "server": { "type": "number", "minimum": 5, "maximum": 130 },
+ "additionalProperties": false
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "36": {
+ "type": "object",
+ "required": [ "risk", "severity", "risk_score" ],
+ "properties": {
+ "risk": { "type": "string", "enum": [ "Clear-Text Credentials" ] },
+ "severity": { "type": "string", "enum": [ "High" ] },
+ "risk_score": {
+ "type": "object",
+ "required": [ "total", "client", "server" ],
+ "properties": {
+ "total": { "type": "number", "minimum": 10, "maximum": 610 },
+ "client": { "type": "number", "minimum": 5, "maximum": 485 },
+ "server": { "type": "number", "minimum": 5, "maximum": 130 },
+ "additionalProperties": false
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "37": {
+ "type": "object",
+ "required": [ "risk", "severity", "risk_score" ],
+ "properties": {
+ "risk": { "type": "string", "enum": [ "Large DNS Packet (512+ bytes)" ] },
+ "severity": { "type": "string", "enum": [ "Medium" ] },
+ "risk_score": {
+ "type": "object",
+ "required": [ "total", "client", "server" ],
+ "properties": {
+ "total": { "type": "number", "minimum": 10, "maximum": 610 },
+ "client": { "type": "number", "minimum": 5, "maximum": 485 },
+ "server": { "type": "number", "minimum": 5, "maximum": 130 },
+ "additionalProperties": false
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "38": {
+ "type": "object",
+ "required": [ "risk", "severity", "risk_score" ],
+ "properties": {
+ "risk": { "type": "string", "enum": [ "Fragmented DNS Message" ] },
+ "severity": { "type": "string", "enum": [ "Medium" ] },
+ "risk_score": {
+ "type": "object",
+ "required": [ "total", "client", "server" ],
+ "properties": {
+ "total": { "type": "number", "minimum": 10, "maximum": 610 },
+ "client": { "type": "number", "minimum": 5, "maximum": 485 },
+ "server": { "type": "number", "minimum": 5, "maximum": 130 },
+ "additionalProperties": false
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "39": {
+ "type": "object",
+ "required": [ "risk", "severity", "risk_score" ],
+ "properties": {
+ "risk": { "type": "string", "enum": [ "Non-Printable/Invalid Chars Detected" ] },
+ "severity": { "type": "string", "enum": [ "High" ] },
+ "risk_score": {
+ "type": "object",
+ "required": [ "total", "client", "server" ],
+ "properties": {
+ "total": { "type": "number", "minimum": 10, "maximum": 610 },
+ "client": { "type": "number", "minimum": 5, "maximum": 485 },
+ "server": { "type": "number", "minimum": 5, "maximum": 130 },
+ "additionalProperties": false
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "40": {
+ "type": "object",
+ "required": [ "risk", "severity", "risk_score" ],
+ "properties": {
+ "risk": { "type": "string", "enum": [ "Possible Exploit Attempt" ] },
+ "severity": { "type": "string", "enum": [ "Severe" ] },
+ "risk_score": {
+ "type": "object",
+ "required": [ "total", "client", "server" ],
+ "properties": {
+ "total": { "type": "number", "minimum": 10, "maximum": 610 },
+ "client": { "type": "number", "minimum": 5, "maximum": 485 },
+ "server": { "type": "number", "minimum": 5, "maximum": 130 },
+ "additionalProperties": false
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "41": {
+ "type": "object",
+ "required": [ "risk", "severity", "risk_score" ],
+ "properties": {
+ "risk": { "type": "string", "enum": [ "TLS Cert About To Expire" ] },
+ "severity": { "type": "string", "enum": [ "Medium" ] },
+ "risk_score": {
+ "type": "object",
+ "required": [ "total", "client", "server" ],
+ "properties": {
+ "total": { "type": "number", "minimum": 10, "maximum": 610 },
+ "client": { "type": "number", "minimum": 5, "maximum": 485 },
+ "server": { "type": "number", "minimum": 5, "maximum": 130 },
+ "additionalProperties": false
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "42": {
+ "type": "object",
+ "required": [ "risk", "severity", "risk_score" ],
+ "properties": {
+ "risk": { "type": "string", "enum": [ "IDN Domain Name" ] },
+ "severity": { "type": "string", "enum": [ "Low" ] },
+ "risk_score": {
+ "type": "object",
+ "required": [ "total", "client", "server" ],
+ "properties": {
+ "total": { "type": "number", "minimum": 10, "maximum": 610 },
+ "client": { "type": "number", "minimum": 5, "maximum": 485 },
+ "server": { "type": "number", "minimum": 5, "maximum": 130 },
+ "additionalProperties": false
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "43": {
+ "type": "object",
+ "required": [ "risk", "severity", "risk_score" ],
+ "properties": {
+ "risk": { "type": "string", "enum": [ "Error Code" ] },
+ "severity": { "type": "string", "enum": [ "Low" ] },
+ "risk_score": {
+ "type": "object",
+ "required": [ "total", "client", "server" ],
+ "properties": {
+ "total": { "type": "number", "minimum": 10, "maximum": 610 },
+ "client": { "type": "number", "minimum": 5, "maximum": 485 },
+ "server": { "type": "number", "minimum": 5, "maximum": 130 },
+ "additionalProperties": false
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "44": {
+ "type": "object",
+ "required": [ "risk", "severity", "risk_score" ],
+ "properties": {
+ "risk": { "type": "string", "enum": [ "Crawler/Bot" ] },
+ "severity": { "type": "string", "enum": [ "Low" ] },
+ "risk_score": {
+ "type": "object",
+ "required": [ "total", "client", "server" ],
+ "properties": {
+ "total": { "type": "number", "minimum": 10, "maximum": 610 },
+ "client": { "type": "number", "minimum": 5, "maximum": 485 },
+ "server": { "type": "number", "minimum": 5, "maximum": 130 },
+ "additionalProperties": false
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "45": {
+ "type": "object",
+ "required": [ "risk", "severity", "risk_score" ],
+ "properties": {
+ "risk": { "type": "string", "enum": [ "Anonymous Subscriber" ] },
+ "severity": { "type": "string", "enum": [ "Medium" ] },
+ "risk_score": {
+ "type": "object",
+ "required": [ "total", "client", "server" ],
+ "properties": {
+ "total": { "type": "number", "minimum": 10, "maximum": 610 },
+ "client": { "type": "number", "minimum": 5, "maximum": 485 },
+ "server": { "type": "number", "minimum": 5, "maximum": 130 },
+ "additionalProperties": false
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "46": {
+ "type": "object",
+ "required": [ "risk", "severity", "risk_score" ],
+ "properties": {
+ "risk": { "type": "string", "enum": [ "Unidirectional Traffic" ] },
+ "severity": { "type": "string", "enum": [ "Low" ] },
+ "risk_score": {
+ "type": "object",
+ "required": [ "total", "client", "server" ],
+ "properties": {
+ "total": { "type": "number", "minimum": 10, "maximum": 610 },
+ "client": { "type": "number", "minimum": 5, "maximum": 485 },
+ "server": { "type": "number", "minimum": 5, "maximum": 130 },
+ "additionalProperties": false
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "47": {
+ "type": "object",
+ "required": [ "risk", "severity", "risk_score" ],
+ "properties": {
+ "risk": { "type": "string", "enum": [ "HTTP Obsolete Server" ] },
+ "severity": { "type": "string", "enum": [ "Medium" ] },
+ "risk_score": {
+ "type": "object",
+ "required": [ "total", "client", "server" ],
+ "properties": {
+ "total": { "type": "number", "minimum": 10, "maximum": 610 },
+ "client": { "type": "number", "minimum": 5, "maximum": 485 },
+ "server": { "type": "number", "minimum": 5, "maximum": 130 },
+ "additionalProperties": false
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "48": {
+ "type": "object",
+ "required": [ "risk", "severity", "risk_score" ],
+ "properties": {
+ "risk": { "type": "string", "enum": [ "Periodic Flow" ] },
+ "severity": { "type": "string", "enum": [ "Low" ] },
+ "risk_score": {
+ "type": "object",
+ "required": [ "total", "client", "server" ],
+ "properties": {
+ "total": { "type": "number", "minimum": 10, "maximum": 610 },
+ "client": { "type": "number", "minimum": 5, "maximum": 485 },
+ "server": { "type": "number", "minimum": 5, "maximum": 130 },
+ "additionalProperties": false
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "49": {
+ "type": "object",
+ "required": [ "risk", "severity", "risk_score" ],
+ "properties": {
+ "risk": { "type": "string", "enum": [ "Minor Issues" ] },
+ "severity": { "type": "string", "enum": [ "Low" ] },
+ "risk_score": {
+ "type": "object",
+ "required": [ "total", "client", "server" ],
+ "properties": {
+ "total": { "type": "number", "minimum": 10, "maximum": 610 },
+ "client": { "type": "number", "minimum": 5, "maximum": 485 },
+ "server": { "type": "number", "minimum": 5, "maximum": 130 },
+ "additionalProperties": false
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "50": {
+ "type": "object",
+ "required": [ "risk", "severity", "risk_score" ],
+ "properties": {
+ "risk": { "type": "string", "enum": [ "TCP Connection Issues" ] },
+ "severity": { "type": "string", "enum": [ "Medium" ] },
+ "risk_score": {
+ "type": "object",
+ "required": [ "total", "client", "server" ],
+ "properties": {
+ "total": { "type": "number", "minimum": 10, "maximum": 610 },
+ "client": { "type": "number", "minimum": 5, "maximum": 485 },
+ "server": { "type": "number", "minimum": 5, "maximum": 130 },
+ "additionalProperties": false
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "51": {
+ "type": "object",
+ "required": [ "risk", "severity", "risk_score" ],
+ "properties": {
+ "risk": { "type": "string", "enum": [ "Fully Encrypted Flow" ] },
+ "severity": { "type": "string", "enum": [ "Medium" ] },
+ "risk_score": {
+ "type": "object",
+ "required": [ "total", "client", "server" ],
+ "properties": {
+ "total": { "type": "number", "minimum": 10, "maximum": 610 },
+ "client": { "type": "number", "minimum": 5, "maximum": 485 },
+ "server": { "type": "number", "minimum": 5, "maximum": 130 },
+ "additionalProperties": false
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "52": {
+ "type": "object",
+ "required": [ "risk", "severity", "risk_score" ],
+ "properties": {
+ "risk": { "type": "string", "enum": [ "ALPN/SNI Mismatch" ] },
+ "severity": { "type": "string", "enum": [ "Medium" ] },
+ "risk_score": {
+ "type": "object",
+ "required": [ "total", "client", "server" ],
+ "properties": {
+ "total": { "type": "number", "minimum": 10, "maximum": 610 },
+ "client": { "type": "number", "minimum": 5, "maximum": 485 },
+ "server": { "type": "number", "minimum": 5, "maximum": 130 },
+ "additionalProperties": false
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "53": {
+ "type": "object",
+ "required": [ "risk", "severity", "risk_score" ],
+ "properties": {
+ "risk": { "type": "string", "enum": [ "Client Contacted A Malware Host" ] },
+ "severity": { "type": "string", "enum": [ "Severe" ] },
+ "risk_score": {
+ "type": "object",
+ "required": [ "total", "client", "server" ],
+ "properties": {
+ "total": { "type": "number", "minimum": 10, "maximum": 610 },
+ "client": { "type": "number", "minimum": 5, "maximum": 485 },
+ "server": { "type": "number", "minimum": 5, "maximum": 130 }
+ },
+ "additionalProperties": false
+ }
+ },
+ "additionalProperties": false
+ },
+ "54": {
+ "type": "object",
+ "required": [ "risk", "severity", "risk_score" ],
+ "properties": {
+ "risk": { "type": "string", "enum": [ "Binary File/Data Transfer (Attempt)" ] },
+ "severity": { "type": "string", "enum": [ "Medium" ] },
+ "risk_score": {
+ "type": "object",
+ "required": [ "total", "client", "server" ],
+ "properties": {
+ "total": { "type": "number", "minimum": 10, "maximum": 610 },
+ "client": { "type": "number", "minimum": 5, "maximum": 485 },
+ "server": { "type": "number", "minimum": 5, "maximum": 130 }
+ },
+ "additionalProperties": false
+ }
+ },
+ "additionalProperties": false
+ },
+ "55": {
+ "type": "object",
+ "required": [ "risk", "severity", "risk_score" ],
+ "properties": {
+ "risk": { "type": "string", "enum": [ "Probing Attempt" ] },
+ "severity": { "type": "string" },
+ "risk_score": {
+ "type": "object",
+ "required": [ "total", "client", "server" ],
+ "properties": {
+ "total": { "type": "number", "minimum": 10, "maximum": 610 },
+ "client": { "type": "number", "minimum": 5, "maximum": 485 },
+ "server": { "type": "number", "minimum": 5, "maximum": 130 },
+ "additionalProperties": false
+ }
+ }
+ },
+ "additionalProperties": false
+ }
+ },
+ "additionalProperties": false
+ },
+ "confidence": {
+ "type": "object",
+ "properties": {
+ "0": {
+ "type": "string",
+ "enum": [ "Unknown" ]
+ },
+ "1": {
+ "type": "string",
+ "enum": [ "Match by port" ]
+ },
+ "2": {
+ "type": "string",
+ "enum": [ "nBPF" ]
+ },
+ "3": {
+ "type": "string",
+ "enum": [ "DPI (partial)" ]
+ },
+ "4": {
+ "type": "string",
+ "enum": [ "DPI (partial cache)" ]
+ },
+ "5": {
+ "type": "string",
+ "enum": [ "DPI (cache)" ]
+ },
+ "6": {
+ "type": "string",
+ "enum": [ "DPI" ]
+ },
+ "7": {
+ "type": "string",
+ "enum": [ "Match by IP" ]
+ },
+ "8": {
+ "type": "string",
+ "enum": [ "DPI (aggressive)" ]
+ }
+ },
+ "additionalProperties": false
+ },
+ "entropy": {
+ "type": "number"
+ },
+ "hostname": {
+ "type": "string"
+ },
+ "collectd": {
+ "type": "object"
+ },
+ "dhcp": {
+ "type": "object"
+ },
+ "discord": {
+ "type": "object"
+ },
+ "bittorrent": {
+ "type": "object"
+ },
+ "mdns": {
+ "type": "object"
+ },
+ "natpmp": {
+ "type": "object"
+ },
+ "ntp": {
+ "type": "object"
+ },
+ "ubntac2": {
+ "type": "object"
+ },
+ "kerberos": {
+ "type": "object"
+ },
+ "telnet": {
+ "type": "object"
+ },
+ "tls": {
+ "type": "object"
+ },
+ "quic": {
+ "type": "object"
+ },
+ "imap": {
+ "type": "object"
+ },
+ "http": {
+ "type": "object"
+ },
+ "pop": {
+ "type": "object"
+ },
+ "smtp": {
+ "type": "object"
+ },
+ "dns": {
+ "type": "object"
+ },
+ "ftp": {
+ "type": "object"
+ },
+ "snmp": {
+ "type": "object"
+ },
+ "ssh": {
+ "type": "object"
+ },
+ "stun": {
+ "type": "object"
+ },
+ "softether": {
+ "type": "object"
+ },
+ "tftp": {
+ "type": "object"
+ },
+ "tivoconnect": {
+ "type": "object"
+ },
+ "rsh": {
+ "type": "object"
+ }
+ },
+ "additionalProperties": false
+ },
+ "data_analysis": {
+ "type": "object",
+ "required": [ "iat", "pktlen", "bins", "directions" ],
+ "properties": {
+ "iat": {
+ "type": "object",
+ "properties": {
+ "min": {
+ "type": "number"
+ },
+ "avg": {
+ "type": "number"
+ },
+ "max": {
+ "type": "number"
+ },
+ "stddev": {
+ "type": "number"
+ },
+ "var": {
+ "type": "number"
+ },
+ "ent": {
+ "type": "number"
+ },
+ "data": {
+ "type": "array",
+ "items": {
+ "type": "number"
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "pktlen": {
+ "type": "object",
+
+ "properties": {
+ "min": {
+ "type": "number"
+ },
+ "avg": {
+ "type": "number"
+ },
+ "max": {
+ "type": "number"
+ },
+ "stddev": {
+ "type": "number"
+ },
+ "var": {
+ "type": "number"
+ },
+ "ent": {
+ "type": "number"
+ },
+ "data": {
+ "type": "array",
+ "items": {
+ "type": "number"
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "bins": {
+ "type": "object",
+
+ "properties": {
+ "c_to_s": {
+ "type": "array",
+ "items": {
+ "type": "number"
+ }
+ },
+ "s_to_c": {
+ "type": "array",
+ "items": {
+ "type": "number"
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "directions": {
+ "type": "array",
+ "items": {
+ "type": "number"
+ }
+ },
+ "entropies": {
+ "type": "array",
+ "items": {
+ "type": "number"
+ }
+ }
+ },
+ "additionalProperties": false
+ }
+ },
+ "additionalProperties": false
+}
diff --git a/schema/flow_events_diagram.drawio b/schema/flow_events_diagram.drawio
new file mode 100644
index 000000000..a695a0f29
--- /dev/null
+++ b/schema/flow_events_diagram.drawio
@@ -0,0 +1 @@
+<mxfile host="Electron" modified="2022-09-19T13:55:43.441Z" agent="5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/15.4.0 Chrome/91.0.4472.164 Electron/13.5.0 Safari/537.36" etag="X7uhVc0q2i6IsenfTJZ6" version="15.4.0" type="device"><diagram id="6zxcAsXRhzVs0osY5dHM" name="Page-1">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</diagram></mxfile> \ No newline at end of file
diff --git a/schema/flow_events_diagram.png b/schema/flow_events_diagram.png
new file mode 100644
index 000000000..61f9c3e27
--- /dev/null
+++ b/schema/flow_events_diagram.png
Binary files differ
diff --git a/schema/packet_event_schema.json b/schema/packet_event_schema.json
new file mode 100644
index 000000000..4395b4ab2
--- /dev/null
+++ b/schema/packet_event_schema.json
@@ -0,0 +1,122 @@
+{
+ "type": "object",
+ "required": [
+ "alias",
+ "source",
+ "packet_id",
+ "packet_event_id",
+ "packet_event_name",
+ "pkt_datalink",
+ "pkt_caplen",
+ "pkt_type",
+ "pkt_l3_offset",
+ "pkt_l4_offset",
+ "pkt_len",
+ "pkt_l4_len",
+ "thread_ts_usec"
+ ],
+
+ "dependencies" : {
+ "flow_id" : [ "flow_packet_id", "flow_src_last_pkt_time", "flow_dst_last_pkt_time", "flow_idle_time" ]
+ },
+
+ "if": {
+ "properties": { "packet_event_name": { "enum": ["packet-flow"] } }
+ },
+ "then": {
+ "required": [ "thread_id", "flow_id", "flow_packet_id", "flow_src_last_pkt_time", "flow_dst_last_pkt_time", "flow_idle_time" ]
+ },
+ "else": {
+ "not": { "required": [ "thread_id", "flow_id", "flow_packet_id", "flow_src_last_pkt_time", "flow_dst_last_pkt_time", "flow_idle_time" ] }
+ },
+
+ "properties": {
+ "alias": {
+ "type": "string"
+ },
+ "source": {
+ "type": "string"
+ },
+ "thread_id": {
+ "type": "number"
+ },
+ "packet_id": {
+ "type": "number",
+ "minimum": 0
+ },
+ "packet_event_id": {
+ "type": "number",
+ "minimum": 0,
+ "maximum": 2
+ },
+ "packet_event_name": {
+ "type": "string",
+ "enum": [
+ "invalid",
+ "packet",
+ "packet-flow"
+ ]
+ },
+ "flow_id": {
+ "type": "number",
+ "minimum": 1
+ },
+ "flow_packet_id": {
+ "type": "number"
+ },
+ "flow_src_last_pkt_time": {
+ "type": "number",
+ "minimum": 0
+ },
+ "flow_dst_last_pkt_time": {
+ "type": "number",
+ "minimum": 0
+ },
+ "flow_idle_time": {
+ "type": "number",
+ "minimum": 1
+ },
+ "pkt_datalink": {
+ "type": "number",
+ "minimum": 0,
+ "maximum": 292
+ },
+ "pkt_caplen": {
+ "type": "number",
+ "minimum": 1,
+ "maximum": 65535
+ },
+ "pkt_type": {
+ "type": "number",
+ "minimum": 0,
+ "maximum": 65535
+ },
+ "pkt_l3_offset": {
+ "type": "number",
+ "minimum": 0,
+ "maximum": 65535
+ },
+ "pkt_l4_len": {
+ "type": "number",
+ "minimum": 0,
+ "maximum": 65535
+ },
+ "thread_ts_usec": {
+ "type": "number",
+ "minimum": 0
+ },
+ "pkt_l4_offset": {
+ "type": "number",
+ "minimum": 0,
+ "maximum": 65535
+ },
+ "pkt_len": {
+ "type": "number",
+ "minimum": 0
+ },
+ "pkt": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false
+}