elastic_common_schema/ecs.rs
1#![allow(unused)]
2
3//!
4//! # Elastic Common Schema
5//!
6
7/// ECS version this event conforms to. `ecs.version` is a required field and must exist in all events.
8/// When querying across multiple indices -- which may conform to slightly different ECS versions -- this field lets integrations adjust to the schema version of the events.
9///
10/// # Examples
11///
12/// - `1.0.0`
13pub const ECS_VERSION: &str = "ecs.version";
14
15/// The agent fields contain the data about the software entity, if any, that collects, detects, or observes events on a host, or takes measurements on a host.
16
17/// 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.
18pub mod agent {
19
20 /// Extended build information for the agent.
21 /// This field is intended to contain any build information that a data source may provide, no specific formatting is required.
22 ///
23 /// # Examples
24 ///
25 /// - `metricbeat version 7.6.0 (amd64), libbeat 7.6.0 [6a23e8f8f30f5001ba344e4e54d8d9cb82cb107c built 2020-02-05 23:10:10 +0000 UTC]`
26 pub const AGENT_BUILD_ORIGINAL: &str = "agent.build.original";
27
28 /// Ephemeral identifier of this agent (if one exists).
29 /// This id normally changes across restarts, but `agent.id` does not.
30 ///
31 /// # Examples
32 ///
33 /// - `8a4f500f`
34 pub const AGENT_EPHEMERAL_ID: &str = "agent.ephemeral_id";
35
36 /// Unique identifier of this agent (if one exists).
37 /// Example: For Beats this would be beat.id.
38 ///
39 /// # Examples
40 ///
41 /// - `8a4f500d`
42 pub const AGENT_ID: &str = "agent.id";
43
44 /// Custom name of the agent.
45 /// This is a name that can be given to an agent. This can be helpful if for example two Filebeat instances are running on the same host but a human readable separation is needed on which Filebeat instance data is coming from.
46 ///
47 /// # Examples
48 ///
49 /// - `foo`
50 pub const AGENT_NAME: &str = "agent.name";
51
52 /// Type of the agent.
53 /// 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.
54 ///
55 /// # Examples
56 ///
57 /// - `filebeat`
58 pub const AGENT_TYPE: &str = "agent.type";
59
60 /// Version of the agent.
61 ///
62 /// # Examples
63 ///
64 /// - `6.0.0-rc2`
65 pub const AGENT_VERSION: &str = "agent.version";
66}
67
68/// An autonomous system (AS) is a collection of connected Internet Protocol (IP) routing prefixes under the control of one or more network operators on behalf of a single administrative entity or domain that presents a common, clearly defined routing policy to the internet.
69pub mod as_ {
70
71 /// Unique number allocated to the autonomous system. The autonomous system number (ASN) uniquely identifies each network on the Internet.
72 ///
73 /// # Examples
74 ///
75 /// - `15169`
76 pub const AS_NUMBER: &str = "as.number";
77
78 /// Organization name.
79 ///
80 /// # Examples
81 ///
82 /// - `Google LLC`
83 pub const AS_ORGANIZATION_NAME: &str = "as.organization.name";
84}
85
86/// The `base` field set contains all fields which are at the root of the events. These fields are common across all types of events.
87pub mod base {
88
89 /// Date/time when the event originated.
90 /// This is the date/time extracted from the event, typically representing when the event was generated by the source.
91 /// If the event source has no original timestamp, this value is typically populated by the first time the event was received by the pipeline.
92 /// Required field for all events.
93 ///
94 /// # Examples
95 ///
96 /// - `2016-05-23T08:05:34.853Z`
97 pub const TIMESTAMP: &str = "@timestamp";
98
99 /// Custom key/value pairs.
100 /// Can be used to add meta information to events. Should not contain nested objects. All values are stored as keyword.
101 /// Example: `docker` and `k8s` labels.
102 ///
103 /// # Examples
104 ///
105 /// - `{"application": "foo-bar", "env": "production"}`
106 pub const LABELS: &str = "labels";
107
108 /// For log events the message field contains the log message, optimized for viewing in a log viewer.
109 /// For structured logs without an original message field, other fields can be concatenated to form a human-readable summary of the event.
110 /// If multiple messages exist, they can be combined into one message.
111 ///
112 /// # Examples
113 ///
114 /// - `Hello World`
115 pub const MESSAGE: &str = "message";
116
117 /// List of keywords used to tag each event.
118 ///
119 /// # Examples
120 ///
121 /// - `["production", "env2"]`
122 pub const TAGS: &str = "tags";
123}
124
125/// A client is defined as the initiator of a network connection for events regarding sessions, connections, or bidirectional flow records.
126
127/// For TCP events, the client is the initiator of the TCP connection that sends the SYN packet(s). For other protocols, the client is generally the initiator or requestor in the network transaction. Some systems use the term "originator" to refer the client in TCP connections. The client fields describe details about the system acting as the client in the network event. Client fields are usually populated in conjunction with server fields. Client fields are generally not populated for packet-level events.
128
129/// 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.
130pub mod client {
131
132 /// Some event client 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.
133 /// Then it should be duplicated to `.ip` or `.domain`, depending on which one it is.
134 pub const CLIENT_ADDRESS: &str = "client.address";
135
136 /// Unique number allocated to the autonomous system. The autonomous system number (ASN) uniquely identifies each network on the Internet.
137 ///
138 /// # Examples
139 ///
140 /// - `15169`
141 pub const CLIENT_AS_NUMBER: &str = "client.as.number";
142
143 /// Organization name.
144 ///
145 /// # Examples
146 ///
147 /// - `Google LLC`
148 pub const CLIENT_AS_ORGANIZATION_NAME: &str = "client.as.organization.name";
149
150 /// Bytes sent from the client to the server.
151 ///
152 /// # Examples
153 ///
154 /// - `184`
155 pub const CLIENT_BYTES: &str = "client.bytes";
156
157 /// The domain name of the client system.
158 /// This value may be a host name, a fully qualified domain name, or another host naming format. The value may derive from the original event or be added from enrichment.
159 ///
160 /// # Examples
161 ///
162 /// - `foo.example.com`
163 pub const CLIENT_DOMAIN: &str = "client.domain";
164
165 /// City name.
166 ///
167 /// # Examples
168 ///
169 /// - `Montreal`
170 pub const CLIENT_GEO_CITY_NAME: &str = "client.geo.city_name";
171
172 /// Two-letter code representing continent's name.
173 ///
174 /// # Examples
175 ///
176 /// - `NA`
177 pub const CLIENT_GEO_CONTINENT_CODE: &str = "client.geo.continent_code";
178
179 /// Name of the continent.
180 ///
181 /// # Examples
182 ///
183 /// - `North America`
184 pub const CLIENT_GEO_CONTINENT_NAME: &str = "client.geo.continent_name";
185
186 /// Country ISO code.
187 ///
188 /// # Examples
189 ///
190 /// - `CA`
191 pub const CLIENT_GEO_COUNTRY_ISO_CODE: &str = "client.geo.country_iso_code";
192
193 /// Country name.
194 ///
195 /// # Examples
196 ///
197 /// - `Canada`
198 pub const CLIENT_GEO_COUNTRY_NAME: &str = "client.geo.country_name";
199
200 /// Longitude and latitude.
201 ///
202 /// # Examples
203 ///
204 /// - `{ "lon": -73.614830, "lat": 45.505918 }`
205 pub const CLIENT_GEO_LOCATION: &str = "client.geo.location";
206
207 /// User-defined description of a location, at the level of granularity they care about.
208 /// Could be the name of their data centers, the floor number, if this describes a local physical entity, city names.
209 /// Not typically used in automated geolocation.
210 ///
211 /// # Examples
212 ///
213 /// - `boston-dc`
214 pub const CLIENT_GEO_NAME: &str = "client.geo.name";
215
216 /// Postal code associated with the location.
217 /// Values appropriate for this field may also be known as a postcode or ZIP code and will vary widely from country to country.
218 ///
219 /// # Examples
220 ///
221 /// - `94040`
222 pub const CLIENT_GEO_POSTAL_CODE: &str = "client.geo.postal_code";
223
224 /// Region ISO code.
225 ///
226 /// # Examples
227 ///
228 /// - `CA-QC`
229 pub const CLIENT_GEO_REGION_ISO_CODE: &str = "client.geo.region_iso_code";
230
231 /// Region name.
232 ///
233 /// # Examples
234 ///
235 /// - `Quebec`
236 pub const CLIENT_GEO_REGION_NAME: &str = "client.geo.region_name";
237
238 /// The time zone of the location, such as IANA time zone name.
239 ///
240 /// # Examples
241 ///
242 /// - `America/Argentina/Buenos_Aires`
243 pub const CLIENT_GEO_TIMEZONE: &str = "client.geo.timezone";
244
245 /// IP address of the client (IPv4 or IPv6).
246 pub const CLIENT_IP: &str = "client.ip";
247
248 /// MAC address of the client.
249 /// The notation format from RFC 7042 is suggested: Each octet (that is, 8-bit byte) is represented by two [uppercase] hexadecimal digits giving the value of the octet as an unsigned integer. Successive octets are separated by a hyphen.
250 ///
251 /// # Examples
252 ///
253 /// - `00-00-5E-00-53-23`
254 pub const CLIENT_MAC: &str = "client.mac";
255
256 /// Translated IP of source based NAT sessions (e.g. internal client to internet).
257 /// Typically connections traversing load balancers, firewalls, or routers.
258 pub const CLIENT_NAT_IP: &str = "client.nat.ip";
259
260 /// Translated port of source based NAT sessions (e.g. internal client to internet).
261 /// Typically connections traversing load balancers, firewalls, or routers.
262 pub const CLIENT_NAT_PORT: &str = "client.nat.port";
263
264 /// Packets sent from the client to the server.
265 ///
266 /// # Examples
267 ///
268 /// - `12`
269 pub const CLIENT_PACKETS: &str = "client.packets";
270
271 /// Port of the client.
272 pub const CLIENT_PORT: &str = "client.port";
273
274 /// The highest registered client domain, stripped of the subdomain.
275 /// For example, the registered domain for "foo.example.com" is "example.com".
276 /// 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".
277 ///
278 /// # Examples
279 ///
280 /// - `example.com`
281 pub const CLIENT_REGISTERED_DOMAIN: &str = "client.registered_domain";
282
283 /// The subdomain portion of a fully qualified domain name includes all of the names except the host name under the registered_domain. In a partially qualified domain, or if the the qualification level of the full name cannot be determined, subdomain contains all of the names below the registered domain.
284 /// For example the subdomain portion of "www.east.mydomain.co.uk" is "east". If the domain has multiple levels of subdomain, such as "sub2.sub1.example.com", the subdomain field should contain "sub2.sub1", with no trailing period.
285 ///
286 /// # Examples
287 ///
288 /// - `east`
289 pub const CLIENT_SUBDOMAIN: &str = "client.subdomain";
290
291 /// 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".
292 /// 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".
293 ///
294 /// # Examples
295 ///
296 /// - `co.uk`
297 pub const CLIENT_TOP_LEVEL_DOMAIN: &str = "client.top_level_domain";
298
299 /// Name of the directory the user is a member of.
300 /// For example, an LDAP or Active Directory domain name.
301 pub const CLIENT_USER_DOMAIN: &str = "client.user.domain";
302
303 /// User email address.
304 pub const CLIENT_USER_EMAIL: &str = "client.user.email";
305
306 /// User's full name, if available.
307 ///
308 /// # Examples
309 ///
310 /// - `Albert Einstein`
311 pub const CLIENT_USER_FULL_NAME: &str = "client.user.full_name";
312
313 /// Name of the directory the group is a member of.
314 /// For example, an LDAP or Active Directory domain name.
315 pub const CLIENT_USER_GROUP_DOMAIN: &str = "client.user.group.domain";
316
317 /// Unique identifier for the group on the system/platform.
318 pub const CLIENT_USER_GROUP_ID: &str = "client.user.group.id";
319
320 /// Name of the group.
321 pub const CLIENT_USER_GROUP_NAME: &str = "client.user.group.name";
322
323 /// Unique user hash to correlate information for a user in anonymized form.
324 /// Useful if `user.id` or `user.name` contain confidential information and cannot be used.
325 pub const CLIENT_USER_HASH: &str = "client.user.hash";
326
327 /// Unique identifier of the user.
328 ///
329 /// # Examples
330 ///
331 /// - `S-1-5-21-202424912787-2692429404-2351956786-1000`
332 pub const CLIENT_USER_ID: &str = "client.user.id";
333
334 /// Short name or login of the user.
335 ///
336 /// # Examples
337 ///
338 /// - `a.einstein`
339 pub const CLIENT_USER_NAME: &str = "client.user.name";
340
341 /// Array of user roles at the time of the event.
342 ///
343 /// # Examples
344 ///
345 /// - `["kibana_admin", "reporting_user"]`
346 pub const CLIENT_USER_ROLES: &str = "client.user.roles";
347}
348
349/// Fields related to the cloud or infrastructure the events are coming from.
350pub mod cloud {
351
352 /// The cloud account or organization id used to identify different entities in a multi-tenant environment.
353 /// Examples: AWS account id, Google Cloud ORG Id, or other unique identifier.
354 ///
355 /// # Examples
356 ///
357 /// - `666777888999`
358 pub const CLOUD_ACCOUNT_ID: &str = "cloud.account.id";
359
360 /// The cloud account name or alias used to identify different entities in a multi-tenant environment.
361 /// Examples: AWS account name, Google Cloud ORG display name.
362 ///
363 /// # Examples
364 ///
365 /// - `elastic-dev`
366 pub const CLOUD_ACCOUNT_NAME: &str = "cloud.account.name";
367
368 /// Availability zone in which this host, resource, or service is located.
369 ///
370 /// # Examples
371 ///
372 /// - `us-east-1c`
373 pub const CLOUD_AVAILABILITY_ZONE: &str = "cloud.availability_zone";
374
375 /// Instance ID of the host machine.
376 ///
377 /// # Examples
378 ///
379 /// - `i-1234567890abcdef0`
380 pub const CLOUD_INSTANCE_ID: &str = "cloud.instance.id";
381
382 /// Instance name of the host machine.
383 pub const CLOUD_INSTANCE_NAME: &str = "cloud.instance.name";
384
385 /// Machine type of the host machine.
386 ///
387 /// # Examples
388 ///
389 /// - `t2.medium`
390 pub const CLOUD_MACHINE_TYPE: &str = "cloud.machine.type";
391
392 /// The cloud account or organization id used to identify different entities in a multi-tenant environment.
393 /// Examples: AWS account id, Google Cloud ORG Id, or other unique identifier.
394 ///
395 /// # Examples
396 ///
397 /// - `666777888999`
398 pub const CLOUD_ORIGIN_ACCOUNT_ID: &str = "cloud.origin.account.id";
399
400 /// The cloud account name or alias used to identify different entities in a multi-tenant environment.
401 /// Examples: AWS account name, Google Cloud ORG display name.
402 ///
403 /// # Examples
404 ///
405 /// - `elastic-dev`
406 pub const CLOUD_ORIGIN_ACCOUNT_NAME: &str = "cloud.origin.account.name";
407
408 /// Availability zone in which this host, resource, or service is located.
409 ///
410 /// # Examples
411 ///
412 /// - `us-east-1c`
413 pub const CLOUD_ORIGIN_AVAILABILITY_ZONE: &str = "cloud.origin.availability_zone";
414
415 /// Instance ID of the host machine.
416 ///
417 /// # Examples
418 ///
419 /// - `i-1234567890abcdef0`
420 pub const CLOUD_ORIGIN_INSTANCE_ID: &str = "cloud.origin.instance.id";
421
422 /// Instance name of the host machine.
423 pub const CLOUD_ORIGIN_INSTANCE_NAME: &str = "cloud.origin.instance.name";
424
425 /// Machine type of the host machine.
426 ///
427 /// # Examples
428 ///
429 /// - `t2.medium`
430 pub const CLOUD_ORIGIN_MACHINE_TYPE: &str = "cloud.origin.machine.type";
431
432 /// The cloud project identifier.
433 /// Examples: Google Cloud Project id, Azure Project id.
434 ///
435 /// # Examples
436 ///
437 /// - `my-project`
438 pub const CLOUD_ORIGIN_PROJECT_ID: &str = "cloud.origin.project.id";
439
440 /// The cloud project name.
441 /// Examples: Google Cloud Project name, Azure Project name.
442 ///
443 /// # Examples
444 ///
445 /// - `my project`
446 pub const CLOUD_ORIGIN_PROJECT_NAME: &str = "cloud.origin.project.name";
447
448 /// Name of the cloud provider. Example values are aws, azure, gcp, or digitalocean.
449 ///
450 /// # Examples
451 ///
452 /// - `aws`
453 pub const CLOUD_ORIGIN_PROVIDER: &str = "cloud.origin.provider";
454
455 /// Region in which this host, resource, or service is located.
456 ///
457 /// # Examples
458 ///
459 /// - `us-east-1`
460 pub const CLOUD_ORIGIN_REGION: &str = "cloud.origin.region";
461
462 /// The cloud service name is intended to distinguish services running on different platforms within a provider, eg AWS EC2 vs Lambda, GCP GCE vs App Engine, Azure VM vs App Server.
463 /// Examples: app engine, app service, cloud run, fargate, lambda.
464 ///
465 /// # Examples
466 ///
467 /// - `lambda`
468 pub const CLOUD_ORIGIN_SERVICE_NAME: &str = "cloud.origin.service.name";
469
470 /// The cloud project identifier.
471 /// Examples: Google Cloud Project id, Azure Project id.
472 ///
473 /// # Examples
474 ///
475 /// - `my-project`
476 pub const CLOUD_PROJECT_ID: &str = "cloud.project.id";
477
478 /// The cloud project name.
479 /// Examples: Google Cloud Project name, Azure Project name.
480 ///
481 /// # Examples
482 ///
483 /// - `my project`
484 pub const CLOUD_PROJECT_NAME: &str = "cloud.project.name";
485
486 /// Name of the cloud provider. Example values are aws, azure, gcp, or digitalocean.
487 ///
488 /// # Examples
489 ///
490 /// - `aws`
491 pub const CLOUD_PROVIDER: &str = "cloud.provider";
492
493 /// Region in which this host, resource, or service is located.
494 ///
495 /// # Examples
496 ///
497 /// - `us-east-1`
498 pub const CLOUD_REGION: &str = "cloud.region";
499
500 /// The cloud service name is intended to distinguish services running on different platforms within a provider, eg AWS EC2 vs Lambda, GCP GCE vs App Engine, Azure VM vs App Server.
501 /// Examples: app engine, app service, cloud run, fargate, lambda.
502 ///
503 /// # Examples
504 ///
505 /// - `lambda`
506 pub const CLOUD_SERVICE_NAME: &str = "cloud.service.name";
507
508 /// The cloud account or organization id used to identify different entities in a multi-tenant environment.
509 /// Examples: AWS account id, Google Cloud ORG Id, or other unique identifier.
510 ///
511 /// # Examples
512 ///
513 /// - `666777888999`
514 pub const CLOUD_TARGET_ACCOUNT_ID: &str = "cloud.target.account.id";
515
516 /// The cloud account name or alias used to identify different entities in a multi-tenant environment.
517 /// Examples: AWS account name, Google Cloud ORG display name.
518 ///
519 /// # Examples
520 ///
521 /// - `elastic-dev`
522 pub const CLOUD_TARGET_ACCOUNT_NAME: &str = "cloud.target.account.name";
523
524 /// Availability zone in which this host, resource, or service is located.
525 ///
526 /// # Examples
527 ///
528 /// - `us-east-1c`
529 pub const CLOUD_TARGET_AVAILABILITY_ZONE: &str = "cloud.target.availability_zone";
530
531 /// Instance ID of the host machine.
532 ///
533 /// # Examples
534 ///
535 /// - `i-1234567890abcdef0`
536 pub const CLOUD_TARGET_INSTANCE_ID: &str = "cloud.target.instance.id";
537
538 /// Instance name of the host machine.
539 pub const CLOUD_TARGET_INSTANCE_NAME: &str = "cloud.target.instance.name";
540
541 /// Machine type of the host machine.
542 ///
543 /// # Examples
544 ///
545 /// - `t2.medium`
546 pub const CLOUD_TARGET_MACHINE_TYPE: &str = "cloud.target.machine.type";
547
548 /// The cloud project identifier.
549 /// Examples: Google Cloud Project id, Azure Project id.
550 ///
551 /// # Examples
552 ///
553 /// - `my-project`
554 pub const CLOUD_TARGET_PROJECT_ID: &str = "cloud.target.project.id";
555
556 /// The cloud project name.
557 /// Examples: Google Cloud Project name, Azure Project name.
558 ///
559 /// # Examples
560 ///
561 /// - `my project`
562 pub const CLOUD_TARGET_PROJECT_NAME: &str = "cloud.target.project.name";
563
564 /// Name of the cloud provider. Example values are aws, azure, gcp, or digitalocean.
565 ///
566 /// # Examples
567 ///
568 /// - `aws`
569 pub const CLOUD_TARGET_PROVIDER: &str = "cloud.target.provider";
570
571 /// Region in which this host, resource, or service is located.
572 ///
573 /// # Examples
574 ///
575 /// - `us-east-1`
576 pub const CLOUD_TARGET_REGION: &str = "cloud.target.region";
577
578 /// The cloud service name is intended to distinguish services running on different platforms within a provider, eg AWS EC2 vs Lambda, GCP GCE vs App Engine, Azure VM vs App Server.
579 /// Examples: app engine, app service, cloud run, fargate, lambda.
580 ///
581 /// # Examples
582 ///
583 /// - `lambda`
584 pub const CLOUD_TARGET_SERVICE_NAME: &str = "cloud.target.service.name";
585}
586
587/// These fields contain information about binary code signatures.
588pub mod code_signature {
589
590 /// The hashing algorithm used to sign the process.
591 /// This value can distinguish signatures when a file is signed multiple times by the same signer but with a different digest algorithm.
592 ///
593 /// # Examples
594 ///
595 /// - `sha256`
596 pub const CODE_SIGNATURE_DIGEST_ALGORITHM: &str = "code_signature.digest_algorithm";
597
598 /// Boolean to capture if a signature is present.
599 ///
600 /// # Examples
601 ///
602 /// - `true`
603 pub const CODE_SIGNATURE_EXISTS: &str = "code_signature.exists";
604
605 /// The identifier used to sign the process.
606 /// This is used to identify the application manufactured by a software vendor. The field is relevant to Apple *OS only.
607 ///
608 /// # Examples
609 ///
610 /// - `com.apple.xpc.proxy`
611 pub const CODE_SIGNATURE_SIGNING_ID: &str = "code_signature.signing_id";
612
613 /// Additional information about the certificate status.
614 /// 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.
615 ///
616 /// # Examples
617 ///
618 /// - `ERROR_UNTRUSTED_ROOT`
619 pub const CODE_SIGNATURE_STATUS: &str = "code_signature.status";
620
621 /// Subject name of the code signer
622 ///
623 /// # Examples
624 ///
625 /// - `Microsoft Corporation`
626 pub const CODE_SIGNATURE_SUBJECT_NAME: &str = "code_signature.subject_name";
627
628 /// The team identifier used to sign the process.
629 /// This is used to identify the team or vendor of a software product. The field is relevant to Apple *OS only.
630 ///
631 /// # Examples
632 ///
633 /// - `EQHXZ8M8AV`
634 pub const CODE_SIGNATURE_TEAM_ID: &str = "code_signature.team_id";
635
636 /// Date and time when the code signature was generated and signed.
637 ///
638 /// # Examples
639 ///
640 /// - `2021-01-01T12:10:30Z`
641 pub const CODE_SIGNATURE_TIMESTAMP: &str = "code_signature.timestamp";
642
643 /// Stores the trust status of the certificate chain.
644 /// Validating the trust of the certificate chain may be complicated, and this field should only be populated by tools that actively check the status.
645 ///
646 /// # Examples
647 ///
648 /// - `true`
649 pub const CODE_SIGNATURE_TRUSTED: &str = "code_signature.trusted";
650
651 /// Boolean to capture if the digital signature is verified against the binary content.
652 /// Leave unpopulated if a certificate was unchecked.
653 ///
654 /// # Examples
655 ///
656 /// - `true`
657 pub const CODE_SIGNATURE_VALID: &str = "code_signature.valid";
658}
659
660/// Container fields are used for meta information about the specific container that is the source of information.
661
662/// These fields help correlate data based containers from any runtime.
663pub mod container {
664
665 /// Percent CPU used which is normalized by the number of CPU cores and it ranges from 0 to 1. Scaling factor: 1000.
666 pub const CONTAINER_CPU_USAGE: &str = "container.cpu.usage";
667
668 /// The total number of bytes (gauge) read successfully (aggregated from all disks) since the last metric collection.
669 pub const CONTAINER_DISK_READ_BYTES: &str = "container.disk.read.bytes";
670
671 /// The total number of bytes (gauge) written successfully (aggregated from all disks) since the last metric collection.
672 pub const CONTAINER_DISK_WRITE_BYTES: &str = "container.disk.write.bytes";
673
674 /// Unique container id.
675 pub const CONTAINER_ID: &str = "container.id";
676
677 /// An array of digests of the image the container was built on. Each digest consists of the hash algorithm and value in this format: `algorithm:value`. Algorithm names should align with the field names in the ECS hash field set.
678 ///
679 /// # Examples
680 ///
681 /// - `[sha256:f8fefc80e3273dc756f288a63945820d6476ad64883892c771b5e2ece6bf1b26]`
682 pub const CONTAINER_IMAGE_HASH_ALL: &str = "container.image.hash.all";
683
684 /// Name of the image the container was built on.
685 pub const CONTAINER_IMAGE_NAME: &str = "container.image.name";
686
687 /// Container image tags.
688 pub const CONTAINER_IMAGE_TAG: &str = "container.image.tag";
689
690 /// Image labels.
691 pub const CONTAINER_LABELS: &str = "container.labels";
692
693 /// Memory usage percentage and it ranges from 0 to 1. Scaling factor: 1000.
694 pub const CONTAINER_MEMORY_USAGE: &str = "container.memory.usage";
695
696 /// Container name.
697 pub const CONTAINER_NAME: &str = "container.name";
698
699 /// The number of bytes (gauge) sent out on all network interfaces by the container since the last metric collection.
700 pub const CONTAINER_NETWORK_EGRESS_BYTES: &str = "container.network.egress.bytes";
701
702 /// The number of bytes received (gauge) on all network interfaces by the container since the last metric collection.
703 pub const CONTAINER_NETWORK_INGRESS_BYTES: &str = "container.network.ingress.bytes";
704
705 /// Runtime managing this container.
706 ///
707 /// # Examples
708 ///
709 /// - `docker`
710 pub const CONTAINER_RUNTIME: &str = "container.runtime";
711
712 /// Indicates whether the container is running in privileged mode.
713 pub const CONTAINER_SECURITY_CONTEXT_PRIVILEGED: &str = "container.security_context.privileged";
714}
715
716/// The data_stream fields take part in defining the new data stream naming scheme.
717
718/// In the new data stream naming scheme the value of the data stream fields combine to the name of the actual data stream in the following manner: `{data_stream.type}-{data_stream.dataset}-{data_stream.namespace}`. This means the fields can only contain characters that are valid as part of names of data streams. More details about this can be found in this https://www.elastic.co/blog/an-introduction-to-the-elastic-data-stream-naming-scheme[blog post].
719
720/// An Elasticsearch data stream consists of one or more backing indices, and a data stream name forms part of the backing indices names. Due to this convention, data streams must also follow index naming restrictions. For example, data stream names cannot include `\`, `/`, `*`, `?`, `"`, `<`, `>`, `|`, ` ` (space character), `,`, or `#`. Please see the Elasticsearch reference for additional https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-create-index.html#indices-create-api-path-params[restrictions].
721pub mod data_stream {
722
723 /// The field can contain anything that makes sense to signify the source of the data.
724 /// Examples include `nginx.access`, `prometheus`, `endpoint` etc. For data streams that otherwise fit, but that do not have dataset set we use the value "generic" for the dataset value. `event.dataset` should have the same value as `data_stream.dataset`.
725 /// Beyond the Elasticsearch data stream naming criteria noted above, the `dataset` value has additional restrictions:
726 /// * Must not contain `-`
727 /// * No longer than 100 characters
728 ///
729 /// # Examples
730 ///
731 /// - `nginx.access`
732 pub const DATA_STREAM_DATASET: &str = "data_stream.dataset";
733
734 /// A user defined namespace. Namespaces are useful to allow grouping of data.
735 /// Many users already organize their indices this way, and the data stream naming scheme now provides this best practice as a default. Many users will populate this field with `default`. If no value is used, it falls back to `default`.
736 /// Beyond the Elasticsearch index naming criteria noted above, `namespace` value has the additional restrictions:
737 /// * Must not contain `-`
738 /// * No longer than 100 characters
739 ///
740 /// # Examples
741 ///
742 /// - `production`
743 pub const DATA_STREAM_NAMESPACE: &str = "data_stream.namespace";
744
745 /// An overarching type for the data stream.
746 /// Currently allowed values are "logs" and "metrics". We expect to also add "traces" and "synthetics" in the near future.
747 ///
748 /// # Examples
749 ///
750 /// - `logs`
751 pub const DATA_STREAM_TYPE: &str = "data_stream.type";
752}
753
754/// Destination fields capture details about the receiver of a network exchange/packet. These fields are populated from a network event, packet, or other event containing details of a network transaction.
755
756/// Destination fields are usually populated in conjunction with source fields. The source and destination fields are considered the baseline and should always be filled if an event contains source and destination details from a network transaction. If the event also contains identification of the client and server roles, then the client and server fields should also be populated.
757pub mod destination {
758
759 /// Some event destination 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.
760 /// Then it should be duplicated to `.ip` or `.domain`, depending on which one it is.
761 pub const DESTINATION_ADDRESS: &str = "destination.address";
762
763 /// Unique number allocated to the autonomous system. The autonomous system number (ASN) uniquely identifies each network on the Internet.
764 ///
765 /// # Examples
766 ///
767 /// - `15169`
768 pub const DESTINATION_AS_NUMBER: &str = "destination.as.number";
769
770 /// Organization name.
771 ///
772 /// # Examples
773 ///
774 /// - `Google LLC`
775 pub const DESTINATION_AS_ORGANIZATION_NAME: &str = "destination.as.organization.name";
776
777 /// Bytes sent from the destination to the source.
778 ///
779 /// # Examples
780 ///
781 /// - `184`
782 pub const DESTINATION_BYTES: &str = "destination.bytes";
783
784 /// The domain name of the destination system.
785 /// This value may be a host name, a fully qualified domain name, or another host naming format. The value may derive from the original event or be added from enrichment.
786 ///
787 /// # Examples
788 ///
789 /// - `foo.example.com`
790 pub const DESTINATION_DOMAIN: &str = "destination.domain";
791
792 /// City name.
793 ///
794 /// # Examples
795 ///
796 /// - `Montreal`
797 pub const DESTINATION_GEO_CITY_NAME: &str = "destination.geo.city_name";
798
799 /// Two-letter code representing continent's name.
800 ///
801 /// # Examples
802 ///
803 /// - `NA`
804 pub const DESTINATION_GEO_CONTINENT_CODE: &str = "destination.geo.continent_code";
805
806 /// Name of the continent.
807 ///
808 /// # Examples
809 ///
810 /// - `North America`
811 pub const DESTINATION_GEO_CONTINENT_NAME: &str = "destination.geo.continent_name";
812
813 /// Country ISO code.
814 ///
815 /// # Examples
816 ///
817 /// - `CA`
818 pub const DESTINATION_GEO_COUNTRY_ISO_CODE: &str = "destination.geo.country_iso_code";
819
820 /// Country name.
821 ///
822 /// # Examples
823 ///
824 /// - `Canada`
825 pub const DESTINATION_GEO_COUNTRY_NAME: &str = "destination.geo.country_name";
826
827 /// Longitude and latitude.
828 ///
829 /// # Examples
830 ///
831 /// - `{ "lon": -73.614830, "lat": 45.505918 }`
832 pub const DESTINATION_GEO_LOCATION: &str = "destination.geo.location";
833
834 /// User-defined description of a location, at the level of granularity they care about.
835 /// Could be the name of their data centers, the floor number, if this describes a local physical entity, city names.
836 /// Not typically used in automated geolocation.
837 ///
838 /// # Examples
839 ///
840 /// - `boston-dc`
841 pub const DESTINATION_GEO_NAME: &str = "destination.geo.name";
842
843 /// Postal code associated with the location.
844 /// Values appropriate for this field may also be known as a postcode or ZIP code and will vary widely from country to country.
845 ///
846 /// # Examples
847 ///
848 /// - `94040`
849 pub const DESTINATION_GEO_POSTAL_CODE: &str = "destination.geo.postal_code";
850
851 /// Region ISO code.
852 ///
853 /// # Examples
854 ///
855 /// - `CA-QC`
856 pub const DESTINATION_GEO_REGION_ISO_CODE: &str = "destination.geo.region_iso_code";
857
858 /// Region name.
859 ///
860 /// # Examples
861 ///
862 /// - `Quebec`
863 pub const DESTINATION_GEO_REGION_NAME: &str = "destination.geo.region_name";
864
865 /// The time zone of the location, such as IANA time zone name.
866 ///
867 /// # Examples
868 ///
869 /// - `America/Argentina/Buenos_Aires`
870 pub const DESTINATION_GEO_TIMEZONE: &str = "destination.geo.timezone";
871
872 /// IP address of the destination (IPv4 or IPv6).
873 pub const DESTINATION_IP: &str = "destination.ip";
874
875 /// MAC address of the destination.
876 /// The notation format from RFC 7042 is suggested: Each octet (that is, 8-bit byte) is represented by two [uppercase] hexadecimal digits giving the value of the octet as an unsigned integer. Successive octets are separated by a hyphen.
877 ///
878 /// # Examples
879 ///
880 /// - `00-00-5E-00-53-23`
881 pub const DESTINATION_MAC: &str = "destination.mac";
882
883 /// Translated ip of destination based NAT sessions (e.g. internet to private DMZ)
884 /// Typically used with load balancers, firewalls, or routers.
885 pub const DESTINATION_NAT_IP: &str = "destination.nat.ip";
886
887 /// Port the source session is translated to by NAT Device.
888 /// Typically used with load balancers, firewalls, or routers.
889 pub const DESTINATION_NAT_PORT: &str = "destination.nat.port";
890
891 /// Packets sent from the destination to the source.
892 ///
893 /// # Examples
894 ///
895 /// - `12`
896 pub const DESTINATION_PACKETS: &str = "destination.packets";
897
898 /// Port of the destination.
899 pub const DESTINATION_PORT: &str = "destination.port";
900
901 /// The highest registered destination domain, stripped of the subdomain.
902 /// For example, the registered domain for "foo.example.com" is "example.com".
903 /// 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".
904 ///
905 /// # Examples
906 ///
907 /// - `example.com`
908 pub const DESTINATION_REGISTERED_DOMAIN: &str = "destination.registered_domain";
909
910 /// The subdomain portion of a fully qualified domain name includes all of the names except the host name under the registered_domain. In a partially qualified domain, or if the the qualification level of the full name cannot be determined, subdomain contains all of the names below the registered domain.
911 /// For example the subdomain portion of "www.east.mydomain.co.uk" is "east". If the domain has multiple levels of subdomain, such as "sub2.sub1.example.com", the subdomain field should contain "sub2.sub1", with no trailing period.
912 ///
913 /// # Examples
914 ///
915 /// - `east`
916 pub const DESTINATION_SUBDOMAIN: &str = "destination.subdomain";
917
918 /// 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".
919 /// 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".
920 ///
921 /// # Examples
922 ///
923 /// - `co.uk`
924 pub const DESTINATION_TOP_LEVEL_DOMAIN: &str = "destination.top_level_domain";
925
926 /// Name of the directory the user is a member of.
927 /// For example, an LDAP or Active Directory domain name.
928 pub const DESTINATION_USER_DOMAIN: &str = "destination.user.domain";
929
930 /// User email address.
931 pub const DESTINATION_USER_EMAIL: &str = "destination.user.email";
932
933 /// User's full name, if available.
934 ///
935 /// # Examples
936 ///
937 /// - `Albert Einstein`
938 pub const DESTINATION_USER_FULL_NAME: &str = "destination.user.full_name";
939
940 /// Name of the directory the group is a member of.
941 /// For example, an LDAP or Active Directory domain name.
942 pub const DESTINATION_USER_GROUP_DOMAIN: &str = "destination.user.group.domain";
943
944 /// Unique identifier for the group on the system/platform.
945 pub const DESTINATION_USER_GROUP_ID: &str = "destination.user.group.id";
946
947 /// Name of the group.
948 pub const DESTINATION_USER_GROUP_NAME: &str = "destination.user.group.name";
949
950 /// Unique user hash to correlate information for a user in anonymized form.
951 /// Useful if `user.id` or `user.name` contain confidential information and cannot be used.
952 pub const DESTINATION_USER_HASH: &str = "destination.user.hash";
953
954 /// Unique identifier of the user.
955 ///
956 /// # Examples
957 ///
958 /// - `S-1-5-21-202424912787-2692429404-2351956786-1000`
959 pub const DESTINATION_USER_ID: &str = "destination.user.id";
960
961 /// Short name or login of the user.
962 ///
963 /// # Examples
964 ///
965 /// - `a.einstein`
966 pub const DESTINATION_USER_NAME: &str = "destination.user.name";
967
968 /// Array of user roles at the time of the event.
969 ///
970 /// # Examples
971 ///
972 /// - `["kibana_admin", "reporting_user"]`
973 pub const DESTINATION_USER_ROLES: &str = "destination.user.roles";
974}
975
976/// Fields that describe a device instance and its characteristics. Data collected for applications and processes running on a (mobile) device can be enriched with these fields to describe the identity, type and other characteristics of the device.
977
978/// This field group definition is based on the Device namespace of the OpenTelemetry Semantic Conventions (https://opentelemetry.io/docs/reference/specification/resource/semantic_conventions/device/).
979pub mod device {
980
981 /// The unique identifier of a device. The identifier must not change across application sessions but stay fixed for an instance of a (mobile) device.
982 /// On iOS, this value must be equal to the vendor identifier (https://developer.apple.com/documentation/uikit/uidevice/1620059-identifierforvendor). On Android, this value must be equal to the Firebase Installation ID or a globally unique UUID which is persisted across sessions in your application.
983 /// For GDPR and data protection law reasons this identifier should not carry information that would allow to identify a user.
984 ///
985 /// # Examples
986 ///
987 /// - `00000000-54b3-e7c7-0000-000046bffd97`
988 pub const DEVICE_ID: &str = "device.id";
989
990 /// The vendor name of the device manufacturer.
991 ///
992 /// # Examples
993 ///
994 /// - `Samsung`
995 pub const DEVICE_MANUFACTURER: &str = "device.manufacturer";
996
997 /// The machine readable identifier of the device model.
998 ///
999 /// # Examples
1000 ///
1001 /// - `SM-G920F`
1002 pub const DEVICE_MODEL_IDENTIFIER: &str = "device.model.identifier";
1003
1004 /// The human readable marketing name of the device model.
1005 ///
1006 /// # Examples
1007 ///
1008 /// - `Samsung Galaxy S6`
1009 pub const DEVICE_MODEL_NAME: &str = "device.model.name";
1010}
1011
1012/// These fields contain information about code libraries dynamically loaded into processes.
1013
1014///
1015
1016/// Many operating systems refer to "shared code libraries" with different names, but this field set refers to all of the following:
1017
1018/// * Dynamic-link library (`.dll`) commonly used on Windows
1019
1020/// * Shared Object (`.so`) commonly used on Unix-like operating systems
1021
1022/// * Dynamic library (`.dylib`) commonly used on macOS
1023pub mod dll {
1024
1025 /// The hashing algorithm used to sign the process.
1026 /// This value can distinguish signatures when a file is signed multiple times by the same signer but with a different digest algorithm.
1027 ///
1028 /// # Examples
1029 ///
1030 /// - `sha256`
1031 pub const DLL_CODE_SIGNATURE_DIGEST_ALGORITHM: &str = "dll.code_signature.digest_algorithm";
1032
1033 /// Boolean to capture if a signature is present.
1034 ///
1035 /// # Examples
1036 ///
1037 /// - `true`
1038 pub const DLL_CODE_SIGNATURE_EXISTS: &str = "dll.code_signature.exists";
1039
1040 /// The identifier used to sign the process.
1041 /// This is used to identify the application manufactured by a software vendor. The field is relevant to Apple *OS only.
1042 ///
1043 /// # Examples
1044 ///
1045 /// - `com.apple.xpc.proxy`
1046 pub const DLL_CODE_SIGNATURE_SIGNING_ID: &str = "dll.code_signature.signing_id";
1047
1048 /// Additional information about the certificate status.
1049 /// 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.
1050 ///
1051 /// # Examples
1052 ///
1053 /// - `ERROR_UNTRUSTED_ROOT`
1054 pub const DLL_CODE_SIGNATURE_STATUS: &str = "dll.code_signature.status";
1055
1056 /// Subject name of the code signer
1057 ///
1058 /// # Examples
1059 ///
1060 /// - `Microsoft Corporation`
1061 pub const DLL_CODE_SIGNATURE_SUBJECT_NAME: &str = "dll.code_signature.subject_name";
1062
1063 /// The team identifier used to sign the process.
1064 /// This is used to identify the team or vendor of a software product. The field is relevant to Apple *OS only.
1065 ///
1066 /// # Examples
1067 ///
1068 /// - `EQHXZ8M8AV`
1069 pub const DLL_CODE_SIGNATURE_TEAM_ID: &str = "dll.code_signature.team_id";
1070
1071 /// Date and time when the code signature was generated and signed.
1072 ///
1073 /// # Examples
1074 ///
1075 /// - `2021-01-01T12:10:30Z`
1076 pub const DLL_CODE_SIGNATURE_TIMESTAMP: &str = "dll.code_signature.timestamp";
1077
1078 /// Stores the trust status of the certificate chain.
1079 /// Validating the trust of the certificate chain may be complicated, and this field should only be populated by tools that actively check the status.
1080 ///
1081 /// # Examples
1082 ///
1083 /// - `true`
1084 pub const DLL_CODE_SIGNATURE_TRUSTED: &str = "dll.code_signature.trusted";
1085
1086 /// Boolean to capture if the digital signature is verified against the binary content.
1087 /// Leave unpopulated if a certificate was unchecked.
1088 ///
1089 /// # Examples
1090 ///
1091 /// - `true`
1092 pub const DLL_CODE_SIGNATURE_VALID: &str = "dll.code_signature.valid";
1093
1094 /// MD5 hash.
1095 pub const DLL_HASH_MD5: &str = "dll.hash.md5";
1096
1097 /// SHA1 hash.
1098 pub const DLL_HASH_SHA1: &str = "dll.hash.sha1";
1099
1100 /// SHA256 hash.
1101 pub const DLL_HASH_SHA256: &str = "dll.hash.sha256";
1102
1103 /// SHA384 hash.
1104 pub const DLL_HASH_SHA384: &str = "dll.hash.sha384";
1105
1106 /// SHA512 hash.
1107 pub const DLL_HASH_SHA512: &str = "dll.hash.sha512";
1108
1109 /// SSDEEP hash.
1110 pub const DLL_HASH_SSDEEP: &str = "dll.hash.ssdeep";
1111
1112 /// TLSH hash.
1113 pub const DLL_HASH_TLSH: &str = "dll.hash.tlsh";
1114
1115 /// Name of the library.
1116 /// This generally maps to the name of the file on disk.
1117 ///
1118 /// # Examples
1119 ///
1120 /// - `kernel32.dll`
1121 pub const DLL_NAME: &str = "dll.name";
1122
1123 /// Full file path of the library.
1124 ///
1125 /// # Examples
1126 ///
1127 /// - `C:\Windows\System32\kernel32.dll`
1128 pub const DLL_PATH: &str = "dll.path";
1129
1130 /// CPU architecture target for the file.
1131 ///
1132 /// # Examples
1133 ///
1134 /// - `x64`
1135 pub const DLL_PE_ARCHITECTURE: &str = "dll.pe.architecture";
1136
1137 /// Internal company name of the file, provided at compile-time.
1138 ///
1139 /// # Examples
1140 ///
1141 /// - `Microsoft Corporation`
1142 pub const DLL_PE_COMPANY: &str = "dll.pe.company";
1143
1144 /// Internal description of the file, provided at compile-time.
1145 ///
1146 /// # Examples
1147 ///
1148 /// - `Paint`
1149 pub const DLL_PE_DESCRIPTION: &str = "dll.pe.description";
1150
1151 /// Internal version of the file, provided at compile-time.
1152 ///
1153 /// # Examples
1154 ///
1155 /// - `6.3.9600.17415`
1156 pub const DLL_PE_FILE_VERSION: &str = "dll.pe.file_version";
1157
1158 /// A hash of the Go language imports in a PE file excluding standard library imports. An 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.
1159 /// The algorithm used to calculate the Go symbol hash and a reference implementation are available [here](https://github.com/elastic/toutoumomoma).
1160 ///
1161 /// # Examples
1162 ///
1163 /// - `10bddcb4cee42080f76c88d9ff964491`
1164 pub const DLL_PE_GO_IMPORT_HASH: &str = "dll.pe.go_import_hash";
1165
1166 /// List of imported Go language element names and types.
1167 pub const DLL_PE_GO_IMPORTS: &str = "dll.pe.go_imports";
1168
1169 /// Shannon entropy calculation from the list of Go imports.
1170 pub const DLL_PE_GO_IMPORTS_NAMES_ENTROPY: &str = "dll.pe.go_imports_names_entropy";
1171
1172 /// Variance for Shannon entropy calculation from the list of Go imports.
1173 pub const DLL_PE_GO_IMPORTS_NAMES_VAR_ENTROPY: &str = "dll.pe.go_imports_names_var_entropy";
1174
1175 /// Set to true if the file is a Go executable that has had its symbols stripped or obfuscated and false if an unobfuscated Go executable.
1176 pub const DLL_PE_GO_STRIPPED: &str = "dll.pe.go_stripped";
1177
1178 /// 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.
1179 /// Learn more at https://www.fireeye.com/blog/threat-research/2014/01/tracking-malware-import-hashing.html.
1180 ///
1181 /// # Examples
1182 ///
1183 /// - `0c6803c4e922103c4dca5963aad36ddf`
1184 pub const DLL_PE_IMPHASH: &str = "dll.pe.imphash";
1185
1186 /// A hash of the imports in a PE file. An 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.
1187 /// This is a synonym for imphash.
1188 ///
1189 /// # Examples
1190 ///
1191 /// - `d41d8cd98f00b204e9800998ecf8427e`
1192 pub const DLL_PE_IMPORT_HASH: &str = "dll.pe.import_hash";
1193
1194 /// List of imported element names and types.
1195 pub const DLL_PE_IMPORTS: &str = "dll.pe.imports";
1196
1197 /// Shannon entropy calculation from the list of imported element names and types.
1198 pub const DLL_PE_IMPORTS_NAMES_ENTROPY: &str = "dll.pe.imports_names_entropy";
1199
1200 /// Variance for Shannon entropy calculation from the list of imported element names and types.
1201 pub const DLL_PE_IMPORTS_NAMES_VAR_ENTROPY: &str = "dll.pe.imports_names_var_entropy";
1202
1203 /// Internal name of the file, provided at compile-time.
1204 ///
1205 /// # Examples
1206 ///
1207 /// - `MSPAINT.EXE`
1208 pub const DLL_PE_ORIGINAL_FILE_NAME: &str = "dll.pe.original_file_name";
1209
1210 /// A hash of the PE header and data from one or more PE sections. An pehash can be used to cluster files by transforming structural information about a file into a hash value.
1211 /// Learn more at https://www.usenix.org/legacy/events/leet09/tech/full_papers/wicherski/wicherski_html/index.html.
1212 ///
1213 /// # Examples
1214 ///
1215 /// - `73ff189b63cd6be375a7ff25179a38d347651975`
1216 pub const DLL_PE_PEHASH: &str = "dll.pe.pehash";
1217
1218 /// Internal product name of the file, provided at compile-time.
1219 ///
1220 /// # Examples
1221 ///
1222 /// - `Microsoft® Windows® Operating System`
1223 pub const DLL_PE_PRODUCT: &str = "dll.pe.product";
1224
1225 /// An array containing an object for each section of the PE file.
1226 /// The keys that should be present in these objects are defined by sub-fields underneath `pe.sections.*`.
1227 pub const DLL_PE_SECTIONS: &str = "dll.pe.sections";
1228
1229 /// Shannon entropy calculation from the section.
1230 pub const DLL_PE_SECTIONS_ENTROPY: &str = "dll.pe.sections.entropy";
1231
1232 /// PE Section List name.
1233 pub const DLL_PE_SECTIONS_NAME: &str = "dll.pe.sections.name";
1234
1235 /// PE Section List physical size.
1236 pub const DLL_PE_SECTIONS_PHYSICAL_SIZE: &str = "dll.pe.sections.physical_size";
1237
1238 /// Variance for Shannon entropy calculation from the section.
1239 pub const DLL_PE_SECTIONS_VAR_ENTROPY: &str = "dll.pe.sections.var_entropy";
1240
1241 /// PE Section List virtual size. This is always the same as `physical_size`.
1242 pub const DLL_PE_SECTIONS_VIRTUAL_SIZE: &str = "dll.pe.sections.virtual_size";
1243}
1244
1245/// Fields describing DNS queries and answers.
1246
1247/// DNS events should either represent a single DNS query prior to getting answers (`dns.type:query`) or they should represent a full exchange and contain the query details as well as all of the answers that were provided for this query (`dns.type:answer`).
1248pub mod dns {
1249
1250 /// An array containing an object for each answer section returned by the server.
1251 /// The main keys that should be present in these objects are defined by ECS. Records that have more information may contain more keys than what ECS defines.
1252 /// Not all DNS data sources give all details about DNS answers. At minimum, answer objects must contain the `data` key. If more information is available, map as much of it to ECS as possible, and add any additional fields to the answer objects as custom fields.
1253 pub const DNS_ANSWERS: &str = "dns.answers";
1254
1255 /// The class of DNS data contained in this resource record.
1256 ///
1257 /// # Examples
1258 ///
1259 /// - `IN`
1260 pub const DNS_ANSWERS_CLASS: &str = "dns.answers.class";
1261
1262 /// The data describing the resource.
1263 /// The meaning of this data depends on the type and class of the resource record.
1264 ///
1265 /// # Examples
1266 ///
1267 /// - `10.10.10.10`
1268 pub const DNS_ANSWERS_DATA: &str = "dns.answers.data";
1269
1270 /// The domain name to which this resource record pertains.
1271 /// 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.
1272 ///
1273 /// # Examples
1274 ///
1275 /// - `www.example.com`
1276 pub const DNS_ANSWERS_NAME: &str = "dns.answers.name";
1277
1278 /// The time interval in seconds that this resource record may be cached before it should be discarded. Zero values mean that the data should not be cached.
1279 ///
1280 /// # Examples
1281 ///
1282 /// - `180`
1283 pub const DNS_ANSWERS_TTL: &str = "dns.answers.ttl";
1284
1285 /// The type of data contained in this resource record.
1286 ///
1287 /// # Examples
1288 ///
1289 /// - `CNAME`
1290 pub const DNS_ANSWERS_TYPE: &str = "dns.answers.type";
1291
1292 /// Array of 2 letter DNS header flags.
1293 ///
1294 /// # Examples
1295 ///
1296 /// - `["RD", "RA"]`
1297 pub const DNS_HEADER_FLAGS: &str = "dns.header_flags";
1298
1299 /// The DNS packet identifier assigned by the program that generated the query. The identifier is copied to the response.
1300 ///
1301 /// # Examples
1302 ///
1303 /// - `62111`
1304 pub const DNS_ID: &str = "dns.id";
1305
1306 /// The DNS operation code that specifies the kind of query in the message. This value is set by the originator of a query and copied into the response.
1307 ///
1308 /// # Examples
1309 ///
1310 /// - `QUERY`
1311 pub const DNS_OP_CODE: &str = "dns.op_code";
1312
1313 /// The class of records being queried.
1314 ///
1315 /// # Examples
1316 ///
1317 /// - `IN`
1318 pub const DNS_QUESTION_CLASS: &str = "dns.question.class";
1319
1320 /// The name being queried.
1321 /// If the name field contains non-printable characters (below 32 or above 126), 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.
1322 ///
1323 /// # Examples
1324 ///
1325 /// - `www.example.com`
1326 pub const DNS_QUESTION_NAME: &str = "dns.question.name";
1327
1328 /// The highest registered domain, stripped of the subdomain.
1329 /// For example, the registered domain for "foo.example.com" is "example.com".
1330 /// 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".
1331 ///
1332 /// # Examples
1333 ///
1334 /// - `example.com`
1335 pub const DNS_QUESTION_REGISTERED_DOMAIN: &str = "dns.question.registered_domain";
1336
1337 /// The subdomain is all of the labels under the registered_domain.
1338 /// If the domain has multiple levels of subdomain, such as "sub2.sub1.example.com", the subdomain field should contain "sub2.sub1", with no trailing period.
1339 ///
1340 /// # Examples
1341 ///
1342 /// - `www`
1343 pub const DNS_QUESTION_SUBDOMAIN: &str = "dns.question.subdomain";
1344
1345 /// 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".
1346 /// 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".
1347 ///
1348 /// # Examples
1349 ///
1350 /// - `co.uk`
1351 pub const DNS_QUESTION_TOP_LEVEL_DOMAIN: &str = "dns.question.top_level_domain";
1352
1353 /// The type of record being queried.
1354 ///
1355 /// # Examples
1356 ///
1357 /// - `AAAA`
1358 pub const DNS_QUESTION_TYPE: &str = "dns.question.type";
1359
1360 /// Array containing all IPs seen in `answers.data`.
1361 /// The `answers` array can be difficult to use, because of the variety of data formats it can contain. Extracting all IP addresses seen in there to `dns.resolved_ip` makes it possible to index them as IP addresses, and makes them easier to visualize and query for.
1362 ///
1363 /// # Examples
1364 ///
1365 /// - `["10.10.10.10", "10.10.10.11"]`
1366 pub const DNS_RESOLVED_IP: &str = "dns.resolved_ip";
1367
1368 /// The DNS response code.
1369 ///
1370 /// # Examples
1371 ///
1372 /// - `NOERROR`
1373 pub const DNS_RESPONSE_CODE: &str = "dns.response_code";
1374
1375 /// The type of DNS event captured, query or answer.
1376 /// If your source of DNS events only gives you DNS queries, you should only create dns events of type `dns.type:query`.
1377 /// If your source of DNS events gives you answers as well, you should create one event per query (optionally as soon as the query is seen). And a second event containing all query details as well as an array of answers.
1378 ///
1379 /// # Examples
1380 ///
1381 /// - `answer`
1382 pub const DNS_TYPE: &str = "dns.type";
1383}
1384
1385/// These fields contain Linux Executable Linkable Format (ELF) metadata.
1386pub mod elf {
1387
1388 /// Machine architecture of the ELF file.
1389 ///
1390 /// # Examples
1391 ///
1392 /// - `x86-64`
1393 pub const ELF_ARCHITECTURE: &str = "elf.architecture";
1394
1395 /// Byte sequence of ELF file.
1396 ///
1397 /// # Examples
1398 ///
1399 /// - `Little Endian`
1400 pub const ELF_BYTE_ORDER: &str = "elf.byte_order";
1401
1402 /// CPU type of the ELF file.
1403 ///
1404 /// # Examples
1405 ///
1406 /// - `Intel`
1407 pub const ELF_CPU_TYPE: &str = "elf.cpu_type";
1408
1409 /// Extracted when possible from the file's metadata. Indicates when it was built or compiled. It can also be faked by malware creators.
1410 pub const ELF_CREATION_DATE: &str = "elf.creation_date";
1411
1412 /// List of exported element names and types.
1413 pub const ELF_EXPORTS: &str = "elf.exports";
1414
1415 /// A hash of the Go language imports in an ELF file excluding standard library imports. An 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.
1416 /// The algorithm used to calculate the Go symbol hash and a reference implementation are available [here](https://github.com/elastic/toutoumomoma).
1417 ///
1418 /// # Examples
1419 ///
1420 /// - `10bddcb4cee42080f76c88d9ff964491`
1421 pub const ELF_GO_IMPORT_HASH: &str = "elf.go_import_hash";
1422
1423 /// List of imported Go language element names and types.
1424 pub const ELF_GO_IMPORTS: &str = "elf.go_imports";
1425
1426 /// Shannon entropy calculation from the list of Go imports.
1427 pub const ELF_GO_IMPORTS_NAMES_ENTROPY: &str = "elf.go_imports_names_entropy";
1428
1429 /// Variance for Shannon entropy calculation from the list of Go imports.
1430 pub const ELF_GO_IMPORTS_NAMES_VAR_ENTROPY: &str = "elf.go_imports_names_var_entropy";
1431
1432 /// Set to true if the file is a Go executable that has had its symbols stripped or obfuscated and false if an unobfuscated Go executable.
1433 pub const ELF_GO_STRIPPED: &str = "elf.go_stripped";
1434
1435 /// Version of the ELF Application Binary Interface (ABI).
1436 pub const ELF_HEADER_ABI_VERSION: &str = "elf.header.abi_version";
1437
1438 /// Header class of the ELF file.
1439 pub const ELF_HEADER_CLASS: &str = "elf.header.class";
1440
1441 /// Data table of the ELF header.
1442 pub const ELF_HEADER_DATA: &str = "elf.header.data";
1443
1444 /// Header entrypoint of the ELF file.
1445 pub const ELF_HEADER_ENTRYPOINT: &str = "elf.header.entrypoint";
1446
1447 /// "0x1" for original ELF files.
1448 pub const ELF_HEADER_OBJECT_VERSION: &str = "elf.header.object_version";
1449
1450 /// Application Binary Interface (ABI) of the Linux OS.
1451 pub const ELF_HEADER_OS_ABI: &str = "elf.header.os_abi";
1452
1453 /// Header type of the ELF file.
1454 pub const ELF_HEADER_TYPE: &str = "elf.header.type";
1455
1456 /// Version of the ELF header.
1457 pub const ELF_HEADER_VERSION: &str = "elf.header.version";
1458
1459 /// A hash of the imports in an ELF file. An 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.
1460 /// This is an ELF implementation of the Windows PE imphash.
1461 ///
1462 /// # Examples
1463 ///
1464 /// - `d41d8cd98f00b204e9800998ecf8427e`
1465 pub const ELF_IMPORT_HASH: &str = "elf.import_hash";
1466
1467 /// List of imported element names and types.
1468 pub const ELF_IMPORTS: &str = "elf.imports";
1469
1470 /// Shannon entropy calculation from the list of imported element names and types.
1471 pub const ELF_IMPORTS_NAMES_ENTROPY: &str = "elf.imports_names_entropy";
1472
1473 /// Variance for Shannon entropy calculation from the list of imported element names and types.
1474 pub const ELF_IMPORTS_NAMES_VAR_ENTROPY: &str = "elf.imports_names_var_entropy";
1475
1476 /// An array containing an object for each section of the ELF file.
1477 /// The keys that should be present in these objects are defined by sub-fields underneath `elf.sections.*`.
1478 pub const ELF_SECTIONS: &str = "elf.sections";
1479
1480 /// Chi-square probability distribution of the section.
1481 pub const ELF_SECTIONS_CHI2: &str = "elf.sections.chi2";
1482
1483 /// Shannon entropy calculation from the section.
1484 pub const ELF_SECTIONS_ENTROPY: &str = "elf.sections.entropy";
1485
1486 /// ELF Section List flags.
1487 pub const ELF_SECTIONS_FLAGS: &str = "elf.sections.flags";
1488
1489 /// ELF Section List name.
1490 pub const ELF_SECTIONS_NAME: &str = "elf.sections.name";
1491
1492 /// ELF Section List offset.
1493 pub const ELF_SECTIONS_PHYSICAL_OFFSET: &str = "elf.sections.physical_offset";
1494
1495 /// ELF Section List physical size.
1496 pub const ELF_SECTIONS_PHYSICAL_SIZE: &str = "elf.sections.physical_size";
1497
1498 /// ELF Section List type.
1499 pub const ELF_SECTIONS_TYPE: &str = "elf.sections.type";
1500
1501 /// Variance for Shannon entropy calculation from the section.
1502 pub const ELF_SECTIONS_VAR_ENTROPY: &str = "elf.sections.var_entropy";
1503
1504 /// ELF Section List virtual address.
1505 pub const ELF_SECTIONS_VIRTUAL_ADDRESS: &str = "elf.sections.virtual_address";
1506
1507 /// ELF Section List virtual size.
1508 pub const ELF_SECTIONS_VIRTUAL_SIZE: &str = "elf.sections.virtual_size";
1509
1510 /// An array containing an object for each segment of the ELF file.
1511 /// The keys that should be present in these objects are defined by sub-fields underneath `elf.segments.*`.
1512 pub const ELF_SEGMENTS: &str = "elf.segments";
1513
1514 /// ELF object segment sections.
1515 pub const ELF_SEGMENTS_SECTIONS: &str = "elf.segments.sections";
1516
1517 /// ELF object segment type.
1518 pub const ELF_SEGMENTS_TYPE: &str = "elf.segments.type";
1519
1520 /// List of shared libraries used by this ELF object.
1521 pub const ELF_SHARED_LIBRARIES: &str = "elf.shared_libraries";
1522
1523 /// telfhash symbol hash for ELF file.
1524 pub const ELF_TELFHASH: &str = "elf.telfhash";
1525}
1526
1527/// Event details relating to an email transaction.
1528
1529/// This field set focuses on the email message header, body, and attachments. Network protocols that send and receive email messages such as SMTP are outside the scope of the `email.*` fields.
1530pub mod email {
1531
1532 /// A list of objects describing the attachment files sent along with an email message.
1533 pub const EMAIL_ATTACHMENTS: &str = "email.attachments";
1534
1535 /// Attachment file extension, excluding the leading dot.
1536 ///
1537 /// # Examples
1538 ///
1539 /// - `txt`
1540 pub const EMAIL_ATTACHMENTS_FILE_EXTENSION: &str = "email.attachments.file.extension";
1541
1542 /// MD5 hash.
1543 pub const EMAIL_ATTACHMENTS_FILE_HASH_MD5: &str = "email.attachments.file.hash.md5";
1544
1545 /// SHA1 hash.
1546 pub const EMAIL_ATTACHMENTS_FILE_HASH_SHA1: &str = "email.attachments.file.hash.sha1";
1547
1548 /// SHA256 hash.
1549 pub const EMAIL_ATTACHMENTS_FILE_HASH_SHA256: &str = "email.attachments.file.hash.sha256";
1550
1551 /// SHA384 hash.
1552 pub const EMAIL_ATTACHMENTS_FILE_HASH_SHA384: &str = "email.attachments.file.hash.sha384";
1553
1554 /// SHA512 hash.
1555 pub const EMAIL_ATTACHMENTS_FILE_HASH_SHA512: &str = "email.attachments.file.hash.sha512";
1556
1557 /// SSDEEP hash.
1558 pub const EMAIL_ATTACHMENTS_FILE_HASH_SSDEEP: &str = "email.attachments.file.hash.ssdeep";
1559
1560 /// TLSH hash.
1561 pub const EMAIL_ATTACHMENTS_FILE_HASH_TLSH: &str = "email.attachments.file.hash.tlsh";
1562
1563 /// The MIME media type of the attachment.
1564 /// This value will typically be extracted from the `Content-Type` MIME header field.
1565 ///
1566 /// # Examples
1567 ///
1568 /// - `text/plain`
1569 pub const EMAIL_ATTACHMENTS_FILE_MIME_TYPE: &str = "email.attachments.file.mime_type";
1570
1571 /// Name of the attachment file including the file extension.
1572 ///
1573 /// # Examples
1574 ///
1575 /// - `attachment.txt`
1576 pub const EMAIL_ATTACHMENTS_FILE_NAME: &str = "email.attachments.file.name";
1577
1578 /// Attachment file size in bytes.
1579 ///
1580 /// # Examples
1581 ///
1582 /// - `64329`
1583 pub const EMAIL_ATTACHMENTS_FILE_SIZE: &str = "email.attachments.file.size";
1584
1585 /// The email address of BCC recipient
1586 ///
1587 /// # Examples
1588 ///
1589 /// - `bcc.user1@example.com`
1590 pub const EMAIL_BCC_ADDRESS: &str = "email.bcc.address";
1591
1592 /// The email address of CC recipient
1593 ///
1594 /// # Examples
1595 ///
1596 /// - `cc.user1@example.com`
1597 pub const EMAIL_CC_ADDRESS: &str = "email.cc.address";
1598
1599 /// Information about how the message is to be displayed.
1600 /// Typically a MIME type.
1601 ///
1602 /// # Examples
1603 ///
1604 /// - `text/plain`
1605 pub const EMAIL_CONTENT_TYPE: &str = "email.content_type";
1606
1607 /// The date and time when the email message was received by the service or client.
1608 ///
1609 /// # Examples
1610 ///
1611 /// - `2020-11-10T22:12:34.8196921Z`
1612 pub const EMAIL_DELIVERY_TIMESTAMP: &str = "email.delivery_timestamp";
1613
1614 /// The direction of the message based on the sending and receiving domains.
1615 ///
1616 /// # Examples
1617 ///
1618 /// - `inbound`
1619 pub const EMAIL_DIRECTION: &str = "email.direction";
1620
1621 /// The email address of the sender, typically from the RFC 5322 `From:` header field.
1622 ///
1623 /// # Examples
1624 ///
1625 /// - `sender@example.com`
1626 pub const EMAIL_FROM_ADDRESS: &str = "email.from.address";
1627
1628 /// Unique identifier given to the email by the source that created the event.
1629 /// Identifier is not persistent across hops.
1630 ///
1631 /// # Examples
1632 ///
1633 /// - `c26dbea0-80d5-463b-b93c-4e8b708219ce`
1634 pub const EMAIL_LOCAL_ID: &str = "email.local_id";
1635
1636 /// Identifier from the RFC 5322 `Message-ID:` email header that refers to a particular email message.
1637 ///
1638 /// # Examples
1639 ///
1640 /// - `81ce15$8r2j59@mail01.example.com`
1641 pub const EMAIL_MESSAGE_ID: &str = "email.message_id";
1642
1643 /// The date and time the email message was composed. Many email clients will fill in this value automatically when the message is sent by a user.
1644 ///
1645 /// # Examples
1646 ///
1647 /// - `2020-11-10T22:12:34.8196921Z`
1648 pub const EMAIL_ORIGINATION_TIMESTAMP: &str = "email.origination_timestamp";
1649
1650 /// The address that replies should be delivered to based on the value in the RFC 5322 `Reply-To:` header.
1651 ///
1652 /// # Examples
1653 ///
1654 /// - `reply.here@example.com`
1655 pub const EMAIL_REPLY_TO_ADDRESS: &str = "email.reply_to.address";
1656
1657 /// Per RFC 5322, specifies the address responsible for the actual transmission of the message.
1658 pub const EMAIL_SENDER_ADDRESS: &str = "email.sender.address";
1659
1660 /// A brief summary of the topic of the message.
1661 ///
1662 /// # Examples
1663 ///
1664 /// - `Please see this important message.`
1665 pub const EMAIL_SUBJECT: &str = "email.subject";
1666
1667 /// The email address of recipient
1668 ///
1669 /// # Examples
1670 ///
1671 /// - `user1@example.com`
1672 pub const EMAIL_TO_ADDRESS: &str = "email.to.address";
1673
1674 /// The name of the application that was used to draft and send the original email message.
1675 ///
1676 /// # Examples
1677 ///
1678 /// - `Spambot v2.5`
1679 pub const EMAIL_X_MAILER: &str = "email.x_mailer";
1680}
1681
1682/// These fields can represent errors of any kind.
1683
1684/// Use them for errors that happen while fetching events or in cases where the event itself contains an error.
1685pub mod error {
1686
1687 /// Error code describing the error.
1688 pub const ERROR_CODE: &str = "error.code";
1689
1690 /// Unique identifier for the error.
1691 pub const ERROR_ID: &str = "error.id";
1692
1693 /// Error message.
1694 pub const ERROR_MESSAGE: &str = "error.message";
1695
1696 /// The stack trace of this error in plain text.
1697 pub const ERROR_STACK_TRACE: &str = "error.stack_trace";
1698
1699 /// The type of the error, for example the class name of the exception.
1700 ///
1701 /// # Examples
1702 ///
1703 /// - `java.lang.NullPointerException`
1704 pub const ERROR_TYPE: &str = "error.type";
1705}
1706
1707/// The event fields are used for context information about the log or metric event itself.
1708
1709/// A log is defined as an event containing details of something that happened. Log events must include the time at which the thing happened. Examples of log events include a process starting on a host, a network packet being sent from a source to a destination, or a network connection between a client and a server being initiated or closed. A metric is defined as an event containing one or more numerical measurements and the time at which the measurement was taken. Examples of metric events include memory pressure measured on a host and device temperature. See the `event.kind` definition in this section for additional details about metric and state events.
1710pub mod event {
1711
1712 /// The action captured by the event.
1713 /// This describes the information in the event. It is more specific than `event.category`. Examples are `group-add`, `process-started`, `file-created`. The value is normally defined by the implementer.
1714 ///
1715 /// # Examples
1716 ///
1717 /// - `user-password-change`
1718 pub const EVENT_ACTION: &str = "event.action";
1719
1720 /// Agents are normally responsible for populating the `agent.id` field value. If the system receiving events is capable of validating the value based on authentication information for the client then this field can be used to reflect the outcome of that validation.
1721 /// For example if the agent's connection is authenticated with mTLS and the client cert contains the ID of the agent to which the cert was issued then the `agent.id` value in events can be checked against the certificate. If the values match then `event.agent_id_status: verified` is added to the event, otherwise one of the other allowed values should be used.
1722 /// If no validation is performed then the field should be omitted.
1723 /// The allowed values are:
1724 /// `verified` - The `agent.id` field value matches expected value obtained from auth metadata.
1725 /// `mismatch` - The `agent.id` field value does not match the expected value obtained from auth metadata.
1726 /// `missing` - There was no `agent.id` field in the event to validate.
1727 /// `auth_metadata_missing` - There was no auth metadata or it was missing information about the agent ID.
1728 ///
1729 /// # Examples
1730 ///
1731 /// - `verified`
1732 pub const EVENT_AGENT_ID_STATUS: &str = "event.agent_id_status";
1733
1734 /// This is one of four ECS Categorization Fields, and indicates the second level in the ECS category hierarchy.
1735 /// `event.category` represents the "big buckets" of ECS categories. For example, filtering on `event.category:process` yields all events relating to process activity. This field is closely related to `event.type`, which is used as a subcategory.
1736 /// This field is an array. This will allow proper categorization of some events that fall in multiple categories.
1737 ///
1738 /// # Examples
1739 ///
1740 /// - `authentication`
1741 pub const EVENT_CATEGORY: &str = "event.category";
1742
1743 /// Identification code for this event, if one exists.
1744 /// Some event sources use event codes to identify messages unambiguously, regardless of message language or wording adjustments over time. An example of this is the Windows Event ID.
1745 ///
1746 /// # Examples
1747 ///
1748 /// - `4648`
1749 pub const EVENT_CODE: &str = "event.code";
1750
1751 /// `event.created` contains the date/time when the event was first read by an agent, or by your pipeline.
1752 /// This field is distinct from `@timestamp` in that `@timestamp` typically contain the time extracted from the original event.
1753 /// In most situations, these two timestamps will be slightly different. The difference can be used to calculate the delay between your source generating an event, and the time when your agent first processed it. This can be used to monitor your agent's or pipeline's ability to keep up with your event source.
1754 /// In case the two timestamps are identical, `@timestamp` should be used.
1755 ///
1756 /// # Examples
1757 ///
1758 /// - `2016-05-23T08:05:34.857Z`
1759 pub const EVENT_CREATED: &str = "event.created";
1760
1761 /// Name of the dataset.
1762 /// If an event source publishes more than one type of log or events (e.g. access log, error log), the dataset is used to specify which one the event comes from.
1763 /// It's recommended but not required to start the dataset name with the module name, followed by a dot, then the dataset name.
1764 ///
1765 /// # Examples
1766 ///
1767 /// - `apache.access`
1768 pub const EVENT_DATASET: &str = "event.dataset";
1769
1770 /// Duration of the event in nanoseconds.
1771 /// If `event.start` and `event.end` are known this value should be the difference between the end and start time.
1772 pub const EVENT_DURATION: &str = "event.duration";
1773
1774 /// `event.end` contains the date when the event ended or when the activity was last observed.
1775 pub const EVENT_END: &str = "event.end";
1776
1777 /// Hash (perhaps logstash fingerprint) of raw field to be able to demonstrate log integrity.
1778 ///
1779 /// # Examples
1780 ///
1781 /// - `123456789012345678901234567890ABCD`
1782 pub const EVENT_HASH: &str = "event.hash";
1783
1784 /// Unique ID to describe the event.
1785 ///
1786 /// # Examples
1787 ///
1788 /// - `8a4f500d`
1789 pub const EVENT_ID: &str = "event.id";
1790
1791 /// Timestamp when an event arrived in the central data store.
1792 /// This is different from `@timestamp`, which is when the event originally occurred. It's also different from `event.created`, which is meant to capture the first time an agent saw the event.
1793 /// In normal conditions, assuming no tampering, the timestamps should chronologically look like this: `@timestamp` < `event.created` < `event.ingested`.
1794 ///
1795 /// # Examples
1796 ///
1797 /// - `2016-05-23T08:05:35.101Z`
1798 pub const EVENT_INGESTED: &str = "event.ingested";
1799
1800 /// This is one of four ECS Categorization Fields, and indicates the highest level in the ECS category hierarchy.
1801 /// `event.kind` gives high-level information about what type of information the event contains, without being specific to the contents of the event. For example, values of this field distinguish alert events from metric events.
1802 /// The value of this field can be used to inform how these kinds of events should be handled. They may warrant different retention, different access control, it may also help understand whether the data is coming in at a regular interval or not.
1803 ///
1804 /// # Examples
1805 ///
1806 /// - `alert`
1807 pub const EVENT_KIND: &str = "event.kind";
1808
1809 /// Name of the module this data is coming from.
1810 /// If your monitoring agent supports the concept of modules or plugins to process events of a given source (e.g. Apache logs), `event.module` should contain the name of this module.
1811 ///
1812 /// # Examples
1813 ///
1814 /// - `apache`
1815 pub const EVENT_MODULE: &str = "event.module";
1816
1817 /// Raw text message of entire event. Used to demonstrate log integrity or where the full log message (before splitting it up in multiple parts) may be required, e.g. for reindex.
1818 /// This field is not indexed and doc_values are disabled. It cannot be searched, but it can be retrieved from `_source`. If users wish to override this and index this field, please see `Field data types` in the `Elasticsearch Reference`.
1819 ///
1820 /// # Examples
1821 ///
1822 /// - `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`
1823 pub const EVENT_ORIGINAL: &str = "event.original";
1824
1825 /// This is one of four ECS Categorization Fields, and indicates the lowest level in the ECS category hierarchy.
1826 /// `event.outcome` simply denotes whether the event represents a success or a failure from the perspective of the entity that produced the event.
1827 /// Note that when a single transaction is described in multiple events, each event may populate different values of `event.outcome`, according to their perspective.
1828 /// Also note that in the case of a compound event (a single event that contains multiple logical events), this field should be populated with the value that best captures the overall success or failure from the perspective of the event producer.
1829 /// Further note that not all events will have an associated outcome. For example, this field is generally not populated for metric events, events with `event.type:info`, or any events for which an outcome does not make logical sense.
1830 ///
1831 /// # Examples
1832 ///
1833 /// - `success`
1834 pub const EVENT_OUTCOME: &str = "event.outcome";
1835
1836 /// Source of the event.
1837 /// Event transports such as Syslog or the Windows Event Log typically mention the source of an event. It can be the name of the software that generated the event (e.g. Sysmon, httpd), or of a subsystem of the operating system (kernel, Microsoft-Windows-Security-Auditing).
1838 ///
1839 /// # Examples
1840 ///
1841 /// - `kernel`
1842 pub const EVENT_PROVIDER: &str = "event.provider";
1843
1844 /// Reason why this event happened, according to the source.
1845 /// 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`).
1846 ///
1847 /// # Examples
1848 ///
1849 /// - `Terminated an unexpected process`
1850 pub const EVENT_REASON: &str = "event.reason";
1851
1852 /// Reference URL linking to additional information about this event.
1853 /// This URL links to a static definition of this event. Alert events, indicated by `event.kind:alert`, are a common use case for this field.
1854 ///
1855 /// # Examples
1856 ///
1857 /// - `https://system.example.com/event/#0001234`
1858 pub const EVENT_REFERENCE: &str = "event.reference";
1859
1860 /// Risk score or priority of the event (e.g. security solutions). Use your system's original value here.
1861 pub const EVENT_RISK_SCORE: &str = "event.risk_score";
1862
1863 /// Normalized risk score or priority of the event, on a scale of 0 to 100.
1864 /// This is mainly useful if you use more than one system that assigns risk scores, and you want to see a normalized value across all systems.
1865 pub const EVENT_RISK_SCORE_NORM: &str = "event.risk_score_norm";
1866
1867 /// Sequence number of the event.
1868 /// The sequence number is a value published by some event sources, to make the exact ordering of events unambiguous, regardless of the timestamp precision.
1869 pub const EVENT_SEQUENCE: &str = "event.sequence";
1870
1871 /// The numeric severity of the event according to your event source.
1872 /// What the different severity values mean can be different between sources and use cases. It's up to the implementer to make sure severities are consistent across events from the same source.
1873 /// The Syslog severity belongs in `log.syslog.severity.code`. `event.severity` is meant to represent the severity according to the event source (e.g. firewall, IDS). If the event source does not publish its own severity, you may optionally copy the `log.syslog.severity.code` to `event.severity`.
1874 ///
1875 /// # Examples
1876 ///
1877 /// - `7`
1878 pub const EVENT_SEVERITY: &str = "event.severity";
1879
1880 /// `event.start` contains the date when the event started or when the activity was first observed.
1881 pub const EVENT_START: &str = "event.start";
1882
1883 /// This field should be populated when the event's timestamp does not include timezone information already (e.g. default Syslog timestamps). It's optional otherwise.
1884 /// Acceptable timezone formats are: a canonical ID (e.g. "Europe/Amsterdam"), abbreviated (e.g. "EST") or an HH:mm differential (e.g. "-05:00").
1885 pub const EVENT_TIMEZONE: &str = "event.timezone";
1886
1887 /// This is one of four ECS Categorization Fields, and indicates the third level in the ECS category hierarchy.
1888 /// `event.type` represents a categorization "sub-bucket" that, when used along with the `event.category` field values, enables filtering events down to a level appropriate for single visualization.
1889 /// This field is an array. This will allow proper categorization of some events that fall in multiple event types.
1890 pub const EVENT_TYPE: &str = "event.type";
1891
1892 /// URL linking to an external system to continue investigation of this event.
1893 /// 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.
1894 ///
1895 /// # Examples
1896 ///
1897 /// - `https://mysystem.example.com/alert/5271dedb-f5b0-4218-87f0-4ac4870a38fe`
1898 pub const EVENT_URL: &str = "event.url";
1899}
1900
1901/// The user fields describe information about the function as a service (FaaS) that is relevant to the event.
1902pub mod faas {
1903
1904 /// Boolean value indicating a cold start of a function.
1905 pub const FAAS_COLDSTART: &str = "faas.coldstart";
1906
1907 /// The execution ID of the current function execution.
1908 ///
1909 /// # Examples
1910 ///
1911 /// - `af9d5aa4-a685-4c5f-a22b-444f80b3cc28`
1912 pub const FAAS_EXECUTION: &str = "faas.execution";
1913
1914 /// The unique identifier of a serverless function.
1915 /// For AWS Lambda it's the function ARN (Amazon Resource Name) without a version or alias suffix.
1916 ///
1917 /// # Examples
1918 ///
1919 /// - `arn:aws:lambda:us-west-2:123456789012:function:my-function`
1920 pub const FAAS_ID: &str = "faas.id";
1921
1922 /// The name of a serverless function.
1923 ///
1924 /// # Examples
1925 ///
1926 /// - `my-function`
1927 pub const FAAS_NAME: &str = "faas.name";
1928
1929 /// The ID of the trigger request , message, event, etc.
1930 ///
1931 /// # Examples
1932 ///
1933 /// - `123456789`
1934 pub const FAAS_TRIGGER_REQUEST_ID: &str = "faas.trigger.request_id";
1935
1936 /// The trigger for the function execution.
1937 ///
1938 /// # Examples
1939 ///
1940 /// - `http`
1941 pub const FAAS_TRIGGER_TYPE: &str = "faas.trigger.type";
1942
1943 /// The version of a serverless function.
1944 ///
1945 /// # Examples
1946 ///
1947 /// - `123`
1948 pub const FAAS_VERSION: &str = "faas.version";
1949}
1950
1951/// A file is defined as a set of information that has been created on, or has existed on a filesystem.
1952
1953/// File objects can be associated with host events, network events, and/or file events (e.g., those produced by File Integrity Monitoring [FIM] products or services). File fields provide details about the affected file associated with the event or metric.
1954pub mod file {
1955
1956 /// Last time the file was accessed.
1957 /// Note that not all filesystems keep track of access time.
1958 pub const FILE_ACCESSED: &str = "file.accessed";
1959
1960 /// Array of file attributes.
1961 /// Attributes names will vary by platform. Here's a non-exhaustive list of values that are expected in this field: archive, compressed, directory, encrypted, execute, hidden, read, readonly, system, write.
1962 ///
1963 /// # Examples
1964 ///
1965 /// - `["readonly", "system"]`
1966 pub const FILE_ATTRIBUTES: &str = "file.attributes";
1967
1968 /// The hashing algorithm used to sign the process.
1969 /// This value can distinguish signatures when a file is signed multiple times by the same signer but with a different digest algorithm.
1970 ///
1971 /// # Examples
1972 ///
1973 /// - `sha256`
1974 pub const FILE_CODE_SIGNATURE_DIGEST_ALGORITHM: &str = "file.code_signature.digest_algorithm";
1975
1976 /// Boolean to capture if a signature is present.
1977 ///
1978 /// # Examples
1979 ///
1980 /// - `true`
1981 pub const FILE_CODE_SIGNATURE_EXISTS: &str = "file.code_signature.exists";
1982
1983 /// The identifier used to sign the process.
1984 /// This is used to identify the application manufactured by a software vendor. The field is relevant to Apple *OS only.
1985 ///
1986 /// # Examples
1987 ///
1988 /// - `com.apple.xpc.proxy`
1989 pub const FILE_CODE_SIGNATURE_SIGNING_ID: &str = "file.code_signature.signing_id";
1990
1991 /// Additional information about the certificate status.
1992 /// 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.
1993 ///
1994 /// # Examples
1995 ///
1996 /// - `ERROR_UNTRUSTED_ROOT`
1997 pub const FILE_CODE_SIGNATURE_STATUS: &str = "file.code_signature.status";
1998
1999 /// Subject name of the code signer
2000 ///
2001 /// # Examples
2002 ///
2003 /// - `Microsoft Corporation`
2004 pub const FILE_CODE_SIGNATURE_SUBJECT_NAME: &str = "file.code_signature.subject_name";
2005
2006 /// The team identifier used to sign the process.
2007 /// This is used to identify the team or vendor of a software product. The field is relevant to Apple *OS only.
2008 ///
2009 /// # Examples
2010 ///
2011 /// - `EQHXZ8M8AV`
2012 pub const FILE_CODE_SIGNATURE_TEAM_ID: &str = "file.code_signature.team_id";
2013
2014 /// Date and time when the code signature was generated and signed.
2015 ///
2016 /// # Examples
2017 ///
2018 /// - `2021-01-01T12:10:30Z`
2019 pub const FILE_CODE_SIGNATURE_TIMESTAMP: &str = "file.code_signature.timestamp";
2020
2021 /// Stores the trust status of the certificate chain.
2022 /// Validating the trust of the certificate chain may be complicated, and this field should only be populated by tools that actively check the status.
2023 ///
2024 /// # Examples
2025 ///
2026 /// - `true`
2027 pub const FILE_CODE_SIGNATURE_TRUSTED: &str = "file.code_signature.trusted";
2028
2029 /// Boolean to capture if the digital signature is verified against the binary content.
2030 /// Leave unpopulated if a certificate was unchecked.
2031 ///
2032 /// # Examples
2033 ///
2034 /// - `true`
2035 pub const FILE_CODE_SIGNATURE_VALID: &str = "file.code_signature.valid";
2036
2037 /// File creation time.
2038 /// Note that not all filesystems store the creation time.
2039 pub const FILE_CREATED: &str = "file.created";
2040
2041 /// Last time the file attributes or metadata changed.
2042 /// Note that changes to the file content will update `mtime`. This implies `ctime` will be adjusted at the same time, since `mtime` is an attribute of the file.
2043 pub const FILE_CTIME: &str = "file.ctime";
2044
2045 /// Device that is the source of the file.
2046 ///
2047 /// # Examples
2048 ///
2049 /// - `sda`
2050 pub const FILE_DEVICE: &str = "file.device";
2051
2052 /// Directory where the file is located. It should include the drive letter, when appropriate.
2053 ///
2054 /// # Examples
2055 ///
2056 /// - `/home/alice`
2057 pub const FILE_DIRECTORY: &str = "file.directory";
2058
2059 /// Drive letter where the file is located. This field is only relevant on Windows.
2060 /// The value should be uppercase, and not include the colon.
2061 ///
2062 /// # Examples
2063 ///
2064 /// - `C`
2065 pub const FILE_DRIVE_LETTER: &str = "file.drive_letter";
2066
2067 /// Machine architecture of the ELF file.
2068 ///
2069 /// # Examples
2070 ///
2071 /// - `x86-64`
2072 pub const FILE_ELF_ARCHITECTURE: &str = "file.elf.architecture";
2073
2074 /// Byte sequence of ELF file.
2075 ///
2076 /// # Examples
2077 ///
2078 /// - `Little Endian`
2079 pub const FILE_ELF_BYTE_ORDER: &str = "file.elf.byte_order";
2080
2081 /// CPU type of the ELF file.
2082 ///
2083 /// # Examples
2084 ///
2085 /// - `Intel`
2086 pub const FILE_ELF_CPU_TYPE: &str = "file.elf.cpu_type";
2087
2088 /// Extracted when possible from the file's metadata. Indicates when it was built or compiled. It can also be faked by malware creators.
2089 pub const FILE_ELF_CREATION_DATE: &str = "file.elf.creation_date";
2090
2091 /// List of exported element names and types.
2092 pub const FILE_ELF_EXPORTS: &str = "file.elf.exports";
2093
2094 /// A hash of the Go language imports in an ELF file excluding standard library imports. An 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.
2095 /// The algorithm used to calculate the Go symbol hash and a reference implementation are available [here](https://github.com/elastic/toutoumomoma).
2096 ///
2097 /// # Examples
2098 ///
2099 /// - `10bddcb4cee42080f76c88d9ff964491`
2100 pub const FILE_ELF_GO_IMPORT_HASH: &str = "file.elf.go_import_hash";
2101
2102 /// List of imported Go language element names and types.
2103 pub const FILE_ELF_GO_IMPORTS: &str = "file.elf.go_imports";
2104
2105 /// Shannon entropy calculation from the list of Go imports.
2106 pub const FILE_ELF_GO_IMPORTS_NAMES_ENTROPY: &str = "file.elf.go_imports_names_entropy";
2107
2108 /// Variance for Shannon entropy calculation from the list of Go imports.
2109 pub const FILE_ELF_GO_IMPORTS_NAMES_VAR_ENTROPY: &str = "file.elf.go_imports_names_var_entropy";
2110
2111 /// Set to true if the file is a Go executable that has had its symbols stripped or obfuscated and false if an unobfuscated Go executable.
2112 pub const FILE_ELF_GO_STRIPPED: &str = "file.elf.go_stripped";
2113
2114 /// Version of the ELF Application Binary Interface (ABI).
2115 pub const FILE_ELF_HEADER_ABI_VERSION: &str = "file.elf.header.abi_version";
2116
2117 /// Header class of the ELF file.
2118 pub const FILE_ELF_HEADER_CLASS: &str = "file.elf.header.class";
2119
2120 /// Data table of the ELF header.
2121 pub const FILE_ELF_HEADER_DATA: &str = "file.elf.header.data";
2122
2123 /// Header entrypoint of the ELF file.
2124 pub const FILE_ELF_HEADER_ENTRYPOINT: &str = "file.elf.header.entrypoint";
2125
2126 /// "0x1" for original ELF files.
2127 pub const FILE_ELF_HEADER_OBJECT_VERSION: &str = "file.elf.header.object_version";
2128
2129 /// Application Binary Interface (ABI) of the Linux OS.
2130 pub const FILE_ELF_HEADER_OS_ABI: &str = "file.elf.header.os_abi";
2131
2132 /// Header type of the ELF file.
2133 pub const FILE_ELF_HEADER_TYPE: &str = "file.elf.header.type";
2134
2135 /// Version of the ELF header.
2136 pub const FILE_ELF_HEADER_VERSION: &str = "file.elf.header.version";
2137
2138 /// A hash of the imports in an ELF file. An 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.
2139 /// This is an ELF implementation of the Windows PE imphash.
2140 ///
2141 /// # Examples
2142 ///
2143 /// - `d41d8cd98f00b204e9800998ecf8427e`
2144 pub const FILE_ELF_IMPORT_HASH: &str = "file.elf.import_hash";
2145
2146 /// List of imported element names and types.
2147 pub const FILE_ELF_IMPORTS: &str = "file.elf.imports";
2148
2149 /// Shannon entropy calculation from the list of imported element names and types.
2150 pub const FILE_ELF_IMPORTS_NAMES_ENTROPY: &str = "file.elf.imports_names_entropy";
2151
2152 /// Variance for Shannon entropy calculation from the list of imported element names and types.
2153 pub const FILE_ELF_IMPORTS_NAMES_VAR_ENTROPY: &str = "file.elf.imports_names_var_entropy";
2154
2155 /// An array containing an object for each section of the ELF file.
2156 /// The keys that should be present in these objects are defined by sub-fields underneath `elf.sections.*`.
2157 pub const FILE_ELF_SECTIONS: &str = "file.elf.sections";
2158
2159 /// Chi-square probability distribution of the section.
2160 pub const FILE_ELF_SECTIONS_CHI2: &str = "file.elf.sections.chi2";
2161
2162 /// Shannon entropy calculation from the section.
2163 pub const FILE_ELF_SECTIONS_ENTROPY: &str = "file.elf.sections.entropy";
2164
2165 /// ELF Section List flags.
2166 pub const FILE_ELF_SECTIONS_FLAGS: &str = "file.elf.sections.flags";
2167
2168 /// ELF Section List name.
2169 pub const FILE_ELF_SECTIONS_NAME: &str = "file.elf.sections.name";
2170
2171 /// ELF Section List offset.
2172 pub const FILE_ELF_SECTIONS_PHYSICAL_OFFSET: &str = "file.elf.sections.physical_offset";
2173
2174 /// ELF Section List physical size.
2175 pub const FILE_ELF_SECTIONS_PHYSICAL_SIZE: &str = "file.elf.sections.physical_size";
2176
2177 /// ELF Section List type.
2178 pub const FILE_ELF_SECTIONS_TYPE: &str = "file.elf.sections.type";
2179
2180 /// Variance for Shannon entropy calculation from the section.
2181 pub const FILE_ELF_SECTIONS_VAR_ENTROPY: &str = "file.elf.sections.var_entropy";
2182
2183 /// ELF Section List virtual address.
2184 pub const FILE_ELF_SECTIONS_VIRTUAL_ADDRESS: &str = "file.elf.sections.virtual_address";
2185
2186 /// ELF Section List virtual size.
2187 pub const FILE_ELF_SECTIONS_VIRTUAL_SIZE: &str = "file.elf.sections.virtual_size";
2188
2189 /// An array containing an object for each segment of the ELF file.
2190 /// The keys that should be present in these objects are defined by sub-fields underneath `elf.segments.*`.
2191 pub const FILE_ELF_SEGMENTS: &str = "file.elf.segments";
2192
2193 /// ELF object segment sections.
2194 pub const FILE_ELF_SEGMENTS_SECTIONS: &str = "file.elf.segments.sections";
2195
2196 /// ELF object segment type.
2197 pub const FILE_ELF_SEGMENTS_TYPE: &str = "file.elf.segments.type";
2198
2199 /// List of shared libraries used by this ELF object.
2200 pub const FILE_ELF_SHARED_LIBRARIES: &str = "file.elf.shared_libraries";
2201
2202 /// telfhash symbol hash for ELF file.
2203 pub const FILE_ELF_TELFHASH: &str = "file.elf.telfhash";
2204
2205 /// File extension, excluding the leading dot.
2206 /// Note that when the file name has multiple extensions (example.tar.gz), only the last one should be captured ("gz", not "tar.gz").
2207 ///
2208 /// # Examples
2209 ///
2210 /// - `png`
2211 pub const FILE_EXTENSION: &str = "file.extension";
2212
2213 /// A fork is additional data associated with a filesystem object.
2214 /// On Linux, a resource fork is used to store additional data with a filesystem object. A file always has at least one fork for the data portion, and additional forks may exist.
2215 /// On NTFS, this is analogous to an Alternate Data Stream (ADS), and the default data stream for a file is just called $DATA. Zone.Identifier is commonly used by Windows to track contents downloaded from the Internet. An ADS is typically of the form: `C:\path\to\filename.extension:some_fork_name`, and `some_fork_name` is the value that should populate `fork_name`. `filename.extension` should populate `file.name`, and `extension` should populate `file.extension`. The full path, `file.path`, will include the fork name.
2216 ///
2217 /// # Examples
2218 ///
2219 /// - `Zone.Identifer`
2220 pub const FILE_FORK_NAME: &str = "file.fork_name";
2221
2222 /// Primary group ID (GID) of the file.
2223 ///
2224 /// # Examples
2225 ///
2226 /// - `1001`
2227 pub const FILE_GID: &str = "file.gid";
2228
2229 /// Primary group name of the file.
2230 ///
2231 /// # Examples
2232 ///
2233 /// - `alice`
2234 pub const FILE_GROUP: &str = "file.group";
2235
2236 /// MD5 hash.
2237 pub const FILE_HASH_MD5: &str = "file.hash.md5";
2238
2239 /// SHA1 hash.
2240 pub const FILE_HASH_SHA1: &str = "file.hash.sha1";
2241
2242 /// SHA256 hash.
2243 pub const FILE_HASH_SHA256: &str = "file.hash.sha256";
2244
2245 /// SHA384 hash.
2246 pub const FILE_HASH_SHA384: &str = "file.hash.sha384";
2247
2248 /// SHA512 hash.
2249 pub const FILE_HASH_SHA512: &str = "file.hash.sha512";
2250
2251 /// SSDEEP hash.
2252 pub const FILE_HASH_SSDEEP: &str = "file.hash.ssdeep";
2253
2254 /// TLSH hash.
2255 pub const FILE_HASH_TLSH: &str = "file.hash.tlsh";
2256
2257 /// Inode representing the file in the filesystem.
2258 ///
2259 /// # Examples
2260 ///
2261 /// - `256383`
2262 pub const FILE_INODE: &str = "file.inode";
2263
2264 /// A hash of the Go language imports in a Mach-O file excluding standard library imports. An 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.
2265 /// The algorithm used to calculate the Go symbol hash and a reference implementation are available [here](https://github.com/elastic/toutoumomoma).
2266 ///
2267 /// # Examples
2268 ///
2269 /// - `10bddcb4cee42080f76c88d9ff964491`
2270 pub const FILE_MACHO_GO_IMPORT_HASH: &str = "file.macho.go_import_hash";
2271
2272 /// List of imported Go language element names and types.
2273 pub const FILE_MACHO_GO_IMPORTS: &str = "file.macho.go_imports";
2274
2275 /// Shannon entropy calculation from the list of Go imports.
2276 pub const FILE_MACHO_GO_IMPORTS_NAMES_ENTROPY: &str = "file.macho.go_imports_names_entropy";
2277
2278 /// Variance for Shannon entropy calculation from the list of Go imports.
2279 pub const FILE_MACHO_GO_IMPORTS_NAMES_VAR_ENTROPY: &str =
2280 "file.macho.go_imports_names_var_entropy";
2281
2282 /// Set to true if the file is a Go executable that has had its symbols stripped or obfuscated and false if an unobfuscated Go executable.
2283 pub const FILE_MACHO_GO_STRIPPED: &str = "file.macho.go_stripped";
2284
2285 /// A hash of the imports in a Mach-O file. An 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.
2286 /// This is a synonym for symhash.
2287 ///
2288 /// # Examples
2289 ///
2290 /// - `d41d8cd98f00b204e9800998ecf8427e`
2291 pub const FILE_MACHO_IMPORT_HASH: &str = "file.macho.import_hash";
2292
2293 /// List of imported element names and types.
2294 pub const FILE_MACHO_IMPORTS: &str = "file.macho.imports";
2295
2296 /// Shannon entropy calculation from the list of imported element names and types.
2297 pub const FILE_MACHO_IMPORTS_NAMES_ENTROPY: &str = "file.macho.imports_names_entropy";
2298
2299 /// Variance for Shannon entropy calculation from the list of imported element names and types.
2300 pub const FILE_MACHO_IMPORTS_NAMES_VAR_ENTROPY: &str = "file.macho.imports_names_var_entropy";
2301
2302 /// An array containing an object for each section of the Mach-O file.
2303 /// The keys that should be present in these objects are defined by sub-fields underneath `macho.sections.*`.
2304 pub const FILE_MACHO_SECTIONS: &str = "file.macho.sections";
2305
2306 /// Shannon entropy calculation from the section.
2307 pub const FILE_MACHO_SECTIONS_ENTROPY: &str = "file.macho.sections.entropy";
2308
2309 /// Mach-O Section List name.
2310 pub const FILE_MACHO_SECTIONS_NAME: &str = "file.macho.sections.name";
2311
2312 /// Mach-O Section List physical size.
2313 pub const FILE_MACHO_SECTIONS_PHYSICAL_SIZE: &str = "file.macho.sections.physical_size";
2314
2315 /// Variance for Shannon entropy calculation from the section.
2316 pub const FILE_MACHO_SECTIONS_VAR_ENTROPY: &str = "file.macho.sections.var_entropy";
2317
2318 /// Mach-O Section List virtual size. This is always the same as `physical_size`.
2319 pub const FILE_MACHO_SECTIONS_VIRTUAL_SIZE: &str = "file.macho.sections.virtual_size";
2320
2321 /// A hash of the imports in a Mach-O file. An 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.
2322 /// This is a Mach-O implementation of the Windows PE imphash
2323 ///
2324 /// # Examples
2325 ///
2326 /// - `d3ccf195b62a9279c3c19af1080497ec`
2327 pub const FILE_MACHO_SYMHASH: &str = "file.macho.symhash";
2328
2329 /// MIME type should identify the format of the file or stream of bytes using https://www.iana.org/assignments/media-types/media-types.xhtml[IANA official types], where possible. When more than one type is applicable, the most specific type should be used.
2330 pub const FILE_MIME_TYPE: &str = "file.mime_type";
2331
2332 /// Mode of the file in octal representation.
2333 ///
2334 /// # Examples
2335 ///
2336 /// - `0640`
2337 pub const FILE_MODE: &str = "file.mode";
2338
2339 /// Last time the file content was modified.
2340 pub const FILE_MTIME: &str = "file.mtime";
2341
2342 /// Name of the file including the extension, without the directory.
2343 ///
2344 /// # Examples
2345 ///
2346 /// - `example.png`
2347 pub const FILE_NAME: &str = "file.name";
2348
2349 /// File owner's username.
2350 ///
2351 /// # Examples
2352 ///
2353 /// - `alice`
2354 pub const FILE_OWNER: &str = "file.owner";
2355
2356 /// Full path to the file, including the file name. It should include the drive letter, when appropriate.
2357 ///
2358 /// # Examples
2359 ///
2360 /// - `/home/alice/example.png`
2361 pub const FILE_PATH: &str = "file.path";
2362
2363 /// CPU architecture target for the file.
2364 ///
2365 /// # Examples
2366 ///
2367 /// - `x64`
2368 pub const FILE_PE_ARCHITECTURE: &str = "file.pe.architecture";
2369
2370 /// Internal company name of the file, provided at compile-time.
2371 ///
2372 /// # Examples
2373 ///
2374 /// - `Microsoft Corporation`
2375 pub const FILE_PE_COMPANY: &str = "file.pe.company";
2376
2377 /// Internal description of the file, provided at compile-time.
2378 ///
2379 /// # Examples
2380 ///
2381 /// - `Paint`
2382 pub const FILE_PE_DESCRIPTION: &str = "file.pe.description";
2383
2384 /// Internal version of the file, provided at compile-time.
2385 ///
2386 /// # Examples
2387 ///
2388 /// - `6.3.9600.17415`
2389 pub const FILE_PE_FILE_VERSION: &str = "file.pe.file_version";
2390
2391 /// A hash of the Go language imports in a PE file excluding standard library imports. An 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.
2392 /// The algorithm used to calculate the Go symbol hash and a reference implementation are available [here](https://github.com/elastic/toutoumomoma).
2393 ///
2394 /// # Examples
2395 ///
2396 /// - `10bddcb4cee42080f76c88d9ff964491`
2397 pub const FILE_PE_GO_IMPORT_HASH: &str = "file.pe.go_import_hash";
2398
2399 /// List of imported Go language element names and types.
2400 pub const FILE_PE_GO_IMPORTS: &str = "file.pe.go_imports";
2401
2402 /// Shannon entropy calculation from the list of Go imports.
2403 pub const FILE_PE_GO_IMPORTS_NAMES_ENTROPY: &str = "file.pe.go_imports_names_entropy";
2404
2405 /// Variance for Shannon entropy calculation from the list of Go imports.
2406 pub const FILE_PE_GO_IMPORTS_NAMES_VAR_ENTROPY: &str = "file.pe.go_imports_names_var_entropy";
2407
2408 /// Set to true if the file is a Go executable that has had its symbols stripped or obfuscated and false if an unobfuscated Go executable.
2409 pub const FILE_PE_GO_STRIPPED: &str = "file.pe.go_stripped";
2410
2411 /// 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.
2412 /// Learn more at https://www.fireeye.com/blog/threat-research/2014/01/tracking-malware-import-hashing.html.
2413 ///
2414 /// # Examples
2415 ///
2416 /// - `0c6803c4e922103c4dca5963aad36ddf`
2417 pub const FILE_PE_IMPHASH: &str = "file.pe.imphash";
2418
2419 /// A hash of the imports in a PE file. An 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.
2420 /// This is a synonym for imphash.
2421 ///
2422 /// # Examples
2423 ///
2424 /// - `d41d8cd98f00b204e9800998ecf8427e`
2425 pub const FILE_PE_IMPORT_HASH: &str = "file.pe.import_hash";
2426
2427 /// List of imported element names and types.
2428 pub const FILE_PE_IMPORTS: &str = "file.pe.imports";
2429
2430 /// Shannon entropy calculation from the list of imported element names and types.
2431 pub const FILE_PE_IMPORTS_NAMES_ENTROPY: &str = "file.pe.imports_names_entropy";
2432
2433 /// Variance for Shannon entropy calculation from the list of imported element names and types.
2434 pub const FILE_PE_IMPORTS_NAMES_VAR_ENTROPY: &str = "file.pe.imports_names_var_entropy";
2435
2436 /// Internal name of the file, provided at compile-time.
2437 ///
2438 /// # Examples
2439 ///
2440 /// - `MSPAINT.EXE`
2441 pub const FILE_PE_ORIGINAL_FILE_NAME: &str = "file.pe.original_file_name";
2442
2443 /// A hash of the PE header and data from one or more PE sections. An pehash can be used to cluster files by transforming structural information about a file into a hash value.
2444 /// Learn more at https://www.usenix.org/legacy/events/leet09/tech/full_papers/wicherski/wicherski_html/index.html.
2445 ///
2446 /// # Examples
2447 ///
2448 /// - `73ff189b63cd6be375a7ff25179a38d347651975`
2449 pub const FILE_PE_PEHASH: &str = "file.pe.pehash";
2450
2451 /// Internal product name of the file, provided at compile-time.
2452 ///
2453 /// # Examples
2454 ///
2455 /// - `Microsoft® Windows® Operating System`
2456 pub const FILE_PE_PRODUCT: &str = "file.pe.product";
2457
2458 /// An array containing an object for each section of the PE file.
2459 /// The keys that should be present in these objects are defined by sub-fields underneath `pe.sections.*`.
2460 pub const FILE_PE_SECTIONS: &str = "file.pe.sections";
2461
2462 /// Shannon entropy calculation from the section.
2463 pub const FILE_PE_SECTIONS_ENTROPY: &str = "file.pe.sections.entropy";
2464
2465 /// PE Section List name.
2466 pub const FILE_PE_SECTIONS_NAME: &str = "file.pe.sections.name";
2467
2468 /// PE Section List physical size.
2469 pub const FILE_PE_SECTIONS_PHYSICAL_SIZE: &str = "file.pe.sections.physical_size";
2470
2471 /// Variance for Shannon entropy calculation from the section.
2472 pub const FILE_PE_SECTIONS_VAR_ENTROPY: &str = "file.pe.sections.var_entropy";
2473
2474 /// PE Section List virtual size. This is always the same as `physical_size`.
2475 pub const FILE_PE_SECTIONS_VIRTUAL_SIZE: &str = "file.pe.sections.virtual_size";
2476
2477 /// File size in bytes.
2478 /// Only relevant when `file.type` is "file".
2479 ///
2480 /// # Examples
2481 ///
2482 /// - `16384`
2483 pub const FILE_SIZE: &str = "file.size";
2484
2485 /// Target path for symlinks.
2486 pub const FILE_TARGET_PATH: &str = "file.target_path";
2487
2488 /// File type (file, dir, or symlink).
2489 ///
2490 /// # Examples
2491 ///
2492 /// - `file`
2493 pub const FILE_TYPE: &str = "file.type";
2494
2495 /// The user ID (UID) or security identifier (SID) of the file owner.
2496 ///
2497 /// # Examples
2498 ///
2499 /// - `1001`
2500 pub const FILE_UID: &str = "file.uid";
2501
2502 /// 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.
2503 ///
2504 /// # Examples
2505 ///
2506 /// - `*.elastic.co`
2507 pub const FILE_X509_ALTERNATIVE_NAMES: &str = "file.x509.alternative_names";
2508
2509 /// List of common name (CN) of issuing certificate authority.
2510 ///
2511 /// # Examples
2512 ///
2513 /// - `Example SHA2 High Assurance Server CA`
2514 pub const FILE_X509_ISSUER_COMMON_NAME: &str = "file.x509.issuer.common_name";
2515
2516 /// List of country \(C) codes
2517 ///
2518 /// # Examples
2519 ///
2520 /// - `US`
2521 pub const FILE_X509_ISSUER_COUNTRY: &str = "file.x509.issuer.country";
2522
2523 /// Distinguished name (DN) of issuing certificate authority.
2524 ///
2525 /// # Examples
2526 ///
2527 /// - `C=US, O=Example Inc, OU=www.example.com, CN=Example SHA2 High Assurance Server CA`
2528 pub const FILE_X509_ISSUER_DISTINGUISHED_NAME: &str = "file.x509.issuer.distinguished_name";
2529
2530 /// List of locality names (L)
2531 ///
2532 /// # Examples
2533 ///
2534 /// - `Mountain View`
2535 pub const FILE_X509_ISSUER_LOCALITY: &str = "file.x509.issuer.locality";
2536
2537 /// List of organizations (O) of issuing certificate authority.
2538 ///
2539 /// # Examples
2540 ///
2541 /// - `Example Inc`
2542 pub const FILE_X509_ISSUER_ORGANIZATION: &str = "file.x509.issuer.organization";
2543
2544 /// List of organizational units (OU) of issuing certificate authority.
2545 ///
2546 /// # Examples
2547 ///
2548 /// - `www.example.com`
2549 pub const FILE_X509_ISSUER_ORGANIZATIONAL_UNIT: &str = "file.x509.issuer.organizational_unit";
2550
2551 /// List of state or province names (ST, S, or P)
2552 ///
2553 /// # Examples
2554 ///
2555 /// - `California`
2556 pub const FILE_X509_ISSUER_STATE_OR_PROVINCE: &str = "file.x509.issuer.state_or_province";
2557
2558 /// Time at which the certificate is no longer considered valid.
2559 ///
2560 /// # Examples
2561 ///
2562 /// - `2020-07-16T03:15:39Z`
2563 pub const FILE_X509_NOT_AFTER: &str = "file.x509.not_after";
2564
2565 /// Time at which the certificate is first considered valid.
2566 ///
2567 /// # Examples
2568 ///
2569 /// - `2019-08-16T01:40:25Z`
2570 pub const FILE_X509_NOT_BEFORE: &str = "file.x509.not_before";
2571
2572 /// Algorithm used to generate the public key.
2573 ///
2574 /// # Examples
2575 ///
2576 /// - `RSA`
2577 pub const FILE_X509_PUBLIC_KEY_ALGORITHM: &str = "file.x509.public_key_algorithm";
2578
2579 /// The curve used by the elliptic curve public key algorithm. This is algorithm specific.
2580 ///
2581 /// # Examples
2582 ///
2583 /// - `nistp521`
2584 pub const FILE_X509_PUBLIC_KEY_CURVE: &str = "file.x509.public_key_curve";
2585
2586 /// Exponent used to derive the public key. This is algorithm specific.
2587 ///
2588 /// # Examples
2589 ///
2590 /// - `65537`
2591 pub const FILE_X509_PUBLIC_KEY_EXPONENT: &str = "file.x509.public_key_exponent";
2592
2593 /// The size of the public key space in bits.
2594 ///
2595 /// # Examples
2596 ///
2597 /// - `2048`
2598 pub const FILE_X509_PUBLIC_KEY_SIZE: &str = "file.x509.public_key_size";
2599
2600 /// Unique serial number issued by the certificate authority. For consistency, if this value is alphanumeric, it should be formatted without colons and uppercase characters.
2601 ///
2602 /// # Examples
2603 ///
2604 /// - `55FBB9C7DEBF09809D12CCAA`
2605 pub const FILE_X509_SERIAL_NUMBER: &str = "file.x509.serial_number";
2606
2607 /// 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.
2608 ///
2609 /// # Examples
2610 ///
2611 /// - `SHA256-RSA`
2612 pub const FILE_X509_SIGNATURE_ALGORITHM: &str = "file.x509.signature_algorithm";
2613
2614 /// List of common names (CN) of subject.
2615 ///
2616 /// # Examples
2617 ///
2618 /// - `shared.global.example.net`
2619 pub const FILE_X509_SUBJECT_COMMON_NAME: &str = "file.x509.subject.common_name";
2620
2621 /// List of country \(C) code
2622 ///
2623 /// # Examples
2624 ///
2625 /// - `US`
2626 pub const FILE_X509_SUBJECT_COUNTRY: &str = "file.x509.subject.country";
2627
2628 /// Distinguished name (DN) of the certificate subject entity.
2629 ///
2630 /// # Examples
2631 ///
2632 /// - `C=US, ST=California, L=San Francisco, O=Example, Inc., CN=shared.global.example.net`
2633 pub const FILE_X509_SUBJECT_DISTINGUISHED_NAME: &str = "file.x509.subject.distinguished_name";
2634
2635 /// List of locality names (L)
2636 ///
2637 /// # Examples
2638 ///
2639 /// - `San Francisco`
2640 pub const FILE_X509_SUBJECT_LOCALITY: &str = "file.x509.subject.locality";
2641
2642 /// List of organizations (O) of subject.
2643 ///
2644 /// # Examples
2645 ///
2646 /// - `Example, Inc.`
2647 pub const FILE_X509_SUBJECT_ORGANIZATION: &str = "file.x509.subject.organization";
2648
2649 /// List of organizational units (OU) of subject.
2650 pub const FILE_X509_SUBJECT_ORGANIZATIONAL_UNIT: &str = "file.x509.subject.organizational_unit";
2651
2652 /// List of state or province names (ST, S, or P)
2653 ///
2654 /// # Examples
2655 ///
2656 /// - `California`
2657 pub const FILE_X509_SUBJECT_STATE_OR_PROVINCE: &str = "file.x509.subject.state_or_province";
2658
2659 /// Version of x509 format.
2660 ///
2661 /// # Examples
2662 ///
2663 /// - `3`
2664 pub const FILE_X509_VERSION_NUMBER: &str = "file.x509.version_number";
2665}
2666
2667/// Geo fields can carry data about a specific location related to an event.
2668
2669/// This geolocation information can be derived from techniques such as Geo IP, or be user-supplied.
2670pub mod geo {
2671
2672 /// City name.
2673 ///
2674 /// # Examples
2675 ///
2676 /// - `Montreal`
2677 pub const GEO_CITY_NAME: &str = "geo.city_name";
2678
2679 /// Two-letter code representing continent's name.
2680 ///
2681 /// # Examples
2682 ///
2683 /// - `NA`
2684 pub const GEO_CONTINENT_CODE: &str = "geo.continent_code";
2685
2686 /// Name of the continent.
2687 ///
2688 /// # Examples
2689 ///
2690 /// - `North America`
2691 pub const GEO_CONTINENT_NAME: &str = "geo.continent_name";
2692
2693 /// Country ISO code.
2694 ///
2695 /// # Examples
2696 ///
2697 /// - `CA`
2698 pub const GEO_COUNTRY_ISO_CODE: &str = "geo.country_iso_code";
2699
2700 /// Country name.
2701 ///
2702 /// # Examples
2703 ///
2704 /// - `Canada`
2705 pub const GEO_COUNTRY_NAME: &str = "geo.country_name";
2706
2707 /// Longitude and latitude.
2708 ///
2709 /// # Examples
2710 ///
2711 /// - `{ "lon": -73.614830, "lat": 45.505918 }`
2712 pub const GEO_LOCATION: &str = "geo.location";
2713
2714 /// User-defined description of a location, at the level of granularity they care about.
2715 /// Could be the name of their data centers, the floor number, if this describes a local physical entity, city names.
2716 /// Not typically used in automated geolocation.
2717 ///
2718 /// # Examples
2719 ///
2720 /// - `boston-dc`
2721 pub const GEO_NAME: &str = "geo.name";
2722
2723 /// Postal code associated with the location.
2724 /// Values appropriate for this field may also be known as a postcode or ZIP code and will vary widely from country to country.
2725 ///
2726 /// # Examples
2727 ///
2728 /// - `94040`
2729 pub const GEO_POSTAL_CODE: &str = "geo.postal_code";
2730
2731 /// Region ISO code.
2732 ///
2733 /// # Examples
2734 ///
2735 /// - `CA-QC`
2736 pub const GEO_REGION_ISO_CODE: &str = "geo.region_iso_code";
2737
2738 /// Region name.
2739 ///
2740 /// # Examples
2741 ///
2742 /// - `Quebec`
2743 pub const GEO_REGION_NAME: &str = "geo.region_name";
2744
2745 /// The time zone of the location, such as IANA time zone name.
2746 ///
2747 /// # Examples
2748 ///
2749 /// - `America/Argentina/Buenos_Aires`
2750 pub const GEO_TIMEZONE: &str = "geo.timezone";
2751}
2752
2753/// The group fields are meant to represent groups that are relevant to the event.
2754pub mod group {
2755
2756 /// Name of the directory the group is a member of.
2757 /// For example, an LDAP or Active Directory domain name.
2758 pub const GROUP_DOMAIN: &str = "group.domain";
2759
2760 /// Unique identifier for the group on the system/platform.
2761 pub const GROUP_ID: &str = "group.id";
2762
2763 /// Name of the group.
2764 pub const GROUP_NAME: &str = "group.name";
2765}
2766
2767/// The hash fields represent different bitwise hash algorithms and their values.
2768
2769/// 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).
2770
2771/// Note that this fieldset is used for common hashes that may be computed over a range of generic bytes. Entity-specific hashes such as ja3 or imphash are placed in the fieldsets to which they relate (tls and pe, respectively).
2772pub mod hash {
2773
2774 /// MD5 hash.
2775 pub const HASH_MD5: &str = "hash.md5";
2776
2777 /// SHA1 hash.
2778 pub const HASH_SHA1: &str = "hash.sha1";
2779
2780 /// SHA256 hash.
2781 pub const HASH_SHA256: &str = "hash.sha256";
2782
2783 /// SHA384 hash.
2784 pub const HASH_SHA384: &str = "hash.sha384";
2785
2786 /// SHA512 hash.
2787 pub const HASH_SHA512: &str = "hash.sha512";
2788
2789 /// SSDEEP hash.
2790 pub const HASH_SSDEEP: &str = "hash.ssdeep";
2791
2792 /// TLSH hash.
2793 pub const HASH_TLSH: &str = "hash.tlsh";
2794}
2795
2796/// A host is defined as a general computing instance.
2797
2798/// 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.
2799pub mod host {
2800
2801 /// Operating system architecture.
2802 ///
2803 /// # Examples
2804 ///
2805 /// - `x86_64`
2806 pub const HOST_ARCHITECTURE: &str = "host.architecture";
2807
2808 /// Linux boot uuid taken from /proc/sys/kernel/random/boot_id. Note the boot_id value from /proc may or may not be the same in containers as on the host. Some container runtimes will bind mount a new boot_id value onto the proc file in each container.
2809 ///
2810 /// # Examples
2811 ///
2812 /// - `88a1f0ed-5ae5-41ee-af6b-41921c311872`
2813 pub const HOST_BOOT_ID: &str = "host.boot.id";
2814
2815 /// Percent CPU used which is normalized by the number of CPU cores and it ranges from 0 to 1.
2816 /// Scaling factor: 1000.
2817 /// For example: For a two core host, this value should be the average of the two cores, between 0 and 1.
2818 pub const HOST_CPU_USAGE: &str = "host.cpu.usage";
2819
2820 /// The total number of bytes (gauge) read successfully (aggregated from all disks) since the last metric collection.
2821 pub const HOST_DISK_READ_BYTES: &str = "host.disk.read.bytes";
2822
2823 /// The total number of bytes (gauge) written successfully (aggregated from all disks) since the last metric collection.
2824 pub const HOST_DISK_WRITE_BYTES: &str = "host.disk.write.bytes";
2825
2826 /// Name of the domain of which the host is a member.
2827 /// 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.
2828 ///
2829 /// # Examples
2830 ///
2831 /// - `CONTOSO`
2832 pub const HOST_DOMAIN: &str = "host.domain";
2833
2834 /// City name.
2835 ///
2836 /// # Examples
2837 ///
2838 /// - `Montreal`
2839 pub const HOST_GEO_CITY_NAME: &str = "host.geo.city_name";
2840
2841 /// Two-letter code representing continent's name.
2842 ///
2843 /// # Examples
2844 ///
2845 /// - `NA`
2846 pub const HOST_GEO_CONTINENT_CODE: &str = "host.geo.continent_code";
2847
2848 /// Name of the continent.
2849 ///
2850 /// # Examples
2851 ///
2852 /// - `North America`
2853 pub const HOST_GEO_CONTINENT_NAME: &str = "host.geo.continent_name";
2854
2855 /// Country ISO code.
2856 ///
2857 /// # Examples
2858 ///
2859 /// - `CA`
2860 pub const HOST_GEO_COUNTRY_ISO_CODE: &str = "host.geo.country_iso_code";
2861
2862 /// Country name.
2863 ///
2864 /// # Examples
2865 ///
2866 /// - `Canada`
2867 pub const HOST_GEO_COUNTRY_NAME: &str = "host.geo.country_name";
2868
2869 /// Longitude and latitude.
2870 ///
2871 /// # Examples
2872 ///
2873 /// - `{ "lon": -73.614830, "lat": 45.505918 }`
2874 pub const HOST_GEO_LOCATION: &str = "host.geo.location";
2875
2876 /// User-defined description of a location, at the level of granularity they care about.
2877 /// Could be the name of their data centers, the floor number, if this describes a local physical entity, city names.
2878 /// Not typically used in automated geolocation.
2879 ///
2880 /// # Examples
2881 ///
2882 /// - `boston-dc`
2883 pub const HOST_GEO_NAME: &str = "host.geo.name";
2884
2885 /// Postal code associated with the location.
2886 /// Values appropriate for this field may also be known as a postcode or ZIP code and will vary widely from country to country.
2887 ///
2888 /// # Examples
2889 ///
2890 /// - `94040`
2891 pub const HOST_GEO_POSTAL_CODE: &str = "host.geo.postal_code";
2892
2893 /// Region ISO code.
2894 ///
2895 /// # Examples
2896 ///
2897 /// - `CA-QC`
2898 pub const HOST_GEO_REGION_ISO_CODE: &str = "host.geo.region_iso_code";
2899
2900 /// Region name.
2901 ///
2902 /// # Examples
2903 ///
2904 /// - `Quebec`
2905 pub const HOST_GEO_REGION_NAME: &str = "host.geo.region_name";
2906
2907 /// The time zone of the location, such as IANA time zone name.
2908 ///
2909 /// # Examples
2910 ///
2911 /// - `America/Argentina/Buenos_Aires`
2912 pub const HOST_GEO_TIMEZONE: &str = "host.geo.timezone";
2913
2914 /// Hostname of the host.
2915 /// It normally contains what the `hostname` command returns on the host machine.
2916 pub const HOST_HOSTNAME: &str = "host.hostname";
2917
2918 /// Unique host id.
2919 /// As hostname is not always unique, use values that are meaningful in your environment.
2920 /// Example: The current usage of `beat.name`.
2921 pub const HOST_ID: &str = "host.id";
2922
2923 /// Host ip addresses.
2924 pub const HOST_IP: &str = "host.ip";
2925
2926 /// Host MAC addresses.
2927 /// The notation format from RFC 7042 is suggested: Each octet (that is, 8-bit byte) is represented by two [uppercase] hexadecimal digits giving the value of the octet as an unsigned integer. Successive octets are separated by a hyphen.
2928 ///
2929 /// # Examples
2930 ///
2931 /// - `["00-00-5E-00-53-23", "00-00-5E-00-53-24"]`
2932 pub const HOST_MAC: &str = "host.mac";
2933
2934 /// Name of the host.
2935 /// It can contain what hostname returns on Unix systems, the fully qualified domain name (FQDN), or a name specified by the user. The recommended value is the lowercase FQDN of the host.
2936 pub const HOST_NAME: &str = "host.name";
2937
2938 /// The number of bytes (gauge) sent out on all network interfaces by the host since the last metric collection.
2939 pub const HOST_NETWORK_EGRESS_BYTES: &str = "host.network.egress.bytes";
2940
2941 /// The number of packets (gauge) sent out on all network interfaces by the host since the last metric collection.
2942 pub const HOST_NETWORK_EGRESS_PACKETS: &str = "host.network.egress.packets";
2943
2944 /// The number of bytes received (gauge) on all network interfaces by the host since the last metric collection.
2945 pub const HOST_NETWORK_INGRESS_BYTES: &str = "host.network.ingress.bytes";
2946
2947 /// The number of packets (gauge) received on all network interfaces by the host since the last metric collection.
2948 pub const HOST_NETWORK_INGRESS_PACKETS: &str = "host.network.ingress.packets";
2949
2950 /// OS family (such as redhat, debian, freebsd, windows).
2951 ///
2952 /// # Examples
2953 ///
2954 /// - `debian`
2955 pub const HOST_OS_FAMILY: &str = "host.os.family";
2956
2957 /// Operating system name, including the version or code name.
2958 ///
2959 /// # Examples
2960 ///
2961 /// - `Mac OS Mojave`
2962 pub const HOST_OS_FULL: &str = "host.os.full";
2963
2964 /// Operating system kernel version as a raw string.
2965 ///
2966 /// # Examples
2967 ///
2968 /// - `4.4.0-112-generic`
2969 pub const HOST_OS_KERNEL: &str = "host.os.kernel";
2970
2971 /// Operating system name, without the version.
2972 ///
2973 /// # Examples
2974 ///
2975 /// - `Mac OS X`
2976 pub const HOST_OS_NAME: &str = "host.os.name";
2977
2978 /// Operating system platform (such centos, ubuntu, windows).
2979 ///
2980 /// # Examples
2981 ///
2982 /// - `darwin`
2983 pub const HOST_OS_PLATFORM: &str = "host.os.platform";
2984
2985 /// Use the `os.type` field to categorize the operating system into one of the broad commercial families.
2986 /// If the OS you're dealing with is not listed as an expected value, the field should not be populated. Please let us know by opening an issue with ECS, to propose its addition.
2987 ///
2988 /// # Examples
2989 ///
2990 /// - `macos`
2991 pub const HOST_OS_TYPE: &str = "host.os.type";
2992
2993 /// Operating system version as a raw string.
2994 ///
2995 /// # Examples
2996 ///
2997 /// - `10.14.1`
2998 pub const HOST_OS_VERSION: &str = "host.os.version";
2999
3000 /// This is the inode number of the namespace in the namespace file system (nsfs). Unsigned int inum in include/linux/ns_common.h.
3001 ///
3002 /// # Examples
3003 ///
3004 /// - `256383`
3005 pub const HOST_PID_NS_INO: &str = "host.pid_ns_ino";
3006
3007 /// A risk classification level calculated by an internal system as part of entity analytics and entity risk scoring.
3008 ///
3009 /// # Examples
3010 ///
3011 /// - `High`
3012 pub const HOST_RISK_CALCULATED_LEVEL: &str = "host.risk.calculated_level";
3013
3014 /// A risk classification score calculated by an internal system as part of entity analytics and entity risk scoring.
3015 ///
3016 /// # Examples
3017 ///
3018 /// - `880.73`
3019 pub const HOST_RISK_CALCULATED_SCORE: &str = "host.risk.calculated_score";
3020
3021 /// A risk classification score calculated by an internal system as part of entity analytics and entity risk scoring, and normalized to a range of 0 to 100.
3022 ///
3023 /// # Examples
3024 ///
3025 /// - `88.73`
3026 pub const HOST_RISK_CALCULATED_SCORE_NORM: &str = "host.risk.calculated_score_norm";
3027
3028 /// A risk classification level obtained from outside the system, such as from some external Threat Intelligence Platform.
3029 ///
3030 /// # Examples
3031 ///
3032 /// - `High`
3033 pub const HOST_RISK_STATIC_LEVEL: &str = "host.risk.static_level";
3034
3035 /// A risk classification score obtained from outside the system, such as from some external Threat Intelligence Platform.
3036 ///
3037 /// # Examples
3038 ///
3039 /// - `830.0`
3040 pub const HOST_RISK_STATIC_SCORE: &str = "host.risk.static_score";
3041
3042 /// A risk classification score obtained from outside the system, such as from some external Threat Intelligence Platform, and normalized to a range of 0 to 100.
3043 ///
3044 /// # Examples
3045 ///
3046 /// - `83.0`
3047 pub const HOST_RISK_STATIC_SCORE_NORM: &str = "host.risk.static_score_norm";
3048
3049 /// Type of host.
3050 /// 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.
3051 pub const HOST_TYPE: &str = "host.type";
3052
3053 /// Seconds the host has been up.
3054 ///
3055 /// # Examples
3056 ///
3057 /// - `1325`
3058 pub const HOST_UPTIME: &str = "host.uptime";
3059}
3060
3061/// Fields related to HTTP activity. Use the `url` field set to store the url of the request.
3062pub mod http {
3063
3064 /// Size in bytes of the request body.
3065 ///
3066 /// # Examples
3067 ///
3068 /// - `887`
3069 pub const HTTP_REQUEST_BODY_BYTES: &str = "http.request.body.bytes";
3070
3071 /// The full HTTP request body.
3072 ///
3073 /// # Examples
3074 ///
3075 /// - `Hello world`
3076 pub const HTTP_REQUEST_BODY_CONTENT: &str = "http.request.body.content";
3077
3078 /// Total size in bytes of the request (body and headers).
3079 ///
3080 /// # Examples
3081 ///
3082 /// - `1437`
3083 pub const HTTP_REQUEST_BYTES: &str = "http.request.bytes";
3084
3085 /// A unique identifier for each HTTP request to correlate logs between clients and servers in transactions.
3086 /// The id may be contained in a non-standard HTTP header, such as `X-Request-ID` or `X-Correlation-ID`.
3087 ///
3088 /// # Examples
3089 ///
3090 /// - `123e4567-e89b-12d3-a456-426614174000`
3091 pub const HTTP_REQUEST_ID: &str = "http.request.id";
3092
3093 /// HTTP request method.
3094 /// The value should retain its casing from the original event. For example, `GET`, `get`, and `GeT` are all considered valid values for this field.
3095 ///
3096 /// # Examples
3097 ///
3098 /// - `POST`
3099 pub const HTTP_REQUEST_METHOD: &str = "http.request.method";
3100
3101 /// Mime type of the body of the request.
3102 /// This value must only be populated based on the content of the request body, not on the `Content-Type` header. Comparing the mime type of a request with the request's Content-Type header can be helpful in detecting threats or misconfigured clients.
3103 ///
3104 /// # Examples
3105 ///
3106 /// - `image/gif`
3107 pub const HTTP_REQUEST_MIME_TYPE: &str = "http.request.mime_type";
3108
3109 /// Referrer for this HTTP request.
3110 ///
3111 /// # Examples
3112 ///
3113 /// - `https://blog.example.com/`
3114 pub const HTTP_REQUEST_REFERRER: &str = "http.request.referrer";
3115
3116 /// Size in bytes of the response body.
3117 ///
3118 /// # Examples
3119 ///
3120 /// - `887`
3121 pub const HTTP_RESPONSE_BODY_BYTES: &str = "http.response.body.bytes";
3122
3123 /// The full HTTP response body.
3124 ///
3125 /// # Examples
3126 ///
3127 /// - `Hello world`
3128 pub const HTTP_RESPONSE_BODY_CONTENT: &str = "http.response.body.content";
3129
3130 /// Total size in bytes of the response (body and headers).
3131 ///
3132 /// # Examples
3133 ///
3134 /// - `1437`
3135 pub const HTTP_RESPONSE_BYTES: &str = "http.response.bytes";
3136
3137 /// Mime type of the body of the response.
3138 /// This value must only be populated based on the content of the response body, not on the `Content-Type` header. Comparing the mime type of a response with the response's Content-Type header can be helpful in detecting misconfigured servers.
3139 ///
3140 /// # Examples
3141 ///
3142 /// - `image/gif`
3143 pub const HTTP_RESPONSE_MIME_TYPE: &str = "http.response.mime_type";
3144
3145 /// HTTP response status code.
3146 ///
3147 /// # Examples
3148 ///
3149 /// - `404`
3150 pub const HTTP_RESPONSE_STATUS_CODE: &str = "http.response.status_code";
3151
3152 /// HTTP version.
3153 ///
3154 /// # Examples
3155 ///
3156 /// - `1.1`
3157 pub const HTTP_VERSION: &str = "http.version";
3158}
3159
3160/// 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.
3161pub mod interface {
3162
3163 /// Interface alias as reported by the system, typically used in firewall implementations for e.g. inside, outside, or dmz logical interface naming.
3164 ///
3165 /// # Examples
3166 ///
3167 /// - `outside`
3168 pub const INTERFACE_ALIAS: &str = "interface.alias";
3169
3170 /// Interface ID as reported by an observer (typically SNMP interface ID).
3171 ///
3172 /// # Examples
3173 ///
3174 /// - `10`
3175 pub const INTERFACE_ID: &str = "interface.id";
3176
3177 /// Interface name as reported by the system.
3178 ///
3179 /// # Examples
3180 ///
3181 /// - `eth0`
3182 pub const INTERFACE_NAME: &str = "interface.name";
3183}
3184
3185/// Details about the event's logging mechanism or logging transport.
3186
3187/// 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.*`.
3188
3189/// The details specific to your event source are typically not logged under `log.*`, but rather in `event.*` or in other ECS fields.
3190pub mod log {
3191
3192 /// Full path to the log file this event came from, including the file name. It should include the drive letter, when appropriate.
3193 /// If the event wasn't read from a log file, do not populate this field.
3194 ///
3195 /// # Examples
3196 ///
3197 /// - `/var/log/fun-times.log`
3198 pub const LOG_FILE_PATH: &str = "log.file.path";
3199
3200 /// Original log level of the log event.
3201 /// 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).
3202 /// Some examples are `warn`, `err`, `i`, `informational`.
3203 ///
3204 /// # Examples
3205 ///
3206 /// - `error`
3207 pub const LOG_LEVEL: &str = "log.level";
3208
3209 /// 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.
3210 ///
3211 /// # Examples
3212 ///
3213 /// - `org.elasticsearch.bootstrap.Bootstrap`
3214 pub const LOG_LOGGER: &str = "log.logger";
3215
3216 /// The line number of the file containing the source code which originated the log event.
3217 ///
3218 /// # Examples
3219 ///
3220 /// - `42`
3221 pub const LOG_ORIGIN_FILE_LINE: &str = "log.origin.file.line";
3222
3223 /// The name of the file containing the source code which originated the log event.
3224 /// Note that this field is not meant to capture the log file. The correct field to capture the log file is `log.file.path`.
3225 ///
3226 /// # Examples
3227 ///
3228 /// - `Bootstrap.java`
3229 pub const LOG_ORIGIN_FILE_NAME: &str = "log.origin.file.name";
3230
3231 /// The name of the function or method which originated the log event.
3232 ///
3233 /// # Examples
3234 ///
3235 /// - `init`
3236 pub const LOG_ORIGIN_FUNCTION: &str = "log.origin.function";
3237
3238 /// The Syslog metadata of the event, if the event was transmitted via Syslog. Please see RFCs 5424 or 3164.
3239 pub const LOG_SYSLOG: &str = "log.syslog";
3240
3241 /// The device or application that originated the Syslog message, if available.
3242 ///
3243 /// # Examples
3244 ///
3245 /// - `sshd`
3246 pub const LOG_SYSLOG_APPNAME: &str = "log.syslog.appname";
3247
3248 /// The Syslog numeric facility of the log event, if available.
3249 /// According to RFCs 5424 and 3164, this value should be an integer between 0 and 23.
3250 ///
3251 /// # Examples
3252 ///
3253 /// - `23`
3254 pub const LOG_SYSLOG_FACILITY_CODE: &str = "log.syslog.facility.code";
3255
3256 /// The Syslog text-based facility of the log event, if available.
3257 ///
3258 /// # Examples
3259 ///
3260 /// - `local7`
3261 pub const LOG_SYSLOG_FACILITY_NAME: &str = "log.syslog.facility.name";
3262
3263 /// The hostname, FQDN, or IP of the machine that originally sent the Syslog message. This is sourced from the hostname field of the syslog header. Depending on the environment, this value may be different from the host that handled the event, especially if the host handling the events is acting as a collector.
3264 ///
3265 /// # Examples
3266 ///
3267 /// - `example-host`
3268 pub const LOG_SYSLOG_HOSTNAME: &str = "log.syslog.hostname";
3269
3270 /// An identifier for the type of Syslog message, if available. Only applicable for RFC 5424 messages.
3271 ///
3272 /// # Examples
3273 ///
3274 /// - `ID47`
3275 pub const LOG_SYSLOG_MSGID: &str = "log.syslog.msgid";
3276
3277 /// Syslog numeric priority of the event, if available.
3278 /// 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.
3279 ///
3280 /// # Examples
3281 ///
3282 /// - `135`
3283 pub const LOG_SYSLOG_PRIORITY: &str = "log.syslog.priority";
3284
3285 /// The process name or ID that originated the Syslog message, if available.
3286 ///
3287 /// # Examples
3288 ///
3289 /// - `12345`
3290 pub const LOG_SYSLOG_PROCID: &str = "log.syslog.procid";
3291
3292 /// The Syslog numeric severity of the log event, if available.
3293 /// 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`.
3294 ///
3295 /// # Examples
3296 ///
3297 /// - `3`
3298 pub const LOG_SYSLOG_SEVERITY_CODE: &str = "log.syslog.severity.code";
3299
3300 /// The Syslog numeric severity of the log event, if available.
3301 /// 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`.
3302 ///
3303 /// # Examples
3304 ///
3305 /// - `Error`
3306 pub const LOG_SYSLOG_SEVERITY_NAME: &str = "log.syslog.severity.name";
3307
3308 /// Structured data expressed in RFC 5424 messages, if available. These are key-value pairs formed from the structured data portion of the syslog message, as defined in RFC 5424 Section 6.3.
3309 pub const LOG_SYSLOG_STRUCTURED_DATA: &str = "log.syslog.structured_data";
3310
3311 /// The version of the Syslog protocol specification. Only applicable for RFC 5424 messages.
3312 ///
3313 /// # Examples
3314 ///
3315 /// - `1`
3316 pub const LOG_SYSLOG_VERSION: &str = "log.syslog.version";
3317}
3318
3319/// These fields contain Mac OS Mach Object file format (Mach-O) metadata.
3320pub mod macho {
3321
3322 /// A hash of the Go language imports in a Mach-O file excluding standard library imports. An 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.
3323 /// The algorithm used to calculate the Go symbol hash and a reference implementation are available [here](https://github.com/elastic/toutoumomoma).
3324 ///
3325 /// # Examples
3326 ///
3327 /// - `10bddcb4cee42080f76c88d9ff964491`
3328 pub const MACHO_GO_IMPORT_HASH: &str = "macho.go_import_hash";
3329
3330 /// List of imported Go language element names and types.
3331 pub const MACHO_GO_IMPORTS: &str = "macho.go_imports";
3332
3333 /// Shannon entropy calculation from the list of Go imports.
3334 pub const MACHO_GO_IMPORTS_NAMES_ENTROPY: &str = "macho.go_imports_names_entropy";
3335
3336 /// Variance for Shannon entropy calculation from the list of Go imports.
3337 pub const MACHO_GO_IMPORTS_NAMES_VAR_ENTROPY: &str = "macho.go_imports_names_var_entropy";
3338
3339 /// Set to true if the file is a Go executable that has had its symbols stripped or obfuscated and false if an unobfuscated Go executable.
3340 pub const MACHO_GO_STRIPPED: &str = "macho.go_stripped";
3341
3342 /// A hash of the imports in a Mach-O file. An 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.
3343 /// This is a synonym for symhash.
3344 ///
3345 /// # Examples
3346 ///
3347 /// - `d41d8cd98f00b204e9800998ecf8427e`
3348 pub const MACHO_IMPORT_HASH: &str = "macho.import_hash";
3349
3350 /// List of imported element names and types.
3351 pub const MACHO_IMPORTS: &str = "macho.imports";
3352
3353 /// Shannon entropy calculation from the list of imported element names and types.
3354 pub const MACHO_IMPORTS_NAMES_ENTROPY: &str = "macho.imports_names_entropy";
3355
3356 /// Variance for Shannon entropy calculation from the list of imported element names and types.
3357 pub const MACHO_IMPORTS_NAMES_VAR_ENTROPY: &str = "macho.imports_names_var_entropy";
3358
3359 /// An array containing an object for each section of the Mach-O file.
3360 /// The keys that should be present in these objects are defined by sub-fields underneath `macho.sections.*`.
3361 pub const MACHO_SECTIONS: &str = "macho.sections";
3362
3363 /// Shannon entropy calculation from the section.
3364 pub const MACHO_SECTIONS_ENTROPY: &str = "macho.sections.entropy";
3365
3366 /// Mach-O Section List name.
3367 pub const MACHO_SECTIONS_NAME: &str = "macho.sections.name";
3368
3369 /// Mach-O Section List physical size.
3370 pub const MACHO_SECTIONS_PHYSICAL_SIZE: &str = "macho.sections.physical_size";
3371
3372 /// Variance for Shannon entropy calculation from the section.
3373 pub const MACHO_SECTIONS_VAR_ENTROPY: &str = "macho.sections.var_entropy";
3374
3375 /// Mach-O Section List virtual size. This is always the same as `physical_size`.
3376 pub const MACHO_SECTIONS_VIRTUAL_SIZE: &str = "macho.sections.virtual_size";
3377
3378 /// A hash of the imports in a Mach-O file. An 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.
3379 /// This is a Mach-O implementation of the Windows PE imphash
3380 ///
3381 /// # Examples
3382 ///
3383 /// - `d3ccf195b62a9279c3c19af1080497ec`
3384 pub const MACHO_SYMHASH: &str = "macho.symhash";
3385}
3386
3387/// The network is defined as the communication path over which a host or network event happens.
3388
3389/// The network.* fields should be populated with details about the network activity associated with an event.
3390pub mod network {
3391
3392 /// When a specific application or service is identified from network connection details (source/dest IPs, ports, certificates, or wire format), this field captures the application's or service's name.
3393 /// For example, the original event identifies the network connection being from a specific web service in a `https` network connection, like `facebook` or `twitter`.
3394 /// The field value must be normalized to lowercase for querying.
3395 ///
3396 /// # Examples
3397 ///
3398 /// - `aim`
3399 pub const NETWORK_APPLICATION: &str = "network.application";
3400
3401 /// Total bytes transferred in both directions.
3402 /// If `source.bytes` and `destination.bytes` are known, `network.bytes` is their sum.
3403 ///
3404 /// # Examples
3405 ///
3406 /// - `368`
3407 pub const NETWORK_BYTES: &str = "network.bytes";
3408
3409 /// 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.
3410 /// Learn more at https://github.com/corelight/community-id-spec.
3411 ///
3412 /// # Examples
3413 ///
3414 /// - `1:hO+sN4H+MG5MY/8hIrXPqc4ZQz0=`
3415 pub const NETWORK_COMMUNITY_ID: &str = "network.community_id";
3416
3417 /// Direction of the network traffic.
3418 /// When mapping events from a host-based monitoring context, populate this field from the host's point of view, using the values "ingress" or "egress".
3419 /// When mapping events from a network or perimeter-based monitoring context, populate this field from the point of view of the network perimeter, using the values "inbound", "outbound", "internal" or "external".
3420 /// Note that "internal" is not crossing perimeter boundaries, and is meant to describe communication between two hosts within the perimeter. Note also that "external" is meant to describe traffic between two hosts that are external to the perimeter. This could for example be useful for ISPs or VPN service providers.
3421 ///
3422 /// # Examples
3423 ///
3424 /// - `inbound`
3425 pub const NETWORK_DIRECTION: &str = "network.direction";
3426
3427 /// Host IP address when the source IP address is the proxy.
3428 ///
3429 /// # Examples
3430 ///
3431 /// - `192.1.1.2`
3432 pub const NETWORK_FORWARDED_IP: &str = "network.forwarded_ip";
3433
3434 /// 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.
3435 ///
3436 /// # Examples
3437 ///
3438 /// - `6`
3439 pub const NETWORK_IANA_NUMBER: &str = "network.iana_number";
3440
3441 /// 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.)
3442 pub const NETWORK_INNER: &str = "network.inner";
3443
3444 /// VLAN ID as reported by the observer.
3445 ///
3446 /// # Examples
3447 ///
3448 /// - `10`
3449 pub const NETWORK_INNER_VLAN_ID: &str = "network.inner.vlan.id";
3450
3451 /// Optional VLAN name as reported by the observer.
3452 ///
3453 /// # Examples
3454 ///
3455 /// - `outside`
3456 pub const NETWORK_INNER_VLAN_NAME: &str = "network.inner.vlan.name";
3457
3458 /// Name given by operators to sections of their network.
3459 ///
3460 /// # Examples
3461 ///
3462 /// - `Guest Wifi`
3463 pub const NETWORK_NAME: &str = "network.name";
3464
3465 /// Total packets transferred in both directions.
3466 /// If `source.packets` and `destination.packets` are known, `network.packets` is their sum.
3467 ///
3468 /// # Examples
3469 ///
3470 /// - `24`
3471 pub const NETWORK_PACKETS: &str = "network.packets";
3472
3473 /// In the OSI Model this would be the Application Layer protocol. For example, `http`, `dns`, or `ssh`.
3474 /// The field value must be normalized to lowercase for querying.
3475 ///
3476 /// # Examples
3477 ///
3478 /// - `http`
3479 pub const NETWORK_PROTOCOL: &str = "network.protocol";
3480
3481 /// Same as network.iana_number, but instead using the Keyword name of the transport layer (udp, tcp, ipv6-icmp, etc.)
3482 /// The field value must be normalized to lowercase for querying.
3483 ///
3484 /// # Examples
3485 ///
3486 /// - `tcp`
3487 pub const NETWORK_TRANSPORT: &str = "network.transport";
3488
3489 /// In the OSI Model this would be the Network Layer. ipv4, ipv6, ipsec, pim, etc
3490 /// The field value must be normalized to lowercase for querying.
3491 ///
3492 /// # Examples
3493 ///
3494 /// - `ipv4`
3495 pub const NETWORK_TYPE: &str = "network.type";
3496
3497 /// VLAN ID as reported by the observer.
3498 ///
3499 /// # Examples
3500 ///
3501 /// - `10`
3502 pub const NETWORK_VLAN_ID: &str = "network.vlan.id";
3503
3504 /// Optional VLAN name as reported by the observer.
3505 ///
3506 /// # Examples
3507 ///
3508 /// - `outside`
3509 pub const NETWORK_VLAN_NAME: &str = "network.vlan.name";
3510}
3511
3512/// 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.
3513
3514/// 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.
3515pub mod observer {
3516
3517 /// 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.
3518 pub const OBSERVER_EGRESS: &str = "observer.egress";
3519
3520 /// Interface alias as reported by the system, typically used in firewall implementations for e.g. inside, outside, or dmz logical interface naming.
3521 ///
3522 /// # Examples
3523 ///
3524 /// - `outside`
3525 pub const OBSERVER_EGRESS_INTERFACE_ALIAS: &str = "observer.egress.interface.alias";
3526
3527 /// Interface ID as reported by an observer (typically SNMP interface ID).
3528 ///
3529 /// # Examples
3530 ///
3531 /// - `10`
3532 pub const OBSERVER_EGRESS_INTERFACE_ID: &str = "observer.egress.interface.id";
3533
3534 /// Interface name as reported by the system.
3535 ///
3536 /// # Examples
3537 ///
3538 /// - `eth0`
3539 pub const OBSERVER_EGRESS_INTERFACE_NAME: &str = "observer.egress.interface.name";
3540
3541 /// VLAN ID as reported by the observer.
3542 ///
3543 /// # Examples
3544 ///
3545 /// - `10`
3546 pub const OBSERVER_EGRESS_VLAN_ID: &str = "observer.egress.vlan.id";
3547
3548 /// Optional VLAN name as reported by the observer.
3549 ///
3550 /// # Examples
3551 ///
3552 /// - `outside`
3553 pub const OBSERVER_EGRESS_VLAN_NAME: &str = "observer.egress.vlan.name";
3554
3555 /// 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.
3556 ///
3557 /// # Examples
3558 ///
3559 /// - `Public_Internet`
3560 pub const OBSERVER_EGRESS_ZONE: &str = "observer.egress.zone";
3561
3562 /// City name.
3563 ///
3564 /// # Examples
3565 ///
3566 /// - `Montreal`
3567 pub const OBSERVER_GEO_CITY_NAME: &str = "observer.geo.city_name";
3568
3569 /// Two-letter code representing continent's name.
3570 ///
3571 /// # Examples
3572 ///
3573 /// - `NA`
3574 pub const OBSERVER_GEO_CONTINENT_CODE: &str = "observer.geo.continent_code";
3575
3576 /// Name of the continent.
3577 ///
3578 /// # Examples
3579 ///
3580 /// - `North America`
3581 pub const OBSERVER_GEO_CONTINENT_NAME: &str = "observer.geo.continent_name";
3582
3583 /// Country ISO code.
3584 ///
3585 /// # Examples
3586 ///
3587 /// - `CA`
3588 pub const OBSERVER_GEO_COUNTRY_ISO_CODE: &str = "observer.geo.country_iso_code";
3589
3590 /// Country name.
3591 ///
3592 /// # Examples
3593 ///
3594 /// - `Canada`
3595 pub const OBSERVER_GEO_COUNTRY_NAME: &str = "observer.geo.country_name";
3596
3597 /// Longitude and latitude.
3598 ///
3599 /// # Examples
3600 ///
3601 /// - `{ "lon": -73.614830, "lat": 45.505918 }`
3602 pub const OBSERVER_GEO_LOCATION: &str = "observer.geo.location";
3603
3604 /// User-defined description of a location, at the level of granularity they care about.
3605 /// Could be the name of their data centers, the floor number, if this describes a local physical entity, city names.
3606 /// Not typically used in automated geolocation.
3607 ///
3608 /// # Examples
3609 ///
3610 /// - `boston-dc`
3611 pub const OBSERVER_GEO_NAME: &str = "observer.geo.name";
3612
3613 /// Postal code associated with the location.
3614 /// Values appropriate for this field may also be known as a postcode or ZIP code and will vary widely from country to country.
3615 ///
3616 /// # Examples
3617 ///
3618 /// - `94040`
3619 pub const OBSERVER_GEO_POSTAL_CODE: &str = "observer.geo.postal_code";
3620
3621 /// Region ISO code.
3622 ///
3623 /// # Examples
3624 ///
3625 /// - `CA-QC`
3626 pub const OBSERVER_GEO_REGION_ISO_CODE: &str = "observer.geo.region_iso_code";
3627
3628 /// Region name.
3629 ///
3630 /// # Examples
3631 ///
3632 /// - `Quebec`
3633 pub const OBSERVER_GEO_REGION_NAME: &str = "observer.geo.region_name";
3634
3635 /// The time zone of the location, such as IANA time zone name.
3636 ///
3637 /// # Examples
3638 ///
3639 /// - `America/Argentina/Buenos_Aires`
3640 pub const OBSERVER_GEO_TIMEZONE: &str = "observer.geo.timezone";
3641
3642 /// Hostname of the observer.
3643 pub const OBSERVER_HOSTNAME: &str = "observer.hostname";
3644
3645 /// 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.
3646 pub const OBSERVER_INGRESS: &str = "observer.ingress";
3647
3648 /// Interface alias as reported by the system, typically used in firewall implementations for e.g. inside, outside, or dmz logical interface naming.
3649 ///
3650 /// # Examples
3651 ///
3652 /// - `outside`
3653 pub const OBSERVER_INGRESS_INTERFACE_ALIAS: &str = "observer.ingress.interface.alias";
3654
3655 /// Interface ID as reported by an observer (typically SNMP interface ID).
3656 ///
3657 /// # Examples
3658 ///
3659 /// - `10`
3660 pub const OBSERVER_INGRESS_INTERFACE_ID: &str = "observer.ingress.interface.id";
3661
3662 /// Interface name as reported by the system.
3663 ///
3664 /// # Examples
3665 ///
3666 /// - `eth0`
3667 pub const OBSERVER_INGRESS_INTERFACE_NAME: &str = "observer.ingress.interface.name";
3668
3669 /// VLAN ID as reported by the observer.
3670 ///
3671 /// # Examples
3672 ///
3673 /// - `10`
3674 pub const OBSERVER_INGRESS_VLAN_ID: &str = "observer.ingress.vlan.id";
3675
3676 /// Optional VLAN name as reported by the observer.
3677 ///
3678 /// # Examples
3679 ///
3680 /// - `outside`
3681 pub const OBSERVER_INGRESS_VLAN_NAME: &str = "observer.ingress.vlan.name";
3682
3683 /// 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.
3684 ///
3685 /// # Examples
3686 ///
3687 /// - `DMZ`
3688 pub const OBSERVER_INGRESS_ZONE: &str = "observer.ingress.zone";
3689
3690 /// IP addresses of the observer.
3691 pub const OBSERVER_IP: &str = "observer.ip";
3692
3693 /// MAC addresses of the observer.
3694 /// The notation format from RFC 7042 is suggested: Each octet (that is, 8-bit byte) is represented by two [uppercase] hexadecimal digits giving the value of the octet as an unsigned integer. Successive octets are separated by a hyphen.
3695 ///
3696 /// # Examples
3697 ///
3698 /// - `["00-00-5E-00-53-23", "00-00-5E-00-53-24"]`
3699 pub const OBSERVER_MAC: &str = "observer.mac";
3700
3701 /// Custom name of the observer.
3702 /// 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.
3703 /// If no custom name is needed, the field can be left empty.
3704 ///
3705 /// # Examples
3706 ///
3707 /// - `1_proxySG`
3708 pub const OBSERVER_NAME: &str = "observer.name";
3709
3710 /// OS family (such as redhat, debian, freebsd, windows).
3711 ///
3712 /// # Examples
3713 ///
3714 /// - `debian`
3715 pub const OBSERVER_OS_FAMILY: &str = "observer.os.family";
3716
3717 /// Operating system name, including the version or code name.
3718 ///
3719 /// # Examples
3720 ///
3721 /// - `Mac OS Mojave`
3722 pub const OBSERVER_OS_FULL: &str = "observer.os.full";
3723
3724 /// Operating system kernel version as a raw string.
3725 ///
3726 /// # Examples
3727 ///
3728 /// - `4.4.0-112-generic`
3729 pub const OBSERVER_OS_KERNEL: &str = "observer.os.kernel";
3730
3731 /// Operating system name, without the version.
3732 ///
3733 /// # Examples
3734 ///
3735 /// - `Mac OS X`
3736 pub const OBSERVER_OS_NAME: &str = "observer.os.name";
3737
3738 /// Operating system platform (such centos, ubuntu, windows).
3739 ///
3740 /// # Examples
3741 ///
3742 /// - `darwin`
3743 pub const OBSERVER_OS_PLATFORM: &str = "observer.os.platform";
3744
3745 /// Use the `os.type` field to categorize the operating system into one of the broad commercial families.
3746 /// If the OS you're dealing with is not listed as an expected value, the field should not be populated. Please let us know by opening an issue with ECS, to propose its addition.
3747 ///
3748 /// # Examples
3749 ///
3750 /// - `macos`
3751 pub const OBSERVER_OS_TYPE: &str = "observer.os.type";
3752
3753 /// Operating system version as a raw string.
3754 ///
3755 /// # Examples
3756 ///
3757 /// - `10.14.1`
3758 pub const OBSERVER_OS_VERSION: &str = "observer.os.version";
3759
3760 /// The product name of the observer.
3761 ///
3762 /// # Examples
3763 ///
3764 /// - `s200`
3765 pub const OBSERVER_PRODUCT: &str = "observer.product";
3766
3767 /// Observer serial number.
3768 pub const OBSERVER_SERIAL_NUMBER: &str = "observer.serial_number";
3769
3770 /// The type of the observer the data is coming from.
3771 /// There is no predefined list of observer types. Some examples are `forwarder`, `firewall`, `ids`, `ips`, `proxy`, `poller`, `sensor`, `APM server`.
3772 ///
3773 /// # Examples
3774 ///
3775 /// - `firewall`
3776 pub const OBSERVER_TYPE: &str = "observer.type";
3777
3778 /// Vendor name of the observer.
3779 ///
3780 /// # Examples
3781 ///
3782 /// - `Symantec`
3783 pub const OBSERVER_VENDOR: &str = "observer.vendor";
3784
3785 /// Observer version.
3786 pub const OBSERVER_VERSION: &str = "observer.version";
3787}
3788
3789/// Fields that describe the resources which container orchestrators manage or act upon.
3790pub mod orchestrator {
3791
3792 /// API version being used to carry out the action
3793 ///
3794 /// # Examples
3795 ///
3796 /// - `v1beta1`
3797 pub const ORCHESTRATOR_API_VERSION: &str = "orchestrator.api_version";
3798
3799 /// Unique ID of the cluster.
3800 pub const ORCHESTRATOR_CLUSTER_ID: &str = "orchestrator.cluster.id";
3801
3802 /// Name of the cluster.
3803 pub const ORCHESTRATOR_CLUSTER_NAME: &str = "orchestrator.cluster.name";
3804
3805 /// URL of the API used to manage the cluster.
3806 pub const ORCHESTRATOR_CLUSTER_URL: &str = "orchestrator.cluster.url";
3807
3808 /// The version of the cluster.
3809 pub const ORCHESTRATOR_CLUSTER_VERSION: &str = "orchestrator.cluster.version";
3810
3811 /// Namespace in which the action is taking place.
3812 ///
3813 /// # Examples
3814 ///
3815 /// - `kube-system`
3816 pub const ORCHESTRATOR_NAMESPACE: &str = "orchestrator.namespace";
3817
3818 /// Organization affected by the event (for multi-tenant orchestrator setups).
3819 ///
3820 /// # Examples
3821 ///
3822 /// - `elastic`
3823 pub const ORCHESTRATOR_ORGANIZATION: &str = "orchestrator.organization";
3824
3825 /// The list of annotations added to the resource.
3826 ///
3827 /// # Examples
3828 ///
3829 /// - `['key1:value1', 'key2:value2', 'key3:value3']`
3830 pub const ORCHESTRATOR_RESOURCE_ANNOTATION: &str = "orchestrator.resource.annotation";
3831
3832 /// Unique ID of the resource being acted upon.
3833 pub const ORCHESTRATOR_RESOURCE_ID: &str = "orchestrator.resource.id";
3834
3835 /// IP address assigned to the resource associated with the event being observed. In the case of a Kubernetes Pod, this array would contain only one element: the IP of the Pod (as opposed to the Node on which the Pod is running).
3836 pub const ORCHESTRATOR_RESOURCE_IP: &str = "orchestrator.resource.ip";
3837
3838 /// The list of labels added to the resource.
3839 ///
3840 /// # Examples
3841 ///
3842 /// - `['key1:value1', 'key2:value2', 'key3:value3']`
3843 pub const ORCHESTRATOR_RESOURCE_LABEL: &str = "orchestrator.resource.label";
3844
3845 /// Name of the resource being acted upon.
3846 ///
3847 /// # Examples
3848 ///
3849 /// - `test-pod-cdcws`
3850 pub const ORCHESTRATOR_RESOURCE_NAME: &str = "orchestrator.resource.name";
3851
3852 /// Type or kind of the parent resource associated with the event being observed. In Kubernetes, this will be the name of a built-in workload resource (e.g., Deployment, StatefulSet, DaemonSet).
3853 ///
3854 /// # Examples
3855 ///
3856 /// - `DaemonSet`
3857 pub const ORCHESTRATOR_RESOURCE_PARENT_TYPE: &str = "orchestrator.resource.parent.type";
3858
3859 /// Type of resource being acted upon.
3860 ///
3861 /// # Examples
3862 ///
3863 /// - `service`
3864 pub const ORCHESTRATOR_RESOURCE_TYPE: &str = "orchestrator.resource.type";
3865
3866 /// Orchestrator cluster type (e.g. kubernetes, nomad or cloudfoundry).
3867 ///
3868 /// # Examples
3869 ///
3870 /// - `kubernetes`
3871 pub const ORCHESTRATOR_TYPE: &str = "orchestrator.type";
3872}
3873
3874/// The organization fields enrich data with information about the company or entity the data is associated with.
3875
3876/// These fields help you arrange or filter data stored in an index by one or multiple organizations.
3877pub mod organization {
3878
3879 /// Unique identifier for the organization.
3880 pub const ORGANIZATION_ID: &str = "organization.id";
3881
3882 /// Organization name.
3883 pub const ORGANIZATION_NAME: &str = "organization.name";
3884}
3885
3886/// The OS fields contain information about the operating system.
3887pub mod os {
3888
3889 /// OS family (such as redhat, debian, freebsd, windows).
3890 ///
3891 /// # Examples
3892 ///
3893 /// - `debian`
3894 pub const OS_FAMILY: &str = "os.family";
3895
3896 /// Operating system name, including the version or code name.
3897 ///
3898 /// # Examples
3899 ///
3900 /// - `Mac OS Mojave`
3901 pub const OS_FULL: &str = "os.full";
3902
3903 /// Operating system kernel version as a raw string.
3904 ///
3905 /// # Examples
3906 ///
3907 /// - `4.4.0-112-generic`
3908 pub const OS_KERNEL: &str = "os.kernel";
3909
3910 /// Operating system name, without the version.
3911 ///
3912 /// # Examples
3913 ///
3914 /// - `Mac OS X`
3915 pub const OS_NAME: &str = "os.name";
3916
3917 /// Operating system platform (such centos, ubuntu, windows).
3918 ///
3919 /// # Examples
3920 ///
3921 /// - `darwin`
3922 pub const OS_PLATFORM: &str = "os.platform";
3923
3924 /// Use the `os.type` field to categorize the operating system into one of the broad commercial families.
3925 /// If the OS you're dealing with is not listed as an expected value, the field should not be populated. Please let us know by opening an issue with ECS, to propose its addition.
3926 ///
3927 /// # Examples
3928 ///
3929 /// - `macos`
3930 pub const OS_TYPE: &str = "os.type";
3931
3932 /// Operating system version as a raw string.
3933 ///
3934 /// # Examples
3935 ///
3936 /// - `10.14.1`
3937 pub const OS_VERSION: &str = "os.version";
3938}
3939
3940/// 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.
3941pub mod package {
3942
3943 /// Package architecture.
3944 ///
3945 /// # Examples
3946 ///
3947 /// - `x86_64`
3948 pub const PACKAGE_ARCHITECTURE: &str = "package.architecture";
3949
3950 /// Additional information about the build version of the installed package.
3951 /// For example use the commit SHA of a non-released package.
3952 ///
3953 /// # Examples
3954 ///
3955 /// - `36f4f7e89dd61b0988b12ee000b98966867710cd`
3956 pub const PACKAGE_BUILD_VERSION: &str = "package.build_version";
3957
3958 /// Checksum of the installed package for verification.
3959 ///
3960 /// # Examples
3961 ///
3962 /// - `68b329da9893e34099c7d8ad5cb9c940`
3963 pub const PACKAGE_CHECKSUM: &str = "package.checksum";
3964
3965 /// Description of the package.
3966 ///
3967 /// # Examples
3968 ///
3969 /// - `Open source programming language to build simple/reliable/efficient software.`
3970 pub const PACKAGE_DESCRIPTION: &str = "package.description";
3971
3972 /// Indicating how the package was installed, e.g. user-local, global.
3973 ///
3974 /// # Examples
3975 ///
3976 /// - `global`
3977 pub const PACKAGE_INSTALL_SCOPE: &str = "package.install_scope";
3978
3979 /// Time when package was installed.
3980 pub const PACKAGE_INSTALLED: &str = "package.installed";
3981
3982 /// License under which the package was released.
3983 /// Use a short name, e.g. the license identifier from SPDX License List where possible (https://spdx.org/licenses/).
3984 ///
3985 /// # Examples
3986 ///
3987 /// - `Apache License 2.0`
3988 pub const PACKAGE_LICENSE: &str = "package.license";
3989
3990 /// Package name
3991 ///
3992 /// # Examples
3993 ///
3994 /// - `go`
3995 pub const PACKAGE_NAME: &str = "package.name";
3996
3997 /// Path where the package is installed.
3998 ///
3999 /// # Examples
4000 ///
4001 /// - `/usr/local/Cellar/go/1.12.9/`
4002 pub const PACKAGE_PATH: &str = "package.path";
4003
4004 /// Home page or reference URL of the software in this package, if available.
4005 ///
4006 /// # Examples
4007 ///
4008 /// - `https://golang.org`
4009 pub const PACKAGE_REFERENCE: &str = "package.reference";
4010
4011 /// Package size in bytes.
4012 ///
4013 /// # Examples
4014 ///
4015 /// - `62231`
4016 pub const PACKAGE_SIZE: &str = "package.size";
4017
4018 /// Type of package.
4019 /// This should contain the package file type, rather than the package manager name. Examples: rpm, dpkg, brew, npm, gem, nupkg, jar.
4020 ///
4021 /// # Examples
4022 ///
4023 /// - `rpm`
4024 pub const PACKAGE_TYPE: &str = "package.type";
4025
4026 /// Package version
4027 ///
4028 /// # Examples
4029 ///
4030 /// - `1.12.9`
4031 pub const PACKAGE_VERSION: &str = "package.version";
4032}
4033
4034/// These fields contain Windows Portable Executable (PE) metadata.
4035pub mod pe {
4036
4037 /// CPU architecture target for the file.
4038 ///
4039 /// # Examples
4040 ///
4041 /// - `x64`
4042 pub const PE_ARCHITECTURE: &str = "pe.architecture";
4043
4044 /// Internal company name of the file, provided at compile-time.
4045 ///
4046 /// # Examples
4047 ///
4048 /// - `Microsoft Corporation`
4049 pub const PE_COMPANY: &str = "pe.company";
4050
4051 /// Internal description of the file, provided at compile-time.
4052 ///
4053 /// # Examples
4054 ///
4055 /// - `Paint`
4056 pub const PE_DESCRIPTION: &str = "pe.description";
4057
4058 /// Internal version of the file, provided at compile-time.
4059 ///
4060 /// # Examples
4061 ///
4062 /// - `6.3.9600.17415`
4063 pub const PE_FILE_VERSION: &str = "pe.file_version";
4064
4065 /// A hash of the Go language imports in a PE file excluding standard library imports. An 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.
4066 /// The algorithm used to calculate the Go symbol hash and a reference implementation are available [here](https://github.com/elastic/toutoumomoma).
4067 ///
4068 /// # Examples
4069 ///
4070 /// - `10bddcb4cee42080f76c88d9ff964491`
4071 pub const PE_GO_IMPORT_HASH: &str = "pe.go_import_hash";
4072
4073 /// List of imported Go language element names and types.
4074 pub const PE_GO_IMPORTS: &str = "pe.go_imports";
4075
4076 /// Shannon entropy calculation from the list of Go imports.
4077 pub const PE_GO_IMPORTS_NAMES_ENTROPY: &str = "pe.go_imports_names_entropy";
4078
4079 /// Variance for Shannon entropy calculation from the list of Go imports.
4080 pub const PE_GO_IMPORTS_NAMES_VAR_ENTROPY: &str = "pe.go_imports_names_var_entropy";
4081
4082 /// Set to true if the file is a Go executable that has had its symbols stripped or obfuscated and false if an unobfuscated Go executable.
4083 pub const PE_GO_STRIPPED: &str = "pe.go_stripped";
4084
4085 /// 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.
4086 /// Learn more at https://www.fireeye.com/blog/threat-research/2014/01/tracking-malware-import-hashing.html.
4087 ///
4088 /// # Examples
4089 ///
4090 /// - `0c6803c4e922103c4dca5963aad36ddf`
4091 pub const PE_IMPHASH: &str = "pe.imphash";
4092
4093 /// A hash of the imports in a PE file. An 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.
4094 /// This is a synonym for imphash.
4095 ///
4096 /// # Examples
4097 ///
4098 /// - `d41d8cd98f00b204e9800998ecf8427e`
4099 pub const PE_IMPORT_HASH: &str = "pe.import_hash";
4100
4101 /// List of imported element names and types.
4102 pub const PE_IMPORTS: &str = "pe.imports";
4103
4104 /// Shannon entropy calculation from the list of imported element names and types.
4105 pub const PE_IMPORTS_NAMES_ENTROPY: &str = "pe.imports_names_entropy";
4106
4107 /// Variance for Shannon entropy calculation from the list of imported element names and types.
4108 pub const PE_IMPORTS_NAMES_VAR_ENTROPY: &str = "pe.imports_names_var_entropy";
4109
4110 /// Internal name of the file, provided at compile-time.
4111 ///
4112 /// # Examples
4113 ///
4114 /// - `MSPAINT.EXE`
4115 pub const PE_ORIGINAL_FILE_NAME: &str = "pe.original_file_name";
4116
4117 /// A hash of the PE header and data from one or more PE sections. An pehash can be used to cluster files by transforming structural information about a file into a hash value.
4118 /// Learn more at https://www.usenix.org/legacy/events/leet09/tech/full_papers/wicherski/wicherski_html/index.html.
4119 ///
4120 /// # Examples
4121 ///
4122 /// - `73ff189b63cd6be375a7ff25179a38d347651975`
4123 pub const PE_PEHASH: &str = "pe.pehash";
4124
4125 /// Internal product name of the file, provided at compile-time.
4126 ///
4127 /// # Examples
4128 ///
4129 /// - `Microsoft® Windows® Operating System`
4130 pub const PE_PRODUCT: &str = "pe.product";
4131
4132 /// An array containing an object for each section of the PE file.
4133 /// The keys that should be present in these objects are defined by sub-fields underneath `pe.sections.*`.
4134 pub const PE_SECTIONS: &str = "pe.sections";
4135
4136 /// Shannon entropy calculation from the section.
4137 pub const PE_SECTIONS_ENTROPY: &str = "pe.sections.entropy";
4138
4139 /// PE Section List name.
4140 pub const PE_SECTIONS_NAME: &str = "pe.sections.name";
4141
4142 /// PE Section List physical size.
4143 pub const PE_SECTIONS_PHYSICAL_SIZE: &str = "pe.sections.physical_size";
4144
4145 /// Variance for Shannon entropy calculation from the section.
4146 pub const PE_SECTIONS_VAR_ENTROPY: &str = "pe.sections.var_entropy";
4147
4148 /// PE Section List virtual size. This is always the same as `physical_size`.
4149 pub const PE_SECTIONS_VIRTUAL_SIZE: &str = "pe.sections.virtual_size";
4150}
4151
4152/// These fields contain information about a process.
4153
4154/// 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.
4155pub mod process {
4156
4157 /// Array of process arguments, starting with the absolute path to the executable.
4158 /// May be filtered to protect sensitive information.
4159 ///
4160 /// # Examples
4161 ///
4162 /// - `["/usr/bin/ssh", "-l", "user", "10.0.0.16"]`
4163 pub const PROCESS_ARGS: &str = "process.args";
4164
4165 /// Length of the process.args array.
4166 /// 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.
4167 ///
4168 /// # Examples
4169 ///
4170 /// - `4`
4171 pub const PROCESS_ARGS_COUNT: &str = "process.args_count";
4172
4173 /// The hashing algorithm used to sign the process.
4174 /// This value can distinguish signatures when a file is signed multiple times by the same signer but with a different digest algorithm.
4175 ///
4176 /// # Examples
4177 ///
4178 /// - `sha256`
4179 pub const PROCESS_CODE_SIGNATURE_DIGEST_ALGORITHM: &str =
4180 "process.code_signature.digest_algorithm";
4181
4182 /// Boolean to capture if a signature is present.
4183 ///
4184 /// # Examples
4185 ///
4186 /// - `true`
4187 pub const PROCESS_CODE_SIGNATURE_EXISTS: &str = "process.code_signature.exists";
4188
4189 /// The identifier used to sign the process.
4190 /// This is used to identify the application manufactured by a software vendor. The field is relevant to Apple *OS only.
4191 ///
4192 /// # Examples
4193 ///
4194 /// - `com.apple.xpc.proxy`
4195 pub const PROCESS_CODE_SIGNATURE_SIGNING_ID: &str = "process.code_signature.signing_id";
4196
4197 /// Additional information about the certificate status.
4198 /// 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.
4199 ///
4200 /// # Examples
4201 ///
4202 /// - `ERROR_UNTRUSTED_ROOT`
4203 pub const PROCESS_CODE_SIGNATURE_STATUS: &str = "process.code_signature.status";
4204
4205 /// Subject name of the code signer
4206 ///
4207 /// # Examples
4208 ///
4209 /// - `Microsoft Corporation`
4210 pub const PROCESS_CODE_SIGNATURE_SUBJECT_NAME: &str = "process.code_signature.subject_name";
4211
4212 /// The team identifier used to sign the process.
4213 /// This is used to identify the team or vendor of a software product. The field is relevant to Apple *OS only.
4214 ///
4215 /// # Examples
4216 ///
4217 /// - `EQHXZ8M8AV`
4218 pub const PROCESS_CODE_SIGNATURE_TEAM_ID: &str = "process.code_signature.team_id";
4219
4220 /// Date and time when the code signature was generated and signed.
4221 ///
4222 /// # Examples
4223 ///
4224 /// - `2021-01-01T12:10:30Z`
4225 pub const PROCESS_CODE_SIGNATURE_TIMESTAMP: &str = "process.code_signature.timestamp";
4226
4227 /// Stores the trust status of the certificate chain.
4228 /// Validating the trust of the certificate chain may be complicated, and this field should only be populated by tools that actively check the status.
4229 ///
4230 /// # Examples
4231 ///
4232 /// - `true`
4233 pub const PROCESS_CODE_SIGNATURE_TRUSTED: &str = "process.code_signature.trusted";
4234
4235 /// Boolean to capture if the digital signature is verified against the binary content.
4236 /// Leave unpopulated if a certificate was unchecked.
4237 ///
4238 /// # Examples
4239 ///
4240 /// - `true`
4241 pub const PROCESS_CODE_SIGNATURE_VALID: &str = "process.code_signature.valid";
4242
4243 /// Full command line that started the process, including the absolute path to the executable, and all arguments.
4244 /// Some arguments may be filtered to protect sensitive information.
4245 ///
4246 /// # Examples
4247 ///
4248 /// - `/usr/bin/ssh -l user 10.0.0.16`
4249 pub const PROCESS_COMMAND_LINE: &str = "process.command_line";
4250
4251 /// Machine architecture of the ELF file.
4252 ///
4253 /// # Examples
4254 ///
4255 /// - `x86-64`
4256 pub const PROCESS_ELF_ARCHITECTURE: &str = "process.elf.architecture";
4257
4258 /// Byte sequence of ELF file.
4259 ///
4260 /// # Examples
4261 ///
4262 /// - `Little Endian`
4263 pub const PROCESS_ELF_BYTE_ORDER: &str = "process.elf.byte_order";
4264
4265 /// CPU type of the ELF file.
4266 ///
4267 /// # Examples
4268 ///
4269 /// - `Intel`
4270 pub const PROCESS_ELF_CPU_TYPE: &str = "process.elf.cpu_type";
4271
4272 /// Extracted when possible from the file's metadata. Indicates when it was built or compiled. It can also be faked by malware creators.
4273 pub const PROCESS_ELF_CREATION_DATE: &str = "process.elf.creation_date";
4274
4275 /// List of exported element names and types.
4276 pub const PROCESS_ELF_EXPORTS: &str = "process.elf.exports";
4277
4278 /// A hash of the Go language imports in an ELF file excluding standard library imports. An 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.
4279 /// The algorithm used to calculate the Go symbol hash and a reference implementation are available [here](https://github.com/elastic/toutoumomoma).
4280 ///
4281 /// # Examples
4282 ///
4283 /// - `10bddcb4cee42080f76c88d9ff964491`
4284 pub const PROCESS_ELF_GO_IMPORT_HASH: &str = "process.elf.go_import_hash";
4285
4286 /// List of imported Go language element names and types.
4287 pub const PROCESS_ELF_GO_IMPORTS: &str = "process.elf.go_imports";
4288
4289 /// Shannon entropy calculation from the list of Go imports.
4290 pub const PROCESS_ELF_GO_IMPORTS_NAMES_ENTROPY: &str = "process.elf.go_imports_names_entropy";
4291
4292 /// Variance for Shannon entropy calculation from the list of Go imports.
4293 pub const PROCESS_ELF_GO_IMPORTS_NAMES_VAR_ENTROPY: &str =
4294 "process.elf.go_imports_names_var_entropy";
4295
4296 /// Set to true if the file is a Go executable that has had its symbols stripped or obfuscated and false if an unobfuscated Go executable.
4297 pub const PROCESS_ELF_GO_STRIPPED: &str = "process.elf.go_stripped";
4298
4299 /// Version of the ELF Application Binary Interface (ABI).
4300 pub const PROCESS_ELF_HEADER_ABI_VERSION: &str = "process.elf.header.abi_version";
4301
4302 /// Header class of the ELF file.
4303 pub const PROCESS_ELF_HEADER_CLASS: &str = "process.elf.header.class";
4304
4305 /// Data table of the ELF header.
4306 pub const PROCESS_ELF_HEADER_DATA: &str = "process.elf.header.data";
4307
4308 /// Header entrypoint of the ELF file.
4309 pub const PROCESS_ELF_HEADER_ENTRYPOINT: &str = "process.elf.header.entrypoint";
4310
4311 /// "0x1" for original ELF files.
4312 pub const PROCESS_ELF_HEADER_OBJECT_VERSION: &str = "process.elf.header.object_version";
4313
4314 /// Application Binary Interface (ABI) of the Linux OS.
4315 pub const PROCESS_ELF_HEADER_OS_ABI: &str = "process.elf.header.os_abi";
4316
4317 /// Header type of the ELF file.
4318 pub const PROCESS_ELF_HEADER_TYPE: &str = "process.elf.header.type";
4319
4320 /// Version of the ELF header.
4321 pub const PROCESS_ELF_HEADER_VERSION: &str = "process.elf.header.version";
4322
4323 /// A hash of the imports in an ELF file. An 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.
4324 /// This is an ELF implementation of the Windows PE imphash.
4325 ///
4326 /// # Examples
4327 ///
4328 /// - `d41d8cd98f00b204e9800998ecf8427e`
4329 pub const PROCESS_ELF_IMPORT_HASH: &str = "process.elf.import_hash";
4330
4331 /// List of imported element names and types.
4332 pub const PROCESS_ELF_IMPORTS: &str = "process.elf.imports";
4333
4334 /// Shannon entropy calculation from the list of imported element names and types.
4335 pub const PROCESS_ELF_IMPORTS_NAMES_ENTROPY: &str = "process.elf.imports_names_entropy";
4336
4337 /// Variance for Shannon entropy calculation from the list of imported element names and types.
4338 pub const PROCESS_ELF_IMPORTS_NAMES_VAR_ENTROPY: &str = "process.elf.imports_names_var_entropy";
4339
4340 /// An array containing an object for each section of the ELF file.
4341 /// The keys that should be present in these objects are defined by sub-fields underneath `elf.sections.*`.
4342 pub const PROCESS_ELF_SECTIONS: &str = "process.elf.sections";
4343
4344 /// Chi-square probability distribution of the section.
4345 pub const PROCESS_ELF_SECTIONS_CHI2: &str = "process.elf.sections.chi2";
4346
4347 /// Shannon entropy calculation from the section.
4348 pub const PROCESS_ELF_SECTIONS_ENTROPY: &str = "process.elf.sections.entropy";
4349
4350 /// ELF Section List flags.
4351 pub const PROCESS_ELF_SECTIONS_FLAGS: &str = "process.elf.sections.flags";
4352
4353 /// ELF Section List name.
4354 pub const PROCESS_ELF_SECTIONS_NAME: &str = "process.elf.sections.name";
4355
4356 /// ELF Section List offset.
4357 pub const PROCESS_ELF_SECTIONS_PHYSICAL_OFFSET: &str = "process.elf.sections.physical_offset";
4358
4359 /// ELF Section List physical size.
4360 pub const PROCESS_ELF_SECTIONS_PHYSICAL_SIZE: &str = "process.elf.sections.physical_size";
4361
4362 /// ELF Section List type.
4363 pub const PROCESS_ELF_SECTIONS_TYPE: &str = "process.elf.sections.type";
4364
4365 /// Variance for Shannon entropy calculation from the section.
4366 pub const PROCESS_ELF_SECTIONS_VAR_ENTROPY: &str = "process.elf.sections.var_entropy";
4367
4368 /// ELF Section List virtual address.
4369 pub const PROCESS_ELF_SECTIONS_VIRTUAL_ADDRESS: &str = "process.elf.sections.virtual_address";
4370
4371 /// ELF Section List virtual size.
4372 pub const PROCESS_ELF_SECTIONS_VIRTUAL_SIZE: &str = "process.elf.sections.virtual_size";
4373
4374 /// An array containing an object for each segment of the ELF file.
4375 /// The keys that should be present in these objects are defined by sub-fields underneath `elf.segments.*`.
4376 pub const PROCESS_ELF_SEGMENTS: &str = "process.elf.segments";
4377
4378 /// ELF object segment sections.
4379 pub const PROCESS_ELF_SEGMENTS_SECTIONS: &str = "process.elf.segments.sections";
4380
4381 /// ELF object segment type.
4382 pub const PROCESS_ELF_SEGMENTS_TYPE: &str = "process.elf.segments.type";
4383
4384 /// List of shared libraries used by this ELF object.
4385 pub const PROCESS_ELF_SHARED_LIBRARIES: &str = "process.elf.shared_libraries";
4386
4387 /// telfhash symbol hash for ELF file.
4388 pub const PROCESS_ELF_TELFHASH: &str = "process.elf.telfhash";
4389
4390 /// The time the process ended.
4391 ///
4392 /// # Examples
4393 ///
4394 /// - `2016-05-23T08:05:34.853Z`
4395 pub const PROCESS_END: &str = "process.end";
4396
4397 /// Unique identifier for the process.
4398 /// 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.
4399 /// 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.
4400 ///
4401 /// # Examples
4402 ///
4403 /// - `c2c455d9f99375d`
4404 pub const PROCESS_ENTITY_ID: &str = "process.entity_id";
4405
4406 /// Array of process arguments, starting with the absolute path to the executable.
4407 /// May be filtered to protect sensitive information.
4408 ///
4409 /// # Examples
4410 ///
4411 /// - `["/usr/bin/ssh", "-l", "user", "10.0.0.16"]`
4412 pub const PROCESS_ENTRY_LEADER_ARGS: &str = "process.entry_leader.args";
4413
4414 /// Length of the process.args array.
4415 /// 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.
4416 ///
4417 /// # Examples
4418 ///
4419 /// - `4`
4420 pub const PROCESS_ENTRY_LEADER_ARGS_COUNT: &str = "process.entry_leader.args_count";
4421
4422 /// Name of the group.
4423 pub const PROCESS_ENTRY_LEADER_ATTESTED_GROUPS_NAME: &str =
4424 "process.entry_leader.attested_groups.name";
4425
4426 /// Unique identifier of the user.
4427 ///
4428 /// # Examples
4429 ///
4430 /// - `S-1-5-21-202424912787-2692429404-2351956786-1000`
4431 pub const PROCESS_ENTRY_LEADER_ATTESTED_USER_ID: &str = "process.entry_leader.attested_user.id";
4432
4433 /// Short name or login of the user.
4434 ///
4435 /// # Examples
4436 ///
4437 /// - `a.einstein`
4438 pub const PROCESS_ENTRY_LEADER_ATTESTED_USER_NAME: &str =
4439 "process.entry_leader.attested_user.name";
4440
4441 /// Full command line that started the process, including the absolute path to the executable, and all arguments.
4442 /// Some arguments may be filtered to protect sensitive information.
4443 ///
4444 /// # Examples
4445 ///
4446 /// - `/usr/bin/ssh -l user 10.0.0.16`
4447 pub const PROCESS_ENTRY_LEADER_COMMAND_LINE: &str = "process.entry_leader.command_line";
4448
4449 /// Unique identifier for the process.
4450 /// 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.
4451 /// 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.
4452 ///
4453 /// # Examples
4454 ///
4455 /// - `c2c455d9f99375d`
4456 pub const PROCESS_ENTRY_LEADER_ENTITY_ID: &str = "process.entry_leader.entity_id";
4457
4458 /// IP address of the source (IPv4 or IPv6).
4459 pub const PROCESS_ENTRY_LEADER_ENTRY_META_SOURCE_IP: &str =
4460 "process.entry_leader.entry_meta.source.ip";
4461
4462 /// The entry type for the entry session leader. Values include: init(e.g systemd), sshd, ssm, kubelet, teleport, terminal, console
4463 /// Note: This field is only set on process.session_leader.
4464 pub const PROCESS_ENTRY_LEADER_ENTRY_META_TYPE: &str = "process.entry_leader.entry_meta.type";
4465
4466 /// Absolute path to the process executable.
4467 ///
4468 /// # Examples
4469 ///
4470 /// - `/usr/bin/ssh`
4471 pub const PROCESS_ENTRY_LEADER_EXECUTABLE: &str = "process.entry_leader.executable";
4472
4473 /// Unique identifier for the group on the system/platform.
4474 pub const PROCESS_ENTRY_LEADER_GROUP_ID: &str = "process.entry_leader.group.id";
4475
4476 /// Name of the group.
4477 pub const PROCESS_ENTRY_LEADER_GROUP_NAME: &str = "process.entry_leader.group.name";
4478
4479 /// Whether the process is connected to an interactive shell.
4480 /// Process interactivity is inferred from the processes file descriptors. If the character device for the controlling tty is the same as stdin and stderr for the process, the process is considered interactive.
4481 /// Note: A non-interactive process can belong to an interactive session and is simply one that does not have open file descriptors reading the controlling TTY on FD 0 (stdin) or writing to the controlling TTY on FD 2 (stderr). A backgrounded process is still considered interactive if stdin and stderr are connected to the controlling TTY.
4482 ///
4483 /// # Examples
4484 ///
4485 /// - `True`
4486 pub const PROCESS_ENTRY_LEADER_INTERACTIVE: &str = "process.entry_leader.interactive";
4487
4488 /// Process name.
4489 /// Sometimes called program name or similar.
4490 ///
4491 /// # Examples
4492 ///
4493 /// - `ssh`
4494 pub const PROCESS_ENTRY_LEADER_NAME: &str = "process.entry_leader.name";
4495
4496 /// Unique identifier for the process.
4497 /// 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.
4498 /// 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.
4499 ///
4500 /// # Examples
4501 ///
4502 /// - `c2c455d9f99375d`
4503 pub const PROCESS_ENTRY_LEADER_PARENT_ENTITY_ID: &str = "process.entry_leader.parent.entity_id";
4504
4505 /// Process id.
4506 ///
4507 /// # Examples
4508 ///
4509 /// - `4242`
4510 pub const PROCESS_ENTRY_LEADER_PARENT_PID: &str = "process.entry_leader.parent.pid";
4511
4512 /// Unique identifier for the process.
4513 /// 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.
4514 /// 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.
4515 ///
4516 /// # Examples
4517 ///
4518 /// - `c2c455d9f99375d`
4519 pub const PROCESS_ENTRY_LEADER_PARENT_SESSION_LEADER_ENTITY_ID: &str =
4520 "process.entry_leader.parent.session_leader.entity_id";
4521
4522 /// Process id.
4523 ///
4524 /// # Examples
4525 ///
4526 /// - `4242`
4527 pub const PROCESS_ENTRY_LEADER_PARENT_SESSION_LEADER_PID: &str =
4528 "process.entry_leader.parent.session_leader.pid";
4529
4530 /// The time the process started.
4531 ///
4532 /// # Examples
4533 ///
4534 /// - `2016-05-23T08:05:34.853Z`
4535 pub const PROCESS_ENTRY_LEADER_PARENT_SESSION_LEADER_START: &str =
4536 "process.entry_leader.parent.session_leader.start";
4537
4538 /// Virtual process id.
4539 /// The process id within a pid namespace. This is not necessarily unique across all processes on the host but it is unique within the process namespace that the process exists within.
4540 ///
4541 /// # Examples
4542 ///
4543 /// - `4242`
4544 pub const PROCESS_ENTRY_LEADER_PARENT_SESSION_LEADER_VPID: &str =
4545 "process.entry_leader.parent.session_leader.vpid";
4546
4547 /// The time the process started.
4548 ///
4549 /// # Examples
4550 ///
4551 /// - `2016-05-23T08:05:34.853Z`
4552 pub const PROCESS_ENTRY_LEADER_PARENT_START: &str = "process.entry_leader.parent.start";
4553
4554 /// Virtual process id.
4555 /// The process id within a pid namespace. This is not necessarily unique across all processes on the host but it is unique within the process namespace that the process exists within.
4556 ///
4557 /// # Examples
4558 ///
4559 /// - `4242`
4560 pub const PROCESS_ENTRY_LEADER_PARENT_VPID: &str = "process.entry_leader.parent.vpid";
4561
4562 /// Process id.
4563 ///
4564 /// # Examples
4565 ///
4566 /// - `4242`
4567 pub const PROCESS_ENTRY_LEADER_PID: &str = "process.entry_leader.pid";
4568
4569 /// Unique identifier for the group on the system/platform.
4570 pub const PROCESS_ENTRY_LEADER_REAL_GROUP_ID: &str = "process.entry_leader.real_group.id";
4571
4572 /// Name of the group.
4573 pub const PROCESS_ENTRY_LEADER_REAL_GROUP_NAME: &str = "process.entry_leader.real_group.name";
4574
4575 /// Unique identifier of the user.
4576 ///
4577 /// # Examples
4578 ///
4579 /// - `S-1-5-21-202424912787-2692429404-2351956786-1000`
4580 pub const PROCESS_ENTRY_LEADER_REAL_USER_ID: &str = "process.entry_leader.real_user.id";
4581
4582 /// Short name or login of the user.
4583 ///
4584 /// # Examples
4585 ///
4586 /// - `a.einstein`
4587 pub const PROCESS_ENTRY_LEADER_REAL_USER_NAME: &str = "process.entry_leader.real_user.name";
4588
4589 /// This boolean is used to identify if a leader process is the same as the top level process.
4590 /// For example, if `process.group_leader.same_as_process = true`, it means the process event in question is the leader of its process group. Details under `process.*` like `pid` would be the same under `process.group_leader.*` The same applies for both `process.session_leader` and `process.entry_leader`.
4591 /// This field exists to the benefit of EQL and other rule engines since it's not possible to compare equality between two fields in a single document. e.g `process.entity_id` = `process.group_leader.entity_id` (top level process is the process group leader) OR `process.entity_id` = `process.entry_leader.entity_id` (top level process is the entry session leader)
4592 /// Instead these rules could be written like: `process.group_leader.same_as_process: true` OR `process.entry_leader.same_as_process: true`
4593 /// Note: This field is only set on `process.entry_leader`, `process.session_leader` and `process.group_leader`.
4594 ///
4595 /// # Examples
4596 ///
4597 /// - `True`
4598 pub const PROCESS_ENTRY_LEADER_SAME_AS_PROCESS: &str = "process.entry_leader.same_as_process";
4599
4600 /// Unique identifier for the group on the system/platform.
4601 pub const PROCESS_ENTRY_LEADER_SAVED_GROUP_ID: &str = "process.entry_leader.saved_group.id";
4602
4603 /// Name of the group.
4604 pub const PROCESS_ENTRY_LEADER_SAVED_GROUP_NAME: &str = "process.entry_leader.saved_group.name";
4605
4606 /// Unique identifier of the user.
4607 ///
4608 /// # Examples
4609 ///
4610 /// - `S-1-5-21-202424912787-2692429404-2351956786-1000`
4611 pub const PROCESS_ENTRY_LEADER_SAVED_USER_ID: &str = "process.entry_leader.saved_user.id";
4612
4613 /// Short name or login of the user.
4614 ///
4615 /// # Examples
4616 ///
4617 /// - `a.einstein`
4618 pub const PROCESS_ENTRY_LEADER_SAVED_USER_NAME: &str = "process.entry_leader.saved_user.name";
4619
4620 /// The time the process started.
4621 ///
4622 /// # Examples
4623 ///
4624 /// - `2016-05-23T08:05:34.853Z`
4625 pub const PROCESS_ENTRY_LEADER_START: &str = "process.entry_leader.start";
4626
4627 /// Unique identifier for the group on the system/platform.
4628 pub const PROCESS_ENTRY_LEADER_SUPPLEMENTAL_GROUPS_ID: &str =
4629 "process.entry_leader.supplemental_groups.id";
4630
4631 /// Name of the group.
4632 pub const PROCESS_ENTRY_LEADER_SUPPLEMENTAL_GROUPS_NAME: &str =
4633 "process.entry_leader.supplemental_groups.name";
4634
4635 /// Information about the controlling TTY device. If set, the process belongs to an interactive session.
4636 pub const PROCESS_ENTRY_LEADER_TTY: &str = "process.entry_leader.tty";
4637
4638 /// The major number identifies the driver associated with the device. The character device's major and minor numbers can be algorithmically combined to produce the more familiar terminal identifiers such as "ttyS0" and "pts/0". For more details, please refer to the Linux kernel documentation.
4639 ///
4640 /// # Examples
4641 ///
4642 /// - `4`
4643 pub const PROCESS_ENTRY_LEADER_TTY_CHAR_DEVICE_MAJOR: &str =
4644 "process.entry_leader.tty.char_device.major";
4645
4646 /// The minor number is used only by the driver specified by the major number; other parts of the kernel don’t use it, and merely pass it along to the driver. It is common for a driver to control several devices; the minor number provides a way for the driver to differentiate among them.
4647 ///
4648 /// # Examples
4649 ///
4650 /// - `1`
4651 pub const PROCESS_ENTRY_LEADER_TTY_CHAR_DEVICE_MINOR: &str =
4652 "process.entry_leader.tty.char_device.minor";
4653
4654 /// Unique identifier of the user.
4655 ///
4656 /// # Examples
4657 ///
4658 /// - `S-1-5-21-202424912787-2692429404-2351956786-1000`
4659 pub const PROCESS_ENTRY_LEADER_USER_ID: &str = "process.entry_leader.user.id";
4660
4661 /// Short name or login of the user.
4662 ///
4663 /// # Examples
4664 ///
4665 /// - `a.einstein`
4666 pub const PROCESS_ENTRY_LEADER_USER_NAME: &str = "process.entry_leader.user.name";
4667
4668 /// Virtual process id.
4669 /// The process id within a pid namespace. This is not necessarily unique across all processes on the host but it is unique within the process namespace that the process exists within.
4670 ///
4671 /// # Examples
4672 ///
4673 /// - `4242`
4674 pub const PROCESS_ENTRY_LEADER_VPID: &str = "process.entry_leader.vpid";
4675
4676 /// The working directory of the process.
4677 ///
4678 /// # Examples
4679 ///
4680 /// - `/home/alice`
4681 pub const PROCESS_ENTRY_LEADER_WORKING_DIRECTORY: &str =
4682 "process.entry_leader.working_directory";
4683
4684 /// Array of environment variable bindings. Captured from a snapshot of the environment at the time of execution.
4685 /// May be filtered to protect sensitive information.
4686 ///
4687 /// # Examples
4688 ///
4689 /// - `["PATH=/usr/local/bin:/usr/bin", "USER=ubuntu"]`
4690 pub const PROCESS_ENV_VARS: &str = "process.env_vars";
4691
4692 /// Absolute path to the process executable.
4693 ///
4694 /// # Examples
4695 ///
4696 /// - `/usr/bin/ssh`
4697 pub const PROCESS_EXECUTABLE: &str = "process.executable";
4698
4699 /// The exit code of the process, if this is a termination event.
4700 /// The field should be absent if there is no exit code for the event (e.g. process start).
4701 ///
4702 /// # Examples
4703 ///
4704 /// - `137`
4705 pub const PROCESS_EXIT_CODE: &str = "process.exit_code";
4706
4707 /// Array of process arguments, starting with the absolute path to the executable.
4708 /// May be filtered to protect sensitive information.
4709 ///
4710 /// # Examples
4711 ///
4712 /// - `["/usr/bin/ssh", "-l", "user", "10.0.0.16"]`
4713 pub const PROCESS_GROUP_LEADER_ARGS: &str = "process.group_leader.args";
4714
4715 /// Length of the process.args array.
4716 /// 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.
4717 ///
4718 /// # Examples
4719 ///
4720 /// - `4`
4721 pub const PROCESS_GROUP_LEADER_ARGS_COUNT: &str = "process.group_leader.args_count";
4722
4723 /// Full command line that started the process, including the absolute path to the executable, and all arguments.
4724 /// Some arguments may be filtered to protect sensitive information.
4725 ///
4726 /// # Examples
4727 ///
4728 /// - `/usr/bin/ssh -l user 10.0.0.16`
4729 pub const PROCESS_GROUP_LEADER_COMMAND_LINE: &str = "process.group_leader.command_line";
4730
4731 /// Unique identifier for the process.
4732 /// 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.
4733 /// 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.
4734 ///
4735 /// # Examples
4736 ///
4737 /// - `c2c455d9f99375d`
4738 pub const PROCESS_GROUP_LEADER_ENTITY_ID: &str = "process.group_leader.entity_id";
4739
4740 /// Absolute path to the process executable.
4741 ///
4742 /// # Examples
4743 ///
4744 /// - `/usr/bin/ssh`
4745 pub const PROCESS_GROUP_LEADER_EXECUTABLE: &str = "process.group_leader.executable";
4746
4747 /// Unique identifier for the group on the system/platform.
4748 pub const PROCESS_GROUP_LEADER_GROUP_ID: &str = "process.group_leader.group.id";
4749
4750 /// Name of the group.
4751 pub const PROCESS_GROUP_LEADER_GROUP_NAME: &str = "process.group_leader.group.name";
4752
4753 /// Whether the process is connected to an interactive shell.
4754 /// Process interactivity is inferred from the processes file descriptors. If the character device for the controlling tty is the same as stdin and stderr for the process, the process is considered interactive.
4755 /// Note: A non-interactive process can belong to an interactive session and is simply one that does not have open file descriptors reading the controlling TTY on FD 0 (stdin) or writing to the controlling TTY on FD 2 (stderr). A backgrounded process is still considered interactive if stdin and stderr are connected to the controlling TTY.
4756 ///
4757 /// # Examples
4758 ///
4759 /// - `True`
4760 pub const PROCESS_GROUP_LEADER_INTERACTIVE: &str = "process.group_leader.interactive";
4761
4762 /// Process name.
4763 /// Sometimes called program name or similar.
4764 ///
4765 /// # Examples
4766 ///
4767 /// - `ssh`
4768 pub const PROCESS_GROUP_LEADER_NAME: &str = "process.group_leader.name";
4769
4770 /// Process id.
4771 ///
4772 /// # Examples
4773 ///
4774 /// - `4242`
4775 pub const PROCESS_GROUP_LEADER_PID: &str = "process.group_leader.pid";
4776
4777 /// Unique identifier for the group on the system/platform.
4778 pub const PROCESS_GROUP_LEADER_REAL_GROUP_ID: &str = "process.group_leader.real_group.id";
4779
4780 /// Name of the group.
4781 pub const PROCESS_GROUP_LEADER_REAL_GROUP_NAME: &str = "process.group_leader.real_group.name";
4782
4783 /// Unique identifier of the user.
4784 ///
4785 /// # Examples
4786 ///
4787 /// - `S-1-5-21-202424912787-2692429404-2351956786-1000`
4788 pub const PROCESS_GROUP_LEADER_REAL_USER_ID: &str = "process.group_leader.real_user.id";
4789
4790 /// Short name or login of the user.
4791 ///
4792 /// # Examples
4793 ///
4794 /// - `a.einstein`
4795 pub const PROCESS_GROUP_LEADER_REAL_USER_NAME: &str = "process.group_leader.real_user.name";
4796
4797 /// This boolean is used to identify if a leader process is the same as the top level process.
4798 /// For example, if `process.group_leader.same_as_process = true`, it means the process event in question is the leader of its process group. Details under `process.*` like `pid` would be the same under `process.group_leader.*` The same applies for both `process.session_leader` and `process.entry_leader`.
4799 /// This field exists to the benefit of EQL and other rule engines since it's not possible to compare equality between two fields in a single document. e.g `process.entity_id` = `process.group_leader.entity_id` (top level process is the process group leader) OR `process.entity_id` = `process.entry_leader.entity_id` (top level process is the entry session leader)
4800 /// Instead these rules could be written like: `process.group_leader.same_as_process: true` OR `process.entry_leader.same_as_process: true`
4801 /// Note: This field is only set on `process.entry_leader`, `process.session_leader` and `process.group_leader`.
4802 ///
4803 /// # Examples
4804 ///
4805 /// - `True`
4806 pub const PROCESS_GROUP_LEADER_SAME_AS_PROCESS: &str = "process.group_leader.same_as_process";
4807
4808 /// Unique identifier for the group on the system/platform.
4809 pub const PROCESS_GROUP_LEADER_SAVED_GROUP_ID: &str = "process.group_leader.saved_group.id";
4810
4811 /// Name of the group.
4812 pub const PROCESS_GROUP_LEADER_SAVED_GROUP_NAME: &str = "process.group_leader.saved_group.name";
4813
4814 /// Unique identifier of the user.
4815 ///
4816 /// # Examples
4817 ///
4818 /// - `S-1-5-21-202424912787-2692429404-2351956786-1000`
4819 pub const PROCESS_GROUP_LEADER_SAVED_USER_ID: &str = "process.group_leader.saved_user.id";
4820
4821 /// Short name or login of the user.
4822 ///
4823 /// # Examples
4824 ///
4825 /// - `a.einstein`
4826 pub const PROCESS_GROUP_LEADER_SAVED_USER_NAME: &str = "process.group_leader.saved_user.name";
4827
4828 /// The time the process started.
4829 ///
4830 /// # Examples
4831 ///
4832 /// - `2016-05-23T08:05:34.853Z`
4833 pub const PROCESS_GROUP_LEADER_START: &str = "process.group_leader.start";
4834
4835 /// Unique identifier for the group on the system/platform.
4836 pub const PROCESS_GROUP_LEADER_SUPPLEMENTAL_GROUPS_ID: &str =
4837 "process.group_leader.supplemental_groups.id";
4838
4839 /// Name of the group.
4840 pub const PROCESS_GROUP_LEADER_SUPPLEMENTAL_GROUPS_NAME: &str =
4841 "process.group_leader.supplemental_groups.name";
4842
4843 /// Information about the controlling TTY device. If set, the process belongs to an interactive session.
4844 pub const PROCESS_GROUP_LEADER_TTY: &str = "process.group_leader.tty";
4845
4846 /// The major number identifies the driver associated with the device. The character device's major and minor numbers can be algorithmically combined to produce the more familiar terminal identifiers such as "ttyS0" and "pts/0". For more details, please refer to the Linux kernel documentation.
4847 ///
4848 /// # Examples
4849 ///
4850 /// - `4`
4851 pub const PROCESS_GROUP_LEADER_TTY_CHAR_DEVICE_MAJOR: &str =
4852 "process.group_leader.tty.char_device.major";
4853
4854 /// The minor number is used only by the driver specified by the major number; other parts of the kernel don’t use it, and merely pass it along to the driver. It is common for a driver to control several devices; the minor number provides a way for the driver to differentiate among them.
4855 ///
4856 /// # Examples
4857 ///
4858 /// - `1`
4859 pub const PROCESS_GROUP_LEADER_TTY_CHAR_DEVICE_MINOR: &str =
4860 "process.group_leader.tty.char_device.minor";
4861
4862 /// Unique identifier of the user.
4863 ///
4864 /// # Examples
4865 ///
4866 /// - `S-1-5-21-202424912787-2692429404-2351956786-1000`
4867 pub const PROCESS_GROUP_LEADER_USER_ID: &str = "process.group_leader.user.id";
4868
4869 /// Short name or login of the user.
4870 ///
4871 /// # Examples
4872 ///
4873 /// - `a.einstein`
4874 pub const PROCESS_GROUP_LEADER_USER_NAME: &str = "process.group_leader.user.name";
4875
4876 /// Virtual process id.
4877 /// The process id within a pid namespace. This is not necessarily unique across all processes on the host but it is unique within the process namespace that the process exists within.
4878 ///
4879 /// # Examples
4880 ///
4881 /// - `4242`
4882 pub const PROCESS_GROUP_LEADER_VPID: &str = "process.group_leader.vpid";
4883
4884 /// The working directory of the process.
4885 ///
4886 /// # Examples
4887 ///
4888 /// - `/home/alice`
4889 pub const PROCESS_GROUP_LEADER_WORKING_DIRECTORY: &str =
4890 "process.group_leader.working_directory";
4891
4892 /// MD5 hash.
4893 pub const PROCESS_HASH_MD5: &str = "process.hash.md5";
4894
4895 /// SHA1 hash.
4896 pub const PROCESS_HASH_SHA1: &str = "process.hash.sha1";
4897
4898 /// SHA256 hash.
4899 pub const PROCESS_HASH_SHA256: &str = "process.hash.sha256";
4900
4901 /// SHA384 hash.
4902 pub const PROCESS_HASH_SHA384: &str = "process.hash.sha384";
4903
4904 /// SHA512 hash.
4905 pub const PROCESS_HASH_SHA512: &str = "process.hash.sha512";
4906
4907 /// SSDEEP hash.
4908 pub const PROCESS_HASH_SSDEEP: &str = "process.hash.ssdeep";
4909
4910 /// TLSH hash.
4911 pub const PROCESS_HASH_TLSH: &str = "process.hash.tlsh";
4912
4913 /// Whether the process is connected to an interactive shell.
4914 /// Process interactivity is inferred from the processes file descriptors. If the character device for the controlling tty is the same as stdin and stderr for the process, the process is considered interactive.
4915 /// Note: A non-interactive process can belong to an interactive session and is simply one that does not have open file descriptors reading the controlling TTY on FD 0 (stdin) or writing to the controlling TTY on FD 2 (stderr). A backgrounded process is still considered interactive if stdin and stderr are connected to the controlling TTY.
4916 ///
4917 /// # Examples
4918 ///
4919 /// - `True`
4920 pub const PROCESS_INTERACTIVE: &str = "process.interactive";
4921
4922 /// A chunk of input or output (IO) from a single process.
4923 /// This field only appears on the top level process object, which is the process that wrote the output or read the input.
4924 pub const PROCESS_IO: &str = "process.io";
4925
4926 /// An array of byte offsets and lengths denoting where IO data has been skipped.
4927 pub const PROCESS_IO_BYTES_SKIPPED: &str = "process.io.bytes_skipped";
4928
4929 /// The length of bytes skipped.
4930 pub const PROCESS_IO_BYTES_SKIPPED_LENGTH: &str = "process.io.bytes_skipped.length";
4931
4932 /// The byte offset into this event's io.text (or io.bytes in the future) where length bytes were skipped.
4933 pub const PROCESS_IO_BYTES_SKIPPED_OFFSET: &str = "process.io.bytes_skipped.offset";
4934
4935 /// If true, the process producing the output has exceeded the max_kilobytes_per_process configuration setting.
4936 pub const PROCESS_IO_MAX_BYTES_PER_PROCESS_EXCEEDED: &str =
4937 "process.io.max_bytes_per_process_exceeded";
4938
4939 /// A chunk of output or input sanitized to UTF-8.
4940 /// Best efforts are made to ensure complete lines are captured in these events. Assumptions should NOT be made that multiple lines will appear in the same event. TTY output may contain terminal control codes such as for cursor movement, so some string queries may not match due to terminal codes inserted between characters of a word.
4941 pub const PROCESS_IO_TEXT: &str = "process.io.text";
4942
4943 /// The total number of bytes captured in this event.
4944 pub const PROCESS_IO_TOTAL_BYTES_CAPTURED: &str = "process.io.total_bytes_captured";
4945
4946 /// The total number of bytes that were not captured due to implementation restrictions such as buffer size limits. Implementors should strive to ensure this value is always zero
4947 pub const PROCESS_IO_TOTAL_BYTES_SKIPPED: &str = "process.io.total_bytes_skipped";
4948
4949 /// The type of object on which the IO action (read or write) was taken.
4950 /// Currently only 'tty' is supported. Other types may be added in the future for 'file' and 'socket' support.
4951 pub const PROCESS_IO_TYPE: &str = "process.io.type";
4952
4953 /// A hash of the Go language imports in a Mach-O file excluding standard library imports. An 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.
4954 /// The algorithm used to calculate the Go symbol hash and a reference implementation are available [here](https://github.com/elastic/toutoumomoma).
4955 ///
4956 /// # Examples
4957 ///
4958 /// - `10bddcb4cee42080f76c88d9ff964491`
4959 pub const PROCESS_MACHO_GO_IMPORT_HASH: &str = "process.macho.go_import_hash";
4960
4961 /// List of imported Go language element names and types.
4962 pub const PROCESS_MACHO_GO_IMPORTS: &str = "process.macho.go_imports";
4963
4964 /// Shannon entropy calculation from the list of Go imports.
4965 pub const PROCESS_MACHO_GO_IMPORTS_NAMES_ENTROPY: &str =
4966 "process.macho.go_imports_names_entropy";
4967
4968 /// Variance for Shannon entropy calculation from the list of Go imports.
4969 pub const PROCESS_MACHO_GO_IMPORTS_NAMES_VAR_ENTROPY: &str =
4970 "process.macho.go_imports_names_var_entropy";
4971
4972 /// Set to true if the file is a Go executable that has had its symbols stripped or obfuscated and false if an unobfuscated Go executable.
4973 pub const PROCESS_MACHO_GO_STRIPPED: &str = "process.macho.go_stripped";
4974
4975 /// A hash of the imports in a Mach-O file. An 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.
4976 /// This is a synonym for symhash.
4977 ///
4978 /// # Examples
4979 ///
4980 /// - `d41d8cd98f00b204e9800998ecf8427e`
4981 pub const PROCESS_MACHO_IMPORT_HASH: &str = "process.macho.import_hash";
4982
4983 /// List of imported element names and types.
4984 pub const PROCESS_MACHO_IMPORTS: &str = "process.macho.imports";
4985
4986 /// Shannon entropy calculation from the list of imported element names and types.
4987 pub const PROCESS_MACHO_IMPORTS_NAMES_ENTROPY: &str = "process.macho.imports_names_entropy";
4988
4989 /// Variance for Shannon entropy calculation from the list of imported element names and types.
4990 pub const PROCESS_MACHO_IMPORTS_NAMES_VAR_ENTROPY: &str =
4991 "process.macho.imports_names_var_entropy";
4992
4993 /// An array containing an object for each section of the Mach-O file.
4994 /// The keys that should be present in these objects are defined by sub-fields underneath `macho.sections.*`.
4995 pub const PROCESS_MACHO_SECTIONS: &str = "process.macho.sections";
4996
4997 /// Shannon entropy calculation from the section.
4998 pub const PROCESS_MACHO_SECTIONS_ENTROPY: &str = "process.macho.sections.entropy";
4999
5000 /// Mach-O Section List name.
5001 pub const PROCESS_MACHO_SECTIONS_NAME: &str = "process.macho.sections.name";
5002
5003 /// Mach-O Section List physical size.
5004 pub const PROCESS_MACHO_SECTIONS_PHYSICAL_SIZE: &str = "process.macho.sections.physical_size";
5005
5006 /// Variance for Shannon entropy calculation from the section.
5007 pub const PROCESS_MACHO_SECTIONS_VAR_ENTROPY: &str = "process.macho.sections.var_entropy";
5008
5009 /// Mach-O Section List virtual size. This is always the same as `physical_size`.
5010 pub const PROCESS_MACHO_SECTIONS_VIRTUAL_SIZE: &str = "process.macho.sections.virtual_size";
5011
5012 /// A hash of the imports in a Mach-O file. An 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.
5013 /// This is a Mach-O implementation of the Windows PE imphash
5014 ///
5015 /// # Examples
5016 ///
5017 /// - `d3ccf195b62a9279c3c19af1080497ec`
5018 pub const PROCESS_MACHO_SYMHASH: &str = "process.macho.symhash";
5019
5020 /// Process name.
5021 /// Sometimes called program name or similar.
5022 ///
5023 /// # Examples
5024 ///
5025 /// - `ssh`
5026 pub const PROCESS_NAME: &str = "process.name";
5027
5028 /// Array of process arguments, starting with the absolute path to the executable.
5029 /// May be filtered to protect sensitive information.
5030 ///
5031 /// # Examples
5032 ///
5033 /// - `["/usr/bin/ssh", "-l", "user", "10.0.0.16"]`
5034 pub const PROCESS_PARENT_ARGS: &str = "process.parent.args";
5035
5036 /// Length of the process.args array.
5037 /// 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.
5038 ///
5039 /// # Examples
5040 ///
5041 /// - `4`
5042 pub const PROCESS_PARENT_ARGS_COUNT: &str = "process.parent.args_count";
5043
5044 /// The hashing algorithm used to sign the process.
5045 /// This value can distinguish signatures when a file is signed multiple times by the same signer but with a different digest algorithm.
5046 ///
5047 /// # Examples
5048 ///
5049 /// - `sha256`
5050 pub const PROCESS_PARENT_CODE_SIGNATURE_DIGEST_ALGORITHM: &str =
5051 "process.parent.code_signature.digest_algorithm";
5052
5053 /// Boolean to capture if a signature is present.
5054 ///
5055 /// # Examples
5056 ///
5057 /// - `true`
5058 pub const PROCESS_PARENT_CODE_SIGNATURE_EXISTS: &str = "process.parent.code_signature.exists";
5059
5060 /// The identifier used to sign the process.
5061 /// This is used to identify the application manufactured by a software vendor. The field is relevant to Apple *OS only.
5062 ///
5063 /// # Examples
5064 ///
5065 /// - `com.apple.xpc.proxy`
5066 pub const PROCESS_PARENT_CODE_SIGNATURE_SIGNING_ID: &str =
5067 "process.parent.code_signature.signing_id";
5068
5069 /// Additional information about the certificate status.
5070 /// 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.
5071 ///
5072 /// # Examples
5073 ///
5074 /// - `ERROR_UNTRUSTED_ROOT`
5075 pub const PROCESS_PARENT_CODE_SIGNATURE_STATUS: &str = "process.parent.code_signature.status";
5076
5077 /// Subject name of the code signer
5078 ///
5079 /// # Examples
5080 ///
5081 /// - `Microsoft Corporation`
5082 pub const PROCESS_PARENT_CODE_SIGNATURE_SUBJECT_NAME: &str =
5083 "process.parent.code_signature.subject_name";
5084
5085 /// The team identifier used to sign the process.
5086 /// This is used to identify the team or vendor of a software product. The field is relevant to Apple *OS only.
5087 ///
5088 /// # Examples
5089 ///
5090 /// - `EQHXZ8M8AV`
5091 pub const PROCESS_PARENT_CODE_SIGNATURE_TEAM_ID: &str = "process.parent.code_signature.team_id";
5092
5093 /// Date and time when the code signature was generated and signed.
5094 ///
5095 /// # Examples
5096 ///
5097 /// - `2021-01-01T12:10:30Z`
5098 pub const PROCESS_PARENT_CODE_SIGNATURE_TIMESTAMP: &str =
5099 "process.parent.code_signature.timestamp";
5100
5101 /// Stores the trust status of the certificate chain.
5102 /// Validating the trust of the certificate chain may be complicated, and this field should only be populated by tools that actively check the status.
5103 ///
5104 /// # Examples
5105 ///
5106 /// - `true`
5107 pub const PROCESS_PARENT_CODE_SIGNATURE_TRUSTED: &str = "process.parent.code_signature.trusted";
5108
5109 /// Boolean to capture if the digital signature is verified against the binary content.
5110 /// Leave unpopulated if a certificate was unchecked.
5111 ///
5112 /// # Examples
5113 ///
5114 /// - `true`
5115 pub const PROCESS_PARENT_CODE_SIGNATURE_VALID: &str = "process.parent.code_signature.valid";
5116
5117 /// Full command line that started the process, including the absolute path to the executable, and all arguments.
5118 /// Some arguments may be filtered to protect sensitive information.
5119 ///
5120 /// # Examples
5121 ///
5122 /// - `/usr/bin/ssh -l user 10.0.0.16`
5123 pub const PROCESS_PARENT_COMMAND_LINE: &str = "process.parent.command_line";
5124
5125 /// Machine architecture of the ELF file.
5126 ///
5127 /// # Examples
5128 ///
5129 /// - `x86-64`
5130 pub const PROCESS_PARENT_ELF_ARCHITECTURE: &str = "process.parent.elf.architecture";
5131
5132 /// Byte sequence of ELF file.
5133 ///
5134 /// # Examples
5135 ///
5136 /// - `Little Endian`
5137 pub const PROCESS_PARENT_ELF_BYTE_ORDER: &str = "process.parent.elf.byte_order";
5138
5139 /// CPU type of the ELF file.
5140 ///
5141 /// # Examples
5142 ///
5143 /// - `Intel`
5144 pub const PROCESS_PARENT_ELF_CPU_TYPE: &str = "process.parent.elf.cpu_type";
5145
5146 /// Extracted when possible from the file's metadata. Indicates when it was built or compiled. It can also be faked by malware creators.
5147 pub const PROCESS_PARENT_ELF_CREATION_DATE: &str = "process.parent.elf.creation_date";
5148
5149 /// List of exported element names and types.
5150 pub const PROCESS_PARENT_ELF_EXPORTS: &str = "process.parent.elf.exports";
5151
5152 /// A hash of the Go language imports in an ELF file excluding standard library imports. An 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.
5153 /// The algorithm used to calculate the Go symbol hash and a reference implementation are available [here](https://github.com/elastic/toutoumomoma).
5154 ///
5155 /// # Examples
5156 ///
5157 /// - `10bddcb4cee42080f76c88d9ff964491`
5158 pub const PROCESS_PARENT_ELF_GO_IMPORT_HASH: &str = "process.parent.elf.go_import_hash";
5159
5160 /// List of imported Go language element names and types.
5161 pub const PROCESS_PARENT_ELF_GO_IMPORTS: &str = "process.parent.elf.go_imports";
5162
5163 /// Shannon entropy calculation from the list of Go imports.
5164 pub const PROCESS_PARENT_ELF_GO_IMPORTS_NAMES_ENTROPY: &str =
5165 "process.parent.elf.go_imports_names_entropy";
5166
5167 /// Variance for Shannon entropy calculation from the list of Go imports.
5168 pub const PROCESS_PARENT_ELF_GO_IMPORTS_NAMES_VAR_ENTROPY: &str =
5169 "process.parent.elf.go_imports_names_var_entropy";
5170
5171 /// Set to true if the file is a Go executable that has had its symbols stripped or obfuscated and false if an unobfuscated Go executable.
5172 pub const PROCESS_PARENT_ELF_GO_STRIPPED: &str = "process.parent.elf.go_stripped";
5173
5174 /// Version of the ELF Application Binary Interface (ABI).
5175 pub const PROCESS_PARENT_ELF_HEADER_ABI_VERSION: &str = "process.parent.elf.header.abi_version";
5176
5177 /// Header class of the ELF file.
5178 pub const PROCESS_PARENT_ELF_HEADER_CLASS: &str = "process.parent.elf.header.class";
5179
5180 /// Data table of the ELF header.
5181 pub const PROCESS_PARENT_ELF_HEADER_DATA: &str = "process.parent.elf.header.data";
5182
5183 /// Header entrypoint of the ELF file.
5184 pub const PROCESS_PARENT_ELF_HEADER_ENTRYPOINT: &str = "process.parent.elf.header.entrypoint";
5185
5186 /// "0x1" for original ELF files.
5187 pub const PROCESS_PARENT_ELF_HEADER_OBJECT_VERSION: &str =
5188 "process.parent.elf.header.object_version";
5189
5190 /// Application Binary Interface (ABI) of the Linux OS.
5191 pub const PROCESS_PARENT_ELF_HEADER_OS_ABI: &str = "process.parent.elf.header.os_abi";
5192
5193 /// Header type of the ELF file.
5194 pub const PROCESS_PARENT_ELF_HEADER_TYPE: &str = "process.parent.elf.header.type";
5195
5196 /// Version of the ELF header.
5197 pub const PROCESS_PARENT_ELF_HEADER_VERSION: &str = "process.parent.elf.header.version";
5198
5199 /// A hash of the imports in an ELF file. An 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.
5200 /// This is an ELF implementation of the Windows PE imphash.
5201 ///
5202 /// # Examples
5203 ///
5204 /// - `d41d8cd98f00b204e9800998ecf8427e`
5205 pub const PROCESS_PARENT_ELF_IMPORT_HASH: &str = "process.parent.elf.import_hash";
5206
5207 /// List of imported element names and types.
5208 pub const PROCESS_PARENT_ELF_IMPORTS: &str = "process.parent.elf.imports";
5209
5210 /// Shannon entropy calculation from the list of imported element names and types.
5211 pub const PROCESS_PARENT_ELF_IMPORTS_NAMES_ENTROPY: &str =
5212 "process.parent.elf.imports_names_entropy";
5213
5214 /// Variance for Shannon entropy calculation from the list of imported element names and types.
5215 pub const PROCESS_PARENT_ELF_IMPORTS_NAMES_VAR_ENTROPY: &str =
5216 "process.parent.elf.imports_names_var_entropy";
5217
5218 /// An array containing an object for each section of the ELF file.
5219 /// The keys that should be present in these objects are defined by sub-fields underneath `elf.sections.*`.
5220 pub const PROCESS_PARENT_ELF_SECTIONS: &str = "process.parent.elf.sections";
5221
5222 /// Chi-square probability distribution of the section.
5223 pub const PROCESS_PARENT_ELF_SECTIONS_CHI2: &str = "process.parent.elf.sections.chi2";
5224
5225 /// Shannon entropy calculation from the section.
5226 pub const PROCESS_PARENT_ELF_SECTIONS_ENTROPY: &str = "process.parent.elf.sections.entropy";
5227
5228 /// ELF Section List flags.
5229 pub const PROCESS_PARENT_ELF_SECTIONS_FLAGS: &str = "process.parent.elf.sections.flags";
5230
5231 /// ELF Section List name.
5232 pub const PROCESS_PARENT_ELF_SECTIONS_NAME: &str = "process.parent.elf.sections.name";
5233
5234 /// ELF Section List offset.
5235 pub const PROCESS_PARENT_ELF_SECTIONS_PHYSICAL_OFFSET: &str =
5236 "process.parent.elf.sections.physical_offset";
5237
5238 /// ELF Section List physical size.
5239 pub const PROCESS_PARENT_ELF_SECTIONS_PHYSICAL_SIZE: &str =
5240 "process.parent.elf.sections.physical_size";
5241
5242 /// ELF Section List type.
5243 pub const PROCESS_PARENT_ELF_SECTIONS_TYPE: &str = "process.parent.elf.sections.type";
5244
5245 /// Variance for Shannon entropy calculation from the section.
5246 pub const PROCESS_PARENT_ELF_SECTIONS_VAR_ENTROPY: &str =
5247 "process.parent.elf.sections.var_entropy";
5248
5249 /// ELF Section List virtual address.
5250 pub const PROCESS_PARENT_ELF_SECTIONS_VIRTUAL_ADDRESS: &str =
5251 "process.parent.elf.sections.virtual_address";
5252
5253 /// ELF Section List virtual size.
5254 pub const PROCESS_PARENT_ELF_SECTIONS_VIRTUAL_SIZE: &str =
5255 "process.parent.elf.sections.virtual_size";
5256
5257 /// An array containing an object for each segment of the ELF file.
5258 /// The keys that should be present in these objects are defined by sub-fields underneath `elf.segments.*`.
5259 pub const PROCESS_PARENT_ELF_SEGMENTS: &str = "process.parent.elf.segments";
5260
5261 /// ELF object segment sections.
5262 pub const PROCESS_PARENT_ELF_SEGMENTS_SECTIONS: &str = "process.parent.elf.segments.sections";
5263
5264 /// ELF object segment type.
5265 pub const PROCESS_PARENT_ELF_SEGMENTS_TYPE: &str = "process.parent.elf.segments.type";
5266
5267 /// List of shared libraries used by this ELF object.
5268 pub const PROCESS_PARENT_ELF_SHARED_LIBRARIES: &str = "process.parent.elf.shared_libraries";
5269
5270 /// telfhash symbol hash for ELF file.
5271 pub const PROCESS_PARENT_ELF_TELFHASH: &str = "process.parent.elf.telfhash";
5272
5273 /// The time the process ended.
5274 ///
5275 /// # Examples
5276 ///
5277 /// - `2016-05-23T08:05:34.853Z`
5278 pub const PROCESS_PARENT_END: &str = "process.parent.end";
5279
5280 /// Unique identifier for the process.
5281 /// 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.
5282 /// 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.
5283 ///
5284 /// # Examples
5285 ///
5286 /// - `c2c455d9f99375d`
5287 pub const PROCESS_PARENT_ENTITY_ID: &str = "process.parent.entity_id";
5288
5289 /// Absolute path to the process executable.
5290 ///
5291 /// # Examples
5292 ///
5293 /// - `/usr/bin/ssh`
5294 pub const PROCESS_PARENT_EXECUTABLE: &str = "process.parent.executable";
5295
5296 /// The exit code of the process, if this is a termination event.
5297 /// The field should be absent if there is no exit code for the event (e.g. process start).
5298 ///
5299 /// # Examples
5300 ///
5301 /// - `137`
5302 pub const PROCESS_PARENT_EXIT_CODE: &str = "process.parent.exit_code";
5303
5304 /// Unique identifier for the group on the system/platform.
5305 pub const PROCESS_PARENT_GROUP_ID: &str = "process.parent.group.id";
5306
5307 /// Name of the group.
5308 pub const PROCESS_PARENT_GROUP_NAME: &str = "process.parent.group.name";
5309
5310 /// Unique identifier for the process.
5311 /// 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.
5312 /// 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.
5313 ///
5314 /// # Examples
5315 ///
5316 /// - `c2c455d9f99375d`
5317 pub const PROCESS_PARENT_GROUP_LEADER_ENTITY_ID: &str = "process.parent.group_leader.entity_id";
5318
5319 /// Process id.
5320 ///
5321 /// # Examples
5322 ///
5323 /// - `4242`
5324 pub const PROCESS_PARENT_GROUP_LEADER_PID: &str = "process.parent.group_leader.pid";
5325
5326 /// The time the process started.
5327 ///
5328 /// # Examples
5329 ///
5330 /// - `2016-05-23T08:05:34.853Z`
5331 pub const PROCESS_PARENT_GROUP_LEADER_START: &str = "process.parent.group_leader.start";
5332
5333 /// Virtual process id.
5334 /// The process id within a pid namespace. This is not necessarily unique across all processes on the host but it is unique within the process namespace that the process exists within.
5335 ///
5336 /// # Examples
5337 ///
5338 /// - `4242`
5339 pub const PROCESS_PARENT_GROUP_LEADER_VPID: &str = "process.parent.group_leader.vpid";
5340
5341 /// MD5 hash.
5342 pub const PROCESS_PARENT_HASH_MD5: &str = "process.parent.hash.md5";
5343
5344 /// SHA1 hash.
5345 pub const PROCESS_PARENT_HASH_SHA1: &str = "process.parent.hash.sha1";
5346
5347 /// SHA256 hash.
5348 pub const PROCESS_PARENT_HASH_SHA256: &str = "process.parent.hash.sha256";
5349
5350 /// SHA384 hash.
5351 pub const PROCESS_PARENT_HASH_SHA384: &str = "process.parent.hash.sha384";
5352
5353 /// SHA512 hash.
5354 pub const PROCESS_PARENT_HASH_SHA512: &str = "process.parent.hash.sha512";
5355
5356 /// SSDEEP hash.
5357 pub const PROCESS_PARENT_HASH_SSDEEP: &str = "process.parent.hash.ssdeep";
5358
5359 /// TLSH hash.
5360 pub const PROCESS_PARENT_HASH_TLSH: &str = "process.parent.hash.tlsh";
5361
5362 /// Whether the process is connected to an interactive shell.
5363 /// Process interactivity is inferred from the processes file descriptors. If the character device for the controlling tty is the same as stdin and stderr for the process, the process is considered interactive.
5364 /// Note: A non-interactive process can belong to an interactive session and is simply one that does not have open file descriptors reading the controlling TTY on FD 0 (stdin) or writing to the controlling TTY on FD 2 (stderr). A backgrounded process is still considered interactive if stdin and stderr are connected to the controlling TTY.
5365 ///
5366 /// # Examples
5367 ///
5368 /// - `True`
5369 pub const PROCESS_PARENT_INTERACTIVE: &str = "process.parent.interactive";
5370
5371 /// A hash of the Go language imports in a Mach-O file excluding standard library imports. An 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.
5372 /// The algorithm used to calculate the Go symbol hash and a reference implementation are available [here](https://github.com/elastic/toutoumomoma).
5373 ///
5374 /// # Examples
5375 ///
5376 /// - `10bddcb4cee42080f76c88d9ff964491`
5377 pub const PROCESS_PARENT_MACHO_GO_IMPORT_HASH: &str = "process.parent.macho.go_import_hash";
5378
5379 /// List of imported Go language element names and types.
5380 pub const PROCESS_PARENT_MACHO_GO_IMPORTS: &str = "process.parent.macho.go_imports";
5381
5382 /// Shannon entropy calculation from the list of Go imports.
5383 pub const PROCESS_PARENT_MACHO_GO_IMPORTS_NAMES_ENTROPY: &str =
5384 "process.parent.macho.go_imports_names_entropy";
5385
5386 /// Variance for Shannon entropy calculation from the list of Go imports.
5387 pub const PROCESS_PARENT_MACHO_GO_IMPORTS_NAMES_VAR_ENTROPY: &str =
5388 "process.parent.macho.go_imports_names_var_entropy";
5389
5390 /// Set to true if the file is a Go executable that has had its symbols stripped or obfuscated and false if an unobfuscated Go executable.
5391 pub const PROCESS_PARENT_MACHO_GO_STRIPPED: &str = "process.parent.macho.go_stripped";
5392
5393 /// A hash of the imports in a Mach-O file. An 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.
5394 /// This is a synonym for symhash.
5395 ///
5396 /// # Examples
5397 ///
5398 /// - `d41d8cd98f00b204e9800998ecf8427e`
5399 pub const PROCESS_PARENT_MACHO_IMPORT_HASH: &str = "process.parent.macho.import_hash";
5400
5401 /// List of imported element names and types.
5402 pub const PROCESS_PARENT_MACHO_IMPORTS: &str = "process.parent.macho.imports";
5403
5404 /// Shannon entropy calculation from the list of imported element names and types.
5405 pub const PROCESS_PARENT_MACHO_IMPORTS_NAMES_ENTROPY: &str =
5406 "process.parent.macho.imports_names_entropy";
5407
5408 /// Variance for Shannon entropy calculation from the list of imported element names and types.
5409 pub const PROCESS_PARENT_MACHO_IMPORTS_NAMES_VAR_ENTROPY: &str =
5410 "process.parent.macho.imports_names_var_entropy";
5411
5412 /// An array containing an object for each section of the Mach-O file.
5413 /// The keys that should be present in these objects are defined by sub-fields underneath `macho.sections.*`.
5414 pub const PROCESS_PARENT_MACHO_SECTIONS: &str = "process.parent.macho.sections";
5415
5416 /// Shannon entropy calculation from the section.
5417 pub const PROCESS_PARENT_MACHO_SECTIONS_ENTROPY: &str = "process.parent.macho.sections.entropy";
5418
5419 /// Mach-O Section List name.
5420 pub const PROCESS_PARENT_MACHO_SECTIONS_NAME: &str = "process.parent.macho.sections.name";
5421
5422 /// Mach-O Section List physical size.
5423 pub const PROCESS_PARENT_MACHO_SECTIONS_PHYSICAL_SIZE: &str =
5424 "process.parent.macho.sections.physical_size";
5425
5426 /// Variance for Shannon entropy calculation from the section.
5427 pub const PROCESS_PARENT_MACHO_SECTIONS_VAR_ENTROPY: &str =
5428 "process.parent.macho.sections.var_entropy";
5429
5430 /// Mach-O Section List virtual size. This is always the same as `physical_size`.
5431 pub const PROCESS_PARENT_MACHO_SECTIONS_VIRTUAL_SIZE: &str =
5432 "process.parent.macho.sections.virtual_size";
5433
5434 /// A hash of the imports in a Mach-O file. An 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.
5435 /// This is a Mach-O implementation of the Windows PE imphash
5436 ///
5437 /// # Examples
5438 ///
5439 /// - `d3ccf195b62a9279c3c19af1080497ec`
5440 pub const PROCESS_PARENT_MACHO_SYMHASH: &str = "process.parent.macho.symhash";
5441
5442 /// Process name.
5443 /// Sometimes called program name or similar.
5444 ///
5445 /// # Examples
5446 ///
5447 /// - `ssh`
5448 pub const PROCESS_PARENT_NAME: &str = "process.parent.name";
5449
5450 /// CPU architecture target for the file.
5451 ///
5452 /// # Examples
5453 ///
5454 /// - `x64`
5455 pub const PROCESS_PARENT_PE_ARCHITECTURE: &str = "process.parent.pe.architecture";
5456
5457 /// Internal company name of the file, provided at compile-time.
5458 ///
5459 /// # Examples
5460 ///
5461 /// - `Microsoft Corporation`
5462 pub const PROCESS_PARENT_PE_COMPANY: &str = "process.parent.pe.company";
5463
5464 /// Internal description of the file, provided at compile-time.
5465 ///
5466 /// # Examples
5467 ///
5468 /// - `Paint`
5469 pub const PROCESS_PARENT_PE_DESCRIPTION: &str = "process.parent.pe.description";
5470
5471 /// Internal version of the file, provided at compile-time.
5472 ///
5473 /// # Examples
5474 ///
5475 /// - `6.3.9600.17415`
5476 pub const PROCESS_PARENT_PE_FILE_VERSION: &str = "process.parent.pe.file_version";
5477
5478 /// A hash of the Go language imports in a PE file excluding standard library imports. An 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.
5479 /// The algorithm used to calculate the Go symbol hash and a reference implementation are available [here](https://github.com/elastic/toutoumomoma).
5480 ///
5481 /// # Examples
5482 ///
5483 /// - `10bddcb4cee42080f76c88d9ff964491`
5484 pub const PROCESS_PARENT_PE_GO_IMPORT_HASH: &str = "process.parent.pe.go_import_hash";
5485
5486 /// List of imported Go language element names and types.
5487 pub const PROCESS_PARENT_PE_GO_IMPORTS: &str = "process.parent.pe.go_imports";
5488
5489 /// Shannon entropy calculation from the list of Go imports.
5490 pub const PROCESS_PARENT_PE_GO_IMPORTS_NAMES_ENTROPY: &str =
5491 "process.parent.pe.go_imports_names_entropy";
5492
5493 /// Variance for Shannon entropy calculation from the list of Go imports.
5494 pub const PROCESS_PARENT_PE_GO_IMPORTS_NAMES_VAR_ENTROPY: &str =
5495 "process.parent.pe.go_imports_names_var_entropy";
5496
5497 /// Set to true if the file is a Go executable that has had its symbols stripped or obfuscated and false if an unobfuscated Go executable.
5498 pub const PROCESS_PARENT_PE_GO_STRIPPED: &str = "process.parent.pe.go_stripped";
5499
5500 /// 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.
5501 /// Learn more at https://www.fireeye.com/blog/threat-research/2014/01/tracking-malware-import-hashing.html.
5502 ///
5503 /// # Examples
5504 ///
5505 /// - `0c6803c4e922103c4dca5963aad36ddf`
5506 pub const PROCESS_PARENT_PE_IMPHASH: &str = "process.parent.pe.imphash";
5507
5508 /// A hash of the imports in a PE file. An 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.
5509 /// This is a synonym for imphash.
5510 ///
5511 /// # Examples
5512 ///
5513 /// - `d41d8cd98f00b204e9800998ecf8427e`
5514 pub const PROCESS_PARENT_PE_IMPORT_HASH: &str = "process.parent.pe.import_hash";
5515
5516 /// List of imported element names and types.
5517 pub const PROCESS_PARENT_PE_IMPORTS: &str = "process.parent.pe.imports";
5518
5519 /// Shannon entropy calculation from the list of imported element names and types.
5520 pub const PROCESS_PARENT_PE_IMPORTS_NAMES_ENTROPY: &str =
5521 "process.parent.pe.imports_names_entropy";
5522
5523 /// Variance for Shannon entropy calculation from the list of imported element names and types.
5524 pub const PROCESS_PARENT_PE_IMPORTS_NAMES_VAR_ENTROPY: &str =
5525 "process.parent.pe.imports_names_var_entropy";
5526
5527 /// Internal name of the file, provided at compile-time.
5528 ///
5529 /// # Examples
5530 ///
5531 /// - `MSPAINT.EXE`
5532 pub const PROCESS_PARENT_PE_ORIGINAL_FILE_NAME: &str = "process.parent.pe.original_file_name";
5533
5534 /// A hash of the PE header and data from one or more PE sections. An pehash can be used to cluster files by transforming structural information about a file into a hash value.
5535 /// Learn more at https://www.usenix.org/legacy/events/leet09/tech/full_papers/wicherski/wicherski_html/index.html.
5536 ///
5537 /// # Examples
5538 ///
5539 /// - `73ff189b63cd6be375a7ff25179a38d347651975`
5540 pub const PROCESS_PARENT_PE_PEHASH: &str = "process.parent.pe.pehash";
5541
5542 /// Internal product name of the file, provided at compile-time.
5543 ///
5544 /// # Examples
5545 ///
5546 /// - `Microsoft® Windows® Operating System`
5547 pub const PROCESS_PARENT_PE_PRODUCT: &str = "process.parent.pe.product";
5548
5549 /// An array containing an object for each section of the PE file.
5550 /// The keys that should be present in these objects are defined by sub-fields underneath `pe.sections.*`.
5551 pub const PROCESS_PARENT_PE_SECTIONS: &str = "process.parent.pe.sections";
5552
5553 /// Shannon entropy calculation from the section.
5554 pub const PROCESS_PARENT_PE_SECTIONS_ENTROPY: &str = "process.parent.pe.sections.entropy";
5555
5556 /// PE Section List name.
5557 pub const PROCESS_PARENT_PE_SECTIONS_NAME: &str = "process.parent.pe.sections.name";
5558
5559 /// PE Section List physical size.
5560 pub const PROCESS_PARENT_PE_SECTIONS_PHYSICAL_SIZE: &str =
5561 "process.parent.pe.sections.physical_size";
5562
5563 /// Variance for Shannon entropy calculation from the section.
5564 pub const PROCESS_PARENT_PE_SECTIONS_VAR_ENTROPY: &str =
5565 "process.parent.pe.sections.var_entropy";
5566
5567 /// PE Section List virtual size. This is always the same as `physical_size`.
5568 pub const PROCESS_PARENT_PE_SECTIONS_VIRTUAL_SIZE: &str =
5569 "process.parent.pe.sections.virtual_size";
5570
5571 /// Deprecated for removal in next major version release. This field is superseded by `process.group_leader.pid`.
5572 /// Identifier of the group of processes the process belongs to.
5573 pub const PROCESS_PARENT_PGID: &str = "process.parent.pgid";
5574
5575 /// Process id.
5576 ///
5577 /// # Examples
5578 ///
5579 /// - `4242`
5580 pub const PROCESS_PARENT_PID: &str = "process.parent.pid";
5581
5582 /// Unique identifier for the group on the system/platform.
5583 pub const PROCESS_PARENT_REAL_GROUP_ID: &str = "process.parent.real_group.id";
5584
5585 /// Name of the group.
5586 pub const PROCESS_PARENT_REAL_GROUP_NAME: &str = "process.parent.real_group.name";
5587
5588 /// Unique identifier of the user.
5589 ///
5590 /// # Examples
5591 ///
5592 /// - `S-1-5-21-202424912787-2692429404-2351956786-1000`
5593 pub const PROCESS_PARENT_REAL_USER_ID: &str = "process.parent.real_user.id";
5594
5595 /// Short name or login of the user.
5596 ///
5597 /// # Examples
5598 ///
5599 /// - `a.einstein`
5600 pub const PROCESS_PARENT_REAL_USER_NAME: &str = "process.parent.real_user.name";
5601
5602 /// Unique identifier for the group on the system/platform.
5603 pub const PROCESS_PARENT_SAVED_GROUP_ID: &str = "process.parent.saved_group.id";
5604
5605 /// Name of the group.
5606 pub const PROCESS_PARENT_SAVED_GROUP_NAME: &str = "process.parent.saved_group.name";
5607
5608 /// Unique identifier of the user.
5609 ///
5610 /// # Examples
5611 ///
5612 /// - `S-1-5-21-202424912787-2692429404-2351956786-1000`
5613 pub const PROCESS_PARENT_SAVED_USER_ID: &str = "process.parent.saved_user.id";
5614
5615 /// Short name or login of the user.
5616 ///
5617 /// # Examples
5618 ///
5619 /// - `a.einstein`
5620 pub const PROCESS_PARENT_SAVED_USER_NAME: &str = "process.parent.saved_user.name";
5621
5622 /// The time the process started.
5623 ///
5624 /// # Examples
5625 ///
5626 /// - `2016-05-23T08:05:34.853Z`
5627 pub const PROCESS_PARENT_START: &str = "process.parent.start";
5628
5629 /// Unique identifier for the group on the system/platform.
5630 pub const PROCESS_PARENT_SUPPLEMENTAL_GROUPS_ID: &str = "process.parent.supplemental_groups.id";
5631
5632 /// Name of the group.
5633 pub const PROCESS_PARENT_SUPPLEMENTAL_GROUPS_NAME: &str =
5634 "process.parent.supplemental_groups.name";
5635
5636 /// This is the set of capabilities used by the kernel to perform permission checks for the thread.
5637 ///
5638 /// # Examples
5639 ///
5640 /// - `["CAP_BPF", "CAP_SYS_ADMIN"]`
5641 pub const PROCESS_PARENT_THREAD_CAPABILITIES_EFFECTIVE: &str =
5642 "process.parent.thread.capabilities.effective";
5643
5644 /// This is a limiting superset for the effective capabilities that the thread may assume.
5645 ///
5646 /// # Examples
5647 ///
5648 /// - `["CAP_BPF", "CAP_SYS_ADMIN"]`
5649 pub const PROCESS_PARENT_THREAD_CAPABILITIES_PERMITTED: &str =
5650 "process.parent.thread.capabilities.permitted";
5651
5652 /// Thread ID.
5653 ///
5654 /// # Examples
5655 ///
5656 /// - `4242`
5657 pub const PROCESS_PARENT_THREAD_ID: &str = "process.parent.thread.id";
5658
5659 /// Thread name.
5660 ///
5661 /// # Examples
5662 ///
5663 /// - `thread-0`
5664 pub const PROCESS_PARENT_THREAD_NAME: &str = "process.parent.thread.name";
5665
5666 /// Process title.
5667 /// 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.
5668 pub const PROCESS_PARENT_TITLE: &str = "process.parent.title";
5669
5670 /// Information about the controlling TTY device. If set, the process belongs to an interactive session.
5671 pub const PROCESS_PARENT_TTY: &str = "process.parent.tty";
5672
5673 /// The major number identifies the driver associated with the device. The character device's major and minor numbers can be algorithmically combined to produce the more familiar terminal identifiers such as "ttyS0" and "pts/0". For more details, please refer to the Linux kernel documentation.
5674 ///
5675 /// # Examples
5676 ///
5677 /// - `4`
5678 pub const PROCESS_PARENT_TTY_CHAR_DEVICE_MAJOR: &str = "process.parent.tty.char_device.major";
5679
5680 /// The minor number is used only by the driver specified by the major number; other parts of the kernel don’t use it, and merely pass it along to the driver. It is common for a driver to control several devices; the minor number provides a way for the driver to differentiate among them.
5681 ///
5682 /// # Examples
5683 ///
5684 /// - `1`
5685 pub const PROCESS_PARENT_TTY_CHAR_DEVICE_MINOR: &str = "process.parent.tty.char_device.minor";
5686
5687 /// Seconds the process has been up.
5688 ///
5689 /// # Examples
5690 ///
5691 /// - `1325`
5692 pub const PROCESS_PARENT_UPTIME: &str = "process.parent.uptime";
5693
5694 /// Unique identifier of the user.
5695 ///
5696 /// # Examples
5697 ///
5698 /// - `S-1-5-21-202424912787-2692429404-2351956786-1000`
5699 pub const PROCESS_PARENT_USER_ID: &str = "process.parent.user.id";
5700
5701 /// Short name or login of the user.
5702 ///
5703 /// # Examples
5704 ///
5705 /// - `a.einstein`
5706 pub const PROCESS_PARENT_USER_NAME: &str = "process.parent.user.name";
5707
5708 /// Virtual process id.
5709 /// The process id within a pid namespace. This is not necessarily unique across all processes on the host but it is unique within the process namespace that the process exists within.
5710 ///
5711 /// # Examples
5712 ///
5713 /// - `4242`
5714 pub const PROCESS_PARENT_VPID: &str = "process.parent.vpid";
5715
5716 /// The working directory of the process.
5717 ///
5718 /// # Examples
5719 ///
5720 /// - `/home/alice`
5721 pub const PROCESS_PARENT_WORKING_DIRECTORY: &str = "process.parent.working_directory";
5722
5723 /// CPU architecture target for the file.
5724 ///
5725 /// # Examples
5726 ///
5727 /// - `x64`
5728 pub const PROCESS_PE_ARCHITECTURE: &str = "process.pe.architecture";
5729
5730 /// Internal company name of the file, provided at compile-time.
5731 ///
5732 /// # Examples
5733 ///
5734 /// - `Microsoft Corporation`
5735 pub const PROCESS_PE_COMPANY: &str = "process.pe.company";
5736
5737 /// Internal description of the file, provided at compile-time.
5738 ///
5739 /// # Examples
5740 ///
5741 /// - `Paint`
5742 pub const PROCESS_PE_DESCRIPTION: &str = "process.pe.description";
5743
5744 /// Internal version of the file, provided at compile-time.
5745 ///
5746 /// # Examples
5747 ///
5748 /// - `6.3.9600.17415`
5749 pub const PROCESS_PE_FILE_VERSION: &str = "process.pe.file_version";
5750
5751 /// A hash of the Go language imports in a PE file excluding standard library imports. An 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.
5752 /// The algorithm used to calculate the Go symbol hash and a reference implementation are available [here](https://github.com/elastic/toutoumomoma).
5753 ///
5754 /// # Examples
5755 ///
5756 /// - `10bddcb4cee42080f76c88d9ff964491`
5757 pub const PROCESS_PE_GO_IMPORT_HASH: &str = "process.pe.go_import_hash";
5758
5759 /// List of imported Go language element names and types.
5760 pub const PROCESS_PE_GO_IMPORTS: &str = "process.pe.go_imports";
5761
5762 /// Shannon entropy calculation from the list of Go imports.
5763 pub const PROCESS_PE_GO_IMPORTS_NAMES_ENTROPY: &str = "process.pe.go_imports_names_entropy";
5764
5765 /// Variance for Shannon entropy calculation from the list of Go imports.
5766 pub const PROCESS_PE_GO_IMPORTS_NAMES_VAR_ENTROPY: &str =
5767 "process.pe.go_imports_names_var_entropy";
5768
5769 /// Set to true if the file is a Go executable that has had its symbols stripped or obfuscated and false if an unobfuscated Go executable.
5770 pub const PROCESS_PE_GO_STRIPPED: &str = "process.pe.go_stripped";
5771
5772 /// 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.
5773 /// Learn more at https://www.fireeye.com/blog/threat-research/2014/01/tracking-malware-import-hashing.html.
5774 ///
5775 /// # Examples
5776 ///
5777 /// - `0c6803c4e922103c4dca5963aad36ddf`
5778 pub const PROCESS_PE_IMPHASH: &str = "process.pe.imphash";
5779
5780 /// A hash of the imports in a PE file. An 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.
5781 /// This is a synonym for imphash.
5782 ///
5783 /// # Examples
5784 ///
5785 /// - `d41d8cd98f00b204e9800998ecf8427e`
5786 pub const PROCESS_PE_IMPORT_HASH: &str = "process.pe.import_hash";
5787
5788 /// List of imported element names and types.
5789 pub const PROCESS_PE_IMPORTS: &str = "process.pe.imports";
5790
5791 /// Shannon entropy calculation from the list of imported element names and types.
5792 pub const PROCESS_PE_IMPORTS_NAMES_ENTROPY: &str = "process.pe.imports_names_entropy";
5793
5794 /// Variance for Shannon entropy calculation from the list of imported element names and types.
5795 pub const PROCESS_PE_IMPORTS_NAMES_VAR_ENTROPY: &str = "process.pe.imports_names_var_entropy";
5796
5797 /// Internal name of the file, provided at compile-time.
5798 ///
5799 /// # Examples
5800 ///
5801 /// - `MSPAINT.EXE`
5802 pub const PROCESS_PE_ORIGINAL_FILE_NAME: &str = "process.pe.original_file_name";
5803
5804 /// A hash of the PE header and data from one or more PE sections. An pehash can be used to cluster files by transforming structural information about a file into a hash value.
5805 /// Learn more at https://www.usenix.org/legacy/events/leet09/tech/full_papers/wicherski/wicherski_html/index.html.
5806 ///
5807 /// # Examples
5808 ///
5809 /// - `73ff189b63cd6be375a7ff25179a38d347651975`
5810 pub const PROCESS_PE_PEHASH: &str = "process.pe.pehash";
5811
5812 /// Internal product name of the file, provided at compile-time.
5813 ///
5814 /// # Examples
5815 ///
5816 /// - `Microsoft® Windows® Operating System`
5817 pub const PROCESS_PE_PRODUCT: &str = "process.pe.product";
5818
5819 /// An array containing an object for each section of the PE file.
5820 /// The keys that should be present in these objects are defined by sub-fields underneath `pe.sections.*`.
5821 pub const PROCESS_PE_SECTIONS: &str = "process.pe.sections";
5822
5823 /// Shannon entropy calculation from the section.
5824 pub const PROCESS_PE_SECTIONS_ENTROPY: &str = "process.pe.sections.entropy";
5825
5826 /// PE Section List name.
5827 pub const PROCESS_PE_SECTIONS_NAME: &str = "process.pe.sections.name";
5828
5829 /// PE Section List physical size.
5830 pub const PROCESS_PE_SECTIONS_PHYSICAL_SIZE: &str = "process.pe.sections.physical_size";
5831
5832 /// Variance for Shannon entropy calculation from the section.
5833 pub const PROCESS_PE_SECTIONS_VAR_ENTROPY: &str = "process.pe.sections.var_entropy";
5834
5835 /// PE Section List virtual size. This is always the same as `physical_size`.
5836 pub const PROCESS_PE_SECTIONS_VIRTUAL_SIZE: &str = "process.pe.sections.virtual_size";
5837
5838 /// Deprecated for removal in next major version release. This field is superseded by `process.group_leader.pid`.
5839 /// Identifier of the group of processes the process belongs to.
5840 pub const PROCESS_PGID: &str = "process.pgid";
5841
5842 /// Process id.
5843 ///
5844 /// # Examples
5845 ///
5846 /// - `4242`
5847 pub const PROCESS_PID: &str = "process.pid";
5848
5849 /// Array of process arguments, starting with the absolute path to the executable.
5850 /// May be filtered to protect sensitive information.
5851 ///
5852 /// # Examples
5853 ///
5854 /// - `["/usr/bin/ssh", "-l", "user", "10.0.0.16"]`
5855 pub const PROCESS_PREVIOUS_ARGS: &str = "process.previous.args";
5856
5857 /// Length of the process.args array.
5858 /// 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.
5859 ///
5860 /// # Examples
5861 ///
5862 /// - `4`
5863 pub const PROCESS_PREVIOUS_ARGS_COUNT: &str = "process.previous.args_count";
5864
5865 /// Absolute path to the process executable.
5866 ///
5867 /// # Examples
5868 ///
5869 /// - `/usr/bin/ssh`
5870 pub const PROCESS_PREVIOUS_EXECUTABLE: &str = "process.previous.executable";
5871
5872 /// Unique identifier for the group on the system/platform.
5873 pub const PROCESS_REAL_GROUP_ID: &str = "process.real_group.id";
5874
5875 /// Name of the group.
5876 pub const PROCESS_REAL_GROUP_NAME: &str = "process.real_group.name";
5877
5878 /// Unique identifier of the user.
5879 ///
5880 /// # Examples
5881 ///
5882 /// - `S-1-5-21-202424912787-2692429404-2351956786-1000`
5883 pub const PROCESS_REAL_USER_ID: &str = "process.real_user.id";
5884
5885 /// Short name or login of the user.
5886 ///
5887 /// # Examples
5888 ///
5889 /// - `a.einstein`
5890 pub const PROCESS_REAL_USER_NAME: &str = "process.real_user.name";
5891
5892 /// Unique identifier for the group on the system/platform.
5893 pub const PROCESS_SAVED_GROUP_ID: &str = "process.saved_group.id";
5894
5895 /// Name of the group.
5896 pub const PROCESS_SAVED_GROUP_NAME: &str = "process.saved_group.name";
5897
5898 /// Unique identifier of the user.
5899 ///
5900 /// # Examples
5901 ///
5902 /// - `S-1-5-21-202424912787-2692429404-2351956786-1000`
5903 pub const PROCESS_SAVED_USER_ID: &str = "process.saved_user.id";
5904
5905 /// Short name or login of the user.
5906 ///
5907 /// # Examples
5908 ///
5909 /// - `a.einstein`
5910 pub const PROCESS_SAVED_USER_NAME: &str = "process.saved_user.name";
5911
5912 /// Array of process arguments, starting with the absolute path to the executable.
5913 /// May be filtered to protect sensitive information.
5914 ///
5915 /// # Examples
5916 ///
5917 /// - `["/usr/bin/ssh", "-l", "user", "10.0.0.16"]`
5918 pub const PROCESS_SESSION_LEADER_ARGS: &str = "process.session_leader.args";
5919
5920 /// Length of the process.args array.
5921 /// 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.
5922 ///
5923 /// # Examples
5924 ///
5925 /// - `4`
5926 pub const PROCESS_SESSION_LEADER_ARGS_COUNT: &str = "process.session_leader.args_count";
5927
5928 /// Full command line that started the process, including the absolute path to the executable, and all arguments.
5929 /// Some arguments may be filtered to protect sensitive information.
5930 ///
5931 /// # Examples
5932 ///
5933 /// - `/usr/bin/ssh -l user 10.0.0.16`
5934 pub const PROCESS_SESSION_LEADER_COMMAND_LINE: &str = "process.session_leader.command_line";
5935
5936 /// Unique identifier for the process.
5937 /// 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.
5938 /// 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.
5939 ///
5940 /// # Examples
5941 ///
5942 /// - `c2c455d9f99375d`
5943 pub const PROCESS_SESSION_LEADER_ENTITY_ID: &str = "process.session_leader.entity_id";
5944
5945 /// Absolute path to the process executable.
5946 ///
5947 /// # Examples
5948 ///
5949 /// - `/usr/bin/ssh`
5950 pub const PROCESS_SESSION_LEADER_EXECUTABLE: &str = "process.session_leader.executable";
5951
5952 /// Unique identifier for the group on the system/platform.
5953 pub const PROCESS_SESSION_LEADER_GROUP_ID: &str = "process.session_leader.group.id";
5954
5955 /// Name of the group.
5956 pub const PROCESS_SESSION_LEADER_GROUP_NAME: &str = "process.session_leader.group.name";
5957
5958 /// Whether the process is connected to an interactive shell.
5959 /// Process interactivity is inferred from the processes file descriptors. If the character device for the controlling tty is the same as stdin and stderr for the process, the process is considered interactive.
5960 /// Note: A non-interactive process can belong to an interactive session and is simply one that does not have open file descriptors reading the controlling TTY on FD 0 (stdin) or writing to the controlling TTY on FD 2 (stderr). A backgrounded process is still considered interactive if stdin and stderr are connected to the controlling TTY.
5961 ///
5962 /// # Examples
5963 ///
5964 /// - `True`
5965 pub const PROCESS_SESSION_LEADER_INTERACTIVE: &str = "process.session_leader.interactive";
5966
5967 /// Process name.
5968 /// Sometimes called program name or similar.
5969 ///
5970 /// # Examples
5971 ///
5972 /// - `ssh`
5973 pub const PROCESS_SESSION_LEADER_NAME: &str = "process.session_leader.name";
5974
5975 /// Unique identifier for the process.
5976 /// 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.
5977 /// 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.
5978 ///
5979 /// # Examples
5980 ///
5981 /// - `c2c455d9f99375d`
5982 pub const PROCESS_SESSION_LEADER_PARENT_ENTITY_ID: &str =
5983 "process.session_leader.parent.entity_id";
5984
5985 /// Process id.
5986 ///
5987 /// # Examples
5988 ///
5989 /// - `4242`
5990 pub const PROCESS_SESSION_LEADER_PARENT_PID: &str = "process.session_leader.parent.pid";
5991
5992 /// Unique identifier for the process.
5993 /// 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.
5994 /// 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.
5995 ///
5996 /// # Examples
5997 ///
5998 /// - `c2c455d9f99375d`
5999 pub const PROCESS_SESSION_LEADER_PARENT_SESSION_LEADER_ENTITY_ID: &str =
6000 "process.session_leader.parent.session_leader.entity_id";
6001
6002 /// Process id.
6003 ///
6004 /// # Examples
6005 ///
6006 /// - `4242`
6007 pub const PROCESS_SESSION_LEADER_PARENT_SESSION_LEADER_PID: &str =
6008 "process.session_leader.parent.session_leader.pid";
6009
6010 /// The time the process started.
6011 ///
6012 /// # Examples
6013 ///
6014 /// - `2016-05-23T08:05:34.853Z`
6015 pub const PROCESS_SESSION_LEADER_PARENT_SESSION_LEADER_START: &str =
6016 "process.session_leader.parent.session_leader.start";
6017
6018 /// Virtual process id.
6019 /// The process id within a pid namespace. This is not necessarily unique across all processes on the host but it is unique within the process namespace that the process exists within.
6020 ///
6021 /// # Examples
6022 ///
6023 /// - `4242`
6024 pub const PROCESS_SESSION_LEADER_PARENT_SESSION_LEADER_VPID: &str =
6025 "process.session_leader.parent.session_leader.vpid";
6026
6027 /// The time the process started.
6028 ///
6029 /// # Examples
6030 ///
6031 /// - `2016-05-23T08:05:34.853Z`
6032 pub const PROCESS_SESSION_LEADER_PARENT_START: &str = "process.session_leader.parent.start";
6033
6034 /// Virtual process id.
6035 /// The process id within a pid namespace. This is not necessarily unique across all processes on the host but it is unique within the process namespace that the process exists within.
6036 ///
6037 /// # Examples
6038 ///
6039 /// - `4242`
6040 pub const PROCESS_SESSION_LEADER_PARENT_VPID: &str = "process.session_leader.parent.vpid";
6041
6042 /// Process id.
6043 ///
6044 /// # Examples
6045 ///
6046 /// - `4242`
6047 pub const PROCESS_SESSION_LEADER_PID: &str = "process.session_leader.pid";
6048
6049 /// Unique identifier for the group on the system/platform.
6050 pub const PROCESS_SESSION_LEADER_REAL_GROUP_ID: &str = "process.session_leader.real_group.id";
6051
6052 /// Name of the group.
6053 pub const PROCESS_SESSION_LEADER_REAL_GROUP_NAME: &str =
6054 "process.session_leader.real_group.name";
6055
6056 /// Unique identifier of the user.
6057 ///
6058 /// # Examples
6059 ///
6060 /// - `S-1-5-21-202424912787-2692429404-2351956786-1000`
6061 pub const PROCESS_SESSION_LEADER_REAL_USER_ID: &str = "process.session_leader.real_user.id";
6062
6063 /// Short name or login of the user.
6064 ///
6065 /// # Examples
6066 ///
6067 /// - `a.einstein`
6068 pub const PROCESS_SESSION_LEADER_REAL_USER_NAME: &str = "process.session_leader.real_user.name";
6069
6070 /// This boolean is used to identify if a leader process is the same as the top level process.
6071 /// For example, if `process.group_leader.same_as_process = true`, it means the process event in question is the leader of its process group. Details under `process.*` like `pid` would be the same under `process.group_leader.*` The same applies for both `process.session_leader` and `process.entry_leader`.
6072 /// This field exists to the benefit of EQL and other rule engines since it's not possible to compare equality between two fields in a single document. e.g `process.entity_id` = `process.group_leader.entity_id` (top level process is the process group leader) OR `process.entity_id` = `process.entry_leader.entity_id` (top level process is the entry session leader)
6073 /// Instead these rules could be written like: `process.group_leader.same_as_process: true` OR `process.entry_leader.same_as_process: true`
6074 /// Note: This field is only set on `process.entry_leader`, `process.session_leader` and `process.group_leader`.
6075 ///
6076 /// # Examples
6077 ///
6078 /// - `True`
6079 pub const PROCESS_SESSION_LEADER_SAME_AS_PROCESS: &str =
6080 "process.session_leader.same_as_process";
6081
6082 /// Unique identifier for the group on the system/platform.
6083 pub const PROCESS_SESSION_LEADER_SAVED_GROUP_ID: &str = "process.session_leader.saved_group.id";
6084
6085 /// Name of the group.
6086 pub const PROCESS_SESSION_LEADER_SAVED_GROUP_NAME: &str =
6087 "process.session_leader.saved_group.name";
6088
6089 /// Unique identifier of the user.
6090 ///
6091 /// # Examples
6092 ///
6093 /// - `S-1-5-21-202424912787-2692429404-2351956786-1000`
6094 pub const PROCESS_SESSION_LEADER_SAVED_USER_ID: &str = "process.session_leader.saved_user.id";
6095
6096 /// Short name or login of the user.
6097 ///
6098 /// # Examples
6099 ///
6100 /// - `a.einstein`
6101 pub const PROCESS_SESSION_LEADER_SAVED_USER_NAME: &str =
6102 "process.session_leader.saved_user.name";
6103
6104 /// The time the process started.
6105 ///
6106 /// # Examples
6107 ///
6108 /// - `2016-05-23T08:05:34.853Z`
6109 pub const PROCESS_SESSION_LEADER_START: &str = "process.session_leader.start";
6110
6111 /// Unique identifier for the group on the system/platform.
6112 pub const PROCESS_SESSION_LEADER_SUPPLEMENTAL_GROUPS_ID: &str =
6113 "process.session_leader.supplemental_groups.id";
6114
6115 /// Name of the group.
6116 pub const PROCESS_SESSION_LEADER_SUPPLEMENTAL_GROUPS_NAME: &str =
6117 "process.session_leader.supplemental_groups.name";
6118
6119 /// Information about the controlling TTY device. If set, the process belongs to an interactive session.
6120 pub const PROCESS_SESSION_LEADER_TTY: &str = "process.session_leader.tty";
6121
6122 /// The major number identifies the driver associated with the device. The character device's major and minor numbers can be algorithmically combined to produce the more familiar terminal identifiers such as "ttyS0" and "pts/0". For more details, please refer to the Linux kernel documentation.
6123 ///
6124 /// # Examples
6125 ///
6126 /// - `4`
6127 pub const PROCESS_SESSION_LEADER_TTY_CHAR_DEVICE_MAJOR: &str =
6128 "process.session_leader.tty.char_device.major";
6129
6130 /// The minor number is used only by the driver specified by the major number; other parts of the kernel don’t use it, and merely pass it along to the driver. It is common for a driver to control several devices; the minor number provides a way for the driver to differentiate among them.
6131 ///
6132 /// # Examples
6133 ///
6134 /// - `1`
6135 pub const PROCESS_SESSION_LEADER_TTY_CHAR_DEVICE_MINOR: &str =
6136 "process.session_leader.tty.char_device.minor";
6137
6138 /// Unique identifier of the user.
6139 ///
6140 /// # Examples
6141 ///
6142 /// - `S-1-5-21-202424912787-2692429404-2351956786-1000`
6143 pub const PROCESS_SESSION_LEADER_USER_ID: &str = "process.session_leader.user.id";
6144
6145 /// Short name or login of the user.
6146 ///
6147 /// # Examples
6148 ///
6149 /// - `a.einstein`
6150 pub const PROCESS_SESSION_LEADER_USER_NAME: &str = "process.session_leader.user.name";
6151
6152 /// Virtual process id.
6153 /// The process id within a pid namespace. This is not necessarily unique across all processes on the host but it is unique within the process namespace that the process exists within.
6154 ///
6155 /// # Examples
6156 ///
6157 /// - `4242`
6158 pub const PROCESS_SESSION_LEADER_VPID: &str = "process.session_leader.vpid";
6159
6160 /// The working directory of the process.
6161 ///
6162 /// # Examples
6163 ///
6164 /// - `/home/alice`
6165 pub const PROCESS_SESSION_LEADER_WORKING_DIRECTORY: &str =
6166 "process.session_leader.working_directory";
6167
6168 /// The time the process started.
6169 ///
6170 /// # Examples
6171 ///
6172 /// - `2016-05-23T08:05:34.853Z`
6173 pub const PROCESS_START: &str = "process.start";
6174
6175 /// Unique identifier for the group on the system/platform.
6176 pub const PROCESS_SUPPLEMENTAL_GROUPS_ID: &str = "process.supplemental_groups.id";
6177
6178 /// Name of the group.
6179 pub const PROCESS_SUPPLEMENTAL_GROUPS_NAME: &str = "process.supplemental_groups.name";
6180
6181 /// This is the set of capabilities used by the kernel to perform permission checks for the thread.
6182 ///
6183 /// # Examples
6184 ///
6185 /// - `["CAP_BPF", "CAP_SYS_ADMIN"]`
6186 pub const PROCESS_THREAD_CAPABILITIES_EFFECTIVE: &str = "process.thread.capabilities.effective";
6187
6188 /// This is a limiting superset for the effective capabilities that the thread may assume.
6189 ///
6190 /// # Examples
6191 ///
6192 /// - `["CAP_BPF", "CAP_SYS_ADMIN"]`
6193 pub const PROCESS_THREAD_CAPABILITIES_PERMITTED: &str = "process.thread.capabilities.permitted";
6194
6195 /// Thread ID.
6196 ///
6197 /// # Examples
6198 ///
6199 /// - `4242`
6200 pub const PROCESS_THREAD_ID: &str = "process.thread.id";
6201
6202 /// Thread name.
6203 ///
6204 /// # Examples
6205 ///
6206 /// - `thread-0`
6207 pub const PROCESS_THREAD_NAME: &str = "process.thread.name";
6208
6209 /// Process title.
6210 /// 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.
6211 pub const PROCESS_TITLE: &str = "process.title";
6212
6213 /// Information about the controlling TTY device. If set, the process belongs to an interactive session.
6214 pub const PROCESS_TTY: &str = "process.tty";
6215
6216 /// The major number identifies the driver associated with the device. The character device's major and minor numbers can be algorithmically combined to produce the more familiar terminal identifiers such as "ttyS0" and "pts/0". For more details, please refer to the Linux kernel documentation.
6217 ///
6218 /// # Examples
6219 ///
6220 /// - `4`
6221 pub const PROCESS_TTY_CHAR_DEVICE_MAJOR: &str = "process.tty.char_device.major";
6222
6223 /// The minor number is used only by the driver specified by the major number; other parts of the kernel don’t use it, and merely pass it along to the driver. It is common for a driver to control several devices; the minor number provides a way for the driver to differentiate among them.
6224 ///
6225 /// # Examples
6226 ///
6227 /// - `1`
6228 pub const PROCESS_TTY_CHAR_DEVICE_MINOR: &str = "process.tty.char_device.minor";
6229
6230 /// The number of character columns per line. e.g terminal width
6231 /// Terminal sizes can change, so this value reflects the maximum value for a given IO event. i.e. where event.action = 'text_output'
6232 ///
6233 /// # Examples
6234 ///
6235 /// - `80`
6236 pub const PROCESS_TTY_COLUMNS: &str = "process.tty.columns";
6237
6238 /// The number of character rows in the terminal. e.g terminal height
6239 /// Terminal sizes can change, so this value reflects the maximum value for a given IO event. i.e. where event.action = 'text_output'
6240 ///
6241 /// # Examples
6242 ///
6243 /// - `24`
6244 pub const PROCESS_TTY_ROWS: &str = "process.tty.rows";
6245
6246 /// Seconds the process has been up.
6247 ///
6248 /// # Examples
6249 ///
6250 /// - `1325`
6251 pub const PROCESS_UPTIME: &str = "process.uptime";
6252
6253 /// Unique identifier of the user.
6254 ///
6255 /// # Examples
6256 ///
6257 /// - `S-1-5-21-202424912787-2692429404-2351956786-1000`
6258 pub const PROCESS_USER_ID: &str = "process.user.id";
6259
6260 /// Short name or login of the user.
6261 ///
6262 /// # Examples
6263 ///
6264 /// - `a.einstein`
6265 pub const PROCESS_USER_NAME: &str = "process.user.name";
6266
6267 /// Virtual process id.
6268 /// The process id within a pid namespace. This is not necessarily unique across all processes on the host but it is unique within the process namespace that the process exists within.
6269 ///
6270 /// # Examples
6271 ///
6272 /// - `4242`
6273 pub const PROCESS_VPID: &str = "process.vpid";
6274
6275 /// The working directory of the process.
6276 ///
6277 /// # Examples
6278 ///
6279 /// - `/home/alice`
6280 pub const PROCESS_WORKING_DIRECTORY: &str = "process.working_directory";
6281}
6282
6283/// Fields related to Windows Registry operations.
6284pub mod registry {
6285
6286 /// Original bytes written with base64 encoding.
6287 /// 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.
6288 ///
6289 /// # Examples
6290 ///
6291 /// - `ZQBuAC0AVQBTAAAAZQBuAAAAAAA=`
6292 pub const REGISTRY_DATA_BYTES: &str = "registry.data.bytes";
6293
6294 /// Content when writing string types.
6295 /// 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"`).
6296 ///
6297 /// # Examples
6298 ///
6299 /// - `["C:\rta\red_ttp\bin\myapp.exe"]`
6300 pub const REGISTRY_DATA_STRINGS: &str = "registry.data.strings";
6301
6302 /// Standard registry type for encoding contents
6303 ///
6304 /// # Examples
6305 ///
6306 /// - `REG_SZ`
6307 pub const REGISTRY_DATA_TYPE: &str = "registry.data.type";
6308
6309 /// Abbreviated name for the hive.
6310 ///
6311 /// # Examples
6312 ///
6313 /// - `HKLM`
6314 pub const REGISTRY_HIVE: &str = "registry.hive";
6315
6316 /// Hive-relative path of keys.
6317 ///
6318 /// # Examples
6319 ///
6320 /// - `SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\winword.exe`
6321 pub const REGISTRY_KEY: &str = "registry.key";
6322
6323 /// Full path, including hive, key and value
6324 ///
6325 /// # Examples
6326 ///
6327 /// - `HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\winword.exe\Debugger`
6328 pub const REGISTRY_PATH: &str = "registry.path";
6329
6330 /// Name of the value written.
6331 ///
6332 /// # Examples
6333 ///
6334 /// - `Debugger`
6335 pub const REGISTRY_VALUE: &str = "registry.value";
6336}
6337
6338/// This field set is meant to facilitate pivoting around a piece of data.
6339
6340/// 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.`.
6341
6342/// 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`.
6343pub mod related {
6344
6345 /// 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).
6346 pub const RELATED_HASH: &str = "related.hash";
6347
6348 /// All hostnames or other host identifiers seen on your event. Example identifiers include FQDNs, domain names, workstation names, or aliases.
6349 pub const RELATED_HOSTS: &str = "related.hosts";
6350
6351 /// All of the IPs seen on your event.
6352 pub const RELATED_IP: &str = "related.ip";
6353
6354 /// All the user names or other user identifiers seen on the event.
6355 pub const RELATED_USER: &str = "related.user";
6356}
6357
6358/// Fields for describing risk score and risk level of entities such as hosts and users. These fields are not allowed to be nested under `event.*`. Please continue to use `event.risk_score` and `event.risk_score_norm` for event risk.
6359pub mod risk {
6360
6361 /// A risk classification level calculated by an internal system as part of entity analytics and entity risk scoring.
6362 ///
6363 /// # Examples
6364 ///
6365 /// - `High`
6366 pub const RISK_CALCULATED_LEVEL: &str = "risk.calculated_level";
6367
6368 /// A risk classification score calculated by an internal system as part of entity analytics and entity risk scoring.
6369 ///
6370 /// # Examples
6371 ///
6372 /// - `880.73`
6373 pub const RISK_CALCULATED_SCORE: &str = "risk.calculated_score";
6374
6375 /// A risk classification score calculated by an internal system as part of entity analytics and entity risk scoring, and normalized to a range of 0 to 100.
6376 ///
6377 /// # Examples
6378 ///
6379 /// - `88.73`
6380 pub const RISK_CALCULATED_SCORE_NORM: &str = "risk.calculated_score_norm";
6381
6382 /// A risk classification level obtained from outside the system, such as from some external Threat Intelligence Platform.
6383 ///
6384 /// # Examples
6385 ///
6386 /// - `High`
6387 pub const RISK_STATIC_LEVEL: &str = "risk.static_level";
6388
6389 /// A risk classification score obtained from outside the system, such as from some external Threat Intelligence Platform.
6390 ///
6391 /// # Examples
6392 ///
6393 /// - `830.0`
6394 pub const RISK_STATIC_SCORE: &str = "risk.static_score";
6395
6396 /// A risk classification score obtained from outside the system, such as from some external Threat Intelligence Platform, and normalized to a range of 0 to 100.
6397 ///
6398 /// # Examples
6399 ///
6400 /// - `83.0`
6401 pub const RISK_STATIC_SCORE_NORM: &str = "risk.static_score_norm";
6402}
6403
6404/// Rule fields are used to capture the specifics of any observer or agent rules that generate alerts or other notable events.
6405
6406/// 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.
6407pub mod rule {
6408
6409 /// Name, organization, or pseudonym of the author or authors who created the rule used to generate this event.
6410 ///
6411 /// # Examples
6412 ///
6413 /// - `["Star-Lord"]`
6414 pub const RULE_AUTHOR: &str = "rule.author";
6415
6416 /// A categorization value keyword used by the entity using the rule for detection of this event.
6417 ///
6418 /// # Examples
6419 ///
6420 /// - `Attempted Information Leak`
6421 pub const RULE_CATEGORY: &str = "rule.category";
6422
6423 /// The description of the rule generating the event.
6424 ///
6425 /// # Examples
6426 ///
6427 /// - `Block requests to public DNS over HTTPS / TLS protocols`
6428 pub const RULE_DESCRIPTION: &str = "rule.description";
6429
6430 /// A rule ID that is unique within the scope of an agent, observer, or other entity using the rule for detection of this event.
6431 ///
6432 /// # Examples
6433 ///
6434 /// - `101`
6435 pub const RULE_ID: &str = "rule.id";
6436
6437 /// Name of the license under which the rule used to generate this event is made available.
6438 ///
6439 /// # Examples
6440 ///
6441 /// - `Apache 2.0`
6442 pub const RULE_LICENSE: &str = "rule.license";
6443
6444 /// The name of the rule or signature generating the event.
6445 ///
6446 /// # Examples
6447 ///
6448 /// - `BLOCK_DNS_over_TLS`
6449 pub const RULE_NAME: &str = "rule.name";
6450
6451 /// Reference URL to additional information about the rule used to generate this event.
6452 /// 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.
6453 ///
6454 /// # Examples
6455 ///
6456 /// - `https://en.wikipedia.org/wiki/DNS_over_TLS`
6457 pub const RULE_REFERENCE: &str = "rule.reference";
6458
6459 /// Name of the ruleset, policy, group, or parent category in which the rule used to generate this event is a member.
6460 ///
6461 /// # Examples
6462 ///
6463 /// - `Standard_Protocol_Filters`
6464 pub const RULE_RULESET: &str = "rule.ruleset";
6465
6466 /// 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.
6467 ///
6468 /// # Examples
6469 ///
6470 /// - `1100110011`
6471 pub const RULE_UUID: &str = "rule.uuid";
6472
6473 /// The version / revision of the rule being used for analysis.
6474 ///
6475 /// # Examples
6476 ///
6477 /// - `1.1`
6478 pub const RULE_VERSION: &str = "rule.version";
6479}
6480
6481/// A Server is defined as the responder in a network connection for events regarding sessions, connections, or bidirectional flow records.
6482
6483/// 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.
6484
6485/// 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.
6486pub mod server {
6487
6488 /// 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.
6489 /// Then it should be duplicated to `.ip` or `.domain`, depending on which one it is.
6490 pub const SERVER_ADDRESS: &str = "server.address";
6491
6492 /// Unique number allocated to the autonomous system. The autonomous system number (ASN) uniquely identifies each network on the Internet.
6493 ///
6494 /// # Examples
6495 ///
6496 /// - `15169`
6497 pub const SERVER_AS_NUMBER: &str = "server.as.number";
6498
6499 /// Organization name.
6500 ///
6501 /// # Examples
6502 ///
6503 /// - `Google LLC`
6504 pub const SERVER_AS_ORGANIZATION_NAME: &str = "server.as.organization.name";
6505
6506 /// Bytes sent from the server to the client.
6507 ///
6508 /// # Examples
6509 ///
6510 /// - `184`
6511 pub const SERVER_BYTES: &str = "server.bytes";
6512
6513 /// The domain name of the server system.
6514 /// This value may be a host name, a fully qualified domain name, or another host naming format. The value may derive from the original event or be added from enrichment.
6515 ///
6516 /// # Examples
6517 ///
6518 /// - `foo.example.com`
6519 pub const SERVER_DOMAIN: &str = "server.domain";
6520
6521 /// City name.
6522 ///
6523 /// # Examples
6524 ///
6525 /// - `Montreal`
6526 pub const SERVER_GEO_CITY_NAME: &str = "server.geo.city_name";
6527
6528 /// Two-letter code representing continent's name.
6529 ///
6530 /// # Examples
6531 ///
6532 /// - `NA`
6533 pub const SERVER_GEO_CONTINENT_CODE: &str = "server.geo.continent_code";
6534
6535 /// Name of the continent.
6536 ///
6537 /// # Examples
6538 ///
6539 /// - `North America`
6540 pub const SERVER_GEO_CONTINENT_NAME: &str = "server.geo.continent_name";
6541
6542 /// Country ISO code.
6543 ///
6544 /// # Examples
6545 ///
6546 /// - `CA`
6547 pub const SERVER_GEO_COUNTRY_ISO_CODE: &str = "server.geo.country_iso_code";
6548
6549 /// Country name.
6550 ///
6551 /// # Examples
6552 ///
6553 /// - `Canada`
6554 pub const SERVER_GEO_COUNTRY_NAME: &str = "server.geo.country_name";
6555
6556 /// Longitude and latitude.
6557 ///
6558 /// # Examples
6559 ///
6560 /// - `{ "lon": -73.614830, "lat": 45.505918 }`
6561 pub const SERVER_GEO_LOCATION: &str = "server.geo.location";
6562
6563 /// User-defined description of a location, at the level of granularity they care about.
6564 /// Could be the name of their data centers, the floor number, if this describes a local physical entity, city names.
6565 /// Not typically used in automated geolocation.
6566 ///
6567 /// # Examples
6568 ///
6569 /// - `boston-dc`
6570 pub const SERVER_GEO_NAME: &str = "server.geo.name";
6571
6572 /// Postal code associated with the location.
6573 /// Values appropriate for this field may also be known as a postcode or ZIP code and will vary widely from country to country.
6574 ///
6575 /// # Examples
6576 ///
6577 /// - `94040`
6578 pub const SERVER_GEO_POSTAL_CODE: &str = "server.geo.postal_code";
6579
6580 /// Region ISO code.
6581 ///
6582 /// # Examples
6583 ///
6584 /// - `CA-QC`
6585 pub const SERVER_GEO_REGION_ISO_CODE: &str = "server.geo.region_iso_code";
6586
6587 /// Region name.
6588 ///
6589 /// # Examples
6590 ///
6591 /// - `Quebec`
6592 pub const SERVER_GEO_REGION_NAME: &str = "server.geo.region_name";
6593
6594 /// The time zone of the location, such as IANA time zone name.
6595 ///
6596 /// # Examples
6597 ///
6598 /// - `America/Argentina/Buenos_Aires`
6599 pub const SERVER_GEO_TIMEZONE: &str = "server.geo.timezone";
6600
6601 /// IP address of the server (IPv4 or IPv6).
6602 pub const SERVER_IP: &str = "server.ip";
6603
6604 /// MAC address of the server.
6605 /// The notation format from RFC 7042 is suggested: Each octet (that is, 8-bit byte) is represented by two [uppercase] hexadecimal digits giving the value of the octet as an unsigned integer. Successive octets are separated by a hyphen.
6606 ///
6607 /// # Examples
6608 ///
6609 /// - `00-00-5E-00-53-23`
6610 pub const SERVER_MAC: &str = "server.mac";
6611
6612 /// Translated ip of destination based NAT sessions (e.g. internet to private DMZ)
6613 /// Typically used with load balancers, firewalls, or routers.
6614 pub const SERVER_NAT_IP: &str = "server.nat.ip";
6615
6616 /// Translated port of destination based NAT sessions (e.g. internet to private DMZ)
6617 /// Typically used with load balancers, firewalls, or routers.
6618 pub const SERVER_NAT_PORT: &str = "server.nat.port";
6619
6620 /// Packets sent from the server to the client.
6621 ///
6622 /// # Examples
6623 ///
6624 /// - `12`
6625 pub const SERVER_PACKETS: &str = "server.packets";
6626
6627 /// Port of the server.
6628 pub const SERVER_PORT: &str = "server.port";
6629
6630 /// The highest registered server domain, stripped of the subdomain.
6631 /// For example, the registered domain for "foo.example.com" is "example.com".
6632 /// 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".
6633 ///
6634 /// # Examples
6635 ///
6636 /// - `example.com`
6637 pub const SERVER_REGISTERED_DOMAIN: &str = "server.registered_domain";
6638
6639 /// The subdomain portion of a fully qualified domain name includes all of the names except the host name under the registered_domain. In a partially qualified domain, or if the the qualification level of the full name cannot be determined, subdomain contains all of the names below the registered domain.
6640 /// For example the subdomain portion of "www.east.mydomain.co.uk" is "east". If the domain has multiple levels of subdomain, such as "sub2.sub1.example.com", the subdomain field should contain "sub2.sub1", with no trailing period.
6641 ///
6642 /// # Examples
6643 ///
6644 /// - `east`
6645 pub const SERVER_SUBDOMAIN: &str = "server.subdomain";
6646
6647 /// 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".
6648 /// 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".
6649 ///
6650 /// # Examples
6651 ///
6652 /// - `co.uk`
6653 pub const SERVER_TOP_LEVEL_DOMAIN: &str = "server.top_level_domain";
6654
6655 /// Name of the directory the user is a member of.
6656 /// For example, an LDAP or Active Directory domain name.
6657 pub const SERVER_USER_DOMAIN: &str = "server.user.domain";
6658
6659 /// User email address.
6660 pub const SERVER_USER_EMAIL: &str = "server.user.email";
6661
6662 /// User's full name, if available.
6663 ///
6664 /// # Examples
6665 ///
6666 /// - `Albert Einstein`
6667 pub const SERVER_USER_FULL_NAME: &str = "server.user.full_name";
6668
6669 /// Name of the directory the group is a member of.
6670 /// For example, an LDAP or Active Directory domain name.
6671 pub const SERVER_USER_GROUP_DOMAIN: &str = "server.user.group.domain";
6672
6673 /// Unique identifier for the group on the system/platform.
6674 pub const SERVER_USER_GROUP_ID: &str = "server.user.group.id";
6675
6676 /// Name of the group.
6677 pub const SERVER_USER_GROUP_NAME: &str = "server.user.group.name";
6678
6679 /// Unique user hash to correlate information for a user in anonymized form.
6680 /// Useful if `user.id` or `user.name` contain confidential information and cannot be used.
6681 pub const SERVER_USER_HASH: &str = "server.user.hash";
6682
6683 /// Unique identifier of the user.
6684 ///
6685 /// # Examples
6686 ///
6687 /// - `S-1-5-21-202424912787-2692429404-2351956786-1000`
6688 pub const SERVER_USER_ID: &str = "server.user.id";
6689
6690 /// Short name or login of the user.
6691 ///
6692 /// # Examples
6693 ///
6694 /// - `a.einstein`
6695 pub const SERVER_USER_NAME: &str = "server.user.name";
6696
6697 /// Array of user roles at the time of the event.
6698 ///
6699 /// # Examples
6700 ///
6701 /// - `["kibana_admin", "reporting_user"]`
6702 pub const SERVER_USER_ROLES: &str = "server.user.roles";
6703}
6704
6705/// The service fields describe the service for or from which the data was collected.
6706
6707/// These fields help you find and correlate logs for a specific service and version.
6708pub mod service {
6709
6710 /// Address where data about this service was collected from.
6711 /// This should be a URI, network address (ipv4:port or [ipv6]:port) or a resource path (sockets).
6712 ///
6713 /// # Examples
6714 ///
6715 /// - `172.26.0.2:5432`
6716 pub const SERVICE_ADDRESS: &str = "service.address";
6717
6718 /// Identifies the environment where the service is running.
6719 /// If the same service runs in different environments (production, staging, QA, development, etc.), the environment can identify other instances of the same service. Can also group services and applications from the same environment.
6720 ///
6721 /// # Examples
6722 ///
6723 /// - `production`
6724 pub const SERVICE_ENVIRONMENT: &str = "service.environment";
6725
6726 /// Ephemeral identifier of this service (if one exists).
6727 /// This id normally changes across restarts, but `service.id` does not.
6728 ///
6729 /// # Examples
6730 ///
6731 /// - `8a4f500f`
6732 pub const SERVICE_EPHEMERAL_ID: &str = "service.ephemeral_id";
6733
6734 /// Unique identifier of the running service. If the service is comprised of many nodes, the `service.id` should be the same for all nodes.
6735 /// 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.
6736 /// 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.
6737 ///
6738 /// # Examples
6739 ///
6740 /// - `d37e5ebfe0ae6c4972dbe9f0174a1637bb8247f6`
6741 pub const SERVICE_ID: &str = "service.id";
6742
6743 /// Name of the service data is collected from.
6744 /// 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.
6745 /// 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.
6746 ///
6747 /// # Examples
6748 ///
6749 /// - `elasticsearch-metrics`
6750 pub const SERVICE_NAME: &str = "service.name";
6751
6752 /// Name of a service node.
6753 /// 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.
6754 /// 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.
6755 ///
6756 /// # Examples
6757 ///
6758 /// - `instance-0000000016`
6759 pub const SERVICE_NODE_NAME: &str = "service.node.name";
6760
6761 /// Deprecated for removal in next major version release. This field will be superseded by `node.roles`.
6762 /// Role of a service node.
6763 /// This allows for distinction between different running roles of the same service.
6764 /// In the case of Kibana, the `service.node.role` could be `ui` or `background_tasks`.
6765 /// In the case of Elasticsearch, the `service.node.role` could be `master` or `data`.
6766 /// Other services could use this to distinguish between a `web` and `worker` role running as part of the service.
6767 ///
6768 /// # Examples
6769 ///
6770 /// - `background_tasks`
6771 pub const SERVICE_NODE_ROLE: &str = "service.node.role";
6772
6773 /// Roles of a service node.
6774 /// This allows for distinction between different running roles of the same service.
6775 /// In the case of Kibana, the `service.node.role` could be `ui` or `background_tasks` or both.
6776 /// In the case of Elasticsearch, the `service.node.role` could be `master` or `data` or both.
6777 /// Other services could use this to distinguish between a `web` and `worker` role running as part of the service.
6778 ///
6779 /// # Examples
6780 ///
6781 /// - `["ui", "background_tasks"]`
6782 pub const SERVICE_NODE_ROLES: &str = "service.node.roles";
6783
6784 /// Address where data about this service was collected from.
6785 /// This should be a URI, network address (ipv4:port or [ipv6]:port) or a resource path (sockets).
6786 ///
6787 /// # Examples
6788 ///
6789 /// - `172.26.0.2:5432`
6790 pub const SERVICE_ORIGIN_ADDRESS: &str = "service.origin.address";
6791
6792 /// Identifies the environment where the service is running.
6793 /// If the same service runs in different environments (production, staging, QA, development, etc.), the environment can identify other instances of the same service. Can also group services and applications from the same environment.
6794 ///
6795 /// # Examples
6796 ///
6797 /// - `production`
6798 pub const SERVICE_ORIGIN_ENVIRONMENT: &str = "service.origin.environment";
6799
6800 /// Ephemeral identifier of this service (if one exists).
6801 /// This id normally changes across restarts, but `service.id` does not.
6802 ///
6803 /// # Examples
6804 ///
6805 /// - `8a4f500f`
6806 pub const SERVICE_ORIGIN_EPHEMERAL_ID: &str = "service.origin.ephemeral_id";
6807
6808 /// Unique identifier of the running service. If the service is comprised of many nodes, the `service.id` should be the same for all nodes.
6809 /// 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.
6810 /// 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.
6811 ///
6812 /// # Examples
6813 ///
6814 /// - `d37e5ebfe0ae6c4972dbe9f0174a1637bb8247f6`
6815 pub const SERVICE_ORIGIN_ID: &str = "service.origin.id";
6816
6817 /// Name of the service data is collected from.
6818 /// 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.
6819 /// 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.
6820 ///
6821 /// # Examples
6822 ///
6823 /// - `elasticsearch-metrics`
6824 pub const SERVICE_ORIGIN_NAME: &str = "service.origin.name";
6825
6826 /// Name of a service node.
6827 /// 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.
6828 /// 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.
6829 ///
6830 /// # Examples
6831 ///
6832 /// - `instance-0000000016`
6833 pub const SERVICE_ORIGIN_NODE_NAME: &str = "service.origin.node.name";
6834
6835 /// Deprecated for removal in next major version release. This field will be superseded by `node.roles`.
6836 /// Role of a service node.
6837 /// This allows for distinction between different running roles of the same service.
6838 /// In the case of Kibana, the `service.node.role` could be `ui` or `background_tasks`.
6839 /// In the case of Elasticsearch, the `service.node.role` could be `master` or `data`.
6840 /// Other services could use this to distinguish between a `web` and `worker` role running as part of the service.
6841 ///
6842 /// # Examples
6843 ///
6844 /// - `background_tasks`
6845 pub const SERVICE_ORIGIN_NODE_ROLE: &str = "service.origin.node.role";
6846
6847 /// Roles of a service node.
6848 /// This allows for distinction between different running roles of the same service.
6849 /// In the case of Kibana, the `service.node.role` could be `ui` or `background_tasks` or both.
6850 /// In the case of Elasticsearch, the `service.node.role` could be `master` or `data` or both.
6851 /// Other services could use this to distinguish between a `web` and `worker` role running as part of the service.
6852 ///
6853 /// # Examples
6854 ///
6855 /// - `["ui", "background_tasks"]`
6856 pub const SERVICE_ORIGIN_NODE_ROLES: &str = "service.origin.node.roles";
6857
6858 /// Current state of the service.
6859 pub const SERVICE_ORIGIN_STATE: &str = "service.origin.state";
6860
6861 /// The type of the service data is collected from.
6862 /// The type can be used to group and correlate logs and metrics from one service type.
6863 /// Example: If logs or metrics are collected from Elasticsearch, `service.type` would be `elasticsearch`.
6864 ///
6865 /// # Examples
6866 ///
6867 /// - `elasticsearch`
6868 pub const SERVICE_ORIGIN_TYPE: &str = "service.origin.type";
6869
6870 /// Version of the service the data was collected from.
6871 /// This allows to look at a data set only for a specific version of a service.
6872 ///
6873 /// # Examples
6874 ///
6875 /// - `3.2.4`
6876 pub const SERVICE_ORIGIN_VERSION: &str = "service.origin.version";
6877
6878 /// Current state of the service.
6879 pub const SERVICE_STATE: &str = "service.state";
6880
6881 /// Address where data about this service was collected from.
6882 /// This should be a URI, network address (ipv4:port or [ipv6]:port) or a resource path (sockets).
6883 ///
6884 /// # Examples
6885 ///
6886 /// - `172.26.0.2:5432`
6887 pub const SERVICE_TARGET_ADDRESS: &str = "service.target.address";
6888
6889 /// Identifies the environment where the service is running.
6890 /// If the same service runs in different environments (production, staging, QA, development, etc.), the environment can identify other instances of the same service. Can also group services and applications from the same environment.
6891 ///
6892 /// # Examples
6893 ///
6894 /// - `production`
6895 pub const SERVICE_TARGET_ENVIRONMENT: &str = "service.target.environment";
6896
6897 /// Ephemeral identifier of this service (if one exists).
6898 /// This id normally changes across restarts, but `service.id` does not.
6899 ///
6900 /// # Examples
6901 ///
6902 /// - `8a4f500f`
6903 pub const SERVICE_TARGET_EPHEMERAL_ID: &str = "service.target.ephemeral_id";
6904
6905 /// Unique identifier of the running service. If the service is comprised of many nodes, the `service.id` should be the same for all nodes.
6906 /// 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.
6907 /// 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.
6908 ///
6909 /// # Examples
6910 ///
6911 /// - `d37e5ebfe0ae6c4972dbe9f0174a1637bb8247f6`
6912 pub const SERVICE_TARGET_ID: &str = "service.target.id";
6913
6914 /// Name of the service data is collected from.
6915 /// 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.
6916 /// 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.
6917 ///
6918 /// # Examples
6919 ///
6920 /// - `elasticsearch-metrics`
6921 pub const SERVICE_TARGET_NAME: &str = "service.target.name";
6922
6923 /// Name of a service node.
6924 /// 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.
6925 /// 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.
6926 ///
6927 /// # Examples
6928 ///
6929 /// - `instance-0000000016`
6930 pub const SERVICE_TARGET_NODE_NAME: &str = "service.target.node.name";
6931
6932 /// Deprecated for removal in next major version release. This field will be superseded by `node.roles`.
6933 /// Role of a service node.
6934 /// This allows for distinction between different running roles of the same service.
6935 /// In the case of Kibana, the `service.node.role` could be `ui` or `background_tasks`.
6936 /// In the case of Elasticsearch, the `service.node.role` could be `master` or `data`.
6937 /// Other services could use this to distinguish between a `web` and `worker` role running as part of the service.
6938 ///
6939 /// # Examples
6940 ///
6941 /// - `background_tasks`
6942 pub const SERVICE_TARGET_NODE_ROLE: &str = "service.target.node.role";
6943
6944 /// Roles of a service node.
6945 /// This allows for distinction between different running roles of the same service.
6946 /// In the case of Kibana, the `service.node.role` could be `ui` or `background_tasks` or both.
6947 /// In the case of Elasticsearch, the `service.node.role` could be `master` or `data` or both.
6948 /// Other services could use this to distinguish between a `web` and `worker` role running as part of the service.
6949 ///
6950 /// # Examples
6951 ///
6952 /// - `["ui", "background_tasks"]`
6953 pub const SERVICE_TARGET_NODE_ROLES: &str = "service.target.node.roles";
6954
6955 /// Current state of the service.
6956 pub const SERVICE_TARGET_STATE: &str = "service.target.state";
6957
6958 /// The type of the service data is collected from.
6959 /// The type can be used to group and correlate logs and metrics from one service type.
6960 /// Example: If logs or metrics are collected from Elasticsearch, `service.type` would be `elasticsearch`.
6961 ///
6962 /// # Examples
6963 ///
6964 /// - `elasticsearch`
6965 pub const SERVICE_TARGET_TYPE: &str = "service.target.type";
6966
6967 /// Version of the service the data was collected from.
6968 /// This allows to look at a data set only for a specific version of a service.
6969 ///
6970 /// # Examples
6971 ///
6972 /// - `3.2.4`
6973 pub const SERVICE_TARGET_VERSION: &str = "service.target.version";
6974
6975 /// The type of the service data is collected from.
6976 /// The type can be used to group and correlate logs and metrics from one service type.
6977 /// Example: If logs or metrics are collected from Elasticsearch, `service.type` would be `elasticsearch`.
6978 ///
6979 /// # Examples
6980 ///
6981 /// - `elasticsearch`
6982 pub const SERVICE_TYPE: &str = "service.type";
6983
6984 /// Version of the service the data was collected from.
6985 /// This allows to look at a data set only for a specific version of a service.
6986 ///
6987 /// # Examples
6988 ///
6989 /// - `3.2.4`
6990 pub const SERVICE_VERSION: &str = "service.version";
6991}
6992
6993/// Source fields capture details about the sender of a network exchange/packet. These fields are populated from a network event, packet, or other event containing details of a network transaction.
6994
6995/// Source fields are usually populated in conjunction with destination fields. The source and destination fields are considered the baseline and should always be filled if an event contains source and destination details from a network transaction. If the event also contains identification of the client and server roles, then the client and server fields should also be populated.
6996pub mod source {
6997
6998 /// 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.
6999 /// Then it should be duplicated to `.ip` or `.domain`, depending on which one it is.
7000 pub const SOURCE_ADDRESS: &str = "source.address";
7001
7002 /// Unique number allocated to the autonomous system. The autonomous system number (ASN) uniquely identifies each network on the Internet.
7003 ///
7004 /// # Examples
7005 ///
7006 /// - `15169`
7007 pub const SOURCE_AS_NUMBER: &str = "source.as.number";
7008
7009 /// Organization name.
7010 ///
7011 /// # Examples
7012 ///
7013 /// - `Google LLC`
7014 pub const SOURCE_AS_ORGANIZATION_NAME: &str = "source.as.organization.name";
7015
7016 /// Bytes sent from the source to the destination.
7017 ///
7018 /// # Examples
7019 ///
7020 /// - `184`
7021 pub const SOURCE_BYTES: &str = "source.bytes";
7022
7023 /// The domain name of the source system.
7024 /// This value may be a host name, a fully qualified domain name, or another host naming format. The value may derive from the original event or be added from enrichment.
7025 ///
7026 /// # Examples
7027 ///
7028 /// - `foo.example.com`
7029 pub const SOURCE_DOMAIN: &str = "source.domain";
7030
7031 /// City name.
7032 ///
7033 /// # Examples
7034 ///
7035 /// - `Montreal`
7036 pub const SOURCE_GEO_CITY_NAME: &str = "source.geo.city_name";
7037
7038 /// Two-letter code representing continent's name.
7039 ///
7040 /// # Examples
7041 ///
7042 /// - `NA`
7043 pub const SOURCE_GEO_CONTINENT_CODE: &str = "source.geo.continent_code";
7044
7045 /// Name of the continent.
7046 ///
7047 /// # Examples
7048 ///
7049 /// - `North America`
7050 pub const SOURCE_GEO_CONTINENT_NAME: &str = "source.geo.continent_name";
7051
7052 /// Country ISO code.
7053 ///
7054 /// # Examples
7055 ///
7056 /// - `CA`
7057 pub const SOURCE_GEO_COUNTRY_ISO_CODE: &str = "source.geo.country_iso_code";
7058
7059 /// Country name.
7060 ///
7061 /// # Examples
7062 ///
7063 /// - `Canada`
7064 pub const SOURCE_GEO_COUNTRY_NAME: &str = "source.geo.country_name";
7065
7066 /// Longitude and latitude.
7067 ///
7068 /// # Examples
7069 ///
7070 /// - `{ "lon": -73.614830, "lat": 45.505918 }`
7071 pub const SOURCE_GEO_LOCATION: &str = "source.geo.location";
7072
7073 /// User-defined description of a location, at the level of granularity they care about.
7074 /// Could be the name of their data centers, the floor number, if this describes a local physical entity, city names.
7075 /// Not typically used in automated geolocation.
7076 ///
7077 /// # Examples
7078 ///
7079 /// - `boston-dc`
7080 pub const SOURCE_GEO_NAME: &str = "source.geo.name";
7081
7082 /// Postal code associated with the location.
7083 /// Values appropriate for this field may also be known as a postcode or ZIP code and will vary widely from country to country.
7084 ///
7085 /// # Examples
7086 ///
7087 /// - `94040`
7088 pub const SOURCE_GEO_POSTAL_CODE: &str = "source.geo.postal_code";
7089
7090 /// Region ISO code.
7091 ///
7092 /// # Examples
7093 ///
7094 /// - `CA-QC`
7095 pub const SOURCE_GEO_REGION_ISO_CODE: &str = "source.geo.region_iso_code";
7096
7097 /// Region name.
7098 ///
7099 /// # Examples
7100 ///
7101 /// - `Quebec`
7102 pub const SOURCE_GEO_REGION_NAME: &str = "source.geo.region_name";
7103
7104 /// The time zone of the location, such as IANA time zone name.
7105 ///
7106 /// # Examples
7107 ///
7108 /// - `America/Argentina/Buenos_Aires`
7109 pub const SOURCE_GEO_TIMEZONE: &str = "source.geo.timezone";
7110
7111 /// IP address of the source (IPv4 or IPv6).
7112 pub const SOURCE_IP: &str = "source.ip";
7113
7114 /// MAC address of the source.
7115 /// The notation format from RFC 7042 is suggested: Each octet (that is, 8-bit byte) is represented by two [uppercase] hexadecimal digits giving the value of the octet as an unsigned integer. Successive octets are separated by a hyphen.
7116 ///
7117 /// # Examples
7118 ///
7119 /// - `00-00-5E-00-53-23`
7120 pub const SOURCE_MAC: &str = "source.mac";
7121
7122 /// Translated ip of source based NAT sessions (e.g. internal client to internet)
7123 /// Typically connections traversing load balancers, firewalls, or routers.
7124 pub const SOURCE_NAT_IP: &str = "source.nat.ip";
7125
7126 /// Translated port of source based NAT sessions. (e.g. internal client to internet)
7127 /// Typically used with load balancers, firewalls, or routers.
7128 pub const SOURCE_NAT_PORT: &str = "source.nat.port";
7129
7130 /// Packets sent from the source to the destination.
7131 ///
7132 /// # Examples
7133 ///
7134 /// - `12`
7135 pub const SOURCE_PACKETS: &str = "source.packets";
7136
7137 /// Port of the source.
7138 pub const SOURCE_PORT: &str = "source.port";
7139
7140 /// The highest registered source domain, stripped of the subdomain.
7141 /// For example, the registered domain for "foo.example.com" is "example.com".
7142 /// 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".
7143 ///
7144 /// # Examples
7145 ///
7146 /// - `example.com`
7147 pub const SOURCE_REGISTERED_DOMAIN: &str = "source.registered_domain";
7148
7149 /// The subdomain portion of a fully qualified domain name includes all of the names except the host name under the registered_domain. In a partially qualified domain, or if the the qualification level of the full name cannot be determined, subdomain contains all of the names below the registered domain.
7150 /// For example the subdomain portion of "www.east.mydomain.co.uk" is "east". If the domain has multiple levels of subdomain, such as "sub2.sub1.example.com", the subdomain field should contain "sub2.sub1", with no trailing period.
7151 ///
7152 /// # Examples
7153 ///
7154 /// - `east`
7155 pub const SOURCE_SUBDOMAIN: &str = "source.subdomain";
7156
7157 /// 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".
7158 /// 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".
7159 ///
7160 /// # Examples
7161 ///
7162 /// - `co.uk`
7163 pub const SOURCE_TOP_LEVEL_DOMAIN: &str = "source.top_level_domain";
7164
7165 /// Name of the directory the user is a member of.
7166 /// For example, an LDAP or Active Directory domain name.
7167 pub const SOURCE_USER_DOMAIN: &str = "source.user.domain";
7168
7169 /// User email address.
7170 pub const SOURCE_USER_EMAIL: &str = "source.user.email";
7171
7172 /// User's full name, if available.
7173 ///
7174 /// # Examples
7175 ///
7176 /// - `Albert Einstein`
7177 pub const SOURCE_USER_FULL_NAME: &str = "source.user.full_name";
7178
7179 /// Name of the directory the group is a member of.
7180 /// For example, an LDAP or Active Directory domain name.
7181 pub const SOURCE_USER_GROUP_DOMAIN: &str = "source.user.group.domain";
7182
7183 /// Unique identifier for the group on the system/platform.
7184 pub const SOURCE_USER_GROUP_ID: &str = "source.user.group.id";
7185
7186 /// Name of the group.
7187 pub const SOURCE_USER_GROUP_NAME: &str = "source.user.group.name";
7188
7189 /// Unique user hash to correlate information for a user in anonymized form.
7190 /// Useful if `user.id` or `user.name` contain confidential information and cannot be used.
7191 pub const SOURCE_USER_HASH: &str = "source.user.hash";
7192
7193 /// Unique identifier of the user.
7194 ///
7195 /// # Examples
7196 ///
7197 /// - `S-1-5-21-202424912787-2692429404-2351956786-1000`
7198 pub const SOURCE_USER_ID: &str = "source.user.id";
7199
7200 /// Short name or login of the user.
7201 ///
7202 /// # Examples
7203 ///
7204 /// - `a.einstein`
7205 pub const SOURCE_USER_NAME: &str = "source.user.name";
7206
7207 /// Array of user roles at the time of the event.
7208 ///
7209 /// # Examples
7210 ///
7211 /// - `["kibana_admin", "reporting_user"]`
7212 pub const SOURCE_USER_ROLES: &str = "source.user.roles";
7213}
7214
7215/// Fields to classify events and alerts according to a threat taxonomy such as the MITRE ATT&CK® framework.
7216
7217/// 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.* fields 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").
7218pub mod threat {
7219
7220 /// A list of associated indicators objects enriching the event, and the context of that association/enrichment.
7221 pub const THREAT_ENRICHMENTS: &str = "threat.enrichments";
7222
7223 /// Object containing associated indicators enriching the event.
7224 pub const THREAT_ENRICHMENTS_INDICATOR: &str = "threat.enrichments.indicator";
7225
7226 /// Unique number allocated to the autonomous system. The autonomous system number (ASN) uniquely identifies each network on the Internet.
7227 ///
7228 /// # Examples
7229 ///
7230 /// - `15169`
7231 pub const THREAT_ENRICHMENTS_INDICATOR_AS_NUMBER: &str =
7232 "threat.enrichments.indicator.as.number";
7233
7234 /// Organization name.
7235 ///
7236 /// # Examples
7237 ///
7238 /// - `Google LLC`
7239 pub const THREAT_ENRICHMENTS_INDICATOR_AS_ORGANIZATION_NAME: &str =
7240 "threat.enrichments.indicator.as.organization.name";
7241
7242 /// Identifies the vendor-neutral confidence rating using the None/Low/Medium/High scale defined in Appendix A of the STIX 2.1 framework. Vendor-specific confidence scales may be added as custom fields.
7243 ///
7244 /// # Examples
7245 ///
7246 /// - `Medium`
7247 pub const THREAT_ENRICHMENTS_INDICATOR_CONFIDENCE: &str =
7248 "threat.enrichments.indicator.confidence";
7249
7250 /// Describes the type of action conducted by the threat.
7251 ///
7252 /// # Examples
7253 ///
7254 /// - `IP x.x.x.x was observed delivering the Angler EK.`
7255 pub const THREAT_ENRICHMENTS_INDICATOR_DESCRIPTION: &str =
7256 "threat.enrichments.indicator.description";
7257
7258 /// Identifies a threat indicator as an email address (irrespective of direction).
7259 ///
7260 /// # Examples
7261 ///
7262 /// - `phish@example.com`
7263 pub const THREAT_ENRICHMENTS_INDICATOR_EMAIL_ADDRESS: &str =
7264 "threat.enrichments.indicator.email.address";
7265
7266 /// Last time the file was accessed.
7267 /// Note that not all filesystems keep track of access time.
7268 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_ACCESSED: &str =
7269 "threat.enrichments.indicator.file.accessed";
7270
7271 /// Array of file attributes.
7272 /// Attributes names will vary by platform. Here's a non-exhaustive list of values that are expected in this field: archive, compressed, directory, encrypted, execute, hidden, read, readonly, system, write.
7273 ///
7274 /// # Examples
7275 ///
7276 /// - `["readonly", "system"]`
7277 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_ATTRIBUTES: &str =
7278 "threat.enrichments.indicator.file.attributes";
7279
7280 /// The hashing algorithm used to sign the process.
7281 /// This value can distinguish signatures when a file is signed multiple times by the same signer but with a different digest algorithm.
7282 ///
7283 /// # Examples
7284 ///
7285 /// - `sha256`
7286 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_CODE_SIGNATURE_DIGEST_ALGORITHM: &str =
7287 "threat.enrichments.indicator.file.code_signature.digest_algorithm";
7288
7289 /// Boolean to capture if a signature is present.
7290 ///
7291 /// # Examples
7292 ///
7293 /// - `true`
7294 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_CODE_SIGNATURE_EXISTS: &str =
7295 "threat.enrichments.indicator.file.code_signature.exists";
7296
7297 /// The identifier used to sign the process.
7298 /// This is used to identify the application manufactured by a software vendor. The field is relevant to Apple *OS only.
7299 ///
7300 /// # Examples
7301 ///
7302 /// - `com.apple.xpc.proxy`
7303 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_CODE_SIGNATURE_SIGNING_ID: &str =
7304 "threat.enrichments.indicator.file.code_signature.signing_id";
7305
7306 /// Additional information about the certificate status.
7307 /// 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.
7308 ///
7309 /// # Examples
7310 ///
7311 /// - `ERROR_UNTRUSTED_ROOT`
7312 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_CODE_SIGNATURE_STATUS: &str =
7313 "threat.enrichments.indicator.file.code_signature.status";
7314
7315 /// Subject name of the code signer
7316 ///
7317 /// # Examples
7318 ///
7319 /// - `Microsoft Corporation`
7320 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_CODE_SIGNATURE_SUBJECT_NAME: &str =
7321 "threat.enrichments.indicator.file.code_signature.subject_name";
7322
7323 /// The team identifier used to sign the process.
7324 /// This is used to identify the team or vendor of a software product. The field is relevant to Apple *OS only.
7325 ///
7326 /// # Examples
7327 ///
7328 /// - `EQHXZ8M8AV`
7329 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_CODE_SIGNATURE_TEAM_ID: &str =
7330 "threat.enrichments.indicator.file.code_signature.team_id";
7331
7332 /// Date and time when the code signature was generated and signed.
7333 ///
7334 /// # Examples
7335 ///
7336 /// - `2021-01-01T12:10:30Z`
7337 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_CODE_SIGNATURE_TIMESTAMP: &str =
7338 "threat.enrichments.indicator.file.code_signature.timestamp";
7339
7340 /// Stores the trust status of the certificate chain.
7341 /// Validating the trust of the certificate chain may be complicated, and this field should only be populated by tools that actively check the status.
7342 ///
7343 /// # Examples
7344 ///
7345 /// - `true`
7346 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_CODE_SIGNATURE_TRUSTED: &str =
7347 "threat.enrichments.indicator.file.code_signature.trusted";
7348
7349 /// Boolean to capture if the digital signature is verified against the binary content.
7350 /// Leave unpopulated if a certificate was unchecked.
7351 ///
7352 /// # Examples
7353 ///
7354 /// - `true`
7355 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_CODE_SIGNATURE_VALID: &str =
7356 "threat.enrichments.indicator.file.code_signature.valid";
7357
7358 /// File creation time.
7359 /// Note that not all filesystems store the creation time.
7360 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_CREATED: &str =
7361 "threat.enrichments.indicator.file.created";
7362
7363 /// Last time the file attributes or metadata changed.
7364 /// Note that changes to the file content will update `mtime`. This implies `ctime` will be adjusted at the same time, since `mtime` is an attribute of the file.
7365 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_CTIME: &str =
7366 "threat.enrichments.indicator.file.ctime";
7367
7368 /// Device that is the source of the file.
7369 ///
7370 /// # Examples
7371 ///
7372 /// - `sda`
7373 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_DEVICE: &str =
7374 "threat.enrichments.indicator.file.device";
7375
7376 /// Directory where the file is located. It should include the drive letter, when appropriate.
7377 ///
7378 /// # Examples
7379 ///
7380 /// - `/home/alice`
7381 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_DIRECTORY: &str =
7382 "threat.enrichments.indicator.file.directory";
7383
7384 /// Drive letter where the file is located. This field is only relevant on Windows.
7385 /// The value should be uppercase, and not include the colon.
7386 ///
7387 /// # Examples
7388 ///
7389 /// - `C`
7390 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_DRIVE_LETTER: &str =
7391 "threat.enrichments.indicator.file.drive_letter";
7392
7393 /// Machine architecture of the ELF file.
7394 ///
7395 /// # Examples
7396 ///
7397 /// - `x86-64`
7398 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_ELF_ARCHITECTURE: &str =
7399 "threat.enrichments.indicator.file.elf.architecture";
7400
7401 /// Byte sequence of ELF file.
7402 ///
7403 /// # Examples
7404 ///
7405 /// - `Little Endian`
7406 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_ELF_BYTE_ORDER: &str =
7407 "threat.enrichments.indicator.file.elf.byte_order";
7408
7409 /// CPU type of the ELF file.
7410 ///
7411 /// # Examples
7412 ///
7413 /// - `Intel`
7414 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_ELF_CPU_TYPE: &str =
7415 "threat.enrichments.indicator.file.elf.cpu_type";
7416
7417 /// Extracted when possible from the file's metadata. Indicates when it was built or compiled. It can also be faked by malware creators.
7418 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_ELF_CREATION_DATE: &str =
7419 "threat.enrichments.indicator.file.elf.creation_date";
7420
7421 /// List of exported element names and types.
7422 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_ELF_EXPORTS: &str =
7423 "threat.enrichments.indicator.file.elf.exports";
7424
7425 /// A hash of the Go language imports in an ELF file excluding standard library imports. An 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.
7426 /// The algorithm used to calculate the Go symbol hash and a reference implementation are available [here](https://github.com/elastic/toutoumomoma).
7427 ///
7428 /// # Examples
7429 ///
7430 /// - `10bddcb4cee42080f76c88d9ff964491`
7431 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_ELF_GO_IMPORT_HASH: &str =
7432 "threat.enrichments.indicator.file.elf.go_import_hash";
7433
7434 /// List of imported Go language element names and types.
7435 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_ELF_GO_IMPORTS: &str =
7436 "threat.enrichments.indicator.file.elf.go_imports";
7437
7438 /// Shannon entropy calculation from the list of Go imports.
7439 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_ELF_GO_IMPORTS_NAMES_ENTROPY: &str =
7440 "threat.enrichments.indicator.file.elf.go_imports_names_entropy";
7441
7442 /// Variance for Shannon entropy calculation from the list of Go imports.
7443 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_ELF_GO_IMPORTS_NAMES_VAR_ENTROPY: &str =
7444 "threat.enrichments.indicator.file.elf.go_imports_names_var_entropy";
7445
7446 /// Set to true if the file is a Go executable that has had its symbols stripped or obfuscated and false if an unobfuscated Go executable.
7447 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_ELF_GO_STRIPPED: &str =
7448 "threat.enrichments.indicator.file.elf.go_stripped";
7449
7450 /// Version of the ELF Application Binary Interface (ABI).
7451 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_ELF_HEADER_ABI_VERSION: &str =
7452 "threat.enrichments.indicator.file.elf.header.abi_version";
7453
7454 /// Header class of the ELF file.
7455 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_ELF_HEADER_CLASS: &str =
7456 "threat.enrichments.indicator.file.elf.header.class";
7457
7458 /// Data table of the ELF header.
7459 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_ELF_HEADER_DATA: &str =
7460 "threat.enrichments.indicator.file.elf.header.data";
7461
7462 /// Header entrypoint of the ELF file.
7463 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_ELF_HEADER_ENTRYPOINT: &str =
7464 "threat.enrichments.indicator.file.elf.header.entrypoint";
7465
7466 /// "0x1" for original ELF files.
7467 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_ELF_HEADER_OBJECT_VERSION: &str =
7468 "threat.enrichments.indicator.file.elf.header.object_version";
7469
7470 /// Application Binary Interface (ABI) of the Linux OS.
7471 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_ELF_HEADER_OS_ABI: &str =
7472 "threat.enrichments.indicator.file.elf.header.os_abi";
7473
7474 /// Header type of the ELF file.
7475 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_ELF_HEADER_TYPE: &str =
7476 "threat.enrichments.indicator.file.elf.header.type";
7477
7478 /// Version of the ELF header.
7479 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_ELF_HEADER_VERSION: &str =
7480 "threat.enrichments.indicator.file.elf.header.version";
7481
7482 /// A hash of the imports in an ELF file. An 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.
7483 /// This is an ELF implementation of the Windows PE imphash.
7484 ///
7485 /// # Examples
7486 ///
7487 /// - `d41d8cd98f00b204e9800998ecf8427e`
7488 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_ELF_IMPORT_HASH: &str =
7489 "threat.enrichments.indicator.file.elf.import_hash";
7490
7491 /// List of imported element names and types.
7492 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_ELF_IMPORTS: &str =
7493 "threat.enrichments.indicator.file.elf.imports";
7494
7495 /// Shannon entropy calculation from the list of imported element names and types.
7496 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_ELF_IMPORTS_NAMES_ENTROPY: &str =
7497 "threat.enrichments.indicator.file.elf.imports_names_entropy";
7498
7499 /// Variance for Shannon entropy calculation from the list of imported element names and types.
7500 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_ELF_IMPORTS_NAMES_VAR_ENTROPY: &str =
7501 "threat.enrichments.indicator.file.elf.imports_names_var_entropy";
7502
7503 /// An array containing an object for each section of the ELF file.
7504 /// The keys that should be present in these objects are defined by sub-fields underneath `elf.sections.*`.
7505 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_ELF_SECTIONS: &str =
7506 "threat.enrichments.indicator.file.elf.sections";
7507
7508 /// Chi-square probability distribution of the section.
7509 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_ELF_SECTIONS_CHI2: &str =
7510 "threat.enrichments.indicator.file.elf.sections.chi2";
7511
7512 /// Shannon entropy calculation from the section.
7513 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_ELF_SECTIONS_ENTROPY: &str =
7514 "threat.enrichments.indicator.file.elf.sections.entropy";
7515
7516 /// ELF Section List flags.
7517 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_ELF_SECTIONS_FLAGS: &str =
7518 "threat.enrichments.indicator.file.elf.sections.flags";
7519
7520 /// ELF Section List name.
7521 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_ELF_SECTIONS_NAME: &str =
7522 "threat.enrichments.indicator.file.elf.sections.name";
7523
7524 /// ELF Section List offset.
7525 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_ELF_SECTIONS_PHYSICAL_OFFSET: &str =
7526 "threat.enrichments.indicator.file.elf.sections.physical_offset";
7527
7528 /// ELF Section List physical size.
7529 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_ELF_SECTIONS_PHYSICAL_SIZE: &str =
7530 "threat.enrichments.indicator.file.elf.sections.physical_size";
7531
7532 /// ELF Section List type.
7533 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_ELF_SECTIONS_TYPE: &str =
7534 "threat.enrichments.indicator.file.elf.sections.type";
7535
7536 /// Variance for Shannon entropy calculation from the section.
7537 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_ELF_SECTIONS_VAR_ENTROPY: &str =
7538 "threat.enrichments.indicator.file.elf.sections.var_entropy";
7539
7540 /// ELF Section List virtual address.
7541 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_ELF_SECTIONS_VIRTUAL_ADDRESS: &str =
7542 "threat.enrichments.indicator.file.elf.sections.virtual_address";
7543
7544 /// ELF Section List virtual size.
7545 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_ELF_SECTIONS_VIRTUAL_SIZE: &str =
7546 "threat.enrichments.indicator.file.elf.sections.virtual_size";
7547
7548 /// An array containing an object for each segment of the ELF file.
7549 /// The keys that should be present in these objects are defined by sub-fields underneath `elf.segments.*`.
7550 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_ELF_SEGMENTS: &str =
7551 "threat.enrichments.indicator.file.elf.segments";
7552
7553 /// ELF object segment sections.
7554 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_ELF_SEGMENTS_SECTIONS: &str =
7555 "threat.enrichments.indicator.file.elf.segments.sections";
7556
7557 /// ELF object segment type.
7558 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_ELF_SEGMENTS_TYPE: &str =
7559 "threat.enrichments.indicator.file.elf.segments.type";
7560
7561 /// List of shared libraries used by this ELF object.
7562 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_ELF_SHARED_LIBRARIES: &str =
7563 "threat.enrichments.indicator.file.elf.shared_libraries";
7564
7565 /// telfhash symbol hash for ELF file.
7566 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_ELF_TELFHASH: &str =
7567 "threat.enrichments.indicator.file.elf.telfhash";
7568
7569 /// File extension, excluding the leading dot.
7570 /// Note that when the file name has multiple extensions (example.tar.gz), only the last one should be captured ("gz", not "tar.gz").
7571 ///
7572 /// # Examples
7573 ///
7574 /// - `png`
7575 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_EXTENSION: &str =
7576 "threat.enrichments.indicator.file.extension";
7577
7578 /// A fork is additional data associated with a filesystem object.
7579 /// On Linux, a resource fork is used to store additional data with a filesystem object. A file always has at least one fork for the data portion, and additional forks may exist.
7580 /// On NTFS, this is analogous to an Alternate Data Stream (ADS), and the default data stream for a file is just called $DATA. Zone.Identifier is commonly used by Windows to track contents downloaded from the Internet. An ADS is typically of the form: `C:\path\to\filename.extension:some_fork_name`, and `some_fork_name` is the value that should populate `fork_name`. `filename.extension` should populate `file.name`, and `extension` should populate `file.extension`. The full path, `file.path`, will include the fork name.
7581 ///
7582 /// # Examples
7583 ///
7584 /// - `Zone.Identifer`
7585 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_FORK_NAME: &str =
7586 "threat.enrichments.indicator.file.fork_name";
7587
7588 /// Primary group ID (GID) of the file.
7589 ///
7590 /// # Examples
7591 ///
7592 /// - `1001`
7593 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_GID: &str = "threat.enrichments.indicator.file.gid";
7594
7595 /// Primary group name of the file.
7596 ///
7597 /// # Examples
7598 ///
7599 /// - `alice`
7600 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_GROUP: &str =
7601 "threat.enrichments.indicator.file.group";
7602
7603 /// MD5 hash.
7604 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_HASH_MD5: &str =
7605 "threat.enrichments.indicator.file.hash.md5";
7606
7607 /// SHA1 hash.
7608 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_HASH_SHA1: &str =
7609 "threat.enrichments.indicator.file.hash.sha1";
7610
7611 /// SHA256 hash.
7612 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_HASH_SHA256: &str =
7613 "threat.enrichments.indicator.file.hash.sha256";
7614
7615 /// SHA384 hash.
7616 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_HASH_SHA384: &str =
7617 "threat.enrichments.indicator.file.hash.sha384";
7618
7619 /// SHA512 hash.
7620 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_HASH_SHA512: &str =
7621 "threat.enrichments.indicator.file.hash.sha512";
7622
7623 /// SSDEEP hash.
7624 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_HASH_SSDEEP: &str =
7625 "threat.enrichments.indicator.file.hash.ssdeep";
7626
7627 /// TLSH hash.
7628 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_HASH_TLSH: &str =
7629 "threat.enrichments.indicator.file.hash.tlsh";
7630
7631 /// Inode representing the file in the filesystem.
7632 ///
7633 /// # Examples
7634 ///
7635 /// - `256383`
7636 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_INODE: &str =
7637 "threat.enrichments.indicator.file.inode";
7638
7639 /// MIME type should identify the format of the file or stream of bytes using https://www.iana.org/assignments/media-types/media-types.xhtml[IANA official types], where possible. When more than one type is applicable, the most specific type should be used.
7640 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_MIME_TYPE: &str =
7641 "threat.enrichments.indicator.file.mime_type";
7642
7643 /// Mode of the file in octal representation.
7644 ///
7645 /// # Examples
7646 ///
7647 /// - `0640`
7648 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_MODE: &str =
7649 "threat.enrichments.indicator.file.mode";
7650
7651 /// Last time the file content was modified.
7652 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_MTIME: &str =
7653 "threat.enrichments.indicator.file.mtime";
7654
7655 /// Name of the file including the extension, without the directory.
7656 ///
7657 /// # Examples
7658 ///
7659 /// - `example.png`
7660 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_NAME: &str =
7661 "threat.enrichments.indicator.file.name";
7662
7663 /// File owner's username.
7664 ///
7665 /// # Examples
7666 ///
7667 /// - `alice`
7668 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_OWNER: &str =
7669 "threat.enrichments.indicator.file.owner";
7670
7671 /// Full path to the file, including the file name. It should include the drive letter, when appropriate.
7672 ///
7673 /// # Examples
7674 ///
7675 /// - `/home/alice/example.png`
7676 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_PATH: &str =
7677 "threat.enrichments.indicator.file.path";
7678
7679 /// CPU architecture target for the file.
7680 ///
7681 /// # Examples
7682 ///
7683 /// - `x64`
7684 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_PE_ARCHITECTURE: &str =
7685 "threat.enrichments.indicator.file.pe.architecture";
7686
7687 /// Internal company name of the file, provided at compile-time.
7688 ///
7689 /// # Examples
7690 ///
7691 /// - `Microsoft Corporation`
7692 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_PE_COMPANY: &str =
7693 "threat.enrichments.indicator.file.pe.company";
7694
7695 /// Internal description of the file, provided at compile-time.
7696 ///
7697 /// # Examples
7698 ///
7699 /// - `Paint`
7700 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_PE_DESCRIPTION: &str =
7701 "threat.enrichments.indicator.file.pe.description";
7702
7703 /// Internal version of the file, provided at compile-time.
7704 ///
7705 /// # Examples
7706 ///
7707 /// - `6.3.9600.17415`
7708 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_PE_FILE_VERSION: &str =
7709 "threat.enrichments.indicator.file.pe.file_version";
7710
7711 /// A hash of the Go language imports in a PE file excluding standard library imports. An 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.
7712 /// The algorithm used to calculate the Go symbol hash and a reference implementation are available [here](https://github.com/elastic/toutoumomoma).
7713 ///
7714 /// # Examples
7715 ///
7716 /// - `10bddcb4cee42080f76c88d9ff964491`
7717 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_PE_GO_IMPORT_HASH: &str =
7718 "threat.enrichments.indicator.file.pe.go_import_hash";
7719
7720 /// List of imported Go language element names and types.
7721 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_PE_GO_IMPORTS: &str =
7722 "threat.enrichments.indicator.file.pe.go_imports";
7723
7724 /// Shannon entropy calculation from the list of Go imports.
7725 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_PE_GO_IMPORTS_NAMES_ENTROPY: &str =
7726 "threat.enrichments.indicator.file.pe.go_imports_names_entropy";
7727
7728 /// Variance for Shannon entropy calculation from the list of Go imports.
7729 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_PE_GO_IMPORTS_NAMES_VAR_ENTROPY: &str =
7730 "threat.enrichments.indicator.file.pe.go_imports_names_var_entropy";
7731
7732 /// Set to true if the file is a Go executable that has had its symbols stripped or obfuscated and false if an unobfuscated Go executable.
7733 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_PE_GO_STRIPPED: &str =
7734 "threat.enrichments.indicator.file.pe.go_stripped";
7735
7736 /// 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.
7737 /// Learn more at https://www.fireeye.com/blog/threat-research/2014/01/tracking-malware-import-hashing.html.
7738 ///
7739 /// # Examples
7740 ///
7741 /// - `0c6803c4e922103c4dca5963aad36ddf`
7742 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_PE_IMPHASH: &str =
7743 "threat.enrichments.indicator.file.pe.imphash";
7744
7745 /// A hash of the imports in a PE file. An 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.
7746 /// This is a synonym for imphash.
7747 ///
7748 /// # Examples
7749 ///
7750 /// - `d41d8cd98f00b204e9800998ecf8427e`
7751 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_PE_IMPORT_HASH: &str =
7752 "threat.enrichments.indicator.file.pe.import_hash";
7753
7754 /// List of imported element names and types.
7755 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_PE_IMPORTS: &str =
7756 "threat.enrichments.indicator.file.pe.imports";
7757
7758 /// Shannon entropy calculation from the list of imported element names and types.
7759 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_PE_IMPORTS_NAMES_ENTROPY: &str =
7760 "threat.enrichments.indicator.file.pe.imports_names_entropy";
7761
7762 /// Variance for Shannon entropy calculation from the list of imported element names and types.
7763 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_PE_IMPORTS_NAMES_VAR_ENTROPY: &str =
7764 "threat.enrichments.indicator.file.pe.imports_names_var_entropy";
7765
7766 /// Internal name of the file, provided at compile-time.
7767 ///
7768 /// # Examples
7769 ///
7770 /// - `MSPAINT.EXE`
7771 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_PE_ORIGINAL_FILE_NAME: &str =
7772 "threat.enrichments.indicator.file.pe.original_file_name";
7773
7774 /// A hash of the PE header and data from one or more PE sections. An pehash can be used to cluster files by transforming structural information about a file into a hash value.
7775 /// Learn more at https://www.usenix.org/legacy/events/leet09/tech/full_papers/wicherski/wicherski_html/index.html.
7776 ///
7777 /// # Examples
7778 ///
7779 /// - `73ff189b63cd6be375a7ff25179a38d347651975`
7780 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_PE_PEHASH: &str =
7781 "threat.enrichments.indicator.file.pe.pehash";
7782
7783 /// Internal product name of the file, provided at compile-time.
7784 ///
7785 /// # Examples
7786 ///
7787 /// - `Microsoft® Windows® Operating System`
7788 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_PE_PRODUCT: &str =
7789 "threat.enrichments.indicator.file.pe.product";
7790
7791 /// An array containing an object for each section of the PE file.
7792 /// The keys that should be present in these objects are defined by sub-fields underneath `pe.sections.*`.
7793 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_PE_SECTIONS: &str =
7794 "threat.enrichments.indicator.file.pe.sections";
7795
7796 /// Shannon entropy calculation from the section.
7797 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_PE_SECTIONS_ENTROPY: &str =
7798 "threat.enrichments.indicator.file.pe.sections.entropy";
7799
7800 /// PE Section List name.
7801 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_PE_SECTIONS_NAME: &str =
7802 "threat.enrichments.indicator.file.pe.sections.name";
7803
7804 /// PE Section List physical size.
7805 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_PE_SECTIONS_PHYSICAL_SIZE: &str =
7806 "threat.enrichments.indicator.file.pe.sections.physical_size";
7807
7808 /// Variance for Shannon entropy calculation from the section.
7809 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_PE_SECTIONS_VAR_ENTROPY: &str =
7810 "threat.enrichments.indicator.file.pe.sections.var_entropy";
7811
7812 /// PE Section List virtual size. This is always the same as `physical_size`.
7813 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_PE_SECTIONS_VIRTUAL_SIZE: &str =
7814 "threat.enrichments.indicator.file.pe.sections.virtual_size";
7815
7816 /// File size in bytes.
7817 /// Only relevant when `file.type` is "file".
7818 ///
7819 /// # Examples
7820 ///
7821 /// - `16384`
7822 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_SIZE: &str =
7823 "threat.enrichments.indicator.file.size";
7824
7825 /// Target path for symlinks.
7826 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_TARGET_PATH: &str =
7827 "threat.enrichments.indicator.file.target_path";
7828
7829 /// File type (file, dir, or symlink).
7830 ///
7831 /// # Examples
7832 ///
7833 /// - `file`
7834 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_TYPE: &str =
7835 "threat.enrichments.indicator.file.type";
7836
7837 /// The user ID (UID) or security identifier (SID) of the file owner.
7838 ///
7839 /// # Examples
7840 ///
7841 /// - `1001`
7842 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_UID: &str = "threat.enrichments.indicator.file.uid";
7843
7844 /// 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.
7845 ///
7846 /// # Examples
7847 ///
7848 /// - `*.elastic.co`
7849 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_X509_ALTERNATIVE_NAMES: &str =
7850 "threat.enrichments.indicator.file.x509.alternative_names";
7851
7852 /// List of common name (CN) of issuing certificate authority.
7853 ///
7854 /// # Examples
7855 ///
7856 /// - `Example SHA2 High Assurance Server CA`
7857 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_X509_ISSUER_COMMON_NAME: &str =
7858 "threat.enrichments.indicator.file.x509.issuer.common_name";
7859
7860 /// List of country \(C) codes
7861 ///
7862 /// # Examples
7863 ///
7864 /// - `US`
7865 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_X509_ISSUER_COUNTRY: &str =
7866 "threat.enrichments.indicator.file.x509.issuer.country";
7867
7868 /// Distinguished name (DN) of issuing certificate authority.
7869 ///
7870 /// # Examples
7871 ///
7872 /// - `C=US, O=Example Inc, OU=www.example.com, CN=Example SHA2 High Assurance Server CA`
7873 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_X509_ISSUER_DISTINGUISHED_NAME: &str =
7874 "threat.enrichments.indicator.file.x509.issuer.distinguished_name";
7875
7876 /// List of locality names (L)
7877 ///
7878 /// # Examples
7879 ///
7880 /// - `Mountain View`
7881 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_X509_ISSUER_LOCALITY: &str =
7882 "threat.enrichments.indicator.file.x509.issuer.locality";
7883
7884 /// List of organizations (O) of issuing certificate authority.
7885 ///
7886 /// # Examples
7887 ///
7888 /// - `Example Inc`
7889 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_X509_ISSUER_ORGANIZATION: &str =
7890 "threat.enrichments.indicator.file.x509.issuer.organization";
7891
7892 /// List of organizational units (OU) of issuing certificate authority.
7893 ///
7894 /// # Examples
7895 ///
7896 /// - `www.example.com`
7897 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_X509_ISSUER_ORGANIZATIONAL_UNIT: &str =
7898 "threat.enrichments.indicator.file.x509.issuer.organizational_unit";
7899
7900 /// List of state or province names (ST, S, or P)
7901 ///
7902 /// # Examples
7903 ///
7904 /// - `California`
7905 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_X509_ISSUER_STATE_OR_PROVINCE: &str =
7906 "threat.enrichments.indicator.file.x509.issuer.state_or_province";
7907
7908 /// Time at which the certificate is no longer considered valid.
7909 ///
7910 /// # Examples
7911 ///
7912 /// - `2020-07-16T03:15:39Z`
7913 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_X509_NOT_AFTER: &str =
7914 "threat.enrichments.indicator.file.x509.not_after";
7915
7916 /// Time at which the certificate is first considered valid.
7917 ///
7918 /// # Examples
7919 ///
7920 /// - `2019-08-16T01:40:25Z`
7921 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_X509_NOT_BEFORE: &str =
7922 "threat.enrichments.indicator.file.x509.not_before";
7923
7924 /// Algorithm used to generate the public key.
7925 ///
7926 /// # Examples
7927 ///
7928 /// - `RSA`
7929 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_X509_PUBLIC_KEY_ALGORITHM: &str =
7930 "threat.enrichments.indicator.file.x509.public_key_algorithm";
7931
7932 /// The curve used by the elliptic curve public key algorithm. This is algorithm specific.
7933 ///
7934 /// # Examples
7935 ///
7936 /// - `nistp521`
7937 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_X509_PUBLIC_KEY_CURVE: &str =
7938 "threat.enrichments.indicator.file.x509.public_key_curve";
7939
7940 /// Exponent used to derive the public key. This is algorithm specific.
7941 ///
7942 /// # Examples
7943 ///
7944 /// - `65537`
7945 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_X509_PUBLIC_KEY_EXPONENT: &str =
7946 "threat.enrichments.indicator.file.x509.public_key_exponent";
7947
7948 /// The size of the public key space in bits.
7949 ///
7950 /// # Examples
7951 ///
7952 /// - `2048`
7953 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_X509_PUBLIC_KEY_SIZE: &str =
7954 "threat.enrichments.indicator.file.x509.public_key_size";
7955
7956 /// Unique serial number issued by the certificate authority. For consistency, if this value is alphanumeric, it should be formatted without colons and uppercase characters.
7957 ///
7958 /// # Examples
7959 ///
7960 /// - `55FBB9C7DEBF09809D12CCAA`
7961 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_X509_SERIAL_NUMBER: &str =
7962 "threat.enrichments.indicator.file.x509.serial_number";
7963
7964 /// 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.
7965 ///
7966 /// # Examples
7967 ///
7968 /// - `SHA256-RSA`
7969 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_X509_SIGNATURE_ALGORITHM: &str =
7970 "threat.enrichments.indicator.file.x509.signature_algorithm";
7971
7972 /// List of common names (CN) of subject.
7973 ///
7974 /// # Examples
7975 ///
7976 /// - `shared.global.example.net`
7977 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_X509_SUBJECT_COMMON_NAME: &str =
7978 "threat.enrichments.indicator.file.x509.subject.common_name";
7979
7980 /// List of country \(C) code
7981 ///
7982 /// # Examples
7983 ///
7984 /// - `US`
7985 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_X509_SUBJECT_COUNTRY: &str =
7986 "threat.enrichments.indicator.file.x509.subject.country";
7987
7988 /// Distinguished name (DN) of the certificate subject entity.
7989 ///
7990 /// # Examples
7991 ///
7992 /// - `C=US, ST=California, L=San Francisco, O=Example, Inc., CN=shared.global.example.net`
7993 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_X509_SUBJECT_DISTINGUISHED_NAME: &str =
7994 "threat.enrichments.indicator.file.x509.subject.distinguished_name";
7995
7996 /// List of locality names (L)
7997 ///
7998 /// # Examples
7999 ///
8000 /// - `San Francisco`
8001 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_X509_SUBJECT_LOCALITY: &str =
8002 "threat.enrichments.indicator.file.x509.subject.locality";
8003
8004 /// List of organizations (O) of subject.
8005 ///
8006 /// # Examples
8007 ///
8008 /// - `Example, Inc.`
8009 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_X509_SUBJECT_ORGANIZATION: &str =
8010 "threat.enrichments.indicator.file.x509.subject.organization";
8011
8012 /// List of organizational units (OU) of subject.
8013 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_X509_SUBJECT_ORGANIZATIONAL_UNIT: &str =
8014 "threat.enrichments.indicator.file.x509.subject.organizational_unit";
8015
8016 /// List of state or province names (ST, S, or P)
8017 ///
8018 /// # Examples
8019 ///
8020 /// - `California`
8021 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_X509_SUBJECT_STATE_OR_PROVINCE: &str =
8022 "threat.enrichments.indicator.file.x509.subject.state_or_province";
8023
8024 /// Version of x509 format.
8025 ///
8026 /// # Examples
8027 ///
8028 /// - `3`
8029 pub const THREAT_ENRICHMENTS_INDICATOR_FILE_X509_VERSION_NUMBER: &str =
8030 "threat.enrichments.indicator.file.x509.version_number";
8031
8032 /// The date and time when intelligence source first reported sighting this indicator.
8033 ///
8034 /// # Examples
8035 ///
8036 /// - `2020-11-05T17:25:47.000Z`
8037 pub const THREAT_ENRICHMENTS_INDICATOR_FIRST_SEEN: &str =
8038 "threat.enrichments.indicator.first_seen";
8039
8040 /// City name.
8041 ///
8042 /// # Examples
8043 ///
8044 /// - `Montreal`
8045 pub const THREAT_ENRICHMENTS_INDICATOR_GEO_CITY_NAME: &str =
8046 "threat.enrichments.indicator.geo.city_name";
8047
8048 /// Two-letter code representing continent's name.
8049 ///
8050 /// # Examples
8051 ///
8052 /// - `NA`
8053 pub const THREAT_ENRICHMENTS_INDICATOR_GEO_CONTINENT_CODE: &str =
8054 "threat.enrichments.indicator.geo.continent_code";
8055
8056 /// Name of the continent.
8057 ///
8058 /// # Examples
8059 ///
8060 /// - `North America`
8061 pub const THREAT_ENRICHMENTS_INDICATOR_GEO_CONTINENT_NAME: &str =
8062 "threat.enrichments.indicator.geo.continent_name";
8063
8064 /// Country ISO code.
8065 ///
8066 /// # Examples
8067 ///
8068 /// - `CA`
8069 pub const THREAT_ENRICHMENTS_INDICATOR_GEO_COUNTRY_ISO_CODE: &str =
8070 "threat.enrichments.indicator.geo.country_iso_code";
8071
8072 /// Country name.
8073 ///
8074 /// # Examples
8075 ///
8076 /// - `Canada`
8077 pub const THREAT_ENRICHMENTS_INDICATOR_GEO_COUNTRY_NAME: &str =
8078 "threat.enrichments.indicator.geo.country_name";
8079
8080 /// Longitude and latitude.
8081 ///
8082 /// # Examples
8083 ///
8084 /// - `{ "lon": -73.614830, "lat": 45.505918 }`
8085 pub const THREAT_ENRICHMENTS_INDICATOR_GEO_LOCATION: &str =
8086 "threat.enrichments.indicator.geo.location";
8087
8088 /// User-defined description of a location, at the level of granularity they care about.
8089 /// Could be the name of their data centers, the floor number, if this describes a local physical entity, city names.
8090 /// Not typically used in automated geolocation.
8091 ///
8092 /// # Examples
8093 ///
8094 /// - `boston-dc`
8095 pub const THREAT_ENRICHMENTS_INDICATOR_GEO_NAME: &str = "threat.enrichments.indicator.geo.name";
8096
8097 /// Postal code associated with the location.
8098 /// Values appropriate for this field may also be known as a postcode or ZIP code and will vary widely from country to country.
8099 ///
8100 /// # Examples
8101 ///
8102 /// - `94040`
8103 pub const THREAT_ENRICHMENTS_INDICATOR_GEO_POSTAL_CODE: &str =
8104 "threat.enrichments.indicator.geo.postal_code";
8105
8106 /// Region ISO code.
8107 ///
8108 /// # Examples
8109 ///
8110 /// - `CA-QC`
8111 pub const THREAT_ENRICHMENTS_INDICATOR_GEO_REGION_ISO_CODE: &str =
8112 "threat.enrichments.indicator.geo.region_iso_code";
8113
8114 /// Region name.
8115 ///
8116 /// # Examples
8117 ///
8118 /// - `Quebec`
8119 pub const THREAT_ENRICHMENTS_INDICATOR_GEO_REGION_NAME: &str =
8120 "threat.enrichments.indicator.geo.region_name";
8121
8122 /// The time zone of the location, such as IANA time zone name.
8123 ///
8124 /// # Examples
8125 ///
8126 /// - `America/Argentina/Buenos_Aires`
8127 pub const THREAT_ENRICHMENTS_INDICATOR_GEO_TIMEZONE: &str =
8128 "threat.enrichments.indicator.geo.timezone";
8129
8130 /// Identifies a threat indicator as an IP address (irrespective of direction).
8131 ///
8132 /// # Examples
8133 ///
8134 /// - `1.2.3.4`
8135 pub const THREAT_ENRICHMENTS_INDICATOR_IP: &str = "threat.enrichments.indicator.ip";
8136
8137 /// The date and time when intelligence source last reported sighting this indicator.
8138 ///
8139 /// # Examples
8140 ///
8141 /// - `2020-11-05T17:25:47.000Z`
8142 pub const THREAT_ENRICHMENTS_INDICATOR_LAST_SEEN: &str =
8143 "threat.enrichments.indicator.last_seen";
8144
8145 /// Traffic Light Protocol sharing markings.
8146 ///
8147 /// # Examples
8148 ///
8149 /// - `CLEAR`
8150 pub const THREAT_ENRICHMENTS_INDICATOR_MARKING_TLP: &str =
8151 "threat.enrichments.indicator.marking.tlp";
8152
8153 /// Traffic Light Protocol version.
8154 ///
8155 /// # Examples
8156 ///
8157 /// - `2.0`
8158 pub const THREAT_ENRICHMENTS_INDICATOR_MARKING_TLP_VERSION: &str =
8159 "threat.enrichments.indicator.marking.tlp_version";
8160
8161 /// The date and time when intelligence source last modified information for this indicator.
8162 ///
8163 /// # Examples
8164 ///
8165 /// - `2020-11-05T17:25:47.000Z`
8166 pub const THREAT_ENRICHMENTS_INDICATOR_MODIFIED_AT: &str =
8167 "threat.enrichments.indicator.modified_at";
8168
8169 /// The display name indicator in an UI friendly format
8170 /// URL, IP address, email address, registry key, port number, hash value, or other relevant name can serve as the display name.
8171 ///
8172 /// # Examples
8173 ///
8174 /// - `5.2.75.227`
8175 pub const THREAT_ENRICHMENTS_INDICATOR_NAME: &str = "threat.enrichments.indicator.name";
8176
8177 /// Identifies a threat indicator as a port number (irrespective of direction).
8178 ///
8179 /// # Examples
8180 ///
8181 /// - `443`
8182 pub const THREAT_ENRICHMENTS_INDICATOR_PORT: &str = "threat.enrichments.indicator.port";
8183
8184 /// The name of the indicator's provider.
8185 ///
8186 /// # Examples
8187 ///
8188 /// - `lrz_urlhaus`
8189 pub const THREAT_ENRICHMENTS_INDICATOR_PROVIDER: &str = "threat.enrichments.indicator.provider";
8190
8191 /// Reference URL linking to additional information about this indicator.
8192 ///
8193 /// # Examples
8194 ///
8195 /// - `https://system.example.com/indicator/0001234`
8196 pub const THREAT_ENRICHMENTS_INDICATOR_REFERENCE: &str =
8197 "threat.enrichments.indicator.reference";
8198
8199 /// Original bytes written with base64 encoding.
8200 /// 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.
8201 ///
8202 /// # Examples
8203 ///
8204 /// - `ZQBuAC0AVQBTAAAAZQBuAAAAAAA=`
8205 pub const THREAT_ENRICHMENTS_INDICATOR_REGISTRY_DATA_BYTES: &str =
8206 "threat.enrichments.indicator.registry.data.bytes";
8207
8208 /// Content when writing string types.
8209 /// 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"`).
8210 ///
8211 /// # Examples
8212 ///
8213 /// - `["C:\rta\red_ttp\bin\myapp.exe"]`
8214 pub const THREAT_ENRICHMENTS_INDICATOR_REGISTRY_DATA_STRINGS: &str =
8215 "threat.enrichments.indicator.registry.data.strings";
8216
8217 /// Standard registry type for encoding contents
8218 ///
8219 /// # Examples
8220 ///
8221 /// - `REG_SZ`
8222 pub const THREAT_ENRICHMENTS_INDICATOR_REGISTRY_DATA_TYPE: &str =
8223 "threat.enrichments.indicator.registry.data.type";
8224
8225 /// Abbreviated name for the hive.
8226 ///
8227 /// # Examples
8228 ///
8229 /// - `HKLM`
8230 pub const THREAT_ENRICHMENTS_INDICATOR_REGISTRY_HIVE: &str =
8231 "threat.enrichments.indicator.registry.hive";
8232
8233 /// Hive-relative path of keys.
8234 ///
8235 /// # Examples
8236 ///
8237 /// - `SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\winword.exe`
8238 pub const THREAT_ENRICHMENTS_INDICATOR_REGISTRY_KEY: &str =
8239 "threat.enrichments.indicator.registry.key";
8240
8241 /// Full path, including hive, key and value
8242 ///
8243 /// # Examples
8244 ///
8245 /// - `HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\winword.exe\Debugger`
8246 pub const THREAT_ENRICHMENTS_INDICATOR_REGISTRY_PATH: &str =
8247 "threat.enrichments.indicator.registry.path";
8248
8249 /// Name of the value written.
8250 ///
8251 /// # Examples
8252 ///
8253 /// - `Debugger`
8254 pub const THREAT_ENRICHMENTS_INDICATOR_REGISTRY_VALUE: &str =
8255 "threat.enrichments.indicator.registry.value";
8256
8257 /// Count of AV/EDR vendors that successfully detected malicious file or URL.
8258 ///
8259 /// # Examples
8260 ///
8261 /// - `4`
8262 pub const THREAT_ENRICHMENTS_INDICATOR_SCANNER_STATS: &str =
8263 "threat.enrichments.indicator.scanner_stats";
8264
8265 /// Number of times this indicator was observed conducting threat activity.
8266 ///
8267 /// # Examples
8268 ///
8269 /// - `20`
8270 pub const THREAT_ENRICHMENTS_INDICATOR_SIGHTINGS: &str =
8271 "threat.enrichments.indicator.sightings";
8272
8273 /// Type of indicator as represented by Cyber Observable in STIX 2.0.
8274 ///
8275 /// # Examples
8276 ///
8277 /// - `ipv4-addr`
8278 pub const THREAT_ENRICHMENTS_INDICATOR_TYPE: &str = "threat.enrichments.indicator.type";
8279
8280 /// Domain of the url, such as "www.elastic.co".
8281 /// 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.
8282 /// If the URL contains a literal IPv6 address enclosed by `[` and `]` (IETF RFC 2732), the `[` and `]` characters should also be captured in the `domain` field.
8283 ///
8284 /// # Examples
8285 ///
8286 /// - `www.elastic.co`
8287 pub const THREAT_ENRICHMENTS_INDICATOR_URL_DOMAIN: &str =
8288 "threat.enrichments.indicator.url.domain";
8289
8290 /// The field contains the file extension from the original request url, excluding the leading dot.
8291 /// The file extension is only set if it exists, as not every url has a file extension.
8292 /// The leading period must not be included. For example, the value must be "png", not ".png".
8293 /// Note that when the file name has multiple extensions (example.tar.gz), only the last one should be captured ("gz", not "tar.gz").
8294 ///
8295 /// # Examples
8296 ///
8297 /// - `png`
8298 pub const THREAT_ENRICHMENTS_INDICATOR_URL_EXTENSION: &str =
8299 "threat.enrichments.indicator.url.extension";
8300
8301 /// Portion of the url after the `#`, such as "top".
8302 /// The `#` is not part of the fragment.
8303 pub const THREAT_ENRICHMENTS_INDICATOR_URL_FRAGMENT: &str =
8304 "threat.enrichments.indicator.url.fragment";
8305
8306 /// 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.
8307 ///
8308 /// # Examples
8309 ///
8310 /// - `https://www.elastic.co:443/search?q=elasticsearch#top`
8311 pub const THREAT_ENRICHMENTS_INDICATOR_URL_FULL: &str = "threat.enrichments.indicator.url.full";
8312
8313 /// Unmodified original url as seen in the event source.
8314 /// 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.
8315 /// This field is meant to represent the URL as it was observed, complete or not.
8316 ///
8317 /// # Examples
8318 ///
8319 /// - `https://www.elastic.co:443/search?q=elasticsearch#top or /search?q=elasticsearch`
8320 pub const THREAT_ENRICHMENTS_INDICATOR_URL_ORIGINAL: &str =
8321 "threat.enrichments.indicator.url.original";
8322
8323 /// Password of the request.
8324 pub const THREAT_ENRICHMENTS_INDICATOR_URL_PASSWORD: &str =
8325 "threat.enrichments.indicator.url.password";
8326
8327 /// Path of the request, such as "/search".
8328 pub const THREAT_ENRICHMENTS_INDICATOR_URL_PATH: &str = "threat.enrichments.indicator.url.path";
8329
8330 /// Port of the request, such as 443.
8331 ///
8332 /// # Examples
8333 ///
8334 /// - `443`
8335 pub const THREAT_ENRICHMENTS_INDICATOR_URL_PORT: &str = "threat.enrichments.indicator.url.port";
8336
8337 /// The query field describes the query string of the request, such as "q=elasticsearch".
8338 /// The `?` is excluded from the query string. If a URL contains no `?`, there is no query field. If there is a `?` but no query, the query field exists with an empty string. The `exists` query can be used to differentiate between the two cases.
8339 pub const THREAT_ENRICHMENTS_INDICATOR_URL_QUERY: &str =
8340 "threat.enrichments.indicator.url.query";
8341
8342 /// The highest registered url domain, stripped of the subdomain.
8343 /// For example, the registered domain for "foo.example.com" is "example.com".
8344 /// 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".
8345 ///
8346 /// # Examples
8347 ///
8348 /// - `example.com`
8349 pub const THREAT_ENRICHMENTS_INDICATOR_URL_REGISTERED_DOMAIN: &str =
8350 "threat.enrichments.indicator.url.registered_domain";
8351
8352 /// Scheme of the request, such as "https".
8353 /// Note: The `:` is not part of the scheme.
8354 ///
8355 /// # Examples
8356 ///
8357 /// - `https`
8358 pub const THREAT_ENRICHMENTS_INDICATOR_URL_SCHEME: &str =
8359 "threat.enrichments.indicator.url.scheme";
8360
8361 /// The subdomain portion of a fully qualified domain name includes all of the names except the host name under the registered_domain. In a partially qualified domain, or if the the qualification level of the full name cannot be determined, subdomain contains all of the names below the registered domain.
8362 /// For example the subdomain portion of "www.east.mydomain.co.uk" is "east". If the domain has multiple levels of subdomain, such as "sub2.sub1.example.com", the subdomain field should contain "sub2.sub1", with no trailing period.
8363 ///
8364 /// # Examples
8365 ///
8366 /// - `east`
8367 pub const THREAT_ENRICHMENTS_INDICATOR_URL_SUBDOMAIN: &str =
8368 "threat.enrichments.indicator.url.subdomain";
8369
8370 /// 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".
8371 /// 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".
8372 ///
8373 /// # Examples
8374 ///
8375 /// - `co.uk`
8376 pub const THREAT_ENRICHMENTS_INDICATOR_URL_TOP_LEVEL_DOMAIN: &str =
8377 "threat.enrichments.indicator.url.top_level_domain";
8378
8379 /// Username of the request.
8380 pub const THREAT_ENRICHMENTS_INDICATOR_URL_USERNAME: &str =
8381 "threat.enrichments.indicator.url.username";
8382
8383 /// 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.
8384 ///
8385 /// # Examples
8386 ///
8387 /// - `*.elastic.co`
8388 pub const THREAT_ENRICHMENTS_INDICATOR_X509_ALTERNATIVE_NAMES: &str =
8389 "threat.enrichments.indicator.x509.alternative_names";
8390
8391 /// List of common name (CN) of issuing certificate authority.
8392 ///
8393 /// # Examples
8394 ///
8395 /// - `Example SHA2 High Assurance Server CA`
8396 pub const THREAT_ENRICHMENTS_INDICATOR_X509_ISSUER_COMMON_NAME: &str =
8397 "threat.enrichments.indicator.x509.issuer.common_name";
8398
8399 /// List of country \(C) codes
8400 ///
8401 /// # Examples
8402 ///
8403 /// - `US`
8404 pub const THREAT_ENRICHMENTS_INDICATOR_X509_ISSUER_COUNTRY: &str =
8405 "threat.enrichments.indicator.x509.issuer.country";
8406
8407 /// Distinguished name (DN) of issuing certificate authority.
8408 ///
8409 /// # Examples
8410 ///
8411 /// - `C=US, O=Example Inc, OU=www.example.com, CN=Example SHA2 High Assurance Server CA`
8412 pub const THREAT_ENRICHMENTS_INDICATOR_X509_ISSUER_DISTINGUISHED_NAME: &str =
8413 "threat.enrichments.indicator.x509.issuer.distinguished_name";
8414
8415 /// List of locality names (L)
8416 ///
8417 /// # Examples
8418 ///
8419 /// - `Mountain View`
8420 pub const THREAT_ENRICHMENTS_INDICATOR_X509_ISSUER_LOCALITY: &str =
8421 "threat.enrichments.indicator.x509.issuer.locality";
8422
8423 /// List of organizations (O) of issuing certificate authority.
8424 ///
8425 /// # Examples
8426 ///
8427 /// - `Example Inc`
8428 pub const THREAT_ENRICHMENTS_INDICATOR_X509_ISSUER_ORGANIZATION: &str =
8429 "threat.enrichments.indicator.x509.issuer.organization";
8430
8431 /// List of organizational units (OU) of issuing certificate authority.
8432 ///
8433 /// # Examples
8434 ///
8435 /// - `www.example.com`
8436 pub const THREAT_ENRICHMENTS_INDICATOR_X509_ISSUER_ORGANIZATIONAL_UNIT: &str =
8437 "threat.enrichments.indicator.x509.issuer.organizational_unit";
8438
8439 /// List of state or province names (ST, S, or P)
8440 ///
8441 /// # Examples
8442 ///
8443 /// - `California`
8444 pub const THREAT_ENRICHMENTS_INDICATOR_X509_ISSUER_STATE_OR_PROVINCE: &str =
8445 "threat.enrichments.indicator.x509.issuer.state_or_province";
8446
8447 /// Time at which the certificate is no longer considered valid.
8448 ///
8449 /// # Examples
8450 ///
8451 /// - `2020-07-16T03:15:39Z`
8452 pub const THREAT_ENRICHMENTS_INDICATOR_X509_NOT_AFTER: &str =
8453 "threat.enrichments.indicator.x509.not_after";
8454
8455 /// Time at which the certificate is first considered valid.
8456 ///
8457 /// # Examples
8458 ///
8459 /// - `2019-08-16T01:40:25Z`
8460 pub const THREAT_ENRICHMENTS_INDICATOR_X509_NOT_BEFORE: &str =
8461 "threat.enrichments.indicator.x509.not_before";
8462
8463 /// Algorithm used to generate the public key.
8464 ///
8465 /// # Examples
8466 ///
8467 /// - `RSA`
8468 pub const THREAT_ENRICHMENTS_INDICATOR_X509_PUBLIC_KEY_ALGORITHM: &str =
8469 "threat.enrichments.indicator.x509.public_key_algorithm";
8470
8471 /// The curve used by the elliptic curve public key algorithm. This is algorithm specific.
8472 ///
8473 /// # Examples
8474 ///
8475 /// - `nistp521`
8476 pub const THREAT_ENRICHMENTS_INDICATOR_X509_PUBLIC_KEY_CURVE: &str =
8477 "threat.enrichments.indicator.x509.public_key_curve";
8478
8479 /// Exponent used to derive the public key. This is algorithm specific.
8480 ///
8481 /// # Examples
8482 ///
8483 /// - `65537`
8484 pub const THREAT_ENRICHMENTS_INDICATOR_X509_PUBLIC_KEY_EXPONENT: &str =
8485 "threat.enrichments.indicator.x509.public_key_exponent";
8486
8487 /// The size of the public key space in bits.
8488 ///
8489 /// # Examples
8490 ///
8491 /// - `2048`
8492 pub const THREAT_ENRICHMENTS_INDICATOR_X509_PUBLIC_KEY_SIZE: &str =
8493 "threat.enrichments.indicator.x509.public_key_size";
8494
8495 /// Unique serial number issued by the certificate authority. For consistency, if this value is alphanumeric, it should be formatted without colons and uppercase characters.
8496 ///
8497 /// # Examples
8498 ///
8499 /// - `55FBB9C7DEBF09809D12CCAA`
8500 pub const THREAT_ENRICHMENTS_INDICATOR_X509_SERIAL_NUMBER: &str =
8501 "threat.enrichments.indicator.x509.serial_number";
8502
8503 /// 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.
8504 ///
8505 /// # Examples
8506 ///
8507 /// - `SHA256-RSA`
8508 pub const THREAT_ENRICHMENTS_INDICATOR_X509_SIGNATURE_ALGORITHM: &str =
8509 "threat.enrichments.indicator.x509.signature_algorithm";
8510
8511 /// List of common names (CN) of subject.
8512 ///
8513 /// # Examples
8514 ///
8515 /// - `shared.global.example.net`
8516 pub const THREAT_ENRICHMENTS_INDICATOR_X509_SUBJECT_COMMON_NAME: &str =
8517 "threat.enrichments.indicator.x509.subject.common_name";
8518
8519 /// List of country \(C) code
8520 ///
8521 /// # Examples
8522 ///
8523 /// - `US`
8524 pub const THREAT_ENRICHMENTS_INDICATOR_X509_SUBJECT_COUNTRY: &str =
8525 "threat.enrichments.indicator.x509.subject.country";
8526
8527 /// Distinguished name (DN) of the certificate subject entity.
8528 ///
8529 /// # Examples
8530 ///
8531 /// - `C=US, ST=California, L=San Francisco, O=Example, Inc., CN=shared.global.example.net`
8532 pub const THREAT_ENRICHMENTS_INDICATOR_X509_SUBJECT_DISTINGUISHED_NAME: &str =
8533 "threat.enrichments.indicator.x509.subject.distinguished_name";
8534
8535 /// List of locality names (L)
8536 ///
8537 /// # Examples
8538 ///
8539 /// - `San Francisco`
8540 pub const THREAT_ENRICHMENTS_INDICATOR_X509_SUBJECT_LOCALITY: &str =
8541 "threat.enrichments.indicator.x509.subject.locality";
8542
8543 /// List of organizations (O) of subject.
8544 ///
8545 /// # Examples
8546 ///
8547 /// - `Example, Inc.`
8548 pub const THREAT_ENRICHMENTS_INDICATOR_X509_SUBJECT_ORGANIZATION: &str =
8549 "threat.enrichments.indicator.x509.subject.organization";
8550
8551 /// List of organizational units (OU) of subject.
8552 pub const THREAT_ENRICHMENTS_INDICATOR_X509_SUBJECT_ORGANIZATIONAL_UNIT: &str =
8553 "threat.enrichments.indicator.x509.subject.organizational_unit";
8554
8555 /// List of state or province names (ST, S, or P)
8556 ///
8557 /// # Examples
8558 ///
8559 /// - `California`
8560 pub const THREAT_ENRICHMENTS_INDICATOR_X509_SUBJECT_STATE_OR_PROVINCE: &str =
8561 "threat.enrichments.indicator.x509.subject.state_or_province";
8562
8563 /// Version of x509 format.
8564 ///
8565 /// # Examples
8566 ///
8567 /// - `3`
8568 pub const THREAT_ENRICHMENTS_INDICATOR_X509_VERSION_NUMBER: &str =
8569 "threat.enrichments.indicator.x509.version_number";
8570
8571 /// Identifies the atomic indicator value that matched a local environment endpoint or network event.
8572 ///
8573 /// # Examples
8574 ///
8575 /// - `bad-domain.com`
8576 pub const THREAT_ENRICHMENTS_MATCHED_ATOMIC: &str = "threat.enrichments.matched.atomic";
8577
8578 /// Identifies the field of the atomic indicator that matched a local environment endpoint or network event.
8579 ///
8580 /// # Examples
8581 ///
8582 /// - `file.hash.sha256`
8583 pub const THREAT_ENRICHMENTS_MATCHED_FIELD: &str = "threat.enrichments.matched.field";
8584
8585 /// Identifies the _id of the indicator document enriching the event.
8586 ///
8587 /// # Examples
8588 ///
8589 /// - `ff93aee5-86a1-4a61-b0e6-0cdc313d01b5`
8590 pub const THREAT_ENRICHMENTS_MATCHED_ID: &str = "threat.enrichments.matched.id";
8591
8592 /// Identifies the _index of the indicator document enriching the event.
8593 ///
8594 /// # Examples
8595 ///
8596 /// - `filebeat-8.0.0-2021.05.23-000011`
8597 pub const THREAT_ENRICHMENTS_MATCHED_INDEX: &str = "threat.enrichments.matched.index";
8598
8599 /// Indicates when the indicator match was generated
8600 ///
8601 /// # Examples
8602 ///
8603 /// - `2021-10-05T17:00:58.326Z`
8604 pub const THREAT_ENRICHMENTS_MATCHED_OCCURRED: &str = "threat.enrichments.matched.occurred";
8605
8606 /// Identifies the type of match that caused the event to be enriched with the given indicator
8607 ///
8608 /// # Examples
8609 ///
8610 /// - `indicator_match_rule`
8611 pub const THREAT_ENRICHMENTS_MATCHED_TYPE: &str = "threat.enrichments.matched.type";
8612
8613 /// The saved object ID of the dashboard belonging to the threat feed for displaying dashboard links to threat feeds in Kibana.
8614 ///
8615 /// # Examples
8616 ///
8617 /// - `5ba16340-72e6-11eb-a3e3-b3cc7c78a70f`
8618 pub const THREAT_FEED_DASHBOARD_ID: &str = "threat.feed.dashboard_id";
8619
8620 /// Description of the threat feed in a UI friendly format.
8621 ///
8622 /// # Examples
8623 ///
8624 /// - `Threat feed from the AlienVault Open Threat eXchange network.`
8625 pub const THREAT_FEED_DESCRIPTION: &str = "threat.feed.description";
8626
8627 /// The name of the threat feed in UI friendly format.
8628 ///
8629 /// # Examples
8630 ///
8631 /// - `AlienVault OTX`
8632 pub const THREAT_FEED_NAME: &str = "threat.feed.name";
8633
8634 /// Reference information for the threat feed in a UI friendly format.
8635 ///
8636 /// # Examples
8637 ///
8638 /// - `https://otx.alienvault.com`
8639 pub const THREAT_FEED_REFERENCE: &str = "threat.feed.reference";
8640
8641 /// 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.
8642 ///
8643 /// # Examples
8644 ///
8645 /// - `MITRE ATT&CK`
8646 pub const THREAT_FRAMEWORK: &str = "threat.framework";
8647
8648 /// The alias(es) of the group for a set of related intrusion activity that are tracked by a common name in the security community.
8649 /// While not required, you can use a MITRE ATT&CK® group alias(es).
8650 ///
8651 /// # Examples
8652 ///
8653 /// - `[ "Magecart Group 6" ]`
8654 pub const THREAT_GROUP_ALIAS: &str = "threat.group.alias";
8655
8656 /// The id of the group for a set of related intrusion activity that are tracked by a common name in the security community.
8657 /// While not required, you can use a MITRE ATT&CK® group id.
8658 ///
8659 /// # Examples
8660 ///
8661 /// - `G0037`
8662 pub const THREAT_GROUP_ID: &str = "threat.group.id";
8663
8664 /// The name of the group for a set of related intrusion activity that are tracked by a common name in the security community.
8665 /// While not required, you can use a MITRE ATT&CK® group name.
8666 ///
8667 /// # Examples
8668 ///
8669 /// - `FIN6`
8670 pub const THREAT_GROUP_NAME: &str = "threat.group.name";
8671
8672 /// The reference URL of the group for a set of related intrusion activity that are tracked by a common name in the security community.
8673 /// While not required, you can use a MITRE ATT&CK® group reference URL.
8674 ///
8675 /// # Examples
8676 ///
8677 /// - `https://attack.mitre.org/groups/G0037/`
8678 pub const THREAT_GROUP_REFERENCE: &str = "threat.group.reference";
8679
8680 /// Unique number allocated to the autonomous system. The autonomous system number (ASN) uniquely identifies each network on the Internet.
8681 ///
8682 /// # Examples
8683 ///
8684 /// - `15169`
8685 pub const THREAT_INDICATOR_AS_NUMBER: &str = "threat.indicator.as.number";
8686
8687 /// Organization name.
8688 ///
8689 /// # Examples
8690 ///
8691 /// - `Google LLC`
8692 pub const THREAT_INDICATOR_AS_ORGANIZATION_NAME: &str = "threat.indicator.as.organization.name";
8693
8694 /// Identifies the vendor-neutral confidence rating using the None/Low/Medium/High scale defined in Appendix A of the STIX 2.1 framework. Vendor-specific confidence scales may be added as custom fields.
8695 ///
8696 /// # Examples
8697 ///
8698 /// - `Medium`
8699 pub const THREAT_INDICATOR_CONFIDENCE: &str = "threat.indicator.confidence";
8700
8701 /// Describes the type of action conducted by the threat.
8702 ///
8703 /// # Examples
8704 ///
8705 /// - `IP x.x.x.x was observed delivering the Angler EK.`
8706 pub const THREAT_INDICATOR_DESCRIPTION: &str = "threat.indicator.description";
8707
8708 /// Identifies a threat indicator as an email address (irrespective of direction).
8709 ///
8710 /// # Examples
8711 ///
8712 /// - `phish@example.com`
8713 pub const THREAT_INDICATOR_EMAIL_ADDRESS: &str = "threat.indicator.email.address";
8714
8715 /// Last time the file was accessed.
8716 /// Note that not all filesystems keep track of access time.
8717 pub const THREAT_INDICATOR_FILE_ACCESSED: &str = "threat.indicator.file.accessed";
8718
8719 /// Array of file attributes.
8720 /// Attributes names will vary by platform. Here's a non-exhaustive list of values that are expected in this field: archive, compressed, directory, encrypted, execute, hidden, read, readonly, system, write.
8721 ///
8722 /// # Examples
8723 ///
8724 /// - `["readonly", "system"]`
8725 pub const THREAT_INDICATOR_FILE_ATTRIBUTES: &str = "threat.indicator.file.attributes";
8726
8727 /// The hashing algorithm used to sign the process.
8728 /// This value can distinguish signatures when a file is signed multiple times by the same signer but with a different digest algorithm.
8729 ///
8730 /// # Examples
8731 ///
8732 /// - `sha256`
8733 pub const THREAT_INDICATOR_FILE_CODE_SIGNATURE_DIGEST_ALGORITHM: &str =
8734 "threat.indicator.file.code_signature.digest_algorithm";
8735
8736 /// Boolean to capture if a signature is present.
8737 ///
8738 /// # Examples
8739 ///
8740 /// - `true`
8741 pub const THREAT_INDICATOR_FILE_CODE_SIGNATURE_EXISTS: &str =
8742 "threat.indicator.file.code_signature.exists";
8743
8744 /// The identifier used to sign the process.
8745 /// This is used to identify the application manufactured by a software vendor. The field is relevant to Apple *OS only.
8746 ///
8747 /// # Examples
8748 ///
8749 /// - `com.apple.xpc.proxy`
8750 pub const THREAT_INDICATOR_FILE_CODE_SIGNATURE_SIGNING_ID: &str =
8751 "threat.indicator.file.code_signature.signing_id";
8752
8753 /// Additional information about the certificate status.
8754 /// 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.
8755 ///
8756 /// # Examples
8757 ///
8758 /// - `ERROR_UNTRUSTED_ROOT`
8759 pub const THREAT_INDICATOR_FILE_CODE_SIGNATURE_STATUS: &str =
8760 "threat.indicator.file.code_signature.status";
8761
8762 /// Subject name of the code signer
8763 ///
8764 /// # Examples
8765 ///
8766 /// - `Microsoft Corporation`
8767 pub const THREAT_INDICATOR_FILE_CODE_SIGNATURE_SUBJECT_NAME: &str =
8768 "threat.indicator.file.code_signature.subject_name";
8769
8770 /// The team identifier used to sign the process.
8771 /// This is used to identify the team or vendor of a software product. The field is relevant to Apple *OS only.
8772 ///
8773 /// # Examples
8774 ///
8775 /// - `EQHXZ8M8AV`
8776 pub const THREAT_INDICATOR_FILE_CODE_SIGNATURE_TEAM_ID: &str =
8777 "threat.indicator.file.code_signature.team_id";
8778
8779 /// Date and time when the code signature was generated and signed.
8780 ///
8781 /// # Examples
8782 ///
8783 /// - `2021-01-01T12:10:30Z`
8784 pub const THREAT_INDICATOR_FILE_CODE_SIGNATURE_TIMESTAMP: &str =
8785 "threat.indicator.file.code_signature.timestamp";
8786
8787 /// Stores the trust status of the certificate chain.
8788 /// Validating the trust of the certificate chain may be complicated, and this field should only be populated by tools that actively check the status.
8789 ///
8790 /// # Examples
8791 ///
8792 /// - `true`
8793 pub const THREAT_INDICATOR_FILE_CODE_SIGNATURE_TRUSTED: &str =
8794 "threat.indicator.file.code_signature.trusted";
8795
8796 /// Boolean to capture if the digital signature is verified against the binary content.
8797 /// Leave unpopulated if a certificate was unchecked.
8798 ///
8799 /// # Examples
8800 ///
8801 /// - `true`
8802 pub const THREAT_INDICATOR_FILE_CODE_SIGNATURE_VALID: &str =
8803 "threat.indicator.file.code_signature.valid";
8804
8805 /// File creation time.
8806 /// Note that not all filesystems store the creation time.
8807 pub const THREAT_INDICATOR_FILE_CREATED: &str = "threat.indicator.file.created";
8808
8809 /// Last time the file attributes or metadata changed.
8810 /// Note that changes to the file content will update `mtime`. This implies `ctime` will be adjusted at the same time, since `mtime` is an attribute of the file.
8811 pub const THREAT_INDICATOR_FILE_CTIME: &str = "threat.indicator.file.ctime";
8812
8813 /// Device that is the source of the file.
8814 ///
8815 /// # Examples
8816 ///
8817 /// - `sda`
8818 pub const THREAT_INDICATOR_FILE_DEVICE: &str = "threat.indicator.file.device";
8819
8820 /// Directory where the file is located. It should include the drive letter, when appropriate.
8821 ///
8822 /// # Examples
8823 ///
8824 /// - `/home/alice`
8825 pub const THREAT_INDICATOR_FILE_DIRECTORY: &str = "threat.indicator.file.directory";
8826
8827 /// Drive letter where the file is located. This field is only relevant on Windows.
8828 /// The value should be uppercase, and not include the colon.
8829 ///
8830 /// # Examples
8831 ///
8832 /// - `C`
8833 pub const THREAT_INDICATOR_FILE_DRIVE_LETTER: &str = "threat.indicator.file.drive_letter";
8834
8835 /// Machine architecture of the ELF file.
8836 ///
8837 /// # Examples
8838 ///
8839 /// - `x86-64`
8840 pub const THREAT_INDICATOR_FILE_ELF_ARCHITECTURE: &str =
8841 "threat.indicator.file.elf.architecture";
8842
8843 /// Byte sequence of ELF file.
8844 ///
8845 /// # Examples
8846 ///
8847 /// - `Little Endian`
8848 pub const THREAT_INDICATOR_FILE_ELF_BYTE_ORDER: &str = "threat.indicator.file.elf.byte_order";
8849
8850 /// CPU type of the ELF file.
8851 ///
8852 /// # Examples
8853 ///
8854 /// - `Intel`
8855 pub const THREAT_INDICATOR_FILE_ELF_CPU_TYPE: &str = "threat.indicator.file.elf.cpu_type";
8856
8857 /// Extracted when possible from the file's metadata. Indicates when it was built or compiled. It can also be faked by malware creators.
8858 pub const THREAT_INDICATOR_FILE_ELF_CREATION_DATE: &str =
8859 "threat.indicator.file.elf.creation_date";
8860
8861 /// List of exported element names and types.
8862 pub const THREAT_INDICATOR_FILE_ELF_EXPORTS: &str = "threat.indicator.file.elf.exports";
8863
8864 /// A hash of the Go language imports in an ELF file excluding standard library imports. An 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.
8865 /// The algorithm used to calculate the Go symbol hash and a reference implementation are available [here](https://github.com/elastic/toutoumomoma).
8866 ///
8867 /// # Examples
8868 ///
8869 /// - `10bddcb4cee42080f76c88d9ff964491`
8870 pub const THREAT_INDICATOR_FILE_ELF_GO_IMPORT_HASH: &str =
8871 "threat.indicator.file.elf.go_import_hash";
8872
8873 /// List of imported Go language element names and types.
8874 pub const THREAT_INDICATOR_FILE_ELF_GO_IMPORTS: &str = "threat.indicator.file.elf.go_imports";
8875
8876 /// Shannon entropy calculation from the list of Go imports.
8877 pub const THREAT_INDICATOR_FILE_ELF_GO_IMPORTS_NAMES_ENTROPY: &str =
8878 "threat.indicator.file.elf.go_imports_names_entropy";
8879
8880 /// Variance for Shannon entropy calculation from the list of Go imports.
8881 pub const THREAT_INDICATOR_FILE_ELF_GO_IMPORTS_NAMES_VAR_ENTROPY: &str =
8882 "threat.indicator.file.elf.go_imports_names_var_entropy";
8883
8884 /// Set to true if the file is a Go executable that has had its symbols stripped or obfuscated and false if an unobfuscated Go executable.
8885 pub const THREAT_INDICATOR_FILE_ELF_GO_STRIPPED: &str = "threat.indicator.file.elf.go_stripped";
8886
8887 /// Version of the ELF Application Binary Interface (ABI).
8888 pub const THREAT_INDICATOR_FILE_ELF_HEADER_ABI_VERSION: &str =
8889 "threat.indicator.file.elf.header.abi_version";
8890
8891 /// Header class of the ELF file.
8892 pub const THREAT_INDICATOR_FILE_ELF_HEADER_CLASS: &str =
8893 "threat.indicator.file.elf.header.class";
8894
8895 /// Data table of the ELF header.
8896 pub const THREAT_INDICATOR_FILE_ELF_HEADER_DATA: &str = "threat.indicator.file.elf.header.data";
8897
8898 /// Header entrypoint of the ELF file.
8899 pub const THREAT_INDICATOR_FILE_ELF_HEADER_ENTRYPOINT: &str =
8900 "threat.indicator.file.elf.header.entrypoint";
8901
8902 /// "0x1" for original ELF files.
8903 pub const THREAT_INDICATOR_FILE_ELF_HEADER_OBJECT_VERSION: &str =
8904 "threat.indicator.file.elf.header.object_version";
8905
8906 /// Application Binary Interface (ABI) of the Linux OS.
8907 pub const THREAT_INDICATOR_FILE_ELF_HEADER_OS_ABI: &str =
8908 "threat.indicator.file.elf.header.os_abi";
8909
8910 /// Header type of the ELF file.
8911 pub const THREAT_INDICATOR_FILE_ELF_HEADER_TYPE: &str = "threat.indicator.file.elf.header.type";
8912
8913 /// Version of the ELF header.
8914 pub const THREAT_INDICATOR_FILE_ELF_HEADER_VERSION: &str =
8915 "threat.indicator.file.elf.header.version";
8916
8917 /// A hash of the imports in an ELF file. An 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.
8918 /// This is an ELF implementation of the Windows PE imphash.
8919 ///
8920 /// # Examples
8921 ///
8922 /// - `d41d8cd98f00b204e9800998ecf8427e`
8923 pub const THREAT_INDICATOR_FILE_ELF_IMPORT_HASH: &str = "threat.indicator.file.elf.import_hash";
8924
8925 /// List of imported element names and types.
8926 pub const THREAT_INDICATOR_FILE_ELF_IMPORTS: &str = "threat.indicator.file.elf.imports";
8927
8928 /// Shannon entropy calculation from the list of imported element names and types.
8929 pub const THREAT_INDICATOR_FILE_ELF_IMPORTS_NAMES_ENTROPY: &str =
8930 "threat.indicator.file.elf.imports_names_entropy";
8931
8932 /// Variance for Shannon entropy calculation from the list of imported element names and types.
8933 pub const THREAT_INDICATOR_FILE_ELF_IMPORTS_NAMES_VAR_ENTROPY: &str =
8934 "threat.indicator.file.elf.imports_names_var_entropy";
8935
8936 /// An array containing an object for each section of the ELF file.
8937 /// The keys that should be present in these objects are defined by sub-fields underneath `elf.sections.*`.
8938 pub const THREAT_INDICATOR_FILE_ELF_SECTIONS: &str = "threat.indicator.file.elf.sections";
8939
8940 /// Chi-square probability distribution of the section.
8941 pub const THREAT_INDICATOR_FILE_ELF_SECTIONS_CHI2: &str =
8942 "threat.indicator.file.elf.sections.chi2";
8943
8944 /// Shannon entropy calculation from the section.
8945 pub const THREAT_INDICATOR_FILE_ELF_SECTIONS_ENTROPY: &str =
8946 "threat.indicator.file.elf.sections.entropy";
8947
8948 /// ELF Section List flags.
8949 pub const THREAT_INDICATOR_FILE_ELF_SECTIONS_FLAGS: &str =
8950 "threat.indicator.file.elf.sections.flags";
8951
8952 /// ELF Section List name.
8953 pub const THREAT_INDICATOR_FILE_ELF_SECTIONS_NAME: &str =
8954 "threat.indicator.file.elf.sections.name";
8955
8956 /// ELF Section List offset.
8957 pub const THREAT_INDICATOR_FILE_ELF_SECTIONS_PHYSICAL_OFFSET: &str =
8958 "threat.indicator.file.elf.sections.physical_offset";
8959
8960 /// ELF Section List physical size.
8961 pub const THREAT_INDICATOR_FILE_ELF_SECTIONS_PHYSICAL_SIZE: &str =
8962 "threat.indicator.file.elf.sections.physical_size";
8963
8964 /// ELF Section List type.
8965 pub const THREAT_INDICATOR_FILE_ELF_SECTIONS_TYPE: &str =
8966 "threat.indicator.file.elf.sections.type";
8967
8968 /// Variance for Shannon entropy calculation from the section.
8969 pub const THREAT_INDICATOR_FILE_ELF_SECTIONS_VAR_ENTROPY: &str =
8970 "threat.indicator.file.elf.sections.var_entropy";
8971
8972 /// ELF Section List virtual address.
8973 pub const THREAT_INDICATOR_FILE_ELF_SECTIONS_VIRTUAL_ADDRESS: &str =
8974 "threat.indicator.file.elf.sections.virtual_address";
8975
8976 /// ELF Section List virtual size.
8977 pub const THREAT_INDICATOR_FILE_ELF_SECTIONS_VIRTUAL_SIZE: &str =
8978 "threat.indicator.file.elf.sections.virtual_size";
8979
8980 /// An array containing an object for each segment of the ELF file.
8981 /// The keys that should be present in these objects are defined by sub-fields underneath `elf.segments.*`.
8982 pub const THREAT_INDICATOR_FILE_ELF_SEGMENTS: &str = "threat.indicator.file.elf.segments";
8983
8984 /// ELF object segment sections.
8985 pub const THREAT_INDICATOR_FILE_ELF_SEGMENTS_SECTIONS: &str =
8986 "threat.indicator.file.elf.segments.sections";
8987
8988 /// ELF object segment type.
8989 pub const THREAT_INDICATOR_FILE_ELF_SEGMENTS_TYPE: &str =
8990 "threat.indicator.file.elf.segments.type";
8991
8992 /// List of shared libraries used by this ELF object.
8993 pub const THREAT_INDICATOR_FILE_ELF_SHARED_LIBRARIES: &str =
8994 "threat.indicator.file.elf.shared_libraries";
8995
8996 /// telfhash symbol hash for ELF file.
8997 pub const THREAT_INDICATOR_FILE_ELF_TELFHASH: &str = "threat.indicator.file.elf.telfhash";
8998
8999 /// File extension, excluding the leading dot.
9000 /// Note that when the file name has multiple extensions (example.tar.gz), only the last one should be captured ("gz", not "tar.gz").
9001 ///
9002 /// # Examples
9003 ///
9004 /// - `png`
9005 pub const THREAT_INDICATOR_FILE_EXTENSION: &str = "threat.indicator.file.extension";
9006
9007 /// A fork is additional data associated with a filesystem object.
9008 /// On Linux, a resource fork is used to store additional data with a filesystem object. A file always has at least one fork for the data portion, and additional forks may exist.
9009 /// On NTFS, this is analogous to an Alternate Data Stream (ADS), and the default data stream for a file is just called $DATA. Zone.Identifier is commonly used by Windows to track contents downloaded from the Internet. An ADS is typically of the form: `C:\path\to\filename.extension:some_fork_name`, and `some_fork_name` is the value that should populate `fork_name`. `filename.extension` should populate `file.name`, and `extension` should populate `file.extension`. The full path, `file.path`, will include the fork name.
9010 ///
9011 /// # Examples
9012 ///
9013 /// - `Zone.Identifer`
9014 pub const THREAT_INDICATOR_FILE_FORK_NAME: &str = "threat.indicator.file.fork_name";
9015
9016 /// Primary group ID (GID) of the file.
9017 ///
9018 /// # Examples
9019 ///
9020 /// - `1001`
9021 pub const THREAT_INDICATOR_FILE_GID: &str = "threat.indicator.file.gid";
9022
9023 /// Primary group name of the file.
9024 ///
9025 /// # Examples
9026 ///
9027 /// - `alice`
9028 pub const THREAT_INDICATOR_FILE_GROUP: &str = "threat.indicator.file.group";
9029
9030 /// MD5 hash.
9031 pub const THREAT_INDICATOR_FILE_HASH_MD5: &str = "threat.indicator.file.hash.md5";
9032
9033 /// SHA1 hash.
9034 pub const THREAT_INDICATOR_FILE_HASH_SHA1: &str = "threat.indicator.file.hash.sha1";
9035
9036 /// SHA256 hash.
9037 pub const THREAT_INDICATOR_FILE_HASH_SHA256: &str = "threat.indicator.file.hash.sha256";
9038
9039 /// SHA384 hash.
9040 pub const THREAT_INDICATOR_FILE_HASH_SHA384: &str = "threat.indicator.file.hash.sha384";
9041
9042 /// SHA512 hash.
9043 pub const THREAT_INDICATOR_FILE_HASH_SHA512: &str = "threat.indicator.file.hash.sha512";
9044
9045 /// SSDEEP hash.
9046 pub const THREAT_INDICATOR_FILE_HASH_SSDEEP: &str = "threat.indicator.file.hash.ssdeep";
9047
9048 /// TLSH hash.
9049 pub const THREAT_INDICATOR_FILE_HASH_TLSH: &str = "threat.indicator.file.hash.tlsh";
9050
9051 /// Inode representing the file in the filesystem.
9052 ///
9053 /// # Examples
9054 ///
9055 /// - `256383`
9056 pub const THREAT_INDICATOR_FILE_INODE: &str = "threat.indicator.file.inode";
9057
9058 /// MIME type should identify the format of the file or stream of bytes using https://www.iana.org/assignments/media-types/media-types.xhtml[IANA official types], where possible. When more than one type is applicable, the most specific type should be used.
9059 pub const THREAT_INDICATOR_FILE_MIME_TYPE: &str = "threat.indicator.file.mime_type";
9060
9061 /// Mode of the file in octal representation.
9062 ///
9063 /// # Examples
9064 ///
9065 /// - `0640`
9066 pub const THREAT_INDICATOR_FILE_MODE: &str = "threat.indicator.file.mode";
9067
9068 /// Last time the file content was modified.
9069 pub const THREAT_INDICATOR_FILE_MTIME: &str = "threat.indicator.file.mtime";
9070
9071 /// Name of the file including the extension, without the directory.
9072 ///
9073 /// # Examples
9074 ///
9075 /// - `example.png`
9076 pub const THREAT_INDICATOR_FILE_NAME: &str = "threat.indicator.file.name";
9077
9078 /// File owner's username.
9079 ///
9080 /// # Examples
9081 ///
9082 /// - `alice`
9083 pub const THREAT_INDICATOR_FILE_OWNER: &str = "threat.indicator.file.owner";
9084
9085 /// Full path to the file, including the file name. It should include the drive letter, when appropriate.
9086 ///
9087 /// # Examples
9088 ///
9089 /// - `/home/alice/example.png`
9090 pub const THREAT_INDICATOR_FILE_PATH: &str = "threat.indicator.file.path";
9091
9092 /// CPU architecture target for the file.
9093 ///
9094 /// # Examples
9095 ///
9096 /// - `x64`
9097 pub const THREAT_INDICATOR_FILE_PE_ARCHITECTURE: &str = "threat.indicator.file.pe.architecture";
9098
9099 /// Internal company name of the file, provided at compile-time.
9100 ///
9101 /// # Examples
9102 ///
9103 /// - `Microsoft Corporation`
9104 pub const THREAT_INDICATOR_FILE_PE_COMPANY: &str = "threat.indicator.file.pe.company";
9105
9106 /// Internal description of the file, provided at compile-time.
9107 ///
9108 /// # Examples
9109 ///
9110 /// - `Paint`
9111 pub const THREAT_INDICATOR_FILE_PE_DESCRIPTION: &str = "threat.indicator.file.pe.description";
9112
9113 /// Internal version of the file, provided at compile-time.
9114 ///
9115 /// # Examples
9116 ///
9117 /// - `6.3.9600.17415`
9118 pub const THREAT_INDICATOR_FILE_PE_FILE_VERSION: &str = "threat.indicator.file.pe.file_version";
9119
9120 /// A hash of the Go language imports in a PE file excluding standard library imports. An 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.
9121 /// The algorithm used to calculate the Go symbol hash and a reference implementation are available [here](https://github.com/elastic/toutoumomoma).
9122 ///
9123 /// # Examples
9124 ///
9125 /// - `10bddcb4cee42080f76c88d9ff964491`
9126 pub const THREAT_INDICATOR_FILE_PE_GO_IMPORT_HASH: &str =
9127 "threat.indicator.file.pe.go_import_hash";
9128
9129 /// List of imported Go language element names and types.
9130 pub const THREAT_INDICATOR_FILE_PE_GO_IMPORTS: &str = "threat.indicator.file.pe.go_imports";
9131
9132 /// Shannon entropy calculation from the list of Go imports.
9133 pub const THREAT_INDICATOR_FILE_PE_GO_IMPORTS_NAMES_ENTROPY: &str =
9134 "threat.indicator.file.pe.go_imports_names_entropy";
9135
9136 /// Variance for Shannon entropy calculation from the list of Go imports.
9137 pub const THREAT_INDICATOR_FILE_PE_GO_IMPORTS_NAMES_VAR_ENTROPY: &str =
9138 "threat.indicator.file.pe.go_imports_names_var_entropy";
9139
9140 /// Set to true if the file is a Go executable that has had its symbols stripped or obfuscated and false if an unobfuscated Go executable.
9141 pub const THREAT_INDICATOR_FILE_PE_GO_STRIPPED: &str = "threat.indicator.file.pe.go_stripped";
9142
9143 /// 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.
9144 /// Learn more at https://www.fireeye.com/blog/threat-research/2014/01/tracking-malware-import-hashing.html.
9145 ///
9146 /// # Examples
9147 ///
9148 /// - `0c6803c4e922103c4dca5963aad36ddf`
9149 pub const THREAT_INDICATOR_FILE_PE_IMPHASH: &str = "threat.indicator.file.pe.imphash";
9150
9151 /// A hash of the imports in a PE file. An 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.
9152 /// This is a synonym for imphash.
9153 ///
9154 /// # Examples
9155 ///
9156 /// - `d41d8cd98f00b204e9800998ecf8427e`
9157 pub const THREAT_INDICATOR_FILE_PE_IMPORT_HASH: &str = "threat.indicator.file.pe.import_hash";
9158
9159 /// List of imported element names and types.
9160 pub const THREAT_INDICATOR_FILE_PE_IMPORTS: &str = "threat.indicator.file.pe.imports";
9161
9162 /// Shannon entropy calculation from the list of imported element names and types.
9163 pub const THREAT_INDICATOR_FILE_PE_IMPORTS_NAMES_ENTROPY: &str =
9164 "threat.indicator.file.pe.imports_names_entropy";
9165
9166 /// Variance for Shannon entropy calculation from the list of imported element names and types.
9167 pub const THREAT_INDICATOR_FILE_PE_IMPORTS_NAMES_VAR_ENTROPY: &str =
9168 "threat.indicator.file.pe.imports_names_var_entropy";
9169
9170 /// Internal name of the file, provided at compile-time.
9171 ///
9172 /// # Examples
9173 ///
9174 /// - `MSPAINT.EXE`
9175 pub const THREAT_INDICATOR_FILE_PE_ORIGINAL_FILE_NAME: &str =
9176 "threat.indicator.file.pe.original_file_name";
9177
9178 /// A hash of the PE header and data from one or more PE sections. An pehash can be used to cluster files by transforming structural information about a file into a hash value.
9179 /// Learn more at https://www.usenix.org/legacy/events/leet09/tech/full_papers/wicherski/wicherski_html/index.html.
9180 ///
9181 /// # Examples
9182 ///
9183 /// - `73ff189b63cd6be375a7ff25179a38d347651975`
9184 pub const THREAT_INDICATOR_FILE_PE_PEHASH: &str = "threat.indicator.file.pe.pehash";
9185
9186 /// Internal product name of the file, provided at compile-time.
9187 ///
9188 /// # Examples
9189 ///
9190 /// - `Microsoft® Windows® Operating System`
9191 pub const THREAT_INDICATOR_FILE_PE_PRODUCT: &str = "threat.indicator.file.pe.product";
9192
9193 /// An array containing an object for each section of the PE file.
9194 /// The keys that should be present in these objects are defined by sub-fields underneath `pe.sections.*`.
9195 pub const THREAT_INDICATOR_FILE_PE_SECTIONS: &str = "threat.indicator.file.pe.sections";
9196
9197 /// Shannon entropy calculation from the section.
9198 pub const THREAT_INDICATOR_FILE_PE_SECTIONS_ENTROPY: &str =
9199 "threat.indicator.file.pe.sections.entropy";
9200
9201 /// PE Section List name.
9202 pub const THREAT_INDICATOR_FILE_PE_SECTIONS_NAME: &str =
9203 "threat.indicator.file.pe.sections.name";
9204
9205 /// PE Section List physical size.
9206 pub const THREAT_INDICATOR_FILE_PE_SECTIONS_PHYSICAL_SIZE: &str =
9207 "threat.indicator.file.pe.sections.physical_size";
9208
9209 /// Variance for Shannon entropy calculation from the section.
9210 pub const THREAT_INDICATOR_FILE_PE_SECTIONS_VAR_ENTROPY: &str =
9211 "threat.indicator.file.pe.sections.var_entropy";
9212
9213 /// PE Section List virtual size. This is always the same as `physical_size`.
9214 pub const THREAT_INDICATOR_FILE_PE_SECTIONS_VIRTUAL_SIZE: &str =
9215 "threat.indicator.file.pe.sections.virtual_size";
9216
9217 /// File size in bytes.
9218 /// Only relevant when `file.type` is "file".
9219 ///
9220 /// # Examples
9221 ///
9222 /// - `16384`
9223 pub const THREAT_INDICATOR_FILE_SIZE: &str = "threat.indicator.file.size";
9224
9225 /// Target path for symlinks.
9226 pub const THREAT_INDICATOR_FILE_TARGET_PATH: &str = "threat.indicator.file.target_path";
9227
9228 /// File type (file, dir, or symlink).
9229 ///
9230 /// # Examples
9231 ///
9232 /// - `file`
9233 pub const THREAT_INDICATOR_FILE_TYPE: &str = "threat.indicator.file.type";
9234
9235 /// The user ID (UID) or security identifier (SID) of the file owner.
9236 ///
9237 /// # Examples
9238 ///
9239 /// - `1001`
9240 pub const THREAT_INDICATOR_FILE_UID: &str = "threat.indicator.file.uid";
9241
9242 /// 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.
9243 ///
9244 /// # Examples
9245 ///
9246 /// - `*.elastic.co`
9247 pub const THREAT_INDICATOR_FILE_X509_ALTERNATIVE_NAMES: &str =
9248 "threat.indicator.file.x509.alternative_names";
9249
9250 /// List of common name (CN) of issuing certificate authority.
9251 ///
9252 /// # Examples
9253 ///
9254 /// - `Example SHA2 High Assurance Server CA`
9255 pub const THREAT_INDICATOR_FILE_X509_ISSUER_COMMON_NAME: &str =
9256 "threat.indicator.file.x509.issuer.common_name";
9257
9258 /// List of country \(C) codes
9259 ///
9260 /// # Examples
9261 ///
9262 /// - `US`
9263 pub const THREAT_INDICATOR_FILE_X509_ISSUER_COUNTRY: &str =
9264 "threat.indicator.file.x509.issuer.country";
9265
9266 /// Distinguished name (DN) of issuing certificate authority.
9267 ///
9268 /// # Examples
9269 ///
9270 /// - `C=US, O=Example Inc, OU=www.example.com, CN=Example SHA2 High Assurance Server CA`
9271 pub const THREAT_INDICATOR_FILE_X509_ISSUER_DISTINGUISHED_NAME: &str =
9272 "threat.indicator.file.x509.issuer.distinguished_name";
9273
9274 /// List of locality names (L)
9275 ///
9276 /// # Examples
9277 ///
9278 /// - `Mountain View`
9279 pub const THREAT_INDICATOR_FILE_X509_ISSUER_LOCALITY: &str =
9280 "threat.indicator.file.x509.issuer.locality";
9281
9282 /// List of organizations (O) of issuing certificate authority.
9283 ///
9284 /// # Examples
9285 ///
9286 /// - `Example Inc`
9287 pub const THREAT_INDICATOR_FILE_X509_ISSUER_ORGANIZATION: &str =
9288 "threat.indicator.file.x509.issuer.organization";
9289
9290 /// List of organizational units (OU) of issuing certificate authority.
9291 ///
9292 /// # Examples
9293 ///
9294 /// - `www.example.com`
9295 pub const THREAT_INDICATOR_FILE_X509_ISSUER_ORGANIZATIONAL_UNIT: &str =
9296 "threat.indicator.file.x509.issuer.organizational_unit";
9297
9298 /// List of state or province names (ST, S, or P)
9299 ///
9300 /// # Examples
9301 ///
9302 /// - `California`
9303 pub const THREAT_INDICATOR_FILE_X509_ISSUER_STATE_OR_PROVINCE: &str =
9304 "threat.indicator.file.x509.issuer.state_or_province";
9305
9306 /// Time at which the certificate is no longer considered valid.
9307 ///
9308 /// # Examples
9309 ///
9310 /// - `2020-07-16T03:15:39Z`
9311 pub const THREAT_INDICATOR_FILE_X509_NOT_AFTER: &str = "threat.indicator.file.x509.not_after";
9312
9313 /// Time at which the certificate is first considered valid.
9314 ///
9315 /// # Examples
9316 ///
9317 /// - `2019-08-16T01:40:25Z`
9318 pub const THREAT_INDICATOR_FILE_X509_NOT_BEFORE: &str = "threat.indicator.file.x509.not_before";
9319
9320 /// Algorithm used to generate the public key.
9321 ///
9322 /// # Examples
9323 ///
9324 /// - `RSA`
9325 pub const THREAT_INDICATOR_FILE_X509_PUBLIC_KEY_ALGORITHM: &str =
9326 "threat.indicator.file.x509.public_key_algorithm";
9327
9328 /// The curve used by the elliptic curve public key algorithm. This is algorithm specific.
9329 ///
9330 /// # Examples
9331 ///
9332 /// - `nistp521`
9333 pub const THREAT_INDICATOR_FILE_X509_PUBLIC_KEY_CURVE: &str =
9334 "threat.indicator.file.x509.public_key_curve";
9335
9336 /// Exponent used to derive the public key. This is algorithm specific.
9337 ///
9338 /// # Examples
9339 ///
9340 /// - `65537`
9341 pub const THREAT_INDICATOR_FILE_X509_PUBLIC_KEY_EXPONENT: &str =
9342 "threat.indicator.file.x509.public_key_exponent";
9343
9344 /// The size of the public key space in bits.
9345 ///
9346 /// # Examples
9347 ///
9348 /// - `2048`
9349 pub const THREAT_INDICATOR_FILE_X509_PUBLIC_KEY_SIZE: &str =
9350 "threat.indicator.file.x509.public_key_size";
9351
9352 /// Unique serial number issued by the certificate authority. For consistency, if this value is alphanumeric, it should be formatted without colons and uppercase characters.
9353 ///
9354 /// # Examples
9355 ///
9356 /// - `55FBB9C7DEBF09809D12CCAA`
9357 pub const THREAT_INDICATOR_FILE_X509_SERIAL_NUMBER: &str =
9358 "threat.indicator.file.x509.serial_number";
9359
9360 /// 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.
9361 ///
9362 /// # Examples
9363 ///
9364 /// - `SHA256-RSA`
9365 pub const THREAT_INDICATOR_FILE_X509_SIGNATURE_ALGORITHM: &str =
9366 "threat.indicator.file.x509.signature_algorithm";
9367
9368 /// List of common names (CN) of subject.
9369 ///
9370 /// # Examples
9371 ///
9372 /// - `shared.global.example.net`
9373 pub const THREAT_INDICATOR_FILE_X509_SUBJECT_COMMON_NAME: &str =
9374 "threat.indicator.file.x509.subject.common_name";
9375
9376 /// List of country \(C) code
9377 ///
9378 /// # Examples
9379 ///
9380 /// - `US`
9381 pub const THREAT_INDICATOR_FILE_X509_SUBJECT_COUNTRY: &str =
9382 "threat.indicator.file.x509.subject.country";
9383
9384 /// Distinguished name (DN) of the certificate subject entity.
9385 ///
9386 /// # Examples
9387 ///
9388 /// - `C=US, ST=California, L=San Francisco, O=Example, Inc., CN=shared.global.example.net`
9389 pub const THREAT_INDICATOR_FILE_X509_SUBJECT_DISTINGUISHED_NAME: &str =
9390 "threat.indicator.file.x509.subject.distinguished_name";
9391
9392 /// List of locality names (L)
9393 ///
9394 /// # Examples
9395 ///
9396 /// - `San Francisco`
9397 pub const THREAT_INDICATOR_FILE_X509_SUBJECT_LOCALITY: &str =
9398 "threat.indicator.file.x509.subject.locality";
9399
9400 /// List of organizations (O) of subject.
9401 ///
9402 /// # Examples
9403 ///
9404 /// - `Example, Inc.`
9405 pub const THREAT_INDICATOR_FILE_X509_SUBJECT_ORGANIZATION: &str =
9406 "threat.indicator.file.x509.subject.organization";
9407
9408 /// List of organizational units (OU) of subject.
9409 pub const THREAT_INDICATOR_FILE_X509_SUBJECT_ORGANIZATIONAL_UNIT: &str =
9410 "threat.indicator.file.x509.subject.organizational_unit";
9411
9412 /// List of state or province names (ST, S, or P)
9413 ///
9414 /// # Examples
9415 ///
9416 /// - `California`
9417 pub const THREAT_INDICATOR_FILE_X509_SUBJECT_STATE_OR_PROVINCE: &str =
9418 "threat.indicator.file.x509.subject.state_or_province";
9419
9420 /// Version of x509 format.
9421 ///
9422 /// # Examples
9423 ///
9424 /// - `3`
9425 pub const THREAT_INDICATOR_FILE_X509_VERSION_NUMBER: &str =
9426 "threat.indicator.file.x509.version_number";
9427
9428 /// The date and time when intelligence source first reported sighting this indicator.
9429 ///
9430 /// # Examples
9431 ///
9432 /// - `2020-11-05T17:25:47.000Z`
9433 pub const THREAT_INDICATOR_FIRST_SEEN: &str = "threat.indicator.first_seen";
9434
9435 /// City name.
9436 ///
9437 /// # Examples
9438 ///
9439 /// - `Montreal`
9440 pub const THREAT_INDICATOR_GEO_CITY_NAME: &str = "threat.indicator.geo.city_name";
9441
9442 /// Two-letter code representing continent's name.
9443 ///
9444 /// # Examples
9445 ///
9446 /// - `NA`
9447 pub const THREAT_INDICATOR_GEO_CONTINENT_CODE: &str = "threat.indicator.geo.continent_code";
9448
9449 /// Name of the continent.
9450 ///
9451 /// # Examples
9452 ///
9453 /// - `North America`
9454 pub const THREAT_INDICATOR_GEO_CONTINENT_NAME: &str = "threat.indicator.geo.continent_name";
9455
9456 /// Country ISO code.
9457 ///
9458 /// # Examples
9459 ///
9460 /// - `CA`
9461 pub const THREAT_INDICATOR_GEO_COUNTRY_ISO_CODE: &str = "threat.indicator.geo.country_iso_code";
9462
9463 /// Country name.
9464 ///
9465 /// # Examples
9466 ///
9467 /// - `Canada`
9468 pub const THREAT_INDICATOR_GEO_COUNTRY_NAME: &str = "threat.indicator.geo.country_name";
9469
9470 /// Longitude and latitude.
9471 ///
9472 /// # Examples
9473 ///
9474 /// - `{ "lon": -73.614830, "lat": 45.505918 }`
9475 pub const THREAT_INDICATOR_GEO_LOCATION: &str = "threat.indicator.geo.location";
9476
9477 /// User-defined description of a location, at the level of granularity they care about.
9478 /// Could be the name of their data centers, the floor number, if this describes a local physical entity, city names.
9479 /// Not typically used in automated geolocation.
9480 ///
9481 /// # Examples
9482 ///
9483 /// - `boston-dc`
9484 pub const THREAT_INDICATOR_GEO_NAME: &str = "threat.indicator.geo.name";
9485
9486 /// Postal code associated with the location.
9487 /// Values appropriate for this field may also be known as a postcode or ZIP code and will vary widely from country to country.
9488 ///
9489 /// # Examples
9490 ///
9491 /// - `94040`
9492 pub const THREAT_INDICATOR_GEO_POSTAL_CODE: &str = "threat.indicator.geo.postal_code";
9493
9494 /// Region ISO code.
9495 ///
9496 /// # Examples
9497 ///
9498 /// - `CA-QC`
9499 pub const THREAT_INDICATOR_GEO_REGION_ISO_CODE: &str = "threat.indicator.geo.region_iso_code";
9500
9501 /// Region name.
9502 ///
9503 /// # Examples
9504 ///
9505 /// - `Quebec`
9506 pub const THREAT_INDICATOR_GEO_REGION_NAME: &str = "threat.indicator.geo.region_name";
9507
9508 /// The time zone of the location, such as IANA time zone name.
9509 ///
9510 /// # Examples
9511 ///
9512 /// - `America/Argentina/Buenos_Aires`
9513 pub const THREAT_INDICATOR_GEO_TIMEZONE: &str = "threat.indicator.geo.timezone";
9514
9515 /// Identifies a threat indicator as an IP address (irrespective of direction).
9516 ///
9517 /// # Examples
9518 ///
9519 /// - `1.2.3.4`
9520 pub const THREAT_INDICATOR_IP: &str = "threat.indicator.ip";
9521
9522 /// The date and time when intelligence source last reported sighting this indicator.
9523 ///
9524 /// # Examples
9525 ///
9526 /// - `2020-11-05T17:25:47.000Z`
9527 pub const THREAT_INDICATOR_LAST_SEEN: &str = "threat.indicator.last_seen";
9528
9529 /// Traffic Light Protocol sharing markings.
9530 ///
9531 /// # Examples
9532 ///
9533 /// - `CLEAR`
9534 pub const THREAT_INDICATOR_MARKING_TLP: &str = "threat.indicator.marking.tlp";
9535
9536 /// Traffic Light Protocol version.
9537 ///
9538 /// # Examples
9539 ///
9540 /// - `2.0`
9541 pub const THREAT_INDICATOR_MARKING_TLP_VERSION: &str = "threat.indicator.marking.tlp_version";
9542
9543 /// The date and time when intelligence source last modified information for this indicator.
9544 ///
9545 /// # Examples
9546 ///
9547 /// - `2020-11-05T17:25:47.000Z`
9548 pub const THREAT_INDICATOR_MODIFIED_AT: &str = "threat.indicator.modified_at";
9549
9550 /// The display name indicator in an UI friendly format
9551 /// URL, IP address, email address, registry key, port number, hash value, or other relevant name can serve as the display name.
9552 ///
9553 /// # Examples
9554 ///
9555 /// - `5.2.75.227`
9556 pub const THREAT_INDICATOR_NAME: &str = "threat.indicator.name";
9557
9558 /// Identifies a threat indicator as a port number (irrespective of direction).
9559 ///
9560 /// # Examples
9561 ///
9562 /// - `443`
9563 pub const THREAT_INDICATOR_PORT: &str = "threat.indicator.port";
9564
9565 /// The name of the indicator's provider.
9566 ///
9567 /// # Examples
9568 ///
9569 /// - `lrz_urlhaus`
9570 pub const THREAT_INDICATOR_PROVIDER: &str = "threat.indicator.provider";
9571
9572 /// Reference URL linking to additional information about this indicator.
9573 ///
9574 /// # Examples
9575 ///
9576 /// - `https://system.example.com/indicator/0001234`
9577 pub const THREAT_INDICATOR_REFERENCE: &str = "threat.indicator.reference";
9578
9579 /// Original bytes written with base64 encoding.
9580 /// 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.
9581 ///
9582 /// # Examples
9583 ///
9584 /// - `ZQBuAC0AVQBTAAAAZQBuAAAAAAA=`
9585 pub const THREAT_INDICATOR_REGISTRY_DATA_BYTES: &str = "threat.indicator.registry.data.bytes";
9586
9587 /// Content when writing string types.
9588 /// 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"`).
9589 ///
9590 /// # Examples
9591 ///
9592 /// - `["C:\rta\red_ttp\bin\myapp.exe"]`
9593 pub const THREAT_INDICATOR_REGISTRY_DATA_STRINGS: &str =
9594 "threat.indicator.registry.data.strings";
9595
9596 /// Standard registry type for encoding contents
9597 ///
9598 /// # Examples
9599 ///
9600 /// - `REG_SZ`
9601 pub const THREAT_INDICATOR_REGISTRY_DATA_TYPE: &str = "threat.indicator.registry.data.type";
9602
9603 /// Abbreviated name for the hive.
9604 ///
9605 /// # Examples
9606 ///
9607 /// - `HKLM`
9608 pub const THREAT_INDICATOR_REGISTRY_HIVE: &str = "threat.indicator.registry.hive";
9609
9610 /// Hive-relative path of keys.
9611 ///
9612 /// # Examples
9613 ///
9614 /// - `SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\winword.exe`
9615 pub const THREAT_INDICATOR_REGISTRY_KEY: &str = "threat.indicator.registry.key";
9616
9617 /// Full path, including hive, key and value
9618 ///
9619 /// # Examples
9620 ///
9621 /// - `HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\winword.exe\Debugger`
9622 pub const THREAT_INDICATOR_REGISTRY_PATH: &str = "threat.indicator.registry.path";
9623
9624 /// Name of the value written.
9625 ///
9626 /// # Examples
9627 ///
9628 /// - `Debugger`
9629 pub const THREAT_INDICATOR_REGISTRY_VALUE: &str = "threat.indicator.registry.value";
9630
9631 /// Count of AV/EDR vendors that successfully detected malicious file or URL.
9632 ///
9633 /// # Examples
9634 ///
9635 /// - `4`
9636 pub const THREAT_INDICATOR_SCANNER_STATS: &str = "threat.indicator.scanner_stats";
9637
9638 /// Number of times this indicator was observed conducting threat activity.
9639 ///
9640 /// # Examples
9641 ///
9642 /// - `20`
9643 pub const THREAT_INDICATOR_SIGHTINGS: &str = "threat.indicator.sightings";
9644
9645 /// Type of indicator as represented by Cyber Observable in STIX 2.0.
9646 ///
9647 /// # Examples
9648 ///
9649 /// - `ipv4-addr`
9650 pub const THREAT_INDICATOR_TYPE: &str = "threat.indicator.type";
9651
9652 /// Domain of the url, such as "www.elastic.co".
9653 /// 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.
9654 /// If the URL contains a literal IPv6 address enclosed by `[` and `]` (IETF RFC 2732), the `[` and `]` characters should also be captured in the `domain` field.
9655 ///
9656 /// # Examples
9657 ///
9658 /// - `www.elastic.co`
9659 pub const THREAT_INDICATOR_URL_DOMAIN: &str = "threat.indicator.url.domain";
9660
9661 /// The field contains the file extension from the original request url, excluding the leading dot.
9662 /// The file extension is only set if it exists, as not every url has a file extension.
9663 /// The leading period must not be included. For example, the value must be "png", not ".png".
9664 /// Note that when the file name has multiple extensions (example.tar.gz), only the last one should be captured ("gz", not "tar.gz").
9665 ///
9666 /// # Examples
9667 ///
9668 /// - `png`
9669 pub const THREAT_INDICATOR_URL_EXTENSION: &str = "threat.indicator.url.extension";
9670
9671 /// Portion of the url after the `#`, such as "top".
9672 /// The `#` is not part of the fragment.
9673 pub const THREAT_INDICATOR_URL_FRAGMENT: &str = "threat.indicator.url.fragment";
9674
9675 /// 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.
9676 ///
9677 /// # Examples
9678 ///
9679 /// - `https://www.elastic.co:443/search?q=elasticsearch#top`
9680 pub const THREAT_INDICATOR_URL_FULL: &str = "threat.indicator.url.full";
9681
9682 /// Unmodified original url as seen in the event source.
9683 /// 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.
9684 /// This field is meant to represent the URL as it was observed, complete or not.
9685 ///
9686 /// # Examples
9687 ///
9688 /// - `https://www.elastic.co:443/search?q=elasticsearch#top or /search?q=elasticsearch`
9689 pub const THREAT_INDICATOR_URL_ORIGINAL: &str = "threat.indicator.url.original";
9690
9691 /// Password of the request.
9692 pub const THREAT_INDICATOR_URL_PASSWORD: &str = "threat.indicator.url.password";
9693
9694 /// Path of the request, such as "/search".
9695 pub const THREAT_INDICATOR_URL_PATH: &str = "threat.indicator.url.path";
9696
9697 /// Port of the request, such as 443.
9698 ///
9699 /// # Examples
9700 ///
9701 /// - `443`
9702 pub const THREAT_INDICATOR_URL_PORT: &str = "threat.indicator.url.port";
9703
9704 /// The query field describes the query string of the request, such as "q=elasticsearch".
9705 /// The `?` is excluded from the query string. If a URL contains no `?`, there is no query field. If there is a `?` but no query, the query field exists with an empty string. The `exists` query can be used to differentiate between the two cases.
9706 pub const THREAT_INDICATOR_URL_QUERY: &str = "threat.indicator.url.query";
9707
9708 /// The highest registered url domain, stripped of the subdomain.
9709 /// For example, the registered domain for "foo.example.com" is "example.com".
9710 /// 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".
9711 ///
9712 /// # Examples
9713 ///
9714 /// - `example.com`
9715 pub const THREAT_INDICATOR_URL_REGISTERED_DOMAIN: &str =
9716 "threat.indicator.url.registered_domain";
9717
9718 /// Scheme of the request, such as "https".
9719 /// Note: The `:` is not part of the scheme.
9720 ///
9721 /// # Examples
9722 ///
9723 /// - `https`
9724 pub const THREAT_INDICATOR_URL_SCHEME: &str = "threat.indicator.url.scheme";
9725
9726 /// The subdomain portion of a fully qualified domain name includes all of the names except the host name under the registered_domain. In a partially qualified domain, or if the the qualification level of the full name cannot be determined, subdomain contains all of the names below the registered domain.
9727 /// For example the subdomain portion of "www.east.mydomain.co.uk" is "east". If the domain has multiple levels of subdomain, such as "sub2.sub1.example.com", the subdomain field should contain "sub2.sub1", with no trailing period.
9728 ///
9729 /// # Examples
9730 ///
9731 /// - `east`
9732 pub const THREAT_INDICATOR_URL_SUBDOMAIN: &str = "threat.indicator.url.subdomain";
9733
9734 /// 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".
9735 /// 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".
9736 ///
9737 /// # Examples
9738 ///
9739 /// - `co.uk`
9740 pub const THREAT_INDICATOR_URL_TOP_LEVEL_DOMAIN: &str = "threat.indicator.url.top_level_domain";
9741
9742 /// Username of the request.
9743 pub const THREAT_INDICATOR_URL_USERNAME: &str = "threat.indicator.url.username";
9744
9745 /// 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.
9746 ///
9747 /// # Examples
9748 ///
9749 /// - `*.elastic.co`
9750 pub const THREAT_INDICATOR_X509_ALTERNATIVE_NAMES: &str =
9751 "threat.indicator.x509.alternative_names";
9752
9753 /// List of common name (CN) of issuing certificate authority.
9754 ///
9755 /// # Examples
9756 ///
9757 /// - `Example SHA2 High Assurance Server CA`
9758 pub const THREAT_INDICATOR_X509_ISSUER_COMMON_NAME: &str =
9759 "threat.indicator.x509.issuer.common_name";
9760
9761 /// List of country \(C) codes
9762 ///
9763 /// # Examples
9764 ///
9765 /// - `US`
9766 pub const THREAT_INDICATOR_X509_ISSUER_COUNTRY: &str = "threat.indicator.x509.issuer.country";
9767
9768 /// Distinguished name (DN) of issuing certificate authority.
9769 ///
9770 /// # Examples
9771 ///
9772 /// - `C=US, O=Example Inc, OU=www.example.com, CN=Example SHA2 High Assurance Server CA`
9773 pub const THREAT_INDICATOR_X509_ISSUER_DISTINGUISHED_NAME: &str =
9774 "threat.indicator.x509.issuer.distinguished_name";
9775
9776 /// List of locality names (L)
9777 ///
9778 /// # Examples
9779 ///
9780 /// - `Mountain View`
9781 pub const THREAT_INDICATOR_X509_ISSUER_LOCALITY: &str = "threat.indicator.x509.issuer.locality";
9782
9783 /// List of organizations (O) of issuing certificate authority.
9784 ///
9785 /// # Examples
9786 ///
9787 /// - `Example Inc`
9788 pub const THREAT_INDICATOR_X509_ISSUER_ORGANIZATION: &str =
9789 "threat.indicator.x509.issuer.organization";
9790
9791 /// List of organizational units (OU) of issuing certificate authority.
9792 ///
9793 /// # Examples
9794 ///
9795 /// - `www.example.com`
9796 pub const THREAT_INDICATOR_X509_ISSUER_ORGANIZATIONAL_UNIT: &str =
9797 "threat.indicator.x509.issuer.organizational_unit";
9798
9799 /// List of state or province names (ST, S, or P)
9800 ///
9801 /// # Examples
9802 ///
9803 /// - `California`
9804 pub const THREAT_INDICATOR_X509_ISSUER_STATE_OR_PROVINCE: &str =
9805 "threat.indicator.x509.issuer.state_or_province";
9806
9807 /// Time at which the certificate is no longer considered valid.
9808 ///
9809 /// # Examples
9810 ///
9811 /// - `2020-07-16T03:15:39Z`
9812 pub const THREAT_INDICATOR_X509_NOT_AFTER: &str = "threat.indicator.x509.not_after";
9813
9814 /// Time at which the certificate is first considered valid.
9815 ///
9816 /// # Examples
9817 ///
9818 /// - `2019-08-16T01:40:25Z`
9819 pub const THREAT_INDICATOR_X509_NOT_BEFORE: &str = "threat.indicator.x509.not_before";
9820
9821 /// Algorithm used to generate the public key.
9822 ///
9823 /// # Examples
9824 ///
9825 /// - `RSA`
9826 pub const THREAT_INDICATOR_X509_PUBLIC_KEY_ALGORITHM: &str =
9827 "threat.indicator.x509.public_key_algorithm";
9828
9829 /// The curve used by the elliptic curve public key algorithm. This is algorithm specific.
9830 ///
9831 /// # Examples
9832 ///
9833 /// - `nistp521`
9834 pub const THREAT_INDICATOR_X509_PUBLIC_KEY_CURVE: &str =
9835 "threat.indicator.x509.public_key_curve";
9836
9837 /// Exponent used to derive the public key. This is algorithm specific.
9838 ///
9839 /// # Examples
9840 ///
9841 /// - `65537`
9842 pub const THREAT_INDICATOR_X509_PUBLIC_KEY_EXPONENT: &str =
9843 "threat.indicator.x509.public_key_exponent";
9844
9845 /// The size of the public key space in bits.
9846 ///
9847 /// # Examples
9848 ///
9849 /// - `2048`
9850 pub const THREAT_INDICATOR_X509_PUBLIC_KEY_SIZE: &str = "threat.indicator.x509.public_key_size";
9851
9852 /// Unique serial number issued by the certificate authority. For consistency, if this value is alphanumeric, it should be formatted without colons and uppercase characters.
9853 ///
9854 /// # Examples
9855 ///
9856 /// - `55FBB9C7DEBF09809D12CCAA`
9857 pub const THREAT_INDICATOR_X509_SERIAL_NUMBER: &str = "threat.indicator.x509.serial_number";
9858
9859 /// 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.
9860 ///
9861 /// # Examples
9862 ///
9863 /// - `SHA256-RSA`
9864 pub const THREAT_INDICATOR_X509_SIGNATURE_ALGORITHM: &str =
9865 "threat.indicator.x509.signature_algorithm";
9866
9867 /// List of common names (CN) of subject.
9868 ///
9869 /// # Examples
9870 ///
9871 /// - `shared.global.example.net`
9872 pub const THREAT_INDICATOR_X509_SUBJECT_COMMON_NAME: &str =
9873 "threat.indicator.x509.subject.common_name";
9874
9875 /// List of country \(C) code
9876 ///
9877 /// # Examples
9878 ///
9879 /// - `US`
9880 pub const THREAT_INDICATOR_X509_SUBJECT_COUNTRY: &str = "threat.indicator.x509.subject.country";
9881
9882 /// Distinguished name (DN) of the certificate subject entity.
9883 ///
9884 /// # Examples
9885 ///
9886 /// - `C=US, ST=California, L=San Francisco, O=Example, Inc., CN=shared.global.example.net`
9887 pub const THREAT_INDICATOR_X509_SUBJECT_DISTINGUISHED_NAME: &str =
9888 "threat.indicator.x509.subject.distinguished_name";
9889
9890 /// List of locality names (L)
9891 ///
9892 /// # Examples
9893 ///
9894 /// - `San Francisco`
9895 pub const THREAT_INDICATOR_X509_SUBJECT_LOCALITY: &str =
9896 "threat.indicator.x509.subject.locality";
9897
9898 /// List of organizations (O) of subject.
9899 ///
9900 /// # Examples
9901 ///
9902 /// - `Example, Inc.`
9903 pub const THREAT_INDICATOR_X509_SUBJECT_ORGANIZATION: &str =
9904 "threat.indicator.x509.subject.organization";
9905
9906 /// List of organizational units (OU) of subject.
9907 pub const THREAT_INDICATOR_X509_SUBJECT_ORGANIZATIONAL_UNIT: &str =
9908 "threat.indicator.x509.subject.organizational_unit";
9909
9910 /// List of state or province names (ST, S, or P)
9911 ///
9912 /// # Examples
9913 ///
9914 /// - `California`
9915 pub const THREAT_INDICATOR_X509_SUBJECT_STATE_OR_PROVINCE: &str =
9916 "threat.indicator.x509.subject.state_or_province";
9917
9918 /// Version of x509 format.
9919 ///
9920 /// # Examples
9921 ///
9922 /// - `3`
9923 pub const THREAT_INDICATOR_X509_VERSION_NUMBER: &str = "threat.indicator.x509.version_number";
9924
9925 /// The alias(es) of the software for a set of related intrusion activity that are tracked by a common name in the security community.
9926 /// While not required, you can use a MITRE ATT&CK® associated software description.
9927 ///
9928 /// # Examples
9929 ///
9930 /// - `[ "X-Agent" ]`
9931 pub const THREAT_SOFTWARE_ALIAS: &str = "threat.software.alias";
9932
9933 /// The id of the software used by this threat to conduct behavior commonly modeled using MITRE ATT&CK®.
9934 /// While not required, you can use a MITRE ATT&CK® software id.
9935 ///
9936 /// # Examples
9937 ///
9938 /// - `S0552`
9939 pub const THREAT_SOFTWARE_ID: &str = "threat.software.id";
9940
9941 /// The name of the software used by this threat to conduct behavior commonly modeled using MITRE ATT&CK®.
9942 /// While not required, you can use a MITRE ATT&CK® software name.
9943 ///
9944 /// # Examples
9945 ///
9946 /// - `AdFind`
9947 pub const THREAT_SOFTWARE_NAME: &str = "threat.software.name";
9948
9949 /// The platforms of the software used by this threat to conduct behavior commonly modeled using MITRE ATT&CK®.
9950 /// While not required, you can use MITRE ATT&CK® software platform values.
9951 ///
9952 /// # Examples
9953 ///
9954 /// - `[ "Windows" ]`
9955 pub const THREAT_SOFTWARE_PLATFORMS: &str = "threat.software.platforms";
9956
9957 /// The reference URL of the software used by this threat to conduct behavior commonly modeled using MITRE ATT&CK®.
9958 /// While not required, you can use a MITRE ATT&CK® software reference URL.
9959 ///
9960 /// # Examples
9961 ///
9962 /// - `https://attack.mitre.org/software/S0552/`
9963 pub const THREAT_SOFTWARE_REFERENCE: &str = "threat.software.reference";
9964
9965 /// The type of software used by this threat to conduct behavior commonly modeled using MITRE ATT&CK®.
9966 /// While not required, you can use a MITRE ATT&CK® software type.
9967 ///
9968 /// # Examples
9969 ///
9970 /// - `Tool`
9971 pub const THREAT_SOFTWARE_TYPE: &str = "threat.software.type";
9972
9973 /// The id of tactic used by this threat. You can use a MITRE ATT&CK® tactic, for example. (ex. https://attack.mitre.org/tactics/TA0002/ )
9974 ///
9975 /// # Examples
9976 ///
9977 /// - `TA0002`
9978 pub const THREAT_TACTIC_ID: &str = "threat.tactic.id";
9979
9980 /// 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/TA0002/)
9981 ///
9982 /// # Examples
9983 ///
9984 /// - `Execution`
9985 pub const THREAT_TACTIC_NAME: &str = "threat.tactic.name";
9986
9987 /// 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/TA0002/ )
9988 ///
9989 /// # Examples
9990 ///
9991 /// - `https://attack.mitre.org/tactics/TA0002/`
9992 pub const THREAT_TACTIC_REFERENCE: &str = "threat.tactic.reference";
9993
9994 /// The id of technique used by this threat. You can use a MITRE ATT&CK® technique, for example. (ex. https://attack.mitre.org/techniques/T1059/)
9995 ///
9996 /// # Examples
9997 ///
9998 /// - `T1059`
9999 pub const THREAT_TECHNIQUE_ID: &str = "threat.technique.id";
10000
10001 /// The name of technique used by this threat. You can use a MITRE ATT&CK® technique, for example. (ex. https://attack.mitre.org/techniques/T1059/)
10002 ///
10003 /// # Examples
10004 ///
10005 /// - `Command and Scripting Interpreter`
10006 pub const THREAT_TECHNIQUE_NAME: &str = "threat.technique.name";
10007
10008 /// 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/T1059/)
10009 ///
10010 /// # Examples
10011 ///
10012 /// - `https://attack.mitre.org/techniques/T1059/`
10013 pub const THREAT_TECHNIQUE_REFERENCE: &str = "threat.technique.reference";
10014
10015 /// The full id of subtechnique used by this threat. You can use a MITRE ATT&CK® subtechnique, for example. (ex. https://attack.mitre.org/techniques/T1059/001/)
10016 ///
10017 /// # Examples
10018 ///
10019 /// - `T1059.001`
10020 pub const THREAT_TECHNIQUE_SUBTECHNIQUE_ID: &str = "threat.technique.subtechnique.id";
10021
10022 /// The name of subtechnique used by this threat. You can use a MITRE ATT&CK® subtechnique, for example. (ex. https://attack.mitre.org/techniques/T1059/001/)
10023 ///
10024 /// # Examples
10025 ///
10026 /// - `PowerShell`
10027 pub const THREAT_TECHNIQUE_SUBTECHNIQUE_NAME: &str = "threat.technique.subtechnique.name";
10028
10029 /// The reference url of subtechnique used by this threat. You can use a MITRE ATT&CK® subtechnique, for example. (ex. https://attack.mitre.org/techniques/T1059/001/)
10030 ///
10031 /// # Examples
10032 ///
10033 /// - `https://attack.mitre.org/techniques/T1059/001/`
10034 pub const THREAT_TECHNIQUE_SUBTECHNIQUE_REFERENCE: &str =
10035 "threat.technique.subtechnique.reference";
10036}
10037
10038/// 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.
10039pub mod tls {
10040
10041 /// String indicating the cipher used during the current connection.
10042 ///
10043 /// # Examples
10044 ///
10045 /// - `TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256`
10046 pub const TLS_CIPHER: &str = "tls.cipher";
10047
10048 /// 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.
10049 ///
10050 /// # Examples
10051 ///
10052 /// - `MII...`
10053 pub const TLS_CLIENT_CERTIFICATE: &str = "tls.client.certificate";
10054
10055 /// 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.
10056 ///
10057 /// # Examples
10058 ///
10059 /// - `["MII...", "MII..."]`
10060 pub const TLS_CLIENT_CERTIFICATE_CHAIN: &str = "tls.client.certificate_chain";
10061
10062 /// 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.
10063 ///
10064 /// # Examples
10065 ///
10066 /// - `0F76C7F2C55BFD7D8E8B8F4BFBF0C9EC`
10067 pub const TLS_CLIENT_HASH_MD5: &str = "tls.client.hash.md5";
10068
10069 /// 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.
10070 ///
10071 /// # Examples
10072 ///
10073 /// - `9E393D93138888D288266C2D915214D1D1CCEB2A`
10074 pub const TLS_CLIENT_HASH_SHA1: &str = "tls.client.hash.sha1";
10075
10076 /// 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.
10077 ///
10078 /// # Examples
10079 ///
10080 /// - `0687F666A054EF17A08E2F2162EAB4CBC0D265E1D7875BE74BF3C712CA92DAF0`
10081 pub const TLS_CLIENT_HASH_SHA256: &str = "tls.client.hash.sha256";
10082
10083 /// Distinguished name of subject of the issuer of the x.509 certificate presented by the client.
10084 ///
10085 /// # Examples
10086 ///
10087 /// - `CN=Example Root CA, OU=Infrastructure Team, DC=example, DC=com`
10088 pub const TLS_CLIENT_ISSUER: &str = "tls.client.issuer";
10089
10090 /// A hash that identifies clients based on how they perform an SSL/TLS handshake.
10091 ///
10092 /// # Examples
10093 ///
10094 /// - `d4e5b18d6b55c71272893221c96ba240`
10095 pub const TLS_CLIENT_JA3: &str = "tls.client.ja3";
10096
10097 /// Date/Time indicating when client certificate is no longer considered valid.
10098 ///
10099 /// # Examples
10100 ///
10101 /// - `2021-01-01T00:00:00.000Z`
10102 pub const TLS_CLIENT_NOT_AFTER: &str = "tls.client.not_after";
10103
10104 /// Date/Time indicating when client certificate is first considered valid.
10105 ///
10106 /// # Examples
10107 ///
10108 /// - `1970-01-01T00:00:00.000Z`
10109 pub const TLS_CLIENT_NOT_BEFORE: &str = "tls.client.not_before";
10110
10111 /// 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`.
10112 ///
10113 /// # Examples
10114 ///
10115 /// - `www.elastic.co`
10116 pub const TLS_CLIENT_SERVER_NAME: &str = "tls.client.server_name";
10117
10118 /// Distinguished name of subject of the x.509 certificate presented by the client.
10119 ///
10120 /// # Examples
10121 ///
10122 /// - `CN=myclient, OU=Documentation Team, DC=example, DC=com`
10123 pub const TLS_CLIENT_SUBJECT: &str = "tls.client.subject";
10124
10125 /// Array of ciphers offered by the client during the client hello.
10126 ///
10127 /// # Examples
10128 ///
10129 /// - `["TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384", "TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384", "..."]`
10130 pub const TLS_CLIENT_SUPPORTED_CIPHERS: &str = "tls.client.supported_ciphers";
10131
10132 /// 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.
10133 ///
10134 /// # Examples
10135 ///
10136 /// - `*.elastic.co`
10137 pub const TLS_CLIENT_X509_ALTERNATIVE_NAMES: &str = "tls.client.x509.alternative_names";
10138
10139 /// List of common name (CN) of issuing certificate authority.
10140 ///
10141 /// # Examples
10142 ///
10143 /// - `Example SHA2 High Assurance Server CA`
10144 pub const TLS_CLIENT_X509_ISSUER_COMMON_NAME: &str = "tls.client.x509.issuer.common_name";
10145
10146 /// List of country \(C) codes
10147 ///
10148 /// # Examples
10149 ///
10150 /// - `US`
10151 pub const TLS_CLIENT_X509_ISSUER_COUNTRY: &str = "tls.client.x509.issuer.country";
10152
10153 /// Distinguished name (DN) of issuing certificate authority.
10154 ///
10155 /// # Examples
10156 ///
10157 /// - `C=US, O=Example Inc, OU=www.example.com, CN=Example SHA2 High Assurance Server CA`
10158 pub const TLS_CLIENT_X509_ISSUER_DISTINGUISHED_NAME: &str =
10159 "tls.client.x509.issuer.distinguished_name";
10160
10161 /// List of locality names (L)
10162 ///
10163 /// # Examples
10164 ///
10165 /// - `Mountain View`
10166 pub const TLS_CLIENT_X509_ISSUER_LOCALITY: &str = "tls.client.x509.issuer.locality";
10167
10168 /// List of organizations (O) of issuing certificate authority.
10169 ///
10170 /// # Examples
10171 ///
10172 /// - `Example Inc`
10173 pub const TLS_CLIENT_X509_ISSUER_ORGANIZATION: &str = "tls.client.x509.issuer.organization";
10174
10175 /// List of organizational units (OU) of issuing certificate authority.
10176 ///
10177 /// # Examples
10178 ///
10179 /// - `www.example.com`
10180 pub const TLS_CLIENT_X509_ISSUER_ORGANIZATIONAL_UNIT: &str =
10181 "tls.client.x509.issuer.organizational_unit";
10182
10183 /// List of state or province names (ST, S, or P)
10184 ///
10185 /// # Examples
10186 ///
10187 /// - `California`
10188 pub const TLS_CLIENT_X509_ISSUER_STATE_OR_PROVINCE: &str =
10189 "tls.client.x509.issuer.state_or_province";
10190
10191 /// Time at which the certificate is no longer considered valid.
10192 ///
10193 /// # Examples
10194 ///
10195 /// - `2020-07-16T03:15:39Z`
10196 pub const TLS_CLIENT_X509_NOT_AFTER: &str = "tls.client.x509.not_after";
10197
10198 /// Time at which the certificate is first considered valid.
10199 ///
10200 /// # Examples
10201 ///
10202 /// - `2019-08-16T01:40:25Z`
10203 pub const TLS_CLIENT_X509_NOT_BEFORE: &str = "tls.client.x509.not_before";
10204
10205 /// Algorithm used to generate the public key.
10206 ///
10207 /// # Examples
10208 ///
10209 /// - `RSA`
10210 pub const TLS_CLIENT_X509_PUBLIC_KEY_ALGORITHM: &str = "tls.client.x509.public_key_algorithm";
10211
10212 /// The curve used by the elliptic curve public key algorithm. This is algorithm specific.
10213 ///
10214 /// # Examples
10215 ///
10216 /// - `nistp521`
10217 pub const TLS_CLIENT_X509_PUBLIC_KEY_CURVE: &str = "tls.client.x509.public_key_curve";
10218
10219 /// Exponent used to derive the public key. This is algorithm specific.
10220 ///
10221 /// # Examples
10222 ///
10223 /// - `65537`
10224 pub const TLS_CLIENT_X509_PUBLIC_KEY_EXPONENT: &str = "tls.client.x509.public_key_exponent";
10225
10226 /// The size of the public key space in bits.
10227 ///
10228 /// # Examples
10229 ///
10230 /// - `2048`
10231 pub const TLS_CLIENT_X509_PUBLIC_KEY_SIZE: &str = "tls.client.x509.public_key_size";
10232
10233 /// Unique serial number issued by the certificate authority. For consistency, if this value is alphanumeric, it should be formatted without colons and uppercase characters.
10234 ///
10235 /// # Examples
10236 ///
10237 /// - `55FBB9C7DEBF09809D12CCAA`
10238 pub const TLS_CLIENT_X509_SERIAL_NUMBER: &str = "tls.client.x509.serial_number";
10239
10240 /// 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.
10241 ///
10242 /// # Examples
10243 ///
10244 /// - `SHA256-RSA`
10245 pub const TLS_CLIENT_X509_SIGNATURE_ALGORITHM: &str = "tls.client.x509.signature_algorithm";
10246
10247 /// List of common names (CN) of subject.
10248 ///
10249 /// # Examples
10250 ///
10251 /// - `shared.global.example.net`
10252 pub const TLS_CLIENT_X509_SUBJECT_COMMON_NAME: &str = "tls.client.x509.subject.common_name";
10253
10254 /// List of country \(C) code
10255 ///
10256 /// # Examples
10257 ///
10258 /// - `US`
10259 pub const TLS_CLIENT_X509_SUBJECT_COUNTRY: &str = "tls.client.x509.subject.country";
10260
10261 /// Distinguished name (DN) of the certificate subject entity.
10262 ///
10263 /// # Examples
10264 ///
10265 /// - `C=US, ST=California, L=San Francisco, O=Example, Inc., CN=shared.global.example.net`
10266 pub const TLS_CLIENT_X509_SUBJECT_DISTINGUISHED_NAME: &str =
10267 "tls.client.x509.subject.distinguished_name";
10268
10269 /// List of locality names (L)
10270 ///
10271 /// # Examples
10272 ///
10273 /// - `San Francisco`
10274 pub const TLS_CLIENT_X509_SUBJECT_LOCALITY: &str = "tls.client.x509.subject.locality";
10275
10276 /// List of organizations (O) of subject.
10277 ///
10278 /// # Examples
10279 ///
10280 /// - `Example, Inc.`
10281 pub const TLS_CLIENT_X509_SUBJECT_ORGANIZATION: &str = "tls.client.x509.subject.organization";
10282
10283 /// List of organizational units (OU) of subject.
10284 pub const TLS_CLIENT_X509_SUBJECT_ORGANIZATIONAL_UNIT: &str =
10285 "tls.client.x509.subject.organizational_unit";
10286
10287 /// List of state or province names (ST, S, or P)
10288 ///
10289 /// # Examples
10290 ///
10291 /// - `California`
10292 pub const TLS_CLIENT_X509_SUBJECT_STATE_OR_PROVINCE: &str =
10293 "tls.client.x509.subject.state_or_province";
10294
10295 /// Version of x509 format.
10296 ///
10297 /// # Examples
10298 ///
10299 /// - `3`
10300 pub const TLS_CLIENT_X509_VERSION_NUMBER: &str = "tls.client.x509.version_number";
10301
10302 /// String indicating the curve used for the given cipher, when applicable.
10303 ///
10304 /// # Examples
10305 ///
10306 /// - `secp256r1`
10307 pub const TLS_CURVE: &str = "tls.curve";
10308
10309 /// Boolean flag indicating if the TLS negotiation was successful and transitioned to an encrypted tunnel.
10310 pub const TLS_ESTABLISHED: &str = "tls.established";
10311
10312 /// 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.
10313 ///
10314 /// # Examples
10315 ///
10316 /// - `http/1.1`
10317 pub const TLS_NEXT_PROTOCOL: &str = "tls.next_protocol";
10318
10319 /// Boolean flag indicating if this TLS connection was resumed from an existing TLS negotiation.
10320 pub const TLS_RESUMED: &str = "tls.resumed";
10321
10322 /// 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.
10323 ///
10324 /// # Examples
10325 ///
10326 /// - `MII...`
10327 pub const TLS_SERVER_CERTIFICATE: &str = "tls.server.certificate";
10328
10329 /// 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.
10330 ///
10331 /// # Examples
10332 ///
10333 /// - `["MII...", "MII..."]`
10334 pub const TLS_SERVER_CERTIFICATE_CHAIN: &str = "tls.server.certificate_chain";
10335
10336 /// 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.
10337 ///
10338 /// # Examples
10339 ///
10340 /// - `0F76C7F2C55BFD7D8E8B8F4BFBF0C9EC`
10341 pub const TLS_SERVER_HASH_MD5: &str = "tls.server.hash.md5";
10342
10343 /// 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.
10344 ///
10345 /// # Examples
10346 ///
10347 /// - `9E393D93138888D288266C2D915214D1D1CCEB2A`
10348 pub const TLS_SERVER_HASH_SHA1: &str = "tls.server.hash.sha1";
10349
10350 /// 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.
10351 ///
10352 /// # Examples
10353 ///
10354 /// - `0687F666A054EF17A08E2F2162EAB4CBC0D265E1D7875BE74BF3C712CA92DAF0`
10355 pub const TLS_SERVER_HASH_SHA256: &str = "tls.server.hash.sha256";
10356
10357 /// Subject of the issuer of the x.509 certificate presented by the server.
10358 ///
10359 /// # Examples
10360 ///
10361 /// - `CN=Example Root CA, OU=Infrastructure Team, DC=example, DC=com`
10362 pub const TLS_SERVER_ISSUER: &str = "tls.server.issuer";
10363
10364 /// A hash that identifies servers based on how they perform an SSL/TLS handshake.
10365 ///
10366 /// # Examples
10367 ///
10368 /// - `394441ab65754e2207b1e1b457b3641d`
10369 pub const TLS_SERVER_JA3S: &str = "tls.server.ja3s";
10370
10371 /// Timestamp indicating when server certificate is no longer considered valid.
10372 ///
10373 /// # Examples
10374 ///
10375 /// - `2021-01-01T00:00:00.000Z`
10376 pub const TLS_SERVER_NOT_AFTER: &str = "tls.server.not_after";
10377
10378 /// Timestamp indicating when server certificate is first considered valid.
10379 ///
10380 /// # Examples
10381 ///
10382 /// - `1970-01-01T00:00:00.000Z`
10383 pub const TLS_SERVER_NOT_BEFORE: &str = "tls.server.not_before";
10384
10385 /// Subject of the x.509 certificate presented by the server.
10386 ///
10387 /// # Examples
10388 ///
10389 /// - `CN=www.example.com, OU=Infrastructure Team, DC=example, DC=com`
10390 pub const TLS_SERVER_SUBJECT: &str = "tls.server.subject";
10391
10392 /// 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.
10393 ///
10394 /// # Examples
10395 ///
10396 /// - `*.elastic.co`
10397 pub const TLS_SERVER_X509_ALTERNATIVE_NAMES: &str = "tls.server.x509.alternative_names";
10398
10399 /// List of common name (CN) of issuing certificate authority.
10400 ///
10401 /// # Examples
10402 ///
10403 /// - `Example SHA2 High Assurance Server CA`
10404 pub const TLS_SERVER_X509_ISSUER_COMMON_NAME: &str = "tls.server.x509.issuer.common_name";
10405
10406 /// List of country \(C) codes
10407 ///
10408 /// # Examples
10409 ///
10410 /// - `US`
10411 pub const TLS_SERVER_X509_ISSUER_COUNTRY: &str = "tls.server.x509.issuer.country";
10412
10413 /// Distinguished name (DN) of issuing certificate authority.
10414 ///
10415 /// # Examples
10416 ///
10417 /// - `C=US, O=Example Inc, OU=www.example.com, CN=Example SHA2 High Assurance Server CA`
10418 pub const TLS_SERVER_X509_ISSUER_DISTINGUISHED_NAME: &str =
10419 "tls.server.x509.issuer.distinguished_name";
10420
10421 /// List of locality names (L)
10422 ///
10423 /// # Examples
10424 ///
10425 /// - `Mountain View`
10426 pub const TLS_SERVER_X509_ISSUER_LOCALITY: &str = "tls.server.x509.issuer.locality";
10427
10428 /// List of organizations (O) of issuing certificate authority.
10429 ///
10430 /// # Examples
10431 ///
10432 /// - `Example Inc`
10433 pub const TLS_SERVER_X509_ISSUER_ORGANIZATION: &str = "tls.server.x509.issuer.organization";
10434
10435 /// List of organizational units (OU) of issuing certificate authority.
10436 ///
10437 /// # Examples
10438 ///
10439 /// - `www.example.com`
10440 pub const TLS_SERVER_X509_ISSUER_ORGANIZATIONAL_UNIT: &str =
10441 "tls.server.x509.issuer.organizational_unit";
10442
10443 /// List of state or province names (ST, S, or P)
10444 ///
10445 /// # Examples
10446 ///
10447 /// - `California`
10448 pub const TLS_SERVER_X509_ISSUER_STATE_OR_PROVINCE: &str =
10449 "tls.server.x509.issuer.state_or_province";
10450
10451 /// Time at which the certificate is no longer considered valid.
10452 ///
10453 /// # Examples
10454 ///
10455 /// - `2020-07-16T03:15:39Z`
10456 pub const TLS_SERVER_X509_NOT_AFTER: &str = "tls.server.x509.not_after";
10457
10458 /// Time at which the certificate is first considered valid.
10459 ///
10460 /// # Examples
10461 ///
10462 /// - `2019-08-16T01:40:25Z`
10463 pub const TLS_SERVER_X509_NOT_BEFORE: &str = "tls.server.x509.not_before";
10464
10465 /// Algorithm used to generate the public key.
10466 ///
10467 /// # Examples
10468 ///
10469 /// - `RSA`
10470 pub const TLS_SERVER_X509_PUBLIC_KEY_ALGORITHM: &str = "tls.server.x509.public_key_algorithm";
10471
10472 /// The curve used by the elliptic curve public key algorithm. This is algorithm specific.
10473 ///
10474 /// # Examples
10475 ///
10476 /// - `nistp521`
10477 pub const TLS_SERVER_X509_PUBLIC_KEY_CURVE: &str = "tls.server.x509.public_key_curve";
10478
10479 /// Exponent used to derive the public key. This is algorithm specific.
10480 ///
10481 /// # Examples
10482 ///
10483 /// - `65537`
10484 pub const TLS_SERVER_X509_PUBLIC_KEY_EXPONENT: &str = "tls.server.x509.public_key_exponent";
10485
10486 /// The size of the public key space in bits.
10487 ///
10488 /// # Examples
10489 ///
10490 /// - `2048`
10491 pub const TLS_SERVER_X509_PUBLIC_KEY_SIZE: &str = "tls.server.x509.public_key_size";
10492
10493 /// Unique serial number issued by the certificate authority. For consistency, if this value is alphanumeric, it should be formatted without colons and uppercase characters.
10494 ///
10495 /// # Examples
10496 ///
10497 /// - `55FBB9C7DEBF09809D12CCAA`
10498 pub const TLS_SERVER_X509_SERIAL_NUMBER: &str = "tls.server.x509.serial_number";
10499
10500 /// 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.
10501 ///
10502 /// # Examples
10503 ///
10504 /// - `SHA256-RSA`
10505 pub const TLS_SERVER_X509_SIGNATURE_ALGORITHM: &str = "tls.server.x509.signature_algorithm";
10506
10507 /// List of common names (CN) of subject.
10508 ///
10509 /// # Examples
10510 ///
10511 /// - `shared.global.example.net`
10512 pub const TLS_SERVER_X509_SUBJECT_COMMON_NAME: &str = "tls.server.x509.subject.common_name";
10513
10514 /// List of country \(C) code
10515 ///
10516 /// # Examples
10517 ///
10518 /// - `US`
10519 pub const TLS_SERVER_X509_SUBJECT_COUNTRY: &str = "tls.server.x509.subject.country";
10520
10521 /// Distinguished name (DN) of the certificate subject entity.
10522 ///
10523 /// # Examples
10524 ///
10525 /// - `C=US, ST=California, L=San Francisco, O=Example, Inc., CN=shared.global.example.net`
10526 pub const TLS_SERVER_X509_SUBJECT_DISTINGUISHED_NAME: &str =
10527 "tls.server.x509.subject.distinguished_name";
10528
10529 /// List of locality names (L)
10530 ///
10531 /// # Examples
10532 ///
10533 /// - `San Francisco`
10534 pub const TLS_SERVER_X509_SUBJECT_LOCALITY: &str = "tls.server.x509.subject.locality";
10535
10536 /// List of organizations (O) of subject.
10537 ///
10538 /// # Examples
10539 ///
10540 /// - `Example, Inc.`
10541 pub const TLS_SERVER_X509_SUBJECT_ORGANIZATION: &str = "tls.server.x509.subject.organization";
10542
10543 /// List of organizational units (OU) of subject.
10544 pub const TLS_SERVER_X509_SUBJECT_ORGANIZATIONAL_UNIT: &str =
10545 "tls.server.x509.subject.organizational_unit";
10546
10547 /// List of state or province names (ST, S, or P)
10548 ///
10549 /// # Examples
10550 ///
10551 /// - `California`
10552 pub const TLS_SERVER_X509_SUBJECT_STATE_OR_PROVINCE: &str =
10553 "tls.server.x509.subject.state_or_province";
10554
10555 /// Version of x509 format.
10556 ///
10557 /// # Examples
10558 ///
10559 /// - `3`
10560 pub const TLS_SERVER_X509_VERSION_NUMBER: &str = "tls.server.x509.version_number";
10561
10562 /// Numeric part of the version parsed from the original string.
10563 ///
10564 /// # Examples
10565 ///
10566 /// - `1.2`
10567 pub const TLS_VERSION: &str = "tls.version";
10568
10569 /// Normalized lowercase protocol name parsed from original string.
10570 ///
10571 /// # Examples
10572 ///
10573 /// - `tls`
10574 pub const TLS_VERSION_PROTOCOL: &str = "tls.version_protocol";
10575}
10576
10577/// 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.
10578
10579/// Unlike most field sets in ECS, the tracing fields are *not* nested under the field set name. In other words, the correct field name is `trace.id`, not `tracing.trace.id`, and so on.
10580pub mod tracing {
10581
10582 /// Unique identifier of the span within the scope of its trace.
10583 /// A span represents an operation within a transaction, such as a request to another service, or a database query.
10584 ///
10585 /// # Examples
10586 ///
10587 /// - `3ff9a8981b7ccd5a`
10588 pub const SPAN_ID: &str = "span.id";
10589
10590 /// Unique identifier of the trace.
10591 /// A trace groups multiple events like transactions that belong together. For example, a user request handled by multiple inter-connected services.
10592 ///
10593 /// # Examples
10594 ///
10595 /// - `4bf92f3577b34da6a3ce929d0e0e4736`
10596 pub const TRACE_ID: &str = "trace.id";
10597
10598 /// Unique identifier of the transaction within the scope of its trace.
10599 /// A transaction is the highest level of work measured within a service, such as a request to a server.
10600 ///
10601 /// # Examples
10602 ///
10603 /// - `00f067aa0ba902b7`
10604 pub const TRANSACTION_ID: &str = "transaction.id";
10605}
10606
10607/// URL fields provide support for complete or partial URLs, and supports the breaking down into scheme, domain, path, and so on.
10608pub mod url {
10609
10610 /// Domain of the url, such as "www.elastic.co".
10611 /// 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.
10612 /// If the URL contains a literal IPv6 address enclosed by `[` and `]` (IETF RFC 2732), the `[` and `]` characters should also be captured in the `domain` field.
10613 ///
10614 /// # Examples
10615 ///
10616 /// - `www.elastic.co`
10617 pub const URL_DOMAIN: &str = "url.domain";
10618
10619 /// The field contains the file extension from the original request url, excluding the leading dot.
10620 /// The file extension is only set if it exists, as not every url has a file extension.
10621 /// The leading period must not be included. For example, the value must be "png", not ".png".
10622 /// Note that when the file name has multiple extensions (example.tar.gz), only the last one should be captured ("gz", not "tar.gz").
10623 ///
10624 /// # Examples
10625 ///
10626 /// - `png`
10627 pub const URL_EXTENSION: &str = "url.extension";
10628
10629 /// Portion of the url after the `#`, such as "top".
10630 /// The `#` is not part of the fragment.
10631 pub const URL_FRAGMENT: &str = "url.fragment";
10632
10633 /// 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.
10634 ///
10635 /// # Examples
10636 ///
10637 /// - `https://www.elastic.co:443/search?q=elasticsearch#top`
10638 pub const URL_FULL: &str = "url.full";
10639
10640 /// Unmodified original url as seen in the event source.
10641 /// 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.
10642 /// This field is meant to represent the URL as it was observed, complete or not.
10643 ///
10644 /// # Examples
10645 ///
10646 /// - `https://www.elastic.co:443/search?q=elasticsearch#top or /search?q=elasticsearch`
10647 pub const URL_ORIGINAL: &str = "url.original";
10648
10649 /// Password of the request.
10650 pub const URL_PASSWORD: &str = "url.password";
10651
10652 /// Path of the request, such as "/search".
10653 pub const URL_PATH: &str = "url.path";
10654
10655 /// Port of the request, such as 443.
10656 ///
10657 /// # Examples
10658 ///
10659 /// - `443`
10660 pub const URL_PORT: &str = "url.port";
10661
10662 /// The query field describes the query string of the request, such as "q=elasticsearch".
10663 /// The `?` is excluded from the query string. If a URL contains no `?`, there is no query field. If there is a `?` but no query, the query field exists with an empty string. The `exists` query can be used to differentiate between the two cases.
10664 pub const URL_QUERY: &str = "url.query";
10665
10666 /// The highest registered url domain, stripped of the subdomain.
10667 /// For example, the registered domain for "foo.example.com" is "example.com".
10668 /// 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".
10669 ///
10670 /// # Examples
10671 ///
10672 /// - `example.com`
10673 pub const URL_REGISTERED_DOMAIN: &str = "url.registered_domain";
10674
10675 /// Scheme of the request, such as "https".
10676 /// Note: The `:` is not part of the scheme.
10677 ///
10678 /// # Examples
10679 ///
10680 /// - `https`
10681 pub const URL_SCHEME: &str = "url.scheme";
10682
10683 /// The subdomain portion of a fully qualified domain name includes all of the names except the host name under the registered_domain. In a partially qualified domain, or if the the qualification level of the full name cannot be determined, subdomain contains all of the names below the registered domain.
10684 /// For example the subdomain portion of "www.east.mydomain.co.uk" is "east". If the domain has multiple levels of subdomain, such as "sub2.sub1.example.com", the subdomain field should contain "sub2.sub1", with no trailing period.
10685 ///
10686 /// # Examples
10687 ///
10688 /// - `east`
10689 pub const URL_SUBDOMAIN: &str = "url.subdomain";
10690
10691 /// 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".
10692 /// 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".
10693 ///
10694 /// # Examples
10695 ///
10696 /// - `co.uk`
10697 pub const URL_TOP_LEVEL_DOMAIN: &str = "url.top_level_domain";
10698
10699 /// Username of the request.
10700 pub const URL_USERNAME: &str = "url.username";
10701}
10702
10703/// The user fields describe information about the user that is relevant to the event.
10704
10705/// Fields can have one entry or multiple entries. If a user has more than one id, provide an array that includes all of them.
10706pub mod user {
10707
10708 /// Name of the directory the user is a member of.
10709 /// For example, an LDAP or Active Directory domain name.
10710 pub const USER_CHANGES_DOMAIN: &str = "user.changes.domain";
10711
10712 /// User email address.
10713 pub const USER_CHANGES_EMAIL: &str = "user.changes.email";
10714
10715 /// User's full name, if available.
10716 ///
10717 /// # Examples
10718 ///
10719 /// - `Albert Einstein`
10720 pub const USER_CHANGES_FULL_NAME: &str = "user.changes.full_name";
10721
10722 /// Name of the directory the group is a member of.
10723 /// For example, an LDAP or Active Directory domain name.
10724 pub const USER_CHANGES_GROUP_DOMAIN: &str = "user.changes.group.domain";
10725
10726 /// Unique identifier for the group on the system/platform.
10727 pub const USER_CHANGES_GROUP_ID: &str = "user.changes.group.id";
10728
10729 /// Name of the group.
10730 pub const USER_CHANGES_GROUP_NAME: &str = "user.changes.group.name";
10731
10732 /// Unique user hash to correlate information for a user in anonymized form.
10733 /// Useful if `user.id` or `user.name` contain confidential information and cannot be used.
10734 pub const USER_CHANGES_HASH: &str = "user.changes.hash";
10735
10736 /// Unique identifier of the user.
10737 ///
10738 /// # Examples
10739 ///
10740 /// - `S-1-5-21-202424912787-2692429404-2351956786-1000`
10741 pub const USER_CHANGES_ID: &str = "user.changes.id";
10742
10743 /// Short name or login of the user.
10744 ///
10745 /// # Examples
10746 ///
10747 /// - `a.einstein`
10748 pub const USER_CHANGES_NAME: &str = "user.changes.name";
10749
10750 /// Array of user roles at the time of the event.
10751 ///
10752 /// # Examples
10753 ///
10754 /// - `["kibana_admin", "reporting_user"]`
10755 pub const USER_CHANGES_ROLES: &str = "user.changes.roles";
10756
10757 /// Name of the directory the user is a member of.
10758 /// For example, an LDAP or Active Directory domain name.
10759 pub const USER_DOMAIN: &str = "user.domain";
10760
10761 /// Name of the directory the user is a member of.
10762 /// For example, an LDAP or Active Directory domain name.
10763 pub const USER_EFFECTIVE_DOMAIN: &str = "user.effective.domain";
10764
10765 /// User email address.
10766 pub const USER_EFFECTIVE_EMAIL: &str = "user.effective.email";
10767
10768 /// User's full name, if available.
10769 ///
10770 /// # Examples
10771 ///
10772 /// - `Albert Einstein`
10773 pub const USER_EFFECTIVE_FULL_NAME: &str = "user.effective.full_name";
10774
10775 /// Name of the directory the group is a member of.
10776 /// For example, an LDAP or Active Directory domain name.
10777 pub const USER_EFFECTIVE_GROUP_DOMAIN: &str = "user.effective.group.domain";
10778
10779 /// Unique identifier for the group on the system/platform.
10780 pub const USER_EFFECTIVE_GROUP_ID: &str = "user.effective.group.id";
10781
10782 /// Name of the group.
10783 pub const USER_EFFECTIVE_GROUP_NAME: &str = "user.effective.group.name";
10784
10785 /// Unique user hash to correlate information for a user in anonymized form.
10786 /// Useful if `user.id` or `user.name` contain confidential information and cannot be used.
10787 pub const USER_EFFECTIVE_HASH: &str = "user.effective.hash";
10788
10789 /// Unique identifier of the user.
10790 ///
10791 /// # Examples
10792 ///
10793 /// - `S-1-5-21-202424912787-2692429404-2351956786-1000`
10794 pub const USER_EFFECTIVE_ID: &str = "user.effective.id";
10795
10796 /// Short name or login of the user.
10797 ///
10798 /// # Examples
10799 ///
10800 /// - `a.einstein`
10801 pub const USER_EFFECTIVE_NAME: &str = "user.effective.name";
10802
10803 /// Array of user roles at the time of the event.
10804 ///
10805 /// # Examples
10806 ///
10807 /// - `["kibana_admin", "reporting_user"]`
10808 pub const USER_EFFECTIVE_ROLES: &str = "user.effective.roles";
10809
10810 /// User email address.
10811 pub const USER_EMAIL: &str = "user.email";
10812
10813 /// User's full name, if available.
10814 ///
10815 /// # Examples
10816 ///
10817 /// - `Albert Einstein`
10818 pub const USER_FULL_NAME: &str = "user.full_name";
10819
10820 /// Name of the directory the group is a member of.
10821 /// For example, an LDAP or Active Directory domain name.
10822 pub const USER_GROUP_DOMAIN: &str = "user.group.domain";
10823
10824 /// Unique identifier for the group on the system/platform.
10825 pub const USER_GROUP_ID: &str = "user.group.id";
10826
10827 /// Name of the group.
10828 pub const USER_GROUP_NAME: &str = "user.group.name";
10829
10830 /// Unique user hash to correlate information for a user in anonymized form.
10831 /// Useful if `user.id` or `user.name` contain confidential information and cannot be used.
10832 pub const USER_HASH: &str = "user.hash";
10833
10834 /// Unique identifier of the user.
10835 ///
10836 /// # Examples
10837 ///
10838 /// - `S-1-5-21-202424912787-2692429404-2351956786-1000`
10839 pub const USER_ID: &str = "user.id";
10840
10841 /// Short name or login of the user.
10842 ///
10843 /// # Examples
10844 ///
10845 /// - `a.einstein`
10846 pub const USER_NAME: &str = "user.name";
10847
10848 /// A risk classification level calculated by an internal system as part of entity analytics and entity risk scoring.
10849 ///
10850 /// # Examples
10851 ///
10852 /// - `High`
10853 pub const USER_RISK_CALCULATED_LEVEL: &str = "user.risk.calculated_level";
10854
10855 /// A risk classification score calculated by an internal system as part of entity analytics and entity risk scoring.
10856 ///
10857 /// # Examples
10858 ///
10859 /// - `880.73`
10860 pub const USER_RISK_CALCULATED_SCORE: &str = "user.risk.calculated_score";
10861
10862 /// A risk classification score calculated by an internal system as part of entity analytics and entity risk scoring, and normalized to a range of 0 to 100.
10863 ///
10864 /// # Examples
10865 ///
10866 /// - `88.73`
10867 pub const USER_RISK_CALCULATED_SCORE_NORM: &str = "user.risk.calculated_score_norm";
10868
10869 /// A risk classification level obtained from outside the system, such as from some external Threat Intelligence Platform.
10870 ///
10871 /// # Examples
10872 ///
10873 /// - `High`
10874 pub const USER_RISK_STATIC_LEVEL: &str = "user.risk.static_level";
10875
10876 /// A risk classification score obtained from outside the system, such as from some external Threat Intelligence Platform.
10877 ///
10878 /// # Examples
10879 ///
10880 /// - `830.0`
10881 pub const USER_RISK_STATIC_SCORE: &str = "user.risk.static_score";
10882
10883 /// A risk classification score obtained from outside the system, such as from some external Threat Intelligence Platform, and normalized to a range of 0 to 100.
10884 ///
10885 /// # Examples
10886 ///
10887 /// - `83.0`
10888 pub const USER_RISK_STATIC_SCORE_NORM: &str = "user.risk.static_score_norm";
10889
10890 /// Array of user roles at the time of the event.
10891 ///
10892 /// # Examples
10893 ///
10894 /// - `["kibana_admin", "reporting_user"]`
10895 pub const USER_ROLES: &str = "user.roles";
10896
10897 /// Name of the directory the user is a member of.
10898 /// For example, an LDAP or Active Directory domain name.
10899 pub const USER_TARGET_DOMAIN: &str = "user.target.domain";
10900
10901 /// User email address.
10902 pub const USER_TARGET_EMAIL: &str = "user.target.email";
10903
10904 /// User's full name, if available.
10905 ///
10906 /// # Examples
10907 ///
10908 /// - `Albert Einstein`
10909 pub const USER_TARGET_FULL_NAME: &str = "user.target.full_name";
10910
10911 /// Name of the directory the group is a member of.
10912 /// For example, an LDAP or Active Directory domain name.
10913 pub const USER_TARGET_GROUP_DOMAIN: &str = "user.target.group.domain";
10914
10915 /// Unique identifier for the group on the system/platform.
10916 pub const USER_TARGET_GROUP_ID: &str = "user.target.group.id";
10917
10918 /// Name of the group.
10919 pub const USER_TARGET_GROUP_NAME: &str = "user.target.group.name";
10920
10921 /// Unique user hash to correlate information for a user in anonymized form.
10922 /// Useful if `user.id` or `user.name` contain confidential information and cannot be used.
10923 pub const USER_TARGET_HASH: &str = "user.target.hash";
10924
10925 /// Unique identifier of the user.
10926 ///
10927 /// # Examples
10928 ///
10929 /// - `S-1-5-21-202424912787-2692429404-2351956786-1000`
10930 pub const USER_TARGET_ID: &str = "user.target.id";
10931
10932 /// Short name or login of the user.
10933 ///
10934 /// # Examples
10935 ///
10936 /// - `a.einstein`
10937 pub const USER_TARGET_NAME: &str = "user.target.name";
10938
10939 /// Array of user roles at the time of the event.
10940 ///
10941 /// # Examples
10942 ///
10943 /// - `["kibana_admin", "reporting_user"]`
10944 pub const USER_TARGET_ROLES: &str = "user.target.roles";
10945}
10946
10947/// The user_agent fields normally come from a browser request.
10948
10949/// They often show up in web service logs coming from the parsed user agent string.
10950pub mod user_agent {
10951
10952 /// Name of the device.
10953 ///
10954 /// # Examples
10955 ///
10956 /// - `iPhone`
10957 pub const USER_AGENT_DEVICE_NAME: &str = "user_agent.device.name";
10958
10959 /// Name of the user agent.
10960 ///
10961 /// # Examples
10962 ///
10963 /// - `Safari`
10964 pub const USER_AGENT_NAME: &str = "user_agent.name";
10965
10966 /// Unparsed user_agent string.
10967 ///
10968 /// # Examples
10969 ///
10970 /// - `Mozilla/5.0 (iPhone; CPU iPhone OS 12_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0 Mobile/15E148 Safari/604.1`
10971 pub const USER_AGENT_ORIGINAL: &str = "user_agent.original";
10972
10973 /// OS family (such as redhat, debian, freebsd, windows).
10974 ///
10975 /// # Examples
10976 ///
10977 /// - `debian`
10978 pub const USER_AGENT_OS_FAMILY: &str = "user_agent.os.family";
10979
10980 /// Operating system name, including the version or code name.
10981 ///
10982 /// # Examples
10983 ///
10984 /// - `Mac OS Mojave`
10985 pub const USER_AGENT_OS_FULL: &str = "user_agent.os.full";
10986
10987 /// Operating system kernel version as a raw string.
10988 ///
10989 /// # Examples
10990 ///
10991 /// - `4.4.0-112-generic`
10992 pub const USER_AGENT_OS_KERNEL: &str = "user_agent.os.kernel";
10993
10994 /// Operating system name, without the version.
10995 ///
10996 /// # Examples
10997 ///
10998 /// - `Mac OS X`
10999 pub const USER_AGENT_OS_NAME: &str = "user_agent.os.name";
11000
11001 /// Operating system platform (such centos, ubuntu, windows).
11002 ///
11003 /// # Examples
11004 ///
11005 /// - `darwin`
11006 pub const USER_AGENT_OS_PLATFORM: &str = "user_agent.os.platform";
11007
11008 /// Use the `os.type` field to categorize the operating system into one of the broad commercial families.
11009 /// If the OS you're dealing with is not listed as an expected value, the field should not be populated. Please let us know by opening an issue with ECS, to propose its addition.
11010 ///
11011 /// # Examples
11012 ///
11013 /// - `macos`
11014 pub const USER_AGENT_OS_TYPE: &str = "user_agent.os.type";
11015
11016 /// Operating system version as a raw string.
11017 ///
11018 /// # Examples
11019 ///
11020 /// - `10.14.1`
11021 pub const USER_AGENT_OS_VERSION: &str = "user_agent.os.version";
11022
11023 /// Version of the user agent.
11024 ///
11025 /// # Examples
11026 ///
11027 /// - `12.0`
11028 pub const USER_AGENT_VERSION: &str = "user_agent.version";
11029}
11030
11031/// 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.
11032
11033/// 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.
11034
11035/// 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.
11036
11037/// 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.
11038pub mod vlan {
11039
11040 /// VLAN ID as reported by the observer.
11041 ///
11042 /// # Examples
11043 ///
11044 /// - `10`
11045 pub const VLAN_ID: &str = "vlan.id";
11046
11047 /// Optional VLAN name as reported by the observer.
11048 ///
11049 /// # Examples
11050 ///
11051 /// - `outside`
11052 pub const VLAN_NAME: &str = "vlan.name";
11053}
11054
11055/// The vulnerability fields describe information about a vulnerability that is relevant to an event.
11056pub mod vulnerability {
11057
11058 /// 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])
11059 /// This field must be an array.
11060 ///
11061 /// # Examples
11062 ///
11063 /// - `["Firewall"]`
11064 pub const VULNERABILITY_CATEGORY: &str = "vulnerability.category";
11065
11066 /// The classification of the vulnerability scoring system. For example (https://www.first.org/cvss/)
11067 ///
11068 /// # Examples
11069 ///
11070 /// - `CVSS`
11071 pub const VULNERABILITY_CLASSIFICATION: &str = "vulnerability.classification";
11072
11073 /// 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])
11074 ///
11075 /// # Examples
11076 ///
11077 /// - `In macOS before 2.12.6, there is a vulnerability in the RPC...`
11078 pub const VULNERABILITY_DESCRIPTION: &str = "vulnerability.description";
11079
11080 /// The type of identifier used for this vulnerability. For example (https://cve.mitre.org/about/)
11081 ///
11082 /// # Examples
11083 ///
11084 /// - `CVE`
11085 pub const VULNERABILITY_ENUMERATION: &str = "vulnerability.enumeration";
11086
11087 /// 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]
11088 ///
11089 /// # Examples
11090 ///
11091 /// - `CVE-2019-00001`
11092 pub const VULNERABILITY_ID: &str = "vulnerability.id";
11093
11094 /// A resource that provides additional information, context, and mitigations for the identified vulnerability.
11095 ///
11096 /// # Examples
11097 ///
11098 /// - `https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-6111`
11099 pub const VULNERABILITY_REFERENCE: &str = "vulnerability.reference";
11100
11101 /// The report or scan identification number.
11102 ///
11103 /// # Examples
11104 ///
11105 /// - `20191018.0001`
11106 pub const VULNERABILITY_REPORT_ID: &str = "vulnerability.report_id";
11107
11108 /// The name of the vulnerability scanner vendor.
11109 ///
11110 /// # Examples
11111 ///
11112 /// - `Tenable`
11113 pub const VULNERABILITY_SCANNER_VENDOR: &str = "vulnerability.scanner.vendor";
11114
11115 /// Scores can range from 0.0 to 10.0, with 10.0 being the most severe.
11116 /// 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)
11117 ///
11118 /// # Examples
11119 ///
11120 /// - `5.5`
11121 pub const VULNERABILITY_SCORE_BASE: &str = "vulnerability.score.base";
11122
11123 /// Scores can range from 0.0 to 10.0, with 10.0 being the most severe.
11124 /// Environmental scores cover an assessment for any modified Base metrics, confidentiality, integrity, and availability requirements. For example (https://www.first.org/cvss/specification-document)
11125 ///
11126 /// # Examples
11127 ///
11128 /// - `5.5`
11129 pub const VULNERABILITY_SCORE_ENVIRONMENTAL: &str = "vulnerability.score.environmental";
11130
11131 /// Scores can range from 0.0 to 10.0, with 10.0 being the most severe.
11132 /// Temporal scores cover an assessment for code maturity, remediation level, and confidence. For example (https://www.first.org/cvss/specification-document)
11133 pub const VULNERABILITY_SCORE_TEMPORAL: &str = "vulnerability.score.temporal";
11134
11135 /// 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.
11136 /// 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)
11137 ///
11138 /// # Examples
11139 ///
11140 /// - `2.0`
11141 pub const VULNERABILITY_SCORE_VERSION: &str = "vulnerability.score.version";
11142
11143 /// The severity of the vulnerability can help with metrics and internal prioritization regarding remediation. For example (https://nvd.nist.gov/vuln-metrics/cvss)
11144 ///
11145 /// # Examples
11146 ///
11147 /// - `Critical`
11148 pub const VULNERABILITY_SEVERITY: &str = "vulnerability.severity";
11149}
11150
11151/// 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.
11152
11153/// When the certificate relates to a file, use the fields at `file.x509`. When hashes of the DER-encoded certificate are available, the `hash` data set should be populated as well (e.g. `file.hash.sha256`).
11154
11155/// Events that contain certificate information about network connections, should use the x509 fields under the relevant TLS fields: `tls.server.x509` and/or `tls.client.x509`.
11156pub mod x509 {
11157
11158 /// 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.
11159 ///
11160 /// # Examples
11161 ///
11162 /// - `*.elastic.co`
11163 pub const X509_ALTERNATIVE_NAMES: &str = "x509.alternative_names";
11164
11165 /// List of common name (CN) of issuing certificate authority.
11166 ///
11167 /// # Examples
11168 ///
11169 /// - `Example SHA2 High Assurance Server CA`
11170 pub const X509_ISSUER_COMMON_NAME: &str = "x509.issuer.common_name";
11171
11172 /// List of country \(C) codes
11173 ///
11174 /// # Examples
11175 ///
11176 /// - `US`
11177 pub const X509_ISSUER_COUNTRY: &str = "x509.issuer.country";
11178
11179 /// Distinguished name (DN) of issuing certificate authority.
11180 ///
11181 /// # Examples
11182 ///
11183 /// - `C=US, O=Example Inc, OU=www.example.com, CN=Example SHA2 High Assurance Server CA`
11184 pub const X509_ISSUER_DISTINGUISHED_NAME: &str = "x509.issuer.distinguished_name";
11185
11186 /// List of locality names (L)
11187 ///
11188 /// # Examples
11189 ///
11190 /// - `Mountain View`
11191 pub const X509_ISSUER_LOCALITY: &str = "x509.issuer.locality";
11192
11193 /// List of organizations (O) of issuing certificate authority.
11194 ///
11195 /// # Examples
11196 ///
11197 /// - `Example Inc`
11198 pub const X509_ISSUER_ORGANIZATION: &str = "x509.issuer.organization";
11199
11200 /// List of organizational units (OU) of issuing certificate authority.
11201 ///
11202 /// # Examples
11203 ///
11204 /// - `www.example.com`
11205 pub const X509_ISSUER_ORGANIZATIONAL_UNIT: &str = "x509.issuer.organizational_unit";
11206
11207 /// List of state or province names (ST, S, or P)
11208 ///
11209 /// # Examples
11210 ///
11211 /// - `California`
11212 pub const X509_ISSUER_STATE_OR_PROVINCE: &str = "x509.issuer.state_or_province";
11213
11214 /// Time at which the certificate is no longer considered valid.
11215 ///
11216 /// # Examples
11217 ///
11218 /// - `2020-07-16T03:15:39Z`
11219 pub const X509_NOT_AFTER: &str = "x509.not_after";
11220
11221 /// Time at which the certificate is first considered valid.
11222 ///
11223 /// # Examples
11224 ///
11225 /// - `2019-08-16T01:40:25Z`
11226 pub const X509_NOT_BEFORE: &str = "x509.not_before";
11227
11228 /// Algorithm used to generate the public key.
11229 ///
11230 /// # Examples
11231 ///
11232 /// - `RSA`
11233 pub const X509_PUBLIC_KEY_ALGORITHM: &str = "x509.public_key_algorithm";
11234
11235 /// The curve used by the elliptic curve public key algorithm. This is algorithm specific.
11236 ///
11237 /// # Examples
11238 ///
11239 /// - `nistp521`
11240 pub const X509_PUBLIC_KEY_CURVE: &str = "x509.public_key_curve";
11241
11242 /// Exponent used to derive the public key. This is algorithm specific.
11243 ///
11244 /// # Examples
11245 ///
11246 /// - `65537`
11247 pub const X509_PUBLIC_KEY_EXPONENT: &str = "x509.public_key_exponent";
11248
11249 /// The size of the public key space in bits.
11250 ///
11251 /// # Examples
11252 ///
11253 /// - `2048`
11254 pub const X509_PUBLIC_KEY_SIZE: &str = "x509.public_key_size";
11255
11256 /// Unique serial number issued by the certificate authority. For consistency, if this value is alphanumeric, it should be formatted without colons and uppercase characters.
11257 ///
11258 /// # Examples
11259 ///
11260 /// - `55FBB9C7DEBF09809D12CCAA`
11261 pub const X509_SERIAL_NUMBER: &str = "x509.serial_number";
11262
11263 /// 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.
11264 ///
11265 /// # Examples
11266 ///
11267 /// - `SHA256-RSA`
11268 pub const X509_SIGNATURE_ALGORITHM: &str = "x509.signature_algorithm";
11269
11270 /// List of common names (CN) of subject.
11271 ///
11272 /// # Examples
11273 ///
11274 /// - `shared.global.example.net`
11275 pub const X509_SUBJECT_COMMON_NAME: &str = "x509.subject.common_name";
11276
11277 /// List of country \(C) code
11278 ///
11279 /// # Examples
11280 ///
11281 /// - `US`
11282 pub const X509_SUBJECT_COUNTRY: &str = "x509.subject.country";
11283
11284 /// Distinguished name (DN) of the certificate subject entity.
11285 ///
11286 /// # Examples
11287 ///
11288 /// - `C=US, ST=California, L=San Francisco, O=Example, Inc., CN=shared.global.example.net`
11289 pub const X509_SUBJECT_DISTINGUISHED_NAME: &str = "x509.subject.distinguished_name";
11290
11291 /// List of locality names (L)
11292 ///
11293 /// # Examples
11294 ///
11295 /// - `San Francisco`
11296 pub const X509_SUBJECT_LOCALITY: &str = "x509.subject.locality";
11297
11298 /// List of organizations (O) of subject.
11299 ///
11300 /// # Examples
11301 ///
11302 /// - `Example, Inc.`
11303 pub const X509_SUBJECT_ORGANIZATION: &str = "x509.subject.organization";
11304
11305 /// List of organizational units (OU) of subject.
11306 pub const X509_SUBJECT_ORGANIZATIONAL_UNIT: &str = "x509.subject.organizational_unit";
11307
11308 /// List of state or province names (ST, S, or P)
11309 ///
11310 /// # Examples
11311 ///
11312 /// - `California`
11313 pub const X509_SUBJECT_STATE_OR_PROVINCE: &str = "x509.subject.state_or_province";
11314
11315 /// Version of x509 format.
11316 ///
11317 /// # Examples
11318 ///
11319 /// - `3`
11320 pub const X509_VERSION_NUMBER: &str = "x509.version_number";
11321}