This page will be organized more cleanly in the future. It includes
materials for the entire semester, not just the beginning.
-
Notes on x86 architecture
(and useful exploration links
for Linux asm)
-
NASM (The Netwide Assembler) (with free download for Linux,
Windows, and several other operating systems)
- PC Assembly
Language tutorial (large, in many languages, based on NASM)
- gcc-based assembly: Just do: gcc -o myfile -g -O0 file.s
Then debug via gdb myfile or just run: ./myfile
(Mote that gdb can debug binary files created either
by gcc or by NASM.)
- To generate gcc-based assembly from source (with commented
source lines):
gcc -c -g -Wa,-alh,-L file.c > file.s
or: gcc -c -g -Wa,-ahls=file.s file.c
(man as: -al: emit assembly listing, -ah: emit high level
C/C++ source; -L: keep local symbols; NOTE: "-g" is
required, and "-S" is purposely omitted, since high level
C/C++ source is apparently emitted only as part of full
compilation)
- CPU Layout (will be added)
- Cache coherency (will be added)
- Multicore architectures (e.g. AMD Hypertransport) (will be added)
- GPGPU architectures (General Purpose Graphics Processing Units) (will
be added)
- NVIDIA Cuda
(including NVIDIA G8
and CUDA Overview)
-
Intel Larrabee
-
OpenCL (a newer standard)
-
Hacker Curriculum (hacking and ethics):
- "There are several excellent academic research labs that are
aware of hacker research and appreciate hacker skills. We are
grateful for your support! Unfortunately, to many others fellow
academics the hacker community is a stereotyped unknown that is
both distrusted and discounted. We would like to fix this and
make sure that the ethical hacker community gets acknowledged
for what it is - a national resource of great value."
- Security issues relating to buffer overflows, escalation
of privileges
-
A syllabus from a related course by Sergey Bratus
at Dartmouth Coullege
-
Buffer overruns and related issues
-
PLT and GOT (global offset table) "weak links" in the linker
-
Return-oriented programming: Cracking the kernel through Tcl-like
(Forth-like) threaded programming
- "Return-oriented programming, or when good instructions
go bad" (will add link), Novav Shacham
-
Start here (Phrack, Nergal)
-
PaX (Phrack)
-
return-oriented rootkits (Hund/Holz)
(and
slides)
- This Wikipedia
return-to-libc attack article is a good place to start, in
looking for other Wikipedia security articles, and external
links such as
Bypassing non-executable-stack during exploitation using return-to-lib (.pdf)
- ELF hackery (cracking the linker)
- Notes on linkers for
book Linkers and Loaders
- ELF Hackery (part 1)
-
ELF Hackery (part 2)
-
grugg -- Cheating the ELF (pdf)
-
More ELF Buggery (follow-on paper)
- (optional) DMTCP
(Distributed MultiThreaded CheckPointing)
- (optional)
Virtualization, Paravirtualization, Xen (free, open source virtual machine) and other topics for virtual machines.
Potential Ideas for Projects concerning security. This list will be
extended to provide project ideas in many areas --- not just in security.
example project ideas (ignore Crypto part):
Dynamic loading, library function hijacking, ELF hackery
- Hack the Linux dynamic linker ld-linux.so to log information
and perform ad-hoc checks when libraries and loaded and functions are
dynamically linked. You can start with a provided prototype.
- Write a tool that would add a given executable payload to an ELF
binary and modify the binary headers appropriately so that it retains
its intended functionality. The code's activation method is up to you
-- you can have it run before the executable starts or interpose itself
into a standard library function call. Such code could be used in an ELF
virus or as framework for inserting trapdoors to catch intruders.