COMP3657 Courwork guidence and FAQs

Coursework Guidance
You will need to do specific attacks in a controlled environment and answer some questions regarding each of them. Therefore you will need to install a VM, the VM that this tutorial will take you through is for virtual box.
For the experiments in this section, you should first set up your virtual machine and then implement specific attacks (and countermeasures) on that VM. We will call this VM as SEED VM for the rest of the term.
If you prefer to create a SEED VM on your local computers, there are two ways to do that: (1) use a pre-built SEED VM (recommended way); (2) create a SEED VM from scratch.
Use a pre-built SEED VM. We provide a pre-built SEED Ubuntu 20.04 VirtualBox image (SEED-Ubuntu20.04.zip, size: 4.0 GB), which can be downloaded from the following links.
· Google Drive
· DigitalOcean
· VM Manual: follow this manual to install the VM on your computer. Follow the instructions on this link exactly to successfully install a VM. Please read through the documentation and take note of used credentials before continuing.

Once you have completed this, follow the container set up PDF instructions located with these instructions on blackboard. You will also need to download the Courseworksetup.zip folder. The documentation for this is quite detailed and can be considered complex. I would recommend reading these through however here are the steps that is needed to set up 3 working ‘machines’ on a LAN through your terminal.
If you cannot user docker you may need to update your VM and install docker as explained in the docker guide. You do not have to use docker desktop. This is completed via the command line. From your terminal navigate to where you have unzipped your courseworksetup file. You should have a structure of a folder called volumes and a docker-compose.yml file.
1. From this folder run the command dcbuild. This will create your ‘machines’
When you want to run your machines
2. Run the command dcup
3. To identify what machines you have run dockps
To start a specific ‘machine’
4. Create a new terminal window and run docksh .
a. Note: while not necessary I would recommend using a different colour terminal for each machine.
b. In the example shown from container set up this could be docksh b1
5. To end the machines and their process use dockdown
When running python commands from the VM terminal you will need to use Python3. E.g. python3 sever.py

If you have an apple M1 chip and are having issues, try the following
1. Please try using UTM (free) and the image from the tutorial.
1. Convert the image to qcow2 using this tutorial https://computingforgeeks.com/convert-virtualbox-disk-image-vdi-to-qcow2-format/
1. Open UTM, click add, select “Download prebuilt from UTM Gallery…”
1. Select “ReactOS” (x64 architecture).
1. Open in UTM.
1. Close, Download and test it launches ReactOS.
1. Right click ReactOS in UTM, click edit.
1. Go to drives and Delete the first IDE drive with a type “Disk image” (hdd.img)
1. Click “New drive” and Import, select “SEED-Ubuntu20.04.qcow2”, Save.
1. It should now work (it’s just a bit slower as this is emulating an x86 architecture rather than using hardware virtualisation technology).
1. Problems?
1. Try redownloading UTM from the website, not the app store.
1. Try putting the .qcow2 file on your desktop with ReactOS.utm (environment created by UTM).
Apple M1 instructions provided by Professor Chris Willcox

Q: What packages can I use for this coursework?
A: You should use the packages identified in the coursework specification, namely the socket, ssl and scapy packages. You will also notice some additional utility packages in the MITM template file.
There are no hard requirements for part three, however I strongly recommend using Crypto.PublicKey import RSA

Q: How should I create my keys and certificates?
A: You should use OpenSSL

Q: What type of MITM attack should be implemented?
A: You should use ARP poisoning attack to check the network packets.

Q: I found code online which looks similar to what I need. Can I use it?
A: Yes, but you must cite the code in both the written report and in the comments at the top of the code. As a common practice in any software development, you first try to search and make sure you are not the first one who is trying to make it work. However, it is one of my tasks to make sure you are doing something original. So, please adapt the code and make sure you have cited it. Otherwise, it is very likely that you get caught (Plagiarism and Collusion). This incurs a very severe departmental penalty