Welcome to stix2-slider’s documentation!¶
To convert STIX 1.x XML to STIX 2.0 JSON use the stix2-elevator.
Introduction¶
The stix-slider is a software tool for ‘sliding’ STIX 2.0 JSON to STIX 1.x XML. Due to the differences between STIX 1.x and STIX 2.0, this conversion is a best-effort only. During the conversion, stix-slider produces many warning messages about the assumptions it needs to make to produce valid STIX 1.x XML, and what information was not able to be converted.
It important to emphasize that the slider is not for use in a production system without human inspection of the results it produces. It should be used to explore how STIX 2.0 content could potentially be represented in STIX 1.x. Using the current version of the slider will provide insight to issues that might need to be mitigated to convert your STIX 2.0 content for use in application that accept only STIX 1.x content.
Installing¶
Requirements¶
Python 2.7, or 3.3+
python-stix and its dependencies
Note
Make sure to use either the latest version of python-stix 1.1.1.x or 1.2.0.x, depending on whether you want to support STIX 1.1.1 or STIX 1.2.
python-stix2 >= 1.0.0
stixmarx >= 1.0.3
stix-validator >= 2.5.0
Installation Steps¶
Install with pip:
$ pip install stix2-slider
This will install all necessary dependencies, including the latest version of python-stix.
If you need to support older STIX 1.1.1 content, install python-stix 1.1.1.x first:
$ pip install 'stix<1.2'
$ pip install stix2-slider
You can also install the stix-slider from GitHub to get the latest (unstable) version:
$ pip install git+https://github.com/oasis-open/cti-stix-slider.git
Command Line Interface¶
The slider comes with a bundled script which you can use to convert STIX 2.0 content to STIX 1.x content:
usage: stix2_slider [-h] [--no-squirrel-gaps]
[-e ENABLE] [-d DISABLE] [-s]
[--message-log-directory MESSAGE_LOG_DIRECTORY]
[--log-level {DEBUG,INFO,WARN,ERROR,CRITICAL}]
file
stix2-slider v1.0.0
The stix2-slider is a work-in-progress. It should be used to explore how existing STIX 2.0 would potentially be represented in STIX 1.x. Using the current version of the stix2-slider will provide insight to issues that might need to be mitigated so you can use an application that supports only STIX 1.x content.
positional arguments:
file The input STIX 2.0 document to be 'slid' to STIX 1.x.
optional arguments:
-h, --help
show this help message and exit
--no-squirrel-gaps
Do not include STIX 2.0 content that cannot be
represented directly in STIX 1.x using the description
property.
-e ENABLE, --enable ENABLE
A comma-separated list of the stix2-slider messages to
enable. If the --disable option is not used, no other
messages will be shown.
Example: --enable 250
-d DISABLE, --disable DISABLE
A comma-separated list of the stix2-slider messages to
disable.
Example: --disable 212,220
-s, --silent
If this flag is set. All stix2-slider messages will be
disabled.
--message-log-directory MESSAGE_LOG_DIRECTORY
If this flag is set all stix2-slider messages will be
saved to file. The name of the file will be the input
file with extension .log in the specified directory.
Note, make sure the directory already exists.
Example: --message-log-directory "..\logs"
--log-level {DEBUG,INFO,WARN,ERROR,CRITICAL}
The logging output level.
Refer to the Warning Messages section for all stix2-slider messages. Use the associated code number
to --enable
or --disable
a message. By default, the stix2-slider displays all
messages.
Note: disabling the message does not disable any functionality.
It is recommended that you ensure that the input STIX 2.0 file is valid before submitting it to the slider. Use the stix2-validator.
Mappings from STIX 1.x to STIX 2.0¶
This section outlines the disposition of each property of the top-level objects when converted.
For each STIX 2.0 object that was converted the following options are possible:
STIX 2.0 property mapped directly to a STIX 1.x property. This property’s value is used unaltered in the conversion to 2.0.
STIX 2.0 property translated into STIX 1.x property. This property’s value must undergo some minor processing to determine the corresponding content for 1.x.
STIX 2.0 relationship mapped using STIX 1.x property. This 2.0 relationship object is used to construct an embedded STIX 1.x relationship. If the STIX 2.0
relationship-type
is not listed below, then that relationship will not be converted to an embedded STIX 1.x relationship. The “reverse” notation indicates the the STIX 1.x property is found on target object.STIX 2.0 property recorded in the STIX 1.x description property. This 2.0 property has no corresponding property in STIX 1.x, but its value can be (optionally) included in the description property of the 1.x object as text.
If the STIX 2.0 content was created using the elevator it might be the case that it recorded some 1.x properties in the description. However, the slider makes no attempt to examine the content of the 2.0 descriptor property to determine if it can use information found within it to populate the original 1.x properties.
STIX 2.0 property not mapped. This property will not be included in the converted 1.x object.
Top Level Object Mappings¶
STIX 2.0 object | STIX 1.x object |
---|---|
attack-pattern |
ttp:Attack_Pattern |
bundle |
Package |
campaign |
Campaign |
course-of-action |
Course_Of_Action |
identity |
Information_Source or
ttp:Victim_Targeting |
indicator |
Indicator |
intrusion-set |
not converted |
observed-data |
Observable |
malware |
ttp:MalwareInstance |
report |
Report |
threat-actor |
Threat Actor |
tool |
ttp:Tool |
vulnerability |
et:Vulnerability |
Common Properties¶
STIX 2.0 Properties Mapped Directly to STIX 1.x Properties
STIX 2.0 property | STIX 1.x property |
---|---|
created |
not converted (see modified ) |
description |
Description |
modified |
timestamp |
name |
Title |
STIX 2.0 Properties Translated to STIX 1.x Properties
STIX 2.0 property | STIX 1.x property |
---|---|
type |
implicitly defined by its element name or explicitly using xsi:type |
id |
id |
created_by_ref |
Information_Source |
external_references |
Information_Source ,
et:Vulnerability.cve_id ,
ttp:Attack_Patterns.capec.id |
object_markings_refs |
Handling |
granular_markings |
Handling |
STIX 2.0 Relationships Mapped Using STIX 1.x Relationships
none
STIX 2.0 Properties Recorded in the STIX 1.x Description Property
none
STIX 2.0 Properties Not Mapped
revoked
Attack Pattern¶
STIX 2.0 Properties Mapped Directly to STIX 1.x Properties
none
STIX 2.0 Properties Translated to STIX 1.x Properties
STIX 2.0 property | STIX 1.x property |
---|---|
external_references |
capec_id |
kill_chain_phases |
ttp:Kill_Chain_Phases |
STIX 2.0 Relationships Mapped Using STIX 1.x Relationships
STIX 2.0 relationship type | STIX 1.x property |
---|---|
targets (identity only) |
ttp:Victim_Targeting |
targets (vulnerability only) |
ttp:Exploit_Targets |
uses (malware, tool) |
ttp:Related_TTPs |
STIX 2.0 Properties Recorded in the STIX 1.x Description Property
labels
STIX 2.0 Properties Not Mapped
none
An Example
STIX 2.0 in JSON
{
"type": "attack-pattern",
"id": "attack-pattern--19da6e1c-71ab-4c2f-886d-d620d09d3b5a",
"created": "2016-08-08T15:50:10.983Z",
"modified": "2017-01-30T21:15:04.127Z",
"external_references": [
{
"external_id": "CAPEC-148",
"source_name": "capec",
"url": "https://capec.mitre.org/data/definitions/148.html"
}
],
"name": "Content Spoofing"
}
STIX 1.x in XML
<stix:TTP id="example:ttp-19da6e1c-71ab-4c2f-886d-d620d09d3b5a" timestamp="2017-01-30T21:15:04.127000+00:00" xsi:type='ttp:TTPType'>
<ttp:Behavior>
<ttp:Attack_Patterns>
<ttp:Attack_Pattern capec_id="CAPEC-148">
<ttp:Title>Content Spoofing</ttp:Title>
</ttp:Attack_Pattern>
</ttp:Attack_Patterns>
</ttp:Behavior>
<ttp:Information_Source>
<stixCommon:References>
<stixCommon:Reference>SOURCE: capec - https://capec.mitre.org/data/definitions/148.html</stixCommon:Reference>
</stixCommon:References>
</ttp:Information_Source>
</stix:TTP>
Campaigns¶
STIX 2.0 Properties Mapped Directly to STIX 1.x Properties
STIX 2.0 property | STIX 1.x property |
---|---|
aliases |
Names |
objective |
Intended_Effect |
STIX 2.0 Properties Translated to STIX 1.x Properties
none
STIX 2.0 Relationships Mapped Using STIX 1.x Relationships
STIX 2.0 relationship type | STIX 1.x property |
---|---|
uses |
Related_TTPs |
indicates (reverse) |
Related_Indicators |
attributed-to |
Attribution |
related-to (campaign) |
Associated_Campaigns |
STIX 2.0 Properties Recorded in the STIX 1.x Description Property
first_seen
last_seen
labels
STIX 2.0 Properties Not Mapped
none
An Example
STIX 2.0 in JSON
{
"created": "2014-08-08T15:50:10.983Z",
"description": "Attacking ATM machines in the Eastern US",
"external_references": [
{
"source_name": "ACME",
"url": "http://foo.com/bar"
},
{
"source_name": "wikipedia",
"url": "https://en.wikipedia.org/wiki/Automated_teller_machine"
},
{
"source_name": "ACME Bugzilla",
"external_id": "1370",
"url": "https://www.example.com/bugs/1370"
}
],
"id": "campaign--e5268b6e-4931-42f1-b379-87f48eb41b1e",
"modified": "2014-08-08T15:50:10.983Z",
"name": "Compromise of ATM Machines",
"type": "campaign"
}
STIX 1.x in XML
<stix:Campaign id="example:campaign-e5268b6e-4931-42f1-b379-87f48eb41b1e" timestamp="2014-08-08T15:50:10.983000+00:00" xsi:type='campaign:CampaignType'>
<campaign:Title>Compromise of ATM Machines</campaign:Title>
<campaign:Description>Attacking ATM machines in the Eastern US</campaign:Description>
<campaign:Information_Source>
<stixCommon:References>
<stixCommon:Reference>SOURCE: ACME - http://foo.com/bar</stixCommon:Reference>
<stixCommon:Reference>SOURCE: wikipedia - https://en.wikipedia.org/wiki/Automated_teller_machine</stixCommon:Reference>
<stixCommon:Reference>SOURCE: ACME Bugzilla - https://www.example.com/bugs/1370</stixCommon:Reference>
<stixCommon:Reference>SOURCE: ACME Bugzilla - EXTERNAL ID: 1370</stixCommon:Reference>
</stixCommon:References>
</campaign:Information_Source>
</stix:Campaign>
Course of Action¶
In STIX 2.0 the course-of-action object is defined as a stub. This means that in STIX 2.0 this object type is pretty “bare-bones”, not containing most of the properties that were found in STIX 1.x.
STIX 2.0 Properties Mapped Directly to STIX 1.x Properties
none
STIX 2.0 Properties Translated to STIX 1.x Properties
STIX 2.0 property | STIX 1.x property |
---|---|
labels |
Type |
STIX 2.0 Relationships Mapped Using STIX 1.x Relationships
STIX 2.0 relationship type | STIX 1.x property |
---|---|
related-to (course-of-action) |
Related_COAs |
STIX 2.0 Properties Recorded in the STIX 1.x Description Property
none
STIX Properties Not Mapped
none
An Example
STIX 2.0 in JSON
{
"created": "2017-01-27T13:49:41.298Z",
"description": "\n\nSTAGE:\n\tResponse\n\nOBJECTIVE: Block communication between the PIVY agents and the C2 Server\n\nCONFIDENCE: High\n\nIMPACT:LowThis IP address is not used for legitimate hosting so there should be no operational impact.\n\nCOST:Low\n\nEFFICACY:High",
"id": "course-of-action--495c9b28-b5d8-11e3-b7bb-000c29789db9",
"labels": [
"perimeter-blocking"
],
"modified": "2017-01-27T13:49:41.298Z",
"name": "Block traffic to PIVY C2 Server (10.10.10.10)",
"type": "course-of-action"
}
STIX 1.x in XML
<stix:Course_Of_Action id="example:course-of-action-495c9b28-b5d8-11e3-b7bb-000c29789db9" timestamp="2017-01-27T13:49:41.298000+00:00" xsi:type='coa:CourseOfActionType'>
<coa:Title>Block traffic to PIVY C2 Server (10.10.10.10)</coa:Title>
<coa:Type xsi:type="stixVocabs:CourseOfActionTypeVocab-1.0">Perimeter Blocking</coa:Type>
<coa:Description>
STAGE:
Response
OBJECTIVE: Block communication between the PIVY agents and the C2 Server
CONFIDENCE: High
IMPACT:LowThis IP address is not used for legitimate hosting so there should be no operational impact.
COST:Low
EFFICACY:High
</coa:Description>
</stix:Course_Of_Action>
Notice that although there is information in the STIX 2.0 description property (from a previous use of the elevator) that could be used to populate STIX 1.x properties, the description property is transferred directly, with no additional processing.
Indicator¶
STIX 2.0 Properties Mapped Directly to STIX 1.x Properties
STIX 2.0 property | STIX 1.x property |
---|---|
valid_from , valid_until |
Valid_Time_Position |
created_by_ref |
Producer |
STIX 2.0 Properties Translated to STIX 1.x Properties
STIX 2.0 property | STIX 1.x property |
---|---|
kill_chain_phases |
Kill_Chain_Phases |
pattern |
IndicatorExpression |
labels |
Type |
STIX 2.0 Relationships Mapped Using STIX 1.x Relationships
STIX 2.0 relationship type | STIX 1.x property |
---|---|
detects |
Indicated_TTP |
indicates (campaign) |
Related_Campaigns |
indicates (attack-pattern, malware, tool) |
Indicated_TTPs |
related-to (indicator) |
Related_Indicators |
STIX 2.0 Properties Recorded in the STIX 1.x Description Property
none
STIX 2.0 Properties Not Mapped
none
An Example
STIX 2.0 in JSON
{
"created": "2014-05-08T09:00:00.000Z",
"id": "indicator--53fe3b22-0201-47cf-85d0-97c02164528d",
"labels": [
"ip-watchlist"
],
"modified": "2014-05-08T09:00:00.000Z",
"name": "IP Address for known C2 channel",
"pattern": "[ipv4-addr:value = '10.0.0.0']",
"type": "indicator",
"valid_from": "2014-05-08T09:00:00.000000Z"
}
{
"created": "2014-05-08T09:00:00.000Z",
"id": "relationship--9606dac3-965a-47d3-b270-8b17431ba0e4",
"modified": "2014-05-08T09:00:00.000Z",
"relationship_type": "indicates",
"source_ref": "indicator--53fe3b22-0201-47cf-85d0-97c02164528d",
"target_ref": "malware--73fe3b22-0201-47cf-85d0-97c02164528d",
"type": "relationship"
}
STIX 1.x in XML
<stix:Indicator id="example:indicator-53fe3b22-0201-47cf-85d0-97c02164528d" timestamp="2014-05-08T09:00:00+00:00" xsi:type='indicator:IndicatorType'>
<indicator:Title>IP Address for known C2 channel</indicator:Title>
<indicator:Type xsi:type="stixVocabs:IndicatorTypeVocab-1.1">IP Watchlist</indicator:Type>
<indicator:Valid_Time_Position>
<indicator:Start_Time precision="second">2014-05-08T09:00:00+00:00</indicator:Start_Time>
</indicator:Valid_Time_Position>
<indicator:Observable id="example:Observable-9f9e8592-1a3a-42f0-8e16-56c062671a5c">
<cybox:Object id="example:Address-3923ec77-e675-4db7-b2bb-8c42717b2b3a">
<cybox:Properties xsi:type="AddressObj:AddressObjectType" category="ipv4-addr">
<AddressObj:Address_Value condition="Equals">10.0.0.0</AddressObj:Address_Value>
</cybox:Properties>
</cybox:Object>
</indicator:Observable>
<indicator:Indicated_TTP>
<stixCommon:TTP idref="example:ttp-73fe3b22-0201-47cf-85d0-97c02164528d" xsi:type='ttp:TTPType'/>
</indicator:Indicated_TTP>
</stix:Indicator>
Malware¶
The Malware object in STIX 2.0 is a stub.
STIX 2.0 Properties Mapped Directly to STIX 1.x Properties
none
STIX 2.0 Properties Translated to STIX 1.x Properties
STIX 2.0 property | STIX 1.x property |
---|---|
kill_chain_phases |
ttp:Kill_Chain_Phases |
labels |
Type |
STIX 2.0 Relationships Mapped Using STIX 1.x Relationships
STIX 2.0 relationship type | STIX 1.x property |
---|---|
variant-of |
ttp:Related_TTPs |
uses |
ttp:Related_TTPs |
targets (vulnerability only) |
ttp:Exploit_Targets |
targets (identity only) |
ttp:Victim_Targeting |
STIX 2.0 Properties Recorded in the STIX 1.x Description Property
none
STIX 2.0 Properties Not Mapped
none
An Example
STIX 2.0 in JSON
{
"created": "2017-01-27T13:49:53.997Z",
"description": "Poison Ivy Trojan",
"id": "malware--fdd60b30-b67c-11e3-b0b9-f01faf20d111",
"labels": [
"remote-access-trojan"
],
"modified": "2017-01-27T13:49:53.997Z",
"name": "Poison Ivy",
"type": "malware"
}
STIX 1.x in XML
<stix:TTPs>
<stix:TTP id="example:ttp-fdd60b30-b67c-11e3-b0b9-f01faf20d111" timestamp="2017-01-27T13:49:53.997000+00:00" xsi:type='ttp:TTPType'>
<ttp:Behavior>
<ttp:Malware>
<ttp:Malware_Instance>
<ttp:Type xsi:type="stixVocabs:MalwareTypeVocab-1.0">Remote Access Trojan</ttp:Type>
<ttp:Name>Poison Ivy</ttp:Name>
<ttp:Description>Poison Ivy Trojan</ttp:Description>
</ttp:Malware_Instance>
</ttp:Malware>
</ttp:Behavior>
</stix:TTP>
</stix:TTPs>
Report¶
The Report object in 2.0 does not contain objects, but only object references
to STIX objects that are specified elsewhere (the location of the actual
objects may not be contained in the same bundle that contains the report
object). 1.x objects with only the idref
property are created for each
object reference in the STIX 2.0 report.
STIX 2.0 Properties Mapped Directly to STIX 1.x Properties
STIX 2.0 property | STIX 1.x property |
---|---|
name |
Header.Title |
description |
Header.Description |
STIX 2.0 Properties Translated to STIX 1.x Properties
STIX 2.0 property | STIX 1.x property |
---|---|
object_refs (observed-data) |
Observables |
object_refs (indicator) |
Indicators |
object_refs (attack-pattern, malware, tool) |
TTPs |
object_refs (vulnerability) |
Exploit_Targets |
object_refs (course-of-action) |
Courses_Of_Action |
object_refs (campaign) |
Campaigns |
object_refs (threat-actor) |
Threat_Actors |
object_refs (identity, intrusion-set, relationship) |
not converted |
labels |
Header.Intent |
**STIX 2.0 Properties Mapped Using STIX 1.x Relationships**
none
STIX 2.0 Properties Recorded in the STIX 1.x Description Property
published
STIX 2.0 Properties Not Mapped
none
An Example
STIX 2.0 in JSON
{
"created": "2015-05-07T14:22:14.760Z",
"created_by_ref": "identity--c1b58a86-e037-4069-814d-dd0bc75539e3",
"description": "Adversary Alpha has a campaign against the ICS sector!",
"id": "report--ab11f431-4b3b-457c-835f-59920625fe65",
"labels": [
"campaign-characterization"
],
"modified": "2015-05-07T14:22:14.760Z",
"name": "Report on Adversary Alpha's Campaign against the Industrial Control Sector",
"object_refs": [
"campaign--1855cb8a-d96c-4859-a450-abb1e7c061f2",
"indciator--66647c79-5766-4ca7-ab8a-a579056e3c83"
],
"published": "2015-05-31T00:00:00.000Z",
"type": "report"
}
STIX 1.x in XML
<stix:Report timestamp="2015-05-07T14:22:14.760000+00:00" id="example:report-ab11f431-4b3b-457c-835f-59920625fe65" xsi:type='report:ReportType' version="1.0">
<report:Header>
<report:Title>Report on Adversary Alpha's Campaign against the Industrial Control Sector</report:Title>
<report:Intent xsi:type="stixVocabs:ReportIntentVocab-1.0">Campaign Characterization</report:Intent>
<report:Description ordinality="1">Adversary Alpha has a campaign against the ICS sector!
<report:Description ordinality="2">published: 2015-05-31 00:00:00+00:00</report:Description>
</report:Header>
<report:Campaigns>
<report:Campaign idref="example:campaign-1855cb8a-d96c-4859-a450-abb1e7c061f2" xsi:type='campaign:CampaignType'/>
</report:Campaigns>
<report:Indicators>
<report:Indicator idref="example:indicator-66647c79-5766-4ca7-ab8a-a579056e3c83" xsi:type='indicator:IndicatorType'/>
</report:Indicators>
</stix:Report>
Threat Actor¶
STIX 2.0 Properties Mapped Directly to STIX 1.x Properties
STIX 2.0 property | STIX 1.x property |
---|---|
goals |
Intended_Effects |
STIX 2.0 Properties Translated to STIX 1.x Properties
STIX 2.0 property | STIX 1.x property |
---|---|
primary_motivation
secondary_motivations
personal_motivations |
Motivation |
sophistication |
Sophistication |
labels |
Type |
**STIX 2.0 Relationships Mapped Using STIX 1.x Relationships**
STIX 2.0 relationship type | STIX 1.x property |
---|---|
uses |
Observed_TTPs |
attributed-to (reverse) |
Associated_Campaigns |
related-to (threat-actor) |
Associated_Actors |
STIX 2.0 Properties Recorded in the STIX 1.x Description Property
name
aliases
roles
resource_level
STIX 2.0 Properties Not Mapped
none
An Example
STIX 2.0 in JSON
{
"created": "2017-01-27T13:49:54.326Z",
"id": "threat-actor--9a8a0d25-7636-429b-a99e-b2a73cd0f11f",
"labels": [
"nation-state"
],
"modified": "2017-01-27T13:49:54.326Z",
"name": "Adversary Bravo",
"sophistication": "advanced",
"type": "threat-actor"
}
STIX 1.x in XML
<stix:Threat_Actor id="example:threat-actor-9a8a0d25-7636-429b-a99e-b2a73cd0f11f"
timestamp="2017-01-27T13:49:54.326000+00:00"
xsi:type='ta:ThreatActorType'>
<ta:Title>Adversary Bravo</ta:Title>
<ta:Type timestamp="2018-05-06T16:57:09.692723+00:00">
<stixCommon:Value>State Actor / Agency</stixCommon:Value>
</ta:Type>
<ta:Sophistication timestamp="2018-05-06T16:57:09.692815+00:00">
<stixCommon:Value>Expert</stixCommon:Value>
</ta:Sophistication>
</stix:Threat_Actor>
Tool¶
STIX 2.0 Properties Mapped Directly to STIX 1.x Properties
STIX 2.0 property | STIX 1.x property |
---|---|
name |
Name (from CybOX) |
labels |
Type (from CybOX) |
description |
Description (from CybOX) |
tool_version |
Version (from CybOX) |
**STIX 2.0 Properties Translated to STIX 2.0 Properties**
STIX 1.x property | STIX 1.x property |
---|---|
external_references |
References (from CybOX) |
kill_chain_phases |
ttp:Kill_Chain_Phases |
**STIX 2.0 Relationships Mapped Using STIX 1.x Relationships**
STIX 2.0 relationship type | STIX 1.x property |
---|---|
uses (attack-pattern) (reverse) |
ttp:Related_TTPs |
targets (identity) |
ttp:Related_TTPs |
STIX 2.0 Properties Recorded in the STIX 1.x Description Property
ttp:Intended_Effect
STIX 1.x Properties Not Mapped
labels
An Example
STIX 2.0 in JSON
{
"type": "tool",
"id": "tool--ce45f721-af14-4fc0-938c-000c16186418",
"created": "2015-05-15T09:00:00.000Z",
"modified": "2015-05-15T09:00:00.000Z",
"name": "cachedump",
"labels": [
"credential-exploitation"
],
"description": "This program extracts cached password hashes from a system’s registry.",
"kill_chain_phases": [
{
"kill_chain_name": "mandiant-attack-lifecycle-model",
"phase_name": "escalate-privileges"
}
]
}
STIX 1.x in XML
<stix:TTP id="example:tool-ce45f721-af14-4fc0-938c-000c16186418" timestamp="2015-05-15T09:00:00+00:00" xsi:type='ttp:TTPType'>
<ttp:Resources>
<ttp:Tools>
<ttp:Tool>
<cyboxCommon:Description>This program extracts cached password hashes from a system’s registry.</cyboxCommon:Description>
<stixCommon:Title>cachedump</stixCommon:Title>
</ttp:Tool>
</ttp:Tools>
</ttp:Resources>
<ttp:Kill_Chain_Phases>
<stixCommon:Kill_Chain_Phase name="escalate-privileges"
phase_id="example:TTP-17715bcf-84b9-4714-a3cd-ffaf7fce9d10"
kill_chain_name="mandiant-attack-lifecycle-model"
kill_chain_id="example:TTP-9df538ea-f0f0-4cf0-a147-1397e51f0a63"/>
</ttp:Kill_Chain_Phases>
</stix:TTP>
Vulnerability¶
STIX 2.0 Properties Mapped Directly to STIX 1.x Properties
none
STIX 2.0 Properties Translated to STIX 1.x Properties
STIX 2.0 property | STIX 1.x property |
---|---|
external_references (source_name : cve ) |
CVE_ID |
external_references (source_name : OSVDB_ID ) |
Reference |
STIX 2.0 Relationships Mapped Using STIX 1.x Relationships
STIX 2.0 relationship type | STIX 1.x property |
---|---|
mitigates (reverse) |
et:Potential_COAs |
related-to (when not used for versioning) |
et:Related_Exploit_Targets |
STIX 2.0 Properties Recorded in the STIX 1.x Description Property
labels
STIX 2.0 Properties Not Mapped
none
An Example
STIX 2.0 in JSON
{
"created": "2014-06-20T15:16:56.986Z",
"external_references": [
{
"external_id": "CVE-2013-3893",
"source_name": "cve"
}
],
"id": "vulnerability--e77c1e36-5b43-4c5c-b8cb-7b36035f2b90",
"modified": "2017-01-27T13:49:54.310Z",
"name": "Heartbleed",
"type": "vulnerability"
}
STIX 1.x in XML
<stix:Exploit_Targets>
<stixCommon:Exploit_Target id="example:et-e77c1e36-5b43-4c5c-b8cb-7b36035f2b90"
timestamp="2014-06-20T15:16:56.986650+00:00"
xsi:type='et:ExploitTargetType' version="1.2">
<et:Title>Heartbleed</et:Title>
<et:Vulnerability>
<et:CVE_ID>CVE-2013-3893</et:CVE_ID>
</et:Vulnerability>
</stixCommon:Exploit_Target>
</stix:Exploit_Targets>
Mappings from STIX 2.0 to CybOX 2.x¶
The following table associates the CybOX 2.x object types with their STIX 2.0 cyber observable types. For each CybOX object the table also indicates if the slider is able to convert the cyber observable object to CybOX 2.x.
CybOX object types not listed have no corresponding STIX 2.0 cyber observable type, and therefore are not converted by the slider.
STIX 2.0 Cyber Observable Type | CybOX 2.x Type | Converted in version 1.0.0 of the Slider |
---|---|---|
artifact |
Artifact | yes |
autonomous-system |
AutonomousSystem | yes |
directory |
File | yes |
domain-name |
DomainName | yes |
email-addr |
Address | yes |
email-message |
EmailMessage | yes |
file |
File | yes |
file:archive-ext |
ArchiveFile | yes |
file:raster-image-ext |
ImageFile | yes |
file:ntfs-ext |
WinFile | yes |
file:pdf-ext |
PDFFile | yes |
file:window-pebinary-ext |
WinExecutableFile | yes |
ipv4-addr |
Address | yes |
ipv6-addr |
Address | yes |
mac-addr |
Address | yes |
mutex |
Mutex | yes |
network-traffic |
NetworkConnection | yes |
network-traffic:http-request-ext |
NetworkConnection and HTTPClientRequest | yes |
network-traffic:icmp-ext |
NetworkConnection and ICMPv4Packet | yes |
network-traffic:socket-ext |
NetworkConnection and NetworkSocket | yes |
network-traffic:tcp-ext |
none | no |
process |
Process | yes |
process:windows-process-ext |
WinProcess | yes |
process:windows-service-ext |
WinService | yes |
software |
Product | yes |
url |
URI | yes |
user-account |
UserAccount, WinUser, UnixUserAccount | yes |
user-account:unix-account-ext |
UnixUserAccount | yes |
window-registry-key |
WinRegistryKey | yes |
x509-certificate |
X509Certificate | yes |
x509-certificate:x509-v3-extensions-type |
X509Certificate and X509V3Extensions | yes |
Conversion Issues¶
Single vs. Multiple¶
Some properties in STIX 2.0 allowed for multiple values, but the corresponding property in STIX 1.x does not. In these cases, the first value is used and a warning message is output.
Data Markings¶
The stix-slider currently supports object-level markings only. Granular markings are ignored and a warning message will be displayed. Since that is the highest level of data marking available in STIX 2.0, any object downgraded will contain embedded object-level markings in their STIX 1.X representation regardless of using the same marking definition in multiple places. Therefore, it can result in a verbose output compared to its 2.X counterpart. The marking-definition objects will be placed in the STIX_Header section of the document.
The supported marking types are: TLP, Statement and AIS.
Kill Chains¶
Kill chains and their phases in STIX 2.0 are referred to by their names. There is no id
associated with a kill chain phase.
Additionally, kill chains are not defined within STIX 2.0 content. The assumption is that if a kill chain is known among those
sharing content, the names will be sufficient to identify them consistently. According to the STIX 2.0 specification,
if the Lockheed Martin Cyber Kill Chain™ is used the kill_chain_name
will be lockheed-martin-cyber-kill-chain
.
Because kill chains need to be explicitly defined within the STIX 1.x content, each kill chain phase found in the STIX 2.0 content will be used to partially construct a kill chain definition. For this reason, the resultant kill chain will only contain the kill chain phases used.
Versioning¶
Both STIX 1.x and STIX 2.0 support the versioning of objects, but there is no attempt by the slider to explicitly maintain versioning information when converting to STIX 1.x.
All converted objects will be assumed to be the one and only version of an object. If more than one object is found with the same id, it will not be flagged as an error.
Warning Messages¶
General¶
Message | Code | Level |
---|---|---|
Observable Expressions should not contain placeholders | 201 | Error |
Both console and output log have disabled messages | 202 | Warn |
silent option is not compatible with a policy | 203 | Warn |
options not initialized | 204 | Warn |
Possible issue in original STIX 2.0 content¶
Message | Code | Level |
---|---|---|
No source object exists for [id] to add the relationship [relationship] | 301 | Warn |
Unknown hash type [hash_type] used in [id] | 302 | Warn |
[property] is not a legal property in the pattern of [id] | 303 | Warn |
Unknown address type [type] used in [id] | 304 | Warn |
ref type [type] in [id] is not known | 305 | Warn |
[cyber_observable_id] is not an index found in [id] | 306 | Warn |
No object [id] is found to add the reference to | 307 | Warn |
[id1] is not in this bundle. Referenced from [id2] | 308 | Warn |
is_encrypted in [id] is true, but no encryption_algorithm is given |
309 | Info |
is_encrypted in [id] is false, but encryption_algorithm is given |
310 | Info |
is_encrypted in [id] is true, but no decryption_key is given |
311 | Info |
is_encrypted in [id] is false, but decryption_key is given |
312 | Info |
The [property1] property in [id] should be ‘[boolean]’ if the [property2] property is [not] present | 313 | Warn |
Multiple values are not supported in STIX 1.x¶
Message | Code | Level |
---|---|---|
[type] in STIX 2.0 has multiple [property], only one is allowed in STIX 1.x. Using first in list - [value] omitted | 401 | Warn |
Only one dll can be represented in STIX 1.x for [id], using first one - ignoring [value] | 402 | Warn |
Dropping Content not supported in STIX 1.x¶
Message | Code | Level |
---|---|---|
The [relationship] relationship between [id1] and [id2] is not supported in STIX 1.x | 501 | Warn |
Multiple File Extensions in [id] not supported yet | 502 | Warn |
[property] not representable in a STIX 1.x [type]. Found in [id] | 503 | Warn |
[property] not representable in a STIX 1.x [type]. Found in the pattern of [id] | 504 | Warn |
[op] cannot be converted to a STIX 1.x operator in the pattern of [id] | 505 | Warn |
account_type property of [id] in STIX 2.0 is not directly represented as a property in STIX 1.x |
506 | Warn |
Received Line [line] in [id] has a prefix that is not representable in STIX 1.x | 507 | Warn |
Unable to convert STIX 2.0 sighting [id] because it doesn’t refer to an indicator | 508 | Warn |
NO MESSAGE ASSIGNED |
509 | |
Identity has no property to store external-references from [id] |
510 | Warn |
pe_type SYS in [id] is valid in STIX 2.0, but not in STIX 1.x | 511 | Warn |
pe_type [pe_type] in [id] is allowed in STIX 2.0, but not in STIX 1.x | 512 | Warn |
[property] is an XML attribute of [cybox object type] in STIX 1.x, so the operator ‘equals’ is assumed in [id] | 513 | Warn |
Order may not be maintained for pdfids in [id] |
514 | Warn |
The groups property of unix-account-ext contains strings, but the STIX 1.x property expects integers in [property] |
515 | Warn |
No file name provided for binary_ref of [id], therefore it cannot be represented in the STIX 1.x Process object |
516 | Warn |
Hashes of the binary_ref of [id] process cannot be represented in the STIX 1.x Process object |
517 | Warn |
resolves_to_refs in [id] not representable in STIX 1.x | 518 | Warn |
Multiple Network Traffic extensions in [id] not supported yet | 519 | Warn |
The user_id property of [id] in STIX 2.0 is only represented as a property in STIX 1.x on UnixUserAccount objects |
520 | Warn |
The path property in [id] is the only directory property supportable in STIX 1.x. [property] is ignored |
521 | Warn |
Nested Archive Files in [id] not handled yet | 522 | Warn |
STIX 1.x can only store the body and headers of an email message in [id] independently | 523 | Warn |
Cannot convert STIX 2.0 content that contains intrusion-sets |
524 | Error |
[id] is not explicitly a member of a STIX 1.x Report |
525 | Warn |
[id] cannot be represented in STIX 1.x | 526 | Warn |
STIX Slider currently doesn’t process this content¶
Message | Code | Level |
---|---|---|
The [property] property in [id] can refer to any object, so it is not handled yet. | 601 | Warn |
number indicies in [id] not handled, yet | 602 | Warn |
Unable to determine STIX 1.x type for [id] | 603 | Error |
Granular Markings present in [id] are not supported by stix2slider | 604 | Warn |
Source name [name] in external references of [id] not handled, yet | 605 | Warn |
[property] property in [id] not handled yet | 606 | Warn |
contains_refs in [id] not handled |
607 | Warn |
protocols property in [id] not handled, yet |
608 | Warn |
tcp-ext in [id] not handled, yet |
609 | Warn |
Operator for Artifact.Raw_Artifact in [id] not handled yet |
610 | Warn |
Nested extensions and references in patterns are not handled, yet. Found in pattern of [id] | 611 | Warn |
[ref_id] in [id] cannot be represented in STIX 1.x | 612 | Warn |
STIX Slider conversion based on assumptions¶
Message | Code | Level |
---|---|---|
Assuming imcp packet in [id] is v4 | 701 | Info |
InformationSource descriptions order or content in may not correspond to the references in [id] |
702 | Info |
[ref_id] in [id] is not explicitly a member of a STIX 1.x report | 703 | Info |