diff --git a/AMITT_MASTER_DATA/AMITT_TTPs_MASTER.xlsx b/AMITT_MASTER_DATA/AMITT_TTPs_MASTER.xlsx index 0423f79..f03d451 100644 Binary files a/AMITT_MASTER_DATA/AMITT_TTPs_MASTER.xlsx and b/AMITT_MASTER_DATA/AMITT_TTPs_MASTER.xlsx differ diff --git a/HTML_GENERATING_CODE/.ipynb_checkpoints/AMITT_code_testbed-checkpoint.ipynb b/HTML_GENERATING_CODE/.ipynb_checkpoints/AMITT_code_testbed-checkpoint.ipynb new file mode 100644 index 0000000..44d87b8 --- /dev/null +++ b/HTML_GENERATING_CODE/.ipynb_checkpoints/AMITT_code_testbed-checkpoint.ipynb @@ -0,0 +1,1019 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Test area for AMITT code" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "dict_keys(['df_phases', 'df_techniques', 'df_tasks', 'df_incidents', 'df_counters', 'df_detections', 'df_actortypes', 'df_resources', 'df_responsetypes', 'df_metatechniques', 'it', 'df_tactics', 'df_techniques_per_tactic', 'df_counters_per_tactic', 'phases', 'tactics', 'techniques', 'counters', 'metatechniques', 'actortypes', 'resources', 'num_tactics', 'cross_counterid_techniqueid', 'cross_counterid_resourceid', 'cross_counterid_actortypeid'])\n" + ] + }, + { + "data": { + "text/plain": [ + "{'TA01': 'Strategic Planning',\n", + " 'TA02': 'Objective Planning',\n", + " 'TA03': 'Develop People',\n", + " 'TA04': 'Develop Networks',\n", + " 'TA05': 'Microtargeting',\n", + " 'TA06': 'Develop Content',\n", + " 'TA07': 'Channel Selection',\n", + " 'TA08': 'Pump Priming',\n", + " 'TA09': 'Exposure',\n", + " 'TA10': 'Go Physical',\n", + " 'TA11': 'Persistence',\n", + " 'TA12': 'Measure Effectiveness'}" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import pandas as pd\n", + "import sqlite3 as sql\n", + "from generate_amitt_ttps import Amitt\n", + "\n", + "\n", + "# Generate AMITT datasets\n", + "amitt = Amitt()\n", + "\n", + "# Check which amitt variables we can see from here\n", + "print('{}'.format(vars(amitt).keys()))\n", + "vars(amitt)['tactics']" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
amitt_idnamemetatechniquesummaryplaybooksactortypesresources_neededhow_foundreferencesincident_idstacticresponsetypenotestechniqueslongnametactic_idtactic_namemetatechnique_idmetatechnique_name
0C00006Charge for social mediaM004 - frictionInclude a paid-for privacy option, e.g. pay Fa...A033 - social media platform owner2019-11-workshopTA01 Strategic PlanningD2 DenyC00006 - Charge for social mediaTA01Strategic PlanningM004- friction
8C00006CensorshipM005 - removalAlter and/or block the publication/disseminati...A031 - social media platform administratorgrugqTaylor81TA01 Strategic PlanningD2 DenyT0009 - Create fake experts\\nT0008 - Create fa...C00006 - CensorshipTA01Strategic PlanningM005- removal
1C00008Create shared fact-checking databaseM006 - scoringSnopes is best-known exampleA007 - factchecker2019-11-workshop\\n2019-11-searchI00049,I00050TA01 Strategic PlanningD4 DegradeTA01 - Strategic Planning\\nTA06 - Develop Cont...C00008 - Create shared fact-checking databaseTA01Strategic PlanningM006- scoring
2C00009Educate high profile influencers on best pract...M001 - resilienceA016 - influencer,A006 - educator2019-11-workshopTA02 Objective PlanningD2 DenyTA08 - Pump Priming\\nT0010 - Cultivate ignoran...C00009 - Educate high profile influencers on b...TA02Objective PlanningM001- resilience
3C00010Enhanced privacy regulation for social mediaM004 - frictionPrivacy standardsA020 - policy maker2019-11-workshopTA01 Strategic PlanningD2 DenyTA05 - Microtargeting\\nT00018 - Paid targeted adsC00010 - Enhanced privacy regulation for socia...TA01Strategic PlanningM004- friction
............................................................
135C00219Add metadata to content that’s out of the cont...M003 - daylightSteganography. Adding date, signatures etc to ...Add date and source to imagesgrugqTA06 Develop ContentD4 DegradeT0024 - Create fake videos and images\\nT0026 -...C00219 - Add metadata to content that’s out of...TA06Develop ContentM003- daylight
136C00220Develop a monitoring and intelligence planM007 - metatechniqueCounters cleanupTA01 Strategic PlanningD3 DisruptC00220 - Develop a monitoring and intelligence...TA01Strategic PlanningM007- metatechnique
137C00221Run a disinformation red team, and design miti...M007 - metatechniqueInclude PACE plans - Primary, Alternate, Conti...Counters cleanupTA01 Strategic PlanningD3 DisruptC00221 - Run a disinformation red team, and de...TA01Strategic PlanningM007- metatechnique
138C00222Tabletop simulationsM007 - metatechniqueTA02 Objective PlanningD3 DisruptC00222 - Tabletop simulationsTA02Objective PlanningM007- metatechnique
139C00223Strengthen Trust in social media platformsM001 - resilienceTA01 Strategic PlanningD3 DisruptC00223 - Strengthen Trust in social media plat...TA01Strategic PlanningM001- resilience
\n", + "

140 rows × 19 columns

\n", + "
" + ], + "text/plain": [ + " amitt_id name \\\n", + "0 C00006 Charge for social media \n", + "8 C00006 Censorship \n", + "1 C00008 Create shared fact-checking database \n", + "2 C00009 Educate high profile influencers on best pract... \n", + "3 C00010 Enhanced privacy regulation for social media \n", + ".. ... ... \n", + "135 C00219 Add metadata to content that’s out of the cont... \n", + "136 C00220 Develop a monitoring and intelligence plan \n", + "137 C00221 Run a disinformation red team, and design miti... \n", + "138 C00222 Tabletop simulations \n", + "139 C00223 Strengthen Trust in social media platforms \n", + "\n", + " metatechnique summary \\\n", + "0 M004 - friction Include a paid-for privacy option, e.g. pay Fa... \n", + "8 M005 - removal Alter and/or block the publication/disseminati... \n", + "1 M006 - scoring Snopes is best-known example \n", + "2 M001 - resilience \n", + "3 M004 - friction Privacy standards \n", + ".. ... ... \n", + "135 M003 - daylight Steganography. Adding date, signatures etc to ... \n", + "136 M007 - metatechnique \n", + "137 M007 - metatechnique Include PACE plans - Primary, Alternate, Conti... \n", + "138 M007 - metatechnique \n", + "139 M001 - resilience \n", + "\n", + " playbooks \\\n", + "0 \n", + "8 \n", + "1 \n", + "2 \n", + "3 \n", + ".. ... \n", + "135 Add date and source to images \n", + "136 \n", + "137 \n", + "138 \n", + "139 \n", + "\n", + " actortypes resources_needed \\\n", + "0 A033 - social media platform owner \n", + "8 A031 - social media platform administrator \n", + "1 A007 - factchecker \n", + "2 A016 - influencer,A006 - educator \n", + "3 A020 - policy maker \n", + ".. ... ... \n", + "135 \n", + "136 \n", + "137 \n", + "138 \n", + "139 \n", + "\n", + " how_found references incident_ids \\\n", + "0 2019-11-workshop \n", + "8 grugq Taylor81 \n", + "1 2019-11-workshop\\n2019-11-search I00049,I00050 \n", + "2 2019-11-workshop \n", + "3 2019-11-workshop \n", + ".. ... ... ... \n", + "135 grugq \n", + "136 Counters cleanup \n", + "137 Counters cleanup \n", + "138 \n", + "139 \n", + "\n", + " tactic responsetype notes \\\n", + "0 TA01 Strategic Planning D2 Deny \n", + "8 TA01 Strategic Planning D2 Deny \n", + "1 TA01 Strategic Planning D4 Degrade \n", + "2 TA02 Objective Planning D2 Deny \n", + "3 TA01 Strategic Planning D2 Deny \n", + ".. ... ... ... \n", + "135 TA06 Develop Content D4 Degrade \n", + "136 TA01 Strategic Planning D3 Disrupt \n", + "137 TA01 Strategic Planning D3 Disrupt \n", + "138 TA02 Objective Planning D3 Disrupt \n", + "139 TA01 Strategic Planning D3 Disrupt \n", + "\n", + " techniques \\\n", + "0 \n", + "8 T0009 - Create fake experts\\nT0008 - Create fa... \n", + "1 TA01 - Strategic Planning\\nTA06 - Develop Cont... \n", + "2 TA08 - Pump Priming\\nT0010 - Cultivate ignoran... \n", + "3 TA05 - Microtargeting\\nT00018 - Paid targeted ads \n", + ".. ... \n", + "135 T0024 - Create fake videos and images\\nT0026 -... \n", + "136 \n", + "137 \n", + "138 \n", + "139 \n", + "\n", + " longname tactic_id \\\n", + "0 C00006 - Charge for social media TA01 \n", + "8 C00006 - Censorship TA01 \n", + "1 C00008 - Create shared fact-checking database TA01 \n", + "2 C00009 - Educate high profile influencers on b... TA02 \n", + "3 C00010 - Enhanced privacy regulation for socia... TA01 \n", + ".. ... ... \n", + "135 C00219 - Add metadata to content that’s out of... TA06 \n", + "136 C00220 - Develop a monitoring and intelligence... TA01 \n", + "137 C00221 - Run a disinformation red team, and de... TA01 \n", + "138 C00222 - Tabletop simulations TA02 \n", + "139 C00223 - Strengthen Trust in social media plat... TA01 \n", + "\n", + " tactic_name metatechnique_id metatechnique_name \n", + "0 Strategic Planning M004 - friction \n", + "8 Strategic Planning M005 - removal \n", + "1 Strategic Planning M006 - scoring \n", + "2 Objective Planning M001 - resilience \n", + "3 Strategic Planning M004 - friction \n", + ".. ... ... ... \n", + "135 Develop Content M003 - daylight \n", + "136 Strategic Planning M007 - metatechnique \n", + "137 Strategic Planning M007 - metatechnique \n", + "138 Objective Planning M007 - metatechnique \n", + "139 Strategic Planning M001 - resilience \n", + "\n", + "[140 rows x 19 columns]" + ] + }, + "execution_count": 45, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "amitt.df_counters" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
amitt_idtactic_idnamesummaryid
0T0001TA015Ds (dismiss, distort, distract, dismay, divide)Nimmo's \"4Ds of propaganda\": dismiss, distort,...1
1T0002TA01Facilitate State PropagandaOrganize citizens around pro-state messaging. ...2
2T0003TA01Leverage Existing NarrativesUse or adapt existing narrative themes, where ...3
3T0004TA01Competing NarrativesAdvance competing narratives connected to same...4
4T0005TA02Center of Gravity AnalysisRecon/research to identify \"the source of powe...5
..................
59T0060TA11Continue to amplifycontinue narrative or message amplification af...60
60T0061TA10Sell merchandisingSell hats, t-shirts, flags and other branded c...61
61T0062TA12Behaviour changes62
62T0063TA12Message reach63
63T0064TA12Social media engagement64
\n", + "

64 rows × 5 columns

\n", + "
" + ], + "text/plain": [ + " amitt_id tactic_id name \\\n", + "0 T0001 TA01 5Ds (dismiss, distort, distract, dismay, divide) \n", + "1 T0002 TA01 Facilitate State Propaganda \n", + "2 T0003 TA01 Leverage Existing Narratives \n", + "3 T0004 TA01 Competing Narratives \n", + "4 T0005 TA02 Center of Gravity Analysis \n", + ".. ... ... ... \n", + "59 T0060 TA11 Continue to amplify \n", + "60 T0061 TA10 Sell merchandising \n", + "61 T0062 TA12 Behaviour changes \n", + "62 T0063 TA12 Message reach \n", + "63 T0064 TA12 Social media engagement \n", + "\n", + " summary id \n", + "0 Nimmo's \"4Ds of propaganda\": dismiss, distort,... 1 \n", + "1 Organize citizens around pro-state messaging. ... 2 \n", + "2 Use or adapt existing narrative themes, where ... 3 \n", + "3 Advance competing narratives connected to same... 4 \n", + "4 Recon/research to identify \"the source of powe... 5 \n", + ".. ... .. \n", + "59 continue narrative or message amplification af... 60 \n", + "60 Sell hats, t-shirts, flags and other branded c... 61 \n", + "61 62 \n", + "62 63 \n", + "63 64 \n", + "\n", + "[64 rows x 5 columns]" + ] + }, + "execution_count": 44, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Generate minimal sqlite database from the Amitt variables\n", + "conn = sql.connect('test_amitt_sqlite.db')\n", + "\n", + "def add_table(dataframe, tablename, columns): \n", + " # Create sql table\n", + " colnames = ', '.join(['{} TEXT NOT NULL'.format(col) for col in columns])\n", + " conn.execute(\"DROP TABLE IF EXISTS {}\".format(tablename))\n", + " conn.execute('''CREATE TABLE {} (id INTEGER PRIMARY KEY AUTOINCREMENT, {});'''.format(tablename, colnames))\n", + " #populate table from dataframe\n", + " newtable = dataframe[columns].copy().applymap(str)\n", + " newtable['id'] = range(1,len(newtable)+1)\n", + " newtable.to_sql(tablename, conn, index=False, if_exists='append')\n", + " conn.commit()\n", + " return newtable\n", + "\n", + "#newtable = add_table(amitt.df_actortypes, 'actor_type', ['amitt_id', 'sector_id', 'framework_id', 'name', 'summary'])\n", + "# counter\n", + "# dataset\n", + "# framework\n", + "# incident\n", + "# metatechnique\n", + "newtable = add_table(amitt.df_phases, 'phase', ['amitt_id', 'name', 'rank', 'summary'])\n", + "# playbook\n", + "# reference\n", + "# response_type\n", + "# sector\n", + "newtable = add_table(amitt.df_tactics, 'tactic', ['amitt_id', 'phase_id', 'name', 'rank', 'summary'])\n", + "newtable = add_table(amitt.df_tasks, 'task', ['amitt_id', 'tactic_id', 'framework_id', 'name', 'summary'])\n", + "newtable = add_table(amitt.df_techniques, 'technique', ['amitt_id', 'tactic_id', 'name', 'summary'])\n", + "# techniques_counters\n", + "\n", + "conn.execute(\"DROP TABLE IF EXISTS {}\".format('user'))\n", + "conn.execute('''CREATE TABLE user (id INTEGER PRIMARY KEY AUTOINCREMENT, username TEXT NOT NULL UNIQUE, password TEXT NOT NULL);''')\n", + "\n", + "conn.close()\n", + "newtable" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "df_phases loaded\n", + "df_techniques loaded\n", + "df_tasks loaded\n", + "df_incidents loaded\n", + "df_counters loaded\n", + "df_detections loaded\n", + "df_actors loaded\n", + "df_resources loaded\n", + "df_responsetypes loaded\n", + "df_metatechniques loaded\n", + "it loaded\n", + "df_tactics loaded\n", + "df_techniques_per_tactic loaded\n", + "df_counters_per_tactic loaded\n", + "phases not loaded\n", + "tactics not loaded\n", + "techniques not loaded\n", + "counters not loaded\n", + "metatechniques not loaded\n", + "actors not loaded\n", + "resources not loaded\n", + "num_tactics not loaded\n", + "cross_counterid_techniqueid loaded\n", + "cross_counterid_resourceid loaded\n", + "cross_counterid_actorid loaded\n" + ] + } + ], + "source": [ + "# Generate full sqlite database from the Amitt variables\n", + "conn = sql.connect('amitt_sqlite.db')\n", + "for tablename, table in vars(amitt).items():\n", + " if type(table) == pd.core.frame.DataFrame:\n", + " table.applymap(str).to_sql(tablename, conn)\n", + " print('{} loaded'.format(tablename))\n", + " else:\n", + " print('{} not loaded'.format(tablename))" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
idactor_id
0C00006A033
1C00008A007
2C00009A016
2C00009A006
3C00010A020
.........
135C00219
136C00220
137C00221
138C00222
139C00223
\n", + "

166 rows × 2 columns

\n", + "
" + ], + "text/plain": [ + " id actor_id\n", + "0 C00006 A033\n", + "1 C00008 A007\n", + "2 C00009 A016\n", + "2 C00009 A006\n", + "3 C00010 A020\n", + ".. ... ...\n", + "135 C00219 \n", + "136 C00220 \n", + "137 C00221 \n", + "138 C00222 \n", + "139 C00223 \n", + "\n", + "[166 rows x 2 columns]" + ] + }, + "execution_count": 41, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "amitt.cross_counterid_actorid" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
idtechnique_idWeight
1C00008TA011
1C00008TA061
1C00008TA081
1C00008T00061
1C00008T00091
............
134C00216T00181
134C00216T00571
135C00219T00241
135C00219T00261
135C00219T00251
\n", + "

717 rows × 3 columns

\n", + "
" + ], + "text/plain": [ + " id technique_id Weight\n", + "1 C00008 TA01 1\n", + "1 C00008 TA06 1\n", + "1 C00008 TA08 1\n", + "1 C00008 T0006 1\n", + "1 C00008 T0009 1\n", + ".. ... ... ...\n", + "134 C00216 T0018 1\n", + "134 C00216 T0057 1\n", + "135 C00219 T0024 1\n", + "135 C00219 T0026 1\n", + "135 C00219 T0025 1\n", + "\n", + "[717 rows x 3 columns]" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "ct = amitt.cross_counterid_techniqueid\n", + "ct['Weight'] = 1\n", + "ct = ct[ct['technique_id'].str.len() > 0]\n", + "ct.to_csv('../visualisations/cross_counterid_techniqueid.csv', index=False, header=['Source','Target', 'Weight'])\n", + "ct" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.3" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/HTML_GENERATING_CODE/.ipynb_checkpoints/Generate_AMITT_github_files-checkpoint.ipynb b/HTML_GENERATING_CODE/.ipynb_checkpoints/Generate_AMITT_github_files-checkpoint.ipynb new file mode 100644 index 0000000..c73523d --- /dev/null +++ b/HTML_GENERATING_CODE/.ipynb_checkpoints/Generate_AMITT_github_files-checkpoint.ipynb @@ -0,0 +1,113 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Generate AMITT github files\n", + "\n", + "Generate all the AMITT github files from the AMITT master spreadsheet, being careful to reatin any comments people have made below the \"don't write above this\" line in them. " + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "updated ../amitt_red_framework.md\n", + "updated ../amitt_red_framework_clickable.html\n", + "updated ../amitt_blue_framework.md\n", + "updated ../amitt_blue_framework_clickable.html\n", + "updated ../phases_index.md\n", + "updated ../tactics_index.md\n", + "updated ../techniques_index.md\n", + "updated ../tasks_index.md\n", + "updated ../incidents_index.md\n", + "updated ../counters_index.md\n", + "Updating ../counters/C00006.md\n", + "Updating ../counters/C00006.md\n", + "updated ../metatechniques_index.md\n", + "updated ../actortypes_index.md\n", + "Updating ../actortypes/A001.md\n", + "Updating ../actortypes/A002.md\n", + "Updating ../actortypes/A003.md\n", + "Updating ../actortypes/A004.md\n", + "Updating ../actortypes/A005.md\n", + "Updating ../actortypes/A006.md\n", + "Updating ../actortypes/A007.md\n", + "Updating ../actortypes/A008.md\n", + "Updating ../actortypes/A009.md\n", + "Updating ../actortypes/A010.md\n", + "Updating ../actortypes/A011.md\n", + "Updating ../actortypes/A012.md\n", + "Updating ../actortypes/A013.md\n", + "Updating ../actortypes/A014.md\n", + "Updating ../actortypes/A015.md\n", + "Updating ../actortypes/A016.md\n", + "Updating ../actortypes/A017.md\n", + "Updating ../actortypes/A018.md\n", + "Updating ../actortypes/A019.md\n", + "Updating ../actortypes/A020.md\n", + "Updating ../actortypes/A021.md\n", + "Updating ../actortypes/A022.md\n", + "Updating ../actortypes/A023.md\n", + "Updating ../actortypes/A024.md\n", + "Updating ../actortypes/A025.md\n", + "Updating ../actortypes/A026.md\n", + "Updating ../actortypes/A027.md\n", + "Updating ../actortypes/A028.md\n", + "Updating ../actortypes/A029.md\n", + "Updating ../actortypes/A030.md\n", + "Updating ../actortypes/A031.md\n", + "Updating ../actortypes/A032.md\n", + "Updating ../actortypes/A033.md\n", + "updated ../responsetype_index.md\n", + "updated ../detections_index.md\n", + "updated ../tactics_by_responsetype_table.md\n", + "updated ../metatechniques_by_responsetype_table.md\n" + ] + } + ], + "source": [ + "import pandas as pd\n", + "from generate_amitt_ttps import Amitt\n", + "amitt = Amitt()\n", + "amitt.generate_and_write_datafiles()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.3" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/HTML_GENERATING_CODE/.ipynb_checkpoints/test_new_code-checkpoint.ipynb b/HTML_GENERATING_CODE/.ipynb_checkpoints/test_new_code-checkpoint.ipynb deleted file mode 100644 index f470ca0..0000000 --- a/HTML_GENERATING_CODE/.ipynb_checkpoints/test_new_code-checkpoint.ipynb +++ /dev/null @@ -1,283 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "updated ../amitt_red_framework.md\n", - "updated ../amitt_red_framework_clickable.html\n", - "updated ../amitt_blue_framework.md\n", - "updated ../amitt_blue_framework_clickable.html\n", - "updated ../phases_index.md\n", - "updated ../tactics_index.md\n", - "Updating ../tactics/TA06.md\n", - "Updating ../tactics/TA12.md\n", - "updated ../techniques_index.md\n", - "Updating ../techniques/T0025.md\n", - "Updating ../techniques/T0062.md\n", - "Updating ../techniques/T0063.md\n", - "Updating ../techniques/T0064.md\n", - "updated ../tasks_index.md\n", - "Updating ../tasks/.md\n", - "updated ../incidents_index.md\n", - "updated ../counters_index.md\n", - "updated ../metatechniques_index.md\n", - "Updating ../metatechniques/M001.md\n", - "updated ../actors_index.md\n", - "updated ../responsetype_index.md\n", - "updated ../detections_index.md\n", - "updated ../tactics_by_responsetype_table.md\n", - "updated ../metatechniques_by_responsetype_table.md\n" - ] - } - ], - "source": [ - "import pandas as pd\n", - "from generate_amitt_ttps import Amitt\n", - "amitt = Amitt()\n", - "amitt.generate_and_write_datafiles()" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "dict_keys(['df_phases', 'df_techniques', 'df_tasks', 'df_incidents', 'df_counters', 'df_detections', 'df_actors', 'df_resources', 'df_responsetypes', 'df_metatechniques', 'it', 'df_tactics', 'df_techniques_per_tactic', 'df_counters_per_tactic', 'phases', 'tactics', 'techniques', 'counters', 'metatechniques', 'actors', 'resources', 'num_tactics', 'cross_counterid_techniqueid', 'cross_counterid_resourceid', 'cross_counterid_actorid'])\n" - ] - }, - { - "data": { - "text/plain": [ - "{'TA01': 'Strategic Planning',\n", - " 'TA02': 'Objective Planning',\n", - " 'TA03': 'Develop People',\n", - " 'TA04': 'Develop Networks',\n", - " 'TA05': 'Microtargeting',\n", - " 'TA06': 'Develop Content',\n", - " 'TA07': 'Channel Selection',\n", - " 'TA08': 'Pump Priming',\n", - " 'TA09': 'Exposure',\n", - " 'TA10': 'Go Physical',\n", - " 'TA11': 'Persistence',\n", - " 'TA12': 'Measure Effectiveness'}" - ] - }, - "execution_count": 2, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Check which amitt variables we can see from here\n", - "print('{}'.format(vars(amitt).keys()))\n", - "vars(amitt)['tactics']" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# TEST AREA" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "import pandas as pd\n", - "from generate_amitt_ttps import Amitt\n", - "amitt = Amitt()" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "updated ../amitt_red_framework.md\n", - "updated ../amitt_red_framework_clickable.html\n", - "updated ../amitt_blue_framework.md\n", - "updated ../amitt_blue_framework_clickable.html\n" - ] - } - ], - "source": [ - "amitt.write_amitt_frameworks()" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "updated ../amitt_blue_framework.md\n", - "updated ../amitt_blue_framework_clickable.html\n" - ] - } - ], - "source": [ - "amitt.write_amitt_blue_framework_file(outfile = '../amitt_blue_framework.md')" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "10" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "max(amitt.df_tactics['technique_ids'].apply(len))\n" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "0 [T0001, T0002, T0003, T0004]\n", - "1 [T0005, T0006]\n", - "2 [T0007, T0008, T0009]\n", - "3 [T0010, T0011, T0012, T0013, T0014, T0015]\n", - "4 [T0016, T0017, T0018]\n", - "5 [T0019, T0020, T0021, T0022, T0023, T0024, T00...\n", - "6 [T0029, T0030, T0031, T0032, T0033, T0034, T00...\n", - "7 [T0039, T0040, T0041, T0042, T0043, T0044, T00...\n", - "8 [T0047, T0048, T0049, T0050, T0051, T0052, T00...\n", - "9 [T0057, T0061]\n", - "10 [T0058, T0059, T0060]\n", - "11 \n", - "Name: technique_ids, dtype: object" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "amitt.df_tactics['technique_ids']" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "12" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "len(amitt.padded_techniques_tactics_table)" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "12" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "amitt.max_num_techniques_per_tactic" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'xx'" - ] - }, - "execution_count": 13, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.8.3" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/HTML_GENERATING_CODE/AMITT_code_testbed.ipynb b/HTML_GENERATING_CODE/AMITT_code_testbed.ipynb new file mode 100644 index 0000000..44d87b8 --- /dev/null +++ b/HTML_GENERATING_CODE/AMITT_code_testbed.ipynb @@ -0,0 +1,1019 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Test area for AMITT code" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "dict_keys(['df_phases', 'df_techniques', 'df_tasks', 'df_incidents', 'df_counters', 'df_detections', 'df_actortypes', 'df_resources', 'df_responsetypes', 'df_metatechniques', 'it', 'df_tactics', 'df_techniques_per_tactic', 'df_counters_per_tactic', 'phases', 'tactics', 'techniques', 'counters', 'metatechniques', 'actortypes', 'resources', 'num_tactics', 'cross_counterid_techniqueid', 'cross_counterid_resourceid', 'cross_counterid_actortypeid'])\n" + ] + }, + { + "data": { + "text/plain": [ + "{'TA01': 'Strategic Planning',\n", + " 'TA02': 'Objective Planning',\n", + " 'TA03': 'Develop People',\n", + " 'TA04': 'Develop Networks',\n", + " 'TA05': 'Microtargeting',\n", + " 'TA06': 'Develop Content',\n", + " 'TA07': 'Channel Selection',\n", + " 'TA08': 'Pump Priming',\n", + " 'TA09': 'Exposure',\n", + " 'TA10': 'Go Physical',\n", + " 'TA11': 'Persistence',\n", + " 'TA12': 'Measure Effectiveness'}" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import pandas as pd\n", + "import sqlite3 as sql\n", + "from generate_amitt_ttps import Amitt\n", + "\n", + "\n", + "# Generate AMITT datasets\n", + "amitt = Amitt()\n", + "\n", + "# Check which amitt variables we can see from here\n", + "print('{}'.format(vars(amitt).keys()))\n", + "vars(amitt)['tactics']" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
amitt_idnamemetatechniquesummaryplaybooksactortypesresources_neededhow_foundreferencesincident_idstacticresponsetypenotestechniqueslongnametactic_idtactic_namemetatechnique_idmetatechnique_name
0C00006Charge for social mediaM004 - frictionInclude a paid-for privacy option, e.g. pay Fa...A033 - social media platform owner2019-11-workshopTA01 Strategic PlanningD2 DenyC00006 - Charge for social mediaTA01Strategic PlanningM004- friction
8C00006CensorshipM005 - removalAlter and/or block the publication/disseminati...A031 - social media platform administratorgrugqTaylor81TA01 Strategic PlanningD2 DenyT0009 - Create fake experts\\nT0008 - Create fa...C00006 - CensorshipTA01Strategic PlanningM005- removal
1C00008Create shared fact-checking databaseM006 - scoringSnopes is best-known exampleA007 - factchecker2019-11-workshop\\n2019-11-searchI00049,I00050TA01 Strategic PlanningD4 DegradeTA01 - Strategic Planning\\nTA06 - Develop Cont...C00008 - Create shared fact-checking databaseTA01Strategic PlanningM006- scoring
2C00009Educate high profile influencers on best pract...M001 - resilienceA016 - influencer,A006 - educator2019-11-workshopTA02 Objective PlanningD2 DenyTA08 - Pump Priming\\nT0010 - Cultivate ignoran...C00009 - Educate high profile influencers on b...TA02Objective PlanningM001- resilience
3C00010Enhanced privacy regulation for social mediaM004 - frictionPrivacy standardsA020 - policy maker2019-11-workshopTA01 Strategic PlanningD2 DenyTA05 - Microtargeting\\nT00018 - Paid targeted adsC00010 - Enhanced privacy regulation for socia...TA01Strategic PlanningM004- friction
............................................................
135C00219Add metadata to content that’s out of the cont...M003 - daylightSteganography. Adding date, signatures etc to ...Add date and source to imagesgrugqTA06 Develop ContentD4 DegradeT0024 - Create fake videos and images\\nT0026 -...C00219 - Add metadata to content that’s out of...TA06Develop ContentM003- daylight
136C00220Develop a monitoring and intelligence planM007 - metatechniqueCounters cleanupTA01 Strategic PlanningD3 DisruptC00220 - Develop a monitoring and intelligence...TA01Strategic PlanningM007- metatechnique
137C00221Run a disinformation red team, and design miti...M007 - metatechniqueInclude PACE plans - Primary, Alternate, Conti...Counters cleanupTA01 Strategic PlanningD3 DisruptC00221 - Run a disinformation red team, and de...TA01Strategic PlanningM007- metatechnique
138C00222Tabletop simulationsM007 - metatechniqueTA02 Objective PlanningD3 DisruptC00222 - Tabletop simulationsTA02Objective PlanningM007- metatechnique
139C00223Strengthen Trust in social media platformsM001 - resilienceTA01 Strategic PlanningD3 DisruptC00223 - Strengthen Trust in social media plat...TA01Strategic PlanningM001- resilience
\n", + "

140 rows × 19 columns

\n", + "
" + ], + "text/plain": [ + " amitt_id name \\\n", + "0 C00006 Charge for social media \n", + "8 C00006 Censorship \n", + "1 C00008 Create shared fact-checking database \n", + "2 C00009 Educate high profile influencers on best pract... \n", + "3 C00010 Enhanced privacy regulation for social media \n", + ".. ... ... \n", + "135 C00219 Add metadata to content that’s out of the cont... \n", + "136 C00220 Develop a monitoring and intelligence plan \n", + "137 C00221 Run a disinformation red team, and design miti... \n", + "138 C00222 Tabletop simulations \n", + "139 C00223 Strengthen Trust in social media platforms \n", + "\n", + " metatechnique summary \\\n", + "0 M004 - friction Include a paid-for privacy option, e.g. pay Fa... \n", + "8 M005 - removal Alter and/or block the publication/disseminati... \n", + "1 M006 - scoring Snopes is best-known example \n", + "2 M001 - resilience \n", + "3 M004 - friction Privacy standards \n", + ".. ... ... \n", + "135 M003 - daylight Steganography. Adding date, signatures etc to ... \n", + "136 M007 - metatechnique \n", + "137 M007 - metatechnique Include PACE plans - Primary, Alternate, Conti... \n", + "138 M007 - metatechnique \n", + "139 M001 - resilience \n", + "\n", + " playbooks \\\n", + "0 \n", + "8 \n", + "1 \n", + "2 \n", + "3 \n", + ".. ... \n", + "135 Add date and source to images \n", + "136 \n", + "137 \n", + "138 \n", + "139 \n", + "\n", + " actortypes resources_needed \\\n", + "0 A033 - social media platform owner \n", + "8 A031 - social media platform administrator \n", + "1 A007 - factchecker \n", + "2 A016 - influencer,A006 - educator \n", + "3 A020 - policy maker \n", + ".. ... ... \n", + "135 \n", + "136 \n", + "137 \n", + "138 \n", + "139 \n", + "\n", + " how_found references incident_ids \\\n", + "0 2019-11-workshop \n", + "8 grugq Taylor81 \n", + "1 2019-11-workshop\\n2019-11-search I00049,I00050 \n", + "2 2019-11-workshop \n", + "3 2019-11-workshop \n", + ".. ... ... ... \n", + "135 grugq \n", + "136 Counters cleanup \n", + "137 Counters cleanup \n", + "138 \n", + "139 \n", + "\n", + " tactic responsetype notes \\\n", + "0 TA01 Strategic Planning D2 Deny \n", + "8 TA01 Strategic Planning D2 Deny \n", + "1 TA01 Strategic Planning D4 Degrade \n", + "2 TA02 Objective Planning D2 Deny \n", + "3 TA01 Strategic Planning D2 Deny \n", + ".. ... ... ... \n", + "135 TA06 Develop Content D4 Degrade \n", + "136 TA01 Strategic Planning D3 Disrupt \n", + "137 TA01 Strategic Planning D3 Disrupt \n", + "138 TA02 Objective Planning D3 Disrupt \n", + "139 TA01 Strategic Planning D3 Disrupt \n", + "\n", + " techniques \\\n", + "0 \n", + "8 T0009 - Create fake experts\\nT0008 - Create fa... \n", + "1 TA01 - Strategic Planning\\nTA06 - Develop Cont... \n", + "2 TA08 - Pump Priming\\nT0010 - Cultivate ignoran... \n", + "3 TA05 - Microtargeting\\nT00018 - Paid targeted ads \n", + ".. ... \n", + "135 T0024 - Create fake videos and images\\nT0026 -... \n", + "136 \n", + "137 \n", + "138 \n", + "139 \n", + "\n", + " longname tactic_id \\\n", + "0 C00006 - Charge for social media TA01 \n", + "8 C00006 - Censorship TA01 \n", + "1 C00008 - Create shared fact-checking database TA01 \n", + "2 C00009 - Educate high profile influencers on b... TA02 \n", + "3 C00010 - Enhanced privacy regulation for socia... TA01 \n", + ".. ... ... \n", + "135 C00219 - Add metadata to content that’s out of... TA06 \n", + "136 C00220 - Develop a monitoring and intelligence... TA01 \n", + "137 C00221 - Run a disinformation red team, and de... TA01 \n", + "138 C00222 - Tabletop simulations TA02 \n", + "139 C00223 - Strengthen Trust in social media plat... TA01 \n", + "\n", + " tactic_name metatechnique_id metatechnique_name \n", + "0 Strategic Planning M004 - friction \n", + "8 Strategic Planning M005 - removal \n", + "1 Strategic Planning M006 - scoring \n", + "2 Objective Planning M001 - resilience \n", + "3 Strategic Planning M004 - friction \n", + ".. ... ... ... \n", + "135 Develop Content M003 - daylight \n", + "136 Strategic Planning M007 - metatechnique \n", + "137 Strategic Planning M007 - metatechnique \n", + "138 Objective Planning M007 - metatechnique \n", + "139 Strategic Planning M001 - resilience \n", + "\n", + "[140 rows x 19 columns]" + ] + }, + "execution_count": 45, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "amitt.df_counters" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
amitt_idtactic_idnamesummaryid
0T0001TA015Ds (dismiss, distort, distract, dismay, divide)Nimmo's \"4Ds of propaganda\": dismiss, distort,...1
1T0002TA01Facilitate State PropagandaOrganize citizens around pro-state messaging. ...2
2T0003TA01Leverage Existing NarrativesUse or adapt existing narrative themes, where ...3
3T0004TA01Competing NarrativesAdvance competing narratives connected to same...4
4T0005TA02Center of Gravity AnalysisRecon/research to identify \"the source of powe...5
..................
59T0060TA11Continue to amplifycontinue narrative or message amplification af...60
60T0061TA10Sell merchandisingSell hats, t-shirts, flags and other branded c...61
61T0062TA12Behaviour changes62
62T0063TA12Message reach63
63T0064TA12Social media engagement64
\n", + "

64 rows × 5 columns

\n", + "
" + ], + "text/plain": [ + " amitt_id tactic_id name \\\n", + "0 T0001 TA01 5Ds (dismiss, distort, distract, dismay, divide) \n", + "1 T0002 TA01 Facilitate State Propaganda \n", + "2 T0003 TA01 Leverage Existing Narratives \n", + "3 T0004 TA01 Competing Narratives \n", + "4 T0005 TA02 Center of Gravity Analysis \n", + ".. ... ... ... \n", + "59 T0060 TA11 Continue to amplify \n", + "60 T0061 TA10 Sell merchandising \n", + "61 T0062 TA12 Behaviour changes \n", + "62 T0063 TA12 Message reach \n", + "63 T0064 TA12 Social media engagement \n", + "\n", + " summary id \n", + "0 Nimmo's \"4Ds of propaganda\": dismiss, distort,... 1 \n", + "1 Organize citizens around pro-state messaging. ... 2 \n", + "2 Use or adapt existing narrative themes, where ... 3 \n", + "3 Advance competing narratives connected to same... 4 \n", + "4 Recon/research to identify \"the source of powe... 5 \n", + ".. ... .. \n", + "59 continue narrative or message amplification af... 60 \n", + "60 Sell hats, t-shirts, flags and other branded c... 61 \n", + "61 62 \n", + "62 63 \n", + "63 64 \n", + "\n", + "[64 rows x 5 columns]" + ] + }, + "execution_count": 44, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Generate minimal sqlite database from the Amitt variables\n", + "conn = sql.connect('test_amitt_sqlite.db')\n", + "\n", + "def add_table(dataframe, tablename, columns): \n", + " # Create sql table\n", + " colnames = ', '.join(['{} TEXT NOT NULL'.format(col) for col in columns])\n", + " conn.execute(\"DROP TABLE IF EXISTS {}\".format(tablename))\n", + " conn.execute('''CREATE TABLE {} (id INTEGER PRIMARY KEY AUTOINCREMENT, {});'''.format(tablename, colnames))\n", + " #populate table from dataframe\n", + " newtable = dataframe[columns].copy().applymap(str)\n", + " newtable['id'] = range(1,len(newtable)+1)\n", + " newtable.to_sql(tablename, conn, index=False, if_exists='append')\n", + " conn.commit()\n", + " return newtable\n", + "\n", + "#newtable = add_table(amitt.df_actortypes, 'actor_type', ['amitt_id', 'sector_id', 'framework_id', 'name', 'summary'])\n", + "# counter\n", + "# dataset\n", + "# framework\n", + "# incident\n", + "# metatechnique\n", + "newtable = add_table(amitt.df_phases, 'phase', ['amitt_id', 'name', 'rank', 'summary'])\n", + "# playbook\n", + "# reference\n", + "# response_type\n", + "# sector\n", + "newtable = add_table(amitt.df_tactics, 'tactic', ['amitt_id', 'phase_id', 'name', 'rank', 'summary'])\n", + "newtable = add_table(amitt.df_tasks, 'task', ['amitt_id', 'tactic_id', 'framework_id', 'name', 'summary'])\n", + "newtable = add_table(amitt.df_techniques, 'technique', ['amitt_id', 'tactic_id', 'name', 'summary'])\n", + "# techniques_counters\n", + "\n", + "conn.execute(\"DROP TABLE IF EXISTS {}\".format('user'))\n", + "conn.execute('''CREATE TABLE user (id INTEGER PRIMARY KEY AUTOINCREMENT, username TEXT NOT NULL UNIQUE, password TEXT NOT NULL);''')\n", + "\n", + "conn.close()\n", + "newtable" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "df_phases loaded\n", + "df_techniques loaded\n", + "df_tasks loaded\n", + "df_incidents loaded\n", + "df_counters loaded\n", + "df_detections loaded\n", + "df_actors loaded\n", + "df_resources loaded\n", + "df_responsetypes loaded\n", + "df_metatechniques loaded\n", + "it loaded\n", + "df_tactics loaded\n", + "df_techniques_per_tactic loaded\n", + "df_counters_per_tactic loaded\n", + "phases not loaded\n", + "tactics not loaded\n", + "techniques not loaded\n", + "counters not loaded\n", + "metatechniques not loaded\n", + "actors not loaded\n", + "resources not loaded\n", + "num_tactics not loaded\n", + "cross_counterid_techniqueid loaded\n", + "cross_counterid_resourceid loaded\n", + "cross_counterid_actorid loaded\n" + ] + } + ], + "source": [ + "# Generate full sqlite database from the Amitt variables\n", + "conn = sql.connect('amitt_sqlite.db')\n", + "for tablename, table in vars(amitt).items():\n", + " if type(table) == pd.core.frame.DataFrame:\n", + " table.applymap(str).to_sql(tablename, conn)\n", + " print('{} loaded'.format(tablename))\n", + " else:\n", + " print('{} not loaded'.format(tablename))" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
idactor_id
0C00006A033
1C00008A007
2C00009A016
2C00009A006
3C00010A020
.........
135C00219
136C00220
137C00221
138C00222
139C00223
\n", + "

166 rows × 2 columns

\n", + "
" + ], + "text/plain": [ + " id actor_id\n", + "0 C00006 A033\n", + "1 C00008 A007\n", + "2 C00009 A016\n", + "2 C00009 A006\n", + "3 C00010 A020\n", + ".. ... ...\n", + "135 C00219 \n", + "136 C00220 \n", + "137 C00221 \n", + "138 C00222 \n", + "139 C00223 \n", + "\n", + "[166 rows x 2 columns]" + ] + }, + "execution_count": 41, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "amitt.cross_counterid_actorid" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
idtechnique_idWeight
1C00008TA011
1C00008TA061
1C00008TA081
1C00008T00061
1C00008T00091
............
134C00216T00181
134C00216T00571
135C00219T00241
135C00219T00261
135C00219T00251
\n", + "

717 rows × 3 columns

\n", + "
" + ], + "text/plain": [ + " id technique_id Weight\n", + "1 C00008 TA01 1\n", + "1 C00008 TA06 1\n", + "1 C00008 TA08 1\n", + "1 C00008 T0006 1\n", + "1 C00008 T0009 1\n", + ".. ... ... ...\n", + "134 C00216 T0018 1\n", + "134 C00216 T0057 1\n", + "135 C00219 T0024 1\n", + "135 C00219 T0026 1\n", + "135 C00219 T0025 1\n", + "\n", + "[717 rows x 3 columns]" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "ct = amitt.cross_counterid_techniqueid\n", + "ct['Weight'] = 1\n", + "ct = ct[ct['technique_id'].str.len() > 0]\n", + "ct.to_csv('../visualisations/cross_counterid_techniqueid.csv', index=False, header=['Source','Target', 'Weight'])\n", + "ct" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.3" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/HTML_GENERATING_CODE/Generate_AMITT_github_files.ipynb b/HTML_GENERATING_CODE/Generate_AMITT_github_files.ipynb new file mode 100644 index 0000000..c73523d --- /dev/null +++ b/HTML_GENERATING_CODE/Generate_AMITT_github_files.ipynb @@ -0,0 +1,113 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Generate AMITT github files\n", + "\n", + "Generate all the AMITT github files from the AMITT master spreadsheet, being careful to reatin any comments people have made below the \"don't write above this\" line in them. " + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "updated ../amitt_red_framework.md\n", + "updated ../amitt_red_framework_clickable.html\n", + "updated ../amitt_blue_framework.md\n", + "updated ../amitt_blue_framework_clickable.html\n", + "updated ../phases_index.md\n", + "updated ../tactics_index.md\n", + "updated ../techniques_index.md\n", + "updated ../tasks_index.md\n", + "updated ../incidents_index.md\n", + "updated ../counters_index.md\n", + "Updating ../counters/C00006.md\n", + "Updating ../counters/C00006.md\n", + "updated ../metatechniques_index.md\n", + "updated ../actortypes_index.md\n", + "Updating ../actortypes/A001.md\n", + "Updating ../actortypes/A002.md\n", + "Updating ../actortypes/A003.md\n", + "Updating ../actortypes/A004.md\n", + "Updating ../actortypes/A005.md\n", + "Updating ../actortypes/A006.md\n", + "Updating ../actortypes/A007.md\n", + "Updating ../actortypes/A008.md\n", + "Updating ../actortypes/A009.md\n", + "Updating ../actortypes/A010.md\n", + "Updating ../actortypes/A011.md\n", + "Updating ../actortypes/A012.md\n", + "Updating ../actortypes/A013.md\n", + "Updating ../actortypes/A014.md\n", + "Updating ../actortypes/A015.md\n", + "Updating ../actortypes/A016.md\n", + "Updating ../actortypes/A017.md\n", + "Updating ../actortypes/A018.md\n", + "Updating ../actortypes/A019.md\n", + "Updating ../actortypes/A020.md\n", + "Updating ../actortypes/A021.md\n", + "Updating ../actortypes/A022.md\n", + "Updating ../actortypes/A023.md\n", + "Updating ../actortypes/A024.md\n", + "Updating ../actortypes/A025.md\n", + "Updating ../actortypes/A026.md\n", + "Updating ../actortypes/A027.md\n", + "Updating ../actortypes/A028.md\n", + "Updating ../actortypes/A029.md\n", + "Updating ../actortypes/A030.md\n", + "Updating ../actortypes/A031.md\n", + "Updating ../actortypes/A032.md\n", + "Updating ../actortypes/A033.md\n", + "updated ../responsetype_index.md\n", + "updated ../detections_index.md\n", + "updated ../tactics_by_responsetype_table.md\n", + "updated ../metatechniques_by_responsetype_table.md\n" + ] + } + ], + "source": [ + "import pandas as pd\n", + "from generate_amitt_ttps import Amitt\n", + "amitt = Amitt()\n", + "amitt.generate_and_write_datafiles()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.3" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/HTML_GENERATING_CODE/__pycache__/generate_amitt_ttps.cpython-38.pyc b/HTML_GENERATING_CODE/__pycache__/generate_amitt_ttps.cpython-38.pyc index 9f4fab4..69ec091 100644 Binary files a/HTML_GENERATING_CODE/__pycache__/generate_amitt_ttps.cpython-38.pyc and b/HTML_GENERATING_CODE/__pycache__/generate_amitt_ttps.cpython-38.pyc differ diff --git a/HTML_GENERATING_CODE/amitt_sqlite.db b/HTML_GENERATING_CODE/amitt_sqlite.db new file mode 100644 index 0000000..a164c75 Binary files /dev/null and b/HTML_GENERATING_CODE/amitt_sqlite.db differ diff --git a/HTML_GENERATING_CODE/generate_amitt_ttps.py b/HTML_GENERATING_CODE/generate_amitt_ttps.py index 6585a14..f366df3 100644 --- a/HTML_GENERATING_CODE/generate_amitt_ttps.py +++ b/HTML_GENERATING_CODE/generate_amitt_ttps.py @@ -29,7 +29,7 @@ Reads 1 excel file: ../AMITT_MASTER_DATA/AMITT_TTPs_MASTER.xlsx with sheets: * incidenttechniques * tactics * countermeasures -* actors +* actortypes * resources * responsetypes @@ -95,13 +95,13 @@ class Amitt: self.df_techniques = metadata['techniques'] self.df_tasks = metadata['tasks'] self.df_incidents = metadata['incidents'] - self.df_counters = metadata['countermeasures'].sort_values('id') + self.df_counters = metadata['countermeasures'].sort_values('amitt_id') self.df_counters[['tactic_id', 'tactic_name']] = self.df_counters['tactic'].str.split(' ', 1, expand=True) self.df_counters[['metatechnique_id', 'metatechnique_name']] = self.df_counters['metatechnique'].str.split(' ', 1, expand=True) self.df_detections = metadata['detections'] self.df_detections[['tactic_id', 'tactic_name']] = self.df_detections['tactic'].str.split(' ', 1, expand=True) # self.df_detections[['metatechnique_id', 'metatechnique_name']] = self.df_detections['metatechnique'].str.split(' ', 1, expand=True) #FIXIT - self.df_actors = metadata['actors'] + self.df_actortypes = metadata['actortypes'] self.df_resources = metadata['resources'] self.df_responsetypes = metadata['responsetypes'] self.df_metatechniques = metadata['metatechniques'] @@ -109,10 +109,10 @@ class Amitt: self.df_tactics = metadata['tactics'] # Add columns containing lists of techniques and counters to the tactics dataframe - self.df_techniques_per_tactic = self.df_techniques.groupby('tactic_id')['id'].apply(list).reset_index().rename({'id':'technique_ids'}, axis=1) - self.df_counters_per_tactic = self.df_counters.groupby('tactic_id')['id'].apply(list).reset_index().rename({'id':'counter_ids'}, axis=1) - self.df_tactics = self.df_tactics.merge(self.df_techniques_per_tactic, left_on='id', right_on='tactic_id', how='left').fillna('').drop('tactic_id', axis=1) - self.df_tactics = self.df_tactics.merge(self.df_counters_per_tactic, left_on='id', right_on='tactic_id', how='left').fillna('').drop('tactic_id', axis=1) + self.df_techniques_per_tactic = self.df_techniques.groupby('tactic_id')['amitt_id'].apply(list).reset_index().rename({'amitt_id':'technique_ids'}, axis=1) + self.df_counters_per_tactic = self.df_counters.groupby('tactic_id')['amitt_id'].apply(list).reset_index().rename({'amitt_id':'counter_ids'}, axis=1) + self.df_tactics = self.df_tactics.merge(self.df_techniques_per_tactic, left_on='amitt_id', right_on='tactic_id', how='left').fillna('').drop('tactic_id', axis=1) + self.df_tactics = self.df_tactics.merge(self.df_counters_per_tactic, left_on='amitt_id', right_on='tactic_id', how='left').fillna('').drop('tactic_id', axis=1) # Add simple dictionaries (id -> name) for objects self.phases = self.make_object_dictionary(self.df_phases) @@ -120,38 +120,38 @@ class Amitt: self.techniques = self.make_object_dictionary(self.df_techniques) self.counters = self.make_object_dictionary(self.df_counters) self.metatechniques = self.make_object_dictionary(self.df_metatechniques) - self.actors = self.make_object_dictionary(self.df_actors) + self.actortypes = self.make_object_dictionary(self.df_actortypes) self.resources = self.make_object_dictionary(self.df_resources) # Create the data table for each framework file self.num_tactics = len(self.df_tactics) # Create counters cross-tables - self.cross_counterid_techniqueid = self.create_cross_table(self.df_counters[['id', 'techniques']], + self.cross_counterid_techniqueid = self.create_cross_table(self.df_counters[['amitt_id', 'techniques']], 'techniques', 'technique', '\n') - self.cross_counterid_resourceid = self.create_cross_table(self.df_counters[['id', 'resources_needed']], + self.cross_counterid_resourceid = self.create_cross_table(self.df_counters[['amitt_id', 'resources_needed']], 'resources_needed', 'resource', ',') - self.cross_counterid_actorid = self.create_cross_table(self.df_counters[['id', 'actors']], - 'actors', 'actor', ',') + self.cross_counterid_actortypeid = self.create_cross_table(self.df_counters[['amitt_id', 'actortypes']], + 'actortypes', 'actortype', ',') def create_incident_technique_crosstable(self, it_metadata): # Generate full cross-table between incidents and techniques it = it_metadata - it.index=it['id'] - it = it['technique_ids'].str.split(',').apply(lambda x: pd.Series(x)).stack().reset_index(level=1, drop=True).to_frame('technique_id').reset_index().merge(it.drop('id', axis=1).reset_index()).drop('technique_ids', axis=1) - it = it.merge(self.df_incidents[['id','name']], - left_on='incident_id', right_on='id', + it.index=it['amitt_id'] + it = it['technique_ids'].str.split(',').apply(lambda x: pd.Series(x)).stack().reset_index(level=1, drop=True).to_frame('technique_id').reset_index().merge(it.drop('amitt_id', axis=1).reset_index()).drop('technique_ids', axis=1) + it = it.merge(self.df_incidents[['amitt_id','name']], + left_on='incident_id', right_on='amitt_id', suffixes=['','_incident']).drop('incident_id', axis=1) - it = it.merge(self.df_techniques[['id','name']], - left_on='technique_id', right_on='id', + it = it.merge(self.df_techniques[['amitt_id','name']], + left_on='technique_id', right_on='amitt_id', suffixes=['','_technique']).drop('technique_id', axis=1) return(it) def make_object_dictionary(self, df): - return(pd.Series(df.name.values,index=df.id).to_dict()) + return(pd.Series(df.name.values,index=df.amitt_id).to_dict()) def create_cross_table(self, df, col, newcol, divider=','): @@ -176,10 +176,10 @@ class Amitt: | -------- | -------------------- | ''' incirow = '| [{0} {1}](../incidents/{0}.md) | {2} |\n' - its = self.it[self.it['id_technique']==techniqueid] - for index, row in its[['id_incident', 'name_incident']].drop_duplicates().sort_values('id_incident').iterrows(): - techstring = ', '.join(its[its['id_incident']==row['id_incident']]['name'].to_list()) - incidentstr += incirow.format(row['id_incident'], row['name_incident'], techstring) + its = self.it[self.it['amitt_id_technique']==techniqueid] + for index, row in its[['amitt_id_incident', 'name_incident']].drop_duplicates().sort_values('amitt_id_incident').iterrows(): + techstring = ', '.join(its[its['amitt_id_incident']==row['amitt_id_incident']]['name'].to_list()) + incidentstr += incirow.format(row['amitt_id_incident'], row['name_incident'], techstring) return incidentstr @@ -190,10 +190,10 @@ class Amitt: | --------- | ------------------------- | ''' techrow = '| [{0} {1}](../techniques/{0}.md) | {2} {3} |\n' - techlist = self.it[self.it['id_incident'] == incidentid] - for index, row in techlist.sort_values('id_technique').iterrows(): - techstr += techrow.format(row['id_technique'], row['name_technique'], - row['id'], row['name']) + techlist = self.it[self.it['amitt_id_incident'] == incidentid] + for index, row in techlist.sort_values('amitt_id_technique').iterrows(): + techstr += techrow.format(row['amitt_id_technique'], row['name_technique'], + row['amitt_id'], row['name']) return techstr @@ -205,8 +205,8 @@ class Amitt: ''' tactic_tasks = self.df_tasks[self.df_tasks['tactic_id']==tactic_id] task_string = '| [{0} {1}](../tasks/{0}.md) |\n' - for index, row in tactic_tasks.sort_values('id').iterrows(): - table_string += task_string.format(row['id'], row['name']) + for index, row in tactic_tasks.sort_values('amitt_id').iterrows(): + table_string += task_string.format(row['amitt_id'], row['name']) return table_string @@ -218,8 +218,8 @@ class Amitt: ''' tactic_techniques = self.df_techniques[self.df_techniques['tactic_id']==tactic_id] row_string = '| [{0} {1}](../techniques/{0}.md) |\n' - for index, row in tactic_techniques.sort_values('id').iterrows(): - table_string += row_string.format(row['id'], row['name']) + for index, row in tactic_techniques.sort_values('amitt_id').iterrows(): + table_string += row_string.format(row['amitt_id'], row['name']) return table_string @@ -230,8 +230,8 @@ class Amitt: ''' object_counters = self.df_counters[self.df_counters[objectcolumn]==object_id] row_string = '| [{0} {1}](../counters/{0}.md) | {2} |\n' - for index, row in object_counters.sort_values(['responsetype', 'id']).iterrows(): - table_string += row_string.format(row['id'], row['name'], row['responsetype']) + for index, row in object_counters.sort_values(['responsetype', 'amitt_id']).iterrows(): + table_string += row_string.format(row['amitt_id'], row['name'], row['responsetype']) return table_string def create_technique_counters_string(self, technique_id): @@ -240,34 +240,34 @@ class Amitt: | -------- | -------------- | ''' technique_counters = self.cross_counterid_techniqueid[self.cross_counterid_techniqueid['technique_id']==technique_id] - technique_counters = pd.merge(technique_counters, self.df_counters[['id', 'name', 'responsetype']]) + technique_counters = pd.merge(technique_counters, self.df_counters[['amitt_id', 'name', 'responsetype']]) row_string = '| [{0} {1}](../counters/{0}.md) | {2} |\n' - for index, row in technique_counters.sort_values('id').iterrows(): - table_string += row_string.format(row['id'], row['name'], row['responsetype']) + for index, row in technique_counters.sort_values('amitt_id').iterrows(): + table_string += row_string.format(row['amitt_id'], row['name'], row['responsetype']) return table_string - def create_counter_actors_string(self, counter_id): + def create_counter_actortypes_string(self, counter_id): table_string = ''' -| Actors | Sectors | -| ------ | ------- | +| Actor types | Sectors | +| ----------- | ------- | ''' - counter_actors = self.cross_counterid_actorid[self.cross_counterid_actorid['id']==counter_id] - counter_actors = pd.merge(counter_actors, self.df_actors[['id', 'name', 'sector']], left_on='actor_id', right_on='id') - row_string = '| [{0} {1}](../actors/{0}.md) | {2} |\n' - for index, row in counter_actors.sort_values('actor_id').iterrows(): - table_string += row_string.format(row['actor_id'], row['name'], row['sector']) + counter_actortypes = self.cross_counterid_actortypeid[self.cross_counterid_actortypeid['amitt_id']==counter_id] + counter_actortypes = pd.merge(counter_actortypes, self.df_actortypes[['amitt_id', 'name', 'sector']], left_on='actortype_id', right_on='amitt_id') + row_string = '| [{0} {1}](../actortypes/{0}.md) | {2} |\n' + for index, row in counter_actortypes.sort_values('actortype_id').iterrows(): + table_string += row_string.format(row['actortype_id'], row['name'], row['sector']) return table_string - def create_actor_counters_string(self, actor_id): + def create_actortype_counters_string(self, actortype_id): table_string = ''' | Counters | Response types | | -------- | -------------- | ''' - actor_counters = self.cross_counterid_actorid[self.cross_counterid_actorid['actor_id']==actor_id] - actor_counters = pd.merge(actor_counters, self.df_counters[['id', 'name', 'responsetype']]) + actortype_counters = self.cross_counterid_actortypeid[self.cross_counterid_actortypeid['actortype_id']==actortype_id] + actortype_counters = pd.merge(actortype_counters, self.df_counters[['amitt_id', 'name', 'responsetype']]) row_string = '| [{0} {1}](../counters/{0}.md) | {2} |\n' - for index, row in actor_counters.sort_values('id').iterrows(): - table_string += row_string.format(row['id'], row['name'], row['responsetype']) + for index, row in actortype_counters.sort_values('amitt_id').iterrows(): + table_string += row_string.format(row['amitt_id'], row['name'], row['responsetype']) return table_string def create_resource_counters_string(self, resource_id): @@ -276,10 +276,10 @@ class Amitt: | -------- | -------------- | ''' resource_counters = self.cross_counterid_resourceid[self.cross_counterid_resourceid['resource_id']==resource_id] - resource_counters = pd.merge(resource_counters, self.df_counters[['id', 'name', 'responsetype']]) + resource_counters = pd.merge(resource_counters, self.df_counters[['amitt_id', 'name', 'responsetype']]) row_string = '| [{0} {1}](../counters/{0}.md) | {2} |\n' - for index, row in actor_counters.sort_values('id').iterrows(): - table_string += row_string.format(row['id'], row['name'], row['responsetype']) + for index, row in actortype_counters.sort_values('amitt_id').iterrows(): + table_string += row_string.format(row['amitt_id'], row['name'], row['responsetype']) return table_string @@ -290,8 +290,8 @@ class Amitt: ''' # tactic_counters = self.df_counters[self.df_counters['tactic_id']==tactic_id] # row_string = '| {0} | [{1} {2}](../counters/{1}.md) |\n' - # for index, row in tactic_counters.sort_values(['responsetype', 'id']).iterrows(): - # table_string += row_string.format(row['responsetype'], row['id'], row['name']) + # for index, row in tactic_counters.sort_values(['responsetype', 'amitt_id']).iterrows(): + # table_string += row_string.format(row['responsetype'], row['amitt_id'], row['name']) return table_string def create_counter_techniques_string(self, counter_id): @@ -299,10 +299,10 @@ class Amitt: | Counters these Techniques | | ------------------------- | ''' - counter_techniques = self.cross_counterid_techniqueid[self.cross_counterid_techniqueid['id']==counter_id] - counter_techniques = pd.merge(counter_techniques, self.df_techniques[['id', 'name']].rename(columns={'id': 'technique_id'})) + counter_techniques = self.cross_counterid_techniqueid[self.cross_counterid_techniqueid['amitt_id']==counter_id] + counter_techniques = pd.merge(counter_techniques, self.df_techniques[['amitt_id', 'name']].rename(columns={'amitt_id': 'technique_id'})) row_string = '| [{0} {1}](../techniques/{0}.md) |\n' - for index, row in counter_techniques.sort_values('id').iterrows(): + for index, row in counter_techniques.sort_values('amitt_id').iterrows(): table_string += row_string.format(row['technique_id'], row['name']) return table_string @@ -313,15 +313,15 @@ class Amitt: ''' # tactic_counters = self.df_counters[self.df_counters['tactic_id']==tactic_id] # row_string = '| {0} | [{1} {2}](../counters/{1}.md) |\n' - # for index, row in tactic_counters.sort_values(['responsetype', 'id']).iterrows(): - # table_string += row_string.format(row['responsetype'], row['id'], row['name']) + # for index, row in tactic_counters.sort_values(['responsetype', 'amitt_id']).iterrows(): + # table_string += row_string.format(row['responsetype'], row['amitt_id'], row['name']) return table_string def write_object_index_to_file(self, objectname, objectcols, dfobject, outfile): ''' Write HTML version of incident list to markdown file - Assumes that dfobject has columns named 'id' and 'name' + Assumes that dfobject has columns named 'amitt_id' and 'name' ''' html = '''# AMITT {}: @@ -331,14 +331,14 @@ class Amitt: '''.format(objectname.capitalize()) # Create header row - html += '{}\n'.format('id') + html += '{}\n'.format('amitt_id') html += ''.join(['{}\n'.format(col) for col in objectcols]) html += '\n' # Add row for each object for index, row in dfobject[dfobject['name'].notnull()].iterrows(): html += '\n' - html += '{1}\n'.format(objectname, row['id']) + html += '{1}\n'.format(objectname, row['amitt_id']) html += ''.join(['{}\n'.format(row[col]) for col in objectcols]) html += '\n' html += '\n' @@ -379,7 +379,7 @@ class Amitt: 'incident': self.df_incidents, 'counter': self.df_counters, 'metatechnique': self.df_metatechniques, - 'actor': self.df_actors, + 'actortype': self.df_actortypes, #'resource': self.df_resources, #'responsetype': self.df_responsetypes, #'detection': self.df_detections @@ -390,12 +390,12 @@ class Amitt: 'tactic': ['name', 'summary', 'phase_id'], 'technique': ['name', 'summary', 'tactic_id'], 'task': ['name', 'summary', 'tactic_id'], - 'incident': ['name', 'type', 'Year Started', 'To country', 'Found via'], + 'incident': ['name', 'type', 'year_started', 'to_country', 'found_via'], 'counter': ['name', 'summary', 'metatechnique', 'tactic', 'responsetype'], 'detection': ['name', 'summary', 'metatechnique', 'tactic', 'responsetype'], 'responsetype': ['name', 'summary'], 'metatechnique': ['name', 'summary'], - 'actor': ['name', 'summary', 'sector'], + 'actortype': ['name', 'summary', 'sector'], 'resource': ['name', 'summary', 'resource type'] } @@ -417,7 +417,7 @@ class Amitt: # First read in the file - if it exists - and grab everything # below the "do not write about this line". Will write this # out below new metadata. - datafile = '../{}/{}.md'.format(objecttypeplural, row['id']) + datafile = '../{}/{}.md'.format(objecttypeplural, row['amitt_id']) oldmetatext = '' if os.path.exists(datafile): with open(datafile) as f: @@ -434,52 +434,52 @@ class Amitt: # Now populate datafiles with new metadata plus old userdata if objecttype == 'phase': - metatext = template.format(type='Phase', id=row['id'], name=row['name'], summary=row['summary']) + metatext = template.format(type='Phase', id=row['amitt_id'], name=row['name'], summary=row['summary']) if objecttype == 'tactic': - metatext = template.format(type = 'Tactic', id=row['id'], name=row['name'], + metatext = template.format(type = 'Tactic', id=row['amitt_id'], name=row['name'], phase=row['phase_id'], summary=row['summary'], - tasks=self.create_tactic_tasks_string(row['id']), - techniques=self.create_tactic_techniques_string(row['id']), - counters=self.create_object_counters_string('tactic_id', row['id'])) + tasks=self.create_tactic_tasks_string(row['amitt_id']), + techniques=self.create_tactic_techniques_string(row['amitt_id']), + counters=self.create_object_counters_string('tactic_id', row['amitt_id'])) if objecttype == 'task': - metatext = template.format(type='Task', id=row['id'], name=row['name'], + metatext = template.format(type='Task', id=row['amitt_id'], name=row['name'], tactic=row['tactic_id'], summary=row['summary']) if objecttype == 'technique': - metatext = template.format(type = 'Technique', id=row['id'], name=row['name'], + metatext = template.format(type = 'Technique', id=row['amitt_id'], name=row['name'], tactic=row['tactic_id'], summary=row['summary'], - incidents=self.create_technique_incidents_string(row['id']), - counters=self.create_technique_counters_string(row['id'])) + incidents=self.create_technique_incidents_string(row['amitt_id']), + counters=self.create_technique_counters_string(row['amitt_id'])) if objecttype == 'counter': - metatext = template.format(type = 'Counter', id=row['id'], name=row['name'], + metatext = template.format(type = 'Counter', id=row['amitt_id'], name=row['name'], tactic=row['tactic_id'], summary=row['summary'], - playbooks=row['playbooks'], metatechnique=row['metatechnique'], - actors=self.create_counter_actors_string(row['id']), + playbooks='', metatechnique=row['metatechnique'], + actortypes=self.create_counter_actortypes_string(row['amitt_id']), resources_needed=row['resources_needed'], - tactics=self.create_counter_tactics_string(row['id']), - techniques=self.create_counter_techniques_string(row['id']), - incidents=self.create_counter_incidents_string(row['id'])) + tactics=self.create_counter_tactics_string(row['amitt_id']), + techniques=self.create_counter_techniques_string(row['amitt_id']), + incidents=self.create_counter_incidents_string(row['amitt_id'])) if objecttype == 'incident': - metatext = template.format(type = 'Incident', id=row['id'], name=row['name'], + metatext = template.format(type = 'Incident', id=row['amitt_id'], name=row['name'], incidenttype=row['type'], summary=row['summary'], - yearstarted=row['Year Started'], - fromcountry=row['From country'], - tocountry=row['To country'], - foundvia=row['Found via'], - dateadded=row['When added'], - techniques=self.create_incident_techniques_string(row['id'])) - if objecttype == 'actor': - metatext = template.format(type = 'Actor', id=row['id'], name=row['name'], + yearstarted=row['year_started'], + fromcountry=row['from_country'], + tocountry=row['to_country'], + foundvia=row['found_via'], + dateadded=row['when_added'], + techniques=self.create_incident_techniques_string(row['amitt_id'])) + if objecttype == 'actortype': + metatext = template.format(type = 'Actor', id=row['amitt_id'], name=row['name'], summary=row['summary'], sector=row['sector'], viewpoint=row['viewpoint'], - counters=self.create_actor_counters_string(row['id'])) + counters=self.create_actortype_counters_string(row['amitt_id'])) if objecttype == 'resource': - metatext = template.format(type = 'Resource', id=row['id'], name=row['name'], + metatext = template.format(type = 'Resource', id=row['amitt_id'], name=row['name'], summary=row['summary'], resource_type=row['resource_type'], - counters=self.create_resource_counters_string(row['id'])) + counters=self.create_resource_counters_string(row['amitt_id'])) if objecttype == 'metatechnique': - metatext = template.format(type='Metatechnique', id=row['id'], name=row['name'], + metatext = template.format(type='Metatechnique', id=row['amitt_id'], name=row['name'], summary=row['summary'], - counters=self.create_object_counters_string('metatechnique_id', row['id'])) + counters=self.create_object_counters_string('metatechnique_id', row['amitt_id'])) # Make sure the user data goes in if (metatext + warntext) != oldmetatext: @@ -502,7 +502,7 @@ class Amitt: arr = [['' for i in range(self.num_tactics)] for j in range(numrows)] for index, tactic in self.df_tactics.iterrows(): arr[0][index] = tactic['phase_id'] - arr[1][index] = tactic['id'] + arr[1][index] = tactic['amitt_id'] if tactic[ttp_col] == '': continue for index2, technique in enumerate(tactic[ttp_col]): @@ -643,14 +643,14 @@ function handleTechniqueClick(box) {{ def print_technique_incidents(self): - for id_technique in self.df_techniques['id'].to_list(): + for id_technique in self.df_techniques['amitt_id'].to_list(): print('{}\n{}'.format(id_technique, self.create_incidentstring(id_technique))) return def print_incident_techniques(self): - for id_incident in self.df_incidents['id'].to_list(): + for id_incident in self.df_incidents['amitt_id'].to_list(): print('{}\n{}'.format(id_incident, self.create_techstring(id_incident))) return @@ -669,10 +669,10 @@ function handleTechniqueClick(box) {{ def analyse_coverage(self, technique_id_list, counter_id_list): ct = self.cross_counterid_techniqueid.copy() - ct = ct[ct['technique_id'].isin(self.df_techniques['id'].to_list()) & ct['id'].isin(self.df_counters['id'].to_list())] + ct = ct[ct['technique_id'].isin(self.df_techniques['amitt_id'].to_list()) & ct['amitt_id'].isin(self.df_counters['amitt_id'].to_list())] possible_counters_for_techniques = ct[ct['technique_id'].isin(technique_id_list)] possible_techniques_for_counters = ct[ct['technique_id'].isin(counter_id_list)] - coverage = ct[(ct['id'].isin(counter_id_list)) & (ct['technique_id'].isin(technique_id_list))] + coverage = ct[(ct['amitt_id'].isin(counter_id_list)) & (ct['technique_id'].isin(technique_id_list))] return coverage, possible_counters_for_techniques, possible_techniques_for_counters @@ -714,7 +714,7 @@ function handleTechniqueClick(box) {{ ''' Write course of action matrix for tactics vs responsetype ''' - counts_table = pd.pivot_table(self.df_counters[['responsetype', 'tactic_id','id']], + counts_table = pd.pivot_table(self.df_counters[['responsetype', 'tactic_id','amitt_id']], index='tactic_id', columns='responsetype', aggfunc=len, fill_value=0) counts_table['TOTALS'] = counts_table.sum(axis=1) @@ -725,7 +725,7 @@ function handleTechniqueClick(box) {{ def write_metatechniques_responsetype_table_file(self, outfile = '../metatechniques_by_responsetype_table.md'): - counts_table = pd.pivot_table(self.df_counters[['responsetype', 'metatechnique_id','id']], + counts_table = pd.pivot_table(self.df_counters[['responsetype', 'metatechnique_id','amitt_id']], index='metatechnique_id', columns='responsetype', aggfunc=len, fill_value=0) counts_table['TOTALS'] = counts_table.sum(axis=1) @@ -737,7 +737,7 @@ function handleTechniqueClick(box) {{ def write_resources_responsetype_table_file(self, outfile = '../resources_by_responsetype_table.md'): # dirty hack because there are lots of -blanks?- in the cross-table that should have been filtered out - crosstable_with_responsetype = self.cross_counterid_resourceid.merge(self.df_counters[['id', 'responsetype']]) + crosstable_with_responsetype = self.cross_counterid_resourceid.merge(self.df_counters[['amitt_id', 'responsetype']]) crosstable_with_responsetype = crosstable_with_responsetype[crosstable_with_responsetype['responsetype'].isin(self.resources.keys())] counts_table = pd.pivot_table(crosstable_with_responsetype, index='resource_id', columns='responsetype', aggfunc=len, diff --git a/HTML_GENERATING_CODE/template_actor.md b/HTML_GENERATING_CODE/template_actortype.md similarity index 100% rename from HTML_GENERATING_CODE/template_actor.md rename to HTML_GENERATING_CODE/template_actortype.md diff --git a/HTML_GENERATING_CODE/template_counter.md b/HTML_GENERATING_CODE/template_counter.md index 51fb3ec..98dc36d 100644 --- a/HTML_GENERATING_CODE/template_counter.md +++ b/HTML_GENERATING_CODE/template_counter.md @@ -10,7 +10,7 @@ * **Belongs to tactic stage**: {tactic} -{actors} +{actortypes} {tactics} diff --git a/HTML_GENERATING_CODE/test_new_code.ipynb b/HTML_GENERATING_CODE/test_new_code.ipynb deleted file mode 100644 index 3aebb33..0000000 --- a/HTML_GENERATING_CODE/test_new_code.ipynb +++ /dev/null @@ -1,203 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "updated ../amitt_red_framework.md\n", - "updated ../amitt_red_framework_clickable.html\n", - "updated ../amitt_blue_framework.md\n", - "updated ../amitt_blue_framework_clickable.html\n", - "updated ../phases_index.md\n", - "updated ../tactics_index.md\n", - "Updating ../tactics/TA01.md\n", - "Updating ../tactics/TA06.md\n", - "Updating ../tactics/TA07.md\n", - "Updating ../tactics/TA08.md\n", - "Updating ../tactics/TA09.md\n", - "Updating ../tactics/TA11.md\n", - "Updating ../tactics/TA12.md\n", - "updated ../techniques_index.md\n", - "Updating ../techniques/T0001.md\n", - "Updating ../techniques/T0002.md\n", - "Updating ../techniques/T0003.md\n", - "Updating ../techniques/T0007.md\n", - "Updating ../techniques/T0008.md\n", - "Updating ../techniques/T0009.md\n", - "Updating ../techniques/T0010.md\n", - "Updating ../techniques/T0011.md\n", - "Updating ../techniques/T0013.md\n", - "Updating ../techniques/T0014.md\n", - "Updating ../techniques/T0015.md\n", - "Updating ../techniques/T0016.md\n", - "Updating ../techniques/T0017.md\n", - "Updating ../techniques/T0018.md\n", - "Updating ../techniques/T0020.md\n", - "Updating ../techniques/T0021.md\n", - "Updating ../techniques/T0022.md\n", - "Updating ../techniques/T0024.md\n", - "Updating ../techniques/T0025.md\n", - "Updating ../techniques/T0026.md\n", - "Updating ../techniques/T0027.md\n", - "Updating ../techniques/T0029.md\n", - "Updating ../techniques/T0039.md\n", - "Updating ../techniques/T0044.md\n", - "Updating ../techniques/T0045.md\n", - "Updating ../techniques/T0046.md\n", - "Updating ../techniques/T0048.md\n", - "Updating ../techniques/T0049.md\n", - "Updating ../techniques/T0051.md\n", - "Updating ../techniques/T0052.md\n", - "Updating ../techniques/T0053.md\n", - "Updating ../techniques/T0054.md\n", - "Updating ../techniques/T0055.md\n", - "Updating ../techniques/T0056.md\n", - "Updating ../techniques/T0057.md\n", - "Updating ../techniques/T0061.md\n", - "Updating ../techniques/T0063.md\n", - "updated ../tasks_index.md\n", - "updated ../incidents_index.md\n", - "updated ../counters_index.md\n", - "Updating ../counters/C00006.md\n", - "Updating ../counters/C00006.md\n", - "Updating ../counters/C00012.md\n", - "Updating ../counters/C00026.md\n", - "Updating ../counters/C00030.md\n", - "Updating ../counters/C00056.md\n", - "Updating ../counters/C00073.md\n", - "Updating ../counters/C00090.md\n", - "Updating ../counters/C00101.md\n", - "Updating ../counters/C00103.md\n", - "Updating ../counters/C00107.md\n", - "Updating ../counters/C00111.md\n", - "Updating ../counters/C00117.md\n", - "Updating ../counters/C00122.md\n", - "Updating ../counters/C00139.md\n", - "Updating ../counters/C00144.md\n", - "Updating ../counters/C00149.md\n", - "Updating ../counters/C00172.md\n", - "Updating ../counters/C00174.md\n", - "Updating ../counters/C00178.md\n", - "Updating ../counters/C00182.md\n", - "Updating ../counters/C00188.md\n", - "Updating ../counters/C00190.md\n", - "Updating ../counters/C00195.md\n", - "Updating ../counters/C00200.md\n", - "Updating ../counters/C00211.md\n", - "updated ../metatechniques_index.md\n", - "Updating ../metatechniques/M001.md\n", - "Updating ../metatechniques/M002.md\n", - "Updating ../metatechniques/M003.md\n", - "Updating ../metatechniques/M004.md\n", - "Updating ../metatechniques/M005.md\n", - "Updating ../metatechniques/M007.md\n", - "Updating ../metatechniques/M008.md\n", - "Updating ../metatechniques/M010.md\n", - "updated ../actors_index.md\n", - "Updating ../actors/A006.md\n", - "Updating ../actors/A018.md\n", - "Updating ../actors/A020.md\n", - "Updating ../actors/A021.md\n", - "Updating ../actors/A027.md\n", - "Updating ../actors/A028.md\n", - "Updating ../actors/A031.md\n", - "updated ../responsetype_index.md\n", - "updated ../detections_index.md\n", - "updated ../tactics_by_responsetype_table.md\n", - "updated ../metatechniques_by_responsetype_table.md\n" - ] - } - ], - "source": [ - "import pandas as pd\n", - "from generate_amitt_ttps import Amitt\n", - "amitt = Amitt()\n", - "amitt.generate_and_write_datafiles()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Check which amitt variables we can see from here\n", - "print('{}'.format(vars(amitt).keys()))\n", - "vars(amitt)['tactics']" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# TEST AREA" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import pandas as pd\n", - "from generate_amitt_ttps import Amitt\n", - "amitt = Amitt()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "ct = amitt.cross_counterid_techniqueid\n", - "ct['Weight'] = 1\n", - "ct = ct[ct['technique_id'].str.len() > 0]\n", - "ct.to_csv('../visualisations/cross_counterid_techniqueid.csv', index=False, header=['Source','Target', 'Weight'])\n", - "ct" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.8.3" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/actortypes/A001.md b/actortypes/A001.md new file mode 100644 index 0000000..1debe11 --- /dev/null +++ b/actortypes/A001.md @@ -0,0 +1,16 @@ +# Actor A001: data scientist + +* **Summary:** Person who can wrangle data, implement machine learning algorithms etc + +* **Sector:** All + +* **Viewpoint:** both + + +| Counters | Response types | +| -------- | -------------- | +| [C00092 Establish a truth teller reputation score for influencers](../counters/C00092.md) | D7 Deter | +| [C00160 find and train influencers](../counters/C00160.md) | D2 Deny | + + +DO NOT EDIT ABOVE THIS LINE - PLEASE ADD NOTES BELOW \ No newline at end of file diff --git a/actortypes/A002.md b/actortypes/A002.md new file mode 100644 index 0000000..78a1cef --- /dev/null +++ b/actortypes/A002.md @@ -0,0 +1,14 @@ +# Actor A002: target + +* **Summary:** Person being targeted by disinformation campaign + +* **Sector:** All + +* **Viewpoint:** blue + + +| Counters | Response types | +| -------- | -------------- | + + +DO NOT EDIT ABOVE THIS LINE - PLEASE ADD NOTES BELOW \ No newline at end of file diff --git a/actortypes/A003.md b/actortypes/A003.md new file mode 100644 index 0000000..599fea0 --- /dev/null +++ b/actortypes/A003.md @@ -0,0 +1,15 @@ +# Actor A003: trusted authority + +* **Summary:** Influencer + +* **Sector:** All + +* **Viewpoint:** both + + +| Counters | Response types | +| -------- | -------------- | +| [C00128 Create friction by marking content with ridicule or other "decelerants"](../counters/C00128.md) | D3 Disrupt | + + +DO NOT EDIT ABOVE THIS LINE - PLEASE ADD NOTES BELOW \ No newline at end of file diff --git a/actortypes/A004.md b/actortypes/A004.md new file mode 100644 index 0000000..e320d3c --- /dev/null +++ b/actortypes/A004.md @@ -0,0 +1,16 @@ +# Actor A004: activist + +* **Summary:** + +* **Sector:** Civil Society + +* **Viewpoint:** blue + + +| Counters | Response types | +| -------- | -------------- | +| [C00052 Infiltrate platforms](../counters/C00052.md) | D4 Degrade | +| [C00197 remove suspicious accounts](../counters/C00197.md) | D2 Deny | + + +DO NOT EDIT ABOVE THIS LINE - PLEASE ADD NOTES BELOW \ No newline at end of file diff --git a/actortypes/A005.md b/actortypes/A005.md new file mode 100644 index 0000000..8e1421f --- /dev/null +++ b/actortypes/A005.md @@ -0,0 +1,15 @@ +# Actor A005: community group + +* **Summary:** + +* **Sector:** Civil Society + +* **Viewpoint:** blue + + +| Counters | Response types | +| -------- | -------------- | +| [C00073 Inoculate populations through media literacy training](../counters/C00073.md) | D2 Deny | + + +DO NOT EDIT ABOVE THIS LINE - PLEASE ADD NOTES BELOW \ No newline at end of file diff --git a/actortypes/A006.md b/actortypes/A006.md new file mode 100644 index 0000000..12e5164 --- /dev/null +++ b/actortypes/A006.md @@ -0,0 +1,20 @@ +# Actor A006: educator + +* **Summary:** + +* **Sector:** Civil Society + +* **Viewpoint:** blue + + +| Counters | Response types | +| -------- | -------------- | +| [C00009 Educate high profile influencers on best practices](../counters/C00009.md) | D2 Deny | +| [C00011 Media literacy. Games to identify fake news](../counters/C00011.md) | D2 Deny | +| [C00051 Counter social engineering training](../counters/C00051.md) | D2 Deny | +| [C00073 Inoculate populations through media literacy training](../counters/C00073.md) | D2 Deny | +| [C00188 Newsroom/Journalist training to counter influence moves](../counters/C00188.md) | D3 Disrupt | +| [C00212 build public resilience by making civil society more vibrant](../counters/C00212.md) | D3 Disrupt | + + +DO NOT EDIT ABOVE THIS LINE - PLEASE ADD NOTES BELOW \ No newline at end of file diff --git a/actortypes/A007.md b/actortypes/A007.md new file mode 100644 index 0000000..092c683 --- /dev/null +++ b/actortypes/A007.md @@ -0,0 +1,16 @@ +# Actor A007: factchecker + +* **Summary:** Someone with the skills to verify whether information posted is factual + +* **Sector:** Civil Society + +* **Viewpoint:** blue + + +| Counters | Response types | +| -------- | -------------- | +| [C00008 Create shared fact-checking database](../counters/C00008.md) | D4 Degrade | +| [C00014 Real-time updates to fact-checking database](../counters/C00014.md) | D4 Degrade | + + +DO NOT EDIT ABOVE THIS LINE - PLEASE ADD NOTES BELOW \ No newline at end of file diff --git a/actortypes/A008.md b/actortypes/A008.md new file mode 100644 index 0000000..fced9e6 --- /dev/null +++ b/actortypes/A008.md @@ -0,0 +1,15 @@ +# Actor A008: library + +* **Summary:** + +* **Sector:** Civil Society + +* **Viewpoint:** blue + + +| Counters | Response types | +| -------- | -------------- | +| [C00073 Inoculate populations through media literacy training](../counters/C00073.md) | D2 Deny | + + +DO NOT EDIT ABOVE THIS LINE - PLEASE ADD NOTES BELOW \ No newline at end of file diff --git a/actortypes/A009.md b/actortypes/A009.md new file mode 100644 index 0000000..c3cf96a --- /dev/null +++ b/actortypes/A009.md @@ -0,0 +1,15 @@ +# Actor A009: NGO + +* **Summary:** + +* **Sector:** Civil Society + +* **Viewpoint:** blue + + +| Counters | Response types | +| -------- | -------------- | +| [C00073 Inoculate populations through media literacy training](../counters/C00073.md) | D2 Deny | + + +DO NOT EDIT ABOVE THIS LINE - PLEASE ADD NOTES BELOW \ No newline at end of file diff --git a/actortypes/A010.md b/actortypes/A010.md new file mode 100644 index 0000000..d0942c0 --- /dev/null +++ b/actortypes/A010.md @@ -0,0 +1,15 @@ +# Actor A010: religious organisation + +* **Summary:** + +* **Sector:** Civil Society + +* **Viewpoint:** blue + + +| Counters | Response types | +| -------- | -------------- | +| [C00073 Inoculate populations through media literacy training](../counters/C00073.md) | D2 Deny | + + +DO NOT EDIT ABOVE THIS LINE - PLEASE ADD NOTES BELOW \ No newline at end of file diff --git a/actortypes/A011.md b/actortypes/A011.md new file mode 100644 index 0000000..9ea4d0b --- /dev/null +++ b/actortypes/A011.md @@ -0,0 +1,14 @@ +# Actor A011: school + +* **Summary:** + +* **Sector:** Civil Society + +* **Viewpoint:** blue + + +| Counters | Response types | +| -------- | -------------- | + + +DO NOT EDIT ABOVE THIS LINE - PLEASE ADD NOTES BELOW \ No newline at end of file diff --git a/actortypes/A012.md b/actortypes/A012.md new file mode 100644 index 0000000..1b2f33e --- /dev/null +++ b/actortypes/A012.md @@ -0,0 +1,15 @@ +# Actor A012: account owner + +* **Summary:** Anyone who owns an account online + +* **Sector:** General Public + +* **Viewpoint:** both + + +| Counters | Response types | +| -------- | -------------- | +| [C00053 Delete old accounts / Remove unused social media accounts](../counters/C00053.md) | D4 Degrade | + + +DO NOT EDIT ABOVE THIS LINE - PLEASE ADD NOTES BELOW \ No newline at end of file diff --git a/actortypes/A013.md b/actortypes/A013.md new file mode 100644 index 0000000..08828d9 --- /dev/null +++ b/actortypes/A013.md @@ -0,0 +1,15 @@ +# Actor A013: content creator + +* **Summary:** + +* **Sector:** General Public + +* **Viewpoint:** both + + +| Counters | Response types | +| -------- | -------------- | +| [C00111 Reduce polarisation by connecting and presenting sympathetic renditions of opposite views](../counters/C00111.md) | D4 Degrade | + + +DO NOT EDIT ABOVE THIS LINE - PLEASE ADD NOTES BELOW \ No newline at end of file diff --git a/actortypes/A014.md b/actortypes/A014.md new file mode 100644 index 0000000..c775ea9 --- /dev/null +++ b/actortypes/A014.md @@ -0,0 +1,15 @@ +# Actor A014: elves + +* **Summary:** + +* **Sector:** General Public + +* **Viewpoint:** blue + + +| Counters | Response types | +| -------- | -------------- | +| [C00143 (botnet) DMCA takedown requests to waste group time](../counters/C00143.md) | D4 Degrade | + + +DO NOT EDIT ABOVE THIS LINE - PLEASE ADD NOTES BELOW \ No newline at end of file diff --git a/actortypes/A015.md b/actortypes/A015.md new file mode 100644 index 0000000..354fe0f --- /dev/null +++ b/actortypes/A015.md @@ -0,0 +1,18 @@ +# Actor A015: general public + +* **Summary:** + +* **Sector:** General Public + +* **Viewpoint:** blue + + +| Counters | Response types | +| -------- | -------------- | +| [C00114 Don't engage with payloads](../counters/C00114.md) | D2 Deny | +| [C00124 Don't feed the trolls](../counters/C00124.md) | D3 Disrupt | +| [C00143 (botnet) DMCA takedown requests to waste group time](../counters/C00143.md) | D4 Degrade | +| [C00190 open engagement with civil society](../counters/C00190.md) | D3 Disrupt | + + +DO NOT EDIT ABOVE THIS LINE - PLEASE ADD NOTES BELOW \ No newline at end of file diff --git a/actortypes/A016.md b/actortypes/A016.md new file mode 100644 index 0000000..7b995a1 --- /dev/null +++ b/actortypes/A016.md @@ -0,0 +1,17 @@ +# Actor A016: influencer + +* **Summary:** + +* **Sector:** General Public + +* **Viewpoint:** both + + +| Counters | Response types | +| -------- | -------------- | +| [C00009 Educate high profile influencers on best practices](../counters/C00009.md) | D2 Deny | +| [C00160 find and train influencers](../counters/C00160.md) | D2 Deny | +| [C00200 Respected figure (influencer) disavows misinfo](../counters/C00200.md) | D3 Disrupt | + + +DO NOT EDIT ABOVE THIS LINE - PLEASE ADD NOTES BELOW \ No newline at end of file diff --git a/actortypes/A017.md b/actortypes/A017.md new file mode 100644 index 0000000..5e3fe25 --- /dev/null +++ b/actortypes/A017.md @@ -0,0 +1,15 @@ +# Actor A017: coordinating body + +* **Summary:** For example the DHS + +* **Sector:** Government + +* **Viewpoint:** blue + + +| Counters | Response types | +| -------- | -------------- | +| [C00073 Inoculate populations through media literacy training](../counters/C00073.md) | D2 Deny | + + +DO NOT EDIT ABOVE THIS LINE - PLEASE ADD NOTES BELOW \ No newline at end of file diff --git a/actortypes/A018.md b/actortypes/A018.md new file mode 100644 index 0000000..0f4c612 --- /dev/null +++ b/actortypes/A018.md @@ -0,0 +1,20 @@ +# Actor A018: government + +* **Summary:** Government agencies + +* **Sector:** Government + +* **Viewpoint:** both + + +| Counters | Response types | +| -------- | -------------- | +| [C00012 Platform regulation](../counters/C00012.md) | D2 Deny | +| [C00156 Better tell your country or organization story](../counters/C00156.md) | D3 Disrupt | +| [C00203 Stop offering press credentials to propaganda outlets](../counters/C00203.md) | D3 Disrupt | +| [C00205 strong dialogue between the federal government and private sector to encourage better reporting](../counters/C00205.md) | D3 Disrupt | +| [C00207 Run a competing disinformation campaign - not recommended](../counters/C00207.md) | D7 Deter | +| [C00212 build public resilience by making civil society more vibrant](../counters/C00212.md) | D3 Disrupt | + + +DO NOT EDIT ABOVE THIS LINE - PLEASE ADD NOTES BELOW \ No newline at end of file diff --git a/actortypes/A019.md b/actortypes/A019.md new file mode 100644 index 0000000..8618295 --- /dev/null +++ b/actortypes/A019.md @@ -0,0 +1,15 @@ +# Actor A019: military + +* **Summary:** + +* **Sector:** Government + +* **Viewpoint:** blue + + +| Counters | Response types | +| -------- | -------------- | +| [C00156 Better tell your country or organization story](../counters/C00156.md) | D3 Disrupt | + + +DO NOT EDIT ABOVE THIS LINE - PLEASE ADD NOTES BELOW \ No newline at end of file diff --git a/actortypes/A020.md b/actortypes/A020.md new file mode 100644 index 0000000..7954d8c --- /dev/null +++ b/actortypes/A020.md @@ -0,0 +1,18 @@ +# Actor A020: policy maker + +* **Summary:** + +* **Sector:** Government + +* **Viewpoint:** blue + + +| Counters | Response types | +| -------- | -------------- | +| [C00010 Enhanced privacy regulation for social media](../counters/C00010.md) | D2 Deny | +| [C00012 Platform regulation](../counters/C00012.md) | D2 Deny | +| [C00060 Legal action against for-profit engagement factories](../counters/C00060.md) | D3 Disrupt | +| [C00065 Reduce political targeting](../counters/C00065.md) | D3 Disrupt | + + +DO NOT EDIT ABOVE THIS LINE - PLEASE ADD NOTES BELOW \ No newline at end of file diff --git a/actortypes/A021.md b/actortypes/A021.md new file mode 100644 index 0000000..ee85a54 --- /dev/null +++ b/actortypes/A021.md @@ -0,0 +1,21 @@ +# Actor A021: media organisation + +* **Summary:** + +* **Sector:** Media + +* **Viewpoint:** both + + +| Counters | Response types | +| -------- | -------------- | +| [C00017 Repair broken social connections](../counters/C00017.md) | D3 Disrupt | +| [C00073 Inoculate populations through media literacy training](../counters/C00073.md) | D2 Deny | +| [C00111 Reduce polarisation by connecting and presenting sympathetic renditions of opposite views](../counters/C00111.md) | D4 Degrade | +| [C00124 Don't feed the trolls](../counters/C00124.md) | D3 Disrupt | +| [C00154 Ask media not to report false information](../counters/C00154.md) | D2 Deny | +| [C00174 Create a healthier news environment](../counters/C00174.md) | D2 Deny | +| [C00188 Newsroom/Journalist training to counter influence moves](../counters/C00188.md) | D3 Disrupt | + + +DO NOT EDIT ABOVE THIS LINE - PLEASE ADD NOTES BELOW \ No newline at end of file diff --git a/actortypes/A022.md b/actortypes/A022.md new file mode 100644 index 0000000..e661eb1 --- /dev/null +++ b/actortypes/A022.md @@ -0,0 +1,14 @@ +# Actor A022: company + +* **Summary:** + +* **Sector:** Other Company + +* **Viewpoint:** blue + + +| Counters | Response types | +| -------- | -------------- | + + +DO NOT EDIT ABOVE THIS LINE - PLEASE ADD NOTES BELOW \ No newline at end of file diff --git a/actortypes/A023.md b/actortypes/A023.md new file mode 100644 index 0000000..2f1ba24 --- /dev/null +++ b/actortypes/A023.md @@ -0,0 +1,16 @@ +# Actor A023: adtech provider + +* **Summary:** + +* **Sector:** Other Tech Company + +* **Viewpoint:** blue + + +| Counters | Response types | +| -------- | -------------- | +| [C00105 Buy more advertising than misinformation creators](../counters/C00105.md) | D3 Disrupt | +| [C00216 Use advertiser controls to stem flow of funds to bad actors](../counters/C00216.md) | D2 Deny | + + +DO NOT EDIT ABOVE THIS LINE - PLEASE ADD NOTES BELOW \ No newline at end of file diff --git a/actortypes/A024.md b/actortypes/A024.md new file mode 100644 index 0000000..fa4f33e --- /dev/null +++ b/actortypes/A024.md @@ -0,0 +1,16 @@ +# Actor A024: developer + +* **Summary:** + +* **Sector:** Other Tech Company + +* **Viewpoint:** blue + + +| Counters | Response types | +| -------- | -------------- | +| [C00011 Media literacy. Games to identify fake news](../counters/C00011.md) | D2 Deny | +| [C00103 Create a bot that engages / distract trolls](../counters/C00103.md) | D5 Deceive | + + +DO NOT EDIT ABOVE THIS LINE - PLEASE ADD NOTES BELOW \ No newline at end of file diff --git a/actortypes/A025.md b/actortypes/A025.md new file mode 100644 index 0000000..164ef8f --- /dev/null +++ b/actortypes/A025.md @@ -0,0 +1,15 @@ +# Actor A025: funding_site_admin + +* **Summary:** Funding site admin + +* **Sector:** Other Tech Company + +* **Viewpoint:** blue + + +| Counters | Response types | +| -------- | -------------- | +| [C00155 Ban incident actors from funding sites](../counters/C00155.md) | D2 Deny | + + +DO NOT EDIT ABOVE THIS LINE - PLEASE ADD NOTES BELOW \ No newline at end of file diff --git a/actortypes/A026.md b/actortypes/A026.md new file mode 100644 index 0000000..a1a3438 --- /dev/null +++ b/actortypes/A026.md @@ -0,0 +1,15 @@ +# Actor A026: games designer + +* **Summary:** + +* **Sector:** Other Tech Company + +* **Viewpoint:** both + + +| Counters | Response types | +| -------- | -------------- | +| [C00011 Media literacy. Games to identify fake news](../counters/C00011.md) | D2 Deny | + + +DO NOT EDIT ABOVE THIS LINE - PLEASE ADD NOTES BELOW \ No newline at end of file diff --git a/actortypes/A027.md b/actortypes/A027.md new file mode 100644 index 0000000..f50a2b8 --- /dev/null +++ b/actortypes/A027.md @@ -0,0 +1,16 @@ +# Actor A027: information security + +* **Summary:** + +* **Sector:** Other Tech Company + +* **Viewpoint:** blue + + +| Counters | Response types | +| -------- | -------------- | +| [C00153 Take pre-emptive action against actors' infrastructure](../counters/C00153.md) | D3 Disrupt | +| [C00182 Redirection / malware detection/ remediation](../counters/C00182.md) | D2 Deny | + + +DO NOT EDIT ABOVE THIS LINE - PLEASE ADD NOTES BELOW \ No newline at end of file diff --git a/actortypes/A028.md b/actortypes/A028.md new file mode 100644 index 0000000..68a5032 --- /dev/null +++ b/actortypes/A028.md @@ -0,0 +1,16 @@ +# Actor A028: platform administrator + +* **Summary:** + +* **Sector:** Other Tech Company + +* **Viewpoint:** blue + + +| Counters | Response types | +| -------- | -------------- | +| [C00053 Delete old accounts / Remove unused social media accounts](../counters/C00053.md) | D4 Degrade | +| [C00074 Identify and delete or rate limit identical content](../counters/C00074.md) | D2 Deny | + + +DO NOT EDIT ABOVE THIS LINE - PLEASE ADD NOTES BELOW \ No newline at end of file diff --git a/actortypes/A029.md b/actortypes/A029.md new file mode 100644 index 0000000..edf59fa --- /dev/null +++ b/actortypes/A029.md @@ -0,0 +1,15 @@ +# Actor A029: server admininistrator + +* **Summary:** + +* **Sector:** Other Tech Company + +* **Viewpoint:** blue + + +| Counters | Response types | +| -------- | -------------- | +| [C00131 Seize and analyse botnet servers](../counters/C00131.md) | D2 Deny | + + +DO NOT EDIT ABOVE THIS LINE - PLEASE ADD NOTES BELOW \ No newline at end of file diff --git a/actortypes/A030.md b/actortypes/A030.md new file mode 100644 index 0000000..1506171 --- /dev/null +++ b/actortypes/A030.md @@ -0,0 +1,14 @@ +# Actor A030: platforms + +* **Summary:** + +* **Sector:** Social Media Company + +* **Viewpoint:** blue + + +| Counters | Response types | +| -------- | -------------- | + + +DO NOT EDIT ABOVE THIS LINE - PLEASE ADD NOTES BELOW \ No newline at end of file diff --git a/actortypes/A031.md b/actortypes/A031.md new file mode 100644 index 0000000..4c56194 --- /dev/null +++ b/actortypes/A031.md @@ -0,0 +1,32 @@ +# Actor A031: social media platform adminstrator + +* **Summary:** Person with the authority to make changes to algorithms, take down content etc. + +* **Sector:** Social Media Company + +* **Viewpoint:** blue + + +| Counters | Response types | +| -------- | -------------- | +| [C00006 Charge for social media](../counters/C00006.md) | D2 Deny | +| [C00006 Censorship](../counters/C00006.md) | D2 Deny | +| [C00044 Keep people from posting to social media immediately](../counters/C00044.md) | D3 Disrupt | +| [C00053 Delete old accounts / Remove unused social media accounts](../counters/C00053.md) | D4 Degrade | +| [C00074 Identify and delete or rate limit identical content](../counters/C00074.md) | D2 Deny | +| [C00097 Require use of verified identities to contribute to poll or comment](../counters/C00097.md) | D2 Deny | +| [C00098 Revocation of allowlisted or "verified" status](../counters/C00098.md) | D2 Deny | +| [C00099 Strengthen verification methods](../counters/C00099.md) | D2 Deny | +| [C00101 Create friction by rate-limiting engagement](../counters/C00101.md) | D4 Degrade | +| [C00107 Content moderation](../counters/C00107.md) | D2 Deny | +| [C00122 Content moderation](../counters/C00122.md) | D2 Deny | +| [C00133 Deplatform Account*](../counters/C00133.md) | D3 Disrupt | +| [C00135 Deplatform message groups and/or message boards](../counters/C00135.md) | D3 Disrupt | +| [C00142 Platform adds warning label and decision point when sharing content](../counters/C00142.md) | D4 Degrade | +| [C00147 Make amplification of social media posts expire (e.g. can't like/ retweet after n days)](../counters/C00147.md) | D3 Disrupt | +| [C00148 Add random links to network graphs](../counters/C00148.md) | D4 Degrade | +| [C00172 social media source removal](../counters/C00172.md) | D2 Deny | +| [C00197 remove suspicious accounts](../counters/C00197.md) | D2 Deny | + + +DO NOT EDIT ABOVE THIS LINE - PLEASE ADD NOTES BELOW \ No newline at end of file diff --git a/actortypes/A032.md b/actortypes/A032.md new file mode 100644 index 0000000..ecafbc3 --- /dev/null +++ b/actortypes/A032.md @@ -0,0 +1,15 @@ +# Actor A032: social media platform outreach + +* **Summary:** + +* **Sector:** Social Media Company + +* **Viewpoint:** blue + + +| Counters | Response types | +| -------- | -------------- | +| [C00073 Inoculate populations through media literacy training](../counters/C00073.md) | D2 Deny | + + +DO NOT EDIT ABOVE THIS LINE - PLEASE ADD NOTES BELOW \ No newline at end of file diff --git a/actortypes/A033.md b/actortypes/A033.md new file mode 100644 index 0000000..fa5d782 --- /dev/null +++ b/actortypes/A033.md @@ -0,0 +1,19 @@ +# Actor A033: social media platform owner + +* **Summary:** Person with authority to make changes to a social media company’s business model + +* **Sector:** Social Media Company + +* **Viewpoint:** blue + + +| Counters | Response types | +| -------- | -------------- | +| [C00006 Charge for social media](../counters/C00006.md) | D2 Deny | +| [C00006 Censorship](../counters/C00006.md) | D2 Deny | +| [C00012 Platform regulation](../counters/C00012.md) | D2 Deny | +| [C00205 strong dialogue between the federal government and private sector to encourage better reporting](../counters/C00205.md) | D3 Disrupt | +| [C00207 Run a competing disinformation campaign - not recommended](../counters/C00207.md) | D7 Deter | + + +DO NOT EDIT ABOVE THIS LINE - PLEASE ADD NOTES BELOW \ No newline at end of file diff --git a/actortypes_index.md b/actortypes_index.md new file mode 100644 index 0000000..132b606 --- /dev/null +++ b/actortypes_index.md @@ -0,0 +1,208 @@ +# AMITT Actortypes: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
amitt_idnamesummarysector
A001data scientist Person who can wrangle data, implement machine learning algorithms etcAll
A002targetPerson being targeted by disinformation campaignAll
A003trusted authority InfluencerAll
A004activistCivil Society
A005community groupCivil Society
A006educatorCivil Society
A007factcheckerSomeone with the skills to verify whether information posted is factualCivil Society
A008libraryCivil Society
A009NGOCivil Society
A010religious organisation Civil Society
A011school Civil Society
A012account ownerAnyone who owns an account onlineGeneral Public
A013content creator General Public
A014elvesGeneral Public
A015general publicGeneral Public
A016influencerGeneral Public
A017coordinating bodyFor example the DHSGovernment
A018government Government agenciesGovernment
A019military Government
A020policy makerGovernment
A021media organisationMedia
A022companyOther Company
A023adtech providerOther Tech Company
A024developerOther Tech Company
A025funding_site_adminFunding site adminOther Tech Company
A026games designerOther Tech Company
A027information securityOther Tech Company
A028platform administratorOther Tech Company
A029server admininistrator Other Tech Company
A030platforms Social Media Company
A031social media platform adminstratorPerson with the authority to make changes to algorithms, take down content etc. Social Media Company
A032social media platform outreach Social Media Company
A033social media platform ownerPerson with authority to make changes to a social media company’s business modelSocial Media Company
diff --git a/amitt_blue_framework.md b/amitt_blue_framework.md index 80301d0..372cc87 100644 --- a/amitt_blue_framework.md +++ b/amitt_blue_framework.md @@ -52,7 +52,7 @@ C00130 Mentorship: elders, youth, credit. Learn vicariously. C00071 Block source of pollution C00098 Revocation of allowlisted or "verified" status -C00113 Debunk and defuse a fake expert / credentials. Attack audience quality of fake expert +C00113 Debunk and defuse a fake expert / credentials. C00123 Remove or rate limit botnets C00139 Weaponise youtube content matrices @@ -107,7 +107,7 @@ C00135 Deplatform message groups and/or message boards C00076 Prohibit images in political discourse channels -C00105 Buy more advertising than the adversary to shift influence and algorithms +C00105 Buy more advertising than misinformation creators C00117 Downgrade / de-amplify so message is seen by fewer people C00128 Create friction by marking content with ridicule or other "decelerants" @@ -136,8 +136,8 @@ C00080 Create competing narrative -C00119 Engage payload and debunk. Provide link to facts. -C00147 Make amplification of social media ports expire (e.g. can't like/ retweet after n days) +C00119 Engage payload and debunk. +C00147 Make amplification of social media posts expire (e.g. can't like/ retweet after n days) diff --git a/amitt_blue_framework_clickable.html b/amitt_blue_framework_clickable.html index 2fd4a06..fc01736 100644 --- a/amitt_blue_framework_clickable.html +++ b/amitt_blue_framework_clickable.html @@ -87,7 +87,7 @@ function handleTechniqueClick(box) { C00130 Mentorship: elders, youth, credit. Learn vicariously. C00071 Block source of pollution C00098 Revocation of allowlisted or "verified" status -C00113 Debunk and defuse a fake expert / credentials. Attack audience quality of fake expert +C00113 Debunk and defuse a fake expert / credentials. C00123 Remove or rate limit botnets C00139 Weaponise youtube content matrices @@ -142,7 +142,7 @@ function handleTechniqueClick(box) { C00135 Deplatform message groups and/or message boards C00076 Prohibit images in political discourse channels -C00105 Buy more advertising than the adversary to shift influence and algorithms +C00105 Buy more advertising than misinformation creators C00117 Downgrade / de-amplify so message is seen by fewer people C00128 Create friction by marking content with ridicule or other "decelerants" @@ -171,8 +171,8 @@ function handleTechniqueClick(box) { C00080 Create competing narrative -C00119 Engage payload and debunk. Provide link to facts. -C00147 Make amplification of social media ports expire (e.g. can't like/ retweet after n days) +C00119 Engage payload and debunk. +C00147 Make amplification of social media posts expire (e.g. can't like/ retweet after n days) @@ -477,7 +477,7 @@ function handleTechniqueClick(box) { - + @@ -513,7 +513,7 @@ function handleTechniqueClick(box) { - + @@ -529,8 +529,8 @@ function handleTechniqueClick(box) { - - + + diff --git a/counters/C00006.md b/counters/C00006.md index 325943f..5481794 100644 --- a/counters/C00006.md +++ b/counters/C00006.md @@ -1,6 +1,6 @@ # Counter C00006: Censorship -* **Summary**: Alter and/or block the publication/dissemination of adversary controlled information +* **Summary**: Alter and/or block the publication/dissemination of information controlled by disinformation creators. Not recommended. * **Playbooks**: @@ -11,10 +11,10 @@ * **Belongs to tactic stage**: TA01 -| Actors | Sectors | -| ------ | ------- | -| [A031 social media platform adminstrator](../actors/A031.md) | Social Media Company | -| [A033 social media platform owner](../actors/A033.md) | Social Media Company | +| Actor types | Sectors | +| ----------- | ------- | +| [A031 social media platform adminstrator](../actortypes/A031.md) | Social Media Company | +| [A033 social media platform owner](../actortypes/A033.md) | Social Media Company | diff --git a/counters/C00008.md b/counters/C00008.md index fabacbe..1f8c4e6 100644 --- a/counters/C00008.md +++ b/counters/C00008.md @@ -1,6 +1,6 @@ # Counter C00008: Create shared fact-checking database -* **Summary**: Snopes is best-known example +* **Summary**: Share fact-checking resources - tips, responses, countermessages, across respose groups. Snopes is best-known example of fact-checking sites. * **Playbooks**: @@ -11,9 +11,9 @@ * **Belongs to tactic stage**: TA01 -| Actors | Sectors | -| ------ | ------- | -| [A007 factchecker](../actors/A007.md) | Civil Society | +| Actor types | Sectors | +| ----------- | ------- | +| [A007 factchecker](../actortypes/A007.md) | Civil Society | diff --git a/counters/C00009.md b/counters/C00009.md index f6204be..e638bad 100644 --- a/counters/C00009.md +++ b/counters/C00009.md @@ -1,6 +1,6 @@ # Counter C00009: Educate high profile influencers on best practices -* **Summary**: +* **Summary**: Find online influencers. Provide training in the mechanisms of disinformation, how to spot campaigns, and/or how to contribute to responses by countermessaging, boosting information sites etc. * **Playbooks**: @@ -11,10 +11,10 @@ * **Belongs to tactic stage**: TA02 -| Actors | Sectors | -| ------ | ------- | -| [A006 educator](../actors/A006.md) | Civil Society | -| [A016 influencer](../actors/A016.md) | General Public | +| Actor types | Sectors | +| ----------- | ------- | +| [A006 educator](../actortypes/A006.md) | Civil Society | +| [A016 influencer](../actortypes/A016.md) | General Public | diff --git a/counters/C00010.md b/counters/C00010.md index 50f694b..6eb5cca 100644 --- a/counters/C00010.md +++ b/counters/C00010.md @@ -1,6 +1,6 @@ # Counter C00010: Enhanced privacy regulation for social media -* **Summary**: Privacy standards +* **Summary**: Implement stronger privacy standards, to reduce the ability to microtarget community members. * **Playbooks**: @@ -11,9 +11,9 @@ * **Belongs to tactic stage**: TA01 -| Actors | Sectors | -| ------ | ------- | -| [A020 policy maker](../actors/A020.md) | Government | +| Actor types | Sectors | +| ----------- | ------- | +| [A020 policy maker](../actortypes/A020.md) | Government | diff --git a/counters/C00011.md b/counters/C00011.md index dfe9f0d..52ccc4f 100644 --- a/counters/C00011.md +++ b/counters/C00011.md @@ -1,10 +1,8 @@ # Counter C00011: Media literacy. Games to identify fake news -* **Summary**: +* **Summary**: Create and use games to show people the mechanics of disinformation, and how to counter them. -* **Playbooks**: Game Mechanics: --Show examples of fake news and train the user to identify them on the basis of various types of indicators --Use a crowd-sourced mechanism so that the public can categorize newly spreading news sources or articles ala Re-Captcha +* **Playbooks**: * **Metatechnique**: M001 - resilience @@ -13,11 +11,11 @@ * **Belongs to tactic stage**: TA02 -| Actors | Sectors | -| ------ | ------- | -| [A006 educator](../actors/A006.md) | Civil Society | -| [A024 developer](../actors/A024.md) | Other Tech Company | -| [A026 games designer](../actors/A026.md) | Other Tech Company | +| Actor types | Sectors | +| ----------- | ------- | +| [A006 educator](../actortypes/A006.md) | Civil Society | +| [A024 developer](../actortypes/A024.md) | Other Tech Company | +| [A026 games designer](../actortypes/A026.md) | Other Tech Company | diff --git a/counters/C00012.md b/counters/C00012.md index a59f6d3..14db893 100644 --- a/counters/C00012.md +++ b/counters/C00012.md @@ -2,7 +2,7 @@ * **Summary**: Empower existing regulators to govern social media. Also covers Destroy. Includes: Include the role of social media in the regulatory framework for media - The European Union created significant new regulations in 2018; the U.S. approach will need to be carefully crafted to protect First Amendment principles, create needed transparency, ensure liability, and impose costs for noncompliance. Includes Create policy that makes social media police disinformation - example: German model: facebook forced to police content by law. Includes: Use fraud legislation to clean up social media -* **Playbooks**: P0001: Develop a regulatory body like the CFPB to regulate and enforce regulation for digital organizations. P0002: Government regulation. Government shutdown. +* **Playbooks**: * **Metatechnique**: M007 - metatechnique @@ -11,11 +11,11 @@ * **Belongs to tactic stage**: TA01 -| Actors | Sectors | -| ------ | ------- | -| [A018 government ](../actors/A018.md) | Government | -| [A020 policy maker](../actors/A020.md) | Government | -| [A033 social media platform owner](../actors/A033.md) | Social Media Company | +| Actor types | Sectors | +| ----------- | ------- | +| [A018 government ](../actortypes/A018.md) | Government | +| [A020 policy maker](../actortypes/A020.md) | Government | +| [A033 social media platform owner](../actortypes/A033.md) | Social Media Company | diff --git a/counters/C00013.md b/counters/C00013.md index 46c80d4..17e0455 100644 --- a/counters/C00013.md +++ b/counters/C00013.md @@ -11,8 +11,8 @@ * **Belongs to tactic stage**: TA01 -| Actors | Sectors | -| ------ | ------- | +| Actor types | Sectors | +| ----------- | ------- | diff --git a/counters/C00014.md b/counters/C00014.md index 5a4eedc..388f526 100644 --- a/counters/C00014.md +++ b/counters/C00014.md @@ -1,6 +1,6 @@ # Counter C00014: Real-time updates to fact-checking database -* **Summary**: existing examples at Buzzfeed and Fema, especially during disasters +* **Summary**: Update fact-checking databases and resources in real time. Especially import for time-limited events like natural disasters. Existing examples at Buzzfeed and Fema. * **Playbooks**: @@ -11,9 +11,9 @@ * **Belongs to tactic stage**: TA06 -| Actors | Sectors | -| ------ | ------- | -| [A007 factchecker](../actors/A007.md) | Civil Society | +| Actor types | Sectors | +| ----------- | ------- | +| [A007 factchecker](../actortypes/A007.md) | Civil Society | diff --git a/counters/C00017.md b/counters/C00017.md index d69ef8a..2b20775 100644 --- a/counters/C00017.md +++ b/counters/C00017.md @@ -1,6 +1,6 @@ # Counter C00017: Repair broken social connections -* **Summary**: For example, use a media campaign to promote in-group to out-group in person communication / activities . Technique could be in terms of forcing a reality-check by talking to people instead of reading about bogeymen. +* **Summary**: Technique could be in terms of forcing a reality-check by talking to people instead of reading about bogeymen. * **Playbooks**: @@ -11,9 +11,9 @@ * **Belongs to tactic stage**: TA01 -| Actors | Sectors | -| ------ | ------- | -| [A021 media organisation](../actors/A021.md) | Media | +| Actor types | Sectors | +| ----------- | ------- | +| [A021 media organisation](../actortypes/A021.md) | Media | diff --git a/counters/C00019.md b/counters/C00019.md index 66884f8..289d460 100644 --- a/counters/C00019.md +++ b/counters/C00019.md @@ -2,12 +2,7 @@ * **Summary**: includes Promote constructive communication by shaming division-enablers, and Promote playbooks to call out division-enablers -* **Playbooks**: Spread Infographics & Training Material teaching ways to identify and counter divisive rhetorical techniques and content, by stimulating their sense of outrage at being manipulated. Show them how to address the rhetorical technique rather than the content - --Twitter hashtags & paid advertising --Teach people to identify non-civil/unconstructive conversations and call them out --Popularize (via memes, infographics) and get the centrists demographic who are tired of polarization to identify such messaging, call it out and display their outrage on the basis of divisive rhetorical techniques rather than merely arguing about the content - +* **Playbooks**: * **Metatechnique**: M003 - daylight @@ -16,8 +11,8 @@ * **Belongs to tactic stage**: TA01 -| Actors | Sectors | -| ------ | ------- | +| Actor types | Sectors | +| ----------- | ------- | diff --git a/counters/C00021.md b/counters/C00021.md index c3d5a6b..7c9284b 100644 --- a/counters/C00021.md +++ b/counters/C00021.md @@ -1,6 +1,6 @@ # Counter C00021: Encourage in-person communication -* **Summary**: +* **Summary**: Encourage offline communication * **Playbooks**: @@ -11,8 +11,8 @@ * **Belongs to tactic stage**: TA01 -| Actors | Sectors | -| ------ | ------- | +| Actor types | Sectors | +| ----------- | ------- | diff --git a/counters/C00022.md b/counters/C00022.md index a688a5a..866fec5 100644 --- a/counters/C00022.md +++ b/counters/C00022.md @@ -11,8 +11,8 @@ * **Belongs to tactic stage**: TA01 -| Actors | Sectors | -| ------ | ------- | +| Actor types | Sectors | +| ----------- | ------- | diff --git a/counters/C00024.md b/counters/C00024.md index b7e7583..6280232 100644 --- a/counters/C00024.md +++ b/counters/C00024.md @@ -11,8 +11,8 @@ * **Belongs to tactic stage**: TA01 -| Actors | Sectors | -| ------ | ------- | +| Actor types | Sectors | +| ----------- | ------- | diff --git a/counters/C00026.md b/counters/C00026.md index 98912f5..df8c2e2 100644 --- a/counters/C00026.md +++ b/counters/C00026.md @@ -11,8 +11,8 @@ * **Belongs to tactic stage**: TA01 -| Actors | Sectors | -| ------ | ------- | +| Actor types | Sectors | +| ----------- | ------- | diff --git a/counters/C00027.md b/counters/C00027.md index 9459897..61799fd 100644 --- a/counters/C00027.md +++ b/counters/C00027.md @@ -2,10 +2,7 @@ * **Summary**: This is passive. Includes promoting civility as an identity that people will defend. -* **Playbooks**: Playbook 1: Recruit respected thought leaders to model behavior -Playbook 2: Feature established respected thought leaders to model behavior -Playbook 3: Promote dialog from communities with disparate viewpoints -Playbook 4: Establish facilitation guidelines for "civil" interaction. +* **Playbooks**: * **Metatechnique**: M001 - resilience @@ -14,8 +11,8 @@ Playbook 4: Establish facilitation guidelines for "civil" interaction. * **Belongs to tactic stage**: TA01 -| Actors | Sectors | -| ------ | ------- | +| Actor types | Sectors | +| ----------- | ------- | diff --git a/counters/C00028.md b/counters/C00028.md index 06a6f5b..8bcd1c2 100644 --- a/counters/C00028.md +++ b/counters/C00028.md @@ -13,8 +13,8 @@ This could be used to adjust upvote weight via a trust factor of people and orga * **Belongs to tactic stage**: TA02 -| Actors | Sectors | -| ------ | ------- | +| Actor types | Sectors | +| ----------- | ------- | diff --git a/counters/C00029.md b/counters/C00029.md index c823c87..0863465 100644 --- a/counters/C00029.md +++ b/counters/C00029.md @@ -1,12 +1,8 @@ # Counter C00029: Create fake website to issue counter narrative and counter narrative through physical merchandise -* **Summary**: +* **Summary**: Create websites in disinformation voids - spaces where people are looking for known disinformation. -* **Playbooks**: -Identify ignorant agents (ex: anti-vaxx people willing to pay money to advertise their cause) --Sell physical merchandise that has instructive counter-effect - -Secondary Objective: --Obtain real-life identity of ignorant agents, to further disrupt their influence activities +* **Playbooks**: * **Metatechnique**: M002 - diversion @@ -15,8 +11,8 @@ Secondary Objective: * **Belongs to tactic stage**: TA02 -| Actors | Sectors | -| ------ | ------- | +| Actor types | Sectors | +| ----------- | ------- | diff --git a/counters/C00030.md b/counters/C00030.md index 8aa363d..1d77c25 100644 --- a/counters/C00030.md +++ b/counters/C00030.md @@ -12,8 +12,8 @@ https://www.isdglobal.org/wp-content/uploads/2016/06/Counter-narrative-Handbook_ * **Belongs to tactic stage**: TA02 -| Actors | Sectors | -| ------ | ------- | +| Actor types | Sectors | +| ----------- | ------- | diff --git a/counters/C00031.md b/counters/C00031.md index e6879bf..8beb678 100644 --- a/counters/C00031.md +++ b/counters/C00031.md @@ -2,8 +2,7 @@ * **Summary**: Create competing narratives. Included "Facilitate State Propaganda" as diluting the narrative could have an effect on the pro-state narrative used by volunteers, or lower their involvement. -* **Playbooks**: Playbook 1: Create multiple versions of the narrative and amplify. -Playbook 2: Dissect narrative, piecemeal the components and then amplify +* **Playbooks**: * **Metatechnique**: M009 - dilution @@ -12,8 +11,8 @@ Playbook 2: Dissect narrative, piecemeal the components and then amplify * **Belongs to tactic stage**: TA02 -| Actors | Sectors | -| ------ | ------- | +| Actor types | Sectors | +| ----------- | ------- | diff --git a/counters/C00032.md b/counters/C00032.md index 42fe4cc..99c05ab 100644 --- a/counters/C00032.md +++ b/counters/C00032.md @@ -2,8 +2,7 @@ * **Summary**: Link to platform -* **Playbooks**: Playbook 1: Hijack hashtag and redirect conversation to truth based content. -Playbook 2: Hijack (man in the middle) redirect from bad content to good content +* **Playbooks**: * **Metatechnique**: M002 - diversion @@ -12,8 +11,8 @@ Playbook 2: Hijack (man in the middle) redirect from bad content to good content * **Belongs to tactic stage**: TA06 -| Actors | Sectors | -| ------ | ------- | +| Actor types | Sectors | +| ----------- | ------- | diff --git a/counters/C00034.md b/counters/C00034.md index 4df9388..6405849 100644 --- a/counters/C00034.md +++ b/counters/C00034.md @@ -11,8 +11,8 @@ * **Belongs to tactic stage**: TA03 -| Actors | Sectors | -| ------ | ------- | +| Actor types | Sectors | +| ----------- | ------- | diff --git a/counters/C00036.md b/counters/C00036.md index 764a126..64cbf25 100644 --- a/counters/C00036.md +++ b/counters/C00036.md @@ -2,9 +2,7 @@ * **Summary**: All of these would be highly affected by infiltration or false-claims of infiltration. -* **Playbooks**: -Discredit via backstopped blogs/websites showing their past activity and opinions as being opposite to their current ingroup --Create a trail of commentary about their idea of infiltrating the enemy (current in-group) --Publicize this by targeting their in-group competitors (ignorant agents) +* **Playbooks**: * **Metatechnique**: M013 - targeting @@ -13,8 +11,8 @@ * **Belongs to tactic stage**: TA03 -| Actors | Sectors | -| ------ | ------- | +| Actor types | Sectors | +| ----------- | ------- | diff --git a/counters/C00040.md b/counters/C00040.md index 22ee96f..0e9877d 100644 --- a/counters/C00040.md +++ b/counters/C00040.md @@ -2,9 +2,7 @@ * **Summary**: counters fake experts -* **Playbooks**: - Verify personal credentials -- Syndicated reputation management (fact-checking syndication) -- Academia ISAO +* **Playbooks**: * **Metatechnique**: M011 - verification @@ -13,8 +11,8 @@ * **Belongs to tactic stage**: TA03 -| Actors | Sectors | -| ------ | ------- | +| Actor types | Sectors | +| ----------- | ------- | diff --git a/counters/C00042.md b/counters/C00042.md index 62359bd..a57880c 100644 --- a/counters/C00042.md +++ b/counters/C00042.md @@ -1,6 +1,6 @@ # Counter C00042: Address truth contained in narratives -* **Summary**: +* **Summary**: Focus on and boost truths in misinformation narratives, removing misinformation from them. * **Playbooks**: @@ -11,8 +11,8 @@ * **Belongs to tactic stage**: TA03 -| Actors | Sectors | -| ------ | ------- | +| Actor types | Sectors | +| ----------- | ------- | diff --git a/counters/C00044.md b/counters/C00044.md index 5bd9c4e..1445a90 100644 --- a/counters/C00044.md +++ b/counters/C00044.md @@ -1,9 +1,8 @@ # Counter C00044: Keep people from posting to social media immediately -* **Summary**: My interpretation is that this is method would be used to slow down activities or force a small delay between posts or replies to new posts. +* **Summary**: Use this to slow down activities or force a small delay between posts or replies to new posts. -* **Playbooks**: Rate restrict via regulation posting above a statistical threshold -Unless account is de-anonymized and advertised as automated messaging +* **Playbooks**: * **Metatechnique**: M004 - friction @@ -12,9 +11,9 @@ Unless account is de-anonymized and advertised as automated messaging * **Belongs to tactic stage**: TA03 -| Actors | Sectors | -| ------ | ------- | -| [A031 social media platform adminstrator](../actors/A031.md) | Social Media Company | +| Actor types | Sectors | +| ----------- | ------- | +| [A031 social media platform adminstrator](../actortypes/A031.md) | Social Media Company | diff --git a/counters/C00046.md b/counters/C00046.md index 9742579..1a562e7 100644 --- a/counters/C00046.md +++ b/counters/C00046.md @@ -1,6 +1,6 @@ # Counter C00046: Marginalise and discredit extremist groups -* **Summary**: +* **Summary**: Reduce the credibility of extremist groups posting misinformation. * **Playbooks**: @@ -11,8 +11,8 @@ * **Belongs to tactic stage**: TA03 -| Actors | Sectors | -| ------ | ------- | +| Actor types | Sectors | +| ----------- | ------- | diff --git a/counters/C00047.md b/counters/C00047.md index 3cc5d4c..89f97f4 100644 --- a/counters/C00047.md +++ b/counters/C00047.md @@ -1,6 +1,6 @@ # Counter C00047: Coordinated inauthentics -* **Summary**: +* **Summary**: Flood disinformation spaces with obviously fake content, to dilute core misinformation narratives in them. * **Playbooks**: @@ -11,8 +11,8 @@ * **Belongs to tactic stage**: TA04 -| Actors | Sectors | -| ------ | ------- | +| Actor types | Sectors | +| ----------- | ------- | diff --git a/counters/C00048.md b/counters/C00048.md index 807eac1..1f33fc9 100644 --- a/counters/C00048.md +++ b/counters/C00048.md @@ -2,7 +2,7 @@ * **Summary**: Think about the different levels: individual vs state-sponsored account. Includes “call them out” and “name and shame”. Note that USAID operations were at a different level. Identify social media accounts as sources of propaganda—“calling them out”— might be helpful to prevent the spread of their message to audiences that otherwise would consider them factual. USAID has been restructuring its programs to address predatory Chinese development projects and the information operations that support them. USAID’s new strategy has tailored programs to counter Chinese educational exchange programs and to support free and fair elections, youth empowerment, democratic governance, and free press. USAID’s Russia regional teams have also been compiling a strategy for Russia’s information operations. One strong point of USAID’s programming is a system of indicators and measurements for a country’s vulnerability to foreign influence and information operations. Identify, monitor, and, if necessary, target externally-based nonattributed social media accounts. Impact of and Dealing with Trolls - "Chatham House has observed that trolls also sometimes function as decoys, as a way of “keeping the infantry busy” that “aims to wear down the other side” (Lough et al., 2014). Another type of troll involves “false accounts posing as authoritative information sources on social media”. -* **Playbooks**: Identify the accounts, the real person's name and shame them on social media. +* **Playbooks**: * **Metatechnique**: M003 - daylight @@ -11,8 +11,8 @@ * **Belongs to tactic stage**: TA03 -| Actors | Sectors | -| ------ | ------- | +| Actor types | Sectors | +| ----------- | ------- | diff --git a/counters/C00051.md b/counters/C00051.md index d375cf3..4d18418 100644 --- a/counters/C00051.md +++ b/counters/C00051.md @@ -11,9 +11,9 @@ * **Belongs to tactic stage**: TA03 -| Actors | Sectors | -| ------ | ------- | -| [A006 educator](../actors/A006.md) | Civil Society | +| Actor types | Sectors | +| ----------- | ------- | +| [A006 educator](../actortypes/A006.md) | Civil Society | diff --git a/counters/C00052.md b/counters/C00052.md index 01fb56c..47204a6 100644 --- a/counters/C00052.md +++ b/counters/C00052.md @@ -11,9 +11,9 @@ * **Belongs to tactic stage**: TA04 -| Actors | Sectors | -| ------ | ------- | -| [A004 activist](../actors/A004.md) | Civil Society | +| Actor types | Sectors | +| ----------- | ------- | +| [A004 activist](../actortypes/A004.md) | Civil Society | diff --git a/counters/C00053.md b/counters/C00053.md index 598da7a..35b6b31 100644 --- a/counters/C00053.md +++ b/counters/C00053.md @@ -1,8 +1,8 @@ # Counter C00053: Delete old accounts / Remove unused social media accounts -* **Summary**: +* **Summary**: remove or remove access to (e.g. stop the ability to update) old social media accounts, to reduce the pool of accounts available for takeover, botnets etc. -* **Playbooks**: Social media companies remove inactive accounts. Account holders remove accounts they're no longer using. Influencers encourage people to remove their inactive accounts "Do you really need that old account" campaign, world-war-two poster-style. Create alternative memorial websites for accounts of deceased people, so their accounts can't be reactivated on 'live' sites. Educate/scare users on the risks of losing control over a dormant account (would their employer be forgiving if an account associated with the user suddenly starting posting extremist content?). +* **Playbooks**: * **Metatechnique**: M012 - cleaning @@ -11,11 +11,11 @@ * **Belongs to tactic stage**: TA04 -| Actors | Sectors | -| ------ | ------- | -| [A012 account owner](../actors/A012.md) | General Public | -| [A028 platform administrator](../actors/A028.md) | Other Tech Company | -| [A031 social media platform adminstrator](../actors/A031.md) | Social Media Company | +| Actor types | Sectors | +| ----------- | ------- | +| [A012 account owner](../actortypes/A012.md) | General Public | +| [A028 platform administrator](../actortypes/A028.md) | Other Tech Company | +| [A031 social media platform adminstrator](../actortypes/A031.md) | Social Media Company | diff --git a/counters/C00056.md b/counters/C00056.md index 485d727..afca63e 100644 --- a/counters/C00056.md +++ b/counters/C00056.md @@ -1,6 +1,6 @@ # Counter C00056: Get off social media -* **Summary**: We don't expect this to work +* **Summary**: Encourage people to leave spcial media. We don't expect this to work * **Playbooks**: @@ -11,8 +11,8 @@ * **Belongs to tactic stage**: TA04 -| Actors | Sectors | -| ------ | ------- | +| Actor types | Sectors | +| ----------- | ------- | diff --git a/counters/C00058.md b/counters/C00058.md index e297436..b5dd70b 100644 --- a/counters/C00058.md +++ b/counters/C00058.md @@ -11,8 +11,8 @@ * **Belongs to tactic stage**: TA03 -| Actors | Sectors | -| ------ | ------- | +| Actor types | Sectors | +| ----------- | ------- | diff --git a/counters/C00059.md b/counters/C00059.md index 543e0ca..319da37 100644 --- a/counters/C00059.md +++ b/counters/C00059.md @@ -1,6 +1,6 @@ # Counter C00059: Verification of project before posting (counters funding campaigns) -* **Summary**: +* **Summary**: third-party verification of projects posting funding campaigns before those campaigns can be posted. * **Playbooks**: @@ -11,8 +11,8 @@ * **Belongs to tactic stage**: TA04 -| Actors | Sectors | -| ------ | ------- | +| Actor types | Sectors | +| ----------- | ------- | diff --git a/counters/C00060.md b/counters/C00060.md index e5ee53f..7f3a715 100644 --- a/counters/C00060.md +++ b/counters/C00060.md @@ -1,6 +1,6 @@ # Counter C00060: Legal action against for-profit engagement factories -* **Summary**: +* **Summary**: Take legal action against for-profit "factories" creating misinformation. * **Playbooks**: @@ -11,9 +11,9 @@ * **Belongs to tactic stage**: TA02 -| Actors | Sectors | -| ------ | ------- | -| [A020 policy maker](../actors/A020.md) | Government | +| Actor types | Sectors | +| ----------- | ------- | +| [A020 policy maker](../actortypes/A020.md) | Government | diff --git a/counters/C00062.md b/counters/C00062.md index 31943b7..af72ad9 100644 --- a/counters/C00062.md +++ b/counters/C00062.md @@ -11,8 +11,8 @@ * **Belongs to tactic stage**: TA04 -| Actors | Sectors | -| ------ | ------- | +| Actor types | Sectors | +| ----------- | ------- | diff --git a/counters/C00065.md b/counters/C00065.md index da5a422..e837b23 100644 --- a/counters/C00065.md +++ b/counters/C00065.md @@ -11,9 +11,9 @@ * **Belongs to tactic stage**: TA05 -| Actors | Sectors | -| ------ | ------- | -| [A020 policy maker](../actors/A020.md) | Government | +| Actor types | Sectors | +| ----------- | ------- | +| [A020 policy maker](../actortypes/A020.md) | Government | diff --git a/counters/C00066.md b/counters/C00066.md index 781d199..a4da4f1 100644 --- a/counters/C00066.md +++ b/counters/C00066.md @@ -1,6 +1,6 @@ # Counter C00066: Co-opt a hashtag and drown it out (hijack it back) -* **Summary**: +* **Summary**: Flood a disinformation-related hashtag with other content. Examples include kPop stans flooding extremist hashtags with pop videos and images. * **Playbooks**: @@ -11,8 +11,8 @@ * **Belongs to tactic stage**: TA05 -| Actors | Sectors | -| ------ | ------- | +| Actor types | Sectors | +| ----------- | ------- | diff --git a/counters/C00067.md b/counters/C00067.md index ede2409..69bac1b 100644 --- a/counters/C00067.md +++ b/counters/C00067.md @@ -1,6 +1,6 @@ # Counter C00067: Denigrate the recipient/ project (of online funding) -* **Summary**: +* **Summary**: Reduce the credibility of groups behind misinformation-linked funding campaigns. * **Playbooks**: @@ -11,8 +11,8 @@ * **Belongs to tactic stage**: TA03 -| Actors | Sectors | -| ------ | ------- | +| Actor types | Sectors | +| ----------- | ------- | diff --git a/counters/C00070.md b/counters/C00070.md index 0ba87ac..5176d77 100644 --- a/counters/C00070.md +++ b/counters/C00070.md @@ -19,8 +19,8 @@ T0046 - Search Engine Optimization: Sub-optimal website performance affect its s * **Belongs to tactic stage**: TA02 -| Actors | Sectors | -| ------ | ------- | +| Actor types | Sectors | +| ----------- | ------- | diff --git a/counters/C00071.md b/counters/C00071.md index 71428b5..03b3f37 100644 --- a/counters/C00071.md +++ b/counters/C00071.md @@ -1,6 +1,6 @@ # Counter C00071: Block source of pollution -* **Summary**: +* **Summary**: Block websites, accounts, groups etc connected to misinformation and other information pollution. * **Playbooks**: @@ -11,8 +11,8 @@ * **Belongs to tactic stage**: TA06 -| Actors | Sectors | -| ------ | ------- | +| Actor types | Sectors | +| ----------- | ------- | diff --git a/counters/C00072.md b/counters/C00072.md index 8963af2..9b6ebbb 100644 --- a/counters/C00072.md +++ b/counters/C00072.md @@ -1,6 +1,6 @@ # Counter C00072: Remove non-relevant content from special interest groups – not recommended -* **Summary**: +* **Summary**: Check special-interest groups (e.g. medical, knitting) for unrelated and misinformation-linked content, and remove it. * **Playbooks**: @@ -11,8 +11,8 @@ * **Belongs to tactic stage**: TA06 -| Actors | Sectors | -| ------ | ------- | +| Actor types | Sectors | +| ----------- | ------- | diff --git a/counters/C00073.md b/counters/C00073.md index 40b93b3..2a6052d 100644 --- a/counters/C00073.md +++ b/counters/C00073.md @@ -11,16 +11,16 @@ * **Belongs to tactic stage**: TA01 -| Actors | Sectors | -| ------ | ------- | -| [A005 community group](../actors/A005.md) | Civil Society | -| [A006 educator](../actors/A006.md) | Civil Society | -| [A008 library](../actors/A008.md) | Civil Society | -| [A009 NGO](../actors/A009.md) | Civil Society | -| [A010 religious organisation ](../actors/A010.md) | Civil Society | -| [A017 coordinating body](../actors/A017.md) | Government | -| [A021 media organisation](../actors/A021.md) | Media | -| [A032 social media platform outreach ](../actors/A032.md) | Social Media Company | +| Actor types | Sectors | +| ----------- | ------- | +| [A005 community group](../actortypes/A005.md) | Civil Society | +| [A006 educator](../actortypes/A006.md) | Civil Society | +| [A008 library](../actortypes/A008.md) | Civil Society | +| [A009 NGO](../actortypes/A009.md) | Civil Society | +| [A010 religious organisation ](../actortypes/A010.md) | Civil Society | +| [A017 coordinating body](../actortypes/A017.md) | Government | +| [A021 media organisation](../actortypes/A021.md) | Media | +| [A032 social media platform outreach ](../actortypes/A032.md) | Social Media Company | diff --git a/counters/C00074.md b/counters/C00074.md index 47b631c..0f7b342 100644 --- a/counters/C00074.md +++ b/counters/C00074.md @@ -1,14 +1,9 @@ # Counter C00074: Identify and delete or rate limit identical content -* **Summary**: +* **Summary**: Search for repeated content (text, images, videos etc); check for misinformation, rate-limit or delete repeats. -* **Playbooks**: In all cases some checks need to prevent deplatforming of highly correlated organic traffic such as a community group copy/pasting their bake sale advert. -Playbook 1: Platform adds a hash of the post to the post metadata and make it publicly available (content addressing). Scrape for duplicate content and deplatform the content/users across affected platforms. -Playbook 2: Platform adds plagiarism score metadata to a post and makes it publicly available. Scrape for duplicate content and deplatform the content/users across affected platforms. -Playbook 3: Use message hashing and fuzzy hashing to detect identical/similar content. -Playbook 4: Use plagiarism algorithm to detect similar blog posts. -Playbook 5: Use basic web scraping techniques, Google dorks, etc to identify similar head lines, uniques phrases, authorship, embedded links and any other correlating data point. +* **Playbooks**: * **Metatechnique**: M012 - cleaning @@ -17,10 +12,10 @@ Playbook 5: Use basic web scraping techniques, Google dorks, etc to identify sim * **Belongs to tactic stage**: TA06 -| Actors | Sectors | -| ------ | ------- | -| [A028 platform administrator](../actors/A028.md) | Other Tech Company | -| [A031 social media platform adminstrator](../actors/A031.md) | Social Media Company | +| Actor types | Sectors | +| ----------- | ------- | +| [A028 platform administrator](../actortypes/A028.md) | Other Tech Company | +| [A031 social media platform adminstrator](../actortypes/A031.md) | Social Media Company | diff --git a/counters/C00075.md b/counters/C00075.md index 213bf4b..7f57891 100644 --- a/counters/C00075.md +++ b/counters/C00075.md @@ -1,6 +1,6 @@ # Counter C00075: normalise language -* **Summary**: +* **Summary**: normalise the language around disinformation and misinformation; give people the words for artifact and effect types. * **Playbooks**: @@ -11,8 +11,8 @@ * **Belongs to tactic stage**: TA06 -| Actors | Sectors | -| ------ | ------- | +| Actor types | Sectors | +| ----------- | ------- | diff --git a/counters/C00076.md b/counters/C00076.md index 174eaa2..3a70cc1 100644 --- a/counters/C00076.md +++ b/counters/C00076.md @@ -1,6 +1,6 @@ # Counter C00076: Prohibit images in political discourse channels -* **Summary**: +* **Summary**: Make political discussion channels text-only. * **Playbooks**: @@ -11,8 +11,8 @@ * **Belongs to tactic stage**: TA06 -| Actors | Sectors | -| ------ | ------- | +| Actor types | Sectors | +| ----------- | ------- | diff --git a/counters/C00077.md b/counters/C00077.md index d81d732..cf46afc 100644 --- a/counters/C00077.md +++ b/counters/C00077.md @@ -1,6 +1,6 @@ # Counter C00077: Active defence: run TA03 "develop people” - not recommended -* **Summary**: +* **Summary**: Develop networks of communities and influencers around counter-misinformation. Match them to misinformation creators * **Playbooks**: @@ -11,8 +11,8 @@ * **Belongs to tactic stage**: TA03 -| Actors | Sectors | -| ------ | ------- | +| Actor types | Sectors | +| ----------- | ------- | diff --git a/counters/C00078.md b/counters/C00078.md index e5d5c70..537eaf7 100644 --- a/counters/C00078.md +++ b/counters/C00078.md @@ -11,8 +11,8 @@ * **Belongs to tactic stage**: TA06 -| Actors | Sectors | -| ------ | ------- | +| Actor types | Sectors | +| ----------- | ------- | diff --git a/counters/C00080.md b/counters/C00080.md index 03fa3e7..9e5f2eb 100644 --- a/counters/C00080.md +++ b/counters/C00080.md @@ -1,6 +1,6 @@ # Counter C00080: Create competing narrative -* **Summary**: Could also be degrade +* **Summary**: Create counternarratives, or narratives that compete in the same spaces as misinformation narratives. Could also be degrade * **Playbooks**: @@ -11,8 +11,8 @@ * **Belongs to tactic stage**: TA06 -| Actors | Sectors | -| ------ | ------- | +| Actor types | Sectors | +| ----------- | ------- | diff --git a/counters/C00081.md b/counters/C00081.md index 4ba4dac..9c95312 100644 --- a/counters/C00081.md +++ b/counters/C00081.md @@ -11,8 +11,8 @@ * **Belongs to tactic stage**: TA06 -| Actors | Sectors | -| ------ | ------- | +| Actor types | Sectors | +| ----------- | ------- | diff --git a/counters/C00082.md b/counters/C00082.md index 32843a3..83cd542 100644 --- a/counters/C00082.md +++ b/counters/C00082.md @@ -11,8 +11,8 @@ * **Belongs to tactic stage**: TA06 -| Actors | Sectors | -| ------ | ------- | +| Actor types | Sectors | +| ----------- | ------- | diff --git a/counters/C00084.md b/counters/C00084.md index f3aa2e4..8d09f45 100644 --- a/counters/C00084.md +++ b/counters/C00084.md @@ -11,8 +11,8 @@ * **Belongs to tactic stage**: TA06 -| Actors | Sectors | -| ------ | ------- | +| Actor types | Sectors | +| ----------- | ------- | diff --git a/counters/C00085.md b/counters/C00085.md index 8e14084..63a0396 100644 --- a/counters/C00085.md +++ b/counters/C00085.md @@ -13,8 +13,8 @@ Online archives of content (archives of websites, social media profiles, media, * **Belongs to tactic stage**: TA06 -| Actors | Sectors | -| ------ | ------- | +| Actor types | Sectors | +| ----------- | ------- | diff --git a/counters/C00086.md b/counters/C00086.md index 997a505..43dec24 100644 --- a/counters/C00086.md +++ b/counters/C00086.md @@ -13,8 +13,8 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co * **Belongs to tactic stage**: TA06 -| Actors | Sectors | -| ------ | ------- | +| Actor types | Sectors | +| ----------- | ------- | diff --git a/counters/C00087.md b/counters/C00087.md index 317e0e5..bffc318 100644 --- a/counters/C00087.md +++ b/counters/C00087.md @@ -11,8 +11,8 @@ * **Belongs to tactic stage**: TA06 -| Actors | Sectors | -| ------ | ------- | +| Actor types | Sectors | +| ----------- | ------- | diff --git a/counters/C00090.md b/counters/C00090.md index 6f806c0..b3fea6c 100644 --- a/counters/C00090.md +++ b/counters/C00090.md @@ -1,6 +1,6 @@ # Counter C00090: Fake engagement system -* **Summary**: +* **Summary**: Create honeypots for misinformation creators to engage with, and reduce the resources they have available for misinformation campaigns. * **Playbooks**: @@ -11,8 +11,8 @@ * **Belongs to tactic stage**: TA07 -| Actors | Sectors | -| ------ | ------- | +| Actor types | Sectors | +| ----------- | ------- | diff --git a/counters/C00091.md b/counters/C00091.md index 911ec26..70b15d2 100644 --- a/counters/C00091.md +++ b/counters/C00091.md @@ -11,8 +11,8 @@ * **Belongs to tactic stage**: TA06 -| Actors | Sectors | -| ------ | ------- | +| Actor types | Sectors | +| ----------- | ------- | diff --git a/counters/C00092.md b/counters/C00092.md index 3ee0969..c30523f 100644 --- a/counters/C00092.md +++ b/counters/C00092.md @@ -11,9 +11,9 @@ * **Belongs to tactic stage**: TA02 -| Actors | Sectors | -| ------ | ------- | -| [A001 data scientist ](../actors/A001.md) | All | +| Actor types | Sectors | +| ----------- | ------- | +| [A001 data scientist ](../actortypes/A001.md) | All | diff --git a/counters/C00093.md b/counters/C00093.md index 1a37483..1a92e4b 100644 --- a/counters/C00093.md +++ b/counters/C00093.md @@ -11,8 +11,8 @@ * **Belongs to tactic stage**: TA03 -| Actors | Sectors | -| ------ | ------- | +| Actor types | Sectors | +| ----------- | ------- | diff --git a/counters/C00094.md b/counters/C00094.md index 4313225..4c148e1 100644 --- a/counters/C00094.md +++ b/counters/C00094.md @@ -11,8 +11,8 @@ * **Belongs to tactic stage**: TA06 -| Actors | Sectors | -| ------ | ------- | +| Actor types | Sectors | +| ----------- | ------- | diff --git a/counters/C00096.md b/counters/C00096.md index 44027fd..b92308c 100644 --- a/counters/C00096.md +++ b/counters/C00096.md @@ -1,6 +1,6 @@ # Counter C00096: Strengthen institutions that are always truth tellers -* **Summary**: +* **Summary**: Increase credibility, visibility, and reach of positive influencers in the information space. * **Playbooks**: @@ -11,8 +11,8 @@ * **Belongs to tactic stage**: TA01 -| Actors | Sectors | -| ------ | ------- | +| Actor types | Sectors | +| ----------- | ------- | diff --git a/counters/C00097.md b/counters/C00097.md index 28a3127..aaf5caa 100644 --- a/counters/C00097.md +++ b/counters/C00097.md @@ -1,6 +1,6 @@ # Counter C00097: Require use of verified identities to contribute to poll or comment -* **Summary**: +* **Summary**: Reduce poll flooding by online taking comments or poll entries from verified accounts. * **Playbooks**: @@ -11,9 +11,9 @@ * **Belongs to tactic stage**: TA07 -| Actors | Sectors | -| ------ | ------- | -| [A031 social media platform adminstrator](../actors/A031.md) | Social Media Company | +| Actor types | Sectors | +| ----------- | ------- | +| [A031 social media platform adminstrator](../actortypes/A031.md) | Social Media Company | diff --git a/counters/C00098.md b/counters/C00098.md index 84412c5..4af43ab 100644 --- a/counters/C00098.md +++ b/counters/C00098.md @@ -1,8 +1,8 @@ # Counter C00098: Revocation of allowlisted or "verified" status -* **Summary**: +* **Summary**: remove blue checkmarks etc from known misinformation accounts. -* **Playbooks**: Affected person contacts platform for action +* **Playbooks**: * **Metatechnique**: M004 - friction @@ -11,9 +11,9 @@ * **Belongs to tactic stage**: TA07 -| Actors | Sectors | -| ------ | ------- | -| [A031 social media platform adminstrator](../actors/A031.md) | Social Media Company | +| Actor types | Sectors | +| ----------- | ------- | +| [A031 social media platform adminstrator](../actortypes/A031.md) | Social Media Company | diff --git a/counters/C00099.md b/counters/C00099.md index 484f939..e5d5c07 100644 --- a/counters/C00099.md +++ b/counters/C00099.md @@ -1,6 +1,6 @@ # Counter C00099: Strengthen verification methods -* **Summary**: +* **Summary**: Improve content veerification methods available to groups, individuals etc. * **Playbooks**: @@ -11,9 +11,9 @@ * **Belongs to tactic stage**: TA07 -| Actors | Sectors | -| ------ | ------- | -| [A031 social media platform adminstrator](../actors/A031.md) | Social Media Company | +| Actor types | Sectors | +| ----------- | ------- | +| [A031 social media platform adminstrator](../actortypes/A031.md) | Social Media Company | diff --git a/counters/C00100.md b/counters/C00100.md index 43a57c1..60e1d53 100644 --- a/counters/C00100.md +++ b/counters/C00100.md @@ -1,6 +1,6 @@ # Counter C00100: Hashtag jacking -* **Summary**: +* **Summary**: Post large volumes of unrelated content on known misinformation hashtags * **Playbooks**: @@ -11,8 +11,8 @@ * **Belongs to tactic stage**: TA08 -| Actors | Sectors | -| ------ | ------- | +| Actor types | Sectors | +| ----------- | ------- | diff --git a/counters/C00101.md b/counters/C00101.md index 8ce139f..01aed9d 100644 --- a/counters/C00101.md +++ b/counters/C00101.md @@ -11,9 +11,9 @@ * **Belongs to tactic stage**: TA07 -| Actors | Sectors | -| ------ | ------- | -| [A031 social media platform adminstrator](../actors/A031.md) | Social Media Company | +| Actor types | Sectors | +| ----------- | ------- | +| [A031 social media platform adminstrator](../actortypes/A031.md) | Social Media Company | diff --git a/counters/C00103.md b/counters/C00103.md index a1bc144..8bbc6a4 100644 --- a/counters/C00103.md +++ b/counters/C00103.md @@ -11,9 +11,9 @@ * **Belongs to tactic stage**: TA07 -| Actors | Sectors | -| ------ | ------- | -| [A024 developer](../actors/A024.md) | Other Tech Company | +| Actor types | Sectors | +| ----------- | ------- | +| [A024 developer](../actortypes/A024.md) | Other Tech Company | diff --git a/counters/C00105.md b/counters/C00105.md index 37dc910..3963fcd 100644 --- a/counters/C00105.md +++ b/counters/C00105.md @@ -1,6 +1,6 @@ -# Counter C00105: Buy more advertising than the adversary to shift influence and algorithms +# Counter C00105: Buy more advertising than misinformation creators -* **Summary**: +* **Summary**: Shift influence and algorithms by posting more adverts into spaces than misinformation creators. * **Playbooks**: @@ -11,9 +11,9 @@ * **Belongs to tactic stage**: TA07 -| Actors | Sectors | -| ------ | ------- | -| [A023 adtech provider](../actors/A023.md) | Other Tech Company | +| Actor types | Sectors | +| ----------- | ------- | +| [A023 adtech provider](../actortypes/A023.md) | Other Tech Company | diff --git a/counters/C00106.md b/counters/C00106.md index 8f01db6..be7f20a 100644 --- a/counters/C00106.md +++ b/counters/C00106.md @@ -11,8 +11,8 @@ * **Belongs to tactic stage**: TA06 -| Actors | Sectors | -| ------ | ------- | +| Actor types | Sectors | +| ----------- | ------- | diff --git a/counters/C00107.md b/counters/C00107.md index 979f675..a8bb8f7 100644 --- a/counters/C00107.md +++ b/counters/C00107.md @@ -11,9 +11,9 @@ * **Belongs to tactic stage**: TA06 -| Actors | Sectors | -| ------ | ------- | -| [A031 social media platform adminstrator](../actors/A031.md) | Social Media Company | +| Actor types | Sectors | +| ----------- | ------- | +| [A031 social media platform adminstrator](../actortypes/A031.md) | Social Media Company | diff --git a/counters/C00109.md b/counters/C00109.md index 522fb43..9f4da49 100644 --- a/counters/C00109.md +++ b/counters/C00109.md @@ -1,6 +1,6 @@ # Counter C00109: Dampen Emotional Reaction -* **Summary**: +* **Summary**: Reduce emotional responses to misinformation through calming messages, etc. * **Playbooks**: @@ -11,8 +11,8 @@ * **Belongs to tactic stage**: TA09 -| Actors | Sectors | -| ------ | ------- | +| Actor types | Sectors | +| ----------- | ------- | diff --git a/counters/C00111.md b/counters/C00111.md index 7a7a90a..9e858f7 100644 --- a/counters/C00111.md +++ b/counters/C00111.md @@ -11,10 +11,10 @@ * **Belongs to tactic stage**: TA01 -| Actors | Sectors | -| ------ | ------- | -| [A013 content creator ](../actors/A013.md) | General Public | -| [A021 media organisation](../actors/A021.md) | Media | +| Actor types | Sectors | +| ----------- | ------- | +| [A013 content creator ](../actortypes/A013.md) | General Public | +| [A021 media organisation](../actortypes/A021.md) | Media | diff --git a/counters/C00112.md b/counters/C00112.md index 816e971..f3189c7 100644 --- a/counters/C00112.md +++ b/counters/C00112.md @@ -1,6 +1,6 @@ # Counter C00112: "Prove they are not an op!" -* **Summary**: +* **Summary**: Challenge misinformation creators to prove they're not an information operation. * **Playbooks**: @@ -11,8 +11,8 @@ * **Belongs to tactic stage**: TA08 -| Actors | Sectors | -| ------ | ------- | +| Actor types | Sectors | +| ----------- | ------- | diff --git a/counters/C00113.md b/counters/C00113.md index 27ff8e1..267c428 100644 --- a/counters/C00113.md +++ b/counters/C00113.md @@ -1,6 +1,6 @@ -# Counter C00113: Debunk and defuse a fake expert / credentials. Attack audience quality of fake expert +# Counter C00113: Debunk and defuse a fake expert / credentials. -* **Summary**: +* **Summary**: Debunk fake experts, their credentials, and potentially also their audience quality * **Playbooks**: @@ -11,8 +11,8 @@ * **Belongs to tactic stage**: TA08 -| Actors | Sectors | -| ------ | ------- | +| Actor types | Sectors | +| ----------- | ------- | diff --git a/counters/C00114.md b/counters/C00114.md index b0381c8..5b9c1ae 100644 --- a/counters/C00114.md +++ b/counters/C00114.md @@ -1,6 +1,6 @@ # Counter C00114: Don't engage with payloads -* **Summary**: +* **Summary**: Stop passing on misinformation * **Playbooks**: @@ -11,9 +11,9 @@ * **Belongs to tactic stage**: TA08 -| Actors | Sectors | -| ------ | ------- | -| [A015 general public](../actors/A015.md) | General Public | +| Actor types | Sectors | +| ----------- | ------- | +| [A015 general public](../actortypes/A015.md) | General Public | diff --git a/counters/C00115.md b/counters/C00115.md index 8f1a1e7..faae1aa 100644 --- a/counters/C00115.md +++ b/counters/C00115.md @@ -1,6 +1,6 @@ # Counter C00115: Expose actor and intentions -* **Summary**: +* **Summary**: Debunk misinformation creators and posters. * **Playbooks**: @@ -11,8 +11,8 @@ * **Belongs to tactic stage**: TA08 -| Actors | Sectors | -| ------ | ------- | +| Actor types | Sectors | +| ----------- | ------- | diff --git a/counters/C00116.md b/counters/C00116.md index 9631637..32292b9 100644 --- a/counters/C00116.md +++ b/counters/C00116.md @@ -1,6 +1,6 @@ # Counter C00116: Provide proof of involvement -* **Summary**: +* **Summary**: Build and post information about groups etc's involvement in misinformation incidents. * **Playbooks**: @@ -11,8 +11,8 @@ * **Belongs to tactic stage**: TA08 -| Actors | Sectors | -| ------ | ------- | +| Actor types | Sectors | +| ----------- | ------- | diff --git a/counters/C00117.md b/counters/C00117.md index 0f14793..f985416 100644 --- a/counters/C00117.md +++ b/counters/C00117.md @@ -11,8 +11,8 @@ * **Belongs to tactic stage**: TA08 -| Actors | Sectors | -| ------ | ------- | +| Actor types | Sectors | +| ----------- | ------- | diff --git a/counters/C00118.md b/counters/C00118.md index 0ab0a25..041fa14 100644 --- a/counters/C00118.md +++ b/counters/C00118.md @@ -1,6 +1,6 @@ # Counter C00118: Repurpose images with new text -* **Summary**: +* **Summary**: Add countermessage text to iamges used in misinformation incidents. * **Playbooks**: @@ -11,8 +11,8 @@ * **Belongs to tactic stage**: TA08 -| Actors | Sectors | -| ------ | ------- | +| Actor types | Sectors | +| ----------- | ------- | diff --git a/counters/C00119.md b/counters/C00119.md index ee547c3..fbe8779 100644 --- a/counters/C00119.md +++ b/counters/C00119.md @@ -1,6 +1,6 @@ -# Counter C00119: Engage payload and debunk. Provide link to facts. +# Counter C00119: Engage payload and debunk. -* **Summary**: Might be okay. +* **Summary**: debunk misinformation content. Provide link to facts. * **Playbooks**: @@ -11,8 +11,8 @@ * **Belongs to tactic stage**: TA08 -| Actors | Sectors | -| ------ | ------- | +| Actor types | Sectors | +| ----------- | ------- | diff --git a/counters/C00120.md b/counters/C00120.md index 0952828..b17f401 100644 --- a/counters/C00120.md +++ b/counters/C00120.md @@ -1,6 +1,6 @@ # Counter C00120: Open dialogue about design of platforms to produce different outcomes -* **Summary**: +* **Summary**: Redesign platforms and algorithms to reduce the effectiveness of disinformation * **Playbooks**: @@ -11,8 +11,8 @@ * **Belongs to tactic stage**: TA08 -| Actors | Sectors | -| ------ | ------- | +| Actor types | Sectors | +| ----------- | ------- | diff --git a/counters/C00121.md b/counters/C00121.md index c3aeea5..9b0eced 100644 --- a/counters/C00121.md +++ b/counters/C00121.md @@ -1,6 +1,6 @@ # Counter C00121: Tool transparency and literacy for channels people follow. -* **Summary**: +* **Summary**: Make algorithms in platforms explainable, and visible to people using those platforms. * **Playbooks**: @@ -11,8 +11,8 @@ * **Belongs to tactic stage**: TA08 -| Actors | Sectors | -| ------ | ------- | +| Actor types | Sectors | +| ----------- | ------- | diff --git a/counters/C00122.md b/counters/C00122.md index 789c884..f7a5d50 100644 --- a/counters/C00122.md +++ b/counters/C00122.md @@ -11,9 +11,9 @@ * **Belongs to tactic stage**: TA09 -| Actors | Sectors | -| ------ | ------- | -| [A031 social media platform adminstrator](../actors/A031.md) | Social Media Company | +| Actor types | Sectors | +| ----------- | ------- | +| [A031 social media platform adminstrator](../actortypes/A031.md) | Social Media Company | diff --git a/counters/C00123.md b/counters/C00123.md index 247f788..6b2f9dc 100644 --- a/counters/C00123.md +++ b/counters/C00123.md @@ -1,6 +1,6 @@ # Counter C00123: Remove or rate limit botnets -* **Summary**: +* **Summary**: reduce the visibility of known botnets online. * **Playbooks**: @@ -11,8 +11,8 @@ * **Belongs to tactic stage**: TA09 -| Actors | Sectors | -| ------ | ------- | +| Actor types | Sectors | +| ----------- | ------- | diff --git a/counters/C00124.md b/counters/C00124.md index d8a0cdc..5a7af1b 100644 --- a/counters/C00124.md +++ b/counters/C00124.md @@ -1,6 +1,6 @@ # Counter C00124: Don't feed the trolls -* **Summary**: +* **Summary**: Don't engage with individuals relaying misinformation. * **Playbooks**: @@ -11,10 +11,10 @@ * **Belongs to tactic stage**: TA09 -| Actors | Sectors | -| ------ | ------- | -| [A015 general public](../actors/A015.md) | General Public | -| [A021 media organisation](../actors/A021.md) | Media | +| Actor types | Sectors | +| ----------- | ------- | +| [A015 general public](../actortypes/A015.md) | General Public | +| [A021 media organisation](../actortypes/A021.md) | Media | diff --git a/counters/C00125.md b/counters/C00125.md index bf8c64c..d380a04 100644 --- a/counters/C00125.md +++ b/counters/C00125.md @@ -1,6 +1,6 @@ # Counter C00125: Prebunking -* **Summary**: +* **Summary**: Produce material in advance of misinformation incidents, by anticipating the narratives used in them, and debunking them. * **Playbooks**: @@ -11,8 +11,8 @@ * **Belongs to tactic stage**: TA09 -| Actors | Sectors | -| ------ | ------- | +| Actor types | Sectors | +| ----------- | ------- | diff --git a/counters/C00126.md b/counters/C00126.md index ddccd73..51f46ab 100644 --- a/counters/C00126.md +++ b/counters/C00126.md @@ -1,6 +1,6 @@ # Counter C00126: Social media amber alert -* **Summary**: +* **Summary**: Create an alert system around disinformation and misinformation artifacts, narratives, and incidents * **Playbooks**: @@ -11,8 +11,8 @@ * **Belongs to tactic stage**: TA09 -| Actors | Sectors | -| ------ | ------- | +| Actor types | Sectors | +| ----------- | ------- | diff --git a/counters/C00128.md b/counters/C00128.md index d4876eb..a7c9c34 100644 --- a/counters/C00128.md +++ b/counters/C00128.md @@ -1,6 +1,6 @@ # Counter C00128: Create friction by marking content with ridicule or other "decelerants" -* **Summary**: +* **Summary**: Repost or comment on misinformation artifacts, using ridicule or other content to reduce the likelihood of reposting. * **Playbooks**: @@ -11,9 +11,9 @@ * **Belongs to tactic stage**: TA09 -| Actors | Sectors | -| ------ | ------- | -| [A003 trusted authority ](../actors/A003.md) | All | +| Actor types | Sectors | +| ----------- | ------- | +| [A003 trusted authority ](../actortypes/A003.md) | All | diff --git a/counters/C00129.md b/counters/C00129.md index 234e547..6a75d51 100644 --- a/counters/C00129.md +++ b/counters/C00129.md @@ -11,8 +11,8 @@ * **Belongs to tactic stage**: TA09 -| Actors | Sectors | -| ------ | ------- | +| Actor types | Sectors | +| ----------- | ------- | diff --git a/counters/C00130.md b/counters/C00130.md index 56b2017..b26978e 100644 --- a/counters/C00130.md +++ b/counters/C00130.md @@ -1,6 +1,6 @@ # Counter C00130: Mentorship: elders, youth, credit. Learn vicariously. -* **Summary**: +* **Summary**: Train local influencers in countering misinformation. * **Playbooks**: @@ -11,8 +11,8 @@ * **Belongs to tactic stage**: TA05 -| Actors | Sectors | -| ------ | ------- | +| Actor types | Sectors | +| ----------- | ------- | diff --git a/counters/C00131.md b/counters/C00131.md index 0c57a07..a8d7bda 100644 --- a/counters/C00131.md +++ b/counters/C00131.md @@ -1,6 +1,6 @@ # Counter C00131: Seize and analyse botnet servers -* **Summary**: +* **Summary**: Take botnet servers offline by seizing them. * **Playbooks**: @@ -11,9 +11,9 @@ * **Belongs to tactic stage**: TA11 -| Actors | Sectors | -| ------ | ------- | -| [A029 server admininistrator ](../actors/A029.md) | Other Tech Company | +| Actor types | Sectors | +| ----------- | ------- | +| [A029 server admininistrator ](../actortypes/A029.md) | Other Tech Company | diff --git a/counters/C00133.md b/counters/C00133.md index 80d75e2..9222bd2 100644 --- a/counters/C00133.md +++ b/counters/C00133.md @@ -11,9 +11,9 @@ * **Belongs to tactic stage**: TA03 -| Actors | Sectors | -| ------ | ------- | -| [A031 social media platform adminstrator](../actors/A031.md) | Social Media Company | +| Actor types | Sectors | +| ----------- | ------- | +| [A031 social media platform adminstrator](../actortypes/A031.md) | Social Media Company | diff --git a/counters/C00135.md b/counters/C00135.md index d3cdf3a..387d96c 100644 --- a/counters/C00135.md +++ b/counters/C00135.md @@ -11,9 +11,9 @@ * **Belongs to tactic stage**: TA04 -| Actors | Sectors | -| ------ | ------- | -| [A031 social media platform adminstrator](../actors/A031.md) | Social Media Company | +| Actor types | Sectors | +| ----------- | ------- | +| [A031 social media platform adminstrator](../actortypes/A031.md) | Social Media Company | diff --git a/counters/C00136.md b/counters/C00136.md index f0a918a..69e891d 100644 --- a/counters/C00136.md +++ b/counters/C00136.md @@ -1,10 +1,8 @@ # Counter C00136: Microtarget most likely targets then send them countermessages -* **Summary**: - -* **Playbooks**: Playbook 1: Work with platform to identify active target audiences through finanical data and messaging. -Playbook 2: Use a platform's publicly available advertising/targeting capabilities to enumerate a list of possible microtargeted demographics. Compare these to known TAs of past/ongoing influence ops to identify the vulnerable demographics. +* **Summary**: Find communities likely to be targetted by misinformation campaigns, and send them countermessages or pointers to information sources. +* **Playbooks**: * **Metatechnique**: M010 - countermessaging @@ -13,8 +11,8 @@ Playbook 2: Use a platform's publicly available advertising/targeting capabiliti * **Belongs to tactic stage**: TA08 -| Actors | Sectors | -| ------ | ------- | +| Actor types | Sectors | +| ----------- | ------- | diff --git a/counters/C00138.md b/counters/C00138.md index d5e80a1..bbe4da5 100644 --- a/counters/C00138.md +++ b/counters/C00138.md @@ -1,6 +1,6 @@ # Counter C00138: Spam domestic actors with lawsuits -* **Summary**: +* **Summary**: File multiple lawsuits against known misinformation creators and posters, to distract them from disinformation creation. * **Playbooks**: @@ -11,8 +11,8 @@ * **Belongs to tactic stage**: TA11 -| Actors | Sectors | -| ------ | ------- | +| Actor types | Sectors | +| ----------- | ------- | diff --git a/counters/C00139.md b/counters/C00139.md index 0a9512e..0476a6c 100644 --- a/counters/C00139.md +++ b/counters/C00139.md @@ -11,8 +11,8 @@ * **Belongs to tactic stage**: TA11 -| Actors | Sectors | -| ------ | ------- | +| Actor types | Sectors | +| ----------- | ------- | diff --git a/counters/C00140.md b/counters/C00140.md index 5acda26..603b05d 100644 --- a/counters/C00140.md +++ b/counters/C00140.md @@ -2,9 +2,7 @@ * **Summary**: Applies to most of the content used by exposure techniques except "T0055 - Use hashtag”. Applies to analytics -* **Playbooks**: Playbook 1: DDoS adversary link shorteners by spamming real links. -Playbook 2: Compromise service and reroute links to benign content or counter messaging. - +* **Playbooks**: * **Metatechnique**: M008 - data pollution @@ -13,8 +11,8 @@ Playbook 2: Compromise service and reroute links to benign content or counter me * **Belongs to tactic stage**: TA12 -| Actors | Sectors | -| ------ | ------- | +| Actor types | Sectors | +| ----------- | ------- | diff --git a/counters/C00142.md b/counters/C00142.md index aa13fc2..6ec17aa 100644 --- a/counters/C00142.md +++ b/counters/C00142.md @@ -11,9 +11,9 @@ * **Belongs to tactic stage**: TA06 -| Actors | Sectors | -| ------ | ------- | -| [A031 social media platform adminstrator](../actors/A031.md) | Social Media Company | +| Actor types | Sectors | +| ----------- | ------- | +| [A031 social media platform adminstrator](../actortypes/A031.md) | Social Media Company | diff --git a/counters/C00143.md b/counters/C00143.md index 9ac7d99..4179e21 100644 --- a/counters/C00143.md +++ b/counters/C00143.md @@ -11,10 +11,10 @@ * **Belongs to tactic stage**: TA11 -| Actors | Sectors | -| ------ | ------- | -| [A014 elves](../actors/A014.md) | General Public | -| [A015 general public](../actors/A015.md) | General Public | +| Actor types | Sectors | +| ----------- | ------- | +| [A014 elves](../actortypes/A014.md) | General Public | +| [A015 general public](../actortypes/A015.md) | General Public | diff --git a/counters/C00144.md b/counters/C00144.md index 41a8a30..a0a97f9 100644 --- a/counters/C00144.md +++ b/counters/C00144.md @@ -11,8 +11,8 @@ * **Belongs to tactic stage**: TA02 -| Actors | Sectors | -| ------ | ------- | +| Actor types | Sectors | +| ----------- | ------- | diff --git a/counters/C00147.md b/counters/C00147.md index 7e933c1..6565f08 100644 --- a/counters/C00147.md +++ b/counters/C00147.md @@ -1,6 +1,6 @@ -# Counter C00147: Make amplification of social media ports expire (e.g. can't like/ retweet after n days) +# Counter C00147: Make amplification of social media posts expire (e.g. can't like/ retweet after n days) -* **Summary**: +* **Summary**: Stop new community activity (likes, comments) on old social media posts. * **Playbooks**: @@ -11,9 +11,9 @@ * **Belongs to tactic stage**: TA09 -| Actors | Sectors | -| ------ | ------- | -| [A031 social media platform adminstrator](../actors/A031.md) | Social Media Company | +| Actor types | Sectors | +| ----------- | ------- | +| [A031 social media platform adminstrator](../actortypes/A031.md) | Social Media Company | diff --git a/counters/C00148.md b/counters/C00148.md index 7dc70a9..8e99678 100644 --- a/counters/C00148.md +++ b/counters/C00148.md @@ -2,8 +2,7 @@ * **Summary**: If creators are using network analysis to determine how to attack networks, then adding random extra links to those networks might throw that analysis out enough to change attack outcomes. Unsure which AMITT techniques. -* **Playbooks**: Playbook 1: Degrade TA engagement using bots; direct the adversary to engage insular bot communities-within-communities rather than the authentic target audience. -Playbook 2: Degrade MOEs/MOPs by faking inter-community sharing. +* **Playbooks**: * **Metatechnique**: M008 - data pollution @@ -12,9 +11,9 @@ Playbook 2: Degrade MOEs/MOPs by faking inter-community sharing. * **Belongs to tactic stage**: TA12 -| Actors | Sectors | -| ------ | ------- | -| [A031 social media platform adminstrator](../actors/A031.md) | Social Media Company | +| Actor types | Sectors | +| ----------- | ------- | +| [A031 social media platform adminstrator](../actortypes/A031.md) | Social Media Company | diff --git a/counters/C00149.md b/counters/C00149.md index 7fe8bdb..9d7f1b6 100644 --- a/counters/C00149.md +++ b/counters/C00149.md @@ -2,14 +2,7 @@ * **Summary**: Includes Pollute the AB-testing data feeds: Polluting A/B testing requires knowledge of MOEs and MOPs. A/B testing must be caught early when there is relatively little data available so infiltration of TAs and understanding of how content is migrated from testing to larger audiences is fundamental. -* **Playbooks**: Playbook 1: Distort TA demographics by posting irrelevant content, misleading demogaphic data, etc. -Playbook 2: Work with the media platform to distort publicly available metrics. Can we work with Twitter to get crappy off-brand memes artificially bumped without needing to create fake accounts, etc.? -Playbook 3: Use adtech to promote content inconsistent with TA demographics. If the adversary is reverse engineering a groups demographics by analyzing ads placed on the platform/group, by spamming ads for out-group stuff it may distort analysis of the group. -Playbook 4: Distort Google Trends and other publicly available source of metrics using bots, cyborgs, adtech. -Playbook 5: Distort TA emotional response to content/narratives. -Playbook 6: Promote damp squibs. Within a known TA promote/inflate crappy off-brand memes which are unlikley to resonate. -Playbook 7: Detect early trending/engagement and undermine the content by responding with 5Ds, toxic community behaviour, satirical responses, etc. -Playbook 8: If adtech is used, fake clicks and engagements on the content. +* **Playbooks**: * **Metatechnique**: M008 - data pollution @@ -18,8 +11,8 @@ Playbook 8: If adtech is used, fake clicks and engagements on the content. * **Belongs to tactic stage**: TA12 -| Actors | Sectors | -| ------ | ------- | +| Actor types | Sectors | +| ----------- | ------- | diff --git a/counters/C00153.md b/counters/C00153.md index 5989615..5e01adf 100644 --- a/counters/C00153.md +++ b/counters/C00153.md @@ -11,9 +11,9 @@ * **Belongs to tactic stage**: TA01 -| Actors | Sectors | -| ------ | ------- | -| [A027 information security](../actors/A027.md) | Other Tech Company | +| Actor types | Sectors | +| ----------- | ------- | +| [A027 information security](../actortypes/A027.md) | Other Tech Company | diff --git a/counters/C00154.md b/counters/C00154.md index d236185..11b162b 100644 --- a/counters/C00154.md +++ b/counters/C00154.md @@ -1,6 +1,6 @@ # Counter C00154: Ask media not to report false information -* **Summary**: +* **Summary**: Train media to spot and respond to misinformation, and ask them not to post or transmit misinformation they've found. * **Playbooks**: @@ -11,9 +11,9 @@ * **Belongs to tactic stage**: TA08 -| Actors | Sectors | -| ------ | ------- | -| [A021 media organisation](../actors/A021.md) | Media | +| Actor types | Sectors | +| ----------- | ------- | +| [A021 media organisation](../actortypes/A021.md) | Media | diff --git a/counters/C00155.md b/counters/C00155.md index fd57aad..d73c1bc 100644 --- a/counters/C00155.md +++ b/counters/C00155.md @@ -1,6 +1,6 @@ # Counter C00155: Ban incident actors from funding sites -* **Summary**: +* **Summary**: Ban misinformation creators and posters from funding sites * **Playbooks**: @@ -11,9 +11,9 @@ * **Belongs to tactic stage**: TA03 -| Actors | Sectors | -| ------ | ------- | -| [A025 funding_site_admin](../actors/A025.md) | Other Tech Company | +| Actor types | Sectors | +| ----------- | ------- | +| [A025 funding_site_admin](../actortypes/A025.md) | Other Tech Company | diff --git a/counters/C00156.md b/counters/C00156.md index b4edb1d..dd97f7f 100644 --- a/counters/C00156.md +++ b/counters/C00156.md @@ -11,10 +11,10 @@ * **Belongs to tactic stage**: TA02 -| Actors | Sectors | -| ------ | ------- | -| [A018 government ](../actors/A018.md) | Government | -| [A019 military ](../actors/A019.md) | Government | +| Actor types | Sectors | +| ----------- | ------- | +| [A018 government ](../actortypes/A018.md) | Government | +| [A019 military ](../actortypes/A019.md) | Government | diff --git a/counters/C00159.md b/counters/C00159.md index b59fc68..9c4f6cd 100644 --- a/counters/C00159.md +++ b/counters/C00159.md @@ -11,8 +11,8 @@ * **Belongs to tactic stage**: TA01 -| Actors | Sectors | -| ------ | ------- | +| Actor types | Sectors | +| ----------- | ------- | diff --git a/counters/C00160.md b/counters/C00160.md index 9508e73..1104694 100644 --- a/counters/C00160.md +++ b/counters/C00160.md @@ -11,10 +11,10 @@ * **Belongs to tactic stage**: TA03 -| Actors | Sectors | -| ------ | ------- | -| [A001 data scientist ](../actors/A001.md) | All | -| [A016 influencer](../actors/A016.md) | General Public | +| Actor types | Sectors | +| ----------- | ------- | +| [A001 data scientist ](../actortypes/A001.md) | All | +| [A016 influencer](../actortypes/A016.md) | General Public | diff --git a/counters/C00161.md b/counters/C00161.md index c5afc79..ca31213 100644 --- a/counters/C00161.md +++ b/counters/C00161.md @@ -11,8 +11,8 @@ * **Belongs to tactic stage**: TA01 -| Actors | Sectors | -| ------ | ------- | +| Actor types | Sectors | +| ----------- | ------- | diff --git a/counters/C00162.md b/counters/C00162.md index 53fb538..b218bc8 100644 --- a/counters/C00162.md +++ b/counters/C00162.md @@ -11,8 +11,8 @@ * **Belongs to tactic stage**: TA04 -| Actors | Sectors | -| ------ | ------- | +| Actor types | Sectors | +| ----------- | ------- | diff --git a/counters/C00164.md b/counters/C00164.md index 0505404..88f1348 100644 --- a/counters/C00164.md +++ b/counters/C00164.md @@ -11,8 +11,8 @@ * **Belongs to tactic stage**: TA02 -| Actors | Sectors | -| ------ | ------- | +| Actor types | Sectors | +| ----------- | ------- | diff --git a/counters/C00165.md b/counters/C00165.md index 032fd12..1fa7484 100644 --- a/counters/C00165.md +++ b/counters/C00165.md @@ -11,8 +11,8 @@ * **Belongs to tactic stage**: TA06 -| Actors | Sectors | -| ------ | ------- | +| Actor types | Sectors | +| ----------- | ------- | diff --git a/counters/C00169.md b/counters/C00169.md index c6fa273..c5dd79a 100644 --- a/counters/C00169.md +++ b/counters/C00169.md @@ -11,8 +11,8 @@ * **Belongs to tactic stage**: TA02 -| Actors | Sectors | -| ------ | ------- | +| Actor types | Sectors | +| ----------- | ------- | diff --git a/counters/C00170.md b/counters/C00170.md index e713cce..fb8f610 100644 --- a/counters/C00170.md +++ b/counters/C00170.md @@ -11,8 +11,8 @@ * **Belongs to tactic stage**: TA01 -| Actors | Sectors | -| ------ | ------- | +| Actor types | Sectors | +| ----------- | ------- | diff --git a/counters/C00172.md b/counters/C00172.md index 66d3209..8e03294 100644 --- a/counters/C00172.md +++ b/counters/C00172.md @@ -11,9 +11,9 @@ * **Belongs to tactic stage**: TA04 -| Actors | Sectors | -| ------ | ------- | -| [A031 social media platform adminstrator](../actors/A031.md) | Social Media Company | +| Actor types | Sectors | +| ----------- | ------- | +| [A031 social media platform adminstrator](../actortypes/A031.md) | Social Media Company | diff --git a/counters/C00174.md b/counters/C00174.md index 4e817e7..eda7a87 100644 --- a/counters/C00174.md +++ b/counters/C00174.md @@ -2,7 +2,7 @@ * **Summary**: Free and fair press: create bipartisan, patriotic commitment to press freedom. Note difference between news and editorialising. Build alternative news sources: create alternative local-language news sources to counter local-language propaganda outlets. Delegitimize the 24 hour news cycle. includes Provide an alternative to disinformation content by expanding and improving local content: Develop content that can displace geopolitically-motivated narratives in the entire media environment, both new and old media alike. -* **Playbooks**: Elected officials lead return to First Amendment norms that embrace free and fair media as central to democracy. +* **Playbooks**: * **Metatechnique**: M007 - metatechnique, M002 - diversion @@ -11,9 +11,9 @@ * **Belongs to tactic stage**: TA01 -| Actors | Sectors | -| ------ | ------- | -| [A021 media organisation](../actors/A021.md) | Media | +| Actor types | Sectors | +| ----------- | ------- | +| [A021 media organisation](../actortypes/A021.md) | Media | diff --git a/counters/C00176.md b/counters/C00176.md index b07066f..30e254a 100644 --- a/counters/C00176.md +++ b/counters/C00176.md @@ -11,8 +11,8 @@ * **Belongs to tactic stage**: TA01 -| Actors | Sectors | -| ------ | ------- | +| Actor types | Sectors | +| ----------- | ------- | diff --git a/counters/C00178.md b/counters/C00178.md index 9500c45..70eee1e 100644 --- a/counters/C00178.md +++ b/counters/C00178.md @@ -11,8 +11,8 @@ * **Belongs to tactic stage**: TA05 -| Actors | Sectors | -| ------ | ------- | +| Actor types | Sectors | +| ----------- | ------- | diff --git a/counters/C00182.md b/counters/C00182.md index 08b0cfe..49f3f63 100644 --- a/counters/C00182.md +++ b/counters/C00182.md @@ -11,9 +11,9 @@ * **Belongs to tactic stage**: TA09 -| Actors | Sectors | -| ------ | ------- | -| [A027 information security](../actors/A027.md) | Other Tech Company | +| Actor types | Sectors | +| ----------- | ------- | +| [A027 information security](../actortypes/A027.md) | Other Tech Company | diff --git a/counters/C00184.md b/counters/C00184.md index e5f0c30..eab0763 100644 --- a/counters/C00184.md +++ b/counters/C00184.md @@ -1,6 +1,6 @@ # Counter C00184: Media exposure -* **Summary**: +* **Summary**: highlight misinformation activities and actors in media * **Playbooks**: @@ -11,8 +11,8 @@ * **Belongs to tactic stage**: TA08 -| Actors | Sectors | -| ------ | ------- | +| Actor types | Sectors | +| ----------- | ------- | diff --git a/counters/C00188.md b/counters/C00188.md index 54f3363..d2338be 100644 --- a/counters/C00188.md +++ b/counters/C00188.md @@ -2,7 +2,7 @@ * **Summary**: Includes SEO influence. August 2014, Russian news agency Rossiya Segodnya commissioned a poll in France with poorly worded questions and a statistically insignificant subsample that RT used to back a story titled “15% of French people back ISIS [Islamic State of Iraq and Syria] militants, poll finds.” The story and summary infographic circulated on the internet, initially appearing primarily on French sites. After a week, the generally respectable digital U.S. news outlet Vox ran the story, now titled “One in Six French People Say They Support ISIS.” Although this effect has now worn off or been overwritten, for a time—despite a later story from The Washington Post debunking the claim—typing “ISIS France” into Google resulted in an autosuggestion of “ISIS France support” (Borthwick, 2015). Includes promotion of a “higher standard of journalism”: journalism training “would be helpful, especially for the online community. Includes Strengthen local media: Improve effectiveness of local media outlets. Using eastern Latvia media outlets as an example, one expert noted that the media outlets are “very weak,” are often politically affiliated, or have “little local oligarchs that control them.” -* **Playbooks**: TechCamp bringing together local journalists, with a several-day training program that includes a sponsored yearlong investigative project +* **Playbooks**: * **Metatechnique**: M001 - resilience @@ -11,10 +11,10 @@ * **Belongs to tactic stage**: TA08 -| Actors | Sectors | -| ------ | ------- | -| [A006 educator](../actors/A006.md) | Civil Society | -| [A021 media organisation](../actors/A021.md) | Media | +| Actor types | Sectors | +| ----------- | ------- | +| [A006 educator](../actortypes/A006.md) | Civil Society | +| [A021 media organisation](../actortypes/A021.md) | Media | diff --git a/counters/C00189.md b/counters/C00189.md index a822978..1261028 100644 --- a/counters/C00189.md +++ b/counters/C00189.md @@ -11,8 +11,8 @@ * **Belongs to tactic stage**: TA03 -| Actors | Sectors | -| ------ | ------- | +| Actor types | Sectors | +| ----------- | ------- | diff --git a/counters/C00190.md b/counters/C00190.md index 0a9ab0e..5c5ce6e 100644 --- a/counters/C00190.md +++ b/counters/C00190.md @@ -11,9 +11,9 @@ * **Belongs to tactic stage**: TA01 -| Actors | Sectors | -| ------ | ------- | -| [A015 general public](../actors/A015.md) | General Public | +| Actor types | Sectors | +| ----------- | ------- | +| [A015 general public](../actortypes/A015.md) | General Public | diff --git a/counters/C00195.md b/counters/C00195.md index 049e1e0..f73a83d 100644 --- a/counters/C00195.md +++ b/counters/C00195.md @@ -11,8 +11,8 @@ * **Belongs to tactic stage**: TA07 -| Actors | Sectors | -| ------ | ------- | +| Actor types | Sectors | +| ----------- | ------- | diff --git a/counters/C00197.md b/counters/C00197.md index 8e85f51..be229b5 100644 --- a/counters/C00197.md +++ b/counters/C00197.md @@ -2,25 +2,7 @@ * **Summary**: Standard reporting for false profiles (identity issues). Includes detecting hijacked accounts and reallocating them - if possible, back to original owners. -* **Playbooks**: Playbook 1: Create a standard reporting format and method for social platforms for reporting false accounts. -Playbook 2: -- Is the account compromised? -- Is it known to be associated with threat actors -- common/random name -- Names violate terms of service -- Dormant account -- Change of country IP -- Social network growth patterns (number of friends etc) -- Evidence of linguistic artifacts (multiple fingerprints, terms/idiosyncrasies ) -- Community vs. narrative vs. individuals -Playbook 3: Report suspected bots. -- Report ToS violations. -- In all playbooks the platform must force user verification, credential reset and enable MFA. Suspend the account if it cannot be verified. -Playbook 1: Use sites like https://haveibeenpwned.com to detect compromised and at risk user accounts. -Playbook 2: Monitor for unusual account usage (use of VPN, new geographic location, unusual usage hours, etc). -Playbook 3: Detect sudden deviation in user sentiment such as suddenly dropping hashtags linked to extremist content. -Playbook 4: Purchase "likes", "retweets" and other vehicles which identify a bot and/or hijacked account. Ban the account. -Playbook 5: Detect hijacked account and spam their posts. "OP is a known disinformation bot. http://link.to.proof[.]com" +* **Playbooks**: * **Metatechnique**: M005 - removal @@ -29,10 +11,10 @@ Playbook 5: Detect hijacked account and spam their posts. "OP is a known disinfo * **Belongs to tactic stage**: TA03 -| Actors | Sectors | -| ------ | ------- | -| [A004 activist](../actors/A004.md) | Civil Society | -| [A031 social media platform adminstrator](../actors/A031.md) | Social Media Company | +| Actor types | Sectors | +| ----------- | ------- | +| [A004 activist](../actortypes/A004.md) | Civil Society | +| [A031 social media platform adminstrator](../actortypes/A031.md) | Social Media Company | diff --git a/counters/C00200.md b/counters/C00200.md index 4f93d6c..ac982c5 100644 --- a/counters/C00200.md +++ b/counters/C00200.md @@ -11,9 +11,9 @@ * **Belongs to tactic stage**: TA09 -| Actors | Sectors | -| ------ | ------- | -| [A016 influencer](../actors/A016.md) | General Public | +| Actor types | Sectors | +| ----------- | ------- | +| [A016 influencer](../actortypes/A016.md) | General Public | diff --git a/counters/C00202.md b/counters/C00202.md index 4a1731a..0719de3 100644 --- a/counters/C00202.md +++ b/counters/C00202.md @@ -11,8 +11,8 @@ * **Belongs to tactic stage**: TA06 -| Actors | Sectors | -| ------ | ------- | +| Actor types | Sectors | +| ----------- | ------- | diff --git a/counters/C00203.md b/counters/C00203.md index 171640d..cb83001 100644 --- a/counters/C00203.md +++ b/counters/C00203.md @@ -1,6 +1,6 @@ # Counter C00203: Stop offering press credentials to propaganda outlets -* **Summary**: +* **Summary**: Remove access to official press events from known misinformation actors. * **Playbooks**: @@ -11,9 +11,9 @@ * **Belongs to tactic stage**: TA04 -| Actors | Sectors | -| ------ | ------- | -| [A018 government ](../actors/A018.md) | Government | +| Actor types | Sectors | +| ----------- | ------- | +| [A018 government ](../actortypes/A018.md) | Government | diff --git a/counters/C00205.md b/counters/C00205.md index 9356fe3..f857ba5 100644 --- a/counters/C00205.md +++ b/counters/C00205.md @@ -11,10 +11,10 @@ * **Belongs to tactic stage**: TA01 -| Actors | Sectors | -| ------ | ------- | -| [A018 government ](../actors/A018.md) | Government | -| [A033 social media platform owner](../actors/A033.md) | Social Media Company | +| Actor types | Sectors | +| ----------- | ------- | +| [A018 government ](../actortypes/A018.md) | Government | +| [A033 social media platform owner](../actortypes/A033.md) | Social Media Company | diff --git a/counters/C00207.md b/counters/C00207.md index 31da24c..bcc8620 100644 --- a/counters/C00207.md +++ b/counters/C00207.md @@ -11,10 +11,10 @@ * **Belongs to tactic stage**: TA02 -| Actors | Sectors | -| ------ | ------- | -| [A018 government ](../actors/A018.md) | Government | -| [A033 social media platform owner](../actors/A033.md) | Social Media Company | +| Actor types | Sectors | +| ----------- | ------- | +| [A018 government ](../actortypes/A018.md) | Government | +| [A033 social media platform owner](../actortypes/A033.md) | Social Media Company | diff --git a/counters/C00211.md b/counters/C00211.md index f13d4ba..a05d549 100644 --- a/counters/C00211.md +++ b/counters/C00211.md @@ -17,8 +17,8 @@ https://internews.org/story/using-comedy-and-social-media-educate-disinformation * **Belongs to tactic stage**: TA09 -| Actors | Sectors | -| ------ | ------- | +| Actor types | Sectors | +| ----------- | ------- | diff --git a/counters/C00212.md b/counters/C00212.md index d867e78..11b1f09 100644 --- a/counters/C00212.md +++ b/counters/C00212.md @@ -11,10 +11,10 @@ * **Belongs to tactic stage**: TA01 -| Actors | Sectors | -| ------ | ------- | -| [A006 educator](../actors/A006.md) | Civil Society | -| [A018 government ](../actors/A018.md) | Government | +| Actor types | Sectors | +| ----------- | ------- | +| [A006 educator](../actortypes/A006.md) | Civil Society | +| [A018 government ](../actortypes/A018.md) | Government | diff --git a/counters/C00216.md b/counters/C00216.md index 46bffa8..31133c2 100644 --- a/counters/C00216.md +++ b/counters/C00216.md @@ -11,9 +11,9 @@ * **Belongs to tactic stage**: TA05 -| Actors | Sectors | -| ------ | ------- | -| [A023 adtech provider](../actors/A023.md) | Other Tech Company | +| Actor types | Sectors | +| ----------- | ------- | +| [A023 adtech provider](../actortypes/A023.md) | Other Tech Company | diff --git a/counters/C00219.md b/counters/C00219.md index 254d32c..12e4935 100644 --- a/counters/C00219.md +++ b/counters/C00219.md @@ -2,7 +2,7 @@ * **Summary**: Steganography. Adding date, signatures etc to stop issue of photo relabelling etc. -* **Playbooks**: Add date and source to images +* **Playbooks**: * **Metatechnique**: M003 - daylight @@ -11,8 +11,8 @@ * **Belongs to tactic stage**: TA06 -| Actors | Sectors | -| ------ | ------- | +| Actor types | Sectors | +| ----------- | ------- | diff --git a/counters/C00220.md b/counters/C00220.md index aab95a6..7fff2c2 100644 --- a/counters/C00220.md +++ b/counters/C00220.md @@ -1,6 +1,6 @@ # Counter C00220: Develop a monitoring and intelligence plan -* **Summary**: +* **Summary**: Create a plan for misinformation and disinformation response, before it's needed. Include connections / contacts needed, expected counteremessages etc. * **Playbooks**: @@ -11,8 +11,8 @@ * **Belongs to tactic stage**: TA01 -| Actors | Sectors | -| ------ | ------- | +| Actor types | Sectors | +| ----------- | ------- | diff --git a/counters/C00221.md b/counters/C00221.md index 742118c..0a0e665 100644 --- a/counters/C00221.md +++ b/counters/C00221.md @@ -11,8 +11,8 @@ * **Belongs to tactic stage**: TA01 -| Actors | Sectors | -| ------ | ------- | +| Actor types | Sectors | +| ----------- | ------- | diff --git a/counters/C00222.md b/counters/C00222.md index 510ce96..d893627 100644 --- a/counters/C00222.md +++ b/counters/C00222.md @@ -1,6 +1,6 @@ # Counter C00222: Tabletop simulations -* **Summary**: +* **Summary**: Simulate misinformation and disinformation campaigns, and responses to them, before campaigns happen. * **Playbooks**: @@ -11,8 +11,8 @@ * **Belongs to tactic stage**: TA02 -| Actors | Sectors | -| ------ | ------- | +| Actor types | Sectors | +| ----------- | ------- | diff --git a/counters/C00223.md b/counters/C00223.md index e927160..fd9b855 100644 --- a/counters/C00223.md +++ b/counters/C00223.md @@ -1,6 +1,6 @@ # Counter C00223: Strengthen Trust in social media platforms -* **Summary**: +* **Summary**: Improve trust in the misinformation responses from social media and other platforms. Examples include creating greater transparancy on their actions and algorithms. * **Playbooks**: @@ -11,8 +11,8 @@ * **Belongs to tactic stage**: TA01 -| Actors | Sectors | -| ------ | ------- | +| Actor types | Sectors | +| ----------- | ------- | diff --git a/counters_index.md b/counters_index.md index 92c5e91..9525f6c 100644 --- a/counters_index.md +++ b/counters_index.md @@ -2,7 +2,7 @@ - + @@ -20,7 +20,7 @@ - + @@ -28,7 +28,7 @@ - + @@ -36,7 +36,7 @@ - + @@ -44,7 +44,7 @@ - + @@ -52,7 +52,7 @@ - + @@ -76,7 +76,7 @@ - + @@ -84,7 +84,7 @@ - + @@ -100,7 +100,7 @@ - + @@ -150,7 +150,7 @@ This could be used to adjust upvote weight via a trust factor of people and orga - + @@ -207,7 +207,7 @@ https://www.isdglobal.org/wp-content/uploads/2016/06/Counter-narrative-Handbook_ - + @@ -215,7 +215,7 @@ https://www.isdglobal.org/wp-content/uploads/2016/06/Counter-narrative-Handbook_ - + @@ -223,7 +223,7 @@ https://www.isdglobal.org/wp-content/uploads/2016/06/Counter-narrative-Handbook_ - + @@ -231,7 +231,7 @@ https://www.isdglobal.org/wp-content/uploads/2016/06/Counter-narrative-Handbook_ - + @@ -263,7 +263,7 @@ https://www.isdglobal.org/wp-content/uploads/2016/06/Counter-narrative-Handbook_ - + @@ -271,7 +271,7 @@ https://www.isdglobal.org/wp-content/uploads/2016/06/Counter-narrative-Handbook_ - + @@ -287,7 +287,7 @@ https://www.isdglobal.org/wp-content/uploads/2016/06/Counter-narrative-Handbook_ - + @@ -295,7 +295,7 @@ https://www.isdglobal.org/wp-content/uploads/2016/06/Counter-narrative-Handbook_ - + @@ -319,7 +319,7 @@ https://www.isdglobal.org/wp-content/uploads/2016/06/Counter-narrative-Handbook_ - + @@ -327,7 +327,7 @@ https://www.isdglobal.org/wp-content/uploads/2016/06/Counter-narrative-Handbook_ - + @@ -351,7 +351,7 @@ T0046 - Search Engine Optimization: Sub-optimal website performance affect its s - + @@ -359,7 +359,7 @@ T0046 - Search Engine Optimization: Sub-optimal website performance affect its s - + @@ -375,7 +375,7 @@ T0046 - Search Engine Optimization: Sub-optimal website performance affect its s - @@ -384,7 +384,7 @@ T0046 - Search Engine Optimization: Sub-optimal website performance affect its s - + @@ -392,7 +392,7 @@ T0046 - Search Engine Optimization: Sub-optimal website performance affect its s - + @@ -400,7 +400,7 @@ T0046 - Search Engine Optimization: Sub-optimal website performance affect its s - + @@ -416,7 +416,7 @@ T0046 - Search Engine Optimization: Sub-optimal website performance affect its s - + @@ -476,7 +476,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co - + @@ -516,7 +516,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co - + @@ -524,7 +524,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co - + @@ -532,7 +532,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co - + @@ -540,7 +540,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co - + @@ -548,7 +548,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co - + @@ -571,8 +571,8 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co - - + + @@ -596,7 +596,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co - + @@ -612,15 +612,15 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co - + - - + + @@ -628,7 +628,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co - + @@ -636,7 +636,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co - + @@ -644,7 +644,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co - + @@ -660,15 +660,15 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co - + - - + + @@ -676,7 +676,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co - + @@ -684,7 +684,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co - + @@ -700,7 +700,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co - + @@ -708,7 +708,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co - + @@ -716,7 +716,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co - + @@ -724,7 +724,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co - + @@ -732,7 +732,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co - + @@ -748,7 +748,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co - + @@ -756,7 +756,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co - + @@ -780,7 +780,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co - + @@ -788,7 +788,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co - + @@ -835,8 +835,8 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co - - + + @@ -868,7 +868,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co - + @@ -876,7 +876,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co - + @@ -996,7 +996,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co - + @@ -1060,7 +1060,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co - + @@ -1122,7 +1122,7 @@ https://internews.org/story/using-comedy-and-social-media-educate-disinformation - + @@ -1138,7 +1138,7 @@ https://internews.org/story/using-comedy-and-social-media-educate-disinformation - + @@ -1146,7 +1146,7 @@ https://internews.org/story/using-comedy-and-social-media-educate-disinformation - + diff --git a/detections_index.md b/detections_index.md index e684c25..1c705f5 100644 --- a/detections_index.md +++ b/detections_index.md @@ -2,7 +2,7 @@
idamitt_id name summary metatechnique
C00006 CensorshipAlter and/or block the publication/dissemination of adversary controlled informationAlter and/or block the publication/dissemination of information controlled by disinformation creators. Not recommended. M005 - removal TA01 Strategic Planning D2 Deny
C00008 Create shared fact-checking databaseSnopes is best-known exampleShare fact-checking resources - tips, responses, countermessages, across respose groups. Snopes is best-known example of fact-checking sites. M006 - scoring TA01 Strategic Planning D4 Degrade
C00009 Educate high profile influencers on best practicesFind online influencers. Provide training in the mechanisms of disinformation, how to spot campaigns, and/or how to contribute to responses by countermessaging, boosting information sites etc. M001 - resilience TA02 Objective Planning D2 Deny
C00010 Enhanced privacy regulation for social mediaPrivacy standardsImplement stronger privacy standards, to reduce the ability to microtarget community members. M004 - friction TA01 Strategic Planning D2 Deny
C00011 Media literacy. Games to identify fake newsCreate and use games to show people the mechanics of disinformation, and how to counter them. M001 - resilience TA02 Objective Planning D2 Deny
C00014 Real-time updates to fact-checking databaseexisting examples at Buzzfeed and Fema, especially during disastersUpdate fact-checking databases and resources in real time. Especially import for time-limited events like natural disasters. Existing examples at Buzzfeed and Fema. M006 - scoring TA06 Develop Content D4 Degrade
C00017 Repair broken social connectionsFor example, use a media campaign to promote in-group to out-group in person communication / activities . Technique could be in terms of forcing a reality-check by talking to people instead of reading about bogeymen. Technique could be in terms of forcing a reality-check by talking to people instead of reading about bogeymen. M010 - countermessaging TA01 Strategic Planning D3 Disrupt
C00021 Encourage in-person communicationEncourage offline communication M001 - resilience TA01 Strategic Planning D4 Degrade
C00029 Create fake website to issue counter narrative and counter narrative through physical merchandiseCreate websites in disinformation voids - spaces where people are looking for known disinformation. M002 - diversion TA02 Objective Planning D3 Disrupt
C00042 Address truth contained in narrativesFocus on and boost truths in misinformation narratives, removing misinformation from them. M010 - countermessaging TA03 Develop People D3 Disrupt
C00044 Keep people from posting to social media immediatelyMy interpretation is that this is method would be used to slow down activities or force a small delay between posts or replies to new posts.Use this to slow down activities or force a small delay between posts or replies to new posts. M004 - friction TA03 Develop People D3 Disrupt
C00046 Marginalise and discredit extremist groupsReduce the credibility of extremist groups posting misinformation. M013 - targeting TA03 Develop People D4 Degrade
C00047 Coordinated inauthenticsFlood disinformation spaces with obviously fake content, to dilute core misinformation narratives in them. M008 - data pollution TA04 Develop Networks D5 Deceive
C00053 Delete old accounts / Remove unused social media accountsremove or remove access to (e.g. stop the ability to update) old social media accounts, to reduce the pool of accounts available for takeover, botnets etc. M012 - cleaning TA04 Develop Networks D4 Degrade
C00056 Get off social mediaWe don't expect this to workEncourage people to leave spcial media. We don't expect this to work M004 - friction TA04 Develop Networks D2 Deny
C00059 Verification of project before posting (counters funding campaigns)third-party verification of projects posting funding campaigns before those campaigns can be posted. M011 - verification TA04 Develop Networks D2 Deny
C00060 Legal action against for-profit engagement factoriesTake legal action against for-profit "factories" creating misinformation. M013 - targeting TA02 Objective Planning D3 Disrupt
C00066 Co-opt a hashtag and drown it out (hijack it back)Flood a disinformation-related hashtag with other content. Examples include kPop stans flooding extremist hashtags with pop videos and images. M009 - dilution TA05 Microtargeting D3 Disrupt
C00067 Denigrate the recipient/ project (of online funding)Reduce the credibility of groups behind misinformation-linked funding campaigns. M013 - targeting TA03 Develop People D3 Disrupt
C00071 Block source of pollutionBlock websites, accounts, groups etc connected to misinformation and other information pollution. M005 - removal TA06 Develop Content D2 Deny
C00072 Remove non-relevant content from special interest groups – not recommendedCheck special-interest groups (e.g. medical, knitting) for unrelated and misinformation-linked content, and remove it. M005 - removal TA06 Develop Content D2 Deny
C00074 Identify and delete or rate limit identical content +Search for repeated content (text, images, videos etc); check for misinformation, rate-limit or delete repeats. M012 - cleaning TA06 Develop Content
C00075 normalise languagenormalise the language around disinformation and misinformation; give people the words for artifact and effect types. M010 - countermessaging TA06 Develop Content D2 Deny
C00076 Prohibit images in political discourse channelsMake political discussion channels text-only. M005 - removal TA06 Develop Content D2 Deny
C00077 Active defence: run TA03 "develop people” - not recommendedDevelop networks of communities and influencers around counter-misinformation. Match them to misinformation creators M013 - targeting TA03 Develop People D3 Disrupt
C00080 Create competing narrativeCould also be degradeCreate counternarratives, or narratives that compete in the same spaces as misinformation narratives. Could also be degrade M002 - diversion TA06 Develop Content D3 Disrupt
C00090 Fake engagement systemCreate honeypots for misinformation creators to engage with, and reduce the resources they have available for misinformation campaigns. M002 - diversion TA07 Channel Selection D5 Deceive
C00096 Strengthen institutions that are always truth tellersIncrease credibility, visibility, and reach of positive influencers in the information space. M006 - scoring TA01 Strategic Planning D7 Deter
C00097 Require use of verified identities to contribute to poll or commentReduce poll flooding by online taking comments or poll entries from verified accounts. M004 - friction TA07 Channel Selection D2 Deny
C00098 Revocation of allowlisted or "verified" statusremove blue checkmarks etc from known misinformation accounts. M004 - friction TA07 Channel Selection D2 Deny
C00099 Strengthen verification methodsImprove content veerification methods available to groups, individuals etc. M004 - friction TA07 Channel Selection D2 Deny
C00100 Hashtag jackingPost large volumes of unrelated content on known misinformation hashtags M002 - diversion TA08 Pump Priming D3 Disrupt
C00105Buy more advertising than the adversary to shift influence and algorithmsBuy more advertising than misinformation creatorsShift influence and algorithms by posting more adverts into spaces than misinformation creators. M009 - dilution TA07 Channel Selection D3 Disrupt
C00109 Dampen Emotional ReactionReduce emotional responses to misinformation through calming messages, etc. M001 - resilience TA09 Exposure D3 Disrupt
C00112 "Prove they are not an op!"Challenge misinformation creators to prove they're not an information operation. M004 - friction TA08 Pump Priming D2 Deny
C00113Debunk and defuse a fake expert / credentials. Attack audience quality of fake expertDebunk and defuse a fake expert / credentials.Debunk fake experts, their credentials, and potentially also their audience quality M003 - daylight TA08 Pump Priming D2 Deny
C00114 Don't engage with payloadsStop passing on misinformation M004 - friction TA08 Pump Priming D2 Deny
C00115 Expose actor and intentionsDebunk misinformation creators and posters. M003 - daylight TA08 Pump Priming D2 Deny
C00116 Provide proof of involvementBuild and post information about groups etc's involvement in misinformation incidents. M003 - daylight TA08 Pump Priming D2 Deny
C00118 Repurpose images with new textAdd countermessage text to iamges used in misinformation incidents. M010 - countermessaging TA08 Pump Priming D4 Degrade
C00119Engage payload and debunk. Provide link to facts. Might be okay. Engage payload and debunk. debunk misinformation content. Provide link to facts. M010 - countermessaging TA08 Pump Priming D7 Deter
C00120 Open dialogue about design of platforms to produce different outcomesRedesign platforms and algorithms to reduce the effectiveness of disinformation M007 - metatechnique TA08 Pump Priming D7 Deter
C00121 Tool transparency and literacy for channels people follow. Make algorithms in platforms explainable, and visible to people using those platforms. M001 - resilience TA08 Pump Priming D7 Deter
C00123 Remove or rate limit botnetsreduce the visibility of known botnets online. M004 - friction TA09 Exposure D3 Disrupt
C00124 Don't feed the trollsDon't engage with individuals relaying misinformation. M004 - friction TA09 Exposure D3 Disrupt
C00125 PrebunkingProduce material in advance of misinformation incidents, by anticipating the narratives used in them, and debunking them. M001 - resilience TA09 Exposure D3 Disrupt
C00126 Social media amber alertCreate an alert system around disinformation and misinformation artifacts, narratives, and incidents M003 - daylight TA09 Exposure D3 Disrupt
C00128 Create friction by marking content with ridicule or other "decelerants"Repost or comment on misinformation artifacts, using ridicule or other content to reduce the likelihood of reposting. M009 - dilution TA09 Exposure D3 Disrupt
C00130 Mentorship: elders, youth, credit. Learn vicariously.Train local influencers in countering misinformation. M001 - resilience TA05 Microtargeting D7 Deter
C00131 Seize and analyse botnet serversTake botnet servers offline by seizing them. M005 - removal TA11 Persistence D2 Deny
C00136 Microtarget most likely targets then send them countermessagesFind communities likely to be targetted by misinformation campaigns, and send them countermessages or pointers to information sources. M010 - countermessaging TA08 Pump Priming D3 Disrupt
C00138 Spam domestic actors with lawsuitsFile multiple lawsuits against known misinformation creators and posters, to distract them from disinformation creation. M014 - reduce resources TA11 Persistence D3 Disrupt
C00147Make amplification of social media ports expire (e.g. can't like/ retweet after n days)Make amplification of social media posts expire (e.g. can't like/ retweet after n days)Stop new community activity (likes, comments) on old social media posts. M004 - friction TA09 Exposure D3 Disrupt
C00154 Ask media not to report false informationTrain media to spot and respond to misinformation, and ask them not to post or transmit misinformation they've found. M005 - removal TA08 Pump Priming D2 Deny
C00155 Ban incident actors from funding sitesBan misinformation creators and posters from funding sites M005 - removal TA03 Develop People D2 Deny
C00184 Media exposurehighlight misinformation activities and actors in media M003 - daylight TA08 Pump Priming D4 Degrade
C00203 Stop offering press credentials to propaganda outletsRemove access to official press events from known misinformation actors. M004 - friction TA04 Develop Networks D3 Disrupt
C00220 Develop a monitoring and intelligence planCreate a plan for misinformation and disinformation response, before it's needed. Include connections / contacts needed, expected counteremessages etc. M007 - metatechnique TA01 Strategic Planning D3 Disrupt
C00222 Tabletop simulationsSimulate misinformation and disinformation campaigns, and responses to them, before campaigns happen. M007 - metatechnique TA02 Objective Planning D3 Disrupt
C00223 Strengthen Trust in social media platformsImprove trust in the misinformation responses from social media and other platforms. Examples include creating greater transparancy on their actions and algorithms. M001 - resilience TA01 Strategic Planning D3 Disrupt
- + @@ -12,7 +12,7 @@ - + diff --git a/incidents_index.md b/incidents_index.md index 22c9283..ece2eda 100644 --- a/incidents_index.md +++ b/incidents_index.md @@ -2,12 +2,12 @@
idamitt_id name summary metatechnique
F00001 Analyse aborted / failed campaignsExamine failed campaigns. How did they fail? Can we create useful activities that increase these failures? TA01 Strategic Planning D1 Detect
- + - - - + + + diff --git a/metatechniques/M003.md b/metatechniques/M003.md index 1af8872..9073a1d 100644 --- a/metatechniques/M003.md +++ b/metatechniques/M003.md @@ -5,7 +5,7 @@ | Counters | Response types | | -------- | -------------- | -| [C00113 Debunk and defuse a fake expert / credentials. Attack audience quality of fake expert](../counters/C00113.md) | D2 Deny | +| [C00113 Debunk and defuse a fake expert / credentials.](../counters/C00113.md) | D2 Deny | | [C00115 Expose actor and intentions](../counters/C00115.md) | D2 Deny | | [C00116 Provide proof of involvement](../counters/C00116.md) | D2 Deny | | [C00019 Reduce effect of division-enablers](../counters/C00019.md) | D3 Disrupt | diff --git a/metatechniques/M004.md b/metatechniques/M004.md index e01fe70..c7eaf10 100644 --- a/metatechniques/M004.md +++ b/metatechniques/M004.md @@ -20,7 +20,7 @@ | [C00123 Remove or rate limit botnets](../counters/C00123.md) | D3 Disrupt | | [C00124 Don't feed the trolls](../counters/C00124.md) | D3 Disrupt | | [C00139 Weaponise youtube content matrices](../counters/C00139.md) | D3 Disrupt | -| [C00147 Make amplification of social media ports expire (e.g. can't like/ retweet after n days)](../counters/C00147.md) | D3 Disrupt | +| [C00147 Make amplification of social media posts expire (e.g. can't like/ retweet after n days)](../counters/C00147.md) | D3 Disrupt | | [C00203 Stop offering press credentials to propaganda outlets](../counters/C00203.md) | D3 Disrupt | | [C00101 Create friction by rate-limiting engagement](../counters/C00101.md) | D4 Degrade | | [C00142 Platform adds warning label and decision point when sharing content](../counters/C00142.md) | D4 Degrade | diff --git a/metatechniques/M009.md b/metatechniques/M009.md index 00d9ced..219220e 100644 --- a/metatechniques/M009.md +++ b/metatechniques/M009.md @@ -7,7 +7,7 @@ | -------- | -------------- | | [C00031 Dilute the core narrative - create multiple permutations, target / amplify](../counters/C00031.md) | D3 Disrupt | | [C00066 Co-opt a hashtag and drown it out (hijack it back)](../counters/C00066.md) | D3 Disrupt | -| [C00105 Buy more advertising than the adversary to shift influence and algorithms](../counters/C00105.md) | D3 Disrupt | +| [C00105 Buy more advertising than misinformation creators](../counters/C00105.md) | D3 Disrupt | | [C00128 Create friction by marking content with ridicule or other "decelerants"](../counters/C00128.md) | D3 Disrupt | | [C00087 Make more noise than the disinformation](../counters/C00087.md) | D4 Degrade | | [C00178 Fill information voids with non-disinformation content](../counters/C00178.md) | D4 Degrade | diff --git a/metatechniques/M010.md b/metatechniques/M010.md index 85619a4..7fd3516 100644 --- a/metatechniques/M010.md +++ b/metatechniques/M010.md @@ -18,7 +18,7 @@ | [C00062 Free open library sources worldwide](../counters/C00062.md) | D4 Degrade | | [C00117 Downgrade / de-amplify so message is seen by fewer people](../counters/C00117.md) | D4 Degrade | | [C00118 Repurpose images with new text](../counters/C00118.md) | D4 Degrade | -| [C00119 Engage payload and debunk. Provide link to facts. ](../counters/C00119.md) | D7 Deter | +| [C00119 Engage payload and debunk. ](../counters/C00119.md) | D7 Deter | diff --git a/metatechniques_index.md b/metatechniques_index.md index 8fd9ebc..7485e2b 100644 --- a/metatechniques_index.md +++ b/metatechniques_index.md @@ -2,7 +2,7 @@
idamitt_id name typeYear StartedTo countryFound viayear_startedto_countryfound_via
I00001
- + diff --git a/phases_index.md b/phases_index.md index 709b8d4..78226fa 100644 --- a/phases_index.md +++ b/phases_index.md @@ -2,7 +2,7 @@
idamitt_id name summary
- + diff --git a/responsetype_index.md b/responsetype_index.md index 4278758..fe66d01 100644 --- a/responsetype_index.md +++ b/responsetype_index.md @@ -2,7 +2,7 @@
idamitt_id name summary
- + diff --git a/tactics/TA01.md b/tactics/TA01.md index c0a1080..4a364fd 100644 --- a/tactics/TA01.md +++ b/tactics/TA01.md @@ -11,6 +11,7 @@ | [TK0001 Goal setting](../tasks/TK0001.md) | | [TK0002 Population research / audience analysis (centre of gravity)](../tasks/TK0002.md) | | [TK0003 Campaign design (objective design)](../tasks/TK0003.md) | +| [TK0031 OPSEC for TA01](../tasks/TK0031.md) | diff --git a/tactics/TA02.md b/tactics/TA02.md index e451eb4..507fc03 100644 --- a/tactics/TA02.md +++ b/tactics/TA02.md @@ -18,6 +18,7 @@ | [TK0007 Decide on techniques (4Ds etc)](../tasks/TK0007.md) | | [TK0008 Create subnarratives](../tasks/TK0008.md) | | [TK0009 4chan/8chan coordinating content](../tasks/TK0009.md) | +| [TK0032 OPSEC for TA02](../tasks/TK0032.md) | diff --git a/tactics/TA03.md b/tactics/TA03.md index b9b536c..9b3629d 100644 --- a/tactics/TA03.md +++ b/tactics/TA03.md @@ -12,6 +12,7 @@ | [TK0011 Recruit contractors](../tasks/TK0011.md) | | [TK0012 Recruit partisans](../tasks/TK0012.md) | | [TK0013 find influencers](../tasks/TK0013.md) | +| [TK0033 OPSEC for TA03](../tasks/TK0033.md) | diff --git a/tactics/TA04.md b/tactics/TA04.md index 8b60ff5..907dd6a 100644 --- a/tactics/TA04.md +++ b/tactics/TA04.md @@ -11,6 +11,7 @@ | [TK0014 Network building](../tasks/TK0014.md) | | [TK0015 Network infiltration](../tasks/TK0015.md) | | [TK0016 identify targets - susceptible audience members in networks](../tasks/TK0016.md) | +| [TK0034 OPSEC for TA04](../tasks/TK0034.md) | diff --git a/tactics/TA05.md b/tactics/TA05.md index 8b435be..c6cf694 100644 --- a/tactics/TA05.md +++ b/tactics/TA05.md @@ -8,6 +8,7 @@ | Tasks | | ----- | +| [TK0035 OPSEC for TA05](../tasks/TK0035.md) | diff --git a/tactics/TA06.md b/tactics/TA06.md index de896a4..cae8fee 100644 --- a/tactics/TA06.md +++ b/tactics/TA06.md @@ -10,6 +10,7 @@ | ----- | | [TK0017 content creation](../tasks/TK0017.md) | | [TK0018 content appropriation](../tasks/TK0018.md) | +| [TK0036 OPSEC for TA06](../tasks/TK0036.md) | diff --git a/tactics/TA07.md b/tactics/TA07.md index d4949d7..9e3ecbe 100644 --- a/tactics/TA07.md +++ b/tactics/TA07.md @@ -8,6 +8,7 @@ | Tasks | | ----- | +| [TK0037 OPSEC for TA07](../tasks/TK0037.md) | @@ -32,7 +33,7 @@ | [C00098 Revocation of allowlisted or "verified" status](../counters/C00098.md) | D2 Deny | | [C00099 Strengthen verification methods](../counters/C00099.md) | D2 Deny | | [C00195 Redirect searches away from disinformation or extremist content ](../counters/C00195.md) | D2 Deny | -| [C00105 Buy more advertising than the adversary to shift influence and algorithms](../counters/C00105.md) | D3 Disrupt | +| [C00105 Buy more advertising than misinformation creators](../counters/C00105.md) | D3 Disrupt | | [C00101 Create friction by rate-limiting engagement](../counters/C00101.md) | D4 Degrade | | [C00090 Fake engagement system](../counters/C00090.md) | D5 Deceive | | [C00103 Create a bot that engages / distract trolls](../counters/C00103.md) | D5 Deceive | diff --git a/tactics/TA08.md b/tactics/TA08.md index 93140c2..6e2a5db 100644 --- a/tactics/TA08.md +++ b/tactics/TA08.md @@ -10,6 +10,7 @@ | ----- | | [TK0019 anchor trust / credibility](../tasks/TK0019.md) | | [TK0020 insert themes](../tasks/TK0020.md) | +| [TK0038 OPSEC for TA08](../tasks/TK0038.md) | @@ -29,7 +30,7 @@ | Counters | Response types | | -------- | -------------- | | [C00112 "Prove they are not an op!"](../counters/C00112.md) | D2 Deny | -| [C00113 Debunk and defuse a fake expert / credentials. Attack audience quality of fake expert](../counters/C00113.md) | D2 Deny | +| [C00113 Debunk and defuse a fake expert / credentials.](../counters/C00113.md) | D2 Deny | | [C00114 Don't engage with payloads](../counters/C00114.md) | D2 Deny | | [C00115 Expose actor and intentions](../counters/C00115.md) | D2 Deny | | [C00116 Provide proof of involvement](../counters/C00116.md) | D2 Deny | @@ -40,7 +41,7 @@ | [C00117 Downgrade / de-amplify so message is seen by fewer people](../counters/C00117.md) | D4 Degrade | | [C00118 Repurpose images with new text](../counters/C00118.md) | D4 Degrade | | [C00184 Media exposure](../counters/C00184.md) | D4 Degrade | -| [C00119 Engage payload and debunk. Provide link to facts. ](../counters/C00119.md) | D7 Deter | +| [C00119 Engage payload and debunk. ](../counters/C00119.md) | D7 Deter | | [C00120 Open dialogue about design of platforms to produce different outcomes](../counters/C00120.md) | D7 Deter | | [C00121 Tool transparency and literacy for channels people follow. ](../counters/C00121.md) | D7 Deter | diff --git a/tactics/TA09.md b/tactics/TA09.md index 0af07a1..bcd449f 100644 --- a/tactics/TA09.md +++ b/tactics/TA09.md @@ -10,6 +10,7 @@ | ----- | | [TK0021 deamplification (suppression, censoring)](../tasks/TK0021.md) | | [TK0022 amplification](../tasks/TK0022.md) | +| [TK0039 OPSEC for TA09](../tasks/TK0039.md) | @@ -39,7 +40,7 @@ | [C00125 Prebunking](../counters/C00125.md) | D3 Disrupt | | [C00126 Social media amber alert](../counters/C00126.md) | D3 Disrupt | | [C00128 Create friction by marking content with ridicule or other "decelerants"](../counters/C00128.md) | D3 Disrupt | -| [C00147 Make amplification of social media ports expire (e.g. can't like/ retweet after n days)](../counters/C00147.md) | D3 Disrupt | +| [C00147 Make amplification of social media posts expire (e.g. can't like/ retweet after n days)](../counters/C00147.md) | D3 Disrupt | | [C00200 Respected figure (influencer) disavows misinfo](../counters/C00200.md) | D3 Disrupt | | [C00211 Use humorous counter-narratives](../counters/C00211.md) | D3 Disrupt | diff --git a/tactics/TA10.md b/tactics/TA10.md index 6eebbac..5b60221 100644 --- a/tactics/TA10.md +++ b/tactics/TA10.md @@ -8,6 +8,7 @@ | Tasks | | ----- | +| [TK0040 OPSEC for TA10](../tasks/TK0040.md) | diff --git a/tactics/TA11.md b/tactics/TA11.md index a7e362d..8aa488e 100644 --- a/tactics/TA11.md +++ b/tactics/TA11.md @@ -13,6 +13,7 @@ | [TK0025 advocacy/ zealotry](../tasks/TK0025.md) | | [TK0026 conversion](../tasks/TK0026.md) | | [TK0027 keep recruiting/prospecting](../tasks/TK0027.md) | +| [TK0041 OPSEC for TA11](../tasks/TK0041.md) | diff --git a/tactics/TA12.md b/tactics/TA12.md index 8b8e3b0..1bcd3e2 100644 --- a/tactics/TA12.md +++ b/tactics/TA12.md @@ -11,6 +11,7 @@ | [TK0028 evaluation](../tasks/TK0028.md) | | [TK0029 post-mortem](../tasks/TK0029.md) | | [TK0030 after-action analysis](../tasks/TK0030.md) | +| [TK0042 OPSEC for TA12](../tasks/TK0042.md) | diff --git a/tactics_index.md b/tactics_index.md index 8fa4a9a..eb02edd 100644 --- a/tactics_index.md +++ b/tactics_index.md @@ -2,7 +2,7 @@
idamitt_id name summary
- + diff --git a/tasks/TK0031.md b/tasks/TK0031.md new file mode 100644 index 0000000..9bea86e --- /dev/null +++ b/tasks/TK0031.md @@ -0,0 +1,7 @@ +# Task TK0031: OPSEC for TA01 + +* **Summary:** + +* **Belongs to tactic stage:** TA01 + +DO NOT EDIT ABOVE THIS LINE - PLEASE ADD NOTES BELOW \ No newline at end of file diff --git a/tasks/TK0032.md b/tasks/TK0032.md new file mode 100644 index 0000000..44599ad --- /dev/null +++ b/tasks/TK0032.md @@ -0,0 +1,7 @@ +# Task TK0032: OPSEC for TA02 + +* **Summary:** + +* **Belongs to tactic stage:** TA02 + +DO NOT EDIT ABOVE THIS LINE - PLEASE ADD NOTES BELOW \ No newline at end of file diff --git a/tasks/TK0033.md b/tasks/TK0033.md new file mode 100644 index 0000000..4eef41d --- /dev/null +++ b/tasks/TK0033.md @@ -0,0 +1,7 @@ +# Task TK0033: OPSEC for TA03 + +* **Summary:** + +* **Belongs to tactic stage:** TA03 + +DO NOT EDIT ABOVE THIS LINE - PLEASE ADD NOTES BELOW \ No newline at end of file diff --git a/tasks/TK0034.md b/tasks/TK0034.md new file mode 100644 index 0000000..6c5e50d --- /dev/null +++ b/tasks/TK0034.md @@ -0,0 +1,7 @@ +# Task TK0034: OPSEC for TA04 + +* **Summary:** + +* **Belongs to tactic stage:** TA04 + +DO NOT EDIT ABOVE THIS LINE - PLEASE ADD NOTES BELOW \ No newline at end of file diff --git a/tasks/TK0035.md b/tasks/TK0035.md new file mode 100644 index 0000000..65f672c --- /dev/null +++ b/tasks/TK0035.md @@ -0,0 +1,7 @@ +# Task TK0035: OPSEC for TA05 + +* **Summary:** + +* **Belongs to tactic stage:** TA05 + +DO NOT EDIT ABOVE THIS LINE - PLEASE ADD NOTES BELOW \ No newline at end of file diff --git a/tasks/TK0036.md b/tasks/TK0036.md new file mode 100644 index 0000000..ccdf56e --- /dev/null +++ b/tasks/TK0036.md @@ -0,0 +1,7 @@ +# Task TK0036: OPSEC for TA06 + +* **Summary:** + +* **Belongs to tactic stage:** TA06 + +DO NOT EDIT ABOVE THIS LINE - PLEASE ADD NOTES BELOW \ No newline at end of file diff --git a/tasks/TK0037.md b/tasks/TK0037.md new file mode 100644 index 0000000..d206e42 --- /dev/null +++ b/tasks/TK0037.md @@ -0,0 +1,7 @@ +# Task TK0037: OPSEC for TA07 + +* **Summary:** + +* **Belongs to tactic stage:** TA07 + +DO NOT EDIT ABOVE THIS LINE - PLEASE ADD NOTES BELOW \ No newline at end of file diff --git a/tasks/TK0038.md b/tasks/TK0038.md new file mode 100644 index 0000000..a870cae --- /dev/null +++ b/tasks/TK0038.md @@ -0,0 +1,7 @@ +# Task TK0038: OPSEC for TA08 + +* **Summary:** + +* **Belongs to tactic stage:** TA08 + +DO NOT EDIT ABOVE THIS LINE - PLEASE ADD NOTES BELOW \ No newline at end of file diff --git a/tasks/TK0039.md b/tasks/TK0039.md new file mode 100644 index 0000000..d491130 --- /dev/null +++ b/tasks/TK0039.md @@ -0,0 +1,7 @@ +# Task TK0039: OPSEC for TA09 + +* **Summary:** + +* **Belongs to tactic stage:** TA09 + +DO NOT EDIT ABOVE THIS LINE - PLEASE ADD NOTES BELOW \ No newline at end of file diff --git a/tasks/TK0040.md b/tasks/TK0040.md new file mode 100644 index 0000000..fd573af --- /dev/null +++ b/tasks/TK0040.md @@ -0,0 +1,7 @@ +# Task TK0040: OPSEC for TA10 + +* **Summary:** + +* **Belongs to tactic stage:** TA10 + +DO NOT EDIT ABOVE THIS LINE - PLEASE ADD NOTES BELOW \ No newline at end of file diff --git a/tasks/TK0041.md b/tasks/TK0041.md new file mode 100644 index 0000000..f16046f --- /dev/null +++ b/tasks/TK0041.md @@ -0,0 +1,7 @@ +# Task TK0041: OPSEC for TA11 + +* **Summary:** + +* **Belongs to tactic stage:** TA11 + +DO NOT EDIT ABOVE THIS LINE - PLEASE ADD NOTES BELOW \ No newline at end of file diff --git a/tasks/TK0042.md b/tasks/TK0042.md new file mode 100644 index 0000000..5e744d5 --- /dev/null +++ b/tasks/TK0042.md @@ -0,0 +1,7 @@ +# Task TK0042: OPSEC for TA12 + +* **Summary:** + +* **Belongs to tactic stage:** TA12 + +DO NOT EDIT ABOVE THIS LINE - PLEASE ADD NOTES BELOW \ No newline at end of file diff --git a/tasks_index.md b/tasks_index.md index 8877165..dad2ea5 100644 --- a/tasks_index.md +++ b/tasks_index.md @@ -2,7 +2,7 @@
idamitt_id name summary phase_id
- + @@ -188,69 +188,75 @@ - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - + + + + + + + +
idamitt_id name summary tactic_idTA12
TK0031OPSEC for TA01 TA01
TK0032OPSEC for TA02 TA02
TK0033OPSEC for TA03 TA03
TK0034OPSEC for TA04 TA04
TK0035OPSEC for TA05 TA05
TK0036OPSEC for TA06 TA06
TK0037OPSEC for TA07 TA07
TK0038OPSEC for TA08 TA08
TK0039OPSEC for TA09 TA09
TK0040OPSEC for TA10 TA10
TK0041OPSEC for TA11 TA11
TK0042OPSEC for TA12 TA12
diff --git a/techniques/T0016.md b/techniques/T0016.md index 034db6f..4214819 100644 --- a/techniques/T0016.md +++ b/techniques/T0016.md @@ -18,7 +18,7 @@ | [C00012 Platform regulation](../counters/C00012.md) | D2 Deny | | [C00073 Inoculate populations through media literacy training](../counters/C00073.md) | D2 Deny | | [C00076 Prohibit images in political discourse channels](../counters/C00076.md) | D2 Deny | -| [C00105 Buy more advertising than the adversary to shift influence and algorithms](../counters/C00105.md) | D3 Disrupt | +| [C00105 Buy more advertising than misinformation creators](../counters/C00105.md) | D3 Disrupt | | [C00106 Click-bait centrist content](../counters/C00106.md) | D3 Disrupt | | [C00107 Content moderation](../counters/C00107.md) | D2 Deny | | [C00122 Content moderation](../counters/C00122.md) | D2 Deny | diff --git a/techniques/T0018.md b/techniques/T0018.md index bb98dcd..4859f4a 100644 --- a/techniques/T0018.md +++ b/techniques/T0018.md @@ -20,7 +20,7 @@ | [C00012 Platform regulation](../counters/C00012.md) | D2 Deny | | [C00065 Reduce political targeting](../counters/C00065.md) | D3 Disrupt | | [C00076 Prohibit images in political discourse channels](../counters/C00076.md) | D2 Deny | -| [C00105 Buy more advertising than the adversary to shift influence and algorithms](../counters/C00105.md) | D3 Disrupt | +| [C00105 Buy more advertising than misinformation creators](../counters/C00105.md) | D3 Disrupt | | [C00107 Content moderation](../counters/C00107.md) | D2 Deny | | [C00122 Content moderation](../counters/C00122.md) | D2 Deny | | [C00129 Use banking to cut off access ](../counters/C00129.md) | D2 Deny | diff --git a/techniques/T0021.md b/techniques/T0021.md index 0eb9296..890a3e7 100644 --- a/techniques/T0021.md +++ b/techniques/T0021.md @@ -27,7 +27,7 @@ | [C00107 Content moderation](../counters/C00107.md) | D2 Deny | | [C00117 Downgrade / de-amplify so message is seen by fewer people](../counters/C00117.md) | D4 Degrade | | [C00118 Repurpose images with new text](../counters/C00118.md) | D4 Degrade | -| [C00119 Engage payload and debunk. Provide link to facts. ](../counters/C00119.md) | D7 Deter | +| [C00119 Engage payload and debunk. ](../counters/C00119.md) | D7 Deter | | [C00122 Content moderation](../counters/C00122.md) | D2 Deny | | [C00176 Improve Coordination amongst stakeholders: public and private](../counters/C00176.md) | D7 Deter | | [C00211 Use humorous counter-narratives](../counters/C00211.md) | D3 Disrupt | diff --git a/techniques/T0022.md b/techniques/T0022.md index 31c7381..5df4ff2 100644 --- a/techniques/T0022.md +++ b/techniques/T0022.md @@ -32,7 +32,7 @@ Example: QAnon: conspiracy theory is an explanation of an event or situation tha | [C00096 Strengthen institutions that are always truth tellers](../counters/C00096.md) | D7 Deter | | [C00107 Content moderation](../counters/C00107.md) | D2 Deny | | [C00117 Downgrade / de-amplify so message is seen by fewer people](../counters/C00117.md) | D4 Degrade | -| [C00119 Engage payload and debunk. Provide link to facts. ](../counters/C00119.md) | D7 Deter | +| [C00119 Engage payload and debunk. ](../counters/C00119.md) | D7 Deter | | [C00122 Content moderation](../counters/C00122.md) | D2 Deny | | [C00125 Prebunking](../counters/C00125.md) | D3 Disrupt | | [C00126 Social media amber alert](../counters/C00126.md) | D3 Disrupt | diff --git a/techniques/T0024.md b/techniques/T0024.md index 3488715..21708bf 100644 --- a/techniques/T0024.md +++ b/techniques/T0024.md @@ -22,7 +22,7 @@ | [C00107 Content moderation](../counters/C00107.md) | D2 Deny | | [C00117 Downgrade / de-amplify so message is seen by fewer people](../counters/C00117.md) | D4 Degrade | | [C00118 Repurpose images with new text](../counters/C00118.md) | D4 Degrade | -| [C00119 Engage payload and debunk. Provide link to facts. ](../counters/C00119.md) | D7 Deter | +| [C00119 Engage payload and debunk. ](../counters/C00119.md) | D7 Deter | | [C00122 Content moderation](../counters/C00122.md) | D2 Deny | | [C00143 (botnet) DMCA takedown requests to waste group time](../counters/C00143.md) | D4 Degrade | | [C00176 Improve Coordination amongst stakeholders: public and private](../counters/C00176.md) | D7 Deter | diff --git a/techniques/T0025.md b/techniques/T0025.md index 4ad409d..7f8b84b 100644 --- a/techniques/T0025.md +++ b/techniques/T0025.md @@ -30,7 +30,7 @@ Example (2019) DFRLab report "Secondary Infektion” highlights incident with ke | [C00096 Strengthen institutions that are always truth tellers](../counters/C00096.md) | D7 Deter | | [C00107 Content moderation](../counters/C00107.md) | D2 Deny | | [C00117 Downgrade / de-amplify so message is seen by fewer people](../counters/C00117.md) | D4 Degrade | -| [C00119 Engage payload and debunk. Provide link to facts. ](../counters/C00119.md) | D7 Deter | +| [C00119 Engage payload and debunk. ](../counters/C00119.md) | D7 Deter | | [C00122 Content moderation](../counters/C00122.md) | D2 Deny | | [C00165 Ensure integrity of official documents](../counters/C00165.md) | D2 Deny | | [C00176 Improve Coordination amongst stakeholders: public and private](../counters/C00176.md) | D7 Deter | diff --git a/techniques/T0026.md b/techniques/T0026.md index 1b24b5a..a2c608c 100644 --- a/techniques/T0026.md +++ b/techniques/T0026.md @@ -25,7 +25,7 @@ | [C00096 Strengthen institutions that are always truth tellers](../counters/C00096.md) | D7 Deter | | [C00107 Content moderation](../counters/C00107.md) | D2 Deny | | [C00117 Downgrade / de-amplify so message is seen by fewer people](../counters/C00117.md) | D4 Degrade | -| [C00119 Engage payload and debunk. Provide link to facts. ](../counters/C00119.md) | D7 Deter | +| [C00119 Engage payload and debunk. ](../counters/C00119.md) | D7 Deter | | [C00122 Content moderation](../counters/C00122.md) | D2 Deny | | [C00176 Improve Coordination amongst stakeholders: public and private](../counters/C00176.md) | D7 Deter | | [C00195 Redirect searches away from disinformation or extremist content ](../counters/C00195.md) | D2 Deny | diff --git a/techniques/T0044.md b/techniques/T0044.md index 240ff18..0cead4d 100644 --- a/techniques/T0044.md +++ b/techniques/T0044.md @@ -28,7 +28,7 @@ Examples: (2019) China formally arrests Canadians Spavor and Kovrig, accuses the | [C00092 Establish a truth teller reputation score for influencers](../counters/C00092.md) | D7 Deter | | [C00117 Downgrade / de-amplify so message is seen by fewer people](../counters/C00117.md) | D4 Degrade | | [C00118 Repurpose images with new text](../counters/C00118.md) | D4 Degrade | -| [C00119 Engage payload and debunk. Provide link to facts. ](../counters/C00119.md) | D7 Deter | +| [C00119 Engage payload and debunk. ](../counters/C00119.md) | D7 Deter | | [C00122 Content moderation](../counters/C00122.md) | D2 Deny | | [C00174 Create a healthier news environment](../counters/C00174.md) | D2 Deny | | [C00184 Media exposure](../counters/C00184.md) | D4 Degrade | diff --git a/techniques/T0045.md b/techniques/T0045.md index 2a7524d..ecaa195 100644 --- a/techniques/T0045.md +++ b/techniques/T0045.md @@ -22,9 +22,9 @@ | [C00097 Require use of verified identities to contribute to poll or comment](../counters/C00097.md) | D2 Deny | | [C00099 Strengthen verification methods](../counters/C00099.md) | D2 Deny | | [C00107 Content moderation](../counters/C00107.md) | D2 Deny | -| [C00113 Debunk and defuse a fake expert / credentials. Attack audience quality of fake expert](../counters/C00113.md) | D2 Deny | +| [C00113 Debunk and defuse a fake expert / credentials.](../counters/C00113.md) | D2 Deny | | [C00117 Downgrade / de-amplify so message is seen by fewer people](../counters/C00117.md) | D4 Degrade | -| [C00119 Engage payload and debunk. Provide link to facts. ](../counters/C00119.md) | D7 Deter | +| [C00119 Engage payload and debunk. ](../counters/C00119.md) | D7 Deter | | [C00122 Content moderation](../counters/C00122.md) | D2 Deny | | [C00125 Prebunking](../counters/C00125.md) | D3 Disrupt | | [C00126 Social media amber alert](../counters/C00126.md) | D3 Disrupt | diff --git a/techniques/T0060.md b/techniques/T0060.md index 7c745d6..676fac2 100644 --- a/techniques/T0060.md +++ b/techniques/T0060.md @@ -17,13 +17,13 @@ | [C00078 Change Search Algorithms for Disinformation Content](../counters/C00078.md) | D3 Disrupt | | [C00085 Mute content](../counters/C00085.md) | D3 Disrupt | | [C00117 Downgrade / de-amplify so message is seen by fewer people](../counters/C00117.md) | D4 Degrade | -| [C00119 Engage payload and debunk. Provide link to facts. ](../counters/C00119.md) | D7 Deter | +| [C00119 Engage payload and debunk. ](../counters/C00119.md) | D7 Deter | | [C00122 Content moderation](../counters/C00122.md) | D2 Deny | | [C00123 Remove or rate limit botnets](../counters/C00123.md) | D3 Disrupt | | [C00131 Seize and analyse botnet servers](../counters/C00131.md) | D2 Deny | | [C00138 Spam domestic actors with lawsuits](../counters/C00138.md) | D3 Disrupt | | [C00143 (botnet) DMCA takedown requests to waste group time](../counters/C00143.md) | D4 Degrade | -| [C00147 Make amplification of social media ports expire (e.g. can't like/ retweet after n days)](../counters/C00147.md) | D3 Disrupt | +| [C00147 Make amplification of social media posts expire (e.g. can't like/ retweet after n days)](../counters/C00147.md) | D3 Disrupt | DO NOT EDIT ABOVE THIS LINE - PLEASE ADD NOTES BELOW \ No newline at end of file diff --git a/techniques/T0062.md b/techniques/T0062.md index a689479..a91deaa 100644 --- a/techniques/T0062.md +++ b/techniques/T0062.md @@ -1,6 +1,6 @@ # Technique T0062: Behaviour changes -* **Summary**: +* **Summary**: Monitor and evaluate behaviour changes from misinformation incidents. * **Belongs to tactic stage**: TA12 diff --git a/techniques/T0063.md b/techniques/T0063.md index 6d37fdc..da6e335 100644 --- a/techniques/T0063.md +++ b/techniques/T0063.md @@ -1,6 +1,6 @@ # Technique T0063: Message reach -* **Summary**: +* **Summary**: Monitor and evaluate message reach in misinformation incidents. * **Belongs to tactic stage**: TA12 diff --git a/techniques/T0064.md b/techniques/T0064.md index cec5331..b42e84b 100644 --- a/techniques/T0064.md +++ b/techniques/T0064.md @@ -1,6 +1,6 @@ # Technique T0064: Social media engagement -* **Summary**: +* **Summary**: Monitor and evaluate social media engagement in misinformation incidents. * **Belongs to tactic stage**: TA12 diff --git a/techniques_index.md b/techniques_index.md index e9a1a19..69260a0 100644 --- a/techniques_index.md +++ b/techniques_index.md @@ -2,7 +2,7 @@ - + @@ -421,19 +421,19 @@ Examples of tertiary sites include Russia Insider, The Duran, geopolitica.ru, Mi - + - + - +
idamitt_id name summary tactic_id
T0062 Behaviour changesMonitor and evaluate behaviour changes from misinformation incidents. TA12
T0063 Message reachMonitor and evaluate message reach in misinformation incidents. TA12
T0064 Social media engagementMonitor and evaluate social media engagement in misinformation incidents. TA12
diff --git a/visualisations/cross_counterid_techniqueid.csv b/visualisations/cross_counterid_techniqueid.csv index 5f12d17..41359b4 100644 --- a/visualisations/cross_counterid_techniqueid.csv +++ b/visualisations/cross_counterid_techniqueid.csv @@ -21,17 +21,36 @@ C00011,T0059,1 C00012,TA07,1 C00012,TA09,1 C00012,TA10,1 +C00012,T0001,1 C00012,T0002,1 C00012,T0007,1 +C00012,T0008,1 +C00012,T0009,1 +C00012,T0013,1 C00012,T0014,1 C00012,T0015,1 +C00012,T0016,1 +C00012,T0017,1 +C00012,T0018,1 +C00012,T0021,1 +C00012,T0022,1 +C00012,T0024,1 C00012,T0025,1 +C00012,T0026,1 C00012,T0043,1 +C00012,T0045,1 C00012,T0046,1 C00012,T0047,1 C00012,T0048,1 +C00012,T0049,1 C00012,T0051,1 +C00012,T0052,1 +C00012,T0053,1 +C00012,T0054,1 C00012,T0055,1 +C00012,T0056,1 +C00012,T0057,1 +C00012,T0061,1 C00014,TA01,1 C00014,TA06,1 C00014,TA08,1 @@ -40,8 +59,31 @@ C00014,T0009,1 C00014,T0008,1 C00014,T0013,1 C00014,T0014,1 -C00016,TA07,1 -C00016,T0043,1 +C00006,T0009,1 +C00006,T0008,1 +C00006,T0007,1 +C00006,T0013,1 +C00006,T0014,1 +C00006,T0015,1 +C00006,T0016,1 +C00006,T0017,1 +C00006,T0018,1 +C00006,T0022,1 +C00006,T0021,1 +C00006,T0025,1 +C00006,T0024,1 +C00006,T0026,1 +C00006,T0045,1 +C00006,T0043,1 +C00006,T0056,1 +C00006,T0051,1 +C00006,T0049,1 +C00006,T0052,1 +C00006,T0054,1 +C00006,T0053,1 +C00006,T0055,1 +C00006,T0058,1 +C00006,T0057,1 C00019,TA08,1 C00019,TA09,1 C00019,TA10,1 @@ -115,51 +157,163 @@ C00070,T0046,1 C00070,T0052,1 C00070,T0055,1 C00070,T0057,1 -C00070,T0061,1 +C00070,T0056,1 C00071,T0019,1 C00071,T0056,1 +C00072,T0019,1 +C00072,T0010,1 +C00072,T0044,1 +C00072,T0021,1 C00072,T0022,1 -C00073,T0012,1 +C00072,T0023,1 +C00072,T0026,1 +C00072,T0025,1 +C00072,T0027,1 +C00072,T0039,1 +C00072,T0055,1 +C00072,T0049,1 +C00073,T0016,1 C00073,T0019,1 C00073,T0056,1 +C00073,T0010,1 +C00073,T0021,1 +C00073,T0022,1 +C00073,T0023,1 +C00073,T0026,1 +C00073,T0025,1 +C00073,T0027,1 +C00073,T0039,1 +C00073,T0040,1 +C00073,T0044,1 +C00073,T0045,1 +C00073,T0048,1 +C00073,T0053,1 +C00073,T0056,1 +C00073,T0060,1 +C00074,T0019,1 +C00074,T0021,1 C00074,T0022,1 C00074,T0026,1 C00074,T0025,1 +C00074,T0043,1 +C00074,T0050,1 +C00074,T0051,1 +C00074,T0049,1 +C00074,T0052,1 +C00074,T0053,1 +C00074,T0054,1 +C00074,T0055,1 +C00074,T0057,1 +C00074,T0061,1 +C00074,T0060,1 +C00076,T0016,1 +C00076,T0018,1 +C00076,T0039,1 +C00076,T0044,1 C00076,T0021,1 -C00076,T0024,1 C00078,TA07,1 +C00078,T0044,1 C00078,T0046,1 -C00078,T0021,1 -C00080,adapt,1 -C00081,info,1 +C00078,T0056,1 +C00078,T0052,1 +C00078,T0060,1 +C00080,T0003,1 +C00080,T0004,1 +C00080,T0028,1 +C00080,T0022,1 +C00080,T0027,1 +C00081,T0003,1 +C00081,T0004,1 +C00081,T0028,1 +C00081,T0006,1 +C00081,T0022,1 +C00081,T0023,1 +C00081,T0026,1 +C00081,T0027,1 +C00081,T0044,1 +C00081,T0053,1 +C00081,T0054,1 +C00081,T0055,1 +C00081,T0056,1 +C00082,T0002,1 +C00082,T0003,1 +C00082,T0004,1 +C00082,T0028,1 +C00082,T0006,1 +C00082,T0022,1 +C00082,T0023,1 +C00082,T0025,1 +C00082,T0026,1 +C00082,T0027,1 +C00082,T0044,1 +C00082,T0053,1 +C00082,T0054,1 +C00082,T0055,1 +C00082,T0056,1 C00084,T0002,1 +C00084,T0003,1 +C00084,T0004,1 +C00084,T0028,1 C00084,T0006,1 -C00084,T0015,1 -C00084,T0017,1 -C00084,T0057,1 +C00084,T0022,1 +C00084,T0027,1 C00084,T0059,1 -C00085,TA03,1 -C00085,TA04,1 -C00085,TA05,1 -C00085,TA06,1 -C00085,TA07,1 -C00085,TA08,1 -C00085,TA09,1 -C00085,TA10,1 -C00085,TA11,1 -C00086,TA09,1 -C00089,T0021,1 +C00085,T0008,1 +C00085,T0007,1 +C00085,T0017,1 +C00085,T0022,1 +C00085,T0021,1 +C00085,T0025,1 +C00085,T0024,1 +C00085,T0026,1 +C00085,T0045,1 +C00085,T0044,1 +C00085,T0049,1 +C00085,T0051,1 +C00085,T0052,1 +C00085,T0053,1 +C00085,T0054,1 +C00085,T0055,1 +C00085,T0056,1 +C00085,T0057,1 +C00085,T0061,1 +C00085,T0060,1 +C00086,T0044,1 +C00086,T0050,1 +C00086,T0051,1 +C00086,T0049,1 +C00086,T0054,1 +C00086,T0053,1 +C00086,T0055,1 +C00087,T0039,1 +C00087,T0044,1 +C00087,T0048,1 +C00087,T0050,1 +C00087,T0051,1 +C00087,T0049,1 +C00087,T0052,1 +C00087,T0054,1 +C00087,T0053,1 +C00087,T0055,1 +C00087,T0056,1 C00090,T0020,1 -C00091,T0019,1 +C00090,T0062,1 +C00090,T0063,1 +C00091,T0062,1 +C00091,T0063,1 +C00091,T0054,1 +C00091,T0053,1 +C00091,T0049,1 C00092,TA07,1 C00092,TA08,1 +C00092,T0010,1 C00092,T0023,1 -C00092,T0024,1 -C00092,T0025,1 -C00092,T0026,1 +C00092,T0039,1 C00092,T0045,1 -C00092,T0047,1 +C00092,T0044,1 +C00092,T0054,1 C00092,T0053,1 +C00092,T0056,1 C00093,TA07,1 C00093,T0010,1 C00093,T0017,1 @@ -169,30 +323,89 @@ C00093,T0048,1 C00093,T0053,1 C00094,T0026,1 C00096,T0022,1 +C00096,T0027,1 +C00096,T0026,1 +C00096,T0024,1 +C00096,T0023,1 +C00096,T0025,1 C00097,T0029,1 +C00097,T0030,1 +C00097,T0045,1 +C00097,T0009,1 +C00097,T0007,1 +C00097,T0054,1 +C00097,T0053,1 C00098,T0038,1 +C00098,T0011,1 C00099,T0030,1 -C00100,use,1 +C00099,T0045,1 +C00099,T0009,1 +C00099,T0008,1 +C00099,T0007,1 +C00100,T0055,1 C00101,T0029,1 -C00102,T0029,1 +C00101,T0049,1 +C00101,T0053,1 +C00101,T0054,1 C00103,T0029,1 -C00107,T0032,1 -C00107,T0035,1 +C00103,T0062,1 +C00103,T0063,1 +C00103,T0053,1 +C00105,T0016,1 +C00105,T0018,1 +C00106,T0016,1 +C00107,T0009,1 +C00107,T0008,1 +C00107,T0007,1 +C00107,T0013,1 +C00107,T0014,1 +C00107,T0015,1 +C00107,T0016,1 +C00107,T0017,1 +C00107,T0018,1 +C00107,T0021,1 +C00107,T0025,1 +C00107,T0024,1 +C00107,T0026,1 +C00107,T0045,1 +C00107,T0055,1 +C00107,T0057,1 +C00107,T0001,1 +C00107,T0022,1 +C00107,T0027,1 +C00107,T0061,1 +C00111,T0010,1 C00112,T0040,1 C00112,T0042,1 C00113,T0045,1 C00114,T0039,1 -C00115,T0046,1 +C00114,T0048,1 +C00115,T0041,1 C00115,T0048,1 C00115,T0052,1 C00115,T0053,1 -C00115,T0054,1 -C00115,T0055,1 C00115,T0056,1 C00116,T0041,1 C00117,T0046,1 +C00117,T0022,1 +C00117,T0021,1 +C00117,T0025,1 +C00117,T0024,1 +C00117,T0026,1 +C00117,T0045,1 +C00117,T0044,1 +C00117,T0060,1 C00118,T0044,1 +C00118,T0021,1 +C00118,T0024,1 +C00119,T0022,1 +C00119,T0021,1 +C00119,T0025,1 +C00119,T0024,1 +C00119,T0026,1 +C00119,T0045,1 C00119,T0044,1 +C00119,T0060,1 C00120,T0047,1 C00120,T0052,1 C00120,T0053,1 @@ -200,49 +413,102 @@ C00120,T0054,1 C00120,T0055,1 C00120,T0056,1 C00121,T0043,1 +C00122,T0008,1 +C00122,T0007,1 +C00122,T0014,1 +C00122,T0015,1 +C00122,T0016,1 +C00122,T0017,1 +C00122,T0018,1 +C00122,T0022,1 +C00122,T0021,1 +C00122,T0025,1 +C00122,T0024,1 +C00122,T0026,1 +C00122,T0045,1 +C00122,T0044,1 +C00122,T0049,1 +C00122,T0051,1 +C00122,T0052,1 +C00122,T0053,1 +C00122,T0054,1 +C00122,T0055,1 +C00122,T0056,1 +C00122,T0057,1 +C00122,T0061,1 +C00122,T0060,1 +C00123,T0029,1 C00123,T0049,1 -C00123,T0051,1 -C00123,T0052,1 -C00123,T0053,1 C00123,T0054,1 -C00123,T0055,1 -C00123,T0056,1 +C00123,T0060,1 C00124,TA08,1 C00124,TA09,1 -C00125,distort,1 -C00126,T0052,1 -C00126,T0053,1 -C00126,T0054,1 -C00126,T0055,1 +C00124,T0053,1 +C00124,T0063,1 +C00125,T0056,1 +C00125,T0052,1 +C00125,T0054,1 +C00125,T0053,1 +C00125,T0055,1 +C00125,T0045,1 +C00125,T0022,1 +C00125,T0027,1 +C00125,T0002,1 +C00125,T0003,1 +C00125,T0004,1 +C00125,T0010,1 C00126,T0056,1 +C00126,T0052,1 +C00126,T0054,1 +C00126,T0053,1 +C00126,T0055,1 +C00126,T0045,1 +C00126,T0022,1 +C00126,T0027,1 +C00126,T0002,1 +C00126,T0003,1 +C00126,T0004,1 +C00126,T0010,1 +C00126,T0057,1 +C00128,T0050,1 +C00128,T0056,1 +C00128,T0049,1 +C00128,T0052,1 +C00128,T0054,1 +C00128,T0053,1 +C00128,T0055,1 +C00128,T0057,1 +C00128,T0061,1 C00129,T0057,1 C00129,T0061,1 +C00129,T0014,1 +C00129,T0017,1 +C00129,T0018,1 +C00130,T0010,1 C00131,T0049,1 C00131,T0054,1 +C00131,T0060,1 C00133,TA07,1 C00133,TA09,1 C00133,TA10,1 C00133,T0007,1 C00133,T0009,1 +C00133,T0045,1 C00133,T0011,1 -C00133,T0014,1 -C00133,T0017,1 -C00133,T0018,1 C00133,T0045,1 C00135,TA07,1 C00135,TA09,1 C00135,TA10,1 C00135,T0007,1 -C00135,T0011,1 -C00135,T0017,1 -C00135,T0045,1 +C00135,T0043,1 C00136,TA08,1 C00136,TA09,1 C00136,TA10,1 -C00136,T0005,1 C00136,T0010,1 -C00136,T0029,1 -C00137,T0020,1 +C00136,T0020,1 +C00136,T0063,1 +C00138,T0060,1 +C00138,T0056,1 C00140,TA05,1 C00140,TA09,1 C00140,TA10,1 @@ -250,15 +516,203 @@ C00142,TA05,1 C00142,TA09,1 C00142,TA10,1 C00142,TA11,1 -C00142,T00016,1 +C00142,T0016,1 +C00143,T0060,1 +C00143,T0058,1 +C00143,T0024,1 C00144,T0053,1 -C00145,T0015,1 -C00145,T0046,1 C00147,T0060,1 +C00148,T0062,1 +C00148,T0063,1 C00149,TA12,1 C00149,T0020,1 -C00165,T00025,1 +C00149,T0046,1 +C00149,T0057,1 +C00149,T0063,1 +C00153,T0008,1 +C00153,T0007,1 +C00153,T0011,1 +C00153,T0013,1 +C00153,T0014,1 +C00153,T0017,1 +C00153,T0018,1 +C00153,T0056,1 +C00153,T0049,1 +C00153,T0052,1 +C00153,T0054,1 +C00153,T0053,1 +C00153,T0058,1 +C00153,T0057,1 +C00153,T0061,1 +C00154,T0039,1 +C00154,T0048,1 +C00154,T0045,1 +C00155,T0014,1 +C00155,T0017,1 +C00156,T0022,1 +C00156,T0027,1 +C00156,T0002,1 +C00156,T0003,1 +C00156,T0004,1 +C00156,T0010,1 +C00160,T0039,1 +C00160,T0010,1 +C00160,T0048,1 +C00161,T0022,1 +C00161,T0027,1 +C00161,T0002,1 +C00161,T0003,1 +C00161,T0004,1 +C00162,T0010,1 +C00162,T0022,1 +C00162,T0027,1 +C00162,T0002,1 +C00162,T0003,1 +C00162,T0004,1 +C00162,T0039,1 +C00162,T0052,1 +C00162,T0056,1 +C00162,T0050,1 +C00164,T0022,1 +C00164,T0027,1 +C00164,T0002,1 +C00164,T0003,1 +C00164,T0004,1 +C00165,T0025,1 +C00169,T0010,1 +C00169,T0022,1 +C00169,T0027,1 +C00169,T0002,1 +C00169,T0003,1 +C00169,T0004,1 +C00169,T0039,1 +C00172,T0008,1 +C00172,T0007,1 +C00172,T0013,1 C00174,T0001,1 +C00174,T0045,1 +C00174,T0010,1 +C00174,T0022,1 +C00174,T0027,1 +C00174,T0044,1 +C00176,T0009,1 +C00176,T0008,1 +C00176,T0007,1 +C00176,T0013,1 +C00176,T0014,1 +C00176,T0015,1 +C00176,T0016,1 +C00176,T0017,1 +C00176,T0018,1 +C00176,T0021,1 +C00176,T0025,1 +C00176,T0024,1 +C00176,T0026,1 +C00176,T0045,1 +C00176,T0043,1 +C00176,T0056,1 +C00176,T0051,1 +C00176,T0049,1 +C00176,T0052,1 +C00176,T0054,1 +C00176,T0053,1 +C00176,T0055,1 +C00176,T0058,1 +C00176,T0057,1 +C00176,T0001,1 +C00176,T0003,1 +C00176,T0010,1 +C00176,T0022,1 +C00176,T0027,1 +C00176,T0061,1 +C00178,T0016,1 +C00178,T0017,1 +C00178,T0018,1 +C00178,T0020,1 +C00182,T0011,1 +C00182,T0054,1 +C00184,T0045,1 +C00184,T0055,1 +C00184,T0039,1 +C00184,T0041,1 +C00184,T0044,1 +C00184,T0045,1 +C00184,T0010,1 +C00188,T0001,1 +C00188,T0003,1 +C00188,T0022,1 +C00188,T0027,1 +C00188,T0045,1 +C00188,T0008,1 +C00188,T0010,1 +C00188,T0039,1 +C00188,T0046,1 +C00189,T0008,1 +C00189,T0007,1 +C00189,T0011,1 +C00189,T0014,1 +C00189,T0009,1 +C00190,T0001,1 +C00190,T0003,1 +C00190,T0010,1 +C00190,T0022,1 +C00190,T0027,1 +C00190,T0025,1 +C00195,T0010,1 +C00195,T0016,1 +C00195,T0018,1 +C00195,T0022,1 +C00195,T0027,1 +C00195,T0025,1 +C00195,T0024,1 +C00195,T0026,1 +C00195,T0045,1 +C00195,T0046,1 +C00195,T0055,1 +C00197,T0009,1 C00197,T0007,1 C00197,T0011,1 +C00200,T0010,1 +C00200,T0027,1 +C00200,T0022,1 +C00200,T0045,1 +C00200,T0025,1 C00202,T0025,1 +C00203,T0010,1 +C00203,T0027,1 +C00203,T0022,1 +C00203,T0028,1 +C00203,T0039,1 +C00203,T0045,1 +C00203,T0056,1 +C00203,T0052,1 +C00205,T0001,1 +C00205,T0003,1 +C00205,T0022,1 +C00205,T0025,1 +C00205,T0027,1 +C00211,T0027,1 +C00211,T0022,1 +C00211,T0028,1 +C00211,T0026,1 +C00211,T0021,1 +C00211,T0020,1 +C00211,T0025,1 +C00211,T0024,1 +C00211,T0026,1 +C00211,T0045,1 +C00211,T0055,1 +C00211,T0057,1 +C00212,T0001,1 +C00212,T0003,1 +C00212,T0010,1 +C00212,T0022,1 +C00216,T0014,1 +C00216,T0016,1 +C00216,T0017,1 +C00216,T0061,1 +C00216,T0018,1 +C00216,T0057,1 +C00219,T0024,1 +C00219,T0026,1 +C00219,T0025,1