From 8922324700747116fcba94cb5655c8723e155394 Mon Sep 17 00:00:00 2001 From: Roberto Rodriguez Date: Tue, 24 Nov 2020 18:20:23 -0500 Subject: [PATCH] hot fixes - version 0.3.4.3 + fix https://github.com/OTRF/ATTACK-Python-Client/issues/22 + Updated Notebooks + Created ICS ATT&Ck Exploration Notebook + Updated Revoke and Deprecated functions (Removed Extract parameter for both and created additional functions) + New functions extract_revoked and extract_deprecated. They export STIX objects that have been deprecated or revoked for additional analysis. + Added Warnings messages for all PRE ATT&CK --- README.md | 6 +- attackcti/attack_api.py | 71 +- notebooks/ATT&CK_DataSources.ipynb | 3480 +++++---- notebooks/Export_All_Techniques.ipynb | 10 +- notebooks/ICS_ATTACK_Exploration.ipynb | 661 ++ notebooks/Usage_Basics.ipynb | 6601 ++++++++--------- notebooks/Usage_Filters.ipynb | 172 +- .../export_groups_navigator_layers.ipynb | 407 +- notebooks/techniques_by_datasources.ipynb | 118 +- setup.py | 2 +- 10 files changed, 5871 insertions(+), 5657 deletions(-) create mode 100644 notebooks/ICS_ATTACK_Exploration.ipynb diff --git a/README.md b/README.md index 9372485..330c2aa 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,8 @@ # ATT&CK Python Client [![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/OTRF/ATTACK-Python-Client/master) +[![Open_Threat_Research Community](https://img.shields.io/badge/Open_Threat_Research-Community-brightgreen.svg)](https://twitter.com/OTR_Community) +[![Open Source Love svg1](https://badges.frapsoft.com/os/v3/open-source.svg?v=103)](https://github.com/ellerbrock/open-source-badges/) A Python module to access up to date ATT&CK content available in STIX via public TAXII server. This project leverages the python classes and functions of the [cti-python-stix2](https://github.com/oasis-open/cti-python-stix2) and [cti-taxii-client](https://github.com/oasis-open/cti-taxii-client) libraries developed by MITRE. @@ -16,10 +18,6 @@ A Python module to access up to date ATT&CK content available in STIX via public The project is currently in a Production/Stable stage, which means that the current main functions are more stable. I would love to get your feedback to make it a better project. -## Updates - -* 11/23/2020 - Added ICS ATT&CK functionality (PRE-ATTACK is deprecated but still available through the library to not break current deployments that leverage it) - ## Resources * [MITRE CTI](https://github.com/mitre/cti) diff --git a/attackcti/attack_api.py b/attackcti/attack_api.py index dfb15b5..be8a24e 100644 --- a/attackcti/attack_api.py +++ b/attackcti/attack_api.py @@ -14,6 +14,7 @@ from taxii2client.v20 import Collection import json import os +import warnings ATTACK_STIX_COLLECTIONS = "https://cti-taxii.mitre.org/stix/collections/" ENTERPRISE_ATTACK = "95ecc380-afe9-11e4-9b6c-751b66dd541e" @@ -244,37 +245,37 @@ def handle_list(list_object, object_type): stix_objects_list.append(obj_dict) return stix_objects_list - def remove_revoked(self, stix_objects, extract=False): - handle_revoked = list() + def remove_revoked(self, stix_objects): + non_revoked = list() for obj in stix_objects: - if 'revoked' in obj.keys(): - if extract: - if obj['revoked']: - handle_revoked.append(obj) - else: - continue - else: - if obj['revoked'] == False: - handle_revoked.append(obj) + if 'revoked' in obj.keys() and obj['revoked'] == True: + continue else: - handle_revoked.append(obj) - return handle_revoked + non_revoked.append(obj) + return non_revoked - def remove_deprecated(self, stix_objects, extract=False): - handle_deprecated = list() + def extract_revoked(self, stix_objects): + revoked = list() for obj in stix_objects: - if 'x_mitre_deprecated' in obj.keys(): - if extract: - if obj['x_mitre_deprecated']: - handle_deprecated.append(obj) - else: - continue - else: - if obj['x_mitre_deprecated'] == False: - handle_deprecated.append(obj) + if 'revoked' in obj.keys() and obj['revoked'] == True: + revoked.append(obj) + return revoked + + def remove_deprecated(self, stix_objects): + non_deprecated = list() + for obj in stix_objects: + if 'x_mitre_deprecated' in obj.keys() and obj['x_mitre_deprecated'] == True: + continue else: - handle_deprecated.append(obj) - return handle_deprecated + non_deprecated.append(obj) + return non_deprecated + + def extract_deprecated(self, stix_objects): + deprecated = list() + for obj in stix_objects: + if 'x_mitre_deprecated' in obj.keys() and obj['x_mitre_deprecated'] == True: + deprecated.append(obj) + return deprecated # ******** Enterprise ATT&CK Technology Domain ******* def get_enterprise(self, stix_format=True): @@ -421,6 +422,9 @@ def get_pre(self, stix_format=True): List of STIX objects """ + + warnings.warn("PRE ATT&CK is deprecated. It will be removed in future versions. Consider adjusting your application") + pre_filter_objects = { "techniques": Filter("type", "=", "attack-pattern"), "groups": Filter("type", "=", "intrusion-set"), @@ -434,7 +438,7 @@ def get_pre(self, stix_format=True): for key in pre_filter_objects: pre_stix_objects[key] = self.TC_PRE_SOURCE.query(pre_filter_objects[key]) if not stix_format: - pre_stix_objects[key] = self.translate_stix_objects(pre_stix_objects[key]) + pre_stix_objects[key] = self.translate_stix_objects(pre_stix_objects[key]) return pre_stix_objects def get_pre_techniques(self, stix_format=True): @@ -447,6 +451,9 @@ def get_pre_techniques(self, stix_format=True): List of STIX objects """ + + warnings.warn("PRE ATT&CK is deprecated. It will be removed in future versions. Consider adjusting your application") + pre_techniques = self.TC_PRE_SOURCE.query(Filter("type", "=", "attack-pattern")) if not stix_format: pre_techniques = self.translate_stix_objects(pre_techniques) @@ -462,6 +469,9 @@ def get_pre_groups(self, stix_format=True): List of STIX objects """ + + warnings.warn("PRE ATT&CK is deprecated. It will be removed in future versions. Consider adjusting your application") + pre_groups = self.TC_PRE_SOURCE.query(Filter("type", "=", "intrusion-set")) if not stix_format: pre_groups = self.translate_stix_objects(pre_groups) @@ -477,6 +487,9 @@ def get_pre_relationships(self, stix_format=True): List of STIX objects """ + + warnings.warn("PRE ATT&CK is deprecated. It will be removed in future versions. Consider adjusting your application") + pre_relationships = self.TC_PRE_SOURCE.query(Filter("type", "=", "relationship")) if not stix_format: pre_relationships = self.translate_stix_objects(pre_relationships) @@ -492,6 +505,9 @@ def get_pre_tactics(self, stix_format=True): List of STIX objects """ + + warnings.warn("PRE ATT&CK is deprecated. It will be removed in future versions. Consider adjusting your application") + pre_tactics = self.TC_PRE_SOURCE.query(Filter("type", "=", "x-mitre-tactic")) if not stix_format: pre_tactics = self.translate_stix_objects(pre_tactics) @@ -508,6 +524,7 @@ def get_mobile(self, stix_format=True): List of STIX objects """ + mobile_filter_objects = { "techniques": Filter("type", "=", "attack-pattern"), "mitigations": Filter("type", "=", "course-of-action"), diff --git a/notebooks/ATT&CK_DataSources.ipynb b/notebooks/ATT&CK_DataSources.ipynb index 3e064b9..b47c201 100644 --- a/notebooks/ATT&CK_DataSources.ipynb +++ b/notebooks/ATT&CK_DataSources.ipynb @@ -63,14 +63,12 @@ "outputs": [], "source": [ "from pandas import *\n", - "from pandas.io.json import json_normalize\n", - "\n", "import numpy as np\n", "\n", "import altair as alt\n", "alt.renderers.enable('notebook')\n", "\n", - "import itertools\n" + "import itertools" ] }, { @@ -127,44 +125,38 @@ { "data": { "text/plain": [ - "{'external_references': [{'external_id': 'T1500',\n", - " 'source_name': 'mitre-attack',\n", - " 'url': 'https://attack.mitre.org/techniques/T1500'},\n", - " {'url': 'https://www.clearskysec.com/wp-content/uploads/2018/11/MuddyWater-Operations-in-Lebanon-and-Oman.pdf',\n", - " 'source_name': 'ClearSky MuddyWater Nov 2018',\n", - " 'description': 'ClearSky Cyber Security. (2018, November). MuddyWater Operations in Lebanon and Oman: Using an Israeli compromised domain for a two-stage campaign. Retrieved November 29, 2018.'},\n", - " {'url': 'https://blog.trendmicro.com/trendlabs-security-intelligence/windows-app-runs-on-mac-downloads-info-stealer-and-adware/',\n", - " 'source_name': 'TrendMicro WindowsAppMac',\n", - " 'description': 'Trend Micro. (2019, February 11). Windows App Runs on Mac, Downloads Info Stealer and Adware. Retrieved April 25, 2019.'}],\n", - " 'kill_chain_phases': [{'phase_name': 'defense-evasion',\n", - " 'kill_chain_name': 'mitre-attack'}],\n", + "{'external_references': [{'source_name': 'mitre-attack',\n", + " 'external_id': 'T1059.008',\n", + " 'url': 'https://attack.mitre.org/techniques/T1059/008'},\n", + " {'source_name': 'Cisco Synful Knock Evolution',\n", + " 'url': 'https://blogs.cisco.com/security/evolution-of-attacks-on-cisco-ios-devices',\n", + " 'description': 'Graham Holmes. (2015, October 8). Evolution of attacks on Cisco IOS devices. Retrieved October 19, 2020.'},\n", + " {'source_name': 'Cisco IOS Software Integrity Assurance - Command History',\n", + " 'url': 'https://tools.cisco.com/security/center/resources/integrity_assurance.html#23',\n", + " 'description': 'Cisco. (n.d.). Cisco IOS Software Integrity Assurance - Command History. Retrieved October 21, 2020.'}],\n", + " 'kill_chain_phases': [{'kill_chain_name': 'mitre-attack',\n", + " 'phase_name': 'execution'}],\n", + " 'x_mitre_is_subtechnique': True,\n", " 'x_mitre_version': '1.0',\n", - " 'url': 'https://attack.mitre.org/techniques/T1500',\n", - " 'matrix': 'mitre-attack',\n", - " 'technique_id': 'T1500',\n", + " 'id': 'attack-pattern--818302b2-d640-477b-bf88-873120ce85c4',\n", + " 'technique_description': 'Adversaries may abuse scripting or built-in command line interpreters (CLI) on network devices to execute malicious command and payloads. The CLI is the primary means through which users and administrators interact with the device in order to view system information, modify device operations, or perform diagnostic and administrative functions. CLIs typically contain various permission levels required for different commands. \\n\\nScripting interpreters automate tasks and extend functionality beyond the command set included in the network OS. The CLI and scripting interpreter are accessible through a direct console connection, or through remote means, such as telnet or secure shell (SSH).\\n\\nAdversaries can use the network CLI to change how network devices behave and operate. The CLI may be used to manipulate traffic flows to intercept or manipulate data, modify startup configuration parameters to load malicious system software, or to disable security features or logging to avoid detection. (Citation: Cisco Synful Knock Evolution)',\n", + " 'technique': 'Network Device CLI',\n", + " 'created_by_ref': 'identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5',\n", " 'object_marking_refs': ['marking-definition--fa42a846-8d90-4e51-bc29-71d5b4802168'],\n", + " 'url': 'https://attack.mitre.org/techniques/T1059/008',\n", + " 'matrix': 'mitre-attack',\n", + " 'technique_id': 'T1059.008',\n", " 'type': 'attack-pattern',\n", - " 'modified': '2019-04-29T21:13:49.686Z',\n", - " 'created_by_ref': 'identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5',\n", - " 'tactic': ['defense-evasion'],\n", - " 'id': 'attack-pattern--cf7b3a06-8b42-4c33-bbe9-012120027925',\n", - " 'technique': 'Compile After Delivery',\n", - " 'created': '2019-04-25T20:53:07.719Z',\n", - " 'technique_description': 'Adversaries may attempt to make payloads difficult to discover and analyze by delivering files to victims as uncompiled code. Similar to [Obfuscated Files or Information](https://attack.mitre.org/techniques/T1027), text-based source code files may subvert analysis and scrutiny from protections targeting executables/binaries. These payloads will need to be compiled before execution; typically via native utilities such as csc.exe or GCC/MinGW.(Citation: ClearSky MuddyWater Nov 2018)\\n\\nSource code payloads may also be encrypted, encoded, and/or embedded within other files, such as those delivered as a [Spearphishing Attachment](https://attack.mitre.org/techniques/T1193). Payloads may also be delivered in formats unrecognizable and inherently benign to the native OS (ex: EXEs on macOS/Linux) before later being (re)compiled into a proper executable binary with a bundled compiler and execution framework.(Citation: TrendMicro WindowsAppMac)\\n',\n", - " 'contributors': ['Ye Yint Min Thu Htut, Offensive Security Team, DBS Bank',\n", - " 'Praetorian'],\n", - " 'permissions_required': ['User'],\n", - " 'data_sources': ['Process command-line parameters',\n", - " 'Process monitoring',\n", - " 'File monitoring'],\n", - " 'technique_detection': 'Monitor the execution file paths and command-line arguments for common compilers, such as csc.exe and GCC/MinGW, and correlate with other suspicious behavior to reduce false positives from normal user and administrator behavior. The compilation of payloads may also generate file creation and/or file write events. Look for non-native binary formats and cross-platform compiler and execution frameworks like Mono and determine if they have a legitimate purpose on the system.(Citation: TrendMicro WindowsAppMac) Typically these should only be used in specific and limited cases, like for software development.',\n", - " 'platform': ['Linux', 'macOS', 'Windows'],\n", - " 'system_requirements': ['Compiler software (either native to the system or delivered by the adversary)'],\n", - " 'defense_bypassed': ['Static File Analysis',\n", - " 'Binary Analysis',\n", - " 'Anti-virus',\n", - " 'Host intrusion prevention systems',\n", - " 'Signature-based detection']}" + " 'tactic': ['execution'],\n", + " 'modified': '2020-10-22T16:43:38.388Z',\n", + " 'created': '2020-10-20T00:09:33.072Z',\n", + " 'data_sources': ['Network device logs',\n", + " 'Network device run-time memory',\n", + " 'Network device command history',\n", + " 'Network device configuration'],\n", + " 'platform': ['Network'],\n", + " 'technique_detection': 'Consider reviewing command history in either the console or as part of the running memory to determine if unauthorized or suspicious commands were used to modify device configuration.(Citation: Cisco IOS Software Integrity Assurance - Command History)\\n\\nConsider comparing a copy of the network device configuration against a known-good version to discover unauthorized changes to the command interpreter. The same process can be accomplished through a comparison of the run-time memory, though this is non-trivial and may require assistance from the vendor.',\n", + " 'permissions_required': ['Administrator', 'User']}" ] }, "execution_count": 5, @@ -190,7 +182,7 @@ "metadata": {}, "outputs": [], "source": [ - "techniques_normalized = json_normalize(all_techniques)" + "techniques_normalized = pandas.json_normalize(all_techniques)" ] }, { @@ -221,40 +213,40 @@ " \n", " external_references\n", " kill_chain_phases\n", + " x_mitre_is_subtechnique\n", " x_mitre_version\n", - " url\n", - " matrix\n", - " technique_id\n", - " object_marking_refs\n", - " type\n", - " modified\n", + " id\n", + " technique_description\n", + " technique\n", " created_by_ref\n", + " object_marking_refs\n", + " url\n", " ...\n", - " effective_permissions\n", - " network_requirements\n", + " remote_support\n", + " impact_type\n", + " revoked\n", + " x_mitre_deprecated\n", " x_mitre_old_attack_id\n", - " detectable_by_common_defenses\n", " difficulty_explanation\n", " difficulty_for_adversary\n", " detectable_explanation\n", - " x_mitre_deprecated\n", + " detectable_by_common_defenses\n", " tactic_type\n", - " revoked\n", " \n", " \n", " \n", " \n", " 0\n", - " [{'external_id': 'T1500', 'source_name': 'mitr...\n", - " [{'phase_name': 'defense-evasion', 'kill_chain...\n", + " [{'source_name': 'mitre-attack', 'external_id'...\n", + " [{'kill_chain_name': 'mitre-attack', 'phase_na...\n", + " True\n", " 1.0\n", - " https://attack.mitre.org/techniques/T1500\n", - " mitre-attack\n", - " T1500\n", - " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", - " attack-pattern\n", - " 2019-04-29T21:13:49.686Z\n", + " attack-pattern--818302b2-d640-477b-bf88-873120...\n", + " Adversaries may abuse scripting or built-in co...\n", + " Network Device CLI\n", " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", + " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", + " https://attack.mitre.org/techniques/T1059/008\n", " ...\n", " NaN\n", " NaN\n", @@ -269,38 +261,41 @@ " \n", " \n", "\n", - "

1 rows × 36 columns

\n", + "

1 rows × 37 columns

\n", "" ], "text/plain": [ " external_references \\\n", - "0 [{'external_id': 'T1500', 'source_name': 'mitr... \n", + "0 [{'source_name': 'mitre-attack', 'external_id'... \n", + "\n", + " kill_chain_phases x_mitre_is_subtechnique \\\n", + "0 [{'kill_chain_name': 'mitre-attack', 'phase_na... True \n", "\n", - " kill_chain_phases x_mitre_version \\\n", - "0 [{'phase_name': 'defense-evasion', 'kill_chain... 1.0 \n", + " x_mitre_version id \\\n", + "0 1.0 attack-pattern--818302b2-d640-477b-bf88-873120... \n", "\n", - " url matrix technique_id \\\n", - "0 https://attack.mitre.org/techniques/T1500 mitre-attack T1500 \n", + " technique_description technique \\\n", + "0 Adversaries may abuse scripting or built-in co... Network Device CLI \n", "\n", - " object_marking_refs type \\\n", - "0 [marking-definition--fa42a846-8d90-4e51-bc29-7... attack-pattern \n", + " created_by_ref \\\n", + "0 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", "\n", - " modified created_by_ref \\\n", - "0 2019-04-29T21:13:49.686Z identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", + " object_marking_refs \\\n", + "0 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", "\n", - " ... effective_permissions network_requirements x_mitre_old_attack_id \\\n", - "0 ... NaN NaN NaN \n", + " url ... remote_support \\\n", + "0 https://attack.mitre.org/techniques/T1059/008 ... NaN \n", "\n", - " detectable_by_common_defenses difficulty_explanation \\\n", - "0 NaN NaN \n", + " impact_type revoked x_mitre_deprecated x_mitre_old_attack_id \\\n", + "0 NaN NaN NaN NaN \n", "\n", - " difficulty_for_adversary detectable_explanation x_mitre_deprecated \\\n", - "0 NaN NaN NaN \n", + " difficulty_explanation difficulty_for_adversary detectable_explanation \\\n", + "0 NaN NaN NaN \n", "\n", - " tactic_type revoked \n", - "0 NaN NaN \n", + " detectable_by_common_defenses tactic_type \n", + "0 NaN NaN \n", "\n", - "[1 rows x 36 columns]" + "[1 rows x 37 columns]" ] }, "execution_count": 7, @@ -366,73 +361,73 @@ " \n", " 0\n", " mitre-attack\n", - " [Linux, macOS, Windows]\n", - " [defense-evasion]\n", - " Compile After Delivery\n", - " T1500\n", - " [Process command-line parameters, Process moni...\n", + " [Network]\n", + " [execution]\n", + " Network Device CLI\n", + " T1059.008\n", + " [Network device logs, Network device run-time ...\n", " \n", " \n", " 1\n", " mitre-attack\n", - " [Linux]\n", - " [persistence]\n", - " Systemd Service\n", - " T1501\n", - " [Process command-line parameters, Process moni...\n", + " [Network]\n", + " [collection]\n", + " Network Device Configuration Dump\n", + " T1602.002\n", + " [Netflow/Enclave netflow, Network protocol ana...\n", " \n", " \n", " 2\n", " mitre-attack\n", - " [Linux, macOS, Windows]\n", - " [impact]\n", - " Endpoint Denial of Service\n", - " T1499\n", - " [SSL/TLS inspection, Web logs, Web application...\n", + " [Network]\n", + " [defense-evasion, persistence]\n", + " TFTP Boot\n", + " T1542.005\n", + " [Network device run-time memory, Network devic...\n", " \n", " \n", " 3\n", " mitre-attack\n", - " [Windows]\n", - " [defense-evasion, discovery]\n", - " Virtualization/Sandbox Evasion\n", - " T1497\n", - " [Process monitoring, Process command-line para...\n", + " [Network]\n", + " [defense-evasion, persistence]\n", + " ROMMONkit\n", + " T1542.004\n", + " [File monitoring, Netflow/Enclave netflow, Net...\n", " \n", " \n", " 4\n", " mitre-attack\n", - " [Linux, macOS, Windows]\n", - " [impact]\n", - " Network Denial of Service\n", - " T1498\n", - " [Sensor health and status, Network protocol an...\n", + " [Network]\n", + " [collection]\n", + " SNMP (MIB Dump)\n", + " T1602.001\n", + " [Netflow/Enclave netflow, Network protocol ana...\n", " \n", " \n", "\n", "" ], "text/plain": [ - " matrix platform tactic \\\n", - "0 mitre-attack [Linux, macOS, Windows] [defense-evasion] \n", - "1 mitre-attack [Linux] [persistence] \n", - "2 mitre-attack [Linux, macOS, Windows] [impact] \n", - "3 mitre-attack [Windows] [defense-evasion, discovery] \n", - "4 mitre-attack [Linux, macOS, Windows] [impact] \n", + " matrix platform tactic \\\n", + "0 mitre-attack [Network] [execution] \n", + "1 mitre-attack [Network] [collection] \n", + "2 mitre-attack [Network] [defense-evasion, persistence] \n", + "3 mitre-attack [Network] [defense-evasion, persistence] \n", + "4 mitre-attack [Network] [collection] \n", "\n", - " technique technique_id \\\n", - "0 Compile After Delivery T1500 \n", - "1 Systemd Service T1501 \n", - "2 Endpoint Denial of Service T1499 \n", - "3 Virtualization/Sandbox Evasion T1497 \n", - "4 Network Denial of Service T1498 \n", + " technique technique_id \\\n", + "0 Network Device CLI T1059.008 \n", + "1 Network Device Configuration Dump T1602.002 \n", + "2 TFTP Boot T1542.005 \n", + "3 ROMMONkit T1542.004 \n", + "4 SNMP (MIB Dump) T1602.001 \n", "\n", " data_sources \n", - "0 [Process command-line parameters, Process moni... \n", - "1 [Process command-line parameters, Process moni... \n", - "2 [SSL/TLS inspection, Web logs, Web application... \n", - "3 [Process monitoring, Process command-line para... \n", - "4 [Sensor health and status, Network protocol an... " + "0 [Network device logs, Network device run-time ... \n", + "1 [Netflow/Enclave netflow, Network protocol ana... \n", + "2 [Network device run-time memory, Network devic... \n", + "3 [File monitoring, Netflow/Enclave netflow, Net... \n", + "4 [Netflow/Enclave netflow, Network protocol ana... " ] }, "execution_count": 9, @@ -453,7 +448,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "A total of 500 techniques\n" + "A total of 1024 techniques\n" ] } ], @@ -486,7 +481,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "A total of 485 techniques\n" + "A total of 878 techniques\n" ] } ], @@ -519,7 +514,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "A total of 15 techniques that have been revoked\n" + "A total of 146 techniques that have been revoked\n" ] } ], @@ -543,14 +538,145 @@ "name": "stdout", "output_type": "stream", "text": [ + "Web Session Cookie\n", + "Emond\n", + "Cloud Instance Metadata API\n", + "Revert Cloud Instance\n", + "Application Access Token\n", + "Elevated Execution with Prompt\n", + "Credentials from Web Browsers\n", + "PowerShell Profile\n", + "Parent PID Spoofing\n", + "Compile After Delivery\n", + "Systemd Service\n", + "Runtime Data Manipulation\n", + "Transmitted Data Manipulation\n", + "Stored Data Manipulation\n", + "Disk Content Wipe\n", + "Disk Structure Wipe\n", + "Domain Generation Algorithms\n", + "Compiled HTML File\n", + "Kernel Modules and Extensions\n", + "Spearphishing Link\n", + "CMSTP\n", + "Credentials in Registry\n", + "Control Panel Items\n", + "Kerberoasting\n", + "Spearphishing Attachment\n", + "SIP and Trust Provider Hijacking\n", + "Spearphishing via Service\n", + "Sudo Caching\n", + "Time Providers\n", + "AppCert DLLs\n", + "Dynamic Data Exchange\n", + "Multi-hop Proxy\n", + "Process Doppelgänging\n", + "Extra Window Memory Injection\n", + "Domain Fronting\n", + "Mshta\n", + "Hooking\n", + "Image File Execution Options Injection\n", + "LSASS Driver\n", + "Screensaver\n", + "LLMNR/NBT-NS Poisoning and Relay\n", + "Password Filter DLL\n", + "SSH Hijacking\n", + "SID-History Injection\n", + "Gatekeeper Bypass\n", + "HISTCONTROL\n", + "LC_LOAD_DYLIB Addition\n", + "Launchctl\n", + "Local Job Scheduling\n", + "Private Keys\n", + "Rc.common\n", + "Space after Filename\n", + "Application Shimming\n", + "AppleScript\n", + "Bash History\n", + ".bash_profile and .bashrc\n", + "Clear Command History\n", + "Dylib Hijacking\n", + "Hidden Window\n", + "Launch Daemon\n", + "Hidden Users\n", + "Input Prompt\n", + "Launch Agent\n", + "Login Item\n", + "Keychain\n", + "Plist Modification\n", + "Re-opened Applications\n", + "Setuid and Setgid\n", + "Hidden Files and Directories\n", + "Startup Items\n", + "Sudo\n", + "Securityd Memory\n", + "Trap\n", + "Authentication Package\n", + "Install Root Certificate\n", + "Netsh Helper DLL\n", + "Network Share Connection Removal\n", + "Component Object Model Hijacking\n", + "Regsvcs/Regasm\n", + "InstallUtil\n", + "Regsvr32\n", + "Code Signing\n", + "Component Firmware\n", + "File Deletion\n", + "AppInit DLLs\n", + "Security Support Provider\n", + "Web Shell\n", + "Timestomp\n", + "Pass the Ticket\n", + "NTFS File Attributes\n", + "Custom Command and Control Protocol\n", + "Process Hollowing\n", + "Disabling Security Tools\n", + "Bypass User Account Control\n", + "PowerShell\n", + "Rundll32\n", + "Windows Management Instrumentation Event Subscription\n", + "Credentials in Files\n", + "Multilayer Encryption\n", + "Windows Admin Shares\n", + "Remote Desktop Protocol\n", + "Pass the Hash\n", + "DLL Side-Loading\n", + "Bootkit\n", + "Indicator Removal from Tools\n", + "Uncommonly Used Port\n", + "Security Software Discovery\n", + "Registry Run Keys / Startup Folder\n", + "Service Registry Permissions Weakness\n", + "Indicator Blocking\n", + "New Service\n", + "Software Packing\n", + "File System Permissions Weakness\n", + "Change Default File Association\n", + "DLL Search Order Hijacking\n", + "Service Execution\n", + "Standard Cryptographic Protocol\n", + "Modify Existing Service\n", + "Windows Remote Management\n", + "Custom Cryptographic Protocol\n", + "Shortcut Modification\n", + "Data Encrypted\n", + "System Firmware\n", + "Application Deployment Software\n", + "Accessibility Features\n", + "Port Monitors\n", + "Binary Padding\n", + "Winlogon Helper DLL\n", + "Data Compressed\n", "Remotely Install Application\n", "Insecure Third-Party Libraries\n", "Fake Developer Accounts\n", + "Device Type Discovery\n", "Detect App Analysis Environment\n", "Malicious Software Development Tools\n", "Biometric Spoofing\n", "Device Unlock Code Guessing or Brute Force\n", "Malicious Media Content\n", + "URL Scheme Hijacking\n", "Abuse of iOS Enterprise App Signing Key\n", "App Delivered via Web Download\n", "App Delivered via Email Attachment\n", @@ -579,7 +705,7 @@ "metadata": {}, "outputs": [], "source": [ - "techniques_normalized = json_normalize(all_techniques_no_revoked)\n", + "techniques_normalized = pandas.json_normalize(all_techniques_no_revoked)\n", "techniques = techniques_normalized.reindex(['matrix','platform','tactic','technique','technique_id','data_sources'], axis=1)" ] }, @@ -626,15 +752,20 @@ " \n", " 0\n", " mitre-attack\n", - " 244\n", + " 536\n", " \n", " \n", " 1\n", - " mitre-mobile-attack\n", - " 67\n", + " mitre-ics-attack\n", + " 81\n", " \n", " \n", " 2\n", + " mitre-mobile-attack\n", + " 87\n", + " \n", + " \n", + " 3\n", " mitre-pre-attack\n", " 174\n", " \n", @@ -644,9 +775,10 @@ ], "text/plain": [ " matrix technique\n", - "0 mitre-attack 244\n", - "1 mitre-mobile-attack 67\n", - "2 mitre-pre-attack 174" + "0 mitre-attack 536\n", + "1 mitre-ics-attack 81\n", + "2 mitre-mobile-attack 87\n", + "3 mitre-pre-attack 174" ] }, "execution_count": 17, @@ -668,62 +800,53 @@ "outputs": [ { "data": { - "application/vnd.vegalite.v3+json": { - "$schema": "https://vega.github.io/schema/vega-lite/v3.4.0.json", - "config": { - "mark": { - "tooltip": null - }, - "view": { - "height": 300, - "width": 400 - } - }, - "data": { - "name": "data-4e72abcce3d3f026d281e5dd67d8131a" - }, - "datasets": { - "data-4e72abcce3d3f026d281e5dd67d8131a": [ - { - "matrix": "mitre-attack", - "technique": 244 - }, - { - "matrix": "mitre-mobile-attack", - "technique": 67 - }, - { - "matrix": "mitre-pre-attack", - "technique": 174 - } - ] - }, - "encoding": { - "color": { - "field": "matrix", - "type": "nominal" - }, - "x": { - "field": "technique", - "type": "quantitative" - }, - "y": { - "field": "matrix", - "type": "nominal" - } - }, - "height": 200, - "mark": "bar" - }, - "image/png": "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", - "text/plain": [ - "\n", + "application/javascript": [ + "const spec = {\"config\": {\"view\": {\"continuousWidth\": 400, \"continuousHeight\": 300}}, \"data\": {\"name\": \"data-184270221c81652fd0426411b5cc8a9f\"}, \"mark\": \"bar\", \"encoding\": {\"color\": {\"type\": \"nominal\", \"field\": \"matrix\"}, \"x\": {\"type\": \"quantitative\", \"field\": \"technique\"}, \"y\": {\"type\": \"nominal\", \"field\": \"matrix\"}}, \"height\": 200, \"$schema\": \"https://vega.github.io/schema/vega-lite/v4.8.1.json\", \"datasets\": {\"data-184270221c81652fd0426411b5cc8a9f\": [{\"matrix\": \"mitre-attack\", \"technique\": 536}, {\"matrix\": \"mitre-ics-attack\", \"technique\": 81}, {\"matrix\": \"mitre-mobile-attack\", \"technique\": 87}, {\"matrix\": \"mitre-pre-attack\", \"technique\": 174}]}};\n", + "const opt = {};\n", + "const type = \"vega-lite\";\n", + "const id = \"f4ebc20d-c16f-4ec6-90d8-ee18f2e853b3\";\n", + "\n", + "const output_area = this;\n", + "\n", + "require([\"nbextensions/jupyter-vega/index\"], function(vega) {\n", + " const target = document.createElement(\"div\");\n", + " target.id = id;\n", + " target.className = \"vega-embed\";\n", + "\n", + " const style = document.createElement(\"style\");\n", + " style.textContent = [\n", + " \".vega-embed .error p {\",\n", + " \" color: firebrick;\",\n", + " \" font-size: 14px;\",\n", + " \"}\",\n", + " ].join(\"\\\\n\");\n", + "\n", + " // element is a jQuery wrapped DOM element inside the output area\n", + " // see http://ipython.readthedocs.io/en/stable/api/generated/\\\n", + " // IPython.display.html#IPython.display.Javascript.__init__\n", + " element[0].appendChild(target);\n", + " element[0].appendChild(style);\n", "\n", - "If you see this message, it means the renderer has not been properly enabled\n", - "for the frontend that you are using. For more information, see\n", - "https://altair-viz.github.io/user_guide/troubleshooting.html\n" + " vega.render(\"#\" + id, spec, type, opt, output_area);\n", + "}, function (err) {\n", + " if (err.requireType !== \"scripterror\") {\n", + " throw(err);\n", + " }\n", + "});\n" + ], + "text/plain": [ + "" ] }, + "metadata": { + "jupyter-vega": "#f4ebc20d-c16f-4ec6-90d8-ee18f2e853b3" + }, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [] + }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" @@ -747,92 +870,53 @@ "outputs": [ { "data": { - "application/vnd.vegalite.v3+json": { - "$schema": "https://vega.github.io/schema/vega-lite/v3.4.0.json", - "config": { - "mark": { - "tooltip": null - }, - "view": { - "height": 300, - "width": 400 - } - }, - "data": { - "name": "data-c7ba43ddfd65b38f1fd0b608650ec191" - }, - "datasets": { - "data-c7ba43ddfd65b38f1fd0b608650ec191": [ - { - "Count of Techniques": 245, - "Techniques": "Without DS" - }, - { - "Count of Techniques": 240, - "Techniques": "With DS" - } - ] - }, - "layer": [ - { - "encoding": { - "color": { - "field": "Techniques", - "type": "nominal" - }, - "x": { - "field": "Techniques", - "type": "nominal" - }, - "y": { - "field": "Count of Techniques", - "type": "quantitative" - } - }, - "height": 300, - "mark": "bar", - "width": 200 - }, - { - "encoding": { - "color": { - "field": "Techniques", - "type": "nominal" - }, - "text": { - "field": "Count of Techniques", - "type": "quantitative" - }, - "x": { - "field": "Techniques", - "type": "nominal" - }, - "y": { - "field": "Count of Techniques", - "type": "quantitative" - } - }, - "height": 300, - "mark": { - "align": "center", - "baseline": "middle", - "dx": 0, - "dy": -5, - "type": "text" - }, - "width": 200 - } - ] - }, - "image/png": "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", - "text/plain": [ - "\n", + "application/javascript": [ + "const spec = {\"config\": {\"view\": {\"continuousWidth\": 400, \"continuousHeight\": 300}}, \"layer\": [{\"mark\": \"bar\", \"encoding\": {\"color\": {\"type\": \"nominal\", \"field\": \"Techniques\"}, \"x\": {\"type\": \"nominal\", \"field\": \"Techniques\"}, \"y\": {\"type\": \"quantitative\", \"field\": \"Count of Techniques\"}}, \"height\": 300, \"width\": 200}, {\"mark\": {\"type\": \"text\", \"align\": \"center\", \"baseline\": \"middle\", \"dx\": 0, \"dy\": -5}, \"encoding\": {\"color\": {\"type\": \"nominal\", \"field\": \"Techniques\"}, \"text\": {\"type\": \"quantitative\", \"field\": \"Count of Techniques\"}, \"x\": {\"type\": \"nominal\", \"field\": \"Techniques\"}, \"y\": {\"type\": \"quantitative\", \"field\": \"Count of Techniques\"}}, \"height\": 300, \"width\": 200}], \"data\": {\"name\": \"data-bf80216faf3e46fa0916c0fe5230113d\"}, \"$schema\": \"https://vega.github.io/schema/vega-lite/v4.8.1.json\", \"datasets\": {\"data-bf80216faf3e46fa0916c0fe5230113d\": [{\"Techniques\": \"Without DS\", \"Count of Techniques\": 337}, {\"Techniques\": \"With DS\", \"Count of Techniques\": 541}]}};\n", + "const opt = {};\n", + "const type = \"vega-lite\";\n", + "const id = \"82e36f62-3e49-41ca-a2a1-11888ec68245\";\n", "\n", - "If you see this message, it means the renderer has not been properly enabled\n", - "for the frontend that you are using. For more information, see\n", - "https://altair-viz.github.io/user_guide/troubleshooting.html\n" + "const output_area = this;\n", + "\n", + "require([\"nbextensions/jupyter-vega/index\"], function(vega) {\n", + " const target = document.createElement(\"div\");\n", + " target.id = id;\n", + " target.className = \"vega-embed\";\n", + "\n", + " const style = document.createElement(\"style\");\n", + " style.textContent = [\n", + " \".vega-embed .error p {\",\n", + " \" color: firebrick;\",\n", + " \" font-size: 14px;\",\n", + " \"}\",\n", + " ].join(\"\\\\n\");\n", + "\n", + " // element is a jQuery wrapped DOM element inside the output area\n", + " // see http://ipython.readthedocs.io/en/stable/api/generated/\\\n", + " // IPython.display.html#IPython.display.Javascript.__init__\n", + " element[0].appendChild(target);\n", + " element[0].appendChild(style);\n", + "\n", + " vega.render(\"#\" + id, spec, type, opt, output_area);\n", + "}, function (err) {\n", + " if (err.requireType !== \"scripterror\") {\n", + " throw(err);\n", + " }\n", + "});\n" + ], + "text/plain": [ + "" ] }, + "metadata": { + "jupyter-vega": "#82e36f62-3e49-41ca-a2a1-11888ec68245" + }, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [] + }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" @@ -890,22 +974,34 @@ " 0\n", " mitre-attack\n", " With DS\n", - " 240\n", + " 474\n", " \n", " \n", " 1\n", " mitre-attack\n", " Without DS\n", - " 4\n", + " 62\n", " \n", " \n", " 2\n", - " mitre-mobile-attack\n", - " Without DS\n", + " mitre-ics-attack\n", + " With DS\n", " 67\n", " \n", " \n", " 3\n", + " mitre-ics-attack\n", + " Without DS\n", + " 14\n", + " \n", + " \n", + " 4\n", + " mitre-mobile-attack\n", + " Without DS\n", + " 87\n", + " \n", + " \n", + " 5\n", " mitre-pre-attack\n", " Without DS\n", " 174\n", @@ -916,10 +1012,12 @@ ], "text/plain": [ " matrix Ind_DS technique\n", - "0 mitre-attack With DS 240\n", - "1 mitre-attack Without DS 4\n", - "2 mitre-mobile-attack Without DS 67\n", - "3 mitre-pre-attack Without DS 174" + "0 mitre-attack With DS 474\n", + "1 mitre-attack Without DS 62\n", + "2 mitre-ics-attack With DS 67\n", + "3 mitre-ics-attack Without DS 14\n", + "4 mitre-mobile-attack Without DS 87\n", + "5 mitre-pre-attack Without DS 174" ] }, "execution_count": 20, @@ -943,70 +1041,53 @@ "outputs": [ { "data": { - "application/vnd.vegalite.v3+json": { - "$schema": "https://vega.github.io/schema/vega-lite/v3.4.0.json", - "config": { - "mark": { - "tooltip": null - }, - "view": { - "height": 300, - "width": 400 - } - }, - "data": { - "name": "data-b39210a0341482429462066eeca2ff18" - }, - "datasets": { - "data-b39210a0341482429462066eeca2ff18": [ - { - "Ind_DS": "With DS", - "matrix": "mitre-attack", - "technique": 240 - }, - { - "Ind_DS": "Without DS", - "matrix": "mitre-attack", - "technique": 4 - }, - { - "Ind_DS": "Without DS", - "matrix": "mitre-mobile-attack", - "technique": 67 - }, - { - "Ind_DS": "Without DS", - "matrix": "mitre-pre-attack", - "technique": 174 - } - ] - }, - "encoding": { - "color": { - "field": "matrix", - "type": "nominal" - }, - "x": { - "field": "technique", - "type": "quantitative" - }, - "y": { - "field": "Ind_DS", - "type": "nominal" - } - }, - "height": 200, - "mark": "bar" - }, - "image/png": "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", - "text/plain": [ - "\n", + "application/javascript": [ + "const spec = {\"config\": {\"view\": {\"continuousWidth\": 400, \"continuousHeight\": 300}}, \"data\": {\"name\": \"data-b034731fd80e42eb889ae43ae9d0d467\"}, \"mark\": \"bar\", \"encoding\": {\"color\": {\"type\": \"nominal\", \"field\": \"matrix\"}, \"x\": {\"type\": \"quantitative\", \"field\": \"technique\"}, \"y\": {\"type\": \"nominal\", \"field\": \"Ind_DS\"}}, \"height\": 200, \"$schema\": \"https://vega.github.io/schema/vega-lite/v4.8.1.json\", \"datasets\": {\"data-b034731fd80e42eb889ae43ae9d0d467\": [{\"matrix\": \"mitre-attack\", \"Ind_DS\": \"With DS\", \"technique\": 474}, {\"matrix\": \"mitre-attack\", \"Ind_DS\": \"Without DS\", \"technique\": 62}, {\"matrix\": \"mitre-ics-attack\", \"Ind_DS\": \"With DS\", \"technique\": 67}, {\"matrix\": \"mitre-ics-attack\", \"Ind_DS\": \"Without DS\", \"technique\": 14}, {\"matrix\": \"mitre-mobile-attack\", \"Ind_DS\": \"Without DS\", \"technique\": 87}, {\"matrix\": \"mitre-pre-attack\", \"Ind_DS\": \"Without DS\", \"technique\": 174}]}};\n", + "const opt = {};\n", + "const type = \"vega-lite\";\n", + "const id = \"c41580a3-6a3e-472f-86a6-5b5a975349cb\";\n", + "\n", + "const output_area = this;\n", + "\n", + "require([\"nbextensions/jupyter-vega/index\"], function(vega) {\n", + " const target = document.createElement(\"div\");\n", + " target.id = id;\n", + " target.className = \"vega-embed\";\n", "\n", - "If you see this message, it means the renderer has not been properly enabled\n", - "for the frontend that you are using. For more information, see\n", - "https://altair-viz.github.io/user_guide/troubleshooting.html\n" + " const style = document.createElement(\"style\");\n", + " style.textContent = [\n", + " \".vega-embed .error p {\",\n", + " \" color: firebrick;\",\n", + " \" font-size: 14px;\",\n", + " \"}\",\n", + " ].join(\"\\\\n\");\n", + "\n", + " // element is a jQuery wrapped DOM element inside the output area\n", + " // see http://ipython.readthedocs.io/en/stable/api/generated/\\\n", + " // IPython.display.html#IPython.display.Javascript.__init__\n", + " element[0].appendChild(target);\n", + " element[0].appendChild(style);\n", + "\n", + " vega.render(\"#\" + id, spec, type, opt, output_area);\n", + "}, function (err) {\n", + " if (err.requireType !== \"scripterror\") {\n", + " throw(err);\n", + " }\n", + "});\n" + ], + "text/plain": [ + "" ] }, + "metadata": { + "jupyter-vega": "#c41580a3-6a3e-472f-86a6-5b5a975349cb" + }, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [] + }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" @@ -1061,77 +1142,172 @@ " \n", " \n", " \n", - " 54\n", + " 17\n", " mitre-attack\n", - " [Linux, macOS]\n", - " [defense-evasion, persistence, command-and-con...\n", - " Port Knocking\n", - " T1205\n", + " [PRE]\n", + " [resource-development]\n", + " Vulnerabilities\n", + " T1588.006\n", " NaN\n", " NaN\n", " Without DS\n", " \n", " \n", - " 104\n", + " 23\n", " mitre-attack\n", - " [macOS]\n", - " [defense-evasion]\n", - " Gatekeeper Bypass\n", - " T1144\n", + " [PRE]\n", + " [reconnaissance]\n", + " Spearphishing Service\n", + " T1598.001\n", " NaN\n", " NaN\n", " Without DS\n", " \n", " \n", - " 107\n", + " 25\n", " mitre-attack\n", - " [macOS]\n", - " [persistence]\n", - " Re-opened Applications\n", - " T1164\n", + " [PRE]\n", + " [reconnaissance]\n", + " Purchase Technical Data\n", + " T1597.002\n", " NaN\n", " NaN\n", " Without DS\n", " \n", " \n", - " 124\n", + " 26\n", " mitre-attack\n", - " [Windows]\n", - " [discovery]\n", - " Peripheral Device Discovery\n", - " T1120\n", + " [PRE]\n", + " [reconnaissance]\n", + " Threat Intel Vendors\n", + " T1597.001\n", + " NaN\n", + " NaN\n", + " Without DS\n", + " \n", + " \n", + " 27\n", + " mitre-attack\n", + " [PRE]\n", + " [reconnaissance]\n", + " Search Closed Sources\n", + " T1597\n", + " NaN\n", + " NaN\n", + " Without DS\n", + " \n", + " \n", + " ...\n", + " ...\n", + " ...\n", + " ...\n", + " ...\n", + " ...\n", + " ...\n", + " ...\n", + " ...\n", + " \n", + " \n", + " 90\n", + " mitre-attack\n", + " [PRE]\n", + " [resource-development]\n", + " Compromise Infrastructure\n", + " T1584\n", + " NaN\n", + " NaN\n", + " Without DS\n", + " \n", + " \n", + " 92\n", + " mitre-attack\n", + " [PRE]\n", + " [resource-development]\n", + " Acquire Infrastructure\n", + " T1583\n", + " NaN\n", + " NaN\n", + " Without DS\n", + " \n", + " \n", + " 220\n", + " mitre-attack\n", + " [Linux, macOS, Windows]\n", + " [collection]\n", + " Archive via Custom Method\n", + " T1560.003\n", + " NaN\n", + " NaN\n", + " Without DS\n", + " \n", + " \n", + " 260\n", + " mitre-attack\n", + " [Linux]\n", + " [credential-access]\n", + " /etc/passwd and /etc/shadow\n", + " T1003.008\n", + " NaN\n", + " NaN\n", + " Without DS\n", + " \n", + " \n", + " 354\n", + " mitre-attack\n", + " [Linux, macOS, Windows]\n", + " [persistence, privilege-escalation]\n", + " Boot or Logon Autostart Execution\n", + " T1547\n", " NaN\n", " NaN\n", " Without DS\n", " \n", " \n", "\n", + "

62 rows × 8 columns

\n", "" ], "text/plain": [ - " matrix platform \\\n", - "54 mitre-attack [Linux, macOS] \n", - "104 mitre-attack [macOS] \n", - "107 mitre-attack [macOS] \n", - "124 mitre-attack [Windows] \n", + " matrix platform \\\n", + "17 mitre-attack [PRE] \n", + "23 mitre-attack [PRE] \n", + "25 mitre-attack [PRE] \n", + "26 mitre-attack [PRE] \n", + "27 mitre-attack [PRE] \n", + ".. ... ... \n", + "90 mitre-attack [PRE] \n", + "92 mitre-attack [PRE] \n", + "220 mitre-attack [Linux, macOS, Windows] \n", + "260 mitre-attack [Linux] \n", + "354 mitre-attack [Linux, macOS, Windows] \n", "\n", - " tactic \\\n", - "54 [defense-evasion, persistence, command-and-con... \n", - "104 [defense-evasion] \n", - "107 [persistence] \n", - "124 [discovery] \n", + " tactic technique \\\n", + "17 [resource-development] Vulnerabilities \n", + "23 [reconnaissance] Spearphishing Service \n", + "25 [reconnaissance] Purchase Technical Data \n", + "26 [reconnaissance] Threat Intel Vendors \n", + "27 [reconnaissance] Search Closed Sources \n", + ".. ... ... \n", + "90 [resource-development] Compromise Infrastructure \n", + "92 [resource-development] Acquire Infrastructure \n", + "220 [collection] Archive via Custom Method \n", + "260 [credential-access] /etc/passwd and /etc/shadow \n", + "354 [persistence, privilege-escalation] Boot or Logon Autostart Execution \n", "\n", - " technique technique_id data_sources Count_DS \\\n", - "54 Port Knocking T1205 NaN NaN \n", - "104 Gatekeeper Bypass T1144 NaN NaN \n", - "107 Re-opened Applications T1164 NaN NaN \n", - "124 Peripheral Device Discovery T1120 NaN NaN \n", + " technique_id data_sources Count_DS Ind_DS \n", + "17 T1588.006 NaN NaN Without DS \n", + "23 T1598.001 NaN NaN Without DS \n", + "25 T1597.002 NaN NaN Without DS \n", + "26 T1597.001 NaN NaN Without DS \n", + "27 T1597 NaN NaN Without DS \n", + ".. ... ... ... ... \n", + "90 T1584 NaN NaN Without DS \n", + "92 T1583 NaN NaN Without DS \n", + "220 T1560.003 NaN NaN Without DS \n", + "260 T1003.008 NaN NaN Without DS \n", + "354 T1547 NaN NaN Without DS \n", "\n", - " Ind_DS \n", - "54 Without DS \n", - "104 Without DS \n", - "107 Without DS \n", - "124 Without DS " + "[62 rows x 8 columns]" ] }, "execution_count": 22, @@ -1199,10 +1375,10 @@ " \n", " 0\n", " mitre-attack\n", - " [Linux, macOS]\n", - " [defense-evasion, persistence, command-and-con...\n", - " Port Knocking\n", - " T1205\n", + " [PRE]\n", + " [resource-development]\n", + " Vulnerabilities\n", + " T1588.006\n", " NaN\n", " NaN\n", " Without DS\n", @@ -1210,10 +1386,10 @@ " \n", " 1\n", " mitre-attack\n", - " [macOS]\n", - " [defense-evasion]\n", - " Gatekeeper Bypass\n", - " T1144\n", + " [PRE]\n", + " [reconnaissance]\n", + " Spearphishing Service\n", + " T1598.001\n", " NaN\n", " NaN\n", " Without DS\n", @@ -1221,10 +1397,10 @@ " \n", " 2\n", " mitre-attack\n", - " [macOS]\n", - " [persistence]\n", - " Re-opened Applications\n", - " T1164\n", + " [PRE]\n", + " [reconnaissance]\n", + " Purchase Technical Data\n", + " T1597.002\n", " NaN\n", " NaN\n", " Without DS\n", @@ -1232,21 +1408,21 @@ " \n", " 3\n", " mitre-attack\n", - " [Windows]\n", - " [discovery]\n", - " Peripheral Device Discovery\n", - " T1120\n", + " [PRE]\n", + " [reconnaissance]\n", + " Threat Intel Vendors\n", + " T1597.001\n", " NaN\n", " NaN\n", " Without DS\n", " \n", " \n", " 4\n", - " mitre-pre-attack\n", - " NaN\n", - " [technical-information-gathering]\n", - " Spearphishing for Information\n", - " T1397\n", + " mitre-attack\n", + " [PRE]\n", + " [reconnaissance]\n", + " Search Closed Sources\n", + " T1597\n", " NaN\n", " NaN\n", " Without DS\n", @@ -1256,33 +1432,19 @@ "" ], "text/plain": [ - " matrix platform \\\n", - "0 mitre-attack [Linux, macOS] \n", - "1 mitre-attack [macOS] \n", - "2 mitre-attack [macOS] \n", - "3 mitre-attack [Windows] \n", - "4 mitre-pre-attack NaN \n", - "\n", - " tactic \\\n", - "0 [defense-evasion, persistence, command-and-con... \n", - "1 [defense-evasion] \n", - "2 [persistence] \n", - "3 [discovery] \n", - "4 [technical-information-gathering] \n", + " matrix platform tactic technique \\\n", + "0 mitre-attack [PRE] [resource-development] Vulnerabilities \n", + "1 mitre-attack [PRE] [reconnaissance] Spearphishing Service \n", + "2 mitre-attack [PRE] [reconnaissance] Purchase Technical Data \n", + "3 mitre-attack [PRE] [reconnaissance] Threat Intel Vendors \n", + "4 mitre-attack [PRE] [reconnaissance] Search Closed Sources \n", "\n", - " technique technique_id data_sources Count_DS \\\n", - "0 Port Knocking T1205 NaN NaN \n", - "1 Gatekeeper Bypass T1144 NaN NaN \n", - "2 Re-opened Applications T1164 NaN NaN \n", - "3 Peripheral Device Discovery T1120 NaN NaN \n", - "4 Spearphishing for Information T1397 NaN NaN \n", - "\n", - " Ind_DS \n", - "0 Without DS \n", - "1 Without DS \n", - "2 Without DS \n", - "3 Without DS \n", - "4 Without DS " + " technique_id data_sources Count_DS Ind_DS \n", + "0 T1588.006 NaN NaN Without DS \n", + "1 T1598.001 NaN NaN Without DS \n", + "2 T1597.002 NaN NaN Without DS \n", + "3 T1597.001 NaN NaN Without DS \n", + "4 T1597 NaN NaN Without DS " ] }, "execution_count": 24, @@ -1303,7 +1465,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "There are 245 techniques without data sources ( 51% of 485 techniques)\n" + "There are 337 techniques without data sources ( 38% of 878 techniques)\n" ] } ], @@ -1367,56 +1529,56 @@ " \n", " 0\n", " mitre-attack\n", - " [Linux, macOS, Windows]\n", - " [defense-evasion]\n", - " Compile After Delivery\n", - " T1500\n", - " [Process command-line parameters, Process moni...\n", - " 3.0\n", + " [Network]\n", + " [execution]\n", + " Network Device CLI\n", + " T1059.008\n", + " [Network device logs, Network device run-time ...\n", + " 4.0\n", " With DS\n", " \n", " \n", " 1\n", " mitre-attack\n", - " [Linux]\n", - " [persistence]\n", - " Systemd Service\n", - " T1501\n", - " [Process command-line parameters, Process moni...\n", + " [Network]\n", + " [collection]\n", + " Network Device Configuration Dump\n", + " T1602.002\n", + " [Netflow/Enclave netflow, Network protocol ana...\n", " 3.0\n", " With DS\n", " \n", " \n", " 2\n", " mitre-attack\n", - " [Linux, macOS, Windows]\n", - " [impact]\n", - " Endpoint Denial of Service\n", - " T1499\n", - " [SSL/TLS inspection, Web logs, Web application...\n", - " 7.0\n", + " [Network]\n", + " [defense-evasion, persistence]\n", + " TFTP Boot\n", + " T1542.005\n", + " [Network device run-time memory, Network devic...\n", + " 5.0\n", " With DS\n", " \n", " \n", " 3\n", " mitre-attack\n", - " [Windows]\n", - " [defense-evasion, discovery]\n", - " Virtualization/Sandbox Evasion\n", - " T1497\n", - " [Process monitoring, Process command-line para...\n", - " 2.0\n", + " [Network]\n", + " [defense-evasion, persistence]\n", + " ROMMONkit\n", + " T1542.004\n", + " [File monitoring, Netflow/Enclave netflow, Net...\n", + " 4.0\n", " With DS\n", " \n", " \n", " 4\n", " mitre-attack\n", - " [Linux, macOS, Windows]\n", - " [impact]\n", - " Network Denial of Service\n", - " T1498\n", - " [Sensor health and status, Network protocol an...\n", - " 5.0\n", + " [Network]\n", + " [collection]\n", + " SNMP (MIB Dump)\n", + " T1602.001\n", + " [Netflow/Enclave netflow, Network protocol ana...\n", + " 3.0\n", " With DS\n", " \n", " \n", @@ -1424,26 +1586,26 @@ "" ], "text/plain": [ - " matrix platform tactic \\\n", - "0 mitre-attack [Linux, macOS, Windows] [defense-evasion] \n", - "1 mitre-attack [Linux] [persistence] \n", - "2 mitre-attack [Linux, macOS, Windows] [impact] \n", - "3 mitre-attack [Windows] [defense-evasion, discovery] \n", - "4 mitre-attack [Linux, macOS, Windows] [impact] \n", + " matrix platform tactic \\\n", + "0 mitre-attack [Network] [execution] \n", + "1 mitre-attack [Network] [collection] \n", + "2 mitre-attack [Network] [defense-evasion, persistence] \n", + "3 mitre-attack [Network] [defense-evasion, persistence] \n", + "4 mitre-attack [Network] [collection] \n", "\n", - " technique technique_id \\\n", - "0 Compile After Delivery T1500 \n", - "1 Systemd Service T1501 \n", - "2 Endpoint Denial of Service T1499 \n", - "3 Virtualization/Sandbox Evasion T1497 \n", - "4 Network Denial of Service T1498 \n", + " technique technique_id \\\n", + "0 Network Device CLI T1059.008 \n", + "1 Network Device Configuration Dump T1602.002 \n", + "2 TFTP Boot T1542.005 \n", + "3 ROMMONkit T1542.004 \n", + "4 SNMP (MIB Dump) T1602.001 \n", "\n", " data_sources Count_DS Ind_DS \n", - "0 [Process command-line parameters, Process moni... 3.0 With DS \n", - "1 [Process command-line parameters, Process moni... 3.0 With DS \n", - "2 [SSL/TLS inspection, Web logs, Web application... 7.0 With DS \n", - "3 [Process monitoring, Process command-line para... 2.0 With DS \n", - "4 [Sensor health and status, Network protocol an... 5.0 With DS " + "0 [Network device logs, Network device run-time ... 4.0 With DS \n", + "1 [Netflow/Enclave netflow, Network protocol ana... 3.0 With DS \n", + "2 [Network device run-time memory, Network devic... 5.0 With DS \n", + "3 [File monitoring, Netflow/Enclave netflow, Net... 4.0 With DS \n", + "4 [Netflow/Enclave netflow, Network protocol ana... 3.0 With DS " ] }, "execution_count": 27, @@ -1464,7 +1626,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "There are 240 techniques with data sources ( 49% of 485 techniques)\n" + "There are 541 techniques with data sources ( 62% of 878 techniques)\n" ] } ], @@ -1493,80 +1655,53 @@ "outputs": [ { "data": { - "application/vnd.vegalite.v3+json": { - "$schema": "https://vega.github.io/schema/vega-lite/v3.4.0.json", - "config": { - "mark": { - "tooltip": null - }, - "view": { - "height": 300, - "width": 400 - } - }, - "data": { - "name": "data-a689c98b4c5966a339164dff27be292d" - }, - "datasets": { - "data-a689c98b4c5966a339164dff27be292d": [ - { - "Count of Techniques": 240, - "Matrix": "mitre-attack" - } - ] - }, - "layer": [ - { - "encoding": { - "x": { - "field": "Count of Techniques", - "type": "quantitative" - }, - "y": { - "field": "Matrix", - "type": "nominal" - } - }, - "height": 100, - "mark": "bar", - "width": 300 - }, - { - "encoding": { - "text": { - "field": "Count of Techniques", - "type": "quantitative" - }, - "x": { - "field": "Count of Techniques", - "type": "quantitative" - }, - "y": { - "field": "Matrix", - "type": "nominal" - } - }, - "height": 100, - "mark": { - "align": "center", - "baseline": "middle", - "dx": 10, - "dy": 0, - "type": "text" - }, - "width": 300 - } - ] - }, - "image/png": "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", - "text/plain": [ - "\n", + "application/javascript": [ + "const spec = {\"config\": {\"view\": {\"continuousWidth\": 400, \"continuousHeight\": 300}}, \"layer\": [{\"mark\": \"bar\", \"encoding\": {\"x\": {\"type\": \"quantitative\", \"field\": \"Count of Techniques\"}, \"y\": {\"type\": \"nominal\", \"field\": \"Matrix\"}}, \"height\": 100, \"width\": 300}, {\"mark\": {\"type\": \"text\", \"align\": \"center\", \"baseline\": \"middle\", \"dx\": 10, \"dy\": 0}, \"encoding\": {\"text\": {\"type\": \"quantitative\", \"field\": \"Count of Techniques\"}, \"x\": {\"type\": \"quantitative\", \"field\": \"Count of Techniques\"}, \"y\": {\"type\": \"nominal\", \"field\": \"Matrix\"}}, \"height\": 100, \"width\": 300}], \"data\": {\"name\": \"data-fb2770765a9a1c165be37278cc07fa93\"}, \"$schema\": \"https://vega.github.io/schema/vega-lite/v4.8.1.json\", \"datasets\": {\"data-fb2770765a9a1c165be37278cc07fa93\": [{\"Matrix\": \"mitre-attack\", \"Count of Techniques\": 474}, {\"Matrix\": \"mitre-ics-attack\", \"Count of Techniques\": 67}]}};\n", + "const opt = {};\n", + "const type = \"vega-lite\";\n", + "const id = \"550c9a4e-6e47-4b38-b24f-ccdb98b73f04\";\n", "\n", - "If you see this message, it means the renderer has not been properly enabled\n", - "for the frontend that you are using. For more information, see\n", - "https://altair-viz.github.io/user_guide/troubleshooting.html\n" + "const output_area = this;\n", + "\n", + "require([\"nbextensions/jupyter-vega/index\"], function(vega) {\n", + " const target = document.createElement(\"div\");\n", + " target.id = id;\n", + " target.className = \"vega-embed\";\n", + "\n", + " const style = document.createElement(\"style\");\n", + " style.textContent = [\n", + " \".vega-embed .error p {\",\n", + " \" color: firebrick;\",\n", + " \" font-size: 14px;\",\n", + " \"}\",\n", + " ].join(\"\\\\n\");\n", + "\n", + " // element is a jQuery wrapped DOM element inside the output area\n", + " // see http://ipython.readthedocs.io/en/stable/api/generated/\\\n", + " // IPython.display.html#IPython.display.Javascript.__init__\n", + " element[0].appendChild(target);\n", + " element[0].appendChild(style);\n", + "\n", + " vega.render(\"#\" + id, spec, type, opt, output_area);\n", + "}, function (err) {\n", + " if (err.requireType !== \"scripterror\") {\n", + " throw(err);\n", + " }\n", + "});\n" + ], + "text/plain": [ + "" ] }, + "metadata": { + "jupyter-vega": "#550c9a4e-6e47-4b38-b24f-ccdb98b73f04" + }, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [] + }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" @@ -1669,66 +1804,73 @@ " \n", " 0\n", " mitre-attack\n", - " Linux\n", - " [defense-evasion]\n", - " Compile After Delivery\n", - " T1500\n", - " [Process command-line parameters, Process moni...\n", + " Network\n", + " [execution]\n", + " Network Device CLI\n", + " T1059.008\n", + " [Network device logs, Network device run-time ...\n", " \n", " \n", " 1\n", " mitre-attack\n", - " macOS\n", - " [defense-evasion]\n", - " Compile After Delivery\n", - " T1500\n", - " [Process command-line parameters, Process moni...\n", + " Network\n", + " [collection]\n", + " Network Device Configuration Dump\n", + " T1602.002\n", + " [Netflow/Enclave netflow, Network protocol ana...\n", " \n", " \n", " 2\n", " mitre-attack\n", - " Windows\n", - " [defense-evasion]\n", - " Compile After Delivery\n", - " T1500\n", - " [Process command-line parameters, Process moni...\n", + " Network\n", + " [defense-evasion, persistence]\n", + " TFTP Boot\n", + " T1542.005\n", + " [Network device run-time memory, Network devic...\n", " \n", " \n", " 3\n", " mitre-attack\n", - " Linux\n", - " [persistence]\n", - " Systemd Service\n", - " T1501\n", - " [Process command-line parameters, Process moni...\n", + " Network\n", + " [defense-evasion, persistence]\n", + " ROMMONkit\n", + " T1542.004\n", + " [File monitoring, Netflow/Enclave netflow, Net...\n", " \n", " \n", " 4\n", " mitre-attack\n", - " Linux\n", - " [impact]\n", - " Endpoint Denial of Service\n", - " T1499\n", - " [SSL/TLS inspection, Web logs, Web application...\n", + " Network\n", + " [collection]\n", + " SNMP (MIB Dump)\n", + " T1602.001\n", + " [Netflow/Enclave netflow, Network protocol ana...\n", " \n", " \n", "\n", "" ], "text/plain": [ - " matrix platform tactic technique \\\n", - "0 mitre-attack Linux [defense-evasion] Compile After Delivery \n", - "1 mitre-attack macOS [defense-evasion] Compile After Delivery \n", - "2 mitre-attack Windows [defense-evasion] Compile After Delivery \n", - "3 mitre-attack Linux [persistence] Systemd Service \n", - "4 mitre-attack Linux [impact] Endpoint Denial of Service \n", + " matrix platform tactic \\\n", + "0 mitre-attack Network [execution] \n", + "1 mitre-attack Network [collection] \n", + "2 mitre-attack Network [defense-evasion, persistence] \n", + "3 mitre-attack Network [defense-evasion, persistence] \n", + "4 mitre-attack Network [collection] \n", "\n", - " technique_id data_sources \n", - "0 T1500 [Process command-line parameters, Process moni... \n", - "1 T1500 [Process command-line parameters, Process moni... \n", - "2 T1500 [Process command-line parameters, Process moni... \n", - "3 T1501 [Process command-line parameters, Process moni... \n", - "4 T1499 [SSL/TLS inspection, Web logs, Web application... " + " technique technique_id \\\n", + "0 Network Device CLI T1059.008 \n", + "1 Network Device Configuration Dump T1602.002 \n", + "2 TFTP Boot T1542.005 \n", + "3 ROMMONkit T1542.004 \n", + "4 SNMP (MIB Dump) T1602.001 \n", + "\n", + " data_sources \n", + "0 [Network device logs, Network device run-time ... \n", + "1 [Netflow/Enclave netflow, Network protocol ana... \n", + "2 [Network device run-time memory, Network devic... \n", + "3 [File monitoring, Netflow/Enclave netflow, Net... \n", + "4 [Netflow/Enclave netflow, Network protocol ana... " ] }, "execution_count": 31, @@ -1754,96 +1896,53 @@ "outputs": [ { "data": { - "application/vnd.vegalite.v3+json": { - "$schema": "https://vega.github.io/schema/vega-lite/v3.4.0.json", - "config": { - "mark": { - "tooltip": null - }, - "view": { - "height": 300, - "width": 400 - } - }, - "data": { - "name": "data-8bdd6c787014aac1ea40c5ce615b2680" - }, - "datasets": { - "data-8bdd6c787014aac1ea40c5ce615b2680": [ - { - "Count of Techniques": 126, - "Platform": "Linux" - }, - { - "Count of Techniques": 211, - "Platform": "Windows" - }, - { - "Count of Techniques": 145, - "Platform": "macOS" - } - ] - }, - "layer": [ - { - "encoding": { - "color": { - "field": "Platform", - "type": "nominal" - }, - "x": { - "field": "Platform", - "type": "nominal" - }, - "y": { - "field": "Count of Techniques", - "type": "quantitative" - } - }, - "height": 300, - "mark": "bar", - "width": 200 - }, - { - "encoding": { - "color": { - "field": "Platform", - "type": "nominal" - }, - "text": { - "field": "Count of Techniques", - "type": "quantitative" - }, - "x": { - "field": "Platform", - "type": "nominal" - }, - "y": { - "field": "Count of Techniques", - "type": "quantitative" - } - }, - "height": 300, - "mark": { - "align": "center", - "baseline": "middle", - "dx": 0, - "dy": -5, - "type": "text" - }, - "width": 200 - } - ] - }, - "image/png": "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", - "text/plain": [ - "\n", + "application/javascript": [ + "const spec = {\"config\": {\"view\": {\"continuousWidth\": 400, \"continuousHeight\": 300}}, \"layer\": [{\"mark\": \"bar\", \"encoding\": {\"color\": {\"type\": \"nominal\", \"field\": \"Platform\"}, \"x\": {\"type\": \"nominal\", \"field\": \"Platform\"}, \"y\": {\"type\": \"quantitative\", \"field\": \"Count of Techniques\"}}, \"height\": 300, \"width\": 200}, {\"mark\": {\"type\": \"text\", \"align\": \"center\", \"baseline\": \"middle\", \"dx\": 0, \"dy\": -5}, \"encoding\": {\"color\": {\"type\": \"nominal\", \"field\": \"Platform\"}, \"text\": {\"type\": \"quantitative\", \"field\": \"Count of Techniques\"}, \"x\": {\"type\": \"nominal\", \"field\": \"Platform\"}, \"y\": {\"type\": \"quantitative\", \"field\": \"Count of Techniques\"}}, \"height\": 300, \"width\": 200}], \"data\": {\"name\": \"data-94eeddf8fc5f36e972721aadcb2c794d\"}, \"$schema\": \"https://vega.github.io/schema/vega-lite/v4.8.1.json\", \"datasets\": {\"data-94eeddf8fc5f36e972721aadcb2c794d\": [{\"Platform\": \"AWS\", \"Count of Techniques\": 53}, {\"Platform\": \"Azure\", \"Count of Techniques\": 53}, {\"Platform\": \"Azure AD\", \"Count of Techniques\": 30}, {\"Platform\": \"Control Server\", \"Count of Techniques\": 23}, {\"Platform\": \"Data Historian\", \"Count of Techniques\": 12}, {\"Platform\": \"Engineering Workstation\", \"Count of Techniques\": 13}, {\"Platform\": \"Field Controller/RTU/PLC/IED\", \"Count of Techniques\": 38}, {\"Platform\": \"GCP\", \"Count of Techniques\": 53}, {\"Platform\": \"Human-Machine Interface\", \"Count of Techniques\": 25}, {\"Platform\": \"Input/Output Server\", \"Count of Techniques\": 6}, {\"Platform\": \"Linux\", \"Count of Techniques\": 252}, {\"Platform\": \"Network\", \"Count of Techniques\": 28}, {\"Platform\": \"Office 365\", \"Count of Techniques\": 51}, {\"Platform\": \"PRE\", \"Count of Techniques\": 14}, {\"Platform\": \"SaaS\", \"Count of Techniques\": 35}, {\"Platform\": \"Safety Instrumented System/Protection Relay\", \"Count of Techniques\": 18}, {\"Platform\": \"Windows\", \"Count of Techniques\": 435}, {\"Platform\": \"macOS\", \"Count of Techniques\": 265}]}};\n", + "const opt = {};\n", + "const type = \"vega-lite\";\n", + "const id = \"91350139-e783-4480-84ab-a442dc283743\";\n", + "\n", + "const output_area = this;\n", + "\n", + "require([\"nbextensions/jupyter-vega/index\"], function(vega) {\n", + " const target = document.createElement(\"div\");\n", + " target.id = id;\n", + " target.className = \"vega-embed\";\n", + "\n", + " const style = document.createElement(\"style\");\n", + " style.textContent = [\n", + " \".vega-embed .error p {\",\n", + " \" color: firebrick;\",\n", + " \" font-size: 14px;\",\n", + " \"}\",\n", + " ].join(\"\\\\n\");\n", + "\n", + " // element is a jQuery wrapped DOM element inside the output area\n", + " // see http://ipython.readthedocs.io/en/stable/api/generated/\\\n", + " // IPython.display.html#IPython.display.Javascript.__init__\n", + " element[0].appendChild(target);\n", + " element[0].appendChild(style);\n", "\n", - "If you see this message, it means the renderer has not been properly enabled\n", - "for the frontend that you are using. For more information, see\n", - "https://altair-viz.github.io/user_guide/troubleshooting.html\n" + " vega.render(\"#\" + id, spec, type, opt, output_area);\n", + "}, function (err) {\n", + " if (err.requireType !== \"scripterror\") {\n", + " throw(err);\n", + " }\n", + "});\n" + ], + "text/plain": [ + "" ] }, + "metadata": { + "jupyter-vega": "#91350139-e783-4480-84ab-a442dc283743" + }, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [] + }, "execution_count": 32, "metadata": {}, "output_type": "execute_result" @@ -1946,73 +2045,73 @@ " \n", " 0\n", " mitre-attack\n", - " [Linux, macOS, Windows]\n", - " defense-evasion\n", - " Compile After Delivery\n", - " T1500\n", - " [Process command-line parameters, Process moni...\n", + " [Network]\n", + " execution\n", + " Network Device CLI\n", + " T1059.008\n", + " [Network device logs, Network device run-time ...\n", " \n", " \n", " 1\n", " mitre-attack\n", - " [Linux]\n", - " persistence\n", - " Systemd Service\n", - " T1501\n", - " [Process command-line parameters, Process moni...\n", + " [Network]\n", + " collection\n", + " Network Device Configuration Dump\n", + " T1602.002\n", + " [Netflow/Enclave netflow, Network protocol ana...\n", " \n", " \n", " 2\n", " mitre-attack\n", - " [Linux, macOS, Windows]\n", - " impact\n", - " Endpoint Denial of Service\n", - " T1499\n", - " [SSL/TLS inspection, Web logs, Web application...\n", + " [Network]\n", + " defense-evasion\n", + " TFTP Boot\n", + " T1542.005\n", + " [Network device run-time memory, Network devic...\n", " \n", " \n", " 3\n", " mitre-attack\n", - " [Windows]\n", - " defense-evasion\n", - " Virtualization/Sandbox Evasion\n", - " T1497\n", - " [Process monitoring, Process command-line para...\n", + " [Network]\n", + " persistence\n", + " TFTP Boot\n", + " T1542.005\n", + " [Network device run-time memory, Network devic...\n", " \n", " \n", " 4\n", " mitre-attack\n", - " [Windows]\n", - " discovery\n", - " Virtualization/Sandbox Evasion\n", - " T1497\n", - " [Process monitoring, Process command-line para...\n", + " [Network]\n", + " defense-evasion\n", + " ROMMONkit\n", + " T1542.004\n", + " [File monitoring, Netflow/Enclave netflow, Net...\n", " \n", " \n", "\n", "" ], "text/plain": [ - " matrix platform tactic \\\n", - "0 mitre-attack [Linux, macOS, Windows] defense-evasion \n", - "1 mitre-attack [Linux] persistence \n", - "2 mitre-attack [Linux, macOS, Windows] impact \n", - "3 mitre-attack [Windows] defense-evasion \n", - "4 mitre-attack [Windows] discovery \n", + " matrix platform tactic \\\n", + "0 mitre-attack [Network] execution \n", + "1 mitre-attack [Network] collection \n", + "2 mitre-attack [Network] defense-evasion \n", + "3 mitre-attack [Network] persistence \n", + "4 mitre-attack [Network] defense-evasion \n", "\n", - " technique technique_id \\\n", - "0 Compile After Delivery T1500 \n", - "1 Systemd Service T1501 \n", - "2 Endpoint Denial of Service T1499 \n", - "3 Virtualization/Sandbox Evasion T1497 \n", - "4 Virtualization/Sandbox Evasion T1497 \n", + " technique technique_id \\\n", + "0 Network Device CLI T1059.008 \n", + "1 Network Device Configuration Dump T1602.002 \n", + "2 TFTP Boot T1542.005 \n", + "3 TFTP Boot T1542.005 \n", + "4 ROMMONkit T1542.004 \n", "\n", " data_sources \n", - "0 [Process command-line parameters, Process moni... \n", - "1 [Process command-line parameters, Process moni... \n", - "2 [SSL/TLS inspection, Web logs, Web application... \n", - "3 [Process monitoring, Process command-line para... \n", - "4 [Process monitoring, Process command-line para... " + "0 [Network device logs, Network device run-time ... \n", + "1 [Netflow/Enclave netflow, Network protocol ana... \n", + "2 [Network device run-time memory, Network devic... \n", + "3 [Network device run-time memory, Network devic... \n", + "4 [File monitoring, Netflow/Enclave netflow, Net... " ] }, "execution_count": 34, @@ -2038,132 +2137,53 @@ "outputs": [ { "data": { - "application/vnd.vegalite.v3+json": { - "$schema": "https://vega.github.io/schema/vega-lite/v3.4.0.json", - "config": { - "mark": { - "tooltip": null - }, - "view": { - "height": 300, - "width": 400 - } - }, - "data": { - "name": "data-8712fd25b13f11f698d44ffec8d94852" - }, - "datasets": { - "data-8712fd25b13f11f698d44ffec8d94852": [ - { - "Count of Techniques": 9, - "Tactic": "exfiltration" - }, - { - "Count of Techniques": 11, - "Tactic": "initial-access" - }, - { - "Count of Techniques": 13, - "Tactic": "collection" - }, - { - "Count of Techniques": 14, - "Tactic": "impact" - }, - { - "Count of Techniques": 17, - "Tactic": "lateral-movement" - }, - { - "Count of Techniques": 19, - "Tactic": "credential-access" - }, - { - "Count of Techniques": 21, - "Tactic": "command-and-control" - }, - { - "Count of Techniques": 21, - "Tactic": "discovery" - }, - { - "Count of Techniques": 28, - "Tactic": "privilege-escalation" - }, - { - "Count of Techniques": 33, - "Tactic": "execution" - }, - { - "Count of Techniques": 57, - "Tactic": "persistence" - }, - { - "Count of Techniques": 65, - "Tactic": "defense-evasion" - } - ] - }, - "layer": [ - { - "encoding": { - "color": { - "field": "Tactic", - "type": "nominal" - }, - "x": { - "field": "Tactic", - "type": "nominal" - }, - "y": { - "field": "Count of Techniques", - "type": "quantitative" - } - }, - "height": 300, - "mark": "bar", - "width": 400 - }, - { - "encoding": { - "color": { - "field": "Tactic", - "type": "nominal" - }, - "text": { - "field": "Count of Techniques", - "type": "quantitative" - }, - "x": { - "field": "Tactic", - "type": "nominal" - }, - "y": { - "field": "Count of Techniques", - "type": "quantitative" - } - }, - "height": 300, - "mark": { - "align": "center", - "baseline": "middle", - "dx": 0, - "dy": -5, - "type": "text" - }, - "width": 400 - } - ] - }, - "image/png": "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", - "text/plain": [ - "\n", + "application/javascript": [ + "const spec = {\"config\": {\"view\": {\"continuousWidth\": 400, \"continuousHeight\": 300}}, \"layer\": [{\"mark\": \"bar\", \"encoding\": {\"color\": {\"type\": \"nominal\", \"field\": \"Tactic\"}, \"x\": {\"type\": \"nominal\", \"field\": \"Tactic\"}, \"y\": {\"type\": \"quantitative\", \"field\": \"Count of Techniques\"}}, \"height\": 300, \"width\": 400}, {\"mark\": {\"type\": \"text\", \"align\": \"center\", \"baseline\": \"middle\", \"dx\": 0, \"dy\": -5}, \"encoding\": {\"color\": {\"type\": \"nominal\", \"field\": \"Tactic\"}, \"text\": {\"type\": \"quantitative\", \"field\": \"Count of Techniques\"}, \"x\": {\"type\": \"nominal\", \"field\": \"Tactic\"}, \"y\": {\"type\": \"quantitative\", \"field\": \"Count of Techniques\"}}, \"height\": 300, \"width\": 400}], \"data\": {\"name\": \"data-a36a295299fa7b623bea39cbd6dc16e5\"}, \"$schema\": \"https://vega.github.io/schema/vega-lite/v4.8.1.json\", \"datasets\": {\"data-a36a295299fa7b623bea39cbd6dc16e5\": [{\"Tactic\": \"command-and-control-ics\", \"Count of Techniques\": 2}, {\"Tactic\": \"lateral-movement-ics\", \"Count of Techniques\": 5}, {\"Tactic\": \"persistence-ics\", \"Count of Techniques\": 6}, {\"Tactic\": \"resource-development\", \"Count of Techniques\": 7}, {\"Tactic\": \"discovery-ics\", \"Count of Techniques\": 7}, {\"Tactic\": \"evasion-ics\", \"Count of Techniques\": 7}, {\"Tactic\": \"reconnaissance\", \"Count of Techniques\": 7}, {\"Tactic\": \"execution-ics\", \"Count of Techniques\": 8}, {\"Tactic\": \"initial-access-ics\", \"Count of Techniques\": 9}, {\"Tactic\": \"collection-ics\", \"Count of Techniques\": 11}, {\"Tactic\": \"impair-process-control\", \"Count of Techniques\": 11}, {\"Tactic\": \"inhibit-response-function\", \"Count of Techniques\": 15}, {\"Tactic\": \"exfiltration\", \"Count of Techniques\": 17}, {\"Tactic\": \"initial-access\", \"Count of Techniques\": 19}, {\"Tactic\": \"lateral-movement\", \"Count of Techniques\": 23}, {\"Tactic\": \"impact\", \"Count of Techniques\": 26}, {\"Tactic\": \"execution\", \"Count of Techniques\": 34}, {\"Tactic\": \"collection\", \"Count of Techniques\": 34}, {\"Tactic\": \"discovery\", \"Count of Techniques\": 36}, {\"Tactic\": \"command-and-control\", \"Count of Techniques\": 40}, {\"Tactic\": \"credential-access\", \"Count of Techniques\": 48}, {\"Tactic\": \"privilege-escalation\", \"Count of Techniques\": 89}, {\"Tactic\": \"persistence\", \"Count of Techniques\": 99}, {\"Tactic\": \"defense-evasion\", \"Count of Techniques\": 152}]}};\n", + "const opt = {};\n", + "const type = \"vega-lite\";\n", + "const id = \"6bb193cd-6df5-404c-992b-3c19bd9bf3bc\";\n", + "\n", + "const output_area = this;\n", + "\n", + "require([\"nbextensions/jupyter-vega/index\"], function(vega) {\n", + " const target = document.createElement(\"div\");\n", + " target.id = id;\n", + " target.className = \"vega-embed\";\n", + "\n", + " const style = document.createElement(\"style\");\n", + " style.textContent = [\n", + " \".vega-embed .error p {\",\n", + " \" color: firebrick;\",\n", + " \" font-size: 14px;\",\n", + " \"}\",\n", + " ].join(\"\\\\n\");\n", "\n", - "If you see this message, it means the renderer has not been properly enabled\n", - "for the frontend that you are using. For more information, see\n", - "https://altair-viz.github.io/user_guide/troubleshooting.html\n" + " // element is a jQuery wrapped DOM element inside the output area\n", + " // see http://ipython.readthedocs.io/en/stable/api/generated/\\\n", + " // IPython.display.html#IPython.display.Javascript.__init__\n", + " element[0].appendChild(target);\n", + " element[0].appendChild(style);\n", + "\n", + " vega.render(\"#\" + id, spec, type, opt, output_area);\n", + "}, function (err) {\n", + " if (err.requireType !== \"scripterror\") {\n", + " throw(err);\n", + " }\n", + "});\n" + ], + "text/plain": [ + "" ] }, + "metadata": { + "jupyter-vega": "#6bb193cd-6df5-404c-992b-3c19bd9bf3bc" + }, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [] + }, "execution_count": 35, "metadata": {}, "output_type": "execute_result" @@ -2269,66 +2289,66 @@ " \n", " 0\n", " mitre-attack\n", - " [Linux, macOS, Windows]\n", - " [defense-evasion]\n", - " Compile After Delivery\n", - " T1500\n", - " Process command-line parameters\n", + " [Network]\n", + " [execution]\n", + " Network Device CLI\n", + " T1059.008\n", + " Network device logs\n", " \n", " \n", " 1\n", " mitre-attack\n", - " [Linux, macOS, Windows]\n", - " [defense-evasion]\n", - " Compile After Delivery\n", - " T1500\n", - " Process Monitoring\n", + " [Network]\n", + " [execution]\n", + " Network Device CLI\n", + " T1059.008\n", + " Network device run-time memory\n", " \n", " \n", " 2\n", " mitre-attack\n", - " [Linux, macOS, Windows]\n", - " [defense-evasion]\n", - " Compile After Delivery\n", - " T1500\n", - " File monitoring\n", + " [Network]\n", + " [execution]\n", + " Network Device CLI\n", + " T1059.008\n", + " Network device command history\n", " \n", " \n", " 3\n", " mitre-attack\n", - " [Linux]\n", - " [persistence]\n", - " Systemd Service\n", - " T1501\n", - " Process command-line parameters\n", + " [Network]\n", + " [execution]\n", + " Network Device CLI\n", + " T1059.008\n", + " Network device configuration\n", " \n", " \n", " 4\n", " mitre-attack\n", - " [Linux]\n", - " [persistence]\n", - " Systemd Service\n", - " T1501\n", - " Process Monitoring\n", + " [Network]\n", + " [collection]\n", + " Network Device Configuration Dump\n", + " T1602.002\n", + " Netflow/Enclave netflow\n", " \n", " \n", "\n", "" ], "text/plain": [ - " matrix platform tactic \\\n", - "0 mitre-attack [Linux, macOS, Windows] [defense-evasion] \n", - "1 mitre-attack [Linux, macOS, Windows] [defense-evasion] \n", - "2 mitre-attack [Linux, macOS, Windows] [defense-evasion] \n", - "3 mitre-attack [Linux] [persistence] \n", - "4 mitre-attack [Linux] [persistence] \n", + " matrix platform tactic technique \\\n", + "0 mitre-attack [Network] [execution] Network Device CLI \n", + "1 mitre-attack [Network] [execution] Network Device CLI \n", + "2 mitre-attack [Network] [execution] Network Device CLI \n", + "3 mitre-attack [Network] [execution] Network Device CLI \n", + "4 mitre-attack [Network] [collection] Network Device Configuration Dump \n", "\n", - " technique technique_id data_sources \n", - "0 Compile After Delivery T1500 Process command-line parameters \n", - "1 Compile After Delivery T1500 Process Monitoring \n", - "2 Compile After Delivery T1500 File monitoring \n", - "3 Systemd Service T1501 Process command-line parameters \n", - "4 Systemd Service T1501 Process Monitoring " + " technique_id data_sources \n", + "0 T1059.008 Network device logs \n", + "1 T1059.008 Network device run-time memory \n", + "2 T1059.008 Network device command history \n", + "3 T1059.008 Network device configuration \n", + "4 T1602.002 Netflow/Enclave netflow " ] }, "execution_count": 37, @@ -2354,284 +2374,53 @@ "outputs": [ { "data": { - "application/vnd.vegalite.v3+json": { - "$schema": "https://vega.github.io/schema/vega-lite/v3.4.0.json", - "config": { - "mark": { - "tooltip": null - }, - "view": { - "height": 300, - "width": 400 - } - }, - "data": { - "name": "data-3d8b18347e124d71fa30f0d5c58b47b9" - }, - "datasets": { - "data-3d8b18347e124d71fa30f0d5c58b47b9": [ - { - "Count of Techniques": 43, - "Data Source": "API monitoring" - }, - { - "Count of Techniques": 1, - "Data Source": "Access tokens" - }, - { - "Count of Techniques": 7, - "Data Source": "Anti-virus" - }, - { - "Count of Techniques": 6, - "Data Source": "Application Logs" - }, - { - "Count of Techniques": 1, - "Data Source": "Asset management" - }, - { - "Count of Techniques": 28, - "Data Source": "Authentication logs" - }, - { - "Count of Techniques": 3, - "Data Source": "BIOS" - }, - { - "Count of Techniques": 18, - "Data Source": "Binary file metadata" - }, - { - "Count of Techniques": 1, - "Data Source": "Browser extensions" - }, - { - "Count of Techniques": 2, - "Data Source": "Component firmware" - }, - { - "Count of Techniques": 18, - "Data Source": "DLL monitoring" - }, - { - "Count of Techniques": 2, - "Data Source": "DNS records" - }, - { - "Count of Techniques": 6, - "Data Source": "Data loss prevention" - }, - { - "Count of Techniques": 2, - "Data Source": "Detonation chamber" - }, - { - "Count of Techniques": 1, - "Data Source": "Digital certificate logs" - }, - { - "Count of Techniques": 1, - "Data Source": "Disk forensics" - }, - { - "Count of Techniques": 1, - "Data Source": "EFI" - }, - { - "Count of Techniques": 4, - "Data Source": "Email gateway" - }, - { - "Count of Techniques": 2, - "Data Source": "Environment variable" - }, - { - "Count of Techniques": 97, - "Data Source": "File monitoring" - }, - { - "Count of Techniques": 4, - "Data Source": "Host network interface" - }, - { - "Count of Techniques": 7, - "Data Source": "Kernel drivers" - }, - { - "Count of Techniques": 13, - "Data Source": "Loaded DLLs" - }, - { - "Count of Techniques": 3, - "Data Source": "MBR" - }, - { - "Count of Techniques": 2, - "Data Source": "Mail server" - }, - { - "Count of Techniques": 9, - "Data Source": "Malware reverse engineering" - }, - { - "Count of Techniques": 1, - "Data Source": "Named Pipes" - }, - { - "Count of Techniques": 27, - "Data Source": "Netflow/Enclave netflow" - }, - { - "Count of Techniques": 8, - "Data Source": "Network device logs" - }, - { - "Count of Techniques": 9, - "Data Source": "Network intrusion detection system" - }, - { - "Count of Techniques": 22, - "Data Source": "Network protocol analysis" - }, - { - "Count of Techniques": 36, - "Data Source": "Packet capture" - }, - { - "Count of Techniques": 4, - "Data Source": "PowerShell logs" - }, - { - "Count of Techniques": 169, - "Data Source": "Process Monitoring" - }, - { - "Count of Techniques": 97, - "Data Source": "Process command-line parameters" - }, - { - "Count of Techniques": 39, - "Data Source": "Process use of network" - }, - { - "Count of Techniques": 9, - "Data Source": "SSL/TLS inspection" - }, - { - "Count of Techniques": 2, - "Data Source": "Sensor health and status" - }, - { - "Count of Techniques": 4, - "Data Source": "Services" - }, - { - "Count of Techniques": 9, - "Data Source": "System calls" - }, - { - "Count of Techniques": 3, - "Data Source": "Third-party application logs" - }, - { - "Count of Techniques": 4, - "Data Source": "User interface" - }, - { - "Count of Techniques": 1, - "Data Source": "VBR" - }, - { - "Count of Techniques": 1, - "Data Source": "WMI Objects" - }, - { - "Count of Techniques": 3, - "Data Source": "Web application firewall logs" - }, - { - "Count of Techniques": 4, - "Data Source": "Web logs" - }, - { - "Count of Techniques": 4, - "Data Source": "Web proxy" - }, - { - "Count of Techniques": 4, - "Data Source": "Windows Error Reporting" - }, - { - "Count of Techniques": 36, - "Data Source": "Windows Registry" - }, - { - "Count of Techniques": 22, - "Data Source": "Windows event logs" - } - ] - }, - "layer": [ - { - "encoding": { - "color": { - "field": "Data Source", - "type": "nominal" - }, - "x": { - "field": "Data Source", - "type": "nominal" - }, - "y": { - "field": "Count of Techniques", - "type": "quantitative" - } - }, - "height": 300, - "mark": "bar", - "width": 1200 - }, - { - "encoding": { - "color": { - "field": "Data Source", - "type": "nominal" - }, - "text": { - "field": "Count of Techniques", - "type": "quantitative" - }, - "x": { - "field": "Data Source", - "type": "nominal" - }, - "y": { - "field": "Count of Techniques", - "type": "quantitative" - } - }, - "height": 300, - "mark": { - "align": "center", - "baseline": "middle", - "dx": 0, - "dy": -5, - "type": "text" - }, - "width": 1200 - } - ] - }, - "image/png": "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", - "text/plain": [ - "\n", + "application/javascript": [ + "const spec = {\"config\": {\"view\": {\"continuousWidth\": 400, \"continuousHeight\": 300}}, \"layer\": [{\"mark\": \"bar\", \"encoding\": {\"color\": {\"type\": \"nominal\", \"field\": \"Data Source\"}, \"x\": {\"type\": \"nominal\", \"field\": \"Data Source\"}, \"y\": {\"type\": \"quantitative\", \"field\": \"Count of Techniques\"}}, \"height\": 300, \"width\": 1200}, {\"mark\": {\"type\": \"text\", \"align\": \"center\", \"baseline\": \"middle\", \"dx\": 0, \"dy\": -5}, \"encoding\": {\"color\": {\"type\": \"nominal\", \"field\": \"Data Source\"}, \"text\": {\"type\": \"quantitative\", \"field\": \"Count of Techniques\"}, \"x\": {\"type\": \"nominal\", \"field\": \"Data Source\"}, \"y\": {\"type\": \"quantitative\", \"field\": \"Count of Techniques\"}}, \"height\": 300, \"width\": 1200}], \"data\": {\"name\": \"data-0c7cf91db0a6e6401724291cca8f060b\"}, \"$schema\": \"https://vega.github.io/schema/vega-lite/v4.8.1.json\", \"datasets\": {\"data-0c7cf91db0a6e6401724291cca8f060b\": [{\"Data Source\": \"API monitoring\", \"Count of Techniques\": 82}, {\"Data Source\": \"AWS CloudTrail logs\", \"Count of Techniques\": 32}, {\"Data Source\": \"Access tokens\", \"Count of Techniques\": 4}, {\"Data Source\": \"Alarm History\", \"Count of Techniques\": 3}, {\"Data Source\": \"Alarm history\", \"Count of Techniques\": 9}, {\"Data Source\": \"Alarm thresholds\", \"Count of Techniques\": 1}, {\"Data Source\": \"Anti-virus\", \"Count of Techniques\": 11}, {\"Data Source\": \"Application Logs\", \"Count of Techniques\": 16}, {\"Data Source\": \"Asset management\", \"Count of Techniques\": 3}, {\"Data Source\": \"Authentication logs\", \"Count of Techniques\": 66}, {\"Data Source\": \"Azure activity logs\", \"Count of Techniques\": 32}, {\"Data Source\": \"BIOS\", \"Count of Techniques\": 5}, {\"Data Source\": \"Binary file metadata\", \"Count of Techniques\": 29}, {\"Data Source\": \"Browser extensions\", \"Count of Techniques\": 1}, {\"Data Source\": \"Component firmware\", \"Count of Techniques\": 4}, {\"Data Source\": \"Controller parameters\", \"Count of Techniques\": 1}, {\"Data Source\": \"Controller program\", \"Count of Techniques\": 7}, {\"Data Source\": \"DLL monitoring\", \"Count of Techniques\": 36}, {\"Data Source\": \"DNS records\", \"Count of Techniques\": 8}, {\"Data Source\": \"Data historian\", \"Count of Techniques\": 4}, {\"Data Source\": \"Data loss prevention\", \"Count of Techniques\": 10}, {\"Data Source\": \"Detonation chamber\", \"Count of Techniques\": 6}, {\"Data Source\": \"Digital certificate logs\", \"Count of Techniques\": 1}, {\"Data Source\": \"Digital signatures\", \"Count of Techniques\": 3}, {\"Data Source\": \"Disk forensics\", \"Count of Techniques\": 3}, {\"Data Source\": \"Domain registration\", \"Count of Techniques\": 1}, {\"Data Source\": \"EFI\", \"Count of Techniques\": 3}, {\"Data Source\": \"Email gateway\", \"Count of Techniques\": 12}, {\"Data Source\": \"Environment variable\", \"Count of Techniques\": 5}, {\"Data Source\": \"File Monitoring\", \"Count of Techniques\": 1}, {\"Data Source\": \"File monitoring\", \"Count of Techniques\": 196}, {\"Data Source\": \"GCP audit logs\", \"Count of Techniques\": 12}, {\"Data Source\": \"Host network interface\", \"Count of Techniques\": 7}, {\"Data Source\": \"Host network interfaces\", \"Count of Techniques\": 2}, {\"Data Source\": \"Kernel drivers\", \"Count of Techniques\": 6}, {\"Data Source\": \"Loaded DLLs\", \"Count of Techniques\": 23}, {\"Data Source\": \"MBR\", \"Count of Techniques\": 3}, {\"Data Source\": \"Mail server\", \"Count of Techniques\": 16}, {\"Data Source\": \"Malware reverse engineering\", \"Count of Techniques\": 11}, {\"Data Source\": \"Named Pipes\", \"Count of Techniques\": 1}, {\"Data Source\": \"Netflow/Enclave netflow\", \"Count of Techniques\": 74}, {\"Data Source\": \"Network device command history\", \"Count of Techniques\": 2}, {\"Data Source\": \"Network device configuration\", \"Count of Techniques\": 5}, {\"Data Source\": \"Network device logs\", \"Count of Techniques\": 24}, {\"Data Source\": \"Network device run-time memory\", \"Count of Techniques\": 4}, {\"Data Source\": \"Network intrusion detection system\", \"Count of Techniques\": 18}, {\"Data Source\": \"Network protocol analysis\", \"Count of Techniques\": 89}, {\"Data Source\": \"OAuth audit logs\", \"Count of Techniques\": 4}, {\"Data Source\": \"Office 365 account logs\", \"Count of Techniques\": 12}, {\"Data Source\": \"Office 365 audit logs\", \"Count of Techniques\": 8}, {\"Data Source\": \"Office 365 trace logs\", \"Count of Techniques\": 4}, {\"Data Source\": \"Packet capture\", \"Count of Techniques\": 118}, {\"Data Source\": \"PowerShell logs\", \"Count of Techniques\": 23}, {\"Data Source\": \"Process Monitoring\", \"Count of Techniques\": 320}, {\"Data Source\": \"Process command-line parameters\", \"Count of Techniques\": 199}, {\"Data Source\": \"Process use of network\", \"Count of Techniques\": 68}, {\"Data Source\": \"SSL/TLS certificates\", \"Count of Techniques\": 2}, {\"Data Source\": \"SSL/TLS inspection\", \"Count of Techniques\": 24}, {\"Data Source\": \"SSl/TLS inspection\", \"Count of Techniques\": 1}, {\"Data Source\": \"Sensor health and status\", \"Count of Techniques\": 4}, {\"Data Source\": \"Sequential Event Recorder\", \"Count of Techniques\": 1}, {\"Data Source\": \"Sequential event recorder\", \"Count of Techniques\": 14}, {\"Data Source\": \"Services\", \"Count of Techniques\": 5}, {\"Data Source\": \"Social media monitoring\", \"Count of Techniques\": 5}, {\"Data Source\": \"Stackdriver logs\", \"Count of Techniques\": 27}, {\"Data Source\": \"System calls\", \"Count of Techniques\": 10}, {\"Data Source\": \"Third-party application logs\", \"Count of Techniques\": 5}, {\"Data Source\": \"User interface\", \"Count of Techniques\": 4}, {\"Data Source\": \"VBR\", \"Count of Techniques\": 2}, {\"Data Source\": \"WMI Objects\", \"Count of Techniques\": 2}, {\"Data Source\": \"Web application firewall logs\", \"Count of Techniques\": 9}, {\"Data Source\": \"Web logs\", \"Count of Techniques\": 12}, {\"Data Source\": \"Web proxy\", \"Count of Techniques\": 11}, {\"Data Source\": \"Windows Error Reporting\", \"Count of Techniques\": 4}, {\"Data Source\": \"Windows Registry\", \"Count of Techniques\": 57}, {\"Data Source\": \"Windows error reporting\", \"Count of Techniques\": 1}, {\"Data Source\": \"Windows event logs\", \"Count of Techniques\": 51}, {\"Data Source\": \"Windows registry\", \"Count of Techniques\": 2}, {\"Data Source\": \"process use of network\", \"Count of Techniques\": 1}]}};\n", + "const opt = {};\n", + "const type = \"vega-lite\";\n", + "const id = \"668c5615-0c95-4616-850e-c55bc0da70c2\";\n", + "\n", + "const output_area = this;\n", + "\n", + "require([\"nbextensions/jupyter-vega/index\"], function(vega) {\n", + " const target = document.createElement(\"div\");\n", + " target.id = id;\n", + " target.className = \"vega-embed\";\n", + "\n", + " const style = document.createElement(\"style\");\n", + " style.textContent = [\n", + " \".vega-embed .error p {\",\n", + " \" color: firebrick;\",\n", + " \" font-size: 14px;\",\n", + " \"}\",\n", + " ].join(\"\\\\n\");\n", + "\n", + " // element is a jQuery wrapped DOM element inside the output area\n", + " // see http://ipython.readthedocs.io/en/stable/api/generated/\\\n", + " // IPython.display.html#IPython.display.Javascript.__init__\n", + " element[0].appendChild(target);\n", + " element[0].appendChild(style);\n", "\n", - "If you see this message, it means the renderer has not been properly enabled\n", - "for the frontend that you are using. For more information, see\n", - "https://altair-viz.github.io/user_guide/troubleshooting.html\n" + " vega.render(\"#\" + id, spec, type, opt, output_area);\n", + "}, function (err) {\n", + " if (err.requireType !== \"scripterror\") {\n", + " throw(err);\n", + " }\n", + "});\n" + ], + "text/plain": [ + "" ] }, + "metadata": { + "jupyter-vega": "#668c5615-0c95-4616-850e-c55bc0da70c2" + }, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [] + }, "execution_count": 38, "metadata": {}, "output_type": "execute_result" @@ -2683,106 +2472,53 @@ "outputs": [ { "data": { - "application/vnd.vegalite.v3+json": { - "$schema": "https://vega.github.io/schema/vega-lite/v3.4.0.json", - "config": { - "mark": { - "tooltip": null - }, - "view": { - "height": 300, - "width": 400 - } - }, - "data": { - "name": "data-b1ca98c89dbb838b61f181abe8b233a7" - }, - "datasets": { - "data-b1ca98c89dbb838b61f181abe8b233a7": [ - { - "Count of Techniques": 21, - "Number of Data Sources": 1 - }, - { - "Count of Techniques": 50, - "Number of Data Sources": 2 - }, - { - "Count of Techniques": 73, - "Number of Data Sources": 3 - }, - { - "Count of Techniques": 56, - "Number of Data Sources": 4 - }, - { - "Count of Techniques": 18, - "Number of Data Sources": 5 - }, - { - "Count of Techniques": 13, - "Number of Data Sources": 6 - }, - { - "Count of Techniques": 8, - "Number of Data Sources": 7 - }, - { - "Count of Techniques": 1, - "Number of Data Sources": 12 - } - ] - }, - "layer": [ - { - "encoding": { - "x": { - "field": "Number of Data Sources", - "type": "quantitative" - }, - "y": { - "field": "Count of Techniques", - "type": "quantitative" - } - }, - "mark": "bar", - "width": 500 - }, - { - "encoding": { - "text": { - "field": "Count of Techniques", - "type": "quantitative" - }, - "x": { - "field": "Number of Data Sources", - "type": "quantitative" - }, - "y": { - "field": "Count of Techniques", - "type": "quantitative" - } - }, - "mark": { - "align": "center", - "baseline": "middle", - "dx": 0, - "dy": -5, - "type": "text" - }, - "width": 500 - } - ] - }, - "image/png": "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", - "text/plain": [ - "\n", + "application/javascript": [ + "const spec = {\"config\": {\"view\": {\"continuousWidth\": 400, \"continuousHeight\": 300}}, \"layer\": [{\"mark\": \"bar\", \"encoding\": {\"x\": {\"type\": \"quantitative\", \"field\": \"Number of Data Sources\"}, \"y\": {\"type\": \"quantitative\", \"field\": \"Count of Techniques\"}}, \"width\": 500}, {\"mark\": {\"type\": \"text\", \"align\": \"center\", \"baseline\": \"middle\", \"dx\": 0, \"dy\": -5}, \"encoding\": {\"text\": {\"type\": \"quantitative\", \"field\": \"Count of Techniques\"}, \"x\": {\"type\": \"quantitative\", \"field\": \"Number of Data Sources\"}, \"y\": {\"type\": \"quantitative\", \"field\": \"Count of Techniques\"}}, \"width\": 500}], \"data\": {\"name\": \"data-b6f6d78cd7978454e387468282a2f262\"}, \"$schema\": \"https://vega.github.io/schema/vega-lite/v4.8.1.json\", \"datasets\": {\"data-b6f6d78cd7978454e387468282a2f262\": [{\"Number of Data Sources\": 1, \"Count of Techniques\": 37}, {\"Number of Data Sources\": 2, \"Count of Techniques\": 107}, {\"Number of Data Sources\": 3, \"Count of Techniques\": 125}, {\"Number of Data Sources\": 4, \"Count of Techniques\": 118}, {\"Number of Data Sources\": 5, \"Count of Techniques\": 49}, {\"Number of Data Sources\": 6, \"Count of Techniques\": 33}, {\"Number of Data Sources\": 7, \"Count of Techniques\": 14}, {\"Number of Data Sources\": 8, \"Count of Techniques\": 10}, {\"Number of Data Sources\": 9, \"Count of Techniques\": 5}, {\"Number of Data Sources\": 10, \"Count of Techniques\": 3}, {\"Number of Data Sources\": 11, \"Count of Techniques\": 3}, {\"Number of Data Sources\": 12, \"Count of Techniques\": 4}, {\"Number of Data Sources\": 13, \"Count of Techniques\": 1}, {\"Number of Data Sources\": 14, \"Count of Techniques\": 1}]}};\n", + "const opt = {};\n", + "const type = \"vega-lite\";\n", + "const id = \"d80ddddd-15b9-47bb-894b-26b319632f83\";\n", "\n", - "If you see this message, it means the renderer has not been properly enabled\n", - "for the frontend that you are using. For more information, see\n", - "https://altair-viz.github.io/user_guide/troubleshooting.html\n" + "const output_area = this;\n", + "\n", + "require([\"nbextensions/jupyter-vega/index\"], function(vega) {\n", + " const target = document.createElement(\"div\");\n", + " target.id = id;\n", + " target.className = \"vega-embed\";\n", + "\n", + " const style = document.createElement(\"style\");\n", + " style.textContent = [\n", + " \".vega-embed .error p {\",\n", + " \" color: firebrick;\",\n", + " \" font-size: 14px;\",\n", + " \"}\",\n", + " ].join(\"\\\\n\");\n", + "\n", + " // element is a jQuery wrapped DOM element inside the output area\n", + " // see http://ipython.readthedocs.io/en/stable/api/generated/\\\n", + " // IPython.display.html#IPython.display.Javascript.__init__\n", + " element[0].appendChild(target);\n", + " element[0].appendChild(style);\n", + "\n", + " vega.render(\"#\" + id, spec, type, opt, output_area);\n", + "}, function (err) {\n", + " if (err.requireType !== \"scripterror\") {\n", + " throw(err);\n", + " }\n", + "});\n" + ], + "text/plain": [ + "" ] }, + "metadata": { + "jupyter-vega": "#d80ddddd-15b9-47bb-894b-26b319632f83" + }, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [] + }, "execution_count": 39, "metadata": {}, "output_type": "execute_result" @@ -2893,23 +2629,23 @@ " \n", " \n", " 0\n", - " [file monitoring, process command-line paramet...\n", + " [network device command history, network devic...\n", " \n", " \n", " 1\n", - " [file monitoring, process command-line paramet...\n", + " [netflow/enclave netflow, network protocol ana...\n", " \n", " \n", " 2\n", - " [netflow/enclave netflow, network device logs,...\n", + " [file monitoring, network device command histo...\n", " \n", " \n", " 3\n", - " [process command-line parameters, process moni...\n", + " [file monitoring, netflow/enclave netflow, net...\n", " \n", " \n", " 4\n", - " [netflow/enclave netflow, network device logs,...\n", + " [netflow/enclave netflow, network protocol ana...\n", " \n", " \n", "\n", @@ -2917,11 +2653,11 @@ ], "text/plain": [ " data_sources\n", - "0 [file monitoring, process command-line paramet...\n", - "1 [file monitoring, process command-line paramet...\n", - "2 [netflow/enclave netflow, network device logs,...\n", - "3 [process command-line parameters, process moni...\n", - "4 [netflow/enclave netflow, network device logs,..." + "0 [network device command history, network devic...\n", + "1 [netflow/enclave netflow, network protocol ana...\n", + "2 [file monitoring, network device command histo...\n", + "3 [file monitoring, netflow/enclave netflow, net...\n", + "4 [netflow/enclave netflow, network protocol ana..." ] }, "execution_count": 43, @@ -2949,12 +2685,12 @@ "name": "stderr", "output_type": "stream", "text": [ - "/opt/conda/lib/python3.7/site-packages/ipykernel_launcher.py:1: SettingWithCopyWarning: \n", + ":1: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame.\n", "Try using .loc[row_indexer,col_indexer] = value instead\n", "\n", - "See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", - " \"\"\"Entry point for launching an IPython kernel.\n" + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " df['subsets']=df['data_sources'].apply(subs)\n" ] } ], @@ -2995,28 +2731,28 @@ " \n", " \n", " 0\n", - " [file monitoring, process command-line paramet...\n", - " [[file monitoring], [process command-line para...\n", + " [network device command history, network devic...\n", + " [[network device command history], [network de...\n", " \n", " \n", " 1\n", - " [file monitoring, process command-line paramet...\n", - " [[file monitoring], [process command-line para...\n", + " [netflow/enclave netflow, network protocol ana...\n", + " [[netflow/enclave netflow], [network protocol ...\n", " \n", " \n", " 2\n", - " [netflow/enclave netflow, network device logs,...\n", - " [[netflow/enclave netflow], [network device lo...\n", + " [file monitoring, network device command histo...\n", + " [[file monitoring], [network device command hi...\n", " \n", " \n", " 3\n", - " [process command-line parameters, process moni...\n", - " [[process command-line parameters], [process m...\n", + " [file monitoring, netflow/enclave netflow, net...\n", + " [[file monitoring], [netflow/enclave netflow],...\n", " \n", " \n", " 4\n", - " [netflow/enclave netflow, network device logs,...\n", - " [[netflow/enclave netflow], [network device lo...\n", + " [netflow/enclave netflow, network protocol ana...\n", + " [[netflow/enclave netflow], [network protocol ...\n", " \n", " \n", "\n", @@ -3024,18 +2760,18 @@ ], "text/plain": [ " data_sources \\\n", - "0 [file monitoring, process command-line paramet... \n", - "1 [file monitoring, process command-line paramet... \n", - "2 [netflow/enclave netflow, network device logs,... \n", - "3 [process command-line parameters, process moni... \n", - "4 [netflow/enclave netflow, network device logs,... \n", + "0 [network device command history, network devic... \n", + "1 [netflow/enclave netflow, network protocol ana... \n", + "2 [file monitoring, network device command histo... \n", + "3 [file monitoring, netflow/enclave netflow, net... \n", + "4 [netflow/enclave netflow, network protocol ana... \n", "\n", " subsets \n", - "0 [[file monitoring], [process command-line para... \n", - "1 [[file monitoring], [process command-line para... \n", - "2 [[netflow/enclave netflow], [network device lo... \n", - "3 [[process command-line parameters], [process m... \n", - "4 [[netflow/enclave netflow], [network device lo... " + "0 [[network device command history], [network de... \n", + "1 [[netflow/enclave netflow], [network protocol ... \n", + "2 [[file monitoring], [network device command hi... \n", + "3 [[file monitoring], [netflow/enclave netflow],... \n", + "4 [[netflow/enclave netflow], [network protocol ... " ] }, "execution_count": 45, @@ -3112,28 +2848,28 @@ " \n", " \n", " 0\n", - " [file monitoring, process command-line paramet...\n", - " [file monitoring]\n", + " [network device command history, network devic...\n", + " [network device command history]\n", " \n", " \n", " 1\n", - " [file monitoring, process command-line paramet...\n", - " [process command-line parameters]\n", + " [network device command history, network devic...\n", + " [network device configuration]\n", " \n", " \n", " 2\n", - " [file monitoring, process command-line paramet...\n", - " [process monitoring]\n", + " [network device command history, network devic...\n", + " [network device logs]\n", " \n", " \n", " 3\n", - " [file monitoring, process command-line paramet...\n", - " [file monitoring, process command-line paramet...\n", + " [network device command history, network devic...\n", + " [network device run-time memory]\n", " \n", " \n", " 4\n", - " [file monitoring, process command-line paramet...\n", - " [file monitoring, process monitoring]\n", + " [network device command history, network devic...\n", + " [network device command history, network devic...\n", " \n", " \n", "\n", @@ -3141,18 +2877,18 @@ ], "text/plain": [ " data_sources \\\n", - "0 [file monitoring, process command-line paramet... \n", - "1 [file monitoring, process command-line paramet... \n", - "2 [file monitoring, process command-line paramet... \n", - "3 [file monitoring, process command-line paramet... \n", - "4 [file monitoring, process command-line paramet... \n", + "0 [network device command history, network devic... \n", + "1 [network device command history, network devic... \n", + "2 [network device command history, network devic... \n", + "3 [network device command history, network devic... \n", + "4 [network device command history, network devic... \n", "\n", " subsets \n", - "0 [file monitoring] \n", - "1 [process command-line parameters] \n", - "2 [process monitoring] \n", - "3 [file monitoring, process command-line paramet... \n", - "4 [file monitoring, process monitoring] " + "0 [network device command history] \n", + "1 [network device configuration] \n", + "2 [network device logs] \n", + "3 [network device run-time memory] \n", + "4 [network device command history, network devic... " ] }, "execution_count": 48, @@ -3218,43 +2954,43 @@ " \n", " \n", " 0\n", - " [file monitoring, process command-line paramet...\n", - " [file monitoring]\n", - " file monitoring\n", + " [network device command history, network devic...\n", + " [network device command history]\n", + " network device command history\n", " 1\n", - " 3\n", + " 4\n", " \n", " \n", " 1\n", - " [file monitoring, process command-line paramet...\n", - " [process command-line parameters]\n", - " process command-line parameters\n", + " [network device command history, network devic...\n", + " [network device configuration]\n", + " network device configuration\n", " 1\n", - " 3\n", + " 4\n", " \n", " \n", " 2\n", - " [file monitoring, process command-line paramet...\n", - " [process monitoring]\n", - " process monitoring\n", + " [network device command history, network devic...\n", + " [network device logs]\n", + " network device logs\n", " 1\n", - " 3\n", + " 4\n", " \n", " \n", " 3\n", - " [file monitoring, process command-line paramet...\n", - " [file monitoring, process command-line paramet...\n", - " file monitoring,process command-line parameters\n", - " 2\n", - " 3\n", + " [network device command history, network devic...\n", + " [network device run-time memory]\n", + " network device run-time memory\n", + " 1\n", + " 4\n", " \n", " \n", " 4\n", - " [file monitoring, process command-line paramet...\n", - " [file monitoring, process monitoring]\n", - " file monitoring,process monitoring\n", + " [network device command history, network devic...\n", + " [network device command history, network devic...\n", + " network device command history,network device ...\n", " 2\n", - " 3\n", + " 4\n", " \n", " \n", "\n", @@ -3262,32 +2998,32 @@ ], "text/plain": [ " data_sources \\\n", - "0 [file monitoring, process command-line paramet... \n", - "1 [file monitoring, process command-line paramet... \n", - "2 [file monitoring, process command-line paramet... \n", - "3 [file monitoring, process command-line paramet... \n", - "4 [file monitoring, process command-line paramet... \n", + "0 [network device command history, network devic... \n", + "1 [network device command history, network devic... \n", + "2 [network device command history, network devic... \n", + "3 [network device command history, network devic... \n", + "4 [network device command history, network devic... \n", "\n", " subsets \\\n", - "0 [file monitoring] \n", - "1 [process command-line parameters] \n", - "2 [process monitoring] \n", - "3 [file monitoring, process command-line paramet... \n", - "4 [file monitoring, process monitoring] \n", + "0 [network device command history] \n", + "1 [network device configuration] \n", + "2 [network device logs] \n", + "3 [network device run-time memory] \n", + "4 [network device command history, network devic... \n", "\n", - " subsets_name subsets_number_elements \\\n", - "0 file monitoring 1 \n", - "1 process command-line parameters 1 \n", - "2 process monitoring 1 \n", - "3 file monitoring,process command-line parameters 2 \n", - "4 file monitoring,process monitoring 2 \n", + " subsets_name subsets_number_elements \\\n", + "0 network device command history 1 \n", + "1 network device configuration 1 \n", + "2 network device logs 1 \n", + "3 network device run-time memory 1 \n", + "4 network device command history,network device ... 2 \n", "\n", " number_data_sources_per_technique \n", - "0 3 \n", - "1 3 \n", - "2 3 \n", - "3 3 \n", - "4 3 " + "0 4 \n", + "1 4 \n", + "2 4 \n", + "3 4 \n", + "4 4 " ] }, "execution_count": 50, @@ -3352,77 +3088,77 @@ " \n", " \n", " \n", - " 3\n", - " [file monitoring, process command-line paramet...\n", - " [file monitoring, process command-line paramet...\n", - " file monitoring,process command-line parameters\n", - " 2\n", - " 3\n", - " \n", - " \n", " 4\n", - " [file monitoring, process command-line paramet...\n", - " [file monitoring, process monitoring]\n", - " file monitoring,process monitoring\n", + " [network device command history, network devic...\n", + " [network device command history, network devic...\n", + " network device command history,network device ...\n", " 2\n", - " 3\n", + " 4\n", " \n", " \n", " 5\n", - " [file monitoring, process command-line paramet...\n", - " [process command-line parameters, process moni...\n", - " process command-line parameters,process monito...\n", + " [network device command history, network devic...\n", + " [network device command history, network devic...\n", + " network device command history,network device ...\n", " 2\n", - " 3\n", + " 4\n", " \n", " \n", " 6\n", - " [file monitoring, process command-line paramet...\n", - " [file monitoring, process command-line paramet...\n", - " file monitoring,process command-line parameter...\n", - " 3\n", - " 3\n", + " [network device command history, network devic...\n", + " [network device command history, network devic...\n", + " network device command history,network device ...\n", + " 2\n", + " 4\n", " \n", " \n", - " 10\n", - " [file monitoring, process command-line paramet...\n", - " [file monitoring, process command-line paramet...\n", - " file monitoring,process command-line parameters\n", + " 7\n", + " [network device command history, network devic...\n", + " [network device configuration, network device ...\n", + " network device configuration,network device logs\n", " 2\n", - " 3\n", + " 4\n", + " \n", + " \n", + " 8\n", + " [network device command history, network devic...\n", + " [network device configuration, network device ...\n", + " network device configuration,network device ru...\n", + " 2\n", + " 4\n", " \n", " \n", "\n", "" ], "text/plain": [ - " data_sources \\\n", - "3 [file monitoring, process command-line paramet... \n", - "4 [file monitoring, process command-line paramet... \n", - "5 [file monitoring, process command-line paramet... \n", - "6 [file monitoring, process command-line paramet... \n", - "10 [file monitoring, process command-line paramet... \n", + " data_sources \\\n", + "4 [network device command history, network devic... \n", + "5 [network device command history, network devic... \n", + "6 [network device command history, network devic... \n", + "7 [network device command history, network devic... \n", + "8 [network device command history, network devic... \n", "\n", - " subsets \\\n", - "3 [file monitoring, process command-line paramet... \n", - "4 [file monitoring, process monitoring] \n", - "5 [process command-line parameters, process moni... \n", - "6 [file monitoring, process command-line paramet... \n", - "10 [file monitoring, process command-line paramet... \n", + " subsets \\\n", + "4 [network device command history, network devic... \n", + "5 [network device command history, network devic... \n", + "6 [network device command history, network devic... \n", + "7 [network device configuration, network device ... \n", + "8 [network device configuration, network device ... \n", "\n", - " subsets_name \\\n", - "3 file monitoring,process command-line parameters \n", - "4 file monitoring,process monitoring \n", - "5 process command-line parameters,process monito... \n", - "6 file monitoring,process command-line parameter... \n", - "10 file monitoring,process command-line parameters \n", + " subsets_name subsets_number_elements \\\n", + "4 network device command history,network device ... 2 \n", + "5 network device command history,network device ... 2 \n", + "6 network device command history,network device ... 2 \n", + "7 network device configuration,network device logs 2 \n", + "8 network device configuration,network device ru... 2 \n", "\n", - " subsets_number_elements number_data_sources_per_technique \n", - "3 2 3 \n", - "4 2 3 \n", - "5 2 3 \n", - "6 3 3 \n", - "10 2 3 " + " number_data_sources_per_technique \n", + "4 4 \n", + "5 4 \n", + "6 4 \n", + "7 4 \n", + "8 4 " ] }, "execution_count": 52, @@ -3486,63 +3222,63 @@ " \n", " \n", " process command-line parameters,process monitoring\n", - " 88\n", + " 183\n", " \n", " \n", " file monitoring,process monitoring\n", - " 74\n", + " 144\n", " \n", " \n", " file monitoring,process command-line parameters\n", - " 49\n", + " 100\n", " \n", " \n", " file monitoring,process command-line parameters,process monitoring\n", - " 42\n", + " 88\n", " \n", " \n", - " process monitoring,process use of network\n", - " 33\n", + " network protocol analysis,packet capture\n", + " 76\n", " \n", " \n", " api monitoring,process monitoring\n", - " 32\n", + " 70\n", " \n", " \n", - " process monitoring,windows registry\n", - " 29\n", + " process monitoring,process use of network\n", + " 56\n", " \n", " \n", - " packet capture,process use of network\n", - " 21\n", + " netflow/enclave netflow,packet capture\n", + " 55\n", " \n", " \n", - " packet capture,process monitoring\n", - " 19\n", + " process monitoring,windows registry\n", + " 50\n", " \n", " \n", - " netflow/enclave netflow,process monitoring\n", - " 18\n", + " packet capture,process use of network\n", + " 45\n", " \n", " \n", - " netflow/enclave netflow,process use of network\n", - " 17\n", + " packet capture,process monitoring\n", + " 43\n", " \n", " \n", " process command-line parameters,windows registry\n", - " 17\n", + " 41\n", " \n", " \n", - " netflow/enclave netflow,packet capture\n", - " 17\n", + " netflow/enclave netflow,network protocol analysis\n", + " 41\n", " \n", " \n", - " process monitoring,windows event logs\n", - " 16\n", + " network protocol analysis,process use of network\n", + " 40\n", " \n", " \n", - " packet capture,process monitoring,process use of network\n", - " 16\n", + " netflow/enclave netflow,process monitoring\n", + " 38\n", " \n", " \n", "\n", @@ -3551,21 +3287,21 @@ "text/plain": [ " subsets_count\n", "subsets_name \n", - "process command-line parameters,process monitoring 88\n", - "file monitoring,process monitoring 74\n", - "file monitoring,process command-line parameters 49\n", - "file monitoring,process command-line parameters... 42\n", - "process monitoring,process use of network 33\n", - "api monitoring,process monitoring 32\n", - "process monitoring,windows registry 29\n", - "packet capture,process use of network 21\n", - "packet capture,process monitoring 19\n", - "netflow/enclave netflow,process monitoring 18\n", - "netflow/enclave netflow,process use of network 17\n", - "process command-line parameters,windows registry 17\n", - "netflow/enclave netflow,packet capture 17\n", - "process monitoring,windows event logs 16\n", - "packet capture,process monitoring,process use o... 16" + "process command-line parameters,process monitoring 183\n", + "file monitoring,process monitoring 144\n", + "file monitoring,process command-line parameters 100\n", + "file monitoring,process command-line parameters... 88\n", + "network protocol analysis,packet capture 76\n", + "api monitoring,process monitoring 70\n", + "process monitoring,process use of network 56\n", + "netflow/enclave netflow,packet capture 55\n", + "process monitoring,windows registry 50\n", + "packet capture,process use of network 45\n", + "packet capture,process monitoring 43\n", + "process command-line parameters,windows registry 41\n", + "netflow/enclave netflow,network protocol analysis 41\n", + "network protocol analysis,process use of network 40\n", + "netflow/enclave netflow,process monitoring 38" ] }, "execution_count": 54, @@ -3584,142 +3320,53 @@ "outputs": [ { "data": { - "application/vnd.vegalite.v3+json": { - "$schema": "https://vega.github.io/schema/vega-lite/v3.4.0.json", - "config": { - "mark": { - "tooltip": null - }, - "view": { - "height": 300, - "width": 400 - } - }, - "data": { - "name": "data-48dee17f09c6622cd09e1362aa43116f" - }, - "datasets": { - "data-48dee17f09c6622cd09e1362aa43116f": [ - { - "Count of Techniques": 88, - "Data Sources": "process command-line parameters,process monitoring" - }, - { - "Count of Techniques": 74, - "Data Sources": "file monitoring,process monitoring" - }, - { - "Count of Techniques": 49, - "Data Sources": "file monitoring,process command-line parameters" - }, - { - "Count of Techniques": 42, - "Data Sources": "file monitoring,process command-line parameters,process monitoring" - }, - { - "Count of Techniques": 33, - "Data Sources": "process monitoring,process use of network" - }, - { - "Count of Techniques": 32, - "Data Sources": "api monitoring,process monitoring" - }, - { - "Count of Techniques": 29, - "Data Sources": "process monitoring,windows registry" - }, - { - "Count of Techniques": 21, - "Data Sources": "packet capture,process use of network" - }, - { - "Count of Techniques": 19, - "Data Sources": "packet capture,process monitoring" - }, - { - "Count of Techniques": 18, - "Data Sources": "netflow/enclave netflow,process monitoring" - }, - { - "Count of Techniques": 17, - "Data Sources": "netflow/enclave netflow,process use of network" - }, - { - "Count of Techniques": 17, - "Data Sources": "process command-line parameters,windows registry" - }, - { - "Count of Techniques": 17, - "Data Sources": "netflow/enclave netflow,packet capture" - }, - { - "Count of Techniques": 16, - "Data Sources": "process monitoring,windows event logs" - }, - { - "Count of Techniques": 16, - "Data Sources": "packet capture,process monitoring,process use of network" - } - ] - }, - "layer": [ - { - "encoding": { - "color": { - "field": "Data Sources", - "type": "nominal" - }, - "x": { - "field": "Data Sources", - "type": "nominal" - }, - "y": { - "field": "Count of Techniques", - "type": "quantitative" - } - }, - "mark": "bar", - "width": 500 - }, - { - "encoding": { - "color": { - "field": "Data Sources", - "type": "nominal" - }, - "text": { - "field": "Count of Techniques", - "type": "quantitative" - }, - "x": { - "field": "Data Sources", - "type": "nominal" - }, - "y": { - "field": "Count of Techniques", - "type": "quantitative" - } - }, - "mark": { - "align": "center", - "baseline": "middle", - "dx": 0, - "dy": -5, - "type": "text" - }, - "width": 500 - } - ] - }, - "image/png": "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", - "text/plain": [ - "\n", + "application/javascript": [ + "const spec = {\"config\": {\"view\": {\"continuousWidth\": 400, \"continuousHeight\": 300}}, \"layer\": [{\"mark\": \"bar\", \"encoding\": {\"color\": {\"type\": \"nominal\", \"field\": \"Data Sources\"}, \"x\": {\"type\": \"nominal\", \"field\": \"Data Sources\"}, \"y\": {\"type\": \"quantitative\", \"field\": \"Count of Techniques\"}}, \"width\": 500}, {\"mark\": {\"type\": \"text\", \"align\": \"center\", \"baseline\": \"middle\", \"dx\": 0, \"dy\": -5}, \"encoding\": {\"color\": {\"type\": \"nominal\", \"field\": \"Data Sources\"}, \"text\": {\"type\": \"quantitative\", \"field\": \"Count of Techniques\"}, \"x\": {\"type\": \"nominal\", \"field\": \"Data Sources\"}, \"y\": {\"type\": \"quantitative\", \"field\": \"Count of Techniques\"}}, \"width\": 500}], \"data\": {\"name\": \"data-ef18c839539c3164e0c40c20eb1da48e\"}, \"$schema\": \"https://vega.github.io/schema/vega-lite/v4.8.1.json\", \"datasets\": {\"data-ef18c839539c3164e0c40c20eb1da48e\": [{\"Data Sources\": \"process command-line parameters,process monitoring\", \"Count of Techniques\": 183}, {\"Data Sources\": \"file monitoring,process monitoring\", \"Count of Techniques\": 144}, {\"Data Sources\": \"file monitoring,process command-line parameters\", \"Count of Techniques\": 100}, {\"Data Sources\": \"file monitoring,process command-line parameters,process monitoring\", \"Count of Techniques\": 88}, {\"Data Sources\": \"network protocol analysis,packet capture\", \"Count of Techniques\": 76}, {\"Data Sources\": \"api monitoring,process monitoring\", \"Count of Techniques\": 70}, {\"Data Sources\": \"process monitoring,process use of network\", \"Count of Techniques\": 56}, {\"Data Sources\": \"netflow/enclave netflow,packet capture\", \"Count of Techniques\": 55}, {\"Data Sources\": \"process monitoring,windows registry\", \"Count of Techniques\": 50}, {\"Data Sources\": \"packet capture,process use of network\", \"Count of Techniques\": 45}, {\"Data Sources\": \"packet capture,process monitoring\", \"Count of Techniques\": 43}, {\"Data Sources\": \"process command-line parameters,windows registry\", \"Count of Techniques\": 41}, {\"Data Sources\": \"netflow/enclave netflow,network protocol analysis\", \"Count of Techniques\": 41}, {\"Data Sources\": \"network protocol analysis,process use of network\", \"Count of Techniques\": 40}, {\"Data Sources\": \"netflow/enclave netflow,process monitoring\", \"Count of Techniques\": 38}]}};\n", + "const opt = {};\n", + "const type = \"vega-lite\";\n", + "const id = \"2214899b-49ff-44bd-8006-c13ea8aa10bc\";\n", + "\n", + "const output_area = this;\n", + "\n", + "require([\"nbextensions/jupyter-vega/index\"], function(vega) {\n", + " const target = document.createElement(\"div\");\n", + " target.id = id;\n", + " target.className = \"vega-embed\";\n", "\n", - "If you see this message, it means the renderer has not been properly enabled\n", - "for the frontend that you are using. For more information, see\n", - "https://altair-viz.github.io/user_guide/troubleshooting.html\n" + " const style = document.createElement(\"style\");\n", + " style.textContent = [\n", + " \".vega-embed .error p {\",\n", + " \" color: firebrick;\",\n", + " \" font-size: 14px;\",\n", + " \"}\",\n", + " ].join(\"\\\\n\");\n", + "\n", + " // element is a jQuery wrapped DOM element inside the output area\n", + " // see http://ipython.readthedocs.io/en/stable/api/generated/\\\n", + " // IPython.display.html#IPython.display.Javascript.__init__\n", + " element[0].appendChild(target);\n", + " element[0].appendChild(style);\n", + "\n", + " vega.render(\"#\" + id, spec, type, opt, output_area);\n", + "}, function (err) {\n", + " if (err.requireType !== \"scripterror\") {\n", + " throw(err);\n", + " }\n", + "});\n" + ], + "text/plain": [ + "" ] }, + "metadata": { + "jupyter-vega": "#2214899b-49ff-44bd-8006-c13ea8aa10bc" + }, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [] + }, "execution_count": 55, "metadata": {}, "output_type": "execute_result" @@ -3794,66 +3441,66 @@ " \n", " 0\n", " mitre-attack\n", - " Linux\n", - " defense-evasion\n", - " Compile After Delivery\n", - " T1500\n", - " Process command-line parameters\n", + " Network\n", + " execution\n", + " Network Device CLI\n", + " T1059.008\n", + " Network device logs\n", " \n", " \n", " 1\n", " mitre-attack\n", - " Linux\n", - " defense-evasion\n", - " Compile After Delivery\n", - " T1500\n", - " Process Monitoring\n", + " Network\n", + " execution\n", + " Network Device CLI\n", + " T1059.008\n", + " Network device run-time memory\n", " \n", " \n", " 2\n", " mitre-attack\n", - " Linux\n", - " defense-evasion\n", - " Compile After Delivery\n", - " T1500\n", - " File monitoring\n", + " Network\n", + " execution\n", + " Network Device CLI\n", + " T1059.008\n", + " Network device command history\n", " \n", " \n", " 3\n", " mitre-attack\n", - " macOS\n", - " defense-evasion\n", - " Compile After Delivery\n", - " T1500\n", - " Process command-line parameters\n", + " Network\n", + " execution\n", + " Network Device CLI\n", + " T1059.008\n", + " Network device configuration\n", " \n", " \n", " 4\n", " mitre-attack\n", - " macOS\n", - " defense-evasion\n", - " Compile After Delivery\n", - " T1500\n", - " Process Monitoring\n", + " Network\n", + " collection\n", + " Network Device Configuration Dump\n", + " T1602.002\n", + " Netflow/Enclave netflow\n", " \n", " \n", "\n", "" ], "text/plain": [ - " matrix platform tactic technique \\\n", - "0 mitre-attack Linux defense-evasion Compile After Delivery \n", - "1 mitre-attack Linux defense-evasion Compile After Delivery \n", - "2 mitre-attack Linux defense-evasion Compile After Delivery \n", - "3 mitre-attack macOS defense-evasion Compile After Delivery \n", - "4 mitre-attack macOS defense-evasion Compile After Delivery \n", + " matrix platform tactic technique \\\n", + "0 mitre-attack Network execution Network Device CLI \n", + "1 mitre-attack Network execution Network Device CLI \n", + "2 mitre-attack Network execution Network Device CLI \n", + "3 mitre-attack Network execution Network Device CLI \n", + "4 mitre-attack Network collection Network Device Configuration Dump \n", "\n", - " technique_id data_sources \n", - "0 T1500 Process command-line parameters \n", - "1 T1500 Process Monitoring \n", - "2 T1500 File monitoring \n", - "3 T1500 Process command-line parameters \n", - "4 T1500 Process Monitoring " + " technique_id data_sources \n", + "0 T1059.008 Network device logs \n", + "1 T1059.008 Network device run-time memory \n", + "2 T1059.008 Network device command history \n", + "3 T1059.008 Network device configuration \n", + "4 T1602.002 Netflow/Enclave netflow " ] }, "execution_count": 56, @@ -3957,53 +3604,53 @@ " \n", " \n", " \n", - " 105\n", + " 162\n", " mitre-attack\n", - " macOS\n", - " impact\n", - " Inhibit System Recovery\n", - " T1490\n", + " Linux\n", + " defense-evasion\n", + " Run Virtual Instance\n", + " T1564.006\n", " Windows Registry\n", " NO OK\n", " \n", " \n", - " 107\n", + " 168\n", " mitre-attack\n", " macOS\n", - " impact\n", - " Inhibit System Recovery\n", - " T1490\n", - " Windows event logs\n", + " defense-evasion\n", + " Run Virtual Instance\n", + " T1564.006\n", + " Windows Registry\n", " NO OK\n", " \n", " \n", - " 110\n", + " 179\n", " mitre-attack\n", " Linux\n", - " impact\n", - " Inhibit System Recovery\n", - " T1490\n", + " defense-evasion\n", + " Hidden File System\n", + " T1564.005\n", " Windows Registry\n", " NO OK\n", " \n", " \n", - " 112\n", + " 181\n", " mitre-attack\n", - " Linux\n", - " impact\n", - " Inhibit System Recovery\n", - " T1490\n", - " Windows event logs\n", + " macOS\n", + " defense-evasion\n", + " Hidden File System\n", + " T1564.005\n", + " Windows Registry\n", " NO OK\n", " \n", " \n", - " 181\n", + " 794\n", " mitre-attack\n", - " Linux\n", + " macOS\n", " defense-evasion\n", - " File Permissions Modification\n", - " T1222\n", - " Windows event logs\n", + " Hidden Window\n", + " T1564.003\n", + " PowerShell logs\n", " NO OK\n", " \n", " \n", @@ -4011,19 +3658,19 @@ "" ], "text/plain": [ - " matrix platform tactic technique \\\n", - "105 mitre-attack macOS impact Inhibit System Recovery \n", - "107 mitre-attack macOS impact Inhibit System Recovery \n", - "110 mitre-attack Linux impact Inhibit System Recovery \n", - "112 mitre-attack Linux impact Inhibit System Recovery \n", - "181 mitre-attack Linux defense-evasion File Permissions Modification \n", + " matrix platform tactic technique \\\n", + "162 mitre-attack Linux defense-evasion Run Virtual Instance \n", + "168 mitre-attack macOS defense-evasion Run Virtual Instance \n", + "179 mitre-attack Linux defense-evasion Hidden File System \n", + "181 mitre-attack macOS defense-evasion Hidden File System \n", + "794 mitre-attack macOS defense-evasion Hidden Window \n", "\n", - " technique_id data_sources Validation \n", - "105 T1490 Windows Registry NO OK \n", - "107 T1490 Windows event logs NO OK \n", - "110 T1490 Windows Registry NO OK \n", - "112 T1490 Windows event logs NO OK \n", - "181 T1222 Windows event logs NO OK " + " technique_id data_sources Validation \n", + "162 T1564.006 Windows Registry NO OK \n", + "168 T1564.006 Windows Registry NO OK \n", + "179 T1564.005 Windows Registry NO OK \n", + "181 T1564.005 Windows Registry NO OK \n", + "794 T1564.003 PowerShell logs NO OK " ] }, "execution_count": 58, @@ -4047,7 +3694,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "There are 37 rows with inconsistent data\n" + "There are 136 rows with inconsistent data\n" ] } ], @@ -4100,116 +3747,53 @@ "outputs": [ { "data": { - "application/vnd.vegalite.v3+json": { - "$schema": "https://vega.github.io/schema/vega-lite/v3.4.0.json", - "config": { - "mark": { - "tooltip": null - }, - "view": { - "height": 300, - "width": 400 - } - }, - "data": { - "name": "data-80ff2ad4d82713c24e6d413241ac9bea" - }, - "datasets": { - "data-80ff2ad4d82713c24e6d413241ac9bea": [ - { - "data_sources": "PowerShell logs", - "platform": "Linux", - "technique": 1 - }, - { - "data_sources": "PowerShell logs", - "platform": "Windows", - "technique": 4 - }, - { - "data_sources": "PowerShell logs", - "platform": "macOS", - "technique": 2 - }, - { - "data_sources": "WMI Objects", - "platform": "Windows", - "technique": 1 - }, - { - "data_sources": "Windows Error Reporting", - "platform": "Linux", - "technique": 4 - }, - { - "data_sources": "Windows Error Reporting", - "platform": "Windows", - "technique": 4 - }, - { - "data_sources": "Windows Error Reporting", - "platform": "macOS", - "technique": 4 - }, - { - "data_sources": "Windows Registry", - "platform": "Linux", - "technique": 5 - }, - { - "data_sources": "Windows Registry", - "platform": "Windows", - "technique": 36 - }, - { - "data_sources": "Windows Registry", - "platform": "macOS", - "technique": 5 - }, - { - "data_sources": "Windows event logs", - "platform": "Linux", - "technique": 5 - }, - { - "data_sources": "Windows event logs", - "platform": "Windows", - "technique": 22 - }, - { - "data_sources": "Windows event logs", - "platform": "macOS", - "technique": 5 - } - ] - }, - "encoding": { - "color": { - "field": "platform", - "type": "nominal" - }, - "x": { - "field": "technique", - "stack": "normalize", - "type": "quantitative" - }, - "y": { - "field": "data_sources", - "type": "nominal" - } - }, - "height": 200, - "mark": "bar" - }, - "image/png": "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", - "text/plain": [ - "\n", + "application/javascript": [ + "const spec = {\"config\": {\"view\": {\"continuousWidth\": 400, \"continuousHeight\": 300}}, \"data\": {\"name\": \"data-6d4700e1646c3dceebb7655c72e7b5ac\"}, \"mark\": \"bar\", \"encoding\": {\"color\": {\"type\": \"nominal\", \"field\": \"platform\"}, \"x\": {\"type\": \"quantitative\", \"field\": \"technique\", \"stack\": \"normalize\"}, \"y\": {\"type\": \"nominal\", \"field\": \"data_sources\"}}, \"height\": 200, \"$schema\": \"https://vega.github.io/schema/vega-lite/v4.8.1.json\", \"datasets\": {\"data-6d4700e1646c3dceebb7655c72e7b5ac\": [{\"data_sources\": \"PowerShell logs\", \"platform\": \"Linux\", \"technique\": 9}, {\"data_sources\": \"PowerShell logs\", \"platform\": \"Network\", \"technique\": 2}, {\"data_sources\": \"PowerShell logs\", \"platform\": \"Windows\", \"technique\": 22}, {\"data_sources\": \"PowerShell logs\", \"platform\": \"macOS\", \"technique\": 13}, {\"data_sources\": \"WMI Objects\", \"platform\": \"Linux\", \"technique\": 1}, {\"data_sources\": \"WMI Objects\", \"platform\": \"Windows\", \"technique\": 2}, {\"data_sources\": \"WMI Objects\", \"platform\": \"macOS\", \"technique\": 1}, {\"data_sources\": \"Windows Error Reporting\", \"platform\": \"Linux\", \"technique\": 4}, {\"data_sources\": \"Windows Error Reporting\", \"platform\": \"Windows\", \"technique\": 4}, {\"data_sources\": \"Windows Error Reporting\", \"platform\": \"macOS\", \"technique\": 4}, {\"data_sources\": \"Windows Registry\", \"platform\": \"AWS\", \"technique\": 2}, {\"data_sources\": \"Windows Registry\", \"platform\": \"Azure\", \"technique\": 2}, {\"data_sources\": \"Windows Registry\", \"platform\": \"Azure AD\", \"technique\": 1}, {\"data_sources\": \"Windows Registry\", \"platform\": \"Control Server\", \"technique\": 1}, {\"data_sources\": \"Windows Registry\", \"platform\": \"Data Historian\", \"technique\": 1}, {\"data_sources\": \"Windows Registry\", \"platform\": \"Engineering Workstation\", \"technique\": 1}, {\"data_sources\": \"Windows Registry\", \"platform\": \"GCP\", \"technique\": 2}, {\"data_sources\": \"Windows Registry\", \"platform\": \"Human-Machine Interface\", \"technique\": 1}, {\"data_sources\": \"Windows Registry\", \"platform\": \"Linux\", \"technique\": 19}, {\"data_sources\": \"Windows Registry\", \"platform\": \"Network\", \"technique\": 3}, {\"data_sources\": \"Windows Registry\", \"platform\": \"Office 365\", \"technique\": 5}, {\"data_sources\": \"Windows Registry\", \"platform\": \"SaaS\", \"technique\": 1}, {\"data_sources\": \"Windows Registry\", \"platform\": \"Windows\", \"technique\": 55}, {\"data_sources\": \"Windows Registry\", \"platform\": \"macOS\", \"technique\": 19}, {\"data_sources\": \"Windows error reporting\", \"platform\": \"Data Historian\", \"technique\": 1}, {\"data_sources\": \"Windows error reporting\", \"platform\": \"Engineering Workstation\", \"technique\": 1}, {\"data_sources\": \"Windows error reporting\", \"platform\": \"Human-Machine Interface\", \"technique\": 1}, {\"data_sources\": \"Windows error reporting\", \"platform\": \"Windows\", \"technique\": 1}, {\"data_sources\": \"Windows event logs\", \"platform\": \"AWS\", \"technique\": 3}, {\"data_sources\": \"Windows event logs\", \"platform\": \"Azure\", \"technique\": 3}, {\"data_sources\": \"Windows event logs\", \"platform\": \"Azure AD\", \"technique\": 3}, {\"data_sources\": \"Windows event logs\", \"platform\": \"Control Server\", \"technique\": 1}, {\"data_sources\": \"Windows event logs\", \"platform\": \"Engineering Workstation\", \"technique\": 2}, {\"data_sources\": \"Windows event logs\", \"platform\": \"Field Controller/RTU/PLC/IED\", \"technique\": 1}, {\"data_sources\": \"Windows event logs\", \"platform\": \"GCP\", \"technique\": 3}, {\"data_sources\": \"Windows event logs\", \"platform\": \"Human-Machine Interface\", \"technique\": 2}, {\"data_sources\": \"Windows event logs\", \"platform\": \"Linux\", \"technique\": 19}, {\"data_sources\": \"Windows event logs\", \"platform\": \"Network\", \"technique\": 2}, {\"data_sources\": \"Windows event logs\", \"platform\": \"Office 365\", \"technique\": 3}, {\"data_sources\": \"Windows event logs\", \"platform\": \"SaaS\", \"technique\": 1}, {\"data_sources\": \"Windows event logs\", \"platform\": \"Safety Instrumented System/Protection Relay\", \"technique\": 2}, {\"data_sources\": \"Windows event logs\", \"platform\": \"Windows\", \"technique\": 50}, {\"data_sources\": \"Windows event logs\", \"platform\": \"macOS\", \"technique\": 18}, {\"data_sources\": \"Windows registry\", \"platform\": \"Engineering Workstation\", \"technique\": 1}, {\"data_sources\": \"Windows registry\", \"platform\": \"Field Controller/RTU/PLC/IED\", \"technique\": 1}, {\"data_sources\": \"Windows registry\", \"platform\": \"Windows\", \"technique\": 2}]}};\n", + "const opt = {};\n", + "const type = \"vega-lite\";\n", + "const id = \"5e119597-5160-4769-a803-0ec11b1a8ecd\";\n", + "\n", + "const output_area = this;\n", + "\n", + "require([\"nbextensions/jupyter-vega/index\"], function(vega) {\n", + " const target = document.createElement(\"div\");\n", + " target.id = id;\n", + " target.className = \"vega-embed\";\n", "\n", - "If you see this message, it means the renderer has not been properly enabled\n", - "for the frontend that you are using. For more information, see\n", - "https://altair-viz.github.io/user_guide/troubleshooting.html\n" + " const style = document.createElement(\"style\");\n", + " style.textContent = [\n", + " \".vega-embed .error p {\",\n", + " \" color: firebrick;\",\n", + " \" font-size: 14px;\",\n", + " \"}\",\n", + " ].join(\"\\\\n\");\n", + "\n", + " // element is a jQuery wrapped DOM element inside the output area\n", + " // see http://ipython.readthedocs.io/en/stable/api/generated/\\\n", + " // IPython.display.html#IPython.display.Javascript.__init__\n", + " element[0].appendChild(target);\n", + " element[0].appendChild(style);\n", + "\n", + " vega.render(\"#\" + id, spec, type, opt, output_area);\n", + "}, function (err) {\n", + " if (err.requireType !== \"scripterror\") {\n", + " throw(err);\n", + " }\n", + "});\n" + ], + "text/plain": [ + "" ] }, + "metadata": { + "jupyter-vega": "#5e119597-5160-4769-a803-0ec11b1a8ecd" + }, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [] + }, "execution_count": 61, "metadata": {}, "output_type": "execute_result" @@ -4258,83 +3842,288 @@ " \n", " \n", " \n", - " 667\n", - " Input Prompt\n", + " 5953\n", + " OS Credential Dumping\n", + " PowerShell logs\n", + " \n", + " \n", + " 5832\n", + " Remote Services\n", + " PowerShell logs\n", + " \n", + " \n", + " 2814\n", + " Clear Command History\n", + " PowerShell logs\n", + " \n", + " \n", + " 2432\n", + " Credentials from Password Stores\n", + " PowerShell logs\n", + " \n", + " \n", + " 4564\n", + " Peripheral Device Discovery\n", + " PowerShell logs\n", + " \n", + " \n", + " 2271\n", + " Keychain\n", + " PowerShell logs\n", + " \n", + " \n", + " 2259\n", + " Credentials from Web Browsers\n", + " PowerShell logs\n", + " \n", + " \n", + " 2392\n", + " GUI Input Capture\n", + " PowerShell logs\n", + " \n", + " \n", + " 1831\n", + " Impair Command History Logging\n", + " PowerShell logs\n", + " \n", + " \n", + " 794\n", + " Hidden Window\n", + " PowerShell logs\n", + " \n", + " \n", + " 1611\n", + " Hide Artifacts\n", + " PowerShell logs\n", + " \n", + " \n", + " 5431\n", + " Input Capture\n", " PowerShell logs\n", " \n", " \n", - " 1990\n", - " Credential Dumping\n", + " 5402\n", + " Command and Scripting Interpreter\n", " PowerShell logs\n", " \n", " \n", - " 244\n", + " 3206\n", + " Event Triggered Execution\n", + " WMI Objects\n", + " \n", + " \n", + " 4156\n", " Exploitation of Remote Services\n", " Windows Error Reporting\n", " \n", " \n", - " 317\n", + " 4206\n", " Exploitation for Defense Evasion\n", " Windows Error Reporting\n", " \n", " \n", - " 378\n", - " Exploitation for Credential Access\n", + " 5361\n", + " Exploitation for Privilege Escalation\n", " Windows Error Reporting\n", " \n", " \n", - " 1384\n", - " Exploitation for Privilege Escalation\n", + " 4241\n", + " Exploitation for Credential Access\n", " Windows Error Reporting\n", " \n", " \n", - " 105\n", - " Inhibit System Recovery\n", + " 3212\n", + " Event Triggered Execution\n", " Windows Registry\n", " \n", " \n", - " 1182\n", - " Disabling Security Tools\n", + " 5217\n", + " Software Deployment Tools\n", " Windows Registry\n", " \n", " \n", - " 1311\n", - " Third-party Software\n", + " 4038\n", + " Service Stop\n", " Windows Registry\n", " \n", " \n", - " 1480\n", + " 4020\n", + " Inhibit System Recovery\n", + " Windows Registry\n", + " \n", + " \n", + " 5426\n", " Input Capture\n", " Windows Registry\n", " \n", " \n", - " 1505\n", - " Process Injection\n", + " 3389\n", + " Create or Modify System Process\n", " Windows Registry\n", " \n", " \n", - " 107\n", - " Inhibit System Recovery\n", + " 5827\n", + " Remote Services\n", + " Windows Registry\n", + " \n", + " \n", + " 4373\n", + " Browser Extensions\n", + " Windows Registry\n", + " \n", + " \n", + " 162\n", + " Run Virtual Instance\n", + " Windows Registry\n", + " \n", + " \n", + " 2414\n", + " Keylogging\n", + " Windows Registry\n", + " \n", + " \n", + " 1875\n", + " Impair Defenses\n", + " Windows Registry\n", + " \n", + " \n", + " 2599\n", + " Masquerade Task or Service\n", + " Windows Registry\n", + " \n", + " \n", + " 1857\n", + " Disable or Modify Tools\n", + " Windows Registry\n", + " \n", + " \n", + " 2654\n", + " Subvert Trust Controls\n", + " Windows Registry\n", + " \n", + " \n", + " 1824\n", + " Disable or Modify System Firewall\n", + " Windows Registry\n", + " \n", + " \n", + " 1204\n", + " System Services\n", + " Windows Registry\n", + " \n", + " \n", + " 2341\n", + " Modify Authentication Process\n", + " Windows Registry\n", + " \n", + " \n", + " 2722\n", + " Unsecured Credentials\n", + " Windows Registry\n", + " \n", + " \n", + " 179\n", + " Hidden File System\n", + " Windows Registry\n", + " \n", + " \n", + " 2895\n", + " Abuse Elevation Control Mechanism\n", + " Windows Registry\n", + " \n", + " \n", + " 5278\n", + " Indicator Removal on Host\n", " Windows event logs\n", " \n", " \n", - " 181\n", - " File Permissions Modification\n", + " 5775\n", + " Obfuscated Files or Information\n", + " Windows event logs\n", + " \n", + " \n", + " 5401\n", + " Command and Scripting Interpreter\n", " Windows event logs\n", " \n", " \n", - " 654\n", + " 5828\n", + " Remote Services\n", + " Windows event logs\n", + " \n", + " \n", + " 5559\n", + " Scheduled Task/Job\n", + " Windows event logs\n", + " \n", + " \n", + " 5427\n", + " Input Capture\n", + " Windows event logs\n", + " \n", + " \n", + " 2970\n", + " Local Account\n", + " Windows event logs\n", + " \n", + " \n", + " 3202\n", + " Event Triggered Execution\n", + " Windows event logs\n", + " \n", + " \n", + " 4439\n", " Create Account\n", " Windows event logs\n", " \n", " \n", - " 1364\n", - " Indicator Removal on Host\n", + " 2602\n", + " Masquerade Task or Service\n", " Windows event logs\n", " \n", " \n", - " 1781\n", - " Obfuscated Files or Information\n", + " 2655\n", + " Subvert Trust Controls\n", + " Windows event logs\n", + " \n", + " \n", + " 4078\n", + " File and Directory Permissions Modification\n", + " Windows event logs\n", + " \n", + " \n", + " 2720\n", + " Unsecured Credentials\n", + " Windows event logs\n", + " \n", + " \n", + " 4022\n", + " Inhibit System Recovery\n", + " Windows event logs\n", + " \n", + " \n", + " 3624\n", + " System Shutdown/Reboot\n", + " Windows event logs\n", + " \n", + " \n", + " 3605\n", + " Account Access Removal\n", + " Windows event logs\n", + " \n", + " \n", + " 2962\n", + " Domain Account\n", + " Windows event logs\n", + " \n", + " \n", + " 4909\n", + " Account Manipulation\n", + " Windows event logs\n", + " \n", + " \n", + " 3388\n", + " Create or Modify System Process\n", " Windows event logs\n", " \n", " \n", @@ -4342,23 +4131,64 @@ "" ], "text/plain": [ - " technique data_sources\n", - "667 Input Prompt PowerShell logs\n", - "1990 Credential Dumping PowerShell logs\n", - "244 Exploitation of Remote Services Windows Error Reporting\n", - "317 Exploitation for Defense Evasion Windows Error Reporting\n", - "378 Exploitation for Credential Access Windows Error Reporting\n", - "1384 Exploitation for Privilege Escalation Windows Error Reporting\n", - "105 Inhibit System Recovery Windows Registry\n", - "1182 Disabling Security Tools Windows Registry\n", - "1311 Third-party Software Windows Registry\n", - "1480 Input Capture Windows Registry\n", - "1505 Process Injection Windows Registry\n", - "107 Inhibit System Recovery Windows event logs\n", - "181 File Permissions Modification Windows event logs\n", - "654 Create Account Windows event logs\n", - "1364 Indicator Removal on Host Windows event logs\n", - "1781 Obfuscated Files or Information Windows event logs" + " technique data_sources\n", + "5953 OS Credential Dumping PowerShell logs\n", + "5832 Remote Services PowerShell logs\n", + "2814 Clear Command History PowerShell logs\n", + "2432 Credentials from Password Stores PowerShell logs\n", + "4564 Peripheral Device Discovery PowerShell logs\n", + "2271 Keychain PowerShell logs\n", + "2259 Credentials from Web Browsers PowerShell logs\n", + "2392 GUI Input Capture PowerShell logs\n", + "1831 Impair Command History Logging PowerShell logs\n", + "794 Hidden Window PowerShell logs\n", + "1611 Hide Artifacts PowerShell logs\n", + "5431 Input Capture PowerShell logs\n", + "5402 Command and Scripting Interpreter PowerShell logs\n", + "3206 Event Triggered Execution WMI Objects\n", + "4156 Exploitation of Remote Services Windows Error Reporting\n", + "4206 Exploitation for Defense Evasion Windows Error Reporting\n", + "5361 Exploitation for Privilege Escalation Windows Error Reporting\n", + "4241 Exploitation for Credential Access Windows Error Reporting\n", + "3212 Event Triggered Execution Windows Registry\n", + "5217 Software Deployment Tools Windows Registry\n", + "4038 Service Stop Windows Registry\n", + "4020 Inhibit System Recovery Windows Registry\n", + "5426 Input Capture Windows Registry\n", + "3389 Create or Modify System Process Windows Registry\n", + "5827 Remote Services Windows Registry\n", + "4373 Browser Extensions Windows Registry\n", + "162 Run Virtual Instance Windows Registry\n", + "2414 Keylogging Windows Registry\n", + "1875 Impair Defenses Windows Registry\n", + "2599 Masquerade Task or Service Windows Registry\n", + "1857 Disable or Modify Tools Windows Registry\n", + "2654 Subvert Trust Controls Windows Registry\n", + "1824 Disable or Modify System Firewall Windows Registry\n", + "1204 System Services Windows Registry\n", + "2341 Modify Authentication Process Windows Registry\n", + "2722 Unsecured Credentials Windows Registry\n", + "179 Hidden File System Windows Registry\n", + "2895 Abuse Elevation Control Mechanism Windows Registry\n", + "5278 Indicator Removal on Host Windows event logs\n", + "5775 Obfuscated Files or Information Windows event logs\n", + "5401 Command and Scripting Interpreter Windows event logs\n", + "5828 Remote Services Windows event logs\n", + "5559 Scheduled Task/Job Windows event logs\n", + "5427 Input Capture Windows event logs\n", + "2970 Local Account Windows event logs\n", + "3202 Event Triggered Execution Windows event logs\n", + "4439 Create Account Windows event logs\n", + "2602 Masquerade Task or Service Windows event logs\n", + "2655 Subvert Trust Controls Windows event logs\n", + "4078 File and Directory Permissions Modification Windows event logs\n", + "2720 Unsecured Credentials Windows event logs\n", + "4022 Inhibit System Recovery Windows event logs\n", + "3624 System Shutdown/Reboot Windows event logs\n", + "3605 Account Access Removal Windows event logs\n", + "2962 Domain Account Windows event logs\n", + "4909 Account Manipulation Windows event logs\n", + "3388 Create or Modify System Process Windows event logs" ] }, "execution_count": 62, @@ -4416,51 +4246,51 @@ " \n", " 0\n", " mitre-attack\n", - " Linux\n", - " defense-evasion\n", - " Compile After Delivery\n", - " T1500\n", - " Process command-line parameters\n", + " Network\n", + " execution\n", + " Network Device CLI\n", + " T1059.008\n", + " Network device logs\n", " OK\n", " \n", " \n", " 1\n", " mitre-attack\n", - " Linux\n", - " defense-evasion\n", - " Compile After Delivery\n", - " T1500\n", - " Process Monitoring\n", + " Network\n", + " execution\n", + " Network Device CLI\n", + " T1059.008\n", + " Network device run-time memory\n", " OK\n", " \n", " \n", " 2\n", " mitre-attack\n", - " Linux\n", - " defense-evasion\n", - " Compile After Delivery\n", - " T1500\n", - " File monitoring\n", + " Network\n", + " execution\n", + " Network Device CLI\n", + " T1059.008\n", + " Network device command history\n", " OK\n", " \n", " \n", " 3\n", " mitre-attack\n", - " macOS\n", - " defense-evasion\n", - " Compile After Delivery\n", - " T1500\n", - " Process command-line parameters\n", + " Network\n", + " execution\n", + " Network Device CLI\n", + " T1059.008\n", + " Network device configuration\n", " OK\n", " \n", " \n", " 4\n", " mitre-attack\n", - " macOS\n", - " defense-evasion\n", - " Compile After Delivery\n", - " T1500\n", - " Process Monitoring\n", + " Network\n", + " collection\n", + " Network Device Configuration Dump\n", + " T1602.002\n", + " Netflow/Enclave netflow\n", " OK\n", " \n", " \n", @@ -4468,19 +4298,19 @@ "" ], "text/plain": [ - " matrix platform tactic technique \\\n", - "0 mitre-attack Linux defense-evasion Compile After Delivery \n", - "1 mitre-attack Linux defense-evasion Compile After Delivery \n", - "2 mitre-attack Linux defense-evasion Compile After Delivery \n", - "3 mitre-attack macOS defense-evasion Compile After Delivery \n", - "4 mitre-attack macOS defense-evasion Compile After Delivery \n", + " matrix platform tactic technique \\\n", + "0 mitre-attack Network execution Network Device CLI \n", + "1 mitre-attack Network execution Network Device CLI \n", + "2 mitre-attack Network execution Network Device CLI \n", + "3 mitre-attack Network execution Network Device CLI \n", + "4 mitre-attack Network collection Network Device Configuration Dump \n", "\n", - " technique_id data_sources Validation \n", - "0 T1500 Process command-line parameters OK \n", - "1 T1500 Process Monitoring OK \n", - "2 T1500 File monitoring OK \n", - "3 T1500 Process command-line parameters OK \n", - "4 T1500 Process Monitoring OK " + " technique_id data_sources Validation \n", + "0 T1059.008 Network device logs OK \n", + "1 T1059.008 Network device run-time memory OK \n", + "2 T1059.008 Network device command history OK \n", + "3 T1059.008 Network device configuration OK \n", + "4 T1602.002 Netflow/Enclave netflow OK " ] }, "execution_count": 63, @@ -4502,7 +4332,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "There are 1983 rows of data that you can play with\n" + "There are 6650 rows of data that you can play with\n" ] } ], @@ -4550,7 +4380,7 @@ { "data": { "text/plain": [ - "169" + "320" ] }, "execution_count": 67, @@ -4599,7 +4429,7 @@ { "data": { "text/plain": [ - "178" + "336" ] }, "execution_count": 70, @@ -4619,7 +4449,7 @@ { "data": { "text/plain": [ - "AttackPattern(type='attack-pattern', id='attack-pattern--0fff2797-19cb-41ea-a5f1-8a9303b8158e', created_by_ref='identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5', created='2019-04-23T15:34:30.008Z', modified='2019-04-29T14:14:08.450Z', name='Systemd Service', description=\"Systemd services can be used to establish persistence on a Linux system. The systemd service manager is commonly used for managing background daemon processes (also known as services) and other system resources.(Citation: Linux man-pages: systemd January 2014)(Citation: Freedesktop.org Linux systemd 29SEP2018) Systemd is the default initialization (init) system on many Linux distributions starting with Debian 8, Ubuntu 15.04, CentOS 7, RHEL 7, Fedora 15, and replaces legacy init systems including SysVinit and Upstart while remaining backwards compatible with the aforementioned init systems.\\n\\nSystemd utilizes configuration files known as service units to control how services boot and under what conditions. By default, these unit files are stored in the /etc/systemd/system and /usr/lib/systemd/system directories and have the file extension .service. Each service unit file may contain numerous directives that can execute system commands. \\n\\n* ExecStart, ExecStartPre, and ExecStartPost directives cover execution of commands when a services is started manually by 'systemctl' or on system start if the service is set to automatically start. \\n* ExecReload directive covers when a service restarts. \\n* ExecStop and ExecStopPost directives cover when a service is stopped or manually by 'systemctl'.\\n\\nAdversaries have used systemd functionality to establish persistent access to victim systems by creating and/or modifying service unit files that cause systemd to execute malicious commands at recurring intervals, such as at system boot.(Citation: Anomali Rocke March 2019)(Citation: gist Arch package compromise 10JUL2018)(Citation: Arch Linux Package Systemd Compromise BleepingComputer 10JUL2018)(Citation: acroread package compromised Arch Linux Mail 8JUL2018)\\n\\nWhile adversaries typically require root privileges to create/modify service unit files in the /etc/systemd/system and /usr/lib/systemd/system directories, low privilege users can create/modify service unit files in directories such as ~/.config/systemd/user/ to achieve user-level persistence.(Citation: Rapid7 Service Persistence 22JUNE2016)\", kill_chain_phases=[KillChainPhase(kill_chain_name='mitre-attack', phase_name='persistence')], external_references=[ExternalReference(source_name='mitre-attack', url='https://attack.mitre.org/techniques/T1501', external_id='T1501'), ExternalReference(source_name='Linux man-pages: systemd January 2014', description='Linux man-pages. (2014, January). systemd(1) - Linux manual page. Retrieved April 23, 2019.', url='http://man7.org/linux/man-pages/man1/systemd.1.html'), ExternalReference(source_name='Freedesktop.org Linux systemd 29SEP2018', description='Freedesktop.org. (2018, September 29). systemd System and Service Manager. Retrieved April 23, 2019.', url='https://www.freedesktop.org/wiki/Software/systemd/'), ExternalReference(source_name='Anomali Rocke March 2019', description='Anomali Labs. (2019, March 15). Rocke Evolves Its Arsenal With a New Malware Family Written in Golang. Retrieved April 24, 2019.', url='https://www.anomali.com/blog/rocke-evolves-its-arsenal-with-a-new-malware-family-written-in-golang'), ExternalReference(source_name='gist Arch package compromise 10JUL2018', description='Catalin Cimpanu. (2018, July 10). ~x file downloaded in public Arch package compromise. Retrieved April 23, 2019.', url='https://gist.github.com/campuscodi/74d0d2e35d8fd9499c76333ce027345a'), ExternalReference(source_name='Arch Linux Package Systemd Compromise BleepingComputer 10JUL2018', description='Catalin Cimpanu. (2018, July 10). Malware Found in Arch Linux AUR Package Repository. Retrieved April 23, 2019.', url='https://www.bleepingcomputer.com/news/security/malware-found-in-arch-linux-aur-package-repository/'), ExternalReference(source_name='acroread package compromised Arch Linux Mail 8JUL2018', description='Eli Schwartz. (2018, June 8). acroread package compromised. Retrieved April 23, 2019.', url='https://lists.archlinux.org/pipermail/aur-general/2018-July/034153.html'), ExternalReference(source_name='Rapid7 Service Persistence 22JUNE2016', description='Rapid7. (2016, June 22). Service Persistence. Retrieved April 23, 2019.', url='https://www.rapid7.com/db/modules/exploit/linux/local/service_persistence')], object_marking_refs=['marking-definition--fa42a846-8d90-4e51-bc29-71d5b4802168'], x_mitre_contributors=['Tony Lambert, Red Canary'], x_mitre_data_sources=['Process command-line parameters', 'Process monitoring', 'File monitoring'], x_mitre_detection=\"Systemd service unit files may be detected by auditing file creation and modification events within the /etc/systemd/system, /usr/lib/systemd/system/, and /home//.config/systemd/user/ directories, as well as associated symbolic links. Suspicious processes or scripts spawned in this manner will have a parent process of ‘systemd’, a parent process ID of 1, and will usually execute as the ‘root’ user.\\n\\nSuspicious systemd services can also be identified by comparing results against a trusted system baseline. Malicious systemd services may be detected by using the systemctl utility to examine system wide services: systemctl list-units -–type=service –all. Analyze the contents of .service files present on the file system and ensure that they refer to legitimate, expected executables.\\n\\nAuditing the execution and command-line arguments of the 'systemctl' utility, as well related utilities such as /usr/sbin/service may reveal malicious systemd service execution.\", x_mitre_permissions_required=['root', 'User'], x_mitre_platforms=['Linux'], x_mitre_version='1.0')" + "AttackPattern(type='attack-pattern', id='attack-pattern--2de47683-f398-448f-b947-9abcc3e32fad', created_by_ref='identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5', created='2020-10-05T13:24:49.780Z', modified='2020-10-09T16:05:36.344Z', name='Print Processors', description='Adversaries may abuse print processors to run malicious DLLs during system boot for persistence and/or privilege escalation. Print processors are DLLs that are loaded by the print spooler service, spoolsv.exe, during boot. \\n\\nAdversaries may abuse the print spooler service by adding print processors that load malicious DLLs at startup. A print processor can be installed through the AddPrintProcessor API call with an account that has SeLoadDriverPrivilege enabled. Alternatively, a print processor can be registered to the print spooler service by adding the HKLM\\\\SYSTEM\\\\\\\\[CurrentControlSet or ControlSet001]\\\\Control\\\\Print\\\\Environments\\\\\\\\[Windows architecture: e.g., Windows x64]\\\\Print Processors\\\\\\\\[user defined]\\\\Driver Registry key that points to the DLL. For the print processor to be correctly installed, it must be located in the system print-processor directory that can be found with the GetPrintProcessorDirectory API call.(Citation: Microsoft AddPrintProcessor May 2018) After the print processors are installed, the print spooler service, which starts during boot, must be restarted in order for them to run.(Citation: ESET PipeMon May 2020) The print spooler service runs under SYSTEM level permissions, therefore print processors installed by an adversary may run under elevated privileges.', kill_chain_phases=[KillChainPhase(kill_chain_name='mitre-attack', phase_name='persistence'), KillChainPhase(kill_chain_name='mitre-attack', phase_name='privilege-escalation')], external_references=[ExternalReference(source_name='mitre-attack', url='https://attack.mitre.org/techniques/T1547/012', external_id='T1547.012'), ExternalReference(source_name='Microsoft AddPrintProcessor May 2018', description='Microsoft. (2018, May 31). AddPrintProcessor function. Retrieved October 5, 2020.', url='https://docs.microsoft.com/en-us/windows/win32/printdocs/addprintprocessor'), ExternalReference(source_name='ESET PipeMon May 2020', description='Tartare, M. et al. (2020, May 21). No “Game over” for the Winnti Group. Retrieved August 24, 2020.', url='https://www.welivesecurity.com/2020/05/21/no-game-over-winnti-group/')], object_marking_refs=['marking-definition--fa42a846-8d90-4e51-bc29-71d5b4802168'], x_mitre_contributors=['Mathieu Tartare, ESET'], x_mitre_data_sources=['Process monitoring', 'Windows Registry', 'File monitoring', 'DLL monitoring', 'API monitoring'], x_mitre_detection='Monitor process API calls to AddPrintProcessor and GetPrintProcessorDirectory. New print processor DLLs are written to the print processor directory. Also monitor Registry writes to HKLM\\\\SYSTEM\\\\ControlSet001\\\\Control\\\\Print\\\\Environments\\\\\\\\[Windows architecture]\\\\Print Processors\\\\\\\\[user defined]\\\\\\\\Driver or HKLM\\\\SYSTEM\\\\CurrentControlSet\\\\Control\\\\Print\\\\Environments\\\\\\\\[Windows architecture]\\\\Print Processors\\\\\\\\[user defined]\\\\Driver as they pertain to print processor installations.\\n\\nMonitor for abnormal DLLs that are loaded by spoolsv.exe. Print processors that do not correlate with known good software or patching may be suspicious.', x_mitre_is_subtechnique=True, x_mitre_permissions_required=['Administrator', 'SYSTEM'], x_mitre_platforms=['Windows'], x_mitre_version='1.0')" ] }, "execution_count": 71, @@ -4648,9 +4478,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.3" + "version": "3.8.5" } }, "nbformat": 4, "nbformat_minor": 4 -} \ No newline at end of file +} diff --git a/notebooks/Export_All_Techniques.ipynb b/notebooks/Export_All_Techniques.ipynb index b60beba..9d3c3f6 100644 --- a/notebooks/Export_All_Techniques.ipynb +++ b/notebooks/Export_All_Techniques.ipynb @@ -21,7 +21,7 @@ "outputs": [], "source": [ "from attackcti import attack_client\n", - "from pandas.io.json import json_normalize" + "import pandas as pd" ] }, { @@ -55,7 +55,7 @@ { "data": { "text/plain": [ - "519" + "878" ] }, "execution_count": 3, @@ -82,7 +82,7 @@ "metadata": {}, "outputs": [], "source": [ - "techniques_df = json_normalize(all_techniques)\n", + "techniques_df = pd.json_normalize(all_techniques)\n", "techniques_df.to_csv('all_techniques_stix.csv', index=False)" ] }, @@ -121,7 +121,7 @@ "metadata": {}, "outputs": [], "source": [ - "techniques_df = json_normalize(all_techniques)\n", + "techniques_df = pd.json_normalize(all_techniques)\n", "techniques_df.to_csv('all_techniques_non_stix.csv', index=False)" ] } @@ -142,7 +142,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.3" + "version": "3.8.5" } }, "nbformat": 4, diff --git a/notebooks/ICS_ATTACK_Exploration.ipynb b/notebooks/ICS_ATTACK_Exploration.ipynb new file mode 100644 index 0000000..e3a18df --- /dev/null +++ b/notebooks/ICS_ATTACK_Exploration.ipynb @@ -0,0 +1,661 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Exploring ICS ATT&CK" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Query ATT&CK" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Import TAXII Libraries\n", + "ATT&CK users can use the initial Server class to instantiate a server object pointing to the framework’s public TAXII server URL https://cti-taxii.mitre.org/taxii/" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "from taxii2client.v20 import Server" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "server = Server(\"https://cti-taxii.mitre.org/taxii/\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Available API Roots can be referenced from the server object. API Roots are logical groupings of TAXII Channels and Collections and can be thought of as instances of the TAXII API available at different URLs, where each API Root is the “root” URL of that particular instance of the TAXII API:" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[]" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "server.api_roots" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "api_root = server.api_roots[0]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Explore ATT&CK TAXII Collections\n", + "The **collections** attribute can then be used and get more information about them via their respective available properties:" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[,\n", + " ,\n", + " ,\n", + " ]" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "api_root.collections" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Enterprise ATT&CK -> This data collection holds STIX objects from Enterprise ATT&CK\n", + "PRE-ATT&CK -> This data collection holds STIX objects from PRE-ATT&CK\n", + "Mobile ATT&CK -> This data collection holds STIX objects from Mobile ATT&CK\n", + "ICS ATT&CK -> This data collection holds STIX objects from ICS ATT&CK\n" + ] + } + ], + "source": [ + "for collection in api_root.collections:\n", + " print(collection.title, \"->\", collection.description)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'ICS ATT&CK'" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "api_root.collections[3].title" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'02c3ef24-9cd4-48f3-a99f-b74ce24f1d34'" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "api_root.collections[3].id" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Set ICS ATT&CK TAXII Collection ID Variable" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "ICS_ATTACK = \"02c3ef24-9cd4-48f3-a99f-b74ce24f1d34\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Initialize TAXII Collection Sources\n", + "According to [STIX2 docs](https://stix2.readthedocs.io/en/latest/index.html), the [TAXIICollectionSource API](https://stix2.readthedocs.io/en/latest/api/datastore/stix2.datastore.taxii.html#stix2.datastore.taxii.TAXIICollectionSource) provides an interface for searching/retrieving STIX objects from a local/remote TAXII Collection endpoint. In our case, we are pointing to our ATT&CK TAXII Collection instances (https://cti-taxii.mitre.org/stix/collections/)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "from stix2 import TAXIICollectionSource, Filter\n", + "from taxii2client.v20 import Collection" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "ATTACK_STIX_COLLECTIONS = \"https://cti-taxii.mitre.org/stix/collections/\"\n", + "ICS_COLLECTION = Collection(ATTACK_STIX_COLLECTIONS + ICS_ATTACK + \"/\")\n", + "TC_ICS_SOURCE = TAXIICollectionSource(ICS_COLLECTION)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Retrieve all ICS Techniques\n", + "Now that we can query the ICS ATT&CK TAXIICollection. We can use the query method and a set of filter to retrieve STIX objects of type \"attack-pattern\" -> \"Techniques\"" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{\n", + " \"type\": \"attack-pattern\",\n", + " \"id\": \"attack-pattern--2900bbd8-308a-4274-b074-5b8bde8347bc\",\n", + " \"created_by_ref\": \"identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\",\n", + " \"created\": \"2020-05-21T17:43:26.506Z\",\n", + " \"modified\": \"2020-05-21T17:43:26.506Z\",\n", + " \"name\": \"Alarm Suppression\",\n", + " \"description\": \"Adversaries may target protection function alarms to prevent them from notifying operators of critical conditions. Alarm messages may be a part of an overall reporting system and of particular interest for adversaries. Disruption of the alarm system does not imply the disruption of the reporting system as a whole. \\n\\nIn the Maroochy Attack, the adversary suppressed alarm reporting to the central computer. (Citation: Maroochy - MITRE - 200808)\\n\\nA Secura presentation on targeting OT notes a dual fold goal for adversaries attempting alarm suppression: prevent outgoing alarms from being raised and prevent incoming alarms from being responded to. (Citation: References - Secura - 2019) The method of suppression may greatly depend on the type of alarm in question:\\n\\n* An alarm raised by a protocol message\\n* An alarm signaled with I/O\\n* An alarm bit set in a flag (and read)\\n\\nIn ICS environments, the adversary may have to suppress or contend with multiple alarms and/or alarm propagation to achieve a specific goal to evade detection or prevent intended responses from occurring. (Citation: References - Secura - 2019) Methods of suppression may involve tampering or altering device displays and logs, modifying in memory code to fixed values, or even tampering with assembly level instruction code.\",\n", + " \"kill_chain_phases\": [\n", + " {\n", + " \"kill_chain_name\": \"mitre-ics-attack\",\n", + " \"phase_name\": \"inhibit-response-function\"\n", + " }\n", + " ],\n", + " \"external_references\": [\n", + " {\n", + " \"source_name\": \"mitre-ics-attack\",\n", + " \"url\": \"https://collaborate.mitre.org/attackics/index.php/Technique/T878\",\n", + " \"external_id\": \"T0878\"\n", + " },\n", + " {\n", + " \"source_name\": \"Maroochy - MITRE - 200808\",\n", + " \"description\": \"Marshall Abrams. (2008, July 23). Malicious Control System Cyber Security Attack Case Study\\u2013 Maroochy Water Services, Australia. Retrieved March 27, 2018.\",\n", + " \"url\": \"https://www.mitre.org/sites/default/files/pdf/08%201145.pdf\"\n", + " },\n", + " {\n", + " \"source_name\": \"References - Secura - 2019\",\n", + " \"description\": \"Jos Wetzels, Marina Krotofil. (2019). A Diet of Poisoned Fruit: Designing Implants & OT Payloads for ICS Embedded Devices. Retrieved November 1, 2019.\",\n", + " \"url\": \"https://troopers.de/downloads/troopers19/TROOPERS19%20NGI%20IoT%20diet%20poisoned%20fruit.pdf\"\n", + " }\n", + " ],\n", + " \"object_marking_refs\": [\n", + " \"marking-definition--fa42a846-8d90-4e51-bc29-71d5b4802168\"\n", + " ],\n", + " \"x_mitre_contributors\": [\n", + " \"Marina Krotofil\",\n", + " \"Jos Wetzels - Midnight Blue\"\n", + " ],\n", + " \"x_mitre_data_sources\": [\n", + " \"Alarm history\",\n", + " \"Alarm thresholds\",\n", + " \"Network protocol analysis\",\n", + " \"Packet capture\"\n", + " ],\n", + " \"x_mitre_platforms\": [\n", + " \"Field Controller/RTU/PLC/IED\",\n", + " \"Safety Instrumented System/Protection Relay\"\n", + " ]\n", + "}\n" + ] + } + ], + "source": [ + "ICS_TECHNIQUES = TC_ICS_SOURCE.query(Filter(\"type\", \"=\", \"attack-pattern\"))\n", + "print(ICS_TECHNIQUES[0])" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "T0878 -- Alarm Suppression\n", + "T0806 -- Brute Force I/O\n", + "T0808 -- Control Device Identification\n", + "T0812 -- Default Credentials\n", + "T0870 -- Detect Program State\n", + "T0819 -- Exploit Public-Facing Application\n", + "T0874 -- Hooking\n", + "T0825 -- Location Identification\n", + "T0829 -- Loss of View\n", + "T0849 -- Masquerading\n", + "T0801 -- Monitor Process State\n", + "T0843 -- Program Download\n", + "T0846 -- Remote System Discovery\n", + "T0852 -- Screen Capture\n", + "T0856 -- Spoof Reporting Message\n", + "T0855 -- Unauthorized Command Message\n", + "T0803 -- Block Command Message\n", + "T0807 -- Command-Line Interface\n", + "T0809 -- Data Destruction\n", + "T0814 -- Denial of Service\n", + "T0817 -- Drive-by Compromise\n", + "T0866 -- Exploitation of Remote Services\n", + "T0824 -- I/O Module Discovery\n", + "T0827 -- Loss of Control\n", + "T0835 -- Manipulate I/O Image\n", + "T0833 -- Modify Control Logic\n", + "T0841 -- Network Service Scanning\n", + "T0845 -- Program Upload\n", + "T0848 -- Rogue Master Device\n", + "T0854 -- Serial Connection Enumeration\n", + "T0862 -- Supply Chain Compromise\n", + "T0858 -- Utilize/Change Operating Mode\n", + "T0804 -- Block Reporting Message\n", + "T0885 -- Commonly Used Port\n", + "T0810 -- Data Historian Compromise\n", + "T0815 -- Denial of View\n", + "T0818 -- Engineering Workstation Compromise\n", + "T0822 -- External Remote Services\n", + "T0872 -- Indicator Removal on Host\n", + "T0828 -- Loss of Productivity and Revenue\n", + "T0831 -- Manipulation of Control\n", + "T0836 -- Modify Parameter\n", + "T0842 -- Network Sniffing\n", + "T0873 -- Project File Infection\n", + "T0850 -- Role Identification\n", + "T0881 -- Service Stop\n", + "T0857 -- System Firmware\n", + "T0859 -- Valid Accounts\n", + "T0802 -- Automated Collection\n", + "T0875 -- Change Program State\n", + "T0879 -- Damage to Property\n", + "T0813 -- Denial of Control\n", + "T0816 -- Device Restart/Shutdown\n", + "T0820 -- Exploitation for Evasion\n", + "T0877 -- I/O Image\n", + "T0826 -- Loss of Availability\n", + "T0830 -- Man in the Middle\n", + "T0838 -- Modify Alarm Settings\n", + "T0840 -- Network Connection Enumeration\n", + "T0844 -- Program Organization Units\n", + "T0847 -- Replication Through Removable Media\n", + "T0853 -- Scripting\n", + "T0869 -- Standard Application Layer Protocol\n", + "T0863 -- User Execution\n", + "T0800 -- Activate Firmware Update Mode\n", + "T0805 -- Block Serial COM\n", + "T0884 -- Connection Proxy\n", + "T0811 -- Data from Information Repositories\n", + "T0868 -- Detect Operating Mode\n", + "T0871 -- Execution through API\n", + "T0823 -- Graphical User Interface\n", + "T0883 -- Internet Accessible Device\n", + "T0880 -- Loss of Safety\n", + "T0832 -- Manipulation of View\n", + "T0839 -- Module Firmware\n", + "T0861 -- Point & Tag Identification\n", + "T0867 -- Remote File Copy\n", + "T0851 -- Rootkit\n", + "T0865 -- Spearphishing Attachment\n", + "T0882 -- Theft of Operational Information\n", + "T0860 -- Wireless Compromise\n" + ] + } + ], + "source": [ + "for TECHNIQUE in ICS_TECHNIQUES:\n", + " print(TECHNIQUE['external_references'][0]['external_id'], \"--\", TECHNIQUE['name'])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## ICS ATT&CK Available in attackcti 0.3.4.3\n", + "Reference: https://pypi.org/project/attackcti/" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Techniques Count: 81\n" + ] + } + ], + "source": [ + "from attackcti import attack_client\n", + "lift = attack_client()\n", + "\n", + "ICS_TECHNIQUES = lift.get_ics_techniques()\n", + "print(\"Techniques Count:\",len(ICS_TECHNIQUES))" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{\n", + " \"type\": \"attack-pattern\",\n", + " \"id\": \"attack-pattern--2900bbd8-308a-4274-b074-5b8bde8347bc\",\n", + " \"created_by_ref\": \"identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\",\n", + " \"created\": \"2020-05-21T17:43:26.506Z\",\n", + " \"modified\": \"2020-05-21T17:43:26.506Z\",\n", + " \"name\": \"Alarm Suppression\",\n", + " \"description\": \"Adversaries may target protection function alarms to prevent them from notifying operators of critical conditions. Alarm messages may be a part of an overall reporting system and of particular interest for adversaries. Disruption of the alarm system does not imply the disruption of the reporting system as a whole. \\n\\nIn the Maroochy Attack, the adversary suppressed alarm reporting to the central computer. (Citation: Maroochy - MITRE - 200808)\\n\\nA Secura presentation on targeting OT notes a dual fold goal for adversaries attempting alarm suppression: prevent outgoing alarms from being raised and prevent incoming alarms from being responded to. (Citation: References - Secura - 2019) The method of suppression may greatly depend on the type of alarm in question:\\n\\n* An alarm raised by a protocol message\\n* An alarm signaled with I/O\\n* An alarm bit set in a flag (and read)\\n\\nIn ICS environments, the adversary may have to suppress or contend with multiple alarms and/or alarm propagation to achieve a specific goal to evade detection or prevent intended responses from occurring. (Citation: References - Secura - 2019) Methods of suppression may involve tampering or altering device displays and logs, modifying in memory code to fixed values, or even tampering with assembly level instruction code.\",\n", + " \"kill_chain_phases\": [\n", + " {\n", + " \"kill_chain_name\": \"mitre-ics-attack\",\n", + " \"phase_name\": \"inhibit-response-function\"\n", + " }\n", + " ],\n", + " \"external_references\": [\n", + " {\n", + " \"source_name\": \"mitre-ics-attack\",\n", + " \"url\": \"https://collaborate.mitre.org/attackics/index.php/Technique/T878\",\n", + " \"external_id\": \"T0878\"\n", + " },\n", + " {\n", + " \"source_name\": \"Maroochy - MITRE - 200808\",\n", + " \"description\": \"Marshall Abrams. (2008, July 23). Malicious Control System Cyber Security Attack Case Study\\u2013 Maroochy Water Services, Australia. Retrieved March 27, 2018.\",\n", + " \"url\": \"https://www.mitre.org/sites/default/files/pdf/08%201145.pdf\"\n", + " },\n", + " {\n", + " \"source_name\": \"References - Secura - 2019\",\n", + " \"description\": \"Jos Wetzels, Marina Krotofil. (2019). A Diet of Poisoned Fruit: Designing Implants & OT Payloads for ICS Embedded Devices. Retrieved November 1, 2019.\",\n", + " \"url\": \"https://troopers.de/downloads/troopers19/TROOPERS19%20NGI%20IoT%20diet%20poisoned%20fruit.pdf\"\n", + " }\n", + " ],\n", + " \"object_marking_refs\": [\n", + " \"marking-definition--fa42a846-8d90-4e51-bc29-71d5b4802168\"\n", + " ],\n", + " \"x_mitre_contributors\": [\n", + " \"Marina Krotofil\",\n", + " \"Jos Wetzels - Midnight Blue\"\n", + " ],\n", + " \"x_mitre_data_sources\": [\n", + " \"Alarm history\",\n", + " \"Alarm thresholds\",\n", + " \"Network protocol analysis\",\n", + " \"Packet capture\"\n", + " ],\n", + " \"x_mitre_platforms\": [\n", + " \"Field Controller/RTU/PLC/IED\",\n", + " \"Safety Instrumented System/Protection Relay\"\n", + " ]\n", + "}\n" + ] + } + ], + "source": [ + "print(ICS_TECHNIQUES[0])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Get All Data Sources Mapped to ICS ATT&CK Techniques" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['Alarm history',\n", + " 'Alarm thresholds',\n", + " 'Network protocol analysis',\n", + " 'Packet capture',\n", + " 'Sequential event recorder',\n", + " 'Data historian',\n", + " 'Netflow/Enclave netflow',\n", + " 'Authentication logs',\n", + " 'Windows event logs',\n", + " 'Web logs',\n", + " 'Web application firewall logs',\n", + " 'Application logs',\n", + " 'File monitoring',\n", + " 'Windows registry',\n", + " 'API monitoring',\n", + " 'File Monitoring',\n", + " 'Process monitoring',\n", + " 'Binary file metadata',\n", + " 'Controller program',\n", + " 'Network device logs',\n", + " 'Host network interfaces',\n", + " 'Process use of network',\n", + " 'Process command-line parameters',\n", + " 'Alarm History',\n", + " 'Sequential Event Recorder',\n", + " 'process use of network',\n", + " 'Web proxy',\n", + " 'SSl/TLS inspection',\n", + " 'Network intrusion detection system',\n", + " 'Windows error reporting',\n", + " 'Asset management',\n", + " 'Detonation chamber',\n", + " 'Digital signatures',\n", + " 'Windows Registry',\n", + " 'Data loss prevention',\n", + " 'Malware reverse engineering',\n", + " 'Controller parameters',\n", + " 'Anti-virus',\n", + " 'Third-party application logs',\n", + " 'Email gateway',\n", + " 'Mail server']" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "ICS_DATA_SOURCES = []\n", + "for TECHNIQUE in ICS_TECHNIQUES:\n", + " if 'x_mitre_data_sources' in TECHNIQUE.keys():\n", + " for DS in TECHNIQUE['x_mitre_data_sources']:\n", + " if DS not in ICS_DATA_SOURCES:\n", + " ICS_DATA_SOURCES.append(DS)\n", + "ICS_DATA_SOURCES" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Get All Groups from ICS ATT&CK" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "TEMP.Veles\n", + "Dragonfly 2.0\n", + "HEXANE\n", + "Leafminer\n", + "APT33\n", + "OilRig\n", + "Dragonfly\n", + "Sandworm Team\n", + "Lazarus Group\n", + "ALLANITE\n" + ] + } + ], + "source": [ + "ICS_GROUPS = lift.get_ics_groups()\n", + "for GROUP in ICS_GROUPS:\n", + " print(GROUP['name'])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Get All Malware from ICS ATT&CK" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Ryuk\n", + "LockerGoga\n", + "Stuxnet\n", + "VPNFilter\n", + "NotPetya\n", + "Triton\n", + "PLC-Blaster\n", + "WannaCry\n", + "Flame\n", + "Industroyer\n", + "Killdisk\n", + "Backdoor.Oldrea\n", + "BlackEnergy 3\n", + "ACAD/Medre.A\n", + "Conficker\n", + "Bad Rabbit\n", + "Duqu\n" + ] + } + ], + "source": [ + "ICS_MALWARE = lift.get_ics_malware()\n", + "for MALWARE in ICS_MALWARE:\n", + " print(MALWARE['name'])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/notebooks/Usage_Basics.ipynb b/notebooks/Usage_Basics.ipynb index 55b3282..958e14d 100644 --- a/notebooks/Usage_Basics.ipynb +++ b/notebooks/Usage_Basics.ipynb @@ -38,7 +38,6 @@ "outputs": [], "source": [ "from pandas import *\n", - "from pandas.io.json import json_normalize\n", "import json" ] }, @@ -50,7 +49,7 @@ { "data": { "text/plain": [ - "'0.25.0'" + "'1.1.2'" ] }, "execution_count": 3, @@ -106,8 +105,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 5.18 s, sys: 820 ms, total: 6 s\n", - "Wall time: 11.7 s\n" + "CPU times: user 2.75 s, sys: 107 ms, total: 2.86 s\n", + "Wall time: 5.05 s\n" ] } ], @@ -127,12 +126,20 @@ "execution_count": 6, "metadata": {}, "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/usr/local/lib/python3.8/site-packages/attackcti/attack_api.py:426: UserWarning: PRE ATT&CK is deprecated. It will be removed in future versions. Consider adjusting your application\n", + " warnings.warn(\"PRE ATT&CK is deprecated. It will be removed in future versions. Consider adjusting your application\")\n" + ] + }, { "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 170 ms, sys: 100 ms, total: 270 ms\n", - "Wall time: 1.52 s\n" + "CPU times: user 124 ms, sys: 9.77 ms, total: 133 ms\n", + "Wall time: 539 ms\n" ] } ], @@ -156,8 +163,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 640 ms, sys: 120 ms, total: 760 ms\n", - "Wall time: 2.98 s\n" + "CPU times: user 300 ms, sys: 16.7 ms, total: 317 ms\n", + "Wall time: 766 ms\n" ] } ], @@ -194,8 +201,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 51 s, sys: 730 ms, total: 51.7 s\n", - "Wall time: 1min\n" + "CPU times: user 2min 48s, sys: 823 ms, total: 2min 49s\n", + "Wall time: 2min 54s\n" ] } ], @@ -241,7 +248,7 @@ "output_type": "stream", "text": [ "Number of Techniques in ATT&CK\n", - "500\n" + "1024\n" ] } ], @@ -293,57 +300,57 @@ " \n", " \n", " 0\n", - " 2019-04-25T20:53:07.719Z\n", - " Compile After Delivery\n", - " [Process command-line parameters, Process moni...\n", - " [Linux, macOS, Windows]\n", + " 2020-10-20T00:09:33.072Z\n", + " Network Device CLI\n", + " [Network device logs, Network device run-time ...\n", + " [Network]\n", " \n", " \n", " 1\n", - " 2019-04-23T15:34:30.008Z\n", - " Systemd Service\n", - " [Process command-line parameters, Process moni...\n", - " [Linux]\n", + " 2020-10-20T00:08:21.745Z\n", + " Network Device Configuration Dump\n", + " [Netflow/Enclave netflow, Network protocol ana...\n", + " [Network]\n", " \n", " \n", " 2\n", - " 2019-04-18T11:00:55.862Z\n", - " Endpoint Denial of Service\n", - " [SSL/TLS inspection, Web logs, Web application...\n", - " [Linux, macOS, Windows]\n", + " 2020-10-20T00:06:56.180Z\n", + " TFTP Boot\n", + " [Network device run-time memory, Network devic...\n", + " [Network]\n", " \n", " \n", " 3\n", - " 2019-04-17T22:22:24.505Z\n", - " Virtualization/Sandbox Evasion\n", - " [Process monitoring, Process command-line para...\n", - " [Windows]\n", + " 2020-10-20T00:05:48.790Z\n", + " ROMMONkit\n", + " [File monitoring, Netflow/Enclave netflow, Net...\n", + " [Network]\n", " \n", " \n", " 4\n", - " 2019-04-17T20:23:15.105Z\n", - " Network Denial of Service\n", - " [Sensor health and status, Network protocol an...\n", - " [Linux, macOS, Windows]\n", + " 2020-10-19T23:51:05.953Z\n", + " SNMP (MIB Dump)\n", + " [Netflow/Enclave netflow, Network protocol ana...\n", + " [Network]\n", " \n", " \n", "\n", "" ], "text/plain": [ - " created name \\\n", - "0 2019-04-25T20:53:07.719Z Compile After Delivery \n", - "1 2019-04-23T15:34:30.008Z Systemd Service \n", - "2 2019-04-18T11:00:55.862Z Endpoint Denial of Service \n", - "3 2019-04-17T22:22:24.505Z Virtualization/Sandbox Evasion \n", - "4 2019-04-17T20:23:15.105Z Network Denial of Service \n", - "\n", - " x_mitre_data_sources x_mitre_platforms \n", - "0 [Process command-line parameters, Process moni... [Linux, macOS, Windows] \n", - "1 [Process command-line parameters, Process moni... [Linux] \n", - "2 [SSL/TLS inspection, Web logs, Web application... [Linux, macOS, Windows] \n", - "3 [Process monitoring, Process command-line para... [Windows] \n", - "4 [Sensor health and status, Network protocol an... [Linux, macOS, Windows] " + " created name \\\n", + "0 2020-10-20T00:09:33.072Z Network Device CLI \n", + "1 2020-10-20T00:08:21.745Z Network Device Configuration Dump \n", + "2 2020-10-20T00:06:56.180Z TFTP Boot \n", + "3 2020-10-20T00:05:48.790Z ROMMONkit \n", + "4 2020-10-19T23:51:05.953Z SNMP (MIB Dump) \n", + "\n", + " x_mitre_data_sources x_mitre_platforms \n", + "0 [Network device logs, Network device run-time ... [Network] \n", + "1 [Netflow/Enclave netflow, Network protocol ana... [Network] \n", + "2 [Network device run-time memory, Network devic... [Network] \n", + "3 [File monitoring, Netflow/Enclave netflow, Net... [Network] \n", + "4 [Netflow/Enclave netflow, Network protocol ana... [Network] " ] }, "execution_count": 11, @@ -355,7 +362,7 @@ "techniques = []\n", "for t in all_attack['techniques']:\n", " techniques.append(json.loads(t.serialize()))\n", - "df = json_normalize(techniques)\n", + "df = pandas.json_normalize(techniques)\n", "df.reindex(['created','name', 'x_mitre_data_sources', 'x_mitre_platforms'], axis=1)[0:5]" ] }, @@ -381,36 +388,37 @@ { "data": { "text/plain": [ - "['external_references',\n", + "['id',\n", + " 'description',\n", + " 'name',\n", + " 'created_by_ref',\n", " 'object_marking_refs',\n", + " 'external_references',\n", " 'type',\n", - " 'modified',\n", - " 'created_by_ref',\n", " 'kill_chain_phases',\n", - " 'id',\n", - " 'name',\n", + " 'modified',\n", " 'created',\n", - " 'description',\n", - " 'x_mitre_contributors',\n", - " 'x_mitre_permissions_required',\n", " 'x_mitre_data_sources',\n", - " 'x_mitre_detection',\n", " 'x_mitre_platforms',\n", + " 'x_mitre_is_subtechnique',\n", " 'x_mitre_version',\n", - " 'x_mitre_system_requirements',\n", + " 'x_mitre_detection',\n", + " 'x_mitre_permissions_required',\n", " 'x_mitre_defense_bypassed',\n", - " 'x_mitre_impact_type',\n", - " 'x_mitre_remote_support',\n", - " 'x_mitre_effective_permissions',\n", + " 'x_mitre_contributors',\n", + " 'x_mitre_system_requirements',\n", " 'x_mitre_network_requirements',\n", - " 'x_mitre_detectable_by_common_defenses',\n", - " 'x_mitre_difficulty_for_adversary_explanation',\n", + " 'x_mitre_effective_permissions',\n", + " 'x_mitre_remote_support',\n", + " 'x_mitre_impact_type',\n", + " 'revoked',\n", + " 'x_mitre_deprecated',\n", " 'x_mitre_old_attack_id',\n", + " 'x_mitre_difficulty_for_adversary_explanation',\n", " 'x_mitre_difficulty_for_adversary',\n", " 'x_mitre_detectable_by_common_defenses_explanation',\n", - " 'x_mitre_deprecated',\n", - " 'x_mitre_tactic_type',\n", - " 'revoked']" + " 'x_mitre_detectable_by_common_defenses',\n", + " 'x_mitre_tactic_type']" ] }, "execution_count": 12, @@ -437,40 +445,34 @@ { "data": { "text/plain": [ - "{'external_references': [{'external_id': 'T1500',\n", - " 'source_name': 'mitre-attack',\n", - " 'url': 'https://attack.mitre.org/techniques/T1500'},\n", - " {'url': 'https://www.clearskysec.com/wp-content/uploads/2018/11/MuddyWater-Operations-in-Lebanon-and-Oman.pdf',\n", - " 'source_name': 'ClearSky MuddyWater Nov 2018',\n", - " 'description': 'ClearSky Cyber Security. (2018, November). MuddyWater Operations in Lebanon and Oman: Using an Israeli compromised domain for a two-stage campaign. Retrieved November 29, 2018.'},\n", - " {'url': 'https://blog.trendmicro.com/trendlabs-security-intelligence/windows-app-runs-on-mac-downloads-info-stealer-and-adware/',\n", - " 'source_name': 'TrendMicro WindowsAppMac',\n", - " 'description': 'Trend Micro. (2019, February 11). Windows App Runs on Mac, Downloads Info Stealer and Adware. Retrieved April 25, 2019.'}],\n", + "{'id': 'attack-pattern--818302b2-d640-477b-bf88-873120ce85c4',\n", + " 'description': 'Adversaries may abuse scripting or built-in command line interpreters (CLI) on network devices to execute malicious command and payloads. The CLI is the primary means through which users and administrators interact with the device in order to view system information, modify device operations, or perform diagnostic and administrative functions. CLIs typically contain various permission levels required for different commands. \\n\\nScripting interpreters automate tasks and extend functionality beyond the command set included in the network OS. The CLI and scripting interpreter are accessible through a direct console connection, or through remote means, such as telnet or secure shell (SSH).\\n\\nAdversaries can use the network CLI to change how network devices behave and operate. The CLI may be used to manipulate traffic flows to intercept or manipulate data, modify startup configuration parameters to load malicious system software, or to disable security features or logging to avoid detection. (Citation: Cisco Synful Knock Evolution)',\n", + " 'name': 'Network Device CLI',\n", + " 'created_by_ref': 'identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5',\n", " 'object_marking_refs': ['marking-definition--fa42a846-8d90-4e51-bc29-71d5b4802168'],\n", + " 'external_references': [{'source_name': 'mitre-attack',\n", + " 'external_id': 'T1059.008',\n", + " 'url': 'https://attack.mitre.org/techniques/T1059/008'},\n", + " {'source_name': 'Cisco Synful Knock Evolution',\n", + " 'url': 'https://blogs.cisco.com/security/evolution-of-attacks-on-cisco-ios-devices',\n", + " 'description': 'Graham Holmes. (2015, October 8). Evolution of attacks on Cisco IOS devices. Retrieved October 19, 2020.'},\n", + " {'source_name': 'Cisco IOS Software Integrity Assurance - Command History',\n", + " 'url': 'https://tools.cisco.com/security/center/resources/integrity_assurance.html#23',\n", + " 'description': 'Cisco. (n.d.). Cisco IOS Software Integrity Assurance - Command History. Retrieved October 21, 2020.'}],\n", " 'type': 'attack-pattern',\n", - " 'modified': '2019-04-29T21:13:49.686Z',\n", - " 'created_by_ref': 'identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5',\n", - " 'kill_chain_phases': [{'phase_name': 'defense-evasion',\n", - " 'kill_chain_name': 'mitre-attack'}],\n", - " 'id': 'attack-pattern--cf7b3a06-8b42-4c33-bbe9-012120027925',\n", - " 'name': 'Compile After Delivery',\n", - " 'created': '2019-04-25T20:53:07.719Z',\n", - " 'description': 'Adversaries may attempt to make payloads difficult to discover and analyze by delivering files to victims as uncompiled code. Similar to [Obfuscated Files or Information](https://attack.mitre.org/techniques/T1027), text-based source code files may subvert analysis and scrutiny from protections targeting executables/binaries. These payloads will need to be compiled before execution; typically via native utilities such as csc.exe or GCC/MinGW.(Citation: ClearSky MuddyWater Nov 2018)\\n\\nSource code payloads may also be encrypted, encoded, and/or embedded within other files, such as those delivered as a [Spearphishing Attachment](https://attack.mitre.org/techniques/T1193). Payloads may also be delivered in formats unrecognizable and inherently benign to the native OS (ex: EXEs on macOS/Linux) before later being (re)compiled into a proper executable binary with a bundled compiler and execution framework.(Citation: TrendMicro WindowsAppMac)\\n',\n", - " 'x_mitre_contributors': ['Ye Yint Min Thu Htut, Offensive Security Team, DBS Bank',\n", - " 'Praetorian'],\n", - " 'x_mitre_permissions_required': ['User'],\n", - " 'x_mitre_data_sources': ['Process command-line parameters',\n", - " 'Process monitoring',\n", - " 'File monitoring'],\n", - " 'x_mitre_detection': 'Monitor the execution file paths and command-line arguments for common compilers, such as csc.exe and GCC/MinGW, and correlate with other suspicious behavior to reduce false positives from normal user and administrator behavior. The compilation of payloads may also generate file creation and/or file write events. Look for non-native binary formats and cross-platform compiler and execution frameworks like Mono and determine if they have a legitimate purpose on the system.(Citation: TrendMicro WindowsAppMac) Typically these should only be used in specific and limited cases, like for software development.',\n", - " 'x_mitre_platforms': ['Linux', 'macOS', 'Windows'],\n", + " 'kill_chain_phases': [{'kill_chain_name': 'mitre-attack',\n", + " 'phase_name': 'execution'}],\n", + " 'modified': '2020-10-22T16:43:38.388Z',\n", + " 'created': '2020-10-20T00:09:33.072Z',\n", + " 'x_mitre_data_sources': ['Network device logs',\n", + " 'Network device run-time memory',\n", + " 'Network device command history',\n", + " 'Network device configuration'],\n", + " 'x_mitre_platforms': ['Network'],\n", + " 'x_mitre_is_subtechnique': True,\n", " 'x_mitre_version': '1.0',\n", - " 'x_mitre_system_requirements': ['Compiler software (either native to the system or delivered by the adversary)'],\n", - " 'x_mitre_defense_bypassed': ['Static File Analysis',\n", - " 'Binary Analysis',\n", - " 'Anti-virus',\n", - " 'Host intrusion prevention systems',\n", - " 'Signature-based detection']}" + " 'x_mitre_detection': 'Consider reviewing command history in either the console or as part of the running memory to determine if unauthorized or suspicious commands were used to modify device configuration.(Citation: Cisco IOS Software Integrity Assurance - Command History)\\n\\nConsider comparing a copy of the network device configuration against a known-good version to discover unauthorized changes to the command interpreter. The same process can be accomplished through a comparison of the run-time memory, though this is non-trivial and may require assistance from the vendor.',\n", + " 'x_mitre_permissions_required': ['Administrator', 'User']}" ] }, "execution_count": 13, @@ -499,7 +501,7 @@ "output_type": "stream", "text": [ "Number of Mitigations in ATT&CK\n", - "295\n" + "296\n" ] } ], @@ -542,12 +544,12 @@ " \n", " \n", " created_by_ref\n", + " object_marking_refs\n", + " external_references\n", " description\n", - " type\n", " name\n", - " object_marking_refs\n", " id\n", - " external_references\n", + " type\n", " modified\n", " created\n", " x_mitre_version\n", @@ -559,14 +561,14 @@ " \n", " 0\n", " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", - " This category is to associate techniques that ...\n", - " course-of-action\n", - " Do Not Mitigate\n", " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", - " course-of-action--787fb64d-c87b-4ee5-a341-0ef1...\n", - " [{'external_id': 'M1055', 'source_name': 'mitr...\n", - " 2019-07-23T14:44:24.727Z\n", - " 2019-07-19T14:58:42.715Z\n", + " [{'source_name': 'mitre-attack', 'external_id'...\n", + " This category is used for any applicable mitig...\n", + " Pre-compromise\n", + " course-of-action--78bb71be-92b4-46de-acd6-5f99...\n", + " course-of-action\n", + " 2020-10-20T19:52:32.439Z\n", + " 2020-10-19T14:57:58.771Z\n", " 1.0\n", " NaN\n", " NaN\n", @@ -574,14 +576,14 @@ " \n", " 1\n", " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", - " Implement configuration changes to software (o...\n", - " course-of-action\n", - " Software Configuration\n", " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", - " course-of-action--b5dbb4c5-b0b1-40b1-80b6-e9e8...\n", - " [{'external_id': 'M1054', 'source_name': 'mitr...\n", - " 2019-07-19T14:57:15.656Z\n", - " 2019-07-19T14:40:23.529Z\n", + " [{'source_name': 'mitre-attack', 'external_id'...\n", + " This category is to associate techniques that ...\n", + " Do Not Mitigate\n", + " course-of-action--787fb64d-c87b-4ee5-a341-0ef1...\n", + " course-of-action\n", + " 2019-07-23T14:44:24.727Z\n", + " 2019-07-19T14:58:42.715Z\n", " 1.0\n", " NaN\n", " NaN\n", @@ -589,30 +591,30 @@ " \n", " 2\n", " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", - " Take and store data backups from end user syst...\n", - " course-of-action\n", - " Data Backup\n", " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", - " course-of-action--3efe43d1-6f3f-4fcb-ab39-4a73...\n", - " [{'external_id': 'M1053', 'source_name': 'mitr...\n", - " 2019-07-19T14:33:33.543Z\n", - " 2019-07-19T14:33:33.543Z\n", - " 1.0\n", + " [{'source_name': 'mitre-attack', 'external_id'...\n", + " Implement configuration changes to software (o...\n", + " Software Configuration\n", + " course-of-action--b5dbb4c5-b0b1-40b1-80b6-e9e8...\n", + " course-of-action\n", + " 2020-03-31T13:11:09.471Z\n", + " 2019-07-19T14:40:23.529Z\n", + " 1.1\n", " NaN\n", " NaN\n", " \n", " \n", " 3\n", " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", - " Configure Windows User Account Control to miti...\n", - " course-of-action\n", - " User Account Control\n", " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", - " course-of-action--2c2ad92a-d710-41ab-a996-1db1...\n", - " [{'external_id': 'M1052', 'source_name': 'mitr...\n", - " 2019-06-11T17:14:35.170Z\n", - " 2019-06-11T17:14:35.170Z\n", - " 1.0\n", + " [{'source_name': 'mitre-attack', 'external_id'...\n", + " Take and store data backups from end user syst...\n", + " Data Backup\n", + " course-of-action--3efe43d1-6f3f-4fcb-ab39-4a73...\n", + " course-of-action\n", + " 2020-03-31T13:11:28.201Z\n", + " 2019-07-19T14:33:33.543Z\n", + " 1.1\n", " NaN\n", " NaN\n", " \n", @@ -627,35 +629,35 @@ "2 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", "3 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", "\n", - " description type \\\n", - "0 This category is to associate techniques that ... course-of-action \n", - "1 Implement configuration changes to software (o... course-of-action \n", - "2 Take and store data backups from end user syst... course-of-action \n", - "3 Configure Windows User Account Control to miti... course-of-action \n", - "\n", - " name object_marking_refs \\\n", - "0 Do Not Mitigate [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", - "1 Software Configuration [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", - "2 Data Backup [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", - "3 User Account Control [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", - "\n", - " id \\\n", - "0 course-of-action--787fb64d-c87b-4ee5-a341-0ef1... \n", - "1 course-of-action--b5dbb4c5-b0b1-40b1-80b6-e9e8... \n", - "2 course-of-action--3efe43d1-6f3f-4fcb-ab39-4a73... \n", - "3 course-of-action--2c2ad92a-d710-41ab-a996-1db1... \n", + " object_marking_refs \\\n", + "0 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", + "1 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", + "2 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", + "3 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", "\n", " external_references \\\n", - "0 [{'external_id': 'M1055', 'source_name': 'mitr... \n", - "1 [{'external_id': 'M1054', 'source_name': 'mitr... \n", - "2 [{'external_id': 'M1053', 'source_name': 'mitr... \n", - "3 [{'external_id': 'M1052', 'source_name': 'mitr... \n", + "0 [{'source_name': 'mitre-attack', 'external_id'... \n", + "1 [{'source_name': 'mitre-attack', 'external_id'... \n", + "2 [{'source_name': 'mitre-attack', 'external_id'... \n", + "3 [{'source_name': 'mitre-attack', 'external_id'... \n", + "\n", + " description name \\\n", + "0 This category is used for any applicable mitig... Pre-compromise \n", + "1 This category is to associate techniques that ... Do Not Mitigate \n", + "2 Implement configuration changes to software (o... Software Configuration \n", + "3 Take and store data backups from end user syst... Data Backup \n", + "\n", + " id type \\\n", + "0 course-of-action--78bb71be-92b4-46de-acd6-5f99... course-of-action \n", + "1 course-of-action--787fb64d-c87b-4ee5-a341-0ef1... course-of-action \n", + "2 course-of-action--b5dbb4c5-b0b1-40b1-80b6-e9e8... course-of-action \n", + "3 course-of-action--3efe43d1-6f3f-4fcb-ab39-4a73... course-of-action \n", "\n", " modified created x_mitre_version \\\n", - "0 2019-07-23T14:44:24.727Z 2019-07-19T14:58:42.715Z 1.0 \n", - "1 2019-07-19T14:57:15.656Z 2019-07-19T14:40:23.529Z 1.0 \n", - "2 2019-07-19T14:33:33.543Z 2019-07-19T14:33:33.543Z 1.0 \n", - "3 2019-06-11T17:14:35.170Z 2019-06-11T17:14:35.170Z 1.0 \n", + "0 2020-10-20T19:52:32.439Z 2020-10-19T14:57:58.771Z 1.0 \n", + "1 2019-07-23T14:44:24.727Z 2019-07-19T14:58:42.715Z 1.0 \n", + "2 2020-03-31T13:11:09.471Z 2019-07-19T14:40:23.529Z 1.1 \n", + "3 2020-03-31T13:11:28.201Z 2019-07-19T14:33:33.543Z 1.1 \n", "\n", " x_mitre_deprecated x_mitre_old_attack_id \n", "0 NaN NaN \n", @@ -673,7 +675,7 @@ "mitigations = []\n", "for t in all_attack['mitigations']:\n", " mitigations.append(json.loads(t.serialize()))\n", - "df = json_normalize(mitigations)\n", + "df = pandas.json_normalize(mitigations)\n", "df[0:4]" ] }, @@ -686,12 +688,12 @@ "data": { "text/plain": [ "['created_by_ref',\n", + " 'object_marking_refs',\n", + " 'external_references',\n", " 'description',\n", - " 'type',\n", " 'name',\n", - " 'object_marking_refs',\n", " 'id',\n", - " 'external_references',\n", + " 'type',\n", " 'modified',\n", " 'created',\n", " 'x_mitre_version',\n", @@ -725,7 +727,7 @@ "output_type": "stream", "text": [ "Number of Groups in ATT&CK\n", - "93\n" + "113\n" ] } ], @@ -768,15 +770,15 @@ " \n", " \n", " created_by_ref\n", + " object_marking_refs\n", + " external_references\n", + " name\n", " description\n", - " aliases\n", + " type\n", " id\n", - " external_references\n", + " aliases\n", " modified\n", - " type\n", " created\n", - " object_marking_refs\n", - " name\n", " x_mitre_version\n", " x_mitre_contributors\n", " revoked\n", @@ -786,31 +788,31 @@ " \n", " 0\n", " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", - " Operation [Soft Cell](https://attack.mitre.org...\n", - " [Soft Cell]\n", - " intrusion-set--06a11b7e-2a36-47fe-8d3e-82c265d...\n", - " [{'external_id': 'G0093', 'source_name': 'mitr...\n", - " 2019-07-22T15:49:28.637Z\n", - " intrusion-set\n", - " 2019-07-18T20:47:50.050Z\n", " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", - " Soft Cell\n", + " [{'external_id': 'G0115', 'source_name': 'mitr...\n", + " GOLD SOUTHFIELD\n", + " [GOLD SOUTHFIELD](https://attack.mitre.org/gro...\n", + " intrusion-set\n", + " intrusion-set--c77c5576-ca19-42ed-a36f-4b4486a...\n", + " [GOLD SOUTHFIELD]\n", + " 2020-10-06T15:32:20.089Z\n", + " 2020-09-22T19:41:27.845Z\n", " 1.0\n", - " [Cybereason Nocturnus, @nocturnus]\n", + " NaN\n", " NaN\n", " \n", " \n", " 1\n", " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", - " [TA505](https://attack.mitre.org/groups/G0092)...\n", - " [TA505]\n", - " intrusion-set--7eda3dd8-b09b-4705-8090-c2ad9fb...\n", - " [{'external_id': 'G0092', 'source_name': 'mitr...\n", - " 2019-06-24T19:11:41.060Z\n", - " intrusion-set\n", - " 2019-05-28T15:54:17.213Z\n", " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", - " TA505\n", + " [{'external_id': 'G0114', 'source_name': 'mitr...\n", + " Chimera\n", + " [Chimera](https://attack.mitre.org/groups/G011...\n", + " intrusion-set\n", + " intrusion-set--8c1f0187-0826-4320-bddc-5f326cf...\n", + " [Chimera]\n", + " 2020-10-05T20:59:57.694Z\n", + " 2020-08-24T17:01:55.842Z\n", " 1.0\n", " NaN\n", " NaN\n", @@ -818,33 +820,33 @@ " \n", " 2\n", " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", - " [Silence](https://attack.mitre.org/groups/G009...\n", - " [Silence]\n", - " intrusion-set--d13c8a7f-740b-4efa-a232-de7d6bb...\n", - " [{'external_id': 'G0091', 'source_name': 'mitr...\n", - " 2019-07-16T16:12:09.085Z\n", - " intrusion-set\n", - " 2019-05-24T17:57:36.491Z\n", " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", - " Silence\n", + " [{'external_id': 'G0112', 'source_name': 'mitr...\n", + " Windshift\n", + " [Windshift](https://attack.mitre.org/groups/G0...\n", + " intrusion-set\n", + " intrusion-set--afec6dc3-a18e-4b62-b1a4-5510e1a...\n", + " [Windshift, Bahamut]\n", + " 2020-06-26T13:46:14.122Z\n", + " 2020-06-25T17:16:39.168Z\n", " 1.0\n", - " [Oleg Skulkin, Group-IB]\n", + " NaN\n", " NaN\n", " \n", " \n", " 3\n", " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", - " [WIRTE](https://attack.mitre.org/groups/G0090)...\n", - " [WIRTE]\n", - " intrusion-set--f8cb7b36-62ef-4488-8a6d-a7033e3...\n", - " [{'external_id': 'G0090', 'source_name': 'mitr...\n", - " 2019-06-20T15:30:38.517Z\n", - " intrusion-set\n", - " 2019-05-24T17:02:44.226Z\n", " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", - " WIRTE\n", + " [{'external_id': 'G0108', 'source_name': 'mitr...\n", + " Blue Mockingbird\n", + " [Blue Mockingbird](https://attack.mitre.org/gr...\n", + " intrusion-set\n", + " intrusion-set--73a80fab-2aa3-48e0-a4d0-3a48282...\n", + " [Blue Mockingbird]\n", + " 2020-06-25T13:59:09.596Z\n", + " 2020-05-26T20:09:39.139Z\n", " 1.0\n", - " [Lab52 by S2 Grupo]\n", + " [Tony Lambert, Red Canary]\n", " NaN\n", " \n", " \n", @@ -858,41 +860,41 @@ "2 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", "3 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", "\n", - " description aliases \\\n", - "0 Operation [Soft Cell](https://attack.mitre.org... [Soft Cell] \n", - "1 [TA505](https://attack.mitre.org/groups/G0092)... [TA505] \n", - "2 [Silence](https://attack.mitre.org/groups/G009... [Silence] \n", - "3 [WIRTE](https://attack.mitre.org/groups/G0090)... [WIRTE] \n", + " object_marking_refs \\\n", + "0 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", + "1 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", + "2 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", + "3 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", + "\n", + " external_references name \\\n", + "0 [{'external_id': 'G0115', 'source_name': 'mitr... GOLD SOUTHFIELD \n", + "1 [{'external_id': 'G0114', 'source_name': 'mitr... Chimera \n", + "2 [{'external_id': 'G0112', 'source_name': 'mitr... Windshift \n", + "3 [{'external_id': 'G0108', 'source_name': 'mitr... Blue Mockingbird \n", "\n", - " id \\\n", - "0 intrusion-set--06a11b7e-2a36-47fe-8d3e-82c265d... \n", - "1 intrusion-set--7eda3dd8-b09b-4705-8090-c2ad9fb... \n", - "2 intrusion-set--d13c8a7f-740b-4efa-a232-de7d6bb... \n", - "3 intrusion-set--f8cb7b36-62ef-4488-8a6d-a7033e3... \n", + " description type \\\n", + "0 [GOLD SOUTHFIELD](https://attack.mitre.org/gro... intrusion-set \n", + "1 [Chimera](https://attack.mitre.org/groups/G011... intrusion-set \n", + "2 [Windshift](https://attack.mitre.org/groups/G0... intrusion-set \n", + "3 [Blue Mockingbird](https://attack.mitre.org/gr... intrusion-set \n", "\n", - " external_references \\\n", - "0 [{'external_id': 'G0093', 'source_name': 'mitr... \n", - "1 [{'external_id': 'G0092', 'source_name': 'mitr... \n", - "2 [{'external_id': 'G0091', 'source_name': 'mitr... \n", - "3 [{'external_id': 'G0090', 'source_name': 'mitr... \n", - "\n", - " modified type created \\\n", - "0 2019-07-22T15:49:28.637Z intrusion-set 2019-07-18T20:47:50.050Z \n", - "1 2019-06-24T19:11:41.060Z intrusion-set 2019-05-28T15:54:17.213Z \n", - "2 2019-07-16T16:12:09.085Z intrusion-set 2019-05-24T17:57:36.491Z \n", - "3 2019-06-20T15:30:38.517Z intrusion-set 2019-05-24T17:02:44.226Z \n", - "\n", - " object_marking_refs name \\\n", - "0 [marking-definition--fa42a846-8d90-4e51-bc29-7... Soft Cell \n", - "1 [marking-definition--fa42a846-8d90-4e51-bc29-7... TA505 \n", - "2 [marking-definition--fa42a846-8d90-4e51-bc29-7... Silence \n", - "3 [marking-definition--fa42a846-8d90-4e51-bc29-7... WIRTE \n", - "\n", - " x_mitre_version x_mitre_contributors revoked \n", - "0 1.0 [Cybereason Nocturnus, @nocturnus] NaN \n", - "1 1.0 NaN NaN \n", - "2 1.0 [Oleg Skulkin, Group-IB] NaN \n", - "3 1.0 [Lab52 by S2 Grupo] NaN " + " id aliases \\\n", + "0 intrusion-set--c77c5576-ca19-42ed-a36f-4b4486a... [GOLD SOUTHFIELD] \n", + "1 intrusion-set--8c1f0187-0826-4320-bddc-5f326cf... [Chimera] \n", + "2 intrusion-set--afec6dc3-a18e-4b62-b1a4-5510e1a... [Windshift, Bahamut] \n", + "3 intrusion-set--73a80fab-2aa3-48e0-a4d0-3a48282... [Blue Mockingbird] \n", + "\n", + " modified created x_mitre_version \\\n", + "0 2020-10-06T15:32:20.089Z 2020-09-22T19:41:27.845Z 1.0 \n", + "1 2020-10-05T20:59:57.694Z 2020-08-24T17:01:55.842Z 1.0 \n", + "2 2020-06-26T13:46:14.122Z 2020-06-25T17:16:39.168Z 1.0 \n", + "3 2020-06-25T13:59:09.596Z 2020-05-26T20:09:39.139Z 1.0 \n", + "\n", + " x_mitre_contributors revoked \n", + "0 NaN NaN \n", + "1 NaN NaN \n", + "2 NaN NaN \n", + "3 [Tony Lambert, Red Canary] NaN " ] }, "execution_count": 18, @@ -904,7 +906,7 @@ "groups = []\n", "for t in all_attack['groups']:\n", " groups.append(json.loads(t.serialize()))\n", - "df = json_normalize(groups)\n", + "df = pandas.json_normalize(groups)\n", "df[0:4]" ] }, @@ -924,15 +926,15 @@ "data": { "text/plain": [ "['created_by_ref',\n", + " 'object_marking_refs',\n", + " 'external_references',\n", + " 'name',\n", " 'description',\n", - " 'aliases',\n", + " 'type',\n", " 'id',\n", - " 'external_references',\n", + " 'aliases',\n", " 'modified',\n", - " 'type',\n", " 'created',\n", - " 'object_marking_refs',\n", - " 'name',\n", " 'x_mitre_version',\n", " 'x_mitre_contributors',\n", " 'revoked']" @@ -963,24 +965,27 @@ "data": { "text/plain": [ "{'created_by_ref': 'identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5',\n", - " 'description': 'Operation [Soft Cell](https://attack.mitre.org/groups/G0093) is a group that is reportedly affiliated with China and is likely state-sponsored. The group has operated since at least 2012 and has compromised high-profile telecommunications networks.(Citation: Cybereason Soft Cell June 2019)',\n", - " 'aliases': ['Soft Cell'],\n", - " 'id': 'intrusion-set--06a11b7e-2a36-47fe-8d3e-82c265df3258',\n", - " 'external_references': [{'external_id': 'G0093',\n", + " 'object_marking_refs': ['marking-definition--fa42a846-8d90-4e51-bc29-71d5b4802168'],\n", + " 'external_references': [{'external_id': 'G0115',\n", " 'source_name': 'mitre-attack',\n", - " 'url': 'https://attack.mitre.org/groups/G0093'},\n", - " {'source_name': 'Soft Cell',\n", - " 'description': '(Citation: Cybereason Soft Cell June 2019)'},\n", - " {'source_name': 'Cybereason Soft Cell June 2019',\n", - " 'description': 'Cybereason Nocturnus. (2019, June 25). Operation Soft Cell: A Worldwide Campaign Against Telecommunications Providers. Retrieved July 18, 2019.',\n", - " 'url': 'https://www.cybereason.com/blog/operation-soft-cell-a-worldwide-campaign-against-telecommunications-providers'}],\n", - " 'modified': '2019-07-22T15:49:28.637Z',\n", + " 'url': 'https://attack.mitre.org/groups/G0115'},\n", + " {'source_name': 'Secureworks REvil September 2019',\n", + " 'url': 'https://www.secureworks.com/research/revil-sodinokibi-ransomware',\n", + " 'description': 'Counter Threat Unit Research Team. (2019, September 24). REvil/Sodinokibi Ransomware. Retrieved August 4, 2020.'},\n", + " {'source_name': 'Secureworks GandCrab and REvil September 2019',\n", + " 'url': 'https://www.secureworks.com/blog/revil-the-gandcrab-connection',\n", + " 'description': 'Secureworks . (2019, September 24). REvil: The GandCrab Connection. Retrieved August 4, 2020.'},\n", + " {'source_name': 'Secureworks GOLD SOUTHFIELD',\n", + " 'url': 'https://www.secureworks.com/research/threat-profiles/gold-southfield',\n", + " 'description': 'Secureworks. (n.d.). GOLD SOUTHFIELD. Retrieved October 6, 2020.'}],\n", + " 'name': 'GOLD SOUTHFIELD',\n", + " 'description': '[GOLD SOUTHFIELD](https://attack.mitre.org/groups/G0115) is a financially motivated threat group active since at least 2019 that operates the [REvil](https://attack.mitre.org/software/S0496) Ransomware-as-a Service (RaaS). [GOLD SOUTHFIELD](https://attack.mitre.org/groups/G0115) provides backend infrastructure for affiliates recruited on underground forums to perpetrate high value deployments.(Citation: Secureworks REvil September 2019)(Citation: Secureworks GandCrab and REvil September 2019)(Citation: Secureworks GOLD SOUTHFIELD)',\n", " 'type': 'intrusion-set',\n", - " 'created': '2019-07-18T20:47:50.050Z',\n", - " 'object_marking_refs': ['marking-definition--fa42a846-8d90-4e51-bc29-71d5b4802168'],\n", - " 'name': 'Soft Cell',\n", - " 'x_mitre_version': '1.0',\n", - " 'x_mitre_contributors': ['Cybereason Nocturnus, @nocturnus']}" + " 'id': 'intrusion-set--c77c5576-ca19-42ed-a36f-4b4486a84133',\n", + " 'aliases': ['GOLD SOUTHFIELD'],\n", + " 'modified': '2020-10-06T15:32:20.089Z',\n", + " 'created': '2020-09-22T19:41:27.845Z',\n", + " 'x_mitre_version': '1.0'}" ] }, "execution_count": 20, @@ -1009,7 +1014,7 @@ "output_type": "stream", "text": [ "Number of Malware in ATT&CK\n", - "341\n" + "459\n" ] } ], @@ -1044,19 +1049,19 @@ " \n", " \n", " \n", + " external_references\n", + " object_marking_refs\n", " created_by_ref\n", " description\n", + " name\n", " id\n", - " external_references\n", - " object_marking_refs\n", - " modified\n", " type\n", - " created\n", - " name\n", " labels\n", + " modified\n", + " created\n", " x_mitre_version\n", - " x_mitre_platforms\n", " x_mitre_aliases\n", + " x_mitre_platforms\n", " x_mitre_contributors\n", " revoked\n", " x_mitre_old_attack_id\n", @@ -1065,77 +1070,77 @@ " \n", " \n", " 0\n", - " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", - " [HyperBro ](https://attack.mitre.org/software/...\n", - " malware--5e814485-012d-423d-b769-026bfed0f451\n", - " [{'external_id': 'S0398', 'source_name': 'mitr...\n", + " [{'external_id': 'S0519', 'source_name': 'mitr...\n", " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", - " 2019-07-14T21:14:18.656Z\n", + " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", + " [SYNful Knock](https://attack.mitre.org/softwa...\n", + " SYNful Knock\n", + " malware--84c1ecc6-e5a2-4e8a-bf4b-651a618e0053\n", " malware\n", - " 2019-07-09T17:42:44.777Z\n", - " HyperBro\n", " [malware]\n", + " 2020-10-22T17:35:04.950Z\n", + " 2020-10-19T16:38:11.279Z\n", " 1.0\n", - " [Windows]\n", - " [HyperBro ]\n", + " [SYNful Knock]\n", + " [Network]\n", " NaN\n", " NaN\n", " NaN\n", " \n", " \n", " 1\n", - " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", - " [LoJax](https://attack.mitre.org/software/S039...\n", - " malware--b865dded-0553-4962-a44b-6fe7863effed\n", - " [{'external_id': 'S0397', 'source_name': 'mitr...\n", + " [{'external_id': 'S0516', 'source_name': 'mitr...\n", " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", - " 2019-07-02T20:53:26.470Z\n", + " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", + " [SoreFang](https://attack.mitre.org/software/S...\n", + " SoreFang\n", + " malware--e33e4603-afab-402d-b2a1-248d435b5fe0\n", " malware\n", - " 2019-07-02T12:58:09.598Z\n", - " LoJax\n", " [malware]\n", + " 2020-10-06T16:10:42.422Z\n", + " 2020-09-29T19:33:35.122Z\n", " 1.0\n", + " [SoreFang]\n", " [Windows]\n", - " [LoJax]\n", - " [Jean-Ian Boutin, ESET]\n", + " NaN\n", " NaN\n", " NaN\n", " \n", " \n", " 2\n", - " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", - " [EvilBunny](https://attack.mitre.org/software/...\n", - " malware--a8a778f5-0035-4870-bb25-53dc05029586\n", - " [{'external_id': 'S0396', 'source_name': 'mitr...\n", + " [{'external_id': 'S0515', 'source_name': 'mitr...\n", " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", - " 2019-07-01T18:16:32.917Z\n", + " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", + " [WellMail](https://attack.mitre.org/software/S...\n", + " WellMail\n", + " malware--959f3b19-2dc8-48d5-8942-c66813a5101a\n", " malware\n", - " 2019-06-28T17:40:32.217Z\n", - " EvilBunny\n", " [malware]\n", + " 2020-10-09T15:38:41.755Z\n", + " 2020-09-29T17:48:27.517Z\n", " 1.0\n", + " [WellMail]\n", " [Windows]\n", - " [EvilBunny]\n", - " [ESET]\n", + " [Josh Campbell, Cyborg Security, @cyb0rgsecur1ty]\n", " NaN\n", " NaN\n", " \n", " \n", " 3\n", - " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", - " [LightNeuron](https://attack.mitre.org/softwar...\n", - " malware--6ba1d7ae-d60b-43e6-9f08-a8b787e9d9cb\n", - " [{'external_id': 'S0395', 'source_name': 'mitr...\n", + " [{'external_id': 'S0514', 'source_name': 'mitr...\n", " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", - " 2019-07-16T17:12:00.360Z\n", + " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", + " [WellMess](https://attack.mitre.org/software/S...\n", + " WellMess\n", + " malware--3a4197ae-ec63-4162-907b-9a073d1157e4\n", " malware\n", - " 2019-06-28T13:09:26.710Z\n", - " LightNeuron\n", " [malware]\n", + " 2020-10-09T19:41:25.983Z\n", + " 2020-09-24T19:39:44.392Z\n", " 1.0\n", - " [Windows, Linux]\n", - " [LightNeuron]\n", - " NaN\n", + " [WellMess]\n", + " [Windows]\n", + " [Daniyal Naeem, @Mrdaniyalnaeem]\n", " NaN\n", " NaN\n", " \n", @@ -1144,53 +1149,59 @@ "" ], "text/plain": [ + " external_references \\\n", + "0 [{'external_id': 'S0519', 'source_name': 'mitr... \n", + "1 [{'external_id': 'S0516', 'source_name': 'mitr... \n", + "2 [{'external_id': 'S0515', 'source_name': 'mitr... \n", + "3 [{'external_id': 'S0514', 'source_name': 'mitr... \n", + "\n", + " object_marking_refs \\\n", + "0 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", + "1 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", + "2 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", + "3 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", + "\n", " created_by_ref \\\n", "0 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", "1 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", "2 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", "3 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", "\n", - " description \\\n", - "0 [HyperBro ](https://attack.mitre.org/software/... \n", - "1 [LoJax](https://attack.mitre.org/software/S039... \n", - "2 [EvilBunny](https://attack.mitre.org/software/... \n", - "3 [LightNeuron](https://attack.mitre.org/softwar... \n", - "\n", - " id \\\n", - "0 malware--5e814485-012d-423d-b769-026bfed0f451 \n", - "1 malware--b865dded-0553-4962-a44b-6fe7863effed \n", - "2 malware--a8a778f5-0035-4870-bb25-53dc05029586 \n", - "3 malware--6ba1d7ae-d60b-43e6-9f08-a8b787e9d9cb \n", + " description name \\\n", + "0 [SYNful Knock](https://attack.mitre.org/softwa... SYNful Knock \n", + "1 [SoreFang](https://attack.mitre.org/software/S... SoreFang \n", + "2 [WellMail](https://attack.mitre.org/software/S... WellMail \n", + "3 [WellMess](https://attack.mitre.org/software/S... WellMess \n", "\n", - " external_references \\\n", - "0 [{'external_id': 'S0398', 'source_name': 'mitr... \n", - "1 [{'external_id': 'S0397', 'source_name': 'mitr... \n", - "2 [{'external_id': 'S0396', 'source_name': 'mitr... \n", - "3 [{'external_id': 'S0395', 'source_name': 'mitr... \n", + " id type labels \\\n", + "0 malware--84c1ecc6-e5a2-4e8a-bf4b-651a618e0053 malware [malware] \n", + "1 malware--e33e4603-afab-402d-b2a1-248d435b5fe0 malware [malware] \n", + "2 malware--959f3b19-2dc8-48d5-8942-c66813a5101a malware [malware] \n", + "3 malware--3a4197ae-ec63-4162-907b-9a073d1157e4 malware [malware] \n", "\n", - " object_marking_refs \\\n", - "0 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", - "1 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", - "2 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", - "3 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", + " modified created x_mitre_version \\\n", + "0 2020-10-22T17:35:04.950Z 2020-10-19T16:38:11.279Z 1.0 \n", + "1 2020-10-06T16:10:42.422Z 2020-09-29T19:33:35.122Z 1.0 \n", + "2 2020-10-09T15:38:41.755Z 2020-09-29T17:48:27.517Z 1.0 \n", + "3 2020-10-09T19:41:25.983Z 2020-09-24T19:39:44.392Z 1.0 \n", + "\n", + " x_mitre_aliases x_mitre_platforms \\\n", + "0 [SYNful Knock] [Network] \n", + "1 [SoreFang] [Windows] \n", + "2 [WellMail] [Windows] \n", + "3 [WellMess] [Windows] \n", + "\n", + " x_mitre_contributors revoked \\\n", + "0 NaN NaN \n", + "1 NaN NaN \n", + "2 [Josh Campbell, Cyborg Security, @cyb0rgsecur1ty] NaN \n", + "3 [Daniyal Naeem, @Mrdaniyalnaeem] NaN \n", "\n", - " modified type created name \\\n", - "0 2019-07-14T21:14:18.656Z malware 2019-07-09T17:42:44.777Z HyperBro \n", - "1 2019-07-02T20:53:26.470Z malware 2019-07-02T12:58:09.598Z LoJax \n", - "2 2019-07-01T18:16:32.917Z malware 2019-06-28T17:40:32.217Z EvilBunny \n", - "3 2019-07-16T17:12:00.360Z malware 2019-06-28T13:09:26.710Z LightNeuron \n", - "\n", - " labels x_mitre_version x_mitre_platforms x_mitre_aliases \\\n", - "0 [malware] 1.0 [Windows] [HyperBro ] \n", - "1 [malware] 1.0 [Windows] [LoJax] \n", - "2 [malware] 1.0 [Windows] [EvilBunny] \n", - "3 [malware] 1.0 [Windows, Linux] [LightNeuron] \n", - "\n", - " x_mitre_contributors revoked x_mitre_old_attack_id \n", - "0 NaN NaN NaN \n", - "1 [Jean-Ian Boutin, ESET] NaN NaN \n", - "2 [ESET] NaN NaN \n", - "3 NaN NaN NaN " + " x_mitre_old_attack_id \n", + "0 NaN \n", + "1 NaN \n", + "2 NaN \n", + "3 NaN " ] }, "execution_count": 22, @@ -1202,7 +1213,7 @@ "malware = []\n", "for t in all_attack['malware']:\n", " malware.append(json.loads(t.serialize()))\n", - "df = json_normalize(malware)\n", + "df = pandas.json_normalize(malware)\n", "df[0:4]" ] }, @@ -1221,19 +1232,19 @@ { "data": { "text/plain": [ - "['created_by_ref',\n", + "['external_references',\n", + " 'object_marking_refs',\n", + " 'created_by_ref',\n", " 'description',\n", + " 'name',\n", " 'id',\n", - " 'external_references',\n", - " 'object_marking_refs',\n", - " 'modified',\n", " 'type',\n", - " 'created',\n", - " 'name',\n", " 'labels',\n", + " 'modified',\n", + " 'created',\n", " 'x_mitre_version',\n", - " 'x_mitre_platforms',\n", " 'x_mitre_aliases',\n", + " 'x_mitre_platforms',\n", " 'x_mitre_contributors',\n", " 'revoked',\n", " 'x_mitre_old_attack_id']" @@ -1263,32 +1274,27 @@ { "data": { "text/plain": [ - "{'created_by_ref': 'identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5',\n", - " 'description': '[HyperBro ](https://attack.mitre.org/software/S0398) is a custom in-memory backdoor used by [Threat Group-3390](https://attack.mitre.org/groups/G0027).(Citation: Unit42 Emissary Panda May 2019)(Citation: Securelist LuckyMouse June 2018)(Citation: Hacker News LuckyMouse June 2018)',\n", - " 'id': 'malware--5e814485-012d-423d-b769-026bfed0f451',\n", - " 'external_references': [{'external_id': 'S0398',\n", + "{'external_references': [{'external_id': 'S0519',\n", " 'source_name': 'mitre-attack',\n", - " 'url': 'https://attack.mitre.org/software/S0398'},\n", - " {'source_name': 'HyperBro ',\n", - " 'description': '(Citation: Unit42 Emissary Panda May 2019)'},\n", - " {'source_name': 'Unit42 Emissary Panda May 2019',\n", - " 'description': 'Falcone, R. and Lancaster, T.. (2019, May 28). Emissary Panda Attacks Middle East Government Sharepoint Servers. Retrieved July 9, 2019.',\n", - " 'url': 'https://unit42.paloaltonetworks.com/emissary-panda-attacks-middle-east-government-sharepoint-servers/'},\n", - " {'source_name': 'Securelist LuckyMouse June 2018',\n", - " 'description': 'Legezo, D. (2018, June 13). LuckyMouse hits national data center to organize country-level waterholing campaign. Retrieved August 18, 2018.',\n", - " 'url': 'https://securelist.com/luckymouse-hits-national-data-center/86083/'},\n", - " {'source_name': 'Hacker News LuckyMouse June 2018',\n", - " 'description': 'Khandelwal, S. (2018, June 14). Chinese Hackers Carried Out Country-Level Watering Hole Attack. Retrieved August 18, 2018.',\n", - " 'url': 'https://thehackernews.com/2018/06/chinese-watering-hole-attack.html'}],\n", + " 'url': 'https://attack.mitre.org/software/S0519'},\n", + " {'source_name': 'FireEye - Synful Knock',\n", + " 'url': 'https://www.fireeye.com/blog/threat-research/2015/09/synful_knock_-_acis.html',\n", + " 'description': 'Bill Hau, Tony Lee, Josh Homan. (2015, September 15). SYNful Knock - A Cisco router implant - Part I. Retrieved October 19, 2020.'},\n", + " {'source_name': 'Cisco Synful Knock Evolution',\n", + " 'url': 'https://blogs.cisco.com/security/evolution-of-attacks-on-cisco-ios-devices',\n", + " 'description': 'Graham Holmes. (2015, October 8). Evolution of attacks on Cisco IOS devices. Retrieved October 19, 2020.'}],\n", " 'object_marking_refs': ['marking-definition--fa42a846-8d90-4e51-bc29-71d5b4802168'],\n", - " 'modified': '2019-07-14T21:14:18.656Z',\n", + " 'created_by_ref': 'identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5',\n", + " 'description': \"[SYNful Knock](https://attack.mitre.org/software/S0519) is a stealthy modification of the operating system of network devices that can be used to maintain persistence within a victim's network and provide new capabilities to the adversary.(Citation: FireEye - Synful Knock)(Citation: Cisco Synful Knock Evolution)\",\n", + " 'name': 'SYNful Knock',\n", + " 'id': 'malware--84c1ecc6-e5a2-4e8a-bf4b-651a618e0053',\n", " 'type': 'malware',\n", - " 'created': '2019-07-09T17:42:44.777Z',\n", - " 'name': 'HyperBro ',\n", " 'labels': ['malware'],\n", + " 'modified': '2020-10-22T17:35:04.950Z',\n", + " 'created': '2020-10-19T16:38:11.279Z',\n", " 'x_mitre_version': '1.0',\n", - " 'x_mitre_platforms': ['Windows'],\n", - " 'x_mitre_aliases': ['HyperBro ']}" + " 'x_mitre_aliases': ['SYNful Knock'],\n", + " 'x_mitre_platforms': ['Network']}" ] }, "execution_count": 24, @@ -1317,7 +1323,7 @@ "output_type": "stream", "text": [ "Number of Tools in ATT&CK\n", - "57\n" + "64\n" ] } ], @@ -1352,19 +1358,19 @@ " \n", " \n", " \n", - " created_by_ref\n", - " description\n", " id\n", - " external_references\n", + " name\n", + " description\n", + " created_by_ref\n", " object_marking_refs\n", - " modified\n", + " external_references\n", " type\n", - " created\n", - " name\n", " labels\n", + " modified\n", + " created\n", " x_mitre_version\n", - " x_mitre_platforms\n", " x_mitre_aliases\n", + " x_mitre_platforms\n", " x_mitre_contributors\n", " x_mitre_old_attack_id\n", " \n", @@ -1372,74 +1378,74 @@ " \n", " \n", " 0\n", + " tool--975737f1-b10d-476f-8bda-3ec26ea57172\n", + " MCMD\n", + " [MCMD](https://attack.mitre.org/software/S0500...\n", " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", - " [PoshC2](https://attack.mitre.org/software/S03...\n", - " tool--4b57c098-f043-4da2-83ef-7588a6d426bc\n", - " [{'external_id': 'S0378', 'source_name': 'mitr...\n", " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", - " 2019-04-23T18:29:12.005Z\n", + " [{'external_id': 'S0500', 'source_name': 'mitr...\n", " tool\n", - " 2019-04-23T12:31:58.125Z\n", - " PoshC2\n", " [tool]\n", + " 2020-08-20T14:52:23.369Z\n", + " 2020-08-13T17:15:25.702Z\n", " 1.0\n", - " [Windows, Linux, macOS]\n", - " [PoshC2]\n", + " [MCMD]\n", + " [Windows]\n", " NaN\n", " NaN\n", " \n", " \n", " 1\n", + " tool--c4810609-7da6-48ec-8057-1b70a7814db0\n", + " CrackMapExec\n", + " [CrackMapExec](https://attack.mitre.org/softwa...\n", " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", - " [RawDisk](https://attack.mitre.org/software/S0...\n", - " tool--3ffbdc1f-d2bf-41ab-91a2-c7b857e98079\n", - " [{'external_id': 'S0364', 'source_name': 'mitr...\n", " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", - " 2019-04-19T19:04:55.892Z\n", + " [{'external_id': 'S0488', 'source_name': 'mitr...\n", " tool\n", - " 2019-03-25T12:30:40.919Z\n", - " RawDisk\n", " [tool]\n", + " 2020-07-29T20:19:40.544Z\n", + " 2020-07-17T14:23:05.958Z\n", " 1.0\n", + " [CrackMapExec]\n", " [Windows]\n", - " [RawDisk]\n", " NaN\n", " NaN\n", " \n", " \n", " 2\n", + " tool--5fc81b43-62b5-41b1-9113-c79ae5f030c4\n", + " CARROTBALL\n", + " [CARROTBALL](https://attack.mitre.org/software...\n", " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", - " [Empire](https://attack.mitre.org/software/S03...\n", - " tool--3433a9e8-1c47-4320-b9bf-ed449061d1c3\n", - " [{'external_id': 'S0363', 'source_name': 'mitr...\n", " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", - " 2019-06-24T17:15:43.818Z\n", + " [{'external_id': 'S0465', 'source_name': 'mitr...\n", " tool\n", - " 2019-03-11T14:13:40.648Z\n", - " Empire\n", " [tool]\n", + " 2020-06-10T14:44:23.055Z\n", + " 2020-06-02T19:10:29.513Z\n", " 1.0\n", - " [Linux, macOS, Windows]\n", - " [Empire, EmPyre, PowerShell Empire]\n", + " [CARROTBALL]\n", + " [Windows]\n", " NaN\n", " NaN\n", " \n", " \n", " 3\n", + " tool--115f88dd-0618-4389-83cb-98d33ae81848\n", + " ShimRatReporter\n", + " [ShimRatReporter](https://attack.mitre.org/sof...\n", " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", - " [Expand](https://attack.mitre.org/software/S03...\n", - " tool--ca656c25-44f1-471b-9d9f-e2a3bbb84973\n", - " [{'external_id': 'S0361', 'source_name': 'mitr...\n", " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", - " 2019-04-19T18:52:30.033Z\n", + " [{'external_id': 'S0445', 'source_name': 'mitr...\n", " tool\n", - " 2019-02-19T19:17:14.971Z\n", - " Expand\n", " [tool]\n", + " 2020-05-27T22:39:28.701Z\n", + " 2020-05-12T21:29:48.294Z\n", " 1.0\n", + " [ShimRatReporter]\n", " [Windows]\n", - " [Expand]\n", - " [Matthew Demaske, Adaptforward]\n", + " NaN\n", " NaN\n", " \n", " \n", @@ -1447,53 +1453,47 @@ "" ], "text/plain": [ + " id name \\\n", + "0 tool--975737f1-b10d-476f-8bda-3ec26ea57172 MCMD \n", + "1 tool--c4810609-7da6-48ec-8057-1b70a7814db0 CrackMapExec \n", + "2 tool--5fc81b43-62b5-41b1-9113-c79ae5f030c4 CARROTBALL \n", + "3 tool--115f88dd-0618-4389-83cb-98d33ae81848 ShimRatReporter \n", + "\n", + " description \\\n", + "0 [MCMD](https://attack.mitre.org/software/S0500... \n", + "1 [CrackMapExec](https://attack.mitre.org/softwa... \n", + "2 [CARROTBALL](https://attack.mitre.org/software... \n", + "3 [ShimRatReporter](https://attack.mitre.org/sof... \n", + "\n", " created_by_ref \\\n", "0 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", "1 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", "2 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", "3 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", "\n", - " description \\\n", - "0 [PoshC2](https://attack.mitre.org/software/S03... \n", - "1 [RawDisk](https://attack.mitre.org/software/S0... \n", - "2 [Empire](https://attack.mitre.org/software/S03... \n", - "3 [Expand](https://attack.mitre.org/software/S03... \n", - "\n", - " id \\\n", - "0 tool--4b57c098-f043-4da2-83ef-7588a6d426bc \n", - "1 tool--3ffbdc1f-d2bf-41ab-91a2-c7b857e98079 \n", - "2 tool--3433a9e8-1c47-4320-b9bf-ed449061d1c3 \n", - "3 tool--ca656c25-44f1-471b-9d9f-e2a3bbb84973 \n", - "\n", - " external_references \\\n", - "0 [{'external_id': 'S0378', 'source_name': 'mitr... \n", - "1 [{'external_id': 'S0364', 'source_name': 'mitr... \n", - "2 [{'external_id': 'S0363', 'source_name': 'mitr... \n", - "3 [{'external_id': 'S0361', 'source_name': 'mitr... \n", - "\n", " object_marking_refs \\\n", "0 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", "1 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", "2 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", "3 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", "\n", - " modified type created name labels \\\n", - "0 2019-04-23T18:29:12.005Z tool 2019-04-23T12:31:58.125Z PoshC2 [tool] \n", - "1 2019-04-19T19:04:55.892Z tool 2019-03-25T12:30:40.919Z RawDisk [tool] \n", - "2 2019-06-24T17:15:43.818Z tool 2019-03-11T14:13:40.648Z Empire [tool] \n", - "3 2019-04-19T18:52:30.033Z tool 2019-02-19T19:17:14.971Z Expand [tool] \n", + " external_references type labels \\\n", + "0 [{'external_id': 'S0500', 'source_name': 'mitr... tool [tool] \n", + "1 [{'external_id': 'S0488', 'source_name': 'mitr... tool [tool] \n", + "2 [{'external_id': 'S0465', 'source_name': 'mitr... tool [tool] \n", + "3 [{'external_id': 'S0445', 'source_name': 'mitr... tool [tool] \n", "\n", - " x_mitre_version x_mitre_platforms \\\n", - "0 1.0 [Windows, Linux, macOS] \n", - "1 1.0 [Windows] \n", - "2 1.0 [Linux, macOS, Windows] \n", - "3 1.0 [Windows] \n", + " modified created x_mitre_version \\\n", + "0 2020-08-20T14:52:23.369Z 2020-08-13T17:15:25.702Z 1.0 \n", + "1 2020-07-29T20:19:40.544Z 2020-07-17T14:23:05.958Z 1.0 \n", + "2 2020-06-10T14:44:23.055Z 2020-06-02T19:10:29.513Z 1.0 \n", + "3 2020-05-27T22:39:28.701Z 2020-05-12T21:29:48.294Z 1.0 \n", "\n", - " x_mitre_aliases x_mitre_contributors \\\n", - "0 [PoshC2] NaN \n", - "1 [RawDisk] NaN \n", - "2 [Empire, EmPyre, PowerShell Empire] NaN \n", - "3 [Expand] [Matthew Demaske, Adaptforward] \n", + " x_mitre_aliases x_mitre_platforms x_mitre_contributors \\\n", + "0 [MCMD] [Windows] NaN \n", + "1 [CrackMapExec] [Windows] NaN \n", + "2 [CARROTBALL] [Windows] NaN \n", + "3 [ShimRatReporter] [Windows] NaN \n", "\n", " x_mitre_old_attack_id \n", "0 NaN \n", @@ -1511,7 +1511,7 @@ "tools = []\n", "for t in all_attack['tools']:\n", " tools.append(json.loads(t.serialize()))\n", - "df = json_normalize(tools)\n", + "df = pandas.json_normalize(tools)\n", "df[0:4]" ] }, @@ -1530,19 +1530,19 @@ { "data": { "text/plain": [ - "['created_by_ref',\n", + "['id',\n", + " 'name',\n", " 'description',\n", - " 'id',\n", - " 'external_references',\n", + " 'created_by_ref',\n", " 'object_marking_refs',\n", - " 'modified',\n", + " 'external_references',\n", " 'type',\n", - " 'created',\n", - " 'name',\n", " 'labels',\n", + " 'modified',\n", + " 'created',\n", " 'x_mitre_version',\n", - " 'x_mitre_platforms',\n", " 'x_mitre_aliases',\n", + " 'x_mitre_platforms',\n", " 'x_mitre_contributors',\n", " 'x_mitre_old_attack_id']" ] @@ -1571,24 +1571,24 @@ { "data": { "text/plain": [ - "{'created_by_ref': 'identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5',\n", - " 'description': '[PoshC2](https://attack.mitre.org/software/S0378) is an open source remote administration and post-exploitation framework that is publicly available on GitHub. The server-side components of the tool are primarily written in Python, while the implants are written in [PowerShell](https://attack.mitre.org/techniques/T1086). Although [PoshC2](https://attack.mitre.org/software/S0378) is primarily focused on Windows implantation, it does contain a basic Python dropper for Linux/macOS.(Citation: GitHub PoshC2)',\n", - " 'id': 'tool--4b57c098-f043-4da2-83ef-7588a6d426bc',\n", - " 'external_references': [{'external_id': 'S0378',\n", - " 'source_name': 'mitre-attack',\n", - " 'url': 'https://attack.mitre.org/software/S0378'},\n", - " {'source_name': 'GitHub PoshC2',\n", - " 'description': 'Nettitude. (2016, June 8). PoshC2: Powershell C2 Server and Implants. Retrieved April 23, 2019.',\n", - " 'url': 'https://github.com/nettitude/PoshC2'}],\n", + "{'id': 'tool--975737f1-b10d-476f-8bda-3ec26ea57172',\n", + " 'name': 'MCMD',\n", + " 'description': '[MCMD](https://attack.mitre.org/software/S0500) is a remote access tool that provides remote command shell capability used by [Dragonfly 2.0](https://attack.mitre.org/groups/G0074).(Citation: Secureworks MCMD July 2019)',\n", + " 'created_by_ref': 'identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5',\n", " 'object_marking_refs': ['marking-definition--fa42a846-8d90-4e51-bc29-71d5b4802168'],\n", - " 'modified': '2019-04-23T18:29:12.005Z',\n", + " 'external_references': [{'external_id': 'S0500',\n", + " 'source_name': 'mitre-attack',\n", + " 'url': 'https://attack.mitre.org/software/S0500'},\n", + " {'source_name': 'Secureworks MCMD July 2019',\n", + " 'url': 'https://www.secureworks.com/research/mcmd-malware-analysis',\n", + " 'description': 'Secureworks. (2019, July 24). MCMD Malware Analysis. Retrieved August 13, 2020.'}],\n", " 'type': 'tool',\n", - " 'created': '2019-04-23T12:31:58.125Z',\n", - " 'name': 'PoshC2',\n", " 'labels': ['tool'],\n", + " 'modified': '2020-08-20T14:52:23.369Z',\n", + " 'created': '2020-08-13T17:15:25.702Z',\n", " 'x_mitre_version': '1.0',\n", - " 'x_mitre_platforms': ['Windows', 'Linux', 'macOS'],\n", - " 'x_mitre_aliases': ['PoshC2']}" + " 'x_mitre_aliases': ['MCMD'],\n", + " 'x_mitre_platforms': ['Windows']}" ] }, "execution_count": 28, @@ -1617,7 +1617,7 @@ "output_type": "stream", "text": [ "Number of Relationships in ATT&CK\n", - "6067\n" + "10635\n" ] } ], @@ -1652,13 +1652,13 @@ " \n", " \n", " \n", - " created_by_ref\n", - " description\n", - " type\n", - " created\n", " object_marking_refs\n", - " id\n", " external_references\n", + " id\n", + " type\n", + " created\n", + " description\n", + " created_by_ref\n", " modified\n", " source_ref\n", " relationship_type\n", @@ -1668,118 +1668,112 @@ " \n", " \n", " 0\n", - " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", - " [Soft Cell](https://attack.mitre.org/groups/G0...\n", - " relationship\n", - " 2019-07-22T15:49:28.744Z\n", " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", - " relationship--380743e5-616c-4524-96e6-d545e5b6...\n", - " [{'source_name': 'Cybereason Soft Cell June 20...\n", - " 2019-07-22T15:49:28.744Z\n", - " intrusion-set--06a11b7e-2a36-47fe-8d3e-82c265d...\n", + " [{'source_name': 'FireEye KEGTAP SINGLEMALT Oc...\n", + " relationship--fcee0cef-7d5b-49da-928c-2a3d0cfd...\n", + " relationship\n", + " 2020-11-10T18:04:03.668Z\n", + " (Citation: FireEye KEGTAP SINGLEMALT October 2...\n", + " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", + " 2020-11-10T18:04:03.668Z\n", + " intrusion-set--dd2d9ca6-505b-4860-a604-233685b...\n", " uses\n", - " attack-pattern--92d7da27-2d91-488e-a00c-059dc1...\n", + " malware--a7881f21-e978-4fe4-af56-92c9416a2616\n", " \n", " \n", " 1\n", - " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", - " [Soft Cell](https://attack.mitre.org/groups/G0...\n", - " relationship\n", - " 2019-07-22T15:35:24.376Z\n", " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", - " relationship--919f6143-eb8c-48cd-8741-118040c3...\n", - " [{'source_name': 'Cybereason Soft Cell June 20...\n", - " 2019-07-22T15:49:29.135Z\n", - " intrusion-set--06a11b7e-2a36-47fe-8d3e-82c265d...\n", + " [{'source_name': 'FireEye KEGTAP SINGLEMALT Oc...\n", + " relationship--c118e50b-4559-4bff-bde5-78aa426f...\n", + " relationship\n", + " 2020-11-10T18:04:03.666Z\n", + " (Citation: FireEye KEGTAP SINGLEMALT October 2...\n", + " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", + " 2020-11-10T18:04:03.666Z\n", + " intrusion-set--dd2d9ca6-505b-4860-a604-233685b...\n", " uses\n", - " attack-pattern--00d0b012-8a03-410e-95de-5826bf...\n", + " tool--afc079f3-c0ea-4096-b75d-3f05338b7f60\n", " \n", " \n", " 2\n", - " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", - " [Soft Cell](https://attack.mitre.org/groups/G0...\n", - " relationship\n", - " 2019-07-22T15:35:24.363Z\n", " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", - " relationship--ee4d1b24-603f-40df-8f21-3c053fba...\n", - " [{'source_name': 'Cybereason Soft Cell June 20...\n", - " 2019-07-22T15:49:29.090Z\n", - " intrusion-set--06a11b7e-2a36-47fe-8d3e-82c265d...\n", + " [{'source_name': 'DFIR Ryuk's Return October 2...\n", + " relationship--43b9a1b5-6f95-4c6c-8e1f-59f9049e...\n", + " relationship\n", + " 2020-11-10T18:04:03.589Z\n", + " (Citation: DFIR Ryuk's Return October 2020)(Ci...\n", + " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", + " 2020-11-10T18:04:03.589Z\n", + " intrusion-set--dd2d9ca6-505b-4860-a604-233685b...\n", " uses\n", - " attack-pattern--c23b740b-a42b-47a1-aec2-9d48dd...\n", + " tool--b77b563c-34bb-4fb8-86a3-3694338f7b47\n", " \n", " \n", " 3\n", - " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", - " [Soft Cell](https://attack.mitre.org/groups/G0...\n", - " relationship\n", - " 2019-07-22T15:35:24.351Z\n", " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", - " relationship--38be247c-74b0-42f3-964e-5f23ef42...\n", - " [{'source_name': 'Cybereason Soft Cell June 20...\n", - " 2019-07-22T15:49:29.092Z\n", - " intrusion-set--06a11b7e-2a36-47fe-8d3e-82c265d...\n", + " [{'source_name': 'FireEye KEGTAP SINGLEMALT Oc...\n", + " relationship--585842e6-fe9a-4508-8e67-c232f8aa...\n", + " relationship\n", + " 2020-11-10T18:04:03.571Z\n", + " (Citation: FireEye KEGTAP SINGLEMALT October 2...\n", + " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", + " 2020-11-10T18:04:03.571Z\n", + " intrusion-set--dd2d9ca6-505b-4860-a604-233685b...\n", " uses\n", - " attack-pattern--3c4a2599-71ee-4405-ba1e-0e2841...\n", + " tool--981acc4c-2ede-4b56-be6e-fa1a75f37acf\n", " \n", " \n", "\n", "" ], "text/plain": [ - " created_by_ref \\\n", - "0 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", - "1 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", - "2 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", - "3 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", - "\n", - " description type \\\n", - "0 [Soft Cell](https://attack.mitre.org/groups/G0... relationship \n", - "1 [Soft Cell](https://attack.mitre.org/groups/G0... relationship \n", - "2 [Soft Cell](https://attack.mitre.org/groups/G0... relationship \n", - "3 [Soft Cell](https://attack.mitre.org/groups/G0... relationship \n", - "\n", - " created \\\n", - "0 2019-07-22T15:49:28.744Z \n", - "1 2019-07-22T15:35:24.376Z \n", - "2 2019-07-22T15:35:24.363Z \n", - "3 2019-07-22T15:35:24.351Z \n", - "\n", " object_marking_refs \\\n", "0 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", "1 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", "2 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", "3 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", "\n", - " id \\\n", - "0 relationship--380743e5-616c-4524-96e6-d545e5b6... \n", - "1 relationship--919f6143-eb8c-48cd-8741-118040c3... \n", - "2 relationship--ee4d1b24-603f-40df-8f21-3c053fba... \n", - "3 relationship--38be247c-74b0-42f3-964e-5f23ef42... \n", - "\n", " external_references \\\n", - "0 [{'source_name': 'Cybereason Soft Cell June 20... \n", - "1 [{'source_name': 'Cybereason Soft Cell June 20... \n", - "2 [{'source_name': 'Cybereason Soft Cell June 20... \n", - "3 [{'source_name': 'Cybereason Soft Cell June 20... \n", + "0 [{'source_name': 'FireEye KEGTAP SINGLEMALT Oc... \n", + "1 [{'source_name': 'FireEye KEGTAP SINGLEMALT Oc... \n", + "2 [{'source_name': 'DFIR Ryuk's Return October 2... \n", + "3 [{'source_name': 'FireEye KEGTAP SINGLEMALT Oc... \n", "\n", - " modified \\\n", - "0 2019-07-22T15:49:28.744Z \n", - "1 2019-07-22T15:49:29.135Z \n", - "2 2019-07-22T15:49:29.090Z \n", - "3 2019-07-22T15:49:29.092Z \n", + " id type \\\n", + "0 relationship--fcee0cef-7d5b-49da-928c-2a3d0cfd... relationship \n", + "1 relationship--c118e50b-4559-4bff-bde5-78aa426f... relationship \n", + "2 relationship--43b9a1b5-6f95-4c6c-8e1f-59f9049e... relationship \n", + "3 relationship--585842e6-fe9a-4508-8e67-c232f8aa... relationship \n", "\n", - " source_ref relationship_type \\\n", - "0 intrusion-set--06a11b7e-2a36-47fe-8d3e-82c265d... uses \n", - "1 intrusion-set--06a11b7e-2a36-47fe-8d3e-82c265d... uses \n", - "2 intrusion-set--06a11b7e-2a36-47fe-8d3e-82c265d... uses \n", - "3 intrusion-set--06a11b7e-2a36-47fe-8d3e-82c265d... uses \n", + " created \\\n", + "0 2020-11-10T18:04:03.668Z \n", + "1 2020-11-10T18:04:03.666Z \n", + "2 2020-11-10T18:04:03.589Z \n", + "3 2020-11-10T18:04:03.571Z \n", "\n", - " target_ref \n", - "0 attack-pattern--92d7da27-2d91-488e-a00c-059dc1... \n", - "1 attack-pattern--00d0b012-8a03-410e-95de-5826bf... \n", - "2 attack-pattern--c23b740b-a42b-47a1-aec2-9d48dd... \n", - "3 attack-pattern--3c4a2599-71ee-4405-ba1e-0e2841... " + " description \\\n", + "0 (Citation: FireEye KEGTAP SINGLEMALT October 2... \n", + "1 (Citation: FireEye KEGTAP SINGLEMALT October 2... \n", + "2 (Citation: DFIR Ryuk's Return October 2020)(Ci... \n", + "3 (Citation: FireEye KEGTAP SINGLEMALT October 2... \n", + "\n", + " created_by_ref modified \\\n", + "0 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 2020-11-10T18:04:03.668Z \n", + "1 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 2020-11-10T18:04:03.666Z \n", + "2 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 2020-11-10T18:04:03.589Z \n", + "3 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 2020-11-10T18:04:03.571Z \n", + "\n", + " source_ref relationship_type \\\n", + "0 intrusion-set--dd2d9ca6-505b-4860-a604-233685b... uses \n", + "1 intrusion-set--dd2d9ca6-505b-4860-a604-233685b... uses \n", + "2 intrusion-set--dd2d9ca6-505b-4860-a604-233685b... uses \n", + "3 intrusion-set--dd2d9ca6-505b-4860-a604-233685b... uses \n", + "\n", + " target_ref \n", + "0 malware--a7881f21-e978-4fe4-af56-92c9416a2616 \n", + "1 tool--afc079f3-c0ea-4096-b75d-3f05338b7f60 \n", + "2 tool--b77b563c-34bb-4fb8-86a3-3694338f7b47 \n", + "3 tool--981acc4c-2ede-4b56-be6e-fa1a75f37acf " ] }, "execution_count": 30, @@ -1791,7 +1785,7 @@ "relationships = []\n", "for t in all_attack['relationships']:\n", " relationships.append(json.loads(t.serialize()))\n", - "df = json_normalize(relationships)\n", + "df = pandas.json_normalize(relationships)\n", "df[0:4]" ] }, @@ -1810,13 +1804,13 @@ { "data": { "text/plain": [ - "['created_by_ref',\n", - " 'description',\n", + "['object_marking_refs',\n", + " 'external_references',\n", + " 'id',\n", " 'type',\n", " 'created',\n", - " 'object_marking_refs',\n", - " 'id',\n", - " 'external_references',\n", + " 'description',\n", + " 'created_by_ref',\n", " 'modified',\n", " 'source_ref',\n", " 'relationship_type',\n", @@ -1847,19 +1841,34 @@ { "data": { "text/plain": [ - "{'created_by_ref': 'identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5',\n", - " 'description': '[Soft Cell](https://attack.mitre.org/groups/G0093) used Web shells and [HTRAN](https://attack.mitre.org/software/S0040) for C2 as well as to exfiltrate data.',\n", + "{'object_marking_refs': ['marking-definition--fa42a846-8d90-4e51-bc29-71d5b4802168'],\n", + " 'external_references': [{'source_name': 'FireEye KEGTAP SINGLEMALT October 2020',\n", + " 'description': 'Kimberly Goody, Jeremy Kennelly, Joshua Shilko, Steve Elovitz, Douglas Bienstock. (2020, October 28). Unhappy Hour Special: KEGTAP and SINGLEMALT With a Ransomware Chaser. Retrieved October 28, 2020.',\n", + " 'url': 'https://www.fireeye.com/blog/threat-research/2020/10/kegtap-and-singlemalt-with-a-ransomware-chaser.html'},\n", + " {'source_name': 'DHS/CISA Ransomware Targeting Healthcare October 2020',\n", + " 'description': 'DHS/CISA. (2020, October 28). Ransomware Activity Targeting the Healthcare and Public Health Sector. Retrieved October 28, 2020.',\n", + " 'url': 'https://us-cert.cisa.gov/ncas/alerts/aa20-302a'},\n", + " {'source_name': \"DFIR Ryuk's Return October 2020\",\n", + " 'description': 'The DFIR Report. (2020, October 8). Ryuk’s Return. Retrieved October 9, 2020.',\n", + " 'url': 'https://thedfirreport.com/2020/10/08/ryuks-return/'},\n", + " {'source_name': 'DFIR Ryuk 2 Hour Speed Run November 2020',\n", + " 'description': 'The DFIR Report. (2020, November 5). Ryuk Speed Run, 2 Hours to Ransom. Retrieved November 6, 2020.',\n", + " 'url': 'https://thedfirreport.com/2020/11/05/ryuk-speed-run-2-hours-to-ransom/'},\n", + " {'source_name': 'DFIR Ryuk in 5 Hours October 2020',\n", + " 'description': 'The DFIR Report. (2020, October 18). Ryuk in 5 Hours. Retrieved October 19, 2020.',\n", + " 'url': 'https://thedfirreport.com/2020/10/18/ryuk-in-5-hours/'},\n", + " {'source_name': 'Sophos New Ryuk Attack October 2020',\n", + " 'description': 'Sean Gallagher, Peter Mackenzie, Elida Leite, Syed Shahram, Bill Kearney, Anand Aijan, Sivagnanam Gn, Suraj Mundalik. (2020, October 14). They’re back: inside a new Ryuk ransomware attack. Retrieved October 14, 2020.',\n", + " 'url': 'https://news.sophos.com/en-us/2020/10/14/inside-a-new-ryuk-ransomware-attack/'}],\n", + " 'id': 'relationship--fcee0cef-7d5b-49da-928c-2a3d0cfd06b0',\n", " 'type': 'relationship',\n", - " 'created': '2019-07-22T15:49:28.744Z',\n", - " 'object_marking_refs': ['marking-definition--fa42a846-8d90-4e51-bc29-71d5b4802168'],\n", - " 'id': 'relationship--380743e5-616c-4524-96e6-d545e5b653ea',\n", - " 'external_references': [{'source_name': 'Cybereason Soft Cell June 2019',\n", - " 'description': 'Cybereason Nocturnus. (2019, June 25). Operation Soft Cell: A Worldwide Campaign Against Telecommunications Providers. Retrieved July 18, 2019.',\n", - " 'url': 'https://www.cybereason.com/blog/operation-soft-cell-a-worldwide-campaign-against-telecommunications-providers'}],\n", - " 'modified': '2019-07-22T15:49:28.744Z',\n", - " 'source_ref': 'intrusion-set--06a11b7e-2a36-47fe-8d3e-82c265df3258',\n", + " 'created': '2020-11-10T18:04:03.668Z',\n", + " 'description': \"(Citation: FireEye KEGTAP SINGLEMALT October 2020)(Citation: DHS/CISA Ransomware Targeting Healthcare October 2020)(Citation: DFIR Ryuk's Return October 2020)(Citation: DFIR Ryuk 2 Hour Speed Run November 2020)(Citation: DFIR Ryuk in 5 Hours October 2020)(Citation: Sophos New Ryuk Attack October 2020)\",\n", + " 'created_by_ref': 'identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5',\n", + " 'modified': '2020-11-10T18:04:03.668Z',\n", + " 'source_ref': 'intrusion-set--dd2d9ca6-505b-4860-a604-233685b802c7',\n", " 'relationship_type': 'uses',\n", - " 'target_ref': 'attack-pattern--92d7da27-2d91-488e-a00c-059dc162766d'}" + " 'target_ref': 'malware--a7881f21-e978-4fe4-af56-92c9416a2616'}" ] }, "execution_count": 32, @@ -1888,7 +1897,7 @@ "output_type": "stream", "text": [ "Number of Tactics in ATT&CK\n", - "40\n" + "54\n" ] } ], @@ -1924,69 +1933,74 @@ " \n", " \n", " created_by_ref\n", - " description\n", - " type\n", - " name\n", " object_marking_refs\n", - " id\n", " external_references\n", + " name\n", + " description\n", + " id\n", + " type\n", " modified\n", " created\n", " x_mitre_shortname\n", + " x_mitre_deprecated\n", " \n", " \n", " \n", " \n", " 0\n", " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", - " The adversary is trying to manipulate, interru...\n", - " x-mitre-tactic\n", - " Impact\n", " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", - " x-mitre-tactic--5569339b-94c2-49ee-afb3-222293...\n", - " [{'external_id': 'TA0040', 'source_name': 'mit...\n", - " 2019-07-25T18:42:23.222Z\n", - " 2019-03-14T18:44:44.639Z\n", - " impact\n", + " [{'external_id': 'TA0043', 'source_name': 'mit...\n", + " Reconnaissance\n", + " The adversary is trying to gather information ...\n", + " x-mitre-tactic--daa4cbb1-b4f4-4723-a824-7f1efd...\n", + " x-mitre-tactic\n", + " 2020-10-18T02:04:50.842Z\n", + " 2020-10-02T14:48:41.809Z\n", + " reconnaissance\n", + " NaN\n", " \n", " \n", " 1\n", " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", - " The adversary is trying to gather data of inte...\n", - " x-mitre-tactic\n", - " Collection\n", " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", - " x-mitre-tactic--d108ce10-2419-4cf9-a774-46161d...\n", - " [{'external_id': 'TA0009', 'source_name': 'mit...\n", - " 2019-07-19T17:44:53.176Z\n", - " 2018-10-17T00:14:20.652Z\n", - " collection\n", + " [{'external_id': 'TA0042', 'source_name': 'mit...\n", + " Resource Development\n", + " The adversary is trying to establish resources...\n", + " x-mitre-tactic--d679bca2-e57d-4935-8650-8031c8...\n", + " x-mitre-tactic\n", + " 2020-09-30T16:31:36.322Z\n", + " 2020-09-30T16:11:59.650Z\n", + " resource-development\n", + " NaN\n", " \n", " \n", " 2\n", " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", - " The adversary is trying to communicate with co...\n", - " x-mitre-tactic\n", - " Command and Control\n", " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", - " x-mitre-tactic--f72804c5-f15a-449e-a5da-2eecd1...\n", - " [{'external_id': 'TA0011', 'source_name': 'mit...\n", - " 2019-07-19T17:45:30.644Z\n", - " 2018-10-17T00:14:20.652Z\n", - " command-and-control\n", + " [{'external_id': 'TA0040', 'source_name': 'mit...\n", + " Impact\n", + " The adversary is trying to manipulate, interru...\n", + " x-mitre-tactic--5569339b-94c2-49ee-afb3-222293...\n", + " x-mitre-tactic\n", + " 2019-07-25T18:42:23.222Z\n", + " 2019-03-14T18:44:44.639Z\n", + " impact\n", + " NaN\n", " \n", " \n", " 3\n", " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", - " The adversary is trying to steal account names...\n", - " x-mitre-tactic\n", - " Credential Access\n", " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", - " x-mitre-tactic--2558fd61-8c75-4730-94c4-11926d...\n", - " [{'external_id': 'TA0006', 'source_name': 'mit...\n", - " 2019-07-19T17:43:41.967Z\n", + " [{'external_id': 'TA0005', 'url': 'https://att...\n", + " Defense Evasion\n", + " The adversary is trying to avoid being detecte...\n", + " x-mitre-tactic--78b23412-0651-46d7-a540-170a1c...\n", + " x-mitre-tactic\n", + " 2019-07-19T17:43:23.473Z\n", " 2018-10-17T00:14:20.652Z\n", - " credential-access\n", + " defense-evasion\n", + " NaN\n", " \n", " \n", "\n", @@ -1999,35 +2013,41 @@ "2 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", "3 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", "\n", - " description type \\\n", - "0 The adversary is trying to manipulate, interru... x-mitre-tactic \n", - "1 The adversary is trying to gather data of inte... x-mitre-tactic \n", - "2 The adversary is trying to communicate with co... x-mitre-tactic \n", - "3 The adversary is trying to steal account names... x-mitre-tactic \n", + " object_marking_refs \\\n", + "0 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", + "1 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", + "2 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", + "3 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", "\n", - " name object_marking_refs \\\n", - "0 Impact [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", - "1 Collection [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", - "2 Command and Control [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", - "3 Credential Access [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", + " external_references name \\\n", + "0 [{'external_id': 'TA0043', 'source_name': 'mit... Reconnaissance \n", + "1 [{'external_id': 'TA0042', 'source_name': 'mit... Resource Development \n", + "2 [{'external_id': 'TA0040', 'source_name': 'mit... Impact \n", + "3 [{'external_id': 'TA0005', 'url': 'https://att... Defense Evasion \n", "\n", - " id \\\n", - "0 x-mitre-tactic--5569339b-94c2-49ee-afb3-222293... \n", - "1 x-mitre-tactic--d108ce10-2419-4cf9-a774-46161d... \n", - "2 x-mitre-tactic--f72804c5-f15a-449e-a5da-2eecd1... \n", - "3 x-mitre-tactic--2558fd61-8c75-4730-94c4-11926d... \n", + " description \\\n", + "0 The adversary is trying to gather information ... \n", + "1 The adversary is trying to establish resources... \n", + "2 The adversary is trying to manipulate, interru... \n", + "3 The adversary is trying to avoid being detecte... \n", + "\n", + " id type \\\n", + "0 x-mitre-tactic--daa4cbb1-b4f4-4723-a824-7f1efd... x-mitre-tactic \n", + "1 x-mitre-tactic--d679bca2-e57d-4935-8650-8031c8... x-mitre-tactic \n", + "2 x-mitre-tactic--5569339b-94c2-49ee-afb3-222293... x-mitre-tactic \n", + "3 x-mitre-tactic--78b23412-0651-46d7-a540-170a1c... x-mitre-tactic \n", + "\n", + " modified created x_mitre_shortname \\\n", + "0 2020-10-18T02:04:50.842Z 2020-10-02T14:48:41.809Z reconnaissance \n", + "1 2020-09-30T16:31:36.322Z 2020-09-30T16:11:59.650Z resource-development \n", + "2 2019-07-25T18:42:23.222Z 2019-03-14T18:44:44.639Z impact \n", + "3 2019-07-19T17:43:23.473Z 2018-10-17T00:14:20.652Z defense-evasion \n", "\n", - " external_references \\\n", - "0 [{'external_id': 'TA0040', 'source_name': 'mit... \n", - "1 [{'external_id': 'TA0009', 'source_name': 'mit... \n", - "2 [{'external_id': 'TA0011', 'source_name': 'mit... \n", - "3 [{'external_id': 'TA0006', 'source_name': 'mit... \n", - "\n", - " modified created x_mitre_shortname \n", - "0 2019-07-25T18:42:23.222Z 2019-03-14T18:44:44.639Z impact \n", - "1 2019-07-19T17:44:53.176Z 2018-10-17T00:14:20.652Z collection \n", - "2 2019-07-19T17:45:30.644Z 2018-10-17T00:14:20.652Z command-and-control \n", - "3 2019-07-19T17:43:41.967Z 2018-10-17T00:14:20.652Z credential-access " + " x_mitre_deprecated \n", + "0 NaN \n", + "1 NaN \n", + "2 NaN \n", + "3 NaN " ] }, "execution_count": 34, @@ -2036,7 +2056,7 @@ } ], "source": [ - "df = json_normalize(all_attack['tactics'])\n", + "df = pandas.json_normalize(all_attack['tactics'])\n", "df[0:4]" ] }, @@ -2056,15 +2076,16 @@ "data": { "text/plain": [ "['created_by_ref',\n", - " 'description',\n", - " 'type',\n", - " 'name',\n", " 'object_marking_refs',\n", - " 'id',\n", " 'external_references',\n", + " 'name',\n", + " 'description',\n", + " 'id',\n", + " 'type',\n", " 'modified',\n", " 'created',\n", - " 'x_mitre_shortname']" + " 'x_mitre_shortname',\n", + " 'x_mitre_deprecated']" ] }, "execution_count": 35, @@ -2093,7 +2114,7 @@ "output_type": "stream", "text": [ "Number of Matrices in ATT&CK\n", - "4\n" + "5\n" ] } ], @@ -2128,117 +2149,122 @@ " \n", " \n", " \n", - " external_references\n", - " object_marking_refs\n", " id\n", - " name\n", - " created\n", - " modified\n", - " type\n", " created_by_ref\n", + " name\n", " description\n", + " external_references\n", + " object_marking_refs\n", + " type\n", " tactic_refs\n", + " modified\n", + " created\n", + " x_mitre_deprecated\n", " \n", " \n", " \n", " \n", " 0\n", - " [{'external_id': 'enterprise-attack', 'source_...\n", - " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", " x-mitre-matrix--eafc1b4c-5e56-4965-bd4e-66a6a8...\n", + " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", " Enterprise ATT&CK\n", - " 2018-10-17T00:14:20.652Z\n", - " 2019-04-16T21:39:18.247Z\n", + " Below are the tactics and technique representi...\n", + " [{'external_id': 'enterprise-attack', 'source_...\n", + " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", " x-mitre-matrix\n", - " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", - " The full ATT&CK Matrix includes techniques spa...\n", - " [x-mitre-tactic--ffd5bcee-6e16-4dd2-8eca-7b3be...\n", + " [x-mitre-tactic--daa4cbb1-b4f4-4723-a824-7f1ef...\n", + " 2020-10-27T02:27:31.332Z\n", + " 2018-10-17T00:14:20.652Z\n", + " NaN\n", " \n", " \n", " 1\n", - " [{'external_id': 'pre-attack', 'source_name': ...\n", - " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", " x-mitre-matrix--2e2c97c3-1908-4e2d-a711-a27d38...\n", + " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", " PRE-ATT&CK\n", - " 2018-10-17T00:14:20.652Z\n", - " 2018-11-06T19:05:34.143Z\n", + " This object is deprecated as its content has b...\n", + " [{'external_id': 'pre-attack', 'source_name': ...\n", + " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", " x-mitre-matrix\n", - " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", - " The MITRE PRE-ATT&CK Matrix™ is an overview of...\n", " [x-mitre-tactic--b2a086f2-d3db-408b-b4d4-e09a1...\n", + " 2020-10-22T15:43:48.844Z\n", + " 2018-10-17T00:14:20.652Z\n", + " True\n", " \n", " \n", " 2\n", - " [{'external_id': 'mobile-attack', 'source_name...\n", + " x-mitre-matrix--a382db5e-d009-4135-b893-0e0ff0...\n", + " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", + " Device Access\n", + " Below are the tactics and techniques represent...\n", + " [{'external_id': 'mobile-attack', 'url': 'http...\n", " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", - " x-mitre-matrix--5104d5f0-16b7-4aec-8ae3-0a90cd...\n", - " Network-Based Effects\n", - " 2018-10-17T00:14:20.652Z\n", - " 2018-10-17T00:14:20.652Z\n", " x-mitre-matrix\n", - " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", - " The MITRE ATT&CK Matrix™ provides a visual rep...\n", - " [x-mitre-tactic--9eb4c21e-4fa8-44c9-b167-dbfc4...\n", + " [x-mitre-tactic--0a93fd8e-4a83-4c15-8203-db290...\n", + " 2020-10-23T15:05:40.962Z\n", + " 2018-10-17T00:14:20.652Z\n", + " NaN\n", " \n", " \n", " 3\n", - " [{'external_id': 'mobile-attack', 'source_name...\n", + " x-mitre-matrix--5104d5f0-16b7-4aec-8ae3-0a90cd...\n", + " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", + " Network-Based Effects\n", + " Below are the tactics and techniques represent...\n", + " [{'external_id': 'mobile-attack', 'url': 'http...\n", " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", - " x-mitre-matrix--a382db5e-d009-4135-b893-0e0ff0...\n", - " Device Access\n", - " 2018-10-17T00:14:20.652Z\n", - " 2018-10-17T00:14:20.652Z\n", " x-mitre-matrix\n", - " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", - " The MITRE ATT&CK Matrix™ provides a visual rep...\n", - " [x-mitre-tactic--0a93fd8e-4a83-4c15-8203-db290...\n", + " [x-mitre-tactic--9eb4c21e-4fa8-44c9-b167-dbfc4...\n", + " 2020-07-02T14:18:17.535Z\n", + " 2018-10-17T00:14:20.652Z\n", + " NaN\n", " \n", " \n", "\n", "" ], "text/plain": [ - " external_references \\\n", - "0 [{'external_id': 'enterprise-attack', 'source_... \n", - "1 [{'external_id': 'pre-attack', 'source_name': ... \n", - "2 [{'external_id': 'mobile-attack', 'source_name... \n", - "3 [{'external_id': 'mobile-attack', 'source_name... \n", - "\n", - " object_marking_refs \\\n", - "0 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", - "1 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", - "2 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", - "3 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", + " id \\\n", + "0 x-mitre-matrix--eafc1b4c-5e56-4965-bd4e-66a6a8... \n", + "1 x-mitre-matrix--2e2c97c3-1908-4e2d-a711-a27d38... \n", + "2 x-mitre-matrix--a382db5e-d009-4135-b893-0e0ff0... \n", + "3 x-mitre-matrix--5104d5f0-16b7-4aec-8ae3-0a90cd... \n", "\n", - " id name \\\n", - "0 x-mitre-matrix--eafc1b4c-5e56-4965-bd4e-66a6a8... Enterprise ATT&CK \n", - "1 x-mitre-matrix--2e2c97c3-1908-4e2d-a711-a27d38... PRE-ATT&CK \n", - "2 x-mitre-matrix--5104d5f0-16b7-4aec-8ae3-0a90cd... Network-Based Effects \n", - "3 x-mitre-matrix--a382db5e-d009-4135-b893-0e0ff0... Device Access \n", + " created_by_ref name \\\n", + "0 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 Enterprise ATT&CK \n", + "1 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 PRE-ATT&CK \n", + "2 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 Device Access \n", + "3 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 Network-Based Effects \n", "\n", - " created modified type \\\n", - "0 2018-10-17T00:14:20.652Z 2019-04-16T21:39:18.247Z x-mitre-matrix \n", - "1 2018-10-17T00:14:20.652Z 2018-11-06T19:05:34.143Z x-mitre-matrix \n", - "2 2018-10-17T00:14:20.652Z 2018-10-17T00:14:20.652Z x-mitre-matrix \n", - "3 2018-10-17T00:14:20.652Z 2018-10-17T00:14:20.652Z x-mitre-matrix \n", + " description \\\n", + "0 Below are the tactics and technique representi... \n", + "1 This object is deprecated as its content has b... \n", + "2 Below are the tactics and techniques represent... \n", + "3 Below are the tactics and techniques represent... \n", "\n", - " created_by_ref \\\n", - "0 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", - "1 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", - "2 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", - "3 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", + " external_references \\\n", + "0 [{'external_id': 'enterprise-attack', 'source_... \n", + "1 [{'external_id': 'pre-attack', 'source_name': ... \n", + "2 [{'external_id': 'mobile-attack', 'url': 'http... \n", + "3 [{'external_id': 'mobile-attack', 'url': 'http... \n", "\n", - " description \\\n", - "0 The full ATT&CK Matrix includes techniques spa... \n", - "1 The MITRE PRE-ATT&CK Matrix™ is an overview of... \n", - "2 The MITRE ATT&CK Matrix™ provides a visual rep... \n", - "3 The MITRE ATT&CK Matrix™ provides a visual rep... \n", - "\n", - " tactic_refs \n", - "0 [x-mitre-tactic--ffd5bcee-6e16-4dd2-8eca-7b3be... \n", - "1 [x-mitre-tactic--b2a086f2-d3db-408b-b4d4-e09a1... \n", - "2 [x-mitre-tactic--9eb4c21e-4fa8-44c9-b167-dbfc4... \n", - "3 [x-mitre-tactic--0a93fd8e-4a83-4c15-8203-db290... " + " object_marking_refs type \\\n", + "0 [marking-definition--fa42a846-8d90-4e51-bc29-7... x-mitre-matrix \n", + "1 [marking-definition--fa42a846-8d90-4e51-bc29-7... x-mitre-matrix \n", + "2 [marking-definition--fa42a846-8d90-4e51-bc29-7... x-mitre-matrix \n", + "3 [marking-definition--fa42a846-8d90-4e51-bc29-7... x-mitre-matrix \n", + "\n", + " tactic_refs \\\n", + "0 [x-mitre-tactic--daa4cbb1-b4f4-4723-a824-7f1ef... \n", + "1 [x-mitre-tactic--b2a086f2-d3db-408b-b4d4-e09a1... \n", + "2 [x-mitre-tactic--0a93fd8e-4a83-4c15-8203-db290... \n", + "3 [x-mitre-tactic--9eb4c21e-4fa8-44c9-b167-dbfc4... \n", + "\n", + " modified created x_mitre_deprecated \n", + "0 2020-10-27T02:27:31.332Z 2018-10-17T00:14:20.652Z NaN \n", + "1 2020-10-22T15:43:48.844Z 2018-10-17T00:14:20.652Z True \n", + "2 2020-10-23T15:05:40.962Z 2018-10-17T00:14:20.652Z NaN \n", + "3 2020-07-02T14:18:17.535Z 2018-10-17T00:14:20.652Z NaN " ] }, "execution_count": 37, @@ -2247,7 +2273,7 @@ } ], "source": [ - "df = json_normalize(all_attack['matrix'])\n", + "df = pandas.json_normalize(all_attack['matrix'])\n", "df[0:4]" ] }, @@ -2266,16 +2292,17 @@ { "data": { "text/plain": [ - "['external_references',\n", - " 'object_marking_refs',\n", - " 'id',\n", - " 'name',\n", - " 'created',\n", - " 'modified',\n", - " 'type',\n", + "['id',\n", " 'created_by_ref',\n", + " 'name',\n", " 'description',\n", - " 'tactic_refs']" + " 'external_references',\n", + " 'object_marking_refs',\n", + " 'type',\n", + " 'tactic_refs',\n", + " 'modified',\n", + " 'created',\n", + " 'x_mitre_deprecated']" ] }, "execution_count": 38, @@ -2313,7 +2340,7 @@ "output_type": "stream", "text": [ "Number of Techniques in Enterprise ATT&CK\n", - "244\n" + "665\n" ] } ], @@ -2348,49 +2375,49 @@ " \n", " \n", " \n", - " external_references\n", + " id\n", + " description\n", + " name\n", + " created_by_ref\n", " object_marking_refs\n", + " external_references\n", " type\n", - " modified\n", - " created_by_ref\n", " kill_chain_phases\n", - " id\n", - " name\n", + " modified\n", " created\n", - " description\n", " ...\n", - " x_mitre_data_sources\n", - " x_mitre_detection\n", - " x_mitre_platforms\n", - " x_mitre_version\n", - " x_mitre_system_requirements\n", + " x_mitre_permissions_required\n", " x_mitre_defense_bypassed\n", - " x_mitre_impact_type\n", - " x_mitre_remote_support\n", - " x_mitre_effective_permissions\n", + " x_mitre_contributors\n", + " x_mitre_system_requirements\n", " x_mitre_network_requirements\n", + " x_mitre_effective_permissions\n", + " x_mitre_remote_support\n", + " x_mitre_impact_type\n", + " revoked\n", + " x_mitre_deprecated\n", " \n", " \n", " \n", " \n", " 0\n", - " [{'external_id': 'T1500', 'source_name': 'mitr...\n", + " attack-pattern--818302b2-d640-477b-bf88-873120...\n", + " Adversaries may abuse scripting or built-in co...\n", + " Network Device CLI\n", + " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", + " [{'source_name': 'mitre-attack', 'external_id'...\n", " attack-pattern\n", - " 2019-04-29T21:13:49.686Z\n", - " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", - " [{'phase_name': 'defense-evasion', 'kill_chain...\n", - " attack-pattern--cf7b3a06-8b42-4c33-bbe9-012120...\n", - " Compile After Delivery\n", - " 2019-04-25T20:53:07.719Z\n", - " Adversaries may attempt to make payloads diffi...\n", + " [{'kill_chain_name': 'mitre-attack', 'phase_na...\n", + " 2020-10-22T16:43:38.388Z\n", + " 2020-10-20T00:09:33.072Z\n", " ...\n", - " [Process command-line parameters, Process moni...\n", - " Monitor the execution file paths and command-l...\n", - " [Linux, macOS, Windows]\n", - " 1.0\n", - " [Compiler software (either native to the syste...\n", - " [Static File Analysis, Binary Analysis, Anti-v...\n", + " [Administrator, User]\n", + " NaN\n", + " NaN\n", + " NaN\n", + " NaN\n", + " NaN\n", " NaN\n", " NaN\n", " NaN\n", @@ -2398,21 +2425,21 @@ " \n", " \n", " 1\n", - " [{'external_id': 'T1501', 'source_name': 'mitr...\n", + " attack-pattern--52759bf1-fe12-4052-ace6-c5b0cf...\n", + " Adversaries may access network configuration f...\n", + " Network Device Configuration Dump\n", + " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", + " [{'source_name': 'mitre-attack', 'external_id'...\n", " attack-pattern\n", - " 2019-04-29T14:14:08.450Z\n", - " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", - " [{'phase_name': 'persistence', 'kill_chain_nam...\n", - " attack-pattern--0fff2797-19cb-41ea-a5f1-8a9303...\n", - " Systemd Service\n", - " 2019-04-23T15:34:30.008Z\n", - " Systemd services can be used to establish pers...\n", + " [{'kill_chain_name': 'mitre-attack', 'phase_na...\n", + " 2020-10-22T01:45:55.144Z\n", + " 2020-10-20T00:08:21.745Z\n", " ...\n", - " [Process command-line parameters, Process moni...\n", - " Systemd service unit files may be detected by ...\n", - " [Linux]\n", - " 1.0\n", + " [Administrator]\n", + " NaN\n", + " NaN\n", + " NaN\n", " NaN\n", " NaN\n", " NaN\n", @@ -2422,47 +2449,47 @@ " \n", " \n", " 2\n", - " [{'external_id': 'T1499', 'source_name': 'mitr...\n", + " attack-pattern--28abec6c-4443-4b03-8206-07f2e2...\n", + " Adversaries may abuse netbooting to load an un...\n", + " TFTP Boot\n", + " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", + " [{'source_name': 'mitre-attack', 'external_id'...\n", " attack-pattern\n", - " 2019-04-29T13:20:36.795Z\n", - " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", - " [{'phase_name': 'impact', 'kill_chain_name': '...\n", - " attack-pattern--c675646d-e204-4aa8-978d-e3d6d6...\n", - " Endpoint Denial of Service\n", - " 2019-04-18T11:00:55.862Z\n", - " Adversaries may perform Endpoint Denial of Ser...\n", + " [{'kill_chain_name': 'mitre-attack', 'phase_na...\n", + " 2020-10-22T16:35:53.806Z\n", + " 2020-10-20T00:06:56.180Z\n", " ...\n", - " [SSL/TLS inspection, Web logs, Web application...\n", - " Detection of Endpoint DoS can sometimes be ach...\n", - " [Linux, macOS, Windows]\n", - " 1.0\n", + " [Administrator]\n", + " NaN\n", + " NaN\n", + " NaN\n", + " NaN\n", " NaN\n", " NaN\n", - " [Availability]\n", " NaN\n", " NaN\n", " NaN\n", " \n", " \n", " 3\n", - " [{'external_id': 'T1497', 'source_name': 'mitr...\n", + " attack-pattern--a6557c75-798f-42e4-be70-ab4502...\n", + " Adversaries may abuse the ROM Monitor (ROMMON)...\n", + " ROMMONkit\n", + " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", + " [{'source_name': 'mitre-attack', 'external_id'...\n", " attack-pattern\n", - " 2019-06-10T17:37:37.138Z\n", - " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", - " [{'phase_name': 'defense-evasion', 'kill_chain...\n", - " attack-pattern--82caa33e-d11a-433a-94ea-9b5a5f...\n", - " Virtualization/Sandbox Evasion\n", - " 2019-04-17T22:22:24.505Z\n", - " Adversaries may check for the presence of a vi...\n", + " [{'kill_chain_name': 'mitre-attack', 'phase_na...\n", + " 2020-10-22T02:18:19.568Z\n", + " 2020-10-20T00:05:48.790Z\n", " ...\n", - " [Process monitoring, Process command-line para...\n", - " Virtualization, sandbox, and related discovery...\n", - " [Windows]\n", - " 1.0\n", + " [Administrator]\n", + " NaN\n", + " NaN\n", + " NaN\n", + " NaN\n", " NaN\n", - " [Anti-virus, Host forensic analysis, Signature...\n", " NaN\n", " NaN\n", " NaN\n", @@ -2470,89 +2497,83 @@ " \n", " \n", "\n", - "

4 rows × 22 columns

\n", + "

4 rows × 25 columns

\n", "" ], "text/plain": [ - " external_references \\\n", - "0 [{'external_id': 'T1500', 'source_name': 'mitr... \n", - "1 [{'external_id': 'T1501', 'source_name': 'mitr... \n", - "2 [{'external_id': 'T1499', 'source_name': 'mitr... \n", - "3 [{'external_id': 'T1497', 'source_name': 'mitr... \n", + " id \\\n", + "0 attack-pattern--818302b2-d640-477b-bf88-873120... \n", + "1 attack-pattern--52759bf1-fe12-4052-ace6-c5b0cf... \n", + "2 attack-pattern--28abec6c-4443-4b03-8206-07f2e2... \n", + "3 attack-pattern--a6557c75-798f-42e4-be70-ab4502... \n", "\n", - " object_marking_refs type \\\n", - "0 [marking-definition--fa42a846-8d90-4e51-bc29-7... attack-pattern \n", - "1 [marking-definition--fa42a846-8d90-4e51-bc29-7... attack-pattern \n", - "2 [marking-definition--fa42a846-8d90-4e51-bc29-7... attack-pattern \n", - "3 [marking-definition--fa42a846-8d90-4e51-bc29-7... attack-pattern \n", + " description \\\n", + "0 Adversaries may abuse scripting or built-in co... \n", + "1 Adversaries may access network configuration f... \n", + "2 Adversaries may abuse netbooting to load an un... \n", + "3 Adversaries may abuse the ROM Monitor (ROMMON)... \n", "\n", - " modified created_by_ref \\\n", - "0 2019-04-29T21:13:49.686Z identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", - "1 2019-04-29T14:14:08.450Z identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", - "2 2019-04-29T13:20:36.795Z identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", - "3 2019-06-10T17:37:37.138Z identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", + " name \\\n", + "0 Network Device CLI \n", + "1 Network Device Configuration Dump \n", + "2 TFTP Boot \n", + "3 ROMMONkit \n", "\n", - " kill_chain_phases \\\n", - "0 [{'phase_name': 'defense-evasion', 'kill_chain... \n", - "1 [{'phase_name': 'persistence', 'kill_chain_nam... \n", - "2 [{'phase_name': 'impact', 'kill_chain_name': '... \n", - "3 [{'phase_name': 'defense-evasion', 'kill_chain... \n", + " created_by_ref \\\n", + "0 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", + "1 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", + "2 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", + "3 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", "\n", - " id \\\n", - "0 attack-pattern--cf7b3a06-8b42-4c33-bbe9-012120... \n", - "1 attack-pattern--0fff2797-19cb-41ea-a5f1-8a9303... \n", - "2 attack-pattern--c675646d-e204-4aa8-978d-e3d6d6... \n", - "3 attack-pattern--82caa33e-d11a-433a-94ea-9b5a5f... \n", - "\n", - " name created \\\n", - "0 Compile After Delivery 2019-04-25T20:53:07.719Z \n", - "1 Systemd Service 2019-04-23T15:34:30.008Z \n", - "2 Endpoint Denial of Service 2019-04-18T11:00:55.862Z \n", - "3 Virtualization/Sandbox Evasion 2019-04-17T22:22:24.505Z \n", - "\n", - " description ... \\\n", - "0 Adversaries may attempt to make payloads diffi... ... \n", - "1 Systemd services can be used to establish pers... ... \n", - "2 Adversaries may perform Endpoint Denial of Ser... ... \n", - "3 Adversaries may check for the presence of a vi... ... \n", - "\n", - " x_mitre_data_sources \\\n", - "0 [Process command-line parameters, Process moni... \n", - "1 [Process command-line parameters, Process moni... \n", - "2 [SSL/TLS inspection, Web logs, Web application... \n", - "3 [Process monitoring, Process command-line para... \n", - "\n", - " x_mitre_detection x_mitre_platforms \\\n", - "0 Monitor the execution file paths and command-l... [Linux, macOS, Windows] \n", - "1 Systemd service unit files may be detected by ... [Linux] \n", - "2 Detection of Endpoint DoS can sometimes be ach... [Linux, macOS, Windows] \n", - "3 Virtualization, sandbox, and related discovery... [Windows] \n", - "\n", - " x_mitre_version x_mitre_system_requirements \\\n", - "0 1.0 [Compiler software (either native to the syste... \n", - "1 1.0 NaN \n", - "2 1.0 NaN \n", - "3 1.0 NaN \n", - "\n", - " x_mitre_defense_bypassed x_mitre_impact_type \\\n", - "0 [Static File Analysis, Binary Analysis, Anti-v... NaN \n", - "1 NaN NaN \n", - "2 NaN [Availability] \n", - "3 [Anti-virus, Host forensic analysis, Signature... NaN \n", - "\n", - " x_mitre_remote_support x_mitre_effective_permissions \\\n", - "0 NaN NaN \n", - "1 NaN NaN \n", - "2 NaN NaN \n", - "3 NaN NaN \n", - "\n", - " x_mitre_network_requirements \n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "\n", - "[4 rows x 22 columns]" + " object_marking_refs \\\n", + "0 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", + "1 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", + "2 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", + "3 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", + "\n", + " external_references type \\\n", + "0 [{'source_name': 'mitre-attack', 'external_id'... attack-pattern \n", + "1 [{'source_name': 'mitre-attack', 'external_id'... attack-pattern \n", + "2 [{'source_name': 'mitre-attack', 'external_id'... attack-pattern \n", + "3 [{'source_name': 'mitre-attack', 'external_id'... attack-pattern \n", + "\n", + " kill_chain_phases \\\n", + "0 [{'kill_chain_name': 'mitre-attack', 'phase_na... \n", + "1 [{'kill_chain_name': 'mitre-attack', 'phase_na... \n", + "2 [{'kill_chain_name': 'mitre-attack', 'phase_na... \n", + "3 [{'kill_chain_name': 'mitre-attack', 'phase_na... \n", + "\n", + " modified created ... \\\n", + "0 2020-10-22T16:43:38.388Z 2020-10-20T00:09:33.072Z ... \n", + "1 2020-10-22T01:45:55.144Z 2020-10-20T00:08:21.745Z ... \n", + "2 2020-10-22T16:35:53.806Z 2020-10-20T00:06:56.180Z ... \n", + "3 2020-10-22T02:18:19.568Z 2020-10-20T00:05:48.790Z ... \n", + "\n", + " x_mitre_permissions_required x_mitre_defense_bypassed x_mitre_contributors \\\n", + "0 [Administrator, User] NaN NaN \n", + "1 [Administrator] NaN NaN \n", + "2 [Administrator] NaN NaN \n", + "3 [Administrator] NaN NaN \n", + "\n", + " x_mitre_system_requirements x_mitre_network_requirements \\\n", + "0 NaN NaN \n", + "1 NaN NaN \n", + "2 NaN NaN \n", + "3 NaN NaN \n", + "\n", + " x_mitre_effective_permissions x_mitre_remote_support x_mitre_impact_type \\\n", + "0 NaN NaN NaN \n", + "1 NaN NaN NaN \n", + "2 NaN NaN NaN \n", + "3 NaN NaN NaN \n", + "\n", + " revoked x_mitre_deprecated \n", + "0 NaN NaN \n", + "1 NaN NaN \n", + "2 NaN NaN \n", + "3 NaN NaN \n", + "\n", + "[4 rows x 25 columns]" ] }, "execution_count": 40, @@ -2564,7 +2585,7 @@ "techniques = []\n", "for t in all_enterprise['techniques']:\n", " techniques.append(json.loads(t.serialize()))\n", - "df = json_normalize(techniques)\n", + "df = pandas.json_normalize(techniques)\n", "df[0:4]" ] }, @@ -2585,7 +2606,7 @@ "output_type": "stream", "text": [ "Number of Mitigations in Enterprise ATT&CK\n", - "281\n" + "267\n" ] } ], @@ -2621,87 +2642,93 @@ " \n", " \n", " created_by_ref\n", + " object_marking_refs\n", + " external_references\n", " description\n", - " type\n", " name\n", - " object_marking_refs\n", " id\n", - " external_references\n", + " type\n", " modified\n", " created\n", " x_mitre_version\n", " x_mitre_deprecated\n", + " x_mitre_old_attack_id\n", " \n", " \n", " \n", " \n", " 0\n", " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", - " This category is to associate techniques that ...\n", + " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", + " [{'source_name': 'mitre-attack', 'external_id'...\n", + " This category is used for any applicable mitig...\n", + " Pre-compromise\n", + " course-of-action--78bb71be-92b4-46de-acd6-5f99...\n", " course-of-action\n", - " Do Not Mitigate\n", + " 2020-10-20T19:52:32.439Z\n", + " 2020-10-19T14:57:58.771Z\n", + " 1.0\n", + " NaN\n", + " NaN\n", + " \n", + " \n", + " 1\n", + " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", + " [{'source_name': 'mitre-attack', 'external_id'...\n", + " This category is to associate techniques that ...\n", + " Do Not Mitigate\n", " course-of-action--787fb64d-c87b-4ee5-a341-0ef1...\n", - " [{'external_id': 'M1055', 'source_name': 'mitr...\n", + " course-of-action\n", " 2019-07-23T14:44:24.727Z\n", " 2019-07-19T14:58:42.715Z\n", " 1.0\n", " NaN\n", + " NaN\n", " \n", " \n", - " 1\n", + " 2\n", " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", + " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", + " [{'source_name': 'mitre-attack', 'external_id'...\n", " Implement configuration changes to software (o...\n", - " course-of-action\n", " Software Configuration\n", - " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", " course-of-action--b5dbb4c5-b0b1-40b1-80b6-e9e8...\n", - " [{'external_id': 'M1054', 'source_name': 'mitr...\n", - " 2019-07-19T14:57:15.656Z\n", + " course-of-action\n", + " 2020-03-31T13:11:09.471Z\n", " 2019-07-19T14:40:23.529Z\n", - " 1.0\n", + " 1.1\n", + " NaN\n", " NaN\n", " \n", " \n", - " 2\n", + " 3\n", " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", + " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", + " [{'source_name': 'mitre-attack', 'external_id'...\n", " Take and store data backups from end user syst...\n", - " course-of-action\n", " Data Backup\n", - " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", " course-of-action--3efe43d1-6f3f-4fcb-ab39-4a73...\n", - " [{'external_id': 'M1053', 'source_name': 'mitr...\n", - " 2019-07-19T14:33:33.543Z\n", + " course-of-action\n", + " 2020-03-31T13:11:28.201Z\n", " 2019-07-19T14:33:33.543Z\n", - " 1.0\n", + " 1.1\n", + " NaN\n", " NaN\n", " \n", " \n", - " 3\n", + " 4\n", " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", + " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", + " [{'source_name': 'mitre-attack', 'external_id'...\n", " Configure Windows User Account Control to miti...\n", - " course-of-action\n", " User Account Control\n", - " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", " course-of-action--2c2ad92a-d710-41ab-a996-1db1...\n", - " [{'external_id': 'M1052', 'source_name': 'mitr...\n", - " 2019-06-11T17:14:35.170Z\n", + " course-of-action\n", + " 2020-03-31T13:49:49.636Z\n", " 2019-06-11T17:14:35.170Z\n", - " 1.0\n", + " 1.1\n", " NaN\n", - " \n", - " \n", - " 4\n", - " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", - " Perform regular software updates to mitigate e...\n", - " course-of-action\n", - " Update Software\n", - " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", - " course-of-action--e5d930e9-775a-40ad-9bdb-b941...\n", - " [{'external_id': 'M1051', 'source_name': 'mitr...\n", - " 2019-06-11T17:12:55.207Z\n", - " 2019-06-11T17:12:55.207Z\n", - " 1.0\n", " NaN\n", " \n", " \n", @@ -2716,47 +2743,47 @@ "3 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", "4 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", "\n", - " description type \\\n", - "0 This category is to associate techniques that ... course-of-action \n", - "1 Implement configuration changes to software (o... course-of-action \n", - "2 Take and store data backups from end user syst... course-of-action \n", - "3 Configure Windows User Account Control to miti... course-of-action \n", - "4 Perform regular software updates to mitigate e... course-of-action \n", - "\n", - " name object_marking_refs \\\n", - "0 Do Not Mitigate [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", - "1 Software Configuration [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", - "2 Data Backup [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", - "3 User Account Control [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", - "4 Update Software [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", - "\n", - " id \\\n", - "0 course-of-action--787fb64d-c87b-4ee5-a341-0ef1... \n", - "1 course-of-action--b5dbb4c5-b0b1-40b1-80b6-e9e8... \n", - "2 course-of-action--3efe43d1-6f3f-4fcb-ab39-4a73... \n", - "3 course-of-action--2c2ad92a-d710-41ab-a996-1db1... \n", - "4 course-of-action--e5d930e9-775a-40ad-9bdb-b941... \n", + " object_marking_refs \\\n", + "0 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", + "1 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", + "2 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", + "3 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", + "4 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", "\n", " external_references \\\n", - "0 [{'external_id': 'M1055', 'source_name': 'mitr... \n", - "1 [{'external_id': 'M1054', 'source_name': 'mitr... \n", - "2 [{'external_id': 'M1053', 'source_name': 'mitr... \n", - "3 [{'external_id': 'M1052', 'source_name': 'mitr... \n", - "4 [{'external_id': 'M1051', 'source_name': 'mitr... \n", + "0 [{'source_name': 'mitre-attack', 'external_id'... \n", + "1 [{'source_name': 'mitre-attack', 'external_id'... \n", + "2 [{'source_name': 'mitre-attack', 'external_id'... \n", + "3 [{'source_name': 'mitre-attack', 'external_id'... \n", + "4 [{'source_name': 'mitre-attack', 'external_id'... \n", + "\n", + " description name \\\n", + "0 This category is used for any applicable mitig... Pre-compromise \n", + "1 This category is to associate techniques that ... Do Not Mitigate \n", + "2 Implement configuration changes to software (o... Software Configuration \n", + "3 Take and store data backups from end user syst... Data Backup \n", + "4 Configure Windows User Account Control to miti... User Account Control \n", + "\n", + " id type \\\n", + "0 course-of-action--78bb71be-92b4-46de-acd6-5f99... course-of-action \n", + "1 course-of-action--787fb64d-c87b-4ee5-a341-0ef1... course-of-action \n", + "2 course-of-action--b5dbb4c5-b0b1-40b1-80b6-e9e8... course-of-action \n", + "3 course-of-action--3efe43d1-6f3f-4fcb-ab39-4a73... course-of-action \n", + "4 course-of-action--2c2ad92a-d710-41ab-a996-1db1... course-of-action \n", "\n", " modified created x_mitre_version \\\n", - "0 2019-07-23T14:44:24.727Z 2019-07-19T14:58:42.715Z 1.0 \n", - "1 2019-07-19T14:57:15.656Z 2019-07-19T14:40:23.529Z 1.0 \n", - "2 2019-07-19T14:33:33.543Z 2019-07-19T14:33:33.543Z 1.0 \n", - "3 2019-06-11T17:14:35.170Z 2019-06-11T17:14:35.170Z 1.0 \n", - "4 2019-06-11T17:12:55.207Z 2019-06-11T17:12:55.207Z 1.0 \n", + "0 2020-10-20T19:52:32.439Z 2020-10-19T14:57:58.771Z 1.0 \n", + "1 2019-07-23T14:44:24.727Z 2019-07-19T14:58:42.715Z 1.0 \n", + "2 2020-03-31T13:11:09.471Z 2019-07-19T14:40:23.529Z 1.1 \n", + "3 2020-03-31T13:11:28.201Z 2019-07-19T14:33:33.543Z 1.1 \n", + "4 2020-03-31T13:49:49.636Z 2019-06-11T17:14:35.170Z 1.1 \n", "\n", - " x_mitre_deprecated \n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN " + " x_mitre_deprecated x_mitre_old_attack_id \n", + "0 NaN NaN \n", + "1 NaN NaN \n", + "2 NaN NaN \n", + "3 NaN NaN \n", + "4 NaN NaN " ] }, "execution_count": 42, @@ -2768,7 +2795,7 @@ "mitigations = []\n", "for t in all_enterprise['mitigations']:\n", " mitigations.append(json.loads(t.serialize()))\n", - "df = json_normalize(mitigations)\n", + "df = pandas.json_normalize(mitigations)\n", "df[0:5]" ] }, @@ -2789,7 +2816,7 @@ "output_type": "stream", "text": [ "Number of Groups in Enterprise ATT&CK\n", - "93\n" + "110\n" ] } ], @@ -2825,15 +2852,15 @@ " \n", " \n", " created_by_ref\n", + " object_marking_refs\n", + " external_references\n", + " name\n", " description\n", - " aliases\n", + " type\n", " id\n", - " external_references\n", + " aliases\n", " modified\n", - " type\n", " created\n", - " object_marking_refs\n", - " name\n", " x_mitre_version\n", " x_mitre_contributors\n", " revoked\n", @@ -2843,31 +2870,31 @@ " \n", " 0\n", " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", - " Operation [Soft Cell](https://attack.mitre.org...\n", - " [Soft Cell]\n", - " intrusion-set--06a11b7e-2a36-47fe-8d3e-82c265d...\n", - " [{'external_id': 'G0093', 'source_name': 'mitr...\n", - " 2019-07-22T15:49:28.637Z\n", - " intrusion-set\n", - " 2019-07-18T20:47:50.050Z\n", " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", - " Soft Cell\n", + " [{'external_id': 'G0115', 'source_name': 'mitr...\n", + " GOLD SOUTHFIELD\n", + " [GOLD SOUTHFIELD](https://attack.mitre.org/gro...\n", + " intrusion-set\n", + " intrusion-set--c77c5576-ca19-42ed-a36f-4b4486a...\n", + " [GOLD SOUTHFIELD]\n", + " 2020-10-06T15:32:20.089Z\n", + " 2020-09-22T19:41:27.845Z\n", " 1.0\n", - " [Cybereason Nocturnus, @nocturnus]\n", + " NaN\n", " NaN\n", " \n", " \n", " 1\n", " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", - " [TA505](https://attack.mitre.org/groups/G0092)...\n", - " [TA505]\n", - " intrusion-set--7eda3dd8-b09b-4705-8090-c2ad9fb...\n", - " [{'external_id': 'G0092', 'source_name': 'mitr...\n", - " 2019-06-24T19:11:41.060Z\n", - " intrusion-set\n", - " 2019-05-28T15:54:17.213Z\n", " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", - " TA505\n", + " [{'external_id': 'G0114', 'source_name': 'mitr...\n", + " Chimera\n", + " [Chimera](https://attack.mitre.org/groups/G011...\n", + " intrusion-set\n", + " intrusion-set--8c1f0187-0826-4320-bddc-5f326cf...\n", + " [Chimera]\n", + " 2020-10-05T20:59:57.694Z\n", + " 2020-08-24T17:01:55.842Z\n", " 1.0\n", " NaN\n", " NaN\n", @@ -2875,33 +2902,33 @@ " \n", " 2\n", " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", - " [Silence](https://attack.mitre.org/groups/G009...\n", - " [Silence]\n", - " intrusion-set--d13c8a7f-740b-4efa-a232-de7d6bb...\n", - " [{'external_id': 'G0091', 'source_name': 'mitr...\n", - " 2019-07-16T16:12:09.085Z\n", - " intrusion-set\n", - " 2019-05-24T17:57:36.491Z\n", " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", - " Silence\n", + " [{'external_id': 'G0112', 'source_name': 'mitr...\n", + " Windshift\n", + " [Windshift](https://attack.mitre.org/groups/G0...\n", + " intrusion-set\n", + " intrusion-set--afec6dc3-a18e-4b62-b1a4-5510e1a...\n", + " [Windshift, Bahamut]\n", + " 2020-06-26T13:46:14.122Z\n", + " 2020-06-25T17:16:39.168Z\n", " 1.0\n", - " [Oleg Skulkin, Group-IB]\n", + " NaN\n", " NaN\n", " \n", " \n", " 3\n", " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", - " [WIRTE](https://attack.mitre.org/groups/G0090)...\n", - " [WIRTE]\n", - " intrusion-set--f8cb7b36-62ef-4488-8a6d-a7033e3...\n", - " [{'external_id': 'G0090', 'source_name': 'mitr...\n", - " 2019-06-20T15:30:38.517Z\n", - " intrusion-set\n", - " 2019-05-24T17:02:44.226Z\n", " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", - " WIRTE\n", + " [{'external_id': 'G0108', 'source_name': 'mitr...\n", + " Blue Mockingbird\n", + " [Blue Mockingbird](https://attack.mitre.org/gr...\n", + " intrusion-set\n", + " intrusion-set--73a80fab-2aa3-48e0-a4d0-3a48282...\n", + " [Blue Mockingbird]\n", + " 2020-06-25T13:59:09.596Z\n", + " 2020-05-26T20:09:39.139Z\n", " 1.0\n", - " [Lab52 by S2 Grupo]\n", + " [Tony Lambert, Red Canary]\n", " NaN\n", " \n", " \n", @@ -2915,41 +2942,41 @@ "2 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", "3 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", "\n", - " description aliases \\\n", - "0 Operation [Soft Cell](https://attack.mitre.org... [Soft Cell] \n", - "1 [TA505](https://attack.mitre.org/groups/G0092)... [TA505] \n", - "2 [Silence](https://attack.mitre.org/groups/G009... [Silence] \n", - "3 [WIRTE](https://attack.mitre.org/groups/G0090)... [WIRTE] \n", + " object_marking_refs \\\n", + "0 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", + "1 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", + "2 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", + "3 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", + "\n", + " external_references name \\\n", + "0 [{'external_id': 'G0115', 'source_name': 'mitr... GOLD SOUTHFIELD \n", + "1 [{'external_id': 'G0114', 'source_name': 'mitr... Chimera \n", + "2 [{'external_id': 'G0112', 'source_name': 'mitr... Windshift \n", + "3 [{'external_id': 'G0108', 'source_name': 'mitr... Blue Mockingbird \n", "\n", - " id \\\n", - "0 intrusion-set--06a11b7e-2a36-47fe-8d3e-82c265d... \n", - "1 intrusion-set--7eda3dd8-b09b-4705-8090-c2ad9fb... \n", - "2 intrusion-set--d13c8a7f-740b-4efa-a232-de7d6bb... \n", - "3 intrusion-set--f8cb7b36-62ef-4488-8a6d-a7033e3... \n", + " description type \\\n", + "0 [GOLD SOUTHFIELD](https://attack.mitre.org/gro... intrusion-set \n", + "1 [Chimera](https://attack.mitre.org/groups/G011... intrusion-set \n", + "2 [Windshift](https://attack.mitre.org/groups/G0... intrusion-set \n", + "3 [Blue Mockingbird](https://attack.mitre.org/gr... intrusion-set \n", "\n", - " external_references \\\n", - "0 [{'external_id': 'G0093', 'source_name': 'mitr... \n", - "1 [{'external_id': 'G0092', 'source_name': 'mitr... \n", - "2 [{'external_id': 'G0091', 'source_name': 'mitr... \n", - "3 [{'external_id': 'G0090', 'source_name': 'mitr... \n", - "\n", - " modified type created \\\n", - "0 2019-07-22T15:49:28.637Z intrusion-set 2019-07-18T20:47:50.050Z \n", - "1 2019-06-24T19:11:41.060Z intrusion-set 2019-05-28T15:54:17.213Z \n", - "2 2019-07-16T16:12:09.085Z intrusion-set 2019-05-24T17:57:36.491Z \n", - "3 2019-06-20T15:30:38.517Z intrusion-set 2019-05-24T17:02:44.226Z \n", - "\n", - " object_marking_refs name \\\n", - "0 [marking-definition--fa42a846-8d90-4e51-bc29-7... Soft Cell \n", - "1 [marking-definition--fa42a846-8d90-4e51-bc29-7... TA505 \n", - "2 [marking-definition--fa42a846-8d90-4e51-bc29-7... Silence \n", - "3 [marking-definition--fa42a846-8d90-4e51-bc29-7... WIRTE \n", - "\n", - " x_mitre_version x_mitre_contributors revoked \n", - "0 1.0 [Cybereason Nocturnus, @nocturnus] NaN \n", - "1 1.0 NaN NaN \n", - "2 1.0 [Oleg Skulkin, Group-IB] NaN \n", - "3 1.0 [Lab52 by S2 Grupo] NaN " + " id aliases \\\n", + "0 intrusion-set--c77c5576-ca19-42ed-a36f-4b4486a... [GOLD SOUTHFIELD] \n", + "1 intrusion-set--8c1f0187-0826-4320-bddc-5f326cf... [Chimera] \n", + "2 intrusion-set--afec6dc3-a18e-4b62-b1a4-5510e1a... [Windshift, Bahamut] \n", + "3 intrusion-set--73a80fab-2aa3-48e0-a4d0-3a48282... [Blue Mockingbird] \n", + "\n", + " modified created x_mitre_version \\\n", + "0 2020-10-06T15:32:20.089Z 2020-09-22T19:41:27.845Z 1.0 \n", + "1 2020-10-05T20:59:57.694Z 2020-08-24T17:01:55.842Z 1.0 \n", + "2 2020-06-26T13:46:14.122Z 2020-06-25T17:16:39.168Z 1.0 \n", + "3 2020-06-25T13:59:09.596Z 2020-05-26T20:09:39.139Z 1.0 \n", + "\n", + " x_mitre_contributors revoked \n", + "0 NaN NaN \n", + "1 NaN NaN \n", + "2 NaN NaN \n", + "3 [Tony Lambert, Red Canary] NaN " ] }, "execution_count": 44, @@ -2961,7 +2988,7 @@ "groups = []\n", "for t in all_enterprise['groups']:\n", " groups.append(json.loads(t.serialize()))\n", - "df = json_normalize(groups)\n", + "df = pandas.json_normalize(groups)\n", "df[0:4]" ] }, @@ -2982,7 +3009,7 @@ "output_type": "stream", "text": [ "Number of Malware objects in Enterprise ATT&CK\n", - "297\n" + "376\n" ] } ], @@ -3017,99 +3044,94 @@ " \n", " \n", " \n", + " external_references\n", + " object_marking_refs\n", " created_by_ref\n", " description\n", + " name\n", " id\n", - " external_references\n", - " object_marking_refs\n", - " modified\n", " type\n", - " created\n", - " name\n", " labels\n", + " modified\n", + " created\n", " x_mitre_version\n", - " x_mitre_platforms\n", " x_mitre_aliases\n", + " x_mitre_platforms\n", " x_mitre_contributors\n", " revoked\n", - " x_mitre_old_attack_id\n", " \n", " \n", " \n", " \n", " 0\n", - " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", - " [HyperBro ](https://attack.mitre.org/software/...\n", - " malware--5e814485-012d-423d-b769-026bfed0f451\n", - " [{'external_id': 'S0398', 'source_name': 'mitr...\n", + " [{'external_id': 'S0519', 'source_name': 'mitr...\n", " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", - " 2019-07-14T21:14:18.656Z\n", + " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", + " [SYNful Knock](https://attack.mitre.org/softwa...\n", + " SYNful Knock\n", + " malware--84c1ecc6-e5a2-4e8a-bf4b-651a618e0053\n", " malware\n", - " 2019-07-09T17:42:44.777Z\n", - " HyperBro\n", " [malware]\n", + " 2020-10-22T17:35:04.950Z\n", + " 2020-10-19T16:38:11.279Z\n", " 1.0\n", - " [Windows]\n", - " [HyperBro ]\n", - " NaN\n", + " [SYNful Knock]\n", + " [Network]\n", " NaN\n", " NaN\n", " \n", " \n", " 1\n", - " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", - " [LoJax](https://attack.mitre.org/software/S039...\n", - " malware--b865dded-0553-4962-a44b-6fe7863effed\n", - " [{'external_id': 'S0397', 'source_name': 'mitr...\n", + " [{'external_id': 'S0516', 'source_name': 'mitr...\n", " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", - " 2019-07-02T20:53:26.470Z\n", + " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", + " [SoreFang](https://attack.mitre.org/software/S...\n", + " SoreFang\n", + " malware--e33e4603-afab-402d-b2a1-248d435b5fe0\n", " malware\n", - " 2019-07-02T12:58:09.598Z\n", - " LoJax\n", " [malware]\n", + " 2020-10-06T16:10:42.422Z\n", + " 2020-09-29T19:33:35.122Z\n", " 1.0\n", + " [SoreFang]\n", " [Windows]\n", - " [LoJax]\n", - " [Jean-Ian Boutin, ESET]\n", " NaN\n", " NaN\n", " \n", " \n", " 2\n", - " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", - " [EvilBunny](https://attack.mitre.org/software/...\n", - " malware--a8a778f5-0035-4870-bb25-53dc05029586\n", - " [{'external_id': 'S0396', 'source_name': 'mitr...\n", + " [{'external_id': 'S0515', 'source_name': 'mitr...\n", " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", - " 2019-07-01T18:16:32.917Z\n", + " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", + " [WellMail](https://attack.mitre.org/software/S...\n", + " WellMail\n", + " malware--959f3b19-2dc8-48d5-8942-c66813a5101a\n", " malware\n", - " 2019-06-28T17:40:32.217Z\n", - " EvilBunny\n", " [malware]\n", + " 2020-10-09T15:38:41.755Z\n", + " 2020-09-29T17:48:27.517Z\n", " 1.0\n", + " [WellMail]\n", " [Windows]\n", - " [EvilBunny]\n", - " [ESET]\n", - " NaN\n", + " [Josh Campbell, Cyborg Security, @cyb0rgsecur1ty]\n", " NaN\n", " \n", " \n", " 3\n", - " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", - " [LightNeuron](https://attack.mitre.org/softwar...\n", - " malware--6ba1d7ae-d60b-43e6-9f08-a8b787e9d9cb\n", - " [{'external_id': 'S0395', 'source_name': 'mitr...\n", + " [{'external_id': 'S0514', 'source_name': 'mitr...\n", " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", - " 2019-07-16T17:12:00.360Z\n", + " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", + " [WellMess](https://attack.mitre.org/software/S...\n", + " WellMess\n", + " malware--3a4197ae-ec63-4162-907b-9a073d1157e4\n", " malware\n", - " 2019-06-28T13:09:26.710Z\n", - " LightNeuron\n", " [malware]\n", + " 2020-10-09T19:41:25.983Z\n", + " 2020-09-24T19:39:44.392Z\n", " 1.0\n", - " [Windows, Linux]\n", - " [LightNeuron]\n", - " NaN\n", - " NaN\n", + " [WellMess]\n", + " [Windows]\n", + " [Daniyal Naeem, @Mrdaniyalnaeem]\n", " NaN\n", " \n", " \n", @@ -3117,29 +3139,11 @@ "" ], "text/plain": [ - " created_by_ref \\\n", - "0 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", - "1 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", - "2 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", - "3 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", - "\n", - " description \\\n", - "0 [HyperBro ](https://attack.mitre.org/software/... \n", - "1 [LoJax](https://attack.mitre.org/software/S039... \n", - "2 [EvilBunny](https://attack.mitre.org/software/... \n", - "3 [LightNeuron](https://attack.mitre.org/softwar... \n", - "\n", - " id \\\n", - "0 malware--5e814485-012d-423d-b769-026bfed0f451 \n", - "1 malware--b865dded-0553-4962-a44b-6fe7863effed \n", - "2 malware--a8a778f5-0035-4870-bb25-53dc05029586 \n", - "3 malware--6ba1d7ae-d60b-43e6-9f08-a8b787e9d9cb \n", - "\n", " external_references \\\n", - "0 [{'external_id': 'S0398', 'source_name': 'mitr... \n", - "1 [{'external_id': 'S0397', 'source_name': 'mitr... \n", - "2 [{'external_id': 'S0396', 'source_name': 'mitr... \n", - "3 [{'external_id': 'S0395', 'source_name': 'mitr... \n", + "0 [{'external_id': 'S0519', 'source_name': 'mitr... \n", + "1 [{'external_id': 'S0516', 'source_name': 'mitr... \n", + "2 [{'external_id': 'S0515', 'source_name': 'mitr... \n", + "3 [{'external_id': 'S0514', 'source_name': 'mitr... \n", "\n", " object_marking_refs \\\n", "0 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", @@ -3147,23 +3151,41 @@ "2 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", "3 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", "\n", - " modified type created name \\\n", - "0 2019-07-14T21:14:18.656Z malware 2019-07-09T17:42:44.777Z HyperBro \n", - "1 2019-07-02T20:53:26.470Z malware 2019-07-02T12:58:09.598Z LoJax \n", - "2 2019-07-01T18:16:32.917Z malware 2019-06-28T17:40:32.217Z EvilBunny \n", - "3 2019-07-16T17:12:00.360Z malware 2019-06-28T13:09:26.710Z LightNeuron \n", - "\n", - " labels x_mitre_version x_mitre_platforms x_mitre_aliases \\\n", - "0 [malware] 1.0 [Windows] [HyperBro ] \n", - "1 [malware] 1.0 [Windows] [LoJax] \n", - "2 [malware] 1.0 [Windows] [EvilBunny] \n", - "3 [malware] 1.0 [Windows, Linux] [LightNeuron] \n", - "\n", - " x_mitre_contributors revoked x_mitre_old_attack_id \n", - "0 NaN NaN NaN \n", - "1 [Jean-Ian Boutin, ESET] NaN NaN \n", - "2 [ESET] NaN NaN \n", - "3 NaN NaN NaN " + " created_by_ref \\\n", + "0 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", + "1 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", + "2 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", + "3 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", + "\n", + " description name \\\n", + "0 [SYNful Knock](https://attack.mitre.org/softwa... SYNful Knock \n", + "1 [SoreFang](https://attack.mitre.org/software/S... SoreFang \n", + "2 [WellMail](https://attack.mitre.org/software/S... WellMail \n", + "3 [WellMess](https://attack.mitre.org/software/S... WellMess \n", + "\n", + " id type labels \\\n", + "0 malware--84c1ecc6-e5a2-4e8a-bf4b-651a618e0053 malware [malware] \n", + "1 malware--e33e4603-afab-402d-b2a1-248d435b5fe0 malware [malware] \n", + "2 malware--959f3b19-2dc8-48d5-8942-c66813a5101a malware [malware] \n", + "3 malware--3a4197ae-ec63-4162-907b-9a073d1157e4 malware [malware] \n", + "\n", + " modified created x_mitre_version \\\n", + "0 2020-10-22T17:35:04.950Z 2020-10-19T16:38:11.279Z 1.0 \n", + "1 2020-10-06T16:10:42.422Z 2020-09-29T19:33:35.122Z 1.0 \n", + "2 2020-10-09T15:38:41.755Z 2020-09-29T17:48:27.517Z 1.0 \n", + "3 2020-10-09T19:41:25.983Z 2020-09-24T19:39:44.392Z 1.0 \n", + "\n", + " x_mitre_aliases x_mitre_platforms \\\n", + "0 [SYNful Knock] [Network] \n", + "1 [SoreFang] [Windows] \n", + "2 [WellMail] [Windows] \n", + "3 [WellMess] [Windows] \n", + "\n", + " x_mitre_contributors revoked \n", + "0 NaN NaN \n", + "1 NaN NaN \n", + "2 [Josh Campbell, Cyborg Security, @cyb0rgsecur1ty] NaN \n", + "3 [Daniyal Naeem, @Mrdaniyalnaeem] NaN " ] }, "execution_count": 46, @@ -3175,7 +3197,7 @@ "malware = []\n", "for t in all_enterprise['malware']:\n", " malware.append(json.loads(t.serialize()))\n", - "df = json_normalize(malware)\n", + "df = pandas.json_normalize(malware)\n", "df[0:4]" ] }, @@ -3196,7 +3218,7 @@ "output_type": "stream", "text": [ "Number of Tools in Enterprise ATT&CK\n", - "56\n" + "62\n" ] } ], @@ -3231,143 +3253,137 @@ " \n", " \n", " \n", - " created_by_ref\n", - " description\n", " id\n", - " external_references\n", + " name\n", + " description\n", + " created_by_ref\n", " object_marking_refs\n", - " modified\n", + " external_references\n", " type\n", - " created\n", - " name\n", " labels\n", + " modified\n", + " created\n", " x_mitre_version\n", - " x_mitre_platforms\n", " x_mitre_aliases\n", + " x_mitre_platforms\n", " x_mitre_contributors\n", " \n", " \n", " \n", " \n", " 0\n", + " tool--975737f1-b10d-476f-8bda-3ec26ea57172\n", + " MCMD\n", + " [MCMD](https://attack.mitre.org/software/S0500...\n", " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", - " [PoshC2](https://attack.mitre.org/software/S03...\n", - " tool--4b57c098-f043-4da2-83ef-7588a6d426bc\n", - " [{'external_id': 'S0378', 'source_name': 'mitr...\n", " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", - " 2019-04-23T18:29:12.005Z\n", + " [{'external_id': 'S0500', 'source_name': 'mitr...\n", " tool\n", - " 2019-04-23T12:31:58.125Z\n", - " PoshC2\n", " [tool]\n", + " 2020-08-20T14:52:23.369Z\n", + " 2020-08-13T17:15:25.702Z\n", " 1.0\n", - " [Windows, Linux, macOS]\n", - " [PoshC2]\n", + " [MCMD]\n", + " [Windows]\n", " NaN\n", " \n", " \n", " 1\n", + " tool--c4810609-7da6-48ec-8057-1b70a7814db0\n", + " CrackMapExec\n", + " [CrackMapExec](https://attack.mitre.org/softwa...\n", " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", - " [RawDisk](https://attack.mitre.org/software/S0...\n", - " tool--3ffbdc1f-d2bf-41ab-91a2-c7b857e98079\n", - " [{'external_id': 'S0364', 'source_name': 'mitr...\n", " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", - " 2019-04-19T19:04:55.892Z\n", + " [{'external_id': 'S0488', 'source_name': 'mitr...\n", " tool\n", - " 2019-03-25T12:30:40.919Z\n", - " RawDisk\n", " [tool]\n", + " 2020-07-29T20:19:40.544Z\n", + " 2020-07-17T14:23:05.958Z\n", " 1.0\n", + " [CrackMapExec]\n", " [Windows]\n", - " [RawDisk]\n", " NaN\n", " \n", " \n", " 2\n", + " tool--5fc81b43-62b5-41b1-9113-c79ae5f030c4\n", + " CARROTBALL\n", + " [CARROTBALL](https://attack.mitre.org/software...\n", " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", - " [Empire](https://attack.mitre.org/software/S03...\n", - " tool--3433a9e8-1c47-4320-b9bf-ed449061d1c3\n", - " [{'external_id': 'S0363', 'source_name': 'mitr...\n", " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", - " 2019-06-24T17:15:43.818Z\n", + " [{'external_id': 'S0465', 'source_name': 'mitr...\n", " tool\n", - " 2019-03-11T14:13:40.648Z\n", - " Empire\n", " [tool]\n", + " 2020-06-10T14:44:23.055Z\n", + " 2020-06-02T19:10:29.513Z\n", " 1.0\n", - " [Linux, macOS, Windows]\n", - " [Empire, EmPyre, PowerShell Empire]\n", + " [CARROTBALL]\n", + " [Windows]\n", " NaN\n", " \n", " \n", " 3\n", + " tool--115f88dd-0618-4389-83cb-98d33ae81848\n", + " ShimRatReporter\n", + " [ShimRatReporter](https://attack.mitre.org/sof...\n", " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", - " [Expand](https://attack.mitre.org/software/S03...\n", - " tool--ca656c25-44f1-471b-9d9f-e2a3bbb84973\n", - " [{'external_id': 'S0361', 'source_name': 'mitr...\n", " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", - " 2019-04-19T18:52:30.033Z\n", + " [{'external_id': 'S0445', 'source_name': 'mitr...\n", " tool\n", - " 2019-02-19T19:17:14.971Z\n", - " Expand\n", " [tool]\n", + " 2020-05-27T22:39:28.701Z\n", + " 2020-05-12T21:29:48.294Z\n", " 1.0\n", + " [ShimRatReporter]\n", " [Windows]\n", - " [Expand]\n", - " [Matthew Demaske, Adaptforward]\n", + " NaN\n", " \n", " \n", "\n", "" ], "text/plain": [ + " id name \\\n", + "0 tool--975737f1-b10d-476f-8bda-3ec26ea57172 MCMD \n", + "1 tool--c4810609-7da6-48ec-8057-1b70a7814db0 CrackMapExec \n", + "2 tool--5fc81b43-62b5-41b1-9113-c79ae5f030c4 CARROTBALL \n", + "3 tool--115f88dd-0618-4389-83cb-98d33ae81848 ShimRatReporter \n", + "\n", + " description \\\n", + "0 [MCMD](https://attack.mitre.org/software/S0500... \n", + "1 [CrackMapExec](https://attack.mitre.org/softwa... \n", + "2 [CARROTBALL](https://attack.mitre.org/software... \n", + "3 [ShimRatReporter](https://attack.mitre.org/sof... \n", + "\n", " created_by_ref \\\n", "0 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", "1 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", "2 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", "3 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", "\n", - " description \\\n", - "0 [PoshC2](https://attack.mitre.org/software/S03... \n", - "1 [RawDisk](https://attack.mitre.org/software/S0... \n", - "2 [Empire](https://attack.mitre.org/software/S03... \n", - "3 [Expand](https://attack.mitre.org/software/S03... \n", - "\n", - " id \\\n", - "0 tool--4b57c098-f043-4da2-83ef-7588a6d426bc \n", - "1 tool--3ffbdc1f-d2bf-41ab-91a2-c7b857e98079 \n", - "2 tool--3433a9e8-1c47-4320-b9bf-ed449061d1c3 \n", - "3 tool--ca656c25-44f1-471b-9d9f-e2a3bbb84973 \n", - "\n", - " external_references \\\n", - "0 [{'external_id': 'S0378', 'source_name': 'mitr... \n", - "1 [{'external_id': 'S0364', 'source_name': 'mitr... \n", - "2 [{'external_id': 'S0363', 'source_name': 'mitr... \n", - "3 [{'external_id': 'S0361', 'source_name': 'mitr... \n", - "\n", " object_marking_refs \\\n", "0 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", "1 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", "2 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", "3 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", "\n", - " modified type created name labels \\\n", - "0 2019-04-23T18:29:12.005Z tool 2019-04-23T12:31:58.125Z PoshC2 [tool] \n", - "1 2019-04-19T19:04:55.892Z tool 2019-03-25T12:30:40.919Z RawDisk [tool] \n", - "2 2019-06-24T17:15:43.818Z tool 2019-03-11T14:13:40.648Z Empire [tool] \n", - "3 2019-04-19T18:52:30.033Z tool 2019-02-19T19:17:14.971Z Expand [tool] \n", - "\n", - " x_mitre_version x_mitre_platforms \\\n", - "0 1.0 [Windows, Linux, macOS] \n", - "1 1.0 [Windows] \n", - "2 1.0 [Linux, macOS, Windows] \n", - "3 1.0 [Windows] \n", - "\n", - " x_mitre_aliases x_mitre_contributors \n", - "0 [PoshC2] NaN \n", - "1 [RawDisk] NaN \n", - "2 [Empire, EmPyre, PowerShell Empire] NaN \n", - "3 [Expand] [Matthew Demaske, Adaptforward] " + " external_references type labels \\\n", + "0 [{'external_id': 'S0500', 'source_name': 'mitr... tool [tool] \n", + "1 [{'external_id': 'S0488', 'source_name': 'mitr... tool [tool] \n", + "2 [{'external_id': 'S0465', 'source_name': 'mitr... tool [tool] \n", + "3 [{'external_id': 'S0445', 'source_name': 'mitr... tool [tool] \n", + "\n", + " modified created x_mitre_version \\\n", + "0 2020-08-20T14:52:23.369Z 2020-08-13T17:15:25.702Z 1.0 \n", + "1 2020-07-29T20:19:40.544Z 2020-07-17T14:23:05.958Z 1.0 \n", + "2 2020-06-10T14:44:23.055Z 2020-06-02T19:10:29.513Z 1.0 \n", + "3 2020-05-27T22:39:28.701Z 2020-05-12T21:29:48.294Z 1.0 \n", + "\n", + " x_mitre_aliases x_mitre_platforms x_mitre_contributors \n", + "0 [MCMD] [Windows] NaN \n", + "1 [CrackMapExec] [Windows] NaN \n", + "2 [CARROTBALL] [Windows] NaN \n", + "3 [ShimRatReporter] [Windows] NaN " ] }, "execution_count": 48, @@ -3379,7 +3395,7 @@ "tools = []\n", "for t in all_enterprise['tools']:\n", " tools.append(json.loads(t.serialize()))\n", - "df = json_normalize(tools)\n", + "df = pandas.json_normalize(tools)\n", "df[0:4]" ] }, @@ -3400,7 +3416,7 @@ "output_type": "stream", "text": [ "Number of Relationships in Enterprise ATT&CK\n", - "5675\n" + "9263\n" ] } ], @@ -3435,13 +3451,13 @@ " \n", " \n", " \n", - " created_by_ref\n", - " description\n", - " type\n", - " created\n", " object_marking_refs\n", - " id\n", " external_references\n", + " id\n", + " type\n", + " created\n", + " description\n", + " created_by_ref\n", " modified\n", " source_ref\n", " relationship_type\n", @@ -3451,118 +3467,112 @@ " \n", " \n", " 0\n", - " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", - " [Soft Cell](https://attack.mitre.org/groups/G0...\n", - " relationship\n", - " 2019-07-22T15:49:28.744Z\n", " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", - " relationship--380743e5-616c-4524-96e6-d545e5b6...\n", - " [{'source_name': 'Cybereason Soft Cell June 20...\n", - " 2019-07-22T15:49:28.744Z\n", - " intrusion-set--06a11b7e-2a36-47fe-8d3e-82c265d...\n", + " [{'source_name': 'FireEye KEGTAP SINGLEMALT Oc...\n", + " relationship--fcee0cef-7d5b-49da-928c-2a3d0cfd...\n", + " relationship\n", + " 2020-11-10T18:04:03.668Z\n", + " (Citation: FireEye KEGTAP SINGLEMALT October 2...\n", + " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", + " 2020-11-10T18:04:03.668Z\n", + " intrusion-set--dd2d9ca6-505b-4860-a604-233685b...\n", " uses\n", - " attack-pattern--92d7da27-2d91-488e-a00c-059dc1...\n", + " malware--a7881f21-e978-4fe4-af56-92c9416a2616\n", " \n", " \n", " 1\n", - " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", - " [Soft Cell](https://attack.mitre.org/groups/G0...\n", - " relationship\n", - " 2019-07-22T15:35:24.376Z\n", " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", - " relationship--919f6143-eb8c-48cd-8741-118040c3...\n", - " [{'source_name': 'Cybereason Soft Cell June 20...\n", - " 2019-07-22T15:49:29.135Z\n", - " intrusion-set--06a11b7e-2a36-47fe-8d3e-82c265d...\n", + " [{'source_name': 'FireEye KEGTAP SINGLEMALT Oc...\n", + " relationship--c118e50b-4559-4bff-bde5-78aa426f...\n", + " relationship\n", + " 2020-11-10T18:04:03.666Z\n", + " (Citation: FireEye KEGTAP SINGLEMALT October 2...\n", + " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", + " 2020-11-10T18:04:03.666Z\n", + " intrusion-set--dd2d9ca6-505b-4860-a604-233685b...\n", " uses\n", - " attack-pattern--00d0b012-8a03-410e-95de-5826bf...\n", + " tool--afc079f3-c0ea-4096-b75d-3f05338b7f60\n", " \n", " \n", " 2\n", - " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", - " [Soft Cell](https://attack.mitre.org/groups/G0...\n", - " relationship\n", - " 2019-07-22T15:35:24.363Z\n", " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", - " relationship--ee4d1b24-603f-40df-8f21-3c053fba...\n", - " [{'source_name': 'Cybereason Soft Cell June 20...\n", - " 2019-07-22T15:49:29.090Z\n", - " intrusion-set--06a11b7e-2a36-47fe-8d3e-82c265d...\n", + " [{'source_name': 'DFIR Ryuk's Return October 2...\n", + " relationship--43b9a1b5-6f95-4c6c-8e1f-59f9049e...\n", + " relationship\n", + " 2020-11-10T18:04:03.589Z\n", + " (Citation: DFIR Ryuk's Return October 2020)(Ci...\n", + " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", + " 2020-11-10T18:04:03.589Z\n", + " intrusion-set--dd2d9ca6-505b-4860-a604-233685b...\n", " uses\n", - " attack-pattern--c23b740b-a42b-47a1-aec2-9d48dd...\n", + " tool--b77b563c-34bb-4fb8-86a3-3694338f7b47\n", " \n", " \n", " 3\n", - " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", - " [Soft Cell](https://attack.mitre.org/groups/G0...\n", - " relationship\n", - " 2019-07-22T15:35:24.351Z\n", " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", - " relationship--38be247c-74b0-42f3-964e-5f23ef42...\n", - " [{'source_name': 'Cybereason Soft Cell June 20...\n", - " 2019-07-22T15:49:29.092Z\n", - " intrusion-set--06a11b7e-2a36-47fe-8d3e-82c265d...\n", + " [{'source_name': 'FireEye KEGTAP SINGLEMALT Oc...\n", + " relationship--585842e6-fe9a-4508-8e67-c232f8aa...\n", + " relationship\n", + " 2020-11-10T18:04:03.571Z\n", + " (Citation: FireEye KEGTAP SINGLEMALT October 2...\n", + " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", + " 2020-11-10T18:04:03.571Z\n", + " intrusion-set--dd2d9ca6-505b-4860-a604-233685b...\n", " uses\n", - " attack-pattern--3c4a2599-71ee-4405-ba1e-0e2841...\n", + " tool--981acc4c-2ede-4b56-be6e-fa1a75f37acf\n", " \n", " \n", "\n", "" ], "text/plain": [ - " created_by_ref \\\n", - "0 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", - "1 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", - "2 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", - "3 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", - "\n", - " description type \\\n", - "0 [Soft Cell](https://attack.mitre.org/groups/G0... relationship \n", - "1 [Soft Cell](https://attack.mitre.org/groups/G0... relationship \n", - "2 [Soft Cell](https://attack.mitre.org/groups/G0... relationship \n", - "3 [Soft Cell](https://attack.mitre.org/groups/G0... relationship \n", - "\n", - " created \\\n", - "0 2019-07-22T15:49:28.744Z \n", - "1 2019-07-22T15:35:24.376Z \n", - "2 2019-07-22T15:35:24.363Z \n", - "3 2019-07-22T15:35:24.351Z \n", - "\n", " object_marking_refs \\\n", "0 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", "1 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", "2 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", "3 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", "\n", - " id \\\n", - "0 relationship--380743e5-616c-4524-96e6-d545e5b6... \n", - "1 relationship--919f6143-eb8c-48cd-8741-118040c3... \n", - "2 relationship--ee4d1b24-603f-40df-8f21-3c053fba... \n", - "3 relationship--38be247c-74b0-42f3-964e-5f23ef42... \n", - "\n", " external_references \\\n", - "0 [{'source_name': 'Cybereason Soft Cell June 20... \n", - "1 [{'source_name': 'Cybereason Soft Cell June 20... \n", - "2 [{'source_name': 'Cybereason Soft Cell June 20... \n", - "3 [{'source_name': 'Cybereason Soft Cell June 20... \n", + "0 [{'source_name': 'FireEye KEGTAP SINGLEMALT Oc... \n", + "1 [{'source_name': 'FireEye KEGTAP SINGLEMALT Oc... \n", + "2 [{'source_name': 'DFIR Ryuk's Return October 2... \n", + "3 [{'source_name': 'FireEye KEGTAP SINGLEMALT Oc... \n", "\n", - " modified \\\n", - "0 2019-07-22T15:49:28.744Z \n", - "1 2019-07-22T15:49:29.135Z \n", - "2 2019-07-22T15:49:29.090Z \n", - "3 2019-07-22T15:49:29.092Z \n", + " id type \\\n", + "0 relationship--fcee0cef-7d5b-49da-928c-2a3d0cfd... relationship \n", + "1 relationship--c118e50b-4559-4bff-bde5-78aa426f... relationship \n", + "2 relationship--43b9a1b5-6f95-4c6c-8e1f-59f9049e... relationship \n", + "3 relationship--585842e6-fe9a-4508-8e67-c232f8aa... relationship \n", "\n", - " source_ref relationship_type \\\n", - "0 intrusion-set--06a11b7e-2a36-47fe-8d3e-82c265d... uses \n", - "1 intrusion-set--06a11b7e-2a36-47fe-8d3e-82c265d... uses \n", - "2 intrusion-set--06a11b7e-2a36-47fe-8d3e-82c265d... uses \n", - "3 intrusion-set--06a11b7e-2a36-47fe-8d3e-82c265d... uses \n", + " created \\\n", + "0 2020-11-10T18:04:03.668Z \n", + "1 2020-11-10T18:04:03.666Z \n", + "2 2020-11-10T18:04:03.589Z \n", + "3 2020-11-10T18:04:03.571Z \n", "\n", - " target_ref \n", - "0 attack-pattern--92d7da27-2d91-488e-a00c-059dc1... \n", - "1 attack-pattern--00d0b012-8a03-410e-95de-5826bf... \n", - "2 attack-pattern--c23b740b-a42b-47a1-aec2-9d48dd... \n", - "3 attack-pattern--3c4a2599-71ee-4405-ba1e-0e2841... " + " description \\\n", + "0 (Citation: FireEye KEGTAP SINGLEMALT October 2... \n", + "1 (Citation: FireEye KEGTAP SINGLEMALT October 2... \n", + "2 (Citation: DFIR Ryuk's Return October 2020)(Ci... \n", + "3 (Citation: FireEye KEGTAP SINGLEMALT October 2... \n", + "\n", + " created_by_ref modified \\\n", + "0 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 2020-11-10T18:04:03.668Z \n", + "1 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 2020-11-10T18:04:03.666Z \n", + "2 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 2020-11-10T18:04:03.589Z \n", + "3 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 2020-11-10T18:04:03.571Z \n", + "\n", + " source_ref relationship_type \\\n", + "0 intrusion-set--dd2d9ca6-505b-4860-a604-233685b... uses \n", + "1 intrusion-set--dd2d9ca6-505b-4860-a604-233685b... uses \n", + "2 intrusion-set--dd2d9ca6-505b-4860-a604-233685b... uses \n", + "3 intrusion-set--dd2d9ca6-505b-4860-a604-233685b... uses \n", + "\n", + " target_ref \n", + "0 malware--a7881f21-e978-4fe4-af56-92c9416a2616 \n", + "1 tool--afc079f3-c0ea-4096-b75d-3f05338b7f60 \n", + "2 tool--b77b563c-34bb-4fb8-86a3-3694338f7b47 \n", + "3 tool--981acc4c-2ede-4b56-be6e-fa1a75f37acf " ] }, "execution_count": 50, @@ -3574,7 +3584,7 @@ "relations = []\n", "for t in all_enterprise['relationships']:\n", " relations.append(json.loads(t.serialize()))\n", - "df = json_normalize(relations)\n", + "df = pandas.json_normalize(relations)\n", "df[0:4]" ] }, @@ -3582,14 +3592,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Get All PRE-ATT&CK ONLY from Results (Locally)" + "### Get All Mobile ATT&CK ONLY from Results (Locally)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "**PRE Techniques**" + "**Mobile Techniques**" ] }, { @@ -3601,14 +3611,14 @@ "name": "stdout", "output_type": "stream", "text": [ - "Number of Techniques in PRE-ATT&CK\n", - "174\n" + "Number of Techniques in Mobile ATT&CK\n", + "104\n" ] } ], "source": [ - "print(\"Number of Techniques in PRE-ATT&CK\")\n", - "print(len(all_pre['techniques']))" + "print(\"Number of Techniques in Mobile ATT&CK\")\n", + "print(len(all_mobile['techniques']))" ] }, { @@ -3639,730 +3649,112 @@ " \n", " external_references\n", " object_marking_refs\n", - " modified\n", " created_by_ref\n", - " kill_chain_phases\n", - " id\n", " name\n", - " created\n", - " type\n", " description\n", - " x_mitre_detectable_by_common_defenses\n", - " x_mitre_version\n", - " x_mitre_difficulty_for_adversary_explanation\n", - " x_mitre_old_attack_id\n", - " x_mitre_difficulty_for_adversary\n", - " x_mitre_detectable_by_common_defenses_explanation\n", - " x_mitre_deprecated\n", - " \n", - " \n", - " \n", - " \n", - " 0\n", - " [{'url': 'https://attack.mitre.org/techniques/...\n", - " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", - " 2018-10-17T00:14:20.652Z\n", - " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", - " [{'phase_name': 'technical-information-gatheri...\n", - " attack-pattern--b182f29c-2505-4b32-a000-0440ef...\n", - " Spearphishing for Information\n", - " 2018-04-18T17:59:24.739Z\n", - " attack-pattern\n", - " Spearphishing for information is a specific va...\n", - " Partial\n", - " 1.0\n", - " Sending emails is trivial, and, over time, an ...\n", - " PRE-T1174\n", - " Yes\n", - " Depending on the specific method of phishing, ...\n", - " NaN\n", - " \n", - " \n", - " 1\n", - " [{'url': 'https://attack.mitre.org/techniques/...\n", - " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", - " 2018-10-17T00:14:20.652Z\n", - " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", - " [{'phase_name': 'adversary-opsec', 'kill_chain...\n", - " attack-pattern--286cc500-4291-45c2-99a1-e760db...\n", - " Acquire and/or use 3rd party infrastructure se...\n", - " 2017-12-14T16:46:06.044Z\n", - " attack-pattern\n", - " A wide variety of cloud, virtual private servi...\n", - " No\n", - " 1.0\n", - " Wide range of 3rd party services for hosting, ...\n", - " PRE-T1084\n", - " Yes\n", - " 3rd party services highly leveraged by legitim...\n", - " NaN\n", - " \n", - " \n", - " 2\n", - " [{'url': 'https://attack.mitre.org/techniques/...\n", - " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", - " 2018-10-17T00:14:20.652Z\n", - " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", - " [{'phase_name': 'people-information-gathering'...\n", - " attack-pattern--b3f36317-3940-4d71-968f-e11ac1...\n", - " Aggregate individual's digital footprint\n", - " 2017-12-14T16:46:06.044Z\n", - " attack-pattern\n", - " In addition to a target's social media presenc...\n", - " No\n", - " 1.0\n", - " Information readily available through searches\n", - " PRE-T1052\n", - " Yes\n", - " Searching publicly available sources that cann...\n", - " NaN\n", - " \n", - " \n", - " 3\n", - " [{'url': 'https://attack.mitre.org/techniques/...\n", - " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", - " 2018-10-17T00:14:20.652Z\n", - " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", - " [{'phase_name': 'technical-weakness-identifica...\n", - " attack-pattern--a1e8d61b-22e1-4983-8485-964201...\n", - " Analyze hardware/software security defensive c...\n", - " 2017-12-14T16:46:06.044Z\n", - " attack-pattern\n", - " An adversary can probe a victim's network to d...\n", - " No\n", - " 1.0\n", - " Analyze network traffic to determine security ...\n", - " PRE-T1071\n", - " Yes\n", - " This can be done offline after the data has be...\n", - " NaN\n", - " \n", - " \n", - "\n", - "" - ], - "text/plain": [ - " external_references \\\n", - "0 [{'url': 'https://attack.mitre.org/techniques/... \n", - "1 [{'url': 'https://attack.mitre.org/techniques/... \n", - "2 [{'url': 'https://attack.mitre.org/techniques/... \n", - "3 [{'url': 'https://attack.mitre.org/techniques/... \n", - "\n", - " object_marking_refs \\\n", - "0 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", - "1 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", - "2 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", - "3 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", - "\n", - " modified created_by_ref \\\n", - "0 2018-10-17T00:14:20.652Z identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", - "1 2018-10-17T00:14:20.652Z identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", - "2 2018-10-17T00:14:20.652Z identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", - "3 2018-10-17T00:14:20.652Z identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", - "\n", - " kill_chain_phases \\\n", - "0 [{'phase_name': 'technical-information-gatheri... \n", - "1 [{'phase_name': 'adversary-opsec', 'kill_chain... \n", - "2 [{'phase_name': 'people-information-gathering'... \n", - "3 [{'phase_name': 'technical-weakness-identifica... \n", - "\n", - " id \\\n", - "0 attack-pattern--b182f29c-2505-4b32-a000-0440ef... \n", - "1 attack-pattern--286cc500-4291-45c2-99a1-e760db... \n", - "2 attack-pattern--b3f36317-3940-4d71-968f-e11ac1... \n", - "3 attack-pattern--a1e8d61b-22e1-4983-8485-964201... \n", - "\n", - " name \\\n", - "0 Spearphishing for Information \n", - "1 Acquire and/or use 3rd party infrastructure se... \n", - "2 Aggregate individual's digital footprint \n", - "3 Analyze hardware/software security defensive c... \n", - "\n", - " created type \\\n", - "0 2018-04-18T17:59:24.739Z attack-pattern \n", - "1 2017-12-14T16:46:06.044Z attack-pattern \n", - "2 2017-12-14T16:46:06.044Z attack-pattern \n", - "3 2017-12-14T16:46:06.044Z attack-pattern \n", - "\n", - " description \\\n", - "0 Spearphishing for information is a specific va... \n", - "1 A wide variety of cloud, virtual private servi... \n", - "2 In addition to a target's social media presenc... \n", - "3 An adversary can probe a victim's network to d... \n", - "\n", - " x_mitre_detectable_by_common_defenses x_mitre_version \\\n", - "0 Partial 1.0 \n", - "1 No 1.0 \n", - "2 No 1.0 \n", - "3 No 1.0 \n", - "\n", - " x_mitre_difficulty_for_adversary_explanation x_mitre_old_attack_id \\\n", - "0 Sending emails is trivial, and, over time, an ... PRE-T1174 \n", - "1 Wide range of 3rd party services for hosting, ... PRE-T1084 \n", - "2 Information readily available through searches PRE-T1052 \n", - "3 Analyze network traffic to determine security ... PRE-T1071 \n", - "\n", - " x_mitre_difficulty_for_adversary \\\n", - "0 Yes \n", - "1 Yes \n", - "2 Yes \n", - "3 Yes \n", - "\n", - " x_mitre_detectable_by_common_defenses_explanation x_mitre_deprecated \n", - "0 Depending on the specific method of phishing, ... NaN \n", - "1 3rd party services highly leveraged by legitim... NaN \n", - "2 Searching publicly available sources that cann... NaN \n", - "3 This can be done offline after the data has be... NaN " - ] - }, - "execution_count": 52, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "techniques = []\n", - "for t in all_pre['techniques']:\n", - " techniques.append(json.loads(t.serialize()))\n", - "df = json_normalize(techniques)\n", - "df[0:4]" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**PRE Groups**" - ] - }, - { - "cell_type": "code", - "execution_count": 53, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Number of Groups in PRE-ATT&CK\n", - "7\n" - ] - } - ], - "source": [ - "print(\"Number of Groups in PRE-ATT&CK\")\n", - "print(len(all_pre['groups']))" - ] - }, - { - "cell_type": "code", - "execution_count": 54, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
created_by_refnamedescriptiontypealiasesobject_marking_refsidexternal_referencesmodifiedcreatedx_mitre_versionx_mitre_contributors
0identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5TEMP.Veles[TEMP.Veles](https://attack.mitre.org/groups/G...intrusion-set[TEMP.Veles, XENOTIME][marking-definition--fa42a846-8d90-4e51-bc29-7...intrusion-set--9538b1a4-4120-4e2d-bf59-3b11fca...[{'external_id': 'G0088', 'source_name': 'mitr...2019-04-29T18:59:16.079Z2019-04-16T15:14:38.533Z1.0NaN
1identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5APT17[APT17](https://attack.mitre.org/groups/G0025)...intrusion-set[APT17, Deputy Dog][marking-definition--fa42a846-8d90-4e51-bc29-7...intrusion-set--090242d7-73fc-4738-af68-20162f7...[{'external_id': 'G0025', 'source_name': 'mitr...2019-03-22T14:21:19.419Z2017-05-31T21:31:57.307Z1.0NaN
2identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5APT16[APT16](https://attack.mitre.org/groups/G0023)...intrusion-set[APT16][marking-definition--fa42a846-8d90-4e51-bc29-7...intrusion-set--d6e88e18-81e8-4709-82d8-973095d...[{'external_id': 'G0023', 'source_name': 'mitr...2019-03-22T14:20:45.561Z2017-05-31T21:31:56.270Z1.0NaN
3identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5Night Dragon[Night Dragon](https://attack.mitre.org/groups...intrusion-set[Night Dragon][marking-definition--fa42a846-8d90-4e51-bc29-7...intrusion-set--23b6a0f5-fa95-46f9-a6f3-4549c5e...[{'external_id': 'G0014', 'source_name': 'mitr...2019-03-25T14:36:29.638Z2017-05-31T21:31:51.643Z1.1NaN
\n", - "
" - ], - "text/plain": [ - " created_by_ref name \\\n", - "0 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 TEMP.Veles \n", - "1 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 APT17 \n", - "2 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 APT16 \n", - "3 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 Night Dragon \n", - "\n", - " description type \\\n", - "0 [TEMP.Veles](https://attack.mitre.org/groups/G... intrusion-set \n", - "1 [APT17](https://attack.mitre.org/groups/G0025)... intrusion-set \n", - "2 [APT16](https://attack.mitre.org/groups/G0023)... intrusion-set \n", - "3 [Night Dragon](https://attack.mitre.org/groups... intrusion-set \n", - "\n", - " aliases object_marking_refs \\\n", - "0 [TEMP.Veles, XENOTIME] [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", - "1 [APT17, Deputy Dog] [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", - "2 [APT16] [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", - "3 [Night Dragon] [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", - "\n", - " id \\\n", - "0 intrusion-set--9538b1a4-4120-4e2d-bf59-3b11fca... \n", - "1 intrusion-set--090242d7-73fc-4738-af68-20162f7... \n", - "2 intrusion-set--d6e88e18-81e8-4709-82d8-973095d... \n", - "3 intrusion-set--23b6a0f5-fa95-46f9-a6f3-4549c5e... \n", - "\n", - " external_references \\\n", - "0 [{'external_id': 'G0088', 'source_name': 'mitr... \n", - "1 [{'external_id': 'G0025', 'source_name': 'mitr... \n", - "2 [{'external_id': 'G0023', 'source_name': 'mitr... \n", - "3 [{'external_id': 'G0014', 'source_name': 'mitr... \n", - "\n", - " modified created x_mitre_version \\\n", - "0 2019-04-29T18:59:16.079Z 2019-04-16T15:14:38.533Z 1.0 \n", - "1 2019-03-22T14:21:19.419Z 2017-05-31T21:31:57.307Z 1.0 \n", - "2 2019-03-22T14:20:45.561Z 2017-05-31T21:31:56.270Z 1.0 \n", - "3 2019-03-25T14:36:29.638Z 2017-05-31T21:31:51.643Z 1.1 \n", - "\n", - " x_mitre_contributors \n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN " - ] - }, - "execution_count": 54, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "groups = []\n", - "for t in all_pre['groups']:\n", - " groups.append(json.loads(t.serialize()))\n", - "df = json_normalize(groups)\n", - "df[0:4]" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**PRE Relationships**" - ] - }, - { - "cell_type": "code", - "execution_count": 55, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Number of Relationships in PRE-ATT&CK\n", - "70\n" - ] - } - ], - "source": [ - "print(\"Number of Relationships in PRE-ATT&CK\")\n", - "print(len(all_pre['relationships']))" - ] - }, - { - "cell_type": "code", - "execution_count": 56, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
created_by_refdescriptiontypecreatedobject_marking_refsidexternal_referencesmodifiedsource_refrelationship_typetarget_ref
0identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5[TEMP.Veles](https://attack.mitre.org/groups/G...relationship2019-04-24T19:45:44.212Z[marking-definition--fa42a846-8d90-4e51-bc29-7...relationship--21842707-0f15-43bf-bc42-2bceadf2...[{'source_name': 'FireEye TRITON 2019', 'descr...2019-04-29T18:59:16.596Zintrusion-set--9538b1a4-4120-4e2d-bf59-3b11fca...usesattack-pattern--20a66013-8dab-4ca3-a67d-766c84...
1identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5[TEMP.Veles](https://attack.mitre.org/groups/G...relationship2019-04-24T19:45:44.205Z[marking-definition--fa42a846-8d90-4e51-bc29-7...relationship--2d95ed6f-52e7-4708-af15-9a6c0839...[{'source_name': 'FireEye TRITON 2019', 'descr...2019-04-29T18:59:16.595Zintrusion-set--9538b1a4-4120-4e2d-bf59-3b11fca...usesattack-pattern--795c1a92-3a26-453e-b99a-6a566a...
2identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5NaNrelationship2019-02-19T18:56:56.770Z[marking-definition--fa42a846-8d90-4e51-bc29-7...relationship--83379e43-4bc5-4c49-b0b3-f41161e8...NaN2019-02-19T18:56:56.770Zattack-pattern--e5164428-03ca-4336-a9a7-4d9ea1...related-toattack-pattern--03f4a766-7a21-4b5e-9ccf-e0cf42...
3identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5NaNrelationship2019-02-19T18:56:56.136Z[marking-definition--fa42a846-8d90-4e51-bc29-7...relationship--1aafdefb-304e-4998-87cc-81aad295...NaN2019-02-19T18:56:56.136Zattack-pattern--03f4a766-7a21-4b5e-9ccf-e0cf42...related-toattack-pattern--e5164428-03ca-4336-a9a7-4d9ea1...
\n", - "
" - ], - "text/plain": [ - " created_by_ref \\\n", - "0 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", - "1 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", - "2 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", - "3 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", - "\n", - " description type \\\n", - "0 [TEMP.Veles](https://attack.mitre.org/groups/G... relationship \n", - "1 [TEMP.Veles](https://attack.mitre.org/groups/G... relationship \n", - "2 NaN relationship \n", - "3 NaN relationship \n", - "\n", - " created \\\n", - "0 2019-04-24T19:45:44.212Z \n", - "1 2019-04-24T19:45:44.205Z \n", - "2 2019-02-19T18:56:56.770Z \n", - "3 2019-02-19T18:56:56.136Z \n", - "\n", - " object_marking_refs \\\n", - "0 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", - "1 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", - "2 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", - "3 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", - "\n", - " id \\\n", - "0 relationship--21842707-0f15-43bf-bc42-2bceadf2... \n", - "1 relationship--2d95ed6f-52e7-4708-af15-9a6c0839... \n", - "2 relationship--83379e43-4bc5-4c49-b0b3-f41161e8... \n", - "3 relationship--1aafdefb-304e-4998-87cc-81aad295... \n", - "\n", - " external_references \\\n", - "0 [{'source_name': 'FireEye TRITON 2019', 'descr... \n", - "1 [{'source_name': 'FireEye TRITON 2019', 'descr... \n", - "2 NaN \n", - "3 NaN \n", - "\n", - " modified \\\n", - "0 2019-04-29T18:59:16.596Z \n", - "1 2019-04-29T18:59:16.595Z \n", - "2 2019-02-19T18:56:56.770Z \n", - "3 2019-02-19T18:56:56.136Z \n", - "\n", - " source_ref relationship_type \\\n", - "0 intrusion-set--9538b1a4-4120-4e2d-bf59-3b11fca... uses \n", - "1 intrusion-set--9538b1a4-4120-4e2d-bf59-3b11fca... uses \n", - "2 attack-pattern--e5164428-03ca-4336-a9a7-4d9ea1... related-to \n", - "3 attack-pattern--03f4a766-7a21-4b5e-9ccf-e0cf42... related-to \n", - "\n", - " target_ref \n", - "0 attack-pattern--20a66013-8dab-4ca3-a67d-766c84... \n", - "1 attack-pattern--795c1a92-3a26-453e-b99a-6a566a... \n", - "2 attack-pattern--03f4a766-7a21-4b5e-9ccf-e0cf42... \n", - "3 attack-pattern--e5164428-03ca-4336-a9a7-4d9ea1... " - ] - }, - "execution_count": 56, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "relations = []\n", - "for t in all_pre['relationships']:\n", - " relations.append(json.loads(t.serialize()))\n", - "df = json_normalize(relations)\n", - "df[0:4]" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Get All Mobile ATT&CK ONLY from Results (Locally)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**Mobile Techniques**" - ] - }, - { - "cell_type": "code", - "execution_count": 57, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Number of Techniques in Mobile ATT&CK\n", - "82\n" - ] - } - ], - "source": [ - "print(\"Number of Techniques in Mobile ATT&CK\")\n", - "print(len(all_mobile['techniques']))" - ] - }, - { - "cell_type": "code", - "execution_count": 58, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", " \n", - " \n", - " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", + " \n", " \n", " \n", + " \n", + " \n", " \n", " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", + " \n", " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", + " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", + " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -4371,10 +3763,10 @@ ], "text/plain": [ " external_references \\\n", - "0 [{'url': 'https://attack.mitre.org/techniques/... \n", - "1 [{'url': 'https://attack.mitre.org/techniques/... \n", - "2 [{'url': 'https://attack.mitre.org/techniques/... \n", - "3 [{'url': 'https://attack.mitre.org/techniques/... \n", + "0 [{'source_name': 'mitre-mobile-attack', 'exter... \n", + "1 [{'source_name': 'mitre-mobile-attack', 'exter... \n", + "2 [{'source_name': 'mitre-mobile-attack', 'exter... \n", + "3 [{'source_name': 'mitre-mobile-attack', 'exter... \n", "\n", " object_marking_refs \\\n", "0 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", @@ -4382,56 +3774,62 @@ "2 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", "3 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", "\n", - " modified created_by_ref \\\n", - "0 2019-02-01T17:29:43.503Z identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", - "1 2019-02-03T14:08:44.916Z identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", - "2 2019-02-03T17:31:51.215Z identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", - "3 2018-10-17T00:14:20.652Z identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", + " created_by_ref \\\n", + "0 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", + "1 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", + "2 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", + "3 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", + "\n", + " name \\\n", + "0 SMS Control \n", + "1 Geofencing \n", + "2 Keychain \n", + "3 Compromise Application Executable \n", + "\n", + " description \\\n", + "0 Adversaries may delete, alter, or send SMS mes... \n", + "1 Adversaries may use a device’s geographical lo... \n", + "2 Adversaries may collect the keychain storage d... \n", + "3 Adversaries may modify applications installed ... \n", + "\n", + " id type \\\n", + "0 attack-pattern--b327a9c0-e709-495c-aa6e-00b042... attack-pattern \n", + "1 attack-pattern--8197f026-64da-4700-93b9-b55ba5... attack-pattern \n", + "2 attack-pattern--27f483c6-6666-44fa-8532-ffd5fc... attack-pattern \n", + "3 attack-pattern--d3bc5020-f6a2-41c0-8ccb-5e5631... attack-pattern \n", "\n", " kill_chain_phases \\\n", - "0 [{'phase_name': 'command-and-control', 'kill_c... \n", - "1 [{'phase_name': 'initial-access', 'kill_chain_... \n", - "2 [{'phase_name': 'initial-access', 'kill_chain_... \n", - "3 [{'phase_name': 'initial-access', 'kill_chain_... \n", + "0 [{'kill_chain_name': 'mitre-mobile-attack', 'p... \n", + "1 [{'kill_chain_name': 'mitre-mobile-attack', 'p... \n", + "2 [{'kill_chain_name': 'mitre-mobile-attack', 'p... \n", + "3 [{'kill_chain_name': 'mitre-mobile-attack', 'p... \n", "\n", - " id \\\n", - "0 attack-pattern--c6a146ae-9c63-4606-97ff-e261e7... \n", - "1 attack-pattern--53263a67-075e-48fa-974b-91c5b5... \n", - "2 attack-pattern--d9db3d46-66ca-44b4-9daa-1ef97c... \n", - "3 attack-pattern--0d95940f-9583-4e0f-824c-a42c1b... \n", - "\n", - " name created \\\n", - "0 Web Service 2019-02-01T17:29:43.503Z \n", - "1 Deliver Malicious App via Other Means 2018-10-17T00:14:20.652Z \n", - "2 Deliver Malicious App via Authorized App Store 2018-10-17T00:14:20.652Z \n", - "3 Supply Chain Compromise 2018-10-17T00:14:20.652Z \n", - "\n", - " type description \\\n", - "0 attack-pattern Adversaries may use an existing, legitimate ex... \n", - "1 attack-pattern Malicious applications are a common attack vec... \n", - "2 attack-pattern Malicious applications are a common attack vec... \n", - "3 attack-pattern As further described in [Supply Chain Compromi... \n", - "\n", - " x_mitre_platforms x_mitre_version x_mitre_tactic_type \\\n", - "0 [Android, iOS] 1.0 [Post-Adversary Device Access] \n", - "1 [Android, iOS] 1.1 [Post-Adversary Device Access] \n", - "2 [Android, iOS] 1.0 [Post-Adversary Device Access] \n", - "3 [Android, iOS] 1.0 [Post-Adversary Device Access] \n", - "\n", - " x_mitre_detection x_mitre_old_attack_id \\\n", - "0 NaN NaN \n", - "1 * An EMM/MDM or mobile threat defense solution... MOB-T1079 \n", - "2 * An EMM/MDM or mobile threat defense solution... MOB-T1078 \n", - "3 * Insecure third-party libraries could be dete... MOB-T1077 \n", - "\n", - " revoked \n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN " + " modified created x_mitre_version \\\n", + "0 2020-10-22T17:04:15.578Z 2020-09-11T15:14:33.730Z 1.0 \n", + "1 2020-10-01T12:43:41.494Z 2020-09-11T15:04:14.532Z 1.0 \n", + "2 2020-06-24T19:02:46.237Z 2020-06-24T17:33:49.778Z 1.0 \n", + "3 2020-05-27T13:23:34.159Z 2020-05-07T15:24:49.068Z 1.0 \n", + "\n", + " x_mitre_is_subtechnique x_mitre_tactic_type \\\n", + "0 False [Post-Adversary Device Access] \n", + "1 False [Post-Adversary Device Access] \n", + "2 False [Post-Adversary Device Access] \n", + "3 False [Post-Adversary Device Access] \n", + "\n", + " x_mitre_detection x_mitre_platforms \\\n", + "0 Users can view the default SMS handler in syst... [Android] \n", + "1 Users can review which applications have locat... [Android, iOS] \n", + "2 Mobile security products can potentially detec... [iOS] \n", + "3 This behavior is seamless to the user and is t... [Android] \n", + "\n", + " x_mitre_contributors x_mitre_old_attack_id revoked x_mitre_deprecated \n", + "0 NaN NaN NaN NaN \n", + "1 NaN NaN NaN NaN \n", + "2 NaN NaN NaN NaN \n", + "3 NaN NaN NaN NaN " ] }, - "execution_count": 58, + "execution_count": 52, "metadata": {}, "output_type": "execute_result" } @@ -4440,7 +3838,7 @@ "techniques = []\n", "for t in all_mobile['techniques']:\n", " techniques.append(json.loads(t.serialize()))\n", - "df = json_normalize(techniques)\n", + "df = pandas.json_normalize(techniques)\n", "df[0:4]" ] }, @@ -4453,7 +3851,7 @@ }, { "cell_type": "code", - "execution_count": 59, + "execution_count": 53, "metadata": {}, "outputs": [ { @@ -4461,7 +3859,7 @@ "output_type": "stream", "text": [ "Number of Mitigations in Mobile ATT&CK\n", - "14\n" + "13\n" ] } ], @@ -4472,7 +3870,7 @@ }, { "cell_type": "code", - "execution_count": 60, + "execution_count": 54, "metadata": {}, "outputs": [ { @@ -4497,74 +3895,74 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", " \n", - " \n", " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", " \n", + " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", + " \n", " \n", " \n", "
external_referencesobject_marking_refsmodifiedcreated_by_refkill_chain_phasesidnamecreatedtypedescriptionx_mitre_platformskill_chain_phasesmodifiedcreatedx_mitre_versionx_mitre_is_subtechniquex_mitre_tactic_typex_mitre_detectionx_mitre_platformsx_mitre_contributorsx_mitre_old_attack_idrevokedx_mitre_deprecated
0[{'url': 'https://attack.mitre.org/techniques/...[{'source_name': 'mitre-mobile-attack', 'exter...[marking-definition--fa42a846-8d90-4e51-bc29-7...2019-02-01T17:29:43.503Zidentity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5[{'phase_name': 'command-and-control', 'kill_c...attack-pattern--c6a146ae-9c63-4606-97ff-e261e7...Web Service2019-02-01T17:29:43.503ZSMS ControlAdversaries may delete, alter, or send SMS mes...attack-pattern--b327a9c0-e709-495c-aa6e-00b042...attack-patternAdversaries may use an existing, legitimate ex...[Android, iOS][{'kill_chain_name': 'mitre-mobile-attack', 'p...2020-10-22T17:04:15.578Z2020-09-11T15:14:33.730Z1.0False[Post-Adversary Device Access]Users can view the default SMS handler in syst...[Android]NaNNaNNaNNaN
1[{'url': 'https://attack.mitre.org/techniques/...[{'source_name': 'mitre-mobile-attack', 'exter...[marking-definition--fa42a846-8d90-4e51-bc29-7...2019-02-03T14:08:44.916Zidentity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5[{'phase_name': 'initial-access', 'kill_chain_...attack-pattern--53263a67-075e-48fa-974b-91c5b5...Deliver Malicious App via Other Means2018-10-17T00:14:20.652ZGeofencingAdversaries may use a device’s geographical lo...attack-pattern--8197f026-64da-4700-93b9-b55ba5...attack-patternMalicious applications are a common attack vec...[Android, iOS]1.1[{'kill_chain_name': 'mitre-mobile-attack', 'p...2020-10-01T12:43:41.494Z2020-09-11T15:04:14.532Z1.0False[Post-Adversary Device Access]* An EMM/MDM or mobile threat defense solution...MOB-T1079Users can review which applications have locat...[Android, iOS]NaNNaNNaNNaN
2[{'url': 'https://attack.mitre.org/techniques/...[{'source_name': 'mitre-mobile-attack', 'exter...[marking-definition--fa42a846-8d90-4e51-bc29-7...2019-02-03T17:31:51.215Zidentity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5[{'phase_name': 'initial-access', 'kill_chain_...attack-pattern--d9db3d46-66ca-44b4-9daa-1ef97c...Deliver Malicious App via Authorized App Store2018-10-17T00:14:20.652ZKeychainAdversaries may collect the keychain storage d...attack-pattern--27f483c6-6666-44fa-8532-ffd5fc...attack-patternMalicious applications are a common attack vec...[Android, iOS][{'kill_chain_name': 'mitre-mobile-attack', 'p...2020-06-24T19:02:46.237Z2020-06-24T17:33:49.778Z1.0False[Post-Adversary Device Access]* An EMM/MDM or mobile threat defense solution...MOB-T1078Mobile security products can potentially detec...[iOS]NaNNaNNaNNaN
3[{'url': 'https://attack.mitre.org/techniques/...[{'source_name': 'mitre-mobile-attack', 'exter...[marking-definition--fa42a846-8d90-4e51-bc29-7...2018-10-17T00:14:20.652Zidentity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5[{'phase_name': 'initial-access', 'kill_chain_...attack-pattern--0d95940f-9583-4e0f-824c-a42c1b...Supply Chain Compromise2018-10-17T00:14:20.652ZCompromise Application ExecutableAdversaries may modify applications installed ...attack-pattern--d3bc5020-f6a2-41c0-8ccb-5e5631...attack-patternAs further described in [Supply Chain Compromi...[Android, iOS][{'kill_chain_name': 'mitre-mobile-attack', 'p...2020-05-27T13:23:34.159Z2020-05-07T15:24:49.068Z1.0False[Post-Adversary Device Access]* Insecure third-party libraries could be dete...MOB-T1077This behavior is seamless to the user and is t...[Android]NaNNaNNaNNaN
created_by_refdescriptiontypenameobject_marking_refsidexternal_referencesnamedescriptionidtypemodifiedcreatedx_mitre_old_attack_idx_mitre_versionx_mitre_old_attack_id
0identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5This mitigation describes any guidance or trai...course-of-actionApplication Developer Guidance[marking-definition--fa42a846-8d90-4e51-bc29-7...course-of-action--25dc1ce8-eb55-4333-ae30-a7cb...[{'external_id': 'M1013', 'source_name': 'mitr...2018-10-17T00:14:20.652Z2017-10-25T14:48:53.732ZMOB-M1013[{'source_name': 'mitre-attack', 'external_id'...User GuidanceDescribes any guidance or training given to us...course-of-action--653492e3-27be-4a0e-b08c-938d...course-of-action2019-10-18T15:51:48.318Z2019-10-18T12:53:03.508Z1.0NaN
1identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5An enterprise mobility management (EMM), also ...course-of-actionEnterprise Policy[marking-definition--fa42a846-8d90-4e51-bc29-7...course-of-action--649f7268-4c12-483b-ac84-4b7b...[{'external_id': 'M1012', 'source_name': 'mitr...2018-10-17T00:14:20.652Z2017-10-25T14:48:53.318ZMOB-M1012[{'source_name': 'mitre-attack', 'external_id'...Security UpdatesInstall security updates in response to discov...course-of-action--bcecd036-f40e-4916-9f8e-fd0c...course-of-action2019-10-18T14:56:15.631Z2019-10-18T12:51:36.488Z1.0NaN
2identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5Enable remote attestation capabilities when av...course-of-actionAttestation[marking-definition--fa42a846-8d90-4e51-bc29-7...[{'source_name': 'mitre-attack', 'external_id'...AttestationEnable remote attestation capabilities when av...course-of-action--ff4821f6-5afb-481b-8c0f-26c2...[{'external_id': 'M1002', 'source_name': 'mitr...2018-10-17T00:14:20.652Z2017-10-25T14:48:52.933ZMOB-M1002course-of-action2019-10-18T14:52:53.019Z2019-10-18T12:50:35.335Z1.0NaN
3identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5A variety of methods exist that can be used to...course-of-actionDeploy Compromised Device Detection Method[marking-definition--fa42a846-8d90-4e51-bc29-7...course-of-action--cf2cccb1-cab8-431a-8ecf-f787...[{'external_id': 'M1010', 'source_name': 'mitr...2018-10-17T00:14:20.652Z2017-10-25T14:48:52.601ZMOB-M1010[{'source_name': 'mitre-attack', 'external_id'...Application VettingEnterprises can vet applications for exploitab...course-of-action--1553b156-6767-47f7-9eb4-2a69...course-of-action2019-10-18T15:53:07.393Z2019-10-18T12:49:58.924Z1.0NaN
\n", @@ -4577,50 +3975,44 @@ "2 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", "3 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", "\n", - " description type \\\n", - "0 This mitigation describes any guidance or trai... course-of-action \n", - "1 An enterprise mobility management (EMM), also ... course-of-action \n", - "2 Enable remote attestation capabilities when av... course-of-action \n", - "3 A variety of methods exist that can be used to... course-of-action \n", - "\n", - " name \\\n", - "0 Application Developer Guidance \n", - "1 Enterprise Policy \n", - "2 Attestation \n", - "3 Deploy Compromised Device Detection Method \n", - "\n", " object_marking_refs \\\n", "0 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", "1 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", "2 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", "3 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", "\n", - " id \\\n", - "0 course-of-action--25dc1ce8-eb55-4333-ae30-a7cb... \n", - "1 course-of-action--649f7268-4c12-483b-ac84-4b7b... \n", - "2 course-of-action--ff4821f6-5afb-481b-8c0f-26c2... \n", - "3 course-of-action--cf2cccb1-cab8-431a-8ecf-f787... \n", + " external_references name \\\n", + "0 [{'source_name': 'mitre-attack', 'external_id'... User Guidance \n", + "1 [{'source_name': 'mitre-attack', 'external_id'... Security Updates \n", + "2 [{'source_name': 'mitre-attack', 'external_id'... Attestation \n", + "3 [{'source_name': 'mitre-attack', 'external_id'... Application Vetting \n", "\n", - " external_references \\\n", - "0 [{'external_id': 'M1013', 'source_name': 'mitr... \n", - "1 [{'external_id': 'M1012', 'source_name': 'mitr... \n", - "2 [{'external_id': 'M1002', 'source_name': 'mitr... \n", - "3 [{'external_id': 'M1010', 'source_name': 'mitr... \n", - "\n", - " modified created x_mitre_old_attack_id \\\n", - "0 2018-10-17T00:14:20.652Z 2017-10-25T14:48:53.732Z MOB-M1013 \n", - "1 2018-10-17T00:14:20.652Z 2017-10-25T14:48:53.318Z MOB-M1012 \n", - "2 2018-10-17T00:14:20.652Z 2017-10-25T14:48:52.933Z MOB-M1002 \n", - "3 2018-10-17T00:14:20.652Z 2017-10-25T14:48:52.601Z MOB-M1010 \n", - "\n", - " x_mitre_version \n", - "0 1.0 \n", - "1 1.0 \n", - "2 1.0 \n", - "3 1.0 " + " description \\\n", + "0 Describes any guidance or training given to us... \n", + "1 Install security updates in response to discov... \n", + "2 Enable remote attestation capabilities when av... \n", + "3 Enterprises can vet applications for exploitab... \n", + "\n", + " id type \\\n", + "0 course-of-action--653492e3-27be-4a0e-b08c-938d... course-of-action \n", + "1 course-of-action--bcecd036-f40e-4916-9f8e-fd0c... course-of-action \n", + "2 course-of-action--ff4821f6-5afb-481b-8c0f-26c2... course-of-action \n", + "3 course-of-action--1553b156-6767-47f7-9eb4-2a69... course-of-action \n", + "\n", + " modified created x_mitre_version \\\n", + "0 2019-10-18T15:51:48.318Z 2019-10-18T12:53:03.508Z 1.0 \n", + "1 2019-10-18T14:56:15.631Z 2019-10-18T12:51:36.488Z 1.0 \n", + "2 2019-10-18T14:52:53.019Z 2019-10-18T12:50:35.335Z 1.0 \n", + "3 2019-10-18T15:53:07.393Z 2019-10-18T12:49:58.924Z 1.0 \n", + "\n", + " x_mitre_old_attack_id \n", + "0 NaN \n", + "1 NaN \n", + "2 NaN \n", + "3 NaN " ] }, - "execution_count": 60, + "execution_count": 54, "metadata": {}, "output_type": "execute_result" } @@ -4629,7 +4021,7 @@ "mitigations = []\n", "for t in all_mobile['mitigations']:\n", " mitigations.append(json.loads(t.serialize()))\n", - "df = json_normalize(mitigations)\n", + "df = pandas.json_normalize(mitigations)\n", "df[0:4]" ] }, @@ -4642,7 +4034,7 @@ }, { "cell_type": "code", - "execution_count": 61, + "execution_count": 55, "metadata": {}, "outputs": [ { @@ -4650,7 +4042,7 @@ "output_type": "stream", "text": [ "Number of Groups in Mobile ATT&CK\n", - "2\n" + "3\n" ] } ], @@ -4661,7 +4053,7 @@ }, { "cell_type": "code", - "execution_count": 62, + "execution_count": 56, "metadata": {}, "outputs": [ { @@ -4686,13 +4078,13 @@ " \n", " \n", " created_by_ref\n", - " name\n", + " object_marking_refs\n", + " external_references\n", " description\n", + " name\n", " type\n", - " aliases\n", - " object_marking_refs\n", " id\n", - " external_references\n", + " aliases\n", " modified\n", " created\n", " x_mitre_version\n", @@ -4703,72 +4095,95 @@ " \n", " 0\n", " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", - " Dark Caracal\n", - " [Dark Caracal](https://attack.mitre.org/groups...\n", + " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", + " [{'external_id': 'G0097', 'source_name': 'mitr...\n", + " [Bouncing Golf](https://attack.mitre.org/group...\n", + " Bouncing Golf\n", " intrusion-set\n", - " [Dark Caracal]\n", + " intrusion-set--049cef3b-22d5-4be6-b50c-9839c7a...\n", + " [Bouncing Golf]\n", + " 2020-03-26T20:58:44.722Z\n", + " 2020-01-27T16:55:39.688Z\n", + " 1.0\n", + " NaN\n", + " \n", + " \n", + " 1\n", + " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", + " [{'source_name': 'mitre-attack', 'url': 'https...\n", + " [Dark Caracal](https://attack.mitre.org/groups...\n", + " Dark Caracal\n", + " intrusion-set\n", " intrusion-set--8a831aaa-f3e0-47a3-bed8-a9ced74...\n", - " [{'external_id': 'G0070', 'source_name': 'mitr...\n", - " 2019-07-16T15:35:20.554Z\n", + " [Dark Caracal]\n", + " 2020-06-03T20:22:40.401Z\n", " 2018-10-17T00:14:20.652Z\n", - " 1.1\n", + " 1.2\n", " NaN\n", " \n", " \n", - " 1\n", + " 2\n", " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", - " APT28\n", + " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", + " [{'external_id': 'G0007', 'url': 'https://atta...\n", " [APT28](https://attack.mitre.org/groups/G0007)...\n", + " APT28\n", " intrusion-set\n", - " [APT28, SNAKEMACKEREL, Swallowtail, Group 74, ...\n", - " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", " intrusion-set--bef4c620-0787-42a8-a96d-b7eb6e8...\n", - " [{'external_id': 'G0007', 'source_name': 'mitr...\n", - " 2019-07-27T00:09:33.254Z\n", + " [APT28, SNAKEMACKEREL, Swallowtail, Group 74, ...\n", + " 2020-10-06T23:32:21.793Z\n", " 2017-05-31T21:31:48.664Z\n", - " 2.1\n", - " [Emily Ratliff, IBM, Richard Gold, Digital Sha...\n", + " 3.0\n", + " [Sébastien Ruel, CGI, Drew Church, Splunk, Emi...\n", " \n", " \n", "\n", "
" ], "text/plain": [ - " created_by_ref name \\\n", - "0 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 Dark Caracal \n", - "1 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 APT28 \n", - "\n", - " description type \\\n", - "0 [Dark Caracal](https://attack.mitre.org/groups... intrusion-set \n", - "1 [APT28](https://attack.mitre.org/groups/G0007)... intrusion-set \n", - "\n", - " aliases \\\n", - "0 [Dark Caracal] \n", - "1 [APT28, SNAKEMACKEREL, Swallowtail, Group 74, ... \n", + " created_by_ref \\\n", + "0 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", + "1 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", + "2 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", "\n", " object_marking_refs \\\n", "0 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", "1 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", - "\n", - " id \\\n", - "0 intrusion-set--8a831aaa-f3e0-47a3-bed8-a9ced74... \n", - "1 intrusion-set--bef4c620-0787-42a8-a96d-b7eb6e8... \n", + "2 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", "\n", " external_references \\\n", - "0 [{'external_id': 'G0070', 'source_name': 'mitr... \n", - "1 [{'external_id': 'G0007', 'source_name': 'mitr... \n", + "0 [{'external_id': 'G0097', 'source_name': 'mitr... \n", + "1 [{'source_name': 'mitre-attack', 'url': 'https... \n", + "2 [{'external_id': 'G0007', 'url': 'https://atta... \n", + "\n", + " description name \\\n", + "0 [Bouncing Golf](https://attack.mitre.org/group... Bouncing Golf \n", + "1 [Dark Caracal](https://attack.mitre.org/groups... Dark Caracal \n", + "2 [APT28](https://attack.mitre.org/groups/G0007)... APT28 \n", + "\n", + " type id \\\n", + "0 intrusion-set intrusion-set--049cef3b-22d5-4be6-b50c-9839c7a... \n", + "1 intrusion-set intrusion-set--8a831aaa-f3e0-47a3-bed8-a9ced74... \n", + "2 intrusion-set intrusion-set--bef4c620-0787-42a8-a96d-b7eb6e8... \n", + "\n", + " aliases \\\n", + "0 [Bouncing Golf] \n", + "1 [Dark Caracal] \n", + "2 [APT28, SNAKEMACKEREL, Swallowtail, Group 74, ... \n", "\n", " modified created x_mitre_version \\\n", - "0 2019-07-16T15:35:20.554Z 2018-10-17T00:14:20.652Z 1.1 \n", - "1 2019-07-27T00:09:33.254Z 2017-05-31T21:31:48.664Z 2.1 \n", + "0 2020-03-26T20:58:44.722Z 2020-01-27T16:55:39.688Z 1.0 \n", + "1 2020-06-03T20:22:40.401Z 2018-10-17T00:14:20.652Z 1.2 \n", + "2 2020-10-06T23:32:21.793Z 2017-05-31T21:31:48.664Z 3.0 \n", "\n", " x_mitre_contributors \n", "0 NaN \n", - "1 [Emily Ratliff, IBM, Richard Gold, Digital Sha... " + "1 NaN \n", + "2 [Sébastien Ruel, CGI, Drew Church, Splunk, Emi... " ] }, - "execution_count": 62, + "execution_count": 56, "metadata": {}, "output_type": "execute_result" } @@ -4777,7 +4192,7 @@ "groups = []\n", "for t in all_mobile['groups']:\n", " groups.append(json.loads(t.serialize()))\n", - "df = json_normalize(groups)\n", + "df = pandas.json_normalize(groups)\n", "df[0:4]" ] }, @@ -4790,7 +4205,7 @@ }, { "cell_type": "code", - "execution_count": 63, + "execution_count": 57, "metadata": {}, "outputs": [ { @@ -4798,7 +4213,7 @@ "output_type": "stream", "text": [ "Number of Malware in Mobile ATT&CK\n", - "45\n" + "74\n" ] } ], @@ -4809,7 +4224,7 @@ }, { "cell_type": "code", - "execution_count": 64, + "execution_count": 58, "metadata": {}, "outputs": [ { @@ -4833,119 +4248,106 @@ " \n", " \n", " \n", + " external_references\n", + " object_marking_refs\n", " created_by_ref\n", " description\n", + " name\n", " id\n", - " external_references\n", - " object_marking_refs\n", - " modified\n", " type\n", - " created\n", - " name\n", " labels\n", + " modified\n", + " created\n", " x_mitre_version\n", - " x_mitre_platforms\n", " x_mitre_aliases\n", + " x_mitre_platforms\n", + " x_mitre_contributors\n", " x_mitre_old_attack_id\n", " \n", " \n", " \n", " \n", " 0\n", - " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", - " [Pallas](https://attack.mitre.org/software/S03...\n", - " malware--c41a8b7c-3e42-4eee-b87d-ad8a100ee878\n", - " [{'external_id': 'S0399', 'source_name': 'mitr...\n", + " [{'external_id': 'S0509', 'source_name': 'mitr...\n", " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", - " 2019-07-14T21:33:23.330Z\n", + " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", + " [FakeSpy](https://attack.mitre.org/software/S0...\n", + " FakeSpy\n", + " malware--838f647e-8ff8-48bd-bbd5-613cee7736cb\n", " malware\n", - " 2019-07-10T15:35:43.217Z\n", - " Pallas\n", " [malware]\n", + " 2020-10-06T20:09:57.659Z\n", + " 2020-09-15T15:18:11.971Z\n", " 1.0\n", + " [FakeSpy]\n", " [Android]\n", - " [Pallas]\n", + " [Ofir Almkias, Cybereason]\n", " NaN\n", " \n", " \n", " 1\n", - " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", - " [Tangelo](https://attack.mitre.org/software/S0...\n", - " malware--35aae10a-97c5-471a-9c67-02c231a7a31a\n", - " [{'external_id': 'S0329', 'source_name': 'mitr...\n", + " [{'external_id': 'S0507', 'source_name': 'mitr...\n", " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", - " 2018-12-11T20:40:31.461Z\n", + " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", + " [eSurv](https://attack.mitre.org/software/S050...\n", + " eSurv\n", + " malware--680f680c-eef9-4f8a-b5f5-f451bf47e403\n", " malware\n", - " 2018-10-17T00:14:20.652Z\n", - " Tangelo\n", " [malware]\n", - " 1.1\n", - " [iOS]\n", - " [Tangelo]\n", - " MOB-S0045\n", + " 2020-09-14T15:39:17.698Z\n", + " 2020-09-14T14:13:45.032Z\n", + " 1.0\n", + " [eSurv]\n", + " [Android, iOS]\n", + " NaN\n", + " NaN\n", " \n", " \n", " 2\n", - " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", - " [Stealth Mango](https://attack.mitre.org/softw...\n", - " malware--085eb36d-697d-4d9a-bac3-96eb879fe73c\n", - " [{'external_id': 'S0328', 'source_name': 'mitr...\n", + " [{'external_id': 'S0506', 'source_name': 'mitr...\n", " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", - " 2018-12-11T20:40:31.461Z\n", + " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", + " [ViperRAT](https://attack.mitre.org/software/S...\n", + " ViperRAT\n", + " malware--f666e17c-b290-43b3-8947-b96bd5148fbb\n", " malware\n", - " 2018-10-17T00:14:20.652Z\n", - " Stealth Mango\n", " [malware]\n", - " 1.1\n", + " 2020-09-29T20:03:42.662Z\n", + " 2020-09-11T16:22:02.954Z\n", + " 1.0\n", + " [ViperRAT]\n", " [Android]\n", - " [Stealth Mango]\n", - " MOB-S0044\n", + " NaN\n", + " NaN\n", " \n", " \n", " 3\n", - " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", - " [Marcher](https://attack.mitre.org/software/S0...\n", - " malware--f9854ba6-989d-43bf-828b-7240b8a65291\n", - " [{'external_id': 'S0317', 'source_name': 'mitr...\n", + " [{'external_id': 'S0505', 'source_name': 'mitr...\n", " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", - " 2018-12-11T20:40:31.461Z\n", + " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", + " [Desert Scorpion](https://attack.mitre.org/sof...\n", + " Desert Scorpion\n", + " malware--3271c107-92c4-442e-9506-e76d62230ee8\n", " malware\n", - " 2018-10-17T00:14:20.652Z\n", - " Marcher\n", " [malware]\n", - " 1.1\n", + " 2020-09-11T16:23:16.039Z\n", + " 2020-09-11T14:54:16.188Z\n", + " 1.0\n", + " [Desert Scorpion]\n", " [Android]\n", - " [Marcher]\n", - " MOB-S0033\n", + " NaN\n", + " NaN\n", " \n", " \n", "\n", "" ], "text/plain": [ - " created_by_ref \\\n", - "0 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", - "1 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", - "2 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", - "3 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", - "\n", - " description \\\n", - "0 [Pallas](https://attack.mitre.org/software/S03... \n", - "1 [Tangelo](https://attack.mitre.org/software/S0... \n", - "2 [Stealth Mango](https://attack.mitre.org/softw... \n", - "3 [Marcher](https://attack.mitre.org/software/S0... \n", - "\n", - " id \\\n", - "0 malware--c41a8b7c-3e42-4eee-b87d-ad8a100ee878 \n", - "1 malware--35aae10a-97c5-471a-9c67-02c231a7a31a \n", - "2 malware--085eb36d-697d-4d9a-bac3-96eb879fe73c \n", - "3 malware--f9854ba6-989d-43bf-828b-7240b8a65291 \n", - "\n", " external_references \\\n", - "0 [{'external_id': 'S0399', 'source_name': 'mitr... \n", - "1 [{'external_id': 'S0329', 'source_name': 'mitr... \n", - "2 [{'external_id': 'S0328', 'source_name': 'mitr... \n", - "3 [{'external_id': 'S0317', 'source_name': 'mitr... \n", + "0 [{'external_id': 'S0509', 'source_name': 'mitr... \n", + "1 [{'external_id': 'S0507', 'source_name': 'mitr... \n", + "2 [{'external_id': 'S0506', 'source_name': 'mitr... \n", + "3 [{'external_id': 'S0505', 'source_name': 'mitr... \n", "\n", " object_marking_refs \\\n", "0 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", @@ -4953,26 +4355,44 @@ "2 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", "3 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", "\n", - " modified type created name \\\n", - "0 2019-07-14T21:33:23.330Z malware 2019-07-10T15:35:43.217Z Pallas \n", - "1 2018-12-11T20:40:31.461Z malware 2018-10-17T00:14:20.652Z Tangelo \n", - "2 2018-12-11T20:40:31.461Z malware 2018-10-17T00:14:20.652Z Stealth Mango \n", - "3 2018-12-11T20:40:31.461Z malware 2018-10-17T00:14:20.652Z Marcher \n", + " created_by_ref \\\n", + "0 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", + "1 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", + "2 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", + "3 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", + "\n", + " description name \\\n", + "0 [FakeSpy](https://attack.mitre.org/software/S0... FakeSpy \n", + "1 [eSurv](https://attack.mitre.org/software/S050... eSurv \n", + "2 [ViperRAT](https://attack.mitre.org/software/S... ViperRAT \n", + "3 [Desert Scorpion](https://attack.mitre.org/sof... Desert Scorpion \n", "\n", - " labels x_mitre_version x_mitre_platforms x_mitre_aliases \\\n", - "0 [malware] 1.0 [Android] [Pallas] \n", - "1 [malware] 1.1 [iOS] [Tangelo] \n", - "2 [malware] 1.1 [Android] [Stealth Mango] \n", - "3 [malware] 1.1 [Android] [Marcher] \n", + " id type labels \\\n", + "0 malware--838f647e-8ff8-48bd-bbd5-613cee7736cb malware [malware] \n", + "1 malware--680f680c-eef9-4f8a-b5f5-f451bf47e403 malware [malware] \n", + "2 malware--f666e17c-b290-43b3-8947-b96bd5148fbb malware [malware] \n", + "3 malware--3271c107-92c4-442e-9506-e76d62230ee8 malware [malware] \n", + "\n", + " modified created x_mitre_version \\\n", + "0 2020-10-06T20:09:57.659Z 2020-09-15T15:18:11.971Z 1.0 \n", + "1 2020-09-14T15:39:17.698Z 2020-09-14T14:13:45.032Z 1.0 \n", + "2 2020-09-29T20:03:42.662Z 2020-09-11T16:22:02.954Z 1.0 \n", + "3 2020-09-11T16:23:16.039Z 2020-09-11T14:54:16.188Z 1.0 \n", + "\n", + " x_mitre_aliases x_mitre_platforms x_mitre_contributors \\\n", + "0 [FakeSpy] [Android] [Ofir Almkias, Cybereason] \n", + "1 [eSurv] [Android, iOS] NaN \n", + "2 [ViperRAT] [Android] NaN \n", + "3 [Desert Scorpion] [Android] NaN \n", "\n", " x_mitre_old_attack_id \n", "0 NaN \n", - "1 MOB-S0045 \n", - "2 MOB-S0044 \n", - "3 MOB-S0033 " + "1 NaN \n", + "2 NaN \n", + "3 NaN " ] }, - "execution_count": 64, + "execution_count": 58, "metadata": {}, "output_type": "execute_result" } @@ -4981,7 +4401,7 @@ "malware = []\n", "for t in all_mobile['malware']:\n", " malware.append(json.loads(t.serialize()))\n", - "df = json_normalize(malware)\n", + "df = pandas.json_normalize(malware)\n", "df[0:4]" ] }, @@ -4994,7 +4414,7 @@ }, { "cell_type": "code", - "execution_count": 65, + "execution_count": 59, "metadata": {}, "outputs": [ { @@ -5002,7 +4422,7 @@ "output_type": "stream", "text": [ "Number of Tools in Mobile ATT&CK\n", - "1\n" + "2\n" ] } ], @@ -5013,7 +4433,7 @@ }, { "cell_type": "code", - "execution_count": 66, + "execution_count": 60, "metadata": {}, "outputs": [ { @@ -5037,68 +4457,99 @@ " \n", " \n", " \n", + " external_references\n", + " object_marking_refs\n", " created_by_ref\n", " description\n", + " name\n", " id\n", - " external_references\n", - " object_marking_refs\n", - " modified\n", " type\n", - " created\n", - " name\n", " labels\n", - " x_mitre_old_attack_id\n", + " modified\n", + " created\n", " x_mitre_version\n", - " x_mitre_platforms\n", " x_mitre_aliases\n", + " x_mitre_platforms\n", + " x_mitre_contributors\n", + " x_mitre_old_attack_id\n", " \n", " \n", " \n", " \n", " 0\n", + " [{'external_id': 'S0408', 'source_name': 'mitr...\n", + " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", + " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", + " [FlexiSpy](https://attack.mitre.org/software/S...\n", + " FlexiSpy\n", + " tool--1622fd3d-fcfc-4d02-ac49-f2d786f79b81\n", + " tool\n", + " [tool]\n", + " 2019-10-14T18:08:28.349Z\n", + " 2019-09-04T15:38:56.070Z\n", + " 1.0\n", + " [FlexiSpy]\n", + " [Android]\n", + " [Emily Ratliff, IBM]\n", + " NaN\n", + " \n", + " \n", + " 1\n", + " [{'source_name': 'mitre-mobile-attack', 'url':...\n", + " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", " [Xbot](https://attack.mitre.org/software/S0298...\n", + " Xbot\n", " tool--da21929e-40c0-443d-bdf4-6b60d15448b4\n", - " [{'external_id': 'S0298', 'source_name': 'mitr...\n", - " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", - " 2018-12-11T20:40:31.461Z\n", " tool\n", - " 2017-10-25T14:48:48.609Z\n", - " Xbot\n", " [tool]\n", - " MOB-S0014\n", + " 2018-12-11T20:40:31.461Z\n", + " 2017-10-25T14:48:48.609Z\n", " 1.1\n", - " [Android]\n", " [Xbot]\n", + " [Android]\n", + " NaN\n", + " MOB-S0014\n", " \n", " \n", "\n", "" ], "text/plain": [ + " external_references \\\n", + "0 [{'external_id': 'S0408', 'source_name': 'mitr... \n", + "1 [{'source_name': 'mitre-mobile-attack', 'url':... \n", + "\n", + " object_marking_refs \\\n", + "0 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", + "1 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", + "\n", " created_by_ref \\\n", "0 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", + "1 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", "\n", - " description \\\n", - "0 [Xbot](https://attack.mitre.org/software/S0298... \n", - "\n", - " id \\\n", - "0 tool--da21929e-40c0-443d-bdf4-6b60d15448b4 \n", + " description name \\\n", + "0 [FlexiSpy](https://attack.mitre.org/software/S... FlexiSpy \n", + "1 [Xbot](https://attack.mitre.org/software/S0298... Xbot \n", "\n", - " external_references \\\n", - "0 [{'external_id': 'S0298', 'source_name': 'mitr... \n", + " id type labels \\\n", + "0 tool--1622fd3d-fcfc-4d02-ac49-f2d786f79b81 tool [tool] \n", + "1 tool--da21929e-40c0-443d-bdf4-6b60d15448b4 tool [tool] \n", "\n", - " object_marking_refs \\\n", - "0 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", + " modified created x_mitre_version \\\n", + "0 2019-10-14T18:08:28.349Z 2019-09-04T15:38:56.070Z 1.0 \n", + "1 2018-12-11T20:40:31.461Z 2017-10-25T14:48:48.609Z 1.1 \n", "\n", - " modified type created name labels \\\n", - "0 2018-12-11T20:40:31.461Z tool 2017-10-25T14:48:48.609Z Xbot [tool] \n", + " x_mitre_aliases x_mitre_platforms x_mitre_contributors \\\n", + "0 [FlexiSpy] [Android] [Emily Ratliff, IBM] \n", + "1 [Xbot] [Android] NaN \n", "\n", - " x_mitre_old_attack_id x_mitre_version x_mitre_platforms x_mitre_aliases \n", - "0 MOB-S0014 1.1 [Android] [Xbot] " + " x_mitre_old_attack_id \n", + "0 NaN \n", + "1 MOB-S0014 " ] }, - "execution_count": 66, + "execution_count": 60, "metadata": {}, "output_type": "execute_result" } @@ -5107,7 +4558,7 @@ "tools = []\n", "for t in all_mobile['tools']:\n", " tools.append(json.loads(t.serialize()))\n", - "df = json_normalize(tools)\n", + "df = pandas.json_normalize(tools)\n", "df[0:4]" ] }, @@ -5120,7 +4571,7 @@ }, { "cell_type": "code", - "execution_count": 67, + "execution_count": 61, "metadata": {}, "outputs": [ { @@ -5128,7 +4579,7 @@ "output_type": "stream", "text": [ "Number of Relationships in Mobile ATT&CK\n", - "322\n" + "795\n" ] } ], @@ -5139,7 +4590,7 @@ }, { "cell_type": "code", - "execution_count": 68, + "execution_count": 62, "metadata": {}, "outputs": [ { @@ -5164,15 +4615,15 @@ " \n", " \n", " created_by_ref\n", - " description\n", - " type\n", - " id\n", " object_marking_refs\n", - " created\n", + " id\n", + " type\n", " modified\n", + " created\n", " source_ref\n", " relationship_type\n", " target_ref\n", + " description\n", " external_references\n", " \n", " \n", @@ -5180,58 +4631,58 @@ " \n", " 0\n", " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", - " An EMM/MDM can use the Android `DevicePolicyMa...\n", - " relationship\n", - " relationship--fbd2d4f7-96ff-4624-a567-d4882f0c...\n", " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", - " 2019-07-23T15:35:23.530Z\n", - " 2019-07-23T15:35:23.530Z\n", - " course-of-action--649f7268-4c12-483b-ac84-4b7b...\n", - " mitigates\n", - " attack-pattern--2204c371-6100-4ae0-82f3-25c07c...\n", + " relationship--39f46abc-d9e3-463d-9340-3bc8334a...\n", + " relationship\n", + " 2020-10-23T15:05:40.967Z\n", + " 2020-10-23T15:05:40.967Z\n", + " attack-pattern--8f142a25-f6c3-4520-bd50-2ae3ab...\n", + " revoked-by\n", + " attack-pattern--77e30eee-fd48-40b4-99ec-73e97c...\n", + " NaN\n", " NaN\n", " \n", " \n", " 1\n", " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", - " [Dark Caracal](https://attack.mitre.org/groups...\n", - " relationship\n", - " relationship--61071d73-fcdf-4820-afd0-e3f0983e...\n", " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", - " 2019-07-10T15:42:09.606Z\n", - " 2019-07-16T15:35:20.953Z\n", - " intrusion-set--8a831aaa-f3e0-47a3-bed8-a9ced74...\n", - " uses\n", - " attack-pattern--6a3f6490-9c44-40de-b059-e5940f...\n", - " [{'source_name': 'Lookout Dark Caracal Jan 201...\n", + " relationship--e373111c-aa34-4686-a286-7c9b4267...\n", + " relationship\n", + " 2020-10-01T12:43:42.238Z\n", + " 2020-09-30T14:48:16.522Z\n", + " course-of-action--0beabf44-e8d8-4ae4-9122-ef56...\n", + " mitigates\n", + " attack-pattern--8197f026-64da-4700-93b9-b55ba5...\n", + " New OS releases frequently contain additional ...\n", + " NaN\n", " \n", " \n", " 2\n", " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", - " [Dark Caracal](https://attack.mitre.org/groups...\n", - " relationship\n", - " relationship--ae9a0fb3-901b-4da2-b6ad-633ddbfa...\n", " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", - " 2019-07-10T15:42:09.591Z\n", - " 2019-07-16T15:35:21.028Z\n", - " intrusion-set--8a831aaa-f3e0-47a3-bed8-a9ced74...\n", - " uses\n", - " attack-pattern--53263a67-075e-48fa-974b-91c5b5...\n", - " [{'source_name': 'Lookout Dark Caracal Jan 201...\n", + " relationship--37459382-00b7-4699-a294-d25f53bf...\n", + " relationship\n", + " 2020-10-01T12:42:21.985Z\n", + " 2020-09-30T14:36:43.256Z\n", + " course-of-action--0beabf44-e8d8-4ae4-9122-ef56...\n", + " mitigates\n", + " attack-pattern--77e30eee-fd48-40b4-99ec-73e97c...\n", + " iOS 11 introduced a first-come-first-served pr...\n", + " [{'source_name': 'Trend Micro iOS URL Hijackin...\n", " \n", " \n", " 3\n", " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", - " [Pallas](https://attack.mitre.org/software/S03...\n", - " relationship\n", - " relationship--60ecd154-e907-419a-b41d-1a9a1f59...\n", " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", - " 2019-07-10T15:35:43.712Z\n", - " 2019-07-14T21:33:23.556Z\n", - " malware--c41a8b7c-3e42-4eee-b87d-ad8a100ee878\n", + " relationship--455b1287-5784-42b4-91fb-01dac007...\n", + " relationship\n", + " 2020-09-29T13:24:15.234Z\n", + " 2020-09-29T13:24:15.234Z\n", + " malware--317a2c10-d489-431e-b6b2-f0251fddc88e\n", " uses\n", - " attack-pattern--8e27551a-5080-4148-a584-c64348...\n", - " [{'source_name': 'Lookout Dark Caracal Jan 201...\n", + " attack-pattern--3dd58c80-4c2e-458c-9503-1b2cd2...\n", + " [Dendroid](https://attack.mitre.org/software/S...\n", + " [{'source_name': 'Lookout-Dendroid', 'descript...\n", " \n", " \n", "\n", @@ -5244,50 +4695,50 @@ "2 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", "3 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", "\n", - " description type \\\n", - "0 An EMM/MDM can use the Android `DevicePolicyMa... relationship \n", - "1 [Dark Caracal](https://attack.mitre.org/groups... relationship \n", - "2 [Dark Caracal](https://attack.mitre.org/groups... relationship \n", - "3 [Pallas](https://attack.mitre.org/software/S03... relationship \n", - "\n", - " id \\\n", - "0 relationship--fbd2d4f7-96ff-4624-a567-d4882f0c... \n", - "1 relationship--61071d73-fcdf-4820-afd0-e3f0983e... \n", - "2 relationship--ae9a0fb3-901b-4da2-b6ad-633ddbfa... \n", - "3 relationship--60ecd154-e907-419a-b41d-1a9a1f59... \n", - "\n", " object_marking_refs \\\n", "0 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", "1 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", "2 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", "3 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", "\n", - " created modified \\\n", - "0 2019-07-23T15:35:23.530Z 2019-07-23T15:35:23.530Z \n", - "1 2019-07-10T15:42:09.606Z 2019-07-16T15:35:20.953Z \n", - "2 2019-07-10T15:42:09.591Z 2019-07-16T15:35:21.028Z \n", - "3 2019-07-10T15:35:43.712Z 2019-07-14T21:33:23.556Z \n", + " id type \\\n", + "0 relationship--39f46abc-d9e3-463d-9340-3bc8334a... relationship \n", + "1 relationship--e373111c-aa34-4686-a286-7c9b4267... relationship \n", + "2 relationship--37459382-00b7-4699-a294-d25f53bf... relationship \n", + "3 relationship--455b1287-5784-42b4-91fb-01dac007... relationship \n", + "\n", + " modified created \\\n", + "0 2020-10-23T15:05:40.967Z 2020-10-23T15:05:40.967Z \n", + "1 2020-10-01T12:43:42.238Z 2020-09-30T14:48:16.522Z \n", + "2 2020-10-01T12:42:21.985Z 2020-09-30T14:36:43.256Z \n", + "3 2020-09-29T13:24:15.234Z 2020-09-29T13:24:15.234Z \n", "\n", " source_ref relationship_type \\\n", - "0 course-of-action--649f7268-4c12-483b-ac84-4b7b... mitigates \n", - "1 intrusion-set--8a831aaa-f3e0-47a3-bed8-a9ced74... uses \n", - "2 intrusion-set--8a831aaa-f3e0-47a3-bed8-a9ced74... uses \n", - "3 malware--c41a8b7c-3e42-4eee-b87d-ad8a100ee878 uses \n", + "0 attack-pattern--8f142a25-f6c3-4520-bd50-2ae3ab... revoked-by \n", + "1 course-of-action--0beabf44-e8d8-4ae4-9122-ef56... mitigates \n", + "2 course-of-action--0beabf44-e8d8-4ae4-9122-ef56... mitigates \n", + "3 malware--317a2c10-d489-431e-b6b2-f0251fddc88e uses \n", "\n", " target_ref \\\n", - "0 attack-pattern--2204c371-6100-4ae0-82f3-25c07c... \n", - "1 attack-pattern--6a3f6490-9c44-40de-b059-e5940f... \n", - "2 attack-pattern--53263a67-075e-48fa-974b-91c5b5... \n", - "3 attack-pattern--8e27551a-5080-4148-a584-c64348... \n", + "0 attack-pattern--77e30eee-fd48-40b4-99ec-73e97c... \n", + "1 attack-pattern--8197f026-64da-4700-93b9-b55ba5... \n", + "2 attack-pattern--77e30eee-fd48-40b4-99ec-73e97c... \n", + "3 attack-pattern--3dd58c80-4c2e-458c-9503-1b2cd2... \n", + "\n", + " description \\\n", + "0 NaN \n", + "1 New OS releases frequently contain additional ... \n", + "2 iOS 11 introduced a first-come-first-served pr... \n", + "3 [Dendroid](https://attack.mitre.org/software/S... \n", "\n", " external_references \n", "0 NaN \n", - "1 [{'source_name': 'Lookout Dark Caracal Jan 201... \n", - "2 [{'source_name': 'Lookout Dark Caracal Jan 201... \n", - "3 [{'source_name': 'Lookout Dark Caracal Jan 201... " + "1 NaN \n", + "2 [{'source_name': 'Trend Micro iOS URL Hijackin... \n", + "3 [{'source_name': 'Lookout-Dendroid', 'descript... " ] }, - "execution_count": 68, + "execution_count": 62, "metadata": {}, "output_type": "execute_result" } @@ -5296,7 +4747,7 @@ "relations = []\n", "for t in all_mobile['relationships']:\n", " relations.append(json.loads(t.serialize()))\n", - "df = json_normalize(relations)\n", + "df = pandas.json_normalize(relations)\n", "df[0:4]" ] }, @@ -5318,7 +4769,7 @@ }, { "cell_type": "code", - "execution_count": 69, + "execution_count": 63, "metadata": {}, "outputs": [ { @@ -5326,7 +4777,7 @@ "output_type": "stream", "text": [ "Number of Techniques in Enterprise ATT&CK\n", - "244\n" + "665\n" ] } ], @@ -5338,7 +4789,7 @@ }, { "cell_type": "code", - "execution_count": 70, + "execution_count": 64, "metadata": {}, "outputs": [ { @@ -5362,49 +4813,49 @@ " \n", " \n", " \n", - " external_references\n", + " id\n", + " description\n", + " name\n", + " created_by_ref\n", " object_marking_refs\n", + " external_references\n", " type\n", - " modified\n", - " created_by_ref\n", " kill_chain_phases\n", - " id\n", - " name\n", + " modified\n", " created\n", - " description\n", " ...\n", - " x_mitre_data_sources\n", - " x_mitre_detection\n", - " x_mitre_platforms\n", - " x_mitre_version\n", - " x_mitre_system_requirements\n", + " x_mitre_permissions_required\n", " x_mitre_defense_bypassed\n", - " x_mitre_impact_type\n", - " x_mitre_remote_support\n", - " x_mitre_effective_permissions\n", + " x_mitre_contributors\n", + " x_mitre_system_requirements\n", " x_mitre_network_requirements\n", + " x_mitre_effective_permissions\n", + " x_mitre_remote_support\n", + " x_mitre_impact_type\n", + " revoked\n", + " x_mitre_deprecated\n", " \n", " \n", " \n", " \n", " 0\n", - " [{'external_id': 'T1500', 'source_name': 'mitr...\n", + " attack-pattern--818302b2-d640-477b-bf88-873120...\n", + " Adversaries may abuse scripting or built-in co...\n", + " Network Device CLI\n", + " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", + " [{'source_name': 'mitre-attack', 'external_id'...\n", " attack-pattern\n", - " 2019-04-29T21:13:49.686Z\n", - " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", - " [{'phase_name': 'defense-evasion', 'kill_chain...\n", - " attack-pattern--cf7b3a06-8b42-4c33-bbe9-012120...\n", - " Compile After Delivery\n", - " 2019-04-25T20:53:07.719Z\n", - " Adversaries may attempt to make payloads diffi...\n", + " [{'kill_chain_name': 'mitre-attack', 'phase_na...\n", + " 2020-10-22T16:43:38.388Z\n", + " 2020-10-20T00:09:33.072Z\n", " ...\n", - " [Process command-line parameters, Process moni...\n", - " Monitor the execution file paths and command-l...\n", - " [Linux, macOS, Windows]\n", - " 1.0\n", - " [Compiler software (either native to the syste...\n", - " [Static File Analysis, Binary Analysis, Anti-v...\n", + " [Administrator, User]\n", + " NaN\n", + " NaN\n", + " NaN\n", + " NaN\n", + " NaN\n", " NaN\n", " NaN\n", " NaN\n", @@ -5412,21 +4863,21 @@ " \n", " \n", " 1\n", - " [{'external_id': 'T1501', 'source_name': 'mitr...\n", + " attack-pattern--52759bf1-fe12-4052-ace6-c5b0cf...\n", + " Adversaries may access network configuration f...\n", + " Network Device Configuration Dump\n", + " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", + " [{'source_name': 'mitre-attack', 'external_id'...\n", " attack-pattern\n", - " 2019-04-29T14:14:08.450Z\n", - " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", - " [{'phase_name': 'persistence', 'kill_chain_nam...\n", - " attack-pattern--0fff2797-19cb-41ea-a5f1-8a9303...\n", - " Systemd Service\n", - " 2019-04-23T15:34:30.008Z\n", - " Systemd services can be used to establish pers...\n", + " [{'kill_chain_name': 'mitre-attack', 'phase_na...\n", + " 2020-10-22T01:45:55.144Z\n", + " 2020-10-20T00:08:21.745Z\n", " ...\n", - " [Process command-line parameters, Process moni...\n", - " Systemd service unit files may be detected by ...\n", - " [Linux]\n", - " 1.0\n", + " [Administrator]\n", + " NaN\n", + " NaN\n", + " NaN\n", " NaN\n", " NaN\n", " NaN\n", @@ -5436,47 +4887,47 @@ " \n", " \n", " 2\n", - " [{'external_id': 'T1499', 'source_name': 'mitr...\n", + " attack-pattern--28abec6c-4443-4b03-8206-07f2e2...\n", + " Adversaries may abuse netbooting to load an un...\n", + " TFTP Boot\n", + " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", + " [{'source_name': 'mitre-attack', 'external_id'...\n", " attack-pattern\n", - " 2019-04-29T13:20:36.795Z\n", - " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", - " [{'phase_name': 'impact', 'kill_chain_name': '...\n", - " attack-pattern--c675646d-e204-4aa8-978d-e3d6d6...\n", - " Endpoint Denial of Service\n", - " 2019-04-18T11:00:55.862Z\n", - " Adversaries may perform Endpoint Denial of Ser...\n", + " [{'kill_chain_name': 'mitre-attack', 'phase_na...\n", + " 2020-10-22T16:35:53.806Z\n", + " 2020-10-20T00:06:56.180Z\n", " ...\n", - " [SSL/TLS inspection, Web logs, Web application...\n", - " Detection of Endpoint DoS can sometimes be ach...\n", - " [Linux, macOS, Windows]\n", - " 1.0\n", + " [Administrator]\n", + " NaN\n", + " NaN\n", + " NaN\n", + " NaN\n", " NaN\n", " NaN\n", - " [Availability]\n", " NaN\n", " NaN\n", " NaN\n", " \n", " \n", " 3\n", - " [{'external_id': 'T1497', 'source_name': 'mitr...\n", + " attack-pattern--a6557c75-798f-42e4-be70-ab4502...\n", + " Adversaries may abuse the ROM Monitor (ROMMON)...\n", + " ROMMONkit\n", + " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", + " [{'source_name': 'mitre-attack', 'external_id'...\n", " attack-pattern\n", - " 2019-06-10T17:37:37.138Z\n", - " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", - " [{'phase_name': 'defense-evasion', 'kill_chain...\n", - " attack-pattern--82caa33e-d11a-433a-94ea-9b5a5f...\n", - " Virtualization/Sandbox Evasion\n", - " 2019-04-17T22:22:24.505Z\n", - " Adversaries may check for the presence of a vi...\n", + " [{'kill_chain_name': 'mitre-attack', 'phase_na...\n", + " 2020-10-22T02:18:19.568Z\n", + " 2020-10-20T00:05:48.790Z\n", " ...\n", - " [Process monitoring, Process command-line para...\n", - " Virtualization, sandbox, and related discovery...\n", - " [Windows]\n", - " 1.0\n", + " [Administrator]\n", + " NaN\n", + " NaN\n", + " NaN\n", + " NaN\n", " NaN\n", - " [Anti-virus, Host forensic analysis, Signature...\n", " NaN\n", " NaN\n", " NaN\n", @@ -5484,92 +4935,86 @@ " \n", " \n", "\n", - "

4 rows × 22 columns

\n", + "

4 rows × 25 columns

\n", "" ], "text/plain": [ - " external_references \\\n", - "0 [{'external_id': 'T1500', 'source_name': 'mitr... \n", - "1 [{'external_id': 'T1501', 'source_name': 'mitr... \n", - "2 [{'external_id': 'T1499', 'source_name': 'mitr... \n", - "3 [{'external_id': 'T1497', 'source_name': 'mitr... \n", + " id \\\n", + "0 attack-pattern--818302b2-d640-477b-bf88-873120... \n", + "1 attack-pattern--52759bf1-fe12-4052-ace6-c5b0cf... \n", + "2 attack-pattern--28abec6c-4443-4b03-8206-07f2e2... \n", + "3 attack-pattern--a6557c75-798f-42e4-be70-ab4502... \n", "\n", - " object_marking_refs type \\\n", - "0 [marking-definition--fa42a846-8d90-4e51-bc29-7... attack-pattern \n", - "1 [marking-definition--fa42a846-8d90-4e51-bc29-7... attack-pattern \n", - "2 [marking-definition--fa42a846-8d90-4e51-bc29-7... attack-pattern \n", - "3 [marking-definition--fa42a846-8d90-4e51-bc29-7... attack-pattern \n", + " description \\\n", + "0 Adversaries may abuse scripting or built-in co... \n", + "1 Adversaries may access network configuration f... \n", + "2 Adversaries may abuse netbooting to load an un... \n", + "3 Adversaries may abuse the ROM Monitor (ROMMON)... \n", "\n", - " modified created_by_ref \\\n", - "0 2019-04-29T21:13:49.686Z identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", - "1 2019-04-29T14:14:08.450Z identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", - "2 2019-04-29T13:20:36.795Z identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", - "3 2019-06-10T17:37:37.138Z identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", + " name \\\n", + "0 Network Device CLI \n", + "1 Network Device Configuration Dump \n", + "2 TFTP Boot \n", + "3 ROMMONkit \n", "\n", - " kill_chain_phases \\\n", - "0 [{'phase_name': 'defense-evasion', 'kill_chain... \n", - "1 [{'phase_name': 'persistence', 'kill_chain_nam... \n", - "2 [{'phase_name': 'impact', 'kill_chain_name': '... \n", - "3 [{'phase_name': 'defense-evasion', 'kill_chain... \n", + " created_by_ref \\\n", + "0 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", + "1 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", + "2 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", + "3 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", "\n", - " id \\\n", - "0 attack-pattern--cf7b3a06-8b42-4c33-bbe9-012120... \n", - "1 attack-pattern--0fff2797-19cb-41ea-a5f1-8a9303... \n", - "2 attack-pattern--c675646d-e204-4aa8-978d-e3d6d6... \n", - "3 attack-pattern--82caa33e-d11a-433a-94ea-9b5a5f... \n", - "\n", - " name created \\\n", - "0 Compile After Delivery 2019-04-25T20:53:07.719Z \n", - "1 Systemd Service 2019-04-23T15:34:30.008Z \n", - "2 Endpoint Denial of Service 2019-04-18T11:00:55.862Z \n", - "3 Virtualization/Sandbox Evasion 2019-04-17T22:22:24.505Z \n", - "\n", - " description ... \\\n", - "0 Adversaries may attempt to make payloads diffi... ... \n", - "1 Systemd services can be used to establish pers... ... \n", - "2 Adversaries may perform Endpoint Denial of Ser... ... \n", - "3 Adversaries may check for the presence of a vi... ... \n", - "\n", - " x_mitre_data_sources \\\n", - "0 [Process command-line parameters, Process moni... \n", - "1 [Process command-line parameters, Process moni... \n", - "2 [SSL/TLS inspection, Web logs, Web application... \n", - "3 [Process monitoring, Process command-line para... \n", - "\n", - " x_mitre_detection x_mitre_platforms \\\n", - "0 Monitor the execution file paths and command-l... [Linux, macOS, Windows] \n", - "1 Systemd service unit files may be detected by ... [Linux] \n", - "2 Detection of Endpoint DoS can sometimes be ach... [Linux, macOS, Windows] \n", - "3 Virtualization, sandbox, and related discovery... [Windows] \n", - "\n", - " x_mitre_version x_mitre_system_requirements \\\n", - "0 1.0 [Compiler software (either native to the syste... \n", - "1 1.0 NaN \n", - "2 1.0 NaN \n", - "3 1.0 NaN \n", - "\n", - " x_mitre_defense_bypassed x_mitre_impact_type \\\n", - "0 [Static File Analysis, Binary Analysis, Anti-v... NaN \n", - "1 NaN NaN \n", - "2 NaN [Availability] \n", - "3 [Anti-virus, Host forensic analysis, Signature... NaN \n", - "\n", - " x_mitre_remote_support x_mitre_effective_permissions \\\n", - "0 NaN NaN \n", - "1 NaN NaN \n", - "2 NaN NaN \n", - "3 NaN NaN \n", - "\n", - " x_mitre_network_requirements \n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "\n", - "[4 rows x 22 columns]" + " object_marking_refs \\\n", + "0 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", + "1 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", + "2 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", + "3 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", + "\n", + " external_references type \\\n", + "0 [{'source_name': 'mitre-attack', 'external_id'... attack-pattern \n", + "1 [{'source_name': 'mitre-attack', 'external_id'... attack-pattern \n", + "2 [{'source_name': 'mitre-attack', 'external_id'... attack-pattern \n", + "3 [{'source_name': 'mitre-attack', 'external_id'... attack-pattern \n", + "\n", + " kill_chain_phases \\\n", + "0 [{'kill_chain_name': 'mitre-attack', 'phase_na... \n", + "1 [{'kill_chain_name': 'mitre-attack', 'phase_na... \n", + "2 [{'kill_chain_name': 'mitre-attack', 'phase_na... \n", + "3 [{'kill_chain_name': 'mitre-attack', 'phase_na... \n", + "\n", + " modified created ... \\\n", + "0 2020-10-22T16:43:38.388Z 2020-10-20T00:09:33.072Z ... \n", + "1 2020-10-22T01:45:55.144Z 2020-10-20T00:08:21.745Z ... \n", + "2 2020-10-22T16:35:53.806Z 2020-10-20T00:06:56.180Z ... \n", + "3 2020-10-22T02:18:19.568Z 2020-10-20T00:05:48.790Z ... \n", + "\n", + " x_mitre_permissions_required x_mitre_defense_bypassed x_mitre_contributors \\\n", + "0 [Administrator, User] NaN NaN \n", + "1 [Administrator] NaN NaN \n", + "2 [Administrator] NaN NaN \n", + "3 [Administrator] NaN NaN \n", + "\n", + " x_mitre_system_requirements x_mitre_network_requirements \\\n", + "0 NaN NaN \n", + "1 NaN NaN \n", + "2 NaN NaN \n", + "3 NaN NaN \n", + "\n", + " x_mitre_effective_permissions x_mitre_remote_support x_mitre_impact_type \\\n", + "0 NaN NaN NaN \n", + "1 NaN NaN NaN \n", + "2 NaN NaN NaN \n", + "3 NaN NaN NaN \n", + "\n", + " revoked x_mitre_deprecated \n", + "0 NaN NaN \n", + "1 NaN NaN \n", + "2 NaN NaN \n", + "3 NaN NaN \n", + "\n", + "[4 rows x 25 columns]" ] }, - "execution_count": 70, + "execution_count": 64, "metadata": {}, "output_type": "execute_result" } @@ -5578,7 +5023,7 @@ "techniques_list = []\n", "for t in techniques:\n", " techniques_list.append(json.loads(t.serialize()))\n", - "df = json_normalize(techniques_list)\n", + "df = pandas.json_normalize(techniques_list)\n", "df[0:4]" ] }, @@ -5591,14 +5036,28 @@ }, { "cell_type": "code", - "execution_count": 71, + "execution_count": 65, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Number of Techniques in PRE-ATT&CK\n", + "Number of Techniques in PRE-ATT&CK\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/usr/local/lib/python3.8/site-packages/attackcti/attack_api.py:455: UserWarning: PRE ATT&CK is deprecated. It will be removed in future versions. Consider adjusting your application\n", + " warnings.warn(\"PRE ATT&CK is deprecated. It will be removed in future versions. Consider adjusting your application\")\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ "174\n" ] } @@ -5611,7 +5070,7 @@ }, { "cell_type": "code", - "execution_count": 72, + "execution_count": 66, "metadata": {}, "outputs": [ { @@ -5635,170 +5094,175 @@ " \n", " \n", " \n", + " id\n", + " created_by_ref\n", + " name\n", + " description\n", " external_references\n", " object_marking_refs\n", - " modified\n", - " created_by_ref\n", + " type\n", " kill_chain_phases\n", - " id\n", - " name\n", + " modified\n", " created\n", - " type\n", - " description\n", - " x_mitre_detectable_by_common_defenses\n", + " x_mitre_is_subtechnique\n", + " x_mitre_old_attack_id\n", " x_mitre_version\n", " x_mitre_difficulty_for_adversary_explanation\n", - " x_mitre_old_attack_id\n", " x_mitre_difficulty_for_adversary\n", " x_mitre_detectable_by_common_defenses_explanation\n", + " x_mitre_detectable_by_common_defenses\n", " x_mitre_deprecated\n", " \n", " \n", " \n", " \n", " 0\n", - " [{'url': 'https://attack.mitre.org/techniques/...\n", - " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", - " 2018-10-17T00:14:20.652Z\n", - " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", - " [{'phase_name': 'technical-information-gatheri...\n", " attack-pattern--b182f29c-2505-4b32-a000-0440ef...\n", + " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", " Spearphishing for Information\n", - " 2018-04-18T17:59:24.739Z\n", + " This object is deprecated as its content has b...\n", + " [{'source_name': 'mitre-pre-attack', 'url': 'h...\n", + " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", " attack-pattern\n", - " Spearphishing for information is a specific va...\n", - " Partial\n", + " [{'kill_chain_name': 'mitre-pre-attack', 'phas...\n", + " 2020-10-26T13:42:49.342Z\n", + " 2018-04-18T17:59:24.739Z\n", + " False\n", + " PRE-T1174\n", " 1.0\n", " Sending emails is trivial, and, over time, an ...\n", - " PRE-T1174\n", " Yes\n", " Depending on the specific method of phishing, ...\n", - " NaN\n", + " Partial\n", + " True\n", " \n", " \n", " 1\n", - " [{'url': 'https://attack.mitre.org/techniques/...\n", - " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", - " 2018-10-17T00:14:20.652Z\n", + " attack-pattern--2b9a666e-bd59-4f67-9031-ed41b4...\n", " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", - " [{'phase_name': 'adversary-opsec', 'kill_chain...\n", - " attack-pattern--286cc500-4291-45c2-99a1-e760db...\n", - " Acquire and/or use 3rd party infrastructure se...\n", - " 2017-12-14T16:46:06.044Z\n", + " Acquire OSINT data sets and information\n", + " This object is deprecated as its content has b...\n", + " [{'source_name': 'mitre-pre-attack', 'url': 'h...\n", + " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", " attack-pattern\n", - " A wide variety of cloud, virtual private servi...\n", - " No\n", + " [{'kill_chain_name': 'mitre-pre-attack', 'phas...\n", + " 2020-10-26T13:42:49.342Z\n", + " 2017-12-14T16:46:06.044Z\n", + " NaN\n", + " PRE-T1043\n", " 1.0\n", - " Wide range of 3rd party services for hosting, ...\n", - " PRE-T1084\n", + " Possible to gather digital intelligence about ...\n", " Yes\n", - " 3rd party services highly leveraged by legitim...\n", - " NaN\n", + " This activity is indistinguishable from legiti...\n", + " No\n", + " True\n", " \n", " \n", " 2\n", - " [{'url': 'https://attack.mitre.org/techniques/...\n", - " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", - " 2018-10-17T00:14:20.652Z\n", + " attack-pattern--1a295f87-af63-4d94-b130-039d62...\n", " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", - " [{'phase_name': 'people-information-gathering'...\n", - " attack-pattern--b3f36317-3940-4d71-968f-e11ac1...\n", - " Aggregate individual's digital footprint\n", - " 2017-12-14T16:46:06.044Z\n", + " Acquire and/or use 3rd party software services\n", + " This object is deprecated as its content has b...\n", + " [{'source_name': 'mitre-pre-attack', 'url': 'h...\n", + " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", " attack-pattern\n", - " In addition to a target's social media presenc...\n", - " No\n", + " [{'kill_chain_name': 'mitre-pre-attack', 'phas...\n", + " 2020-10-26T13:42:49.342Z\n", + " 2017-12-14T16:46:06.044Z\n", + " NaN\n", + " PRE-T1085\n", " 1.0\n", - " Information readily available through searches\n", - " PRE-T1052\n", + " 3rd party services like these listed are freel...\n", " Yes\n", - " Searching publicly available sources that cann...\n", - " NaN\n", + " Defender will not have visibility over account...\n", + " No\n", + " True\n", " \n", " \n", " 3\n", - " [{'url': 'https://attack.mitre.org/techniques/...\n", - " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", - " 2018-10-17T00:14:20.652Z\n", + " attack-pattern--fe421ab9-c8f3-42f7-9ae1-5d6c32...\n", " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", - " [{'phase_name': 'technical-weakness-identifica...\n", - " attack-pattern--a1e8d61b-22e1-4983-8485-964201...\n", - " Analyze hardware/software security defensive c...\n", - " 2017-12-14T16:46:06.044Z\n", + " Analyze application security posture\n", + " This object is deprecated as its content has b...\n", + " [{'source_name': 'mitre-pre-attack', 'url': 'h...\n", + " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", " attack-pattern\n", - " An adversary can probe a victim's network to d...\n", - " No\n", + " [{'kill_chain_name': 'mitre-pre-attack', 'phas...\n", + " 2020-10-26T13:42:49.342Z\n", + " 2017-12-14T16:46:06.044Z\n", + " NaN\n", + " PRE-T1070\n", " 1.0\n", - " Analyze network traffic to determine security ...\n", - " PRE-T1071\n", + " Analyze technical scanning results to identify...\n", " Yes\n", " This can be done offline after the data has be...\n", - " NaN\n", + " No\n", + " True\n", " \n", " \n", "\n", "" ], "text/plain": [ - " external_references \\\n", - "0 [{'url': 'https://attack.mitre.org/techniques/... \n", - "1 [{'url': 'https://attack.mitre.org/techniques/... \n", - "2 [{'url': 'https://attack.mitre.org/techniques/... \n", - "3 [{'url': 'https://attack.mitre.org/techniques/... \n", + " id \\\n", + "0 attack-pattern--b182f29c-2505-4b32-a000-0440ef... \n", + "1 attack-pattern--2b9a666e-bd59-4f67-9031-ed41b4... \n", + "2 attack-pattern--1a295f87-af63-4d94-b130-039d62... \n", + "3 attack-pattern--fe421ab9-c8f3-42f7-9ae1-5d6c32... \n", "\n", - " object_marking_refs \\\n", - "0 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", - "1 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", - "2 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", - "3 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", + " created_by_ref \\\n", + "0 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", + "1 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", + "2 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", + "3 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", "\n", - " modified created_by_ref \\\n", - "0 2018-10-17T00:14:20.652Z identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", - "1 2018-10-17T00:14:20.652Z identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", - "2 2018-10-17T00:14:20.652Z identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", - "3 2018-10-17T00:14:20.652Z identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", + " name \\\n", + "0 Spearphishing for Information \n", + "1 Acquire OSINT data sets and information \n", + "2 Acquire and/or use 3rd party software services \n", + "3 Analyze application security posture \n", "\n", - " kill_chain_phases \\\n", - "0 [{'phase_name': 'technical-information-gatheri... \n", - "1 [{'phase_name': 'adversary-opsec', 'kill_chain... \n", - "2 [{'phase_name': 'people-information-gathering'... \n", - "3 [{'phase_name': 'technical-weakness-identifica... \n", + " description \\\n", + "0 This object is deprecated as its content has b... \n", + "1 This object is deprecated as its content has b... \n", + "2 This object is deprecated as its content has b... \n", + "3 This object is deprecated as its content has b... \n", "\n", - " id \\\n", - "0 attack-pattern--b182f29c-2505-4b32-a000-0440ef... \n", - "1 attack-pattern--286cc500-4291-45c2-99a1-e760db... \n", - "2 attack-pattern--b3f36317-3940-4d71-968f-e11ac1... \n", - "3 attack-pattern--a1e8d61b-22e1-4983-8485-964201... \n", - "\n", - " name \\\n", - "0 Spearphishing for Information \n", - "1 Acquire and/or use 3rd party infrastructure se... \n", - "2 Aggregate individual's digital footprint \n", - "3 Analyze hardware/software security defensive c... \n", - "\n", - " created type \\\n", - "0 2018-04-18T17:59:24.739Z attack-pattern \n", - "1 2017-12-14T16:46:06.044Z attack-pattern \n", - "2 2017-12-14T16:46:06.044Z attack-pattern \n", - "3 2017-12-14T16:46:06.044Z attack-pattern \n", + " external_references \\\n", + "0 [{'source_name': 'mitre-pre-attack', 'url': 'h... \n", + "1 [{'source_name': 'mitre-pre-attack', 'url': 'h... \n", + "2 [{'source_name': 'mitre-pre-attack', 'url': 'h... \n", + "3 [{'source_name': 'mitre-pre-attack', 'url': 'h... \n", "\n", - " description \\\n", - "0 Spearphishing for information is a specific va... \n", - "1 A wide variety of cloud, virtual private servi... \n", - "2 In addition to a target's social media presenc... \n", - "3 An adversary can probe a victim's network to d... \n", - "\n", - " x_mitre_detectable_by_common_defenses x_mitre_version \\\n", - "0 Partial 1.0 \n", - "1 No 1.0 \n", - "2 No 1.0 \n", - "3 No 1.0 \n", - "\n", - " x_mitre_difficulty_for_adversary_explanation x_mitre_old_attack_id \\\n", - "0 Sending emails is trivial, and, over time, an ... PRE-T1174 \n", - "1 Wide range of 3rd party services for hosting, ... PRE-T1084 \n", - "2 Information readily available through searches PRE-T1052 \n", - "3 Analyze network traffic to determine security ... PRE-T1071 \n", + " object_marking_refs type \\\n", + "0 [marking-definition--fa42a846-8d90-4e51-bc29-7... attack-pattern \n", + "1 [marking-definition--fa42a846-8d90-4e51-bc29-7... attack-pattern \n", + "2 [marking-definition--fa42a846-8d90-4e51-bc29-7... attack-pattern \n", + "3 [marking-definition--fa42a846-8d90-4e51-bc29-7... attack-pattern \n", + "\n", + " kill_chain_phases \\\n", + "0 [{'kill_chain_name': 'mitre-pre-attack', 'phas... \n", + "1 [{'kill_chain_name': 'mitre-pre-attack', 'phas... \n", + "2 [{'kill_chain_name': 'mitre-pre-attack', 'phas... \n", + "3 [{'kill_chain_name': 'mitre-pre-attack', 'phas... \n", + "\n", + " modified created x_mitre_is_subtechnique \\\n", + "0 2020-10-26T13:42:49.342Z 2018-04-18T17:59:24.739Z False \n", + "1 2020-10-26T13:42:49.342Z 2017-12-14T16:46:06.044Z NaN \n", + "2 2020-10-26T13:42:49.342Z 2017-12-14T16:46:06.044Z NaN \n", + "3 2020-10-26T13:42:49.342Z 2017-12-14T16:46:06.044Z NaN \n", + "\n", + " x_mitre_old_attack_id x_mitre_version \\\n", + "0 PRE-T1174 1.0 \n", + "1 PRE-T1043 1.0 \n", + "2 PRE-T1085 1.0 \n", + "3 PRE-T1070 1.0 \n", + "\n", + " x_mitre_difficulty_for_adversary_explanation \\\n", + "0 Sending emails is trivial, and, over time, an ... \n", + "1 Possible to gather digital intelligence about ... \n", + "2 3rd party services like these listed are freel... \n", + "3 Analyze technical scanning results to identify... \n", "\n", " x_mitre_difficulty_for_adversary \\\n", "0 Yes \n", @@ -5806,14 +5270,20 @@ "2 Yes \n", "3 Yes \n", "\n", - " x_mitre_detectable_by_common_defenses_explanation x_mitre_deprecated \n", - "0 Depending on the specific method of phishing, ... NaN \n", - "1 3rd party services highly leveraged by legitim... NaN \n", - "2 Searching publicly available sources that cann... NaN \n", - "3 This can be done offline after the data has be... NaN " + " x_mitre_detectable_by_common_defenses_explanation \\\n", + "0 Depending on the specific method of phishing, ... \n", + "1 This activity is indistinguishable from legiti... \n", + "2 Defender will not have visibility over account... \n", + "3 This can be done offline after the data has be... \n", + "\n", + " x_mitre_detectable_by_common_defenses x_mitre_deprecated \n", + "0 Partial True \n", + "1 No True \n", + "2 No True \n", + "3 No True " ] }, - "execution_count": 72, + "execution_count": 66, "metadata": {}, "output_type": "execute_result" } @@ -5822,7 +5292,7 @@ "techniques_list = []\n", "for t in techniques:\n", " techniques_list.append(json.loads(t.serialize()))\n", - "df = json_normalize(techniques_list)\n", + "df = pandas.json_normalize(techniques_list)\n", "df[0:4]" ] }, @@ -5835,7 +5305,7 @@ }, { "cell_type": "code", - "execution_count": 73, + "execution_count": 67, "metadata": {}, "outputs": [ { @@ -5843,7 +5313,7 @@ "output_type": "stream", "text": [ "Number of Techniques in Mobile ATT&CK\n", - "82\n" + "104\n" ] } ], @@ -5855,7 +5325,7 @@ }, { "cell_type": "code", - "execution_count": 74, + "execution_count": 68, "metadata": {}, "outputs": [ { @@ -5881,97 +5351,112 @@ " \n", " external_references\n", " object_marking_refs\n", - " modified\n", " created_by_ref\n", - " kill_chain_phases\n", - " id\n", " name\n", - " created\n", - " type\n", " description\n", - " x_mitre_platforms\n", + " id\n", + " type\n", + " kill_chain_phases\n", + " modified\n", + " created\n", " x_mitre_version\n", + " x_mitre_is_subtechnique\n", " x_mitre_tactic_type\n", " x_mitre_detection\n", + " x_mitre_platforms\n", + " x_mitre_contributors\n", " x_mitre_old_attack_id\n", " revoked\n", + " x_mitre_deprecated\n", " \n", " \n", " \n", " \n", " 0\n", - " [{'url': 'https://attack.mitre.org/techniques/...\n", + " [{'source_name': 'mitre-mobile-attack', 'exter...\n", " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", - " 2019-02-01T17:29:43.503Z\n", " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", - " [{'phase_name': 'command-and-control', 'kill_c...\n", - " attack-pattern--c6a146ae-9c63-4606-97ff-e261e7...\n", - " Web Service\n", - " 2019-02-01T17:29:43.503Z\n", + " SMS Control\n", + " Adversaries may delete, alter, or send SMS mes...\n", + " attack-pattern--b327a9c0-e709-495c-aa6e-00b042...\n", " attack-pattern\n", - " Adversaries may use an existing, legitimate ex...\n", - " [Android, iOS]\n", + " [{'kill_chain_name': 'mitre-mobile-attack', 'p...\n", + " 2020-10-22T17:04:15.578Z\n", + " 2020-09-11T15:14:33.730Z\n", " 1.0\n", + " False\n", " [Post-Adversary Device Access]\n", + " Users can view the default SMS handler in syst...\n", + " [Android]\n", + " NaN\n", " NaN\n", " NaN\n", " NaN\n", " \n", " \n", " 1\n", - " [{'url': 'https://attack.mitre.org/techniques/...\n", + " [{'source_name': 'mitre-mobile-attack', 'exter...\n", " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", - " 2019-02-03T14:08:44.916Z\n", " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", - " [{'phase_name': 'initial-access', 'kill_chain_...\n", - " attack-pattern--53263a67-075e-48fa-974b-91c5b5...\n", - " Deliver Malicious App via Other Means\n", - " 2018-10-17T00:14:20.652Z\n", + " Geofencing\n", + " Adversaries may use a device’s geographical lo...\n", + " attack-pattern--8197f026-64da-4700-93b9-b55ba5...\n", " attack-pattern\n", - " Malicious applications are a common attack vec...\n", - " [Android, iOS]\n", - " 1.1\n", + " [{'kill_chain_name': 'mitre-mobile-attack', 'p...\n", + " 2020-10-01T12:43:41.494Z\n", + " 2020-09-11T15:04:14.532Z\n", + " 1.0\n", + " False\n", " [Post-Adversary Device Access]\n", - " * An EMM/MDM or mobile threat defense solution...\n", - " MOB-T1079\n", + " Users can review which applications have locat...\n", + " [Android, iOS]\n", + " NaN\n", + " NaN\n", + " NaN\n", " NaN\n", " \n", " \n", " 2\n", - " [{'url': 'https://attack.mitre.org/techniques/...\n", + " [{'source_name': 'mitre-mobile-attack', 'exter...\n", " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", - " 2019-02-03T17:31:51.215Z\n", " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", - " [{'phase_name': 'initial-access', 'kill_chain_...\n", - " attack-pattern--d9db3d46-66ca-44b4-9daa-1ef97c...\n", - " Deliver Malicious App via Authorized App Store\n", - " 2018-10-17T00:14:20.652Z\n", + " Keychain\n", + " Adversaries may collect the keychain storage d...\n", + " attack-pattern--27f483c6-6666-44fa-8532-ffd5fc...\n", " attack-pattern\n", - " Malicious applications are a common attack vec...\n", - " [Android, iOS]\n", + " [{'kill_chain_name': 'mitre-mobile-attack', 'p...\n", + " 2020-06-24T19:02:46.237Z\n", + " 2020-06-24T17:33:49.778Z\n", " 1.0\n", + " False\n", " [Post-Adversary Device Access]\n", - " * An EMM/MDM or mobile threat defense solution...\n", - " MOB-T1078\n", + " Mobile security products can potentially detec...\n", + " [iOS]\n", + " NaN\n", + " NaN\n", + " NaN\n", " NaN\n", " \n", " \n", " 3\n", - " [{'url': 'https://attack.mitre.org/techniques/...\n", + " [{'source_name': 'mitre-mobile-attack', 'exter...\n", " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", - " 2018-10-17T00:14:20.652Z\n", " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", - " [{'phase_name': 'initial-access', 'kill_chain_...\n", - " attack-pattern--0d95940f-9583-4e0f-824c-a42c1b...\n", - " Supply Chain Compromise\n", - " 2018-10-17T00:14:20.652Z\n", + " Compromise Application Executable\n", + " Adversaries may modify applications installed ...\n", + " attack-pattern--d3bc5020-f6a2-41c0-8ccb-5e5631...\n", " attack-pattern\n", - " As further described in [Supply Chain Compromi...\n", - " [Android, iOS]\n", + " [{'kill_chain_name': 'mitre-mobile-attack', 'p...\n", + " 2020-05-27T13:23:34.159Z\n", + " 2020-05-07T15:24:49.068Z\n", " 1.0\n", + " False\n", " [Post-Adversary Device Access]\n", - " * Insecure third-party libraries could be dete...\n", - " MOB-T1077\n", + " This behavior is seamless to the user and is t...\n", + " [Android]\n", + " NaN\n", + " NaN\n", + " NaN\n", " NaN\n", " \n", " \n", @@ -5980,10 +5465,10 @@ ], "text/plain": [ " external_references \\\n", - "0 [{'url': 'https://attack.mitre.org/techniques/... \n", - "1 [{'url': 'https://attack.mitre.org/techniques/... \n", - "2 [{'url': 'https://attack.mitre.org/techniques/... \n", - "3 [{'url': 'https://attack.mitre.org/techniques/... \n", + "0 [{'source_name': 'mitre-mobile-attack', 'exter... \n", + "1 [{'source_name': 'mitre-mobile-attack', 'exter... \n", + "2 [{'source_name': 'mitre-mobile-attack', 'exter... \n", + "3 [{'source_name': 'mitre-mobile-attack', 'exter... \n", "\n", " object_marking_refs \\\n", "0 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", @@ -5991,56 +5476,62 @@ "2 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", "3 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", "\n", - " modified created_by_ref \\\n", - "0 2019-02-01T17:29:43.503Z identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", - "1 2019-02-03T14:08:44.916Z identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", - "2 2019-02-03T17:31:51.215Z identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", - "3 2018-10-17T00:14:20.652Z identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", + " created_by_ref \\\n", + "0 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", + "1 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", + "2 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", + "3 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", + "\n", + " name \\\n", + "0 SMS Control \n", + "1 Geofencing \n", + "2 Keychain \n", + "3 Compromise Application Executable \n", + "\n", + " description \\\n", + "0 Adversaries may delete, alter, or send SMS mes... \n", + "1 Adversaries may use a device’s geographical lo... \n", + "2 Adversaries may collect the keychain storage d... \n", + "3 Adversaries may modify applications installed ... \n", + "\n", + " id type \\\n", + "0 attack-pattern--b327a9c0-e709-495c-aa6e-00b042... attack-pattern \n", + "1 attack-pattern--8197f026-64da-4700-93b9-b55ba5... attack-pattern \n", + "2 attack-pattern--27f483c6-6666-44fa-8532-ffd5fc... attack-pattern \n", + "3 attack-pattern--d3bc5020-f6a2-41c0-8ccb-5e5631... attack-pattern \n", "\n", " kill_chain_phases \\\n", - "0 [{'phase_name': 'command-and-control', 'kill_c... \n", - "1 [{'phase_name': 'initial-access', 'kill_chain_... \n", - "2 [{'phase_name': 'initial-access', 'kill_chain_... \n", - "3 [{'phase_name': 'initial-access', 'kill_chain_... \n", + "0 [{'kill_chain_name': 'mitre-mobile-attack', 'p... \n", + "1 [{'kill_chain_name': 'mitre-mobile-attack', 'p... \n", + "2 [{'kill_chain_name': 'mitre-mobile-attack', 'p... \n", + "3 [{'kill_chain_name': 'mitre-mobile-attack', 'p... \n", "\n", - " id \\\n", - "0 attack-pattern--c6a146ae-9c63-4606-97ff-e261e7... \n", - "1 attack-pattern--53263a67-075e-48fa-974b-91c5b5... \n", - "2 attack-pattern--d9db3d46-66ca-44b4-9daa-1ef97c... \n", - "3 attack-pattern--0d95940f-9583-4e0f-824c-a42c1b... \n", - "\n", - " name created \\\n", - "0 Web Service 2019-02-01T17:29:43.503Z \n", - "1 Deliver Malicious App via Other Means 2018-10-17T00:14:20.652Z \n", - "2 Deliver Malicious App via Authorized App Store 2018-10-17T00:14:20.652Z \n", - "3 Supply Chain Compromise 2018-10-17T00:14:20.652Z \n", - "\n", - " type description \\\n", - "0 attack-pattern Adversaries may use an existing, legitimate ex... \n", - "1 attack-pattern Malicious applications are a common attack vec... \n", - "2 attack-pattern Malicious applications are a common attack vec... \n", - "3 attack-pattern As further described in [Supply Chain Compromi... \n", - "\n", - " x_mitre_platforms x_mitre_version x_mitre_tactic_type \\\n", - "0 [Android, iOS] 1.0 [Post-Adversary Device Access] \n", - "1 [Android, iOS] 1.1 [Post-Adversary Device Access] \n", - "2 [Android, iOS] 1.0 [Post-Adversary Device Access] \n", - "3 [Android, iOS] 1.0 [Post-Adversary Device Access] \n", - "\n", - " x_mitre_detection x_mitre_old_attack_id \\\n", - "0 NaN NaN \n", - "1 * An EMM/MDM or mobile threat defense solution... MOB-T1079 \n", - "2 * An EMM/MDM or mobile threat defense solution... MOB-T1078 \n", - "3 * Insecure third-party libraries could be dete... MOB-T1077 \n", - "\n", - " revoked \n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN " + " modified created x_mitre_version \\\n", + "0 2020-10-22T17:04:15.578Z 2020-09-11T15:14:33.730Z 1.0 \n", + "1 2020-10-01T12:43:41.494Z 2020-09-11T15:04:14.532Z 1.0 \n", + "2 2020-06-24T19:02:46.237Z 2020-06-24T17:33:49.778Z 1.0 \n", + "3 2020-05-27T13:23:34.159Z 2020-05-07T15:24:49.068Z 1.0 \n", + "\n", + " x_mitre_is_subtechnique x_mitre_tactic_type \\\n", + "0 False [Post-Adversary Device Access] \n", + "1 False [Post-Adversary Device Access] \n", + "2 False [Post-Adversary Device Access] \n", + "3 False [Post-Adversary Device Access] \n", + "\n", + " x_mitre_detection x_mitre_platforms \\\n", + "0 Users can view the default SMS handler in syst... [Android] \n", + "1 Users can review which applications have locat... [Android, iOS] \n", + "2 Mobile security products can potentially detec... [iOS] \n", + "3 This behavior is seamless to the user and is t... [Android] \n", + "\n", + " x_mitre_contributors x_mitre_old_attack_id revoked x_mitre_deprecated \n", + "0 NaN NaN NaN NaN \n", + "1 NaN NaN NaN NaN \n", + "2 NaN NaN NaN NaN \n", + "3 NaN NaN NaN NaN " ] }, - "execution_count": 74, + "execution_count": 68, "metadata": {}, "output_type": "execute_result" } @@ -6049,7 +5540,7 @@ "techniques_list = []\n", "for t in techniques:\n", " techniques_list.append(json.loads(t.serialize()))\n", - "df = json_normalize(techniques_list)\n", + "df = pandas.json_normalize(techniques_list)\n", "df[0:4]" ] }, @@ -6065,7 +5556,7 @@ }, { "cell_type": "code", - "execution_count": 75, + "execution_count": 69, "metadata": {}, "outputs": [ { @@ -6073,7 +5564,7 @@ "output_type": "stream", "text": [ "Number of Techniques in ATT&CK\n", - "500\n" + "1024\n" ] } ], @@ -6085,7 +5576,7 @@ }, { "cell_type": "code", - "execution_count": 76, + "execution_count": 70, "metadata": {}, "outputs": [ { @@ -6109,42 +5600,42 @@ " \n", " \n", " \n", - " external_references\n", + " id\n", + " description\n", + " name\n", + " created_by_ref\n", " object_marking_refs\n", + " external_references\n", " type\n", - " modified\n", - " created_by_ref\n", " kill_chain_phases\n", - " id\n", - " name\n", + " modified\n", " created\n", - " description\n", " ...\n", - " x_mitre_effective_permissions\n", - " x_mitre_network_requirements\n", - " x_mitre_detectable_by_common_defenses\n", - " x_mitre_difficulty_for_adversary_explanation\n", + " x_mitre_remote_support\n", + " x_mitre_impact_type\n", + " revoked\n", + " x_mitre_deprecated\n", " x_mitre_old_attack_id\n", + " x_mitre_difficulty_for_adversary_explanation\n", " x_mitre_difficulty_for_adversary\n", " x_mitre_detectable_by_common_defenses_explanation\n", - " x_mitre_deprecated\n", + " x_mitre_detectable_by_common_defenses\n", " x_mitre_tactic_type\n", - " revoked\n", " \n", " \n", " \n", " \n", " 0\n", - " [{'external_id': 'T1500', 'source_name': 'mitr...\n", + " attack-pattern--818302b2-d640-477b-bf88-873120...\n", + " Adversaries may abuse scripting or built-in co...\n", + " Network Device CLI\n", + " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", + " [{'source_name': 'mitre-attack', 'external_id'...\n", " attack-pattern\n", - " 2019-04-29T21:13:49.686Z\n", - " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", - " [{'phase_name': 'defense-evasion', 'kill_chain...\n", - " attack-pattern--cf7b3a06-8b42-4c33-bbe9-012120...\n", - " Compile After Delivery\n", - " 2019-04-25T20:53:07.719Z\n", - " Adversaries may attempt to make payloads diffi...\n", + " [{'kill_chain_name': 'mitre-attack', 'phase_na...\n", + " 2020-10-22T16:43:38.388Z\n", + " 2020-10-20T00:09:33.072Z\n", " ...\n", " NaN\n", " NaN\n", @@ -6159,16 +5650,16 @@ " \n", " \n", " 1\n", - " [{'external_id': 'T1501', 'source_name': 'mitr...\n", + " attack-pattern--52759bf1-fe12-4052-ace6-c5b0cf...\n", + " Adversaries may access network configuration f...\n", + " Network Device Configuration Dump\n", + " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", + " [{'source_name': 'mitre-attack', 'external_id'...\n", " attack-pattern\n", - " 2019-04-29T14:14:08.450Z\n", - " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", - " [{'phase_name': 'persistence', 'kill_chain_nam...\n", - " attack-pattern--0fff2797-19cb-41ea-a5f1-8a9303...\n", - " Systemd Service\n", - " 2019-04-23T15:34:30.008Z\n", - " Systemd services can be used to establish pers...\n", + " [{'kill_chain_name': 'mitre-attack', 'phase_na...\n", + " 2020-10-22T01:45:55.144Z\n", + " 2020-10-20T00:08:21.745Z\n", " ...\n", " NaN\n", " NaN\n", @@ -6183,16 +5674,16 @@ " \n", " \n", " 2\n", - " [{'external_id': 'T1499', 'source_name': 'mitr...\n", + " attack-pattern--28abec6c-4443-4b03-8206-07f2e2...\n", + " Adversaries may abuse netbooting to load an un...\n", + " TFTP Boot\n", + " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", + " [{'source_name': 'mitre-attack', 'external_id'...\n", " attack-pattern\n", - " 2019-04-29T13:20:36.795Z\n", - " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", - " [{'phase_name': 'impact', 'kill_chain_name': '...\n", - " attack-pattern--c675646d-e204-4aa8-978d-e3d6d6...\n", - " Endpoint Denial of Service\n", - " 2019-04-18T11:00:55.862Z\n", - " Adversaries may perform Endpoint Denial of Ser...\n", + " [{'kill_chain_name': 'mitre-attack', 'phase_na...\n", + " 2020-10-22T16:35:53.806Z\n", + " 2020-10-20T00:06:56.180Z\n", " ...\n", " NaN\n", " NaN\n", @@ -6207,16 +5698,16 @@ " \n", " \n", " 3\n", - " [{'external_id': 'T1497', 'source_name': 'mitr...\n", + " attack-pattern--a6557c75-798f-42e4-be70-ab4502...\n", + " Adversaries may abuse the ROM Monitor (ROMMON)...\n", + " ROMMONkit\n", + " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", + " [{'source_name': 'mitre-attack', 'external_id'...\n", " attack-pattern\n", - " 2019-06-10T17:37:37.138Z\n", - " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", - " [{'phase_name': 'defense-evasion', 'kill_chain...\n", - " attack-pattern--82caa33e-d11a-433a-94ea-9b5a5f...\n", - " Virtualization/Sandbox Evasion\n", - " 2019-04-17T22:22:24.505Z\n", - " Adversaries may check for the presence of a vi...\n", + " [{'kill_chain_name': 'mitre-attack', 'phase_na...\n", + " 2020-10-22T02:18:19.568Z\n", + " 2020-10-20T00:05:48.790Z\n", " ...\n", " NaN\n", " NaN\n", @@ -6231,69 +5722,69 @@ " \n", " \n", "\n", - "

4 rows × 30 columns

\n", + "

4 rows × 31 columns

\n", "" ], "text/plain": [ - " external_references \\\n", - "0 [{'external_id': 'T1500', 'source_name': 'mitr... \n", - "1 [{'external_id': 'T1501', 'source_name': 'mitr... \n", - "2 [{'external_id': 'T1499', 'source_name': 'mitr... \n", - "3 [{'external_id': 'T1497', 'source_name': 'mitr... \n", + " id \\\n", + "0 attack-pattern--818302b2-d640-477b-bf88-873120... \n", + "1 attack-pattern--52759bf1-fe12-4052-ace6-c5b0cf... \n", + "2 attack-pattern--28abec6c-4443-4b03-8206-07f2e2... \n", + "3 attack-pattern--a6557c75-798f-42e4-be70-ab4502... \n", "\n", - " object_marking_refs type \\\n", - "0 [marking-definition--fa42a846-8d90-4e51-bc29-7... attack-pattern \n", - "1 [marking-definition--fa42a846-8d90-4e51-bc29-7... attack-pattern \n", - "2 [marking-definition--fa42a846-8d90-4e51-bc29-7... attack-pattern \n", - "3 [marking-definition--fa42a846-8d90-4e51-bc29-7... attack-pattern \n", + " description \\\n", + "0 Adversaries may abuse scripting or built-in co... \n", + "1 Adversaries may access network configuration f... \n", + "2 Adversaries may abuse netbooting to load an un... \n", + "3 Adversaries may abuse the ROM Monitor (ROMMON)... \n", "\n", - " modified created_by_ref \\\n", - "0 2019-04-29T21:13:49.686Z identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", - "1 2019-04-29T14:14:08.450Z identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", - "2 2019-04-29T13:20:36.795Z identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", - "3 2019-06-10T17:37:37.138Z identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", + " name \\\n", + "0 Network Device CLI \n", + "1 Network Device Configuration Dump \n", + "2 TFTP Boot \n", + "3 ROMMONkit \n", "\n", - " kill_chain_phases \\\n", - "0 [{'phase_name': 'defense-evasion', 'kill_chain... \n", - "1 [{'phase_name': 'persistence', 'kill_chain_nam... \n", - "2 [{'phase_name': 'impact', 'kill_chain_name': '... \n", - "3 [{'phase_name': 'defense-evasion', 'kill_chain... \n", + " created_by_ref \\\n", + "0 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", + "1 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", + "2 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", + "3 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", "\n", - " id \\\n", - "0 attack-pattern--cf7b3a06-8b42-4c33-bbe9-012120... \n", - "1 attack-pattern--0fff2797-19cb-41ea-a5f1-8a9303... \n", - "2 attack-pattern--c675646d-e204-4aa8-978d-e3d6d6... \n", - "3 attack-pattern--82caa33e-d11a-433a-94ea-9b5a5f... \n", - "\n", - " name created \\\n", - "0 Compile After Delivery 2019-04-25T20:53:07.719Z \n", - "1 Systemd Service 2019-04-23T15:34:30.008Z \n", - "2 Endpoint Denial of Service 2019-04-18T11:00:55.862Z \n", - "3 Virtualization/Sandbox Evasion 2019-04-17T22:22:24.505Z \n", - "\n", - " description ... \\\n", - "0 Adversaries may attempt to make payloads diffi... ... \n", - "1 Systemd services can be used to establish pers... ... \n", - "2 Adversaries may perform Endpoint Denial of Ser... ... \n", - "3 Adversaries may check for the presence of a vi... ... \n", - "\n", - " x_mitre_effective_permissions x_mitre_network_requirements \\\n", - "0 NaN NaN \n", - "1 NaN NaN \n", - "2 NaN NaN \n", - "3 NaN NaN \n", - "\n", - " x_mitre_detectable_by_common_defenses \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "\n", - " x_mitre_difficulty_for_adversary_explanation x_mitre_old_attack_id \\\n", - "0 NaN NaN \n", - "1 NaN NaN \n", - "2 NaN NaN \n", - "3 NaN NaN \n", + " object_marking_refs \\\n", + "0 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", + "1 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", + "2 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", + "3 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", + "\n", + " external_references type \\\n", + "0 [{'source_name': 'mitre-attack', 'external_id'... attack-pattern \n", + "1 [{'source_name': 'mitre-attack', 'external_id'... attack-pattern \n", + "2 [{'source_name': 'mitre-attack', 'external_id'... attack-pattern \n", + "3 [{'source_name': 'mitre-attack', 'external_id'... attack-pattern \n", + "\n", + " kill_chain_phases \\\n", + "0 [{'kill_chain_name': 'mitre-attack', 'phase_na... \n", + "1 [{'kill_chain_name': 'mitre-attack', 'phase_na... \n", + "2 [{'kill_chain_name': 'mitre-attack', 'phase_na... \n", + "3 [{'kill_chain_name': 'mitre-attack', 'phase_na... \n", + "\n", + " modified created ... \\\n", + "0 2020-10-22T16:43:38.388Z 2020-10-20T00:09:33.072Z ... \n", + "1 2020-10-22T01:45:55.144Z 2020-10-20T00:08:21.745Z ... \n", + "2 2020-10-22T16:35:53.806Z 2020-10-20T00:06:56.180Z ... \n", + "3 2020-10-22T02:18:19.568Z 2020-10-20T00:05:48.790Z ... \n", + "\n", + " x_mitre_remote_support x_mitre_impact_type revoked x_mitre_deprecated \\\n", + "0 NaN NaN NaN NaN \n", + "1 NaN NaN NaN NaN \n", + "2 NaN NaN NaN NaN \n", + "3 NaN NaN NaN NaN \n", + "\n", + " x_mitre_old_attack_id x_mitre_difficulty_for_adversary_explanation \\\n", + "0 NaN NaN \n", + "1 NaN NaN \n", + "2 NaN NaN \n", + "3 NaN NaN \n", "\n", " x_mitre_difficulty_for_adversary \\\n", "0 NaN \n", @@ -6301,22 +5792,22 @@ "2 NaN \n", "3 NaN \n", "\n", - " x_mitre_detectable_by_common_defenses_explanation x_mitre_deprecated \\\n", - "0 NaN NaN \n", - "1 NaN NaN \n", - "2 NaN NaN \n", - "3 NaN NaN \n", + " x_mitre_detectable_by_common_defenses_explanation \\\n", + "0 NaN \n", + "1 NaN \n", + "2 NaN \n", + "3 NaN \n", "\n", - " x_mitre_tactic_type revoked \n", - "0 NaN NaN \n", - "1 NaN NaN \n", - "2 NaN NaN \n", - "3 NaN NaN \n", + " x_mitre_detectable_by_common_defenses x_mitre_tactic_type \n", + "0 NaN NaN \n", + "1 NaN NaN \n", + "2 NaN NaN \n", + "3 NaN NaN \n", "\n", - "[4 rows x 30 columns]" + "[4 rows x 31 columns]" ] }, - "execution_count": 76, + "execution_count": 70, "metadata": {}, "output_type": "execute_result" } @@ -6325,7 +5816,7 @@ "techniques_list = []\n", "for t in techniques:\n", " techniques_list.append(json.loads(t.serialize()))\n", - "df = json_normalize(techniques_list)\n", + "df = pandas.json_normalize(techniques_list)\n", "df[0:4]" ] }, @@ -6338,7 +5829,7 @@ }, { "cell_type": "code", - "execution_count": 77, + "execution_count": 71, "metadata": {}, "outputs": [ { @@ -6346,7 +5837,7 @@ "output_type": "stream", "text": [ "Number of Mitigations in Enterprise ATT&CK\n", - "281\n" + "267\n" ] } ], @@ -6358,7 +5849,7 @@ }, { "cell_type": "code", - "execution_count": 78, + "execution_count": 72, "metadata": {}, "outputs": [ { @@ -6383,73 +5874,78 @@ " \n", " \n", " created_by_ref\n", + " object_marking_refs\n", + " external_references\n", " description\n", - " type\n", " name\n", - " object_marking_refs\n", " id\n", - " external_references\n", + " type\n", " modified\n", " created\n", " x_mitre_version\n", " x_mitre_deprecated\n", + " x_mitre_old_attack_id\n", " \n", " \n", " \n", " \n", " 0\n", " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", - " This category is to associate techniques that ...\n", - " course-of-action\n", - " Do Not Mitigate\n", " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", - " course-of-action--787fb64d-c87b-4ee5-a341-0ef1...\n", - " [{'external_id': 'M1055', 'source_name': 'mitr...\n", - " 2019-07-23T14:44:24.727Z\n", - " 2019-07-19T14:58:42.715Z\n", + " [{'source_name': 'mitre-attack', 'external_id'...\n", + " This category is used for any applicable mitig...\n", + " Pre-compromise\n", + " course-of-action--78bb71be-92b4-46de-acd6-5f99...\n", + " course-of-action\n", + " 2020-10-20T19:52:32.439Z\n", + " 2020-10-19T14:57:58.771Z\n", " 1.0\n", " NaN\n", + " NaN\n", " \n", " \n", " 1\n", " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", - " Implement configuration changes to software (o...\n", - " course-of-action\n", - " Software Configuration\n", " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", - " course-of-action--b5dbb4c5-b0b1-40b1-80b6-e9e8...\n", - " [{'external_id': 'M1054', 'source_name': 'mitr...\n", - " 2019-07-19T14:57:15.656Z\n", - " 2019-07-19T14:40:23.529Z\n", + " [{'source_name': 'mitre-attack', 'external_id'...\n", + " This category is to associate techniques that ...\n", + " Do Not Mitigate\n", + " course-of-action--787fb64d-c87b-4ee5-a341-0ef1...\n", + " course-of-action\n", + " 2019-07-23T14:44:24.727Z\n", + " 2019-07-19T14:58:42.715Z\n", " 1.0\n", " NaN\n", + " NaN\n", " \n", " \n", " 2\n", " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", - " Take and store data backups from end user syst...\n", - " course-of-action\n", - " Data Backup\n", " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", - " course-of-action--3efe43d1-6f3f-4fcb-ab39-4a73...\n", - " [{'external_id': 'M1053', 'source_name': 'mitr...\n", - " 2019-07-19T14:33:33.543Z\n", - " 2019-07-19T14:33:33.543Z\n", - " 1.0\n", + " [{'source_name': 'mitre-attack', 'external_id'...\n", + " Implement configuration changes to software (o...\n", + " Software Configuration\n", + " course-of-action--b5dbb4c5-b0b1-40b1-80b6-e9e8...\n", + " course-of-action\n", + " 2020-03-31T13:11:09.471Z\n", + " 2019-07-19T14:40:23.529Z\n", + " 1.1\n", + " NaN\n", " NaN\n", " \n", " \n", " 3\n", " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", - " Configure Windows User Account Control to miti...\n", - " course-of-action\n", - " User Account Control\n", " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", - " course-of-action--2c2ad92a-d710-41ab-a996-1db1...\n", - " [{'external_id': 'M1052', 'source_name': 'mitr...\n", - " 2019-06-11T17:14:35.170Z\n", - " 2019-06-11T17:14:35.170Z\n", - " 1.0\n", + " [{'source_name': 'mitre-attack', 'external_id'...\n", + " Take and store data backups from end user syst...\n", + " Data Backup\n", + " course-of-action--3efe43d1-6f3f-4fcb-ab39-4a73...\n", + " course-of-action\n", + " 2020-03-31T13:11:28.201Z\n", + " 2019-07-19T14:33:33.543Z\n", + " 1.1\n", + " NaN\n", " NaN\n", " \n", " \n", @@ -6463,44 +5959,44 @@ "2 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", "3 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", "\n", - " description type \\\n", - "0 This category is to associate techniques that ... course-of-action \n", - "1 Implement configuration changes to software (o... course-of-action \n", - "2 Take and store data backups from end user syst... course-of-action \n", - "3 Configure Windows User Account Control to miti... course-of-action \n", - "\n", - " name object_marking_refs \\\n", - "0 Do Not Mitigate [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", - "1 Software Configuration [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", - "2 Data Backup [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", - "3 User Account Control [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", - "\n", - " id \\\n", - "0 course-of-action--787fb64d-c87b-4ee5-a341-0ef1... \n", - "1 course-of-action--b5dbb4c5-b0b1-40b1-80b6-e9e8... \n", - "2 course-of-action--3efe43d1-6f3f-4fcb-ab39-4a73... \n", - "3 course-of-action--2c2ad92a-d710-41ab-a996-1db1... \n", + " object_marking_refs \\\n", + "0 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", + "1 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", + "2 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", + "3 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", "\n", " external_references \\\n", - "0 [{'external_id': 'M1055', 'source_name': 'mitr... \n", - "1 [{'external_id': 'M1054', 'source_name': 'mitr... \n", - "2 [{'external_id': 'M1053', 'source_name': 'mitr... \n", - "3 [{'external_id': 'M1052', 'source_name': 'mitr... \n", + "0 [{'source_name': 'mitre-attack', 'external_id'... \n", + "1 [{'source_name': 'mitre-attack', 'external_id'... \n", + "2 [{'source_name': 'mitre-attack', 'external_id'... \n", + "3 [{'source_name': 'mitre-attack', 'external_id'... \n", + "\n", + " description name \\\n", + "0 This category is used for any applicable mitig... Pre-compromise \n", + "1 This category is to associate techniques that ... Do Not Mitigate \n", + "2 Implement configuration changes to software (o... Software Configuration \n", + "3 Take and store data backups from end user syst... Data Backup \n", + "\n", + " id type \\\n", + "0 course-of-action--78bb71be-92b4-46de-acd6-5f99... course-of-action \n", + "1 course-of-action--787fb64d-c87b-4ee5-a341-0ef1... course-of-action \n", + "2 course-of-action--b5dbb4c5-b0b1-40b1-80b6-e9e8... course-of-action \n", + "3 course-of-action--3efe43d1-6f3f-4fcb-ab39-4a73... course-of-action \n", "\n", " modified created x_mitre_version \\\n", - "0 2019-07-23T14:44:24.727Z 2019-07-19T14:58:42.715Z 1.0 \n", - "1 2019-07-19T14:57:15.656Z 2019-07-19T14:40:23.529Z 1.0 \n", - "2 2019-07-19T14:33:33.543Z 2019-07-19T14:33:33.543Z 1.0 \n", - "3 2019-06-11T17:14:35.170Z 2019-06-11T17:14:35.170Z 1.0 \n", + "0 2020-10-20T19:52:32.439Z 2020-10-19T14:57:58.771Z 1.0 \n", + "1 2019-07-23T14:44:24.727Z 2019-07-19T14:58:42.715Z 1.0 \n", + "2 2020-03-31T13:11:09.471Z 2019-07-19T14:40:23.529Z 1.1 \n", + "3 2020-03-31T13:11:28.201Z 2019-07-19T14:33:33.543Z 1.1 \n", "\n", - " x_mitre_deprecated \n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN " + " x_mitre_deprecated x_mitre_old_attack_id \n", + "0 NaN NaN \n", + "1 NaN NaN \n", + "2 NaN NaN \n", + "3 NaN NaN " ] }, - "execution_count": 78, + "execution_count": 72, "metadata": {}, "output_type": "execute_result" } @@ -6509,7 +6005,7 @@ "mitigations_list = []\n", "for t in mitigations:\n", " mitigations_list.append(json.loads(t.serialize()))\n", - "df = json_normalize(mitigations_list)\n", + "df = pandas.json_normalize(mitigations_list)\n", "df[0:4]" ] }, @@ -6522,7 +6018,7 @@ }, { "cell_type": "code", - "execution_count": 79, + "execution_count": 73, "metadata": {}, "outputs": [ { @@ -6530,7 +6026,7 @@ "output_type": "stream", "text": [ "Number of Mitigations in Mobile ATT&CK\n", - "14\n" + "13\n" ] } ], @@ -6542,7 +6038,7 @@ }, { "cell_type": "code", - "execution_count": 80, + "execution_count": 74, "metadata": {}, "outputs": [ { @@ -6567,74 +6063,74 @@ " \n", " \n", " created_by_ref\n", - " description\n", - " type\n", - " name\n", " object_marking_refs\n", - " id\n", " external_references\n", + " name\n", + " description\n", + " id\n", + " type\n", " modified\n", " created\n", - " x_mitre_old_attack_id\n", " x_mitre_version\n", + " x_mitre_old_attack_id\n", " \n", " \n", " \n", " \n", " 0\n", " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", - " This mitigation describes any guidance or trai...\n", - " course-of-action\n", - " Application Developer Guidance\n", " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", - " course-of-action--25dc1ce8-eb55-4333-ae30-a7cb...\n", - " [{'external_id': 'M1013', 'source_name': 'mitr...\n", - " 2018-10-17T00:14:20.652Z\n", - " 2017-10-25T14:48:53.732Z\n", - " MOB-M1013\n", + " [{'source_name': 'mitre-attack', 'external_id'...\n", + " User Guidance\n", + " Describes any guidance or training given to us...\n", + " course-of-action--653492e3-27be-4a0e-b08c-938d...\n", + " course-of-action\n", + " 2019-10-18T15:51:48.318Z\n", + " 2019-10-18T12:53:03.508Z\n", " 1.0\n", + " NaN\n", " \n", " \n", " 1\n", " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", - " An enterprise mobility management (EMM), also ...\n", - " course-of-action\n", - " Enterprise Policy\n", " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", - " course-of-action--649f7268-4c12-483b-ac84-4b7b...\n", - " [{'external_id': 'M1012', 'source_name': 'mitr...\n", - " 2018-10-17T00:14:20.652Z\n", - " 2017-10-25T14:48:53.318Z\n", - " MOB-M1012\n", + " [{'source_name': 'mitre-attack', 'external_id'...\n", + " Security Updates\n", + " Install security updates in response to discov...\n", + " course-of-action--bcecd036-f40e-4916-9f8e-fd0c...\n", + " course-of-action\n", + " 2019-10-18T14:56:15.631Z\n", + " 2019-10-18T12:51:36.488Z\n", " 1.0\n", + " NaN\n", " \n", " \n", " 2\n", " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", - " Enable remote attestation capabilities when av...\n", - " course-of-action\n", - " Attestation\n", " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", + " [{'source_name': 'mitre-attack', 'external_id'...\n", + " Attestation\n", + " Enable remote attestation capabilities when av...\n", " course-of-action--ff4821f6-5afb-481b-8c0f-26c2...\n", - " [{'external_id': 'M1002', 'source_name': 'mitr...\n", - " 2018-10-17T00:14:20.652Z\n", - " 2017-10-25T14:48:52.933Z\n", - " MOB-M1002\n", + " course-of-action\n", + " 2019-10-18T14:52:53.019Z\n", + " 2019-10-18T12:50:35.335Z\n", " 1.0\n", + " NaN\n", " \n", " \n", " 3\n", " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", - " A variety of methods exist that can be used to...\n", - " course-of-action\n", - " Deploy Compromised Device Detection Method\n", " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", - " course-of-action--cf2cccb1-cab8-431a-8ecf-f787...\n", - " [{'external_id': 'M1010', 'source_name': 'mitr...\n", - " 2018-10-17T00:14:20.652Z\n", - " 2017-10-25T14:48:52.601Z\n", - " MOB-M1010\n", + " [{'source_name': 'mitre-attack', 'external_id'...\n", + " Application Vetting\n", + " Enterprises can vet applications for exploitab...\n", + " course-of-action--1553b156-6767-47f7-9eb4-2a69...\n", + " course-of-action\n", + " 2019-10-18T15:53:07.393Z\n", + " 2019-10-18T12:49:58.924Z\n", " 1.0\n", + " NaN\n", " \n", " \n", "\n", @@ -6647,50 +6143,44 @@ "2 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", "3 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", "\n", - " description type \\\n", - "0 This mitigation describes any guidance or trai... course-of-action \n", - "1 An enterprise mobility management (EMM), also ... course-of-action \n", - "2 Enable remote attestation capabilities when av... course-of-action \n", - "3 A variety of methods exist that can be used to... course-of-action \n", - "\n", - " name \\\n", - "0 Application Developer Guidance \n", - "1 Enterprise Policy \n", - "2 Attestation \n", - "3 Deploy Compromised Device Detection Method \n", - "\n", " object_marking_refs \\\n", "0 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", "1 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", "2 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", "3 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", "\n", - " id \\\n", - "0 course-of-action--25dc1ce8-eb55-4333-ae30-a7cb... \n", - "1 course-of-action--649f7268-4c12-483b-ac84-4b7b... \n", - "2 course-of-action--ff4821f6-5afb-481b-8c0f-26c2... \n", - "3 course-of-action--cf2cccb1-cab8-431a-8ecf-f787... \n", + " external_references name \\\n", + "0 [{'source_name': 'mitre-attack', 'external_id'... User Guidance \n", + "1 [{'source_name': 'mitre-attack', 'external_id'... Security Updates \n", + "2 [{'source_name': 'mitre-attack', 'external_id'... Attestation \n", + "3 [{'source_name': 'mitre-attack', 'external_id'... Application Vetting \n", "\n", - " external_references \\\n", - "0 [{'external_id': 'M1013', 'source_name': 'mitr... \n", - "1 [{'external_id': 'M1012', 'source_name': 'mitr... \n", - "2 [{'external_id': 'M1002', 'source_name': 'mitr... \n", - "3 [{'external_id': 'M1010', 'source_name': 'mitr... \n", - "\n", - " modified created x_mitre_old_attack_id \\\n", - "0 2018-10-17T00:14:20.652Z 2017-10-25T14:48:53.732Z MOB-M1013 \n", - "1 2018-10-17T00:14:20.652Z 2017-10-25T14:48:53.318Z MOB-M1012 \n", - "2 2018-10-17T00:14:20.652Z 2017-10-25T14:48:52.933Z MOB-M1002 \n", - "3 2018-10-17T00:14:20.652Z 2017-10-25T14:48:52.601Z MOB-M1010 \n", - "\n", - " x_mitre_version \n", - "0 1.0 \n", - "1 1.0 \n", - "2 1.0 \n", - "3 1.0 " + " description \\\n", + "0 Describes any guidance or training given to us... \n", + "1 Install security updates in response to discov... \n", + "2 Enable remote attestation capabilities when av... \n", + "3 Enterprises can vet applications for exploitab... \n", + "\n", + " id type \\\n", + "0 course-of-action--653492e3-27be-4a0e-b08c-938d... course-of-action \n", + "1 course-of-action--bcecd036-f40e-4916-9f8e-fd0c... course-of-action \n", + "2 course-of-action--ff4821f6-5afb-481b-8c0f-26c2... course-of-action \n", + "3 course-of-action--1553b156-6767-47f7-9eb4-2a69... course-of-action \n", + "\n", + " modified created x_mitre_version \\\n", + "0 2019-10-18T15:51:48.318Z 2019-10-18T12:53:03.508Z 1.0 \n", + "1 2019-10-18T14:56:15.631Z 2019-10-18T12:51:36.488Z 1.0 \n", + "2 2019-10-18T14:52:53.019Z 2019-10-18T12:50:35.335Z 1.0 \n", + "3 2019-10-18T15:53:07.393Z 2019-10-18T12:49:58.924Z 1.0 \n", + "\n", + " x_mitre_old_attack_id \n", + "0 NaN \n", + "1 NaN \n", + "2 NaN \n", + "3 NaN " ] }, - "execution_count": 80, + "execution_count": 74, "metadata": {}, "output_type": "execute_result" } @@ -6699,7 +6189,7 @@ "mitigations_list = []\n", "for t in mitigations:\n", " mitigations_list.append(json.loads(t.serialize()))\n", - "df = json_normalize(mitigations_list)\n", + "df = pandas.json_normalize(mitigations_list)\n", "df[0:4]" ] }, @@ -6712,7 +6202,7 @@ }, { "cell_type": "code", - "execution_count": 81, + "execution_count": 75, "metadata": {}, "outputs": [ { @@ -6720,7 +6210,7 @@ "output_type": "stream", "text": [ "Number of Mitigations in ATT&CK\n", - "295\n" + "296\n" ] } ], @@ -6732,7 +6222,7 @@ }, { "cell_type": "code", - "execution_count": 82, + "execution_count": 76, "metadata": {}, "outputs": [ { @@ -6757,12 +6247,12 @@ " \n", " \n", " created_by_ref\n", + " object_marking_refs\n", + " external_references\n", " description\n", - " type\n", " name\n", - " object_marking_refs\n", " id\n", - " external_references\n", + " type\n", " modified\n", " created\n", " x_mitre_version\n", @@ -6774,14 +6264,14 @@ " \n", " 0\n", " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", - " This category is to associate techniques that ...\n", - " course-of-action\n", - " Do Not Mitigate\n", " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", - " course-of-action--787fb64d-c87b-4ee5-a341-0ef1...\n", - " [{'external_id': 'M1055', 'source_name': 'mitr...\n", - " 2019-07-23T14:44:24.727Z\n", - " 2019-07-19T14:58:42.715Z\n", + " [{'source_name': 'mitre-attack', 'external_id'...\n", + " This category is used for any applicable mitig...\n", + " Pre-compromise\n", + " course-of-action--78bb71be-92b4-46de-acd6-5f99...\n", + " course-of-action\n", + " 2020-10-20T19:52:32.439Z\n", + " 2020-10-19T14:57:58.771Z\n", " 1.0\n", " NaN\n", " NaN\n", @@ -6789,14 +6279,14 @@ " \n", " 1\n", " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", - " Implement configuration changes to software (o...\n", - " course-of-action\n", - " Software Configuration\n", " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", - " course-of-action--b5dbb4c5-b0b1-40b1-80b6-e9e8...\n", - " [{'external_id': 'M1054', 'source_name': 'mitr...\n", - " 2019-07-19T14:57:15.656Z\n", - " 2019-07-19T14:40:23.529Z\n", + " [{'source_name': 'mitre-attack', 'external_id'...\n", + " This category is to associate techniques that ...\n", + " Do Not Mitigate\n", + " course-of-action--787fb64d-c87b-4ee5-a341-0ef1...\n", + " course-of-action\n", + " 2019-07-23T14:44:24.727Z\n", + " 2019-07-19T14:58:42.715Z\n", " 1.0\n", " NaN\n", " NaN\n", @@ -6804,30 +6294,30 @@ " \n", " 2\n", " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", - " Take and store data backups from end user syst...\n", - " course-of-action\n", - " Data Backup\n", " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", - " course-of-action--3efe43d1-6f3f-4fcb-ab39-4a73...\n", - " [{'external_id': 'M1053', 'source_name': 'mitr...\n", - " 2019-07-19T14:33:33.543Z\n", - " 2019-07-19T14:33:33.543Z\n", - " 1.0\n", + " [{'source_name': 'mitre-attack', 'external_id'...\n", + " Implement configuration changes to software (o...\n", + " Software Configuration\n", + " course-of-action--b5dbb4c5-b0b1-40b1-80b6-e9e8...\n", + " course-of-action\n", + " 2020-03-31T13:11:09.471Z\n", + " 2019-07-19T14:40:23.529Z\n", + " 1.1\n", " NaN\n", " NaN\n", " \n", " \n", " 3\n", " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", - " Configure Windows User Account Control to miti...\n", - " course-of-action\n", - " User Account Control\n", " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", - " course-of-action--2c2ad92a-d710-41ab-a996-1db1...\n", - " [{'external_id': 'M1052', 'source_name': 'mitr...\n", - " 2019-06-11T17:14:35.170Z\n", - " 2019-06-11T17:14:35.170Z\n", - " 1.0\n", + " [{'source_name': 'mitre-attack', 'external_id'...\n", + " Take and store data backups from end user syst...\n", + " Data Backup\n", + " course-of-action--3efe43d1-6f3f-4fcb-ab39-4a73...\n", + " course-of-action\n", + " 2020-03-31T13:11:28.201Z\n", + " 2019-07-19T14:33:33.543Z\n", + " 1.1\n", " NaN\n", " NaN\n", " \n", @@ -6842,35 +6332,35 @@ "2 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", "3 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", "\n", - " description type \\\n", - "0 This category is to associate techniques that ... course-of-action \n", - "1 Implement configuration changes to software (o... course-of-action \n", - "2 Take and store data backups from end user syst... course-of-action \n", - "3 Configure Windows User Account Control to miti... course-of-action \n", - "\n", - " name object_marking_refs \\\n", - "0 Do Not Mitigate [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", - "1 Software Configuration [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", - "2 Data Backup [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", - "3 User Account Control [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", - "\n", - " id \\\n", - "0 course-of-action--787fb64d-c87b-4ee5-a341-0ef1... \n", - "1 course-of-action--b5dbb4c5-b0b1-40b1-80b6-e9e8... \n", - "2 course-of-action--3efe43d1-6f3f-4fcb-ab39-4a73... \n", - "3 course-of-action--2c2ad92a-d710-41ab-a996-1db1... \n", + " object_marking_refs \\\n", + "0 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", + "1 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", + "2 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", + "3 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", "\n", " external_references \\\n", - "0 [{'external_id': 'M1055', 'source_name': 'mitr... \n", - "1 [{'external_id': 'M1054', 'source_name': 'mitr... \n", - "2 [{'external_id': 'M1053', 'source_name': 'mitr... \n", - "3 [{'external_id': 'M1052', 'source_name': 'mitr... \n", + "0 [{'source_name': 'mitre-attack', 'external_id'... \n", + "1 [{'source_name': 'mitre-attack', 'external_id'... \n", + "2 [{'source_name': 'mitre-attack', 'external_id'... \n", + "3 [{'source_name': 'mitre-attack', 'external_id'... \n", + "\n", + " description name \\\n", + "0 This category is used for any applicable mitig... Pre-compromise \n", + "1 This category is to associate techniques that ... Do Not Mitigate \n", + "2 Implement configuration changes to software (o... Software Configuration \n", + "3 Take and store data backups from end user syst... Data Backup \n", + "\n", + " id type \\\n", + "0 course-of-action--78bb71be-92b4-46de-acd6-5f99... course-of-action \n", + "1 course-of-action--787fb64d-c87b-4ee5-a341-0ef1... course-of-action \n", + "2 course-of-action--b5dbb4c5-b0b1-40b1-80b6-e9e8... course-of-action \n", + "3 course-of-action--3efe43d1-6f3f-4fcb-ab39-4a73... course-of-action \n", "\n", " modified created x_mitre_version \\\n", - "0 2019-07-23T14:44:24.727Z 2019-07-19T14:58:42.715Z 1.0 \n", - "1 2019-07-19T14:57:15.656Z 2019-07-19T14:40:23.529Z 1.0 \n", - "2 2019-07-19T14:33:33.543Z 2019-07-19T14:33:33.543Z 1.0 \n", - "3 2019-06-11T17:14:35.170Z 2019-06-11T17:14:35.170Z 1.0 \n", + "0 2020-10-20T19:52:32.439Z 2020-10-19T14:57:58.771Z 1.0 \n", + "1 2019-07-23T14:44:24.727Z 2019-07-19T14:58:42.715Z 1.0 \n", + "2 2020-03-31T13:11:09.471Z 2019-07-19T14:40:23.529Z 1.1 \n", + "3 2020-03-31T13:11:28.201Z 2019-07-19T14:33:33.543Z 1.1 \n", "\n", " x_mitre_deprecated x_mitre_old_attack_id \n", "0 NaN NaN \n", @@ -6879,7 +6369,7 @@ "3 NaN NaN " ] }, - "execution_count": 82, + "execution_count": 76, "metadata": {}, "output_type": "execute_result" } @@ -6888,7 +6378,7 @@ "mitigations_list = []\n", "for t in mitigations:\n", " mitigations_list.append(json.loads(t.serialize()))\n", - "df = json_normalize(mitigations_list)\n", + "df = pandas.json_normalize(mitigations_list)\n", "df[0:4]" ] }, @@ -6901,7 +6391,7 @@ }, { "cell_type": "code", - "execution_count": 83, + "execution_count": 77, "metadata": {}, "outputs": [ { @@ -6909,7 +6399,7 @@ "output_type": "stream", "text": [ "Number of Groups in Enterprise ATT&CK\n", - "93\n" + "110\n" ] } ], @@ -6928,7 +6418,7 @@ }, { "cell_type": "code", - "execution_count": 84, + "execution_count": 78, "metadata": {}, "outputs": [ { @@ -6938,6 +6428,14 @@ "Number of Groups in PRE-ATT&CK\n", "7\n" ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/usr/local/lib/python3.8/site-packages/attackcti/attack_api.py:473: UserWarning: PRE ATT&CK is deprecated. It will be removed in future versions. Consider adjusting your application\n", + " warnings.warn(\"PRE ATT&CK is deprecated. It will be removed in future versions. Consider adjusting your application\")\n" + ] } ], "source": [ @@ -6948,7 +6446,7 @@ }, { "cell_type": "code", - "execution_count": 85, + "execution_count": 79, "metadata": {}, "outputs": [ { @@ -6973,13 +6471,13 @@ " \n", " \n", " created_by_ref\n", + " object_marking_refs\n", + " external_references\n", " name\n", " description\n", " type\n", - " aliases\n", - " object_marking_refs\n", " id\n", - " external_references\n", + " aliases\n", " modified\n", " created\n", " x_mitre_version\n", @@ -6990,61 +6488,61 @@ " \n", " 0\n", " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", + " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", + " [{'url': 'https://attack.mitre.org/groups/G008...\n", " TEMP.Veles\n", " [TEMP.Veles](https://attack.mitre.org/groups/G...\n", " intrusion-set\n", - " [TEMP.Veles, XENOTIME]\n", - " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", " intrusion-set--9538b1a4-4120-4e2d-bf59-3b11fca...\n", - " [{'external_id': 'G0088', 'source_name': 'mitr...\n", - " 2019-04-29T18:59:16.079Z\n", + " [TEMP.Veles, XENOTIME]\n", + " 2020-10-04T23:31:36.937Z\n", " 2019-04-16T15:14:38.533Z\n", - " 1.0\n", + " 1.2\n", " NaN\n", " \n", " \n", " 1\n", " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", + " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", + " [{'source_name': 'mitre-attack', 'url': 'https...\n", " APT17\n", " [APT17](https://attack.mitre.org/groups/G0025)...\n", " intrusion-set\n", - " [APT17, Deputy Dog]\n", - " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", " intrusion-set--090242d7-73fc-4738-af68-20162f7...\n", - " [{'external_id': 'G0025', 'source_name': 'mitr...\n", - " 2019-03-22T14:21:19.419Z\n", + " [APT17, Deputy Dog]\n", + " 2020-10-13T22:33:14.018Z\n", " 2017-05-31T21:31:57.307Z\n", - " 1.0\n", + " 1.1\n", " NaN\n", " \n", " \n", " 2\n", " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", + " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", + " [{'source_name': 'mitre-attack', 'url': 'https...\n", " APT16\n", " [APT16](https://attack.mitre.org/groups/G0023)...\n", " intrusion-set\n", - " [APT16]\n", - " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", " intrusion-set--d6e88e18-81e8-4709-82d8-973095d...\n", - " [{'external_id': 'G0023', 'source_name': 'mitr...\n", - " 2019-03-22T14:20:45.561Z\n", + " [APT16]\n", + " 2020-10-12T19:54:58.537Z\n", " 2017-05-31T21:31:56.270Z\n", - " 1.0\n", + " 1.1\n", " NaN\n", " \n", " \n", " 3\n", " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", + " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", + " [{'source_name': 'mitre-attack', 'url': 'https...\n", " Night Dragon\n", " [Night Dragon](https://attack.mitre.org/groups...\n", " intrusion-set\n", - " [Night Dragon]\n", - " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", " intrusion-set--23b6a0f5-fa95-46f9-a6f3-4549c5e...\n", - " [{'external_id': 'G0014', 'source_name': 'mitr...\n", - " 2019-03-25T14:36:29.638Z\n", + " [Night Dragon]\n", + " 2020-10-15T00:54:00.656Z\n", " 2017-05-31T21:31:51.643Z\n", - " 1.1\n", + " 1.3\n", " NaN\n", " \n", " \n", @@ -7052,11 +6550,23 @@ "" ], "text/plain": [ - " created_by_ref name \\\n", - "0 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 TEMP.Veles \n", - "1 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 APT17 \n", - "2 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 APT16 \n", - "3 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 Night Dragon \n", + " created_by_ref \\\n", + "0 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", + "1 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", + "2 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", + "3 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", + "\n", + " object_marking_refs \\\n", + "0 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", + "1 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", + "2 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", + "3 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", + "\n", + " external_references name \\\n", + "0 [{'url': 'https://attack.mitre.org/groups/G008... TEMP.Veles \n", + "1 [{'source_name': 'mitre-attack', 'url': 'https... APT17 \n", + "2 [{'source_name': 'mitre-attack', 'url': 'https... APT16 \n", + "3 [{'source_name': 'mitre-attack', 'url': 'https... Night Dragon \n", "\n", " description type \\\n", "0 [TEMP.Veles](https://attack.mitre.org/groups/G... intrusion-set \n", @@ -7064,29 +6574,17 @@ "2 [APT16](https://attack.mitre.org/groups/G0023)... intrusion-set \n", "3 [Night Dragon](https://attack.mitre.org/groups... intrusion-set \n", "\n", - " aliases object_marking_refs \\\n", - "0 [TEMP.Veles, XENOTIME] [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", - "1 [APT17, Deputy Dog] [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", - "2 [APT16] [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", - "3 [Night Dragon] [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", - "\n", - " id \\\n", - "0 intrusion-set--9538b1a4-4120-4e2d-bf59-3b11fca... \n", - "1 intrusion-set--090242d7-73fc-4738-af68-20162f7... \n", - "2 intrusion-set--d6e88e18-81e8-4709-82d8-973095d... \n", - "3 intrusion-set--23b6a0f5-fa95-46f9-a6f3-4549c5e... \n", - "\n", - " external_references \\\n", - "0 [{'external_id': 'G0088', 'source_name': 'mitr... \n", - "1 [{'external_id': 'G0025', 'source_name': 'mitr... \n", - "2 [{'external_id': 'G0023', 'source_name': 'mitr... \n", - "3 [{'external_id': 'G0014', 'source_name': 'mitr... \n", + " id aliases \\\n", + "0 intrusion-set--9538b1a4-4120-4e2d-bf59-3b11fca... [TEMP.Veles, XENOTIME] \n", + "1 intrusion-set--090242d7-73fc-4738-af68-20162f7... [APT17, Deputy Dog] \n", + "2 intrusion-set--d6e88e18-81e8-4709-82d8-973095d... [APT16] \n", + "3 intrusion-set--23b6a0f5-fa95-46f9-a6f3-4549c5e... [Night Dragon] \n", "\n", " modified created x_mitre_version \\\n", - "0 2019-04-29T18:59:16.079Z 2019-04-16T15:14:38.533Z 1.0 \n", - "1 2019-03-22T14:21:19.419Z 2017-05-31T21:31:57.307Z 1.0 \n", - "2 2019-03-22T14:20:45.561Z 2017-05-31T21:31:56.270Z 1.0 \n", - "3 2019-03-25T14:36:29.638Z 2017-05-31T21:31:51.643Z 1.1 \n", + "0 2020-10-04T23:31:36.937Z 2019-04-16T15:14:38.533Z 1.2 \n", + "1 2020-10-13T22:33:14.018Z 2017-05-31T21:31:57.307Z 1.1 \n", + "2 2020-10-12T19:54:58.537Z 2017-05-31T21:31:56.270Z 1.1 \n", + "3 2020-10-15T00:54:00.656Z 2017-05-31T21:31:51.643Z 1.3 \n", "\n", " x_mitre_contributors \n", "0 NaN \n", @@ -7095,7 +6593,7 @@ "3 NaN " ] }, - "execution_count": 85, + "execution_count": 79, "metadata": {}, "output_type": "execute_result" } @@ -7104,7 +6602,7 @@ "groups_list = []\n", "for t in groups:\n", " groups_list.append(json.loads(t.serialize()))\n", - "df = json_normalize(groups_list)\n", + "df = pandas.json_normalize(groups_list)\n", "df[0:4]" ] }, @@ -7117,7 +6615,7 @@ }, { "cell_type": "code", - "execution_count": 86, + "execution_count": 80, "metadata": {}, "outputs": [ { @@ -7125,7 +6623,7 @@ "output_type": "stream", "text": [ "Number of Groups in Mobile ATT&CK\n", - "2\n" + "3\n" ] } ], @@ -7137,7 +6635,7 @@ }, { "cell_type": "code", - "execution_count": 87, + "execution_count": 81, "metadata": {}, "outputs": [ { @@ -7162,13 +6660,13 @@ " \n", " \n", " created_by_ref\n", - " name\n", + " object_marking_refs\n", + " external_references\n", " description\n", + " name\n", " type\n", - " aliases\n", - " object_marking_refs\n", " id\n", - " external_references\n", + " aliases\n", " modified\n", " created\n", " x_mitre_version\n", @@ -7179,72 +6677,95 @@ " \n", " 0\n", " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", - " Dark Caracal\n", - " [Dark Caracal](https://attack.mitre.org/groups...\n", + " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", + " [{'external_id': 'G0097', 'source_name': 'mitr...\n", + " [Bouncing Golf](https://attack.mitre.org/group...\n", + " Bouncing Golf\n", " intrusion-set\n", - " [Dark Caracal]\n", + " intrusion-set--049cef3b-22d5-4be6-b50c-9839c7a...\n", + " [Bouncing Golf]\n", + " 2020-03-26T20:58:44.722Z\n", + " 2020-01-27T16:55:39.688Z\n", + " 1.0\n", + " NaN\n", + " \n", + " \n", + " 1\n", + " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", + " [{'source_name': 'mitre-attack', 'url': 'https...\n", + " [Dark Caracal](https://attack.mitre.org/groups...\n", + " Dark Caracal\n", + " intrusion-set\n", " intrusion-set--8a831aaa-f3e0-47a3-bed8-a9ced74...\n", - " [{'external_id': 'G0070', 'source_name': 'mitr...\n", - " 2019-07-16T15:35:20.554Z\n", + " [Dark Caracal]\n", + " 2020-06-03T20:22:40.401Z\n", " 2018-10-17T00:14:20.652Z\n", - " 1.1\n", + " 1.2\n", " NaN\n", " \n", " \n", - " 1\n", + " 2\n", " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", - " APT28\n", + " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", + " [{'external_id': 'G0007', 'url': 'https://atta...\n", " [APT28](https://attack.mitre.org/groups/G0007)...\n", + " APT28\n", " intrusion-set\n", - " [APT28, SNAKEMACKEREL, Swallowtail, Group 74, ...\n", - " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", " intrusion-set--bef4c620-0787-42a8-a96d-b7eb6e8...\n", - " [{'external_id': 'G0007', 'source_name': 'mitr...\n", - " 2019-07-27T00:09:33.254Z\n", + " [APT28, SNAKEMACKEREL, Swallowtail, Group 74, ...\n", + " 2020-10-06T23:32:21.793Z\n", " 2017-05-31T21:31:48.664Z\n", - " 2.1\n", - " [Emily Ratliff, IBM, Richard Gold, Digital Sha...\n", + " 3.0\n", + " [Sébastien Ruel, CGI, Drew Church, Splunk, Emi...\n", " \n", " \n", "\n", "" ], "text/plain": [ - " created_by_ref name \\\n", - "0 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 Dark Caracal \n", - "1 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 APT28 \n", - "\n", - " description type \\\n", - "0 [Dark Caracal](https://attack.mitre.org/groups... intrusion-set \n", - "1 [APT28](https://attack.mitre.org/groups/G0007)... intrusion-set \n", - "\n", - " aliases \\\n", - "0 [Dark Caracal] \n", - "1 [APT28, SNAKEMACKEREL, Swallowtail, Group 74, ... \n", + " created_by_ref \\\n", + "0 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", + "1 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", + "2 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", "\n", " object_marking_refs \\\n", "0 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", "1 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", - "\n", - " id \\\n", - "0 intrusion-set--8a831aaa-f3e0-47a3-bed8-a9ced74... \n", - "1 intrusion-set--bef4c620-0787-42a8-a96d-b7eb6e8... \n", + "2 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", "\n", " external_references \\\n", - "0 [{'external_id': 'G0070', 'source_name': 'mitr... \n", - "1 [{'external_id': 'G0007', 'source_name': 'mitr... \n", + "0 [{'external_id': 'G0097', 'source_name': 'mitr... \n", + "1 [{'source_name': 'mitre-attack', 'url': 'https... \n", + "2 [{'external_id': 'G0007', 'url': 'https://atta... \n", + "\n", + " description name \\\n", + "0 [Bouncing Golf](https://attack.mitre.org/group... Bouncing Golf \n", + "1 [Dark Caracal](https://attack.mitre.org/groups... Dark Caracal \n", + "2 [APT28](https://attack.mitre.org/groups/G0007)... APT28 \n", + "\n", + " type id \\\n", + "0 intrusion-set intrusion-set--049cef3b-22d5-4be6-b50c-9839c7a... \n", + "1 intrusion-set intrusion-set--8a831aaa-f3e0-47a3-bed8-a9ced74... \n", + "2 intrusion-set intrusion-set--bef4c620-0787-42a8-a96d-b7eb6e8... \n", + "\n", + " aliases \\\n", + "0 [Bouncing Golf] \n", + "1 [Dark Caracal] \n", + "2 [APT28, SNAKEMACKEREL, Swallowtail, Group 74, ... \n", "\n", " modified created x_mitre_version \\\n", - "0 2019-07-16T15:35:20.554Z 2018-10-17T00:14:20.652Z 1.1 \n", - "1 2019-07-27T00:09:33.254Z 2017-05-31T21:31:48.664Z 2.1 \n", + "0 2020-03-26T20:58:44.722Z 2020-01-27T16:55:39.688Z 1.0 \n", + "1 2020-06-03T20:22:40.401Z 2018-10-17T00:14:20.652Z 1.2 \n", + "2 2020-10-06T23:32:21.793Z 2017-05-31T21:31:48.664Z 3.0 \n", "\n", " x_mitre_contributors \n", "0 NaN \n", - "1 [Emily Ratliff, IBM, Richard Gold, Digital Sha... " + "1 NaN \n", + "2 [Sébastien Ruel, CGI, Drew Church, Splunk, Emi... " ] }, - "execution_count": 87, + "execution_count": 81, "metadata": {}, "output_type": "execute_result" } @@ -7253,7 +6774,7 @@ "groups_list = []\n", "for t in groups:\n", " groups_list.append(json.loads(t.serialize()))\n", - "df = json_normalize(groups_list)\n", + "df = pandas.json_normalize(groups_list)\n", "df[0:4]" ] }, @@ -7274,7 +6795,7 @@ }, { "cell_type": "code", - "execution_count": 88, + "execution_count": 82, "metadata": {}, "outputs": [ { @@ -7282,7 +6803,7 @@ "output_type": "stream", "text": [ "Number of Groups in ATT&CK\n", - "93\n" + "113\n" ] } ], @@ -7294,7 +6815,7 @@ }, { "cell_type": "code", - "execution_count": 89, + "execution_count": 83, "metadata": {}, "outputs": [ { @@ -7319,15 +6840,15 @@ " \n", " \n", " created_by_ref\n", + " object_marking_refs\n", + " external_references\n", + " name\n", " description\n", - " aliases\n", + " type\n", " id\n", - " external_references\n", + " aliases\n", " modified\n", - " type\n", " created\n", - " object_marking_refs\n", - " name\n", " x_mitre_version\n", " x_mitre_contributors\n", " revoked\n", @@ -7337,31 +6858,31 @@ " \n", " 0\n", " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", - " Operation [Soft Cell](https://attack.mitre.org...\n", - " [Soft Cell]\n", - " intrusion-set--06a11b7e-2a36-47fe-8d3e-82c265d...\n", - " [{'external_id': 'G0093', 'source_name': 'mitr...\n", - " 2019-07-22T15:49:28.637Z\n", - " intrusion-set\n", - " 2019-07-18T20:47:50.050Z\n", " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", - " Soft Cell\n", + " [{'external_id': 'G0115', 'source_name': 'mitr...\n", + " GOLD SOUTHFIELD\n", + " [GOLD SOUTHFIELD](https://attack.mitre.org/gro...\n", + " intrusion-set\n", + " intrusion-set--c77c5576-ca19-42ed-a36f-4b4486a...\n", + " [GOLD SOUTHFIELD]\n", + " 2020-10-06T15:32:20.089Z\n", + " 2020-09-22T19:41:27.845Z\n", " 1.0\n", - " [Cybereason Nocturnus, @nocturnus]\n", + " NaN\n", " NaN\n", " \n", " \n", " 1\n", " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", - " [TA505](https://attack.mitre.org/groups/G0092)...\n", - " [TA505]\n", - " intrusion-set--7eda3dd8-b09b-4705-8090-c2ad9fb...\n", - " [{'external_id': 'G0092', 'source_name': 'mitr...\n", - " 2019-06-24T19:11:41.060Z\n", - " intrusion-set\n", - " 2019-05-28T15:54:17.213Z\n", " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", - " TA505\n", + " [{'external_id': 'G0114', 'source_name': 'mitr...\n", + " Chimera\n", + " [Chimera](https://attack.mitre.org/groups/G011...\n", + " intrusion-set\n", + " intrusion-set--8c1f0187-0826-4320-bddc-5f326cf...\n", + " [Chimera]\n", + " 2020-10-05T20:59:57.694Z\n", + " 2020-08-24T17:01:55.842Z\n", " 1.0\n", " NaN\n", " NaN\n", @@ -7369,33 +6890,33 @@ " \n", " 2\n", " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", - " [Silence](https://attack.mitre.org/groups/G009...\n", - " [Silence]\n", - " intrusion-set--d13c8a7f-740b-4efa-a232-de7d6bb...\n", - " [{'external_id': 'G0091', 'source_name': 'mitr...\n", - " 2019-07-16T16:12:09.085Z\n", - " intrusion-set\n", - " 2019-05-24T17:57:36.491Z\n", " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", - " Silence\n", + " [{'external_id': 'G0112', 'source_name': 'mitr...\n", + " Windshift\n", + " [Windshift](https://attack.mitre.org/groups/G0...\n", + " intrusion-set\n", + " intrusion-set--afec6dc3-a18e-4b62-b1a4-5510e1a...\n", + " [Windshift, Bahamut]\n", + " 2020-06-26T13:46:14.122Z\n", + " 2020-06-25T17:16:39.168Z\n", " 1.0\n", - " [Oleg Skulkin, Group-IB]\n", + " NaN\n", " NaN\n", " \n", " \n", " 3\n", " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", - " [WIRTE](https://attack.mitre.org/groups/G0090)...\n", - " [WIRTE]\n", - " intrusion-set--f8cb7b36-62ef-4488-8a6d-a7033e3...\n", - " [{'external_id': 'G0090', 'source_name': 'mitr...\n", - " 2019-06-20T15:30:38.517Z\n", - " intrusion-set\n", - " 2019-05-24T17:02:44.226Z\n", " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", - " WIRTE\n", + " [{'external_id': 'G0108', 'source_name': 'mitr...\n", + " Blue Mockingbird\n", + " [Blue Mockingbird](https://attack.mitre.org/gr...\n", + " intrusion-set\n", + " intrusion-set--73a80fab-2aa3-48e0-a4d0-3a48282...\n", + " [Blue Mockingbird]\n", + " 2020-06-25T13:59:09.596Z\n", + " 2020-05-26T20:09:39.139Z\n", " 1.0\n", - " [Lab52 by S2 Grupo]\n", + " [Tony Lambert, Red Canary]\n", " NaN\n", " \n", " \n", @@ -7409,44 +6930,44 @@ "2 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", "3 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", "\n", - " description aliases \\\n", - "0 Operation [Soft Cell](https://attack.mitre.org... [Soft Cell] \n", - "1 [TA505](https://attack.mitre.org/groups/G0092)... [TA505] \n", - "2 [Silence](https://attack.mitre.org/groups/G009... [Silence] \n", - "3 [WIRTE](https://attack.mitre.org/groups/G0090)... [WIRTE] \n", + " object_marking_refs \\\n", + "0 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", + "1 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", + "2 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", + "3 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", "\n", - " id \\\n", - "0 intrusion-set--06a11b7e-2a36-47fe-8d3e-82c265d... \n", - "1 intrusion-set--7eda3dd8-b09b-4705-8090-c2ad9fb... \n", - "2 intrusion-set--d13c8a7f-740b-4efa-a232-de7d6bb... \n", - "3 intrusion-set--f8cb7b36-62ef-4488-8a6d-a7033e3... \n", + " external_references name \\\n", + "0 [{'external_id': 'G0115', 'source_name': 'mitr... GOLD SOUTHFIELD \n", + "1 [{'external_id': 'G0114', 'source_name': 'mitr... Chimera \n", + "2 [{'external_id': 'G0112', 'source_name': 'mitr... Windshift \n", + "3 [{'external_id': 'G0108', 'source_name': 'mitr... Blue Mockingbird \n", "\n", - " external_references \\\n", - "0 [{'external_id': 'G0093', 'source_name': 'mitr... \n", - "1 [{'external_id': 'G0092', 'source_name': 'mitr... \n", - "2 [{'external_id': 'G0091', 'source_name': 'mitr... \n", - "3 [{'external_id': 'G0090', 'source_name': 'mitr... \n", - "\n", - " modified type created \\\n", - "0 2019-07-22T15:49:28.637Z intrusion-set 2019-07-18T20:47:50.050Z \n", - "1 2019-06-24T19:11:41.060Z intrusion-set 2019-05-28T15:54:17.213Z \n", - "2 2019-07-16T16:12:09.085Z intrusion-set 2019-05-24T17:57:36.491Z \n", - "3 2019-06-20T15:30:38.517Z intrusion-set 2019-05-24T17:02:44.226Z \n", - "\n", - " object_marking_refs name \\\n", - "0 [marking-definition--fa42a846-8d90-4e51-bc29-7... Soft Cell \n", - "1 [marking-definition--fa42a846-8d90-4e51-bc29-7... TA505 \n", - "2 [marking-definition--fa42a846-8d90-4e51-bc29-7... Silence \n", - "3 [marking-definition--fa42a846-8d90-4e51-bc29-7... WIRTE \n", - "\n", - " x_mitre_version x_mitre_contributors revoked \n", - "0 1.0 [Cybereason Nocturnus, @nocturnus] NaN \n", - "1 1.0 NaN NaN \n", - "2 1.0 [Oleg Skulkin, Group-IB] NaN \n", - "3 1.0 [Lab52 by S2 Grupo] NaN " + " description type \\\n", + "0 [GOLD SOUTHFIELD](https://attack.mitre.org/gro... intrusion-set \n", + "1 [Chimera](https://attack.mitre.org/groups/G011... intrusion-set \n", + "2 [Windshift](https://attack.mitre.org/groups/G0... intrusion-set \n", + "3 [Blue Mockingbird](https://attack.mitre.org/gr... intrusion-set \n", + "\n", + " id aliases \\\n", + "0 intrusion-set--c77c5576-ca19-42ed-a36f-4b4486a... [GOLD SOUTHFIELD] \n", + "1 intrusion-set--8c1f0187-0826-4320-bddc-5f326cf... [Chimera] \n", + "2 intrusion-set--afec6dc3-a18e-4b62-b1a4-5510e1a... [Windshift, Bahamut] \n", + "3 intrusion-set--73a80fab-2aa3-48e0-a4d0-3a48282... [Blue Mockingbird] \n", + "\n", + " modified created x_mitre_version \\\n", + "0 2020-10-06T15:32:20.089Z 2020-09-22T19:41:27.845Z 1.0 \n", + "1 2020-10-05T20:59:57.694Z 2020-08-24T17:01:55.842Z 1.0 \n", + "2 2020-06-26T13:46:14.122Z 2020-06-25T17:16:39.168Z 1.0 \n", + "3 2020-06-25T13:59:09.596Z 2020-05-26T20:09:39.139Z 1.0 \n", + "\n", + " x_mitre_contributors revoked \n", + "0 NaN NaN \n", + "1 NaN NaN \n", + "2 NaN NaN \n", + "3 [Tony Lambert, Red Canary] NaN " ] }, - "execution_count": 89, + "execution_count": 83, "metadata": {}, "output_type": "execute_result" } @@ -7455,7 +6976,7 @@ "groups_list = []\n", "for t in groups:\n", " groups_list.append(json.loads(t.serialize()))\n", - "df = json_normalize(groups_list)\n", + "df = pandas.json_normalize(groups_list)\n", "df[0:4]" ] }, @@ -7468,7 +6989,7 @@ }, { "cell_type": "code", - "execution_count": 90, + "execution_count": 84, "metadata": {}, "outputs": [ { @@ -7476,7 +6997,7 @@ "output_type": "stream", "text": [ "Number of Software in ATT&CK\n", - "398\n" + "523\n" ] } ], @@ -7495,7 +7016,7 @@ }, { "cell_type": "code", - "execution_count": 91, + "execution_count": 85, "metadata": {}, "outputs": [ { @@ -7519,19 +7040,19 @@ " \n", " \n", " \n", - " created_by_ref\n", - " description\n", " id\n", - " external_references\n", + " name\n", + " description\n", + " created_by_ref\n", " object_marking_refs\n", - " modified\n", + " external_references\n", " type\n", - " created\n", - " name\n", " labels\n", + " modified\n", + " created\n", " x_mitre_version\n", - " x_mitre_platforms\n", " x_mitre_aliases\n", + " x_mitre_platforms\n", " x_mitre_contributors\n", " x_mitre_old_attack_id\n", " revoked\n", @@ -7540,77 +7061,77 @@ " \n", " \n", " 0\n", + " tool--975737f1-b10d-476f-8bda-3ec26ea57172\n", + " MCMD\n", + " [MCMD](https://attack.mitre.org/software/S0500...\n", " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", - " [PoshC2](https://attack.mitre.org/software/S03...\n", - " tool--4b57c098-f043-4da2-83ef-7588a6d426bc\n", - " [{'external_id': 'S0378', 'source_name': 'mitr...\n", " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", - " 2019-04-23T18:29:12.005Z\n", + " [{'external_id': 'S0500', 'source_name': 'mitr...\n", " tool\n", - " 2019-04-23T12:31:58.125Z\n", - " PoshC2\n", " [tool]\n", + " 2020-08-20T14:52:23.369Z\n", + " 2020-08-13T17:15:25.702Z\n", " 1.0\n", - " [Windows, Linux, macOS]\n", - " [PoshC2]\n", + " [MCMD]\n", + " [Windows]\n", " NaN\n", " NaN\n", " NaN\n", " \n", " \n", " 1\n", + " tool--c4810609-7da6-48ec-8057-1b70a7814db0\n", + " CrackMapExec\n", + " [CrackMapExec](https://attack.mitre.org/softwa...\n", " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", - " [RawDisk](https://attack.mitre.org/software/S0...\n", - " tool--3ffbdc1f-d2bf-41ab-91a2-c7b857e98079\n", - " [{'external_id': 'S0364', 'source_name': 'mitr...\n", " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", - " 2019-04-19T19:04:55.892Z\n", + " [{'external_id': 'S0488', 'source_name': 'mitr...\n", " tool\n", - " 2019-03-25T12:30:40.919Z\n", - " RawDisk\n", " [tool]\n", + " 2020-07-29T20:19:40.544Z\n", + " 2020-07-17T14:23:05.958Z\n", " 1.0\n", + " [CrackMapExec]\n", " [Windows]\n", - " [RawDisk]\n", " NaN\n", " NaN\n", " NaN\n", " \n", " \n", " 2\n", + " tool--5fc81b43-62b5-41b1-9113-c79ae5f030c4\n", + " CARROTBALL\n", + " [CARROTBALL](https://attack.mitre.org/software...\n", " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", - " [Empire](https://attack.mitre.org/software/S03...\n", - " tool--3433a9e8-1c47-4320-b9bf-ed449061d1c3\n", - " [{'external_id': 'S0363', 'source_name': 'mitr...\n", " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", - " 2019-06-24T17:15:43.818Z\n", + " [{'external_id': 'S0465', 'source_name': 'mitr...\n", " tool\n", - " 2019-03-11T14:13:40.648Z\n", - " Empire\n", " [tool]\n", + " 2020-06-10T14:44:23.055Z\n", + " 2020-06-02T19:10:29.513Z\n", " 1.0\n", - " [Linux, macOS, Windows]\n", - " [Empire, EmPyre, PowerShell Empire]\n", + " [CARROTBALL]\n", + " [Windows]\n", " NaN\n", " NaN\n", " NaN\n", " \n", " \n", " 3\n", + " tool--115f88dd-0618-4389-83cb-98d33ae81848\n", + " ShimRatReporter\n", + " [ShimRatReporter](https://attack.mitre.org/sof...\n", " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", - " [Expand](https://attack.mitre.org/software/S03...\n", - " tool--ca656c25-44f1-471b-9d9f-e2a3bbb84973\n", - " [{'external_id': 'S0361', 'source_name': 'mitr...\n", " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", - " 2019-04-19T18:52:30.033Z\n", + " [{'external_id': 'S0445', 'source_name': 'mitr...\n", " tool\n", - " 2019-02-19T19:17:14.971Z\n", - " Expand\n", " [tool]\n", + " 2020-05-27T22:39:28.701Z\n", + " 2020-05-12T21:29:48.294Z\n", " 1.0\n", + " [ShimRatReporter]\n", " [Windows]\n", - " [Expand]\n", - " [Matthew Demaske, Adaptforward]\n", + " NaN\n", " NaN\n", " NaN\n", " \n", @@ -7619,53 +7140,47 @@ "" ], "text/plain": [ + " id name \\\n", + "0 tool--975737f1-b10d-476f-8bda-3ec26ea57172 MCMD \n", + "1 tool--c4810609-7da6-48ec-8057-1b70a7814db0 CrackMapExec \n", + "2 tool--5fc81b43-62b5-41b1-9113-c79ae5f030c4 CARROTBALL \n", + "3 tool--115f88dd-0618-4389-83cb-98d33ae81848 ShimRatReporter \n", + "\n", + " description \\\n", + "0 [MCMD](https://attack.mitre.org/software/S0500... \n", + "1 [CrackMapExec](https://attack.mitre.org/softwa... \n", + "2 [CARROTBALL](https://attack.mitre.org/software... \n", + "3 [ShimRatReporter](https://attack.mitre.org/sof... \n", + "\n", " created_by_ref \\\n", "0 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", "1 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", "2 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", "3 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", "\n", - " description \\\n", - "0 [PoshC2](https://attack.mitre.org/software/S03... \n", - "1 [RawDisk](https://attack.mitre.org/software/S0... \n", - "2 [Empire](https://attack.mitre.org/software/S03... \n", - "3 [Expand](https://attack.mitre.org/software/S03... \n", - "\n", - " id \\\n", - "0 tool--4b57c098-f043-4da2-83ef-7588a6d426bc \n", - "1 tool--3ffbdc1f-d2bf-41ab-91a2-c7b857e98079 \n", - "2 tool--3433a9e8-1c47-4320-b9bf-ed449061d1c3 \n", - "3 tool--ca656c25-44f1-471b-9d9f-e2a3bbb84973 \n", - "\n", - " external_references \\\n", - "0 [{'external_id': 'S0378', 'source_name': 'mitr... \n", - "1 [{'external_id': 'S0364', 'source_name': 'mitr... \n", - "2 [{'external_id': 'S0363', 'source_name': 'mitr... \n", - "3 [{'external_id': 'S0361', 'source_name': 'mitr... \n", - "\n", " object_marking_refs \\\n", "0 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", "1 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", "2 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", "3 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", "\n", - " modified type created name labels \\\n", - "0 2019-04-23T18:29:12.005Z tool 2019-04-23T12:31:58.125Z PoshC2 [tool] \n", - "1 2019-04-19T19:04:55.892Z tool 2019-03-25T12:30:40.919Z RawDisk [tool] \n", - "2 2019-06-24T17:15:43.818Z tool 2019-03-11T14:13:40.648Z Empire [tool] \n", - "3 2019-04-19T18:52:30.033Z tool 2019-02-19T19:17:14.971Z Expand [tool] \n", + " external_references type labels \\\n", + "0 [{'external_id': 'S0500', 'source_name': 'mitr... tool [tool] \n", + "1 [{'external_id': 'S0488', 'source_name': 'mitr... tool [tool] \n", + "2 [{'external_id': 'S0465', 'source_name': 'mitr... tool [tool] \n", + "3 [{'external_id': 'S0445', 'source_name': 'mitr... tool [tool] \n", "\n", - " x_mitre_version x_mitre_platforms \\\n", - "0 1.0 [Windows, Linux, macOS] \n", - "1 1.0 [Windows] \n", - "2 1.0 [Linux, macOS, Windows] \n", - "3 1.0 [Windows] \n", + " modified created x_mitre_version \\\n", + "0 2020-08-20T14:52:23.369Z 2020-08-13T17:15:25.702Z 1.0 \n", + "1 2020-07-29T20:19:40.544Z 2020-07-17T14:23:05.958Z 1.0 \n", + "2 2020-06-10T14:44:23.055Z 2020-06-02T19:10:29.513Z 1.0 \n", + "3 2020-05-27T22:39:28.701Z 2020-05-12T21:29:48.294Z 1.0 \n", "\n", - " x_mitre_aliases x_mitre_contributors \\\n", - "0 [PoshC2] NaN \n", - "1 [RawDisk] NaN \n", - "2 [Empire, EmPyre, PowerShell Empire] NaN \n", - "3 [Expand] [Matthew Demaske, Adaptforward] \n", + " x_mitre_aliases x_mitre_platforms x_mitre_contributors \\\n", + "0 [MCMD] [Windows] NaN \n", + "1 [CrackMapExec] [Windows] NaN \n", + "2 [CARROTBALL] [Windows] NaN \n", + "3 [ShimRatReporter] [Windows] NaN \n", "\n", " x_mitre_old_attack_id revoked \n", "0 NaN NaN \n", @@ -7674,7 +7189,7 @@ "3 NaN NaN " ] }, - "execution_count": 91, + "execution_count": 85, "metadata": {}, "output_type": "execute_result" } @@ -7683,13 +7198,13 @@ "software_list = []\n", "for t in software:\n", " software_list.append(json.loads(t.serialize()))\n", - "df = json_normalize(software_list)\n", + "df = pandas.json_normalize(software_list)\n", "df[0:4]" ] }, { "cell_type": "code", - "execution_count": 92, + "execution_count": 86, "metadata": {}, "outputs": [ { @@ -7697,7 +7212,7 @@ "output_type": "stream", "text": [ "Number of Relationships in Enterprise ATT&CK\n", - "5675\n" + "9263\n" ] } ], @@ -7709,7 +7224,7 @@ }, { "cell_type": "code", - "execution_count": 93, + "execution_count": 87, "metadata": {}, "outputs": [ { @@ -7733,13 +7248,13 @@ " \n", " \n", " \n", - " created_by_ref\n", - " description\n", - " type\n", - " created\n", " object_marking_refs\n", - " id\n", " external_references\n", + " id\n", + " type\n", + " created\n", + " description\n", + " created_by_ref\n", " modified\n", " source_ref\n", " relationship_type\n", @@ -7749,121 +7264,115 @@ " \n", " \n", " 0\n", - " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", - " [Soft Cell](https://attack.mitre.org/groups/G0...\n", - " relationship\n", - " 2019-07-22T15:49:28.744Z\n", " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", - " relationship--380743e5-616c-4524-96e6-d545e5b6...\n", - " [{'source_name': 'Cybereason Soft Cell June 20...\n", - " 2019-07-22T15:49:28.744Z\n", - " intrusion-set--06a11b7e-2a36-47fe-8d3e-82c265d...\n", + " [{'source_name': 'FireEye KEGTAP SINGLEMALT Oc...\n", + " relationship--fcee0cef-7d5b-49da-928c-2a3d0cfd...\n", + " relationship\n", + " 2020-11-10T18:04:03.668Z\n", + " (Citation: FireEye KEGTAP SINGLEMALT October 2...\n", + " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", + " 2020-11-10T18:04:03.668Z\n", + " intrusion-set--dd2d9ca6-505b-4860-a604-233685b...\n", " uses\n", - " attack-pattern--92d7da27-2d91-488e-a00c-059dc1...\n", + " malware--a7881f21-e978-4fe4-af56-92c9416a2616\n", " \n", " \n", " 1\n", - " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", - " [Soft Cell](https://attack.mitre.org/groups/G0...\n", - " relationship\n", - " 2019-07-22T15:35:24.376Z\n", " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", - " relationship--919f6143-eb8c-48cd-8741-118040c3...\n", - " [{'source_name': 'Cybereason Soft Cell June 20...\n", - " 2019-07-22T15:49:29.135Z\n", - " intrusion-set--06a11b7e-2a36-47fe-8d3e-82c265d...\n", + " [{'source_name': 'FireEye KEGTAP SINGLEMALT Oc...\n", + " relationship--c118e50b-4559-4bff-bde5-78aa426f...\n", + " relationship\n", + " 2020-11-10T18:04:03.666Z\n", + " (Citation: FireEye KEGTAP SINGLEMALT October 2...\n", + " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", + " 2020-11-10T18:04:03.666Z\n", + " intrusion-set--dd2d9ca6-505b-4860-a604-233685b...\n", " uses\n", - " attack-pattern--00d0b012-8a03-410e-95de-5826bf...\n", + " tool--afc079f3-c0ea-4096-b75d-3f05338b7f60\n", " \n", " \n", " 2\n", - " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", - " [Soft Cell](https://attack.mitre.org/groups/G0...\n", - " relationship\n", - " 2019-07-22T15:35:24.363Z\n", " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", - " relationship--ee4d1b24-603f-40df-8f21-3c053fba...\n", - " [{'source_name': 'Cybereason Soft Cell June 20...\n", - " 2019-07-22T15:49:29.090Z\n", - " intrusion-set--06a11b7e-2a36-47fe-8d3e-82c265d...\n", + " [{'source_name': 'DFIR Ryuk's Return October 2...\n", + " relationship--43b9a1b5-6f95-4c6c-8e1f-59f9049e...\n", + " relationship\n", + " 2020-11-10T18:04:03.589Z\n", + " (Citation: DFIR Ryuk's Return October 2020)(Ci...\n", + " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", + " 2020-11-10T18:04:03.589Z\n", + " intrusion-set--dd2d9ca6-505b-4860-a604-233685b...\n", " uses\n", - " attack-pattern--c23b740b-a42b-47a1-aec2-9d48dd...\n", + " tool--b77b563c-34bb-4fb8-86a3-3694338f7b47\n", " \n", " \n", " 3\n", - " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", - " [Soft Cell](https://attack.mitre.org/groups/G0...\n", - " relationship\n", - " 2019-07-22T15:35:24.351Z\n", " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", - " relationship--38be247c-74b0-42f3-964e-5f23ef42...\n", - " [{'source_name': 'Cybereason Soft Cell June 20...\n", - " 2019-07-22T15:49:29.092Z\n", - " intrusion-set--06a11b7e-2a36-47fe-8d3e-82c265d...\n", + " [{'source_name': 'FireEye KEGTAP SINGLEMALT Oc...\n", + " relationship--585842e6-fe9a-4508-8e67-c232f8aa...\n", + " relationship\n", + " 2020-11-10T18:04:03.571Z\n", + " (Citation: FireEye KEGTAP SINGLEMALT October 2...\n", + " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", + " 2020-11-10T18:04:03.571Z\n", + " intrusion-set--dd2d9ca6-505b-4860-a604-233685b...\n", " uses\n", - " attack-pattern--3c4a2599-71ee-4405-ba1e-0e2841...\n", + " tool--981acc4c-2ede-4b56-be6e-fa1a75f37acf\n", " \n", " \n", "\n", "" ], "text/plain": [ - " created_by_ref \\\n", - "0 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", - "1 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", - "2 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", - "3 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", - "\n", - " description type \\\n", - "0 [Soft Cell](https://attack.mitre.org/groups/G0... relationship \n", - "1 [Soft Cell](https://attack.mitre.org/groups/G0... relationship \n", - "2 [Soft Cell](https://attack.mitre.org/groups/G0... relationship \n", - "3 [Soft Cell](https://attack.mitre.org/groups/G0... relationship \n", - "\n", - " created \\\n", - "0 2019-07-22T15:49:28.744Z \n", - "1 2019-07-22T15:35:24.376Z \n", - "2 2019-07-22T15:35:24.363Z \n", - "3 2019-07-22T15:35:24.351Z \n", - "\n", " object_marking_refs \\\n", "0 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", "1 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", "2 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", "3 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", "\n", - " id \\\n", - "0 relationship--380743e5-616c-4524-96e6-d545e5b6... \n", - "1 relationship--919f6143-eb8c-48cd-8741-118040c3... \n", - "2 relationship--ee4d1b24-603f-40df-8f21-3c053fba... \n", - "3 relationship--38be247c-74b0-42f3-964e-5f23ef42... \n", - "\n", " external_references \\\n", - "0 [{'source_name': 'Cybereason Soft Cell June 20... \n", - "1 [{'source_name': 'Cybereason Soft Cell June 20... \n", - "2 [{'source_name': 'Cybereason Soft Cell June 20... \n", - "3 [{'source_name': 'Cybereason Soft Cell June 20... \n", + "0 [{'source_name': 'FireEye KEGTAP SINGLEMALT Oc... \n", + "1 [{'source_name': 'FireEye KEGTAP SINGLEMALT Oc... \n", + "2 [{'source_name': 'DFIR Ryuk's Return October 2... \n", + "3 [{'source_name': 'FireEye KEGTAP SINGLEMALT Oc... \n", "\n", - " modified \\\n", - "0 2019-07-22T15:49:28.744Z \n", - "1 2019-07-22T15:49:29.135Z \n", - "2 2019-07-22T15:49:29.090Z \n", - "3 2019-07-22T15:49:29.092Z \n", + " id type \\\n", + "0 relationship--fcee0cef-7d5b-49da-928c-2a3d0cfd... relationship \n", + "1 relationship--c118e50b-4559-4bff-bde5-78aa426f... relationship \n", + "2 relationship--43b9a1b5-6f95-4c6c-8e1f-59f9049e... relationship \n", + "3 relationship--585842e6-fe9a-4508-8e67-c232f8aa... relationship \n", "\n", - " source_ref relationship_type \\\n", - "0 intrusion-set--06a11b7e-2a36-47fe-8d3e-82c265d... uses \n", - "1 intrusion-set--06a11b7e-2a36-47fe-8d3e-82c265d... uses \n", - "2 intrusion-set--06a11b7e-2a36-47fe-8d3e-82c265d... uses \n", - "3 intrusion-set--06a11b7e-2a36-47fe-8d3e-82c265d... uses \n", + " created \\\n", + "0 2020-11-10T18:04:03.668Z \n", + "1 2020-11-10T18:04:03.666Z \n", + "2 2020-11-10T18:04:03.589Z \n", + "3 2020-11-10T18:04:03.571Z \n", "\n", - " target_ref \n", - "0 attack-pattern--92d7da27-2d91-488e-a00c-059dc1... \n", - "1 attack-pattern--00d0b012-8a03-410e-95de-5826bf... \n", - "2 attack-pattern--c23b740b-a42b-47a1-aec2-9d48dd... \n", - "3 attack-pattern--3c4a2599-71ee-4405-ba1e-0e2841... " + " description \\\n", + "0 (Citation: FireEye KEGTAP SINGLEMALT October 2... \n", + "1 (Citation: FireEye KEGTAP SINGLEMALT October 2... \n", + "2 (Citation: DFIR Ryuk's Return October 2020)(Ci... \n", + "3 (Citation: FireEye KEGTAP SINGLEMALT October 2... \n", + "\n", + " created_by_ref modified \\\n", + "0 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 2020-11-10T18:04:03.668Z \n", + "1 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 2020-11-10T18:04:03.666Z \n", + "2 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 2020-11-10T18:04:03.589Z \n", + "3 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 2020-11-10T18:04:03.571Z \n", + "\n", + " source_ref relationship_type \\\n", + "0 intrusion-set--dd2d9ca6-505b-4860-a604-233685b... uses \n", + "1 intrusion-set--dd2d9ca6-505b-4860-a604-233685b... uses \n", + "2 intrusion-set--dd2d9ca6-505b-4860-a604-233685b... uses \n", + "3 intrusion-set--dd2d9ca6-505b-4860-a604-233685b... uses \n", + "\n", + " target_ref \n", + "0 malware--a7881f21-e978-4fe4-af56-92c9416a2616 \n", + "1 tool--afc079f3-c0ea-4096-b75d-3f05338b7f60 \n", + "2 tool--b77b563c-34bb-4fb8-86a3-3694338f7b47 \n", + "3 tool--981acc4c-2ede-4b56-be6e-fa1a75f37acf " ] }, - "execution_count": 93, + "execution_count": 87, "metadata": {}, "output_type": "execute_result" } @@ -7872,7 +7381,7 @@ "relations_list = []\n", "for t in relationships:\n", " relations_list.append(json.loads(t.serialize()))\n", - "df = json_normalize(relations_list)\n", + "df = pandas.json_normalize(relations_list)\n", "df[0:4]" ] }, @@ -7885,7 +7394,7 @@ }, { "cell_type": "code", - "execution_count": 94, + "execution_count": 88, "metadata": {}, "outputs": [ { @@ -7893,7 +7402,15 @@ "output_type": "stream", "text": [ "Number of Relationships in PRE-ATT&CK\n", - "70\n" + "69\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/usr/local/lib/python3.8/site-packages/attackcti/attack_api.py:491: UserWarning: PRE ATT&CK is deprecated. It will be removed in future versions. Consider adjusting your application\n", + " warnings.warn(\"PRE ATT&CK is deprecated. It will be removed in future versions. Consider adjusting your application\")\n" ] } ], @@ -7905,7 +7422,7 @@ }, { "cell_type": "code", - "execution_count": 95, + "execution_count": 89, "metadata": {}, "outputs": [ { @@ -7930,13 +7447,13 @@ " \n", " \n", " created_by_ref\n", - " description\n", - " type\n", - " created\n", " object_marking_refs\n", - " id\n", " external_references\n", + " description\n", + " id\n", + " type\n", " modified\n", + " created\n", " source_ref\n", " relationship_type\n", " target_ref\n", @@ -7946,59 +7463,59 @@ " \n", " 0\n", " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", - " [TEMP.Veles](https://attack.mitre.org/groups/G...\n", + " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", + " [{'source_name': 'Mandiant APT1', 'description...\n", + " [APT1](https://attack.mitre.org/groups/G0006) ...\n", + " relationship--980656e3-ba60-49ee-9ce8-cbe1a0dc...\n", " relationship\n", - " 2019-04-24T19:45:44.212Z\n", + " 2020-03-25T13:59:27.774Z\n", + " 2020-03-25T13:59:27.774Z\n", + " intrusion-set--6a2e693f-24e5-451a-9f88-b36a108...\n", + " uses\n", + " attack-pattern--4900fabf-1142-4c1f-92f5-0b590e...\n", + " \n", + " \n", + " 1\n", + " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", + " [{'description': 'Miller, S, et al. (2019, Apr...\n", + " [TEMP.Veles](https://attack.mitre.org/groups/G...\n", " relationship--21842707-0f15-43bf-bc42-2bceadf2...\n", - " [{'source_name': 'FireEye TRITON 2019', 'descr...\n", + " relationship\n", " 2019-04-29T18:59:16.596Z\n", + " 2019-04-24T19:45:44.212Z\n", " intrusion-set--9538b1a4-4120-4e2d-bf59-3b11fca...\n", " uses\n", " attack-pattern--20a66013-8dab-4ca3-a67d-766c84...\n", " \n", " \n", - " 1\n", + " 2\n", " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", - " [TEMP.Veles](https://attack.mitre.org/groups/G...\n", - " relationship\n", - " 2019-04-24T19:45:44.205Z\n", " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", + " [{'description': 'Miller, S, et al. (2019, Apr...\n", + " [TEMP.Veles](https://attack.mitre.org/groups/G...\n", " relationship--2d95ed6f-52e7-4708-af15-9a6c0839...\n", - " [{'source_name': 'FireEye TRITON 2019', 'descr...\n", + " relationship\n", " 2019-04-29T18:59:16.595Z\n", + " 2019-04-24T19:45:44.205Z\n", " intrusion-set--9538b1a4-4120-4e2d-bf59-3b11fca...\n", " uses\n", " attack-pattern--795c1a92-3a26-453e-b99a-6a566a...\n", " \n", " \n", - " 2\n", + " 3\n", " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", + " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", + " NaN\n", " NaN\n", + " relationship--83379e43-4bc5-4c49-b0b3-f41161e8...\n", " relationship\n", " 2019-02-19T18:56:56.770Z\n", - " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", - " relationship--83379e43-4bc5-4c49-b0b3-f41161e8...\n", - " NaN\n", " 2019-02-19T18:56:56.770Z\n", " attack-pattern--e5164428-03ca-4336-a9a7-4d9ea1...\n", " related-to\n", " attack-pattern--03f4a766-7a21-4b5e-9ccf-e0cf42...\n", " \n", - " \n", - " 3\n", - " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", - " NaN\n", - " relationship\n", - " 2019-02-19T18:56:56.136Z\n", - " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", - " relationship--1aafdefb-304e-4998-87cc-81aad295...\n", - " NaN\n", - " 2019-02-19T18:56:56.136Z\n", - " attack-pattern--03f4a766-7a21-4b5e-9ccf-e0cf42...\n", - " related-to\n", - " attack-pattern--e5164428-03ca-4336-a9a7-4d9ea1...\n", - " \n", " \n", "\n", "" @@ -8010,56 +7527,50 @@ "2 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", "3 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", "\n", - " description type \\\n", - "0 [TEMP.Veles](https://attack.mitre.org/groups/G... relationship \n", - "1 [TEMP.Veles](https://attack.mitre.org/groups/G... relationship \n", - "2 NaN relationship \n", - "3 NaN relationship \n", - "\n", - " created \\\n", - "0 2019-04-24T19:45:44.212Z \n", - "1 2019-04-24T19:45:44.205Z \n", - "2 2019-02-19T18:56:56.770Z \n", - "3 2019-02-19T18:56:56.136Z \n", - "\n", " object_marking_refs \\\n", "0 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", "1 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", "2 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", "3 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", "\n", - " id \\\n", - "0 relationship--21842707-0f15-43bf-bc42-2bceadf2... \n", - "1 relationship--2d95ed6f-52e7-4708-af15-9a6c0839... \n", - "2 relationship--83379e43-4bc5-4c49-b0b3-f41161e8... \n", - "3 relationship--1aafdefb-304e-4998-87cc-81aad295... \n", - "\n", " external_references \\\n", - "0 [{'source_name': 'FireEye TRITON 2019', 'descr... \n", - "1 [{'source_name': 'FireEye TRITON 2019', 'descr... \n", - "2 NaN \n", + "0 [{'source_name': 'Mandiant APT1', 'description... \n", + "1 [{'description': 'Miller, S, et al. (2019, Apr... \n", + "2 [{'description': 'Miller, S, et al. (2019, Apr... \n", "3 NaN \n", "\n", - " modified \\\n", - "0 2019-04-29T18:59:16.596Z \n", - "1 2019-04-29T18:59:16.595Z \n", - "2 2019-02-19T18:56:56.770Z \n", - "3 2019-02-19T18:56:56.136Z \n", + " description \\\n", + "0 [APT1](https://attack.mitre.org/groups/G0006) ... \n", + "1 [TEMP.Veles](https://attack.mitre.org/groups/G... \n", + "2 [TEMP.Veles](https://attack.mitre.org/groups/G... \n", + "3 NaN \n", + "\n", + " id type \\\n", + "0 relationship--980656e3-ba60-49ee-9ce8-cbe1a0dc... relationship \n", + "1 relationship--21842707-0f15-43bf-bc42-2bceadf2... relationship \n", + "2 relationship--2d95ed6f-52e7-4708-af15-9a6c0839... relationship \n", + "3 relationship--83379e43-4bc5-4c49-b0b3-f41161e8... relationship \n", + "\n", + " modified created \\\n", + "0 2020-03-25T13:59:27.774Z 2020-03-25T13:59:27.774Z \n", + "1 2019-04-29T18:59:16.596Z 2019-04-24T19:45:44.212Z \n", + "2 2019-04-29T18:59:16.595Z 2019-04-24T19:45:44.205Z \n", + "3 2019-02-19T18:56:56.770Z 2019-02-19T18:56:56.770Z \n", "\n", " source_ref relationship_type \\\n", - "0 intrusion-set--9538b1a4-4120-4e2d-bf59-3b11fca... uses \n", + "0 intrusion-set--6a2e693f-24e5-451a-9f88-b36a108... uses \n", "1 intrusion-set--9538b1a4-4120-4e2d-bf59-3b11fca... uses \n", - "2 attack-pattern--e5164428-03ca-4336-a9a7-4d9ea1... related-to \n", - "3 attack-pattern--03f4a766-7a21-4b5e-9ccf-e0cf42... related-to \n", + "2 intrusion-set--9538b1a4-4120-4e2d-bf59-3b11fca... uses \n", + "3 attack-pattern--e5164428-03ca-4336-a9a7-4d9ea1... related-to \n", "\n", " target_ref \n", - "0 attack-pattern--20a66013-8dab-4ca3-a67d-766c84... \n", - "1 attack-pattern--795c1a92-3a26-453e-b99a-6a566a... \n", - "2 attack-pattern--03f4a766-7a21-4b5e-9ccf-e0cf42... \n", - "3 attack-pattern--e5164428-03ca-4336-a9a7-4d9ea1... " + "0 attack-pattern--4900fabf-1142-4c1f-92f5-0b590e... \n", + "1 attack-pattern--20a66013-8dab-4ca3-a67d-766c84... \n", + "2 attack-pattern--795c1a92-3a26-453e-b99a-6a566a... \n", + "3 attack-pattern--03f4a766-7a21-4b5e-9ccf-e0cf42... " ] }, - "execution_count": 95, + "execution_count": 89, "metadata": {}, "output_type": "execute_result" } @@ -8068,7 +7579,7 @@ "relations_list = []\n", "for t in relationships:\n", " relations_list.append(json.loads(t.serialize()))\n", - "df = json_normalize(relations_list)\n", + "df = pandas.json_normalize(relations_list)\n", "df[0:4]" ] }, @@ -8081,7 +7592,7 @@ }, { "cell_type": "code", - "execution_count": 96, + "execution_count": 90, "metadata": {}, "outputs": [ { @@ -8089,7 +7600,7 @@ "output_type": "stream", "text": [ "Number of Relationships in Mobile ATT&CK\n", - "322\n" + "795\n" ] } ], @@ -8101,7 +7612,7 @@ }, { "cell_type": "code", - "execution_count": 97, + "execution_count": 91, "metadata": {}, "outputs": [ { @@ -8126,15 +7637,15 @@ " \n", " \n", " created_by_ref\n", - " description\n", - " type\n", - " id\n", " object_marking_refs\n", - " created\n", + " id\n", + " type\n", " modified\n", + " created\n", " source_ref\n", " relationship_type\n", " target_ref\n", + " description\n", " external_references\n", " \n", " \n", @@ -8142,58 +7653,58 @@ " \n", " 0\n", " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", - " An EMM/MDM can use the Android `DevicePolicyMa...\n", - " relationship\n", - " relationship--fbd2d4f7-96ff-4624-a567-d4882f0c...\n", " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", - " 2019-07-23T15:35:23.530Z\n", - " 2019-07-23T15:35:23.530Z\n", - " course-of-action--649f7268-4c12-483b-ac84-4b7b...\n", - " mitigates\n", - " attack-pattern--2204c371-6100-4ae0-82f3-25c07c...\n", + " relationship--39f46abc-d9e3-463d-9340-3bc8334a...\n", + " relationship\n", + " 2020-10-23T15:05:40.967Z\n", + " 2020-10-23T15:05:40.967Z\n", + " attack-pattern--8f142a25-f6c3-4520-bd50-2ae3ab...\n", + " revoked-by\n", + " attack-pattern--77e30eee-fd48-40b4-99ec-73e97c...\n", + " NaN\n", " NaN\n", " \n", " \n", " 1\n", " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", - " [Dark Caracal](https://attack.mitre.org/groups...\n", - " relationship\n", - " relationship--61071d73-fcdf-4820-afd0-e3f0983e...\n", " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", - " 2019-07-10T15:42:09.606Z\n", - " 2019-07-16T15:35:20.953Z\n", - " intrusion-set--8a831aaa-f3e0-47a3-bed8-a9ced74...\n", - " uses\n", - " attack-pattern--6a3f6490-9c44-40de-b059-e5940f...\n", - " [{'source_name': 'Lookout Dark Caracal Jan 201...\n", + " relationship--e373111c-aa34-4686-a286-7c9b4267...\n", + " relationship\n", + " 2020-10-01T12:43:42.238Z\n", + " 2020-09-30T14:48:16.522Z\n", + " course-of-action--0beabf44-e8d8-4ae4-9122-ef56...\n", + " mitigates\n", + " attack-pattern--8197f026-64da-4700-93b9-b55ba5...\n", + " New OS releases frequently contain additional ...\n", + " NaN\n", " \n", " \n", " 2\n", " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", - " [Dark Caracal](https://attack.mitre.org/groups...\n", - " relationship\n", - " relationship--ae9a0fb3-901b-4da2-b6ad-633ddbfa...\n", " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", - " 2019-07-10T15:42:09.591Z\n", - " 2019-07-16T15:35:21.028Z\n", - " intrusion-set--8a831aaa-f3e0-47a3-bed8-a9ced74...\n", - " uses\n", - " attack-pattern--53263a67-075e-48fa-974b-91c5b5...\n", - " [{'source_name': 'Lookout Dark Caracal Jan 201...\n", + " relationship--37459382-00b7-4699-a294-d25f53bf...\n", + " relationship\n", + " 2020-10-01T12:42:21.985Z\n", + " 2020-09-30T14:36:43.256Z\n", + " course-of-action--0beabf44-e8d8-4ae4-9122-ef56...\n", + " mitigates\n", + " attack-pattern--77e30eee-fd48-40b4-99ec-73e97c...\n", + " iOS 11 introduced a first-come-first-served pr...\n", + " [{'source_name': 'Trend Micro iOS URL Hijackin...\n", " \n", " \n", " 3\n", " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", - " [Pallas](https://attack.mitre.org/software/S03...\n", - " relationship\n", - " relationship--60ecd154-e907-419a-b41d-1a9a1f59...\n", " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", - " 2019-07-10T15:35:43.712Z\n", - " 2019-07-14T21:33:23.556Z\n", - " malware--c41a8b7c-3e42-4eee-b87d-ad8a100ee878\n", + " relationship--455b1287-5784-42b4-91fb-01dac007...\n", + " relationship\n", + " 2020-09-29T13:24:15.234Z\n", + " 2020-09-29T13:24:15.234Z\n", + " malware--317a2c10-d489-431e-b6b2-f0251fddc88e\n", " uses\n", - " attack-pattern--8e27551a-5080-4148-a584-c64348...\n", - " [{'source_name': 'Lookout Dark Caracal Jan 201...\n", + " attack-pattern--3dd58c80-4c2e-458c-9503-1b2cd2...\n", + " [Dendroid](https://attack.mitre.org/software/S...\n", + " [{'source_name': 'Lookout-Dendroid', 'descript...\n", " \n", " \n", "\n", @@ -8206,50 +7717,50 @@ "2 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", "3 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", "\n", - " description type \\\n", - "0 An EMM/MDM can use the Android `DevicePolicyMa... relationship \n", - "1 [Dark Caracal](https://attack.mitre.org/groups... relationship \n", - "2 [Dark Caracal](https://attack.mitre.org/groups... relationship \n", - "3 [Pallas](https://attack.mitre.org/software/S03... relationship \n", - "\n", - " id \\\n", - "0 relationship--fbd2d4f7-96ff-4624-a567-d4882f0c... \n", - "1 relationship--61071d73-fcdf-4820-afd0-e3f0983e... \n", - "2 relationship--ae9a0fb3-901b-4da2-b6ad-633ddbfa... \n", - "3 relationship--60ecd154-e907-419a-b41d-1a9a1f59... \n", - "\n", " object_marking_refs \\\n", "0 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", "1 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", "2 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", "3 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", "\n", - " created modified \\\n", - "0 2019-07-23T15:35:23.530Z 2019-07-23T15:35:23.530Z \n", - "1 2019-07-10T15:42:09.606Z 2019-07-16T15:35:20.953Z \n", - "2 2019-07-10T15:42:09.591Z 2019-07-16T15:35:21.028Z \n", - "3 2019-07-10T15:35:43.712Z 2019-07-14T21:33:23.556Z \n", + " id type \\\n", + "0 relationship--39f46abc-d9e3-463d-9340-3bc8334a... relationship \n", + "1 relationship--e373111c-aa34-4686-a286-7c9b4267... relationship \n", + "2 relationship--37459382-00b7-4699-a294-d25f53bf... relationship \n", + "3 relationship--455b1287-5784-42b4-91fb-01dac007... relationship \n", + "\n", + " modified created \\\n", + "0 2020-10-23T15:05:40.967Z 2020-10-23T15:05:40.967Z \n", + "1 2020-10-01T12:43:42.238Z 2020-09-30T14:48:16.522Z \n", + "2 2020-10-01T12:42:21.985Z 2020-09-30T14:36:43.256Z \n", + "3 2020-09-29T13:24:15.234Z 2020-09-29T13:24:15.234Z \n", "\n", " source_ref relationship_type \\\n", - "0 course-of-action--649f7268-4c12-483b-ac84-4b7b... mitigates \n", - "1 intrusion-set--8a831aaa-f3e0-47a3-bed8-a9ced74... uses \n", - "2 intrusion-set--8a831aaa-f3e0-47a3-bed8-a9ced74... uses \n", - "3 malware--c41a8b7c-3e42-4eee-b87d-ad8a100ee878 uses \n", + "0 attack-pattern--8f142a25-f6c3-4520-bd50-2ae3ab... revoked-by \n", + "1 course-of-action--0beabf44-e8d8-4ae4-9122-ef56... mitigates \n", + "2 course-of-action--0beabf44-e8d8-4ae4-9122-ef56... mitigates \n", + "3 malware--317a2c10-d489-431e-b6b2-f0251fddc88e uses \n", "\n", " target_ref \\\n", - "0 attack-pattern--2204c371-6100-4ae0-82f3-25c07c... \n", - "1 attack-pattern--6a3f6490-9c44-40de-b059-e5940f... \n", - "2 attack-pattern--53263a67-075e-48fa-974b-91c5b5... \n", - "3 attack-pattern--8e27551a-5080-4148-a584-c64348... \n", + "0 attack-pattern--77e30eee-fd48-40b4-99ec-73e97c... \n", + "1 attack-pattern--8197f026-64da-4700-93b9-b55ba5... \n", + "2 attack-pattern--77e30eee-fd48-40b4-99ec-73e97c... \n", + "3 attack-pattern--3dd58c80-4c2e-458c-9503-1b2cd2... \n", + "\n", + " description \\\n", + "0 NaN \n", + "1 New OS releases frequently contain additional ... \n", + "2 iOS 11 introduced a first-come-first-served pr... \n", + "3 [Dendroid](https://attack.mitre.org/software/S... \n", "\n", " external_references \n", "0 NaN \n", - "1 [{'source_name': 'Lookout Dark Caracal Jan 201... \n", - "2 [{'source_name': 'Lookout Dark Caracal Jan 201... \n", - "3 [{'source_name': 'Lookout Dark Caracal Jan 201... " + "1 NaN \n", + "2 [{'source_name': 'Trend Micro iOS URL Hijackin... \n", + "3 [{'source_name': 'Lookout-Dendroid', 'descript... " ] }, - "execution_count": 97, + "execution_count": 91, "metadata": {}, "output_type": "execute_result" } @@ -8258,7 +7769,7 @@ "relations_list = []\n", "for t in relationships:\n", " relations_list.append(json.loads(t.serialize()))\n", - "df = json_normalize(relations_list)\n", + "df = pandas.json_normalize(relations_list)\n", "df[0:4]" ] }, @@ -8271,7 +7782,7 @@ }, { "cell_type": "code", - "execution_count": 98, + "execution_count": 92, "metadata": {}, "outputs": [ { @@ -8279,7 +7790,7 @@ "output_type": "stream", "text": [ "Number of Relationships in ATT&CK\n", - "6067\n" + "10635\n" ] } ], @@ -8291,7 +7802,7 @@ }, { "cell_type": "code", - "execution_count": 99, + "execution_count": 93, "metadata": {}, "outputs": [ { @@ -8315,13 +7826,13 @@ " \n", " \n", " \n", - " created_by_ref\n", - " description\n", - " type\n", - " created\n", " object_marking_refs\n", - " id\n", " external_references\n", + " id\n", + " type\n", + " created\n", + " description\n", + " created_by_ref\n", " modified\n", " source_ref\n", " relationship_type\n", @@ -8331,121 +7842,115 @@ " \n", " \n", " 0\n", - " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", - " [Soft Cell](https://attack.mitre.org/groups/G0...\n", - " relationship\n", - " 2019-07-22T15:49:28.744Z\n", " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", - " relationship--380743e5-616c-4524-96e6-d545e5b6...\n", - " [{'source_name': 'Cybereason Soft Cell June 20...\n", - " 2019-07-22T15:49:28.744Z\n", - " intrusion-set--06a11b7e-2a36-47fe-8d3e-82c265d...\n", + " [{'source_name': 'FireEye KEGTAP SINGLEMALT Oc...\n", + " relationship--fcee0cef-7d5b-49da-928c-2a3d0cfd...\n", + " relationship\n", + " 2020-11-10T18:04:03.668Z\n", + " (Citation: FireEye KEGTAP SINGLEMALT October 2...\n", + " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", + " 2020-11-10T18:04:03.668Z\n", + " intrusion-set--dd2d9ca6-505b-4860-a604-233685b...\n", " uses\n", - " attack-pattern--92d7da27-2d91-488e-a00c-059dc1...\n", + " malware--a7881f21-e978-4fe4-af56-92c9416a2616\n", " \n", " \n", " 1\n", - " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", - " [Soft Cell](https://attack.mitre.org/groups/G0...\n", - " relationship\n", - " 2019-07-22T15:35:24.376Z\n", " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", - " relationship--919f6143-eb8c-48cd-8741-118040c3...\n", - " [{'source_name': 'Cybereason Soft Cell June 20...\n", - " 2019-07-22T15:49:29.135Z\n", - " intrusion-set--06a11b7e-2a36-47fe-8d3e-82c265d...\n", + " [{'source_name': 'FireEye KEGTAP SINGLEMALT Oc...\n", + " relationship--c118e50b-4559-4bff-bde5-78aa426f...\n", + " relationship\n", + " 2020-11-10T18:04:03.666Z\n", + " (Citation: FireEye KEGTAP SINGLEMALT October 2...\n", + " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", + " 2020-11-10T18:04:03.666Z\n", + " intrusion-set--dd2d9ca6-505b-4860-a604-233685b...\n", " uses\n", - " attack-pattern--00d0b012-8a03-410e-95de-5826bf...\n", + " tool--afc079f3-c0ea-4096-b75d-3f05338b7f60\n", " \n", " \n", " 2\n", - " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", - " [Soft Cell](https://attack.mitre.org/groups/G0...\n", - " relationship\n", - " 2019-07-22T15:35:24.363Z\n", " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", - " relationship--ee4d1b24-603f-40df-8f21-3c053fba...\n", - " [{'source_name': 'Cybereason Soft Cell June 20...\n", - " 2019-07-22T15:49:29.090Z\n", - " intrusion-set--06a11b7e-2a36-47fe-8d3e-82c265d...\n", + " [{'source_name': 'DFIR Ryuk's Return October 2...\n", + " relationship--43b9a1b5-6f95-4c6c-8e1f-59f9049e...\n", + " relationship\n", + " 2020-11-10T18:04:03.589Z\n", + " (Citation: DFIR Ryuk's Return October 2020)(Ci...\n", + " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", + " 2020-11-10T18:04:03.589Z\n", + " intrusion-set--dd2d9ca6-505b-4860-a604-233685b...\n", " uses\n", - " attack-pattern--c23b740b-a42b-47a1-aec2-9d48dd...\n", + " tool--b77b563c-34bb-4fb8-86a3-3694338f7b47\n", " \n", " \n", " 3\n", - " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", - " [Soft Cell](https://attack.mitre.org/groups/G0...\n", - " relationship\n", - " 2019-07-22T15:35:24.351Z\n", " [marking-definition--fa42a846-8d90-4e51-bc29-7...\n", - " relationship--38be247c-74b0-42f3-964e-5f23ef42...\n", - " [{'source_name': 'Cybereason Soft Cell June 20...\n", - " 2019-07-22T15:49:29.092Z\n", - " intrusion-set--06a11b7e-2a36-47fe-8d3e-82c265d...\n", + " [{'source_name': 'FireEye KEGTAP SINGLEMALT Oc...\n", + " relationship--585842e6-fe9a-4508-8e67-c232f8aa...\n", + " relationship\n", + " 2020-11-10T18:04:03.571Z\n", + " (Citation: FireEye KEGTAP SINGLEMALT October 2...\n", + " identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\n", + " 2020-11-10T18:04:03.571Z\n", + " intrusion-set--dd2d9ca6-505b-4860-a604-233685b...\n", " uses\n", - " attack-pattern--3c4a2599-71ee-4405-ba1e-0e2841...\n", + " tool--981acc4c-2ede-4b56-be6e-fa1a75f37acf\n", " \n", " \n", "\n", "" ], "text/plain": [ - " created_by_ref \\\n", - "0 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", - "1 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", - "2 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", - "3 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", - "\n", - " description type \\\n", - "0 [Soft Cell](https://attack.mitre.org/groups/G0... relationship \n", - "1 [Soft Cell](https://attack.mitre.org/groups/G0... relationship \n", - "2 [Soft Cell](https://attack.mitre.org/groups/G0... relationship \n", - "3 [Soft Cell](https://attack.mitre.org/groups/G0... relationship \n", - "\n", - " created \\\n", - "0 2019-07-22T15:49:28.744Z \n", - "1 2019-07-22T15:35:24.376Z \n", - "2 2019-07-22T15:35:24.363Z \n", - "3 2019-07-22T15:35:24.351Z \n", - "\n", " object_marking_refs \\\n", "0 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", "1 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", "2 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", "3 [marking-definition--fa42a846-8d90-4e51-bc29-7... \n", "\n", - " id \\\n", - "0 relationship--380743e5-616c-4524-96e6-d545e5b6... \n", - "1 relationship--919f6143-eb8c-48cd-8741-118040c3... \n", - "2 relationship--ee4d1b24-603f-40df-8f21-3c053fba... \n", - "3 relationship--38be247c-74b0-42f3-964e-5f23ef42... \n", - "\n", " external_references \\\n", - "0 [{'source_name': 'Cybereason Soft Cell June 20... \n", - "1 [{'source_name': 'Cybereason Soft Cell June 20... \n", - "2 [{'source_name': 'Cybereason Soft Cell June 20... \n", - "3 [{'source_name': 'Cybereason Soft Cell June 20... \n", + "0 [{'source_name': 'FireEye KEGTAP SINGLEMALT Oc... \n", + "1 [{'source_name': 'FireEye KEGTAP SINGLEMALT Oc... \n", + "2 [{'source_name': 'DFIR Ryuk's Return October 2... \n", + "3 [{'source_name': 'FireEye KEGTAP SINGLEMALT Oc... \n", "\n", - " modified \\\n", - "0 2019-07-22T15:49:28.744Z \n", - "1 2019-07-22T15:49:29.135Z \n", - "2 2019-07-22T15:49:29.090Z \n", - "3 2019-07-22T15:49:29.092Z \n", + " id type \\\n", + "0 relationship--fcee0cef-7d5b-49da-928c-2a3d0cfd... relationship \n", + "1 relationship--c118e50b-4559-4bff-bde5-78aa426f... relationship \n", + "2 relationship--43b9a1b5-6f95-4c6c-8e1f-59f9049e... relationship \n", + "3 relationship--585842e6-fe9a-4508-8e67-c232f8aa... relationship \n", "\n", - " source_ref relationship_type \\\n", - "0 intrusion-set--06a11b7e-2a36-47fe-8d3e-82c265d... uses \n", - "1 intrusion-set--06a11b7e-2a36-47fe-8d3e-82c265d... uses \n", - "2 intrusion-set--06a11b7e-2a36-47fe-8d3e-82c265d... uses \n", - "3 intrusion-set--06a11b7e-2a36-47fe-8d3e-82c265d... uses \n", + " created \\\n", + "0 2020-11-10T18:04:03.668Z \n", + "1 2020-11-10T18:04:03.666Z \n", + "2 2020-11-10T18:04:03.589Z \n", + "3 2020-11-10T18:04:03.571Z \n", "\n", - " target_ref \n", - "0 attack-pattern--92d7da27-2d91-488e-a00c-059dc1... \n", - "1 attack-pattern--00d0b012-8a03-410e-95de-5826bf... \n", - "2 attack-pattern--c23b740b-a42b-47a1-aec2-9d48dd... \n", - "3 attack-pattern--3c4a2599-71ee-4405-ba1e-0e2841... " + " description \\\n", + "0 (Citation: FireEye KEGTAP SINGLEMALT October 2... \n", + "1 (Citation: FireEye KEGTAP SINGLEMALT October 2... \n", + "2 (Citation: DFIR Ryuk's Return October 2020)(Ci... \n", + "3 (Citation: FireEye KEGTAP SINGLEMALT October 2... \n", + "\n", + " created_by_ref modified \\\n", + "0 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 2020-11-10T18:04:03.668Z \n", + "1 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 2020-11-10T18:04:03.666Z \n", + "2 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 2020-11-10T18:04:03.589Z \n", + "3 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 2020-11-10T18:04:03.571Z \n", + "\n", + " source_ref relationship_type \\\n", + "0 intrusion-set--dd2d9ca6-505b-4860-a604-233685b... uses \n", + "1 intrusion-set--dd2d9ca6-505b-4860-a604-233685b... uses \n", + "2 intrusion-set--dd2d9ca6-505b-4860-a604-233685b... uses \n", + "3 intrusion-set--dd2d9ca6-505b-4860-a604-233685b... uses \n", + "\n", + " target_ref \n", + "0 malware--a7881f21-e978-4fe4-af56-92c9416a2616 \n", + "1 tool--afc079f3-c0ea-4096-b75d-3f05338b7f60 \n", + "2 tool--b77b563c-34bb-4fb8-86a3-3694338f7b47 \n", + "3 tool--981acc4c-2ede-4b56-be6e-fa1a75f37acf " ] }, - "execution_count": 99, + "execution_count": 93, "metadata": {}, "output_type": "execute_result" } @@ -8454,7 +7959,7 @@ "relations_list = []\n", "for t in relationships:\n", " relations_list.append(json.loads(t.serialize()))\n", - "df = json_normalize(relations_list)\n", + "df = pandas.json_normalize(relations_list)\n", "df[0:4]" ] } @@ -8475,7 +7980,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.3" + "version": "3.8.5" } }, "nbformat": 4, diff --git a/notebooks/Usage_Filters.ipynb b/notebooks/Usage_Filters.ipynb index e78ff14..e5a2344 100644 --- a/notebooks/Usage_Filters.ipynb +++ b/notebooks/Usage_Filters.ipynb @@ -37,8 +37,7 @@ "metadata": {}, "outputs": [], "source": [ - "from pandas import *\n", - "from pandas.io.json import json_normalize" + "from pandas import *" ] }, { @@ -82,7 +81,8 @@ { "data": { "text/plain": [ - "[AttackPattern(type='attack-pattern', id='attack-pattern--62b8c999-dcc0-4755-bd69-09442d9359f5', created_by_ref='identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5', created='2017-05-31T21:31:06.045Z', modified='2019-01-31T01:30:34.695Z', name='Rundll32', description='The rundll32.exe program can be called to execute an arbitrary binary. Adversaries may take advantage of this functionality to proxy execution of code to avoid triggering security tools that may not monitor execution of the rundll32.exe process because of whitelists or false positives from Windows using rundll32.exe for normal operations.\\n\\nRundll32.exe can be used to execute Control Panel Item files (.cpl) through the undocumented shell32.dll functions Control_RunDLL and Control_RunDLLAsUser. Double-clicking a .cpl file also causes rundll32.exe to execute. (Citation: Trend Micro CPL)\\n\\nRundll32 can also been used to execute scripts such as JavaScript. This can be done using a syntax similar to this: rundll32.exe javascript:\"\\\\..\\\\mshtml,RunHTMLApplication \";document.write();GetObject(\"script:https[:]//www[.]example[.]com/malicious.sct\")\" This behavior has been seen used by malware such as Poweliks. (Citation: This is Security Command Line Confusion)', kill_chain_phases=[KillChainPhase(kill_chain_name='mitre-attack', phase_name='defense-evasion'), KillChainPhase(kill_chain_name='mitre-attack', phase_name='execution')], external_references=[ExternalReference(source_name='mitre-attack', url='https://attack.mitre.org/techniques/T1085', external_id='T1085'), ExternalReference(source_name='Trend Micro CPL', description='Merces, F. (2014). CPL Malware Malicious Control Panel Items. Retrieved November 1, 2017.', url='https://www.trendmicro.de/cloud-content/us/pdfs/security-intelligence/white-papers/wp-cpl-malware.pdf'), ExternalReference(source_name='This is Security Command Line Confusion', description='B. Ancel. (2014, August 20). Poweliks – Command Line Confusion. Retrieved March 5, 2018.', url='https://thisissecurity.stormshield.com/2014/08/20/poweliks-command-line-confusion/')], object_marking_refs=['marking-definition--fa42a846-8d90-4e51-bc29-71d5b4802168'], x_mitre_contributors=['Ricardo Dias', 'Casey Smith'], x_mitre_data_sources=['File monitoring', 'Process monitoring', 'Process command-line parameters', 'Binary file metadata'], x_mitre_defense_bypassed=['Anti-virus', 'Application whitelisting', 'Digital Certificate Validation'], x_mitre_detection='Use process monitoring to monitor the execution and arguments of rundll32.exe. Compare recent invocations of rundll32.exe with prior history of known good arguments and loaded DLLs to determine anomalous and potentially adversarial activity. Command arguments used with the rundll32.exe invocation may also be useful in determining the origin and purpose of the DLL being loaded.', x_mitre_permissions_required=['User'], x_mitre_platforms=['Windows'], x_mitre_version='1.1')]" + "[AttackPattern(type='attack-pattern', id='attack-pattern--045d0922-2310-4e60-b5e4-3302302cb3c5', created_by_ref='identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5', created='2020-01-23T18:03:46.248Z', modified='2020-06-20T22:31:42.113Z', name='Rundll32', description='Adversaries may abuse rundll32.exe to proxy execution of malicious code. Using rundll32.exe, vice executing directly (i.e. [Shared Modules](https://attack.mitre.org/techniques/T1129)), may avoid triggering security tools that may not monitor execution of the rundll32.exe process because of allowlists or false positives from normal operations. Rundll32.exe is commonly associated with executing DLL payloads.\\n\\nRundll32.exe can also be used to execute [Control Panel](https://attack.mitre.org/techniques/T1218/002) Item files (.cpl) through the undocumented shell32.dll functions Control_RunDLL and Control_RunDLLAsUser. Double-clicking a .cpl file also causes rundll32.exe to execute. (Citation: Trend Micro CPL)\\n\\nRundll32 can also be used to execute scripts such as JavaScript. This can be done using a syntax similar to this: rundll32.exe javascript:\"\\\\..\\\\mshtml,RunHTMLApplication \";document.write();GetObject(\"script:https[:]//www[.]example[.]com/malicious.sct\")\" This behavior has been seen used by malware such as Poweliks. (Citation: This is Security Command Line Confusion)', kill_chain_phases=[KillChainPhase(kill_chain_name='mitre-attack', phase_name='defense-evasion')], external_references=[ExternalReference(source_name='mitre-attack', url='https://attack.mitre.org/techniques/T1218/011', external_id='T1218.011'), ExternalReference(source_name='Trend Micro CPL', description='Merces, F. (2014). CPL Malware Malicious Control Panel Items. Retrieved November 1, 2017.', url='https://www.trendmicro.de/cloud-content/us/pdfs/security-intelligence/white-papers/wp-cpl-malware.pdf'), ExternalReference(source_name='This is Security Command Line Confusion', description='B. Ancel. (2014, August 20). Poweliks – Command Line Confusion. Retrieved March 5, 2018.', url='https://thisissecurity.stormshield.com/2014/08/20/poweliks-command-line-confusion/')], object_marking_refs=['marking-definition--fa42a846-8d90-4e51-bc29-71d5b4802168'], x_mitre_contributors=['Casey Smith', 'Ricardo Dias'], x_mitre_data_sources=['DLL monitoring', 'Loaded DLLs', 'Process command-line parameters', 'Process monitoring'], x_mitre_defense_bypassed=['Digital Certificate Validation', 'Application control', 'Anti-virus'], x_mitre_detection='Use process monitoring to monitor the execution and arguments of rundll32.exe. Compare recent invocations of rundll32.exe with prior history of known good arguments and loaded DLLs to determine anomalous and potentially adversarial activity. Command arguments used with the rundll32.exe invocation may also be useful in determining the origin and purpose of the DLL being loaded.', x_mitre_is_subtechnique=True, x_mitre_permissions_required=['User'], x_mitre_platforms=['Windows'], x_mitre_version='1.0'),\n", + " AttackPattern(type='attack-pattern', id='attack-pattern--62b8c999-dcc0-4755-bd69-09442d9359f5', created='2017-05-31T21:31:06.045Z', modified='2020-01-31T19:01:41.919Z', name='Rundll32', revoked=True, external_references=[ExternalReference(source_name='mitre-attack', url='https://attack.mitre.org/techniques/T1085', external_id='T1085'), ExternalReference(source_name='Trend Micro CPL', description='Merces, F. (2014). CPL Malware Malicious Control Panel Items. Retrieved November 1, 2017.', url='https://www.trendmicro.de/cloud-content/us/pdfs/security-intelligence/white-papers/wp-cpl-malware.pdf'), ExternalReference(source_name='This is Security Command Line Confusion', description='B. Ancel. (2014, August 20). Poweliks – Command Line Confusion. Retrieved March 5, 2018.', url='https://thisissecurity.stormshield.com/2014/08/20/poweliks-command-line-confusion/')])]" ] }, "execution_count": 5, @@ -120,7 +120,7 @@ { "data": { "text/plain": [ - "50" + "79" ] }, "execution_count": 7, @@ -140,56 +140,85 @@ { "data": { "text/plain": [ - "['Process command-line parameters',\n", - " 'Process monitoring',\n", - " 'File monitoring',\n", - " 'SSL/TLS inspection',\n", - " 'Web logs',\n", - " 'Web application firewall logs',\n", - " 'Network intrusion detection system',\n", - " 'Network protocol analysis',\n", - " 'Network device logs',\n", + "['Network device logs',\n", + " 'Network device run-time memory',\n", + " 'Network device command history',\n", + " 'Network device configuration',\n", " 'Netflow/Enclave netflow',\n", - " 'Sensor health and status',\n", - " 'Process use of network',\n", - " 'BIOS',\n", - " 'Component firmware',\n", + " 'Network protocol analysis',\n", " 'Packet capture',\n", - " 'Application logs',\n", + " 'File monitoring',\n", + " 'Process monitoring',\n", + " 'Process command-line parameters',\n", + " 'AWS CloudTrail logs',\n", + " 'Azure activity logs',\n", + " 'GCP audit logs',\n", " 'Windows Registry',\n", - " 'Services',\n", - " 'Windows event logs',\n", + " 'DLL monitoring',\n", " 'API monitoring',\n", - " 'Kernel drivers',\n", - " 'MBR',\n", - " 'DNS records',\n", - " 'PowerShell logs',\n", - " 'Anti-virus',\n", + " 'Mail server',\n", " 'Email gateway',\n", - " 'DLL monitoring',\n", + " 'Social media monitoring',\n", + " 'Web logs',\n", + " 'SSL/TLS certificates',\n", + " 'Domain registration',\n", + " 'Windows event logs',\n", " 'Authentication logs',\n", - " 'Data loss prevention',\n", - " 'Third-party application logs',\n", - " 'Windows Error Reporting',\n", - " 'Asset management',\n", - " 'Web proxy',\n", - " 'Binary file metadata',\n", + " 'Stackdriver logs',\n", + " 'Process use of network',\n", + " 'Host network interface',\n", " 'Loaded DLLs',\n", - " 'Detonation chamber',\n", - " 'Mail server',\n", - " 'System calls',\n", - " 'Browser extensions',\n", + " 'Anti-virus',\n", + " 'Binary file metadata',\n", + " 'Sensor health and status',\n", " 'Malware reverse engineering',\n", - " 'User interface',\n", + " 'SSL/TLS inspection',\n", + " 'DNS records',\n", + " 'PowerShell logs',\n", " 'Environment variable',\n", - " 'Access tokens',\n", - " 'Digital certificate logs',\n", + " 'Services',\n", + " 'Web proxy',\n", + " 'Component firmware',\n", + " 'BIOS',\n", " 'Disk forensics',\n", - " 'Host network interface',\n", + " 'EFI',\n", + " 'Data loss prevention',\n", + " 'User interface',\n", + " 'System calls',\n", + " 'Network intrusion detection system',\n", + " 'Detonation chamber',\n", + " 'Application logs',\n", + " 'Office 365 account logs',\n", + " 'Digital certificate logs',\n", + " 'Kernel drivers',\n", + " 'Web application firewall logs',\n", + " 'Office 365 trace logs',\n", + " 'Access tokens',\n", + " 'Office 365 audit logs',\n", + " 'Third-party application logs',\n", + " 'OAuth audit logs',\n", " 'WMI Objects',\n", " 'VBR',\n", + " 'MBR',\n", + " 'Asset management',\n", + " 'Windows Error Reporting',\n", + " 'Browser extensions',\n", " 'Named Pipes',\n", - " 'EFI']" + " 'Alarm history',\n", + " 'Alarm thresholds',\n", + " 'Sequential event recorder',\n", + " 'Data historian',\n", + " 'Windows registry',\n", + " 'File Monitoring',\n", + " 'Controller program',\n", + " 'Host network interfaces',\n", + " 'Alarm History',\n", + " 'Sequential Event Recorder',\n", + " 'process use of network',\n", + " 'SSl/TLS inspection',\n", + " 'Windows error reporting',\n", + " 'Digital signatures',\n", + " 'Controller parameters']" ] }, "execution_count": 8, @@ -232,7 +261,7 @@ { "data": { "text/plain": [ - "[AttackPattern(type='attack-pattern', id='attack-pattern--286cc500-4291-45c2-99a1-e760db176402', created_by_ref='identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5', created='2017-12-14T16:46:06.044Z', modified='2018-10-17T00:14:20.652Z', name='Acquire and/or use 3rd party infrastructure services', description='A wide variety of cloud, virtual private services, hosting, compute, and storage solutions are available. Additionally botnets are available for rent or purchase. Use of these solutions allow an adversary to stage, launch, and execute an attack from infrastructure that does not physically tie back to them and can be rapidly provisioned, modified, and shut down. (Citation: LUCKYCAT2012)', kill_chain_phases=[KillChainPhase(kill_chain_name='mitre-pre-attack', phase_name='adversary-opsec')], external_references=[ExternalReference(source_name='mitre-pre-attack', url='https://attack.mitre.org/techniques/T1307', external_id='T1307'), ExternalReference(source_name='LUCKYCAT2012', description='Forward-Looking Threat Research Team. (2012). LUCKYCAT REDUX: Inside an APT Campaign with Multiple Targets in India and Japan. Retrieved March 1, 2017.')], object_marking_refs=['marking-definition--fa42a846-8d90-4e51-bc29-71d5b4802168'], x_mitre_detectable_by_common_defenses='No', x_mitre_detectable_by_common_defenses_explanation='3rd party services highly leveraged by legitimate services, hard to distinguish from background noise. While an adversary can use their own infrastructure, most know this is a sure- re way to get caught. To add degrees of separation, they can buy or rent from another adversary or accomplice.', x_mitre_difficulty_for_adversary='Yes', x_mitre_difficulty_for_adversary_explanation='Wide range of 3rd party services for hosting, rotating, or moving C2, static data, exploits, exfiltration, etc.', x_mitre_old_attack_id='PRE-T1084', x_mitre_version='1.0')]" + "[AttackPattern(type='attack-pattern', id='attack-pattern--286cc500-4291-45c2-99a1-e760db176402', created_by_ref='identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5', created='2017-12-14T16:46:06.044Z', modified='2020-10-26T13:42:49.342Z', name='Acquire and/or use 3rd party infrastructure services', description='This object is deprecated as its content has been merged into the enterprise domain. Please see the [PRE](http://attack.mitre.org/matrices/enterprise/pre/) matrix for its replacement. The prior content of this page has been preserved [here](https://attack.mitre.org/versions/v7/techniques/T1307).\\n\\nA wide variety of cloud, virtual private services, hosting, compute, and storage solutions are available. Additionally botnets are available for rent or purchase. Use of these solutions allow an adversary to stage, launch, and execute an attack from infrastructure that does not physically tie back to them and can be rapidly provisioned, modified, and shut down. (Citation: LUCKYCAT2012)', kill_chain_phases=[KillChainPhase(kill_chain_name='mitre-pre-attack', phase_name='adversary-opsec')], external_references=[ExternalReference(source_name='mitre-pre-attack', url='https://attack.mitre.org/techniques/T1307', external_id='T1307'), ExternalReference(source_name='LUCKYCAT2012', description='Forward-Looking Threat Research Team. (2012). LUCKYCAT REDUX: Inside an APT Campaign with Multiple Targets in India and Japan. Retrieved March 1, 2017.')], object_marking_refs=['marking-definition--fa42a846-8d90-4e51-bc29-71d5b4802168'], x_mitre_deprecated=True, x_mitre_detectable_by_common_defenses='No', x_mitre_detectable_by_common_defenses_explanation='3rd party services highly leveraged by legitimate services, hard to distinguish from background noise. While an adversary can use their own infrastructure, most know this is a sure- re way to get caught. To add degrees of separation, they can buy or rent from another adversary or accomplice.', x_mitre_difficulty_for_adversary='Yes', x_mitre_difficulty_for_adversary_explanation='Wide range of 3rd party services for hosting, rotating, or moving C2, static data, exploits, exfiltration, etc.', x_mitre_old_attack_id='PRE-T1084', x_mitre_version='1.0')]" ] }, "execution_count": 10, @@ -269,7 +298,7 @@ { "data": { "text/plain": [ - "[IntrusionSet(type='intrusion-set', id='intrusion-set--899ce53f-13a0-479b-a0e4-67d46e241542', created_by_ref='identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5', created='2017-05-31T21:31:52.748Z', modified='2019-07-25T14:25:52.859Z', name='APT29', description='[APT29](https://attack.mitre.org/groups/G0016) is threat group that has been attributed to the Russian government and has operated since at least 2008. (Citation: F-Secure The Dukes) (Citation: GRIZZLY STEPPE JAR) This group reportedly compromised the Democratic National Committee starting in the summer of 2015. (Citation: Crowdstrike DNC June 2016)', aliases=['APT29', 'YTTRIUM', 'The Dukes', 'Cozy Bear', 'CozyDuke'], external_references=[ExternalReference(source_name='mitre-attack', url='https://attack.mitre.org/groups/G0016', external_id='G0016'), ExternalReference(source_name='APT29', description='(Citation: F-Secure The Dukes)(Citation: FireEye APT29 Nov 2018)'), ExternalReference(source_name='YTTRIUM', description='(Citation: Microsoft Unidentified Dec 2018)'), ExternalReference(source_name='The Dukes', description='(Citation: F-Secure The Dukes)'), ExternalReference(source_name='Cozy Bear', description='(Citation: Crowdstrike DNC June 2016)'), ExternalReference(source_name='CozyDuke', description='(Citation: Crowdstrike DNC June 2016)'), ExternalReference(source_name='F-Secure The Dukes', description='F-Secure Labs. (2015, September 17). The Dukes: 7 years of Russian cyberespionage. Retrieved December 10, 2015.', url='https://www.f-secure.com/documents/996508/1030745/dukes_whitepaper.pdf'), ExternalReference(source_name='GRIZZLY STEPPE JAR', description='Department of Homeland Security and Federal Bureau of Investigation. (2016, December 29). GRIZZLY STEPPE – Russian Malicious Cyber Activity. Retrieved January 11, 2017.', url='https://www.us-cert.gov/sites/default/files/publications/JAR_16-20296A_GRIZZLY%20STEPPE-2016-1229.pdf'), ExternalReference(source_name='Crowdstrike DNC June 2016', description='Alperovitch, D.. (2016, June 15). Bears in the Midst: Intrusion into the Democratic National Committee. Retrieved August 3, 2016.', url='https://www.crowdstrike.com/blog/bears-midst-intrusion-democratic-national-committee/'), ExternalReference(source_name='FireEye APT29 Nov 2018', description='Dunwoody, M., et al. (2018, November 19). Not So Cozy: An Uncomfortable Examination of a Suspected APT29 Phishing Campaign. Retrieved November 27, 2018.', url='https://www.fireeye.com/blog/threat-research/2018/11/not-so-cozy-an-uncomfortable-examination-of-a-suspected-apt29-phishing-campaign.html'), ExternalReference(source_name='Microsoft Unidentified Dec 2018', description='Microsoft Defender Research Team. (2018, December 3). Analysis of cyberattack on U.S. think tanks, non-profits, public sector by unidentified attackers. Retrieved April 15, 2019.', url='https://www.microsoft.com/security/blog/2018/12/03/analysis-of-cyberattack-on-u-s-think-tanks-non-profits-public-sector-by-unidentified-attackers/')], object_marking_refs=['marking-definition--fa42a846-8d90-4e51-bc29-71d5b4802168'], x_mitre_version='1.2')]" + "[IntrusionSet(type='intrusion-set', id='intrusion-set--899ce53f-13a0-479b-a0e4-67d46e241542', created_by_ref='identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5', created='2017-05-31T21:31:52.748Z', modified='2020-10-22T19:06:15.392Z', name='APT29', description='[APT29](https://attack.mitre.org/groups/G0016) is threat group that has been attributed to the Russian government and has operated since at least 2008. (Citation: F-Secure The Dukes) (Citation: GRIZZLY STEPPE JAR) This group reportedly compromised the Democratic National Committee starting in the summer of 2015. (Citation: Crowdstrike DNC June 2016)', aliases=['APT29', 'YTTRIUM', 'The Dukes', 'Cozy Bear', 'CozyDuke'], external_references=[ExternalReference(source_name='mitre-attack', url='https://attack.mitre.org/groups/G0016', external_id='G0016'), ExternalReference(source_name='APT29', description='(Citation: F-Secure The Dukes)(Citation: FireEye APT29 Nov 2018)(Citation: ESET Dukes October 2019)(Citation: NCSC APT29 July 2020)'), ExternalReference(source_name='YTTRIUM', description='(Citation: Microsoft Unidentified Dec 2018)'), ExternalReference(source_name='The Dukes', description='(Citation: F-Secure The Dukes)(Citation: ESET Dukes October 2019)(Citation: NCSC APT29 July 2020)'), ExternalReference(source_name='Cozy Bear', description='(Citation: Crowdstrike DNC June 2016)(Citation: ESET Dukes October 2019)(Citation: NCSC APT29 July 2020)'), ExternalReference(source_name='CozyDuke', description='(Citation: Crowdstrike DNC June 2016)'), ExternalReference(source_name='F-Secure The Dukes', description='F-Secure Labs. (2015, September 17). The Dukes: 7 years of Russian cyberespionage. Retrieved December 10, 2015.', url='https://www.f-secure.com/documents/996508/1030745/dukes_whitepaper.pdf'), ExternalReference(source_name='GRIZZLY STEPPE JAR', description='Department of Homeland Security and Federal Bureau of Investigation. (2016, December 29). GRIZZLY STEPPE – Russian Malicious Cyber Activity. Retrieved January 11, 2017.', url='https://www.us-cert.gov/sites/default/files/publications/JAR_16-20296A_GRIZZLY%20STEPPE-2016-1229.pdf'), ExternalReference(source_name='Crowdstrike DNC June 2016', description='Alperovitch, D.. (2016, June 15). Bears in the Midst: Intrusion into the Democratic National Committee. Retrieved August 3, 2016.', url='https://www.crowdstrike.com/blog/bears-midst-intrusion-democratic-national-committee/'), ExternalReference(source_name='FireEye APT29 Nov 2018', description='Dunwoody, M., et al. (2018, November 19). Not So Cozy: An Uncomfortable Examination of a Suspected APT29 Phishing Campaign. Retrieved November 27, 2018.', url='https://www.fireeye.com/blog/threat-research/2018/11/not-so-cozy-an-uncomfortable-examination-of-a-suspected-apt29-phishing-campaign.html'), ExternalReference(source_name='ESET Dukes October 2019', description='Faou, M., Tartare, M., Dupuy, T. (2019, October). OPERATION GHOST. Retrieved September 23, 2020.', url='https://www.welivesecurity.com/wp-content/uploads/2019/10/ESET_Operation_Ghost_Dukes.pdf'), ExternalReference(source_name='NCSC APT29 July 2020', description='National Cyber Security Centre. (2020, July 16). Advisory: APT29 targets COVID-19 vaccine development. Retrieved September 29, 2020.', url='https://www.ncsc.gov.uk/files/Advisory-APT29-targets-COVID-19-vaccine-development-V1-1.pdf'), ExternalReference(source_name='Microsoft Unidentified Dec 2018', description='Microsoft Defender Research Team. (2018, December 3). Analysis of cyberattack on U.S. think tanks, non-profits, public sector by unidentified attackers. Retrieved April 15, 2019.', url='https://www.microsoft.com/security/blog/2018/12/03/analysis-of-cyberattack-on-u-s-think-tanks-non-profits-public-sector-by-unidentified-attackers/')], object_marking_refs=['marking-definition--fa42a846-8d90-4e51-bc29-71d5b4802168'], x_mitre_version='1.4')]" ] }, "execution_count": 12, @@ -308,7 +337,7 @@ { "data": { "text/plain": [ - "Relationship(type='relationship', id='relationship--380743e5-616c-4524-96e6-d545e5b653ea', created_by_ref='identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5', created='2019-07-22T15:49:28.744Z', modified='2019-07-22T15:49:28.744Z', relationship_type='uses', description='[Soft Cell](https://attack.mitre.org/groups/G0093) used Web shells and [HTRAN](https://attack.mitre.org/software/S0040) for C2 as well as to exfiltrate data.', source_ref='intrusion-set--06a11b7e-2a36-47fe-8d3e-82c265df3258', target_ref='attack-pattern--92d7da27-2d91-488e-a00c-059dc162766d', external_references=[ExternalReference(source_name='Cybereason Soft Cell June 2019', description='Cybereason Nocturnus. (2019, June 25). Operation Soft Cell: A Worldwide Campaign Against Telecommunications Providers. Retrieved July 18, 2019.', url='https://www.cybereason.com/blog/operation-soft-cell-a-worldwide-campaign-against-telecommunications-providers')], object_marking_refs=['marking-definition--fa42a846-8d90-4e51-bc29-71d5b4802168'])" + "Relationship(type='relationship', id='relationship--689b0bff-7eb4-4678-997b-64794c56add0', created_by_ref='identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5', created='2020-09-22T20:17:38.809Z', modified='2020-10-06T15:32:20.360Z', relationship_type='uses', description='[GOLD SOUTHFIELD](https://attack.mitre.org/groups/G0115) has distributed ransomware by backdooring software installers via a strategic web compromise of the site hosting Italian WinRAR.(Citation: Secureworks REvil September 2019)(Citation: Secureworks GandCrab and REvil September 2019)(Citation: Secureworks GOLD SOUTHFIELD)', source_ref='intrusion-set--c77c5576-ca19-42ed-a36f-4b4486a84133', target_ref='attack-pattern--bd369cd9-abb8-41ce-b5bb-fff23ee86c00', external_references=[ExternalReference(source_name='Secureworks REvil September 2019', description='Counter Threat Unit Research Team. (2019, September 24). REvil/Sodinokibi Ransomware. Retrieved August 4, 2020.', url='https://www.secureworks.com/research/revil-sodinokibi-ransomware'), ExternalReference(source_name='Secureworks GandCrab and REvil September 2019', description='Secureworks . (2019, September 24). REvil: The GandCrab Connection. Retrieved August 4, 2020.', url='https://www.secureworks.com/blog/revil-the-gandcrab-connection'), ExternalReference(source_name='Secureworks GOLD SOUTHFIELD', description='Secureworks. (n.d.). GOLD SOUTHFIELD. Retrieved October 6, 2020.', url='https://www.secureworks.com/research/threat-profiles/gold-southfield')], object_marking_refs=['marking-definition--fa42a846-8d90-4e51-bc29-71d5b4802168'])" ] }, "execution_count": 14, @@ -345,7 +374,7 @@ { "data": { "text/plain": [ - "AttackPattern(type='attack-pattern', id='attack-pattern--4b74a1d4-b0e9-4ef1-93f1-14ecc6e2f5b5', created_by_ref='identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5', created='2017-05-31T21:30:35.334Z', modified='2018-10-17T00:14:20.652Z', name='Standard Cryptographic Protocol', description='Adversaries may explicitly employ a known encryption algorithm to conceal command and control traffic rather than relying on any inherent protections provided by a communication protocol. Despite the use of a secure algorithm, these implementations may be vulnerable to reverse engineering if necessary secret keys are encoded and/or generated within malware samples/configuration files.', kill_chain_phases=[KillChainPhase(kill_chain_name='mitre-attack', phase_name='command-and-control')], external_references=[ExternalReference(source_name='mitre-attack', url='https://attack.mitre.org/techniques/T1032', external_id='T1032'), ExternalReference(source_name='SANS Decrypting SSL', description='Butler, M. (2013, November). Finding Hidden Threats by Decrypting SSL. Retrieved April 5, 2016.', url='http://www.sans.org/reading-room/whitepapers/analyst/finding-hidden-threats-decrypting-ssl-34840'), ExternalReference(source_name='SEI SSL Inspection Risks', description='Dormann, W. (2015, March 13). The Risks of SSL Inspection. Retrieved April 5, 2016.', url='https://insights.sei.cmu.edu/cert/2015/03/the-risks-of-ssl-inspection.html'), ExternalReference(source_name='Fidelis DarkComet', description='Fidelis Cybersecurity. (2015, August 4). Looking at the Sky for a DarkComet. Retrieved April 5, 2016.', url='https://www.fidelissecurity.com/sites/default/files/FTA_1018_looking_at_the_sky_for_a_dark_comet.pdf'), ExternalReference(source_name='University of Birmingham C2', description='Gardiner, J., Cova, M., Nagaraja, S. (2014, February). Command & Control Understanding, Denying and Detecting. Retrieved April 20, 2016.', url='https://arxiv.org/ftp/arxiv/papers/1408/1408.1136.pdf')], object_marking_refs=['marking-definition--fa42a846-8d90-4e51-bc29-71d5b4802168'], x_mitre_data_sources=['Packet capture', 'Netflow/Enclave netflow', 'Malware reverse engineering', 'Process use of network', 'Process monitoring', 'SSL/TLS inspection'], x_mitre_detection='SSL/TLS inspection is one way of detecting command and control traffic within some encrypted communication channels. (Citation: SANS Decrypting SSL) SSL/TLS inspection does come with certain risks that should be considered before implementing to avoid potential security issues such as incomplete certificate validation. (Citation: SEI SSL Inspection Risks)\\n\\nIf malware uses encryption with symmetric keys, it may be possible to obtain the algorithm and key from samples and use them to decode network traffic to detect malware communications signatures. (Citation: Fidelis DarkComet)\\n\\nIn general, analyze network data for uncommon data flows (e.g., a client sending significantly more data than it receives from a server). Processes utilizing the network that do not normally have network communication or have never been seen before are suspicious. Analyze packet contents to detect communications that do not follow the expected protocol behavior for the port that is being used. (Citation: University of Birmingham C2)', x_mitre_network_requirements=True, x_mitre_platforms=['Linux', 'macOS', 'Windows'], x_mitre_version='1.0')" + "AttackPattern(type='attack-pattern', id='attack-pattern--81033c3b-16a4-46e4-8fed-9b030dd03c4a', created_by_ref='identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5', created='2020-10-01T01:17:15.965Z', modified='2020-10-22T18:05:46.296Z', name='Compromise Accounts', description='Before compromising a victim, adversaries may compromise accounts with services that can be used during targeting. For operations incorporating social engineering, the utilization of an online persona may be important. Rather than creating and cultivating accounts (i.e. [Establish Accounts](https://attack.mitre.org/techniques/T1585)), adversaries may compromise existing accounts. Utilizing an existing persona may engender a level of trust in a potential victim if they have a relationship, or knowledge of, the compromised persona. \\n\\nA variety of methods exist for compromising accounts, such as gathering credentials via [Phishing for Information](https://attack.mitre.org/techniques/T1598), purchasing credentials from third-party sites, or by brute forcing credentials (ex: password reuse from breach credential dumps).(Citation: AnonHBGary) Prior to compromising accounts, adversaries may conduct Reconnaissance to inform decisions about which accounts to compromise to further their operation.\\n\\nPersonas may exist on a single site or across multiple sites (ex: Facebook, LinkedIn, Twitter, Google, etc.). Compromised accounts may require additional development, this could include filling out or modifying profile information, further developing social networks, or incorporating photos.\\n\\nAdversaries may directly leverage compromised email accounts for [Phishing for Information](https://attack.mitre.org/techniques/T1598) or [Phishing](https://attack.mitre.org/techniques/T1566).', kill_chain_phases=[KillChainPhase(kill_chain_name='mitre-attack', phase_name='resource-development')], external_references=[ExternalReference(source_name='mitre-attack', url='https://attack.mitre.org/techniques/T1586', external_id='T1586'), ExternalReference(source_name='AnonHBGary', description='Bright, P. (2011, February 15). Anonymous speaks: the inside story of the HBGary hack. Retrieved March 9, 2017.', url='https://arstechnica.com/tech-policy/2011/02/anonymous-speaks-the-inside-story-of-the-hbgary-hack/')], object_marking_refs=['marking-definition--fa42a846-8d90-4e51-bc29-71d5b4802168'], x_mitre_data_sources=['Social media monitoring'], x_mitre_detection='Consider monitoring social media activity related to your organization. Suspicious activity may include personas claiming to work for your organization or recently modified accounts making numerous connection requests to accounts affiliated with your organization.\\n\\nMuch of this activity will take place outside the visibility of the target organization, making detection of this behavior difficult. Detection efforts may be focused on related stages of the adversary lifecycle, such as during Initial Access (ex: [Phishing](https://attack.mitre.org/techniques/T1566)).', x_mitre_platforms=['PRE'], x_mitre_version='1.0')" ] }, "execution_count": 16, @@ -367,7 +396,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 17, "metadata": {}, "outputs": [], "source": [ @@ -378,9 +407,20 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 18, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "AttackPattern(type='attack-pattern', id='attack-pattern--df8b2a25-8bdf-4856-953c-a04372b1c161', created_by_ref='identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5', created='2020-03-15T16:13:46.151Z', modified='2020-03-26T20:15:35.821Z', name='Web Protocols', description='Adversaries may communicate using application layer protocols associated with web traffic to avoid detection/network filtering by blending in with existing traffic. Commands to the remote system, and often the results of those commands, will be embedded within the protocol traffic between the client and server. \\n\\nProtocols such as HTTP and HTTPS that carry web traffic may be very common in environments. HTTP/S packets have many fields and headers in which data can be concealed. An adversary may abuse these protocols to communicate with systems under their control within a victim network while also mimicking normal, expected traffic. ', kill_chain_phases=[KillChainPhase(kill_chain_name='mitre-attack', phase_name='command-and-control')], external_references=[ExternalReference(source_name='mitre-attack', url='https://attack.mitre.org/techniques/T1071/001', external_id='T1071.001'), ExternalReference(source_name='University of Birmingham C2', description='Gardiner, J., Cova, M., Nagaraja, S. (2014, February). Command & Control Understanding, Denying and Detecting. Retrieved April 20, 2016.', url='https://arxiv.org/ftp/arxiv/papers/1408/1408.1136.pdf')], object_marking_refs=['marking-definition--fa42a846-8d90-4e51-bc29-71d5b4802168'], x_mitre_data_sources=['Network protocol analysis', 'Process monitoring', 'Process use of network', 'Netflow/Enclave netflow', 'Packet capture'], x_mitre_detection='Analyze network data for uncommon data flows (e.g., a client sending significantly more data than it receives from a server). Processes utilizing the network that do not normally have network communication or have never been seen before are suspicious. Analyze packet contents to detect application layer protocols that do not follow the expected protocol standards regarding syntax, structure, or any other variable adversaries could leverage to conceal data.(Citation: University of Birmingham C2)\\n\\nMonitor for web traffic to/from known-bad or suspicious domains. ', x_mitre_is_subtechnique=True, x_mitre_platforms=['Linux', 'macOS', 'Windows'], x_mitre_version='1.0')" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "software_techniques[0]" ] @@ -395,7 +435,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 19, "metadata": {}, "outputs": [], "source": [ @@ -406,9 +446,20 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 20, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "AttackPattern(type='attack-pattern', id='attack-pattern--bd369cd9-abb8-41ce-b5bb-fff23ee86c00', created_by_ref='identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5', created='2020-03-11T14:17:21.153Z', modified='2020-03-11T14:17:21.153Z', name='Compromise Software Supply Chain', description='Adversaries may manipulate application software prior to receipt by a final consumer for the purpose of data or system compromise. Supply chain compromise of software can take place in a number of ways, including manipulation of the application source code, manipulation of the update/distribution mechanism for that software, or replacing compiled releases with a modified version.\\n\\nTargeting may be specific to a desired victim set or may be distributed to a broad set of consumers but only move on to additional tactics on specific victims.(Citation: Avast CCleaner3 2018) (Citation: Command Five SK 2011) ', kill_chain_phases=[KillChainPhase(kill_chain_name='mitre-attack', phase_name='initial-access')], external_references=[ExternalReference(source_name='mitre-attack', url='https://attack.mitre.org/techniques/T1195/002', external_id='T1195.002'), ExternalReference(source_name='Avast CCleaner3 2018', description='Avast Threat Intelligence Team. (2018, March 8). New investigations into the CCleaner incident point to a possible third stage that had keylogger capacities. Retrieved March 15, 2018.', url='https://blog.avast.com/new-investigations-in-ccleaner-incident-point-to-a-possible-third-stage-that-had-keylogger-capacities'), ExternalReference(source_name='Command Five SK 2011', description='Command Five Pty Ltd. (2011, September). SK Hack by an Advanced Persistent Threat. Retrieved April 6, 2018.', url='https://www.commandfive.com/papers/C5_APT_SKHack.pdf')], object_marking_refs=['marking-definition--fa42a846-8d90-4e51-bc29-71d5b4802168'], x_mitre_data_sources=['File monitoring', 'Web proxy'], x_mitre_detection='Use verification of distributed binaries through hash checking or other integrity checking mechanisms. Scan downloads for malicious signatures and attempt to test software and updates prior to deployment while taking note of potential suspicious activity. ', x_mitre_is_subtechnique=True, x_mitre_platforms=['Linux', 'macOS', 'Windows'], x_mitre_version='1.0')" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "group_techniques[0]" ] @@ -423,7 +474,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 21, "metadata": {}, "outputs": [], "source": [ @@ -434,9 +485,20 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 22, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "Malware(type='malware', id='malware--ac61f1f9-7bb1-465e-9b8a-c2ce8e88baf5', created_by_ref='identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5', created='2020-08-04T15:06:14.796Z', modified='2020-10-05T15:52:54.596Z', name='REvil', description='[REvil](https://attack.mitre.org/software/S0496) is a ransomware family that has been linked to the [GOLD SOUTHFIELD](https://attack.mitre.org/groups/G0115) group and operated as ransomware-as-a-service (RaaS) since at least April 2019. [REvil](https://attack.mitre.org/software/S0496) is highly configurable and shares code similarities with the GandCrab RaaS.(Citation: Secureworks REvil September 2019)(Citation: Intel 471 REvil March 2020)(Citation: Group IB Ransomware May 2020)', labels=['malware'], external_references=[ExternalReference(source_name='mitre-attack', url='https://attack.mitre.org/software/S0496', external_id='S0496'), ExternalReference(source_name='Sodin', description='(Citation: Intel 471 REvil March 2020)(Citation: Kaspersky Sodin July 2019)'), ExternalReference(source_name='Sodinokibi', description='(Citation: Secureworks REvil September 2019)(Citation: Intel 471 REvil March 2020)(Citation: G Data Sodinokibi June 2019)(Citation: Kaspersky Sodin July 2019)(Citation: Cylance Sodinokibi July 2019)(Citation: Secureworks GandCrab and REvil September 2019)(Citation: Talos Sodinokibi April 2019)(Citation: McAfee Sodinokibi October 2019)(Citation: McAfee REvil October 2019)(Citation: Picus Sodinokibi January 2020)(Citation: Secureworks REvil September 2019)'), ExternalReference(source_name='Secureworks REvil September 2019', description='Counter Threat Unit Research Team. (2019, September 24). REvil/Sodinokibi Ransomware. Retrieved August 4, 2020.', url='https://www.secureworks.com/research/revil-sodinokibi-ransomware'), ExternalReference(source_name='Intel 471 REvil March 2020', description='Intel 471 Malware Intelligence team. (2020, March 31). REvil Ransomware-as-a-Service – An analysis of a ransomware affiliate operation. Retrieved August 4, 2020.', url='https://blog.intel471.com/2020/03/31/revil-ransomware-as-a-service-an-analysis-of-a-ransomware-affiliate-operation/'), ExternalReference(source_name='Group IB Ransomware May 2020', description='Group IB. (2020, May). Ransomware Uncovered: Attackers’ Latest Methods. Retrieved August 5, 2020.', url='https://www.group-ib.com/whitepapers/ransomware-uncovered.html'), ExternalReference(source_name='Kaspersky Sodin July 2019', description='Mamedov, O, et al. (2019, July 3). Sodin ransomware exploits Windows vulnerability and processor architecture. Retrieved August 4, 2020.', url='https://securelist.com/sodin-ransomware/91473/'), ExternalReference(source_name='G Data Sodinokibi June 2019', description='Han, Karsten. (2019, June 4). Strange Bits: Sodinokibi Spam, CinaRAT, and Fake G DATA. Retrieved August 4, 2020.', url='https://www.gdatasoftware.com/blog/2019/06/31724-strange-bits-sodinokibi-spam-cinarat-and-fake-g-data'), ExternalReference(source_name='Cylance Sodinokibi July 2019', description='Cylance. (2019, July 3). hreat Spotlight: Sodinokibi Ransomware. Retrieved August 4, 2020.', url='https://threatvector.cylance.com/en_us/home/threat-spotlight-sodinokibi-ransomware.html'), ExternalReference(source_name='Secureworks GandCrab and REvil September 2019', description='Secureworks . (2019, September 24). REvil: The GandCrab Connection. Retrieved August 4, 2020.', url='https://www.secureworks.com/blog/revil-the-gandcrab-connection'), ExternalReference(source_name='Talos Sodinokibi April 2019', description='Cadieux, P, et al (2019, April 30). Sodinokibi ransomware exploits WebLogic Server vulnerability. Retrieved August 4, 2020.', url='https://blog.talosintelligence.com/2019/04/sodinokibi-ransomware-exploits-weblogic.html'), ExternalReference(source_name='McAfee Sodinokibi October 2019', description='McAfee. (2019, October 2). McAfee ATR Analyzes Sodinokibi aka REvil Ransomware-as-a-Service – What The Code Tells Us. Retrieved August 4, 2020.', url='https://www.mcafee.com/blogs/other-blogs/mcafee-labs/mcafee-atr-analyzes-sodinokibi-aka-revil-ransomware-as-a-service-what-the-code-tells-us/'), ExternalReference(source_name='McAfee REvil October 2019', description='Saavedra-Morales, J, et al. (2019, October 20). McAfee ATR Analyzes Sodinokibi aka REvil Ransomware-as-a-Service – Crescendo. Retrieved August 5, 2020.', url='https://www.mcafee.com/blogs/other-blogs/mcafee-labs/mcafee-atr-analyzes-sodinokibi-aka-revil-ransomware-as-a-service-crescendo/'), ExternalReference(source_name='Picus Sodinokibi January 2020', description='Ozarslan, S. (2020, January 15). A Brief History of Sodinokibi. Retrieved August 5, 2020.', url='https://www.picussecurity.com/blog/a-brief-history-and-further-technical-analysis-of-sodinokibi-ransomware')], object_marking_refs=['marking-definition--fa42a846-8d90-4e51-bc29-71d5b4802168'], x_mitre_aliases=['REvil', 'Sodin', 'Sodinokibi'], x_mitre_contributors=['Edward Millington'], x_mitre_platforms=['Windows'], x_mitre_version='1.0')" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "group_software[0]" ] @@ -465,7 +527,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.3" + "version": "3.8.5" } }, "nbformat": 4, diff --git a/notebooks/export_groups_navigator_layers.ipynb b/notebooks/export_groups_navigator_layers.ipynb index 65b56df..40c4dc6 100644 --- a/notebooks/export_groups_navigator_layers.ipynb +++ b/notebooks/export_groups_navigator_layers.ipynb @@ -31,7 +31,7 @@ "outputs": [], "source": [ "from stix2 import TAXIICollectionSource, Filter, CompositeDataSource\n", - "from taxii2client import Collection" + "from taxii2client.v20 import Collection" ] }, { @@ -48,10 +48,11 @@ "metadata": {}, "outputs": [], "source": [ - "ATTCK_STIX_COLLECTIONS = \"https://cti-taxii.mitre.org/stix/collections/\"\n", - "ENTERPRISE_ATTCK = \"95ecc380-afe9-11e4-9b6c-751b66dd541e\"\n", - "PRE_ATTCK = \"062767bd-02d2-4b72-84ba-56caef0f8658\"\n", - "MOBILE_ATTCK = \"2f669986-b40b-4423-b720-4396ca6a462b\"" + "ATTACK_STIX_COLLECTIONS = \"https://cti-taxii.mitre.org/stix/collections/\"\n", + "ENTERPRISE_ATTACK = \"95ecc380-afe9-11e4-9b6c-751b66dd541e\"\n", + "PRE_ATTACK = \"062767bd-02d2-4b72-84ba-56caef0f8658\"\n", + "MOBILE_ATTACK = \"2f669986-b40b-4423-b720-4396ca6a462b\"\n", + "ICS_ATTACK = \"02c3ef24-9cd4-48f3-a99f-b74ce24f1d34\"" ] }, { @@ -68,12 +69,14 @@ "metadata": {}, "outputs": [], "source": [ - "ENTERPRISE_COLLECTION = Collection(ATTCK_STIX_COLLECTIONS + ENTERPRISE_ATTCK + \"/\")\n", + "ENTERPRISE_COLLECTION = Collection(ATTACK_STIX_COLLECTIONS + ENTERPRISE_ATTACK + \"/\")\n", "TC_ENTERPRISE_SOURCE = TAXIICollectionSource(ENTERPRISE_COLLECTION)\n", - "PRE_COLLECTION = Collection(ATTCK_STIX_COLLECTIONS + PRE_ATTCK + \"/\")\n", + "PRE_COLLECTION = Collection(ATTACK_STIX_COLLECTIONS + PRE_ATTACK + \"/\")\n", "TC_PRE_SOURCE = TAXIICollectionSource(PRE_COLLECTION)\n", - "MOBILE_COLLECTION = Collection(ATTCK_STIX_COLLECTIONS + MOBILE_ATTCK + \"/\")\n", - "TC_MOBILE_SOURCE = TAXIICollectionSource(MOBILE_COLLECTION)" + "MOBILE_COLLECTION = Collection(ATTACK_STIX_COLLECTIONS + MOBILE_ATTACK + \"/\")\n", + "TC_MOBILE_SOURCE = TAXIICollectionSource(MOBILE_COLLECTION)\n", + "ICS_COLLECTION = Collection(ATTACK_STIX_COLLECTIONS + ICS_ATTACK + \"/\")\n", + "TC_ICS_SOURCE = TAXIICollectionSource(ICS_COLLECTION)" ] }, { @@ -91,7 +94,7 @@ "outputs": [], "source": [ "COMPOSITE_DS = CompositeDataSource()\n", - "COMPOSITE_DS.add_data_sources([TC_ENTERPRISE_SOURCE, TC_PRE_SOURCE, TC_MOBILE_SOURCE])" + "COMPOSITE_DS.add_data_sources([TC_ENTERPRISE_SOURCE, TC_PRE_SOURCE, TC_MOBILE_SOURCE, TC_ICS_SOURCE])" ] }, { @@ -110,7 +113,7 @@ { "data": { "text/plain": [ - "Relationship(type='relationship', id='relationship--25b225e4-2365-4c00-8a27-f578a7fd94c8', created_by_ref='identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5', created='2019-10-23T14:26:33.079Z', modified='2019-10-23T14:26:33.079Z', relationship_type='mitigates', description='Consider rotating access keys within a certain number of days to reduce the effectiveness of stolen credentials.', source_ref='course-of-action--90c218c3-fbf8-4830-98a7-e8cfb7eaa485', target_ref='attack-pattern--d4bdbdea-eaec-4071-b4f9-5105e12ea4b6', object_marking_refs=['marking-definition--fa42a846-8d90-4e51-bc29-71d5b4802168'])" + "Relationship(type='relationship', id='relationship--fcee0cef-7d5b-49da-928c-2a3d0cfd06b0', created_by_ref='identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5', created='2020-11-10T18:04:03.668Z', modified='2020-11-10T18:04:03.668Z', relationship_type='uses', description=\"(Citation: FireEye KEGTAP SINGLEMALT October 2020)(Citation: DHS/CISA Ransomware Targeting Healthcare October 2020)(Citation: DFIR Ryuk's Return October 2020)(Citation: DFIR Ryuk 2 Hour Speed Run November 2020)(Citation: DFIR Ryuk in 5 Hours October 2020)(Citation: Sophos New Ryuk Attack October 2020)\", source_ref='intrusion-set--dd2d9ca6-505b-4860-a604-233685b802c7', target_ref='malware--a7881f21-e978-4fe4-af56-92c9416a2616', external_references=[ExternalReference(source_name='FireEye KEGTAP SINGLEMALT October 2020', description='Kimberly Goody, Jeremy Kennelly, Joshua Shilko, Steve Elovitz, Douglas Bienstock. (2020, October 28). Unhappy Hour Special: KEGTAP and SINGLEMALT With a Ransomware Chaser. Retrieved October 28, 2020.', url='https://www.fireeye.com/blog/threat-research/2020/10/kegtap-and-singlemalt-with-a-ransomware-chaser.html'), ExternalReference(source_name='DHS/CISA Ransomware Targeting Healthcare October 2020', description='DHS/CISA. (2020, October 28). Ransomware Activity Targeting the Healthcare and Public Health Sector. Retrieved October 28, 2020.', url='https://us-cert.cisa.gov/ncas/alerts/aa20-302a'), ExternalReference(source_name=\"DFIR Ryuk's Return October 2020\", description='The DFIR Report. (2020, October 8). Ryuk’s Return. Retrieved October 9, 2020.', url='https://thedfirreport.com/2020/10/08/ryuks-return/'), ExternalReference(source_name='DFIR Ryuk 2 Hour Speed Run November 2020', description='The DFIR Report. (2020, November 5). Ryuk Speed Run, 2 Hours to Ransom. Retrieved November 6, 2020.', url='https://thedfirreport.com/2020/11/05/ryuk-speed-run-2-hours-to-ransom/'), ExternalReference(source_name='DFIR Ryuk in 5 Hours October 2020', description='The DFIR Report. (2020, October 18). Ryuk in 5 Hours. Retrieved October 19, 2020.', url='https://thedfirreport.com/2020/10/18/ryuk-in-5-hours/'), ExternalReference(source_name='Sophos New Ryuk Attack October 2020', description='Sean Gallagher, Peter Mackenzie, Elida Leite, Syed Shahram, Bill Kearney, Anand Aijan, Sivagnanam Gn, Suraj Mundalik. (2020, October 14). They’re back: inside a new Ryuk ransomware attack. Retrieved October 14, 2020.', url='https://news.sophos.com/en-us/2020/10/14/inside-a-new-ryuk-ransomware-attack/')], object_marking_refs=['marking-definition--fa42a846-8d90-4e51-bc29-71d5b4802168'])" ] }, "execution_count": 5, @@ -139,7 +142,7 @@ { "data": { "text/plain": [ - "Relationship(type='relationship', id='relationship--4d1d7045-4492-492c-9522-2885d6bd96f6', created_by_ref='identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5', created='2019-09-24T13:01:20.471Z', modified='2019-09-24T13:01:20.472Z', relationship_type='uses', source_ref='intrusion-set--18854f55-ac7c-4634-bd9a-352dd07613b7', target_ref='malware--cfc75b0d-e579-40ae-ad07-a1ce00d49a6c', external_references=[ExternalReference(source_name='FireEye APT41 Aug 2019', description='Fraser, N., et al. (2019, August 7). Double DragonAPT41, a dual espionage and cyber crime operation APT41. Retrieved September 23, 2019.', url='https://content.fireeye.com/apt-41/rpt-apt41')], object_marking_refs=['marking-definition--fa42a846-8d90-4e51-bc29-71d5b4802168'])" + "Relationship(type='relationship', id='relationship--689b0bff-7eb4-4678-997b-64794c56add0', created_by_ref='identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5', created='2020-09-22T20:17:38.809Z', modified='2020-10-06T15:32:20.360Z', relationship_type='uses', description='[GOLD SOUTHFIELD](https://attack.mitre.org/groups/G0115) has distributed ransomware by backdooring software installers via a strategic web compromise of the site hosting Italian WinRAR.(Citation: Secureworks REvil September 2019)(Citation: Secureworks GandCrab and REvil September 2019)(Citation: Secureworks GOLD SOUTHFIELD)', source_ref='intrusion-set--c77c5576-ca19-42ed-a36f-4b4486a84133', target_ref='attack-pattern--bd369cd9-abb8-41ce-b5bb-fff23ee86c00', external_references=[ExternalReference(source_name='Secureworks REvil September 2019', description='Counter Threat Unit Research Team. (2019, September 24). REvil/Sodinokibi Ransomware. Retrieved August 4, 2020.', url='https://www.secureworks.com/research/revil-sodinokibi-ransomware'), ExternalReference(source_name='Secureworks GandCrab and REvil September 2019', description='Secureworks . (2019, September 24). REvil: The GandCrab Connection. Retrieved August 4, 2020.', url='https://www.secureworks.com/blog/revil-the-gandcrab-connection'), ExternalReference(source_name='Secureworks GOLD SOUTHFIELD', description='Secureworks. (n.d.). GOLD SOUTHFIELD. Retrieved October 6, 2020.', url='https://www.secureworks.com/research/threat-profiles/gold-southfield')], object_marking_refs=['marking-definition--fa42a846-8d90-4e51-bc29-71d5b4802168'])" ] }, "execution_count": 6, @@ -192,8 +195,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 3.51 s, sys: 270 ms, total: 3.78 s\n", - "Wall time: 5.75 s\n" + "CPU times: user 2.64 s, sys: 71 ms, total: 2.71 s\n", + "Wall time: 4.36 s\n" ] } ], @@ -209,7 +212,7 @@ { "data": { "text/plain": [ - "Relationship(type='relationship', id='relationship--25b225e4-2365-4c00-8a27-f578a7fd94c8', created_by_ref='identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5', created='2019-10-23T14:26:33.079Z', modified='2019-10-23T14:26:33.079Z', relationship_type='mitigates', description='Consider rotating access keys within a certain number of days to reduce the effectiveness of stolen credentials.', source_ref='course-of-action--90c218c3-fbf8-4830-98a7-e8cfb7eaa485', target_ref='attack-pattern--d4bdbdea-eaec-4071-b4f9-5105e12ea4b6', object_marking_refs=['marking-definition--fa42a846-8d90-4e51-bc29-71d5b4802168'])" + "Relationship(type='relationship', id='relationship--fcee0cef-7d5b-49da-928c-2a3d0cfd06b0', created_by_ref='identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5', created='2020-11-10T18:04:03.668Z', modified='2020-11-10T18:04:03.668Z', relationship_type='uses', description=\"(Citation: FireEye KEGTAP SINGLEMALT October 2020)(Citation: DHS/CISA Ransomware Targeting Healthcare October 2020)(Citation: DFIR Ryuk's Return October 2020)(Citation: DFIR Ryuk 2 Hour Speed Run November 2020)(Citation: DFIR Ryuk in 5 Hours October 2020)(Citation: Sophos New Ryuk Attack October 2020)\", source_ref='intrusion-set--dd2d9ca6-505b-4860-a604-233685b802c7', target_ref='malware--a7881f21-e978-4fe4-af56-92c9416a2616', external_references=[ExternalReference(source_name='FireEye KEGTAP SINGLEMALT October 2020', description='Kimberly Goody, Jeremy Kennelly, Joshua Shilko, Steve Elovitz, Douglas Bienstock. (2020, October 28). Unhappy Hour Special: KEGTAP and SINGLEMALT With a Ransomware Chaser. Retrieved October 28, 2020.', url='https://www.fireeye.com/blog/threat-research/2020/10/kegtap-and-singlemalt-with-a-ransomware-chaser.html'), ExternalReference(source_name='DHS/CISA Ransomware Targeting Healthcare October 2020', description='DHS/CISA. (2020, October 28). Ransomware Activity Targeting the Healthcare and Public Health Sector. Retrieved October 28, 2020.', url='https://us-cert.cisa.gov/ncas/alerts/aa20-302a'), ExternalReference(source_name=\"DFIR Ryuk's Return October 2020\", description='The DFIR Report. (2020, October 8). Ryuk’s Return. Retrieved October 9, 2020.', url='https://thedfirreport.com/2020/10/08/ryuks-return/'), ExternalReference(source_name='DFIR Ryuk 2 Hour Speed Run November 2020', description='The DFIR Report. (2020, November 5). Ryuk Speed Run, 2 Hours to Ransom. Retrieved November 6, 2020.', url='https://thedfirreport.com/2020/11/05/ryuk-speed-run-2-hours-to-ransom/'), ExternalReference(source_name='DFIR Ryuk in 5 Hours October 2020', description='The DFIR Report. (2020, October 18). Ryuk in 5 Hours. Retrieved October 19, 2020.', url='https://thedfirreport.com/2020/10/18/ryuk-in-5-hours/'), ExternalReference(source_name='Sophos New Ryuk Attack October 2020', description='Sean Gallagher, Peter Mackenzie, Elida Leite, Syed Shahram, Bill Kearney, Anand Aijan, Sivagnanam Gn, Suraj Mundalik. (2020, October 14). They’re back: inside a new Ryuk ransomware attack. Retrieved October 14, 2020.', url='https://news.sophos.com/en-us/2020/10/14/inside-a-new-ryuk-ransomware-attack/')], object_marking_refs=['marking-definition--fa42a846-8d90-4e51-bc29-71d5b4802168'])" ] }, "execution_count": 9, @@ -247,8 +250,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 900 ms, sys: 60 ms, total: 960 ms\n", - "Wall time: 2.76 s\n" + "CPU times: user 274 ms, sys: 35.5 ms, total: 310 ms\n", + "Wall time: 1.95 s\n" ] } ], @@ -264,7 +267,7 @@ { "data": { "text/plain": [ - "Relationship(type='relationship', id='relationship--4d1d7045-4492-492c-9522-2885d6bd96f6', created_by_ref='identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5', created='2019-09-24T13:01:20.471Z', modified='2019-09-24T13:01:20.472Z', relationship_type='uses', source_ref='intrusion-set--18854f55-ac7c-4634-bd9a-352dd07613b7', target_ref='malware--cfc75b0d-e579-40ae-ad07-a1ce00d49a6c', external_references=[ExternalReference(source_name='FireEye APT41 Aug 2019', description='Fraser, N., et al. (2019, August 7). Double DragonAPT41, a dual espionage and cyber crime operation APT41. Retrieved September 23, 2019.', url='https://content.fireeye.com/apt-41/rpt-apt41')], object_marking_refs=['marking-definition--fa42a846-8d90-4e51-bc29-71d5b4802168'])" + "Relationship(type='relationship', id='relationship--689b0bff-7eb4-4678-997b-64794c56add0', created_by_ref='identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5', created='2020-09-22T20:17:38.809Z', modified='2020-10-06T15:32:20.360Z', relationship_type='uses', description='[GOLD SOUTHFIELD](https://attack.mitre.org/groups/G0115) has distributed ransomware by backdooring software installers via a strategic web compromise of the site hosting Italian WinRAR.(Citation: Secureworks REvil September 2019)(Citation: Secureworks GandCrab and REvil September 2019)(Citation: Secureworks GOLD SOUTHFIELD)', source_ref='intrusion-set--c77c5576-ca19-42ed-a36f-4b4486a84133', target_ref='attack-pattern--bd369cd9-abb8-41ce-b5bb-fff23ee86c00', external_references=[ExternalReference(source_name='Secureworks REvil September 2019', description='Counter Threat Unit Research Team. (2019, September 24). REvil/Sodinokibi Ransomware. Retrieved August 4, 2020.', url='https://www.secureworks.com/research/revil-sodinokibi-ransomware'), ExternalReference(source_name='Secureworks GandCrab and REvil September 2019', description='Secureworks . (2019, September 24). REvil: The GandCrab Connection. Retrieved August 4, 2020.', url='https://www.secureworks.com/blog/revil-the-gandcrab-connection'), ExternalReference(source_name='Secureworks GOLD SOUTHFIELD', description='Secureworks. (n.d.). GOLD SOUTHFIELD. Retrieved October 6, 2020.', url='https://www.secureworks.com/research/threat-profiles/gold-southfield')], object_marking_refs=['marking-definition--fa42a846-8d90-4e51-bc29-71d5b4802168'])" ] }, "execution_count": 12, @@ -299,7 +302,7 @@ { "data": { "text/plain": [ - "AttackPattern(type='attack-pattern', id='attack-pattern--cd25c1b4-935c-4f0e-ba8d-552f28bc4783', created_by_ref='identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5', created='2019-04-17T14:50:05.682Z', modified='2019-10-10T18:40:46.985Z', name='Resource Hijacking', description='Adversaries may leverage the resources of co-opted systems in order to solve resource intensive problems which may impact system and/or hosted service availability. \\n\\nOne common purpose for Resource Hijacking is to validate transactions of cryptocurrency networks and earn virtual currency. Adversaries may consume enough system resources to negatively impact and/or cause affected machines to become unresponsive.(Citation: Kaspersky Lazarus Under The Hood Blog 2017) Servers and cloud-based(Citation: CloudSploit - Unused AWS Regions) systems are common targets because of the high potential for available resources, but user endpoint systems may also be compromised and used for Resource Hijacking and cryptocurrency mining.', kill_chain_phases=[KillChainPhase(kill_chain_name='mitre-attack', phase_name='impact')], external_references=[ExternalReference(source_name='mitre-attack', url='https://attack.mitre.org/techniques/T1496', external_id='T1496'), ExternalReference(source_name='Kaspersky Lazarus Under The Hood Blog 2017', description='GReAT. (2017, April 3). Lazarus Under the Hood. Retrieved April 17, 2019.', url='https://securelist.com/lazarus-under-the-hood/77908/'), ExternalReference(source_name='CloudSploit - Unused AWS Regions', description='CloudSploit. (2019, June 8). The Danger of Unused AWS Regions. Retrieved October 8, 2019.', url='https://blog.cloudsploit.com/the-danger-of-unused-aws-regions-af0bf1b878fc')], object_marking_refs=['marking-definition--fa42a846-8d90-4e51-bc29-71d5b4802168'], x_mitre_data_sources=['Azure activity logs', 'Stackdriver logs', 'AWS CloudTrail logs', 'Process use of network', 'Process monitoring', 'Network protocol analysis', 'Network device logs'], x_mitre_detection='Consider monitoring process resource usage to determine anomalous activity associated with malicious hijacking of computer resources such as CPU, memory, and graphics processing resources. Monitor for suspicious use of network resources associated with cryptocurrency mining software. Monitor for common cryptomining software process names and files on local systems that may indicate compromise and resource usage.', x_mitre_impact_type=['Availability'], x_mitre_permissions_required=['User', 'Administrator'], x_mitre_platforms=['Linux', 'macOS', 'Windows', 'AWS', 'GCP', 'Azure'], x_mitre_version='1.1')" + "AttackPattern(type='attack-pattern', id='attack-pattern--bd369cd9-abb8-41ce-b5bb-fff23ee86c00', created_by_ref='identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5', created='2020-03-11T14:17:21.153Z', modified='2020-03-11T14:17:21.153Z', name='Compromise Software Supply Chain', description='Adversaries may manipulate application software prior to receipt by a final consumer for the purpose of data or system compromise. Supply chain compromise of software can take place in a number of ways, including manipulation of the application source code, manipulation of the update/distribution mechanism for that software, or replacing compiled releases with a modified version.\\n\\nTargeting may be specific to a desired victim set or may be distributed to a broad set of consumers but only move on to additional tactics on specific victims.(Citation: Avast CCleaner3 2018) (Citation: Command Five SK 2011) ', kill_chain_phases=[KillChainPhase(kill_chain_name='mitre-attack', phase_name='initial-access')], external_references=[ExternalReference(source_name='mitre-attack', url='https://attack.mitre.org/techniques/T1195/002', external_id='T1195.002'), ExternalReference(source_name='Avast CCleaner3 2018', description='Avast Threat Intelligence Team. (2018, March 8). New investigations into the CCleaner incident point to a possible third stage that had keylogger capacities. Retrieved March 15, 2018.', url='https://blog.avast.com/new-investigations-in-ccleaner-incident-point-to-a-possible-third-stage-that-had-keylogger-capacities'), ExternalReference(source_name='Command Five SK 2011', description='Command Five Pty Ltd. (2011, September). SK Hack by an Advanced Persistent Threat. Retrieved April 6, 2018.', url='https://www.commandfive.com/papers/C5_APT_SKHack.pdf')], object_marking_refs=['marking-definition--fa42a846-8d90-4e51-bc29-71d5b4802168'], x_mitre_data_sources=['File monitoring', 'Web proxy'], x_mitre_detection='Use verification of distributed binaries through hash checking or other integrity checking mechanisms. Scan downloads for malicious signatures and attempt to test software and updates prior to deployment while taking note of potential suspicious activity. ', x_mitre_is_subtechnique=True, x_mitre_platforms=['Linux', 'macOS', 'Windows'], x_mitre_version='1.0')" ] }, "execution_count": 13, @@ -332,7 +335,7 @@ { "data": { "text/plain": [ - "AttackPattern(type='attack-pattern', id='attack-pattern--cd25c1b4-935c-4f0e-ba8d-552f28bc4783', created_by_ref='identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5', created='2019-04-17T14:50:05.682Z', modified='2019-10-10T18:40:46.985Z', name='Resource Hijacking', description='Adversaries may leverage the resources of co-opted systems in order to solve resource intensive problems which may impact system and/or hosted service availability. \\n\\nOne common purpose for Resource Hijacking is to validate transactions of cryptocurrency networks and earn virtual currency. Adversaries may consume enough system resources to negatively impact and/or cause affected machines to become unresponsive.(Citation: Kaspersky Lazarus Under The Hood Blog 2017) Servers and cloud-based(Citation: CloudSploit - Unused AWS Regions) systems are common targets because of the high potential for available resources, but user endpoint systems may also be compromised and used for Resource Hijacking and cryptocurrency mining.', kill_chain_phases=[KillChainPhase(kill_chain_name='mitre-attack', phase_name='impact')], external_references=[ExternalReference(source_name='mitre-attack', url='https://attack.mitre.org/techniques/T1496', external_id='T1496'), ExternalReference(source_name='Kaspersky Lazarus Under The Hood Blog 2017', description='GReAT. (2017, April 3). Lazarus Under the Hood. Retrieved April 17, 2019.', url='https://securelist.com/lazarus-under-the-hood/77908/'), ExternalReference(source_name='CloudSploit - Unused AWS Regions', description='CloudSploit. (2019, June 8). The Danger of Unused AWS Regions. Retrieved October 8, 2019.', url='https://blog.cloudsploit.com/the-danger-of-unused-aws-regions-af0bf1b878fc')], object_marking_refs=['marking-definition--fa42a846-8d90-4e51-bc29-71d5b4802168'], x_mitre_data_sources=['Azure activity logs', 'Stackdriver logs', 'AWS CloudTrail logs', 'Process use of network', 'Process monitoring', 'Network protocol analysis', 'Network device logs'], x_mitre_detection='Consider monitoring process resource usage to determine anomalous activity associated with malicious hijacking of computer resources such as CPU, memory, and graphics processing resources. Monitor for suspicious use of network resources associated with cryptocurrency mining software. Monitor for common cryptomining software process names and files on local systems that may indicate compromise and resource usage.', x_mitre_impact_type=['Availability'], x_mitre_permissions_required=['User', 'Administrator'], x_mitre_platforms=['Linux', 'macOS', 'Windows', 'AWS', 'GCP', 'Azure'], x_mitre_version='1.1')" + "AttackPattern(type='attack-pattern', id='attack-pattern--bd369cd9-abb8-41ce-b5bb-fff23ee86c00', created_by_ref='identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5', created='2020-03-11T14:17:21.153Z', modified='2020-03-11T14:17:21.153Z', name='Compromise Software Supply Chain', description='Adversaries may manipulate application software prior to receipt by a final consumer for the purpose of data or system compromise. Supply chain compromise of software can take place in a number of ways, including manipulation of the application source code, manipulation of the update/distribution mechanism for that software, or replacing compiled releases with a modified version.\\n\\nTargeting may be specific to a desired victim set or may be distributed to a broad set of consumers but only move on to additional tactics on specific victims.(Citation: Avast CCleaner3 2018) (Citation: Command Five SK 2011) ', kill_chain_phases=[KillChainPhase(kill_chain_name='mitre-attack', phase_name='initial-access')], external_references=[ExternalReference(source_name='mitre-attack', url='https://attack.mitre.org/techniques/T1195/002', external_id='T1195.002'), ExternalReference(source_name='Avast CCleaner3 2018', description='Avast Threat Intelligence Team. (2018, March 8). New investigations into the CCleaner incident point to a possible third stage that had keylogger capacities. Retrieved March 15, 2018.', url='https://blog.avast.com/new-investigations-in-ccleaner-incident-point-to-a-possible-third-stage-that-had-keylogger-capacities'), ExternalReference(source_name='Command Five SK 2011', description='Command Five Pty Ltd. (2011, September). SK Hack by an Advanced Persistent Threat. Retrieved April 6, 2018.', url='https://www.commandfive.com/papers/C5_APT_SKHack.pdf')], object_marking_refs=['marking-definition--fa42a846-8d90-4e51-bc29-71d5b4802168'], x_mitre_data_sources=['File monitoring', 'Web proxy'], x_mitre_detection='Use verification of distributed binaries through hash checking or other integrity checking mechanisms. Scan downloads for malicious signatures and attempt to test software and updates prior to deployment while taking note of potential suspicious activity. ', x_mitre_is_subtechnique=True, x_mitre_platforms=['Linux', 'macOS', 'Windows'], x_mitre_version='1.0')" ] }, "execution_count": 14, @@ -374,7 +377,8 @@ "from attackcti import attack_client\n", "lift = attack_client()\n", "groups = lift.get_groups()\n", - "techniques = lift.get_techniques()" + "techniques = lift.get_techniques()\n", + "techniques = lift.remove_revoked(techniques)" ] }, { @@ -395,29 +399,19 @@ "text": [ "{\n", " \"type\": \"relationship\",\n", - " \"id\": \"relationship--0f880e99-efaa-4e85-91c3-cac3d81d6b9a\",\n", + " \"id\": \"relationship--82dee5a5-7890-4bed-bc8c-83ffa13a8bcf\",\n", " \"created_by_ref\": \"identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\",\n", - " \"created\": \"2019-10-15T22:28:40.394Z\",\n", - " \"modified\": \"2019-10-15T22:28:40.394Z\",\n", + " \"created\": \"2020-11-10T17:28:19.540Z\",\n", + " \"modified\": \"2020-11-10T17:28:19.540Z\",\n", " \"relationship_type\": \"uses\",\n", - " \"description\": \"[Machete](https://attack.mitre.org/groups/G0095) has has relied on users opening malicious links or attachments delivered through spearphishing to execute malware.\",\n", - " \"source_ref\": \"intrusion-set--38863958-a201-4ce1-9dbe-539b0b6804e0\",\n", - " \"target_ref\": \"attack-pattern--8c32eb4d-805f-4fc5-bf60-c4d476c131b5\",\n", + " \"description\": \"[Wizard Spider](https://attack.mitre.org/groups/G0102) has identified domain admins through the use of \\u201cnet group \\u2018Domain admins\\u2019\\u201d commands.(Citation: DFIR Ryuk's Return October 2020)\",\n", + " \"source_ref\": \"intrusion-set--dd2d9ca6-505b-4860-a604-233685b802c7\",\n", + " \"target_ref\": \"attack-pattern--21875073-b0ee-49e3-9077-1e2a885359af\",\n", " \"external_references\": [\n", " {\n", - " \"source_name\": \"Cylance Machete Mar 2017\",\n", - " \"description\": \"The Cylance Threat Research Team. (2017, March 22). El Machete's Malware Attacks Cut Through LATAM. Retrieved September 13, 2019.\",\n", - " \"url\": \"https://threatvector.cylance.com/en_us/home/el-machete-malware-attacks-cut-through-latam.html\"\n", - " },\n", - " {\n", - " \"source_name\": \"Securelist Machete Aug 2014\",\n", - " \"description\": \"Kaspersky Global Research and Analysis Team. (2014, August 20). El Machete. Retrieved September 13, 2019.\",\n", - " \"url\": \"https://securelist.com/el-machete/66108/\"\n", - " },\n", - " {\n", - " \"source_name\": \"ESET Machete July 2019\",\n", - " \"description\": \"ESET. (2019, July). MACHETE JUST GOT SHARPER Venezuelan government institutions under attack. Retrieved September 13, 2019.\",\n", - " \"url\": \"https://www.welivesecurity.com/wp-content/uploads/2019/08/ESET_Machete.pdf\"\n", + " \"source_name\": \"DFIR Ryuk's Return October 2020\",\n", + " \"description\": \"The DFIR Report. (2020, October 8). Ryuk\\u2019s Return. Retrieved October 9, 2020.\",\n", + " \"url\": \"https://thedfirreport.com/2020/10/08/ryuks-return/\"\n", " }\n", " ],\n", " \"object_marking_refs\": [\n", @@ -481,37 +475,38 @@ { "data": { "text/plain": [ - "{'aliases': ['APT41'],\n", - " 'type': 'intrusion-set',\n", - " 'name': 'APT41',\n", - " 'description': '[APT41](https://attack.mitre.org/groups/G0096) is a group that carries out Chinese state-sponsored espionage activity in addition to financially motivated activity. [APT41](https://attack.mitre.org/groups/G0096) has been active since as early as 2012. The group has been observed targeting healthcare, telecom, technology, and video game industries in 14 countries.(Citation: FireEye APT41 Aug 2019)',\n", - " 'external_references': [{'external_id': 'G0096',\n", - " 'source_name': 'mitre-attack',\n", - " 'url': 'https://attack.mitre.org/groups/G0096'},\n", - " {'description': '(Citation: FireEye APT41 2019)', 'source_name': 'APT41'},\n", - " {'description': 'Fraser, N., et al. (2019, August 7). Double DragonAPT41, a dual espionage and cyber crime operation APT41. Retrieved September 23, 2019.',\n", - " 'source_name': 'FireEye APT41 Aug 2019',\n", - " 'url': 'https://content.fireeye.com/apt-41/rpt-apt41'}],\n", - " 'created_by_ref': 'identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5',\n", - " 'created': '2019-09-23T13:43:36.945Z',\n", - " 'id': 'intrusion-set--18854f55-ac7c-4634-bd9a-352dd07613b7',\n", - " 'modified': '2019-10-14T21:52:59.301Z',\n", + "{'created_by_ref': 'identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5',\n", " 'object_marking_refs': ['marking-definition--fa42a846-8d90-4e51-bc29-71d5b4802168'],\n", + " 'external_references': [{'external_id': 'G0115',\n", + " 'source_name': 'mitre-attack',\n", + " 'url': 'https://attack.mitre.org/groups/G0115'},\n", + " {'source_name': 'Secureworks REvil September 2019',\n", + " 'url': 'https://www.secureworks.com/research/revil-sodinokibi-ransomware',\n", + " 'description': 'Counter Threat Unit Research Team. (2019, September 24). REvil/Sodinokibi Ransomware. Retrieved August 4, 2020.'},\n", + " {'source_name': 'Secureworks GandCrab and REvil September 2019',\n", + " 'url': 'https://www.secureworks.com/blog/revil-the-gandcrab-connection',\n", + " 'description': 'Secureworks . (2019, September 24). REvil: The GandCrab Connection. Retrieved August 4, 2020.'},\n", + " {'source_name': 'Secureworks GOLD SOUTHFIELD',\n", + " 'url': 'https://www.secureworks.com/research/threat-profiles/gold-southfield',\n", + " 'description': 'Secureworks. (n.d.). GOLD SOUTHFIELD. Retrieved October 6, 2020.'}],\n", + " 'name': 'GOLD SOUTHFIELD',\n", + " 'description': '[GOLD SOUTHFIELD](https://attack.mitre.org/groups/G0115) is a financially motivated threat group active since at least 2019 that operates the [REvil](https://attack.mitre.org/software/S0496) Ransomware-as-a Service (RaaS). [GOLD SOUTHFIELD](https://attack.mitre.org/groups/G0115) provides backend infrastructure for affiliates recruited on underground forums to perpetrate high value deployments.(Citation: Secureworks REvil September 2019)(Citation: Secureworks GandCrab and REvil September 2019)(Citation: Secureworks GOLD SOUTHFIELD)',\n", + " 'type': 'intrusion-set',\n", + " 'id': 'intrusion-set--c77c5576-ca19-42ed-a36f-4b4486a84133',\n", + " 'aliases': ['GOLD SOUTHFIELD'],\n", + " 'modified': '2020-10-06T15:32:20.089Z',\n", + " 'created': '2020-09-22T19:41:27.845Z',\n", " 'x_mitre_version': '1.0',\n", - " 'technique_ref': 'attack-pattern--3489cfc5-640f-4bb3-a103-9137b97de79f',\n", - " 'relationship_description': ' [APT41](https://attack.mitre.org/groups/G0096) used the net share command as part of network reconnaissance.',\n", - " 'relationship_id': 'relationship--4f6e677d-427b-4342-b35c-57f4f3ad4ff8',\n", - " 'technique': 'Network Share Discovery',\n", - " 'technique_description': 'Networks often contain shared network drives and folders that enable users to access file directories on various systems across a network. \\n\\n### Windows\\n\\nFile sharing over a Windows network occurs over the SMB protocol. (Citation: Wikipedia Shared Resource) (Citation: TechNet Shared Folder)\\n\\n[Net](https://attack.mitre.org/software/S0039) can be used to query a remote system for available shared drives using the net view \\\\\\\\remotesystem command. It can also be used to query shared drives on the local system using net share.\\n\\nAdversaries may look for folders and drives shared on remote systems as a means of identifying sources of information to gather as a precursor for Collection and to identify potential systems of interest for Lateral Movement.\\n\\n### Mac\\n\\nOn Mac, locally mounted shares can be viewed with the df -aH command.\\n\\n### Cloud\\n\\nCloud virtual networks may contain remote network shares or file storage services accessible to an adversary after they have obtained access to a system. For example, AWS, GCP, and Azure support creation of Network File System (NFS) shares and Server Message Block (SMB) shares that may be mapped on endpoint or cloud-based systems.(Citation: Amazon Creating an NFS File Share)(Citation: Google File servers on Compute Engine)',\n", - " 'tactic': ['discovery'],\n", - " 'technique_id': 'T1135',\n", + " 'technique_ref': 'attack-pattern--bd369cd9-abb8-41ce-b5bb-fff23ee86c00',\n", + " 'relationship_description': '[GOLD SOUTHFIELD](https://attack.mitre.org/groups/G0115) has distributed ransomware by backdooring software installers via a strategic web compromise of the site hosting Italian WinRAR.(Citation: Secureworks REvil September 2019)(Citation: Secureworks GandCrab and REvil September 2019)(Citation: Secureworks GOLD SOUTHFIELD)',\n", + " 'relationship_id': 'relationship--689b0bff-7eb4-4678-997b-64794c56add0',\n", + " 'technique': 'Compromise Software Supply Chain',\n", + " 'technique_description': 'Adversaries may manipulate application software prior to receipt by a final consumer for the purpose of data or system compromise. Supply chain compromise of software can take place in a number of ways, including manipulation of the application source code, manipulation of the update/distribution mechanism for that software, or replacing compiled releases with a modified version.\\n\\nTargeting may be specific to a desired victim set or may be distributed to a broad set of consumers but only move on to additional tactics on specific victims.(Citation: Avast CCleaner3 2018) (Citation: Command Five SK 2011) ',\n", + " 'tactic': ['initial-access'],\n", + " 'technique_id': 'T1195.002',\n", " 'matrix': 'mitre-attack',\n", - " 'platform': ['macOS', 'Windows', 'AWS', 'GCP', 'Azure'],\n", - " 'data_sources': ['Process monitoring',\n", - " 'Process command-line parameters',\n", - " 'Network protocol analysis',\n", - " 'Process use of network'],\n", - " 'permissions_required': ['User']}" + " 'platform': ['Linux', 'macOS', 'Windows'],\n", + " 'data_sources': ['File monitoring', 'Web proxy']}" ] }, "execution_count": 18, @@ -561,8 +556,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 7.4 s, sys: 570 ms, total: 7.97 s\n", - "Wall time: 11.4 s\n" + "CPU times: user 5.41 s, sys: 125 ms, total: 5.54 s\n", + "Wall time: 8.17 s\n" ] } ], @@ -580,7 +575,7 @@ { "data": { "text/plain": [ - "1346" + "1937" ] }, "execution_count": 20, @@ -600,37 +595,39 @@ { "data": { "text/plain": [ - "{'aliases': ['APT41'],\n", - " 'type': 'intrusion-set',\n", - " 'name': 'APT41',\n", - " 'description': '[APT41](https://attack.mitre.org/groups/G0096) is a group that carries out Chinese state-sponsored espionage activity in addition to financially motivated activity. [APT41](https://attack.mitre.org/groups/G0096) has been active since as early as 2012. The group has been observed targeting healthcare, telecom, technology, and video game industries in 14 countries.(Citation: FireEye APT41 Aug 2019)',\n", - " 'external_references': [{'external_id': 'G0096',\n", - " 'source_name': 'mitre-attack',\n", - " 'url': 'https://attack.mitre.org/groups/G0096'},\n", - " {'description': '(Citation: FireEye APT41 2019)', 'source_name': 'APT41'},\n", - " {'description': 'Fraser, N., et al. (2019, August 7). Double DragonAPT41, a dual espionage and cyber crime operation APT41. Retrieved September 23, 2019.',\n", - " 'source_name': 'FireEye APT41 Aug 2019',\n", - " 'url': 'https://content.fireeye.com/apt-41/rpt-apt41'}],\n", - " 'created_by_ref': 'identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5',\n", - " 'created': '2019-09-23T13:43:36.945Z',\n", - " 'id': 'intrusion-set--18854f55-ac7c-4634-bd9a-352dd07613b7',\n", - " 'modified': '2019-10-14T21:52:59.301Z',\n", + "{'created_by_ref': 'identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5',\n", " 'object_marking_refs': ['marking-definition--fa42a846-8d90-4e51-bc29-71d5b4802168'],\n", + " 'external_references': [{'external_id': 'G0115',\n", + " 'source_name': 'mitre-attack',\n", + " 'url': 'https://attack.mitre.org/groups/G0115'},\n", + " {'source_name': 'Secureworks REvil September 2019',\n", + " 'url': 'https://www.secureworks.com/research/revil-sodinokibi-ransomware',\n", + " 'description': 'Counter Threat Unit Research Team. (2019, September 24). REvil/Sodinokibi Ransomware. Retrieved August 4, 2020.'},\n", + " {'source_name': 'Secureworks GandCrab and REvil September 2019',\n", + " 'url': 'https://www.secureworks.com/blog/revil-the-gandcrab-connection',\n", + " 'description': 'Secureworks . (2019, September 24). REvil: The GandCrab Connection. Retrieved August 4, 2020.'},\n", + " {'source_name': 'Secureworks GOLD SOUTHFIELD',\n", + " 'url': 'https://www.secureworks.com/research/threat-profiles/gold-southfield',\n", + " 'description': 'Secureworks. (n.d.). GOLD SOUTHFIELD. Retrieved October 6, 2020.'}],\n", + " 'name': 'GOLD SOUTHFIELD',\n", + " 'description': '[GOLD SOUTHFIELD](https://attack.mitre.org/groups/G0115) is a financially motivated threat group active since at least 2019 that operates the [REvil](https://attack.mitre.org/software/S0496) Ransomware-as-a Service (RaaS). [GOLD SOUTHFIELD](https://attack.mitre.org/groups/G0115) provides backend infrastructure for affiliates recruited on underground forums to perpetrate high value deployments.(Citation: Secureworks REvil September 2019)(Citation: Secureworks GandCrab and REvil September 2019)(Citation: Secureworks GOLD SOUTHFIELD)',\n", + " 'type': 'intrusion-set',\n", + " 'id': 'intrusion-set--c77c5576-ca19-42ed-a36f-4b4486a84133',\n", + " 'aliases': ['GOLD SOUTHFIELD'],\n", + " 'modified': '2020-10-06T15:32:20.089Z',\n", + " 'created': '2020-09-22T19:41:27.845Z',\n", " 'x_mitre_version': '1.0',\n", - " 'technique_ref': 'attack-pattern--3489cfc5-640f-4bb3-a103-9137b97de79f',\n", - " 'relationship_description': ' [APT41](https://attack.mitre.org/groups/G0096) used the net share command as part of network reconnaissance.',\n", - " 'relationship_id': 'relationship--4f6e677d-427b-4342-b35c-57f4f3ad4ff8',\n", - " 'technique': 'Network Share Discovery',\n", - " 'technique_description': 'Networks often contain shared network drives and folders that enable users to access file directories on various systems across a network. \\n\\n### Windows\\n\\nFile sharing over a Windows network occurs over the SMB protocol. (Citation: Wikipedia Shared Resource) (Citation: TechNet Shared Folder)\\n\\n[Net](https://attack.mitre.org/software/S0039) can be used to query a remote system for available shared drives using the net view \\\\\\\\remotesystem command. It can also be used to query shared drives on the local system using net share.\\n\\nAdversaries may look for folders and drives shared on remote systems as a means of identifying sources of information to gather as a precursor for Collection and to identify potential systems of interest for Lateral Movement.\\n\\n### Mac\\n\\nOn Mac, locally mounted shares can be viewed with the df -aH command.\\n\\n### Cloud\\n\\nCloud virtual networks may contain remote network shares or file storage services accessible to an adversary after they have obtained access to a system. For example, AWS, GCP, and Azure support creation of Network File System (NFS) shares and Server Message Block (SMB) shares that may be mapped on endpoint or cloud-based systems.(Citation: Amazon Creating an NFS File Share)(Citation: Google File servers on Compute Engine)',\n", - " 'tactic': ['discovery'],\n", - " 'technique_id': 'T1135',\n", + " 'technique_ref': 'attack-pattern--bd369cd9-abb8-41ce-b5bb-fff23ee86c00',\n", + " 'relationship_description': '[GOLD SOUTHFIELD](https://attack.mitre.org/groups/G0115) has distributed ransomware by backdooring software installers via a strategic web compromise of the site hosting Italian WinRAR.(Citation: Secureworks REvil September 2019)(Citation: Secureworks GandCrab and REvil September 2019)(Citation: Secureworks GOLD SOUTHFIELD)',\n", + " 'relationship_id': 'relationship--689b0bff-7eb4-4678-997b-64794c56add0',\n", + " 'revoked': False,\n", + " 'technique': 'Compromise Software Supply Chain',\n", + " 'technique_description': 'Adversaries may manipulate application software prior to receipt by a final consumer for the purpose of data or system compromise. Supply chain compromise of software can take place in a number of ways, including manipulation of the application source code, manipulation of the update/distribution mechanism for that software, or replacing compiled releases with a modified version.\\n\\nTargeting may be specific to a desired victim set or may be distributed to a broad set of consumers but only move on to additional tactics on specific victims.(Citation: Avast CCleaner3 2018) (Citation: Command Five SK 2011) ',\n", + " 'tactic': [KillChainPhase(kill_chain_name='mitre-attack', phase_name='initial-access')],\n", + " 'technique_id': 'T1195.002',\n", " 'matrix': 'mitre-attack',\n", - " 'platform': ['macOS', 'Windows', 'AWS', 'GCP', 'Azure'],\n", - " 'data_sources': ['Process monitoring',\n", - " 'Process command-line parameters',\n", - " 'Network protocol analysis',\n", - " 'Process use of network'],\n", - " 'permissions_required': ['User']}" + " 'platform': ['Linux', 'macOS', 'Windows'],\n", + " 'data_sources': ['File monitoring', 'Web proxy']}" ] }, "execution_count": 21, @@ -660,9 +657,20 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 22, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "{'Naikon': []}" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "groups = lift.get_groups()\n", "groups = lift.remove_revoked(groups)\n", @@ -684,9 +692,51 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 23, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "{'Naikon': [{'techniqueId': 'T1566.001',\n", + " 'techniqueName': 'Spearphishing Attachment',\n", + " 'comment': '[Naikon](https://attack.mitre.org/groups/G0019) has used malicious e-mail attachments to deliver malware.(Citation: CheckPoint Naikon May 2020)',\n", + " 'tactic': [KillChainPhase(kill_chain_name='mitre-attack', phase_name='initial-access')],\n", + " 'group_id': 'G0019'},\n", + " {'techniqueId': 'T1204.002',\n", + " 'techniqueName': 'Malicious File',\n", + " 'comment': '[Naikon](https://attack.mitre.org/groups/G0019) has convinced victims to open malicious attachments to execute malware.(Citation: CheckPoint Naikon May 2020)',\n", + " 'tactic': [KillChainPhase(kill_chain_name='mitre-attack', phase_name='execution')],\n", + " 'group_id': 'G0019'},\n", + " {'techniqueId': 'T1137.006',\n", + " 'techniqueName': 'Add-ins',\n", + " 'comment': '[Naikon](https://attack.mitre.org/groups/G0019) has used the RoyalRoad exploit builder to drop a second stage loader, intel.wll, into the Word Startup folder on the compromised host.(Citation: CheckPoint Naikon May 2020)',\n", + " 'tactic': [KillChainPhase(kill_chain_name='mitre-attack', phase_name='persistence')],\n", + " 'group_id': 'G0019'},\n", + " {'techniqueId': 'T1574.002',\n", + " 'techniqueName': 'DLL Side-Loading',\n", + " 'comment': \"[Naikon](https://attack.mitre.org/groups/G0019) has used DLL side-loading to load malicious DLL's into legitimate executables.(Citation: CheckPoint Naikon May 2020)\",\n", + " 'tactic': [KillChainPhase(kill_chain_name='mitre-attack', phase_name='persistence'),\n", + " KillChainPhase(kill_chain_name='mitre-attack', phase_name='privilege-escalation'),\n", + " KillChainPhase(kill_chain_name='mitre-attack', phase_name='defense-evasion')],\n", + " 'group_id': 'G0019'},\n", + " {'techniqueId': 'T1518.001',\n", + " 'techniqueName': 'Security Software Discovery',\n", + " 'comment': '[Naikon](https://attack.mitre.org/groups/G0019) uses commands such as netsh advfirewall firewall to discover local firewall settings.(Citation: Baumgartner Naikon 2015)',\n", + " 'tactic': [KillChainPhase(kill_chain_name='mitre-attack', phase_name='discovery')],\n", + " 'group_id': 'G0019'},\n", + " {'techniqueId': 'T1016',\n", + " 'techniqueName': 'System Network Configuration Discovery',\n", + " 'comment': '[Naikon](https://attack.mitre.org/groups/G0019) uses commands such as netsh interface show to discover network interface settings.(Citation: Baumgartner Naikon 2015)',\n", + " 'tactic': [KillChainPhase(kill_chain_name='mitre-attack', phase_name='discovery')],\n", + " 'group_id': 'G0019'}]}" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "for group in groups_list:\n", " for group_name,techniques_list in group.items():\n", @@ -711,7 +761,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 24, "metadata": {}, "outputs": [], "source": [ @@ -753,9 +803,70 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 25, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ALLANITE_G1000.json Inception_G0100.json\r\n", + "APT-C-36_G0099.json Ke3chang_G0004.json\r\n", + "APT12_G0005.json Kimsuky_G0094.json\r\n", + "APT16_G0023.json Lazarus Group_G0032.json\r\n", + "APT17_G0025.json Leafminer_G0077.json\r\n", + "APT18_G0026.json Leviathan_G0065.json\r\n", + "APT19_G0073.json Machete_G0095.json\r\n", + "APT1_G0006.json Magic Hound_G0059.json\r\n", + "APT28_G0007.json Moafee_G0002.json\r\n", + "APT29_G0016.json Mofang_G0103.json\r\n", + "APT30_G0013.json Molerats_G0021.json\r\n", + "APT32_G0050.json MuddyWater_G0069.json\r\n", + "APT33_G0064.json Naikon_G0019.json\r\n", + "APT37_G0067.json Night Dragon_G0014.json\r\n", + "APT38_G0082.json OilRig_G0049.json\r\n", + "APT39_G0087.json Orangeworm_G0071.json\r\n", + "APT3_G0022.json PLATINUM_G0068.json\r\n", + "APT41_G0096.json PROMETHIUM_G0056.json\r\n", + "Axiom_G0001.json Patchwork_G0040.json\r\n", + "BRONZE BUTLER_G0060.json PittyTiger_G0011.json\r\n", + "BlackOasis_G0063.json Poseidon Group_G0033.json\r\n", + "BlackTech_G0098.json Putter Panda_G0024.json\r\n", + "Blue Mockingbird_G0108.json RTM_G0048.json\r\n", + "Bouncing Golf_G0097.json Rancor_G0075.json\r\n", + "Carbanak_G0008.json Rocke_G0106.json\r\n", + "Chimera_G0114.json Sandworm Team_G0034.json\r\n", + "Cleaver_G0003.json Scarlet Mimic_G0029.json\r\n", + "Cobalt Group_G0080.json Sharpshooter_G0104.json\r\n", + "CopyKittens_G0052.json Silence_G0091.json\r\n", + "Dark Caracal_G0070.json SilverTerrier_G0083.json\r\n", + "DarkHydrus_G0079.json Soft Cell_G0093.json\r\n", + "DarkVishnya_G0105.json Sowbug_G0054.json\r\n", + "Darkhotel_G0012.json Stealth Falcon_G0038.json\r\n", + "Deep Panda_G0009.json Stolen Pencil_G0086.json\r\n", + "Dragonfly 2.0_G0074.json Strider_G0041.json\r\n", + "Dragonfly_G0035.json Suckfly_G0039.json\r\n", + "Dust Storm_G0031.json TA459_G0062.json\r\n", + "Elderwood_G0066.json TA505_G0092.json\r\n", + "Equation_G0020.json TEMP.Veles_G0088.json\r\n", + "FIN10_G0051.json Taidoor_G0015.json\r\n", + "FIN4_G0085.json The White Company_G0089.json\r\n", + "FIN5_G0053.json Threat Group-1314_G0028.json\r\n", + "FIN6_G0037.json Threat Group-3390_G0027.json\r\n", + "FIN7_G0046.json Thrip_G0076.json\r\n", + "FIN8_G0061.json Tropic Trooper_G0081.json\r\n", + "Frankenstein_G0101.json Turla_G0010.json\r\n", + "GCMAN_G0036.json WIRTE_G0090.json\r\n", + "GOLD SOUTHFIELD_G0115.json Whitefly_G0107.json\r\n", + "Gallmaker_G0084.json Windshift_G0112.json\r\n", + "Gamaredon Group_G0047.json Winnti Group_G0044.json\r\n", + "Gorgon Group_G0078.json Wizard Spider_G0102.json\r\n", + "Group5_G0043.json admin@338_G0018.json\r\n", + "HEXANE_G1001.json menuPass_G0045.json\r\n", + "Honeybee_G0072.json\r\n" + ] + } + ], "source": [ "! ls *.json" ] @@ -769,7 +880,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 26, "metadata": {}, "outputs": [], "source": [ @@ -786,9 +897,18 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 27, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: user 6.02 s, sys: 181 ms, total: 6.2 s\n", + "Wall time: 9.24 s\n" + ] + } + ], "source": [ "from attackcti import attack_client\n", "lift = attack_client()\n", @@ -798,9 +918,70 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 28, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ALLANITE_G1000.json Inception_G0100.json\r\n", + "APT-C-36_G0099.json Ke3chang_G0004.json\r\n", + "APT12_G0005.json Kimsuky_G0094.json\r\n", + "APT16_G0023.json Lazarus Group_G0032.json\r\n", + "APT17_G0025.json Leafminer_G0077.json\r\n", + "APT18_G0026.json Leviathan_G0065.json\r\n", + "APT19_G0073.json Machete_G0095.json\r\n", + "APT1_G0006.json Magic Hound_G0059.json\r\n", + "APT28_G0007.json Moafee_G0002.json\r\n", + "APT29_G0016.json Mofang_G0103.json\r\n", + "APT30_G0013.json Molerats_G0021.json\r\n", + "APT32_G0050.json MuddyWater_G0069.json\r\n", + "APT33_G0064.json Naikon_G0019.json\r\n", + "APT37_G0067.json Night Dragon_G0014.json\r\n", + "APT38_G0082.json OilRig_G0049.json\r\n", + "APT39_G0087.json Orangeworm_G0071.json\r\n", + "APT3_G0022.json PLATINUM_G0068.json\r\n", + "APT41_G0096.json PROMETHIUM_G0056.json\r\n", + "Axiom_G0001.json Patchwork_G0040.json\r\n", + "BRONZE BUTLER_G0060.json PittyTiger_G0011.json\r\n", + "BlackOasis_G0063.json Poseidon Group_G0033.json\r\n", + "BlackTech_G0098.json Putter Panda_G0024.json\r\n", + "Blue Mockingbird_G0108.json RTM_G0048.json\r\n", + "Bouncing Golf_G0097.json Rancor_G0075.json\r\n", + "Carbanak_G0008.json Rocke_G0106.json\r\n", + "Chimera_G0114.json Sandworm Team_G0034.json\r\n", + "Cleaver_G0003.json Scarlet Mimic_G0029.json\r\n", + "Cobalt Group_G0080.json Sharpshooter_G0104.json\r\n", + "CopyKittens_G0052.json Silence_G0091.json\r\n", + "Dark Caracal_G0070.json SilverTerrier_G0083.json\r\n", + "DarkHydrus_G0079.json Soft Cell_G0093.json\r\n", + "DarkVishnya_G0105.json Sowbug_G0054.json\r\n", + "Darkhotel_G0012.json Stealth Falcon_G0038.json\r\n", + "Deep Panda_G0009.json Stolen Pencil_G0086.json\r\n", + "Dragonfly 2.0_G0074.json Strider_G0041.json\r\n", + "Dragonfly_G0035.json Suckfly_G0039.json\r\n", + "Dust Storm_G0031.json TA459_G0062.json\r\n", + "Elderwood_G0066.json TA505_G0092.json\r\n", + "Equation_G0020.json TEMP.Veles_G0088.json\r\n", + "FIN10_G0051.json Taidoor_G0015.json\r\n", + "FIN4_G0085.json The White Company_G0089.json\r\n", + "FIN5_G0053.json Threat Group-1314_G0028.json\r\n", + "FIN6_G0037.json Threat Group-3390_G0027.json\r\n", + "FIN7_G0046.json Thrip_G0076.json\r\n", + "FIN8_G0061.json Tropic Trooper_G0081.json\r\n", + "Frankenstein_G0101.json Turla_G0010.json\r\n", + "GCMAN_G0036.json WIRTE_G0090.json\r\n", + "GOLD SOUTHFIELD_G0115.json Whitefly_G0107.json\r\n", + "Gallmaker_G0084.json Windshift_G0112.json\r\n", + "Gamaredon Group_G0047.json Winnti Group_G0044.json\r\n", + "Gorgon Group_G0078.json Wizard Spider_G0102.json\r\n", + "Group5_G0043.json admin@338_G0018.json\r\n", + "HEXANE_G1001.json menuPass_G0045.json\r\n", + "Honeybee_G0072.json\r\n" + ] + } + ], "source": [ "! ls *.json" ] @@ -814,7 +995,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 29, "metadata": {}, "outputs": [], "source": [ @@ -845,7 +1026,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.3" + "version": "3.8.5" } }, "nbformat": 4, diff --git a/notebooks/techniques_by_datasources.ipynb b/notebooks/techniques_by_datasources.ipynb index 9084200..db724d7 100644 --- a/notebooks/techniques_by_datasources.ipynb +++ b/notebooks/techniques_by_datasources.ipynb @@ -16,7 +16,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 1, "metadata": {}, "outputs": [], "source": [ @@ -69,7 +69,7 @@ { "data": { "text/plain": [ - "54" + "150" ] }, "execution_count": 4, @@ -92,12 +92,12 @@ "text": [ "{\n", " \"type\": \"attack-pattern\",\n", - " \"id\": \"attack-pattern--c675646d-e204-4aa8-978d-e3d6d65885c4\",\n", + " \"id\": \"attack-pattern--36b2a1d7-e09e-49bf-b45e-477076c2ec01\",\n", " \"created_by_ref\": \"identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5\",\n", - " \"created\": \"2019-04-18T11:00:55.862Z\",\n", - " \"modified\": \"2019-06-20T13:58:02.153Z\",\n", - " \"name\": \"Endpoint Denial of Service\",\n", - " \"description\": \"Adversaries may perform Endpoint Denial of Service (DoS) attacks to degrade or block the availability of services to users. Endpoint DoS can be performed by exhausting the system resources those services are hosted on or exploiting the system to cause a persistent crash condition. Example services include websites, email services, DNS, and web-based applications. Adversaries have been observed conducting DoS attacks for political purposes(Citation: FireEye OpPoisonedHandover February 2016) and to support other malicious activities, including distraction(Citation: FSISAC FraudNetDoS September 2012), hacktivism, and extortion.(Citation: Symantec DDoS October 2014)\\n\\nAn Endpoint DoS denies the availability of a service without saturating the network used to provide access to the service. Adversaries can target various layers of the application stack that is hosted on the system used to provide the service. These layers include the Operating Systems (OS), server applications such as web servers, DNS servers, databases, and the (typically web-based) applications that sit on top of them. Attacking each layer requires different techniques that take advantage of bottlenecks that are unique to the respective components. A DoS attack may be generated by a single system or multiple systems spread across the internet, which is commonly referred to as a distributed DoS (DDoS).\\n\\nTo perform DoS attacks against endpoint resources, several aspects apply to multiple methods, including IP address spoofing and botnets.\\n\\nAdversaries may use the original IP address of an attacking system, or spoof the source IP address to make the attack traffic more difficult to trace back to the attacking system or to enable reflection. This can increase the difficulty defenders have in defending against the attack by reducing or eliminating the effectiveness of filtering by the source address on network defense devices.\\n\\nBotnets are commonly used to conduct DDoS attacks against networks and services. Large botnets can generate a significant amount of traffic from systems spread across the global internet. Adversaries may have the resources to build out and control their own botnet infrastructure or may rent time on an existing botnet to conduct an attack. In some of the worst cases for DDoS, so many systems are used to generate requests that each one only needs to send out a small amount of traffic to produce enough volume to exhaust the target's resources. In such circumstances, distinguishing DDoS traffic from legitimate clients becomes exceedingly difficult. Botnets have been used in some of the most high-profile DDoS attacks, such as the 2012 series of incidents that targeted major US banks.(Citation: USNYAG IranianBotnet March 2016)\\n\\nIn cases where traffic manipulation is used, there may be points in the the global network (such as high traffic gateway routers) where packets can be altered and cause legitimate clients to execute code that directs network packets toward a target in high volume. This type of capability was previously used for the purposes of web censorship where client HTTP traffic was modified to include a reference to JavaScript that generated the DDoS code to overwhelm target web servers.(Citation: ArsTechnica Great Firewall of China)\\n\\nFor attacks attempting to saturate the providing network, see the Network Denial of Service Technique [Network Denial of Service](https://attack.mitre.org/techniques/T1498).\\n\\n### OS Exhaustion Flood\\nSince operating systems (OSs) are responsible for managing the finite resources on a system, they can be a target for DoS. These attacks do not need to exhaust the actual resources on a system since they can simply exhaust the limits that an OS self-imposes to prevent the entire system from being overwhelmed by excessive demands on its capacity. Different ways to achieve this exist, including TCP state-exhaustion attacks such as SYN floods and ACK floods.(Citation: Arbor AnnualDoSreport Jan 2018)\\n\\n#### SYN Flood\\nWith SYN floods excessive amounts of SYN packets are sent, but the 3-way TCP handshake is never completed. Because each OS has a maximum number of concurrent TCP connections that it will allow, this can quickly exhaust the ability of the system to receive new requests for TCP connections, thus preventing access to any TCP service provided by the server.(Citation: Cloudflare SynFlood)\\n\\n#### ACK Flood\\nACK floods leverage the stateful nature of the TCP protocol. A flood of ACK packets are sent to the target. This forces the OS to search its state table for a related TCP connection that has already been established. Because the ACK packets are for connections that do not exist, the OS will have to search the entire state table to confirm that no match exists. When it is necessary to do this for a large flood of packets, the computational requirements can cause the server to become sluggish and/or unresponsive, due to the work it must do to eliminate the rogue ACK packets. This greatly reduces the resources available for providing the targeted service.(Citation: Corero SYN-ACKflood)\\n\\n### Service Exhaustion Flood\\nDifferent network services provided by systems are targeted in different ways to conduct a DoS. Adversaries often target DNS and web servers, but other services have been targeted as well.(Citation: Arbor AnnualDoSreport Jan 2018) Web server software can be attacked through a variety of means, some of which apply generally while others are specific to the software being used to provide the service.\\n\\n#### Simple HTTP Flood\\nA large number of HTTP requests can be issued to a web server to overwhelm it and/or an application that runs on top of it. This flood relies on raw volume to accomplish the objective, exhausting any of the various resources required by the victim software to provide the service.(Citation: Cloudflare HTTPflood)\\n\\n#### SSL Renegotiation Attack\\nSSL Renegotiation Attacks take advantage of a protocol feature in SSL/TLS. The SSL/TLS protocol suite includes mechanisms for the client and server to agree on an encryption algorithm to use for subsequent secure connections. If SSL renegotiation is enabled, a request can be made for renegotiation of the crypto algorithm. In a renegotiation attack, the adversary establishes a SSL/TLS connection and then proceeds to make a series of renegotiation requests. Because the cryptographic renegotiation has a meaningful cost in computation cycles, this can cause an impact to the availability of the service when done in volume.(Citation: Arbor SSLDoS April 2012)\\n\\n### Application Exhaustion Flood\\nWeb applications that sit on top of web server stacks can be targeted for DoS. Specific features in web applications may be highly resource intensive. Repeated requests to those features may be able to exhaust resources and deny access to the application or the server itself.(Citation: Arbor AnnualDoSreport Jan 2018)\\n\\n### Application or System Exploitation\\nSoftware vulnerabilities exist that when exploited can cause an application or system to crash and deny availability to users.(Citation: Sucuri BIND9 August 2015) Some systems may automatically restart critical applications and services when crashes occur, but they can likely be re-exploited to cause a persistent DoS condition.\",\n", + " \"created\": \"2020-03-02T20:08:03.691Z\",\n", + " \"modified\": \"2020-09-16T15:58:18.490Z\",\n", + " \"name\": \"Reflection Amplification\",\n", + " \"description\": \"Adversaries may attempt to cause a denial of service by reflecting a high-volume of network traffic to a target. This type of Network DoS takes advantage of a third-party server intermediary that hosts and will respond to a given spoofed source IP address. This third-party server is commonly termed a reflector. An adversary accomplishes a reflection attack by sending packets to reflectors with the spoofed address of the victim. Similar to Direct Network Floods, more than one system may be used to conduct the attack, or a botnet may be used. Likewise, one or more reflector may be used to focus traffic on the target.(Citation: Cloudflare ReflectionDoS May 2017)\\n\\nReflection attacks often take advantage of protocols with larger responses than requests in order to amplify their traffic, commonly known as a Reflection Amplification attack. Adversaries may be able to generate an increase in volume of attack traffic that is several orders of magnitude greater than the requests sent to the amplifiers. The extent of this increase will depending upon many variables, such as the protocol in question, the technique used, and the amplifying servers that actually produce the amplification in attack volume. Two prominent protocols that have enabled Reflection Amplification Floods are DNS(Citation: Cloudflare DNSamplficationDoS) and NTP(Citation: Cloudflare NTPamplifciationDoS), though the use of several others in the wild have been documented.(Citation: Arbor AnnualDoSreport Jan 2018) In particular, the memcache protocol showed itself to be a powerful protocol, with amplification sizes up to 51,200 times the requesting packet.(Citation: Cloudflare Memcrashed Feb 2018)\",\n", " \"kill_chain_phases\": [\n", " {\n", " \"kill_chain_name\": \"mitre-attack\",\n", @@ -107,53 +107,28 @@ " \"external_references\": [\n", " {\n", " \"source_name\": \"mitre-attack\",\n", - " \"url\": \"https://attack.mitre.org/techniques/T1499\",\n", - " \"external_id\": \"T1499\"\n", + " \"url\": \"https://attack.mitre.org/techniques/T1498/002\",\n", + " \"external_id\": \"T1498.002\"\n", " },\n", " {\n", " \"source_name\": \"capec\",\n", - " \"url\": \"https://capec.mitre.org/data/definitions/227.html\",\n", - " \"external_id\": \"CAPEC-227\"\n", + " \"url\": \"https://capec.mitre.org/data/definitions/490.html\",\n", + " \"external_id\": \"CAPEC-490\"\n", " },\n", " {\n", - " \"source_name\": \"capec\",\n", - " \"url\": \"https://capec.mitre.org/data/definitions/131.html\",\n", - " \"external_id\": \"CAPEC-131\"\n", - " },\n", - " {\n", - " \"source_name\": \"capec\",\n", - " \"url\": \"https://capec.mitre.org/data/definitions/130.html\",\n", - " \"external_id\": \"CAPEC-130\"\n", - " },\n", - " {\n", - " \"source_name\": \"capec\",\n", - " \"url\": \"https://capec.mitre.org/data/definitions/125.html\",\n", - " \"external_id\": \"CAPEC-125\"\n", - " },\n", - " {\n", - " \"source_name\": \"FireEye OpPoisonedHandover February 2016\",\n", - " \"description\": \"Ned Moran, Mike Scott, Mike Oppenheim of FireEye. (2014, November 3). Operation Poisoned Handover: Unveiling Ties Between APT Activity in Hong Kong\\u2019s Pro-Democracy Movement. Retrieved April 18, 2019.\",\n", - " \"url\": \"https://www.fireeye.com/blog/threat-research/2014/11/operation-poisoned-handover-unveiling-ties-between-apt-activity-in-hong-kongs-pro-democracy-movement.html\"\n", - " },\n", - " {\n", - " \"source_name\": \"FSISAC FraudNetDoS September 2012\",\n", - " \"description\": \"FS-ISAC. (2012, September 17). Fraud Alert \\u2013 Cyber Criminals Targeting Financial Institution Employee Credentials to Conduct Wire Transfer Fraud. Retrieved April 18, 2019.\",\n", - " \"url\": \"https://www.ic3.gov/media/2012/FraudAlertFinancialInstitutionEmployeeCredentialsTargeted.pdf\"\n", - " },\n", - " {\n", - " \"source_name\": \"Symantec DDoS October 2014\",\n", - " \"description\": \"Wueest, C.. (2014, October 21). The continued rise of DDoS attacks. Retrieved April 24, 2019.\",\n", - " \"url\": \"https://www.symantec.com/content/en/us/enterprise/media/security_response/whitepapers/the-continued-rise-of-ddos-attacks.pdf\"\n", + " \"source_name\": \"Cloudflare ReflectionDoS May 2017\",\n", + " \"description\": \"Marek Majkowsk, Cloudflare. (2017, May 24). Reflections on reflection (attacks). Retrieved April 23, 2019.\",\n", + " \"url\": \"https://blog.cloudflare.com/reflections-on-reflections/\"\n", " },\n", " {\n", - " \"source_name\": \"USNYAG IranianBotnet March 2016\",\n", - " \"description\": \"Preet Bharara, US Attorney. (2016, March 24). Retrieved April 23, 2019.\",\n", - " \"url\": \"https://www.justice.gov/opa/pr/seven-iranians-working-islamic-revolutionary-guard-corps-affiliated-entities-charged\"\n", + " \"source_name\": \"Cloudflare DNSamplficationDoS\",\n", + " \"description\": \"Cloudflare. (n.d.). What is a DNS amplification attack?. Retrieved April 23, 2019.\",\n", + " \"url\": \"https://www.cloudflare.com/learning/ddos/dns-amplification-ddos-attack/\"\n", " },\n", " {\n", - " \"source_name\": \"ArsTechnica Great Firewall of China\",\n", - " \"description\": \"Goodin, D.. (2015, March 31). Massive denial-of-service attack on GitHub tied to Chinese government. Retrieved April 19, 2019.\",\n", - " \"url\": \"https://arstechnica.com/information-technology/2015/03/massive-denial-of-service-attack-on-github-tied-to-chinese-government/\"\n", + " \"source_name\": \"Cloudflare NTPamplifciationDoS\",\n", + " \"description\": \"Cloudflare. (n.d.). What is a NTP amplificaiton attack?. Retrieved April 23, 2019.\",\n", + " \"url\": \"https://www.cloudflare.com/learning/ddos/ntp-amplification-ddos-attack/\"\n", " },\n", " {\n", " \"source_name\": \"Arbor AnnualDoSreport Jan 2018\",\n", @@ -161,29 +136,9 @@ " \"url\": \"https://pages.arbornetworks.com/rs/082-KNA-087/images/13th_Worldwide_Infrastructure_Security_Report.pdf\"\n", " },\n", " {\n", - " \"source_name\": \"Cloudflare SynFlood\",\n", - " \"description\": \"Cloudflare. (n.d.). What is a SYN flood attack?. Retrieved April 22, 2019.\",\n", - " \"url\": \"https://www.cloudflare.com/learning/ddos/syn-flood-ddos-attack/\"\n", - " },\n", - " {\n", - " \"source_name\": \"Corero SYN-ACKflood\",\n", - " \"description\": \"Corero. (n.d.). What is a SYN-ACK Flood Attack?. Retrieved April 22, 2019.\",\n", - " \"url\": \"https://www.corero.com/resources/ddos-attack-types/syn-flood-ack.html\"\n", - " },\n", - " {\n", - " \"source_name\": \"Cloudflare HTTPflood\",\n", - " \"description\": \"Cloudflare. (n.d.). What is an HTTP flood DDoS attack?. Retrieved April 22, 2019.\",\n", - " \"url\": \"https://www.cloudflare.com/learning/ddos/http-flood-ddos-attack/\"\n", - " },\n", - " {\n", - " \"source_name\": \"Arbor SSLDoS April 2012\",\n", - " \"description\": \"ASERT Team, Netscout Arbor. (2012, April 24). DDoS Attacks on SSL: Something Old, Something New. Retrieved April 22, 2019.\",\n", - " \"url\": \"https://www.netscout.com/blog/asert/ddos-attacks-ssl-something-old-something-new\"\n", - " },\n", - " {\n", - " \"source_name\": \"Sucuri BIND9 August 2015\",\n", - " \"description\": \"Cid, D.. (2015, August 2). BIND9 \\u2013 Denial of Service Exploit in the Wild. Retrieved April 26, 2019.\",\n", - " \"url\": \"https://blog.sucuri.net/2015/08/bind9-denial-of-service-exploit-in-the-wild.html\"\n", + " \"source_name\": \"Cloudflare Memcrashed Feb 2018\",\n", + " \"description\": \"Marek Majkowski of Cloudflare. (2018, February 27). Memcrashed - Major amplification attacks from UDP port 11211. Retrieved April 18, 2019.\",\n", + " \"url\": \"https://blog.cloudflare.com/memcrashed-major-amplification-attacks-from-port-11211/\"\n", " },\n", " {\n", " \"source_name\": \"Cisco DoSdetectNetflow\",\n", @@ -195,24 +150,29 @@ " \"marking-definition--fa42a846-8d90-4e51-bc29-71d5b4802168\"\n", " ],\n", " \"x_mitre_data_sources\": [\n", - " \"SSL/TLS inspection\",\n", - " \"Web logs\",\n", - " \"Web application firewall logs\",\n", - " \"Network intrusion detection system\",\n", + " \"Sensor health and status\",\n", " \"Network protocol analysis\",\n", - " \"Network device logs\",\n", - " \"Netflow/Enclave netflow\"\n", + " \"Netflow/Enclave netflow\",\n", + " \"Network intrusion detection system\",\n", + " \"Network device logs\"\n", " ],\n", - " \"x_mitre_detection\": \"Detection of Endpoint DoS can sometimes be achieved before the effect is sufficient to cause significant impact to the availability of the service, but such response time typically requires very aggressive monitoring and responsiveness. Typical network throughput monitoring tools such as netflow, SNMP, and custom scripts can be used to detect sudden increases in circuit utilization.(Citation: Cisco DoSdetectNetflow) Real-time, automated, and qualitative study of the network traffic can identify a sudden surge in one type of protocol can be used to detect an attack as it starts.\\n\\nIn addition to network level detections, endpoint logging and instrumentation can be useful for detection. Attacks targeting web applications may generate logs in the web server, application server, and/or database server that can be used to identify the type of attack, possibly before the impact is felt.\\n\\nExternally monitor the availability of services that may be targeted by an Endpoint DoS.\",\n", + " \"x_mitre_detection\": \"Detection of reflection amplification can sometimes be achieved before the traffic volume is sufficient to cause impact to the availability of the service, but such response time typically requires very aggressive monitoring and responsiveness or services provided by an upstream network service provider. Typical network throughput monitoring tools such as netflow(Citation: Cisco DoSdetectNetflow), SNMP, and custom scripts can be used to detect sudden increases in network or service utilization. Real-time, automated, and qualitative study of the network traffic can identify a sudden surge in one type of protocol can be used to detect a reflection amplification DoS event as it starts. Often, the lead time may be small and the indicator of an event availability of the network or service drops. The analysis tools mentioned can then be used to determine the type of DoS causing the outage and help with remediation.\",\n", " \"x_mitre_impact_type\": [\n", " \"Availability\"\n", " ],\n", + " \"x_mitre_is_subtechnique\": true,\n", " \"x_mitre_platforms\": [\n", - " \"Linux\",\n", " \"macOS\",\n", - " \"Windows\"\n", + " \"Windows\",\n", + " \"Linux\",\n", + " \"AWS\",\n", + " \"Office 365\",\n", + " \"Azure AD\",\n", + " \"GCP\",\n", + " \"Azure\",\n", + " \"SaaS\"\n", " ],\n", - " \"x_mitre_version\": \"1.0\"\n", + " \"x_mitre_version\": \"1.1\"\n", "}\n" ] } @@ -245,7 +205,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.3" + "version": "3.8.5" } }, "nbformat": 4, diff --git a/setup.py b/setup.py index 8b8a301..bf343f0 100644 --- a/setup.py +++ b/setup.py @@ -13,7 +13,7 @@ setuptools.setup( name="attackcti", - version="0.3.4", + version="0.3.4.3", author="Roberto Rodriguez", description="ATTACK CTI Libary", long_description=long_description,