示例#1
0
 async def handle_heartbeat(self, paw, platform, server, group, host, username, executors, architecture, location,
                            pid, ppid, sleep, privilege, c2):
     """
     Accept all components of an agent profile and save a new agent or register an updated heartbeat.
     :param paw:
     :param platform:
     :param server:
     :param group:
     :param host:
     :param username:
     :param executors:
     :param architecture:
     :param location:
     :param pid:
     :param ppid:
     :param sleep:
     :param privilege:
     :return: the agent object from explode
     """
     self.log.debug('HEARTBEAT (%s) (%s)' % (c2, paw))
     agent = Agent(paw=paw, host=host, username=username, platform=platform, server=server, location=location,
                   executors=executors, architecture=architecture, pid=pid, ppid=ppid, privilege=privilege, c2=c2)
     if await self.data_svc.locate('agents', dict(paw=paw)):
         return await self.data_svc.store(agent)
     agent.sleep_min = agent.sleep_max = sleep
     agent.group = group
     agent.trusted = True
     return await self.data_svc.store(agent)
示例#2
0
    async def handle_heartbeat(self, paw, platform, server, group, host, username, executors, architecture, location,
                               pid, ppid, sleep, privilege, c2, exe_name):
        """
        Accept all components of an agent profile and save a new agent or register an updated heartbeat.

        :param paw:
        :param platform:
        :param server:
        :param group:
        :param host:
        :param username:
        :param executors:
        :param architecture:
        :param location:
        :param pid:
        :param ppid:
        :param sleep:
        :param privilege:
        :return: the agent object from explode
        """
        agent = Agent(paw=paw, host=host, username=username, platform=platform, server=server, location=location,
                      executors=executors, architecture=architecture, pid=pid, ppid=ppid, privilege=privilege, c2=c2,
                      exe_name=exe_name)
        if await self.get_service('data_svc').locate('agents', dict(paw=paw)):
            new_agent = await self.get_service('data_svc').store(agent)
            await self._add_agent_to_operation(new_agent)
            return new_agent
        agent.sleep_min = agent.sleep_max = sleep
        agent.group = group
        agent.trusted = True
        new_agent = await self.get_service('data_svc').store(agent)
        await self._add_agent_to_operation(new_agent)
        return new_agent
示例#3
0
 def test_store_existing_agent(self, data_svc):
     agent = Agent(paw='123', sleep_min=2, group='red', sleep_max=8, watchdog=0, executors=['cmd', 'test'],
                   platform='windows', trusted=True, pending_contact='HTML')
     agent.store(data_svc.ram)
     assert len(data_svc.ram['agents']) == 1
     agent.group = "blue"
     agent.trusted = False
     agent.sleep_min = 1
     agent.sleep_max = 5
     agent.watchdog = 1
     agent.pending_contact = "HTTP"
     stored_agent = agent.store(data_svc.ram)
     assert len(data_svc.ram['agents']) == 1
     assert stored_agent.schema.dump(stored_agent) == agent.schema.dump(agent)