From 3c312f79d077e648e6f86f56c38a7ae847ae1c8e Mon Sep 17 00:00:00 2001 From: Marc Guasch Date: Wed, 2 Sep 2020 12:31:04 +0200 Subject: [PATCH] [ECS] Update ecs to 1.6.0 (#20792) (#20863) * Update ecs to 1.6.0 * Update fields.ecs.yml and re generate fields files * Remove filebeat duplicated cloud.project.id * Remove filebeat duplicated log.file.path * Remove repeated cloud.project.id from remaining beats * Remove duplicated x509.* fields from metricbeat * Remove duplicated x509.* fields in packetbeat * Remove duplicated field log.file.path from winlogbeat * Add missing exports tests and better error message * Run make fmt (cherry picked from commit ef457ea2b1046c8283a96e789185a18d29504da7) --- NOTICE.txt | 4 +- auditbeat/docs/fields.asciidoc | 1920 +++++- auditbeat/include/fields.go | 2 +- filebeat/_meta/fields.common.yml | 7 - filebeat/docs/fields.asciidoc | 1532 ++++- filebeat/include/fields.go | 2 +- go.mod | 2 +- go.sum | 4 +- heartbeat/docs/fields.asciidoc | 4474 +++++++++----- heartbeat/include/fields.go | 2 +- .../active/dialchain/_meta/fields.yml | 98 - journalbeat/docs/fields.asciidoc | 1920 +++++- journalbeat/include/fields.go | 2 +- libbeat/_meta/fields.ecs.yml | 1140 +++- .../add_cloud_metadata/_meta/fields.yml | 5 - libbeat/tests/system/beat/common_tests.py | 3 +- metricbeat/docs/fields.asciidoc | 1920 +++++- packetbeat/docs/fields.asciidoc | 5440 ++++++++++------- packetbeat/include/fields.go | 2 +- packetbeat/protos/tls/_meta/fields.yml | 222 - packetbeat/protos/tls/fields.go | 2 +- winlogbeat/_meta/fields.common.yml | 7 - winlogbeat/docs/fields.asciidoc | 1932 +++++- winlogbeat/include/fields.go | 2 +- x-pack/auditbeat/tests/system/test_exports.py | 13 + x-pack/functionbeat/docs/fields.asciidoc | 1920 +++++- x-pack/functionbeat/include/fields.go | 2 +- .../functionbeat/provider/aws/aws/kinesis.go | 2 +- .../tests/system/test_xpack_base.py | 3 +- 29 files changed, 16810 insertions(+), 5774 deletions(-) create mode 100644 x-pack/auditbeat/tests/system/test_exports.py diff --git a/NOTICE.txt b/NOTICE.txt index fe2956f9b43..01f0f136f6c 100644 --- a/NOTICE.txt +++ b/NOTICE.txt @@ -5491,11 +5491,11 @@ This Agreement is governed by the laws of the State of New York and the intellec -------------------------------------------------------------------------------- Dependency : github.com/elastic/ecs -Version: v1.5.0 +Version: v1.6.0 Licence type (autodetected): Apache-2.0 -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/github.com/elastic/ecs@v1.5.0/LICENSE.txt: +Contents of probable licence file $GOMODCACHE/github.com/elastic/ecs@v1.6.0/LICENSE.txt: Apache License diff --git a/auditbeat/docs/fields.asciidoc b/auditbeat/docs/fields.asciidoc index 912e9d32dd7..58b3e0d17f4 100644 --- a/auditbeat/docs/fields.asciidoc +++ b/auditbeat/docs/fields.asciidoc @@ -2518,16 +2518,6 @@ Metadata from cloud providers added by the add_cloud_metadata processor. -*`cloud.project.id`*:: -+ --- -Name of the project in Google Cloud. - - -example: project-x - --- - *`cloud.image.id`*:: + -- @@ -2985,6 +2975,18 @@ The agent fields contain the data about the software entity, if any, that collec Examples include Beats. Agents may also run on observers. ECS agent.* fields shall be populated with details of the agent running on the host or observer where the event happened or the measurement was taken. +*`agent.build.original`*:: ++ +-- +Extended build information for the agent. +This field is intended to contain any build information that a data source may provide, no specific formatting is required. + +type: keyword + +example: metricbeat version 7.6.0 (amd64), libbeat 7.6.0 [6a23e8f8f30f5001ba344e4e54d8d9cb82cb107c built 2020-02-05 23:10:10 +0000 UTC] + +-- + *`agent.ephemeral_id`*:: + -- @@ -3026,7 +3028,7 @@ example: foo + -- Type of the agent. -The agent type stays always the same and should be given by the agent used. In case of Filebeat the agent would always be Filebeat also if two Filebeat instances are run on the same machine. +The agent type always stays the same and should be given by the agent used. In case of Filebeat the agent would always be Filebeat also if two Filebeat instances are run on the same machine. type: keyword @@ -3242,8 +3244,7 @@ example: Quebec *`client.ip`*:: + -- -IP address of the client. -Can be one or multiple IPv4 or IPv6 addresses. +IP address of the client (IPv4 or IPv6). type: ip @@ -3306,19 +3307,19 @@ format: string + -- The highest registered client domain, stripped of the subdomain. -For example, the registered domain for "foo.google.com" is "google.com". +For example, the registered domain for "foo.example.com" is "example.com". This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last two labels will not work well for TLDs such as "co.uk". type: keyword -example: google.com +example: example.com -- *`client.top_level_domain`*:: + -- -The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for google.com is "com". +The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for example.com is "com". This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last label will not work well for effective TLDs such as "co.uk". type: keyword @@ -3405,7 +3406,7 @@ type: keyword *`client.user.id`*:: + -- -Unique identifiers of the user. +Unique identifier of the user. type: keyword @@ -3429,6 +3430,17 @@ type: text -- +*`client.user.roles`*:: ++ +-- +Array of user roles at the time of the event. + +type: keyword + +example: ["kibana_admin", "reporting_user"] + +-- + [float] === cloud @@ -3447,6 +3459,18 @@ example: 666777888999 -- +*`cloud.account.name`*:: ++ +-- +The cloud account name or alias used to identify different entities in a multi-tenant environment. +Examples: AWS account name, Google Cloud ORG display name. + +type: keyword + +example: elastic-dev + +-- + *`cloud.availability_zone`*:: + -- @@ -3489,6 +3513,30 @@ example: t2.medium -- +*`cloud.project.id`*:: ++ +-- +The cloud project identifier. +Examples: Google Cloud Project id, Azure Project id. + +type: keyword + +example: my-project + +-- + +*`cloud.project.name`*:: ++ +-- +The cloud project name. +Examples: Google Cloud Project name, Azure Project name. + +type: keyword + +example: my project + +-- + *`cloud.provider`*:: + -- @@ -3799,8 +3847,7 @@ example: Quebec *`destination.ip`*:: + -- -IP address of the destination. -Can be one or multiple IPv4 or IPv6 addresses. +IP address of the destination (IPv4 or IPv6). type: ip @@ -3863,19 +3910,19 @@ format: string + -- The highest registered destination domain, stripped of the subdomain. -For example, the registered domain for "foo.google.com" is "google.com". +For example, the registered domain for "foo.example.com" is "example.com". This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last two labels will not work well for TLDs such as "co.uk". type: keyword -example: google.com +example: example.com -- *`destination.top_level_domain`*:: + -- -The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for google.com is "com". +The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for example.com is "com". This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last label will not work well for effective TLDs such as "co.uk". type: keyword @@ -3962,7 +4009,7 @@ type: keyword *`destination.user.id`*:: + -- -Unique identifiers of the user. +Unique identifier of the user. type: keyword @@ -3986,6 +4033,17 @@ type: text -- +*`destination.user.roles`*:: ++ +-- +Array of user roles at the time of the event. + +type: keyword + +example: ["kibana_admin", "reporting_user"] + +-- + [float] === dll @@ -4114,6 +4172,17 @@ example: C:\Windows\System32\kernel32.dll -- +*`dll.pe.architecture`*:: ++ +-- +CPU architecture target for the file. + +type: keyword + +example: x64 + +-- + *`dll.pe.company`*:: + -- @@ -4147,6 +4216,18 @@ example: 6.3.9600.17415 -- +*`dll.pe.imphash`*:: ++ +-- +A hash of the imports in a PE file. An imphash -- or import hash -- can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. +Learn more at https://www.fireeye.com/blog/threat-research/2014/01/tracking-malware-import-hashing.html. + +type: keyword + +example: 0c6803c4e922103c4dca5963aad36ddf + +-- + *`dll.pe.original_file_name`*:: + -- @@ -4218,7 +4299,7 @@ If a chain of CNAME is being resolved, each answer's `name` should be the one th type: keyword -example: www.google.com +example: www.example.com -- @@ -4297,7 +4378,7 @@ If the name field contains non-printable characters (below 32 or above 126), tho type: keyword -example: www.google.com +example: www.example.com -- @@ -4305,12 +4386,12 @@ example: www.google.com + -- The highest registered domain, stripped of the subdomain. -For example, the registered domain for "foo.google.com" is "google.com". +For example, the registered domain for "foo.example.com" is "example.com". This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last two labels will not work well for TLDs such as "co.uk". type: keyword -example: google.com +example: example.com -- @@ -4329,7 +4410,7 @@ example: www *`dns.question.top_level_domain`*:: + -- -The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for google.com is "com". +The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for example.com is "com". This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last label will not work well for effective TLDs such as "co.uk". type: keyword @@ -4446,6 +4527,8 @@ The stack trace of this error in plain text. type: keyword +Field is not indexed. + -- *`error.stack_trace.text`*:: @@ -4628,6 +4711,8 @@ type: keyword example: Sep 19 08:26:10 host CEF:0|Security| threatmanager|1.0|100| worm successfully stopped|10|src=10.0.0.1 dst=2.1.2.2spt=1232 +Field is not indexed. + -- *`event.outcome`*:: @@ -4657,6 +4742,18 @@ example: kernel -- +*`event.reason`*:: ++ +-- +Reason why this event happened, according to the source. +This describes the why of a particular action or outcome captured in the event. Where `event.action` captures the action from the event, `event.reason` describes why that action was taken. For example, a web proxy with an `event.action` which denied the request may also populate `event.reason` with the reason why (e.g. `blocked site`). + +type: keyword + +example: Terminated an unexpected process + +-- + *`event.reference`*:: + -- @@ -4665,7 +4762,7 @@ This URL links to a static definition of the this event. Alert events, indicated type: keyword -example: https://system.vendor.com/event/#0001234 +example: https://system.example.com/event/#0001234 -- @@ -4749,11 +4846,11 @@ type: keyword + -- URL linking to an external system to continue investigation of this event. -This URL links to another system where in-depth investigation of the specific occurence of this event can take place. Alert events, indicated by `event.kind:alert`, are a common use case for this field. +This URL links to another system where in-depth investigation of the specific occurrence of this event can take place. Alert events, indicated by `event.kind:alert`, are a common use case for this field. type: keyword -example: https://mysystem.mydomain.com/alert/5271dedb-f5b0-4218-87f0-4ac4870a38fe +example: https://mysystem.example.com/alert/5271dedb-f5b0-4218-87f0-4ac4870a38fe -- @@ -5047,6 +5144,17 @@ type: text -- +*`file.pe.architecture`*:: ++ +-- +CPU architecture target for the file. + +type: keyword + +example: x64 + +-- + *`file.pe.company`*:: + -- @@ -5080,6 +5188,18 @@ example: 6.3.9600.17415 -- +*`file.pe.imphash`*:: ++ +-- +A hash of the imports in a PE file. An imphash -- or import hash -- can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. +Learn more at https://www.fireeye.com/blog/threat-research/2014/01/tracking-malware-import-hashing.html. + +type: keyword + +example: 0c6803c4e922103c4dca5963aad36ddf + +-- + *`file.pe.original_file_name`*:: + -- @@ -5152,211 +5272,278 @@ example: 1001 -- -[float] -=== geo +*`file.x509.alternative_names`*:: ++ +-- +List of subject alternative names (SAN). Name types vary by certificate authority and certificate type but commonly contain IP addresses, DNS names (and wildcards), and email addresses. -Geo fields can carry data about a specific location related to an event. -This geolocation information can be derived from techniques such as Geo IP, or be user-supplied. +type: keyword +example: *.elastic.co -*`geo.city_name`*:: +-- + +*`file.x509.issuer.common_name`*:: + -- -City name. +List of common name (CN) of issuing certificate authority. type: keyword -example: Montreal +example: Example SHA2 High Assurance Server CA -- -*`geo.continent_name`*:: +*`file.x509.issuer.country`*:: + -- -Name of the continent. +List of country (C) codes type: keyword -example: North America +example: US -- -*`geo.country_iso_code`*:: +*`file.x509.issuer.distinguished_name`*:: + -- -Country ISO code. +Distinguished name (DN) of issuing certificate authority. type: keyword -example: CA +example: C=US, O=Example Inc, OU=www.example.com, CN=Example SHA2 High Assurance Server CA -- -*`geo.country_name`*:: +*`file.x509.issuer.locality`*:: + -- -Country name. +List of locality names (L) type: keyword -example: Canada +example: Mountain View -- -*`geo.location`*:: +*`file.x509.issuer.organization`*:: + -- -Longitude and latitude. +List of organizations (O) of issuing certificate authority. -type: geo_point +type: keyword -example: { "lon": -73.614830, "lat": 45.505918 } +example: Example Inc -- -*`geo.name`*:: +*`file.x509.issuer.organizational_unit`*:: + -- -User-defined description of a location, at the level of granularity they care about. -Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. -Not typically used in automated geolocation. +List of organizational units (OU) of issuing certificate authority. type: keyword -example: boston-dc +example: www.example.com -- -*`geo.region_iso_code`*:: +*`file.x509.issuer.state_or_province`*:: + -- -Region ISO code. +List of state or province names (ST, S, or P) type: keyword -example: CA-QC +example: California -- -*`geo.region_name`*:: +*`file.x509.not_after`*:: + -- -Region name. +Time at which the certificate is no longer considered valid. -type: keyword +type: date -example: Quebec +example: 2020-07-16 03:15:39+00:00 -- -[float] -=== group +*`file.x509.not_before`*:: ++ +-- +Time at which the certificate is first considered valid. -The group fields are meant to represent groups that are relevant to the event. +type: date +example: 2019-08-16 01:40:25+00:00 -*`group.domain`*:: +-- + +*`file.x509.public_key_algorithm`*:: + -- -Name of the directory the group is a member of. -For example, an LDAP or Active Directory domain name. +Algorithm used to generate the public key. type: keyword +example: RSA + -- -*`group.id`*:: +*`file.x509.public_key_curve`*:: + -- -Unique identifier for the group on the system/platform. +The curve used by the elliptic curve public key algorithm. This is algorithm specific. type: keyword +example: nistp521 + -- -*`group.name`*:: +*`file.x509.public_key_exponent`*:: + -- -Name of the group. +Exponent used to derive the public key. This is algorithm specific. + +type: long + +example: 65537 + +Field is not indexed. + +-- + +*`file.x509.public_key_size`*:: ++ +-- +The size of the public key space in bits. + +type: long + +example: 2048 + +-- + +*`file.x509.serial_number`*:: ++ +-- +Unique serial number issued by the certificate authority. For consistency, if this value is alphanumeric, it should be formatted without colons and uppercase characters. type: keyword +example: 55FBB9C7DEBF09809D12CCAA + -- -[float] -=== hash +*`file.x509.signature_algorithm`*:: ++ +-- +Identifier for certificate signature algorithm. We recommend using names found in Go Lang Crypto library. See https://github.com/golang/go/blob/go1.14/src/crypto/x509/x509.go#L337-L353. -The hash fields represent different hash algorithms and their values. -Field names for common hashes (e.g. MD5, SHA1) are predefined. Add fields for other hashes by lowercasing the hash algorithm name and using underscore separators as appropriate (snake case, e.g. sha3_512). +type: keyword +example: SHA256-RSA -*`hash.md5`*:: +-- + +*`file.x509.subject.common_name`*:: + -- -MD5 hash. +List of common names (CN) of subject. type: keyword +example: shared.global.example.net + -- -*`hash.sha1`*:: +*`file.x509.subject.country`*:: + -- -SHA1 hash. +List of country (C) code type: keyword +example: US + -- -*`hash.sha256`*:: +*`file.x509.subject.distinguished_name`*:: + -- -SHA256 hash. +Distinguished name (DN) of the certificate subject entity. type: keyword +example: C=US, ST=California, L=San Francisco, O=Example, Inc., CN=shared.global.example.net + -- -*`hash.sha512`*:: +*`file.x509.subject.locality`*:: + -- -SHA512 hash. +List of locality names (L) type: keyword +example: San Francisco + -- -[float] -=== host +*`file.x509.subject.organization`*:: ++ +-- +List of organizations (O) of subject. -A host is defined as a general computing instance. -ECS host.* fields should be populated with details about the host on which the event happened, or from which the measurement was taken. Host types include hardware, virtual machines, Docker containers, and Kubernetes nodes. +type: keyword +example: Example, Inc. -*`host.architecture`*:: +-- + +*`file.x509.subject.organizational_unit`*:: + -- -Operating system architecture. +List of organizational units (OU) of subject. type: keyword -example: x86_64 +-- + +*`file.x509.subject.state_or_province`*:: ++ +-- +List of state or province names (ST, S, or P) + +type: keyword + +example: California -- -*`host.domain`*:: +*`file.x509.version_number`*:: + -- -Name of the domain of which the host is a member. -For example, on Windows this could be the host's Active Directory domain or NetBIOS domain name. For Linux this could be the domain of the host's LDAP provider. +Version of x509 format. type: keyword -example: CONTOSO +example: 3 -- -*`host.geo.city_name`*:: +[float] +=== geo + +Geo fields can carry data about a specific location related to an event. +This geolocation information can be derived from techniques such as Geo IP, or be user-supplied. + + +*`geo.city_name`*:: + -- City name. @@ -5367,7 +5554,7 @@ example: Montreal -- -*`host.geo.continent_name`*:: +*`geo.continent_name`*:: + -- Name of the continent. @@ -5378,7 +5565,7 @@ example: North America -- -*`host.geo.country_iso_code`*:: +*`geo.country_iso_code`*:: + -- Country ISO code. @@ -5389,7 +5576,7 @@ example: CA -- -*`host.geo.country_name`*:: +*`geo.country_name`*:: + -- Country name. @@ -5400,7 +5587,7 @@ example: Canada -- -*`host.geo.location`*:: +*`geo.location`*:: + -- Longitude and latitude. @@ -5411,7 +5598,7 @@ example: { "lon": -73.614830, "lat": 45.505918 } -- -*`host.geo.name`*:: +*`geo.name`*:: + -- User-defined description of a location, at the level of granularity they care about. @@ -5424,7 +5611,7 @@ example: boston-dc -- -*`host.geo.region_iso_code`*:: +*`geo.region_iso_code`*:: + -- Region ISO code. @@ -5435,7 +5622,7 @@ example: CA-QC -- -*`host.geo.region_name`*:: +*`geo.region_name`*:: + -- Region name. @@ -5446,20 +5633,217 @@ example: Quebec -- -*`host.hostname`*:: +[float] +=== group + +The group fields are meant to represent groups that are relevant to the event. + + +*`group.domain`*:: + -- -Hostname of the host. -It normally contains what the `hostname` command returns on the host machine. +Name of the directory the group is a member of. +For example, an LDAP or Active Directory domain name. type: keyword -- -*`host.id`*:: +*`group.id`*:: + -- -Unique host id. +Unique identifier for the group on the system/platform. + +type: keyword + +-- + +*`group.name`*:: ++ +-- +Name of the group. + +type: keyword + +-- + +[float] +=== hash + +The hash fields represent different hash algorithms and their values. +Field names for common hashes (e.g. MD5, SHA1) are predefined. Add fields for other hashes by lowercasing the hash algorithm name and using underscore separators as appropriate (snake case, e.g. sha3_512). + + +*`hash.md5`*:: ++ +-- +MD5 hash. + +type: keyword + +-- + +*`hash.sha1`*:: ++ +-- +SHA1 hash. + +type: keyword + +-- + +*`hash.sha256`*:: ++ +-- +SHA256 hash. + +type: keyword + +-- + +*`hash.sha512`*:: ++ +-- +SHA512 hash. + +type: keyword + +-- + +[float] +=== host + +A host is defined as a general computing instance. +ECS host.* fields should be populated with details about the host on which the event happened, or from which the measurement was taken. Host types include hardware, virtual machines, Docker containers, and Kubernetes nodes. + + +*`host.architecture`*:: ++ +-- +Operating system architecture. + +type: keyword + +example: x86_64 + +-- + +*`host.domain`*:: ++ +-- +Name of the domain of which the host is a member. +For example, on Windows this could be the host's Active Directory domain or NetBIOS domain name. For Linux this could be the domain of the host's LDAP provider. + +type: keyword + +example: CONTOSO + +-- + +*`host.geo.city_name`*:: ++ +-- +City name. + +type: keyword + +example: Montreal + +-- + +*`host.geo.continent_name`*:: ++ +-- +Name of the continent. + +type: keyword + +example: North America + +-- + +*`host.geo.country_iso_code`*:: ++ +-- +Country ISO code. + +type: keyword + +example: CA + +-- + +*`host.geo.country_name`*:: ++ +-- +Country name. + +type: keyword + +example: Canada + +-- + +*`host.geo.location`*:: ++ +-- +Longitude and latitude. + +type: geo_point + +example: { "lon": -73.614830, "lat": 45.505918 } + +-- + +*`host.geo.name`*:: ++ +-- +User-defined description of a location, at the level of granularity they care about. +Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. +Not typically used in automated geolocation. + +type: keyword + +example: boston-dc + +-- + +*`host.geo.region_iso_code`*:: ++ +-- +Region ISO code. + +type: keyword + +example: CA-QC + +-- + +*`host.geo.region_name`*:: ++ +-- +Region name. + +type: keyword + +example: Quebec + +-- + +*`host.hostname`*:: ++ +-- +Hostname of the host. +It normally contains what the `hostname` command returns on the host machine. + +type: keyword + +-- + +*`host.id`*:: ++ +-- +Unique host id. As hostname is not always unique, use values that are meaningful in your environment. Example: The current usage of `beat.name`. @@ -5674,7 +6058,7 @@ type: keyword *`host.user.id`*:: + -- -Unique identifiers of the user. +Unique identifier of the user. type: keyword @@ -5698,6 +6082,17 @@ type: text -- +*`host.user.roles`*:: ++ +-- +Array of user roles at the time of the event. + +type: keyword + +example: ["kibana_admin", "reporting_user"] + +-- + [float] === http @@ -5752,11 +6147,13 @@ format: bytes + -- HTTP request method. -The field value must be normalized to lowercase for querying. See the documentation section "Implementing ECS". +Prior to ECS 1.6.0 the following guidance was provided: +"The field value must be normalized to lowercase for querying." +As of ECS 1.6.0, the guidance is deprecated because the original case of the method may be useful in anomaly detection. Original case will be mandated in ECS 2.0.0 type: keyword -example: get, post, put +example: GET, POST, PUT, PoST -- @@ -5886,6 +6283,18 @@ The log.* fields are typically populated with details about the logging mechanis The details specific to your event source are typically not logged under `log.*`, but rather in `event.*` or in other ECS fields. +*`log.file.path`*:: ++ +-- +Full path to the log file this event came from, including the file name. It should include the drive letter, when appropriate. +If the event wasn't read from a log file, do not populate this field. + +type: keyword + +example: /var/log/fun-times.log + +-- + *`log.level`*:: + -- @@ -5924,7 +6333,8 @@ example: 42 *`log.origin.file.name`*:: + -- -The name of the file containing the source code which originated the log event. Note that this is not the name of the log file. +The name of the file containing the source code which originated the log event. +Note that this field is not meant to capture the log file. The correct field to capture the log file is `log.file.path`. type: keyword @@ -5954,6 +6364,8 @@ type: keyword example: Sep 19 08:26:10 localhost My log +Field is not indexed. + -- *`log.syslog`*:: @@ -6922,6 +7334,17 @@ example: 1.12.9 These fields contain Windows Portable Executable (PE) metadata. +*`pe.architecture`*:: ++ +-- +CPU architecture target for the file. + +type: keyword + +example: x64 + +-- + *`pe.company`*:: + -- @@ -6955,6 +7378,18 @@ example: 6.3.9600.17415 -- +*`pe.imphash`*:: ++ +-- +A hash of the imports in a PE file. An imphash -- or import hash -- can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. +Learn more at https://www.fireeye.com/blog/threat-research/2014/01/tracking-malware-import-hashing.html. + +type: keyword + +example: 0c6803c4e922103c4dca5963aad36ddf + +-- + *`pe.original_file_name`*:: + -- @@ -7186,12 +7621,12 @@ type: text *`process.parent.args`*:: + -- -Array of process arguments. +Array of process arguments, starting with the absolute path to the executable. May be filtered to protect sensitive information. type: keyword -example: ['ssh', '-l', 'user', '10.0.0.16'] +example: ['/usr/bin/ssh', '-l', 'user', '10.0.0.16'] -- @@ -7382,49 +7817,127 @@ type: text -- -*`process.parent.pgid`*:: +*`process.parent.pe.architecture`*:: + -- -Identifier of the group of processes the process belongs to. +CPU architecture target for the file. -type: long +type: keyword -format: string +example: x64 -- -*`process.parent.pid`*:: +*`process.parent.pe.company`*:: + -- -Process id. - -type: long +Internal company name of the file, provided at compile-time. -example: 4242 +type: keyword -format: string +example: Microsoft Corporation -- -*`process.parent.ppid`*:: +*`process.parent.pe.description`*:: + -- -Parent process' pid. - -type: long +Internal description of the file, provided at compile-time. -example: 4241 +type: keyword -format: string +example: Paint -- -*`process.parent.start`*:: +*`process.parent.pe.file_version`*:: + -- -The time the process started. +Internal version of the file, provided at compile-time. -type: date +type: keyword + +example: 6.3.9600.17415 + +-- + +*`process.parent.pe.imphash`*:: ++ +-- +A hash of the imports in a PE file. An imphash -- or import hash -- can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. +Learn more at https://www.fireeye.com/blog/threat-research/2014/01/tracking-malware-import-hashing.html. + +type: keyword + +example: 0c6803c4e922103c4dca5963aad36ddf + +-- + +*`process.parent.pe.original_file_name`*:: ++ +-- +Internal name of the file, provided at compile-time. + +type: keyword + +example: MSPAINT.EXE + +-- + +*`process.parent.pe.product`*:: ++ +-- +Internal product name of the file, provided at compile-time. + +type: keyword + +example: Microsoft® Windows® Operating System + +-- + +*`process.parent.pgid`*:: ++ +-- +Identifier of the group of processes the process belongs to. + +type: long + +format: string + +-- + +*`process.parent.pid`*:: ++ +-- +Process id. + +type: long + +example: 4242 + +format: string + +-- + +*`process.parent.ppid`*:: ++ +-- +Parent process' pid. + +type: long + +example: 4241 + +format: string + +-- + +*`process.parent.start`*:: ++ +-- +The time the process started. + +type: date example: 2016-05-23T08:05:34.853Z @@ -7500,6 +8013,17 @@ type: text -- +*`process.pe.architecture`*:: ++ +-- +CPU architecture target for the file. + +type: keyword + +example: x64 + +-- + *`process.pe.company`*:: + -- @@ -7533,6 +8057,18 @@ example: 6.3.9600.17415 -- +*`process.pe.imphash`*:: ++ +-- +A hash of the imports in a PE file. An imphash -- or import hash -- can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. +Learn more at https://www.fireeye.com/blog/threat-research/2014/01/tracking-malware-import-hashing.html. + +type: keyword + +example: 0c6803c4e922103c4dca5963aad36ddf + +-- + *`process.pe.original_file_name`*:: + -- @@ -7775,6 +8311,15 @@ type: keyword -- +*`related.hosts`*:: ++ +-- +All hostnames or other host identifiers seen on your event. Example identifiers include FQDNs, domain names, workstation names, or aliases. + +type: keyword + +-- + *`related.ip`*:: + -- @@ -8073,8 +8618,7 @@ example: Quebec *`server.ip`*:: + -- -IP address of the server. -Can be one or multiple IPv4 or IPv6 addresses. +IP address of the server (IPv4 or IPv6). type: ip @@ -8137,19 +8681,19 @@ format: string + -- The highest registered server domain, stripped of the subdomain. -For example, the registered domain for "foo.google.com" is "google.com". +For example, the registered domain for "foo.example.com" is "example.com". This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last two labels will not work well for TLDs such as "co.uk". type: keyword -example: google.com +example: example.com -- *`server.top_level_domain`*:: + -- -The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for google.com is "com". +The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for example.com is "com". This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last label will not work well for effective TLDs such as "co.uk". type: keyword @@ -8236,7 +8780,7 @@ type: keyword *`server.user.id`*:: + -- -Unique identifiers of the user. +Unique identifier of the user. type: keyword @@ -8260,6 +8804,17 @@ type: text -- +*`server.user.roles`*:: ++ +-- +Array of user roles at the time of the event. + +type: keyword + +example: ["kibana_admin", "reporting_user"] + +-- + [float] === service @@ -8513,8 +9068,7 @@ example: Quebec *`source.ip`*:: + -- -IP address of the source. -Can be one or multiple IPv4 or IPv6 addresses. +IP address of the source (IPv4 or IPv6). type: ip @@ -8577,19 +9131,19 @@ format: string + -- The highest registered source domain, stripped of the subdomain. -For example, the registered domain for "foo.google.com" is "google.com". +For example, the registered domain for "foo.example.com" is "example.com". This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last two labels will not work well for TLDs such as "co.uk". type: keyword -example: google.com +example: example.com -- *`source.top_level_domain`*:: + -- -The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for google.com is "com". +The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for example.com is "com". This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last label will not work well for effective TLDs such as "co.uk". type: keyword @@ -8676,7 +9230,7 @@ type: keyword *`source.user.id`*:: + -- -Unique identifiers of the user. +Unique identifier of the user. type: keyword @@ -8700,10 +9254,21 @@ type: text -- +*`source.user.roles`*:: ++ +-- +Array of user roles at the time of the event. + +type: keyword + +example: ["kibana_admin", "reporting_user"] + +-- + [float] === threat -Fields to classify events and alerts according to a threat taxonomy such as the Mitre ATT&CK framework. +Fields to classify events and alerts according to a threat taxonomy such as the MITRE ATT&CK® framework. These fields are for users to classify alerts from all of their sources (e.g. IDS, NGFW, etc.) within a common taxonomy. The threat.tactic.* are meant to capture the high level category of the threat (e.g. "impact"). The threat.technique.* fields are meant to capture which kind of approach is used by this detected threat, to accomplish the goal (e.g. "endpoint denial of service"). @@ -8721,7 +9286,7 @@ example: MITRE ATT&CK *`threat.tactic.id`*:: + -- -The id of tactic used by this threat. You can use the Mitre ATT&CK Matrix Tactic categorization, for example. (ex. https://attack.mitre.org/tactics/TA0040/ ) +The id of tactic used by this threat. You can use a MITRE ATT&CK® tactic, for example. (ex. https://attack.mitre.org/tactics/TA0040/ ) type: keyword @@ -8732,7 +9297,7 @@ example: TA0040 *`threat.tactic.name`*:: + -- -Name of the type of tactic used by this threat. You can use the Mitre ATT&CK Matrix Tactic categorization, for example. (ex. https://attack.mitre.org/tactics/TA0040/ ) +Name of the type of tactic used by this threat. You can use a MITRE ATT&CK® tactic, for example. (ex. https://attack.mitre.org/tactics/TA0040/) type: keyword @@ -8743,7 +9308,7 @@ example: impact *`threat.tactic.reference`*:: + -- -The reference url of tactic used by this threat. You can use the Mitre ATT&CK Matrix Tactic categorization, for example. (ex. https://attack.mitre.org/tactics/TA0040/ ) +The reference url of tactic used by this threat. You can use a MITRE ATT&CK® tactic, for example. (ex. https://attack.mitre.org/tactics/TA0040/ ) type: keyword @@ -8754,7 +9319,7 @@ example: https://attack.mitre.org/tactics/TA0040/ *`threat.technique.id`*:: + -- -The id of technique used by this tactic. You can use the Mitre ATT&CK Matrix Tactic categorization, for example. (ex. https://attack.mitre.org/techniques/T1499/ ) +The id of technique used by this threat. You can use a MITRE ATT&CK® technique, for example. (ex. https://attack.mitre.org/techniques/T1499/) type: keyword @@ -8765,11 +9330,11 @@ example: T1499 *`threat.technique.name`*:: + -- -The name of technique used by this tactic. You can use the Mitre ATT&CK Matrix Tactic categorization, for example. (ex. https://attack.mitre.org/techniques/T1499/ ) +The name of technique used by this threat. You can use a MITRE ATT&CK® technique, for example. (ex. https://attack.mitre.org/techniques/T1499/) type: keyword -example: endpoint denial of service +example: Endpoint Denial of Service -- @@ -8783,7 +9348,7 @@ type: text *`threat.technique.reference`*:: + -- -The reference url of technique used by this tactic. You can use the Mitre ATT&CK Matrix Tactic categorization, for example. (ex. https://attack.mitre.org/techniques/T1499/ ) +The reference url of technique used by this threat. You can use a MITRE ATT&CK® technique, for example. (ex. https://attack.mitre.org/techniques/T1499/ ) type: keyword @@ -8870,7 +9435,7 @@ Distinguished name of subject of the issuer of the x.509 certificate presented b type: keyword -example: CN=MyDomain Root CA, OU=Infrastructure Team, DC=mydomain, DC=com +example: CN=Example Root CA, OU=Infrastructure Team, DC=example, DC=com -- @@ -8910,7 +9475,7 @@ example: 1970-01-01T00:00:00.000Z *`tls.client.server_name`*:: + -- -Also called an SNI, this tells the server which hostname to which the client is attempting to connect. When this value is available, it should get copied to `destination.domain`. +Also called an SNI, this tells the server which hostname to which the client is attempting to connect to. When this value is available, it should get copied to `destination.domain`. type: keyword @@ -8925,7 +9490,7 @@ Distinguished name of subject of the x.509 certificate presented by the client. type: keyword -example: CN=myclient, OU=Documentation Team, DC=mydomain, DC=com +example: CN=myclient, OU=Documentation Team, DC=example, DC=com -- @@ -8940,319 +9505,859 @@ example: ['TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384', 'TLS_ECDHE_ECDSA_WITH_AES_256 -- -*`tls.curve`*:: +*`tls.client.x509.alternative_names`*:: + -- -String indicating the curve used for the given cipher, when applicable. +List of subject alternative names (SAN). Name types vary by certificate authority and certificate type but commonly contain IP addresses, DNS names (and wildcards), and email addresses. type: keyword -example: secp256r1 +example: *.elastic.co -- -*`tls.established`*:: +*`tls.client.x509.issuer.common_name`*:: + -- -Boolean flag indicating if the TLS negotiation was successful and transitioned to an encrypted tunnel. +List of common name (CN) of issuing certificate authority. -type: boolean +type: keyword + +example: Example SHA2 High Assurance Server CA -- -*`tls.next_protocol`*:: +*`tls.client.x509.issuer.country`*:: + -- -String indicating the protocol being tunneled. Per the values in the IANA registry (https://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml#alpn-protocol-ids), this string should be lower case. +List of country (C) codes type: keyword -example: http/1.1 +example: US -- -*`tls.resumed`*:: +*`tls.client.x509.issuer.distinguished_name`*:: + -- -Boolean flag indicating if this TLS connection was resumed from an existing TLS negotiation. +Distinguished name (DN) of issuing certificate authority. -type: boolean +type: keyword + +example: C=US, O=Example Inc, OU=www.example.com, CN=Example SHA2 High Assurance Server CA -- -*`tls.server.certificate`*:: +*`tls.client.x509.issuer.locality`*:: + -- -PEM-encoded stand-alone certificate offered by the server. This is usually mutually-exclusive of `server.certificate_chain` since this value also exists in that list. +List of locality names (L) type: keyword -example: MII... +example: Mountain View -- -*`tls.server.certificate_chain`*:: +*`tls.client.x509.issuer.organization`*:: + -- -Array of PEM-encoded certificates that make up the certificate chain offered by the server. This is usually mutually-exclusive of `server.certificate` since that value should be the first certificate in the chain. +List of organizations (O) of issuing certificate authority. type: keyword -example: ['MII...', 'MII...'] +example: Example Inc -- -*`tls.server.hash.md5`*:: +*`tls.client.x509.issuer.organizational_unit`*:: + -- -Certificate fingerprint using the MD5 digest of DER-encoded version of certificate offered by the server. For consistency with other hash values, this value should be formatted as an uppercase hash. +List of organizational units (OU) of issuing certificate authority. type: keyword -example: 0F76C7F2C55BFD7D8E8B8F4BFBF0C9EC +example: www.example.com -- -*`tls.server.hash.sha1`*:: +*`tls.client.x509.issuer.state_or_province`*:: + -- -Certificate fingerprint using the SHA1 digest of DER-encoded version of certificate offered by the server. For consistency with other hash values, this value should be formatted as an uppercase hash. +List of state or province names (ST, S, or P) type: keyword -example: 9E393D93138888D288266C2D915214D1D1CCEB2A +example: California -- -*`tls.server.hash.sha256`*:: +*`tls.client.x509.not_after`*:: + -- -Certificate fingerprint using the SHA256 digest of DER-encoded version of certificate offered by the server. For consistency with other hash values, this value should be formatted as an uppercase hash. +Time at which the certificate is no longer considered valid. -type: keyword +type: date -example: 0687F666A054EF17A08E2F2162EAB4CBC0D265E1D7875BE74BF3C712CA92DAF0 +example: 2020-07-16 03:15:39+00:00 -- -*`tls.server.issuer`*:: +*`tls.client.x509.not_before`*:: + -- -Subject of the issuer of the x.509 certificate presented by the server. +Time at which the certificate is first considered valid. -type: keyword +type: date -example: CN=MyDomain Root CA, OU=Infrastructure Team, DC=mydomain, DC=com +example: 2019-08-16 01:40:25+00:00 -- -*`tls.server.ja3s`*:: +*`tls.client.x509.public_key_algorithm`*:: + -- -A hash that identifies servers based on how they perform an SSL/TLS handshake. +Algorithm used to generate the public key. type: keyword -example: 394441ab65754e2207b1e1b457b3641d +example: RSA -- -*`tls.server.not_after`*:: +*`tls.client.x509.public_key_curve`*:: + -- -Timestamp indicating when server certificate is no longer considered valid. +The curve used by the elliptic curve public key algorithm. This is algorithm specific. -type: date +type: keyword -example: 2021-01-01T00:00:00.000Z +example: nistp521 -- -*`tls.server.not_before`*:: +*`tls.client.x509.public_key_exponent`*:: + -- -Timestamp indicating when server certificate is first considered valid. +Exponent used to derive the public key. This is algorithm specific. -type: date +type: long -example: 1970-01-01T00:00:00.000Z +example: 65537 + +Field is not indexed. -- -*`tls.server.subject`*:: +*`tls.client.x509.public_key_size`*:: + -- -Subject of the x.509 certificate presented by the server. +The size of the public key space in bits. -type: keyword +type: long -example: CN=www.mydomain.com, OU=Infrastructure Team, DC=mydomain, DC=com +example: 2048 -- -*`tls.version`*:: +*`tls.client.x509.serial_number`*:: + -- -Numeric part of the version parsed from the original string. +Unique serial number issued by the certificate authority. For consistency, if this value is alphanumeric, it should be formatted without colons and uppercase characters. type: keyword -example: 1.2 +example: 55FBB9C7DEBF09809D12CCAA -- -*`tls.version_protocol`*:: +*`tls.client.x509.signature_algorithm`*:: + -- -Normalized lowercase protocol name parsed from original string. +Identifier for certificate signature algorithm. We recommend using names found in Go Lang Crypto library. See https://github.com/golang/go/blob/go1.14/src/crypto/x509/x509.go#L337-L353. type: keyword -example: tls +example: SHA256-RSA -- -[float] -=== tracing - -Distributed tracing makes it possible to analyze performance throughout a microservice architecture all in one view. This is accomplished by tracing all of the requests - from the initial web request in the front-end service - to queries made through multiple back-end services. - - -*`tracing.trace.id`*:: +*`tls.client.x509.subject.common_name`*:: + -- -Unique identifier of the trace. -A trace groups multiple events like transactions that belong together. For example, a user request handled by multiple inter-connected services. +List of common names (CN) of subject. type: keyword -example: 4bf92f3577b34da6a3ce929d0e0e4736 +example: shared.global.example.net -- -*`tracing.transaction.id`*:: +*`tls.client.x509.subject.country`*:: + -- -Unique identifier of the transaction. -A transaction is the highest level of work measured within a service, such as a request to a server. +List of country (C) code type: keyword -example: 00f067aa0ba902b7 +example: US -- -[float] -=== url +*`tls.client.x509.subject.distinguished_name`*:: ++ +-- +Distinguished name (DN) of the certificate subject entity. -URL fields provide support for complete or partial URLs, and supports the breaking down into scheme, domain, path, and so on. +type: keyword +example: C=US, ST=California, L=San Francisco, O=Example, Inc., CN=shared.global.example.net -*`url.domain`*:: +-- + +*`tls.client.x509.subject.locality`*:: + -- -Domain of the url, such as "www.elastic.co". -In some cases a URL may refer to an IP and/or port directly, without a domain name. In this case, the IP address would go to the `domain` field. +List of locality names (L) type: keyword -example: www.elastic.co +example: San Francisco -- -*`url.extension`*:: +*`tls.client.x509.subject.organization`*:: + -- -The field contains the file extension from the original request url. -The file extension is only set if it exists, as not every url has a file extension. -The leading period must not be included. For example, the value must be "png", not ".png". +List of organizations (O) of subject. type: keyword -example: png +example: Example, Inc. -- -*`url.fragment`*:: +*`tls.client.x509.subject.organizational_unit`*:: + -- -Portion of the url after the `#`, such as "top". -The `#` is not part of the fragment. +List of organizational units (OU) of subject. type: keyword -- -*`url.full`*:: +*`tls.client.x509.subject.state_or_province`*:: + -- -If full URLs are important to your use case, they should be stored in `url.full`, whether this field is reconstructed or present in the event source. +List of state or province names (ST, S, or P) type: keyword -example: https://www.elastic.co:443/search?q=elasticsearch#top +example: California -- -*`url.full.text`*:: +*`tls.client.x509.version_number`*:: + -- -type: text +Version of x509 format. + +type: keyword + +example: 3 -- -*`url.original`*:: +*`tls.curve`*:: + -- -Unmodified original url as seen in the event source. -Note that in network monitoring, the observed URL may be a full URL, whereas in access logs, the URL is often just represented as a path. -This field is meant to represent the URL as it was observed, complete or not. +String indicating the curve used for the given cipher, when applicable. type: keyword -example: https://www.elastic.co:443/search?q=elasticsearch#top or /search?q=elasticsearch +example: secp256r1 -- -*`url.original.text`*:: +*`tls.established`*:: + -- -type: text +Boolean flag indicating if the TLS negotiation was successful and transitioned to an encrypted tunnel. + +type: boolean -- -*`url.password`*:: +*`tls.next_protocol`*:: + -- -Password of the request. +String indicating the protocol being tunneled. Per the values in the IANA registry (https://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml#alpn-protocol-ids), this string should be lower case. type: keyword +example: http/1.1 + -- -*`url.path`*:: +*`tls.resumed`*:: + -- -Path of the request, such as "/search". +Boolean flag indicating if this TLS connection was resumed from an existing TLS negotiation. -type: keyword +type: boolean -- -*`url.port`*:: +*`tls.server.certificate`*:: + -- -Port of the request, such as 443. - -type: long +PEM-encoded stand-alone certificate offered by the server. This is usually mutually-exclusive of `server.certificate_chain` since this value also exists in that list. -example: 443 +type: keyword -format: string +example: MII... -- -*`url.query`*:: +*`tls.server.certificate_chain`*:: ++ +-- +Array of PEM-encoded certificates that make up the certificate chain offered by the server. This is usually mutually-exclusive of `server.certificate` since that value should be the first certificate in the chain. + +type: keyword + +example: ['MII...', 'MII...'] + +-- + +*`tls.server.hash.md5`*:: ++ +-- +Certificate fingerprint using the MD5 digest of DER-encoded version of certificate offered by the server. For consistency with other hash values, this value should be formatted as an uppercase hash. + +type: keyword + +example: 0F76C7F2C55BFD7D8E8B8F4BFBF0C9EC + +-- + +*`tls.server.hash.sha1`*:: ++ +-- +Certificate fingerprint using the SHA1 digest of DER-encoded version of certificate offered by the server. For consistency with other hash values, this value should be formatted as an uppercase hash. + +type: keyword + +example: 9E393D93138888D288266C2D915214D1D1CCEB2A + +-- + +*`tls.server.hash.sha256`*:: ++ +-- +Certificate fingerprint using the SHA256 digest of DER-encoded version of certificate offered by the server. For consistency with other hash values, this value should be formatted as an uppercase hash. + +type: keyword + +example: 0687F666A054EF17A08E2F2162EAB4CBC0D265E1D7875BE74BF3C712CA92DAF0 + +-- + +*`tls.server.issuer`*:: ++ +-- +Subject of the issuer of the x.509 certificate presented by the server. + +type: keyword + +example: CN=Example Root CA, OU=Infrastructure Team, DC=example, DC=com + +-- + +*`tls.server.ja3s`*:: ++ +-- +A hash that identifies servers based on how they perform an SSL/TLS handshake. + +type: keyword + +example: 394441ab65754e2207b1e1b457b3641d + +-- + +*`tls.server.not_after`*:: ++ +-- +Timestamp indicating when server certificate is no longer considered valid. + +type: date + +example: 2021-01-01T00:00:00.000Z + +-- + +*`tls.server.not_before`*:: ++ +-- +Timestamp indicating when server certificate is first considered valid. + +type: date + +example: 1970-01-01T00:00:00.000Z + +-- + +*`tls.server.subject`*:: ++ +-- +Subject of the x.509 certificate presented by the server. + +type: keyword + +example: CN=www.example.com, OU=Infrastructure Team, DC=example, DC=com + +-- + +*`tls.server.x509.alternative_names`*:: ++ +-- +List of subject alternative names (SAN). Name types vary by certificate authority and certificate type but commonly contain IP addresses, DNS names (and wildcards), and email addresses. + +type: keyword + +example: *.elastic.co + +-- + +*`tls.server.x509.issuer.common_name`*:: ++ +-- +List of common name (CN) of issuing certificate authority. + +type: keyword + +example: Example SHA2 High Assurance Server CA + +-- + +*`tls.server.x509.issuer.country`*:: ++ +-- +List of country (C) codes + +type: keyword + +example: US + +-- + +*`tls.server.x509.issuer.distinguished_name`*:: ++ +-- +Distinguished name (DN) of issuing certificate authority. + +type: keyword + +example: C=US, O=Example Inc, OU=www.example.com, CN=Example SHA2 High Assurance Server CA + +-- + +*`tls.server.x509.issuer.locality`*:: ++ +-- +List of locality names (L) + +type: keyword + +example: Mountain View + +-- + +*`tls.server.x509.issuer.organization`*:: ++ +-- +List of organizations (O) of issuing certificate authority. + +type: keyword + +example: Example Inc + +-- + +*`tls.server.x509.issuer.organizational_unit`*:: ++ +-- +List of organizational units (OU) of issuing certificate authority. + +type: keyword + +example: www.example.com + +-- + +*`tls.server.x509.issuer.state_or_province`*:: ++ +-- +List of state or province names (ST, S, or P) + +type: keyword + +example: California + +-- + +*`tls.server.x509.not_after`*:: ++ +-- +Time at which the certificate is no longer considered valid. + +type: date + +example: 2020-07-16 03:15:39+00:00 + +-- + +*`tls.server.x509.not_before`*:: ++ +-- +Time at which the certificate is first considered valid. + +type: date + +example: 2019-08-16 01:40:25+00:00 + +-- + +*`tls.server.x509.public_key_algorithm`*:: ++ +-- +Algorithm used to generate the public key. + +type: keyword + +example: RSA + +-- + +*`tls.server.x509.public_key_curve`*:: ++ +-- +The curve used by the elliptic curve public key algorithm. This is algorithm specific. + +type: keyword + +example: nistp521 + +-- + +*`tls.server.x509.public_key_exponent`*:: ++ +-- +Exponent used to derive the public key. This is algorithm specific. + +type: long + +example: 65537 + +Field is not indexed. + +-- + +*`tls.server.x509.public_key_size`*:: ++ +-- +The size of the public key space in bits. + +type: long + +example: 2048 + +-- + +*`tls.server.x509.serial_number`*:: ++ +-- +Unique serial number issued by the certificate authority. For consistency, if this value is alphanumeric, it should be formatted without colons and uppercase characters. + +type: keyword + +example: 55FBB9C7DEBF09809D12CCAA + +-- + +*`tls.server.x509.signature_algorithm`*:: ++ +-- +Identifier for certificate signature algorithm. We recommend using names found in Go Lang Crypto library. See https://github.com/golang/go/blob/go1.14/src/crypto/x509/x509.go#L337-L353. + +type: keyword + +example: SHA256-RSA + +-- + +*`tls.server.x509.subject.common_name`*:: ++ +-- +List of common names (CN) of subject. + +type: keyword + +example: shared.global.example.net + +-- + +*`tls.server.x509.subject.country`*:: ++ +-- +List of country (C) code + +type: keyword + +example: US + +-- + +*`tls.server.x509.subject.distinguished_name`*:: ++ +-- +Distinguished name (DN) of the certificate subject entity. + +type: keyword + +example: C=US, ST=California, L=San Francisco, O=Example, Inc., CN=shared.global.example.net + +-- + +*`tls.server.x509.subject.locality`*:: ++ +-- +List of locality names (L) + +type: keyword + +example: San Francisco + +-- + +*`tls.server.x509.subject.organization`*:: ++ +-- +List of organizations (O) of subject. + +type: keyword + +example: Example, Inc. + +-- + +*`tls.server.x509.subject.organizational_unit`*:: ++ +-- +List of organizational units (OU) of subject. + +type: keyword + +-- + +*`tls.server.x509.subject.state_or_province`*:: ++ +-- +List of state or province names (ST, S, or P) + +type: keyword + +example: California + +-- + +*`tls.server.x509.version_number`*:: ++ +-- +Version of x509 format. + +type: keyword + +example: 3 + +-- + +*`tls.version`*:: ++ +-- +Numeric part of the version parsed from the original string. + +type: keyword + +example: 1.2 + +-- + +*`tls.version_protocol`*:: ++ +-- +Normalized lowercase protocol name parsed from original string. + +type: keyword + +example: tls + +-- + +[float] +=== tracing + +Distributed tracing makes it possible to analyze performance throughout a microservice architecture all in one view. This is accomplished by tracing all of the requests - from the initial web request in the front-end service - to queries made through multiple back-end services. + + +*`tracing.span.id`*:: ++ +-- +Unique identifier of the span within the scope of its trace. +A span represents an operation within a transaction, such as a request to another service, or a database query. + +type: keyword + +example: 3ff9a8981b7ccd5a + +-- + +*`tracing.trace.id`*:: ++ +-- +Unique identifier of the trace. +A trace groups multiple events like transactions that belong together. For example, a user request handled by multiple inter-connected services. + +type: keyword + +example: 4bf92f3577b34da6a3ce929d0e0e4736 + +-- + +*`tracing.transaction.id`*:: ++ +-- +Unique identifier of the transaction within the scope of its trace. +A transaction is the highest level of work measured within a service, such as a request to a server. + +type: keyword + +example: 00f067aa0ba902b7 + +-- + +[float] +=== url + +URL fields provide support for complete or partial URLs, and supports the breaking down into scheme, domain, path, and so on. + + +*`url.domain`*:: ++ +-- +Domain of the url, such as "www.elastic.co". +In some cases a URL may refer to an IP and/or port directly, without a domain name. In this case, the IP address would go to the `domain` field. + +type: keyword + +example: www.elastic.co + +-- + +*`url.extension`*:: ++ +-- +The field contains the file extension from the original request url. +The file extension is only set if it exists, as not every url has a file extension. +The leading period must not be included. For example, the value must be "png", not ".png". + +type: keyword + +example: png + +-- + +*`url.fragment`*:: ++ +-- +Portion of the url after the `#`, such as "top". +The `#` is not part of the fragment. + +type: keyword + +-- + +*`url.full`*:: ++ +-- +If full URLs are important to your use case, they should be stored in `url.full`, whether this field is reconstructed or present in the event source. + +type: keyword + +example: https://www.elastic.co:443/search?q=elasticsearch#top + +-- + +*`url.full.text`*:: ++ +-- +type: text + +-- + +*`url.original`*:: ++ +-- +Unmodified original url as seen in the event source. +Note that in network monitoring, the observed URL may be a full URL, whereas in access logs, the URL is often just represented as a path. +This field is meant to represent the URL as it was observed, complete or not. + +type: keyword + +example: https://www.elastic.co:443/search?q=elasticsearch#top or /search?q=elasticsearch + +-- + +*`url.original.text`*:: ++ +-- +type: text + +-- + +*`url.password`*:: ++ +-- +Password of the request. + +type: keyword + +-- + +*`url.path`*:: ++ +-- +Path of the request, such as "/search". + +type: keyword + +-- + +*`url.port`*:: ++ +-- +Port of the request, such as 443. + +type: long + +example: 443 + +format: string + +-- + +*`url.query`*:: + -- The query field describes the query string of the request, such as "q=elasticsearch". @@ -9266,12 +10371,12 @@ type: keyword + -- The highest registered url domain, stripped of the subdomain. -For example, the registered domain for "foo.google.com" is "google.com". +For example, the registered domain for "foo.example.com" is "example.com". This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last two labels will not work well for TLDs such as "co.uk". type: keyword -example: google.com +example: example.com -- @@ -9290,7 +10395,7 @@ example: https *`url.top_level_domain`*:: + -- -The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for google.com is "com". +The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for example.com is "com". This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last label will not work well for effective TLDs such as "co.uk". type: keyword @@ -9393,7 +10498,7 @@ type: keyword *`user.id`*:: + -- -Unique identifiers of the user. +Unique identifier of the user. type: keyword @@ -9417,6 +10522,17 @@ type: text -- +*`user.roles`*:: ++ +-- +Array of user roles at the time of the event. + +type: keyword + +example: ["kibana_admin", "reporting_user"] + +-- + [float] === user_agent @@ -9745,6 +10861,276 @@ example: Critical -- +[float] +=== x509 + +This implements the common core fields for x509 certificates. This information is likely logged with TLS sessions, digital signatures found in executable binaries, S/MIME information in email bodies, or analysis of files on disk. When only a single certificate is logged in an event, it should be nested under `file`. When hashes of the DER-encoded certificate are available, the `hash` data set should be populated as well (e.g. `file.hash.sha256`). For events that contain certificate information for both sides of the connection, the x509 object could be nested under the respective side of the connection information (e.g. `tls.server.x509`). + + +*`x509.alternative_names`*:: ++ +-- +List of subject alternative names (SAN). Name types vary by certificate authority and certificate type but commonly contain IP addresses, DNS names (and wildcards), and email addresses. + +type: keyword + +example: *.elastic.co + +-- + +*`x509.issuer.common_name`*:: ++ +-- +List of common name (CN) of issuing certificate authority. + +type: keyword + +example: Example SHA2 High Assurance Server CA + +-- + +*`x509.issuer.country`*:: ++ +-- +List of country (C) codes + +type: keyword + +example: US + +-- + +*`x509.issuer.distinguished_name`*:: ++ +-- +Distinguished name (DN) of issuing certificate authority. + +type: keyword + +example: C=US, O=Example Inc, OU=www.example.com, CN=Example SHA2 High Assurance Server CA + +-- + +*`x509.issuer.locality`*:: ++ +-- +List of locality names (L) + +type: keyword + +example: Mountain View + +-- + +*`x509.issuer.organization`*:: ++ +-- +List of organizations (O) of issuing certificate authority. + +type: keyword + +example: Example Inc + +-- + +*`x509.issuer.organizational_unit`*:: ++ +-- +List of organizational units (OU) of issuing certificate authority. + +type: keyword + +example: www.example.com + +-- + +*`x509.issuer.state_or_province`*:: ++ +-- +List of state or province names (ST, S, or P) + +type: keyword + +example: California + +-- + +*`x509.not_after`*:: ++ +-- +Time at which the certificate is no longer considered valid. + +type: date + +example: 2020-07-16 03:15:39+00:00 + +-- + +*`x509.not_before`*:: ++ +-- +Time at which the certificate is first considered valid. + +type: date + +example: 2019-08-16 01:40:25+00:00 + +-- + +*`x509.public_key_algorithm`*:: ++ +-- +Algorithm used to generate the public key. + +type: keyword + +example: RSA + +-- + +*`x509.public_key_curve`*:: ++ +-- +The curve used by the elliptic curve public key algorithm. This is algorithm specific. + +type: keyword + +example: nistp521 + +-- + +*`x509.public_key_exponent`*:: ++ +-- +Exponent used to derive the public key. This is algorithm specific. + +type: long + +example: 65537 + +Field is not indexed. + +-- + +*`x509.public_key_size`*:: ++ +-- +The size of the public key space in bits. + +type: long + +example: 2048 + +-- + +*`x509.serial_number`*:: ++ +-- +Unique serial number issued by the certificate authority. For consistency, if this value is alphanumeric, it should be formatted without colons and uppercase characters. + +type: keyword + +example: 55FBB9C7DEBF09809D12CCAA + +-- + +*`x509.signature_algorithm`*:: ++ +-- +Identifier for certificate signature algorithm. We recommend using names found in Go Lang Crypto library. See https://github.com/golang/go/blob/go1.14/src/crypto/x509/x509.go#L337-L353. + +type: keyword + +example: SHA256-RSA + +-- + +*`x509.subject.common_name`*:: ++ +-- +List of common names (CN) of subject. + +type: keyword + +example: shared.global.example.net + +-- + +*`x509.subject.country`*:: ++ +-- +List of country (C) code + +type: keyword + +example: US + +-- + +*`x509.subject.distinguished_name`*:: ++ +-- +Distinguished name (DN) of the certificate subject entity. + +type: keyword + +example: C=US, ST=California, L=San Francisco, O=Example, Inc., CN=shared.global.example.net + +-- + +*`x509.subject.locality`*:: ++ +-- +List of locality names (L) + +type: keyword + +example: San Francisco + +-- + +*`x509.subject.organization`*:: ++ +-- +List of organizations (O) of subject. + +type: keyword + +example: Example, Inc. + +-- + +*`x509.subject.organizational_unit`*:: ++ +-- +List of organizational units (OU) of subject. + +type: keyword + +-- + +*`x509.subject.state_or_province`*:: ++ +-- +List of state or province names (ST, S, or P) + +type: keyword + +example: California + +-- + +*`x509.version_number`*:: ++ +-- +Version of x509 format. + +type: keyword + +example: 3 + +-- + [[exported-fields-file_integrity]] == File Integrity fields diff --git a/auditbeat/include/fields.go b/auditbeat/include/fields.go index 0b8247b5342..70a2ee2dce9 100644 --- a/auditbeat/include/fields.go +++ b/auditbeat/include/fields.go @@ -32,5 +32,5 @@ func init() { // AssetFieldsYml returns asset data. // This is the base64 encoded gzipped contents of fields.yml. func AssetFieldsYml() string { - return "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" + return "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" } diff --git a/filebeat/_meta/fields.common.yml b/filebeat/_meta/fields.common.yml index 03ef3f75ce8..3de0956c7d1 100644 --- a/filebeat/_meta/fields.common.yml +++ b/filebeat/_meta/fields.common.yml @@ -4,13 +4,6 @@ Contains log file lines. fields: - - name: log.file.path - type: keyword - required: false - description: > - The file from which the line was read. This field contains the absolute path to the file. - For example: `/var/log/system.log`. - - name: log.source.address type: keyword required: false diff --git a/filebeat/docs/fields.asciidoc b/filebeat/docs/fields.asciidoc index bb6ab0847e1..b1cb4170aa3 100644 --- a/filebeat/docs/fields.asciidoc +++ b/filebeat/docs/fields.asciidoc @@ -26470,16 +26470,6 @@ Metadata from cloud providers added by the add_cloud_metadata processor. -*`cloud.project.id`*:: -+ --- -Name of the project in Google Cloud. - - -example: project-x - --- - *`cloud.image.id`*:: + -- @@ -33124,6 +33114,18 @@ The agent fields contain the data about the software entity, if any, that collec Examples include Beats. Agents may also run on observers. ECS agent.* fields shall be populated with details of the agent running on the host or observer where the event happened or the measurement was taken. +*`agent.build.original`*:: ++ +-- +Extended build information for the agent. +This field is intended to contain any build information that a data source may provide, no specific formatting is required. + +type: keyword + +example: metricbeat version 7.6.0 (amd64), libbeat 7.6.0 [6a23e8f8f30f5001ba344e4e54d8d9cb82cb107c built 2020-02-05 23:10:10 +0000 UTC] + +-- + *`agent.ephemeral_id`*:: + -- @@ -33165,7 +33167,7 @@ example: foo + -- Type of the agent. -The agent type stays always the same and should be given by the agent used. In case of Filebeat the agent would always be Filebeat also if two Filebeat instances are run on the same machine. +The agent type always stays the same and should be given by the agent used. In case of Filebeat the agent would always be Filebeat also if two Filebeat instances are run on the same machine. type: keyword @@ -33381,8 +33383,7 @@ example: Quebec *`client.ip`*:: + -- -IP address of the client. -Can be one or multiple IPv4 or IPv6 addresses. +IP address of the client (IPv4 or IPv6). type: ip @@ -33445,19 +33446,19 @@ format: string + -- The highest registered client domain, stripped of the subdomain. -For example, the registered domain for "foo.google.com" is "google.com". +For example, the registered domain for "foo.example.com" is "example.com". This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last two labels will not work well for TLDs such as "co.uk". type: keyword -example: google.com +example: example.com -- *`client.top_level_domain`*:: + -- -The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for google.com is "com". +The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for example.com is "com". This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last label will not work well for effective TLDs such as "co.uk". type: keyword @@ -33544,7 +33545,7 @@ type: keyword *`client.user.id`*:: + -- -Unique identifiers of the user. +Unique identifier of the user. type: keyword @@ -33568,6 +33569,17 @@ type: text -- +*`client.user.roles`*:: ++ +-- +Array of user roles at the time of the event. + +type: keyword + +example: ["kibana_admin", "reporting_user"] + +-- + [float] === cloud @@ -33586,6 +33598,18 @@ example: 666777888999 -- +*`cloud.account.name`*:: ++ +-- +The cloud account name or alias used to identify different entities in a multi-tenant environment. +Examples: AWS account name, Google Cloud ORG display name. + +type: keyword + +example: elastic-dev + +-- + *`cloud.availability_zone`*:: + -- @@ -33628,6 +33652,30 @@ example: t2.medium -- +*`cloud.project.id`*:: ++ +-- +The cloud project identifier. +Examples: Google Cloud Project id, Azure Project id. + +type: keyword + +example: my-project + +-- + +*`cloud.project.name`*:: ++ +-- +The cloud project name. +Examples: Google Cloud Project name, Azure Project name. + +type: keyword + +example: my project + +-- + *`cloud.provider`*:: + -- @@ -33938,8 +33986,7 @@ example: Quebec *`destination.ip`*:: + -- -IP address of the destination. -Can be one or multiple IPv4 or IPv6 addresses. +IP address of the destination (IPv4 or IPv6). type: ip @@ -34002,19 +34049,19 @@ format: string + -- The highest registered destination domain, stripped of the subdomain. -For example, the registered domain for "foo.google.com" is "google.com". +For example, the registered domain for "foo.example.com" is "example.com". This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last two labels will not work well for TLDs such as "co.uk". type: keyword -example: google.com +example: example.com -- *`destination.top_level_domain`*:: + -- -The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for google.com is "com". +The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for example.com is "com". This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last label will not work well for effective TLDs such as "co.uk". type: keyword @@ -34101,7 +34148,7 @@ type: keyword *`destination.user.id`*:: + -- -Unique identifiers of the user. +Unique identifier of the user. type: keyword @@ -34125,6 +34172,17 @@ type: text -- +*`destination.user.roles`*:: ++ +-- +Array of user roles at the time of the event. + +type: keyword + +example: ["kibana_admin", "reporting_user"] + +-- + [float] === dll @@ -34253,6 +34311,17 @@ example: C:\Windows\System32\kernel32.dll -- +*`dll.pe.architecture`*:: ++ +-- +CPU architecture target for the file. + +type: keyword + +example: x64 + +-- + *`dll.pe.company`*:: + -- @@ -34286,6 +34355,18 @@ example: 6.3.9600.17415 -- +*`dll.pe.imphash`*:: ++ +-- +A hash of the imports in a PE file. An imphash -- or import hash -- can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. +Learn more at https://www.fireeye.com/blog/threat-research/2014/01/tracking-malware-import-hashing.html. + +type: keyword + +example: 0c6803c4e922103c4dca5963aad36ddf + +-- + *`dll.pe.original_file_name`*:: + -- @@ -34357,7 +34438,7 @@ If a chain of CNAME is being resolved, each answer's `name` should be the one th type: keyword -example: www.google.com +example: www.example.com -- @@ -34436,7 +34517,7 @@ If the name field contains non-printable characters (below 32 or above 126), tho type: keyword -example: www.google.com +example: www.example.com -- @@ -34444,12 +34525,12 @@ example: www.google.com + -- The highest registered domain, stripped of the subdomain. -For example, the registered domain for "foo.google.com" is "google.com". +For example, the registered domain for "foo.example.com" is "example.com". This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last two labels will not work well for TLDs such as "co.uk". type: keyword -example: google.com +example: example.com -- @@ -34468,7 +34549,7 @@ example: www *`dns.question.top_level_domain`*:: + -- -The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for google.com is "com". +The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for example.com is "com". This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last label will not work well for effective TLDs such as "co.uk". type: keyword @@ -34585,6 +34666,8 @@ The stack trace of this error in plain text. type: keyword +Field is not indexed. + -- *`error.stack_trace.text`*:: @@ -34767,6 +34850,8 @@ type: keyword example: Sep 19 08:26:10 host CEF:0|Security| threatmanager|1.0|100| worm successfully stopped|10|src=10.0.0.1 dst=2.1.2.2spt=1232 +Field is not indexed. + -- *`event.outcome`*:: @@ -34796,6 +34881,18 @@ example: kernel -- +*`event.reason`*:: ++ +-- +Reason why this event happened, according to the source. +This describes the why of a particular action or outcome captured in the event. Where `event.action` captures the action from the event, `event.reason` describes why that action was taken. For example, a web proxy with an `event.action` which denied the request may also populate `event.reason` with the reason why (e.g. `blocked site`). + +type: keyword + +example: Terminated an unexpected process + +-- + *`event.reference`*:: + -- @@ -34804,7 +34901,7 @@ This URL links to a static definition of the this event. Alert events, indicated type: keyword -example: https://system.vendor.com/event/#0001234 +example: https://system.example.com/event/#0001234 -- @@ -34888,11 +34985,11 @@ type: keyword + -- URL linking to an external system to continue investigation of this event. -This URL links to another system where in-depth investigation of the specific occurence of this event can take place. Alert events, indicated by `event.kind:alert`, are a common use case for this field. +This URL links to another system where in-depth investigation of the specific occurrence of this event can take place. Alert events, indicated by `event.kind:alert`, are a common use case for this field. type: keyword -example: https://mysystem.mydomain.com/alert/5271dedb-f5b0-4218-87f0-4ac4870a38fe +example: https://mysystem.example.com/alert/5271dedb-f5b0-4218-87f0-4ac4870a38fe -- @@ -35186,6 +35283,17 @@ type: text -- +*`file.pe.architecture`*:: ++ +-- +CPU architecture target for the file. + +type: keyword + +example: x64 + +-- + *`file.pe.company`*:: + -- @@ -35219,6 +35327,18 @@ example: 6.3.9600.17415 -- +*`file.pe.imphash`*:: ++ +-- +A hash of the imports in a PE file. An imphash -- or import hash -- can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. +Learn more at https://www.fireeye.com/blog/threat-research/2014/01/tracking-malware-import-hashing.html. + +type: keyword + +example: 0c6803c4e922103c4dca5963aad36ddf + +-- + *`file.pe.original_file_name`*:: + -- @@ -35291,6 +35411,270 @@ example: 1001 -- +*`file.x509.alternative_names`*:: ++ +-- +List of subject alternative names (SAN). Name types vary by certificate authority and certificate type but commonly contain IP addresses, DNS names (and wildcards), and email addresses. + +type: keyword + +example: *.elastic.co + +-- + +*`file.x509.issuer.common_name`*:: ++ +-- +List of common name (CN) of issuing certificate authority. + +type: keyword + +example: Example SHA2 High Assurance Server CA + +-- + +*`file.x509.issuer.country`*:: ++ +-- +List of country (C) codes + +type: keyword + +example: US + +-- + +*`file.x509.issuer.distinguished_name`*:: ++ +-- +Distinguished name (DN) of issuing certificate authority. + +type: keyword + +example: C=US, O=Example Inc, OU=www.example.com, CN=Example SHA2 High Assurance Server CA + +-- + +*`file.x509.issuer.locality`*:: ++ +-- +List of locality names (L) + +type: keyword + +example: Mountain View + +-- + +*`file.x509.issuer.organization`*:: ++ +-- +List of organizations (O) of issuing certificate authority. + +type: keyword + +example: Example Inc + +-- + +*`file.x509.issuer.organizational_unit`*:: ++ +-- +List of organizational units (OU) of issuing certificate authority. + +type: keyword + +example: www.example.com + +-- + +*`file.x509.issuer.state_or_province`*:: ++ +-- +List of state or province names (ST, S, or P) + +type: keyword + +example: California + +-- + +*`file.x509.not_after`*:: ++ +-- +Time at which the certificate is no longer considered valid. + +type: date + +example: 2020-07-16 03:15:39+00:00 + +-- + +*`file.x509.not_before`*:: ++ +-- +Time at which the certificate is first considered valid. + +type: date + +example: 2019-08-16 01:40:25+00:00 + +-- + +*`file.x509.public_key_algorithm`*:: ++ +-- +Algorithm used to generate the public key. + +type: keyword + +example: RSA + +-- + +*`file.x509.public_key_curve`*:: ++ +-- +The curve used by the elliptic curve public key algorithm. This is algorithm specific. + +type: keyword + +example: nistp521 + +-- + +*`file.x509.public_key_exponent`*:: ++ +-- +Exponent used to derive the public key. This is algorithm specific. + +type: long + +example: 65537 + +Field is not indexed. + +-- + +*`file.x509.public_key_size`*:: ++ +-- +The size of the public key space in bits. + +type: long + +example: 2048 + +-- + +*`file.x509.serial_number`*:: ++ +-- +Unique serial number issued by the certificate authority. For consistency, if this value is alphanumeric, it should be formatted without colons and uppercase characters. + +type: keyword + +example: 55FBB9C7DEBF09809D12CCAA + +-- + +*`file.x509.signature_algorithm`*:: ++ +-- +Identifier for certificate signature algorithm. We recommend using names found in Go Lang Crypto library. See https://github.com/golang/go/blob/go1.14/src/crypto/x509/x509.go#L337-L353. + +type: keyword + +example: SHA256-RSA + +-- + +*`file.x509.subject.common_name`*:: ++ +-- +List of common names (CN) of subject. + +type: keyword + +example: shared.global.example.net + +-- + +*`file.x509.subject.country`*:: ++ +-- +List of country (C) code + +type: keyword + +example: US + +-- + +*`file.x509.subject.distinguished_name`*:: ++ +-- +Distinguished name (DN) of the certificate subject entity. + +type: keyword + +example: C=US, ST=California, L=San Francisco, O=Example, Inc., CN=shared.global.example.net + +-- + +*`file.x509.subject.locality`*:: ++ +-- +List of locality names (L) + +type: keyword + +example: San Francisco + +-- + +*`file.x509.subject.organization`*:: ++ +-- +List of organizations (O) of subject. + +type: keyword + +example: Example, Inc. + +-- + +*`file.x509.subject.organizational_unit`*:: ++ +-- +List of organizational units (OU) of subject. + +type: keyword + +-- + +*`file.x509.subject.state_or_province`*:: ++ +-- +List of state or province names (ST, S, or P) + +type: keyword + +example: California + +-- + +*`file.x509.version_number`*:: ++ +-- +Version of x509 format. + +type: keyword + +example: 3 + +-- + [float] === geo @@ -35813,7 +36197,7 @@ type: keyword *`host.user.id`*:: + -- -Unique identifiers of the user. +Unique identifier of the user. type: keyword @@ -35837,6 +36221,17 @@ type: text -- +*`host.user.roles`*:: ++ +-- +Array of user roles at the time of the event. + +type: keyword + +example: ["kibana_admin", "reporting_user"] + +-- + [float] === http @@ -35891,11 +36286,13 @@ format: bytes + -- HTTP request method. -The field value must be normalized to lowercase for querying. See the documentation section "Implementing ECS". +Prior to ECS 1.6.0 the following guidance was provided: +"The field value must be normalized to lowercase for querying." +As of ECS 1.6.0, the guidance is deprecated because the original case of the method may be useful in anomaly detection. Original case will be mandated in ECS 2.0.0 type: keyword -example: get, post, put +example: GET, POST, PUT, PoST -- @@ -36025,6 +36422,18 @@ The log.* fields are typically populated with details about the logging mechanis The details specific to your event source are typically not logged under `log.*`, but rather in `event.*` or in other ECS fields. +*`log.file.path`*:: ++ +-- +Full path to the log file this event came from, including the file name. It should include the drive letter, when appropriate. +If the event wasn't read from a log file, do not populate this field. + +type: keyword + +example: /var/log/fun-times.log + +-- + *`log.level`*:: + -- @@ -36063,7 +36472,8 @@ example: 42 *`log.origin.file.name`*:: + -- -The name of the file containing the source code which originated the log event. Note that this is not the name of the log file. +The name of the file containing the source code which originated the log event. +Note that this field is not meant to capture the log file. The correct field to capture the log file is `log.file.path`. type: keyword @@ -36093,6 +36503,8 @@ type: keyword example: Sep 19 08:26:10 localhost My log +Field is not indexed. + -- *`log.syslog`*:: @@ -37061,6 +37473,17 @@ example: 1.12.9 These fields contain Windows Portable Executable (PE) metadata. +*`pe.architecture`*:: ++ +-- +CPU architecture target for the file. + +type: keyword + +example: x64 + +-- + *`pe.company`*:: + -- @@ -37094,6 +37517,18 @@ example: 6.3.9600.17415 -- +*`pe.imphash`*:: ++ +-- +A hash of the imports in a PE file. An imphash -- or import hash -- can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. +Learn more at https://www.fireeye.com/blog/threat-research/2014/01/tracking-malware-import-hashing.html. + +type: keyword + +example: 0c6803c4e922103c4dca5963aad36ddf + +-- + *`pe.original_file_name`*:: + -- @@ -37325,12 +37760,12 @@ type: text *`process.parent.args`*:: + -- -Array of process arguments. +Array of process arguments, starting with the absolute path to the executable. May be filtered to protect sensitive information. type: keyword -example: ['ssh', '-l', 'user', '10.0.0.16'] +example: ['/usr/bin/ssh', '-l', 'user', '10.0.0.16'] -- @@ -37521,6 +37956,84 @@ type: text -- +*`process.parent.pe.architecture`*:: ++ +-- +CPU architecture target for the file. + +type: keyword + +example: x64 + +-- + +*`process.parent.pe.company`*:: ++ +-- +Internal company name of the file, provided at compile-time. + +type: keyword + +example: Microsoft Corporation + +-- + +*`process.parent.pe.description`*:: ++ +-- +Internal description of the file, provided at compile-time. + +type: keyword + +example: Paint + +-- + +*`process.parent.pe.file_version`*:: ++ +-- +Internal version of the file, provided at compile-time. + +type: keyword + +example: 6.3.9600.17415 + +-- + +*`process.parent.pe.imphash`*:: ++ +-- +A hash of the imports in a PE file. An imphash -- or import hash -- can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. +Learn more at https://www.fireeye.com/blog/threat-research/2014/01/tracking-malware-import-hashing.html. + +type: keyword + +example: 0c6803c4e922103c4dca5963aad36ddf + +-- + +*`process.parent.pe.original_file_name`*:: ++ +-- +Internal name of the file, provided at compile-time. + +type: keyword + +example: MSPAINT.EXE + +-- + +*`process.parent.pe.product`*:: ++ +-- +Internal product name of the file, provided at compile-time. + +type: keyword + +example: Microsoft® Windows® Operating System + +-- + *`process.parent.pgid`*:: + -- @@ -37639,6 +38152,17 @@ type: text -- +*`process.pe.architecture`*:: ++ +-- +CPU architecture target for the file. + +type: keyword + +example: x64 + +-- + *`process.pe.company`*:: + -- @@ -37672,6 +38196,18 @@ example: 6.3.9600.17415 -- +*`process.pe.imphash`*:: ++ +-- +A hash of the imports in a PE file. An imphash -- or import hash -- can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. +Learn more at https://www.fireeye.com/blog/threat-research/2014/01/tracking-malware-import-hashing.html. + +type: keyword + +example: 0c6803c4e922103c4dca5963aad36ddf + +-- + *`process.pe.original_file_name`*:: + -- @@ -37914,6 +38450,15 @@ type: keyword -- +*`related.hosts`*:: ++ +-- +All hostnames or other host identifiers seen on your event. Example identifiers include FQDNs, domain names, workstation names, or aliases. + +type: keyword + +-- + *`related.ip`*:: + -- @@ -38212,8 +38757,7 @@ example: Quebec *`server.ip`*:: + -- -IP address of the server. -Can be one or multiple IPv4 or IPv6 addresses. +IP address of the server (IPv4 or IPv6). type: ip @@ -38276,19 +38820,19 @@ format: string + -- The highest registered server domain, stripped of the subdomain. -For example, the registered domain for "foo.google.com" is "google.com". +For example, the registered domain for "foo.example.com" is "example.com". This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last two labels will not work well for TLDs such as "co.uk". type: keyword -example: google.com +example: example.com -- *`server.top_level_domain`*:: + -- -The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for google.com is "com". +The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for example.com is "com". This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last label will not work well for effective TLDs such as "co.uk". type: keyword @@ -38375,7 +38919,7 @@ type: keyword *`server.user.id`*:: + -- -Unique identifiers of the user. +Unique identifier of the user. type: keyword @@ -38399,6 +38943,17 @@ type: text -- +*`server.user.roles`*:: ++ +-- +Array of user roles at the time of the event. + +type: keyword + +example: ["kibana_admin", "reporting_user"] + +-- + [float] === service @@ -38652,8 +39207,7 @@ example: Quebec *`source.ip`*:: + -- -IP address of the source. -Can be one or multiple IPv4 or IPv6 addresses. +IP address of the source (IPv4 or IPv6). type: ip @@ -38716,19 +39270,19 @@ format: string + -- The highest registered source domain, stripped of the subdomain. -For example, the registered domain for "foo.google.com" is "google.com". +For example, the registered domain for "foo.example.com" is "example.com". This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last two labels will not work well for TLDs such as "co.uk". type: keyword -example: google.com +example: example.com -- *`source.top_level_domain`*:: + -- -The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for google.com is "com". +The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for example.com is "com". This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last label will not work well for effective TLDs such as "co.uk". type: keyword @@ -38815,7 +39369,7 @@ type: keyword *`source.user.id`*:: + -- -Unique identifiers of the user. +Unique identifier of the user. type: keyword @@ -38839,10 +39393,21 @@ type: text -- +*`source.user.roles`*:: ++ +-- +Array of user roles at the time of the event. + +type: keyword + +example: ["kibana_admin", "reporting_user"] + +-- + [float] === threat -Fields to classify events and alerts according to a threat taxonomy such as the Mitre ATT&CK framework. +Fields to classify events and alerts according to a threat taxonomy such as the MITRE ATT&CK® framework. These fields are for users to classify alerts from all of their sources (e.g. IDS, NGFW, etc.) within a common taxonomy. The threat.tactic.* are meant to capture the high level category of the threat (e.g. "impact"). The threat.technique.* fields are meant to capture which kind of approach is used by this detected threat, to accomplish the goal (e.g. "endpoint denial of service"). @@ -38860,7 +39425,7 @@ example: MITRE ATT&CK *`threat.tactic.id`*:: + -- -The id of tactic used by this threat. You can use the Mitre ATT&CK Matrix Tactic categorization, for example. (ex. https://attack.mitre.org/tactics/TA0040/ ) +The id of tactic used by this threat. You can use a MITRE ATT&CK® tactic, for example. (ex. https://attack.mitre.org/tactics/TA0040/ ) type: keyword @@ -38871,7 +39436,7 @@ example: TA0040 *`threat.tactic.name`*:: + -- -Name of the type of tactic used by this threat. You can use the Mitre ATT&CK Matrix Tactic categorization, for example. (ex. https://attack.mitre.org/tactics/TA0040/ ) +Name of the type of tactic used by this threat. You can use a MITRE ATT&CK® tactic, for example. (ex. https://attack.mitre.org/tactics/TA0040/) type: keyword @@ -38882,7 +39447,7 @@ example: impact *`threat.tactic.reference`*:: + -- -The reference url of tactic used by this threat. You can use the Mitre ATT&CK Matrix Tactic categorization, for example. (ex. https://attack.mitre.org/tactics/TA0040/ ) +The reference url of tactic used by this threat. You can use a MITRE ATT&CK® tactic, for example. (ex. https://attack.mitre.org/tactics/TA0040/ ) type: keyword @@ -38893,7 +39458,7 @@ example: https://attack.mitre.org/tactics/TA0040/ *`threat.technique.id`*:: + -- -The id of technique used by this tactic. You can use the Mitre ATT&CK Matrix Tactic categorization, for example. (ex. https://attack.mitre.org/techniques/T1499/ ) +The id of technique used by this threat. You can use a MITRE ATT&CK® technique, for example. (ex. https://attack.mitre.org/techniques/T1499/) type: keyword @@ -38904,11 +39469,11 @@ example: T1499 *`threat.technique.name`*:: + -- -The name of technique used by this tactic. You can use the Mitre ATT&CK Matrix Tactic categorization, for example. (ex. https://attack.mitre.org/techniques/T1499/ ) +The name of technique used by this threat. You can use a MITRE ATT&CK® technique, for example. (ex. https://attack.mitre.org/techniques/T1499/) type: keyword -example: endpoint denial of service +example: Endpoint Denial of Service -- @@ -38922,7 +39487,7 @@ type: text *`threat.technique.reference`*:: + -- -The reference url of technique used by this tactic. You can use the Mitre ATT&CK Matrix Tactic categorization, for example. (ex. https://attack.mitre.org/techniques/T1499/ ) +The reference url of technique used by this threat. You can use a MITRE ATT&CK® technique, for example. (ex. https://attack.mitre.org/techniques/T1499/ ) type: keyword @@ -39009,7 +39574,7 @@ Distinguished name of subject of the issuer of the x.509 certificate presented b type: keyword -example: CN=MyDomain Root CA, OU=Infrastructure Team, DC=mydomain, DC=com +example: CN=Example Root CA, OU=Infrastructure Team, DC=example, DC=com -- @@ -39049,7 +39614,7 @@ example: 1970-01-01T00:00:00.000Z *`tls.client.server_name`*:: + -- -Also called an SNI, this tells the server which hostname to which the client is attempting to connect. When this value is available, it should get copied to `destination.domain`. +Also called an SNI, this tells the server which hostname to which the client is attempting to connect to. When this value is available, it should get copied to `destination.domain`. type: keyword @@ -39064,7 +39629,7 @@ Distinguished name of subject of the x.509 certificate presented by the client. type: keyword -example: CN=myclient, OU=Documentation Team, DC=mydomain, DC=com +example: CN=myclient, OU=Documentation Team, DC=example, DC=com -- @@ -39079,6 +39644,270 @@ example: ['TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384', 'TLS_ECDHE_ECDSA_WITH_AES_256 -- +*`tls.client.x509.alternative_names`*:: ++ +-- +List of subject alternative names (SAN). Name types vary by certificate authority and certificate type but commonly contain IP addresses, DNS names (and wildcards), and email addresses. + +type: keyword + +example: *.elastic.co + +-- + +*`tls.client.x509.issuer.common_name`*:: ++ +-- +List of common name (CN) of issuing certificate authority. + +type: keyword + +example: Example SHA2 High Assurance Server CA + +-- + +*`tls.client.x509.issuer.country`*:: ++ +-- +List of country (C) codes + +type: keyword + +example: US + +-- + +*`tls.client.x509.issuer.distinguished_name`*:: ++ +-- +Distinguished name (DN) of issuing certificate authority. + +type: keyword + +example: C=US, O=Example Inc, OU=www.example.com, CN=Example SHA2 High Assurance Server CA + +-- + +*`tls.client.x509.issuer.locality`*:: ++ +-- +List of locality names (L) + +type: keyword + +example: Mountain View + +-- + +*`tls.client.x509.issuer.organization`*:: ++ +-- +List of organizations (O) of issuing certificate authority. + +type: keyword + +example: Example Inc + +-- + +*`tls.client.x509.issuer.organizational_unit`*:: ++ +-- +List of organizational units (OU) of issuing certificate authority. + +type: keyword + +example: www.example.com + +-- + +*`tls.client.x509.issuer.state_or_province`*:: ++ +-- +List of state or province names (ST, S, or P) + +type: keyword + +example: California + +-- + +*`tls.client.x509.not_after`*:: ++ +-- +Time at which the certificate is no longer considered valid. + +type: date + +example: 2020-07-16 03:15:39+00:00 + +-- + +*`tls.client.x509.not_before`*:: ++ +-- +Time at which the certificate is first considered valid. + +type: date + +example: 2019-08-16 01:40:25+00:00 + +-- + +*`tls.client.x509.public_key_algorithm`*:: ++ +-- +Algorithm used to generate the public key. + +type: keyword + +example: RSA + +-- + +*`tls.client.x509.public_key_curve`*:: ++ +-- +The curve used by the elliptic curve public key algorithm. This is algorithm specific. + +type: keyword + +example: nistp521 + +-- + +*`tls.client.x509.public_key_exponent`*:: ++ +-- +Exponent used to derive the public key. This is algorithm specific. + +type: long + +example: 65537 + +Field is not indexed. + +-- + +*`tls.client.x509.public_key_size`*:: ++ +-- +The size of the public key space in bits. + +type: long + +example: 2048 + +-- + +*`tls.client.x509.serial_number`*:: ++ +-- +Unique serial number issued by the certificate authority. For consistency, if this value is alphanumeric, it should be formatted without colons and uppercase characters. + +type: keyword + +example: 55FBB9C7DEBF09809D12CCAA + +-- + +*`tls.client.x509.signature_algorithm`*:: ++ +-- +Identifier for certificate signature algorithm. We recommend using names found in Go Lang Crypto library. See https://github.com/golang/go/blob/go1.14/src/crypto/x509/x509.go#L337-L353. + +type: keyword + +example: SHA256-RSA + +-- + +*`tls.client.x509.subject.common_name`*:: ++ +-- +List of common names (CN) of subject. + +type: keyword + +example: shared.global.example.net + +-- + +*`tls.client.x509.subject.country`*:: ++ +-- +List of country (C) code + +type: keyword + +example: US + +-- + +*`tls.client.x509.subject.distinguished_name`*:: ++ +-- +Distinguished name (DN) of the certificate subject entity. + +type: keyword + +example: C=US, ST=California, L=San Francisco, O=Example, Inc., CN=shared.global.example.net + +-- + +*`tls.client.x509.subject.locality`*:: ++ +-- +List of locality names (L) + +type: keyword + +example: San Francisco + +-- + +*`tls.client.x509.subject.organization`*:: ++ +-- +List of organizations (O) of subject. + +type: keyword + +example: Example, Inc. + +-- + +*`tls.client.x509.subject.organizational_unit`*:: ++ +-- +List of organizational units (OU) of subject. + +type: keyword + +-- + +*`tls.client.x509.subject.state_or_province`*:: ++ +-- +List of state or province names (ST, S, or P) + +type: keyword + +example: California + +-- + +*`tls.client.x509.version_number`*:: ++ +-- +Version of x509 format. + +type: keyword + +example: 3 + +-- + *`tls.curve`*:: + -- @@ -39181,7 +40010,7 @@ Subject of the issuer of the x.509 certificate presented by the server. type: keyword -example: CN=MyDomain Root CA, OU=Infrastructure Team, DC=mydomain, DC=com +example: CN=Example Root CA, OU=Infrastructure Team, DC=example, DC=com -- @@ -39225,7 +40054,271 @@ Subject of the x.509 certificate presented by the server. type: keyword -example: CN=www.mydomain.com, OU=Infrastructure Team, DC=mydomain, DC=com +example: CN=www.example.com, OU=Infrastructure Team, DC=example, DC=com + +-- + +*`tls.server.x509.alternative_names`*:: ++ +-- +List of subject alternative names (SAN). Name types vary by certificate authority and certificate type but commonly contain IP addresses, DNS names (and wildcards), and email addresses. + +type: keyword + +example: *.elastic.co + +-- + +*`tls.server.x509.issuer.common_name`*:: ++ +-- +List of common name (CN) of issuing certificate authority. + +type: keyword + +example: Example SHA2 High Assurance Server CA + +-- + +*`tls.server.x509.issuer.country`*:: ++ +-- +List of country (C) codes + +type: keyword + +example: US + +-- + +*`tls.server.x509.issuer.distinguished_name`*:: ++ +-- +Distinguished name (DN) of issuing certificate authority. + +type: keyword + +example: C=US, O=Example Inc, OU=www.example.com, CN=Example SHA2 High Assurance Server CA + +-- + +*`tls.server.x509.issuer.locality`*:: ++ +-- +List of locality names (L) + +type: keyword + +example: Mountain View + +-- + +*`tls.server.x509.issuer.organization`*:: ++ +-- +List of organizations (O) of issuing certificate authority. + +type: keyword + +example: Example Inc + +-- + +*`tls.server.x509.issuer.organizational_unit`*:: ++ +-- +List of organizational units (OU) of issuing certificate authority. + +type: keyword + +example: www.example.com + +-- + +*`tls.server.x509.issuer.state_or_province`*:: ++ +-- +List of state or province names (ST, S, or P) + +type: keyword + +example: California + +-- + +*`tls.server.x509.not_after`*:: ++ +-- +Time at which the certificate is no longer considered valid. + +type: date + +example: 2020-07-16 03:15:39+00:00 + +-- + +*`tls.server.x509.not_before`*:: ++ +-- +Time at which the certificate is first considered valid. + +type: date + +example: 2019-08-16 01:40:25+00:00 + +-- + +*`tls.server.x509.public_key_algorithm`*:: ++ +-- +Algorithm used to generate the public key. + +type: keyword + +example: RSA + +-- + +*`tls.server.x509.public_key_curve`*:: ++ +-- +The curve used by the elliptic curve public key algorithm. This is algorithm specific. + +type: keyword + +example: nistp521 + +-- + +*`tls.server.x509.public_key_exponent`*:: ++ +-- +Exponent used to derive the public key. This is algorithm specific. + +type: long + +example: 65537 + +Field is not indexed. + +-- + +*`tls.server.x509.public_key_size`*:: ++ +-- +The size of the public key space in bits. + +type: long + +example: 2048 + +-- + +*`tls.server.x509.serial_number`*:: ++ +-- +Unique serial number issued by the certificate authority. For consistency, if this value is alphanumeric, it should be formatted without colons and uppercase characters. + +type: keyword + +example: 55FBB9C7DEBF09809D12CCAA + +-- + +*`tls.server.x509.signature_algorithm`*:: ++ +-- +Identifier for certificate signature algorithm. We recommend using names found in Go Lang Crypto library. See https://github.com/golang/go/blob/go1.14/src/crypto/x509/x509.go#L337-L353. + +type: keyword + +example: SHA256-RSA + +-- + +*`tls.server.x509.subject.common_name`*:: ++ +-- +List of common names (CN) of subject. + +type: keyword + +example: shared.global.example.net + +-- + +*`tls.server.x509.subject.country`*:: ++ +-- +List of country (C) code + +type: keyword + +example: US + +-- + +*`tls.server.x509.subject.distinguished_name`*:: ++ +-- +Distinguished name (DN) of the certificate subject entity. + +type: keyword + +example: C=US, ST=California, L=San Francisco, O=Example, Inc., CN=shared.global.example.net + +-- + +*`tls.server.x509.subject.locality`*:: ++ +-- +List of locality names (L) + +type: keyword + +example: San Francisco + +-- + +*`tls.server.x509.subject.organization`*:: ++ +-- +List of organizations (O) of subject. + +type: keyword + +example: Example, Inc. + +-- + +*`tls.server.x509.subject.organizational_unit`*:: ++ +-- +List of organizational units (OU) of subject. + +type: keyword + +-- + +*`tls.server.x509.subject.state_or_province`*:: ++ +-- +List of state or province names (ST, S, or P) + +type: keyword + +example: California + +-- + +*`tls.server.x509.version_number`*:: ++ +-- +Version of x509 format. + +type: keyword + +example: 3 -- @@ -39257,6 +40350,18 @@ example: tls Distributed tracing makes it possible to analyze performance throughout a microservice architecture all in one view. This is accomplished by tracing all of the requests - from the initial web request in the front-end service - to queries made through multiple back-end services. +*`tracing.span.id`*:: ++ +-- +Unique identifier of the span within the scope of its trace. +A span represents an operation within a transaction, such as a request to another service, or a database query. + +type: keyword + +example: 3ff9a8981b7ccd5a + +-- + *`tracing.trace.id`*:: + -- @@ -39272,7 +40377,7 @@ example: 4bf92f3577b34da6a3ce929d0e0e4736 *`tracing.transaction.id`*:: + -- -Unique identifier of the transaction. +Unique identifier of the transaction within the scope of its trace. A transaction is the highest level of work measured within a service, such as a request to a server. type: keyword @@ -39405,12 +40510,12 @@ type: keyword + -- The highest registered url domain, stripped of the subdomain. -For example, the registered domain for "foo.google.com" is "google.com". +For example, the registered domain for "foo.example.com" is "example.com". This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last two labels will not work well for TLDs such as "co.uk". type: keyword -example: google.com +example: example.com -- @@ -39429,7 +40534,7 @@ example: https *`url.top_level_domain`*:: + -- -The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for google.com is "com". +The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for example.com is "com". This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last label will not work well for effective TLDs such as "co.uk". type: keyword @@ -39532,7 +40637,7 @@ type: keyword *`user.id`*:: + -- -Unique identifiers of the user. +Unique identifier of the user. type: keyword @@ -39556,6 +40661,17 @@ type: text -- +*`user.roles`*:: ++ +-- +Array of user roles at the time of the event. + +type: keyword + +example: ["kibana_admin", "reporting_user"] + +-- + [float] === user_agent @@ -39884,6 +41000,276 @@ example: Critical -- +[float] +=== x509 + +This implements the common core fields for x509 certificates. This information is likely logged with TLS sessions, digital signatures found in executable binaries, S/MIME information in email bodies, or analysis of files on disk. When only a single certificate is logged in an event, it should be nested under `file`. When hashes of the DER-encoded certificate are available, the `hash` data set should be populated as well (e.g. `file.hash.sha256`). For events that contain certificate information for both sides of the connection, the x509 object could be nested under the respective side of the connection information (e.g. `tls.server.x509`). + + +*`x509.alternative_names`*:: ++ +-- +List of subject alternative names (SAN). Name types vary by certificate authority and certificate type but commonly contain IP addresses, DNS names (and wildcards), and email addresses. + +type: keyword + +example: *.elastic.co + +-- + +*`x509.issuer.common_name`*:: ++ +-- +List of common name (CN) of issuing certificate authority. + +type: keyword + +example: Example SHA2 High Assurance Server CA + +-- + +*`x509.issuer.country`*:: ++ +-- +List of country (C) codes + +type: keyword + +example: US + +-- + +*`x509.issuer.distinguished_name`*:: ++ +-- +Distinguished name (DN) of issuing certificate authority. + +type: keyword + +example: C=US, O=Example Inc, OU=www.example.com, CN=Example SHA2 High Assurance Server CA + +-- + +*`x509.issuer.locality`*:: ++ +-- +List of locality names (L) + +type: keyword + +example: Mountain View + +-- + +*`x509.issuer.organization`*:: ++ +-- +List of organizations (O) of issuing certificate authority. + +type: keyword + +example: Example Inc + +-- + +*`x509.issuer.organizational_unit`*:: ++ +-- +List of organizational units (OU) of issuing certificate authority. + +type: keyword + +example: www.example.com + +-- + +*`x509.issuer.state_or_province`*:: ++ +-- +List of state or province names (ST, S, or P) + +type: keyword + +example: California + +-- + +*`x509.not_after`*:: ++ +-- +Time at which the certificate is no longer considered valid. + +type: date + +example: 2020-07-16 03:15:39+00:00 + +-- + +*`x509.not_before`*:: ++ +-- +Time at which the certificate is first considered valid. + +type: date + +example: 2019-08-16 01:40:25+00:00 + +-- + +*`x509.public_key_algorithm`*:: ++ +-- +Algorithm used to generate the public key. + +type: keyword + +example: RSA + +-- + +*`x509.public_key_curve`*:: ++ +-- +The curve used by the elliptic curve public key algorithm. This is algorithm specific. + +type: keyword + +example: nistp521 + +-- + +*`x509.public_key_exponent`*:: ++ +-- +Exponent used to derive the public key. This is algorithm specific. + +type: long + +example: 65537 + +Field is not indexed. + +-- + +*`x509.public_key_size`*:: ++ +-- +The size of the public key space in bits. + +type: long + +example: 2048 + +-- + +*`x509.serial_number`*:: ++ +-- +Unique serial number issued by the certificate authority. For consistency, if this value is alphanumeric, it should be formatted without colons and uppercase characters. + +type: keyword + +example: 55FBB9C7DEBF09809D12CCAA + +-- + +*`x509.signature_algorithm`*:: ++ +-- +Identifier for certificate signature algorithm. We recommend using names found in Go Lang Crypto library. See https://github.com/golang/go/blob/go1.14/src/crypto/x509/x509.go#L337-L353. + +type: keyword + +example: SHA256-RSA + +-- + +*`x509.subject.common_name`*:: ++ +-- +List of common names (CN) of subject. + +type: keyword + +example: shared.global.example.net + +-- + +*`x509.subject.country`*:: ++ +-- +List of country (C) code + +type: keyword + +example: US + +-- + +*`x509.subject.distinguished_name`*:: ++ +-- +Distinguished name (DN) of the certificate subject entity. + +type: keyword + +example: C=US, ST=California, L=San Francisco, O=Example, Inc., CN=shared.global.example.net + +-- + +*`x509.subject.locality`*:: ++ +-- +List of locality names (L) + +type: keyword + +example: San Francisco + +-- + +*`x509.subject.organization`*:: ++ +-- +List of organizations (O) of subject. + +type: keyword + +example: Example, Inc. + +-- + +*`x509.subject.organizational_unit`*:: ++ +-- +List of organizational units (OU) of subject. + +type: keyword + +-- + +*`x509.subject.state_or_province`*:: ++ +-- +List of state or province names (ST, S, or P) + +type: keyword + +example: California + +-- + +*`x509.version_number`*:: ++ +-- +Version of x509 format. + +type: keyword + +example: 3 + +-- + [[exported-fields-elasticsearch]] == Elasticsearch fields @@ -75887,18 +77273,6 @@ Contains log file lines. -*`log.file.path`*:: -+ --- -The file from which the line was read. This field contains the absolute path to the file. For example: `/var/log/system.log`. - - -type: keyword - -required: False - --- - *`log.source.address`*:: + -- diff --git a/filebeat/include/fields.go b/filebeat/include/fields.go index e0ea9afb7e4..384ed74d196 100644 --- a/filebeat/include/fields.go +++ b/filebeat/include/fields.go @@ -32,5 +32,5 @@ func init() { // AssetFieldsYml returns asset data. // This is the base64 encoded gzipped contents of fields.yml. func AssetFieldsYml() string { - return "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" + return "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" } diff --git a/go.mod b/go.mod index 33ba6946c6f..84384bf91ea 100644 --- a/go.mod +++ b/go.mod @@ -57,7 +57,7 @@ require ( github.com/dop251/goja_nodejs v0.0.0-20171011081505-adff31b136e6 github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4 github.com/eclipse/paho.mqtt.golang v1.2.1-0.20200121105743-0d940dd29fd2 - github.com/elastic/ecs v1.5.0 + github.com/elastic/ecs v1.6.0 github.com/elastic/elastic-agent-client/v7 v7.0.0-20200709172729-d43b7ad5833a github.com/elastic/go-concert v0.0.4 github.com/elastic/go-libaudit/v2 v2.0.2 diff --git a/go.sum b/go.sum index 04cf8e52c33..6a60f8d7129 100644 --- a/go.sum +++ b/go.sum @@ -223,8 +223,8 @@ github.com/eclipse/paho.mqtt.golang v1.2.1-0.20200121105743-0d940dd29fd2 h1:DW6W github.com/eclipse/paho.mqtt.golang v1.2.1-0.20200121105743-0d940dd29fd2/go.mod h1:H9keYFcgq3Qr5OUJm/JZI/i6U7joQ8SYLhZwfeOo6Ts= github.com/elastic/dhcp v0.0.0-20200227161230-57ec251c7eb3 h1:lnDkqiRFKm0rxdljqrj3lotWinO9+jFmeDXIC4gvIQs= github.com/elastic/dhcp v0.0.0-20200227161230-57ec251c7eb3/go.mod h1:aPqzac6AYkipvp4hufTyMj5PDIphF3+At8zr7r51xjY= -github.com/elastic/ecs v1.5.0 h1:/VEIBsRU4ecq2+U3RPfKNc6bFyomP6qnthYEcQZu8GU= -github.com/elastic/ecs v1.5.0/go.mod h1:pgiLbQsijLOJvFR8OTILLu0Ni/R/foUNg0L+T6mU9b4= +github.com/elastic/ecs v1.6.0 h1:8NmgfnsjmKXh9hVsK3H2tZtfUptepNc3msJOAynhtmc= +github.com/elastic/ecs v1.6.0/go.mod h1:pgiLbQsijLOJvFR8OTILLu0Ni/R/foUNg0L+T6mU9b4= github.com/elastic/elastic-agent-client/v7 v7.0.0-20200709172729-d43b7ad5833a h1:2NHgf1RUw+f240lpTnLrCp1aBNvq2wDi0E1A423/S1k= github.com/elastic/elastic-agent-client/v7 v7.0.0-20200709172729-d43b7ad5833a/go.mod h1:uh/Gj9a0XEbYoM4NYz4LvaBVARz3QXLmlNjsrKY9fTc= github.com/elastic/fsevents v0.0.0-20181029231046-e1d381a4d270 h1:cWPqxlPtir4RoQVCpGSRXmLqjEHpJKbR60rxh1nQZY4= diff --git a/heartbeat/docs/fields.asciidoc b/heartbeat/docs/fields.asciidoc index e60d1096919..d8fa85d1175 100644 --- a/heartbeat/docs/fields.asciidoc +++ b/heartbeat/docs/fields.asciidoc @@ -100,16 +100,6 @@ Metadata from cloud providers added by the add_cloud_metadata processor. -*`cloud.project.id`*:: -+ --- -Name of the project in Google Cloud. - - -example: project-x - --- - *`cloud.image.id`*:: + -- @@ -432,6 +422,18 @@ The agent fields contain the data about the software entity, if any, that collec Examples include Beats. Agents may also run on observers. ECS agent.* fields shall be populated with details of the agent running on the host or observer where the event happened or the measurement was taken. +*`agent.build.original`*:: ++ +-- +Extended build information for the agent. +This field is intended to contain any build information that a data source may provide, no specific formatting is required. + +type: keyword + +example: metricbeat version 7.6.0 (amd64), libbeat 7.6.0 [6a23e8f8f30f5001ba344e4e54d8d9cb82cb107c built 2020-02-05 23:10:10 +0000 UTC] + +-- + *`agent.ephemeral_id`*:: + -- @@ -473,7 +475,7 @@ example: foo + -- Type of the agent. -The agent type stays always the same and should be given by the agent used. In case of Filebeat the agent would always be Filebeat also if two Filebeat instances are run on the same machine. +The agent type always stays the same and should be given by the agent used. In case of Filebeat the agent would always be Filebeat also if two Filebeat instances are run on the same machine. type: keyword @@ -689,8 +691,7 @@ example: Quebec *`client.ip`*:: + -- -IP address of the client. -Can be one or multiple IPv4 or IPv6 addresses. +IP address of the client (IPv4 or IPv6). type: ip @@ -753,19 +754,19 @@ format: string + -- The highest registered client domain, stripped of the subdomain. -For example, the registered domain for "foo.google.com" is "google.com". +For example, the registered domain for "foo.example.com" is "example.com". This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last two labels will not work well for TLDs such as "co.uk". type: keyword -example: google.com +example: example.com -- *`client.top_level_domain`*:: + -- -The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for google.com is "com". +The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for example.com is "com". This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last label will not work well for effective TLDs such as "co.uk". type: keyword @@ -852,7 +853,7 @@ type: keyword *`client.user.id`*:: + -- -Unique identifiers of the user. +Unique identifier of the user. type: keyword @@ -876,6 +877,17 @@ type: text -- +*`client.user.roles`*:: ++ +-- +Array of user roles at the time of the event. + +type: keyword + +example: ["kibana_admin", "reporting_user"] + +-- + [float] === cloud @@ -894,6 +906,18 @@ example: 666777888999 -- +*`cloud.account.name`*:: ++ +-- +The cloud account name or alias used to identify different entities in a multi-tenant environment. +Examples: AWS account name, Google Cloud ORG display name. + +type: keyword + +example: elastic-dev + +-- + *`cloud.availability_zone`*:: + -- @@ -936,6 +960,30 @@ example: t2.medium -- +*`cloud.project.id`*:: ++ +-- +The cloud project identifier. +Examples: Google Cloud Project id, Azure Project id. + +type: keyword + +example: my-project + +-- + +*`cloud.project.name`*:: ++ +-- +The cloud project name. +Examples: Google Cloud Project name, Azure Project name. + +type: keyword + +example: my project + +-- + *`cloud.provider`*:: + -- @@ -1246,8 +1294,7 @@ example: Quebec *`destination.ip`*:: + -- -IP address of the destination. -Can be one or multiple IPv4 or IPv6 addresses. +IP address of the destination (IPv4 or IPv6). type: ip @@ -1310,19 +1357,19 @@ format: string + -- The highest registered destination domain, stripped of the subdomain. -For example, the registered domain for "foo.google.com" is "google.com". +For example, the registered domain for "foo.example.com" is "example.com". This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last two labels will not work well for TLDs such as "co.uk". type: keyword -example: google.com +example: example.com -- *`destination.top_level_domain`*:: + -- -The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for google.com is "com". +The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for example.com is "com". This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last label will not work well for effective TLDs such as "co.uk". type: keyword @@ -1409,7 +1456,7 @@ type: keyword *`destination.user.id`*:: + -- -Unique identifiers of the user. +Unique identifier of the user. type: keyword @@ -1433,6 +1480,17 @@ type: text -- +*`destination.user.roles`*:: ++ +-- +Array of user roles at the time of the event. + +type: keyword + +example: ["kibana_admin", "reporting_user"] + +-- + [float] === dll @@ -1561,6 +1619,17 @@ example: C:\Windows\System32\kernel32.dll -- +*`dll.pe.architecture`*:: ++ +-- +CPU architecture target for the file. + +type: keyword + +example: x64 + +-- + *`dll.pe.company`*:: + -- @@ -1594,6 +1663,18 @@ example: 6.3.9600.17415 -- +*`dll.pe.imphash`*:: ++ +-- +A hash of the imports in a PE file. An imphash -- or import hash -- can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. +Learn more at https://www.fireeye.com/blog/threat-research/2014/01/tracking-malware-import-hashing.html. + +type: keyword + +example: 0c6803c4e922103c4dca5963aad36ddf + +-- + *`dll.pe.original_file_name`*:: + -- @@ -1665,7 +1746,7 @@ If a chain of CNAME is being resolved, each answer's `name` should be the one th type: keyword -example: www.google.com +example: www.example.com -- @@ -1744,7 +1825,7 @@ If the name field contains non-printable characters (below 32 or above 126), tho type: keyword -example: www.google.com +example: www.example.com -- @@ -1752,12 +1833,12 @@ example: www.google.com + -- The highest registered domain, stripped of the subdomain. -For example, the registered domain for "foo.google.com" is "google.com". +For example, the registered domain for "foo.example.com" is "example.com". This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last two labels will not work well for TLDs such as "co.uk". type: keyword -example: google.com +example: example.com -- @@ -1776,7 +1857,7 @@ example: www *`dns.question.top_level_domain`*:: + -- -The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for google.com is "com". +The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for example.com is "com". This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last label will not work well for effective TLDs such as "co.uk". type: keyword @@ -1893,6 +1974,8 @@ The stack trace of this error in plain text. type: keyword +Field is not indexed. + -- *`error.stack_trace.text`*:: @@ -2075,6 +2158,8 @@ type: keyword example: Sep 19 08:26:10 host CEF:0|Security| threatmanager|1.0|100| worm successfully stopped|10|src=10.0.0.1 dst=2.1.2.2spt=1232 +Field is not indexed. + -- *`event.outcome`*:: @@ -2104,6 +2189,18 @@ example: kernel -- +*`event.reason`*:: ++ +-- +Reason why this event happened, according to the source. +This describes the why of a particular action or outcome captured in the event. Where `event.action` captures the action from the event, `event.reason` describes why that action was taken. For example, a web proxy with an `event.action` which denied the request may also populate `event.reason` with the reason why (e.g. `blocked site`). + +type: keyword + +example: Terminated an unexpected process + +-- + *`event.reference`*:: + -- @@ -2112,7 +2209,7 @@ This URL links to a static definition of the this event. Alert events, indicated type: keyword -example: https://system.vendor.com/event/#0001234 +example: https://system.example.com/event/#0001234 -- @@ -2196,11 +2293,11 @@ type: keyword + -- URL linking to an external system to continue investigation of this event. -This URL links to another system where in-depth investigation of the specific occurence of this event can take place. Alert events, indicated by `event.kind:alert`, are a common use case for this field. +This URL links to another system where in-depth investigation of the specific occurrence of this event can take place. Alert events, indicated by `event.kind:alert`, are a common use case for this field. type: keyword -example: https://mysystem.mydomain.com/alert/5271dedb-f5b0-4218-87f0-4ac4870a38fe +example: https://mysystem.example.com/alert/5271dedb-f5b0-4218-87f0-4ac4870a38fe -- @@ -2494,6 +2591,17 @@ type: text -- +*`file.pe.architecture`*:: ++ +-- +CPU architecture target for the file. + +type: keyword + +example: x64 + +-- + *`file.pe.company`*:: + -- @@ -2527,6 +2635,18 @@ example: 6.3.9600.17415 -- +*`file.pe.imphash`*:: ++ +-- +A hash of the imports in a PE file. An imphash -- or import hash -- can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. +Learn more at https://www.fireeye.com/blog/threat-research/2014/01/tracking-malware-import-hashing.html. + +type: keyword + +example: 0c6803c4e922103c4dca5963aad36ddf + +-- + *`file.pe.original_file_name`*:: + -- @@ -2599,650 +2719,927 @@ example: 1001 -- -[float] -=== geo - -Geo fields can carry data about a specific location related to an event. -This geolocation information can be derived from techniques such as Geo IP, or be user-supplied. - - -*`geo.city_name`*:: +*`file.x509.alternative_names`*:: + -- -City name. +List of subject alternative names (SAN). Name types vary by certificate authority and certificate type but commonly contain IP addresses, DNS names (and wildcards), and email addresses. type: keyword -example: Montreal +example: *.elastic.co -- -*`geo.continent_name`*:: +*`file.x509.issuer.common_name`*:: + -- -Name of the continent. +List of common name (CN) of issuing certificate authority. type: keyword -example: North America +example: Example SHA2 High Assurance Server CA -- -*`geo.country_iso_code`*:: +*`file.x509.issuer.country`*:: + -- -Country ISO code. +List of country (C) codes type: keyword -example: CA +example: US -- -*`geo.country_name`*:: +*`file.x509.issuer.distinguished_name`*:: + -- -Country name. +Distinguished name (DN) of issuing certificate authority. type: keyword -example: Canada +example: C=US, O=Example Inc, OU=www.example.com, CN=Example SHA2 High Assurance Server CA -- -*`geo.location`*:: +*`file.x509.issuer.locality`*:: + -- -Longitude and latitude. +List of locality names (L) -type: geo_point +type: keyword -example: { "lon": -73.614830, "lat": 45.505918 } +example: Mountain View -- -*`geo.name`*:: +*`file.x509.issuer.organization`*:: + -- -User-defined description of a location, at the level of granularity they care about. -Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. -Not typically used in automated geolocation. +List of organizations (O) of issuing certificate authority. type: keyword -example: boston-dc +example: Example Inc -- -*`geo.region_iso_code`*:: +*`file.x509.issuer.organizational_unit`*:: + -- -Region ISO code. +List of organizational units (OU) of issuing certificate authority. type: keyword -example: CA-QC +example: www.example.com -- -*`geo.region_name`*:: +*`file.x509.issuer.state_or_province`*:: + -- -Region name. +List of state or province names (ST, S, or P) type: keyword -example: Quebec +example: California -- -[float] -=== group - -The group fields are meant to represent groups that are relevant to the event. - - -*`group.domain`*:: +*`file.x509.not_after`*:: + -- -Name of the directory the group is a member of. -For example, an LDAP or Active Directory domain name. +Time at which the certificate is no longer considered valid. -type: keyword +type: date + +example: 2020-07-16 03:15:39+00:00 -- -*`group.id`*:: +*`file.x509.not_before`*:: + -- -Unique identifier for the group on the system/platform. +Time at which the certificate is first considered valid. -type: keyword +type: date + +example: 2019-08-16 01:40:25+00:00 -- -*`group.name`*:: +*`file.x509.public_key_algorithm`*:: + -- -Name of the group. +Algorithm used to generate the public key. type: keyword --- - -[float] -=== hash - -The hash fields represent different hash algorithms and their values. -Field names for common hashes (e.g. MD5, SHA1) are predefined. Add fields for other hashes by lowercasing the hash algorithm name and using underscore separators as appropriate (snake case, e.g. sha3_512). +example: RSA +-- -*`hash.md5`*:: +*`file.x509.public_key_curve`*:: + -- -MD5 hash. +The curve used by the elliptic curve public key algorithm. This is algorithm specific. type: keyword +example: nistp521 + -- -*`hash.sha1`*:: +*`file.x509.public_key_exponent`*:: + -- -SHA1 hash. +Exponent used to derive the public key. This is algorithm specific. -type: keyword +type: long + +example: 65537 + +Field is not indexed. -- -*`hash.sha256`*:: +*`file.x509.public_key_size`*:: + -- -SHA256 hash. +The size of the public key space in bits. -type: keyword +type: long + +example: 2048 -- -*`hash.sha512`*:: +*`file.x509.serial_number`*:: + -- -SHA512 hash. +Unique serial number issued by the certificate authority. For consistency, if this value is alphanumeric, it should be formatted without colons and uppercase characters. type: keyword --- - -[float] -=== host - -A host is defined as a general computing instance. -ECS host.* fields should be populated with details about the host on which the event happened, or from which the measurement was taken. Host types include hardware, virtual machines, Docker containers, and Kubernetes nodes. +example: 55FBB9C7DEBF09809D12CCAA +-- -*`host.architecture`*:: +*`file.x509.signature_algorithm`*:: + -- -Operating system architecture. +Identifier for certificate signature algorithm. We recommend using names found in Go Lang Crypto library. See https://github.com/golang/go/blob/go1.14/src/crypto/x509/x509.go#L337-L353. type: keyword -example: x86_64 +example: SHA256-RSA -- -*`host.domain`*:: +*`file.x509.subject.common_name`*:: + -- -Name of the domain of which the host is a member. -For example, on Windows this could be the host's Active Directory domain or NetBIOS domain name. For Linux this could be the domain of the host's LDAP provider. +List of common names (CN) of subject. type: keyword -example: CONTOSO +example: shared.global.example.net -- -*`host.geo.city_name`*:: +*`file.x509.subject.country`*:: + -- -City name. +List of country (C) code type: keyword -example: Montreal +example: US -- -*`host.geo.continent_name`*:: +*`file.x509.subject.distinguished_name`*:: + -- -Name of the continent. +Distinguished name (DN) of the certificate subject entity. type: keyword -example: North America +example: C=US, ST=California, L=San Francisco, O=Example, Inc., CN=shared.global.example.net -- -*`host.geo.country_iso_code`*:: +*`file.x509.subject.locality`*:: + -- -Country ISO code. +List of locality names (L) type: keyword -example: CA +example: San Francisco -- -*`host.geo.country_name`*:: +*`file.x509.subject.organization`*:: + -- -Country name. +List of organizations (O) of subject. type: keyword -example: Canada +example: Example, Inc. -- -*`host.geo.location`*:: +*`file.x509.subject.organizational_unit`*:: + -- -Longitude and latitude. - -type: geo_point +List of organizational units (OU) of subject. -example: { "lon": -73.614830, "lat": 45.505918 } +type: keyword -- -*`host.geo.name`*:: +*`file.x509.subject.state_or_province`*:: + -- -User-defined description of a location, at the level of granularity they care about. -Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. -Not typically used in automated geolocation. +List of state or province names (ST, S, or P) type: keyword -example: boston-dc +example: California -- -*`host.geo.region_iso_code`*:: +*`file.x509.version_number`*:: + -- -Region ISO code. +Version of x509 format. type: keyword -example: CA-QC +example: 3 -- -*`host.geo.region_name`*:: +[float] +=== geo + +Geo fields can carry data about a specific location related to an event. +This geolocation information can be derived from techniques such as Geo IP, or be user-supplied. + + +*`geo.city_name`*:: + -- -Region name. +City name. type: keyword -example: Quebec +example: Montreal -- -*`host.hostname`*:: +*`geo.continent_name`*:: + -- -Hostname of the host. -It normally contains what the `hostname` command returns on the host machine. +Name of the continent. type: keyword +example: North America + -- -*`host.id`*:: +*`geo.country_iso_code`*:: + -- -Unique host id. -As hostname is not always unique, use values that are meaningful in your environment. -Example: The current usage of `beat.name`. +Country ISO code. type: keyword +example: CA + -- -*`host.ip`*:: +*`geo.country_name`*:: + -- -Host ip addresses. +Country name. -type: ip +type: keyword + +example: Canada -- -*`host.mac`*:: +*`geo.location`*:: + -- -Host mac addresses. +Longitude and latitude. -type: keyword +type: geo_point + +example: { "lon": -73.614830, "lat": 45.505918 } -- -*`host.name`*:: +*`geo.name`*:: + -- -Name of the host. -It can contain what `hostname` returns on Unix systems, the fully qualified domain name, or a name specified by the user. The sender decides which value to use. +User-defined description of a location, at the level of granularity they care about. +Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. +Not typically used in automated geolocation. type: keyword +example: boston-dc + -- -*`host.os.family`*:: +*`geo.region_iso_code`*:: + -- -OS family (such as redhat, debian, freebsd, windows). +Region ISO code. type: keyword -example: debian +example: CA-QC -- -*`host.os.full`*:: +*`geo.region_name`*:: + -- -Operating system name, including the version or code name. +Region name. type: keyword -example: Mac OS Mojave +example: Quebec -- -*`host.os.full.text`*:: -+ --- -type: text +[float] +=== group --- +The group fields are meant to represent groups that are relevant to the event. -*`host.os.kernel`*:: + +*`group.domain`*:: + -- -Operating system kernel version as a raw string. +Name of the directory the group is a member of. +For example, an LDAP or Active Directory domain name. type: keyword -example: 4.4.0-112-generic - -- -*`host.os.name`*:: +*`group.id`*:: + -- -Operating system name, without the version. +Unique identifier for the group on the system/platform. type: keyword -example: Mac OS X - -- -*`host.os.name.text`*:: +*`group.name`*:: + -- -type: text +Name of the group. --- +type: keyword -*`host.os.platform`*:: -+ -- -Operating system platform (such centos, ubuntu, windows). -type: keyword +[float] +=== hash -example: darwin +The hash fields represent different hash algorithms and their values. +Field names for common hashes (e.g. MD5, SHA1) are predefined. Add fields for other hashes by lowercasing the hash algorithm name and using underscore separators as appropriate (snake case, e.g. sha3_512). --- -*`host.os.version`*:: +*`hash.md5`*:: + -- -Operating system version as a raw string. +MD5 hash. type: keyword -example: 10.14.1 - -- -*`host.type`*:: +*`hash.sha1`*:: + -- -Type of host. -For Cloud providers this can be the machine type like `t2.medium`. If vm, this could be the container, for example, or other information meaningful in your environment. +SHA1 hash. type: keyword -- -*`host.uptime`*:: +*`hash.sha256`*:: + -- -Seconds the host has been up. - -type: long +SHA256 hash. -example: 1325 +type: keyword -- -*`host.user.domain`*:: +*`hash.sha512`*:: + -- -Name of the directory the user is a member of. -For example, an LDAP or Active Directory domain name. +SHA512 hash. type: keyword -- -*`host.user.email`*:: -+ --- -User email address. +[float] +=== host -type: keyword +A host is defined as a general computing instance. +ECS host.* fields should be populated with details about the host on which the event happened, or from which the measurement was taken. Host types include hardware, virtual machines, Docker containers, and Kubernetes nodes. --- -*`host.user.full_name`*:: +*`host.architecture`*:: + -- -User's full name, if available. +Operating system architecture. type: keyword -example: Albert Einstein +example: x86_64 -- -*`host.user.full_name.text`*:: +*`host.domain`*:: + -- -type: text +Name of the domain of which the host is a member. +For example, on Windows this could be the host's Active Directory domain or NetBIOS domain name. For Linux this could be the domain of the host's LDAP provider. + +type: keyword + +example: CONTOSO -- -*`host.user.group.domain`*:: +*`host.geo.city_name`*:: + -- -Name of the directory the group is a member of. -For example, an LDAP or Active Directory domain name. +City name. type: keyword +example: Montreal + -- -*`host.user.group.id`*:: +*`host.geo.continent_name`*:: + -- -Unique identifier for the group on the system/platform. +Name of the continent. type: keyword +example: North America + -- -*`host.user.group.name`*:: +*`host.geo.country_iso_code`*:: + -- -Name of the group. +Country ISO code. type: keyword +example: CA + -- -*`host.user.hash`*:: +*`host.geo.country_name`*:: + -- -Unique user hash to correlate information for a user in anonymized form. -Useful if `user.id` or `user.name` contain confidential information and cannot be used. +Country name. type: keyword +example: Canada + -- -*`host.user.id`*:: +*`host.geo.location`*:: + -- -Unique identifiers of the user. +Longitude and latitude. -type: keyword +type: geo_point + +example: { "lon": -73.614830, "lat": 45.505918 } -- -*`host.user.name`*:: +*`host.geo.name`*:: + -- -Short name or login of the user. +User-defined description of a location, at the level of granularity they care about. +Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. +Not typically used in automated geolocation. type: keyword -example: albert +example: boston-dc -- -*`host.user.name.text`*:: +*`host.geo.region_iso_code`*:: + -- -type: text - --- +Region ISO code. -[float] -=== http +type: keyword -Fields related to HTTP activity. Use the `url` field set to store the url of the request. +example: CA-QC +-- -*`http.request.body.bytes`*:: +*`host.geo.region_name`*:: + -- -Size in bytes of the request body. - -type: long +Region name. -example: 887 +type: keyword -format: bytes +example: Quebec -- -*`http.request.body.content`*:: +*`host.hostname`*:: + -- -The full HTTP request body. +Hostname of the host. +It normally contains what the `hostname` command returns on the host machine. type: keyword -example: Hello world - -- -*`http.request.body.content.text`*:: +*`host.id`*:: + -- -type: text +Unique host id. +As hostname is not always unique, use values that are meaningful in your environment. +Example: The current usage of `beat.name`. + +type: keyword -- -*`http.request.bytes`*:: +*`host.ip`*:: + -- -Total size in bytes of the request (body and headers). - -type: long - -example: 1437 +Host ip addresses. -format: bytes +type: ip -- -*`http.request.method`*:: +*`host.mac`*:: + -- -HTTP request method. -The field value must be normalized to lowercase for querying. See the documentation section "Implementing ECS". +Host mac addresses. type: keyword -example: get, post, put - -- -*`http.request.referrer`*:: +*`host.name`*:: + -- -Referrer for this HTTP request. +Name of the host. +It can contain what `hostname` returns on Unix systems, the fully qualified domain name, or a name specified by the user. The sender decides which value to use. type: keyword -example: https://blog.example.com/ - -- -*`http.response.body.bytes`*:: +*`host.os.family`*:: + -- -Size in bytes of the response body. - -type: long +OS family (such as redhat, debian, freebsd, windows). -example: 887 +type: keyword -format: bytes +example: debian -- -*`http.response.body.content`*:: +*`host.os.full`*:: + -- -The full HTTP response body. +Operating system name, including the version or code name. type: keyword -example: Hello world +example: Mac OS Mojave -- -*`http.response.body.content.text`*:: +*`host.os.full.text`*:: ++ +-- +type: text + +-- + +*`host.os.kernel`*:: ++ +-- +Operating system kernel version as a raw string. + +type: keyword + +example: 4.4.0-112-generic + +-- + +*`host.os.name`*:: ++ +-- +Operating system name, without the version. + +type: keyword + +example: Mac OS X + +-- + +*`host.os.name.text`*:: ++ +-- +type: text + +-- + +*`host.os.platform`*:: ++ +-- +Operating system platform (such centos, ubuntu, windows). + +type: keyword + +example: darwin + +-- + +*`host.os.version`*:: ++ +-- +Operating system version as a raw string. + +type: keyword + +example: 10.14.1 + +-- + +*`host.type`*:: ++ +-- +Type of host. +For Cloud providers this can be the machine type like `t2.medium`. If vm, this could be the container, for example, or other information meaningful in your environment. + +type: keyword + +-- + +*`host.uptime`*:: ++ +-- +Seconds the host has been up. + +type: long + +example: 1325 + +-- + +*`host.user.domain`*:: ++ +-- +Name of the directory the user is a member of. +For example, an LDAP or Active Directory domain name. + +type: keyword + +-- + +*`host.user.email`*:: ++ +-- +User email address. + +type: keyword + +-- + +*`host.user.full_name`*:: ++ +-- +User's full name, if available. + +type: keyword + +example: Albert Einstein + +-- + +*`host.user.full_name.text`*:: ++ +-- +type: text + +-- + +*`host.user.group.domain`*:: ++ +-- +Name of the directory the group is a member of. +For example, an LDAP or Active Directory domain name. + +type: keyword + +-- + +*`host.user.group.id`*:: ++ +-- +Unique identifier for the group on the system/platform. + +type: keyword + +-- + +*`host.user.group.name`*:: ++ +-- +Name of the group. + +type: keyword + +-- + +*`host.user.hash`*:: ++ +-- +Unique user hash to correlate information for a user in anonymized form. +Useful if `user.id` or `user.name` contain confidential information and cannot be used. + +type: keyword + +-- + +*`host.user.id`*:: ++ +-- +Unique identifier of the user. + +type: keyword + +-- + +*`host.user.name`*:: ++ +-- +Short name or login of the user. + +type: keyword + +example: albert + +-- + +*`host.user.name.text`*:: ++ +-- +type: text + +-- + +*`host.user.roles`*:: ++ +-- +Array of user roles at the time of the event. + +type: keyword + +example: ["kibana_admin", "reporting_user"] + +-- + +[float] +=== http + +Fields related to HTTP activity. Use the `url` field set to store the url of the request. + + +*`http.request.body.bytes`*:: ++ +-- +Size in bytes of the request body. + +type: long + +example: 887 + +format: bytes + +-- + +*`http.request.body.content`*:: ++ +-- +The full HTTP request body. + +type: keyword + +example: Hello world + +-- + +*`http.request.body.content.text`*:: ++ +-- +type: text + +-- + +*`http.request.bytes`*:: ++ +-- +Total size in bytes of the request (body and headers). + +type: long + +example: 1437 + +format: bytes + +-- + +*`http.request.method`*:: ++ +-- +HTTP request method. +Prior to ECS 1.6.0 the following guidance was provided: +"The field value must be normalized to lowercase for querying." +As of ECS 1.6.0, the guidance is deprecated because the original case of the method may be useful in anomaly detection. Original case will be mandated in ECS 2.0.0 + +type: keyword + +example: GET, POST, PUT, PoST + +-- + +*`http.request.referrer`*:: ++ +-- +Referrer for this HTTP request. + +type: keyword + +example: https://blog.example.com/ + +-- + +*`http.response.body.bytes`*:: ++ +-- +Size in bytes of the response body. + +type: long + +example: 887 + +format: bytes + +-- + +*`http.response.body.content`*:: ++ +-- +The full HTTP response body. + +type: keyword + +example: Hello world + +-- + +*`http.response.body.content.text`*:: + -- type: text @@ -3252,47 +3649,634 @@ type: text *`http.response.bytes`*:: + -- -Total size in bytes of the response (body and headers). +Total size in bytes of the response (body and headers). + +type: long + +example: 1437 + +format: bytes + +-- + +*`http.response.status_code`*:: ++ +-- +HTTP response status code. + +type: long + +example: 404 + +format: string + +-- + +*`http.version`*:: ++ +-- +HTTP version. + +type: keyword + +example: 1.1 + +-- + +[float] +=== interface + +The interface fields are used to record ingress and egress interface information when reported by an observer (e.g. firewall, router, load balancer) in the context of the observer handling a network connection. In the case of a single observer interface (e.g. network sensor on a span port) only the observer.ingress information should be populated. + + +*`interface.alias`*:: ++ +-- +Interface alias as reported by the system, typically used in firewall implementations for e.g. inside, outside, or dmz logical interface naming. + +type: keyword + +example: outside + +-- + +*`interface.id`*:: ++ +-- +Interface ID as reported by an observer (typically SNMP interface ID). + +type: keyword + +example: 10 + +-- + +*`interface.name`*:: ++ +-- +Interface name as reported by the system. + +type: keyword + +example: eth0 + +-- + +[float] +=== log + +Details about the event's logging mechanism or logging transport. +The log.* fields are typically populated with details about the logging mechanism used to create and/or transport the event. For example, syslog details belong under `log.syslog.*`. +The details specific to your event source are typically not logged under `log.*`, but rather in `event.*` or in other ECS fields. + + +*`log.file.path`*:: ++ +-- +Full path to the log file this event came from, including the file name. It should include the drive letter, when appropriate. +If the event wasn't read from a log file, do not populate this field. + +type: keyword + +example: /var/log/fun-times.log + +-- + +*`log.level`*:: ++ +-- +Original log level of the log event. +If the source of the event provides a log level or textual severity, this is the one that goes in `log.level`. If your source doesn't specify one, you may put your event transport's severity here (e.g. Syslog severity). +Some examples are `warn`, `err`, `i`, `informational`. + +type: keyword + +example: error + +-- + +*`log.logger`*:: ++ +-- +The name of the logger inside an application. This is usually the name of the class which initialized the logger, or can be a custom name. + +type: keyword + +example: org.elasticsearch.bootstrap.Bootstrap + +-- + +*`log.origin.file.line`*:: ++ +-- +The line number of the file containing the source code which originated the log event. + +type: integer + +example: 42 + +-- + +*`log.origin.file.name`*:: ++ +-- +The name of the file containing the source code which originated the log event. +Note that this field is not meant to capture the log file. The correct field to capture the log file is `log.file.path`. + +type: keyword + +example: Bootstrap.java + +-- + +*`log.origin.function`*:: ++ +-- +The name of the function or method which originated the log event. + +type: keyword + +example: init + +-- + +*`log.original`*:: ++ +-- +This is the original log message and contains the full log message before splitting it up in multiple parts. +In contrast to the `message` field which can contain an extracted part of the log message, this field contains the original, full log message. It can have already some modifications applied like encoding or new lines removed to clean up the log message. +This field is not indexed and doc_values are disabled so it can't be queried but the value can be retrieved from `_source`. + +type: keyword + +example: Sep 19 08:26:10 localhost My log + +Field is not indexed. + +-- + +*`log.syslog`*:: ++ +-- +The Syslog metadata of the event, if the event was transmitted via Syslog. Please see RFCs 5424 or 3164. + +type: object + +-- + +*`log.syslog.facility.code`*:: ++ +-- +The Syslog numeric facility of the log event, if available. +According to RFCs 5424 and 3164, this value should be an integer between 0 and 23. + +type: long + +example: 23 + +format: string + +-- + +*`log.syslog.facility.name`*:: ++ +-- +The Syslog text-based facility of the log event, if available. + +type: keyword + +example: local7 + +-- + +*`log.syslog.priority`*:: ++ +-- +Syslog numeric priority of the event, if available. +According to RFCs 5424 and 3164, the priority is 8 * facility + severity. This number is therefore expected to contain a value between 0 and 191. + +type: long + +example: 135 + +format: string + +-- + +*`log.syslog.severity.code`*:: ++ +-- +The Syslog numeric severity of the log event, if available. +If the event source publishing via Syslog provides a different numeric severity value (e.g. firewall, IDS), your source's numeric severity should go to `event.severity`. If the event source does not specify a distinct severity, you can optionally copy the Syslog severity to `event.severity`. + +type: long + +example: 3 + +-- + +*`log.syslog.severity.name`*:: ++ +-- +The Syslog numeric severity of the log event, if available. +If the event source publishing via Syslog provides a different severity value (e.g. firewall, IDS), your source's text severity should go to `log.level`. If the event source does not specify a distinct severity, you can optionally copy the Syslog severity to `log.level`. + +type: keyword + +example: Error + +-- + +[float] +=== network + +The network is defined as the communication path over which a host or network event happens. +The network.* fields should be populated with details about the network activity associated with an event. + + +*`network.application`*:: ++ +-- +A name given to an application level protocol. This can be arbitrarily assigned for things like microservices, but also apply to things like skype, icq, facebook, twitter. This would be used in situations where the vendor or service can be decoded such as from the source/dest IP owners, ports, or wire format. +The field value must be normalized to lowercase for querying. See the documentation section "Implementing ECS". + +type: keyword + +example: aim + +-- + +*`network.bytes`*:: ++ +-- +Total bytes transferred in both directions. +If `source.bytes` and `destination.bytes` are known, `network.bytes` is their sum. + +type: long + +example: 368 + +format: bytes + +-- + +*`network.community_id`*:: ++ +-- +A hash of source and destination IPs and ports, as well as the protocol used in a communication. This is a tool-agnostic standard to identify flows. +Learn more at https://github.com/corelight/community-id-spec. + +type: keyword + +example: 1:hO+sN4H+MG5MY/8hIrXPqc4ZQz0= + +-- + +*`network.direction`*:: ++ +-- +Direction of the network traffic. +Recommended values are: + * inbound + * outbound + * internal + * external + * unknown + +When mapping events from a host-based monitoring context, populate this field from the host's point of view. +When mapping events from a network or perimeter-based monitoring context, populate this field from the point of view of your network perimeter. + +type: keyword + +example: inbound + +-- + +*`network.forwarded_ip`*:: ++ +-- +Host IP address when the source IP address is the proxy. + +type: ip + +example: 192.1.1.2 + +-- + +*`network.iana_number`*:: ++ +-- +IANA Protocol Number (https://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml). Standardized list of protocols. This aligns well with NetFlow and sFlow related logs which use the IANA Protocol Number. + +type: keyword + +example: 6 + +-- + +*`network.inner`*:: ++ +-- +Network.inner fields are added in addition to network.vlan fields to describe the innermost VLAN when q-in-q VLAN tagging is present. Allowed fields include vlan.id and vlan.name. Inner vlan fields are typically used when sending traffic with multiple 802.1q encapsulations to a network sensor (e.g. Zeek, Wireshark.) + +type: object + +-- + +*`network.inner.vlan.id`*:: ++ +-- +VLAN ID as reported by the observer. + +type: keyword + +example: 10 + +-- + +*`network.inner.vlan.name`*:: ++ +-- +Optional VLAN name as reported by the observer. + +type: keyword + +example: outside + +-- + +*`network.name`*:: ++ +-- +Name given by operators to sections of their network. + +type: keyword + +example: Guest Wifi + +-- + +*`network.packets`*:: ++ +-- +Total packets transferred in both directions. +If `source.packets` and `destination.packets` are known, `network.packets` is their sum. + +type: long + +example: 24 + +-- + +*`network.protocol`*:: ++ +-- +L7 Network protocol name. ex. http, lumberjack, transport protocol. +The field value must be normalized to lowercase for querying. See the documentation section "Implementing ECS". + +type: keyword + +example: http + +-- + +*`network.transport`*:: ++ +-- +Same as network.iana_number, but instead using the Keyword name of the transport layer (udp, tcp, ipv6-icmp, etc.) +The field value must be normalized to lowercase for querying. See the documentation section "Implementing ECS". + +type: keyword + +example: tcp + +-- + +*`network.type`*:: ++ +-- +In the OSI Model this would be the Network Layer. ipv4, ipv6, ipsec, pim, etc +The field value must be normalized to lowercase for querying. See the documentation section "Implementing ECS". + +type: keyword + +example: ipv4 + +-- + +*`network.vlan.id`*:: ++ +-- +VLAN ID as reported by the observer. + +type: keyword + +example: 10 + +-- + +*`network.vlan.name`*:: ++ +-- +Optional VLAN name as reported by the observer. + +type: keyword + +example: outside + +-- + +[float] +=== observer + +An observer is defined as a special network, security, or application device used to detect, observe, or create network, security, or application-related events and metrics. +This could be a custom hardware appliance or a server that has been configured to run special network, security, or application software. Examples include firewalls, web proxies, intrusion detection/prevention systems, network monitoring sensors, web application firewalls, data loss prevention systems, and APM servers. The observer.* fields shall be populated with details of the system, if any, that detects, observes and/or creates a network, security, or application event or metric. Message queues and ETL components used in processing events or metrics are not considered observers in ECS. + + +*`observer.egress`*:: ++ +-- +Observer.egress holds information like interface number and name, vlan, and zone information to classify egress traffic. Single armed monitoring such as a network sensor on a span port should only use observer.ingress to categorize traffic. + +type: object + +-- + +*`observer.egress.interface.alias`*:: ++ +-- +Interface alias as reported by the system, typically used in firewall implementations for e.g. inside, outside, or dmz logical interface naming. + +type: keyword + +example: outside + +-- + +*`observer.egress.interface.id`*:: ++ +-- +Interface ID as reported by an observer (typically SNMP interface ID). + +type: keyword + +example: 10 + +-- + +*`observer.egress.interface.name`*:: ++ +-- +Interface name as reported by the system. -type: long +type: keyword -example: 1437 +example: eth0 -format: bytes +-- +*`observer.egress.vlan.id`*:: ++ -- +VLAN ID as reported by the observer. -*`http.response.status_code`*:: +type: keyword + +example: 10 + +-- + +*`observer.egress.vlan.name`*:: + -- -HTTP response status code. +Optional VLAN name as reported by the observer. -type: long +type: keyword -example: 404 +example: outside -format: string +-- + +*`observer.egress.zone`*:: ++ +-- +Network zone of outbound traffic as reported by the observer to categorize the destination area of egress traffic, e.g. Internal, External, DMZ, HR, Legal, etc. + +type: keyword + +example: Public_Internet -- -*`http.version`*:: +*`observer.geo.city_name`*:: + -- -HTTP version. +City name. type: keyword -example: 1.1 +example: Montreal -- -[float] -=== interface +*`observer.geo.continent_name`*:: ++ +-- +Name of the continent. -The interface fields are used to record ingress and egress interface information when reported by an observer (e.g. firewall, router, load balancer) in the context of the observer handling a network connection. In the case of a single observer interface (e.g. network sensor on a span port) only the observer.ingress information should be populated. +type: keyword +example: North America -*`interface.alias`*:: +-- + +*`observer.geo.country_iso_code`*:: ++ +-- +Country ISO code. + +type: keyword + +example: CA + +-- + +*`observer.geo.country_name`*:: ++ +-- +Country name. + +type: keyword + +example: Canada + +-- + +*`observer.geo.location`*:: ++ +-- +Longitude and latitude. + +type: geo_point + +example: { "lon": -73.614830, "lat": 45.505918 } + +-- + +*`observer.geo.name`*:: ++ +-- +User-defined description of a location, at the level of granularity they care about. +Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. +Not typically used in automated geolocation. + +type: keyword + +example: boston-dc + +-- + +*`observer.geo.region_iso_code`*:: ++ +-- +Region ISO code. + +type: keyword + +example: CA-QC + +-- + +*`observer.geo.region_name`*:: ++ +-- +Region name. + +type: keyword + +example: Quebec + +-- + +*`observer.hostname`*:: ++ +-- +Hostname of the observer. + +type: keyword + +-- + +*`observer.ingress`*:: ++ +-- +Observer.ingress holds information like interface number and name, vlan, and zone information to classify ingress traffic. Single armed monitoring such as a network sensor on a span port should only use observer.ingress to categorize traffic. + +type: object + +-- + +*`observer.ingress.interface.alias`*:: + -- Interface alias as reported by the system, typically used in firewall implementations for e.g. inside, outside, or dmz logical interface naming. @@ -3303,7 +4287,7 @@ example: outside -- -*`interface.id`*:: +*`observer.ingress.interface.id`*:: + -- Interface ID as reported by an observer (typically SNMP interface ID). @@ -3314,7 +4298,7 @@ example: 10 -- -*`interface.name`*:: +*`observer.ingress.interface.name`*:: + -- Interface name as reported by the system. @@ -3325,2058 +4309,2069 @@ example: eth0 -- -[float] -=== log +*`observer.ingress.vlan.id`*:: ++ +-- +VLAN ID as reported by the observer. -Details about the event's logging mechanism or logging transport. -The log.* fields are typically populated with details about the logging mechanism used to create and/or transport the event. For example, syslog details belong under `log.syslog.*`. -The details specific to your event source are typically not logged under `log.*`, but rather in `event.*` or in other ECS fields. +type: keyword +example: 10 -*`log.level`*:: +-- + +*`observer.ingress.vlan.name`*:: + -- -Original log level of the log event. -If the source of the event provides a log level or textual severity, this is the one that goes in `log.level`. If your source doesn't specify one, you may put your event transport's severity here (e.g. Syslog severity). -Some examples are `warn`, `err`, `i`, `informational`. +Optional VLAN name as reported by the observer. type: keyword -example: error +example: outside -- -*`log.logger`*:: +*`observer.ingress.zone`*:: + -- -The name of the logger inside an application. This is usually the name of the class which initialized the logger, or can be a custom name. +Network zone of incoming traffic as reported by the observer to categorize the source area of ingress traffic. e.g. internal, External, DMZ, HR, Legal, etc. type: keyword -example: org.elasticsearch.bootstrap.Bootstrap +example: DMZ -- -*`log.origin.file.line`*:: +*`observer.ip`*:: + -- -The line number of the file containing the source code which originated the log event. +IP addresses of the observer. -type: integer +type: ip -example: 42 +-- + +*`observer.mac`*:: ++ +-- +MAC addresses of the observer + +type: keyword -- -*`log.origin.file.name`*:: +*`observer.name`*:: ++ +-- +Custom name of the observer. +This is a name that can be given to an observer. This can be helpful for example if multiple firewalls of the same model are used in an organization. +If no custom name is needed, the field can be left empty. + +type: keyword + +example: 1_proxySG + +-- + +*`observer.os.family`*:: + -- -The name of the file containing the source code which originated the log event. Note that this is not the name of the log file. +OS family (such as redhat, debian, freebsd, windows). type: keyword -example: Bootstrap.java +example: debian -- -*`log.origin.function`*:: +*`observer.os.full`*:: + -- -The name of the function or method which originated the log event. +Operating system name, including the version or code name. type: keyword -example: init +example: Mac OS Mojave -- -*`log.original`*:: +*`observer.os.full.text`*:: + -- -This is the original log message and contains the full log message before splitting it up in multiple parts. -In contrast to the `message` field which can contain an extracted part of the log message, this field contains the original, full log message. It can have already some modifications applied like encoding or new lines removed to clean up the log message. -This field is not indexed and doc_values are disabled so it can't be queried but the value can be retrieved from `_source`. +type: text + +-- + +*`observer.os.kernel`*:: ++ +-- +Operating system kernel version as a raw string. type: keyword -example: Sep 19 08:26:10 localhost My log +example: 4.4.0-112-generic + +-- + +*`observer.os.name`*:: ++ +-- +Operating system name, without the version. + +type: keyword + +example: Mac OS X + +-- + +*`observer.os.name.text`*:: ++ +-- +type: text + +-- + +*`observer.os.platform`*:: ++ +-- +Operating system platform (such centos, ubuntu, windows). + +type: keyword + +example: darwin -- -*`log.syslog`*:: +*`observer.os.version`*:: + -- -The Syslog metadata of the event, if the event was transmitted via Syslog. Please see RFCs 5424 or 3164. +Operating system version as a raw string. -type: object +type: keyword + +example: 10.14.1 -- -*`log.syslog.facility.code`*:: +*`observer.product`*:: + -- -The Syslog numeric facility of the log event, if available. -According to RFCs 5424 and 3164, this value should be an integer between 0 and 23. - -type: long +The product name of the observer. -example: 23 +type: keyword -format: string +example: s200 -- -*`log.syslog.facility.name`*:: +*`observer.serial_number`*:: + -- -The Syslog text-based facility of the log event, if available. +Observer serial number. type: keyword -example: local7 - -- -*`log.syslog.priority`*:: +*`observer.type`*:: + -- -Syslog numeric priority of the event, if available. -According to RFCs 5424 and 3164, the priority is 8 * facility + severity. This number is therefore expected to contain a value between 0 and 191. - -type: long +The type of the observer the data is coming from. +There is no predefined list of observer types. Some examples are `forwarder`, `firewall`, `ids`, `ips`, `proxy`, `poller`, `sensor`, `APM server`. -example: 135 +type: keyword -format: string +example: firewall -- -*`log.syslog.severity.code`*:: +*`observer.vendor`*:: + -- -The Syslog numeric severity of the log event, if available. -If the event source publishing via Syslog provides a different numeric severity value (e.g. firewall, IDS), your source's numeric severity should go to `event.severity`. If the event source does not specify a distinct severity, you can optionally copy the Syslog severity to `event.severity`. +Vendor name of the observer. -type: long +type: keyword -example: 3 +example: Symantec -- -*`log.syslog.severity.name`*:: +*`observer.version`*:: + -- -The Syslog numeric severity of the log event, if available. -If the event source publishing via Syslog provides a different severity value (e.g. firewall, IDS), your source's text severity should go to `log.level`. If the event source does not specify a distinct severity, you can optionally copy the Syslog severity to `log.level`. +Observer version. type: keyword -example: Error - -- [float] -=== network +=== organization -The network is defined as the communication path over which a host or network event happens. -The network.* fields should be populated with details about the network activity associated with an event. +The organization fields enrich data with information about the company or entity the data is associated with. +These fields help you arrange or filter data stored in an index by one or multiple organizations. -*`network.application`*:: +*`organization.id`*:: + -- -A name given to an application level protocol. This can be arbitrarily assigned for things like microservices, but also apply to things like skype, icq, facebook, twitter. This would be used in situations where the vendor or service can be decoded such as from the source/dest IP owners, ports, or wire format. -The field value must be normalized to lowercase for querying. See the documentation section "Implementing ECS". +Unique identifier for the organization. type: keyword -example: aim - --- - -*`network.bytes`*:: -+ --- -Total bytes transferred in both directions. -If `source.bytes` and `destination.bytes` are known, `network.bytes` is their sum. - -type: long - -example: 368 - -format: bytes - -- -*`network.community_id`*:: +*`organization.name`*:: + -- -A hash of source and destination IPs and ports, as well as the protocol used in a communication. This is a tool-agnostic standard to identify flows. -Learn more at https://github.com/corelight/community-id-spec. +Organization name. type: keyword -example: 1:hO+sN4H+MG5MY/8hIrXPqc4ZQz0= - -- -*`network.direction`*:: +*`organization.name.text`*:: + -- -Direction of the network traffic. -Recommended values are: - * inbound - * outbound - * internal - * external - * unknown +type: text -When mapping events from a host-based monitoring context, populate this field from the host's point of view. -When mapping events from a network or perimeter-based monitoring context, populate this field from the point of view of your network perimeter. +-- -type: keyword +[float] +=== os -example: inbound +The OS fields contain information about the operating system. --- -*`network.forwarded_ip`*:: +*`os.family`*:: + -- -Host IP address when the source IP address is the proxy. +OS family (such as redhat, debian, freebsd, windows). -type: ip +type: keyword -example: 192.1.1.2 +example: debian -- -*`network.iana_number`*:: +*`os.full`*:: + -- -IANA Protocol Number (https://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml). Standardized list of protocols. This aligns well with NetFlow and sFlow related logs which use the IANA Protocol Number. +Operating system name, including the version or code name. type: keyword -example: 6 +example: Mac OS Mojave -- -*`network.inner`*:: +*`os.full.text`*:: + -- -Network.inner fields are added in addition to network.vlan fields to describe the innermost VLAN when q-in-q VLAN tagging is present. Allowed fields include vlan.id and vlan.name. Inner vlan fields are typically used when sending traffic with multiple 802.1q encapsulations to a network sensor (e.g. Zeek, Wireshark.) - -type: object +type: text -- -*`network.inner.vlan.id`*:: +*`os.kernel`*:: + -- -VLAN ID as reported by the observer. +Operating system kernel version as a raw string. type: keyword -example: 10 +example: 4.4.0-112-generic -- -*`network.inner.vlan.name`*:: +*`os.name`*:: + -- -Optional VLAN name as reported by the observer. +Operating system name, without the version. type: keyword -example: outside +example: Mac OS X -- -*`network.name`*:: +*`os.name.text`*:: + -- -Name given by operators to sections of their network. - -type: keyword - -example: Guest Wifi +type: text -- -*`network.packets`*:: +*`os.platform`*:: + -- -Total packets transferred in both directions. -If `source.packets` and `destination.packets` are known, `network.packets` is their sum. +Operating system platform (such centos, ubuntu, windows). -type: long +type: keyword -example: 24 +example: darwin -- -*`network.protocol`*:: +*`os.version`*:: + -- -L7 Network protocol name. ex. http, lumberjack, transport protocol. -The field value must be normalized to lowercase for querying. See the documentation section "Implementing ECS". +Operating system version as a raw string. type: keyword -example: http +example: 10.14.1 -- -*`network.transport`*:: +[float] +=== package + +These fields contain information about an installed software package. It contains general information about a package, such as name, version or size. It also contains installation details, such as time or location. + + +*`package.architecture`*:: + -- -Same as network.iana_number, but instead using the Keyword name of the transport layer (udp, tcp, ipv6-icmp, etc.) -The field value must be normalized to lowercase for querying. See the documentation section "Implementing ECS". +Package architecture. type: keyword -example: tcp +example: x86_64 -- -*`network.type`*:: +*`package.build_version`*:: + -- -In the OSI Model this would be the Network Layer. ipv4, ipv6, ipsec, pim, etc -The field value must be normalized to lowercase for querying. See the documentation section "Implementing ECS". +Additional information about the build version of the installed package. +For example use the commit SHA of a non-released package. type: keyword -example: ipv4 +example: 36f4f7e89dd61b0988b12ee000b98966867710cd -- -*`network.vlan.id`*:: +*`package.checksum`*:: + -- -VLAN ID as reported by the observer. +Checksum of the installed package for verification. type: keyword -example: 10 +example: 68b329da9893e34099c7d8ad5cb9c940 -- -*`network.vlan.name`*:: +*`package.description`*:: + -- -Optional VLAN name as reported by the observer. +Description of the package. type: keyword -example: outside +example: Open source programming language to build simple/reliable/efficient software. -- -[float] -=== observer - -An observer is defined as a special network, security, or application device used to detect, observe, or create network, security, or application-related events and metrics. -This could be a custom hardware appliance or a server that has been configured to run special network, security, or application software. Examples include firewalls, web proxies, intrusion detection/prevention systems, network monitoring sensors, web application firewalls, data loss prevention systems, and APM servers. The observer.* fields shall be populated with details of the system, if any, that detects, observes and/or creates a network, security, or application event or metric. Message queues and ETL components used in processing events or metrics are not considered observers in ECS. - - -*`observer.egress`*:: +*`package.install_scope`*:: + -- -Observer.egress holds information like interface number and name, vlan, and zone information to classify egress traffic. Single armed monitoring such as a network sensor on a span port should only use observer.ingress to categorize traffic. +Indicating how the package was installed, e.g. user-local, global. -type: object +type: keyword + +example: global -- -*`observer.egress.interface.alias`*:: +*`package.installed`*:: + -- -Interface alias as reported by the system, typically used in firewall implementations for e.g. inside, outside, or dmz logical interface naming. - -type: keyword +Time when package was installed. -example: outside +type: date -- -*`observer.egress.interface.id`*:: +*`package.license`*:: + -- -Interface ID as reported by an observer (typically SNMP interface ID). +License under which the package was released. +Use a short name, e.g. the license identifier from SPDX License List where possible (https://spdx.org/licenses/). type: keyword -example: 10 +example: Apache License 2.0 -- -*`observer.egress.interface.name`*:: +*`package.name`*:: + -- -Interface name as reported by the system. +Package name type: keyword -example: eth0 +example: go -- -*`observer.egress.vlan.id`*:: +*`package.path`*:: + -- -VLAN ID as reported by the observer. +Path where the package is installed. type: keyword -example: 10 +example: /usr/local/Cellar/go/1.12.9/ -- -*`observer.egress.vlan.name`*:: +*`package.reference`*:: + -- -Optional VLAN name as reported by the observer. +Home page or reference URL of the software in this package, if available. type: keyword -example: outside +example: https://golang.org -- -*`observer.egress.zone`*:: +*`package.size`*:: + -- -Network zone of outbound traffic as reported by the observer to categorize the destination area of egress traffic, e.g. Internal, External, DMZ, HR, Legal, etc. +Package size in bytes. -type: keyword +type: long -example: Public_Internet +example: 62231 + +format: string -- -*`observer.geo.city_name`*:: +*`package.type`*:: + -- -City name. +Type of package. +This should contain the package file type, rather than the package manager name. Examples: rpm, dpkg, brew, npm, gem, nupkg, jar. type: keyword -example: Montreal +example: rpm -- -*`observer.geo.continent_name`*:: +*`package.version`*:: + -- -Name of the continent. +Package version type: keyword -example: North America +example: 1.12.9 -- -*`observer.geo.country_iso_code`*:: +[float] +=== pe + +These fields contain Windows Portable Executable (PE) metadata. + + +*`pe.architecture`*:: + -- -Country ISO code. +CPU architecture target for the file. type: keyword -example: CA +example: x64 -- -*`observer.geo.country_name`*:: +*`pe.company`*:: + -- -Country name. +Internal company name of the file, provided at compile-time. type: keyword -example: Canada +example: Microsoft Corporation -- -*`observer.geo.location`*:: +*`pe.description`*:: + -- -Longitude and latitude. +Internal description of the file, provided at compile-time. -type: geo_point +type: keyword -example: { "lon": -73.614830, "lat": 45.505918 } +example: Paint -- -*`observer.geo.name`*:: +*`pe.file_version`*:: + -- -User-defined description of a location, at the level of granularity they care about. -Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. -Not typically used in automated geolocation. +Internal version of the file, provided at compile-time. type: keyword -example: boston-dc +example: 6.3.9600.17415 -- -*`observer.geo.region_iso_code`*:: +*`pe.imphash`*:: + -- -Region ISO code. +A hash of the imports in a PE file. An imphash -- or import hash -- can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. +Learn more at https://www.fireeye.com/blog/threat-research/2014/01/tracking-malware-import-hashing.html. type: keyword -example: CA-QC +example: 0c6803c4e922103c4dca5963aad36ddf -- -*`observer.geo.region_name`*:: +*`pe.original_file_name`*:: + -- -Region name. +Internal name of the file, provided at compile-time. type: keyword -example: Quebec +example: MSPAINT.EXE -- -*`observer.hostname`*:: +*`pe.product`*:: + -- -Hostname of the observer. +Internal product name of the file, provided at compile-time. type: keyword --- +example: Microsoft® Windows® Operating System -*`observer.ingress`*:: -+ -- -Observer.ingress holds information like interface number and name, vlan, and zone information to classify ingress traffic. Single armed monitoring such as a network sensor on a span port should only use observer.ingress to categorize traffic. -type: object +[float] +=== process --- +These fields contain information about a process. +These fields can help you correlate metrics information with a process id/name from a log message. The `process.pid` often stays in the metric itself and is copied to the global field for correlation. -*`observer.ingress.interface.alias`*:: + +*`process.args`*:: + -- -Interface alias as reported by the system, typically used in firewall implementations for e.g. inside, outside, or dmz logical interface naming. +Array of process arguments, starting with the absolute path to the executable. +May be filtered to protect sensitive information. type: keyword -example: outside +example: ['/usr/bin/ssh', '-l', 'user', '10.0.0.16'] -- -*`observer.ingress.interface.id`*:: +*`process.args_count`*:: + -- -Interface ID as reported by an observer (typically SNMP interface ID). +Length of the process.args array. +This field can be useful for querying or performing bucket analysis on how many arguments were provided to start a process. More arguments may be an indication of suspicious activity. -type: keyword +type: long -example: 10 +example: 4 -- -*`observer.ingress.interface.name`*:: +*`process.code_signature.exists`*:: + -- -Interface name as reported by the system. +Boolean to capture if a signature is present. -type: keyword +type: boolean -example: eth0 +example: true -- -*`observer.ingress.vlan.id`*:: +*`process.code_signature.status`*:: + -- -VLAN ID as reported by the observer. +Additional information about the certificate status. +This is useful for logging cryptographic errors with the certificate validity or trust status. Leave unpopulated if the validity or trust of the certificate was unchecked. type: keyword -example: 10 +example: ERROR_UNTRUSTED_ROOT -- -*`observer.ingress.vlan.name`*:: +*`process.code_signature.subject_name`*:: + -- -Optional VLAN name as reported by the observer. +Subject name of the code signer type: keyword -example: outside +example: Microsoft Corporation -- -*`observer.ingress.zone`*:: +*`process.code_signature.trusted`*:: + -- -Network zone of incoming traffic as reported by the observer to categorize the source area of ingress traffic. e.g. internal, External, DMZ, HR, Legal, etc. +Stores the trust status of the certificate chain. +Validating the trust of the certificate chain may be complicated, and this field should only be populated by tools that actively check the status. -type: keyword +type: boolean -example: DMZ +example: true -- -*`observer.ip`*:: +*`process.code_signature.valid`*:: + -- -IP addresses of the observer. +Boolean to capture if the digital signature is verified against the binary content. +Leave unpopulated if a certificate was unchecked. -type: ip +type: boolean + +example: true -- -*`observer.mac`*:: +*`process.command_line`*:: + -- -MAC addresses of the observer +Full command line that started the process, including the absolute path to the executable, and all arguments. +Some arguments may be filtered to protect sensitive information. type: keyword +example: /usr/bin/ssh -l user 10.0.0.16 + -- -*`observer.name`*:: +*`process.command_line.text`*:: + -- -Custom name of the observer. -This is a name that can be given to an observer. This can be helpful for example if multiple firewalls of the same model are used in an organization. -If no custom name is needed, the field can be left empty. - -type: keyword - -example: 1_proxySG +type: text -- -*`observer.os.family`*:: +*`process.entity_id`*:: + -- -OS family (such as redhat, debian, freebsd, windows). +Unique identifier for the process. +The implementation of this is specified by the data source, but some examples of what could be used here are a process-generated UUID, Sysmon Process GUIDs, or a hash of some uniquely identifying components of a process. +Constructing a globally unique identifier is a common practice to mitigate PID reuse as well as to identify a specific process over time, across multiple monitored hosts. type: keyword -example: debian +example: c2c455d9f99375d -- -*`observer.os.full`*:: +*`process.executable`*:: + -- -Operating system name, including the version or code name. +Absolute path to the process executable. type: keyword -example: Mac OS Mojave +example: /usr/bin/ssh -- -*`observer.os.full.text`*:: +*`process.executable.text`*:: + -- type: text -- -*`observer.os.kernel`*:: +*`process.exit_code`*:: + -- -Operating system kernel version as a raw string. +The exit code of the process, if this is a termination event. +The field should be absent if there is no exit code for the event (e.g. process start). -type: keyword +type: long -example: 4.4.0-112-generic +example: 137 -- -*`observer.os.name`*:: +*`process.hash.md5`*:: + -- -Operating system name, without the version. +MD5 hash. type: keyword -example: Mac OS X - -- -*`observer.os.name.text`*:: +*`process.hash.sha1`*:: + -- -type: text +SHA1 hash. + +type: keyword -- -*`observer.os.platform`*:: +*`process.hash.sha256`*:: + -- -Operating system platform (such centos, ubuntu, windows). +SHA256 hash. type: keyword -example: darwin - -- -*`observer.os.version`*:: +*`process.hash.sha512`*:: + -- -Operating system version as a raw string. +SHA512 hash. type: keyword -example: 10.14.1 - -- -*`observer.product`*:: +*`process.name`*:: + -- -The product name of the observer. +Process name. +Sometimes called program name or similar. type: keyword -example: s200 +example: ssh -- -*`observer.serial_number`*:: +*`process.name.text`*:: + -- -Observer serial number. - -type: keyword +type: text -- -*`observer.type`*:: +*`process.parent.args`*:: + -- -The type of the observer the data is coming from. -There is no predefined list of observer types. Some examples are `forwarder`, `firewall`, `ids`, `ips`, `proxy`, `poller`, `sensor`, `APM server`. +Array of process arguments, starting with the absolute path to the executable. +May be filtered to protect sensitive information. type: keyword -example: firewall +example: ['/usr/bin/ssh', '-l', 'user', '10.0.0.16'] -- -*`observer.vendor`*:: +*`process.parent.args_count`*:: + -- -Vendor name of the observer. +Length of the process.args array. +This field can be useful for querying or performing bucket analysis on how many arguments were provided to start a process. More arguments may be an indication of suspicious activity. -type: keyword +type: long -example: Symantec +example: 4 -- -*`observer.version`*:: +*`process.parent.code_signature.exists`*:: + -- -Observer version. - -type: keyword - --- +Boolean to capture if a signature is present. -[float] -=== organization +type: boolean -The organization fields enrich data with information about the company or entity the data is associated with. -These fields help you arrange or filter data stored in an index by one or multiple organizations. +example: true +-- -*`organization.id`*:: +*`process.parent.code_signature.status`*:: + -- -Unique identifier for the organization. +Additional information about the certificate status. +This is useful for logging cryptographic errors with the certificate validity or trust status. Leave unpopulated if the validity or trust of the certificate was unchecked. type: keyword +example: ERROR_UNTRUSTED_ROOT + -- -*`organization.name`*:: +*`process.parent.code_signature.subject_name`*:: + -- -Organization name. +Subject name of the code signer type: keyword --- +example: Microsoft Corporation -*`organization.name.text`*:: -+ -- -type: text +*`process.parent.code_signature.trusted`*:: ++ -- +Stores the trust status of the certificate chain. +Validating the trust of the certificate chain may be complicated, and this field should only be populated by tools that actively check the status. -[float] -=== os - -The OS fields contain information about the operating system. +type: boolean +example: true -*`os.family`*:: +-- + +*`process.parent.code_signature.valid`*:: + -- -OS family (such as redhat, debian, freebsd, windows). +Boolean to capture if the digital signature is verified against the binary content. +Leave unpopulated if a certificate was unchecked. -type: keyword +type: boolean -example: debian +example: true -- -*`os.full`*:: +*`process.parent.command_line`*:: + -- -Operating system name, including the version or code name. +Full command line that started the process, including the absolute path to the executable, and all arguments. +Some arguments may be filtered to protect sensitive information. type: keyword -example: Mac OS Mojave +example: /usr/bin/ssh -l user 10.0.0.16 -- -*`os.full.text`*:: +*`process.parent.command_line.text`*:: + -- type: text -- -*`os.kernel`*:: +*`process.parent.entity_id`*:: + -- -Operating system kernel version as a raw string. +Unique identifier for the process. +The implementation of this is specified by the data source, but some examples of what could be used here are a process-generated UUID, Sysmon Process GUIDs, or a hash of some uniquely identifying components of a process. +Constructing a globally unique identifier is a common practice to mitigate PID reuse as well as to identify a specific process over time, across multiple monitored hosts. type: keyword -example: 4.4.0-112-generic +example: c2c455d9f99375d -- -*`os.name`*:: +*`process.parent.executable`*:: + -- -Operating system name, without the version. +Absolute path to the process executable. type: keyword -example: Mac OS X +example: /usr/bin/ssh -- -*`os.name.text`*:: +*`process.parent.executable.text`*:: + -- type: text -- -*`os.platform`*:: +*`process.parent.exit_code`*:: + -- -Operating system platform (such centos, ubuntu, windows). +The exit code of the process, if this is a termination event. +The field should be absent if there is no exit code for the event (e.g. process start). -type: keyword +type: long -example: darwin +example: 137 -- -*`os.version`*:: +*`process.parent.hash.md5`*:: + -- -Operating system version as a raw string. +MD5 hash. type: keyword -example: 10.14.1 - -- -[float] -=== package - -These fields contain information about an installed software package. It contains general information about a package, such as name, version or size. It also contains installation details, such as time or location. - - -*`package.architecture`*:: +*`process.parent.hash.sha1`*:: + -- -Package architecture. +SHA1 hash. type: keyword -example: x86_64 - -- -*`package.build_version`*:: +*`process.parent.hash.sha256`*:: + -- -Additional information about the build version of the installed package. -For example use the commit SHA of a non-released package. +SHA256 hash. type: keyword -example: 36f4f7e89dd61b0988b12ee000b98966867710cd - -- -*`package.checksum`*:: +*`process.parent.hash.sha512`*:: + -- -Checksum of the installed package for verification. +SHA512 hash. type: keyword -example: 68b329da9893e34099c7d8ad5cb9c940 - -- -*`package.description`*:: +*`process.parent.name`*:: + -- -Description of the package. +Process name. +Sometimes called program name or similar. type: keyword -example: Open source programming language to build simple/reliable/efficient software. +example: ssh -- -*`package.install_scope`*:: +*`process.parent.name.text`*:: + -- -Indicating how the package was installed, e.g. user-local, global. - -type: keyword - -example: global +type: text -- -*`package.installed`*:: +*`process.parent.pe.architecture`*:: + -- -Time when package was installed. +CPU architecture target for the file. -type: date +type: keyword + +example: x64 -- -*`package.license`*:: +*`process.parent.pe.company`*:: + -- -License under which the package was released. -Use a short name, e.g. the license identifier from SPDX License List where possible (https://spdx.org/licenses/). +Internal company name of the file, provided at compile-time. type: keyword -example: Apache License 2.0 +example: Microsoft Corporation -- -*`package.name`*:: +*`process.parent.pe.description`*:: + -- -Package name +Internal description of the file, provided at compile-time. type: keyword -example: go +example: Paint -- -*`package.path`*:: +*`process.parent.pe.file_version`*:: + -- -Path where the package is installed. +Internal version of the file, provided at compile-time. type: keyword -example: /usr/local/Cellar/go/1.12.9/ +example: 6.3.9600.17415 -- -*`package.reference`*:: +*`process.parent.pe.imphash`*:: + -- -Home page or reference URL of the software in this package, if available. +A hash of the imports in a PE file. An imphash -- or import hash -- can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. +Learn more at https://www.fireeye.com/blog/threat-research/2014/01/tracking-malware-import-hashing.html. type: keyword -example: https://golang.org +example: 0c6803c4e922103c4dca5963aad36ddf -- -*`package.size`*:: +*`process.parent.pe.original_file_name`*:: + -- -Package size in bytes. - -type: long +Internal name of the file, provided at compile-time. -example: 62231 +type: keyword -format: string +example: MSPAINT.EXE -- -*`package.type`*:: +*`process.parent.pe.product`*:: + -- -Type of package. -This should contain the package file type, rather than the package manager name. Examples: rpm, dpkg, brew, npm, gem, nupkg, jar. +Internal product name of the file, provided at compile-time. type: keyword -example: rpm +example: Microsoft® Windows® Operating System -- -*`package.version`*:: +*`process.parent.pgid`*:: + -- -Package version +Identifier of the group of processes the process belongs to. -type: keyword +type: long -example: 1.12.9 +format: string -- -[float] -=== pe - -These fields contain Windows Portable Executable (PE) metadata. - - -*`pe.company`*:: +*`process.parent.pid`*:: + -- -Internal company name of the file, provided at compile-time. +Process id. -type: keyword +type: long -example: Microsoft Corporation +example: 4242 + +format: string -- -*`pe.description`*:: +*`process.parent.ppid`*:: + -- -Internal description of the file, provided at compile-time. +Parent process' pid. -type: keyword +type: long -example: Paint +example: 4241 + +format: string -- -*`pe.file_version`*:: +*`process.parent.start`*:: + -- -Internal version of the file, provided at compile-time. +The time the process started. -type: keyword +type: date -example: 6.3.9600.17415 +example: 2016-05-23T08:05:34.853Z -- -*`pe.original_file_name`*:: +*`process.parent.thread.id`*:: + -- -Internal name of the file, provided at compile-time. +Thread ID. -type: keyword +type: long -example: MSPAINT.EXE +example: 4242 + +format: string -- -*`pe.product`*:: +*`process.parent.thread.name`*:: + -- -Internal product name of the file, provided at compile-time. +Thread name. type: keyword -example: Microsoft® Windows® Operating System +example: thread-0 -- -[float] -=== process - -These fields contain information about a process. -These fields can help you correlate metrics information with a process id/name from a log message. The `process.pid` often stays in the metric itself and is copied to the global field for correlation. - - -*`process.args`*:: +*`process.parent.title`*:: + -- -Array of process arguments, starting with the absolute path to the executable. -May be filtered to protect sensitive information. +Process title. +The proctitle, some times the same as process name. Can also be different: for example a browser setting its title to the web page currently opened. type: keyword -example: ['/usr/bin/ssh', '-l', 'user', '10.0.0.16'] +-- + +*`process.parent.title.text`*:: ++ +-- +type: text -- -*`process.args_count`*:: +*`process.parent.uptime`*:: + -- -Length of the process.args array. -This field can be useful for querying or performing bucket analysis on how many arguments were provided to start a process. More arguments may be an indication of suspicious activity. +Seconds the process has been up. type: long -example: 4 +example: 1325 -- -*`process.code_signature.exists`*:: +*`process.parent.working_directory`*:: + -- -Boolean to capture if a signature is present. +The working directory of the process. -type: boolean +type: keyword -example: true +example: /home/alice -- -*`process.code_signature.status`*:: +*`process.parent.working_directory.text`*:: + -- -Additional information about the certificate status. -This is useful for logging cryptographic errors with the certificate validity or trust status. Leave unpopulated if the validity or trust of the certificate was unchecked. - -type: keyword - -example: ERROR_UNTRUSTED_ROOT +type: text -- -*`process.code_signature.subject_name`*:: +*`process.pe.architecture`*:: + -- -Subject name of the code signer +CPU architecture target for the file. type: keyword -example: Microsoft Corporation +example: x64 -- -*`process.code_signature.trusted`*:: +*`process.pe.company`*:: + -- -Stores the trust status of the certificate chain. -Validating the trust of the certificate chain may be complicated, and this field should only be populated by tools that actively check the status. +Internal company name of the file, provided at compile-time. -type: boolean +type: keyword -example: true +example: Microsoft Corporation -- -*`process.code_signature.valid`*:: +*`process.pe.description`*:: + -- -Boolean to capture if the digital signature is verified against the binary content. -Leave unpopulated if a certificate was unchecked. +Internal description of the file, provided at compile-time. -type: boolean +type: keyword -example: true +example: Paint -- -*`process.command_line`*:: +*`process.pe.file_version`*:: + -- -Full command line that started the process, including the absolute path to the executable, and all arguments. -Some arguments may be filtered to protect sensitive information. +Internal version of the file, provided at compile-time. type: keyword -example: /usr/bin/ssh -l user 10.0.0.16 +example: 6.3.9600.17415 -- -*`process.command_line.text`*:: +*`process.pe.imphash`*:: + -- -type: text +A hash of the imports in a PE file. An imphash -- or import hash -- can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. +Learn more at https://www.fireeye.com/blog/threat-research/2014/01/tracking-malware-import-hashing.html. + +type: keyword + +example: 0c6803c4e922103c4dca5963aad36ddf -- -*`process.entity_id`*:: +*`process.pe.original_file_name`*:: + -- -Unique identifier for the process. -The implementation of this is specified by the data source, but some examples of what could be used here are a process-generated UUID, Sysmon Process GUIDs, or a hash of some uniquely identifying components of a process. -Constructing a globally unique identifier is a common practice to mitigate PID reuse as well as to identify a specific process over time, across multiple monitored hosts. +Internal name of the file, provided at compile-time. type: keyword -example: c2c455d9f99375d +example: MSPAINT.EXE -- -*`process.executable`*:: +*`process.pe.product`*:: + -- -Absolute path to the process executable. +Internal product name of the file, provided at compile-time. type: keyword -example: /usr/bin/ssh +example: Microsoft® Windows® Operating System -- -*`process.executable.text`*:: +*`process.pgid`*:: + -- -type: text +Identifier of the group of processes the process belongs to. + +type: long + +format: string -- -*`process.exit_code`*:: +*`process.pid`*:: + -- -The exit code of the process, if this is a termination event. -The field should be absent if there is no exit code for the event (e.g. process start). +Process id. type: long -example: 137 +example: 4242 + +format: string -- -*`process.hash.md5`*:: +*`process.ppid`*:: + -- -MD5 hash. +Parent process' pid. -type: keyword +type: long + +example: 4241 + +format: string -- -*`process.hash.sha1`*:: +*`process.start`*:: + -- -SHA1 hash. +The time the process started. -type: keyword +type: date + +example: 2016-05-23T08:05:34.853Z -- -*`process.hash.sha256`*:: +*`process.thread.id`*:: + -- -SHA256 hash. +Thread ID. -type: keyword +type: long + +example: 4242 + +format: string -- -*`process.hash.sha512`*:: +*`process.thread.name`*:: + -- -SHA512 hash. +Thread name. type: keyword +example: thread-0 + -- -*`process.name`*:: +*`process.title`*:: + -- -Process name. -Sometimes called program name or similar. +Process title. +The proctitle, some times the same as process name. Can also be different: for example a browser setting its title to the web page currently opened. type: keyword -example: ssh - -- -*`process.name.text`*:: +*`process.title.text`*:: + -- type: text -- -*`process.parent.args`*:: +*`process.uptime`*:: + -- -Array of process arguments. -May be filtered to protect sensitive information. +Seconds the process has been up. -type: keyword +type: long -example: ['ssh', '-l', 'user', '10.0.0.16'] +example: 1325 -- -*`process.parent.args_count`*:: +*`process.working_directory`*:: + -- -Length of the process.args array. -This field can be useful for querying or performing bucket analysis on how many arguments were provided to start a process. More arguments may be an indication of suspicious activity. +The working directory of the process. -type: long +type: keyword -example: 4 +example: /home/alice -- -*`process.parent.code_signature.exists`*:: +*`process.working_directory.text`*:: + -- -Boolean to capture if a signature is present. +type: text -type: boolean +-- -example: true +[float] +=== registry --- +Fields related to Windows Registry operations. -*`process.parent.code_signature.status`*:: + +*`registry.data.bytes`*:: + -- -Additional information about the certificate status. -This is useful for logging cryptographic errors with the certificate validity or trust status. Leave unpopulated if the validity or trust of the certificate was unchecked. +Original bytes written with base64 encoding. +For Windows registry operations, such as SetValueEx and RegQueryValueEx, this corresponds to the data pointed by `lp_data`. This is optional but provides better recoverability and should be populated for REG_BINARY encoded values. type: keyword -example: ERROR_UNTRUSTED_ROOT +example: ZQBuAC0AVQBTAAAAZQBuAAAAAAA= -- -*`process.parent.code_signature.subject_name`*:: +*`registry.data.strings`*:: + -- -Subject name of the code signer +Content when writing string types. +Populated as an array when writing string data to the registry. For single string registry types (REG_SZ, REG_EXPAND_SZ), this should be an array with one string. For sequences of string with REG_MULTI_SZ, this array will be variable length. For numeric data, such as REG_DWORD and REG_QWORD, this should be populated with the decimal representation (e.g `"1"`). type: keyword -example: Microsoft Corporation +example: ["C:\rta\red_ttp\bin\myapp.exe"] -- -*`process.parent.code_signature.trusted`*:: +*`registry.data.type`*:: + -- -Stores the trust status of the certificate chain. -Validating the trust of the certificate chain may be complicated, and this field should only be populated by tools that actively check the status. +Standard registry type for encoding contents -type: boolean +type: keyword -example: true +example: REG_SZ -- -*`process.parent.code_signature.valid`*:: +*`registry.hive`*:: + -- -Boolean to capture if the digital signature is verified against the binary content. -Leave unpopulated if a certificate was unchecked. +Abbreviated name for the hive. -type: boolean +type: keyword -example: true +example: HKLM -- -*`process.parent.command_line`*:: +*`registry.key`*:: + -- -Full command line that started the process, including the absolute path to the executable, and all arguments. -Some arguments may be filtered to protect sensitive information. +Hive-relative path of keys. type: keyword -example: /usr/bin/ssh -l user 10.0.0.16 - --- - -*`process.parent.command_line.text`*:: -+ --- -type: text +example: SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\winword.exe -- -*`process.parent.entity_id`*:: +*`registry.path`*:: + -- -Unique identifier for the process. -The implementation of this is specified by the data source, but some examples of what could be used here are a process-generated UUID, Sysmon Process GUIDs, or a hash of some uniquely identifying components of a process. -Constructing a globally unique identifier is a common practice to mitigate PID reuse as well as to identify a specific process over time, across multiple monitored hosts. +Full path, including hive, key and value type: keyword -example: c2c455d9f99375d +example: HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\winword.exe\Debugger -- -*`process.parent.executable`*:: +*`registry.value`*:: + -- -Absolute path to the process executable. +Name of the value written. type: keyword -example: /usr/bin/ssh +example: Debugger -- -*`process.parent.executable.text`*:: -+ --- -type: text +[float] +=== related --- +This field set is meant to facilitate pivoting around a piece of data. +Some pieces of information can be seen in many places in an ECS event. To facilitate searching for them, store an array of all seen values to their corresponding field in `related.`. +A concrete example is IP addresses, which can be under host, observer, source, destination, client, server, and network.forwarded_ip. If you append all IPs to `related.ip`, you can then search for a given IP trivially, no matter where it appeared, by querying `related.ip:192.0.2.15`. -*`process.parent.exit_code`*:: + +*`related.hash`*:: + -- -The exit code of the process, if this is a termination event. -The field should be absent if there is no exit code for the event (e.g. process start). - -type: long +All the hashes seen on your event. Populating this field, then using it to search for hashes can help in situations where you're unsure what the hash algorithm is (and therefore which key name to search). -example: 137 +type: keyword -- -*`process.parent.hash.md5`*:: +*`related.hosts`*:: + -- -MD5 hash. +All hostnames or other host identifiers seen on your event. Example identifiers include FQDNs, domain names, workstation names, or aliases. type: keyword -- -*`process.parent.hash.sha1`*:: +*`related.ip`*:: + -- -SHA1 hash. +All of the IPs seen on your event. -type: keyword +type: ip -- -*`process.parent.hash.sha256`*:: +*`related.user`*:: + -- -SHA256 hash. +All the user names seen on your event. type: keyword -- -*`process.parent.hash.sha512`*:: +[float] +=== rule + +Rule fields are used to capture the specifics of any observer or agent rules that generate alerts or other notable events. +Examples of data sources that would populate the rule fields include: network admission control platforms, network or host IDS/IPS, network firewalls, web application firewalls, url filters, endpoint detection and response (EDR) systems, etc. + + +*`rule.author`*:: + -- -SHA512 hash. +Name, organization, or pseudonym of the author or authors who created the rule used to generate this event. type: keyword +example: ['Star-Lord'] + -- -*`process.parent.name`*:: +*`rule.category`*:: + -- -Process name. -Sometimes called program name or similar. +A categorization value keyword used by the entity using the rule for detection of this event. type: keyword -example: ssh +example: Attempted Information Leak -- -*`process.parent.name.text`*:: +*`rule.description`*:: + -- -type: text +The description of the rule generating the event. + +type: keyword + +example: Block requests to public DNS over HTTPS / TLS protocols -- -*`process.parent.pgid`*:: +*`rule.id`*:: + -- -Identifier of the group of processes the process belongs to. +A rule ID that is unique within the scope of an agent, observer, or other entity using the rule for detection of this event. -type: long +type: keyword -format: string +example: 101 -- -*`process.parent.pid`*:: +*`rule.license`*:: + -- -Process id. - -type: long +Name of the license under which the rule used to generate this event is made available. -example: 4242 +type: keyword -format: string +example: Apache 2.0 -- -*`process.parent.ppid`*:: +*`rule.name`*:: + -- -Parent process' pid. - -type: long +The name of the rule or signature generating the event. -example: 4241 +type: keyword -format: string +example: BLOCK_DNS_over_TLS -- -*`process.parent.start`*:: +*`rule.reference`*:: + -- -The time the process started. +Reference URL to additional information about the rule used to generate this event. +The URL can point to the vendor's documentation about the rule. If that's not available, it can also be a link to a more general page describing this type of alert. -type: date +type: keyword -example: 2016-05-23T08:05:34.853Z +example: https://en.wikipedia.org/wiki/DNS_over_TLS -- -*`process.parent.thread.id`*:: +*`rule.ruleset`*:: + -- -Thread ID. - -type: long +Name of the ruleset, policy, group, or parent category in which the rule used to generate this event is a member. -example: 4242 +type: keyword -format: string +example: Standard_Protocol_Filters -- -*`process.parent.thread.name`*:: +*`rule.uuid`*:: + -- -Thread name. +A rule ID that is unique within the scope of a set or group of agents, observers, or other entities using the rule for detection of this event. type: keyword -example: thread-0 +example: 1100110011 -- -*`process.parent.title`*:: +*`rule.version`*:: + -- -Process title. -The proctitle, some times the same as process name. Can also be different: for example a browser setting its title to the web page currently opened. +The version / revision of the rule being used for analysis. type: keyword +example: 1.1 + -- -*`process.parent.title.text`*:: +[float] +=== server + +A Server is defined as the responder in a network connection for events regarding sessions, connections, or bidirectional flow records. +For TCP events, the server is the receiver of the initial SYN packet(s) of the TCP connection. For other protocols, the server is generally the responder in the network transaction. Some systems actually use the term "responder" to refer the server in TCP connections. The server fields describe details about the system acting as the server in the network event. Server fields are usually populated in conjunction with client fields. Server fields are generally not populated for packet-level events. +Client / server representations can add semantic context to an exchange, which is helpful to visualize the data in certain situations. If your context falls in that category, you should still ensure that source and destination are filled appropriately. + + +*`server.address`*:: + -- -type: text +Some event server addresses are defined ambiguously. The event will sometimes list an IP, a domain or a unix socket. You should always store the raw address in the `.address` field. +Then it should be duplicated to `.ip` or `.domain`, depending on which one it is. + +type: keyword -- -*`process.parent.uptime`*:: +*`server.as.number`*:: + -- -Seconds the process has been up. +Unique number allocated to the autonomous system. The autonomous system number (ASN) uniquely identifies each network on the Internet. type: long -example: 1325 +example: 15169 -- -*`process.parent.working_directory`*:: +*`server.as.organization.name`*:: + -- -The working directory of the process. +Organization name. type: keyword -example: /home/alice +example: Google LLC -- -*`process.parent.working_directory.text`*:: +*`server.as.organization.name.text`*:: + -- type: text -- -*`process.pe.company`*:: +*`server.bytes`*:: + -- -Internal company name of the file, provided at compile-time. +Bytes sent from the server to the client. -type: keyword +type: long -example: Microsoft Corporation +example: 184 + +format: bytes -- -*`process.pe.description`*:: +*`server.domain`*:: + -- -Internal description of the file, provided at compile-time. +Server domain. type: keyword -example: Paint - -- -*`process.pe.file_version`*:: +*`server.geo.city_name`*:: + -- -Internal version of the file, provided at compile-time. +City name. type: keyword -example: 6.3.9600.17415 +example: Montreal -- -*`process.pe.original_file_name`*:: +*`server.geo.continent_name`*:: + -- -Internal name of the file, provided at compile-time. +Name of the continent. type: keyword -example: MSPAINT.EXE +example: North America -- -*`process.pe.product`*:: +*`server.geo.country_iso_code`*:: + -- -Internal product name of the file, provided at compile-time. +Country ISO code. type: keyword -example: Microsoft® Windows® Operating System +example: CA -- -*`process.pgid`*:: +*`server.geo.country_name`*:: + -- -Identifier of the group of processes the process belongs to. +Country name. -type: long +type: keyword -format: string +example: Canada -- -*`process.pid`*:: +*`server.geo.location`*:: + -- -Process id. - -type: long +Longitude and latitude. -example: 4242 +type: geo_point -format: string +example: { "lon": -73.614830, "lat": 45.505918 } -- -*`process.ppid`*:: +*`server.geo.name`*:: + -- -Parent process' pid. - -type: long +User-defined description of a location, at the level of granularity they care about. +Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. +Not typically used in automated geolocation. -example: 4241 +type: keyword -format: string +example: boston-dc -- -*`process.start`*:: +*`server.geo.region_iso_code`*:: + -- -The time the process started. +Region ISO code. -type: date +type: keyword -example: 2016-05-23T08:05:34.853Z +example: CA-QC -- -*`process.thread.id`*:: +*`server.geo.region_name`*:: + -- -Thread ID. - -type: long +Region name. -example: 4242 +type: keyword -format: string +example: Quebec -- -*`process.thread.name`*:: +*`server.ip`*:: + -- -Thread name. - -type: keyword +IP address of the server (IPv4 or IPv6). -example: thread-0 +type: ip -- -*`process.title`*:: +*`server.mac`*:: + -- -Process title. -The proctitle, some times the same as process name. Can also be different: for example a browser setting its title to the web page currently opened. +MAC address of the server. type: keyword -- -*`process.title.text`*:: +*`server.nat.ip`*:: + -- -type: text +Translated ip of destination based NAT sessions (e.g. internet to private DMZ) +Typically used with load balancers, firewalls, or routers. + +type: ip -- -*`process.uptime`*:: +*`server.nat.port`*:: + -- -Seconds the process has been up. +Translated port of destination based NAT sessions (e.g. internet to private DMZ) +Typically used with load balancers, firewalls, or routers. type: long -example: 1325 +format: string -- -*`process.working_directory`*:: +*`server.packets`*:: + -- -The working directory of the process. +Packets sent from the server to the client. -type: keyword +type: long -example: /home/alice +example: 12 -- -*`process.working_directory.text`*:: +*`server.port`*:: + -- -type: text - --- +Port of the server. -[float] -=== registry +type: long -Fields related to Windows Registry operations. +format: string +-- -*`registry.data.bytes`*:: +*`server.registered_domain`*:: + -- -Original bytes written with base64 encoding. -For Windows registry operations, such as SetValueEx and RegQueryValueEx, this corresponds to the data pointed by `lp_data`. This is optional but provides better recoverability and should be populated for REG_BINARY encoded values. +The highest registered server domain, stripped of the subdomain. +For example, the registered domain for "foo.example.com" is "example.com". +This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last two labels will not work well for TLDs such as "co.uk". type: keyword -example: ZQBuAC0AVQBTAAAAZQBuAAAAAAA= +example: example.com -- -*`registry.data.strings`*:: +*`server.top_level_domain`*:: + -- -Content when writing string types. -Populated as an array when writing string data to the registry. For single string registry types (REG_SZ, REG_EXPAND_SZ), this should be an array with one string. For sequences of string with REG_MULTI_SZ, this array will be variable length. For numeric data, such as REG_DWORD and REG_QWORD, this should be populated with the decimal representation (e.g `"1"`). +The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for example.com is "com". +This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last label will not work well for effective TLDs such as "co.uk". type: keyword -example: ["C:\rta\red_ttp\bin\myapp.exe"] +example: co.uk -- -*`registry.data.type`*:: +*`server.user.domain`*:: + -- -Standard registry type for encoding contents +Name of the directory the user is a member of. +For example, an LDAP or Active Directory domain name. type: keyword -example: REG_SZ - -- -*`registry.hive`*:: +*`server.user.email`*:: + -- -Abbreviated name for the hive. +User email address. type: keyword -example: HKLM - -- -*`registry.key`*:: +*`server.user.full_name`*:: + -- -Hive-relative path of keys. +User's full name, if available. type: keyword -example: SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\winword.exe +example: Albert Einstein -- -*`registry.path`*:: +*`server.user.full_name.text`*:: + -- -Full path, including hive, key and value - -type: keyword - -example: HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\winword.exe\Debugger +type: text -- -*`registry.value`*:: +*`server.user.group.domain`*:: + -- -Name of the value written. +Name of the directory the group is a member of. +For example, an LDAP or Active Directory domain name. type: keyword -example: Debugger - -- -[float] -=== related - -This field set is meant to facilitate pivoting around a piece of data. -Some pieces of information can be seen in many places in an ECS event. To facilitate searching for them, store an array of all seen values to their corresponding field in `related.`. -A concrete example is IP addresses, which can be under host, observer, source, destination, client, server, and network.forwarded_ip. If you append all IPs to `related.ip`, you can then search for a given IP trivially, no matter where it appeared, by querying `related.ip:192.0.2.15`. - - -*`related.hash`*:: +*`server.user.group.id`*:: + -- -All the hashes seen on your event. Populating this field, then using it to search for hashes can help in situations where you're unsure what the hash algorithm is (and therefore which key name to search). +Unique identifier for the group on the system/platform. type: keyword -- -*`related.ip`*:: +*`server.user.group.name`*:: + -- -All of the IPs seen on your event. +Name of the group. -type: ip +type: keyword -- -*`related.user`*:: +*`server.user.hash`*:: + -- -All the user names seen on your event. +Unique user hash to correlate information for a user in anonymized form. +Useful if `user.id` or `user.name` contain confidential information and cannot be used. type: keyword -- -[float] -=== rule +*`server.user.id`*:: ++ +-- +Unique identifier of the user. -Rule fields are used to capture the specifics of any observer or agent rules that generate alerts or other notable events. -Examples of data sources that would populate the rule fields include: network admission control platforms, network or host IDS/IPS, network firewalls, web application firewalls, url filters, endpoint detection and response (EDR) systems, etc. +type: keyword +-- -*`rule.author`*:: +*`server.user.name`*:: + -- -Name, organization, or pseudonym of the author or authors who created the rule used to generate this event. +Short name or login of the user. type: keyword -example: ['Star-Lord'] +example: albert -- -*`rule.category`*:: +*`server.user.name.text`*:: + -- -A categorization value keyword used by the entity using the rule for detection of this event. - -type: keyword - -example: Attempted Information Leak +type: text -- -*`rule.description`*:: +*`server.user.roles`*:: + -- -The description of the rule generating the event. +Array of user roles at the time of the event. type: keyword -example: Block requests to public DNS over HTTPS / TLS protocols +example: ["kibana_admin", "reporting_user"] -- -*`rule.id`*:: +[float] +=== service + +The service fields describe the service for or from which the data was collected. +These fields help you find and correlate logs for a specific service and version. + + +*`service.ephemeral_id`*:: + -- -A rule ID that is unique within the scope of an agent, observer, or other entity using the rule for detection of this event. +Ephemeral identifier of this service (if one exists). +This id normally changes across restarts, but `service.id` does not. type: keyword -example: 101 +example: 8a4f500f -- -*`rule.license`*:: +*`service.id`*:: + -- -Name of the license under which the rule used to generate this event is made available. +Unique identifier of the running service. If the service is comprised of many nodes, the `service.id` should be the same for all nodes. +This id should uniquely identify the service. This makes it possible to correlate logs and metrics for one specific service, no matter which particular node emitted the event. +Note that if you need to see the events from one specific host of the service, you should filter on that `host.name` or `host.id` instead. type: keyword -example: Apache 2.0 +example: d37e5ebfe0ae6c4972dbe9f0174a1637bb8247f6 -- -*`rule.name`*:: +*`service.name`*:: + -- -The name of the rule or signature generating the event. +Name of the service data is collected from. +The name of the service is normally user given. This allows for distributed services that run on multiple hosts to correlate the related instances based on the name. +In the case of Elasticsearch the `service.name` could contain the cluster name. For Beats the `service.name` is by default a copy of the `service.type` field if no name is specified. type: keyword -example: BLOCK_DNS_over_TLS +example: elasticsearch-metrics -- -*`rule.reference`*:: +*`service.node.name`*:: + -- -Reference URL to additional information about the rule used to generate this event. -The URL can point to the vendor's documentation about the rule. If that's not available, it can also be a link to a more general page describing this type of alert. +Name of a service node. +This allows for two nodes of the same service running on the same host to be differentiated. Therefore, `service.node.name` should typically be unique across nodes of a given service. +In the case of Elasticsearch, the `service.node.name` could contain the unique node name within the Elasticsearch cluster. In cases where the service doesn't have the concept of a node name, the host name or container name can be used to distinguish running instances that make up this service. If those do not provide uniqueness (e.g. multiple instances of the service running on the same host) - the node name can be manually set. type: keyword -example: https://en.wikipedia.org/wiki/DNS_over_TLS +example: instance-0000000016 -- -*`rule.ruleset`*:: +*`service.state`*:: + -- -Name of the ruleset, policy, group, or parent category in which the rule used to generate this event is a member. +Current state of the service. type: keyword -example: Standard_Protocol_Filters - -- -*`rule.uuid`*:: +*`service.type`*:: + -- -A rule ID that is unique within the scope of a set or group of agents, observers, or other entities using the rule for detection of this event. +The type of the service data is collected from. +The type can be used to group and correlate logs and metrics from one service type. +Example: If logs or metrics are collected from Elasticsearch, `service.type` would be `elasticsearch`. type: keyword -example: 1100110011 +example: elasticsearch -- -*`rule.version`*:: +*`service.version`*:: + -- -The version / revision of the rule being used for analysis. +Version of the service the data was collected from. +This allows to look at a data set only for a specific version of a service. type: keyword -example: 1.1 +example: 3.2.4 -- [float] -=== server +=== source -A Server is defined as the responder in a network connection for events regarding sessions, connections, or bidirectional flow records. -For TCP events, the server is the receiver of the initial SYN packet(s) of the TCP connection. For other protocols, the server is generally the responder in the network transaction. Some systems actually use the term "responder" to refer the server in TCP connections. The server fields describe details about the system acting as the server in the network event. Server fields are usually populated in conjunction with client fields. Server fields are generally not populated for packet-level events. -Client / server representations can add semantic context to an exchange, which is helpful to visualize the data in certain situations. If your context falls in that category, you should still ensure that source and destination are filled appropriately. +Source fields describe details about the source of a packet/event. +Source fields are usually populated in conjunction with destination fields. -*`server.address`*:: +*`source.address`*:: + -- -Some event server addresses are defined ambiguously. The event will sometimes list an IP, a domain or a unix socket. You should always store the raw address in the `.address` field. +Some event source addresses are defined ambiguously. The event will sometimes list an IP, a domain or a unix socket. You should always store the raw address in the `.address` field. Then it should be duplicated to `.ip` or `.domain`, depending on which one it is. type: keyword -- -*`server.as.number`*:: +*`source.as.number`*:: + -- Unique number allocated to the autonomous system. The autonomous system number (ASN) uniquely identifies each network on the Internet. @@ -5387,7 +6382,7 @@ example: 15169 -- -*`server.as.organization.name`*:: +*`source.as.organization.name`*:: + -- Organization name. @@ -5398,17 +6393,17 @@ example: Google LLC -- -*`server.as.organization.name.text`*:: +*`source.as.organization.name.text`*:: + -- type: text -- -*`server.bytes`*:: +*`source.bytes`*:: + -- -Bytes sent from the server to the client. +Bytes sent from the source to the destination. type: long @@ -5418,16 +6413,16 @@ format: bytes -- -*`server.domain`*:: +*`source.domain`*:: + -- -Server domain. +Source domain. type: keyword -- -*`server.geo.city_name`*:: +*`source.geo.city_name`*:: + -- City name. @@ -5438,7 +6433,7 @@ example: Montreal -- -*`server.geo.continent_name`*:: +*`source.geo.continent_name`*:: + -- Name of the continent. @@ -5449,7 +6444,7 @@ example: North America -- -*`server.geo.country_iso_code`*:: +*`source.geo.country_iso_code`*:: + -- Country ISO code. @@ -5460,7 +6455,7 @@ example: CA -- -*`server.geo.country_name`*:: +*`source.geo.country_name`*:: + -- Country name. @@ -5471,7 +6466,7 @@ example: Canada -- -*`server.geo.location`*:: +*`source.geo.location`*:: + -- Longitude and latitude. @@ -5482,7 +6477,7 @@ example: { "lon": -73.614830, "lat": 45.505918 } -- -*`server.geo.name`*:: +*`source.geo.name`*:: + -- User-defined description of a location, at the level of granularity they care about. @@ -5495,7 +6490,7 @@ example: boston-dc -- -*`server.geo.region_iso_code`*:: +*`source.geo.region_iso_code`*:: + -- Region ISO code. @@ -5506,7 +6501,7 @@ example: CA-QC -- -*`server.geo.region_name`*:: +*`source.geo.region_name`*:: + -- Region name. @@ -5517,39 +6512,38 @@ example: Quebec -- -*`server.ip`*:: +*`source.ip`*:: + -- -IP address of the server. -Can be one or multiple IPv4 or IPv6 addresses. +IP address of the source (IPv4 or IPv6). type: ip -- -*`server.mac`*:: +*`source.mac`*:: + -- -MAC address of the server. +MAC address of the source. type: keyword -- -*`server.nat.ip`*:: +*`source.nat.ip`*:: + -- -Translated ip of destination based NAT sessions (e.g. internet to private DMZ) -Typically used with load balancers, firewalls, or routers. +Translated ip of source based NAT sessions (e.g. internal client to internet) +Typically connections traversing load balancers, firewalls, or routers. type: ip -- -*`server.nat.port`*:: +*`source.nat.port`*:: + -- -Translated port of destination based NAT sessions (e.g. internet to private DMZ) +Translated port of source based NAT sessions. (e.g. internal client to internet) Typically used with load balancers, firewalls, or routers. type: long @@ -5558,10 +6552,10 @@ format: string -- -*`server.packets`*:: +*`source.packets`*:: + -- -Packets sent from the server to the client. +Packets sent from the source to the destination. type: long @@ -5569,10 +6563,10 @@ example: 12 -- -*`server.port`*:: +*`source.port`*:: + -- -Port of the server. +Port of the source. type: long @@ -5580,23 +6574,23 @@ format: string -- -*`server.registered_domain`*:: +*`source.registered_domain`*:: + -- -The highest registered server domain, stripped of the subdomain. -For example, the registered domain for "foo.google.com" is "google.com". +The highest registered source domain, stripped of the subdomain. +For example, the registered domain for "foo.example.com" is "example.com". This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last two labels will not work well for TLDs such as "co.uk". type: keyword -example: google.com +example: example.com -- -*`server.top_level_domain`*:: +*`source.top_level_domain`*:: + -- -The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for google.com is "com". +The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for example.com is "com". This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last label will not work well for effective TLDs such as "co.uk". type: keyword @@ -5605,7 +6599,7 @@ example: co.uk -- -*`server.user.domain`*:: +*`source.user.domain`*:: + -- Name of the directory the user is a member of. @@ -5615,925 +6609,1024 @@ type: keyword -- -*`server.user.email`*:: +*`source.user.email`*:: ++ +-- +User email address. + +type: keyword + +-- + +*`source.user.full_name`*:: ++ +-- +User's full name, if available. + +type: keyword + +example: Albert Einstein + +-- + +*`source.user.full_name.text`*:: ++ +-- +type: text + +-- + +*`source.user.group.domain`*:: ++ +-- +Name of the directory the group is a member of. +For example, an LDAP or Active Directory domain name. + +type: keyword + +-- + +*`source.user.group.id`*:: ++ +-- +Unique identifier for the group on the system/platform. + +type: keyword + +-- + +*`source.user.group.name`*:: ++ +-- +Name of the group. + +type: keyword + +-- + +*`source.user.hash`*:: ++ +-- +Unique user hash to correlate information for a user in anonymized form. +Useful if `user.id` or `user.name` contain confidential information and cannot be used. + +type: keyword + +-- + +*`source.user.id`*:: ++ +-- +Unique identifier of the user. + +type: keyword + +-- + +*`source.user.name`*:: ++ +-- +Short name or login of the user. + +type: keyword + +example: albert + +-- + +*`source.user.name.text`*:: + -- -User email address. - -type: keyword +type: text -- -*`server.user.full_name`*:: +*`source.user.roles`*:: + -- -User's full name, if available. +Array of user roles at the time of the event. type: keyword -example: Albert Einstein +example: ["kibana_admin", "reporting_user"] -- -*`server.user.full_name.text`*:: -+ --- -type: text +[float] +=== threat --- +Fields to classify events and alerts according to a threat taxonomy such as the MITRE ATT&CK® framework. +These fields are for users to classify alerts from all of their sources (e.g. IDS, NGFW, etc.) within a common taxonomy. The threat.tactic.* are meant to capture the high level category of the threat (e.g. "impact"). The threat.technique.* fields are meant to capture which kind of approach is used by this detected threat, to accomplish the goal (e.g. "endpoint denial of service"). -*`server.user.group.domain`*:: + +*`threat.framework`*:: + -- -Name of the directory the group is a member of. -For example, an LDAP or Active Directory domain name. +Name of the threat framework used to further categorize and classify the tactic and technique of the reported threat. Framework classification can be provided by detecting systems, evaluated at ingest time, or retrospectively tagged to events. type: keyword +example: MITRE ATT&CK + -- -*`server.user.group.id`*:: +*`threat.tactic.id`*:: + -- -Unique identifier for the group on the system/platform. +The id of tactic used by this threat. You can use a MITRE ATT&CK® tactic, for example. (ex. https://attack.mitre.org/tactics/TA0040/ ) type: keyword +example: TA0040 + -- -*`server.user.group.name`*:: +*`threat.tactic.name`*:: + -- -Name of the group. +Name of the type of tactic used by this threat. You can use a MITRE ATT&CK® tactic, for example. (ex. https://attack.mitre.org/tactics/TA0040/) type: keyword +example: impact + -- -*`server.user.hash`*:: +*`threat.tactic.reference`*:: + -- -Unique user hash to correlate information for a user in anonymized form. -Useful if `user.id` or `user.name` contain confidential information and cannot be used. +The reference url of tactic used by this threat. You can use a MITRE ATT&CK® tactic, for example. (ex. https://attack.mitre.org/tactics/TA0040/ ) type: keyword +example: https://attack.mitre.org/tactics/TA0040/ + -- -*`server.user.id`*:: +*`threat.technique.id`*:: + -- -Unique identifiers of the user. +The id of technique used by this threat. You can use a MITRE ATT&CK® technique, for example. (ex. https://attack.mitre.org/techniques/T1499/) type: keyword +example: T1499 + -- -*`server.user.name`*:: +*`threat.technique.name`*:: + -- -Short name or login of the user. +The name of technique used by this threat. You can use a MITRE ATT&CK® technique, for example. (ex. https://attack.mitre.org/techniques/T1499/) type: keyword -example: albert +example: Endpoint Denial of Service -- -*`server.user.name.text`*:: +*`threat.technique.name.text`*:: + -- type: text -- -[float] -=== service - -The service fields describe the service for or from which the data was collected. -These fields help you find and correlate logs for a specific service and version. - - -*`service.ephemeral_id`*:: +*`threat.technique.reference`*:: + -- -Ephemeral identifier of this service (if one exists). -This id normally changes across restarts, but `service.id` does not. +The reference url of technique used by this threat. You can use a MITRE ATT&CK® technique, for example. (ex. https://attack.mitre.org/techniques/T1499/ ) type: keyword -example: 8a4f500f +example: https://attack.mitre.org/techniques/T1499/ -- -*`service.id`*:: +[float] +=== tls + +Fields related to a TLS connection. These fields focus on the TLS protocol itself and intentionally avoids in-depth analysis of the related x.509 certificate files. + + +*`tls.cipher`*:: + -- -Unique identifier of the running service. If the service is comprised of many nodes, the `service.id` should be the same for all nodes. -This id should uniquely identify the service. This makes it possible to correlate logs and metrics for one specific service, no matter which particular node emitted the event. -Note that if you need to see the events from one specific host of the service, you should filter on that `host.name` or `host.id` instead. +String indicating the cipher used during the current connection. type: keyword -example: d37e5ebfe0ae6c4972dbe9f0174a1637bb8247f6 +example: TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 -- -*`service.name`*:: +*`tls.client.certificate`*:: + -- -Name of the service data is collected from. -The name of the service is normally user given. This allows for distributed services that run on multiple hosts to correlate the related instances based on the name. -In the case of Elasticsearch the `service.name` could contain the cluster name. For Beats the `service.name` is by default a copy of the `service.type` field if no name is specified. +PEM-encoded stand-alone certificate offered by the client. This is usually mutually-exclusive of `client.certificate_chain` since this value also exists in that list. type: keyword -example: elasticsearch-metrics +example: MII... -- -*`service.node.name`*:: +*`tls.client.certificate_chain`*:: + -- -Name of a service node. -This allows for two nodes of the same service running on the same host to be differentiated. Therefore, `service.node.name` should typically be unique across nodes of a given service. -In the case of Elasticsearch, the `service.node.name` could contain the unique node name within the Elasticsearch cluster. In cases where the service doesn't have the concept of a node name, the host name or container name can be used to distinguish running instances that make up this service. If those do not provide uniqueness (e.g. multiple instances of the service running on the same host) - the node name can be manually set. +Array of PEM-encoded certificates that make up the certificate chain offered by the client. This is usually mutually-exclusive of `client.certificate` since that value should be the first certificate in the chain. type: keyword -example: instance-0000000016 +example: ['MII...', 'MII...'] -- -*`service.state`*:: +*`tls.client.hash.md5`*:: + -- -Current state of the service. +Certificate fingerprint using the MD5 digest of DER-encoded version of certificate offered by the client. For consistency with other hash values, this value should be formatted as an uppercase hash. type: keyword +example: 0F76C7F2C55BFD7D8E8B8F4BFBF0C9EC + -- -*`service.type`*:: +*`tls.client.hash.sha1`*:: + -- -The type of the service data is collected from. -The type can be used to group and correlate logs and metrics from one service type. -Example: If logs or metrics are collected from Elasticsearch, `service.type` would be `elasticsearch`. +Certificate fingerprint using the SHA1 digest of DER-encoded version of certificate offered by the client. For consistency with other hash values, this value should be formatted as an uppercase hash. type: keyword -example: elasticsearch +example: 9E393D93138888D288266C2D915214D1D1CCEB2A -- -*`service.version`*:: +*`tls.client.hash.sha256`*:: + -- -Version of the service the data was collected from. -This allows to look at a data set only for a specific version of a service. +Certificate fingerprint using the SHA256 digest of DER-encoded version of certificate offered by the client. For consistency with other hash values, this value should be formatted as an uppercase hash. type: keyword -example: 3.2.4 +example: 0687F666A054EF17A08E2F2162EAB4CBC0D265E1D7875BE74BF3C712CA92DAF0 -- -[float] -=== source - -Source fields describe details about the source of a packet/event. -Source fields are usually populated in conjunction with destination fields. - - -*`source.address`*:: +*`tls.client.issuer`*:: + -- -Some event source addresses are defined ambiguously. The event will sometimes list an IP, a domain or a unix socket. You should always store the raw address in the `.address` field. -Then it should be duplicated to `.ip` or `.domain`, depending on which one it is. +Distinguished name of subject of the issuer of the x.509 certificate presented by the client. type: keyword +example: CN=Example Root CA, OU=Infrastructure Team, DC=example, DC=com + -- -*`source.as.number`*:: +*`tls.client.ja3`*:: + -- -Unique number allocated to the autonomous system. The autonomous system number (ASN) uniquely identifies each network on the Internet. +A hash that identifies clients based on how they perform an SSL/TLS handshake. -type: long +type: keyword -example: 15169 +example: d4e5b18d6b55c71272893221c96ba240 -- -*`source.as.organization.name`*:: +*`tls.client.not_after`*:: + -- -Organization name. +Date/Time indicating when client certificate is no longer considered valid. -type: keyword +type: date -example: Google LLC +example: 2021-01-01T00:00:00.000Z -- -*`source.as.organization.name.text`*:: +*`tls.client.not_before`*:: + -- -type: text +Date/Time indicating when client certificate is first considered valid. + +type: date + +example: 1970-01-01T00:00:00.000Z -- -*`source.bytes`*:: +*`tls.client.server_name`*:: + -- -Bytes sent from the source to the destination. - -type: long +Also called an SNI, this tells the server which hostname to which the client is attempting to connect to. When this value is available, it should get copied to `destination.domain`. -example: 184 +type: keyword -format: bytes +example: www.elastic.co -- -*`source.domain`*:: +*`tls.client.subject`*:: + -- -Source domain. +Distinguished name of subject of the x.509 certificate presented by the client. type: keyword +example: CN=myclient, OU=Documentation Team, DC=example, DC=com + -- -*`source.geo.city_name`*:: +*`tls.client.supported_ciphers`*:: + -- -City name. +Array of ciphers offered by the client during the client hello. type: keyword -example: Montreal +example: ['TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384', 'TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384', '...'] -- -*`source.geo.continent_name`*:: +*`tls.client.x509.alternative_names`*:: + -- -Name of the continent. +List of subject alternative names (SAN). Name types vary by certificate authority and certificate type but commonly contain IP addresses, DNS names (and wildcards), and email addresses. type: keyword -example: North America +example: *.elastic.co -- -*`source.geo.country_iso_code`*:: +*`tls.client.x509.issuer.common_name`*:: + -- -Country ISO code. +List of common name (CN) of issuing certificate authority. type: keyword -example: CA +example: Example SHA2 High Assurance Server CA -- -*`source.geo.country_name`*:: +*`tls.client.x509.issuer.country`*:: + -- -Country name. +List of country (C) codes type: keyword -example: Canada +example: US -- -*`source.geo.location`*:: +*`tls.client.x509.issuer.distinguished_name`*:: + -- -Longitude and latitude. +Distinguished name (DN) of issuing certificate authority. -type: geo_point +type: keyword -example: { "lon": -73.614830, "lat": 45.505918 } +example: C=US, O=Example Inc, OU=www.example.com, CN=Example SHA2 High Assurance Server CA -- -*`source.geo.name`*:: +*`tls.client.x509.issuer.locality`*:: + -- -User-defined description of a location, at the level of granularity they care about. -Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. -Not typically used in automated geolocation. +List of locality names (L) type: keyword -example: boston-dc +example: Mountain View -- -*`source.geo.region_iso_code`*:: +*`tls.client.x509.issuer.organization`*:: + -- -Region ISO code. +List of organizations (O) of issuing certificate authority. type: keyword -example: CA-QC +example: Example Inc -- -*`source.geo.region_name`*:: +*`tls.client.x509.issuer.organizational_unit`*:: + -- -Region name. +List of organizational units (OU) of issuing certificate authority. type: keyword -example: Quebec +example: www.example.com -- -*`source.ip`*:: +*`tls.client.x509.issuer.state_or_province`*:: + -- -IP address of the source. -Can be one or multiple IPv4 or IPv6 addresses. +List of state or province names (ST, S, or P) -type: ip +type: keyword + +example: California -- -*`source.mac`*:: +*`tls.client.x509.not_after`*:: + -- -MAC address of the source. +Time at which the certificate is no longer considered valid. -type: keyword +type: date + +example: 2020-07-16 03:15:39+00:00 -- -*`source.nat.ip`*:: +*`tls.client.x509.not_before`*:: + -- -Translated ip of source based NAT sessions (e.g. internal client to internet) -Typically connections traversing load balancers, firewalls, or routers. +Time at which the certificate is first considered valid. -type: ip +type: date + +example: 2019-08-16 01:40:25+00:00 -- -*`source.nat.port`*:: +*`tls.client.x509.public_key_algorithm`*:: + -- -Translated port of source based NAT sessions. (e.g. internal client to internet) -Typically used with load balancers, firewalls, or routers. +Algorithm used to generate the public key. -type: long +type: keyword -format: string +example: RSA -- -*`source.packets`*:: +*`tls.client.x509.public_key_curve`*:: + -- -Packets sent from the source to the destination. +The curve used by the elliptic curve public key algorithm. This is algorithm specific. -type: long +type: keyword -example: 12 +example: nistp521 -- -*`source.port`*:: +*`tls.client.x509.public_key_exponent`*:: + -- -Port of the source. +Exponent used to derive the public key. This is algorithm specific. type: long -format: string +example: 65537 + +Field is not indexed. -- -*`source.registered_domain`*:: +*`tls.client.x509.public_key_size`*:: + -- -The highest registered source domain, stripped of the subdomain. -For example, the registered domain for "foo.google.com" is "google.com". -This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last two labels will not work well for TLDs such as "co.uk". +The size of the public key space in bits. -type: keyword +type: long -example: google.com +example: 2048 -- -*`source.top_level_domain`*:: +*`tls.client.x509.serial_number`*:: + -- -The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for google.com is "com". -This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last label will not work well for effective TLDs such as "co.uk". +Unique serial number issued by the certificate authority. For consistency, if this value is alphanumeric, it should be formatted without colons and uppercase characters. type: keyword -example: co.uk +example: 55FBB9C7DEBF09809D12CCAA -- -*`source.user.domain`*:: +*`tls.client.x509.signature_algorithm`*:: + -- -Name of the directory the user is a member of. -For example, an LDAP or Active Directory domain name. +Identifier for certificate signature algorithm. We recommend using names found in Go Lang Crypto library. See https://github.com/golang/go/blob/go1.14/src/crypto/x509/x509.go#L337-L353. type: keyword +example: SHA256-RSA + -- -*`source.user.email`*:: +*`tls.client.x509.subject.common_name`*:: + -- -User email address. +List of common names (CN) of subject. type: keyword +example: shared.global.example.net + -- -*`source.user.full_name`*:: +*`tls.client.x509.subject.country`*:: + -- -User's full name, if available. +List of country (C) code type: keyword -example: Albert Einstein +example: US -- -*`source.user.full_name.text`*:: +*`tls.client.x509.subject.distinguished_name`*:: + -- -type: text +Distinguished name (DN) of the certificate subject entity. + +type: keyword + +example: C=US, ST=California, L=San Francisco, O=Example, Inc., CN=shared.global.example.net -- -*`source.user.group.domain`*:: +*`tls.client.x509.subject.locality`*:: + -- -Name of the directory the group is a member of. -For example, an LDAP or Active Directory domain name. +List of locality names (L) type: keyword +example: San Francisco + -- -*`source.user.group.id`*:: +*`tls.client.x509.subject.organization`*:: + -- -Unique identifier for the group on the system/platform. +List of organizations (O) of subject. type: keyword +example: Example, Inc. + -- -*`source.user.group.name`*:: +*`tls.client.x509.subject.organizational_unit`*:: + -- -Name of the group. +List of organizational units (OU) of subject. type: keyword -- -*`source.user.hash`*:: +*`tls.client.x509.subject.state_or_province`*:: + -- -Unique user hash to correlate information for a user in anonymized form. -Useful if `user.id` or `user.name` contain confidential information and cannot be used. +List of state or province names (ST, S, or P) type: keyword +example: California + -- -*`source.user.id`*:: +*`tls.client.x509.version_number`*:: + -- -Unique identifiers of the user. +Version of x509 format. type: keyword +example: 3 + -- -*`source.user.name`*:: +*`tls.curve`*:: + -- -Short name or login of the user. +String indicating the curve used for the given cipher, when applicable. type: keyword -example: albert +example: secp256r1 -- -*`source.user.name.text`*:: +*`tls.established`*:: + -- -type: text - --- - -[float] -=== threat +Boolean flag indicating if the TLS negotiation was successful and transitioned to an encrypted tunnel. -Fields to classify events and alerts according to a threat taxonomy such as the Mitre ATT&CK framework. -These fields are for users to classify alerts from all of their sources (e.g. IDS, NGFW, etc.) within a common taxonomy. The threat.tactic.* are meant to capture the high level category of the threat (e.g. "impact"). The threat.technique.* fields are meant to capture which kind of approach is used by this detected threat, to accomplish the goal (e.g. "endpoint denial of service"). +type: boolean +-- -*`threat.framework`*:: +*`tls.next_protocol`*:: + -- -Name of the threat framework used to further categorize and classify the tactic and technique of the reported threat. Framework classification can be provided by detecting systems, evaluated at ingest time, or retrospectively tagged to events. +String indicating the protocol being tunneled. Per the values in the IANA registry (https://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml#alpn-protocol-ids), this string should be lower case. type: keyword -example: MITRE ATT&CK +example: http/1.1 -- -*`threat.tactic.id`*:: +*`tls.resumed`*:: + -- -The id of tactic used by this threat. You can use the Mitre ATT&CK Matrix Tactic categorization, for example. (ex. https://attack.mitre.org/tactics/TA0040/ ) - -type: keyword +Boolean flag indicating if this TLS connection was resumed from an existing TLS negotiation. -example: TA0040 +type: boolean -- -*`threat.tactic.name`*:: +*`tls.server.certificate`*:: + -- -Name of the type of tactic used by this threat. You can use the Mitre ATT&CK Matrix Tactic categorization, for example. (ex. https://attack.mitre.org/tactics/TA0040/ ) +PEM-encoded stand-alone certificate offered by the server. This is usually mutually-exclusive of `server.certificate_chain` since this value also exists in that list. type: keyword -example: impact +example: MII... -- -*`threat.tactic.reference`*:: +*`tls.server.certificate_chain`*:: + -- -The reference url of tactic used by this threat. You can use the Mitre ATT&CK Matrix Tactic categorization, for example. (ex. https://attack.mitre.org/tactics/TA0040/ ) +Array of PEM-encoded certificates that make up the certificate chain offered by the server. This is usually mutually-exclusive of `server.certificate` since that value should be the first certificate in the chain. type: keyword -example: https://attack.mitre.org/tactics/TA0040/ +example: ['MII...', 'MII...'] -- -*`threat.technique.id`*:: +*`tls.server.hash.md5`*:: + -- -The id of technique used by this tactic. You can use the Mitre ATT&CK Matrix Tactic categorization, for example. (ex. https://attack.mitre.org/techniques/T1499/ ) +Certificate fingerprint using the MD5 digest of DER-encoded version of certificate offered by the server. For consistency with other hash values, this value should be formatted as an uppercase hash. type: keyword -example: T1499 +example: 0F76C7F2C55BFD7D8E8B8F4BFBF0C9EC -- -*`threat.technique.name`*:: +*`tls.server.hash.sha1`*:: + -- -The name of technique used by this tactic. You can use the Mitre ATT&CK Matrix Tactic categorization, for example. (ex. https://attack.mitre.org/techniques/T1499/ ) +Certificate fingerprint using the SHA1 digest of DER-encoded version of certificate offered by the server. For consistency with other hash values, this value should be formatted as an uppercase hash. type: keyword -example: endpoint denial of service +example: 9E393D93138888D288266C2D915214D1D1CCEB2A -- -*`threat.technique.name.text`*:: +*`tls.server.hash.sha256`*:: + -- -type: text +Certificate fingerprint using the SHA256 digest of DER-encoded version of certificate offered by the server. For consistency with other hash values, this value should be formatted as an uppercase hash. + +type: keyword + +example: 0687F666A054EF17A08E2F2162EAB4CBC0D265E1D7875BE74BF3C712CA92DAF0 -- -*`threat.technique.reference`*:: +*`tls.server.issuer`*:: + -- -The reference url of technique used by this tactic. You can use the Mitre ATT&CK Matrix Tactic categorization, for example. (ex. https://attack.mitre.org/techniques/T1499/ ) +Subject of the issuer of the x.509 certificate presented by the server. type: keyword -example: https://attack.mitre.org/techniques/T1499/ +example: CN=Example Root CA, OU=Infrastructure Team, DC=example, DC=com -- -[float] -=== tls +*`tls.server.ja3s`*:: ++ +-- +A hash that identifies servers based on how they perform an SSL/TLS handshake. -Fields related to a TLS connection. These fields focus on the TLS protocol itself and intentionally avoids in-depth analysis of the related x.509 certificate files. +type: keyword +example: 394441ab65754e2207b1e1b457b3641d -*`tls.cipher`*:: +-- + +*`tls.server.not_after`*:: + -- -String indicating the cipher used during the current connection. +Timestamp indicating when server certificate is no longer considered valid. -type: keyword +type: date -example: TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 +example: 2021-01-01T00:00:00.000Z -- -*`tls.client.certificate`*:: +*`tls.server.not_before`*:: + -- -PEM-encoded stand-alone certificate offered by the client. This is usually mutually-exclusive of `client.certificate_chain` since this value also exists in that list. +Timestamp indicating when server certificate is first considered valid. -type: keyword +type: date -example: MII... +example: 1970-01-01T00:00:00.000Z -- -*`tls.client.certificate_chain`*:: +*`tls.server.subject`*:: + -- -Array of PEM-encoded certificates that make up the certificate chain offered by the client. This is usually mutually-exclusive of `client.certificate` since that value should be the first certificate in the chain. +Subject of the x.509 certificate presented by the server. type: keyword -example: ['MII...', 'MII...'] +example: CN=www.example.com, OU=Infrastructure Team, DC=example, DC=com -- -*`tls.client.hash.md5`*:: +*`tls.server.x509.alternative_names`*:: + -- -Certificate fingerprint using the MD5 digest of DER-encoded version of certificate offered by the client. For consistency with other hash values, this value should be formatted as an uppercase hash. +List of subject alternative names (SAN). Name types vary by certificate authority and certificate type but commonly contain IP addresses, DNS names (and wildcards), and email addresses. type: keyword -example: 0F76C7F2C55BFD7D8E8B8F4BFBF0C9EC +example: *.elastic.co -- -*`tls.client.hash.sha1`*:: +*`tls.server.x509.issuer.common_name`*:: + -- -Certificate fingerprint using the SHA1 digest of DER-encoded version of certificate offered by the client. For consistency with other hash values, this value should be formatted as an uppercase hash. +List of common name (CN) of issuing certificate authority. type: keyword -example: 9E393D93138888D288266C2D915214D1D1CCEB2A +example: Example SHA2 High Assurance Server CA -- -*`tls.client.hash.sha256`*:: +*`tls.server.x509.issuer.country`*:: + -- -Certificate fingerprint using the SHA256 digest of DER-encoded version of certificate offered by the client. For consistency with other hash values, this value should be formatted as an uppercase hash. +List of country (C) codes type: keyword -example: 0687F666A054EF17A08E2F2162EAB4CBC0D265E1D7875BE74BF3C712CA92DAF0 +example: US -- -*`tls.client.issuer`*:: +*`tls.server.x509.issuer.distinguished_name`*:: + -- -Distinguished name of subject of the issuer of the x.509 certificate presented by the client. +Distinguished name (DN) of issuing certificate authority. type: keyword -example: CN=MyDomain Root CA, OU=Infrastructure Team, DC=mydomain, DC=com +example: C=US, O=Example Inc, OU=www.example.com, CN=Example SHA2 High Assurance Server CA -- -*`tls.client.ja3`*:: +*`tls.server.x509.issuer.locality`*:: + -- -A hash that identifies clients based on how they perform an SSL/TLS handshake. +List of locality names (L) type: keyword -example: d4e5b18d6b55c71272893221c96ba240 +example: Mountain View -- -*`tls.client.not_after`*:: +*`tls.server.x509.issuer.organization`*:: + -- -Date/Time indicating when client certificate is no longer considered valid. +List of organizations (O) of issuing certificate authority. -type: date +type: keyword -example: 2021-01-01T00:00:00.000Z +example: Example Inc -- -*`tls.client.not_before`*:: +*`tls.server.x509.issuer.organizational_unit`*:: + -- -Date/Time indicating when client certificate is first considered valid. +List of organizational units (OU) of issuing certificate authority. -type: date +type: keyword -example: 1970-01-01T00:00:00.000Z +example: www.example.com -- -*`tls.client.server_name`*:: +*`tls.server.x509.issuer.state_or_province`*:: + -- -Also called an SNI, this tells the server which hostname to which the client is attempting to connect. When this value is available, it should get copied to `destination.domain`. +List of state or province names (ST, S, or P) type: keyword -example: www.elastic.co +example: California -- -*`tls.client.subject`*:: +*`tls.server.x509.not_after`*:: + -- -Distinguished name of subject of the x.509 certificate presented by the client. +Time at which the certificate is no longer considered valid. -type: keyword +type: date -example: CN=myclient, OU=Documentation Team, DC=mydomain, DC=com +example: 2020-07-16 03:15:39+00:00 -- -*`tls.client.supported_ciphers`*:: +*`tls.server.x509.not_before`*:: + -- -Array of ciphers offered by the client during the client hello. +Time at which the certificate is first considered valid. -type: keyword +type: date -example: ['TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384', 'TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384', '...'] +example: 2019-08-16 01:40:25+00:00 -- -*`tls.curve`*:: +*`tls.server.x509.public_key_algorithm`*:: + -- -String indicating the curve used for the given cipher, when applicable. +Algorithm used to generate the public key. type: keyword -example: secp256r1 +example: RSA -- -*`tls.established`*:: +*`tls.server.x509.public_key_curve`*:: + -- -Boolean flag indicating if the TLS negotiation was successful and transitioned to an encrypted tunnel. +The curve used by the elliptic curve public key algorithm. This is algorithm specific. -type: boolean +type: keyword + +example: nistp521 -- -*`tls.next_protocol`*:: +*`tls.server.x509.public_key_exponent`*:: + -- -String indicating the protocol being tunneled. Per the values in the IANA registry (https://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml#alpn-protocol-ids), this string should be lower case. +Exponent used to derive the public key. This is algorithm specific. -type: keyword +type: long -example: http/1.1 +example: 65537 + +Field is not indexed. -- -*`tls.resumed`*:: +*`tls.server.x509.public_key_size`*:: + -- -Boolean flag indicating if this TLS connection was resumed from an existing TLS negotiation. +The size of the public key space in bits. -type: boolean +type: long + +example: 2048 -- -*`tls.server.certificate`*:: +*`tls.server.x509.serial_number`*:: + -- -PEM-encoded stand-alone certificate offered by the server. This is usually mutually-exclusive of `server.certificate_chain` since this value also exists in that list. +Unique serial number issued by the certificate authority. For consistency, if this value is alphanumeric, it should be formatted without colons and uppercase characters. type: keyword -example: MII... +example: 55FBB9C7DEBF09809D12CCAA -- -*`tls.server.certificate_chain`*:: +*`tls.server.x509.signature_algorithm`*:: + -- -Array of PEM-encoded certificates that make up the certificate chain offered by the server. This is usually mutually-exclusive of `server.certificate` since that value should be the first certificate in the chain. +Identifier for certificate signature algorithm. We recommend using names found in Go Lang Crypto library. See https://github.com/golang/go/blob/go1.14/src/crypto/x509/x509.go#L337-L353. type: keyword -example: ['MII...', 'MII...'] +example: SHA256-RSA -- -*`tls.server.hash.md5`*:: +*`tls.server.x509.subject.common_name`*:: + -- -Certificate fingerprint using the MD5 digest of DER-encoded version of certificate offered by the server. For consistency with other hash values, this value should be formatted as an uppercase hash. +List of common names (CN) of subject. type: keyword -example: 0F76C7F2C55BFD7D8E8B8F4BFBF0C9EC +example: shared.global.example.net -- -*`tls.server.hash.sha1`*:: +*`tls.server.x509.subject.country`*:: + -- -Certificate fingerprint using the SHA1 digest of DER-encoded version of certificate offered by the server. For consistency with other hash values, this value should be formatted as an uppercase hash. +List of country (C) code type: keyword -example: 9E393D93138888D288266C2D915214D1D1CCEB2A +example: US -- -*`tls.server.hash.sha256`*:: +*`tls.server.x509.subject.distinguished_name`*:: + -- -Certificate fingerprint using the SHA256 digest of DER-encoded version of certificate offered by the server. For consistency with other hash values, this value should be formatted as an uppercase hash. +Distinguished name (DN) of the certificate subject entity. type: keyword -example: 0687F666A054EF17A08E2F2162EAB4CBC0D265E1D7875BE74BF3C712CA92DAF0 +example: C=US, ST=California, L=San Francisco, O=Example, Inc., CN=shared.global.example.net -- -*`tls.server.issuer`*:: +*`tls.server.x509.subject.locality`*:: + -- -Subject of the issuer of the x.509 certificate presented by the server. +List of locality names (L) type: keyword -example: CN=MyDomain Root CA, OU=Infrastructure Team, DC=mydomain, DC=com +example: San Francisco -- -*`tls.server.ja3s`*:: +*`tls.server.x509.subject.organization`*:: + -- -A hash that identifies servers based on how they perform an SSL/TLS handshake. +List of organizations (O) of subject. type: keyword -example: 394441ab65754e2207b1e1b457b3641d +example: Example, Inc. -- -*`tls.server.not_after`*:: +*`tls.server.x509.subject.organizational_unit`*:: + -- -Timestamp indicating when server certificate is no longer considered valid. - -type: date +List of organizational units (OU) of subject. -example: 2021-01-01T00:00:00.000Z +type: keyword -- -*`tls.server.not_before`*:: +*`tls.server.x509.subject.state_or_province`*:: + -- -Timestamp indicating when server certificate is first considered valid. +List of state or province names (ST, S, or P) -type: date +type: keyword -example: 1970-01-01T00:00:00.000Z +example: California -- -*`tls.server.subject`*:: +*`tls.server.x509.version_number`*:: + -- -Subject of the x.509 certificate presented by the server. +Version of x509 format. type: keyword -example: CN=www.mydomain.com, OU=Infrastructure Team, DC=mydomain, DC=com +example: 3 -- @@ -6565,6 +7658,18 @@ example: tls Distributed tracing makes it possible to analyze performance throughout a microservice architecture all in one view. This is accomplished by tracing all of the requests - from the initial web request in the front-end service - to queries made through multiple back-end services. +*`tracing.span.id`*:: ++ +-- +Unique identifier of the span within the scope of its trace. +A span represents an operation within a transaction, such as a request to another service, or a database query. + +type: keyword + +example: 3ff9a8981b7ccd5a + +-- + *`tracing.trace.id`*:: + -- @@ -6580,7 +7685,7 @@ example: 4bf92f3577b34da6a3ce929d0e0e4736 *`tracing.transaction.id`*:: + -- -Unique identifier of the transaction. +Unique identifier of the transaction within the scope of its trace. A transaction is the highest level of work measured within a service, such as a request to a server. type: keyword @@ -6713,12 +7818,12 @@ type: keyword + -- The highest registered url domain, stripped of the subdomain. -For example, the registered domain for "foo.google.com" is "google.com". +For example, the registered domain for "foo.example.com" is "example.com". This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last two labels will not work well for TLDs such as "co.uk". type: keyword -example: google.com +example: example.com -- @@ -6737,7 +7842,7 @@ example: https *`url.top_level_domain`*:: + -- -The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for google.com is "com". +The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for example.com is "com". This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last label will not work well for effective TLDs such as "co.uk". type: keyword @@ -6840,7 +7945,7 @@ type: keyword *`user.id`*:: + -- -Unique identifiers of the user. +Unique identifier of the user. type: keyword @@ -6864,6 +7969,17 @@ type: text -- +*`user.roles`*:: ++ +-- +Array of user roles at the time of the event. + +type: keyword + +example: ["kibana_admin", "reporting_user"] + +-- + [float] === user_agent @@ -7002,193 +8118,463 @@ example: 12.0 -- -[float] -=== vlan +[float] +=== vlan + +The VLAN fields are used to identify 802.1q tag(s) of a packet, as well as ingress and egress VLAN associations of an observer in relation to a specific packet or connection. +Network.vlan fields are used to record a single VLAN tag, or the outer tag in the case of q-in-q encapsulations, for a packet or connection as observed, typically provided by a network sensor (e.g. Zeek, Wireshark) passively reporting on traffic. +Network.inner VLAN fields are used to report inner q-in-q 802.1q tags (multiple 802.1q encapsulations) as observed, typically provided by a network sensor (e.g. Zeek, Wireshark) passively reporting on traffic. Network.inner VLAN fields should only be used in addition to network.vlan fields to indicate q-in-q tagging. +Observer.ingress and observer.egress VLAN values are used to record observer specific information when observer events contain discrete ingress and egress VLAN information, typically provided by firewalls, routers, or load balancers. + + +*`vlan.id`*:: ++ +-- +VLAN ID as reported by the observer. + +type: keyword + +example: 10 + +-- + +*`vlan.name`*:: ++ +-- +Optional VLAN name as reported by the observer. + +type: keyword + +example: outside + +-- + +[float] +=== vulnerability + +The vulnerability fields describe information about a vulnerability that is relevant to an event. + + +*`vulnerability.category`*:: ++ +-- +The type of system or architecture that the vulnerability affects. These may be platform-specific (for example, Debian or SUSE) or general (for example, Database or Firewall). For example (https://qualysguard.qualys.com/qwebhelp/fo_portal/knowledgebase/vulnerability_categories.htm[Qualys vulnerability categories]) +This field must be an array. + +type: keyword + +example: ["Firewall"] + +-- + +*`vulnerability.classification`*:: ++ +-- +The classification of the vulnerability scoring system. For example (https://www.first.org/cvss/) + +type: keyword + +example: CVSS + +-- + +*`vulnerability.description`*:: ++ +-- +The description of the vulnerability that provides additional context of the vulnerability. For example (https://cve.mitre.org/about/faqs.html#cve_entry_descriptions_created[Common Vulnerabilities and Exposure CVE description]) + +type: keyword + +example: In macOS before 2.12.6, there is a vulnerability in the RPC... + +-- + +*`vulnerability.description.text`*:: ++ +-- +type: text + +-- + +*`vulnerability.enumeration`*:: ++ +-- +The type of identifier used for this vulnerability. For example (https://cve.mitre.org/about/) + +type: keyword + +example: CVE + +-- + +*`vulnerability.id`*:: ++ +-- +The identification (ID) is the number portion of a vulnerability entry. It includes a unique identification number for the vulnerability. For example (https://cve.mitre.org/about/faqs.html#what_is_cve_id)[Common Vulnerabilities and Exposure CVE ID] + +type: keyword + +example: CVE-2019-00001 + +-- + +*`vulnerability.reference`*:: ++ +-- +A resource that provides additional information, context, and mitigations for the identified vulnerability. + +type: keyword + +example: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-6111 + +-- + +*`vulnerability.report_id`*:: ++ +-- +The report or scan identification number. + +type: keyword + +example: 20191018.0001 + +-- + +*`vulnerability.scanner.vendor`*:: ++ +-- +The name of the vulnerability scanner vendor. + +type: keyword + +example: Tenable + +-- + +*`vulnerability.score.base`*:: ++ +-- +Scores can range from 0.0 to 10.0, with 10.0 being the most severe. +Base scores cover an assessment for exploitability metrics (attack vector, complexity, privileges, and user interaction), impact metrics (confidentiality, integrity, and availability), and scope. For example (https://www.first.org/cvss/specification-document) + +type: float + +example: 5.5 + +-- + +*`vulnerability.score.environmental`*:: ++ +-- +Scores can range from 0.0 to 10.0, with 10.0 being the most severe. +Environmental scores cover an assessment for any modified Base metrics, confidentiality, integrity, and availability requirements. For example (https://www.first.org/cvss/specification-document) + +type: float + +example: 5.5 + +-- + +*`vulnerability.score.temporal`*:: ++ +-- +Scores can range from 0.0 to 10.0, with 10.0 being the most severe. +Temporal scores cover an assessment for code maturity, remediation level, and confidence. For example (https://www.first.org/cvss/specification-document) + +type: float + +-- + +*`vulnerability.score.version`*:: ++ +-- +The National Vulnerability Database (NVD) provides qualitative severity rankings of "Low", "Medium", and "High" for CVSS v2.0 base score ranges in addition to the severity ratings for CVSS v3.0 as they are defined in the CVSS v3.0 specification. +CVSS is owned and managed by FIRST.Org, Inc. (FIRST), a US-based non-profit organization, whose mission is to help computer security incident response teams across the world. For example (https://nvd.nist.gov/vuln-metrics/cvss) + +type: keyword + +example: 2.0 + +-- + +*`vulnerability.severity`*:: ++ +-- +The severity of the vulnerability can help with metrics and internal prioritization regarding remediation. For example (https://nvd.nist.gov/vuln-metrics/cvss) + +type: keyword + +example: Critical + +-- + +[float] +=== x509 + +This implements the common core fields for x509 certificates. This information is likely logged with TLS sessions, digital signatures found in executable binaries, S/MIME information in email bodies, or analysis of files on disk. When only a single certificate is logged in an event, it should be nested under `file`. When hashes of the DER-encoded certificate are available, the `hash` data set should be populated as well (e.g. `file.hash.sha256`). For events that contain certificate information for both sides of the connection, the x509 object could be nested under the respective side of the connection information (e.g. `tls.server.x509`). + + +*`x509.alternative_names`*:: ++ +-- +List of subject alternative names (SAN). Name types vary by certificate authority and certificate type but commonly contain IP addresses, DNS names (and wildcards), and email addresses. + +type: keyword + +example: *.elastic.co + +-- + +*`x509.issuer.common_name`*:: ++ +-- +List of common name (CN) of issuing certificate authority. + +type: keyword + +example: Example SHA2 High Assurance Server CA + +-- + +*`x509.issuer.country`*:: ++ +-- +List of country (C) codes + +type: keyword + +example: US + +-- + +*`x509.issuer.distinguished_name`*:: ++ +-- +Distinguished name (DN) of issuing certificate authority. + +type: keyword + +example: C=US, O=Example Inc, OU=www.example.com, CN=Example SHA2 High Assurance Server CA + +-- + +*`x509.issuer.locality`*:: ++ +-- +List of locality names (L) + +type: keyword + +example: Mountain View + +-- + +*`x509.issuer.organization`*:: ++ +-- +List of organizations (O) of issuing certificate authority. + +type: keyword + +example: Example Inc + +-- + +*`x509.issuer.organizational_unit`*:: ++ +-- +List of organizational units (OU) of issuing certificate authority. + +type: keyword -The VLAN fields are used to identify 802.1q tag(s) of a packet, as well as ingress and egress VLAN associations of an observer in relation to a specific packet or connection. -Network.vlan fields are used to record a single VLAN tag, or the outer tag in the case of q-in-q encapsulations, for a packet or connection as observed, typically provided by a network sensor (e.g. Zeek, Wireshark) passively reporting on traffic. -Network.inner VLAN fields are used to report inner q-in-q 802.1q tags (multiple 802.1q encapsulations) as observed, typically provided by a network sensor (e.g. Zeek, Wireshark) passively reporting on traffic. Network.inner VLAN fields should only be used in addition to network.vlan fields to indicate q-in-q tagging. -Observer.ingress and observer.egress VLAN values are used to record observer specific information when observer events contain discrete ingress and egress VLAN information, typically provided by firewalls, routers, or load balancers. +example: www.example.com +-- -*`vlan.id`*:: +*`x509.issuer.state_or_province`*:: + -- -VLAN ID as reported by the observer. +List of state or province names (ST, S, or P) type: keyword -example: 10 +example: California -- -*`vlan.name`*:: +*`x509.not_after`*:: + -- -Optional VLAN name as reported by the observer. +Time at which the certificate is no longer considered valid. -type: keyword +type: date -example: outside +example: 2020-07-16 03:15:39+00:00 -- -[float] -=== vulnerability +*`x509.not_before`*:: ++ +-- +Time at which the certificate is first considered valid. -The vulnerability fields describe information about a vulnerability that is relevant to an event. +type: date + +example: 2019-08-16 01:40:25+00:00 +-- -*`vulnerability.category`*:: +*`x509.public_key_algorithm`*:: + -- -The type of system or architecture that the vulnerability affects. These may be platform-specific (for example, Debian or SUSE) or general (for example, Database or Firewall). For example (https://qualysguard.qualys.com/qwebhelp/fo_portal/knowledgebase/vulnerability_categories.htm[Qualys vulnerability categories]) -This field must be an array. +Algorithm used to generate the public key. type: keyword -example: ["Firewall"] +example: RSA -- -*`vulnerability.classification`*:: +*`x509.public_key_curve`*:: + -- -The classification of the vulnerability scoring system. For example (https://www.first.org/cvss/) +The curve used by the elliptic curve public key algorithm. This is algorithm specific. type: keyword -example: CVSS +example: nistp521 -- -*`vulnerability.description`*:: +*`x509.public_key_exponent`*:: + -- -The description of the vulnerability that provides additional context of the vulnerability. For example (https://cve.mitre.org/about/faqs.html#cve_entry_descriptions_created[Common Vulnerabilities and Exposure CVE description]) +Exponent used to derive the public key. This is algorithm specific. -type: keyword +type: long -example: In macOS before 2.12.6, there is a vulnerability in the RPC... +example: 65537 + +Field is not indexed. -- -*`vulnerability.description.text`*:: +*`x509.public_key_size`*:: + -- -type: text +The size of the public key space in bits. + +type: long + +example: 2048 -- -*`vulnerability.enumeration`*:: +*`x509.serial_number`*:: + -- -The type of identifier used for this vulnerability. For example (https://cve.mitre.org/about/) +Unique serial number issued by the certificate authority. For consistency, if this value is alphanumeric, it should be formatted without colons and uppercase characters. type: keyword -example: CVE +example: 55FBB9C7DEBF09809D12CCAA -- -*`vulnerability.id`*:: +*`x509.signature_algorithm`*:: + -- -The identification (ID) is the number portion of a vulnerability entry. It includes a unique identification number for the vulnerability. For example (https://cve.mitre.org/about/faqs.html#what_is_cve_id)[Common Vulnerabilities and Exposure CVE ID] +Identifier for certificate signature algorithm. We recommend using names found in Go Lang Crypto library. See https://github.com/golang/go/blob/go1.14/src/crypto/x509/x509.go#L337-L353. type: keyword -example: CVE-2019-00001 +example: SHA256-RSA -- -*`vulnerability.reference`*:: +*`x509.subject.common_name`*:: + -- -A resource that provides additional information, context, and mitigations for the identified vulnerability. +List of common names (CN) of subject. type: keyword -example: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-6111 +example: shared.global.example.net -- -*`vulnerability.report_id`*:: +*`x509.subject.country`*:: + -- -The report or scan identification number. +List of country (C) code type: keyword -example: 20191018.0001 +example: US -- -*`vulnerability.scanner.vendor`*:: +*`x509.subject.distinguished_name`*:: + -- -The name of the vulnerability scanner vendor. +Distinguished name (DN) of the certificate subject entity. type: keyword -example: Tenable +example: C=US, ST=California, L=San Francisco, O=Example, Inc., CN=shared.global.example.net -- -*`vulnerability.score.base`*:: +*`x509.subject.locality`*:: + -- -Scores can range from 0.0 to 10.0, with 10.0 being the most severe. -Base scores cover an assessment for exploitability metrics (attack vector, complexity, privileges, and user interaction), impact metrics (confidentiality, integrity, and availability), and scope. For example (https://www.first.org/cvss/specification-document) +List of locality names (L) -type: float +type: keyword -example: 5.5 +example: San Francisco -- -*`vulnerability.score.environmental`*:: +*`x509.subject.organization`*:: + -- -Scores can range from 0.0 to 10.0, with 10.0 being the most severe. -Environmental scores cover an assessment for any modified Base metrics, confidentiality, integrity, and availability requirements. For example (https://www.first.org/cvss/specification-document) +List of organizations (O) of subject. -type: float +type: keyword -example: 5.5 +example: Example, Inc. -- -*`vulnerability.score.temporal`*:: +*`x509.subject.organizational_unit`*:: + -- -Scores can range from 0.0 to 10.0, with 10.0 being the most severe. -Temporal scores cover an assessment for code maturity, remediation level, and confidence. For example (https://www.first.org/cvss/specification-document) +List of organizational units (OU) of subject. -type: float +type: keyword -- -*`vulnerability.score.version`*:: +*`x509.subject.state_or_province`*:: + -- -The National Vulnerability Database (NVD) provides qualitative severity rankings of "Low", "Medium", and "High" for CVSS v2.0 base score ranges in addition to the severity ratings for CVSS v3.0 as they are defined in the CVSS v3.0 specification. -CVSS is owned and managed by FIRST.Org, Inc. (FIRST), a US-based non-profit organization, whose mission is to help computer security incident response teams across the world. For example (https://nvd.nist.gov/vuln-metrics/cvss) +List of state or province names (ST, S, or P) type: keyword -example: 2.0 +example: California -- -*`vulnerability.severity`*:: +*`x509.version_number`*:: + -- -The severity of the vulnerability can help with metrics and internal prioritization regarding remediation. For example (https://nvd.nist.gov/vuln-metrics/cvss) +Version of x509 format. type: keyword -example: Critical +example: 3 -- @@ -7901,167 +9287,7 @@ type: long Detailed x509 certificate metadata - -*`tls.server.x509.alternative_names`*:: -+ --- -List of subject alternative names (SAN). Name types vary by certificate authority and certificate type but commonly contain IP addresses, DNS names (and wildcards), and email addresses. - -type: keyword - -example: *.elastic.co - --- - - -*`tls.server.x509.issuer.common_name`*:: -+ --- -List of common name (CN) of issuing certificate authority. - -type: keyword - -example: DigiCert SHA2 High Assurance Server CA - --- - -*`tls.server.x509.issuer.common_name.text`*:: -+ --- -type: text - --- - -*`tls.server.x509.issuer.distinguished_name`*:: -+ --- -Distinguished name (DN) of issuing certificate authority. - -type: keyword - -example: C=US, O=DigiCert Inc, OU=www.digicert.com, CN=DigiCert SHA2 High Assurance Server CA - --- - -*`tls.server.x509.not_after`*:: -+ --- -Time at which the certificate is no longer considered valid. - -type: date - -example: 2020-07-16 03:15:39+00:00 - --- - -*`tls.server.x509.not_before`*:: -+ --- -Time at which the certificate is first considered valid. - -type: date - -example: 2019-08-16 01:40:25+00:00 - --- - -*`tls.server.x509.public_key_algorithm`*:: -+ --- -Algorithm used to generate the public key. - -type: keyword - -example: RSA - --- - -*`tls.server.x509.public_key_curve`*:: -+ --- -The curve used by the elliptic curve public key algorithm. This is algorithm specific. - -type: keyword - -example: nistp521 - --- - -*`tls.server.x509.public_key_exponent`*:: -+ --- -Exponent used to derive the public key. This is algorithm specific. - -type: long - -example: 65537 - --- - -*`tls.server.x509.public_key_size`*:: -+ --- -The size of the public key space in bits. - -type: long - -example: 2048 - --- - -*`tls.server.x509.serial_number`*:: -+ --- -Unique serial number issued by the certificate authority. For consistency, if this value is alphanumeric, it should be formatted without colons and uppercase characters. - -type: keyword - -example: 55FBB9C7DEBF09809D12CCAA - --- - -*`tls.server.x509.signature_algorithm`*:: -+ --- -Identifier for certificate signature algorithm. Recommend using names found in Go Lang Crypto library (See https://github.com/golang/go/blob/go1.14/src/crypto/x509/x509.go#L337-L353). - -type: keyword - -example: SHA256-RSA - --- - - -*`tls.server.x509.subject.common_name`*:: -+ --- -List of common names (CN) of subject. - -type: keyword - -example: r2.shared.global.fastly.net - --- - -*`tls.server.x509.subject.common_name.text`*:: -+ --- -type: text - --- - -*`tls.server.x509.subject.distinguished_name`*:: -+ --- -Distinguished name (DN) of the certificate subject entity. - -type: keyword - -example: C=US, ST=California, L=San Francisco, O=Fastly, Inc., CN=r2.shared.global.fastly.net - --- - -*`tls.server.x509.version_number`*:: +*`tls.server.version_number`*:: + -- Version of x509 format. diff --git a/heartbeat/include/fields.go b/heartbeat/include/fields.go index 1fad4639753..194a366e067 100644 --- a/heartbeat/include/fields.go +++ b/heartbeat/include/fields.go @@ -32,5 +32,5 @@ func init() { // AssetFieldsYml returns asset data. // This is the base64 encoded gzipped contents of fields.yml. func AssetFieldsYml() string { - return "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" + return "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" } diff --git a/heartbeat/monitors/active/dialchain/_meta/fields.yml b/heartbeat/monitors/active/dialchain/_meta/fields.yml index eb7e66bd6f7..a2dd7815269 100644 --- a/heartbeat/monitors/active/dialchain/_meta/fields.yml +++ b/heartbeat/monitors/active/dialchain/_meta/fields.yml @@ -58,104 +58,6 @@ type: group description: Detailed x509 certificate metadata fields: - - name: x509 - type: group - fields: - - name: alternative_names - type: keyword - ignore_above: 1024 - description: List of subject alternative names (SAN). Name types vary by certificate - authority and certificate type but commonly contain IP addresses, DNS names - (and wildcards), and email addresses. - example: '*.elastic.co' - default_field: false - - name: issuer - type: group - fields: - - name: common_name - type: keyword - ignore_above: 1024 - description: List of common name (CN) of issuing certificate authority. - example: DigiCert SHA2 High Assurance Server CA - default_field: false - multi_fields: - - name: text - type: text - analyzer: simple - - name: distinguished_name - type: keyword - ignore_above: 1024 - description: Distinguished name (DN) of issuing certificate authority. - example: C=US, O=DigiCert Inc, OU=www.digicert.com, CN=DigiCert SHA2 High Assurance - Server CA - default_field: false - - name: not_after - type: date - description: Time at which the certificate is no longer considered valid. - example: 2020-07-16 03:15:39+00:00 - default_field: false - - name: not_before - type: date - description: Time at which the certificate is first considered valid. - example: 2019-08-16 01:40:25+00:00 - default_field: false - - name: public_key_algorithm - type: keyword - ignore_above: 1024 - description: Algorithm used to generate the public key. - example: RSA - default_field: false - - name: public_key_curve - type: keyword - ignore_above: 1024 - description: The curve used by the elliptic curve public key algorithm. This - is algorithm specific. - example: nistp521 - default_field: false - - name: public_key_exponent - type: long - description: Exponent used to derive the public key. This is algorithm specific. - example: 65537 - default_field: false - - name: public_key_size - type: long - description: The size of the public key space in bits. - example: 2048 - default_field: false - - name: serial_number - type: keyword - ignore_above: 1024 - description: Unique serial number issued by the certificate authority. For consistency, - if this value is alphanumeric, it should be formatted without colons and uppercase - characters. - example: 55FBB9C7DEBF09809D12CCAA - default_field: false - - name: signature_algorithm - type: keyword - ignore_above: 1024 - description: Identifier for certificate signature algorithm. Recommend using - names found in Go Lang Crypto library (See https://github.com/golang/go/blob/go1.14/src/crypto/x509/x509.go#L337-L353). - example: SHA256-RSA - default_field: false - - name: subject - type: group - fields: - - name: common_name - type: keyword - ignore_above: 1024 - description: List of common names (CN) of subject. - example: r2.shared.global.fastly.net - default_field: false - multi_fields: - - name: text - type: text - analyzer: simple - - name: distinguished_name - type: keyword - ignore_above: 1024 - description: Distinguished name (DN) of the certificate subject entity. - example: C=US, ST=California, L=San Francisco, O=Fastly, Inc., CN=r2.shared.global.fastly.net - default_field: false - name: version_number type: keyword ignore_above: 1024 diff --git a/journalbeat/docs/fields.asciidoc b/journalbeat/docs/fields.asciidoc index c98fa74ebc7..48ad9f758fd 100644 --- a/journalbeat/docs/fields.asciidoc +++ b/journalbeat/docs/fields.asciidoc @@ -93,16 +93,6 @@ Metadata from cloud providers added by the add_cloud_metadata processor. -*`cloud.project.id`*:: -+ --- -Name of the project in Google Cloud. - - -example: project-x - --- - *`cloud.image.id`*:: + -- @@ -985,6 +975,18 @@ The agent fields contain the data about the software entity, if any, that collec Examples include Beats. Agents may also run on observers. ECS agent.* fields shall be populated with details of the agent running on the host or observer where the event happened or the measurement was taken. +*`agent.build.original`*:: ++ +-- +Extended build information for the agent. +This field is intended to contain any build information that a data source may provide, no specific formatting is required. + +type: keyword + +example: metricbeat version 7.6.0 (amd64), libbeat 7.6.0 [6a23e8f8f30f5001ba344e4e54d8d9cb82cb107c built 2020-02-05 23:10:10 +0000 UTC] + +-- + *`agent.ephemeral_id`*:: + -- @@ -1026,7 +1028,7 @@ example: foo + -- Type of the agent. -The agent type stays always the same and should be given by the agent used. In case of Filebeat the agent would always be Filebeat also if two Filebeat instances are run on the same machine. +The agent type always stays the same and should be given by the agent used. In case of Filebeat the agent would always be Filebeat also if two Filebeat instances are run on the same machine. type: keyword @@ -1242,8 +1244,7 @@ example: Quebec *`client.ip`*:: + -- -IP address of the client. -Can be one or multiple IPv4 or IPv6 addresses. +IP address of the client (IPv4 or IPv6). type: ip @@ -1306,19 +1307,19 @@ format: string + -- The highest registered client domain, stripped of the subdomain. -For example, the registered domain for "foo.google.com" is "google.com". +For example, the registered domain for "foo.example.com" is "example.com". This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last two labels will not work well for TLDs such as "co.uk". type: keyword -example: google.com +example: example.com -- *`client.top_level_domain`*:: + -- -The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for google.com is "com". +The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for example.com is "com". This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last label will not work well for effective TLDs such as "co.uk". type: keyword @@ -1405,7 +1406,7 @@ type: keyword *`client.user.id`*:: + -- -Unique identifiers of the user. +Unique identifier of the user. type: keyword @@ -1429,6 +1430,17 @@ type: text -- +*`client.user.roles`*:: ++ +-- +Array of user roles at the time of the event. + +type: keyword + +example: ["kibana_admin", "reporting_user"] + +-- + [float] === cloud @@ -1447,6 +1459,18 @@ example: 666777888999 -- +*`cloud.account.name`*:: ++ +-- +The cloud account name or alias used to identify different entities in a multi-tenant environment. +Examples: AWS account name, Google Cloud ORG display name. + +type: keyword + +example: elastic-dev + +-- + *`cloud.availability_zone`*:: + -- @@ -1489,6 +1513,30 @@ example: t2.medium -- +*`cloud.project.id`*:: ++ +-- +The cloud project identifier. +Examples: Google Cloud Project id, Azure Project id. + +type: keyword + +example: my-project + +-- + +*`cloud.project.name`*:: ++ +-- +The cloud project name. +Examples: Google Cloud Project name, Azure Project name. + +type: keyword + +example: my project + +-- + *`cloud.provider`*:: + -- @@ -1799,8 +1847,7 @@ example: Quebec *`destination.ip`*:: + -- -IP address of the destination. -Can be one or multiple IPv4 or IPv6 addresses. +IP address of the destination (IPv4 or IPv6). type: ip @@ -1863,19 +1910,19 @@ format: string + -- The highest registered destination domain, stripped of the subdomain. -For example, the registered domain for "foo.google.com" is "google.com". +For example, the registered domain for "foo.example.com" is "example.com". This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last two labels will not work well for TLDs such as "co.uk". type: keyword -example: google.com +example: example.com -- *`destination.top_level_domain`*:: + -- -The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for google.com is "com". +The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for example.com is "com". This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last label will not work well for effective TLDs such as "co.uk". type: keyword @@ -1962,7 +2009,7 @@ type: keyword *`destination.user.id`*:: + -- -Unique identifiers of the user. +Unique identifier of the user. type: keyword @@ -1986,6 +2033,17 @@ type: text -- +*`destination.user.roles`*:: ++ +-- +Array of user roles at the time of the event. + +type: keyword + +example: ["kibana_admin", "reporting_user"] + +-- + [float] === dll @@ -2114,6 +2172,17 @@ example: C:\Windows\System32\kernel32.dll -- +*`dll.pe.architecture`*:: ++ +-- +CPU architecture target for the file. + +type: keyword + +example: x64 + +-- + *`dll.pe.company`*:: + -- @@ -2147,6 +2216,18 @@ example: 6.3.9600.17415 -- +*`dll.pe.imphash`*:: ++ +-- +A hash of the imports in a PE file. An imphash -- or import hash -- can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. +Learn more at https://www.fireeye.com/blog/threat-research/2014/01/tracking-malware-import-hashing.html. + +type: keyword + +example: 0c6803c4e922103c4dca5963aad36ddf + +-- + *`dll.pe.original_file_name`*:: + -- @@ -2218,7 +2299,7 @@ If a chain of CNAME is being resolved, each answer's `name` should be the one th type: keyword -example: www.google.com +example: www.example.com -- @@ -2297,7 +2378,7 @@ If the name field contains non-printable characters (below 32 or above 126), tho type: keyword -example: www.google.com +example: www.example.com -- @@ -2305,12 +2386,12 @@ example: www.google.com + -- The highest registered domain, stripped of the subdomain. -For example, the registered domain for "foo.google.com" is "google.com". +For example, the registered domain for "foo.example.com" is "example.com". This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last two labels will not work well for TLDs such as "co.uk". type: keyword -example: google.com +example: example.com -- @@ -2329,7 +2410,7 @@ example: www *`dns.question.top_level_domain`*:: + -- -The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for google.com is "com". +The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for example.com is "com". This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last label will not work well for effective TLDs such as "co.uk". type: keyword @@ -2446,6 +2527,8 @@ The stack trace of this error in plain text. type: keyword +Field is not indexed. + -- *`error.stack_trace.text`*:: @@ -2628,6 +2711,8 @@ type: keyword example: Sep 19 08:26:10 host CEF:0|Security| threatmanager|1.0|100| worm successfully stopped|10|src=10.0.0.1 dst=2.1.2.2spt=1232 +Field is not indexed. + -- *`event.outcome`*:: @@ -2657,6 +2742,18 @@ example: kernel -- +*`event.reason`*:: ++ +-- +Reason why this event happened, according to the source. +This describes the why of a particular action or outcome captured in the event. Where `event.action` captures the action from the event, `event.reason` describes why that action was taken. For example, a web proxy with an `event.action` which denied the request may also populate `event.reason` with the reason why (e.g. `blocked site`). + +type: keyword + +example: Terminated an unexpected process + +-- + *`event.reference`*:: + -- @@ -2665,7 +2762,7 @@ This URL links to a static definition of the this event. Alert events, indicated type: keyword -example: https://system.vendor.com/event/#0001234 +example: https://system.example.com/event/#0001234 -- @@ -2749,11 +2846,11 @@ type: keyword + -- URL linking to an external system to continue investigation of this event. -This URL links to another system where in-depth investigation of the specific occurence of this event can take place. Alert events, indicated by `event.kind:alert`, are a common use case for this field. +This URL links to another system where in-depth investigation of the specific occurrence of this event can take place. Alert events, indicated by `event.kind:alert`, are a common use case for this field. type: keyword -example: https://mysystem.mydomain.com/alert/5271dedb-f5b0-4218-87f0-4ac4870a38fe +example: https://mysystem.example.com/alert/5271dedb-f5b0-4218-87f0-4ac4870a38fe -- @@ -3047,6 +3144,17 @@ type: text -- +*`file.pe.architecture`*:: ++ +-- +CPU architecture target for the file. + +type: keyword + +example: x64 + +-- + *`file.pe.company`*:: + -- @@ -3080,6 +3188,18 @@ example: 6.3.9600.17415 -- +*`file.pe.imphash`*:: ++ +-- +A hash of the imports in a PE file. An imphash -- or import hash -- can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. +Learn more at https://www.fireeye.com/blog/threat-research/2014/01/tracking-malware-import-hashing.html. + +type: keyword + +example: 0c6803c4e922103c4dca5963aad36ddf + +-- + *`file.pe.original_file_name`*:: + -- @@ -3152,211 +3272,278 @@ example: 1001 -- -[float] -=== geo +*`file.x509.alternative_names`*:: ++ +-- +List of subject alternative names (SAN). Name types vary by certificate authority and certificate type but commonly contain IP addresses, DNS names (and wildcards), and email addresses. -Geo fields can carry data about a specific location related to an event. -This geolocation information can be derived from techniques such as Geo IP, or be user-supplied. +type: keyword +example: *.elastic.co -*`geo.city_name`*:: +-- + +*`file.x509.issuer.common_name`*:: + -- -City name. +List of common name (CN) of issuing certificate authority. type: keyword -example: Montreal +example: Example SHA2 High Assurance Server CA -- -*`geo.continent_name`*:: +*`file.x509.issuer.country`*:: + -- -Name of the continent. +List of country (C) codes type: keyword -example: North America +example: US -- -*`geo.country_iso_code`*:: +*`file.x509.issuer.distinguished_name`*:: + -- -Country ISO code. +Distinguished name (DN) of issuing certificate authority. type: keyword -example: CA +example: C=US, O=Example Inc, OU=www.example.com, CN=Example SHA2 High Assurance Server CA -- -*`geo.country_name`*:: +*`file.x509.issuer.locality`*:: + -- -Country name. +List of locality names (L) type: keyword -example: Canada +example: Mountain View -- -*`geo.location`*:: +*`file.x509.issuer.organization`*:: + -- -Longitude and latitude. +List of organizations (O) of issuing certificate authority. -type: geo_point +type: keyword -example: { "lon": -73.614830, "lat": 45.505918 } +example: Example Inc -- -*`geo.name`*:: +*`file.x509.issuer.organizational_unit`*:: + -- -User-defined description of a location, at the level of granularity they care about. -Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. -Not typically used in automated geolocation. +List of organizational units (OU) of issuing certificate authority. type: keyword -example: boston-dc +example: www.example.com -- -*`geo.region_iso_code`*:: +*`file.x509.issuer.state_or_province`*:: + -- -Region ISO code. +List of state or province names (ST, S, or P) type: keyword -example: CA-QC +example: California -- -*`geo.region_name`*:: +*`file.x509.not_after`*:: + -- -Region name. +Time at which the certificate is no longer considered valid. -type: keyword +type: date -example: Quebec +example: 2020-07-16 03:15:39+00:00 -- -[float] -=== group +*`file.x509.not_before`*:: ++ +-- +Time at which the certificate is first considered valid. -The group fields are meant to represent groups that are relevant to the event. +type: date +example: 2019-08-16 01:40:25+00:00 -*`group.domain`*:: +-- + +*`file.x509.public_key_algorithm`*:: + -- -Name of the directory the group is a member of. -For example, an LDAP or Active Directory domain name. +Algorithm used to generate the public key. type: keyword +example: RSA + -- -*`group.id`*:: +*`file.x509.public_key_curve`*:: + -- -Unique identifier for the group on the system/platform. +The curve used by the elliptic curve public key algorithm. This is algorithm specific. type: keyword +example: nistp521 + -- -*`group.name`*:: +*`file.x509.public_key_exponent`*:: + -- -Name of the group. +Exponent used to derive the public key. This is algorithm specific. + +type: long + +example: 65537 + +Field is not indexed. + +-- + +*`file.x509.public_key_size`*:: ++ +-- +The size of the public key space in bits. + +type: long + +example: 2048 + +-- + +*`file.x509.serial_number`*:: ++ +-- +Unique serial number issued by the certificate authority. For consistency, if this value is alphanumeric, it should be formatted without colons and uppercase characters. type: keyword +example: 55FBB9C7DEBF09809D12CCAA + -- -[float] -=== hash +*`file.x509.signature_algorithm`*:: ++ +-- +Identifier for certificate signature algorithm. We recommend using names found in Go Lang Crypto library. See https://github.com/golang/go/blob/go1.14/src/crypto/x509/x509.go#L337-L353. -The hash fields represent different hash algorithms and their values. -Field names for common hashes (e.g. MD5, SHA1) are predefined. Add fields for other hashes by lowercasing the hash algorithm name and using underscore separators as appropriate (snake case, e.g. sha3_512). +type: keyword +example: SHA256-RSA -*`hash.md5`*:: +-- + +*`file.x509.subject.common_name`*:: + -- -MD5 hash. +List of common names (CN) of subject. type: keyword +example: shared.global.example.net + -- -*`hash.sha1`*:: +*`file.x509.subject.country`*:: + -- -SHA1 hash. +List of country (C) code type: keyword +example: US + -- -*`hash.sha256`*:: +*`file.x509.subject.distinguished_name`*:: + -- -SHA256 hash. +Distinguished name (DN) of the certificate subject entity. type: keyword +example: C=US, ST=California, L=San Francisco, O=Example, Inc., CN=shared.global.example.net + -- -*`hash.sha512`*:: +*`file.x509.subject.locality`*:: + -- -SHA512 hash. +List of locality names (L) type: keyword +example: San Francisco + -- -[float] -=== host +*`file.x509.subject.organization`*:: ++ +-- +List of organizations (O) of subject. -A host is defined as a general computing instance. -ECS host.* fields should be populated with details about the host on which the event happened, or from which the measurement was taken. Host types include hardware, virtual machines, Docker containers, and Kubernetes nodes. +type: keyword +example: Example, Inc. -*`host.architecture`*:: +-- + +*`file.x509.subject.organizational_unit`*:: + -- -Operating system architecture. +List of organizational units (OU) of subject. type: keyword -example: x86_64 +-- + +*`file.x509.subject.state_or_province`*:: ++ +-- +List of state or province names (ST, S, or P) + +type: keyword + +example: California -- -*`host.domain`*:: +*`file.x509.version_number`*:: + -- -Name of the domain of which the host is a member. -For example, on Windows this could be the host's Active Directory domain or NetBIOS domain name. For Linux this could be the domain of the host's LDAP provider. +Version of x509 format. type: keyword -example: CONTOSO +example: 3 -- -*`host.geo.city_name`*:: +[float] +=== geo + +Geo fields can carry data about a specific location related to an event. +This geolocation information can be derived from techniques such as Geo IP, or be user-supplied. + + +*`geo.city_name`*:: + -- City name. @@ -3367,7 +3554,7 @@ example: Montreal -- -*`host.geo.continent_name`*:: +*`geo.continent_name`*:: + -- Name of the continent. @@ -3378,7 +3565,7 @@ example: North America -- -*`host.geo.country_iso_code`*:: +*`geo.country_iso_code`*:: + -- Country ISO code. @@ -3389,7 +3576,7 @@ example: CA -- -*`host.geo.country_name`*:: +*`geo.country_name`*:: + -- Country name. @@ -3400,7 +3587,7 @@ example: Canada -- -*`host.geo.location`*:: +*`geo.location`*:: + -- Longitude and latitude. @@ -3411,7 +3598,7 @@ example: { "lon": -73.614830, "lat": 45.505918 } -- -*`host.geo.name`*:: +*`geo.name`*:: + -- User-defined description of a location, at the level of granularity they care about. @@ -3424,7 +3611,7 @@ example: boston-dc -- -*`host.geo.region_iso_code`*:: +*`geo.region_iso_code`*:: + -- Region ISO code. @@ -3435,7 +3622,7 @@ example: CA-QC -- -*`host.geo.region_name`*:: +*`geo.region_name`*:: + -- Region name. @@ -3446,20 +3633,217 @@ example: Quebec -- -*`host.hostname`*:: +[float] +=== group + +The group fields are meant to represent groups that are relevant to the event. + + +*`group.domain`*:: + -- -Hostname of the host. -It normally contains what the `hostname` command returns on the host machine. +Name of the directory the group is a member of. +For example, an LDAP or Active Directory domain name. type: keyword -- -*`host.id`*:: +*`group.id`*:: + -- -Unique host id. +Unique identifier for the group on the system/platform. + +type: keyword + +-- + +*`group.name`*:: ++ +-- +Name of the group. + +type: keyword + +-- + +[float] +=== hash + +The hash fields represent different hash algorithms and their values. +Field names for common hashes (e.g. MD5, SHA1) are predefined. Add fields for other hashes by lowercasing the hash algorithm name and using underscore separators as appropriate (snake case, e.g. sha3_512). + + +*`hash.md5`*:: ++ +-- +MD5 hash. + +type: keyword + +-- + +*`hash.sha1`*:: ++ +-- +SHA1 hash. + +type: keyword + +-- + +*`hash.sha256`*:: ++ +-- +SHA256 hash. + +type: keyword + +-- + +*`hash.sha512`*:: ++ +-- +SHA512 hash. + +type: keyword + +-- + +[float] +=== host + +A host is defined as a general computing instance. +ECS host.* fields should be populated with details about the host on which the event happened, or from which the measurement was taken. Host types include hardware, virtual machines, Docker containers, and Kubernetes nodes. + + +*`host.architecture`*:: ++ +-- +Operating system architecture. + +type: keyword + +example: x86_64 + +-- + +*`host.domain`*:: ++ +-- +Name of the domain of which the host is a member. +For example, on Windows this could be the host's Active Directory domain or NetBIOS domain name. For Linux this could be the domain of the host's LDAP provider. + +type: keyword + +example: CONTOSO + +-- + +*`host.geo.city_name`*:: ++ +-- +City name. + +type: keyword + +example: Montreal + +-- + +*`host.geo.continent_name`*:: ++ +-- +Name of the continent. + +type: keyword + +example: North America + +-- + +*`host.geo.country_iso_code`*:: ++ +-- +Country ISO code. + +type: keyword + +example: CA + +-- + +*`host.geo.country_name`*:: ++ +-- +Country name. + +type: keyword + +example: Canada + +-- + +*`host.geo.location`*:: ++ +-- +Longitude and latitude. + +type: geo_point + +example: { "lon": -73.614830, "lat": 45.505918 } + +-- + +*`host.geo.name`*:: ++ +-- +User-defined description of a location, at the level of granularity they care about. +Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. +Not typically used in automated geolocation. + +type: keyword + +example: boston-dc + +-- + +*`host.geo.region_iso_code`*:: ++ +-- +Region ISO code. + +type: keyword + +example: CA-QC + +-- + +*`host.geo.region_name`*:: ++ +-- +Region name. + +type: keyword + +example: Quebec + +-- + +*`host.hostname`*:: ++ +-- +Hostname of the host. +It normally contains what the `hostname` command returns on the host machine. + +type: keyword + +-- + +*`host.id`*:: ++ +-- +Unique host id. As hostname is not always unique, use values that are meaningful in your environment. Example: The current usage of `beat.name`. @@ -3674,7 +4058,7 @@ type: keyword *`host.user.id`*:: + -- -Unique identifiers of the user. +Unique identifier of the user. type: keyword @@ -3698,6 +4082,17 @@ type: text -- +*`host.user.roles`*:: ++ +-- +Array of user roles at the time of the event. + +type: keyword + +example: ["kibana_admin", "reporting_user"] + +-- + [float] === http @@ -3752,11 +4147,13 @@ format: bytes + -- HTTP request method. -The field value must be normalized to lowercase for querying. See the documentation section "Implementing ECS". +Prior to ECS 1.6.0 the following guidance was provided: +"The field value must be normalized to lowercase for querying." +As of ECS 1.6.0, the guidance is deprecated because the original case of the method may be useful in anomaly detection. Original case will be mandated in ECS 2.0.0 type: keyword -example: get, post, put +example: GET, POST, PUT, PoST -- @@ -3886,6 +4283,18 @@ The log.* fields are typically populated with details about the logging mechanis The details specific to your event source are typically not logged under `log.*`, but rather in `event.*` or in other ECS fields. +*`log.file.path`*:: ++ +-- +Full path to the log file this event came from, including the file name. It should include the drive letter, when appropriate. +If the event wasn't read from a log file, do not populate this field. + +type: keyword + +example: /var/log/fun-times.log + +-- + *`log.level`*:: + -- @@ -3924,7 +4333,8 @@ example: 42 *`log.origin.file.name`*:: + -- -The name of the file containing the source code which originated the log event. Note that this is not the name of the log file. +The name of the file containing the source code which originated the log event. +Note that this field is not meant to capture the log file. The correct field to capture the log file is `log.file.path`. type: keyword @@ -3954,6 +4364,8 @@ type: keyword example: Sep 19 08:26:10 localhost My log +Field is not indexed. + -- *`log.syslog`*:: @@ -4922,6 +5334,17 @@ example: 1.12.9 These fields contain Windows Portable Executable (PE) metadata. +*`pe.architecture`*:: ++ +-- +CPU architecture target for the file. + +type: keyword + +example: x64 + +-- + *`pe.company`*:: + -- @@ -4955,6 +5378,18 @@ example: 6.3.9600.17415 -- +*`pe.imphash`*:: ++ +-- +A hash of the imports in a PE file. An imphash -- or import hash -- can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. +Learn more at https://www.fireeye.com/blog/threat-research/2014/01/tracking-malware-import-hashing.html. + +type: keyword + +example: 0c6803c4e922103c4dca5963aad36ddf + +-- + *`pe.original_file_name`*:: + -- @@ -5186,12 +5621,12 @@ type: text *`process.parent.args`*:: + -- -Array of process arguments. +Array of process arguments, starting with the absolute path to the executable. May be filtered to protect sensitive information. type: keyword -example: ['ssh', '-l', 'user', '10.0.0.16'] +example: ['/usr/bin/ssh', '-l', 'user', '10.0.0.16'] -- @@ -5382,49 +5817,127 @@ type: text -- -*`process.parent.pgid`*:: +*`process.parent.pe.architecture`*:: + -- -Identifier of the group of processes the process belongs to. +CPU architecture target for the file. -type: long +type: keyword -format: string +example: x64 -- -*`process.parent.pid`*:: +*`process.parent.pe.company`*:: + -- -Process id. - -type: long +Internal company name of the file, provided at compile-time. -example: 4242 +type: keyword -format: string +example: Microsoft Corporation -- -*`process.parent.ppid`*:: +*`process.parent.pe.description`*:: + -- -Parent process' pid. - -type: long +Internal description of the file, provided at compile-time. -example: 4241 +type: keyword -format: string +example: Paint -- -*`process.parent.start`*:: +*`process.parent.pe.file_version`*:: + -- -The time the process started. +Internal version of the file, provided at compile-time. -type: date +type: keyword + +example: 6.3.9600.17415 + +-- + +*`process.parent.pe.imphash`*:: ++ +-- +A hash of the imports in a PE file. An imphash -- or import hash -- can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. +Learn more at https://www.fireeye.com/blog/threat-research/2014/01/tracking-malware-import-hashing.html. + +type: keyword + +example: 0c6803c4e922103c4dca5963aad36ddf + +-- + +*`process.parent.pe.original_file_name`*:: ++ +-- +Internal name of the file, provided at compile-time. + +type: keyword + +example: MSPAINT.EXE + +-- + +*`process.parent.pe.product`*:: ++ +-- +Internal product name of the file, provided at compile-time. + +type: keyword + +example: Microsoft® Windows® Operating System + +-- + +*`process.parent.pgid`*:: ++ +-- +Identifier of the group of processes the process belongs to. + +type: long + +format: string + +-- + +*`process.parent.pid`*:: ++ +-- +Process id. + +type: long + +example: 4242 + +format: string + +-- + +*`process.parent.ppid`*:: ++ +-- +Parent process' pid. + +type: long + +example: 4241 + +format: string + +-- + +*`process.parent.start`*:: ++ +-- +The time the process started. + +type: date example: 2016-05-23T08:05:34.853Z @@ -5500,6 +6013,17 @@ type: text -- +*`process.pe.architecture`*:: ++ +-- +CPU architecture target for the file. + +type: keyword + +example: x64 + +-- + *`process.pe.company`*:: + -- @@ -5533,6 +6057,18 @@ example: 6.3.9600.17415 -- +*`process.pe.imphash`*:: ++ +-- +A hash of the imports in a PE file. An imphash -- or import hash -- can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. +Learn more at https://www.fireeye.com/blog/threat-research/2014/01/tracking-malware-import-hashing.html. + +type: keyword + +example: 0c6803c4e922103c4dca5963aad36ddf + +-- + *`process.pe.original_file_name`*:: + -- @@ -5775,6 +6311,15 @@ type: keyword -- +*`related.hosts`*:: ++ +-- +All hostnames or other host identifiers seen on your event. Example identifiers include FQDNs, domain names, workstation names, or aliases. + +type: keyword + +-- + *`related.ip`*:: + -- @@ -6073,8 +6618,7 @@ example: Quebec *`server.ip`*:: + -- -IP address of the server. -Can be one or multiple IPv4 or IPv6 addresses. +IP address of the server (IPv4 or IPv6). type: ip @@ -6137,19 +6681,19 @@ format: string + -- The highest registered server domain, stripped of the subdomain. -For example, the registered domain for "foo.google.com" is "google.com". +For example, the registered domain for "foo.example.com" is "example.com". This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last two labels will not work well for TLDs such as "co.uk". type: keyword -example: google.com +example: example.com -- *`server.top_level_domain`*:: + -- -The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for google.com is "com". +The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for example.com is "com". This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last label will not work well for effective TLDs such as "co.uk". type: keyword @@ -6236,7 +6780,7 @@ type: keyword *`server.user.id`*:: + -- -Unique identifiers of the user. +Unique identifier of the user. type: keyword @@ -6260,6 +6804,17 @@ type: text -- +*`server.user.roles`*:: ++ +-- +Array of user roles at the time of the event. + +type: keyword + +example: ["kibana_admin", "reporting_user"] + +-- + [float] === service @@ -6513,8 +7068,7 @@ example: Quebec *`source.ip`*:: + -- -IP address of the source. -Can be one or multiple IPv4 or IPv6 addresses. +IP address of the source (IPv4 or IPv6). type: ip @@ -6577,19 +7131,19 @@ format: string + -- The highest registered source domain, stripped of the subdomain. -For example, the registered domain for "foo.google.com" is "google.com". +For example, the registered domain for "foo.example.com" is "example.com". This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last two labels will not work well for TLDs such as "co.uk". type: keyword -example: google.com +example: example.com -- *`source.top_level_domain`*:: + -- -The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for google.com is "com". +The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for example.com is "com". This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last label will not work well for effective TLDs such as "co.uk". type: keyword @@ -6676,7 +7230,7 @@ type: keyword *`source.user.id`*:: + -- -Unique identifiers of the user. +Unique identifier of the user. type: keyword @@ -6700,10 +7254,21 @@ type: text -- +*`source.user.roles`*:: ++ +-- +Array of user roles at the time of the event. + +type: keyword + +example: ["kibana_admin", "reporting_user"] + +-- + [float] === threat -Fields to classify events and alerts according to a threat taxonomy such as the Mitre ATT&CK framework. +Fields to classify events and alerts according to a threat taxonomy such as the MITRE ATT&CK® framework. These fields are for users to classify alerts from all of their sources (e.g. IDS, NGFW, etc.) within a common taxonomy. The threat.tactic.* are meant to capture the high level category of the threat (e.g. "impact"). The threat.technique.* fields are meant to capture which kind of approach is used by this detected threat, to accomplish the goal (e.g. "endpoint denial of service"). @@ -6721,7 +7286,7 @@ example: MITRE ATT&CK *`threat.tactic.id`*:: + -- -The id of tactic used by this threat. You can use the Mitre ATT&CK Matrix Tactic categorization, for example. (ex. https://attack.mitre.org/tactics/TA0040/ ) +The id of tactic used by this threat. You can use a MITRE ATT&CK® tactic, for example. (ex. https://attack.mitre.org/tactics/TA0040/ ) type: keyword @@ -6732,7 +7297,7 @@ example: TA0040 *`threat.tactic.name`*:: + -- -Name of the type of tactic used by this threat. You can use the Mitre ATT&CK Matrix Tactic categorization, for example. (ex. https://attack.mitre.org/tactics/TA0040/ ) +Name of the type of tactic used by this threat. You can use a MITRE ATT&CK® tactic, for example. (ex. https://attack.mitre.org/tactics/TA0040/) type: keyword @@ -6743,7 +7308,7 @@ example: impact *`threat.tactic.reference`*:: + -- -The reference url of tactic used by this threat. You can use the Mitre ATT&CK Matrix Tactic categorization, for example. (ex. https://attack.mitre.org/tactics/TA0040/ ) +The reference url of tactic used by this threat. You can use a MITRE ATT&CK® tactic, for example. (ex. https://attack.mitre.org/tactics/TA0040/ ) type: keyword @@ -6754,7 +7319,7 @@ example: https://attack.mitre.org/tactics/TA0040/ *`threat.technique.id`*:: + -- -The id of technique used by this tactic. You can use the Mitre ATT&CK Matrix Tactic categorization, for example. (ex. https://attack.mitre.org/techniques/T1499/ ) +The id of technique used by this threat. You can use a MITRE ATT&CK® technique, for example. (ex. https://attack.mitre.org/techniques/T1499/) type: keyword @@ -6765,11 +7330,11 @@ example: T1499 *`threat.technique.name`*:: + -- -The name of technique used by this tactic. You can use the Mitre ATT&CK Matrix Tactic categorization, for example. (ex. https://attack.mitre.org/techniques/T1499/ ) +The name of technique used by this threat. You can use a MITRE ATT&CK® technique, for example. (ex. https://attack.mitre.org/techniques/T1499/) type: keyword -example: endpoint denial of service +example: Endpoint Denial of Service -- @@ -6783,7 +7348,7 @@ type: text *`threat.technique.reference`*:: + -- -The reference url of technique used by this tactic. You can use the Mitre ATT&CK Matrix Tactic categorization, for example. (ex. https://attack.mitre.org/techniques/T1499/ ) +The reference url of technique used by this threat. You can use a MITRE ATT&CK® technique, for example. (ex. https://attack.mitre.org/techniques/T1499/ ) type: keyword @@ -6870,7 +7435,7 @@ Distinguished name of subject of the issuer of the x.509 certificate presented b type: keyword -example: CN=MyDomain Root CA, OU=Infrastructure Team, DC=mydomain, DC=com +example: CN=Example Root CA, OU=Infrastructure Team, DC=example, DC=com -- @@ -6910,7 +7475,7 @@ example: 1970-01-01T00:00:00.000Z *`tls.client.server_name`*:: + -- -Also called an SNI, this tells the server which hostname to which the client is attempting to connect. When this value is available, it should get copied to `destination.domain`. +Also called an SNI, this tells the server which hostname to which the client is attempting to connect to. When this value is available, it should get copied to `destination.domain`. type: keyword @@ -6925,7 +7490,7 @@ Distinguished name of subject of the x.509 certificate presented by the client. type: keyword -example: CN=myclient, OU=Documentation Team, DC=mydomain, DC=com +example: CN=myclient, OU=Documentation Team, DC=example, DC=com -- @@ -6940,319 +7505,859 @@ example: ['TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384', 'TLS_ECDHE_ECDSA_WITH_AES_256 -- -*`tls.curve`*:: +*`tls.client.x509.alternative_names`*:: + -- -String indicating the curve used for the given cipher, when applicable. +List of subject alternative names (SAN). Name types vary by certificate authority and certificate type but commonly contain IP addresses, DNS names (and wildcards), and email addresses. type: keyword -example: secp256r1 +example: *.elastic.co -- -*`tls.established`*:: +*`tls.client.x509.issuer.common_name`*:: + -- -Boolean flag indicating if the TLS negotiation was successful and transitioned to an encrypted tunnel. +List of common name (CN) of issuing certificate authority. -type: boolean +type: keyword + +example: Example SHA2 High Assurance Server CA -- -*`tls.next_protocol`*:: +*`tls.client.x509.issuer.country`*:: + -- -String indicating the protocol being tunneled. Per the values in the IANA registry (https://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml#alpn-protocol-ids), this string should be lower case. +List of country (C) codes type: keyword -example: http/1.1 +example: US -- -*`tls.resumed`*:: +*`tls.client.x509.issuer.distinguished_name`*:: + -- -Boolean flag indicating if this TLS connection was resumed from an existing TLS negotiation. +Distinguished name (DN) of issuing certificate authority. -type: boolean +type: keyword + +example: C=US, O=Example Inc, OU=www.example.com, CN=Example SHA2 High Assurance Server CA -- -*`tls.server.certificate`*:: +*`tls.client.x509.issuer.locality`*:: + -- -PEM-encoded stand-alone certificate offered by the server. This is usually mutually-exclusive of `server.certificate_chain` since this value also exists in that list. +List of locality names (L) type: keyword -example: MII... +example: Mountain View -- -*`tls.server.certificate_chain`*:: +*`tls.client.x509.issuer.organization`*:: + -- -Array of PEM-encoded certificates that make up the certificate chain offered by the server. This is usually mutually-exclusive of `server.certificate` since that value should be the first certificate in the chain. +List of organizations (O) of issuing certificate authority. type: keyword -example: ['MII...', 'MII...'] +example: Example Inc -- -*`tls.server.hash.md5`*:: +*`tls.client.x509.issuer.organizational_unit`*:: + -- -Certificate fingerprint using the MD5 digest of DER-encoded version of certificate offered by the server. For consistency with other hash values, this value should be formatted as an uppercase hash. +List of organizational units (OU) of issuing certificate authority. type: keyword -example: 0F76C7F2C55BFD7D8E8B8F4BFBF0C9EC +example: www.example.com -- -*`tls.server.hash.sha1`*:: +*`tls.client.x509.issuer.state_or_province`*:: + -- -Certificate fingerprint using the SHA1 digest of DER-encoded version of certificate offered by the server. For consistency with other hash values, this value should be formatted as an uppercase hash. +List of state or province names (ST, S, or P) type: keyword -example: 9E393D93138888D288266C2D915214D1D1CCEB2A +example: California -- -*`tls.server.hash.sha256`*:: +*`tls.client.x509.not_after`*:: + -- -Certificate fingerprint using the SHA256 digest of DER-encoded version of certificate offered by the server. For consistency with other hash values, this value should be formatted as an uppercase hash. +Time at which the certificate is no longer considered valid. -type: keyword +type: date -example: 0687F666A054EF17A08E2F2162EAB4CBC0D265E1D7875BE74BF3C712CA92DAF0 +example: 2020-07-16 03:15:39+00:00 -- -*`tls.server.issuer`*:: +*`tls.client.x509.not_before`*:: + -- -Subject of the issuer of the x.509 certificate presented by the server. +Time at which the certificate is first considered valid. -type: keyword +type: date -example: CN=MyDomain Root CA, OU=Infrastructure Team, DC=mydomain, DC=com +example: 2019-08-16 01:40:25+00:00 -- -*`tls.server.ja3s`*:: +*`tls.client.x509.public_key_algorithm`*:: + -- -A hash that identifies servers based on how they perform an SSL/TLS handshake. +Algorithm used to generate the public key. type: keyword -example: 394441ab65754e2207b1e1b457b3641d +example: RSA -- -*`tls.server.not_after`*:: +*`tls.client.x509.public_key_curve`*:: + -- -Timestamp indicating when server certificate is no longer considered valid. +The curve used by the elliptic curve public key algorithm. This is algorithm specific. -type: date +type: keyword -example: 2021-01-01T00:00:00.000Z +example: nistp521 -- -*`tls.server.not_before`*:: +*`tls.client.x509.public_key_exponent`*:: + -- -Timestamp indicating when server certificate is first considered valid. +Exponent used to derive the public key. This is algorithm specific. -type: date +type: long -example: 1970-01-01T00:00:00.000Z +example: 65537 + +Field is not indexed. -- -*`tls.server.subject`*:: +*`tls.client.x509.public_key_size`*:: + -- -Subject of the x.509 certificate presented by the server. +The size of the public key space in bits. -type: keyword +type: long -example: CN=www.mydomain.com, OU=Infrastructure Team, DC=mydomain, DC=com +example: 2048 -- -*`tls.version`*:: +*`tls.client.x509.serial_number`*:: + -- -Numeric part of the version parsed from the original string. +Unique serial number issued by the certificate authority. For consistency, if this value is alphanumeric, it should be formatted without colons and uppercase characters. type: keyword -example: 1.2 +example: 55FBB9C7DEBF09809D12CCAA -- -*`tls.version_protocol`*:: +*`tls.client.x509.signature_algorithm`*:: + -- -Normalized lowercase protocol name parsed from original string. +Identifier for certificate signature algorithm. We recommend using names found in Go Lang Crypto library. See https://github.com/golang/go/blob/go1.14/src/crypto/x509/x509.go#L337-L353. type: keyword -example: tls +example: SHA256-RSA -- -[float] -=== tracing - -Distributed tracing makes it possible to analyze performance throughout a microservice architecture all in one view. This is accomplished by tracing all of the requests - from the initial web request in the front-end service - to queries made through multiple back-end services. - - -*`tracing.trace.id`*:: +*`tls.client.x509.subject.common_name`*:: + -- -Unique identifier of the trace. -A trace groups multiple events like transactions that belong together. For example, a user request handled by multiple inter-connected services. +List of common names (CN) of subject. type: keyword -example: 4bf92f3577b34da6a3ce929d0e0e4736 +example: shared.global.example.net -- -*`tracing.transaction.id`*:: +*`tls.client.x509.subject.country`*:: + -- -Unique identifier of the transaction. -A transaction is the highest level of work measured within a service, such as a request to a server. +List of country (C) code type: keyword -example: 00f067aa0ba902b7 +example: US -- -[float] -=== url +*`tls.client.x509.subject.distinguished_name`*:: ++ +-- +Distinguished name (DN) of the certificate subject entity. -URL fields provide support for complete or partial URLs, and supports the breaking down into scheme, domain, path, and so on. +type: keyword +example: C=US, ST=California, L=San Francisco, O=Example, Inc., CN=shared.global.example.net -*`url.domain`*:: +-- + +*`tls.client.x509.subject.locality`*:: + -- -Domain of the url, such as "www.elastic.co". -In some cases a URL may refer to an IP and/or port directly, without a domain name. In this case, the IP address would go to the `domain` field. +List of locality names (L) type: keyword -example: www.elastic.co +example: San Francisco -- -*`url.extension`*:: +*`tls.client.x509.subject.organization`*:: + -- -The field contains the file extension from the original request url. -The file extension is only set if it exists, as not every url has a file extension. -The leading period must not be included. For example, the value must be "png", not ".png". +List of organizations (O) of subject. type: keyword -example: png +example: Example, Inc. -- -*`url.fragment`*:: +*`tls.client.x509.subject.organizational_unit`*:: + -- -Portion of the url after the `#`, such as "top". -The `#` is not part of the fragment. +List of organizational units (OU) of subject. type: keyword -- -*`url.full`*:: +*`tls.client.x509.subject.state_or_province`*:: + -- -If full URLs are important to your use case, they should be stored in `url.full`, whether this field is reconstructed or present in the event source. +List of state or province names (ST, S, or P) type: keyword -example: https://www.elastic.co:443/search?q=elasticsearch#top +example: California -- -*`url.full.text`*:: +*`tls.client.x509.version_number`*:: + -- -type: text +Version of x509 format. + +type: keyword + +example: 3 -- -*`url.original`*:: +*`tls.curve`*:: + -- -Unmodified original url as seen in the event source. -Note that in network monitoring, the observed URL may be a full URL, whereas in access logs, the URL is often just represented as a path. -This field is meant to represent the URL as it was observed, complete or not. +String indicating the curve used for the given cipher, when applicable. type: keyword -example: https://www.elastic.co:443/search?q=elasticsearch#top or /search?q=elasticsearch +example: secp256r1 -- -*`url.original.text`*:: +*`tls.established`*:: + -- -type: text +Boolean flag indicating if the TLS negotiation was successful and transitioned to an encrypted tunnel. + +type: boolean -- -*`url.password`*:: +*`tls.next_protocol`*:: + -- -Password of the request. +String indicating the protocol being tunneled. Per the values in the IANA registry (https://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml#alpn-protocol-ids), this string should be lower case. type: keyword +example: http/1.1 + -- -*`url.path`*:: +*`tls.resumed`*:: + -- -Path of the request, such as "/search". +Boolean flag indicating if this TLS connection was resumed from an existing TLS negotiation. -type: keyword +type: boolean -- -*`url.port`*:: +*`tls.server.certificate`*:: + -- -Port of the request, such as 443. - -type: long +PEM-encoded stand-alone certificate offered by the server. This is usually mutually-exclusive of `server.certificate_chain` since this value also exists in that list. -example: 443 +type: keyword -format: string +example: MII... -- -*`url.query`*:: +*`tls.server.certificate_chain`*:: ++ +-- +Array of PEM-encoded certificates that make up the certificate chain offered by the server. This is usually mutually-exclusive of `server.certificate` since that value should be the first certificate in the chain. + +type: keyword + +example: ['MII...', 'MII...'] + +-- + +*`tls.server.hash.md5`*:: ++ +-- +Certificate fingerprint using the MD5 digest of DER-encoded version of certificate offered by the server. For consistency with other hash values, this value should be formatted as an uppercase hash. + +type: keyword + +example: 0F76C7F2C55BFD7D8E8B8F4BFBF0C9EC + +-- + +*`tls.server.hash.sha1`*:: ++ +-- +Certificate fingerprint using the SHA1 digest of DER-encoded version of certificate offered by the server. For consistency with other hash values, this value should be formatted as an uppercase hash. + +type: keyword + +example: 9E393D93138888D288266C2D915214D1D1CCEB2A + +-- + +*`tls.server.hash.sha256`*:: ++ +-- +Certificate fingerprint using the SHA256 digest of DER-encoded version of certificate offered by the server. For consistency with other hash values, this value should be formatted as an uppercase hash. + +type: keyword + +example: 0687F666A054EF17A08E2F2162EAB4CBC0D265E1D7875BE74BF3C712CA92DAF0 + +-- + +*`tls.server.issuer`*:: ++ +-- +Subject of the issuer of the x.509 certificate presented by the server. + +type: keyword + +example: CN=Example Root CA, OU=Infrastructure Team, DC=example, DC=com + +-- + +*`tls.server.ja3s`*:: ++ +-- +A hash that identifies servers based on how they perform an SSL/TLS handshake. + +type: keyword + +example: 394441ab65754e2207b1e1b457b3641d + +-- + +*`tls.server.not_after`*:: ++ +-- +Timestamp indicating when server certificate is no longer considered valid. + +type: date + +example: 2021-01-01T00:00:00.000Z + +-- + +*`tls.server.not_before`*:: ++ +-- +Timestamp indicating when server certificate is first considered valid. + +type: date + +example: 1970-01-01T00:00:00.000Z + +-- + +*`tls.server.subject`*:: ++ +-- +Subject of the x.509 certificate presented by the server. + +type: keyword + +example: CN=www.example.com, OU=Infrastructure Team, DC=example, DC=com + +-- + +*`tls.server.x509.alternative_names`*:: ++ +-- +List of subject alternative names (SAN). Name types vary by certificate authority and certificate type but commonly contain IP addresses, DNS names (and wildcards), and email addresses. + +type: keyword + +example: *.elastic.co + +-- + +*`tls.server.x509.issuer.common_name`*:: ++ +-- +List of common name (CN) of issuing certificate authority. + +type: keyword + +example: Example SHA2 High Assurance Server CA + +-- + +*`tls.server.x509.issuer.country`*:: ++ +-- +List of country (C) codes + +type: keyword + +example: US + +-- + +*`tls.server.x509.issuer.distinguished_name`*:: ++ +-- +Distinguished name (DN) of issuing certificate authority. + +type: keyword + +example: C=US, O=Example Inc, OU=www.example.com, CN=Example SHA2 High Assurance Server CA + +-- + +*`tls.server.x509.issuer.locality`*:: ++ +-- +List of locality names (L) + +type: keyword + +example: Mountain View + +-- + +*`tls.server.x509.issuer.organization`*:: ++ +-- +List of organizations (O) of issuing certificate authority. + +type: keyword + +example: Example Inc + +-- + +*`tls.server.x509.issuer.organizational_unit`*:: ++ +-- +List of organizational units (OU) of issuing certificate authority. + +type: keyword + +example: www.example.com + +-- + +*`tls.server.x509.issuer.state_or_province`*:: ++ +-- +List of state or province names (ST, S, or P) + +type: keyword + +example: California + +-- + +*`tls.server.x509.not_after`*:: ++ +-- +Time at which the certificate is no longer considered valid. + +type: date + +example: 2020-07-16 03:15:39+00:00 + +-- + +*`tls.server.x509.not_before`*:: ++ +-- +Time at which the certificate is first considered valid. + +type: date + +example: 2019-08-16 01:40:25+00:00 + +-- + +*`tls.server.x509.public_key_algorithm`*:: ++ +-- +Algorithm used to generate the public key. + +type: keyword + +example: RSA + +-- + +*`tls.server.x509.public_key_curve`*:: ++ +-- +The curve used by the elliptic curve public key algorithm. This is algorithm specific. + +type: keyword + +example: nistp521 + +-- + +*`tls.server.x509.public_key_exponent`*:: ++ +-- +Exponent used to derive the public key. This is algorithm specific. + +type: long + +example: 65537 + +Field is not indexed. + +-- + +*`tls.server.x509.public_key_size`*:: ++ +-- +The size of the public key space in bits. + +type: long + +example: 2048 + +-- + +*`tls.server.x509.serial_number`*:: ++ +-- +Unique serial number issued by the certificate authority. For consistency, if this value is alphanumeric, it should be formatted without colons and uppercase characters. + +type: keyword + +example: 55FBB9C7DEBF09809D12CCAA + +-- + +*`tls.server.x509.signature_algorithm`*:: ++ +-- +Identifier for certificate signature algorithm. We recommend using names found in Go Lang Crypto library. See https://github.com/golang/go/blob/go1.14/src/crypto/x509/x509.go#L337-L353. + +type: keyword + +example: SHA256-RSA + +-- + +*`tls.server.x509.subject.common_name`*:: ++ +-- +List of common names (CN) of subject. + +type: keyword + +example: shared.global.example.net + +-- + +*`tls.server.x509.subject.country`*:: ++ +-- +List of country (C) code + +type: keyword + +example: US + +-- + +*`tls.server.x509.subject.distinguished_name`*:: ++ +-- +Distinguished name (DN) of the certificate subject entity. + +type: keyword + +example: C=US, ST=California, L=San Francisco, O=Example, Inc., CN=shared.global.example.net + +-- + +*`tls.server.x509.subject.locality`*:: ++ +-- +List of locality names (L) + +type: keyword + +example: San Francisco + +-- + +*`tls.server.x509.subject.organization`*:: ++ +-- +List of organizations (O) of subject. + +type: keyword + +example: Example, Inc. + +-- + +*`tls.server.x509.subject.organizational_unit`*:: ++ +-- +List of organizational units (OU) of subject. + +type: keyword + +-- + +*`tls.server.x509.subject.state_or_province`*:: ++ +-- +List of state or province names (ST, S, or P) + +type: keyword + +example: California + +-- + +*`tls.server.x509.version_number`*:: ++ +-- +Version of x509 format. + +type: keyword + +example: 3 + +-- + +*`tls.version`*:: ++ +-- +Numeric part of the version parsed from the original string. + +type: keyword + +example: 1.2 + +-- + +*`tls.version_protocol`*:: ++ +-- +Normalized lowercase protocol name parsed from original string. + +type: keyword + +example: tls + +-- + +[float] +=== tracing + +Distributed tracing makes it possible to analyze performance throughout a microservice architecture all in one view. This is accomplished by tracing all of the requests - from the initial web request in the front-end service - to queries made through multiple back-end services. + + +*`tracing.span.id`*:: ++ +-- +Unique identifier of the span within the scope of its trace. +A span represents an operation within a transaction, such as a request to another service, or a database query. + +type: keyword + +example: 3ff9a8981b7ccd5a + +-- + +*`tracing.trace.id`*:: ++ +-- +Unique identifier of the trace. +A trace groups multiple events like transactions that belong together. For example, a user request handled by multiple inter-connected services. + +type: keyword + +example: 4bf92f3577b34da6a3ce929d0e0e4736 + +-- + +*`tracing.transaction.id`*:: ++ +-- +Unique identifier of the transaction within the scope of its trace. +A transaction is the highest level of work measured within a service, such as a request to a server. + +type: keyword + +example: 00f067aa0ba902b7 + +-- + +[float] +=== url + +URL fields provide support for complete or partial URLs, and supports the breaking down into scheme, domain, path, and so on. + + +*`url.domain`*:: ++ +-- +Domain of the url, such as "www.elastic.co". +In some cases a URL may refer to an IP and/or port directly, without a domain name. In this case, the IP address would go to the `domain` field. + +type: keyword + +example: www.elastic.co + +-- + +*`url.extension`*:: ++ +-- +The field contains the file extension from the original request url. +The file extension is only set if it exists, as not every url has a file extension. +The leading period must not be included. For example, the value must be "png", not ".png". + +type: keyword + +example: png + +-- + +*`url.fragment`*:: ++ +-- +Portion of the url after the `#`, such as "top". +The `#` is not part of the fragment. + +type: keyword + +-- + +*`url.full`*:: ++ +-- +If full URLs are important to your use case, they should be stored in `url.full`, whether this field is reconstructed or present in the event source. + +type: keyword + +example: https://www.elastic.co:443/search?q=elasticsearch#top + +-- + +*`url.full.text`*:: ++ +-- +type: text + +-- + +*`url.original`*:: ++ +-- +Unmodified original url as seen in the event source. +Note that in network monitoring, the observed URL may be a full URL, whereas in access logs, the URL is often just represented as a path. +This field is meant to represent the URL as it was observed, complete or not. + +type: keyword + +example: https://www.elastic.co:443/search?q=elasticsearch#top or /search?q=elasticsearch + +-- + +*`url.original.text`*:: ++ +-- +type: text + +-- + +*`url.password`*:: ++ +-- +Password of the request. + +type: keyword + +-- + +*`url.path`*:: ++ +-- +Path of the request, such as "/search". + +type: keyword + +-- + +*`url.port`*:: ++ +-- +Port of the request, such as 443. + +type: long + +example: 443 + +format: string + +-- + +*`url.query`*:: + -- The query field describes the query string of the request, such as "q=elasticsearch". @@ -7266,12 +8371,12 @@ type: keyword + -- The highest registered url domain, stripped of the subdomain. -For example, the registered domain for "foo.google.com" is "google.com". +For example, the registered domain for "foo.example.com" is "example.com". This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last two labels will not work well for TLDs such as "co.uk". type: keyword -example: google.com +example: example.com -- @@ -7290,7 +8395,7 @@ example: https *`url.top_level_domain`*:: + -- -The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for google.com is "com". +The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for example.com is "com". This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last label will not work well for effective TLDs such as "co.uk". type: keyword @@ -7393,7 +8498,7 @@ type: keyword *`user.id`*:: + -- -Unique identifiers of the user. +Unique identifier of the user. type: keyword @@ -7417,6 +8522,17 @@ type: text -- +*`user.roles`*:: ++ +-- +Array of user roles at the time of the event. + +type: keyword + +example: ["kibana_admin", "reporting_user"] + +-- + [float] === user_agent @@ -7745,6 +8861,276 @@ example: Critical -- +[float] +=== x509 + +This implements the common core fields for x509 certificates. This information is likely logged with TLS sessions, digital signatures found in executable binaries, S/MIME information in email bodies, or analysis of files on disk. When only a single certificate is logged in an event, it should be nested under `file`. When hashes of the DER-encoded certificate are available, the `hash` data set should be populated as well (e.g. `file.hash.sha256`). For events that contain certificate information for both sides of the connection, the x509 object could be nested under the respective side of the connection information (e.g. `tls.server.x509`). + + +*`x509.alternative_names`*:: ++ +-- +List of subject alternative names (SAN). Name types vary by certificate authority and certificate type but commonly contain IP addresses, DNS names (and wildcards), and email addresses. + +type: keyword + +example: *.elastic.co + +-- + +*`x509.issuer.common_name`*:: ++ +-- +List of common name (CN) of issuing certificate authority. + +type: keyword + +example: Example SHA2 High Assurance Server CA + +-- + +*`x509.issuer.country`*:: ++ +-- +List of country (C) codes + +type: keyword + +example: US + +-- + +*`x509.issuer.distinguished_name`*:: ++ +-- +Distinguished name (DN) of issuing certificate authority. + +type: keyword + +example: C=US, O=Example Inc, OU=www.example.com, CN=Example SHA2 High Assurance Server CA + +-- + +*`x509.issuer.locality`*:: ++ +-- +List of locality names (L) + +type: keyword + +example: Mountain View + +-- + +*`x509.issuer.organization`*:: ++ +-- +List of organizations (O) of issuing certificate authority. + +type: keyword + +example: Example Inc + +-- + +*`x509.issuer.organizational_unit`*:: ++ +-- +List of organizational units (OU) of issuing certificate authority. + +type: keyword + +example: www.example.com + +-- + +*`x509.issuer.state_or_province`*:: ++ +-- +List of state or province names (ST, S, or P) + +type: keyword + +example: California + +-- + +*`x509.not_after`*:: ++ +-- +Time at which the certificate is no longer considered valid. + +type: date + +example: 2020-07-16 03:15:39+00:00 + +-- + +*`x509.not_before`*:: ++ +-- +Time at which the certificate is first considered valid. + +type: date + +example: 2019-08-16 01:40:25+00:00 + +-- + +*`x509.public_key_algorithm`*:: ++ +-- +Algorithm used to generate the public key. + +type: keyword + +example: RSA + +-- + +*`x509.public_key_curve`*:: ++ +-- +The curve used by the elliptic curve public key algorithm. This is algorithm specific. + +type: keyword + +example: nistp521 + +-- + +*`x509.public_key_exponent`*:: ++ +-- +Exponent used to derive the public key. This is algorithm specific. + +type: long + +example: 65537 + +Field is not indexed. + +-- + +*`x509.public_key_size`*:: ++ +-- +The size of the public key space in bits. + +type: long + +example: 2048 + +-- + +*`x509.serial_number`*:: ++ +-- +Unique serial number issued by the certificate authority. For consistency, if this value is alphanumeric, it should be formatted without colons and uppercase characters. + +type: keyword + +example: 55FBB9C7DEBF09809D12CCAA + +-- + +*`x509.signature_algorithm`*:: ++ +-- +Identifier for certificate signature algorithm. We recommend using names found in Go Lang Crypto library. See https://github.com/golang/go/blob/go1.14/src/crypto/x509/x509.go#L337-L353. + +type: keyword + +example: SHA256-RSA + +-- + +*`x509.subject.common_name`*:: ++ +-- +List of common names (CN) of subject. + +type: keyword + +example: shared.global.example.net + +-- + +*`x509.subject.country`*:: ++ +-- +List of country (C) code + +type: keyword + +example: US + +-- + +*`x509.subject.distinguished_name`*:: ++ +-- +Distinguished name (DN) of the certificate subject entity. + +type: keyword + +example: C=US, ST=California, L=San Francisco, O=Example, Inc., CN=shared.global.example.net + +-- + +*`x509.subject.locality`*:: ++ +-- +List of locality names (L) + +type: keyword + +example: San Francisco + +-- + +*`x509.subject.organization`*:: ++ +-- +List of organizations (O) of subject. + +type: keyword + +example: Example, Inc. + +-- + +*`x509.subject.organizational_unit`*:: ++ +-- +List of organizational units (OU) of subject. + +type: keyword + +-- + +*`x509.subject.state_or_province`*:: ++ +-- +List of state or province names (ST, S, or P) + +type: keyword + +example: California + +-- + +*`x509.version_number`*:: ++ +-- +Version of x509 format. + +type: keyword + +example: 3 + +-- + [[exported-fields-host-processor]] == Host fields diff --git a/journalbeat/include/fields.go b/journalbeat/include/fields.go index 207cf4a53e9..2c4b3f0dcd9 100644 --- a/journalbeat/include/fields.go +++ b/journalbeat/include/fields.go @@ -32,5 +32,5 @@ func init() { // AssetFieldsYml returns asset data. // This is the base64 encoded gzipped contents of fields.yml. func AssetFieldsYml() string { - return "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" + return "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" } diff --git a/libbeat/_meta/fields.ecs.yml b/libbeat/_meta/fields.ecs.yml index 9032aafba00..aeaeed0e868 100644 --- a/libbeat/_meta/fields.ecs.yml +++ b/libbeat/_meta/fields.ecs.yml @@ -1,5 +1,5 @@ # WARNING! Do not edit this file directly, it was generated by the ECS project, -# based on ECS version 1.5.0. +# based on ECS version 1.6.0. # Please visit https://github.com/elastic/ecs to suggest changes to ECS fields. - key: ecs @@ -64,6 +64,17 @@ systems such as Logstash or APM Server.' type: group fields: + - name: build.original + level: core + type: keyword + ignore_above: 1024 + description: 'Extended build information for the agent. + + This field is intended to contain any build information that a data source + may provide, no specific formatting is required.' + example: metricbeat version 7.6.0 (amd64), libbeat 7.6.0 [6a23e8f8f30f5001ba344e4e54d8d9cb82cb107c + built 2020-02-05 23:10:10 +0000 UTC] + default_field: false - name: ephemeral_id level: extended type: keyword @@ -98,7 +109,7 @@ ignore_above: 1024 description: 'Type of the agent. - The agent type stays always the same and should be given by the agent used. + The agent type always stays the same and should be given by the agent used. In case of Filebeat the agent would always be Filebeat also if two Filebeat instances are run on the same machine.' example: filebeat @@ -248,9 +259,7 @@ - name: ip level: core type: ip - description: 'IP address of the client. - - Can be one or multiple IPv4 or IPv6 addresses.' + description: IP address of the client (IPv4 or IPv6). - name: mac level: core type: keyword @@ -287,19 +296,19 @@ ignore_above: 1024 description: 'The highest registered client domain, stripped of the subdomain. - For example, the registered domain for "foo.google.com" is "google.com". + For example, the registered domain for "foo.example.com" is "example.com". This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last two labels will not work well for TLDs such as "co.uk".' - example: google.com + example: example.com - name: top_level_domain level: extended type: keyword ignore_above: 1024 description: 'The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain - for google.com is "com". + for example.com is "com". This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking @@ -358,7 +367,7 @@ level: core type: keyword ignore_above: 1024 - description: Unique identifiers of the user. + description: Unique identifier of the user. - name: user.name level: core type: keyword @@ -370,6 +379,13 @@ default_field: false description: Short name or login of the user. example: albert + - name: user.roles + level: extended + type: keyword + ignore_above: 1024 + description: Array of user roles at the time of the event. + example: '["kibana_admin", "reporting_user"]' + default_field: false - name: cloud title: Cloud group: 2 @@ -391,6 +407,16 @@ Examples: AWS account id, Google Cloud ORG Id, or other unique identifier.' example: 666777888999 + - name: account.name + level: extended + type: keyword + ignore_above: 1024 + description: 'The cloud account name or alias used to identify different entities + in a multi-tenant environment. + + Examples: AWS account name, Google Cloud ORG display name.' + example: elastic-dev + default_field: false - name: availability_zone level: extended type: keyword @@ -414,6 +440,24 @@ ignore_above: 1024 description: Machine type of the host machine. example: t2.medium + - name: project.id + level: extended + type: keyword + ignore_above: 1024 + description: 'The cloud project identifier. + + Examples: Google Cloud Project id, Azure Project id.' + example: my-project + default_field: false + - name: project.name + level: extended + type: keyword + ignore_above: 1024 + description: 'The cloud project name. + + Examples: Google Cloud Project name, Azure Project name.' + example: my project + default_field: false - name: provider level: extended type: keyword @@ -617,9 +661,7 @@ - name: ip level: core type: ip - description: 'IP address of the destination. - - Can be one or multiple IPv4 or IPv6 addresses.' + description: IP address of the destination (IPv4 or IPv6). - name: mac level: core type: keyword @@ -655,19 +697,19 @@ ignore_above: 1024 description: 'The highest registered destination domain, stripped of the subdomain. - For example, the registered domain for "foo.google.com" is "google.com". + For example, the registered domain for "foo.example.com" is "example.com". This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last two labels will not work well for TLDs such as "co.uk".' - example: google.com + example: example.com - name: top_level_domain level: extended type: keyword ignore_above: 1024 description: 'The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain - for google.com is "com". + for example.com is "com". This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking @@ -726,7 +768,7 @@ level: core type: keyword ignore_above: 1024 - description: Unique identifiers of the user. + description: Unique identifier of the user. - name: user.name level: core type: keyword @@ -738,6 +780,13 @@ default_field: false description: Short name or login of the user. example: albert + - name: user.roles + level: extended + type: keyword + ignore_above: 1024 + description: Array of user roles at the time of the event. + example: '["kibana_admin", "reporting_user"]' + default_field: false - name: dll title: DLL group: 2 @@ -837,6 +886,13 @@ description: Full file path of the library. example: C:\Windows\System32\kernel32.dll default_field: false + - name: pe.architecture + level: extended + type: keyword + ignore_above: 1024 + description: CPU architecture target for the file. + example: x64 + default_field: false - name: pe.company level: extended type: keyword @@ -858,6 +914,17 @@ description: Internal version of the file, provided at compile-time. example: 6.3.9600.17415 default_field: false + - name: pe.imphash + level: extended + type: keyword + ignore_above: 1024 + description: 'A hash of the imports in a PE file. An imphash -- or import hash + -- can be used to fingerprint binaries even after recompilation or other code-level + transformations have occurred, which would change more traditional hash values. + + Learn more at https://www.fireeye.com/blog/threat-research/2014/01/tracking-malware-import-hashing.html.' + example: 0c6803c4e922103c4dca5963aad36ddf + default_field: false - name: pe.original_file_name level: extended type: keyword @@ -886,7 +953,6 @@ - name: answers level: extended type: object - object_type: keyword description: 'An array containing an object for each answer section returned by the server. @@ -920,7 +986,7 @@ If a chain of CNAME is being resolved, each answer''s `name` should be the one that corresponds with the answer''s `data`. It should not simply be the original `question.name` repeated.' - example: www.google.com + example: www.example.com - name: answers.ttl level: extended type: long @@ -975,19 +1041,19 @@ those characters should be represented as escaped base 10 integers (\DDD). Back slashes and quotes should be escaped. Tabs, carriage returns, and line feeds should be converted to \t, \r, and \n respectively.' - example: www.google.com + example: www.example.com - name: question.registered_domain level: extended type: keyword ignore_above: 1024 description: 'The highest registered domain, stripped of the subdomain. - For example, the registered domain for "foo.google.com" is "google.com". + For example, the registered domain for "foo.example.com" is "example.com". This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last two labels will not work well for TLDs such as "co.uk".' - example: google.com + example: example.com - name: question.subdomain level: extended type: keyword @@ -1003,7 +1069,7 @@ ignore_above: 1024 description: 'The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain - for google.com is "com". + for example.com is "com". This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking @@ -1097,6 +1163,7 @@ norms: false default_field: false description: The stack trace of this error in plain text. + index: false - name: type level: extended type: keyword @@ -1262,6 +1329,7 @@ but it can be retrieved from `_source`.' example: Sep 19 08:26:10 host CEF:0|Security| threatmanager|1.0|100| worm successfully stopped|10|src=10.0.0.1 dst=2.1.2.2spt=1232 + index: false - name: outcome level: core type: keyword @@ -1296,6 +1364,19 @@ the event (e.g. Sysmon, httpd), or of a subsystem of the operating system (kernel, Microsoft-Windows-Security-Auditing).' example: kernel + - name: reason + level: extended + type: keyword + ignore_above: 1024 + description: 'Reason why this event happened, according to the source. + + This describes the why of a particular action or outcome captured in the event. + Where `event.action` captures the action from the event, `event.reason` describes + why that action was taken. For example, a web proxy with an `event.action` + which denied the request may also populate `event.reason` with the reason + why (e.g. `blocked site`).' + example: Terminated an unexpected process + default_field: false - name: reference level: extended type: keyword @@ -1304,7 +1385,7 @@ This URL links to a static definition of the this event. Alert events, indicated by `event.kind:alert`, are a common use case for this field.' - example: https://system.vendor.com/event/#0001234 + example: https://system.example.com/event/#0001234 default_field: false - name: risk_score level: core @@ -1378,9 +1459,9 @@ this event. This URL links to another system where in-depth investigation of the specific - occurence of this event can take place. Alert events, indicated by `event.kind:alert`, + occurrence of this event can take place. Alert events, indicated by `event.kind:alert`, are a common use case for this field.' - example: https://mysystem.mydomain.com/alert/5271dedb-f5b0-4218-87f0-4ac4870a38fe + example: https://mysystem.example.com/alert/5271dedb-f5b0-4218-87f0-4ac4870a38fe default_field: false - name: file title: File @@ -1576,6 +1657,13 @@ description: Full path to the file, including the file name. It should include the drive letter, when appropriate. example: /home/alice/example.png + - name: pe.architecture + level: extended + type: keyword + ignore_above: 1024 + description: CPU architecture target for the file. + example: x64 + default_field: false - name: pe.company level: extended type: keyword @@ -1597,6 +1685,17 @@ description: Internal version of the file, provided at compile-time. example: 6.3.9600.17415 default_field: false + - name: pe.imphash + level: extended + type: keyword + ignore_above: 1024 + description: 'A hash of the imports in a PE file. An imphash -- or import hash + -- can be used to fingerprint binaries even after recompilation or other code-level + transformations have occurred, which would change more traditional hash values. + + Learn more at https://www.fireeye.com/blog/threat-research/2014/01/tracking-malware-import-hashing.html.' + example: 0c6803c4e922103c4dca5963aad36ddf + default_field: false - name: pe.original_file_name level: extended type: keyword @@ -1640,6 +1739,177 @@ ignore_above: 1024 description: The user ID (UID) or security identifier (SID) of the file owner. example: '1001' + - name: x509.alternative_names + level: extended + type: keyword + ignore_above: 1024 + description: List of subject alternative names (SAN). Name types vary by certificate + authority and certificate type but commonly contain IP addresses, DNS names + (and wildcards), and email addresses. + example: '*.elastic.co' + default_field: false + - name: x509.issuer.common_name + level: extended + type: keyword + ignore_above: 1024 + description: List of common name (CN) of issuing certificate authority. + example: Example SHA2 High Assurance Server CA + default_field: false + - name: x509.issuer.country + level: extended + type: keyword + ignore_above: 1024 + description: List of country (C) codes + example: US + default_field: false + - name: x509.issuer.distinguished_name + level: extended + type: keyword + ignore_above: 1024 + description: Distinguished name (DN) of issuing certificate authority. + example: C=US, O=Example Inc, OU=www.example.com, CN=Example SHA2 High Assurance + Server CA + default_field: false + - name: x509.issuer.locality + level: extended + type: keyword + ignore_above: 1024 + description: List of locality names (L) + example: Mountain View + default_field: false + - name: x509.issuer.organization + level: extended + type: keyword + ignore_above: 1024 + description: List of organizations (O) of issuing certificate authority. + example: Example Inc + default_field: false + - name: x509.issuer.organizational_unit + level: extended + type: keyword + ignore_above: 1024 + description: List of organizational units (OU) of issuing certificate authority. + example: www.example.com + default_field: false + - name: x509.issuer.state_or_province + level: extended + type: keyword + ignore_above: 1024 + description: List of state or province names (ST, S, or P) + example: California + default_field: false + - name: x509.not_after + level: extended + type: date + description: Time at which the certificate is no longer considered valid. + example: 2020-07-16 03:15:39+00:00 + default_field: false + - name: x509.not_before + level: extended + type: date + description: Time at which the certificate is first considered valid. + example: 2019-08-16 01:40:25+00:00 + default_field: false + - name: x509.public_key_algorithm + level: extended + type: keyword + ignore_above: 1024 + description: Algorithm used to generate the public key. + example: RSA + default_field: false + - name: x509.public_key_curve + level: extended + type: keyword + ignore_above: 1024 + description: The curve used by the elliptic curve public key algorithm. This + is algorithm specific. + example: nistp521 + default_field: false + - name: x509.public_key_exponent + level: extended + type: long + description: Exponent used to derive the public key. This is algorithm specific. + example: 65537 + index: false + default_field: false + - name: x509.public_key_size + level: extended + type: long + description: The size of the public key space in bits. + example: 2048 + default_field: false + - name: x509.serial_number + level: extended + type: keyword + ignore_above: 1024 + description: Unique serial number issued by the certificate authority. For consistency, + if this value is alphanumeric, it should be formatted without colons and uppercase + characters. + example: 55FBB9C7DEBF09809D12CCAA + default_field: false + - name: x509.signature_algorithm + level: extended + type: keyword + ignore_above: 1024 + description: Identifier for certificate signature algorithm. We recommend using + names found in Go Lang Crypto library. See https://github.com/golang/go/blob/go1.14/src/crypto/x509/x509.go#L337-L353. + example: SHA256-RSA + default_field: false + - name: x509.subject.common_name + level: extended + type: keyword + ignore_above: 1024 + description: List of common names (CN) of subject. + example: shared.global.example.net + default_field: false + - name: x509.subject.country + level: extended + type: keyword + ignore_above: 1024 + description: List of country (C) code + example: US + default_field: false + - name: x509.subject.distinguished_name + level: extended + type: keyword + ignore_above: 1024 + description: Distinguished name (DN) of the certificate subject entity. + example: C=US, ST=California, L=San Francisco, O=Example, Inc., CN=shared.global.example.net + default_field: false + - name: x509.subject.locality + level: extended + type: keyword + ignore_above: 1024 + description: List of locality names (L) + example: San Francisco + default_field: false + - name: x509.subject.organization + level: extended + type: keyword + ignore_above: 1024 + description: List of organizations (O) of subject. + example: Example, Inc. + default_field: false + - name: x509.subject.organizational_unit + level: extended + type: keyword + ignore_above: 1024 + description: List of organizational units (OU) of subject. + default_field: false + - name: x509.subject.state_or_province + level: extended + type: keyword + ignore_above: 1024 + description: List of state or province names (ST, S, or P) + example: California + default_field: false + - name: x509.version_number + level: extended + type: keyword + ignore_above: 1024 + description: Version of x509 format. + example: 3 + default_field: false - name: geo title: Geo group: 2 @@ -1984,7 +2254,7 @@ level: core type: keyword ignore_above: 1024 - description: Unique identifiers of the user. + description: Unique identifier of the user. - name: user.name level: core type: keyword @@ -1996,6 +2266,13 @@ default_field: false description: Short name or login of the user. example: albert + - name: user.roles + level: extended + type: keyword + ignore_above: 1024 + description: Array of user roles at the time of the event. + example: '["kibana_admin", "reporting_user"]' + default_field: false - name: http title: HTTP group: 2 @@ -2032,9 +2309,14 @@ ignore_above: 1024 description: 'HTTP request method. - The field value must be normalized to lowercase for querying. See the documentation - section "Implementing ECS".' - example: get, post, put + Prior to ECS 1.6.0 the following guidance was provided: + + "The field value must be normalized to lowercase for querying." + + As of ECS 1.6.0, the guidance is deprecated because the original case of the + method may be useful in anomaly detection. Original case will be mandated + in ECS 2.0.0' + example: GET, POST, PUT, PoST - name: request.referrer level: extended type: keyword @@ -2122,6 +2404,16 @@ but rather in `event.*` or in other ECS fields.' type: group fields: + - name: file.path + level: extended + type: keyword + ignore_above: 1024 + description: 'Full path to the log file this event came from, including the + file name. It should include the drive letter, when appropriate. + + If the event wasn''t read from a log file, do not populate this field.' + example: /var/log/fun-times.log + default_field: false - name: level level: core type: keyword @@ -2151,8 +2443,11 @@ level: extended type: keyword ignore_above: 1024 - description: The name of the file containing the source code which originated - the log event. Note that this is not the name of the log file. + description: 'The name of the file containing the source code which originated + the log event. + + Note that this field is not meant to capture the log file. The correct field + to capture the log file is `log.file.path`.' example: Bootstrap.java - name: origin.function level: extended @@ -2175,10 +2470,10 @@ This field is not indexed and doc_values are disabled so it can''t be queried but the value can be retrieved from `_source`.' example: Sep 19 08:26:10 localhost My log + index: false - name: syslog level: extended type: object - object_type: keyword description: The Syslog metadata of the event, if the event was transmitted via Syslog. Please see RFCs 5424 or 3164. - name: syslog.facility.code @@ -2295,7 +2590,6 @@ - name: inner level: extended type: object - object_type: keyword description: Network.inner fields are added in addition to network.vlan fields to describe the innermost VLAN when q-in-q VLAN tagging is present. Allowed fields include vlan.id and vlan.name. Inner vlan fields are typically used @@ -2393,7 +2687,6 @@ - name: egress level: extended type: object - object_type: keyword description: Observer.egress holds information like interface number and name, vlan, and zone information to classify egress traffic. Single armed monitoring such as a network sensor on a span port should only use observer.ingress @@ -2506,7 +2799,6 @@ - name: ingress level: extended type: object - object_type: keyword description: Observer.ingress holds information like interface number and name, vlan, and zone information to classify ingress traffic. Single armed monitoring such as a network sensor on a span port should only use observer.ingress @@ -2836,6 +3128,13 @@ description: These fields contain Windows Portable Executable (PE) metadata. type: group fields: + - name: architecture + level: extended + type: keyword + ignore_above: 1024 + description: CPU architecture target for the file. + example: x64 + default_field: false - name: company level: extended type: keyword @@ -2857,6 +3156,17 @@ description: Internal version of the file, provided at compile-time. example: 6.3.9600.17415 default_field: false + - name: imphash + level: extended + type: keyword + ignore_above: 1024 + description: 'A hash of the imports in a PE file. An imphash -- or import hash + -- can be used to fingerprint binaries even after recompilation or other code-level + transformations have occurred, which would change more traditional hash values. + + Learn more at https://www.fireeye.com/blog/threat-research/2014/01/tracking-malware-import-hashing.html.' + example: 0c6803c4e922103c4dca5963aad36ddf + default_field: false - name: original_file_name level: extended type: keyword @@ -3032,11 +3342,12 @@ level: extended type: keyword ignore_above: 1024 - description: 'Array of process arguments. + description: 'Array of process arguments, starting with the absolute path to + the executable. May be filtered to protect sensitive information.' example: - - ssh + - /usr/bin/ssh - -l - user - 10.0.0.16 @@ -3179,6 +3490,59 @@ Sometimes called program name or similar.' example: ssh default_field: false + - name: parent.pe.architecture + level: extended + type: keyword + ignore_above: 1024 + description: CPU architecture target for the file. + example: x64 + default_field: false + - name: parent.pe.company + level: extended + type: keyword + ignore_above: 1024 + description: Internal company name of the file, provided at compile-time. + example: Microsoft Corporation + default_field: false + - name: parent.pe.description + level: extended + type: keyword + ignore_above: 1024 + description: Internal description of the file, provided at compile-time. + example: Paint + default_field: false + - name: parent.pe.file_version + level: extended + type: keyword + ignore_above: 1024 + description: Internal version of the file, provided at compile-time. + example: 6.3.9600.17415 + default_field: false + - name: parent.pe.imphash + level: extended + type: keyword + ignore_above: 1024 + description: 'A hash of the imports in a PE file. An imphash -- or import hash + -- can be used to fingerprint binaries even after recompilation or other code-level + transformations have occurred, which would change more traditional hash values. + + Learn more at https://www.fireeye.com/blog/threat-research/2014/01/tracking-malware-import-hashing.html.' + example: 0c6803c4e922103c4dca5963aad36ddf + default_field: false + - name: parent.pe.original_file_name + level: extended + type: keyword + ignore_above: 1024 + description: Internal name of the file, provided at compile-time. + example: MSPAINT.EXE + default_field: false + - name: parent.pe.product + level: extended + type: keyword + ignore_above: 1024 + description: Internal product name of the file, provided at compile-time. + example: "Microsoft\xAE Windows\xAE Operating System" + default_field: false - name: parent.pgid level: extended type: long @@ -3249,6 +3613,13 @@ description: The working directory of the process. example: /home/alice default_field: false + - name: pe.architecture + level: extended + type: keyword + ignore_above: 1024 + description: CPU architecture target for the file. + example: x64 + default_field: false - name: pe.company level: extended type: keyword @@ -3270,6 +3641,17 @@ description: Internal version of the file, provided at compile-time. example: 6.3.9600.17415 default_field: false + - name: pe.imphash + level: extended + type: keyword + ignore_above: 1024 + description: 'A hash of the imports in a PE file. An imphash -- or import hash + -- can be used to fingerprint binaries even after recompilation or other code-level + transformations have occurred, which would change more traditional hash values. + + Learn more at https://www.fireeye.com/blog/threat-research/2014/01/tracking-malware-import-hashing.html.' + example: 0c6803c4e922103c4dca5963aad36ddf + default_field: false - name: pe.original_file_name level: extended type: keyword @@ -3437,6 +3819,13 @@ using it to search for hashes can help in situations where you're unsure what the hash algorithm is (and therefore which key name to search). default_field: false + - name: hosts + level: extended + type: keyword + ignore_above: 1024 + description: All hostnames or other host identifiers seen on your event. Example + identifiers include FQDNs, domain names, workstation names, or aliases. + default_field: false - name: ip level: extended type: ip @@ -3656,9 +4045,7 @@ - name: ip level: core type: ip - description: 'IP address of the server. - - Can be one or multiple IPv4 or IPv6 addresses.' + description: IP address of the server (IPv4 or IPv6). - name: mac level: core type: keyword @@ -3695,19 +4082,19 @@ ignore_above: 1024 description: 'The highest registered server domain, stripped of the subdomain. - For example, the registered domain for "foo.google.com" is "google.com". + For example, the registered domain for "foo.example.com" is "example.com". This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last two labels will not work well for TLDs such as "co.uk".' - example: google.com + example: example.com - name: top_level_domain level: extended type: keyword ignore_above: 1024 description: 'The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain - for google.com is "com". + for example.com is "com". This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking @@ -3766,7 +4153,7 @@ level: core type: keyword ignore_above: 1024 - description: Unique identifiers of the user. + description: Unique identifier of the user. - name: user.name level: core type: keyword @@ -3778,6 +4165,13 @@ default_field: false description: Short name or login of the user. example: albert + - name: user.roles + level: extended + type: keyword + ignore_above: 1024 + description: Array of user roles at the time of the event. + example: '["kibana_admin", "reporting_user"]' + default_field: false - name: service title: Service group: 2 @@ -3967,9 +4361,7 @@ - name: ip level: core type: ip - description: 'IP address of the source. - - Can be one or multiple IPv4 or IPv6 addresses.' + description: IP address of the source (IPv4 or IPv6). - name: mac level: core type: keyword @@ -4006,19 +4398,19 @@ ignore_above: 1024 description: 'The highest registered source domain, stripped of the subdomain. - For example, the registered domain for "foo.google.com" is "google.com". + For example, the registered domain for "foo.example.com" is "example.com". This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last two labels will not work well for TLDs such as "co.uk".' - example: google.com + example: example.com - name: top_level_domain level: extended type: keyword ignore_above: 1024 description: 'The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain - for google.com is "com". + for example.com is "com". This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking @@ -4077,7 +4469,7 @@ level: core type: keyword ignore_above: 1024 - description: Unique identifiers of the user. + description: Unique identifier of the user. - name: user.name level: core type: keyword @@ -4089,17 +4481,23 @@ default_field: false description: Short name or login of the user. example: albert + - name: user.roles + level: extended + type: keyword + ignore_above: 1024 + description: Array of user roles at the time of the event. + example: '["kibana_admin", "reporting_user"]' + default_field: false - name: threat title: Threat group: 2 - description: 'Fields to classify events and alerts according to a threat taxonomy - such as the Mitre ATT&CK framework. - - These fields are for users to classify alerts from all of their sources (e.g. - IDS, NGFW, etc.) within a common taxonomy. The threat.tactic.* are meant to - capture the high level category of the threat (e.g. "impact"). The threat.technique.* - fields are meant to capture which kind of approach is used by this detected - threat, to accomplish the goal (e.g. "endpoint denial of service").' + description: "Fields to classify events and alerts according to a threat taxonomy\ + \ such as the MITRE ATT&CK\xAE framework.\nThese fields are for users to classify\ + \ alerts from all of their sources (e.g. IDS, NGFW, etc.) within a common taxonomy.\ + \ The threat.tactic.* are meant to capture the high level category of the threat\ + \ (e.g. \"impact\"). The threat.technique.* fields are meant to capture which\ + \ kind of approach is used by this detected threat, to accomplish the goal (e.g.\ + \ \"endpoint denial of service\")." type: group fields: - name: framework @@ -4115,33 +4513,30 @@ level: extended type: keyword ignore_above: 1024 - description: The id of tactic used by this threat. You can use the Mitre ATT&CK - Matrix Tactic categorization, for example. (ex. https://attack.mitre.org/tactics/TA0040/ - ) + description: "The id of tactic used by this threat. You can use a MITRE ATT&CK\xAE\ + \ tactic, for example. (ex. https://attack.mitre.org/tactics/TA0040/ )" example: TA0040 - name: tactic.name level: extended type: keyword ignore_above: 1024 - description: Name of the type of tactic used by this threat. You can use the - Mitre ATT&CK Matrix Tactic categorization, for example. (ex. https://attack.mitre.org/tactics/TA0040/ - ) + description: "Name of the type of tactic used by this threat. You can use a\ + \ MITRE ATT&CK\xAE tactic, for example. (ex. https://attack.mitre.org/tactics/TA0040/)" example: impact - name: tactic.reference level: extended type: keyword ignore_above: 1024 - description: The reference url of tactic used by this threat. You can use the - Mitre ATT&CK Matrix Tactic categorization, for example. (ex. https://attack.mitre.org/tactics/TA0040/ - ) + description: "The reference url of tactic used by this threat. You can use a\ + \ MITRE ATT&CK\xAE tactic, for example. (ex. https://attack.mitre.org/tactics/TA0040/\ + \ )" example: https://attack.mitre.org/tactics/TA0040/ - name: technique.id level: extended type: keyword ignore_above: 1024 - description: The id of technique used by this tactic. You can use the Mitre - ATT&CK Matrix Tactic categorization, for example. (ex. https://attack.mitre.org/techniques/T1499/ - ) + description: "The id of technique used by this threat. You can use a MITRE ATT&CK\xAE\ + \ technique, for example. (ex. https://attack.mitre.org/techniques/T1499/)" example: T1499 - name: technique.name level: extended @@ -4152,17 +4547,16 @@ type: text norms: false default_field: false - description: The name of technique used by this tactic. You can use the Mitre - ATT&CK Matrix Tactic categorization, for example. (ex. https://attack.mitre.org/techniques/T1499/ - ) - example: endpoint denial of service + description: "The name of technique used by this threat. You can use a MITRE\ + \ ATT&CK\xAE technique, for example. (ex. https://attack.mitre.org/techniques/T1499/)" + example: Endpoint Denial of Service - name: technique.reference level: extended type: keyword ignore_above: 1024 - description: The reference url of technique used by this tactic. You can use - the Mitre ATT&CK Matrix Tactic categorization, for example. (ex. https://attack.mitre.org/techniques/T1499/ - ) + description: "The reference url of technique used by this threat. You can use\ + \ a MITRE ATT&CK\xAE technique, for example. (ex. https://attack.mitre.org/techniques/T1499/\ + \ )" example: https://attack.mitre.org/techniques/T1499/ - name: tls title: TLS @@ -4232,7 +4626,7 @@ ignore_above: 1024 description: Distinguished name of subject of the issuer of the x.509 certificate presented by the client. - example: CN=MyDomain Root CA, OU=Infrastructure Team, DC=mydomain, DC=com + example: CN=Example Root CA, OU=Infrastructure Team, DC=example, DC=com default_field: false - name: client.ja3 level: extended @@ -4261,7 +4655,7 @@ type: keyword ignore_above: 1024 description: Also called an SNI, this tells the server which hostname to which - the client is attempting to connect. When this value is available, it should + the client is attempting to connect to. When this value is available, it should get copied to `destination.domain`. example: www.elastic.co default_field: false @@ -4271,7 +4665,7 @@ ignore_above: 1024 description: Distinguished name of subject of the x.509 certificate presented by the client. - example: CN=myclient, OU=Documentation Team, DC=mydomain, DC=com + example: CN=myclient, OU=Documentation Team, DC=example, DC=com default_field: false - name: client.supported_ciphers level: extended @@ -4283,29 +4677,200 @@ - TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 - '...' default_field: false - - name: curve + - name: client.x509.alternative_names level: extended type: keyword ignore_above: 1024 - description: String indicating the curve used for the given cipher, when applicable. - example: secp256r1 + description: List of subject alternative names (SAN). Name types vary by certificate + authority and certificate type but commonly contain IP addresses, DNS names + (and wildcards), and email addresses. + example: '*.elastic.co' default_field: false - - name: established + - name: client.x509.issuer.common_name level: extended - type: boolean - description: Boolean flag indicating if the TLS negotiation was successful and - transitioned to an encrypted tunnel. + type: keyword + ignore_above: 1024 + description: List of common name (CN) of issuing certificate authority. + example: Example SHA2 High Assurance Server CA default_field: false - - name: next_protocol + - name: client.x509.issuer.country level: extended type: keyword ignore_above: 1024 - description: String indicating the protocol being tunneled. Per the values in - the IANA registry (https://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml#alpn-protocol-ids), - this string should be lower case. - example: http/1.1 + description: List of country (C) codes + example: US default_field: false - - name: resumed + - name: client.x509.issuer.distinguished_name + level: extended + type: keyword + ignore_above: 1024 + description: Distinguished name (DN) of issuing certificate authority. + example: C=US, O=Example Inc, OU=www.example.com, CN=Example SHA2 High Assurance + Server CA + default_field: false + - name: client.x509.issuer.locality + level: extended + type: keyword + ignore_above: 1024 + description: List of locality names (L) + example: Mountain View + default_field: false + - name: client.x509.issuer.organization + level: extended + type: keyword + ignore_above: 1024 + description: List of organizations (O) of issuing certificate authority. + example: Example Inc + default_field: false + - name: client.x509.issuer.organizational_unit + level: extended + type: keyword + ignore_above: 1024 + description: List of organizational units (OU) of issuing certificate authority. + example: www.example.com + default_field: false + - name: client.x509.issuer.state_or_province + level: extended + type: keyword + ignore_above: 1024 + description: List of state or province names (ST, S, or P) + example: California + default_field: false + - name: client.x509.not_after + level: extended + type: date + description: Time at which the certificate is no longer considered valid. + example: 2020-07-16 03:15:39+00:00 + default_field: false + - name: client.x509.not_before + level: extended + type: date + description: Time at which the certificate is first considered valid. + example: 2019-08-16 01:40:25+00:00 + default_field: false + - name: client.x509.public_key_algorithm + level: extended + type: keyword + ignore_above: 1024 + description: Algorithm used to generate the public key. + example: RSA + default_field: false + - name: client.x509.public_key_curve + level: extended + type: keyword + ignore_above: 1024 + description: The curve used by the elliptic curve public key algorithm. This + is algorithm specific. + example: nistp521 + default_field: false + - name: client.x509.public_key_exponent + level: extended + type: long + description: Exponent used to derive the public key. This is algorithm specific. + example: 65537 + index: false + default_field: false + - name: client.x509.public_key_size + level: extended + type: long + description: The size of the public key space in bits. + example: 2048 + default_field: false + - name: client.x509.serial_number + level: extended + type: keyword + ignore_above: 1024 + description: Unique serial number issued by the certificate authority. For consistency, + if this value is alphanumeric, it should be formatted without colons and uppercase + characters. + example: 55FBB9C7DEBF09809D12CCAA + default_field: false + - name: client.x509.signature_algorithm + level: extended + type: keyword + ignore_above: 1024 + description: Identifier for certificate signature algorithm. We recommend using + names found in Go Lang Crypto library. See https://github.com/golang/go/blob/go1.14/src/crypto/x509/x509.go#L337-L353. + example: SHA256-RSA + default_field: false + - name: client.x509.subject.common_name + level: extended + type: keyword + ignore_above: 1024 + description: List of common names (CN) of subject. + example: shared.global.example.net + default_field: false + - name: client.x509.subject.country + level: extended + type: keyword + ignore_above: 1024 + description: List of country (C) code + example: US + default_field: false + - name: client.x509.subject.distinguished_name + level: extended + type: keyword + ignore_above: 1024 + description: Distinguished name (DN) of the certificate subject entity. + example: C=US, ST=California, L=San Francisco, O=Example, Inc., CN=shared.global.example.net + default_field: false + - name: client.x509.subject.locality + level: extended + type: keyword + ignore_above: 1024 + description: List of locality names (L) + example: San Francisco + default_field: false + - name: client.x509.subject.organization + level: extended + type: keyword + ignore_above: 1024 + description: List of organizations (O) of subject. + example: Example, Inc. + default_field: false + - name: client.x509.subject.organizational_unit + level: extended + type: keyword + ignore_above: 1024 + description: List of organizational units (OU) of subject. + default_field: false + - name: client.x509.subject.state_or_province + level: extended + type: keyword + ignore_above: 1024 + description: List of state or province names (ST, S, or P) + example: California + default_field: false + - name: client.x509.version_number + level: extended + type: keyword + ignore_above: 1024 + description: Version of x509 format. + example: 3 + default_field: false + - name: curve + level: extended + type: keyword + ignore_above: 1024 + description: String indicating the curve used for the given cipher, when applicable. + example: secp256r1 + default_field: false + - name: established + level: extended + type: boolean + description: Boolean flag indicating if the TLS negotiation was successful and + transitioned to an encrypted tunnel. + default_field: false + - name: next_protocol + level: extended + type: keyword + ignore_above: 1024 + description: String indicating the protocol being tunneled. Per the values in + the IANA registry (https://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml#alpn-protocol-ids), + this string should be lower case. + example: http/1.1 + default_field: false + - name: resumed level: extended type: boolean description: Boolean flag indicating if this TLS connection was resumed from @@ -4364,7 +4929,7 @@ ignore_above: 1024 description: Subject of the issuer of the x.509 certificate presented by the server. - example: CN=MyDomain Root CA, OU=Infrastructure Team, DC=mydomain, DC=com + example: CN=Example Root CA, OU=Infrastructure Team, DC=example, DC=com default_field: false - name: server.ja3s level: extended @@ -4393,7 +4958,178 @@ type: keyword ignore_above: 1024 description: Subject of the x.509 certificate presented by the server. - example: CN=www.mydomain.com, OU=Infrastructure Team, DC=mydomain, DC=com + example: CN=www.example.com, OU=Infrastructure Team, DC=example, DC=com + default_field: false + - name: server.x509.alternative_names + level: extended + type: keyword + ignore_above: 1024 + description: List of subject alternative names (SAN). Name types vary by certificate + authority and certificate type but commonly contain IP addresses, DNS names + (and wildcards), and email addresses. + example: '*.elastic.co' + default_field: false + - name: server.x509.issuer.common_name + level: extended + type: keyword + ignore_above: 1024 + description: List of common name (CN) of issuing certificate authority. + example: Example SHA2 High Assurance Server CA + default_field: false + - name: server.x509.issuer.country + level: extended + type: keyword + ignore_above: 1024 + description: List of country (C) codes + example: US + default_field: false + - name: server.x509.issuer.distinguished_name + level: extended + type: keyword + ignore_above: 1024 + description: Distinguished name (DN) of issuing certificate authority. + example: C=US, O=Example Inc, OU=www.example.com, CN=Example SHA2 High Assurance + Server CA + default_field: false + - name: server.x509.issuer.locality + level: extended + type: keyword + ignore_above: 1024 + description: List of locality names (L) + example: Mountain View + default_field: false + - name: server.x509.issuer.organization + level: extended + type: keyword + ignore_above: 1024 + description: List of organizations (O) of issuing certificate authority. + example: Example Inc + default_field: false + - name: server.x509.issuer.organizational_unit + level: extended + type: keyword + ignore_above: 1024 + description: List of organizational units (OU) of issuing certificate authority. + example: www.example.com + default_field: false + - name: server.x509.issuer.state_or_province + level: extended + type: keyword + ignore_above: 1024 + description: List of state or province names (ST, S, or P) + example: California + default_field: false + - name: server.x509.not_after + level: extended + type: date + description: Time at which the certificate is no longer considered valid. + example: 2020-07-16 03:15:39+00:00 + default_field: false + - name: server.x509.not_before + level: extended + type: date + description: Time at which the certificate is first considered valid. + example: 2019-08-16 01:40:25+00:00 + default_field: false + - name: server.x509.public_key_algorithm + level: extended + type: keyword + ignore_above: 1024 + description: Algorithm used to generate the public key. + example: RSA + default_field: false + - name: server.x509.public_key_curve + level: extended + type: keyword + ignore_above: 1024 + description: The curve used by the elliptic curve public key algorithm. This + is algorithm specific. + example: nistp521 + default_field: false + - name: server.x509.public_key_exponent + level: extended + type: long + description: Exponent used to derive the public key. This is algorithm specific. + example: 65537 + index: false + default_field: false + - name: server.x509.public_key_size + level: extended + type: long + description: The size of the public key space in bits. + example: 2048 + default_field: false + - name: server.x509.serial_number + level: extended + type: keyword + ignore_above: 1024 + description: Unique serial number issued by the certificate authority. For consistency, + if this value is alphanumeric, it should be formatted without colons and uppercase + characters. + example: 55FBB9C7DEBF09809D12CCAA + default_field: false + - name: server.x509.signature_algorithm + level: extended + type: keyword + ignore_above: 1024 + description: Identifier for certificate signature algorithm. We recommend using + names found in Go Lang Crypto library. See https://github.com/golang/go/blob/go1.14/src/crypto/x509/x509.go#L337-L353. + example: SHA256-RSA + default_field: false + - name: server.x509.subject.common_name + level: extended + type: keyword + ignore_above: 1024 + description: List of common names (CN) of subject. + example: shared.global.example.net + default_field: false + - name: server.x509.subject.country + level: extended + type: keyword + ignore_above: 1024 + description: List of country (C) code + example: US + default_field: false + - name: server.x509.subject.distinguished_name + level: extended + type: keyword + ignore_above: 1024 + description: Distinguished name (DN) of the certificate subject entity. + example: C=US, ST=California, L=San Francisco, O=Example, Inc., CN=shared.global.example.net + default_field: false + - name: server.x509.subject.locality + level: extended + type: keyword + ignore_above: 1024 + description: List of locality names (L) + example: San Francisco + default_field: false + - name: server.x509.subject.organization + level: extended + type: keyword + ignore_above: 1024 + description: List of organizations (O) of subject. + example: Example, Inc. + default_field: false + - name: server.x509.subject.organizational_unit + level: extended + type: keyword + ignore_above: 1024 + description: List of organizational units (OU) of subject. + default_field: false + - name: server.x509.subject.state_or_province + level: extended + type: keyword + ignore_above: 1024 + description: List of state or province names (ST, S, or P) + example: California + default_field: false + - name: server.x509.version_number + level: extended + type: keyword + ignore_above: 1024 + description: Version of x509 format. + example: 3 default_field: false - name: version level: extended @@ -4418,6 +5154,16 @@ - to queries made through multiple back-end services. type: group fields: + - name: span.id + level: extended + type: keyword + ignore_above: 1024 + description: 'Unique identifier of the span within the scope of its trace. + + A span represents an operation within a transaction, such as a request to + another service, or a database query.' + example: 3ff9a8981b7ccd5a + default_field: false - name: trace.id level: extended type: keyword @@ -4431,7 +5177,7 @@ level: extended type: keyword ignore_above: 1024 - description: 'Unique identifier of the transaction. + description: 'Unique identifier of the transaction within the scope of its trace. A transaction is the highest level of work measured within a service, such as a request to a server.' @@ -4533,12 +5279,12 @@ ignore_above: 1024 description: 'The highest registered url domain, stripped of the subdomain. - For example, the registered domain for "foo.google.com" is "google.com". + For example, the registered domain for "foo.example.com" is "example.com". This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last two labels will not work well for TLDs such as "co.uk".' - example: google.com + example: example.com - name: scheme level: extended type: keyword @@ -4553,7 +5299,7 @@ ignore_above: 1024 description: 'The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain - for google.com is "com". + for example.com is "com". This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking @@ -4627,7 +5373,7 @@ level: core type: keyword ignore_above: 1024 - description: Unique identifiers of the user. + description: Unique identifier of the user. - name: name level: core type: keyword @@ -4639,6 +5385,13 @@ default_field: false description: Short name or login of the user. example: albert + - name: roles + level: extended + type: keyword + ignore_above: 1024 + description: Array of user roles at the time of the event. + example: '["kibana_admin", "reporting_user"]' + default_field: false - name: user_agent title: User agent group: 2 @@ -4886,3 +5639,188 @@ prioritization regarding remediation. For example (https://nvd.nist.gov/vuln-metrics/cvss) example: Critical default_field: false + - name: x509 + title: x509 Certificate + group: 2 + description: This implements the common core fields for x509 certificates. This + information is likely logged with TLS sessions, digital signatures found in + executable binaries, S/MIME information in email bodies, or analysis of files + on disk. When only a single certificate is logged in an event, it should be + nested under `file`. When hashes of the DER-encoded certificate are available, + the `hash` data set should be populated as well (e.g. `file.hash.sha256`). For + events that contain certificate information for both sides of the connection, + the x509 object could be nested under the respective side of the connection + information (e.g. `tls.server.x509`). + type: group + fields: + - name: alternative_names + level: extended + type: keyword + ignore_above: 1024 + description: List of subject alternative names (SAN). Name types vary by certificate + authority and certificate type but commonly contain IP addresses, DNS names + (and wildcards), and email addresses. + example: '*.elastic.co' + default_field: false + - name: issuer.common_name + level: extended + type: keyword + ignore_above: 1024 + description: List of common name (CN) of issuing certificate authority. + example: Example SHA2 High Assurance Server CA + default_field: false + - name: issuer.country + level: extended + type: keyword + ignore_above: 1024 + description: List of country (C) codes + example: US + default_field: false + - name: issuer.distinguished_name + level: extended + type: keyword + ignore_above: 1024 + description: Distinguished name (DN) of issuing certificate authority. + example: C=US, O=Example Inc, OU=www.example.com, CN=Example SHA2 High Assurance + Server CA + default_field: false + - name: issuer.locality + level: extended + type: keyword + ignore_above: 1024 + description: List of locality names (L) + example: Mountain View + default_field: false + - name: issuer.organization + level: extended + type: keyword + ignore_above: 1024 + description: List of organizations (O) of issuing certificate authority. + example: Example Inc + default_field: false + - name: issuer.organizational_unit + level: extended + type: keyword + ignore_above: 1024 + description: List of organizational units (OU) of issuing certificate authority. + example: www.example.com + default_field: false + - name: issuer.state_or_province + level: extended + type: keyword + ignore_above: 1024 + description: List of state or province names (ST, S, or P) + example: California + default_field: false + - name: not_after + level: extended + type: date + description: Time at which the certificate is no longer considered valid. + example: 2020-07-16 03:15:39+00:00 + default_field: false + - name: not_before + level: extended + type: date + description: Time at which the certificate is first considered valid. + example: 2019-08-16 01:40:25+00:00 + default_field: false + - name: public_key_algorithm + level: extended + type: keyword + ignore_above: 1024 + description: Algorithm used to generate the public key. + example: RSA + default_field: false + - name: public_key_curve + level: extended + type: keyword + ignore_above: 1024 + description: The curve used by the elliptic curve public key algorithm. This + is algorithm specific. + example: nistp521 + default_field: false + - name: public_key_exponent + level: extended + type: long + description: Exponent used to derive the public key. This is algorithm specific. + example: 65537 + index: false + default_field: false + - name: public_key_size + level: extended + type: long + description: The size of the public key space in bits. + example: 2048 + default_field: false + - name: serial_number + level: extended + type: keyword + ignore_above: 1024 + description: Unique serial number issued by the certificate authority. For consistency, + if this value is alphanumeric, it should be formatted without colons and uppercase + characters. + example: 55FBB9C7DEBF09809D12CCAA + default_field: false + - name: signature_algorithm + level: extended + type: keyword + ignore_above: 1024 + description: Identifier for certificate signature algorithm. We recommend using + names found in Go Lang Crypto library. See https://github.com/golang/go/blob/go1.14/src/crypto/x509/x509.go#L337-L353. + example: SHA256-RSA + default_field: false + - name: subject.common_name + level: extended + type: keyword + ignore_above: 1024 + description: List of common names (CN) of subject. + example: shared.global.example.net + default_field: false + - name: subject.country + level: extended + type: keyword + ignore_above: 1024 + description: List of country (C) code + example: US + default_field: false + - name: subject.distinguished_name + level: extended + type: keyword + ignore_above: 1024 + description: Distinguished name (DN) of the certificate subject entity. + example: C=US, ST=California, L=San Francisco, O=Example, Inc., CN=shared.global.example.net + default_field: false + - name: subject.locality + level: extended + type: keyword + ignore_above: 1024 + description: List of locality names (L) + example: San Francisco + default_field: false + - name: subject.organization + level: extended + type: keyword + ignore_above: 1024 + description: List of organizations (O) of subject. + example: Example, Inc. + default_field: false + - name: subject.organizational_unit + level: extended + type: keyword + ignore_above: 1024 + description: List of organizational units (OU) of subject. + default_field: false + - name: subject.state_or_province + level: extended + type: keyword + ignore_above: 1024 + description: List of state or province names (ST, S, or P) + example: California + default_field: false + - name: version_number + level: extended + type: keyword + ignore_above: 1024 + description: Version of x509 format. + example: 3 + default_field: false diff --git a/libbeat/processors/add_cloud_metadata/_meta/fields.yml b/libbeat/processors/add_cloud_metadata/_meta/fields.yml index e008747b47b..c33f8f2b869 100644 --- a/libbeat/processors/add_cloud_metadata/_meta/fields.yml +++ b/libbeat/processors/add_cloud_metadata/_meta/fields.yml @@ -3,11 +3,6 @@ description: > Metadata from cloud providers added by the add_cloud_metadata processor. fields: - - - name: cloud.project.id - example: project-x - description: > - Name of the project in Google Cloud. - name: cloud.image.id example: ami-abcd1234 diff --git a/libbeat/tests/system/beat/common_tests.py b/libbeat/tests/system/beat/common_tests.py index 1f2c890749d..bfa4149fed1 100644 --- a/libbeat/tests/system/beat/common_tests.py +++ b/libbeat/tests/system/beat/common_tests.py @@ -21,8 +21,9 @@ def run_export_cmd(self, cmd, extra=[]): if len(extra) != 0: args += extra exit_code = self.run_beat(extra_args=args, logging_args=[]) - assert exit_code == 0 output = self.get_log() + if exit_code != 0: + raise Exception("export command returned with an error: {}".format(output)) trailer = "\nPASS\n" pos = output.rfind(trailer) if pos == -1: diff --git a/metricbeat/docs/fields.asciidoc b/metricbeat/docs/fields.asciidoc index 419fc19630c..fb776f6a4d1 100644 --- a/metricbeat/docs/fields.asciidoc +++ b/metricbeat/docs/fields.asciidoc @@ -6038,16 +6038,6 @@ Metadata from cloud providers added by the add_cloud_metadata processor. -*`cloud.project.id`*:: -+ --- -Name of the project in Google Cloud. - - -example: project-x - --- - *`cloud.image.id`*:: + -- @@ -9077,6 +9067,18 @@ The agent fields contain the data about the software entity, if any, that collec Examples include Beats. Agents may also run on observers. ECS agent.* fields shall be populated with details of the agent running on the host or observer where the event happened or the measurement was taken. +*`agent.build.original`*:: ++ +-- +Extended build information for the agent. +This field is intended to contain any build information that a data source may provide, no specific formatting is required. + +type: keyword + +example: metricbeat version 7.6.0 (amd64), libbeat 7.6.0 [6a23e8f8f30f5001ba344e4e54d8d9cb82cb107c built 2020-02-05 23:10:10 +0000 UTC] + +-- + *`agent.ephemeral_id`*:: + -- @@ -9118,7 +9120,7 @@ example: foo + -- Type of the agent. -The agent type stays always the same and should be given by the agent used. In case of Filebeat the agent would always be Filebeat also if two Filebeat instances are run on the same machine. +The agent type always stays the same and should be given by the agent used. In case of Filebeat the agent would always be Filebeat also if two Filebeat instances are run on the same machine. type: keyword @@ -9334,8 +9336,7 @@ example: Quebec *`client.ip`*:: + -- -IP address of the client. -Can be one or multiple IPv4 or IPv6 addresses. +IP address of the client (IPv4 or IPv6). type: ip @@ -9398,19 +9399,19 @@ format: string + -- The highest registered client domain, stripped of the subdomain. -For example, the registered domain for "foo.google.com" is "google.com". +For example, the registered domain for "foo.example.com" is "example.com". This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last two labels will not work well for TLDs such as "co.uk". type: keyword -example: google.com +example: example.com -- *`client.top_level_domain`*:: + -- -The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for google.com is "com". +The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for example.com is "com". This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last label will not work well for effective TLDs such as "co.uk". type: keyword @@ -9497,7 +9498,7 @@ type: keyword *`client.user.id`*:: + -- -Unique identifiers of the user. +Unique identifier of the user. type: keyword @@ -9521,6 +9522,17 @@ type: text -- +*`client.user.roles`*:: ++ +-- +Array of user roles at the time of the event. + +type: keyword + +example: ["kibana_admin", "reporting_user"] + +-- + [float] === cloud @@ -9539,6 +9551,18 @@ example: 666777888999 -- +*`cloud.account.name`*:: ++ +-- +The cloud account name or alias used to identify different entities in a multi-tenant environment. +Examples: AWS account name, Google Cloud ORG display name. + +type: keyword + +example: elastic-dev + +-- + *`cloud.availability_zone`*:: + -- @@ -9581,6 +9605,30 @@ example: t2.medium -- +*`cloud.project.id`*:: ++ +-- +The cloud project identifier. +Examples: Google Cloud Project id, Azure Project id. + +type: keyword + +example: my-project + +-- + +*`cloud.project.name`*:: ++ +-- +The cloud project name. +Examples: Google Cloud Project name, Azure Project name. + +type: keyword + +example: my project + +-- + *`cloud.provider`*:: + -- @@ -9891,8 +9939,7 @@ example: Quebec *`destination.ip`*:: + -- -IP address of the destination. -Can be one or multiple IPv4 or IPv6 addresses. +IP address of the destination (IPv4 or IPv6). type: ip @@ -9955,19 +10002,19 @@ format: string + -- The highest registered destination domain, stripped of the subdomain. -For example, the registered domain for "foo.google.com" is "google.com". +For example, the registered domain for "foo.example.com" is "example.com". This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last two labels will not work well for TLDs such as "co.uk". type: keyword -example: google.com +example: example.com -- *`destination.top_level_domain`*:: + -- -The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for google.com is "com". +The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for example.com is "com". This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last label will not work well for effective TLDs such as "co.uk". type: keyword @@ -10054,7 +10101,7 @@ type: keyword *`destination.user.id`*:: + -- -Unique identifiers of the user. +Unique identifier of the user. type: keyword @@ -10078,6 +10125,17 @@ type: text -- +*`destination.user.roles`*:: ++ +-- +Array of user roles at the time of the event. + +type: keyword + +example: ["kibana_admin", "reporting_user"] + +-- + [float] === dll @@ -10206,6 +10264,17 @@ example: C:\Windows\System32\kernel32.dll -- +*`dll.pe.architecture`*:: ++ +-- +CPU architecture target for the file. + +type: keyword + +example: x64 + +-- + *`dll.pe.company`*:: + -- @@ -10239,6 +10308,18 @@ example: 6.3.9600.17415 -- +*`dll.pe.imphash`*:: ++ +-- +A hash of the imports in a PE file. An imphash -- or import hash -- can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. +Learn more at https://www.fireeye.com/blog/threat-research/2014/01/tracking-malware-import-hashing.html. + +type: keyword + +example: 0c6803c4e922103c4dca5963aad36ddf + +-- + *`dll.pe.original_file_name`*:: + -- @@ -10310,7 +10391,7 @@ If a chain of CNAME is being resolved, each answer's `name` should be the one th type: keyword -example: www.google.com +example: www.example.com -- @@ -10389,7 +10470,7 @@ If the name field contains non-printable characters (below 32 or above 126), tho type: keyword -example: www.google.com +example: www.example.com -- @@ -10397,12 +10478,12 @@ example: www.google.com + -- The highest registered domain, stripped of the subdomain. -For example, the registered domain for "foo.google.com" is "google.com". +For example, the registered domain for "foo.example.com" is "example.com". This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last two labels will not work well for TLDs such as "co.uk". type: keyword -example: google.com +example: example.com -- @@ -10421,7 +10502,7 @@ example: www *`dns.question.top_level_domain`*:: + -- -The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for google.com is "com". +The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for example.com is "com". This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last label will not work well for effective TLDs such as "co.uk". type: keyword @@ -10538,6 +10619,8 @@ The stack trace of this error in plain text. type: keyword +Field is not indexed. + -- *`error.stack_trace.text`*:: @@ -10720,6 +10803,8 @@ type: keyword example: Sep 19 08:26:10 host CEF:0|Security| threatmanager|1.0|100| worm successfully stopped|10|src=10.0.0.1 dst=2.1.2.2spt=1232 +Field is not indexed. + -- *`event.outcome`*:: @@ -10749,6 +10834,18 @@ example: kernel -- +*`event.reason`*:: ++ +-- +Reason why this event happened, according to the source. +This describes the why of a particular action or outcome captured in the event. Where `event.action` captures the action from the event, `event.reason` describes why that action was taken. For example, a web proxy with an `event.action` which denied the request may also populate `event.reason` with the reason why (e.g. `blocked site`). + +type: keyword + +example: Terminated an unexpected process + +-- + *`event.reference`*:: + -- @@ -10757,7 +10854,7 @@ This URL links to a static definition of the this event. Alert events, indicated type: keyword -example: https://system.vendor.com/event/#0001234 +example: https://system.example.com/event/#0001234 -- @@ -10841,11 +10938,11 @@ type: keyword + -- URL linking to an external system to continue investigation of this event. -This URL links to another system where in-depth investigation of the specific occurence of this event can take place. Alert events, indicated by `event.kind:alert`, are a common use case for this field. +This URL links to another system where in-depth investigation of the specific occurrence of this event can take place. Alert events, indicated by `event.kind:alert`, are a common use case for this field. type: keyword -example: https://mysystem.mydomain.com/alert/5271dedb-f5b0-4218-87f0-4ac4870a38fe +example: https://mysystem.example.com/alert/5271dedb-f5b0-4218-87f0-4ac4870a38fe -- @@ -11139,6 +11236,17 @@ type: text -- +*`file.pe.architecture`*:: ++ +-- +CPU architecture target for the file. + +type: keyword + +example: x64 + +-- + *`file.pe.company`*:: + -- @@ -11172,6 +11280,18 @@ example: 6.3.9600.17415 -- +*`file.pe.imphash`*:: ++ +-- +A hash of the imports in a PE file. An imphash -- or import hash -- can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. +Learn more at https://www.fireeye.com/blog/threat-research/2014/01/tracking-malware-import-hashing.html. + +type: keyword + +example: 0c6803c4e922103c4dca5963aad36ddf + +-- + *`file.pe.original_file_name`*:: + -- @@ -11244,211 +11364,278 @@ example: 1001 -- -[float] -=== geo +*`file.x509.alternative_names`*:: ++ +-- +List of subject alternative names (SAN). Name types vary by certificate authority and certificate type but commonly contain IP addresses, DNS names (and wildcards), and email addresses. -Geo fields can carry data about a specific location related to an event. -This geolocation information can be derived from techniques such as Geo IP, or be user-supplied. +type: keyword +example: *.elastic.co -*`geo.city_name`*:: +-- + +*`file.x509.issuer.common_name`*:: + -- -City name. +List of common name (CN) of issuing certificate authority. type: keyword -example: Montreal +example: Example SHA2 High Assurance Server CA -- -*`geo.continent_name`*:: +*`file.x509.issuer.country`*:: + -- -Name of the continent. +List of country (C) codes type: keyword -example: North America +example: US -- -*`geo.country_iso_code`*:: +*`file.x509.issuer.distinguished_name`*:: + -- -Country ISO code. +Distinguished name (DN) of issuing certificate authority. type: keyword -example: CA +example: C=US, O=Example Inc, OU=www.example.com, CN=Example SHA2 High Assurance Server CA -- -*`geo.country_name`*:: +*`file.x509.issuer.locality`*:: + -- -Country name. +List of locality names (L) type: keyword -example: Canada +example: Mountain View -- -*`geo.location`*:: +*`file.x509.issuer.organization`*:: + -- -Longitude and latitude. +List of organizations (O) of issuing certificate authority. -type: geo_point +type: keyword -example: { "lon": -73.614830, "lat": 45.505918 } +example: Example Inc -- -*`geo.name`*:: +*`file.x509.issuer.organizational_unit`*:: + -- -User-defined description of a location, at the level of granularity they care about. -Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. -Not typically used in automated geolocation. +List of organizational units (OU) of issuing certificate authority. type: keyword -example: boston-dc +example: www.example.com -- -*`geo.region_iso_code`*:: +*`file.x509.issuer.state_or_province`*:: + -- -Region ISO code. +List of state or province names (ST, S, or P) type: keyword -example: CA-QC +example: California -- -*`geo.region_name`*:: +*`file.x509.not_after`*:: + -- -Region name. +Time at which the certificate is no longer considered valid. -type: keyword +type: date -example: Quebec +example: 2020-07-16 03:15:39+00:00 -- -[float] -=== group +*`file.x509.not_before`*:: ++ +-- +Time at which the certificate is first considered valid. -The group fields are meant to represent groups that are relevant to the event. +type: date +example: 2019-08-16 01:40:25+00:00 -*`group.domain`*:: +-- + +*`file.x509.public_key_algorithm`*:: + -- -Name of the directory the group is a member of. -For example, an LDAP or Active Directory domain name. +Algorithm used to generate the public key. type: keyword +example: RSA + -- -*`group.id`*:: +*`file.x509.public_key_curve`*:: + -- -Unique identifier for the group on the system/platform. +The curve used by the elliptic curve public key algorithm. This is algorithm specific. type: keyword +example: nistp521 + -- -*`group.name`*:: +*`file.x509.public_key_exponent`*:: + -- -Name of the group. +Exponent used to derive the public key. This is algorithm specific. + +type: long + +example: 65537 + +Field is not indexed. + +-- + +*`file.x509.public_key_size`*:: ++ +-- +The size of the public key space in bits. + +type: long + +example: 2048 + +-- + +*`file.x509.serial_number`*:: ++ +-- +Unique serial number issued by the certificate authority. For consistency, if this value is alphanumeric, it should be formatted without colons and uppercase characters. type: keyword +example: 55FBB9C7DEBF09809D12CCAA + -- -[float] -=== hash +*`file.x509.signature_algorithm`*:: ++ +-- +Identifier for certificate signature algorithm. We recommend using names found in Go Lang Crypto library. See https://github.com/golang/go/blob/go1.14/src/crypto/x509/x509.go#L337-L353. -The hash fields represent different hash algorithms and their values. -Field names for common hashes (e.g. MD5, SHA1) are predefined. Add fields for other hashes by lowercasing the hash algorithm name and using underscore separators as appropriate (snake case, e.g. sha3_512). +type: keyword +example: SHA256-RSA -*`hash.md5`*:: +-- + +*`file.x509.subject.common_name`*:: + -- -MD5 hash. +List of common names (CN) of subject. type: keyword +example: shared.global.example.net + -- -*`hash.sha1`*:: +*`file.x509.subject.country`*:: + -- -SHA1 hash. +List of country (C) code type: keyword +example: US + -- -*`hash.sha256`*:: +*`file.x509.subject.distinguished_name`*:: + -- -SHA256 hash. +Distinguished name (DN) of the certificate subject entity. type: keyword +example: C=US, ST=California, L=San Francisco, O=Example, Inc., CN=shared.global.example.net + -- -*`hash.sha512`*:: +*`file.x509.subject.locality`*:: + -- -SHA512 hash. +List of locality names (L) type: keyword +example: San Francisco + -- -[float] -=== host +*`file.x509.subject.organization`*:: ++ +-- +List of organizations (O) of subject. -A host is defined as a general computing instance. -ECS host.* fields should be populated with details about the host on which the event happened, or from which the measurement was taken. Host types include hardware, virtual machines, Docker containers, and Kubernetes nodes. +type: keyword +example: Example, Inc. -*`host.architecture`*:: +-- + +*`file.x509.subject.organizational_unit`*:: + -- -Operating system architecture. +List of organizational units (OU) of subject. type: keyword -example: x86_64 +-- + +*`file.x509.subject.state_or_province`*:: ++ +-- +List of state or province names (ST, S, or P) + +type: keyword + +example: California -- -*`host.domain`*:: +*`file.x509.version_number`*:: + -- -Name of the domain of which the host is a member. -For example, on Windows this could be the host's Active Directory domain or NetBIOS domain name. For Linux this could be the domain of the host's LDAP provider. +Version of x509 format. type: keyword -example: CONTOSO +example: 3 -- -*`host.geo.city_name`*:: +[float] +=== geo + +Geo fields can carry data about a specific location related to an event. +This geolocation information can be derived from techniques such as Geo IP, or be user-supplied. + + +*`geo.city_name`*:: + -- City name. @@ -11459,7 +11646,7 @@ example: Montreal -- -*`host.geo.continent_name`*:: +*`geo.continent_name`*:: + -- Name of the continent. @@ -11470,7 +11657,7 @@ example: North America -- -*`host.geo.country_iso_code`*:: +*`geo.country_iso_code`*:: + -- Country ISO code. @@ -11481,7 +11668,7 @@ example: CA -- -*`host.geo.country_name`*:: +*`geo.country_name`*:: + -- Country name. @@ -11492,7 +11679,7 @@ example: Canada -- -*`host.geo.location`*:: +*`geo.location`*:: + -- Longitude and latitude. @@ -11503,7 +11690,7 @@ example: { "lon": -73.614830, "lat": 45.505918 } -- -*`host.geo.name`*:: +*`geo.name`*:: + -- User-defined description of a location, at the level of granularity they care about. @@ -11516,7 +11703,7 @@ example: boston-dc -- -*`host.geo.region_iso_code`*:: +*`geo.region_iso_code`*:: + -- Region ISO code. @@ -11527,7 +11714,7 @@ example: CA-QC -- -*`host.geo.region_name`*:: +*`geo.region_name`*:: + -- Region name. @@ -11538,20 +11725,217 @@ example: Quebec -- -*`host.hostname`*:: +[float] +=== group + +The group fields are meant to represent groups that are relevant to the event. + + +*`group.domain`*:: + -- -Hostname of the host. -It normally contains what the `hostname` command returns on the host machine. +Name of the directory the group is a member of. +For example, an LDAP or Active Directory domain name. type: keyword -- -*`host.id`*:: +*`group.id`*:: + -- -Unique host id. +Unique identifier for the group on the system/platform. + +type: keyword + +-- + +*`group.name`*:: ++ +-- +Name of the group. + +type: keyword + +-- + +[float] +=== hash + +The hash fields represent different hash algorithms and their values. +Field names for common hashes (e.g. MD5, SHA1) are predefined. Add fields for other hashes by lowercasing the hash algorithm name and using underscore separators as appropriate (snake case, e.g. sha3_512). + + +*`hash.md5`*:: ++ +-- +MD5 hash. + +type: keyword + +-- + +*`hash.sha1`*:: ++ +-- +SHA1 hash. + +type: keyword + +-- + +*`hash.sha256`*:: ++ +-- +SHA256 hash. + +type: keyword + +-- + +*`hash.sha512`*:: ++ +-- +SHA512 hash. + +type: keyword + +-- + +[float] +=== host + +A host is defined as a general computing instance. +ECS host.* fields should be populated with details about the host on which the event happened, or from which the measurement was taken. Host types include hardware, virtual machines, Docker containers, and Kubernetes nodes. + + +*`host.architecture`*:: ++ +-- +Operating system architecture. + +type: keyword + +example: x86_64 + +-- + +*`host.domain`*:: ++ +-- +Name of the domain of which the host is a member. +For example, on Windows this could be the host's Active Directory domain or NetBIOS domain name. For Linux this could be the domain of the host's LDAP provider. + +type: keyword + +example: CONTOSO + +-- + +*`host.geo.city_name`*:: ++ +-- +City name. + +type: keyword + +example: Montreal + +-- + +*`host.geo.continent_name`*:: ++ +-- +Name of the continent. + +type: keyword + +example: North America + +-- + +*`host.geo.country_iso_code`*:: ++ +-- +Country ISO code. + +type: keyword + +example: CA + +-- + +*`host.geo.country_name`*:: ++ +-- +Country name. + +type: keyword + +example: Canada + +-- + +*`host.geo.location`*:: ++ +-- +Longitude and latitude. + +type: geo_point + +example: { "lon": -73.614830, "lat": 45.505918 } + +-- + +*`host.geo.name`*:: ++ +-- +User-defined description of a location, at the level of granularity they care about. +Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. +Not typically used in automated geolocation. + +type: keyword + +example: boston-dc + +-- + +*`host.geo.region_iso_code`*:: ++ +-- +Region ISO code. + +type: keyword + +example: CA-QC + +-- + +*`host.geo.region_name`*:: ++ +-- +Region name. + +type: keyword + +example: Quebec + +-- + +*`host.hostname`*:: ++ +-- +Hostname of the host. +It normally contains what the `hostname` command returns on the host machine. + +type: keyword + +-- + +*`host.id`*:: ++ +-- +Unique host id. As hostname is not always unique, use values that are meaningful in your environment. Example: The current usage of `beat.name`. @@ -11766,7 +12150,7 @@ type: keyword *`host.user.id`*:: + -- -Unique identifiers of the user. +Unique identifier of the user. type: keyword @@ -11790,6 +12174,17 @@ type: text -- +*`host.user.roles`*:: ++ +-- +Array of user roles at the time of the event. + +type: keyword + +example: ["kibana_admin", "reporting_user"] + +-- + [float] === http @@ -11844,11 +12239,13 @@ format: bytes + -- HTTP request method. -The field value must be normalized to lowercase for querying. See the documentation section "Implementing ECS". +Prior to ECS 1.6.0 the following guidance was provided: +"The field value must be normalized to lowercase for querying." +As of ECS 1.6.0, the guidance is deprecated because the original case of the method may be useful in anomaly detection. Original case will be mandated in ECS 2.0.0 type: keyword -example: get, post, put +example: GET, POST, PUT, PoST -- @@ -11978,6 +12375,18 @@ The log.* fields are typically populated with details about the logging mechanis The details specific to your event source are typically not logged under `log.*`, but rather in `event.*` or in other ECS fields. +*`log.file.path`*:: ++ +-- +Full path to the log file this event came from, including the file name. It should include the drive letter, when appropriate. +If the event wasn't read from a log file, do not populate this field. + +type: keyword + +example: /var/log/fun-times.log + +-- + *`log.level`*:: + -- @@ -12016,7 +12425,8 @@ example: 42 *`log.origin.file.name`*:: + -- -The name of the file containing the source code which originated the log event. Note that this is not the name of the log file. +The name of the file containing the source code which originated the log event. +Note that this field is not meant to capture the log file. The correct field to capture the log file is `log.file.path`. type: keyword @@ -12046,6 +12456,8 @@ type: keyword example: Sep 19 08:26:10 localhost My log +Field is not indexed. + -- *`log.syslog`*:: @@ -13014,6 +13426,17 @@ example: 1.12.9 These fields contain Windows Portable Executable (PE) metadata. +*`pe.architecture`*:: ++ +-- +CPU architecture target for the file. + +type: keyword + +example: x64 + +-- + *`pe.company`*:: + -- @@ -13047,6 +13470,18 @@ example: 6.3.9600.17415 -- +*`pe.imphash`*:: ++ +-- +A hash of the imports in a PE file. An imphash -- or import hash -- can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. +Learn more at https://www.fireeye.com/blog/threat-research/2014/01/tracking-malware-import-hashing.html. + +type: keyword + +example: 0c6803c4e922103c4dca5963aad36ddf + +-- + *`pe.original_file_name`*:: + -- @@ -13278,12 +13713,12 @@ type: text *`process.parent.args`*:: + -- -Array of process arguments. +Array of process arguments, starting with the absolute path to the executable. May be filtered to protect sensitive information. type: keyword -example: ['ssh', '-l', 'user', '10.0.0.16'] +example: ['/usr/bin/ssh', '-l', 'user', '10.0.0.16'] -- @@ -13474,49 +13909,127 @@ type: text -- -*`process.parent.pgid`*:: +*`process.parent.pe.architecture`*:: + -- -Identifier of the group of processes the process belongs to. +CPU architecture target for the file. -type: long +type: keyword -format: string +example: x64 -- -*`process.parent.pid`*:: +*`process.parent.pe.company`*:: + -- -Process id. - -type: long +Internal company name of the file, provided at compile-time. -example: 4242 +type: keyword -format: string +example: Microsoft Corporation -- -*`process.parent.ppid`*:: +*`process.parent.pe.description`*:: + -- -Parent process' pid. - -type: long +Internal description of the file, provided at compile-time. -example: 4241 +type: keyword -format: string +example: Paint -- -*`process.parent.start`*:: +*`process.parent.pe.file_version`*:: + -- -The time the process started. +Internal version of the file, provided at compile-time. -type: date +type: keyword + +example: 6.3.9600.17415 + +-- + +*`process.parent.pe.imphash`*:: ++ +-- +A hash of the imports in a PE file. An imphash -- or import hash -- can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. +Learn more at https://www.fireeye.com/blog/threat-research/2014/01/tracking-malware-import-hashing.html. + +type: keyword + +example: 0c6803c4e922103c4dca5963aad36ddf + +-- + +*`process.parent.pe.original_file_name`*:: ++ +-- +Internal name of the file, provided at compile-time. + +type: keyword + +example: MSPAINT.EXE + +-- + +*`process.parent.pe.product`*:: ++ +-- +Internal product name of the file, provided at compile-time. + +type: keyword + +example: Microsoft® Windows® Operating System + +-- + +*`process.parent.pgid`*:: ++ +-- +Identifier of the group of processes the process belongs to. + +type: long + +format: string + +-- + +*`process.parent.pid`*:: ++ +-- +Process id. + +type: long + +example: 4242 + +format: string + +-- + +*`process.parent.ppid`*:: ++ +-- +Parent process' pid. + +type: long + +example: 4241 + +format: string + +-- + +*`process.parent.start`*:: ++ +-- +The time the process started. + +type: date example: 2016-05-23T08:05:34.853Z @@ -13592,6 +14105,17 @@ type: text -- +*`process.pe.architecture`*:: ++ +-- +CPU architecture target for the file. + +type: keyword + +example: x64 + +-- + *`process.pe.company`*:: + -- @@ -13625,6 +14149,18 @@ example: 6.3.9600.17415 -- +*`process.pe.imphash`*:: ++ +-- +A hash of the imports in a PE file. An imphash -- or import hash -- can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. +Learn more at https://www.fireeye.com/blog/threat-research/2014/01/tracking-malware-import-hashing.html. + +type: keyword + +example: 0c6803c4e922103c4dca5963aad36ddf + +-- + *`process.pe.original_file_name`*:: + -- @@ -13867,6 +14403,15 @@ type: keyword -- +*`related.hosts`*:: ++ +-- +All hostnames or other host identifiers seen on your event. Example identifiers include FQDNs, domain names, workstation names, or aliases. + +type: keyword + +-- + *`related.ip`*:: + -- @@ -14165,8 +14710,7 @@ example: Quebec *`server.ip`*:: + -- -IP address of the server. -Can be one or multiple IPv4 or IPv6 addresses. +IP address of the server (IPv4 or IPv6). type: ip @@ -14229,19 +14773,19 @@ format: string + -- The highest registered server domain, stripped of the subdomain. -For example, the registered domain for "foo.google.com" is "google.com". +For example, the registered domain for "foo.example.com" is "example.com". This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last two labels will not work well for TLDs such as "co.uk". type: keyword -example: google.com +example: example.com -- *`server.top_level_domain`*:: + -- -The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for google.com is "com". +The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for example.com is "com". This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last label will not work well for effective TLDs such as "co.uk". type: keyword @@ -14328,7 +14872,7 @@ type: keyword *`server.user.id`*:: + -- -Unique identifiers of the user. +Unique identifier of the user. type: keyword @@ -14352,6 +14896,17 @@ type: text -- +*`server.user.roles`*:: ++ +-- +Array of user roles at the time of the event. + +type: keyword + +example: ["kibana_admin", "reporting_user"] + +-- + [float] === service @@ -14605,8 +15160,7 @@ example: Quebec *`source.ip`*:: + -- -IP address of the source. -Can be one or multiple IPv4 or IPv6 addresses. +IP address of the source (IPv4 or IPv6). type: ip @@ -14669,19 +15223,19 @@ format: string + -- The highest registered source domain, stripped of the subdomain. -For example, the registered domain for "foo.google.com" is "google.com". +For example, the registered domain for "foo.example.com" is "example.com". This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last two labels will not work well for TLDs such as "co.uk". type: keyword -example: google.com +example: example.com -- *`source.top_level_domain`*:: + -- -The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for google.com is "com". +The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for example.com is "com". This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last label will not work well for effective TLDs such as "co.uk". type: keyword @@ -14768,7 +15322,7 @@ type: keyword *`source.user.id`*:: + -- -Unique identifiers of the user. +Unique identifier of the user. type: keyword @@ -14792,10 +15346,21 @@ type: text -- +*`source.user.roles`*:: ++ +-- +Array of user roles at the time of the event. + +type: keyword + +example: ["kibana_admin", "reporting_user"] + +-- + [float] === threat -Fields to classify events and alerts according to a threat taxonomy such as the Mitre ATT&CK framework. +Fields to classify events and alerts according to a threat taxonomy such as the MITRE ATT&CK® framework. These fields are for users to classify alerts from all of their sources (e.g. IDS, NGFW, etc.) within a common taxonomy. The threat.tactic.* are meant to capture the high level category of the threat (e.g. "impact"). The threat.technique.* fields are meant to capture which kind of approach is used by this detected threat, to accomplish the goal (e.g. "endpoint denial of service"). @@ -14813,7 +15378,7 @@ example: MITRE ATT&CK *`threat.tactic.id`*:: + -- -The id of tactic used by this threat. You can use the Mitre ATT&CK Matrix Tactic categorization, for example. (ex. https://attack.mitre.org/tactics/TA0040/ ) +The id of tactic used by this threat. You can use a MITRE ATT&CK® tactic, for example. (ex. https://attack.mitre.org/tactics/TA0040/ ) type: keyword @@ -14824,7 +15389,7 @@ example: TA0040 *`threat.tactic.name`*:: + -- -Name of the type of tactic used by this threat. You can use the Mitre ATT&CK Matrix Tactic categorization, for example. (ex. https://attack.mitre.org/tactics/TA0040/ ) +Name of the type of tactic used by this threat. You can use a MITRE ATT&CK® tactic, for example. (ex. https://attack.mitre.org/tactics/TA0040/) type: keyword @@ -14835,7 +15400,7 @@ example: impact *`threat.tactic.reference`*:: + -- -The reference url of tactic used by this threat. You can use the Mitre ATT&CK Matrix Tactic categorization, for example. (ex. https://attack.mitre.org/tactics/TA0040/ ) +The reference url of tactic used by this threat. You can use a MITRE ATT&CK® tactic, for example. (ex. https://attack.mitre.org/tactics/TA0040/ ) type: keyword @@ -14846,7 +15411,7 @@ example: https://attack.mitre.org/tactics/TA0040/ *`threat.technique.id`*:: + -- -The id of technique used by this tactic. You can use the Mitre ATT&CK Matrix Tactic categorization, for example. (ex. https://attack.mitre.org/techniques/T1499/ ) +The id of technique used by this threat. You can use a MITRE ATT&CK® technique, for example. (ex. https://attack.mitre.org/techniques/T1499/) type: keyword @@ -14857,11 +15422,11 @@ example: T1499 *`threat.technique.name`*:: + -- -The name of technique used by this tactic. You can use the Mitre ATT&CK Matrix Tactic categorization, for example. (ex. https://attack.mitre.org/techniques/T1499/ ) +The name of technique used by this threat. You can use a MITRE ATT&CK® technique, for example. (ex. https://attack.mitre.org/techniques/T1499/) type: keyword -example: endpoint denial of service +example: Endpoint Denial of Service -- @@ -14875,7 +15440,7 @@ type: text *`threat.technique.reference`*:: + -- -The reference url of technique used by this tactic. You can use the Mitre ATT&CK Matrix Tactic categorization, for example. (ex. https://attack.mitre.org/techniques/T1499/ ) +The reference url of technique used by this threat. You can use a MITRE ATT&CK® technique, for example. (ex. https://attack.mitre.org/techniques/T1499/ ) type: keyword @@ -14962,7 +15527,7 @@ Distinguished name of subject of the issuer of the x.509 certificate presented b type: keyword -example: CN=MyDomain Root CA, OU=Infrastructure Team, DC=mydomain, DC=com +example: CN=Example Root CA, OU=Infrastructure Team, DC=example, DC=com -- @@ -15002,7 +15567,7 @@ example: 1970-01-01T00:00:00.000Z *`tls.client.server_name`*:: + -- -Also called an SNI, this tells the server which hostname to which the client is attempting to connect. When this value is available, it should get copied to `destination.domain`. +Also called an SNI, this tells the server which hostname to which the client is attempting to connect to. When this value is available, it should get copied to `destination.domain`. type: keyword @@ -15017,7 +15582,7 @@ Distinguished name of subject of the x.509 certificate presented by the client. type: keyword -example: CN=myclient, OU=Documentation Team, DC=mydomain, DC=com +example: CN=myclient, OU=Documentation Team, DC=example, DC=com -- @@ -15032,319 +15597,859 @@ example: ['TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384', 'TLS_ECDHE_ECDSA_WITH_AES_256 -- -*`tls.curve`*:: +*`tls.client.x509.alternative_names`*:: + -- -String indicating the curve used for the given cipher, when applicable. +List of subject alternative names (SAN). Name types vary by certificate authority and certificate type but commonly contain IP addresses, DNS names (and wildcards), and email addresses. type: keyword -example: secp256r1 +example: *.elastic.co -- -*`tls.established`*:: +*`tls.client.x509.issuer.common_name`*:: + -- -Boolean flag indicating if the TLS negotiation was successful and transitioned to an encrypted tunnel. +List of common name (CN) of issuing certificate authority. -type: boolean +type: keyword + +example: Example SHA2 High Assurance Server CA -- -*`tls.next_protocol`*:: +*`tls.client.x509.issuer.country`*:: + -- -String indicating the protocol being tunneled. Per the values in the IANA registry (https://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml#alpn-protocol-ids), this string should be lower case. +List of country (C) codes type: keyword -example: http/1.1 +example: US -- -*`tls.resumed`*:: +*`tls.client.x509.issuer.distinguished_name`*:: + -- -Boolean flag indicating if this TLS connection was resumed from an existing TLS negotiation. +Distinguished name (DN) of issuing certificate authority. -type: boolean +type: keyword + +example: C=US, O=Example Inc, OU=www.example.com, CN=Example SHA2 High Assurance Server CA -- -*`tls.server.certificate`*:: +*`tls.client.x509.issuer.locality`*:: + -- -PEM-encoded stand-alone certificate offered by the server. This is usually mutually-exclusive of `server.certificate_chain` since this value also exists in that list. +List of locality names (L) type: keyword -example: MII... +example: Mountain View -- -*`tls.server.certificate_chain`*:: +*`tls.client.x509.issuer.organization`*:: + -- -Array of PEM-encoded certificates that make up the certificate chain offered by the server. This is usually mutually-exclusive of `server.certificate` since that value should be the first certificate in the chain. +List of organizations (O) of issuing certificate authority. type: keyword -example: ['MII...', 'MII...'] +example: Example Inc -- -*`tls.server.hash.md5`*:: +*`tls.client.x509.issuer.organizational_unit`*:: + -- -Certificate fingerprint using the MD5 digest of DER-encoded version of certificate offered by the server. For consistency with other hash values, this value should be formatted as an uppercase hash. +List of organizational units (OU) of issuing certificate authority. type: keyword -example: 0F76C7F2C55BFD7D8E8B8F4BFBF0C9EC +example: www.example.com -- -*`tls.server.hash.sha1`*:: +*`tls.client.x509.issuer.state_or_province`*:: + -- -Certificate fingerprint using the SHA1 digest of DER-encoded version of certificate offered by the server. For consistency with other hash values, this value should be formatted as an uppercase hash. +List of state or province names (ST, S, or P) type: keyword -example: 9E393D93138888D288266C2D915214D1D1CCEB2A +example: California -- -*`tls.server.hash.sha256`*:: +*`tls.client.x509.not_after`*:: + -- -Certificate fingerprint using the SHA256 digest of DER-encoded version of certificate offered by the server. For consistency with other hash values, this value should be formatted as an uppercase hash. +Time at which the certificate is no longer considered valid. -type: keyword +type: date -example: 0687F666A054EF17A08E2F2162EAB4CBC0D265E1D7875BE74BF3C712CA92DAF0 +example: 2020-07-16 03:15:39+00:00 -- -*`tls.server.issuer`*:: +*`tls.client.x509.not_before`*:: + -- -Subject of the issuer of the x.509 certificate presented by the server. +Time at which the certificate is first considered valid. -type: keyword +type: date -example: CN=MyDomain Root CA, OU=Infrastructure Team, DC=mydomain, DC=com +example: 2019-08-16 01:40:25+00:00 -- -*`tls.server.ja3s`*:: +*`tls.client.x509.public_key_algorithm`*:: + -- -A hash that identifies servers based on how they perform an SSL/TLS handshake. +Algorithm used to generate the public key. type: keyword -example: 394441ab65754e2207b1e1b457b3641d +example: RSA -- -*`tls.server.not_after`*:: +*`tls.client.x509.public_key_curve`*:: + -- -Timestamp indicating when server certificate is no longer considered valid. +The curve used by the elliptic curve public key algorithm. This is algorithm specific. -type: date +type: keyword -example: 2021-01-01T00:00:00.000Z +example: nistp521 -- -*`tls.server.not_before`*:: +*`tls.client.x509.public_key_exponent`*:: + -- -Timestamp indicating when server certificate is first considered valid. +Exponent used to derive the public key. This is algorithm specific. -type: date +type: long -example: 1970-01-01T00:00:00.000Z +example: 65537 + +Field is not indexed. -- -*`tls.server.subject`*:: +*`tls.client.x509.public_key_size`*:: + -- -Subject of the x.509 certificate presented by the server. +The size of the public key space in bits. -type: keyword +type: long -example: CN=www.mydomain.com, OU=Infrastructure Team, DC=mydomain, DC=com +example: 2048 -- -*`tls.version`*:: +*`tls.client.x509.serial_number`*:: + -- -Numeric part of the version parsed from the original string. +Unique serial number issued by the certificate authority. For consistency, if this value is alphanumeric, it should be formatted without colons and uppercase characters. type: keyword -example: 1.2 +example: 55FBB9C7DEBF09809D12CCAA -- -*`tls.version_protocol`*:: +*`tls.client.x509.signature_algorithm`*:: + -- -Normalized lowercase protocol name parsed from original string. +Identifier for certificate signature algorithm. We recommend using names found in Go Lang Crypto library. See https://github.com/golang/go/blob/go1.14/src/crypto/x509/x509.go#L337-L353. type: keyword -example: tls +example: SHA256-RSA -- -[float] -=== tracing - -Distributed tracing makes it possible to analyze performance throughout a microservice architecture all in one view. This is accomplished by tracing all of the requests - from the initial web request in the front-end service - to queries made through multiple back-end services. - - -*`tracing.trace.id`*:: +*`tls.client.x509.subject.common_name`*:: + -- -Unique identifier of the trace. -A trace groups multiple events like transactions that belong together. For example, a user request handled by multiple inter-connected services. +List of common names (CN) of subject. type: keyword -example: 4bf92f3577b34da6a3ce929d0e0e4736 +example: shared.global.example.net -- -*`tracing.transaction.id`*:: +*`tls.client.x509.subject.country`*:: + -- -Unique identifier of the transaction. -A transaction is the highest level of work measured within a service, such as a request to a server. +List of country (C) code type: keyword -example: 00f067aa0ba902b7 +example: US -- -[float] -=== url +*`tls.client.x509.subject.distinguished_name`*:: ++ +-- +Distinguished name (DN) of the certificate subject entity. -URL fields provide support for complete or partial URLs, and supports the breaking down into scheme, domain, path, and so on. +type: keyword +example: C=US, ST=California, L=San Francisco, O=Example, Inc., CN=shared.global.example.net -*`url.domain`*:: +-- + +*`tls.client.x509.subject.locality`*:: + -- -Domain of the url, such as "www.elastic.co". -In some cases a URL may refer to an IP and/or port directly, without a domain name. In this case, the IP address would go to the `domain` field. +List of locality names (L) type: keyword -example: www.elastic.co +example: San Francisco -- -*`url.extension`*:: +*`tls.client.x509.subject.organization`*:: + -- -The field contains the file extension from the original request url. -The file extension is only set if it exists, as not every url has a file extension. -The leading period must not be included. For example, the value must be "png", not ".png". +List of organizations (O) of subject. type: keyword -example: png +example: Example, Inc. -- -*`url.fragment`*:: +*`tls.client.x509.subject.organizational_unit`*:: + -- -Portion of the url after the `#`, such as "top". -The `#` is not part of the fragment. +List of organizational units (OU) of subject. type: keyword -- -*`url.full`*:: +*`tls.client.x509.subject.state_or_province`*:: + -- -If full URLs are important to your use case, they should be stored in `url.full`, whether this field is reconstructed or present in the event source. +List of state or province names (ST, S, or P) type: keyword -example: https://www.elastic.co:443/search?q=elasticsearch#top +example: California -- -*`url.full.text`*:: +*`tls.client.x509.version_number`*:: + -- -type: text +Version of x509 format. + +type: keyword + +example: 3 -- -*`url.original`*:: +*`tls.curve`*:: + -- -Unmodified original url as seen in the event source. -Note that in network monitoring, the observed URL may be a full URL, whereas in access logs, the URL is often just represented as a path. -This field is meant to represent the URL as it was observed, complete or not. +String indicating the curve used for the given cipher, when applicable. type: keyword -example: https://www.elastic.co:443/search?q=elasticsearch#top or /search?q=elasticsearch +example: secp256r1 -- -*`url.original.text`*:: +*`tls.established`*:: + -- -type: text +Boolean flag indicating if the TLS negotiation was successful and transitioned to an encrypted tunnel. + +type: boolean -- -*`url.password`*:: +*`tls.next_protocol`*:: + -- -Password of the request. +String indicating the protocol being tunneled. Per the values in the IANA registry (https://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml#alpn-protocol-ids), this string should be lower case. type: keyword +example: http/1.1 + -- -*`url.path`*:: +*`tls.resumed`*:: + -- -Path of the request, such as "/search". +Boolean flag indicating if this TLS connection was resumed from an existing TLS negotiation. -type: keyword +type: boolean -- -*`url.port`*:: +*`tls.server.certificate`*:: + -- -Port of the request, such as 443. - -type: long +PEM-encoded stand-alone certificate offered by the server. This is usually mutually-exclusive of `server.certificate_chain` since this value also exists in that list. -example: 443 +type: keyword -format: string +example: MII... -- -*`url.query`*:: +*`tls.server.certificate_chain`*:: ++ +-- +Array of PEM-encoded certificates that make up the certificate chain offered by the server. This is usually mutually-exclusive of `server.certificate` since that value should be the first certificate in the chain. + +type: keyword + +example: ['MII...', 'MII...'] + +-- + +*`tls.server.hash.md5`*:: ++ +-- +Certificate fingerprint using the MD5 digest of DER-encoded version of certificate offered by the server. For consistency with other hash values, this value should be formatted as an uppercase hash. + +type: keyword + +example: 0F76C7F2C55BFD7D8E8B8F4BFBF0C9EC + +-- + +*`tls.server.hash.sha1`*:: ++ +-- +Certificate fingerprint using the SHA1 digest of DER-encoded version of certificate offered by the server. For consistency with other hash values, this value should be formatted as an uppercase hash. + +type: keyword + +example: 9E393D93138888D288266C2D915214D1D1CCEB2A + +-- + +*`tls.server.hash.sha256`*:: ++ +-- +Certificate fingerprint using the SHA256 digest of DER-encoded version of certificate offered by the server. For consistency with other hash values, this value should be formatted as an uppercase hash. + +type: keyword + +example: 0687F666A054EF17A08E2F2162EAB4CBC0D265E1D7875BE74BF3C712CA92DAF0 + +-- + +*`tls.server.issuer`*:: ++ +-- +Subject of the issuer of the x.509 certificate presented by the server. + +type: keyword + +example: CN=Example Root CA, OU=Infrastructure Team, DC=example, DC=com + +-- + +*`tls.server.ja3s`*:: ++ +-- +A hash that identifies servers based on how they perform an SSL/TLS handshake. + +type: keyword + +example: 394441ab65754e2207b1e1b457b3641d + +-- + +*`tls.server.not_after`*:: ++ +-- +Timestamp indicating when server certificate is no longer considered valid. + +type: date + +example: 2021-01-01T00:00:00.000Z + +-- + +*`tls.server.not_before`*:: ++ +-- +Timestamp indicating when server certificate is first considered valid. + +type: date + +example: 1970-01-01T00:00:00.000Z + +-- + +*`tls.server.subject`*:: ++ +-- +Subject of the x.509 certificate presented by the server. + +type: keyword + +example: CN=www.example.com, OU=Infrastructure Team, DC=example, DC=com + +-- + +*`tls.server.x509.alternative_names`*:: ++ +-- +List of subject alternative names (SAN). Name types vary by certificate authority and certificate type but commonly contain IP addresses, DNS names (and wildcards), and email addresses. + +type: keyword + +example: *.elastic.co + +-- + +*`tls.server.x509.issuer.common_name`*:: ++ +-- +List of common name (CN) of issuing certificate authority. + +type: keyword + +example: Example SHA2 High Assurance Server CA + +-- + +*`tls.server.x509.issuer.country`*:: ++ +-- +List of country (C) codes + +type: keyword + +example: US + +-- + +*`tls.server.x509.issuer.distinguished_name`*:: ++ +-- +Distinguished name (DN) of issuing certificate authority. + +type: keyword + +example: C=US, O=Example Inc, OU=www.example.com, CN=Example SHA2 High Assurance Server CA + +-- + +*`tls.server.x509.issuer.locality`*:: ++ +-- +List of locality names (L) + +type: keyword + +example: Mountain View + +-- + +*`tls.server.x509.issuer.organization`*:: ++ +-- +List of organizations (O) of issuing certificate authority. + +type: keyword + +example: Example Inc + +-- + +*`tls.server.x509.issuer.organizational_unit`*:: ++ +-- +List of organizational units (OU) of issuing certificate authority. + +type: keyword + +example: www.example.com + +-- + +*`tls.server.x509.issuer.state_or_province`*:: ++ +-- +List of state or province names (ST, S, or P) + +type: keyword + +example: California + +-- + +*`tls.server.x509.not_after`*:: ++ +-- +Time at which the certificate is no longer considered valid. + +type: date + +example: 2020-07-16 03:15:39+00:00 + +-- + +*`tls.server.x509.not_before`*:: ++ +-- +Time at which the certificate is first considered valid. + +type: date + +example: 2019-08-16 01:40:25+00:00 + +-- + +*`tls.server.x509.public_key_algorithm`*:: ++ +-- +Algorithm used to generate the public key. + +type: keyword + +example: RSA + +-- + +*`tls.server.x509.public_key_curve`*:: ++ +-- +The curve used by the elliptic curve public key algorithm. This is algorithm specific. + +type: keyword + +example: nistp521 + +-- + +*`tls.server.x509.public_key_exponent`*:: ++ +-- +Exponent used to derive the public key. This is algorithm specific. + +type: long + +example: 65537 + +Field is not indexed. + +-- + +*`tls.server.x509.public_key_size`*:: ++ +-- +The size of the public key space in bits. + +type: long + +example: 2048 + +-- + +*`tls.server.x509.serial_number`*:: ++ +-- +Unique serial number issued by the certificate authority. For consistency, if this value is alphanumeric, it should be formatted without colons and uppercase characters. + +type: keyword + +example: 55FBB9C7DEBF09809D12CCAA + +-- + +*`tls.server.x509.signature_algorithm`*:: ++ +-- +Identifier for certificate signature algorithm. We recommend using names found in Go Lang Crypto library. See https://github.com/golang/go/blob/go1.14/src/crypto/x509/x509.go#L337-L353. + +type: keyword + +example: SHA256-RSA + +-- + +*`tls.server.x509.subject.common_name`*:: ++ +-- +List of common names (CN) of subject. + +type: keyword + +example: shared.global.example.net + +-- + +*`tls.server.x509.subject.country`*:: ++ +-- +List of country (C) code + +type: keyword + +example: US + +-- + +*`tls.server.x509.subject.distinguished_name`*:: ++ +-- +Distinguished name (DN) of the certificate subject entity. + +type: keyword + +example: C=US, ST=California, L=San Francisco, O=Example, Inc., CN=shared.global.example.net + +-- + +*`tls.server.x509.subject.locality`*:: ++ +-- +List of locality names (L) + +type: keyword + +example: San Francisco + +-- + +*`tls.server.x509.subject.organization`*:: ++ +-- +List of organizations (O) of subject. + +type: keyword + +example: Example, Inc. + +-- + +*`tls.server.x509.subject.organizational_unit`*:: ++ +-- +List of organizational units (OU) of subject. + +type: keyword + +-- + +*`tls.server.x509.subject.state_or_province`*:: ++ +-- +List of state or province names (ST, S, or P) + +type: keyword + +example: California + +-- + +*`tls.server.x509.version_number`*:: ++ +-- +Version of x509 format. + +type: keyword + +example: 3 + +-- + +*`tls.version`*:: ++ +-- +Numeric part of the version parsed from the original string. + +type: keyword + +example: 1.2 + +-- + +*`tls.version_protocol`*:: ++ +-- +Normalized lowercase protocol name parsed from original string. + +type: keyword + +example: tls + +-- + +[float] +=== tracing + +Distributed tracing makes it possible to analyze performance throughout a microservice architecture all in one view. This is accomplished by tracing all of the requests - from the initial web request in the front-end service - to queries made through multiple back-end services. + + +*`tracing.span.id`*:: ++ +-- +Unique identifier of the span within the scope of its trace. +A span represents an operation within a transaction, such as a request to another service, or a database query. + +type: keyword + +example: 3ff9a8981b7ccd5a + +-- + +*`tracing.trace.id`*:: ++ +-- +Unique identifier of the trace. +A trace groups multiple events like transactions that belong together. For example, a user request handled by multiple inter-connected services. + +type: keyword + +example: 4bf92f3577b34da6a3ce929d0e0e4736 + +-- + +*`tracing.transaction.id`*:: ++ +-- +Unique identifier of the transaction within the scope of its trace. +A transaction is the highest level of work measured within a service, such as a request to a server. + +type: keyword + +example: 00f067aa0ba902b7 + +-- + +[float] +=== url + +URL fields provide support for complete or partial URLs, and supports the breaking down into scheme, domain, path, and so on. + + +*`url.domain`*:: ++ +-- +Domain of the url, such as "www.elastic.co". +In some cases a URL may refer to an IP and/or port directly, without a domain name. In this case, the IP address would go to the `domain` field. + +type: keyword + +example: www.elastic.co + +-- + +*`url.extension`*:: ++ +-- +The field contains the file extension from the original request url. +The file extension is only set if it exists, as not every url has a file extension. +The leading period must not be included. For example, the value must be "png", not ".png". + +type: keyword + +example: png + +-- + +*`url.fragment`*:: ++ +-- +Portion of the url after the `#`, such as "top". +The `#` is not part of the fragment. + +type: keyword + +-- + +*`url.full`*:: ++ +-- +If full URLs are important to your use case, they should be stored in `url.full`, whether this field is reconstructed or present in the event source. + +type: keyword + +example: https://www.elastic.co:443/search?q=elasticsearch#top + +-- + +*`url.full.text`*:: ++ +-- +type: text + +-- + +*`url.original`*:: ++ +-- +Unmodified original url as seen in the event source. +Note that in network monitoring, the observed URL may be a full URL, whereas in access logs, the URL is often just represented as a path. +This field is meant to represent the URL as it was observed, complete or not. + +type: keyword + +example: https://www.elastic.co:443/search?q=elasticsearch#top or /search?q=elasticsearch + +-- + +*`url.original.text`*:: ++ +-- +type: text + +-- + +*`url.password`*:: ++ +-- +Password of the request. + +type: keyword + +-- + +*`url.path`*:: ++ +-- +Path of the request, such as "/search". + +type: keyword + +-- + +*`url.port`*:: ++ +-- +Port of the request, such as 443. + +type: long + +example: 443 + +format: string + +-- + +*`url.query`*:: + -- The query field describes the query string of the request, such as "q=elasticsearch". @@ -15358,12 +16463,12 @@ type: keyword + -- The highest registered url domain, stripped of the subdomain. -For example, the registered domain for "foo.google.com" is "google.com". +For example, the registered domain for "foo.example.com" is "example.com". This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last two labels will not work well for TLDs such as "co.uk". type: keyword -example: google.com +example: example.com -- @@ -15382,7 +16487,7 @@ example: https *`url.top_level_domain`*:: + -- -The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for google.com is "com". +The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for example.com is "com". This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last label will not work well for effective TLDs such as "co.uk". type: keyword @@ -15485,7 +16590,7 @@ type: keyword *`user.id`*:: + -- -Unique identifiers of the user. +Unique identifier of the user. type: keyword @@ -15509,6 +16614,17 @@ type: text -- +*`user.roles`*:: ++ +-- +Array of user roles at the time of the event. + +type: keyword + +example: ["kibana_admin", "reporting_user"] + +-- + [float] === user_agent @@ -15837,6 +16953,276 @@ example: Critical -- +[float] +=== x509 + +This implements the common core fields for x509 certificates. This information is likely logged with TLS sessions, digital signatures found in executable binaries, S/MIME information in email bodies, or analysis of files on disk. When only a single certificate is logged in an event, it should be nested under `file`. When hashes of the DER-encoded certificate are available, the `hash` data set should be populated as well (e.g. `file.hash.sha256`). For events that contain certificate information for both sides of the connection, the x509 object could be nested under the respective side of the connection information (e.g. `tls.server.x509`). + + +*`x509.alternative_names`*:: ++ +-- +List of subject alternative names (SAN). Name types vary by certificate authority and certificate type but commonly contain IP addresses, DNS names (and wildcards), and email addresses. + +type: keyword + +example: *.elastic.co + +-- + +*`x509.issuer.common_name`*:: ++ +-- +List of common name (CN) of issuing certificate authority. + +type: keyword + +example: Example SHA2 High Assurance Server CA + +-- + +*`x509.issuer.country`*:: ++ +-- +List of country (C) codes + +type: keyword + +example: US + +-- + +*`x509.issuer.distinguished_name`*:: ++ +-- +Distinguished name (DN) of issuing certificate authority. + +type: keyword + +example: C=US, O=Example Inc, OU=www.example.com, CN=Example SHA2 High Assurance Server CA + +-- + +*`x509.issuer.locality`*:: ++ +-- +List of locality names (L) + +type: keyword + +example: Mountain View + +-- + +*`x509.issuer.organization`*:: ++ +-- +List of organizations (O) of issuing certificate authority. + +type: keyword + +example: Example Inc + +-- + +*`x509.issuer.organizational_unit`*:: ++ +-- +List of organizational units (OU) of issuing certificate authority. + +type: keyword + +example: www.example.com + +-- + +*`x509.issuer.state_or_province`*:: ++ +-- +List of state or province names (ST, S, or P) + +type: keyword + +example: California + +-- + +*`x509.not_after`*:: ++ +-- +Time at which the certificate is no longer considered valid. + +type: date + +example: 2020-07-16 03:15:39+00:00 + +-- + +*`x509.not_before`*:: ++ +-- +Time at which the certificate is first considered valid. + +type: date + +example: 2019-08-16 01:40:25+00:00 + +-- + +*`x509.public_key_algorithm`*:: ++ +-- +Algorithm used to generate the public key. + +type: keyword + +example: RSA + +-- + +*`x509.public_key_curve`*:: ++ +-- +The curve used by the elliptic curve public key algorithm. This is algorithm specific. + +type: keyword + +example: nistp521 + +-- + +*`x509.public_key_exponent`*:: ++ +-- +Exponent used to derive the public key. This is algorithm specific. + +type: long + +example: 65537 + +Field is not indexed. + +-- + +*`x509.public_key_size`*:: ++ +-- +The size of the public key space in bits. + +type: long + +example: 2048 + +-- + +*`x509.serial_number`*:: ++ +-- +Unique serial number issued by the certificate authority. For consistency, if this value is alphanumeric, it should be formatted without colons and uppercase characters. + +type: keyword + +example: 55FBB9C7DEBF09809D12CCAA + +-- + +*`x509.signature_algorithm`*:: ++ +-- +Identifier for certificate signature algorithm. We recommend using names found in Go Lang Crypto library. See https://github.com/golang/go/blob/go1.14/src/crypto/x509/x509.go#L337-L353. + +type: keyword + +example: SHA256-RSA + +-- + +*`x509.subject.common_name`*:: ++ +-- +List of common names (CN) of subject. + +type: keyword + +example: shared.global.example.net + +-- + +*`x509.subject.country`*:: ++ +-- +List of country (C) code + +type: keyword + +example: US + +-- + +*`x509.subject.distinguished_name`*:: ++ +-- +Distinguished name (DN) of the certificate subject entity. + +type: keyword + +example: C=US, ST=California, L=San Francisco, O=Example, Inc., CN=shared.global.example.net + +-- + +*`x509.subject.locality`*:: ++ +-- +List of locality names (L) + +type: keyword + +example: San Francisco + +-- + +*`x509.subject.organization`*:: ++ +-- +List of organizations (O) of subject. + +type: keyword + +example: Example, Inc. + +-- + +*`x509.subject.organizational_unit`*:: ++ +-- +List of organizational units (OU) of subject. + +type: keyword + +-- + +*`x509.subject.state_or_province`*:: ++ +-- +List of state or province names (ST, S, or P) + +type: keyword + +example: California + +-- + +*`x509.version_number`*:: ++ +-- +Version of x509 format. + +type: keyword + +example: 3 + +-- + [[exported-fields-elasticsearch]] == Elasticsearch fields diff --git a/packetbeat/docs/fields.asciidoc b/packetbeat/docs/fields.asciidoc index f82836c1342..f68faa24073 100644 --- a/packetbeat/docs/fields.asciidoc +++ b/packetbeat/docs/fields.asciidoc @@ -1269,16 +1269,6 @@ Metadata from cloud providers added by the add_cloud_metadata processor. -*`cloud.project.id`*:: -+ --- -Name of the project in Google Cloud. - - -example: project-x - --- - *`cloud.image.id`*:: + -- @@ -2198,6 +2188,18 @@ The agent fields contain the data about the software entity, if any, that collec Examples include Beats. Agents may also run on observers. ECS agent.* fields shall be populated with details of the agent running on the host or observer where the event happened or the measurement was taken. +*`agent.build.original`*:: ++ +-- +Extended build information for the agent. +This field is intended to contain any build information that a data source may provide, no specific formatting is required. + +type: keyword + +example: metricbeat version 7.6.0 (amd64), libbeat 7.6.0 [6a23e8f8f30f5001ba344e4e54d8d9cb82cb107c built 2020-02-05 23:10:10 +0000 UTC] + +-- + *`agent.ephemeral_id`*:: + -- @@ -2239,7 +2241,7 @@ example: foo + -- Type of the agent. -The agent type stays always the same and should be given by the agent used. In case of Filebeat the agent would always be Filebeat also if two Filebeat instances are run on the same machine. +The agent type always stays the same and should be given by the agent used. In case of Filebeat the agent would always be Filebeat also if two Filebeat instances are run on the same machine. type: keyword @@ -2455,8 +2457,7 @@ example: Quebec *`client.ip`*:: + -- -IP address of the client. -Can be one or multiple IPv4 or IPv6 addresses. +IP address of the client (IPv4 or IPv6). type: ip @@ -2519,19 +2520,19 @@ format: string + -- The highest registered client domain, stripped of the subdomain. -For example, the registered domain for "foo.google.com" is "google.com". +For example, the registered domain for "foo.example.com" is "example.com". This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last two labels will not work well for TLDs such as "co.uk". type: keyword -example: google.com +example: example.com -- *`client.top_level_domain`*:: + -- -The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for google.com is "com". +The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for example.com is "com". This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last label will not work well for effective TLDs such as "co.uk". type: keyword @@ -2618,7 +2619,7 @@ type: keyword *`client.user.id`*:: + -- -Unique identifiers of the user. +Unique identifier of the user. type: keyword @@ -2642,6 +2643,17 @@ type: text -- +*`client.user.roles`*:: ++ +-- +Array of user roles at the time of the event. + +type: keyword + +example: ["kibana_admin", "reporting_user"] + +-- + [float] === cloud @@ -2660,6 +2672,18 @@ example: 666777888999 -- +*`cloud.account.name`*:: ++ +-- +The cloud account name or alias used to identify different entities in a multi-tenant environment. +Examples: AWS account name, Google Cloud ORG display name. + +type: keyword + +example: elastic-dev + +-- + *`cloud.availability_zone`*:: + -- @@ -2702,6 +2726,30 @@ example: t2.medium -- +*`cloud.project.id`*:: ++ +-- +The cloud project identifier. +Examples: Google Cloud Project id, Azure Project id. + +type: keyword + +example: my-project + +-- + +*`cloud.project.name`*:: ++ +-- +The cloud project name. +Examples: Google Cloud Project name, Azure Project name. + +type: keyword + +example: my project + +-- + *`cloud.provider`*:: + -- @@ -3012,8 +3060,7 @@ example: Quebec *`destination.ip`*:: + -- -IP address of the destination. -Can be one or multiple IPv4 or IPv6 addresses. +IP address of the destination (IPv4 or IPv6). type: ip @@ -3076,19 +3123,19 @@ format: string + -- The highest registered destination domain, stripped of the subdomain. -For example, the registered domain for "foo.google.com" is "google.com". +For example, the registered domain for "foo.example.com" is "example.com". This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last two labels will not work well for TLDs such as "co.uk". type: keyword -example: google.com +example: example.com -- *`destination.top_level_domain`*:: + -- -The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for google.com is "com". +The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for example.com is "com". This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last label will not work well for effective TLDs such as "co.uk". type: keyword @@ -3175,7 +3222,7 @@ type: keyword *`destination.user.id`*:: + -- -Unique identifiers of the user. +Unique identifier of the user. type: keyword @@ -3199,6 +3246,17 @@ type: text -- +*`destination.user.roles`*:: ++ +-- +Array of user roles at the time of the event. + +type: keyword + +example: ["kibana_admin", "reporting_user"] + +-- + [float] === dll @@ -3327,6 +3385,17 @@ example: C:\Windows\System32\kernel32.dll -- +*`dll.pe.architecture`*:: ++ +-- +CPU architecture target for the file. + +type: keyword + +example: x64 + +-- + *`dll.pe.company`*:: + -- @@ -3360,6 +3429,18 @@ example: 6.3.9600.17415 -- +*`dll.pe.imphash`*:: ++ +-- +A hash of the imports in a PE file. An imphash -- or import hash -- can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. +Learn more at https://www.fireeye.com/blog/threat-research/2014/01/tracking-malware-import-hashing.html. + +type: keyword + +example: 0c6803c4e922103c4dca5963aad36ddf + +-- + *`dll.pe.original_file_name`*:: + -- @@ -3431,7 +3512,7 @@ If a chain of CNAME is being resolved, each answer's `name` should be the one th type: keyword -example: www.google.com +example: www.example.com -- @@ -3510,7 +3591,7 @@ If the name field contains non-printable characters (below 32 or above 126), tho type: keyword -example: www.google.com +example: www.example.com -- @@ -3518,12 +3599,12 @@ example: www.google.com + -- The highest registered domain, stripped of the subdomain. -For example, the registered domain for "foo.google.com" is "google.com". +For example, the registered domain for "foo.example.com" is "example.com". This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last two labels will not work well for TLDs such as "co.uk". type: keyword -example: google.com +example: example.com -- @@ -3542,7 +3623,7 @@ example: www *`dns.question.top_level_domain`*:: + -- -The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for google.com is "com". +The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for example.com is "com". This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last label will not work well for effective TLDs such as "co.uk". type: keyword @@ -3659,6 +3740,8 @@ The stack trace of this error in plain text. type: keyword +Field is not indexed. + -- *`error.stack_trace.text`*:: @@ -3841,6 +3924,8 @@ type: keyword example: Sep 19 08:26:10 host CEF:0|Security| threatmanager|1.0|100| worm successfully stopped|10|src=10.0.0.1 dst=2.1.2.2spt=1232 +Field is not indexed. + -- *`event.outcome`*:: @@ -3870,6 +3955,18 @@ example: kernel -- +*`event.reason`*:: ++ +-- +Reason why this event happened, according to the source. +This describes the why of a particular action or outcome captured in the event. Where `event.action` captures the action from the event, `event.reason` describes why that action was taken. For example, a web proxy with an `event.action` which denied the request may also populate `event.reason` with the reason why (e.g. `blocked site`). + +type: keyword + +example: Terminated an unexpected process + +-- + *`event.reference`*:: + -- @@ -3878,7 +3975,7 @@ This URL links to a static definition of the this event. Alert events, indicated type: keyword -example: https://system.vendor.com/event/#0001234 +example: https://system.example.com/event/#0001234 -- @@ -3962,11 +4059,11 @@ type: keyword + -- URL linking to an external system to continue investigation of this event. -This URL links to another system where in-depth investigation of the specific occurence of this event can take place. Alert events, indicated by `event.kind:alert`, are a common use case for this field. +This URL links to another system where in-depth investigation of the specific occurrence of this event can take place. Alert events, indicated by `event.kind:alert`, are a common use case for this field. type: keyword -example: https://mysystem.mydomain.com/alert/5271dedb-f5b0-4218-87f0-4ac4870a38fe +example: https://mysystem.example.com/alert/5271dedb-f5b0-4218-87f0-4ac4870a38fe -- @@ -4260,6 +4357,17 @@ type: text -- +*`file.pe.architecture`*:: ++ +-- +CPU architecture target for the file. + +type: keyword + +example: x64 + +-- + *`file.pe.company`*:: + -- @@ -4293,6 +4401,18 @@ example: 6.3.9600.17415 -- +*`file.pe.imphash`*:: ++ +-- +A hash of the imports in a PE file. An imphash -- or import hash -- can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. +Learn more at https://www.fireeye.com/blog/threat-research/2014/01/tracking-malware-import-hashing.html. + +type: keyword + +example: 0c6803c4e922103c4dca5963aad36ddf + +-- + *`file.pe.original_file_name`*:: + -- @@ -4365,642 +4485,850 @@ example: 1001 -- -[float] -=== geo - -Geo fields can carry data about a specific location related to an event. -This geolocation information can be derived from techniques such as Geo IP, or be user-supplied. - - -*`geo.city_name`*:: +*`file.x509.alternative_names`*:: + -- -City name. +List of subject alternative names (SAN). Name types vary by certificate authority and certificate type but commonly contain IP addresses, DNS names (and wildcards), and email addresses. type: keyword -example: Montreal +example: *.elastic.co -- -*`geo.continent_name`*:: +*`file.x509.issuer.common_name`*:: + -- -Name of the continent. +List of common name (CN) of issuing certificate authority. type: keyword -example: North America +example: Example SHA2 High Assurance Server CA -- -*`geo.country_iso_code`*:: +*`file.x509.issuer.country`*:: + -- -Country ISO code. +List of country (C) codes type: keyword -example: CA +example: US -- -*`geo.country_name`*:: +*`file.x509.issuer.distinguished_name`*:: + -- -Country name. +Distinguished name (DN) of issuing certificate authority. type: keyword -example: Canada +example: C=US, O=Example Inc, OU=www.example.com, CN=Example SHA2 High Assurance Server CA -- -*`geo.location`*:: +*`file.x509.issuer.locality`*:: + -- -Longitude and latitude. +List of locality names (L) -type: geo_point +type: keyword -example: { "lon": -73.614830, "lat": 45.505918 } +example: Mountain View -- -*`geo.name`*:: +*`file.x509.issuer.organization`*:: + -- -User-defined description of a location, at the level of granularity they care about. -Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. -Not typically used in automated geolocation. +List of organizations (O) of issuing certificate authority. type: keyword -example: boston-dc +example: Example Inc -- -*`geo.region_iso_code`*:: +*`file.x509.issuer.organizational_unit`*:: + -- -Region ISO code. +List of organizational units (OU) of issuing certificate authority. type: keyword -example: CA-QC +example: www.example.com -- -*`geo.region_name`*:: +*`file.x509.issuer.state_or_province`*:: + -- -Region name. +List of state or province names (ST, S, or P) type: keyword -example: Quebec +example: California -- -[float] -=== group - -The group fields are meant to represent groups that are relevant to the event. - - -*`group.domain`*:: +*`file.x509.not_after`*:: + -- -Name of the directory the group is a member of. -For example, an LDAP or Active Directory domain name. +Time at which the certificate is no longer considered valid. -type: keyword +type: date + +example: 2020-07-16 03:15:39+00:00 -- -*`group.id`*:: +*`file.x509.not_before`*:: + -- -Unique identifier for the group on the system/platform. +Time at which the certificate is first considered valid. -type: keyword +type: date + +example: 2019-08-16 01:40:25+00:00 -- -*`group.name`*:: +*`file.x509.public_key_algorithm`*:: + -- -Name of the group. +Algorithm used to generate the public key. type: keyword --- - -[float] -=== hash - -The hash fields represent different hash algorithms and their values. -Field names for common hashes (e.g. MD5, SHA1) are predefined. Add fields for other hashes by lowercasing the hash algorithm name and using underscore separators as appropriate (snake case, e.g. sha3_512). +example: RSA +-- -*`hash.md5`*:: +*`file.x509.public_key_curve`*:: + -- -MD5 hash. +The curve used by the elliptic curve public key algorithm. This is algorithm specific. type: keyword +example: nistp521 + -- -*`hash.sha1`*:: +*`file.x509.public_key_exponent`*:: + -- -SHA1 hash. +Exponent used to derive the public key. This is algorithm specific. -type: keyword - --- +type: long -*`hash.sha256`*:: -+ --- -SHA256 hash. +example: 65537 -type: keyword +Field is not indexed. -- -*`hash.sha512`*:: +*`file.x509.public_key_size`*:: + -- -SHA512 hash. - -type: keyword - --- +The size of the public key space in bits. -[float] -=== host +type: long -A host is defined as a general computing instance. -ECS host.* fields should be populated with details about the host on which the event happened, or from which the measurement was taken. Host types include hardware, virtual machines, Docker containers, and Kubernetes nodes. +example: 2048 +-- -*`host.architecture`*:: +*`file.x509.serial_number`*:: + -- -Operating system architecture. +Unique serial number issued by the certificate authority. For consistency, if this value is alphanumeric, it should be formatted without colons and uppercase characters. type: keyword -example: x86_64 +example: 55FBB9C7DEBF09809D12CCAA -- -*`host.domain`*:: +*`file.x509.signature_algorithm`*:: + -- -Name of the domain of which the host is a member. -For example, on Windows this could be the host's Active Directory domain or NetBIOS domain name. For Linux this could be the domain of the host's LDAP provider. +Identifier for certificate signature algorithm. We recommend using names found in Go Lang Crypto library. See https://github.com/golang/go/blob/go1.14/src/crypto/x509/x509.go#L337-L353. type: keyword -example: CONTOSO +example: SHA256-RSA -- -*`host.geo.city_name`*:: +*`file.x509.subject.common_name`*:: + -- -City name. +List of common names (CN) of subject. type: keyword -example: Montreal +example: shared.global.example.net -- -*`host.geo.continent_name`*:: +*`file.x509.subject.country`*:: + -- -Name of the continent. +List of country (C) code type: keyword -example: North America +example: US -- -*`host.geo.country_iso_code`*:: +*`file.x509.subject.distinguished_name`*:: + -- -Country ISO code. +Distinguished name (DN) of the certificate subject entity. type: keyword -example: CA +example: C=US, ST=California, L=San Francisco, O=Example, Inc., CN=shared.global.example.net -- -*`host.geo.country_name`*:: +*`file.x509.subject.locality`*:: + -- -Country name. +List of locality names (L) type: keyword -example: Canada +example: San Francisco -- -*`host.geo.location`*:: +*`file.x509.subject.organization`*:: + -- -Longitude and latitude. +List of organizations (O) of subject. -type: geo_point +type: keyword -example: { "lon": -73.614830, "lat": 45.505918 } +example: Example, Inc. -- -*`host.geo.name`*:: +*`file.x509.subject.organizational_unit`*:: + -- -User-defined description of a location, at the level of granularity they care about. -Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. -Not typically used in automated geolocation. +List of organizational units (OU) of subject. type: keyword -example: boston-dc - -- -*`host.geo.region_iso_code`*:: +*`file.x509.subject.state_or_province`*:: + -- -Region ISO code. +List of state or province names (ST, S, or P) type: keyword -example: CA-QC +example: California -- -*`host.geo.region_name`*:: +*`file.x509.version_number`*:: + -- -Region name. +Version of x509 format. type: keyword -example: Quebec +example: 3 -- -*`host.hostname`*:: -+ --- -Hostname of the host. -It normally contains what the `hostname` command returns on the host machine. +[float] +=== geo -type: keyword +Geo fields can carry data about a specific location related to an event. +This geolocation information can be derived from techniques such as Geo IP, or be user-supplied. --- -*`host.id`*:: +*`geo.city_name`*:: + -- -Unique host id. -As hostname is not always unique, use values that are meaningful in your environment. -Example: The current usage of `beat.name`. +City name. type: keyword --- - -*`host.ip`*:: -+ --- -Host ip addresses. - -type: ip +example: Montreal -- -*`host.mac`*:: +*`geo.continent_name`*:: + -- -Host mac addresses. +Name of the continent. type: keyword +example: North America + -- -*`host.name`*:: +*`geo.country_iso_code`*:: + -- -Name of the host. -It can contain what `hostname` returns on Unix systems, the fully qualified domain name, or a name specified by the user. The sender decides which value to use. +Country ISO code. type: keyword +example: CA + -- -*`host.os.family`*:: +*`geo.country_name`*:: + -- -OS family (such as redhat, debian, freebsd, windows). +Country name. type: keyword -example: debian +example: Canada -- -*`host.os.full`*:: +*`geo.location`*:: + -- -Operating system name, including the version or code name. +Longitude and latitude. -type: keyword +type: geo_point -example: Mac OS Mojave +example: { "lon": -73.614830, "lat": 45.505918 } -- -*`host.os.full.text`*:: +*`geo.name`*:: + -- -type: text +User-defined description of a location, at the level of granularity they care about. +Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. +Not typically used in automated geolocation. + +type: keyword + +example: boston-dc -- -*`host.os.kernel`*:: +*`geo.region_iso_code`*:: + -- -Operating system kernel version as a raw string. +Region ISO code. type: keyword -example: 4.4.0-112-generic +example: CA-QC -- -*`host.os.name`*:: +*`geo.region_name`*:: + -- -Operating system name, without the version. +Region name. type: keyword -example: Mac OS X +example: Quebec -- -*`host.os.name.text`*:: -+ --- -type: text +[float] +=== group --- +The group fields are meant to represent groups that are relevant to the event. -*`host.os.platform`*:: + +*`group.domain`*:: + -- -Operating system platform (such centos, ubuntu, windows). +Name of the directory the group is a member of. +For example, an LDAP or Active Directory domain name. type: keyword -example: darwin - -- -*`host.os.version`*:: +*`group.id`*:: + -- -Operating system version as a raw string. +Unique identifier for the group on the system/platform. type: keyword -example: 10.14.1 - -- -*`host.type`*:: +*`group.name`*:: + -- -Type of host. -For Cloud providers this can be the machine type like `t2.medium`. If vm, this could be the container, for example, or other information meaningful in your environment. +Name of the group. type: keyword -- -*`host.uptime`*:: -+ --- -Seconds the host has been up. - -type: long +[float] +=== hash -example: 1325 +The hash fields represent different hash algorithms and their values. +Field names for common hashes (e.g. MD5, SHA1) are predefined. Add fields for other hashes by lowercasing the hash algorithm name and using underscore separators as appropriate (snake case, e.g. sha3_512). --- -*`host.user.domain`*:: +*`hash.md5`*:: + -- -Name of the directory the user is a member of. -For example, an LDAP or Active Directory domain name. +MD5 hash. type: keyword -- -*`host.user.email`*:: +*`hash.sha1`*:: + -- -User email address. +SHA1 hash. type: keyword -- -*`host.user.full_name`*:: +*`hash.sha256`*:: + -- -User's full name, if available. +SHA256 hash. type: keyword -example: Albert Einstein - -- -*`host.user.full_name.text`*:: +*`hash.sha512`*:: + -- -type: text +SHA512 hash. --- +type: keyword -*`host.user.group.domain`*:: -+ -- -Name of the directory the group is a member of. -For example, an LDAP or Active Directory domain name. -type: keyword +[float] +=== host --- +A host is defined as a general computing instance. +ECS host.* fields should be populated with details about the host on which the event happened, or from which the measurement was taken. Host types include hardware, virtual machines, Docker containers, and Kubernetes nodes. -*`host.user.group.id`*:: + +*`host.architecture`*:: + -- -Unique identifier for the group on the system/platform. +Operating system architecture. type: keyword +example: x86_64 + -- -*`host.user.group.name`*:: +*`host.domain`*:: + -- -Name of the group. +Name of the domain of which the host is a member. +For example, on Windows this could be the host's Active Directory domain or NetBIOS domain name. For Linux this could be the domain of the host's LDAP provider. type: keyword +example: CONTOSO + -- -*`host.user.hash`*:: +*`host.geo.city_name`*:: + -- -Unique user hash to correlate information for a user in anonymized form. -Useful if `user.id` or `user.name` contain confidential information and cannot be used. +City name. type: keyword +example: Montreal + -- -*`host.user.id`*:: +*`host.geo.continent_name`*:: + -- -Unique identifiers of the user. +Name of the continent. type: keyword +example: North America + -- -*`host.user.name`*:: +*`host.geo.country_iso_code`*:: + -- -Short name or login of the user. +Country ISO code. type: keyword -example: albert +example: CA -- -*`host.user.name.text`*:: +*`host.geo.country_name`*:: + -- -type: text - --- +Country name. -[float] -=== http +type: keyword -Fields related to HTTP activity. Use the `url` field set to store the url of the request. +example: Canada +-- -*`http.request.body.bytes`*:: +*`host.geo.location`*:: + -- -Size in bytes of the request body. - -type: long +Longitude and latitude. -example: 887 +type: geo_point -format: bytes +example: { "lon": -73.614830, "lat": 45.505918 } -- -*`http.request.body.content`*:: +*`host.geo.name`*:: + -- -The full HTTP request body. +User-defined description of a location, at the level of granularity they care about. +Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. +Not typically used in automated geolocation. type: keyword -example: Hello world +example: boston-dc -- -*`http.request.body.content.text`*:: +*`host.geo.region_iso_code`*:: + -- -type: text +Region ISO code. + +type: keyword + +example: CA-QC -- -*`http.request.bytes`*:: +*`host.geo.region_name`*:: + -- -Total size in bytes of the request (body and headers). - -type: long +Region name. -example: 1437 +type: keyword -format: bytes +example: Quebec -- -*`http.request.method`*:: +*`host.hostname`*:: + -- -HTTP request method. -The field value must be normalized to lowercase for querying. See the documentation section "Implementing ECS". +Hostname of the host. +It normally contains what the `hostname` command returns on the host machine. type: keyword -example: get, post, put - -- -*`http.request.referrer`*:: +*`host.id`*:: + -- -Referrer for this HTTP request. +Unique host id. +As hostname is not always unique, use values that are meaningful in your environment. +Example: The current usage of `beat.name`. type: keyword -example: https://blog.example.com/ - -- -*`http.response.body.bytes`*:: +*`host.ip`*:: + -- -Size in bytes of the response body. - -type: long - -example: 887 +Host ip addresses. -format: bytes +type: ip -- -*`http.response.body.content`*:: +*`host.mac`*:: + -- -The full HTTP response body. +Host mac addresses. + +type: keyword + +-- + +*`host.name`*:: ++ +-- +Name of the host. +It can contain what `hostname` returns on Unix systems, the fully qualified domain name, or a name specified by the user. The sender decides which value to use. + +type: keyword + +-- + +*`host.os.family`*:: ++ +-- +OS family (such as redhat, debian, freebsd, windows). + +type: keyword + +example: debian + +-- + +*`host.os.full`*:: ++ +-- +Operating system name, including the version or code name. + +type: keyword + +example: Mac OS Mojave + +-- + +*`host.os.full.text`*:: ++ +-- +type: text + +-- + +*`host.os.kernel`*:: ++ +-- +Operating system kernel version as a raw string. + +type: keyword + +example: 4.4.0-112-generic + +-- + +*`host.os.name`*:: ++ +-- +Operating system name, without the version. + +type: keyword + +example: Mac OS X + +-- + +*`host.os.name.text`*:: ++ +-- +type: text + +-- + +*`host.os.platform`*:: ++ +-- +Operating system platform (such centos, ubuntu, windows). + +type: keyword + +example: darwin + +-- + +*`host.os.version`*:: ++ +-- +Operating system version as a raw string. + +type: keyword + +example: 10.14.1 + +-- + +*`host.type`*:: ++ +-- +Type of host. +For Cloud providers this can be the machine type like `t2.medium`. If vm, this could be the container, for example, or other information meaningful in your environment. + +type: keyword + +-- + +*`host.uptime`*:: ++ +-- +Seconds the host has been up. + +type: long + +example: 1325 + +-- + +*`host.user.domain`*:: ++ +-- +Name of the directory the user is a member of. +For example, an LDAP or Active Directory domain name. + +type: keyword + +-- + +*`host.user.email`*:: ++ +-- +User email address. + +type: keyword + +-- + +*`host.user.full_name`*:: ++ +-- +User's full name, if available. + +type: keyword + +example: Albert Einstein + +-- + +*`host.user.full_name.text`*:: ++ +-- +type: text + +-- + +*`host.user.group.domain`*:: ++ +-- +Name of the directory the group is a member of. +For example, an LDAP or Active Directory domain name. + +type: keyword + +-- + +*`host.user.group.id`*:: ++ +-- +Unique identifier for the group on the system/platform. + +type: keyword + +-- + +*`host.user.group.name`*:: ++ +-- +Name of the group. + +type: keyword + +-- + +*`host.user.hash`*:: ++ +-- +Unique user hash to correlate information for a user in anonymized form. +Useful if `user.id` or `user.name` contain confidential information and cannot be used. + +type: keyword + +-- + +*`host.user.id`*:: ++ +-- +Unique identifier of the user. + +type: keyword + +-- + +*`host.user.name`*:: ++ +-- +Short name or login of the user. + +type: keyword + +example: albert + +-- + +*`host.user.name.text`*:: ++ +-- +type: text + +-- + +*`host.user.roles`*:: ++ +-- +Array of user roles at the time of the event. + +type: keyword + +example: ["kibana_admin", "reporting_user"] + +-- + +[float] +=== http + +Fields related to HTTP activity. Use the `url` field set to store the url of the request. + + +*`http.request.body.bytes`*:: ++ +-- +Size in bytes of the request body. + +type: long + +example: 887 + +format: bytes + +-- + +*`http.request.body.content`*:: ++ +-- +The full HTTP request body. type: keyword @@ -5008,57 +5336,713 @@ example: Hello world -- -*`http.response.body.content.text`*:: +*`http.request.body.content.text`*:: ++ +-- +type: text + +-- + +*`http.request.bytes`*:: ++ +-- +Total size in bytes of the request (body and headers). + +type: long + +example: 1437 + +format: bytes + +-- + +*`http.request.method`*:: ++ +-- +HTTP request method. +Prior to ECS 1.6.0 the following guidance was provided: +"The field value must be normalized to lowercase for querying." +As of ECS 1.6.0, the guidance is deprecated because the original case of the method may be useful in anomaly detection. Original case will be mandated in ECS 2.0.0 + +type: keyword + +example: GET, POST, PUT, PoST + +-- + +*`http.request.referrer`*:: ++ +-- +Referrer for this HTTP request. + +type: keyword + +example: https://blog.example.com/ + +-- + +*`http.response.body.bytes`*:: ++ +-- +Size in bytes of the response body. + +type: long + +example: 887 + +format: bytes + +-- + +*`http.response.body.content`*:: ++ +-- +The full HTTP response body. + +type: keyword + +example: Hello world + +-- + +*`http.response.body.content.text`*:: ++ +-- +type: text + +-- + +*`http.response.bytes`*:: ++ +-- +Total size in bytes of the response (body and headers). + +type: long + +example: 1437 + +format: bytes + +-- + +*`http.response.status_code`*:: ++ +-- +HTTP response status code. + +type: long + +example: 404 + +format: string + +-- + +*`http.version`*:: ++ +-- +HTTP version. + +type: keyword + +example: 1.1 + +-- + +[float] +=== interface + +The interface fields are used to record ingress and egress interface information when reported by an observer (e.g. firewall, router, load balancer) in the context of the observer handling a network connection. In the case of a single observer interface (e.g. network sensor on a span port) only the observer.ingress information should be populated. + + +*`interface.alias`*:: ++ +-- +Interface alias as reported by the system, typically used in firewall implementations for e.g. inside, outside, or dmz logical interface naming. + +type: keyword + +example: outside + +-- + +*`interface.id`*:: ++ +-- +Interface ID as reported by an observer (typically SNMP interface ID). + +type: keyword + +example: 10 + +-- + +*`interface.name`*:: ++ +-- +Interface name as reported by the system. + +type: keyword + +example: eth0 + +-- + +[float] +=== log + +Details about the event's logging mechanism or logging transport. +The log.* fields are typically populated with details about the logging mechanism used to create and/or transport the event. For example, syslog details belong under `log.syslog.*`. +The details specific to your event source are typically not logged under `log.*`, but rather in `event.*` or in other ECS fields. + + +*`log.file.path`*:: ++ +-- +Full path to the log file this event came from, including the file name. It should include the drive letter, when appropriate. +If the event wasn't read from a log file, do not populate this field. + +type: keyword + +example: /var/log/fun-times.log + +-- + +*`log.level`*:: ++ +-- +Original log level of the log event. +If the source of the event provides a log level or textual severity, this is the one that goes in `log.level`. If your source doesn't specify one, you may put your event transport's severity here (e.g. Syslog severity). +Some examples are `warn`, `err`, `i`, `informational`. + +type: keyword + +example: error + +-- + +*`log.logger`*:: ++ +-- +The name of the logger inside an application. This is usually the name of the class which initialized the logger, or can be a custom name. + +type: keyword + +example: org.elasticsearch.bootstrap.Bootstrap + +-- + +*`log.origin.file.line`*:: ++ +-- +The line number of the file containing the source code which originated the log event. + +type: integer + +example: 42 + +-- + +*`log.origin.file.name`*:: ++ +-- +The name of the file containing the source code which originated the log event. +Note that this field is not meant to capture the log file. The correct field to capture the log file is `log.file.path`. + +type: keyword + +example: Bootstrap.java + +-- + +*`log.origin.function`*:: ++ +-- +The name of the function or method which originated the log event. + +type: keyword + +example: init + +-- + +*`log.original`*:: ++ +-- +This is the original log message and contains the full log message before splitting it up in multiple parts. +In contrast to the `message` field which can contain an extracted part of the log message, this field contains the original, full log message. It can have already some modifications applied like encoding or new lines removed to clean up the log message. +This field is not indexed and doc_values are disabled so it can't be queried but the value can be retrieved from `_source`. + +type: keyword + +example: Sep 19 08:26:10 localhost My log + +Field is not indexed. + +-- + +*`log.syslog`*:: ++ +-- +The Syslog metadata of the event, if the event was transmitted via Syslog. Please see RFCs 5424 or 3164. + +type: object + +-- + +*`log.syslog.facility.code`*:: ++ +-- +The Syslog numeric facility of the log event, if available. +According to RFCs 5424 and 3164, this value should be an integer between 0 and 23. + +type: long + +example: 23 + +format: string + +-- + +*`log.syslog.facility.name`*:: ++ +-- +The Syslog text-based facility of the log event, if available. + +type: keyword + +example: local7 + +-- + +*`log.syslog.priority`*:: ++ +-- +Syslog numeric priority of the event, if available. +According to RFCs 5424 and 3164, the priority is 8 * facility + severity. This number is therefore expected to contain a value between 0 and 191. + +type: long + +example: 135 + +format: string + +-- + +*`log.syslog.severity.code`*:: ++ +-- +The Syslog numeric severity of the log event, if available. +If the event source publishing via Syslog provides a different numeric severity value (e.g. firewall, IDS), your source's numeric severity should go to `event.severity`. If the event source does not specify a distinct severity, you can optionally copy the Syslog severity to `event.severity`. + +type: long + +example: 3 + +-- + +*`log.syslog.severity.name`*:: ++ +-- +The Syslog numeric severity of the log event, if available. +If the event source publishing via Syslog provides a different severity value (e.g. firewall, IDS), your source's text severity should go to `log.level`. If the event source does not specify a distinct severity, you can optionally copy the Syslog severity to `log.level`. + +type: keyword + +example: Error + +-- + +[float] +=== network + +The network is defined as the communication path over which a host or network event happens. +The network.* fields should be populated with details about the network activity associated with an event. + + +*`network.application`*:: ++ +-- +A name given to an application level protocol. This can be arbitrarily assigned for things like microservices, but also apply to things like skype, icq, facebook, twitter. This would be used in situations where the vendor or service can be decoded such as from the source/dest IP owners, ports, or wire format. +The field value must be normalized to lowercase for querying. See the documentation section "Implementing ECS". + +type: keyword + +example: aim + +-- + +*`network.bytes`*:: ++ +-- +Total bytes transferred in both directions. +If `source.bytes` and `destination.bytes` are known, `network.bytes` is their sum. + +type: long + +example: 368 + +format: bytes + +-- + +*`network.community_id`*:: ++ +-- +A hash of source and destination IPs and ports, as well as the protocol used in a communication. This is a tool-agnostic standard to identify flows. +Learn more at https://github.com/corelight/community-id-spec. + +type: keyword + +example: 1:hO+sN4H+MG5MY/8hIrXPqc4ZQz0= + +-- + +*`network.direction`*:: ++ +-- +Direction of the network traffic. +Recommended values are: + * inbound + * outbound + * internal + * external + * unknown + +When mapping events from a host-based monitoring context, populate this field from the host's point of view. +When mapping events from a network or perimeter-based monitoring context, populate this field from the point of view of your network perimeter. + +type: keyword + +example: inbound + +-- + +*`network.forwarded_ip`*:: ++ +-- +Host IP address when the source IP address is the proxy. + +type: ip + +example: 192.1.1.2 + +-- + +*`network.iana_number`*:: ++ +-- +IANA Protocol Number (https://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml). Standardized list of protocols. This aligns well with NetFlow and sFlow related logs which use the IANA Protocol Number. + +type: keyword + +example: 6 + +-- + +*`network.inner`*:: ++ +-- +Network.inner fields are added in addition to network.vlan fields to describe the innermost VLAN when q-in-q VLAN tagging is present. Allowed fields include vlan.id and vlan.name. Inner vlan fields are typically used when sending traffic with multiple 802.1q encapsulations to a network sensor (e.g. Zeek, Wireshark.) + +type: object + +-- + +*`network.inner.vlan.id`*:: ++ +-- +VLAN ID as reported by the observer. + +type: keyword + +example: 10 + +-- + +*`network.inner.vlan.name`*:: ++ +-- +Optional VLAN name as reported by the observer. + +type: keyword + +example: outside + +-- + +*`network.name`*:: ++ +-- +Name given by operators to sections of their network. + +type: keyword + +example: Guest Wifi + +-- + +*`network.packets`*:: ++ +-- +Total packets transferred in both directions. +If `source.packets` and `destination.packets` are known, `network.packets` is their sum. + +type: long + +example: 24 + +-- + +*`network.protocol`*:: ++ +-- +L7 Network protocol name. ex. http, lumberjack, transport protocol. +The field value must be normalized to lowercase for querying. See the documentation section "Implementing ECS". + +type: keyword + +example: http + +-- + +*`network.transport`*:: ++ +-- +Same as network.iana_number, but instead using the Keyword name of the transport layer (udp, tcp, ipv6-icmp, etc.) +The field value must be normalized to lowercase for querying. See the documentation section "Implementing ECS". + +type: keyword + +example: tcp + +-- + +*`network.type`*:: ++ +-- +In the OSI Model this would be the Network Layer. ipv4, ipv6, ipsec, pim, etc +The field value must be normalized to lowercase for querying. See the documentation section "Implementing ECS". + +type: keyword + +example: ipv4 + +-- + +*`network.vlan.id`*:: ++ +-- +VLAN ID as reported by the observer. + +type: keyword + +example: 10 + +-- + +*`network.vlan.name`*:: ++ +-- +Optional VLAN name as reported by the observer. + +type: keyword + +example: outside + +-- + +[float] +=== observer + +An observer is defined as a special network, security, or application device used to detect, observe, or create network, security, or application-related events and metrics. +This could be a custom hardware appliance or a server that has been configured to run special network, security, or application software. Examples include firewalls, web proxies, intrusion detection/prevention systems, network monitoring sensors, web application firewalls, data loss prevention systems, and APM servers. The observer.* fields shall be populated with details of the system, if any, that detects, observes and/or creates a network, security, or application event or metric. Message queues and ETL components used in processing events or metrics are not considered observers in ECS. + + +*`observer.egress`*:: ++ +-- +Observer.egress holds information like interface number and name, vlan, and zone information to classify egress traffic. Single armed monitoring such as a network sensor on a span port should only use observer.ingress to categorize traffic. + +type: object + +-- + +*`observer.egress.interface.alias`*:: + -- -type: text +Interface alias as reported by the system, typically used in firewall implementations for e.g. inside, outside, or dmz logical interface naming. + +type: keyword + +example: outside -- -*`http.response.bytes`*:: +*`observer.egress.interface.id`*:: + -- -Total size in bytes of the response (body and headers). +Interface ID as reported by an observer (typically SNMP interface ID). -type: long +type: keyword -example: 1437 +example: 10 -format: bytes +-- + +*`observer.egress.interface.name`*:: ++ +-- +Interface name as reported by the system. + +type: keyword + +example: eth0 -- -*`http.response.status_code`*:: +*`observer.egress.vlan.id`*:: + -- -HTTP response status code. +VLAN ID as reported by the observer. -type: long +type: keyword -example: 404 +example: 10 -format: string +-- +*`observer.egress.vlan.name`*:: ++ -- +Optional VLAN name as reported by the observer. -*`http.version`*:: +type: keyword + +example: outside + +-- + +*`observer.egress.zone`*:: + -- -HTTP version. +Network zone of outbound traffic as reported by the observer to categorize the destination area of egress traffic, e.g. Internal, External, DMZ, HR, Legal, etc. type: keyword -example: 1.1 +example: Public_Internet -- -[float] -=== interface +*`observer.geo.city_name`*:: ++ +-- +City name. -The interface fields are used to record ingress and egress interface information when reported by an observer (e.g. firewall, router, load balancer) in the context of the observer handling a network connection. In the case of a single observer interface (e.g. network sensor on a span port) only the observer.ingress information should be populated. +type: keyword + +example: Montreal +-- -*`interface.alias`*:: +*`observer.geo.continent_name`*:: ++ +-- +Name of the continent. + +type: keyword + +example: North America + +-- + +*`observer.geo.country_iso_code`*:: ++ +-- +Country ISO code. + +type: keyword + +example: CA + +-- + +*`observer.geo.country_name`*:: ++ +-- +Country name. + +type: keyword + +example: Canada + +-- + +*`observer.geo.location`*:: ++ +-- +Longitude and latitude. + +type: geo_point + +example: { "lon": -73.614830, "lat": 45.505918 } + +-- + +*`observer.geo.name`*:: ++ +-- +User-defined description of a location, at the level of granularity they care about. +Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. +Not typically used in automated geolocation. + +type: keyword + +example: boston-dc + +-- + +*`observer.geo.region_iso_code`*:: ++ +-- +Region ISO code. + +type: keyword + +example: CA-QC + +-- + +*`observer.geo.region_name`*:: ++ +-- +Region name. + +type: keyword + +example: Quebec + +-- + +*`observer.hostname`*:: ++ +-- +Hostname of the observer. + +type: keyword + +-- + +*`observer.ingress`*:: ++ +-- +Observer.ingress holds information like interface number and name, vlan, and zone information to classify ingress traffic. Single armed monitoring such as a network sensor on a span port should only use observer.ingress to categorize traffic. + +type: object + +-- + +*`observer.ingress.interface.alias`*:: + -- Interface alias as reported by the system, typically used in firewall implementations for e.g. inside, outside, or dmz logical interface naming. @@ -5069,7 +6053,7 @@ example: outside -- -*`interface.id`*:: +*`observer.ingress.interface.id`*:: + -- Interface ID as reported by an observer (typically SNMP interface ID). @@ -5080,7 +6064,7 @@ example: 10 -- -*`interface.name`*:: +*`observer.ingress.interface.name`*:: + -- Interface name as reported by the system. @@ -5091,1163 +6075,1172 @@ example: eth0 -- -[float] -=== log +*`observer.ingress.vlan.id`*:: ++ +-- +VLAN ID as reported by the observer. -Details about the event's logging mechanism or logging transport. -The log.* fields are typically populated with details about the logging mechanism used to create and/or transport the event. For example, syslog details belong under `log.syslog.*`. -The details specific to your event source are typically not logged under `log.*`, but rather in `event.*` or in other ECS fields. +type: keyword + +example: 10 +-- -*`log.level`*:: +*`observer.ingress.vlan.name`*:: + -- -Original log level of the log event. -If the source of the event provides a log level or textual severity, this is the one that goes in `log.level`. If your source doesn't specify one, you may put your event transport's severity here (e.g. Syslog severity). -Some examples are `warn`, `err`, `i`, `informational`. +Optional VLAN name as reported by the observer. type: keyword -example: error +example: outside -- -*`log.logger`*:: +*`observer.ingress.zone`*:: + -- -The name of the logger inside an application. This is usually the name of the class which initialized the logger, or can be a custom name. +Network zone of incoming traffic as reported by the observer to categorize the source area of ingress traffic. e.g. internal, External, DMZ, HR, Legal, etc. type: keyword -example: org.elasticsearch.bootstrap.Bootstrap +example: DMZ + +-- + +*`observer.ip`*:: ++ +-- +IP addresses of the observer. + +type: ip + +-- + +*`observer.mac`*:: ++ +-- +MAC addresses of the observer + +type: keyword + +-- + +*`observer.name`*:: ++ +-- +Custom name of the observer. +This is a name that can be given to an observer. This can be helpful for example if multiple firewalls of the same model are used in an organization. +If no custom name is needed, the field can be left empty. + +type: keyword + +example: 1_proxySG + +-- + +*`observer.os.family`*:: ++ +-- +OS family (such as redhat, debian, freebsd, windows). + +type: keyword + +example: debian + +-- + +*`observer.os.full`*:: ++ +-- +Operating system name, including the version or code name. + +type: keyword + +example: Mac OS Mojave + +-- + +*`observer.os.full.text`*:: ++ +-- +type: text -- -*`log.origin.file.line`*:: +*`observer.os.kernel`*:: + -- -The line number of the file containing the source code which originated the log event. +Operating system kernel version as a raw string. -type: integer +type: keyword -example: 42 +example: 4.4.0-112-generic -- -*`log.origin.file.name`*:: +*`observer.os.name`*:: + -- -The name of the file containing the source code which originated the log event. Note that this is not the name of the log file. +Operating system name, without the version. type: keyword -example: Bootstrap.java +example: Mac OS X -- -*`log.origin.function`*:: +*`observer.os.name.text`*:: + -- -The name of the function or method which originated the log event. - -type: keyword - -example: init +type: text -- -*`log.original`*:: +*`observer.os.platform`*:: + -- -This is the original log message and contains the full log message before splitting it up in multiple parts. -In contrast to the `message` field which can contain an extracted part of the log message, this field contains the original, full log message. It can have already some modifications applied like encoding or new lines removed to clean up the log message. -This field is not indexed and doc_values are disabled so it can't be queried but the value can be retrieved from `_source`. +Operating system platform (such centos, ubuntu, windows). type: keyword -example: Sep 19 08:26:10 localhost My log +example: darwin -- -*`log.syslog`*:: +*`observer.os.version`*:: + -- -The Syslog metadata of the event, if the event was transmitted via Syslog. Please see RFCs 5424 or 3164. +Operating system version as a raw string. -type: object +type: keyword + +example: 10.14.1 -- -*`log.syslog.facility.code`*:: +*`observer.product`*:: + -- -The Syslog numeric facility of the log event, if available. -According to RFCs 5424 and 3164, this value should be an integer between 0 and 23. - -type: long +The product name of the observer. -example: 23 +type: keyword -format: string +example: s200 -- -*`log.syslog.facility.name`*:: +*`observer.serial_number`*:: + -- -The Syslog text-based facility of the log event, if available. +Observer serial number. type: keyword -example: local7 - -- -*`log.syslog.priority`*:: +*`observer.type`*:: + -- -Syslog numeric priority of the event, if available. -According to RFCs 5424 and 3164, the priority is 8 * facility + severity. This number is therefore expected to contain a value between 0 and 191. - -type: long +The type of the observer the data is coming from. +There is no predefined list of observer types. Some examples are `forwarder`, `firewall`, `ids`, `ips`, `proxy`, `poller`, `sensor`, `APM server`. -example: 135 +type: keyword -format: string +example: firewall -- -*`log.syslog.severity.code`*:: +*`observer.vendor`*:: + -- -The Syslog numeric severity of the log event, if available. -If the event source publishing via Syslog provides a different numeric severity value (e.g. firewall, IDS), your source's numeric severity should go to `event.severity`. If the event source does not specify a distinct severity, you can optionally copy the Syslog severity to `event.severity`. +Vendor name of the observer. -type: long +type: keyword -example: 3 +example: Symantec -- -*`log.syslog.severity.name`*:: +*`observer.version`*:: + -- -The Syslog numeric severity of the log event, if available. -If the event source publishing via Syslog provides a different severity value (e.g. firewall, IDS), your source's text severity should go to `log.level`. If the event source does not specify a distinct severity, you can optionally copy the Syslog severity to `log.level`. +Observer version. type: keyword -example: Error - -- [float] -=== network +=== organization -The network is defined as the communication path over which a host or network event happens. -The network.* fields should be populated with details about the network activity associated with an event. +The organization fields enrich data with information about the company or entity the data is associated with. +These fields help you arrange or filter data stored in an index by one or multiple organizations. -*`network.application`*:: +*`organization.id`*:: + -- -A name given to an application level protocol. This can be arbitrarily assigned for things like microservices, but also apply to things like skype, icq, facebook, twitter. This would be used in situations where the vendor or service can be decoded such as from the source/dest IP owners, ports, or wire format. -The field value must be normalized to lowercase for querying. See the documentation section "Implementing ECS". +Unique identifier for the organization. type: keyword -example: aim - --- - -*`network.bytes`*:: -+ --- -Total bytes transferred in both directions. -If `source.bytes` and `destination.bytes` are known, `network.bytes` is their sum. - -type: long - -example: 368 - -format: bytes - -- -*`network.community_id`*:: +*`organization.name`*:: + -- -A hash of source and destination IPs and ports, as well as the protocol used in a communication. This is a tool-agnostic standard to identify flows. -Learn more at https://github.com/corelight/community-id-spec. +Organization name. type: keyword -example: 1:hO+sN4H+MG5MY/8hIrXPqc4ZQz0= - -- -*`network.direction`*:: +*`organization.name.text`*:: + -- -Direction of the network traffic. -Recommended values are: - * inbound - * outbound - * internal - * external - * unknown +type: text -When mapping events from a host-based monitoring context, populate this field from the host's point of view. -When mapping events from a network or perimeter-based monitoring context, populate this field from the point of view of your network perimeter. +-- -type: keyword +[float] +=== os -example: inbound +The OS fields contain information about the operating system. --- -*`network.forwarded_ip`*:: +*`os.family`*:: + -- -Host IP address when the source IP address is the proxy. +OS family (such as redhat, debian, freebsd, windows). -type: ip +type: keyword -example: 192.1.1.2 +example: debian -- -*`network.iana_number`*:: +*`os.full`*:: + -- -IANA Protocol Number (https://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml). Standardized list of protocols. This aligns well with NetFlow and sFlow related logs which use the IANA Protocol Number. +Operating system name, including the version or code name. type: keyword -example: 6 +example: Mac OS Mojave -- -*`network.inner`*:: +*`os.full.text`*:: + -- -Network.inner fields are added in addition to network.vlan fields to describe the innermost VLAN when q-in-q VLAN tagging is present. Allowed fields include vlan.id and vlan.name. Inner vlan fields are typically used when sending traffic with multiple 802.1q encapsulations to a network sensor (e.g. Zeek, Wireshark.) - -type: object +type: text -- -*`network.inner.vlan.id`*:: +*`os.kernel`*:: + -- -VLAN ID as reported by the observer. +Operating system kernel version as a raw string. type: keyword -example: 10 +example: 4.4.0-112-generic -- -*`network.inner.vlan.name`*:: +*`os.name`*:: + -- -Optional VLAN name as reported by the observer. +Operating system name, without the version. type: keyword -example: outside +example: Mac OS X -- -*`network.name`*:: +*`os.name.text`*:: + -- -Name given by operators to sections of their network. - -type: keyword - -example: Guest Wifi +type: text -- -*`network.packets`*:: +*`os.platform`*:: + -- -Total packets transferred in both directions. -If `source.packets` and `destination.packets` are known, `network.packets` is their sum. +Operating system platform (such centos, ubuntu, windows). -type: long +type: keyword -example: 24 +example: darwin -- -*`network.protocol`*:: +*`os.version`*:: + -- -L7 Network protocol name. ex. http, lumberjack, transport protocol. -The field value must be normalized to lowercase for querying. See the documentation section "Implementing ECS". +Operating system version as a raw string. type: keyword -example: http +example: 10.14.1 -- -*`network.transport`*:: +[float] +=== package + +These fields contain information about an installed software package. It contains general information about a package, such as name, version or size. It also contains installation details, such as time or location. + + +*`package.architecture`*:: + -- -Same as network.iana_number, but instead using the Keyword name of the transport layer (udp, tcp, ipv6-icmp, etc.) -The field value must be normalized to lowercase for querying. See the documentation section "Implementing ECS". +Package architecture. type: keyword -example: tcp +example: x86_64 -- -*`network.type`*:: +*`package.build_version`*:: + -- -In the OSI Model this would be the Network Layer. ipv4, ipv6, ipsec, pim, etc -The field value must be normalized to lowercase for querying. See the documentation section "Implementing ECS". +Additional information about the build version of the installed package. +For example use the commit SHA of a non-released package. type: keyword -example: ipv4 +example: 36f4f7e89dd61b0988b12ee000b98966867710cd -- -*`network.vlan.id`*:: +*`package.checksum`*:: + -- -VLAN ID as reported by the observer. +Checksum of the installed package for verification. type: keyword -example: 10 +example: 68b329da9893e34099c7d8ad5cb9c940 -- -*`network.vlan.name`*:: +*`package.description`*:: + -- -Optional VLAN name as reported by the observer. +Description of the package. type: keyword -example: outside +example: Open source programming language to build simple/reliable/efficient software. -- -[float] -=== observer - -An observer is defined as a special network, security, or application device used to detect, observe, or create network, security, or application-related events and metrics. -This could be a custom hardware appliance or a server that has been configured to run special network, security, or application software. Examples include firewalls, web proxies, intrusion detection/prevention systems, network monitoring sensors, web application firewalls, data loss prevention systems, and APM servers. The observer.* fields shall be populated with details of the system, if any, that detects, observes and/or creates a network, security, or application event or metric. Message queues and ETL components used in processing events or metrics are not considered observers in ECS. - - -*`observer.egress`*:: +*`package.install_scope`*:: + -- -Observer.egress holds information like interface number and name, vlan, and zone information to classify egress traffic. Single armed monitoring such as a network sensor on a span port should only use observer.ingress to categorize traffic. +Indicating how the package was installed, e.g. user-local, global. -type: object +type: keyword + +example: global -- -*`observer.egress.interface.alias`*:: +*`package.installed`*:: + -- -Interface alias as reported by the system, typically used in firewall implementations for e.g. inside, outside, or dmz logical interface naming. - -type: keyword +Time when package was installed. -example: outside +type: date -- -*`observer.egress.interface.id`*:: +*`package.license`*:: + -- -Interface ID as reported by an observer (typically SNMP interface ID). +License under which the package was released. +Use a short name, e.g. the license identifier from SPDX License List where possible (https://spdx.org/licenses/). type: keyword -example: 10 +example: Apache License 2.0 -- -*`observer.egress.interface.name`*:: +*`package.name`*:: + -- -Interface name as reported by the system. +Package name type: keyword -example: eth0 +example: go -- -*`observer.egress.vlan.id`*:: +*`package.path`*:: + -- -VLAN ID as reported by the observer. +Path where the package is installed. type: keyword -example: 10 +example: /usr/local/Cellar/go/1.12.9/ -- -*`observer.egress.vlan.name`*:: +*`package.reference`*:: + -- -Optional VLAN name as reported by the observer. +Home page or reference URL of the software in this package, if available. type: keyword -example: outside +example: https://golang.org -- -*`observer.egress.zone`*:: +*`package.size`*:: + -- -Network zone of outbound traffic as reported by the observer to categorize the destination area of egress traffic, e.g. Internal, External, DMZ, HR, Legal, etc. +Package size in bytes. -type: keyword +type: long -example: Public_Internet +example: 62231 + +format: string -- -*`observer.geo.city_name`*:: +*`package.type`*:: + -- -City name. +Type of package. +This should contain the package file type, rather than the package manager name. Examples: rpm, dpkg, brew, npm, gem, nupkg, jar. type: keyword -example: Montreal +example: rpm -- -*`observer.geo.continent_name`*:: +*`package.version`*:: + -- -Name of the continent. +Package version type: keyword -example: North America +example: 1.12.9 -- -*`observer.geo.country_iso_code`*:: +[float] +=== pe + +These fields contain Windows Portable Executable (PE) metadata. + + +*`pe.architecture`*:: + -- -Country ISO code. +CPU architecture target for the file. type: keyword -example: CA +example: x64 -- -*`observer.geo.country_name`*:: +*`pe.company`*:: + -- -Country name. +Internal company name of the file, provided at compile-time. type: keyword -example: Canada +example: Microsoft Corporation -- -*`observer.geo.location`*:: +*`pe.description`*:: + -- -Longitude and latitude. +Internal description of the file, provided at compile-time. -type: geo_point +type: keyword -example: { "lon": -73.614830, "lat": 45.505918 } +example: Paint -- -*`observer.geo.name`*:: +*`pe.file_version`*:: + -- -User-defined description of a location, at the level of granularity they care about. -Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. -Not typically used in automated geolocation. +Internal version of the file, provided at compile-time. type: keyword -example: boston-dc +example: 6.3.9600.17415 -- -*`observer.geo.region_iso_code`*:: +*`pe.imphash`*:: + -- -Region ISO code. +A hash of the imports in a PE file. An imphash -- or import hash -- can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. +Learn more at https://www.fireeye.com/blog/threat-research/2014/01/tracking-malware-import-hashing.html. type: keyword -example: CA-QC +example: 0c6803c4e922103c4dca5963aad36ddf -- -*`observer.geo.region_name`*:: +*`pe.original_file_name`*:: + -- -Region name. +Internal name of the file, provided at compile-time. type: keyword -example: Quebec +example: MSPAINT.EXE -- -*`observer.hostname`*:: +*`pe.product`*:: + -- -Hostname of the observer. +Internal product name of the file, provided at compile-time. type: keyword --- +example: Microsoft® Windows® Operating System -*`observer.ingress`*:: -+ -- -Observer.ingress holds information like interface number and name, vlan, and zone information to classify ingress traffic. Single armed monitoring such as a network sensor on a span port should only use observer.ingress to categorize traffic. -type: object +[float] +=== process --- +These fields contain information about a process. +These fields can help you correlate metrics information with a process id/name from a log message. The `process.pid` often stays in the metric itself and is copied to the global field for correlation. -*`observer.ingress.interface.alias`*:: + +*`process.args`*:: + -- -Interface alias as reported by the system, typically used in firewall implementations for e.g. inside, outside, or dmz logical interface naming. +Array of process arguments, starting with the absolute path to the executable. +May be filtered to protect sensitive information. type: keyword -example: outside +example: ['/usr/bin/ssh', '-l', 'user', '10.0.0.16'] -- -*`observer.ingress.interface.id`*:: +*`process.args_count`*:: + -- -Interface ID as reported by an observer (typically SNMP interface ID). +Length of the process.args array. +This field can be useful for querying or performing bucket analysis on how many arguments were provided to start a process. More arguments may be an indication of suspicious activity. -type: keyword +type: long -example: 10 +example: 4 -- -*`observer.ingress.interface.name`*:: +*`process.code_signature.exists`*:: + -- -Interface name as reported by the system. +Boolean to capture if a signature is present. -type: keyword +type: boolean -example: eth0 +example: true -- -*`observer.ingress.vlan.id`*:: +*`process.code_signature.status`*:: + -- -VLAN ID as reported by the observer. +Additional information about the certificate status. +This is useful for logging cryptographic errors with the certificate validity or trust status. Leave unpopulated if the validity or trust of the certificate was unchecked. type: keyword -example: 10 +example: ERROR_UNTRUSTED_ROOT -- -*`observer.ingress.vlan.name`*:: +*`process.code_signature.subject_name`*:: + -- -Optional VLAN name as reported by the observer. +Subject name of the code signer type: keyword -example: outside +example: Microsoft Corporation -- -*`observer.ingress.zone`*:: +*`process.code_signature.trusted`*:: + -- -Network zone of incoming traffic as reported by the observer to categorize the source area of ingress traffic. e.g. internal, External, DMZ, HR, Legal, etc. +Stores the trust status of the certificate chain. +Validating the trust of the certificate chain may be complicated, and this field should only be populated by tools that actively check the status. -type: keyword +type: boolean -example: DMZ +example: true -- -*`observer.ip`*:: +*`process.code_signature.valid`*:: + -- -IP addresses of the observer. +Boolean to capture if the digital signature is verified against the binary content. +Leave unpopulated if a certificate was unchecked. -type: ip +type: boolean + +example: true -- -*`observer.mac`*:: +*`process.command_line`*:: + -- -MAC addresses of the observer +Full command line that started the process, including the absolute path to the executable, and all arguments. +Some arguments may be filtered to protect sensitive information. type: keyword +example: /usr/bin/ssh -l user 10.0.0.16 + -- -*`observer.name`*:: +*`process.command_line.text`*:: + -- -Custom name of the observer. -This is a name that can be given to an observer. This can be helpful for example if multiple firewalls of the same model are used in an organization. -If no custom name is needed, the field can be left empty. - -type: keyword - -example: 1_proxySG +type: text -- -*`observer.os.family`*:: +*`process.entity_id`*:: + -- -OS family (such as redhat, debian, freebsd, windows). +Unique identifier for the process. +The implementation of this is specified by the data source, but some examples of what could be used here are a process-generated UUID, Sysmon Process GUIDs, or a hash of some uniquely identifying components of a process. +Constructing a globally unique identifier is a common practice to mitigate PID reuse as well as to identify a specific process over time, across multiple monitored hosts. type: keyword -example: debian +example: c2c455d9f99375d -- -*`observer.os.full`*:: +*`process.executable`*:: + -- -Operating system name, including the version or code name. +Absolute path to the process executable. type: keyword -example: Mac OS Mojave +example: /usr/bin/ssh -- -*`observer.os.full.text`*:: +*`process.executable.text`*:: + -- type: text -- -*`observer.os.kernel`*:: +*`process.exit_code`*:: + -- -Operating system kernel version as a raw string. +The exit code of the process, if this is a termination event. +The field should be absent if there is no exit code for the event (e.g. process start). -type: keyword +type: long -example: 4.4.0-112-generic +example: 137 -- -*`observer.os.name`*:: +*`process.hash.md5`*:: + -- -Operating system name, without the version. +MD5 hash. type: keyword -example: Mac OS X - -- -*`observer.os.name.text`*:: +*`process.hash.sha1`*:: + -- -type: text +SHA1 hash. + +type: keyword -- -*`observer.os.platform`*:: +*`process.hash.sha256`*:: + -- -Operating system platform (such centos, ubuntu, windows). +SHA256 hash. type: keyword -example: darwin - -- -*`observer.os.version`*:: +*`process.hash.sha512`*:: + -- -Operating system version as a raw string. +SHA512 hash. type: keyword -example: 10.14.1 - -- -*`observer.product`*:: +*`process.name`*:: + -- -The product name of the observer. +Process name. +Sometimes called program name or similar. type: keyword -example: s200 +example: ssh -- -*`observer.serial_number`*:: +*`process.name.text`*:: + -- -Observer serial number. - -type: keyword +type: text -- -*`observer.type`*:: +*`process.parent.args`*:: + -- -The type of the observer the data is coming from. -There is no predefined list of observer types. Some examples are `forwarder`, `firewall`, `ids`, `ips`, `proxy`, `poller`, `sensor`, `APM server`. +Array of process arguments, starting with the absolute path to the executable. +May be filtered to protect sensitive information. type: keyword -example: firewall +example: ['/usr/bin/ssh', '-l', 'user', '10.0.0.16'] -- -*`observer.vendor`*:: +*`process.parent.args_count`*:: + -- -Vendor name of the observer. +Length of the process.args array. +This field can be useful for querying or performing bucket analysis on how many arguments were provided to start a process. More arguments may be an indication of suspicious activity. -type: keyword +type: long -example: Symantec +example: 4 -- -*`observer.version`*:: +*`process.parent.code_signature.exists`*:: + -- -Observer version. - -type: keyword - --- +Boolean to capture if a signature is present. -[float] -=== organization +type: boolean -The organization fields enrich data with information about the company or entity the data is associated with. -These fields help you arrange or filter data stored in an index by one or multiple organizations. +example: true +-- -*`organization.id`*:: +*`process.parent.code_signature.status`*:: + -- -Unique identifier for the organization. +Additional information about the certificate status. +This is useful for logging cryptographic errors with the certificate validity or trust status. Leave unpopulated if the validity or trust of the certificate was unchecked. type: keyword +example: ERROR_UNTRUSTED_ROOT + -- -*`organization.name`*:: +*`process.parent.code_signature.subject_name`*:: + -- -Organization name. +Subject name of the code signer type: keyword --- +example: Microsoft Corporation -*`organization.name.text`*:: -+ -- -type: text +*`process.parent.code_signature.trusted`*:: ++ -- +Stores the trust status of the certificate chain. +Validating the trust of the certificate chain may be complicated, and this field should only be populated by tools that actively check the status. -[float] -=== os +type: boolean -The OS fields contain information about the operating system. +example: true +-- -*`os.family`*:: +*`process.parent.code_signature.valid`*:: + -- -OS family (such as redhat, debian, freebsd, windows). +Boolean to capture if the digital signature is verified against the binary content. +Leave unpopulated if a certificate was unchecked. -type: keyword +type: boolean -example: debian +example: true -- -*`os.full`*:: +*`process.parent.command_line`*:: + -- -Operating system name, including the version or code name. +Full command line that started the process, including the absolute path to the executable, and all arguments. +Some arguments may be filtered to protect sensitive information. type: keyword -example: Mac OS Mojave +example: /usr/bin/ssh -l user 10.0.0.16 -- -*`os.full.text`*:: +*`process.parent.command_line.text`*:: + -- type: text -- -*`os.kernel`*:: +*`process.parent.entity_id`*:: + -- -Operating system kernel version as a raw string. +Unique identifier for the process. +The implementation of this is specified by the data source, but some examples of what could be used here are a process-generated UUID, Sysmon Process GUIDs, or a hash of some uniquely identifying components of a process. +Constructing a globally unique identifier is a common practice to mitigate PID reuse as well as to identify a specific process over time, across multiple monitored hosts. type: keyword -example: 4.4.0-112-generic +example: c2c455d9f99375d -- -*`os.name`*:: +*`process.parent.executable`*:: + -- -Operating system name, without the version. +Absolute path to the process executable. type: keyword -example: Mac OS X +example: /usr/bin/ssh -- -*`os.name.text`*:: +*`process.parent.executable.text`*:: + -- type: text -- -*`os.platform`*:: +*`process.parent.exit_code`*:: + -- -Operating system platform (such centos, ubuntu, windows). +The exit code of the process, if this is a termination event. +The field should be absent if there is no exit code for the event (e.g. process start). -type: keyword +type: long -example: darwin +example: 137 -- -*`os.version`*:: +*`process.parent.hash.md5`*:: + -- -Operating system version as a raw string. +MD5 hash. type: keyword -example: 10.14.1 - -- -[float] -=== package - -These fields contain information about an installed software package. It contains general information about a package, such as name, version or size. It also contains installation details, such as time or location. - - -*`package.architecture`*:: +*`process.parent.hash.sha1`*:: + -- -Package architecture. +SHA1 hash. type: keyword -example: x86_64 - -- -*`package.build_version`*:: +*`process.parent.hash.sha256`*:: + -- -Additional information about the build version of the installed package. -For example use the commit SHA of a non-released package. +SHA256 hash. type: keyword -example: 36f4f7e89dd61b0988b12ee000b98966867710cd - -- -*`package.checksum`*:: +*`process.parent.hash.sha512`*:: + -- -Checksum of the installed package for verification. +SHA512 hash. type: keyword -example: 68b329da9893e34099c7d8ad5cb9c940 - -- -*`package.description`*:: +*`process.parent.name`*:: + -- -Description of the package. +Process name. +Sometimes called program name or similar. type: keyword -example: Open source programming language to build simple/reliable/efficient software. +example: ssh -- -*`package.install_scope`*:: +*`process.parent.name.text`*:: + -- -Indicating how the package was installed, e.g. user-local, global. - -type: keyword - -example: global +type: text -- -*`package.installed`*:: +*`process.parent.pe.architecture`*:: + -- -Time when package was installed. +CPU architecture target for the file. -type: date +type: keyword + +example: x64 -- -*`package.license`*:: +*`process.parent.pe.company`*:: + -- -License under which the package was released. -Use a short name, e.g. the license identifier from SPDX License List where possible (https://spdx.org/licenses/). +Internal company name of the file, provided at compile-time. type: keyword -example: Apache License 2.0 +example: Microsoft Corporation -- -*`package.name`*:: +*`process.parent.pe.description`*:: + -- -Package name +Internal description of the file, provided at compile-time. type: keyword -example: go +example: Paint -- -*`package.path`*:: +*`process.parent.pe.file_version`*:: + -- -Path where the package is installed. +Internal version of the file, provided at compile-time. type: keyword -example: /usr/local/Cellar/go/1.12.9/ +example: 6.3.9600.17415 -- -*`package.reference`*:: +*`process.parent.pe.imphash`*:: + -- -Home page or reference URL of the software in this package, if available. +A hash of the imports in a PE file. An imphash -- or import hash -- can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. +Learn more at https://www.fireeye.com/blog/threat-research/2014/01/tracking-malware-import-hashing.html. type: keyword -example: https://golang.org +example: 0c6803c4e922103c4dca5963aad36ddf -- -*`package.size`*:: +*`process.parent.pe.original_file_name`*:: + -- -Package size in bytes. - -type: long +Internal name of the file, provided at compile-time. -example: 62231 +type: keyword -format: string +example: MSPAINT.EXE -- -*`package.type`*:: +*`process.parent.pe.product`*:: + -- -Type of package. -This should contain the package file type, rather than the package manager name. Examples: rpm, dpkg, brew, npm, gem, nupkg, jar. +Internal product name of the file, provided at compile-time. type: keyword -example: rpm +example: Microsoft® Windows® Operating System -- -*`package.version`*:: +*`process.parent.pgid`*:: + -- -Package version +Identifier of the group of processes the process belongs to. -type: keyword +type: long -example: 1.12.9 +format: string -- -[float] -=== pe - -These fields contain Windows Portable Executable (PE) metadata. - - -*`pe.company`*:: +*`process.parent.pid`*:: + -- -Internal company name of the file, provided at compile-time. +Process id. -type: keyword +type: long -example: Microsoft Corporation +example: 4242 + +format: string -- -*`pe.description`*:: +*`process.parent.ppid`*:: + -- -Internal description of the file, provided at compile-time. +Parent process' pid. -type: keyword +type: long -example: Paint +example: 4241 + +format: string -- -*`pe.file_version`*:: +*`process.parent.start`*:: + -- -Internal version of the file, provided at compile-time. +The time the process started. -type: keyword +type: date -example: 6.3.9600.17415 +example: 2016-05-23T08:05:34.853Z -- -*`pe.original_file_name`*:: +*`process.parent.thread.id`*:: + -- -Internal name of the file, provided at compile-time. +Thread ID. -type: keyword +type: long -example: MSPAINT.EXE +example: 4242 + +format: string -- -*`pe.product`*:: +*`process.parent.thread.name`*:: + -- -Internal product name of the file, provided at compile-time. +Thread name. type: keyword -example: Microsoft® Windows® Operating System +example: thread-0 -- -[float] -=== process - -These fields contain information about a process. -These fields can help you correlate metrics information with a process id/name from a log message. The `process.pid` often stays in the metric itself and is copied to the global field for correlation. - - -*`process.args`*:: +*`process.parent.title`*:: + -- -Array of process arguments, starting with the absolute path to the executable. -May be filtered to protect sensitive information. +Process title. +The proctitle, some times the same as process name. Can also be different: for example a browser setting its title to the web page currently opened. type: keyword -example: ['/usr/bin/ssh', '-l', 'user', '10.0.0.16'] +-- +*`process.parent.title.text`*:: ++ -- +type: text -*`process.args_count`*:: +-- + +*`process.parent.uptime`*:: + -- -Length of the process.args array. -This field can be useful for querying or performing bucket analysis on how many arguments were provided to start a process. More arguments may be an indication of suspicious activity. +Seconds the process has been up. type: long -example: 4 +example: 1325 -- -*`process.code_signature.exists`*:: +*`process.parent.working_directory`*:: + -- -Boolean to capture if a signature is present. +The working directory of the process. -type: boolean +type: keyword -example: true +example: /home/alice + +-- + +*`process.parent.working_directory.text`*:: ++ +-- +type: text -- -*`process.code_signature.status`*:: +*`process.pe.architecture`*:: + -- -Additional information about the certificate status. -This is useful for logging cryptographic errors with the certificate validity or trust status. Leave unpopulated if the validity or trust of the certificate was unchecked. +CPU architecture target for the file. type: keyword -example: ERROR_UNTRUSTED_ROOT +example: x64 -- -*`process.code_signature.subject_name`*:: +*`process.pe.company`*:: + -- -Subject name of the code signer +Internal company name of the file, provided at compile-time. type: keyword @@ -6255,894 +7248,896 @@ example: Microsoft Corporation -- -*`process.code_signature.trusted`*:: +*`process.pe.description`*:: + -- -Stores the trust status of the certificate chain. -Validating the trust of the certificate chain may be complicated, and this field should only be populated by tools that actively check the status. +Internal description of the file, provided at compile-time. -type: boolean +type: keyword -example: true +example: Paint -- -*`process.code_signature.valid`*:: +*`process.pe.file_version`*:: + -- -Boolean to capture if the digital signature is verified against the binary content. -Leave unpopulated if a certificate was unchecked. +Internal version of the file, provided at compile-time. -type: boolean +type: keyword -example: true +example: 6.3.9600.17415 -- -*`process.command_line`*:: +*`process.pe.imphash`*:: + -- -Full command line that started the process, including the absolute path to the executable, and all arguments. -Some arguments may be filtered to protect sensitive information. +A hash of the imports in a PE file. An imphash -- or import hash -- can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. +Learn more at https://www.fireeye.com/blog/threat-research/2014/01/tracking-malware-import-hashing.html. type: keyword -example: /usr/bin/ssh -l user 10.0.0.16 - --- - -*`process.command_line.text`*:: -+ --- -type: text +example: 0c6803c4e922103c4dca5963aad36ddf -- -*`process.entity_id`*:: +*`process.pe.original_file_name`*:: + -- -Unique identifier for the process. -The implementation of this is specified by the data source, but some examples of what could be used here are a process-generated UUID, Sysmon Process GUIDs, or a hash of some uniquely identifying components of a process. -Constructing a globally unique identifier is a common practice to mitigate PID reuse as well as to identify a specific process over time, across multiple monitored hosts. +Internal name of the file, provided at compile-time. type: keyword -example: c2c455d9f99375d +example: MSPAINT.EXE -- -*`process.executable`*:: +*`process.pe.product`*:: + -- -Absolute path to the process executable. +Internal product name of the file, provided at compile-time. type: keyword -example: /usr/bin/ssh +example: Microsoft® Windows® Operating System -- -*`process.executable.text`*:: +*`process.pgid`*:: + -- -type: text +Identifier of the group of processes the process belongs to. + +type: long + +format: string -- -*`process.exit_code`*:: +*`process.pid`*:: + -- -The exit code of the process, if this is a termination event. -The field should be absent if there is no exit code for the event (e.g. process start). +Process id. type: long -example: 137 +example: 4242 + +format: string -- -*`process.hash.md5`*:: +*`process.ppid`*:: + -- -MD5 hash. +Parent process' pid. -type: keyword +type: long + +example: 4241 + +format: string -- -*`process.hash.sha1`*:: +*`process.start`*:: + -- -SHA1 hash. +The time the process started. -type: keyword +type: date + +example: 2016-05-23T08:05:34.853Z -- -*`process.hash.sha256`*:: +*`process.thread.id`*:: + -- -SHA256 hash. +Thread ID. -type: keyword +type: long + +example: 4242 + +format: string -- -*`process.hash.sha512`*:: +*`process.thread.name`*:: + -- -SHA512 hash. +Thread name. type: keyword +example: thread-0 + -- -*`process.name`*:: +*`process.title`*:: + -- -Process name. -Sometimes called program name or similar. +Process title. +The proctitle, some times the same as process name. Can also be different: for example a browser setting its title to the web page currently opened. type: keyword -example: ssh - -- -*`process.name.text`*:: +*`process.title.text`*:: + -- type: text -- -*`process.parent.args`*:: +*`process.uptime`*:: + -- -Array of process arguments. -May be filtered to protect sensitive information. +Seconds the process has been up. -type: keyword +type: long -example: ['ssh', '-l', 'user', '10.0.0.16'] +example: 1325 -- -*`process.parent.args_count`*:: +*`process.working_directory`*:: + -- -Length of the process.args array. -This field can be useful for querying or performing bucket analysis on how many arguments were provided to start a process. More arguments may be an indication of suspicious activity. +The working directory of the process. -type: long +type: keyword -example: 4 +example: /home/alice -- -*`process.parent.code_signature.exists`*:: +*`process.working_directory.text`*:: + -- -Boolean to capture if a signature is present. +type: text -type: boolean +-- -example: true +[float] +=== registry --- +Fields related to Windows Registry operations. -*`process.parent.code_signature.status`*:: + +*`registry.data.bytes`*:: + -- -Additional information about the certificate status. -This is useful for logging cryptographic errors with the certificate validity or trust status. Leave unpopulated if the validity or trust of the certificate was unchecked. +Original bytes written with base64 encoding. +For Windows registry operations, such as SetValueEx and RegQueryValueEx, this corresponds to the data pointed by `lp_data`. This is optional but provides better recoverability and should be populated for REG_BINARY encoded values. type: keyword -example: ERROR_UNTRUSTED_ROOT +example: ZQBuAC0AVQBTAAAAZQBuAAAAAAA= -- -*`process.parent.code_signature.subject_name`*:: +*`registry.data.strings`*:: + -- -Subject name of the code signer +Content when writing string types. +Populated as an array when writing string data to the registry. For single string registry types (REG_SZ, REG_EXPAND_SZ), this should be an array with one string. For sequences of string with REG_MULTI_SZ, this array will be variable length. For numeric data, such as REG_DWORD and REG_QWORD, this should be populated with the decimal representation (e.g `"1"`). type: keyword -example: Microsoft Corporation +example: ["C:\rta\red_ttp\bin\myapp.exe"] -- -*`process.parent.code_signature.trusted`*:: +*`registry.data.type`*:: + -- -Stores the trust status of the certificate chain. -Validating the trust of the certificate chain may be complicated, and this field should only be populated by tools that actively check the status. +Standard registry type for encoding contents -type: boolean +type: keyword -example: true +example: REG_SZ -- -*`process.parent.code_signature.valid`*:: +*`registry.hive`*:: + -- -Boolean to capture if the digital signature is verified against the binary content. -Leave unpopulated if a certificate was unchecked. +Abbreviated name for the hive. -type: boolean +type: keyword -example: true +example: HKLM -- -*`process.parent.command_line`*:: +*`registry.key`*:: + -- -Full command line that started the process, including the absolute path to the executable, and all arguments. -Some arguments may be filtered to protect sensitive information. +Hive-relative path of keys. type: keyword -example: /usr/bin/ssh -l user 10.0.0.16 - --- - -*`process.parent.command_line.text`*:: -+ --- -type: text +example: SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\winword.exe -- -*`process.parent.entity_id`*:: +*`registry.path`*:: + -- -Unique identifier for the process. -The implementation of this is specified by the data source, but some examples of what could be used here are a process-generated UUID, Sysmon Process GUIDs, or a hash of some uniquely identifying components of a process. -Constructing a globally unique identifier is a common practice to mitigate PID reuse as well as to identify a specific process over time, across multiple monitored hosts. +Full path, including hive, key and value type: keyword -example: c2c455d9f99375d +example: HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\winword.exe\Debugger -- -*`process.parent.executable`*:: +*`registry.value`*:: + -- -Absolute path to the process executable. +Name of the value written. type: keyword -example: /usr/bin/ssh +example: Debugger -- -*`process.parent.executable.text`*:: -+ --- -type: text +[float] +=== related --- +This field set is meant to facilitate pivoting around a piece of data. +Some pieces of information can be seen in many places in an ECS event. To facilitate searching for them, store an array of all seen values to their corresponding field in `related.`. +A concrete example is IP addresses, which can be under host, observer, source, destination, client, server, and network.forwarded_ip. If you append all IPs to `related.ip`, you can then search for a given IP trivially, no matter where it appeared, by querying `related.ip:192.0.2.15`. -*`process.parent.exit_code`*:: + +*`related.hash`*:: + -- -The exit code of the process, if this is a termination event. -The field should be absent if there is no exit code for the event (e.g. process start). - -type: long +All the hashes seen on your event. Populating this field, then using it to search for hashes can help in situations where you're unsure what the hash algorithm is (and therefore which key name to search). -example: 137 +type: keyword -- -*`process.parent.hash.md5`*:: +*`related.hosts`*:: + -- -MD5 hash. +All hostnames or other host identifiers seen on your event. Example identifiers include FQDNs, domain names, workstation names, or aliases. type: keyword -- -*`process.parent.hash.sha1`*:: +*`related.ip`*:: + -- -SHA1 hash. +All of the IPs seen on your event. -type: keyword +type: ip -- -*`process.parent.hash.sha256`*:: +*`related.user`*:: + -- -SHA256 hash. +All the user names seen on your event. type: keyword -- -*`process.parent.hash.sha512`*:: +[float] +=== rule + +Rule fields are used to capture the specifics of any observer or agent rules that generate alerts or other notable events. +Examples of data sources that would populate the rule fields include: network admission control platforms, network or host IDS/IPS, network firewalls, web application firewalls, url filters, endpoint detection and response (EDR) systems, etc. + + +*`rule.author`*:: + -- -SHA512 hash. +Name, organization, or pseudonym of the author or authors who created the rule used to generate this event. type: keyword +example: ['Star-Lord'] + -- -*`process.parent.name`*:: +*`rule.category`*:: + -- -Process name. -Sometimes called program name or similar. +A categorization value keyword used by the entity using the rule for detection of this event. type: keyword -example: ssh +example: Attempted Information Leak -- -*`process.parent.name.text`*:: +*`rule.description`*:: + -- -type: text +The description of the rule generating the event. + +type: keyword + +example: Block requests to public DNS over HTTPS / TLS protocols -- -*`process.parent.pgid`*:: +*`rule.id`*:: + -- -Identifier of the group of processes the process belongs to. +A rule ID that is unique within the scope of an agent, observer, or other entity using the rule for detection of this event. -type: long +type: keyword -format: string +example: 101 -- -*`process.parent.pid`*:: +*`rule.license`*:: + -- -Process id. - -type: long +Name of the license under which the rule used to generate this event is made available. -example: 4242 +type: keyword -format: string +example: Apache 2.0 -- -*`process.parent.ppid`*:: +*`rule.name`*:: + -- -Parent process' pid. - -type: long +The name of the rule or signature generating the event. -example: 4241 +type: keyword -format: string +example: BLOCK_DNS_over_TLS -- -*`process.parent.start`*:: +*`rule.reference`*:: + -- -The time the process started. +Reference URL to additional information about the rule used to generate this event. +The URL can point to the vendor's documentation about the rule. If that's not available, it can also be a link to a more general page describing this type of alert. -type: date +type: keyword -example: 2016-05-23T08:05:34.853Z +example: https://en.wikipedia.org/wiki/DNS_over_TLS -- -*`process.parent.thread.id`*:: +*`rule.ruleset`*:: + -- -Thread ID. - -type: long +Name of the ruleset, policy, group, or parent category in which the rule used to generate this event is a member. -example: 4242 +type: keyword -format: string +example: Standard_Protocol_Filters -- -*`process.parent.thread.name`*:: +*`rule.uuid`*:: + -- -Thread name. +A rule ID that is unique within the scope of a set or group of agents, observers, or other entities using the rule for detection of this event. type: keyword -example: thread-0 +example: 1100110011 -- -*`process.parent.title`*:: +*`rule.version`*:: + -- -Process title. -The proctitle, some times the same as process name. Can also be different: for example a browser setting its title to the web page currently opened. +The version / revision of the rule being used for analysis. type: keyword +example: 1.1 + -- -*`process.parent.title.text`*:: +[float] +=== server + +A Server is defined as the responder in a network connection for events regarding sessions, connections, or bidirectional flow records. +For TCP events, the server is the receiver of the initial SYN packet(s) of the TCP connection. For other protocols, the server is generally the responder in the network transaction. Some systems actually use the term "responder" to refer the server in TCP connections. The server fields describe details about the system acting as the server in the network event. Server fields are usually populated in conjunction with client fields. Server fields are generally not populated for packet-level events. +Client / server representations can add semantic context to an exchange, which is helpful to visualize the data in certain situations. If your context falls in that category, you should still ensure that source and destination are filled appropriately. + + +*`server.address`*:: + -- -type: text +Some event server addresses are defined ambiguously. The event will sometimes list an IP, a domain or a unix socket. You should always store the raw address in the `.address` field. +Then it should be duplicated to `.ip` or `.domain`, depending on which one it is. + +type: keyword -- -*`process.parent.uptime`*:: +*`server.as.number`*:: + -- -Seconds the process has been up. +Unique number allocated to the autonomous system. The autonomous system number (ASN) uniquely identifies each network on the Internet. type: long -example: 1325 +example: 15169 -- -*`process.parent.working_directory`*:: +*`server.as.organization.name`*:: + -- -The working directory of the process. +Organization name. type: keyword -example: /home/alice +example: Google LLC -- -*`process.parent.working_directory.text`*:: +*`server.as.organization.name.text`*:: + -- type: text -- -*`process.pe.company`*:: +*`server.bytes`*:: + -- -Internal company name of the file, provided at compile-time. +Bytes sent from the server to the client. -type: keyword +type: long -example: Microsoft Corporation +example: 184 + +format: bytes -- -*`process.pe.description`*:: +*`server.domain`*:: + -- -Internal description of the file, provided at compile-time. +Server domain. type: keyword -example: Paint - -- -*`process.pe.file_version`*:: +*`server.geo.city_name`*:: + -- -Internal version of the file, provided at compile-time. +City name. type: keyword -example: 6.3.9600.17415 +example: Montreal -- -*`process.pe.original_file_name`*:: +*`server.geo.continent_name`*:: + -- -Internal name of the file, provided at compile-time. +Name of the continent. type: keyword -example: MSPAINT.EXE +example: North America -- -*`process.pe.product`*:: +*`server.geo.country_iso_code`*:: + -- -Internal product name of the file, provided at compile-time. +Country ISO code. type: keyword -example: Microsoft® Windows® Operating System +example: CA -- -*`process.pgid`*:: +*`server.geo.country_name`*:: + -- -Identifier of the group of processes the process belongs to. +Country name. -type: long +type: keyword -format: string +example: Canada -- -*`process.pid`*:: +*`server.geo.location`*:: + -- -Process id. - -type: long +Longitude and latitude. -example: 4242 +type: geo_point -format: string +example: { "lon": -73.614830, "lat": 45.505918 } -- -*`process.ppid`*:: +*`server.geo.name`*:: + -- -Parent process' pid. - -type: long +User-defined description of a location, at the level of granularity they care about. +Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. +Not typically used in automated geolocation. -example: 4241 +type: keyword -format: string +example: boston-dc -- -*`process.start`*:: +*`server.geo.region_iso_code`*:: + -- -The time the process started. +Region ISO code. -type: date +type: keyword -example: 2016-05-23T08:05:34.853Z +example: CA-QC -- -*`process.thread.id`*:: +*`server.geo.region_name`*:: + -- -Thread ID. - -type: long +Region name. -example: 4242 +type: keyword -format: string +example: Quebec -- -*`process.thread.name`*:: +*`server.ip`*:: + -- -Thread name. - -type: keyword +IP address of the server (IPv4 or IPv6). -example: thread-0 +type: ip -- -*`process.title`*:: +*`server.mac`*:: + -- -Process title. -The proctitle, some times the same as process name. Can also be different: for example a browser setting its title to the web page currently opened. +MAC address of the server. type: keyword -- -*`process.title.text`*:: +*`server.nat.ip`*:: + -- -type: text +Translated ip of destination based NAT sessions (e.g. internet to private DMZ) +Typically used with load balancers, firewalls, or routers. + +type: ip -- -*`process.uptime`*:: +*`server.nat.port`*:: + -- -Seconds the process has been up. +Translated port of destination based NAT sessions (e.g. internet to private DMZ) +Typically used with load balancers, firewalls, or routers. type: long -example: 1325 +format: string -- -*`process.working_directory`*:: +*`server.packets`*:: + -- -The working directory of the process. +Packets sent from the server to the client. -type: keyword +type: long -example: /home/alice +example: 12 -- -*`process.working_directory.text`*:: +*`server.port`*:: + -- -type: text - --- +Port of the server. -[float] -=== registry +type: long -Fields related to Windows Registry operations. +format: string +-- -*`registry.data.bytes`*:: +*`server.registered_domain`*:: + -- -Original bytes written with base64 encoding. -For Windows registry operations, such as SetValueEx and RegQueryValueEx, this corresponds to the data pointed by `lp_data`. This is optional but provides better recoverability and should be populated for REG_BINARY encoded values. +The highest registered server domain, stripped of the subdomain. +For example, the registered domain for "foo.example.com" is "example.com". +This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last two labels will not work well for TLDs such as "co.uk". type: keyword -example: ZQBuAC0AVQBTAAAAZQBuAAAAAAA= +example: example.com -- -*`registry.data.strings`*:: +*`server.top_level_domain`*:: + -- -Content when writing string types. -Populated as an array when writing string data to the registry. For single string registry types (REG_SZ, REG_EXPAND_SZ), this should be an array with one string. For sequences of string with REG_MULTI_SZ, this array will be variable length. For numeric data, such as REG_DWORD and REG_QWORD, this should be populated with the decimal representation (e.g `"1"`). +The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for example.com is "com". +This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last label will not work well for effective TLDs such as "co.uk". type: keyword -example: ["C:\rta\red_ttp\bin\myapp.exe"] +example: co.uk -- -*`registry.data.type`*:: +*`server.user.domain`*:: + -- -Standard registry type for encoding contents +Name of the directory the user is a member of. +For example, an LDAP or Active Directory domain name. type: keyword -example: REG_SZ - -- -*`registry.hive`*:: +*`server.user.email`*:: + -- -Abbreviated name for the hive. +User email address. type: keyword -example: HKLM - -- -*`registry.key`*:: +*`server.user.full_name`*:: + -- -Hive-relative path of keys. +User's full name, if available. type: keyword -example: SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\winword.exe +example: Albert Einstein -- -*`registry.path`*:: +*`server.user.full_name.text`*:: + -- -Full path, including hive, key and value - -type: keyword - -example: HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\winword.exe\Debugger +type: text -- -*`registry.value`*:: +*`server.user.group.domain`*:: + -- -Name of the value written. +Name of the directory the group is a member of. +For example, an LDAP or Active Directory domain name. type: keyword -example: Debugger - -- -[float] -=== related - -This field set is meant to facilitate pivoting around a piece of data. -Some pieces of information can be seen in many places in an ECS event. To facilitate searching for them, store an array of all seen values to their corresponding field in `related.`. -A concrete example is IP addresses, which can be under host, observer, source, destination, client, server, and network.forwarded_ip. If you append all IPs to `related.ip`, you can then search for a given IP trivially, no matter where it appeared, by querying `related.ip:192.0.2.15`. - - -*`related.hash`*:: +*`server.user.group.id`*:: + -- -All the hashes seen on your event. Populating this field, then using it to search for hashes can help in situations where you're unsure what the hash algorithm is (and therefore which key name to search). +Unique identifier for the group on the system/platform. type: keyword -- -*`related.ip`*:: +*`server.user.group.name`*:: + -- -All of the IPs seen on your event. +Name of the group. -type: ip +type: keyword -- -*`related.user`*:: +*`server.user.hash`*:: + -- -All the user names seen on your event. +Unique user hash to correlate information for a user in anonymized form. +Useful if `user.id` or `user.name` contain confidential information and cannot be used. type: keyword -- -[float] -=== rule +*`server.user.id`*:: ++ +-- +Unique identifier of the user. -Rule fields are used to capture the specifics of any observer or agent rules that generate alerts or other notable events. -Examples of data sources that would populate the rule fields include: network admission control platforms, network or host IDS/IPS, network firewalls, web application firewalls, url filters, endpoint detection and response (EDR) systems, etc. +type: keyword +-- -*`rule.author`*:: +*`server.user.name`*:: + -- -Name, organization, or pseudonym of the author or authors who created the rule used to generate this event. +Short name or login of the user. type: keyword -example: ['Star-Lord'] +example: albert -- -*`rule.category`*:: +*`server.user.name.text`*:: + -- -A categorization value keyword used by the entity using the rule for detection of this event. - -type: keyword - -example: Attempted Information Leak +type: text -- -*`rule.description`*:: +*`server.user.roles`*:: + -- -The description of the rule generating the event. +Array of user roles at the time of the event. type: keyword -example: Block requests to public DNS over HTTPS / TLS protocols +example: ["kibana_admin", "reporting_user"] -- -*`rule.id`*:: +[float] +=== service + +The service fields describe the service for or from which the data was collected. +These fields help you find and correlate logs for a specific service and version. + + +*`service.ephemeral_id`*:: + -- -A rule ID that is unique within the scope of an agent, observer, or other entity using the rule for detection of this event. +Ephemeral identifier of this service (if one exists). +This id normally changes across restarts, but `service.id` does not. type: keyword -example: 101 +example: 8a4f500f -- -*`rule.license`*:: +*`service.id`*:: + -- -Name of the license under which the rule used to generate this event is made available. +Unique identifier of the running service. If the service is comprised of many nodes, the `service.id` should be the same for all nodes. +This id should uniquely identify the service. This makes it possible to correlate logs and metrics for one specific service, no matter which particular node emitted the event. +Note that if you need to see the events from one specific host of the service, you should filter on that `host.name` or `host.id` instead. type: keyword -example: Apache 2.0 +example: d37e5ebfe0ae6c4972dbe9f0174a1637bb8247f6 -- -*`rule.name`*:: +*`service.name`*:: + -- -The name of the rule or signature generating the event. +Name of the service data is collected from. +The name of the service is normally user given. This allows for distributed services that run on multiple hosts to correlate the related instances based on the name. +In the case of Elasticsearch the `service.name` could contain the cluster name. For Beats the `service.name` is by default a copy of the `service.type` field if no name is specified. type: keyword -example: BLOCK_DNS_over_TLS +example: elasticsearch-metrics -- -*`rule.reference`*:: +*`service.node.name`*:: + -- -Reference URL to additional information about the rule used to generate this event. -The URL can point to the vendor's documentation about the rule. If that's not available, it can also be a link to a more general page describing this type of alert. +Name of a service node. +This allows for two nodes of the same service running on the same host to be differentiated. Therefore, `service.node.name` should typically be unique across nodes of a given service. +In the case of Elasticsearch, the `service.node.name` could contain the unique node name within the Elasticsearch cluster. In cases where the service doesn't have the concept of a node name, the host name or container name can be used to distinguish running instances that make up this service. If those do not provide uniqueness (e.g. multiple instances of the service running on the same host) - the node name can be manually set. type: keyword -example: https://en.wikipedia.org/wiki/DNS_over_TLS +example: instance-0000000016 -- -*`rule.ruleset`*:: +*`service.state`*:: + -- -Name of the ruleset, policy, group, or parent category in which the rule used to generate this event is a member. +Current state of the service. type: keyword -example: Standard_Protocol_Filters - -- -*`rule.uuid`*:: +*`service.type`*:: + -- -A rule ID that is unique within the scope of a set or group of agents, observers, or other entities using the rule for detection of this event. +The type of the service data is collected from. +The type can be used to group and correlate logs and metrics from one service type. +Example: If logs or metrics are collected from Elasticsearch, `service.type` would be `elasticsearch`. type: keyword -example: 1100110011 +example: elasticsearch -- -*`rule.version`*:: +*`service.version`*:: + -- -The version / revision of the rule being used for analysis. +Version of the service the data was collected from. +This allows to look at a data set only for a specific version of a service. type: keyword -example: 1.1 +example: 3.2.4 -- [float] -=== server +=== source -A Server is defined as the responder in a network connection for events regarding sessions, connections, or bidirectional flow records. -For TCP events, the server is the receiver of the initial SYN packet(s) of the TCP connection. For other protocols, the server is generally the responder in the network transaction. Some systems actually use the term "responder" to refer the server in TCP connections. The server fields describe details about the system acting as the server in the network event. Server fields are usually populated in conjunction with client fields. Server fields are generally not populated for packet-level events. -Client / server representations can add semantic context to an exchange, which is helpful to visualize the data in certain situations. If your context falls in that category, you should still ensure that source and destination are filled appropriately. +Source fields describe details about the source of a packet/event. +Source fields are usually populated in conjunction with destination fields. -*`server.address`*:: +*`source.address`*:: + -- -Some event server addresses are defined ambiguously. The event will sometimes list an IP, a domain or a unix socket. You should always store the raw address in the `.address` field. +Some event source addresses are defined ambiguously. The event will sometimes list an IP, a domain or a unix socket. You should always store the raw address in the `.address` field. Then it should be duplicated to `.ip` or `.domain`, depending on which one it is. type: keyword -- -*`server.as.number`*:: +*`source.as.number`*:: + -- Unique number allocated to the autonomous system. The autonomous system number (ASN) uniquely identifies each network on the Internet. @@ -7153,7 +8148,7 @@ example: 15169 -- -*`server.as.organization.name`*:: +*`source.as.organization.name`*:: + -- Organization name. @@ -7164,17 +8159,17 @@ example: Google LLC -- -*`server.as.organization.name.text`*:: +*`source.as.organization.name.text`*:: + -- type: text -- -*`server.bytes`*:: +*`source.bytes`*:: + -- -Bytes sent from the server to the client. +Bytes sent from the source to the destination. type: long @@ -7184,16 +8179,16 @@ format: bytes -- -*`server.domain`*:: +*`source.domain`*:: + -- -Server domain. +Source domain. type: keyword -- -*`server.geo.city_name`*:: +*`source.geo.city_name`*:: + -- City name. @@ -7204,7 +8199,7 @@ example: Montreal -- -*`server.geo.continent_name`*:: +*`source.geo.continent_name`*:: + -- Name of the continent. @@ -7215,7 +8210,7 @@ example: North America -- -*`server.geo.country_iso_code`*:: +*`source.geo.country_iso_code`*:: + -- Country ISO code. @@ -7226,7 +8221,7 @@ example: CA -- -*`server.geo.country_name`*:: +*`source.geo.country_name`*:: + -- Country name. @@ -7237,7 +8232,7 @@ example: Canada -- -*`server.geo.location`*:: +*`source.geo.location`*:: + -- Longitude and latitude. @@ -7248,7 +8243,7 @@ example: { "lon": -73.614830, "lat": 45.505918 } -- -*`server.geo.name`*:: +*`source.geo.name`*:: + -- User-defined description of a location, at the level of granularity they care about. @@ -7261,7 +8256,7 @@ example: boston-dc -- -*`server.geo.region_iso_code`*:: +*`source.geo.region_iso_code`*:: + -- Region ISO code. @@ -7272,7 +8267,7 @@ example: CA-QC -- -*`server.geo.region_name`*:: +*`source.geo.region_name`*:: + -- Region name. @@ -7283,1023 +8278,1121 @@ example: Quebec -- -*`server.ip`*:: +*`source.ip`*:: + -- -IP address of the server. -Can be one or multiple IPv4 or IPv6 addresses. +IP address of the source (IPv4 or IPv6). type: ip -- -*`server.mac`*:: +*`source.mac`*:: + -- -MAC address of the server. +MAC address of the source. type: keyword -- -*`server.nat.ip`*:: +*`source.nat.ip`*:: + -- -Translated ip of destination based NAT sessions (e.g. internet to private DMZ) -Typically used with load balancers, firewalls, or routers. +Translated ip of source based NAT sessions (e.g. internal client to internet) +Typically connections traversing load balancers, firewalls, or routers. type: ip -- -*`server.nat.port`*:: +*`source.nat.port`*:: + -- -Translated port of destination based NAT sessions (e.g. internet to private DMZ) +Translated port of source based NAT sessions. (e.g. internal client to internet) Typically used with load balancers, firewalls, or routers. type: long -format: string +format: string + +-- + +*`source.packets`*:: ++ +-- +Packets sent from the source to the destination. + +type: long + +example: 12 + +-- + +*`source.port`*:: ++ +-- +Port of the source. + +type: long + +format: string + +-- + +*`source.registered_domain`*:: ++ +-- +The highest registered source domain, stripped of the subdomain. +For example, the registered domain for "foo.example.com" is "example.com". +This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last two labels will not work well for TLDs such as "co.uk". + +type: keyword + +example: example.com + +-- + +*`source.top_level_domain`*:: ++ +-- +The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for example.com is "com". +This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last label will not work well for effective TLDs such as "co.uk". + +type: keyword + +example: co.uk + +-- + +*`source.user.domain`*:: ++ +-- +Name of the directory the user is a member of. +For example, an LDAP or Active Directory domain name. + +type: keyword + +-- + +*`source.user.email`*:: ++ +-- +User email address. + +type: keyword + +-- + +*`source.user.full_name`*:: ++ +-- +User's full name, if available. + +type: keyword + +example: Albert Einstein -- -*`server.packets`*:: +*`source.user.full_name.text`*:: + -- -Packets sent from the server to the client. - -type: long - -example: 12 +type: text -- -*`server.port`*:: +*`source.user.group.domain`*:: + -- -Port of the server. - -type: long +Name of the directory the group is a member of. +For example, an LDAP or Active Directory domain name. -format: string +type: keyword -- -*`server.registered_domain`*:: +*`source.user.group.id`*:: + -- -The highest registered server domain, stripped of the subdomain. -For example, the registered domain for "foo.google.com" is "google.com". -This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last two labels will not work well for TLDs such as "co.uk". +Unique identifier for the group on the system/platform. type: keyword -example: google.com - -- -*`server.top_level_domain`*:: +*`source.user.group.name`*:: + -- -The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for google.com is "com". -This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last label will not work well for effective TLDs such as "co.uk". +Name of the group. type: keyword -example: co.uk - -- -*`server.user.domain`*:: +*`source.user.hash`*:: + -- -Name of the directory the user is a member of. -For example, an LDAP or Active Directory domain name. +Unique user hash to correlate information for a user in anonymized form. +Useful if `user.id` or `user.name` contain confidential information and cannot be used. type: keyword -- -*`server.user.email`*:: +*`source.user.id`*:: + -- -User email address. +Unique identifier of the user. type: keyword -- -*`server.user.full_name`*:: +*`source.user.name`*:: + -- -User's full name, if available. +Short name or login of the user. type: keyword -example: Albert Einstein +example: albert -- -*`server.user.full_name.text`*:: +*`source.user.name.text`*:: + -- type: text -- -*`server.user.group.domain`*:: +*`source.user.roles`*:: + -- -Name of the directory the group is a member of. -For example, an LDAP or Active Directory domain name. +Array of user roles at the time of the event. type: keyword +example: ["kibana_admin", "reporting_user"] + -- -*`server.user.group.id`*:: +[float] +=== threat + +Fields to classify events and alerts according to a threat taxonomy such as the MITRE ATT&CK® framework. +These fields are for users to classify alerts from all of their sources (e.g. IDS, NGFW, etc.) within a common taxonomy. The threat.tactic.* are meant to capture the high level category of the threat (e.g. "impact"). The threat.technique.* fields are meant to capture which kind of approach is used by this detected threat, to accomplish the goal (e.g. "endpoint denial of service"). + + +*`threat.framework`*:: + -- -Unique identifier for the group on the system/platform. +Name of the threat framework used to further categorize and classify the tactic and technique of the reported threat. Framework classification can be provided by detecting systems, evaluated at ingest time, or retrospectively tagged to events. + +type: keyword + +example: MITRE ATT&CK + +-- + +*`threat.tactic.id`*:: ++ +-- +The id of tactic used by this threat. You can use a MITRE ATT&CK® tactic, for example. (ex. https://attack.mitre.org/tactics/TA0040/ ) type: keyword +example: TA0040 + -- -*`server.user.group.name`*:: +*`threat.tactic.name`*:: + -- -Name of the group. +Name of the type of tactic used by this threat. You can use a MITRE ATT&CK® tactic, for example. (ex. https://attack.mitre.org/tactics/TA0040/) type: keyword +example: impact + -- -*`server.user.hash`*:: +*`threat.tactic.reference`*:: + -- -Unique user hash to correlate information for a user in anonymized form. -Useful if `user.id` or `user.name` contain confidential information and cannot be used. +The reference url of tactic used by this threat. You can use a MITRE ATT&CK® tactic, for example. (ex. https://attack.mitre.org/tactics/TA0040/ ) type: keyword +example: https://attack.mitre.org/tactics/TA0040/ + -- -*`server.user.id`*:: +*`threat.technique.id`*:: + -- -Unique identifiers of the user. +The id of technique used by this threat. You can use a MITRE ATT&CK® technique, for example. (ex. https://attack.mitre.org/techniques/T1499/) type: keyword +example: T1499 + -- -*`server.user.name`*:: +*`threat.technique.name`*:: + -- -Short name or login of the user. +The name of technique used by this threat. You can use a MITRE ATT&CK® technique, for example. (ex. https://attack.mitre.org/techniques/T1499/) type: keyword -example: albert +example: Endpoint Denial of Service -- -*`server.user.name.text`*:: +*`threat.technique.name.text`*:: + -- type: text -- +*`threat.technique.reference`*:: ++ +-- +The reference url of technique used by this threat. You can use a MITRE ATT&CK® technique, for example. (ex. https://attack.mitre.org/techniques/T1499/ ) + +type: keyword + +example: https://attack.mitre.org/techniques/T1499/ + +-- + [float] -=== service +=== tls -The service fields describe the service for or from which the data was collected. -These fields help you find and correlate logs for a specific service and version. +Fields related to a TLS connection. These fields focus on the TLS protocol itself and intentionally avoids in-depth analysis of the related x.509 certificate files. -*`service.ephemeral_id`*:: +*`tls.cipher`*:: + -- -Ephemeral identifier of this service (if one exists). -This id normally changes across restarts, but `service.id` does not. +String indicating the cipher used during the current connection. type: keyword -example: 8a4f500f +example: TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 -- -*`service.id`*:: +*`tls.client.certificate`*:: + -- -Unique identifier of the running service. If the service is comprised of many nodes, the `service.id` should be the same for all nodes. -This id should uniquely identify the service. This makes it possible to correlate logs and metrics for one specific service, no matter which particular node emitted the event. -Note that if you need to see the events from one specific host of the service, you should filter on that `host.name` or `host.id` instead. +PEM-encoded stand-alone certificate offered by the client. This is usually mutually-exclusive of `client.certificate_chain` since this value also exists in that list. type: keyword -example: d37e5ebfe0ae6c4972dbe9f0174a1637bb8247f6 +example: MII... -- -*`service.name`*:: +*`tls.client.certificate_chain`*:: + -- -Name of the service data is collected from. -The name of the service is normally user given. This allows for distributed services that run on multiple hosts to correlate the related instances based on the name. -In the case of Elasticsearch the `service.name` could contain the cluster name. For Beats the `service.name` is by default a copy of the `service.type` field if no name is specified. +Array of PEM-encoded certificates that make up the certificate chain offered by the client. This is usually mutually-exclusive of `client.certificate` since that value should be the first certificate in the chain. type: keyword -example: elasticsearch-metrics +example: ['MII...', 'MII...'] -- -*`service.node.name`*:: +*`tls.client.hash.md5`*:: + -- -Name of a service node. -This allows for two nodes of the same service running on the same host to be differentiated. Therefore, `service.node.name` should typically be unique across nodes of a given service. -In the case of Elasticsearch, the `service.node.name` could contain the unique node name within the Elasticsearch cluster. In cases where the service doesn't have the concept of a node name, the host name or container name can be used to distinguish running instances that make up this service. If those do not provide uniqueness (e.g. multiple instances of the service running on the same host) - the node name can be manually set. +Certificate fingerprint using the MD5 digest of DER-encoded version of certificate offered by the client. For consistency with other hash values, this value should be formatted as an uppercase hash. type: keyword -example: instance-0000000016 +example: 0F76C7F2C55BFD7D8E8B8F4BFBF0C9EC -- -*`service.state`*:: +*`tls.client.hash.sha1`*:: + -- -Current state of the service. +Certificate fingerprint using the SHA1 digest of DER-encoded version of certificate offered by the client. For consistency with other hash values, this value should be formatted as an uppercase hash. type: keyword +example: 9E393D93138888D288266C2D915214D1D1CCEB2A + -- -*`service.type`*:: +*`tls.client.hash.sha256`*:: + -- -The type of the service data is collected from. -The type can be used to group and correlate logs and metrics from one service type. -Example: If logs or metrics are collected from Elasticsearch, `service.type` would be `elasticsearch`. +Certificate fingerprint using the SHA256 digest of DER-encoded version of certificate offered by the client. For consistency with other hash values, this value should be formatted as an uppercase hash. type: keyword -example: elasticsearch +example: 0687F666A054EF17A08E2F2162EAB4CBC0D265E1D7875BE74BF3C712CA92DAF0 -- -*`service.version`*:: +*`tls.client.issuer`*:: + -- -Version of the service the data was collected from. -This allows to look at a data set only for a specific version of a service. +Distinguished name of subject of the issuer of the x.509 certificate presented by the client. type: keyword -example: 3.2.4 +example: CN=Example Root CA, OU=Infrastructure Team, DC=example, DC=com -- -[float] -=== source +*`tls.client.ja3`*:: ++ +-- +A hash that identifies clients based on how they perform an SSL/TLS handshake. -Source fields describe details about the source of a packet/event. -Source fields are usually populated in conjunction with destination fields. +type: keyword + +example: d4e5b18d6b55c71272893221c96ba240 +-- -*`source.address`*:: +*`tls.client.not_after`*:: + -- -Some event source addresses are defined ambiguously. The event will sometimes list an IP, a domain or a unix socket. You should always store the raw address in the `.address` field. -Then it should be duplicated to `.ip` or `.domain`, depending on which one it is. +Date/Time indicating when client certificate is no longer considered valid. -type: keyword +type: date + +example: 2021-01-01T00:00:00.000Z -- -*`source.as.number`*:: +*`tls.client.not_before`*:: + -- -Unique number allocated to the autonomous system. The autonomous system number (ASN) uniquely identifies each network on the Internet. +Date/Time indicating when client certificate is first considered valid. -type: long +type: date -example: 15169 +example: 1970-01-01T00:00:00.000Z -- -*`source.as.organization.name`*:: +*`tls.client.server_name`*:: + -- -Organization name. +Also called an SNI, this tells the server which hostname to which the client is attempting to connect to. When this value is available, it should get copied to `destination.domain`. type: keyword -example: Google LLC +example: www.elastic.co -- -*`source.as.organization.name.text`*:: +*`tls.client.subject`*:: + -- -type: text +Distinguished name of subject of the x.509 certificate presented by the client. + +type: keyword + +example: CN=myclient, OU=Documentation Team, DC=example, DC=com -- -*`source.bytes`*:: +*`tls.client.supported_ciphers`*:: + -- -Bytes sent from the source to the destination. - -type: long +Array of ciphers offered by the client during the client hello. -example: 184 +type: keyword -format: bytes +example: ['TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384', 'TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384', '...'] -- -*`source.domain`*:: +*`tls.client.x509.alternative_names`*:: + -- -Source domain. +List of subject alternative names (SAN). Name types vary by certificate authority and certificate type but commonly contain IP addresses, DNS names (and wildcards), and email addresses. type: keyword +example: *.elastic.co + -- -*`source.geo.city_name`*:: +*`tls.client.x509.issuer.common_name`*:: + -- -City name. +List of common name (CN) of issuing certificate authority. type: keyword -example: Montreal +example: Example SHA2 High Assurance Server CA -- -*`source.geo.continent_name`*:: +*`tls.client.x509.issuer.country`*:: + -- -Name of the continent. +List of country (C) codes type: keyword -example: North America +example: US -- -*`source.geo.country_iso_code`*:: +*`tls.client.x509.issuer.distinguished_name`*:: + -- -Country ISO code. +Distinguished name (DN) of issuing certificate authority. type: keyword -example: CA +example: C=US, O=Example Inc, OU=www.example.com, CN=Example SHA2 High Assurance Server CA -- -*`source.geo.country_name`*:: +*`tls.client.x509.issuer.locality`*:: + -- -Country name. +List of locality names (L) type: keyword -example: Canada +example: Mountain View -- -*`source.geo.location`*:: +*`tls.client.x509.issuer.organization`*:: + -- -Longitude and latitude. +List of organizations (O) of issuing certificate authority. -type: geo_point +type: keyword -example: { "lon": -73.614830, "lat": 45.505918 } +example: Example Inc -- -*`source.geo.name`*:: +*`tls.client.x509.issuer.organizational_unit`*:: + -- -User-defined description of a location, at the level of granularity they care about. -Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. -Not typically used in automated geolocation. +List of organizational units (OU) of issuing certificate authority. type: keyword -example: boston-dc +example: www.example.com -- -*`source.geo.region_iso_code`*:: +*`tls.client.x509.issuer.state_or_province`*:: + -- -Region ISO code. +List of state or province names (ST, S, or P) type: keyword -example: CA-QC +example: California -- -*`source.geo.region_name`*:: +*`tls.client.x509.not_after`*:: + -- -Region name. +Time at which the certificate is no longer considered valid. -type: keyword +type: date -example: Quebec +example: 2020-07-16 03:15:39+00:00 -- -*`source.ip`*:: +*`tls.client.x509.not_before`*:: + -- -IP address of the source. -Can be one or multiple IPv4 or IPv6 addresses. +Time at which the certificate is first considered valid. -type: ip +type: date + +example: 2019-08-16 01:40:25+00:00 -- -*`source.mac`*:: +*`tls.client.x509.public_key_algorithm`*:: + -- -MAC address of the source. +Algorithm used to generate the public key. type: keyword +example: RSA + -- -*`source.nat.ip`*:: +*`tls.client.x509.public_key_curve`*:: + -- -Translated ip of source based NAT sessions (e.g. internal client to internet) -Typically connections traversing load balancers, firewalls, or routers. +The curve used by the elliptic curve public key algorithm. This is algorithm specific. -type: ip +type: keyword + +example: nistp521 -- -*`source.nat.port`*:: +*`tls.client.x509.public_key_exponent`*:: + -- -Translated port of source based NAT sessions. (e.g. internal client to internet) -Typically used with load balancers, firewalls, or routers. +Exponent used to derive the public key. This is algorithm specific. type: long -format: string +example: 65537 + +Field is not indexed. -- -*`source.packets`*:: +*`tls.client.x509.public_key_size`*:: + -- -Packets sent from the source to the destination. +The size of the public key space in bits. type: long -example: 12 +example: 2048 -- -*`source.port`*:: +*`tls.client.x509.serial_number`*:: + -- -Port of the source. +Unique serial number issued by the certificate authority. For consistency, if this value is alphanumeric, it should be formatted without colons and uppercase characters. -type: long +type: keyword -format: string +example: 55FBB9C7DEBF09809D12CCAA -- -*`source.registered_domain`*:: +*`tls.client.x509.signature_algorithm`*:: + -- -The highest registered source domain, stripped of the subdomain. -For example, the registered domain for "foo.google.com" is "google.com". -This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last two labels will not work well for TLDs such as "co.uk". +Identifier for certificate signature algorithm. We recommend using names found in Go Lang Crypto library. See https://github.com/golang/go/blob/go1.14/src/crypto/x509/x509.go#L337-L353. type: keyword -example: google.com +example: SHA256-RSA -- -*`source.top_level_domain`*:: +*`tls.client.x509.subject.common_name`*:: + -- -The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for google.com is "com". -This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last label will not work well for effective TLDs such as "co.uk". +List of common names (CN) of subject. type: keyword -example: co.uk +example: shared.global.example.net -- -*`source.user.domain`*:: +*`tls.client.x509.subject.country`*:: + -- -Name of the directory the user is a member of. -For example, an LDAP or Active Directory domain name. +List of country (C) code type: keyword +example: US + -- -*`source.user.email`*:: +*`tls.client.x509.subject.distinguished_name`*:: + -- -User email address. +Distinguished name (DN) of the certificate subject entity. type: keyword +example: C=US, ST=California, L=San Francisco, O=Example, Inc., CN=shared.global.example.net + -- -*`source.user.full_name`*:: +*`tls.client.x509.subject.locality`*:: + -- -User's full name, if available. +List of locality names (L) type: keyword -example: Albert Einstein +example: San Francisco -- -*`source.user.full_name.text`*:: +*`tls.client.x509.subject.organization`*:: + -- -type: text +List of organizations (O) of subject. + +type: keyword + +example: Example, Inc. -- -*`source.user.group.domain`*:: +*`tls.client.x509.subject.organizational_unit`*:: + -- -Name of the directory the group is a member of. -For example, an LDAP or Active Directory domain name. +List of organizational units (OU) of subject. type: keyword -- -*`source.user.group.id`*:: +*`tls.client.x509.subject.state_or_province`*:: + -- -Unique identifier for the group on the system/platform. +List of state or province names (ST, S, or P) type: keyword +example: California + -- -*`source.user.group.name`*:: +*`tls.client.x509.version_number`*:: + -- -Name of the group. +Version of x509 format. type: keyword +example: 3 + -- -*`source.user.hash`*:: +*`tls.curve`*:: + -- -Unique user hash to correlate information for a user in anonymized form. -Useful if `user.id` or `user.name` contain confidential information and cannot be used. +String indicating the curve used for the given cipher, when applicable. type: keyword +example: secp256r1 + -- -*`source.user.id`*:: +*`tls.established`*:: + -- -Unique identifiers of the user. +Boolean flag indicating if the TLS negotiation was successful and transitioned to an encrypted tunnel. -type: keyword +type: boolean -- -*`source.user.name`*:: +*`tls.next_protocol`*:: + -- -Short name or login of the user. +String indicating the protocol being tunneled. Per the values in the IANA registry (https://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml#alpn-protocol-ids), this string should be lower case. type: keyword -example: albert +example: http/1.1 -- -*`source.user.name.text`*:: +*`tls.resumed`*:: + -- -type: text - --- - -[float] -=== threat +Boolean flag indicating if this TLS connection was resumed from an existing TLS negotiation. -Fields to classify events and alerts according to a threat taxonomy such as the Mitre ATT&CK framework. -These fields are for users to classify alerts from all of their sources (e.g. IDS, NGFW, etc.) within a common taxonomy. The threat.tactic.* are meant to capture the high level category of the threat (e.g. "impact"). The threat.technique.* fields are meant to capture which kind of approach is used by this detected threat, to accomplish the goal (e.g. "endpoint denial of service"). +type: boolean +-- -*`threat.framework`*:: +*`tls.server.certificate`*:: + -- -Name of the threat framework used to further categorize and classify the tactic and technique of the reported threat. Framework classification can be provided by detecting systems, evaluated at ingest time, or retrospectively tagged to events. +PEM-encoded stand-alone certificate offered by the server. This is usually mutually-exclusive of `server.certificate_chain` since this value also exists in that list. type: keyword -example: MITRE ATT&CK +example: MII... -- -*`threat.tactic.id`*:: +*`tls.server.certificate_chain`*:: + -- -The id of tactic used by this threat. You can use the Mitre ATT&CK Matrix Tactic categorization, for example. (ex. https://attack.mitre.org/tactics/TA0040/ ) +Array of PEM-encoded certificates that make up the certificate chain offered by the server. This is usually mutually-exclusive of `server.certificate` since that value should be the first certificate in the chain. type: keyword -example: TA0040 +example: ['MII...', 'MII...'] -- -*`threat.tactic.name`*:: +*`tls.server.hash.md5`*:: + -- -Name of the type of tactic used by this threat. You can use the Mitre ATT&CK Matrix Tactic categorization, for example. (ex. https://attack.mitre.org/tactics/TA0040/ ) +Certificate fingerprint using the MD5 digest of DER-encoded version of certificate offered by the server. For consistency with other hash values, this value should be formatted as an uppercase hash. type: keyword -example: impact +example: 0F76C7F2C55BFD7D8E8B8F4BFBF0C9EC -- -*`threat.tactic.reference`*:: +*`tls.server.hash.sha1`*:: + -- -The reference url of tactic used by this threat. You can use the Mitre ATT&CK Matrix Tactic categorization, for example. (ex. https://attack.mitre.org/tactics/TA0040/ ) +Certificate fingerprint using the SHA1 digest of DER-encoded version of certificate offered by the server. For consistency with other hash values, this value should be formatted as an uppercase hash. type: keyword -example: https://attack.mitre.org/tactics/TA0040/ +example: 9E393D93138888D288266C2D915214D1D1CCEB2A -- -*`threat.technique.id`*:: +*`tls.server.hash.sha256`*:: + -- -The id of technique used by this tactic. You can use the Mitre ATT&CK Matrix Tactic categorization, for example. (ex. https://attack.mitre.org/techniques/T1499/ ) +Certificate fingerprint using the SHA256 digest of DER-encoded version of certificate offered by the server. For consistency with other hash values, this value should be formatted as an uppercase hash. type: keyword -example: T1499 +example: 0687F666A054EF17A08E2F2162EAB4CBC0D265E1D7875BE74BF3C712CA92DAF0 -- -*`threat.technique.name`*:: +*`tls.server.issuer`*:: + -- -The name of technique used by this tactic. You can use the Mitre ATT&CK Matrix Tactic categorization, for example. (ex. https://attack.mitre.org/techniques/T1499/ ) +Subject of the issuer of the x.509 certificate presented by the server. type: keyword -example: endpoint denial of service - --- - -*`threat.technique.name.text`*:: -+ --- -type: text +example: CN=Example Root CA, OU=Infrastructure Team, DC=example, DC=com -- -*`threat.technique.reference`*:: +*`tls.server.ja3s`*:: + -- -The reference url of technique used by this tactic. You can use the Mitre ATT&CK Matrix Tactic categorization, for example. (ex. https://attack.mitre.org/techniques/T1499/ ) +A hash that identifies servers based on how they perform an SSL/TLS handshake. type: keyword -example: https://attack.mitre.org/techniques/T1499/ +example: 394441ab65754e2207b1e1b457b3641d -- -[float] -=== tls - -Fields related to a TLS connection. These fields focus on the TLS protocol itself and intentionally avoids in-depth analysis of the related x.509 certificate files. - - -*`tls.cipher`*:: +*`tls.server.not_after`*:: + -- -String indicating the cipher used during the current connection. +Timestamp indicating when server certificate is no longer considered valid. -type: keyword +type: date -example: TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 +example: 2021-01-01T00:00:00.000Z -- -*`tls.client.certificate`*:: +*`tls.server.not_before`*:: + -- -PEM-encoded stand-alone certificate offered by the client. This is usually mutually-exclusive of `client.certificate_chain` since this value also exists in that list. +Timestamp indicating when server certificate is first considered valid. -type: keyword +type: date -example: MII... +example: 1970-01-01T00:00:00.000Z -- -*`tls.client.certificate_chain`*:: +*`tls.server.subject`*:: + -- -Array of PEM-encoded certificates that make up the certificate chain offered by the client. This is usually mutually-exclusive of `client.certificate` since that value should be the first certificate in the chain. +Subject of the x.509 certificate presented by the server. type: keyword -example: ['MII...', 'MII...'] +example: CN=www.example.com, OU=Infrastructure Team, DC=example, DC=com -- -*`tls.client.hash.md5`*:: +*`tls.server.x509.alternative_names`*:: + -- -Certificate fingerprint using the MD5 digest of DER-encoded version of certificate offered by the client. For consistency with other hash values, this value should be formatted as an uppercase hash. +List of subject alternative names (SAN). Name types vary by certificate authority and certificate type but commonly contain IP addresses, DNS names (and wildcards), and email addresses. type: keyword -example: 0F76C7F2C55BFD7D8E8B8F4BFBF0C9EC +example: *.elastic.co -- -*`tls.client.hash.sha1`*:: +*`tls.server.x509.issuer.common_name`*:: + -- -Certificate fingerprint using the SHA1 digest of DER-encoded version of certificate offered by the client. For consistency with other hash values, this value should be formatted as an uppercase hash. +List of common name (CN) of issuing certificate authority. type: keyword -example: 9E393D93138888D288266C2D915214D1D1CCEB2A +example: Example SHA2 High Assurance Server CA -- -*`tls.client.hash.sha256`*:: +*`tls.server.x509.issuer.country`*:: + -- -Certificate fingerprint using the SHA256 digest of DER-encoded version of certificate offered by the client. For consistency with other hash values, this value should be formatted as an uppercase hash. +List of country (C) codes type: keyword -example: 0687F666A054EF17A08E2F2162EAB4CBC0D265E1D7875BE74BF3C712CA92DAF0 +example: US -- -*`tls.client.issuer`*:: +*`tls.server.x509.issuer.distinguished_name`*:: + -- -Distinguished name of subject of the issuer of the x.509 certificate presented by the client. +Distinguished name (DN) of issuing certificate authority. type: keyword -example: CN=MyDomain Root CA, OU=Infrastructure Team, DC=mydomain, DC=com +example: C=US, O=Example Inc, OU=www.example.com, CN=Example SHA2 High Assurance Server CA -- -*`tls.client.ja3`*:: +*`tls.server.x509.issuer.locality`*:: + -- -A hash that identifies clients based on how they perform an SSL/TLS handshake. +List of locality names (L) type: keyword -example: d4e5b18d6b55c71272893221c96ba240 +example: Mountain View -- -*`tls.client.not_after`*:: +*`tls.server.x509.issuer.organization`*:: + -- -Date/Time indicating when client certificate is no longer considered valid. +List of organizations (O) of issuing certificate authority. -type: date +type: keyword -example: 2021-01-01T00:00:00.000Z +example: Example Inc -- -*`tls.client.not_before`*:: +*`tls.server.x509.issuer.organizational_unit`*:: + -- -Date/Time indicating when client certificate is first considered valid. +List of organizational units (OU) of issuing certificate authority. -type: date +type: keyword -example: 1970-01-01T00:00:00.000Z +example: www.example.com -- -*`tls.client.server_name`*:: +*`tls.server.x509.issuer.state_or_province`*:: + -- -Also called an SNI, this tells the server which hostname to which the client is attempting to connect. When this value is available, it should get copied to `destination.domain`. +List of state or province names (ST, S, or P) type: keyword -example: www.elastic.co +example: California -- -*`tls.client.subject`*:: +*`tls.server.x509.not_after`*:: + -- -Distinguished name of subject of the x.509 certificate presented by the client. +Time at which the certificate is no longer considered valid. -type: keyword +type: date -example: CN=myclient, OU=Documentation Team, DC=mydomain, DC=com +example: 2020-07-16 03:15:39+00:00 -- -*`tls.client.supported_ciphers`*:: +*`tls.server.x509.not_before`*:: + -- -Array of ciphers offered by the client during the client hello. +Time at which the certificate is first considered valid. -type: keyword +type: date -example: ['TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384', 'TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384', '...'] +example: 2019-08-16 01:40:25+00:00 -- -*`tls.curve`*:: +*`tls.server.x509.public_key_algorithm`*:: + -- -String indicating the curve used for the given cipher, when applicable. +Algorithm used to generate the public key. type: keyword -example: secp256r1 +example: RSA -- -*`tls.established`*:: +*`tls.server.x509.public_key_curve`*:: + -- -Boolean flag indicating if the TLS negotiation was successful and transitioned to an encrypted tunnel. +The curve used by the elliptic curve public key algorithm. This is algorithm specific. -type: boolean +type: keyword + +example: nistp521 -- -*`tls.next_protocol`*:: +*`tls.server.x509.public_key_exponent`*:: + -- -String indicating the protocol being tunneled. Per the values in the IANA registry (https://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml#alpn-protocol-ids), this string should be lower case. +Exponent used to derive the public key. This is algorithm specific. -type: keyword +type: long -example: http/1.1 +example: 65537 + +Field is not indexed. -- -*`tls.resumed`*:: +*`tls.server.x509.public_key_size`*:: + -- -Boolean flag indicating if this TLS connection was resumed from an existing TLS negotiation. +The size of the public key space in bits. -type: boolean +type: long + +example: 2048 -- -*`tls.server.certificate`*:: +*`tls.server.x509.serial_number`*:: + -- -PEM-encoded stand-alone certificate offered by the server. This is usually mutually-exclusive of `server.certificate_chain` since this value also exists in that list. +Unique serial number issued by the certificate authority. For consistency, if this value is alphanumeric, it should be formatted without colons and uppercase characters. type: keyword -example: MII... +example: 55FBB9C7DEBF09809D12CCAA -- -*`tls.server.certificate_chain`*:: +*`tls.server.x509.signature_algorithm`*:: + -- -Array of PEM-encoded certificates that make up the certificate chain offered by the server. This is usually mutually-exclusive of `server.certificate` since that value should be the first certificate in the chain. +Identifier for certificate signature algorithm. We recommend using names found in Go Lang Crypto library. See https://github.com/golang/go/blob/go1.14/src/crypto/x509/x509.go#L337-L353. type: keyword -example: ['MII...', 'MII...'] +example: SHA256-RSA -- -*`tls.server.hash.md5`*:: +*`tls.server.x509.subject.common_name`*:: + -- -Certificate fingerprint using the MD5 digest of DER-encoded version of certificate offered by the server. For consistency with other hash values, this value should be formatted as an uppercase hash. +List of common names (CN) of subject. type: keyword -example: 0F76C7F2C55BFD7D8E8B8F4BFBF0C9EC +example: shared.global.example.net -- -*`tls.server.hash.sha1`*:: +*`tls.server.x509.subject.country`*:: + -- -Certificate fingerprint using the SHA1 digest of DER-encoded version of certificate offered by the server. For consistency with other hash values, this value should be formatted as an uppercase hash. +List of country (C) code type: keyword -example: 9E393D93138888D288266C2D915214D1D1CCEB2A +example: US -- -*`tls.server.hash.sha256`*:: +*`tls.server.x509.subject.distinguished_name`*:: + -- -Certificate fingerprint using the SHA256 digest of DER-encoded version of certificate offered by the server. For consistency with other hash values, this value should be formatted as an uppercase hash. +Distinguished name (DN) of the certificate subject entity. type: keyword -example: 0687F666A054EF17A08E2F2162EAB4CBC0D265E1D7875BE74BF3C712CA92DAF0 +example: C=US, ST=California, L=San Francisco, O=Example, Inc., CN=shared.global.example.net -- -*`tls.server.issuer`*:: +*`tls.server.x509.subject.locality`*:: + -- -Subject of the issuer of the x.509 certificate presented by the server. +List of locality names (L) type: keyword -example: CN=MyDomain Root CA, OU=Infrastructure Team, DC=mydomain, DC=com +example: San Francisco -- -*`tls.server.ja3s`*:: +*`tls.server.x509.subject.organization`*:: + -- -A hash that identifies servers based on how they perform an SSL/TLS handshake. +List of organizations (O) of subject. type: keyword -example: 394441ab65754e2207b1e1b457b3641d +example: Example, Inc. -- -*`tls.server.not_after`*:: +*`tls.server.x509.subject.organizational_unit`*:: + -- -Timestamp indicating when server certificate is no longer considered valid. - -type: date +List of organizational units (OU) of subject. -example: 2021-01-01T00:00:00.000Z +type: keyword -- -*`tls.server.not_before`*:: +*`tls.server.x509.subject.state_or_province`*:: + -- -Timestamp indicating when server certificate is first considered valid. +List of state or province names (ST, S, or P) -type: date +type: keyword -example: 1970-01-01T00:00:00.000Z +example: California -- -*`tls.server.subject`*:: +*`tls.server.x509.version_number`*:: + -- -Subject of the x.509 certificate presented by the server. +Version of x509 format. type: keyword -example: CN=www.mydomain.com, OU=Infrastructure Team, DC=mydomain, DC=com +example: 3 -- @@ -8331,6 +9424,18 @@ example: tls Distributed tracing makes it possible to analyze performance throughout a microservice architecture all in one view. This is accomplished by tracing all of the requests - from the initial web request in the front-end service - to queries made through multiple back-end services. +*`tracing.span.id`*:: ++ +-- +Unique identifier of the span within the scope of its trace. +A span represents an operation within a transaction, such as a request to another service, or a database query. + +type: keyword + +example: 3ff9a8981b7ccd5a + +-- + *`tracing.trace.id`*:: + -- @@ -8346,7 +9451,7 @@ example: 4bf92f3577b34da6a3ce929d0e0e4736 *`tracing.transaction.id`*:: + -- -Unique identifier of the transaction. +Unique identifier of the transaction within the scope of its trace. A transaction is the highest level of work measured within a service, such as a request to a server. type: keyword @@ -8479,12 +9584,12 @@ type: keyword + -- The highest registered url domain, stripped of the subdomain. -For example, the registered domain for "foo.google.com" is "google.com". +For example, the registered domain for "foo.example.com" is "example.com". This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last two labels will not work well for TLDs such as "co.uk". type: keyword -example: google.com +example: example.com -- @@ -8503,7 +9608,7 @@ example: https *`url.top_level_domain`*:: + -- -The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for google.com is "com". +The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for example.com is "com". This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last label will not work well for effective TLDs such as "co.uk". type: keyword @@ -8606,7 +9711,7 @@ type: keyword *`user.id`*:: + -- -Unique identifiers of the user. +Unique identifier of the user. type: keyword @@ -8630,6 +9735,17 @@ type: text -- +*`user.roles`*:: ++ +-- +Array of user roles at the time of the event. + +type: keyword + +example: ["kibana_admin", "reporting_user"] + +-- + [float] === user_agent @@ -8943,1886 +10059,1689 @@ CVSS is owned and managed by FIRST.Org, Inc. (FIRST), a US-based non-profit orga type: keyword -example: 2.0 - --- - -*`vulnerability.severity`*:: -+ --- -The severity of the vulnerability can help with metrics and internal prioritization regarding remediation. For example (https://nvd.nist.gov/vuln-metrics/cvss) - -type: keyword - -example: Critical - --- - -[[exported-fields-flows_event]] -== Flow Event fields - -These fields contain data about the flow itself. - - - -*`flow.final`*:: -+ --- -Indicates if event is last event in flow. If final is false, the event reports an intermediate flow state only. - - -type: boolean - --- - -*`flow.id`*:: -+ --- -Internal flow ID based on connection meta data and address. - - --- - -*`flow.vlan`*:: -+ --- -VLAN identifier from the 802.1q frame. In case of a multi-tagged frame this field will be an array with the outer tag's VLAN identifier listed first. - - -type: long - --- - -*`flow_id`*:: -+ --- -type: alias - -alias to: flow.id - --- - -*`final`*:: -+ --- -type: alias - -alias to: flow.final - --- - -*`vlan`*:: -+ --- -type: alias - -alias to: flow.vlan - --- - -*`source.stats.net_bytes_total`*:: -+ --- -type: alias - -alias to: source.bytes - --- - -*`source.stats.net_packets_total`*:: -+ --- -type: alias - -alias to: source.packets - --- - -*`dest.stats.net_bytes_total`*:: -+ --- -type: alias - -alias to: destination.bytes - --- - -*`dest.stats.net_packets_total`*:: -+ --- -type: alias - -alias to: destination.packets - --- - -[[exported-fields-host-processor]] -== Host fields - -Info collected for the host machine. - - - - -*`host.containerized`*:: -+ --- -If the host is a container. - - -type: boolean - --- - -*`host.os.build`*:: -+ --- -OS build information. - - -type: keyword - -example: 18D109 - --- - -*`host.os.codename`*:: -+ --- -OS codename, if any. - - -type: keyword - -example: stretch +example: 2.0 -- -[[exported-fields-http]] -== HTTP fields - -HTTP-specific event fields. - +*`vulnerability.severity`*:: ++ +-- +The severity of the vulnerability can help with metrics and internal prioritization regarding remediation. For example (https://nvd.nist.gov/vuln-metrics/cvss) -[float] -=== http +type: keyword -Information about the HTTP request and response. +example: Critical +-- [float] -=== request +=== x509 -HTTP request +This implements the common core fields for x509 certificates. This information is likely logged with TLS sessions, digital signatures found in executable binaries, S/MIME information in email bodies, or analysis of files on disk. When only a single certificate is logged in an event, it should be nested under `file`. When hashes of the DER-encoded certificate are available, the `hash` data set should be populated as well (e.g. `file.hash.sha256`). For events that contain certificate information for both sides of the connection, the x509 object could be nested under the respective side of the connection information (e.g. `tls.server.x509`). -*`http.request.headers`*:: +*`x509.alternative_names`*:: + -- -A map containing the captured header fields from the request. Which headers to capture is configurable. If headers with the same header name are present in the message, they will be separated by commas. +List of subject alternative names (SAN). Name types vary by certificate authority and certificate type but commonly contain IP addresses, DNS names (and wildcards), and email addresses. +type: keyword -type: object +example: *.elastic.co -- -*`http.request.params`*:: +*`x509.issuer.common_name`*:: + -- -type: alias - -alias to: url.query - --- +List of common name (CN) of issuing certificate authority. -[float] -=== response +type: keyword -HTTP response +example: Example SHA2 High Assurance Server CA +-- -*`http.response.status_phrase`*:: +*`x509.issuer.country`*:: + -- -The HTTP status phrase. +List of country (C) codes -example: Not Found +type: keyword + +example: US -- -*`http.response.headers`*:: +*`x509.issuer.distinguished_name`*:: + -- -A map containing the captured header fields from the response. Which headers to capture is configurable. If headers with the same header name are present in the message, they will be separated by commas. +Distinguished name (DN) of issuing certificate authority. +type: keyword -type: object +example: C=US, O=Example Inc, OU=www.example.com, CN=Example SHA2 High Assurance Server CA -- -*`http.response.code`*:: +*`x509.issuer.locality`*:: + -- -type: alias +List of locality names (L) -alias to: http.response.status_code +type: keyword --- +example: Mountain View -*`http.response.phrase`*:: -+ -- -type: alias - -alias to: http.response.status_phrase +*`x509.issuer.organization`*:: ++ -- +List of organizations (O) of issuing certificate authority. -[[exported-fields-icmp]] -== ICMP fields - -ICMP specific event fields. - +type: keyword +example: Example Inc +-- -*`icmp.version`*:: +*`x509.issuer.organizational_unit`*:: + -- -The version of the ICMP protocol. +List of organizational units (OU) of issuing certificate authority. + +type: keyword + +example: www.example.com -- -*`icmp.request.message`*:: +*`x509.issuer.state_or_province`*:: + -- -A human readable form of the request. +List of state or province names (ST, S, or P) type: keyword +example: California + -- -*`icmp.request.type`*:: +*`x509.not_after`*:: + -- -The request type. +Time at which the certificate is no longer considered valid. -type: long +type: date + +example: 2020-07-16 03:15:39+00:00 -- -*`icmp.request.code`*:: +*`x509.not_before`*:: + -- -The request code. +Time at which the certificate is first considered valid. -type: long +type: date + +example: 2019-08-16 01:40:25+00:00 -- -*`icmp.response.message`*:: +*`x509.public_key_algorithm`*:: + -- -A human readable form of the response. +Algorithm used to generate the public key. type: keyword +example: RSA + -- -*`icmp.response.type`*:: +*`x509.public_key_curve`*:: + -- -The response type. +The curve used by the elliptic curve public key algorithm. This is algorithm specific. -type: long +type: keyword + +example: nistp521 -- -*`icmp.response.code`*:: +*`x509.public_key_exponent`*:: + -- -The response code. +Exponent used to derive the public key. This is algorithm specific. type: long --- - -[[exported-fields-jolokia-autodiscover]] -== Jolokia Discovery autodiscover provider fields - -Metadata from Jolokia Discovery added by the jolokia provider. +example: 65537 +Field is not indexed. +-- -*`jolokia.agent.version`*:: +*`x509.public_key_size`*:: + -- -Version number of jolokia agent. +The size of the public key space in bits. +type: long -type: keyword +example: 2048 -- -*`jolokia.agent.id`*:: +*`x509.serial_number`*:: + -- -Each agent has a unique id which can be either provided during startup of the agent in form of a configuration parameter or being autodetected. If autodected, the id has several parts: The IP, the process id, hashcode of the agent and its type. - +Unique serial number issued by the certificate authority. For consistency, if this value is alphanumeric, it should be formatted without colons and uppercase characters. type: keyword +example: 55FBB9C7DEBF09809D12CCAA + -- -*`jolokia.server.product`*:: +*`x509.signature_algorithm`*:: + -- -The container product if detected. - +Identifier for certificate signature algorithm. We recommend using names found in Go Lang Crypto library. See https://github.com/golang/go/blob/go1.14/src/crypto/x509/x509.go#L337-L353. type: keyword +example: SHA256-RSA + -- -*`jolokia.server.version`*:: +*`x509.subject.common_name`*:: + -- -The container's version (if detected). - +List of common names (CN) of subject. type: keyword +example: shared.global.example.net + -- -*`jolokia.server.vendor`*:: +*`x509.subject.country`*:: + -- -The vendor of the container the agent is running in. - +List of country (C) code type: keyword +example: US + -- -*`jolokia.url`*:: +*`x509.subject.distinguished_name`*:: + -- -The URL how this agent can be contacted. - +Distinguished name (DN) of the certificate subject entity. type: keyword +example: C=US, ST=California, L=San Francisco, O=Example, Inc., CN=shared.global.example.net + -- -*`jolokia.secured`*:: +*`x509.subject.locality`*:: + -- -Whether the agent was configured for authentication or not. +List of locality names (L) +type: keyword -type: boolean +example: San Francisco -- -[[exported-fields-kubernetes-processor]] -== Kubernetes fields - -Kubernetes metadata added by the kubernetes processor - - - - -*`kubernetes.pod.name`*:: +*`x509.subject.organization`*:: + -- -Kubernetes pod name - +List of organizations (O) of subject. type: keyword +example: Example, Inc. + -- -*`kubernetes.pod.uid`*:: +*`x509.subject.organizational_unit`*:: + -- -Kubernetes Pod UID - +List of organizational units (OU) of subject. type: keyword -- -*`kubernetes.namespace`*:: +*`x509.subject.state_or_province`*:: + -- -Kubernetes namespace - +List of state or province names (ST, S, or P) type: keyword +example: California + -- -*`kubernetes.node.name`*:: +*`x509.version_number`*:: + -- -Kubernetes node name - +Version of x509 format. type: keyword --- +example: 3 -*`kubernetes.labels.*`*:: -+ -- -Kubernetes labels map +[[exported-fields-flows_event]] +== Flow Event fields -type: object +These fields contain data about the flow itself. --- -*`kubernetes.annotations.*`*:: + +*`flow.final`*:: + -- -Kubernetes annotations map +Indicates if event is last event in flow. If final is false, the event reports an intermediate flow state only. -type: object +type: boolean -- -*`kubernetes.replicaset.name`*:: +*`flow.id`*:: + -- -Kubernetes replicaset name - +Internal flow ID based on connection meta data and address. -type: keyword -- -*`kubernetes.deployment.name`*:: +*`flow.vlan`*:: + -- -Kubernetes deployment name +VLAN identifier from the 802.1q frame. In case of a multi-tagged frame this field will be an array with the outer tag's VLAN identifier listed first. -type: keyword +type: long -- -*`kubernetes.statefulset.name`*:: +*`flow_id`*:: + -- -Kubernetes statefulset name - +type: alias -type: keyword +alias to: flow.id -- -*`kubernetes.container.name`*:: +*`final`*:: + -- -Kubernetes container name - +type: alias -type: keyword +alias to: flow.final -- -*`kubernetes.container.image`*:: +*`vlan`*:: + -- -Kubernetes container image - +type: alias -type: keyword +alias to: flow.vlan -- -[[exported-fields-memcache]] -== Memcache fields - -Memcached-specific event fields +*`source.stats.net_bytes_total`*:: ++ +-- +type: alias +alias to: source.bytes +-- -*`memcache.protocol_type`*:: +*`source.stats.net_packets_total`*:: + -- -The memcache protocol implementation. The value can be "binary" for binary-based, "text" for text-based, or "unknown" for an unknown memcache protocol type. - +type: alias -type: keyword +alias to: source.packets -- -*`memcache.request.line`*:: +*`dest.stats.net_bytes_total`*:: + -- -The raw command line for unknown commands ONLY. - +type: alias -type: keyword +alias to: destination.bytes -- -*`memcache.request.command`*:: +*`dest.stats.net_packets_total`*:: + -- -The memcache command being requested in the memcache text protocol. For example "set" or "get". The binary protocol opcodes are translated into memcache text protocol commands. - +type: alias -type: keyword +alias to: destination.packets -- -*`memcache.response.command`*:: -+ --- -Either the text based protocol response message type or the name of the originating request if binary protocol is used. +[[exported-fields-host-processor]] +== Host fields + +Info collected for the host machine. -type: keyword --- -*`memcache.request.type`*:: +*`host.containerized`*:: + -- -The memcache command classification. This value can be "UNKNOWN", "Load", "Store", "Delete", "Counter", "Info", "SlabCtrl", "LRUCrawler", "Stats", "Success", "Fail", or "Auth". +If the host is a container. -type: keyword +type: boolean -- -*`memcache.response.type`*:: +*`host.os.build`*:: + -- -The memcache command classification. This value can be "UNKNOWN", "Load", "Store", "Delete", "Counter", "Info", "SlabCtrl", "LRUCrawler", "Stats", "Success", "Fail", or "Auth". The text based protocol will employ any of these, whereas the binary based protocol will mirror the request commands only (see `memcache.response.status` for binary protocol). +OS build information. type: keyword +example: 18D109 + -- -*`memcache.response.error_msg`*:: +*`host.os.codename`*:: + -- -The optional error message in the memcache response (text based protocol only). +OS codename, if any. type: keyword --- +example: stretch -*`memcache.request.opcode`*:: -+ -- -The binary protocol message opcode name. +[[exported-fields-http]] +== HTTP fields -type: keyword +HTTP-specific event fields. --- -*`memcache.response.opcode`*:: -+ --- -The binary protocol message opcode name. +[float] +=== http + +Information about the HTTP request and response. -type: keyword +[float] +=== request --- +HTTP request -*`memcache.request.opcode_value`*:: + +*`http.request.headers`*:: + -- -The binary protocol message opcode value. +A map containing the captured header fields from the request. Which headers to capture is configurable. If headers with the same header name are present in the message, they will be separated by commas. -type: long +type: object -- -*`memcache.response.opcode_value`*:: +*`http.request.params`*:: + -- -The binary protocol message opcode value. - +type: alias -type: long +alias to: url.query -- -*`memcache.request.opaque`*:: +[float] +=== response + +HTTP response + + +*`http.response.status_phrase`*:: + -- -The binary protocol opaque header value used for correlating request with response messages. - +The HTTP status phrase. -type: long +example: Not Found -- -*`memcache.response.opaque`*:: +*`http.response.headers`*:: + -- -The binary protocol opaque header value used for correlating request with response messages. +A map containing the captured header fields from the response. Which headers to capture is configurable. If headers with the same header name are present in the message, they will be separated by commas. -type: long +type: object -- -*`memcache.request.vbucket`*:: +*`http.response.code`*:: + -- -The vbucket index sent in the binary message. - +type: alias -type: long +alias to: http.response.status_code -- -*`memcache.response.status`*:: +*`http.response.phrase`*:: + -- -The textual representation of the response error code (binary protocol only). - +type: alias -type: keyword +alias to: http.response.status_phrase -- -*`memcache.response.status_code`*:: -+ --- -The status code value returned in the response (binary protocol only). +[[exported-fields-icmp]] +== ICMP fields + +ICMP specific event fields. -type: long --- -*`memcache.request.keys`*:: +*`icmp.version`*:: + -- -The list of keys sent in the store or load commands. - - -type: array +The version of the ICMP protocol. -- -*`memcache.response.keys`*:: +*`icmp.request.message`*:: + -- -The list of keys returned for the load command (if present). - +A human readable form of the request. -type: array +type: keyword -- -*`memcache.request.count_values`*:: +*`icmp.request.type`*:: + -- -The number of values found in the memcache request message. If the command does not send any data, this field is missing. - +The request type. type: long -- -*`memcache.response.count_values`*:: +*`icmp.request.code`*:: + -- -The number of values found in the memcache response message. If the command does not send any data, this field is missing. - +The request code. type: long -- -*`memcache.request.values`*:: +*`icmp.response.message`*:: + -- -The list of base64 encoded values sent with the request (if present). - +A human readable form of the response. -type: array +type: keyword -- -*`memcache.response.values`*:: +*`icmp.response.type`*:: + -- -The list of base64 encoded values sent with the response (if present). - +The response type. -type: array +type: long -- -*`memcache.request.bytes`*:: +*`icmp.response.code`*:: + -- -The byte count of the values being transferred. - +The response code. type: long -format: bytes - --- - -*`memcache.response.bytes`*:: -+ -- -The byte count of the values being transferred. +[[exported-fields-jolokia-autodiscover]] +== Jolokia Discovery autodiscover provider fields -type: long +Metadata from Jolokia Discovery added by the jolokia provider. -format: bytes --- -*`memcache.request.delta`*:: +*`jolokia.agent.version`*:: + -- -The counter increment/decrement delta value. +Version number of jolokia agent. -type: long +type: keyword -- -*`memcache.request.initial`*:: +*`jolokia.agent.id`*:: + -- -The counter increment/decrement initial value parameter (binary protocol only). +Each agent has a unique id which can be either provided during startup of the agent in form of a configuration parameter or being autodetected. If autodected, the id has several parts: The IP, the process id, hashcode of the agent and its type. -type: long +type: keyword -- -*`memcache.request.verbosity`*:: +*`jolokia.server.product`*:: + -- -The value of the memcache "verbosity" command. +The container product if detected. -type: long +type: keyword -- -*`memcache.request.raw_args`*:: +*`jolokia.server.version`*:: + -- -The text protocol raw arguments for the "stats ..." and "lru crawl ..." commands. +The container's version (if detected). type: keyword -- -*`memcache.request.source_class`*:: +*`jolokia.server.vendor`*:: + -- -The source class id in 'slab reassign' command. +The vendor of the container the agent is running in. -type: long +type: keyword -- -*`memcache.request.dest_class`*:: +*`jolokia.url`*:: + -- -The destination class id in 'slab reassign' command. +The URL how this agent can be contacted. -type: long +type: keyword -- -*`memcache.request.automove`*:: +*`jolokia.secured`*:: + -- -The automove mode in the 'slab automove' command expressed as a string. This value can be "standby"(=0), "slow"(=1), "aggressive"(=2), or the raw value if the value is unknown. +Whether the agent was configured for authentication or not. -type: keyword +type: boolean -- -*`memcache.request.flags`*:: +[[exported-fields-kubernetes-processor]] +== Kubernetes fields + +Kubernetes metadata added by the kubernetes processor + + + + +*`kubernetes.pod.name`*:: + -- -The memcache command flags sent in the request (if present). +Kubernetes pod name -type: long +type: keyword -- -*`memcache.response.flags`*:: +*`kubernetes.pod.uid`*:: + -- -The memcache message flags sent in the response (if present). +Kubernetes Pod UID -type: long +type: keyword -- -*`memcache.request.exptime`*:: +*`kubernetes.namespace`*:: + -- -The data expiry time in seconds sent with the memcache command (if present). If the value is <30 days, the expiry time is relative to "now", or else it is an absolute Unix time in seconds (32-bit). +Kubernetes namespace -type: long +type: keyword -- -*`memcache.request.sleep_us`*:: +*`kubernetes.node.name`*:: + -- -The sleep setting in microseconds for the 'lru_crawler sleep' command. +Kubernetes node name -type: long +type: keyword -- -*`memcache.response.value`*:: +*`kubernetes.labels.*`*:: + -- -The counter value returned by a counter operation. +Kubernetes labels map -type: long +type: object -- -*`memcache.request.noreply`*:: +*`kubernetes.annotations.*`*:: + -- -Set to true if noreply was set in the request. The `memcache.response` field will be missing. +Kubernetes annotations map -type: boolean +type: object -- -*`memcache.request.quiet`*:: +*`kubernetes.replicaset.name`*:: + -- -Set to true if the binary protocol message is to be treated as a quiet message. +Kubernetes replicaset name -type: boolean +type: keyword -- -*`memcache.request.cas_unique`*:: +*`kubernetes.deployment.name`*:: + -- -The CAS (compare-and-swap) identifier if present. +Kubernetes deployment name -type: long +type: keyword -- -*`memcache.response.cas_unique`*:: +*`kubernetes.statefulset.name`*:: + -- -The CAS (compare-and-swap) identifier to be used with CAS-based updates (if present). +Kubernetes statefulset name -type: long +type: keyword -- -*`memcache.response.stats`*:: +*`kubernetes.container.name`*:: + -- -The list of statistic values returned. Each entry is a dictionary with the fields "name" and "value". +Kubernetes container name -type: array +type: keyword -- -*`memcache.response.version`*:: +*`kubernetes.container.image`*:: + -- -The returned memcache version string. +Kubernetes container image type: keyword -- -[[exported-fields-mongodb]] -== MongoDb fields - -MongoDB-specific event fields. These fields mirror closely the fields for the MongoDB wire protocol. The higher level fields (for example, `query` and `resource`) apply to MongoDB events as well. +[[exported-fields-memcache]] +== Memcache fields +Memcached-specific event fields -*`mongodb.error`*:: +*`memcache.protocol_type`*:: + -- -If the MongoDB request has resulted in an error, this field contains the error message returned by the server. - - --- +The memcache protocol implementation. The value can be "binary" for binary-based, "text" for text-based, or "unknown" for an unknown memcache protocol type. -*`mongodb.fullCollectionName`*:: -+ --- -The full collection name. The full collection name is the concatenation of the database name with the collection name, using a dot (.) for the concatenation. For example, for the database foo and the collection bar, the full collection name is foo.bar. +type: keyword -- -*`mongodb.numberToSkip`*:: +*`memcache.request.line`*:: + -- -Sets the number of documents to omit - starting from the first document in the resulting dataset - when returning the result of the query. +The raw command line for unknown commands ONLY. -type: long +type: keyword -- -*`mongodb.numberToReturn`*:: +*`memcache.request.command`*:: + -- -The requested maximum number of documents to be returned. +The memcache command being requested in the memcache text protocol. For example "set" or "get". The binary protocol opcodes are translated into memcache text protocol commands. -type: long +type: keyword -- -*`mongodb.numberReturned`*:: +*`memcache.response.command`*:: + -- -The number of documents in the reply. +Either the text based protocol response message type or the name of the originating request if binary protocol is used. -type: long +type: keyword -- -*`mongodb.startingFrom`*:: +*`memcache.request.type`*:: + -- -Where in the cursor this reply is starting. +The memcache command classification. This value can be "UNKNOWN", "Load", "Store", "Delete", "Counter", "Info", "SlabCtrl", "LRUCrawler", "Stats", "Success", "Fail", or "Auth". +type: keyword + -- -*`mongodb.query`*:: +*`memcache.response.type`*:: + -- -A JSON document that represents the query. The query will contain one or more elements, all of which must match for a document to be included in the result set. Possible elements include $query, $orderby, $hint, $explain, and $snapshot. +The memcache command classification. This value can be "UNKNOWN", "Load", "Store", "Delete", "Counter", "Info", "SlabCtrl", "LRUCrawler", "Stats", "Success", "Fail", or "Auth". The text based protocol will employ any of these, whereas the binary based protocol will mirror the request commands only (see `memcache.response.status` for binary protocol). +type: keyword + -- -*`mongodb.returnFieldsSelector`*:: +*`memcache.response.error_msg`*:: + -- -A JSON document that limits the fields in the returned documents. The returnFieldsSelector contains one or more elements, each of which is the name of a field that should be returned, and the integer value 1. +The optional error message in the memcache response (text based protocol only). +type: keyword + -- -*`mongodb.selector`*:: +*`memcache.request.opcode`*:: + -- -A BSON document that specifies the query for selecting the document to update or delete. +The binary protocol message opcode name. +type: keyword + -- -*`mongodb.update`*:: +*`memcache.response.opcode`*:: + -- -A BSON document that specifies the update to be performed. For information on specifying updates, see the Update Operations documentation from the MongoDB Manual. +The binary protocol message opcode name. --- +type: keyword -*`mongodb.cursorId`*:: -+ -- -The cursor identifier returned in the OP_REPLY. This must be the value that was returned from the database. - +*`memcache.request.opcode_value`*:: ++ -- - -[[exported-fields-mysql]] -== MySQL fields - -MySQL-specific event fields. +The binary protocol message opcode value. +type: long +-- -*`mysql.affected_rows`*:: +*`memcache.response.opcode_value`*:: + -- -If the MySQL command is successful, this field contains the affected number of rows of the last statement. +The binary protocol message opcode value. type: long -- -*`mysql.insert_id`*:: +*`memcache.request.opaque`*:: + -- -If the INSERT query is successful, this field contains the id of the newly inserted row. +The binary protocol opaque header value used for correlating request with response messages. +type: long + -- -*`mysql.num_fields`*:: +*`memcache.response.opaque`*:: + -- -If the SELECT query is successful, this field is set to the number of fields returned. +The binary protocol opaque header value used for correlating request with response messages. +type: long + -- -*`mysql.num_rows`*:: +*`memcache.request.vbucket`*:: + -- -If the SELECT query is successful, this field is set to the number of rows returned. +The vbucket index sent in the binary message. +type: long + -- -*`mysql.query`*:: +*`memcache.response.status`*:: + -- -The row mysql query as read from the transaction's request. +The textual representation of the response error code (binary protocol only). +type: keyword + -- -*`mysql.error_code`*:: +*`memcache.response.status_code`*:: + -- -The error code returned by MySQL. +The status code value returned in the response (binary protocol only). type: long -- -*`mysql.error_message`*:: +*`memcache.request.keys`*:: + -- -The error info message returned by MySQL. +The list of keys sent in the store or load commands. +type: array + -- -[[exported-fields-nfs]] -== NFS fields +*`memcache.response.keys`*:: ++ +-- +The list of keys returned for the load command (if present). -NFS v4/3 specific event fields. +type: array +-- -*`nfs.version`*:: +*`memcache.request.count_values`*:: + -- -NFS protocol version number. +The number of values found in the memcache request message. If the command does not send any data, this field is missing. + type: long -- -*`nfs.minor_version`*:: +*`memcache.response.count_values`*:: + -- -NFS protocol minor version number. +The number of values found in the memcache response message. If the command does not send any data, this field is missing. + type: long -- -*`nfs.tag`*:: +*`memcache.request.values`*:: + -- -NFS v4 COMPOUND operation tag. +The list of base64 encoded values sent with the request (if present). + + +type: array -- -*`nfs.opcode`*:: +*`memcache.response.values`*:: + -- -NFS operation name, or main operation name, in case of COMPOUND calls. +The list of base64 encoded values sent with the response (if present). +type: array + -- -*`nfs.status`*:: +*`memcache.request.bytes`*:: + -- -NFS operation reply status. +The byte count of the values being transferred. --- -[float] -=== rpc +type: long -ONC RPC specific event fields. +format: bytes +-- -*`rpc.xid`*:: +*`memcache.response.bytes`*:: + -- -RPC message transaction identifier. +The byte count of the values being transferred. --- -*`rpc.status`*:: -+ --- -RPC message reply status. +type: long + +format: bytes -- -*`rpc.auth_flavor`*:: +*`memcache.request.delta`*:: + -- -RPC authentication flavor. +The counter increment/decrement delta value. + + +type: long -- -*`rpc.cred.uid`*:: +*`memcache.request.initial`*:: + -- -RPC caller's user id, in case of auth-unix. +The counter increment/decrement initial value parameter (binary protocol only). + type: long -- -*`rpc.cred.gid`*:: +*`memcache.request.verbosity`*:: + -- -RPC caller's group id, in case of auth-unix. +The value of the memcache "verbosity" command. + type: long -- -*`rpc.cred.gids`*:: +*`memcache.request.raw_args`*:: + -- -RPC caller's secondary group ids, in case of auth-unix. +The text protocol raw arguments for the "stats ..." and "lru crawl ..." commands. + + +type: keyword -- -*`rpc.cred.stamp`*:: +*`memcache.request.source_class`*:: + -- -Arbitrary ID which the caller machine may generate. +The source class id in 'slab reassign' command. + type: long -- -*`rpc.cred.machinename`*:: +*`memcache.request.dest_class`*:: + -- -The name of the caller's machine. +The destination class id in 'slab reassign' command. + + +type: long -- -*`rpc.call_size`*:: +*`memcache.request.automove`*:: + -- -RPC call size with argument. +The automove mode in the 'slab automove' command expressed as a string. This value can be "standby"(=0), "slow"(=1), "aggressive"(=2), or the raw value if the value is unknown. -type: alias -alias to: source.bytes +type: keyword -- -*`rpc.reply_size`*:: +*`memcache.request.flags`*:: + -- -RPC reply size with argument. +The memcache command flags sent in the request (if present). -type: alias -alias to: destination.bytes +type: long -- -[[exported-fields-pgsql]] -== PostgreSQL fields - -PostgreSQL-specific event fields. +*`memcache.response.flags`*:: ++ +-- +The memcache message flags sent in the response (if present). +type: long +-- -*`pgsql.error_code`*:: +*`memcache.request.exptime`*:: + -- -The PostgreSQL error code. +The data expiry time in seconds sent with the memcache command (if present). If the value is <30 days, the expiry time is relative to "now", or else it is an absolute Unix time in seconds (32-bit). + type: long -- -*`pgsql.error_message`*:: +*`memcache.request.sleep_us`*:: + -- -The PostgreSQL error message. +The sleep setting in microseconds for the 'lru_crawler sleep' command. --- -*`pgsql.error_severity`*:: -+ --- -The PostgreSQL error severity. +type: long -- -*`pgsql.num_fields`*:: +*`memcache.response.value`*:: + -- -If the SELECT query if successful, this field is set to the number of fields returned. +The counter value returned by a counter operation. +type: long + -- -*`pgsql.num_rows`*:: +*`memcache.request.noreply`*:: + -- -If the SELECT query if successful, this field is set to the number of rows returned. +Set to true if noreply was set in the request. The `memcache.response` field will be missing. --- +type: boolean -[[exported-fields-process]] -== Process fields +-- -Process metadata fields +*`memcache.request.quiet`*:: ++ +-- +Set to true if the binary protocol message is to be treated as a quiet message. +type: boolean +-- -*`process.exe`*:: +*`memcache.request.cas_unique`*:: + -- -type: alias +The CAS (compare-and-swap) identifier if present. -alias to: process.executable + +type: long -- -[[exported-fields-raw]] -== Raw fields +*`memcache.response.cas_unique`*:: ++ +-- +The CAS (compare-and-swap) identifier to be used with CAS-based updates (if present). -These fields contain the raw transaction data. +type: long -*`request`*:: +-- + +*`memcache.response.stats`*:: + -- -For text protocols, this is the request as seen on the wire (application layer only). For binary protocols this is our representation of the request. +The list of statistic values returned. Each entry is a dictionary with the fields "name" and "value". -type: text +type: array -- -*`response`*:: +*`memcache.response.version`*:: + -- -For text protocols, this is the response as seen on the wire (application layer only). For binary protocols this is our representation of the request. +The returned memcache version string. -type: text +type: keyword -- -[[exported-fields-redis]] -== Redis fields +[[exported-fields-mongodb]] +== MongoDb fields -Redis-specific event fields. +MongoDB-specific event fields. These fields mirror closely the fields for the MongoDB wire protocol. The higher level fields (for example, `query` and `resource`) apply to MongoDB events as well. -*`redis.return_value`*:: +*`mongodb.error`*:: + -- -The return value of the Redis command in a human readable format. +If the MongoDB request has resulted in an error, this field contains the error message returned by the server. -- -*`redis.error`*:: +*`mongodb.fullCollectionName`*:: + -- -If the Redis command has resulted in an error, this field contains the error message returned by the Redis server. +The full collection name. The full collection name is the concatenation of the database name with the collection name, using a dot (.) for the concatenation. For example, for the database foo and the collection bar, the full collection name is foo.bar. -- -[[exported-fields-thrift]] -== Thrift-RPC fields - -Thrift-RPC specific event fields. +*`mongodb.numberToSkip`*:: ++ +-- +Sets the number of documents to omit - starting from the first document in the resulting dataset - when returning the result of the query. +type: long +-- -*`thrift.params`*:: +*`mongodb.numberToReturn`*:: + -- -The RPC method call parameters in a human readable format. If the IDL files are available, the parameters use names whenever possible. Otherwise, the IDs from the message are used. +The requested maximum number of documents to be returned. + +type: long -- -*`thrift.service`*:: +*`mongodb.numberReturned`*:: + -- -The name of the Thrift-RPC service as defined in the IDL files. +The number of documents in the reply. + +type: long -- -*`thrift.return_value`*:: +*`mongodb.startingFrom`*:: + -- -The value returned by the Thrift-RPC call. This is encoded in a human readable format. +Where in the cursor this reply is starting. -- -*`thrift.exceptions`*:: +*`mongodb.query`*:: + -- -If the call resulted in exceptions, this field contains the exceptions in a human readable format. +A JSON document that represents the query. The query will contain one or more elements, all of which must match for a document to be included in the result set. Possible elements include $query, $orderby, $hint, $explain, and $snapshot. -- -[[exported-fields-tls_detailed]] -== Detailed TLS fields - -Detailed TLS-specific event fields. +*`mongodb.returnFieldsSelector`*:: ++ +-- +A JSON document that limits the fields in the returned documents. The returnFieldsSelector contains one or more elements, each of which is the name of a field that should be returned, and the integer value 1. +-- +*`mongodb.selector`*:: ++ +-- +A BSON document that specifies the query for selecting the document to update or delete. +-- -*`tls.client.x509.version`*:: +*`mongodb.update`*:: + -- -Version of x509 format. - -type: keyword +A BSON document that specifies the update to be performed. For information on specifying updates, see the Update Operations documentation from the MongoDB Manual. -example: 3 -- -*`tls.client.x509.version_number`*:: +*`mongodb.cursorId`*:: + -- -Version of x509 format. - -type: keyword +The cursor identifier returned in the OP_REPLY. This must be the value that was returned from the database. -example: 3 -- -*`tls.client.x509.serial_number`*:: -+ --- -Unique serial number issued by the certificate authority. For consistency, if this value is alphanumeric, it should be formatted without colons and uppercase characters. +[[exported-fields-mysql]] +== MySQL fields +MySQL-specific event fields. -type: keyword -example: 55FBB9C7DEBF09809D12CCAA --- -*`tls.client.x509.issuer.distinguished_name`*:: +*`mysql.affected_rows`*:: + -- -Distinguished name (DN) of issuing certificate authority. +If the MySQL command is successful, this field contains the affected number of rows of the last statement. -type: keyword -example: C=US, O=DigiCert Inc, OU=www.digicert.com, CN=DigiCert SHA2 High Assurance Server CA +type: long -- -*`tls.client.x509.issuer.common_name`*:: +*`mysql.insert_id`*:: + -- -List of common name (CN) of issuing certificate authority. - -type: keyword +If the INSERT query is successful, this field contains the id of the newly inserted row. -example: DigiCert SHA2 High Assurance Server CA -- -*`tls.client.x509.issuer.organizational_unit`*:: +*`mysql.num_fields`*:: + -- -List of organizational units (OU) of issuing certificate authority. - -type: keyword +If the SELECT query is successful, this field is set to the number of fields returned. -example: www.digicert.com -- -*`tls.client.x509.issuer.organization`*:: +*`mysql.num_rows`*:: + -- -List of organizations (O) of issuing certificate authority. - -type: keyword +If the SELECT query is successful, this field is set to the number of rows returned. -example: DigiCert Inc -- -*`tls.client.x509.issuer.locality`*:: +*`mysql.query`*:: + -- -List of locality names (L) - -type: keyword +The row mysql query as read from the transaction's request. -example: Mountain View -- -*`tls.client.x509.issuer.province`*:: +*`mysql.error_code`*:: + -- -Province or region within country. +The error code returned by MySQL. -type: keyword + +type: long -- -*`tls.client.x509.issuer.state_or_province`*:: +*`mysql.error_message`*:: + -- -List of state or province names (ST, S, or P) - -type: keyword +The error info message returned by MySQL. -example: California -- -*`tls.client.x509.issuer.country`*:: -+ --- -List of country (C) codes +[[exported-fields-nfs]] +== NFS fields -type: keyword +NFS v4/3 specific event fields. -example: US --- -*`tls.client.x509.signature_algorithm`*:: +*`nfs.version`*:: + -- -Identifier for certificate signature algorithm. Recommend using names found in Go Lang Crypto library (See https://github.com/golang/go/blob/go1.14/src/crypto/x509/x509.go#L337-L353). - -type: keyword +NFS protocol version number. -example: SHA256-RSA +type: long -- -*`tls.client.x509.not_before`*:: +*`nfs.minor_version`*:: + -- -Time at which the certificate is first considered valid. - -type: date +NFS protocol minor version number. -example: 2019-08-16 01:40:25+00:00 +type: long -- -*`tls.client.x509.not_after`*:: +*`nfs.tag`*:: + -- -Time at which the certificate is no longer considered valid. - -type: date - -example: 2020-07-16 03:15:39+00:00 +NFS v4 COMPOUND operation tag. -- -*`tls.client.x509.subject.distinguished_name`*:: +*`nfs.opcode`*:: + -- -Distinguished name (DN) of the certificate subject entity. - -type: keyword +NFS operation name, or main operation name, in case of COMPOUND calls. -example: C=US, ST=California, L=San Francisco, O=Fastly, Inc., CN=r2.shared.global.fastly.net -- -*`tls.client.x509.subject.common_name`*:: +*`nfs.status`*:: + -- -List of common names (CN) of subject. +NFS operation reply status. -type: keyword +-- -example: r2.shared.global.fastly.net +[float] +=== rpc --- +ONC RPC specific event fields. -*`tls.client.x509.subject.organizational_unit`*:: + +*`rpc.xid`*:: + -- -List of organizational units (OU) of subject. +RPC message transaction identifier. -type: keyword +-- + +*`rpc.status`*:: ++ +-- +RPC message reply status. -- -*`tls.client.x509.subject.organization`*:: +*`rpc.auth_flavor`*:: + -- -List of organizations (O) of subject. - -type: keyword - -example: Fastly, Inc. +RPC authentication flavor. -- -*`tls.client.x509.subject.locality`*:: +*`rpc.cred.uid`*:: + -- -List of locality names (L) - -type: keyword +RPC caller's user id, in case of auth-unix. -example: San Francisco +type: long -- -*`tls.client.x509.subject.province`*:: +*`rpc.cred.gid`*:: + -- -Province or region within country. +RPC caller's group id, in case of auth-unix. -type: keyword +type: long -- -*`tls.client.x509.subject.state_or_province`*:: +*`rpc.cred.gids`*:: + -- -List of state or province names (ST, S, or P) - -type: keyword - -example: California +RPC caller's secondary group ids, in case of auth-unix. -- -*`tls.client.x509.subject.country`*:: +*`rpc.cred.stamp`*:: + -- -List of country (C) code - -type: keyword +Arbitrary ID which the caller machine may generate. -example: US +type: long -- -*`tls.client.x509.public_key_algorithm`*:: +*`rpc.cred.machinename`*:: + -- -Algorithm used to generate the public key. - -type: keyword - -example: RSA +The name of the caller's machine. -- -*`tls.client.x509.public_key_size`*:: +*`rpc.call_size`*:: + -- -The size of the public key space in bits. +RPC call size with argument. -type: long +type: alias -example: 2048 +alias to: source.bytes -- -*`tls.client.x509.alternative_names`*:: +*`rpc.reply_size`*:: + -- -List of subject alternative names (SAN). Name types vary by certificate authority and certificate type but commonly contain IP addresses, DNS names (and wildcards), and email addresses. +RPC reply size with argument. -type: keyword +type: alias -example: *.elastic.co +alias to: destination.bytes -- +[[exported-fields-pgsql]] +== PostgreSQL fields +PostgreSQL-specific event fields. -*`tls.server.x509.version`*:: -+ --- -Version of x509 format. - -type: keyword -example: 3 --- -*`tls.server.x509.version_number`*:: +*`pgsql.error_code`*:: + -- -Version of x509 format. - -type: keyword +The PostgreSQL error code. -example: 3 +type: long -- -*`tls.server.x509.serial_number`*:: +*`pgsql.error_message`*:: + -- -Unique serial number issued by the certificate authority. For consistency, if this value is alphanumeric, it should be formatted without colons and uppercase characters. - +The PostgreSQL error message. -type: keyword +-- -example: 55FBB9C7DEBF09809D12CCAA +*`pgsql.error_severity`*:: ++ +-- +The PostgreSQL error severity. -- -*`tls.server.x509.issuer.distinguished_name`*:: +*`pgsql.num_fields`*:: + -- -Distinguished name (DN) of issuing certificate authority. - -type: keyword +If the SELECT query if successful, this field is set to the number of fields returned. -example: C=US, O=DigiCert Inc, OU=www.digicert.com, CN=DigiCert SHA2 High Assurance Server CA -- -*`tls.server.x509.issuer.common_name`*:: +*`pgsql.num_rows`*:: + -- -List of common name (CN) of issuing certificate authority. - -type: keyword +If the SELECT query if successful, this field is set to the number of rows returned. -example: DigiCert SHA2 High Assurance Server CA -- -*`tls.server.x509.issuer.organizational_unit`*:: -+ --- -List of organizational units (OU) of issuing certificate authority. +[[exported-fields-process]] +== Process fields -type: keyword +Process metadata fields -example: www.digicert.com --- -*`tls.server.x509.issuer.organization`*:: + +*`process.exe`*:: + -- -List of organizations (O) of issuing certificate authority. - -type: keyword +type: alias -example: DigiCert Inc +alias to: process.executable -- -*`tls.server.x509.issuer.locality`*:: +[[exported-fields-raw]] +== Raw fields + +These fields contain the raw transaction data. + + +*`request`*:: + -- -List of locality names (L) +For text protocols, this is the request as seen on the wire (application layer only). For binary protocols this is our representation of the request. -type: keyword -example: Mountain View +type: text -- -*`tls.server.x509.issuer.province`*:: +*`response`*:: + -- -Province or region within country. +For text protocols, this is the response as seen on the wire (application layer only). For binary protocols this is our representation of the request. -type: keyword --- +type: text -*`tls.server.x509.issuer.state_or_province`*:: -+ -- -List of state or province names (ST, S, or P) -type: keyword +[[exported-fields-redis]] +== Redis fields -example: California +Redis-specific event fields. --- -*`tls.server.x509.issuer.country`*:: + + +*`redis.return_value`*:: + -- -List of country (C) codes - -type: keyword +The return value of the Redis command in a human readable format. -example: US -- -*`tls.server.x509.signature_algorithm`*:: +*`redis.error`*:: + -- -Identifier for certificate signature algorithm. Recommend using names found in Go Lang Crypto library (See https://github.com/golang/go/blob/go1.14/src/crypto/x509/x509.go#L337-L353). - -type: keyword +If the Redis command has resulted in an error, this field contains the error message returned by the Redis server. -example: SHA256-RSA -- -*`tls.server.x509.not_before`*:: -+ --- -Time at which the certificate is first considered valid. +[[exported-fields-thrift]] +== Thrift-RPC fields -type: date +Thrift-RPC specific event fields. -example: 2019-08-16 01:40:25+00:00 --- -*`tls.server.x509.not_after`*:: + +*`thrift.params`*:: + -- -Time at which the certificate is no longer considered valid. - -type: date +The RPC method call parameters in a human readable format. If the IDL files are available, the parameters use names whenever possible. Otherwise, the IDs from the message are used. -example: 2020-07-16 03:15:39+00:00 -- -*`tls.server.x509.subject.distinguished_name`*:: +*`thrift.service`*:: + -- -Distinguished name (DN) of the certificate subject entity. - -type: keyword +The name of the Thrift-RPC service as defined in the IDL files. -example: C=US, ST=California, L=San Francisco, O=Fastly, Inc., CN=r2.shared.global.fastly.net -- -*`tls.server.x509.subject.common_name`*:: +*`thrift.return_value`*:: + -- -List of common names (CN) of subject. - -type: keyword +The value returned by the Thrift-RPC call. This is encoded in a human readable format. -example: r2.shared.global.fastly.net -- -*`tls.server.x509.subject.organizational_unit`*:: +*`thrift.exceptions`*:: + -- -List of organizational units (OU) of subject. +If the call resulted in exceptions, this field contains the exceptions in a human readable format. -type: keyword -- -*`tls.server.x509.subject.organization`*:: -+ --- -List of organizations (O) of subject. +[[exported-fields-tls_detailed]] +== Detailed TLS fields -type: keyword +Detailed TLS-specific event fields. -example: Fastly, Inc. --- -*`tls.server.x509.subject.locality`*:: + + + +*`tls.client.x509.version`*:: + -- -List of locality names (L) +Version of x509 format. type: keyword -example: San Francisco +example: 3 -- -*`tls.server.x509.subject.province`*:: +*`tls.client.x509.issuer.province`*:: + -- Province or region within country. @@ -10831,59 +11750,44 @@ type: keyword -- -*`tls.server.x509.subject.state_or_province`*:: +*`tls.client.x509.subject.province`*:: + -- -List of state or province names (ST, S, or P) +Province or region within country. type: keyword -example: California - --- - -*`tls.server.x509.subject.country`*:: -+ -- -List of country (C) code -type: keyword - -example: US --- -*`tls.server.x509.public_key_algorithm`*:: +*`tls.server.x509.version`*:: + -- -Algorithm used to generate the public key. +Version of x509 format. type: keyword -example: RSA +example: 3 -- -*`tls.server.x509.public_key_size`*:: +*`tls.server.x509.issuer.province`*:: + -- -The size of the public key space in bits. - -type: long +Province or region within country. -example: 2048 +type: keyword -- -*`tls.server.x509.alternative_names`*:: +*`tls.server.x509.subject.province`*:: + -- -List of subject alternative names (SAN). Name types vary by certificate authority and certificate type but commonly contain IP addresses, DNS names (and wildcards), and email addresses. +Province or region within country. type: keyword -example: *.elastic.co - -- diff --git a/packetbeat/include/fields.go b/packetbeat/include/fields.go index 805706ca77f..1aca8872b4d 100644 --- a/packetbeat/include/fields.go +++ b/packetbeat/include/fields.go @@ -32,5 +32,5 @@ func init() { // AssetFieldsYml returns asset data. // This is the base64 encoded gzipped contents of fields.yml. func AssetFieldsYml() string { - return "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" + return "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" } diff --git a/packetbeat/protos/tls/_meta/fields.yml b/packetbeat/protos/tls/_meta/fields.yml index d34b6b5869b..bc7262a2141 100644 --- a/packetbeat/protos/tls/_meta/fields.yml +++ b/packetbeat/protos/tls/_meta/fields.yml @@ -19,125 +19,14 @@ description: Version of x509 format. example: 3 - - name: version_number - type: keyword - description: Version of x509 format. - example: 3 - - - name: serial_number - type: keyword - description: > - Unique serial number issued by the certificate authority. For consistency, if this value is alphanumeric, it should be - formatted without colons and uppercase characters. - example: 55FBB9C7DEBF09809D12CCAA - - - name: issuer.distinguished_name - type: keyword - description: Distinguished name (DN) of issuing certificate authority. - example: C=US, O=DigiCert Inc, OU=www.digicert.com, CN=DigiCert SHA2 High Assurance Server CA - - - name: issuer.common_name - type: keyword - description: List of common name (CN) of issuing certificate authority. - example: DigiCert SHA2 High Assurance Server CA - - - name: issuer.organizational_unit - type: keyword - description: List of organizational units (OU) of issuing certificate authority. - example: www.digicert.com - - - name: issuer.organization - type: keyword - description: List of organizations (O) of issuing certificate authority. - example: DigiCert Inc - - - name: issuer.locality - type: keyword - description: List of locality names (L) - example: Mountain View - - name: issuer.province type: keyword description: Province or region within country. - - name: issuer.state_or_province - type: keyword - description: List of state or province names (ST, S, or P) - example: California - - - name: issuer.country - type: keyword - description: List of country (C) codes - example: US - - - name: signature_algorithm - type: keyword - description: Identifier for certificate signature algorithm. Recommend using names found in Go Lang Crypto library (See https://github.com/golang/go/blob/go1.14/src/crypto/x509/x509.go#L337-L353). - example: SHA256-RSA - - - name: not_before - type: date - description: Time at which the certificate is first considered valid. - example: 2019-08-16T01:40:25Z - - - name: not_after - type: date - description: Time at which the certificate is no longer considered valid. - example: 2020-07-16T03:15:39Z - - - name: subject.distinguished_name - type: keyword - description: Distinguished name (DN) of the certificate subject entity. - example: C=US, ST=California, L=San Francisco, O=Fastly, Inc., CN=r2.shared.global.fastly.net - - - name: subject.common_name - type: keyword - description: List of common names (CN) of subject. - example: r2.shared.global.fastly.net - - - name: subject.organizational_unit - type: keyword - description: List of organizational units (OU) of subject. - - - name: subject.organization - type: keyword - description: List of organizations (O) of subject. - example: Fastly, Inc. - - - name: subject.locality - type: keyword - description: List of locality names (L) - example: San Francisco - - name: subject.province type: keyword description: Province or region within country. - - name: subject.state_or_province - type: keyword - description: List of state or province names (ST, S, or P) - example: California - - - name: subject.country - type: keyword - description: List of country (C) code - example: US - - - name: public_key_algorithm - type: keyword - description: Algorithm used to generate the public key. - example: RSA - - - name: public_key_size - type: long - description: The size of the public key space in bits. - example: 2048 - - - name: alternative_names - type: keyword - description: List of subject alternative names (SAN). Name types vary by certificate authority and certificate type but commonly contain IP addresses, DNS names (and wildcards), and email addresses. - example: '*.elastic.co' - # get rid of this when we upgrade to ECS 1.6 - name: server type: group @@ -151,125 +40,14 @@ description: Version of x509 format. example: 3 - - name: version_number - type: keyword - description: Version of x509 format. - example: 3 - - - name: serial_number - type: keyword - description: > - Unique serial number issued by the certificate authority. For consistency, if this value is alphanumeric, it should be - formatted without colons and uppercase characters. - example: 55FBB9C7DEBF09809D12CCAA - - - name: issuer.distinguished_name - type: keyword - description: Distinguished name (DN) of issuing certificate authority. - example: C=US, O=DigiCert Inc, OU=www.digicert.com, CN=DigiCert SHA2 High Assurance Server CA - - - name: issuer.common_name - type: keyword - description: List of common name (CN) of issuing certificate authority. - example: DigiCert SHA2 High Assurance Server CA - - - name: issuer.organizational_unit - type: keyword - description: List of organizational units (OU) of issuing certificate authority. - example: www.digicert.com - - - name: issuer.organization - type: keyword - description: List of organizations (O) of issuing certificate authority. - example: DigiCert Inc - - - name: issuer.locality - type: keyword - description: List of locality names (L) - example: Mountain View - - name: issuer.province type: keyword description: Province or region within country. - - name: issuer.state_or_province - type: keyword - description: List of state or province names (ST, S, or P) - example: California - - - name: issuer.country - type: keyword - description: List of country (C) codes - example: US - - - name: signature_algorithm - type: keyword - description: Identifier for certificate signature algorithm. Recommend using names found in Go Lang Crypto library (See https://github.com/golang/go/blob/go1.14/src/crypto/x509/x509.go#L337-L353). - example: SHA256-RSA - - - name: not_before - type: date - description: Time at which the certificate is first considered valid. - example: 2019-08-16T01:40:25Z - - - name: not_after - type: date - description: Time at which the certificate is no longer considered valid. - example: 2020-07-16T03:15:39Z - - - name: subject.distinguished_name - type: keyword - description: Distinguished name (DN) of the certificate subject entity. - example: C=US, ST=California, L=San Francisco, O=Fastly, Inc., CN=r2.shared.global.fastly.net - - - name: subject.common_name - type: keyword - description: List of common names (CN) of subject. - example: r2.shared.global.fastly.net - - - name: subject.organizational_unit - type: keyword - description: List of organizational units (OU) of subject. - - - name: subject.organization - type: keyword - description: List of organizations (O) of subject. - example: Fastly, Inc. - - - name: subject.locality - type: keyword - description: List of locality names (L) - example: San Francisco - - name: subject.province type: keyword description: Province or region within country. - - name: subject.state_or_province - type: keyword - description: List of state or province names (ST, S, or P) - example: California - - - name: subject.country - type: keyword - description: List of country (C) code - example: US - - - name: public_key_algorithm - type: keyword - description: Algorithm used to generate the public key. - example: RSA - - - name: public_key_size - type: long - description: The size of the public key space in bits. - example: 2048 - - - name: alternative_names - type: keyword - description: List of subject alternative names (SAN). Name types vary by certificate authority and certificate type but commonly contain IP addresses, DNS names (and wildcards), and email addresses. - example: '*.elastic.co' - - name: detailed type: group default_fields: false diff --git a/packetbeat/protos/tls/fields.go b/packetbeat/protos/tls/fields.go index 921084395fb..6ca714511c2 100644 --- a/packetbeat/protos/tls/fields.go +++ b/packetbeat/protos/tls/fields.go @@ -32,5 +32,5 @@ func init() { // AssetTls returns asset data. // This is the base64 encoded gzipped contents of protos/tls. func AssetTls() string { - return "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" + return "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" } diff --git a/winlogbeat/_meta/fields.common.yml b/winlogbeat/_meta/fields.common.yml index 3a399300f1e..59b2eafe6b6 100644 --- a/winlogbeat/_meta/fields.common.yml +++ b/winlogbeat/_meta/fields.common.yml @@ -4,13 +4,6 @@ Fields from the Windows Event Log. fields: - - name: log.file.path - type: keyword - required: false - description: > - The name of the file the event was read from when Winlogbeat is - reading directly from an .evtx file. - - name: event.original overwrite: true description: > diff --git a/winlogbeat/docs/fields.asciidoc b/winlogbeat/docs/fields.asciidoc index 0447795cf9a..4fabeb1173d 100644 --- a/winlogbeat/docs/fields.asciidoc +++ b/winlogbeat/docs/fields.asciidoc @@ -97,16 +97,6 @@ Metadata from cloud providers added by the add_cloud_metadata processor. -*`cloud.project.id`*:: -+ --- -Name of the project in Google Cloud. - - -example: project-x - --- - *`cloud.image.id`*:: + -- @@ -291,6 +281,18 @@ The agent fields contain the data about the software entity, if any, that collec Examples include Beats. Agents may also run on observers. ECS agent.* fields shall be populated with details of the agent running on the host or observer where the event happened or the measurement was taken. +*`agent.build.original`*:: ++ +-- +Extended build information for the agent. +This field is intended to contain any build information that a data source may provide, no specific formatting is required. + +type: keyword + +example: metricbeat version 7.6.0 (amd64), libbeat 7.6.0 [6a23e8f8f30f5001ba344e4e54d8d9cb82cb107c built 2020-02-05 23:10:10 +0000 UTC] + +-- + *`agent.ephemeral_id`*:: + -- @@ -332,7 +334,7 @@ example: foo + -- Type of the agent. -The agent type stays always the same and should be given by the agent used. In case of Filebeat the agent would always be Filebeat also if two Filebeat instances are run on the same machine. +The agent type always stays the same and should be given by the agent used. In case of Filebeat the agent would always be Filebeat also if two Filebeat instances are run on the same machine. type: keyword @@ -548,8 +550,7 @@ example: Quebec *`client.ip`*:: + -- -IP address of the client. -Can be one or multiple IPv4 or IPv6 addresses. +IP address of the client (IPv4 or IPv6). type: ip @@ -612,19 +613,19 @@ format: string + -- The highest registered client domain, stripped of the subdomain. -For example, the registered domain for "foo.google.com" is "google.com". +For example, the registered domain for "foo.example.com" is "example.com". This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last two labels will not work well for TLDs such as "co.uk". type: keyword -example: google.com +example: example.com -- *`client.top_level_domain`*:: + -- -The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for google.com is "com". +The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for example.com is "com". This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last label will not work well for effective TLDs such as "co.uk". type: keyword @@ -711,7 +712,7 @@ type: keyword *`client.user.id`*:: + -- -Unique identifiers of the user. +Unique identifier of the user. type: keyword @@ -735,6 +736,17 @@ type: text -- +*`client.user.roles`*:: ++ +-- +Array of user roles at the time of the event. + +type: keyword + +example: ["kibana_admin", "reporting_user"] + +-- + [float] === cloud @@ -753,6 +765,18 @@ example: 666777888999 -- +*`cloud.account.name`*:: ++ +-- +The cloud account name or alias used to identify different entities in a multi-tenant environment. +Examples: AWS account name, Google Cloud ORG display name. + +type: keyword + +example: elastic-dev + +-- + *`cloud.availability_zone`*:: + -- @@ -795,6 +819,30 @@ example: t2.medium -- +*`cloud.project.id`*:: ++ +-- +The cloud project identifier. +Examples: Google Cloud Project id, Azure Project id. + +type: keyword + +example: my-project + +-- + +*`cloud.project.name`*:: ++ +-- +The cloud project name. +Examples: Google Cloud Project name, Azure Project name. + +type: keyword + +example: my project + +-- + *`cloud.provider`*:: + -- @@ -1105,8 +1153,7 @@ example: Quebec *`destination.ip`*:: + -- -IP address of the destination. -Can be one or multiple IPv4 or IPv6 addresses. +IP address of the destination (IPv4 or IPv6). type: ip @@ -1169,19 +1216,19 @@ format: string + -- The highest registered destination domain, stripped of the subdomain. -For example, the registered domain for "foo.google.com" is "google.com". +For example, the registered domain for "foo.example.com" is "example.com". This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last two labels will not work well for TLDs such as "co.uk". type: keyword -example: google.com +example: example.com -- *`destination.top_level_domain`*:: + -- -The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for google.com is "com". +The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for example.com is "com". This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last label will not work well for effective TLDs such as "co.uk". type: keyword @@ -1268,7 +1315,7 @@ type: keyword *`destination.user.id`*:: + -- -Unique identifiers of the user. +Unique identifier of the user. type: keyword @@ -1292,6 +1339,17 @@ type: text -- +*`destination.user.roles`*:: ++ +-- +Array of user roles at the time of the event. + +type: keyword + +example: ["kibana_admin", "reporting_user"] + +-- + [float] === dll @@ -1420,6 +1478,17 @@ example: C:\Windows\System32\kernel32.dll -- +*`dll.pe.architecture`*:: ++ +-- +CPU architecture target for the file. + +type: keyword + +example: x64 + +-- + *`dll.pe.company`*:: + -- @@ -1453,6 +1522,18 @@ example: 6.3.9600.17415 -- +*`dll.pe.imphash`*:: ++ +-- +A hash of the imports in a PE file. An imphash -- or import hash -- can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. +Learn more at https://www.fireeye.com/blog/threat-research/2014/01/tracking-malware-import-hashing.html. + +type: keyword + +example: 0c6803c4e922103c4dca5963aad36ddf + +-- + *`dll.pe.original_file_name`*:: + -- @@ -1524,7 +1605,7 @@ If a chain of CNAME is being resolved, each answer's `name` should be the one th type: keyword -example: www.google.com +example: www.example.com -- @@ -1603,7 +1684,7 @@ If the name field contains non-printable characters (below 32 or above 126), tho type: keyword -example: www.google.com +example: www.example.com -- @@ -1611,12 +1692,12 @@ example: www.google.com + -- The highest registered domain, stripped of the subdomain. -For example, the registered domain for "foo.google.com" is "google.com". +For example, the registered domain for "foo.example.com" is "example.com". This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last two labels will not work well for TLDs such as "co.uk". type: keyword -example: google.com +example: example.com -- @@ -1635,7 +1716,7 @@ example: www *`dns.question.top_level_domain`*:: + -- -The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for google.com is "com". +The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for example.com is "com". This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last label will not work well for effective TLDs such as "co.uk". type: keyword @@ -1752,6 +1833,8 @@ The stack trace of this error in plain text. type: keyword +Field is not indexed. + -- *`error.stack_trace.text`*:: @@ -1934,6 +2017,8 @@ type: keyword example: Sep 19 08:26:10 host CEF:0|Security| threatmanager|1.0|100| worm successfully stopped|10|src=10.0.0.1 dst=2.1.2.2spt=1232 +Field is not indexed. + -- *`event.outcome`*:: @@ -1963,6 +2048,18 @@ example: kernel -- +*`event.reason`*:: ++ +-- +Reason why this event happened, according to the source. +This describes the why of a particular action or outcome captured in the event. Where `event.action` captures the action from the event, `event.reason` describes why that action was taken. For example, a web proxy with an `event.action` which denied the request may also populate `event.reason` with the reason why (e.g. `blocked site`). + +type: keyword + +example: Terminated an unexpected process + +-- + *`event.reference`*:: + -- @@ -1971,7 +2068,7 @@ This URL links to a static definition of the this event. Alert events, indicated type: keyword -example: https://system.vendor.com/event/#0001234 +example: https://system.example.com/event/#0001234 -- @@ -2055,11 +2152,11 @@ type: keyword + -- URL linking to an external system to continue investigation of this event. -This URL links to another system where in-depth investigation of the specific occurence of this event can take place. Alert events, indicated by `event.kind:alert`, are a common use case for this field. +This URL links to another system where in-depth investigation of the specific occurrence of this event can take place. Alert events, indicated by `event.kind:alert`, are a common use case for this field. type: keyword -example: https://mysystem.mydomain.com/alert/5271dedb-f5b0-4218-87f0-4ac4870a38fe +example: https://mysystem.example.com/alert/5271dedb-f5b0-4218-87f0-4ac4870a38fe -- @@ -2353,6 +2450,17 @@ type: text -- +*`file.pe.architecture`*:: ++ +-- +CPU architecture target for the file. + +type: keyword + +example: x64 + +-- + *`file.pe.company`*:: + -- @@ -2386,6 +2494,18 @@ example: 6.3.9600.17415 -- +*`file.pe.imphash`*:: ++ +-- +A hash of the imports in a PE file. An imphash -- or import hash -- can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. +Learn more at https://www.fireeye.com/blog/threat-research/2014/01/tracking-malware-import-hashing.html. + +type: keyword + +example: 0c6803c4e922103c4dca5963aad36ddf + +-- + *`file.pe.original_file_name`*:: + -- @@ -2458,211 +2578,278 @@ example: 1001 -- -[float] -=== geo +*`file.x509.alternative_names`*:: ++ +-- +List of subject alternative names (SAN). Name types vary by certificate authority and certificate type but commonly contain IP addresses, DNS names (and wildcards), and email addresses. -Geo fields can carry data about a specific location related to an event. -This geolocation information can be derived from techniques such as Geo IP, or be user-supplied. +type: keyword +example: *.elastic.co -*`geo.city_name`*:: +-- + +*`file.x509.issuer.common_name`*:: + -- -City name. +List of common name (CN) of issuing certificate authority. type: keyword -example: Montreal +example: Example SHA2 High Assurance Server CA -- -*`geo.continent_name`*:: +*`file.x509.issuer.country`*:: + -- -Name of the continent. +List of country (C) codes type: keyword -example: North America +example: US -- -*`geo.country_iso_code`*:: +*`file.x509.issuer.distinguished_name`*:: + -- -Country ISO code. +Distinguished name (DN) of issuing certificate authority. type: keyword -example: CA +example: C=US, O=Example Inc, OU=www.example.com, CN=Example SHA2 High Assurance Server CA -- -*`geo.country_name`*:: +*`file.x509.issuer.locality`*:: + -- -Country name. +List of locality names (L) type: keyword -example: Canada +example: Mountain View -- -*`geo.location`*:: +*`file.x509.issuer.organization`*:: + -- -Longitude and latitude. +List of organizations (O) of issuing certificate authority. -type: geo_point +type: keyword -example: { "lon": -73.614830, "lat": 45.505918 } +example: Example Inc -- -*`geo.name`*:: +*`file.x509.issuer.organizational_unit`*:: + -- -User-defined description of a location, at the level of granularity they care about. -Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. -Not typically used in automated geolocation. +List of organizational units (OU) of issuing certificate authority. type: keyword -example: boston-dc +example: www.example.com -- -*`geo.region_iso_code`*:: +*`file.x509.issuer.state_or_province`*:: + -- -Region ISO code. +List of state or province names (ST, S, or P) type: keyword -example: CA-QC +example: California -- -*`geo.region_name`*:: +*`file.x509.not_after`*:: + -- -Region name. +Time at which the certificate is no longer considered valid. -type: keyword +type: date -example: Quebec +example: 2020-07-16 03:15:39+00:00 -- -[float] -=== group +*`file.x509.not_before`*:: ++ +-- +Time at which the certificate is first considered valid. -The group fields are meant to represent groups that are relevant to the event. +type: date +example: 2019-08-16 01:40:25+00:00 -*`group.domain`*:: +-- + +*`file.x509.public_key_algorithm`*:: + -- -Name of the directory the group is a member of. -For example, an LDAP or Active Directory domain name. +Algorithm used to generate the public key. type: keyword +example: RSA + -- -*`group.id`*:: +*`file.x509.public_key_curve`*:: + -- -Unique identifier for the group on the system/platform. +The curve used by the elliptic curve public key algorithm. This is algorithm specific. type: keyword +example: nistp521 + -- -*`group.name`*:: +*`file.x509.public_key_exponent`*:: + -- -Name of the group. +Exponent used to derive the public key. This is algorithm specific. + +type: long + +example: 65537 + +Field is not indexed. + +-- + +*`file.x509.public_key_size`*:: ++ +-- +The size of the public key space in bits. + +type: long + +example: 2048 + +-- + +*`file.x509.serial_number`*:: ++ +-- +Unique serial number issued by the certificate authority. For consistency, if this value is alphanumeric, it should be formatted without colons and uppercase characters. type: keyword +example: 55FBB9C7DEBF09809D12CCAA + -- -[float] -=== hash +*`file.x509.signature_algorithm`*:: ++ +-- +Identifier for certificate signature algorithm. We recommend using names found in Go Lang Crypto library. See https://github.com/golang/go/blob/go1.14/src/crypto/x509/x509.go#L337-L353. -The hash fields represent different hash algorithms and their values. -Field names for common hashes (e.g. MD5, SHA1) are predefined. Add fields for other hashes by lowercasing the hash algorithm name and using underscore separators as appropriate (snake case, e.g. sha3_512). +type: keyword +example: SHA256-RSA -*`hash.md5`*:: +-- + +*`file.x509.subject.common_name`*:: + -- -MD5 hash. +List of common names (CN) of subject. type: keyword +example: shared.global.example.net + -- -*`hash.sha1`*:: +*`file.x509.subject.country`*:: + -- -SHA1 hash. +List of country (C) code type: keyword +example: US + -- -*`hash.sha256`*:: +*`file.x509.subject.distinguished_name`*:: + -- -SHA256 hash. +Distinguished name (DN) of the certificate subject entity. type: keyword +example: C=US, ST=California, L=San Francisco, O=Example, Inc., CN=shared.global.example.net + -- -*`hash.sha512`*:: +*`file.x509.subject.locality`*:: + -- -SHA512 hash. +List of locality names (L) type: keyword +example: San Francisco + -- -[float] -=== host +*`file.x509.subject.organization`*:: ++ +-- +List of organizations (O) of subject. -A host is defined as a general computing instance. -ECS host.* fields should be populated with details about the host on which the event happened, or from which the measurement was taken. Host types include hardware, virtual machines, Docker containers, and Kubernetes nodes. +type: keyword +example: Example, Inc. -*`host.architecture`*:: +-- + +*`file.x509.subject.organizational_unit`*:: + -- -Operating system architecture. +List of organizational units (OU) of subject. type: keyword -example: x86_64 +-- + +*`file.x509.subject.state_or_province`*:: ++ +-- +List of state or province names (ST, S, or P) + +type: keyword + +example: California -- -*`host.domain`*:: +*`file.x509.version_number`*:: + -- -Name of the domain of which the host is a member. -For example, on Windows this could be the host's Active Directory domain or NetBIOS domain name. For Linux this could be the domain of the host's LDAP provider. +Version of x509 format. type: keyword -example: CONTOSO +example: 3 -- -*`host.geo.city_name`*:: +[float] +=== geo + +Geo fields can carry data about a specific location related to an event. +This geolocation information can be derived from techniques such as Geo IP, or be user-supplied. + + +*`geo.city_name`*:: + -- City name. @@ -2673,7 +2860,7 @@ example: Montreal -- -*`host.geo.continent_name`*:: +*`geo.continent_name`*:: + -- Name of the continent. @@ -2684,7 +2871,7 @@ example: North America -- -*`host.geo.country_iso_code`*:: +*`geo.country_iso_code`*:: + -- Country ISO code. @@ -2695,7 +2882,7 @@ example: CA -- -*`host.geo.country_name`*:: +*`geo.country_name`*:: + -- Country name. @@ -2706,7 +2893,7 @@ example: Canada -- -*`host.geo.location`*:: +*`geo.location`*:: + -- Longitude and latitude. @@ -2717,7 +2904,7 @@ example: { "lon": -73.614830, "lat": 45.505918 } -- -*`host.geo.name`*:: +*`geo.name`*:: + -- User-defined description of a location, at the level of granularity they care about. @@ -2730,7 +2917,7 @@ example: boston-dc -- -*`host.geo.region_iso_code`*:: +*`geo.region_iso_code`*:: + -- Region ISO code. @@ -2741,7 +2928,7 @@ example: CA-QC -- -*`host.geo.region_name`*:: +*`geo.region_name`*:: + -- Region name. @@ -2752,20 +2939,217 @@ example: Quebec -- -*`host.hostname`*:: +[float] +=== group + +The group fields are meant to represent groups that are relevant to the event. + + +*`group.domain`*:: + -- -Hostname of the host. -It normally contains what the `hostname` command returns on the host machine. +Name of the directory the group is a member of. +For example, an LDAP or Active Directory domain name. type: keyword -- -*`host.id`*:: +*`group.id`*:: + -- -Unique host id. +Unique identifier for the group on the system/platform. + +type: keyword + +-- + +*`group.name`*:: ++ +-- +Name of the group. + +type: keyword + +-- + +[float] +=== hash + +The hash fields represent different hash algorithms and their values. +Field names for common hashes (e.g. MD5, SHA1) are predefined. Add fields for other hashes by lowercasing the hash algorithm name and using underscore separators as appropriate (snake case, e.g. sha3_512). + + +*`hash.md5`*:: ++ +-- +MD5 hash. + +type: keyword + +-- + +*`hash.sha1`*:: ++ +-- +SHA1 hash. + +type: keyword + +-- + +*`hash.sha256`*:: ++ +-- +SHA256 hash. + +type: keyword + +-- + +*`hash.sha512`*:: ++ +-- +SHA512 hash. + +type: keyword + +-- + +[float] +=== host + +A host is defined as a general computing instance. +ECS host.* fields should be populated with details about the host on which the event happened, or from which the measurement was taken. Host types include hardware, virtual machines, Docker containers, and Kubernetes nodes. + + +*`host.architecture`*:: ++ +-- +Operating system architecture. + +type: keyword + +example: x86_64 + +-- + +*`host.domain`*:: ++ +-- +Name of the domain of which the host is a member. +For example, on Windows this could be the host's Active Directory domain or NetBIOS domain name. For Linux this could be the domain of the host's LDAP provider. + +type: keyword + +example: CONTOSO + +-- + +*`host.geo.city_name`*:: ++ +-- +City name. + +type: keyword + +example: Montreal + +-- + +*`host.geo.continent_name`*:: ++ +-- +Name of the continent. + +type: keyword + +example: North America + +-- + +*`host.geo.country_iso_code`*:: ++ +-- +Country ISO code. + +type: keyword + +example: CA + +-- + +*`host.geo.country_name`*:: ++ +-- +Country name. + +type: keyword + +example: Canada + +-- + +*`host.geo.location`*:: ++ +-- +Longitude and latitude. + +type: geo_point + +example: { "lon": -73.614830, "lat": 45.505918 } + +-- + +*`host.geo.name`*:: ++ +-- +User-defined description of a location, at the level of granularity they care about. +Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. +Not typically used in automated geolocation. + +type: keyword + +example: boston-dc + +-- + +*`host.geo.region_iso_code`*:: ++ +-- +Region ISO code. + +type: keyword + +example: CA-QC + +-- + +*`host.geo.region_name`*:: ++ +-- +Region name. + +type: keyword + +example: Quebec + +-- + +*`host.hostname`*:: ++ +-- +Hostname of the host. +It normally contains what the `hostname` command returns on the host machine. + +type: keyword + +-- + +*`host.id`*:: ++ +-- +Unique host id. As hostname is not always unique, use values that are meaningful in your environment. Example: The current usage of `beat.name`. @@ -2980,7 +3364,7 @@ type: keyword *`host.user.id`*:: + -- -Unique identifiers of the user. +Unique identifier of the user. type: keyword @@ -3004,6 +3388,17 @@ type: text -- +*`host.user.roles`*:: ++ +-- +Array of user roles at the time of the event. + +type: keyword + +example: ["kibana_admin", "reporting_user"] + +-- + [float] === http @@ -3058,11 +3453,13 @@ format: bytes + -- HTTP request method. -The field value must be normalized to lowercase for querying. See the documentation section "Implementing ECS". +Prior to ECS 1.6.0 the following guidance was provided: +"The field value must be normalized to lowercase for querying." +As of ECS 1.6.0, the guidance is deprecated because the original case of the method may be useful in anomaly detection. Original case will be mandated in ECS 2.0.0 type: keyword -example: get, post, put +example: GET, POST, PUT, PoST -- @@ -3192,6 +3589,18 @@ The log.* fields are typically populated with details about the logging mechanis The details specific to your event source are typically not logged under `log.*`, but rather in `event.*` or in other ECS fields. +*`log.file.path`*:: ++ +-- +Full path to the log file this event came from, including the file name. It should include the drive letter, when appropriate. +If the event wasn't read from a log file, do not populate this field. + +type: keyword + +example: /var/log/fun-times.log + +-- + *`log.level`*:: + -- @@ -3230,7 +3639,8 @@ example: 42 *`log.origin.file.name`*:: + -- -The name of the file containing the source code which originated the log event. Note that this is not the name of the log file. +The name of the file containing the source code which originated the log event. +Note that this field is not meant to capture the log file. The correct field to capture the log file is `log.file.path`. type: keyword @@ -3260,6 +3670,8 @@ type: keyword example: Sep 19 08:26:10 localhost My log +Field is not indexed. + -- *`log.syslog`*:: @@ -4228,6 +4640,17 @@ example: 1.12.9 These fields contain Windows Portable Executable (PE) metadata. +*`pe.architecture`*:: ++ +-- +CPU architecture target for the file. + +type: keyword + +example: x64 + +-- + *`pe.company`*:: + -- @@ -4261,6 +4684,18 @@ example: 6.3.9600.17415 -- +*`pe.imphash`*:: ++ +-- +A hash of the imports in a PE file. An imphash -- or import hash -- can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. +Learn more at https://www.fireeye.com/blog/threat-research/2014/01/tracking-malware-import-hashing.html. + +type: keyword + +example: 0c6803c4e922103c4dca5963aad36ddf + +-- + *`pe.original_file_name`*:: + -- @@ -4492,12 +4927,12 @@ type: text *`process.parent.args`*:: + -- -Array of process arguments. +Array of process arguments, starting with the absolute path to the executable. May be filtered to protect sensitive information. type: keyword -example: ['ssh', '-l', 'user', '10.0.0.16'] +example: ['/usr/bin/ssh', '-l', 'user', '10.0.0.16'] -- @@ -4688,49 +5123,127 @@ type: text -- -*`process.parent.pgid`*:: +*`process.parent.pe.architecture`*:: + -- -Identifier of the group of processes the process belongs to. +CPU architecture target for the file. -type: long +type: keyword -format: string +example: x64 -- -*`process.parent.pid`*:: +*`process.parent.pe.company`*:: + -- -Process id. - -type: long +Internal company name of the file, provided at compile-time. -example: 4242 +type: keyword -format: string +example: Microsoft Corporation -- -*`process.parent.ppid`*:: +*`process.parent.pe.description`*:: + -- -Parent process' pid. - -type: long +Internal description of the file, provided at compile-time. -example: 4241 +type: keyword -format: string +example: Paint -- -*`process.parent.start`*:: +*`process.parent.pe.file_version`*:: + -- -The time the process started. +Internal version of the file, provided at compile-time. -type: date +type: keyword + +example: 6.3.9600.17415 + +-- + +*`process.parent.pe.imphash`*:: ++ +-- +A hash of the imports in a PE file. An imphash -- or import hash -- can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. +Learn more at https://www.fireeye.com/blog/threat-research/2014/01/tracking-malware-import-hashing.html. + +type: keyword + +example: 0c6803c4e922103c4dca5963aad36ddf + +-- + +*`process.parent.pe.original_file_name`*:: ++ +-- +Internal name of the file, provided at compile-time. + +type: keyword + +example: MSPAINT.EXE + +-- + +*`process.parent.pe.product`*:: ++ +-- +Internal product name of the file, provided at compile-time. + +type: keyword + +example: Microsoft® Windows® Operating System + +-- + +*`process.parent.pgid`*:: ++ +-- +Identifier of the group of processes the process belongs to. + +type: long + +format: string + +-- + +*`process.parent.pid`*:: ++ +-- +Process id. + +type: long + +example: 4242 + +format: string + +-- + +*`process.parent.ppid`*:: ++ +-- +Parent process' pid. + +type: long + +example: 4241 + +format: string + +-- + +*`process.parent.start`*:: ++ +-- +The time the process started. + +type: date example: 2016-05-23T08:05:34.853Z @@ -4806,6 +5319,17 @@ type: text -- +*`process.pe.architecture`*:: ++ +-- +CPU architecture target for the file. + +type: keyword + +example: x64 + +-- + *`process.pe.company`*:: + -- @@ -4839,6 +5363,18 @@ example: 6.3.9600.17415 -- +*`process.pe.imphash`*:: ++ +-- +A hash of the imports in a PE file. An imphash -- or import hash -- can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. +Learn more at https://www.fireeye.com/blog/threat-research/2014/01/tracking-malware-import-hashing.html. + +type: keyword + +example: 0c6803c4e922103c4dca5963aad36ddf + +-- + *`process.pe.original_file_name`*:: + -- @@ -5081,6 +5617,15 @@ type: keyword -- +*`related.hosts`*:: ++ +-- +All hostnames or other host identifiers seen on your event. Example identifiers include FQDNs, domain names, workstation names, or aliases. + +type: keyword + +-- + *`related.ip`*:: + -- @@ -5379,8 +5924,7 @@ example: Quebec *`server.ip`*:: + -- -IP address of the server. -Can be one or multiple IPv4 or IPv6 addresses. +IP address of the server (IPv4 or IPv6). type: ip @@ -5443,19 +5987,19 @@ format: string + -- The highest registered server domain, stripped of the subdomain. -For example, the registered domain for "foo.google.com" is "google.com". +For example, the registered domain for "foo.example.com" is "example.com". This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last two labels will not work well for TLDs such as "co.uk". type: keyword -example: google.com +example: example.com -- *`server.top_level_domain`*:: + -- -The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for google.com is "com". +The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for example.com is "com". This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last label will not work well for effective TLDs such as "co.uk". type: keyword @@ -5542,7 +6086,7 @@ type: keyword *`server.user.id`*:: + -- -Unique identifiers of the user. +Unique identifier of the user. type: keyword @@ -5566,6 +6110,17 @@ type: text -- +*`server.user.roles`*:: ++ +-- +Array of user roles at the time of the event. + +type: keyword + +example: ["kibana_admin", "reporting_user"] + +-- + [float] === service @@ -5819,8 +6374,7 @@ example: Quebec *`source.ip`*:: + -- -IP address of the source. -Can be one or multiple IPv4 or IPv6 addresses. +IP address of the source (IPv4 or IPv6). type: ip @@ -5883,19 +6437,19 @@ format: string + -- The highest registered source domain, stripped of the subdomain. -For example, the registered domain for "foo.google.com" is "google.com". +For example, the registered domain for "foo.example.com" is "example.com". This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last two labels will not work well for TLDs such as "co.uk". type: keyword -example: google.com +example: example.com -- *`source.top_level_domain`*:: + -- -The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for google.com is "com". +The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for example.com is "com". This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last label will not work well for effective TLDs such as "co.uk". type: keyword @@ -5982,7 +6536,7 @@ type: keyword *`source.user.id`*:: + -- -Unique identifiers of the user. +Unique identifier of the user. type: keyword @@ -6006,10 +6560,21 @@ type: text -- +*`source.user.roles`*:: ++ +-- +Array of user roles at the time of the event. + +type: keyword + +example: ["kibana_admin", "reporting_user"] + +-- + [float] === threat -Fields to classify events and alerts according to a threat taxonomy such as the Mitre ATT&CK framework. +Fields to classify events and alerts according to a threat taxonomy such as the MITRE ATT&CK® framework. These fields are for users to classify alerts from all of their sources (e.g. IDS, NGFW, etc.) within a common taxonomy. The threat.tactic.* are meant to capture the high level category of the threat (e.g. "impact"). The threat.technique.* fields are meant to capture which kind of approach is used by this detected threat, to accomplish the goal (e.g. "endpoint denial of service"). @@ -6027,7 +6592,7 @@ example: MITRE ATT&CK *`threat.tactic.id`*:: + -- -The id of tactic used by this threat. You can use the Mitre ATT&CK Matrix Tactic categorization, for example. (ex. https://attack.mitre.org/tactics/TA0040/ ) +The id of tactic used by this threat. You can use a MITRE ATT&CK® tactic, for example. (ex. https://attack.mitre.org/tactics/TA0040/ ) type: keyword @@ -6038,7 +6603,7 @@ example: TA0040 *`threat.tactic.name`*:: + -- -Name of the type of tactic used by this threat. You can use the Mitre ATT&CK Matrix Tactic categorization, for example. (ex. https://attack.mitre.org/tactics/TA0040/ ) +Name of the type of tactic used by this threat. You can use a MITRE ATT&CK® tactic, for example. (ex. https://attack.mitre.org/tactics/TA0040/) type: keyword @@ -6049,7 +6614,7 @@ example: impact *`threat.tactic.reference`*:: + -- -The reference url of tactic used by this threat. You can use the Mitre ATT&CK Matrix Tactic categorization, for example. (ex. https://attack.mitre.org/tactics/TA0040/ ) +The reference url of tactic used by this threat. You can use a MITRE ATT&CK® tactic, for example. (ex. https://attack.mitre.org/tactics/TA0040/ ) type: keyword @@ -6060,7 +6625,7 @@ example: https://attack.mitre.org/tactics/TA0040/ *`threat.technique.id`*:: + -- -The id of technique used by this tactic. You can use the Mitre ATT&CK Matrix Tactic categorization, for example. (ex. https://attack.mitre.org/techniques/T1499/ ) +The id of technique used by this threat. You can use a MITRE ATT&CK® technique, for example. (ex. https://attack.mitre.org/techniques/T1499/) type: keyword @@ -6071,11 +6636,11 @@ example: T1499 *`threat.technique.name`*:: + -- -The name of technique used by this tactic. You can use the Mitre ATT&CK Matrix Tactic categorization, for example. (ex. https://attack.mitre.org/techniques/T1499/ ) +The name of technique used by this threat. You can use a MITRE ATT&CK® technique, for example. (ex. https://attack.mitre.org/techniques/T1499/) type: keyword -example: endpoint denial of service +example: Endpoint Denial of Service -- @@ -6089,7 +6654,7 @@ type: text *`threat.technique.reference`*:: + -- -The reference url of technique used by this tactic. You can use the Mitre ATT&CK Matrix Tactic categorization, for example. (ex. https://attack.mitre.org/techniques/T1499/ ) +The reference url of technique used by this threat. You can use a MITRE ATT&CK® technique, for example. (ex. https://attack.mitre.org/techniques/T1499/ ) type: keyword @@ -6176,7 +6741,7 @@ Distinguished name of subject of the issuer of the x.509 certificate presented b type: keyword -example: CN=MyDomain Root CA, OU=Infrastructure Team, DC=mydomain, DC=com +example: CN=Example Root CA, OU=Infrastructure Team, DC=example, DC=com -- @@ -6216,7 +6781,7 @@ example: 1970-01-01T00:00:00.000Z *`tls.client.server_name`*:: + -- -Also called an SNI, this tells the server which hostname to which the client is attempting to connect. When this value is available, it should get copied to `destination.domain`. +Also called an SNI, this tells the server which hostname to which the client is attempting to connect to. When this value is available, it should get copied to `destination.domain`. type: keyword @@ -6231,7 +6796,7 @@ Distinguished name of subject of the x.509 certificate presented by the client. type: keyword -example: CN=myclient, OU=Documentation Team, DC=mydomain, DC=com +example: CN=myclient, OU=Documentation Team, DC=example, DC=com -- @@ -6246,319 +6811,859 @@ example: ['TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384', 'TLS_ECDHE_ECDSA_WITH_AES_256 -- -*`tls.curve`*:: +*`tls.client.x509.alternative_names`*:: + -- -String indicating the curve used for the given cipher, when applicable. +List of subject alternative names (SAN). Name types vary by certificate authority and certificate type but commonly contain IP addresses, DNS names (and wildcards), and email addresses. type: keyword -example: secp256r1 +example: *.elastic.co -- -*`tls.established`*:: +*`tls.client.x509.issuer.common_name`*:: + -- -Boolean flag indicating if the TLS negotiation was successful and transitioned to an encrypted tunnel. +List of common name (CN) of issuing certificate authority. -type: boolean +type: keyword + +example: Example SHA2 High Assurance Server CA -- -*`tls.next_protocol`*:: +*`tls.client.x509.issuer.country`*:: + -- -String indicating the protocol being tunneled. Per the values in the IANA registry (https://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml#alpn-protocol-ids), this string should be lower case. +List of country (C) codes type: keyword -example: http/1.1 +example: US -- -*`tls.resumed`*:: +*`tls.client.x509.issuer.distinguished_name`*:: + -- -Boolean flag indicating if this TLS connection was resumed from an existing TLS negotiation. +Distinguished name (DN) of issuing certificate authority. -type: boolean +type: keyword + +example: C=US, O=Example Inc, OU=www.example.com, CN=Example SHA2 High Assurance Server CA -- -*`tls.server.certificate`*:: +*`tls.client.x509.issuer.locality`*:: + -- -PEM-encoded stand-alone certificate offered by the server. This is usually mutually-exclusive of `server.certificate_chain` since this value also exists in that list. +List of locality names (L) type: keyword -example: MII... +example: Mountain View -- -*`tls.server.certificate_chain`*:: +*`tls.client.x509.issuer.organization`*:: + -- -Array of PEM-encoded certificates that make up the certificate chain offered by the server. This is usually mutually-exclusive of `server.certificate` since that value should be the first certificate in the chain. +List of organizations (O) of issuing certificate authority. type: keyword -example: ['MII...', 'MII...'] +example: Example Inc -- -*`tls.server.hash.md5`*:: +*`tls.client.x509.issuer.organizational_unit`*:: + -- -Certificate fingerprint using the MD5 digest of DER-encoded version of certificate offered by the server. For consistency with other hash values, this value should be formatted as an uppercase hash. +List of organizational units (OU) of issuing certificate authority. type: keyword -example: 0F76C7F2C55BFD7D8E8B8F4BFBF0C9EC +example: www.example.com -- -*`tls.server.hash.sha1`*:: +*`tls.client.x509.issuer.state_or_province`*:: + -- -Certificate fingerprint using the SHA1 digest of DER-encoded version of certificate offered by the server. For consistency with other hash values, this value should be formatted as an uppercase hash. +List of state or province names (ST, S, or P) type: keyword -example: 9E393D93138888D288266C2D915214D1D1CCEB2A +example: California -- -*`tls.server.hash.sha256`*:: +*`tls.client.x509.not_after`*:: + -- -Certificate fingerprint using the SHA256 digest of DER-encoded version of certificate offered by the server. For consistency with other hash values, this value should be formatted as an uppercase hash. +Time at which the certificate is no longer considered valid. -type: keyword +type: date -example: 0687F666A054EF17A08E2F2162EAB4CBC0D265E1D7875BE74BF3C712CA92DAF0 +example: 2020-07-16 03:15:39+00:00 -- -*`tls.server.issuer`*:: +*`tls.client.x509.not_before`*:: + -- -Subject of the issuer of the x.509 certificate presented by the server. +Time at which the certificate is first considered valid. -type: keyword +type: date -example: CN=MyDomain Root CA, OU=Infrastructure Team, DC=mydomain, DC=com +example: 2019-08-16 01:40:25+00:00 -- -*`tls.server.ja3s`*:: +*`tls.client.x509.public_key_algorithm`*:: + -- -A hash that identifies servers based on how they perform an SSL/TLS handshake. +Algorithm used to generate the public key. type: keyword -example: 394441ab65754e2207b1e1b457b3641d +example: RSA -- -*`tls.server.not_after`*:: +*`tls.client.x509.public_key_curve`*:: + -- -Timestamp indicating when server certificate is no longer considered valid. +The curve used by the elliptic curve public key algorithm. This is algorithm specific. -type: date +type: keyword -example: 2021-01-01T00:00:00.000Z +example: nistp521 -- -*`tls.server.not_before`*:: +*`tls.client.x509.public_key_exponent`*:: + -- -Timestamp indicating when server certificate is first considered valid. +Exponent used to derive the public key. This is algorithm specific. -type: date +type: long -example: 1970-01-01T00:00:00.000Z +example: 65537 + +Field is not indexed. -- -*`tls.server.subject`*:: +*`tls.client.x509.public_key_size`*:: + -- -Subject of the x.509 certificate presented by the server. +The size of the public key space in bits. -type: keyword +type: long -example: CN=www.mydomain.com, OU=Infrastructure Team, DC=mydomain, DC=com +example: 2048 -- -*`tls.version`*:: +*`tls.client.x509.serial_number`*:: + -- -Numeric part of the version parsed from the original string. +Unique serial number issued by the certificate authority. For consistency, if this value is alphanumeric, it should be formatted without colons and uppercase characters. type: keyword -example: 1.2 +example: 55FBB9C7DEBF09809D12CCAA -- -*`tls.version_protocol`*:: +*`tls.client.x509.signature_algorithm`*:: + -- -Normalized lowercase protocol name parsed from original string. +Identifier for certificate signature algorithm. We recommend using names found in Go Lang Crypto library. See https://github.com/golang/go/blob/go1.14/src/crypto/x509/x509.go#L337-L353. type: keyword -example: tls +example: SHA256-RSA -- -[float] -=== tracing - -Distributed tracing makes it possible to analyze performance throughout a microservice architecture all in one view. This is accomplished by tracing all of the requests - from the initial web request in the front-end service - to queries made through multiple back-end services. - - -*`tracing.trace.id`*:: +*`tls.client.x509.subject.common_name`*:: + -- -Unique identifier of the trace. -A trace groups multiple events like transactions that belong together. For example, a user request handled by multiple inter-connected services. +List of common names (CN) of subject. type: keyword -example: 4bf92f3577b34da6a3ce929d0e0e4736 +example: shared.global.example.net -- -*`tracing.transaction.id`*:: +*`tls.client.x509.subject.country`*:: + -- -Unique identifier of the transaction. -A transaction is the highest level of work measured within a service, such as a request to a server. +List of country (C) code type: keyword -example: 00f067aa0ba902b7 +example: US -- -[float] -=== url +*`tls.client.x509.subject.distinguished_name`*:: ++ +-- +Distinguished name (DN) of the certificate subject entity. -URL fields provide support for complete or partial URLs, and supports the breaking down into scheme, domain, path, and so on. +type: keyword +example: C=US, ST=California, L=San Francisco, O=Example, Inc., CN=shared.global.example.net -*`url.domain`*:: +-- + +*`tls.client.x509.subject.locality`*:: + -- -Domain of the url, such as "www.elastic.co". -In some cases a URL may refer to an IP and/or port directly, without a domain name. In this case, the IP address would go to the `domain` field. +List of locality names (L) type: keyword -example: www.elastic.co +example: San Francisco -- -*`url.extension`*:: +*`tls.client.x509.subject.organization`*:: + -- -The field contains the file extension from the original request url. -The file extension is only set if it exists, as not every url has a file extension. -The leading period must not be included. For example, the value must be "png", not ".png". +List of organizations (O) of subject. type: keyword -example: png +example: Example, Inc. -- -*`url.fragment`*:: +*`tls.client.x509.subject.organizational_unit`*:: + -- -Portion of the url after the `#`, such as "top". -The `#` is not part of the fragment. +List of organizational units (OU) of subject. type: keyword -- -*`url.full`*:: +*`tls.client.x509.subject.state_or_province`*:: + -- -If full URLs are important to your use case, they should be stored in `url.full`, whether this field is reconstructed or present in the event source. +List of state or province names (ST, S, or P) type: keyword -example: https://www.elastic.co:443/search?q=elasticsearch#top +example: California -- -*`url.full.text`*:: +*`tls.client.x509.version_number`*:: + -- -type: text +Version of x509 format. + +type: keyword + +example: 3 -- -*`url.original`*:: +*`tls.curve`*:: + -- -Unmodified original url as seen in the event source. -Note that in network monitoring, the observed URL may be a full URL, whereas in access logs, the URL is often just represented as a path. -This field is meant to represent the URL as it was observed, complete or not. +String indicating the curve used for the given cipher, when applicable. type: keyword -example: https://www.elastic.co:443/search?q=elasticsearch#top or /search?q=elasticsearch +example: secp256r1 -- -*`url.original.text`*:: +*`tls.established`*:: + -- -type: text +Boolean flag indicating if the TLS negotiation was successful and transitioned to an encrypted tunnel. + +type: boolean -- -*`url.password`*:: +*`tls.next_protocol`*:: + -- -Password of the request. +String indicating the protocol being tunneled. Per the values in the IANA registry (https://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml#alpn-protocol-ids), this string should be lower case. type: keyword +example: http/1.1 + -- -*`url.path`*:: +*`tls.resumed`*:: + -- -Path of the request, such as "/search". +Boolean flag indicating if this TLS connection was resumed from an existing TLS negotiation. -type: keyword +type: boolean -- -*`url.port`*:: +*`tls.server.certificate`*:: + -- -Port of the request, such as 443. - -type: long +PEM-encoded stand-alone certificate offered by the server. This is usually mutually-exclusive of `server.certificate_chain` since this value also exists in that list. -example: 443 +type: keyword -format: string +example: MII... -- -*`url.query`*:: +*`tls.server.certificate_chain`*:: ++ +-- +Array of PEM-encoded certificates that make up the certificate chain offered by the server. This is usually mutually-exclusive of `server.certificate` since that value should be the first certificate in the chain. + +type: keyword + +example: ['MII...', 'MII...'] + +-- + +*`tls.server.hash.md5`*:: ++ +-- +Certificate fingerprint using the MD5 digest of DER-encoded version of certificate offered by the server. For consistency with other hash values, this value should be formatted as an uppercase hash. + +type: keyword + +example: 0F76C7F2C55BFD7D8E8B8F4BFBF0C9EC + +-- + +*`tls.server.hash.sha1`*:: ++ +-- +Certificate fingerprint using the SHA1 digest of DER-encoded version of certificate offered by the server. For consistency with other hash values, this value should be formatted as an uppercase hash. + +type: keyword + +example: 9E393D93138888D288266C2D915214D1D1CCEB2A + +-- + +*`tls.server.hash.sha256`*:: ++ +-- +Certificate fingerprint using the SHA256 digest of DER-encoded version of certificate offered by the server. For consistency with other hash values, this value should be formatted as an uppercase hash. + +type: keyword + +example: 0687F666A054EF17A08E2F2162EAB4CBC0D265E1D7875BE74BF3C712CA92DAF0 + +-- + +*`tls.server.issuer`*:: ++ +-- +Subject of the issuer of the x.509 certificate presented by the server. + +type: keyword + +example: CN=Example Root CA, OU=Infrastructure Team, DC=example, DC=com + +-- + +*`tls.server.ja3s`*:: ++ +-- +A hash that identifies servers based on how they perform an SSL/TLS handshake. + +type: keyword + +example: 394441ab65754e2207b1e1b457b3641d + +-- + +*`tls.server.not_after`*:: ++ +-- +Timestamp indicating when server certificate is no longer considered valid. + +type: date + +example: 2021-01-01T00:00:00.000Z + +-- + +*`tls.server.not_before`*:: ++ +-- +Timestamp indicating when server certificate is first considered valid. + +type: date + +example: 1970-01-01T00:00:00.000Z + +-- + +*`tls.server.subject`*:: ++ +-- +Subject of the x.509 certificate presented by the server. + +type: keyword + +example: CN=www.example.com, OU=Infrastructure Team, DC=example, DC=com + +-- + +*`tls.server.x509.alternative_names`*:: ++ +-- +List of subject alternative names (SAN). Name types vary by certificate authority and certificate type but commonly contain IP addresses, DNS names (and wildcards), and email addresses. + +type: keyword + +example: *.elastic.co + +-- + +*`tls.server.x509.issuer.common_name`*:: ++ +-- +List of common name (CN) of issuing certificate authority. + +type: keyword + +example: Example SHA2 High Assurance Server CA + +-- + +*`tls.server.x509.issuer.country`*:: ++ +-- +List of country (C) codes + +type: keyword + +example: US + +-- + +*`tls.server.x509.issuer.distinguished_name`*:: ++ +-- +Distinguished name (DN) of issuing certificate authority. + +type: keyword + +example: C=US, O=Example Inc, OU=www.example.com, CN=Example SHA2 High Assurance Server CA + +-- + +*`tls.server.x509.issuer.locality`*:: ++ +-- +List of locality names (L) + +type: keyword + +example: Mountain View + +-- + +*`tls.server.x509.issuer.organization`*:: ++ +-- +List of organizations (O) of issuing certificate authority. + +type: keyword + +example: Example Inc + +-- + +*`tls.server.x509.issuer.organizational_unit`*:: ++ +-- +List of organizational units (OU) of issuing certificate authority. + +type: keyword + +example: www.example.com + +-- + +*`tls.server.x509.issuer.state_or_province`*:: ++ +-- +List of state or province names (ST, S, or P) + +type: keyword + +example: California + +-- + +*`tls.server.x509.not_after`*:: ++ +-- +Time at which the certificate is no longer considered valid. + +type: date + +example: 2020-07-16 03:15:39+00:00 + +-- + +*`tls.server.x509.not_before`*:: ++ +-- +Time at which the certificate is first considered valid. + +type: date + +example: 2019-08-16 01:40:25+00:00 + +-- + +*`tls.server.x509.public_key_algorithm`*:: ++ +-- +Algorithm used to generate the public key. + +type: keyword + +example: RSA + +-- + +*`tls.server.x509.public_key_curve`*:: ++ +-- +The curve used by the elliptic curve public key algorithm. This is algorithm specific. + +type: keyword + +example: nistp521 + +-- + +*`tls.server.x509.public_key_exponent`*:: ++ +-- +Exponent used to derive the public key. This is algorithm specific. + +type: long + +example: 65537 + +Field is not indexed. + +-- + +*`tls.server.x509.public_key_size`*:: ++ +-- +The size of the public key space in bits. + +type: long + +example: 2048 + +-- + +*`tls.server.x509.serial_number`*:: ++ +-- +Unique serial number issued by the certificate authority. For consistency, if this value is alphanumeric, it should be formatted without colons and uppercase characters. + +type: keyword + +example: 55FBB9C7DEBF09809D12CCAA + +-- + +*`tls.server.x509.signature_algorithm`*:: ++ +-- +Identifier for certificate signature algorithm. We recommend using names found in Go Lang Crypto library. See https://github.com/golang/go/blob/go1.14/src/crypto/x509/x509.go#L337-L353. + +type: keyword + +example: SHA256-RSA + +-- + +*`tls.server.x509.subject.common_name`*:: ++ +-- +List of common names (CN) of subject. + +type: keyword + +example: shared.global.example.net + +-- + +*`tls.server.x509.subject.country`*:: ++ +-- +List of country (C) code + +type: keyword + +example: US + +-- + +*`tls.server.x509.subject.distinguished_name`*:: ++ +-- +Distinguished name (DN) of the certificate subject entity. + +type: keyword + +example: C=US, ST=California, L=San Francisco, O=Example, Inc., CN=shared.global.example.net + +-- + +*`tls.server.x509.subject.locality`*:: ++ +-- +List of locality names (L) + +type: keyword + +example: San Francisco + +-- + +*`tls.server.x509.subject.organization`*:: ++ +-- +List of organizations (O) of subject. + +type: keyword + +example: Example, Inc. + +-- + +*`tls.server.x509.subject.organizational_unit`*:: ++ +-- +List of organizational units (OU) of subject. + +type: keyword + +-- + +*`tls.server.x509.subject.state_or_province`*:: ++ +-- +List of state or province names (ST, S, or P) + +type: keyword + +example: California + +-- + +*`tls.server.x509.version_number`*:: ++ +-- +Version of x509 format. + +type: keyword + +example: 3 + +-- + +*`tls.version`*:: ++ +-- +Numeric part of the version parsed from the original string. + +type: keyword + +example: 1.2 + +-- + +*`tls.version_protocol`*:: ++ +-- +Normalized lowercase protocol name parsed from original string. + +type: keyword + +example: tls + +-- + +[float] +=== tracing + +Distributed tracing makes it possible to analyze performance throughout a microservice architecture all in one view. This is accomplished by tracing all of the requests - from the initial web request in the front-end service - to queries made through multiple back-end services. + + +*`tracing.span.id`*:: ++ +-- +Unique identifier of the span within the scope of its trace. +A span represents an operation within a transaction, such as a request to another service, or a database query. + +type: keyword + +example: 3ff9a8981b7ccd5a + +-- + +*`tracing.trace.id`*:: ++ +-- +Unique identifier of the trace. +A trace groups multiple events like transactions that belong together. For example, a user request handled by multiple inter-connected services. + +type: keyword + +example: 4bf92f3577b34da6a3ce929d0e0e4736 + +-- + +*`tracing.transaction.id`*:: ++ +-- +Unique identifier of the transaction within the scope of its trace. +A transaction is the highest level of work measured within a service, such as a request to a server. + +type: keyword + +example: 00f067aa0ba902b7 + +-- + +[float] +=== url + +URL fields provide support for complete or partial URLs, and supports the breaking down into scheme, domain, path, and so on. + + +*`url.domain`*:: ++ +-- +Domain of the url, such as "www.elastic.co". +In some cases a URL may refer to an IP and/or port directly, without a domain name. In this case, the IP address would go to the `domain` field. + +type: keyword + +example: www.elastic.co + +-- + +*`url.extension`*:: ++ +-- +The field contains the file extension from the original request url. +The file extension is only set if it exists, as not every url has a file extension. +The leading period must not be included. For example, the value must be "png", not ".png". + +type: keyword + +example: png + +-- + +*`url.fragment`*:: ++ +-- +Portion of the url after the `#`, such as "top". +The `#` is not part of the fragment. + +type: keyword + +-- + +*`url.full`*:: ++ +-- +If full URLs are important to your use case, they should be stored in `url.full`, whether this field is reconstructed or present in the event source. + +type: keyword + +example: https://www.elastic.co:443/search?q=elasticsearch#top + +-- + +*`url.full.text`*:: ++ +-- +type: text + +-- + +*`url.original`*:: ++ +-- +Unmodified original url as seen in the event source. +Note that in network monitoring, the observed URL may be a full URL, whereas in access logs, the URL is often just represented as a path. +This field is meant to represent the URL as it was observed, complete or not. + +type: keyword + +example: https://www.elastic.co:443/search?q=elasticsearch#top or /search?q=elasticsearch + +-- + +*`url.original.text`*:: ++ +-- +type: text + +-- + +*`url.password`*:: ++ +-- +Password of the request. + +type: keyword + +-- + +*`url.path`*:: ++ +-- +Path of the request, such as "/search". + +type: keyword + +-- + +*`url.port`*:: ++ +-- +Port of the request, such as 443. + +type: long + +example: 443 + +format: string + +-- + +*`url.query`*:: + -- The query field describes the query string of the request, such as "q=elasticsearch". @@ -6572,12 +7677,12 @@ type: keyword + -- The highest registered url domain, stripped of the subdomain. -For example, the registered domain for "foo.google.com" is "google.com". +For example, the registered domain for "foo.example.com" is "example.com". This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last two labels will not work well for TLDs such as "co.uk". type: keyword -example: google.com +example: example.com -- @@ -6596,7 +7701,7 @@ example: https *`url.top_level_domain`*:: + -- -The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for google.com is "com". +The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for example.com is "com". This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last label will not work well for effective TLDs such as "co.uk". type: keyword @@ -6699,7 +7804,7 @@ type: keyword *`user.id`*:: + -- -Unique identifiers of the user. +Unique identifier of the user. type: keyword @@ -6723,6 +7828,17 @@ type: text -- +*`user.roles`*:: ++ +-- +Array of user roles at the time of the event. + +type: keyword + +example: ["kibana_admin", "reporting_user"] + +-- + [float] === user_agent @@ -7051,6 +8167,276 @@ example: Critical -- +[float] +=== x509 + +This implements the common core fields for x509 certificates. This information is likely logged with TLS sessions, digital signatures found in executable binaries, S/MIME information in email bodies, or analysis of files on disk. When only a single certificate is logged in an event, it should be nested under `file`. When hashes of the DER-encoded certificate are available, the `hash` data set should be populated as well (e.g. `file.hash.sha256`). For events that contain certificate information for both sides of the connection, the x509 object could be nested under the respective side of the connection information (e.g. `tls.server.x509`). + + +*`x509.alternative_names`*:: ++ +-- +List of subject alternative names (SAN). Name types vary by certificate authority and certificate type but commonly contain IP addresses, DNS names (and wildcards), and email addresses. + +type: keyword + +example: *.elastic.co + +-- + +*`x509.issuer.common_name`*:: ++ +-- +List of common name (CN) of issuing certificate authority. + +type: keyword + +example: Example SHA2 High Assurance Server CA + +-- + +*`x509.issuer.country`*:: ++ +-- +List of country (C) codes + +type: keyword + +example: US + +-- + +*`x509.issuer.distinguished_name`*:: ++ +-- +Distinguished name (DN) of issuing certificate authority. + +type: keyword + +example: C=US, O=Example Inc, OU=www.example.com, CN=Example SHA2 High Assurance Server CA + +-- + +*`x509.issuer.locality`*:: ++ +-- +List of locality names (L) + +type: keyword + +example: Mountain View + +-- + +*`x509.issuer.organization`*:: ++ +-- +List of organizations (O) of issuing certificate authority. + +type: keyword + +example: Example Inc + +-- + +*`x509.issuer.organizational_unit`*:: ++ +-- +List of organizational units (OU) of issuing certificate authority. + +type: keyword + +example: www.example.com + +-- + +*`x509.issuer.state_or_province`*:: ++ +-- +List of state or province names (ST, S, or P) + +type: keyword + +example: California + +-- + +*`x509.not_after`*:: ++ +-- +Time at which the certificate is no longer considered valid. + +type: date + +example: 2020-07-16 03:15:39+00:00 + +-- + +*`x509.not_before`*:: ++ +-- +Time at which the certificate is first considered valid. + +type: date + +example: 2019-08-16 01:40:25+00:00 + +-- + +*`x509.public_key_algorithm`*:: ++ +-- +Algorithm used to generate the public key. + +type: keyword + +example: RSA + +-- + +*`x509.public_key_curve`*:: ++ +-- +The curve used by the elliptic curve public key algorithm. This is algorithm specific. + +type: keyword + +example: nistp521 + +-- + +*`x509.public_key_exponent`*:: ++ +-- +Exponent used to derive the public key. This is algorithm specific. + +type: long + +example: 65537 + +Field is not indexed. + +-- + +*`x509.public_key_size`*:: ++ +-- +The size of the public key space in bits. + +type: long + +example: 2048 + +-- + +*`x509.serial_number`*:: ++ +-- +Unique serial number issued by the certificate authority. For consistency, if this value is alphanumeric, it should be formatted without colons and uppercase characters. + +type: keyword + +example: 55FBB9C7DEBF09809D12CCAA + +-- + +*`x509.signature_algorithm`*:: ++ +-- +Identifier for certificate signature algorithm. We recommend using names found in Go Lang Crypto library. See https://github.com/golang/go/blob/go1.14/src/crypto/x509/x509.go#L337-L353. + +type: keyword + +example: SHA256-RSA + +-- + +*`x509.subject.common_name`*:: ++ +-- +List of common names (CN) of subject. + +type: keyword + +example: shared.global.example.net + +-- + +*`x509.subject.country`*:: ++ +-- +List of country (C) code + +type: keyword + +example: US + +-- + +*`x509.subject.distinguished_name`*:: ++ +-- +Distinguished name (DN) of the certificate subject entity. + +type: keyword + +example: C=US, ST=California, L=San Francisco, O=Example, Inc., CN=shared.global.example.net + +-- + +*`x509.subject.locality`*:: ++ +-- +List of locality names (L) + +type: keyword + +example: San Francisco + +-- + +*`x509.subject.organization`*:: ++ +-- +List of organizations (O) of subject. + +type: keyword + +example: Example, Inc. + +-- + +*`x509.subject.organizational_unit`*:: ++ +-- +List of organizational units (OU) of subject. + +type: keyword + +-- + +*`x509.subject.state_or_province`*:: ++ +-- +List of state or province names (ST, S, or P) + +type: keyword + +example: California + +-- + +*`x509.version_number`*:: ++ +-- +Version of x509 format. + +type: keyword + +example: 3 + +-- + [[exported-fields-eventlog]] == Legacy Winlogbeat alias fields @@ -7896,18 +9282,6 @@ Fields from the Windows Event Log. -*`log.file.path`*:: -+ --- -The name of the file the event was read from when Winlogbeat is reading directly from an .evtx file. - - -type: keyword - -required: False - --- - *`event.original`*:: + -- diff --git a/winlogbeat/include/fields.go b/winlogbeat/include/fields.go index 4f3d68bdee4..ace0cd81c13 100644 --- a/winlogbeat/include/fields.go +++ b/winlogbeat/include/fields.go @@ -32,5 +32,5 @@ func init() { // AssetBuildFieldsFieldsCommonYml returns asset data. // This is the base64 encoded gzipped contents of build/fields/fields.common.yml. func AssetBuildFieldsFieldsCommonYml() string { - return "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" + return "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" } diff --git a/x-pack/auditbeat/tests/system/test_exports.py b/x-pack/auditbeat/tests/system/test_exports.py new file mode 100644 index 00000000000..9aa546c93d9 --- /dev/null +++ b/x-pack/auditbeat/tests/system/test_exports.py @@ -0,0 +1,13 @@ +import jinja2 +import os +import platform +import sys +import time +import unittest + +from auditbeat_xpack import * +from beat import common_tests + + +class Test(AuditbeatXPackTest, common_tests.TestExportsMixin): + pass diff --git a/x-pack/functionbeat/docs/fields.asciidoc b/x-pack/functionbeat/docs/fields.asciidoc index f12ef78112a..cde483ce827 100644 --- a/x-pack/functionbeat/docs/fields.asciidoc +++ b/x-pack/functionbeat/docs/fields.asciidoc @@ -93,16 +93,6 @@ Metadata from cloud providers added by the add_cloud_metadata processor. -*`cloud.project.id`*:: -+ --- -Name of the project in Google Cloud. - - -example: project-x - --- - *`cloud.image.id`*:: + -- @@ -287,6 +277,18 @@ The agent fields contain the data about the software entity, if any, that collec Examples include Beats. Agents may also run on observers. ECS agent.* fields shall be populated with details of the agent running on the host or observer where the event happened or the measurement was taken. +*`agent.build.original`*:: ++ +-- +Extended build information for the agent. +This field is intended to contain any build information that a data source may provide, no specific formatting is required. + +type: keyword + +example: metricbeat version 7.6.0 (amd64), libbeat 7.6.0 [6a23e8f8f30f5001ba344e4e54d8d9cb82cb107c built 2020-02-05 23:10:10 +0000 UTC] + +-- + *`agent.ephemeral_id`*:: + -- @@ -328,7 +330,7 @@ example: foo + -- Type of the agent. -The agent type stays always the same and should be given by the agent used. In case of Filebeat the agent would always be Filebeat also if two Filebeat instances are run on the same machine. +The agent type always stays the same and should be given by the agent used. In case of Filebeat the agent would always be Filebeat also if two Filebeat instances are run on the same machine. type: keyword @@ -544,8 +546,7 @@ example: Quebec *`client.ip`*:: + -- -IP address of the client. -Can be one or multiple IPv4 or IPv6 addresses. +IP address of the client (IPv4 or IPv6). type: ip @@ -608,19 +609,19 @@ format: string + -- The highest registered client domain, stripped of the subdomain. -For example, the registered domain for "foo.google.com" is "google.com". +For example, the registered domain for "foo.example.com" is "example.com". This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last two labels will not work well for TLDs such as "co.uk". type: keyword -example: google.com +example: example.com -- *`client.top_level_domain`*:: + -- -The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for google.com is "com". +The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for example.com is "com". This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last label will not work well for effective TLDs such as "co.uk". type: keyword @@ -707,7 +708,7 @@ type: keyword *`client.user.id`*:: + -- -Unique identifiers of the user. +Unique identifier of the user. type: keyword @@ -731,6 +732,17 @@ type: text -- +*`client.user.roles`*:: ++ +-- +Array of user roles at the time of the event. + +type: keyword + +example: ["kibana_admin", "reporting_user"] + +-- + [float] === cloud @@ -749,6 +761,18 @@ example: 666777888999 -- +*`cloud.account.name`*:: ++ +-- +The cloud account name or alias used to identify different entities in a multi-tenant environment. +Examples: AWS account name, Google Cloud ORG display name. + +type: keyword + +example: elastic-dev + +-- + *`cloud.availability_zone`*:: + -- @@ -791,6 +815,30 @@ example: t2.medium -- +*`cloud.project.id`*:: ++ +-- +The cloud project identifier. +Examples: Google Cloud Project id, Azure Project id. + +type: keyword + +example: my-project + +-- + +*`cloud.project.name`*:: ++ +-- +The cloud project name. +Examples: Google Cloud Project name, Azure Project name. + +type: keyword + +example: my project + +-- + *`cloud.provider`*:: + -- @@ -1101,8 +1149,7 @@ example: Quebec *`destination.ip`*:: + -- -IP address of the destination. -Can be one or multiple IPv4 or IPv6 addresses. +IP address of the destination (IPv4 or IPv6). type: ip @@ -1165,19 +1212,19 @@ format: string + -- The highest registered destination domain, stripped of the subdomain. -For example, the registered domain for "foo.google.com" is "google.com". +For example, the registered domain for "foo.example.com" is "example.com". This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last two labels will not work well for TLDs such as "co.uk". type: keyword -example: google.com +example: example.com -- *`destination.top_level_domain`*:: + -- -The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for google.com is "com". +The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for example.com is "com". This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last label will not work well for effective TLDs such as "co.uk". type: keyword @@ -1264,7 +1311,7 @@ type: keyword *`destination.user.id`*:: + -- -Unique identifiers of the user. +Unique identifier of the user. type: keyword @@ -1288,6 +1335,17 @@ type: text -- +*`destination.user.roles`*:: ++ +-- +Array of user roles at the time of the event. + +type: keyword + +example: ["kibana_admin", "reporting_user"] + +-- + [float] === dll @@ -1416,6 +1474,17 @@ example: C:\Windows\System32\kernel32.dll -- +*`dll.pe.architecture`*:: ++ +-- +CPU architecture target for the file. + +type: keyword + +example: x64 + +-- + *`dll.pe.company`*:: + -- @@ -1449,6 +1518,18 @@ example: 6.3.9600.17415 -- +*`dll.pe.imphash`*:: ++ +-- +A hash of the imports in a PE file. An imphash -- or import hash -- can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. +Learn more at https://www.fireeye.com/blog/threat-research/2014/01/tracking-malware-import-hashing.html. + +type: keyword + +example: 0c6803c4e922103c4dca5963aad36ddf + +-- + *`dll.pe.original_file_name`*:: + -- @@ -1520,7 +1601,7 @@ If a chain of CNAME is being resolved, each answer's `name` should be the one th type: keyword -example: www.google.com +example: www.example.com -- @@ -1599,7 +1680,7 @@ If the name field contains non-printable characters (below 32 or above 126), tho type: keyword -example: www.google.com +example: www.example.com -- @@ -1607,12 +1688,12 @@ example: www.google.com + -- The highest registered domain, stripped of the subdomain. -For example, the registered domain for "foo.google.com" is "google.com". +For example, the registered domain for "foo.example.com" is "example.com". This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last two labels will not work well for TLDs such as "co.uk". type: keyword -example: google.com +example: example.com -- @@ -1631,7 +1712,7 @@ example: www *`dns.question.top_level_domain`*:: + -- -The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for google.com is "com". +The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for example.com is "com". This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last label will not work well for effective TLDs such as "co.uk". type: keyword @@ -1748,6 +1829,8 @@ The stack trace of this error in plain text. type: keyword +Field is not indexed. + -- *`error.stack_trace.text`*:: @@ -1930,6 +2013,8 @@ type: keyword example: Sep 19 08:26:10 host CEF:0|Security| threatmanager|1.0|100| worm successfully stopped|10|src=10.0.0.1 dst=2.1.2.2spt=1232 +Field is not indexed. + -- *`event.outcome`*:: @@ -1959,6 +2044,18 @@ example: kernel -- +*`event.reason`*:: ++ +-- +Reason why this event happened, according to the source. +This describes the why of a particular action or outcome captured in the event. Where `event.action` captures the action from the event, `event.reason` describes why that action was taken. For example, a web proxy with an `event.action` which denied the request may also populate `event.reason` with the reason why (e.g. `blocked site`). + +type: keyword + +example: Terminated an unexpected process + +-- + *`event.reference`*:: + -- @@ -1967,7 +2064,7 @@ This URL links to a static definition of the this event. Alert events, indicated type: keyword -example: https://system.vendor.com/event/#0001234 +example: https://system.example.com/event/#0001234 -- @@ -2051,11 +2148,11 @@ type: keyword + -- URL linking to an external system to continue investigation of this event. -This URL links to another system where in-depth investigation of the specific occurence of this event can take place. Alert events, indicated by `event.kind:alert`, are a common use case for this field. +This URL links to another system where in-depth investigation of the specific occurrence of this event can take place. Alert events, indicated by `event.kind:alert`, are a common use case for this field. type: keyword -example: https://mysystem.mydomain.com/alert/5271dedb-f5b0-4218-87f0-4ac4870a38fe +example: https://mysystem.example.com/alert/5271dedb-f5b0-4218-87f0-4ac4870a38fe -- @@ -2349,6 +2446,17 @@ type: text -- +*`file.pe.architecture`*:: ++ +-- +CPU architecture target for the file. + +type: keyword + +example: x64 + +-- + *`file.pe.company`*:: + -- @@ -2382,6 +2490,18 @@ example: 6.3.9600.17415 -- +*`file.pe.imphash`*:: ++ +-- +A hash of the imports in a PE file. An imphash -- or import hash -- can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. +Learn more at https://www.fireeye.com/blog/threat-research/2014/01/tracking-malware-import-hashing.html. + +type: keyword + +example: 0c6803c4e922103c4dca5963aad36ddf + +-- + *`file.pe.original_file_name`*:: + -- @@ -2454,211 +2574,278 @@ example: 1001 -- -[float] -=== geo +*`file.x509.alternative_names`*:: ++ +-- +List of subject alternative names (SAN). Name types vary by certificate authority and certificate type but commonly contain IP addresses, DNS names (and wildcards), and email addresses. -Geo fields can carry data about a specific location related to an event. -This geolocation information can be derived from techniques such as Geo IP, or be user-supplied. +type: keyword +example: *.elastic.co -*`geo.city_name`*:: +-- + +*`file.x509.issuer.common_name`*:: + -- -City name. +List of common name (CN) of issuing certificate authority. type: keyword -example: Montreal +example: Example SHA2 High Assurance Server CA -- -*`geo.continent_name`*:: +*`file.x509.issuer.country`*:: + -- -Name of the continent. +List of country (C) codes type: keyword -example: North America +example: US -- -*`geo.country_iso_code`*:: +*`file.x509.issuer.distinguished_name`*:: + -- -Country ISO code. +Distinguished name (DN) of issuing certificate authority. type: keyword -example: CA +example: C=US, O=Example Inc, OU=www.example.com, CN=Example SHA2 High Assurance Server CA -- -*`geo.country_name`*:: +*`file.x509.issuer.locality`*:: + -- -Country name. +List of locality names (L) type: keyword -example: Canada +example: Mountain View -- -*`geo.location`*:: +*`file.x509.issuer.organization`*:: + -- -Longitude and latitude. +List of organizations (O) of issuing certificate authority. -type: geo_point +type: keyword -example: { "lon": -73.614830, "lat": 45.505918 } +example: Example Inc -- -*`geo.name`*:: +*`file.x509.issuer.organizational_unit`*:: + -- -User-defined description of a location, at the level of granularity they care about. -Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. -Not typically used in automated geolocation. +List of organizational units (OU) of issuing certificate authority. type: keyword -example: boston-dc +example: www.example.com -- -*`geo.region_iso_code`*:: +*`file.x509.issuer.state_or_province`*:: + -- -Region ISO code. +List of state or province names (ST, S, or P) type: keyword -example: CA-QC +example: California -- -*`geo.region_name`*:: +*`file.x509.not_after`*:: + -- -Region name. +Time at which the certificate is no longer considered valid. -type: keyword +type: date -example: Quebec +example: 2020-07-16 03:15:39+00:00 -- -[float] -=== group +*`file.x509.not_before`*:: ++ +-- +Time at which the certificate is first considered valid. -The group fields are meant to represent groups that are relevant to the event. +type: date +example: 2019-08-16 01:40:25+00:00 -*`group.domain`*:: +-- + +*`file.x509.public_key_algorithm`*:: + -- -Name of the directory the group is a member of. -For example, an LDAP or Active Directory domain name. +Algorithm used to generate the public key. type: keyword +example: RSA + -- -*`group.id`*:: +*`file.x509.public_key_curve`*:: + -- -Unique identifier for the group on the system/platform. +The curve used by the elliptic curve public key algorithm. This is algorithm specific. type: keyword +example: nistp521 + -- -*`group.name`*:: +*`file.x509.public_key_exponent`*:: + -- -Name of the group. +Exponent used to derive the public key. This is algorithm specific. + +type: long + +example: 65537 + +Field is not indexed. + +-- + +*`file.x509.public_key_size`*:: ++ +-- +The size of the public key space in bits. + +type: long + +example: 2048 + +-- + +*`file.x509.serial_number`*:: ++ +-- +Unique serial number issued by the certificate authority. For consistency, if this value is alphanumeric, it should be formatted without colons and uppercase characters. type: keyword +example: 55FBB9C7DEBF09809D12CCAA + -- -[float] -=== hash +*`file.x509.signature_algorithm`*:: ++ +-- +Identifier for certificate signature algorithm. We recommend using names found in Go Lang Crypto library. See https://github.com/golang/go/blob/go1.14/src/crypto/x509/x509.go#L337-L353. -The hash fields represent different hash algorithms and their values. -Field names for common hashes (e.g. MD5, SHA1) are predefined. Add fields for other hashes by lowercasing the hash algorithm name and using underscore separators as appropriate (snake case, e.g. sha3_512). +type: keyword +example: SHA256-RSA -*`hash.md5`*:: +-- + +*`file.x509.subject.common_name`*:: + -- -MD5 hash. +List of common names (CN) of subject. type: keyword +example: shared.global.example.net + -- -*`hash.sha1`*:: +*`file.x509.subject.country`*:: + -- -SHA1 hash. +List of country (C) code type: keyword +example: US + -- -*`hash.sha256`*:: +*`file.x509.subject.distinguished_name`*:: + -- -SHA256 hash. +Distinguished name (DN) of the certificate subject entity. type: keyword +example: C=US, ST=California, L=San Francisco, O=Example, Inc., CN=shared.global.example.net + -- -*`hash.sha512`*:: +*`file.x509.subject.locality`*:: + -- -SHA512 hash. +List of locality names (L) type: keyword +example: San Francisco + -- -[float] -=== host +*`file.x509.subject.organization`*:: ++ +-- +List of organizations (O) of subject. -A host is defined as a general computing instance. -ECS host.* fields should be populated with details about the host on which the event happened, or from which the measurement was taken. Host types include hardware, virtual machines, Docker containers, and Kubernetes nodes. +type: keyword +example: Example, Inc. -*`host.architecture`*:: +-- + +*`file.x509.subject.organizational_unit`*:: + -- -Operating system architecture. +List of organizational units (OU) of subject. type: keyword -example: x86_64 +-- + +*`file.x509.subject.state_or_province`*:: ++ +-- +List of state or province names (ST, S, or P) + +type: keyword + +example: California -- -*`host.domain`*:: +*`file.x509.version_number`*:: + -- -Name of the domain of which the host is a member. -For example, on Windows this could be the host's Active Directory domain or NetBIOS domain name. For Linux this could be the domain of the host's LDAP provider. +Version of x509 format. type: keyword -example: CONTOSO +example: 3 -- -*`host.geo.city_name`*:: +[float] +=== geo + +Geo fields can carry data about a specific location related to an event. +This geolocation information can be derived from techniques such as Geo IP, or be user-supplied. + + +*`geo.city_name`*:: + -- City name. @@ -2669,7 +2856,7 @@ example: Montreal -- -*`host.geo.continent_name`*:: +*`geo.continent_name`*:: + -- Name of the continent. @@ -2680,7 +2867,7 @@ example: North America -- -*`host.geo.country_iso_code`*:: +*`geo.country_iso_code`*:: + -- Country ISO code. @@ -2691,7 +2878,7 @@ example: CA -- -*`host.geo.country_name`*:: +*`geo.country_name`*:: + -- Country name. @@ -2702,7 +2889,7 @@ example: Canada -- -*`host.geo.location`*:: +*`geo.location`*:: + -- Longitude and latitude. @@ -2713,7 +2900,7 @@ example: { "lon": -73.614830, "lat": 45.505918 } -- -*`host.geo.name`*:: +*`geo.name`*:: + -- User-defined description of a location, at the level of granularity they care about. @@ -2726,7 +2913,7 @@ example: boston-dc -- -*`host.geo.region_iso_code`*:: +*`geo.region_iso_code`*:: + -- Region ISO code. @@ -2737,7 +2924,7 @@ example: CA-QC -- -*`host.geo.region_name`*:: +*`geo.region_name`*:: + -- Region name. @@ -2748,20 +2935,217 @@ example: Quebec -- -*`host.hostname`*:: +[float] +=== group + +The group fields are meant to represent groups that are relevant to the event. + + +*`group.domain`*:: + -- -Hostname of the host. -It normally contains what the `hostname` command returns on the host machine. +Name of the directory the group is a member of. +For example, an LDAP or Active Directory domain name. type: keyword -- -*`host.id`*:: +*`group.id`*:: + -- -Unique host id. +Unique identifier for the group on the system/platform. + +type: keyword + +-- + +*`group.name`*:: ++ +-- +Name of the group. + +type: keyword + +-- + +[float] +=== hash + +The hash fields represent different hash algorithms and their values. +Field names for common hashes (e.g. MD5, SHA1) are predefined. Add fields for other hashes by lowercasing the hash algorithm name and using underscore separators as appropriate (snake case, e.g. sha3_512). + + +*`hash.md5`*:: ++ +-- +MD5 hash. + +type: keyword + +-- + +*`hash.sha1`*:: ++ +-- +SHA1 hash. + +type: keyword + +-- + +*`hash.sha256`*:: ++ +-- +SHA256 hash. + +type: keyword + +-- + +*`hash.sha512`*:: ++ +-- +SHA512 hash. + +type: keyword + +-- + +[float] +=== host + +A host is defined as a general computing instance. +ECS host.* fields should be populated with details about the host on which the event happened, or from which the measurement was taken. Host types include hardware, virtual machines, Docker containers, and Kubernetes nodes. + + +*`host.architecture`*:: ++ +-- +Operating system architecture. + +type: keyword + +example: x86_64 + +-- + +*`host.domain`*:: ++ +-- +Name of the domain of which the host is a member. +For example, on Windows this could be the host's Active Directory domain or NetBIOS domain name. For Linux this could be the domain of the host's LDAP provider. + +type: keyword + +example: CONTOSO + +-- + +*`host.geo.city_name`*:: ++ +-- +City name. + +type: keyword + +example: Montreal + +-- + +*`host.geo.continent_name`*:: ++ +-- +Name of the continent. + +type: keyword + +example: North America + +-- + +*`host.geo.country_iso_code`*:: ++ +-- +Country ISO code. + +type: keyword + +example: CA + +-- + +*`host.geo.country_name`*:: ++ +-- +Country name. + +type: keyword + +example: Canada + +-- + +*`host.geo.location`*:: ++ +-- +Longitude and latitude. + +type: geo_point + +example: { "lon": -73.614830, "lat": 45.505918 } + +-- + +*`host.geo.name`*:: ++ +-- +User-defined description of a location, at the level of granularity they care about. +Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. +Not typically used in automated geolocation. + +type: keyword + +example: boston-dc + +-- + +*`host.geo.region_iso_code`*:: ++ +-- +Region ISO code. + +type: keyword + +example: CA-QC + +-- + +*`host.geo.region_name`*:: ++ +-- +Region name. + +type: keyword + +example: Quebec + +-- + +*`host.hostname`*:: ++ +-- +Hostname of the host. +It normally contains what the `hostname` command returns on the host machine. + +type: keyword + +-- + +*`host.id`*:: ++ +-- +Unique host id. As hostname is not always unique, use values that are meaningful in your environment. Example: The current usage of `beat.name`. @@ -2976,7 +3360,7 @@ type: keyword *`host.user.id`*:: + -- -Unique identifiers of the user. +Unique identifier of the user. type: keyword @@ -3000,6 +3384,17 @@ type: text -- +*`host.user.roles`*:: ++ +-- +Array of user roles at the time of the event. + +type: keyword + +example: ["kibana_admin", "reporting_user"] + +-- + [float] === http @@ -3054,11 +3449,13 @@ format: bytes + -- HTTP request method. -The field value must be normalized to lowercase for querying. See the documentation section "Implementing ECS". +Prior to ECS 1.6.0 the following guidance was provided: +"The field value must be normalized to lowercase for querying." +As of ECS 1.6.0, the guidance is deprecated because the original case of the method may be useful in anomaly detection. Original case will be mandated in ECS 2.0.0 type: keyword -example: get, post, put +example: GET, POST, PUT, PoST -- @@ -3188,6 +3585,18 @@ The log.* fields are typically populated with details about the logging mechanis The details specific to your event source are typically not logged under `log.*`, but rather in `event.*` or in other ECS fields. +*`log.file.path`*:: ++ +-- +Full path to the log file this event came from, including the file name. It should include the drive letter, when appropriate. +If the event wasn't read from a log file, do not populate this field. + +type: keyword + +example: /var/log/fun-times.log + +-- + *`log.level`*:: + -- @@ -3226,7 +3635,8 @@ example: 42 *`log.origin.file.name`*:: + -- -The name of the file containing the source code which originated the log event. Note that this is not the name of the log file. +The name of the file containing the source code which originated the log event. +Note that this field is not meant to capture the log file. The correct field to capture the log file is `log.file.path`. type: keyword @@ -3256,6 +3666,8 @@ type: keyword example: Sep 19 08:26:10 localhost My log +Field is not indexed. + -- *`log.syslog`*:: @@ -4224,6 +4636,17 @@ example: 1.12.9 These fields contain Windows Portable Executable (PE) metadata. +*`pe.architecture`*:: ++ +-- +CPU architecture target for the file. + +type: keyword + +example: x64 + +-- + *`pe.company`*:: + -- @@ -4257,6 +4680,18 @@ example: 6.3.9600.17415 -- +*`pe.imphash`*:: ++ +-- +A hash of the imports in a PE file. An imphash -- or import hash -- can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. +Learn more at https://www.fireeye.com/blog/threat-research/2014/01/tracking-malware-import-hashing.html. + +type: keyword + +example: 0c6803c4e922103c4dca5963aad36ddf + +-- + *`pe.original_file_name`*:: + -- @@ -4488,12 +4923,12 @@ type: text *`process.parent.args`*:: + -- -Array of process arguments. +Array of process arguments, starting with the absolute path to the executable. May be filtered to protect sensitive information. type: keyword -example: ['ssh', '-l', 'user', '10.0.0.16'] +example: ['/usr/bin/ssh', '-l', 'user', '10.0.0.16'] -- @@ -4684,49 +5119,127 @@ type: text -- -*`process.parent.pgid`*:: +*`process.parent.pe.architecture`*:: + -- -Identifier of the group of processes the process belongs to. +CPU architecture target for the file. -type: long +type: keyword -format: string +example: x64 -- -*`process.parent.pid`*:: +*`process.parent.pe.company`*:: + -- -Process id. - -type: long +Internal company name of the file, provided at compile-time. -example: 4242 +type: keyword -format: string +example: Microsoft Corporation -- -*`process.parent.ppid`*:: +*`process.parent.pe.description`*:: + -- -Parent process' pid. - -type: long +Internal description of the file, provided at compile-time. -example: 4241 +type: keyword -format: string +example: Paint -- -*`process.parent.start`*:: +*`process.parent.pe.file_version`*:: + -- -The time the process started. +Internal version of the file, provided at compile-time. -type: date +type: keyword + +example: 6.3.9600.17415 + +-- + +*`process.parent.pe.imphash`*:: ++ +-- +A hash of the imports in a PE file. An imphash -- or import hash -- can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. +Learn more at https://www.fireeye.com/blog/threat-research/2014/01/tracking-malware-import-hashing.html. + +type: keyword + +example: 0c6803c4e922103c4dca5963aad36ddf + +-- + +*`process.parent.pe.original_file_name`*:: ++ +-- +Internal name of the file, provided at compile-time. + +type: keyword + +example: MSPAINT.EXE + +-- + +*`process.parent.pe.product`*:: ++ +-- +Internal product name of the file, provided at compile-time. + +type: keyword + +example: Microsoft® Windows® Operating System + +-- + +*`process.parent.pgid`*:: ++ +-- +Identifier of the group of processes the process belongs to. + +type: long + +format: string + +-- + +*`process.parent.pid`*:: ++ +-- +Process id. + +type: long + +example: 4242 + +format: string + +-- + +*`process.parent.ppid`*:: ++ +-- +Parent process' pid. + +type: long + +example: 4241 + +format: string + +-- + +*`process.parent.start`*:: ++ +-- +The time the process started. + +type: date example: 2016-05-23T08:05:34.853Z @@ -4802,6 +5315,17 @@ type: text -- +*`process.pe.architecture`*:: ++ +-- +CPU architecture target for the file. + +type: keyword + +example: x64 + +-- + *`process.pe.company`*:: + -- @@ -4835,6 +5359,18 @@ example: 6.3.9600.17415 -- +*`process.pe.imphash`*:: ++ +-- +A hash of the imports in a PE file. An imphash -- or import hash -- can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. +Learn more at https://www.fireeye.com/blog/threat-research/2014/01/tracking-malware-import-hashing.html. + +type: keyword + +example: 0c6803c4e922103c4dca5963aad36ddf + +-- + *`process.pe.original_file_name`*:: + -- @@ -5077,6 +5613,15 @@ type: keyword -- +*`related.hosts`*:: ++ +-- +All hostnames or other host identifiers seen on your event. Example identifiers include FQDNs, domain names, workstation names, or aliases. + +type: keyword + +-- + *`related.ip`*:: + -- @@ -5375,8 +5920,7 @@ example: Quebec *`server.ip`*:: + -- -IP address of the server. -Can be one or multiple IPv4 or IPv6 addresses. +IP address of the server (IPv4 or IPv6). type: ip @@ -5439,19 +5983,19 @@ format: string + -- The highest registered server domain, stripped of the subdomain. -For example, the registered domain for "foo.google.com" is "google.com". +For example, the registered domain for "foo.example.com" is "example.com". This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last two labels will not work well for TLDs such as "co.uk". type: keyword -example: google.com +example: example.com -- *`server.top_level_domain`*:: + -- -The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for google.com is "com". +The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for example.com is "com". This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last label will not work well for effective TLDs such as "co.uk". type: keyword @@ -5538,7 +6082,7 @@ type: keyword *`server.user.id`*:: + -- -Unique identifiers of the user. +Unique identifier of the user. type: keyword @@ -5562,6 +6106,17 @@ type: text -- +*`server.user.roles`*:: ++ +-- +Array of user roles at the time of the event. + +type: keyword + +example: ["kibana_admin", "reporting_user"] + +-- + [float] === service @@ -5815,8 +6370,7 @@ example: Quebec *`source.ip`*:: + -- -IP address of the source. -Can be one or multiple IPv4 or IPv6 addresses. +IP address of the source (IPv4 or IPv6). type: ip @@ -5879,19 +6433,19 @@ format: string + -- The highest registered source domain, stripped of the subdomain. -For example, the registered domain for "foo.google.com" is "google.com". +For example, the registered domain for "foo.example.com" is "example.com". This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last two labels will not work well for TLDs such as "co.uk". type: keyword -example: google.com +example: example.com -- *`source.top_level_domain`*:: + -- -The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for google.com is "com". +The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for example.com is "com". This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last label will not work well for effective TLDs such as "co.uk". type: keyword @@ -5978,7 +6532,7 @@ type: keyword *`source.user.id`*:: + -- -Unique identifiers of the user. +Unique identifier of the user. type: keyword @@ -6002,10 +6556,21 @@ type: text -- +*`source.user.roles`*:: ++ +-- +Array of user roles at the time of the event. + +type: keyword + +example: ["kibana_admin", "reporting_user"] + +-- + [float] === threat -Fields to classify events and alerts according to a threat taxonomy such as the Mitre ATT&CK framework. +Fields to classify events and alerts according to a threat taxonomy such as the MITRE ATT&CK® framework. These fields are for users to classify alerts from all of their sources (e.g. IDS, NGFW, etc.) within a common taxonomy. The threat.tactic.* are meant to capture the high level category of the threat (e.g. "impact"). The threat.technique.* fields are meant to capture which kind of approach is used by this detected threat, to accomplish the goal (e.g. "endpoint denial of service"). @@ -6023,7 +6588,7 @@ example: MITRE ATT&CK *`threat.tactic.id`*:: + -- -The id of tactic used by this threat. You can use the Mitre ATT&CK Matrix Tactic categorization, for example. (ex. https://attack.mitre.org/tactics/TA0040/ ) +The id of tactic used by this threat. You can use a MITRE ATT&CK® tactic, for example. (ex. https://attack.mitre.org/tactics/TA0040/ ) type: keyword @@ -6034,7 +6599,7 @@ example: TA0040 *`threat.tactic.name`*:: + -- -Name of the type of tactic used by this threat. You can use the Mitre ATT&CK Matrix Tactic categorization, for example. (ex. https://attack.mitre.org/tactics/TA0040/ ) +Name of the type of tactic used by this threat. You can use a MITRE ATT&CK® tactic, for example. (ex. https://attack.mitre.org/tactics/TA0040/) type: keyword @@ -6045,7 +6610,7 @@ example: impact *`threat.tactic.reference`*:: + -- -The reference url of tactic used by this threat. You can use the Mitre ATT&CK Matrix Tactic categorization, for example. (ex. https://attack.mitre.org/tactics/TA0040/ ) +The reference url of tactic used by this threat. You can use a MITRE ATT&CK® tactic, for example. (ex. https://attack.mitre.org/tactics/TA0040/ ) type: keyword @@ -6056,7 +6621,7 @@ example: https://attack.mitre.org/tactics/TA0040/ *`threat.technique.id`*:: + -- -The id of technique used by this tactic. You can use the Mitre ATT&CK Matrix Tactic categorization, for example. (ex. https://attack.mitre.org/techniques/T1499/ ) +The id of technique used by this threat. You can use a MITRE ATT&CK® technique, for example. (ex. https://attack.mitre.org/techniques/T1499/) type: keyword @@ -6067,11 +6632,11 @@ example: T1499 *`threat.technique.name`*:: + -- -The name of technique used by this tactic. You can use the Mitre ATT&CK Matrix Tactic categorization, for example. (ex. https://attack.mitre.org/techniques/T1499/ ) +The name of technique used by this threat. You can use a MITRE ATT&CK® technique, for example. (ex. https://attack.mitre.org/techniques/T1499/) type: keyword -example: endpoint denial of service +example: Endpoint Denial of Service -- @@ -6085,7 +6650,7 @@ type: text *`threat.technique.reference`*:: + -- -The reference url of technique used by this tactic. You can use the Mitre ATT&CK Matrix Tactic categorization, for example. (ex. https://attack.mitre.org/techniques/T1499/ ) +The reference url of technique used by this threat. You can use a MITRE ATT&CK® technique, for example. (ex. https://attack.mitre.org/techniques/T1499/ ) type: keyword @@ -6172,7 +6737,7 @@ Distinguished name of subject of the issuer of the x.509 certificate presented b type: keyword -example: CN=MyDomain Root CA, OU=Infrastructure Team, DC=mydomain, DC=com +example: CN=Example Root CA, OU=Infrastructure Team, DC=example, DC=com -- @@ -6212,7 +6777,7 @@ example: 1970-01-01T00:00:00.000Z *`tls.client.server_name`*:: + -- -Also called an SNI, this tells the server which hostname to which the client is attempting to connect. When this value is available, it should get copied to `destination.domain`. +Also called an SNI, this tells the server which hostname to which the client is attempting to connect to. When this value is available, it should get copied to `destination.domain`. type: keyword @@ -6227,7 +6792,7 @@ Distinguished name of subject of the x.509 certificate presented by the client. type: keyword -example: CN=myclient, OU=Documentation Team, DC=mydomain, DC=com +example: CN=myclient, OU=Documentation Team, DC=example, DC=com -- @@ -6242,319 +6807,859 @@ example: ['TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384', 'TLS_ECDHE_ECDSA_WITH_AES_256 -- -*`tls.curve`*:: +*`tls.client.x509.alternative_names`*:: + -- -String indicating the curve used for the given cipher, when applicable. +List of subject alternative names (SAN). Name types vary by certificate authority and certificate type but commonly contain IP addresses, DNS names (and wildcards), and email addresses. type: keyword -example: secp256r1 +example: *.elastic.co -- -*`tls.established`*:: +*`tls.client.x509.issuer.common_name`*:: + -- -Boolean flag indicating if the TLS negotiation was successful and transitioned to an encrypted tunnel. +List of common name (CN) of issuing certificate authority. -type: boolean +type: keyword + +example: Example SHA2 High Assurance Server CA -- -*`tls.next_protocol`*:: +*`tls.client.x509.issuer.country`*:: + -- -String indicating the protocol being tunneled. Per the values in the IANA registry (https://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml#alpn-protocol-ids), this string should be lower case. +List of country (C) codes type: keyword -example: http/1.1 +example: US -- -*`tls.resumed`*:: +*`tls.client.x509.issuer.distinguished_name`*:: + -- -Boolean flag indicating if this TLS connection was resumed from an existing TLS negotiation. +Distinguished name (DN) of issuing certificate authority. -type: boolean +type: keyword + +example: C=US, O=Example Inc, OU=www.example.com, CN=Example SHA2 High Assurance Server CA -- -*`tls.server.certificate`*:: +*`tls.client.x509.issuer.locality`*:: + -- -PEM-encoded stand-alone certificate offered by the server. This is usually mutually-exclusive of `server.certificate_chain` since this value also exists in that list. +List of locality names (L) type: keyword -example: MII... +example: Mountain View -- -*`tls.server.certificate_chain`*:: +*`tls.client.x509.issuer.organization`*:: + -- -Array of PEM-encoded certificates that make up the certificate chain offered by the server. This is usually mutually-exclusive of `server.certificate` since that value should be the first certificate in the chain. +List of organizations (O) of issuing certificate authority. type: keyword -example: ['MII...', 'MII...'] +example: Example Inc -- -*`tls.server.hash.md5`*:: +*`tls.client.x509.issuer.organizational_unit`*:: + -- -Certificate fingerprint using the MD5 digest of DER-encoded version of certificate offered by the server. For consistency with other hash values, this value should be formatted as an uppercase hash. +List of organizational units (OU) of issuing certificate authority. type: keyword -example: 0F76C7F2C55BFD7D8E8B8F4BFBF0C9EC +example: www.example.com -- -*`tls.server.hash.sha1`*:: +*`tls.client.x509.issuer.state_or_province`*:: + -- -Certificate fingerprint using the SHA1 digest of DER-encoded version of certificate offered by the server. For consistency with other hash values, this value should be formatted as an uppercase hash. +List of state or province names (ST, S, or P) type: keyword -example: 9E393D93138888D288266C2D915214D1D1CCEB2A +example: California -- -*`tls.server.hash.sha256`*:: +*`tls.client.x509.not_after`*:: + -- -Certificate fingerprint using the SHA256 digest of DER-encoded version of certificate offered by the server. For consistency with other hash values, this value should be formatted as an uppercase hash. +Time at which the certificate is no longer considered valid. -type: keyword +type: date -example: 0687F666A054EF17A08E2F2162EAB4CBC0D265E1D7875BE74BF3C712CA92DAF0 +example: 2020-07-16 03:15:39+00:00 -- -*`tls.server.issuer`*:: +*`tls.client.x509.not_before`*:: + -- -Subject of the issuer of the x.509 certificate presented by the server. +Time at which the certificate is first considered valid. -type: keyword +type: date -example: CN=MyDomain Root CA, OU=Infrastructure Team, DC=mydomain, DC=com +example: 2019-08-16 01:40:25+00:00 -- -*`tls.server.ja3s`*:: +*`tls.client.x509.public_key_algorithm`*:: + -- -A hash that identifies servers based on how they perform an SSL/TLS handshake. +Algorithm used to generate the public key. type: keyword -example: 394441ab65754e2207b1e1b457b3641d +example: RSA -- -*`tls.server.not_after`*:: +*`tls.client.x509.public_key_curve`*:: + -- -Timestamp indicating when server certificate is no longer considered valid. +The curve used by the elliptic curve public key algorithm. This is algorithm specific. -type: date +type: keyword -example: 2021-01-01T00:00:00.000Z +example: nistp521 -- -*`tls.server.not_before`*:: +*`tls.client.x509.public_key_exponent`*:: + -- -Timestamp indicating when server certificate is first considered valid. +Exponent used to derive the public key. This is algorithm specific. -type: date +type: long -example: 1970-01-01T00:00:00.000Z +example: 65537 + +Field is not indexed. -- -*`tls.server.subject`*:: +*`tls.client.x509.public_key_size`*:: + -- -Subject of the x.509 certificate presented by the server. +The size of the public key space in bits. -type: keyword +type: long -example: CN=www.mydomain.com, OU=Infrastructure Team, DC=mydomain, DC=com +example: 2048 -- -*`tls.version`*:: +*`tls.client.x509.serial_number`*:: + -- -Numeric part of the version parsed from the original string. +Unique serial number issued by the certificate authority. For consistency, if this value is alphanumeric, it should be formatted without colons and uppercase characters. type: keyword -example: 1.2 +example: 55FBB9C7DEBF09809D12CCAA -- -*`tls.version_protocol`*:: +*`tls.client.x509.signature_algorithm`*:: + -- -Normalized lowercase protocol name parsed from original string. +Identifier for certificate signature algorithm. We recommend using names found in Go Lang Crypto library. See https://github.com/golang/go/blob/go1.14/src/crypto/x509/x509.go#L337-L353. type: keyword -example: tls +example: SHA256-RSA -- -[float] -=== tracing - -Distributed tracing makes it possible to analyze performance throughout a microservice architecture all in one view. This is accomplished by tracing all of the requests - from the initial web request in the front-end service - to queries made through multiple back-end services. - - -*`tracing.trace.id`*:: +*`tls.client.x509.subject.common_name`*:: + -- -Unique identifier of the trace. -A trace groups multiple events like transactions that belong together. For example, a user request handled by multiple inter-connected services. +List of common names (CN) of subject. type: keyword -example: 4bf92f3577b34da6a3ce929d0e0e4736 +example: shared.global.example.net -- -*`tracing.transaction.id`*:: +*`tls.client.x509.subject.country`*:: + -- -Unique identifier of the transaction. -A transaction is the highest level of work measured within a service, such as a request to a server. +List of country (C) code type: keyword -example: 00f067aa0ba902b7 +example: US -- -[float] -=== url +*`tls.client.x509.subject.distinguished_name`*:: ++ +-- +Distinguished name (DN) of the certificate subject entity. -URL fields provide support for complete or partial URLs, and supports the breaking down into scheme, domain, path, and so on. +type: keyword +example: C=US, ST=California, L=San Francisco, O=Example, Inc., CN=shared.global.example.net -*`url.domain`*:: +-- + +*`tls.client.x509.subject.locality`*:: + -- -Domain of the url, such as "www.elastic.co". -In some cases a URL may refer to an IP and/or port directly, without a domain name. In this case, the IP address would go to the `domain` field. +List of locality names (L) type: keyword -example: www.elastic.co +example: San Francisco -- -*`url.extension`*:: +*`tls.client.x509.subject.organization`*:: + -- -The field contains the file extension from the original request url. -The file extension is only set if it exists, as not every url has a file extension. -The leading period must not be included. For example, the value must be "png", not ".png". +List of organizations (O) of subject. type: keyword -example: png +example: Example, Inc. -- -*`url.fragment`*:: +*`tls.client.x509.subject.organizational_unit`*:: + -- -Portion of the url after the `#`, such as "top". -The `#` is not part of the fragment. +List of organizational units (OU) of subject. type: keyword -- -*`url.full`*:: +*`tls.client.x509.subject.state_or_province`*:: + -- -If full URLs are important to your use case, they should be stored in `url.full`, whether this field is reconstructed or present in the event source. +List of state or province names (ST, S, or P) type: keyword -example: https://www.elastic.co:443/search?q=elasticsearch#top +example: California -- -*`url.full.text`*:: +*`tls.client.x509.version_number`*:: + -- -type: text +Version of x509 format. + +type: keyword + +example: 3 -- -*`url.original`*:: +*`tls.curve`*:: + -- -Unmodified original url as seen in the event source. -Note that in network monitoring, the observed URL may be a full URL, whereas in access logs, the URL is often just represented as a path. -This field is meant to represent the URL as it was observed, complete or not. +String indicating the curve used for the given cipher, when applicable. type: keyword -example: https://www.elastic.co:443/search?q=elasticsearch#top or /search?q=elasticsearch +example: secp256r1 -- -*`url.original.text`*:: +*`tls.established`*:: + -- -type: text +Boolean flag indicating if the TLS negotiation was successful and transitioned to an encrypted tunnel. + +type: boolean -- -*`url.password`*:: +*`tls.next_protocol`*:: + -- -Password of the request. +String indicating the protocol being tunneled. Per the values in the IANA registry (https://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml#alpn-protocol-ids), this string should be lower case. type: keyword +example: http/1.1 + -- -*`url.path`*:: +*`tls.resumed`*:: + -- -Path of the request, such as "/search". +Boolean flag indicating if this TLS connection was resumed from an existing TLS negotiation. -type: keyword +type: boolean -- -*`url.port`*:: +*`tls.server.certificate`*:: + -- -Port of the request, such as 443. - -type: long +PEM-encoded stand-alone certificate offered by the server. This is usually mutually-exclusive of `server.certificate_chain` since this value also exists in that list. -example: 443 +type: keyword -format: string +example: MII... -- -*`url.query`*:: +*`tls.server.certificate_chain`*:: ++ +-- +Array of PEM-encoded certificates that make up the certificate chain offered by the server. This is usually mutually-exclusive of `server.certificate` since that value should be the first certificate in the chain. + +type: keyword + +example: ['MII...', 'MII...'] + +-- + +*`tls.server.hash.md5`*:: ++ +-- +Certificate fingerprint using the MD5 digest of DER-encoded version of certificate offered by the server. For consistency with other hash values, this value should be formatted as an uppercase hash. + +type: keyword + +example: 0F76C7F2C55BFD7D8E8B8F4BFBF0C9EC + +-- + +*`tls.server.hash.sha1`*:: ++ +-- +Certificate fingerprint using the SHA1 digest of DER-encoded version of certificate offered by the server. For consistency with other hash values, this value should be formatted as an uppercase hash. + +type: keyword + +example: 9E393D93138888D288266C2D915214D1D1CCEB2A + +-- + +*`tls.server.hash.sha256`*:: ++ +-- +Certificate fingerprint using the SHA256 digest of DER-encoded version of certificate offered by the server. For consistency with other hash values, this value should be formatted as an uppercase hash. + +type: keyword + +example: 0687F666A054EF17A08E2F2162EAB4CBC0D265E1D7875BE74BF3C712CA92DAF0 + +-- + +*`tls.server.issuer`*:: ++ +-- +Subject of the issuer of the x.509 certificate presented by the server. + +type: keyword + +example: CN=Example Root CA, OU=Infrastructure Team, DC=example, DC=com + +-- + +*`tls.server.ja3s`*:: ++ +-- +A hash that identifies servers based on how they perform an SSL/TLS handshake. + +type: keyword + +example: 394441ab65754e2207b1e1b457b3641d + +-- + +*`tls.server.not_after`*:: ++ +-- +Timestamp indicating when server certificate is no longer considered valid. + +type: date + +example: 2021-01-01T00:00:00.000Z + +-- + +*`tls.server.not_before`*:: ++ +-- +Timestamp indicating when server certificate is first considered valid. + +type: date + +example: 1970-01-01T00:00:00.000Z + +-- + +*`tls.server.subject`*:: ++ +-- +Subject of the x.509 certificate presented by the server. + +type: keyword + +example: CN=www.example.com, OU=Infrastructure Team, DC=example, DC=com + +-- + +*`tls.server.x509.alternative_names`*:: ++ +-- +List of subject alternative names (SAN). Name types vary by certificate authority and certificate type but commonly contain IP addresses, DNS names (and wildcards), and email addresses. + +type: keyword + +example: *.elastic.co + +-- + +*`tls.server.x509.issuer.common_name`*:: ++ +-- +List of common name (CN) of issuing certificate authority. + +type: keyword + +example: Example SHA2 High Assurance Server CA + +-- + +*`tls.server.x509.issuer.country`*:: ++ +-- +List of country (C) codes + +type: keyword + +example: US + +-- + +*`tls.server.x509.issuer.distinguished_name`*:: ++ +-- +Distinguished name (DN) of issuing certificate authority. + +type: keyword + +example: C=US, O=Example Inc, OU=www.example.com, CN=Example SHA2 High Assurance Server CA + +-- + +*`tls.server.x509.issuer.locality`*:: ++ +-- +List of locality names (L) + +type: keyword + +example: Mountain View + +-- + +*`tls.server.x509.issuer.organization`*:: ++ +-- +List of organizations (O) of issuing certificate authority. + +type: keyword + +example: Example Inc + +-- + +*`tls.server.x509.issuer.organizational_unit`*:: ++ +-- +List of organizational units (OU) of issuing certificate authority. + +type: keyword + +example: www.example.com + +-- + +*`tls.server.x509.issuer.state_or_province`*:: ++ +-- +List of state or province names (ST, S, or P) + +type: keyword + +example: California + +-- + +*`tls.server.x509.not_after`*:: ++ +-- +Time at which the certificate is no longer considered valid. + +type: date + +example: 2020-07-16 03:15:39+00:00 + +-- + +*`tls.server.x509.not_before`*:: ++ +-- +Time at which the certificate is first considered valid. + +type: date + +example: 2019-08-16 01:40:25+00:00 + +-- + +*`tls.server.x509.public_key_algorithm`*:: ++ +-- +Algorithm used to generate the public key. + +type: keyword + +example: RSA + +-- + +*`tls.server.x509.public_key_curve`*:: ++ +-- +The curve used by the elliptic curve public key algorithm. This is algorithm specific. + +type: keyword + +example: nistp521 + +-- + +*`tls.server.x509.public_key_exponent`*:: ++ +-- +Exponent used to derive the public key. This is algorithm specific. + +type: long + +example: 65537 + +Field is not indexed. + +-- + +*`tls.server.x509.public_key_size`*:: ++ +-- +The size of the public key space in bits. + +type: long + +example: 2048 + +-- + +*`tls.server.x509.serial_number`*:: ++ +-- +Unique serial number issued by the certificate authority. For consistency, if this value is alphanumeric, it should be formatted without colons and uppercase characters. + +type: keyword + +example: 55FBB9C7DEBF09809D12CCAA + +-- + +*`tls.server.x509.signature_algorithm`*:: ++ +-- +Identifier for certificate signature algorithm. We recommend using names found in Go Lang Crypto library. See https://github.com/golang/go/blob/go1.14/src/crypto/x509/x509.go#L337-L353. + +type: keyword + +example: SHA256-RSA + +-- + +*`tls.server.x509.subject.common_name`*:: ++ +-- +List of common names (CN) of subject. + +type: keyword + +example: shared.global.example.net + +-- + +*`tls.server.x509.subject.country`*:: ++ +-- +List of country (C) code + +type: keyword + +example: US + +-- + +*`tls.server.x509.subject.distinguished_name`*:: ++ +-- +Distinguished name (DN) of the certificate subject entity. + +type: keyword + +example: C=US, ST=California, L=San Francisco, O=Example, Inc., CN=shared.global.example.net + +-- + +*`tls.server.x509.subject.locality`*:: ++ +-- +List of locality names (L) + +type: keyword + +example: San Francisco + +-- + +*`tls.server.x509.subject.organization`*:: ++ +-- +List of organizations (O) of subject. + +type: keyword + +example: Example, Inc. + +-- + +*`tls.server.x509.subject.organizational_unit`*:: ++ +-- +List of organizational units (OU) of subject. + +type: keyword + +-- + +*`tls.server.x509.subject.state_or_province`*:: ++ +-- +List of state or province names (ST, S, or P) + +type: keyword + +example: California + +-- + +*`tls.server.x509.version_number`*:: ++ +-- +Version of x509 format. + +type: keyword + +example: 3 + +-- + +*`tls.version`*:: ++ +-- +Numeric part of the version parsed from the original string. + +type: keyword + +example: 1.2 + +-- + +*`tls.version_protocol`*:: ++ +-- +Normalized lowercase protocol name parsed from original string. + +type: keyword + +example: tls + +-- + +[float] +=== tracing + +Distributed tracing makes it possible to analyze performance throughout a microservice architecture all in one view. This is accomplished by tracing all of the requests - from the initial web request in the front-end service - to queries made through multiple back-end services. + + +*`tracing.span.id`*:: ++ +-- +Unique identifier of the span within the scope of its trace. +A span represents an operation within a transaction, such as a request to another service, or a database query. + +type: keyword + +example: 3ff9a8981b7ccd5a + +-- + +*`tracing.trace.id`*:: ++ +-- +Unique identifier of the trace. +A trace groups multiple events like transactions that belong together. For example, a user request handled by multiple inter-connected services. + +type: keyword + +example: 4bf92f3577b34da6a3ce929d0e0e4736 + +-- + +*`tracing.transaction.id`*:: ++ +-- +Unique identifier of the transaction within the scope of its trace. +A transaction is the highest level of work measured within a service, such as a request to a server. + +type: keyword + +example: 00f067aa0ba902b7 + +-- + +[float] +=== url + +URL fields provide support for complete or partial URLs, and supports the breaking down into scheme, domain, path, and so on. + + +*`url.domain`*:: ++ +-- +Domain of the url, such as "www.elastic.co". +In some cases a URL may refer to an IP and/or port directly, without a domain name. In this case, the IP address would go to the `domain` field. + +type: keyword + +example: www.elastic.co + +-- + +*`url.extension`*:: ++ +-- +The field contains the file extension from the original request url. +The file extension is only set if it exists, as not every url has a file extension. +The leading period must not be included. For example, the value must be "png", not ".png". + +type: keyword + +example: png + +-- + +*`url.fragment`*:: ++ +-- +Portion of the url after the `#`, such as "top". +The `#` is not part of the fragment. + +type: keyword + +-- + +*`url.full`*:: ++ +-- +If full URLs are important to your use case, they should be stored in `url.full`, whether this field is reconstructed or present in the event source. + +type: keyword + +example: https://www.elastic.co:443/search?q=elasticsearch#top + +-- + +*`url.full.text`*:: ++ +-- +type: text + +-- + +*`url.original`*:: ++ +-- +Unmodified original url as seen in the event source. +Note that in network monitoring, the observed URL may be a full URL, whereas in access logs, the URL is often just represented as a path. +This field is meant to represent the URL as it was observed, complete or not. + +type: keyword + +example: https://www.elastic.co:443/search?q=elasticsearch#top or /search?q=elasticsearch + +-- + +*`url.original.text`*:: ++ +-- +type: text + +-- + +*`url.password`*:: ++ +-- +Password of the request. + +type: keyword + +-- + +*`url.path`*:: ++ +-- +Path of the request, such as "/search". + +type: keyword + +-- + +*`url.port`*:: ++ +-- +Port of the request, such as 443. + +type: long + +example: 443 + +format: string + +-- + +*`url.query`*:: + -- The query field describes the query string of the request, such as "q=elasticsearch". @@ -6568,12 +7673,12 @@ type: keyword + -- The highest registered url domain, stripped of the subdomain. -For example, the registered domain for "foo.google.com" is "google.com". +For example, the registered domain for "foo.example.com" is "example.com". This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last two labels will not work well for TLDs such as "co.uk". type: keyword -example: google.com +example: example.com -- @@ -6592,7 +7697,7 @@ example: https *`url.top_level_domain`*:: + -- -The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for google.com is "com". +The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for example.com is "com". This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last label will not work well for effective TLDs such as "co.uk". type: keyword @@ -6695,7 +7800,7 @@ type: keyword *`user.id`*:: + -- -Unique identifiers of the user. +Unique identifier of the user. type: keyword @@ -6719,6 +7824,17 @@ type: text -- +*`user.roles`*:: ++ +-- +Array of user roles at the time of the event. + +type: keyword + +example: ["kibana_admin", "reporting_user"] + +-- + [float] === user_agent @@ -7047,6 +8163,276 @@ example: Critical -- +[float] +=== x509 + +This implements the common core fields for x509 certificates. This information is likely logged with TLS sessions, digital signatures found in executable binaries, S/MIME information in email bodies, or analysis of files on disk. When only a single certificate is logged in an event, it should be nested under `file`. When hashes of the DER-encoded certificate are available, the `hash` data set should be populated as well (e.g. `file.hash.sha256`). For events that contain certificate information for both sides of the connection, the x509 object could be nested under the respective side of the connection information (e.g. `tls.server.x509`). + + +*`x509.alternative_names`*:: ++ +-- +List of subject alternative names (SAN). Name types vary by certificate authority and certificate type but commonly contain IP addresses, DNS names (and wildcards), and email addresses. + +type: keyword + +example: *.elastic.co + +-- + +*`x509.issuer.common_name`*:: ++ +-- +List of common name (CN) of issuing certificate authority. + +type: keyword + +example: Example SHA2 High Assurance Server CA + +-- + +*`x509.issuer.country`*:: ++ +-- +List of country (C) codes + +type: keyword + +example: US + +-- + +*`x509.issuer.distinguished_name`*:: ++ +-- +Distinguished name (DN) of issuing certificate authority. + +type: keyword + +example: C=US, O=Example Inc, OU=www.example.com, CN=Example SHA2 High Assurance Server CA + +-- + +*`x509.issuer.locality`*:: ++ +-- +List of locality names (L) + +type: keyword + +example: Mountain View + +-- + +*`x509.issuer.organization`*:: ++ +-- +List of organizations (O) of issuing certificate authority. + +type: keyword + +example: Example Inc + +-- + +*`x509.issuer.organizational_unit`*:: ++ +-- +List of organizational units (OU) of issuing certificate authority. + +type: keyword + +example: www.example.com + +-- + +*`x509.issuer.state_or_province`*:: ++ +-- +List of state or province names (ST, S, or P) + +type: keyword + +example: California + +-- + +*`x509.not_after`*:: ++ +-- +Time at which the certificate is no longer considered valid. + +type: date + +example: 2020-07-16 03:15:39+00:00 + +-- + +*`x509.not_before`*:: ++ +-- +Time at which the certificate is first considered valid. + +type: date + +example: 2019-08-16 01:40:25+00:00 + +-- + +*`x509.public_key_algorithm`*:: ++ +-- +Algorithm used to generate the public key. + +type: keyword + +example: RSA + +-- + +*`x509.public_key_curve`*:: ++ +-- +The curve used by the elliptic curve public key algorithm. This is algorithm specific. + +type: keyword + +example: nistp521 + +-- + +*`x509.public_key_exponent`*:: ++ +-- +Exponent used to derive the public key. This is algorithm specific. + +type: long + +example: 65537 + +Field is not indexed. + +-- + +*`x509.public_key_size`*:: ++ +-- +The size of the public key space in bits. + +type: long + +example: 2048 + +-- + +*`x509.serial_number`*:: ++ +-- +Unique serial number issued by the certificate authority. For consistency, if this value is alphanumeric, it should be formatted without colons and uppercase characters. + +type: keyword + +example: 55FBB9C7DEBF09809D12CCAA + +-- + +*`x509.signature_algorithm`*:: ++ +-- +Identifier for certificate signature algorithm. We recommend using names found in Go Lang Crypto library. See https://github.com/golang/go/blob/go1.14/src/crypto/x509/x509.go#L337-L353. + +type: keyword + +example: SHA256-RSA + +-- + +*`x509.subject.common_name`*:: ++ +-- +List of common names (CN) of subject. + +type: keyword + +example: shared.global.example.net + +-- + +*`x509.subject.country`*:: ++ +-- +List of country (C) code + +type: keyword + +example: US + +-- + +*`x509.subject.distinguished_name`*:: ++ +-- +Distinguished name (DN) of the certificate subject entity. + +type: keyword + +example: C=US, ST=California, L=San Francisco, O=Example, Inc., CN=shared.global.example.net + +-- + +*`x509.subject.locality`*:: ++ +-- +List of locality names (L) + +type: keyword + +example: San Francisco + +-- + +*`x509.subject.organization`*:: ++ +-- +List of organizations (O) of subject. + +type: keyword + +example: Example, Inc. + +-- + +*`x509.subject.organizational_unit`*:: ++ +-- +List of organizational units (OU) of subject. + +type: keyword + +-- + +*`x509.subject.state_or_province`*:: ++ +-- +List of state or province names (ST, S, or P) + +type: keyword + +example: California + +-- + +*`x509.version_number`*:: ++ +-- +Version of x509 format. + +type: keyword + +example: 3 + +-- + [[exported-fields-functionbeat]] == Functionbeat fields diff --git a/x-pack/functionbeat/include/fields.go b/x-pack/functionbeat/include/fields.go index bf181ef89d3..cd8c8e27675 100644 --- a/x-pack/functionbeat/include/fields.go +++ b/x-pack/functionbeat/include/fields.go @@ -19,5 +19,5 @@ func init() { // AssetFieldsYml returns asset data. // This is the base64 encoded gzipped contents of fields.yml. func AssetFieldsYml() string { - return "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" + return "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" } diff --git a/x-pack/functionbeat/provider/aws/aws/kinesis.go b/x-pack/functionbeat/provider/aws/aws/kinesis.go index 6c96285bf7f..50f0344ef57 100644 --- a/x-pack/functionbeat/provider/aws/aws/kinesis.go +++ b/x-pack/functionbeat/provider/aws/aws/kinesis.go @@ -70,7 +70,7 @@ func (s *startingPosition) Unpack(str string) error { func (s *startingPosition) String() string { v, ok := mapStartingPositionReverse[*s] if !ok { - panic("unknown starting position: " + string(*s)) + panic("unknown starting position: " + fmt.Sprint(*s)) } return v } diff --git a/x-pack/metricbeat/tests/system/test_xpack_base.py b/x-pack/metricbeat/tests/system/test_xpack_base.py index 225ad779f0d..ae19590dd24 100644 --- a/x-pack/metricbeat/tests/system/test_xpack_base.py +++ b/x-pack/metricbeat/tests/system/test_xpack_base.py @@ -2,7 +2,8 @@ import xpack_metricbeat import test_base +from beat import common_tests -class Test(xpack_metricbeat.XPackTest, test_base.Test): +class Test(xpack_metricbeat.XPackTest, test_base.Test, common_tests.TestExportsMixin): pass