80
Lecture 14 – Return-oriented programming Stephen Checkoway Oberlin College Based on slides by Bailey, Brumley, and Miller

Lecture 14 –Return-oriented programming...Lecture 14 –Return-oriented programming Stephen Checkoway Oberlin College Based on slides by Bailey, Brumley, and Miller ROP Overview

  • Upload
    others

  • View
    6

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Lecture 14 –Return-oriented programming...Lecture 14 –Return-oriented programming Stephen Checkoway Oberlin College Based on slides by Bailey, Brumley, and Miller ROP Overview

Lecture 14 – Return-oriented programming

Stephen CheckowayOberlin College

Based on slides by Bailey, Brumley, and Miller

Page 2: Lecture 14 –Return-oriented programming...Lecture 14 –Return-oriented programming Stephen Checkoway Oberlin College Based on slides by Bailey, Brumley, and Miller ROP Overview

ROP Overview

• Idea: We forge shellcode out of existing application logic gadgets

• Requirements: vulnerability + gadgets + some unrandomized code

• History:• No code randomized: Code injection• DEP enabled by default: ROP attacks using libc gadgets published 2007• ROP assemblers, compilers, shellcode generators• ASLR library load points: ROP attacks use .text segment gadgets• Today: all major OSes/compilers support position-independent executables

2

Page 3: Lecture 14 –Return-oriented programming...Lecture 14 –Return-oriented programming Stephen Checkoway Oberlin College Based on slides by Bailey, Brumley, and Miller ROP Overview

3Image by Dino Dai Zovi

Page 4: Lecture 14 –Return-oriented programming...Lecture 14 –Return-oriented programming Stephen Checkoway Oberlin College Based on slides by Bailey, Brumley, and Miller ROP Overview

ROP Programming

1. Disassemble code (library or program)2. Identify useful code sequences (usually ending in ret)3. Assemble the useful sequences into reusable gadgets*4. Assemble gadgets into desired shellcode

* Forming gadgets is mostly useful when constructing complicated return-oriented shellcode by hand

4

Page 5: Lecture 14 –Return-oriented programming...Lecture 14 –Return-oriented programming Stephen Checkoway Oberlin College Based on slides by Bailey, Brumley, and Miller ROP Overview

A note on terminology

• When ROP was invented in 2007• Sequences of code ending in ret were the basic building blocks• Multiple sequences and data are assembled into reusable gadgets

• Subsequently• A gadget came to refer to any sequence of code ending in a ret

• In 2010• ROP without returns (e.g., code sequences ending in call or jmp)

Page 6: Lecture 14 –Return-oriented programming...Lecture 14 –Return-oriented programming Stephen Checkoway Oberlin College Based on slides by Bailey, Brumley, and Miller ROP Overview

There are many semantically equivalent

ways to achieve the same net shellcode effect

6

Page 7: Lecture 14 –Return-oriented programming...Lecture 14 –Return-oriented programming Stephen Checkoway Oberlin College Based on slides by Bailey, Brumley, and Miller ROP Overview

...v2...v1

a1: mov eax, [esp]a2: mov ebx, [esp+8]a3: mov [ebx], eax

Implementation 1

Equivalence

7

Desired Logic

Stack

Mem[v2] = v1

esp

Page 8: Lecture 14 –Return-oriented programming...Lecture 14 –Return-oriented programming Stephen Checkoway Oberlin College Based on slides by Bailey, Brumley, and Miller ROP Overview

Constant store gadget

8

Desired Logic

a5

v2a3

v1Stack

Mem[v2] = v1

a1: pop eax;a2: reta3: pop ebx; a4: reta5: mov [ebx], eax

Implementation 2

Suppose a5and a3 on

stackesp

eaxebxeip

v1

a1

Page 9: Lecture 14 –Return-oriented programming...Lecture 14 –Return-oriented programming Stephen Checkoway Oberlin College Based on slides by Bailey, Brumley, and Miller ROP Overview

Constant store gadget

9

Desired Logic

a5

v2a3

v1Stack

Mem[v2] = v1

a1: pop eax; a2: reta3: pop ebx; a4: reta5: mov [ebx], eax

Implementation 2

esp

eaxebxeip

v1

a1a3

Page 10: Lecture 14 –Return-oriented programming...Lecture 14 –Return-oriented programming Stephen Checkoway Oberlin College Based on slides by Bailey, Brumley, and Miller ROP Overview

Constant store gadget

10

Desired Logic

a5

v2a3

v1Stack

Mem[v2] = v1

a1: pop eax; a2: reta3: pop ebx; a4: reta5: mov [ebx], eax

Implementation 2

esp

eaxebxeip

v1

a3

v2

Page 11: Lecture 14 –Return-oriented programming...Lecture 14 –Return-oriented programming Stephen Checkoway Oberlin College Based on slides by Bailey, Brumley, and Miller ROP Overview

Constant store gadget

11

Desired Logic

a5

v2a3

v1Stack

Mem[v2] = v1

a1: pop eax; a2: reta3: pop ebx; a4: reta5: mov [ebx], eax

Implementation 2

esp

eaxebxeip

v1

a4a5

v2

Page 12: Lecture 14 –Return-oriented programming...Lecture 14 –Return-oriented programming Stephen Checkoway Oberlin College Based on slides by Bailey, Brumley, and Miller ROP Overview

Constant store gadget

12

Desired Logic

a5

v2a3

v1Stack

Mem[v2] = v1

a1: pop eax; a2: reta3: pop ebx; a4: reta5: mov [ebx], eax

Implementation 2

esp

eaxebxeip

v1

a5

v2

Page 13: Lecture 14 –Return-oriented programming...Lecture 14 –Return-oriented programming Stephen Checkoway Oberlin College Based on slides by Bailey, Brumley, and Miller ROP Overview

Equivalence

13

Desired Logic

a3

v2a2

v1Stack

Mem[v2] = v1

a1: mov eax, [esp]a2: mov ebx, [esp+8]a3: mov [ebx], eax

Implementation 1

a1: pop eax; reta2: pop ebx; reta3: mov [ebx], eax

Implementation 2

semantically equivalent

esp

Page 14: Lecture 14 –Return-oriented programming...Lecture 14 –Return-oriented programming Stephen Checkoway Oberlin College Based on slides by Bailey, Brumley, and Miller ROP Overview

Return-Oriented Programming

• Find needed instruction gadgets at addresses a1, a2, and a3 in existing code• Overwrite stack to execute a1,

a2, and then a3

14

Desired Shellcode

Mem[v2] = v1

argv

argc

return addr

caller’s ebp

buf(64 bytes)

argv[1]

buf

%ebp

%esp

Page 15: Lecture 14 –Return-oriented programming...Lecture 14 –Return-oriented programming Stephen Checkoway Oberlin College Based on slides by Bailey, Brumley, and Miller ROP Overview

Return-Oriented Programming

15

Desired Shellcode

Mem[v2] = v1

argv

argc

return addr

caller’s ebp

buf(64 bytes)

argv[1]

buf

%ebp

%esp

a3

v2a2

v1a1

a1: pop eax; reta2: pop ebx; reta3: mov [ebx], eax

Desired store executed!

Page 16: Lecture 14 –Return-oriented programming...Lecture 14 –Return-oriented programming Stephen Checkoway Oberlin College Based on slides by Bailey, Brumley, and Miller ROP Overview

Arithmetic/logical operations: c = x op y

Basic strategy1. Pop the address of one variable into a register2. Load the value of the variable into a register3. Pop the address of another variable into a register4. Load the value of the variable into a register5. Perform the operation6. Pop the address of the destination variable into a register7. Store the result of the operation at that address

Must be mindful of register interactions

Page 17: Lecture 14 –Return-oriented programming...Lecture 14 –Return-oriented programming Stephen Checkoway Oberlin College Based on slides by Bailey, Brumley, and Miller ROP Overview

Arithmetic

• Addition: c = x + y• popl %eax

ret• movl (%eax), %eax

ret• movl (%eax), %ebx

ret• addl %eax, %ebx

ret• movl %ebx, (%eax)

ret esp

&c

&x

&y

Stack contains• Addresses of code

snippets ending in ret

• Data (here, the addresses of our variables)

Page 18: Lecture 14 –Return-oriented programming...Lecture 14 –Return-oriented programming Stephen Checkoway Oberlin College Based on slides by Bailey, Brumley, and Miller ROP Overview

Arithmetic

• Addition: c = x + y• popl %eax

ret• movl (%eax), %eax

ret• movl (%eax), %ebx

ret• addl %eax, %ebx

ret• movl %ebx, (%eax)

ret esp

&c

&x

&y

Register Value

eax 105

ebx 3852

Page 19: Lecture 14 –Return-oriented programming...Lecture 14 –Return-oriented programming Stephen Checkoway Oberlin College Based on slides by Bailey, Brumley, and Miller ROP Overview

Arithmetic

• Addition: c = x + y• popl %eax

ret• movl (%eax), %eax

ret• movl (%eax), %ebx

ret• addl %eax, %ebx

ret• movl %ebx, (%eax)

retesp

&c

&x

&y

Register Value

eax 105

ebx 3852

Page 20: Lecture 14 –Return-oriented programming...Lecture 14 –Return-oriented programming Stephen Checkoway Oberlin College Based on slides by Bailey, Brumley, and Miller ROP Overview

Arithmetic

• Addition: c = x + y• popl %eax

ret• movl (%eax), %eax

ret• movl (%eax), %ebx

ret• addl %eax, %ebx

ret• movl %ebx, (%eax)

ret

esp

&c

&x

&y

Register Value

eax &y

ebx 3852

Page 21: Lecture 14 –Return-oriented programming...Lecture 14 –Return-oriented programming Stephen Checkoway Oberlin College Based on slides by Bailey, Brumley, and Miller ROP Overview

Arithmetic

• Addition: c = x + y• popl %eax

ret• movl (%eax), %eax

ret• movl (%eax), %ebx

ret• addl %eax, %ebx

ret• movl %ebx, (%eax)

ret

esp

&c

&x

&y

Register Value

eax &y

ebx 3852

Page 22: Lecture 14 –Return-oriented programming...Lecture 14 –Return-oriented programming Stephen Checkoway Oberlin College Based on slides by Bailey, Brumley, and Miller ROP Overview

Arithmetic

• Addition: c = x + y• popl %eax

ret• movl (%eax), %eax

ret• movl (%eax), %ebx

ret• addl %eax, %ebx

ret• movl %ebx, (%eax)

ret

esp

&c

&x

&y

Register Value

eax &y

ebx y

Page 23: Lecture 14 –Return-oriented programming...Lecture 14 –Return-oriented programming Stephen Checkoway Oberlin College Based on slides by Bailey, Brumley, and Miller ROP Overview

Arithmetic

• Addition: c = x + y• popl %eax

ret• movl (%eax), %eax

ret• movl (%eax), %ebx

ret• addl %eax, %ebx

ret• movl %ebx, (%eax)

ret

esp

&c

&x

&y

Register Value

eax &y

ebx y

Page 24: Lecture 14 –Return-oriented programming...Lecture 14 –Return-oriented programming Stephen Checkoway Oberlin College Based on slides by Bailey, Brumley, and Miller ROP Overview

Arithmetic

• Addition: c = x + y• popl %eax

ret• movl (%eax), %eax

ret• movl (%eax), %ebx

ret• addl %eax, %ebx

ret• movl %ebx, (%eax)

ret

esp

&c

&x

&y

Register Value

eax &x

ebx y

Page 25: Lecture 14 –Return-oriented programming...Lecture 14 –Return-oriented programming Stephen Checkoway Oberlin College Based on slides by Bailey, Brumley, and Miller ROP Overview

Arithmetic

• Addition: c = x + y• popl %eax

ret• movl (%eax), %eax

ret• movl (%eax), %ebx

ret• addl %eax, %ebx

ret• movl %ebx, (%eax)

ret

esp

&c

&x

&y

Register Value

eax &x

ebx y

Page 26: Lecture 14 –Return-oriented programming...Lecture 14 –Return-oriented programming Stephen Checkoway Oberlin College Based on slides by Bailey, Brumley, and Miller ROP Overview

Arithmetic

• Addition: c = x + y• popl %eax

ret• movl (%eax), %eax

ret• movl (%eax), %ebx

ret• addl %eax, %ebx

ret• movl %ebx, (%eax)

ret

esp

&c

&x

&y

Register Value

eax x

ebx y

Page 27: Lecture 14 –Return-oriented programming...Lecture 14 –Return-oriented programming Stephen Checkoway Oberlin College Based on slides by Bailey, Brumley, and Miller ROP Overview

Arithmetic

• Addition: c = x + y• popl %eax

ret• movl (%eax), %eax

ret• movl (%eax), %ebx

ret• addl %eax, %ebx

ret• movl %ebx, (%eax)

ret

esp

&c

&x

&y

Register Value

eax x

ebx y

Page 28: Lecture 14 –Return-oriented programming...Lecture 14 –Return-oriented programming Stephen Checkoway Oberlin College Based on slides by Bailey, Brumley, and Miller ROP Overview

Arithmetic

• Addition: c = x + y• popl %eax

ret• movl (%eax), %eax

ret• movl (%eax), %ebx

ret• addl %eax, %ebx

ret• movl %ebx, (%eax)

ret

esp

&c

&x

&y

Register Value

eax x

ebx y + x

Page 29: Lecture 14 –Return-oriented programming...Lecture 14 –Return-oriented programming Stephen Checkoway Oberlin College Based on slides by Bailey, Brumley, and Miller ROP Overview

Arithmetic

• Addition: c = x + y• popl %eax

ret• movl (%eax), %eax

ret• movl (%eax), %ebx

ret• addl %eax, %ebx

ret• movl %ebx, (%eax)

ret

esp&c

&x

&y

Register Value

eax x

ebx y + x

Page 30: Lecture 14 –Return-oriented programming...Lecture 14 –Return-oriented programming Stephen Checkoway Oberlin College Based on slides by Bailey, Brumley, and Miller ROP Overview

Arithmetic

• Addition: c = x + y• popl %eax

ret• movl (%eax), %eax

ret• movl (%eax), %ebx

ret• addl %eax, %ebx

ret• movl %ebx, (%eax)

ret

esp&c

&x

&y

Register Value

eax &c

ebx y + x

Page 31: Lecture 14 –Return-oriented programming...Lecture 14 –Return-oriented programming Stephen Checkoway Oberlin College Based on slides by Bailey, Brumley, and Miller ROP Overview

Arithmetic

• Addition: c = x + y• popl %eax

ret• movl (%eax), %eax

ret• movl (%eax), %ebx

ret• addl %eax, %ebx

ret• movl %ebx, (%eax)

ret

esp

&c

&x

&y

Register Value

eax &c

ebx y + x

Page 32: Lecture 14 –Return-oriented programming...Lecture 14 –Return-oriented programming Stephen Checkoway Oberlin College Based on slides by Bailey, Brumley, and Miller ROP Overview

Arithmetic

• Addition: c = x + y• popl %eax

ret• movl (%eax), %eax

ret• movl (%eax), %ebx

ret• addl %eax, %ebx

ret• movl %ebx, (%eax)

ret

esp

&c

&x

&y

Register Value

eax &c

ebx y + x

Page 33: Lecture 14 –Return-oriented programming...Lecture 14 –Return-oriented programming Stephen Checkoway Oberlin College Based on slides by Bailey, Brumley, and Miller ROP Overview

What else can we do?

• Depends on the code we have access to• Usually: Arbitrary Turing-complete behavior• Arithmetic• Logic• Conditionals and loops• Subroutines• Calling existing functions• System calls

• Sometimes: More limited behavior• Often enough for straight-line code and system calls

Page 34: Lecture 14 –Return-oriented programming...Lecture 14 –Return-oriented programming Stephen Checkoway Oberlin College Based on slides by Bailey, Brumley, and Miller ROP Overview

Comparing ROP to normal programming

Normal programming ROP

Instruction pointer eip esp

No-op nop ret

Unconditional jump jmp address set esp to address of gadget

Conditional jump jnz address set esp to address of gadget if some condition is met

Variables memory and registers mostly memory

Inter-instruction (inter-gadget) register and memory interaction

minimal, mostly explicit; e.g., adding two registers only affects the destination register

can be complex; e.g., adding two registers may involve modifying many registers which impacts other gadgets

Page 35: Lecture 14 –Return-oriented programming...Lecture 14 –Return-oriented programming Stephen Checkoway Oberlin College Based on slides by Bailey, Brumley, and Miller ROP Overview

Return-oriented conditionals

• Processors support instructions that conditionally change the PC• On x86

• Jcc family: jz, jnz, jl, jle, etc. 33 in total• loop, loope, loopne• Based on condition codes mostly; and on ecx for some

• On MIPS• beq, bne, blez, etc.• Based on comparison of registers

• Processors generally don’t support for conditionally changing the stack pointer (with some exceptions)

Page 36: Lecture 14 –Return-oriented programming...Lecture 14 –Return-oriented programming Stephen Checkoway Oberlin College Based on slides by Bailey, Brumley, and Miller ROP Overview

We want conditional jumps

• Unconditional jump addr• popl %eax

ret• movl %eax, %esp

ret

Page 37: Lecture 14 –Return-oriented programming...Lecture 14 –Return-oriented programming Stephen Checkoway Oberlin College Based on slides by Bailey, Brumley, and Miller ROP Overview

We want conditional jumps

• Unconditional jump addr• popl %eax

ret• movl %eax, %esp

ret

esp

...

&next gadget

addr

Page 38: Lecture 14 –Return-oriented programming...Lecture 14 –Return-oriented programming Stephen Checkoway Oberlin College Based on slides by Bailey, Brumley, and Miller ROP Overview

We want conditional jump

• Unconditional jump addr• popl %eax

ret• movl %eax, %esp

ret

esp

...

&next gadget

addr

Page 39: Lecture 14 –Return-oriented programming...Lecture 14 –Return-oriented programming Stephen Checkoway Oberlin College Based on slides by Bailey, Brumley, and Miller ROP Overview

We want conditional jump

• Unconditional jump addr• popl %eax

ret• movl %eax, %esp

ret esp

...

&next gadget

addr

eax

Page 40: Lecture 14 –Return-oriented programming...Lecture 14 –Return-oriented programming Stephen Checkoway Oberlin College Based on slides by Bailey, Brumley, and Miller ROP Overview

We want conditional jumps

• Unconditional jump addr• popl %eax

ret• movl %eax, %esp

retesp

...

&next gadget

addr

eax

Page 41: Lecture 14 –Return-oriented programming...Lecture 14 –Return-oriented programming Stephen Checkoway Oberlin College Based on slides by Bailey, Brumley, and Miller ROP Overview

We want conditional jumps

• Unconditional jump addr• popl %eax

ret• movl %eax, %esp

ret

...

&next gadget

addr

eax, esp

Page 42: Lecture 14 –Return-oriented programming...Lecture 14 –Return-oriented programming Stephen Checkoway Oberlin College Based on slides by Bailey, Brumley, and Miller ROP Overview

We want conditional jumps

• Unconditional jump addr• popl %eax

ret• movl %eax, %esp

ret

...

&next gadget

addr

eaxesp

Page 43: Lecture 14 –Return-oriented programming...Lecture 14 –Return-oriented programming Stephen Checkoway Oberlin College Based on slides by Bailey, Brumley, and Miller ROP Overview

We want conditional jumps

• Unconditional jump addr• popl %eax

ret• movl %eax, %esp

ret

• Conditional jump addr, one way• Conditionally set a register to 0 or 0xffffffff• Perform a logical AND with the register and an offset• Add the result to esp

Page 44: Lecture 14 –Return-oriented programming...Lecture 14 –Return-oriented programming Stephen Checkoway Oberlin College Based on slides by Bailey, Brumley, and Miller ROP Overview

Conditionally set a register to 0 or 0xffffffff

• Compare registers eax and ebx and set ecx to• 0xffffffff if eax < ebx• 0 if eax >= ebx

• Ideally we would find a sequence likecmpl %ebx, %eax set carry flag cf according to eax - ebxsbbl %ecx, %ecx ecx ← ecx - ecx - cf; or ecx ← -cfret

• Unlikely to find this; instead look for cmp; ret and sbb; ret sequences

Page 45: Lecture 14 –Return-oriented programming...Lecture 14 –Return-oriented programming Stephen Checkoway Oberlin College Based on slides by Bailey, Brumley, and Miller ROP Overview

Performing a logical AND with a constant

• Pop the constant into a register using pop; ret• Use an and; ret sequence

Page 46: Lecture 14 –Return-oriented programming...Lecture 14 –Return-oriented programming Stephen Checkoway Oberlin College Based on slides by Bailey, Brumley, and Miller ROP Overview

Updating the stack pointer

• Use an add esp; ret sequence

Page 47: Lecture 14 –Return-oriented programming...Lecture 14 –Return-oriented programming Stephen Checkoway Oberlin College Based on slides by Bailey, Brumley, and Miller ROP Overview

Putting it together ...

&next gadget

37

addr

42

offset

cmpl %ebx, %eaxret

sbbl %ecx, %ecxret

popl %eaxret

andl %ecx, %eaxret

addl %eax, %espret

popl %edxret

movl %eax, %espret

Conditional jumpLoad constant in edxUnconditional jump

Useful instruction sequences

Page 48: Lecture 14 –Return-oriented programming...Lecture 14 –Return-oriented programming Stephen Checkoway Oberlin College Based on slides by Bailey, Brumley, and Miller ROP Overview

...

&next gadget

37

addr

42

offset

Putting it together

cmpl %ebx, %eaxret

sbbl %ecx, %ecxret

popl %eaxret

andl %ecx, %eaxret

addl %eax, %espret

popl %edxret

movl %eax, %espret

Register Value

eax 10

ebx 20

ecx 108

edx 17

esp

Page 49: Lecture 14 –Return-oriented programming...Lecture 14 –Return-oriented programming Stephen Checkoway Oberlin College Based on slides by Bailey, Brumley, and Miller ROP Overview

...

&next gadget

37

addr

42

offset

Putting it together

cmpl %ebx, %eaxret

sbbl %ecx, %ecxret

popl %eaxret

andl %ecx, %eaxret

addl %eax, %espret

popl %edxret

movl %eax, %espret

Register Value

eax 10

ebx 20

ecx 108

edx 17

esp

Page 50: Lecture 14 –Return-oriented programming...Lecture 14 –Return-oriented programming Stephen Checkoway Oberlin College Based on slides by Bailey, Brumley, and Miller ROP Overview

...

&next gadget

37

addr

42

offset

Putting it together

cmpl %ebx, %eaxret

sbbl %ecx, %ecxret

popl %eaxret

andl %ecx, %eaxret

addl %eax, %espret

popl %edxret

movl %eax, %espret

Register Value

eax 10

ebx 20

ecx 108

edx 17

esp

cf = 1

Page 51: Lecture 14 –Return-oriented programming...Lecture 14 –Return-oriented programming Stephen Checkoway Oberlin College Based on slides by Bailey, Brumley, and Miller ROP Overview

...

&next gadget

37

addr

42

offset

Putting it together

cmpl %ebx, %eaxret

sbbl %ecx, %ecxret

popl %eaxret

andl %ecx, %eaxret

addl %eax, %espret

popl %edxret

movl %eax, %espret

Register Value

eax 10

ebx 20

ecx 108

edx 17

espcf = 1

Page 52: Lecture 14 –Return-oriented programming...Lecture 14 –Return-oriented programming Stephen Checkoway Oberlin College Based on slides by Bailey, Brumley, and Miller ROP Overview

...

&next gadget

37

addr

42

offset

Putting it together

cmpl %ebx, %eaxret

sbbl %ecx, %ecxret

popl %eaxret

andl %ecx, %eaxret

addl %eax, %espret

popl %edxret

movl %eax, %espret

Register Value

eax 10

ebx 20

ecx 0xffffffff

edx 17

espcf = 1

Page 53: Lecture 14 –Return-oriented programming...Lecture 14 –Return-oriented programming Stephen Checkoway Oberlin College Based on slides by Bailey, Brumley, and Miller ROP Overview

...

&next gadget

37

addr

42

offset

Putting it together

cmpl %ebx, %eaxret

sbbl %ecx, %ecxret

popl %eaxret

andl %ecx, %eaxret

addl %eax, %espret

popl %edxret

movl %eax, %espret

Register Value

eax 10

ebx 20

ecx 0xffffffff

edx 17esp

Page 54: Lecture 14 –Return-oriented programming...Lecture 14 –Return-oriented programming Stephen Checkoway Oberlin College Based on slides by Bailey, Brumley, and Miller ROP Overview

...

&next gadget

37

addr

42

offset

Putting it together

cmpl %ebx, %eaxret

sbbl %ecx, %ecxret

popl %eaxret

andl %ecx, %eaxret

addl %eax, %espret

popl %edxret

movl %eax, %espret

Register Value

eax 20 = offset

ebx 20

ecx 0xffffffff

edx 17 esp

Page 55: Lecture 14 –Return-oriented programming...Lecture 14 –Return-oriented programming Stephen Checkoway Oberlin College Based on slides by Bailey, Brumley, and Miller ROP Overview

...

&next gadget

37

addr

42

offset

Putting it together

cmpl %ebx, %eaxret

sbbl %ecx, %ecxret

popl %eaxret

andl %ecx, %eaxret

addl %eax, %espret

popl %edxret

movl %eax, %espret

Register Value

eax 20 = offset

ebx 20

ecx 0xffffffff

edx 17

esp

Page 56: Lecture 14 –Return-oriented programming...Lecture 14 –Return-oriented programming Stephen Checkoway Oberlin College Based on slides by Bailey, Brumley, and Miller ROP Overview

...

&next gadget

37

addr

42

offset

Putting it together

cmpl %ebx, %eaxret

sbbl %ecx, %ecxret

popl %eaxret

andl %ecx, %eaxret

addl %eax, %espret

popl %edxret

movl %eax, %espret

Register Value

eax 20 = offset

ebx 20

ecx 0xffffffff

edx 17

esp

Page 57: Lecture 14 –Return-oriented programming...Lecture 14 –Return-oriented programming Stephen Checkoway Oberlin College Based on slides by Bailey, Brumley, and Miller ROP Overview

...

&next gadget

37

addr

42

offset

Putting it together

cmpl %ebx, %eaxret

sbbl %ecx, %ecxret

popl %eaxret

andl %ecx, %eaxret

addl %eax, %espret

popl %edxret

movl %eax, %espret

Register Value

eax 20 = offset

ebx 20

ecx 0xffffffff

edx 17

esp

Page 58: Lecture 14 –Return-oriented programming...Lecture 14 –Return-oriented programming Stephen Checkoway Oberlin College Based on slides by Bailey, Brumley, and Miller ROP Overview

...

&next gadget

37

addr

42

offset

Putting it together

cmpl %ebx, %eaxret

sbbl %ecx, %ecxret

popl %eaxret

andl %ecx, %eaxret

addl %eax, %espret

popl %edxret

movl %eax, %espret

Register Value

eax 20 = offset

ebx 20

ecx 0xffffffff

edx 17

esp

Page 59: Lecture 14 –Return-oriented programming...Lecture 14 –Return-oriented programming Stephen Checkoway Oberlin College Based on slides by Bailey, Brumley, and Miller ROP Overview

...

&next gadget

37

addr

42

offset

Putting it together

cmpl %ebx, %eaxret

sbbl %ecx, %ecxret

popl %eaxret

andl %ecx, %eaxret

addl %eax, %espret

popl %edxret

movl %eax, %espret

Register Value

eax 20 = offset

ebx 20

ecx 0xffffffff

edx 17

esp

Page 60: Lecture 14 –Return-oriented programming...Lecture 14 –Return-oriented programming Stephen Checkoway Oberlin College Based on slides by Bailey, Brumley, and Miller ROP Overview

...

&next gadget

37

addr

42

offset

Putting it together

cmpl %ebx, %eaxret

sbbl %ecx, %ecxret

popl %eaxret

andl %ecx, %eaxret

addl %eax, %espret

popl %edxret

movl %eax, %espret

Register Value

eax 20 = offset

ebx 20

ecx 0xffffffff

edx 37

esp

Page 61: Lecture 14 –Return-oriented programming...Lecture 14 –Return-oriented programming Stephen Checkoway Oberlin College Based on slides by Bailey, Brumley, and Miller ROP Overview

...

&next gadget

37

addr

42

offset

Putting it together

cmpl %ebx, %eaxret

sbbl %ecx, %ecxret

popl %eaxret

andl %ecx, %eaxret

addl %eax, %espret

popl %edxret

movl %eax, %espret

Register Value

eax 20 = offset

ebx 20

ecx 0xffffffff

edx 37

esp

Page 62: Lecture 14 –Return-oriented programming...Lecture 14 –Return-oriented programming Stephen Checkoway Oberlin College Based on slides by Bailey, Brumley, and Miller ROP Overview

...

&next gadget

37

addr

42

offset

And again!

cmpl %ebx, %eaxret

sbbl %ecx, %ecxret

popl %eaxret

andl %ecx, %eaxret

addl %eax, %espret

popl %edxret

movl %eax, %espret

Register Value

eax 500

ebx 20

ecx 108

edx 17

esp

Page 63: Lecture 14 –Return-oriented programming...Lecture 14 –Return-oriented programming Stephen Checkoway Oberlin College Based on slides by Bailey, Brumley, and Miller ROP Overview

...

&next gadget

37

addr

42

offset

And again!

cmpl %ebx, %eaxret

sbbl %ecx, %ecxret

popl %eaxret

andl %ecx, %eaxret

addl %eax, %espret

popl %edxret

movl %eax, %espret

Register Value

eax 500

ebx 20

ecx 108

edx 17

esp

Page 64: Lecture 14 –Return-oriented programming...Lecture 14 –Return-oriented programming Stephen Checkoway Oberlin College Based on slides by Bailey, Brumley, and Miller ROP Overview

...

&next gadget

37

addr

42

offset

And again!

cmpl %ebx, %eaxret

sbbl %ecx, %ecxret

popl %eaxret

andl %ecx, %eaxret

addl %eax, %espret

popl %edxret

movl %eax, %espret

Register Value

eax 500

ebx 20

ecx 108

edx 17

esp

cf = 0

Page 65: Lecture 14 –Return-oriented programming...Lecture 14 –Return-oriented programming Stephen Checkoway Oberlin College Based on slides by Bailey, Brumley, and Miller ROP Overview

...

&next gadget

37

addr

42

offset

And again!

cmpl %ebx, %eaxret

sbbl %ecx, %ecxret

popl %eaxret

andl %ecx, %eaxret

addl %eax, %espret

popl %edxret

movl %eax, %espret

Register Value

eax 500

ebx 20

ecx 108

edx 17

espcf = 0

Page 66: Lecture 14 –Return-oriented programming...Lecture 14 –Return-oriented programming Stephen Checkoway Oberlin College Based on slides by Bailey, Brumley, and Miller ROP Overview

...

&next gadget

37

addr

42

offset

And again!

cmpl %ebx, %eaxret

sbbl %ecx, %ecxret

popl %eaxret

andl %ecx, %eaxret

addl %eax, %espret

popl %edxret

movl %eax, %espret

Register Value

eax 500

ebx 20

ecx 0

edx 17

esp

Page 67: Lecture 14 –Return-oriented programming...Lecture 14 –Return-oriented programming Stephen Checkoway Oberlin College Based on slides by Bailey, Brumley, and Miller ROP Overview

...

&next gadget

37

addr

42

offset

And again!

cmpl %ebx, %eaxret

sbbl %ecx, %ecxret

popl %eaxret

andl %ecx, %eaxret

addl %eax, %espret

popl %edxret

movl %eax, %espret

Register Value

eax 500

ebx 20

ecx 0

edx 17esp

Page 68: Lecture 14 –Return-oriented programming...Lecture 14 –Return-oriented programming Stephen Checkoway Oberlin College Based on slides by Bailey, Brumley, and Miller ROP Overview

...

&next gadget

37

addr

42

offset

And again!

cmpl %ebx, %eaxret

sbbl %ecx, %ecxret

popl %eaxret

andl %ecx, %eaxret

addl %eax, %espret

popl %edxret

movl %eax, %espret

Register Value

eax 20 = offset

ebx 20

ecx 0

edx 17 esp

Page 69: Lecture 14 –Return-oriented programming...Lecture 14 –Return-oriented programming Stephen Checkoway Oberlin College Based on slides by Bailey, Brumley, and Miller ROP Overview

...

&next gadget

37

addr

42

offset

And again!

cmpl %ebx, %eaxret

sbbl %ecx, %ecxret

popl %eaxret

andl %ecx, %eaxret

addl %eax, %espret

popl %edxret

movl %eax, %espret

Register Value

eax 20 = offset

ebx 20

ecx 0

edx 17

esp

Page 70: Lecture 14 –Return-oriented programming...Lecture 14 –Return-oriented programming Stephen Checkoway Oberlin College Based on slides by Bailey, Brumley, and Miller ROP Overview

...

&next gadget

37

addr

42

offset

And again!

cmpl %ebx, %eaxret

sbbl %ecx, %ecxret

popl %eaxret

andl %ecx, %eaxret

addl %eax, %espret

popl %edxret

movl %eax, %espret

Register Value

eax 0

ebx 20

ecx 0

edx 17

esp

Page 71: Lecture 14 –Return-oriented programming...Lecture 14 –Return-oriented programming Stephen Checkoway Oberlin College Based on slides by Bailey, Brumley, and Miller ROP Overview

...

&next gadget

37

addr

42

offset

And again!

cmpl %ebx, %eaxret

sbbl %ecx, %ecxret

popl %eaxret

andl %ecx, %eaxret

addl %eax, %espret

popl %edxret

movl %eax, %espret

Register Value

eax 0

ebx 20

ecx 0

edx 17

esp

Page 72: Lecture 14 –Return-oriented programming...Lecture 14 –Return-oriented programming Stephen Checkoway Oberlin College Based on slides by Bailey, Brumley, and Miller ROP Overview

...

&next gadget

37

addr

42

offset

And again!

cmpl %ebx, %eaxret

sbbl %ecx, %ecxret

popl %eaxret

andl %ecx, %eaxret

addl %eax, %espret

popl %edxret

movl %eax, %espret

Register Value

eax 0

ebx 20

ecx 0

edx 17

esp

Page 73: Lecture 14 –Return-oriented programming...Lecture 14 –Return-oriented programming Stephen Checkoway Oberlin College Based on slides by Bailey, Brumley, and Miller ROP Overview

...

&next gadget

37

addr

42

offset

And again!

cmpl %ebx, %eaxret

sbbl %ecx, %ecxret

popl %eaxret

andl %ecx, %eaxret

addl %eax, %espret

popl %edxret

movl %eax, %espret

Register Value

eax 0

ebx 20

ecx 0

edx 17

esp

Page 74: Lecture 14 –Return-oriented programming...Lecture 14 –Return-oriented programming Stephen Checkoway Oberlin College Based on slides by Bailey, Brumley, and Miller ROP Overview

...

&next gadget

37

addr

42

offset

And again!

cmpl %ebx, %eaxret

sbbl %ecx, %ecxret

popl %eaxret

andl %ecx, %eaxret

addl %eax, %espret

popl %edxret

movl %eax, %espret

Register Value

eax 0

ebx 20

ecx 0

edx 42

esp

Page 75: Lecture 14 –Return-oriented programming...Lecture 14 –Return-oriented programming Stephen Checkoway Oberlin College Based on slides by Bailey, Brumley, and Miller ROP Overview

...

&next gadget

37

addr

42

offset

And again!

cmpl %ebx, %eaxret

sbbl %ecx, %ecxret

popl %eaxret

andl %ecx, %eaxret

addl %eax, %espret

popl %edxret

movl %eax, %espret

Register Value

eax 0

ebx 20

ecx 0

edx 42

esp

Page 76: Lecture 14 –Return-oriented programming...Lecture 14 –Return-oriented programming Stephen Checkoway Oberlin College Based on slides by Bailey, Brumley, and Miller ROP Overview

...

&next gadget

37

addr

42

offset

And again!

cmpl %ebx, %eaxret

sbbl %ecx, %ecxret

popl %eaxret

andl %ecx, %eaxret

addl %eax, %espret

popl %edxret

movl %eax, %espret

Register Value

eax addr

ebx 20

ecx 0

edx 42

esp

Page 77: Lecture 14 –Return-oriented programming...Lecture 14 –Return-oriented programming Stephen Checkoway Oberlin College Based on slides by Bailey, Brumley, and Miller ROP Overview

...

&next gadget

37

addr

42

offset

And again!

cmpl %ebx, %eaxret

sbbl %ecx, %ecxret

popl %eaxret

andl %ecx, %eaxret

addl %eax, %espret

popl %edxret

movl %eax, %espret

Register Value

eax addr

ebx 20

ecx 0

edx 42

esp

Page 78: Lecture 14 –Return-oriented programming...Lecture 14 –Return-oriented programming Stephen Checkoway Oberlin College Based on slides by Bailey, Brumley, and Miller ROP Overview

...

&next gadget

37

addr

42

offset

And again!

cmpl %ebx, %eaxret

sbbl %ecx, %ecxret

popl %eaxret

andl %ecx, %eaxret

addl %eax, %espret

popl %edxret

movl %eax, %espret

Register Value

eax addr

ebx 20

ecx 0

edx 42

esp

Page 79: Lecture 14 –Return-oriented programming...Lecture 14 –Return-oriented programming Stephen Checkoway Oberlin College Based on slides by Bailey, Brumley, and Miller ROP Overview

...

&next gadget

37

addr

42

offset

And again!

cmpl %ebx, %eaxret

sbbl %ecx, %ecxret

popl %eaxret

andl %ecx, %eaxret

addl %eax, %espret

popl %edxret

movl %eax, %espret

Register Value

eax addr

ebx 20

ecx 0

edx 42

esp

Page 80: Lecture 14 –Return-oriented programming...Lecture 14 –Return-oriented programming Stephen Checkoway Oberlin College Based on slides by Bailey, Brumley, and Miller ROP Overview

CompareRegister Value

eax 10

ebx 20

ecx 108

edx 17

Register Value

eax addr

ebx 20

ecx 0

edx 42

Register Value

eax 500

ebx 20

ecx 108

edx 17

Register Value

eax 20

ebx 20

ecx 0xffffffff

edx 37

if (eax < ebx)edx = 37;

elseedx = 42;