stix
type: Ontology
comment: An OWL ontology for representing cybersecurity information using the STIX 2 data model.

hasGranularMarking
type: ObjectProperty
domain: StixThing
range: GranularMarking
comment: a GranularMarking that apply to this object

impersonates
type: ObjectProperty
domain: ThreatActor
range: Identity
comment: This Relationship describes that the Threat Actor impersonates the related Identity. For example, an impersonates Relationship from the gh0st Threat Actor to the ACME Corp. Identity means that the actor known as gh0st impersonates ACME Corp.

objectMarking
type: ObjectProperty
inverse of: objectMarkingOf
domain: StixThing
range: MarkingDefinition
comment: a marking-definition object to be applied to this object

variant
type: ObjectProperty
type: SymmetricProperty
type: TransitiveProperty
domain: Malware
range: Malware
comment: This variantOf relation is used to document that one piece of Malware is a variant of another piece of Malware. For example, TorrentLocker is a variant of CryptoLocker.

URL
type: DatatypeProperty
sub property of: stixDataProperty
type: Class
subclass of: StixObservables
comment: The URL Object represents the properties of a uniform resource locator (URL).

commonDataProperty
type: DatatypeProperty
sub property of: stixDataProperty
domain: StixThing
comment: a collection of data properties that can be used with any stix object

created
type: DatatypeProperty
sub property of: commonDataProperty
domain: StixThing
comment: The created property represents the time at which the first version of this object was created. The timstamp value MUST be precise to the nearest millisecond.

id
type: DatatypeProperty
sub property of: commonDataProperty
domain: StixThing
range: string
comment: The id property universally and uniquely identifies this object.

identityClass
type: DatatypeProperty
sub property of: stixDataProperty
domain: Identity
comment: This property describes the type of entity that the Identity represents: whether it describes an organization, group, individual, class or unknown

mimeType
type: DatatypeProperty
sub property of: stixDataProperty
comment: The value of this property MUST be a valid MIME type as specified in the IANA Media Types registry [Media Types].

modified
type: DatatypeProperty
sub property of: commonDataProperty
domain: StixThing
comment: The modified property represents the time that this particular version of the object was created. The timstamp value MUST be precise to the nearest millisecond.

platform
type: DatatypeProperty
sub property of: stixDataProperty
domain: TTP
range: Datatype
  one of: Android
  one of: Linux
  one of: Windows
  one of: iOS
  one of: macOS

revoked
type: DatatypeProperty
sub property of: commonDataProperty
domain: StixThing
range: boolean
comment: The revoked property indicates whether the object has been revoked.

type
type: DatatypeProperty
sub property of: commonDataProperty
domain: StixThing
range: string
comment: The type property identifies the type of STIX Object (SDO, Relationship Object, etc). The value of the type field MUST be one of the types defined by a STIX Object (e.g., indicator).

vendor
type: DatatypeProperty
sub property of: stixDataProperty
domain: Software
comment: Specifies the name of the vendor of the software

version
type: DatatypeProperty
sub property of: stixDataProperty
domain: Class
  union of: File
  union of: Software
  union of: X509Certificate
comment: Specifies the version of the software

Artifact
type: Class
subclass of: StixObservables
comment: The Artifact Object permits capturing an array of bytes (8-bits), as a base64-encoded string, or linking to a file-like payload. The size of the base64-encoded data captured in the payload_bin property MUST be less than or equal to 10MB. One of payload_bin or url MUST be provided. It is incumbent on object creators to ensure that the URL is accessible for downstream consumers. If a URL is provided, then the hashes property MUST contain the hash of the URL contents.

AttackPattern
type: Class
subclass of: StixThing
comment: Attack Patterns are a type of TTP that describe ways that adversaries attempt to compromise targets. Attack Patterns are used to help categorize attacks, generalize specific attacks to the patterns that they follow, and provide detailed information about how attacks are performed. An example of an attack pattern is "spear phishing": a common type of attack where an attacker sends a carefully crafted e-mail message to a party with the intent of getting them to click a link or open an attachment to deliver malware. Attack Patterns can also be more specific; spear phishing as practiced by a particular threat actor (e.g., they might generally say that the target won a contest) can also be an Attack Pattern. The Attack Pattern SDO contains textual descriptions of the pattern along with references to externally-defined taxonomies of attacks such as CAPEC [CAPEC]. Relationships from Attack Pattern can be used to relate it to what it targets (Vulnerabilities and Identities) and which tools and malware use it (Tool and Malware).

AutonomousSystem
type: Class
subclass of: StixObservables
comment: Within the Internet, 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. An ISP must have an officially registered autonomous system number (ASN). A unique ASN is allocated to each AS for use in BGP routing. AS numbers are important because the ASN uniquely identifies each network on the Internet.

Campaign
type: Class
subclass of: Adversary
comment: A Campaign is a grouping of adversarial behaviors that describes a set of malicious activities or attacks (sometimes called waves) that occur over a period of time against a specific set of targets. Campaigns usually have well defined objectives and may be part of an Intrusion Set. Campaigns are often attributed to an intrusion set and threat actors. The threat actors may reuse known infrastructure from the intrusion set or may set up new infrastructure specific for conducting that campaign. Campaigns can be characterized by their objectives and the incidents they cause, people or resources they target, and the resources (infrastructure, intelligence, Malware, Tools, etc.) they use. For example, a Campaign could be used to describe a crime syndicate's attack using a specific variant of malware and new C2 servers against the executives of ACME Bank during the summer of 2016 in order to gain secret information about an upcoming merger with another bank.

CourseOfAction
type: Class
subclass of: StixDomainObject
comment: A Course of Action is an action taken either to prevent an attack or to respond to an attack that is in progress. It may describe technical, automatable responses (applying patches, reconfiguring firewalls) but can also describe higher level actions like employee training or policy changes. For example, a course of action to mitigate a vulnerability could describe applying the patch that fixes it. The Course of Action SDO contains a textual description of the action; a reserved action property also serves as placeholder for future inclusion of machine automatable courses of action. Relationships from the Course of Action can be used to link it to the Vulnerabilities or behaviors (Tool, Malware, Attack Pattern) that it mitigates.

CrimeSyndicate
type: Class
equivalent class: Class
  intersection of: ThreatActor
  intersection of: Restriction
    on property: label
    some values from: Datatype
      one of: crime-syndicate
subclass of: ThreatActor

Criminal
type: Class
equivalent class: Class
  intersection of: ThreatActor
  intersection of: Restriction
    on property: label
    some values from: Datatype
      one of: criminal
subclass of: ThreatActor

DomainName
type: Class
subclass of: StixObservables
comment: The Domain Name represents the properties of a network domain name.

EmailAddr
type: Class
subclass of: StixObservables
comment: The Email Address Object represents a single email address.

EmailMessage
type: Class
subclass of: StixObservables
comment: The Email Message Object represents an instance of an email message, corresponding to the internet message format described in [RFC5322] and related RFCs. Header field values that have been encoded as described in section 2 of [RFC2047] MUST be decoded before inclusion in Email Message Object properties. For example, this is some text MUST be used instead of =?iso-8859-1?q?this=20is=20some=20text?=. Any characters in the encoded value which cannot be decoded into Unicode SHOULD be replaced with the 'REPLACEMENT CHARACTER' (U+FFFD). If it is necessary to capture the header value as observed, this can be achieved by referencing an Artifact Object through the raw_email_ref property.

File
type: Class
subclass of: StixObservables
comment: The File Object represents the properties of a file. A File Object MUST contain at least one of hashes or name.

Identity
type: Class
subclass of: StixDomainObject
comment: Identities can represent actual individuals, organizations, or groups (e.g., ACME, Inc.) as well as classes of individuals, organizations, or groups (e.g., the finance sector). The Identity SDO can capture basic identifying information, contact information, and the sectors that the Identity belongs to. Identity is used in STIX to represent, among other things, targets of attacks, information sources, object creators, and threat actor identities.

Indicator
type: Class
subclass of: StixDomainObject
comment: Indicators contain a pattern that can be used to detect suspicious or malicious cyber activity. For example, an Indicator may be used to represent a set of malicious domains and use the STIX Patterning Language (STIX™ Version 2.0. Part 5: STIX Patterning) to specify these domains. The Indicator SDO contains a simple textual description, the Kill Chain Phases that it detects behavior in, a time window for when the Indicator is valid or useful, and a required pattern property to capture a structured detection pattern. Conforming STIX implementations MUST support the STIX Patterning Language as defined in STIX™ Version 2.0. Part 5: STIX Patterning. While each structured pattern language has different syntax and potentially different semantics, in general an Indicator is considered to have "matched" (or been "sighted") when the conditions specified in the structured pattern are satisfied in whatever context they are evaluated in. Relationships from the Indicator can describe the malicious or suspicious behavior that it directly detects (Malware, Tool, and Attack Pattern) as well as the Campaigns, Intrusion Sets, and Threat Actors that it might indicate the presence of.

Individual
type: Class
equivalent class: Class
  intersection of: Identity
  intersection of: Restriction
    on property: identityClass
    some values from: Datatype
      one of: individual
subclass of: Identity

IntrusionSet
type: Class
subclass of: Adversary
comment: An Intrusion Set is a grouped set of adversarial behaviors and resources with common properties that is believed to be orchestrated by a single organization. An Intrusion Set may capture multiple Campaigns or other activities that are all tied together by shared attributes indicating a common known or unknown Threat Actor. New activity can be attributed to an Intrusion Set even if the Threat Actors behind the attack are not known. Threat Actors can move from supporting one Intrusion Set to supporting another, or they may support multiple Intrusion Sets. Where a Campaign is a set of attacks over a period of time against a specific set of targets to achieve some objective, an Intrusion Set is the entire attack package and may be used over a very long period of time in multiple Campaigns to achieve potentially multiple purposes. While sometimes an Intrusion Set is not active, or changes focus, it is usually difficult to know if it has truly disappeared or ended. Analysts may have varying level of fidelity on attributing an Intrusion Set back to Threat Actors and may be able to only attribute it back to a nation state or perhaps back to an organization within that nation state.

Ipv4Addr
type: Class
subclass of: IpAddr
comment: The IPv4 Address Object represents one or more IPv4 addresses expressed using CIDR notation.

Ipv6Addr
type: Class
subclass of: IpAddr
comment: The IPv6 Address Object represents one or more IPv6 addresses expressed using CIDR notation.

Malware
type: Class
subclass of: StixDomainObject
subclass of: TTP
comment: Note: The Malware object in STIX 2.0 is a stub. It is included to support basic use cases but is likely not useful for actual malware analysis or for including even simple malware instance data. Future versions of STIX 2 will expand it to include these capabilities. Malware is a type of TTP that is also known as malicious code and malicious software, and refers to a program that is inserted into a system, usually covertly, with the intent of compromising the confidentiality, integrity, or availability of the victim's data, applications, or operating system (OS) or of otherwise annoying or disrupting the victim. Malware such as viruses and worms are usually designed to perform these nefarious functions in such a way that users are unaware of them, at least initially.[1] The Malware SDO characterizes, identifies, and categorizes malware samples and families via a text description property. This provides detailed information about how the malware works and what it does. Relationships from Malware can capture what the malware targets (Vulnerability and Identity) and link it to another Malware SDO that it is a variant of.

Mutex
type: Class
subclass of: StixObservables
comment: The Mutex Object represents the properties of a mutual exclusion (mutex) object.

NationState
type: Class
equivalent class: Class
  intersection of: ThreatActor
  intersection of: Restriction
    on property: label
    some values from: Datatype
      one of: nation-state
subclass of: ThreatActor

NetworkTraffic
type: Class
subclass of: StixObservables
comment: The Network Traffic Object represents arbitrary network traffic that originates from a source and is addressed to a destination. The network traffic MAY or MAY NOT constitute a valid unicast, multicast, or broadcast network connection. This MAY also include traffic that is not established, such as a SYN flood. To allow for use cases where a source or destination address may be sensitive and not suitable for sharing, such as addresses that are internal to an organization’s network, the source and destination properties (src_ref and dst_ref, respectively) are defined as optional in the properties table below. However, a Network Traffic Object MUST contain the protocols property and at least one of the src_ref or dst_ref properties and SHOULD contain the src_port and dst_port properties.

ObservedData
type: Class
subclass of: StixThing
comment: Observed Data conveys information that was observed on systems and networks using the Cyber Observable specification defined in parts 3 and 4 of this specification. For example, Observed Data can capture the observation of an IP address, a network connection, a file, or a registry key. Observed Data is not an intelligence assertion, it is simply information: this file was seen, without any context for what it means. Observed Data captures both a single observation of a single entity (file, network connection) as well as the aggregation of multiple observations of an entity. When the number_observed property is 1 the Observed Data is of a single entity. When the number_observed property is greater than 1, the observed data consists of several instances of an entity collected over the time window specified by the first_observed and last_observed properties. When used to collect aggregate data, it is likely that some fields in the Cyber Observable Object (e.g., timestamp fields) will be omitted because they would differ for each of the individual observations. Observed Data may be used by itself (without relationships) to convey raw data collected from network and host-based detection tools. A firewall could emit a single Observed Data instance containing a single Network Traffic object for each connection it sees. The firewall could also aggregate data and instead send out an Observed Data instance every ten minutes with an IP address and an appropriate number_observed value to indicate the number of times that IP address was observed in that window. Observed Data may also be related to other SDOs to represent raw data that is relevant to those objects. The Sighting object, which captures the sighting of an Indicator, Malware, or other SDO, uses Observed Data to represent the raw information that led to the creation of the Sighting (e.g., what was actually seen that suggested that a particular instance of malware was active).

Organization
type: Class
equivalent class: Class
  intersection of: Identity
  intersection of: Restriction
    on property: identityClass
    some values from: Datatype
      one of: organisation
      one of: organization
subclass of: Identity

Process
type: Class
subclass of: StixObservables
comment: The Process Object represents common properties of an instance of a computer program as executed on an operating system. A Process Object MUST contain at least one property (other than type) from this object (or one of its extensions).

Relationship
type: Class
subclass of: StixThing
comment: he Relationship object is used to link together two SDOs in order to describe how they are related to each other. If SDOs are considered "nodes" or "vertices" in the graph, the Relationship Objects (SROs) represent "edges". STIX defines many relationship types to link together SDOs. These relationships are contained in the "Relationships" table under each SDO definition. Relationship types defined in the specification SHOULD be used to ensure consistency. An example of a specification-defined relationship is that an indicator indicates a campaign. That relationship type is listed in the Relationships section of the Indicator SDO definition. STIX also allows relationships from any SDO to any SDO that have not been defined in this specification. These relationships MAY use the related-to relationship type or MAY use a custom relationship type. As an example, a user might want to link malware directly to a tool. They can do so using related-to to say that the Malware is related to the Tool but not describe how, or they could use delivered-by (a custom name they determined) to indicate more detail. Note that some relationships in STIX may seem like "shortcuts". For example, an Indicator doesn't really detect a Campaign: it detects activity (Attack Patterns, Malware, etc.) that are often used by that campaign. While some analysts might want all of the source data and think that shortcuts are misleading, in many cases it's helpful to provide just the key points (shortcuts) and leave out the low-level details. In other cases, the low-level analysis may not be known or sharable, while the high-level analysis is. For these reasons, relationships that might appear to be "shortcuts" are not excluded from STIX.

Report
type: Class
subclass of: StixDomainObject
comment: Reports are collections of threat intelligence focused on one or more topics, such as a description of a threat actor, malware, or attack technique, including context and related details. They are used to group related threat intelligence together so that it can be published as a comprehensive cyber threat story. The Report SDO contains a list of references to SDOs and SROs (the CTI objects included in the report) along with a textual description and the name of the report. For example, a threat report produced by ACME Defense Corp. discussing the Glass Gazelle campaign should be represented using Report. The Report itself would contain the narrative of the report while the Campaign SDO and any related SDOs (e.g., Indicators for the Campaign, Malware it uses, and the associated Relationships) would be referenced in the report contents.

Software
type: Class
subclass of: StixObservables
comment: The Software Object represents high-level properties associated with software, including software products.

Spy
type: Class
equivalent class: Class
  intersection of: ThreatActor
  intersection of: Restriction
    on property: label
    some values from: Datatype
      one of: spy
subclass of: ThreatActor

StixDomainObject
type: Class
subclass of: StixThing
comment: This specification defines the set of STIX Domain Objects (SDOs), each of which corresponds to a unique concept commonly represented in CTI. Using SDOs and STIX relationships as building blocks, individuals can create and share broad and comprehensive cyber threat intelligence. Property information, relationship information, and examples are provided for each SDO defined below. Property information includes common properties as well as properties that are specific to each SDO. Relationship information includes embedded relationships (e.g., created_by_ref), common relationships (e.g., related-to), and SDO-specific relationships. Forward relationships (i.e., relationships from the SDO to other SDOs) are fully defined, while reverse relationships (i.e., relationships to the SDO from other SDOs) are duplicated for convenience. Some SDOs are similar and can be grouped together into categories. Attack Pattern, Malware, and Tool can all be considered types of tactics, techniques, and procedures (TTPs): they describe behaviors and resources that attackers use to carry out their attacks. Similarly, Campaign, Intrusion Set, and Threat Actor all describe information about why adversaries carry out attacks and how they organize themselves.

StixObservables
type: Class
subclass of: StixThing
comment: The ObservableType is a complex type representing a description of a single cyber observable.

TTP
type: Class
subclass of: StixDomainObject
comment: TPP is a Tactic, Technique, or Procedure, i.e., behaviors and resources that attackers use to carry out their attacks

Terrorist
type: Class
equivalent class: Class
  intersection of: ThreatActor
  intersection of: Restriction
    on property: label
    some values from: Datatype
      one of: terrorist
subclass of: ThreatActor

ThreatActor
type: Class
subclass of: Adversary
comment: Threat Actors are actual individuals, groups, or organizations believed to be operating with malicious intent. A Threat Actor is not an Intrusion Set but may support or be affiliated with various Intrusion Sets, groups, or organizations over time. Threat Actors leverage their resources, and possibly the resources of an Intrusion Set, to conduct attacks and run Campaigns against targets. Threat Actors can be characterized by their motives, capabilities, goals, sophistication level, past activities, resources they have access to, and their role in the organization.

Tool
type: Class
subclass of: StixDomainObject
subclass of: TTP
comment: Tools are legitimate software that can be used by threat actors to perform attacks. Knowing how and when threat actors use such tools can be important for understanding how campaigns are executed. Unlike malware, these tools or software packages are often found on a system and have legitimate purposes for power users, system administrators, network administrators, or even normal users. Remote access tools (e.g., RDP) and network scanning tools (e.g., Nmap) are examples of Tools that may be used by a Threat Actor during an attack. The Tool SDO characterizes the properties of these software tools and can be used as a basis for making an assertion about how a Threat Actor uses them during an attack. It contains properties to name and describe the tool, a list of Kill Chain Phases the tool can be used to carry out, and the version of the tool. This SDO MUST NOT be used to characterize malware. Further, Tool MUST NOT be used to characterise tools used as part of a course of action in response to an attack. Tools used during response activities can be included directly as part of a Course of Action SDO.

UserAccount
type: Class
subclass of: StixObservables
comment: The User Account Object represents an instance of any type of user account, including but not limited to operating system, device, messaging service, and social media platform accounts.

Vulnerability
type: Class
subclass of: StixDomainObject
comment: A Vulnerability is "a mistake in software that can be directly used by a hacker to gain access to a system or network" [CVE]. For example, if a piece of malware exploits CVE-2015-12345, a Malware object could be linked to a Vulnerability object that references CVE-2015-12345. The Vulnerability SDO is primarily used to link to external definitions of vulnerabilities or to describe 0-day vulnerabilities that do not yet have an external definition. Typically, other SDOs assert relationships to Vulnerability objects when a specific vulnerability is targeted and exploited as part of malicious cyber activity. As such, Vulnerability objects can be used as a linkage to the asset management and compliance process.

WindowsRegistryKey
type: Class
subclass of: StixObservables
comment: The Registry Key Object represents the properties of a Windows registry key.

X509Certificate
type: Class
subclass of: StixObservables
comment: The X.509 Certificate Object represents the properties of an X.509 certificate, as defined by ITU recommendation X.509 [X.509]. An X.509 Certificate Object MUST contain at least one property (other than type) from this object.

macAddr
type: Class
subclass of: StixObservables
comment: The MAC Address Object represents a single Media Access Control (MAC) address.