Syllabus
Syllabus
Course Information
Course Title:Modern Binary Exploitation
Course Number: CSCI 4968
Credit Hours: 4
Semester / Year: Spring 2015
Meeting Days: Tuesday/Friday 24PM
Room Location: Walker 5113
Course Website: http://security.cs.rpi.edu/courses/binexpspring2015/
Prerequisites (one of the following or permission of instructor):
● CSCI 2500 Computer Organization
● ECSE 2660 Computer Architecture, Networks, and Operating Systems
Instructor
Name: Bülent Yener
Office location:
Lally 310
Email Address: [email protected]
Teaching Assistant(s)
TAs:
RPISEC
TA Office Location:
Sage 3101
TA Office Hours:
Wednesday 710PM
TA Email Address: [email protected]
Course Description
Cybersecurity is one of the fastest growing fields in computer science, though its
study is rarely covered in academia due to its rapid pace of development and its technical
specificity. Modern Binary Exploitation will focus on teaching practical offensive
security skills in binary exploitation and reverse engineering. Through a combination of
interactive lectures, hands on labs, and guest speakers from industry, the course will offer
students a rare opportunity to explore some of the most technically involved and
fascinating subjects in the rapidly evolving field of security.
The course will start off by covering basic x86 reverse engineering, vulnerability
analysis, and classical forms of Linuxbased userland binary exploitation. It will then
transition into protections found on modern systems (Canaries, DEP, ASLR, RELRO,
Fortify Source, etc) and the techniques used to defeat them. Time permitting, the course
will also cover other subjects in exploitation including kernelland and Windows based
exploitation.
● Term Projects: There will be two projects over the course of the semester. In
these projects students will be exploiting a known vulnerability in a realistic piece
of software as selected by the instructors. Students will be expected to analyze the
vulnerability and produce a working exploit with a writeup detailing the
vulnerability and how it can be leveraged to gain privileged information. Students
may work in groups of up to two for projects.
See the Grading Criteria and Course Calender sections for further details.
● Labs:
60%, 10 labs equally weighted at 6%
○ Labs will typically consist of 3 problems, a C, B, and A problem with each
problem harder than the last. Lab grading works as follows.
■ Students who complete only the C problem will receive a C
■ Students who complete both the C and B problems will receive a B
■ Students who complete all three lab problems will receive an A
■ There may be one or two A+ problems throughout the semester
that can be used to increase the letter grade of any previous lab
○ If a student does not complete the first problem before the end of lab, they
will receive a letter grade reduction for the assignment.
○ In order to receive full credit for a problem the student must submit their
exploit code, the flag, and may be asked to explain their work upon
submission to be checked off.
○ Labs problems will be introduced by the end of lecture. The first problem
will be due in person by the end
of the associated lab period. All other
problems become homework, and are due
at the start of class,
exactly
one week after the associated lab period .
○ Labs submitted late will receive a letter grade reduction and MUST be
submitted no later than the class following their original due date,
anything later will not be accepted.
● Term Projects:
40%, two projects equally weighted at 20%
○ Project specific grading breakdowns will be given when they are assigned.
○ Project checkpoints exist to keep you on pace with projects, failing to
make checkpoints will result in a 5% reduction to the term project grade.
○ Projects submitted late will receive a 10% reduction per day late, and will
not be accepted for credit after 5 days.
There will be servers dedicated to hosting the problems to be completed by students for
both the lab and projects. The submitted exploits/solutions can be developed in any
practical manner, but ultimately must work on the course servers to receive credit.
Grades and course progress will be made available to students throughout the semester. A
grade can only be appealed within 5 days of the grade being made available to students.
Questions regarding a grade on an assignment should first be directed at the class TAs.
4/14 Stack Cookies & Misc Concepts Bypassing stack cookies, Lecture
signed/unsignedess issues,
uninitialized data, etc
5/12 Automation & The Future of Exploitation Fuzzing, taint analysis, Lecture
dynamic instrumentation,
SMT/SAT solvers
Academic Integrity
Studentteacher relationships are built on trust. For example, students must trust that
teachers have made appropriate decisions about the structure and content of the courses
they teach, and teachers must trust that the assignments that students turn in are their
own. Acts that violate this trust undermine the educational process. The Rensselaer
Handbook of Student Rights and Responsibilities defines various forms of Academic
Dishonesty and you should make yourself familiar with these. In this class, all
assignments that are turned in for a grade must represent the student’s own work. In cases
where help was received, or teamwork was allowed, a notation on the assignment should
indicate your collaboration.
Submission of any assignment that is in violation of this policy will result in a penalty of
a zero for the assignment for all parties involved.
Repeated offenses will result in a
failing grade for the course.
If you have any question concerning this policy before submitting an assignment, please
ask for clarification.
Due to the experimental nature of the course and assignments being offered, the schedule,
pacing, and other elements of the course may be modified depending on the rate at which
students are progressing. Any changes made to the curriculum will be clearly defined and
communicated to the students as well as being documented accordingly.