diff --git a/rfcs/text/0008-threat-intel.md b/rfcs/text/0008-threat-intel.md index d8be1e6498..c53f994cc0 100644 --- a/rfcs/text/0008-threat-intel.md +++ b/rfcs/text/0008-threat-intel.md @@ -2,7 +2,7 @@ - Stage: **2 (candidate)** -- Date: **2021-06-23** +- Date: **2021-07-06** Elastic Security Solution will be adding the capability to ingest, process and utilize threat intelligence information for increasing detection coverage and helping analysts make quicker investigation decisions. Threat intelligence can be collected from a number of sources with a variety of structured and semi-structured data representations. This makes threat intelligence an ideal candidate for ECS mappings. Threat intelligence data will require ECS mappings to normalize it and make it usable in our security solution. This RFC is focused on identifying new field sets and values that need to be created for threat intelligence data. Existing ECS field reuse will be prioritized where possible. If new fields are required we will utilize [STIX Cyber Observable data model](https://docs.oasis-open.org/cti/stix/v2.1/cs01/stix-v2.1-cs01.html#_mlbmudhl16lr) as guidance. @@ -37,6 +37,8 @@ threat.indicator.port | long | 443 | Identifies a threat indicator as a port num threat.indicator.email.address | keyword | phish@evil.com | Identifies a threat indicator as an email address (irrespective of direction). threat.marking.tlp | keyword | RED | Data markings represent restrictions, permissions, and other guidance for how data can be used and shared. Examples could be TLP (WHITE, GREEN, AMBER, RED). threat.indicator.scanner_stats | long | 4 | Count of Anti virus/EDR that successfully detected malicious file or URL. Sources like VirusTotal, Reversing Labs often provide these statistics. +threat.indicator.reference | keyword | https://feodotracker.abuse.ch/ | URL to the intelligence source +threat.indicator.provider | keyword | lrz_urlhaus | The name of the indicator's provider ### Proposed New Values for Event Fieldset @@ -122,8 +124,6 @@ Network Example "email-addr" ], "description": "Email address, domain, port, and IP address observed using an Angler EK campaign.", - "dataset": "threatintel.abuseurl", - "module": "threatintel", "provider": "Abuse.ch", "reference": "https://urlhaus.abuse.ch/url/1292596/", "confidence": "High", @@ -182,8 +182,6 @@ File Example "file" ], "description": "Implant used during an Angler EK campaign.", - "dataset": "threatintel.malwarebazaar", - "module": "threatintel", "provider": "Abuse.ch", "reference": "https://bazaar.abuse.ch/sample/f3ec9a2f2766c6bcf8c2894a9927c227649249ac146aabfe8d26b259be7d7055", "confidence": "High", @@ -361,6 +359,7 @@ Some examples of commercial intelligence include: * Stage 1 correction: https://github.com/elastic/ecs/pull/1100 * Stage 1 (originally stage 2 prior to removal of RFC stage 4): https://github.com/elastic/ecs/pull/1127 * Stage 2: https://github.com/elastic/ecs/pull/1293 + * Stage 2 addendum: https://github.com/elastic/ecs/pull/1502 -- Date: **2021-06-24** +- Date: **2021-07-06** -As these fields represent the enrichment of an existing event with indicator information, they are comprised of three categories of data: +As these fields represent the enrichment of an existing event with indicator information, they are comprised of two categories of data: 1. The indicator's indicator fields, as defined in RFC 0018 -2. Other relevant ECS fields from the indicator (see below) -3. Fields representing the context of the enrichment itself +2. Fields representing the context of the enrichment itself ### Proposed new fields @@ -84,26 +83,20 @@ If it is determined that an event matches a given indicator, that event can be e "tlp": "WHITE" }, "first_seen": "2020-10-01", + "file": { + "hash": { + "sha256": "0c415dd718e3b3728707d579cf8214f54c2942e964975a5f925e0b82fea644b4", + "md5": "1eee2bf3f56d8abed72da2bc523e7431" + }, + "size": 656896, + "name": "invoice.doc" + }, "last_seen": "2020-11-01", + "reference": "https://system.example.com/event/#0001234", "sightings": 4, "type": ["sha256", "md5", "file_name", "file_size"], "description": "file last associated with delivering Angler EK" }, - // event and file fields are copied from the indicator doc, if relevant - "event": { - "provider": "Abuse.ch", - "dataset": "threatintel.abusemalware", - "module": "threatintel", - "reference": "https://system.example.com/event/#0001234" - }, - "file": { - "hash": { - "sha256": "0c415dd718e3b3728707d579cf8214f54c2942e964975a5f925e0b82fea644b4", - "md5": "1eee2bf3f56d8abed72da2bc523e7431" - }, - "size": 656896, - "name": "invoice.doc" - }, /* `matched` will provide context about which of the indicators above matched on this particular enrichment. If multiple matches for this indicator object, this could be a list */ @@ -140,17 +133,17 @@ If it is determined that an event matches a given indicator, that event can be e - policy file-sha256-policy: "match": { "indices": "threat-\*", - "match_field": "file.hash.sha256", - "enrich_fields": ["event", "file", "indicator"] + "match_field": "threat.indicator.file.hash.sha256", + "enrich_fields": ["threat.indicator"] } - set: - field: "threat_match.matched.type" + field: "threat_match.threat.matched.type" value: "file-sha256-policy" - set: - field: "threat_match.matched.field" + field: "threat_match.threat.matched.field" value: "file.hash.sha256" - set: - field: "threat_match.matched.atomic" + field: "threat_match.threat.matched.atomic" value: "{{ file.hash.sha256 }}" - set: field: "threat.enrichments" @@ -158,7 +151,7 @@ If it is determined that an event matches a given indicator, that event can be e override: false - append: field: "threat.enrichments" - value: "{{ threat_match }}" + value: "{{ threat_match.threat }}" - remove: field: "threat_match" @@ -241,6 +234,7 @@ e.g.: * Stage 0: https://github.com/elastic/ecs/pull/1386 * Stage 1: https://github.com/elastic/ecs/pull/1400 * Stage 2: https://github.com/elastic/ecs/pull/1460 + * Stage 2 addendum: https://github.com/elastic/ecs/pull/1502