From 802d8b5bc090b2ea9de43471e9ed66839d7c074b Mon Sep 17 00:00:00 2001 From: donneesdata <109540652+donneesdata@users.noreply.github.com> Date: Mon, 18 Jul 2022 17:16:56 -0400 Subject: [PATCH 1/6] Create 0033-host-fields.md --- rfcs/text/0033-host-fields.md | 301 ++++++++++++++++++++++++++++++++++ 1 file changed, 301 insertions(+) create mode 100644 rfcs/text/0033-host-fields.md diff --git a/rfcs/text/0033-host-fields.md b/rfcs/text/0033-host-fields.md new file mode 100644 index 0000000000..2d25261250 --- /dev/null +++ b/rfcs/text/0033-host-fields.md @@ -0,0 +1,301 @@ +# 0000: Host Fields + + +- Stage: **0 (strawperson)** +- Date: **7-13-2022** + + + + + SchemaONE host fields describe information about the host that is relevant to an event. + +SchemaONE extends the ECS host field set in several ways: + +- The SchemaONE host field set supports additional host bios fields. +- The SchemaONE host field set supports additional host cpu fields. +- The SchemaONE host field set supports additional fields describing a supplemental details that the host can generate. + + + +## Fields +
Definitions +

+ + +Field Name | Special Instructions | Justification/Use Case +| :--: | :-- | :-- | +| memory | Extract text following ":" from "Computer Memory : 195073 MB"

The numeric value is a base value for memory. The two character unit type represents a multiplication factor to determine actual memory.

Normalize to byte value by multiplying base value by unit type as follows
Unit Multiplication Factor
B (2^0) 1
KB (2^10) 1024
MB (2^20) 1,048,576
GB (2^30) 1,073,741,824
TB (2^40) 1,099,511,627,776
| Detects specific baselines of physical configuration for asset management. +| last_logon.time | N/A | Login time tells the last time a user logged into the system, which may provide insights into events occurring on that system.| +| created | N/A | Indicates that device is known to domain.| +| distinguished_name | N/A | The distinguished name indicates ownership of the host. It uniquely identifies the host in an x509 certificate.| +| modified | N/A | Indicates when information has changed for the host in a directory service.| +| bios.manufacturer | Normalization: lower case | This is a string representing the system manufacturer of the host. Useful for supply chain issue detection.| +| bios.release_date | This date will need to be converted to a ECS date format. | The bios release date. Useful for supply chain issue detection.| +| bios.secure_boot_enabled | If disabled set to false; if enabled set to true. | Used to detect misconfiguration in Secure Boot.| +| bios.uuid | N/A | A unique identifier assigned to the computer mother board.| +| bios.version | N/A | Version of the BIOS, this string is created by the BIOS manufacturer. Useful for supply chain issue detection.| +| cpu.architecture | Normalize these entries to the following format:
:
"x64: x64-based PC"
"x64: x86_64"
"x32: x86-based PC" | Detects out of date CPUs.| +| cpu.core.count | N/A | Detects specific baselines of physical configuration for asset management.| +| cpu.count | N/A | Detects specific baselines of physical configuration for asset management.| +| cpu.logical_processor.count | N/A | Detects specific baselines of physical configuration for asset management.| +| cpu.manufacturer | Note that a manufacturer is displayed for each CPU, select the first. Multiple manufacturers are not expected. | Useful for supply chain issue detection.| +| cpu.name | Normalize raw field into lowercase format for easier query | Useful for supply chain issue detection.| +| cpu.speed | Normalize to GHZ, do not round but use 0.28 etc, where required. Store alternative values as shown below
null = -1.0
blank = -2.0 | Detects specific baselines of physical configuration for asset management.| +

+
+ + - name: memory + level: custom + type: unsigned long + example: 17,179,869,184 + description: > + Physical memory of the host machine in bytes. + + - name: last_logon.time + level: custom + type: date + description: > + The time of the last user logon to the host. The timestamp type represents date and time information using ISO 8601 format and is always in UTC time. + + - name: created + level: custom + type: date + description: > + Date and time of when the device was registered in the domain. + + - name: distinguished_name + level: custom + type: keyword + example: CN=foo, CN=computers, DC=acme, DC=company, DC=edu + normalized: array + description: > + Distinguished name of the host. + + - name: modified + level: custom + type: date + description: > + Date the host's details were last modified. + + - name: bios.manufacturer + level: custom + type: keyword + example: dell inc. + description: > + This is a string representing the system manufacturer of the host. + + - name: bios.release_date + level: custom + type: date + description: > + The bios release date. + + - name: bios.secure_boot_enabled + level: custom + type: boolean + description: > + Indicator that Secure Boot is enabled on the computer. + + - name: bios.uuid + level: custom + type: keyword + example: 4C4C4544-0056-5010-805A-CAC04F475132 + description: > + A unique identifier assigned to the computer mother board. + + - name: bios.version + level: custom + type: keyword + example: 1.6.13 + description: > + Version of the BIOS. This string is created by the BIOS manufacturer. + + - name: cpu.architecture + level: custom + type: keyword + example: "x64: x86_64" + description: > + The CPU architecture and raw string of the CPU provided by the OS. + + - name: cpu.core.count + level: custom + type: integer + example: 10 + description: > + Number of physical cores per CPU on host machine. + + - name: cpu.count + level: custom + type: integer + example: 2 + description: > + Number of CPUs on host machine. + + - name: cpu.logical_processor.count + level: custom + type: integer + example: 40 + description: > + Number of logical processors per CPU on host machine (physical cores multiplied by threads per core). + + - name: cpu.manufacturer + level: custom + type: keyword + example: Intel + description: > + Manufacturer of CPU. + + - name: cpu.name + level: custom + type: keyword + example: intel(r) core(tm) i3-2370m cpu + description: > + The full name of the cpu model. + + - name: cpu.speed + level: custom + type: float + example: 2.21 + description: > + Float type defining the speed of the CPU in GHZ with null and blank values stored as -1.0 and -2.0 respectively. + + + +## Usage + + + ### `memory` + Detects specific baselines of physical configuration for asset management. + + ### `last_logon.time` + Login time tells the last time a user logged into the system, which may provide insights into events occurring on that system. + + ### `created` + Indicates that device is known to domain. + + ### `distinguished_name` + The distinguished name indicates ownership of the host. It uniquely identifies the host in an x509 certificate. + + ### `modified` + Indicates when information has changed for the host in a directory service. + + ### `bios.manufacturer` + This is a string representing the system manufacturer of the host. Useful for supply chain issue detection. + + ### `bios.release_date` + The bios release date. Useful for supply chain issue detection. + + ### `bios.secure_boot_enabled` + Used to detect misconfiguration in Secure Boot. + + ### `bios.uuid` + A unique identifier assigned to the computer mother board. + + ### `bios.version` + Version of the BIOS, this string is created by the BIOS manufacturer. Useful for supply chain issue detection. + + ### `cpu.architecture` + Detects out of date CPUs. + + ### `cpu.core.count`, `cpu.count`, `cpu.logical_processor.count` + Detects specific baselines of physical configuration for asset management. + + ### `cpu.manufacturer`, `cpu.name` + Useful for supply chain issue detection. + + ### `cpu.speed` + Detects specific baselines of physical configuration for asset management. + +## Source data + + + + + + + +## Scope of impact + + + * Ingestion mechanisms (e.g. beats/logstash) + - one + * Usage mechanisms (e.g. Kibana applications, detections) + - one + * ECS project (e.g. docs, tooling) + - one + +## Concerns + + +Within the SchemaONE schema, the term manufacturer is used while in Elastic Common Schema the appropriate equivalent could be viewed as vendor which may lead to confusion. + + + + +## People + +The following are the people that consulted on the contents of this RFC. + +* @ | Author, Sponsor +* @ | Subject Matter Expert + + + + +## References + + + +### RFC Pull Requests + + + +* Stage 0: https://github.com/elastic/ecs/pull/NNN + + From 094ec88a8b078fb067110c6a2583c447b7259f7d Mon Sep 17 00:00:00 2001 From: donneesdata <109540652+donneesdata@users.noreply.github.com> Date: Tue, 19 Jul 2022 15:52:46 -0400 Subject: [PATCH 2/6] Update 0033-host-fields.md --- rfcs/text/0033-host-fields.md | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/rfcs/text/0033-host-fields.md b/rfcs/text/0033-host-fields.md index 2d25261250..a22a37ad64 100644 --- a/rfcs/text/0033-host-fields.md +++ b/rfcs/text/0033-host-fields.md @@ -12,13 +12,11 @@ Feel free to remove these comments as you go along. Stage 0: Provide a high level summary of the premise of these changes. Briefly describe the nature, purpose, and impact of the changes. ~2-5 sentences. --> - SchemaONE host fields describe information about the host that is relevant to an event. + The host fields describe information about the host that is relevant to an event and extends the ECS host field set in several ways: -SchemaONE extends the ECS host field set in several ways: - -- The SchemaONE host field set supports additional host bios fields. -- The SchemaONE host field set supports additional host cpu fields. -- The SchemaONE host field set supports additional fields describing a supplemental details that the host can generate. +- The host field set supports additional host bios fields. +- The host field set supports additional host cpu fields. +- The host field set supports additional fields describing a supplemental details that the host can generate. @@ -35,7 +33,7 @@ Stage 1: Describe at a high level how this change affects fields. Include new or --> Field Name | Special Instructions | Justification/Use Case | :--: | :-- | :-- | -| memory | Extract text following ":" from "Computer Memory : 195073 MB"

The numeric value is a base value for memory. The two character unit type represents a multiplication factor to determine actual memory.

Normalize to byte value by multiplying base value by unit type as follows
Unit Multiplication Factor
B (2^0) 1
KB (2^10) 1024
MB (2^20) 1,048,576
GB (2^30) 1,073,741,824
TB (2^40) 1,099,511,627,776
| Detects specific baselines of physical configuration for asset management. +| memory | The numeric value is a base value for memory. The two character unit type represents a multiplication factor to determine actual memory.

Normalize to byte value by multiplying base value by unit type as follows
Unit Multiplication Factor
B (2^0) 1
KB (2^10) 1024
MB (2^20) 1,048,576
GB (2^30) 1,073,741,824
TB (2^40) 1,099,511,627,776
| Detects specific baselines of physical configuration for asset management. | last_logon.time | N/A | Login time tells the last time a user logged into the system, which may provide insights into events occurring on that system.| | created | N/A | Indicates that device is known to domain.| | distinguished_name | N/A | The distinguished name indicates ownership of the host. It uniquely identifies the host in an x509 certificate.| @@ -51,7 +49,7 @@ Field Name | Special Instructions | Justification/Use Case | cpu.logical_processor.count | N/A | Detects specific baselines of physical configuration for asset management.| | cpu.manufacturer | Note that a manufacturer is displayed for each CPU, select the first. Multiple manufacturers are not expected. | Useful for supply chain issue detection.| | cpu.name | Normalize raw field into lowercase format for easier query | Useful for supply chain issue detection.| -| cpu.speed | Normalize to GHZ, do not round but use 0.28 etc, where required. Store alternative values as shown below
null = -1.0
blank = -2.0 | Detects specific baselines of physical configuration for asset management.| +| cpu.speed | Normalize to GHZ, do not round but use 0.28 etc, where required.| Detects specific baselines of physical configuration for asset management.|

@@ -226,7 +224,14 @@ Stage 1: Describe at a high-level how these field changes will be used in practi - +The host fields in this RFC are sourced from the following data feeds: + - Host & Network Interface Information + - Office 365 Device Audit Logs + - Active Directory Computer Objects + - Host Information + + Insert high level descriptions of each data feed here + @@ -256,7 +261,7 @@ The goal here is to research and understand the impact of these changes on users -Within the SchemaONE schema, the term manufacturer is used while in Elastic Common Schema the appropriate equivalent could be viewed as vendor which may lead to confusion. +The term manufacturer is used here while in Elastic Common Schema the appropriate equivalent could be viewed as vendor which may lead to confusion. @@ -269,8 +274,7 @@ Stage 3: Document resolutions for all existing concerns. Any new concerns should The following are the people that consulted on the contents of this RFC. -* @ | Author, Sponsor -* @ | Subject Matter Expert +* @donneesdata | Author, Sponsor The host fields in this RFC are sourced from the following data feeds: - - Host & Network Interface Information + - Endpoint Detection and Response System Audit Logs & Alerts - Office 365 Device Audit Logs - Active Directory Computer Objects - - Host Information + - Windows Event Logs Host & Network Interface Information collects information about host computer configurations, vulnerabilities and compliance from endpoint computers. @@ -258,11 +258,11 @@ Stage 2: Identifies scope of impact of changes. Are breaking changes required? S The goal here is to research and understand the impact of these changes on users in the community and development teams across Elastic. 2-5 sentences each. --> * Ingestion mechanisms (e.g. beats/logstash) - - one + - Beats + - Custom * Usage mechanisms (e.g. Kibana applications, detections) - - one - * ECS project (e.g. docs, tooling) - - one + - Kibana + - Custom applications ## Concerns From 266d6eef7470008583cf042a7fe537819d5dac5f Mon Sep 17 00:00:00 2001 From: donneesdata <109540652+donneesdata@users.noreply.github.com> Date: Fri, 12 Aug 2022 13:01:16 -0400 Subject: [PATCH 5/6] Update 0033-host-fields.md --- rfcs/text/0033-host-fields.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/rfcs/text/0033-host-fields.md b/rfcs/text/0033-host-fields.md index 6d8f39dbb3..c6b356ab7d 100644 --- a/rfcs/text/0033-host-fields.md +++ b/rfcs/text/0033-host-fields.md @@ -252,13 +252,12 @@ Stage 3: Add more real world example source documents so we have at least 2 tota - * Ingestion mechanisms (e.g. beats/logstash) - - Beats + * Ingestion mechanisms - Custom * Usage mechanisms (e.g. Kibana applications, detections) - Kibana From 6ccf3f05df990e1ed482be80a2fc6f9c6ce1eb50 Mon Sep 17 00:00:00 2001 From: donneesdata <109540652+donneesdata@users.noreply.github.com> Date: Fri, 12 Aug 2022 14:02:04 -0400 Subject: [PATCH 6/6] Update 0033-host-fields.md --- rfcs/text/0033-host-fields.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rfcs/text/0033-host-fields.md b/rfcs/text/0033-host-fields.md index c6b356ab7d..30dcf6459f 100644 --- a/rfcs/text/0033-host-fields.md +++ b/rfcs/text/0033-host-fields.md @@ -2,7 +2,7 @@ - Stage: **0 (strawperson)** -- Date: **7-13-2022** +- Date: **8-12-2022**