forked from p34709852/monkey
Report generation algorithm
This commit is contained in:
parent
5ff7eba12f
commit
c3d717a6bf
|
@ -10,6 +10,7 @@ from monkey_island.cc.services.config import ConfigService
|
||||||
from monkey_island.cc.services.attack.attack_config import reset_config as reset_attack_config
|
from monkey_island.cc.services.attack.attack_config import reset_config as reset_attack_config
|
||||||
from monkey_island.cc.services.node import NodeService
|
from monkey_island.cc.services.node import NodeService
|
||||||
from monkey_island.cc.services.report import ReportService
|
from monkey_island.cc.services.report import ReportService
|
||||||
|
from cc.services.attack.attack_report import AttackReportService
|
||||||
from monkey_island.cc.utils import local_ip_addresses
|
from monkey_island.cc.utils import local_ip_addresses
|
||||||
from monkey_island.cc.services.post_breach_files import remove_PBA_files
|
from monkey_island.cc.services.post_breach_files import remove_PBA_files
|
||||||
|
|
||||||
|
@ -71,5 +72,7 @@ class Root(flask_restful.Resource):
|
||||||
else:
|
else:
|
||||||
if is_any_exists:
|
if is_any_exists:
|
||||||
ReportService.get_report()
|
ReportService.get_report()
|
||||||
|
AttackReportService.get_report()
|
||||||
report_done = ReportService.is_report_generated()
|
report_done = ReportService.is_report_generated()
|
||||||
|
attack_report_done = AttackReportService.is_report_generated()
|
||||||
return dict(run_server=True, run_monkey=is_any_exists, infection_done=infection_done, report_done=report_done)
|
return dict(run_server=True, run_monkey=is_any_exists, infection_done=infection_done, report_done=report_done)
|
||||||
|
|
|
@ -1,18 +1,37 @@
|
||||||
import logging
|
import logging
|
||||||
from cc.services.attack.technique_reports import T1210
|
from cc.services.attack.technique_reports import T1210
|
||||||
|
from cc.services.attack.attack_telem import get_latest_telem
|
||||||
|
from cc.database import mongo
|
||||||
|
|
||||||
__author__ = "VakarisZ"
|
__author__ = "VakarisZ"
|
||||||
|
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
TECHNIQUES = {'T1210': T1210}
|
||||||
|
|
||||||
class AttackReportService:
|
class AttackReportService:
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def get_report():
|
def generate_new_report():
|
||||||
report = {}
|
report = {'techniques': {}, 'meta': {get_latest_telem()}}
|
||||||
|
for tech_id, value in
|
||||||
report.update({'T1210': T1210.get_report_data()})
|
report.update({'T1210': T1210.get_report_data()})
|
||||||
|
report.update({''})
|
||||||
return report
|
return report
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def get_latest_report():
|
||||||
|
if AttackReportService.is_report_generated():
|
||||||
|
telem_time = get_latest_telem_time()
|
||||||
|
lates_report = mongo.db.attack_report.find_one({'name': 'new_report'})
|
||||||
|
if telem_time == lates_report['telem_time']:
|
||||||
|
return lates_report
|
||||||
|
return AttackReportService.generate_new_report()
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def is_report_generated():
|
||||||
|
generated_report = mongo.db.attack_report.find_one({})
|
||||||
|
return generated_report is not None
|
||||||
|
|
|
@ -3,6 +3,7 @@ File that contains ATT&CK telemetry storing/retrieving logic
|
||||||
"""
|
"""
|
||||||
import logging
|
import logging
|
||||||
from monkey_island.cc.database import mongo
|
from monkey_island.cc.database import mongo
|
||||||
|
from time import time
|
||||||
|
|
||||||
__author__ = "VakarisZ"
|
__author__ = "VakarisZ"
|
||||||
|
|
||||||
|
@ -17,3 +18,8 @@ def set_results(technique, data):
|
||||||
"""
|
"""
|
||||||
data.update({'technique': technique})
|
data.update({'technique': technique})
|
||||||
mongo.db.attack_results.insert(data)
|
mongo.db.attack_results.insert(data)
|
||||||
|
mongo.db.attack_results.update({'name': 'latest'}, {'name': 'latest', 'timestamp': time()}, upsert=True)
|
||||||
|
|
||||||
|
|
||||||
|
def get_latest_telem():
|
||||||
|
return mongo.db.attack_results.find({'name': 'latest'})
|
||||||
|
|
Loading…
Reference in New Issue