From 06cd744b6ee25ff21700a5459fff26bafe7156ed Mon Sep 17 00:00:00 2001 From: Sara-Jayne Terp Date: Sat, 20 Feb 2021 18:08:10 +0000 Subject: [PATCH] Updated code that lists metatechniques --- AMITT_MASTER_DATA/AMITT_TTPs_MASTER.xlsx | Bin 126157 -> 130415 bytes .../test_new_code-checkpoint.ipynb | 415 +++++++-- .../generate_amitt_ttps.cpython-38.pyc | Bin 26001 -> 26713 bytes HTML_GENERATING_CODE/generate_amitt_ttps.py | 271 +++--- HTML_GENERATING_CODE/template_actortype.md | 4 + HTML_GENERATING_CODE/template_counter.md | 8 +- HTML_GENERATING_CODE/template_incident.md | 10 +- .../template_metatechnique.md | 6 + HTML_GENERATING_CODE/template_phase.md | 8 +- HTML_GENERATING_CODE/template_tactic.md | 10 +- HTML_GENERATING_CODE/template_task.md | 10 +- HTML_GENERATING_CODE/template_technique.md | 10 +- HTML_GENERATING_CODE/test_new_code.ipynb | 785 +++++++++++++++--- actors_index.md | 49 -- actortypes/A001.md | 5 + actortypes/A002.md | 5 + actortypes/A003.md | 5 + actortypes/A004.md | 5 + actortypes/A005.md | 5 + actortypes/A006.md | 5 + actortypes/A007.md | 5 + actortypes/A008.md | 5 + actortypes/A009.md | 5 + actortypes/A010.md | 5 + actortypes_index.md | 59 ++ counters/C00001.md | 10 +- counters/C00003.md | 10 +- counters/C00004.md | 10 +- counters/C00005.md | 10 +- counters/C00006.md | 10 +- counters/C00007.md | 10 +- counters/C00008.md | 10 +- counters/C00009.md | 10 +- counters/C00010.md | 10 +- counters/C00011.md | 10 +- counters/C00012.md | 10 +- counters/C00013.md | 10 +- counters/C00014.md | 10 +- counters/C00015.md | 10 +- counters/C00016.md | 10 +- counters/C00017.md | 10 +- counters/C00018.md | 10 +- counters/C00019.md | 10 +- counters/C00020.md | 10 +- counters/C00021.md | 10 +- counters/C00022.md | 10 +- counters/C00023.md | 10 +- counters/C00024.md | 10 +- counters/C00025.md | 10 +- counters/C00026.md | 10 +- counters/C00027.md | 10 +- counters/C00028.md | 10 +- counters/C00029.md | 10 +- counters/C00030.md | 10 +- counters/C00031.md | 10 +- counters/C00032.md | 10 +- counters/C00033.md | 10 +- counters/C00034.md | 10 +- counters/C00035.md | 10 +- counters/C00036.md | 10 +- counters/C00039.md | 10 +- counters/C00040.md | 10 +- counters/C00042.md | 10 +- counters/C00043.md | 10 +- counters/C00044.md | 10 +- counters/C00045.md | 10 +- counters/C00046.md | 10 +- counters/C00047.md | 10 +- counters/C00048.md | 10 +- counters/C00049.md | 10 +- counters/C00050.md | 10 +- counters/C00051.md | 10 +- counters/C00052.md | 10 +- counters/C00053.md | 10 +- counters/C00054.md | 10 +- counters/C00055.md | 10 +- counters/C00056.md | 10 +- counters/C00057.md | 10 +- counters/C00058.md | 10 +- counters/C00059.md | 10 +- counters/C00060.md | 10 +- counters/C00061.md | 10 +- counters/C00062.md | 10 +- counters/C00063.md | 10 +- counters/C00065.md | 10 +- counters/C00066.md | 10 +- counters/C00067.md | 10 +- counters/C00068.md | 10 +- counters/C00069.md | 10 +- counters/C00070.md | 10 +- counters/C00071.md | 10 +- counters/C00072.md | 10 +- counters/C00073.md | 10 +- counters/C00074.md | 10 +- counters/C00075.md | 10 +- counters/C00076.md | 10 +- counters/C00077.md | 10 +- counters/C00078.md | 10 +- counters/C00079.md | 10 +- counters/C00080.md | 10 +- counters/C00081.md | 10 +- counters/C00082.md | 10 +- counters/C00084.md | 10 +- counters/C00085.md | 10 +- counters/C00086.md | 10 +- counters/C00087.md | 10 +- counters/C00088.md | 10 +- counters/C00089.md | 10 +- counters/C00090.md | 10 +- counters/C00091.md | 10 +- counters/C00092.md | 10 +- counters/C00093.md | 10 +- counters/C00094.md | 10 +- counters/C00095.md | 10 +- counters/C00096.md | 10 +- counters/C00097.md | 10 +- counters/C00098.md | 10 +- counters/C00099.md | 10 +- counters/C00100.md | 10 +- counters/C00101.md | 10 +- counters/C00102.md | 10 +- counters/C00103.md | 10 +- counters/C00105.md | 10 +- counters/C00106.md | 10 +- counters/C00107.md | 10 +- counters/C00109.md | 10 +- counters/C00110.md | 10 +- counters/C00111.md | 10 +- counters/C00112.md | 10 +- counters/C00113.md | 10 +- counters/C00114.md | 10 +- counters/C00115.md | 10 +- counters/C00116.md | 10 +- counters/C00117.md | 10 +- counters/C00118.md | 10 +- counters/C00119.md | 10 +- counters/C00120.md | 10 +- counters/C00121.md | 10 +- counters/C00122.md | 10 +- counters/C00123.md | 10 +- counters/C00124.md | 10 +- counters/C00125.md | 10 +- counters/C00126.md | 10 +- counters/C00128.md | 10 +- counters/C00129.md | 10 +- counters/C00130.md | 10 +- counters/C00131.md | 10 +- counters/C00133.md | 10 +- counters/C00135.md | 10 +- counters/C00136.md | 10 +- counters/C00137.md | 10 +- counters/C00138.md | 10 +- counters/C00139.md | 10 +- counters/C00140.md | 10 +- counters/C00141.md | 10 +- counters/C00142.md | 10 +- counters/C00143.md | 10 +- counters/C00144.md | 10 +- counters/C00145.md | 10 +- counters/C00147.md | 10 +- counters/C00148.md | 10 +- counters/C00149.md | 10 +- counters/C00150.md | 10 +- counters/C00151.md | 10 +- counters/C00152.md | 10 +- counters/C00153.md | 10 +- counters/C00154.md | 10 +- counters/C00155.md | 10 +- counters/C00156.md | 10 +- counters/C00157.md | 10 +- counters/C00158.md | 10 +- counters/C00159.md | 10 +- counters/C00160.md | 10 +- counters/C00161.md | 10 +- counters/C00162.md | 10 +- counters/C00164.md | 10 +- counters/C00165.md | 10 +- counters/C00167.md | 10 +- counters/C00169.md | 10 +- counters/C00170.md | 10 +- counters/C00171.md | 10 +- counters/C00172.md | 10 +- counters/C00174.md | 10 +- counters/C00176.md | 10 +- counters/C00178.md | 10 +- counters/C00179.md | 10 +- counters/C00182.md | 10 +- counters/C00184.md | 10 +- counters/C00188.md | 10 +- counters/C00189.md | 10 +- counters/C00190.md | 10 +- counters/C00193.md | 10 +- counters/C00194.md | 10 +- counters/C00195.md | 10 +- counters/C00196.md | 10 +- counters/C00197.md | 10 +- counters/C00200.md | 10 +- counters/C00202.md | 10 +- counters/C00203.md | 10 +- counters/C00204.md | 10 +- counters/C00205.md | 10 +- counters/C00207.md | 10 +- counters/C00210.md | 10 +- counters/C00211.md | 10 +- counters/C00212.md | 10 +- counters/C00214.md | 10 +- counters/C00215.md | 10 +- counters/C00216.md | 10 +- counters/C00217.md | 10 +- counters/C00218.md | 10 +- counters/C00219.md | 10 +- counters_index.md | 372 ++++----- detections_index.md | 92 +- incidents/I00001.md | 10 +- incidents/I00002.md | 10 +- incidents/I00003.md | 10 +- incidents/I00004.md | 10 +- incidents/I00005.md | 10 +- incidents/I00006.md | 10 +- incidents/I00007.md | 10 +- incidents/I00008.md | 10 +- incidents/I00009.md | 10 +- incidents/I00010.md | 10 +- incidents/I00011.md | 10 +- incidents/I00012.md | 10 +- incidents/I00013.md | 10 +- incidents/I00014.md | 10 +- incidents/I00015.md | 10 +- incidents/I00016.md | 10 +- incidents/I00017.md | 10 +- incidents/I00018.md | 10 +- incidents/I00019.md | 10 +- incidents/I00020.md | 10 +- incidents/I00021.md | 10 +- incidents/I00022.md | 10 +- incidents/I00023.md | 10 +- incidents/I00024.md | 10 +- incidents/I00025.md | 10 +- incidents/I00026.md | 10 +- incidents/I00027.md | 10 +- incidents/I00028.md | 10 +- incidents/I00029.md | 10 +- incidents/I00030.md | 10 +- incidents/I00031.md | 10 +- incidents/I00032.md | 10 +- incidents/I00033.md | 10 +- incidents/I00034.md | 10 +- incidents/I00035.md | 10 +- incidents/I00036.md | 10 +- incidents/I00037.md | 10 +- incidents/I00038.md | 10 +- incidents/I00039.md | 10 +- incidents/I00040.md | 10 +- incidents/I00041.md | 10 +- incidents/I00042.md | 10 +- incidents/I00043.md | 10 +- incidents/I00044.md | 10 +- incidents/I00045.md | 10 +- incidents/I00046.md | 10 +- incidents/I00047.md | 10 +- incidents/I00048.md | 10 +- incidents/I00049.md | 10 +- incidents/I00050.md | 10 +- incidents/I00051.md | 10 +- incidents/I00052.md | 10 +- incidents/I00053.md | 10 +- incidents/I00054.md | 10 +- incidents/I00055.md | 10 +- incidents/I00056.md | 10 +- incidents/I00057.md | 10 +- incidents/I00058.md | 10 +- incidents/I00059.md | 10 +- incidents/I00060.md | 10 +- incidents/I00061.md | 10 +- incidents/I00062.md | 10 +- incidents/I00063.md | 10 +- metatechniques/M001.md | 38 + metatechniques/M002.md | 27 + metatechniques/M003.md | 29 + metatechniques/M004.md | 36 + metatechniques/M005.md | 29 + metatechniques/M006.md | 20 + metatechniques/M007.md | 26 + metatechniques/M008.md | 16 + metatechniques/M009.md | 16 + metatechniques/M010.md | 27 + metatechniques/M011.md | 13 + metatechniques/M012.md | 14 + metatechniques/M013.md | 21 + metatechniques/M014.md | 14 + metatechniques/cleaningcounters.md | 14 - metatechniques/countermessagingcounters.md | 31 - metatechniques/data pollutioncounters.md | 16 - metatechniques/daylightcounters.md | 33 - metatechniques/dilutioncounters.md | 14 - metatechniques/diversioncounters.md | 29 - metatechniques/frictioncounters.md | 36 - metatechniques/metatechniquecounters.md | 28 - metatechniques/reduce resourcescounters.md | 14 - metatechniques/removalcounters.md | 27 - metatechniques/resiliencecounters.md | 40 - metatechniques/scoringcounters.md | 18 - metatechniques/targetingcounters.md | 23 - metatechniques/verificationcounters.md | 11 - metatechniques_by_responsetype_table.md | 234 +++--- metatechniques_index.md | 11 +- phases/P01.md | 8 +- phases/P02.md | 8 +- phases/P03.md | 8 +- phases/P04.md | 8 +- tactics/TA01.md | 10 +- tactics/TA02.md | 10 +- tactics/TA03.md | 10 +- tactics/TA04.md | 10 +- tactics/TA05.md | 10 +- tactics/TA06.md | 10 +- tactics/TA07.md | 10 +- tactics/TA08.md | 10 +- tactics/TA09.md | 10 +- tactics/TA10.md | 10 +- tactics/TA11.md | 10 +- tactics/TA12.md | 10 +- tasks/TK0001.md | 10 +- tasks/TK0002.md | 10 +- tasks/TK0003.md | 10 +- tasks/TK0004.md | 10 +- tasks/TK0005.md | 10 +- tasks/TK0006.md | 10 +- tasks/TK0007.md | 10 +- tasks/TK0008.md | 10 +- tasks/TK0009.md | 10 +- tasks/TK0010.md | 10 +- tasks/TK0011.md | 10 +- tasks/TK0012.md | 10 +- tasks/TK0013.md | 10 +- tasks/TK0014.md | 10 +- tasks/TK0015.md | 10 +- tasks/TK0016.md | 10 +- tasks/TK0017.md | 10 +- tasks/TK0018.md | 10 +- tasks/TK0019.md | 10 +- tasks/TK0020.md | 10 +- tasks/TK0021.md | 10 +- tasks/TK0022.md | 10 +- tasks/TK0023.md | 10 +- tasks/TK0024.md | 10 +- tasks/TK0025.md | 10 +- tasks/TK0026.md | 10 +- tasks/TK0027.md | 10 +- tasks/TK0028.md | 10 +- tasks/TK0029.md | 10 +- tasks/TK0030.md | 10 +- techniques/T0001.md | 10 +- techniques/T0002.md | 10 +- techniques/T0003.md | 10 +- techniques/T0004.md | 10 +- techniques/T0005.md | 10 +- techniques/T0006.md | 10 +- techniques/T0007.md | 10 +- techniques/T0008.md | 10 +- techniques/T0009.md | 10 +- techniques/T0010.md | 10 +- techniques/T0011.md | 10 +- techniques/T0012.md | 10 +- techniques/T0013.md | 10 +- techniques/T0014.md | 10 +- techniques/T0015.md | 10 +- techniques/T0016.md | 10 +- techniques/T0017.md | 10 +- techniques/T0018.md | 10 +- techniques/T0019.md | 10 +- techniques/T0020.md | 10 +- techniques/T0021.md | 10 +- techniques/T0022.md | 10 +- techniques/T0023.md | 10 +- techniques/T0024.md | 10 +- techniques/T0025.md | 10 +- techniques/T0026.md | 10 +- techniques/T0027.md | 10 +- techniques/T0028.md | 10 +- techniques/T0029.md | 10 +- techniques/T0030.md | 10 +- techniques/T0031.md | 10 +- techniques/T0032.md | 10 +- techniques/T0033.md | 10 +- techniques/T0034.md | 10 +- techniques/T0035.md | 10 +- techniques/T0036.md | 10 +- techniques/T0037.md | 10 +- techniques/T0038.md | 10 +- techniques/T0039.md | 10 +- techniques/T0040.md | 10 +- techniques/T0041.md | 10 +- techniques/T0042.md | 10 +- techniques/T0043.md | 10 +- techniques/T0044.md | 10 +- techniques/T0045.md | 10 +- techniques/T0046.md | 10 +- techniques/T0047.md | 10 +- techniques/T0048.md | 10 +- techniques/T0049.md | 10 +- techniques/T0050.md | 10 +- techniques/T0051.md | 10 +- techniques/T0052.md | 10 +- techniques/T0053.md | 10 +- techniques/T0054.md | 10 +- techniques/T0055.md | 10 +- techniques/T0056.md | 10 +- techniques/T0057.md | 10 +- techniques/T0058.md | 10 +- techniques/T0059.md | 10 +- techniques/T0060.md | 10 +- techniques/T0061.md | 10 +- 413 files changed, 2732 insertions(+), 3884 deletions(-) create mode 100644 HTML_GENERATING_CODE/template_actortype.md create mode 100644 HTML_GENERATING_CODE/template_metatechnique.md delete mode 100644 actors_index.md create mode 100644 actortypes/A001.md create mode 100644 actortypes/A002.md create mode 100644 actortypes/A003.md create mode 100644 actortypes/A004.md create mode 100644 actortypes/A005.md create mode 100644 actortypes/A006.md create mode 100644 actortypes/A007.md create mode 100644 actortypes/A008.md create mode 100644 actortypes/A009.md create mode 100644 actortypes/A010.md create mode 100644 actortypes_index.md create mode 100644 metatechniques/M001.md create mode 100644 metatechniques/M002.md create mode 100644 metatechniques/M003.md create mode 100644 metatechniques/M004.md create mode 100644 metatechniques/M005.md create mode 100644 metatechniques/M006.md create mode 100644 metatechniques/M007.md create mode 100644 metatechniques/M008.md create mode 100644 metatechniques/M009.md create mode 100644 metatechniques/M010.md create mode 100644 metatechniques/M011.md create mode 100644 metatechniques/M012.md create mode 100644 metatechniques/M013.md create mode 100644 metatechniques/M014.md delete mode 100644 metatechniques/cleaningcounters.md delete mode 100644 metatechniques/countermessagingcounters.md delete mode 100644 metatechniques/data pollutioncounters.md delete mode 100644 metatechniques/daylightcounters.md delete mode 100644 metatechniques/dilutioncounters.md delete mode 100644 metatechniques/diversioncounters.md delete mode 100644 metatechniques/frictioncounters.md delete mode 100644 metatechniques/metatechniquecounters.md delete mode 100644 metatechniques/reduce resourcescounters.md delete mode 100644 metatechniques/removalcounters.md delete mode 100644 metatechniques/resiliencecounters.md delete mode 100644 metatechniques/scoringcounters.md delete mode 100644 metatechniques/targetingcounters.md delete mode 100644 metatechniques/verificationcounters.md diff --git a/AMITT_MASTER_DATA/AMITT_TTPs_MASTER.xlsx b/AMITT_MASTER_DATA/AMITT_TTPs_MASTER.xlsx index a12c38b5b0bcd17aad1983f735b2988f54d46d71..d0ecef995b6897440e105ab0448fc64295d90afb 100644 GIT binary patch delta 116761 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 delta 112431 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
k?#@iulgxxBkHD?eyZ2_eya#LPZRwa&A-eV( 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 diff --git a/HTML_GENERATING_CODE/.ipynb_checkpoints/test_new_code-checkpoint.ipynb b/HTML_GENERATING_CODE/.ipynb_checkpoints/test_new_code-checkpoint.ipynb index db9b8c5..92f0a39 100644 --- a/HTML_GENERATING_CODE/.ipynb_checkpoints/test_new_code-checkpoint.ipynb +++ b/HTML_GENERATING_CODE/.ipynb_checkpoints/test_new_code-checkpoint.ipynb @@ -11,90 +11,16 @@ "name": "stdout", "output_type": "stream", "text": [ - "Updating ../counters/C00008.md\n", - "Updating ../counters/C00009.md\n", - "Updating ../counters/C00011.md\n", - "Updating ../counters/C00012.md\n", - "Updating ../counters/C00014.md\n", - "Updating ../counters/C00016.md\n", - "Updating ../counters/C00020.md\n", - "Updating ../counters/C00022.md\n", - "Updating ../counters/C00023.md\n", - "Updating ../counters/C00024.md\n", - "Updating ../counters/C00025.md\n", - "Updating ../counters/C00026.md\n", - "Updating ../counters/C00027.md\n", - "Updating ../counters/C00031.md\n", - "Updating ../counters/C00036.md\n", - "Updating ../counters/C00039.md\n", - "Updating ../counters/C00040.md\n", - "Updating ../counters/C00042.md\n", - "Updating ../counters/C00043.md\n", - "Updating ../counters/C00044.md\n", - "Updating ../counters/C00045.md\n", - "Updating ../counters/C00048.md\n", - "Updating ../counters/C00049.md\n", - "Updating ../counters/C00050.md\n", - "Updating ../counters/C00051.md\n", - "Updating ../counters/C00052.md\n", - "Updating ../counters/C00053.md\n", - "Updating ../counters/C00055.md\n", - "Updating ../counters/C00060.md\n", - "Updating ../counters/C00063.md\n", - "Updating ../counters/C00065.md\n", - "Updating ../counters/C00066.md\n", - "Updating ../counters/C00067.md\n", - "Updating ../counters/C00068.md\n", - "Updating ../counters/C00069.md\n", - "Updating ../counters/C00070.md\n", - "Updating ../counters/C00071.md\n", - "Updating ../counters/C00072.md\n", - "Updating ../counters/C00073.md\n", - "Updating ../counters/C00074.md\n", - "Updating ../counters/C00076.md\n", - "Updating ../counters/C00078.md\n", - "Updating ../counters/C00079.md\n", - "Updating ../counters/C00088.md\n", - "Updating ../counters/C00089.md\n", - "Updating ../counters/C00090.md\n", - "Updating ../counters/C00091.md\n", - "Updating ../counters/C00092.md\n", - "Updating ../counters/C00093.md\n", - "Updating ../counters/C00094.md\n", - "Updating ../counters/C00095.md\n", - "Updating ../counters/C00096.md\n", - "Updating ../counters/C00097.md\n", - "Updating ../counters/C00098.md\n", - "Updating ../counters/C00099.md\n", - "Updating ../counters/C00101.md\n", - "Updating ../counters/C00102.md\n", - "Updating ../counters/C00103.md\n", - "Updating ../counters/C00107.md\n", - "Updating ../counters/C00112.md\n", - "Updating ../counters/C00113.md\n", - "Updating ../counters/C00114.md\n", - "Updating ../counters/C00115.md\n", - "Updating ../counters/C00116.md\n", - "Updating ../counters/C00117.md\n", - "Updating ../counters/C00118.md\n", - "Updating ../counters/C00119.md\n", - "Updating ../counters/C00120.md\n", - "Updating ../counters/C00121.md\n", - "Updating ../counters/C00123.md\n", - "Updating ../counters/C00126.md\n", - "Updating ../counters/C00129.md\n", - "Updating ../counters/C00131.md\n", - "Updating ../counters/C00133.md\n", - "Updating ../counters/C00135.md\n", - "Updating ../counters/C00136.md\n", - "Updating ../counters/C00137.md\n", - "Updating ../counters/C00144.md\n", - "Updating ../counters/C00145.md\n", - "Updating ../counters/C00147.md\n", - "Updating ../counters/C00149.md\n", - "Updating ../counters/C00202.md\n", - "Updating ../counters/C00210.md\n", - "updated ../incidents_list.md\n", + "updated ../phase_index.md\n", + "updated ../tactic_index.md\n", + "updated ../technique_index.md\n", + "updated ../task_index.md\n", + "updated ../incident_index.md\n", + "updated ../counter_index.md\n", + "updated ../responsetype_index.md\n", + "updated ../metatechniques_index.md\n", + "updated ../actors_index.md\n", + "updated ../detections_index.md\n", "updated ../amitt_red_framework.md\n", "updated ../amitt_blue_framework.md\n", "updated ../amitt_red_framework_clickable.html\n", @@ -126,6 +52,7 @@ "Writing ../metatechniques/targetingcounters.md\n", "Writing ../metatechniques/verificationcounters.md\n", "updated ../metatechniques_by_responsetype_table.md\n", + "Writing ../resources_needed/counters.md\n", "Writing ../resources_needed/DHScounters.md\n", "Writing ../resources_needed/NGOcounters.md\n", "Writing ../resources_needed/activistscounters.md\n", @@ -179,25 +106,333 @@ "metadata": {}, "outputs": [], "source": [ + "# Check which amitt variables we can see from here\n", + "print('{}'.format(vars(amitt).keys()))\n", "vars(amitt)['tactics']" ] }, { - "cell_type": "code", - "execution_count": null, + "cell_type": "markdown", "metadata": {}, - "outputs": [], "source": [ - "vars(amitt).keys()" + "# TEST AREA" ] }, { "cell_type": "code", - "execution_count": null, + "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", + "
idtechnique_id
0C00001
1C00003
2C00004
3C00005
4C00006
.........
182C00145T0046
183C00147T0060
184C00148
185C00149TA12
185C00149T0020
\n", + "

367 rows × 2 columns

\n", + "
" + ], + "text/plain": [ + " id technique_id\n", + "0 C00001 \n", + "1 C00003 \n", + "2 C00004 \n", + "3 C00005 \n", + "4 C00006 \n", + ".. ... ...\n", + "182 C00145 T0046\n", + "183 C00147 T0060\n", + "184 C00148 \n", + "185 C00149 TA12\n", + "185 C00149 T0020\n", + "\n", + "[367 rows x 2 columns]" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "amitt.cross_counterid_techniqueid" + ] + }, + { + "cell_type": "code", + "execution_count": 4, "metadata": {}, "outputs": [], "source": [ - "###. TEST AREA" + "def splitcol(df, col, newcol, divider=','):\n", + " # Thanks https://stackoverflow.com/questions/17116814/pandas-how-do-i-split-text-in-a-column-into-multiple-rows?noredirect=1\n", + " return (df.join(df[col]\n", + " .str.split(divider, expand=True).stack()\n", + " .reset_index(drop=True,level=1)\n", + " .rename(newcol)).drop(col, axis=1))\n" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "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", + "
idresource
0C00001
1C00003
2C00004
3C00005
4C00006platform_admin:socialmedia
.........
181C00144
182C00145
183C00147platform_algorithms
184C00148platform_algorithms
185C00149
\n", + "

218 rows × 2 columns

\n", + "
" + ], + "text/plain": [ + " id resource\n", + "0 C00001 \n", + "1 C00003 \n", + "2 C00004 \n", + "3 C00005 \n", + "4 C00006 platform_admin:socialmedia\n", + ".. ... ...\n", + "181 C00144 \n", + "182 C00145 \n", + "183 C00147 platform_algorithms\n", + "184 C00148 platform_algorithms\n", + "185 C00149 \n", + "\n", + "[218 rows x 2 columns]" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Create counters cross-tables\n", + "cross_counterid_techniqueid = splitcol(amitt.df_counters[['id', 'techniques']], \n", + " 'techniques', 'technique', '\\n')\n", + "cross_counterid_techniqueid = cross_counterid_techniqueid[cross_counterid_techniqueid['technique'].notnull()]\n", + "cross_counterid_techniqueid['technique_id'] = cross_counterid_techniqueid['technique'].str.split(' ').str[0]\n", + "cross_counterid_techniqueid.drop('technique', axis=1, inplace=True)\n", + "\n", + "cross_counterid_resource = splitcol(amitt.df_counters[['id', 'resources_needed']], \n", + " 'resources_needed', 'resource', ',')\n", + "cross_counterid_resource = cross_counterid_resource[cross_counterid_resource['resource'].notnull()]\n", + "\n", + "cross_counterid_resource" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + " 117\n", + "educators 11\n", + "platform_admin 11\n", + "media 10\n", + "platform_algorithms 8\n", + "government:policymakers 8\n", + "government 7\n", + "platform_admin:socialmedia 5\n", + "public 4\n", + "influencers 3\n", + "activists 2\n", + "infosec 2\n", + "money 2\n", + "developers 2\n", + "data_scientist 2\n", + "factcheckers 2\n", + "civil_society 1\n", + "DHS 1\n", + "gamesdesigners 1\n", + "server_admin 1\n", + "military 1\n", + "public:account_owners 1\n", + "platform_admin:fundingsites 1\n", + "platforms 1\n", + "adtech 1\n", + "datastreams 1\n", + "NGO 1\n", + "content_creators 1\n", + "community_groups 1\n", + "religious_organisations 1\n", + "platform_admin:adtech 1\n", + "companies 1\n", + "elves 1\n", + "funding 1\n", + "influencers:trusted_authority 1\n", + "libraries 1\n", + "platform_outreach 1\n", + "schools 1\n", + "Name: resource, dtype: int64" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "cross_counterid_resource['resource'].value_counts()" ] }, { 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 00f499e9f9da20036590b287f67f7d1f195b966f..517a524127d6931b9d06db2592da859e1deacaf6 100644 GIT binary patch delta 8566 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 Vyz08C;Lz&HfF|<4U7B5E{|iJ;^JD-3 delta 7965 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 DEtog3 diff --git a/HTML_GENERATING_CODE/generate_amitt_ttps.py b/HTML_GENERATING_CODE/generate_amitt_ttps.py index c17d2ca..75d92e7 100644 --- a/HTML_GENERATING_CODE/generate_amitt_ttps.py +++ b/HTML_GENERATING_CODE/generate_amitt_ttps.py @@ -29,7 +29,8 @@ Reads 1 excel file: ../AMITT_MASTER_DATA/AMITT_TTPs_MASTER.xlsx with sheets: * incidenttechniques * tactics * countermeasures -* actors +* actortypes +* resources * responsetypes Reads template files: @@ -94,10 +95,14 @@ class Amitt: self.df_incidents = metadata['incidents'] self.df_counters = metadata['countermeasures'].sort_values('id') self.df_counters[['tactic_id', 'tactic_name']] = self.df_counters['tactic'].str.split(' ', 1, expand=True) - self.df_actors = metadata['actors'] + 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) + self.df_actortypes = metadata['actortypes'] + self.df_resources = metadata['resources'] self.df_responsetypes = metadata['responsetypes'] self.df_metatechniques = metadata['metatechniques'] - self.df_detections = metadata['detections'] self.it = self.create_incident_technique_crosstable(metadata['incidenttechniques']) self.df_tactics = metadata['tactics'] @@ -111,6 +116,7 @@ class Amitt: self.tactics = self.make_object_dictionary(self.df_tactics) 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.num_tactics = len(self.df_tactics) self.max_num_techniques_per_tactic = max(df_techniques_per_tactic['technique_ids'].apply(len)) +2 @@ -270,6 +276,18 @@ class Amitt: return table_string + def create_metatechnique_counters_string(self, metatechnique_id): + table_string = ''' +| Counters | Response types | +| -------- | -------------- | +''' + metatechnique_counters = self.df_counters[self.df_counters['metatechnique_id']==metatechnique_id] + row_string = '| [{0} {1}](../counters/{0}.md) | {2} |\n' + for index, row in metatechnique_counters.sort_values(['responsetype', 'id']).iterrows(): + table_string += row_string.format(row['id'], row['name'], row['responsetype']) + return table_string + + def create_technique_counters_string(self, technique_id): table_string = ''' | Counters | @@ -364,6 +382,75 @@ class Amitt: return(tactic_id) + def create_object_file(self, index, rowtype, datadir): + + oid = index + html = '''# {} counters: {}\n\n'''.format(rowtype, index) + + html += '## by action\n\n' + for resp, clist in self.df_counters[self.df_counters[rowtype] == index].groupby('responsetype'): + html += '\n### {}\n'.format(resp) + + for c in clist.iterrows(): + html += '* {}: {} (needs {})\n'.format(c[1]['id'], c[1]['name'], + c[1]['resources_needed']) + + datafile = '{}/{}counters.md'.format(datadir, oid) + print('Writing {}'.format(datafile)) + with open(datafile, 'w') as f: + f.write(html) + f.close() + return(oid) + + + 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' + ''' + + html = '''# AMITT {}: + + + +'''.format(objectname.capitalize()) + + # Create header row + html += '\n'.format('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 += '\n'.format(objectname, row['id']) + html += ''.join(['\n'.format(row[col]) for col in objectcols]) + html += '\n' + html += '
{}{}
{1}{}
\n' + + # Write file + with open(outfile, 'w') as f: + f.write(html) + print('updated {}'.format(outfile)) + return + + def write_object_indexes_to_file(self): + ''' Create an index file for each object type. + ''' + self.write_object_index_to_file( + 'response types', ['name', 'summary'], + self.df_responsetypes, '../responsetype_index.md') + self.write_object_index_to_file( + 'metatechniques', ['name', 'summary'], + self.df_metatechniques, '../metatechniques_index.md') + self.write_object_index_to_file( + 'actortypes', ['name', 'summary'], + self.df_actortypes, '../actortypes_index.md') + self.write_object_index_to_file( + 'detections', ['name', 'summary', 'metatechnique', 'tactic', 'responsetype'], + self.df_detections, '../detections_index.md') + + return def update_markdown_files(self): ''' Create or update all the editable markdown files in the repo @@ -381,22 +468,45 @@ class Amitt: 'technique': self.df_techniques, 'task': self.df_tasks, 'incident': self.df_incidents, - 'counter': self.df_counters + 'counter': self.df_counters, + 'metatechnique': self.df_metatechniques, + 'actortype': self.df_actortypes, + #'responsetype': self.df_responsetypes, + #'detection': self.df_detections } - for entity, df in metadata.items(): - entities = entity + 's' - entitydir = '../{}'.format(entities) - if not os.path.exists(entitydir): - os.makedirs(entitydir) + indexrows = { + 'phase': ['name', 'summary'], + 'tactic': ['name', 'summary', 'phase_id'], + 'technique': ['name', 'summary', 'tactic_id'], + 'task': ['name', 'summary', 'tactic_id'], + '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'], + 'actortype': ['name', 'summary'] + } + + for objecttype, df in metadata.items(): - template = open('template_{}.md'.format(entity)).read() + # Create objecttype directory if needed. Create index file for objecttype + objecttypeplural = objecttype + 's' + objecttypedir = '../{}'.format(objecttypeplural) + if not os.path.exists(objecttypedir): + os.makedirs(objecttypedir) + self.write_object_index_to_file(objecttypeplural, indexrows[objecttype], + metadata[objecttype], + '../{}_index.md'.format(objecttypeplural)) + + # Update or create file for every object with this objecttype type + template = open('template_{}.md'.format(objecttype)).read() for index, row in df[df['name'].notnull()].iterrows(): # 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(entities, row['id']) + datafile = '../{}/{}.md'.format(objecttypeplural, row['id']) oldmetatext = '' if os.path.exists(datafile): with open(datafile) as f: @@ -412,39 +522,46 @@ class Amitt: usertext = '' # Now populate datafiles with new metadata plus old userdata - if entity == 'phase': - metatext = template.format(id=row['id'], name=row['name'], summary=row['summary']) - if entity == 'tactic': - metatext = template.format(id=row['id'], name=row['name'], + if objecttype == 'phase': + metatext = template.format(type='Phase', id=row['id'], name=row['name'], summary=row['summary']) + if objecttype == 'tactic': + metatext = template.format(type = 'Tactic', id=row['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_tactic_counters_string(row['id'])) - if entity == 'task': - metatext = template.format(id=row['id'], name=row['name'], + if objecttype == 'task': + metatext = template.format(type='Task', id=row['id'], name=row['name'], tactic=row['tactic_id'], summary=row['summary']) - if entity == 'technique': - metatext = template.format(id=row['id'], name=row['name'], + if objecttype == 'technique': + metatext = template.format(type = 'Technique', id=row['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'])) - if entity == 'counter': - metatext = template.format(id=row['id'], name=row['name'], + if objecttype == 'counter': + metatext = template.format(type = 'Counter', id=row['id'], name=row['name'], tactic=row['tactic_id'], summary=row['summary'], playbooks=row['playbooks'], metatechnique=row['metatechnique'], 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'])) - if entity == 'incident': - metatext = template.format(id=row['id'], name=row['name'], - type=row['type'], summary=row['summary'], + if objecttype == 'incident': + metatext = template.format(type = 'Incident', id=row['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 == 'actortype': + metatext = template.format(type = 'Actor Type', id=row['id'], name=row['name'], + summary=row['summary']) + if objecttype == 'metatechnique': + metatext = template.format(type='Metatechnique', id=row['id'], name=row['name'], + summary=row['summary'], + counters=self.create_metatechnique_counters_string(row['id'])) # Make sure the user data goes in if (metatext + warntext) != oldmetatext: @@ -530,84 +647,6 @@ class Amitt: return - def write_object_indexes_to_file(self): - ''' Create an index file for each object type. - ''' - - self.write_object_index_to_file( - 'phases', ['name', 'summary'], - self.df_phases, '../phases_index.md') - - self.write_object_index_to_file( - 'tactics', ['name', 'summary', 'phase_id'], - self.df_tactics, '../tactics_index.md') - - self.write_object_index_to_file( - 'techniques', ['name', 'summary', 'tactic_id'], - self.df_techniques, '../techniques_index.md') - - self.write_object_index_to_file( - 'tasks', ['name', 'summary', 'tactic_id'], - self.df_tasks, '../tasks_index.md') - - self.write_object_index_to_file( - 'response types', ['name', 'summary'], - self.df_responsetypes, '../responsetype_index.md') - - self.write_object_index_to_file( - 'metatechniques', ['name', 'summary'], - self.df_metatechniques, '../metatechniques_index.md') - - self.write_object_index_to_file( - 'actors', ['name', 'summary'], - self.df_actors, '../actors_index.md') - - self.write_object_index_to_file( - 'detections', ['name', 'summary', 'metatechnique', 'tactic', 'responsetype'], - self.df_detections, '../detections_index.md') - - self.write_object_index_to_file( - 'counters', ['name', 'summary', 'metatechnique', 'tactic', 'responsetype'], - self.df_counters, '../counters_index.md') - - self.write_object_index_to_file( - 'incidents', ['name', 'type', 'Year Started', 'To country', 'Found via'], - self.df_incidents, '../incidents_index.md') - - return - - - 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' - ''' - - html = '''# AMITT {}: - - - -'''.format(objectname.capitalize()) - - # Create header row - html += '\n'.format('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 += '\n'.format(objectname, row['id']) - html += ''.join(['\n'.format(row[col]) for col in objectcols]) - html += '\n' - html += '
{}{}
{1}{}
\n' - - # Write file - with open(outfile, 'w') as f: - f.write(html) - print('updated {}'.format(outfile)) - return - def write_clickable_amitt_red_framework_file(self, outfile='../amitt_red_framework_clickable.html'): # Write clickable html version of the matrix grid to html file @@ -767,31 +806,10 @@ function handleTechniqueClick(box) { return - def create_object_file(self, index, rowtype, datadir): - - oid = index - html = '''# {} counters: {}\n\n'''.format(rowtype, index) - - html += '## by action\n\n' - for resp, clist in self.df_counters[self.df_counters[rowtype] == index].groupby('responsetype'): - html += '\n### {}\n'.format(resp) - - for c in clist.iterrows(): - html += '* {}: {} (needs {})\n'.format(c[1]['id'], c[1]['name'], - c[1]['resources_needed']) - - datafile = '{}/{}counters.md'.format(datadir, oid) - print('Writing {}'.format(datafile)) - with open(datafile, 'w') as f: - f.write(html) - f.close() - return(oid) - - def write_metatechniques_responsetype_table_file(self, outfile = '../metatechniques_by_responsetype_table.md'): coltype = 'responsetype' - rowtype = 'metatechnique' + rowtype = 'metatechnique_id' rowname = 'metatag' datadirname = 'metatechniques' datadir = '../' + datadirname @@ -816,9 +834,8 @@ function handleTechniqueClick(box) { if not os.path.exists(datadir): os.makedirs(datadir) for index, counts in mtcounts.iterrows(): - tid = self.create_object_file(index, rowtype, datadir) - html += '
{2}\n'.format( - datadirname, tid, index) + html += '{1} {2}\n'.format( + datadirname, index, self.metatechniques[index]) for val in counts.values: html += '{}\n'.format(val) html += '\n\n' diff --git a/HTML_GENERATING_CODE/template_actortype.md b/HTML_GENERATING_CODE/template_actortype.md new file mode 100644 index 0000000..cabf7ee --- /dev/null +++ b/HTML_GENERATING_CODE/template_actortype.md @@ -0,0 +1,4 @@ +# {type} {id}: {name} + +* **Summary:** {summary} + diff --git a/HTML_GENERATING_CODE/template_counter.md b/HTML_GENERATING_CODE/template_counter.md index 731ccef..d791e60 100644 --- a/HTML_GENERATING_CODE/template_counter.md +++ b/HTML_GENERATING_CODE/template_counter.md @@ -1,10 +1,4 @@ -# {name} - -* **Type**: Counter TTP - -* **Name**: {name} - -* **Id**: {id} +# {type} {id}: {name} * **Summary**: {summary} diff --git a/HTML_GENERATING_CODE/template_incident.md b/HTML_GENERATING_CODE/template_incident.md index e8f4d76..95bf2b2 100644 --- a/HTML_GENERATING_CODE/template_incident.md +++ b/HTML_GENERATING_CODE/template_incident.md @@ -1,13 +1,9 @@ -# {name} - -* **Type:** {type} - -* **Name:** {name} - -* **Id:** {id} +# {type} {id}: {name} * **Summary:** {summary} +* **incident type**: {incidenttype} + * **Year started:** {yearstarted} * **Countries:** {fromcountry} , {tocountry} diff --git a/HTML_GENERATING_CODE/template_metatechnique.md b/HTML_GENERATING_CODE/template_metatechnique.md new file mode 100644 index 0000000..6cec538 --- /dev/null +++ b/HTML_GENERATING_CODE/template_metatechnique.md @@ -0,0 +1,6 @@ +# {type} {id}: {name} + +* **Summary:** {summary} + +{counters} + diff --git a/HTML_GENERATING_CODE/template_phase.md b/HTML_GENERATING_CODE/template_phase.md index b5ae9ee..cabf7ee 100644 --- a/HTML_GENERATING_CODE/template_phase.md +++ b/HTML_GENERATING_CODE/template_phase.md @@ -1,10 +1,4 @@ -# {name} - -* **Type:** Phase - -* **Name:** {name} - -* **Id:** {id} +# {type} {id}: {name} * **Summary:** {summary} diff --git a/HTML_GENERATING_CODE/template_tactic.md b/HTML_GENERATING_CODE/template_tactic.md index d7d5985..164b1b6 100644 --- a/HTML_GENERATING_CODE/template_tactic.md +++ b/HTML_GENERATING_CODE/template_tactic.md @@ -1,14 +1,8 @@ -# {name} - -* **Type:** Tactic - -* **Name:** {name} - -* **Id:** {id} +# {type} {id}: {name} * **Summary:** {summary} -* **Phase:** {phase} +* **Belongs to phase:** {phase} {tasks} diff --git a/HTML_GENERATING_CODE/template_task.md b/HTML_GENERATING_CODE/template_task.md index d2cb4ee..fc80e62 100644 --- a/HTML_GENERATING_CODE/template_task.md +++ b/HTML_GENERATING_CODE/template_task.md @@ -1,12 +1,6 @@ -# {name} - -* **Type:** Task - -* **Name:** {name} - -* **Id:** {id} +# {type} {id}: {name} * **Summary:** {summary} -* **Tactic:** {tactic} +* **Belongs to tactic stage:** {tactic} diff --git a/HTML_GENERATING_CODE/template_technique.md b/HTML_GENERATING_CODE/template_technique.md index 8ef55f9..cdfb155 100644 --- a/HTML_GENERATING_CODE/template_technique.md +++ b/HTML_GENERATING_CODE/template_technique.md @@ -1,14 +1,8 @@ -# {name} - -* **Type**: Technique - -* **Name**: {name} - -* **Id**: {id} +# {type} {id}: {name} * **Summary**: {summary} -* **Tactic**: {tactic} +* **Belongs to tactic stage**: {tactic} {incidents} diff --git a/HTML_GENERATING_CODE/test_new_code.ipynb b/HTML_GENERATING_CODE/test_new_code.ipynb index c147dc0..933bd52 100644 --- a/HTML_GENERATING_CODE/test_new_code.ipynb +++ b/HTML_GENERATING_CODE/test_new_code.ipynb @@ -15,12 +15,14 @@ "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", + "updated ../metatechniques_index.md\n", + "updated ../actortypes_index.md\n", "updated ../responsetype_index.md\n", "updated ../metatechniques_index.md\n", - "updated ../actors_index.md\n", + "updated ../actortypes_index.md\n", "updated ../detections_index.md\n", - "updated ../counters_index.md\n", - "updated ../incidents_index.md\n", "updated ../amitt_red_framework.md\n", "updated ../amitt_blue_framework.md\n", "updated ../amitt_red_framework_clickable.html\n", @@ -37,20 +39,6 @@ "Writing ../counter_tactics/TA11counters.md\n", "Writing ../counter_tactics/TA12counters.md\n", "updated ../tactics_by_responsetype_table.md\n", - "Writing ../metatechniques/cleaningcounters.md\n", - "Writing ../metatechniques/countermessagingcounters.md\n", - "Writing ../metatechniques/data pollutioncounters.md\n", - "Writing ../metatechniques/daylightcounters.md\n", - "Writing ../metatechniques/dilutioncounters.md\n", - "Writing ../metatechniques/diversioncounters.md\n", - "Writing ../metatechniques/frictioncounters.md\n", - "Writing ../metatechniques/metatechniquecounters.md\n", - "Writing ../metatechniques/reduce resourcescounters.md\n", - "Writing ../metatechniques/removalcounters.md\n", - "Writing ../metatechniques/resiliencecounters.md\n", - "Writing ../metatechniques/scoringcounters.md\n", - "Writing ../metatechniques/targetingcounters.md\n", - "Writing ../metatechniques/verificationcounters.md\n", "updated ../metatechniques_by_responsetype_table.md\n", "Writing ../resources_needed/counters.md\n", "Writing ../resources_needed/DHScounters.md\n", @@ -106,90 +94,681 @@ "metadata": {}, "outputs": [], "source": [ + "# Check which amitt variables we can see from here\n", + "print('{}'.format(vars(amitt).keys()))\n", "vars(amitt)['tactics']" ] }, { - "cell_type": "code", - "execution_count": null, + "cell_type": "markdown", "metadata": {}, - "outputs": [], "source": [ - "vars(amitt).keys()" + "# TEST AREA" ] }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "###. TEST AREA" - ] - }, - { - "cell_type": "code", - "execution_count": 1, + "execution_count": 7, "metadata": {}, "outputs": [ { "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
idTOTALS
responsetypeALLD2 DenyD3 DisruptD4 DegradeD5 DeceiveD6 DestroyD7 Deter
metatechnique_id
M0010107700428
M0020210230017
M003068201219
M0040137600026
M0050154000019
M006070000310
M007436000316
M00800141006
M00900510006
M010038401117
M01102100003
M01202110004
M013016300111
M01402110004
\n", + "
" + ], "text/plain": [ - "'Aaaa'" + " id \\\n", + "responsetype ALL D2 Deny D3 Disrupt D4 Degrade D5 Deceive D6 Destroy \n", + "metatechnique_id \n", + "M001 0 10 7 7 0 0 \n", + "M002 0 2 10 2 3 0 \n", + "M003 0 6 8 2 0 1 \n", + "M004 0 13 7 6 0 0 \n", + "M005 0 15 4 0 0 0 \n", + "M006 0 7 0 0 0 0 \n", + "M007 4 3 6 0 0 0 \n", + "M008 0 0 1 4 1 0 \n", + "M009 0 0 5 1 0 0 \n", + "M010 0 3 8 4 0 1 \n", + "M011 0 2 1 0 0 0 \n", + "M012 0 2 1 1 0 0 \n", + "M013 0 1 6 3 0 0 \n", + "M014 0 2 1 1 0 0 \n", + "\n", + " TOTALS \n", + "responsetype D7 Deter \n", + "metatechnique_id \n", + "M001 4 28 \n", + "M002 0 17 \n", + "M003 2 19 \n", + "M004 0 26 \n", + "M005 0 19 \n", + "M006 3 10 \n", + "M007 3 16 \n", + "M008 0 6 \n", + "M009 0 6 \n", + "M010 1 17 \n", + "M011 0 3 \n", + "M012 0 4 \n", + "M013 1 11 \n", + "M014 0 4 " ] }, - "execution_count": 1, + "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "\"aaaa\".capitalize()" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [], - "source": [ - "cols = ['name', 'type', 'Year Started', 'To country', 'Found via']\n", - "\n", - "h2 = " - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'name\\ntype\\nYear Started\\nTo country\\nFound via\\n'" - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "html =''\n", - "for col in cols:\n", - " html += '{}\\n'.format(col)\n", - "html" + "import pandas as pd\n", + "coltype = 'responsetype'\n", + "rowtype = 'metatechnique_id'\n", + "rowname = 'metatag'\n", + "datadirname = 'metatechniques'\n", + "datadir = '../' + datadirname\n", + "mtcounts = pd.pivot_table(amitt.df_counters[[coltype, rowtype,'id']], \n", + " index=rowtype, columns=coltype, aggfunc=len, \n", + " fill_value=0) \n", + "mtcounts['TOTALS'] = mtcounts.sum(axis=1)\n", + "mtcounts" ] }, { "cell_type": "code", "execution_count": 6, - "metadata": {}, + "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", + "
idnamemetatechniquesummaryplaybooksresources_neededhow_foundreferencesincident_idstacticresponsetypenotestechniqueslongnametactic_idtactic_namemetatechnique_idmetatechnique_name
0C00001Better models of info spread up the layersM007 - metatechnique2019-11-workshopTA01 Strategic PlanningALLC00001 - Better models of info spread up the l...TA01Strategic PlanningM007- metatechnique
1C00003How can we safeguard against extremists using ...M007 - metatechnique2019-11-workshopTA01 Strategic PlanningALLC00003 - How can we safeguard against extremis...TA01Strategic PlanningM007- metatechnique
2C00004Managing like a chronic diseaseM007 - metatechnique2019-11-workshopTA01 Strategic PlanningALLC00004 - Managing like a chronic diseaseTA01Strategic PlanningM007- metatechnique
3C00005Policy: makers, terminology, elements: a) broa...M007 - metatechnique2019-11-workshopTA01 Strategic PlanningALLC00005 - Policy: makers, terminology, elements...TA01Strategic PlanningM007- metatechnique
4C00006Charge for social mediaM004 - frictionNo corresponding AMITT technique.platform_admin:socialmedia2019-11-workshopTA01 Strategic PlanningD2 DenyC00006 - Charge for social mediaTA01Strategic PlanningM004- friction
.........................................................
181C00215Use fraud legislation to clean up social mediaM007 - metatechniquegovernment:policymakers2019-11-workshopTA07 Channel SelectionD3 DisruptC00215 - Use fraud legislation to clean up soc...TA07Channel SelectionM007- metatechnique
182C00216Use advertiser controls to stem flow of funds ...M014 - reduce resourcesplatform_admin:adtech2019-11-workshopTA05 MicrotargetingD2 DenyC00216 - Use advertiser controls to stem flow ...TA05MicrotargetingM014- reduce resources
183C00217Registries alert when large batches of newsy U...M003 - daylightplatform_admingrugqTA07 Channel SelectionD2 DenyC00217 - Registries alert when large batches o...TA07Channel SelectionM003- daylight
184C00218CensorshipM005 - removalAlter and/or block the publication/disseminati...platform_admingrugqTaylor81TA09 ExposureD2 DenyC00218 - CensorshipTA09ExposureM005- removal
185C00219Add metadata to content - out of the control o...M003 - daylightAdd date and source to imagesgrugqTA06 Develop ContentD3 DisruptC00219 - Add metadata to content - out of the ...TA06Develop ContentM003- daylight
\n", + "

186 rows × 18 columns

\n", + "
" + ], "text/plain": [ - "True" + " id name \\\n", + "0 C00001 Better models of info spread up the layers \n", + "1 C00003 How can we safeguard against extremists using ... \n", + "2 C00004 Managing like a chronic disease \n", + "3 C00005 Policy: makers, terminology, elements: a) broa... \n", + "4 C00006 Charge for social media \n", + ".. ... ... \n", + "181 C00215 Use fraud legislation to clean up social media \n", + "182 C00216 Use advertiser controls to stem flow of funds ... \n", + "183 C00217 Registries alert when large batches of newsy U... \n", + "184 C00218 Censorship \n", + "185 C00219 Add metadata to content - out of the control o... \n", + "\n", + " metatechnique \\\n", + "0 M007 - metatechnique \n", + "1 M007 - metatechnique \n", + "2 M007 - metatechnique \n", + "3 M007 - metatechnique \n", + "4 M004 - friction \n", + ".. ... \n", + "181 M007 - metatechnique \n", + "182 M014 - reduce resources \n", + "183 M003 - daylight \n", + "184 M005 - removal \n", + "185 M003 - daylight \n", + "\n", + " summary \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 No corresponding AMITT technique. \n", + ".. ... \n", + "181 \n", + "182 \n", + "183 \n", + "184 Alter and/or block the publication/disseminati... \n", + "185 \n", + "\n", + " playbooks resources_needed \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 platform_admin:socialmedia \n", + ".. ... ... \n", + "181 government:policymakers \n", + "182 platform_admin:adtech \n", + "183 platform_admin \n", + "184 platform_admin \n", + "185 Add date and source to images \n", + "\n", + " how_found references incident_ids tactic \\\n", + "0 2019-11-workshop TA01 Strategic Planning \n", + "1 2019-11-workshop TA01 Strategic Planning \n", + "2 2019-11-workshop TA01 Strategic Planning \n", + "3 2019-11-workshop TA01 Strategic Planning \n", + "4 2019-11-workshop TA01 Strategic Planning \n", + ".. ... ... ... ... \n", + "181 2019-11-workshop TA07 Channel Selection \n", + "182 2019-11-workshop TA05 Microtargeting \n", + "183 grugq TA07 Channel Selection \n", + "184 grugq Taylor81 TA09 Exposure \n", + "185 grugq TA06 Develop Content \n", + "\n", + " responsetype notes techniques \\\n", + "0 ALL \n", + "1 ALL \n", + "2 ALL \n", + "3 ALL \n", + "4 D2 Deny \n", + ".. ... ... ... \n", + "181 D3 Disrupt \n", + "182 D2 Deny \n", + "183 D2 Deny \n", + "184 D2 Deny \n", + "185 D3 Disrupt \n", + "\n", + " longname tactic_id \\\n", + "0 C00001 - Better models of info spread up the l... TA01 \n", + "1 C00003 - How can we safeguard against extremis... TA01 \n", + "2 C00004 - Managing like a chronic disease TA01 \n", + "3 C00005 - Policy: makers, terminology, elements... TA01 \n", + "4 C00006 - Charge for social media TA01 \n", + ".. ... ... \n", + "181 C00215 - Use fraud legislation to clean up soc... TA07 \n", + "182 C00216 - Use advertiser controls to stem flow ... TA05 \n", + "183 C00217 - Registries alert when large batches o... TA07 \n", + "184 C00218 - Censorship TA09 \n", + "185 C00219 - Add metadata to content - out of the ... TA06 \n", + "\n", + " tactic_name metatechnique_id metatechnique_name \n", + "0 Strategic Planning M007 - metatechnique \n", + "1 Strategic Planning M007 - metatechnique \n", + "2 Strategic Planning M007 - metatechnique \n", + "3 Strategic Planning M007 - metatechnique \n", + "4 Strategic Planning M004 - friction \n", + ".. ... ... ... \n", + "181 Channel Selection M007 - metatechnique \n", + "182 Microtargeting M014 - reduce resources \n", + "183 Channel Selection M003 - daylight \n", + "184 Exposure M005 - removal \n", + "185 Develop Content M003 - daylight \n", + "\n", + "[186 rows x 18 columns]" ] }, "execution_count": 6, @@ -198,70 +777,60 @@ } ], "source": [ - "html == h2" + "amitt.df_counters" ] }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "'# AMITT Incidents:\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n
idnametypeYear StartedTo countryFound via
I00001Blacktivists facebook groupincident2016USAnan
I00002#VaccinateUScampaign2014Worldnan
I00003Beyonce protest ralliesincident2016USAnan
I00004#Macrongateincident2017Francenan
I00005Brexit votecampaign2016UKnan
I00006Columbian Chemicalsincident2014USAnan
I00007Incirlik terroristsincident2016USAnan
I00008Bujicincident2017Serbianan
I00009PhilippinesExpertincident2017Philippinesnan
I00010ParklandTeensincident2018USAnan
I00011CovingtonTeenincident2019USAnan
I00012ChinaSmogincident2011Chinanan
I00013FranceBlacktivistsincident2014Francenan
I00014GiletsJaunePileonincident2018Francenan
I00015ConcordDiscoveryincident2019USAnan
I00016LithuanianElvescampaign2014Lithuanianan
I00017US presidential electionscampaign2016USAOII
I00018DNC email leak incidenttactic2016USAOII
I00019MacronTiphaineincident2017FranceOII
I000203000 tanksincident2017WorldOII
I00021Armenia electionscampaign2017ArmeniaOII
I00022#Macronleaksincident2017FranceOII
I00023#dislikemacronincident2017FranceOII
I00024#syriahoaxincident2017USAOII
I00025EU Armyincident2018EUOII
I00026Netherlands referendum on Ukraineincident2016NetherlandsOII
I00027crucifiedboyincident2014UkraineOII
I00028mh17 downedincident2014UkraineOII
I00029MH17 investigationcampaign2016UkraineOII
I00030LastJediincident2018WorldOII
I00031antivaxapt2018WorldOII
I00032Kavanaughincident2018USAOII
I00033China 50cent Armyapt2014ChinaOII
I00034DibaFacebookExpeditionincident2016TaiwanOII
I00035Brazilelectionscampaign2014BrazilOII
I00036BrazilPresDebateincident2014BrazilOII
I00037Rioelectionsincident2016BrazilOII
I00038Brazilimpeachmentincident2016BrazilOII
I00039MerkelFacebookincident2017GermanyOII
I00040modamaniSelfieincident2015GermanyOII
I00041Refugee crime mapincident2017GermanyOII
I00042Saudi/Qatar bot disputeincident2017QatarMIS
I00043FCC commentsincident2017USAMIS
I00044JadeHelm exerciseincident2015USAMIS
I00045Skripalincident2018UKnan
I00046North Macedoniaincident2018Macedonianan
I00047Sea of Azovincident2018Worldnan
I00048White Helmetscampaign2015Worldnan
I00049White Helmets: Chemical Weaponsincident2017Worldnan
I00050#HandsOffVenezuelaincident2019Worldnan
I00051Integrity Initiativeincident2018Worldnan
I00052China overiewcampaign2015Worldnan
I00053China Huawei CFO Arrestincident2018Worldnan
I00054China Muslimsincident2018Worldnan
I0005550 Cent Armycampaign2008Worldnan
I00056Iran Influence Operationscampaign2012Worldnan
I00057Mexico Electionincident2018Mexiconan
I00058Chemnitzincident2018Germanynan
I00059Myanmar - Rohingya campaign2014Myanmarnan
I00060White Genocidecampaign2018Worldnan
I00061Military veterans Targettingcampaign2017USnan
I00062Brexit/UK ongoingcampaign2015UKnan
I00063Olympic Doping Scandalcampaign2016Worldnan
\\n'" + "Index(['ALL', 'D2 Deny', 'D3 Disrupt', 'D4 Degrade', 'D5 Deceive',\n", + " 'D6 Destroy', 'D7 Deter'],\n", + " dtype='object', name='responsetype')" ] }, - "execution_count": 4, + "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "objectname = 'incidents'\n", - "objectcols = ['name', 'type', 'Year Started', 'To country', 'Found via']\n", - "dfobject = amitt.df_incidents\n", - "outfile='../incidents_list.md'\n", - "\n", - "html = '''# AMITT {}:\n", - "\n", - "\n", - "\n", - "'''.format(objectname.capitalize())\n", - "\n", - "# Create header row\n", - "html += '\\n'.format('id')\n", - "html += ''.join(['\\n'.format(col) for col in objectcols])\n", - "html += '\\n'\n", - "\n", - "# Add row for each object\n", - "for index, row in dfobject[dfobject['name'].notnull()].iterrows():\n", - " html += '\\n'\n", - " html += '\\n'.format(objectname, row['id'])\n", - " html += ''.join(['\\n'.format(row[col]) for col in objectcols])\n", - " html += '\\n'\n", - "html += '
{}{}
{1}{}
\\n'\n", - "html" + "mtcounts.columns.get_level_values(1)[:-1]" ] }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 10, "metadata": {}, "outputs": [ { - "data": { - "text/plain": [ - "'# AMITT Incidents:\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n'" - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" + "name": "stdout", + "output_type": "stream", + "text": [ + "M001\n", + "M002\n", + "M003\n", + "M004\n", + "M005\n", + "M006\n", + "M007\n", + "M008\n", + "M009\n", + "M010\n", + "M011\n", + "M012\n", + "M013\n", + "M014\n" + ] } ], "source": [ - "html" + "for index, counts in mtcounts.iterrows():\n", + " print('{}'.format(index))" ] }, { diff --git a/actors_index.md b/actors_index.md deleted file mode 100644 index f6c7331..0000000 --- a/actors_index.md +++ /dev/null @@ -1,49 +0,0 @@ -# AMITT Actors: - -
idnametypeYear StartedTo countryFound via
I00001
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
idnamesummary
A001Nonprofits
A002Civil Society
A003Government Agency
A004Academics
A005Activists
A006TargetPerson being targeted by disinformation campaign
A007Social network platforms
A008Corporations
diff --git a/actortypes/A001.md b/actortypes/A001.md new file mode 100644 index 0000000..4754db4 --- /dev/null +++ b/actortypes/A001.md @@ -0,0 +1,5 @@ +# Actor Type A001: Nonprofit + +* **Summary:** + +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..4b93e10 --- /dev/null +++ b/actortypes/A002.md @@ -0,0 +1,5 @@ +# Actor Type A002: Civil Society + +* **Summary:** + +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..b7ef7c1 --- /dev/null +++ b/actortypes/A003.md @@ -0,0 +1,5 @@ +# Actor Type A003: Government + +* **Summary:** + +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..356105e --- /dev/null +++ b/actortypes/A004.md @@ -0,0 +1,5 @@ +# Actor Type A004: Academic + +* **Summary:** + +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..a5205f6 --- /dev/null +++ b/actortypes/A005.md @@ -0,0 +1,5 @@ +# Actor Type A005: Activist + +* **Summary:** + +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..11df89d --- /dev/null +++ b/actortypes/A006.md @@ -0,0 +1,5 @@ +# Actor Type A006: General Public + +* **Summary:** + +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..1332f41 --- /dev/null +++ b/actortypes/A007.md @@ -0,0 +1,5 @@ +# Actor Type A007: Social Media Company + +* **Summary:** + +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..1f4f3f3 --- /dev/null +++ b/actortypes/A008.md @@ -0,0 +1,5 @@ +# Actor Type A008: Other Tech Company + +* **Summary:** + +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..d0b28a9 --- /dev/null +++ b/actortypes/A009.md @@ -0,0 +1,5 @@ +# Actor Type A009: Other Company + +* **Summary:** + +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..e446354 --- /dev/null +++ b/actortypes/A010.md @@ -0,0 +1,5 @@ +# Actor Type A010: Media + +* **Summary:** + +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..fea25ce --- /dev/null +++ b/actortypes_index.md @@ -0,0 +1,59 @@ +# AMITT Actortypes: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
idnamesummary
A001Nonprofit
A002Civil Society
A003Government
A004Academic
A005Activist
A006General Public
A007Social Media Company
A008Other Tech Company
A009Other Company
A010Media
diff --git a/counters/C00001.md b/counters/C00001.md index 9a735a2..67fb2c4 100644 --- a/counters/C00001.md +++ b/counters/C00001.md @@ -1,16 +1,10 @@ -# Better models of info spread up the layers - -* **Type**: Counter TTP - -* **Name**: Better models of info spread up the layers - -* **Id**: C00001 +# Counter C00001: Better models of info spread up the layers * **Summary**: * **Playbooks**: -* **Metatechnique**: metatechnique +* **Metatechnique**: M007 - metatechnique * **Resources needed:** diff --git a/counters/C00003.md b/counters/C00003.md index 0b7ddb3..f8192c8 100644 --- a/counters/C00003.md +++ b/counters/C00003.md @@ -1,16 +1,10 @@ -# How can we safeguard against extremists using the tools that we will produce? - -* **Type**: Counter TTP - -* **Name**: How can we safeguard against extremists using the tools that we will produce? - -* **Id**: C00003 +# Counter C00003: How can we safeguard against extremists using the tools that we will produce? * **Summary**: * **Playbooks**: -* **Metatechnique**: metatechnique +* **Metatechnique**: M007 - metatechnique * **Resources needed:** diff --git a/counters/C00004.md b/counters/C00004.md index f3a1e4d..8e816ef 100644 --- a/counters/C00004.md +++ b/counters/C00004.md @@ -1,16 +1,10 @@ -# Managing like a chronic disease - -* **Type**: Counter TTP - -* **Name**: Managing like a chronic disease - -* **Id**: C00004 +# Counter C00004: Managing like a chronic disease * **Summary**: * **Playbooks**: -* **Metatechnique**: metatechnique +* **Metatechnique**: M007 - metatechnique * **Resources needed:** diff --git a/counters/C00005.md b/counters/C00005.md index d30dbe8..32170a3 100644 --- a/counters/C00005.md +++ b/counters/C00005.md @@ -1,16 +1,10 @@ -# Policy: makers, terminology, elements: a) broad, b) specific - -* **Type**: Counter TTP - -* **Name**: Policy: makers, terminology, elements: a) broad, b) specific - -* **Id**: C00005 +# Counter C00005: Policy: makers, terminology, elements: a) broad, b) specific * **Summary**: * **Playbooks**: -* **Metatechnique**: metatechnique +* **Metatechnique**: M007 - metatechnique * **Resources needed:** diff --git a/counters/C00006.md b/counters/C00006.md index e41bdea..4fe821c 100644 --- a/counters/C00006.md +++ b/counters/C00006.md @@ -1,16 +1,10 @@ -# Charge for social media - -* **Type**: Counter TTP - -* **Name**: Charge for social media - -* **Id**: C00006 +# Counter C00006: Charge for social media * **Summary**: No corresponding AMITT technique. * **Playbooks**: -* **Metatechnique**: friction +* **Metatechnique**: M004 - friction * **Resources needed:** platform_admin:socialmedia diff --git a/counters/C00007.md b/counters/C00007.md index 9220bac..9dece63 100644 --- a/counters/C00007.md +++ b/counters/C00007.md @@ -1,16 +1,10 @@ -# Create framework for BetterBusinessBureau (BBB) for news media - -* **Type**: Counter TTP - -* **Name**: Create framework for BetterBusinessBureau (BBB) for news media - -* **Id**: C00007 +# Counter C00007: Create framework for BetterBusinessBureau (BBB) for news media * **Summary**: No corresponding AMITT technique. * **Playbooks**: -* **Metatechnique**: scoring +* **Metatechnique**: M006 - scoring * **Resources needed:** diff --git a/counters/C00008.md b/counters/C00008.md index 211bcf0..4478a37 100644 --- a/counters/C00008.md +++ b/counters/C00008.md @@ -1,16 +1,10 @@ -# Create shared fact-checking database - -* **Type**: Counter TTP - -* **Name**: Create shared fact-checking database - -* **Id**: C00008 +# Counter C00008: Create shared fact-checking database * **Summary**: Snopes is best-known example * **Playbooks**: -* **Metatechnique**: scoring +* **Metatechnique**: M006 - scoring * **Resources needed:** factcheckers diff --git a/counters/C00009.md b/counters/C00009.md index 831ddb7..70c6abd 100644 --- a/counters/C00009.md +++ b/counters/C00009.md @@ -1,16 +1,10 @@ -# Educate high profile influencers on best practices - -* **Type**: Counter TTP - -* **Name**: Educate high profile influencers on best practices - -* **Id**: C00009 +# Counter C00009: Educate high profile influencers on best practices * **Summary**: * **Playbooks**: -* **Metatechnique**: resilience +* **Metatechnique**: M001 - resilience * **Resources needed:** influencers,educators diff --git a/counters/C00010.md b/counters/C00010.md index cd80312..ff7d7b2 100644 --- a/counters/C00010.md +++ b/counters/C00010.md @@ -1,16 +1,10 @@ -# Enhanced privacy regulation for social media - -* **Type**: Counter TTP - -* **Name**: Enhanced privacy regulation for social media - -* **Id**: C00010 +# Counter C00010: Enhanced privacy regulation for social media * **Summary**: No corresponding AMITT technique. * **Playbooks**: -* **Metatechnique**: friction +* **Metatechnique**: M004 - friction * **Resources needed:** government:policymakers diff --git a/counters/C00011.md b/counters/C00011.md index 9e9f410..08be306 100644 --- a/counters/C00011.md +++ b/counters/C00011.md @@ -1,10 +1,4 @@ -# Media literacy. Games to identify fake news - -* **Type**: Counter TTP - -* **Name**: Media literacy. Games to identify fake news - -* **Id**: C00011 +# Counter C00011: Media literacy. Games to identify fake news * **Summary**: @@ -12,7 +6,7 @@ -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 -* **Metatechnique**: resilience +* **Metatechnique**: M001 - resilience * **Resources needed:** educators,gamesdesigners,developers diff --git a/counters/C00012.md b/counters/C00012.md index a36dc6a..1489d68 100644 --- a/counters/C00012.md +++ b/counters/C00012.md @@ -1,16 +1,10 @@ -# Platform regulation - -* **Type**: Counter TTP - -* **Name**: Platform regulation - -* **Id**: C00012 +# Counter C00012: Platform regulation * **Summary**: * **Playbooks**: Develop a regulatory body like the CFPB to regulate and enforce regulation for digital organizations -* **Metatechnique**: metatechnique +* **Metatechnique**: M007 - metatechnique * **Resources needed:** government:policymakers diff --git a/counters/C00013.md b/counters/C00013.md index 81f3849..b478a06 100644 --- a/counters/C00013.md +++ b/counters/C00013.md @@ -1,16 +1,10 @@ -# Rating framework for news - full transcripts, link source, add items, BBB for news - -* **Type**: Counter TTP - -* **Name**: Rating framework for news - full transcripts, link source, add items, BBB for news - -* **Id**: C00013 +# Counter C00013: Rating framework for news - full transcripts, link source, add items, BBB for news * **Summary**: Technique should be in terms of "strategic innoculation", raising the standards of what people expect in terms of evidence when consuming news. No corresponding AMITT technique. * **Playbooks**: -* **Metatechnique**: scoring +* **Metatechnique**: M006 - scoring * **Resources needed:** diff --git a/counters/C00014.md b/counters/C00014.md index c969b01..562d905 100644 --- a/counters/C00014.md +++ b/counters/C00014.md @@ -1,16 +1,10 @@ -# Real-time updates to fact-checking database - -* **Type**: Counter TTP - -* **Name**: Real-time updates to fact-checking database - -* **Id**: C00014 +# Counter C00014: Real-time updates to fact-checking database * **Summary**: existing examples at Buzzfeed and Fema, especially during disasters * **Playbooks**: -* **Metatechnique**: scoring +* **Metatechnique**: M006 - scoring * **Resources needed:** factcheckers diff --git a/counters/C00015.md b/counters/C00015.md index 75e31c4..b4902ea 100644 --- a/counters/C00015.md +++ b/counters/C00015.md @@ -1,16 +1,10 @@ -# Reputation scores for social media users - -* **Type**: Counter TTP - -* **Name**: Reputation scores for social media users - -* **Id**: C00015 +# Counter C00015: Reputation scores for social media users * **Summary**: * **Playbooks**: -* **Metatechnique**: scoring +* **Metatechnique**: M006 - scoring * **Resources needed:** data_scientist,datastreams diff --git a/counters/C00016.md b/counters/C00016.md index 8fec6d2..0e433c3 100644 --- a/counters/C00016.md +++ b/counters/C00016.md @@ -1,16 +1,10 @@ -# Social media as a privilege not right - -* **Type**: Counter TTP - -* **Name**: Social media as a privilege not right - -* **Id**: C00016 +# Counter C00016: Social media as a privilege not right * **Summary**: * **Playbooks**: -* **Metatechnique**: cleaning +* **Metatechnique**: M012 - cleaning * **Resources needed:** diff --git a/counters/C00017.md b/counters/C00017.md index e29315e..9054fbb 100644 --- a/counters/C00017.md +++ b/counters/C00017.md @@ -1,16 +1,10 @@ -# Media campaign promoting in-group to out-group in person communication / activities - -* **Type**: Counter TTP - -* **Name**: Media campaign promoting in-group to out-group in person communication / activities - -* **Id**: C00017 +# Counter C00017: Media campaign promoting in-group to out-group in person communication / activities * **Summary**: Technique could be in terms of forcing a reality-check by talking to people instead of reading about bogeymen. No corresponding AMITT technique. * **Playbooks**: -* **Metatechnique**: countermessaging +* **Metatechnique**: M010 - countermessaging * **Resources needed:** media diff --git a/counters/C00018.md b/counters/C00018.md index 20f9517..4f1a695 100644 --- a/counters/C00018.md +++ b/counters/C00018.md @@ -1,16 +1,10 @@ -# Promote constructive communication by shaming division-enablers - -* **Type**: Counter TTP - -* **Name**: Promote constructive communication by shaming division-enablers - -* **Id**: C00018 +# Counter C00018: Promote constructive communication by shaming division-enablers * **Summary**: Duplicate of "Promote playbooks to call out dividers" * **Playbooks**: -* **Metatechnique**: daylight +* **Metatechnique**: M003 - daylight * **Resources needed:** diff --git a/counters/C00019.md b/counters/C00019.md index 07b27f9..513ef31 100644 --- a/counters/C00019.md +++ b/counters/C00019.md @@ -1,10 +1,4 @@ -# Promote playbooks to call out division-enablers - -* **Type**: Counter TTP - -* **Name**: Promote playbooks to call out division-enablers - -* **Id**: C00019 +# Counter C00019: Promote playbooks to call out division-enablers * **Summary**: Duplicate of "Promote constructive communication by shaming dividers" @@ -15,7 +9,7 @@ -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 -* **Metatechnique**: daylight +* **Metatechnique**: M003 - daylight * **Resources needed:** diff --git a/counters/C00020.md b/counters/C00020.md index 4e8b5e1..eca9115 100644 --- a/counters/C00020.md +++ b/counters/C00020.md @@ -1,16 +1,10 @@ -# Deligitimise the 24 hour news cycle - -* **Type**: Counter TTP - -* **Name**: Deligitimise the 24 hour news cycle - -* **Id**: C00020 +# Counter C00020: Deligitimise the 24 hour news cycle * **Summary**: Unsure * **Playbooks**: -* **Metatechnique**: friction +* **Metatechnique**: M004 - friction * **Resources needed:** media diff --git a/counters/C00021.md b/counters/C00021.md index 078534a..285cf7c 100644 --- a/counters/C00021.md +++ b/counters/C00021.md @@ -1,16 +1,10 @@ -# Encourage in-person communication - -* **Type**: Counter TTP - -* **Name**: Encourage in-person communication - -* **Id**: C00021 +# Counter C00021: Encourage in-person communication * **Summary**: * **Playbooks**: -* **Metatechnique**: resilience +* **Metatechnique**: M001 - resilience * **Resources needed:** diff --git a/counters/C00022.md b/counters/C00022.md index 4e74950..34fa0dc 100644 --- a/counters/C00022.md +++ b/counters/C00022.md @@ -1,16 +1,10 @@ -# Innoculate. Positive campaign to promote feeling of safety - to counter ability and fear based attacks - -* **Type**: Counter TTP - -* **Name**: Innoculate. Positive campaign to promote feeling of safety - to counter ability and fear based attacks - -* **Id**: C00022 +# Counter C00022: Innoculate. Positive campaign to promote feeling of safety - to counter ability and fear based attacks * **Summary**: Unsure * **Playbooks**: -* **Metatechnique**: resilience +* **Metatechnique**: M001 - resilience * **Resources needed:** diff --git a/counters/C00023.md b/counters/C00023.md index a2290de..4fd3a2c 100644 --- a/counters/C00023.md +++ b/counters/C00023.md @@ -1,10 +1,4 @@ -# Promote civility as an identity that people will defend - -* **Type**: Counter TTP - -* **Name**: Promote civility as an identity that people will defend - -* **Id**: C00023 +# Counter C00023: Promote civility as an identity that people will defend * **Summary**: @@ -13,7 +7,7 @@ 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. -* **Metatechnique**: resilience +* **Metatechnique**: M001 - resilience * **Resources needed:** diff --git a/counters/C00024.md b/counters/C00024.md index ef23095..0341f17 100644 --- a/counters/C00024.md +++ b/counters/C00024.md @@ -1,16 +1,10 @@ -# Promote constructive narratives i.e. not polarising. Pro-life, pro-choice, or pro-USA? - -* **Type**: Counter TTP - -* **Name**: Promote constructive narratives i.e. not polarising. Pro-life, pro-choice, or pro-USA? - -* **Id**: C00024 +# Counter C00024: Promote constructive narratives i.e. not polarising. Pro-life, pro-choice, or pro-USA? * **Summary**: * **Playbooks**: -* **Metatechnique**: resilience +* **Metatechnique**: M001 - resilience * **Resources needed:** diff --git a/counters/C00025.md b/counters/C00025.md index a162f4a..121d2ec 100644 --- a/counters/C00025.md +++ b/counters/C00025.md @@ -1,16 +1,10 @@ -# Promote identity neutral narratives - -* **Type**: Counter TTP - -* **Name**: Promote identity neutral narratives - -* **Id**: C00025 +# Counter C00025: Promote identity neutral narratives * **Summary**: * **Playbooks**: -* **Metatechnique**: countermessaging +* **Metatechnique**: M010 - countermessaging * **Resources needed:** diff --git a/counters/C00026.md b/counters/C00026.md index 82f7f54..8ae5e22 100644 --- a/counters/C00026.md +++ b/counters/C00026.md @@ -1,16 +1,10 @@ -# Shore up democracy based messages (peace, freedom) - make it sexy - -* **Type**: Counter TTP - -* **Name**: Shore up democracy based messages (peace, freedom) - make it sexy - -* **Id**: C00026 +# Counter C00026: Shore up democracy based messages (peace, freedom) - make it sexy * **Summary**: Unsure * **Playbooks**: -* **Metatechnique**: countermessaging +* **Metatechnique**: M010 - countermessaging * **Resources needed:** diff --git a/counters/C00027.md b/counters/C00027.md index a7960fd..b28e1f7 100644 --- a/counters/C00027.md +++ b/counters/C00027.md @@ -1,16 +1,10 @@ -# Create culture of civility - -* **Type**: Counter TTP - -* **Name**: Create culture of civility - -* **Id**: C00027 +# Counter C00027: Create culture of civility * **Summary**: * **Playbooks**: -* **Metatechnique**: resilience +* **Metatechnique**: M001 - resilience * **Resources needed:** diff --git a/counters/C00028.md b/counters/C00028.md index 0f5fa31..f706346 100644 --- a/counters/C00028.md +++ b/counters/C00028.md @@ -1,10 +1,4 @@ -# Blockchain audit log and validation with collaborative decryption to post comments - -* **Type**: Counter TTP - -* **Name**: Blockchain audit log and validation with collaborative decryption to post comments - -* **Id**: C00028 +# Counter C00028: Blockchain audit log and validation with collaborative decryption to post comments * **Summary**: Use blockchain technology to require collaborative validation before posts or comments are submitted. @@ -12,7 +6,7 @@ This could be used to adjust upvote weight via a trust factor of people and orga * **Playbooks**: -* **Metatechnique**: verification +* **Metatechnique**: M011 - verification * **Resources needed:** diff --git a/counters/C00029.md b/counters/C00029.md index 314bbf9..b8186ac 100644 --- a/counters/C00029.md +++ b/counters/C00029.md @@ -1,10 +1,4 @@ -# Create fake website to issue counter narrative and counter narrative through physical merchandise - -* **Type**: Counter TTP - -* **Name**: Create fake website to issue counter narrative and counter narrative through physical merchandise - -* **Id**: C00029 +# Counter C00029: Create fake website to issue counter narrative and counter narrative through physical merchandise * **Summary**: @@ -14,7 +8,7 @@ Secondary Objective: -Obtain real-life identity of ignorant agents, to further disrupt their influence activities -* **Metatechnique**: diversion +* **Metatechnique**: M002 - diversion * **Resources needed:** diff --git a/counters/C00030.md b/counters/C00030.md index f56b824..0944511 100644 --- a/counters/C00030.md +++ b/counters/C00030.md @@ -1,16 +1,10 @@ -# Develop a compelling counter narrative (truth based) - -* **Type**: Counter TTP - -* **Name**: Develop a compelling counter narrative (truth based) - -* **Id**: C00030 +# Counter C00030: Develop a compelling counter narrative (truth based) * **Summary**: * **Playbooks**: -* **Metatechnique**: diversion +* **Metatechnique**: M002 - diversion * **Resources needed:** diff --git a/counters/C00031.md b/counters/C00031.md index bb21346..db2f64d 100644 --- a/counters/C00031.md +++ b/counters/C00031.md @@ -1,17 +1,11 @@ -# Dilute the core narrative - create multiple permutations, target / amplify - -* **Type**: Counter TTP - -* **Name**: Dilute the core narrative - create multiple permutations, target / amplify - -* **Id**: C00031 +# Counter C00031: Dilute the core narrative - create multiple permutations, target / amplify * **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 -* **Metatechnique**: dilution +* **Metatechnique**: M009 - dilution * **Resources needed:** diff --git a/counters/C00032.md b/counters/C00032.md index aae9d18..975bf64 100644 --- a/counters/C00032.md +++ b/counters/C00032.md @@ -1,17 +1,11 @@ -# Hijack content and link to truth- based info (platform) - -* **Type**: Counter TTP - -* **Name**: Hijack content and link to truth- based info (platform) - -* **Id**: C00032 +# Counter C00032: Hijack content and link to truth- based info (platform) * **Summary**: * **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 -* **Metatechnique**: diversion +* **Metatechnique**: M002 - diversion * **Resources needed:** diff --git a/counters/C00033.md b/counters/C00033.md index 54e74a2..2849cf2 100644 --- a/counters/C00033.md +++ b/counters/C00033.md @@ -1,16 +1,10 @@ -# Build cultural resistance to false content - -* **Type**: Counter TTP - -* **Name**: Build cultural resistance to false content - -* **Id**: C00033 +# Counter C00033: Build cultural resistance to false content * **Summary**: Cultural resistance to bullshit * **Playbooks**: -* **Metatechnique**: resilience +* **Metatechnique**: M001 - resilience * **Resources needed:** diff --git a/counters/C00034.md b/counters/C00034.md index c8d954e..b1d388f 100644 --- a/counters/C00034.md +++ b/counters/C00034.md @@ -1,16 +1,10 @@ -# Create more friction at account creation - -* **Type**: Counter TTP - -* **Name**: Create more friction at account creation - -* **Id**: C00034 +# Counter C00034: Create more friction at account creation * **Summary**: Counters fake account * **Playbooks**: -* **Metatechnique**: friction +* **Metatechnique**: M004 - friction * **Resources needed:** diff --git a/counters/C00035.md b/counters/C00035.md index d2b576c..202c448 100644 --- a/counters/C00035.md +++ b/counters/C00035.md @@ -1,16 +1,10 @@ -# Friction - -* **Type**: Counter TTP - -* **Name**: Friction - -* **Id**: C00035 +# Counter C00035: Friction * **Summary**: * **Playbooks**: -* **Metatechnique**: friction +* **Metatechnique**: M004 - friction * **Resources needed:** diff --git a/counters/C00036.md b/counters/C00036.md index 5861cd5..3181bd5 100644 --- a/counters/C00036.md +++ b/counters/C00036.md @@ -1,10 +1,4 @@ -# Infiltrate the in-group to discredit leaders (divide) - -* **Type**: Counter TTP - -* **Name**: Infiltrate the in-group to discredit leaders (divide) - -* **Id**: C00036 +# Counter C00036: Infiltrate the in-group to discredit leaders (divide) * **Summary**: All of these would be highly affected by infiltration or false-claims of infiltration. @@ -12,7 +6,7 @@ -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) -* **Metatechnique**: targeting +* **Metatechnique**: M013 - targeting * **Resources needed:** diff --git a/counters/C00039.md b/counters/C00039.md index 8dc028a..2a54a8b 100644 --- a/counters/C00039.md +++ b/counters/C00039.md @@ -1,10 +1,4 @@ -# Standard reporting for false profiles - -* **Type**: Counter TTP - -* **Name**: Standard reporting for false profiles - -* **Id**: C00039 +# Counter C00039: Standard reporting for false profiles * **Summary**: Deplatform. Reporting fake profiles is the only solution (identity issues). Only resolution @@ -22,7 +16,7 @@ Playbook 2: Playbook 3: Report suspected bots. - Report ToS violations -* **Metatechnique**: removal +* **Metatechnique**: M005 - removal * **Resources needed:** diff --git a/counters/C00040.md b/counters/C00040.md index 8f5d7b7..a188e8a 100644 --- a/counters/C00040.md +++ b/counters/C00040.md @@ -1,10 +1,4 @@ -# third party verification for people - -* **Type**: Counter TTP - -* **Name**: third party verification for people - -* **Id**: C00040 +# Counter C00040: third party verification for people * **Summary**: counters fake experts @@ -12,7 +6,7 @@ - Syndicated reputation management (fact-checking syndication) - Academia ISAO -* **Metatechnique**: verification +* **Metatechnique**: M011 - verification * **Resources needed:** diff --git a/counters/C00042.md b/counters/C00042.md index 026c91e..f581007 100644 --- a/counters/C00042.md +++ b/counters/C00042.md @@ -1,16 +1,10 @@ -# Address truth contained in narratives - -* **Type**: Counter TTP - -* **Name**: Address truth contained in narratives - -* **Id**: C00042 +# Counter C00042: Address truth contained in narratives * **Summary**: * **Playbooks**: -* **Metatechnique**: countermessaging +* **Metatechnique**: M010 - countermessaging * **Resources needed:** diff --git a/counters/C00043.md b/counters/C00043.md index d13d886..bb2ae40 100644 --- a/counters/C00043.md +++ b/counters/C00043.md @@ -1,10 +1,4 @@ -# Detect hijacked accounts and reallocate them - -* **Type**: Counter TTP - -* **Name**: Detect hijacked accounts and reallocate them - -* **Id**: C00043 +# Counter C00043: Detect hijacked accounts and reallocate them * **Summary**: @@ -15,7 +9,7 @@ Playbook 3: Detect sudden deviation in user sentiment such as suddenly dropping 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" -* **Metatechnique**: cleaning +* **Metatechnique**: M012 - cleaning * **Resources needed:** platform_admin,activists,civil_society,money diff --git a/counters/C00044.md b/counters/C00044.md index 7535c2b..0bbd3b1 100644 --- a/counters/C00044.md +++ b/counters/C00044.md @@ -1,17 +1,11 @@ -# Keep people from posting to social media immediately - -* **Type**: Counter TTP - -* **Name**: Keep people from posting to social media immediately - -* **Id**: C00044 +# 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. * **Playbooks**: Rate restrict via regulation posting above a statistical threshold Unless account is de-anonymized and advertised as automated messaging -* **Metatechnique**: friction +* **Metatechnique**: M004 - friction * **Resources needed:** platform_algorithms diff --git a/counters/C00045.md b/counters/C00045.md index 0bdaf53..51b420a 100644 --- a/counters/C00045.md +++ b/counters/C00045.md @@ -1,16 +1,10 @@ -# S4d detection and re-allocation approaches - -* **Type**: Counter TTP - -* **Name**: S4d detection and re-allocation approaches - -* **Id**: C00045 +# Counter C00045: S4d detection and re-allocation approaches * **Summary**: What's S4D? * **Playbooks**: -* **Metatechnique**: friction +* **Metatechnique**: M004 - friction * **Resources needed:** diff --git a/counters/C00046.md b/counters/C00046.md index d222c27..a3f307f 100644 --- a/counters/C00046.md +++ b/counters/C00046.md @@ -1,16 +1,10 @@ -# Marginalise and discredit extremist - -* **Type**: Counter TTP - -* **Name**: Marginalise and discredit extremist - -* **Id**: C00046 +# Counter C00046: Marginalise and discredit extremist * **Summary**: Duplicate of "Name and Shame" - recommend removal. No, not quite. * **Playbooks**: -* **Metatechnique**: targeting +* **Metatechnique**: M013 - targeting * **Resources needed:** diff --git a/counters/C00047.md b/counters/C00047.md index 39c7a6c..f4e600c 100644 --- a/counters/C00047.md +++ b/counters/C00047.md @@ -1,16 +1,10 @@ -# Coordinated inauthentics - -* **Type**: Counter TTP - -* **Name**: Coordinated inauthentics - -* **Id**: C00047 +# Counter C00047: Coordinated inauthentics * **Summary**: * **Playbooks**: -* **Metatechnique**: data pollution +* **Metatechnique**: M008 - data pollution * **Resources needed:** diff --git a/counters/C00048.md b/counters/C00048.md index 20df0df..83d2a18 100644 --- a/counters/C00048.md +++ b/counters/C00048.md @@ -1,16 +1,10 @@ -# Name and Shame - -* **Type**: Counter TTP - -* **Name**: Name and Shame - -* **Id**: C00048 +# Counter C00048: Name and Shame * **Summary**: * **Playbooks**: Identify the accounts, the real person's name and shame them on social media. -* **Metatechnique**: daylight +* **Metatechnique**: M003 - daylight * **Resources needed:** diff --git a/counters/C00049.md b/counters/C00049.md index c2e1a4f..d11be66 100644 --- a/counters/C00049.md +++ b/counters/C00049.md @@ -1,16 +1,10 @@ -# Influence literacy training - -* **Type**: Counter TTP - -* **Name**: Influence literacy training - -* **Id**: C00049 +# Counter C00049: Influence literacy training * **Summary**: Inoculate against "cult" recruiting * **Playbooks**: -* **Metatechnique**: resilience +* **Metatechnique**: M001 - resilience * **Resources needed:** educators diff --git a/counters/C00050.md b/counters/C00050.md index 76deb7c..531b9e8 100644 --- a/counters/C00050.md +++ b/counters/C00050.md @@ -1,16 +1,10 @@ -# Anti-elicitation training - -* **Type**: Counter TTP - -* **Name**: Anti-elicitation training - -* **Id**: C00050 +# Counter C00050: Anti-elicitation training * **Summary**: * **Playbooks**: -* **Metatechnique**: resilience +* **Metatechnique**: M001 - resilience * **Resources needed:** educators diff --git a/counters/C00051.md b/counters/C00051.md index 0c14aab..906233f 100644 --- a/counters/C00051.md +++ b/counters/C00051.md @@ -1,16 +1,10 @@ -# Phishing prevention education etc - -* **Type**: Counter TTP - -* **Name**: Phishing prevention education etc - -* **Id**: C00051 +# Counter C00051: Phishing prevention education etc * **Summary**: * **Playbooks**: -* **Metatechnique**: resilience +* **Metatechnique**: M001 - resilience * **Resources needed:** educators diff --git a/counters/C00052.md b/counters/C00052.md index 4f4d110..9c3b0eb 100644 --- a/counters/C00052.md +++ b/counters/C00052.md @@ -1,16 +1,10 @@ -# Infiltrate platforms - -* **Type**: Counter TTP - -* **Name**: Infiltrate platforms - -* **Id**: C00052 +# Counter C00052: Infiltrate platforms * **Summary**: Detect and degrade * **Playbooks**: -* **Metatechnique**: targeting +* **Metatechnique**: M013 - targeting * **Resources needed:** activists diff --git a/counters/C00053.md b/counters/C00053.md index 46517ae..1a3c528 100644 --- a/counters/C00053.md +++ b/counters/C00053.md @@ -1,16 +1,10 @@ -# Delete old accounts / Remove unused social media accounts - -* **Type**: Counter TTP - -* **Name**: Delete old accounts / Remove unused social media accounts - -* **Id**: C00053 +# Counter C00053: Delete old accounts / Remove unused social media accounts * **Summary**: * **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?). -* **Metatechnique**: cleaning +* **Metatechnique**: M012 - cleaning * **Resources needed:** platform_admin,platform_admin:socialmedia,public:account_owners diff --git a/counters/C00054.md b/counters/C00054.md index 4156daa..2cd06c1 100644 --- a/counters/C00054.md +++ b/counters/C00054.md @@ -1,16 +1,10 @@ -# Media literacy training. - -* **Type**: Counter TTP - -* **Name**: Media literacy training. - -* **Id**: C00054 +# Counter C00054: Media literacy training. * **Summary**: Leverage librarians / library for media literacy training. Covers detect, deny and degrade. * **Playbooks**: -* **Metatechnique**: resilience +* **Metatechnique**: M001 - resilience * **Resources needed:** educators,libraries,schools,DHS,NGO,platform_outreach,media,community_groups,religious_organisations diff --git a/counters/C00055.md b/counters/C00055.md index c812eee..eba5bb9 100644 --- a/counters/C00055.md +++ b/counters/C00055.md @@ -1,16 +1,10 @@ -# Empower existing regulators to govern social media - -* **Type**: Counter TTP - -* **Name**: Empower existing regulators to govern social media - -* **Id**: C00055 +# Counter C00055: Empower existing regulators to govern social media * **Summary**: Also covers Destroy. * **Playbooks**: Government regulation. Government shutdown. -* **Metatechnique**: metatechnique +* **Metatechnique**: M007 - metatechnique * **Resources needed:** government:policymakers,government,platform_admin diff --git a/counters/C00056.md b/counters/C00056.md index 478d3d4..2812b16 100644 --- a/counters/C00056.md +++ b/counters/C00056.md @@ -1,16 +1,10 @@ -# Get off social media - -* **Type**: Counter TTP - -* **Name**: Get off social media - -* **Id**: C00056 +# Counter C00056: Get off social media * **Summary**: * **Playbooks**: -* **Metatechnique**: friction +* **Metatechnique**: M004 - friction * **Resources needed:** diff --git a/counters/C00057.md b/counters/C00057.md index 4293e69..7932d2a 100644 --- a/counters/C00057.md +++ b/counters/C00057.md @@ -1,16 +1,10 @@ -# Privacy standards - -* **Type**: Counter TTP - -* **Name**: Privacy standards - -* **Id**: C00057 +# Counter C00057: Privacy standards * **Summary**: * **Playbooks**: -* **Metatechnique**: scoring +* **Metatechnique**: M006 - scoring * **Resources needed:** diff --git a/counters/C00058.md b/counters/C00058.md index 53ccf4f..4991056 100644 --- a/counters/C00058.md +++ b/counters/C00058.md @@ -1,16 +1,10 @@ -# Report crowdfunder as violator - -* **Type**: Counter TTP - -* **Name**: Report crowdfunder as violator - -* **Id**: C00058 +# Counter C00058: Report crowdfunder as violator * **Summary**: counters crowdfunding * **Playbooks**: -* **Metatechnique**: removal +* **Metatechnique**: M005 - removal * **Resources needed:** diff --git a/counters/C00059.md b/counters/C00059.md index 600327c..4c7532c 100644 --- a/counters/C00059.md +++ b/counters/C00059.md @@ -1,16 +1,10 @@ -# Verification of project before posting (counters funding campaigns) - -* **Type**: Counter TTP - -* **Name**: Verification of project before posting (counters funding campaigns) - -* **Id**: C00059 +# Counter C00059: Verification of project before posting (counters funding campaigns) * **Summary**: * **Playbooks**: -* **Metatechnique**: verification +* **Metatechnique**: M011 - verification * **Resources needed:** diff --git a/counters/C00060.md b/counters/C00060.md index f8accb5..730d386 100644 --- a/counters/C00060.md +++ b/counters/C00060.md @@ -1,16 +1,10 @@ -# Enhanced legal enforcement against for-profit follower/engagement factories - -* **Type**: Counter TTP - -* **Name**: Enhanced legal enforcement against for-profit follower/engagement factories - -* **Id**: C00060 +# Counter C00060: Enhanced legal enforcement against for-profit follower/engagement factories * **Summary**: * **Playbooks**: -* **Metatechnique**: targeting +* **Metatechnique**: M013 - targeting * **Resources needed:** government:policymakers diff --git a/counters/C00061.md b/counters/C00061.md index 53953af..d0d27e8 100644 --- a/counters/C00061.md +++ b/counters/C00061.md @@ -1,16 +1,10 @@ -# Innoculating at language - -* **Type**: Counter TTP - -* **Name**: Innoculating at language - -* **Id**: C00061 +# Counter C00061: Innoculating at language * **Summary**: * **Playbooks**: -* **Metatechnique**: resilience +* **Metatechnique**: M001 - resilience * **Resources needed:** diff --git a/counters/C00062.md b/counters/C00062.md index bb5c45f..c9798a8 100644 --- a/counters/C00062.md +++ b/counters/C00062.md @@ -1,16 +1,10 @@ -# Free open library sources worldwide - -* **Type**: Counter TTP - -* **Name**: Free open library sources worldwide - -* **Id**: C00062 +# Counter C00062: Free open library sources worldwide * **Summary**: Open-source libraries could be created that aid in some way for each technique. Even for Strategic Planning, some open-source frameworks such as AMITT can be created to counter the adversarial efforts. * **Playbooks**: -* **Metatechnique**: countermessaging +* **Metatechnique**: M010 - countermessaging * **Resources needed:** diff --git a/counters/C00063.md b/counters/C00063.md index 14b90ae..3522076 100644 --- a/counters/C00063.md +++ b/counters/C00063.md @@ -1,16 +1,10 @@ -# Ban political microtargeting - -* **Type**: Counter TTP - -* **Name**: Ban political microtargeting - -* **Id**: C00063 +# Counter C00063: Ban political microtargeting * **Summary**: * **Playbooks**: -* **Metatechnique**: removal +* **Metatechnique**: M005 - removal * **Resources needed:** government:policymakers diff --git a/counters/C00065.md b/counters/C00065.md index dad52f5..21343f8 100644 --- a/counters/C00065.md +++ b/counters/C00065.md @@ -1,16 +1,10 @@ -# Ban political ads - -* **Type**: Counter TTP - -* **Name**: Ban political ads - -* **Id**: C00065 +# Counter C00065: Ban political ads * **Summary**: * **Playbooks**: -* **Metatechnique**: removal +* **Metatechnique**: M005 - removal * **Resources needed:** government:policymakers diff --git a/counters/C00066.md b/counters/C00066.md index 967c64f..1d1df7b 100644 --- a/counters/C00066.md +++ b/counters/C00066.md @@ -1,16 +1,10 @@ -# Co-opt a hashtag and drown it out (hijack it back) - -* **Type**: Counter TTP - -* **Name**: Co-opt a hashtag and drown it out (hijack it back) - -* **Id**: C00066 +# Counter C00066: Co-opt a hashtag and drown it out (hijack it back) * **Summary**: * **Playbooks**: -* **Metatechnique**: dilution +* **Metatechnique**: M009 - dilution * **Resources needed:** diff --git a/counters/C00067.md b/counters/C00067.md index bc02a77..3521cda 100644 --- a/counters/C00067.md +++ b/counters/C00067.md @@ -1,16 +1,10 @@ -# Denigrate the recipient/ project (of online funding) - -* **Type**: Counter TTP - -* **Name**: Denigrate the recipient/ project (of online funding) - -* **Id**: C00067 +# Counter C00067: Denigrate the recipient/ project (of online funding) * **Summary**: * **Playbooks**: -* **Metatechnique**: targeting +* **Metatechnique**: M013 - targeting * **Resources needed:** diff --git a/counters/C00068.md b/counters/C00068.md index e87954d..11722db 100644 --- a/counters/C00068.md +++ b/counters/C00068.md @@ -1,16 +1,10 @@ -# Expose online funding as fake - -* **Type**: Counter TTP - -* **Name**: Expose online funding as fake - -* **Id**: C00068 +# Counter C00068: Expose online funding as fake * **Summary**: * **Playbooks**: -* **Metatechnique**: daylight +* **Metatechnique**: M003 - daylight * **Resources needed:** diff --git a/counters/C00069.md b/counters/C00069.md index a9fae3b..5ec5eb4 100644 --- a/counters/C00069.md +++ b/counters/C00069.md @@ -1,16 +1,10 @@ -# Mark clickbait visually - -* **Type**: Counter TTP - -* **Name**: Mark clickbait visually - -* **Id**: C00069 +# Counter C00069: Mark clickbait visually * **Summary**: * **Playbooks**: -* **Metatechnique**: daylight +* **Metatechnique**: M003 - daylight * **Resources needed:** diff --git a/counters/C00070.md b/counters/C00070.md index b05856f..eeaac32 100644 --- a/counters/C00070.md +++ b/counters/C00070.md @@ -1,10 +1,4 @@ -# Block access to platform. DDOS an attacker. - -* **Type**: Counter TTP - -* **Name**: Block access to platform. DDOS an attacker. - -* **Id**: C00070 +# Counter C00070: Block access to platform. DDOS an attacker. * **Summary**: TA02*: DDOS at the critical time (ie. midterm-2018 elections DDOS against troll farms) to deny an adversary's time-bound objective. @@ -16,7 +10,7 @@ T0046 - Search Engine Optimization: Sub-optimal website performance affect its s * **Playbooks**: -* **Metatechnique**: removal +* **Metatechnique**: M005 - removal * **Resources needed:** diff --git a/counters/C00071.md b/counters/C00071.md index 311cc1a..e6f6875 100644 --- a/counters/C00071.md +++ b/counters/C00071.md @@ -1,16 +1,10 @@ -# Block source of pollution - -* **Type**: Counter TTP - -* **Name**: Block source of pollution - -* **Id**: C00071 +# Counter C00071: Block source of pollution * **Summary**: * **Playbooks**: -* **Metatechnique**: removal +* **Metatechnique**: M005 - removal * **Resources needed:** diff --git a/counters/C00072.md b/counters/C00072.md index 4610a91..5940e3d 100644 --- a/counters/C00072.md +++ b/counters/C00072.md @@ -1,16 +1,10 @@ -# Content censorship in non-relevant domains e.g. Pinterest antivax - -* **Type**: Counter TTP - -* **Name**: Content censorship in non-relevant domains e.g. Pinterest antivax - -* **Id**: C00072 +# Counter C00072: Content censorship in non-relevant domains e.g. Pinterest antivax * **Summary**: * **Playbooks**: -* **Metatechnique**: removal +* **Metatechnique**: M005 - removal * **Resources needed:** diff --git a/counters/C00073.md b/counters/C00073.md index efd7844..8603810 100644 --- a/counters/C00073.md +++ b/counters/C00073.md @@ -1,16 +1,10 @@ -# Educate on how to handle info pollution. Push out targeted education on why it's pollution - -* **Type**: Counter TTP - -* **Name**: Educate on how to handle info pollution. Push out targeted education on why it's pollution - -* **Id**: C00073 +# Counter C00073: Educate on how to handle info pollution. Push out targeted education on why it's pollution * **Summary**: Strategic planning included as innoculating population has strategic value. Example is the "Learn to Discern" Program, funded by the Canadian government, operated in Ukraine from July 2015 to March 2016. The program trained 15,000 Ukrainians in ‘’safe, informed media consumption techniques,’’ including avoiding emotional manipulation, verifying sources, identifying hate speech, verifying expert credentials, detecting censorship, and debunking news, photos, and videos." * **Playbooks**: -* **Metatechnique**: resilience +* **Metatechnique**: M001 - resilience * **Resources needed:** educators diff --git a/counters/C00074.md b/counters/C00074.md index d0e9094..781f969 100644 --- a/counters/C00074.md +++ b/counters/C00074.md @@ -1,10 +1,4 @@ -# Identify identical content and mass deplatform - -* **Type**: Counter TTP - -* **Name**: Identify identical content and mass deplatform - -* **Id**: C00074 +# Counter C00074: Identify identical content and mass deplatform * **Summary**: @@ -16,7 +10,7 @@ Playbook 3: Use message hashing and fuzzy hashing to detect identical/similar co 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. -* **Metatechnique**: cleaning +* **Metatechnique**: M012 - cleaning * **Resources needed:** platform_admin,platform_admin:socialmedia diff --git a/counters/C00075.md b/counters/C00075.md index 2b62b83..d18ade4 100644 --- a/counters/C00075.md +++ b/counters/C00075.md @@ -1,16 +1,10 @@ -# normalise language - -* **Type**: Counter TTP - -* **Name**: normalise language - -* **Id**: C00075 +# Counter C00075: normalise language * **Summary**: * **Playbooks**: -* **Metatechnique**: countermessaging +* **Metatechnique**: M010 - countermessaging * **Resources needed:** diff --git a/counters/C00076.md b/counters/C00076.md index d9c0fa3..38c15a3 100644 --- a/counters/C00076.md +++ b/counters/C00076.md @@ -1,16 +1,10 @@ -# Prohibit images in political discourse channels - -* **Type**: Counter TTP - -* **Name**: Prohibit images in political discourse channels - -* **Id**: C00076 +# Counter C00076: Prohibit images in political discourse channels * **Summary**: * **Playbooks**: -* **Metatechnique**: removal +* **Metatechnique**: M005 - removal * **Resources needed:** diff --git a/counters/C00077.md b/counters/C00077.md index 189e4e1..66dc2dc 100644 --- a/counters/C00077.md +++ b/counters/C00077.md @@ -1,16 +1,10 @@ -# Active defence: replay "develop people" - -* **Type**: Counter TTP - -* **Name**: Active defence: replay "develop people" - -* **Id**: C00077 +# Counter C00077: Active defence: replay "develop people" * **Summary**: * **Playbooks**: -* **Metatechnique**: targeting +* **Metatechnique**: M013 - targeting * **Resources needed:** diff --git a/counters/C00078.md b/counters/C00078.md index 265dde4..588eaae 100644 --- a/counters/C00078.md +++ b/counters/C00078.md @@ -1,16 +1,10 @@ -# Change Search Algorithms for Disinformation Content. More specifically, change image search algorithms for hate groups and extremists - -* **Type**: Counter TTP - -* **Name**: Change Search Algorithms for Disinformation Content. More specifically, change image search algorithms for hate groups and extremists - -* **Id**: C00078 +# Counter C00078: Change Search Algorithms for Disinformation Content. More specifically, change image search algorithms for hate groups and extremists * **Summary**: Note: Suggest a more generic technique since this applies to non-image content and to non-hate groups. * **Playbooks**: -* **Metatechnique**: diversion +* **Metatechnique**: M002 - diversion * **Resources needed:** diff --git a/counters/C00079.md b/counters/C00079.md index 631f5ab..e432431 100644 --- a/counters/C00079.md +++ b/counters/C00079.md @@ -1,16 +1,10 @@ -# Change search algorithms for hate and extremist queries to show content sympathetic to opposite side - -* **Type**: Counter TTP - -* **Name**: Change search algorithms for hate and extremist queries to show content sympathetic to opposite side - -* **Id**: C00079 +# Counter C00079: Change search algorithms for hate and extremist queries to show content sympathetic to opposite side * **Summary**: * **Playbooks**: -* **Metatechnique**: diversion +* **Metatechnique**: M002 - diversion * **Resources needed:** diff --git a/counters/C00080.md b/counters/C00080.md index c6d7abb..4df9538 100644 --- a/counters/C00080.md +++ b/counters/C00080.md @@ -1,16 +1,10 @@ -# Create competing narrative - -* **Type**: Counter TTP - -* **Name**: Create competing narrative - -* **Id**: C00080 +# Counter C00080: Create competing narrative * **Summary**: * **Playbooks**: -* **Metatechnique**: diversion +* **Metatechnique**: M002 - diversion * **Resources needed:** diff --git a/counters/C00081.md b/counters/C00081.md index 12acef1..1f8efc9 100644 --- a/counters/C00081.md +++ b/counters/C00081.md @@ -1,16 +1,10 @@ -# Discredit by pointing out the "noise" and informing public that "flooding" is a technique of disinformation campaigns; point out intended objective of "noise" - -* **Type**: Counter TTP - -* **Name**: Discredit by pointing out the "noise" and informing public that "flooding" is a technique of disinformation campaigns; point out intended objective of "noise" - -* **Id**: C00081 +# Counter C00081: Discredit by pointing out the "noise" and informing public that "flooding" is a technique of disinformation campaigns; point out intended objective of "noise" * **Summary**: * **Playbooks**: -* **Metatechnique**: daylight +* **Metatechnique**: M003 - daylight * **Resources needed:** diff --git a/counters/C00082.md b/counters/C00082.md index 826615b..aaf0f6c 100644 --- a/counters/C00082.md +++ b/counters/C00082.md @@ -1,16 +1,10 @@ -# Ground truthing as automated response to pollution - -* **Type**: Counter TTP - -* **Name**: Ground truthing as automated response to pollution - -* **Id**: C00082 +# Counter C00082: Ground truthing as automated response to pollution * **Summary**: * **Playbooks**: -* **Metatechnique**: countermessaging +* **Metatechnique**: M010 - countermessaging * **Resources needed:** diff --git a/counters/C00084.md b/counters/C00084.md index 16ac16c..32bad2c 100644 --- a/counters/C00084.md +++ b/counters/C00084.md @@ -1,16 +1,10 @@ -# Steal their truths - -* **Type**: Counter TTP - -* **Name**: Steal their truths - -* **Id**: C00084 +# Counter C00084: Steal their truths * **Summary**: Try technique T0003. * **Playbooks**: -* **Metatechnique**: diversion +* **Metatechnique**: M002 - diversion * **Resources needed:** diff --git a/counters/C00085.md b/counters/C00085.md index 182bad2..42d7b28 100644 --- a/counters/C00085.md +++ b/counters/C00085.md @@ -1,10 +1,4 @@ -# Demuting content - -* **Type**: Counter TTP - -* **Name**: Demuting content - -* **Id**: C00085 +# Counter C00085: Demuting content * **Summary**: Unsure. My interpretation is that disinformation campaigns can be disrupted by archiving their contents online, for intelligence analysis and public transparency. @@ -16,7 +10,7 @@ Having these tagged and shamed for as associated by bad actors would be benefici * **Playbooks**: -* **Metatechnique**: daylight +* **Metatechnique**: M003 - daylight * **Resources needed:** diff --git a/counters/C00086.md b/counters/C00086.md index bb061e1..96d9fa5 100644 --- a/counters/C00086.md +++ b/counters/C00086.md @@ -1,10 +1,4 @@ -# Distract from noise with addictive content - -* **Type**: Counter TTP - -* **Name**: Distract from noise with addictive content - -* **Id**: C00086 +# Counter C00086: Distract from noise with addictive content * **Summary**: Example: Interject addictive links or contents into discussions of disinformation materials and measure a "conversion rate" of users who engage with your content and away from the social media channel's "information bubble" around the disinformation item. Use bots to amplify and upvote the addictive content. @@ -12,7 +6,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co * **Playbooks**: -* **Metatechnique**: diversion +* **Metatechnique**: M002 - diversion * **Resources needed:** diff --git a/counters/C00087.md b/counters/C00087.md index e15789d..f91f145 100644 --- a/counters/C00087.md +++ b/counters/C00087.md @@ -1,16 +1,10 @@ -# Make more noise - -* **Type**: Counter TTP - -* **Name**: Make more noise - -* **Id**: C00087 +# Counter C00087: Make more noise * **Summary**: Recommend Removal: I see "Make More Noise" as similar to "Do everything in AMITT, better than the adversary". It is not a counter in itself but rather an adversarial attack tool that can be used for blue team narratives. * **Playbooks**: -* **Metatechnique**: dilution +* **Metatechnique**: M009 - dilution * **Resources needed:** diff --git a/counters/C00088.md b/counters/C00088.md index 7c15858..61a164b 100644 --- a/counters/C00088.md +++ b/counters/C00088.md @@ -1,16 +1,10 @@ -# Poison pill recasting of message - -* **Type**: Counter TTP - -* **Name**: Poison pill recasting of message - -* **Id**: C00088 +# Counter C00088: Poison pill recasting of message * **Summary**: Unsure how to interpret. The techniques listed all involve some amount of promotion which could be manipulated. For example, online fundings or rallies could be advertised, through compromised or fake channels, as being associated with "far-up/down/left/right" actors. "Long Game" narratives could be subjected in a similar way with negative connotations. * **Playbooks**: -* **Metatechnique**: diversion +* **Metatechnique**: M002 - diversion * **Resources needed:** diff --git a/counters/C00089.md b/counters/C00089.md index 430efb0..352ab91 100644 --- a/counters/C00089.md +++ b/counters/C00089.md @@ -1,16 +1,10 @@ -# Throttle number of forwards - -* **Type**: Counter TTP - -* **Name**: Throttle number of forwards - -* **Id**: C00089 +# Counter C00089: Throttle number of forwards * **Summary**: * **Playbooks**: -* **Metatechnique**: friction +* **Metatechnique**: M004 - friction * **Resources needed:** diff --git a/counters/C00090.md b/counters/C00090.md index 7322726..36c79c5 100644 --- a/counters/C00090.md +++ b/counters/C00090.md @@ -1,16 +1,10 @@ -# Fake engagement system - -* **Type**: Counter TTP - -* **Name**: Fake engagement system - -* **Id**: C00090 +# Counter C00090: Fake engagement system * **Summary**: * **Playbooks**: -* **Metatechnique**: diversion +* **Metatechnique**: M002 - diversion * **Resources needed:** diff --git a/counters/C00091.md b/counters/C00091.md index 5e3bb91..1a5b9f8 100644 --- a/counters/C00091.md +++ b/counters/C00091.md @@ -1,16 +1,10 @@ -# Honeypot social community - -* **Type**: Counter TTP - -* **Name**: Honeypot social community - -* **Id**: C00091 +# Counter C00091: Honeypot social community * **Summary**: * **Playbooks**: -* **Metatechnique**: diversion +* **Metatechnique**: M002 - diversion * **Resources needed:** diff --git a/counters/C00092.md b/counters/C00092.md index ba37f41..6310749 100644 --- a/counters/C00092.md +++ b/counters/C00092.md @@ -1,16 +1,10 @@ -# Establish a truth teller reputation score for individuals with many followers - -* **Type**: Counter TTP - -* **Name**: Establish a truth teller reputation score for individuals with many followers - -* **Id**: C00092 +# Counter C00092: Establish a truth teller reputation score for individuals with many followers * **Summary**: * **Playbooks**: -* **Metatechnique**: scoring +* **Metatechnique**: M006 - scoring * **Resources needed:** diff --git a/counters/C00093.md b/counters/C00093.md index f520427..2c720c8 100644 --- a/counters/C00093.md +++ b/counters/C00093.md @@ -1,16 +1,10 @@ -# Establish tailored code of conduct for individuals with many followers - -* **Type**: Counter TTP - -* **Name**: Establish tailored code of conduct for individuals with many followers - -* **Id**: C00093 +# Counter C00093: Establish tailored code of conduct for individuals with many followers * **Summary**: * **Playbooks**: -* **Metatechnique**: resilience +* **Metatechnique**: M001 - resilience * **Resources needed:** diff --git a/counters/C00094.md b/counters/C00094.md index 691147d..cf0815a 100644 --- a/counters/C00094.md +++ b/counters/C00094.md @@ -1,16 +1,10 @@ -# Force full disclosure on corporate sponsor of research - -* **Type**: Counter TTP - -* **Name**: Force full disclosure on corporate sponsor of research - -* **Id**: C00094 +# Counter C00094: Force full disclosure on corporate sponsor of research * **Summary**: * **Playbooks**: -* **Metatechnique**: daylight +* **Metatechnique**: M003 - daylight * **Resources needed:** diff --git a/counters/C00095.md b/counters/C00095.md index 83b0604..f42068e 100644 --- a/counters/C00095.md +++ b/counters/C00095.md @@ -1,16 +1,10 @@ -# Keep score - -* **Type**: Counter TTP - -* **Name**: Keep score - -* **Id**: C00095 +# Counter C00095: Keep score * **Summary**: * **Playbooks**: -* **Metatechnique**: scoring +* **Metatechnique**: M006 - scoring * **Resources needed:** diff --git a/counters/C00096.md b/counters/C00096.md index 5fb0792..83e8801 100644 --- a/counters/C00096.md +++ b/counters/C00096.md @@ -1,16 +1,10 @@ -# Strengthen institutions that are always truth tellers - -* **Type**: Counter TTP - -* **Name**: Strengthen institutions that are always truth tellers - -* **Id**: C00096 +# Counter C00096: Strengthen institutions that are always truth tellers * **Summary**: * **Playbooks**: -* **Metatechnique**: scoring +* **Metatechnique**: M006 - scoring * **Resources needed:** diff --git a/counters/C00097.md b/counters/C00097.md index 8c39654..50bd914 100644 --- a/counters/C00097.md +++ b/counters/C00097.md @@ -1,16 +1,10 @@ -# Require use of verified identities to contribute to poll or comment - -* **Type**: Counter TTP - -* **Name**: Require use of verified identities to contribute to poll or comment - -* **Id**: C00097 +# Counter C00097: Require use of verified identities to contribute to poll or comment * **Summary**: * **Playbooks**: -* **Metatechnique**: friction +* **Metatechnique**: M004 - friction * **Resources needed:** platform_algorithms diff --git a/counters/C00098.md b/counters/C00098.md index 25debba..713a5a0 100644 --- a/counters/C00098.md +++ b/counters/C00098.md @@ -1,16 +1,10 @@ -# Revocation of "verified" - -* **Type**: Counter TTP - -* **Name**: Revocation of "verified" - -* **Id**: C00098 +# Counter C00098: Revocation of "verified" * **Summary**: * **Playbooks**: Affected person contacts platform for action -* **Metatechnique**: friction +* **Metatechnique**: M004 - friction * **Resources needed:** platform_admin diff --git a/counters/C00099.md b/counters/C00099.md index 5243c58..8837b5f 100644 --- a/counters/C00099.md +++ b/counters/C00099.md @@ -1,16 +1,10 @@ -# Strengthen verification methods - -* **Type**: Counter TTP - -* **Name**: Strengthen verification methods - -* **Id**: C00099 +# Counter C00099: Strengthen verification methods * **Summary**: * **Playbooks**: -* **Metatechnique**: friction +* **Metatechnique**: M004 - friction * **Resources needed:** platform_algorithms diff --git a/counters/C00100.md b/counters/C00100.md index c6f1cd1..542f155 100644 --- a/counters/C00100.md +++ b/counters/C00100.md @@ -1,16 +1,10 @@ -# Hashtag jacking - -* **Type**: Counter TTP - -* **Name**: Hashtag jacking - -* **Id**: C00100 +# Counter C00100: Hashtag jacking * **Summary**: * **Playbooks**: -* **Metatechnique**: diversion +* **Metatechnique**: M002 - diversion * **Resources needed:** diff --git a/counters/C00101.md b/counters/C00101.md index e262562..408663f 100644 --- a/counters/C00101.md +++ b/counters/C00101.md @@ -1,16 +1,10 @@ -# Create participant friction - -* **Type**: Counter TTP - -* **Name**: Create participant friction - -* **Id**: C00101 +# Counter C00101: Create participant friction * **Summary**: * **Playbooks**: -* **Metatechnique**: friction +* **Metatechnique**: M004 - friction * **Resources needed:** platform_algorithms diff --git a/counters/C00102.md b/counters/C00102.md index deab65c..81c9425 100644 --- a/counters/C00102.md +++ b/counters/C00102.md @@ -1,16 +1,10 @@ -# Make repeat voting harder - -* **Type**: Counter TTP - -* **Name**: Make repeat voting harder - -* **Id**: C00102 +# Counter C00102: Make repeat voting harder * **Summary**: * **Playbooks**: -* **Metatechnique**: friction +* **Metatechnique**: M004 - friction * **Resources needed:** platform_admin diff --git a/counters/C00103.md b/counters/C00103.md index a34dc65..c5d7a86 100644 --- a/counters/C00103.md +++ b/counters/C00103.md @@ -1,16 +1,10 @@ -# Create a bot that engages / distract trolls - -* **Type**: Counter TTP - -* **Name**: Create a bot that engages / distract trolls - -* **Id**: C00103 +# Counter C00103: Create a bot that engages / distract trolls * **Summary**: Use T00030 backstop personas * **Playbooks**: -* **Metatechnique**: diversion +* **Metatechnique**: M002 - diversion * **Resources needed:** developers diff --git a/counters/C00105.md b/counters/C00105.md index 523a7dc..f0ac558 100644 --- a/counters/C00105.md +++ b/counters/C00105.md @@ -1,16 +1,10 @@ -# Buy more advertising than the adversary to shift influence and algorithms - -* **Type**: Counter TTP - -* **Name**: Buy more advertising than the adversary to shift influence and algorithms - -* **Id**: C00105 +# Counter C00105: Buy more advertising than the adversary to shift influence and algorithms * **Summary**: * **Playbooks**: -* **Metatechnique**: dilution +* **Metatechnique**: M009 - dilution * **Resources needed:** money,adtech diff --git a/counters/C00106.md b/counters/C00106.md index ce664ff..0bce5f6 100644 --- a/counters/C00106.md +++ b/counters/C00106.md @@ -1,16 +1,10 @@ -# Click-bait centrist content - -* **Type**: Counter TTP - -* **Name**: Click-bait centrist content - -* **Id**: C00106 +# Counter C00106: Click-bait centrist content * **Summary**: Create emotive centrist content that gets more clicks * **Playbooks**: -* **Metatechnique**: diversion +* **Metatechnique**: M002 - diversion * **Resources needed:** diff --git a/counters/C00107.md b/counters/C00107.md index 2cae6fe..f44c36b 100644 --- a/counters/C00107.md +++ b/counters/C00107.md @@ -1,16 +1,10 @@ -# Content moderation - -* **Type**: Counter TTP - -* **Name**: Content moderation - -* **Id**: C00107 +# Counter C00107: Content moderation * **Summary**: * **Playbooks**: -* **Metatechnique**: scoring +* **Metatechnique**: M006 - scoring * **Resources needed:** diff --git a/counters/C00109.md b/counters/C00109.md index 5ccb059..2f68a85 100644 --- a/counters/C00109.md +++ b/counters/C00109.md @@ -1,16 +1,10 @@ -# De-escalation - -* **Type**: Counter TTP - -* **Name**: De-escalation - -* **Id**: C00109 +# Counter C00109: De-escalation * **Summary**: * **Playbooks**: -* **Metatechnique**: resilience +* **Metatechnique**: M001 - resilience * **Resources needed:** diff --git a/counters/C00110.md b/counters/C00110.md index d82ae00..185ad5c 100644 --- a/counters/C00110.md +++ b/counters/C00110.md @@ -1,16 +1,10 @@ -# Monetize centrist SEO by subsidizing the difference in greater clicks towards extremist content - -* **Type**: Counter TTP - -* **Name**: Monetize centrist SEO by subsidizing the difference in greater clicks towards extremist content - -* **Id**: C00110 +# Counter C00110: Monetize centrist SEO by subsidizing the difference in greater clicks towards extremist content * **Summary**: * **Playbooks**: -* **Metatechnique**: friction +* **Metatechnique**: M004 - friction * **Resources needed:** funding diff --git a/counters/C00111.md b/counters/C00111.md index cafaf8b..723034a 100644 --- a/counters/C00111.md +++ b/counters/C00111.md @@ -1,16 +1,10 @@ -# Present sympathetic views of opposite side - -* **Type**: Counter TTP - -* **Name**: Present sympathetic views of opposite side - -* **Id**: C00111 +# Counter C00111: Present sympathetic views of opposite side * **Summary**: * **Playbooks**: -* **Metatechnique**: resilience +* **Metatechnique**: M001 - resilience * **Resources needed:** media,content_creators diff --git a/counters/C00112.md b/counters/C00112.md index 774a377..c3f0247 100644 --- a/counters/C00112.md +++ b/counters/C00112.md @@ -1,16 +1,10 @@ -# "Prove they are not an op!" - -* **Type**: Counter TTP - -* **Name**: "Prove they are not an op!" - -* **Id**: C00112 +# Counter C00112: "Prove they are not an op!" * **Summary**: This applies to the entirety of the matrix as I read this as "create awareness around the use of all of these techniques" * **Playbooks**: -* **Metatechnique**: friction +* **Metatechnique**: M004 - friction * **Resources needed:** diff --git a/counters/C00113.md b/counters/C00113.md index 5ad91f7..a58b1f7 100644 --- a/counters/C00113.md +++ b/counters/C00113.md @@ -1,16 +1,10 @@ -# Debunk and defuse a fake expert / credentials. Attack audience quality of fake expert - -* **Type**: Counter TTP - -* **Name**: Debunk and defuse a fake expert / credentials. Attack audience quality of fake expert - -* **Id**: C00113 +# Counter C00113: Debunk and defuse a fake expert / credentials. Attack audience quality of fake expert * **Summary**: * **Playbooks**: -* **Metatechnique**: daylight +* **Metatechnique**: M003 - daylight * **Resources needed:** diff --git a/counters/C00114.md b/counters/C00114.md index 5cab8da..b6665ef 100644 --- a/counters/C00114.md +++ b/counters/C00114.md @@ -1,16 +1,10 @@ -# Don't engage with payloads - -* **Type**: Counter TTP - -* **Name**: Don't engage with payloads - -* **Id**: C00114 +# Counter C00114: Don't engage with payloads * **Summary**: * **Playbooks**: -* **Metatechnique**: friction +* **Metatechnique**: M004 - friction * **Resources needed:** public diff --git a/counters/C00115.md b/counters/C00115.md index 27cae4a..5052680 100644 --- a/counters/C00115.md +++ b/counters/C00115.md @@ -1,16 +1,10 @@ -# Expose actor and intentions - -* **Type**: Counter TTP - -* **Name**: Expose actor and intentions - -* **Id**: C00115 +# Counter C00115: Expose actor and intentions * **Summary**: * **Playbooks**: -* **Metatechnique**: daylight +* **Metatechnique**: M003 - daylight * **Resources needed:** diff --git a/counters/C00116.md b/counters/C00116.md index 439a70d..ae15179 100644 --- a/counters/C00116.md +++ b/counters/C00116.md @@ -1,16 +1,10 @@ -# Provide proof of involvement - -* **Type**: Counter TTP - -* **Name**: Provide proof of involvement - -* **Id**: C00116 +# Counter C00116: Provide proof of involvement * **Summary**: * **Playbooks**: -* **Metatechnique**: daylight +* **Metatechnique**: M003 - daylight * **Resources needed:** diff --git a/counters/C00117.md b/counters/C00117.md index 73fe7a1..3d7e1ad 100644 --- a/counters/C00117.md +++ b/counters/C00117.md @@ -1,16 +1,10 @@ -# Downgrade de-amplify label promote counter to disinformation - -* **Type**: Counter TTP - -* **Name**: Downgrade de-amplify label promote counter to disinformation - -* **Id**: C00117 +# Counter C00117: Downgrade de-amplify label promote counter to disinformation * **Summary**: * **Playbooks**: -* **Metatechnique**: countermessaging +* **Metatechnique**: M010 - countermessaging * **Resources needed:** diff --git a/counters/C00118.md b/counters/C00118.md index 0c17190..3267e63 100644 --- a/counters/C00118.md +++ b/counters/C00118.md @@ -1,16 +1,10 @@ -# Repurpose images with new text - -* **Type**: Counter TTP - -* **Name**: Repurpose images with new text - -* **Id**: C00118 +# Counter C00118: Repurpose images with new text * **Summary**: * **Playbooks**: -* **Metatechnique**: countermessaging +* **Metatechnique**: M010 - countermessaging * **Resources needed:** diff --git a/counters/C00119.md b/counters/C00119.md index 1405de1..29b9458 100644 --- a/counters/C00119.md +++ b/counters/C00119.md @@ -1,16 +1,10 @@ -# Engage payload and debunk. Provide link to facts. - -* **Type**: Counter TTP - -* **Name**: Engage payload and debunk. Provide link to facts. - -* **Id**: C00119 +# Counter C00119: Engage payload and debunk. Provide link to facts. * **Summary**: Might be okay. * **Playbooks**: -* **Metatechnique**: countermessaging +* **Metatechnique**: M010 - countermessaging * **Resources needed:** diff --git a/counters/C00120.md b/counters/C00120.md index 150058f..319d045 100644 --- a/counters/C00120.md +++ b/counters/C00120.md @@ -1,16 +1,10 @@ -# Open dialogue about design of platforms to produce different outcomes - -* **Type**: Counter TTP - -* **Name**: Open dialogue about design of platforms to produce different outcomes - -* **Id**: C00120 +# Counter C00120: Open dialogue about design of platforms to produce different outcomes * **Summary**: * **Playbooks**: -* **Metatechnique**: metatechnique +* **Metatechnique**: M007 - metatechnique * **Resources needed:** diff --git a/counters/C00121.md b/counters/C00121.md index 343520f..16dfa27 100644 --- a/counters/C00121.md +++ b/counters/C00121.md @@ -1,16 +1,10 @@ -# Tool transparency and literacy for channels people follow. - -* **Type**: Counter TTP - -* **Name**: Tool transparency and literacy for channels people follow. - -* **Id**: C00121 +# Counter C00121: Tool transparency and literacy for channels people follow. * **Summary**: * **Playbooks**: -* **Metatechnique**: resilience +* **Metatechnique**: M001 - resilience * **Resources needed:** diff --git a/counters/C00122.md b/counters/C00122.md index 5377bd1..39c9055 100644 --- a/counters/C00122.md +++ b/counters/C00122.md @@ -1,16 +1,10 @@ -# Content moderation. Censorship? - -* **Type**: Counter TTP - -* **Name**: Content moderation. Censorship? - -* **Id**: C00122 +# Counter C00122: Content moderation. Censorship? * **Summary**: * **Playbooks**: -* **Metatechnique**: friction +* **Metatechnique**: M004 - friction * **Resources needed:** platform_admin diff --git a/counters/C00123.md b/counters/C00123.md index e8695a2..585ff9c 100644 --- a/counters/C00123.md +++ b/counters/C00123.md @@ -1,16 +1,10 @@ -# Bot control - -* **Type**: Counter TTP - -* **Name**: Bot control - -* **Id**: C00123 +# Counter C00123: Bot control * **Summary**: * **Playbooks**: -* **Metatechnique**: friction +* **Metatechnique**: M004 - friction * **Resources needed:** diff --git a/counters/C00124.md b/counters/C00124.md index ddc12c5..0041004 100644 --- a/counters/C00124.md +++ b/counters/C00124.md @@ -1,16 +1,10 @@ -# Don't feed the trolls - -* **Type**: Counter TTP - -* **Name**: Don't feed the trolls - -* **Id**: C00124 +# Counter C00124: Don't feed the trolls * **Summary**: * **Playbooks**: -* **Metatechnique**: friction +* **Metatechnique**: M004 - friction * **Resources needed:** public,media diff --git a/counters/C00125.md b/counters/C00125.md index 93a2142..0cd3a36 100644 --- a/counters/C00125.md +++ b/counters/C00125.md @@ -1,16 +1,10 @@ -# Prepare the population with pre-announcements - -* **Type**: Counter TTP - -* **Name**: Prepare the population with pre-announcements - -* **Id**: C00125 +# Counter C00125: Prepare the population with pre-announcements * **Summary**: * **Playbooks**: -* **Metatechnique**: resilience +* **Metatechnique**: M001 - resilience * **Resources needed:** diff --git a/counters/C00126.md b/counters/C00126.md index 62d1c64..a591b66 100644 --- a/counters/C00126.md +++ b/counters/C00126.md @@ -1,16 +1,10 @@ -# Social media amber alert - -* **Type**: Counter TTP - -* **Name**: Social media amber alert - -* **Id**: C00126 +# Counter C00126: Social media amber alert * **Summary**: * **Playbooks**: -* **Metatechnique**: daylight +* **Metatechnique**: M003 - daylight * **Resources needed:** diff --git a/counters/C00128.md b/counters/C00128.md index 7778776..3ff317c 100644 --- a/counters/C00128.md +++ b/counters/C00128.md @@ -1,16 +1,10 @@ -# Create friction by marking content with ridicule or other "decelerants" - -* **Type**: Counter TTP - -* **Name**: Create friction by marking content with ridicule or other "decelerants" - -* **Id**: C00128 +# Counter C00128: Create friction by marking content with ridicule or other "decelerants" * **Summary**: * **Playbooks**: -* **Metatechnique**: dilution +* **Metatechnique**: M009 - dilution * **Resources needed:** influencers:trusted_authority diff --git a/counters/C00129.md b/counters/C00129.md index 427ebba..d729a48 100644 --- a/counters/C00129.md +++ b/counters/C00129.md @@ -1,16 +1,10 @@ -# Use banking to cut off access - -* **Type**: Counter TTP - -* **Name**: Use banking to cut off access - -* **Id**: C00129 +# Counter C00129: Use banking to cut off access * **Summary**: fiscal sanctions; parallel to counter terrorism * **Playbooks**: -* **Metatechnique**: reduce resources +* **Metatechnique**: M014 - reduce resources * **Resources needed:** diff --git a/counters/C00130.md b/counters/C00130.md index 7da4f05..6279b44 100644 --- a/counters/C00130.md +++ b/counters/C00130.md @@ -1,16 +1,10 @@ -# Mentorship: elders, youth, credit. Learn vicariously. - -* **Type**: Counter TTP - -* **Name**: Mentorship: elders, youth, credit. Learn vicariously. - -* **Id**: C00130 +# Counter C00130: Mentorship: elders, youth, credit. Learn vicariously. * **Summary**: * **Playbooks**: -* **Metatechnique**: resilience +* **Metatechnique**: M001 - resilience * **Resources needed:** diff --git a/counters/C00131.md b/counters/C00131.md index cd10bac..8028fbf 100644 --- a/counters/C00131.md +++ b/counters/C00131.md @@ -1,16 +1,10 @@ -# Seize and analyse botnet servers - -* **Type**: Counter TTP - -* **Name**: Seize and analyse botnet servers - -* **Id**: C00131 +# Counter C00131: Seize and analyse botnet servers * **Summary**: * **Playbooks**: -* **Metatechnique**: removal +* **Metatechnique**: M005 - removal * **Resources needed:** server_admin diff --git a/counters/C00133.md b/counters/C00133.md index 1fd6273..259a8ec 100644 --- a/counters/C00133.md +++ b/counters/C00133.md @@ -1,16 +1,10 @@ -# Deplatform Account* - -* **Type**: Counter TTP - -* **Name**: Deplatform Account* - -* **Id**: C00133 +# Counter C00133: Deplatform Account* * **Summary**: Note: Similar to Deplatform People but less generic. Perhaps both should be left. * **Playbooks**: -* **Metatechnique**: removal +* **Metatechnique**: M005 - removal * **Resources needed:** platform_admin diff --git a/counters/C00135.md b/counters/C00135.md index c148d22..3fd4e34 100644 --- a/counters/C00135.md +++ b/counters/C00135.md @@ -1,16 +1,10 @@ -# Deplatform message groups and/or message boards - -* **Type**: Counter TTP - -* **Name**: Deplatform message groups and/or message boards - -* **Id**: C00135 +# Counter C00135: Deplatform message groups and/or message boards * **Summary**: Merged two rows here. * **Playbooks**: -* **Metatechnique**: removal +* **Metatechnique**: M005 - removal * **Resources needed:** platform_admin diff --git a/counters/C00136.md b/counters/C00136.md index cbac6ec..95f6270 100644 --- a/counters/C00136.md +++ b/counters/C00136.md @@ -1,10 +1,4 @@ -# Microtarget most likely targets then send them countermessages - -* **Type**: Counter TTP - -* **Name**: Microtarget most likely targets then send them countermessages - -* **Id**: C00136 +# Counter C00136: Microtarget most likely targets then send them countermessages * **Summary**: @@ -12,7 +6,7 @@ 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. -* **Metatechnique**: countermessaging +* **Metatechnique**: M010 - countermessaging * **Resources needed:** diff --git a/counters/C00137.md b/counters/C00137.md index 642b43f..856fc46 100644 --- a/counters/C00137.md +++ b/counters/C00137.md @@ -1,10 +1,4 @@ -# Pollute the AB-testing data feeds - -* **Type**: Counter TTP - -* **Name**: Pollute the AB-testing data feeds - -* **Id**: C00137 +# Counter C00137: Pollute the AB-testing data feeds * **Summary**: 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. @@ -12,7 +6,7 @@ Playbook 2: Detect early trending/engagement and undermine the content by responding with 5Ds, toxic community behaviour, satirical responses, etc. Playbook 3: If adtech is used, fake clicks and engagements on the content. -* **Metatechnique**: data pollution +* **Metatechnique**: M008 - data pollution * **Resources needed:** diff --git a/counters/C00138.md b/counters/C00138.md index 046bc7c..07f946e 100644 --- a/counters/C00138.md +++ b/counters/C00138.md @@ -1,16 +1,10 @@ -# Spam domestic actors with lawsuits - -* **Type**: Counter TTP - -* **Name**: Spam domestic actors with lawsuits - -* **Id**: C00138 +# Counter C00138: Spam domestic actors with lawsuits * **Summary**: * **Playbooks**: -* **Metatechnique**: reduce resources +* **Metatechnique**: M014 - reduce resources * **Resources needed:** diff --git a/counters/C00139.md b/counters/C00139.md index e9bde96..52ac137 100644 --- a/counters/C00139.md +++ b/counters/C00139.md @@ -1,16 +1,10 @@ -# Weaponise youtube content matrices - -* **Type**: Counter TTP - -* **Name**: Weaponise youtube content matrices - -* **Id**: C00139 +# Counter C00139: Weaponise youtube content matrices * **Summary**: * **Playbooks**: -* **Metatechnique**: friction +* **Metatechnique**: M004 - friction * **Resources needed:** diff --git a/counters/C00140.md b/counters/C00140.md index 909b835..42bb025 100644 --- a/counters/C00140.md +++ b/counters/C00140.md @@ -1,10 +1,4 @@ -# "Bomb" link shorteners with lots of calls - -* **Type**: Counter TTP - -* **Name**: "Bomb" link shorteners with lots of calls - -* **Id**: C00140 +# Counter C00140: "Bomb" link shorteners with lots of calls * **Summary**: Applies to most of the content used by exposure techniques except "T0055 - Use hashtag" @@ -12,7 +6,7 @@ Playbook 2: Compromise service and reroute links to benign content or counter messaging. -* **Metatechnique**: data pollution +* **Metatechnique**: M008 - data pollution * **Resources needed:** diff --git a/counters/C00141.md b/counters/C00141.md index 8f01bcc..140a144 100644 --- a/counters/C00141.md +++ b/counters/C00141.md @@ -1,16 +1,10 @@ -# "Hey this story is old" popup when messaging with old URL - -* **Type**: Counter TTP - -* **Name**: "Hey this story is old" popup when messaging with old URL - -* **Id**: C00141 +# Counter C00141: "Hey this story is old" popup when messaging with old URL * **Summary**: This assumes that this technique is based on visits to an URL shortener or a captured news site that can publish a message of our choice. * **Playbooks**: -* **Metatechnique**: friction +* **Metatechnique**: M004 - friction * **Resources needed:** platform_algorithms diff --git a/counters/C00142.md b/counters/C00142.md index 8b85635..293b729 100644 --- a/counters/C00142.md +++ b/counters/C00142.md @@ -1,16 +1,10 @@ -# "This has been disproved - do you want to forward it" - -* **Type**: Counter TTP - -* **Name**: "This has been disproved - do you want to forward it" - -* **Id**: C00142 +# Counter C00142: "This has been disproved - do you want to forward it" * **Summary**: * **Playbooks**: -* **Metatechnique**: friction +* **Metatechnique**: M004 - friction * **Resources needed:** platform_algorithms diff --git a/counters/C00143.md b/counters/C00143.md index de02ca7..9210eb7 100644 --- a/counters/C00143.md +++ b/counters/C00143.md @@ -1,16 +1,10 @@ -# (botnet) DMCA takedown requests to waste group time - -* **Type**: Counter TTP - -* **Name**: (botnet) DMCA takedown requests to waste group time - -* **Id**: C00143 +# Counter C00143: (botnet) DMCA takedown requests to waste group time * **Summary**: * **Playbooks**: -* **Metatechnique**: targeting +* **Metatechnique**: M013 - targeting * **Resources needed:** public,elves diff --git a/counters/C00144.md b/counters/C00144.md index 08b4790..ce5617c 100644 --- a/counters/C00144.md +++ b/counters/C00144.md @@ -1,16 +1,10 @@ -# Buy out troll farm employees / offer them jobs - -* **Type**: Counter TTP - -* **Name**: Buy out troll farm employees / offer them jobs - -* **Id**: C00144 +# Counter C00144: Buy out troll farm employees / offer them jobs * **Summary**: * **Playbooks**: -* **Metatechnique**: reduce resources +* **Metatechnique**: M014 - reduce resources * **Resources needed:** diff --git a/counters/C00145.md b/counters/C00145.md index 8736dc5..b8d49a1 100644 --- a/counters/C00145.md +++ b/counters/C00145.md @@ -1,16 +1,10 @@ -# Pollute the data voids with wholesome content (Kittens! Babyshark!) - -* **Type**: Counter TTP - -* **Name**: Pollute the data voids with wholesome content (Kittens! Babyshark!) - -* **Id**: C00145 +# Counter C00145: Pollute the data voids with wholesome content (Kittens! Babyshark!) * **Summary**: * **Playbooks**: -* **Metatechnique**: data pollution +* **Metatechnique**: M008 - data pollution * **Resources needed:** diff --git a/counters/C00147.md b/counters/C00147.md index 729108c..9e87720 100644 --- a/counters/C00147.md +++ b/counters/C00147.md @@ -1,16 +1,10 @@ -# Make amplification of social media ports expire (e.g. can't like/ retweet after n days) - -* **Type**: Counter TTP - -* **Name**: Make amplification of social media ports expire (e.g. can't like/ retweet after n days) - -* **Id**: C00147 +# Counter C00147: Make amplification of social media ports expire (e.g. can't like/ retweet after n days) * **Summary**: * **Playbooks**: -* **Metatechnique**: friction +* **Metatechnique**: M004 - friction * **Resources needed:** platform_algorithms diff --git a/counters/C00148.md b/counters/C00148.md index 266f943..2583442 100644 --- a/counters/C00148.md +++ b/counters/C00148.md @@ -1,17 +1,11 @@ -# Add random links to network graphs - -* **Type**: Counter TTP - -* **Name**: Add random links to network graphs - -* **Id**: C00148 +# Counter C00148: Add random links to network graphs * **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. -* **Metatechnique**: data pollution +* **Metatechnique**: M008 - data pollution * **Resources needed:** platform_algorithms diff --git a/counters/C00149.md b/counters/C00149.md index 9976b02..214dc1b 100644 --- a/counters/C00149.md +++ b/counters/C00149.md @@ -1,10 +1,4 @@ -# Poison the monitoring & evaluation data - -* **Type**: Counter TTP - -* **Name**: Poison the monitoring & evaluation data - -* **Id**: C00149 +# Counter C00149: Poison the monitoring & evaluation data * **Summary**: @@ -14,7 +8,7 @@ Playbook 3: Use adtech to promote content inconsistent with TA demographics. If 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. -* **Metatechnique**: data pollution +* **Metatechnique**: M008 - data pollution * **Resources needed:** diff --git a/counters/C00150.md b/counters/C00150.md index 4cbdca2..b8e2367 100644 --- a/counters/C00150.md +++ b/counters/C00150.md @@ -1,16 +1,10 @@ -# “calling them out” - -* **Type**: Counter TTP - -* **Name**: “calling them out” - -* **Id**: C00150 +# Counter C00150: “calling them out” * **Summary**: 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 * **Playbooks**: -* **Metatechnique**: daylight +* **Metatechnique**: M003 - daylight * **Resources needed:** diff --git a/counters/C00151.md b/counters/C00151.md index a36c227..8bb5ac0 100644 --- a/counters/C00151.md +++ b/counters/C00151.md @@ -1,16 +1,10 @@ -# “fight in the light” - -* **Type**: Counter TTP - -* **Name**: “fight in the light” - -* **Id**: C00151 +# Counter C00151: “fight in the light” * **Summary**: Use leadership in the arts, entertainment, and media to highlight and build on fundamental tenets of democracy. * **Playbooks**: -* **Metatechnique**: daylight +* **Metatechnique**: M003 - daylight * **Resources needed:** diff --git a/counters/C00152.md b/counters/C00152.md index afd590b..82c52b3 100644 --- a/counters/C00152.md +++ b/counters/C00152.md @@ -1,16 +1,10 @@ -# “name and shame” - -* **Type**: Counter TTP - -* **Name**: “name and shame” - -* **Id**: C00152 +# Counter C00152: “name and shame” * **Summary**: 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 * **Playbooks**: -* **Metatechnique**: daylight +* **Metatechnique**: M003 - daylight * **Resources needed:** diff --git a/counters/C00153.md b/counters/C00153.md index bae0fcc..ed8dcfb 100644 --- a/counters/C00153.md +++ b/counters/C00153.md @@ -1,16 +1,10 @@ -# Use offensive cyber action - -* **Type**: Counter TTP - -* **Name**: Use offensive cyber action - -* **Id**: C00153 +# Counter C00153: Use offensive cyber action * **Summary**: Align offensive cyber action with information operations and counter disinformation approaches, where appropriate. * **Playbooks**: -* **Metatechnique**: targeting +* **Metatechnique**: M013 - targeting * **Resources needed:** infosec diff --git a/counters/C00154.md b/counters/C00154.md index dd24c70..eef6272 100644 --- a/counters/C00154.md +++ b/counters/C00154.md @@ -1,16 +1,10 @@ -# Ask media not to report false information - -* **Type**: Counter TTP - -* **Name**: Ask media not to report false information - -* **Id**: C00154 +# Counter C00154: Ask media not to report false information * **Summary**: * **Playbooks**: -* **Metatechnique**: removal +* **Metatechnique**: M005 - removal * **Resources needed:** media diff --git a/counters/C00155.md b/counters/C00155.md index cfc0478..fec345a 100644 --- a/counters/C00155.md +++ b/counters/C00155.md @@ -1,16 +1,10 @@ -# Ban incident actors from funding sites - -* **Type**: Counter TTP - -* **Name**: Ban incident actors from funding sites - -* **Id**: C00155 +# Counter C00155: Ban incident actors from funding sites * **Summary**: * **Playbooks**: -* **Metatechnique**: removal +* **Metatechnique**: M005 - removal * **Resources needed:** platform_admin:fundingsites diff --git a/counters/C00156.md b/counters/C00156.md index 1c75a89..d15e3fb 100644 --- a/counters/C00156.md +++ b/counters/C00156.md @@ -1,16 +1,10 @@ -# Better tell the U.S., NATO, and EU story. - -* **Type**: Counter TTP - -* **Name**: Better tell the U.S., NATO, and EU story. - -* **Id**: C00156 +# Counter C00156: Better tell the U.S., NATO, and EU story. * **Summary**: Civil engagement activities conducted on the part of EFP forces. In Latvia, for example, U.S. soldiers have reportedly conducted numerous civil engagements with the local populations. In one example, soldiers cut firewood for local Russian-speaking Latvians. Locals were reportedly overheard saying, “A Russian soldier wouldn’t do that.” NATO should likewise provide support and training, where needed, to local public affairs and other communication personnel. Local government and military public affairs personnel can play their part in creating and disseminating entertaining and sharable content that supports the EFP mission. * **Playbooks**: -* **Metatechnique**: countermessaging +* **Metatechnique**: M010 - countermessaging * **Resources needed:** government,military diff --git a/counters/C00157.md b/counters/C00157.md index 1531000..c1c9931 100644 --- a/counters/C00157.md +++ b/counters/C00157.md @@ -1,16 +1,10 @@ -# Build alternative news sources - -* **Type**: Counter TTP - -* **Name**: Build alternative news sources - -* **Id**: C00157 +# Counter C00157: Build alternative news sources * **Summary**: Create alternative local-language news sources to counter local-language propaganda outlets * **Playbooks**: -* **Metatechnique**: countermessaging +* **Metatechnique**: M010 - countermessaging * **Resources needed:** diff --git a/counters/C00158.md b/counters/C00158.md index 05ed977..a112f15 100644 --- a/counters/C00158.md +++ b/counters/C00158.md @@ -1,16 +1,10 @@ -# Use training to build the resilience of at-risk populations. - -* **Type**: Counter TTP - -* **Name**: Use training to build the resilience of at-risk populations. - -* **Id**: C00158 +# Counter C00158: Use training to build the resilience of at-risk populations. * **Summary**: NGO Baltic Centre for Media Excellence, with some international funding, provides training to journalists in the Baltics and conducts media literacy training in the region. In addition to helping journalists avoid becoming “unwitting multipliers of misleading information,” the organization works with school teachers in the region to help them “decode media and incorporate media research into teaching.” concepts of media literacy to a mass audience that authorities launch a public information campaign that teaches the program will take time to develop and establish impact, recommends curriculum-based training * **Playbooks**: -* **Metatechnique**: resilience +* **Metatechnique**: M001 - resilience * **Resources needed:** educators,media diff --git a/counters/C00159.md b/counters/C00159.md index f50f7ed..ac5f5e5 100644 --- a/counters/C00159.md +++ b/counters/C00159.md @@ -1,16 +1,10 @@ -# Campaign mindset and associated toolbox - -* **Type**: Counter TTP - -* **Name**: Campaign mindset and associated toolbox - -* **Id**: C00159 +# Counter C00159: Campaign mindset and associated toolbox * **Summary**: A campaign plan for the gray zone must account for U.S. vulnerabilities and strengths and must take care not to over-rely on any one tool of statecraft or line of effort. If the United States is to engage seriously in gray zone competition, it will need to identify and employ a broad spectrum of its national power to deter, compete, and counter (where necessary) other countries’ approaches. It is therefore critical that the United States understands its own capabilities, the capabilities of its adversaries, and international standards of conduct to compete in, shrink the size, and ultimately deter use of the gray zone. * **Playbooks**: -* **Metatechnique**: metatechnique +* **Metatechnique**: M007 - metatechnique * **Resources needed:** diff --git a/counters/C00160.md b/counters/C00160.md index 44e8c13..d1b36c5 100644 --- a/counters/C00160.md +++ b/counters/C00160.md @@ -1,16 +1,10 @@ -# find and train influencers - -* **Type**: Counter TTP - -* **Name**: find and train influencers - -* **Id**: C00160 +# Counter C00160: find and train influencers * **Summary**: Identify key influencers (e.g. use network analysis), then reach out to identified users and offer support, through either training or resources. * **Playbooks**: -* **Metatechnique**: resilience +* **Metatechnique**: M001 - resilience * **Resources needed:** data_scientist,influencers diff --git a/counters/C00161.md b/counters/C00161.md index e9bd7eb..2bffb2d 100644 --- a/counters/C00161.md +++ b/counters/C00161.md @@ -1,16 +1,10 @@ -# Coalition Building and Third-Party Inducements: - -* **Type**: Counter TTP - -* **Name**: Coalition Building and Third-Party Inducements: - -* **Id**: C00161 +# Counter C00161: Coalition Building and Third-Party Inducements: * **Summary**: Advance coalitions across borders and sectors, spanning public and private, as well as foreign and domestic, divides. Improve mechanisms to collaborate, share information, and develop coordinated approaches with the private sector at home and allies and partners abroad. * **Playbooks**: -* **Metatechnique**: metatechnique +* **Metatechnique**: M007 - metatechnique * **Resources needed:** diff --git a/counters/C00162.md b/counters/C00162.md index ab5ecf2..368d14e 100644 --- a/counters/C00162.md +++ b/counters/C00162.md @@ -1,16 +1,10 @@ -# collect data/map constellations of Russian“civil society”. Unravel/target the Potemkin villages - -* **Type**: Counter TTP - -* **Name**: collect data/map constellations of Russian“civil society”. Unravel/target the Potemkin villages - -* **Id**: C00162 +# Counter C00162: collect data/map constellations of Russian“civil society”. Unravel/target the Potemkin villages * **Summary**: Kremlin’s narrative spin extends through constellations of “civil society” organizations, political parties, churches, and other actors. Moscow leverages think tanks, human rights groups, election observers, Eurasianist integration groups, and orthodox groups. A collection of Russian civil society organizations, such as the Federal Agency for the Commonwealth of Independent States Affairs, Compatriots Living Abroad, and International Humanitarian Cooperation, together receive at least US$100 million per year, in addition to government-organized nongovernmental organizations (NGOs), at least 150 of which are funded by Russian presidential grants totaling US$70 million per year. * **Playbooks**: -* **Metatechnique**: targeting +* **Metatechnique**: M013 - targeting * **Resources needed:** diff --git a/counters/C00164.md b/counters/C00164.md index 2bfad6c..573d7d2 100644 --- a/counters/C00164.md +++ b/counters/C00164.md @@ -1,16 +1,10 @@ -# compatriot policy - -* **Type**: Counter TTP - -* **Name**: compatriot policy - -* **Id**: C00164 +# Counter C00164: compatriot policy * **Summary**: protect the interests of this population and, more importantly, influence the population to support pro-Russia causes and effectively influence the politics of its neighbors * **Playbooks**: -* **Metatechnique**: targeting +* **Metatechnique**: M013 - targeting * **Resources needed:** diff --git a/counters/C00165.md b/counters/C00165.md index ca23a91..ee2333a 100644 --- a/counters/C00165.md +++ b/counters/C00165.md @@ -1,16 +1,10 @@ -# Limit access to alterable documents - -* **Type**: Counter TTP - -* **Name**: Limit access to alterable documents - -* **Id**: C00165 +# Counter C00165: Limit access to alterable documents * **Summary**: e.g. for leaked legal documents, use court motions to limit future discovery actions * **Playbooks**: -* **Metatechnique**: friction +* **Metatechnique**: M004 - friction * **Resources needed:** diff --git a/counters/C00167.md b/counters/C00167.md index 6f1a32c..4cb04ce 100644 --- a/counters/C00167.md +++ b/counters/C00167.md @@ -1,16 +1,10 @@ -# Deploy Information and Narrative-Building in Service of Statecraft - -* **Type**: Counter TTP - -* **Name**: Deploy Information and Narrative-Building in Service of Statecraft - -* **Id**: C00167 +# Counter C00167: Deploy Information and Narrative-Building in Service of Statecraft * **Summary**: Promote a narrative of transparency, truthfulness, liberal values, and democracy. Implement a compelling narrative via effective mechanisms of communication. Continually reassess U.S. messages, mechanisms, and audiences over time. Counteract efforts to manipulate media, undermine free markets, and suppress political freedoms via public diplomacy * **Playbooks**: -* **Metatechnique**: countermessaging +* **Metatechnique**: M010 - countermessaging * **Resources needed:** diff --git a/counters/C00169.md b/counters/C00169.md index e0c8b0c..c3ae4c7 100644 --- a/counters/C00169.md +++ b/counters/C00169.md @@ -1,16 +1,10 @@ -# develop a creative content hub - -* **Type**: Counter TTP - -* **Name**: develop a creative content hub - -* **Id**: C00169 +# Counter C00169: develop a creative content hub * **Summary**: international donors will donate to a basket fund that will pay a committee of local experts who will, in turn, manage and distribute the money to Russian-language producers and broadcasters that pitch various projects. * **Playbooks**: -* **Metatechnique**: countermessaging +* **Metatechnique**: M010 - countermessaging * **Resources needed:** diff --git a/counters/C00170.md b/counters/C00170.md index 5ed7bde..141ec26 100644 --- a/counters/C00170.md +++ b/counters/C00170.md @@ -1,16 +1,10 @@ -# elevate information as a critical domain of statecraft - -* **Type**: Counter TTP - -* **Name**: elevate information as a critical domain of statecraft - -* **Id**: C00170 +# Counter C00170: elevate information as a critical domain of statecraft * **Summary**: Shift from reactive to proactive response, with priority on sharing relevant information with the public and mobilizing private-sector engagement. Recent advances in data-driven technologies have elevated information as a source of power to influence the political and economic environment, to foster economic growth, to enable a decision-making advantage over competitors, and to communicate securely and quickly. * **Playbooks**: -* **Metatechnique**: metatechnique +* **Metatechnique**: M007 - metatechnique * **Resources needed:** diff --git a/counters/C00171.md b/counters/C00171.md index 657d9f7..e503242 100644 --- a/counters/C00171.md +++ b/counters/C00171.md @@ -1,16 +1,10 @@ -# social media content take-downs - -* **Type**: Counter TTP - -* **Name**: social media content take-downs - -* **Id**: C00171 +# Counter C00171: social media content take-downs * **Summary**: e.g. facebook or Twitter content take-downs * **Playbooks**: -* **Metatechnique**: removal +* **Metatechnique**: M005 - removal * **Resources needed:** platform_admin:socialmedia diff --git a/counters/C00172.md b/counters/C00172.md index 75f16f0..05109fb 100644 --- a/counters/C00172.md +++ b/counters/C00172.md @@ -1,16 +1,10 @@ -# social media page removal - -* **Type**: Counter TTP - -* **Name**: social media page removal - -* **Id**: C00172 +# Counter C00172: social media page removal * **Summary**: e.g. facebook page removal * **Playbooks**: -* **Metatechnique**: removal +* **Metatechnique**: M005 - removal * **Resources needed:** platform_admin:socialmedia diff --git a/counters/C00174.md b/counters/C00174.md index a212175..8a36c18 100644 --- a/counters/C00174.md +++ b/counters/C00174.md @@ -1,16 +1,10 @@ -# Free and Fair Press - -* **Type**: Counter TTP - -* **Name**: Free and Fair Press - -* **Id**: C00174 +# Counter C00174: Free and Fair Press * **Summary**: Create bipartisan, patriotic commitment to press freedom. * **Playbooks**: Elected officials lead return to First Amendment norms that embrace free and fair media as central to U.S. democracy. -* **Metatechnique**: metatechnique +* **Metatechnique**: M007 - metatechnique * **Resources needed:** diff --git a/counters/C00176.md b/counters/C00176.md index 22d5b3a..0ba6c43 100644 --- a/counters/C00176.md +++ b/counters/C00176.md @@ -1,16 +1,10 @@ -# Improve Coordination with and feedback from the U.S. private sector - -* **Type**: Counter TTP - -* **Name**: Improve Coordination with and feedback from the U.S. private sector - -* **Id**: C00176 +# Counter C00176: Improve Coordination with and feedback from the U.S. private sector * **Summary**: gray zone challenges are increasingly multidisciplinary, there are few organizations within the U.S. national security structure that are equipped with the broad-spectrum capability to effectively counter Russian and Chinese gray zone tactics in real-time. Furthermore, institutional hurdles currently impede diverse subject matter experts, hailing from outside of the traditional national security and foreign policy disciplines (e.g., physical science, engineering, media, legal, and economics fields), from contributing to the direct development of national security countermeasures to emerging gray zone threat vectors. Driving key lines of interagency alignment through a Gray Zone Action Group (GZAG), akin to the Counterterrorism Security Group (CSG), in areas such as: Strategic narrative in coordination with DHS, DoS, DoD, Intelligence Community (IC), and other implementing agencies. Particular focus on the nexus of cyber and information operations; * **Playbooks**: -* **Metatechnique**: metatechnique +* **Metatechnique**: M007 - metatechnique * **Resources needed:** diff --git a/counters/C00178.md b/counters/C00178.md index 0f6e91d..583da92 100644 --- a/counters/C00178.md +++ b/counters/C00178.md @@ -1,16 +1,10 @@ -# Fill information voids with non-disinformation content - -* **Type**: Counter TTP - -* **Name**: Fill information voids with non-disinformation content - -* **Id**: C00178 +# Counter C00178: Fill information voids with non-disinformation content * **Summary**: e.g. increase Russian-language programming. The Economist notes, in May, Current Time videos were viewed 40 million times online (“America’s Answer to Russian Propaganda TV,” 2017). It would certainly be a positive development if Current Time could draw viewers away from Russian TV programming of RT and Sputnik. One effort that might assist in this regard is expanding programming to include more conventional entertainment programming * **Playbooks**: -* **Metatechnique**: dilution +* **Metatechnique**: M009 - dilution * **Resources needed:** diff --git a/counters/C00179.md b/counters/C00179.md index 430925a..047df67 100644 --- a/counters/C00179.md +++ b/counters/C00179.md @@ -1,16 +1,10 @@ -# Identify, monitor, and, if necessary, target Russia-based nonattributed social media accounts - -* **Type**: Counter TTP - -* **Name**: Identify, monitor, and, if necessary, target Russia-based nonattributed social media accounts - -* **Id**: C00179 +# Counter C00179: Identify, monitor, and, if necessary, target Russia-based nonattributed social media accounts * **Summary**: 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**: -* **Metatechnique**: removal +* **Metatechnique**: M005 - removal * **Resources needed:** diff --git a/counters/C00182.md b/counters/C00182.md index 6d1a67a..1cdb240 100644 --- a/counters/C00182.md +++ b/counters/C00182.md @@ -1,16 +1,10 @@ -# malware detection/quarantine/deletion - -* **Type**: Counter TTP - -* **Name**: malware detection/quarantine/deletion - -* **Id**: C00182 +# Counter C00182: malware detection/quarantine/deletion * **Summary**: (2015) Trustwave reported that a Bedep Trojan malware kit had begun infecting machines and forcing them to browse certain sites, artificially inflating traffic to a set of pro-Russia * **Playbooks**: -* **Metatechnique**: removal +* **Metatechnique**: M005 - removal * **Resources needed:** infosec diff --git a/counters/C00184.md b/counters/C00184.md index 7add2c3..f93e356 100644 --- a/counters/C00184.md +++ b/counters/C00184.md @@ -1,16 +1,10 @@ -# Media exposure - -* **Type**: Counter TTP - -* **Name**: Media exposure - -* **Id**: C00184 +# Counter C00184: Media exposure * **Summary**: * **Playbooks**: -* **Metatechnique**: daylight +* **Metatechnique**: M003 - daylight * **Resources needed:** diff --git a/counters/C00188.md b/counters/C00188.md index 7691214..e29386b 100644 --- a/counters/C00188.md +++ b/counters/C00188.md @@ -1,16 +1,10 @@ -# Newsroom/Journalist training to counter SEO influence - -* **Type**: Counter TTP - -* **Name**: Newsroom/Journalist training to counter SEO influence - -* **Id**: C00188 +# Counter C00188: Newsroom/Journalist training to counter SEO influence * **Summary**: 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). * **Playbooks**: -* **Metatechnique**: resilience +* **Metatechnique**: M001 - resilience * **Resources needed:** media,educators diff --git a/counters/C00189.md b/counters/C00189.md index 35b3129..58026cb 100644 --- a/counters/C00189.md +++ b/counters/C00189.md @@ -1,16 +1,10 @@ -# Ongoing analysis/monitoring of "flagged" profiles - -* **Type**: Counter TTP - -* **Name**: Ongoing analysis/monitoring of "flagged" profiles - -* **Id**: C00189 +# Counter C00189: Ongoing analysis/monitoring of "flagged" profiles * **Summary**: Confirm whether platforms are actively removing flagged accounts, and raise pressure via e.g. government organizations to encourage removal * **Playbooks**: -* **Metatechnique**: daylight +* **Metatechnique**: M003 - daylight * **Resources needed:** diff --git a/counters/C00190.md b/counters/C00190.md index 5d1c44d..46de0f2 100644 --- a/counters/C00190.md +++ b/counters/C00190.md @@ -1,16 +1,10 @@ -# open engagement with civil society - -* **Type**: Counter TTP - -* **Name**: open engagement with civil society - -* **Id**: C00190 +# Counter C00190: open engagement with civil society * **Summary**: U.S. government should also open engagement with civil society as an independent check on government action and messaging. It should seek to coordinate and synchronize narrative themes with allies and partners while calibrating action in cases where elements in these countries may have been co-opted by U.S. competitors. * **Playbooks**: -* **Metatechnique**: resilience +* **Metatechnique**: M001 - resilience * **Resources needed:** public diff --git a/counters/C00193.md b/counters/C00193.md index 9b25776..b541824 100644 --- a/counters/C00193.md +++ b/counters/C00193.md @@ -1,16 +1,10 @@ -# promotion of a “higher standard of journalism” - -* **Type**: Counter TTP - -* **Name**: promotion of a “higher standard of journalism” - -* **Id**: C00193 +# Counter C00193: promotion of a “higher standard of journalism” * **Summary**: journalism training “would be helpful, especially for the online community * **Playbooks**: TechCamp bringing together local journalists, with a several-day training program that includes a sponsored yearlong investigative project -* **Metatechnique**: resilience +* **Metatechnique**: M001 - resilience * **Resources needed:** media,educators diff --git a/counters/C00194.md b/counters/C00194.md index f8542cc..12bee95 100644 --- a/counters/C00194.md +++ b/counters/C00194.md @@ -1,16 +1,10 @@ -# Provide an alternative to Russian information by expanding and improving local content. - -* **Type**: Counter TTP - -* **Name**: Provide an alternative to Russian information by expanding and improving local content. - -* **Id**: C00194 +# Counter C00194: Provide an alternative to Russian information by expanding and improving local content. * **Summary**: To effectively compete, others argue, is to develop content that can displace the pro-Russia narrative. given the importance of affecting the entire media environment, we should note that these recommendations for alternative content span both new and old media alike. * **Playbooks**: -* **Metatechnique**: diversion +* **Metatechnique**: M002 - diversion * **Resources needed:** diff --git a/counters/C00195.md b/counters/C00195.md index dd4bc28..eaf8c23 100644 --- a/counters/C00195.md +++ b/counters/C00195.md @@ -1,16 +1,10 @@ -# Redirect Method - -* **Type**: Counter TTP - -* **Name**: Redirect Method - -* **Id**: C00195 +# Counter C00195: Redirect Method * **Summary**: Use Google AdWords to identify instances in which people search Google about particular fake-news stories or Russian propaganda themes. Taking advantage of the technology behind Google AdWords, this method identifies potential ISIS recruits through their Google searches and exposes them to curated YouTube videos debunking ISIS recruiting themes. Apply this method to Russian propaganda. * **Playbooks**: -* **Metatechnique**: diversion +* **Metatechnique**: M002 - diversion * **Resources needed:** diff --git a/counters/C00196.md b/counters/C00196.md index eab3800..1285c73 100644 --- a/counters/C00196.md +++ b/counters/C00196.md @@ -1,16 +1,10 @@ -# Include the role of social media in the regulatory framework for media - -* **Type**: Counter TTP - -* **Name**: Include the role of social media in the regulatory framework for media - -* **Id**: C00196 +# Counter C00196: Include the role of social media in the regulatory framework for media * **Summary**: 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 * **Playbooks**: -* **Metatechnique**: metatechnique +* **Metatechnique**: M007 - metatechnique * **Resources needed:** government diff --git a/counters/C00197.md b/counters/C00197.md index 49c4b2b..f9fb3bf 100644 --- a/counters/C00197.md +++ b/counters/C00197.md @@ -1,16 +1,10 @@ -# remove suspicious facebook accounts - -* **Type**: Counter TTP - -* **Name**: remove suspicious facebook accounts - -* **Id**: C00197 +# Counter C00197: remove suspicious facebook accounts * **Summary**: * **Playbooks**: -* **Metatechnique**: removal +* **Metatechnique**: M005 - removal * **Resources needed:** diff --git a/counters/C00200.md b/counters/C00200.md index 81d3db3..e6d5b54 100644 --- a/counters/C00200.md +++ b/counters/C00200.md @@ -1,16 +1,10 @@ -# Respected figure (influencer) disavows misinfo - -* **Type**: Counter TTP - -* **Name**: Respected figure (influencer) disavows misinfo - -* **Id**: C00200 +# Counter C00200: Respected figure (influencer) disavows misinfo * **Summary**: Has been done in e.g. India * **Playbooks**: -* **Metatechnique**: countermessaging +* **Metatechnique**: M010 - countermessaging * **Resources needed:** influencers diff --git a/counters/C00202.md b/counters/C00202.md index 93dd38d..5bce409 100644 --- a/counters/C00202.md +++ b/counters/C00202.md @@ -1,16 +1,10 @@ -# Set data 'honeytraps' - -* **Type**: Counter TTP - -* **Name**: Set data 'honeytraps' - -* **Id**: C00202 +# Counter C00202: Set data 'honeytraps' * **Summary**: * **Playbooks**: -* **Metatechnique**: diversion +* **Metatechnique**: M002 - diversion * **Resources needed:** diff --git a/counters/C00203.md b/counters/C00203.md index 8baf30d..e174e67 100644 --- a/counters/C00203.md +++ b/counters/C00203.md @@ -1,16 +1,10 @@ -# Stop offering press credentials to propaganda outlets - -* **Type**: Counter TTP - -* **Name**: Stop offering press credentials to propaganda outlets - -* **Id**: C00203 +# Counter C00203: Stop offering press credentials to propaganda outlets * **Summary**: * **Playbooks**: -* **Metatechnique**: friction +* **Metatechnique**: M004 - friction * **Resources needed:** government diff --git a/counters/C00204.md b/counters/C00204.md index 6703215..79fc3b5 100644 --- a/counters/C00204.md +++ b/counters/C00204.md @@ -1,16 +1,10 @@ -# Strengthen local media - -* **Type**: Counter TTP - -* **Name**: Strengthen local media - -* **Id**: C00204 +# Counter C00204: Strengthen local media * **Summary**: 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**: -* **Metatechnique**: resilience +* **Metatechnique**: M001 - resilience * **Resources needed:** media diff --git a/counters/C00205.md b/counters/C00205.md index 2e37685..8d690e3 100644 --- a/counters/C00205.md +++ b/counters/C00205.md @@ -1,16 +1,10 @@ -# strong dialogue between the federal government and private sector to encourage better reporting - -* **Type**: Counter TTP - -* **Name**: strong dialogue between the federal government and private sector to encourage better reporting - -* **Id**: C00205 +# Counter C00205: strong dialogue between the federal government and private sector to encourage better reporting * **Summary**: Increase civic resilience by partnering with business community to combat gray zone threats and ensuring adequate reporting and enforcement mechanisms. * **Playbooks**: -* **Metatechnique**: metatechnique +* **Metatechnique**: M007 - metatechnique * **Resources needed:** companies,government diff --git a/counters/C00207.md b/counters/C00207.md index 6d88be4..52a10bd 100644 --- a/counters/C00207.md +++ b/counters/C00207.md @@ -1,16 +1,10 @@ -# tit-for-tat campaign - -* **Type**: Counter TTP - -* **Name**: tit-for-tat campaign - -* **Id**: C00207 +# Counter C00207: tit-for-tat campaign * **Summary**: As used by Saudis? * **Playbooks**: -* **Metatechnique**: targeting +* **Metatechnique**: M013 - targeting * **Resources needed:** government,platforms diff --git a/counters/C00210.md b/counters/C00210.md index 402aee9..eb00d82 100644 --- a/counters/C00210.md +++ b/counters/C00210.md @@ -1,16 +1,10 @@ -# Use encrypted apps for confidential communication - -* **Type**: Counter TTP - -* **Name**: Use encrypted apps for confidential communication - -* **Id**: C00210 +# Counter C00210: Use encrypted apps for confidential communication * **Summary**: * **Playbooks**: -* **Metatechnique**: resilience +* **Metatechnique**: M001 - resilience * **Resources needed:** diff --git a/counters/C00211.md b/counters/C00211.md index 812c07b..08cd07d 100644 --- a/counters/C00211.md +++ b/counters/C00211.md @@ -1,16 +1,10 @@ -# Use humorous counter-narratives - -* **Type**: Counter TTP - -* **Name**: Use humorous counter-narratives - -* **Id**: C00211 +# Counter C00211: Use humorous counter-narratives * **Summary**: * **Playbooks**: -* **Metatechnique**: countermessaging +* **Metatechnique**: M010 - countermessaging * **Resources needed:** diff --git a/counters/C00212.md b/counters/C00212.md index 98be2d6..b37e96b 100644 --- a/counters/C00212.md +++ b/counters/C00212.md @@ -1,16 +1,10 @@ -# build public resilence by making civil society more vibrant - -* **Type**: Counter TTP - -* **Name**: build public resilence by making civil society more vibrant - -* **Id**: C00212 +# Counter C00212: build public resilence by making civil society more vibrant * **Summary**: Increase public service experience, and support wider civics and history education. * **Playbooks**: -* **Metatechnique**: resilience +* **Metatechnique**: M001 - resilience * **Resources needed:** educators,government diff --git a/counters/C00214.md b/counters/C00214.md index aab2cba..f6e559b 100644 --- a/counters/C00214.md +++ b/counters/C00214.md @@ -1,16 +1,10 @@ -# Create policy that makes social media police disinformation - -* **Type**: Counter TTP - -* **Name**: Create policy that makes social media police disinformation - -* **Id**: C00214 +# Counter C00214: Create policy that makes social media police disinformation * **Summary**: German model: facebook forced to police content by law. * **Playbooks**: -* **Metatechnique**: metatechnique +* **Metatechnique**: M007 - metatechnique * **Resources needed:** government:policymakers diff --git a/counters/C00215.md b/counters/C00215.md index b682b55..75b41b7 100644 --- a/counters/C00215.md +++ b/counters/C00215.md @@ -1,16 +1,10 @@ -# Use fraud legislation to clean up social media - -* **Type**: Counter TTP - -* **Name**: Use fraud legislation to clean up social media - -* **Id**: C00215 +# Counter C00215: Use fraud legislation to clean up social media * **Summary**: * **Playbooks**: -* **Metatechnique**: metatechnique +* **Metatechnique**: M007 - metatechnique * **Resources needed:** government:policymakers diff --git a/counters/C00216.md b/counters/C00216.md index b1681d9..4026ef1 100644 --- a/counters/C00216.md +++ b/counters/C00216.md @@ -1,16 +1,10 @@ -# Use advertiser controls to stem flow of funds to bad actors - -* **Type**: Counter TTP - -* **Name**: Use advertiser controls to stem flow of funds to bad actors - -* **Id**: C00216 +# Counter C00216: Use advertiser controls to stem flow of funds to bad actors * **Summary**: * **Playbooks**: -* **Metatechnique**: reduce resources +* **Metatechnique**: M014 - reduce resources * **Resources needed:** platform_admin:adtech diff --git a/counters/C00217.md b/counters/C00217.md index fcc9430..35d345b 100644 --- a/counters/C00217.md +++ b/counters/C00217.md @@ -1,16 +1,10 @@ -# Registries alert when large batches of newsy URLs get registered together - -* **Type**: Counter TTP - -* **Name**: Registries alert when large batches of newsy URLs get registered together - -* **Id**: C00217 +# Counter C00217: Registries alert when large batches of newsy URLs get registered together * **Summary**: * **Playbooks**: -* **Metatechnique**: daylight +* **Metatechnique**: M003 - daylight * **Resources needed:** platform_admin diff --git a/counters/C00218.md b/counters/C00218.md index 701d336..a733541 100644 --- a/counters/C00218.md +++ b/counters/C00218.md @@ -1,16 +1,10 @@ -# Censorship - -* **Type**: Counter TTP - -* **Name**: Censorship - -* **Id**: C00218 +# Counter C00218: Censorship * **Summary**: Alter and/or block the publication/dissemination of adversary controlled information * **Playbooks**: -* **Metatechnique**: removal +* **Metatechnique**: M005 - removal * **Resources needed:** platform_admin diff --git a/counters/C00219.md b/counters/C00219.md index feb2cd2..d34e571 100644 --- a/counters/C00219.md +++ b/counters/C00219.md @@ -1,16 +1,10 @@ -# Add metadata to content - out of the control of the adversary - -* **Type**: Counter TTP - -* **Name**: Add metadata to content - out of the control of the adversary - -* **Id**: C00219 +# Counter C00219: Add metadata to content - out of the control of the adversary * **Summary**: * **Playbooks**: Add date and source to images -* **Metatechnique**: daylight +* **Metatechnique**: M003 - daylight * **Resources needed:** diff --git a/counters_index.md b/counters_index.md index ac44a89..b8150a3 100644 --- a/counters_index.md +++ b/counters_index.md @@ -13,7 +13,7 @@ C00001 Better models of info spread up the layers -metatechnique +M007 - metatechnique TA01 Strategic Planning ALL @@ -21,7 +21,7 @@ C00003 How can we safeguard against extremists using the tools that we will produce? -metatechnique +M007 - metatechnique TA01 Strategic Planning ALL @@ -29,7 +29,7 @@ C00004 Managing like a chronic disease -metatechnique +M007 - metatechnique TA01 Strategic Planning ALL @@ -37,7 +37,7 @@ C00005 Policy: makers, terminology, elements: a) broad, b) specific -metatechnique +M007 - metatechnique TA01 Strategic Planning ALL @@ -45,7 +45,7 @@ C00006 Charge for social media No corresponding AMITT technique. -friction +M004 - friction TA01 Strategic Planning D2 Deny @@ -53,7 +53,7 @@ C00007 Create framework for BetterBusinessBureau (BBB) for news media No corresponding AMITT technique. -scoring +M006 - scoring TA01 Strategic Planning D2 Deny @@ -61,7 +61,7 @@ C00008 Create shared fact-checking database Snopes is best-known example -scoring +M006 - scoring TA01 Strategic Planning D2 Deny @@ -69,7 +69,7 @@ C00009 Educate high profile influencers on best practices -resilience +M001 - resilience TA01 Strategic Planning D2 Deny @@ -77,7 +77,7 @@ C00010 Enhanced privacy regulation for social media No corresponding AMITT technique. -friction +M004 - friction TA01 Strategic Planning D2 Deny @@ -85,7 +85,7 @@ C00011 Media literacy. Games to identify fake news -resilience +M001 - resilience TA01 Strategic Planning D2 Deny @@ -93,7 +93,7 @@ C00012 Platform regulation -metatechnique +M007 - metatechnique TA01 Strategic Planning D2 Deny @@ -101,7 +101,7 @@ C00013 Rating framework for news - full transcripts, link source, add items, BBB for news Technique should be in terms of "strategic innoculation", raising the standards of what people expect in terms of evidence when consuming news. No corresponding AMITT technique. -scoring +M006 - scoring TA01 Strategic Planning D2 Deny @@ -109,7 +109,7 @@ C00014 Real-time updates to fact-checking database existing examples at Buzzfeed and Fema, especially during disasters -scoring +M006 - scoring TA01 Strategic Planning D2 Deny @@ -117,7 +117,7 @@ C00015 Reputation scores for social media users -scoring +M006 - scoring TA01 Strategic Planning D2 Deny @@ -125,7 +125,7 @@ C00016 Social media as a privilege not right -cleaning +M012 - cleaning TA01 Strategic Planning D2 Deny @@ -133,7 +133,7 @@ C00017 Media campaign promoting 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. No corresponding AMITT technique. -countermessaging +M010 - countermessaging TA01 Strategic Planning D3 Disrupt @@ -141,7 +141,7 @@ C00018 Promote constructive communication by shaming division-enablers Duplicate of "Promote playbooks to call out dividers" -daylight +M003 - daylight TA01 Strategic Planning D3 Disrupt @@ -149,7 +149,7 @@ C00019 Promote playbooks to call out division-enablers Duplicate of "Promote constructive communication by shaming dividers" -daylight +M003 - daylight TA01 Strategic Planning D3 Disrupt @@ -157,7 +157,7 @@ C00020 Deligitimise the 24 hour news cycle Unsure -friction +M004 - friction TA01 Strategic Planning D4 Degrade @@ -165,7 +165,7 @@ C00021 Encourage in-person communication -resilience +M001 - resilience TA01 Strategic Planning D4 Degrade @@ -173,7 +173,7 @@ C00022 Innoculate. Positive campaign to promote feeling of safety - to counter ability and fear based attacks Unsure -resilience +M001 - resilience TA01 Strategic Planning D4 Degrade @@ -181,7 +181,7 @@ C00023 Promote civility as an identity that people will defend -resilience +M001 - resilience TA01 Strategic Planning D4 Degrade @@ -189,7 +189,7 @@ C00024 Promote constructive narratives i.e. not polarising. Pro-life, pro-choice, or pro-USA? -resilience +M001 - resilience TA01 Strategic Planning D4 Degrade @@ -197,7 +197,7 @@ C00025 Promote identity neutral narratives -countermessaging +M010 - countermessaging TA01 Strategic Planning D4 Degrade @@ -205,7 +205,7 @@ C00026 Shore up democracy based messages (peace, freedom) - make it sexy Unsure -countermessaging +M010 - countermessaging TA01 Strategic Planning D4 Degrade @@ -213,7 +213,7 @@ C00027 Create culture of civility -resilience +M001 - resilience TA01 Strategic Planning D7 Deter @@ -223,7 +223,7 @@ Use blockchain technology to require collaborative validation before posts or comments are submitted. This could be used to adjust upvote weight via a trust factor of people and organisations you trust, or other criteria. -verification +M011 - verification TA02 Objective Planning D3 Disrupt @@ -231,7 +231,7 @@ This could be used to adjust upvote weight via a trust factor of people and orga C00029 Create fake website to issue counter narrative and counter narrative through physical merchandise -diversion +M002 - diversion TA02 Objective Planning D3 Disrupt @@ -239,7 +239,7 @@ This could be used to adjust upvote weight via a trust factor of people and orga C00030 Develop a compelling counter narrative (truth based) -diversion +M002 - diversion TA02 Objective Planning D3 Disrupt @@ -247,7 +247,7 @@ This could be used to adjust upvote weight via a trust factor of people and orga C00031 Dilute the core narrative - create multiple permutations, target / amplify 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. -dilution +M009 - dilution TA02 Objective Planning D3 Disrupt @@ -255,7 +255,7 @@ This could be used to adjust upvote weight via a trust factor of people and orga C00032 Hijack content and link to truth- based info (platform) -diversion +M002 - diversion TA02 Objective Planning D3 Disrupt @@ -263,7 +263,7 @@ This could be used to adjust upvote weight via a trust factor of people and orga C00033 Build cultural resistance to false content Cultural resistance to bullshit -resilience +M001 - resilience TA03 Develop People D2 Deny @@ -271,7 +271,7 @@ This could be used to adjust upvote weight via a trust factor of people and orga C00034 Create more friction at account creation Counters fake account -friction +M004 - friction TA03 Develop People D2 Deny @@ -279,7 +279,7 @@ This could be used to adjust upvote weight via a trust factor of people and orga C00035 Friction -friction +M004 - friction TA03 Develop People D2 Deny @@ -287,7 +287,7 @@ This could be used to adjust upvote weight via a trust factor of people and orga C00036 Infiltrate the in-group to discredit leaders (divide) All of these would be highly affected by infiltration or false-claims of infiltration. -targeting +M013 - targeting TA03 Develop People D2 Deny @@ -295,7 +295,7 @@ This could be used to adjust upvote weight via a trust factor of people and orga C00039 Standard reporting for false profiles Deplatform. Reporting fake profiles is the only solution (identity issues). Only resolution -removal +M005 - removal TA03 Develop People D2 Deny @@ -303,7 +303,7 @@ This could be used to adjust upvote weight via a trust factor of people and orga C00040 third party verification for people counters fake experts -verification +M011 - verification TA03 Develop People D2 Deny @@ -311,7 +311,7 @@ This could be used to adjust upvote weight via a trust factor of people and orga C00042 Address truth contained in narratives -countermessaging +M010 - countermessaging TA03 Develop People D3 Disrupt @@ -319,7 +319,7 @@ This could be used to adjust upvote weight via a trust factor of people and orga C00043 Detect hijacked accounts and reallocate them -cleaning +M012 - cleaning TA03 Develop People D3 Disrupt @@ -327,7 +327,7 @@ This could be used to adjust upvote weight via a trust factor of people and orga C00044 Keep people from posting to social media immediately 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. -friction +M004 - friction TA03 Develop People D3 Disrupt @@ -335,7 +335,7 @@ This could be used to adjust upvote weight via a trust factor of people and orga C00045 S4d detection and re-allocation approaches What's S4D? -friction +M004 - friction TA03 Develop People D3 Disrupt @@ -343,7 +343,7 @@ This could be used to adjust upvote weight via a trust factor of people and orga C00046 Marginalise and discredit extremist Duplicate of "Name and Shame" - recommend removal. No, not quite. -targeting +M013 - targeting TA03 Develop People D4 Degrade @@ -351,7 +351,7 @@ This could be used to adjust upvote weight via a trust factor of people and orga C00047 Coordinated inauthentics -data pollution +M008 - data pollution TA03 Develop People D5 Deceive @@ -359,7 +359,7 @@ This could be used to adjust upvote weight via a trust factor of people and orga C00048 Name and Shame -daylight +M003 - daylight TA03 Develop People D7 Deter @@ -367,7 +367,7 @@ This could be used to adjust upvote weight via a trust factor of people and orga C00049 Influence literacy training Inoculate against "cult" recruiting -resilience +M001 - resilience TA04 Develop Networks D2 Deny @@ -375,7 +375,7 @@ This could be used to adjust upvote weight via a trust factor of people and orga C00050 Anti-elicitation training -resilience +M001 - resilience TA04 Develop Networks D2 Deny @@ -383,7 +383,7 @@ This could be used to adjust upvote weight via a trust factor of people and orga C00051 Phishing prevention education etc -resilience +M001 - resilience TA04 Develop Networks D2 Deny @@ -391,7 +391,7 @@ This could be used to adjust upvote weight via a trust factor of people and orga C00052 Infiltrate platforms Detect and degrade -targeting +M013 - targeting TA04 Develop Networks D4 Degrade @@ -399,7 +399,7 @@ This could be used to adjust upvote weight via a trust factor of people and orga C00053 Delete old accounts / Remove unused social media accounts -cleaning +M012 - cleaning TA04 Develop Networks D4 Degrade @@ -407,7 +407,7 @@ This could be used to adjust upvote weight via a trust factor of people and orga C00054 Media literacy training. Leverage librarians / library for media literacy training. Covers detect, deny and degrade. -resilience +M001 - resilience TA04 Develop Networks D4 Degrade @@ -415,7 +415,7 @@ This could be used to adjust upvote weight via a trust factor of people and orga C00055 Empower existing regulators to govern social media Also covers Destroy. -metatechnique +M007 - metatechnique TA04 Develop Networks D2 Deny @@ -423,7 +423,7 @@ This could be used to adjust upvote weight via a trust factor of people and orga C00056 Get off social media -friction +M004 - friction TA04 Develop Networks D2 Deny @@ -431,7 +431,7 @@ This could be used to adjust upvote weight via a trust factor of people and orga C00057 Privacy standards -scoring +M006 - scoring TA04 Develop Networks D2 Deny @@ -439,7 +439,7 @@ This could be used to adjust upvote weight via a trust factor of people and orga C00058 Report crowdfunder as violator counters crowdfunding -removal +M005 - removal TA04 Develop Networks D2 Deny @@ -447,7 +447,7 @@ This could be used to adjust upvote weight via a trust factor of people and orga C00059 Verification of project before posting (counters funding campaigns) -verification +M011 - verification TA04 Develop Networks D2 Deny @@ -455,7 +455,7 @@ This could be used to adjust upvote weight via a trust factor of people and orga C00060 Enhanced legal enforcement against for-profit follower/engagement factories -targeting +M013 - targeting TA04 Develop Networks D3 Disrupt @@ -463,7 +463,7 @@ This could be used to adjust upvote weight via a trust factor of people and orga C00061 Innoculating at language -resilience +M001 - resilience TA04 Develop Networks D3 Disrupt @@ -471,7 +471,7 @@ This could be used to adjust upvote weight via a trust factor of people and orga C00062 Free open library sources worldwide Open-source libraries could be created that aid in some way for each technique. Even for Strategic Planning, some open-source frameworks such as AMITT can be created to counter the adversarial efforts. -countermessaging +M010 - countermessaging TA04 Develop Networks D6 Destroy @@ -479,7 +479,7 @@ This could be used to adjust upvote weight via a trust factor of people and orga C00063 Ban political microtargeting -removal +M005 - removal TA05 Microtargeting D2 Deny @@ -487,7 +487,7 @@ This could be used to adjust upvote weight via a trust factor of people and orga C00065 Ban political ads -removal +M005 - removal TA05 Microtargeting D3 Disrupt @@ -495,7 +495,7 @@ This could be used to adjust upvote weight via a trust factor of people and orga C00066 Co-opt a hashtag and drown it out (hijack it back) -dilution +M009 - dilution TA05 Microtargeting D3 Disrupt @@ -503,7 +503,7 @@ This could be used to adjust upvote weight via a trust factor of people and orga C00067 Denigrate the recipient/ project (of online funding) -targeting +M013 - targeting TA05 Microtargeting D3 Disrupt @@ -511,7 +511,7 @@ This could be used to adjust upvote weight via a trust factor of people and orga C00068 Expose online funding as fake -daylight +M003 - daylight TA05 Microtargeting D3 Disrupt @@ -519,7 +519,7 @@ This could be used to adjust upvote weight via a trust factor of people and orga C00069 Mark clickbait visually -daylight +M003 - daylight TA05 Microtargeting D3 Disrupt @@ -533,7 +533,7 @@ T0008: A quick response to a proto-viral story will affect it's ability to sprea Hashtag: Against the platform, by drowning the hashtag. T0046 - Search Engine Optimization: Sub-optimal website performance affect its search engine rank, which I interpret as "blocking access to a platform". -removal +M005 - removal TA06 Develop Content D2 Deny @@ -541,7 +541,7 @@ T0046 - Search Engine Optimization: Sub-optimal website performance affect its s C00071 Block source of pollution -removal +M005 - removal TA06 Develop Content D2 Deny @@ -549,7 +549,7 @@ T0046 - Search Engine Optimization: Sub-optimal website performance affect its s C00072 Content censorship in non-relevant domains e.g. Pinterest antivax -removal +M005 - removal TA06 Develop Content D2 Deny @@ -557,7 +557,7 @@ T0046 - Search Engine Optimization: Sub-optimal website performance affect its s C00073 Educate on how to handle info pollution. Push out targeted education on why it's pollution Strategic planning included as innoculating population has strategic value. Example is the "Learn to Discern" Program, funded by the Canadian government, operated in Ukraine from July 2015 to March 2016. The program trained 15,000 Ukrainians in ‘’safe, informed media consumption techniques,’’ including avoiding emotional manipulation, verifying sources, identifying hate speech, verifying expert credentials, detecting censorship, and debunking news, photos, and videos." -resilience +M001 - resilience TA06 Develop Content D2 Deny @@ -566,7 +566,7 @@ T0046 - Search Engine Optimization: Sub-optimal website performance affect its s Identify identical content and mass deplatform -cleaning +M012 - cleaning TA06 Develop Content D2 Deny @@ -574,7 +574,7 @@ T0046 - Search Engine Optimization: Sub-optimal website performance affect its s C00075 normalise language -countermessaging +M010 - countermessaging TA06 Develop Content D2 Deny @@ -582,7 +582,7 @@ T0046 - Search Engine Optimization: Sub-optimal website performance affect its s C00076 Prohibit images in political discourse channels -removal +M005 - removal TA06 Develop Content D2 Deny @@ -590,7 +590,7 @@ T0046 - Search Engine Optimization: Sub-optimal website performance affect its s C00077 Active defence: replay "develop people" -targeting +M013 - targeting TA06 Develop Content D3 Disrupt @@ -598,7 +598,7 @@ T0046 - Search Engine Optimization: Sub-optimal website performance affect its s C00078 Change Search Algorithms for Disinformation Content. More specifically, change image search algorithms for hate groups and extremists Note: Suggest a more generic technique since this applies to non-image content and to non-hate groups. -diversion +M002 - diversion TA06 Develop Content D3 Disrupt @@ -606,7 +606,7 @@ T0046 - Search Engine Optimization: Sub-optimal website performance affect its s C00079 Change search algorithms for hate and extremist queries to show content sympathetic to opposite side -diversion +M002 - diversion TA06 Develop Content D3 Disrupt @@ -614,7 +614,7 @@ T0046 - Search Engine Optimization: Sub-optimal website performance affect its s C00080 Create competing narrative -diversion +M002 - diversion TA06 Develop Content D3 Disrupt @@ -622,7 +622,7 @@ T0046 - Search Engine Optimization: Sub-optimal website performance affect its s C00081 Discredit by pointing out the "noise" and informing public that "flooding" is a technique of disinformation campaigns; point out intended objective of "noise" -daylight +M003 - daylight TA06 Develop Content D3 Disrupt @@ -630,7 +630,7 @@ T0046 - Search Engine Optimization: Sub-optimal website performance affect its s C00082 Ground truthing as automated response to pollution -countermessaging +M010 - countermessaging TA06 Develop Content D3 Disrupt @@ -638,7 +638,7 @@ T0046 - Search Engine Optimization: Sub-optimal website performance affect its s C00084 Steal their truths Try technique T0003. -diversion +M002 - diversion TA06 Develop Content D3 Disrupt @@ -652,7 +652,7 @@ In some phases, contents would be archives of websites, social media profiles, m In others, content would be archives of comments attributed to bad actors, as well as anonymized metadata about users who interacted with them and analysis of the effect. Having these tagged and shamed for as associated by bad actors would be beneficial for public vigilance. -daylight +M003 - daylight TA06 Develop Content D4 Degrade @@ -662,7 +662,7 @@ Having these tagged and shamed for as associated by bad actors would be benefici Example: Interject addictive links or contents into discussions of disinformation materials and measure a "conversion rate" of users who engage with your content and away from the social media channel's "information bubble" around the disinformation item. Use bots to amplify and upvote the addictive content. Note: This sounds eerlily like many Reddit communities where the most upvoted comments are all jokes, preventing serious discussion from being discovered by those who filter by upvotes. -diversion +M002 - diversion TA06 Develop Content D4 Degrade @@ -670,7 +670,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co C00087 Make more noise Recommend Removal: I see "Make More Noise" as similar to "Do everything in AMITT, better than the adversary". It is not a counter in itself but rather an adversarial attack tool that can be used for blue team narratives. -dilution +M009 - dilution TA06 Develop Content D4 Degrade @@ -678,7 +678,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co C00088 Poison pill recasting of message Unsure how to interpret. The techniques listed all involve some amount of promotion which could be manipulated. For example, online fundings or rallies could be advertised, through compromised or fake channels, as being associated with "far-up/down/left/right" actors. "Long Game" narratives could be subjected in a similar way with negative connotations. -diversion +M002 - diversion TA06 Develop Content D4 Degrade @@ -686,7 +686,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co C00089 Throttle number of forwards -friction +M004 - friction TA06 Develop Content D4 Degrade @@ -694,7 +694,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co C00090 Fake engagement system -diversion +M002 - diversion TA06 Develop Content D5 Deceive @@ -702,7 +702,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co C00091 Honeypot social community -diversion +M002 - diversion TA06 Develop Content D5 Deceive @@ -710,7 +710,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co C00092 Establish a truth teller reputation score for individuals with many followers -scoring +M006 - scoring TA06 Develop Content D7 Deter @@ -718,7 +718,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co C00093 Establish tailored code of conduct for individuals with many followers -resilience +M001 - resilience TA06 Develop Content D7 Deter @@ -726,7 +726,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co C00094 Force full disclosure on corporate sponsor of research -daylight +M003 - daylight TA06 Develop Content D7 Deter @@ -734,7 +734,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co C00095 Keep score -scoring +M006 - scoring TA06 Develop Content D7 Deter @@ -742,7 +742,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co C00096 Strengthen institutions that are always truth tellers -scoring +M006 - scoring TA06 Develop Content D7 Deter @@ -750,7 +750,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co C00097 Require use of verified identities to contribute to poll or comment -friction +M004 - friction TA07 Channel Selection D2 Deny @@ -758,7 +758,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co C00098 Revocation of "verified" -friction +M004 - friction TA07 Channel Selection D2 Deny @@ -766,7 +766,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co C00099 Strengthen verification methods -friction +M004 - friction TA07 Channel Selection D2 Deny @@ -774,7 +774,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co C00100 Hashtag jacking -diversion +M002 - diversion TA07 Channel Selection D3 Disrupt @@ -782,7 +782,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co C00101 Create participant friction -friction +M004 - friction TA07 Channel Selection D4 Degrade @@ -790,7 +790,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co C00102 Make repeat voting harder -friction +M004 - friction TA07 Channel Selection D4 Degrade @@ -798,7 +798,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co C00103 Create a bot that engages / distract trolls Use T00030 backstop personas -diversion +M002 - diversion TA07 Channel Selection D5 Deceive @@ -806,7 +806,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co C00105 Buy more advertising than the adversary to shift influence and algorithms -dilution +M009 - dilution TA07 Channel Selection D3 Disrupt @@ -814,7 +814,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co C00106 Click-bait centrist content Create emotive centrist content that gets more clicks -diversion +M002 - diversion TA07 Channel Selection D3 Disrupt @@ -822,7 +822,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co C00107 Content moderation -scoring +M006 - scoring TA07 Channel Selection D2 Deny @@ -830,7 +830,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co C00109 De-escalation -resilience +M001 - resilience TA07 Channel Selection D3 Disrupt @@ -838,7 +838,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co C00110 Monetize centrist SEO by subsidizing the difference in greater clicks towards extremist content -friction +M004 - friction TA07 Channel Selection D2 Deny @@ -846,7 +846,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co C00111 Present sympathetic views of opposite side -resilience +M001 - resilience TA07 Channel Selection D4 Degrade @@ -854,7 +854,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co C00112 "Prove they are not an op!" This applies to the entirety of the matrix as I read this as "create awareness around the use of all of these techniques" -friction +M004 - friction TA08 Pump Priming D2 Deny @@ -862,7 +862,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co C00113 Debunk and defuse a fake expert / credentials. Attack audience quality of fake expert -daylight +M003 - daylight TA08 Pump Priming D2 Deny @@ -870,7 +870,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co C00114 Don't engage with payloads -friction +M004 - friction TA08 Pump Priming D2 Deny @@ -878,7 +878,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co C00115 Expose actor and intentions -daylight +M003 - daylight TA08 Pump Priming D2 Deny @@ -886,7 +886,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co C00116 Provide proof of involvement -daylight +M003 - daylight TA08 Pump Priming D2 Deny @@ -894,7 +894,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co C00117 Downgrade de-amplify label promote counter to disinformation -countermessaging +M010 - countermessaging TA08 Pump Priming D4 Degrade @@ -902,7 +902,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co C00118 Repurpose images with new text -countermessaging +M010 - countermessaging TA08 Pump Priming D4 Degrade @@ -910,7 +910,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co C00119 Engage payload and debunk. Provide link to facts. Might be okay. -countermessaging +M010 - countermessaging TA08 Pump Priming D7 Deter @@ -918,7 +918,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co C00120 Open dialogue about design of platforms to produce different outcomes -metatechnique +M007 - metatechnique TA08 Pump Priming D7 Deter @@ -926,7 +926,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co C00121 Tool transparency and literacy for channels people follow. -resilience +M001 - resilience TA08 Pump Priming D7 Deter @@ -934,7 +934,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co C00122 Content moderation. Censorship? -friction +M004 - friction TA09 Exposure D2 Deny @@ -942,7 +942,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co C00123 Bot control -friction +M004 - friction TA09 Exposure D3 Disrupt @@ -950,7 +950,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co C00124 Don't feed the trolls -friction +M004 - friction TA09 Exposure D3 Disrupt @@ -958,7 +958,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co C00125 Prepare the population with pre-announcements -resilience +M001 - resilience TA09 Exposure D3 Disrupt @@ -966,7 +966,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co C00126 Social media amber alert -daylight +M003 - daylight TA09 Exposure D3 Disrupt @@ -974,7 +974,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co C00128 Create friction by marking content with ridicule or other "decelerants" -dilution +M009 - dilution TA09 Exposure D3 Disrupt @@ -982,7 +982,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co C00129 Use banking to cut off access fiscal sanctions; parallel to counter terrorism -reduce resources +M014 - reduce resources TA10 Go Physical D2 Deny @@ -990,7 +990,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co C00130 Mentorship: elders, youth, credit. Learn vicariously. -resilience +M001 - resilience TA10 Go Physical D7 Deter @@ -998,7 +998,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co C00131 Seize and analyse botnet servers -removal +M005 - removal TA11 Persistence D2 Deny @@ -1006,7 +1006,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co C00133 Deplatform Account* Note: Similar to Deplatform People but less generic. Perhaps both should be left. -removal +M005 - removal TA11 Persistence D3 Disrupt @@ -1014,7 +1014,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co C00135 Deplatform message groups and/or message boards Merged two rows here. -removal +M005 - removal TA11 Persistence D3 Disrupt @@ -1022,7 +1022,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co C00136 Microtarget most likely targets then send them countermessages -countermessaging +M010 - countermessaging TA11 Persistence D3 Disrupt @@ -1030,7 +1030,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co C00137 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. -data pollution +M008 - data pollution TA11 Persistence D3 Disrupt @@ -1038,7 +1038,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co C00138 Spam domestic actors with lawsuits -reduce resources +M014 - reduce resources TA11 Persistence D3 Disrupt @@ -1046,7 +1046,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co C00139 Weaponise youtube content matrices -friction +M004 - friction TA11 Persistence D3 Disrupt @@ -1054,7 +1054,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co C00140 "Bomb" link shorteners with lots of calls Applies to most of the content used by exposure techniques except "T0055 - Use hashtag" -data pollution +M008 - data pollution TA11 Persistence D4 Degrade @@ -1062,7 +1062,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co C00141 "Hey this story is old" popup when messaging with old URL This assumes that this technique is based on visits to an URL shortener or a captured news site that can publish a message of our choice. -friction +M004 - friction TA11 Persistence D4 Degrade @@ -1070,7 +1070,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co C00142 "This has been disproved - do you want to forward it" -friction +M004 - friction TA11 Persistence D4 Degrade @@ -1078,7 +1078,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co C00143 (botnet) DMCA takedown requests to waste group time -targeting +M013 - targeting TA11 Persistence D4 Degrade @@ -1086,7 +1086,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co C00144 Buy out troll farm employees / offer them jobs -reduce resources +M014 - reduce resources TA11 Persistence D4 Degrade @@ -1094,7 +1094,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co C00145 Pollute the data voids with wholesome content (Kittens! Babyshark!) -data pollution +M008 - data pollution TA11 Persistence D4 Degrade @@ -1102,7 +1102,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co C00147 Make amplification of social media ports expire (e.g. can't like/ retweet after n days) -friction +M004 - friction TA12 Measure Effectiveness D3 Disrupt @@ -1110,7 +1110,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co C00148 Add random links to network graphs 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. -data pollution +M008 - data pollution TA12 Measure Effectiveness D4 Degrade @@ -1118,7 +1118,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co C00149 Poison the monitoring & evaluation data -data pollution +M008 - data pollution TA12 Measure Effectiveness D4 Degrade @@ -1126,7 +1126,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co C00150 “calling them out” 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 -daylight +M003 - daylight TA03 Develop People D2 Deny @@ -1134,7 +1134,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co C00151 “fight in the light” Use leadership in the arts, entertainment, and media to highlight and build on fundamental tenets of democracy. -daylight +M003 - daylight TA09 Exposure D3 Disrupt @@ -1142,7 +1142,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co C00152 “name and shame” 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 -daylight +M003 - daylight TA04 Develop Networks D2 Deny @@ -1150,7 +1150,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co C00153 Use offensive cyber action Align offensive cyber action with information operations and counter disinformation approaches, where appropriate. -targeting +M013 - targeting TA01 Strategic Planning D3 Disrupt @@ -1158,7 +1158,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co C00154 Ask media not to report false information -removal +M005 - removal TA08 Pump Priming D2 Deny @@ -1166,7 +1166,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co C00155 Ban incident actors from funding sites -removal +M005 - removal TA03 Develop People D2 Deny @@ -1174,7 +1174,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co C00156 Better tell the U.S., NATO, and EU story. Civil engagement activities conducted on the part of EFP forces. In Latvia, for example, U.S. soldiers have reportedly conducted numerous civil engagements with the local populations. In one example, soldiers cut firewood for local Russian-speaking Latvians. Locals were reportedly overheard saying, “A Russian soldier wouldn’t do that.” NATO should likewise provide support and training, where needed, to local public affairs and other communication personnel. Local government and military public affairs personnel can play their part in creating and disseminating entertaining and sharable content that supports the EFP mission. -countermessaging +M010 - countermessaging TA09 Exposure D3 Disrupt @@ -1182,7 +1182,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co C00157 Build alternative news sources Create alternative local-language news sources to counter local-language propaganda outlets -countermessaging +M010 - countermessaging TA04 Develop Networks D2 Deny @@ -1190,7 +1190,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co C00158 Use training to build the resilience of at-risk populations. NGO Baltic Centre for Media Excellence, with some international funding, provides training to journalists in the Baltics and conducts media literacy training in the region. In addition to helping journalists avoid becoming “unwitting multipliers of misleading information,” the organization works with school teachers in the region to help them “decode media and incorporate media research into teaching.” concepts of media literacy to a mass audience that authorities launch a public information campaign that teaches the program will take time to develop and establish impact, recommends curriculum-based training -resilience +M001 - resilience TA09 Exposure D4 Degrade @@ -1198,7 +1198,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co C00159 Campaign mindset and associated toolbox A campaign plan for the gray zone must account for U.S. vulnerabilities and strengths and must take care not to over-rely on any one tool of statecraft or line of effort. If the United States is to engage seriously in gray zone competition, it will need to identify and employ a broad spectrum of its national power to deter, compete, and counter (where necessary) other countries’ approaches. It is therefore critical that the United States understands its own capabilities, the capabilities of its adversaries, and international standards of conduct to compete in, shrink the size, and ultimately deter use of the gray zone. -metatechnique +M007 - metatechnique TA01 Strategic Planning D3 Disrupt @@ -1206,7 +1206,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co C00160 find and train influencers Identify key influencers (e.g. use network analysis), then reach out to identified users and offer support, through either training or resources. -resilience +M001 - resilience TA03 Develop People D2 Deny @@ -1214,7 +1214,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co C00161 Coalition Building and Third-Party Inducements: Advance coalitions across borders and sectors, spanning public and private, as well as foreign and domestic, divides. Improve mechanisms to collaborate, share information, and develop coordinated approaches with the private sector at home and allies and partners abroad. -metatechnique +M007 - metatechnique TA01 Strategic Planning D7 Deter @@ -1222,7 +1222,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co C00162 collect data/map constellations of Russian“civil society”. Unravel/target the Potemkin villages Kremlin’s narrative spin extends through constellations of “civil society” organizations, political parties, churches, and other actors. Moscow leverages think tanks, human rights groups, election observers, Eurasianist integration groups, and orthodox groups. A collection of Russian civil society organizations, such as the Federal Agency for the Commonwealth of Independent States Affairs, Compatriots Living Abroad, and International Humanitarian Cooperation, together receive at least US$100 million per year, in addition to government-organized nongovernmental organizations (NGOs), at least 150 of which are funded by Russian presidential grants totaling US$70 million per year. -targeting +M013 - targeting TA04 Develop Networks D3 Disrupt @@ -1230,7 +1230,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co C00164 compatriot policy protect the interests of this population and, more importantly, influence the population to support pro-Russia causes and effectively influence the politics of its neighbors -targeting +M013 - targeting TA03 Develop People D3 Disrupt @@ -1238,7 +1238,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co C00165 Limit access to alterable documents e.g. for leaked legal documents, use court motions to limit future discovery actions -friction +M004 - friction TA06 Develop Content D2 Deny @@ -1246,7 +1246,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co C00167 Deploy Information and Narrative-Building in Service of Statecraft Promote a narrative of transparency, truthfulness, liberal values, and democracy. Implement a compelling narrative via effective mechanisms of communication. Continually reassess U.S. messages, mechanisms, and audiences over time. Counteract efforts to manipulate media, undermine free markets, and suppress political freedoms via public diplomacy -countermessaging +M010 - countermessaging TA06 Develop Content D2 Deny @@ -1254,7 +1254,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co C00169 develop a creative content hub international donors will donate to a basket fund that will pay a committee of local experts who will, in turn, manage and distribute the money to Russian-language producers and broadcasters that pitch various projects. -countermessaging +M010 - countermessaging TA09 Exposure D3 Disrupt @@ -1262,7 +1262,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co C00170 elevate information as a critical domain of statecraft Shift from reactive to proactive response, with priority on sharing relevant information with the public and mobilizing private-sector engagement. Recent advances in data-driven technologies have elevated information as a source of power to influence the political and economic environment, to foster economic growth, to enable a decision-making advantage over competitors, and to communicate securely and quickly. -metatechnique +M007 - metatechnique TA03 Develop People D3 Disrupt @@ -1270,7 +1270,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co C00171 social media content take-downs e.g. facebook or Twitter content take-downs -removal +M005 - removal TA06 Develop Content D2 Deny @@ -1278,7 +1278,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co C00172 social media page removal e.g. facebook page removal -removal +M005 - removal TA06 Develop Content D2 Deny @@ -1286,7 +1286,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co C00174 Free and Fair Press Create bipartisan, patriotic commitment to press freedom. -metatechnique +M007 - metatechnique TA04 Develop Networks D2 Deny @@ -1294,7 +1294,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co C00176 Improve Coordination with and feedback from the U.S. private sector gray zone challenges are increasingly multidisciplinary, there are few organizations within the U.S. national security structure that are equipped with the broad-spectrum capability to effectively counter Russian and Chinese gray zone tactics in real-time. Furthermore, institutional hurdles currently impede diverse subject matter experts, hailing from outside of the traditional national security and foreign policy disciplines (e.g., physical science, engineering, media, legal, and economics fields), from contributing to the direct development of national security countermeasures to emerging gray zone threat vectors. Driving key lines of interagency alignment through a Gray Zone Action Group (GZAG), akin to the Counterterrorism Security Group (CSG), in areas such as: Strategic narrative in coordination with DHS, DoS, DoD, Intelligence Community (IC), and other implementing agencies. Particular focus on the nexus of cyber and information operations; -metatechnique +M007 - metatechnique TA01 Strategic Planning D7 Deter @@ -1302,7 +1302,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co C00178 Fill information voids with non-disinformation content e.g. increase Russian-language programming. The Economist notes, in May, Current Time videos were viewed 40 million times online (“America’s Answer to Russian Propaganda TV,” 2017). It would certainly be a positive development if Current Time could draw viewers away from Russian TV programming of RT and Sputnik. One effort that might assist in this regard is expanding programming to include more conventional entertainment programming -dilution +M009 - dilution TA09 Exposure D3 Disrupt @@ -1310,7 +1310,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co C00179 Identify, monitor, and, if necessary, target Russia-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," -removal +M005 - removal TA03 Develop People D3 Disrupt @@ -1318,7 +1318,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co C00182 malware detection/quarantine/deletion (2015) Trustwave reported that a Bedep Trojan malware kit had begun infecting machines and forcing them to browse certain sites, artificially inflating traffic to a set of pro-Russia -removal +M005 - removal TA09 Exposure D2 Deny @@ -1326,7 +1326,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co C00184 Media exposure -daylight +M003 - daylight TA09 Exposure D4 Degrade @@ -1334,7 +1334,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co C00188 Newsroom/Journalist training to counter 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). -resilience +M001 - resilience TA08 Pump Priming D3 Disrupt @@ -1342,7 +1342,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co C00189 Ongoing analysis/monitoring of "flagged" profiles Confirm whether platforms are actively removing flagged accounts, and raise pressure via e.g. government organizations to encourage removal -daylight +M003 - daylight TA03 Develop People D6 Destroy @@ -1350,7 +1350,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co C00190 open engagement with civil society U.S. government should also open engagement with civil society as an independent check on government action and messaging. It should seek to coordinate and synchronize narrative themes with allies and partners while calibrating action in cases where elements in these countries may have been co-opted by U.S. competitors. -resilience +M001 - resilience TA09 Exposure D3 Disrupt @@ -1358,7 +1358,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co C00193 promotion of a “higher standard of journalism” journalism training “would be helpful, especially for the online community -resilience +M001 - resilience TA08 Pump Priming D3 Disrupt @@ -1366,7 +1366,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co C00194 Provide an alternative to Russian information by expanding and improving local content. To effectively compete, others argue, is to develop content that can displace the pro-Russia narrative. given the importance of affecting the entire media environment, we should note that these recommendations for alternative content span both new and old media alike. -diversion +M002 - diversion TA09 Exposure D3 Disrupt @@ -1374,7 +1374,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co C00195 Redirect Method Use Google AdWords to identify instances in which people search Google about particular fake-news stories or Russian propaganda themes. Taking advantage of the technology behind Google AdWords, this method identifies potential ISIS recruits through their Google searches and exposes them to curated YouTube videos debunking ISIS recruiting themes. Apply this method to Russian propaganda. -diversion +M002 - diversion TA07 Channel Selection D2 Deny @@ -1382,7 +1382,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co C00196 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 -metatechnique +M007 - metatechnique TA07 Channel Selection D3 Disrupt @@ -1390,7 +1390,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co C00197 remove suspicious facebook accounts -removal +M005 - removal TA03 Develop People D2 Deny @@ -1398,7 +1398,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co C00200 Respected figure (influencer) disavows misinfo Has been done in e.g. India -countermessaging +M010 - countermessaging TA09 Exposure D3 Disrupt @@ -1406,7 +1406,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co C00202 Set data 'honeytraps' -diversion +M002 - diversion TA06 Develop Content D2 Deny @@ -1414,7 +1414,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co C00203 Stop offering press credentials to propaganda outlets -friction +M004 - friction TA08 Pump Priming D3 Disrupt @@ -1422,7 +1422,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co C00204 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.” -resilience +M001 - resilience TA08 Pump Priming D2 Deny @@ -1430,7 +1430,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co C00205 strong dialogue between the federal government and private sector to encourage better reporting Increase civic resilience by partnering with business community to combat gray zone threats and ensuring adequate reporting and enforcement mechanisms. -metatechnique +M007 - metatechnique TA01 Strategic Planning D3 Disrupt @@ -1438,7 +1438,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co C00207 tit-for-tat campaign As used by Saudis? -targeting +M013 - targeting TA01 Strategic Planning D7 Deter @@ -1446,7 +1446,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co C00210 Use encrypted apps for confidential communication -resilience +M001 - resilience TA06 Develop Content D2 Deny @@ -1454,7 +1454,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co C00211 Use humorous counter-narratives -countermessaging +M010 - countermessaging TA09 Exposure D3 Disrupt @@ -1462,7 +1462,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co C00212 build public resilence by making civil society more vibrant Increase public service experience, and support wider civics and history education. -resilience +M001 - resilience TA09 Exposure D3 Disrupt @@ -1470,7 +1470,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co C00214 Create policy that makes social media police disinformation German model: facebook forced to police content by law. -metatechnique +M007 - metatechnique TA07 Channel Selection D3 Disrupt @@ -1478,7 +1478,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co C00215 Use fraud legislation to clean up social media -metatechnique +M007 - metatechnique TA07 Channel Selection D3 Disrupt @@ -1486,7 +1486,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co C00216 Use advertiser controls to stem flow of funds to bad actors -reduce resources +M014 - reduce resources TA05 Microtargeting D2 Deny @@ -1494,7 +1494,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co C00217 Registries alert when large batches of newsy URLs get registered together -daylight +M003 - daylight TA07 Channel Selection D2 Deny @@ -1502,7 +1502,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co C00218 Censorship Alter and/or block the publication/dissemination of adversary controlled information -removal +M005 - removal TA09 Exposure D2 Deny @@ -1510,7 +1510,7 @@ Note: This sounds eerlily like many Reddit communities where the most upvoted co C00219 Add metadata to content - out of the control of the adversary -daylight +M003 - daylight TA06 Develop Content D3 Disrupt diff --git a/detections_index.md b/detections_index.md index 63af51d..8b63a22 100644 --- a/detections_index.md +++ b/detections_index.md @@ -545,210 +545,214 @@ For example, other ways of deplatforming people include attacking their sources F00067 - Data forensics -I00029,I00045 + +D1 Detect F00068 - Resonance analysis +a developing methodology for identifying statistical differences in how social groups use language and quantifying how common those statistical differences are within a larger population. In essence, it hypothesizes how much affinity might exist for a specific group within a general population, based on the language its members employ - +D1 Detect F00069 - Track Russian media and develop analytic methods. +To effectively counter Russian propaganda, it will be critical to track Russian influence efforts. The information requirements are varied and include the following: • Identify fake-news stories and their sources. • Understand narrative themes and content that pervade various Russian media sources. • Understand the broader Russian strategy that underlies tactical propaganda messaging. - +D1 Detect F00070 - Full spectrum analytics ALL +D1 Detect F00071 - Network analysis Identify/cultivate/support influencers +Local influencers detected via Twitter networks are likely local influencers in other online and off-line channels as well. In addition, the content and themes gleaned from Russia and Russia-supporting populations, as well as anti-Russia activists, likely swirl in other online and off-line mediums as well. - +D1 Detect F00072 - network analysis to identify central users in the pro-Russia activist community. +It is possible that some of these are bots or trolls and could be flagged for suspension for violating Twitter’s terms of service. - +D1 Detect F00073 - collect intel/recon on black/covert content creators/manipulators +Players at the level of covert attribution, referred to as “black” in the grayscale of deniability, produce content on user-generated media, such as YouTube, but also add fear-mongering commentary to and amplify content produced by others and supply exploitable content to data dump websites. These activities are conducted by a network of trolls, bots, honeypots, and hackers. - +D1 Detect F00074 - identify relevant fence-sitter communities +brand ambassador programs could be used with influencers across a variety of social media channels. It could also target other prominent experts, such as academics, business leaders, and other potentially prominent people. Authorities must ultimately take care in implementing such a program given the risk that contact with U.S. or NATO authorities might damage influencer reputations. Engagements must consequently be made with care, and, if possible, government interlocutors should work through local NGOs. - +D1 Detect F00075 - leverage open-source information +significant amounts of quality open-source information are now available and should be leveraged to build products and analysis prior to problem prioritization in the areas of observation, attribution, and intent. Successfully distinguishing the gray zone campaign signal through the global noise requires action through the entirety of the national security community. Policy, process, and tools must all adapt and evolve to detect, discern, and act upon a new type of signal - +D1 Detect F00076 - Monitor/collect audience engagement data connected to “useful idiots” +Target audience connected to "useful idiots rather than the specific profiles because - The active presence of such sources complicates targeting of Russian propaganda, given that it is often difficult to discriminate between authentic views and opinions on the internet and those disseminated by the Russian state. + - +D1 Detect F00077 - Model for bot account behavior - +Bot account: action based, people. Unsure which AMITT techniques. TA03 Develop People +D1 Detect F00078 - Monitor account level activity in social networks - +All techniques benefit from careful analysis and monitoring of activities on social network. TA03 Develop People +D1 Detect F00079 - Network anomaly detection TA05 Microtargeting +D1 Detect F00080 - Hack the polls/ content yourself - +Two wrongs don't make a right? But if you hack your own polls, you do learn how it could be done, and learn what to look for TA07 Channel Selection +D1 Detect F00081 - Need way for end user to report operations TA09 Exposure +D1 Detect F00082 - Control the US "slang" translation boards TA11 Persistence +D3 Disrupt F00083 - Build and own meme generator, then track and watermark contents TA11 Persistence +D5 Deceive F00084 - Track individual bad actors TA03 Develop People +D1 Detect F00085 - detection of a weak signal through global noise +Gray zone threats are challenging given that warning requires detection of a weak signal through global noise and across threat vectors and regional boundaries.Three interconnected gray zone elements characterize the nature of the activity: +Temporality: The nature of gray zone threats truly requires a “big picture view” over long timescales and across regions and functional topics. +Attribution: requiring an “almost certain” or “nearly certain analytic assessment before acting costs time and analytic effort +Intent: judgement of adversarial intent to conduct gray zone activity. Indeed, the purpose of countering gray zone threats is to deter adversaries from fulfilling their intent to act. While attribution is one piece of the puzzle, closing the space around intent often means synthesizing multiple relevant indicators and warnings, including the state’s geopolitical ambitions, military ties, trade and investment, level of corruption, and media landscape, among others. F00086 - Outpace Competitor Intelligence Capabilities - +Develop an intelligence-based understanding of foreign actors’ motivations, psychologies, and societal and geopolitical contexts. Leverage artificial intelligence to identify patterns and infer competitors’ intent TA02 Objective planning +D1 Detect F00087 -metatechnique Improve Indications and Warning +United States has not adequately adapted its information indicators and thresholds for warning policymakers to account for gray zone tactics. Competitors have undertaken a marked shift to slow-burn, deceptive, non-military, and indirect challenges to U.S. interests. Relative to traditional security indicators and warnings, these are more numerous and harder to detect and make it difficult for analysts to infer intent. - +D1 Detect F00088 -metatechnique Revitalize an “active measures working group,” +Recognize campaigns from weak signals, including rivals’ intent, capability, impact, interactive effects, and impact on U.S. interests... focus on adversarial covert action aspects of campaigning. - +D1 Detect F00089 -daylight target/name/flag "grey zone" website content - +"Gray zone" is second level of content producers and circulators, composed of outlets with uncertain attribution. This category covers conspiracy websites, far-right or far-left websites, news aggregators, and data dump websites TA04 Develop Networks +D1 Detect F00090 -metatechnique Match Punitive Tools with Third-Party Inducements - +Bring private sector and civil society into accord on U.S. interests TA01 Strategic Planning +D1 Detect F00091 -metatechnique Partner to develop analytic methods & tools +This might include working with relevant technology firms to ensure that contracted analytic support is available. Contracted support is reportedly valuable because technology to monitor social media data is continually evolving, and such firms can provide the expertise to help identify and analyze trends, and they can more effectively stay abreast of the changing systems and develop new models as they are required - +D1 Detect F00092 daylight Warn social media companies about an ongoing campaign (e.g. antivax sites). -I00002 TA09 +D1 Detect diff --git a/incidents/I00001.md b/incidents/I00001.md index f0a630b..5e864c8 100644 --- a/incidents/I00001.md +++ b/incidents/I00001.md @@ -1,13 +1,9 @@ -# Blacktivists facebook group - -* **Type:** incident - -* **Name:** Blacktivists facebook group - -* **Id:** I00001 +# Incident I00001: Blacktivists facebook group * **Summary:** Internet Research Agency created fake @blacktivists facebook group and twitter account. +* **incident type**: incident + * **Year started:** 2016 * **Countries:** Russia , USA diff --git a/incidents/I00002.md b/incidents/I00002.md index 067f46e..c514d45 100644 --- a/incidents/I00002.md +++ b/incidents/I00002.md @@ -1,13 +1,9 @@ -# #VaccinateUS - -* **Type:** campaign - -* **Name:** #VaccinateUS - -* **Id:** I00002 +# Incident I00002: #VaccinateUS * **Summary:** use both pro- and anti- topic messaging to create an artificial argument online. +* **incident type**: campaign + * **Year started:** 2014 * **Countries:** Russia , World diff --git a/incidents/I00003.md b/incidents/I00003.md index e8c3718..0c12d52 100644 --- a/incidents/I00003.md +++ b/incidents/I00003.md @@ -1,13 +1,9 @@ -# Beyonce protest rallies - -* **Type:** incident - -* **Name:** Beyonce protest rallies - -* **Id:** I00003 +# Incident I00003: Beyonce protest rallies * **Summary:** use both pro- and anti- topic messaging to create an artificial argument in real life. +* **incident type**: incident + * **Year started:** 2016 * **Countries:** Russia , USA diff --git a/incidents/I00004.md b/incidents/I00004.md index 1857e1c..f234fbd 100644 --- a/incidents/I00004.md +++ b/incidents/I00004.md @@ -1,13 +1,9 @@ -# #Macrongate - -* **Type:** incident - -* **Name:** #Macrongate - -* **Id:** I00004 +# Incident I00004: #Macrongate * **Summary:** amplified document dump failed because France was prepared for it. +* **incident type**: incident + * **Year started:** 2017 * **Countries:** Russia , France diff --git a/incidents/I00005.md b/incidents/I00005.md index d4c1f19..0383cec 100644 --- a/incidents/I00005.md +++ b/incidents/I00005.md @@ -1,10 +1,4 @@ -# Brexit vote - -* **Type:** campaign - -* **Name:** Brexit vote - -* **Id:** I00005 +# Incident I00005: Brexit vote * **Summary:** In early 2014, then UK PM David Cameron outlined the changes he aimed to bring about in the EU and in the UK's relationship with it. These were: additional immigration controls, especially for citizens of new EU member states; tougher immigration rules for present EU citizens; new powers for national parliaments collectively to veto proposed EU laws; new free-trade agreements and a reduction in bureaucracy for businesses; a lessening of the influence of the European Court of Human Rights on British police and courts; more power for individual member states, and less for the central EU; and abandonment of the EU notion of "ever closer union".He intended to bring these about during a series of negotiations with other EU leaders and then, if re-elected, to announce a referendum. European Union Referendum Act was passed by the Parliament of the United Kingdom. It extended to include and take legislative effect in Gibraltar,and received royal assent on 17 December 2015. @@ -17,6 +11,8 @@ The senators point out that Ukip and its then-leader, Nigel Farage, did not just The report adds that although officially the Russian government asserted its neutrality on Brexit, its English-language media outlets RT and Sputnik covered the referendum campaign extensively and offered ‘’systematically one-sided coverage’’. +* **incident type**: campaign + * **Year started:** 2016 * **Countries:** Russia , UK diff --git a/incidents/I00006.md b/incidents/I00006.md index 6986c3e..b2ca173 100644 --- a/incidents/I00006.md +++ b/incidents/I00006.md @@ -1,13 +1,9 @@ -# Columbian Chemicals - -* **Type:** incident - -* **Name:** Columbian Chemicals - -* **Id:** I00006 +# Incident I00006: Columbian Chemicals * **Summary:** Early Russian (IRA) “fake news” stories. Completely fabricated; very short lifespan. +* **incident type**: incident + * **Year started:** 2014 * **Countries:** Russia , USA diff --git a/incidents/I00007.md b/incidents/I00007.md index f2e2e63..c4abac9 100644 --- a/incidents/I00007.md +++ b/incidents/I00007.md @@ -1,13 +1,9 @@ -# Incirlik terrorists - -* **Type:** incident - -* **Name:** Incirlik terrorists - -* **Id:** I00007 +# Incident I00007: Incirlik terrorists * **Summary:** Fake story transmitted from Russian media to Trump campaign +* **incident type**: incident + * **Year started:** 2016 * **Countries:** Russia , USA diff --git a/incidents/I00008.md b/incidents/I00008.md index 381f240..266d6f4 100644 --- a/incidents/I00008.md +++ b/incidents/I00008.md @@ -1,13 +1,9 @@ -# Bujic - -* **Type:** incident - -* **Name:** Bujic - -* **Id:** I00008 +# Incident I00008: Bujic * **Summary:** +* **incident type**: incident + * **Year started:** 2017 * **Countries:** Russia , Serbia diff --git a/incidents/I00009.md b/incidents/I00009.md index 1e3367b..2dd01d4 100644 --- a/incidents/I00009.md +++ b/incidents/I00009.md @@ -1,13 +1,9 @@ -# PhilippinesExpert - -* **Type:** incident - -* **Name:** PhilippinesExpert - -* **Id:** I00009 +# Incident I00009: PhilippinesExpert * **Summary:** President of the Philippine visited Moscow and forged ties on information strategy in 2017, and afterwards a series of disinformation campaign was noted in Philippine social media and mainstream media, mostly in favor of Philippine president and promoting Russian propaganda. Among this is the appearance of an unknown-before expert on global affairs who was cited frequently in Russian IRA-connected outlets. +* **incident type**: incident + * **Year started:** 2017 * **Countries:** Russia , Philippines diff --git a/incidents/I00010.md b/incidents/I00010.md index f44540c..7692ddf 100644 --- a/incidents/I00010.md +++ b/incidents/I00010.md @@ -1,13 +1,9 @@ -# ParklandTeens - -* **Type:** incident - -* **Name:** ParklandTeens - -* **Id:** I00010 +# Incident I00010: ParklandTeens * **Summary:** IRA trolls amplified the far right messaging around the attack. Most notably they amplified social media speculation that many of the teens involved were “crisis actors” nefariously injected into the conversation by outside actors with an anti-gun poltical agenda. Other amplifications included ongoing harassment of survivors and claims that the event is a hoax from the right; and fatalist cynicism about gun reform from the left. +* **incident type**: incident + * **Year started:** 2018 * **Countries:** ?? , USA diff --git a/incidents/I00011.md b/incidents/I00011.md index d06ca73..be7f5d3 100644 --- a/incidents/I00011.md +++ b/incidents/I00011.md @@ -1,13 +1,9 @@ -# CovingtonTeen - -* **Type:** incident - -* **Name:** CovingtonTeen - -* **Id:** I00011 +# Incident I00011: CovingtonTeen * **Summary:** +* **incident type**: incident + * **Year started:** 2019 * **Countries:** ?? , USA diff --git a/incidents/I00012.md b/incidents/I00012.md index a77be87..c3b8726 100644 --- a/incidents/I00012.md +++ b/incidents/I00012.md @@ -1,13 +1,9 @@ -# ChinaSmog - -* **Type:** incident - -* **Name:** ChinaSmog - -* **Id:** I00012 +# Incident I00012: ChinaSmog * **Summary:** +* **incident type**: incident + * **Year started:** 2011 * **Countries:** China , China diff --git a/incidents/I00013.md b/incidents/I00013.md index 0185bb4..5f4e795 100644 --- a/incidents/I00013.md +++ b/incidents/I00013.md @@ -1,13 +1,9 @@ -# FranceBlacktivists - -* **Type:** incident - -* **Name:** FranceBlacktivists - -* **Id:** I00013 +# Incident I00013: FranceBlacktivists * **Summary:** +* **incident type**: incident + * **Year started:** 2014 * **Countries:** Russia , France diff --git a/incidents/I00014.md b/incidents/I00014.md index ee2c740..44d44fa 100644 --- a/incidents/I00014.md +++ b/incidents/I00014.md @@ -1,13 +1,9 @@ -# GiletsJaunePileon - -* **Type:** incident - -* **Name:** GiletsJaunePileon - -* **Id:** I00014 +# Incident I00014: GiletsJaunePileon * **Summary:** +* **incident type**: incident + * **Year started:** 2018 * **Countries:** Russia , France diff --git a/incidents/I00015.md b/incidents/I00015.md index 00b1437..4adb5d3 100644 --- a/incidents/I00015.md +++ b/incidents/I00015.md @@ -1,13 +1,9 @@ -# ConcordDiscovery - -* **Type:** incident - -* **Name:** ConcordDiscovery - -* **Id:** I00015 +# Incident I00015: ConcordDiscovery * **Summary:** The Office of Special Counsel accused Concord Management (an IRA funder/handler) and its counsel of abusing the discovery process by leaking discovery materials under false pretences: the documents were altered; the documents were portrayed as material obtained by hacking, rather than legal process; the released documents are selected to maximize exposure targets and methods. +* **incident type**: incident + * **Year started:** 2019 * **Countries:** Russia , USA diff --git a/incidents/I00016.md b/incidents/I00016.md index 6f915c7..7e07d9f 100644 --- a/incidents/I00016.md +++ b/incidents/I00016.md @@ -1,13 +1,9 @@ -# LithuanianElves - -* **Type:** campaign - -* **Name:** LithuanianElves - -* **Id:** I00016 +# Incident I00016: LithuanianElves * **Summary:** +* **incident type**: campaign + * **Year started:** 2014 * **Countries:** Russia , Lithuania diff --git a/incidents/I00017.md b/incidents/I00017.md index fac11d6..a3f0b41 100644 --- a/incidents/I00017.md +++ b/incidents/I00017.md @@ -1,13 +1,9 @@ -# US presidential elections - -* **Type:** campaign - -* **Name:** US presidential elections - -* **Id:** I00017 +# Incident I00017: US presidential elections * **Summary:** Make Clinton look bad or unpopular, and Trump look good over a long period, to change individuals’ voting intentions. +* **incident type**: campaign + * **Year started:** 2016 * **Countries:** Russia , USA diff --git a/incidents/I00018.md b/incidents/I00018.md index 27a5655..996ec66 100644 --- a/incidents/I00018.md +++ b/incidents/I00018.md @@ -1,13 +1,9 @@ -# DNC email leak incident - -* **Type:** tactic - -* **Name:** DNC email leak incident - -* **Id:** I00018 +# Incident I00018: DNC email leak incident * **Summary:** +* **incident type**: tactic + * **Year started:** 2016 * **Countries:** Russia , USA diff --git a/incidents/I00019.md b/incidents/I00019.md index cc72cb0..1971426 100644 --- a/incidents/I00019.md +++ b/incidents/I00019.md @@ -1,13 +1,9 @@ -# MacronTiphaine - -* **Type:** incident - -* **Name:** MacronTiphaine - -* **Id:** I00019 +# Incident I00019: MacronTiphaine * **Summary:** Far-right trolls on 4chan and Twitter spreading misinformation about French candidate Macron and spur support for rival candidate Le Pen. +* **incident type**: incident + * **Year started:** 2017 * **Countries:** unknown , France diff --git a/incidents/I00020.md b/incidents/I00020.md index 2766a50..ae0d384 100644 --- a/incidents/I00020.md +++ b/incidents/I00020.md @@ -1,13 +1,9 @@ -# 3000 tanks - -* **Type:** incident - -* **Name:** 3000 tanks - -* **Id:** I00020 +# Incident I00020: 3000 tanks * **Summary:** +* **incident type**: incident + * **Year started:** 2017 * **Countries:** Russia , World diff --git a/incidents/I00021.md b/incidents/I00021.md index f74566a..4dfaf1f 100644 --- a/incidents/I00021.md +++ b/incidents/I00021.md @@ -1,13 +1,9 @@ -# Armenia elections - -* **Type:** campaign - -* **Name:** Armenia elections - -* **Id:** I00021 +# Incident I00021: Armenia elections * **Summary:** +* **incident type**: campaign + * **Year started:** 2017 * **Countries:** Russia , Armenia diff --git a/incidents/I00022.md b/incidents/I00022.md index 6271f0d..5c60b4c 100644 --- a/incidents/I00022.md +++ b/incidents/I00022.md @@ -1,13 +1,9 @@ -# #Macronleaks - -* **Type:** incident - -* **Name:** #Macronleaks - -* **Id:** I00022 +# Incident I00022: #Macronleaks * **Summary:** Countering the spreading of an alleged 9GB of “leaked”, fake documents of Macron campaign +* **incident type**: incident + * **Year started:** 2017 * **Countries:** Russia , France diff --git a/incidents/I00023.md b/incidents/I00023.md index 7287e9e..8cae844 100644 --- a/incidents/I00023.md +++ b/incidents/I00023.md @@ -1,13 +1,9 @@ -# #dislikemacron - -* **Type:** incident - -* **Name:** #dislikemacron - -* **Id:** I00023 +# Incident I00023: #dislikemacron * **Summary:** +* **incident type**: incident + * **Year started:** 2017 * **Countries:** Russia , France diff --git a/incidents/I00024.md b/incidents/I00024.md index e2ed622..c1f77ec 100644 --- a/incidents/I00024.md +++ b/incidents/I00024.md @@ -1,13 +1,9 @@ -# #syriahoax - -* **Type:** incident - -* **Name:** #syriahoax - -* **Id:** I00024 +# Incident I00024: #syriahoax * **Summary:** +* **incident type**: incident + * **Year started:** 2017 * **Countries:** Syria , USA diff --git a/incidents/I00025.md b/incidents/I00025.md index e8883e8..a0a66a4 100644 --- a/incidents/I00025.md +++ b/incidents/I00025.md @@ -1,15 +1,11 @@ -# EU Army - -* **Type:** incident - -* **Name:** EU Army - -* **Id:** I00025 +# Incident I00025: EU Army * **Summary:** Traces back to 2016: Guardian “Is there a secret plan to create an EU army?” French President Emmanuel Macron has warned that Europeans cannot be protected without a "true, European army", as he marks the centenary of the World War One Armistice. On a visit to the former Western Front in Verdun, he said Russia had shown it could be a threat and Europe had to be able "to defend itself better alone". German Chancellor Angela Merkel backed the idea of an intervention force in June, but said it would have to be part of "the structure of defence co-operation". Verdict: “An EU army marching out to war under Brussels’ command is a fantasy shared by Eurosceptics and a small number of federalists. Europe will continue down the road of defence cooperation in a halting way, but an EU army is only for armchair generals.” +* **incident type**: incident + * **Year started:** 2018 * **Countries:** Russia , EU diff --git a/incidents/I00026.md b/incidents/I00026.md index cc7d71b..54d8f60 100644 --- a/incidents/I00026.md +++ b/incidents/I00026.md @@ -1,13 +1,9 @@ -# Netherlands referendum on Ukraine - -* **Type:** incident - -* **Name:** Netherlands referendum on Ukraine - -* **Id:** I00026 +# Incident I00026: Netherlands referendum on Ukraine * **Summary:** +* **incident type**: incident + * **Year started:** 2016 * **Countries:** Russia , Netherlands diff --git a/incidents/I00027.md b/incidents/I00027.md index f45bfbe..af41ebb 100644 --- a/incidents/I00027.md +++ b/incidents/I00027.md @@ -1,13 +1,9 @@ -# crucifiedboy - -* **Type:** incident - -* **Name:** crucifiedboy - -* **Id:** I00027 +# Incident I00027: crucifiedboy * **Summary:** +* **incident type**: incident + * **Year started:** 2014 * **Countries:** Russia , Ukraine diff --git a/incidents/I00028.md b/incidents/I00028.md index 675f336..67e1e4c 100644 --- a/incidents/I00028.md +++ b/incidents/I00028.md @@ -1,13 +1,9 @@ -# mh17 downed - -* **Type:** incident - -* **Name:** mh17 downed - -* **Id:** I00028 +# Incident I00028: mh17 downed * **Summary:** +* **incident type**: incident + * **Year started:** 2014 * **Countries:** Russia , Ukraine diff --git a/incidents/I00029.md b/incidents/I00029.md index f7c89a4..155d652 100644 --- a/incidents/I00029.md +++ b/incidents/I00029.md @@ -1,13 +1,9 @@ -# MH17 investigation - -* **Type:** campaign - -* **Name:** MH17 investigation - -* **Id:** I00029 +# Incident I00029: MH17 investigation * **Summary:** Since the shooting down of Malaysia Airlines Flight 17 (MH17) a scheduled passenger flight from Amsterdam to Kuala Lumpur on 17 July 2014 while flying over eastern Ukraine, killing all 283 passengers and 15 crew on board… wreckage of the aircraft fell near Hrabove in Donetsk Oblast, Ukraine, 40 km (25 mi) from the border.The shoot-down occurred in the War in Donbass, during the Battle of Shakhtarsk, in an area controlled by pro-Russian rebels. This has proven to be an ongoing example of Russia and their proxies ability to wage a disinformation campaign, and exemplify the use of the 4 D’s (dismiss, distort, distract, and dismay) +* **incident type**: campaign + * **Year started:** 2016 * **Countries:** Russia , Ukraine diff --git a/incidents/I00030.md b/incidents/I00030.md index e20bb89..fb703ad 100644 --- a/incidents/I00030.md +++ b/incidents/I00030.md @@ -1,13 +1,9 @@ -# LastJedi - -* **Type:** incident - -* **Name:** LastJedi - -* **Id:** I00030 +# Incident I00030: LastJedi * **Summary:** +* **incident type**: incident + * **Year started:** 2018 * **Countries:** Russia , World diff --git a/incidents/I00031.md b/incidents/I00031.md index 1cb4955..75a3f86 100644 --- a/incidents/I00031.md +++ b/incidents/I00031.md @@ -1,13 +1,9 @@ -# antivax - -* **Type:** apt - -* **Name:** antivax - -* **Id:** I00031 +# Incident I00031: antivax * **Summary:** +* **incident type**: apt + * **Year started:** 2018 * **Countries:** Russia , World diff --git a/incidents/I00032.md b/incidents/I00032.md index c63e86f..b820066 100644 --- a/incidents/I00032.md +++ b/incidents/I00032.md @@ -1,13 +1,9 @@ -# Kavanaugh - -* **Type:** incident - -* **Name:** Kavanaugh - -* **Id:** I00032 +# Incident I00032: Kavanaugh * **Summary:** Before the Senate SCOTUS confirmation hearings of Brett Kavanaugh, professor Christine Blasey Ford--first anonymously, then publicly--accused Kavanaugh of inappropriate or criminal sexual behavior. Amplified by Russian trolls Right wing operatives first tried to doxx Ford, then to discredit her. Many observers suggest that the Kavanaugh hearings were the largest anti-US Russian online operation for months. +* **incident type**: incident + * **Year started:** 2018 * **Countries:** Russia , USA diff --git a/incidents/I00033.md b/incidents/I00033.md index 0f3e5c2..c5206d9 100644 --- a/incidents/I00033.md +++ b/incidents/I00033.md @@ -1,13 +1,9 @@ -# China 50cent Army - -* **Type:** apt - -* **Name:** China 50cent Army - -* **Id:** I00033 +# Incident I00033: China 50cent Army * **Summary:** 50cent Army is a CCP “tool” - “massive secret operation” in China pumping out an estimated 488 million fabricated social media posts per year, part of an effort to “regularly distract the public and change the subject” from any policy-related issues that threaten to anger citizens enough to turn them out onto the streets. But the research finds no evidence these 50-centers are, in fact, paid 50 cents, nor does it find they engage in direct and angry argument with their opponents. Instead, they are mostly bureaucrats already on the public payroll, responding to government directives at a time of heightened tension to flood social media with pro-government cheerleading. +* **incident type**: apt + * **Year started:** 2014 * **Countries:** China , China diff --git a/incidents/I00034.md b/incidents/I00034.md index 955d730..93813e4 100644 --- a/incidents/I00034.md +++ b/incidents/I00034.md @@ -1,15 +1,11 @@ -# DibaFacebookExpedition - -* **Type:** incident - -* **Name:** DibaFacebookExpedition - -* **Id:** I00034 +# Incident I00034: DibaFacebookExpedition * **Summary:** In the Expedition, Diba engaged in a highly organized cyber-attack of a Taiwanese political leader. On January 20, 2016 (the day of President Tsai Ing-wen’s inauguration) featuring the posting of an overwhelming number of social media comments in support of a PRC-sanctioned message. Netizens from one of the largest discussion forums in China, known as Diba, coordinated to overcome China’s Great Firewall to flood the Facebook pages of Taiwanese politicians and news agencies with a pro-PRC message, a cyberattack referred to as the “Diba Expedition to Facebook.” Unique for taking place outside of the Chinese Internet system, both transgressing technical and political norms while exposing their actions to an international audience. In spite of the transgressive nature of the action, “Diba Expedition” was highly praised by Chinese official media, in contrast to comparable activities in the past that lacked its explicit pro-government ideology. Yet—reflecting the complexity of Diba’s relationship with the PRC government—the Expedition was shut down after a few days. +* **incident type**: incident + * **Year started:** 2016 * **Countries:** China , Taiwan diff --git a/incidents/I00035.md b/incidents/I00035.md index bc803e7..b47c546 100644 --- a/incidents/I00035.md +++ b/incidents/I00035.md @@ -1,13 +1,9 @@ -# Brazilelections - -* **Type:** campaign - -* **Name:** Brazilelections - -* **Id:** I00035 +# Incident I00035: Brazilelections * **Summary:** Bot activity in Brazil elections +* **incident type**: campaign + * **Year started:** 2014 * **Countries:** Brazil , Brazil diff --git a/incidents/I00036.md b/incidents/I00036.md index 7c74a20..268c28d 100644 --- a/incidents/I00036.md +++ b/incidents/I00036.md @@ -1,13 +1,9 @@ -# BrazilPresDebate - -* **Type:** incident - -* **Name:** BrazilPresDebate - -* **Id:** I00036 +# Incident I00036: BrazilPresDebate * **Summary:** +* **incident type**: incident + * **Year started:** 2014 * **Countries:** Brazil , Brazil diff --git a/incidents/I00037.md b/incidents/I00037.md index 3cd6e69..e8fcc60 100644 --- a/incidents/I00037.md +++ b/incidents/I00037.md @@ -1,13 +1,9 @@ -# Rioelections - -* **Type:** incident - -* **Name:** Rioelections - -* **Id:** I00037 +# Incident I00037: Rioelections * **Summary:** +* **incident type**: incident + * **Year started:** 2016 * **Countries:** Brazil , Brazil diff --git a/incidents/I00038.md b/incidents/I00038.md index ed31e3d..c4cf129 100644 --- a/incidents/I00038.md +++ b/incidents/I00038.md @@ -1,13 +1,9 @@ -# Brazilimpeachment - -* **Type:** incident - -* **Name:** Brazilimpeachment - -* **Id:** I00038 +# Incident I00038: Brazilimpeachment * **Summary:** +* **incident type**: incident + * **Year started:** 2016 * **Countries:** Brazil , Brazil diff --git a/incidents/I00039.md b/incidents/I00039.md index 1f57d9a..6c9e5c1 100644 --- a/incidents/I00039.md +++ b/incidents/I00039.md @@ -1,13 +1,9 @@ -# MerkelFacebook - -* **Type:** incident - -* **Name:** MerkelFacebook - -* **Id:** I00039 +# Incident I00039: MerkelFacebook * **Summary:** Top stories about Merkel in both German and English were negative and misleading, most published from fake news sites. +* **incident type**: incident + * **Year started:** 2017 * **Countries:** unknown , Germany diff --git a/incidents/I00040.md b/incidents/I00040.md index 2bbc912..7a35914 100644 --- a/incidents/I00040.md +++ b/incidents/I00040.md @@ -1,13 +1,9 @@ -# modamaniSelfie - -* **Type:** incident - -* **Name:** modamaniSelfie - -* **Id:** I00040 +# Incident I00040: modamaniSelfie * **Summary:** +* **incident type**: incident + * **Year started:** 2015 * **Countries:** unknown , Germany diff --git a/incidents/I00041.md b/incidents/I00041.md index 33d4eee..1249544 100644 --- a/incidents/I00041.md +++ b/incidents/I00041.md @@ -1,13 +1,9 @@ -# Refugee crime map - -* **Type:** incident - -* **Name:** Refugee crime map - -* **Id:** I00041 +# Incident I00041: Refugee crime map * **Summary:** +* **incident type**: incident + * **Year started:** 2017 * **Countries:** unknown , Germany diff --git a/incidents/I00042.md b/incidents/I00042.md index ac0add1..f4173ac 100644 --- a/incidents/I00042.md +++ b/incidents/I00042.md @@ -1,13 +1,9 @@ -# Saudi/Qatar bot dispute - -* **Type:** incident - -* **Name:** Saudi/Qatar bot dispute - -* **Id:** I00042 +# Incident I00042: Saudi/Qatar bot dispute * **Summary:** In the summer of 2017, Twitter bots—automated accounts—were deployed to boost messaging on both sides of the diplomatic dispute between Saudi Arabia and Qatar.” Calling this a “diplomatic dispute” understates the complexity of regional dynamics, at the center is an alleged report that Qatar’s emir, Sheikh Tamim bin Hamad al-Thani, had made an astonishing speech, and alleged “hack” of Qatar’s official news agency, and further woven into concerns Saudi Arabia has about the influence of public perception, the role of Al Jazeera. +* **incident type**: incident + * **Year started:** 2017 * **Countries:** SaudiArabia , Qatar diff --git a/incidents/I00043.md b/incidents/I00043.md index 2df572f..b6eb1c3 100644 --- a/incidents/I00043.md +++ b/incidents/I00043.md @@ -1,13 +1,9 @@ -# FCC comments - -* **Type:** incident - -* **Name:** FCC comments - -* **Id:** I00043 +# Incident I00043: FCC comments * **Summary:** +* **incident type**: incident + * **Year started:** 2017 * **Countries:** unknown , USA diff --git a/incidents/I00044.md b/incidents/I00044.md index cb65a94..1770f8a 100644 --- a/incidents/I00044.md +++ b/incidents/I00044.md @@ -1,13 +1,9 @@ -# JadeHelm exercise - -* **Type:** incident - -* **Name:** JadeHelm exercise - -* **Id:** I00044 +# Incident I00044: JadeHelm exercise * **Summary:** In the summer of 2015, thousands of troops from the US Army Special Operations command conducted and multi-state, weeks-long training operation across the southwest. Russian trolls amplified conspiracy theories promoted by far right media operatives such as Alex Jones, specifically: the Jade Helm 15 exercise was a precursor to domestic invasion and subsequent martial law by the Obama Administration in coordination with China. Some versions have deus ex machina such as an asteroid strike. Ultimately the Governor of Texas, Greg Abbot, was forced to speak out on the conspiracy theory, but he hedged on Obama’s motives. +* **incident type**: incident + * **Year started:** 2015 * **Countries:** , USA diff --git a/incidents/I00045.md b/incidents/I00045.md index 9678606..7972a02 100644 --- a/incidents/I00045.md +++ b/incidents/I00045.md @@ -1,13 +1,9 @@ -# Skripal - -* **Type:** incident - -* **Name:** Skripal - -* **Id:** I00045 +# Incident I00045: Skripal * **Summary:** On 4 March 2018, Sergei Skripal, a former Russian military officer and double agent for the UK's intelligence services, and his daughter Yulia Skripal were poisoned in Salisbury, England, with a Novichok nerve agent known as A-234, according to official UK sources and the Organisation for the Prohibition of Chemical Weapons (OPCW) +* **incident type**: incident + * **Year started:** 2018 * **Countries:** Russia , UK diff --git a/incidents/I00046.md b/incidents/I00046.md index 09c4610..7311c0b 100644 --- a/incidents/I00046.md +++ b/incidents/I00046.md @@ -1,13 +1,9 @@ -# North Macedonia - -* **Type:** incident - -* **Name:** North Macedonia - -* **Id:** I00046 +# Incident I00046: North Macedonia * **Summary:** +* **incident type**: incident + * **Year started:** 2018 * **Countries:** Russia , Macedonia diff --git a/incidents/I00047.md b/incidents/I00047.md index 02cd97e..a7c7a4a 100644 --- a/incidents/I00047.md +++ b/incidents/I00047.md @@ -1,14 +1,10 @@ -# Sea of Azov - -* **Type:** incident - -* **Name:** Sea of Azov - -* **Id:** I00047 +# Incident I00047: Sea of Azov * **Summary:** An international incident occurred on 25 November 2018 when the Russian Federal Security Service (FSB) coast guard fired upon and captured three Ukrainian Navy vessels attempting to pass from the Black Sea into the Sea of Azov through the Kerch Strait on their way to the port of Mariupol. In 2014, Russia had annexed the nearby Crimean Peninsula, which is dominantly internationally recognised as Ukrainian territory. It later constructed the Crimean Bridge across the strait. Under a 2003 treaty, the strait and the Azov Sea are intended to be the shared territorial waters of both countries, and freely accessible. The Russian Federal Security Service (FSB), which is also responsible for border protection, claims that the ships illegally entered Russian waters. The FSB alleges that crews did not comply with demands to stop. In the scuffle, a Russian border patrol ship rammed and damaged a Ukrainian Navy tugboat. Russian forces later seized all three Ukrainian ships, confiscating them for violating Russia's border. Six Ukrainian navy soldiers were injured, the Ukrainian navy reported. +* **incident type**: incident + * **Year started:** 2018 * **Countries:** Russia , World diff --git a/incidents/I00048.md b/incidents/I00048.md index 0a72efb..b12909a 100644 --- a/incidents/I00048.md +++ b/incidents/I00048.md @@ -1,13 +1,9 @@ -# White Helmets - -* **Type:** campaign - -* **Name:** White Helmets - -* **Id:** I00048 +# Incident I00048: White Helmets * **Summary:** +* **incident type**: campaign + * **Year started:** 2015 * **Countries:** Russia , World diff --git a/incidents/I00049.md b/incidents/I00049.md index 8ad95d7..1943fcd 100644 --- a/incidents/I00049.md +++ b/incidents/I00049.md @@ -1,13 +1,9 @@ -# White Helmets: Chemical Weapons - -* **Type:** incident - -* **Name:** White Helmets: Chemical Weapons - -* **Id:** I00049 +# Incident I00049: White Helmets: Chemical Weapons * **Summary:** On 7 April 2018, a high number of civilians were killed in the besieged Syrian city of Douma, with evidence pointing towards another chemical attack by the regime, according to the EU. Subsequent to this event, a series of images "prove" that the White Helmets "staged" the chemical attack in Syria. +* **incident type**: incident + * **Year started:** 2017 * **Countries:** Russia , World diff --git a/incidents/I00050.md b/incidents/I00050.md index add666f..bb6b9b6 100644 --- a/incidents/I00050.md +++ b/incidents/I00050.md @@ -1,16 +1,12 @@ -# #HandsOffVenezuela - -* **Type:** incident - -* **Name:** #HandsOffVenezuela - -* **Id:** I00050 +# Incident I00050: #HandsOffVenezuela * **Summary:** Venezuela has been thrown into turmoil after Guaidó declared himself interim president Jan. 23. The 35-year-old president of the National Assembly says Venezuela's constitution grants him power to take control of the government because Maduro was re-elected last year by fraud. Guaidó has called for Maduro to leave office and call new elections. More than 50 nations, including the United States and most of Latin America, concluded that Maduro's re-election last year was a fraud. They have recognized Juan Guaidó, president of the opposition-led National Assembly, as Venezuela's legitimate head of state, endorsing his mission to establish a transitional government and hold fresh elections. Maduro has remained defiant in the face of domestic and international pressure, securing the support of the governments of Iran and Russia, as well as the loyalty of the Venezuelan military. +* **incident type**: incident + * **Year started:** 2019 * **Countries:** Russia , World diff --git a/incidents/I00051.md b/incidents/I00051.md index fc1ed29..3e3d840 100644 --- a/incidents/I00051.md +++ b/incidents/I00051.md @@ -1,14 +1,10 @@ -# Integrity Initiative - -* **Type:** incident - -* **Name:** Integrity Initiative - -* **Id:** I00051 +# Incident I00051: Integrity Initiative * **Summary:** The UK Foreign Office has accused Russian state media of trying to discredit a government-funded body that works to counter Kremlin disinformation. A spokesperson said the Institute for Statecraft was hacked several weeks ago and documents were "published and amplified by Kremlin news channels". The FCO comments on the IfS were issued after a news report said the group had retweeted stories critical of Labour. Western officials believe the group involved in the hack is linked to the Russian state. Since then internal documents have been leaked to the Russian media about the organisation's activities, including lists of journalists it had contacted. The Foreign Office has provided £2.2m in funding to the institute over the last two years supported its work to counter disinformation overseas and not in the UK +* **incident type**: incident + * **Year started:** 2018 * **Countries:** Russia , World diff --git a/incidents/I00052.md b/incidents/I00052.md index 4b060d0..980ca86 100644 --- a/incidents/I00052.md +++ b/incidents/I00052.md @@ -1,13 +1,9 @@ -# China overiew - -* **Type:** campaign - -* **Name:** China overiew - -* **Id:** I00052 +# Incident I00052: China overiew * **Summary:** +* **incident type**: campaign + * **Year started:** 2015 * **Countries:** China , World diff --git a/incidents/I00053.md b/incidents/I00053.md index 6b49a24..b57f3aa 100644 --- a/incidents/I00053.md +++ b/incidents/I00053.md @@ -1,14 +1,10 @@ -# China Huawei CFO Arrest - -* **Type:** incident - -* **Name:** China Huawei CFO Arrest - -* **Id:** I00053 +# Incident I00053: China Huawei CFO Arrest * **Summary:** Dec. 1: Canadian authorities arrest Huawei's chief financial officer Meng Wanzhou at Vancouver’s airport while she is en route from Hong Kong to Mexico, after an extradition request from the Americans. The news becomes public on Dec. 5. Dec. 7: In Vancouver, Meng appears in court, where allegations of fraud are laid out. The U.S. alleges Meng misled American banks in a bid to get around American sanctions on Iran. Geopolitically complex issue combines US/China trade; Security concerns/issues related to Huawei’s 5G wireless equipment; diplomacy between Canada & China as Chinese subsequently arrest Canadian citizens. +* **incident type**: incident + * **Year started:** 2018 * **Countries:** China , World diff --git a/incidents/I00054.md b/incidents/I00054.md index 6df15e0..c0ef260 100644 --- a/incidents/I00054.md +++ b/incidents/I00054.md @@ -1,13 +1,9 @@ -# China Muslims - -* **Type:** incident - -* **Name:** China Muslims - -* **Id:** I00054 +# Incident I00054: China Muslims * **Summary:** +* **incident type**: incident + * **Year started:** 2018 * **Countries:** China , World diff --git a/incidents/I00055.md b/incidents/I00055.md index 986cf7a..e269fe9 100644 --- a/incidents/I00055.md +++ b/incidents/I00055.md @@ -1,13 +1,9 @@ -# 50 Cent Army - -* **Type:** campaign - -* **Name:** 50 Cent Army - -* **Id:** I00055 +# Incident I00055: 50 Cent Army * **Summary:** +* **incident type**: campaign + * **Year started:** 2008 * **Countries:** China , World diff --git a/incidents/I00056.md b/incidents/I00056.md index d8eb38c..84d5005 100644 --- a/incidents/I00056.md +++ b/incidents/I00056.md @@ -1,14 +1,10 @@ -# Iran Influence Operations - -* **Type:** campaign - -* **Name:** Iran Influence Operations - -* **Id:** I00056 +# Incident I00056: Iran Influence Operations * **Summary:** Iranian interference in the politics of Arab countries has become more self-evident since the Arab Spring of 2011. Iran has been trying to widen its influence in the region in a political confrontation with Saudi Arabia. Factor long-held hostility to US (Iran as a member of the “Axis of Evil”) & Isreal; it’s funding of proxies (Hezbolla) and Shia militia’s in Iraq; and most recently having the Revolutionary Guard being designated a terror organization; the seeming collapse of the Joint Comprehensive Plan of Action (nuclear programme) and expanding economic sanctions all add up to an increased likihood of Iran expanding their information operations. While there is history to Iran’s information/influence operations, starting with FireEye’s report about Iranian “fake news” websites, and subsequent reports by DFRLab (Jan 31, 2019 and March 26, 2019) we have strong document proof and assets that highlight Iran’s activities. +* **incident type**: campaign + * **Year started:** 2012 * **Countries:** Iran , World diff --git a/incidents/I00057.md b/incidents/I00057.md index ca74a01..a4ed5bc 100644 --- a/incidents/I00057.md +++ b/incidents/I00057.md @@ -1,13 +1,9 @@ -# Mexico Election - -* **Type:** incident - -* **Name:** Mexico Election - -* **Id:** I00057 +# Incident I00057: Mexico Election * **Summary:** +* **incident type**: incident + * **Year started:** 2018 * **Countries:** Russia/domestic , Mexico diff --git a/incidents/I00058.md b/incidents/I00058.md index 604b509..f54a8f0 100644 --- a/incidents/I00058.md +++ b/incidents/I00058.md @@ -1,13 +1,9 @@ -# Chemnitz - -* **Type:** incident - -* **Name:** Chemnitz - -* **Id:** I00058 +# Incident I00058: Chemnitz * **Summary:** +* **incident type**: incident + * **Year started:** 2018 * **Countries:** Russia , Germany diff --git a/incidents/I00059.md b/incidents/I00059.md index 71aef86..0996120 100644 --- a/incidents/I00059.md +++ b/incidents/I00059.md @@ -1,13 +1,9 @@ -# Myanmar - Rohingya - -* **Type:** campaign - -* **Name:** Myanmar - Rohingya - -* **Id:** I00059 +# Incident I00059: Myanmar - Rohingya * **Summary:** +* **incident type**: campaign + * **Year started:** 2014 * **Countries:** Myanmar , Myanmar diff --git a/incidents/I00060.md b/incidents/I00060.md index 3384487..6e7b144 100644 --- a/incidents/I00060.md +++ b/incidents/I00060.md @@ -1,13 +1,9 @@ -# White Genocide - -* **Type:** campaign - -* **Name:** White Genocide - -* **Id:** I00060 +# Incident I00060: White Genocide * **Summary:** +* **incident type**: campaign + * **Year started:** 2018 * **Countries:** Russia , World diff --git a/incidents/I00061.md b/incidents/I00061.md index 8ddde1a..67ca0fd 100644 --- a/incidents/I00061.md +++ b/incidents/I00061.md @@ -1,13 +1,9 @@ -# Military veterans Targetting - -* **Type:** campaign - -* **Name:** Military veterans Targetting - -* **Id:** I00061 +# Incident I00061: Military veterans Targetting * **Summary:** +* **incident type**: campaign + * **Year started:** 2017 * **Countries:** Russia , US diff --git a/incidents/I00062.md b/incidents/I00062.md index e9dafcf..c768ea7 100644 --- a/incidents/I00062.md +++ b/incidents/I00062.md @@ -1,13 +1,9 @@ -# Brexit/UK ongoing - -* **Type:** campaign - -* **Name:** Brexit/UK ongoing - -* **Id:** I00062 +# Incident I00062: Brexit/UK ongoing * **Summary:** +* **incident type**: campaign + * **Year started:** 2015 * **Countries:** Russia/domestic , UK diff --git a/incidents/I00063.md b/incidents/I00063.md index 4ee23ac..1579f49 100644 --- a/incidents/I00063.md +++ b/incidents/I00063.md @@ -1,15 +1,11 @@ -# Olympic Doping Scandal - -* **Type:** campaign - -* **Name:** Olympic Doping Scandal - -* **Id:** I00063 +# Incident I00063: Olympic Doping Scandal * **Summary:** On 18 July 2016, Richard McLaren, a Canadian attorney retained by WADA to investigate Grigor Rodchenkov (the former head of Russia's national anti-doping laboratory, the Anti-Doping Center, which was suspended by the World Anti-Doping Agency (WADA) in November 2015 for facilitating Russia's elaborate state-sponsored doping program. Rodchenkov helped develop and distribute banned performance-enhancing substances for thousands of Russian Olympians from 2005 to 2015. He made headlines in 2016 as a whistleblower, helping expose the complex and extensive nature of Russia's doping program. His revelations lead to Russia's partial ban from the 2016 Summer Olympics and total ban from the 2018 Winter Olympics.). These allegations led to a 97-page report covering significant state-sponsored doping in Russia. The investigation found corroborating evidence after conducting witness interviews, reviewing thousands of documents, analysis of hard drives, forensic analysis of urine sample collection bottles, and laboratory analysis of individual athlete samples, with "more evidence becoming available by the day." The report concluded that it was shown "beyond a reasonable doubt" that Russia's Ministry of Sport, the Centre of Sports Preparation of the National Teams of Russia, the Federal Security Service (FSB), and the WADA-accredited laboratory in Moscow had "operated for the protection of doped Russian athletes" within a "state-directed failsafe system" using "the disappearing positive [test] methodology" (DPM) after the country's poor medal count during the 2010 Winter Olympic Games in Vancouver. McLaren stated that urine samples were opened in Sochi in order to swap them "without any evidence to the untrained eye". The official producer of BEREG-KIT security bottles used for anti-doping tests, Berlinger Group, stated, "We have no knowledge of the specifications, the methods or the procedures involved in the tests and experiments conducted by the McLaren Commission." +* **incident type**: campaign + * **Year started:** 2016 * **Countries:** Russia , World diff --git a/metatechniques/M001.md b/metatechniques/M001.md new file mode 100644 index 0000000..d1c0342 --- /dev/null +++ b/metatechniques/M001.md @@ -0,0 +1,38 @@ +# Metatechnique M001: resilience + +* **Summary:** Increase the resilience to disinformation of the end subjects or other parts of the underlying system + + +| 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 | +| [C00033 Build cultural resistance to false content](../counters/C00033.md) | D2 Deny | +| [C00049 Influence literacy training](../counters/C00049.md) | D2 Deny | +| [C00050 Anti-elicitation training](../counters/C00050.md) | D2 Deny | +| [C00051 Phishing prevention education etc](../counters/C00051.md) | D2 Deny | +| [C00073 Educate on how to handle info pollution. Push out targeted education on why it's pollution](../counters/C00073.md) | D2 Deny | +| [C00160 find and train influencers](../counters/C00160.md) | D2 Deny | +| [C00204 Strengthen local media](../counters/C00204.md) | D2 Deny | +| [C00210 Use encrypted apps for confidential communication](../counters/C00210.md) | D2 Deny | +| [C00061 Innoculating at language](../counters/C00061.md) | D3 Disrupt | +| [C00109 De-escalation](../counters/C00109.md) | D3 Disrupt | +| [C00125 Prepare the population with pre-announcements](../counters/C00125.md) | D3 Disrupt | +| [C00188 Newsroom/Journalist training to counter SEO influence](../counters/C00188.md) | D3 Disrupt | +| [C00190 open engagement with civil society](../counters/C00190.md) | D3 Disrupt | +| [C00193 promotion of a “higher standard of journalism”](../counters/C00193.md) | D3 Disrupt | +| [C00212 build public resilence by making civil society more vibrant](../counters/C00212.md) | D3 Disrupt | +| [C00021 Encourage in-person communication](../counters/C00021.md) | D4 Degrade | +| [C00022 Innoculate. Positive campaign to promote feeling of safety - to counter ability and fear based attacks](../counters/C00022.md) | D4 Degrade | +| [C00023 Promote civility as an identity that people will defend](../counters/C00023.md) | D4 Degrade | +| [C00024 Promote constructive narratives i.e. not polarising. Pro-life, pro-choice, or pro-USA?](../counters/C00024.md) | D4 Degrade | +| [C00054 Media literacy training. ](../counters/C00054.md) | D4 Degrade | +| [C00111 Present sympathetic views of opposite side](../counters/C00111.md) | D4 Degrade | +| [C00158 Use training to build the resilience of at-risk populations.](../counters/C00158.md) | D4 Degrade | +| [C00027 Create culture of civility](../counters/C00027.md) | D7 Deter | +| [C00093 Establish tailored code of conduct for individuals with many followers](../counters/C00093.md) | D7 Deter | +| [C00121 Tool transparency and literacy for channels people follow. ](../counters/C00121.md) | D7 Deter | +| [C00130 Mentorship: elders, youth, credit. Learn vicariously.](../counters/C00130.md) | D7 Deter | + + +DO NOT EDIT ABOVE THIS LINE - PLEASE ADD NOTES BELOW \ No newline at end of file diff --git a/metatechniques/M002.md b/metatechniques/M002.md new file mode 100644 index 0000000..15da136 --- /dev/null +++ b/metatechniques/M002.md @@ -0,0 +1,27 @@ +# Metatechnique M002: diversion + +* **Summary:** Create alternative channels, messages etc in disinformation-prone systems + + +| Counters | Response types | +| -------- | -------------- | +| [C00195 Redirect Method](../counters/C00195.md) | D2 Deny | +| [C00202 Set data 'honeytraps'](../counters/C00202.md) | D2 Deny | +| [C00029 Create fake website to issue counter narrative and counter narrative through physical merchandise](../counters/C00029.md) | D3 Disrupt | +| [C00030 Develop a compelling counter narrative (truth based)](../counters/C00030.md) | D3 Disrupt | +| [C00032 Hijack content and link to truth- based info (platform) ](../counters/C00032.md) | D3 Disrupt | +| [C00078 Change Search Algorithms for Disinformation Content. More specifically, change image search algorithms for hate groups and extremists](../counters/C00078.md) | D3 Disrupt | +| [C00079 Change search algorithms for hate and extremist queries to show content sympathetic to opposite side](../counters/C00079.md) | D3 Disrupt | +| [C00080 Create competing narrative](../counters/C00080.md) | D3 Disrupt | +| [C00084 Steal their truths](../counters/C00084.md) | D3 Disrupt | +| [C00100 Hashtag jacking](../counters/C00100.md) | D3 Disrupt | +| [C00106 Click-bait centrist content](../counters/C00106.md) | D3 Disrupt | +| [C00194 Provide an alternative to Russian information by expanding and improving local content.](../counters/C00194.md) | D3 Disrupt | +| [C00086 Distract from noise with addictive content](../counters/C00086.md) | D4 Degrade | +| [C00088 Poison pill recasting of message](../counters/C00088.md) | D4 Degrade | +| [C00090 Fake engagement system](../counters/C00090.md) | D5 Deceive | +| [C00091 Honeypot social community](../counters/C00091.md) | D5 Deceive | +| [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/metatechniques/M003.md b/metatechniques/M003.md new file mode 100644 index 0000000..168a0e1 --- /dev/null +++ b/metatechniques/M003.md @@ -0,0 +1,29 @@ +# Metatechnique M003: daylight + +* **Summary:** Make disinformation objects, mechanisms, messaging etc visible + + +| Counters | Response types | +| -------- | -------------- | +| [C00113 Debunk and defuse a fake expert / credentials. Attack audience quality of fake expert](../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 | +| [C00150 “calling them out”](../counters/C00150.md) | D2 Deny | +| [C00152 “name and shame”](../counters/C00152.md) | D2 Deny | +| [C00217 Registries alert when large batches of newsy URLs get registered together](../counters/C00217.md) | D2 Deny | +| [C00018 Promote constructive communication by shaming division-enablers](../counters/C00018.md) | D3 Disrupt | +| [C00019 Promote playbooks to call out division-enablers](../counters/C00019.md) | D3 Disrupt | +| [C00068 Expose online funding as fake](../counters/C00068.md) | D3 Disrupt | +| [C00069 Mark clickbait visually](../counters/C00069.md) | D3 Disrupt | +| [C00081 Discredit by pointing out the "noise" and informing public that "flooding" is a technique of disinformation campaigns; point out intended objective of "noise"](../counters/C00081.md) | D3 Disrupt | +| [C00126 Social media amber alert](../counters/C00126.md) | D3 Disrupt | +| [C00151 “fight in the light”](../counters/C00151.md) | D3 Disrupt | +| [C00219 Add metadata to content - out of the control of the adversary](../counters/C00219.md) | D3 Disrupt | +| [C00085 Demuting content](../counters/C00085.md) | D4 Degrade | +| [C00184 Media exposure](../counters/C00184.md) | D4 Degrade | +| [C00189 Ongoing analysis/monitoring of "flagged" profiles](../counters/C00189.md) | D6 Destroy | +| [C00048 Name and Shame](../counters/C00048.md) | D7 Deter | +| [C00094 Force full disclosure on corporate sponsor of research](../counters/C00094.md) | D7 Deter | + + +DO NOT EDIT ABOVE THIS LINE - PLEASE ADD NOTES BELOW \ No newline at end of file diff --git a/metatechniques/M004.md b/metatechniques/M004.md new file mode 100644 index 0000000..7651ed9 --- /dev/null +++ b/metatechniques/M004.md @@ -0,0 +1,36 @@ +# Metatechnique M004: friction + +* **Summary:** Slow down transmission or uptake of disinformation objects, messaging etc + + +| Counters | Response types | +| -------- | -------------- | +| [C00006 Charge for social media](../counters/C00006.md) | D2 Deny | +| [C00010 Enhanced privacy regulation for social media](../counters/C00010.md) | D2 Deny | +| [C00034 Create more friction at account creation](../counters/C00034.md) | D2 Deny | +| [C00035 Friction](../counters/C00035.md) | D2 Deny | +| [C00056 Get off social media](../counters/C00056.md) | D2 Deny | +| [C00097 Require use of verified identities to contribute to poll or comment](../counters/C00097.md) | D2 Deny | +| [C00098 Revocation of "verified"](../counters/C00098.md) | D2 Deny | +| [C00099 Strengthen verification methods](../counters/C00099.md) | D2 Deny | +| [C00110 Monetize centrist SEO by subsidizing the difference in greater clicks towards extremist content](../counters/C00110.md) | D2 Deny | +| [C00112 "Prove they are not an op!"](../counters/C00112.md) | D2 Deny | +| [C00114 Don't engage with payloads](../counters/C00114.md) | D2 Deny | +| [C00122 Content moderation. Censorship?](../counters/C00122.md) | D2 Deny | +| [C00165 Limit access to alterable documents](../counters/C00165.md) | D2 Deny | +| [C00044 Keep people from posting to social media immediately](../counters/C00044.md) | D3 Disrupt | +| [C00045 S4d detection and re-allocation approaches](../counters/C00045.md) | D3 Disrupt | +| [C00123 Bot control](../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 | +| [C00203 Stop offering press credentials to propaganda outlets](../counters/C00203.md) | D3 Disrupt | +| [C00020 Deligitimise the 24 hour news cycle](../counters/C00020.md) | D4 Degrade | +| [C00089 Throttle number of forwards](../counters/C00089.md) | D4 Degrade | +| [C00101 Create participant friction](../counters/C00101.md) | D4 Degrade | +| [C00102 Make repeat voting harder](../counters/C00102.md) | D4 Degrade | +| [C00141 "Hey this story is old" popup when messaging with old URL](../counters/C00141.md) | D4 Degrade | +| [C00142 "This has been disproved - do you want to forward it"](../counters/C00142.md) | D4 Degrade | + + +DO NOT EDIT ABOVE THIS LINE - PLEASE ADD NOTES BELOW \ No newline at end of file diff --git a/metatechniques/M005.md b/metatechniques/M005.md new file mode 100644 index 0000000..406d2b7 --- /dev/null +++ b/metatechniques/M005.md @@ -0,0 +1,29 @@ +# Metatechnique M005: removal + +* **Summary:** Remove disinformation objects from the system + + +| Counters | Response types | +| -------- | -------------- | +| [C00039 Standard reporting for false profiles](../counters/C00039.md) | D2 Deny | +| [C00058 Report crowdfunder as violator](../counters/C00058.md) | D2 Deny | +| [C00063 Ban political microtargeting](../counters/C00063.md) | D2 Deny | +| [C00070 Block access to platform. DDOS an attacker.](../counters/C00070.md) | D2 Deny | +| [C00071 Block source of pollution](../counters/C00071.md) | D2 Deny | +| [C00072 Content censorship in non-relevant domains e.g. Pinterest antivax](../counters/C00072.md) | D2 Deny | +| [C00076 Prohibit images in political discourse channels](../counters/C00076.md) | D2 Deny | +| [C00131 Seize and analyse botnet servers](../counters/C00131.md) | D2 Deny | +| [C00154 Ask media not to report false information](../counters/C00154.md) | D2 Deny | +| [C00155 Ban incident actors from funding sites](../counters/C00155.md) | D2 Deny | +| [C00171 social media content take-downs](../counters/C00171.md) | D2 Deny | +| [C00172 social media page removal](../counters/C00172.md) | D2 Deny | +| [C00182 malware detection/quarantine/deletion](../counters/C00182.md) | D2 Deny | +| [C00197 remove suspicious facebook accounts](../counters/C00197.md) | D2 Deny | +| [C00218 Censorship](../counters/C00218.md) | D2 Deny | +| [C00065 Ban political ads](../counters/C00065.md) | D3 Disrupt | +| [C00133 Deplatform Account*](../counters/C00133.md) | D3 Disrupt | +| [C00135 Deplatform message groups and/or message boards](../counters/C00135.md) | D3 Disrupt | +| [C00179 Identify, monitor, and, if necessary, target Russia-based nonattributed social media accounts ](../counters/C00179.md) | D3 Disrupt | + + +DO NOT EDIT ABOVE THIS LINE - PLEASE ADD NOTES BELOW \ No newline at end of file diff --git a/metatechniques/M006.md b/metatechniques/M006.md new file mode 100644 index 0000000..23964fb --- /dev/null +++ b/metatechniques/M006.md @@ -0,0 +1,20 @@ +# Metatechnique M006: scoring + +* **Summary:** Use a rating system + + +| Counters | Response types | +| -------- | -------------- | +| [C00007 Create framework for BetterBusinessBureau (BBB) for news media](../counters/C00007.md) | D2 Deny | +| [C00008 Create shared fact-checking database](../counters/C00008.md) | D2 Deny | +| [C00013 Rating framework for news - full transcripts, link source, add items, BBB for news](../counters/C00013.md) | D2 Deny | +| [C00014 Real-time updates to fact-checking database](../counters/C00014.md) | D2 Deny | +| [C00015 Reputation scores for social media users](../counters/C00015.md) | D2 Deny | +| [C00057 Privacy standards](../counters/C00057.md) | D2 Deny | +| [C00107 Content moderation](../counters/C00107.md) | D2 Deny | +| [C00092 Establish a truth teller reputation score for individuals with many followers](../counters/C00092.md) | D7 Deter | +| [C00095 Keep score](../counters/C00095.md) | D7 Deter | +| [C00096 Strengthen institutions that are always truth tellers](../counters/C00096.md) | D7 Deter | + + +DO NOT EDIT ABOVE THIS LINE - PLEASE ADD NOTES BELOW \ No newline at end of file diff --git a/metatechniques/M007.md b/metatechniques/M007.md new file mode 100644 index 0000000..6bf618a --- /dev/null +++ b/metatechniques/M007.md @@ -0,0 +1,26 @@ +# Metatechnique M007: metatechnique + +* **Summary:** + + +| Counters | Response types | +| -------- | -------------- | +| [C00001 Better models of info spread up the layers](../counters/C00001.md) | ALL | +| [C00003 How can we safeguard against extremists using the tools that we will produce?](../counters/C00003.md) | ALL | +| [C00004 Managing like a chronic disease](../counters/C00004.md) | ALL | +| [C00005 Policy: makers, terminology, elements: a) broad, b) specific](../counters/C00005.md) | ALL | +| [C00012 Platform regulation](../counters/C00012.md) | D2 Deny | +| [C00055 Empower existing regulators to govern social media](../counters/C00055.md) | D2 Deny | +| [C00174 Free and Fair Press](../counters/C00174.md) | D2 Deny | +| [C00159 Campaign mindset and associated toolbox](../counters/C00159.md) | D3 Disrupt | +| [C00170 elevate information as a critical domain of statecraft](../counters/C00170.md) | D3 Disrupt | +| [C00196 Include the role of social media in the regulatory framework for media](../counters/C00196.md) | D3 Disrupt | +| [C00205 strong dialogue between the federal government and private sector to encourage better reporting](../counters/C00205.md) | D3 Disrupt | +| [C00214 Create policy that makes social media police disinformation](../counters/C00214.md) | D3 Disrupt | +| [C00215 Use fraud legislation to clean up social media](../counters/C00215.md) | D3 Disrupt | +| [C00120 Open dialogue about design of platforms to produce different outcomes](../counters/C00120.md) | D7 Deter | +| [C00161 Coalition Building and Third-Party Inducements:](../counters/C00161.md) | D7 Deter | +| [C00176 Improve Coordination with and feedback from the U.S. private sector](../counters/C00176.md) | D7 Deter | + + +DO NOT EDIT ABOVE THIS LINE - PLEASE ADD NOTES BELOW \ No newline at end of file diff --git a/metatechniques/M008.md b/metatechniques/M008.md new file mode 100644 index 0000000..81c9242 --- /dev/null +++ b/metatechniques/M008.md @@ -0,0 +1,16 @@ +# Metatechnique M008: data pollution + +* **Summary:** Add artefacts to the underlying system that deliberately confound disinformation monitoring + + +| Counters | Response types | +| -------- | -------------- | +| [C00137 Pollute the AB-testing data feeds](../counters/C00137.md) | D3 Disrupt | +| [C00140 "Bomb" link shorteners with lots of calls](../counters/C00140.md) | D4 Degrade | +| [C00145 Pollute the data voids with wholesome content (Kittens! Babyshark!)](../counters/C00145.md) | D4 Degrade | +| [C00148 Add random links to network graphs](../counters/C00148.md) | D4 Degrade | +| [C00149 Poison the monitoring & evaluation data](../counters/C00149.md) | D4 Degrade | +| [C00047 Coordinated inauthentics](../counters/C00047.md) | D5 Deceive | + + +DO NOT EDIT ABOVE THIS LINE - PLEASE ADD NOTES BELOW \ No newline at end of file diff --git a/metatechniques/M009.md b/metatechniques/M009.md new file mode 100644 index 0000000..7bcb15b --- /dev/null +++ b/metatechniques/M009.md @@ -0,0 +1,16 @@ +# Metatechnique M009: dilution + +* **Summary:** Dilute disinformation artefacts and messaging with other content (kittens!) + + +| Counters | Response types | +| -------- | -------------- | +| [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 | +| [C00128 Create friction by marking content with ridicule or other "decelerants"](../counters/C00128.md) | D3 Disrupt | +| [C00178 Fill information voids with non-disinformation content](../counters/C00178.md) | D3 Disrupt | +| [C00087 Make more noise](../counters/C00087.md) | D4 Degrade | + + +DO NOT EDIT ABOVE THIS LINE - PLEASE ADD NOTES BELOW \ No newline at end of file diff --git a/metatechniques/M010.md b/metatechniques/M010.md new file mode 100644 index 0000000..960a51e --- /dev/null +++ b/metatechniques/M010.md @@ -0,0 +1,27 @@ +# Metatechnique M010: countermessaging + +* **Summary:** Create and distribute alternative messages to disinformation + + +| Counters | Response types | +| -------- | -------------- | +| [C00075 normalise language](../counters/C00075.md) | D2 Deny | +| [C00157 Build alternative news sources](../counters/C00157.md) | D2 Deny | +| [C00167 Deploy Information and Narrative-Building in Service of Statecraft](../counters/C00167.md) | D2 Deny | +| [C00017 Media campaign promoting in-group to out-group in person communication / activities](../counters/C00017.md) | D3 Disrupt | +| [C00042 Address truth contained in narratives](../counters/C00042.md) | D3 Disrupt | +| [C00082 Ground truthing as automated response to pollution](../counters/C00082.md) | D3 Disrupt | +| [C00136 Microtarget most likely targets then send them countermessages](../counters/C00136.md) | D3 Disrupt | +| [C00156 Better tell the U.S., NATO, and EU story.](../counters/C00156.md) | D3 Disrupt | +| [C00169 develop a creative content hub](../counters/C00169.md) | D3 Disrupt | +| [C00200 Respected figure (influencer) disavows misinfo](../counters/C00200.md) | D3 Disrupt | +| [C00211 Use humorous counter-narratives](../counters/C00211.md) | D3 Disrupt | +| [C00025 Promote identity neutral narratives](../counters/C00025.md) | D4 Degrade | +| [C00026 Shore up democracy based messages (peace, freedom) - make it sexy](../counters/C00026.md) | D4 Degrade | +| [C00117 Downgrade de-amplify label promote counter to disinformation](../counters/C00117.md) | D4 Degrade | +| [C00118 Repurpose images with new text](../counters/C00118.md) | D4 Degrade | +| [C00062 Free open library sources worldwide](../counters/C00062.md) | D6 Destroy | +| [C00119 Engage payload and debunk. Provide link to facts. ](../counters/C00119.md) | D7 Deter | + + +DO NOT EDIT ABOVE THIS LINE - PLEASE ADD NOTES BELOW \ No newline at end of file diff --git a/metatechniques/M011.md b/metatechniques/M011.md new file mode 100644 index 0000000..56cce2e --- /dev/null +++ b/metatechniques/M011.md @@ -0,0 +1,13 @@ +# Metatechnique M011: verification + +* **Summary:** Verify objects, content, connections etc. Includes fact-checking + + +| Counters | Response types | +| -------- | -------------- | +| [C00040 third party verification for people](../counters/C00040.md) | D2 Deny | +| [C00059 Verification of project before posting (counters funding campaigns)](../counters/C00059.md) | D2 Deny | +| [C00028 Blockchain audit log and validation with collaborative decryption to post comments](../counters/C00028.md) | D3 Disrupt | + + +DO NOT EDIT ABOVE THIS LINE - PLEASE ADD NOTES BELOW \ No newline at end of file diff --git a/metatechniques/M012.md b/metatechniques/M012.md new file mode 100644 index 0000000..2bdf2bb --- /dev/null +++ b/metatechniques/M012.md @@ -0,0 +1,14 @@ +# Metatechnique M012: cleaning + +* **Summary:** Clean unneeded resources (accounts etc) from the underlying system so they can't be used in disinformation + + +| Counters | Response types | +| -------- | -------------- | +| [C00016 Social media as a privilege not right](../counters/C00016.md) | D2 Deny | +| [C00074 Identify identical content and mass deplatform](../counters/C00074.md) | D2 Deny | +| [C00043 Detect hijacked accounts and reallocate them ](../counters/C00043.md) | D3 Disrupt | +| [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/metatechniques/M013.md b/metatechniques/M013.md new file mode 100644 index 0000000..5eaaef0 --- /dev/null +++ b/metatechniques/M013.md @@ -0,0 +1,21 @@ +# Metatechnique M013: targeting + +* **Summary:** Target the components of a disinformation campaign + + +| Counters | Response types | +| -------- | -------------- | +| [C00036 Infiltrate the in-group to discredit leaders (divide)](../counters/C00036.md) | D2 Deny | +| [C00060 Enhanced legal enforcement against for-profit follower/engagement factories](../counters/C00060.md) | D3 Disrupt | +| [C00067 Denigrate the recipient/ project (of online funding)](../counters/C00067.md) | D3 Disrupt | +| [C00077 Active defence: replay "develop people"](../counters/C00077.md) | D3 Disrupt | +| [C00153 Use offensive cyber action](../counters/C00153.md) | D3 Disrupt | +| [C00162 collect data/map constellations of Russian“civil society”. Unravel/target the Potemkin villages](../counters/C00162.md) | D3 Disrupt | +| [C00164 compatriot policy](../counters/C00164.md) | D3 Disrupt | +| [C00046 Marginalise and discredit extremist](../counters/C00046.md) | D4 Degrade | +| [C00052 Infiltrate platforms](../counters/C00052.md) | D4 Degrade | +| [C00143 (botnet) DMCA takedown requests to waste group time](../counters/C00143.md) | D4 Degrade | +| [C00207 tit-for-tat campaign](../counters/C00207.md) | D7 Deter | + + +DO NOT EDIT ABOVE THIS LINE - PLEASE ADD NOTES BELOW \ No newline at end of file diff --git a/metatechniques/M014.md b/metatechniques/M014.md new file mode 100644 index 0000000..484a9eb --- /dev/null +++ b/metatechniques/M014.md @@ -0,0 +1,14 @@ +# Metatechnique M014: reduce resources + +* **Summary:** Reduce the resources available to disinformation creators + + +| Counters | Response types | +| -------- | -------------- | +| [C00129 Use banking to cut off access ](../counters/C00129.md) | D2 Deny | +| [C00216 Use advertiser controls to stem flow of funds to bad actors](../counters/C00216.md) | D2 Deny | +| [C00138 Spam domestic actors with lawsuits](../counters/C00138.md) | D3 Disrupt | +| [C00144 Buy out troll farm employees / offer them jobs](../counters/C00144.md) | D4 Degrade | + + +DO NOT EDIT ABOVE THIS LINE - PLEASE ADD NOTES BELOW \ No newline at end of file diff --git a/metatechniques/cleaningcounters.md b/metatechniques/cleaningcounters.md deleted file mode 100644 index a38ebd6..0000000 --- a/metatechniques/cleaningcounters.md +++ /dev/null @@ -1,14 +0,0 @@ -# metatechnique counters: cleaning - -## by action - - -### D2 Deny -* C00016: Social media as a privilege not right (needs ) -* C00074: Identify identical content and mass deplatform (needs platform_admin,platform_admin:socialmedia) - -### D3 Disrupt -* C00043: Detect hijacked accounts and reallocate them (needs platform_admin,activists,civil_society,money) - -### D4 Degrade -* C00053: Delete old accounts / Remove unused social media accounts (needs platform_admin,platform_admin:socialmedia,public:account_owners) diff --git a/metatechniques/countermessagingcounters.md b/metatechniques/countermessagingcounters.md deleted file mode 100644 index 88c3e30..0000000 --- a/metatechniques/countermessagingcounters.md +++ /dev/null @@ -1,31 +0,0 @@ -# metatechnique counters: countermessaging - -## by action - - -### D2 Deny -* C00075: normalise language (needs ) -* C00157: Build alternative news sources (needs ) -* C00167: Deploy Information and Narrative-Building in Service of Statecraft (needs ) - -### D3 Disrupt -* C00017: Media campaign promoting in-group to out-group in person communication / activities (needs media) -* C00042: Address truth contained in narratives (needs ) -* C00082: Ground truthing as automated response to pollution (needs ) -* C00136: Microtarget most likely targets then send them countermessages (needs ) -* C00156: Better tell the U.S., NATO, and EU story. (needs government,military) -* C00169: develop a creative content hub (needs ) -* C00200: Respected figure (influencer) disavows misinfo (needs influencers) -* C00211: Use humorous counter-narratives (needs ) - -### D4 Degrade -* C00025: Promote identity neutral narratives (needs ) -* C00026: Shore up democracy based messages (peace, freedom) - make it sexy (needs ) -* C00117: Downgrade de-amplify label promote counter to disinformation (needs ) -* C00118: Repurpose images with new text (needs ) - -### D6 Destroy -* C00062: Free open library sources worldwide (needs ) - -### D7 Deter -* C00119: Engage payload and debunk. Provide link to facts. (needs ) diff --git a/metatechniques/data pollutioncounters.md b/metatechniques/data pollutioncounters.md deleted file mode 100644 index 55db28a..0000000 --- a/metatechniques/data pollutioncounters.md +++ /dev/null @@ -1,16 +0,0 @@ -# metatechnique counters: data pollution - -## by action - - -### D3 Disrupt -* C00137: Pollute the AB-testing data feeds (needs ) - -### D4 Degrade -* C00140: "Bomb" link shorteners with lots of calls (needs ) -* C00145: Pollute the data voids with wholesome content (Kittens! Babyshark!) (needs ) -* C00148: Add random links to network graphs (needs platform_algorithms) -* C00149: Poison the monitoring & evaluation data (needs ) - -### D5 Deceive -* C00047: Coordinated inauthentics (needs ) diff --git a/metatechniques/daylightcounters.md b/metatechniques/daylightcounters.md deleted file mode 100644 index 7fc966d..0000000 --- a/metatechniques/daylightcounters.md +++ /dev/null @@ -1,33 +0,0 @@ -# metatechnique counters: daylight - -## by action - - -### D2 Deny -* C00113: Debunk and defuse a fake expert / credentials. Attack audience quality of fake expert (needs ) -* C00115: Expose actor and intentions (needs ) -* C00116: Provide proof of involvement (needs ) -* C00150: “calling them out” (needs ) -* C00152: “name and shame” (needs ) -* C00217: Registries alert when large batches of newsy URLs get registered together (needs platform_admin) - -### D3 Disrupt -* C00018: Promote constructive communication by shaming division-enablers (needs ) -* C00019: Promote playbooks to call out division-enablers (needs ) -* C00068: Expose online funding as fake (needs ) -* C00069: Mark clickbait visually (needs ) -* C00081: Discredit by pointing out the "noise" and informing public that "flooding" is a technique of disinformation campaigns; point out intended objective of "noise" (needs ) -* C00126: Social media amber alert (needs ) -* C00151: “fight in the light” (needs ) -* C00219: Add metadata to content - out of the control of the adversary (needs ) - -### D4 Degrade -* C00085: Demuting content (needs ) -* C00184: Media exposure (needs ) - -### D6 Destroy -* C00189: Ongoing analysis/monitoring of "flagged" profiles (needs ) - -### D7 Deter -* C00048: Name and Shame (needs ) -* C00094: Force full disclosure on corporate sponsor of research (needs ) diff --git a/metatechniques/dilutioncounters.md b/metatechniques/dilutioncounters.md deleted file mode 100644 index 795355c..0000000 --- a/metatechniques/dilutioncounters.md +++ /dev/null @@ -1,14 +0,0 @@ -# metatechnique counters: dilution - -## by action - - -### D3 Disrupt -* C00031: Dilute the core narrative - create multiple permutations, target / amplify (needs ) -* C00066: Co-opt a hashtag and drown it out (hijack it back) (needs ) -* C00105: Buy more advertising than the adversary to shift influence and algorithms (needs money,adtech) -* C00128: Create friction by marking content with ridicule or other "decelerants" (needs influencers:trusted_authority) -* C00178: Fill information voids with non-disinformation content (needs ) - -### D4 Degrade -* C00087: Make more noise (needs ) diff --git a/metatechniques/diversioncounters.md b/metatechniques/diversioncounters.md deleted file mode 100644 index 717040f..0000000 --- a/metatechniques/diversioncounters.md +++ /dev/null @@ -1,29 +0,0 @@ -# metatechnique counters: diversion - -## by action - - -### D2 Deny -* C00195: Redirect Method (needs ) -* C00202: Set data 'honeytraps' (needs ) - -### D3 Disrupt -* C00029: Create fake website to issue counter narrative and counter narrative through physical merchandise (needs ) -* C00030: Develop a compelling counter narrative (truth based) (needs ) -* C00032: Hijack content and link to truth- based info (platform) (needs ) -* C00078: Change Search Algorithms for Disinformation Content. More specifically, change image search algorithms for hate groups and extremists (needs ) -* C00079: Change search algorithms for hate and extremist queries to show content sympathetic to opposite side (needs ) -* C00080: Create competing narrative (needs ) -* C00084: Steal their truths (needs ) -* C00100: Hashtag jacking (needs ) -* C00106: Click-bait centrist content (needs ) -* C00194: Provide an alternative to Russian information by expanding and improving local content. (needs ) - -### D4 Degrade -* C00086: Distract from noise with addictive content (needs ) -* C00088: Poison pill recasting of message (needs ) - -### D5 Deceive -* C00090: Fake engagement system (needs ) -* C00091: Honeypot social community (needs ) -* C00103: Create a bot that engages / distract trolls (needs developers) diff --git a/metatechniques/frictioncounters.md b/metatechniques/frictioncounters.md deleted file mode 100644 index 328c6c9..0000000 --- a/metatechniques/frictioncounters.md +++ /dev/null @@ -1,36 +0,0 @@ -# metatechnique counters: friction - -## by action - - -### D2 Deny -* C00006: Charge for social media (needs platform_admin:socialmedia) -* C00010: Enhanced privacy regulation for social media (needs government:policymakers) -* C00034: Create more friction at account creation (needs ) -* C00035: Friction (needs ) -* C00056: Get off social media (needs ) -* C00097: Require use of verified identities to contribute to poll or comment (needs platform_algorithms) -* C00098: Revocation of "verified" (needs platform_admin) -* C00099: Strengthen verification methods (needs platform_algorithms) -* C00110: Monetize centrist SEO by subsidizing the difference in greater clicks towards extremist content (needs funding) -* C00112: "Prove they are not an op!" (needs ) -* C00114: Don't engage with payloads (needs public) -* C00122: Content moderation. Censorship? (needs platform_admin) -* C00165: Limit access to alterable documents (needs ) - -### D3 Disrupt -* C00044: Keep people from posting to social media immediately (needs platform_algorithms) -* C00045: S4d detection and re-allocation approaches (needs ) -* C00123: Bot control (needs ) -* C00124: Don't feed the trolls (needs public,media) -* C00139: Weaponise youtube content matrices (needs ) -* C00147: Make amplification of social media ports expire (e.g. can't like/ retweet after n days) (needs platform_algorithms) -* C00203: Stop offering press credentials to propaganda outlets (needs government) - -### D4 Degrade -* C00020: Deligitimise the 24 hour news cycle (needs media) -* C00089: Throttle number of forwards (needs ) -* C00101: Create participant friction (needs platform_algorithms) -* C00102: Make repeat voting harder (needs platform_admin) -* C00141: "Hey this story is old" popup when messaging with old URL (needs platform_algorithms) -* C00142: "This has been disproved - do you want to forward it" (needs platform_algorithms) diff --git a/metatechniques/metatechniquecounters.md b/metatechniques/metatechniquecounters.md deleted file mode 100644 index 340506f..0000000 --- a/metatechniques/metatechniquecounters.md +++ /dev/null @@ -1,28 +0,0 @@ -# metatechnique counters: metatechnique - -## by action - - -### ALL -* C00001: Better models of info spread up the layers (needs ) -* C00003: How can we safeguard against extremists using the tools that we will produce? (needs ) -* C00004: Managing like a chronic disease (needs ) -* C00005: Policy: makers, terminology, elements: a) broad, b) specific (needs ) - -### D2 Deny -* C00012: Platform regulation (needs government:policymakers) -* C00055: Empower existing regulators to govern social media (needs government:policymakers,government,platform_admin) -* C00174: Free and Fair Press (needs ) - -### D3 Disrupt -* C00159: Campaign mindset and associated toolbox (needs ) -* C00170: elevate information as a critical domain of statecraft (needs ) -* C00196: Include the role of social media in the regulatory framework for media (needs government) -* C00205: strong dialogue between the federal government and private sector to encourage better reporting (needs companies,government) -* C00214: Create policy that makes social media police disinformation (needs government:policymakers) -* C00215: Use fraud legislation to clean up social media (needs government:policymakers) - -### D7 Deter -* C00120: Open dialogue about design of platforms to produce different outcomes (needs ) -* C00161: Coalition Building and Third-Party Inducements: (needs ) -* C00176: Improve Coordination with and feedback from the U.S. private sector (needs ) diff --git a/metatechniques/reduce resourcescounters.md b/metatechniques/reduce resourcescounters.md deleted file mode 100644 index 8574a73..0000000 --- a/metatechniques/reduce resourcescounters.md +++ /dev/null @@ -1,14 +0,0 @@ -# metatechnique counters: reduce resources - -## by action - - -### D2 Deny -* C00129: Use banking to cut off access (needs ) -* C00216: Use advertiser controls to stem flow of funds to bad actors (needs platform_admin:adtech) - -### D3 Disrupt -* C00138: Spam domestic actors with lawsuits (needs ) - -### D4 Degrade -* C00144: Buy out troll farm employees / offer them jobs (needs ) diff --git a/metatechniques/removalcounters.md b/metatechniques/removalcounters.md deleted file mode 100644 index b81c77e..0000000 --- a/metatechniques/removalcounters.md +++ /dev/null @@ -1,27 +0,0 @@ -# metatechnique counters: removal - -## by action - - -### D2 Deny -* C00039: Standard reporting for false profiles (needs ) -* C00058: Report crowdfunder as violator (needs ) -* C00063: Ban political microtargeting (needs government:policymakers) -* C00070: Block access to platform. DDOS an attacker. (needs ) -* C00071: Block source of pollution (needs ) -* C00072: Content censorship in non-relevant domains e.g. Pinterest antivax (needs ) -* C00076: Prohibit images in political discourse channels (needs ) -* C00131: Seize and analyse botnet servers (needs server_admin) -* C00154: Ask media not to report false information (needs media) -* C00155: Ban incident actors from funding sites (needs platform_admin:fundingsites) -* C00171: social media content take-downs (needs platform_admin:socialmedia) -* C00172: social media page removal (needs platform_admin:socialmedia) -* C00182: malware detection/quarantine/deletion (needs infosec) -* C00197: remove suspicious facebook accounts (needs ) -* C00218: Censorship (needs platform_admin) - -### D3 Disrupt -* C00065: Ban political ads (needs government:policymakers) -* C00133: Deplatform Account* (needs platform_admin) -* C00135: Deplatform message groups and/or message boards (needs platform_admin) -* C00179: Identify, monitor, and, if necessary, target Russia-based nonattributed social media accounts (needs ) diff --git a/metatechniques/resiliencecounters.md b/metatechniques/resiliencecounters.md deleted file mode 100644 index 7a7de1f..0000000 --- a/metatechniques/resiliencecounters.md +++ /dev/null @@ -1,40 +0,0 @@ -# metatechnique counters: resilience - -## by action - - -### D2 Deny -* C00009: Educate high profile influencers on best practices (needs influencers,educators) -* C00011: Media literacy. Games to identify fake news (needs educators,gamesdesigners,developers) -* C00033: Build cultural resistance to false content (needs ) -* C00049: Influence literacy training (needs educators) -* C00050: Anti-elicitation training (needs educators) -* C00051: Phishing prevention education etc (needs educators) -* C00073: Educate on how to handle info pollution. Push out targeted education on why it's pollution (needs educators) -* C00160: find and train influencers (needs data_scientist,influencers) -* C00204: Strengthen local media (needs media) -* C00210: Use encrypted apps for confidential communication (needs ) - -### D3 Disrupt -* C00061: Innoculating at language (needs ) -* C00109: De-escalation (needs ) -* C00125: Prepare the population with pre-announcements (needs ) -* C00188: Newsroom/Journalist training to counter SEO influence (needs media,educators) -* C00190: open engagement with civil society (needs public) -* C00193: promotion of a “higher standard of journalism” (needs media,educators) -* C00212: build public resilence by making civil society more vibrant (needs educators,government) - -### D4 Degrade -* C00021: Encourage in-person communication (needs ) -* C00022: Innoculate. Positive campaign to promote feeling of safety - to counter ability and fear based attacks (needs ) -* C00023: Promote civility as an identity that people will defend (needs ) -* C00024: Promote constructive narratives i.e. not polarising. Pro-life, pro-choice, or pro-USA? (needs ) -* C00054: Media literacy training. (needs educators,libraries,schools,DHS,NGO,platform_outreach,media,community_groups,religious_organisations) -* C00111: Present sympathetic views of opposite side (needs media,content_creators) -* C00158: Use training to build the resilience of at-risk populations. (needs educators,media) - -### D7 Deter -* C00027: Create culture of civility (needs ) -* C00093: Establish tailored code of conduct for individuals with many followers (needs ) -* C00121: Tool transparency and literacy for channels people follow. (needs ) -* C00130: Mentorship: elders, youth, credit. Learn vicariously. (needs ) diff --git a/metatechniques/scoringcounters.md b/metatechniques/scoringcounters.md deleted file mode 100644 index bdb2a4b..0000000 --- a/metatechniques/scoringcounters.md +++ /dev/null @@ -1,18 +0,0 @@ -# metatechnique counters: scoring - -## by action - - -### D2 Deny -* C00007: Create framework for BetterBusinessBureau (BBB) for news media (needs ) -* C00008: Create shared fact-checking database (needs factcheckers) -* C00013: Rating framework for news - full transcripts, link source, add items, BBB for news (needs ) -* C00014: Real-time updates to fact-checking database (needs factcheckers) -* C00015: Reputation scores for social media users (needs data_scientist,datastreams) -* C00057: Privacy standards (needs ) -* C00107: Content moderation (needs ) - -### D7 Deter -* C00092: Establish a truth teller reputation score for individuals with many followers (needs ) -* C00095: Keep score (needs ) -* C00096: Strengthen institutions that are always truth tellers (needs ) diff --git a/metatechniques/targetingcounters.md b/metatechniques/targetingcounters.md deleted file mode 100644 index 0cedfad..0000000 --- a/metatechniques/targetingcounters.md +++ /dev/null @@ -1,23 +0,0 @@ -# metatechnique counters: targeting - -## by action - - -### D2 Deny -* C00036: Infiltrate the in-group to discredit leaders (divide) (needs ) - -### D3 Disrupt -* C00060: Enhanced legal enforcement against for-profit follower/engagement factories (needs government:policymakers) -* C00067: Denigrate the recipient/ project (of online funding) (needs ) -* C00077: Active defence: replay "develop people" (needs ) -* C00153: Use offensive cyber action (needs infosec) -* C00162: collect data/map constellations of Russian“civil society”. Unravel/target the Potemkin villages (needs ) -* C00164: compatriot policy (needs ) - -### D4 Degrade -* C00046: Marginalise and discredit extremist (needs ) -* C00052: Infiltrate platforms (needs activists) -* C00143: (botnet) DMCA takedown requests to waste group time (needs public,elves) - -### D7 Deter -* C00207: tit-for-tat campaign (needs government,platforms) diff --git a/metatechniques/verificationcounters.md b/metatechniques/verificationcounters.md deleted file mode 100644 index 01c923b..0000000 --- a/metatechniques/verificationcounters.md +++ /dev/null @@ -1,11 +0,0 @@ -# metatechnique counters: verification - -## by action - - -### D2 Deny -* C00040: third party verification for people (needs ) -* C00059: Verification of project before posting (counters funding campaigns) (needs ) - -### D3 Disrupt -* C00028: Blockchain audit log and validation with collaborative decryption to post comments (needs ) diff --git a/metatechniques_by_responsetype_table.md b/metatechniques_by_responsetype_table.md index 58d1674..1f16333 100644 --- a/metatechniques_by_responsetype_table.md +++ b/metatechniques_by_responsetype_table.md @@ -1,4 +1,4 @@ -# AMITT metatechnique courses of action +# AMITT metatechnique_id courses of action @@ -11,117 +11,7 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -132,7 +22,51 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -143,7 +77,73 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -154,15 +154,15 @@ - + + - - + diff --git a/metatechniques_index.md b/metatechniques_index.md index a8c12da..8fd9ebc 100644 --- a/metatechniques_index.md +++ b/metatechniques_index.md @@ -34,7 +34,7 @@ - + @@ -59,7 +59,7 @@ - + @@ -69,6 +69,11 @@ - + + + + + +
D6 Destroy D7 Deter TOTALS
cleaning02110004
countermessaging038401117
data pollution00141006
daylight068201219
dilution00510006
diversion0210230017
friction0137600026
metatechnique436000316
reduce resources02110004
removal0154000019
resilienceM001 resilience 0 10 728
scoringM002 diversion0210230017
M003 daylight068201219
M004 friction0137600026
M005 removal0154000019
M006 scoring 0 7 010
targetingM007 metatechnique436000316
M008 data pollution00141006
M009 dilution00510006
M010 countermessaging038401117
M011 verification02100003
M012 cleaning02110004
M013 targeting 0 1 611
verificationM014 reduce resources 0 2 11 0 0 0034
TOTALS
M006 scoringUse a rating system
M007
M011 verificationVerify objects, content, connections etc. Includes fact-checking
M012
M013 targetingTarget the components of a disinformation campaign
M014reduce resourcesReduce the resources available to disinformation creators
diff --git a/phases/P01.md b/phases/P01.md index 15dee34..b9ea213 100644 --- a/phases/P01.md +++ b/phases/P01.md @@ -1,10 +1,4 @@ -# Planning - -* **Type:** Phase - -* **Name:** Planning - -* **Id:** P01 +# Phase P01: Planning * **Summary:** Envision the desired outcome. Lay out effective ways of achieving it. Communicate the vision, intent, and decisions, focusing on expected results. diff --git a/phases/P02.md b/phases/P02.md index 3a25d75..8b4e734 100644 --- a/phases/P02.md +++ b/phases/P02.md @@ -1,10 +1,4 @@ -# Preparation - -* **Type:** Phase - -* **Name:** Preparation - -* **Id:** P02 +# Phase P02: Preparation * **Summary:** Activities conducted before execution to improve the ability to conduct the action. Examples include: development of the ecosystem needed to support the action: people, network, channels, content etc. diff --git a/phases/P03.md b/phases/P03.md index 8f890cf..02b52cf 100644 --- a/phases/P03.md +++ b/phases/P03.md @@ -1,10 +1,4 @@ -# Execution - -* **Type:** Phase - -* **Name:** Execution - -* **Id:** P03 +# Phase P03: Execution * **Summary:** Run the action, from initial exposure to wrap-up and/or maintaining presence etc. diff --git a/phases/P04.md b/phases/P04.md index b84c424..31c7f04 100644 --- a/phases/P04.md +++ b/phases/P04.md @@ -1,10 +1,4 @@ -# Evaluation - -* **Type:** Phase - -* **Name:** Evaluation - -* **Id:** P04 +# Phase P04: Evaluation * **Summary:** Evaluate effectiveness of action, for use in future plans diff --git a/tactics/TA01.md b/tactics/TA01.md index 13e356d..54983e8 100644 --- a/tactics/TA01.md +++ b/tactics/TA01.md @@ -1,14 +1,8 @@ -# Strategic Planning - -* **Type:** Tactic - -* **Name:** Strategic Planning - -* **Id:** TA01 +# Tactic TA01: Strategic Planning * **Summary:** Define the desired end state, i.e. the set of required conditions that defines achievement of all objectives. -* **Phase:** P01 +* **Belongs to phase:** P01 diff --git a/tactics/TA02.md b/tactics/TA02.md index 5a55a98..4abaf6c 100644 --- a/tactics/TA02.md +++ b/tactics/TA02.md @@ -1,10 +1,4 @@ -# Objective Planning - -* **Type:** Tactic - -* **Name:** Objective Planning - -* **Id:** TA02 +# Tactic TA02: Objective Planning * **Summary:** Set clearly defined, measurable, and achievable objectives. Achieving objectives ties execution of tactical tasks to reaching the desired end state. There are four primary considerations: - Each desired effect should link directly to one or more objectives @@ -12,7 +6,7 @@ - The objective statement should not specify the way and means of accomplishment - The effect should be distinguishable from the objective it supports as a condition for success, not as another objective or task. -* **Phase:** P01 +* **Belongs to phase:** P01 diff --git a/tactics/TA03.md b/tactics/TA03.md index a721cd3..1d109c7 100644 --- a/tactics/TA03.md +++ b/tactics/TA03.md @@ -1,14 +1,8 @@ -# Develop People - -* **Type:** Tactic - -* **Name:** Develop People - -* **Id:** TA03 +# Tactic TA03: Develop People * **Summary:** Develop online and offline users and agents, including automated personas -* **Phase:** P02 +* **Belongs to phase:** P02 diff --git a/tactics/TA04.md b/tactics/TA04.md index 96dfed0..ea0c11a 100644 --- a/tactics/TA04.md +++ b/tactics/TA04.md @@ -1,14 +1,8 @@ -# Develop Networks - -* **Type:** Tactic - -* **Name:** Develop Networks - -* **Id:** TA04 +# Tactic TA04: Develop Networks * **Summary:** Develop online and offline communities and transmission methods and cultivate assets and unwitting agents -* **Phase:** P02 +* **Belongs to phase:** P02 diff --git a/tactics/TA05.md b/tactics/TA05.md index 3172092..1b7c2bf 100644 --- a/tactics/TA05.md +++ b/tactics/TA05.md @@ -1,14 +1,8 @@ -# Microtargeting - -* **Type:** Tactic - -* **Name:** Microtargeting - -* **Id:** TA05 +# Tactic TA05: Microtargeting * **Summary:** Target very specific populations of people -* **Phase:** P02 +* **Belongs to phase:** P02 diff --git a/tactics/TA06.md b/tactics/TA06.md index ab8dc34..a1c62d6 100644 --- a/tactics/TA06.md +++ b/tactics/TA06.md @@ -1,14 +1,8 @@ -# Develop Content - -* **Type:** Tactic - -* **Name:** Develop Content - -* **Id:** TA06 +# Tactic TA06: Develop Content * **Summary:** Create and acquire content used in incident -* **Phase:** P02 +* **Belongs to phase:** P02 diff --git a/tactics/TA07.md b/tactics/TA07.md index 3526064..11172ea 100644 --- a/tactics/TA07.md +++ b/tactics/TA07.md @@ -1,14 +1,8 @@ -# Channel Selection - -* **Type:** Tactic - -* **Name:** Channel Selection - -* **Id:** TA07 +# Tactic TA07: Channel Selection * **Summary:** Set up specific delivery, amplification and manipulation channels for incident, including channels to attack. Each channel serves as an atomic surface (test bed) location/site for adversary to hide/conceal the work/content that goes into setting up for this channel and/or other specific platforms. Contributes to building out a connected ecosystem where this channel can operate as part of a whole campaign/incident -* **Phase:** P02 +* **Belongs to phase:** P02 diff --git a/tactics/TA08.md b/tactics/TA08.md index 3a41b04..4627e9a 100644 --- a/tactics/TA08.md +++ b/tactics/TA08.md @@ -1,14 +1,8 @@ -# Pump Priming - -* **Type:** Tactic - -* **Name:** Pump Priming - -* **Id:** TA08 +# Tactic TA08: Pump Priming * **Summary:** Release content on a targetted small scale, prior to general release, including releasing seed narratives -* **Phase:** P03 +* **Belongs to phase:** P03 diff --git a/tactics/TA09.md b/tactics/TA09.md index 4ce80e1..a86fdfa 100644 --- a/tactics/TA09.md +++ b/tactics/TA09.md @@ -1,14 +1,8 @@ -# Exposure - -* **Type:** Tactic - -* **Name:** Exposure - -* **Id:** TA09 +# Tactic TA09: Exposure * **Summary:** Release content to general public or push to larger population -* **Phase:** P03 +* **Belongs to phase:** P03 diff --git a/tactics/TA10.md b/tactics/TA10.md index 7800a28..fa846b2 100644 --- a/tactics/TA10.md +++ b/tactics/TA10.md @@ -1,14 +1,8 @@ -# Go Physical - -* **Type:** Tactic - -* **Name:** Go Physical - -* **Id:** TA10 +# Tactic TA10: Go Physical * **Summary:** Move incident into offline world -* **Phase:** P03 +* **Belongs to phase:** P03 diff --git a/tactics/TA11.md b/tactics/TA11.md index 1ae6c35..7fa00e8 100644 --- a/tactics/TA11.md +++ b/tactics/TA11.md @@ -1,14 +1,8 @@ -# Persistence - -* **Type:** Tactic - -* **Name:** Persistence - -* **Id:** TA11 +# Tactic TA11: Persistence * **Summary:** Keep incident 'alive', beyond the incident creators' efforts -* **Phase:** P03 +* **Belongs to phase:** P03 diff --git a/tactics/TA12.md b/tactics/TA12.md index 7c57a59..00109c1 100644 --- a/tactics/TA12.md +++ b/tactics/TA12.md @@ -1,14 +1,8 @@ -# Measure Effectiveness - -* **Type:** Tactic - -* **Name:** Measure Effectiveness - -* **Id:** TA12 +# Tactic TA12: Measure Effectiveness * **Summary:** Measure effectiveness of incident, for use in planning future events -* **Phase:** P04 +* **Belongs to phase:** P04 diff --git a/tasks/TK0001.md b/tasks/TK0001.md index f9d18db..38b0f93 100644 --- a/tasks/TK0001.md +++ b/tasks/TK0001.md @@ -1,13 +1,7 @@ -# Goal setting - -* **Type:** Task - -* **Name:** Goal setting - -* **Id:** TK0001 +# Task TK0001: Goal setting * **Summary:** Set the goals for this incident. -* **Tactic:** TA01 +* **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/TK0002.md b/tasks/TK0002.md index f43249d..521a05a 100644 --- a/tasks/TK0002.md +++ b/tasks/TK0002.md @@ -1,13 +1,7 @@ -# Population research / audience analysis (centre of gravity) - -* **Type:** Task - -* **Name:** Population research / audience analysis (centre of gravity) - -* **Id:** TK0002 +# Task TK0002: Population research / audience analysis (centre of gravity) * **Summary:** -* **Tactic:** TA01 +* **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/TK0003.md b/tasks/TK0003.md index a79dfa4..3b38882 100644 --- a/tasks/TK0003.md +++ b/tasks/TK0003.md @@ -1,13 +1,7 @@ -# Campaign design (objective design) - -* **Type:** Task - -* **Name:** Campaign design (objective design) - -* **Id:** TK0003 +# Task TK0003: Campaign design (objective design) * **Summary:** -* **Tactic:** TA01 +* **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/TK0004.md b/tasks/TK0004.md index 033d8e2..bb776da 100644 --- a/tasks/TK0004.md +++ b/tasks/TK0004.md @@ -1,13 +1,7 @@ -# Identify target subgroups - -* **Type:** Task - -* **Name:** Identify target subgroups - -* **Id:** TK0004 +# Task TK0004: Identify target subgroups * **Summary:** -* **Tactic:** TA02 +* **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/TK0005.md b/tasks/TK0005.md index f6bf98f..d3822ea 100644 --- a/tasks/TK0005.md +++ b/tasks/TK0005.md @@ -1,13 +1,7 @@ -# Analyse subgroups - -* **Type:** Task - -* **Name:** Analyse subgroups - -* **Id:** TK0005 +# Task TK0005: Analyse subgroups * **Summary:** -* **Tactic:** TA02 +* **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/TK0006.md b/tasks/TK0006.md index 376103a..b7e50ad 100644 --- a/tasks/TK0006.md +++ b/tasks/TK0006.md @@ -1,13 +1,7 @@ -# create master narratives - -* **Type:** Task - -* **Name:** create master narratives - -* **Id:** TK0006 +# Task TK0006: create master narratives * **Summary:** -* **Tactic:** TA02 +* **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/TK0007.md b/tasks/TK0007.md index e7803b0..54ef472 100644 --- a/tasks/TK0007.md +++ b/tasks/TK0007.md @@ -1,13 +1,7 @@ -# Decide on techniques (4Ds etc) - -* **Type:** Task - -* **Name:** Decide on techniques (4Ds etc) - -* **Id:** TK0007 +# Task TK0007: Decide on techniques (4Ds etc) * **Summary:** -* **Tactic:** TA02 +* **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/TK0008.md b/tasks/TK0008.md index fbaab00..d45e0f2 100644 --- a/tasks/TK0008.md +++ b/tasks/TK0008.md @@ -1,13 +1,7 @@ -# Create subnarratives - -* **Type:** Task - -* **Name:** Create subnarratives - -* **Id:** TK0008 +# Task TK0008: Create subnarratives * **Summary:** -* **Tactic:** TA02 +* **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/TK0009.md b/tasks/TK0009.md index cae307c..025e47f 100644 --- a/tasks/TK0009.md +++ b/tasks/TK0009.md @@ -1,13 +1,7 @@ -# 4chan/8chan coordinating content - -* **Type:** Task - -* **Name:** 4chan/8chan coordinating content - -* **Id:** TK0009 +# Task TK0009: 4chan/8chan coordinating content * **Summary:** -* **Tactic:** TA02 +* **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/TK0010.md b/tasks/TK0010.md index 15541a4..fa83f52 100644 --- a/tasks/TK0010.md +++ b/tasks/TK0010.md @@ -1,13 +1,7 @@ -# Create personas - -* **Type:** Task - -* **Name:** Create personas - -* **Id:** TK0010 +# Task TK0010: Create personas * **Summary:** -* **Tactic:** TA03 +* **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/TK0011.md b/tasks/TK0011.md index 8729776..38d8a5d 100644 --- a/tasks/TK0011.md +++ b/tasks/TK0011.md @@ -1,13 +1,7 @@ -# Recruit contractors - -* **Type:** Task - -* **Name:** Recruit contractors - -* **Id:** TK0011 +# Task TK0011: Recruit contractors * **Summary:** -* **Tactic:** TA03 +* **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/TK0012.md b/tasks/TK0012.md index de30ea2..a783cf7 100644 --- a/tasks/TK0012.md +++ b/tasks/TK0012.md @@ -1,13 +1,7 @@ -# Recruit partisans - -* **Type:** Task - -* **Name:** Recruit partisans - -* **Id:** TK0012 +# Task TK0012: Recruit partisans * **Summary:** -* **Tactic:** TA03 +* **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/TK0013.md b/tasks/TK0013.md index f1d031c..5b7bce2 100644 --- a/tasks/TK0013.md +++ b/tasks/TK0013.md @@ -1,13 +1,7 @@ -# find influencers - -* **Type:** Task - -* **Name:** find influencers - -* **Id:** TK0013 +# Task TK0013: find influencers * **Summary:** -* **Tactic:** TA03 +* **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/TK0014.md b/tasks/TK0014.md index 4569d69..ff43130 100644 --- a/tasks/TK0014.md +++ b/tasks/TK0014.md @@ -1,13 +1,7 @@ -# Network building - -* **Type:** Task - -* **Name:** Network building - -* **Id:** TK0014 +# Task TK0014: Network building * **Summary:** -* **Tactic:** TA04 +* **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/TK0015.md b/tasks/TK0015.md index f6d5795..364477e 100644 --- a/tasks/TK0015.md +++ b/tasks/TK0015.md @@ -1,13 +1,7 @@ -# Network infiltration - -* **Type:** Task - -* **Name:** Network infiltration - -* **Id:** TK0015 +# Task TK0015: Network infiltration * **Summary:** -* **Tactic:** TA04 +* **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/TK0016.md b/tasks/TK0016.md index e5de7aa..ce36a87 100644 --- a/tasks/TK0016.md +++ b/tasks/TK0016.md @@ -1,13 +1,7 @@ -# identify targets - susceptible audience members in networks - -* **Type:** Task - -* **Name:** identify targets - susceptible audience members in networks - -* **Id:** TK0016 +# Task TK0016: identify targets - susceptible audience members in networks * **Summary:** -* **Tactic:** TA04 +* **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/TK0017.md b/tasks/TK0017.md index 158d353..fef435e 100644 --- a/tasks/TK0017.md +++ b/tasks/TK0017.md @@ -1,13 +1,7 @@ -# content creation - -* **Type:** Task - -* **Name:** content creation - -* **Id:** TK0017 +# Task TK0017: content creation * **Summary:** -* **Tactic:** TA06 +* **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/TK0018.md b/tasks/TK0018.md index b656092..7ee4872 100644 --- a/tasks/TK0018.md +++ b/tasks/TK0018.md @@ -1,13 +1,7 @@ -# content appropriation - -* **Type:** Task - -* **Name:** content appropriation - -* **Id:** TK0018 +# Task TK0018: content appropriation * **Summary:** -* **Tactic:** TA06 +* **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/TK0019.md b/tasks/TK0019.md index ca7e2d5..c061773 100644 --- a/tasks/TK0019.md +++ b/tasks/TK0019.md @@ -1,13 +1,7 @@ -# anchor trust / credibility - -* **Type:** Task - -* **Name:** anchor trust / credibility - -* **Id:** TK0019 +# Task TK0019: anchor trust / credibility * **Summary:** -* **Tactic:** TA08 +* **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/TK0020.md b/tasks/TK0020.md index 52c7cce..55ff2aa 100644 --- a/tasks/TK0020.md +++ b/tasks/TK0020.md @@ -1,13 +1,7 @@ -# insert themes - -* **Type:** Task - -* **Name:** insert themes - -* **Id:** TK0020 +# Task TK0020: insert themes * **Summary:** -* **Tactic:** TA08 +* **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/TK0021.md b/tasks/TK0021.md index 4dfeba0..b6bb74f 100644 --- a/tasks/TK0021.md +++ b/tasks/TK0021.md @@ -1,13 +1,7 @@ -# deamplification (suppression, censoring) - -* **Type:** Task - -* **Name:** deamplification (suppression, censoring) - -* **Id:** TK0021 +# Task TK0021: deamplification (suppression, censoring) * **Summary:** -* **Tactic:** TA09 +* **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/TK0022.md b/tasks/TK0022.md index 153c26f..803b279 100644 --- a/tasks/TK0022.md +++ b/tasks/TK0022.md @@ -1,13 +1,7 @@ -# amplification - -* **Type:** Task - -* **Name:** amplification - -* **Id:** TK0022 +# Task TK0022: amplification * **Summary:** -* **Tactic:** TA09 +* **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/TK0023.md b/tasks/TK0023.md index ccfb75b..8cdd28d 100644 --- a/tasks/TK0023.md +++ b/tasks/TK0023.md @@ -1,13 +1,7 @@ -# retention - -* **Type:** Task - -* **Name:** retention - -* **Id:** TK0023 +# Task TK0023: retention * **Summary:** -* **Tactic:** TA11 +* **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/TK0024.md b/tasks/TK0024.md index e56aed0..1f556ce 100644 --- a/tasks/TK0024.md +++ b/tasks/TK0024.md @@ -1,13 +1,7 @@ -# customer relationship - -* **Type:** Task - -* **Name:** customer relationship - -* **Id:** TK0024 +# Task TK0024: customer relationship * **Summary:** -* **Tactic:** TA11 +* **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/TK0025.md b/tasks/TK0025.md index 1dce874..199d31e 100644 --- a/tasks/TK0025.md +++ b/tasks/TK0025.md @@ -1,13 +1,7 @@ -# advocacy/ zealotry - -* **Type:** Task - -* **Name:** advocacy/ zealotry - -* **Id:** TK0025 +# Task TK0025: advocacy/ zealotry * **Summary:** -* **Tactic:** TA11 +* **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/TK0026.md b/tasks/TK0026.md index 69176f9..3e9355a 100644 --- a/tasks/TK0026.md +++ b/tasks/TK0026.md @@ -1,13 +1,7 @@ -# conversion - -* **Type:** Task - -* **Name:** conversion - -* **Id:** TK0026 +# Task TK0026: conversion * **Summary:** -* **Tactic:** TA11 +* **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/TK0027.md b/tasks/TK0027.md index 29bda4b..fc72fac 100644 --- a/tasks/TK0027.md +++ b/tasks/TK0027.md @@ -1,13 +1,7 @@ -# keep recruiting/prospecting - -* **Type:** Task - -* **Name:** keep recruiting/prospecting - -* **Id:** TK0027 +# Task TK0027: keep recruiting/prospecting * **Summary:** -* **Tactic:** TA11 +* **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/TK0028.md b/tasks/TK0028.md index 4bb24ba..c06a24d 100644 --- a/tasks/TK0028.md +++ b/tasks/TK0028.md @@ -1,13 +1,7 @@ -# evaluation - -* **Type:** Task - -* **Name:** evaluation - -* **Id:** TK0028 +# Task TK0028: evaluation * **Summary:** -* **Tactic:** TA12 +* **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/TK0029.md b/tasks/TK0029.md index 8cca560..79c2cfe 100644 --- a/tasks/TK0029.md +++ b/tasks/TK0029.md @@ -1,13 +1,7 @@ -# post-mortem - -* **Type:** Task - -* **Name:** post-mortem - -* **Id:** TK0029 +# Task TK0029: post-mortem * **Summary:** -* **Tactic:** TA12 +* **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/TK0030.md b/tasks/TK0030.md index 7d4ae73..9db9fed 100644 --- a/tasks/TK0030.md +++ b/tasks/TK0030.md @@ -1,13 +1,7 @@ -# after-action analysis - -* **Type:** Task - -* **Name:** after-action analysis - -* **Id:** TK0030 +# Task TK0030: after-action analysis * **Summary:** -* **Tactic:** TA12 +* **Belongs to tactic stage:** TA12 DO NOT EDIT ABOVE THIS LINE - PLEASE ADD NOTES BELOW \ No newline at end of file diff --git a/techniques/T0001.md b/techniques/T0001.md index efe0858..fa1267b 100644 --- a/techniques/T0001.md +++ b/techniques/T0001.md @@ -1,14 +1,8 @@ -# 5Ds (dismiss, distort, distract, dismay, divide) - -* **Type**: Technique - -* **Name**: 5Ds (dismiss, distort, distract, dismay, divide) - -* **Id**: T0001 +# Technique T0001: 5Ds (dismiss, distort, distract, dismay, divide) * **Summary**: Nimmo's "4Ds of propaganda": dismiss, distort, distract, dismay (MisinfosecWG added divide in 2019). Misinformation promotes an agenda by advancing narratives supportive of that agenda. This is most effective when the advanced narrative pre-dates the revelation of the specific misinformation content. This is often not possible. -* **Tactic**: TA01 +* **Belongs to tactic stage**: TA01 | Incident | Descriptions given for this incident | diff --git a/techniques/T0002.md b/techniques/T0002.md index a80165b..7fc070a 100644 --- a/techniques/T0002.md +++ b/techniques/T0002.md @@ -1,14 +1,8 @@ -# Facilitate State Propaganda - -* **Type**: Technique - -* **Name**: Facilitate State Propaganda - -* **Id**: T0002 +# Technique T0002: Facilitate State Propaganda * **Summary**: Organize citizens around pro-state messaging. Paid or volunteer groups coordinated to push state propaganda (examples include 2016 Diba Facebook Expedition, coordinated to overcome China’s Great Firewall, to flood the Facebook pages of Taiwanese politicians and news agencies with a pro-PRC message). -* **Tactic**: TA01 +* **Belongs to tactic stage**: TA01 | Incident | Descriptions given for this incident | diff --git a/techniques/T0003.md b/techniques/T0003.md index c3d9950..e43837b 100644 --- a/techniques/T0003.md +++ b/techniques/T0003.md @@ -1,14 +1,8 @@ -# Leverage Existing Narratives - -* **Type**: Technique - -* **Name**: Leverage Existing Narratives - -* **Id**: T0003 +# Technique T0003: Leverage Existing Narratives * **Summary**: Use or adapt existing narrative themes, where narratives are the baseline stories of a target audience. Narratives form the bedrock of our worldviews. New information is understood through a process firmly grounded in this bedrock. If new information is not consitent with the prevailing narratives of an audience, it will be ignored. Effective campaigns will frame their misinformation in the context of these narratives. Highly effective campaigns will make extensive use of audience-appropriate archetypes and meta-narratives throughout their content creation and amplifiction practices. Examples include midwesterners are generous, Russia is under attack from outside. -* **Tactic**: TA01 +* **Belongs to tactic stage**: TA01 | Incident | Descriptions given for this incident | diff --git a/techniques/T0004.md b/techniques/T0004.md index eeaf86a..b7d22ec 100644 --- a/techniques/T0004.md +++ b/techniques/T0004.md @@ -1,10 +1,4 @@ -# Competing Narratives - -* **Type**: Technique - -* **Name**: Competing Narratives - -* **Id**: T0004 +# Technique T0004: Competing Narratives * **Summary**: Advance competing narratives connected to same issue ie: on one hand deny incident while at same time expresses dismiss. MH17 (example) "Russian Foreign Ministry again claimed that “absolutely groundless accusations are put forward against the Russian side, which are aimed at discrediting Russia in the eyes of the international community" (deny); "The Dutch MH17 investigation is biased, anti-Russian and factually inaccurate" (dismiss). @@ -12,7 +6,7 @@ Suppressing or discouraging narratives already spreading requires an alternative These competing narratives allow loyalists cover, but are less compelling to opponents and fence-sitters than campaigns built around existing narratives or highly explanatory master narratives. Competing narratives, as such, are especially useful in the "firehose of misinformation" approach. -* **Tactic**: TA01 +* **Belongs to tactic stage**: TA01 | Incident | Descriptions given for this incident | diff --git a/techniques/T0005.md b/techniques/T0005.md index 070051d..37bcc91 100644 --- a/techniques/T0005.md +++ b/techniques/T0005.md @@ -1,14 +1,8 @@ -# Center of Gravity Analysis - -* **Type**: Technique - -* **Name**: Center of Gravity Analysis - -* **Id**: T0005 +# Technique T0005: Center of Gravity Analysis * **Summary**: Recon/research to identify "the source of power that provides moral or physical strength, freedom of action, or will to act." Thus, the center of gravity is usually seen as the "source of strength". Includes demographic and network analysis of communities -* **Tactic**: TA02 +* **Belongs to tactic stage**: TA02 | Incident | Descriptions given for this incident | diff --git a/techniques/T0006.md b/techniques/T0006.md index 06e8d37..2e7939a 100644 --- a/techniques/T0006.md +++ b/techniques/T0006.md @@ -1,10 +1,4 @@ -# Create Master Narratives - -* **Type**: Technique - -* **Name**: Create Master Narratives - -* **Id**: T0006 +# Technique T0006: Create Master Narratives * **Summary**: The promotion of beneficial master narratives is perhaps the most effective method for achieving long-term strategic narrative dominance. From a "whole of society" perpective the promotion of the society's core master narratives should occupy a central strategic role. From a misinformation campaign / cognitive security perpectve the tactics around master narratives center more precisely on the day-to-day promotion and reinforcement of this messaging. In other words, beneficial, high-coverage master narratives are a central strategic goal and their promotion consitutes an ongoing tactical struggle carried out at a whole-of-society level. @@ -15,7 +9,7 @@ By way of example, major powers are promoting master narratives such as: Tactically, their promotion covers a broad spectrum of activities both on- and offline. -* **Tactic**: TA02 +* **Belongs to tactic stage**: TA02 | Incident | Descriptions given for this incident | diff --git a/techniques/T0007.md b/techniques/T0007.md index 7473214..8546734 100644 --- a/techniques/T0007.md +++ b/techniques/T0007.md @@ -1,10 +1,4 @@ -# Create fake Social Media Profiles / Pages / Groups - -* **Type**: Technique - -* **Name**: Create fake Social Media Profiles / Pages / Groups - -* **Id**: T0007 +# Technique T0007: Create fake Social Media Profiles / Pages / Groups * **Summary**: Create key social engineering assets needed to amplify content, manipulate algorithms, fool public and/or specific incident/campaign targets. @@ -12,7 +6,7 @@ Computational propaganda depends substantially on false perceptions of credibili Examples: Ukraine elections (2019) circumvent Facebook’s new safeguards by paying Ukrainian citizens to give a Russian agent access to their personal pages. EU Elections (2019) Avaaz reported more than 500 suspicious pages and groups to Facebook related to the three-month investigation of Facebook disinformation networks in Europe. Mueller report (2016) The IRA was able to reach up to 126 million Americans on Facebook via a mixture of fraudulent accounts, groups, and advertisements, the report says. Twitter accounts it created were portrayed as real American voices by major news outlets. It was even able to hold real-life rallies, mobilizing hundreds of people at a time in major cities like Philadelphia and Miami. -* **Tactic**: TA03 +* **Belongs to tactic stage**: TA03 | Incident | Descriptions given for this incident | diff --git a/techniques/T0008.md b/techniques/T0008.md index 4134221..c167587 100644 --- a/techniques/T0008.md +++ b/techniques/T0008.md @@ -1,14 +1,8 @@ -# Create fake or imposter news sites - -* **Type**: Technique - -* **Name**: Create fake or imposter news sites - -* **Id**: T0008 +# Technique T0008: Create fake or imposter news sites * **Summary**: Modern computational propaganda makes use of a cadre of imposter news sites spreading globally. These sites, sometimes motivated by concerns other than propaganda--for instance, click-based revenue--often have some superficial markers of authenticity, such as naming and site-design. But many can be quickly exposed with reference to their owenership, reporting history and adverstising details. A prominent case from the 2016 era was the _Denver Guardian_, which purported to be a local newspaper in Colorado and specialized in negative stories about Hillary Clinton. -* **Tactic**: TA03 +* **Belongs to tactic stage**: TA03 | Incident | Descriptions given for this incident | diff --git a/techniques/T0009.md b/techniques/T0009.md index d105833..91c24ea 100644 --- a/techniques/T0009.md +++ b/techniques/T0009.md @@ -1,14 +1,8 @@ -# Create fake experts - -* **Type**: Technique - -* **Name**: Create fake experts - -* **Id**: T0009 +# Technique T0009: Create fake experts * **Summary**: Stories planted or promoted in computational propaganda operations often make use of experts fabricated from whole cloth, sometimes specifically for the story itself. For example, in the Jade Helm conspiracy theory promoted by SVR in 2015, a pair of experts--one of them naming himself a “Military Intelligence Analyst / Russian Regional CME” and the other a “Geopolitical Strategist, Journalist & Author”--pushed the story heavily on LinkedIn. -* **Tactic**: TA03 +* **Belongs to tactic stage**: TA03 | Incident | Descriptions given for this incident | diff --git a/techniques/T0010.md b/techniques/T0010.md index 8b37a9f..d646080 100644 --- a/techniques/T0010.md +++ b/techniques/T0010.md @@ -1,14 +1,8 @@ -# Cultivate ignorant agents - -* **Type**: Technique - -* **Name**: Cultivate ignorant agents - -* **Id**: T0010 +# Technique T0010: Cultivate ignorant agents * **Summary**: Cultivate propagandists for a cause, the goals of which are not fully comprehended, and who are used cynically by the leaders of the cause. Independent actors use social media and specialised web sites to strategically reinforce and spread messages compatible with their own. Their networks are infiltrated and used by state media disinformation organisations to amplify the state’s own disinformation strategies against target populations. Many are traffickers in conspiracy theories or hoaxes, unified by a suspicion of Western governments and mainstream media. Their narratives, which appeal to leftists hostile to globalism and military intervention and nationalists against immigration, are frequently infiltrated and shaped by state-controlled trolls and altered news items from agencies such as RT and Sputnik. Also know as "useful idiots" or "unwitting agents". -* **Tactic**: TA04 +* **Belongs to tactic stage**: TA04 | Incident | Descriptions given for this incident | diff --git a/techniques/T0011.md b/techniques/T0011.md index 9fb4939..85077e9 100644 --- a/techniques/T0011.md +++ b/techniques/T0011.md @@ -1,14 +1,8 @@ -# Hijack legitimate account - -* **Type**: Technique - -* **Name**: Hijack legitimate account - -* **Id**: T0011 +# Technique T0011: Hijack legitimate account * **Summary**: Hack or take over legimate accounts to distribute misinformation or damaging content. Examples include Syrian Electronic Army (2013) series of false tweets from a hijacked Associated Press Twitter account claiming that President Barack Obama had been injured in a series of explosions near the White House. The false report caused a temporary plunge of 143 points on the Dow Jones Industrial Average. -* **Tactic**: TA04 +* **Belongs to tactic stage**: TA04 | Incident | Descriptions given for this incident | diff --git a/techniques/T0012.md b/techniques/T0012.md index a0ea9c5..3695abf 100644 --- a/techniques/T0012.md +++ b/techniques/T0012.md @@ -1,16 +1,10 @@ -# Use concealment - -* **Type**: Technique - -* **Name**: Use concealment - -* **Id**: T0012 +# Technique T0012: Use concealment * **Summary**: Use anonymous social media profiles. Examples include page or group administrators, masked "whois" website directory data, no bylines connected to news article, no masthead connect to news websites. Example is 2016 @TEN_GOP profile where the actual Tennessee Republican Party tried unsuccessfully for months to get Twitter to shut it down, and 2019 Endless Mayfly is an Iran-aligned network of inauthentic personas and social media accounts that spreads falsehoods and amplifies narratives critical of Saudi Arabia, the United States, and Israel. -* **Tactic**: TA04 +* **Belongs to tactic stage**: TA04 | Incident | Descriptions given for this incident | diff --git a/techniques/T0013.md b/techniques/T0013.md index 4e11b00..4bd4c34 100644 --- a/techniques/T0013.md +++ b/techniques/T0013.md @@ -1,14 +1,8 @@ -# Create fake websites - -* **Type**: Technique - -* **Name**: Create fake websites - -* **Id**: T0013 +# Technique T0013: Create fake websites * **Summary**: Create media assets to support fake organizations (e.g. think tank), people (e.g. experts) and/or serve as sites to distribute malware/launch phishing operations. -* **Tactic**: TA04 +* **Belongs to tactic stage**: TA04 | Incident | Descriptions given for this incident | diff --git a/techniques/T0014.md b/techniques/T0014.md index 139f058..ee4ec35 100644 --- a/techniques/T0014.md +++ b/techniques/T0014.md @@ -1,14 +1,8 @@ -# Create funding campaigns - -* **Type**: Technique - -* **Name**: Create funding campaigns - -* **Id**: T0014 +# Technique T0014: Create funding campaigns * **Summary**: Generate revenue through online funding campaigns. e.g. Gather data, advance credible persona via Gofundme; Patreon; or via fake website connecting via PayPal or Stripe. (Example 2016) #VaccinateUS Gofundme campaigns to pay for Targetted facebook ads (Larry Cook, targetting Washington State mothers, $1,776 to boost posts over 9 months). -* **Tactic**: TA04 +* **Belongs to tactic stage**: TA04 | Incident | Descriptions given for this incident | diff --git a/techniques/T0015.md b/techniques/T0015.md index 92c1f3f..726bdb3 100644 --- a/techniques/T0015.md +++ b/techniques/T0015.md @@ -1,10 +1,4 @@ -# Create hashtag - -* **Type**: Technique - -* **Name**: Create hashtag - -* **Id**: T0015 +# Technique T0015: Create hashtag * **Summary**: Many incident-based campaigns will create a hashtag to promote their fabricated event (e.g. #ColumbianChemicals to promote a fake story about a chemical spill in Louisiana). @@ -14,7 +8,7 @@ Creating a hashtag for an incident can have two important effects: Asset needed to direct/control/manage "conversation" connected to launching new incident/campaign with new hashtag for applicable social media sites ie: Twitter, LinkedIn) -* **Tactic**: TA04 +* **Belongs to tactic stage**: TA04 | Incident | Descriptions given for this incident | diff --git a/techniques/T0016.md b/techniques/T0016.md index a5d8eff..c56236d 100644 --- a/techniques/T0016.md +++ b/techniques/T0016.md @@ -1,14 +1,8 @@ -# Clickbait - -* **Type**: Technique - -* **Name**: Clickbait - -* **Id**: T0016 +# Technique T0016: Clickbait * **Summary**: Create attention grabbing headlines (outrage, doubt, humor) required to drive traffic & engagement. (example 2016) “Pope Francis shocks world, endorses Donald Trump for president.” (example 2016) "FBI director received millions from Clinton Foundation, his brother’s law firm does Clinton’s taxes”. This is a key asset -* **Tactic**: TA05 +* **Belongs to tactic stage**: TA05 | Incident | Descriptions given for this incident | diff --git a/techniques/T0017.md b/techniques/T0017.md index dfbf2b1..5857db1 100644 --- a/techniques/T0017.md +++ b/techniques/T0017.md @@ -1,14 +1,8 @@ -# Promote online funding - -* **Type**: Technique - -* **Name**: Promote online funding - -* **Id**: T0017 +# Technique T0017: Promote online funding * **Summary**: Drive traffic/engagement to funding campaign sites; helps provide measurable metrics to assess conversion rates -* **Tactic**: TA05 +* **Belongs to tactic stage**: TA05 | Incident | Descriptions given for this incident | diff --git a/techniques/T0018.md b/techniques/T0018.md index acd4c71..24a6acb 100644 --- a/techniques/T0018.md +++ b/techniques/T0018.md @@ -1,14 +1,8 @@ -# Paid targeted ads - -* **Type**: Technique - -* **Name**: Paid targeted ads - -* **Id**: T0018 +# Technique T0018: Paid targeted ads * **Summary**: Create or fund advertisements targeted at specific populations -* **Tactic**: TA05 +* **Belongs to tactic stage**: TA05 | Incident | Descriptions given for this incident | diff --git a/techniques/T0019.md b/techniques/T0019.md index fb5a250..21a2b15 100644 --- a/techniques/T0019.md +++ b/techniques/T0019.md @@ -1,14 +1,8 @@ -# Generate information pollution - -* **Type**: Technique - -* **Name**: Generate information pollution - -* **Id**: T0019 +# Technique T0019: Generate information pollution * **Summary**: Flood social channels; drive traffic/engagement to all assets; create aura/sense/perception of pervasiveness/consensus (for or against or both simultaneously) of an issue or topic. "Nothing is true, but everything is possible." Akin to astroturfing campaign. -* **Tactic**: TA06 +* **Belongs to tactic stage**: TA06 | Incident | Descriptions given for this incident | diff --git a/techniques/T0020.md b/techniques/T0020.md index 4a36a25..c4e1761 100644 --- a/techniques/T0020.md +++ b/techniques/T0020.md @@ -1,14 +1,8 @@ -# Trial content - -* **Type**: Technique - -* **Name**: Trial content - -* **Id**: T0020 +# Technique T0020: Trial content * **Summary**: Iteratively test incident performance (messages, content etc), e.g. A/B test headline/content enagagement metrics; website and/or funding campaign conversion rates -* **Tactic**: TA06 +* **Belongs to tactic stage**: TA06 | Incident | Descriptions given for this incident | diff --git a/techniques/T0021.md b/techniques/T0021.md index 4ccda41..704021f 100644 --- a/techniques/T0021.md +++ b/techniques/T0021.md @@ -1,14 +1,8 @@ -# Memes - -* **Type**: Technique - -* **Name**: Memes - -* **Id**: T0021 +# Technique T0021: Memes * **Summary**: Memes are one of the most important single artefact types in all of computational propaganda. Memes in this framework denotes the narrow image-based definition. But that naming is no accident, as these items have most of the important properties of Dawkins' original conception as a self-replicating unit of culture. Memes pull together reference and commentary; image and narrative; emotion and message. Memes are a powerful tool and the heart of modern influence campaigns. -* **Tactic**: TA06 +* **Belongs to tactic stage**: TA06 | Incident | Descriptions given for this incident | diff --git a/techniques/T0022.md b/techniques/T0022.md index 8802b8f..1949d28 100644 --- a/techniques/T0022.md +++ b/techniques/T0022.md @@ -1,16 +1,10 @@ -# Conspiracy narratives - -* **Type**: Technique - -* **Name**: Conspiracy narratives - -* **Id**: T0022 +# Technique T0022: Conspiracy narratives * **Summary**: "Conspiracy narratives appeal to the human desire for explanatory order, by invoking the participation of poweful (often sinister) actors in pursuit of their own political goals. These narratives are especially appealing when an audience is low-information, marginalized or otherwise inclined to reject the prevailing explanation. Conspiracy narratives are an important component of the ""firehose of falsehoods"" model. Example: QAnon: conspiracy theory is an explanation of an event or situation that invokes a conspiracy by sinister and powerful actors, often political in motivation, when other explanations are more probable " -* **Tactic**: TA06 +* **Belongs to tactic stage**: TA06 | Incident | Descriptions given for this incident | diff --git a/techniques/T0023.md b/techniques/T0023.md index c028a73..deca91b 100644 --- a/techniques/T0023.md +++ b/techniques/T0023.md @@ -1,14 +1,8 @@ -# Distort facts - -* **Type**: Technique - -* **Name**: Distort facts - -* **Id**: T0023 +# Technique T0023: Distort facts * **Summary**: Change, twist, or exaggerate existing facts to construct a narrative that differs from reality. Examples: images and ideas can be distorted by being placed in an improper content -* **Tactic**: TA06 +* **Belongs to tactic stage**: TA06 | Incident | Descriptions given for this incident | diff --git a/techniques/T0024.md b/techniques/T0024.md index cb10a2c..1cd1539 100644 --- a/techniques/T0024.md +++ b/techniques/T0024.md @@ -1,14 +1,8 @@ -# Create fake videos and images - -* **Type**: Technique - -* **Name**: Create fake videos and images - -* **Id**: T0024 +# Technique T0024: Create fake videos and images * **Summary**: Create fake videos and/or images by manipulating existing content or generating new content (e.g. deepfakes). Examples include Pelosi video (making her appear drunk) and photoshoped shark on flooded streets of Houston TX. -* **Tactic**: TA06 +* **Belongs to tactic stage**: TA06 | Incident | Descriptions given for this incident | diff --git a/techniques/T0025.md b/techniques/T0025.md index b16f3ec..bbc933b 100644 --- a/techniques/T0025.md +++ b/techniques/T0025.md @@ -1,16 +1,10 @@ -# Leak altered documents - -* **Type**: Technique - -* **Name**: Leak altered documents - -* **Id**: T0025 +# Technique T0025: Leak altered documents * **Summary**: Obtain documents (eg by theft or leak), then alter and release, possibly among factual documents/sources. Example (2019) DFRLab report "Secondary Infektion” highlights incident with key asset being a forged “letter” created by the operation to provide ammunition for far-right forces in Europe ahead of the election. -* **Tactic**: TA06 +* **Belongs to tactic stage**: TA06 | Incident | Descriptions given for this incident | diff --git a/techniques/T0026.md b/techniques/T0026.md index 8a53e08..150f38b 100644 --- a/techniques/T0026.md +++ b/techniques/T0026.md @@ -1,14 +1,8 @@ -# Create fake research - -* **Type**: Technique - -* **Name**: Create fake research - -* **Id**: T0026 +# Technique T0026: Create fake research * **Summary**: Create fake academic research. Example: fake social science research is often aimed at hot-button social issues such as gender, race and sexuality. Fake science research can target Climate Science debate or pseudoscience like anti-vaxx -* **Tactic**: TA06 +* **Belongs to tactic stage**: TA06 | Incident | Descriptions given for this incident | diff --git a/techniques/T0027.md b/techniques/T0027.md index 8ccd1db..98b64cb 100644 --- a/techniques/T0027.md +++ b/techniques/T0027.md @@ -1,14 +1,8 @@ -# Adapt existing narratives - -* **Type**: Technique - -* **Name**: Adapt existing narratives - -* **Id**: T0027 +# Technique T0027: Adapt existing narratives * **Summary**: Adapting existing narratives to current operational goals is the tactical sweet-spot for an effective misinformation campaign. Leveraging existing narratives is not only more effective, it requires substantially less resourcing, as the promotion of new master narratives operates on a much larger scale, both time and scope. Fluid, dynamic & often interchangeable key master narratives can be ("The morally corrupt West") adapted to divisive (LGBT propaganda) or to distort (individuals working as CIA operatives). For Western audiences, different but equally powerful framings are available, such as "USA has a fraught history in race relations, especially in criminal justice areas." -* **Tactic**: TA06 +* **Belongs to tactic stage**: TA06 | Incident | Descriptions given for this incident | diff --git a/techniques/T0028.md b/techniques/T0028.md index deb277d..e65b6dd 100644 --- a/techniques/T0028.md +++ b/techniques/T0028.md @@ -1,10 +1,4 @@ -# Create competing narratives - -* **Type**: Technique - -* **Name**: Create competing narratives - -* **Id**: T0028 +# Technique T0028: Create competing narratives * **Summary**: Misinformation promotes an agenda by advancing narratives supportive of that agenda. This is most effective when the advanced narrative pre-dates the revelation of the specific misinformation content. But this is often not possible. @@ -12,7 +6,7 @@ Suppressing or discouraging narratives already spreading requires an alternative These competing narratives allow loyalists cover, but are less compelling to opponents and fence-sitters than campaigns built around existing narratives or highly explanatory master narratives. Competing narratives, as such, are especially useful in the *firehose of misinformation* approach. -* **Tactic**: TA06 +* **Belongs to tactic stage**: TA06 | Incident | Descriptions given for this incident | diff --git a/techniques/T0029.md b/techniques/T0029.md index 4570a9b..6eadbd3 100644 --- a/techniques/T0029.md +++ b/techniques/T0029.md @@ -1,14 +1,8 @@ -# Manipulate online polls - -* **Type**: Technique - -* **Name**: Manipulate online polls - -* **Id**: T0029 +# Technique T0029: Manipulate online polls * **Summary**: Create fake online polls, or manipulate existing online polls. Examples: flooding FCC with comments; creating fake engagement metrics of Twitter/Facebook polls to manipulate perception of given issue. Data gathering tactic to target those who engage, and potentially their networks of friends/followers as well -* **Tactic**: TA07 +* **Belongs to tactic stage**: TA07 | Incident | Descriptions given for this incident | diff --git a/techniques/T0030.md b/techniques/T0030.md index 483a5e7..387d77e 100644 --- a/techniques/T0030.md +++ b/techniques/T0030.md @@ -1,14 +1,8 @@ -# Backstop personas - -* **Type**: Technique - -* **Name**: Backstop personas - -* **Id**: T0030 +# Technique T0030: Backstop personas * **Summary**: Create other assets/dossier/cover/fake relationships and/or connections or documents, sites, bylines, attributions, to establish/augment/inflate crediblity/believability -* **Tactic**: TA07 +* **Belongs to tactic stage**: TA07 | Incident | Descriptions given for this incident | diff --git a/techniques/T0031.md b/techniques/T0031.md index bed8979..93f6318 100644 --- a/techniques/T0031.md +++ b/techniques/T0031.md @@ -1,14 +1,8 @@ -# YouTube - -* **Type**: Technique - -* **Name**: YouTube - -* **Id**: T0031 +# Technique T0031: YouTube * **Summary**: Use YouTube as a narrative dissemination channel -* **Tactic**: TA07 +* **Belongs to tactic stage**: TA07 | Incident | Descriptions given for this incident | diff --git a/techniques/T0032.md b/techniques/T0032.md index b6d9b20..8b99e24 100644 --- a/techniques/T0032.md +++ b/techniques/T0032.md @@ -1,14 +1,8 @@ -# Reddit - -* **Type**: Technique - -* **Name**: Reddit - -* **Id**: T0032 +# Technique T0032: Reddit * **Summary**: Use Reddit as a narrative dissemination channel -* **Tactic**: TA07 +* **Belongs to tactic stage**: TA07 | Incident | Descriptions given for this incident | diff --git a/techniques/T0033.md b/techniques/T0033.md index 90acad5..027500a 100644 --- a/techniques/T0033.md +++ b/techniques/T0033.md @@ -1,14 +1,8 @@ -# Instagram - -* **Type**: Technique - -* **Name**: Instagram - -* **Id**: T0033 +# Technique T0033: Instagram * **Summary**: Use Instagram as a narrative dissemination channel -* **Tactic**: TA07 +* **Belongs to tactic stage**: TA07 | Incident | Descriptions given for this incident | diff --git a/techniques/T0034.md b/techniques/T0034.md index 0dd4132..725b3bb 100644 --- a/techniques/T0034.md +++ b/techniques/T0034.md @@ -1,14 +1,8 @@ -# LinkedIn - -* **Type**: Technique - -* **Name**: LinkedIn - -* **Id**: T0034 +# Technique T0034: LinkedIn * **Summary**: Use LinkedIn as a narrative dissemination channel -* **Tactic**: TA07 +* **Belongs to tactic stage**: TA07 | Incident | Descriptions given for this incident | diff --git a/techniques/T0035.md b/techniques/T0035.md index 4e4396e..83ec31b 100644 --- a/techniques/T0035.md +++ b/techniques/T0035.md @@ -1,14 +1,8 @@ -# Pinterest - -* **Type**: Technique - -* **Name**: Pinterest - -* **Id**: T0035 +# Technique T0035: Pinterest * **Summary**: Use Pinterest as a narrative dissemination channel -* **Tactic**: TA07 +* **Belongs to tactic stage**: TA07 | Incident | Descriptions given for this incident | diff --git a/techniques/T0036.md b/techniques/T0036.md index 464b611..5f26511 100644 --- a/techniques/T0036.md +++ b/techniques/T0036.md @@ -1,14 +1,8 @@ -# WhatsApp - -* **Type**: Technique - -* **Name**: WhatsApp - -* **Id**: T0036 +# Technique T0036: WhatsApp * **Summary**: Use WhatsApp as a narrative dissemination channel -* **Tactic**: TA07 +* **Belongs to tactic stage**: TA07 | Incident | Descriptions given for this incident | diff --git a/techniques/T0037.md b/techniques/T0037.md index 4373f4b..62b2e28 100644 --- a/techniques/T0037.md +++ b/techniques/T0037.md @@ -1,14 +1,8 @@ -# Facebook - -* **Type**: Technique - -* **Name**: Facebook - -* **Id**: T0037 +# Technique T0037: Facebook * **Summary**: Use Facebook as a narrative dissemination channel -* **Tactic**: TA07 +* **Belongs to tactic stage**: TA07 | Incident | Descriptions given for this incident | diff --git a/techniques/T0038.md b/techniques/T0038.md index 3a652ed..643392a 100644 --- a/techniques/T0038.md +++ b/techniques/T0038.md @@ -1,14 +1,8 @@ -# Twitter - -* **Type**: Technique - -* **Name**: Twitter - -* **Id**: T0038 +# Technique T0038: Twitter * **Summary**: Use Twitter as a narrative dissemination channel -* **Tactic**: TA07 +* **Belongs to tactic stage**: TA07 | Incident | Descriptions given for this incident | diff --git a/techniques/T0039.md b/techniques/T0039.md index 1b0ae2e..a870b79 100644 --- a/techniques/T0039.md +++ b/techniques/T0039.md @@ -1,16 +1,10 @@ -# Bait legitimate influencers - -* **Type**: Technique - -* **Name**: Bait legitimate influencers - -* **Id**: T0039 +# Technique T0039: Bait legitimate influencers * **Summary**: Credibility in a social media environment is often a function of the size of a user's network. "Influencers" are so-called because of their reach, typically understood as: 1) the size of their network (i.e. the number of followers, perhaps weighted by their own influence); and 2) The rate at which their comments are re-circulated (these two metrics are related). Add traditional media players at all levels of credibility and professionalism to this, and the number of potential influencial carriers available for unwitting amplification becomes substantial. By targeting high-influence people and organizations in all types of media with narratives and content engineered to appeal their emotional or ideological drivers, influence campaigns are able to add perceived credibility to their messaging via saturation and adoption by trusted agents such as celebrities, journalists and local leaders. -* **Tactic**: TA08 +* **Belongs to tactic stage**: TA08 | Incident | Descriptions given for this incident | diff --git a/techniques/T0040.md b/techniques/T0040.md index 14fd017..1ce10ac 100644 --- a/techniques/T0040.md +++ b/techniques/T0040.md @@ -1,14 +1,8 @@ -# Demand unsurmountable proof - -* **Type**: Technique - -* **Name**: Demand unsurmountable proof - -* **Id**: T0040 +# Technique T0040: Demand unsurmountable proof * **Summary**: Campaigns often leverage tactical and informational asymmetries on the threat surface, as seen in the Distort and Deny strategies, and the "firehose of misinformation". Specifically, conspiracy theorists can be repeatedly wrong, but advocates of the truth need to be perfect. By constantly escalating demands for proof, propagandists can effectively leverage this asymmetry while also priming its future use, often with an even greater asymmetric advantage. The conspiracist is offered freer rein for a broader range of "questions" while the truth teller is burdened with higher and higher standards of proof. -* **Tactic**: TA08 +* **Belongs to tactic stage**: TA08 | Incident | Descriptions given for this incident | diff --git a/techniques/T0041.md b/techniques/T0041.md index 7aeab2e..cf7dcd0 100644 --- a/techniques/T0041.md +++ b/techniques/T0041.md @@ -1,14 +1,8 @@ -# Deny involvement - -* **Type**: Technique - -* **Name**: Deny involvement - -* **Id**: T0041 +# Technique T0041: Deny involvement * **Summary**: Without "smoking gun" proof (and even with proof), incident creator can or will deny involvement. This technique also leverages the attacker advantages outlined in T0040 "Demand unsurmountable proof", specifically the asymmetric disadvantage for truth-tellers in a "firehose of misinformation" environment. -* **Tactic**: TA08 +* **Belongs to tactic stage**: TA08 | Incident | Descriptions given for this incident | diff --git a/techniques/T0042.md b/techniques/T0042.md index 0790de7..30dd6c3 100644 --- a/techniques/T0042.md +++ b/techniques/T0042.md @@ -1,10 +1,4 @@ -# Kernel of Truth - -* **Type**: Technique - -* **Name**: Kernel of Truth - -* **Id**: T0042 +# Technique T0042: Kernel of Truth * **Summary**: Wrap lies or altered context/facts around truths. @@ -12,7 +6,7 @@ Influence campaigns pursue a variety of objectives with respect to target audien When messaging makes use of factual reporting to promote these adjustments in the narrative space, they are less likely to be dismissed out of hand; when messaging can juxtapose a (factual) truth about current affairs with the (abstract) truth explicated in these narratives, propagandists can undermine or promote them selectively. Context matters. -* **Tactic**: TA08 +* **Belongs to tactic stage**: TA08 | Incident | Descriptions given for this incident | diff --git a/techniques/T0043.md b/techniques/T0043.md index 8189ee5..2d2fe17 100644 --- a/techniques/T0043.md +++ b/techniques/T0043.md @@ -1,14 +1,8 @@ -# Use SMS/ WhatsApp/ Chat apps - -* **Type**: Technique - -* **Name**: Use SMS/ WhatsApp/ Chat apps - -* **Id**: T0043 +# Technique T0043: Use SMS/ WhatsApp/ Chat apps * **Summary**: Direct messaging via encypted app is an increasing method of delivery. These messages are often automated and new delivery and storage methods make them anonymous, viral, and ephemeral. This is a diffucult space to monitor, but also a difficult space to build acclaim or notoriety. -* **Tactic**: TA08 +* **Belongs to tactic stage**: TA08 | Incident | Descriptions given for this incident | diff --git a/techniques/T0044.md b/techniques/T0044.md index d8cb3d1..e96dae5 100644 --- a/techniques/T0044.md +++ b/techniques/T0044.md @@ -1,16 +1,10 @@ -# Seed distortions - -* **Type**: Technique - -* **Name**: Seed distortions - -* **Id**: T0044 +# Technique T0044: Seed distortions * **Summary**: Incident creators often try a wide variety of messages in the early hours surrounding an incident or event in order to give a misleading account or impression. Examples: (2019) China formally arrests Canadians Spavor and Kovrig, accuses them of spying (in retaliation to detention of Hauwei CFO). (2018) The Russian ministry of defence put out a press release, claiming that they had intelligence Syrian rebel forces were about to gas their own people in Idlib province as part of a “false flag” operation to frame the Syrian government. -* **Tactic**: TA08 +* **Belongs to tactic stage**: TA08 | Incident | Descriptions given for this incident | diff --git a/techniques/T0045.md b/techniques/T0045.md index f3b8d40..5e535ea 100644 --- a/techniques/T0045.md +++ b/techniques/T0045.md @@ -1,14 +1,8 @@ -# Use fake experts - -* **Type**: Technique - -* **Name**: Use fake experts - -* **Id**: T0045 +# Technique T0045: Use fake experts * **Summary**: Use the fake experts that were set up in T0009. Pseudo-experts are disposable assets that often appear once and then disappear. Give "credility" to misinformation. Take advantage of credential bias -* **Tactic**: TA08 +* **Belongs to tactic stage**: TA08 | Incident | Descriptions given for this incident | diff --git a/techniques/T0046.md b/techniques/T0046.md index 081fa30..1513f4e 100644 --- a/techniques/T0046.md +++ b/techniques/T0046.md @@ -1,14 +1,8 @@ -# Search Engine Optimization - -* **Type**: Technique - -* **Name**: Search Engine Optimization - -* **Id**: T0046 +# Technique T0046: Search Engine Optimization * **Summary**: Manipulate content engagement metrics (ie: Reddit & Twitter) to influence/impact news search results (e.g. Google), also elevates RT & Sputnik headline into Google news alert emails. aka "Black-hat SEO" -* **Tactic**: TA08 +* **Belongs to tactic stage**: TA08 | Incident | Descriptions given for this incident | diff --git a/techniques/T0047.md b/techniques/T0047.md index 948ce04..8f4e214 100644 --- a/techniques/T0047.md +++ b/techniques/T0047.md @@ -1,14 +1,8 @@ -# Muzzle social media as a political force - -* **Type**: Technique - -* **Name**: Muzzle social media as a political force - -* **Id**: T0047 +# Technique T0047: Muzzle social media as a political force * **Summary**: Use political influence or the power of state to stop critical social media comments. Government requested/driven content take downs (see Google Transperancy reports. (Example 20190 Singapore Protection from Online Falsehoods and Manipulation Bill would make it illegal to spread "false statements of fact" in Singapore, where that information is "prejudicial" to Singapore's security or "public tranquility." Or India/New Delhi has cut off services to Facebook and Twitter in Kashmir 28 times in the past five years, and in 2016, access was blocked for five months -- on the grounds that these platforms were being used for anti-social and "anti-national" purposes. -* **Tactic**: TA09 +* **Belongs to tactic stage**: TA09 | Incident | Descriptions given for this incident | diff --git a/techniques/T0048.md b/techniques/T0048.md index 9e8b5ed..daf52da 100644 --- a/techniques/T0048.md +++ b/techniques/T0048.md @@ -1,14 +1,8 @@ -# Cow online opinion leaders - -* **Type**: Technique - -* **Name**: Cow online opinion leaders - -* **Id**: T0048 +# Technique T0048: Cow online opinion leaders * **Summary**: Intimidate, coerce, threaten critics/dissidents/journalists via trolling, doxing. Examples: Philippines, Maria Ressa and Rappler journalists targeted Duterte regime, lawsuits, trollings, banned from the presidential palace where press briefings take place; 2017 bot attack on five ProPublica Journalists. -* **Tactic**: TA09 +* **Belongs to tactic stage**: TA09 | Incident | Descriptions given for this incident | diff --git a/techniques/T0049.md b/techniques/T0049.md index bfeff9f..f1d3484 100644 --- a/techniques/T0049.md +++ b/techniques/T0049.md @@ -1,16 +1,10 @@ -# Flooding - -* **Type**: Technique - -* **Name**: Flooding - -* **Id**: T0049 +# Technique T0049: Flooding * **Summary**: Flooding and/or mobbing social media channels feeds and/or hashtag with excessive volume of content to control/shape online conversations and/or drown out opposing points of view. Bots and/or patriotic trolls are effective tools to acheive this effect. Example (2018): bots flood social media promoting messages which support Saudi Arabia with intent to cast doubt on allegations that the kingdom was involved in Khashoggi’s death. -* **Tactic**: TA09 +* **Belongs to tactic stage**: TA09 | Incident | Descriptions given for this incident | diff --git a/techniques/T0050.md b/techniques/T0050.md index dec761d..7ed78d1 100644 --- a/techniques/T0050.md +++ b/techniques/T0050.md @@ -1,14 +1,8 @@ -# Cheerleading domestic social media ops - -* **Type**: Technique - -* **Name**: Cheerleading domestic social media ops - -* **Id**: T0050 +# Technique T0050: Cheerleading domestic social media ops * **Summary**: Deploy state-coordinated social media commenters and astroturfers. Both internal/domestic and external social media influence operations, popularized by China (50cent Army manage message inside the "Great Firewall") but also technique used by Chinese English-language social media influence operations are seeded by state-run media, which overwhelmingly present a positive, benign, and cooperative image of China. -* **Tactic**: TA09 +* **Belongs to tactic stage**: TA09 | Incident | Descriptions given for this incident | diff --git a/techniques/T0051.md b/techniques/T0051.md index 7548252..0c6815f 100644 --- a/techniques/T0051.md +++ b/techniques/T0051.md @@ -1,14 +1,8 @@ -# Fabricate social media comment - -* **Type**: Technique - -* **Name**: Fabricate social media comment - -* **Id**: T0051 +# Technique T0051: Fabricate social media comment * **Summary**: Use government-paid social media commenters, astroturfers, chat bots (programmed to reply to specific key words/hashtags) influence online conversations, product reviews, web-site comment forums. (2017 example) the FCC was inundated with nearly 22 million public comments on net neutrality (many from fake accounts) -* **Tactic**: TA09 +* **Belongs to tactic stage**: TA09 | Incident | Descriptions given for this incident | diff --git a/techniques/T0052.md b/techniques/T0052.md index d7d13bf..d75799b 100644 --- a/techniques/T0052.md +++ b/techniques/T0052.md @@ -1,16 +1,10 @@ -# Tertiary sites amplify news - -* **Type**: Technique - -* **Name**: Tertiary sites amplify news - -* **Id**: T0052 +# Technique T0052: Tertiary sites amplify news * **Summary**: Create content/news/opinion web-sites to cross-post stories. Tertiary sites circulate and amplify narratives. Often these sites have no masthead, bylines or attribution. Examples of tertiary sites include Russia Insider, The Duran, geopolitica.ru, Mint Press News, Oriental Review, globalresearch.ca. Examples: (2019, Domestic news): Snopes reveals Star News Digital Media, Inc. may look like a media company that produces local news, but operates via undisclosed connections to political activism. (2018) FireEye reports on Iranian campaign that created between April 2018 and March 2019 sites used to spread inauthentic content from websites such as Liberty Front Press (LFP), US Journal, and Real Progressive Front during the 2018 US mid-terms. -* **Tactic**: TA09 +* **Belongs to tactic stage**: TA09 | Incident | Descriptions given for this incident | diff --git a/techniques/T0053.md b/techniques/T0053.md index 03ffe2d..d787b2f 100644 --- a/techniques/T0053.md +++ b/techniques/T0053.md @@ -1,14 +1,8 @@ -# Twitter trolls amplify and manipulate - -* **Type**: Technique - -* **Name**: Twitter trolls amplify and manipulate - -* **Id**: T0053 +# Technique T0053: Twitter trolls amplify and manipulate * **Summary**: Use trolls to amplify narratives and/or manipulate narratives. Fake profiles/sockpuppets operating to support individuals/narratives from the entire political spectrum (left/right binary). Operating with increased emphasis on promoting local content and promoting real Twitter users generating their own, often divisive political content, as it's easier to amplify existing content than create new/original content. Trolls operate where ever there's a socially divisive issue (issues that can/are be politicized) e.g. BlackLivesMatter or MeToo -* **Tactic**: TA09 +* **Belongs to tactic stage**: TA09 | Incident | Descriptions given for this incident | diff --git a/techniques/T0054.md b/techniques/T0054.md index 675f63c..49017db 100644 --- a/techniques/T0054.md +++ b/techniques/T0054.md @@ -1,14 +1,8 @@ -# Twitter bots amplify - -* **Type**: Technique - -* **Name**: Twitter bots amplify - -* **Id**: T0054 +# Technique T0054: Twitter bots amplify * **Summary**: Use bots to amplify narratives above algorithm thresholds. Bots are automated/programmed profiles designed to amplify content (ie: automatically retweet or like) and give appearance it's more "popular" than it is. They can operate as a network, to function in a coordinated/orchestrated manner. In some cases (more so now) they are an inexpensive/disposable assets used for minimal deployment as bot detection tools improve and platforms are more responsive.(example 2019) #TrudeauMustGo -* **Tactic**: TA09 +* **Belongs to tactic stage**: TA09 | Incident | Descriptions given for this incident | diff --git a/techniques/T0055.md b/techniques/T0055.md index 4abbb21..91a64d9 100644 --- a/techniques/T0055.md +++ b/techniques/T0055.md @@ -1,14 +1,8 @@ -# Use hashtag - -* **Type**: Technique - -* **Name**: Use hashtag - -* **Id**: T0055 +# Technique T0055: Use hashtag * **Summary**: Use a dedicated hashtag for the incident (e.g. #PhosphorusDisaster) - either create a campaign/incident specific hashtag, or take over an existing hashtag. -* **Tactic**: TA09 +* **Belongs to tactic stage**: TA09 | Incident | Descriptions given for this incident | diff --git a/techniques/T0056.md b/techniques/T0056.md index 1706a1d..346c1d3 100644 --- a/techniques/T0056.md +++ b/techniques/T0056.md @@ -1,14 +1,8 @@ -# Dedicated channels disseminate information pollution - -* **Type**: Technique - -* **Name**: Dedicated channels disseminate information pollution - -* **Id**: T0056 +# Technique T0056: Dedicated channels disseminate information pollution * **Summary**: Output information pollution (e.g. articles on an unreported false story/event) through channels controlled by or related to the incident creator. Examples include RT/Sputnik or antivax websites seeding stories. -* **Tactic**: TA09 +* **Belongs to tactic stage**: TA09 | Incident | Descriptions given for this incident | diff --git a/techniques/T0057.md b/techniques/T0057.md index 3f55a74..02d53a4 100644 --- a/techniques/T0057.md +++ b/techniques/T0057.md @@ -1,14 +1,8 @@ -# Organise remote rallies and events - -* **Type**: Technique - -* **Name**: Organise remote rallies and events - -* **Id**: T0057 +# Technique T0057: Organise remote rallies and events * **Summary**: Coordinate and promote real-world events across media platforms, e.g. rallies, protests, gatherings in support of incident narratives. Example: Facebook groups/pages coordinate/more divisive/polarizing groups and actvities into the public space. (Example) Mueller's report, highlights, the IRA organized political rallies in the U.S. using social media starting in 2015 and continued to coordinate rallies after the 2016 election -* **Tactic**: TA10 +* **Belongs to tactic stage**: TA10 | Incident | Descriptions given for this incident | diff --git a/techniques/T0058.md b/techniques/T0058.md index 26e34fb..d9f7472 100644 --- a/techniques/T0058.md +++ b/techniques/T0058.md @@ -1,14 +1,8 @@ -# Legacy web content - -* **Type**: Technique - -* **Name**: Legacy web content - -* **Id**: T0058 +# Technique T0058: Legacy web content * **Summary**: Make incident content visible for a long time, e.g. by exploiting platform terms of service, or placing it where it's hard to remove or unlikely to be removed. -* **Tactic**: TA11 +* **Belongs to tactic stage**: TA11 | Incident | Descriptions given for this incident | diff --git a/techniques/T0059.md b/techniques/T0059.md index 85fa8ed..3533ea3 100644 --- a/techniques/T0059.md +++ b/techniques/T0059.md @@ -1,16 +1,10 @@ -# Play the long game - -* **Type**: Technique - -* **Name**: Play the long game - -* **Id**: T0059 +# Technique T0059: Play the long game * **Summary**: Play the long game can mean a couple of things: 1. To plan messaging and allow it to grow organically without conducting your own amplification. This is methodical and slow and requires years for the message to take hold (e.g. China and its constant messaging that Taiwan and Hong Kong are part of one China). 2. To develop a series of seemingly disconnected messaging narratives that eventually combine into a new narrative. -* **Tactic**: TA11 +* **Belongs to tactic stage**: TA11 | Incident | Descriptions given for this incident | diff --git a/techniques/T0060.md b/techniques/T0060.md index 0ca5f13..95139b6 100644 --- a/techniques/T0060.md +++ b/techniques/T0060.md @@ -1,14 +1,8 @@ -# Continue to amplify - -* **Type**: Technique - -* **Name**: Continue to amplify - -* **Id**: T0060 +# Technique T0060: Continue to amplify * **Summary**: continue narrative or message amplification after the main incident work has finished -* **Tactic**: TA11 +* **Belongs to tactic stage**: TA11 | Incident | Descriptions given for this incident | diff --git a/techniques/T0061.md b/techniques/T0061.md index 32bcd57..e9c1da2 100644 --- a/techniques/T0061.md +++ b/techniques/T0061.md @@ -1,14 +1,8 @@ -# Sell merchandising - -* **Type**: Technique - -* **Name**: Sell merchandising - -* **Id**: T0061 +# Technique T0061: Sell merchandising * **Summary**: Sell hats, t-shirts, flags and other branded content that's designed to be seen in the real world -* **Tactic**: TA10 +* **Belongs to tactic stage**: TA10 | Incident | Descriptions given for this incident |