|
An overview of the architecture of *OS variants, from a threat assessment perspective. Focus on different abuse cases, and the mitigation techniques devised by Apple to address and prevent them.
- Quick recap of the *OS Architecture
- High level presentation of mitigation techniques
- Attack surface of MacOS and the iOS variants
- Divergences between MacOS and iOS variants
- IPC Channels (refresher): Sockets, Mach Messages, XPC
-
PAC and its importance, and the inevitability of MTE
|
|
Explaining the reactive mechanisms by means of which system activity can be monitored (though not intercepted) and logged. This includes a detailed discussion of:
- Auditing (MacOS) and the move to EndPoint Security
- KDebug
- DTrace (MacOS)
- FSEvents
- Stackshot
- Proc info
|
|
Code Signing in Darwin not only secures code by authenticating and tamper proofing it - but also provides the substrate for all of its security features. Entitlements, Code Signature Requirements, and (more recently) Launch Constraints are all based on this important facility, which we discuss in unprecdented detail.
- The Security Framework (participants will need the open sources)
- Refreshing Mach-O principles
- LC_CODE_SIGNATURE
- The Code Signature SuperBlob
- The Code Directory
- Special Blobs
- Self-Signing and Ad-Hoc Code Signatures
- Entitlements
- Launch Constraints
|
3. |
The Mandatory Access Control Framework |
|
0.5-1 hours |
|
The Mandatory Access Control Framework (MACF) is the de-facto standard for all of Apple's security mitigation techniques - from code signing, through sandboxing. A legacy of TrustedBSD, although it is a "private" KPI, it is remarkably simple and, at the same time, powerful.
- Precursor: KAuth
- Introducing: MACF
- The MACF KPIs
- MAC Policies
- Creating a simple MACF policy
- Case study: MacOS Quarantine
- Case Study: MacOS 10.15 EndpointSecurity
|
4. |
AppleMobileFileIntegrity |
|
2 hours |
|
Sworn nemesis of jailbreakers, AppleMobileFileIntegrity (amfi) has become the linchpin of Darwin security, controlling the kernel-enforcement of code signing and kernel-level entitlements.
- AMFI components (kext, daemon)
- Detailed breakdown of AMFI.kext
- Full reversing of amfid
- AMFI.kext as an entitlement enforcement
- The AMFI User Client
- iOS 12: CoreTrust
- iOS 16: Developer Mode
- iOS 18: Restricted Execution Mode
|
|
The Apple Sandbox mechanism has evolved dramatically since its inception in MacOS 10.5 as "SeatBelt". It has also diverged in its implementations outside MacOS.
- Sandboxing Terminology
- Implementation in MacOS: The App Sandbox
- The Sandbox Profile Language (SBPL)
- Compiling profiles
- Decompiling profiles
- Creating custom profiles
- Debugging the sandbox
- User mode APIs
- Implementation in *OS: forcing Containers
- Sandbox extensions
- Detailed reversing of the Sandbox kernel extension
- System Integrity Protection as a manifestation of the Sandbox
- iOS 10 and the platform profile
- TCC integration
|
|
Ports are mere 32-bit identifiers in user space, but kernel space reveals a vast menagerie of complicated objects, of which IPC ports are but one type. Processes ("PIDs") become proc_ts, tasks become task_ts, and virtual memory is laid out through the vm_map_ts. This module examines thoese objects in detail, showing live kernel memory using Xn00p2 of various objects, including:
- The BSD objects (processes, threads and files)
- The ipc_object_t
- The ipc_port_t
- The task_t and thread_t
- The vm_map
|
7. |
Aie, Aie, IOKit |
|
2 hours |
|
IOKit is the most advanced and powerful feature of XNU, allowing C++ code in kernel with all its might - Object orientation and inheritance - and all its weaknesses. IOKit objects have become crucial for many an exploit, both as a vector for vulnerabilities, and as a mechanism for kernel code execution.
- IOKit objects: Services and user clients
- Enumerating and identifying IOKit objects in *OS kernels
- Object corruption and fake objects
- Kernel code execution primitives (and how to survive without them)
|
8. |
Get in the (kernel) zone |
|
3 hours |
|
Everything that user mode "sees" and touches is a figment of the kernel's memory. Understanding memory structures and management is paramount - for researchers and exploiters alike. This module discusses in depth the various allocation mechanisms of kernel memory
- The kernel_map
- The Zone allocator, emphasizing changes since Darwin 20 and "*OS Internals" Vol II
- Darwin 19-20: R/O Zones, Sequestering, zone_require, kalloc types and more
- Garbage collection, Feng Shui, and other techniques
- Zone ("kernel heap") hardening
|
9. |
Let's Get Physical |
|
3 hours |
|
Apple is one of the only vendors to adopt proprietary protections for physical memory. Starting with the simple "WatchTower" KPP, Apple moved to introduce KTRR in the A10, followed by APRR (A11), GXF (A12) and applications such as PPL and, most recently (in iOS 17.0), SPTM & TXM. But what do all these acronyms mean? And what is their impact on exploitation
- The pmap abstraction
- ARM64 page tables
- The kernel_pmap
- A6-A9, iOS9+: KPP
- A10+: KTRR
- A11+: APRR
- A12+: PPL
- A14+: GXF
- A16+: Exclaves and the "Secure Kernel"
|
|
Open session for Q & A on any topics participants would like to discuss. May spill over past end of day, depending on demand
|