light and dark side of code instrumentation

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

Post on 21-Oct-2014

1.244 views

Category:

Technology


4 download

DESCRIPTION

 

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

Positive Hack Days 2012 2

#whoami

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

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

Digital Security

Page 3: Light And Dark Side Of Code Instrumentation

Positive Hack Days 2012 3

Agenda

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

Digital Security

Page 4: Light And Dark Side Of Code Instrumentation

Positive Hack Days 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.”

Digital Security

Page 5: Light And Dark Side Of Code Instrumentation

Positive Hack Days 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

Digital Security

Page 6: Light And Dark Side Of Code Instrumentation

Positive Hack Days 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

Digital Security

Binary translation

Page 7: Light And Dark Side Of Code Instrumentation

Positive Hack Days 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

Forensic

Transparent debugging

Program shepherding

Security test case generation

Behavior based security

Digital Security

Security enforcement

Page 8: Light And Dark Side Of Code Instrumentation

Positive Hack Days 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

Digital Security

Page 9: Light And Dark Side Of Code Instrumentation

Positive Hack Days 2012 9

Code Discovery

0101010110101001010010

0101010101101010101010

1111010101110101000111

1011100111001010101011

0111010110100111100110

1010101101110001001011

Memory

Instr 1

Instr

Instr 7

Instr 8

Instr 10

Instr 3

jump reg

Instr 2

5

Instr 7 cont.

Instr 4

Instr 6

Instr 9

After static analysis Instr 1

DATA

Instr 5

PADDING

Instr 6

Instr 3

jump reg

Instr 2

Instr 4

jmp 0x0ABCD

After dynamic analysis

Digital Security

Page 10: Light And Dark Side Of Code Instrumentation

Positive Hack Days 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.

Digital Security

Page 11: Light And Dark Side Of Code Instrumentation

Positive Hack Days 2012 11

Source Data

Source data

Source code Byte code Binary code

Digital Security

Page 12: Light And Dark Side Of Code Instrumentation

Positive Hack Days 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

Digital Security

Page 13: Light And Dark Side Of Code Instrumentation

Positive Hack Days 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 =)

Digital Security

Page 14: Light And Dark Side Of Code Instrumentation

Positive Hack Days 2012 14

Unmoral programming

Digital Security

Page 15: Light And Dark Side Of Code Instrumentation

Positive Hack Days 2012 15

Byte code instrumentation

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

Java VM Dalvik VM AVM/AVM2 CLR

Digital Security

Page 16: Light And Dark Side Of Code Instrumentation

Positive Hack Days 2012 16

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

LoaderJIT

LibLib

Lib

Machine code

Compilation

Exec

ute

Load

Virtual machine

Digital Security

Page 17: Light And Dark Side Of Code Instrumentation

Positive Hack Days 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

Digital Security

Page 18: Light And Dark Side Of Code Instrumentation

Positive Hack Days 2012 18

Instrumentation Java (I)

Digital Security

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

Page 19: Light And Dark Side Of Code Instrumentation

Positive Hack Days 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

Digital Security

Page 20: Light And Dark Side Of Code Instrumentation

Positive Hack Days 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, CecilDigital Security

Page 21: Light And Dark Side Of Code Instrumentation

Positive Hack Days 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).

Digital Security

Page 22: Light And Dark Side Of Code Instrumentation

Positive Hack Days 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

Digital Security

Page 23: Light And Dark Side Of Code Instrumentation

Positive Hack Days 2012 23

Instrumentation ActionScript (I)

Digital Security

Original SWF file

Header Tags

AVM tag

InstrumentetedSWF file

Page 24: Light And Dark Side Of Code Instrumentation

Positive Hack Days 2012 24

Instrumentation AVM (II)

Digital Security

• 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

Positive Hack Days 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• …Digital Security

• 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

Positive Hack Days 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.

Digital Security

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

Positive Hack Days 2012 27

Static Binary Instrumentation (II)

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

Digital Security

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

Page 28: Light And Dark Side Of Code Instrumentation

Positive Hack Days 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”

Digital Security

App Debugger

Processor

OS

Page 29: Light And Dark Side Of Code Instrumentation

Positive Hack Days 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

Digital Security

App1 App2

Processor

OS

DBI

Page 30: Light And Dark Side Of Code Instrumentation

Positive Hack Days 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.

Digital Security

Page 31: Light And Dark Side Of Code Instrumentation

Positive Hack Days 2012 31

Kinds of DBI

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

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

Digital Security

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

PerformanceFu

nctio

nalit

y

JIT

Probe

Page 32: Light And Dark Side Of Code Instrumentation

Positive Hack Days 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

Digital Security

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

Page 33: Light And Dark Side Of Code Instrumentation

Positive Hack Days 2012 33

Start work with DBI

Digital Security

Page 34: Light And Dark Side Of Code Instrumentation

Positive Hack Days 2012 34

Levels of granularity

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

Digital Security

Page 35: Light And Dark Side Of Code Instrumentation

Positive Hack Days 2012 35

Self-modifying code & DBI

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

Digital Security

Page 36: Light And Dark Side Of Code Instrumentation

Positive Hack Days 2012 36

Overhead

O = 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.Digital Security

Page 37: Light And Dark Side Of Code Instrumentation

Positive Hack Days 2012 37

Rewriting instructions

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

Digital Security

Page 38: Light And Dark Side Of Code Instrumentation

Positive Hack Days 2012 38

Rewriting code (I)

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

Digital Security

Page 39: Light And Dark Side Of Code Instrumentation

Positive Hack Days 2012 39

Rewriting code (II)

• Hardcore example:– Mobile phone firmware rewriting

GSM

AMSSSHELLCODE 1

Bootloader

Flash

Malicious SMS

reboot

Baseband processorDigital Security

Page 40: Light And Dark Side Of Code Instrumentation

Positive Hack Days 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.

Digital Security

Page 41: Light And Dark Side Of Code Instrumentation

Positive Hack Days 2012 41

Emulation

Digital Security

App1 OS

Emulator

Processor

OS

Page 42: Light And Dark Side Of Code Instrumentation

Positive Hack Days 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 CarreraDigital Security

Page 43: Light And Dark Side Of Code Instrumentation

Positive Hack Days 2012 43

Virtualization

Digital Security

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

Positive Hack Days 2012 44

Instrumentation & virtualization

Stages: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

Digital Security

Page 45: Light And Dark Side Of Code Instrumentation

Positive Hack Days 2012 45

Instrumentation in Mobile World

Mobile Platform Language Executable file format

Android Java Dex

iOS Objective-C Mach-O

Windows Phone .NET PE

Digital Security

Page 46: Light And Dark Side Of Code Instrumentation

Positive Hack Days 2012 46

Conclusion

Digital Security

One can implement instrumentation of everything!

Page 47: Light And Dark Side Of Code Instrumentation

Positive Hack Days 2012 47

Contact

Twitter: @evdokimovdsE-mail: [email protected]

Digital Security