예제 #1
0
def get_monkey_exploited() -> List[MonkeyExploitation]:
    exploited_nodes_monkeys_launched = [
        NodeService.get_displayed_node_by_id(monkey["_id"], True)
        for monkey in mongo.db.monkey.find({}, {"_id": 1})
        if not NodeService.get_monkey_manual_run(NodeService.get_monkey_by_id(monkey["_id"]))
    ]

    # The node got exploited, but no monkeys got launched.
    # For example the exploited machine was too old.
    exploited_nodes_monkeys_failed = [
        NodeService.get_displayed_node_by_id(node["_id"], True)
        for node in mongo.db.node.find({"exploited": True}, {"_id": 1})
    ]

    exploited = exploited_nodes_monkeys_launched + exploited_nodes_monkeys_failed

    exploited = [
        MonkeyExploitation(
            label=exploited_node["label"],
            ip_addresses=exploited_node["ip_addresses"],
            domain_name=exploited_node["domain_name"],
            exploits=get_exploits_used_on_node(exploited_node),
        )
        for exploited_node in exploited
    ]

    logger.info("Exploited nodes generated for reporting")

    return exploited
예제 #2
0
    def get_exploited():
        exploited_with_monkeys = \
            [NodeService.get_displayed_node_by_id(monkey['_id'], True) for monkey in
             mongo.db.monkey.find({}, {'_id': 1}) if
             not NodeService.get_monkey_manual_run(NodeService.get_monkey_by_id(monkey['_id']))]

        exploited_without_monkeys = [
            NodeService.get_displayed_node_by_id(node['_id'], True)
            for node in mongo.db.node.find({'exploited': True}, {'_id': 1})
        ]

        exploited = exploited_with_monkeys + exploited_without_monkeys

        exploited = [{
            'label':
            exploited_node['label'],
            'ip_addresses':
            exploited_node['ip_addresses'],
            'domain_name':
            exploited_node['domain_name'],
            'exploits':
            list(
                set([
                    ReportService.EXPLOIT_DISPLAY_DICT[exploit['exploiter']]
                    for exploit in exploited_node['exploits']
                    if exploit['result']
                ]))
        } for exploited_node in exploited]

        logger.info('Exploited nodes generated for reporting')

        return exploited
예제 #3
0
    def get_scanned():

        formatted_nodes = []

        nodes = \
            [NodeService.get_displayed_node_by_id(node['_id'], True) for node in mongo.db.node.find({}, {'_id': 1})] \
            + [NodeService.get_displayed_node_by_id(monkey['_id'], True) for monkey in
               mongo.db.monkey.find({}, {'_id': 1})]
        for node in nodes:
            formatted_nodes.append({
                'label':
                node['label'],
                'ip_addresses':
                node['ip_addresses'],
                'accessible_from_nodes':
                list((x['hostname'] for x in (
                    NodeService.get_displayed_node_by_id(edge['from'], True)
                    for edge in EdgeService.get_displayed_edges_by_to(
                        node['id'], True)))),
                'services':
                node['services'],
                'domain_name':
                node['domain_name']
            })

        logger.info('Scanned nodes generated for reporting')

        return formatted_nodes
예제 #4
0
 def get_all_displayed_nodes():
     nodes_without_monkeys = [
         NodeService.get_displayed_node_by_id(node['_id'], True)
         for node in mongo.db.node.find({}, {'_id': 1})
     ]
     nodes_with_monkeys = [
         NodeService.get_displayed_node_by_id(monkey['_id'], True)
         for monkey in mongo.db.monkey.find({}, {'_id': 1})
     ]
     nodes = nodes_without_monkeys + nodes_with_monkeys
     return nodes
예제 #5
0
    def get(self):
        node_id = request.args.get("id")
        if node_id:
            return NodeService.get_displayed_node_by_id(node_id)

        return {}