Crucial Security Programs Ring -1 vs. Ring -2: Containerizing Malicious SMM Interrupt Handlers on AMD-V Pete Markowsky Senior Security Researcher

Slides:



Advertisements
Similar presentations
Hardware-assisted Virtualization
Advertisements

Virtualization Technology
More on Processes Chapter 3. Process image _the physical representation of a process in the OS _an address space consisting of code, data and stack segments.
Memory Management: Overlays and Virtual Memory
Using VMX within Linux We explore the feasibility of executing ROM-BIOS code within the Linux x86_64 kernel.
Virtualization Technology For AMD Architecture Steve McDowell Division Marketing Manager Computation Products Group AMD amd.com Geoffrey.
Microprocessors system architectures – IA32 real and virtual-8086 mode Jakub Yaghob.
Computer Science HyperSentry: Enabling Stealthy In-context Measurement of Hypervisor Integrity Ahmed M. Azab, Peng Ning, Zhi Wang, Xuxian Jiang North Carolina.
Chapter 6 Limited Direct Execution
Architectural Support for OS March 29, 2000 Instructor: Gary Kimura Slides courtesy of Hank Levy.
CE6105 Linux 作業系統 Linux Operating System 許 富 皓. Chapter 2 Memory Addressing.
Disco Running Commodity Operating Systems on Scalable Multiprocessors.
OS Spring’03 Introduction Operating Systems Spring 2003.
1 Process Description and Control Chapter 3 = Why process? = What is a process? = How to represent processes? = How to control processes?
November 1, 2004Introduction to Computer Security ©2004 Matt Bishop Slide #29-1 Chapter 33: Virtual Machines Virtual Machine Structure Virtual Machine.
Jiang Wang, Joint work with Angelos Stavrou and Anup Ghosh CSIS, George Mason University HyperCheck: a Hardware Assisted Integrity Monitor.
Tanenbaum 8.3 See references
SymCall: Symbiotic Virtualization Through VMM-to-Guest Upcalls John R. Lange and Peter Dinda University of Pittsburgh (CS) Northwestern University (EECS)
Intel
80386DX.
1 UCR Firmware Attacks and Security introduction.
Disco : Running commodity operating system on scalable multiprocessor Edouard et al. Presented by Jonathan Walpole (based on a slide set from Vidhya Sivasankaran)
CS533 Concepts of Operating Systems Jonathan Walpole.
Kenichi Kourai (Kyushu Institute of Technology) Takuya Nagata (Kyushu Institute of Technology) A Secure Framework for Monitoring Operating Systems Using.
G53SEC 1 Reference Monitors Enforcement of Access Control.
Benefits: Increased server utilization Reduced IT TCO Improved IT agility.
Virtualization Paul Krzyzanowski Distributed Systems Except as otherwise noted, the content of this presentation is licensed.
Recall: Three I/O Methods Synchronous: Wait for I/O operation to complete. Asynchronous: Post I/O request and switch to other work. DMA (Direct Memory.
Operating Systems ECE344 Ashvin Goel ECE University of Toronto OS-Related Hardware.
Operating Systems Lecture 7 OS Potpourri Adapted from Operating Systems Lecture Notes, Copyright 1997 Martin C. Rinard. Zhiqing Liu School of Software.
1 Linux Operating System 許 富 皓. 2 Memory Addressing.
 Virtual machine systems: simulators for multiple copies of a machine on itself.  Virtual machine (VM): the simulated machine.  Virtual machine monitor.
Disco : Running commodity operating system on scalable multiprocessor Edouard et al. Presented by Vidhya Sivasankaran.
Virtualization Technology Recently Rookit with Virtualization Technology Maple(
1 CSE451 Architectural Supports for Operating Systems Autumn 2002 Gary Kimura Lecture #2 October 2, 2002.
Virtual 8086 Mode  The supports execution of one or more 8086, 8088, 80186, or programs in an protected-mode environment.  An 8086.
Lecture Topics: 10/29 Architectural support for operating systems –timers –kernel mode –system calls –protected instructions.
CE Operating Systems Lecture 2 Low level hardware support for operating systems.
Operating Systems Security
Full and Para Virtualization
CE Operating Systems Lecture 2 Low level hardware support for operating systems.
Lecture 12 Virtualization Overview 1 Dec. 1, 2015 Prof. Kyu Ho Park “Understanding Full Virtualization, Paravirtualization, and Hardware Assist”, White.
1 Lecture 1: Computer System Structures We go over the aspects of computer architecture relevant to OS design  overview  input and output (I/O) organization.
Memory Management: Overlays and Virtual Memory. Agenda Overview of Virtual Memory –Review material based on Computer Architecture and OS concepts Credits.
Protection of Processes Security and privacy of data is challenging currently. Protecting information – Not limited to hardware. – Depends on innovation.
CSE 451: Operating Systems Winter 2015 Module 25 Virtual Machine Monitors Mark Zbikowski Allen Center 476 © 2013 Gribble, Lazowska,
Lecture 5 Rootkits Hoglund/Butler (Chapters 1-3).
Chapter 6 Limited Direct Execution Chien-Chung Shen CIS/UD
Virtualization.
Virtualization Technology
Why VT-d Direct memory access (DMA) is a method that allows an input/output (I/O) device to send or receive data directly to or from the main memory, bypassing.
Presented by Mike Marty
Presented by Yoon-Soo Lee
Anton Burtsev February, 2017
Mechanism: Limited Direct Execution
Chapter 1: Introduction
x86 segmentation, page tables, and interrupts
Running other code under LINUX
OS Virtualization.
Chapter 33: Virtual Machines
Architectural Support for OS
Computer Security: Art and Science, 2nd Edition
CSE 451: Operating Systems Autumn 2003 Lecture 2 Architectural Support for Operating Systems Hank Levy 596 Allen Center 1.
CSE 451: Operating Systems Autumn 2001 Lecture 2 Architectural Support for Operating Systems Brian Bershad 310 Sieg Hall 1.
CSE 451: Operating Systems Winter 2007 Module 2 Architectural Support for Operating Systems Brian Bershad 562 Allen Center 1.
CSE 451: Operating Systems Winter 2003 Lecture 2 Architectural Support for Operating Systems Hank Levy 412 Sieg Hall 1.
Architectural Support for OS
CSE 471 Autumn 1998 Virtual memory
First Generation 32–Bit microprocessor
Chapter 33: Virtual Machines
Presentation transcript:

Crucial Security Programs Ring -1 vs. Ring -2: Containerizing Malicious SMM Interrupt Handlers on AMD-V Pete Markowsky Senior Security Researcher

You might remember me from such films as... Who Am I? –Pete Markowsky Senior Security Researcher at Crucial Security Programs, Harris Corporation transzorp on IRC and Twitter Worked in –.edu –.com –.mil 18-May-15

What is this talk about? System Management Mode and System Management Mode Interrupts (SMIs) Virtualization on the AMD platform The interplay between virtualization extensions in AMD-V and System Management Mode (SMM) –which mode already has or can seize control of execution, when, and where 5/18/2015

Why should I care? If you’re building a security mechanism based on a VMM on AMD-V Normally SMM code runs outside of the VMM’s protections Malicious System Mode Interrupt (SMI) handlers can be used for: –bypassing Intel’s TXT –rootkits –privilege escalation attacks 5/18/2015

Assumptions An attacker has the ability to install an SMI handler –can take advantage of BIOS overwrites or cache attacks –they have root in a guest An attacker may have subverted the BIOS (up to a point) 5/18/2015

The problem 5/18/2015

Ring -2: System Management Mode (SMM) System Management Mode is –a 16-bit x86 operating mode like real-mode –transparent to the OS –supposed to be for power management SMM is entered only when a System Mode Interrupt (SMI) is asserted by hardware Called “Ring -2” because normally –there are no restrictions to the I/O ports or memory –it has the same privileges as in Ring 0 –it can manipulate all of system memory 5/18/2015

Ring -2: SMRAM SMM code in SMRAM –range of physical memory SMBASE MSR –defines start of SMRAM Default size on AMD64 64K –can range from 32K – 4GB 5/18/2015

Ring -2: Where did it come from? Installed by the BIOS –BIOS sets up SMRAM (copies handler) –Configures SMM MSRs –Typically locks SMM registers by setting the HWCR.SMMLOCK bit Prevents access to SMRAM 5/18/2015

Ring -2: SMM security Two segments of physical memory protected for SMM code –ASeg: 0xA0000 – 0xBFFFF –TSeg: defined by SMM_ADDR and SMM_MASK Bits in SMM_MASK MSR set protection for segments Protected segments can only be accessed in SMM 5/18/2015

Ring -2: System Mode Interrupt (SMI) Special Non-Maskable Interrupt Takes priority over other interrupts Two types –internal: generated by hardware in response to IOIO instructions which IOIO depend on motherboard logic –external: generated by hardware Causes switch to SMM 5/18/2015

Ring -2: In what modes can an SMI occur? 5/18/2015

Ring -2: What happens during an SMI Stops fetching instructions Processor waits for currently executing instructions and buffered memory writes to finish CPU state is saved in the SMRAM save state region RIP changed to the start of the SMI handler 5/18/2015

Ring -2: SMI handler Basically real mode x86 code –segments are extended up to 4GB RSM instruction returns to previous execution mode Address translation somewhat difficult –read CR3 from save state area and do translation by hand 5/18/2015

Ring -2: Known methods of installing an SMI handler Install a modified BIOS –write code to DRAM and set up appropriate MSRs Find a bug in the SMI handler and exploit it –Invisible Things Labs Q35 remapping attack x86 cache manipulation –Duflot’s attack 5/18/2015

Goal Put all of the SMM code into a virtual machine so that its execution can be constrained by the VMM 5/18/2015

Ring -1: AMD64 organization Memory controller moved into the CPU 5/18/2015

Ring -1: AMD-V quick overview x86-64 virtualization extensions –based around the VMRUN instruction and VMEXITs Hypervisor defines VMEXIT conditions in a page of memory called the Virtual Machine Control Block (VMCB) –these conditions are called interceptions One VMCB per guest A VMCB defines processor state at resumption of execution (after a VMRUN) A VMCB contains the state of the guest at the point of VMEXIT 5/18/2015

Ring -1: AMD-V quick overview 5/18/2015

Ring -1: Key features of AMD-V Global Interrupt Flag (GIF) –when set to 1 allows all interrupts –when set to 0 blocks all interrupts including SMI Paged Real Mode –run real mode code with paging protections applied SMM_CTL register –allows VMM code to map SMRAM 5/18/2015

Ring -1: VMCB VMCB has two parts –state save area: contains guest CPU state –control area: defines intercept conditions Intercepts we care about: –SMI (bit 98) –RSM (bit 115) –interception of IOIO instructions (bit 123) –MSR_PROT (bit 124) 5/18/2015

Ring -1: Dealing with SMIs Three solutions offered in AMD64 System Programmer’s Manual –do nothing SMM runs outside of VMM protections –intercept all IOIO instructions that can cause an SMI complicated doesn’t stop replaced handler –containerize the SMI Handler run the SMI handler inside a virtual machine 5/18/2015

Containerizing SMI handlers Two solutions –SMM hypervisor rewrite SMRAM to contain a VMM that places the original SMM handler in a virtual machine –write code in the VMM to emulate switching to and from SMM, then run SMRAM code in a VM 5/18/2015

Ring -1: Intercepting SMIs The SMI intercept causes SMIs to transfer control to the VMM before the SMI handler SMI intercept is ignored when the SMMLOCK is 1 5/18/2015

Ring -1: How to containerize an SMI handler To containerize an SMI Handler: 1.Ensure that HWCR.SMMLOCK is 0 2.Get access to SMRAM 3.Configure a shadow page table for SMRAM 4.Allocate and configure a VMCB for the SMM VM 5.Configure guest VMCBs to intercept SMI 6.Write code to copy guest state to and from the SMM VM’s save state area 5/18/2015

Ring -1: Ensuring that the SMMLOCK is 0 Bit 0 of the HWCR is the SMMLOCK –if it’s 0 all SMM related MSRs may be written to in CPL 0 SMM_KEY Need some cooperation from BIOS Example: if (rdmsr(HWCR) & 1){ //locked use SMM_KEY wrmsr(SMM_KEY, passwd); if (rdmsr(HWCR)& 1) halt(); //WRONG PASS } 5/18/2015

Ring -1: Get access to SMRAM Problem: SMRAM only accessible from SMM Solution: SMM_CTL MSR First map SMRAM region using SMM_CTL MSR –wrmsr(SMM_CTL, SMI_ENTER) –causes SMRAM to be mapped 5/18/2015

Ring -1: Allocate and configure a VMCB for the SMM VM In the VMCB for the virtual machine you need to: –set VMCB CR0 field to CR0.PG=1 CR0.PE=0 Paged Real Mode –set VMCB CR3 field to the physical address of the guest page table –set VMCB exception vector to intercept #PF –set VMCB RSM intercept –set VMCB shutdown intercept –intercept all SMM MSR writes 5/18/2015

Ring -1: Allocate and configure a guest VMCB Prevent attempts to write MSRs by configuring VMCB MSRPM to: –intercept writes to HWCR SMMBASE SMM_ADDR SMM_MASK SMM_CTL SMM_KEY 5/18/2015

Ring -1: Allocate a shadow page table Paged real mode requires a shadow page table Maps a guest linear address to a host physical address –(segment+offset) = guest linear address Must create entries for SMRAM 5/18/2015

Ring -1: Copying to and from guest state SMM save state area –512 bytes at the end of SMRAM –contains processor state at the time of the SMI Copy from SMM VM and guest VMCB Filter out known values before returning to guest 5/18/2015

Demo Modified MAVMM to containerize the handler 5/18/2015

What happened? 5/18/2015

Aside: SKINIT SKINIT (Secure Kernel Init) –new instruction in AMD-V to securely load a VMM –similar to Intel’s SENTER What it does –stops all other processors than the bootstrap processor –reinitializes processor state as if a reset has been asserted –uses DEV if set up in secure loader –sets GIF to 0 –loads an Secure Loader (SL) into RAM –verifies integrity of Secure Loader in TPM 5/18/2015

Differences from Intel VT Conceptually AMD-V and Intel VT are similar Intel VMCS is a variable length data structure Intel does not have an explicit intercept for SMI –dual monitor treatment put another hypervisor in SMRAM not all VT hardware supports it. Uses virtual 8086 mode to virtualize real mode code –sometimes needs other code to virtualize real mode code vmxassist (from Xen) 5/18/2015

Thank You! Thank you for attending my presentation and coming to ShmooCon 2010! 5/18/2015

Questions? 5/18/2015 I’m happy to answer as many questions as I can in the time left