What your apps say about you (and how to find out)
Session Description[edit]
We will start by showing how to easily set up a home network to capture your phone's Internet traffic, which is often enough to reveal sensitive information an app sends about you. Then we will demonstrate how to decrypt https traffic, which is often used to encrypt sensitive information. Some apps encrypt their traffic by rolling their own "homebrew" encryption, which can often be easily decrypted. We will briefly demonstrate how to decrypt this traffic in typical cases. Anyone interested or concerned about what their app may say about them will find this session informative.
What your apps say about you (and how to find out) | |||||
---|---|---|---|---|---|
Presenter/s | Antonio Espinoza, Jeffrey Knockel | ||||
Organization | |||||
Bio/s | Antonio is an OTF fellow and a PhD student in Computer Science at the University of New Mexico. He studies Dynamic Information Flow Tracking and its practical applications. Jeff is a senior researcher at the Citizen Lab and a PhD student in Computer Science at the University of New Mexico. He uses reverse engineering techniques to reveal how software behavior harms your Internet freedom. | ||||
Language | English | ||||
Topics |
Setup Summary[edit]
If you're curious, here is a summary of the steps we will be using in our demo to set up mitmproxy, which is a tool we will be using during our session to monitor SSL traffic sent from phones. Feel free to reference these instructions afterwards.
We are running mitmproxy on Ubuntu 14.04.4.
- Set up wireless access point.
- Click on the Network Manager icon
- Click Create New Wi-Fi Network
- Choose any network name (we call ours mitmproxy)
- Select WPA Security
- Enter a key password 8 characters or longer
- Click Create
- Edit the file /etc/NetworkManager/system-connections/connectionName (in our case we edit: /etc/NetworkManager/system-connections/mitmproxy)
- Change the line "mode=adhoc" to "mode=ap"
- Click on the Network Manager icon (again)
- Select Create New Wi-Fi Network
- For connection select the network you created and click Create
- We now need to configure the computer to redirect wireless traffic to mitmproxy which listens on port 8080
- sudo iptables -t nat -A PREROUTING -i wlan0 -p tcp --dport 80 -j REDIRECT --to-port 8080
- sudo iptables -t nat -A PREROUTING -i wlan0 -p tcp --dport 443 -j REDIRECT --to-port 8080
- Next start mitmproxy with the following command:
- mitmproxy -T --host --ciphers-client=RC4-MD5:RC4-SHA:DES-CBC3-SHA:AES128-SHA:AES256-SHA
- The -T and --host options are explained here
- The --ciphers-client option specifies the ciphers used between the phone and mitmproxy; we specify ciphers without perfect forward secrecy which simplifies decrypting SSL traffic
- mitmproxy -T --host --ciphers-client=RC4-MD5:RC4-SHA:DES-CBC3-SHA:AES128-SHA:AES256-SHA
- We can finally connect our phone to the network created in step 1
- Click settings
- Select Wi-Fi
- Select the network you created (ours is mitmproxy)
- Next we need to put the certificate on the phone
- Open a browser
- Navigate to the address mitm.it
- Click on the icon of the operating system your phone is using
- Follow the directions on the phone to add the new certificate
The following are optional instructions for decrypting SSL in Wireshark.
- In Wireshark
- Click Edit
- Click Preferences
- Click on the Protocols drop down menu
- Go to SSL
- Click the Edit button next to RSA keys list
- Click the new button
- Fill out the pop up window with the following information:
- IP Address to any
- Port to 443
- Protocol to http
- Key file to ~/.mitmproxy/mitmproxy-ca.pem
- Save the preferences
- Click OK
- Click Apply
- Click OK