From 279b7e59a352828646c9e2fdd49d09bd1c6bad00 Mon Sep 17 00:00:00 2001 From: Thorsten Sick Date: Tue, 13 Jul 2021 12:03:53 +0200 Subject: [PATCH] Removed kali config from yaml files. Replaced with a more generic attack_plugin config --- app/calderacontrol.py | 2 -- app/config.py | 5 ++--- app/experimentcontrol.py | 4 +--- .../FIN7/local_experiment_config.yaml | 4 ++-- template.yaml | 4 ++-- tests/data/attacker_has_empty_nicknames.yaml | 4 ++-- tests/data/attacks_half.yaml | 4 ++-- tests/data/attacks_missing.yaml | 4 ++-- tests/data/attacks_perfect.yaml | 4 ++-- tests/data/basic.yaml | 4 ++-- tests/data/basic_empty_sensor.yaml | 4 ++-- tests/data/basic_loot_missing.yaml | 4 ++-- tests/data/basic_results_missing.yaml | 4 ++-- tests/data/nap_time_missing.yaml | 4 ++-- tests/data/partial.yaml | 4 ++-- tests/test_config.py | 18 +++++++++--------- 16 files changed, 36 insertions(+), 41 deletions(-) diff --git a/app/calderacontrol.py b/app/calderacontrol.py index f05985f..37a0e33 100644 --- a/app/calderacontrol.py +++ b/app/calderacontrol.py @@ -15,8 +15,6 @@ from pprint import pprint, pformat # TODO: Ability deserves an own class. -# TODO: Support Stealth settings: "plain-text obfuscation","base64 obfuscation","base64jumble obfuscation","caesar cipher obfuscation","base64noPadding obfuscation","steganography obfuscation" -# TODO: Support Jitter (min/max) # TODO: Support all Caldera agents: "Sandcat (GoLang)","Elasticat (Blue Python/ Elasticsearch)","Manx (Reverse Shell TCP)","Ragdoll (Python/HTML)" class CalderaControl(): diff --git a/app/config.py b/app/config.py index 771c2a8..c28bb8d 100644 --- a/app/config.py +++ b/app/config.py @@ -7,7 +7,6 @@ import yaml from app.exceptions import ConfigurationError -# TODO: Add attack scripts (that will be CACAO in the future !) and plugin config # So the config being read is distributed into several files and they will have different formats (yaml, CACAO) # Currently it is a single file and YAML only. # We want to be independent from file structure or number of config files @@ -213,14 +212,14 @@ class ExperimentConfig(): raise ConfigurationError("results/loot_dir not properly set in configuration") return res - def kali_conf(self, attack): + def attack_conf(self, attack): """ Get kali config for a specific kali attack @param attack: Name of the attack to look up config for """ try: - res = self.raw_config["kali_conf"][attack] + res = self.raw_config["attack_conf"][attack] except KeyError: res = {} if res is None: diff --git a/app/experimentcontrol.py b/app/experimentcontrol.py index 68a3a2e..dd33a1d 100644 --- a/app/experimentcontrol.py +++ b/app/experimentcontrol.py @@ -193,13 +193,11 @@ class Experiment(): @returns: The output of the cmdline attacking tool """ - # TODO: Extend beyond Kali - for plugin in self.plugin_manager.get_plugins(AttackPlugin, [attack]): name = plugin.get_name() self.attack_logger.vprint(f"{CommandlineColors.OKBLUE}Running Kali plugin {name}{CommandlineColors.ENDC}", 2) - plugin.process_config(self.experiment_config.kali_conf(plugin.get_config_section_name())) # TODO: De-kalify + plugin.process_config(self.experiment_config.attack_conf(plugin.get_config_section_name())) plugin.set_attacker_machine(self.attacker_1) plugin.set_logger(self.attack_logger) plugin.set_caldera(self.caldera_control) diff --git a/plugins/default/adversary_emulations/FIN7/local_experiment_config.yaml b/plugins/default/adversary_emulations/FIN7/local_experiment_config.yaml index 9535139..051ce6e 100644 --- a/plugins/default/adversary_emulations/FIN7/local_experiment_config.yaml +++ b/plugins/default/adversary_emulations/FIN7/local_experiment_config.yaml @@ -150,8 +150,8 @@ plugin_based_attacks: - fin7_1 ### -# Configuration for the kali attack tools -kali_conf: +# Configuration for the plugin based attack tools +attack_conf: ### # Hydra configuration hydra: diff --git a/template.yaml b/template.yaml index 26a72e3..5e1cf4c 100644 --- a/template.yaml +++ b/template.yaml @@ -253,8 +253,8 @@ plugin_based_attacks: - nmap ### -# Configuration for the kali attack tools -kali_conf: +# Configuration for the plugin based attack tools +attack_conf: ### # Hydra configuration hydra: diff --git a/tests/data/attacker_has_empty_nicknames.yaml b/tests/data/attacker_has_empty_nicknames.yaml index 534a24d..4585861 100644 --- a/tests/data/attacker_has_empty_nicknames.yaml +++ b/tests/data/attacker_has_empty_nicknames.yaml @@ -133,8 +133,8 @@ plugin_based_attacks: - hydra ### -# Configuration for the kali attack tools -kali_conf: +# Configuration for the plugin based attack tools +attack_conf: ### # Hydra configuration hydra: diff --git a/tests/data/attacks_half.yaml b/tests/data/attacks_half.yaml index 1c1fb01..1676f2b 100644 --- a/tests/data/attacks_half.yaml +++ b/tests/data/attacks_half.yaml @@ -121,8 +121,8 @@ plugin_based_attacks: # - hydra ### -# Configuration for the kali attack tools -kali_conf: +# Configuration for the plugin based attack tools +attack_conf: ### # Hydra configuration hydra: diff --git a/tests/data/attacks_missing.yaml b/tests/data/attacks_missing.yaml index 99fed54..c97adb9 100644 --- a/tests/data/attacks_missing.yaml +++ b/tests/data/attacks_missing.yaml @@ -120,8 +120,8 @@ targets: # - hydra ### -# Configuration for the kali attack tools -kali_conf: +# Configuration for the plugin based attack tools +attack_conf: ### # Hydra configuration hydra: diff --git a/tests/data/attacks_perfect.yaml b/tests/data/attacks_perfect.yaml index 92d5188..bb3978c 100644 --- a/tests/data/attacks_perfect.yaml +++ b/tests/data/attacks_perfect.yaml @@ -132,8 +132,8 @@ plugin_based_attacks: - skylla ### -# Configuration for the kali attack tools -kali_conf: +# Configuration for the plugin based attack tools +attack_conf: ### # Hydra configuration hydra: diff --git a/tests/data/basic.yaml b/tests/data/basic.yaml index 9d26f3c..f292ebb 100644 --- a/tests/data/basic.yaml +++ b/tests/data/basic.yaml @@ -123,8 +123,8 @@ plugin_based_attacks: - hydra ### -# Configuration for the kali attack tools -kali_conf: +# Configuration for the plugin based attack tools +attack_conf: ### # Hydra configuration hydra: diff --git a/tests/data/basic_empty_sensor.yaml b/tests/data/basic_empty_sensor.yaml index 94cb02b..27bc8ca 100644 --- a/tests/data/basic_empty_sensor.yaml +++ b/tests/data/basic_empty_sensor.yaml @@ -123,8 +123,8 @@ plugin_based_attacks: - hydra ### -# Configuration for the kali attack tools -kali_conf: +# Configuration for the plugin based attack tools +attack_conf: ### # Hydra configuration hydra: diff --git a/tests/data/basic_loot_missing.yaml b/tests/data/basic_loot_missing.yaml index 1f027bd..fab76fc 100644 --- a/tests/data/basic_loot_missing.yaml +++ b/tests/data/basic_loot_missing.yaml @@ -123,8 +123,8 @@ plugin_based_attacks: - hydra ### -# Configuration for the kali attack tools -kali_conf: +# Configuration for the plugin based attack tools +attack_conf: ### # Hydra configuration hydra: diff --git a/tests/data/basic_results_missing.yaml b/tests/data/basic_results_missing.yaml index 817623a..42e7180 100644 --- a/tests/data/basic_results_missing.yaml +++ b/tests/data/basic_results_missing.yaml @@ -123,8 +123,8 @@ plugin_based_attacks: - hydra ### -# Configuration for the kali attack tools -kali_conf: +# Configuration for the plugin based attack tools +attack_conf: ### # Hydra configuration hydra: diff --git a/tests/data/nap_time_missing.yaml b/tests/data/nap_time_missing.yaml index 3e11860..202a8b8 100644 --- a/tests/data/nap_time_missing.yaml +++ b/tests/data/nap_time_missing.yaml @@ -116,8 +116,8 @@ plugin_based_attacks: - hydra ### -# Configuration for the kali attack tools -kali_conf: +# Configuration for the plugin based attack tools +attack_conf: ### # Hydra configuration hydra: diff --git a/tests/data/partial.yaml b/tests/data/partial.yaml index 84a076e..5dd41a7 100644 --- a/tests/data/partial.yaml +++ b/tests/data/partial.yaml @@ -128,8 +128,8 @@ plugin_based_attacks: - hydra ### -# Configuration for the kali attack tools -kali_conf: +# Configuration for the plugin based attack tools +attack_conf: ### # Hydra configuration hydra: diff --git a/tests/test_config.py b/tests/test_config.py index 7080c52..9c13028 100644 --- a/tests/test_config.py +++ b/tests/test_config.py @@ -561,26 +561,26 @@ class TestExperimentConfig(unittest.TestCase): ex = ExperimentConfig("tests/data/attacker_has_empty_nicknames.yaml") self.assertEqual(ex._targets[0].get_nicknames(), [1, 2, 3]) - def test_missing_kali_config(self): - """ Getting kali config for a specific attack. Attack missing """ + def test_missing_attack_config(self): + """ Getting attack config for a specific attack. Attack missing """ ex = ExperimentConfig("tests/data/basic.yaml") - self.assertEqual(ex.kali_conf("BOOM"), {}) + self.assertEqual(ex.attack_conf("BOOM"), {}) - def test_working_kali_config(self): - """ Getting kali config for a specific attack """ + def test_working_attack_config(self): + """ Getting attack config for a specific attack """ ex = ExperimentConfig("tests/data/basic.yaml") - data = ex.kali_conf("hydra") + data = ex.attack_conf("hydra") self.assertEqual(data["userfile"], "users.txt") - def test_kali_config_missing_attack_data(self): - """ Getting kali config for a specific attack: Missing """ + def test_attack_config_missing_attack_data(self): + """ Getting attack config for a specific attack: Missing """ ex = ExperimentConfig("tests/data/attacks_missing.yaml") - data = ex.kali_conf("missing") + data = ex.attack_conf("missing") self.assertEqual(data, {}) def test_missing_caldera_config_obfuscator(self):