ECS 153 Homework 3
Assigned Monday, May 15, 2006
Due Tuesday, May 23, 10:00pm
Attacking Phish Fry
In the previous assignment, we developed Phish Fry, a Firefox extension to
detect phishing web pages. In this assignment, we will be playing the role
of an attacker, trying to fool Phish Fry into thinking our web pages are not
phishy, when in fact they are. We will also attempt to find real web sites
that are flagged as phishy by Phish Fry, but that are not.
You will not necessarily be attempting to attack your own extension.
Instead, you will be attacking the most accurate of your classmates' extensions.
Three extensions had the lowest false-negative rate, that is, they
misidentified the fewest phishy web pages as not phishy. You will be attacking
at least two of these (you may choose which two.)
In addition to these extensions, you will be looking for a (legitimate)
web site that my extension thinks is phishy. Mine had a higher false-negative
rate than some of yours, but it produced no false positives in the web 100,
that is, it didn't identify any of the Web 100 web sites as phishy.
Part 0: Getting Started
In this assignment, you will be working in groups of three. You may work in
different groups than last time, or in the same groups if you prefer.
The extensions you will be attacking, along with their reports, are
available in the following tarball:
extensions.tgz
Extract the archive with:
tar xzf extensions.tgz
After extracting it, you will find the following subdirectories:
ext1
ext2
ext3
juan
The ext1, ext2, and ext3 directories contain extensions from the class. Each
directory contains a phishfry.xpi file, as well as the team's self-evaluation,
evaluation.txt. The juan directory contains my extension. I didn't write a
report, so there isn't a self-evaluation there.
First, pick which two of the class's extensions you will attack. You may
want to read each team's self-evaluation to help you choose; that may give you
an idea which one you think would be easier to attack. It should also the
biggest clue in how to attack it: the checks the extension did not implement,
or the things it fails to catch, should be described in it. Feel free to
choose your own extension as one of the two you attack.
You may want to examine an extension's source code. This is easy,
since it's written in javascript (and isn't compiled.) First, change
directories to the extension you want to look at, and unzip the .xpi file like
so:
unzip phishyfry.xpi
Then change to the chrome directory:
cd chrome
Unzip the jar file you find there:
unzip phishyfry.jar
The extension's source code is now in content/phishyfry/phishFryOverlay.js
Part 1: Find a False Positive (5 points)
For this part, you must find a web site (that you didn't create) that my
evaluator identifies as phishy, but is not. This isn't impossible, there just
don't happen to be any in the Web 100. Remember: this is only a false positive
from my extension, not from any of yours. (All of yours had false positives
in the Web 100, which isn't much of a challenge.)
Part 2: Create Phishy Web Pages (Open ended, 5-10 points per page)
For this section, you will create phishy web pages. What makes them phishy?
Their job is to induce the user to click on a link, where presumably he will
enter their credit card information or paypal password. Whether that page is
successful is outside the scope of this assignment; your job is to embed a link
to a the following URL:
http://169.237.7.129/~juan/phish.htm
Since the target is numeric, most of your extensions will flag the page
as phishy. Your job is to trick the extensions into thinking the page isn't
phishy.
You can make multiple phishy web pages to boost your score, but each web
page you submit must use a different trick or technique to fool the extensions.
Don't waste my time:
If I think you're trying to scam me with trivially different web pages,
I reserve the right to deduct points from your score.
Trick two extensions: 5 points
If your phishy page manages to trick both extensions you chose, you'll get five
points. These must be the same two extensions for all your pages, and they
must be from the class. (My extension had a fairly high false negative rate,
so it's too easy to attack. Sorry.)
Trick all three extensions: 10 points
If you manage to trick all three class extensions with the same page, you'll
get 10 points for that page.
Part 3: Writeup (20 points)
You must convince me that each of your attacks is distinct, and that's what
you'll do in the writeup. Tell me how each method differs from the rest.
I am the final arbiter on what constitutes a unique attack, but some things
that probably won't be:
- Using two different remote sites to hide the target URL.
This is effectively one technique, just with two different sites.
- Hiding the target URL with JavaScript with very slight differences.
Again, same technique, different implementations.
Part 4: Attack ext3's Phishiness Indicator (Optional, 10 points)
The third extension took an interesting approach: not only did it identify
phishy web pages, but it identified each potentially phishy link on a web page,
and modified it to read {PHISHY} in red. However,
it modifies it after the page is loaded, so a script running in the web page
would be able to detect the change, and override it, either by changing color
schemes, or by removing the {PHISHY} text from the
link. Write a web page that defeats the visual phishiness indicator created by
this extension.
Handing It In
Your writeup should again be in PDF format, and named report.pdf. You may put
the URL you found for section 1 anywhere in this report. Please describe each
of the attacks you implemented for section 2 in the report as well. Like
last time, make a hw3 subdirectory. Make a urls subdirectory of that, and make
a unique subdirectory for each phishy web page you create, and place a single
html file in it. Your final directory structure should look something like:
hw3
report.pdf
urls
<subdirectory 1>/index.htm
<subdirectory 2>/index.htm
Create a tarball of the whole thing like so:
tar czf hw3.tgz hw3/*
Hand it all in with the handin command,
handin cs153 hw3 hw3.tgz