monkey/chaos_monkey
Daniel Goldberg a5135c3c3f For the 50 lines before we can use our logger, use modern print 2017-12-31 13:51:43 +02:00
..
exploit Fix shellshock bug where service name wasn't available 2017-11-07 10:30:28 +02:00
model Py3 + added additional string output. 2017-10-15 19:07:20 +03:00
monkey_utils/sambacry_monkey_runner Fix SambaCry not working for non-root user 2017-10-02 17:11:51 +03:00
network refine get_ips_from_interfaces 2017-10-24 11:51:53 +03:00
system_info Add logging, turn mimikatz into modern class. 2017-12-31 13:46:07 +02:00
test Don't crash when receiving unknown configuration variables 2016-09-27 23:56:26 +03:00
transport Fix inconsistent return value in send_head 2017-10-02 12:40:53 +03:00
build_linux.sh pyinstaller run clean 2015-12-31 09:57:29 +02:00
build_windows.bat remove fully qualified path 2017-10-02 12:40:53 +03:00
config.py Remove relative range option from config 2017-10-17 11:55:27 +03:00
control.py Add all known telemetry types to dict + don't except when unknown telem_type is received 2017-10-18 16:06:03 +03:00
dropper.py PEP8 + Python exception 2017-10-02 12:40:53 +03:00
example.conf Remove relative range option from config 2017-10-17 11:55:27 +03:00
main.py For the 50 lines before we can use our logger, use modern print 2017-12-31 13:51:43 +02:00
monkey-linux.spec fix linux paths on spec 2017-08-31 17:56:35 +03:00
monkey.ico first commit 2015-08-30 10:27:35 +03:00
monkey.py Simplified generic attack logic 2017-10-15 19:32:19 +03:00
monkey.spec sambacry: Add support for using both architectures 2017-08-30 10:16:54 +03:00
monkeyfs.py Added grequests to hidden imports. 2016-09-04 13:45:49 +03:00
readme.txt Update chaos monkey readme after it's tested 2017-10-18 17:07:27 +03:00
requirements.txt Require lower version of psutil for Windows 2003/XP and under 2017-10-09 14:39:11 +03:00
system_singleton.py PEP8 + Python exceptions 2017-10-02 12:40:53 +03:00
tunnel.py PEP8 + new exception format. 2017-10-02 12:40:53 +03:00

readme.txt

How to build a monkey binary from scratch.

The monkey is composed of three separate parts.
* The Infection Monkey itself - PyInstaller compressed python archives
* Sambacry binaries - Two linux binaries, 32/64 bit.
* Mimikatz binaries - Two windows binaries, 32/64 bit.

--- Windows ---

1. Install python 2.7. Preferably you should use ActiveState Python which includes pywin32 built in. 
    You must use an up to date version, at least version 2.7.10
    https://www.python.org/download/releases/2.7/
2.	Install pywin32 (if you didn't install ActiveState Python)
	Install pywin32, minimum build 219
		http://sourceforge.net/projects/pywin32/files/pywin32
3.	Add python directories to PATH environment variable (if you didn't install ActiveState Python)
	a. Run the following command on a cmd console (Replace C:\Python27 with your python directory if it's different)
		setx /M PATH "%PATH%;C:\Python27;C:\Pytohn27\Scripts
	b. Close the console, make sure you execute all commands in a new cmd console from now on.
4.	Install pip
	a. Download and run the pip installer
	https://bootstrap.pypa.io/get-pip.py
5.	Install further dependencies
	a. install VCForPython27.msi
		https://aka.ms/vcpython27
	b. if not installed, install Microsoft Visual C++ 2010 SP1 Redistributable Package
		32bit: http://www.microsoft.com/en-us/download/details.aspx?id=8328
		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:
		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
9.	To build the final exe:
		cd [code location]/chaos_monkey
		build_windows.bat 
		output is placed under dist\monkey.exe

--- Linux ---

Tested on Ubuntu 16.04 and 17.04.

1.	Install dependencies by running:
		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
		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
3.	To build, run in terminal:
		cd [code location]/chaos_monkey
		chmod +x build_linux.sh
		./build_linux.sh
	output is placed under dist/monkey

-- Sambacry --

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
	./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