Esempio n. 1
0
    def is_latest_report_exists():
        """
        This function checks if a monkey report was already generated and if it's the latest one.
        :return: True if report is the latest one, False if there isn't a report or its not the latest.
        """
        latest_report_doc = mongo.db.report.find_one({}, {'meta.latest_monkey_modifytime': 1})

        if latest_report_doc:
            report_latest_modifytime = latest_report_doc['meta']['latest_monkey_modifytime']
            latest_monkey_modifytime = NodeService.get_latest_modified_monkey()[0]['modifytime']
            return report_latest_modifytime == latest_monkey_modifytime

        return False
Esempio n. 2
0
    def generate_report():
        domain_issues = ReportService.get_domain_issues()
        issues = ReportService.get_issues()
        config_users = ReportService.get_config_users()
        config_passwords = ReportService.get_config_passwords()
        cross_segment_issues = ReportService.get_cross_segment_issues()
        monkey_latest_modify_time = list(
            NodeService.get_latest_modified_monkey())[0]['modifytime']

        report = \
            {
                'overview':
                    {
                        'manual_monkeys': ReportService.get_manual_monkeys(),
                        'config_users': config_users,
                        'config_passwords': config_passwords,
                        'config_exploits': ReportService.get_config_exploits(),
                        'config_ips': ReportService.get_config_ips(),
                        'config_scan': ReportService.get_config_scan(),
                        'monkey_start_time': ReportService.get_first_monkey_time().strftime("%d/%m/%Y %H:%M:%S"),
                        'monkey_duration': ReportService.get_monkey_duration(),
                        'issues': ReportService.get_issues_overview(issues, config_users, config_passwords),
                        'warnings': ReportService.get_warnings_overview(issues, cross_segment_issues),
                        'cross_segment_issues': cross_segment_issues
                    },
                'glance':
                    {
                        'scanned': ReportService.get_scanned(),
                        'exploited': ReportService.get_exploited(),
                        'stolen_creds': ReportService.get_stolen_creds(),
                        'azure_passwords': ReportService.get_azure_creds(),
                        'ssh_keys': ReportService.get_ssh_keys(),
                        'strong_users': PTHReportService.get_strong_users_on_crit_details(),
                        'pth_map': PTHReportService.get_pth_map()
                    },
                'recommendations':
                    {
                        'issues': issues,
                        'domain_issues': domain_issues
                    },
                'meta':
                    {
                        'latest_monkey_modifytime': monkey_latest_modify_time
                    }
            }
        ReportExporterManager().export(report)
        mongo.db.report.drop()
        mongo.db.report.insert_one(
            ReportService.encode_dot_char_before_mongo_insert(report))

        return report