Skip to content

A short and concise representation of all STIX objects, used for reference in other cyber-security related projects.

Notifications You must be signed in to change notification settings

arelli/simpleSTIX

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 

Repository files navigation

Guide to STIX 2.1 ontology1

Alt text
Structured Threat Information Expression (STIX™) is a language and serialization format used to exchange cyber threat intelligence (CTI), aiming to increase accuracy and enable machine compatibility. It is developed by a consortium of field experts across many big corporations and organizations since 2015. The latest version of the standard is STIX 2.1, and it is currently in its early stages, still being adopted by many companies. The full standard is a horrifying 313 pages document, so I took the time to write this concise guide.

What is Cyber Threat Intelligence (CTI)

"Threat intelligence is data that is collected, processed, and analyzed to understand a threat actor’s motives, targets, and attack behaviors", according to the Crowdstrike blog. In other words, it is all the data someone can gather on a cyber-threat. Being still in its infancy as an industry, all this work was done manually untill recently, in the form of human-generated reports with thousands of words and often times, ambiguous expressions. Some emerging formatting standards now like STIX, aim to revolutionize this practive by enforcing a set of rules that will make the cooperations of both CTI analysts and their computers, more efficient.

The STIX format

The STIX Technical Comitee has established a toolset for CTI analysts to be able to express their intelligence accurately, with the extra advantage of Machine Readable Threat Intelligence(MRTI). This is done with removing the need for old-fashioned pdf reports, and moving to a more flexible object-oriented representation in a JSON serialized file. The objects defined by the STIX2.1 standard include:

  • STIX Domain Objects(SDOs): the basic building blocks of the CTI. They hold the main pieces of information, and use the rest of the STIX objects to add context.
  • STIX Cyber-Observables(SCOs): the atomic, low-level objects that contain data about physical and virtual entities such as computers and networks.
  • STIX Relationship Objects(SROs): the basic ways two objects might be related to one another.
  • STIX Extention Definition Object: new STIX objects created per the specific needs of the CTI producer, by the CTI producer.
  • STIX Meta Objects:
  • STIX Patterning Language:

The STIX Domain Objects (SDOs)

The SDOs in STIX play a very importand role, because they represent the basic entities of information, as we will see below. There are 19 SDOs, each one representing different physical entities and with different specifications.

Attack Pattern

Alt text
It (textually) describes a Tactic, Technique and Procedure(TTP): the way a threat actor(e.g. malicious hacker) may have compromised a system. For example it might be describing a Man in the Middle (MITM) or a Spear fishing attack. It can also refference the articular threat actor SDO(see below) that has been observed practicing that exact TTP.

Detailed Object Variables

Table with Attack Pattern object variables(R=required):

Required Common Optional Common Attack Pattern-Specific
(R) type created_by_ref (R) name
(R) spec_version revoked description
(R) id labels aliases
(R) created confidence kill_chain_phases
(R) modified lang
external_references
object_marking_refs
granular_markings
extensions
labels
Example of JSON representation

This is an example Attack Pattern JSON file.

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "title": "attack-pattern",
  "description": "Attack Patterns are a type of TTP that describe ways that adversaries attempt to compromise targets. ",
  "type": "object",
  "allOf": [
    {
      "$ref": "../common/core.json"
    },
    {
      "properties": {
        "type": {
          "type": "string",
          "description": "The type of this object, which MUST be the literal `attack-pattern`.",
          "enum": [
            "attack-pattern"
          ]
        },
        "id": {
          "title": "id",
          "pattern": "^attack-pattern--"
        },
        "name": {
          "type": "string",
          "description": "The name used to identify the Attack Pattern."
        },
        "description": {
          "type": "string",
          "description": "A description that provides more details and context about the Attack Pattern,
                            potentially including its purpose and its key characteristics."
        },
        "kill_chain_phases": {
          "type": "array",
          "description": "The list of kill chain phases for which this attack pattern is used.",
          "items": {
            "$ref": "../common/kill-chain-phase.json"
          },
          "minItems": 1
        }
      }
    }
  ],
  "required": [
    "name"
  ]
}

Campaign

Alt text
Defines a grouping of attacks over a specific set of targets, by a specific team or person over a period of time. They are attributed to an Intrusion Set and Threat Actors. They can also be characterized by the incidents they cause, the infrastructure they target, and the tools or malware they use.

Detailed Object Variables

Table with Campaign object variables:

Required Common Optional Common Campaign-Specific
(R) type created_by_ref (R) name
(R) spec_version revoked description
(R) id confidence aliases
(R) created lang first_seen
(R) modified external_references last_seen
object_marking_refs objective
granular_markings
extensions
labels

Identity

Alt text
They represent actual individuals,types of systems, organizations or groups. Can represent targets of attacks, information sources, STIX object authors, and threat actors.

Detailed Object Variables

Table with Identity object variables:

Required Common Optional Common Identity-Specific
(R) type created_by_ref (R) name
(R) spec_version revoked description
(R) id confidence roles
(R) created lang identity_class
(R) modified external_references sectors
object_marking_refs contact_information
granular_markings
extensions
labels

Indicator

Alt text
Patterns that can be used to detect malicious activity, for example malicious domains. It uses the Stix Patterning Language to specify these in a textual format. It combines the Kill Chain phase with the time window of usefulness of the information. It can describe malware, tools or attack patterns that it detects and it can also imply the presence of campaigns, threat actors, intrusion sets and more.

Detailed Object Variables

Table with Indicator object variables:

Required Common Optional Common Indicator-Specific
(R) type created_by_ref name
(R) spec_version revoked description
(R) id confidence (R) indicator_types
(R) created lang (R) pattern
(R) modified external_references (R) pattern_type
object_marking_refs pattern_version
granular_markings (R) valid_from
extensions valid_until
labels kill_chain_phases

Infrastructure

Alt text
Describes information about both defensive and offensive infrastructure in textual format.

Detailed Object Variables

Table with Infrastructure object variables:

Required Common Optional Common Infrastructure-Specific
(R) type created_by_ref (R) name
(R) spec_version revoked description
(R) id confidence (R) infrastructure_types
(R) created lang aliases
(R) modified external_references kill_chain_phases
object_marking_refs first_seen
granular_markings last_seen
extensions
labels

Location

Alt text
It represents a geographic location,for example "East Russsia" or "37.981911° N, 23.755400° E" (note that exact locations must be in WSG84 format). Can be related to an Intrusion Set or Identity to imply their location. It must not be confused with governments and land owners, it only shows geographical locations.

Detailed Object Variables

Table with Location object variables:

Required Common Optional Common Location-Specific
(R) type created_by_ref name
(R) spec_version revoked description
(R) id confidence latitude
(R) created lang longtitude
(R) modified external_references precision
object_marking_refs region
granular_markings country
extensions administrative_area
labels city
street_address
postal_code

Malware

Alt text
It is a malicious code/program, part of a TTP usually. It captures the detailed way the malware works, and what it does. STIX Patterning Language is strongly advised to be used, because of the interoperability benefits it would offer.

Detailed Object Variables

Table with Malware object variables:

Required Common Optional Common Malware-Specific
(R) type created_by_ref name
(R) spec_version revoked description
(R) id confidence (R) malware_types
(R) created lang (R) is_family
(R) modified external_references aliases
object_marking_refs kill_chain_phases
granular_markings first_seen
extensions last_seen
labels os_execution_envs
architectire_execution_envs
implementation_languages
capabilities
sample_refs

Note

Alt text
They can be created by anyone(including the object creator and consumers) to convey human-readable messages or other information that cannot be included in the initial STIX object.

Detailed Object Variables

Table with Note object variables:

Required Common Optional Common Note-Specific
(R) type created_by_ref abstract
(R) spec_version revoked (R) content
(R) id confidence authors
(R) created lang (R) object_refs
(R) modified external_references
object_marking_refs
granular_markings
extensions
labels

Observed Data

Alt text
It contains low-level information on observed data, such as files(filenames, hashes etc), systems(models and manufacturers) and networks(IP addresses etc.). To improve understandability, context must be added with the use of SCOs! An SRO such as aSighting can also link the Observed Data object with a Malware or an Indicator SDO.

Detailed Object Variables

Table with Observed Data object variables:

Required Common Optional Common Observed-Data-Specific
(R) type created_by_ref (R) first_observed
(R) spec_version revoked (R) last_observed
(R) id confidence (R) number_observed
(R) created lang objects
(R) modified external_references object_refs
object_marking_refs
granular_markings
extensions
labels

Threat Actor

Alt text
Individuals, groups or organizations that may have malicious intent. They can be affiliated with certain Intrusion Sets, and can run Campaigns against targets. In the STIX Specification there are STIX Vocabularies that define the set of words that must be used to express some of the properties of the Threat actos, such as sophistication level, resoursec, capabilities, motives etc.

Detailed Object Variables

Table with Threat Actor object variables:

Required Common Optional Common Threat-Actor-Specific
(R) type created_by_ref (R) first_observed
(R) spec_version revoked (R) name
(R) id confidence description
(R) created lang (R) threat_actor_types
(R) modified external_references aliases
object_marking_refs first_seen
granular_markings last_seen
extensions roles
labels goals
sophistication
resource_level
primary_motivation
secondary_motivation
personal_motivation

Tool

Alt text
Tools and software that is used in malicious activity. It differs from the malware in the way that these tools can be used legitimately by eg. system administrators(for example nmap or PowerShell). It characterizes the properties of these tools, and can be related to a Threat Actor and the way they use the tool.

Detailed Object Variables

Table with Tool object variables:

Required Common Optional Common Tool-Specific
(R) type created_by_ref (R) name
(R) spec_version revoked description
(R) id confidence (R) tools_types
(R) created lang aliases
(R) modified external_references kill_chain_phases
object_marking_refs tool_version
granular_markings
extensions
labels

Vulnerabillity

Alt text
Defines vulnerabilities found in software, hardware or physical practices of an organiation. It can be expressed as one or many CVEs.

Detailed Object Variables

Table with Vulnerability object variables:

Required Common Optional Common Vulnerability-Specific
(R) type created_by_ref external_references
(R) spec_version revoked (R) name
(R) id confidence description
(R) created lang
(R) modified external_references
object_marking_refs
granular_markings
extensions
labels

Course of Action

Alt text
Describes actions that can be taken either to avoid, defent against or recover from an attack. It does not support automated (machine readable) responses, and it is still a SDO under development. It can be linked with a certain type of an attack, and it is of textual format.

Detailed Object Variables

Table with Course of Action object variables:

Required Common Optional Common Course of Action-Specific
(R) type created_by_ref (R) name
(R) spec_version revoked description
(R) id confidence action (reserved)
(R) created lang
(R) modified external_references
object_marking_refs
granular_markings
extensions
labels

Grouping

Alt text
An abstract, more high level representation of a team of SDOs that have some contextual relationship with one another. Not to be confused with the Report SDO.

Detailed Object Variables

Table with Grouping object variables:

Required Common Optional Common Grouping-Specific
(R) type created_by_ref name
(R) spec_version revoked description
(R) id confidence (R) context
(R) created lang (R) object_refs
(R) modified external_references
object_marking_refs
granular_markings
extensions
labels

Incident

Alt text
Still under developement and not actively used, the Incident SDO can textually represent security related incidents. It can be extended with an extension point using the Extension Definition object.

Detailed Object Variables

Table with Incident object variables:

Required Common Optional Common Incident-Specific
(R) type created_by_ref (R) name
(R) spec_version revoked description
(R) id confidence roles
(R) created lang identity_class
(R) modified external_references sectors
object_marking_refs contact_information
granular_markings
extensions
labels

Intrusion Set

Alt text
A set of hostile behaviours that is believed to be conducted by the same person, team or organization. It may contain multiple campaigns and all the data can be tied to a threat actor, even though it is not neccessary.

Detailed Object Variables

Table with Intrusion Set object variables:

Required Common Optional Common Intrusion Set-Specific
(R) type created_by_ref (R) name
(R) spec_version revoked description
(R) id confidence aliases
(R) created lang first_seen
(R) modified external_references last_seen
object_marking_refs goals
granular_markings resource_level
extensions primary_motivation
labels secondary_motivation

Malware Analysis

Alt text
It contains the results of analysis of a malware instance. It can contain the malware samples must be defanged (archived and password protected).

Detailed Object Variables

Table with Malware Analysis object variables:

Required Common Optional Common Malware Analysis-Specific
(R) type created_by_ref (R) product
(R) spec_version revoked version
(R) id confidence host_vm_ref
(R) created lang operating_system
(R) modified external_references installed_system_ref
object_marking_refs configuration_version
granular_markings module
extensions analysis_engine_version
labels analysis_definition_version
submitted
analysis_started
analysis_ended
av_result
analysis_sco_refs

Opinion

Alt text
A human accessment of the correctness of the information in a STIX Object, produced by someone else, that also has an agreement/disagreement degree field (eg. someone can strongly disagree). It can also express the reason why the author expressed that opinion.

Detailed Object Variables

Table with Opinion object variables:

Required Common Optional Common Opinion-Specific
(R) type created_by_ref explanation
(R) spec_version revoked authors
(R) id confidence (R) opinions
(R) created lang (R) object_refs
(R) modified external_references
object_marking_refs
granular_markings
extensions
labels

Report

Alt text
A collection of threat intelligence objects, that constitute a report on some topic. It is usually used by security firms to disseminate reports on campaigns or known threat groups.

Detailed Object Variables

Table with Report object variables:

Required Common Optional Common Report-Specific
(R) type created_by_ref (R) name
(R) spec_version revoked description
(R) id confidence (R) report_types
(R) created lang (R) published
(R) modified external_references (R) object_refs
object_marking_refs
granular_markings
extensions
labels

STIX Cyber-Observables (SCOs)

The STIX Cyber Observables is a set of more detailed representation of some entities. They are also described as the atomic elements of the data model. There are:

  • Artifact: a link to a file or a url.

    Fields (With X meaning "ID Contributing Properties", something like a secondary key) | Required Common | Optional Common | Object-Specific Properties | |---|---|---| | (R) type | spec_version | mime_type | | (R) id | object_marking_refs | payload_bin (X) | | | granular_markings | url | | | defanged | hashes (X) | | | extensions | encryption_algorithm | | | | decryption_key |
  • Autonomous System: an autonomous or otherwise centrally controlled network system.

    Fields
    Required Common Optional Common Object-Specific properties
    (R) type spec_version (R) number (X)
    (R) id object_marking_refs name
    granular_markings rir
    defanged
    extensions
  • Directory: a filesystem directory.

    Fields
    Required Common Optional Common Object-Specific properties
    (R) type spec_version (R) path
    (R) id object_marking_refs path_enc
    granular_markings ctime
    defanged mtime
    extensions atime
    contains_refs
  • Domain Name: a typical domain name.

    Fields
    Required Common Optional Common Object-Specific properties
    (R) type spec_version (R) value (X)
    (R) id object_marking_refs resolves_to_refs 2
    granular_markings
    defanged
    extensions
  • Email Address: a typical email address.

    Fields
    Required Common Optional Common Object-Specific properties
    (R) type spec_version (R) value (X)
    (R) id object_marking_refs display_name
    granular_markings belongs_to_ref
    defanged
    extensions
  • Email Message: an instance of a typical email message, with all the analytical metadata.

    Fields
    Required Common Optional Common Object-Specific properties
    (R) type spec_version (R) is_multipart
    (R) id object_marking_refs date
    granular_markings content_type
    defanged from_ref (X)
    extensions sender_ref
    to_refs
    cc_refs
    bcc_refs
    message_id
    subject (X)
    received_lines
    additional_header_fields
    body (X)
    body_multipart
    raw_email_ref
  • File: represents the properties of a file, like a file name or a hash. It does NOT contain the file, like the artifact does(?).

    Fields
    Required Common Optional Common Object-Specific Properties
    (R) type spec_version hashes (X)
    (R) id object_marking_refs size
    granular_markings name (X)
    defanged name_enc
    extensions magic_number_index
    mime_type
    ctime
    mtime
    atime
    parent_directory_ref
    contains_ref
    content_ref
  • IPv4: an IP version 4 address.

    Fields
    Required Common Optional Common Object-Specific Properties
    (R) type spec_version (R) value
    (R) id object_marking_refs resolves_to_refs 2
    granular_markings belongs_to_refs2
    defanged
    extensions
  • IPv6: an IP version 6 address.

    Fields
    Required Common Optional Common Object-Specific Properties
    (R) type spec_version (R) value
    (R) id object_marking_refs resolves_to_refs 2
    granular_markings belongs_to_refs2
    defanged
    extensions
  • MAC Address: a Media Access Control address.

    Fields
    Required Common Optional Common Object-Specific Properties
    (R) type spec_version (R) value (X)
    (R) id object_marking_refs
    granular_markings
    defanged
    extensions
  • Mutex: a mutual-exclusion software object.

    Fields
    Required Common Optional Common Object-Specific Properties
    (R) type spec_version (R) name (X)
    (R) id object_marking_refs
    granular_markings
    defanged
    extensions
  • Network Traffic: network traffic from a certain source to a certain destination(even if a connection is not established).

    Fields
    Required Common Optional Common Object-Specific Properties
    (R) type spec_version start (X)
    (R) id object_marking_refs end
    granular_markings is_active
    defanged src_ref (X)
    extensions dst_ref (X)
    src_port (X)
    dst_port (X)
    protocols (X)
    src_byte_count
    dst_byte_count
    src_packets
    dst_packets
    ipfix
    src_payload_ref
    dst_payload_ref
    encapsulates_ref
    encapsulates_by_ref
  • Process: It describes the properties of an instance of a computer program(process).

    Fields
    Required Common Optional Common Object-Specific Properties
    (R) type spec_version is_hidden
    (R) id object_marking_refs pid
    granular_markings created_time
    defanged cwd
    extensions command_line
    environment_variables
    opened_connection_refs
    creator_user_ref
    image_ref
    parent_ref
    child_refs
  • Software: high level propeties of software packages.

    Fields
    Required Common Optional Common Object-Specific Properties
    (R) type spec_version (R) name (X)
    (R) id object_marking_refs cpe (X)
    granular_markings languages
    defanged vendor (X)
    extensions version (X)
  • URL: a Uniform Resource Locator link and its properties.

    Fields
    Required Common Optional Common Object-Specific Properties
    (R) type spec_version (R) value
    (R) id object_marking_refs
    granular_markings
    defanged
    extensions
  • User Account: an instance of a user account(eg. operating system credentials, messaging service/social media credentials etc).

    Fields
    Required Common Optional Common Object-Specific Properties
    (R) type spec_version user_id (X)
    (R) id object_marking_refs credential
    granular_markings account_login (X)
    defanged account_type (X)
    extensions display_name
    is_service_account
    is_privileged
    can_escape_privs
    is_disabled
    account_created
    account_expires
    credential_last_changed
    account_first_login
    account_last_login
  • Windows Registry Key: a windows registry key and its properties.

    Fields
    Required Common Optional Common Object-Specific Properties
    (R) type spec_version key (X)
    (R) id object_marking_refs values (X)
    granular_markings modified_time
    defanged creator_user_ref
    extensions number_of_subkeys
  • X.509 Certificate: (?)

    Fields
    Required Common Optional Common Object-Specific Properties
    (R) type spec_version is_self_signed
    (R) id object_marking_refs hashes (X)
    granular_markings version
    defanged serial_number (X)
    extensions signature_algorithm
    issuer
    validity_not_bevore
    validity_not_after
    subject
    subject_public_key_algorithm
    subject_public_key_modules
    subject_public_key_exponent
    x509_c3_extensions

STIX Relationship Objects(SROs)

The relationship objects connect individual SDOs together, to form graphs of knowledge where the nodes represent the data(SDOs and SCOs) and the edges represent the relationships between objects(SROs).

STIX Generic Relationship Object

Alt text
This is a generic relationship, and it's context is given by the fields referencing it, in the objects it connects.

STIX Sighting Relationship

Alt text
A sighting is a special relationship, that incorporates extra information like a counter that informs us of the times something is sighted.

STIX Extension Definition Object

It is a way to define new STIX objects, like SDOs SCOs and SROs. These custom objects can fulfill specific, usually technical needs, that the STIX technical comitee did not foresee during the development of STIX 2.1. More information can be found here.

STIX Meta Objects

There are two STIX 2.1 meta objects, that give extra meaning to groups of other objects. One of them is the Language Content object, that can represent translations of another objects. The other is Data Markings objects that enforce restrictions, permissions and general guidance to the distribution and use of the CTI.

STIX Patterning Language

Alt text A semantic language that tries to eradicate amgiuous meanings in common expressions used in STIX objects. More info here.

STIX Vocabularies

More information here.

What do to next

After reading and understanding most of the above, you will be ready to see and understand the real-life examples that are shown here. After that, its you and the specification. Good Luck!


Footnotes

  1. All the information contained in this document is also offered through the official OASIS Foundation channels, such as here(for seasoned analysts) and here(for beginners). What I do here is just a summary of the official documentation, with the aim to make it easy to navigate both for beginners that need to learn everything from the beginning and for professionals that need a reminder on something. Also, all the images ar property of OASIS Foundation. Finally, the structure of this document is based on the official course that can be found here.

  2. depreciated in STIX 2.1. 2 3 4 5

About

A short and concise representation of all STIX objects, used for reference in other cyber-security related projects.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published