Cuckoo Installation on Ubuntu 20

This post is currently being updated to latest versions, including all the feedback received. Thanks for the support.

(Screenshots and Video coming soon)

This tutorial will give you a step by step guide to using Ubuntu 20 Desktop and VirtualBox to create a Cuckoo Malware Analysis environment.

Installation of Ubuntu 20 Desktop

Step 1: Go to https://ubuntu.com/download/desktop and download the .iso.

Step 2: Using the hypervisor of your choice (VMWare Workstation / VirtualBox / VMWare ESXi etc) install the base Ubuntu 20 Desktop.

Make sure that you have set enough RAM and Hard Drive space for your Ubuntu 20 Desktop as you will be running a Windows 7 Virtual Machine inside it with a minimum 4GB RAM and 60 – 80GB Hard Drive.

Step 3: When installing make sure you don’t call your username “cuckoo” otherwise this may conflict with the installation later.

Step 4: Make sure that your Virtual Machine has the VT-x capability enabled. Also make sure you have assigned enough RAM as you will need at least 4GB for your Windows 7 Virtual Machine.

Step 5: Once your Ubuntu 20 Desktop is ready then log in.

Step 6: Click Activities (Top Left) and then type Terminal and click the Terminal icon to start it.

Step 7: You should now have a Terminal window.

Step 8: Make sure that your Ubuntu Desktop is fully updated by running

sudo apt-get update && sudo apt-get upgrade -y

Step 9: Enter your password to run the command as sudo root.

Step 10: If prompted select y to continue. Once the update and upgrade has finished you will be returned to the terminal prompt.

Step 11: It is good security practice to have a separate user to run the sandbox. Now we will create our user:

sudo adduser cuckoo

Step 12: Choose a password for your new user.

Step 13: Enter your user information in the fields as it requests. Alternatively you can just leave blank and press enter.

Step 14: Press Y to confirm the information entered. This will then return you to the terminal prompt.

Step 15: Now we are going to add that user to the sudo group. Type

sudo adduser cuckoo sudo

Step 16: Now we will install the prerequisites for cuckoo.

Step 17: We need to install curl so type

sudo apt-get install curl

and then we need to download the get python pip command, so type

curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py

Step 18: Now we need to install python so type

sudo apt-get install python

Step 19: Now we need to install python-pip and this can be done using the downloaded file from step 17. So type

sudo python get-pip.py

Step 20: Now we are going to install the pre-requisites needed to install both VirtualBox and Cuckoo so type

sudo apt-get install -y python-dev libffi-dev libssl-dev libfuzzy-dev libtool flex autoconf libjansson-dev git

Step 21: Once these have installed now we need to install the Python supporting tools so type

sudo apt-get install -y python-setuptools

Step 22: Now we will install jpeg and interface supporting tools

sudo apt-get install -y libjpeg-dev zlib1g-dev swig

Step 23: Now to install mongodb by typing

sudo apt-get install -y mongodb

Step 24: Cuckoo’s recommended database is PostgreSQL so install it by running

sudo apt-get install -y postgresql libpq-dev

Step 25: Now we move on to installing VirtualBox. The current version of Virtual Box is 6.1.

Step 26: Now we will install Virtual Box 6.1 so type

sudo apt-get install -y virtualbox

Step 27: Now we will download and install all the plugins needed for cuckoo to work. Change to your Downloads folder by typing

cd Downloads/

or if you are not currently in your home directory type

~/Downloads

Step 28: So now we start with installing Volatility type

git clone https://github.com/volatilityfoundation/volatility.git

then

cd volatility

Step 29: Next we are going to build it type

sudo python setup.py build

now install it

sudo python setup.py install

Step 30: Now go back up to your Downloads directory type

cd ..

Step 31: Now were going to install Distorm3 type

sudo -H pip install distorm3==3.4.4

Step 32: Now were going to install Yara so type

sudo -H pip install yara-python==3.6.3

Step 33: Now were going to install ssdeep so type

sudo apt-get install -y ssdeep

Now verify its installed by typing

ssdeep -V

You should get 2.14.1 as the version.

Step 34: Now we will install pydeep by typing

sudo -H pip install pydeep

we can check it installed ok by typing

pip show pydeep

Step 35: Now we will install openpyxl by typing

sudo -H pip install openpyxl

Step 36: Now install ujson by typing

sudo -H pip install ujson

Step 37: Now install jupyter by typing

sudo -H pip install jupyter

Step 38: Now we will install TCPDump to enable packet capture analysis. Type

sudo apt-get install tcpdump

it may already be installed. Now type

sudo apt-get install libcap2-bin

it may already be installed. Type

sudo setcap cap_net_raw,cap_net_admin=eip /usr/sbin/tcpdump

and then

getcap /usr/sbin/tcpdump

Step 39: We need to install and disable apparmor due to it silently protecting the Ubuntu operating system by securing applications and we want TCP Dump to run correctly by typing

sudo apt-get install -y apparmor-utils

and then type

sudo aa-disable /usr/sbin/tcpdump

Step 40: Now finally we can install Cuckoo Sandbox.

Step 41: Type

pip install -U pip setuptools

it may say that the requirements are already met.

Step 42: Now we will install Cuckoo so type

sudo -H pip install -U cuckoo

Step 43: Now to create the default directory’s for Cuckoo type

cuckoo

Step 44: Now we need to setup the virtualbox environment. We need to install net-tools so type

sudo apt install -y net-tools

Step 45: Now type

ifconfig

to find the IP address information of your Virtual machine.

Step 46: Now we want to create a host only network adapter so type

vboxmanage hostonlyif create

Step 47: We now want to set the IP address for the virtual interface so type

vboxmanage hostonlyif ipconfig vboxnet0 --ip 192.168.56.1

Step 48: Now if you run

ifconfig

again you will see your interface and IP address you have just set.

Step 49: We want to make these changes survive a reboot and set automatically during system startup. So we need to make a new directory so type

sudo mkdir /opt/systemd/

then

sudo nano /opt/systemd/vboxhostonly

and copy the following code into the file:

!/bin/bash
hostonlyif create
vboxmanage hostonlyif ipconfig vboxnet0 --ip 192.168.56.1

then Ctrl + X to exit , Y to save and enter to write file.

Step 50: Now we need to make the file executable so type

cd /opt/systemd/

then

sudo chmod a+x vboxhostonly

Step 51: now we need to create a service so type

sudo touch /etc/systemd/system/vboxhostonlynic.service

Step 52: Edit the file by typing

sudo nano /etc/systemd/system/vboxhostonlynic.service

and then typing in:

Description=Setup VirtualBox Hostonly Adapter
After=vboxdrv.service

[Service]
Type=oneshot
ExecStart=/opt/systemd/vboxhostonly

[Install]
WantedBy=multi-user.target

then Ctrl + X to exit , Y to save and enter to write file.

Step 53: Now to install the service and ensure it loads at boot time type:

systemctl daemon-reload
systemctl enable vboxhostonlynic.service

That is the networking complete.

Step 54: We are now going to create a Windows 7 SP1 x64 Virtual Machine using Virtual Box. *Please note you will need your own licence for this part

Step 55: Click on the Menu icon bottom left and then type or select Virtual Box.

Step 56: Once you have selected it the Oracle VirtualBox Manager should start.

Step 57: We are now going to create our Windows 7 Virtual Machine. So click on the New icon to create a new Virtual Machine.

Step 58: Enter a name, for ease we have called our Virtual Machine cuckoo1. Choose your OS that you are installing.

Step 59: Now click next. Choose the RAM size you want to allocate. Ideally minimum is 4GB. For my one I will set to 7024 MB (7GB ish).

Step 60: Click next. Create the virtual hard disk by clicking Create.

Step 61: Select VDI and click Next.

Step 62: Select Dynamically allocated and then click next.

Step 63: Choose your Hard Disk size. I have set to 80 GB.

Step 64: Now click Create.

Step 65: Now you need to mount the Windows 7 iso file to your Ubuntu Virtual Machine.

Step 66: Click Ok. THis will now mount the Windows 7 .iso into the Virtual Machine. Now click on Settings in VirtualBox and then go to Storage. Now click on the CD (Empty). TO the right or Optical Drive click the down arrow next to the CD and choose the Host Drive as the CD Choice.

Step 67: Click Ok to close, then start to start your Virtual Machine. Follow the normal Windows 7 Installation. I have called my Windows 7 Virtual Machine cuckoo1.

Step 68: Now your Windows 7 Virtual Machine is built log in. We are going to make some changes to make the Virtual Machine vulnerable on purpose. Go to start and type in Group. You should see the Edit Group Policy option.

Step 69: Expand Computer Configuration > Windows Settings > Security Settings > Local Policies > Security Options. Scroll down to the User Account Control options.

Step 70: Right click the “User Account Control: Behaviour of the elevation prompt for administrators in Admin Approval Mode” and select Properties. Using the drop down menu select Elevate without prompting and click ok.

Step 71: Right click the “User Account Control: Detect application installations and prompt for elevation” and select Properties. Check the Disabled option and click ok.

Step 72: Right click the “User Account Control: Run all administrators in Admin Approval Mode” and select Properties. Check the Disabled option and click ok.

Step 73: Now we are going to disable the automatic install of Windows Updates. Go to Computer Configuration > Administrative Templates > Windows Components > Windows Update and right click Configure Automatic Updates and edit. Select Enabled, 2- Notify for download and notify for install, then click ok.

Step 74: Now we need to remove the Windows protection from the network. Go to Computer Configuration > Administrative Templates > Network > Network connections > Windows Firewall > Domain Profile > Windows Firewall and change “Protect all network connections” to Disabled.

Step 75: Next we need to disable Windows Defender as we have no need for anti virus or malware protection. We do this by going to Computer Configuration > Administrative Templates > Windows Components > Windows Defender Antivirus then set “Turn off Windows Defender Antivirus” to Enabled.

Step 76: The easiest way to get these files to your Windows 7 Virtual Machine is to install VirtualBox Guest Additions and create a shared folder.

You do this by clicking Devices in the VirtualBox window and choose install VirtualBox Guest Additions. This will then mount a CD into your Virtual Machine and you can then you can run from the CD in your Virtual Machine.

Once you have set up the shared folder reboot your Windows 7 Virtual Machine and then login and you can go to File explorer in Windows and type \\vboxsvr\*Downloads and this will take you to the mapped shared folder. *I shared my Ubuntu Downloads folder.

Step 77: Now we need to install Python 2.7 for windows. You can download it from https://www.python.org/ftp/python/2.7.8/python-2.7.8.amd64.msi Place this .msi into your shared folder and run from your Windows 7 Virtual Machine. Next download Python Pillow from https://pypi.python.org/packages/2.7/P/Pillow/Pillow-2.5.3.win-amd64-py2.7.exe#md5=33c3a581ff1538b4f79b4651084090c8 Place this .msi into your shared folder and run from your Windows 7 Virtual Machine.

Step 78: Now install Adobe Reader, Flash, Java and Microsoft Office (Optional) and any other applications you think yo may need.

Step 79: Open up Internet Explorer and Adobe Reader and any other application that may have a splash screen which may interfere with the operation of the cuckoo client.

Step 80: Upload the agent.py file from your Ubuntu host which can be found in the

~/.cuckoo/agent

directory on your Ubuntu machine. You can do this by copying it into the Downloads or shared folder with your Virtual Machine.

cd ~/.cuckoo/agent

then

cp agent.py ~/Downloads

Step 81: Copy the agent.py file and place it in C:\Users\*USERNAME*\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup this will then start the agent.py on boot up of the Virtual Machine. On the Windows 7 Virtual Machine you will need to Show hidden files and folders for the AppData folder to be seen.

You can do this by going to file explorer and then Organizse > Folder Options.

Step 82: Once you are happy that you have all the required software installed reboot the Windows 7 Virtual Machine and log in. You should get a blank command window appear. If you get a network popup click allow.

Step 83: You can now minimise the Virtual Machine down.

Step 84: So now we have created our Windows 7 Virtual Machine we need to set up the networking to create the sandbox environment. Click on the VirtualBox Manager and click settings for the Windows 7 Virtual Machine. Select Network and then change Attached to: Host-only Adapter and select vboxnet0 in the Name. Click OK.

Step 85: Now you need to make this persistent. Type

sudo apt-get install -y iptables-persistent

and choose yes when it prompts you to save current config

Step 86: Now we need to configure IP forwarding so an internet connection gets routed from the host machine to the guest Virtual Machine. We will use iptables to set these network forwarding rules:

sudo iptables -A FORWARD -o eth0 -i vboxnet0 -s 192.168.56.0/24 -m conntrack --ctstate NEW -j ACCEPT

then

sudo iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

then

sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Step 87: You can check your rules by running

sudo iptables -L

Step 88: Now enable IP forwarding in the kernel so that these settings are set to Active (required for WWW Internet access):

echo 1 | sudo tee -a /proc/sys/net/ipv4/ip_forward

then

sudo sysctl -w net.ipv4.ip_forward=1

Step 89: Now we need to make sure that the IP forwarding starts up after a reboot. Type

sudo nano /etc/sysctl.conf

and remove the # from

net.ipv4.ip_forward=1

then Ctrl + X to exit , Y to save and enter to write file. Now run

sudo su –

then

iptables-save > /etc/iptables/rules.v4

Step 90: Now we need to configure our Windows 7 Virtual Machine IP Address information. Open the network adapters in and set up the following information:

Step 91: Once you click OK and OK you should then get internet connectivity again.

Step 92: We now want to take a snapshot of the Virtual Machine, so click Machine > Take Snapshot. Name it Snapshot 1 and click ok.

Step 93: We now need to finish off the configuration of the Cuckoo services on our Ubuntu 20 workstation. All the Cuckoo configuration files are located in the

~/.cuckoo/conf

or from your home directory

cd .cuckoo/

directory.

Step 94: Change into the config directory type

cd ~/.cuckoo/conf

Edit the cuckoo.conf file by 

sudo nano cuckoo.conf

Ensure that the following are set: 

machinery = virtualboxmemory_dump = yes

and resultserver

resultserver ip = 192.168.56.1

then Ctrl + X to exit , Y to save and enter to write file.

Step 95: Edit the auxiliary.conf file by 

sudo nano auxiliary.conf

ensure that the sniffer is

enabled = yes

then Ctrl + X to exit , Y to save and enter to write file.

Step 96: Edit the virtualbox.conf file by

sudo nano virtualbox.conf

and ensure that virtualbox

mode = gui

and

machines = cuckoo1

(change name to your Windows 7 Virtual Machine Name if required and

label = cuckoo1

and

platform = windows

and

ip = 192.168.56.101

and

snapshot = Snapshot 1

then Ctrl + X to exit , Y to save and enter to write file.

Step 97: Edit the processing.conf file by

sudo nano processing.conf

and ensure that memory

enabled = yes

then Ctrl + X to exit , Y to save and enter to write file.

Step 98: Edit the memory.conf file by

sudo nano memory.conf

and ensure that basic

guest_profile = Win7SP1x64

then Ctrl + X to exit , Y to save and enter to write file.

Step 99: If you require another Operating System then you can get a full list of the supported profiles by running

vol.py --info |grep Profiles -A48

Step 100: Edit reporting.conf file by

sudo nano reporting.conf

and ensure that singlefile Enable creation of report.html

enabled = yes

and mongodb

enabled = yes

then Ctrl + X to exit , Y to save and enter to write file.

Step 101: Now shutdown your Windows 7 Virtual Machine, then reboot your Ubuntu Virtual Machine. Log back in as the same user (do not log in as the cuckoo user)

Step 102: Now to use Cuckoo you first need to update Cuckoo’s scoring signatures so open a Terminal and type

cuckoo community

Step 103: Now open VirtualBox Manager and start your cuckoo1 Virtual Machine. Log in so you have the blank command window showing and then minimize the Virtual Machine.

Step 104: Now in Terminal window 1 type

cuckoo

and press enter. You will get the starting cuckoo screen and it will sit waiting for analysis tasks.

Step 105: In the second Terminal window type

cuckoo web runserver 0.0.0.0:8000

Step 106: Now you can visit the Cuckoo Web Server via 127.0.0.1:8000 or the Virtual Machine IP Address on your local network via your browser.

Finally a Fully operational Cuckoo Sandbox. Their are lots more settings within the Cuckoo conf files and you can hook up MISP and other services directly to it.

I hope this tutorial is helpful and comments are always welcome.