48
Advanced Exploitation of Simple Bugs A Parallels Desktop Case Study (Pwn2Own2021) Alisa Esage Zero Day Engineering Project Livestream 2021

Advanced Exploitation of Simple Bugs

  • Upload
    others

  • View
    7

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Advanced Exploitation of Simple Bugs

Advanced Exploitation of Simple Bugs

A Parallels Desktop Case Study (Pwn2Own2021)

Alisa Esage Zero Day Engineering Project

Livestream 2021

About me Offensive Vuln Research amp Advanced Exploits

Browsers Kernels Basebands Hypervisors Hard targets for profit Bug bounties for fun Vendor acknowledgements Microsoft Google

Mozilla Oraclehellip Phrack author

Pwn2Own 2021 Virtualization winner 984532 Parallels Desktop for Mac

Zero Day Engineering Project ndash Training amp Intelligence httpzerodayengineeringcom

Training amp mini-classes RampD

Agenda

Relevant Theory Hypervisor Threat Model Guest Services Protocols amp Tech

Parallels Desktop Architecture amp Internals Parallels Toolgate RE Guest Additions

The Bug The ExploitAll materials in this presentation are

based on the authorrsquos own independent work views and analysis

Part 1

Relevant Theory

Hypervisor Threat Model

Host modules Guest services Virtualized devices VMM

Interfaces

MMU virtualization

Shadow PTE

Nested page tables

Buses

USB

PCI

Peripherals

Emulated devices

Paravirtualized

CPU virtualization

ISA emulation

vAPIC

Graphics

3D2D acceleration

Shaders

Rich functionality

Shared folders

Shared everything

Privileged drivers

Hypercall interface

Hardware VMX

Etc

Inter-VM networking

Printing services

Hypercall interface Extensions protocols

UHCI OHCI xHCI eHCI

Classical models E1000 Virtio DEC

Hypercall handlers

VM escapesLocal EoP

DHCP TFPT PXE boot zero-conf

Synthetic models hypercall-based IO

Note on hardware virtualization support

MYTH ALERT

Technological m

ess

Attack surface

Host modules Guest services Virtualized devices VMM

Interfaces

MMU virtualization

Shadow PTE

Nested page tables

Buses

USB

PCI

Peripherals

Emulated devices

Paravirtualized

CPU virtualization

ISA emulation

vAPIC

Graphics

3D2D acceleration

Shaders

Rich functionality

Shared folders

Shared everything

Privileged drivers

Hypercall interface

Hardware VMX

Etc

Inter-VM networking

Printing services

Hypercall interface Extensions protocol

Guest services architecture (example GL)

VMM

Emulated and para devices

Guest services (backend)

Hypercall interface kernel module

GA 3d graphics

hooks

GA file system hooks

Userapp

SystemAPI

Hypervisor VMHW

GPU

Users

RPC protocols

Guest additions Virtualization tools

Part 2

Parallels Desktop

Parallels Desktop Architecture vs The Model

Host modules Guest services Virtualized devices VMM

Interfaces

MMU virtualization

Shadow PTE

Nested page tables

Buses

USB

PCI

Peripherals

Emulated devices

Paravirtualized

CPU virtualization

ISA emulation

vAPIC

Graphics

3D2D acceleration

Shaders

Rich functionality

Shared folders

Shared everything

Privileged drivers

Hypercall interface

Hardware VMX

Etc

Inter-VM networking

Printing services

Hypercall interface Extensions protocols

VM escapesLocal EoP

parallels_symbolizepy

Parallels research tip verbose debug logs

Parallels virtual hardware

init_devices

Parallels emulated devices

Parallels Toolgate

Parallels Tools amp Toolgate

Toolgate protocol

Part 3

The Bug

zero

daye

ngin

eering

com

Reverse-Engineering Parallels Toolgate

zero

daye

ngin

eering

com

Toolgate Request Handlers

zero

daye

ngin

eering

com

Parallels Shared Folders

zero

daye

ngin

eering

com

Parsing SF hypercalls

zero

daye

ngin

eering

com

The Bug

Part 4

The Exploit

zero

daye

ngin

eering

com

prl_fs

zero

daye

ngin

eering

com

Prl_fs guest ltgt hypervisor

zero

daye

ngin

eering

com

SF protocol

zero

daye

ngin

eering

com

Reaching the bug

zero

daye

ngin

eering

com

Not so easyhellip

zero

daye

ngin

eering

com

prl_pwn kernel module

zero

daye

ngin

eering

com

prl_pwn kernel module (imports)

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

prl_pwnpy

zero

daye

ngin

eering

com

Toolgate protocol primitives ndash user side

zero

daye

ngin

eering

com

Toolgate protocol primitives ndash hypervisor side

zero

daye

ngin

eering

com

Talking to the hypervisor

zero

daye

ngin

eering

com

Emulating the protocol

zero

daye

ngin

eering

com

Execute payload

zero

daye

ngin

eering

com

VMware shared folders (CVE-2007-1744) Directory traversal Implementation uses

MultiByteToWideChar() API Path sanitization is bypassed

by injecting a unicode lsquorsquo substring as ldquoc02ec02erdquo

CVE-2008-0923 directory traversal 2

Improperly patched CVE-2007-1744

Path sanitization is bypassed by injecting ldquo0xc20x2e0xc20x2erdquo

Literally the first case study slide in my training ldquoHypervisor Vulnerability Researchrdquo

zero

daye

ngin

eering

com

Thank youTwitter alisaesageEmail contactzerodayengineeringcom

Page 2: Advanced Exploitation of Simple Bugs

About me Offensive Vuln Research amp Advanced Exploits

Browsers Kernels Basebands Hypervisors Hard targets for profit Bug bounties for fun Vendor acknowledgements Microsoft Google

Mozilla Oraclehellip Phrack author

Pwn2Own 2021 Virtualization winner 984532 Parallels Desktop for Mac

Zero Day Engineering Project ndash Training amp Intelligence httpzerodayengineeringcom

Training amp mini-classes RampD

Agenda

Relevant Theory Hypervisor Threat Model Guest Services Protocols amp Tech

Parallels Desktop Architecture amp Internals Parallels Toolgate RE Guest Additions

The Bug The ExploitAll materials in this presentation are

based on the authorrsquos own independent work views and analysis

Part 1

Relevant Theory

Hypervisor Threat Model

Host modules Guest services Virtualized devices VMM

Interfaces

MMU virtualization

Shadow PTE

Nested page tables

Buses

USB

PCI

Peripherals

Emulated devices

Paravirtualized

CPU virtualization

ISA emulation

vAPIC

Graphics

3D2D acceleration

Shaders

Rich functionality

Shared folders

Shared everything

Privileged drivers

Hypercall interface

Hardware VMX

Etc

Inter-VM networking

Printing services

Hypercall interface Extensions protocols

UHCI OHCI xHCI eHCI

Classical models E1000 Virtio DEC

Hypercall handlers

VM escapesLocal EoP

DHCP TFPT PXE boot zero-conf

Synthetic models hypercall-based IO

Note on hardware virtualization support

MYTH ALERT

Technological m

ess

Attack surface

Host modules Guest services Virtualized devices VMM

Interfaces

MMU virtualization

Shadow PTE

Nested page tables

Buses

USB

PCI

Peripherals

Emulated devices

Paravirtualized

CPU virtualization

ISA emulation

vAPIC

Graphics

3D2D acceleration

Shaders

Rich functionality

Shared folders

Shared everything

Privileged drivers

Hypercall interface

Hardware VMX

Etc

Inter-VM networking

Printing services

Hypercall interface Extensions protocol

Guest services architecture (example GL)

VMM

Emulated and para devices

Guest services (backend)

Hypercall interface kernel module

GA 3d graphics

hooks

GA file system hooks

Userapp

SystemAPI

Hypervisor VMHW

GPU

Users

RPC protocols

Guest additions Virtualization tools

Part 2

Parallels Desktop

Parallels Desktop Architecture vs The Model

Host modules Guest services Virtualized devices VMM

Interfaces

MMU virtualization

Shadow PTE

Nested page tables

Buses

USB

PCI

Peripherals

Emulated devices

Paravirtualized

CPU virtualization

ISA emulation

vAPIC

Graphics

3D2D acceleration

Shaders

Rich functionality

Shared folders

Shared everything

Privileged drivers

Hypercall interface

Hardware VMX

Etc

Inter-VM networking

Printing services

Hypercall interface Extensions protocols

VM escapesLocal EoP

parallels_symbolizepy

Parallels research tip verbose debug logs

Parallels virtual hardware

init_devices

Parallels emulated devices

Parallels Toolgate

Parallels Tools amp Toolgate

Toolgate protocol

Part 3

The Bug

zero

daye

ngin

eering

com

Reverse-Engineering Parallels Toolgate

zero

daye

ngin

eering

com

Toolgate Request Handlers

zero

daye

ngin

eering

com

Parallels Shared Folders

zero

daye

ngin

eering

com

Parsing SF hypercalls

zero

daye

ngin

eering

com

The Bug

Part 4

The Exploit

zero

daye

ngin

eering

com

prl_fs

zero

daye

ngin

eering

com

Prl_fs guest ltgt hypervisor

zero

daye

ngin

eering

com

SF protocol

zero

daye

ngin

eering

com

Reaching the bug

zero

daye

ngin

eering

com

Not so easyhellip

zero

daye

ngin

eering

com

prl_pwn kernel module

zero

daye

ngin

eering

com

prl_pwn kernel module (imports)

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

prl_pwnpy

zero

daye

ngin

eering

com

Toolgate protocol primitives ndash user side

zero

daye

ngin

eering

com

Toolgate protocol primitives ndash hypervisor side

zero

daye

ngin

eering

com

Talking to the hypervisor

zero

daye

ngin

eering

com

Emulating the protocol

zero

daye

ngin

eering

com

Execute payload

zero

daye

ngin

eering

com

VMware shared folders (CVE-2007-1744) Directory traversal Implementation uses

MultiByteToWideChar() API Path sanitization is bypassed

by injecting a unicode lsquorsquo substring as ldquoc02ec02erdquo

CVE-2008-0923 directory traversal 2

Improperly patched CVE-2007-1744

Path sanitization is bypassed by injecting ldquo0xc20x2e0xc20x2erdquo

Literally the first case study slide in my training ldquoHypervisor Vulnerability Researchrdquo

zero

daye

ngin

eering

com

Thank youTwitter alisaesageEmail contactzerodayengineeringcom

Page 3: Advanced Exploitation of Simple Bugs

Agenda

Relevant Theory Hypervisor Threat Model Guest Services Protocols amp Tech

Parallels Desktop Architecture amp Internals Parallels Toolgate RE Guest Additions

The Bug The ExploitAll materials in this presentation are

based on the authorrsquos own independent work views and analysis

Part 1

Relevant Theory

Hypervisor Threat Model

Host modules Guest services Virtualized devices VMM

Interfaces

MMU virtualization

Shadow PTE

Nested page tables

Buses

USB

PCI

Peripherals

Emulated devices

Paravirtualized

CPU virtualization

ISA emulation

vAPIC

Graphics

3D2D acceleration

Shaders

Rich functionality

Shared folders

Shared everything

Privileged drivers

Hypercall interface

Hardware VMX

Etc

Inter-VM networking

Printing services

Hypercall interface Extensions protocols

UHCI OHCI xHCI eHCI

Classical models E1000 Virtio DEC

Hypercall handlers

VM escapesLocal EoP

DHCP TFPT PXE boot zero-conf

Synthetic models hypercall-based IO

Note on hardware virtualization support

MYTH ALERT

Technological m

ess

Attack surface

Host modules Guest services Virtualized devices VMM

Interfaces

MMU virtualization

Shadow PTE

Nested page tables

Buses

USB

PCI

Peripherals

Emulated devices

Paravirtualized

CPU virtualization

ISA emulation

vAPIC

Graphics

3D2D acceleration

Shaders

Rich functionality

Shared folders

Shared everything

Privileged drivers

Hypercall interface

Hardware VMX

Etc

Inter-VM networking

Printing services

Hypercall interface Extensions protocol

Guest services architecture (example GL)

VMM

Emulated and para devices

Guest services (backend)

Hypercall interface kernel module

GA 3d graphics

hooks

GA file system hooks

Userapp

SystemAPI

Hypervisor VMHW

GPU

Users

RPC protocols

Guest additions Virtualization tools

Part 2

Parallels Desktop

Parallels Desktop Architecture vs The Model

Host modules Guest services Virtualized devices VMM

Interfaces

MMU virtualization

Shadow PTE

Nested page tables

Buses

USB

PCI

Peripherals

Emulated devices

Paravirtualized

CPU virtualization

ISA emulation

vAPIC

Graphics

3D2D acceleration

Shaders

Rich functionality

Shared folders

Shared everything

Privileged drivers

Hypercall interface

Hardware VMX

Etc

Inter-VM networking

Printing services

Hypercall interface Extensions protocols

VM escapesLocal EoP

parallels_symbolizepy

Parallels research tip verbose debug logs

Parallels virtual hardware

init_devices

Parallels emulated devices

Parallels Toolgate

Parallels Tools amp Toolgate

Toolgate protocol

Part 3

The Bug

zero

daye

ngin

eering

com

Reverse-Engineering Parallels Toolgate

zero

daye

ngin

eering

com

Toolgate Request Handlers

zero

daye

ngin

eering

com

Parallels Shared Folders

zero

daye

ngin

eering

com

Parsing SF hypercalls

zero

daye

ngin

eering

com

The Bug

Part 4

The Exploit

zero

daye

ngin

eering

com

prl_fs

zero

daye

ngin

eering

com

Prl_fs guest ltgt hypervisor

zero

daye

ngin

eering

com

SF protocol

zero

daye

ngin

eering

com

Reaching the bug

zero

daye

ngin

eering

com

Not so easyhellip

zero

daye

ngin

eering

com

prl_pwn kernel module

zero

daye

ngin

eering

com

prl_pwn kernel module (imports)

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

prl_pwnpy

zero

daye

ngin

eering

com

Toolgate protocol primitives ndash user side

zero

daye

ngin

eering

com

Toolgate protocol primitives ndash hypervisor side

zero

daye

ngin

eering

com

Talking to the hypervisor

zero

daye

ngin

eering

com

Emulating the protocol

zero

daye

ngin

eering

com

Execute payload

zero

daye

ngin

eering

com

VMware shared folders (CVE-2007-1744) Directory traversal Implementation uses

MultiByteToWideChar() API Path sanitization is bypassed

by injecting a unicode lsquorsquo substring as ldquoc02ec02erdquo

CVE-2008-0923 directory traversal 2

Improperly patched CVE-2007-1744

Path sanitization is bypassed by injecting ldquo0xc20x2e0xc20x2erdquo

Literally the first case study slide in my training ldquoHypervisor Vulnerability Researchrdquo

zero

daye

ngin

eering

com

Thank youTwitter alisaesageEmail contactzerodayengineeringcom

Page 4: Advanced Exploitation of Simple Bugs

Part 1

Relevant Theory

Hypervisor Threat Model

Host modules Guest services Virtualized devices VMM

Interfaces

MMU virtualization

Shadow PTE

Nested page tables

Buses

USB

PCI

Peripherals

Emulated devices

Paravirtualized

CPU virtualization

ISA emulation

vAPIC

Graphics

3D2D acceleration

Shaders

Rich functionality

Shared folders

Shared everything

Privileged drivers

Hypercall interface

Hardware VMX

Etc

Inter-VM networking

Printing services

Hypercall interface Extensions protocols

UHCI OHCI xHCI eHCI

Classical models E1000 Virtio DEC

Hypercall handlers

VM escapesLocal EoP

DHCP TFPT PXE boot zero-conf

Synthetic models hypercall-based IO

Note on hardware virtualization support

MYTH ALERT

Technological m

ess

Attack surface

Host modules Guest services Virtualized devices VMM

Interfaces

MMU virtualization

Shadow PTE

Nested page tables

Buses

USB

PCI

Peripherals

Emulated devices

Paravirtualized

CPU virtualization

ISA emulation

vAPIC

Graphics

3D2D acceleration

Shaders

Rich functionality

Shared folders

Shared everything

Privileged drivers

Hypercall interface

Hardware VMX

Etc

Inter-VM networking

Printing services

Hypercall interface Extensions protocol

Guest services architecture (example GL)

VMM

Emulated and para devices

Guest services (backend)

Hypercall interface kernel module

GA 3d graphics

hooks

GA file system hooks

Userapp

SystemAPI

Hypervisor VMHW

GPU

Users

RPC protocols

Guest additions Virtualization tools

Part 2

Parallels Desktop

Parallels Desktop Architecture vs The Model

Host modules Guest services Virtualized devices VMM

Interfaces

MMU virtualization

Shadow PTE

Nested page tables

Buses

USB

PCI

Peripherals

Emulated devices

Paravirtualized

CPU virtualization

ISA emulation

vAPIC

Graphics

3D2D acceleration

Shaders

Rich functionality

Shared folders

Shared everything

Privileged drivers

Hypercall interface

Hardware VMX

Etc

Inter-VM networking

Printing services

Hypercall interface Extensions protocols

VM escapesLocal EoP

parallels_symbolizepy

Parallels research tip verbose debug logs

Parallels virtual hardware

init_devices

Parallels emulated devices

Parallels Toolgate

Parallels Tools amp Toolgate

Toolgate protocol

Part 3

The Bug

zero

daye

ngin

eering

com

Reverse-Engineering Parallels Toolgate

zero

daye

ngin

eering

com

Toolgate Request Handlers

zero

daye

ngin

eering

com

Parallels Shared Folders

zero

daye

ngin

eering

com

Parsing SF hypercalls

zero

daye

ngin

eering

com

The Bug

Part 4

The Exploit

zero

daye

ngin

eering

com

prl_fs

zero

daye

ngin

eering

com

Prl_fs guest ltgt hypervisor

zero

daye

ngin

eering

com

SF protocol

zero

daye

ngin

eering

com

Reaching the bug

zero

daye

ngin

eering

com

Not so easyhellip

zero

daye

ngin

eering

com

prl_pwn kernel module

zero

daye

ngin

eering

com

prl_pwn kernel module (imports)

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

prl_pwnpy

zero

daye

ngin

eering

com

Toolgate protocol primitives ndash user side

zero

daye

ngin

eering

com

Toolgate protocol primitives ndash hypervisor side

zero

daye

ngin

eering

com

Talking to the hypervisor

zero

daye

ngin

eering

com

Emulating the protocol

zero

daye

ngin

eering

com

Execute payload

zero

daye

ngin

eering

com

VMware shared folders (CVE-2007-1744) Directory traversal Implementation uses

MultiByteToWideChar() API Path sanitization is bypassed

by injecting a unicode lsquorsquo substring as ldquoc02ec02erdquo

CVE-2008-0923 directory traversal 2

Improperly patched CVE-2007-1744

Path sanitization is bypassed by injecting ldquo0xc20x2e0xc20x2erdquo

Literally the first case study slide in my training ldquoHypervisor Vulnerability Researchrdquo

zero

daye

ngin

eering

com

Thank youTwitter alisaesageEmail contactzerodayengineeringcom

Page 5: Advanced Exploitation of Simple Bugs

Hypervisor Threat Model

Host modules Guest services Virtualized devices VMM

Interfaces

MMU virtualization

Shadow PTE

Nested page tables

Buses

USB

PCI

Peripherals

Emulated devices

Paravirtualized

CPU virtualization

ISA emulation

vAPIC

Graphics

3D2D acceleration

Shaders

Rich functionality

Shared folders

Shared everything

Privileged drivers

Hypercall interface

Hardware VMX

Etc

Inter-VM networking

Printing services

Hypercall interface Extensions protocols

UHCI OHCI xHCI eHCI

Classical models E1000 Virtio DEC

Hypercall handlers

VM escapesLocal EoP

DHCP TFPT PXE boot zero-conf

Synthetic models hypercall-based IO

Note on hardware virtualization support

MYTH ALERT

Technological m

ess

Attack surface

Host modules Guest services Virtualized devices VMM

Interfaces

MMU virtualization

Shadow PTE

Nested page tables

Buses

USB

PCI

Peripherals

Emulated devices

Paravirtualized

CPU virtualization

ISA emulation

vAPIC

Graphics

3D2D acceleration

Shaders

Rich functionality

Shared folders

Shared everything

Privileged drivers

Hypercall interface

Hardware VMX

Etc

Inter-VM networking

Printing services

Hypercall interface Extensions protocol

Guest services architecture (example GL)

VMM

Emulated and para devices

Guest services (backend)

Hypercall interface kernel module

GA 3d graphics

hooks

GA file system hooks

Userapp

SystemAPI

Hypervisor VMHW

GPU

Users

RPC protocols

Guest additions Virtualization tools

Part 2

Parallels Desktop

Parallels Desktop Architecture vs The Model

Host modules Guest services Virtualized devices VMM

Interfaces

MMU virtualization

Shadow PTE

Nested page tables

Buses

USB

PCI

Peripherals

Emulated devices

Paravirtualized

CPU virtualization

ISA emulation

vAPIC

Graphics

3D2D acceleration

Shaders

Rich functionality

Shared folders

Shared everything

Privileged drivers

Hypercall interface

Hardware VMX

Etc

Inter-VM networking

Printing services

Hypercall interface Extensions protocols

VM escapesLocal EoP

parallels_symbolizepy

Parallels research tip verbose debug logs

Parallels virtual hardware

init_devices

Parallels emulated devices

Parallels Toolgate

Parallels Tools amp Toolgate

Toolgate protocol

Part 3

The Bug

zero

daye

ngin

eering

com

Reverse-Engineering Parallels Toolgate

zero

daye

ngin

eering

com

Toolgate Request Handlers

zero

daye

ngin

eering

com

Parallels Shared Folders

zero

daye

ngin

eering

com

Parsing SF hypercalls

zero

daye

ngin

eering

com

The Bug

Part 4

The Exploit

zero

daye

ngin

eering

com

prl_fs

zero

daye

ngin

eering

com

Prl_fs guest ltgt hypervisor

zero

daye

ngin

eering

com

SF protocol

zero

daye

ngin

eering

com

Reaching the bug

zero

daye

ngin

eering

com

Not so easyhellip

zero

daye

ngin

eering

com

prl_pwn kernel module

zero

daye

ngin

eering

com

prl_pwn kernel module (imports)

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

prl_pwnpy

zero

daye

ngin

eering

com

Toolgate protocol primitives ndash user side

zero

daye

ngin

eering

com

Toolgate protocol primitives ndash hypervisor side

zero

daye

ngin

eering

com

Talking to the hypervisor

zero

daye

ngin

eering

com

Emulating the protocol

zero

daye

ngin

eering

com

Execute payload

zero

daye

ngin

eering

com

VMware shared folders (CVE-2007-1744) Directory traversal Implementation uses

MultiByteToWideChar() API Path sanitization is bypassed

by injecting a unicode lsquorsquo substring as ldquoc02ec02erdquo

CVE-2008-0923 directory traversal 2

Improperly patched CVE-2007-1744

Path sanitization is bypassed by injecting ldquo0xc20x2e0xc20x2erdquo

Literally the first case study slide in my training ldquoHypervisor Vulnerability Researchrdquo

zero

daye

ngin

eering

com

Thank youTwitter alisaesageEmail contactzerodayengineeringcom

Page 6: Advanced Exploitation of Simple Bugs

Attack surface

Host modules Guest services Virtualized devices VMM

Interfaces

MMU virtualization

Shadow PTE

Nested page tables

Buses

USB

PCI

Peripherals

Emulated devices

Paravirtualized

CPU virtualization

ISA emulation

vAPIC

Graphics

3D2D acceleration

Shaders

Rich functionality

Shared folders

Shared everything

Privileged drivers

Hypercall interface

Hardware VMX

Etc

Inter-VM networking

Printing services

Hypercall interface Extensions protocol

Guest services architecture (example GL)

VMM

Emulated and para devices

Guest services (backend)

Hypercall interface kernel module

GA 3d graphics

hooks

GA file system hooks

Userapp

SystemAPI

Hypervisor VMHW

GPU

Users

RPC protocols

Guest additions Virtualization tools

Part 2

Parallels Desktop

Parallels Desktop Architecture vs The Model

Host modules Guest services Virtualized devices VMM

Interfaces

MMU virtualization

Shadow PTE

Nested page tables

Buses

USB

PCI

Peripherals

Emulated devices

Paravirtualized

CPU virtualization

ISA emulation

vAPIC

Graphics

3D2D acceleration

Shaders

Rich functionality

Shared folders

Shared everything

Privileged drivers

Hypercall interface

Hardware VMX

Etc

Inter-VM networking

Printing services

Hypercall interface Extensions protocols

VM escapesLocal EoP

parallels_symbolizepy

Parallels research tip verbose debug logs

Parallels virtual hardware

init_devices

Parallels emulated devices

Parallels Toolgate

Parallels Tools amp Toolgate

Toolgate protocol

Part 3

The Bug

zero

daye

ngin

eering

com

Reverse-Engineering Parallels Toolgate

zero

daye

ngin

eering

com

Toolgate Request Handlers

zero

daye

ngin

eering

com

Parallels Shared Folders

zero

daye

ngin

eering

com

Parsing SF hypercalls

zero

daye

ngin

eering

com

The Bug

Part 4

The Exploit

zero

daye

ngin

eering

com

prl_fs

zero

daye

ngin

eering

com

Prl_fs guest ltgt hypervisor

zero

daye

ngin

eering

com

SF protocol

zero

daye

ngin

eering

com

Reaching the bug

zero

daye

ngin

eering

com

Not so easyhellip

zero

daye

ngin

eering

com

prl_pwn kernel module

zero

daye

ngin

eering

com

prl_pwn kernel module (imports)

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

prl_pwnpy

zero

daye

ngin

eering

com

Toolgate protocol primitives ndash user side

zero

daye

ngin

eering

com

Toolgate protocol primitives ndash hypervisor side

zero

daye

ngin

eering

com

Talking to the hypervisor

zero

daye

ngin

eering

com

Emulating the protocol

zero

daye

ngin

eering

com

Execute payload

zero

daye

ngin

eering

com

VMware shared folders (CVE-2007-1744) Directory traversal Implementation uses

MultiByteToWideChar() API Path sanitization is bypassed

by injecting a unicode lsquorsquo substring as ldquoc02ec02erdquo

CVE-2008-0923 directory traversal 2

Improperly patched CVE-2007-1744

Path sanitization is bypassed by injecting ldquo0xc20x2e0xc20x2erdquo

Literally the first case study slide in my training ldquoHypervisor Vulnerability Researchrdquo

zero

daye

ngin

eering

com

Thank youTwitter alisaesageEmail contactzerodayengineeringcom

Page 7: Advanced Exploitation of Simple Bugs

Guest services architecture (example GL)

VMM

Emulated and para devices

Guest services (backend)

Hypercall interface kernel module

GA 3d graphics

hooks

GA file system hooks

Userapp

SystemAPI

Hypervisor VMHW

GPU

Users

RPC protocols

Guest additions Virtualization tools

Part 2

Parallels Desktop

Parallels Desktop Architecture vs The Model

Host modules Guest services Virtualized devices VMM

Interfaces

MMU virtualization

Shadow PTE

Nested page tables

Buses

USB

PCI

Peripherals

Emulated devices

Paravirtualized

CPU virtualization

ISA emulation

vAPIC

Graphics

3D2D acceleration

Shaders

Rich functionality

Shared folders

Shared everything

Privileged drivers

Hypercall interface

Hardware VMX

Etc

Inter-VM networking

Printing services

Hypercall interface Extensions protocols

VM escapesLocal EoP

parallels_symbolizepy

Parallels research tip verbose debug logs

Parallels virtual hardware

init_devices

Parallels emulated devices

Parallels Toolgate

Parallels Tools amp Toolgate

Toolgate protocol

Part 3

The Bug

zero

daye

ngin

eering

com

Reverse-Engineering Parallels Toolgate

zero

daye

ngin

eering

com

Toolgate Request Handlers

zero

daye

ngin

eering

com

Parallels Shared Folders

zero

daye

ngin

eering

com

Parsing SF hypercalls

zero

daye

ngin

eering

com

The Bug

Part 4

The Exploit

zero

daye

ngin

eering

com

prl_fs

zero

daye

ngin

eering

com

Prl_fs guest ltgt hypervisor

zero

daye

ngin

eering

com

SF protocol

zero

daye

ngin

eering

com

Reaching the bug

zero

daye

ngin

eering

com

Not so easyhellip

zero

daye

ngin

eering

com

prl_pwn kernel module

zero

daye

ngin

eering

com

prl_pwn kernel module (imports)

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

prl_pwnpy

zero

daye

ngin

eering

com

Toolgate protocol primitives ndash user side

zero

daye

ngin

eering

com

Toolgate protocol primitives ndash hypervisor side

zero

daye

ngin

eering

com

Talking to the hypervisor

zero

daye

ngin

eering

com

Emulating the protocol

zero

daye

ngin

eering

com

Execute payload

zero

daye

ngin

eering

com

VMware shared folders (CVE-2007-1744) Directory traversal Implementation uses

MultiByteToWideChar() API Path sanitization is bypassed

by injecting a unicode lsquorsquo substring as ldquoc02ec02erdquo

CVE-2008-0923 directory traversal 2

Improperly patched CVE-2007-1744

Path sanitization is bypassed by injecting ldquo0xc20x2e0xc20x2erdquo

Literally the first case study slide in my training ldquoHypervisor Vulnerability Researchrdquo

zero

daye

ngin

eering

com

Thank youTwitter alisaesageEmail contactzerodayengineeringcom

Page 8: Advanced Exploitation of Simple Bugs

RPC protocols

Guest additions Virtualization tools

Part 2

Parallels Desktop

Parallels Desktop Architecture vs The Model

Host modules Guest services Virtualized devices VMM

Interfaces

MMU virtualization

Shadow PTE

Nested page tables

Buses

USB

PCI

Peripherals

Emulated devices

Paravirtualized

CPU virtualization

ISA emulation

vAPIC

Graphics

3D2D acceleration

Shaders

Rich functionality

Shared folders

Shared everything

Privileged drivers

Hypercall interface

Hardware VMX

Etc

Inter-VM networking

Printing services

Hypercall interface Extensions protocols

VM escapesLocal EoP

parallels_symbolizepy

Parallels research tip verbose debug logs

Parallels virtual hardware

init_devices

Parallels emulated devices

Parallels Toolgate

Parallels Tools amp Toolgate

Toolgate protocol

Part 3

The Bug

zero

daye

ngin

eering

com

Reverse-Engineering Parallels Toolgate

zero

daye

ngin

eering

com

Toolgate Request Handlers

zero

daye

ngin

eering

com

Parallels Shared Folders

zero

daye

ngin

eering

com

Parsing SF hypercalls

zero

daye

ngin

eering

com

The Bug

Part 4

The Exploit

zero

daye

ngin

eering

com

prl_fs

zero

daye

ngin

eering

com

Prl_fs guest ltgt hypervisor

zero

daye

ngin

eering

com

SF protocol

zero

daye

ngin

eering

com

Reaching the bug

zero

daye

ngin

eering

com

Not so easyhellip

zero

daye

ngin

eering

com

prl_pwn kernel module

zero

daye

ngin

eering

com

prl_pwn kernel module (imports)

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

prl_pwnpy

zero

daye

ngin

eering

com

Toolgate protocol primitives ndash user side

zero

daye

ngin

eering

com

Toolgate protocol primitives ndash hypervisor side

zero

daye

ngin

eering

com

Talking to the hypervisor

zero

daye

ngin

eering

com

Emulating the protocol

zero

daye

ngin

eering

com

Execute payload

zero

daye

ngin

eering

com

VMware shared folders (CVE-2007-1744) Directory traversal Implementation uses

MultiByteToWideChar() API Path sanitization is bypassed

by injecting a unicode lsquorsquo substring as ldquoc02ec02erdquo

CVE-2008-0923 directory traversal 2

Improperly patched CVE-2007-1744

Path sanitization is bypassed by injecting ldquo0xc20x2e0xc20x2erdquo

Literally the first case study slide in my training ldquoHypervisor Vulnerability Researchrdquo

zero

daye

ngin

eering

com

Thank youTwitter alisaesageEmail contactzerodayengineeringcom

Page 9: Advanced Exploitation of Simple Bugs

Guest additions Virtualization tools

Part 2

Parallels Desktop

Parallels Desktop Architecture vs The Model

Host modules Guest services Virtualized devices VMM

Interfaces

MMU virtualization

Shadow PTE

Nested page tables

Buses

USB

PCI

Peripherals

Emulated devices

Paravirtualized

CPU virtualization

ISA emulation

vAPIC

Graphics

3D2D acceleration

Shaders

Rich functionality

Shared folders

Shared everything

Privileged drivers

Hypercall interface

Hardware VMX

Etc

Inter-VM networking

Printing services

Hypercall interface Extensions protocols

VM escapesLocal EoP

parallels_symbolizepy

Parallels research tip verbose debug logs

Parallels virtual hardware

init_devices

Parallels emulated devices

Parallels Toolgate

Parallels Tools amp Toolgate

Toolgate protocol

Part 3

The Bug

zero

daye

ngin

eering

com

Reverse-Engineering Parallels Toolgate

zero

daye

ngin

eering

com

Toolgate Request Handlers

zero

daye

ngin

eering

com

Parallels Shared Folders

zero

daye

ngin

eering

com

Parsing SF hypercalls

zero

daye

ngin

eering

com

The Bug

Part 4

The Exploit

zero

daye

ngin

eering

com

prl_fs

zero

daye

ngin

eering

com

Prl_fs guest ltgt hypervisor

zero

daye

ngin

eering

com

SF protocol

zero

daye

ngin

eering

com

Reaching the bug

zero

daye

ngin

eering

com

Not so easyhellip

zero

daye

ngin

eering

com

prl_pwn kernel module

zero

daye

ngin

eering

com

prl_pwn kernel module (imports)

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

prl_pwnpy

zero

daye

ngin

eering

com

Toolgate protocol primitives ndash user side

zero

daye

ngin

eering

com

Toolgate protocol primitives ndash hypervisor side

zero

daye

ngin

eering

com

Talking to the hypervisor

zero

daye

ngin

eering

com

Emulating the protocol

zero

daye

ngin

eering

com

Execute payload

zero

daye

ngin

eering

com

VMware shared folders (CVE-2007-1744) Directory traversal Implementation uses

MultiByteToWideChar() API Path sanitization is bypassed

by injecting a unicode lsquorsquo substring as ldquoc02ec02erdquo

CVE-2008-0923 directory traversal 2

Improperly patched CVE-2007-1744

Path sanitization is bypassed by injecting ldquo0xc20x2e0xc20x2erdquo

Literally the first case study slide in my training ldquoHypervisor Vulnerability Researchrdquo

zero

daye

ngin

eering

com

Thank youTwitter alisaesageEmail contactzerodayengineeringcom

Page 10: Advanced Exploitation of Simple Bugs

Part 2

Parallels Desktop

Parallels Desktop Architecture vs The Model

Host modules Guest services Virtualized devices VMM

Interfaces

MMU virtualization

Shadow PTE

Nested page tables

Buses

USB

PCI

Peripherals

Emulated devices

Paravirtualized

CPU virtualization

ISA emulation

vAPIC

Graphics

3D2D acceleration

Shaders

Rich functionality

Shared folders

Shared everything

Privileged drivers

Hypercall interface

Hardware VMX

Etc

Inter-VM networking

Printing services

Hypercall interface Extensions protocols

VM escapesLocal EoP

parallels_symbolizepy

Parallels research tip verbose debug logs

Parallels virtual hardware

init_devices

Parallels emulated devices

Parallels Toolgate

Parallels Tools amp Toolgate

Toolgate protocol

Part 3

The Bug

zero

daye

ngin

eering

com

Reverse-Engineering Parallels Toolgate

zero

daye

ngin

eering

com

Toolgate Request Handlers

zero

daye

ngin

eering

com

Parallels Shared Folders

zero

daye

ngin

eering

com

Parsing SF hypercalls

zero

daye

ngin

eering

com

The Bug

Part 4

The Exploit

zero

daye

ngin

eering

com

prl_fs

zero

daye

ngin

eering

com

Prl_fs guest ltgt hypervisor

zero

daye

ngin

eering

com

SF protocol

zero

daye

ngin

eering

com

Reaching the bug

zero

daye

ngin

eering

com

Not so easyhellip

zero

daye

ngin

eering

com

prl_pwn kernel module

zero

daye

ngin

eering

com

prl_pwn kernel module (imports)

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

prl_pwnpy

zero

daye

ngin

eering

com

Toolgate protocol primitives ndash user side

zero

daye

ngin

eering

com

Toolgate protocol primitives ndash hypervisor side

zero

daye

ngin

eering

com

Talking to the hypervisor

zero

daye

ngin

eering

com

Emulating the protocol

zero

daye

ngin

eering

com

Execute payload

zero

daye

ngin

eering

com

VMware shared folders (CVE-2007-1744) Directory traversal Implementation uses

MultiByteToWideChar() API Path sanitization is bypassed

by injecting a unicode lsquorsquo substring as ldquoc02ec02erdquo

CVE-2008-0923 directory traversal 2

Improperly patched CVE-2007-1744

Path sanitization is bypassed by injecting ldquo0xc20x2e0xc20x2erdquo

Literally the first case study slide in my training ldquoHypervisor Vulnerability Researchrdquo

zero

daye

ngin

eering

com

Thank youTwitter alisaesageEmail contactzerodayengineeringcom

Page 11: Advanced Exploitation of Simple Bugs

Parallels Desktop Architecture vs The Model

Host modules Guest services Virtualized devices VMM

Interfaces

MMU virtualization

Shadow PTE

Nested page tables

Buses

USB

PCI

Peripherals

Emulated devices

Paravirtualized

CPU virtualization

ISA emulation

vAPIC

Graphics

3D2D acceleration

Shaders

Rich functionality

Shared folders

Shared everything

Privileged drivers

Hypercall interface

Hardware VMX

Etc

Inter-VM networking

Printing services

Hypercall interface Extensions protocols

VM escapesLocal EoP

parallels_symbolizepy

Parallels research tip verbose debug logs

Parallels virtual hardware

init_devices

Parallels emulated devices

Parallels Toolgate

Parallels Tools amp Toolgate

Toolgate protocol

Part 3

The Bug

zero

daye

ngin

eering

com

Reverse-Engineering Parallels Toolgate

zero

daye

ngin

eering

com

Toolgate Request Handlers

zero

daye

ngin

eering

com

Parallels Shared Folders

zero

daye

ngin

eering

com

Parsing SF hypercalls

zero

daye

ngin

eering

com

The Bug

Part 4

The Exploit

zero

daye

ngin

eering

com

prl_fs

zero

daye

ngin

eering

com

Prl_fs guest ltgt hypervisor

zero

daye

ngin

eering

com

SF protocol

zero

daye

ngin

eering

com

Reaching the bug

zero

daye

ngin

eering

com

Not so easyhellip

zero

daye

ngin

eering

com

prl_pwn kernel module

zero

daye

ngin

eering

com

prl_pwn kernel module (imports)

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

prl_pwnpy

zero

daye

ngin

eering

com

Toolgate protocol primitives ndash user side

zero

daye

ngin

eering

com

Toolgate protocol primitives ndash hypervisor side

zero

daye

ngin

eering

com

Talking to the hypervisor

zero

daye

ngin

eering

com

Emulating the protocol

zero

daye

ngin

eering

com

Execute payload

zero

daye

ngin

eering

com

VMware shared folders (CVE-2007-1744) Directory traversal Implementation uses

MultiByteToWideChar() API Path sanitization is bypassed

by injecting a unicode lsquorsquo substring as ldquoc02ec02erdquo

CVE-2008-0923 directory traversal 2

Improperly patched CVE-2007-1744

Path sanitization is bypassed by injecting ldquo0xc20x2e0xc20x2erdquo

Literally the first case study slide in my training ldquoHypervisor Vulnerability Researchrdquo

zero

daye

ngin

eering

com

Thank youTwitter alisaesageEmail contactzerodayengineeringcom

Page 12: Advanced Exploitation of Simple Bugs

parallels_symbolizepy

Parallels research tip verbose debug logs

Parallels virtual hardware

init_devices

Parallels emulated devices

Parallels Toolgate

Parallels Tools amp Toolgate

Toolgate protocol

Part 3

The Bug

zero

daye

ngin

eering

com

Reverse-Engineering Parallels Toolgate

zero

daye

ngin

eering

com

Toolgate Request Handlers

zero

daye

ngin

eering

com

Parallels Shared Folders

zero

daye

ngin

eering

com

Parsing SF hypercalls

zero

daye

ngin

eering

com

The Bug

Part 4

The Exploit

zero

daye

ngin

eering

com

prl_fs

zero

daye

ngin

eering

com

Prl_fs guest ltgt hypervisor

zero

daye

ngin

eering

com

SF protocol

zero

daye

ngin

eering

com

Reaching the bug

zero

daye

ngin

eering

com

Not so easyhellip

zero

daye

ngin

eering

com

prl_pwn kernel module

zero

daye

ngin

eering

com

prl_pwn kernel module (imports)

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

prl_pwnpy

zero

daye

ngin

eering

com

Toolgate protocol primitives ndash user side

zero

daye

ngin

eering

com

Toolgate protocol primitives ndash hypervisor side

zero

daye

ngin

eering

com

Talking to the hypervisor

zero

daye

ngin

eering

com

Emulating the protocol

zero

daye

ngin

eering

com

Execute payload

zero

daye

ngin

eering

com

VMware shared folders (CVE-2007-1744) Directory traversal Implementation uses

MultiByteToWideChar() API Path sanitization is bypassed

by injecting a unicode lsquorsquo substring as ldquoc02ec02erdquo

CVE-2008-0923 directory traversal 2

Improperly patched CVE-2007-1744

Path sanitization is bypassed by injecting ldquo0xc20x2e0xc20x2erdquo

Literally the first case study slide in my training ldquoHypervisor Vulnerability Researchrdquo

zero

daye

ngin

eering

com

Thank youTwitter alisaesageEmail contactzerodayengineeringcom

Page 13: Advanced Exploitation of Simple Bugs

Parallels research tip verbose debug logs

Parallels virtual hardware

init_devices

Parallels emulated devices

Parallels Toolgate

Parallels Tools amp Toolgate

Toolgate protocol

Part 3

The Bug

zero

daye

ngin

eering

com

Reverse-Engineering Parallels Toolgate

zero

daye

ngin

eering

com

Toolgate Request Handlers

zero

daye

ngin

eering

com

Parallels Shared Folders

zero

daye

ngin

eering

com

Parsing SF hypercalls

zero

daye

ngin

eering

com

The Bug

Part 4

The Exploit

zero

daye

ngin

eering

com

prl_fs

zero

daye

ngin

eering

com

Prl_fs guest ltgt hypervisor

zero

daye

ngin

eering

com

SF protocol

zero

daye

ngin

eering

com

Reaching the bug

zero

daye

ngin

eering

com

Not so easyhellip

zero

daye

ngin

eering

com

prl_pwn kernel module

zero

daye

ngin

eering

com

prl_pwn kernel module (imports)

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

prl_pwnpy

zero

daye

ngin

eering

com

Toolgate protocol primitives ndash user side

zero

daye

ngin

eering

com

Toolgate protocol primitives ndash hypervisor side

zero

daye

ngin

eering

com

Talking to the hypervisor

zero

daye

ngin

eering

com

Emulating the protocol

zero

daye

ngin

eering

com

Execute payload

zero

daye

ngin

eering

com

VMware shared folders (CVE-2007-1744) Directory traversal Implementation uses

MultiByteToWideChar() API Path sanitization is bypassed

by injecting a unicode lsquorsquo substring as ldquoc02ec02erdquo

CVE-2008-0923 directory traversal 2

Improperly patched CVE-2007-1744

Path sanitization is bypassed by injecting ldquo0xc20x2e0xc20x2erdquo

Literally the first case study slide in my training ldquoHypervisor Vulnerability Researchrdquo

zero

daye

ngin

eering

com

Thank youTwitter alisaesageEmail contactzerodayengineeringcom

Page 14: Advanced Exploitation of Simple Bugs

Parallels virtual hardware

init_devices

Parallels emulated devices

Parallels Toolgate

Parallels Tools amp Toolgate

Toolgate protocol

Part 3

The Bug

zero

daye

ngin

eering

com

Reverse-Engineering Parallels Toolgate

zero

daye

ngin

eering

com

Toolgate Request Handlers

zero

daye

ngin

eering

com

Parallels Shared Folders

zero

daye

ngin

eering

com

Parsing SF hypercalls

zero

daye

ngin

eering

com

The Bug

Part 4

The Exploit

zero

daye

ngin

eering

com

prl_fs

zero

daye

ngin

eering

com

Prl_fs guest ltgt hypervisor

zero

daye

ngin

eering

com

SF protocol

zero

daye

ngin

eering

com

Reaching the bug

zero

daye

ngin

eering

com

Not so easyhellip

zero

daye

ngin

eering

com

prl_pwn kernel module

zero

daye

ngin

eering

com

prl_pwn kernel module (imports)

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

prl_pwnpy

zero

daye

ngin

eering

com

Toolgate protocol primitives ndash user side

zero

daye

ngin

eering

com

Toolgate protocol primitives ndash hypervisor side

zero

daye

ngin

eering

com

Talking to the hypervisor

zero

daye

ngin

eering

com

Emulating the protocol

zero

daye

ngin

eering

com

Execute payload

zero

daye

ngin

eering

com

VMware shared folders (CVE-2007-1744) Directory traversal Implementation uses

MultiByteToWideChar() API Path sanitization is bypassed

by injecting a unicode lsquorsquo substring as ldquoc02ec02erdquo

CVE-2008-0923 directory traversal 2

Improperly patched CVE-2007-1744

Path sanitization is bypassed by injecting ldquo0xc20x2e0xc20x2erdquo

Literally the first case study slide in my training ldquoHypervisor Vulnerability Researchrdquo

zero

daye

ngin

eering

com

Thank youTwitter alisaesageEmail contactzerodayengineeringcom

Page 15: Advanced Exploitation of Simple Bugs

init_devices

Parallels emulated devices

Parallels Toolgate

Parallels Tools amp Toolgate

Toolgate protocol

Part 3

The Bug

zero

daye

ngin

eering

com

Reverse-Engineering Parallels Toolgate

zero

daye

ngin

eering

com

Toolgate Request Handlers

zero

daye

ngin

eering

com

Parallels Shared Folders

zero

daye

ngin

eering

com

Parsing SF hypercalls

zero

daye

ngin

eering

com

The Bug

Part 4

The Exploit

zero

daye

ngin

eering

com

prl_fs

zero

daye

ngin

eering

com

Prl_fs guest ltgt hypervisor

zero

daye

ngin

eering

com

SF protocol

zero

daye

ngin

eering

com

Reaching the bug

zero

daye

ngin

eering

com

Not so easyhellip

zero

daye

ngin

eering

com

prl_pwn kernel module

zero

daye

ngin

eering

com

prl_pwn kernel module (imports)

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

prl_pwnpy

zero

daye

ngin

eering

com

Toolgate protocol primitives ndash user side

zero

daye

ngin

eering

com

Toolgate protocol primitives ndash hypervisor side

zero

daye

ngin

eering

com

Talking to the hypervisor

zero

daye

ngin

eering

com

Emulating the protocol

zero

daye

ngin

eering

com

Execute payload

zero

daye

ngin

eering

com

VMware shared folders (CVE-2007-1744) Directory traversal Implementation uses

MultiByteToWideChar() API Path sanitization is bypassed

by injecting a unicode lsquorsquo substring as ldquoc02ec02erdquo

CVE-2008-0923 directory traversal 2

Improperly patched CVE-2007-1744

Path sanitization is bypassed by injecting ldquo0xc20x2e0xc20x2erdquo

Literally the first case study slide in my training ldquoHypervisor Vulnerability Researchrdquo

zero

daye

ngin

eering

com

Thank youTwitter alisaesageEmail contactzerodayengineeringcom

Page 16: Advanced Exploitation of Simple Bugs

Parallels emulated devices

Parallels Toolgate

Parallels Tools amp Toolgate

Toolgate protocol

Part 3

The Bug

zero

daye

ngin

eering

com

Reverse-Engineering Parallels Toolgate

zero

daye

ngin

eering

com

Toolgate Request Handlers

zero

daye

ngin

eering

com

Parallels Shared Folders

zero

daye

ngin

eering

com

Parsing SF hypercalls

zero

daye

ngin

eering

com

The Bug

Part 4

The Exploit

zero

daye

ngin

eering

com

prl_fs

zero

daye

ngin

eering

com

Prl_fs guest ltgt hypervisor

zero

daye

ngin

eering

com

SF protocol

zero

daye

ngin

eering

com

Reaching the bug

zero

daye

ngin

eering

com

Not so easyhellip

zero

daye

ngin

eering

com

prl_pwn kernel module

zero

daye

ngin

eering

com

prl_pwn kernel module (imports)

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

prl_pwnpy

zero

daye

ngin

eering

com

Toolgate protocol primitives ndash user side

zero

daye

ngin

eering

com

Toolgate protocol primitives ndash hypervisor side

zero

daye

ngin

eering

com

Talking to the hypervisor

zero

daye

ngin

eering

com

Emulating the protocol

zero

daye

ngin

eering

com

Execute payload

zero

daye

ngin

eering

com

VMware shared folders (CVE-2007-1744) Directory traversal Implementation uses

MultiByteToWideChar() API Path sanitization is bypassed

by injecting a unicode lsquorsquo substring as ldquoc02ec02erdquo

CVE-2008-0923 directory traversal 2

Improperly patched CVE-2007-1744

Path sanitization is bypassed by injecting ldquo0xc20x2e0xc20x2erdquo

Literally the first case study slide in my training ldquoHypervisor Vulnerability Researchrdquo

zero

daye

ngin

eering

com

Thank youTwitter alisaesageEmail contactzerodayengineeringcom

Page 17: Advanced Exploitation of Simple Bugs

Parallels Toolgate

Parallels Tools amp Toolgate

Toolgate protocol

Part 3

The Bug

zero

daye

ngin

eering

com

Reverse-Engineering Parallels Toolgate

zero

daye

ngin

eering

com

Toolgate Request Handlers

zero

daye

ngin

eering

com

Parallels Shared Folders

zero

daye

ngin

eering

com

Parsing SF hypercalls

zero

daye

ngin

eering

com

The Bug

Part 4

The Exploit

zero

daye

ngin

eering

com

prl_fs

zero

daye

ngin

eering

com

Prl_fs guest ltgt hypervisor

zero

daye

ngin

eering

com

SF protocol

zero

daye

ngin

eering

com

Reaching the bug

zero

daye

ngin

eering

com

Not so easyhellip

zero

daye

ngin

eering

com

prl_pwn kernel module

zero

daye

ngin

eering

com

prl_pwn kernel module (imports)

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

prl_pwnpy

zero

daye

ngin

eering

com

Toolgate protocol primitives ndash user side

zero

daye

ngin

eering

com

Toolgate protocol primitives ndash hypervisor side

zero

daye

ngin

eering

com

Talking to the hypervisor

zero

daye

ngin

eering

com

Emulating the protocol

zero

daye

ngin

eering

com

Execute payload

zero

daye

ngin

eering

com

VMware shared folders (CVE-2007-1744) Directory traversal Implementation uses

MultiByteToWideChar() API Path sanitization is bypassed

by injecting a unicode lsquorsquo substring as ldquoc02ec02erdquo

CVE-2008-0923 directory traversal 2

Improperly patched CVE-2007-1744

Path sanitization is bypassed by injecting ldquo0xc20x2e0xc20x2erdquo

Literally the first case study slide in my training ldquoHypervisor Vulnerability Researchrdquo

zero

daye

ngin

eering

com

Thank youTwitter alisaesageEmail contactzerodayengineeringcom

Page 18: Advanced Exploitation of Simple Bugs

Parallels Tools amp Toolgate

Toolgate protocol

Part 3

The Bug

zero

daye

ngin

eering

com

Reverse-Engineering Parallels Toolgate

zero

daye

ngin

eering

com

Toolgate Request Handlers

zero

daye

ngin

eering

com

Parallels Shared Folders

zero

daye

ngin

eering

com

Parsing SF hypercalls

zero

daye

ngin

eering

com

The Bug

Part 4

The Exploit

zero

daye

ngin

eering

com

prl_fs

zero

daye

ngin

eering

com

Prl_fs guest ltgt hypervisor

zero

daye

ngin

eering

com

SF protocol

zero

daye

ngin

eering

com

Reaching the bug

zero

daye

ngin

eering

com

Not so easyhellip

zero

daye

ngin

eering

com

prl_pwn kernel module

zero

daye

ngin

eering

com

prl_pwn kernel module (imports)

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

prl_pwnpy

zero

daye

ngin

eering

com

Toolgate protocol primitives ndash user side

zero

daye

ngin

eering

com

Toolgate protocol primitives ndash hypervisor side

zero

daye

ngin

eering

com

Talking to the hypervisor

zero

daye

ngin

eering

com

Emulating the protocol

zero

daye

ngin

eering

com

Execute payload

zero

daye

ngin

eering

com

VMware shared folders (CVE-2007-1744) Directory traversal Implementation uses

MultiByteToWideChar() API Path sanitization is bypassed

by injecting a unicode lsquorsquo substring as ldquoc02ec02erdquo

CVE-2008-0923 directory traversal 2

Improperly patched CVE-2007-1744

Path sanitization is bypassed by injecting ldquo0xc20x2e0xc20x2erdquo

Literally the first case study slide in my training ldquoHypervisor Vulnerability Researchrdquo

zero

daye

ngin

eering

com

Thank youTwitter alisaesageEmail contactzerodayengineeringcom

Page 19: Advanced Exploitation of Simple Bugs

Toolgate protocol

Part 3

The Bug

zero

daye

ngin

eering

com

Reverse-Engineering Parallels Toolgate

zero

daye

ngin

eering

com

Toolgate Request Handlers

zero

daye

ngin

eering

com

Parallels Shared Folders

zero

daye

ngin

eering

com

Parsing SF hypercalls

zero

daye

ngin

eering

com

The Bug

Part 4

The Exploit

zero

daye

ngin

eering

com

prl_fs

zero

daye

ngin

eering

com

Prl_fs guest ltgt hypervisor

zero

daye

ngin

eering

com

SF protocol

zero

daye

ngin

eering

com

Reaching the bug

zero

daye

ngin

eering

com

Not so easyhellip

zero

daye

ngin

eering

com

prl_pwn kernel module

zero

daye

ngin

eering

com

prl_pwn kernel module (imports)

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

prl_pwnpy

zero

daye

ngin

eering

com

Toolgate protocol primitives ndash user side

zero

daye

ngin

eering

com

Toolgate protocol primitives ndash hypervisor side

zero

daye

ngin

eering

com

Talking to the hypervisor

zero

daye

ngin

eering

com

Emulating the protocol

zero

daye

ngin

eering

com

Execute payload

zero

daye

ngin

eering

com

VMware shared folders (CVE-2007-1744) Directory traversal Implementation uses

MultiByteToWideChar() API Path sanitization is bypassed

by injecting a unicode lsquorsquo substring as ldquoc02ec02erdquo

CVE-2008-0923 directory traversal 2

Improperly patched CVE-2007-1744

Path sanitization is bypassed by injecting ldquo0xc20x2e0xc20x2erdquo

Literally the first case study slide in my training ldquoHypervisor Vulnerability Researchrdquo

zero

daye

ngin

eering

com

Thank youTwitter alisaesageEmail contactzerodayengineeringcom

Page 20: Advanced Exploitation of Simple Bugs

Part 3

The Bug

zero

daye

ngin

eering

com

Reverse-Engineering Parallels Toolgate

zero

daye

ngin

eering

com

Toolgate Request Handlers

zero

daye

ngin

eering

com

Parallels Shared Folders

zero

daye

ngin

eering

com

Parsing SF hypercalls

zero

daye

ngin

eering

com

The Bug

Part 4

The Exploit

zero

daye

ngin

eering

com

prl_fs

zero

daye

ngin

eering

com

Prl_fs guest ltgt hypervisor

zero

daye

ngin

eering

com

SF protocol

zero

daye

ngin

eering

com

Reaching the bug

zero

daye

ngin

eering

com

Not so easyhellip

zero

daye

ngin

eering

com

prl_pwn kernel module

zero

daye

ngin

eering

com

prl_pwn kernel module (imports)

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

prl_pwnpy

zero

daye

ngin

eering

com

Toolgate protocol primitives ndash user side

zero

daye

ngin

eering

com

Toolgate protocol primitives ndash hypervisor side

zero

daye

ngin

eering

com

Talking to the hypervisor

zero

daye

ngin

eering

com

Emulating the protocol

zero

daye

ngin

eering

com

Execute payload

zero

daye

ngin

eering

com

VMware shared folders (CVE-2007-1744) Directory traversal Implementation uses

MultiByteToWideChar() API Path sanitization is bypassed

by injecting a unicode lsquorsquo substring as ldquoc02ec02erdquo

CVE-2008-0923 directory traversal 2

Improperly patched CVE-2007-1744

Path sanitization is bypassed by injecting ldquo0xc20x2e0xc20x2erdquo

Literally the first case study slide in my training ldquoHypervisor Vulnerability Researchrdquo

zero

daye

ngin

eering

com

Thank youTwitter alisaesageEmail contactzerodayengineeringcom

Page 21: Advanced Exploitation of Simple Bugs

zero

daye

ngin

eering

com

Reverse-Engineering Parallels Toolgate

zero

daye

ngin

eering

com

Toolgate Request Handlers

zero

daye

ngin

eering

com

Parallels Shared Folders

zero

daye

ngin

eering

com

Parsing SF hypercalls

zero

daye

ngin

eering

com

The Bug

Part 4

The Exploit

zero

daye

ngin

eering

com

prl_fs

zero

daye

ngin

eering

com

Prl_fs guest ltgt hypervisor

zero

daye

ngin

eering

com

SF protocol

zero

daye

ngin

eering

com

Reaching the bug

zero

daye

ngin

eering

com

Not so easyhellip

zero

daye

ngin

eering

com

prl_pwn kernel module

zero

daye

ngin

eering

com

prl_pwn kernel module (imports)

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

prl_pwnpy

zero

daye

ngin

eering

com

Toolgate protocol primitives ndash user side

zero

daye

ngin

eering

com

Toolgate protocol primitives ndash hypervisor side

zero

daye

ngin

eering

com

Talking to the hypervisor

zero

daye

ngin

eering

com

Emulating the protocol

zero

daye

ngin

eering

com

Execute payload

zero

daye

ngin

eering

com

VMware shared folders (CVE-2007-1744) Directory traversal Implementation uses

MultiByteToWideChar() API Path sanitization is bypassed

by injecting a unicode lsquorsquo substring as ldquoc02ec02erdquo

CVE-2008-0923 directory traversal 2

Improperly patched CVE-2007-1744

Path sanitization is bypassed by injecting ldquo0xc20x2e0xc20x2erdquo

Literally the first case study slide in my training ldquoHypervisor Vulnerability Researchrdquo

zero

daye

ngin

eering

com

Thank youTwitter alisaesageEmail contactzerodayengineeringcom

Page 22: Advanced Exploitation of Simple Bugs

zero

daye

ngin

eering

com

Toolgate Request Handlers

zero

daye

ngin

eering

com

Parallels Shared Folders

zero

daye

ngin

eering

com

Parsing SF hypercalls

zero

daye

ngin

eering

com

The Bug

Part 4

The Exploit

zero

daye

ngin

eering

com

prl_fs

zero

daye

ngin

eering

com

Prl_fs guest ltgt hypervisor

zero

daye

ngin

eering

com

SF protocol

zero

daye

ngin

eering

com

Reaching the bug

zero

daye

ngin

eering

com

Not so easyhellip

zero

daye

ngin

eering

com

prl_pwn kernel module

zero

daye

ngin

eering

com

prl_pwn kernel module (imports)

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

prl_pwnpy

zero

daye

ngin

eering

com

Toolgate protocol primitives ndash user side

zero

daye

ngin

eering

com

Toolgate protocol primitives ndash hypervisor side

zero

daye

ngin

eering

com

Talking to the hypervisor

zero

daye

ngin

eering

com

Emulating the protocol

zero

daye

ngin

eering

com

Execute payload

zero

daye

ngin

eering

com

VMware shared folders (CVE-2007-1744) Directory traversal Implementation uses

MultiByteToWideChar() API Path sanitization is bypassed

by injecting a unicode lsquorsquo substring as ldquoc02ec02erdquo

CVE-2008-0923 directory traversal 2

Improperly patched CVE-2007-1744

Path sanitization is bypassed by injecting ldquo0xc20x2e0xc20x2erdquo

Literally the first case study slide in my training ldquoHypervisor Vulnerability Researchrdquo

zero

daye

ngin

eering

com

Thank youTwitter alisaesageEmail contactzerodayengineeringcom

Page 23: Advanced Exploitation of Simple Bugs

zero

daye

ngin

eering

com

Parallels Shared Folders

zero

daye

ngin

eering

com

Parsing SF hypercalls

zero

daye

ngin

eering

com

The Bug

Part 4

The Exploit

zero

daye

ngin

eering

com

prl_fs

zero

daye

ngin

eering

com

Prl_fs guest ltgt hypervisor

zero

daye

ngin

eering

com

SF protocol

zero

daye

ngin

eering

com

Reaching the bug

zero

daye

ngin

eering

com

Not so easyhellip

zero

daye

ngin

eering

com

prl_pwn kernel module

zero

daye

ngin

eering

com

prl_pwn kernel module (imports)

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

prl_pwnpy

zero

daye

ngin

eering

com

Toolgate protocol primitives ndash user side

zero

daye

ngin

eering

com

Toolgate protocol primitives ndash hypervisor side

zero

daye

ngin

eering

com

Talking to the hypervisor

zero

daye

ngin

eering

com

Emulating the protocol

zero

daye

ngin

eering

com

Execute payload

zero

daye

ngin

eering

com

VMware shared folders (CVE-2007-1744) Directory traversal Implementation uses

MultiByteToWideChar() API Path sanitization is bypassed

by injecting a unicode lsquorsquo substring as ldquoc02ec02erdquo

CVE-2008-0923 directory traversal 2

Improperly patched CVE-2007-1744

Path sanitization is bypassed by injecting ldquo0xc20x2e0xc20x2erdquo

Literally the first case study slide in my training ldquoHypervisor Vulnerability Researchrdquo

zero

daye

ngin

eering

com

Thank youTwitter alisaesageEmail contactzerodayengineeringcom

Page 24: Advanced Exploitation of Simple Bugs

zero

daye

ngin

eering

com

Parsing SF hypercalls

zero

daye

ngin

eering

com

The Bug

Part 4

The Exploit

zero

daye

ngin

eering

com

prl_fs

zero

daye

ngin

eering

com

Prl_fs guest ltgt hypervisor

zero

daye

ngin

eering

com

SF protocol

zero

daye

ngin

eering

com

Reaching the bug

zero

daye

ngin

eering

com

Not so easyhellip

zero

daye

ngin

eering

com

prl_pwn kernel module

zero

daye

ngin

eering

com

prl_pwn kernel module (imports)

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

prl_pwnpy

zero

daye

ngin

eering

com

Toolgate protocol primitives ndash user side

zero

daye

ngin

eering

com

Toolgate protocol primitives ndash hypervisor side

zero

daye

ngin

eering

com

Talking to the hypervisor

zero

daye

ngin

eering

com

Emulating the protocol

zero

daye

ngin

eering

com

Execute payload

zero

daye

ngin

eering

com

VMware shared folders (CVE-2007-1744) Directory traversal Implementation uses

MultiByteToWideChar() API Path sanitization is bypassed

by injecting a unicode lsquorsquo substring as ldquoc02ec02erdquo

CVE-2008-0923 directory traversal 2

Improperly patched CVE-2007-1744

Path sanitization is bypassed by injecting ldquo0xc20x2e0xc20x2erdquo

Literally the first case study slide in my training ldquoHypervisor Vulnerability Researchrdquo

zero

daye

ngin

eering

com

Thank youTwitter alisaesageEmail contactzerodayengineeringcom

Page 25: Advanced Exploitation of Simple Bugs

zero

daye

ngin

eering

com

The Bug

Part 4

The Exploit

zero

daye

ngin

eering

com

prl_fs

zero

daye

ngin

eering

com

Prl_fs guest ltgt hypervisor

zero

daye

ngin

eering

com

SF protocol

zero

daye

ngin

eering

com

Reaching the bug

zero

daye

ngin

eering

com

Not so easyhellip

zero

daye

ngin

eering

com

prl_pwn kernel module

zero

daye

ngin

eering

com

prl_pwn kernel module (imports)

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

prl_pwnpy

zero

daye

ngin

eering

com

Toolgate protocol primitives ndash user side

zero

daye

ngin

eering

com

Toolgate protocol primitives ndash hypervisor side

zero

daye

ngin

eering

com

Talking to the hypervisor

zero

daye

ngin

eering

com

Emulating the protocol

zero

daye

ngin

eering

com

Execute payload

zero

daye

ngin

eering

com

VMware shared folders (CVE-2007-1744) Directory traversal Implementation uses

MultiByteToWideChar() API Path sanitization is bypassed

by injecting a unicode lsquorsquo substring as ldquoc02ec02erdquo

CVE-2008-0923 directory traversal 2

Improperly patched CVE-2007-1744

Path sanitization is bypassed by injecting ldquo0xc20x2e0xc20x2erdquo

Literally the first case study slide in my training ldquoHypervisor Vulnerability Researchrdquo

zero

daye

ngin

eering

com

Thank youTwitter alisaesageEmail contactzerodayengineeringcom

Page 26: Advanced Exploitation of Simple Bugs

Part 4

The Exploit

zero

daye

ngin

eering

com

prl_fs

zero

daye

ngin

eering

com

Prl_fs guest ltgt hypervisor

zero

daye

ngin

eering

com

SF protocol

zero

daye

ngin

eering

com

Reaching the bug

zero

daye

ngin

eering

com

Not so easyhellip

zero

daye

ngin

eering

com

prl_pwn kernel module

zero

daye

ngin

eering

com

prl_pwn kernel module (imports)

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

prl_pwnpy

zero

daye

ngin

eering

com

Toolgate protocol primitives ndash user side

zero

daye

ngin

eering

com

Toolgate protocol primitives ndash hypervisor side

zero

daye

ngin

eering

com

Talking to the hypervisor

zero

daye

ngin

eering

com

Emulating the protocol

zero

daye

ngin

eering

com

Execute payload

zero

daye

ngin

eering

com

VMware shared folders (CVE-2007-1744) Directory traversal Implementation uses

MultiByteToWideChar() API Path sanitization is bypassed

by injecting a unicode lsquorsquo substring as ldquoc02ec02erdquo

CVE-2008-0923 directory traversal 2

Improperly patched CVE-2007-1744

Path sanitization is bypassed by injecting ldquo0xc20x2e0xc20x2erdquo

Literally the first case study slide in my training ldquoHypervisor Vulnerability Researchrdquo

zero

daye

ngin

eering

com

Thank youTwitter alisaesageEmail contactzerodayengineeringcom

Page 27: Advanced Exploitation of Simple Bugs

zero

daye

ngin

eering

com

prl_fs

zero

daye

ngin

eering

com

Prl_fs guest ltgt hypervisor

zero

daye

ngin

eering

com

SF protocol

zero

daye

ngin

eering

com

Reaching the bug

zero

daye

ngin

eering

com

Not so easyhellip

zero

daye

ngin

eering

com

prl_pwn kernel module

zero

daye

ngin

eering

com

prl_pwn kernel module (imports)

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

prl_pwnpy

zero

daye

ngin

eering

com

Toolgate protocol primitives ndash user side

zero

daye

ngin

eering

com

Toolgate protocol primitives ndash hypervisor side

zero

daye

ngin

eering

com

Talking to the hypervisor

zero

daye

ngin

eering

com

Emulating the protocol

zero

daye

ngin

eering

com

Execute payload

zero

daye

ngin

eering

com

VMware shared folders (CVE-2007-1744) Directory traversal Implementation uses

MultiByteToWideChar() API Path sanitization is bypassed

by injecting a unicode lsquorsquo substring as ldquoc02ec02erdquo

CVE-2008-0923 directory traversal 2

Improperly patched CVE-2007-1744

Path sanitization is bypassed by injecting ldquo0xc20x2e0xc20x2erdquo

Literally the first case study slide in my training ldquoHypervisor Vulnerability Researchrdquo

zero

daye

ngin

eering

com

Thank youTwitter alisaesageEmail contactzerodayengineeringcom

Page 28: Advanced Exploitation of Simple Bugs

zero

daye

ngin

eering

com

Prl_fs guest ltgt hypervisor

zero

daye

ngin

eering

com

SF protocol

zero

daye

ngin

eering

com

Reaching the bug

zero

daye

ngin

eering

com

Not so easyhellip

zero

daye

ngin

eering

com

prl_pwn kernel module

zero

daye

ngin

eering

com

prl_pwn kernel module (imports)

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

prl_pwnpy

zero

daye

ngin

eering

com

Toolgate protocol primitives ndash user side

zero

daye

ngin

eering

com

Toolgate protocol primitives ndash hypervisor side

zero

daye

ngin

eering

com

Talking to the hypervisor

zero

daye

ngin

eering

com

Emulating the protocol

zero

daye

ngin

eering

com

Execute payload

zero

daye

ngin

eering

com

VMware shared folders (CVE-2007-1744) Directory traversal Implementation uses

MultiByteToWideChar() API Path sanitization is bypassed

by injecting a unicode lsquorsquo substring as ldquoc02ec02erdquo

CVE-2008-0923 directory traversal 2

Improperly patched CVE-2007-1744

Path sanitization is bypassed by injecting ldquo0xc20x2e0xc20x2erdquo

Literally the first case study slide in my training ldquoHypervisor Vulnerability Researchrdquo

zero

daye

ngin

eering

com

Thank youTwitter alisaesageEmail contactzerodayengineeringcom

Page 29: Advanced Exploitation of Simple Bugs

zero

daye

ngin

eering

com

SF protocol

zero

daye

ngin

eering

com

Reaching the bug

zero

daye

ngin

eering

com

Not so easyhellip

zero

daye

ngin

eering

com

prl_pwn kernel module

zero

daye

ngin

eering

com

prl_pwn kernel module (imports)

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

prl_pwnpy

zero

daye

ngin

eering

com

Toolgate protocol primitives ndash user side

zero

daye

ngin

eering

com

Toolgate protocol primitives ndash hypervisor side

zero

daye

ngin

eering

com

Talking to the hypervisor

zero

daye

ngin

eering

com

Emulating the protocol

zero

daye

ngin

eering

com

Execute payload

zero

daye

ngin

eering

com

VMware shared folders (CVE-2007-1744) Directory traversal Implementation uses

MultiByteToWideChar() API Path sanitization is bypassed

by injecting a unicode lsquorsquo substring as ldquoc02ec02erdquo

CVE-2008-0923 directory traversal 2

Improperly patched CVE-2007-1744

Path sanitization is bypassed by injecting ldquo0xc20x2e0xc20x2erdquo

Literally the first case study slide in my training ldquoHypervisor Vulnerability Researchrdquo

zero

daye

ngin

eering

com

Thank youTwitter alisaesageEmail contactzerodayengineeringcom

Page 30: Advanced Exploitation of Simple Bugs

zero

daye

ngin

eering

com

Reaching the bug

zero

daye

ngin

eering

com

Not so easyhellip

zero

daye

ngin

eering

com

prl_pwn kernel module

zero

daye

ngin

eering

com

prl_pwn kernel module (imports)

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

prl_pwnpy

zero

daye

ngin

eering

com

Toolgate protocol primitives ndash user side

zero

daye

ngin

eering

com

Toolgate protocol primitives ndash hypervisor side

zero

daye

ngin

eering

com

Talking to the hypervisor

zero

daye

ngin

eering

com

Emulating the protocol

zero

daye

ngin

eering

com

Execute payload

zero

daye

ngin

eering

com

VMware shared folders (CVE-2007-1744) Directory traversal Implementation uses

MultiByteToWideChar() API Path sanitization is bypassed

by injecting a unicode lsquorsquo substring as ldquoc02ec02erdquo

CVE-2008-0923 directory traversal 2

Improperly patched CVE-2007-1744

Path sanitization is bypassed by injecting ldquo0xc20x2e0xc20x2erdquo

Literally the first case study slide in my training ldquoHypervisor Vulnerability Researchrdquo

zero

daye

ngin

eering

com

Thank youTwitter alisaesageEmail contactzerodayengineeringcom

Page 31: Advanced Exploitation of Simple Bugs

zero

daye

ngin

eering

com

Not so easyhellip

zero

daye

ngin

eering

com

prl_pwn kernel module

zero

daye

ngin

eering

com

prl_pwn kernel module (imports)

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

prl_pwnpy

zero

daye

ngin

eering

com

Toolgate protocol primitives ndash user side

zero

daye

ngin

eering

com

Toolgate protocol primitives ndash hypervisor side

zero

daye

ngin

eering

com

Talking to the hypervisor

zero

daye

ngin

eering

com

Emulating the protocol

zero

daye

ngin

eering

com

Execute payload

zero

daye

ngin

eering

com

VMware shared folders (CVE-2007-1744) Directory traversal Implementation uses

MultiByteToWideChar() API Path sanitization is bypassed

by injecting a unicode lsquorsquo substring as ldquoc02ec02erdquo

CVE-2008-0923 directory traversal 2

Improperly patched CVE-2007-1744

Path sanitization is bypassed by injecting ldquo0xc20x2e0xc20x2erdquo

Literally the first case study slide in my training ldquoHypervisor Vulnerability Researchrdquo

zero

daye

ngin

eering

com

Thank youTwitter alisaesageEmail contactzerodayengineeringcom

Page 32: Advanced Exploitation of Simple Bugs

zero

daye

ngin

eering

com

prl_pwn kernel module

zero

daye

ngin

eering

com

prl_pwn kernel module (imports)

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

prl_pwnpy

zero

daye

ngin

eering

com

Toolgate protocol primitives ndash user side

zero

daye

ngin

eering

com

Toolgate protocol primitives ndash hypervisor side

zero

daye

ngin

eering

com

Talking to the hypervisor

zero

daye

ngin

eering

com

Emulating the protocol

zero

daye

ngin

eering

com

Execute payload

zero

daye

ngin

eering

com

VMware shared folders (CVE-2007-1744) Directory traversal Implementation uses

MultiByteToWideChar() API Path sanitization is bypassed

by injecting a unicode lsquorsquo substring as ldquoc02ec02erdquo

CVE-2008-0923 directory traversal 2

Improperly patched CVE-2007-1744

Path sanitization is bypassed by injecting ldquo0xc20x2e0xc20x2erdquo

Literally the first case study slide in my training ldquoHypervisor Vulnerability Researchrdquo

zero

daye

ngin

eering

com

Thank youTwitter alisaesageEmail contactzerodayengineeringcom

Page 33: Advanced Exploitation of Simple Bugs

zero

daye

ngin

eering

com

prl_pwn kernel module (imports)

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

prl_pwnpy

zero

daye

ngin

eering

com

Toolgate protocol primitives ndash user side

zero

daye

ngin

eering

com

Toolgate protocol primitives ndash hypervisor side

zero

daye

ngin

eering

com

Talking to the hypervisor

zero

daye

ngin

eering

com

Emulating the protocol

zero

daye

ngin

eering

com

Execute payload

zero

daye

ngin

eering

com

VMware shared folders (CVE-2007-1744) Directory traversal Implementation uses

MultiByteToWideChar() API Path sanitization is bypassed

by injecting a unicode lsquorsquo substring as ldquoc02ec02erdquo

CVE-2008-0923 directory traversal 2

Improperly patched CVE-2007-1744

Path sanitization is bypassed by injecting ldquo0xc20x2e0xc20x2erdquo

Literally the first case study slide in my training ldquoHypervisor Vulnerability Researchrdquo

zero

daye

ngin

eering

com

Thank youTwitter alisaesageEmail contactzerodayengineeringcom

Page 34: Advanced Exploitation of Simple Bugs

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

prl_pwnpy

zero

daye

ngin

eering

com

Toolgate protocol primitives ndash user side

zero

daye

ngin

eering

com

Toolgate protocol primitives ndash hypervisor side

zero

daye

ngin

eering

com

Talking to the hypervisor

zero

daye

ngin

eering

com

Emulating the protocol

zero

daye

ngin

eering

com

Execute payload

zero

daye

ngin

eering

com

VMware shared folders (CVE-2007-1744) Directory traversal Implementation uses

MultiByteToWideChar() API Path sanitization is bypassed

by injecting a unicode lsquorsquo substring as ldquoc02ec02erdquo

CVE-2008-0923 directory traversal 2

Improperly patched CVE-2007-1744

Path sanitization is bypassed by injecting ldquo0xc20x2e0xc20x2erdquo

Literally the first case study slide in my training ldquoHypervisor Vulnerability Researchrdquo

zero

daye

ngin

eering

com

Thank youTwitter alisaesageEmail contactzerodayengineeringcom

Page 35: Advanced Exploitation of Simple Bugs

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

prl_pwnpy

zero

daye

ngin

eering

com

Toolgate protocol primitives ndash user side

zero

daye

ngin

eering

com

Toolgate protocol primitives ndash hypervisor side

zero

daye

ngin

eering

com

Talking to the hypervisor

zero

daye

ngin

eering

com

Emulating the protocol

zero

daye

ngin

eering

com

Execute payload

zero

daye

ngin

eering

com

VMware shared folders (CVE-2007-1744) Directory traversal Implementation uses

MultiByteToWideChar() API Path sanitization is bypassed

by injecting a unicode lsquorsquo substring as ldquoc02ec02erdquo

CVE-2008-0923 directory traversal 2

Improperly patched CVE-2007-1744

Path sanitization is bypassed by injecting ldquo0xc20x2e0xc20x2erdquo

Literally the first case study slide in my training ldquoHypervisor Vulnerability Researchrdquo

zero

daye

ngin

eering

com

Thank youTwitter alisaesageEmail contactzerodayengineeringcom

Page 36: Advanced Exploitation of Simple Bugs

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

prl_pwnpy

zero

daye

ngin

eering

com

Toolgate protocol primitives ndash user side

zero

daye

ngin

eering

com

Toolgate protocol primitives ndash hypervisor side

zero

daye

ngin

eering

com

Talking to the hypervisor

zero

daye

ngin

eering

com

Emulating the protocol

zero

daye

ngin

eering

com

Execute payload

zero

daye

ngin

eering

com

VMware shared folders (CVE-2007-1744) Directory traversal Implementation uses

MultiByteToWideChar() API Path sanitization is bypassed

by injecting a unicode lsquorsquo substring as ldquoc02ec02erdquo

CVE-2008-0923 directory traversal 2

Improperly patched CVE-2007-1744

Path sanitization is bypassed by injecting ldquo0xc20x2e0xc20x2erdquo

Literally the first case study slide in my training ldquoHypervisor Vulnerability Researchrdquo

zero

daye

ngin

eering

com

Thank youTwitter alisaesageEmail contactzerodayengineeringcom

Page 37: Advanced Exploitation of Simple Bugs

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

prl_pwnpy

zero

daye

ngin

eering

com

Toolgate protocol primitives ndash user side

zero

daye

ngin

eering

com

Toolgate protocol primitives ndash hypervisor side

zero

daye

ngin

eering

com

Talking to the hypervisor

zero

daye

ngin

eering

com

Emulating the protocol

zero

daye

ngin

eering

com

Execute payload

zero

daye

ngin

eering

com

VMware shared folders (CVE-2007-1744) Directory traversal Implementation uses

MultiByteToWideChar() API Path sanitization is bypassed

by injecting a unicode lsquorsquo substring as ldquoc02ec02erdquo

CVE-2008-0923 directory traversal 2

Improperly patched CVE-2007-1744

Path sanitization is bypassed by injecting ldquo0xc20x2e0xc20x2erdquo

Literally the first case study slide in my training ldquoHypervisor Vulnerability Researchrdquo

zero

daye

ngin

eering

com

Thank youTwitter alisaesageEmail contactzerodayengineeringcom

Page 38: Advanced Exploitation of Simple Bugs

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

prl_pwnpy

zero

daye

ngin

eering

com

Toolgate protocol primitives ndash user side

zero

daye

ngin

eering

com

Toolgate protocol primitives ndash hypervisor side

zero

daye

ngin

eering

com

Talking to the hypervisor

zero

daye

ngin

eering

com

Emulating the protocol

zero

daye

ngin

eering

com

Execute payload

zero

daye

ngin

eering

com

VMware shared folders (CVE-2007-1744) Directory traversal Implementation uses

MultiByteToWideChar() API Path sanitization is bypassed

by injecting a unicode lsquorsquo substring as ldquoc02ec02erdquo

CVE-2008-0923 directory traversal 2

Improperly patched CVE-2007-1744

Path sanitization is bypassed by injecting ldquo0xc20x2e0xc20x2erdquo

Literally the first case study slide in my training ldquoHypervisor Vulnerability Researchrdquo

zero

daye

ngin

eering

com

Thank youTwitter alisaesageEmail contactzerodayengineeringcom

Page 39: Advanced Exploitation of Simple Bugs

zero

daye

ngin

eering

com

Reverse-engineering the protocol

zero

daye

ngin

eering

com

prl_pwnpy

zero

daye

ngin

eering

com

Toolgate protocol primitives ndash user side

zero

daye

ngin

eering

com

Toolgate protocol primitives ndash hypervisor side

zero

daye

ngin

eering

com

Talking to the hypervisor

zero

daye

ngin

eering

com

Emulating the protocol

zero

daye

ngin

eering

com

Execute payload

zero

daye

ngin

eering

com

VMware shared folders (CVE-2007-1744) Directory traversal Implementation uses

MultiByteToWideChar() API Path sanitization is bypassed

by injecting a unicode lsquorsquo substring as ldquoc02ec02erdquo

CVE-2008-0923 directory traversal 2

Improperly patched CVE-2007-1744

Path sanitization is bypassed by injecting ldquo0xc20x2e0xc20x2erdquo

Literally the first case study slide in my training ldquoHypervisor Vulnerability Researchrdquo

zero

daye

ngin

eering

com

Thank youTwitter alisaesageEmail contactzerodayengineeringcom

Page 40: Advanced Exploitation of Simple Bugs

zero

daye

ngin

eering

com

prl_pwnpy

zero

daye

ngin

eering

com

Toolgate protocol primitives ndash user side

zero

daye

ngin

eering

com

Toolgate protocol primitives ndash hypervisor side

zero

daye

ngin

eering

com

Talking to the hypervisor

zero

daye

ngin

eering

com

Emulating the protocol

zero

daye

ngin

eering

com

Execute payload

zero

daye

ngin

eering

com

VMware shared folders (CVE-2007-1744) Directory traversal Implementation uses

MultiByteToWideChar() API Path sanitization is bypassed

by injecting a unicode lsquorsquo substring as ldquoc02ec02erdquo

CVE-2008-0923 directory traversal 2

Improperly patched CVE-2007-1744

Path sanitization is bypassed by injecting ldquo0xc20x2e0xc20x2erdquo

Literally the first case study slide in my training ldquoHypervisor Vulnerability Researchrdquo

zero

daye

ngin

eering

com

Thank youTwitter alisaesageEmail contactzerodayengineeringcom

Page 41: Advanced Exploitation of Simple Bugs

zero

daye

ngin

eering

com

Toolgate protocol primitives ndash user side

zero

daye

ngin

eering

com

Toolgate protocol primitives ndash hypervisor side

zero

daye

ngin

eering

com

Talking to the hypervisor

zero

daye

ngin

eering

com

Emulating the protocol

zero

daye

ngin

eering

com

Execute payload

zero

daye

ngin

eering

com

VMware shared folders (CVE-2007-1744) Directory traversal Implementation uses

MultiByteToWideChar() API Path sanitization is bypassed

by injecting a unicode lsquorsquo substring as ldquoc02ec02erdquo

CVE-2008-0923 directory traversal 2

Improperly patched CVE-2007-1744

Path sanitization is bypassed by injecting ldquo0xc20x2e0xc20x2erdquo

Literally the first case study slide in my training ldquoHypervisor Vulnerability Researchrdquo

zero

daye

ngin

eering

com

Thank youTwitter alisaesageEmail contactzerodayengineeringcom

Page 42: Advanced Exploitation of Simple Bugs

zero

daye

ngin

eering

com

Toolgate protocol primitives ndash hypervisor side

zero

daye

ngin

eering

com

Talking to the hypervisor

zero

daye

ngin

eering

com

Emulating the protocol

zero

daye

ngin

eering

com

Execute payload

zero

daye

ngin

eering

com

VMware shared folders (CVE-2007-1744) Directory traversal Implementation uses

MultiByteToWideChar() API Path sanitization is bypassed

by injecting a unicode lsquorsquo substring as ldquoc02ec02erdquo

CVE-2008-0923 directory traversal 2

Improperly patched CVE-2007-1744

Path sanitization is bypassed by injecting ldquo0xc20x2e0xc20x2erdquo

Literally the first case study slide in my training ldquoHypervisor Vulnerability Researchrdquo

zero

daye

ngin

eering

com

Thank youTwitter alisaesageEmail contactzerodayengineeringcom

Page 43: Advanced Exploitation of Simple Bugs

zero

daye

ngin

eering

com

Talking to the hypervisor

zero

daye

ngin

eering

com

Emulating the protocol

zero

daye

ngin

eering

com

Execute payload

zero

daye

ngin

eering

com

VMware shared folders (CVE-2007-1744) Directory traversal Implementation uses

MultiByteToWideChar() API Path sanitization is bypassed

by injecting a unicode lsquorsquo substring as ldquoc02ec02erdquo

CVE-2008-0923 directory traversal 2

Improperly patched CVE-2007-1744

Path sanitization is bypassed by injecting ldquo0xc20x2e0xc20x2erdquo

Literally the first case study slide in my training ldquoHypervisor Vulnerability Researchrdquo

zero

daye

ngin

eering

com

Thank youTwitter alisaesageEmail contactzerodayengineeringcom

Page 44: Advanced Exploitation of Simple Bugs

zero

daye

ngin

eering

com

Emulating the protocol

zero

daye

ngin

eering

com

Execute payload

zero

daye

ngin

eering

com

VMware shared folders (CVE-2007-1744) Directory traversal Implementation uses

MultiByteToWideChar() API Path sanitization is bypassed

by injecting a unicode lsquorsquo substring as ldquoc02ec02erdquo

CVE-2008-0923 directory traversal 2

Improperly patched CVE-2007-1744

Path sanitization is bypassed by injecting ldquo0xc20x2e0xc20x2erdquo

Literally the first case study slide in my training ldquoHypervisor Vulnerability Researchrdquo

zero

daye

ngin

eering

com

Thank youTwitter alisaesageEmail contactzerodayengineeringcom

Page 45: Advanced Exploitation of Simple Bugs

zero

daye

ngin

eering

com

Execute payload

zero

daye

ngin

eering

com

VMware shared folders (CVE-2007-1744) Directory traversal Implementation uses

MultiByteToWideChar() API Path sanitization is bypassed

by injecting a unicode lsquorsquo substring as ldquoc02ec02erdquo

CVE-2008-0923 directory traversal 2

Improperly patched CVE-2007-1744

Path sanitization is bypassed by injecting ldquo0xc20x2e0xc20x2erdquo

Literally the first case study slide in my training ldquoHypervisor Vulnerability Researchrdquo

zero

daye

ngin

eering

com

Thank youTwitter alisaesageEmail contactzerodayengineeringcom

Page 46: Advanced Exploitation of Simple Bugs

zero

daye

ngin

eering

com

VMware shared folders (CVE-2007-1744) Directory traversal Implementation uses

MultiByteToWideChar() API Path sanitization is bypassed

by injecting a unicode lsquorsquo substring as ldquoc02ec02erdquo

CVE-2008-0923 directory traversal 2

Improperly patched CVE-2007-1744

Path sanitization is bypassed by injecting ldquo0xc20x2e0xc20x2erdquo

Literally the first case study slide in my training ldquoHypervisor Vulnerability Researchrdquo

zero

daye

ngin

eering

com

Thank youTwitter alisaesageEmail contactzerodayengineeringcom

Page 47: Advanced Exploitation of Simple Bugs

zero

daye

ngin

eering

com

Thank youTwitter alisaesageEmail contactzerodayengineeringcom