forked from p15670423/monkey
Attack report bugfixes
This commit is contained in:
parent
993736a973
commit
8ee7a06769
|
@ -10,4 +10,4 @@ class ScanStatus(Enum):
|
||||||
USED = 2
|
USED = 2
|
||||||
|
|
||||||
|
|
||||||
BITS_UPLOAD_STRING = "Bits job was used to upload monkey to a remote system."
|
BITS_UPLOAD_STRING = {"usage": "Bits job was used to upload monkey to a remote system."}
|
||||||
|
|
|
@ -63,7 +63,7 @@ class ElasticGroovyExploiter(WebRCE):
|
||||||
def upload_monkey(self, url, commands=None):
|
def upload_monkey(self, url, commands=None):
|
||||||
result = super(ElasticGroovyExploiter, self).upload_monkey(url, commands)
|
result = super(ElasticGroovyExploiter, self).upload_monkey(url, commands)
|
||||||
if 'windows' in self.host.os['type'] and result:
|
if 'windows' in self.host.os['type'] and result:
|
||||||
VictimHostTelem("T1197", ScanStatus.USED.value, self.host, BITS_UPLOAD_STRING)
|
VictimHostTelem("T1197", ScanStatus.USED.value, self.host, BITS_UPLOAD_STRING).send()
|
||||||
return result
|
return result
|
||||||
|
|
||||||
def get_results(self, response):
|
def get_results(self, response):
|
||||||
|
|
|
@ -16,7 +16,7 @@ class AttackTelem(object):
|
||||||
Default ATT&CK telemetry constructor
|
Default ATT&CK telemetry constructor
|
||||||
:param technique: Technique ID. E.g. T111
|
:param technique: Technique ID. E.g. T111
|
||||||
:param status: int from ScanStatus Enum
|
:param status: int from ScanStatus Enum
|
||||||
:param data: Other data relevant to the attack technique
|
:param data: Dictionary of other relevant info. E.g. {'brute_force_blocked': True}
|
||||||
"""
|
"""
|
||||||
self.technique = technique
|
self.technique = technique
|
||||||
self.result = status
|
self.result = status
|
||||||
|
|
|
@ -13,4 +13,6 @@ MESSAGES = {
|
||||||
|
|
||||||
def get_report_data():
|
def get_report_data():
|
||||||
data = get_tech_base_data(TECHNIQUE, MESSAGES)
|
data = get_tech_base_data(TECHNIQUE, MESSAGES)
|
||||||
|
|
||||||
|
data.update()
|
||||||
return data
|
return data
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
from monkey_island.cc.services.attack.technique_reports.technique_service import *
|
from monkey_island.cc.services.attack.technique_reports.technique_service import *
|
||||||
from cc.services.report import ReportService
|
from cc.services.report import ReportService
|
||||||
|
from common.utils.attack_utils import ScanStatus
|
||||||
|
|
||||||
__author__ = "VakarisZ"
|
__author__ = "VakarisZ"
|
||||||
|
|
||||||
|
@ -12,8 +13,18 @@ MESSAGES = {
|
||||||
|
|
||||||
|
|
||||||
def get_report_data():
|
def get_report_data():
|
||||||
data = get_tech_base_data(TECHNIQUE, MESSAGES)
|
data = {}
|
||||||
data.update({'scanned_machines': ReportService.get_scanned()})
|
scanned_machines = ReportService.get_scanned()
|
||||||
data.update({'exploited_machines': ReportService.get_exploited()})
|
exploited_machines = ReportService.get_exploited()
|
||||||
|
data.update({'message': MESSAGES['unscanned'], 'status': ScanStatus.UNSCANNED.name})
|
||||||
|
for machine in scanned_machines:
|
||||||
|
if machine['services']:
|
||||||
|
data.update({'message': MESSAGES['scanned'], 'status': ScanStatus.SCANNED.name})
|
||||||
|
for machine in exploited_machines:
|
||||||
|
if machine['exploits']:
|
||||||
|
data.update({'message': MESSAGES['used'], 'status': ScanStatus.USED.name})
|
||||||
|
data.update({'technique': TECHNIQUE, 'title': technique_title(TECHNIQUE)})
|
||||||
|
data.update({'scanned_machines': scanned_machines})
|
||||||
|
data.update({'exploited_machines': exploited_machines})
|
||||||
return data
|
return data
|
||||||
|
|
||||||
|
|
|
@ -3,7 +3,7 @@ import '../../styles/Collapse.scss'
|
||||||
import {Link} from "react-router-dom";
|
import {Link} from "react-router-dom";
|
||||||
|
|
||||||
let renderArray = function(val) {
|
let renderArray = function(val) {
|
||||||
return <span>{val.map(x => <span key={x.toString()}>{x} </span>)}</span>;
|
return <span>{val.map(x => <span key={x.toString()}> {x} </span>)}</span>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -48,9 +48,9 @@ class T1210 extends React.Component {
|
||||||
return (
|
return (
|
||||||
<div>
|
<div>
|
||||||
<div>{this.props.data.message}</div>
|
<div>{this.props.data.message}</div>
|
||||||
<div>Found services: </div>
|
{this.props.data.scanned_machines.length > 0 ? <div>Found services: </div> : ''}
|
||||||
{this.renderScannedMachines(this.props.data.scanned_machines)}
|
{this.renderScannedMachines(this.props.data.scanned_machines)}
|
||||||
<div>Successful exploiters:</div>
|
{this.props.data.exploited_machines.length > 0 ? <div>Successful exploiters:</div> : ''}
|
||||||
{this.renderExploitedMachines(this.props.data.exploited_machines)}
|
{this.renderExploitedMachines(this.props.data.exploited_machines)}
|
||||||
<div className="attack-report footer-text">
|
<div className="attack-report footer-text">
|
||||||
To get more info about scanned and exploited machines view <Link to="/report">standard report.</Link>
|
To get more info about scanned and exploited machines view <Link to="/report">standard report.</Link>
|
||||||
|
|
|
@ -128,18 +128,18 @@ class AttackReportPageComponent extends AuthComponent {
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
let content;
|
let content;
|
||||||
console.log(this.state.report);
|
if (! this.state.runStarted)
|
||||||
if (this.state.report === false){
|
{
|
||||||
|
content =
|
||||||
|
<p className="alert alert-warning">
|
||||||
|
<i className="glyphicon glyphicon-warning-sign" style={{'marginRight': '5px'}}/>
|
||||||
|
You have to run a monkey before generating a report!
|
||||||
|
</p>;
|
||||||
|
} else if (this.state.report === false){
|
||||||
content = (<h1>Generating Report...</h1>);
|
content = (<h1>Generating Report...</h1>);
|
||||||
} else if (Object.keys(this.state.report).length === 0) {
|
} else if (Object.keys(this.state.report).length === 0) {
|
||||||
if (this.state.runStarted) {
|
if (this.state.runStarted) {
|
||||||
content = (<h1>No techniques were scanned</h1>);
|
content = (<h1>No techniques were scanned</h1>);
|
||||||
} else {
|
|
||||||
content =
|
|
||||||
<p className="alert alert-warning">
|
|
||||||
<i className="glyphicon glyphicon-warning-sign" style={{'marginRight': '5px'}}/>
|
|
||||||
You have to run a monkey before generating a report!
|
|
||||||
</p>;
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
content = this.generateReportContent();
|
content = this.generateReportContent();
|
||||||
|
|
Loading…
Reference in New Issue