This class teaches you how hypervisors and hardware-assisted virtualization technologies work. You can use this knowledge to build your hacking hypervisors for research and to study, customize, and break existing hypervisors.
We achieve this by developing lightweight, UEFI module-based hypervisors using Intel VT-x and analyzing various advanced hypervisor applications, such as fuzzing and system hardening. The knowledge we acquire applies to kernel module (driver)- based hypervisors and AMD processors.
The class is hands-on oriented; we will spend 30-40% of the time with excesses.
Satoshi is a system software engineer and security researcher with over 15+ years of experience. He works on virtualization for game console and previously worked as a developer, researcher, and reverse engineer at security software vendors.
He enjoys developing and reverse-engineering system software and teaching low-level technologies. His strong interest in platform security led him to study virtualization technologies and write research hypervisors since early 2009 (there was even no EPT at the time!). He open-sources multiple hypervisors, details applications and progression of virtualization technologies, and discovers vulnerabilities in hypervisors and other privileged software.
Hypervisor designs and UEFI
VT-x Basics
OS Boot
Extended Page Tables (EPT)
Multi-processors Support
Control Register Shadowing
Additional Demos and Resources
Contents may change in a way that does not impact the learning objectives.
Virtualization technologies are critical components in software security and analysis. How can hypervisors be used to secure system software? How can custom hypervisors be written to perform reverse engineering and fuzzing more efficiently?
This class will teach you the foundation to answer those questions by developing simple hypervisors together! The class is designed so everything is built from scratch and optimized for learning. This allows you to understand the building blocks of real-world applications of virtualization technologies and expand the knowledge for your interests afterward.
This class is hands-on-oriented. We believe that we can learn and retain knowledge best by tackling concrete challenges rather than being taught. With this philosophy, the class is designed with lab activities as the primary learning opportunities and lectures to explain the theories behind them. We will spend 30-40% of the time on hands-on exercises.
At the beginning of the class, you will receive a skeleton implementation of a hypervisor and incrementally update it through a series of exercises. We will also discuss other design options to understand their pros and cons.
As we learn foundations, we will analyze various applications and their implementations. This includes snapshot-based system-level fuzzing, performant system hardening with MBEC and HLAT (VT-rp), HyperGuard, HVCI, and KDP on Windows, dynamic analysis with stealth hooking, and SMM security reporting with Intel TXT (PPAM).
You will also receive two additional hypervisor implementations for reference:
Software developers, security researchers, and anyone interested in expanding their knowledge of virtualization technologies, the x86_64 system architecture, and UEFI should attend the class. Many past students enjoyed discovering details of new system architecture aside from learning Intel VT-x!
You will receive links to recommended pre-class learning materials 2-3 weeks before the class.
You need to have the following hardware and software:
Again, an Intel processor-based machine is required.
Newer operating systems and software are supported. Older software and another Linux distro may be workable but not tested. Other hypervisors, such as KVM, Hyper-V, or VirtualBox, cannot be used. If the host machine cannot be arranged locally, it can also be a cloud-provided machine. Contact the trainer for suggestions if you need a cloud-provided machine.
You will receive setup instructions 2-3 weeks before the class and must complete them before the class.