forked from p15670423/monkey
Add documentation
This commit is contained in:
parent
b83ca0536f
commit
c91aee3129
|
@ -40,6 +40,12 @@ class NetworkScanner(object):
|
||||||
LOG.info("Base local networks to scan are: %r", self._ranges)
|
LOG.info("Base local networks to scan are: %r", self._ranges)
|
||||||
|
|
||||||
def _get_inaccessible_subnets_ips(self):
|
def _get_inaccessible_subnets_ips(self):
|
||||||
|
"""
|
||||||
|
For each of the machine's IPs, checks if it's in one of the subnet groups specified in the
|
||||||
|
'inaccessible_subnet_groups' config value. If so, all other subnets in the same group shouldn't be accessible.
|
||||||
|
All these subnets are returned.
|
||||||
|
:return: A list of subnets that shouldn't be accessible from the machine the monkey is running on.
|
||||||
|
"""
|
||||||
subnets_to_scan = []
|
subnets_to_scan = []
|
||||||
for subnet_group in WormConfiguration.inaccessible_subnet_groups:
|
for subnet_group in WormConfiguration.inaccessible_subnet_groups:
|
||||||
for subnet_str in subnet_group:
|
for subnet_str in subnet_group:
|
||||||
|
|
|
@ -313,7 +313,14 @@ class ReportService:
|
||||||
return issues
|
return issues
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def get_cross_segment_ip(ip_addresses, source_subnet, target_subnet):
|
def get_ip_in_src_and_not_in_dst(ip_addresses, source_subnet, target_subnet):
|
||||||
|
"""
|
||||||
|
Finds an IP address in ip_addresses which is in source_subnet but not in target_subnet.
|
||||||
|
:param ip_addresses: List of IP addresses to test.
|
||||||
|
:param source_subnet: Subnet to want an IP to not be in.
|
||||||
|
:param target_subnet: Subnet we want an IP to be in.
|
||||||
|
:return:
|
||||||
|
"""
|
||||||
for ip_address in ip_addresses:
|
for ip_address in ip_addresses:
|
||||||
if target_subnet.is_in_range(ip_address):
|
if target_subnet.is_in_range(ip_address):
|
||||||
return None
|
return None
|
||||||
|
@ -324,6 +331,13 @@ class ReportService:
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def get_cross_segment_issues_per_subnet_pair(scans, source_subnet, target_subnet):
|
def get_cross_segment_issues_per_subnet_pair(scans, source_subnet, target_subnet):
|
||||||
|
"""
|
||||||
|
Gets list of cross segment issues from source_subnet to target_subnet.
|
||||||
|
:param scans: List of all scan telemetry entries. Must have monkey_guid, ip_addr and services.
|
||||||
|
:param source_subnet: The subnet which shouldn't be able to access target_subnet.
|
||||||
|
:param target_subnet: The subnet which shouldn't be accessible from source_subnet.
|
||||||
|
:return:
|
||||||
|
"""
|
||||||
if source_subnet == target_subnet:
|
if source_subnet == target_subnet:
|
||||||
return []
|
return []
|
||||||
source_subnet_range = NetworkRange.get_range_obj(source_subnet)
|
source_subnet_range = NetworkRange.get_range_obj(source_subnet)
|
||||||
|
@ -335,8 +349,10 @@ class ReportService:
|
||||||
target_ip = scan['data']['machine']['ip_addr']
|
target_ip = scan['data']['machine']['ip_addr']
|
||||||
if target_subnet_range.is_in_range(unicode(target_ip)):
|
if target_subnet_range.is_in_range(unicode(target_ip)):
|
||||||
monkey = NodeService.get_monkey_by_guid(scan['monkey_guid'])
|
monkey = NodeService.get_monkey_by_guid(scan['monkey_guid'])
|
||||||
cross_segment_ip = ReportService.get_cross_segment_ip(monkey['ip_addresses'], source_subnet_range,
|
cross_segment_ip = ReportService.get_ip_in_src_and_not_in_dst(monkey['ip_addresses'],
|
||||||
target_subnet_range)
|
source_subnet_range,
|
||||||
|
target_subnet_range)
|
||||||
|
|
||||||
if cross_segment_ip is not None:
|
if cross_segment_ip is not None:
|
||||||
cross_segment_issues.append(
|
cross_segment_issues.append(
|
||||||
{
|
{
|
||||||
|
@ -350,6 +366,12 @@ class ReportService:
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def get_cross_segment_issues_per_subnet_group(scans, subnet_group):
|
def get_cross_segment_issues_per_subnet_group(scans, subnet_group):
|
||||||
|
"""
|
||||||
|
Gets list of cross segment issues within given subnet_group.
|
||||||
|
:param scans: List of all scan telemetry entries. Must have monkey_guid, ip_addr and services.
|
||||||
|
:param subnet_group: List of subnets which shouldn't be accessible from each other.
|
||||||
|
:return: Cross segment issues regarding the subnets in the group.
|
||||||
|
"""
|
||||||
cross_segment_issues = []
|
cross_segment_issues = []
|
||||||
|
|
||||||
for subnet_pair in itertools.product(subnet_group, subnet_group):
|
for subnet_pair in itertools.product(subnet_group, subnet_group):
|
||||||
|
|
Loading…
Reference in New Issue