CSE 484 Lab 3

Thanks a lot to V for helping out!
Out: Feb. 11
Due: Feb. 27, 11am

General Description

In this lab you'll be rooting a machine, reverse engineering a protocol, cracking a password, and getting away with it.

The Story - Corporate Sabotage

You're a freelance attacker, and you've been hired for a mission by the mysterious Yoshoo corporation. This is a faceless, international syndicate controlled by an unknown group of grad students. Yoshoo has recently learned that its doohicky software business has competition from the rising Anozira corporation. Yoshoo has tried to take Anozira out of business by seeding torrent sites with Anozira software. However, Anozira countered by requiring that each product has a unique product key - each of which costs $100,000. Yoshoo has hired you to infiltrate Anozira, gain access to the license generating software, and pass licenses as required back to Yoshoo.

You've managed to get hired by Anozira as a software engineer. In the past two days you've found out that Anozira is fairly protective of its license generating code; it's stored on some far, remote server (called morris.cs.washington.edu) that you don't have any access to. However, you learn that your boss administers a server in his office (called CSE484-Lab3), which has a license client on it. The client is called client, and seems to be able to connect to the license server. From a social engineering attack (more commonly known as casual conversation), you learn that in order to run the client, you need administrative privileges on CSE484-Lab3; you guess that it's probably located in /root. As expected, your boss doesn't trust you and gives you a meager user account on CSE484-Lab3. From social engineering, you learn the following:

Your plan of attack: (1) gain root on CSE484-Lab3 (2) Reverse engineer the protocol for client (3) Connect to the server and generate a new key.

What You Get

A virtual machine image of CSE484-Lab3 (server in your boss's office). Your login is student. Your password is cse484lab3. Download if from here: CSE484-Lab3-UbuntuServer8_10.tar.gz (~471M compressed and 1G extracted). You can use VMWare Player installed on the lab machines to load this VM. When you open the image, choose I moved it.

What You Should do

  1. (2 points) Use your ninja skillz to gain root on CSE484-Lab3. You can use any method you want (use metasploit, nessus, anything you find on-line). We suggest that you leverage your physical access to the server, make it boot off of a live CD, mount the harddrive, and give yourself elevated privileges. Record what you did in a file called report.txt
  2. (70 points) Reverse engineer the protocol for client. We suggest you use Wireshark (conveniently installed on the VM) to capture and analyze the packets. A big part of reverse engineering the protocol is seeing which parts of the packet structure change with each call and which stay the same. A part of the packet includes a cryptographically transformed password from /root/words with some pepper added. Once you figure out which part of the packet structure contains the ciphertext of the password and which cryptographic transformation is used, you should mount a dictionary attack on it to discover the password and pepper. A naive implementation of this takes 3 hours to run on attu. You can make an implementation that runs MUCH faster. Record how long your implementation runs, how long it takes to run if the password is not peppered, the actual password, actual pepper, description of protocol and packet structure in a file called report.txt. Note: you are required to calculate the amount of time it takes to crack an unpeppered (cryptographically transformed) password with your implementation so that you can compare how much additional computation is incurred by adding the pepper. You will not be graded on speed, only on the proportion of your results (peppered vs not peppered) and your explanation for them.
  3. (20 points) Extend the skeleton code, available here, to connect to license server and query for a new license. The server your code should connect to is morris.cs.washington.edu. You can either write code to capture the server's reply or just monitor what packets you receive in return via wireshark. Record your newly obtained license(s) in the report.txt file.
  4. (8 points) Write a paragraph on why you were able to easily compromise the CSE484-Lab3 server, what weaknesses allowed you to reverse engineer the protocol of client, and what steps you would take to harden the system if Anozira paid you more than Yoshoo.

What you need to give us

  1. report.txt containing: The file doesn't need to fancy. It can be bulletted.
  2. Source code for password cracker and readme on how to use it. The readme can be very brief (just how to build it and execute it)
  3. Source code for license-getting software that you wrote and a readme on how to use it. The readme can be very brief (just how to build it and execute it)
  4. Feedback on what you thought was easy/hard/confusing. Write a paragraph on your experience with this lab in report.txt

Random Hints

Extra Credit (potentially hard)

If you've mastered this lab, try do any/all of the following for extra credit:


FAQ and ERRATA