Ramooflax das pre-boot u ¨bervisor

St´ephane Duverger EADS Innovation Works Suresnes, FRANCE

SSTIC June 2011

Introduction

Concept

Hardware virtualization

Ramooflax internals

Remote client

Conclusion

Introduction Concept Specifications Architecture Hardware virtualization Overview Limitations Ramooflax internals Execution flow Filtering Emulation Communication Interaction Remote client Conclusion

s.duverger :: ramooflax :: sstic 2011

2/47

Introduction

Concept

Hardware virtualization

Ramooflax internals

Remote client

Conclusion

Introduction Concept Specifications Architecture Hardware virtualization Overview Limitations Ramooflax internals Execution flow Filtering Emulation Communication Interaction Remote client Conclusion

s.duverger :: ramooflax :: sstic 2011

3/47

Introduction

Concept

Hardware virtualization

Ramooflax internals

Remote client

Conclusion

We wanted a tool . . . • to have control over complex systems (bios, kernel, . . . ) • running on a physical machine (x86 32 et 64 bits) • without any software dependencies

s.duverger :: ramooflax :: sstic 2011

4/47

Introduction

Concept

Hardware virtualization

Ramooflax internals

Remote client

Conclusion

We wanted a tool . . . • to have control over complex systems (bios, kernel, . . . ) • running on a physical machine (x86 32 et 64 bits) • without any software dependencies

The idea • a hypervisor with a dedicated VM • remotely controlled • type 1 (bare metal) • simple isolation • control visible hardware • software indepedenza ! • require startup before the VM

s.duverger :: ramooflax :: sstic 2011

4/47

Introduction

Concept

Hardware virtualization

Ramooflax internals

Remote client

Conclusion

Overview of available hypervisors

Common solutions • VirtualBox, KVM: misfit, type 2 (hosted) • Xen: too complex to adapt/deploy

s.duverger :: ramooflax :: sstic 2011

5/47

Introduction

Concept

Hardware virtualization

Ramooflax internals

Remote client

Conclusion

Overview of available hypervisors

Common solutions • VirtualBox, KVM: misfit, type 2 (hosted) • Xen: too complex to adapt/deploy

Minimalistic solutions • bluepill, vitriol, virtdbg, hyperdbg . . . • too intrusive, in vivo virtualization • OS dependent

s.duverger :: ramooflax :: sstic 2011

5/47

Introduction

Concept

Hardware virtualization

Ramooflax internals

Remote client

Conclusion

Overview of available hypervisors

Common solutions • VirtualBox, KVM: misfit, type 2 (hosted) • Xen: too complex to adapt/deploy

Minimalistic solutions • bluepill, vitriol, virtdbg, hyperdbg . . . • too intrusive, in vivo virtualization • OS dependent

restart from scratch !

s.duverger :: ramooflax :: sstic 2011

5/47

Introduction

Concept

Hardware virtualization

Ramooflax internals

Remote client

Conclusion

Introduction Concept Specifications Architecture Hardware virtualization Overview Limitations Ramooflax internals Execution flow Filtering Emulation Communication Interaction Remote client Conclusion

s.duverger :: ramooflax :: sstic 2011

6/47

Introduction

Concept

Hardware virtualization

Ramooflax internals

Remote client

Conclusion

A standalone minimalistic hypervisor

Desired specifications • simple, lightweight, fast and reliable • small impact on native performances • based on Intel-VT (vmx) and AMD-V (svm) • take benefit of existing stuff (BIOS) • keep simpledesign/mechanisms into complex software pieces (VMM) • delegate operational complexity to userland layer remotely controlled (client)

s.duverger :: ramooflax :: sstic 2011

7/47

Introduction

Concept

Hardware virtualization

Ramooflax internals

Remote client

Conclusion

A standalone minimalistic hypervisor

Desired specifications • simple, lightweight, fast and reliable • small impact on native performances • based on Intel-VT (vmx) and AMD-V (svm) • take benefit of existing stuff (BIOS) • keep simpledesign/mechanisms into complex software pieces (VMM) • delegate operational complexity to userland layer remotely controlled (client)

Targeting cutting edge CPUs • depend upon recent hardware virtualization extensions • especially Intel EPT and AMD RVI • code simpler and faster • reduced attack surface

s.duverger :: ramooflax :: sstic 2011

7/47

Introduction

Concept

Hardware virtualization

Ramooflax internals

Remote client

Conclusion

Introduction Concept Specifications Architecture Hardware virtualization Overview Limitations Ramooflax internals Execution flow Filtering Emulation Communication Interaction Remote client Conclusion

s.duverger :: ramooflax :: sstic 2011

8/47

Introduction

Concept

Hardware virtualization

Ramooflax internals

Remote client

Conclusion

Classical boot sequence

BIOS

USB Key (grub)

Loader

Setup

VMM BIOS HDD boot sector VM (native OS)

s.duverger :: ramooflax :: sstic 2011

9/47

Introduction

Concept

Hardware virtualization

Ramooflax internals

Remote client

Conclusion

Ramooflax boot sequence

BIOS

USB Key (grub)

Loader

Setup

VMM BIOS HDD boot sector VM (native OS)

s.duverger :: ramooflax :: sstic 2011

10/47

Introduction

Concept

Hardware virtualization

Ramooflax internals

Remote client

Conclusion

Ramooflax boot sequence

BIOS

USB Key (grub)

Loader

Setup

VMM BIOS HDD boot sector VM (native OS)

s.duverger :: ramooflax :: sstic 2011

11/47

Introduction

Concept

Hardware virtualization

Ramooflax internals

Remote client

Conclusion

Ramooflax boot sequence

BIOS

USB Key (grub)

Loader

Setup

VMM BIOS HDD boot sector VM (native OS)

s.duverger :: ramooflax :: sstic 2011

12/47

Introduction

Concept

Hardware virtualization

Ramooflax internals

Remote client

Conclusion

Ramooflax building blocks BIOS

USB Key (grub)

Loader

Setup

VMM BIOS HDD boot sector VM (native OS)

Loader • boots in 32 bits protected mode (multiboot standard) • enters longmode (64 bits) then load Setup

s.duverger :: ramooflax :: sstic 2011

13/47

Introduction

Concept

Hardware virtualization

Ramooflax internals

Remote client

Conclusion

Ramooflax building blocks BIOS

USB Key (grub)

Loader

Setup

VMM BIOS HDD boot sector VM (native OS)

Setup • initialize virtualization structures, drivers, memory • retrieve RAM size and compute VMM needed space • relocate vmm to size(RAM) − size(vmm) • reduce RAM size (craft special VM SMAPs) • install int 0x19 into conventional memory • invoke vmm s.duverger :: ramooflax :: sstic 2011

14/47

Introduction

Concept

Hardware virtualization

Ramooflax internals

Remote client

Conclusion

Ramooflax building blocks BIOS

USB Key (grub)

Loader

Setup

VMM BIOS HDD boot sector VM (native OS)

VMM r´esidant • PIE binary (variable RAM size) • start its dedicated VM in real mode on int 0x19 • tell the BIOS (virtualized) to start native OS

s.duverger :: ramooflax :: sstic 2011

15/47

Introduction

Concept

Hardware virtualization

Ramooflax internals

Remote client

Conclusion

Introduction Concept Specifications Architecture Hardware virtualization Overview Limitations Ramooflax internals Execution flow Filtering Emulation Communication Interaction Remote client Conclusion

s.duverger :: ramooflax :: sstic 2011

16/47

Introduction

Concept

Hardware virtualization

Ramooflax internals

Remote client

Conclusion

Common points between Intel-VT (vmx) and AMD-V (svm) Interest • simplify hypervisor development • reduced instruction set (∼ 10) • vm-entry/vm-exit paradigm • vm-entry load VM and save VMM • vm-exit load VMM and save VM

Relies upon data structures configuration • AMD VMCB, Intel VMCS (asynchronous vmread, vmwrite) • system registers setup (cr, dr, gdtr, idtr, ...) • events injection (interrupts, exceptions) • interception bitmaps setup • events • sensitive instructions • I/O, MSRs . . . accesses

s.duverger :: ramooflax :: sstic 2011

17/47

Introduction

Concept

Hardware virtualization

Ramooflax internals

Remote client

Conclusion

Introduction Concept Specifications Architecture Hardware virtualization Overview Limitations Ramooflax internals Execution flow Filtering Emulation Communication Interaction Remote client Conclusion

s.duverger :: ramooflax :: sstic 2011

18/47

Introduction

Concept

Hardware virtualization

Ramooflax internals

Remote client

Conclusion

Many limitations

• Compatibility fail between Intel/AMD • different features among CPU models • hard to obtain CPU skills before buying it !

s.duverger :: ramooflax :: sstic 2011

http://cpuid.intel.com ?

19/47

Introduction

Concept

Hardware virtualization

Ramooflax internals

Remote client

Conclusion

Many limitations

• Compatibility fail between Intel/AMD • different features among CPU models • hard to obtain CPU skills before buying it !

http://cpuid.intel.com ?

• lack of information after vm-exit • need to embed an emulation/disassembly engine • hardware interrupts interception is on/off . . . no vector granularity • Intel does not provide software interrupts interception • AMD keeps hardware interrupts pending • SMIs headache (CPU bugs, BIOS bugs, SMM virtualization needed, . . . )

Real mode management disaster under Intel painfull for real-life BIOS virtualization !

s.duverger :: ramooflax :: sstic 2011

19/47

Introduction

Concept

Hardware virtualization

Ramooflax internals

Remote client

Conclusion

BIOS virtualization BIOS and real mode • default CPU mode • 16 bits, 20 bits (1MB) memory addressing, no protection • massively used by the BIOS

Real mode virtualization the merovingian way • harware assisted virtualization exists since 80386: v8086 mode • real mode mechanisms emulation (interrupts, far call, . . . ) • redirect/intercept I/O, interrupts

s.duverger :: ramooflax :: sstic 2011

20/47

Introduction

Concept

Hardware virtualization

Ramooflax internals

Remote client

Conclusion

BIOS virtualization BIOS and real mode • default CPU mode • 16 bits, 20 bits (1MB) memory addressing, no protection • massively used by the BIOS

Real mode virtualization the merovingian way • harware assisted virtualization exists since 80386: v8086 mode • real mode mechanisms emulation (interrupts, far call, . . . ) • redirect/intercept I/O, interrupts

Real mode virtualization the vmx/svm way • AMD provides a new paged real mode (CR0.PE=0

s.duverger :: ramooflax :: sstic 2011

&& CR0.PG=1)

20/47

Introduction

Concept

Hardware virtualization

Ramooflax internals

Remote client

Conclusion

BIOS virtualization BIOS and real mode • default CPU mode • 16 bits, 20 bits (1MB) memory addressing, no protection • massively used by the BIOS

Real mode virtualization the merovingian way • harware assisted virtualization exists since 80386: v8086 mode • real mode mechanisms emulation (interrupts, far call, . . . ) • redirect/intercept I/O, interrupts

Real mode virtualization the vmx/svm way • AMD provides a new paged real mode (CR0.PE=0 • Intel forbids CR0.PG=0 and so CR0.PE=0 • recommand the use of v8086 mode • vm-entry while in v8086 is very restrictive • especially with regard to segmentation

s.duverger :: ramooflax :: sstic 2011

&& CR0.PG=1)

20/47

Introduction

Concept

Hardware virtualization

Ramooflax internals

Remote client

Conclusion

Segmentation reminder Segment registers • visible part (selector) • hidden part managed by the CPU (base, limit, attributs) • real mode: base = selector ∗ 16, limit = 64K • protected mode: segment descriptors CS.selector = 0x10

GDT

index=2,ti=0,rpl=0

Null

ljmp $0x10, $0x72b6

base,limit,attr

CPU internal eip = +

s.duverger :: ramooflax :: sstic 2011

CS.attr = ... CS.base = ... CS.limit = ...

21/47

Introduction

Concept

Hardware virtualization

Ramooflax internals

Remote client

Conclusion

BIOS virtualization Unreal mode (flat real, big real mode) • access more than 1MB of memory while in real mode • protected to real mode transition keeping ie base=0 and limit=4GB • used by the BIOS to access memory mapped devices, . . . seg000:F7284 seg000:F7287 seg000:F7288 seg000:F728A seg000:F728D seg000:F728F seg000:F7295 seg000:F7297 seg000:F729D seg000:F72A0 seg000:F72A2 seg000:F72A5 seg000:F72A7 seg000:F72AA seg000:F72AC seg000:F72B1 seg000:F72B6 seg000:F72B8 seg000:F72BA seg000:F72BD seg000:F72BF seg000:F72C2 seg000:F72C4 seg000:F72C7 seg000:F72C9 seg000:F72CE

s.duverger :: ramooflax :: sstic 2011

mov cli mov cmp jnz lgdt jmp lgdt mov or mov mov cmp jnz jmp jmp mov mov mov and mov mov cmp jnz jmp jmp

bx, 20h ax, cs ax, 0F000h short near ptr unk_7297 fword ptr cs:byte_8163 short near ptr unk_729D fword ptr cs:byte_8169 eax, cr0 al, 1 cr0, eax ax, cs ax, 0F000h short near ptr unk_72B1 far ptr 10h:72B6h far ptr 28h:72B6h ds, bx es, bx eax, cr0 al, 0FEh cr0, eax ax, cs ax, 10h short near ptr unk_72CE far ptr 0F000h:72D3h far ptr 0E000h:72D3h

(1)

(2)

(3) (4)

(5) (6)

22/47

Introduction

Concept

Hardware virtualization

Ramooflax internals

Remote client

Conclusion

BIOS virtualization Intel failure • vm-entry in v8086 mode checks1 base = selector ∗ 16 • can not virtualize unreal mode using v8086

1

Intel Volume 3B Section 23.3.1.2

s.duverger :: ramooflax :: sstic 2011

23/47

Introduction

Concept

Hardware virtualization

Ramooflax internals

Remote client

Conclusion

BIOS virtualization Intel failure • vm-entry in v8086 mode checks1 base = selector ∗ 16 • can not virtualize unreal mode using v8086

Without recent hardware virtualization extensions • real mode emulation while in protected mode • intercept segment registers accesses: far call/jump, mov/pop seg, iret • double fail: Intel does not provide segment registers interception • solution: force GDT and IDT limits to 0 and intercept raised #GP

1

Intel Volume 3B Section 23.3.1.2

s.duverger :: ramooflax :: sstic 2011

23/47

Introduction

Concept

Hardware virtualization

Ramooflax internals

Remote client

Conclusion

BIOS virtualization Intel failure • vm-entry in v8086 mode checks1 base = selector ∗ 16 • can not virtualize unreal mode using v8086

Without recent hardware virtualization extensions • real mode emulation while in protected mode • intercept segment registers accesses: far call/jump, mov/pop seg, iret • double fail: Intel does not provide segment registers interception • solution: force GDT and IDT limits to 0 and intercept raised #GP

With newer CPUs ... • Unrestricted Guest mode (allow

CR0.PE=0 && CR0.PG=0)

• need Intel EPT to protect over VMM memory

1

Intel Volume 3B Section 23.3.1.2

s.duverger :: ramooflax :: sstic 2011

23/47

Introduction

Concept

Hardware virtualization

Ramooflax internals

Remote client

Conclusion

Introduction Concept Specifications Architecture Hardware virtualization Overview Limitations Ramooflax internals Execution flow Filtering Emulation Communication Interaction Remote client Conclusion

s.duverger :: ramooflax :: sstic 2011

24/47

Introduction

Concept

Hardware virtualization

Ramooflax internals

Remote client

Conclusion

Execution flow vm-exit

vm-resume

vm svm vmexit handler()

svm vmexit pre hdl()

events

svm vmexit dispatcher()

instructions

int xx

svm vmexit post hdl()

nested #PF

cpuid

control sub-system

check access

excpt

i/o

s.duverger :: ramooflax :: sstic 2011

msr

cr

25/47

Introduction

Concept

Hardware virtualization

Ramooflax internals

Remote client

Conclusion

Introduction Concept Specifications Architecture Hardware virtualization Overview Limitations Ramooflax internals Execution flow Filtering Emulation Communication Interaction Remote client Conclusion

s.duverger :: ramooflax :: sstic 2011

26/47

Introduction

Concept

Hardware virtualization

Ramooflax internals

Remote client

Conclusion

System registers filtering

Control Registers • cr0 for mode transitions, cache consistency and memory mappings • cr3 for remote control (more on this later) • as a remote client feature

reading MSR and CPUID • native execution or backed VMCS/VMCB reading • postprocessing to hide specific features

writing MSR • emulate wrmsr if backed to VMCS/VMCB • else native execution

s.duverger :: ramooflax :: sstic 2011

27/47

Introduction

Concept

Hardware virtualization

Ramooflax internals

Remote client

Conclusion

Events filtering

Exceptions • fine grain interception of #DB and #BP mainly for control sub-system • filter #GP under Intel for specific software interrupts interception

Software interrupts • only in real mode • filter SMAPs accesses (int

0x15)

Hardware interrupts • not intercepted • . . . but you can do it

s.duverger :: ramooflax :: sstic 2011

28/47

Introduction

Concept

Hardware virtualization

Ramooflax internals

Remote client

Conclusion

Introduction Concept Specifications Architecture Hardware virtualization Overview Limitations Ramooflax internals Execution flow Filtering Emulation Communication Interaction Remote client Conclusion

s.duverger :: ramooflax :: sstic 2011

29/47

Introduction

Concept

Hardware virtualization

Ramooflax internals

Remote client

Conclusion

Emulation

Instructions • disassembly/emulation needed to properly handle vm-exit • Ramooflax embeds udis86 .... overkill • emulated instructions are simple • take care of execution context

Devices • partial emulation/interception of UART, PIC, KBD and PS2 System Controller • mainly to control reboot bits

s.duverger :: ramooflax :: sstic 2011

30/47

Introduction

Concept

Hardware virtualization

Ramooflax internals

Remote client

Conclusion

Introduction Concept Specifications Architecture Hardware virtualization Overview Limitations Ramooflax internals Execution flow Filtering Emulation Communication Interaction Remote client Conclusion

s.duverger :: ramooflax :: sstic 2011

31/47

Introduction

Concept

Hardware virtualization

Ramooflax internals

Remote client

Conclusion

VMM, VM, client interaction

VM (native OS)

VMM (Ramooflax)

hidden devices

emulated devices

visible devices

Remote

client

s.duverger :: ramooflax :: sstic 2011

32/47

Introduction

Concept

Hardware virtualization

Ramooflax internals

Remote client

Conclusion

Remote communication

UART • slow, unreliable • only used for debug purpose

EHCI Debug Port • USB 2.0 specification tells that a physical USB port can be used as a Debug Port • found in most of EHCI host controllers • reliable, standardized and fast • as simple as an UART to drive

Ramooflax side implementation • Debug Port driver • EHCI host controller remains under VM control

s.duverger :: ramooflax :: sstic 2011

33/47

Introduction

Concept

Hardware virtualization

Ramooflax internals

Remote client

Conclusion

Remote communication EHCI Debug Port: client side • USB specification: no direct data transfers between host controllers • Debug Device needed • buy a specific device (ie Net20DC) • take benefit of USB On-The-Go controllers (smartphones . . . )

s.duverger :: ramooflax :: sstic 2011

34/47

Introduction

Concept

Hardware virtualization

Ramooflax internals

Remote client

Conclusion

Remote communication EHCI Debug Port: client side • USB specification: no direct data transfers between host controllers • Debug Device needed • buy a specific device (ie Net20DC) • take benefit of USB On-The-Go controllers (smartphones . . . )

Debug Device emulation under Linux • Gadget API allows USB devices emulation (mass storage . . . ) • we have developed a Debug Device gadget exposing a serial interface (ttyGS0) vmm

client

ehci host debug port

python framework

ehci OTG

ethernet

socat /dev/ttyGS0 TCP-LISTEN:1234

development board s.duverger :: ramooflax :: sstic 2011

34/47

Introduction

Concept

Hardware virtualization

Ramooflax internals

Remote client

Conclusion

Introduction Concept Specifications Architecture Hardware virtualization Overview Limitations Ramooflax internals Execution flow Filtering Emulation Communication Interaction Remote client Conclusion

s.duverger :: ramooflax :: sstic 2011

35/47

Introduction

Concept

Hardware virtualization

Ramooflax internals

Remote client

Conclusion

Client interaction

Taking control • VMM waits for vm-exit • find the good trade off between client reactivity and VM performances • ensure that VMM can get control over VM on client demand • recently Intel introduced a vmx preemption timer, but not AMD

Via hardware interrupts ? • no irq raised for Debug Port • complexity, latency, . . .

Context switch • modern OS schedules processes • intercept writes to cr3

s.duverger :: ramooflax :: sstic 2011

36/47

Introduction

Concept

Hardware virtualization

Ramooflax internals

Remote client

Conclusion

Client interaction

GDB stub implementation • read/write general purpose registers • read/write memory • add/remove software and hardware breakpoints • single-stepping

Protocol limits • designed for userspace applications debugging • no ring 0 information (segmentation, paging, . . . ) • no virtual/physical memory distinction

s.duverger :: ramooflax :: sstic 2011

37/47

Introduction

Concept

Hardware virtualization

Ramooflax internals

Remote client

Conclusion

Client interaction

Ramooflax specific extensions • system registers access • cr0, cr2, cr3, cr4 • dr0-dr3, dr6, dr7, dbgctl • cs, ss, ds, es, fs, gs base address • gdtr, idtr, ldtr and tr

s.duverger :: ramooflax :: sstic 2011

38/47

Introduction

Concept

Hardware virtualization

Ramooflax internals

Remote client

Conclusion

Client interaction

Ramooflax specific extensions • system registers access • cr0, cr2, cr3, cr4 • dr0-dr3, dr6, dr7, dbgctl • cs, ss, ds, es, fs, gs base address • gdtr, idtr, ldtr and tr • memory access • now virtual/physical distinction • translation mechanism • fixed cr3 feature (force VMM to work with a specific cr3)

s.duverger :: ramooflax :: sstic 2011

38/47

Introduction

Concept

Hardware virtualization

Ramooflax internals

Remote client

Conclusion

Client interaction

Ramooflax specific extensions • system registers access • cr0, cr2, cr3, cr4 • dr0-dr3, dr6, dr7, dbgctl • cs, ss, ds, es, fs, gs base address • gdtr, idtr, ldtr and tr • memory access • now virtual/physical distinction • translation mechanism • fixed cr3 feature (force VMM to work with a specific cr3) • virtualization control • control registers intercept • exceptions intercept • ideally . . . full control over VMCS/VMCB

s.duverger :: ramooflax :: sstic 2011

38/47

Introduction

Concept

Hardware virtualization

Ramooflax internals

Remote client

Conclusion

Client interaction

Single-step management • based on TF and exceptions intercepts • many distinct modes under a VM • global (implemented) • kernel thread only • ring 3 process only (implemented) • ring 0/3 process only (follow system calls, . . . ) • no features related to the virtualized OS concepts (process termination) • stealth/consistency (pushf,popf,intN,iret intercept)

s.duverger :: ramooflax :: sstic 2011

39/47

Introduction

Concept

Hardware virtualization

Ramooflax internals

Remote client

Conclusion

Client interaction

Single-step management • based on TF and exceptions intercepts • many distinct modes under a VM • global (implemented) • kernel thread only • ring 3 process only (implemented) • ring 0/3 process only (follow system calls, . . . ) • no features related to the virtualized OS concepts (process termination) • stealth/consistency (pushf,popf,intN,iret intercept)

Special case: sysenter/sysexit • uninterceptable under AMD and Intel (!!!) • do not mask TF when entering ring 0 • need to implement a fault based mechanism (as Intel software interrupts)

s.duverger :: ramooflax :: sstic 2011

39/47

Introduction

Concept

Hardware virtualization

Ramooflax internals

Remote client

Conclusion

Introduction Concept Specifications Architecture Hardware virtualization Overview Limitations Ramooflax internals Execution flow Filtering Emulation Communication Interaction Remote client Conclusion

s.duverger :: ramooflax :: sstic 2011

40/47

Introduction

Concept

Hardware virtualization

Ramooflax internals

Remote client

Conclusion

A python interface to the hypervisor

Framework components • VM, high-level features • CPU, registers, exception filtering . . . • Breakpoints, soft/hard • GDB, a GDB client with Ramooflax extensions • Memory, control memory accesses • Event, vm-exit hooking mechanism to implement your own python handlers

s.duverger :: ramooflax :: sstic 2011

41/47

Introduction

Concept

Hardware virtualization

Ramooflax internals

Remote client

Conclusion

Framework components: VM

• run, stop, resume, singlestep, attach, detach vm = VM(CPUFamily.AMD, 32, "192.168.254.254:1234")

• interactive mode vm.run(dict(globals(), **locals()))

• script mode vm.attach() vm.stop()

# remote connection # stop it

# xxxx (breakpoints, filters, ...) vm.resume() vm.detach()

s.duverger :: ramooflax :: sstic 2011

# resume and wait for next vm-exit # disconnect, vm resumed

42/47

Introduction

Concept

Hardware virtualization

Ramooflax internals

Remote client

Conclusion

Framework components: CPU, Memory and Breakpoints

• breakpoints naming # data write breakpoint vm.cpu.breakpoints.add_data_w(vm.cpu.sr.tr+4, 4, filter, "esp0") >>> vm.cpu.breakpoints esp0 0xc1331f14 Write (4) kernel_f1 0xc0001234 eXecute (1)

• cr3 tracking feature # reading a virtual memory page vm.cpu.set_active_cr3(my_cr3) pg = vm.mem.vread(0x8048000, 4096)

s.duverger :: ramooflax :: sstic 2011

43/47

Introduction

Concept

Hardware virtualization

Ramooflax internals

Remote client

Conclusion

Framework components: Event

• GDB conditional breakpoints syntax is . . . hmm • allow the developer to execute a function after a vm-exit • split architecture/OS specific mechanisms • filter an exception, a write to cr3, a breakpoint, . . . def handle_excp(vm): if vm.cpu.gpr.eip == 0x1234: return True return False vm.cpu.filter_exception(CPUException.general_protection, handle_excp) while not vm.resume(): continue vm.interact()

s.duverger :: ramooflax :: sstic 2011

44/47

Introduction

Concept

Hardware virtualization

Ramooflax internals

Remote client

Conclusion

Introduction Concept Specifications Architecture Hardware virtualization Overview Limitations Ramooflax internals Execution flow Filtering Emulation Communication Interaction Remote client Conclusion

s.duverger :: ramooflax :: sstic 2011

45/47

Introduction

Concept

Hardware virtualization

Ramooflax internals

Remote client

Conclusion

Conclusion Support • AMD ready • successfully tested under • Windows XP/7 Pro 32 bits • Debian GNU/Linux 5.0 32 bits • simpler OS should run (DOS, OpenBSD, . . . )

s.duverger :: ramooflax :: sstic 2011

46/47

Introduction

Concept

Hardware virtualization

Ramooflax internals

Remote client

Conclusion

Conclusion Support • AMD ready • successfully tested under • Windows XP/7 Pro 32 bits • Debian GNU/Linux 5.0 32 bits • simpler OS should run (DOS, OpenBSD, . . . )

Limitations • Intel needs to be rewritten • no SMP, multi-cores • tricky to setup • initialize all Cores and enable virtualization • intercept Cores initialization done by the VM • circumvent via /numproc, maxcpus • 64 bits VM working . . . almost • not really tested • ioAPIC and SMP characterologicals

• no Nested Virtualization s.duverger :: ramooflax :: sstic 2011

46/47

Thank you ! https://github.com/sduverger/ramooflax

SSTIC 2011 slides - GitHub

Relies upon data structures configuration .... Unreal mode (fiat real, big real mode) .... USB specification: no direct data transfers between host controllers.

538KB Sizes 3 Downloads 273 Views

Recommend Documents

Slides - GitHub
Android is an open source and Linux-based Operating System for mobile devices. ○ Android application run on different devices powered by ... Page 10 ...

Slides - GitHub
A Brief Introduction. Basic dataset classes include: ... All of these must be composed of atomic types. 12 .... type(f.root.a_group.arthur_count[:]) list. >>> type(f.root.a_group.arthur_count) .... a word on a computer screen (3 seconds), then. 27 ..

Slides [PDF] - GitHub
[capture parallel data. write to register/shared memory]. [configurable bit ... driver. Callbacks and. APIs parallel_bus_interface driver. Callbacks and. APIs.

intro slides - GitHub
Jun 19, 2017 - Learn core skills for doing data analysis effectively, efficiently, and reproducibly. 1. Interacting with your computer on command line (BASH/shell).

malofiej title slides copy - GitHub
Page 23. A tool for making responsive · graphics with Adobe Illustrator. Page 24. Thanks, I hope you had fun! @archietse bit.ly/nytgraphics2015 ai2html.org.

Slides
int var1 = 5; //declares an integer with value 5 var1++;. //increments var1 printf(“%d”, var1); //prints out 6. Page 17. Be Careful!! 42 = int var;. Page 18. Types. Some types in C: int: 4 bytes goes from -231 -> 231 - 1 float: 4 bytes (7-digit p

Thursday, May 19, 2011 - GitHub
May 19, 2011 - ... actually do when we are doing our day-to-day jobs and what we think we should do. ... messages, lists, blocks. TDD - Red, Green, Refactor.

(Portugal), 19 – 30 Sep. 2011 - GitHub
Sep 30, 2011 - Field of view. 8 deg2. Reflectors. 12 x 25 m. ○. Beam spec: 1% error at HPBW rel. to main beam. - 3 -. 3GC-II Workshop, Albufeira (Portugal), ...

Quarterly Earnings Slides
Please see Facebook's Form 10-K for the year ended December 31, 2012 for definitions of user activity used to .... Advertising Revenue by User Geography.

slides
make it easier for other lenders and borrowers to find partners. These “liquidity provision services”to others receive no compensation in the equilibrium, so individual agents ignore them when calculating their equilibrium payoffs. The equilibriu

Slides-DominanceSolvability.pdf
R (6.50 ; 4.75) (10.00 ; 5.00). B. A. l r. L (9.75 ; 8.50) ( 9.75 ; 8.50). R (3.00 ; 8.50) (10.00 ; 10.00). Game 1 Game 2. This game clearly captures both key facets of ...

Download the slides - Portworx
In this workshop we will: ○ deploy a stateful app. ○ demonstrate HA by doing failover on the app. ○ snapshot a volume. ○ deploy a test workload against the ...

Slides
Key tool from potential theory : minimal thiness - the notion of a set in D being 'thin' at a Point of T. Recall: the Poisson Remel for TD Ös : f(z) = 1 - \ z (2 e D, well). 12 - w. D W. Definition. A set E cli) a called minimals thin at well if the

Prize Lecture slides
Dec 8, 2011 - Statistical Model for government surplus net-of interest st st = ∞. ∑ ... +R. −1 bt+1,t ≥ 0. Iterating backward bt = − t−1. ∑ j=0. Rj+1st+j−1 + Rtb0.

Slides
T. Xie and J. Pei: Data Mining for Software Engineering. 3. Introduction. • A large amount of data is produced in software development. – Data from software ...

slides-NatL.pdf
strangely enough, they are still aware of these models to different extents. An. interesting intertwining between inferential logic, lexical contents, common. sense ...

slides in pdf
Oct 3, 2007 - 2. Peter Dolog, ERP Course, ERP Development. ERP Implementation. Phases stay: • Planning. • Requirements analysis. • Design. • Detailed design. • Implementation. • Maintanance. Focus changes. • To fit the existing software

INSECTS (SLIDES).pdf
There was a problem previewing this document. Retrying... Download. Connect more apps... Try one of the apps below to open or edit this item. INSECTS ...

slides-trs-modal.pdf
There was a problem previewing this document. Retrying... Download. Connect more apps... Try one of the apps below to open or edit this item. slides-trs-modal.

Girua-Slides-Profuncionario-Alimentacao_Escolar-ConclDez2015 ...
ENTREGA DO MATERIAL DIDÁTICO PARA OS ALUNOS. Page 4 of 18. Girua-Slides-Profuncionario-Alimentacao_Escolar-ConclDez2015.compressed.pdf.

Access Lesson 6.1 slides here
You are looking for Google Earth files showing shipwrecks around Florida—only you have already seen the ones on. Floridamarine.org and The_Jacobs.org. Other than those websites, what virtual tours are out there? [ filetype:kmz shipwrecks OR “ship