Breaking virtualization
by any means
Jonathan Brossard
CEO – Toucan System
jonathan@
Who am I ?
Security Research Engineer. Focus on low level bugs, RCE, code/binary auditing.
CEO of Toucan System (French Startup).
Previous research : http://www.slideshare.net/endrazine
Getting in touch :
http://twitter.com/endrazine
Agenda
Virtualization : big picture
Attack surface analysis
Shared Guest OS Isolation
Attacking the host
Privileges escalation
Virtualization : big picture
Market shares
Definitions
Usage
Virtualization : market shares
Source : Forrester Research 2009
78% of companies have production servers virtualized.
20% only have virtualized servers.
Virtualization : market shares
Source : Forrester Research 2009
VMWare is present in 98% of the companies.
Microsoft virtualization products are used by 17%.
Citrix/Xen is used by 10%.
In a nutshell...
-As widespread as Apache or Bind
-Proprierary software, very few builds
•(= reliable exploitation)
-You don't need a « remote » exploit : you buy a shell at the same hosting provider.
Definitions
Virtualization : Definitions
Virtualization
Virtualization is the name given to the simulation with higher level components, of lower level components.
NOTE: Virtualization of applications (as opposed to full Oses) is out of topic.
Virtualization : Definitions
Virtual Machine
A virtual machine (VM) is : "an efficient, isolated duplicate of a real machine".
--Gerald J. Popek and Robert P. Goldberg (1974). "Formal Requirements for Virtualizable Third Generation Architectures", Communications of the ACM.
Usage
-Cost reduction (shared hosting)
-Scalability (cloud computing)
-Run broken (old) applications
Attack surface analysis
Previous research
Privilege escalation on a
guest
Privilege escalation on the
host
VMware Tools HGFS Local Privilege Escalation Vulnerability
(http://labs.idefense.com/intelligence/vu
lnerabilities/display.php?id=712)
Attacking other guests
Vmare workstation guest isolation weaknesses (clipboard transfer)
http://www.securiteam.com/securitynew
s/5GP021FKKO.html
DoS (Host + Guests)
Escape to host
Rafal Wojtczuk (Invisible things, BHUS 2008)
IDEFENSE VMware Workstation Shared Folders Directory Traversal Vulnerability
Time for action
Shared Guest OS Isolation
Rebooting an alternate operating system
-Overwrite the MBR directly with autonomous offensive code
-Instrument the MBR
Optionally:
-Break boot passwords
-Attack disk encryption
-(Bootkiting, backdooring...)
Boot sequence overview
BIOS internals for keyboard management
Bruteforcing Passwords
I/O |
|
|
|
|
|
|
|
|
|
I/O Port |
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
0x64 |
|
||
Port |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
0x60 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Attacking the hypervisor or host OS
Attacking the hypervisor or host OS
-VM 86 fuzzing
-ioports fuzzing
-pci fuzzing
Switching to virtual 8086
mode
- Swith to VM 86 using : |
113 |
#define __NR_vm86old |
|
#define __NR_vm86 |
166 |
-Use old school 16b interrupts to fuzz the hardware
-Note : It's (kernel) emulated. Good news ! We can use it with x64 too :)
example:
Mov ah, 0x42 ; read sector from drive Mov ch, 0x01 ; Track
Mov cl, 0x02 ; Sector Mov dh, 0x03 ; Head
Mov dl, 0x80 ; Drive (here first HD) Mov bx, offset buff ; es:bx is destination
Int 0x13 ; hard disk operation
Vm86 fuzzing under x64
Switching to virtual 8086
mode
Limitation : Hardware unknown at BIOS Post time can't be fuzzed this way.
=> We need complementary techniques to be exhaustive.
Other techniques
-PCI fuzzing (fuzzing hot plug devices)
-Ioports fuzzing : interract with any hardware.
Ioports fuzzing:
Ioports:
outb, outw, outl, outsb, outsw, outsl, inb, inw, inl, insb, insw, insl, outb_p, outw_p, outl_p, inb_p, inw_p, inl_p
Problems: sequence, multiple ports ...
PCI Fuzzing
-In 16b mode : use int 0x1a
-In 32 or 64b mode : fork from pciutils :)
Escalating privileges on the host
Privilege escalation
-attacking (suid) hypervisors
-attacking kernel modules with ioctls
Thank you for coming
Questions ?