Course Overview

To better defend against cyber attacks, we have to first understand how the attacks really work. That is also what we often called ``knowing the enemy''. Offense-based Cyber Security (3 semester hours) is exactly designed for this purpose, and aims to study and understand the techniques used in cyber offense.

Below is a typical scenario on how real attack is launched. To attack a computer system, the first step an attacker needs to do is often the reverse engineering, which is the process of discovering of high level information (e.g., the vulnerability) from the low level artifacts such as the machine code, the OS and the service software the target system is running, etc. To perform the reverse engineering of the machine code, we can do static analysis (disassemble, or decompile), or dynamic analysis (observe how the information exchanges). After having figured out the vulnerability if the victim system, the next step is to develop exploit, which is the attack payload or the often called shell code. To launch the attack, we also have to understand the defense techniques deployed in the OS, such as ASLR, DEP, etc. Once an attack succeeds, we also need to investigate the evidences related to the attack, which is often called the forensics.

Therefore, in this class, we will provide a comprehensive coverage of the fundamental methodologies, skills, legal issues, and tools used in reverse engineering, penetration testing, exploit generation, and forensics.

The learning outcome is students shall be able to understand and know

In support of this, the course will have heavy hands on projects towards training the basic skill sets related to achieving these goals.


Text Books

Required textbooks

Reference textbooks


Course Notes and Schedule

Week TOPICS TO BE COVERED
0 Course Logistics and Overview
Basics
1 Low Level Code (x86 assembly, disassemble)
2 Programming (GNU tool chain)
3 Operating Systems (Processes, Memory, System calls)
4 Networking (TCP/IP programming)
Vulnerability Analysis
5 Buffer Overflow (Stack and Heap Overflow)
6 Integer Overflow, Format String
Reverse Engineering
7 Static Analysis (objdump, IDA)
8 Dynamic Analysis (PIN, QEMU)
9 Blackbox Fuzzing
10 Whitebox Fuzzing
Exploit Development and Defense
11 Control flow hijacking
12 ASLR, DEP, CFI
13 Return oriented programming (ROP)
Forensics
14 Disk Forensics
15 Memory Forensics

NOTE: please access all the lecture notes posted in e-learning.


Office Hours


Prerequisites

We expect students should satisfy at least three of the following:


Course Projects


Course Policy

Late Policy

All late submissions will automatically lose 1 point per delayed day until the points in that project are gone.

Collaboration Policy

Students are encouraged to collaborate, particularly on the discussion on the course project. However, each individual must finish the project by him/her-self.

Cheating Policy

We will strictly follow the university policy on cheating and plagiarism which is available here. Please avoid. There are also several examples of Scholastic Dishonesty If you have any questions regarding this issue, please contact the instructor.


Course History

After teaching the graduate level Binary Code Analysis and Systems Security in the past two years (i.e., Spring 2012, Fall 2013), I realized that the students are more interested in the reverse engineering (RE) and penetration testing (PT), the offensive side of the cyber security. Inspired by a recent Offensive Computer Security class offered at FSU, as well as the conversation with our CSG students, I decided to refactor the course materials I developed earlier to particularly emphasize the RE and PT. Also, there are many undergraduate students who are highly interested in such a class. This eventually leads to the creation of this course. It is difficult to choose a proper name for this course. Thanks to our department head Dr. Gupta for suggesting this course name.


HOME SOURCE