From 7bc8ed649a0ba7903c25523a5820d65f7f554095 Mon Sep 17 00:00:00 2001 From: Mike Salvatore Date: Tue, 5 Jul 2022 13:28:17 -0400 Subject: [PATCH 1/3] Common: Add common.credentials package Migrate all objects that represent credentials from their present home in the agent to their new home in common. This allows these classes to be shared by the island. Furthermore, it will simplify serialization/deserialization and clear a path to remove other redundant classes in the Island. --- monkey/common/credentials/__init__.py | 8 ++++++++ .../credential_component_type.py | 0 .../credentials}/credentials.py | 0 .../credentials}/i_credential_component.py | 2 +- .../credentials}/lm_hash.py | 3 +-- .../credentials}/nt_hash.py | 3 +-- .../credentials}/password.py | 3 +-- .../credentials}/ssh_keypair.py | 3 +-- .../credentials}/username.py | 3 +-- .../infection_monkey/credential_collectors/__init__.py | 5 ----- .../credential_components/__init__.py | 0 .../mimikatz_credential_collector.py | 4 ++-- .../ssh_collector/ssh_credential_collector.py | 4 ++-- .../credential_store/aggregating_credentials_store.py | 3 +-- .../credential_store/i_credentials_store.py | 2 +- monkey/infection_monkey/exploit/zerologon.py | 3 +-- monkey/infection_monkey/i_puppet/__init__.py | 5 ----- .../i_puppet/credential_collection/__init__.py | 2 -- .../credential_collection/i_credential_collector.py | 2 +- monkey/infection_monkey/i_puppet/i_puppet.py | 2 +- monkey/infection_monkey/puppet/puppet.py | 2 +- monkey/infection_monkey/telemetry/credentials_telem.py | 2 +- .../cc/services/reporting/stolen_credentials.py | 2 +- .../processing/credentials/credentials_parser.py | 2 +- .../credential_collectors/test_mimikatz_collector.py | 10 ++-------- .../test_ssh_credentials_collector.py | 4 ++-- .../test_aggregating_credentials_store.py | 3 +-- .../unit_tests/infection_monkey/master/mock_puppet.py | 3 +-- ...est_credentials_intercepting_telemetry_messenger.py | 3 +-- .../telemetry/test_credentials_telem.py | 3 +-- .../cc/services/reporting/test_stolen_credentials.py | 2 +- .../credentials/test_credential_processing.py | 2 +- 32 files changed, 37 insertions(+), 58 deletions(-) create mode 100644 monkey/common/credentials/__init__.py rename monkey/common/{common_consts => credentials}/credential_component_type.py (100%) rename monkey/{infection_monkey/i_puppet/credential_collection => common/credentials}/credentials.py (100%) rename monkey/{infection_monkey/i_puppet/credential_collection => common/credentials}/i_credential_component.py (68%) rename monkey/{infection_monkey/credential_collectors/credential_components => common/credentials}/lm_hash.py (62%) rename monkey/{infection_monkey/credential_collectors/credential_components => common/credentials}/nt_hash.py (62%) rename monkey/{infection_monkey/credential_collectors/credential_components => common/credentials}/password.py (63%) rename monkey/{infection_monkey/credential_collectors/credential_components => common/credentials}/ssh_keypair.py (65%) rename monkey/{infection_monkey/credential_collectors/credential_components => common/credentials}/username.py (63%) delete mode 100644 monkey/infection_monkey/credential_collectors/credential_components/__init__.py diff --git a/monkey/common/credentials/__init__.py b/monkey/common/credentials/__init__.py new file mode 100644 index 000000000..92a778886 --- /dev/null +++ b/monkey/common/credentials/__init__.py @@ -0,0 +1,8 @@ +from .credential_component_type import CredentialComponentType +from .i_credential_component import ICredentialComponent +from .credentials import Credentials +from .lm_hash import LMHash +from .nt_hash import NTHash +from .password import Password +from .ssh_keypair import SSHKeypair +from .username import Username diff --git a/monkey/common/common_consts/credential_component_type.py b/monkey/common/credentials/credential_component_type.py similarity index 100% rename from monkey/common/common_consts/credential_component_type.py rename to monkey/common/credentials/credential_component_type.py diff --git a/monkey/infection_monkey/i_puppet/credential_collection/credentials.py b/monkey/common/credentials/credentials.py similarity index 100% rename from monkey/infection_monkey/i_puppet/credential_collection/credentials.py rename to monkey/common/credentials/credentials.py diff --git a/monkey/infection_monkey/i_puppet/credential_collection/i_credential_component.py b/monkey/common/credentials/i_credential_component.py similarity index 68% rename from monkey/infection_monkey/i_puppet/credential_collection/i_credential_component.py rename to monkey/common/credentials/i_credential_component.py index c4471ebfb..03dc75604 100644 --- a/monkey/infection_monkey/i_puppet/credential_collection/i_credential_component.py +++ b/monkey/common/credentials/i_credential_component.py @@ -1,6 +1,6 @@ from abc import ABC, abstractmethod -from common.common_consts.credential_component_type import CredentialComponentType +from . import CredentialComponentType class ICredentialComponent(ABC): diff --git a/monkey/infection_monkey/credential_collectors/credential_components/lm_hash.py b/monkey/common/credentials/lm_hash.py similarity index 62% rename from monkey/infection_monkey/credential_collectors/credential_components/lm_hash.py rename to monkey/common/credentials/lm_hash.py index 5e89891ec..818999244 100644 --- a/monkey/infection_monkey/credential_collectors/credential_components/lm_hash.py +++ b/monkey/common/credentials/lm_hash.py @@ -1,7 +1,6 @@ from dataclasses import dataclass, field -from common.common_consts.credential_component_type import CredentialComponentType -from infection_monkey.i_puppet import ICredentialComponent +from . import CredentialComponentType, ICredentialComponent @dataclass(frozen=True) diff --git a/monkey/infection_monkey/credential_collectors/credential_components/nt_hash.py b/monkey/common/credentials/nt_hash.py similarity index 62% rename from monkey/infection_monkey/credential_collectors/credential_components/nt_hash.py rename to monkey/common/credentials/nt_hash.py index 7e2328699..67246f695 100644 --- a/monkey/infection_monkey/credential_collectors/credential_components/nt_hash.py +++ b/monkey/common/credentials/nt_hash.py @@ -1,7 +1,6 @@ from dataclasses import dataclass, field -from common.common_consts.credential_component_type import CredentialComponentType -from infection_monkey.i_puppet import ICredentialComponent +from . import CredentialComponentType, ICredentialComponent @dataclass(frozen=True) diff --git a/monkey/infection_monkey/credential_collectors/credential_components/password.py b/monkey/common/credentials/password.py similarity index 63% rename from monkey/infection_monkey/credential_collectors/credential_components/password.py rename to monkey/common/credentials/password.py index 3601511af..ff6da0eae 100644 --- a/monkey/infection_monkey/credential_collectors/credential_components/password.py +++ b/monkey/common/credentials/password.py @@ -1,7 +1,6 @@ from dataclasses import dataclass, field -from common.common_consts.credential_component_type import CredentialComponentType -from infection_monkey.i_puppet import ICredentialComponent +from . import CredentialComponentType, ICredentialComponent @dataclass(frozen=True) diff --git a/monkey/infection_monkey/credential_collectors/credential_components/ssh_keypair.py b/monkey/common/credentials/ssh_keypair.py similarity index 65% rename from monkey/infection_monkey/credential_collectors/credential_components/ssh_keypair.py rename to monkey/common/credentials/ssh_keypair.py index 16b943ea6..897acba8a 100644 --- a/monkey/infection_monkey/credential_collectors/credential_components/ssh_keypair.py +++ b/monkey/common/credentials/ssh_keypair.py @@ -1,7 +1,6 @@ from dataclasses import dataclass, field -from common.common_consts.credential_component_type import CredentialComponentType -from infection_monkey.i_puppet import ICredentialComponent +from . import CredentialComponentType, ICredentialComponent @dataclass(frozen=True) diff --git a/monkey/infection_monkey/credential_collectors/credential_components/username.py b/monkey/common/credentials/username.py similarity index 63% rename from monkey/infection_monkey/credential_collectors/credential_components/username.py rename to monkey/common/credentials/username.py index e7d55aa6f..c3249058e 100644 --- a/monkey/infection_monkey/credential_collectors/credential_components/username.py +++ b/monkey/common/credentials/username.py @@ -1,7 +1,6 @@ from dataclasses import dataclass, field -from common.common_consts.credential_component_type import CredentialComponentType -from infection_monkey.i_puppet import ICredentialComponent +from . import CredentialComponentType, ICredentialComponent @dataclass(frozen=True) diff --git a/monkey/infection_monkey/credential_collectors/__init__.py b/monkey/infection_monkey/credential_collectors/__init__.py index 1f259949d..9048197b3 100644 --- a/monkey/infection_monkey/credential_collectors/__init__.py +++ b/monkey/infection_monkey/credential_collectors/__init__.py @@ -1,7 +1,2 @@ -from .credential_components.nt_hash import NTHash -from .credential_components.lm_hash import LMHash -from .credential_components.password import Password -from .credential_components.username import Username -from .credential_components.ssh_keypair import SSHKeypair from .mimikatz_collector import MimikatzCredentialCollector from .ssh_collector import SSHCredentialCollector diff --git a/monkey/infection_monkey/credential_collectors/credential_components/__init__.py b/monkey/infection_monkey/credential_collectors/credential_components/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/monkey/infection_monkey/credential_collectors/mimikatz_collector/mimikatz_credential_collector.py b/monkey/infection_monkey/credential_collectors/mimikatz_collector/mimikatz_credential_collector.py index 27fb26498..9dc590aeb 100644 --- a/monkey/infection_monkey/credential_collectors/mimikatz_collector/mimikatz_credential_collector.py +++ b/monkey/infection_monkey/credential_collectors/mimikatz_collector/mimikatz_credential_collector.py @@ -1,8 +1,8 @@ import logging from typing import Sequence -from infection_monkey.credential_collectors import LMHash, NTHash, Password, Username -from infection_monkey.i_puppet.credential_collection import Credentials, ICredentialCollector +from common.credentials import Credentials, LMHash, NTHash, Password, Username +from infection_monkey.i_puppet.credential_collection import ICredentialCollector from infection_monkey.model import USERNAME_PREFIX from . import pypykatz_handler diff --git a/monkey/infection_monkey/credential_collectors/ssh_collector/ssh_credential_collector.py b/monkey/infection_monkey/credential_collectors/ssh_collector/ssh_credential_collector.py index 69afd68f6..35bd401f4 100644 --- a/monkey/infection_monkey/credential_collectors/ssh_collector/ssh_credential_collector.py +++ b/monkey/infection_monkey/credential_collectors/ssh_collector/ssh_credential_collector.py @@ -1,9 +1,9 @@ import logging from typing import Dict, Iterable, Sequence -from infection_monkey.credential_collectors import SSHKeypair, Username +from common.credentials import Credentials, SSHKeypair, Username from infection_monkey.credential_collectors.ssh_collector import ssh_handler -from infection_monkey.i_puppet.credential_collection import Credentials, ICredentialCollector +from infection_monkey.i_puppet.credential_collection import ICredentialCollector from infection_monkey.telemetry.messengers.i_telemetry_messenger import ITelemetryMessenger logger = logging.getLogger(__name__) diff --git a/monkey/infection_monkey/credential_store/aggregating_credentials_store.py b/monkey/infection_monkey/credential_store/aggregating_credentials_store.py index 47f097dad..6ff6bb288 100644 --- a/monkey/infection_monkey/credential_store/aggregating_credentials_store.py +++ b/monkey/infection_monkey/credential_store/aggregating_credentials_store.py @@ -1,10 +1,9 @@ import logging from typing import Any, Iterable, Mapping -from common.common_consts.credential_component_type import CredentialComponentType +from common.credentials import CredentialComponentType, Credentials from infection_monkey.custom_types import PropagationCredentials from infection_monkey.i_control_channel import IControlChannel -from infection_monkey.i_puppet import Credentials from infection_monkey.utils.decorators import request_cache from .i_credentials_store import ICredentialsStore diff --git a/monkey/infection_monkey/credential_store/i_credentials_store.py b/monkey/infection_monkey/credential_store/i_credentials_store.py index 711c77a89..15486afb4 100644 --- a/monkey/infection_monkey/credential_store/i_credentials_store.py +++ b/monkey/infection_monkey/credential_store/i_credentials_store.py @@ -1,8 +1,8 @@ import abc from typing import Iterable +from common.credentials import Credentials from infection_monkey.custom_types import PropagationCredentials -from infection_monkey.i_puppet import Credentials class ICredentialsStore(metaclass=abc.ABCMeta): diff --git a/monkey/infection_monkey/exploit/zerologon.py b/monkey/infection_monkey/exploit/zerologon.py index 9be006d8e..1665d551c 100644 --- a/monkey/infection_monkey/exploit/zerologon.py +++ b/monkey/infection_monkey/exploit/zerologon.py @@ -16,7 +16,7 @@ from impacket.dcerpc.v5 import epm, nrpc, rpcrt, transport from impacket.dcerpc.v5.dtypes import NULL from common.common_consts.timeouts import LONG_REQUEST_TIMEOUT -from infection_monkey.credential_collectors import LMHash, NTHash, Username +from common.credentials import Credentials, LMHash, NTHash, Username from infection_monkey.exploit.HostExploiter import HostExploiter from infection_monkey.exploit.tools.wmi_tools import WmiTools from infection_monkey.exploit.zerologon_utils.dump_secrets import DumpSecrets @@ -24,7 +24,6 @@ from infection_monkey.exploit.zerologon_utils.options import OptionsForSecretsdu from infection_monkey.exploit.zerologon_utils.vuln_assessment import get_dc_details, is_exploitable from infection_monkey.exploit.zerologon_utils.wmiexec import Wmiexec from infection_monkey.i_puppet import ExploiterResultData -from infection_monkey.i_puppet.credential_collection import Credentials from infection_monkey.telemetry.credentials_telem import CredentialsTelem from infection_monkey.utils.capture_output import StdoutCapture from infection_monkey.utils.threading import interruptible_iter diff --git a/monkey/infection_monkey/i_puppet/__init__.py b/monkey/infection_monkey/i_puppet/__init__.py index 767826297..c4e6b5b1c 100644 --- a/monkey/infection_monkey/i_puppet/__init__.py +++ b/monkey/infection_monkey/i_puppet/__init__.py @@ -10,8 +10,3 @@ from .i_puppet import ( UnknownPluginError, ) from .i_fingerprinter import IFingerprinter -from .credential_collection import ( - Credentials, - ICredentialCollector, - ICredentialComponent, -) diff --git a/monkey/infection_monkey/i_puppet/credential_collection/__init__.py b/monkey/infection_monkey/i_puppet/credential_collection/__init__.py index a97d8373f..ba2c18466 100644 --- a/monkey/infection_monkey/i_puppet/credential_collection/__init__.py +++ b/monkey/infection_monkey/i_puppet/credential_collection/__init__.py @@ -1,3 +1 @@ from .i_credential_collector import ICredentialCollector -from .credentials import Credentials -from .i_credential_component import ICredentialComponent diff --git a/monkey/infection_monkey/i_puppet/credential_collection/i_credential_collector.py b/monkey/infection_monkey/i_puppet/credential_collection/i_credential_collector.py index 0cbd2578b..02d7677ac 100644 --- a/monkey/infection_monkey/i_puppet/credential_collection/i_credential_collector.py +++ b/monkey/infection_monkey/i_puppet/credential_collection/i_credential_collector.py @@ -1,7 +1,7 @@ from abc import ABC, abstractmethod from typing import Mapping, Optional, Sequence -from .credentials import Credentials +from common.credentials import Credentials class ICredentialCollector(ABC): diff --git a/monkey/infection_monkey/i_puppet/i_puppet.py b/monkey/infection_monkey/i_puppet/i_puppet.py index 7a755e41f..e949ac373 100644 --- a/monkey/infection_monkey/i_puppet/i_puppet.py +++ b/monkey/infection_monkey/i_puppet/i_puppet.py @@ -5,10 +5,10 @@ from dataclasses import dataclass from enum import Enum from typing import Dict, Iterable, List, Mapping, Sequence +from common.credentials import Credentials from infection_monkey.model import VictimHost from . import PluginType -from .credential_collection import Credentials class PortStatus(Enum): diff --git a/monkey/infection_monkey/puppet/puppet.py b/monkey/infection_monkey/puppet/puppet.py index c7953d83c..ec77ffa35 100644 --- a/monkey/infection_monkey/puppet/puppet.py +++ b/monkey/infection_monkey/puppet/puppet.py @@ -3,9 +3,9 @@ import threading from typing import Dict, Iterable, List, Sequence from common.common_consts.timeouts import CONNECTION_TIMEOUT +from common.credentials import Credentials from infection_monkey import network_scanning from infection_monkey.i_puppet import ( - Credentials, ExploiterResultData, FingerprintData, IPuppet, diff --git a/monkey/infection_monkey/telemetry/credentials_telem.py b/monkey/infection_monkey/telemetry/credentials_telem.py index 4f5c43aa4..11e2bbb6d 100644 --- a/monkey/infection_monkey/telemetry/credentials_telem.py +++ b/monkey/infection_monkey/telemetry/credentials_telem.py @@ -3,7 +3,7 @@ import json from typing import Dict, Iterable from common.common_consts.telem_categories import TelemCategoryEnum -from infection_monkey.i_puppet.credential_collection import Credentials, ICredentialComponent +from common.credentials import Credentials, ICredentialComponent from infection_monkey.telemetry.base_telem import BaseTelem diff --git a/monkey/monkey_island/cc/services/reporting/stolen_credentials.py b/monkey/monkey_island/cc/services/reporting/stolen_credentials.py index a1f596ad5..2a817ac75 100644 --- a/monkey/monkey_island/cc/services/reporting/stolen_credentials.py +++ b/monkey/monkey_island/cc/services/reporting/stolen_credentials.py @@ -1,7 +1,7 @@ import logging from typing import Mapping, Sequence -from common.common_consts.credential_component_type import CredentialComponentType +from common.credentials import CredentialComponentType from monkey_island.cc.models import StolenCredentials logger = logging.getLogger(__name__) diff --git a/monkey/monkey_island/cc/services/telemetry/processing/credentials/credentials_parser.py b/monkey/monkey_island/cc/services/telemetry/processing/credentials/credentials_parser.py index 5c6d15631..8ab905ce6 100644 --- a/monkey/monkey_island/cc/services/telemetry/processing/credentials/credentials_parser.py +++ b/monkey/monkey_island/cc/services/telemetry/processing/credentials/credentials_parser.py @@ -2,7 +2,7 @@ import logging from itertools import chain from typing import Mapping -from common.common_consts.credential_component_type import CredentialComponentType +from common.credentials import CredentialComponentType from monkey_island.cc.models import StolenCredentials from .credentials import Credentials diff --git a/monkey/tests/unit_tests/infection_monkey/credential_collectors/test_mimikatz_collector.py b/monkey/tests/unit_tests/infection_monkey/credential_collectors/test_mimikatz_collector.py index 20eca62c7..f87dea93c 100644 --- a/monkey/tests/unit_tests/infection_monkey/credential_collectors/test_mimikatz_collector.py +++ b/monkey/tests/unit_tests/infection_monkey/credential_collectors/test_mimikatz_collector.py @@ -2,17 +2,11 @@ from typing import Sequence import pytest -from infection_monkey.credential_collectors import ( - LMHash, - MimikatzCredentialCollector, - NTHash, - Password, - Username, -) +from common.credentials import Credentials, LMHash, NTHash, Password, Username +from infection_monkey.credential_collectors import MimikatzCredentialCollector from infection_monkey.credential_collectors.mimikatz_collector.windows_credentials import ( WindowsCredentials, ) -from infection_monkey.i_puppet import Credentials def patch_pypykatz(win_creds: [WindowsCredentials], monkeypatch): diff --git a/monkey/tests/unit_tests/infection_monkey/credential_collectors/test_ssh_credentials_collector.py b/monkey/tests/unit_tests/infection_monkey/credential_collectors/test_ssh_credentials_collector.py index 4b344d9b0..17ca7ddc7 100644 --- a/monkey/tests/unit_tests/infection_monkey/credential_collectors/test_ssh_credentials_collector.py +++ b/monkey/tests/unit_tests/infection_monkey/credential_collectors/test_ssh_credentials_collector.py @@ -2,8 +2,8 @@ from unittest.mock import MagicMock import pytest -from infection_monkey.credential_collectors import SSHCredentialCollector, SSHKeypair, Username -from infection_monkey.i_puppet.credential_collection import Credentials +from common.credentials import Credentials, SSHKeypair, Username +from infection_monkey.credential_collectors import SSHCredentialCollector @pytest.fixture diff --git a/monkey/tests/unit_tests/infection_monkey/credential_store/test_aggregating_credentials_store.py b/monkey/tests/unit_tests/infection_monkey/credential_store/test_aggregating_credentials_store.py index d2c1746e4..baff7df65 100644 --- a/monkey/tests/unit_tests/infection_monkey/credential_store/test_aggregating_credentials_store.py +++ b/monkey/tests/unit_tests/infection_monkey/credential_store/test_aggregating_credentials_store.py @@ -2,9 +2,8 @@ from unittest.mock import MagicMock import pytest -from infection_monkey.credential_collectors import Password, SSHKeypair, Username +from common.credentials import Credentials, Password, SSHKeypair, Username from infection_monkey.credential_store import AggregatingCredentialsStore -from infection_monkey.i_puppet import Credentials CONTROL_CHANNEL_CREDENTIALS = { "exploit_user_list": ["Administrator", "root", "user1"], diff --git a/monkey/tests/unit_tests/infection_monkey/master/mock_puppet.py b/monkey/tests/unit_tests/infection_monkey/master/mock_puppet.py index 4d77bd0b3..624d79471 100644 --- a/monkey/tests/unit_tests/infection_monkey/master/mock_puppet.py +++ b/monkey/tests/unit_tests/infection_monkey/master/mock_puppet.py @@ -3,9 +3,8 @@ import threading from typing import Dict, Iterable, List, Sequence from common import OperatingSystems -from infection_monkey.credential_collectors import LMHash, Password, SSHKeypair, Username +from common.credentials import Credentials, LMHash, Password, SSHKeypair, Username from infection_monkey.i_puppet import ( - Credentials, ExploiterResultData, FingerprintData, IPuppet, diff --git a/monkey/tests/unit_tests/infection_monkey/telemetry/messengers/test_credentials_intercepting_telemetry_messenger.py b/monkey/tests/unit_tests/infection_monkey/telemetry/messengers/test_credentials_intercepting_telemetry_messenger.py index 7481bff34..e516baab8 100644 --- a/monkey/tests/unit_tests/infection_monkey/telemetry/messengers/test_credentials_intercepting_telemetry_messenger.py +++ b/monkey/tests/unit_tests/infection_monkey/telemetry/messengers/test_credentials_intercepting_telemetry_messenger.py @@ -1,7 +1,6 @@ from unittest.mock import MagicMock -from infection_monkey.credential_collectors import Password, SSHKeypair, Username -from infection_monkey.i_puppet import Credentials +from common.credentials import Credentials, Password, SSHKeypair, Username from infection_monkey.telemetry.credentials_telem import CredentialsTelem from infection_monkey.telemetry.messengers.credentials_intercepting_telemetry_messenger import ( CredentialsInterceptingTelemetryMessenger, diff --git a/monkey/tests/unit_tests/infection_monkey/telemetry/test_credentials_telem.py b/monkey/tests/unit_tests/infection_monkey/telemetry/test_credentials_telem.py index 13c93f60f..5fca80eff 100644 --- a/monkey/tests/unit_tests/infection_monkey/telemetry/test_credentials_telem.py +++ b/monkey/tests/unit_tests/infection_monkey/telemetry/test_credentials_telem.py @@ -2,8 +2,7 @@ import json import pytest -from infection_monkey.credential_collectors import Password, SSHKeypair, Username -from infection_monkey.i_puppet import Credentials +from common.credentials import Credentials, Password, SSHKeypair, Username from infection_monkey.telemetry.credentials_telem import CredentialsTelem USERNAME = "m0nkey" diff --git a/monkey/tests/unit_tests/monkey_island/cc/services/reporting/test_stolen_credentials.py b/monkey/tests/unit_tests/monkey_island/cc/services/reporting/test_stolen_credentials.py index 7a0e0aeca..d7c2386c9 100644 --- a/monkey/tests/unit_tests/monkey_island/cc/services/reporting/test_stolen_credentials.py +++ b/monkey/tests/unit_tests/monkey_island/cc/services/reporting/test_stolen_credentials.py @@ -1,6 +1,6 @@ import pytest -from common.common_consts.credential_component_type import CredentialComponentType +from common.credentials import CredentialComponentType from monkey_island.cc.models import Monkey, StolenCredentials from monkey_island.cc.services.reporting.stolen_credentials import ( extract_ssh_keys, diff --git a/monkey/tests/unit_tests/monkey_island/cc/services/telemetry/processing/credentials/test_credential_processing.py b/monkey/tests/unit_tests/monkey_island/cc/services/telemetry/processing/credentials/test_credential_processing.py index 5fcccc7a0..d12ba15e4 100644 --- a/monkey/tests/unit_tests/monkey_island/cc/services/telemetry/processing/credentials/test_credential_processing.py +++ b/monkey/tests/unit_tests/monkey_island/cc/services/telemetry/processing/credentials/test_credential_processing.py @@ -6,13 +6,13 @@ from tests.unit_tests.monkey_island.cc.services.telemetry.processing.credentials CREDENTIAL_TELEM_TEMPLATE, ) -from common.common_consts.credential_component_type import CredentialComponentType from common.config_value_paths import ( LM_HASH_LIST_PATH, NTLM_HASH_LIST_PATH, PASSWORD_LIST_PATH, USER_LIST_PATH, ) +from common.credentials import CredentialComponentType from monkey_island.cc.models import StolenCredentials from monkey_island.cc.services.config import ConfigService from monkey_island.cc.services.telemetry.processing.credentials.credentials_parser import ( From 33b04934aab3617f87a1f1462a91354ccc44f3e0 Mon Sep 17 00:00:00 2001 From: Mike Salvatore Date: Tue, 5 Jul 2022 13:30:55 -0400 Subject: [PATCH 2/3] Island: Use common.credentials.Credentials in ICredentialsRepository --- monkey/monkey_island/cc/repository/i_credentials_repository.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/monkey/monkey_island/cc/repository/i_credentials_repository.py b/monkey/monkey_island/cc/repository/i_credentials_repository.py index 74ab94628..42fc3898f 100644 --- a/monkey/monkey_island/cc/repository/i_credentials_repository.py +++ b/monkey/monkey_island/cc/repository/i_credentials_repository.py @@ -1,7 +1,7 @@ from abc import ABC from typing import Sequence -from monkey_island.cc.services.telemetry.processing.credentials import Credentials +from common.credentials import Credentials class ICredentialsRepository(ABC): From e4edfd8ded977272a9ed893e8b23030acebe6813 Mon Sep 17 00:00:00 2001 From: Mike Salvatore Date: Tue, 5 Jul 2022 14:41:59 -0400 Subject: [PATCH 3/3] Agent: Remove shallow i_puppet.credential_collection subpackage --- .../mimikatz_collector/mimikatz_credential_collector.py | 2 +- .../ssh_collector/ssh_credential_collector.py | 2 +- monkey/infection_monkey/i_puppet/__init__.py | 1 + .../infection_monkey/i_puppet/credential_collection/__init__.py | 1 - .../{credential_collection => }/i_credential_collector.py | 0 5 files changed, 3 insertions(+), 3 deletions(-) delete mode 100644 monkey/infection_monkey/i_puppet/credential_collection/__init__.py rename monkey/infection_monkey/i_puppet/{credential_collection => }/i_credential_collector.py (100%) diff --git a/monkey/infection_monkey/credential_collectors/mimikatz_collector/mimikatz_credential_collector.py b/monkey/infection_monkey/credential_collectors/mimikatz_collector/mimikatz_credential_collector.py index 9dc590aeb..3404479a4 100644 --- a/monkey/infection_monkey/credential_collectors/mimikatz_collector/mimikatz_credential_collector.py +++ b/monkey/infection_monkey/credential_collectors/mimikatz_collector/mimikatz_credential_collector.py @@ -2,7 +2,7 @@ import logging from typing import Sequence from common.credentials import Credentials, LMHash, NTHash, Password, Username -from infection_monkey.i_puppet.credential_collection import ICredentialCollector +from infection_monkey.i_puppet import ICredentialCollector from infection_monkey.model import USERNAME_PREFIX from . import pypykatz_handler diff --git a/monkey/infection_monkey/credential_collectors/ssh_collector/ssh_credential_collector.py b/monkey/infection_monkey/credential_collectors/ssh_collector/ssh_credential_collector.py index 35bd401f4..a5f15a637 100644 --- a/monkey/infection_monkey/credential_collectors/ssh_collector/ssh_credential_collector.py +++ b/monkey/infection_monkey/credential_collectors/ssh_collector/ssh_credential_collector.py @@ -3,7 +3,7 @@ from typing import Dict, Iterable, Sequence from common.credentials import Credentials, SSHKeypair, Username from infection_monkey.credential_collectors.ssh_collector import ssh_handler -from infection_monkey.i_puppet.credential_collection import ICredentialCollector +from infection_monkey.i_puppet import ICredentialCollector from infection_monkey.telemetry.messengers.i_telemetry_messenger import ITelemetryMessenger logger = logging.getLogger(__name__) diff --git a/monkey/infection_monkey/i_puppet/__init__.py b/monkey/infection_monkey/i_puppet/__init__.py index c4e6b5b1c..5aeb265f3 100644 --- a/monkey/infection_monkey/i_puppet/__init__.py +++ b/monkey/infection_monkey/i_puppet/__init__.py @@ -10,3 +10,4 @@ from .i_puppet import ( UnknownPluginError, ) from .i_fingerprinter import IFingerprinter +from .i_credential_collector import ICredentialCollector diff --git a/monkey/infection_monkey/i_puppet/credential_collection/__init__.py b/monkey/infection_monkey/i_puppet/credential_collection/__init__.py deleted file mode 100644 index ba2c18466..000000000 --- a/monkey/infection_monkey/i_puppet/credential_collection/__init__.py +++ /dev/null @@ -1 +0,0 @@ -from .i_credential_collector import ICredentialCollector diff --git a/monkey/infection_monkey/i_puppet/credential_collection/i_credential_collector.py b/monkey/infection_monkey/i_puppet/i_credential_collector.py similarity index 100% rename from monkey/infection_monkey/i_puppet/credential_collection/i_credential_collector.py rename to monkey/infection_monkey/i_puppet/i_credential_collector.py