For the first time ever, join both the co-author of the Windows Internals book series from Microsoft Press, as well as an esteemed security researcher and endpoint security engineer, as they take you along a deep dive into the internals of the Windows NT kernel architecture. Covering Windows 10 “19H1”, the upcoming “20H1”, and Server 2019, you’ll unravel the secrets of how rootkits, PLA implants, NSA backdoors, and other kernel-mode malware abuse various system functionality, obscure mechanisms, and data structures, in order to do their dirty work. You’ll observe and experiment with how kernel-mode code operates and how it can be subject to compromise by user-mode attackers wishing to elevate their privileges, as well as how to detect, both live and forensically, such attempts. Finally, you’ll learn about how CPU architecture deeply ties into OS design, and how Intel’s and AMD’s mistakes can lead to more pwnage. This course is only taught twice a year, and this is your one and only chance to attend it in Europe!
We’ll cover the new Windows 10 kernel changes, including the introduction of Virtual Trust Levels (VTL) combined with Virtualization Based Security (VBS) to make pass-the-hash attacks virtually impossible, Hyper Visor Code Integrity (HVCI) to prevent unsigned kernel code execution, even with Ring 0 vulnerabilities, as well as new mitigations such as Kernel Control Flow Guard (KCFG), eXtended Control Flow Guard (XFG) and Intel Control-flow Enforcement Technology (CET) to protect against exploitation. We’ll go inside the Octagon and learn about System Guard Runtime Assertions and the rewritten Secure Launch framework that leverages Intel TXT for new DRTM-based attestation. Enclaves and Attestation, both through Software Guard Extensions (SGX) and VBS, and TPM-based Measured Boot, will also be on the menu.
Windows 10 builds upon many Windows 8.1 mechanisms such as Protected Process Light and custom Code Signing Policies, so we’ll review this as well, plus new Windows 8 kernel features (AppContainer, Secure Boot, and more) relevant to driver operation and exploitation techniques will be discussed, including an overview of over two dozen new security mitigations that have been added to the operating system
We’ll see how these changes to the architecture have dramatically constrained exploit techniques. Windows 7 kernel changes will be discussed too, such as the new Object Manager data structures.
All while learning the theory, you will use tools such as WinDbg, SysInternals Tools and Process Hacker to analyze, poke, and prod kernel-mode Windows components, as well as write your own debugger commands leveraging the new NatVis/LINQ predicate and capabilities, as well as write some JavaScript (ECMAScript 6) scripts using their new debugger engine.
Throughout the class, we’ll focus on using various techniques and tools to inspect the Windows kernel for consistency, tracing its operation, and editing it, as well as ways in which offensive and defensive attackers can mess with the system’s state in unexpected, “clean” ways. We’ll also give several examples of malicious and/or buggy drivers in a typical Windows system, as well as architectural bugs over Windows’ lifetime.
Attendees will receive a physical handout of the entire course materials for future reference, plus a full set of 40+ WinDbg scripts that the instructor has written over his lifetime, and all commands/outputs that were used in the course. Live paste-board sharing will be available to facilitate learning.
You will be presented with the many ways in which Windows kernel debugging works, from legacy named pipe debugging to modern high-speed Network Debugging, as well as the various official and unofficial ways to setup local and live debugging. You’ll spend a good few hours learning WinDbg tricks that will save you hours of time and effort, turning your WinDbg-fu from white belt to WinDbg sensei. You’ll also never call it “Win DEE BEE GEE” again. For complete mastery, you’ll move on to learning about the new NatVis Debugger Data Model, which includes support for LINQ Predicates, Anonymous Types, Lambda Functions, and more. We’ll wrap up by learning how to use the new JavaScript-based (ES6) scripting engine and integrate with exciting technologies such as Time Travel Debugging (TTD).
You’ll be exposed to low-level CPU details such as segmentation and task gates, things you probably thought didn’t matter since 1986 anymore, but which still drive core Windows architecture today. Never again will you think [fs:18h] is a magic constant. Both x86 and x64 will be covered and we might take a look at QC’s ARM64 SoC on Windows 10 depending on market success. Security features such as SMEP, SMAP, SGX, CET, UMIP will be part of the course, and we’ll see the facilities that Windows provides to use them. Finally, we’ll see how the hypervisor adds its own layer of security mechanisms using VTLs, SLAT, IOMMU and MBEC.
We’ll then move our focus toward understanding the behavior and operation of the Windows Kernel. Core topics such as interrupts, IRQLs, DPCs, APCs, system calls, user-mode callbacks, timers, scheduling and memory management will be discussed at the architectural level. You are expected to already be familiar with some of these ideas for example, on the topic of memory management, it is not about how to use malloc, but rather about the complexities of and effects of the algorithms used by Windows when managing pages.
You will learn the various data structures used by bookkeeping and internal consistency and management of key system components such as the ALPC subsystem that powers RPC, as well as core mechanisms and objects such as threads, processes, and jobs, and how these fields can affect the operation of the system in ways that malicious code can control. You’ll see the various boundaries and containers that control code execution from AppContainer to Application Package, to Fiber to Job to Silo, and discuss Critical, Secure, Pico and Minimal Processes.
You’ll learn about the Windows Memory Manager and its many bookkeeping data structures both at the virtual memory and physical memory layer and how they can both be used to identify hidden code at runtime, as well as used forensically for gathering data about an attack. We’ll also cover shared memory objects, and the dangers that lie within including a few live samples of bugs nobody cares to fix.
Finally, it’s not just all about the kernel! You’ll also discover how Windows’ Subsystem Model affects the execution of code and abstraction of various system components and we’ll take a look at the Windows Subsystem specifically and how extends its claws into the kernel through the window manager (Win32k.sys) and its data structures and behaviors will also be in the purview of our class. We will peering into aspects of Win32k.sys that few have looked at before except those that find new kernel vulnerabilities in it by the minute, and explain its recent separation into the Win32kbase and Win32kmin and Win32kfull components.
IMPORTANT: It’s helpful to understand x86/x64 assembly to take this course, but knowledge of obfuscation, packing, etc., is not required.
Basic knowledge of Windows, processor architecture, and operating systems is helpful you should have some vague idea of what an interrupt is, and what is the difference between user and kernel mode (ring levels), a bit about virtual memory/paging, etc.
You must have a Windows machine to attend, and you should have the Windows Driver Kit 10 release for 19H1 or later (18362 / 1903), which you can freely grab from MSDN.
A virtual machine (VirtualBox or Hyper-V are strongly preferred configured in EFI + Hyper-V mode for best performance) is recommended with an installed version of Windows 10. Locally, any version of Windows 7 or above, 32-bit or 64-bit is fine but you may prefer using the latest version possible. You should install the Windows Driver Kit on your host not the VM. If you have a Linux or Mac device, then you may either install the Windows Driver Kit on the VM itself, or, better yet, use two separate virtual machines.
The instructors will use a 64-bit Windows 10 device, with 32-bit VMs.
GHIDRA/IDA/HexRays helpful, but not required.
Alex Ionescu is the Vice President of Endpoint Engineering and Founding Chief Architect at CrowdStrike, Inc. Alex is a world-class security architect and consultant expert in low-level system software, kernel development, security training, and reverse engineering. He is coauthor of the last three editions of the Windows Internals series, along with Andrea Allievi, Mark Russinovich, and David Solomon. His work has led to the fixing of many critical kernel vulnerabilities, as well as dozens of non-security bugs.
Previously, Alex was the lead kernel developer for ReactOS, an open source Windows clone written from scratch, for which he wrote most of the Windows NT-based subsystems. During his studies in Computer Science, Alex worked at Apple on the iOS kernel, boot loader, and drivers on the original core platform team behind the iPhone, iPad and AppleTV. Alex is also the founder of Winsider Seminars & Solutions Inc., a company that specializes in low- level system software, reverse engineering and security trainings for various institutions. In the last three years, he has also contributed to patches and development in two major commercially used operating system kernels.
Yarden Shafir started dancing at the age of 7, and later joined a rhythmic gymnastics team and competed during her teenage years. After her military service, she practiced pole dancing and fell in love with acrobatics. Today she performs aerial arts for the circus, trains whenever possible, and teaches lyra and silks in Israel, while also having a rich background of Windows Internals research originally at Sentinel One, followed by her current role as a Software Engineer at CrowdStrike working on various EDR capabilities and EPP features.