Skip to content

Circular import when importing PBA before exploiters #476

@danielguardicore

Description

@danielguardicore

Describe the bug
We have a dependency on import ordering.

The following stack trace example
from infection_monkey.post_breach.pba import PBA

ImportError Traceback (most recent call last)
in ()
----> 1 from infection_monkey.post_breach.pba import PBA

C:\w\monkey\monkey\monkey\infection_monkey\post_breach\pba.py in ()
3
4 from common.utils.attack_utils import ScanStatus
----> 5 from infection_monkey.telemetry.post_breach_telem import PostBreachTelem
6 from infection_monkey.utils.environment import is_windows_os
7 from infection_monkey.config import WormConfiguration

C:\w\monkey\monkey\monkey\infection_monkey\telemetry\post_breach_telem.py in ()
1 import socket
2
----> 3 from infection_monkey.telemetry.base_telem import BaseTelem
4
5 author = "itay.mizeretz"

C:\w\monkey\monkey\monkey\infection_monkey\telemetry\base_telem.py in ()
3 import logging
4
----> 5 from infection_monkey.control import ControlClient
6
7 logger = logging.getLogger(name)

C:\w\monkey\monkey\monkey\infection_monkey\control.py in ()
8
9 import infection_monkey.monkeyfs as monkeyfs
---> 10 import infection_monkey.tunnel as tunnel
11 from infection_monkey.config import WormConfiguration, GUID
12 from infection_monkey.network.info import local_ips, check_internet_access, TIMEOUT

C:\w\monkey\monkey\monkey\infection_monkey\tunnel.py in ()
9 from infection_monkey.network.info import local_ips, get_free_tcp_port
10 from infection_monkey.network.tools import check_tcp_port
---> 11 from infection_monkey.transport.base import get_last_serve_time
12 from infection_monkey.exploit.tools.helpers import get_interface_to_target
13

C:\w\monkey\monkey\monkey\infection_monkey\transport_init_.py in ()
----> 1 from infection_monkey.transport.http import HTTPServer, LockedHTTPServer
2
3
4 author = 'hoffer'

C:\w\monkey\monkey\monkey\infection_monkey\transport\http.py in ()
10 import infection_monkey.monkeyfs as monkeyfs
11 from infection_monkey.transport.base import TransportProxyBase, update_last_serve_time
---> 12 from infection_monkey.exploit.tools.helpers import get_interface_to_target
13
14 author = 'hoffer'

C:\w\monkey\monkey\monkey\infection_monkey\exploit_init_.py in ()
76
77
---> 78 from infection_monkey.exploit.win_ms08_067 import Ms08_067_Exploiter
79 from infection_monkey.exploit.wmiexec import WmiExploiter
80 from infection_monkey.exploit.smbexec import SmbExploiter

C:\w\monkey\monkey\monkey\infection_monkey\exploit\win_ms08_067.py in ()
16
17 from infection_monkey.exploit.tools.helpers import get_target_monkey, get_monkey_depth, build_monkey_commandline
---> 18 from infection_monkey.exploit.tools.smb_tools import SmbTools
19 from infection_monkey.model import DROPPER_CMDLINE_WINDOWS, MONKEY_CMDLINE_WINDOWS
20 from infection_monkey.network.smbfinger import SMBFinger

C:\w\monkey\monkey\monkey\infection_monkey\exploit\tools\smb_tools.py in ()
10 import infection_monkey.monkeyfs as monkeyfs
11 from common.utils.attack_utils import ScanStatus
---> 12 from infection_monkey.telemetry.attack.t1105_telem import T1105Telem
13 from infection_monkey.exploit.tools.helpers import get_interface_to_target
14

C:\w\monkey\monkey\monkey\infection_monkey\telemetry\attack\t1105_telem.py in ()
----> 1 from infection_monkey.telemetry.attack.victim_host_telem import AttackTelem
2
3
4 class T1105Telem(AttackTelem):
5 def init(self, status, src, dst, filename):

C:\w\monkey\monkey\monkey\infection_monkey\telemetry\attack\victim_host_telem.py in ()
----> 1 from infection_monkey.telemetry.attack.attack_telem import AttackTelem
2
3 author = "VakarisZ"
4
5

C:\w\monkey\monkey\monkey\infection_monkey\telemetry\attack\attack_telem.py in ()
----> 1 from infection_monkey.telemetry.base_telem import BaseTelem
2
3 author = "VakarisZ"
4
5

ImportError: cannot import name 'BaseTelem'

Metadata

Metadata

Labels

BugAn error, flaw, misbehavior or failure in the Monkey or Monkey Island.

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions