light and dark side of code instrumentation

47
Light and Dark side of Code Instrumentation Dmitriy “D1g1″ Evdokimov DSecRG, Security Researcher

Upload: cais

Post on 24-Feb-2016

38 views

Category:

Documents


0 download

DESCRIPTION

Light and Dark side of Code Instrumentation. Dmitriy “D1g1″ Evdokimov DSecRG , Security Researcher. # whoami. Security Researcher in DSecRG RE Fuzzing Mobile security Organizer: DCG #7812 Editor in “XAKEP”. Agenda. Instrumentation . Instrumentation .. Instrumentation … - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Light and Dark side of Code Instrumentation

Light and Dark side of Code Instrumentation

Dmitriy “D1g1″ EvdokimovDSecRG, Security Researcher

Page 2: Light and Dark side of Code Instrumentation

2

#whoami

• Security Researcher in DSecRG– RE– Fuzzing– Mobile security

• Organizer: DCG #7812• Editor in “XAKEP”

CONFidence Krakow 2012www.dsecrg.com

Page 3: Light and Dark side of Code Instrumentation

CONFidence Krakow 2012 3

Agenda

1. Instrumentation .2. Instrumentation .. 3. Instrumentation …4. Instrumentation ….5. Instrumentation …..6. Instrumentation ……7. Instrumentation …….

www.dsecrg.com

Page 4: Light and Dark side of Code Instrumentation

CONFidence Krakow 2012 4

Intro

“It has been proved by scientists that a new point of evolution, any technical progress appears when a Man makes up a new type of tool, but not a product.”

www.dsecrg.com

Page 5: Light and Dark side of Code Instrumentation

CONFidence Krakow 2012 5

Instrumentation

Instrumentation is a technique adding extra code to an program/environment for monitoring/change some program behavior.

Own extra code

Program

Own extra code

Program

Environment

www.dsecrg.com

Page 6: Light and Dark side of Code Instrumentation

CONFidence Krakow 2012 6

Why is it necessary?

Simulation

Emulation

Performance analysis

Correctness checking

Memory debugging

Parallel optimization

Collecting code metrics

Automated debugging

Software profiling

Optimization

Testing

Error detection

Virtualization

Memory leak detection

www.dsecrg.com

Binary translation

Page 7: Light and Dark side of Code Instrumentation

CONFidence Krakow 2012 7

Instrumentation in information security

Control flow analysis

Taint analysis

Data flow analysis

Code coverage

Privacy monitoring

Vulnerability detection

Fuzzing

Virtual patching Malware analysis

Shellcode detection

Reverse engineeringDeobfuscation

Unpack

Data Structure Restoring

SandboxingAntivirus technology

ForensicTransparent debugging

Program shepherding

Security test case generation

Behavior based security

www.dsecrg.com

Security enforcement

Page 8: Light and Dark side of Code Instrumentation

CONFidence Krakow 2012 8

Analysis

Criterion Static analysis Dynamic analysis

Code vs. data Problem No problem

Code coverage Big (but not all) One way

Information about values No information All information

Self-modifying code Problem No problem

Interaction with the environment

No Yes

Unused code Analysis No analysis

JIT code Problem No problem

www.dsecrg.com

Page 9: Light and Dark side of Code Instrumentation

CONFidence Krakow 2012 9

Code Discovery

010101011010100101001001010101011010101010101111010101110101000111101110011100101010101101110101101001111001101010101101110001001011

Memory

Instr 1

InstrInstr 7

Instr 8Instr 10

Instr 3jump regInstr 2

5Instr 7 cont.

Instr 4Instr 6

Instr 9

After static analysis Instr 1

DATAInstr 5

PADDINGInstr 6

Instr 3jump regInstr 2

Instr 4 jmp 0x0ABCD

After dynamic analysis

www.dsecrg.com

Page 10: Light and Dark side of Code Instrumentation

CONFidence Krakow 2012 10

The general scheme of code instrumentation

1. Find points of instrumentation;2. Insert instrumentation;3. Take control from program;4. Save context of the program;5. Execute own code;6. Restore context of the program;7. Return control to program.

www.dsecrg.com

Page 11: Light and Dark side of Code Instrumentation

CONFidence Krakow 2012 11

Source Data

Source data

Source code Byte code Binary code

www.dsecrg.com

Page 12: Light and Dark side of Code Instrumentation

CONFidence Krakow 2012 12

Classification of target instrumentation

Instrumentation

With source code Without source code

Source code

Linker/Compiler

Byte code Binary code

Byte code

Interpreter/VM

Executable file

Process

Environment

Hardware

Source code instrumentationLink-time/Compilation-time instrumentationByte code instrumentation- Static- Load-time- Dynamic

Static binary instrumentationDynamic binary instrumentationEnvironment modification

www.dsecrg.com

Page 13: Light and Dark side of Code Instrumentation

CONFidence Krakow 2012 13

Source code instrumentation

• Source code*– Source code instrumentation

• Manual skills• Plugins for IDE

– Link-time/Compilation-time instrumentation• Options of linker/compiler

• Tools: Visual Studio Profiler, gcc, TAU, OPARI, Diablo, Phoenix, LLVM, Rational Purify, Valgrind

*Unreal condition for security specialist =)

www.dsecrg.com

Page 14: Light and Dark side of Code Instrumentation

CONFidence Krakow 2012 14

Unmoral programming

www.dsecrg.com

Page 15: Light and Dark side of Code Instrumentation

CONFidence Krakow 2012 15

Byte code instrumentation

Byte code – intermediate representation between source code and machine code.

Java VM Dalvik VM AVM/AVM2 CLR

www.dsecrg.com

Page 16: Light and Dark side of Code Instrumentation

CONFidence Krakow 2012 16

Instrumentation byte-code (I)Source code Byte-code

LoaderJIT

LibLib

Lib

Machine code

Compilation

Exec

ute

Load

Virtual machine

www.dsecrg.com

Page 17: Light and Dark side of Code Instrumentation

CONFidence Krakow 2012 17

Instrumentation byte code (II)

• Byte-code– Static instrumentation• Static byte code instrumentation

– Load-time instrumentation• Custom byte code loader

– Dynamic instrumentation• Dynamic byte-code instrumentation

www.dsecrg.com

Page 18: Light and Dark side of Code Instrumentation

CONFidence Krakow 2012 18

Instrumentation Java (I)

www.dsecrg.com

Mechanisms:• java.lang.instrument package; • Java Platform Debugger Architecture (JPDA) .

Page 19: Light and Dark side of Code Instrumentation

CONFidence Krakow 2012 19

Instrumentation Java (II)

• Static instrumentation– Modification *.class files

• Load-time instrumentation– ClassFileLoadHook – Custom ClassLoader

• Dynamic instrumentation– ClassFileLoadHook -> RetransformClasses

Tools: Javassist, ObjectWeb ASM, BCEL, JOIE, reJ JavaSnoop, Serp, JMangler

www.dsecrg.com

Page 20: Light and Dark side of Code Instrumentation

CONFidence Krakow 2012 20

Instrumentation .NET

• Static instrumentation– Modification DLL files

• Load-time instrumentation– AppDomain.Load()/Assembly.Load()– Joint redirection– Via event handler

Tools: ReFrameworker, MBEL, RAIL, Cecil

www.dsecrg.com

Page 21: Light and Dark side of Code Instrumentation

CONFidence Krakow 2012 21

Instrumentation ActionScript (I)

• ActionScript2– AVM– Tags that (can) contain bytecode: • DefineButton (7), DefineButton2 (34), DefineSprite (39),

DoAction (12), DoInitAction (59), PlaceObject2 (26), PlaceObject3 (70).

• ActionScript3– AVM2– Tags that (can) contain bytecode:• DoABC (82), RawABC (72).

www.dsecrg.com

Page 22: Light and Dark side of Code Instrumentation

CONFidence Krakow 2012 22

AVM2 Architecture.abc

.abc parser

Bytecode Verifier

Interpreter

JIT Compiler

MIR Code Generator

MD Code Generator (x86, PPC, ARM, etc.)

Runtime System (Type System, Object Model)

Memory Manager/Garbage Collector

AS3function (x:int):int { return x+10}

.abcgetlocal 1pushint 10addreturnvalue

MIR@1 arg +8// argv@2 load [@1+4]@3 imm 10@4 add (@2,@3)@5 ret @4 // @4:eax

x86mov eax,(eap+8)mov eax,(eax+4)add eax,10ret

www.dsecrg.com

Page 23: Light and Dark side of Code Instrumentation

CONFidence Krakow 2012 23

Instrumentation ActionScript (I)

www.dsecrg.com

Original SWF file

Header Tags

AVM tag

InstrumentetedSWF file

Page 24: Light and Dark side of Code Instrumentation

CONFidence Krakow 2012 24

Instrumentation AVM (II)

www.dsecrg.com

• Static instrumentation– Add :• trace()• dump()• debug()• debugfile()• debugline()

– Modification:• Create own class + change class name = hook!

Page 25: Light and Dark side of Code Instrumentation

CONFidence Krakow 2012 25

Instrumentation binary code• The executable file

– Static code instrumentation• Static binary instrumentation

• Process– Debuggers

• Debugging API– Modifying call table/other structure

• IAT• …

– Dynamic code instrumentation• Dynamic binary instrumentation

• Hardware– Hardware debug features

• Debug registers• Hardware debuggers• …

www.dsecrg.com

• Environment – Modifying call table

• IDT, CPU MSRs, GDT, SSDT, IRP тable

• …– Modifying OS options

• SHIM• LD_PRELOAD• AppInt_DLLs• DLL injection• …

– Reproduction of the environment• Emulation• Virtualization

Page 26: Light and Dark side of Code Instrumentation

CONFidence Krakow 2012 26

Static Binary Instrumentation (I)

Static binary instrumentation/Physical code integration/Static binary code rewriting

• Realization:– With reallocation:• Level of segment;• Level of function;

– Without reallocation.

www.dsecrg.com

HeaderEdited Header

Segment of code

Segment of data

Extra segment of code

Extra segment of data

Segment of code

Segment of data

Page 27: Light and Dark side of Code Instrumentation

CONFidence Krakow 2012 27

Static Binary Instrumentation (II)

Reallocation:1) Function Displacement + Entry Point Linking;2) Branch Conversion;3) Instruction Padding;4) Instrumentation.

www.dsecrg.com

Tools: DynInst, EEL, ATOM, PEBIL, ERESI, TAU, Vulcan, BIRD, Aslan(4514N)

Page 28: Light and Dark side of Code Instrumentation

CONFidence Krakow 2012 28

Debuggers• Breakpoints:

• Software• Hardware

• Debugger + scripting:• WinDBG + pykd• OllyDBG + python = Immunity Debuggers• GDB + PythonGDB

• Python library's*: Buggery, IDAPython, ImmLIB, lldb, PyDBG, PyDbgEng, pygdb , python-ptrace , vtrace, WinAppDbg, …

*See “Python Arsenal for Reverse Engineering”

www.dsecrg.com

App Debugger

Processor

OS

Page 29: Light and Dark side of Code Instrumentation

CONFidence Krakow 2012 29

Dynamic Binary Instrumentation

Dynamic binary instrumentation/Virtual code integration/Dynamic binary rewriting

Tools: PIN, DynamoRIO, DynInst, Valgrind, BAP, KEDR, Fit, ERESI, Detour, Vulcan, SpiderPig

www.dsecrg.com

App1 App2

Processor

OS

DBI

Page 30: Light and Dark side of Code Instrumentation

CONFidence Krakow 2012 30

Dynamic Binary Instrumentation• Dynamic Binary Instrumentation (DBI) is a process control and analysis technique that involves injecting instrumentation code into a running process.• Dynamic binary analysis (DBA) tools such as profilers and checkers help programmers create better software.• Dynamic binary instrumentation (DBI) frameworks make it easy to build new DBA tools.

•DBA tools consist:– instrumentation routines;– analysis routines.

www.dsecrg.com

Page 31: Light and Dark side of Code Instrumentation

CONFidence Krakow 2012 31

Kinds of DBI

Mode:– user-mode;– kernel-mode.

Modes of execution:– Interpretation-mode;– Probe-mode;– JIT-mode.

www.dsecrg.com

Mode of work:- Start to finish;- Attach.

PerformanceFu

nctio

nalit

y

JIT

Probe

Page 32: Light and Dark side of Code Instrumentation

CONFidence Krakow 2012 32

DBI Frameworks*Frameworks OS Arch Modes Features

PIN Linux, Windows, MacOS

x86, x86-64, Itanium, ARM

JIT, Probe Attach mode

DynamoRIO Linux, Windows

x86, x86-64 JIT, Probe Runtime optimization

DynInst Linux, FreeBSD, Windows

x86, x86-64, ppc32, ARM, ppc64

Probe Static & Dynamic binary instrumentation

Valgrind Linux, MacOS x86, x86-64, ppc32, ARM, ppc64

JIT IR – VEX, Heavyweight DBA tools

www.dsecrg.com

*For more details see “DBI:Intro” presentation from ZeroNights conference

Page 33: Light and Dark side of Code Instrumentation

CONFidence Krakow 2012 33

Start work with DBI

www.dsecrg.com

Page 34: Light and Dark side of Code Instrumentation

34

Levels of granularity

• Instruction;• Basic Block*;• Trace/Superblock;• Function;• Section;• Events;• Binary image.

CONFidence Krakow 2012www.dsecrg.com

Page 35: Light and Dark side of Code Instrumentation

CONFidence Krakow 2012 35

Self-modifying code & DBI

Detect:– Written-protecting code pages– Checking store address– Inserting extra code

www.dsecrg.com

Page 36: Light and Dark side of Code Instrumentation

CONFidence Krakow 2012 36

OverheadO = X + YY = N*ZZ = K+L

O – Tool Overhead;X – Instrumentation Routines Overhead;Y – Analysis Routines Overhead;N – Frequency of Calling Analysis Routine;Z – Work Performed in the Analysis Routine;K – Work Required to Transition to Analysis Routine;L – Work Performed Inside the Analysis Routine.

www.dsecrg.com

Page 37: Light and Dark side of Code Instrumentation

CONFidence Krakow 2012 37

Rewriting instructions

• Platforms:– with fixed-length instruction;– with variable-length instructions.

www.dsecrg.com

Page 38: Light and Dark side of Code Instrumentation

CONFidence Krakow 2012 38

Rewriting code (I)

• Easy / simple / boring / regular example– Rewriting prolog function

www.dsecrg.com

Page 39: Light and Dark side of Code Instrumentation

CONFidence Krakow 2012 39

Rewriting code (II)

• Hardcore example:– Mobile phone firmware rewriting

GSMAMSSSHELLCODE 1

Bootloader

Flash

Malicious SMS

reboot

Baseband processorwww.dsecrg.com

Page 40: Light and Dark side of Code Instrumentation

CONFidence Krakow 2012 40

Instrumentation in ARM

ARM modes:– ARM

• Length(instr) = 4 byte – Thumb

• Length(instr) = 2 byte– Thumb2

• Length(instr) = 2/4 byte– Jazzle

For more detail see “A Dynamic Binary Instrumentation Engine for the ARM Architecture” presentation.

www.dsecrg.com

Page 41: Light and Dark side of Code Instrumentation

CONFidence Krakow 2012 41

Emulation

www.dsecrg.com

App1 OS

Emulator

Processor

OS

Page 42: Light and Dark side of Code Instrumentation

CONFidence Krakow 2012 42

Instrumentation & Bochs• Bochs can be called with instrumentation support.

• C++ callbacks occur when certain events happen:– Poweron/Reset/Shutdown;– Branch Taken/Not Taken/Unconditional;– Opcode Decode (All relevant fields, lengths);– Interrupt /Exception;– Cache /TLB Flush/Prefetch;– Memory Read/Write.

• “bochs-python-instrumentation” patch by Ero Carrera

www.dsecrg.com

Page 43: Light and Dark side of Code Instrumentation

CONFidence Krakow 2012 43

Virtualization

www.dsecrg.com

App1 OS

VMM

Processor

App1 OS

VMM

Processor

OS

Native VMM Hosted VMM

*VMM - Virtual Machine Monitor

Page 44: Light and Dark side of Code Instrumentation

CONFidence Krakow 2012 44

Instrumentation & virtualizationStages:1. Save the VM-exit reason information in the VMCS;2. Save guest context information;3. Load the host-state area;4. Transfer control to the hypervisor;5. Run own code.

*VMCS - Virtual Machine Control Structure

www.dsecrg.com

Page 45: Light and Dark side of Code Instrumentation

CONFidence Krakow 2012 45

Instrumentation in Mobile World

Mobile Platform Language Executable file format

Android Java Dex

iOS Objective-C Mach-O

Windows Phone .NET PE

www.dsecrg.com

Page 46: Light and Dark side of Code Instrumentation

CONFidence Krakow 2012 46

Conclusion

www.dsecrg.com

One can implement instrumentation of everything!

Page 47: Light and Dark side of Code Instrumentation

CONFidence Krakow 2012 47

Contact

Twitter: @evdokimovdsE-mail: [email protected]

www.dsecrg.com