diff --git a/notebooks/cisa_commonalities_notebook.ipynb b/notebooks/cisa_commonalities_notebook.ipynb
new file mode 100644
index 0000000000..2948a4b7f7
--- /dev/null
+++ b/notebooks/cisa_commonalities_notebook.ipynb
@@ -0,0 +1,13049 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "id": "8aae63e7-6918-4035-9617-92110e462324",
+ "metadata": {},
+ "source": [
+ "### Description\n",
+ "\n",
+ "a simple jupyter notebook that helps Splunk Threat Research Team see the data connections, commonalities and differences of security content stories or threat families.This helps us to look for visualizing the common TTP’s and tooling used by adversaries or threat actors based on the Security content analytics we developed in each analytic story.\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "id": "78b65762-08c4-4100-bdd8-dcf162b09e73",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "__author__ = \"Teoderick Contreras STRT\"\n",
+ "import os\n",
+ "import argparse\n",
+ "from pathlib import Path\n",
+ "import json\n",
+ "import csv\n",
+ "import yaml\n",
+ "from collections import defaultdict\n",
+ "import pandas as pd\n",
+ "import numpy as np\n",
+ "from IPython.display import display, HTML"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "id": "1e73c539-8e4e-40be-973a-72d7d1f3a93e",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "SECURITY_CONTENT_PATH = \"~/security_content/detections/\"\n",
+ "sec_content_name_and_story = defaultdict(list)\n",
+ "mitre_attack_id_info_dict = defaultdict(list)\n",
+ "mitre_attack_tid_dict = defaultdict(list)\n",
+ "mitre_attack_fn_dict = defaultdict(list)\n",
+ "mitre_attack_story_dict = defaultdict(list)\n",
+ "mitre_attack_tid_name_dict = defaultdict(list)\n",
+ "home_path = Path.home()\n",
+ "story_detection_list = []"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "id": "bf35a8ba-2f3f-4983-85c8-e7a1ba4c3802",
+ "metadata": {
+ "tags": []
+ },
+ "outputs": [],
+ "source": [
+ "def display_side_by_side(dfs:list, captions:list):\n",
+ " \"\"\"Display tables side by side to save vertical space\n",
+ " Input:\n",
+ " dfs: list of pandas.DataFrame\n",
+ " captions: list of table captions\n",
+ " \"\"\"\n",
+ " output = \"\"\n",
+ " combined = dict(zip(captions, dfs))\n",
+ " for caption, df in combined.items():\n",
+ " output += df.style.set_table_attributes(\"style='display:inline'\").set_caption(caption)._repr_html_()\n",
+ " output += \"\\xa0\\xa0\\xa0\"\n",
+ " display(HTML(output))\n",
+ "\n",
+ "def expand_path(file_path):\n",
+ " if \"~\" in file_path:\n",
+ " return str(file_path).replace(\"~\", str(home_path))\n",
+ " else:\n",
+ " return file_path\n",
+ "\n",
+ "def generate_name_and_story_dict(sec_content_path, story):\n",
+ " \n",
+ " for roots, dirs, files in os.walk(sec_content_path):\n",
+ " temp_file_name = \"\"\n",
+ " #print(\"[+] enumerating yml files in: {0}\".format(roots))\n",
+ " detection_base_dir_name = os.path.basename(roots)\n",
+ " \n",
+ " for f in files:\n",
+ " temp_file_name = os.path.join(detection_base_dir_name, f)\n",
+ " file_path = os.path.join(roots, f)\n",
+ " if file_path.endswith(\".yml\"):\n",
+ " parse_yml_file(file_path, temp_file_name, story)\n",
+ " print(\"[+] total detection found: {0}\".format(len(story_detection_list)))\n",
+ " return\n",
+ " \n",
+ "def parse_yml_file(file_path, base_file_name, story):\n",
+ " file_name = os.path.basename(base_file_name)\n",
+ " mitre_tid = \"\"\n",
+ " tid_json_obj = load_attack_id_json()\n",
+ " with open(file_path, \"r\") as f:\n",
+ " yml_buff = yaml.safe_load(f)\n",
+ " \n",
+ " for s in story:\n",
+ " s = s.strip()\n",
+ " if s in yml_buff['tags']['analytic_story']:\n",
+ "\n",
+ " sec_content_name_and_story[s].append(file_name)\n",
+ " print(\" [{0}] : {1}\".format(s, base_file_name))\n",
+ " story_detection_list.append(base_file_name)\n",
+ " #f_name = \"-\".join(yml_buff['tags'][\"mitre_attack_id\"]) + \":\" + file_name \n",
+ " f_name = file_name\n",
+ "\n",
+ "\n",
+ " mitre_attack_id_info_dict[f_name].append(s)\n",
+ " for m in yml_buff['tags'][\"mitre_attack_id\"]:\n",
+ "\n",
+ " mitre_attack_tid_dict[m].append(s)\n",
+ " mitre_attack_tid_dict[m] = sorted(list(set(mitre_attack_tid_dict[m])))\n",
+ " \n",
+ " mitre_attack_fn_dict[m].append(s + \":\" +file_name)\n",
+ " mitre_attack_fn_dict[m] = sorted(list(set(mitre_attack_fn_dict[m])))\n",
+ " \n",
+ "\n",
+ " mitre_attack_story_dict[s].append(m)\n",
+ " mitre_attack_story_dict[s] = sorted(list(set(mitre_attack_story_dict[s])))\n",
+ " \n",
+ " new_key = m + \"-\" + tid_json_obj[m].replace(\" \", \"_\")\n",
+ " mitre_attack_tid_name_dict[new_key].append(s)\n",
+ " mitre_attack_tid_name_dict[new_key] = sorted(list(set(mitre_attack_tid_name_dict[new_key])))\n",
+ " #logger.info(self.mitre_attack_id_info_dict[file_name])\n",
+ " #for mitre_tid in yml_buff['tags']['mitre_attack_id']:\n",
+ " # self.mitre_attack_tid_dict[mitre_tid].append(s)\n",
+ " \n",
+ " return\n",
+ "\n",
+ "def load_attack_id_json():\n",
+ " template_path = os.path.join(os.getcwd(), \"templates\")\n",
+ " tid_json_path = os.path.join(template_path, \"tid.json\")\n",
+ " with open(tid_json_path, \"r\") as f:\n",
+ " tid_json_obj = json.load(f)\n",
+ " return tid_json_obj\n",
+ "\n",
+ "def process_sec_content(story_list):\n",
+ " debug = 0\n",
+ " print(\" [+] story coverage needed: {0}\".format(story_list))\n",
+ " normalized_security_content_path = expand_path(SECURITY_CONTENT_PATH)\n",
+ " generate_name_and_story_dict(normalized_security_content_path, story_list)\n",
+ " if debug == 1:\n",
+ " print(\"\\n-----------------------------\\n[-] detection name vs analytic story - mitre_attack_id_info_dict \\n-----------------------------\\n\")\n",
+ " for k, v in mitre_attack_id_info_dict.items():\n",
+ " print(\"[{0}] detection name: {1} related story: {2}\".format(len(v), k, v)) \n",
+ " print(\"\\n-----------------------------\\n[-] mitre attack id vs analytic story - mitre_attack_tid_dict \\n-----------------------------\\n\")\n",
+ " for k, v in mitre_attack_tid_dict.items():\n",
+ " print(\"[{0}] {1} {2}\".format(len(list(set(v))), k, list(set(v))))\n",
+ " print(\"\\n-----------------------------\\n[-] mitre attack id vs story:detectioname - mitre_attack_fn_dict \\n-----------------------------\\n\")\n",
+ " for k, v in mitre_attack_fn_dict.items():\n",
+ " print(\"[{0}] {1} {2}\".format(len(list(set(v))), k, list(set(v)))) \n",
+ " print(\"\\n-----------------------------\\n[-] story vs id - mitre_attack_story_dict \\n-----------------------------\\n\")\n",
+ " for k, v in mitre_attack_story_dict.items():\n",
+ " print(\"[{0}] {1} {2}\".format(len(list(set(v))), k, list(set(v)))) \n",
+ " \n",
+ "def highlight_cells_5(val):\n",
+ " color= \"\"\n",
+ " for k ,v in mitre_attack_tid_dict.items():\n",
+ " if val == k and len(v) == 5:\n",
+ " color = 'yellow'\n",
+ " return 'background-color: {}'.format(color)\n",
+ "\n",
+ "def highlight_cells_4(val):\n",
+ " color= \"\"\n",
+ " for k ,v in mitre_attack_tid_dict.items():\n",
+ " if val == k and len(v) == 4:\n",
+ " color = 'orange'\n",
+ " return 'background-color: {}'.format(color)\n",
+ " \n",
+ "def highlight_cells_3(val):\n",
+ " color= \"\"\n",
+ " for k ,v in mitre_attack_tid_dict.items():\n",
+ " if val == k and len(v) == 3:\n",
+ " color = 'lightgreen'\n",
+ " return 'background-color: {}'.format(color)\n",
+ "\n",
+ "def highlight_cells_2(val):\n",
+ " color= \"\"\n",
+ " for k ,v in mitre_attack_tid_dict.items():\n",
+ " if val == k and len(v) == 2:\n",
+ " color = 'lightblue'\n",
+ " return 'background-color: {}'.format(color)\n",
+ "\n",
+ "def highlight_cells_1(val):\n",
+ " color= \"\"\n",
+ " for k ,v in mitre_attack_tid_dict.items():\n",
+ " if val == k and len(v) == 1:\n",
+ " color = 'lightgray'\n",
+ " return 'background-color: {}'.format(color)\n",
+ "\n",
+ "def summary_table_of_id(dict_name, det_len): \n",
+ " temp_dict = {} \n",
+ " for k, v in dict_name.items():\n",
+ " if len(v) == det_len:\n",
+ " temp_dict[k] = v \n",
+ " return temp_dict\n",
+ "\n",
+ "def detection_list_by_count(det_table_dict): \n",
+ " detection_count_by_id = {}\n",
+ " for k, det_dict in det_table_dict.items():\n",
+ " t = {}\n",
+ " for s_, d in det_dict.items():\n",
+ " t[s_] = \"(\" + str(len(d)) + \")-detection count\"\n",
+ " detection_count_by_id[k] = t \n",
+ " return pd.DataFrame.from_dict(detection_count_by_id, orient='index')\n",
+ "\n",
+ "def detection_list_by_id(temp_dict): \n",
+ " det_table_dict = {}\n",
+ " for k, v in temp_dict.items():\n",
+ " temp_d = defaultdict(list)\n",
+ " for fn in mitre_attack_fn_dict[k]:\n",
+ " s_,d = fn.split(\":\")\n",
+ " temp_d[s_].append(d)\n",
+ " det_table_dict[k] = temp_d\n",
+ " \n",
+ " return det_table_dict\n",
+ "\n",
+ "\n",
+ "def highlight_cells(val):\n",
+ " color= \"\"\n",
+ " for k ,v in mitre_attack_tid_dict.items():\n",
+ " if val == k and len(v) == 5:\n",
+ " color = 'yellow'\n",
+ " return 'background-color: {}'.format(color)\n",
+ " elif val == k and len(v) == 4:\n",
+ " color = 'orange'\n",
+ " return 'background-color: {}'.format(color)\n",
+ " elif val == k and len(v) == 3:\n",
+ " color = 'lightgreen'\n",
+ " return 'background-color: {}'.format(color)\n",
+ " elif val == k and len(v) == 2:\n",
+ " color = 'lightblue'\n",
+ " return 'background-color: {}'.format(color)\n",
+ " elif val == k and len(v) == 1:\n",
+ " color = 'lightgray' \n",
+ " return 'background-color: {}'.format(color)\n",
+ "\n",
+ "def highlight_legend(val):\n",
+ " color= \"\"\n",
+ " if val == \"yellow\":\n",
+ " color = 'yellow'\n",
+ " return 'background-color: {}'.format(color)\n",
+ " elif val == 'orange':\n",
+ " color = 'orange'\n",
+ " return 'background-color: {}'.format(color)\n",
+ " elif val == 'lightgreen':\n",
+ " color = 'lightgreen'\n",
+ " return 'background-color: {}'.format(color)\n",
+ " elif val == 'lightblue':\n",
+ " color = 'lightblue'\n",
+ " return 'background-color: {}'.format(color)\n",
+ " elif val == \"lightgray\":\n",
+ " color = 'lightgray' \n",
+ " return 'background-color: {}'.format(color)\n",
+ "\n",
+ "def highlight_nan(val):\n",
+ " color= \"\"\n",
+ " if val == \"NaN\":\n",
+ " color = 'black'\n",
+ " return 'background-color: {}'.format(color)\n",
+ " \n",
+ "def show_legend():\n",
+ " color_dict = {\"5 malware coverage\":\"yellow\", \"4 malware coverage\":\"orange\", \"3 malware coverage\":\"lightgreen\", \"2 malware coverage\":\"lightblue\", \"1 malware coverage\":\"lightgray\"}\n",
+ " cf = pd.DataFrame.from_dict(color_dict, orient='index')\n",
+ " \n",
+ " return cf.style.applymap(highlight_legend)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "id": "293bd920-aeac-405e-8a4a-4291fe6abbbe",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "def main():\n",
+ " \n",
+ " pd.options.display.max_colwidth = 1000\n",
+ " pd.set_option('display.max_rows', 500)\n",
+ " story_list = [\"Qakbot\", \"Azorult\", \"Remcos\", \"Trickbot\", \"AgentTesla\"]\n",
+ " process_sec_content(story_list)\n",
+ " \n",
+ " return"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "74a4cf30-31a9-4cb1-9a26-a4f88cdc5605",
+ "metadata": {},
+ "source": [
+ "### Scan Detections\n",
+ "Scanning Splunk Security Content Analytic Detections related to the 5 CISA Malware family that STRT worked on."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "id": "926af3fd-3b64-4d3f-8bb7-f839e5aaf45a",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ " [+] story coverage needed: ['Qakbot', 'Azorult', 'Remcos', 'Trickbot', 'AgentTesla']\n",
+ " [Remcos] : endpoint/powershell_windows_defender_exclusion_commands.yml\n",
+ " [AgentTesla] : endpoint/powershell_windows_defender_exclusion_commands.yml\n",
+ " [Remcos] : endpoint/vbscript_execution_using_wscript_app.yml\n",
+ " [Azorult] : endpoint/windows_remote_service_rdpwinst_tool_execution.yml\n",
+ " [Azorult] : endpoint/excessive_attempt_to_disable_services.yml\n",
+ " [Qakbot] : endpoint/windows_process_injection_remote_thread.yml\n",
+ " [Azorult] : endpoint/windows_remote_access_software_rms_registry.yml\n",
+ " [Azorult] : endpoint/windows_remote_services_allow_remote_assistance.yml\n",
+ " [Qakbot] : endpoint/system_user_discovery_with_whoami.yml\n",
+ " [Trickbot] : endpoint/wermgr_process_create_executable_file.yml\n",
+ " [Qakbot] : endpoint/windows_iso_lnk_file_creation.yml\n",
+ " [Azorult] : endpoint/windows_iso_lnk_file_creation.yml\n",
+ " [Remcos] : endpoint/windows_iso_lnk_file_creation.yml\n",
+ " [AgentTesla] : endpoint/windows_iso_lnk_file_creation.yml\n",
+ " [Qakbot] : endpoint/windows_system_discovery_using_qwinsta.yml\n",
+ " [Azorult] : endpoint/windows_impair_defense_add_xml_applocker_rules.yml\n",
+ " [Qakbot] : endpoint/wermgr_process_spawned_cmd_or_powershell_process.yml\n",
+ " [Trickbot] : endpoint/wermgr_process_spawned_cmd_or_powershell_process.yml\n",
+ " [Remcos] : endpoint/remcos_rat_file_creation_in_remcos_folder.yml\n",
+ " [Azorult] : endpoint/hide_user_account_from_sign_in_screen.yml\n",
+ " [Trickbot] : endpoint/wermgr_process_connecting_to_ip_check_web_services.yml\n",
+ " [Azorult] : endpoint/processes_launching_netsh.yml\n",
+ " [Azorult] : endpoint/icacls_deny_command.yml\n",
+ " [Remcos] : endpoint/suspicious_process_dns_query_known_abuse_web_services.yml\n",
+ " [Azorult] : endpoint/excessive_usage_of_taskkill.yml\n",
+ " [AgentTesla] : endpoint/excessive_usage_of_taskkill.yml\n",
+ " [Azorult] : endpoint/windows_remote_services_allow_rdp_in_firewall.yml\n",
+ " [Azorult] : endpoint/allow_operation_with_consent_admin.yml\n",
+ " [Remcos] : endpoint/suspicious_wav_file_in_appdata_folder.yml\n",
+ " [Azorult] : endpoint/windows_remote_services_rdp_enable.yml\n",
+ " [Qakbot] : endpoint/network_connection_discovery_netstat.yml\n",
+ " [AgentTesla] : endpoint/windows_file_transfer_protocol_in_non_common_process_path.yml\n",
+ " [Azorult] : endpoint/windows_modify_registry_regedit_silent_reg_import.yml\n",
+ " [Qakbot] : endpoint/cmdline_tool_not_executed_in_cmd_shell.yml\n",
+ " [Qakbot] : endpoint/windows_wmi_process_call_create.yml\n",
+ " [Qakbot] : endpoint/regsvr32_with_known_silent_switch_cmdline.yml\n",
+ " [Remcos] : endpoint/regsvr32_with_known_silent_switch_cmdline.yml\n",
+ " [Qakbot] : endpoint/windows_masquerading_explorer_as_child_process.yml\n",
+ " [Qakbot] : endpoint/schtasks_run_task_on_demand.yml\n",
+ " [Qakbot] : endpoint/network_connection_discovery_arp.yml\n",
+ " [Qakbot] : endpoint/create_remote_thread_in_shell_application.yml\n",
+ " [Azorult] : endpoint/disable_windows_behavior_monitoring.yml\n",
+ " [Azorult] : endpoint/excessive_usage_of_cacls_app.yml\n",
+ " [Remcos] : endpoint/loading_of_dynwrapx_module.yml\n",
+ " [Remcos] : endpoint/possible_browser_pass_view_parameter.yml\n",
+ " [Qakbot] : endpoint/network_discovery_using_route_windows_app.yml\n",
+ " [Trickbot] : endpoint/mshta_spawning_rundll32_or_regsvr32_process.yml\n",
+ " [Qakbot] : endpoint/malicious_powershell_process___encoded_command.yml\n",
+ " [AgentTesla] : endpoint/windows_drivers_loaded_by_signature.yml\n",
+ " [Qakbot] : endpoint/suspicious_regsvr32_register_suspicious_path.yml\n",
+ " [Qakbot] : endpoint/recon_avproduct_through_pwh_or_wmi.yml\n",
+ " [Azorult] : endpoint/suspicious_scheduled_task_from_public_directory.yml\n",
+ " [AgentTesla] : endpoint/powershell_loading_dotnet_into_memory_via_reflection.yml\n",
+ " [Remcos] : endpoint/remcos_client_registry_install_entry.yml\n",
+ " [Qakbot] : endpoint/windows_dll_side_loading_in_calc.yml\n",
+ " [Qakbot] : endpoint/office_product_spawn_cmd_process.yml\n",
+ " [Azorult] : endpoint/office_product_spawn_cmd_process.yml\n",
+ " [Remcos] : endpoint/office_product_spawn_cmd_process.yml\n",
+ " [Trickbot] : endpoint/office_product_spawn_cmd_process.yml\n",
+ " [AgentTesla] : endpoint/office_product_spawn_cmd_process.yml\n",
+ " [Trickbot] : endpoint/cobalt_strike_named_pipes.yml\n",
+ " [Remcos] : endpoint/suspicious_image_creation_in_appdata_folder.yml\n",
+ " [Azorult] : endpoint/create_local_admin_accounts_using_net_exe.yml\n",
+ " [Qakbot] : endpoint/disable_defender_spynet_reporting.yml\n",
+ " [Azorult] : endpoint/disable_defender_spynet_reporting.yml\n",
+ " [Remcos] : endpoint/office_product_spawning_windows_script_host.yml\n",
+ " [Remcos] : endpoint/process_deleting_its_process_file_path.yml\n",
+ " [Qakbot] : endpoint/cmd_carry_out_string_command_parameter.yml\n",
+ " [Azorult] : endpoint/cmd_carry_out_string_command_parameter.yml\n",
+ " [Trickbot] : endpoint/office_application_spawn_rundll32_process.yml\n",
+ " [AgentTesla] : endpoint/office_application_spawn_rundll32_process.yml\n",
+ " [Azorult] : endpoint/excessive_usage_of_net_app.yml\n",
+ " [Azorult] : endpoint/disabling_remote_user_account_control.yml\n",
+ " [Remcos] : endpoint/disabling_remote_user_account_control.yml\n",
+ " [AgentTesla] : endpoint/disabling_remote_user_account_control.yml\n",
+ " [Qakbot] : endpoint/windows_command_shell_fetch_env_variables.yml\n",
+ " [Azorult] : endpoint/firewall_allowed_program_enable.yml\n",
+ " [Qakbot] : endpoint/recon_using_wmi_class.yml\n",
+ " [Qakbot] : endpoint/windows_app_layer_protocol_qakbot_namedpipe.yml\n",
+ " [Qakbot] : endpoint/windows_system_discovery_using_ldap_nslookup.yml\n",
+ " [Qakbot] : endpoint/windows_service_created_with_suspicious_service_path.yml\n",
+ " [Trickbot] : endpoint/trickbot_named_pipe.yml\n",
+ " [Qakbot] : endpoint/system_processes_run_from_unexpected_locations.yml\n",
+ " [AgentTesla] : endpoint/suspicious_driver_loaded_path.yml\n",
+ " [Azorult] : endpoint/windows_disableantispyware_reg.yml\n",
+ " [Azorult] : endpoint/office_product_spawning_mshta.yml\n",
+ " [Azorult] : endpoint/network_connection_discovery_net.yml\n",
+ " [Qakbot] : endpoint/windows_process_injection_wermgr_child_process.yml\n",
+ " [Azorult] : endpoint/sc_exe_manipulating_windows_services.yml\n",
+ " [Qakbot] : endpoint/suspicious_process_file_path.yml\n",
+ " [Azorult] : endpoint/suspicious_process_file_path.yml\n",
+ " [Remcos] : endpoint/suspicious_process_file_path.yml\n",
+ " [Trickbot] : endpoint/suspicious_process_file_path.yml\n",
+ " [AgentTesla] : endpoint/suspicious_process_file_path.yml\n",
+ " [Qakbot] : endpoint/windows_app_layer_protocol_wermgr_connect_to_namedpipe.yml\n",
+ " [AgentTesla] : endpoint/windows_multi_hop_proxy_tor_website_query.yml\n",
+ " [Remcos] : endpoint/regsvr32_silent_and_install_param_dll_loading.yml\n",
+ " [Azorult] : endpoint/non_firefox_process_access_firefox_profile_dir.yml\n",
+ " [Remcos] : endpoint/non_firefox_process_access_firefox_profile_dir.yml\n",
+ " [AgentTesla] : endpoint/non_firefox_process_access_firefox_profile_dir.yml\n",
+ " [Azorult] : endpoint/windows_service_stop_by_deletion.yml\n",
+ " [Trickbot] : endpoint/schedule_task_with_rundll32_command_trigger.yml\n",
+ " [Remcos] : endpoint/jscript_execution_using_cscript_app.yml\n",
+ " [Qakbot] : endpoint/services_exe_lolbas_execution_process_spawn.yml\n",
+ " [Azorult] : endpoint/windows_gather_victim_network_info_through_ip_check_web_services.yml\n",
+ " [Qakbot] : endpoint/windows_regsvr32_renamed_binary.yml\n",
+ " [Remcos] : endpoint/winhlp32_spawning_a_process.yml\n",
+ " [Azorult] : endpoint/attempt_to_stop_security_service.yml\n",
+ " [Trickbot] : endpoint/attempt_to_stop_security_service.yml\n",
+ " [Azorult] : endpoint/excessive_usage_of_sc_service_utility.yml\n",
+ " [Remcos] : endpoint/non_chrome_process_accessing_chrome_default_dir.yml\n",
+ " [AgentTesla] : endpoint/non_chrome_process_accessing_chrome_default_dir.yml\n",
+ " [Azorult] : endpoint/chcp_command_execution.yml\n",
+ " [Qakbot] : endpoint/scheduled_task_deleted_or_created_via_cmd.yml\n",
+ " [Azorult] : endpoint/scheduled_task_deleted_or_created_via_cmd.yml\n",
+ " [Trickbot] : endpoint/scheduled_task_deleted_or_created_via_cmd.yml\n",
+ " [AgentTesla] : endpoint/scheduled_task_deleted_or_created_via_cmd.yml\n",
+ " [Azorult] : endpoint/windows_modify_registry_disable_win_defender_raw_write_notif.yml\n",
+ " [Trickbot] : endpoint/account_discovery_with_net_app.yml\n",
+ " [Trickbot] : endpoint/suspicious_rundll32_startw.yml\n",
+ " [Azorult] : endpoint/windows_modify_registry_disallow_windows_app.yml\n",
+ " [AgentTesla] : endpoint/detect_html_help_spawn_child_process.yml\n",
+ " [Qakbot] : endpoint/suspicious_copy_on_system32.yml\n",
+ " [Azorult] : endpoint/disable_defender_submit_samples_consent_feature.yml\n",
+ " [Azorult] : endpoint/windows_powershell_import_applocker_policy.yml\n",
+ " [Trickbot] : endpoint/executable_file_written_in_administrative_smb_share.yml\n",
+ " [Azorult] : endpoint/wmic_noninteractive_app_uninstallation.yml\n",
+ " [Qakbot] : endpoint/office_document_executing_macro_code.yml\n",
+ " [Azorult] : endpoint/office_document_executing_macro_code.yml\n",
+ " [Remcos] : endpoint/office_document_executing_macro_code.yml\n",
+ " [Trickbot] : endpoint/office_document_executing_macro_code.yml\n",
+ " [AgentTesla] : endpoint/office_document_executing_macro_code.yml\n",
+ " [Azorult] : endpoint/disable_show_hidden_files.yml\n",
+ " [Azorult] : endpoint/detect_use_of_cmd_exe_to_launch_script_interpreters.yml\n",
+ " [Azorult] : endpoint/windows_valid_account_with_never_expires_password.yml\n",
+ " [Qakbot] : endpoint/winevent_windows_task_scheduler_event_action_started.yml\n",
+ " [AgentTesla] : endpoint/windows_mail_protocol_in_non_common_process_path.yml\n",
+ " [Remcos] : endpoint/system_info_gathering_using_dxdiag_application.yml\n",
+ " [Remcos] : endpoint/process_writing_dynamicwrapperx.yml\n",
+ " [Qakbot] : endpoint/windows_process_injection_of_wermgr_to_known_browser.yml\n",
+ " [Remcos] : endpoint/add_or_set_windows_defender_exclusion.yml\n",
+ " [AgentTesla] : endpoint/add_or_set_windows_defender_exclusion.yml\n",
+ " [Trickbot] : endpoint/powershell_remote_thread_to_known_windows_process.yml\n",
+ " [Azorult] : endpoint/disable_defender_enhanced_notification.yml\n",
+ " [Azorult] : endpoint/allow_inbound_traffic_by_firewall_rule_registry.yml\n",
+ " [Trickbot] : endpoint/office_product_spawning_certutil.yml\n",
+ " [AgentTesla] : endpoint/office_product_spawning_certutil.yml\n",
+ " [AgentTesla] : endpoint/office_application_drop_executable.yml\n",
+ " [Qakbot] : endpoint/process_creating_lnk_file_in_suspicious_location.yml\n",
+ " [Qakbot] : endpoint/executables_or_script_creation_in_suspicious_path.yml\n",
+ " [Azorult] : endpoint/executables_or_script_creation_in_suspicious_path.yml\n",
+ " [Remcos] : endpoint/executables_or_script_creation_in_suspicious_path.yml\n",
+ " [Trickbot] : endpoint/executables_or_script_creation_in_suspicious_path.yml\n",
+ " [AgentTesla] : endpoint/executables_or_script_creation_in_suspicious_path.yml\n",
+ " [Azorult] : endpoint/windows_modify_registry_suppress_win_defender_notif.yml\n",
+ " [Qakbot] : endpoint/nltest_domain_trust_discovery.yml\n",
+ " [Qakbot] : endpoint/windows_modify_registry_qakbot_binary_data_registry.yml\n",
+ " [Qakbot] : endpoint/windows_defender_exclusion_registry_entry.yml\n",
+ " [Azorult] : endpoint/windows_defender_exclusion_registry_entry.yml\n",
+ " [Remcos] : endpoint/windows_defender_exclusion_registry_entry.yml\n",
+ " [Qakbot] : endpoint/office_application_spawn_regsvr32_process.yml\n",
+ " [Qakbot] : endpoint/windows_wmi_impersonate_token.yml\n",
+ " [Azorult] : endpoint/windows_application_layer_protocol_rms_radmin_tool_namedpipe.yml\n",
+ " [Azorult] : endpoint/windows_modify_registry_disable_windows_security_center_notif.yml\n",
+ " [Azorult] : endpoint/windows_modify_registry_disable_toast_notifications.yml\n",
+ " [Azorult] : endpoint/hiding_files_and_directories_with_attrib_exe.yml\n",
+ " [Remcos] : endpoint/wscript_or_cscript_suspicious_child_process.yml\n",
+ " [AgentTesla] : endpoint/powershell___connect_to_internet_with_hidden_window.yml\n",
+ " [Azorult] : endpoint/disable_defender_blockatfirstseen_feature.yml\n",
+ " [Qakbot] : endpoint/windows_phishing_recent_iso_exec_registry.yml\n",
+ " [Azorult] : endpoint/windows_phishing_recent_iso_exec_registry.yml\n",
+ " [Remcos] : endpoint/windows_phishing_recent_iso_exec_registry.yml\n",
+ " [AgentTesla] : endpoint/windows_phishing_recent_iso_exec_registry.yml\n",
+ " [Qakbot] : endpoint/windows_dll_search_order_hijacking_hunt_with_sysmon.yml\n",
+ " [Azorult] : endpoint/net_localgroup_discovery.yml\n",
+ " [Azorult] : endpoint/windows_modify_registry_disabling_wer_settings.yml\n",
+ " [Qakbot] : endpoint/windows_dll_side_loading_process_child_of_calc.yml\n",
+ " [Qakbot] : endpoint/registry_keys_used_for_persistence.yml\n",
+ " [Azorult] : endpoint/registry_keys_used_for_persistence.yml\n",
+ " [Remcos] : endpoint/registry_keys_used_for_persistence.yml\n",
+ " [Azorult] : endpoint/windows_impair_defense_deny_security_software_with_applocker.yml\n",
+ " [AgentTesla] : endpoint/windows_driver_load_non_standard_path.yml\n",
+ " [Qakbot] : endpoint/windows_schtasks_create_run_as_system.yml\n",
+ " [Remcos] : endpoint/malicious_inprocserver32_modification.yml\n",
+ "[+] total detection found: 184\n"
+ ]
+ }
+ ],
+ "source": [
+ "if __name__ == \"__main__\":\n",
+ " main()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "id": "74eef86f-b203-447d-96e0-231744aa1c66",
+ "metadata": {
+ "tags": []
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "
\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " Remcos | \n",
+ " AgentTesla | \n",
+ " Azorult | \n",
+ " Qakbot | \n",
+ " Trickbot | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 0 | \n",
+ " T1036 | \n",
+ " T1014 | \n",
+ " T1021 | \n",
+ " T1016 | \n",
+ " T1021 | \n",
+ "
\n",
+ " \n",
+ " | 1 | \n",
+ " T1055 | \n",
+ " T1036 | \n",
+ " T1021.001 | \n",
+ " T1016.001 | \n",
+ " T1021.002 | \n",
+ "
\n",
+ " \n",
+ " | 2 | \n",
+ " T1055.001 | \n",
+ " T1053 | \n",
+ " T1036 | \n",
+ " T1027 | \n",
+ " T1027 | \n",
+ "
\n",
+ " \n",
+ " | 3 | \n",
+ " T1059 | \n",
+ " T1053.005 | \n",
+ " T1049 | \n",
+ " T1033 | \n",
+ " T1036 | \n",
+ "
\n",
+ " \n",
+ " | 4 | \n",
+ " T1059.005 | \n",
+ " T1059 | \n",
+ " T1053 | \n",
+ " T1036 | \n",
+ " T1053 | \n",
+ "
\n",
+ " \n",
+ " | 5 | \n",
+ " T1059.007 | \n",
+ " T1059.001 | \n",
+ " T1053.005 | \n",
+ " T1036.003 | \n",
+ " T1053.005 | \n",
+ "
\n",
+ " \n",
+ " | 6 | \n",
+ " T1070 | \n",
+ " T1068 | \n",
+ " T1059 | \n",
+ " T1047 | \n",
+ " T1055 | \n",
+ "
\n",
+ " \n",
+ " | 7 | \n",
+ " T1112 | \n",
+ " T1071 | \n",
+ " T1059.001 | \n",
+ " T1049 | \n",
+ " T1059 | \n",
+ "
\n",
+ " \n",
+ " | 8 | \n",
+ " T1113 | \n",
+ " T1071.003 | \n",
+ " T1059.003 | \n",
+ " T1053 | \n",
+ " T1087 | \n",
+ "
\n",
+ " \n",
+ " | 9 | \n",
+ " T1134 | \n",
+ " T1204 | \n",
+ " T1069 | \n",
+ " T1053.005 | \n",
+ " T1087.002 | \n",
+ "
\n",
+ " \n",
+ " | 10 | \n",
+ " T1134.004 | \n",
+ " T1204.001 | \n",
+ " T1069.001 | \n",
+ " T1055 | \n",
+ " T1218 | \n",
+ "
\n",
+ " \n",
+ " | 11 | \n",
+ " T1204 | \n",
+ " T1218 | \n",
+ " T1071 | \n",
+ " T1055.001 | \n",
+ " T1218.005 | \n",
+ "
\n",
+ " \n",
+ " | 12 | \n",
+ " T1204.001 | \n",
+ " T1218.001 | \n",
+ " T1112 | \n",
+ " T1055.002 | \n",
+ " T1218.011 | \n",
+ "
\n",
+ " \n",
+ " | 13 | \n",
+ " T1218 | \n",
+ " T1543 | \n",
+ " T1136 | \n",
+ " T1059 | \n",
+ " T1543 | \n",
+ "
\n",
+ " \n",
+ " | 14 | \n",
+ " T1218.010 | \n",
+ " T1543.003 | \n",
+ " T1136.001 | \n",
+ " T1059.001 | \n",
+ " T1562 | \n",
+ "
\n",
+ " \n",
+ " | 15 | \n",
+ " T1543 | \n",
+ " T1548 | \n",
+ " T1204 | \n",
+ " T1059.003 | \n",
+ " T1562.001 | \n",
+ "
\n",
+ " \n",
+ " | 16 | \n",
+ " T1547 | \n",
+ " T1548.002 | \n",
+ " T1204.001 | \n",
+ " T1059.007 | \n",
+ " T1566 | \n",
+ "
\n",
+ " \n",
+ " | 17 | \n",
+ " T1547.001 | \n",
+ " T1555 | \n",
+ " T1219 | \n",
+ " T1071 | \n",
+ " T1566.001 | \n",
+ "
\n",
+ " \n",
+ " | 18 | \n",
+ " T1548 | \n",
+ " T1555.003 | \n",
+ " T1222 | \n",
+ " T1112 | \n",
+ " T1590 | \n",
+ "
\n",
+ " \n",
+ " | 19 | \n",
+ " T1548.002 | \n",
+ " T1562 | \n",
+ " T1222.001 | \n",
+ " T1204 | \n",
+ " T1590.005 | \n",
+ "
\n",
+ " \n",
+ " | 20 | \n",
+ " T1555 | \n",
+ " T1562.001 | \n",
+ " T1489 | \n",
+ " T1204.001 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | 21 | \n",
+ " T1555.003 | \n",
+ " T1566 | \n",
+ " T1531 | \n",
+ " T1218 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | 22 | \n",
+ " T1559.001 | \n",
+ " T1566.001 | \n",
+ " T1543 | \n",
+ " T1218.010 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | 23 | \n",
+ " T1562 | \n",
+ " NaN | \n",
+ " T1543.003 | \n",
+ " T1482 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | 24 | \n",
+ " T1562.001 | \n",
+ " NaN | \n",
+ " T1547 | \n",
+ " T1543 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | 25 | \n",
+ " T1566 | \n",
+ " NaN | \n",
+ " T1547.001 | \n",
+ " T1543.003 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | 26 | \n",
+ " T1566.001 | \n",
+ " NaN | \n",
+ " T1548 | \n",
+ " T1547 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | 27 | \n",
+ " T1592 | \n",
+ " NaN | \n",
+ " T1548.002 | \n",
+ " T1547.001 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | 28 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " T1555 | \n",
+ " T1562 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | 29 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " T1555.003 | \n",
+ " T1562.001 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | 30 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " T1562 | \n",
+ " T1566 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | 31 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " T1562.001 | \n",
+ " T1566.001 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | 32 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " T1562.004 | \n",
+ " T1566.002 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | 33 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " T1564 | \n",
+ " T1569 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | 34 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " T1564.001 | \n",
+ " T1569.002 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | 35 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " T1566 | \n",
+ " T1574 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | 36 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " T1566.001 | \n",
+ " T1574.001 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | 37 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " T1569 | \n",
+ " T1574.002 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | 38 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " T1569.002 | \n",
+ " T1592 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | 39 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " T1590 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | 40 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " T1590.005 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " Remcos AgentTesla Azorult Qakbot Trickbot\n",
+ "0 T1036 T1014 T1021 T1016 T1021\n",
+ "1 T1055 T1036 T1021.001 T1016.001 T1021.002\n",
+ "2 T1055.001 T1053 T1036 T1027 T1027\n",
+ "3 T1059 T1053.005 T1049 T1033 T1036\n",
+ "4 T1059.005 T1059 T1053 T1036 T1053\n",
+ "5 T1059.007 T1059.001 T1053.005 T1036.003 T1053.005\n",
+ "6 T1070 T1068 T1059 T1047 T1055\n",
+ "7 T1112 T1071 T1059.001 T1049 T1059\n",
+ "8 T1113 T1071.003 T1059.003 T1053 T1087\n",
+ "9 T1134 T1204 T1069 T1053.005 T1087.002\n",
+ "10 T1134.004 T1204.001 T1069.001 T1055 T1218\n",
+ "11 T1204 T1218 T1071 T1055.001 T1218.005\n",
+ "12 T1204.001 T1218.001 T1112 T1055.002 T1218.011\n",
+ "13 T1218 T1543 T1136 T1059 T1543\n",
+ "14 T1218.010 T1543.003 T1136.001 T1059.001 T1562\n",
+ "15 T1543 T1548 T1204 T1059.003 T1562.001\n",
+ "16 T1547 T1548.002 T1204.001 T1059.007 T1566\n",
+ "17 T1547.001 T1555 T1219 T1071 T1566.001\n",
+ "18 T1548 T1555.003 T1222 T1112 T1590\n",
+ "19 T1548.002 T1562 T1222.001 T1204 T1590.005\n",
+ "20 T1555 T1562.001 T1489 T1204.001 NaN\n",
+ "21 T1555.003 T1566 T1531 T1218 NaN\n",
+ "22 T1559.001 T1566.001 T1543 T1218.010 NaN\n",
+ "23 T1562 NaN T1543.003 T1482 NaN\n",
+ "24 T1562.001 NaN T1547 T1543 NaN\n",
+ "25 T1566 NaN T1547.001 T1543.003 NaN\n",
+ "26 T1566.001 NaN T1548 T1547 NaN\n",
+ "27 T1592 NaN T1548.002 T1547.001 NaN\n",
+ "28 NaN NaN T1555 T1562 NaN\n",
+ "29 NaN NaN T1555.003 T1562.001 NaN\n",
+ "30 NaN NaN T1562 T1566 NaN\n",
+ "31 NaN NaN T1562.001 T1566.001 NaN\n",
+ "32 NaN NaN T1562.004 T1566.002 NaN\n",
+ "33 NaN NaN T1564 T1569 NaN\n",
+ "34 NaN NaN T1564.001 T1569.002 NaN\n",
+ "35 NaN NaN T1566 T1574 NaN\n",
+ "36 NaN NaN T1566.001 T1574.001 NaN\n",
+ "37 NaN NaN T1569 T1574.002 NaN\n",
+ "38 NaN NaN T1569.002 T1592 NaN\n",
+ "39 NaN NaN T1590 NaN NaN\n",
+ "40 NaN NaN T1590.005 NaN NaN"
+ ]
+ },
+ "execution_count": 6,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "df = pd.DataFrame({ key:pd.Series(value) for key, value in mitre_attack_story_dict.items() })\n",
+ "df = df.sort_values(by =[\"Remcos\", \"Azorult\", \"Qakbot\", \"Trickbot\", \"AgentTesla\"])\n",
+ "df\n",
+ " "
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "e1325b00-3932-4ba3-92ad-25d9d382354b",
+ "metadata": {
+ "tags": []
+ },
+ "source": [
+ "## Security Content mitre attack id Coverage for [\"Qakbot\", \"Azorult\", \"Remcos\", \"Trickbot\", \"AgentTesla\"]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "id": "2fb85a5d-d498-43c1-97a5-08da5c0f6c32",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ " \n",
+ " \n",
+ " | | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 5 malware coverage | \n",
+ " yellow | \n",
+ "
\n",
+ " \n",
+ " | 4 malware coverage | \n",
+ " orange | \n",
+ "
\n",
+ " \n",
+ " | 3 malware coverage | \n",
+ " lightgreen | \n",
+ "
\n",
+ " \n",
+ " | 2 malware coverage | \n",
+ " lightblue | \n",
+ "
\n",
+ " \n",
+ " | 1 malware coverage | \n",
+ " lightgray | \n",
+ "
\n",
+ " \n",
+ "
\n"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 7,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "show_legend()\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "id": "0868588f-3ab0-4065-be94-b6632544a204",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ " \n",
+ " \n",
+ " | | \n",
+ " Remcos | \n",
+ " AgentTesla | \n",
+ " Azorult | \n",
+ " Qakbot | \n",
+ " Trickbot | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 0 | \n",
+ " T1036 | \n",
+ " T1014 | \n",
+ " T1021 | \n",
+ " T1016 | \n",
+ " T1021 | \n",
+ "
\n",
+ " \n",
+ " | 1 | \n",
+ " T1055 | \n",
+ " T1036 | \n",
+ " T1021.001 | \n",
+ " T1016.001 | \n",
+ " T1021.002 | \n",
+ "
\n",
+ " \n",
+ " | 2 | \n",
+ " T1055.001 | \n",
+ " T1053 | \n",
+ " T1036 | \n",
+ " T1027 | \n",
+ " T1027 | \n",
+ "
\n",
+ " \n",
+ " | 3 | \n",
+ " T1059 | \n",
+ " T1053.005 | \n",
+ " T1049 | \n",
+ " T1033 | \n",
+ " T1036 | \n",
+ "
\n",
+ " \n",
+ " | 4 | \n",
+ " T1059.005 | \n",
+ " T1059 | \n",
+ " T1053 | \n",
+ " T1036 | \n",
+ " T1053 | \n",
+ "
\n",
+ " \n",
+ " | 5 | \n",
+ " T1059.007 | \n",
+ " T1059.001 | \n",
+ " T1053.005 | \n",
+ " T1036.003 | \n",
+ " T1053.005 | \n",
+ "
\n",
+ " \n",
+ " | 6 | \n",
+ " T1070 | \n",
+ " T1068 | \n",
+ " T1059 | \n",
+ " T1047 | \n",
+ " T1055 | \n",
+ "
\n",
+ " \n",
+ " | 7 | \n",
+ " T1112 | \n",
+ " T1071 | \n",
+ " T1059.001 | \n",
+ " T1049 | \n",
+ " T1059 | \n",
+ "
\n",
+ " \n",
+ " | 8 | \n",
+ " T1113 | \n",
+ " T1071.003 | \n",
+ " T1059.003 | \n",
+ " T1053 | \n",
+ " T1087 | \n",
+ "
\n",
+ " \n",
+ " | 9 | \n",
+ " T1134 | \n",
+ " T1204 | \n",
+ " T1069 | \n",
+ " T1053.005 | \n",
+ " T1087.002 | \n",
+ "
\n",
+ " \n",
+ " | 10 | \n",
+ " T1134.004 | \n",
+ " T1204.001 | \n",
+ " T1069.001 | \n",
+ " T1055 | \n",
+ " T1218 | \n",
+ "
\n",
+ " \n",
+ " | 11 | \n",
+ " T1204 | \n",
+ " T1218 | \n",
+ " T1071 | \n",
+ " T1055.001 | \n",
+ " T1218.005 | \n",
+ "
\n",
+ " \n",
+ " | 12 | \n",
+ " T1204.001 | \n",
+ " T1218.001 | \n",
+ " T1112 | \n",
+ " T1055.002 | \n",
+ " T1218.011 | \n",
+ "
\n",
+ " \n",
+ " | 13 | \n",
+ " T1218 | \n",
+ " T1543 | \n",
+ " T1136 | \n",
+ " T1059 | \n",
+ " T1543 | \n",
+ "
\n",
+ " \n",
+ " | 14 | \n",
+ " T1218.010 | \n",
+ " T1543.003 | \n",
+ " T1136.001 | \n",
+ " T1059.001 | \n",
+ " T1562 | \n",
+ "
\n",
+ " \n",
+ " | 15 | \n",
+ " T1543 | \n",
+ " T1548 | \n",
+ " T1204 | \n",
+ " T1059.003 | \n",
+ " T1562.001 | \n",
+ "
\n",
+ " \n",
+ " | 16 | \n",
+ " T1547 | \n",
+ " T1548.002 | \n",
+ " T1204.001 | \n",
+ " T1059.007 | \n",
+ " T1566 | \n",
+ "
\n",
+ " \n",
+ " | 17 | \n",
+ " T1547.001 | \n",
+ " T1555 | \n",
+ " T1219 | \n",
+ " T1071 | \n",
+ " T1566.001 | \n",
+ "
\n",
+ " \n",
+ " | 18 | \n",
+ " T1548 | \n",
+ " T1555.003 | \n",
+ " T1222 | \n",
+ " T1112 | \n",
+ " T1590 | \n",
+ "
\n",
+ " \n",
+ " | 19 | \n",
+ " T1548.002 | \n",
+ " T1562 | \n",
+ " T1222.001 | \n",
+ " T1204 | \n",
+ " T1590.005 | \n",
+ "
\n",
+ " \n",
+ " | 20 | \n",
+ " T1555 | \n",
+ " T1562.001 | \n",
+ " T1489 | \n",
+ " T1204.001 | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ " | 21 | \n",
+ " T1555.003 | \n",
+ " T1566 | \n",
+ " T1531 | \n",
+ " T1218 | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ " | 22 | \n",
+ " T1559.001 | \n",
+ " T1566.001 | \n",
+ " T1543 | \n",
+ " T1218.010 | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ " | 23 | \n",
+ " T1562 | \n",
+ " nan | \n",
+ " T1543.003 | \n",
+ " T1482 | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ " | 24 | \n",
+ " T1562.001 | \n",
+ " nan | \n",
+ " T1547 | \n",
+ " T1543 | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ " | 25 | \n",
+ " T1566 | \n",
+ " nan | \n",
+ " T1547.001 | \n",
+ " T1543.003 | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ " | 26 | \n",
+ " T1566.001 | \n",
+ " nan | \n",
+ " T1548 | \n",
+ " T1547 | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ " | 27 | \n",
+ " T1592 | \n",
+ " nan | \n",
+ " T1548.002 | \n",
+ " T1547.001 | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ " | 28 | \n",
+ " nan | \n",
+ " nan | \n",
+ " T1555 | \n",
+ " T1562 | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ " | 29 | \n",
+ " nan | \n",
+ " nan | \n",
+ " T1555.003 | \n",
+ " T1562.001 | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ " | 30 | \n",
+ " nan | \n",
+ " nan | \n",
+ " T1562 | \n",
+ " T1566 | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ " | 31 | \n",
+ " nan | \n",
+ " nan | \n",
+ " T1562.001 | \n",
+ " T1566.001 | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ " | 32 | \n",
+ " nan | \n",
+ " nan | \n",
+ " T1562.004 | \n",
+ " T1566.002 | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ " | 33 | \n",
+ " nan | \n",
+ " nan | \n",
+ " T1564 | \n",
+ " T1569 | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ " | 34 | \n",
+ " nan | \n",
+ " nan | \n",
+ " T1564.001 | \n",
+ " T1569.002 | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ " | 35 | \n",
+ " nan | \n",
+ " nan | \n",
+ " T1566 | \n",
+ " T1574 | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ " | 36 | \n",
+ " nan | \n",
+ " nan | \n",
+ " T1566.001 | \n",
+ " T1574.001 | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ " | 37 | \n",
+ " nan | \n",
+ " nan | \n",
+ " T1569 | \n",
+ " T1574.002 | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ " | 38 | \n",
+ " nan | \n",
+ " nan | \n",
+ " T1569.002 | \n",
+ " T1592 | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ " | 39 | \n",
+ " nan | \n",
+ " nan | \n",
+ " T1590 | \n",
+ " nan | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ " | 40 | \n",
+ " nan | \n",
+ " nan | \n",
+ " T1590.005 | \n",
+ " nan | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ "
\n"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 8,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "\n",
+ "df.style.applymap(highlight_cells)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "a7510444-c411-443e-b8b5-de788fb940c2",
+ "metadata": {
+ "tags": []
+ },
+ "source": [
+ "### Highlight Mitre Attack ID that detects all [\"Qakbot\", \"Azorult\", \"Remcos\", \"Trickbot\", \"AgentTesla\"]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "id": "fcc9a6f6-cd1d-4150-8896-ec1e12b50e68",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ " \n",
+ " \n",
+ " | | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 5 malware coverage | \n",
+ " yellow | \n",
+ "
\n",
+ " \n",
+ " | 4 malware coverage | \n",
+ " orange | \n",
+ "
\n",
+ " \n",
+ " | 3 malware coverage | \n",
+ " lightgreen | \n",
+ "
\n",
+ " \n",
+ " | 2 malware coverage | \n",
+ " lightblue | \n",
+ "
\n",
+ " \n",
+ " | 1 malware coverage | \n",
+ " lightgray | \n",
+ "
\n",
+ " \n",
+ "
\n"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 9,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "show_legend()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 10,
+ "id": "29cb6e5d-8929-4620-8707-917886b3107c",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ " \n",
+ " \n",
+ " | | \n",
+ " Remcos | \n",
+ " AgentTesla | \n",
+ " Azorult | \n",
+ " Qakbot | \n",
+ " Trickbot | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 0 | \n",
+ " T1036 | \n",
+ " T1014 | \n",
+ " T1021 | \n",
+ " T1016 | \n",
+ " T1021 | \n",
+ "
\n",
+ " \n",
+ " | 1 | \n",
+ " T1055 | \n",
+ " T1036 | \n",
+ " T1021.001 | \n",
+ " T1016.001 | \n",
+ " T1021.002 | \n",
+ "
\n",
+ " \n",
+ " | 2 | \n",
+ " T1055.001 | \n",
+ " T1053 | \n",
+ " T1036 | \n",
+ " T1027 | \n",
+ " T1027 | \n",
+ "
\n",
+ " \n",
+ " | 3 | \n",
+ " T1059 | \n",
+ " T1053.005 | \n",
+ " T1049 | \n",
+ " T1033 | \n",
+ " T1036 | \n",
+ "
\n",
+ " \n",
+ " | 4 | \n",
+ " T1059.005 | \n",
+ " T1059 | \n",
+ " T1053 | \n",
+ " T1036 | \n",
+ " T1053 | \n",
+ "
\n",
+ " \n",
+ " | 5 | \n",
+ " T1059.007 | \n",
+ " T1059.001 | \n",
+ " T1053.005 | \n",
+ " T1036.003 | \n",
+ " T1053.005 | \n",
+ "
\n",
+ " \n",
+ " | 6 | \n",
+ " T1070 | \n",
+ " T1068 | \n",
+ " T1059 | \n",
+ " T1047 | \n",
+ " T1055 | \n",
+ "
\n",
+ " \n",
+ " | 7 | \n",
+ " T1112 | \n",
+ " T1071 | \n",
+ " T1059.001 | \n",
+ " T1049 | \n",
+ " T1059 | \n",
+ "
\n",
+ " \n",
+ " | 8 | \n",
+ " T1113 | \n",
+ " T1071.003 | \n",
+ " T1059.003 | \n",
+ " T1053 | \n",
+ " T1087 | \n",
+ "
\n",
+ " \n",
+ " | 9 | \n",
+ " T1134 | \n",
+ " T1204 | \n",
+ " T1069 | \n",
+ " T1053.005 | \n",
+ " T1087.002 | \n",
+ "
\n",
+ " \n",
+ " | 10 | \n",
+ " T1134.004 | \n",
+ " T1204.001 | \n",
+ " T1069.001 | \n",
+ " T1055 | \n",
+ " T1218 | \n",
+ "
\n",
+ " \n",
+ " | 11 | \n",
+ " T1204 | \n",
+ " T1218 | \n",
+ " T1071 | \n",
+ " T1055.001 | \n",
+ " T1218.005 | \n",
+ "
\n",
+ " \n",
+ " | 12 | \n",
+ " T1204.001 | \n",
+ " T1218.001 | \n",
+ " T1112 | \n",
+ " T1055.002 | \n",
+ " T1218.011 | \n",
+ "
\n",
+ " \n",
+ " | 13 | \n",
+ " T1218 | \n",
+ " T1543 | \n",
+ " T1136 | \n",
+ " T1059 | \n",
+ " T1543 | \n",
+ "
\n",
+ " \n",
+ " | 14 | \n",
+ " T1218.010 | \n",
+ " T1543.003 | \n",
+ " T1136.001 | \n",
+ " T1059.001 | \n",
+ " T1562 | \n",
+ "
\n",
+ " \n",
+ " | 15 | \n",
+ " T1543 | \n",
+ " T1548 | \n",
+ " T1204 | \n",
+ " T1059.003 | \n",
+ " T1562.001 | \n",
+ "
\n",
+ " \n",
+ " | 16 | \n",
+ " T1547 | \n",
+ " T1548.002 | \n",
+ " T1204.001 | \n",
+ " T1059.007 | \n",
+ " T1566 | \n",
+ "
\n",
+ " \n",
+ " | 17 | \n",
+ " T1547.001 | \n",
+ " T1555 | \n",
+ " T1219 | \n",
+ " T1071 | \n",
+ " T1566.001 | \n",
+ "
\n",
+ " \n",
+ " | 18 | \n",
+ " T1548 | \n",
+ " T1555.003 | \n",
+ " T1222 | \n",
+ " T1112 | \n",
+ " T1590 | \n",
+ "
\n",
+ " \n",
+ " | 19 | \n",
+ " T1548.002 | \n",
+ " T1562 | \n",
+ " T1222.001 | \n",
+ " T1204 | \n",
+ " T1590.005 | \n",
+ "
\n",
+ " \n",
+ " | 20 | \n",
+ " T1555 | \n",
+ " T1562.001 | \n",
+ " T1489 | \n",
+ " T1204.001 | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ " | 21 | \n",
+ " T1555.003 | \n",
+ " T1566 | \n",
+ " T1531 | \n",
+ " T1218 | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ " | 22 | \n",
+ " T1559.001 | \n",
+ " T1566.001 | \n",
+ " T1543 | \n",
+ " T1218.010 | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ " | 23 | \n",
+ " T1562 | \n",
+ " nan | \n",
+ " T1543.003 | \n",
+ " T1482 | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ " | 24 | \n",
+ " T1562.001 | \n",
+ " nan | \n",
+ " T1547 | \n",
+ " T1543 | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ " | 25 | \n",
+ " T1566 | \n",
+ " nan | \n",
+ " T1547.001 | \n",
+ " T1543.003 | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ " | 26 | \n",
+ " T1566.001 | \n",
+ " nan | \n",
+ " T1548 | \n",
+ " T1547 | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ " | 27 | \n",
+ " T1592 | \n",
+ " nan | \n",
+ " T1548.002 | \n",
+ " T1547.001 | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ " | 28 | \n",
+ " nan | \n",
+ " nan | \n",
+ " T1555 | \n",
+ " T1562 | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ " | 29 | \n",
+ " nan | \n",
+ " nan | \n",
+ " T1555.003 | \n",
+ " T1562.001 | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ " | 30 | \n",
+ " nan | \n",
+ " nan | \n",
+ " T1562 | \n",
+ " T1566 | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ " | 31 | \n",
+ " nan | \n",
+ " nan | \n",
+ " T1562.001 | \n",
+ " T1566.001 | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ " | 32 | \n",
+ " nan | \n",
+ " nan | \n",
+ " T1562.004 | \n",
+ " T1566.002 | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ " | 33 | \n",
+ " nan | \n",
+ " nan | \n",
+ " T1564 | \n",
+ " T1569 | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ " | 34 | \n",
+ " nan | \n",
+ " nan | \n",
+ " T1564.001 | \n",
+ " T1569.002 | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ " | 35 | \n",
+ " nan | \n",
+ " nan | \n",
+ " T1566 | \n",
+ " T1574 | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ " | 36 | \n",
+ " nan | \n",
+ " nan | \n",
+ " T1566.001 | \n",
+ " T1574.001 | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ " | 37 | \n",
+ " nan | \n",
+ " nan | \n",
+ " T1569 | \n",
+ " T1574.002 | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ " | 38 | \n",
+ " nan | \n",
+ " nan | \n",
+ " T1569.002 | \n",
+ " T1592 | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ " | 39 | \n",
+ " nan | \n",
+ " nan | \n",
+ " T1590 | \n",
+ " nan | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ " | 40 | \n",
+ " nan | \n",
+ " nan | \n",
+ " T1590.005 | \n",
+ " nan | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ "
\n"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 10,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "df.style.applymap(highlight_cells_5)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "c30e6a45-7728-4e91-aa34-88242a623b0c",
+ "metadata": {},
+ "source": [
+ "### Summary of Mitre Attack ID that detects all [\"Qakbot\", \"Azorult\", \"Remcos\", \"Trickbot\", \"AgentTesla\"]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 11,
+ "id": "91f6821c-20ed-4c4d-968a-267cdf9bea36",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " 0 | \n",
+ " 1 | \n",
+ " 2 | \n",
+ " 3 | \n",
+ " 4 | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | T1562.001 | \n",
+ " AgentTesla | \n",
+ " Azorult | \n",
+ " Qakbot | \n",
+ " Remcos | \n",
+ " Trickbot | \n",
+ "
\n",
+ " \n",
+ " | T1562 | \n",
+ " AgentTesla | \n",
+ " Azorult | \n",
+ " Qakbot | \n",
+ " Remcos | \n",
+ " Trickbot | \n",
+ "
\n",
+ " \n",
+ " | T1059 | \n",
+ " AgentTesla | \n",
+ " Azorult | \n",
+ " Qakbot | \n",
+ " Remcos | \n",
+ " Trickbot | \n",
+ "
\n",
+ " \n",
+ " | T1566.001 | \n",
+ " AgentTesla | \n",
+ " Azorult | \n",
+ " Qakbot | \n",
+ " Remcos | \n",
+ " Trickbot | \n",
+ "
\n",
+ " \n",
+ " | T1566 | \n",
+ " AgentTesla | \n",
+ " Azorult | \n",
+ " Qakbot | \n",
+ " Remcos | \n",
+ " Trickbot | \n",
+ "
\n",
+ " \n",
+ " | T1036 | \n",
+ " AgentTesla | \n",
+ " Azorult | \n",
+ " Qakbot | \n",
+ " Remcos | \n",
+ " Trickbot | \n",
+ "
\n",
+ " \n",
+ " | T1543 | \n",
+ " AgentTesla | \n",
+ " Azorult | \n",
+ " Qakbot | \n",
+ " Remcos | \n",
+ " Trickbot | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " 0 1 2 3 4\n",
+ "T1562.001 AgentTesla Azorult Qakbot Remcos Trickbot\n",
+ "T1562 AgentTesla Azorult Qakbot Remcos Trickbot\n",
+ "T1059 AgentTesla Azorult Qakbot Remcos Trickbot\n",
+ "T1566.001 AgentTesla Azorult Qakbot Remcos Trickbot\n",
+ "T1566 AgentTesla Azorult Qakbot Remcos Trickbot\n",
+ "T1036 AgentTesla Azorult Qakbot Remcos Trickbot\n",
+ "T1543 AgentTesla Azorult Qakbot Remcos Trickbot"
+ ]
+ },
+ "execution_count": 11,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "\n",
+ "temp_dict = summary_table_of_id(mitre_attack_tid_dict, 5)\n",
+ "tdf = pd.DataFrame.from_dict(temp_dict, orient='index')\n",
+ "tdf"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "77c29341-1e19-404b-acd6-7cc20cccc1dc",
+ "metadata": {},
+ "source": [
+ "### detection list for Mitre Attack ID that detects all [\"Qakbot\", \"Azorult\", \"Remcos\", \"Trickbot\", \"AgentTesla\"]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 12,
+ "id": "05d30039-ae22-4ea1-b381-064d8826cb57",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "(7, 5)\n"
+ ]
+ },
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " AgentTesla | \n",
+ " Azorult | \n",
+ " Qakbot | \n",
+ " Remcos | \n",
+ " Trickbot | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | T1562.001 | \n",
+ " [add_or_set_windows_defender_exclusion.yml, excessive_usage_of_taskkill.yml, powershell_windows_defender_exclusion_commands.yml] | \n",
+ " [attempt_to_stop_security_service.yml, disable_defender_blockatfirstseen_feature.yml, disable_defender_enhanced_notification.yml, disable_defender_spynet_reporting.yml, disable_defender_submit_samples_consent_feature.yml, disable_show_hidden_files.yml, disable_windows_behavior_monitoring.yml, excessive_usage_of_taskkill.yml, hide_user_account_from_sign_in_screen.yml, windows_defender_exclusion_registry_entry.yml, windows_disableantispyware_reg.yml, windows_impair_defense_add_xml_applocker_rules.yml, windows_impair_defense_deny_security_software_with_applocker.yml, wmic_noninteractive_app_uninstallation.yml] | \n",
+ " [disable_defender_spynet_reporting.yml, windows_defender_exclusion_registry_entry.yml] | \n",
+ " [add_or_set_windows_defender_exclusion.yml, powershell_windows_defender_exclusion_commands.yml, windows_defender_exclusion_registry_entry.yml] | \n",
+ " [attempt_to_stop_security_service.yml] | \n",
+ "
\n",
+ " \n",
+ " | T1562 | \n",
+ " [add_or_set_windows_defender_exclusion.yml, excessive_usage_of_taskkill.yml, powershell_windows_defender_exclusion_commands.yml] | \n",
+ " [attempt_to_stop_security_service.yml, disable_defender_blockatfirstseen_feature.yml, disable_defender_enhanced_notification.yml, disable_defender_spynet_reporting.yml, disable_defender_submit_samples_consent_feature.yml, disable_show_hidden_files.yml, disable_windows_behavior_monitoring.yml, excessive_usage_of_taskkill.yml, firewall_allowed_program_enable.yml, hide_user_account_from_sign_in_screen.yml, processes_launching_netsh.yml, windows_defender_exclusion_registry_entry.yml, windows_disableantispyware_reg.yml, windows_impair_defense_add_xml_applocker_rules.yml, windows_impair_defense_deny_security_software_with_applocker.yml, wmic_noninteractive_app_uninstallation.yml] | \n",
+ " [disable_defender_spynet_reporting.yml, windows_defender_exclusion_registry_entry.yml] | \n",
+ " [add_or_set_windows_defender_exclusion.yml, powershell_windows_defender_exclusion_commands.yml, windows_defender_exclusion_registry_entry.yml] | \n",
+ " [attempt_to_stop_security_service.yml] | \n",
+ "
\n",
+ " \n",
+ " | T1059 | \n",
+ " [powershell___connect_to_internet_with_hidden_window.yml, powershell_loading_dotnet_into_memory_via_reflection.yml] | \n",
+ " [chcp_command_execution.yml, cmd_carry_out_string_command_parameter.yml, detect_use_of_cmd_exe_to_launch_script_interpreters.yml] | \n",
+ " [cmd_carry_out_string_command_parameter.yml, cmdline_tool_not_executed_in_cmd_shell.yml, wermgr_process_spawned_cmd_or_powershell_process.yml] | \n",
+ " [jscript_execution_using_cscript_app.yml, process_writing_dynamicwrapperx.yml, suspicious_process_dns_query_known_abuse_web_services.yml, vbscript_execution_using_wscript_app.yml] | \n",
+ " [wermgr_process_spawned_cmd_or_powershell_process.yml] | \n",
+ "
\n",
+ " \n",
+ " | T1566.001 | \n",
+ " [office_application_drop_executable.yml, office_application_spawn_rundll32_process.yml, office_document_executing_macro_code.yml, office_product_spawn_cmd_process.yml, office_product_spawning_certutil.yml, windows_iso_lnk_file_creation.yml, windows_phishing_recent_iso_exec_registry.yml] | \n",
+ " [office_document_executing_macro_code.yml, office_product_spawn_cmd_process.yml, office_product_spawning_mshta.yml, windows_iso_lnk_file_creation.yml, windows_phishing_recent_iso_exec_registry.yml] | \n",
+ " [office_application_spawn_regsvr32_process.yml, office_document_executing_macro_code.yml, office_product_spawn_cmd_process.yml, windows_iso_lnk_file_creation.yml, windows_phishing_recent_iso_exec_registry.yml] | \n",
+ " [office_document_executing_macro_code.yml, office_product_spawn_cmd_process.yml, office_product_spawning_windows_script_host.yml, windows_iso_lnk_file_creation.yml, windows_phishing_recent_iso_exec_registry.yml] | \n",
+ " [office_application_spawn_rundll32_process.yml, office_document_executing_macro_code.yml, office_product_spawn_cmd_process.yml, office_product_spawning_certutil.yml] | \n",
+ "
\n",
+ " \n",
+ " | T1566 | \n",
+ " [office_application_drop_executable.yml, office_application_spawn_rundll32_process.yml, office_document_executing_macro_code.yml, office_product_spawn_cmd_process.yml, office_product_spawning_certutil.yml, windows_iso_lnk_file_creation.yml, windows_phishing_recent_iso_exec_registry.yml] | \n",
+ " [office_document_executing_macro_code.yml, office_product_spawn_cmd_process.yml, office_product_spawning_mshta.yml, windows_iso_lnk_file_creation.yml, windows_phishing_recent_iso_exec_registry.yml] | \n",
+ " [office_application_spawn_regsvr32_process.yml, office_document_executing_macro_code.yml, office_product_spawn_cmd_process.yml, process_creating_lnk_file_in_suspicious_location.yml, windows_iso_lnk_file_creation.yml, windows_phishing_recent_iso_exec_registry.yml] | \n",
+ " [office_document_executing_macro_code.yml, office_product_spawn_cmd_process.yml, office_product_spawning_windows_script_host.yml, windows_iso_lnk_file_creation.yml, windows_phishing_recent_iso_exec_registry.yml] | \n",
+ " [office_application_spawn_rundll32_process.yml, office_document_executing_macro_code.yml, office_product_spawn_cmd_process.yml, office_product_spawning_certutil.yml] | \n",
+ "
\n",
+ " \n",
+ " | T1036 | \n",
+ " [executables_or_script_creation_in_suspicious_path.yml] | \n",
+ " [executables_or_script_creation_in_suspicious_path.yml] | \n",
+ " [executables_or_script_creation_in_suspicious_path.yml, suspicious_copy_on_system32.yml, system_processes_run_from_unexpected_locations.yml] | \n",
+ " [executables_or_script_creation_in_suspicious_path.yml] | \n",
+ " [executables_or_script_creation_in_suspicious_path.yml] | \n",
+ "
\n",
+ " \n",
+ " | T1543 | \n",
+ " [suspicious_driver_loaded_path.yml, suspicious_process_file_path.yml] | \n",
+ " [sc_exe_manipulating_windows_services.yml, suspicious_process_file_path.yml] | \n",
+ " [services_exe_lolbas_execution_process_spawn.yml, suspicious_process_file_path.yml] | \n",
+ " [suspicious_process_file_path.yml, wscript_or_cscript_suspicious_child_process.yml] | \n",
+ " [suspicious_process_file_path.yml] | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " AgentTesla \\\n",
+ "T1562.001 [add_or_set_windows_defender_exclusion.yml, excessive_usage_of_taskkill.yml, powershell_windows_defender_exclusion_commands.yml] \n",
+ "T1562 [add_or_set_windows_defender_exclusion.yml, excessive_usage_of_taskkill.yml, powershell_windows_defender_exclusion_commands.yml] \n",
+ "T1059 [powershell___connect_to_internet_with_hidden_window.yml, powershell_loading_dotnet_into_memory_via_reflection.yml] \n",
+ "T1566.001 [office_application_drop_executable.yml, office_application_spawn_rundll32_process.yml, office_document_executing_macro_code.yml, office_product_spawn_cmd_process.yml, office_product_spawning_certutil.yml, windows_iso_lnk_file_creation.yml, windows_phishing_recent_iso_exec_registry.yml] \n",
+ "T1566 [office_application_drop_executable.yml, office_application_spawn_rundll32_process.yml, office_document_executing_macro_code.yml, office_product_spawn_cmd_process.yml, office_product_spawning_certutil.yml, windows_iso_lnk_file_creation.yml, windows_phishing_recent_iso_exec_registry.yml] \n",
+ "T1036 [executables_or_script_creation_in_suspicious_path.yml] \n",
+ "T1543 [suspicious_driver_loaded_path.yml, suspicious_process_file_path.yml] \n",
+ "\n",
+ " Azorult \\\n",
+ "T1562.001 [attempt_to_stop_security_service.yml, disable_defender_blockatfirstseen_feature.yml, disable_defender_enhanced_notification.yml, disable_defender_spynet_reporting.yml, disable_defender_submit_samples_consent_feature.yml, disable_show_hidden_files.yml, disable_windows_behavior_monitoring.yml, excessive_usage_of_taskkill.yml, hide_user_account_from_sign_in_screen.yml, windows_defender_exclusion_registry_entry.yml, windows_disableantispyware_reg.yml, windows_impair_defense_add_xml_applocker_rules.yml, windows_impair_defense_deny_security_software_with_applocker.yml, wmic_noninteractive_app_uninstallation.yml] \n",
+ "T1562 [attempt_to_stop_security_service.yml, disable_defender_blockatfirstseen_feature.yml, disable_defender_enhanced_notification.yml, disable_defender_spynet_reporting.yml, disable_defender_submit_samples_consent_feature.yml, disable_show_hidden_files.yml, disable_windows_behavior_monitoring.yml, excessive_usage_of_taskkill.yml, firewall_allowed_program_enable.yml, hide_user_account_from_sign_in_screen.yml, processes_launching_netsh.yml, windows_defender_exclusion_registry_entry.yml, windows_disableantispyware_reg.yml, windows_impair_defense_add_xml_applocker_rules.yml, windows_impair_defense_deny_security_software_with_applocker.yml, wmic_noninteractive_app_uninstallation.yml] \n",
+ "T1059 [chcp_command_execution.yml, cmd_carry_out_string_command_parameter.yml, detect_use_of_cmd_exe_to_launch_script_interpreters.yml] \n",
+ "T1566.001 [office_document_executing_macro_code.yml, office_product_spawn_cmd_process.yml, office_product_spawning_mshta.yml, windows_iso_lnk_file_creation.yml, windows_phishing_recent_iso_exec_registry.yml] \n",
+ "T1566 [office_document_executing_macro_code.yml, office_product_spawn_cmd_process.yml, office_product_spawning_mshta.yml, windows_iso_lnk_file_creation.yml, windows_phishing_recent_iso_exec_registry.yml] \n",
+ "T1036 [executables_or_script_creation_in_suspicious_path.yml] \n",
+ "T1543 [sc_exe_manipulating_windows_services.yml, suspicious_process_file_path.yml] \n",
+ "\n",
+ " Qakbot \\\n",
+ "T1562.001 [disable_defender_spynet_reporting.yml, windows_defender_exclusion_registry_entry.yml] \n",
+ "T1562 [disable_defender_spynet_reporting.yml, windows_defender_exclusion_registry_entry.yml] \n",
+ "T1059 [cmd_carry_out_string_command_parameter.yml, cmdline_tool_not_executed_in_cmd_shell.yml, wermgr_process_spawned_cmd_or_powershell_process.yml] \n",
+ "T1566.001 [office_application_spawn_regsvr32_process.yml, office_document_executing_macro_code.yml, office_product_spawn_cmd_process.yml, windows_iso_lnk_file_creation.yml, windows_phishing_recent_iso_exec_registry.yml] \n",
+ "T1566 [office_application_spawn_regsvr32_process.yml, office_document_executing_macro_code.yml, office_product_spawn_cmd_process.yml, process_creating_lnk_file_in_suspicious_location.yml, windows_iso_lnk_file_creation.yml, windows_phishing_recent_iso_exec_registry.yml] \n",
+ "T1036 [executables_or_script_creation_in_suspicious_path.yml, suspicious_copy_on_system32.yml, system_processes_run_from_unexpected_locations.yml] \n",
+ "T1543 [services_exe_lolbas_execution_process_spawn.yml, suspicious_process_file_path.yml] \n",
+ "\n",
+ " Remcos \\\n",
+ "T1562.001 [add_or_set_windows_defender_exclusion.yml, powershell_windows_defender_exclusion_commands.yml, windows_defender_exclusion_registry_entry.yml] \n",
+ "T1562 [add_or_set_windows_defender_exclusion.yml, powershell_windows_defender_exclusion_commands.yml, windows_defender_exclusion_registry_entry.yml] \n",
+ "T1059 [jscript_execution_using_cscript_app.yml, process_writing_dynamicwrapperx.yml, suspicious_process_dns_query_known_abuse_web_services.yml, vbscript_execution_using_wscript_app.yml] \n",
+ "T1566.001 [office_document_executing_macro_code.yml, office_product_spawn_cmd_process.yml, office_product_spawning_windows_script_host.yml, windows_iso_lnk_file_creation.yml, windows_phishing_recent_iso_exec_registry.yml] \n",
+ "T1566 [office_document_executing_macro_code.yml, office_product_spawn_cmd_process.yml, office_product_spawning_windows_script_host.yml, windows_iso_lnk_file_creation.yml, windows_phishing_recent_iso_exec_registry.yml] \n",
+ "T1036 [executables_or_script_creation_in_suspicious_path.yml] \n",
+ "T1543 [suspicious_process_file_path.yml, wscript_or_cscript_suspicious_child_process.yml] \n",
+ "\n",
+ " Trickbot \n",
+ "T1562.001 [attempt_to_stop_security_service.yml] \n",
+ "T1562 [attempt_to_stop_security_service.yml] \n",
+ "T1059 [wermgr_process_spawned_cmd_or_powershell_process.yml] \n",
+ "T1566.001 [office_application_spawn_rundll32_process.yml, office_document_executing_macro_code.yml, office_product_spawn_cmd_process.yml, office_product_spawning_certutil.yml] \n",
+ "T1566 [office_application_spawn_rundll32_process.yml, office_document_executing_macro_code.yml, office_product_spawn_cmd_process.yml, office_product_spawning_certutil.yml] \n",
+ "T1036 [executables_or_script_creation_in_suspicious_path.yml] \n",
+ "T1543 [suspicious_process_file_path.yml] "
+ ]
+ },
+ "execution_count": 12,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "det_table_dict = detection_list_by_id(temp_dict)\n",
+ "tdf = pd.DataFrame.from_dict(det_table_dict, orient='index')\n",
+ "print(tdf.shape)\n",
+ "tdf "
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "2f50a79c-075e-46ea-a00e-c535f01f304f",
+ "metadata": {},
+ "source": [
+ "### detection count per mitre attack id in each malware family"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 13,
+ "id": "bd5233dd-a4fd-49bf-86ff-f46cbb6f9ce9",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " AgentTesla | \n",
+ " Azorult | \n",
+ " Qakbot | \n",
+ " Remcos | \n",
+ " Trickbot | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | T1562.001 | \n",
+ " (3)-detection count | \n",
+ " (14)-detection count | \n",
+ " (2)-detection count | \n",
+ " (3)-detection count | \n",
+ " (1)-detection count | \n",
+ "
\n",
+ " \n",
+ " | T1562 | \n",
+ " (3)-detection count | \n",
+ " (16)-detection count | \n",
+ " (2)-detection count | \n",
+ " (3)-detection count | \n",
+ " (1)-detection count | \n",
+ "
\n",
+ " \n",
+ " | T1059 | \n",
+ " (2)-detection count | \n",
+ " (3)-detection count | \n",
+ " (3)-detection count | \n",
+ " (4)-detection count | \n",
+ " (1)-detection count | \n",
+ "
\n",
+ " \n",
+ " | T1566.001 | \n",
+ " (7)-detection count | \n",
+ " (5)-detection count | \n",
+ " (5)-detection count | \n",
+ " (5)-detection count | \n",
+ " (4)-detection count | \n",
+ "
\n",
+ " \n",
+ " | T1566 | \n",
+ " (7)-detection count | \n",
+ " (5)-detection count | \n",
+ " (6)-detection count | \n",
+ " (5)-detection count | \n",
+ " (4)-detection count | \n",
+ "
\n",
+ " \n",
+ " | T1036 | \n",
+ " (1)-detection count | \n",
+ " (1)-detection count | \n",
+ " (3)-detection count | \n",
+ " (1)-detection count | \n",
+ " (1)-detection count | \n",
+ "
\n",
+ " \n",
+ " | T1543 | \n",
+ " (2)-detection count | \n",
+ " (2)-detection count | \n",
+ " (2)-detection count | \n",
+ " (2)-detection count | \n",
+ " (1)-detection count | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " AgentTesla Azorult Qakbot \\\n",
+ "T1562.001 (3)-detection count (14)-detection count (2)-detection count \n",
+ "T1562 (3)-detection count (16)-detection count (2)-detection count \n",
+ "T1059 (2)-detection count (3)-detection count (3)-detection count \n",
+ "T1566.001 (7)-detection count (5)-detection count (5)-detection count \n",
+ "T1566 (7)-detection count (5)-detection count (6)-detection count \n",
+ "T1036 (1)-detection count (1)-detection count (3)-detection count \n",
+ "T1543 (2)-detection count (2)-detection count (2)-detection count \n",
+ "\n",
+ " Remcos Trickbot \n",
+ "T1562.001 (3)-detection count (1)-detection count \n",
+ "T1562 (3)-detection count (1)-detection count \n",
+ "T1059 (4)-detection count (1)-detection count \n",
+ "T1566.001 (5)-detection count (4)-detection count \n",
+ "T1566 (5)-detection count (4)-detection count \n",
+ "T1036 (1)-detection count (1)-detection count \n",
+ "T1543 (2)-detection count (1)-detection count "
+ ]
+ },
+ "execution_count": 13,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "detection_list_by_count(det_table_dict)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "a7cbd7a7-46d2-464d-9af7-d1a65c87b822",
+ "metadata": {},
+ "source": [
+ "### Highlight Mitre Attack ID that detects 4/5 malware family"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 14,
+ "id": "2a32699e-442b-458f-9b24-bb753efc5325",
+ "metadata": {
+ "tags": []
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ " \n",
+ " \n",
+ " | | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 5 malware coverage | \n",
+ " yellow | \n",
+ "
\n",
+ " \n",
+ " | 4 malware coverage | \n",
+ " orange | \n",
+ "
\n",
+ " \n",
+ " | 3 malware coverage | \n",
+ " lightgreen | \n",
+ "
\n",
+ " \n",
+ " | 2 malware coverage | \n",
+ " lightblue | \n",
+ "
\n",
+ " \n",
+ " | 1 malware coverage | \n",
+ " lightgray | \n",
+ "
\n",
+ " \n",
+ "
\n"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 14,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "show_legend()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 15,
+ "id": "cdad9857-37ff-40a5-8cbd-532cb23f6373",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ " \n",
+ " \n",
+ " | | \n",
+ " Remcos | \n",
+ " AgentTesla | \n",
+ " Azorult | \n",
+ " Qakbot | \n",
+ " Trickbot | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 0 | \n",
+ " T1036 | \n",
+ " T1014 | \n",
+ " T1021 | \n",
+ " T1016 | \n",
+ " T1021 | \n",
+ "
\n",
+ " \n",
+ " | 1 | \n",
+ " T1055 | \n",
+ " T1036 | \n",
+ " T1021.001 | \n",
+ " T1016.001 | \n",
+ " T1021.002 | \n",
+ "
\n",
+ " \n",
+ " | 2 | \n",
+ " T1055.001 | \n",
+ " T1053 | \n",
+ " T1036 | \n",
+ " T1027 | \n",
+ " T1027 | \n",
+ "
\n",
+ " \n",
+ " | 3 | \n",
+ " T1059 | \n",
+ " T1053.005 | \n",
+ " T1049 | \n",
+ " T1033 | \n",
+ " T1036 | \n",
+ "
\n",
+ " \n",
+ " | 4 | \n",
+ " T1059.005 | \n",
+ " T1059 | \n",
+ " T1053 | \n",
+ " T1036 | \n",
+ " T1053 | \n",
+ "
\n",
+ " \n",
+ " | 5 | \n",
+ " T1059.007 | \n",
+ " T1059.001 | \n",
+ " T1053.005 | \n",
+ " T1036.003 | \n",
+ " T1053.005 | \n",
+ "
\n",
+ " \n",
+ " | 6 | \n",
+ " T1070 | \n",
+ " T1068 | \n",
+ " T1059 | \n",
+ " T1047 | \n",
+ " T1055 | \n",
+ "
\n",
+ " \n",
+ " | 7 | \n",
+ " T1112 | \n",
+ " T1071 | \n",
+ " T1059.001 | \n",
+ " T1049 | \n",
+ " T1059 | \n",
+ "
\n",
+ " \n",
+ " | 8 | \n",
+ " T1113 | \n",
+ " T1071.003 | \n",
+ " T1059.003 | \n",
+ " T1053 | \n",
+ " T1087 | \n",
+ "
\n",
+ " \n",
+ " | 9 | \n",
+ " T1134 | \n",
+ " T1204 | \n",
+ " T1069 | \n",
+ " T1053.005 | \n",
+ " T1087.002 | \n",
+ "
\n",
+ " \n",
+ " | 10 | \n",
+ " T1134.004 | \n",
+ " T1204.001 | \n",
+ " T1069.001 | \n",
+ " T1055 | \n",
+ " T1218 | \n",
+ "
\n",
+ " \n",
+ " | 11 | \n",
+ " T1204 | \n",
+ " T1218 | \n",
+ " T1071 | \n",
+ " T1055.001 | \n",
+ " T1218.005 | \n",
+ "
\n",
+ " \n",
+ " | 12 | \n",
+ " T1204.001 | \n",
+ " T1218.001 | \n",
+ " T1112 | \n",
+ " T1055.002 | \n",
+ " T1218.011 | \n",
+ "
\n",
+ " \n",
+ " | 13 | \n",
+ " T1218 | \n",
+ " T1543 | \n",
+ " T1136 | \n",
+ " T1059 | \n",
+ " T1543 | \n",
+ "
\n",
+ " \n",
+ " | 14 | \n",
+ " T1218.010 | \n",
+ " T1543.003 | \n",
+ " T1136.001 | \n",
+ " T1059.001 | \n",
+ " T1562 | \n",
+ "
\n",
+ " \n",
+ " | 15 | \n",
+ " T1543 | \n",
+ " T1548 | \n",
+ " T1204 | \n",
+ " T1059.003 | \n",
+ " T1562.001 | \n",
+ "
\n",
+ " \n",
+ " | 16 | \n",
+ " T1547 | \n",
+ " T1548.002 | \n",
+ " T1204.001 | \n",
+ " T1059.007 | \n",
+ " T1566 | \n",
+ "
\n",
+ " \n",
+ " | 17 | \n",
+ " T1547.001 | \n",
+ " T1555 | \n",
+ " T1219 | \n",
+ " T1071 | \n",
+ " T1566.001 | \n",
+ "
\n",
+ " \n",
+ " | 18 | \n",
+ " T1548 | \n",
+ " T1555.003 | \n",
+ " T1222 | \n",
+ " T1112 | \n",
+ " T1590 | \n",
+ "
\n",
+ " \n",
+ " | 19 | \n",
+ " T1548.002 | \n",
+ " T1562 | \n",
+ " T1222.001 | \n",
+ " T1204 | \n",
+ " T1590.005 | \n",
+ "
\n",
+ " \n",
+ " | 20 | \n",
+ " T1555 | \n",
+ " T1562.001 | \n",
+ " T1489 | \n",
+ " T1204.001 | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ " | 21 | \n",
+ " T1555.003 | \n",
+ " T1566 | \n",
+ " T1531 | \n",
+ " T1218 | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ " | 22 | \n",
+ " T1559.001 | \n",
+ " T1566.001 | \n",
+ " T1543 | \n",
+ " T1218.010 | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ " | 23 | \n",
+ " T1562 | \n",
+ " nan | \n",
+ " T1543.003 | \n",
+ " T1482 | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ " | 24 | \n",
+ " T1562.001 | \n",
+ " nan | \n",
+ " T1547 | \n",
+ " T1543 | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ " | 25 | \n",
+ " T1566 | \n",
+ " nan | \n",
+ " T1547.001 | \n",
+ " T1543.003 | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ " | 26 | \n",
+ " T1566.001 | \n",
+ " nan | \n",
+ " T1548 | \n",
+ " T1547 | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ " | 27 | \n",
+ " T1592 | \n",
+ " nan | \n",
+ " T1548.002 | \n",
+ " T1547.001 | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ " | 28 | \n",
+ " nan | \n",
+ " nan | \n",
+ " T1555 | \n",
+ " T1562 | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ " | 29 | \n",
+ " nan | \n",
+ " nan | \n",
+ " T1555.003 | \n",
+ " T1562.001 | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ " | 30 | \n",
+ " nan | \n",
+ " nan | \n",
+ " T1562 | \n",
+ " T1566 | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ " | 31 | \n",
+ " nan | \n",
+ " nan | \n",
+ " T1562.001 | \n",
+ " T1566.001 | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ " | 32 | \n",
+ " nan | \n",
+ " nan | \n",
+ " T1562.004 | \n",
+ " T1566.002 | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ " | 33 | \n",
+ " nan | \n",
+ " nan | \n",
+ " T1564 | \n",
+ " T1569 | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ " | 34 | \n",
+ " nan | \n",
+ " nan | \n",
+ " T1564.001 | \n",
+ " T1569.002 | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ " | 35 | \n",
+ " nan | \n",
+ " nan | \n",
+ " T1566 | \n",
+ " T1574 | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ " | 36 | \n",
+ " nan | \n",
+ " nan | \n",
+ " T1566.001 | \n",
+ " T1574.001 | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ " | 37 | \n",
+ " nan | \n",
+ " nan | \n",
+ " T1569 | \n",
+ " T1574.002 | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ " | 38 | \n",
+ " nan | \n",
+ " nan | \n",
+ " T1569.002 | \n",
+ " T1592 | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ " | 39 | \n",
+ " nan | \n",
+ " nan | \n",
+ " T1590 | \n",
+ " nan | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ " | 40 | \n",
+ " nan | \n",
+ " nan | \n",
+ " T1590.005 | \n",
+ " nan | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ "
\n"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 15,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "df.style.applymap(highlight_cells_4)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "49b139b0-a8b6-4b5a-88cb-6c009047519d",
+ "metadata": {},
+ "source": [
+ "### Summary of Mitre Attack ID that detects 4/5 malware family"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 16,
+ "id": "1dbccecb-9411-4087-8760-f16ba681d310",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " 0 | \n",
+ " 1 | \n",
+ " 2 | \n",
+ " 3 | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | T1204.001 | \n",
+ " AgentTesla | \n",
+ " Azorult | \n",
+ " Qakbot | \n",
+ " Remcos | \n",
+ "
\n",
+ " \n",
+ " | T1204 | \n",
+ " AgentTesla | \n",
+ " Azorult | \n",
+ " Qakbot | \n",
+ " Remcos | \n",
+ "
\n",
+ " \n",
+ " | T1053 | \n",
+ " AgentTesla | \n",
+ " Azorult | \n",
+ " Qakbot | \n",
+ " Trickbot | \n",
+ "
\n",
+ " \n",
+ " | T1053.005 | \n",
+ " AgentTesla | \n",
+ " Azorult | \n",
+ " Qakbot | \n",
+ " Trickbot | \n",
+ "
\n",
+ " \n",
+ " | T1218 | \n",
+ " AgentTesla | \n",
+ " Qakbot | \n",
+ " Remcos | \n",
+ " Trickbot | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " 0 1 2 3\n",
+ "T1204.001 AgentTesla Azorult Qakbot Remcos\n",
+ "T1204 AgentTesla Azorult Qakbot Remcos\n",
+ "T1053 AgentTesla Azorult Qakbot Trickbot\n",
+ "T1053.005 AgentTesla Azorult Qakbot Trickbot\n",
+ "T1218 AgentTesla Qakbot Remcos Trickbot"
+ ]
+ },
+ "execution_count": 16,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "temp_dict = summary_table_of_id(mitre_attack_tid_dict, 4)\n",
+ "tdf = pd.DataFrame.from_dict(temp_dict, orient='index')\n",
+ "tdf = tdf.sort_values(by=[0,1,2,3])\n",
+ "tdf"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "4deb3bef-e9b9-4e98-a44f-7b8162a74d92",
+ "metadata": {},
+ "source": [
+ "### detection list for Mitre Attack ID that detects 4/5 malware families"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 17,
+ "id": "874c8687-477a-4f0f-8e79-abf8643ab128",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "(5, 5)\n"
+ ]
+ },
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " AgentTesla | \n",
+ " Azorult | \n",
+ " Qakbot | \n",
+ " Remcos | \n",
+ " Trickbot | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | T1204.001 | \n",
+ " [windows_iso_lnk_file_creation.yml] | \n",
+ " [windows_iso_lnk_file_creation.yml] | \n",
+ " [windows_iso_lnk_file_creation.yml] | \n",
+ " [windows_iso_lnk_file_creation.yml] | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | T1204 | \n",
+ " [windows_iso_lnk_file_creation.yml] | \n",
+ " [windows_iso_lnk_file_creation.yml] | \n",
+ " [windows_iso_lnk_file_creation.yml] | \n",
+ " [windows_iso_lnk_file_creation.yml] | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | T1218 | \n",
+ " [detect_html_help_spawn_child_process.yml] | \n",
+ " NaN | \n",
+ " [regsvr32_with_known_silent_switch_cmdline.yml, suspicious_regsvr32_register_suspicious_path.yml, windows_regsvr32_renamed_binary.yml] | \n",
+ " [regsvr32_silent_and_install_param_dll_loading.yml, regsvr32_with_known_silent_switch_cmdline.yml] | \n",
+ " [mshta_spawning_rundll32_or_regsvr32_process.yml, suspicious_rundll32_startw.yml] | \n",
+ "
\n",
+ " \n",
+ " | T1053 | \n",
+ " [scheduled_task_deleted_or_created_via_cmd.yml] | \n",
+ " [scheduled_task_deleted_or_created_via_cmd.yml, suspicious_scheduled_task_from_public_directory.yml] | \n",
+ " [scheduled_task_deleted_or_created_via_cmd.yml, schtasks_run_task_on_demand.yml, windows_schtasks_create_run_as_system.yml] | \n",
+ " NaN | \n",
+ " [schedule_task_with_rundll32_command_trigger.yml, scheduled_task_deleted_or_created_via_cmd.yml] | \n",
+ "
\n",
+ " \n",
+ " | T1053.005 | \n",
+ " [scheduled_task_deleted_or_created_via_cmd.yml] | \n",
+ " [scheduled_task_deleted_or_created_via_cmd.yml, suspicious_scheduled_task_from_public_directory.yml] | \n",
+ " [scheduled_task_deleted_or_created_via_cmd.yml, windows_schtasks_create_run_as_system.yml, winevent_windows_task_scheduler_event_action_started.yml] | \n",
+ " NaN | \n",
+ " [scheduled_task_deleted_or_created_via_cmd.yml] | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " AgentTesla \\\n",
+ "T1204.001 [windows_iso_lnk_file_creation.yml] \n",
+ "T1204 [windows_iso_lnk_file_creation.yml] \n",
+ "T1218 [detect_html_help_spawn_child_process.yml] \n",
+ "T1053 [scheduled_task_deleted_or_created_via_cmd.yml] \n",
+ "T1053.005 [scheduled_task_deleted_or_created_via_cmd.yml] \n",
+ "\n",
+ " Azorult \\\n",
+ "T1204.001 [windows_iso_lnk_file_creation.yml] \n",
+ "T1204 [windows_iso_lnk_file_creation.yml] \n",
+ "T1218 NaN \n",
+ "T1053 [scheduled_task_deleted_or_created_via_cmd.yml, suspicious_scheduled_task_from_public_directory.yml] \n",
+ "T1053.005 [scheduled_task_deleted_or_created_via_cmd.yml, suspicious_scheduled_task_from_public_directory.yml] \n",
+ "\n",
+ " Qakbot \\\n",
+ "T1204.001 [windows_iso_lnk_file_creation.yml] \n",
+ "T1204 [windows_iso_lnk_file_creation.yml] \n",
+ "T1218 [regsvr32_with_known_silent_switch_cmdline.yml, suspicious_regsvr32_register_suspicious_path.yml, windows_regsvr32_renamed_binary.yml] \n",
+ "T1053 [scheduled_task_deleted_or_created_via_cmd.yml, schtasks_run_task_on_demand.yml, windows_schtasks_create_run_as_system.yml] \n",
+ "T1053.005 [scheduled_task_deleted_or_created_via_cmd.yml, windows_schtasks_create_run_as_system.yml, winevent_windows_task_scheduler_event_action_started.yml] \n",
+ "\n",
+ " Remcos \\\n",
+ "T1204.001 [windows_iso_lnk_file_creation.yml] \n",
+ "T1204 [windows_iso_lnk_file_creation.yml] \n",
+ "T1218 [regsvr32_silent_and_install_param_dll_loading.yml, regsvr32_with_known_silent_switch_cmdline.yml] \n",
+ "T1053 NaN \n",
+ "T1053.005 NaN \n",
+ "\n",
+ " Trickbot \n",
+ "T1204.001 NaN \n",
+ "T1204 NaN \n",
+ "T1218 [mshta_spawning_rundll32_or_regsvr32_process.yml, suspicious_rundll32_startw.yml] \n",
+ "T1053 [schedule_task_with_rundll32_command_trigger.yml, scheduled_task_deleted_or_created_via_cmd.yml] \n",
+ "T1053.005 [scheduled_task_deleted_or_created_via_cmd.yml] "
+ ]
+ },
+ "execution_count": 17,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "det_table_dict = detection_list_by_id(temp_dict)\n",
+ "tdf = pd.DataFrame.from_dict(det_table_dict, orient='index')\n",
+ "print(tdf.shape)\n",
+ "tdf "
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "a50a8933-f8ec-4dc2-b116-5761e97b7024",
+ "metadata": {},
+ "source": [
+ "### detection count per mitre attack id in each malware family"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 18,
+ "id": "54fb9a34-ac9a-48f2-a436-0cafaf16066c",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " AgentTesla | \n",
+ " Azorult | \n",
+ " Qakbot | \n",
+ " Remcos | \n",
+ " Trickbot | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | T1204.001 | \n",
+ " (1)-detection count | \n",
+ " (1)-detection count | \n",
+ " (1)-detection count | \n",
+ " (1)-detection count | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | T1204 | \n",
+ " (1)-detection count | \n",
+ " (1)-detection count | \n",
+ " (1)-detection count | \n",
+ " (1)-detection count | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | T1218 | \n",
+ " (1)-detection count | \n",
+ " NaN | \n",
+ " (3)-detection count | \n",
+ " (2)-detection count | \n",
+ " (2)-detection count | \n",
+ "
\n",
+ " \n",
+ " | T1053 | \n",
+ " (1)-detection count | \n",
+ " (2)-detection count | \n",
+ " (3)-detection count | \n",
+ " NaN | \n",
+ " (2)-detection count | \n",
+ "
\n",
+ " \n",
+ " | T1053.005 | \n",
+ " (1)-detection count | \n",
+ " (2)-detection count | \n",
+ " (3)-detection count | \n",
+ " NaN | \n",
+ " (1)-detection count | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " AgentTesla Azorult Qakbot \\\n",
+ "T1204.001 (1)-detection count (1)-detection count (1)-detection count \n",
+ "T1204 (1)-detection count (1)-detection count (1)-detection count \n",
+ "T1218 (1)-detection count NaN (3)-detection count \n",
+ "T1053 (1)-detection count (2)-detection count (3)-detection count \n",
+ "T1053.005 (1)-detection count (2)-detection count (3)-detection count \n",
+ "\n",
+ " Remcos Trickbot \n",
+ "T1204.001 (1)-detection count NaN \n",
+ "T1204 (1)-detection count NaN \n",
+ "T1218 (2)-detection count (2)-detection count \n",
+ "T1053 NaN (2)-detection count \n",
+ "T1053.005 NaN (1)-detection count "
+ ]
+ },
+ "execution_count": 18,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "detection_list_by_count(det_table_dict)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "23f0dad6-7b39-4eeb-97b0-c5fecc08f5f2",
+ "metadata": {},
+ "source": [
+ "### Highlight Mitre Attack ID that detects 3/5 malware family"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 19,
+ "id": "1e1ad988-b482-4b75-b4ec-a1238e7e441e",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ " \n",
+ " \n",
+ " | | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 5 malware coverage | \n",
+ " yellow | \n",
+ "
\n",
+ " \n",
+ " | 4 malware coverage | \n",
+ " orange | \n",
+ "
\n",
+ " \n",
+ " | 3 malware coverage | \n",
+ " lightgreen | \n",
+ "
\n",
+ " \n",
+ " | 2 malware coverage | \n",
+ " lightblue | \n",
+ "
\n",
+ " \n",
+ " | 1 malware coverage | \n",
+ " lightgray | \n",
+ "
\n",
+ " \n",
+ "
\n"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 19,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "show_legend()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 20,
+ "id": "385f15e4-d000-4004-9a1c-8a762b3a3af7",
+ "metadata": {
+ "tags": []
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ " \n",
+ " \n",
+ " | | \n",
+ " Remcos | \n",
+ " AgentTesla | \n",
+ " Azorult | \n",
+ " Qakbot | \n",
+ " Trickbot | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 0 | \n",
+ " T1036 | \n",
+ " T1014 | \n",
+ " T1021 | \n",
+ " T1016 | \n",
+ " T1021 | \n",
+ "
\n",
+ " \n",
+ " | 1 | \n",
+ " T1055 | \n",
+ " T1036 | \n",
+ " T1021.001 | \n",
+ " T1016.001 | \n",
+ " T1021.002 | \n",
+ "
\n",
+ " \n",
+ " | 2 | \n",
+ " T1055.001 | \n",
+ " T1053 | \n",
+ " T1036 | \n",
+ " T1027 | \n",
+ " T1027 | \n",
+ "
\n",
+ " \n",
+ " | 3 | \n",
+ " T1059 | \n",
+ " T1053.005 | \n",
+ " T1049 | \n",
+ " T1033 | \n",
+ " T1036 | \n",
+ "
\n",
+ " \n",
+ " | 4 | \n",
+ " T1059.005 | \n",
+ " T1059 | \n",
+ " T1053 | \n",
+ " T1036 | \n",
+ " T1053 | \n",
+ "
\n",
+ " \n",
+ " | 5 | \n",
+ " T1059.007 | \n",
+ " T1059.001 | \n",
+ " T1053.005 | \n",
+ " T1036.003 | \n",
+ " T1053.005 | \n",
+ "
\n",
+ " \n",
+ " | 6 | \n",
+ " T1070 | \n",
+ " T1068 | \n",
+ " T1059 | \n",
+ " T1047 | \n",
+ " T1055 | \n",
+ "
\n",
+ " \n",
+ " | 7 | \n",
+ " T1112 | \n",
+ " T1071 | \n",
+ " T1059.001 | \n",
+ " T1049 | \n",
+ " T1059 | \n",
+ "
\n",
+ " \n",
+ " | 8 | \n",
+ " T1113 | \n",
+ " T1071.003 | \n",
+ " T1059.003 | \n",
+ " T1053 | \n",
+ " T1087 | \n",
+ "
\n",
+ " \n",
+ " | 9 | \n",
+ " T1134 | \n",
+ " T1204 | \n",
+ " T1069 | \n",
+ " T1053.005 | \n",
+ " T1087.002 | \n",
+ "
\n",
+ " \n",
+ " | 10 | \n",
+ " T1134.004 | \n",
+ " T1204.001 | \n",
+ " T1069.001 | \n",
+ " T1055 | \n",
+ " T1218 | \n",
+ "
\n",
+ " \n",
+ " | 11 | \n",
+ " T1204 | \n",
+ " T1218 | \n",
+ " T1071 | \n",
+ " T1055.001 | \n",
+ " T1218.005 | \n",
+ "
\n",
+ " \n",
+ " | 12 | \n",
+ " T1204.001 | \n",
+ " T1218.001 | \n",
+ " T1112 | \n",
+ " T1055.002 | \n",
+ " T1218.011 | \n",
+ "
\n",
+ " \n",
+ " | 13 | \n",
+ " T1218 | \n",
+ " T1543 | \n",
+ " T1136 | \n",
+ " T1059 | \n",
+ " T1543 | \n",
+ "
\n",
+ " \n",
+ " | 14 | \n",
+ " T1218.010 | \n",
+ " T1543.003 | \n",
+ " T1136.001 | \n",
+ " T1059.001 | \n",
+ " T1562 | \n",
+ "
\n",
+ " \n",
+ " | 15 | \n",
+ " T1543 | \n",
+ " T1548 | \n",
+ " T1204 | \n",
+ " T1059.003 | \n",
+ " T1562.001 | \n",
+ "
\n",
+ " \n",
+ " | 16 | \n",
+ " T1547 | \n",
+ " T1548.002 | \n",
+ " T1204.001 | \n",
+ " T1059.007 | \n",
+ " T1566 | \n",
+ "
\n",
+ " \n",
+ " | 17 | \n",
+ " T1547.001 | \n",
+ " T1555 | \n",
+ " T1219 | \n",
+ " T1071 | \n",
+ " T1566.001 | \n",
+ "
\n",
+ " \n",
+ " | 18 | \n",
+ " T1548 | \n",
+ " T1555.003 | \n",
+ " T1222 | \n",
+ " T1112 | \n",
+ " T1590 | \n",
+ "
\n",
+ " \n",
+ " | 19 | \n",
+ " T1548.002 | \n",
+ " T1562 | \n",
+ " T1222.001 | \n",
+ " T1204 | \n",
+ " T1590.005 | \n",
+ "
\n",
+ " \n",
+ " | 20 | \n",
+ " T1555 | \n",
+ " T1562.001 | \n",
+ " T1489 | \n",
+ " T1204.001 | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ " | 21 | \n",
+ " T1555.003 | \n",
+ " T1566 | \n",
+ " T1531 | \n",
+ " T1218 | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ " | 22 | \n",
+ " T1559.001 | \n",
+ " T1566.001 | \n",
+ " T1543 | \n",
+ " T1218.010 | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ " | 23 | \n",
+ " T1562 | \n",
+ " nan | \n",
+ " T1543.003 | \n",
+ " T1482 | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ " | 24 | \n",
+ " T1562.001 | \n",
+ " nan | \n",
+ " T1547 | \n",
+ " T1543 | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ " | 25 | \n",
+ " T1566 | \n",
+ " nan | \n",
+ " T1547.001 | \n",
+ " T1543.003 | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ " | 26 | \n",
+ " T1566.001 | \n",
+ " nan | \n",
+ " T1548 | \n",
+ " T1547 | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ " | 27 | \n",
+ " T1592 | \n",
+ " nan | \n",
+ " T1548.002 | \n",
+ " T1547.001 | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ " | 28 | \n",
+ " nan | \n",
+ " nan | \n",
+ " T1555 | \n",
+ " T1562 | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ " | 29 | \n",
+ " nan | \n",
+ " nan | \n",
+ " T1555.003 | \n",
+ " T1562.001 | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ " | 30 | \n",
+ " nan | \n",
+ " nan | \n",
+ " T1562 | \n",
+ " T1566 | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ " | 31 | \n",
+ " nan | \n",
+ " nan | \n",
+ " T1562.001 | \n",
+ " T1566.001 | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ " | 32 | \n",
+ " nan | \n",
+ " nan | \n",
+ " T1562.004 | \n",
+ " T1566.002 | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ " | 33 | \n",
+ " nan | \n",
+ " nan | \n",
+ " T1564 | \n",
+ " T1569 | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ " | 34 | \n",
+ " nan | \n",
+ " nan | \n",
+ " T1564.001 | \n",
+ " T1569.002 | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ " | 35 | \n",
+ " nan | \n",
+ " nan | \n",
+ " T1566 | \n",
+ " T1574 | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ " | 36 | \n",
+ " nan | \n",
+ " nan | \n",
+ " T1566.001 | \n",
+ " T1574.001 | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ " | 37 | \n",
+ " nan | \n",
+ " nan | \n",
+ " T1569 | \n",
+ " T1574.002 | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ " | 38 | \n",
+ " nan | \n",
+ " nan | \n",
+ " T1569.002 | \n",
+ " T1592 | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ " | 39 | \n",
+ " nan | \n",
+ " nan | \n",
+ " T1590 | \n",
+ " nan | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ " | 40 | \n",
+ " nan | \n",
+ " nan | \n",
+ " T1590.005 | \n",
+ " nan | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ "
\n"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 20,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "df.style.applymap(highlight_cells_3)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "d5b5a932-286d-4e02-b642-c02c40e4b454",
+ "metadata": {},
+ "source": [
+ "### Summary of Mitre Attack ID that detects 3/5 malware family"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 21,
+ "id": "00422f3c-2dc7-4fe2-b942-83c63535edd3",
+ "metadata": {
+ "tags": []
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " 0 | \n",
+ " 1 | \n",
+ " 2 | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | T1071 | \n",
+ " AgentTesla | \n",
+ " Azorult | \n",
+ " Qakbot | \n",
+ "
\n",
+ " \n",
+ " | T1059.001 | \n",
+ " AgentTesla | \n",
+ " Azorult | \n",
+ " Qakbot | \n",
+ "
\n",
+ " \n",
+ " | T1543.003 | \n",
+ " AgentTesla | \n",
+ " Azorult | \n",
+ " Qakbot | \n",
+ "
\n",
+ " \n",
+ " | T1548 | \n",
+ " AgentTesla | \n",
+ " Azorult | \n",
+ " Remcos | \n",
+ "
\n",
+ " \n",
+ " | T1555.003 | \n",
+ " AgentTesla | \n",
+ " Azorult | \n",
+ " Remcos | \n",
+ "
\n",
+ " \n",
+ " | T1555 | \n",
+ " AgentTesla | \n",
+ " Azorult | \n",
+ " Remcos | \n",
+ "
\n",
+ " \n",
+ " | T1548.002 | \n",
+ " AgentTesla | \n",
+ " Azorult | \n",
+ " Remcos | \n",
+ "
\n",
+ " \n",
+ " | T1112 | \n",
+ " Azorult | \n",
+ " Qakbot | \n",
+ " Remcos | \n",
+ "
\n",
+ " \n",
+ " | T1547.001 | \n",
+ " Azorult | \n",
+ " Qakbot | \n",
+ " Remcos | \n",
+ "
\n",
+ " \n",
+ " | T1547 | \n",
+ " Azorult | \n",
+ " Qakbot | \n",
+ " Remcos | \n",
+ "
\n",
+ " \n",
+ " | T1055 | \n",
+ " Qakbot | \n",
+ " Remcos | \n",
+ " Trickbot | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " 0 1 2\n",
+ "T1071 AgentTesla Azorult Qakbot\n",
+ "T1059.001 AgentTesla Azorult Qakbot\n",
+ "T1543.003 AgentTesla Azorult Qakbot\n",
+ "T1548 AgentTesla Azorult Remcos\n",
+ "T1555.003 AgentTesla Azorult Remcos\n",
+ "T1555 AgentTesla Azorult Remcos\n",
+ "T1548.002 AgentTesla Azorult Remcos\n",
+ "T1112 Azorult Qakbot Remcos\n",
+ "T1547.001 Azorult Qakbot Remcos\n",
+ "T1547 Azorult Qakbot Remcos\n",
+ "T1055 Qakbot Remcos Trickbot"
+ ]
+ },
+ "execution_count": 21,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "\n",
+ "temp_dict = summary_table_of_id(mitre_attack_tid_dict, 3)\n",
+ "tdf = pd.DataFrame.from_dict(temp_dict, orient='index')\n",
+ "tdf = tdf.sort_values(by=[0,1,2])\n",
+ "tdf"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "917b867f-73df-432d-ad61-f8288ed0bd17",
+ "metadata": {},
+ "source": [
+ "### detection list for Mitre Attack ID that detects 3/5 malware families"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 22,
+ "id": "4b5556a3-185b-4d09-9b11-8754f8a63668",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "(11, 5)\n"
+ ]
+ },
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " Qakbot | \n",
+ " Remcos | \n",
+ " Trickbot | \n",
+ " AgentTesla | \n",
+ " Azorult | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | T1055 | \n",
+ " [create_remote_thread_in_shell_application.yml, windows_command_shell_fetch_env_variables.yml, windows_process_injection_of_wermgr_to_known_browser.yml, windows_process_injection_remote_thread.yml, windows_process_injection_wermgr_child_process.yml] | \n",
+ " [loading_of_dynwrapx_module.yml, winhlp32_spawning_a_process.yml, wscript_or_cscript_suspicious_child_process.yml] | \n",
+ " [cobalt_strike_named_pipes.yml, powershell_remote_thread_to_known_windows_process.yml, trickbot_named_pipe.yml] | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | T1071 | \n",
+ " [windows_app_layer_protocol_qakbot_namedpipe.yml, windows_app_layer_protocol_wermgr_connect_to_namedpipe.yml] | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " [windows_file_transfer_protocol_in_non_common_process_path.yml, windows_mail_protocol_in_non_common_process_path.yml, windows_multi_hop_proxy_tor_website_query.yml] | \n",
+ " [windows_application_layer_protocol_rms_radmin_tool_namedpipe.yml] | \n",
+ "
\n",
+ " \n",
+ " | T1112 | \n",
+ " [windows_modify_registry_qakbot_binary_data_registry.yml] | \n",
+ " [malicious_inprocserver32_modification.yml, remcos_client_registry_install_entry.yml] | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " [windows_modify_registry_disable_toast_notifications.yml, windows_modify_registry_disable_win_defender_raw_write_notif.yml, windows_modify_registry_disable_windows_security_center_notif.yml, windows_modify_registry_disabling_wer_settings.yml, windows_modify_registry_disallow_windows_app.yml, windows_modify_registry_regedit_silent_reg_import.yml, windows_modify_registry_suppress_win_defender_notif.yml] | \n",
+ "
\n",
+ " \n",
+ " | T1059.001 | \n",
+ " [recon_using_wmi_class.yml] | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " [powershell___connect_to_internet_with_hidden_window.yml, powershell_loading_dotnet_into_memory_via_reflection.yml] | \n",
+ " [windows_powershell_import_applocker_policy.yml] | \n",
+ "
\n",
+ " \n",
+ " | T1543.003 | \n",
+ " [services_exe_lolbas_execution_process_spawn.yml] | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " [suspicious_driver_loaded_path.yml] | \n",
+ " [sc_exe_manipulating_windows_services.yml] | \n",
+ "
\n",
+ " \n",
+ " | T1547.001 | \n",
+ " [registry_keys_used_for_persistence.yml] | \n",
+ " [registry_keys_used_for_persistence.yml] | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " [registry_keys_used_for_persistence.yml] | \n",
+ "
\n",
+ " \n",
+ " | T1547 | \n",
+ " [registry_keys_used_for_persistence.yml] | \n",
+ " [registry_keys_used_for_persistence.yml] | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " [registry_keys_used_for_persistence.yml] | \n",
+ "
\n",
+ " \n",
+ " | T1548 | \n",
+ " NaN | \n",
+ " [disabling_remote_user_account_control.yml] | \n",
+ " NaN | \n",
+ " [disabling_remote_user_account_control.yml] | \n",
+ " [allow_operation_with_consent_admin.yml, disabling_remote_user_account_control.yml] | \n",
+ "
\n",
+ " \n",
+ " | T1555.003 | \n",
+ " NaN | \n",
+ " [non_chrome_process_accessing_chrome_default_dir.yml, non_firefox_process_access_firefox_profile_dir.yml, possible_browser_pass_view_parameter.yml] | \n",
+ " NaN | \n",
+ " [non_chrome_process_accessing_chrome_default_dir.yml, non_firefox_process_access_firefox_profile_dir.yml] | \n",
+ " [non_firefox_process_access_firefox_profile_dir.yml] | \n",
+ "
\n",
+ " \n",
+ " | T1555 | \n",
+ " NaN | \n",
+ " [non_chrome_process_accessing_chrome_default_dir.yml, non_firefox_process_access_firefox_profile_dir.yml, possible_browser_pass_view_parameter.yml] | \n",
+ " NaN | \n",
+ " [non_chrome_process_accessing_chrome_default_dir.yml, non_firefox_process_access_firefox_profile_dir.yml] | \n",
+ " [non_firefox_process_access_firefox_profile_dir.yml] | \n",
+ "
\n",
+ " \n",
+ " | T1548.002 | \n",
+ " NaN | \n",
+ " [disabling_remote_user_account_control.yml] | \n",
+ " NaN | \n",
+ " [disabling_remote_user_account_control.yml] | \n",
+ " [disabling_remote_user_account_control.yml] | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " Qakbot \\\n",
+ "T1055 [create_remote_thread_in_shell_application.yml, windows_command_shell_fetch_env_variables.yml, windows_process_injection_of_wermgr_to_known_browser.yml, windows_process_injection_remote_thread.yml, windows_process_injection_wermgr_child_process.yml] \n",
+ "T1071 [windows_app_layer_protocol_qakbot_namedpipe.yml, windows_app_layer_protocol_wermgr_connect_to_namedpipe.yml] \n",
+ "T1112 [windows_modify_registry_qakbot_binary_data_registry.yml] \n",
+ "T1059.001 [recon_using_wmi_class.yml] \n",
+ "T1543.003 [services_exe_lolbas_execution_process_spawn.yml] \n",
+ "T1547.001 [registry_keys_used_for_persistence.yml] \n",
+ "T1547 [registry_keys_used_for_persistence.yml] \n",
+ "T1548 NaN \n",
+ "T1555.003 NaN \n",
+ "T1555 NaN \n",
+ "T1548.002 NaN \n",
+ "\n",
+ " Remcos \\\n",
+ "T1055 [loading_of_dynwrapx_module.yml, winhlp32_spawning_a_process.yml, wscript_or_cscript_suspicious_child_process.yml] \n",
+ "T1071 NaN \n",
+ "T1112 [malicious_inprocserver32_modification.yml, remcos_client_registry_install_entry.yml] \n",
+ "T1059.001 NaN \n",
+ "T1543.003 NaN \n",
+ "T1547.001 [registry_keys_used_for_persistence.yml] \n",
+ "T1547 [registry_keys_used_for_persistence.yml] \n",
+ "T1548 [disabling_remote_user_account_control.yml] \n",
+ "T1555.003 [non_chrome_process_accessing_chrome_default_dir.yml, non_firefox_process_access_firefox_profile_dir.yml, possible_browser_pass_view_parameter.yml] \n",
+ "T1555 [non_chrome_process_accessing_chrome_default_dir.yml, non_firefox_process_access_firefox_profile_dir.yml, possible_browser_pass_view_parameter.yml] \n",
+ "T1548.002 [disabling_remote_user_account_control.yml] \n",
+ "\n",
+ " Trickbot \\\n",
+ "T1055 [cobalt_strike_named_pipes.yml, powershell_remote_thread_to_known_windows_process.yml, trickbot_named_pipe.yml] \n",
+ "T1071 NaN \n",
+ "T1112 NaN \n",
+ "T1059.001 NaN \n",
+ "T1543.003 NaN \n",
+ "T1547.001 NaN \n",
+ "T1547 NaN \n",
+ "T1548 NaN \n",
+ "T1555.003 NaN \n",
+ "T1555 NaN \n",
+ "T1548.002 NaN \n",
+ "\n",
+ " AgentTesla \\\n",
+ "T1055 NaN \n",
+ "T1071 [windows_file_transfer_protocol_in_non_common_process_path.yml, windows_mail_protocol_in_non_common_process_path.yml, windows_multi_hop_proxy_tor_website_query.yml] \n",
+ "T1112 NaN \n",
+ "T1059.001 [powershell___connect_to_internet_with_hidden_window.yml, powershell_loading_dotnet_into_memory_via_reflection.yml] \n",
+ "T1543.003 [suspicious_driver_loaded_path.yml] \n",
+ "T1547.001 NaN \n",
+ "T1547 NaN \n",
+ "T1548 [disabling_remote_user_account_control.yml] \n",
+ "T1555.003 [non_chrome_process_accessing_chrome_default_dir.yml, non_firefox_process_access_firefox_profile_dir.yml] \n",
+ "T1555 [non_chrome_process_accessing_chrome_default_dir.yml, non_firefox_process_access_firefox_profile_dir.yml] \n",
+ "T1548.002 [disabling_remote_user_account_control.yml] \n",
+ "\n",
+ " Azorult \n",
+ "T1055 NaN \n",
+ "T1071 [windows_application_layer_protocol_rms_radmin_tool_namedpipe.yml] \n",
+ "T1112 [windows_modify_registry_disable_toast_notifications.yml, windows_modify_registry_disable_win_defender_raw_write_notif.yml, windows_modify_registry_disable_windows_security_center_notif.yml, windows_modify_registry_disabling_wer_settings.yml, windows_modify_registry_disallow_windows_app.yml, windows_modify_registry_regedit_silent_reg_import.yml, windows_modify_registry_suppress_win_defender_notif.yml] \n",
+ "T1059.001 [windows_powershell_import_applocker_policy.yml] \n",
+ "T1543.003 [sc_exe_manipulating_windows_services.yml] \n",
+ "T1547.001 [registry_keys_used_for_persistence.yml] \n",
+ "T1547 [registry_keys_used_for_persistence.yml] \n",
+ "T1548 [allow_operation_with_consent_admin.yml, disabling_remote_user_account_control.yml] \n",
+ "T1555.003 [non_firefox_process_access_firefox_profile_dir.yml] \n",
+ "T1555 [non_firefox_process_access_firefox_profile_dir.yml] \n",
+ "T1548.002 [disabling_remote_user_account_control.yml] "
+ ]
+ },
+ "execution_count": 22,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "det_table_dict = detection_list_by_id(temp_dict)\n",
+ "tdf = pd.DataFrame.from_dict(det_table_dict, orient='index')\n",
+ "print(tdf.shape)\n",
+ "tdf "
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "cb75a49c-d35f-47ee-bad3-bb31e7e7d041",
+ "metadata": {},
+ "source": [
+ "### detection count per mitre attack id in each malware family"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 23,
+ "id": "72b34254-fd19-4c37-a0e2-df5cb3934cb3",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " Qakbot | \n",
+ " Remcos | \n",
+ " Trickbot | \n",
+ " AgentTesla | \n",
+ " Azorult | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | T1055 | \n",
+ " (5)-detection count | \n",
+ " (3)-detection count | \n",
+ " (3)-detection count | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | T1071 | \n",
+ " (2)-detection count | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " (3)-detection count | \n",
+ " (1)-detection count | \n",
+ "
\n",
+ " \n",
+ " | T1112 | \n",
+ " (1)-detection count | \n",
+ " (2)-detection count | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " (7)-detection count | \n",
+ "
\n",
+ " \n",
+ " | T1059.001 | \n",
+ " (1)-detection count | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " (2)-detection count | \n",
+ " (1)-detection count | \n",
+ "
\n",
+ " \n",
+ " | T1543.003 | \n",
+ " (1)-detection count | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " (1)-detection count | \n",
+ " (1)-detection count | \n",
+ "
\n",
+ " \n",
+ " | T1547.001 | \n",
+ " (1)-detection count | \n",
+ " (1)-detection count | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " (1)-detection count | \n",
+ "
\n",
+ " \n",
+ " | T1547 | \n",
+ " (1)-detection count | \n",
+ " (1)-detection count | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " (1)-detection count | \n",
+ "
\n",
+ " \n",
+ " | T1548 | \n",
+ " NaN | \n",
+ " (1)-detection count | \n",
+ " NaN | \n",
+ " (1)-detection count | \n",
+ " (2)-detection count | \n",
+ "
\n",
+ " \n",
+ " | T1555.003 | \n",
+ " NaN | \n",
+ " (3)-detection count | \n",
+ " NaN | \n",
+ " (2)-detection count | \n",
+ " (1)-detection count | \n",
+ "
\n",
+ " \n",
+ " | T1555 | \n",
+ " NaN | \n",
+ " (3)-detection count | \n",
+ " NaN | \n",
+ " (2)-detection count | \n",
+ " (1)-detection count | \n",
+ "
\n",
+ " \n",
+ " | T1548.002 | \n",
+ " NaN | \n",
+ " (1)-detection count | \n",
+ " NaN | \n",
+ " (1)-detection count | \n",
+ " (1)-detection count | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " Qakbot Remcos Trickbot \\\n",
+ "T1055 (5)-detection count (3)-detection count (3)-detection count \n",
+ "T1071 (2)-detection count NaN NaN \n",
+ "T1112 (1)-detection count (2)-detection count NaN \n",
+ "T1059.001 (1)-detection count NaN NaN \n",
+ "T1543.003 (1)-detection count NaN NaN \n",
+ "T1547.001 (1)-detection count (1)-detection count NaN \n",
+ "T1547 (1)-detection count (1)-detection count NaN \n",
+ "T1548 NaN (1)-detection count NaN \n",
+ "T1555.003 NaN (3)-detection count NaN \n",
+ "T1555 NaN (3)-detection count NaN \n",
+ "T1548.002 NaN (1)-detection count NaN \n",
+ "\n",
+ " AgentTesla Azorult \n",
+ "T1055 NaN NaN \n",
+ "T1071 (3)-detection count (1)-detection count \n",
+ "T1112 NaN (7)-detection count \n",
+ "T1059.001 (2)-detection count (1)-detection count \n",
+ "T1543.003 (1)-detection count (1)-detection count \n",
+ "T1547.001 NaN (1)-detection count \n",
+ "T1547 NaN (1)-detection count \n",
+ "T1548 (1)-detection count (2)-detection count \n",
+ "T1555.003 (2)-detection count (1)-detection count \n",
+ "T1555 (2)-detection count (1)-detection count \n",
+ "T1548.002 (1)-detection count (1)-detection count "
+ ]
+ },
+ "execution_count": 23,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "detection_list_by_count(det_table_dict)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "4289037d-495e-4f38-8d3c-c724a2805a9c",
+ "metadata": {},
+ "source": [
+ "### Highlight Mitre Attack ID that detects 2/5 malware family"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 24,
+ "id": "45ebfd15-bdbe-4415-bcea-c94558ba6a7a",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ " \n",
+ " \n",
+ " | | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 5 malware coverage | \n",
+ " yellow | \n",
+ "
\n",
+ " \n",
+ " | 4 malware coverage | \n",
+ " orange | \n",
+ "
\n",
+ " \n",
+ " | 3 malware coverage | \n",
+ " lightgreen | \n",
+ "
\n",
+ " \n",
+ " | 2 malware coverage | \n",
+ " lightblue | \n",
+ "
\n",
+ " \n",
+ " | 1 malware coverage | \n",
+ " lightgray | \n",
+ "
\n",
+ " \n",
+ "
\n"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 24,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "show_legend()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 25,
+ "id": "d28d99e3-aab1-4a7a-8a04-ec88b390abfe",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ " \n",
+ " \n",
+ " | | \n",
+ " Remcos | \n",
+ " AgentTesla | \n",
+ " Azorult | \n",
+ " Qakbot | \n",
+ " Trickbot | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 0 | \n",
+ " T1036 | \n",
+ " T1014 | \n",
+ " T1021 | \n",
+ " T1016 | \n",
+ " T1021 | \n",
+ "
\n",
+ " \n",
+ " | 1 | \n",
+ " T1055 | \n",
+ " T1036 | \n",
+ " T1021.001 | \n",
+ " T1016.001 | \n",
+ " T1021.002 | \n",
+ "
\n",
+ " \n",
+ " | 2 | \n",
+ " T1055.001 | \n",
+ " T1053 | \n",
+ " T1036 | \n",
+ " T1027 | \n",
+ " T1027 | \n",
+ "
\n",
+ " \n",
+ " | 3 | \n",
+ " T1059 | \n",
+ " T1053.005 | \n",
+ " T1049 | \n",
+ " T1033 | \n",
+ " T1036 | \n",
+ "
\n",
+ " \n",
+ " | 4 | \n",
+ " T1059.005 | \n",
+ " T1059 | \n",
+ " T1053 | \n",
+ " T1036 | \n",
+ " T1053 | \n",
+ "
\n",
+ " \n",
+ " | 5 | \n",
+ " T1059.007 | \n",
+ " T1059.001 | \n",
+ " T1053.005 | \n",
+ " T1036.003 | \n",
+ " T1053.005 | \n",
+ "
\n",
+ " \n",
+ " | 6 | \n",
+ " T1070 | \n",
+ " T1068 | \n",
+ " T1059 | \n",
+ " T1047 | \n",
+ " T1055 | \n",
+ "
\n",
+ " \n",
+ " | 7 | \n",
+ " T1112 | \n",
+ " T1071 | \n",
+ " T1059.001 | \n",
+ " T1049 | \n",
+ " T1059 | \n",
+ "
\n",
+ " \n",
+ " | 8 | \n",
+ " T1113 | \n",
+ " T1071.003 | \n",
+ " T1059.003 | \n",
+ " T1053 | \n",
+ " T1087 | \n",
+ "
\n",
+ " \n",
+ " | 9 | \n",
+ " T1134 | \n",
+ " T1204 | \n",
+ " T1069 | \n",
+ " T1053.005 | \n",
+ " T1087.002 | \n",
+ "
\n",
+ " \n",
+ " | 10 | \n",
+ " T1134.004 | \n",
+ " T1204.001 | \n",
+ " T1069.001 | \n",
+ " T1055 | \n",
+ " T1218 | \n",
+ "
\n",
+ " \n",
+ " | 11 | \n",
+ " T1204 | \n",
+ " T1218 | \n",
+ " T1071 | \n",
+ " T1055.001 | \n",
+ " T1218.005 | \n",
+ "
\n",
+ " \n",
+ " | 12 | \n",
+ " T1204.001 | \n",
+ " T1218.001 | \n",
+ " T1112 | \n",
+ " T1055.002 | \n",
+ " T1218.011 | \n",
+ "
\n",
+ " \n",
+ " | 13 | \n",
+ " T1218 | \n",
+ " T1543 | \n",
+ " T1136 | \n",
+ " T1059 | \n",
+ " T1543 | \n",
+ "
\n",
+ " \n",
+ " | 14 | \n",
+ " T1218.010 | \n",
+ " T1543.003 | \n",
+ " T1136.001 | \n",
+ " T1059.001 | \n",
+ " T1562 | \n",
+ "
\n",
+ " \n",
+ " | 15 | \n",
+ " T1543 | \n",
+ " T1548 | \n",
+ " T1204 | \n",
+ " T1059.003 | \n",
+ " T1562.001 | \n",
+ "
\n",
+ " \n",
+ " | 16 | \n",
+ " T1547 | \n",
+ " T1548.002 | \n",
+ " T1204.001 | \n",
+ " T1059.007 | \n",
+ " T1566 | \n",
+ "
\n",
+ " \n",
+ " | 17 | \n",
+ " T1547.001 | \n",
+ " T1555 | \n",
+ " T1219 | \n",
+ " T1071 | \n",
+ " T1566.001 | \n",
+ "
\n",
+ " \n",
+ " | 18 | \n",
+ " T1548 | \n",
+ " T1555.003 | \n",
+ " T1222 | \n",
+ " T1112 | \n",
+ " T1590 | \n",
+ "
\n",
+ " \n",
+ " | 19 | \n",
+ " T1548.002 | \n",
+ " T1562 | \n",
+ " T1222.001 | \n",
+ " T1204 | \n",
+ " T1590.005 | \n",
+ "
\n",
+ " \n",
+ " | 20 | \n",
+ " T1555 | \n",
+ " T1562.001 | \n",
+ " T1489 | \n",
+ " T1204.001 | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ " | 21 | \n",
+ " T1555.003 | \n",
+ " T1566 | \n",
+ " T1531 | \n",
+ " T1218 | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ " | 22 | \n",
+ " T1559.001 | \n",
+ " T1566.001 | \n",
+ " T1543 | \n",
+ " T1218.010 | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ " | 23 | \n",
+ " T1562 | \n",
+ " nan | \n",
+ " T1543.003 | \n",
+ " T1482 | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ " | 24 | \n",
+ " T1562.001 | \n",
+ " nan | \n",
+ " T1547 | \n",
+ " T1543 | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ " | 25 | \n",
+ " T1566 | \n",
+ " nan | \n",
+ " T1547.001 | \n",
+ " T1543.003 | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ " | 26 | \n",
+ " T1566.001 | \n",
+ " nan | \n",
+ " T1548 | \n",
+ " T1547 | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ " | 27 | \n",
+ " T1592 | \n",
+ " nan | \n",
+ " T1548.002 | \n",
+ " T1547.001 | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ " | 28 | \n",
+ " nan | \n",
+ " nan | \n",
+ " T1555 | \n",
+ " T1562 | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ " | 29 | \n",
+ " nan | \n",
+ " nan | \n",
+ " T1555.003 | \n",
+ " T1562.001 | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ " | 30 | \n",
+ " nan | \n",
+ " nan | \n",
+ " T1562 | \n",
+ " T1566 | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ " | 31 | \n",
+ " nan | \n",
+ " nan | \n",
+ " T1562.001 | \n",
+ " T1566.001 | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ " | 32 | \n",
+ " nan | \n",
+ " nan | \n",
+ " T1562.004 | \n",
+ " T1566.002 | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ " | 33 | \n",
+ " nan | \n",
+ " nan | \n",
+ " T1564 | \n",
+ " T1569 | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ " | 34 | \n",
+ " nan | \n",
+ " nan | \n",
+ " T1564.001 | \n",
+ " T1569.002 | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ " | 35 | \n",
+ " nan | \n",
+ " nan | \n",
+ " T1566 | \n",
+ " T1574 | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ " | 36 | \n",
+ " nan | \n",
+ " nan | \n",
+ " T1566.001 | \n",
+ " T1574.001 | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ " | 37 | \n",
+ " nan | \n",
+ " nan | \n",
+ " T1569 | \n",
+ " T1574.002 | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ " | 38 | \n",
+ " nan | \n",
+ " nan | \n",
+ " T1569.002 | \n",
+ " T1592 | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ " | 39 | \n",
+ " nan | \n",
+ " nan | \n",
+ " T1590 | \n",
+ " nan | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ " | 40 | \n",
+ " nan | \n",
+ " nan | \n",
+ " T1590.005 | \n",
+ " nan | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ "
\n"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 25,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "df.style.applymap(highlight_cells_2)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "12972dd1-7e11-4097-b4fa-168c45a3ab2c",
+ "metadata": {},
+ "source": [
+ "### Summary of Mitre Attack ID that detects 2/5 malware family"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 26,
+ "id": "49b832b4-2436-4cef-98fe-997a2679d0c0",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " 0 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | T1049 | \n",
+ " Azorult | \n",
+ " Qakbot | \n",
+ "
\n",
+ " \n",
+ " | T1059.003 | \n",
+ " Azorult | \n",
+ " Qakbot | \n",
+ "
\n",
+ " \n",
+ " | T1569 | \n",
+ " Azorult | \n",
+ " Qakbot | \n",
+ "
\n",
+ " \n",
+ " | T1569.002 | \n",
+ " Azorult | \n",
+ " Qakbot | \n",
+ "
\n",
+ " \n",
+ " | T1021 | \n",
+ " Azorult | \n",
+ " Trickbot | \n",
+ "
\n",
+ " \n",
+ " | T1590 | \n",
+ " Azorult | \n",
+ " Trickbot | \n",
+ "
\n",
+ " \n",
+ " | T1590.005 | \n",
+ " Azorult | \n",
+ " Trickbot | \n",
+ "
\n",
+ " \n",
+ " | T1059.007 | \n",
+ " Qakbot | \n",
+ " Remcos | \n",
+ "
\n",
+ " \n",
+ " | T1218.010 | \n",
+ " Qakbot | \n",
+ " Remcos | \n",
+ "
\n",
+ " \n",
+ " | T1055.001 | \n",
+ " Qakbot | \n",
+ " Remcos | \n",
+ "
\n",
+ " \n",
+ " | T1592 | \n",
+ " Qakbot | \n",
+ " Remcos | \n",
+ "
\n",
+ " \n",
+ " | T1027 | \n",
+ " Qakbot | \n",
+ " Trickbot | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " 0 1\n",
+ "T1049 Azorult Qakbot\n",
+ "T1059.003 Azorult Qakbot\n",
+ "T1569 Azorult Qakbot\n",
+ "T1569.002 Azorult Qakbot\n",
+ "T1021 Azorult Trickbot\n",
+ "T1590 Azorult Trickbot\n",
+ "T1590.005 Azorult Trickbot\n",
+ "T1059.007 Qakbot Remcos\n",
+ "T1218.010 Qakbot Remcos\n",
+ "T1055.001 Qakbot Remcos\n",
+ "T1592 Qakbot Remcos\n",
+ "T1027 Qakbot Trickbot"
+ ]
+ },
+ "execution_count": 26,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "temp_dict = summary_table_of_id(mitre_attack_tid_dict, 2)\n",
+ "tdf = pd.DataFrame.from_dict(temp_dict, orient='index')\n",
+ "tdf = tdf.sort_values(by=[0,1])\n",
+ "tdf"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "02cb02d6-310e-44fa-a701-2dcdc0338a10",
+ "metadata": {},
+ "source": [
+ "### detection list for Mitre Attack ID that detects 2/5 malware families"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 27,
+ "id": "da26ea7f-7d62-47cc-a1e3-95442104d188",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "(12, 4)\n"
+ ]
+ },
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " Azorult | \n",
+ " Trickbot | \n",
+ " Qakbot | \n",
+ " Remcos | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | T1021 | \n",
+ " [allow_inbound_traffic_by_firewall_rule_registry.yml, windows_remote_service_rdpwinst_tool_execution.yml, windows_remote_services_allow_rdp_in_firewall.yml, windows_remote_services_allow_remote_assistance.yml, windows_remote_services_rdp_enable.yml] | \n",
+ " [executable_file_written_in_administrative_smb_share.yml] | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | T1590 | \n",
+ " [windows_gather_victim_network_info_through_ip_check_web_services.yml] | \n",
+ " [wermgr_process_connecting_to_ip_check_web_services.yml] | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | T1590.005 | \n",
+ " [windows_gather_victim_network_info_through_ip_check_web_services.yml] | \n",
+ " [wermgr_process_connecting_to_ip_check_web_services.yml] | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | T1049 | \n",
+ " [network_connection_discovery_net.yml] | \n",
+ " NaN | \n",
+ " [network_connection_discovery_arp.yml, network_connection_discovery_netstat.yml] | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | T1059.003 | \n",
+ " [cmd_carry_out_string_command_parameter.yml, detect_use_of_cmd_exe_to_launch_script_interpreters.yml] | \n",
+ " NaN | \n",
+ " [cmd_carry_out_string_command_parameter.yml] | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | T1569 | \n",
+ " [excessive_usage_of_sc_service_utility.yml] | \n",
+ " NaN | \n",
+ " [windows_service_created_with_suspicious_service_path.yml] | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | T1569.002 | \n",
+ " [excessive_usage_of_sc_service_utility.yml] | \n",
+ " NaN | \n",
+ " [windows_service_created_with_suspicious_service_path.yml] | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | T1027 | \n",
+ " NaN | \n",
+ " [wermgr_process_create_executable_file.yml] | \n",
+ " [malicious_powershell_process___encoded_command.yml] | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | T1059.007 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " [cmdline_tool_not_executed_in_cmd_shell.yml] | \n",
+ " [jscript_execution_using_cscript_app.yml] | \n",
+ "
\n",
+ " \n",
+ " | T1218.010 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " [regsvr32_with_known_silent_switch_cmdline.yml, suspicious_regsvr32_register_suspicious_path.yml, windows_regsvr32_renamed_binary.yml] | \n",
+ " [malicious_inprocserver32_modification.yml, regsvr32_silent_and_install_param_dll_loading.yml, regsvr32_with_known_silent_switch_cmdline.yml] | \n",
+ "
\n",
+ " \n",
+ " | T1055.001 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " [windows_process_injection_of_wermgr_to_known_browser.yml] | \n",
+ " [loading_of_dynwrapx_module.yml] | \n",
+ "
\n",
+ " \n",
+ " | T1592 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " [recon_avproduct_through_pwh_or_wmi.yml, recon_using_wmi_class.yml] | \n",
+ " [system_info_gathering_using_dxdiag_application.yml] | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " Azorult \\\n",
+ "T1021 [allow_inbound_traffic_by_firewall_rule_registry.yml, windows_remote_service_rdpwinst_tool_execution.yml, windows_remote_services_allow_rdp_in_firewall.yml, windows_remote_services_allow_remote_assistance.yml, windows_remote_services_rdp_enable.yml] \n",
+ "T1590 [windows_gather_victim_network_info_through_ip_check_web_services.yml] \n",
+ "T1590.005 [windows_gather_victim_network_info_through_ip_check_web_services.yml] \n",
+ "T1049 [network_connection_discovery_net.yml] \n",
+ "T1059.003 [cmd_carry_out_string_command_parameter.yml, detect_use_of_cmd_exe_to_launch_script_interpreters.yml] \n",
+ "T1569 [excessive_usage_of_sc_service_utility.yml] \n",
+ "T1569.002 [excessive_usage_of_sc_service_utility.yml] \n",
+ "T1027 NaN \n",
+ "T1059.007 NaN \n",
+ "T1218.010 NaN \n",
+ "T1055.001 NaN \n",
+ "T1592 NaN \n",
+ "\n",
+ " Trickbot \\\n",
+ "T1021 [executable_file_written_in_administrative_smb_share.yml] \n",
+ "T1590 [wermgr_process_connecting_to_ip_check_web_services.yml] \n",
+ "T1590.005 [wermgr_process_connecting_to_ip_check_web_services.yml] \n",
+ "T1049 NaN \n",
+ "T1059.003 NaN \n",
+ "T1569 NaN \n",
+ "T1569.002 NaN \n",
+ "T1027 [wermgr_process_create_executable_file.yml] \n",
+ "T1059.007 NaN \n",
+ "T1218.010 NaN \n",
+ "T1055.001 NaN \n",
+ "T1592 NaN \n",
+ "\n",
+ " Qakbot \\\n",
+ "T1021 NaN \n",
+ "T1590 NaN \n",
+ "T1590.005 NaN \n",
+ "T1049 [network_connection_discovery_arp.yml, network_connection_discovery_netstat.yml] \n",
+ "T1059.003 [cmd_carry_out_string_command_parameter.yml] \n",
+ "T1569 [windows_service_created_with_suspicious_service_path.yml] \n",
+ "T1569.002 [windows_service_created_with_suspicious_service_path.yml] \n",
+ "T1027 [malicious_powershell_process___encoded_command.yml] \n",
+ "T1059.007 [cmdline_tool_not_executed_in_cmd_shell.yml] \n",
+ "T1218.010 [regsvr32_with_known_silent_switch_cmdline.yml, suspicious_regsvr32_register_suspicious_path.yml, windows_regsvr32_renamed_binary.yml] \n",
+ "T1055.001 [windows_process_injection_of_wermgr_to_known_browser.yml] \n",
+ "T1592 [recon_avproduct_through_pwh_or_wmi.yml, recon_using_wmi_class.yml] \n",
+ "\n",
+ " Remcos \n",
+ "T1021 NaN \n",
+ "T1590 NaN \n",
+ "T1590.005 NaN \n",
+ "T1049 NaN \n",
+ "T1059.003 NaN \n",
+ "T1569 NaN \n",
+ "T1569.002 NaN \n",
+ "T1027 NaN \n",
+ "T1059.007 [jscript_execution_using_cscript_app.yml] \n",
+ "T1218.010 [malicious_inprocserver32_modification.yml, regsvr32_silent_and_install_param_dll_loading.yml, regsvr32_with_known_silent_switch_cmdline.yml] \n",
+ "T1055.001 [loading_of_dynwrapx_module.yml] \n",
+ "T1592 [system_info_gathering_using_dxdiag_application.yml] "
+ ]
+ },
+ "execution_count": 27,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "det_table_dict = detection_list_by_id(temp_dict)\n",
+ "tdf = pd.DataFrame.from_dict(det_table_dict, orient='index')\n",
+ "print(tdf.shape)\n",
+ "tdf "
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "cc2bef38-a3e2-4081-a447-86c1e70d433f",
+ "metadata": {},
+ "source": [
+ "### detection count per mitre attack id in each malware family"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 28,
+ "id": "5863c606-ed0c-475d-b37d-1d4e8f9502a6",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " Azorult | \n",
+ " Trickbot | \n",
+ " Qakbot | \n",
+ " Remcos | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | T1021 | \n",
+ " (5)-detection count | \n",
+ " (1)-detection count | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | T1590 | \n",
+ " (1)-detection count | \n",
+ " (1)-detection count | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | T1590.005 | \n",
+ " (1)-detection count | \n",
+ " (1)-detection count | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | T1049 | \n",
+ " (1)-detection count | \n",
+ " NaN | \n",
+ " (2)-detection count | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | T1059.003 | \n",
+ " (2)-detection count | \n",
+ " NaN | \n",
+ " (1)-detection count | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | T1569 | \n",
+ " (1)-detection count | \n",
+ " NaN | \n",
+ " (1)-detection count | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | T1569.002 | \n",
+ " (1)-detection count | \n",
+ " NaN | \n",
+ " (1)-detection count | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | T1027 | \n",
+ " NaN | \n",
+ " (1)-detection count | \n",
+ " (1)-detection count | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | T1059.007 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " (1)-detection count | \n",
+ " (1)-detection count | \n",
+ "
\n",
+ " \n",
+ " | T1218.010 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " (3)-detection count | \n",
+ " (3)-detection count | \n",
+ "
\n",
+ " \n",
+ " | T1055.001 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " (1)-detection count | \n",
+ " (1)-detection count | \n",
+ "
\n",
+ " \n",
+ " | T1592 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " (2)-detection count | \n",
+ " (1)-detection count | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " Azorult Trickbot Qakbot \\\n",
+ "T1021 (5)-detection count (1)-detection count NaN \n",
+ "T1590 (1)-detection count (1)-detection count NaN \n",
+ "T1590.005 (1)-detection count (1)-detection count NaN \n",
+ "T1049 (1)-detection count NaN (2)-detection count \n",
+ "T1059.003 (2)-detection count NaN (1)-detection count \n",
+ "T1569 (1)-detection count NaN (1)-detection count \n",
+ "T1569.002 (1)-detection count NaN (1)-detection count \n",
+ "T1027 NaN (1)-detection count (1)-detection count \n",
+ "T1059.007 NaN NaN (1)-detection count \n",
+ "T1218.010 NaN NaN (3)-detection count \n",
+ "T1055.001 NaN NaN (1)-detection count \n",
+ "T1592 NaN NaN (2)-detection count \n",
+ "\n",
+ " Remcos \n",
+ "T1021 NaN \n",
+ "T1590 NaN \n",
+ "T1590.005 NaN \n",
+ "T1049 NaN \n",
+ "T1059.003 NaN \n",
+ "T1569 NaN \n",
+ "T1569.002 NaN \n",
+ "T1027 NaN \n",
+ "T1059.007 (1)-detection count \n",
+ "T1218.010 (3)-detection count \n",
+ "T1055.001 (1)-detection count \n",
+ "T1592 (1)-detection count "
+ ]
+ },
+ "execution_count": 28,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "detection_list_by_count(det_table_dict)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "316697a7-1d08-442d-849d-72a17764495d",
+ "metadata": {},
+ "source": [
+ "### Highlight Mitre Attack ID that detects 1/5 malware family"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 29,
+ "id": "5805b5e1-679d-45b5-8e31-19cbc6edd390",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ " \n",
+ " \n",
+ " | | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 5 malware coverage | \n",
+ " yellow | \n",
+ "
\n",
+ " \n",
+ " | 4 malware coverage | \n",
+ " orange | \n",
+ "
\n",
+ " \n",
+ " | 3 malware coverage | \n",
+ " lightgreen | \n",
+ "
\n",
+ " \n",
+ " | 2 malware coverage | \n",
+ " lightblue | \n",
+ "
\n",
+ " \n",
+ " | 1 malware coverage | \n",
+ " lightgray | \n",
+ "
\n",
+ " \n",
+ "
\n"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 29,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "show_legend()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 30,
+ "id": "1ed5bbe5-d4e8-42f3-b086-9bc065f314ed",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ " \n",
+ " \n",
+ " | | \n",
+ " Remcos | \n",
+ " AgentTesla | \n",
+ " Azorult | \n",
+ " Qakbot | \n",
+ " Trickbot | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 0 | \n",
+ " T1036 | \n",
+ " T1014 | \n",
+ " T1021 | \n",
+ " T1016 | \n",
+ " T1021 | \n",
+ "
\n",
+ " \n",
+ " | 1 | \n",
+ " T1055 | \n",
+ " T1036 | \n",
+ " T1021.001 | \n",
+ " T1016.001 | \n",
+ " T1021.002 | \n",
+ "
\n",
+ " \n",
+ " | 2 | \n",
+ " T1055.001 | \n",
+ " T1053 | \n",
+ " T1036 | \n",
+ " T1027 | \n",
+ " T1027 | \n",
+ "
\n",
+ " \n",
+ " | 3 | \n",
+ " T1059 | \n",
+ " T1053.005 | \n",
+ " T1049 | \n",
+ " T1033 | \n",
+ " T1036 | \n",
+ "
\n",
+ " \n",
+ " | 4 | \n",
+ " T1059.005 | \n",
+ " T1059 | \n",
+ " T1053 | \n",
+ " T1036 | \n",
+ " T1053 | \n",
+ "
\n",
+ " \n",
+ " | 5 | \n",
+ " T1059.007 | \n",
+ " T1059.001 | \n",
+ " T1053.005 | \n",
+ " T1036.003 | \n",
+ " T1053.005 | \n",
+ "
\n",
+ " \n",
+ " | 6 | \n",
+ " T1070 | \n",
+ " T1068 | \n",
+ " T1059 | \n",
+ " T1047 | \n",
+ " T1055 | \n",
+ "
\n",
+ " \n",
+ " | 7 | \n",
+ " T1112 | \n",
+ " T1071 | \n",
+ " T1059.001 | \n",
+ " T1049 | \n",
+ " T1059 | \n",
+ "
\n",
+ " \n",
+ " | 8 | \n",
+ " T1113 | \n",
+ " T1071.003 | \n",
+ " T1059.003 | \n",
+ " T1053 | \n",
+ " T1087 | \n",
+ "
\n",
+ " \n",
+ " | 9 | \n",
+ " T1134 | \n",
+ " T1204 | \n",
+ " T1069 | \n",
+ " T1053.005 | \n",
+ " T1087.002 | \n",
+ "
\n",
+ " \n",
+ " | 10 | \n",
+ " T1134.004 | \n",
+ " T1204.001 | \n",
+ " T1069.001 | \n",
+ " T1055 | \n",
+ " T1218 | \n",
+ "
\n",
+ " \n",
+ " | 11 | \n",
+ " T1204 | \n",
+ " T1218 | \n",
+ " T1071 | \n",
+ " T1055.001 | \n",
+ " T1218.005 | \n",
+ "
\n",
+ " \n",
+ " | 12 | \n",
+ " T1204.001 | \n",
+ " T1218.001 | \n",
+ " T1112 | \n",
+ " T1055.002 | \n",
+ " T1218.011 | \n",
+ "
\n",
+ " \n",
+ " | 13 | \n",
+ " T1218 | \n",
+ " T1543 | \n",
+ " T1136 | \n",
+ " T1059 | \n",
+ " T1543 | \n",
+ "
\n",
+ " \n",
+ " | 14 | \n",
+ " T1218.010 | \n",
+ " T1543.003 | \n",
+ " T1136.001 | \n",
+ " T1059.001 | \n",
+ " T1562 | \n",
+ "
\n",
+ " \n",
+ " | 15 | \n",
+ " T1543 | \n",
+ " T1548 | \n",
+ " T1204 | \n",
+ " T1059.003 | \n",
+ " T1562.001 | \n",
+ "
\n",
+ " \n",
+ " | 16 | \n",
+ " T1547 | \n",
+ " T1548.002 | \n",
+ " T1204.001 | \n",
+ " T1059.007 | \n",
+ " T1566 | \n",
+ "
\n",
+ " \n",
+ " | 17 | \n",
+ " T1547.001 | \n",
+ " T1555 | \n",
+ " T1219 | \n",
+ " T1071 | \n",
+ " T1566.001 | \n",
+ "
\n",
+ " \n",
+ " | 18 | \n",
+ " T1548 | \n",
+ " T1555.003 | \n",
+ " T1222 | \n",
+ " T1112 | \n",
+ " T1590 | \n",
+ "
\n",
+ " \n",
+ " | 19 | \n",
+ " T1548.002 | \n",
+ " T1562 | \n",
+ " T1222.001 | \n",
+ " T1204 | \n",
+ " T1590.005 | \n",
+ "
\n",
+ " \n",
+ " | 20 | \n",
+ " T1555 | \n",
+ " T1562.001 | \n",
+ " T1489 | \n",
+ " T1204.001 | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ " | 21 | \n",
+ " T1555.003 | \n",
+ " T1566 | \n",
+ " T1531 | \n",
+ " T1218 | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ " | 22 | \n",
+ " T1559.001 | \n",
+ " T1566.001 | \n",
+ " T1543 | \n",
+ " T1218.010 | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ " | 23 | \n",
+ " T1562 | \n",
+ " nan | \n",
+ " T1543.003 | \n",
+ " T1482 | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ " | 24 | \n",
+ " T1562.001 | \n",
+ " nan | \n",
+ " T1547 | \n",
+ " T1543 | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ " | 25 | \n",
+ " T1566 | \n",
+ " nan | \n",
+ " T1547.001 | \n",
+ " T1543.003 | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ " | 26 | \n",
+ " T1566.001 | \n",
+ " nan | \n",
+ " T1548 | \n",
+ " T1547 | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ " | 27 | \n",
+ " T1592 | \n",
+ " nan | \n",
+ " T1548.002 | \n",
+ " T1547.001 | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ " | 28 | \n",
+ " nan | \n",
+ " nan | \n",
+ " T1555 | \n",
+ " T1562 | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ " | 29 | \n",
+ " nan | \n",
+ " nan | \n",
+ " T1555.003 | \n",
+ " T1562.001 | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ " | 30 | \n",
+ " nan | \n",
+ " nan | \n",
+ " T1562 | \n",
+ " T1566 | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ " | 31 | \n",
+ " nan | \n",
+ " nan | \n",
+ " T1562.001 | \n",
+ " T1566.001 | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ " | 32 | \n",
+ " nan | \n",
+ " nan | \n",
+ " T1562.004 | \n",
+ " T1566.002 | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ " | 33 | \n",
+ " nan | \n",
+ " nan | \n",
+ " T1564 | \n",
+ " T1569 | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ " | 34 | \n",
+ " nan | \n",
+ " nan | \n",
+ " T1564.001 | \n",
+ " T1569.002 | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ " | 35 | \n",
+ " nan | \n",
+ " nan | \n",
+ " T1566 | \n",
+ " T1574 | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ " | 36 | \n",
+ " nan | \n",
+ " nan | \n",
+ " T1566.001 | \n",
+ " T1574.001 | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ " | 37 | \n",
+ " nan | \n",
+ " nan | \n",
+ " T1569 | \n",
+ " T1574.002 | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ " | 38 | \n",
+ " nan | \n",
+ " nan | \n",
+ " T1569.002 | \n",
+ " T1592 | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ " | 39 | \n",
+ " nan | \n",
+ " nan | \n",
+ " T1590 | \n",
+ " nan | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ " | 40 | \n",
+ " nan | \n",
+ " nan | \n",
+ " T1590.005 | \n",
+ " nan | \n",
+ " nan | \n",
+ "
\n",
+ " \n",
+ "
\n"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 30,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "df.style.applymap(highlight_cells_1)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "b55314eb-390a-4396-acf6-4532b0480482",
+ "metadata": {},
+ "source": [
+ "### Summary of Mitre Attack ID that detects 1/5 malware family"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 31,
+ "id": "04b58cd6-09ae-41df-bd11-e973b7954b95",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | T1218.001 | \n",
+ " AgentTesla | \n",
+ "
\n",
+ " \n",
+ " | T1068 | \n",
+ " AgentTesla | \n",
+ "
\n",
+ " \n",
+ " | T1071.003 | \n",
+ " AgentTesla | \n",
+ "
\n",
+ " \n",
+ " | T1014 | \n",
+ " AgentTesla | \n",
+ "
\n",
+ " \n",
+ " | T1136 | \n",
+ " Azorult | \n",
+ "
\n",
+ " \n",
+ " | T1222.001 | \n",
+ " Azorult | \n",
+ "
\n",
+ " \n",
+ " | T1564 | \n",
+ " Azorult | \n",
+ "
\n",
+ " \n",
+ " | T1564.001 | \n",
+ " Azorult | \n",
+ "
\n",
+ " \n",
+ " | T1531 | \n",
+ " Azorult | \n",
+ "
\n",
+ " \n",
+ " | T1069 | \n",
+ " Azorult | \n",
+ "
\n",
+ " \n",
+ " | T1136.001 | \n",
+ " Azorult | \n",
+ "
\n",
+ " \n",
+ " | T1069.001 | \n",
+ " Azorult | \n",
+ "
\n",
+ " \n",
+ " | T1489 | \n",
+ " Azorult | \n",
+ "
\n",
+ " \n",
+ " | T1219 | \n",
+ " Azorult | \n",
+ "
\n",
+ " \n",
+ " | T1222 | \n",
+ " Azorult | \n",
+ "
\n",
+ " \n",
+ " | T1562.004 | \n",
+ " Azorult | \n",
+ "
\n",
+ " \n",
+ " | T1021.001 | \n",
+ " Azorult | \n",
+ "
\n",
+ " \n",
+ " | T1566.002 | \n",
+ " Qakbot | \n",
+ "
\n",
+ " \n",
+ " | T1574.002 | \n",
+ " Qakbot | \n",
+ "
\n",
+ " \n",
+ " | T1482 | \n",
+ " Qakbot | \n",
+ "
\n",
+ " \n",
+ " | T1036.003 | \n",
+ " Qakbot | \n",
+ "
\n",
+ " \n",
+ " | T1574 | \n",
+ " Qakbot | \n",
+ "
\n",
+ " \n",
+ " | T1055.002 | \n",
+ " Qakbot | \n",
+ "
\n",
+ " \n",
+ " | T1047 | \n",
+ " Qakbot | \n",
+ "
\n",
+ " \n",
+ " | T1574.001 | \n",
+ " Qakbot | \n",
+ "
\n",
+ " \n",
+ " | T1016.001 | \n",
+ " Qakbot | \n",
+ "
\n",
+ " \n",
+ " | T1016 | \n",
+ " Qakbot | \n",
+ "
\n",
+ " \n",
+ " | T1033 | \n",
+ " Qakbot | \n",
+ "
\n",
+ " \n",
+ " | T1134 | \n",
+ " Remcos | \n",
+ "
\n",
+ " \n",
+ " | T1134.004 | \n",
+ " Remcos | \n",
+ "
\n",
+ " \n",
+ " | T1059.005 | \n",
+ " Remcos | \n",
+ "
\n",
+ " \n",
+ " | T1070 | \n",
+ " Remcos | \n",
+ "
\n",
+ " \n",
+ " | T1113 | \n",
+ " Remcos | \n",
+ "
\n",
+ " \n",
+ " | T1559.001 | \n",
+ " Remcos | \n",
+ "
\n",
+ " \n",
+ " | T1021.002 | \n",
+ " Trickbot | \n",
+ "
\n",
+ " \n",
+ " | T1087 | \n",
+ " Trickbot | \n",
+ "
\n",
+ " \n",
+ " | T1087.002 | \n",
+ " Trickbot | \n",
+ "
\n",
+ " \n",
+ " | T1218.005 | \n",
+ " Trickbot | \n",
+ "
\n",
+ " \n",
+ " | T1218.011 | \n",
+ " Trickbot | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " 0\n",
+ "T1218.001 AgentTesla\n",
+ "T1068 AgentTesla\n",
+ "T1071.003 AgentTesla\n",
+ "T1014 AgentTesla\n",
+ "T1136 Azorult\n",
+ "T1222.001 Azorult\n",
+ "T1564 Azorult\n",
+ "T1564.001 Azorult\n",
+ "T1531 Azorult\n",
+ "T1069 Azorult\n",
+ "T1136.001 Azorult\n",
+ "T1069.001 Azorult\n",
+ "T1489 Azorult\n",
+ "T1219 Azorult\n",
+ "T1222 Azorult\n",
+ "T1562.004 Azorult\n",
+ "T1021.001 Azorult\n",
+ "T1566.002 Qakbot\n",
+ "T1574.002 Qakbot\n",
+ "T1482 Qakbot\n",
+ "T1036.003 Qakbot\n",
+ "T1574 Qakbot\n",
+ "T1055.002 Qakbot\n",
+ "T1047 Qakbot\n",
+ "T1574.001 Qakbot\n",
+ "T1016.001 Qakbot\n",
+ "T1016 Qakbot\n",
+ "T1033 Qakbot\n",
+ "T1134 Remcos\n",
+ "T1134.004 Remcos\n",
+ "T1059.005 Remcos\n",
+ "T1070 Remcos\n",
+ "T1113 Remcos\n",
+ "T1559.001 Remcos\n",
+ "T1021.002 Trickbot\n",
+ "T1087 Trickbot\n",
+ "T1087.002 Trickbot\n",
+ "T1218.005 Trickbot\n",
+ "T1218.011 Trickbot"
+ ]
+ },
+ "execution_count": 31,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "temp_dict = summary_table_of_id(mitre_attack_tid_dict, 1)\n",
+ "tdf = pd.DataFrame.from_dict(temp_dict, orient='index')\n",
+ "tdf = tdf.sort_values(by=[0])\n",
+ "tdf"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "c74c33a6-86e8-4897-aa03-64b1a1085ddf",
+ "metadata": {},
+ "source": [
+ "### detection list for Mitre Attack ID that detects 1/5 malware families"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 32,
+ "id": "98f8eec2-b101-4cb2-b46d-182de0a7523c",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "(39, 5)\n"
+ ]
+ },
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " Remcos | \n",
+ " Azorult | \n",
+ " Qakbot | \n",
+ " AgentTesla | \n",
+ " Trickbot | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | T1059.005 | \n",
+ " [suspicious_process_dns_query_known_abuse_web_services.yml, vbscript_execution_using_wscript_app.yml] | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | T1113 | \n",
+ " [remcos_rat_file_creation_in_remcos_folder.yml, suspicious_image_creation_in_appdata_folder.yml, suspicious_wav_file_in_appdata_folder.yml] | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | T1070 | \n",
+ " [process_deleting_its_process_file_path.yml] | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | T1559.001 | \n",
+ " [process_writing_dynamicwrapperx.yml] | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | T1134.004 | \n",
+ " [wscript_or_cscript_suspicious_child_process.yml] | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | T1134 | \n",
+ " [wscript_or_cscript_suspicious_child_process.yml] | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | T1021.001 | \n",
+ " NaN | \n",
+ " [allow_inbound_traffic_by_firewall_rule_registry.yml, windows_remote_service_rdpwinst_tool_execution.yml, windows_remote_services_allow_rdp_in_firewall.yml, windows_remote_services_allow_remote_assistance.yml, windows_remote_services_rdp_enable.yml] | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | T1489 | \n",
+ " NaN | \n",
+ " [excessive_attempt_to_disable_services.yml, windows_service_stop_by_deletion.yml, windows_valid_account_with_never_expires_password.yml] | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | T1219 | \n",
+ " NaN | \n",
+ " [windows_remote_access_software_rms_registry.yml] | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | T1562.004 | \n",
+ " NaN | \n",
+ " [firewall_allowed_program_enable.yml, processes_launching_netsh.yml] | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | T1222 | \n",
+ " NaN | \n",
+ " [excessive_usage_of_cacls_app.yml, hiding_files_and_directories_with_attrib_exe.yml, icacls_deny_command.yml] | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | T1136.001 | \n",
+ " NaN | \n",
+ " [create_local_admin_accounts_using_net_exe.yml] | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | T1136 | \n",
+ " NaN | \n",
+ " [create_local_admin_accounts_using_net_exe.yml] | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | T1531 | \n",
+ " NaN | \n",
+ " [excessive_usage_of_net_app.yml] | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | T1564.001 | \n",
+ " NaN | \n",
+ " [disable_show_hidden_files.yml] | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | T1564 | \n",
+ " NaN | \n",
+ " [disable_show_hidden_files.yml] | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | T1222.001 | \n",
+ " NaN | \n",
+ " [hiding_files_and_directories_with_attrib_exe.yml] | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | T1069 | \n",
+ " NaN | \n",
+ " [net_localgroup_discovery.yml] | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | T1069.001 | \n",
+ " NaN | \n",
+ " [net_localgroup_discovery.yml] | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | T1055.002 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " [windows_process_injection_remote_thread.yml] | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | T1033 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " [system_user_discovery_with_whoami.yml, windows_system_discovery_using_ldap_nslookup.yml, windows_system_discovery_using_qwinsta.yml] | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | T1047 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " [windows_wmi_impersonate_token.yml, windows_wmi_process_call_create.yml] | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | T1574.002 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " [windows_dll_side_loading_in_calc.yml, windows_dll_side_loading_process_child_of_calc.yml, windows_masquerading_explorer_as_child_process.yml] | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | T1574 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " [windows_dll_search_order_hijacking_hunt_with_sysmon.yml, windows_dll_side_loading_in_calc.yml, windows_dll_side_loading_process_child_of_calc.yml, windows_masquerading_explorer_as_child_process.yml] | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | T1016 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " [network_discovery_using_route_windows_app.yml] | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | T1016.001 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " [network_discovery_using_route_windows_app.yml] | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | T1036.003 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " [suspicious_copy_on_system32.yml, system_processes_run_from_unexpected_locations.yml] | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | T1566.002 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " [process_creating_lnk_file_in_suspicious_location.yml] | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | T1482 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " [nltest_domain_trust_discovery.yml] | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | T1574.001 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " [windows_dll_search_order_hijacking_hunt_with_sysmon.yml] | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | T1071.003 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " [windows_file_transfer_protocol_in_non_common_process_path.yml, windows_mail_protocol_in_non_common_process_path.yml, windows_multi_hop_proxy_tor_website_query.yml] | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | T1014 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " [windows_driver_load_non_standard_path.yml, windows_drivers_loaded_by_signature.yml] | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | T1068 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " [windows_drivers_loaded_by_signature.yml] | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | T1218.001 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " [detect_html_help_spawn_child_process.yml] | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | T1218.005 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " [mshta_spawning_rundll32_or_regsvr32_process.yml] | \n",
+ "
\n",
+ " \n",
+ " | T1087.002 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " [account_discovery_with_net_app.yml] | \n",
+ "
\n",
+ " \n",
+ " | T1087 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " [account_discovery_with_net_app.yml] | \n",
+ "
\n",
+ " \n",
+ " | T1218.011 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " [suspicious_rundll32_startw.yml] | \n",
+ "
\n",
+ " \n",
+ " | T1021.002 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " [executable_file_written_in_administrative_smb_share.yml] | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " Remcos \\\n",
+ "T1059.005 [suspicious_process_dns_query_known_abuse_web_services.yml, vbscript_execution_using_wscript_app.yml] \n",
+ "T1113 [remcos_rat_file_creation_in_remcos_folder.yml, suspicious_image_creation_in_appdata_folder.yml, suspicious_wav_file_in_appdata_folder.yml] \n",
+ "T1070 [process_deleting_its_process_file_path.yml] \n",
+ "T1559.001 [process_writing_dynamicwrapperx.yml] \n",
+ "T1134.004 [wscript_or_cscript_suspicious_child_process.yml] \n",
+ "T1134 [wscript_or_cscript_suspicious_child_process.yml] \n",
+ "T1021.001 NaN \n",
+ "T1489 NaN \n",
+ "T1219 NaN \n",
+ "T1562.004 NaN \n",
+ "T1222 NaN \n",
+ "T1136.001 NaN \n",
+ "T1136 NaN \n",
+ "T1531 NaN \n",
+ "T1564.001 NaN \n",
+ "T1564 NaN \n",
+ "T1222.001 NaN \n",
+ "T1069 NaN \n",
+ "T1069.001 NaN \n",
+ "T1055.002 NaN \n",
+ "T1033 NaN \n",
+ "T1047 NaN \n",
+ "T1574.002 NaN \n",
+ "T1574 NaN \n",
+ "T1016 NaN \n",
+ "T1016.001 NaN \n",
+ "T1036.003 NaN \n",
+ "T1566.002 NaN \n",
+ "T1482 NaN \n",
+ "T1574.001 NaN \n",
+ "T1071.003 NaN \n",
+ "T1014 NaN \n",
+ "T1068 NaN \n",
+ "T1218.001 NaN \n",
+ "T1218.005 NaN \n",
+ "T1087.002 NaN \n",
+ "T1087 NaN \n",
+ "T1218.011 NaN \n",
+ "T1021.002 NaN \n",
+ "\n",
+ " Azorult \\\n",
+ "T1059.005 NaN \n",
+ "T1113 NaN \n",
+ "T1070 NaN \n",
+ "T1559.001 NaN \n",
+ "T1134.004 NaN \n",
+ "T1134 NaN \n",
+ "T1021.001 [allow_inbound_traffic_by_firewall_rule_registry.yml, windows_remote_service_rdpwinst_tool_execution.yml, windows_remote_services_allow_rdp_in_firewall.yml, windows_remote_services_allow_remote_assistance.yml, windows_remote_services_rdp_enable.yml] \n",
+ "T1489 [excessive_attempt_to_disable_services.yml, windows_service_stop_by_deletion.yml, windows_valid_account_with_never_expires_password.yml] \n",
+ "T1219 [windows_remote_access_software_rms_registry.yml] \n",
+ "T1562.004 [firewall_allowed_program_enable.yml, processes_launching_netsh.yml] \n",
+ "T1222 [excessive_usage_of_cacls_app.yml, hiding_files_and_directories_with_attrib_exe.yml, icacls_deny_command.yml] \n",
+ "T1136.001 [create_local_admin_accounts_using_net_exe.yml] \n",
+ "T1136 [create_local_admin_accounts_using_net_exe.yml] \n",
+ "T1531 [excessive_usage_of_net_app.yml] \n",
+ "T1564.001 [disable_show_hidden_files.yml] \n",
+ "T1564 [disable_show_hidden_files.yml] \n",
+ "T1222.001 [hiding_files_and_directories_with_attrib_exe.yml] \n",
+ "T1069 [net_localgroup_discovery.yml] \n",
+ "T1069.001 [net_localgroup_discovery.yml] \n",
+ "T1055.002 NaN \n",
+ "T1033 NaN \n",
+ "T1047 NaN \n",
+ "T1574.002 NaN \n",
+ "T1574 NaN \n",
+ "T1016 NaN \n",
+ "T1016.001 NaN \n",
+ "T1036.003 NaN \n",
+ "T1566.002 NaN \n",
+ "T1482 NaN \n",
+ "T1574.001 NaN \n",
+ "T1071.003 NaN \n",
+ "T1014 NaN \n",
+ "T1068 NaN \n",
+ "T1218.001 NaN \n",
+ "T1218.005 NaN \n",
+ "T1087.002 NaN \n",
+ "T1087 NaN \n",
+ "T1218.011 NaN \n",
+ "T1021.002 NaN \n",
+ "\n",
+ " Qakbot \\\n",
+ "T1059.005 NaN \n",
+ "T1113 NaN \n",
+ "T1070 NaN \n",
+ "T1559.001 NaN \n",
+ "T1134.004 NaN \n",
+ "T1134 NaN \n",
+ "T1021.001 NaN \n",
+ "T1489 NaN \n",
+ "T1219 NaN \n",
+ "T1562.004 NaN \n",
+ "T1222 NaN \n",
+ "T1136.001 NaN \n",
+ "T1136 NaN \n",
+ "T1531 NaN \n",
+ "T1564.001 NaN \n",
+ "T1564 NaN \n",
+ "T1222.001 NaN \n",
+ "T1069 NaN \n",
+ "T1069.001 NaN \n",
+ "T1055.002 [windows_process_injection_remote_thread.yml] \n",
+ "T1033 [system_user_discovery_with_whoami.yml, windows_system_discovery_using_ldap_nslookup.yml, windows_system_discovery_using_qwinsta.yml] \n",
+ "T1047 [windows_wmi_impersonate_token.yml, windows_wmi_process_call_create.yml] \n",
+ "T1574.002 [windows_dll_side_loading_in_calc.yml, windows_dll_side_loading_process_child_of_calc.yml, windows_masquerading_explorer_as_child_process.yml] \n",
+ "T1574 [windows_dll_search_order_hijacking_hunt_with_sysmon.yml, windows_dll_side_loading_in_calc.yml, windows_dll_side_loading_process_child_of_calc.yml, windows_masquerading_explorer_as_child_process.yml] \n",
+ "T1016 [network_discovery_using_route_windows_app.yml] \n",
+ "T1016.001 [network_discovery_using_route_windows_app.yml] \n",
+ "T1036.003 [suspicious_copy_on_system32.yml, system_processes_run_from_unexpected_locations.yml] \n",
+ "T1566.002 [process_creating_lnk_file_in_suspicious_location.yml] \n",
+ "T1482 [nltest_domain_trust_discovery.yml] \n",
+ "T1574.001 [windows_dll_search_order_hijacking_hunt_with_sysmon.yml] \n",
+ "T1071.003 NaN \n",
+ "T1014 NaN \n",
+ "T1068 NaN \n",
+ "T1218.001 NaN \n",
+ "T1218.005 NaN \n",
+ "T1087.002 NaN \n",
+ "T1087 NaN \n",
+ "T1218.011 NaN \n",
+ "T1021.002 NaN \n",
+ "\n",
+ " AgentTesla \\\n",
+ "T1059.005 NaN \n",
+ "T1113 NaN \n",
+ "T1070 NaN \n",
+ "T1559.001 NaN \n",
+ "T1134.004 NaN \n",
+ "T1134 NaN \n",
+ "T1021.001 NaN \n",
+ "T1489 NaN \n",
+ "T1219 NaN \n",
+ "T1562.004 NaN \n",
+ "T1222 NaN \n",
+ "T1136.001 NaN \n",
+ "T1136 NaN \n",
+ "T1531 NaN \n",
+ "T1564.001 NaN \n",
+ "T1564 NaN \n",
+ "T1222.001 NaN \n",
+ "T1069 NaN \n",
+ "T1069.001 NaN \n",
+ "T1055.002 NaN \n",
+ "T1033 NaN \n",
+ "T1047 NaN \n",
+ "T1574.002 NaN \n",
+ "T1574 NaN \n",
+ "T1016 NaN \n",
+ "T1016.001 NaN \n",
+ "T1036.003 NaN \n",
+ "T1566.002 NaN \n",
+ "T1482 NaN \n",
+ "T1574.001 NaN \n",
+ "T1071.003 [windows_file_transfer_protocol_in_non_common_process_path.yml, windows_mail_protocol_in_non_common_process_path.yml, windows_multi_hop_proxy_tor_website_query.yml] \n",
+ "T1014 [windows_driver_load_non_standard_path.yml, windows_drivers_loaded_by_signature.yml] \n",
+ "T1068 [windows_drivers_loaded_by_signature.yml] \n",
+ "T1218.001 [detect_html_help_spawn_child_process.yml] \n",
+ "T1218.005 NaN \n",
+ "T1087.002 NaN \n",
+ "T1087 NaN \n",
+ "T1218.011 NaN \n",
+ "T1021.002 NaN \n",
+ "\n",
+ " Trickbot \n",
+ "T1059.005 NaN \n",
+ "T1113 NaN \n",
+ "T1070 NaN \n",
+ "T1559.001 NaN \n",
+ "T1134.004 NaN \n",
+ "T1134 NaN \n",
+ "T1021.001 NaN \n",
+ "T1489 NaN \n",
+ "T1219 NaN \n",
+ "T1562.004 NaN \n",
+ "T1222 NaN \n",
+ "T1136.001 NaN \n",
+ "T1136 NaN \n",
+ "T1531 NaN \n",
+ "T1564.001 NaN \n",
+ "T1564 NaN \n",
+ "T1222.001 NaN \n",
+ "T1069 NaN \n",
+ "T1069.001 NaN \n",
+ "T1055.002 NaN \n",
+ "T1033 NaN \n",
+ "T1047 NaN \n",
+ "T1574.002 NaN \n",
+ "T1574 NaN \n",
+ "T1016 NaN \n",
+ "T1016.001 NaN \n",
+ "T1036.003 NaN \n",
+ "T1566.002 NaN \n",
+ "T1482 NaN \n",
+ "T1574.001 NaN \n",
+ "T1071.003 NaN \n",
+ "T1014 NaN \n",
+ "T1068 NaN \n",
+ "T1218.001 NaN \n",
+ "T1218.005 [mshta_spawning_rundll32_or_regsvr32_process.yml] \n",
+ "T1087.002 [account_discovery_with_net_app.yml] \n",
+ "T1087 [account_discovery_with_net_app.yml] \n",
+ "T1218.011 [suspicious_rundll32_startw.yml] \n",
+ "T1021.002 [executable_file_written_in_administrative_smb_share.yml] "
+ ]
+ },
+ "execution_count": 32,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "det_table_dict = detection_list_by_id(temp_dict)\n",
+ "tdf = pd.DataFrame.from_dict(det_table_dict, orient='index')\n",
+ "print(tdf.shape)\n",
+ "tdf "
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "9ad6099d-a1cf-464c-8678-50d013436254",
+ "metadata": {},
+ "source": [
+ "### detection count per mitre attack id in each malware family"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 33,
+ "id": "0f0abfc2-e6d8-4a42-b881-d4357b667a91",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " Remcos | \n",
+ " Azorult | \n",
+ " Qakbot | \n",
+ " AgentTesla | \n",
+ " Trickbot | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | T1059.005 | \n",
+ " (2)-detection count | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | T1113 | \n",
+ " (3)-detection count | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | T1070 | \n",
+ " (1)-detection count | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | T1559.001 | \n",
+ " (1)-detection count | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | T1134.004 | \n",
+ " (1)-detection count | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | T1134 | \n",
+ " (1)-detection count | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | T1021.001 | \n",
+ " NaN | \n",
+ " (5)-detection count | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | T1489 | \n",
+ " NaN | \n",
+ " (3)-detection count | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | T1219 | \n",
+ " NaN | \n",
+ " (1)-detection count | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | T1562.004 | \n",
+ " NaN | \n",
+ " (2)-detection count | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | T1222 | \n",
+ " NaN | \n",
+ " (3)-detection count | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | T1136.001 | \n",
+ " NaN | \n",
+ " (1)-detection count | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | T1136 | \n",
+ " NaN | \n",
+ " (1)-detection count | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | T1531 | \n",
+ " NaN | \n",
+ " (1)-detection count | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | T1564.001 | \n",
+ " NaN | \n",
+ " (1)-detection count | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | T1564 | \n",
+ " NaN | \n",
+ " (1)-detection count | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | T1222.001 | \n",
+ " NaN | \n",
+ " (1)-detection count | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | T1069 | \n",
+ " NaN | \n",
+ " (1)-detection count | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | T1069.001 | \n",
+ " NaN | \n",
+ " (1)-detection count | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | T1055.002 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " (1)-detection count | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | T1033 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " (3)-detection count | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | T1047 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " (2)-detection count | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | T1574.002 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " (3)-detection count | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | T1574 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " (4)-detection count | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | T1016 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " (1)-detection count | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | T1016.001 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " (1)-detection count | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | T1036.003 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " (2)-detection count | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | T1566.002 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " (1)-detection count | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | T1482 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " (1)-detection count | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | T1574.001 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " (1)-detection count | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | T1071.003 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " (3)-detection count | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | T1014 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " (2)-detection count | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | T1068 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " (1)-detection count | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | T1218.001 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " (1)-detection count | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | T1218.005 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " (1)-detection count | \n",
+ "
\n",
+ " \n",
+ " | T1087.002 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " (1)-detection count | \n",
+ "
\n",
+ " \n",
+ " | T1087 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " (1)-detection count | \n",
+ "
\n",
+ " \n",
+ " | T1218.011 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " (1)-detection count | \n",
+ "
\n",
+ " \n",
+ " | T1021.002 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " (1)-detection count | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " Remcos Azorult Qakbot \\\n",
+ "T1059.005 (2)-detection count NaN NaN \n",
+ "T1113 (3)-detection count NaN NaN \n",
+ "T1070 (1)-detection count NaN NaN \n",
+ "T1559.001 (1)-detection count NaN NaN \n",
+ "T1134.004 (1)-detection count NaN NaN \n",
+ "T1134 (1)-detection count NaN NaN \n",
+ "T1021.001 NaN (5)-detection count NaN \n",
+ "T1489 NaN (3)-detection count NaN \n",
+ "T1219 NaN (1)-detection count NaN \n",
+ "T1562.004 NaN (2)-detection count NaN \n",
+ "T1222 NaN (3)-detection count NaN \n",
+ "T1136.001 NaN (1)-detection count NaN \n",
+ "T1136 NaN (1)-detection count NaN \n",
+ "T1531 NaN (1)-detection count NaN \n",
+ "T1564.001 NaN (1)-detection count NaN \n",
+ "T1564 NaN (1)-detection count NaN \n",
+ "T1222.001 NaN (1)-detection count NaN \n",
+ "T1069 NaN (1)-detection count NaN \n",
+ "T1069.001 NaN (1)-detection count NaN \n",
+ "T1055.002 NaN NaN (1)-detection count \n",
+ "T1033 NaN NaN (3)-detection count \n",
+ "T1047 NaN NaN (2)-detection count \n",
+ "T1574.002 NaN NaN (3)-detection count \n",
+ "T1574 NaN NaN (4)-detection count \n",
+ "T1016 NaN NaN (1)-detection count \n",
+ "T1016.001 NaN NaN (1)-detection count \n",
+ "T1036.003 NaN NaN (2)-detection count \n",
+ "T1566.002 NaN NaN (1)-detection count \n",
+ "T1482 NaN NaN (1)-detection count \n",
+ "T1574.001 NaN NaN (1)-detection count \n",
+ "T1071.003 NaN NaN NaN \n",
+ "T1014 NaN NaN NaN \n",
+ "T1068 NaN NaN NaN \n",
+ "T1218.001 NaN NaN NaN \n",
+ "T1218.005 NaN NaN NaN \n",
+ "T1087.002 NaN NaN NaN \n",
+ "T1087 NaN NaN NaN \n",
+ "T1218.011 NaN NaN NaN \n",
+ "T1021.002 NaN NaN NaN \n",
+ "\n",
+ " AgentTesla Trickbot \n",
+ "T1059.005 NaN NaN \n",
+ "T1113 NaN NaN \n",
+ "T1070 NaN NaN \n",
+ "T1559.001 NaN NaN \n",
+ "T1134.004 NaN NaN \n",
+ "T1134 NaN NaN \n",
+ "T1021.001 NaN NaN \n",
+ "T1489 NaN NaN \n",
+ "T1219 NaN NaN \n",
+ "T1562.004 NaN NaN \n",
+ "T1222 NaN NaN \n",
+ "T1136.001 NaN NaN \n",
+ "T1136 NaN NaN \n",
+ "T1531 NaN NaN \n",
+ "T1564.001 NaN NaN \n",
+ "T1564 NaN NaN \n",
+ "T1222.001 NaN NaN \n",
+ "T1069 NaN NaN \n",
+ "T1069.001 NaN NaN \n",
+ "T1055.002 NaN NaN \n",
+ "T1033 NaN NaN \n",
+ "T1047 NaN NaN \n",
+ "T1574.002 NaN NaN \n",
+ "T1574 NaN NaN \n",
+ "T1016 NaN NaN \n",
+ "T1016.001 NaN NaN \n",
+ "T1036.003 NaN NaN \n",
+ "T1566.002 NaN NaN \n",
+ "T1482 NaN NaN \n",
+ "T1574.001 NaN NaN \n",
+ "T1071.003 (3)-detection count NaN \n",
+ "T1014 (2)-detection count NaN \n",
+ "T1068 (1)-detection count NaN \n",
+ "T1218.001 (1)-detection count NaN \n",
+ "T1218.005 NaN (1)-detection count \n",
+ "T1087.002 NaN (1)-detection count \n",
+ "T1087 NaN (1)-detection count \n",
+ "T1218.011 NaN (1)-detection count \n",
+ "T1021.002 NaN (1)-detection count "
+ ]
+ },
+ "execution_count": 33,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "detection_list_by_count(det_table_dict)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 34,
+ "id": "9a275cc7-9c29-492e-a266-7e5e15ca0874",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "['T1014', 'T1016', 'T1016.001', 'T1021', 'T1021.001', 'T1021.002', 'T1027', 'T1033', 'T1036', 'T1036.003', 'T1047', 'T1049', 'T1053', 'T1053.005', 'T1055', 'T1055.001', 'T1055.002', 'T1059', 'T1059.001', 'T1059.003', 'T1059.005', 'T1059.007', 'T1068', 'T1069', 'T1069.001', 'T1070', 'T1071', 'T1071.003', 'T1087', 'T1087.002', 'T1112', 'T1113', 'T1134', 'T1134.004', 'T1136', 'T1136.001', 'T1204', 'T1204.001', 'T1218', 'T1218.001', 'T1218.005', 'T1218.010', 'T1218.011', 'T1219', 'T1222', 'T1222.001', 'T1482', 'T1489', 'T1531', 'T1543', 'T1543.003', 'T1547', 'T1547.001', 'T1548', 'T1548.002', 'T1555', 'T1555.003', 'T1559.001', 'T1562', 'T1562.001', 'T1562.004', 'T1564', 'T1564.001', 'T1566', 'T1566.001', 'T1566.002', 'T1569', 'T1569.002', 'T1574', 'T1574.001', 'T1574.002', 'T1590', 'T1590.005', 'T1592']\n"
+ ]
+ }
+ ],
+ "source": [
+ "detection_tid_list =[]\n",
+ "for k,v in mitre_attack_tid_dict.items():\n",
+ " detection_tid_list.append(k)\n",
+ "\n",
+ "print(sorted(detection_tid_list))"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "e62ffc04-7445-479c-a5a8-751d0abd1b0f",
+ "metadata": {},
+ "source": [
+ "### truth table splunk detection name vs analytic story (malware family)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 35,
+ "id": "31decfcb-ca16-479c-88cc-51b5a72422f6",
+ "metadata": {
+ "tags": []
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "(140, 6)\n"
+ ]
+ },
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ " \n",
+ " \n",
+ " | | \n",
+ " Qakbot | \n",
+ " Azorult | \n",
+ " Remcos | \n",
+ " Trickbot | \n",
+ " AgentTesla | \n",
+ " total_coverage | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | office_document_executing_macro_code.yml | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " 5 | \n",
+ "
\n",
+ " \n",
+ " | suspicious_process_file_path.yml | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " 5 | \n",
+ "
\n",
+ " \n",
+ " | executables_or_script_creation_in_suspicious_path.yml | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " 5 | \n",
+ "
\n",
+ " \n",
+ " | office_product_spawn_cmd_process.yml | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " 5 | \n",
+ "
\n",
+ " \n",
+ " | windows_phishing_recent_iso_exec_registry.yml | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " no | \n",
+ " yes | \n",
+ " 4 | \n",
+ "
\n",
+ " \n",
+ " | windows_iso_lnk_file_creation.yml | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " no | \n",
+ " yes | \n",
+ " 4 | \n",
+ "
\n",
+ " \n",
+ " | scheduled_task_deleted_or_created_via_cmd.yml | \n",
+ " yes | \n",
+ " yes | \n",
+ " no | \n",
+ " yes | \n",
+ " yes | \n",
+ " 4 | \n",
+ "
\n",
+ " \n",
+ " | registry_keys_used_for_persistence.yml | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " 3 | \n",
+ "
\n",
+ " \n",
+ " | non_firefox_process_access_firefox_profile_dir.yml | \n",
+ " no | \n",
+ " yes | \n",
+ " yes | \n",
+ " no | \n",
+ " yes | \n",
+ " 3 | \n",
+ "
\n",
+ " \n",
+ " | windows_defender_exclusion_registry_entry.yml | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " 3 | \n",
+ "
\n",
+ " \n",
+ " | disabling_remote_user_account_control.yml | \n",
+ " no | \n",
+ " yes | \n",
+ " yes | \n",
+ " no | \n",
+ " yes | \n",
+ " 3 | \n",
+ "
\n",
+ " \n",
+ " | add_or_set_windows_defender_exclusion.yml | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " yes | \n",
+ " 2 | \n",
+ "
\n",
+ " \n",
+ " | disable_defender_spynet_reporting.yml | \n",
+ " yes | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 2 | \n",
+ "
\n",
+ " \n",
+ " | office_product_spawning_certutil.yml | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " yes | \n",
+ " 2 | \n",
+ "
\n",
+ " \n",
+ " | excessive_usage_of_taskkill.yml | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " 2 | \n",
+ "
\n",
+ " \n",
+ " | regsvr32_with_known_silent_switch_cmdline.yml | \n",
+ " yes | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " 2 | \n",
+ "
\n",
+ " \n",
+ " | cmd_carry_out_string_command_parameter.yml | \n",
+ " yes | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 2 | \n",
+ "
\n",
+ " \n",
+ " | office_application_spawn_rundll32_process.yml | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " yes | \n",
+ " 2 | \n",
+ "
\n",
+ " \n",
+ " | powershell_windows_defender_exclusion_commands.yml | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " yes | \n",
+ " 2 | \n",
+ "
\n",
+ " \n",
+ " | attempt_to_stop_security_service.yml | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " 2 | \n",
+ "
\n",
+ " \n",
+ " | wermgr_process_spawned_cmd_or_powershell_process.yml | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " 2 | \n",
+ "
\n",
+ " \n",
+ " | non_chrome_process_accessing_chrome_default_dir.yml | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " yes | \n",
+ " 2 | \n",
+ "
\n",
+ " \n",
+ " | chcp_command_execution.yml | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | jscript_execution_using_cscript_app.yml | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | wmic_noninteractive_app_uninstallation.yml | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | executable_file_written_in_administrative_smb_share.yml | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | windows_powershell_import_applocker_policy.yml | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | windows_service_stop_by_deletion.yml | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | disable_defender_submit_samples_consent_feature.yml | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | schedule_task_with_rundll32_command_trigger.yml | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | suspicious_copy_on_system32.yml | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | detect_html_help_spawn_child_process.yml | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | windows_modify_registry_disallow_windows_app.yml | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | services_exe_lolbas_execution_process_spawn.yml | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | windows_gather_victim_network_info_through_ip_check_web_services.yml | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | suspicious_rundll32_startw.yml | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | windows_regsvr32_renamed_binary.yml | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | winhlp32_spawning_a_process.yml | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | account_discovery_with_net_app.yml | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | excessive_usage_of_sc_service_utility.yml | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | disable_show_hidden_files.yml | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | windows_modify_registry_disable_win_defender_raw_write_notif.yml | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | process_writing_dynamicwrapperx.yml | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | detect_use_of_cmd_exe_to_launch_script_interpreters.yml | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | windows_valid_account_with_never_expires_password.yml | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | windows_schtasks_create_run_as_system.yml | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | windows_driver_load_non_standard_path.yml | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | windows_impair_defense_deny_security_software_with_applocker.yml | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | windows_dll_side_loading_process_child_of_calc.yml | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | windows_modify_registry_disabling_wer_settings.yml | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | net_localgroup_discovery.yml | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | windows_dll_search_order_hijacking_hunt_with_sysmon.yml | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | disable_defender_blockatfirstseen_feature.yml | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | powershell___connect_to_internet_with_hidden_window.yml | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | wscript_or_cscript_suspicious_child_process.yml | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | hiding_files_and_directories_with_attrib_exe.yml | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | windows_modify_registry_disable_toast_notifications.yml | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | windows_modify_registry_disable_windows_security_center_notif.yml | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | windows_application_layer_protocol_rms_radmin_tool_namedpipe.yml | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | windows_wmi_impersonate_token.yml | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | office_application_spawn_regsvr32_process.yml | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | windows_modify_registry_qakbot_binary_data_registry.yml | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | nltest_domain_trust_discovery.yml | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | windows_modify_registry_suppress_win_defender_notif.yml | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | process_creating_lnk_file_in_suspicious_location.yml | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | office_application_drop_executable.yml | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | allow_inbound_traffic_by_firewall_rule_registry.yml | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | disable_defender_enhanced_notification.yml | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | powershell_remote_thread_to_known_windows_process.yml | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | windows_process_injection_of_wermgr_to_known_browser.yml | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | windows_multi_hop_proxy_tor_website_query.yml | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | system_info_gathering_using_dxdiag_application.yml | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | windows_mail_protocol_in_non_common_process_path.yml | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | winevent_windows_task_scheduler_event_action_started.yml | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | regsvr32_silent_and_install_param_dll_loading.yml | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | network_connection_discovery_net.yml | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | windows_app_layer_protocol_wermgr_connect_to_namedpipe.yml | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | sc_exe_manipulating_windows_services.yml | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | disable_windows_behavior_monitoring.yml | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | create_remote_thread_in_shell_application.yml | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | network_connection_discovery_arp.yml | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | schtasks_run_task_on_demand.yml | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | windows_masquerading_explorer_as_child_process.yml | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | windows_wmi_process_call_create.yml | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | cmdline_tool_not_executed_in_cmd_shell.yml | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | windows_modify_registry_regedit_silent_reg_import.yml | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | windows_file_transfer_protocol_in_non_common_process_path.yml | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | network_connection_discovery_netstat.yml | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | windows_remote_services_rdp_enable.yml | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | suspicious_wav_file_in_appdata_folder.yml | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | allow_operation_with_consent_admin.yml | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | windows_remote_services_allow_rdp_in_firewall.yml | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | suspicious_process_dns_query_known_abuse_web_services.yml | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | icacls_deny_command.yml | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | processes_launching_netsh.yml | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | wermgr_process_connecting_to_ip_check_web_services.yml | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | hide_user_account_from_sign_in_screen.yml | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | remcos_rat_file_creation_in_remcos_folder.yml | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | windows_impair_defense_add_xml_applocker_rules.yml | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | windows_system_discovery_using_qwinsta.yml | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | wermgr_process_create_executable_file.yml | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | system_user_discovery_with_whoami.yml | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | windows_remote_services_allow_remote_assistance.yml | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | windows_remote_access_software_rms_registry.yml | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | windows_process_injection_remote_thread.yml | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | excessive_attempt_to_disable_services.yml | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | windows_remote_service_rdpwinst_tool_execution.yml | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | excessive_usage_of_cacls_app.yml | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | loading_of_dynwrapx_module.yml | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | possible_browser_pass_view_parameter.yml | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | excessive_usage_of_net_app.yml | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | windows_process_injection_wermgr_child_process.yml | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | vbscript_execution_using_wscript_app.yml | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | office_product_spawning_mshta.yml | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | windows_disableantispyware_reg.yml | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | suspicious_driver_loaded_path.yml | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | system_processes_run_from_unexpected_locations.yml | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | trickbot_named_pipe.yml | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | windows_service_created_with_suspicious_service_path.yml | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | windows_system_discovery_using_ldap_nslookup.yml | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | windows_app_layer_protocol_qakbot_namedpipe.yml | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | recon_using_wmi_class.yml | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | firewall_allowed_program_enable.yml | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | windows_command_shell_fetch_env_variables.yml | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | process_deleting_its_process_file_path.yml | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | network_discovery_using_route_windows_app.yml | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | office_product_spawning_windows_script_host.yml | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | create_local_admin_accounts_using_net_exe.yml | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | suspicious_image_creation_in_appdata_folder.yml | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | cobalt_strike_named_pipes.yml | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | windows_dll_side_loading_in_calc.yml | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | remcos_client_registry_install_entry.yml | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | powershell_loading_dotnet_into_memory_via_reflection.yml | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | suspicious_scheduled_task_from_public_directory.yml | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | recon_avproduct_through_pwh_or_wmi.yml | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | suspicious_regsvr32_register_suspicious_path.yml | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | windows_drivers_loaded_by_signature.yml | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | malicious_powershell_process___encoded_command.yml | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | mshta_spawning_rundll32_or_regsvr32_process.yml | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | malicious_inprocserver32_modification.yml | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ "
\n"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 35,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "def yes_no_table(dict_data, story_name_list):\n",
+ " det_by_analytics = defaultdict(list)\n",
+ "\n",
+ " for k, v in dict_data.items():\n",
+ " found_list = []\n",
+ " det_ctr = 0\n",
+ " for st in story_name_list:\n",
+ " if st in v:\n",
+ " found_list.append(\"yes\")\n",
+ " det_by_analytics[k].append(\"yes\")\n",
+ " det_ctr += 1\n",
+ " else:\n",
+ " found_list.append(\"no\")\n",
+ " det_by_analytics[k].append(\"no\")\n",
+ " det_by_analytics[k].append(det_ctr)\n",
+ "\n",
+ " return det_by_analytics\n",
+ "\n",
+ "def highlight_rows(x):\n",
+ " if x.total_coverage == 1:\n",
+ " return['background-color: lightgray'] * 6\n",
+ " elif x.total_coverage == 2:\n",
+ " return['background-color: lightblue'] * 6\n",
+ " elif x.total_coverage == 3:\n",
+ " return['background-color: lightgreen'] * 6 \n",
+ " elif x.total_coverage == 4:\n",
+ " return['background-color: orange'] * 6 \n",
+ " elif x.total_coverage == 5:\n",
+ " return['background-color: yellow'] * 6 \n",
+ "story_name_list = [\"Qakbot\", \"Azorult\", \"Remcos\", \"Trickbot\", \"AgentTesla\"]\n",
+ "det_by_analytics = yes_no_table(mitre_attack_id_info_dict, story_name_list)\n",
+ "tdf = pd.DataFrame.from_dict(det_by_analytics, orient=\"index\")\n",
+ "tdf.columns = [\"Qakbot\", \"Azorult\", \"Remcos\", \"Trickbot\", \"AgentTesla\", \"total_coverage\"]\n",
+ "print(tdf.shape)\n",
+ "tdf = tdf.sort_values(by=['total_coverage'], ascending = False)\n",
+ "tdf.style.apply(highlight_rows, axis=1)\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "74485c0e-d4c0-4f26-9e7f-f13a2a9b6b98",
+ "metadata": {},
+ "source": [
+ "### breakdown of detection coverage for 5 malware family or story"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 36,
+ "id": "8d075f5c-818b-4fd6-8fdb-d6a3e75cbfb4",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "(4, 6)\n"
+ ]
+ },
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ " \n",
+ " \n",
+ " | | \n",
+ " Qakbot | \n",
+ " Azorult | \n",
+ " Remcos | \n",
+ " Trickbot | \n",
+ " AgentTesla | \n",
+ " total_coverage | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | office_document_executing_macro_code.yml | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " 5 | \n",
+ "
\n",
+ " \n",
+ " | suspicious_process_file_path.yml | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " 5 | \n",
+ "
\n",
+ " \n",
+ " | executables_or_script_creation_in_suspicious_path.yml | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " 5 | \n",
+ "
\n",
+ " \n",
+ " | office_product_spawn_cmd_process.yml | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " 5 | \n",
+ "
\n",
+ " \n",
+ "
\n"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 36,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "rslt_df = tdf[tdf['total_coverage'] == 5]\n",
+ "print(rslt_df.shape)\n",
+ "rslt_df.style.apply(highlight_rows, axis=1)\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 37,
+ "id": "7652ddc4-d9f8-4449-9f6a-d39900e9433f",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "(3, 6)\n"
+ ]
+ },
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ " \n",
+ " \n",
+ " | | \n",
+ " Qakbot | \n",
+ " Azorult | \n",
+ " Remcos | \n",
+ " Trickbot | \n",
+ " AgentTesla | \n",
+ " total_coverage | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | windows_phishing_recent_iso_exec_registry.yml | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " no | \n",
+ " yes | \n",
+ " 4 | \n",
+ "
\n",
+ " \n",
+ " | windows_iso_lnk_file_creation.yml | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " no | \n",
+ " yes | \n",
+ " 4 | \n",
+ "
\n",
+ " \n",
+ " | scheduled_task_deleted_or_created_via_cmd.yml | \n",
+ " yes | \n",
+ " yes | \n",
+ " no | \n",
+ " yes | \n",
+ " yes | \n",
+ " 4 | \n",
+ "
\n",
+ " \n",
+ "
\n"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 37,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "rslt_df = tdf[tdf['total_coverage'] == 4]\n",
+ "print(rslt_df.shape)\n",
+ "rslt_df.style.apply(highlight_rows, axis=1)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 38,
+ "id": "48201916-b89c-4934-bbb4-b1d02ccd7de1",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "(4, 6)\n"
+ ]
+ },
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ " \n",
+ " \n",
+ " | | \n",
+ " Qakbot | \n",
+ " Azorult | \n",
+ " Remcos | \n",
+ " Trickbot | \n",
+ " AgentTesla | \n",
+ " total_coverage | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | registry_keys_used_for_persistence.yml | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " 3 | \n",
+ "
\n",
+ " \n",
+ " | non_firefox_process_access_firefox_profile_dir.yml | \n",
+ " no | \n",
+ " yes | \n",
+ " yes | \n",
+ " no | \n",
+ " yes | \n",
+ " 3 | \n",
+ "
\n",
+ " \n",
+ " | windows_defender_exclusion_registry_entry.yml | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " 3 | \n",
+ "
\n",
+ " \n",
+ " | disabling_remote_user_account_control.yml | \n",
+ " no | \n",
+ " yes | \n",
+ " yes | \n",
+ " no | \n",
+ " yes | \n",
+ " 3 | \n",
+ "
\n",
+ " \n",
+ "
\n"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 38,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "rslt_df = tdf[tdf['total_coverage'] == 3]\n",
+ "print(rslt_df.shape)\n",
+ "rslt_df.style.apply(highlight_rows, axis=1)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 39,
+ "id": "8ad5bd62-c881-4f72-8c84-c2f05729e271",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "(11, 6)\n"
+ ]
+ },
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ " \n",
+ " \n",
+ " | | \n",
+ " Qakbot | \n",
+ " Azorult | \n",
+ " Remcos | \n",
+ " Trickbot | \n",
+ " AgentTesla | \n",
+ " total_coverage | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | add_or_set_windows_defender_exclusion.yml | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " yes | \n",
+ " 2 | \n",
+ "
\n",
+ " \n",
+ " | disable_defender_spynet_reporting.yml | \n",
+ " yes | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 2 | \n",
+ "
\n",
+ " \n",
+ " | office_product_spawning_certutil.yml | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " yes | \n",
+ " 2 | \n",
+ "
\n",
+ " \n",
+ " | excessive_usage_of_taskkill.yml | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " 2 | \n",
+ "
\n",
+ " \n",
+ " | regsvr32_with_known_silent_switch_cmdline.yml | \n",
+ " yes | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " 2 | \n",
+ "
\n",
+ " \n",
+ " | cmd_carry_out_string_command_parameter.yml | \n",
+ " yes | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 2 | \n",
+ "
\n",
+ " \n",
+ " | office_application_spawn_rundll32_process.yml | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " yes | \n",
+ " 2 | \n",
+ "
\n",
+ " \n",
+ " | powershell_windows_defender_exclusion_commands.yml | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " yes | \n",
+ " 2 | \n",
+ "
\n",
+ " \n",
+ " | attempt_to_stop_security_service.yml | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " 2 | \n",
+ "
\n",
+ " \n",
+ " | wermgr_process_spawned_cmd_or_powershell_process.yml | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " 2 | \n",
+ "
\n",
+ " \n",
+ " | non_chrome_process_accessing_chrome_default_dir.yml | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " yes | \n",
+ " 2 | \n",
+ "
\n",
+ " \n",
+ "
\n"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 39,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "rslt_df = tdf[tdf['total_coverage'] == 2]\n",
+ "print(rslt_df.shape)\n",
+ "rslt_df.style.apply(highlight_rows, axis=1)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 40,
+ "id": "24dec7b8-375d-40cb-9b57-84d44921b1e3",
+ "metadata": {
+ "tags": []
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "(118, 6)\n"
+ ]
+ },
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ " \n",
+ " \n",
+ " | | \n",
+ " Qakbot | \n",
+ " Azorult | \n",
+ " Remcos | \n",
+ " Trickbot | \n",
+ " AgentTesla | \n",
+ " total_coverage | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | chcp_command_execution.yml | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | jscript_execution_using_cscript_app.yml | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | wmic_noninteractive_app_uninstallation.yml | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | executable_file_written_in_administrative_smb_share.yml | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | windows_powershell_import_applocker_policy.yml | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | windows_service_stop_by_deletion.yml | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | disable_defender_submit_samples_consent_feature.yml | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | schedule_task_with_rundll32_command_trigger.yml | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | suspicious_copy_on_system32.yml | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | detect_html_help_spawn_child_process.yml | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | windows_modify_registry_disallow_windows_app.yml | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | services_exe_lolbas_execution_process_spawn.yml | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | windows_gather_victim_network_info_through_ip_check_web_services.yml | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | suspicious_rundll32_startw.yml | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | windows_regsvr32_renamed_binary.yml | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | winhlp32_spawning_a_process.yml | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | account_discovery_with_net_app.yml | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | excessive_usage_of_sc_service_utility.yml | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | disable_show_hidden_files.yml | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | windows_modify_registry_disable_win_defender_raw_write_notif.yml | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | process_writing_dynamicwrapperx.yml | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | detect_use_of_cmd_exe_to_launch_script_interpreters.yml | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | windows_valid_account_with_never_expires_password.yml | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | windows_schtasks_create_run_as_system.yml | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | windows_driver_load_non_standard_path.yml | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | windows_impair_defense_deny_security_software_with_applocker.yml | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | windows_dll_side_loading_process_child_of_calc.yml | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | windows_modify_registry_disabling_wer_settings.yml | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | net_localgroup_discovery.yml | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | windows_dll_search_order_hijacking_hunt_with_sysmon.yml | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | disable_defender_blockatfirstseen_feature.yml | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | powershell___connect_to_internet_with_hidden_window.yml | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | wscript_or_cscript_suspicious_child_process.yml | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | hiding_files_and_directories_with_attrib_exe.yml | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | windows_modify_registry_disable_toast_notifications.yml | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | windows_modify_registry_disable_windows_security_center_notif.yml | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | windows_application_layer_protocol_rms_radmin_tool_namedpipe.yml | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | windows_wmi_impersonate_token.yml | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | office_application_spawn_regsvr32_process.yml | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | windows_modify_registry_qakbot_binary_data_registry.yml | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | nltest_domain_trust_discovery.yml | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | windows_modify_registry_suppress_win_defender_notif.yml | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | process_creating_lnk_file_in_suspicious_location.yml | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | office_application_drop_executable.yml | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | allow_inbound_traffic_by_firewall_rule_registry.yml | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | disable_defender_enhanced_notification.yml | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | powershell_remote_thread_to_known_windows_process.yml | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | windows_process_injection_of_wermgr_to_known_browser.yml | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | windows_multi_hop_proxy_tor_website_query.yml | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | system_info_gathering_using_dxdiag_application.yml | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | windows_mail_protocol_in_non_common_process_path.yml | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | winevent_windows_task_scheduler_event_action_started.yml | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | regsvr32_silent_and_install_param_dll_loading.yml | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | network_connection_discovery_net.yml | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | windows_app_layer_protocol_wermgr_connect_to_namedpipe.yml | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | sc_exe_manipulating_windows_services.yml | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | disable_windows_behavior_monitoring.yml | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | create_remote_thread_in_shell_application.yml | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | network_connection_discovery_arp.yml | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | schtasks_run_task_on_demand.yml | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | windows_masquerading_explorer_as_child_process.yml | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | windows_wmi_process_call_create.yml | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | cmdline_tool_not_executed_in_cmd_shell.yml | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | windows_modify_registry_regedit_silent_reg_import.yml | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | windows_file_transfer_protocol_in_non_common_process_path.yml | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | network_connection_discovery_netstat.yml | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | windows_remote_services_rdp_enable.yml | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | suspicious_wav_file_in_appdata_folder.yml | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | allow_operation_with_consent_admin.yml | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | windows_remote_services_allow_rdp_in_firewall.yml | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | suspicious_process_dns_query_known_abuse_web_services.yml | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | icacls_deny_command.yml | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | processes_launching_netsh.yml | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | wermgr_process_connecting_to_ip_check_web_services.yml | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | hide_user_account_from_sign_in_screen.yml | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | remcos_rat_file_creation_in_remcos_folder.yml | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | windows_impair_defense_add_xml_applocker_rules.yml | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | windows_system_discovery_using_qwinsta.yml | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | wermgr_process_create_executable_file.yml | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | system_user_discovery_with_whoami.yml | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | windows_remote_services_allow_remote_assistance.yml | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | windows_remote_access_software_rms_registry.yml | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | windows_process_injection_remote_thread.yml | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | excessive_attempt_to_disable_services.yml | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | windows_remote_service_rdpwinst_tool_execution.yml | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | excessive_usage_of_cacls_app.yml | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | loading_of_dynwrapx_module.yml | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | possible_browser_pass_view_parameter.yml | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | excessive_usage_of_net_app.yml | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | windows_process_injection_wermgr_child_process.yml | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | vbscript_execution_using_wscript_app.yml | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | office_product_spawning_mshta.yml | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | windows_disableantispyware_reg.yml | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | suspicious_driver_loaded_path.yml | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | system_processes_run_from_unexpected_locations.yml | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | trickbot_named_pipe.yml | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | windows_service_created_with_suspicious_service_path.yml | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | windows_system_discovery_using_ldap_nslookup.yml | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | windows_app_layer_protocol_qakbot_namedpipe.yml | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | recon_using_wmi_class.yml | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | firewall_allowed_program_enable.yml | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | windows_command_shell_fetch_env_variables.yml | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | process_deleting_its_process_file_path.yml | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | network_discovery_using_route_windows_app.yml | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | office_product_spawning_windows_script_host.yml | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | create_local_admin_accounts_using_net_exe.yml | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | suspicious_image_creation_in_appdata_folder.yml | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | cobalt_strike_named_pipes.yml | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | windows_dll_side_loading_in_calc.yml | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | remcos_client_registry_install_entry.yml | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | powershell_loading_dotnet_into_memory_via_reflection.yml | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | suspicious_scheduled_task_from_public_directory.yml | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | recon_avproduct_through_pwh_or_wmi.yml | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | suspicious_regsvr32_register_suspicious_path.yml | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | windows_drivers_loaded_by_signature.yml | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | malicious_powershell_process___encoded_command.yml | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | mshta_spawning_rundll32_or_regsvr32_process.yml | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | malicious_inprocserver32_modification.yml | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ "
\n"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 40,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "rslt_df = tdf[tdf['total_coverage'] == 1]\n",
+ "print(rslt_df.shape)\n",
+ "rslt_df.style.apply(highlight_rows, axis=1)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "e144114f-2282-4169-a577-d690bfc6dbd9",
+ "metadata": {},
+ "source": [
+ "### truth table mitre attack id vs analytic story (malware family)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 41,
+ "id": "ee827b0f-acff-4bf6-830e-4e0ec732b932",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "(74, 6)\n"
+ ]
+ },
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ " \n",
+ " \n",
+ " | | \n",
+ " Qakbot | \n",
+ " Azorult | \n",
+ " Remcos | \n",
+ " Trickbot | \n",
+ " AgentTesla | \n",
+ " total_coverage | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | T1562.001 | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " 5 | \n",
+ "
\n",
+ " \n",
+ " | T1036 | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " 5 | \n",
+ "
\n",
+ " \n",
+ " | T1566 | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " 5 | \n",
+ "
\n",
+ " \n",
+ " | T1566.001 | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " 5 | \n",
+ "
\n",
+ " \n",
+ " | T1562 | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " 5 | \n",
+ "
\n",
+ " \n",
+ " | T1543 | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " 5 | \n",
+ "
\n",
+ " \n",
+ " | T1059 | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " 5 | \n",
+ "
\n",
+ " \n",
+ " | T1053.005 | \n",
+ " yes | \n",
+ " yes | \n",
+ " no | \n",
+ " yes | \n",
+ " yes | \n",
+ " 4 | \n",
+ "
\n",
+ " \n",
+ " | T1204.001 | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " no | \n",
+ " yes | \n",
+ " 4 | \n",
+ "
\n",
+ " \n",
+ " | T1204 | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " no | \n",
+ " yes | \n",
+ " 4 | \n",
+ "
\n",
+ " \n",
+ " | T1053 | \n",
+ " yes | \n",
+ " yes | \n",
+ " no | \n",
+ " yes | \n",
+ " yes | \n",
+ " 4 | \n",
+ "
\n",
+ " \n",
+ " | T1218 | \n",
+ " yes | \n",
+ " no | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " 4 | \n",
+ "
\n",
+ " \n",
+ " | T1543.003 | \n",
+ " yes | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " 3 | \n",
+ "
\n",
+ " \n",
+ " | T1548.002 | \n",
+ " no | \n",
+ " yes | \n",
+ " yes | \n",
+ " no | \n",
+ " yes | \n",
+ " 3 | \n",
+ "
\n",
+ " \n",
+ " | T1059.001 | \n",
+ " yes | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " 3 | \n",
+ "
\n",
+ " \n",
+ " | T1548 | \n",
+ " no | \n",
+ " yes | \n",
+ " yes | \n",
+ " no | \n",
+ " yes | \n",
+ " 3 | \n",
+ "
\n",
+ " \n",
+ " | T1555 | \n",
+ " no | \n",
+ " yes | \n",
+ " yes | \n",
+ " no | \n",
+ " yes | \n",
+ " 3 | \n",
+ "
\n",
+ " \n",
+ " | T1547.001 | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " 3 | \n",
+ "
\n",
+ " \n",
+ " | T1555.003 | \n",
+ " no | \n",
+ " yes | \n",
+ " yes | \n",
+ " no | \n",
+ " yes | \n",
+ " 3 | \n",
+ "
\n",
+ " \n",
+ " | T1112 | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " 3 | \n",
+ "
\n",
+ " \n",
+ " | T1071 | \n",
+ " yes | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " 3 | \n",
+ "
\n",
+ " \n",
+ " | T1547 | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " 3 | \n",
+ "
\n",
+ " \n",
+ " | T1055 | \n",
+ " yes | \n",
+ " no | \n",
+ " yes | \n",
+ " yes | \n",
+ " no | \n",
+ " 3 | \n",
+ "
\n",
+ " \n",
+ " | T1049 | \n",
+ " yes | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 2 | \n",
+ "
\n",
+ " \n",
+ " | T1592 | \n",
+ " yes | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " 2 | \n",
+ "
\n",
+ " \n",
+ " | T1021 | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " 2 | \n",
+ "
\n",
+ " \n",
+ " | T1027 | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " 2 | \n",
+ "
\n",
+ " \n",
+ " | T1055.001 | \n",
+ " yes | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " 2 | \n",
+ "
\n",
+ " \n",
+ " | T1590 | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " 2 | \n",
+ "
\n",
+ " \n",
+ " | T1059.003 | \n",
+ " yes | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 2 | \n",
+ "
\n",
+ " \n",
+ " | T1218.010 | \n",
+ " yes | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " 2 | \n",
+ "
\n",
+ " \n",
+ " | T1590.005 | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " 2 | \n",
+ "
\n",
+ " \n",
+ " | T1059.007 | \n",
+ " yes | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " 2 | \n",
+ "
\n",
+ " \n",
+ " | T1569 | \n",
+ " yes | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 2 | \n",
+ "
\n",
+ " \n",
+ " | T1569.002 | \n",
+ " yes | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 2 | \n",
+ "
\n",
+ " \n",
+ " | T1087.002 | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1087 | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1218.011 | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1218.001 | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1021.002 | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1564.001 | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1482 | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1564 | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1559.001 | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1566.002 | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1222.001 | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1134.004 | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1134 | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1574.001 | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1069 | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1069.001 | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1059.005 | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1021.001 | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1531 | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1036.003 | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1489 | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1222 | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1562.004 | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1047 | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1574.002 | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1574 | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1113 | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1016 | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1033 | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1218.005 | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1014 | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1068 | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1219 | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1055.002 | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1136.001 | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1136 | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1070 | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1071.003 | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1016.001 | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ "
\n"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 41,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "\n",
+ "new_table = yes_no_table(mitre_attack_tid_dict, story_name_list)\n",
+ "tdf = pd.DataFrame.from_dict(new_table, orient=\"index\")\n",
+ "tdf.columns = [\"Qakbot\", \"Azorult\", \"Remcos\", \"Trickbot\", \"AgentTesla\", \"total_coverage\"]\n",
+ "print(tdf.shape)\n",
+ "tdf = tdf.sort_values(by=['total_coverage'], ascending = False)\n",
+ "tdf.style.apply(highlight_rows, axis=1) \n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 42,
+ "id": "2f2a22c4-4204-4673-8130-9fa9a99cfa12",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "(7, 6)\n"
+ ]
+ },
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ " \n",
+ " \n",
+ " | | \n",
+ " Qakbot | \n",
+ " Azorult | \n",
+ " Remcos | \n",
+ " Trickbot | \n",
+ " AgentTesla | \n",
+ " total_coverage | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | T1562.001 | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " 5 | \n",
+ "
\n",
+ " \n",
+ " | T1036 | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " 5 | \n",
+ "
\n",
+ " \n",
+ " | T1566 | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " 5 | \n",
+ "
\n",
+ " \n",
+ " | T1566.001 | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " 5 | \n",
+ "
\n",
+ " \n",
+ " | T1562 | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " 5 | \n",
+ "
\n",
+ " \n",
+ " | T1543 | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " 5 | \n",
+ "
\n",
+ " \n",
+ " | T1059 | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " 5 | \n",
+ "
\n",
+ " \n",
+ "
\n"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 42,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "rslt_df = tdf[tdf['total_coverage'] == 5]\n",
+ "print(rslt_df.shape)\n",
+ "rslt_df.style.apply(highlight_rows, axis=1)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 43,
+ "id": "e8d0e149-6e69-4a04-be98-51bac29a15af",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "(5, 6)\n"
+ ]
+ },
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ " \n",
+ " \n",
+ " | | \n",
+ " Qakbot | \n",
+ " Azorult | \n",
+ " Remcos | \n",
+ " Trickbot | \n",
+ " AgentTesla | \n",
+ " total_coverage | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | T1053.005 | \n",
+ " yes | \n",
+ " yes | \n",
+ " no | \n",
+ " yes | \n",
+ " yes | \n",
+ " 4 | \n",
+ "
\n",
+ " \n",
+ " | T1204.001 | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " no | \n",
+ " yes | \n",
+ " 4 | \n",
+ "
\n",
+ " \n",
+ " | T1204 | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " no | \n",
+ " yes | \n",
+ " 4 | \n",
+ "
\n",
+ " \n",
+ " | T1053 | \n",
+ " yes | \n",
+ " yes | \n",
+ " no | \n",
+ " yes | \n",
+ " yes | \n",
+ " 4 | \n",
+ "
\n",
+ " \n",
+ " | T1218 | \n",
+ " yes | \n",
+ " no | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " 4 | \n",
+ "
\n",
+ " \n",
+ "
\n"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 43,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "rslt_df = tdf[tdf['total_coverage'] == 4]\n",
+ "print(rslt_df.shape)\n",
+ "rslt_df.style.apply(highlight_rows, axis=1)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 44,
+ "id": "9e5fa653-ce25-4616-8962-8350e858a6af",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "(11, 6)\n"
+ ]
+ },
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ " \n",
+ " \n",
+ " | | \n",
+ " Qakbot | \n",
+ " Azorult | \n",
+ " Remcos | \n",
+ " Trickbot | \n",
+ " AgentTesla | \n",
+ " total_coverage | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | T1543.003 | \n",
+ " yes | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " 3 | \n",
+ "
\n",
+ " \n",
+ " | T1548.002 | \n",
+ " no | \n",
+ " yes | \n",
+ " yes | \n",
+ " no | \n",
+ " yes | \n",
+ " 3 | \n",
+ "
\n",
+ " \n",
+ " | T1059.001 | \n",
+ " yes | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " 3 | \n",
+ "
\n",
+ " \n",
+ " | T1548 | \n",
+ " no | \n",
+ " yes | \n",
+ " yes | \n",
+ " no | \n",
+ " yes | \n",
+ " 3 | \n",
+ "
\n",
+ " \n",
+ " | T1555 | \n",
+ " no | \n",
+ " yes | \n",
+ " yes | \n",
+ " no | \n",
+ " yes | \n",
+ " 3 | \n",
+ "
\n",
+ " \n",
+ " | T1547.001 | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " 3 | \n",
+ "
\n",
+ " \n",
+ " | T1555.003 | \n",
+ " no | \n",
+ " yes | \n",
+ " yes | \n",
+ " no | \n",
+ " yes | \n",
+ " 3 | \n",
+ "
\n",
+ " \n",
+ " | T1112 | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " 3 | \n",
+ "
\n",
+ " \n",
+ " | T1071 | \n",
+ " yes | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " 3 | \n",
+ "
\n",
+ " \n",
+ " | T1547 | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " 3 | \n",
+ "
\n",
+ " \n",
+ " | T1055 | \n",
+ " yes | \n",
+ " no | \n",
+ " yes | \n",
+ " yes | \n",
+ " no | \n",
+ " 3 | \n",
+ "
\n",
+ " \n",
+ "
\n"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 44,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "rslt_df = tdf[tdf['total_coverage'] == 3]\n",
+ "print(rslt_df.shape)\n",
+ "rslt_df.style.apply(highlight_rows, axis=1)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 45,
+ "id": "56b64501-cc50-4d5b-849b-2a0f917de6d0",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "(12, 6)\n"
+ ]
+ },
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ " \n",
+ " \n",
+ " | | \n",
+ " Qakbot | \n",
+ " Azorult | \n",
+ " Remcos | \n",
+ " Trickbot | \n",
+ " AgentTesla | \n",
+ " total_coverage | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | T1049 | \n",
+ " yes | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 2 | \n",
+ "
\n",
+ " \n",
+ " | T1592 | \n",
+ " yes | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " 2 | \n",
+ "
\n",
+ " \n",
+ " | T1021 | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " 2 | \n",
+ "
\n",
+ " \n",
+ " | T1027 | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " 2 | \n",
+ "
\n",
+ " \n",
+ " | T1055.001 | \n",
+ " yes | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " 2 | \n",
+ "
\n",
+ " \n",
+ " | T1590 | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " 2 | \n",
+ "
\n",
+ " \n",
+ " | T1059.003 | \n",
+ " yes | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 2 | \n",
+ "
\n",
+ " \n",
+ " | T1218.010 | \n",
+ " yes | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " 2 | \n",
+ "
\n",
+ " \n",
+ " | T1590.005 | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " 2 | \n",
+ "
\n",
+ " \n",
+ " | T1059.007 | \n",
+ " yes | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " 2 | \n",
+ "
\n",
+ " \n",
+ " | T1569 | \n",
+ " yes | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 2 | \n",
+ "
\n",
+ " \n",
+ " | T1569.002 | \n",
+ " yes | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 2 | \n",
+ "
\n",
+ " \n",
+ "
\n"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 45,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "rslt_df = tdf[tdf['total_coverage'] == 2]\n",
+ "print(rslt_df.shape)\n",
+ "rslt_df.style.apply(highlight_rows, axis=1)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 46,
+ "id": "3f9a2ef2-1f38-40a7-98fa-e7e0b92a24da",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "(39, 6)\n"
+ ]
+ },
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ " \n",
+ " \n",
+ " | | \n",
+ " Qakbot | \n",
+ " Azorult | \n",
+ " Remcos | \n",
+ " Trickbot | \n",
+ " AgentTesla | \n",
+ " total_coverage | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | T1087.002 | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1087 | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1218.011 | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1218.001 | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1021.002 | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1564.001 | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1482 | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1564 | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1559.001 | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1566.002 | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1222.001 | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1134.004 | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1134 | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1574.001 | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1069 | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1069.001 | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1059.005 | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1021.001 | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1531 | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1036.003 | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1489 | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1222 | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1562.004 | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1047 | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1574.002 | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1574 | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1113 | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1016 | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1033 | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1218.005 | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1014 | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1068 | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1219 | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1055.002 | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1136.001 | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1136 | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1070 | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1071.003 | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1016.001 | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ "
\n"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 46,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "rslt_df = tdf[tdf['total_coverage'] == 1]\n",
+ "print(rslt_df.shape)\n",
+ "rslt_df.style.apply(highlight_rows, axis=1)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "030119bf-4cef-4270-ba19-d9c9b2ea17f0",
+ "metadata": {},
+ "source": [
+ "### truth table mitre attack id 0technique vs analytic story(malware family)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 47,
+ "id": "e6ccea82-34f5-49d5-b43d-82d29313e0ee",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "(74, 6)\n"
+ ]
+ },
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ " \n",
+ " \n",
+ " | | \n",
+ " Qakbot | \n",
+ " Azorult | \n",
+ " Remcos | \n",
+ " Trickbot | \n",
+ " AgentTesla | \n",
+ " total_coverage | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | T1562.001-Disable_or_Modify_Tools | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " 5 | \n",
+ "
\n",
+ " \n",
+ " | T1036-Masquerading (7) | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " 5 | \n",
+ "
\n",
+ " \n",
+ " | T1566-Phishing (3) | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " 5 | \n",
+ "
\n",
+ " \n",
+ " | T1566.001-Spearphishing_Attachment | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " 5 | \n",
+ "
\n",
+ " \n",
+ " | T1562-Impair_Defenses (9) | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " 5 | \n",
+ "
\n",
+ " \n",
+ " | T1543-Create_or_Modify_System_Process (4) | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " 5 | \n",
+ "
\n",
+ " \n",
+ " | T1059-Command_and_Scripting_Interpreter (8) | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " 5 | \n",
+ "
\n",
+ " \n",
+ " | T1053.005-Scheduled_Task | \n",
+ " yes | \n",
+ " yes | \n",
+ " no | \n",
+ " yes | \n",
+ " yes | \n",
+ " 4 | \n",
+ "
\n",
+ " \n",
+ " | T1204.001-Malicious_Link | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " no | \n",
+ " yes | \n",
+ " 4 | \n",
+ "
\n",
+ " \n",
+ " | T1204-User_Execution (3) | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " no | \n",
+ " yes | \n",
+ " 4 | \n",
+ "
\n",
+ " \n",
+ " | T1053-Scheduled_Task/Job (5) | \n",
+ " yes | \n",
+ " yes | \n",
+ " no | \n",
+ " yes | \n",
+ " yes | \n",
+ " 4 | \n",
+ "
\n",
+ " \n",
+ " | T1218-System_Binary_Proxy_Execution (13) | \n",
+ " yes | \n",
+ " no | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " 4 | \n",
+ "
\n",
+ " \n",
+ " | T1543.003-Windows_Service | \n",
+ " yes | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " 3 | \n",
+ "
\n",
+ " \n",
+ " | T1548.002-Bypass_User_Account_Control | \n",
+ " no | \n",
+ " yes | \n",
+ " yes | \n",
+ " no | \n",
+ " yes | \n",
+ " 3 | \n",
+ "
\n",
+ " \n",
+ " | T1059.001-PowerShell | \n",
+ " yes | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " 3 | \n",
+ "
\n",
+ " \n",
+ " | T1548-Abuse_Elevation_Control_Mechanism (4) | \n",
+ " no | \n",
+ " yes | \n",
+ " yes | \n",
+ " no | \n",
+ " yes | \n",
+ " 3 | \n",
+ "
\n",
+ " \n",
+ " | T1555-Credentials_from_Password_Stores (5) | \n",
+ " no | \n",
+ " yes | \n",
+ " yes | \n",
+ " no | \n",
+ " yes | \n",
+ " 3 | \n",
+ "
\n",
+ " \n",
+ " | T1547.001-Registry_Run_Keys_/_Startup_Folder | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " 3 | \n",
+ "
\n",
+ " \n",
+ " | T1555.003-Credentials_from_Web_Browsers | \n",
+ " no | \n",
+ " yes | \n",
+ " yes | \n",
+ " no | \n",
+ " yes | \n",
+ " 3 | \n",
+ "
\n",
+ " \n",
+ " | T1112-Modify_Registry | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " 3 | \n",
+ "
\n",
+ " \n",
+ " | T1071-Application_Layer_Protocol (4) | \n",
+ " yes | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " 3 | \n",
+ "
\n",
+ " \n",
+ " | T1547-Boot_or_Logon_Autostart_Execution (14) | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " 3 | \n",
+ "
\n",
+ " \n",
+ " | T1055-Process_Injection (12) | \n",
+ " yes | \n",
+ " no | \n",
+ " yes | \n",
+ " yes | \n",
+ " no | \n",
+ " 3 | \n",
+ "
\n",
+ " \n",
+ " | T1049-System_Network_Connections_Discovery | \n",
+ " yes | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 2 | \n",
+ "
\n",
+ " \n",
+ " | T1592-Gather_Victim_Host_Information (4) | \n",
+ " yes | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " 2 | \n",
+ "
\n",
+ " \n",
+ " | T1021-Remote_Services (6) | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " 2 | \n",
+ "
\n",
+ " \n",
+ " | T1027-Obfuscated_Files_or_Information (9) | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " 2 | \n",
+ "
\n",
+ " \n",
+ " | T1055.001-Dynamic-link_Library_Injection | \n",
+ " yes | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " 2 | \n",
+ "
\n",
+ " \n",
+ " | T1590-Gather_Victim_Network_Information (6) | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " 2 | \n",
+ "
\n",
+ " \n",
+ " | T1059.003-Windows_Command_Shell | \n",
+ " yes | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 2 | \n",
+ "
\n",
+ " \n",
+ " | T1218.010-Regsvr32 | \n",
+ " yes | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " 2 | \n",
+ "
\n",
+ " \n",
+ " | T1590.005-IP_Addresses | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " 2 | \n",
+ "
\n",
+ " \n",
+ " | T1059.007-JavaScript | \n",
+ " yes | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " 2 | \n",
+ "
\n",
+ " \n",
+ " | T1569-System_Services (2) | \n",
+ " yes | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 2 | \n",
+ "
\n",
+ " \n",
+ " | T1569.002-Service_Execution | \n",
+ " yes | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 2 | \n",
+ "
\n",
+ " \n",
+ " | T1087.002-Domain_Account | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1087-Account_Discovery (4) | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1218.011-Rundll32 | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1218.001-Compiled_HTML_File | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1021.002-SMB/Windows_Admin_Shares | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1564.001-Hidden_Files_and_Directories | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1482-Domain_Trust_Discovery | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1564-Hide_Artifacts (10) | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1559.001-Component_Object_Model | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1566.002-Spearphishing_Link | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1222.001-Windows_File_and_Directory_Permissions_Modification | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1134.004-Parent_PID_Spoofing | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1134-Access_Token_Manipulation (5) | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1574.001-DLL_Search_Order_Hijacking | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1069-Permission_Groups_Discovery (3) | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1069.001-Local_Groups | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1059.005-Visual_Basic | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1021.001-Remote_Desktop_Protocol | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1531-Account_Access_Removal | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1036.003-Rename_System_Utilities | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1489-Service_Stop | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1222-File_and_Directory_Permissions_Modification (2) | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1562.004-Disable_or_Modify_System_Firewall | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1047-Windows_Management_Instrumentation | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1574.002-DLL_Side-Loading | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1574-Hijack_Execution_Flow (12) | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1113-Screen_Capture | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1016-System_Network_Configuration_Discovery (1) | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1033-System_Owner/User_Discovery | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1218.005-Mshta | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1014-Rootkit | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1068-Exploitation_for_Privilege_Escalation | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1219-Remote_Access_Software | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1055.002-Portable_Executable_Injection | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1136.001-Local_Account | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1136-Create_Account (3) | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1070-Indicator_Removal (9) | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1071.003-Mail_Protocols | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1016.001-Internet_Connection_Discovery | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ "
\n"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 47,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "\n",
+ "\n",
+ "new_table = yes_no_table(mitre_attack_tid_name_dict, story_name_list)\n",
+ "tdf = pd.DataFrame.from_dict(new_table, orient=\"index\")\n",
+ "tdf.columns = [\"Qakbot\", \"Azorult\", \"Remcos\", \"Trickbot\", \"AgentTesla\", \"total_coverage\"]\n",
+ "print(tdf.shape)\n",
+ "tdf = tdf.sort_values(by=['total_coverage'], ascending = False)\n",
+ "tdf.style.apply(highlight_rows, axis=1) "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 48,
+ "id": "3f48e979-531c-466c-a299-1282cff990df",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "(7, 6)\n"
+ ]
+ },
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ " \n",
+ " \n",
+ " | | \n",
+ " Qakbot | \n",
+ " Azorult | \n",
+ " Remcos | \n",
+ " Trickbot | \n",
+ " AgentTesla | \n",
+ " total_coverage | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | T1562.001-Disable_or_Modify_Tools | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " 5 | \n",
+ "
\n",
+ " \n",
+ " | T1036-Masquerading (7) | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " 5 | \n",
+ "
\n",
+ " \n",
+ " | T1566-Phishing (3) | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " 5 | \n",
+ "
\n",
+ " \n",
+ " | T1566.001-Spearphishing_Attachment | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " 5 | \n",
+ "
\n",
+ " \n",
+ " | T1562-Impair_Defenses (9) | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " 5 | \n",
+ "
\n",
+ " \n",
+ " | T1543-Create_or_Modify_System_Process (4) | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " 5 | \n",
+ "
\n",
+ " \n",
+ " | T1059-Command_and_Scripting_Interpreter (8) | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " 5 | \n",
+ "
\n",
+ " \n",
+ "
\n"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 48,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "rslt_df = tdf[tdf['total_coverage'] == 5]\n",
+ "print(rslt_df.shape)\n",
+ "rslt_df.style.apply(highlight_rows, axis=1)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 49,
+ "id": "21f3b96f-b020-49ee-97a9-579196ba6a99",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "(5, 6)\n"
+ ]
+ },
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ " \n",
+ " \n",
+ " | | \n",
+ " Qakbot | \n",
+ " Azorult | \n",
+ " Remcos | \n",
+ " Trickbot | \n",
+ " AgentTesla | \n",
+ " total_coverage | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | T1053.005-Scheduled_Task | \n",
+ " yes | \n",
+ " yes | \n",
+ " no | \n",
+ " yes | \n",
+ " yes | \n",
+ " 4 | \n",
+ "
\n",
+ " \n",
+ " | T1204.001-Malicious_Link | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " no | \n",
+ " yes | \n",
+ " 4 | \n",
+ "
\n",
+ " \n",
+ " | T1204-User_Execution (3) | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " no | \n",
+ " yes | \n",
+ " 4 | \n",
+ "
\n",
+ " \n",
+ " | T1053-Scheduled_Task/Job (5) | \n",
+ " yes | \n",
+ " yes | \n",
+ " no | \n",
+ " yes | \n",
+ " yes | \n",
+ " 4 | \n",
+ "
\n",
+ " \n",
+ " | T1218-System_Binary_Proxy_Execution (13) | \n",
+ " yes | \n",
+ " no | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " 4 | \n",
+ "
\n",
+ " \n",
+ "
\n"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 49,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "rslt_df = tdf[tdf['total_coverage'] == 4]\n",
+ "print(rslt_df.shape)\n",
+ "rslt_df.style.apply(highlight_rows, axis=1)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 50,
+ "id": "22b8ad1c-1a53-41ba-bdff-6d5ed29f8ad5",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "(11, 6)\n"
+ ]
+ },
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ " \n",
+ " \n",
+ " | | \n",
+ " Qakbot | \n",
+ " Azorult | \n",
+ " Remcos | \n",
+ " Trickbot | \n",
+ " AgentTesla | \n",
+ " total_coverage | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | T1543.003-Windows_Service | \n",
+ " yes | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " 3 | \n",
+ "
\n",
+ " \n",
+ " | T1548.002-Bypass_User_Account_Control | \n",
+ " no | \n",
+ " yes | \n",
+ " yes | \n",
+ " no | \n",
+ " yes | \n",
+ " 3 | \n",
+ "
\n",
+ " \n",
+ " | T1059.001-PowerShell | \n",
+ " yes | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " 3 | \n",
+ "
\n",
+ " \n",
+ " | T1548-Abuse_Elevation_Control_Mechanism (4) | \n",
+ " no | \n",
+ " yes | \n",
+ " yes | \n",
+ " no | \n",
+ " yes | \n",
+ " 3 | \n",
+ "
\n",
+ " \n",
+ " | T1555-Credentials_from_Password_Stores (5) | \n",
+ " no | \n",
+ " yes | \n",
+ " yes | \n",
+ " no | \n",
+ " yes | \n",
+ " 3 | \n",
+ "
\n",
+ " \n",
+ " | T1547.001-Registry_Run_Keys_/_Startup_Folder | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " 3 | \n",
+ "
\n",
+ " \n",
+ " | T1555.003-Credentials_from_Web_Browsers | \n",
+ " no | \n",
+ " yes | \n",
+ " yes | \n",
+ " no | \n",
+ " yes | \n",
+ " 3 | \n",
+ "
\n",
+ " \n",
+ " | T1112-Modify_Registry | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " 3 | \n",
+ "
\n",
+ " \n",
+ " | T1071-Application_Layer_Protocol (4) | \n",
+ " yes | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " 3 | \n",
+ "
\n",
+ " \n",
+ " | T1547-Boot_or_Logon_Autostart_Execution (14) | \n",
+ " yes | \n",
+ " yes | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " 3 | \n",
+ "
\n",
+ " \n",
+ " | T1055-Process_Injection (12) | \n",
+ " yes | \n",
+ " no | \n",
+ " yes | \n",
+ " yes | \n",
+ " no | \n",
+ " 3 | \n",
+ "
\n",
+ " \n",
+ "
\n"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 50,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "rslt_df = tdf[tdf['total_coverage'] == 3]\n",
+ "print(rslt_df.shape)\n",
+ "rslt_df.style.apply(highlight_rows, axis=1)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 51,
+ "id": "fb52fd1f-f949-4caf-a0e3-e0a40ebffb85",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "(12, 6)\n"
+ ]
+ },
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ " \n",
+ " \n",
+ " | | \n",
+ " Qakbot | \n",
+ " Azorult | \n",
+ " Remcos | \n",
+ " Trickbot | \n",
+ " AgentTesla | \n",
+ " total_coverage | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | T1049-System_Network_Connections_Discovery | \n",
+ " yes | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 2 | \n",
+ "
\n",
+ " \n",
+ " | T1592-Gather_Victim_Host_Information (4) | \n",
+ " yes | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " 2 | \n",
+ "
\n",
+ " \n",
+ " | T1021-Remote_Services (6) | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " 2 | \n",
+ "
\n",
+ " \n",
+ " | T1027-Obfuscated_Files_or_Information (9) | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " 2 | \n",
+ "
\n",
+ " \n",
+ " | T1055.001-Dynamic-link_Library_Injection | \n",
+ " yes | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " 2 | \n",
+ "
\n",
+ " \n",
+ " | T1590-Gather_Victim_Network_Information (6) | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " 2 | \n",
+ "
\n",
+ " \n",
+ " | T1059.003-Windows_Command_Shell | \n",
+ " yes | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 2 | \n",
+ "
\n",
+ " \n",
+ " | T1218.010-Regsvr32 | \n",
+ " yes | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " 2 | \n",
+ "
\n",
+ " \n",
+ " | T1590.005-IP_Addresses | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " 2 | \n",
+ "
\n",
+ " \n",
+ " | T1059.007-JavaScript | \n",
+ " yes | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " 2 | \n",
+ "
\n",
+ " \n",
+ " | T1569-System_Services (2) | \n",
+ " yes | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 2 | \n",
+ "
\n",
+ " \n",
+ " | T1569.002-Service_Execution | \n",
+ " yes | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 2 | \n",
+ "
\n",
+ " \n",
+ "
\n"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 51,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "rslt_df = tdf[tdf['total_coverage'] == 2]\n",
+ "print(rslt_df.shape)\n",
+ "rslt_df.style.apply(highlight_rows, axis=1)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 52,
+ "id": "5533fb9c-36af-4ea1-addc-0f447f3e62dc",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "(39, 6)\n"
+ ]
+ },
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ " \n",
+ " \n",
+ " | | \n",
+ " Qakbot | \n",
+ " Azorult | \n",
+ " Remcos | \n",
+ " Trickbot | \n",
+ " AgentTesla | \n",
+ " total_coverage | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | T1087.002-Domain_Account | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1087-Account_Discovery (4) | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1218.011-Rundll32 | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1218.001-Compiled_HTML_File | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1021.002-SMB/Windows_Admin_Shares | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1564.001-Hidden_Files_and_Directories | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1482-Domain_Trust_Discovery | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1564-Hide_Artifacts (10) | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1559.001-Component_Object_Model | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1566.002-Spearphishing_Link | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1222.001-Windows_File_and_Directory_Permissions_Modification | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1134.004-Parent_PID_Spoofing | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1134-Access_Token_Manipulation (5) | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1574.001-DLL_Search_Order_Hijacking | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1069-Permission_Groups_Discovery (3) | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1069.001-Local_Groups | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1059.005-Visual_Basic | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1021.001-Remote_Desktop_Protocol | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1531-Account_Access_Removal | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1036.003-Rename_System_Utilities | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1489-Service_Stop | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1222-File_and_Directory_Permissions_Modification (2) | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1562.004-Disable_or_Modify_System_Firewall | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1047-Windows_Management_Instrumentation | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1574.002-DLL_Side-Loading | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1574-Hijack_Execution_Flow (12) | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1113-Screen_Capture | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1016-System_Network_Configuration_Discovery (1) | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1033-System_Owner/User_Discovery | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1218.005-Mshta | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1014-Rootkit | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1068-Exploitation_for_Privilege_Escalation | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1219-Remote_Access_Software | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1055.002-Portable_Executable_Injection | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1136.001-Local_Account | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1136-Create_Account (3) | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1070-Indicator_Removal (9) | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1071.003-Mail_Protocols | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " yes | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | T1016.001-Internet_Connection_Discovery | \n",
+ " yes | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " no | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ "
\n"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 52,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "rslt_df = tdf[tdf['total_coverage'] == 1]\n",
+ "print(rslt_df.shape)\n",
+ "rslt_df.style.apply(highlight_rows, axis=1)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "62821d46-d7a2-4964-9401-47189fb4b510",
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "848faf4c-1939-4b32-ab7d-9821d5bf2ed0",
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 3 (ipykernel)",
+ "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.9.15"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 5
+}
diff --git a/notebooks/cisa_commonalities_notebook.yml b/notebooks/cisa_commonalities_notebook.yml
new file mode 100644
index 0000000000..d0198ed998
--- /dev/null
+++ b/notebooks/cisa_commonalities_notebook.yml
@@ -0,0 +1,3 @@
+description: a simple jupyter notebook that helps Splunk Threat Research Team sees the data connections, commonalities and differences of security content stories or threat families.
+filename: cisa_commonalities_notebook.ipynb
+name: cisa_commonalities_notebook
\ No newline at end of file
diff --git a/requirements.txt b/requirements.txt
index 837747f901..8aa4f7a8fd 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -10,7 +10,7 @@ pydantic==1.10.4
pytest==7.2.0
PyYAML==5.4.1
questionary==1.10.0
-requests==2.28.1
+requests==2.28.2
six==1.16.0
splunk-appinspect==2.32.0
splunk-sdk==1.7.2