forked from p34709852/monkey
More improvements on the configs
This commit is contained in:
parent
e6060b6729
commit
a17305a324
|
@ -107,7 +107,7 @@
|
||||||
"exploit_ssh_keys": []
|
"exploit_ssh_keys": []
|
||||||
},
|
},
|
||||||
"general": {
|
"general": {
|
||||||
"keep_tunnel_open_time": 50,
|
"keep_tunnel_open_time": 1,
|
||||||
"monkey_dir_name": "monkey_dir",
|
"monkey_dir_name": "monkey_dir",
|
||||||
"singleton_mutex_name": "{2384ec59-0df8-4ab9-918c-843740924a28}"
|
"singleton_mutex_name": "{2384ec59-0df8-4ab9-918c-843740924a28}"
|
||||||
},
|
},
|
||||||
|
|
|
@ -118,7 +118,7 @@
|
||||||
"exploit_ssh_keys": []
|
"exploit_ssh_keys": []
|
||||||
},
|
},
|
||||||
"general": {
|
"general": {
|
||||||
"keep_tunnel_open_time": 50,
|
"keep_tunnel_open_time": 1,
|
||||||
"monkey_dir_name": "monkey_dir",
|
"monkey_dir_name": "monkey_dir",
|
||||||
"singleton_mutex_name": "{2384ec59-0df8-4ab9-918c-843740924a28}"
|
"singleton_mutex_name": "{2384ec59-0df8-4ab9-918c-843740924a28}"
|
||||||
},
|
},
|
||||||
|
|
|
@ -106,7 +106,7 @@
|
||||||
"exploit_ssh_keys": []
|
"exploit_ssh_keys": []
|
||||||
},
|
},
|
||||||
"general": {
|
"general": {
|
||||||
"keep_tunnel_open_time": 50,
|
"keep_tunnel_open_time": 1,
|
||||||
"monkey_dir_name": "monkey_dir",
|
"monkey_dir_name": "monkey_dir",
|
||||||
"singleton_mutex_name": "{2384ec59-0df8-4ab9-918c-843740924a28}"
|
"singleton_mutex_name": "{2384ec59-0df8-4ab9-918c-843740924a28}"
|
||||||
},
|
},
|
||||||
|
|
|
@ -106,7 +106,7 @@
|
||||||
"exploit_ssh_keys": []
|
"exploit_ssh_keys": []
|
||||||
},
|
},
|
||||||
"general": {
|
"general": {
|
||||||
"keep_tunnel_open_time": 50,
|
"keep_tunnel_open_time": 1,
|
||||||
"monkey_dir_name": "monkey_dir",
|
"monkey_dir_name": "monkey_dir",
|
||||||
"singleton_mutex_name": "{2384ec59-0df8-4ab9-918c-843740924a28}"
|
"singleton_mutex_name": "{2384ec59-0df8-4ab9-918c-843740924a28}"
|
||||||
},
|
},
|
||||||
|
|
|
@ -105,7 +105,7 @@
|
||||||
"exploit_ssh_keys": []
|
"exploit_ssh_keys": []
|
||||||
},
|
},
|
||||||
"general": {
|
"general": {
|
||||||
"keep_tunnel_open_time": 50,
|
"keep_tunnel_open_time": 1,
|
||||||
"monkey_dir_name": "monkey_dir",
|
"monkey_dir_name": "monkey_dir",
|
||||||
"singleton_mutex_name": "{2384ec59-0df8-4ab9-918c-843740924a28}"
|
"singleton_mutex_name": "{2384ec59-0df8-4ab9-918c-843740924a28}"
|
||||||
},
|
},
|
||||||
|
@ -136,7 +136,7 @@
|
||||||
"post_breach_actions": []
|
"post_breach_actions": []
|
||||||
},
|
},
|
||||||
"life_cycle": {
|
"life_cycle": {
|
||||||
"max_iterations": 2,
|
"max_iterations": 1,
|
||||||
"retry_failed_explotation": true,
|
"retry_failed_explotation": true,
|
||||||
"timeout_between_iterations": 100,
|
"timeout_between_iterations": 100,
|
||||||
"victims_max_exploit": 7,
|
"victims_max_exploit": 7,
|
||||||
|
|
|
@ -115,7 +115,7 @@
|
||||||
"exploit_ssh_keys": []
|
"exploit_ssh_keys": []
|
||||||
},
|
},
|
||||||
"general": {
|
"general": {
|
||||||
"keep_tunnel_open_time": 50,
|
"keep_tunnel_open_time": 1,
|
||||||
"monkey_dir_name": "monkey_dir",
|
"monkey_dir_name": "monkey_dir",
|
||||||
"singleton_mutex_name": "{2384ec59-0df8-4ab9-918c-843740924a28}"
|
"singleton_mutex_name": "{2384ec59-0df8-4ab9-918c-843740924a28}"
|
||||||
},
|
},
|
||||||
|
|
|
@ -116,7 +116,7 @@
|
||||||
"exploit_ssh_keys": []
|
"exploit_ssh_keys": []
|
||||||
},
|
},
|
||||||
"general": {
|
"general": {
|
||||||
"keep_tunnel_open_time": 50,
|
"keep_tunnel_open_time": 1,
|
||||||
"monkey_dir_name": "monkey_dir",
|
"monkey_dir_name": "monkey_dir",
|
||||||
"singleton_mutex_name": "{2384ec59-0df8-4ab9-918c-843740924a28}"
|
"singleton_mutex_name": "{2384ec59-0df8-4ab9-918c-843740924a28}"
|
||||||
},
|
},
|
||||||
|
|
|
@ -23,7 +23,7 @@
|
||||||
"depth": 3,
|
"depth": 3,
|
||||||
"local_network_scan": false,
|
"local_network_scan": false,
|
||||||
"subnet_scan_list": [
|
"subnet_scan_list": [
|
||||||
"10.2.2.39",
|
"10.2.2.32",
|
||||||
"10.2.1.10",
|
"10.2.1.10",
|
||||||
"10.2.0.11"
|
"10.2.0.11"
|
||||||
]
|
]
|
||||||
|
@ -191,4 +191,4 @@
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -107,7 +107,7 @@
|
||||||
"exploit_ssh_keys": []
|
"exploit_ssh_keys": []
|
||||||
},
|
},
|
||||||
"general": {
|
"general": {
|
||||||
"keep_tunnel_open_time": 50,
|
"keep_tunnel_open_time": 1,
|
||||||
"monkey_dir_name": "monkey_dir",
|
"monkey_dir_name": "monkey_dir",
|
||||||
"singleton_mutex_name": "{2384ec59-0df8-4ab9-918c-843740924a28}"
|
"singleton_mutex_name": "{2384ec59-0df8-4ab9-918c-843740924a28}"
|
||||||
},
|
},
|
||||||
|
|
|
@ -113,7 +113,7 @@
|
||||||
"exploit_ssh_keys": []
|
"exploit_ssh_keys": []
|
||||||
},
|
},
|
||||||
"general": {
|
"general": {
|
||||||
"keep_tunnel_open_time": 50,
|
"keep_tunnel_open_time": 1,
|
||||||
"monkey_dir_name": "monkey_dir",
|
"monkey_dir_name": "monkey_dir",
|
||||||
"singleton_mutex_name": "{2384ec59-0df8-4ab9-918c-843740924a28}"
|
"singleton_mutex_name": "{2384ec59-0df8-4ab9-918c-843740924a28}"
|
||||||
},
|
},
|
||||||
|
@ -144,7 +144,7 @@
|
||||||
"post_breach_actions": []
|
"post_breach_actions": []
|
||||||
},
|
},
|
||||||
"life_cycle": {
|
"life_cycle": {
|
||||||
"max_iterations": 2,
|
"max_iterations": 1,
|
||||||
"retry_failed_explotation": true,
|
"retry_failed_explotation": true,
|
||||||
"timeout_between_iterations": 100,
|
"timeout_between_iterations": 100,
|
||||||
"victims_max_exploit": 7,
|
"victims_max_exploit": 7,
|
||||||
|
|
|
@ -8,8 +8,8 @@ from envs.monkey_zoo.blackbox.utils.island_config_parser import IslandConfigPars
|
||||||
from envs.monkey_zoo.blackbox.utils import gcp_machine_handlers
|
from envs.monkey_zoo.blackbox.utils import gcp_machine_handlers
|
||||||
from envs.monkey_zoo.blackbox.tests.basic_test import BasicTest
|
from envs.monkey_zoo.blackbox.tests.basic_test import BasicTest
|
||||||
|
|
||||||
DEFAULT_TIMEOUT_SECONDS = 4 * 60 # 4 minutes
|
DEFAULT_TIMEOUT_SECONDS = 3 * 60
|
||||||
DELAY_BETWEEN_TESTS = 10
|
DELAY_BETWEEN_TESTS = 30
|
||||||
GCP_TEST_MACHINE_LIST = ['sshkeys-11', 'sshkeys-12', 'elastic-4', 'elastic-5', 'haddop-2-v3', 'hadoop-3', 'mssql-16',
|
GCP_TEST_MACHINE_LIST = ['sshkeys-11', 'sshkeys-12', 'elastic-4', 'elastic-5', 'haddop-2-v3', 'hadoop-3', 'mssql-16',
|
||||||
'mimikatz-14', 'mimikatz-15', 'final-test-struts2-23', 'final-test-struts2-24',
|
'mimikatz-14', 'mimikatz-15', 'final-test-struts2-23', 'final-test-struts2-24',
|
||||||
'tunneling-9', 'tunneling-10', 'tunneling-11', 'weblogic-18', 'weblogic-19', 'shellshock-8']
|
'tunneling-9', 'tunneling-10', 'tunneling-11', 'weblogic-18', 'weblogic-19', 'shellshock-8']
|
||||||
|
@ -52,7 +52,6 @@ class TestMonkeyBlackbox(object):
|
||||||
print("Waiting for ({:.0f} seconds) for old monkey's to die or GCP machines to boot up.".format(DELAY_BETWEEN_TESTS))
|
print("Waiting for ({:.0f} seconds) for old monkey's to die or GCP machines to boot up.".format(DELAY_BETWEEN_TESTS))
|
||||||
sleep(DELAY_BETWEEN_TESTS)
|
sleep(DELAY_BETWEEN_TESTS)
|
||||||
|
|
||||||
"""
|
|
||||||
def test_server_online(self, island_client):
|
def test_server_online(self, island_client):
|
||||||
assert island_client.get_api_status() is not None
|
assert island_client.get_api_status() is not None
|
||||||
|
|
||||||
|
@ -62,15 +61,18 @@ class TestMonkeyBlackbox(object):
|
||||||
def test_hadoop_exploiter(self, island_client):
|
def test_hadoop_exploiter(self, island_client):
|
||||||
self.run_basic_test(island_client, "HADOOP.conf", "Hadoop exploiter")
|
self.run_basic_test(island_client, "HADOOP.conf", "Hadoop exploiter")
|
||||||
|
|
||||||
def test_mssql_exploiter(self, island_client):
|
|
||||||
self.run_basic_test(island_client, "MSSQL.conf", "MSSQL exploiter")
|
|
||||||
"""
|
"""
|
||||||
|
def test_mssql_exploiter(self, island_client):
|
||||||
|
self.run_basic_test(island_client, "MSSQL.conf", "MSSQL exploiter")
|
||||||
|
"""
|
||||||
|
|
||||||
def test_smb_and_mimikatz_exploiters(self, island_client):
|
def test_smb_and_mimikatz_exploiters(self, island_client):
|
||||||
self.run_basic_test(island_client, "SMB_MIMIKATZ.conf", "SMB exploiter, mimikatz")
|
self.run_basic_test(island_client, "SMB_MIMIKATZ.conf", "SMB exploiter, mimikatz")
|
||||||
|
|
||||||
"""
|
"""
|
||||||
def test_elastic_exploiter(self, island_client):
|
def test_elastic_exploiter(self, island_client):
|
||||||
self.run_basic_test(island_client, "ELASTIC.conf", "Elastic exploiter", 180)
|
self.run_basic_test(island_client, "ELASTIC.conf", "Elastic exploiter")
|
||||||
|
"""
|
||||||
|
|
||||||
def test_struts_exploiter(self, island_client):
|
def test_struts_exploiter(self, island_client):
|
||||||
self.run_basic_test(island_client, "STRUTS2.conf", "Strtuts2 exploiter")
|
self.run_basic_test(island_client, "STRUTS2.conf", "Strtuts2 exploiter")
|
||||||
|
@ -86,4 +88,3 @@ class TestMonkeyBlackbox(object):
|
||||||
|
|
||||||
def test_wmi_exploiter(self, island_client):
|
def test_wmi_exploiter(self, island_client):
|
||||||
self.run_basic_test(island_client, "WMI_MIMIKATZ.conf", "WMI exploiter, mimikatz")
|
self.run_basic_test(island_client, "WMI_MIMIKATZ.conf", "WMI exploiter, mimikatz")
|
||||||
"""
|
|
||||||
|
|
|
@ -29,7 +29,6 @@ class BasicTest(object):
|
||||||
if self.all_analyzers_pass():
|
if self.all_analyzers_pass():
|
||||||
self.log_success(timer)
|
self.log_success(timer)
|
||||||
return
|
return
|
||||||
sleep(DELAY_BETWEEN_ANALYSIS)
|
|
||||||
self.log_failure(timer)
|
self.log_failure(timer)
|
||||||
assert False
|
assert False
|
||||||
|
|
||||||
|
|
|
@ -1,10 +1,17 @@
|
||||||
import json
|
import json
|
||||||
|
from time import sleep
|
||||||
|
|
||||||
import requests
|
import requests
|
||||||
|
|
||||||
# SHA3-512 of '1234567890!@#$%^&*()_nothing_up_my_sleeve_1234567890!@#$%^&*()'
|
# SHA3-512 of '1234567890!@#$%^&*()_nothing_up_my_sleeve_1234567890!@#$%^&*()'
|
||||||
NO_AUTH_CREDS = '55e97c9dcfd22b8079189ddaeea9bce8125887e3237b800c6176c9afa80d2062' \
|
NO_AUTH_CREDS = '55e97c9dcfd22b8079189ddaeea9bce8125887e3237b800c6176c9afa80d2062' \
|
||||||
'8d2c8d0b1538d2208c1444ac66535b764a3d902b35e751df3faec1e477ed3557'
|
'8d2c8d0b1538d2208c1444ac66535b764a3d902b35e751df3faec1e477ed3557'
|
||||||
|
SLEEP_BETWEEN_REQUESTS_SECONDS = 0.5
|
||||||
|
|
||||||
|
|
||||||
|
def avoid_race_condition(func):
|
||||||
|
sleep(SLEEP_BETWEEN_REQUESTS_SECONDS)
|
||||||
|
return func
|
||||||
|
|
||||||
|
|
||||||
class MonkeyIslandClient(object):
|
class MonkeyIslandClient(object):
|
||||||
|
@ -46,9 +53,11 @@ class MonkeyIslandClient(object):
|
||||||
def get_api_status(self):
|
def get_api_status(self):
|
||||||
return self.request_get("api")
|
return self.request_get("api")
|
||||||
|
|
||||||
|
@avoid_race_condition
|
||||||
def import_config(self, config_contents):
|
def import_config(self, config_contents):
|
||||||
_ = self.request_post("api/configuration/island", data=config_contents)
|
_ = self.request_post("api/configuration/island", data=config_contents)
|
||||||
|
|
||||||
|
@avoid_race_condition
|
||||||
def run_monkey_local(self):
|
def run_monkey_local(self):
|
||||||
response = self.request_post_json("api/local-monkey", dict_data={"action": "run"})
|
response = self.request_post_json("api/local-monkey", dict_data={"action": "run"})
|
||||||
if MonkeyIslandClient.monkey_ran_successfully(response):
|
if MonkeyIslandClient.monkey_ran_successfully(response):
|
||||||
|
@ -61,6 +70,7 @@ class MonkeyIslandClient(object):
|
||||||
def monkey_ran_successfully(response):
|
def monkey_ran_successfully(response):
|
||||||
return response.ok and json.loads(response.content)['is_running']
|
return response.ok and json.loads(response.content)['is_running']
|
||||||
|
|
||||||
|
@avoid_race_condition
|
||||||
def kill_all_monkeys(self):
|
def kill_all_monkeys(self):
|
||||||
if self.request_get("api", {"action": "killall"}).ok:
|
if self.request_get("api", {"action": "killall"}).ok:
|
||||||
print("Killing all monkeys after the test.")
|
print("Killing all monkeys after the test.")
|
||||||
|
@ -68,6 +78,7 @@ class MonkeyIslandClient(object):
|
||||||
print("Failed to kill all monkeys.")
|
print("Failed to kill all monkeys.")
|
||||||
assert False
|
assert False
|
||||||
|
|
||||||
|
@avoid_race_condition
|
||||||
def reset_env(self):
|
def reset_env(self):
|
||||||
if self.request_get("api", {"action": "reset"}).ok:
|
if self.request_get("api", {"action": "reset"}).ok:
|
||||||
print("Resetting environment after the test.")
|
print("Resetting environment after the test.")
|
||||||
|
|
Loading…
Reference in New Issue