From 73d9914923cdb8430886a6f95273b843f956a26c Mon Sep 17 00:00:00 2001 From: itsikkes Date: Thu, 28 Jul 2016 17:42:20 +0300 Subject: [PATCH] Improved .deb creation and installation process for Ubuntu Added support for Systemd Units for MongoDB and Island; Some more installation fixes --- monkey_island/deb-package/DEBIAN/control | 5 +++-- monkey_island/deb-package/DEBIAN/postinst | 9 ++++++++- monkey_island/deb-package/DEBIAN/prerm | 2 ++ .../deb-package/monkey_island_pip_requirements.txt | 10 ++++++---- monkey_island/linux/install.sh | 14 ++++++++++++++ .../linux/ubuntu/systemd/monkey-island.service | 10 ++++++++++ .../linux/ubuntu/systemd/monkey-mongo.service | 12 ++++++++++++ monkey_island/linux/ubuntu/systemd/start_server.sh | 4 ++++ monkey_island/requirements.txt | 4 +++- 9 files changed, 62 insertions(+), 8 deletions(-) create mode 100644 monkey_island/linux/install.sh create mode 100644 monkey_island/linux/ubuntu/systemd/monkey-island.service create mode 100644 monkey_island/linux/ubuntu/systemd/monkey-mongo.service create mode 100644 monkey_island/linux/ubuntu/systemd/start_server.sh diff --git a/monkey_island/deb-package/DEBIAN/control b/monkey_island/deb-package/DEBIAN/control index 8cdac69df..e56705e37 100644 --- a/monkey_island/deb-package/DEBIAN/control +++ b/monkey_island/deb-package/DEBIAN/control @@ -1,7 +1,8 @@ Package: gc-monkey-island Architecture: amd64 -Maintainer: Uri Hershcovits +Maintainer: Guardicore Homepage: http://www.guardicore.com Priority: optional Version: VERSION -Description: Guardicore Chaos Monkey C&C installation package +Description: Guardicore Infection Monkey Island (C&C) installation package +Depends: openssl, python-pip diff --git a/monkey_island/deb-package/DEBIAN/postinst b/monkey_island/deb-package/DEBIAN/postinst index 0890adad4..22f24e715 100644 --- a/monkey_island/deb-package/DEBIAN/postinst +++ b/monkey_island/deb-package/DEBIAN/postinst @@ -13,9 +13,16 @@ pip install -r $MONKEY_FOLDER/pip_requirements.txt --no-index --find-links file: rm -rf ${INSTALLATION_FOLDER} rm -f ${MONKEY_FOLDER}/pip_requirements.txt -mv ${MONKEY_FOLDER}/ubuntu/* /etc/init/ +cp ${MONKEY_FOLDER}/ubuntu/* /etc/init/ +if [ -d "/etc/systemd/network" ]; then + cp ${MONKEY_FOLDER}/ubuntu/systemd/*.service /lib/systemd/system/ + chmod +x ${MONKEY_FOLDER}/ubuntu/systemd/start_server.sh + systemctl daemon-reload +fi ${MONKEY_FOLDER}/create_certificate.sh service monkey-island start service monkey-mongo start + +echo Monkey Island installation ended \ No newline at end of file diff --git a/monkey_island/deb-package/DEBIAN/prerm b/monkey_island/deb-package/DEBIAN/prerm index 1fcb4754e..9c49e0cd7 100644 --- a/monkey_island/deb-package/DEBIAN/prerm +++ b/monkey_island/deb-package/DEBIAN/prerm @@ -5,3 +5,5 @@ service monkey-mongo stop || true rm -f /etc/init/monkey-island.conf rm -f /etc/init/monkey-mongo.conf +rm /lib/systemd/system/monkey-island.service +rm /lib/systemd/system/monkey-mongo.service \ No newline at end of file diff --git a/monkey_island/deb-package/monkey_island_pip_requirements.txt b/monkey_island/deb-package/monkey_island_pip_requirements.txt index 1ea580e18..288aea101 100644 --- a/monkey_island/deb-package/monkey_island_pip_requirements.txt +++ b/monkey_island/deb-package/monkey_island_pip_requirements.txt @@ -1,4 +1,6 @@ -flask -Flask-Pymongo -Flask-Restful -python-dateutil \ No newline at end of file +flask +Flask-Pymongo +Flask-Restful +python-dateutil +impacket +pycrypto \ No newline at end of file diff --git a/monkey_island/linux/install.sh b/monkey_island/linux/install.sh new file mode 100644 index 000000000..f230b58d2 --- /dev/null +++ b/monkey_island/linux/install.sh @@ -0,0 +1,14 @@ +#!/bin/bash + +MACHINE_TYPE=`uname -m` +if [ ${MACHINE_TYPE} == 'x86_64' ]; then + # 64-bit stuff here + ARCH=64 +else + # 32-bit stuff here + ARCH=32 +fi + +MONKEY_FILE=monkey-linux-$ARCH +cp -f /var/monkey_island/cc/binaries/$MONKEY_FILE /tmp +/tmp/$MONKEY_FILE m0nk3y $@ diff --git a/monkey_island/linux/ubuntu/systemd/monkey-island.service b/monkey_island/linux/ubuntu/systemd/monkey-island.service new file mode 100644 index 000000000..fe43875ac --- /dev/null +++ b/monkey_island/linux/ubuntu/systemd/monkey-island.service @@ -0,0 +1,10 @@ +[Unit] +Description=Monkey Island Service +After=network.target + +[Service] +Type=simple +ExecStart=/var/monkey_island/ubuntu/systemd/start_server.sh + +[Install] +WantedBy=multi-user.target \ No newline at end of file diff --git a/monkey_island/linux/ubuntu/systemd/monkey-mongo.service b/monkey_island/linux/ubuntu/systemd/monkey-mongo.service new file mode 100644 index 000000000..6c1fee8f8 --- /dev/null +++ b/monkey_island/linux/ubuntu/systemd/monkey-mongo.service @@ -0,0 +1,12 @@ +[Unit] +Description=Monkey Island Mongo Service +After=network.target + +[Service] +ExecStart=/var/monkey_island/bin/mongodb/bin/mongod --quiet --dbpath /var/monkey_island/db +KillMode=process +Restart=always +ExecStop=/var/monkey_island/bin/mongodb/bin/mongod --shutdown + +[Install] +WantedBy=multi-user.target \ No newline at end of file diff --git a/monkey_island/linux/ubuntu/systemd/start_server.sh b/monkey_island/linux/ubuntu/systemd/start_server.sh new file mode 100644 index 000000000..817da7a55 --- /dev/null +++ b/monkey_island/linux/ubuntu/systemd/start_server.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +cd /var/monkey_island/cc +python main.py \ No newline at end of file diff --git a/monkey_island/requirements.txt b/monkey_island/requirements.txt index 9d203c6c7..288aea101 100644 --- a/monkey_island/requirements.txt +++ b/monkey_island/requirements.txt @@ -1,4 +1,6 @@ flask Flask-Pymongo Flask-Restful -python-dateutil \ No newline at end of file +python-dateutil +impacket +pycrypto \ No newline at end of file