Topics include, but are not limited to:
- Physical and virtual memory and how a limited amount of physical memory is represented as much more virtual memory through a multilevel paging system. We will also talk about memory segmentation.
- The hardware basis for kernel versus user space separation and how software transitions between the two. This portion answers the question of why does x86 have 4 “rings”, with ring 0 being the most privileged, and ring 3 being the least.
- Hardware and software interrupts, and how they are the basis for debugging.
- Input/Output instructions and how these allow the CPU to talk to peripherals.
Example applications include showing how hardware and memory mechanisms are used for software exploits, anti-debug techniques, rootkit hiding, and direct hardware access for keystroke logging.
This material includes labs on:
- Using WinDbg to perform kernel debugging on a virtual machine (which is equally applicable for debugging a real machine).
- Using a custom WinDbg plugin to examine the Local (memory segment) Descriptor Table (LDT), and Global (memory segment) Descriptor Table (GDT) in order to understand how Windows sets memory segment ranges and permissions for user space and kernel space.
- Using WinDbg and the !pte command to understand how Windows organizes its paging structures which map physical memory to virtual memory.
- Investigating where exactly the XD/NX bit is set in order to make memory as non-executable (which Microsoft calls Data Execution Prevention (DEP)), to prevent some types of exploits from succeeding.
- Watching what does and doesn’t change when a software interrupt is used to transfer control from user space to kernel.
- Reading the Interrupt Descriptor Table (IDT) and understanding the security implications of changes to it.
- Understanding how RedPill uses the IDT in order to detect that a system is virtualized.
- Understand that assembly is not an arcane art, but rather an API that can be learned like any other.
- Cover more of the most frequently used hardware mechanisms.
- Learn new assembly instructions.
- Apply new skills to interesting examples.