diff --git a/monkey_island/cc/ui/src/components/pages/ReportPage.js b/monkey_island/cc/ui/src/components/pages/ReportPage.js index cea8c8d87..4e34dd3a8 100644 --- a/monkey_island/cc/ui/src/components/pages/ReportPage.js +++ b/monkey_island/cc/ui/src/components/pages/ReportPage.js @@ -3,10 +3,10 @@ import {Col} from 'react-bootstrap'; import BreachedServers from 'components/report-components/BreachedServers'; import ScannedServers from 'components/report-components/ScannedServers'; import {ReactiveGraph} from 'components/reactive-graph/ReactiveGraph'; -import {options, edgeGroupToColor} from 'components/map/MapOptions'; +import {edgeGroupToColor, options} from 'components/map/MapOptions'; import StolenPasswords from 'components/report-components/StolenPasswords'; import ScannedBreachedChart from 'components/report-components/ScannedBreachedChart'; -import CollapsibleWellComponent from "../report-components/CollapsibleWell"; +import CollapsibleWellComponent from 'components/report-components/CollapsibleWell'; class ReportPageComponent extends React.Component { @@ -338,13 +338,16 @@ class ReportPageComponent extends React.Component { } else { content = ( -
+

- Overview + Executive Summary

- The first monkey run was started on {this.state.report.overview.monkey_start_time}. After {this.state.report.overview.monkey_duration}, all monkeys finished propagation attempts. + The first monkey run was started on {this.state.report.overview.monkey_start_time}. After {this.state.report.overview.monkey_duration}, all monkeys finished + propagation attempts.

A full report of the Monkeys activities follows. @@ -358,14 +361,31 @@ class ReportPageComponent extends React.Component {

Immediate Threats

- During this simulated attack the Monkey uncovered {this.state.report.overview.issues.filter(function(x){return x===true;}).length} issues, detailed below. The security issues uncovered include: -
    - {this.state.report.overview.issues[this.Issue.WEAK_PASSWORD] ?
  • Users with weak passwords.
  • : null} - {this.state.report.overview.issues[this.Issue.STOLEN_CREDS] ?
  • Stolen passwords/hashes were used to exploit other machines.
  • : null} - {this.state.report.overview.issues[this.Issue.ELASTIC] ?
  • Elastic Search servers not patched for CVE-2015-1427.
  • : null} - {this.state.report.overview.issues[this.Issue.SAMBACRY] ?
  • Samba servers not patched for ‘SambaCry’ (CVE-2017-7494).
  • : null} - {this.state.report.overview.issues[this.Issue.SHELLSHOCK] ?
  • Machines not patched for the ‘Shellshock’ (CVE-2014-6271).
  • : null} - {this.state.report.overview.issues[this.Issue.CONFICKER] ?
  • Machines not patched for the ‘Conficker’ (MS08-067).
  • : null} + During this simulated attack the Monkey uncovered {this.state.report.overview.issues.filter(function (x) { + return x === true; + }).length} issues, detailed below. The security issues uncovered include: +
      + {this.state.report.overview.issues[this.Issue.WEAK_PASSWORD] ? +
    • Users with weak passwords.
    • : null} + {this.state.report.overview.issues[this.Issue.STOLEN_CREDS] ? +
    • Stolen passwords/hashes were used to exploit other machines.
    • : null} + {this.state.report.overview.issues[this.Issue.ELASTIC] ? +
    • Elastic Search servers not patched for CVE-2015-1427. +
    • : null} + {this.state.report.overview.issues[this.Issue.SAMBACRY] ? +
    • Samba servers not patched for ‘SambaCry’ (CVE-2017-7494).
    • : null} + {this.state.report.overview.issues[this.Issue.SHELLSHOCK] ? +
    • Machines not patched for the ‘Shellshock’ (CVE-2014-6271). +
    • : null} + {this.state.report.overview.issues[this.Issue.CONFICKER] ? +
    • Machines not patched for the ‘Conficker’ (MS08-067).
    • : null}
@@ -373,9 +393,13 @@ class ReportPageComponent extends React.Component { Security Issues The monkey uncovered the following possible set of issues: -
    - {this.state.report.overview.warnings[this.Warning.CROSS_SEGMENT] ?
  • Possible cross segment traffic. Infected machines could communicate with the Monkey Island despite crossing segment boundaries using unused ports.
  • : null} - {this.state.report.overview.warnings[this.Warning.TUNNEL] ?
  • Lack of Micro-segmentation, machines successfully tunneled monkey activity using unused ports.
  • : null} +
      + {this.state.report.overview.warnings[this.Warning.CROSS_SEGMENT] ? +
    • Possible cross segment traffic. Infected machines could communicate with the + Monkey Island despite crossing segment boundaries using unused ports.
    • : null} + {this.state.report.overview.warnings[this.Warning.TUNNEL] ? +
    • Lack of Micro-segmentation, machines successfully tunneled monkey activity + using unused ports.
    • : null}
@@ -394,33 +418,38 @@ class ReportPageComponent extends React.Component {

- The Monkey discovered {this.state.report.glance.scanned.length} machines and successfully breached {this.state.report.glance.exploited.length} of them. -
- In addition, while attempting to exploit additional hosts , security software installed in the network should have picked up the attack attempts and logged them. -
+ The Monkey discovered {this.state.report.glance.scanned.length} machines and + successfully breached {this.state.report.glance.exploited.length} of them. +
+ In addition, while attempting to exploit additional hosts , security software installed in the + network should have picked up the attack attempts and logged them. +
Detailed recommendations in the next part of the report.

- +

From the attacker's point of view, the network looks like this:

-
- +
+
- +
- +
- +
diff --git a/monkey_island/cc/ui/src/styles/App.css b/monkey_island/cc/ui/src/styles/App.css index 30ea8faa4..b221186d6 100644 --- a/monkey_island/cc/ui/src/styles/App.css +++ b/monkey_island/cc/ui/src/styles/App.css @@ -49,19 +49,10 @@ body { padding-left: 0px; } - ul.report { - list-style: disc; - padding-left: 40px; - } - li { overflow: auto; } - li.report { - overflow: visible; - } - li .number { color: #666; display: inline-block; @@ -76,11 +67,6 @@ body { margin: 0.1em 0; } - li a.report { - display: inline; - padding: 0em; - } - li a:hover { color: #000; background: #e9e9e9; @@ -378,3 +364,52 @@ body { padding: 15px; } } + + +/* Report page */ + +.report-page { + font-size: 1.2em; + border: 1px solid #fff; + padding: 2em; + -webkit-box-shadow: 1px 1px 7px -1px #ccc; + box-shadow: 1px 1px 7px -1px #ccc; +} + +.report-page h1 { + margin-top: 30px; +} + +.report-page h3 { + margin-top: 20px; +} + +.report-page h4 { + margin-top: 20px; +} + +.report-page ul { + list-style: disc; + padding-left: 40px; +} + +.report-page li { + overflow: visible; +} + +.report-page li a { + display: inline; + padding: 0em; +} + +/* Print report styling */ + +@media print { + .sidebar { + display: none; + } + + .pie-chart { + width: 100px; + } +}