forked from p15670423/monkey
Agent, Island: send network information in monkey wakeup telemetry
Network information is required for segmentation reports, that's why it gets sent in the wakeup telemetry. It could be joined with "ip_addresses", but that would require a bigger refactoring on the island side
This commit is contained in:
parent
1b484e0365
commit
1c602a3315
|
@ -13,7 +13,7 @@ import infection_monkey.tunnel as tunnel
|
||||||
from common.common_consts.api_url_consts import T1216_PBA_FILE_DOWNLOAD_PATH
|
from common.common_consts.api_url_consts import T1216_PBA_FILE_DOWNLOAD_PATH
|
||||||
from common.common_consts.timeouts import LONG_REQUEST_TIMEOUT, MEDIUM_REQUEST_TIMEOUT
|
from common.common_consts.timeouts import LONG_REQUEST_TIMEOUT, MEDIUM_REQUEST_TIMEOUT
|
||||||
from infection_monkey.config import GUID, WormConfiguration
|
from infection_monkey.config import GUID, WormConfiguration
|
||||||
from infection_monkey.network.info import local_ips
|
from infection_monkey.network.info import get_host_subnets, local_ips
|
||||||
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
|
||||||
from infection_monkey.utils import agent_process
|
from infection_monkey.utils import agent_process
|
||||||
|
@ -48,6 +48,7 @@ class ControlClient(object):
|
||||||
"guid": GUID,
|
"guid": GUID,
|
||||||
"hostname": hostname,
|
"hostname": hostname,
|
||||||
"ip_addresses": local_ips(),
|
"ip_addresses": local_ips(),
|
||||||
|
"networks": get_host_subnets(),
|
||||||
"description": " ".join(platform.uname()),
|
"description": " ".join(platform.uname()),
|
||||||
"config": WormConfiguration.as_dict(),
|
"config": WormConfiguration.as_dict(),
|
||||||
"parent": parent,
|
"parent": parent,
|
||||||
|
|
|
@ -42,6 +42,7 @@ class Monkey(Document):
|
||||||
description = StringField()
|
description = StringField()
|
||||||
hostname = StringField()
|
hostname = StringField()
|
||||||
ip_addresses = ListField(StringField())
|
ip_addresses = ListField(StringField())
|
||||||
|
networks = ListField()
|
||||||
launch_time = FloatField()
|
launch_time = FloatField()
|
||||||
keepalive = DateTimeField()
|
keepalive = DateTimeField()
|
||||||
modifytime = DateTimeField()
|
modifytime = DateTimeField()
|
||||||
|
|
|
@ -160,16 +160,11 @@ class ReportService:
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def get_monkey_subnets(monkey_guid):
|
def get_monkey_subnets(monkey_guid):
|
||||||
network_info = mongo.db.telemetry.find_one(
|
networks = Monkey.objects.get(guid=monkey_guid).networks
|
||||||
{"telem_category": "system_info", "monkey_guid": monkey_guid},
|
|
||||||
{"data.network_info.networks": 1},
|
|
||||||
)
|
|
||||||
if network_info is None or not network_info["data"]:
|
|
||||||
return []
|
|
||||||
|
|
||||||
return [
|
return [
|
||||||
ipaddress.ip_interface(str(network["addr"] + "/" + network["netmask"])).network
|
ipaddress.ip_interface(f"{network['addr']}/{network['netmask']}").network
|
||||||
for network in network_info["data"]["network_info"]["networks"]
|
for network in networks
|
||||||
]
|
]
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
|
|
Loading…
Reference in New Issue