Network Deanonymization

Network Security Spring 2021

The goals of this lab are to:

  1. Learn about network correlation attacks against anonymization networks
  2. Deanonymize network streams using passive or active correlation attacks

In this lab, you are given a container with a custom anonymizing proxy for HTTP requests. This proxy implements a fixed two-node circuit, i.e., an entry node and exit node. Clients can request the contents of a URL to be fetched on their behalf by wrapping a message containing a URL in encrypted RELAY messages, similar in principle to how onion routing messages are constructed.

To run the network, download the provided container in Canvas and – in separate terminals – run the two nodes as follows (replace with the IP address of your host on the docker virtual network):

# Run the exit node on
$ docker run -it --rm -p 5001:5001/tcp \
    netsec-lab-deanonymization node -l
# Run the entry node on, and use
# as the next node
$ docker run -it --rm -p 5000:5000/tcp \
    netsec-lab-deanonymization node -l -n

The nodes will bootstrap a circuit and will then be ready to accept client requests. The container also contains a fixed client implementation, which will issue several distinct requests to the anonymization network. The clients can be run as follows:

# Request URLs using as the entry node
$ docker run -it --rm -e RUST_LOG=info \
    netsec-lab-deanonymization client -e

Using your knowledge of correlation attacks, your goal is to link client IDs as presented in the client log messages with domains accessed as part of loading the client’s requested URL.

Lab Objectives

  1. Implement a correlation attack against the anonymization network
  2. Link clients to URL domains

Submission Instructions

Submit a text file with your client to domain mapping as well as a paragraph describing how your attack works.