forked from p34709852/monkey
Fixed CR comments
This commit is contained in:
parent
acf309a163
commit
3325aea17d
|
@ -16,5 +16,5 @@ from config import Config
|
|||
from creds import Creds
|
||||
from monkey_ttl import MonkeyTtl
|
||||
from pba_results import PbaResults
|
||||
from c2_info import C2Info
|
||||
from command_control_channel import CommandControlChannel
|
||||
from monkey import Monkey
|
||||
|
|
|
@ -1,6 +0,0 @@
|
|||
from mongoengine import EmbeddedDocument, StringField
|
||||
|
||||
|
||||
class C2Info(EmbeddedDocument):
|
||||
src = StringField()
|
||||
dst = StringField()
|
|
@ -0,0 +1,11 @@
|
|||
from mongoengine import EmbeddedDocument, StringField
|
||||
|
||||
|
||||
class CommandControlChannel(EmbeddedDocument):
|
||||
"""
|
||||
This value describes command and control channel monkey used in communication
|
||||
src - Monkey Island's IP
|
||||
dst - Monkey's IP (in case of a proxy chain this is the IP of the last monkey)
|
||||
"""
|
||||
src = StringField()
|
||||
dst = StringField()
|
|
@ -6,6 +6,7 @@ from mongoengine import Document, StringField, ListField, BooleanField, Embedded
|
|||
DateTimeField
|
||||
|
||||
from monkey_island.cc.models.monkey_ttl import MonkeyTtl
|
||||
from monkey_island.cc.models.command_control_channel import CommandControlChannel
|
||||
|
||||
|
||||
class Monkey(Document):
|
||||
|
@ -33,7 +34,7 @@ class Monkey(Document):
|
|||
pba_results = ListField()
|
||||
ttl_ref = ReferenceField(MonkeyTtl)
|
||||
tunnel = ReferenceField("self")
|
||||
c2_info = EmbeddedDocumentField('C2Info')
|
||||
command_control_channel = EmbeddedDocumentField(CommandControlChannel)
|
||||
|
||||
# LOGIC
|
||||
@staticmethod
|
||||
|
|
|
@ -48,7 +48,7 @@ class Telemetry(flask_restful.Resource):
|
|||
def post(self):
|
||||
telemetry_json = json.loads(request.data)
|
||||
telemetry_json['timestamp'] = datetime.now()
|
||||
telemetry_json['c2_channel'] = {'src': request.remote_addr, 'dst': request.host}
|
||||
telemetry_json['command_control_channel'] = {'src': request.remote_addr, 'dst': request.host}
|
||||
|
||||
monkey = NodeService.get_monkey_by_guid(telemetry_json['monkey_guid'])
|
||||
|
||||
|
@ -111,7 +111,7 @@ class Telemetry(flask_restful.Resource):
|
|||
@staticmethod
|
||||
def process_state_telemetry(telemetry_json):
|
||||
monkey = NodeService.get_monkey_by_guid(telemetry_json['monkey_guid'])
|
||||
NodeService.add_communication_info(monkey, telemetry_json['c2_channel'])
|
||||
NodeService.add_communication_info(monkey, telemetry_json['command_control_channel'])
|
||||
if telemetry_json['data']['done']:
|
||||
NodeService.set_monkey_dead(monkey, True)
|
||||
else:
|
||||
|
|
|
@ -15,13 +15,13 @@ class T1041(AttackTechnique):
|
|||
@staticmethod
|
||||
def get_report_data():
|
||||
monkeys = list(Monkey.objects())
|
||||
info = [{'src': monkey['c2_info']['src'],
|
||||
'dst': monkey['c2_info']['dst']}
|
||||
for monkey in monkeys if monkey['c2_info']]
|
||||
info = [{'src': monkey['command_control_channel']['src'],
|
||||
'dst': monkey['command_control_channel']['dst']}
|
||||
for monkey in monkeys if monkey['command_control_channel']]
|
||||
if info:
|
||||
status = ScanStatus.USED.value
|
||||
else:
|
||||
status = ScanStatus.UNSCANNED.value
|
||||
data = T1041.get_base_data_by_status(status)
|
||||
data.update({'c2_info': info})
|
||||
data.update({'command_control_channel': info})
|
||||
return data
|
||||
|
|
|
@ -250,7 +250,7 @@ class NodeService:
|
|||
@staticmethod
|
||||
def add_communication_info(monkey, info):
|
||||
mongo.db.monkey.update({"guid": monkey["guid"]},
|
||||
{"$set": {'c2_info': info}},
|
||||
{"$set": {'command_control_channel': info}},
|
||||
upsert=False)
|
||||
|
||||
@staticmethod
|
||||
|
|
Loading…
Reference in New Issue