From 33345e8460ad3164d3f1a79b405013afea16db51 Mon Sep 17 00:00:00 2001 From: Itay Mizeretz Date: Wed, 14 Feb 2018 19:03:29 +0200 Subject: [PATCH 01/19] Rename chaos_monkey to infection_monkey --- README.md | 4 ++-- chaos_monkey/main.py | 4 ++-- chaos_monkey/monkey.py | 2 +- chaos_monkey/readme.txt | 16 ++++++++-------- chaos_monkey/test/config__test.py | 2 +- monkey_island/readme.txt | 2 +- 6 files changed, 15 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index dfe501470..f1fc47676 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ The Infection Monkey is an open source security tool for testing a data center's The Infection Monkey is comprised of two parts: * Monkey - A tool which infects other machines and propagates to them -* Monkey Island - A C&C server with a dedicated UI to visualize the Chaos Monkey's progress inside the data center +* Monkey Island - A C&C server with a dedicated UI to visualize the Infection Monkey's progress inside the data center To read more about the Monkey, visit http://infectionmonkey.com @@ -43,7 +43,7 @@ Check out the [Setup](https://github.com/guardicore/monkey/wiki/setup) page in t Building the Monkey from source ------------------------------- If you want to build the monkey from source, see [Setup](https://github.com/guardicore/monkey/wiki/setup) -and follow the instructions at the readme files under [chaos_monkey](chaos_monkey) and [monkey_island](monkey_island). +and follow the instructions at the readme files under [infection_monkey](infection_monkey) and [monkey_island](monkey_island). License diff --git a/chaos_monkey/main.py b/chaos_monkey/main.py index c53232b2c..ea8ee769a 100644 --- a/chaos_monkey/main.py +++ b/chaos_monkey/main.py @@ -11,7 +11,7 @@ import traceback from config import WormConfiguration, EXTERNAL_CONFIG_FILE from dropper import MonkeyDrops from model import MONKEY_ARG, DROPPER_ARG -from monkey import ChaosMonkey +from monkey import InfectionMonkey if __name__ == "__main__": sys.path.insert(0, os.path.dirname(os.path.abspath(__file__))) @@ -80,7 +80,7 @@ def main(): if MONKEY_ARG == monkey_mode: log_path = os.path.expandvars( WormConfiguration.monkey_log_path_windows) if sys.platform == "win32" else WormConfiguration.monkey_log_path_linux - monkey_cls = ChaosMonkey + monkey_cls = InfectionMonkey elif DROPPER_ARG == monkey_mode: log_path = os.path.expandvars( WormConfiguration.dropper_log_path_windows) if sys.platform == "win32" else WormConfiguration.dropper_log_path_linux diff --git a/chaos_monkey/monkey.py b/chaos_monkey/monkey.py index 79012dc39..22be2cf46 100644 --- a/chaos_monkey/monkey.py +++ b/chaos_monkey/monkey.py @@ -19,7 +19,7 @@ __author__ = 'itamar' LOG = logging.getLogger(__name__) -class ChaosMonkey(object): +class InfectionMonkey(object): def __init__(self, args): self._keep_running = False self._exploited_machines = set() diff --git a/chaos_monkey/readme.txt b/chaos_monkey/readme.txt index bdf267f60..67c4033d9 100644 --- a/chaos_monkey/readme.txt +++ b/chaos_monkey/readme.txt @@ -28,13 +28,13 @@ The monkey is composed of three separate parts. 64bit: http://www.microsoft.com/en-us/download/details.aspx?id=13523 6. Download the dependent python packages using pip install -r requirements.txt -7. Download and extract UPX binary to [source-path]\monkey\chaos_monkey\bin\upx.exe: +7. Download and extract UPX binary to [source-path]\monkey\infection_monkey\bin\upx.exe: https://github.com/upx/upx/releases/download/v3.94/upx394w.zip 8. Build/Download Sambacry and Mimikatz binaries a. Build/Download according to sections at the end of this readme. - b. Place the binaries under [code location]\chaos_monkey\bin + b. Place the binaries under [code location]\infection_monkey\bin 9. To build the final exe: - cd [code location]/chaos_monkey + cd [code location]/infection_monkey build_windows.bat output is placed under dist\monkey.exe @@ -46,13 +46,13 @@ Tested on Ubuntu 16.04 and 17.04. sudo apt-get update sudo apt-get install python-pip python-dev libffi-dev upx libssl-dev libc++1 Install the python packages listed in requirements.txt using pip - cd [code location]/chaos_monkey + cd [code location]/infection_monkey pip install -r requirements.txt 2. Build Sambacry binaries a. Build/Download according to sections at the end of this readme. - b. Place the binaries under [code location]\chaos_monkey\bin + b. Place the binaries under [code location]\infection_monkey\bin 3. To build, run in terminal: - cd [code location]/chaos_monkey + cd [code location]/infection_monkey chmod +x build_linux.sh ./build_linux.sh output is placed under dist/monkey @@ -63,11 +63,11 @@ Sambacry requires two standalone binaries to execute remotely. 1. Install gcc-multilib if it's not installed sudo apt-get install gcc-multilib 2. Build the binaries - cd [code location]/chaos_monkey/monkey_utils/sambacry_monkey_runner + cd [code location]/infection_monkey/monkey_utils/sambacry_monkey_runner ./build.sh -- Mimikatz -- Mimikatz is required for the Monkey to be able to steal credentials on Windows. It's possible to either compile from sources (requires Visual Studio 2013 and up) or download the binaries from https://github.com/guardicore/mimikatz/releases/tag/1.0.0 -Download both 32 and 64 bit DLLs and place them under [code location]\chaos_monkey\bin \ No newline at end of file +Download both 32 and 64 bit DLLs and place them under [code location]\infection_monkey\bin \ No newline at end of file diff --git a/chaos_monkey/test/config__test.py b/chaos_monkey/test/config__test.py index fccde2f0d..accdd5a49 100644 --- a/chaos_monkey/test/config__test.py +++ b/chaos_monkey/test/config__test.py @@ -1,5 +1,5 @@ # -*- coding: UTF-8 -*- -# NOTE: Launch all tests with `nosetests` command from chaos_monkey dir. +# NOTE: Launch all tests with `nosetests` command from infection_monkey dir. import json import unittest diff --git a/monkey_island/readme.txt b/monkey_island/readme.txt index 2feaaa1ab..42d29b2f8 100644 --- a/monkey_island/readme.txt +++ b/monkey_island/readme.txt @@ -18,7 +18,7 @@ How to set C&C server: 5.1. Download and install from: https://go.microsoft.com/fwlink/?LinkId=746572 6. Generate SSL Certificate 6.1. run create_certificate.bat when your current working directory is monkey_island -7. Create the monkey_island\cc\binaries folder and put chaos monkey binaries inside +7. Create the monkey_island\cc\binaries folder and put Infection Monkey binaries inside monkey-linux-64 - monkey binary for linux 64bit monkey-linux-32 - monkey binary for linux 32bit monkey-windows-32.exe - monkey binary for windows 32bit From 1390524d8dc37cf72200dce3c3950a6affdc20d6 Mon Sep 17 00:00:00 2001 From: Daniel Goldberg Date: Thu, 15 Feb 2018 15:01:36 +0200 Subject: [PATCH 02/19] update images --- .github/Security-overview.png | Bin 0 -> 156891 bytes .github/map-full.png | Bin 82368 -> 81357 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 .github/Security-overview.png diff --git a/.github/Security-overview.png b/.github/Security-overview.png new file mode 100644 index 0000000000000000000000000000000000000000..9f5fc70474c45f2e8f619b2541c2ac32cda08e0a GIT binary patch literal 156891 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 lZR0z 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 literal 0 HcmV?d00001 diff --git a/.github/map-full.png b/.github/map-full.png index 5416aa8fb698f2b5964cf49f3ef93730220fc3a7..faa1b7832fc816c6d8c73e3442b10faa5c460a7b 100644 GIT binary patch literal 81357 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
>>4i0)ogRFO1 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 K)7d94V*d+1dZ_gP From c827ddea718c1015977cf02fd9c9bec41a82b211 Mon Sep 17 00:00:00 2001 From: Daniel Goldberg Date: Thu, 15 Feb 2018 15:09:54 +0200 Subject: [PATCH 03/19] Include a report image in the README --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index dfe501470..f8fb4e817 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,9 @@ Welcome to the Infection Monkey! The Infection Monkey is an open source security tool for testing a data center's resiliency to perimeter breaches and internal server infection. The Monkey uses various methods to self propagate across a data center and reports success to a centralized Command and Control(C&C) server. -![Infection Monkey map](.github/map-full.png) + + + The Infection Monkey is comprised of two parts: * Monkey - A tool which infects other machines and propagates to them From 3ea46099750934209a26f029e7a18a57ba3922a6 Mon Sep 17 00:00:00 2001 From: Daniel Goldberg Date: Thu, 15 Feb 2018 15:36:19 +0200 Subject: [PATCH 04/19] Remove C&C from all textual and code mentions --- README.md | 12 ++++++------ chaos_monkey/control.py | 2 +- monkey_island/cc/main.py | 2 +- monkey_island/cc/services/config.py | 2 +- monkey_island/cc/ui/src/components/Main.js | 2 +- .../cc/ui/src/components/pages/ReportPage.js | 2 +- .../cc/ui/src/components/pages/RunMonkeyPage.js | 2 +- .../cc/ui/src/components/pages/RunServerPage.js | 4 ++-- monkey_island/cc/ui/src/index.html | 2 +- monkey_island/deb-package/DEBIAN/control | 2 +- monkey_island/readme.txt | 2 +- 11 files changed, 17 insertions(+), 17 deletions(-) diff --git a/README.md b/README.md index f59de5094..b48030204 100644 --- a/README.md +++ b/README.md @@ -6,11 +6,11 @@ Infection Monkey Welcome to the Infection Monkey! -The Infection Monkey is an open source security tool for testing a data center's resiliency to perimeter breaches and internal server infection. The Monkey uses various methods to self propagate across a data center and reports success to a centralized Command and Control(C&C) server. +The Infection Monkey is an open source security tool for testing a data center's resiliency to perimeter breaches and internal server infection. The Monkey uses various methods to self propagate across a data center and reports success to a centralized Monkey Island Command and Control server. The Infection Monkey is comprised of two parts: * Chaos Monkey - A tool which infects other machines and propagates to them -* Monkey Island - A C&C server with a dedicated UI to visualize the Chaos Monkey's progress inside the data center +* Monkey Island - A dedicated UI to visualize the Chaos Monkey's progress inside the data center To read more about the Monkey, visit http://infectionmonkey.com @@ -22,7 +22,7 @@ The Infection Monkey uses the following techniques and exploits to propagate to * Multiple propagation techniques: * Predefined passwords * Common logical exploits - * Password stealing using mimikatz + * Password stealing using Mimikatz * Multiple exploit methods: * SSH * SMB @@ -39,15 +39,15 @@ Getting Started ### Requirements -The C&C Server has been tested on Ubuntu 14.04,15.04 and 16.04. -The Monkey itself has been tested on Windows XP, 7, 8.1 and 10. The Linux build has been tested on Ubuntu server (multiple versions). +The Monkey Island server has been tested on Ubuntu 14.04,15.04 and 16.04 and Windows Server 2012. +The Monkey itself has been tested on Windows XP, 7, 8.1 and 10. The Linux build has been tested on Ubuntu server and Debian (multiple versions). ### Installation For off-the-shelf use, download a Debian package from our website and follow the guide [written in our blog](https://www.guardicore.com/2016/07/infection-monkey-loose-2/). Warning! The Debian package will uninstall the python library 'bson' because of an issue with pymongo. You can reinstall it later, but monkey island will probably not work. -To manually set up and the C&C server follow the instructions on [Monkey Island readme](monkey_island/readme.txt). If you wish to compile the binaries yourself, follow the instructions under Building the Monkey from Source. +To manually set up and the Monkey Island server follow the instructions on [Monkey Island readme](monkey_island/readme.txt). If you wish to compile the binaries yourself, follow the instructions under Building the Monkey from Source. ### Start Infecting diff --git a/chaos_monkey/control.py b/chaos_monkey/control.py index b4f2769cd..e7fb4cebb 100644 --- a/chaos_monkey/control.py +++ b/chaos_monkey/control.py @@ -25,7 +25,7 @@ class ControlClient(object): @staticmethod def wakeup(parent=None, default_tunnel=None, has_internet_access=None): - LOG.debug("Trying to wake up with C&C servers list: %r" % WormConfiguration.command_servers) + LOG.debug("Trying to wake up with Monkey Island servers list: %r" % WormConfiguration.command_servers) if parent or default_tunnel: LOG.debug("parent: %s, default_tunnel: %s" % (parent, default_tunnel)) hostname = gethostname() diff --git a/monkey_island/cc/main.py b/monkey_island/cc/main.py index bb1ed9eaf..e2f97cde5 100644 --- a/monkey_island/cc/main.py +++ b/monkey_island/cc/main.py @@ -33,6 +33,6 @@ if __name__ == '__main__': ssl_options={'certfile': os.environ.get('SERVER_CRT', 'server.crt'), 'keyfile': os.environ.get('SERVER_KEY', 'server.key')}) http_server.listen(ISLAND_PORT) - print('Monkey Island C&C Server is running on https://{}:{}'.format(local_ip_addresses()[0], ISLAND_PORT)) + print('Monkey Island Server is running on https://{}:{}'.format(local_ip_addresses()[0], ISLAND_PORT)) IOLoop.instance().start() diff --git a/monkey_island/cc/services/config.py b/monkey_island/cc/services/config.py index ea755312f..cc3e65e3a 100644 --- a/monkey_island/cc/services/config.py +++ b/monkey_island/cc/services/config.py @@ -528,7 +528,7 @@ SCHEMA = { } }, "cnc": { - "title": "C&C", + "title": "Command and Control", "type": "object", "properties": { "servers": { diff --git a/monkey_island/cc/ui/src/components/Main.js b/monkey_island/cc/ui/src/components/Main.js index 881c3a2ec..ffd318527 100644 --- a/monkey_island/cc/ui/src/components/Main.js +++ b/monkey_island/cc/ui/src/components/Main.js @@ -77,7 +77,7 @@ class AppComponent extends React.Component {
  • 1. - Run C&C Server + Run Monkey Island Server { this.state.completedSteps.run_server ? : ''} diff --git a/monkey_island/cc/ui/src/components/pages/ReportPage.js b/monkey_island/cc/ui/src/components/pages/ReportPage.js index 440000596..92c3b2db6 100644 --- a/monkey_island/cc/ui/src/components/pages/ReportPage.js +++ b/monkey_island/cc/ui/src/components/pages/ReportPage.js @@ -610,7 +610,7 @@ class ReportPageComponent extends React.Component { The network can probably be segmented. A monkey instance on {issue.machine} in the networks {this.generateInfoBadges(issue.networks)} - could directly access the Monkey Island C&C server in the + could directly access the Monkey Island server in the networks {this.generateInfoBadges(issue.server_networks)}.
  • diff --git a/monkey_island/cc/ui/src/components/pages/RunMonkeyPage.js b/monkey_island/cc/ui/src/components/pages/RunMonkeyPage.js index 5574a73ba..8d692eddd 100644 --- a/monkey_island/cc/ui/src/components/pages/RunMonkeyPage.js +++ b/monkey_island/cc/ui/src/components/pages/RunMonkeyPage.js @@ -146,7 +146,7 @@ class RunMonkeyPageComponent extends React.Component { className="btn btn-default btn-lg center-block" disabled={this.state.runningOnIslandState !== 'not_running'} > - Run on C&C Server + Run on Monkey Island Server { this.renderIconByState(this.state.runningOnIslandState) } { diff --git a/monkey_island/cc/ui/src/components/pages/RunServerPage.js b/monkey_island/cc/ui/src/components/pages/RunServerPage.js index 5143f24fc..fe8e8f611 100644 --- a/monkey_island/cc/ui/src/components/pages/RunServerPage.js +++ b/monkey_island/cc/ui/src/components/pages/RunServerPage.js @@ -10,14 +10,14 @@ class RunServerPageComponent extends React.Component { render() { return ( -

    1. Monkey Island C&C Server

    +

    1. Monkey Island Server

    Congrats! You have successfully set up the Monkey Island server. 👏 👏

    The Infection Monkey is an open source security tool for testing a data center's resiliency to perimeter breaches and internal server infections. The Monkey uses various methods to propagate across a data - center and reports to this Command and Control (C&C) server. + center and reports to this Monkey Island Command and Control server.

    To read more about the Monkey, visit infectionmonkey.com diff --git a/monkey_island/cc/ui/src/index.html b/monkey_island/cc/ui/src/index.html index e75b183ca..86a05dd28 100644 --- a/monkey_island/cc/ui/src/index.html +++ b/monkey_island/cc/ui/src/index.html @@ -2,7 +2,7 @@ - Infection Monkey C&C + Infection Monkey Island Server diff --git a/monkey_island/deb-package/DEBIAN/control b/monkey_island/deb-package/DEBIAN/control index ecbd75cc6..2426feecb 100644 --- a/monkey_island/deb-package/DEBIAN/control +++ b/monkey_island/deb-package/DEBIAN/control @@ -4,5 +4,5 @@ Maintainer: Guardicore Homepage: http://www.guardicore.com Priority: optional Version: 1.0 -Description: Guardicore Infection Monkey Island (C&C) installation package +Description: Guardicore Infection Monkey Island installation package Depends: openssl, python-pip diff --git a/monkey_island/readme.txt b/monkey_island/readme.txt index 2feaaa1ab..d426de548 100644 --- a/monkey_island/readme.txt +++ b/monkey_island/readme.txt @@ -1,4 +1,4 @@ -How to set C&C server: +How to set up the Monkey Island server: ---------------- On Windows ----------------: 1. Create folder "bin" under monkey_island From de4e4b9ea170c1b06987650a679f4c52f18ee9de Mon Sep 17 00:00:00 2001 From: Itay Mizeretz Date: Mon, 19 Feb 2018 11:35:34 +0200 Subject: [PATCH 05/19] rename chaos_monkey folder to infection_monkey --- {chaos_monkey => infection_monkey}/build_linux.sh | 0 .../build_windows.bat | 0 {chaos_monkey => infection_monkey}/config.py | 0 {chaos_monkey => infection_monkey}/control.py | 0 {chaos_monkey => infection_monkey}/dropper.py | 0 {chaos_monkey => infection_monkey}/example.conf | 0 .../exploit/__init__.py | 0 .../exploit/elasticgroovy.py | 0 .../exploit/rdpgrinder.py | 0 .../exploit/sambacry.py | 0 .../exploit/shellshock.py | 0 .../exploit/shellshock_resources.py | 0 .../exploit/smbexec.py | 0 .../exploit/sshexec.py | 0 {chaos_monkey => infection_monkey}/exploit/tools.py | 0 .../exploit/win_ms08_067.py | 0 .../exploit/wmiexec.py | 0 {chaos_monkey => infection_monkey}/main.py | 0 .../model/__init__.py | 0 {chaos_monkey => infection_monkey}/model/host.py | 0 .../monkey-linux.spec | 0 {chaos_monkey => infection_monkey}/monkey.ico | Bin {chaos_monkey => infection_monkey}/monkey.py | 0 {chaos_monkey => infection_monkey}/monkey.spec | 0 .../monkey_utils/sambacry_monkey_runner/build.sh | 0 .../sambacry_monkey_runner/sc_monkey_runner.c | 0 .../sambacry_monkey_runner/sc_monkey_runner.h | 0 {chaos_monkey => infection_monkey}/monkeyfs.py | 0 .../network/__init__.py | 0 .../network/elasticfinger.py | 0 .../network/firewall.py | 0 .../network/httpfinger.py | 0 {chaos_monkey => infection_monkey}/network/info.py | 0 .../network/mysqlfinger.py | 0 .../network/network_scanner.py | 0 .../network/ping_scanner.py | 0 {chaos_monkey => infection_monkey}/network/range.py | 0 .../network/smbfinger.py | 0 .../network/sshfinger.py | 0 .../network/tcp_scanner.py | 0 {chaos_monkey => infection_monkey}/network/tools.py | 0 {chaos_monkey => infection_monkey}/readme.txt | 0 {chaos_monkey => infection_monkey}/requirements.txt | 0 .../system_info/__init__.py | 0 .../system_info/linux_info_collector.py | 0 .../system_info/mimikatz_collector.py | 0 .../system_info/windows_info_collector.py | 0 .../system_singleton.py | 0 {chaos_monkey => infection_monkey}/test/__init__.py | 0 .../test/config__test.py | 0 .../transport/__init__.py | 0 .../transport/base.py | 0 {chaos_monkey => infection_monkey}/transport/ftp.py | 0 .../transport/http.py | 0 {chaos_monkey => infection_monkey}/transport/tcp.py | 0 {chaos_monkey => infection_monkey}/tunnel.py | 0 56 files changed, 0 insertions(+), 0 deletions(-) rename {chaos_monkey => infection_monkey}/build_linux.sh (100%) rename {chaos_monkey => infection_monkey}/build_windows.bat (100%) rename {chaos_monkey => infection_monkey}/config.py (100%) rename {chaos_monkey => infection_monkey}/control.py (100%) rename {chaos_monkey => infection_monkey}/dropper.py (100%) rename {chaos_monkey => infection_monkey}/example.conf (100%) rename {chaos_monkey => infection_monkey}/exploit/__init__.py (100%) rename {chaos_monkey => infection_monkey}/exploit/elasticgroovy.py (100%) rename {chaos_monkey => infection_monkey}/exploit/rdpgrinder.py (100%) rename {chaos_monkey => infection_monkey}/exploit/sambacry.py (100%) rename {chaos_monkey => infection_monkey}/exploit/shellshock.py (100%) rename {chaos_monkey => infection_monkey}/exploit/shellshock_resources.py (100%) rename {chaos_monkey => infection_monkey}/exploit/smbexec.py (100%) rename {chaos_monkey => infection_monkey}/exploit/sshexec.py (100%) rename {chaos_monkey => infection_monkey}/exploit/tools.py (100%) rename {chaos_monkey => infection_monkey}/exploit/win_ms08_067.py (100%) rename {chaos_monkey => infection_monkey}/exploit/wmiexec.py (100%) rename {chaos_monkey => infection_monkey}/main.py (100%) rename {chaos_monkey => infection_monkey}/model/__init__.py (100%) rename {chaos_monkey => infection_monkey}/model/host.py (100%) rename {chaos_monkey => infection_monkey}/monkey-linux.spec (100%) rename {chaos_monkey => infection_monkey}/monkey.ico (100%) rename {chaos_monkey => infection_monkey}/monkey.py (100%) rename {chaos_monkey => infection_monkey}/monkey.spec (100%) rename {chaos_monkey => infection_monkey}/monkey_utils/sambacry_monkey_runner/build.sh (100%) rename {chaos_monkey => infection_monkey}/monkey_utils/sambacry_monkey_runner/sc_monkey_runner.c (100%) rename {chaos_monkey => infection_monkey}/monkey_utils/sambacry_monkey_runner/sc_monkey_runner.h (100%) rename {chaos_monkey => infection_monkey}/monkeyfs.py (100%) rename {chaos_monkey => infection_monkey}/network/__init__.py (100%) rename {chaos_monkey => infection_monkey}/network/elasticfinger.py (100%) rename {chaos_monkey => infection_monkey}/network/firewall.py (100%) rename {chaos_monkey => infection_monkey}/network/httpfinger.py (100%) rename {chaos_monkey => infection_monkey}/network/info.py (100%) rename {chaos_monkey => infection_monkey}/network/mysqlfinger.py (100%) rename {chaos_monkey => infection_monkey}/network/network_scanner.py (100%) rename {chaos_monkey => infection_monkey}/network/ping_scanner.py (100%) rename {chaos_monkey => infection_monkey}/network/range.py (100%) rename {chaos_monkey => infection_monkey}/network/smbfinger.py (100%) rename {chaos_monkey => infection_monkey}/network/sshfinger.py (100%) rename {chaos_monkey => infection_monkey}/network/tcp_scanner.py (100%) rename {chaos_monkey => infection_monkey}/network/tools.py (100%) rename {chaos_monkey => infection_monkey}/readme.txt (100%) rename {chaos_monkey => infection_monkey}/requirements.txt (100%) rename {chaos_monkey => infection_monkey}/system_info/__init__.py (100%) rename {chaos_monkey => infection_monkey}/system_info/linux_info_collector.py (100%) rename {chaos_monkey => infection_monkey}/system_info/mimikatz_collector.py (100%) rename {chaos_monkey => infection_monkey}/system_info/windows_info_collector.py (100%) rename {chaos_monkey => infection_monkey}/system_singleton.py (100%) rename {chaos_monkey => infection_monkey}/test/__init__.py (100%) rename {chaos_monkey => infection_monkey}/test/config__test.py (100%) rename {chaos_monkey => infection_monkey}/transport/__init__.py (100%) rename {chaos_monkey => infection_monkey}/transport/base.py (100%) rename {chaos_monkey => infection_monkey}/transport/ftp.py (100%) rename {chaos_monkey => infection_monkey}/transport/http.py (100%) rename {chaos_monkey => infection_monkey}/transport/tcp.py (100%) rename {chaos_monkey => infection_monkey}/tunnel.py (100%) diff --git a/chaos_monkey/build_linux.sh b/infection_monkey/build_linux.sh similarity index 100% rename from chaos_monkey/build_linux.sh rename to infection_monkey/build_linux.sh diff --git a/chaos_monkey/build_windows.bat b/infection_monkey/build_windows.bat similarity index 100% rename from chaos_monkey/build_windows.bat rename to infection_monkey/build_windows.bat diff --git a/chaos_monkey/config.py b/infection_monkey/config.py similarity index 100% rename from chaos_monkey/config.py rename to infection_monkey/config.py diff --git a/chaos_monkey/control.py b/infection_monkey/control.py similarity index 100% rename from chaos_monkey/control.py rename to infection_monkey/control.py diff --git a/chaos_monkey/dropper.py b/infection_monkey/dropper.py similarity index 100% rename from chaos_monkey/dropper.py rename to infection_monkey/dropper.py diff --git a/chaos_monkey/example.conf b/infection_monkey/example.conf similarity index 100% rename from chaos_monkey/example.conf rename to infection_monkey/example.conf diff --git a/chaos_monkey/exploit/__init__.py b/infection_monkey/exploit/__init__.py similarity index 100% rename from chaos_monkey/exploit/__init__.py rename to infection_monkey/exploit/__init__.py diff --git a/chaos_monkey/exploit/elasticgroovy.py b/infection_monkey/exploit/elasticgroovy.py similarity index 100% rename from chaos_monkey/exploit/elasticgroovy.py rename to infection_monkey/exploit/elasticgroovy.py diff --git a/chaos_monkey/exploit/rdpgrinder.py b/infection_monkey/exploit/rdpgrinder.py similarity index 100% rename from chaos_monkey/exploit/rdpgrinder.py rename to infection_monkey/exploit/rdpgrinder.py diff --git a/chaos_monkey/exploit/sambacry.py b/infection_monkey/exploit/sambacry.py similarity index 100% rename from chaos_monkey/exploit/sambacry.py rename to infection_monkey/exploit/sambacry.py diff --git a/chaos_monkey/exploit/shellshock.py b/infection_monkey/exploit/shellshock.py similarity index 100% rename from chaos_monkey/exploit/shellshock.py rename to infection_monkey/exploit/shellshock.py diff --git a/chaos_monkey/exploit/shellshock_resources.py b/infection_monkey/exploit/shellshock_resources.py similarity index 100% rename from chaos_monkey/exploit/shellshock_resources.py rename to infection_monkey/exploit/shellshock_resources.py diff --git a/chaos_monkey/exploit/smbexec.py b/infection_monkey/exploit/smbexec.py similarity index 100% rename from chaos_monkey/exploit/smbexec.py rename to infection_monkey/exploit/smbexec.py diff --git a/chaos_monkey/exploit/sshexec.py b/infection_monkey/exploit/sshexec.py similarity index 100% rename from chaos_monkey/exploit/sshexec.py rename to infection_monkey/exploit/sshexec.py diff --git a/chaos_monkey/exploit/tools.py b/infection_monkey/exploit/tools.py similarity index 100% rename from chaos_monkey/exploit/tools.py rename to infection_monkey/exploit/tools.py diff --git a/chaos_monkey/exploit/win_ms08_067.py b/infection_monkey/exploit/win_ms08_067.py similarity index 100% rename from chaos_monkey/exploit/win_ms08_067.py rename to infection_monkey/exploit/win_ms08_067.py diff --git a/chaos_monkey/exploit/wmiexec.py b/infection_monkey/exploit/wmiexec.py similarity index 100% rename from chaos_monkey/exploit/wmiexec.py rename to infection_monkey/exploit/wmiexec.py diff --git a/chaos_monkey/main.py b/infection_monkey/main.py similarity index 100% rename from chaos_monkey/main.py rename to infection_monkey/main.py diff --git a/chaos_monkey/model/__init__.py b/infection_monkey/model/__init__.py similarity index 100% rename from chaos_monkey/model/__init__.py rename to infection_monkey/model/__init__.py diff --git a/chaos_monkey/model/host.py b/infection_monkey/model/host.py similarity index 100% rename from chaos_monkey/model/host.py rename to infection_monkey/model/host.py diff --git a/chaos_monkey/monkey-linux.spec b/infection_monkey/monkey-linux.spec similarity index 100% rename from chaos_monkey/monkey-linux.spec rename to infection_monkey/monkey-linux.spec diff --git a/chaos_monkey/monkey.ico b/infection_monkey/monkey.ico similarity index 100% rename from chaos_monkey/monkey.ico rename to infection_monkey/monkey.ico diff --git a/chaos_monkey/monkey.py b/infection_monkey/monkey.py similarity index 100% rename from chaos_monkey/monkey.py rename to infection_monkey/monkey.py diff --git a/chaos_monkey/monkey.spec b/infection_monkey/monkey.spec similarity index 100% rename from chaos_monkey/monkey.spec rename to infection_monkey/monkey.spec diff --git a/chaos_monkey/monkey_utils/sambacry_monkey_runner/build.sh b/infection_monkey/monkey_utils/sambacry_monkey_runner/build.sh similarity index 100% rename from chaos_monkey/monkey_utils/sambacry_monkey_runner/build.sh rename to infection_monkey/monkey_utils/sambacry_monkey_runner/build.sh diff --git a/chaos_monkey/monkey_utils/sambacry_monkey_runner/sc_monkey_runner.c b/infection_monkey/monkey_utils/sambacry_monkey_runner/sc_monkey_runner.c similarity index 100% rename from chaos_monkey/monkey_utils/sambacry_monkey_runner/sc_monkey_runner.c rename to infection_monkey/monkey_utils/sambacry_monkey_runner/sc_monkey_runner.c diff --git a/chaos_monkey/monkey_utils/sambacry_monkey_runner/sc_monkey_runner.h b/infection_monkey/monkey_utils/sambacry_monkey_runner/sc_monkey_runner.h similarity index 100% rename from chaos_monkey/monkey_utils/sambacry_monkey_runner/sc_monkey_runner.h rename to infection_monkey/monkey_utils/sambacry_monkey_runner/sc_monkey_runner.h diff --git a/chaos_monkey/monkeyfs.py b/infection_monkey/monkeyfs.py similarity index 100% rename from chaos_monkey/monkeyfs.py rename to infection_monkey/monkeyfs.py diff --git a/chaos_monkey/network/__init__.py b/infection_monkey/network/__init__.py similarity index 100% rename from chaos_monkey/network/__init__.py rename to infection_monkey/network/__init__.py diff --git a/chaos_monkey/network/elasticfinger.py b/infection_monkey/network/elasticfinger.py similarity index 100% rename from chaos_monkey/network/elasticfinger.py rename to infection_monkey/network/elasticfinger.py diff --git a/chaos_monkey/network/firewall.py b/infection_monkey/network/firewall.py similarity index 100% rename from chaos_monkey/network/firewall.py rename to infection_monkey/network/firewall.py diff --git a/chaos_monkey/network/httpfinger.py b/infection_monkey/network/httpfinger.py similarity index 100% rename from chaos_monkey/network/httpfinger.py rename to infection_monkey/network/httpfinger.py diff --git a/chaos_monkey/network/info.py b/infection_monkey/network/info.py similarity index 100% rename from chaos_monkey/network/info.py rename to infection_monkey/network/info.py diff --git a/chaos_monkey/network/mysqlfinger.py b/infection_monkey/network/mysqlfinger.py similarity index 100% rename from chaos_monkey/network/mysqlfinger.py rename to infection_monkey/network/mysqlfinger.py diff --git a/chaos_monkey/network/network_scanner.py b/infection_monkey/network/network_scanner.py similarity index 100% rename from chaos_monkey/network/network_scanner.py rename to infection_monkey/network/network_scanner.py diff --git a/chaos_monkey/network/ping_scanner.py b/infection_monkey/network/ping_scanner.py similarity index 100% rename from chaos_monkey/network/ping_scanner.py rename to infection_monkey/network/ping_scanner.py diff --git a/chaos_monkey/network/range.py b/infection_monkey/network/range.py similarity index 100% rename from chaos_monkey/network/range.py rename to infection_monkey/network/range.py diff --git a/chaos_monkey/network/smbfinger.py b/infection_monkey/network/smbfinger.py similarity index 100% rename from chaos_monkey/network/smbfinger.py rename to infection_monkey/network/smbfinger.py diff --git a/chaos_monkey/network/sshfinger.py b/infection_monkey/network/sshfinger.py similarity index 100% rename from chaos_monkey/network/sshfinger.py rename to infection_monkey/network/sshfinger.py diff --git a/chaos_monkey/network/tcp_scanner.py b/infection_monkey/network/tcp_scanner.py similarity index 100% rename from chaos_monkey/network/tcp_scanner.py rename to infection_monkey/network/tcp_scanner.py diff --git a/chaos_monkey/network/tools.py b/infection_monkey/network/tools.py similarity index 100% rename from chaos_monkey/network/tools.py rename to infection_monkey/network/tools.py diff --git a/chaos_monkey/readme.txt b/infection_monkey/readme.txt similarity index 100% rename from chaos_monkey/readme.txt rename to infection_monkey/readme.txt diff --git a/chaos_monkey/requirements.txt b/infection_monkey/requirements.txt similarity index 100% rename from chaos_monkey/requirements.txt rename to infection_monkey/requirements.txt diff --git a/chaos_monkey/system_info/__init__.py b/infection_monkey/system_info/__init__.py similarity index 100% rename from chaos_monkey/system_info/__init__.py rename to infection_monkey/system_info/__init__.py diff --git a/chaos_monkey/system_info/linux_info_collector.py b/infection_monkey/system_info/linux_info_collector.py similarity index 100% rename from chaos_monkey/system_info/linux_info_collector.py rename to infection_monkey/system_info/linux_info_collector.py diff --git a/chaos_monkey/system_info/mimikatz_collector.py b/infection_monkey/system_info/mimikatz_collector.py similarity index 100% rename from chaos_monkey/system_info/mimikatz_collector.py rename to infection_monkey/system_info/mimikatz_collector.py diff --git a/chaos_monkey/system_info/windows_info_collector.py b/infection_monkey/system_info/windows_info_collector.py similarity index 100% rename from chaos_monkey/system_info/windows_info_collector.py rename to infection_monkey/system_info/windows_info_collector.py diff --git a/chaos_monkey/system_singleton.py b/infection_monkey/system_singleton.py similarity index 100% rename from chaos_monkey/system_singleton.py rename to infection_monkey/system_singleton.py diff --git a/chaos_monkey/test/__init__.py b/infection_monkey/test/__init__.py similarity index 100% rename from chaos_monkey/test/__init__.py rename to infection_monkey/test/__init__.py diff --git a/chaos_monkey/test/config__test.py b/infection_monkey/test/config__test.py similarity index 100% rename from chaos_monkey/test/config__test.py rename to infection_monkey/test/config__test.py diff --git a/chaos_monkey/transport/__init__.py b/infection_monkey/transport/__init__.py similarity index 100% rename from chaos_monkey/transport/__init__.py rename to infection_monkey/transport/__init__.py diff --git a/chaos_monkey/transport/base.py b/infection_monkey/transport/base.py similarity index 100% rename from chaos_monkey/transport/base.py rename to infection_monkey/transport/base.py diff --git a/chaos_monkey/transport/ftp.py b/infection_monkey/transport/ftp.py similarity index 100% rename from chaos_monkey/transport/ftp.py rename to infection_monkey/transport/ftp.py diff --git a/chaos_monkey/transport/http.py b/infection_monkey/transport/http.py similarity index 100% rename from chaos_monkey/transport/http.py rename to infection_monkey/transport/http.py diff --git a/chaos_monkey/transport/tcp.py b/infection_monkey/transport/tcp.py similarity index 100% rename from chaos_monkey/transport/tcp.py rename to infection_monkey/transport/tcp.py diff --git a/chaos_monkey/tunnel.py b/infection_monkey/tunnel.py similarity index 100% rename from chaos_monkey/tunnel.py rename to infection_monkey/tunnel.py From 92b02650df9b872de882a2cb6a2ac3e4ae1e6a8c Mon Sep 17 00:00:00 2001 From: Daniel Goldberg Date: Mon, 19 Feb 2018 14:19:25 +0200 Subject: [PATCH 06/19] Update PULL_REQUEST_TEMPLATE.md Added request to add sample result --- .github/PULL_REQUEST_TEMPLATE.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 1c84f4c45..00c0f3c86 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -4,6 +4,8 @@ * [ ] Have you added an explanation of what your changes do and why you'd like to include them? * [ ] Have you successfully tested your changes locally? +* Example screenshot/log transcript of the feature working + ## Changes - - From 4bb569dd897cb54e4d23390d307b0d863827296b Mon Sep 17 00:00:00 2001 From: Itay Mizeretz Date: Thu, 22 Feb 2018 10:33:37 +0200 Subject: [PATCH 07/19] Add JWT authentication to backend --- monkey_island/cc/app.py | 20 +++++-- monkey_island/cc/auth.py | 54 +++++++++++++++++++ monkey_island/cc/island_config.py | 4 ++ .../monkey_island_pip_requirements.txt | 1 + monkey_island/requirements.txt | 1 + 5 files changed, 75 insertions(+), 5 deletions(-) create mode 100644 monkey_island/cc/auth.py diff --git a/monkey_island/cc/app.py b/monkey_island/cc/app.py index 9c85f6230..a5601ba74 100644 --- a/monkey_island/cc/app.py +++ b/monkey_island/cc/app.py @@ -1,22 +1,26 @@ +import os from datetime import datetime + import bson -from bson.json_util import dumps -from flask import Flask, send_from_directory, redirect, make_response import flask_restful +from bson.json_util import dumps +from flask import Flask, send_from_directory, make_response from werkzeug.exceptions import NotFound +from cc.auth import init_jwt from cc.database import mongo +from cc.island_config import AUTH_EXPIRATION_TIME from cc.resources.client_run import ClientRun -from cc.resources.monkey import Monkey +from cc.resources.edge import Edge from cc.resources.local_run import LocalRun -from cc.resources.telemetry import Telemetry +from cc.resources.monkey import Monkey from cc.resources.monkey_configuration import MonkeyConfiguration from cc.resources.monkey_download import MonkeyDownload from cc.resources.netmap import NetMap -from cc.resources.edge import Edge from cc.resources.node import Node from cc.resources.report import Report from cc.resources.root import Root +from cc.resources.telemetry import Telemetry from cc.resources.telemetry_feed import TelemetryFeed from cc.services.config import ConfigService @@ -70,6 +74,12 @@ def init_app(mongo_url): api.representations = {'application/json': output_json} app.config['MONGO_URI'] = mongo_url + + app.config['SECRET_KEY'] = os.urandom(32) + app.config['JWT_AUTH_URL_RULE'] = '/api/auth' + app.config['JWT_EXPIRATION_DELTA'] = AUTH_EXPIRATION_TIME + + init_jwt(app) mongo.init_app(app) with app.app_context(): diff --git a/monkey_island/cc/auth.py b/monkey_island/cc/auth.py new file mode 100644 index 000000000..510a741ad --- /dev/null +++ b/monkey_island/cc/auth.py @@ -0,0 +1,54 @@ +from functools import wraps + +import flask_jwt +from flask_jwt import JWT +from werkzeug.security import safe_str_cmp + +from cc.island_config import AUTH_ENABLED + +__author__ = 'itay.mizeretz' + + +class User(object): + def __init__(self, id, username, password): + self.id = id + self.username = username + self.password = password + + def __str__(self): + return "User(id='%s')" % self.id + + +users = [ + User(1, 'monkey', 'infection') +] +username_table = {u.username: u for u in users} +userid_table = {u.id: u for u in users} + + +def authenticate(username, password): + user = username_table.get(username, None) + if user and safe_str_cmp(user.password.encode('utf-8'), password.encode('utf-8')): + return user + + +def identity(payload): + user_id = payload['identity'] + return userid_table.get(user_id, None) + + +def init_jwt(app): + if AUTH_ENABLED: + JWT(app, authenticate, identity) + + +def jwt_required(realm=None): + if AUTH_ENABLED: + return flask_jwt.jwt_required(realm) + else: + def wrapper(fn): + @wraps(fn) + def decorator(*args, **kwargs): + return fn(*args, **kwargs) + return decorator + return wrapper diff --git a/monkey_island/cc/island_config.py b/monkey_island/cc/island_config.py index 0a8f33bac..87fe97263 100644 --- a/monkey_island/cc/island_config.py +++ b/monkey_island/cc/island_config.py @@ -1,5 +1,9 @@ +from datetime import timedelta + __author__ = 'itay.mizeretz' ISLAND_PORT = 5000 DEFAULT_MONGO_URL = "mongodb://localhost:27017/monkeyisland" DEBUG_SERVER = False +AUTH_ENABLED = True +AUTH_EXPIRATION_TIME = timedelta(hours=1) diff --git a/monkey_island/deb-package/monkey_island_pip_requirements.txt b/monkey_island/deb-package/monkey_island_pip_requirements.txt index 404aad8b0..4b4e9d523 100644 --- a/monkey_island/deb-package/monkey_island_pip_requirements.txt +++ b/monkey_island/deb-package/monkey_island_pip_requirements.txt @@ -8,6 +8,7 @@ click flask Flask-Pymongo Flask-Restful +Flask-JWT jsonschema netifaces ipaddress diff --git a/monkey_island/requirements.txt b/monkey_island/requirements.txt index 9d8bfbfb8..6aea32b84 100644 --- a/monkey_island/requirements.txt +++ b/monkey_island/requirements.txt @@ -8,6 +8,7 @@ click flask Flask-Pymongo Flask-Restful +Flask-JWT jsonschema netifaces ipaddress From e02d282c03bf8944c60788522093f0d5921e76a6 Mon Sep 17 00:00:00 2001 From: Itay Mizeretz Date: Thu, 22 Feb 2018 10:35:31 +0200 Subject: [PATCH 08/19] Add AuthService --- monkey_island/cc/ui/package.json | 1 + .../cc/ui/src/components/AuthComponent.js | 12 +++ .../cc/ui/src/services/AuthService.js | 84 +++++++++++++++++++ 3 files changed, 97 insertions(+) create mode 100644 monkey_island/cc/ui/src/components/AuthComponent.js create mode 100644 monkey_island/cc/ui/src/services/AuthService.js diff --git a/monkey_island/cc/ui/package.json b/monkey_island/cc/ui/package.json index 5ee2e5389..e8fb04eaf 100644 --- a/monkey_island/cc/ui/package.json +++ b/monkey_island/cc/ui/package.json @@ -65,6 +65,7 @@ "core-js": "^2.5.1", "fetch": "^1.1.0", "js-file-download": "^0.4.1", + "jwt-decode": "^2.2.0", "normalize.css": "^4.0.0", "prop-types": "^15.5.10", "rc-progress": "^2.2.5", diff --git a/monkey_island/cc/ui/src/components/AuthComponent.js b/monkey_island/cc/ui/src/components/AuthComponent.js new file mode 100644 index 000000000..428c3272a --- /dev/null +++ b/monkey_island/cc/ui/src/components/AuthComponent.js @@ -0,0 +1,12 @@ +import React from 'react'; +import AuthService from '../services/AuthService'; + +class AuthComponent extends React.Component { + constructor(props) { + super(props); + this.auth = new AuthService(); + this.authFetch = this.auth.authFetch; + } +} + +export default AuthComponent; diff --git a/monkey_island/cc/ui/src/services/AuthService.js b/monkey_island/cc/ui/src/services/AuthService.js new file mode 100644 index 000000000..36e352ed4 --- /dev/null +++ b/monkey_island/cc/ui/src/services/AuthService.js @@ -0,0 +1,84 @@ +import decode from 'jwt-decode'; + +export default class AuthService { + AUTH_ENABLED = true; + + login = (username, password) => { + if (this.AUTH_ENABLED) { + return this._login(username, password); + } else { + return {}; + } + }; + + authFetch = (url, options) => { + if (this.AUTH_ENABLED) { + return this._authFetch(url, options); + } else { + return fetch(url, options); + } + }; + + _login = (username, password) => { + return this._authFetch('/api/auth', { + method: 'POST', + body: JSON.stringify({ + username, + password + }) + }).then(response => response.json()) + .then(res => { + this._setToken(res['access_token']); + }) + }; + + _authFetch = (url, options) => { + const headers = { + 'Accept': 'application/json', + 'Content-Type': 'application/json' + }; + + if (this.loggedIn()) { + headers['Authorization'] = 'JWT ' + this._getToken(); + } + + return fetch(url, { + headers, + ...options + }); + + }; + + loggedIn() { + if (!this.AUTH_ENABLED) { + return true; + } + const token = this._getToken(); + return (token && !this._isTokenExpired(token)); + } + + logout() { + if (this.AUTH_ENABLED) { + localStorage.removeItem('jwt'); + } + } + + _isTokenExpired(token) { + try { + return decode(token)['exp'] < Date.now() / 1000; + } + catch (err) { + return false; + } + } + + _setToken(idToken) { + localStorage.setItem('jwt', idToken); + } + + _getToken() { + return localStorage.getItem('jwt') + } + + +} From df95cc73c575da7b31464a06e26abb11198118db Mon Sep 17 00:00:00 2001 From: Itay Mizeretz Date: Thu, 22 Feb 2018 10:36:10 +0200 Subject: [PATCH 09/19] Make all components with server interaction AuthComponents --- .../src/components/map/preview-pane/PreviewPane.js | 5 +++-- .../cc/ui/src/components/pages/ConfigurePage.js | 11 ++++++----- monkey_island/cc/ui/src/components/pages/MapPage.js | 13 +++++++------ .../cc/ui/src/components/pages/ReportPage.js | 9 +++++---- .../cc/ui/src/components/pages/RunMonkeyPage.js | 11 ++++++----- .../cc/ui/src/components/pages/RunServerPage.js | 5 +++++ .../cc/ui/src/components/pages/StartOverPage.js | 7 ++++--- .../cc/ui/src/components/pages/TelemetryPage.js | 5 +++-- 8 files changed, 39 insertions(+), 27 deletions(-) diff --git a/monkey_island/cc/ui/src/components/map/preview-pane/PreviewPane.js b/monkey_island/cc/ui/src/components/map/preview-pane/PreviewPane.js index 842440149..ca3aed268 100644 --- a/monkey_island/cc/ui/src/components/map/preview-pane/PreviewPane.js +++ b/monkey_island/cc/ui/src/components/map/preview-pane/PreviewPane.js @@ -2,8 +2,9 @@ import React from 'react'; import {Icon} from 'react-fa'; import Toggle from 'react-toggle'; import {OverlayTrigger, Tooltip} from 'react-bootstrap'; +import AuthComponent from '../../AuthComponent'; -class PreviewPaneComponent extends React.Component { +class PreviewPaneComponent extends AuthComponent { generateToolTip(text) { return ( @@ -64,7 +65,7 @@ class PreviewPaneComponent extends React.Component { forceKill(event, asset) { let newConfig = asset.config; newConfig['alive'] = !event.target.checked; - fetch('/api/monkey/' + asset.guid, + this.authFetch('/api/monkey/' + asset.guid, { method: 'PATCH', headers: {'Content-Type': 'application/json'}, diff --git a/monkey_island/cc/ui/src/components/pages/ConfigurePage.js b/monkey_island/cc/ui/src/components/pages/ConfigurePage.js index 3f60ab026..afa42d6e7 100644 --- a/monkey_island/cc/ui/src/components/pages/ConfigurePage.js +++ b/monkey_island/cc/ui/src/components/pages/ConfigurePage.js @@ -2,8 +2,9 @@ import React from 'react'; import Form from 'react-jsonschema-form'; import {Col, Nav, NavItem} from 'react-bootstrap'; import fileDownload from 'js-file-download'; +import AuthComponent from '../AuthComponent'; -class ConfigurePageComponent extends React.Component { +class ConfigurePageComponent extends AuthComponent { constructor(props) { super(props); @@ -23,7 +24,7 @@ class ConfigurePageComponent extends React.Component { } componentDidMount() { - fetch('/api/configuration') + this.authFetch('/api/configuration') .then(res => res.json()) .then(res => { let sections = []; @@ -43,7 +44,7 @@ class ConfigurePageComponent extends React.Component { onSubmit = ({formData}) => { this.currentFormData = formData; this.updateConfigSection(); - fetch('/api/configuration', + this.authFetch('/api/configuration', { method: 'POST', headers: {'Content-Type': 'application/json'}, @@ -82,7 +83,7 @@ class ConfigurePageComponent extends React.Component { }; resetConfig = () => { - fetch('/api/configuration', + this.authFetch('/api/configuration', { method: 'POST', headers: {'Content-Type': 'application/json'}, @@ -126,7 +127,7 @@ class ConfigurePageComponent extends React.Component { }; updateMonkeysRunning = () => { - fetch('/api') + this.authFetch('/api') .then(res => res.json()) .then(res => { // This check is used to prevent unnecessary re-rendering diff --git a/monkey_island/cc/ui/src/components/pages/MapPage.js b/monkey_island/cc/ui/src/components/pages/MapPage.js index ba5a655b1..4a54aeb8c 100644 --- a/monkey_island/cc/ui/src/components/pages/MapPage.js +++ b/monkey_island/cc/ui/src/components/pages/MapPage.js @@ -6,8 +6,9 @@ import PreviewPane from 'components/map/preview-pane/PreviewPane'; import {ReactiveGraph} from 'components/reactive-graph/ReactiveGraph'; import {ModalContainer, ModalDialog} from 'react-modal-dialog'; import {options, edgeGroupToColor} from 'components/map/MapOptions'; +import AuthComponent from '../AuthComponent'; -class MapPageComponent extends React.Component { +class MapPageComponent extends AuthComponent { constructor(props) { super(props); this.state = { @@ -40,7 +41,7 @@ class MapPageComponent extends React.Component { }; updateMapFromServer = () => { - fetch('/api/netmap') + this.authFetch('/api/netmap') .then(res => res.json()) .then(res => { res.edges.forEach(edge => { @@ -52,7 +53,7 @@ class MapPageComponent extends React.Component { }; updateTelemetryFromServer = () => { - fetch('/api/telemetry-feed?timestamp='+this.state.telemetryLastTimestamp) + this.authFetch('/api/telemetry-feed?timestamp='+this.state.telemetryLastTimestamp) .then(res => res.json()) .then(res => { let newTelem = this.state.telemetry.concat(res['telemetries']); @@ -68,7 +69,7 @@ class MapPageComponent extends React.Component { selectionChanged(event) { if (event.nodes.length === 1) { - fetch('/api/netmap/node?id=' + event.nodes[0]) + this.authFetch('/api/netmap/node?id=' + event.nodes[0]) .then(res => res.json()) .then(res => this.setState({selected: res, selectedType: 'node'})); } @@ -80,7 +81,7 @@ class MapPageComponent extends React.Component { if (displayedEdge['group'] === 'island') { this.setState({selected: displayedEdge, selectedType: 'island_edge'}); } else { - fetch('/api/netmap/edge?id=' + event.edges[0]) + this.authFetch('/api/netmap/edge?id=' + event.edges[0]) .then(res => res.json()) .then(res => this.setState({selected: res.edge, selectedType: 'edge'})); } @@ -91,7 +92,7 @@ class MapPageComponent extends React.Component { } killAllMonkeys = () => { - fetch('/api?action=killall') + this.authFetch('/api?action=killall') .then(res => res.json()) .then(res => this.setState({killPressed: (res.status === 'OK')})); }; diff --git a/monkey_island/cc/ui/src/components/pages/ReportPage.js b/monkey_island/cc/ui/src/components/pages/ReportPage.js index 440000596..145048db9 100644 --- a/monkey_island/cc/ui/src/components/pages/ReportPage.js +++ b/monkey_island/cc/ui/src/components/pages/ReportPage.js @@ -7,11 +7,12 @@ import {edgeGroupToColor, options} from 'components/map/MapOptions'; import StolenPasswords from 'components/report-components/StolenPasswords'; import CollapsibleWellComponent from 'components/report-components/CollapsibleWell'; import {Line} from 'rc-progress'; +import AuthComponent from '../AuthComponent'; let guardicoreLogoImage = require('../../images/guardicore-logo.png'); let monkeyLogoImage = require('../../images/monkey-icon.svg'); -class ReportPageComponent extends React.Component { +class ReportPageComponent extends AuthComponent { Issue = { @@ -76,7 +77,7 @@ class ReportPageComponent extends React.Component { } updateMonkeysRunning = () => { - return fetch('/api') + return this.authFetch('/api') .then(res => res.json()) .then(res => { // This check is used to prevent unnecessary re-rendering @@ -89,7 +90,7 @@ class ReportPageComponent extends React.Component { }; updateMapFromServer = () => { - fetch('/api/netmap') + this.authFetch('/api/netmap') .then(res => res.json()) .then(res => { res.edges.forEach(edge => { @@ -102,7 +103,7 @@ class ReportPageComponent extends React.Component { getReportFromServer(res) { if (res['completed_steps']['run_monkey']) { - fetch('/api/report') + this.authFetch('/api/report') .then(res => res.json()) .then(res => { this.setState({ diff --git a/monkey_island/cc/ui/src/components/pages/RunMonkeyPage.js b/monkey_island/cc/ui/src/components/pages/RunMonkeyPage.js index 5574a73ba..591db5e67 100644 --- a/monkey_island/cc/ui/src/components/pages/RunMonkeyPage.js +++ b/monkey_island/cc/ui/src/components/pages/RunMonkeyPage.js @@ -3,8 +3,9 @@ import {Button, Col, Well, Nav, NavItem, Collapse} from 'react-bootstrap'; import CopyToClipboard from 'react-copy-to-clipboard'; import {Icon} from 'react-fa'; import {Link} from 'react-router-dom'; +import AuthComponent from '../AuthComponent'; -class RunMonkeyPageComponent extends React.Component { +class RunMonkeyPageComponent extends AuthComponent { constructor(props) { super(props); @@ -19,14 +20,14 @@ class RunMonkeyPageComponent extends React.Component { } componentDidMount() { - fetch('/api') + this.authFetch('/api') .then(res => res.json()) .then(res => this.setState({ ips: res['ip_addresses'], selectedIp: res['ip_addresses'][0] })); - fetch('/api/local-monkey') + this.authFetch('/api/local-monkey') .then(res => res.json()) .then(res =>{ if (res['is_running']) { @@ -36,7 +37,7 @@ class RunMonkeyPageComponent extends React.Component { } }); - fetch('/api/client-monkey') + this.authFetch('/api/client-monkey') .then(res => res.json()) .then(res => { if (res['is_running']) { @@ -60,7 +61,7 @@ class RunMonkeyPageComponent extends React.Component { } runLocalMonkey = () => { - fetch('/api/local-monkey', + this.authFetch('/api/local-monkey', { method: 'POST', headers: {'Content-Type': 'application/json'}, diff --git a/monkey_island/cc/ui/src/components/pages/RunServerPage.js b/monkey_island/cc/ui/src/components/pages/RunServerPage.js index 5143f24fc..c6d72a0cb 100644 --- a/monkey_island/cc/ui/src/components/pages/RunServerPage.js +++ b/monkey_island/cc/ui/src/components/pages/RunServerPage.js @@ -2,12 +2,17 @@ import React from 'react'; import {Col} from 'react-bootstrap'; import {Link} from 'react-router-dom'; +import AuthService from '../../services/AuthService' + class RunServerPageComponent extends React.Component { constructor(props) { super(props); } render() { + // TODO: something real + let auth = new AuthService(); + auth.login('monkey', 'infectio1n'); return (

    1. Monkey Island C&C Server

    diff --git a/monkey_island/cc/ui/src/components/pages/StartOverPage.js b/monkey_island/cc/ui/src/components/pages/StartOverPage.js index 2889a7067..87716659f 100644 --- a/monkey_island/cc/ui/src/components/pages/StartOverPage.js +++ b/monkey_island/cc/ui/src/components/pages/StartOverPage.js @@ -2,8 +2,9 @@ import React from 'react'; import {Col} from 'react-bootstrap'; import {Link} from 'react-router-dom'; import {ModalContainer, ModalDialog} from 'react-modal-dialog'; +import AuthComponent from '../AuthComponent'; -class StartOverPageComponent extends React.Component { +class StartOverPageComponent extends AuthComponent { constructor(props) { super(props); @@ -15,7 +16,7 @@ class StartOverPageComponent extends React.Component { } updateMonkeysRunning = () => { - fetch('/api') + this.authFetch('/api') .then(res => res.json()) .then(res => { // This check is used to prevent unnecessary re-rendering @@ -104,7 +105,7 @@ class StartOverPageComponent extends React.Component { this.setState({ cleaned: false }); - fetch('/api?action=reset') + this.authFetch('/api?action=reset') .then(res => res.json()) .then(res => { if (res['status'] === 'OK') { diff --git a/monkey_island/cc/ui/src/components/pages/TelemetryPage.js b/monkey_island/cc/ui/src/components/pages/TelemetryPage.js index 03c57807e..099c20a43 100644 --- a/monkey_island/cc/ui/src/components/pages/TelemetryPage.js +++ b/monkey_island/cc/ui/src/components/pages/TelemetryPage.js @@ -2,6 +2,7 @@ import React from 'react'; import {Col} from 'react-bootstrap'; import JSONTree from 'react-json-tree' import {DataTable} from 'react-data-components'; +import AuthComponent from '../AuthComponent'; const renderJson = (val) => ; const renderTime = (val) => val.split('.')[0]; @@ -13,7 +14,7 @@ const columns = [ { title: 'Details', prop: 'data', render: renderJson, width: '40%' } ]; -class TelemetryPageComponent extends React.Component { +class TelemetryPageComponent extends AuthComponent { constructor(props) { super(props); this.state = { @@ -22,7 +23,7 @@ class TelemetryPageComponent extends React.Component { } componentDidMount = () => { - fetch('/api/telemetry') + this.authFetch('/api/telemetry') .then(res => res.json()) .then(res => this.setState({data: res.objects})); }; From f675bed851e59ac5bd34189858e1ea09d90ff937 Mon Sep 17 00:00:00 2001 From: Daniel Goldberg Date: Thu, 22 Feb 2018 10:59:04 +0200 Subject: [PATCH 10/19] CR fixes --- README.md | 2 +- monkey_island/cc/services/config.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index c57009d03..ba6878849 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ The Infection Monkey is an open source security tool for testing a data center's The Infection Monkey is comprised of two parts: * Monkey - A tool which infects other machines and propagates to them -* Monkey Island - A C&C server with a dedicated UI to visualize the Infection Monkey's progress inside the data center +* Monkey Island - A dedicated server to control and visualize the Infection Monkey's progress inside the data center To read more about the Monkey, visit http://infectionmonkey.com diff --git a/monkey_island/cc/services/config.py b/monkey_island/cc/services/config.py index cc3e65e3a..1e7420648 100644 --- a/monkey_island/cc/services/config.py +++ b/monkey_island/cc/services/config.py @@ -528,7 +528,7 @@ SCHEMA = { } }, "cnc": { - "title": "Command and Control", + "title": "Monkey Island", "type": "object", "properties": { "servers": { From 52d75de86459bb61a3233aa271232debfaf94b83 Mon Sep 17 00:00:00 2001 From: Itay Mizeretz Date: Thu, 22 Feb 2018 15:22:35 +0200 Subject: [PATCH 11/19] Fix AuthService --- .../cc/ui/src/services/AuthService.js | 26 +++++++++++++++---- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/monkey_island/cc/ui/src/services/AuthService.js b/monkey_island/cc/ui/src/services/AuthService.js index 36e352ed4..25e214088 100644 --- a/monkey_island/cc/ui/src/services/AuthService.js +++ b/monkey_island/cc/ui/src/services/AuthService.js @@ -7,7 +7,7 @@ export default class AuthService { if (this.AUTH_ENABLED) { return this._login(username, password); } else { - return {}; + return {result: true}; } }; @@ -28,7 +28,14 @@ export default class AuthService { }) }).then(response => response.json()) .then(res => { - this._setToken(res['access_token']); + if (res.hasOwnProperty('access_token')) { + this._setToken(res['access_token']); + return {result: true}; + } else { + this._removeToken(); + return {result: false}; + } + }) }; @@ -45,21 +52,26 @@ export default class AuthService { return fetch(url, { headers, ...options + }).then(res => { + if (res.status === 401) { + this._removeToken(); + } + return res; }); - }; loggedIn() { if (!this.AUTH_ENABLED) { return true; } + const token = this._getToken(); - return (token && !this._isTokenExpired(token)); + return ((token !== null) && !this._isTokenExpired(token)); } logout() { if (this.AUTH_ENABLED) { - localStorage.removeItem('jwt'); + this._removeToken(); } } @@ -76,6 +88,10 @@ export default class AuthService { localStorage.setItem('jwt', idToken); } + _removeToken() { + localStorage.removeItem('jwt'); + } + _getToken() { return localStorage.getItem('jwt') } From c9d644f88ac5ed7b737e9960ad87b6b3afbc4802 Mon Sep 17 00:00:00 2001 From: Itay Mizeretz Date: Thu, 22 Feb 2018 15:23:47 +0200 Subject: [PATCH 12/19] Add login page, and auto redirection to/from login page --- monkey_island/cc/ui/src/components/Main.js | 73 ++++++++++------- .../cc/ui/src/components/pages/LoginPage.js | 78 +++++++++++++++++++ .../ui/src/components/pages/RunServerPage.js | 11 +-- 3 files changed, 128 insertions(+), 34 deletions(-) create mode 100644 monkey_island/cc/ui/src/components/pages/LoginPage.js diff --git a/monkey_island/cc/ui/src/components/Main.js b/monkey_island/cc/ui/src/components/Main.js index 881c3a2ec..d80d70c24 100644 --- a/monkey_island/cc/ui/src/components/Main.js +++ b/monkey_island/cc/ui/src/components/Main.js @@ -1,5 +1,5 @@ import React from 'react'; -import {NavLink, Route, BrowserRouter as Router} from 'react-router-dom'; +import {BrowserRouter as Router, NavLink, Redirect, Route} from 'react-router-dom'; import {Col, Grid, Row} from 'react-bootstrap'; import {Icon} from 'react-fa'; @@ -11,6 +11,8 @@ import TelemetryPage from 'components/pages/TelemetryPage'; import StartOverPage from 'components/pages/StartOverPage'; import ReportPage from 'components/pages/ReportPage'; import LicensePage from 'components/pages/LicensePage'; +import AuthComponent from 'components/AuthComponent'; +import LoginPageComponent from 'components/pages/LoginPage'; require('normalize.css/normalize.css'); require('react-data-components/css/table-twbs.css'); @@ -22,21 +24,9 @@ let logoImage = require('../images/monkey-icon.svg'); let infectionMonkeyImage = require('../images/infection-monkey.svg'); let guardicoreLogoImage = require('../images/guardicore-logo.png'); -class AppComponent extends React.Component { - constructor(props) { - super(props); - this.state = { - completedSteps: { - run_server: true, - run_monkey: false, - infection_done: false, - report_done: false - } - }; - } - +class AppComponent extends AuthComponent { updateStatus = () => { - fetch('/api') + this.authFetch('/api') .then(res => res.json()) .then(res => { // This check is used to prevent unnecessary re-rendering @@ -53,6 +43,34 @@ class AppComponent extends React.Component { }); }; + renderRoute = (route_path, page_component, is_exact_path = false) => { + let render_func = (props) => { + if (this.auth.loggedIn()) { + return page_component; + } else { + return ; + } + }; + + if (is_exact_path) { + return ; + } else { + return ; + } + }; + + constructor(props) { + super(props); + this.state = { + completedSteps: { + run_server: true, + run_monkey: false, + infection_done: false, + report_done: false + } + }; + } + componentDidMount() { this.updateStatus(); this.interval = setInterval(this.updateStatus, 2000); @@ -78,7 +96,7 @@ class AppComponent extends React.Component { 1. Run C&C Server - { this.state.completedSteps.run_server ? + {this.state.completedSteps.run_server ? : ''} @@ -87,7 +105,7 @@ class AppComponent extends React.Component { 2. Run Monkey - { this.state.completedSteps.run_monkey ? + {this.state.completedSteps.run_monkey ? : ''} @@ -96,7 +114,7 @@ class AppComponent extends React.Component { 3. Infection Map - { this.state.completedSteps.infection_done ? + {this.state.completedSteps.infection_done ? : ''} @@ -105,7 +123,7 @@ class AppComponent extends React.Component { 4. Security Report - { this.state.completedSteps.report_done ? + {this.state.completedSteps.report_done ? : ''} @@ -136,14 +154,15 @@ class AppComponent extends React.Component {
    - ( )} /> - ( )} /> - ( )} /> - ( )} /> - ( )} /> - ( )} /> - ( )} /> - ( )} /> + ()}/> + {this.renderRoute('/', , true)} + {this.renderRoute('/configure', )} + {this.renderRoute('/run-monkey', )} + {this.renderRoute('/infection/map', )} + {this.renderRoute('/infection/telemetry', )} + {this.renderRoute('/start-over', )} + {this.renderRoute('/report', )} + {this.renderRoute('/license', )} diff --git a/monkey_island/cc/ui/src/components/pages/LoginPage.js b/monkey_island/cc/ui/src/components/pages/LoginPage.js new file mode 100644 index 000000000..cc1eefecd --- /dev/null +++ b/monkey_island/cc/ui/src/components/pages/LoginPage.js @@ -0,0 +1,78 @@ +import React from 'react'; +import {Col} from 'react-bootstrap'; + +import AuthService from '../../services/AuthService' + +class LoginPageComponent extends React.Component { + login = () => { + this.auth.login(this.username, this.password).then(res => { + if (res['result']) { + this.redirectToHome(); + } else { + this.setState({failed: true}); + } + }); + }; + + updateUsername = (evt) => { + this.username = evt.target.value; + }; + + updatePassword = (evt) => { + this.password = evt.target.value; + }; + + redirectToHome = () => { + window.location.href = '/'; + }; + + constructor(props) { + super(props); + this.username = ''; + this.password = ''; + this.auth = new AuthService(); + this.state = { + failed: false + }; + if (this.auth.loggedIn()) { + this.redirectToHome(); + } + } + + render() { + return ( + +

    Login

    +
    +
    +
    + Login +
    +
    +
    + this.updateUsername(evt)}/> + this.updatePassword(evt)}/> + + { + this.state.failed ? +
    Login failed. Bad credentials.
    + : + '' + } +
    +
    +
    +
    + + ); + } +} + +export default LoginPageComponent; diff --git a/monkey_island/cc/ui/src/components/pages/RunServerPage.js b/monkey_island/cc/ui/src/components/pages/RunServerPage.js index c6d72a0cb..65949532f 100644 --- a/monkey_island/cc/ui/src/components/pages/RunServerPage.js +++ b/monkey_island/cc/ui/src/components/pages/RunServerPage.js @@ -2,22 +2,18 @@ import React from 'react'; import {Col} from 'react-bootstrap'; import {Link} from 'react-router-dom'; -import AuthService from '../../services/AuthService' - class RunServerPageComponent extends React.Component { constructor(props) { super(props); } render() { - // TODO: something real - let auth = new AuthService(); - auth.login('monkey', 'infectio1n'); return (

    1. Monkey Island C&C Server

    -

    Congrats! You have successfully set up the Monkey Island server. 👏 👏

    +

    Congrats! You have successfully set up the Monkey Island + server. 👏 👏

    The Infection Monkey is an open source security tool for testing a data center's resiliency to perimeter breaches and internal server infections. @@ -25,7 +21,8 @@ class RunServerPageComponent extends React.Component { center and reports to this Command and Control (C&C) server.

    - To read more about the Monkey, visit infectionmonkey.com + To read more about the Monkey, visit infectionmonkey.com

    Go ahead and run the monkey. From 28ef2d870824425f5bfb1efb2947e886029f38c6 Mon Sep 17 00:00:00 2001 From: Itay Mizeretz Date: Thu, 22 Feb 2018 15:43:51 +0200 Subject: [PATCH 13/19] return 401 on invalid token --- monkey_island/cc/auth.py | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/monkey_island/cc/auth.py b/monkey_island/cc/auth.py index 510a741ad..7ee787a75 100644 --- a/monkey_island/cc/auth.py +++ b/monkey_island/cc/auth.py @@ -1,7 +1,7 @@ from functools import wraps -import flask_jwt -from flask_jwt import JWT +from flask import current_app, abort +from flask_jwt import JWT, _jwt_required, JWTError from werkzeug.security import safe_str_cmp from cc.island_config import AUTH_ENABLED @@ -43,12 +43,16 @@ def init_jwt(app): def jwt_required(realm=None): - if AUTH_ENABLED: - return flask_jwt.jwt_required(realm) - else: - def wrapper(fn): - @wraps(fn) - def decorator(*args, **kwargs): - return fn(*args, **kwargs) - return decorator - return wrapper + def wrapper(fn): + @wraps(fn) + def decorator(*args, **kwargs): + if AUTH_ENABLED: + try: + _jwt_required(realm or current_app.config['JWT_DEFAULT_REALM']) + except JWTError: + abort(401) + return fn(*args, **kwargs) + + return decorator + + return wrapper From 9e169980e3710eaba6dfdfed54d0649d90d81408 Mon Sep 17 00:00:00 2001 From: Itay Mizeretz Date: Thu, 22 Feb 2018 16:18:14 +0200 Subject: [PATCH 14/19] Don't query completed steps if not logged in --- monkey_island/cc/ui/src/components/Main.js | 30 ++++++++++++---------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/monkey_island/cc/ui/src/components/Main.js b/monkey_island/cc/ui/src/components/Main.js index d80d70c24..e518c8416 100644 --- a/monkey_island/cc/ui/src/components/Main.js +++ b/monkey_island/cc/ui/src/components/Main.js @@ -26,21 +26,23 @@ let guardicoreLogoImage = require('../images/guardicore-logo.png'); class AppComponent extends AuthComponent { updateStatus = () => { - this.authFetch('/api') - .then(res => res.json()) - .then(res => { - // This check is used to prevent unnecessary re-rendering - let isChanged = false; - for (let step in this.state.completedSteps) { - if (this.state.completedSteps[step] !== res['completed_steps'][step]) { - isChanged = true; - break; + if (this.auth.loggedIn()){ + this.authFetch('/api') + .then(res => res.json()) + .then(res => { + // This check is used to prevent unnecessary re-rendering + let isChanged = false; + for (let step in this.state.completedSteps) { + if (this.state.completedSteps[step] !== res['completed_steps'][step]) { + isChanged = true; + break; + } } - } - if (isChanged) { - this.setState({completedSteps: res['completed_steps']}); - } - }); + if (isChanged) { + this.setState({completedSteps: res['completed_steps']}); + } + }); + } }; renderRoute = (route_path, page_component, is_exact_path = false) => { From 9bb7148f50af24ad42d303e6dec408d0ea57b6a2 Mon Sep 17 00:00:00 2001 From: Itay Mizeretz Date: Thu, 22 Feb 2018 16:21:03 +0200 Subject: [PATCH 15/19] Secure all endpoints --- monkey_island/cc/resources/monkey.py | 14 ++++++-------- monkey_island/cc/resources/monkey_configuration.py | 7 ++++--- monkey_island/cc/resources/monkey_download.py | 3 +++ monkey_island/cc/resources/netmap.py | 2 ++ monkey_island/cc/resources/node.py | 2 ++ monkey_island/cc/resources/report.py | 3 +++ monkey_island/cc/resources/root.py | 3 +++ monkey_island/cc/resources/telemetry.py | 3 +++ monkey_island/cc/resources/telemetry_feed.py | 2 ++ 9 files changed, 28 insertions(+), 11 deletions(-) diff --git a/monkey_island/cc/resources/monkey.py b/monkey_island/cc/resources/monkey.py index 37722262c..d344949bc 100644 --- a/monkey_island/cc/resources/monkey.py +++ b/monkey_island/cc/resources/monkey.py @@ -15,23 +15,20 @@ __author__ = 'Barak' class Monkey(flask_restful.Resource): + + # Used by monkey. can't secure. def get(self, guid=None, **kw): NodeService.update_dead_monkeys() # refresh monkeys status if not guid: guid = request.args.get('guid') - timestamp = request.args.get('timestamp') if guid: monkey_json = mongo.db.monkey.find_one_or_404({"guid": guid}) return monkey_json - else: - result = {'timestamp': datetime.now().isoformat()} - find_filter = {} - if timestamp is not None: - find_filter['modifytime'] = {'$gt': dateutil.parser.parse(timestamp)} - result['objects'] = [x for x in mongo.db.monkey.find(find_filter)] - return result + return {} + + # Used by monkey. can't secure. def patch(self, guid): monkey_json = json.loads(request.data) update = {"$set": {'modifytime': datetime.now()}} @@ -51,6 +48,7 @@ class Monkey(flask_restful.Resource): return mongo.db.monkey.update({"_id": monkey["_id"]}, update, upsert=False) + # Used by monkey. can't secure. def post(self, **kw): monkey_json = json.loads(request.data) monkey_json['creds'] = [] diff --git a/monkey_island/cc/resources/monkey_configuration.py b/monkey_island/cc/resources/monkey_configuration.py index 6d622b1cd..0bd30db3f 100644 --- a/monkey_island/cc/resources/monkey_configuration.py +++ b/monkey_island/cc/resources/monkey_configuration.py @@ -1,18 +1,20 @@ import json -from flask import request, jsonify import flask_restful +from flask import request, jsonify -from cc.database import mongo +from cc.auth import jwt_required from cc.services.config import ConfigService __author__ = 'Barak' class MonkeyConfiguration(flask_restful.Resource): + @jwt_required() def get(self): return jsonify(schema=ConfigService.get_config_schema(), configuration=ConfigService.get_config()) + @jwt_required() def post(self): config_json = json.loads(request.data) if config_json.has_key('reset'): @@ -20,4 +22,3 @@ class MonkeyConfiguration(flask_restful.Resource): else: ConfigService.update_config(config_json) return self.get() - diff --git a/monkey_island/cc/resources/monkey_download.py b/monkey_island/cc/resources/monkey_download.py index b311c4472..ac1f9de2d 100644 --- a/monkey_island/cc/resources/monkey_download.py +++ b/monkey_island/cc/resources/monkey_download.py @@ -47,9 +47,12 @@ def get_monkey_executable(host_os, machine): class MonkeyDownload(flask_restful.Resource): + + # Used by monkey. can't secure. def get(self, path): return send_from_directory('binaries', path) + # Used by monkey. can't secure. def post(self): host_json = json.loads(request.data) host_os = host_json.get('os') diff --git a/monkey_island/cc/resources/netmap.py b/monkey_island/cc/resources/netmap.py index 12418ef6b..3ba7fafa8 100644 --- a/monkey_island/cc/resources/netmap.py +++ b/monkey_island/cc/resources/netmap.py @@ -1,5 +1,6 @@ import flask_restful +from cc.auth import jwt_required from cc.services.edge import EdgeService from cc.services.node import NodeService from cc.database import mongo @@ -8,6 +9,7 @@ __author__ = 'Barak' class NetMap(flask_restful.Resource): + @jwt_required() def get(self, **kw): monkeys = [NodeService.monkey_to_net_node(x) for x in mongo.db.monkey.find({})] nodes = [NodeService.node_to_net_node(x) for x in mongo.db.node.find({})] diff --git a/monkey_island/cc/resources/node.py b/monkey_island/cc/resources/node.py index 5a6c52e1b..bc00c40cf 100644 --- a/monkey_island/cc/resources/node.py +++ b/monkey_island/cc/resources/node.py @@ -1,12 +1,14 @@ from flask import request import flask_restful +from cc.auth import jwt_required from cc.services.node import NodeService __author__ = 'Barak' class Node(flask_restful.Resource): + @jwt_required() def get(self): node_id = request.args.get('id') if node_id: diff --git a/monkey_island/cc/resources/report.py b/monkey_island/cc/resources/report.py index e967b207f..1a00fa609 100644 --- a/monkey_island/cc/resources/report.py +++ b/monkey_island/cc/resources/report.py @@ -1,10 +1,13 @@ import flask_restful +from cc.auth import jwt_required from cc.services.report import ReportService __author__ = "itay.mizeretz" class Report(flask_restful.Resource): + + @jwt_required() def get(self): return ReportService.get_report() diff --git a/monkey_island/cc/resources/root.py b/monkey_island/cc/resources/root.py index 25d7dfed7..04129f257 100644 --- a/monkey_island/cc/resources/root.py +++ b/monkey_island/cc/resources/root.py @@ -3,6 +3,7 @@ from datetime import datetime import flask_restful from flask import request, make_response, jsonify +from cc.auth import jwt_required from cc.database import mongo from cc.services.config import ConfigService from cc.services.node import NodeService @@ -13,6 +14,8 @@ __author__ = 'Barak' class Root(flask_restful.Resource): + + @jwt_required() def get(self, action=None): if not action: action = request.args.get('action') diff --git a/monkey_island/cc/resources/telemetry.py b/monkey_island/cc/resources/telemetry.py index 94c4046b5..e1b17ac9a 100644 --- a/monkey_island/cc/resources/telemetry.py +++ b/monkey_island/cc/resources/telemetry.py @@ -7,6 +7,7 @@ import dateutil import flask_restful from flask import request +from cc.auth import jwt_required from cc.database import mongo from cc.services.config import ConfigService from cc.services.edge import EdgeService @@ -16,6 +17,7 @@ __author__ = 'Barak' class Telemetry(flask_restful.Resource): + @jwt_required() def get(self, **kw): monkey_guid = request.args.get('monkey_guid') telem_type = request.args.get('telem_type') @@ -36,6 +38,7 @@ class Telemetry(flask_restful.Resource): result['objects'] = self.telemetry_to_displayed_telemetry(mongo.db.telemetry.find(find_filter)) return result + # Used by monkey. can't secure. def post(self): telemetry_json = json.loads(request.data) telemetry_json['timestamp'] = datetime.now() diff --git a/monkey_island/cc/resources/telemetry_feed.py b/monkey_island/cc/resources/telemetry_feed.py index 9a7e507ef..f14c5d29f 100644 --- a/monkey_island/cc/resources/telemetry_feed.py +++ b/monkey_island/cc/resources/telemetry_feed.py @@ -5,6 +5,7 @@ import flask_restful from flask import request import flask_pymongo +from cc.auth import jwt_required from cc.database import mongo from cc.services.node import NodeService @@ -12,6 +13,7 @@ __author__ = 'itay.mizeretz' class TelemetryFeed(flask_restful.Resource): + @jwt_required() def get(self, **kw): timestamp = request.args.get('timestamp') if "null" == timestamp or timestamp is None: # special case to avoid ugly JS code... From 4364156416844c088cdd383a8f52259eead6293e Mon Sep 17 00:00:00 2001 From: Itay Mizeretz Date: Thu, 22 Feb 2018 20:33:40 +0200 Subject: [PATCH 16/19] Add server config file and use in frontend+backend --- monkey_island/cc/app.py | 4 +- monkey_island/cc/auth.py | 37 ++++++++----------- monkey_island/cc/environment/__init__.py | 33 +++++++++++++++++ monkey_island/cc/environment/aws.py | 24 ++++++++++++ monkey_island/cc/environment/environment.py | 18 +++++++++ monkey_island/cc/environment/standard.py | 12 ++++++ monkey_island/cc/island_config.py | 9 ----- monkey_island/cc/main.py | 10 ++--- monkey_island/cc/resources/local_run.py | 4 +- monkey_island/cc/server_config.json | 3 ++ monkey_island/cc/services/config.py | 6 +-- .../cc/ui/src/server_config/AwsConfig.js | 9 +++++ .../cc/ui/src/server_config/BaseConfig.js | 8 ++++ .../cc/ui/src/server_config/ServerConfig.js | 12 ++++++ .../cc/ui/src/server_config/StandardConfig.js | 10 +++++ .../cc/ui/src/services/AuthService.js | 4 +- 16 files changed, 159 insertions(+), 44 deletions(-) create mode 100644 monkey_island/cc/environment/__init__.py create mode 100644 monkey_island/cc/environment/aws.py create mode 100644 monkey_island/cc/environment/environment.py create mode 100644 monkey_island/cc/environment/standard.py delete mode 100644 monkey_island/cc/island_config.py create mode 100644 monkey_island/cc/server_config.json create mode 100644 monkey_island/cc/ui/src/server_config/AwsConfig.js create mode 100644 monkey_island/cc/ui/src/server_config/BaseConfig.js create mode 100644 monkey_island/cc/ui/src/server_config/ServerConfig.js create mode 100644 monkey_island/cc/ui/src/server_config/StandardConfig.js diff --git a/monkey_island/cc/app.py b/monkey_island/cc/app.py index a5601ba74..4733d5089 100644 --- a/monkey_island/cc/app.py +++ b/monkey_island/cc/app.py @@ -9,7 +9,7 @@ from werkzeug.exceptions import NotFound from cc.auth import init_jwt from cc.database import mongo -from cc.island_config import AUTH_EXPIRATION_TIME +from cc.environment.environment import env from cc.resources.client_run import ClientRun from cc.resources.edge import Edge from cc.resources.local_run import LocalRun @@ -77,7 +77,7 @@ def init_app(mongo_url): app.config['SECRET_KEY'] = os.urandom(32) app.config['JWT_AUTH_URL_RULE'] = '/api/auth' - app.config['JWT_EXPIRATION_DELTA'] = AUTH_EXPIRATION_TIME + app.config['JWT_EXPIRATION_DELTA'] = env.get_auth_expiration_time() init_jwt(app) mongo.init_app(app) diff --git a/monkey_island/cc/auth.py b/monkey_island/cc/auth.py index 7ee787a75..99667d837 100644 --- a/monkey_island/cc/auth.py +++ b/monkey_island/cc/auth.py @@ -4,7 +4,7 @@ from flask import current_app, abort from flask_jwt import JWT, _jwt_required, JWTError from werkzeug.security import safe_str_cmp -from cc.island_config import AUTH_ENABLED +from cc.environment.environment import env __author__ = 'itay.mizeretz' @@ -19,26 +19,21 @@ class User(object): return "User(id='%s')" % self.id -users = [ - User(1, 'monkey', 'infection') -] -username_table = {u.username: u for u in users} -userid_table = {u.id: u for u in users} - - -def authenticate(username, password): - user = username_table.get(username, None) - if user and safe_str_cmp(user.password.encode('utf-8'), password.encode('utf-8')): - return user - - -def identity(payload): - user_id = payload['identity'] - return userid_table.get(user_id, None) - - def init_jwt(app): - if AUTH_ENABLED: + users = env.get_auth_users() + username_table = {u.username: u for u in users} + userid_table = {u.id: u for u in users} + + def authenticate(username, password): + user = username_table.get(username, None) + if user and safe_str_cmp(user.password.encode('utf-8'), password.encode('utf-8')): + return user + + def identity(payload): + user_id = payload['identity'] + return userid_table.get(user_id, None) + + if env.is_auth_enabled(): JWT(app, authenticate, identity) @@ -46,7 +41,7 @@ def jwt_required(realm=None): def wrapper(fn): @wraps(fn) def decorator(*args, **kwargs): - if AUTH_ENABLED: + if env.is_auth_enabled(): try: _jwt_required(realm or current_app.config['JWT_DEFAULT_REALM']) except JWTError: diff --git a/monkey_island/cc/environment/__init__.py b/monkey_island/cc/environment/__init__.py new file mode 100644 index 000000000..712ba232a --- /dev/null +++ b/monkey_island/cc/environment/__init__.py @@ -0,0 +1,33 @@ +import abc +from datetime import timedelta + +__author__ = 'itay.mizeretz' + + +class Environment(object): + __metaclass__ = abc.ABCMeta + + _ISLAND_PORT = 5000 + _MONGO_URL = "mongodb://localhost:27017/monkeyisland" + _DEBUG_SERVER = False + _AUTH_EXPIRATION_TIME = timedelta(hours=1) + + def get_island_port(self): + return self._ISLAND_PORT + + def get_mongo_url(self): + return self._MONGO_URL + + def is_debug(self): + return self._DEBUG_SERVER + + def get_auth_expiration_time(self): + return self._AUTH_EXPIRATION_TIME + + @abc.abstractmethod + def is_auth_enabled(self): + return + + @abc.abstractmethod + def get_auth_users(self): + return diff --git a/monkey_island/cc/environment/aws.py b/monkey_island/cc/environment/aws.py new file mode 100644 index 000000000..b85a7d2e4 --- /dev/null +++ b/monkey_island/cc/environment/aws.py @@ -0,0 +1,24 @@ +import urllib2 + +import cc.auth +from cc.environment import Environment + +__author__ = 'itay.mizeretz' + + +class AwsEnvironment(Environment): + def __init__(self): + super(AwsEnvironment, self).__init__() + self._instance_id = AwsEnvironment._get_instance_id() + + @staticmethod + def _get_instance_id(): + return urllib2.urlopen('http://169.254.169.254/latest/meta-data/instance-id').read() + + def is_auth_enabled(self): + return True + + def get_auth_users(self): + return [ + cc.auth.User(1, 'monkey', self._instance_id) + ] diff --git a/monkey_island/cc/environment/environment.py b/monkey_island/cc/environment/environment.py new file mode 100644 index 000000000..5cb992c7c --- /dev/null +++ b/monkey_island/cc/environment/environment.py @@ -0,0 +1,18 @@ +import json +import standard +import aws + +ENV_DICT = { + 'standard': standard.StandardEnvironment, + 'aws': aws.AwsEnvironment +} + + +def load_env_from_file(): + with open('server_config.json', 'r') as f: + config_content = f.read() + config_json = json.loads(config_content) + return config_json['server_config'] + + +env = ENV_DICT[load_env_from_file()]() diff --git a/monkey_island/cc/environment/standard.py b/monkey_island/cc/environment/standard.py new file mode 100644 index 000000000..8df00a2c3 --- /dev/null +++ b/monkey_island/cc/environment/standard.py @@ -0,0 +1,12 @@ +from cc.environment import Environment + +__author__ = 'itay.mizeretz' + + +class StandardEnvironment(Environment): + + def is_auth_enabled(self): + return False + + def get_auth_users(self): + return [] diff --git a/monkey_island/cc/island_config.py b/monkey_island/cc/island_config.py deleted file mode 100644 index 87fe97263..000000000 --- a/monkey_island/cc/island_config.py +++ /dev/null @@ -1,9 +0,0 @@ -from datetime import timedelta - -__author__ = 'itay.mizeretz' - -ISLAND_PORT = 5000 -DEFAULT_MONGO_URL = "mongodb://localhost:27017/monkeyisland" -DEBUG_SERVER = False -AUTH_ENABLED = True -AUTH_EXPIRATION_TIME = timedelta(hours=1) diff --git a/monkey_island/cc/main.py b/monkey_island/cc/main.py index bb1ed9eaf..c36b564e7 100644 --- a/monkey_island/cc/main.py +++ b/monkey_island/cc/main.py @@ -11,7 +11,7 @@ if BASE_PATH not in sys.path: from cc.app import init_app from cc.utils import local_ip_addresses -from cc.island_config import DEFAULT_MONGO_URL, ISLAND_PORT, DEBUG_SERVER +from cc.environment.environment import env from cc.database import is_db_server_up if __name__ == '__main__': @@ -19,20 +19,20 @@ if __name__ == '__main__': from tornado.httpserver import HTTPServer from tornado.ioloop import IOLoop - mongo_url = os.environ.get('MONGO_URL', DEFAULT_MONGO_URL) + mongo_url = os.environ.get('MONGO_URL', env.get_mongo_url()) while not is_db_server_up(mongo_url): print('Waiting for MongoDB server') time.sleep(1) app = init_app(mongo_url) - if DEBUG_SERVER: + if env.is_debug(): app.run(host='0.0.0.0', debug=True, ssl_context=('server.crt', 'server.key')) else: http_server = HTTPServer(WSGIContainer(app), ssl_options={'certfile': os.environ.get('SERVER_CRT', 'server.crt'), 'keyfile': os.environ.get('SERVER_KEY', 'server.key')}) - http_server.listen(ISLAND_PORT) - print('Monkey Island C&C Server is running on https://{}:{}'.format(local_ip_addresses()[0], ISLAND_PORT)) + http_server.listen(env.get_island_port()) + print('Monkey Island C&C Server is running on https://{}:{}'.format(local_ip_addresses()[0], env.get_island_port())) IOLoop.instance().start() diff --git a/monkey_island/cc/resources/local_run.py b/monkey_island/cc/resources/local_run.py index 3d18b49e6..c588eaf80 100644 --- a/monkey_island/cc/resources/local_run.py +++ b/monkey_island/cc/resources/local_run.py @@ -6,8 +6,8 @@ import sys from flask import request, jsonify, make_response import flask_restful +from cc.environment.environment import env from cc.resources.monkey_download import get_monkey_executable -from cc.island_config import ISLAND_PORT from cc.services.node import NodeService from cc.utils import local_ip_addresses @@ -36,7 +36,7 @@ def run_local_monkey(): # run the monkey try: - args = ['"%s" m0nk3y -s %s:%s' % (target_path, local_ip_addresses()[0], ISLAND_PORT)] + args = ['"%s" m0nk3y -s %s:%s' % (target_path, local_ip_addresses()[0], env.get_island_port())] if sys.platform == "win32": args = "".join(args) pid = subprocess.Popen(args, shell=True).pid diff --git a/monkey_island/cc/server_config.json b/monkey_island/cc/server_config.json new file mode 100644 index 000000000..2d1a5995b --- /dev/null +++ b/monkey_island/cc/server_config.json @@ -0,0 +1,3 @@ +{ + "server_config": "standard" +} \ No newline at end of file diff --git a/monkey_island/cc/services/config.py b/monkey_island/cc/services/config.py index ea755312f..cd2999a49 100644 --- a/monkey_island/cc/services/config.py +++ b/monkey_island/cc/services/config.py @@ -1,7 +1,7 @@ from cc.database import mongo from jsonschema import Draft4Validator, validators -from cc.island_config import ISLAND_PORT +from cc.environment.environment import env from cc.utils import local_ip_addresses __author__ = "itay.mizeretz" @@ -885,8 +885,8 @@ class ConfigService: @staticmethod def set_server_ips_in_config(config): ips = local_ip_addresses() - config["cnc"]["servers"]["command_servers"] = ["%s:%d" % (ip, ISLAND_PORT) for ip in ips] - config["cnc"]["servers"]["current_server"] = "%s:%d" % (ips[0], ISLAND_PORT) + config["cnc"]["servers"]["command_servers"] = ["%s:%d" % (ip, env.get_island_port()) for ip in ips] + config["cnc"]["servers"]["current_server"] = "%s:%d" % (ips[0], env.get_island_port()) @staticmethod def save_initial_config_if_needed(): diff --git a/monkey_island/cc/ui/src/server_config/AwsConfig.js b/monkey_island/cc/ui/src/server_config/AwsConfig.js new file mode 100644 index 000000000..1c5814b5a --- /dev/null +++ b/monkey_island/cc/ui/src/server_config/AwsConfig.js @@ -0,0 +1,9 @@ +import BaseConfig from './BaseConfig'; + +class AwsConfig extends BaseConfig{ + isAuthEnabled() { + return true; + } +} + +export default AwsConfig; diff --git a/monkey_island/cc/ui/src/server_config/BaseConfig.js b/monkey_island/cc/ui/src/server_config/BaseConfig.js new file mode 100644 index 000000000..1ca82506d --- /dev/null +++ b/monkey_island/cc/ui/src/server_config/BaseConfig.js @@ -0,0 +1,8 @@ +class BaseConfig { + + isAuthEnabled() { + throw new Error('Abstract function'); + } +} + +export default BaseConfig; diff --git a/monkey_island/cc/ui/src/server_config/ServerConfig.js b/monkey_island/cc/ui/src/server_config/ServerConfig.js new file mode 100644 index 000000000..faff47abc --- /dev/null +++ b/monkey_island/cc/ui/src/server_config/ServerConfig.js @@ -0,0 +1,12 @@ +import StandardConfig from './StandardConfig'; +import AwsConfig from './AwsConfig'; + +const SERVER_CONFIG_JSON = require('json-loader!../../../server_config.json'); + +const CONFIG_DICT = + { + 'standard': StandardConfig, + 'aws': AwsConfig + }; + +export const SERVER_CONFIG = new CONFIG_DICT[SERVER_CONFIG_JSON['server_config']](); diff --git a/monkey_island/cc/ui/src/server_config/StandardConfig.js b/monkey_island/cc/ui/src/server_config/StandardConfig.js new file mode 100644 index 000000000..f549f7112 --- /dev/null +++ b/monkey_island/cc/ui/src/server_config/StandardConfig.js @@ -0,0 +1,10 @@ +import BaseConfig from './BaseConfig'; + +class StandardConfig extends BaseConfig { + + isAuthEnabled () { + return false; + } +} + +export default StandardConfig; diff --git a/monkey_island/cc/ui/src/services/AuthService.js b/monkey_island/cc/ui/src/services/AuthService.js index 25e214088..ea5db3b8b 100644 --- a/monkey_island/cc/ui/src/services/AuthService.js +++ b/monkey_island/cc/ui/src/services/AuthService.js @@ -1,7 +1,8 @@ import decode from 'jwt-decode'; +import {SERVER_CONFIG} from '../server_config/ServerConfig'; export default class AuthService { - AUTH_ENABLED = true; + AUTH_ENABLED = SERVER_CONFIG.isAuthEnabled(); login = (username, password) => { if (this.AUTH_ENABLED) { @@ -96,5 +97,4 @@ export default class AuthService { return localStorage.getItem('jwt') } - } From 6f827e5aa9931bd108f1d1b3b5eb736e51033a1e Mon Sep 17 00:00:00 2001 From: Itay Mizeretz Date: Sun, 25 Feb 2018 14:16:57 +0200 Subject: [PATCH 17/19] Add json-loader to package.json --- monkey_island/cc/ui/package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/monkey_island/cc/ui/package.json b/monkey_island/cc/ui/package.json index e8fb04eaf..6759c4530 100644 --- a/monkey_island/cc/ui/package.json +++ b/monkey_island/cc/ui/package.json @@ -65,6 +65,7 @@ "core-js": "^2.5.1", "fetch": "^1.1.0", "js-file-download": "^0.4.1", + "json-loader": "^0.5.7", "jwt-decode": "^2.2.0", "normalize.css": "^4.0.0", "prop-types": "^15.5.10", From 38cf36e165e3fcd240ac2e1938461ca0544c4b8e Mon Sep 17 00:00:00 2001 From: Itay Mizeretz Date: Sun, 25 Feb 2018 17:06:40 +0200 Subject: [PATCH 18/19] append options to existsing ones --- .../cc/ui/src/services/AuthService.js | 24 ++++++++++++------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/monkey_island/cc/ui/src/services/AuthService.js b/monkey_island/cc/ui/src/services/AuthService.js index ea5db3b8b..c5a474ebf 100644 --- a/monkey_island/cc/ui/src/services/AuthService.js +++ b/monkey_island/cc/ui/src/services/AuthService.js @@ -40,7 +40,7 @@ export default class AuthService { }) }; - _authFetch = (url, options) => { + _authFetch = (url, options = {}) => { const headers = { 'Accept': 'application/json', 'Content-Type': 'application/json' @@ -50,15 +50,21 @@ export default class AuthService { headers['Authorization'] = 'JWT ' + this._getToken(); } - return fetch(url, { - headers, - ...options - }).then(res => { - if (res.status === 401) { - this._removeToken(); + if (options.hasOwnProperty('headers')) { + for (let header in headers) { + options['headers'][header] = headers[header]; } - return res; - }); + } else { + options['headers'] = headers; + } + + return fetch(url, options) + .then(res => { + if (res.status === 401) { + this._removeToken(); + } + return res; + }); }; loggedIn() { From ddc93a67fa08258632d8376fb396288f70a96408 Mon Sep 17 00:00:00 2001 From: Itay Mizeretz Date: Sun, 25 Feb 2018 18:23:52 +0200 Subject: [PATCH 19/19] Fix CR --- monkey_island/cc/auth.py | 8 ++++---- monkey_island/cc/environment/environment.py | 7 ++++++- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/monkey_island/cc/auth.py b/monkey_island/cc/auth.py index 99667d837..a32d6ec9d 100644 --- a/monkey_island/cc/auth.py +++ b/monkey_island/cc/auth.py @@ -10,10 +10,10 @@ __author__ = 'itay.mizeretz' class User(object): - def __init__(self, id, username, password): + def __init__(self, id, username, secret): self.id = id self.username = username - self.password = password + self.secret = secret def __str__(self): return "User(id='%s')" % self.id @@ -24,9 +24,9 @@ def init_jwt(app): username_table = {u.username: u for u in users} userid_table = {u.id: u for u in users} - def authenticate(username, password): + def authenticate(username, secret): user = username_table.get(username, None) - if user and safe_str_cmp(user.password.encode('utf-8'), password.encode('utf-8')): + if user and safe_str_cmp(user.secret.encode('utf-8'), secret.encode('utf-8')): return user def identity(payload): diff --git a/monkey_island/cc/environment/environment.py b/monkey_island/cc/environment/environment.py index 5cb992c7c..8eb97a999 100644 --- a/monkey_island/cc/environment/environment.py +++ b/monkey_island/cc/environment/environment.py @@ -15,4 +15,9 @@ def load_env_from_file(): return config_json['server_config'] -env = ENV_DICT[load_env_from_file()]() +try: + __env_type = load_env_from_file() + env = ENV_DICT[__env_type]() +except Exception: + print('Failed initializing environment: %s' % __env_type) + raise