Top Banner
Static Analysis of Binaries for Malicious Code Detection Mihai Christodorescu, Somesh Jha {mihai,jha}@cs.wisc.edu University of Wisconsin, Madison
39

Static Analysis of Binaries for Malicious Code Detection€¦ · Vanilla virus Signatures Regex signatures Packing/encryption Emulation/heuristics Register renaming ... Chernobyl-1.4

Oct 16, 2020

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Static Analysis of Binaries for Malicious Code Detection€¦ · Vanilla virus Signatures Regex signatures Packing/encryption Emulation/heuristics Register renaming ... Chernobyl-1.4

Static Analysis of Binaries for Malicious Code Detection

Mihai Christodorescu, Somesh Jha{mihai,jha}@cs.wisc.edu

University of Wisconsin, Madison

Page 2: Static Analysis of Binaries for Malicious Code Detection€¦ · Vanilla virus Signatures Regex signatures Packing/encryption Emulation/heuristics Register renaming ... Chernobyl-1.4

Mihai Christodorescu [email protected] Project http://www.cs.wisc.edu/wisaAugust 7, 2003 Page 2

Arms RaceSignaturesVanilla virus

Regex signatures

Emulation/heuristicsPacking/encryption

Register renaming

Code reordering

Code integration

?

?

Page 3: Static Analysis of Binaries for Malicious Code Detection€¦ · Vanilla virus Signatures Regex signatures Packing/encryption Emulation/heuristics Register renaming ... Chernobyl-1.4

Mihai Christodorescu [email protected] Project http://www.cs.wisc.edu/wisaAugust 7, 2003 Page 3

Dismal State of the Art

Chernobyl-1.4

f0sf0r0

Hare

z0mbie-6.b

Commercial antivirus tools vs. morphed versions of known viruses

Not detected

Not detected

Not detected

Not detected

Not detected

Not detected

Not detected

Not detected

Not detected

Not detected

Not detected

Not detected

Obfuscations used in morphing: NOP insertion, code reordering

Page 4: Static Analysis of Binaries for Malicious Code Detection€¦ · Vanilla virus Signatures Regex signatures Packing/encryption Emulation/heuristics Register renaming ... Chernobyl-1.4

Mihai Christodorescu [email protected] Project http://www.cs.wisc.edu/wisaAugust 7, 2003 Page 4

Worst-Case Scenario

• Each infection generates a worm morphed differently

Page 5: Static Analysis of Binaries for Malicious Code Detection€¦ · Vanilla virus Signatures Regex signatures Packing/encryption Emulation/heuristics Register renaming ... Chernobyl-1.4

Mihai Christodorescu [email protected] Project http://www.cs.wisc.edu/wisaAugust 7, 2003 Page 5

Clear Danger

• Unlimited variants can be cheaply generated– Practically undetectable

• Obfuscations: part of the virus propagation step

Threat of highly mobile, highlymorphing malicious code

Page 6: Static Analysis of Binaries for Malicious Code Detection€¦ · Vanilla virus Signatures Regex signatures Packing/encryption Emulation/heuristics Register renaming ... Chernobyl-1.4

Mihai Christodorescu [email protected] Project http://www.cs.wisc.edu/wisaAugust 7, 2003 Page 6

Loop:pop ecx

jecxz SFModMark

mov esi, ecx

mov eax, 0d601hpop edxpop ecx

call edi

jmp Loop

Morphed Virus Code:

nop

xor ebx, ebxbeqz N1

N1:nop

nop

xor ebx, ebxbeqz N2

N2:

Obfuscation Example

Loop:pop ecxjecxz SFModMarkmov esi, ecxmov eax, 0d601hpop edxpop ecxcall edijmp Loop

Virus Code

(from Chernobyl CIH 1.4):

Page 7: Static Analysis of Binaries for Malicious Code Detection€¦ · Vanilla virus Signatures Regex signatures Packing/encryption Emulation/heuristics Register renaming ... Chernobyl-1.4

Mihai Christodorescu [email protected] Project http://www.cs.wisc.edu/wisaAugust 7, 2003 Page 7

Obfuscation ExampleLoop:

pop ecxnop

call edixor ebx, ebxbeqz N2

N2: jmp Loop

nopmov eax, 0d601hpop edxpop ecxnop

jecxz SFModMarkxor ebx, ebxbeqz N1

N1: mov esi, ecx

Morphed Virus Code:

Loop:pop ecxjecxz SFModMarkmov esi, ecxmov eax, 0d601hpop edxpop ecxcall edijmp Loop

Virus Code

(from Chernobyl CIH 1.4):

Page 8: Static Analysis of Binaries for Malicious Code Detection€¦ · Vanilla virus Signatures Regex signatures Packing/encryption Emulation/heuristics Register renaming ... Chernobyl-1.4

Mihai Christodorescu [email protected] Project http://www.cs.wisc.edu/wisaAugust 7, 2003 Page 8

Obfuscation ExampleLoop:

pop ecxnopjmp L1

L3: call edixor ebx, ebxbeqz N2

N2: jmp Loopjmp L4

L2: nopmov eax, 0d601hpop edxpop ecxnopjmp L3

L1: jecxz SFModMarkxor ebx, ebxbeqz N1

N1: mov esi, ecxjmp L2

L4:

Morphed Virus Code:

Loop:pop ecxjecxz SFModMarkmov esi, ecxmov eax, 0d601hpop edxpop ecxcall edijmp Loop

Virus Code

(from Chernobyl CIH 1.4):

Page 9: Static Analysis of Binaries for Malicious Code Detection€¦ · Vanilla virus Signatures Regex signatures Packing/encryption Emulation/heuristics Register renaming ... Chernobyl-1.4

Mihai Christodorescu [email protected] Project http://www.cs.wisc.edu/wisaAugust 7, 2003 Page 9

Code Integration

• Integration of virus and programVirusProgram

Page 10: Static Analysis of Binaries for Malicious Code Detection€¦ · Vanilla virus Signatures Regex signatures Packing/encryption Emulation/heuristics Register renaming ... Chernobyl-1.4

Mihai Christodorescu [email protected] Project http://www.cs.wisc.edu/wisaAugust 7, 2003 Page 10

Our Solution

Better virus scanner:• Analyze the program

semantic structure– Control flow– Data flow

• Build on existing static analyses

Page 11: Static Analysis of Binaries for Malicious Code Detection€¦ · Vanilla virus Signatures Regex signatures Packing/encryption Emulation/heuristics Register renaming ... Chernobyl-1.4

Mihai Christodorescu [email protected] Project http://www.cs.wisc.edu/wisaAugust 7, 2003 Page 11

Overview

• Threats• Current detection limitations• Detector design and architecture• Sample detection• Performance• Future work and conclusions

Page 12: Static Analysis of Binaries for Malicious Code Detection€¦ · Vanilla virus Signatures Regex signatures Packing/encryption Emulation/heuristics Register renaming ... Chernobyl-1.4

Mihai Christodorescu [email protected] Project http://www.cs.wisc.edu/wisaAugust 7, 2003 Page 12

Design Goals

• Static analysis– Provides safe results: identifies possible

malicious sequences– Immune to anti-emulation techniques

• Identify malicious intent– Same behavior can be achieved through

many implementations

Page 13: Static Analysis of Binaries for Malicious Code Detection€¦ · Vanilla virus Signatures Regex signatures Packing/encryption Emulation/heuristics Register renaming ... Chernobyl-1.4

Mihai Christodorescu [email protected] Project http://www.cs.wisc.edu/wisaAugust 7, 2003 Page 13

Static Analysis of Binaries

• Detection is as good as the static analyses available– More predicates better detection– Better predicates fewer false alarms

Example: pointer analysis (P.A.)– No P.A.: it is safe to assume all pointers

point to all memory locations– With P.A.: reduced cost to attain safety

Page 14: Static Analysis of Binaries for Malicious Code Detection€¦ · Vanilla virus Signatures Regex signatures Packing/encryption Emulation/heuristics Register renaming ... Chernobyl-1.4

Mihai Christodorescu [email protected] Project http://www.cs.wisc.edu/wisaAugust 7, 2003 Page 14

Architecture

Malicious CodeBlueprint

Programto analyze

PatternLibrary

Annotator

AnnotatedProgram Detector

Yes/No

IDA Pro + CodeSurfer +

custom analysis code Custom-

built

Program infected with obfuscated

virus

Page 15: Static Analysis of Binaries for Malicious Code Detection€¦ · Vanilla virus Signatures Regex signatures Packing/encryption Emulation/heuristics Register renaming ... Chernobyl-1.4

Mihai Christodorescu [email protected] Project http://www.cs.wisc.edu/wisaAugust 7, 2003 Page 15

Infection:

Vanilla Virus

Program

Page 16: Static Analysis of Binaries for Malicious Code Detection€¦ · Vanilla virus Signatures Regex signatures Packing/encryption Emulation/heuristics Register renaming ... Chernobyl-1.4

Mihai Christodorescu [email protected] Project http://www.cs.wisc.edu/wisaAugust 7, 2003 Page 16

Detection: 1) Virus Blueprint

Vanilla Virus

Virus Specification

Page 17: Static Analysis of Binaries for Malicious Code Detection€¦ · Vanilla virus Signatures Regex signatures Packing/encryption Emulation/heuristics Register renaming ... Chernobyl-1.4

Mihai Christodorescu [email protected] Project http://www.cs.wisc.edu/wisaAugust 7, 2003 Page 17

Detection: 2) DeobfuscationProgram

1. Detect code reordering

Page 18: Static Analysis of Binaries for Malicious Code Detection€¦ · Vanilla virus Signatures Regex signatures Packing/encryption Emulation/heuristics Register renaming ... Chernobyl-1.4

Mihai Christodorescu [email protected] Project http://www.cs.wisc.edu/wisaAugust 7, 2003 Page 18

Detection: 2) DeobfuscationProgram

1. Detect code reordering

2. Detect register renaming

Page 19: Static Analysis of Binaries for Malicious Code Detection€¦ · Vanilla virus Signatures Regex signatures Packing/encryption Emulation/heuristics Register renaming ... Chernobyl-1.4

Mihai Christodorescu [email protected] Project http://www.cs.wisc.edu/wisaAugust 7, 2003 Page 19

Detection: 2) DeobfuscationProgram

1. Detect code reordering

2. Detect register renaming

3. Detect irrelevant code

Page 20: Static Analysis of Binaries for Malicious Code Detection€¦ · Vanilla virus Signatures Regex signatures Packing/encryption Emulation/heuristics Register renaming ... Chernobyl-1.4

Mihai Christodorescu [email protected] Project http://www.cs.wisc.edu/wisaAugust 7, 2003 Page 20

What is irrelevant code?• Code does not change program behavior:

– NOPs– Jumps/branches that do not change the control

flow– Code that modifies dead registers– Code that do not modify the program state

• e.g.: add ebx, 1sub ebx, 1

• Theorem provers can be used to find irrelevant code

Page 21: Static Analysis of Binaries for Malicious Code Detection€¦ · Vanilla virus Signatures Regex signatures Packing/encryption Emulation/heuristics Register renaming ... Chernobyl-1.4

Mihai Christodorescu [email protected] Project http://www.cs.wisc.edu/wisaAugust 7, 2003 Page 21

Detection: 3) MatchingAnnotated Program

Virus Specification

Page 22: Static Analysis of Binaries for Malicious Code Detection€¦ · Vanilla virus Signatures Regex signatures Packing/encryption Emulation/heuristics Register renaming ... Chernobyl-1.4

Mihai Christodorescu [email protected] Project http://www.cs.wisc.edu/wisaAugust 7, 2003 Page 22

Detection in Theory

General detection problem is undecidable:Cohen Computer viruses: Theory and experiments (Computers and Security 1987)Chess, White An undetectable computer virus (VBC’00)

Static analysis is undecidable as well:Landi Undecidability of static analysis (LOPLAS’92)

☺ (Computationally-bound) obfuscation is impossibleBarak, Goldreich, Impagliazzo, Rudich, Sahai, Vadhan, Yang On the (im)possibility of obfuscating programs (CRYPTO’01)

Page 23: Static Analysis of Binaries for Malicious Code Detection€¦ · Vanilla virus Signatures Regex signatures Packing/encryption Emulation/heuristics Register renaming ... Chernobyl-1.4

Mihai Christodorescu [email protected] Project http://www.cs.wisc.edu/wisaAugust 7, 2003 Page 23

Detection in Practice

• Our approach is geared to common obfuscations in the wild

• Detection algorithm is matched against current obfuscation threats– Can handle more variants than signatures

Page 24: Static Analysis of Binaries for Malicious Code Detection€¦ · Vanilla virus Signatures Regex signatures Packing/encryption Emulation/heuristics Register renaming ... Chernobyl-1.4

Mihai Christodorescu [email protected] Project http://www.cs.wisc.edu/wisaAugust 7, 2003 Page 24

Building block: Patterns

Two components:1. sequence of instructions2. predicate controlling pattern

application• Predicates use static analysis

results

Page 25: Static Analysis of Binaries for Malicious Code Detection€¦ · Vanilla virus Signatures Regex signatures Packing/encryption Emulation/heuristics Register renaming ... Chernobyl-1.4

Mihai Christodorescu [email protected] Project http://www.cs.wisc.edu/wisaAugust 7, 2003 Page 25

Pattern:instr 1

instr N

whereDelta( state pre 1, state post N ) = 0

Defeating Garbage Insertion

<instruction A><instruction B>

<instruction A>add ebx, 1sub ebx, 1nop<instruction B>

Page 26: Static Analysis of Binaries for Malicious Code Detection€¦ · Vanilla virus Signatures Regex signatures Packing/encryption Emulation/heuristics Register renaming ... Chernobyl-1.4

Mihai Christodorescu [email protected] Project http://www.cs.wisc.edu/wisaAugust 7, 2003 Page 26

Matches both Programs 1 and 2

Defeating Register Renaming

• Use uninterpreted symbols

mov ebp, [ebx]nopmov bp, [ebx-04h]test ebxbeqz next

next: lea esi, MyHook - @1[ecx]

mov eax, [ecx]nopmov ax, [ecx-04h]test edxbeqz next

next: lea ebi, MyHook - @1[ebx]

Program 1: Program 2:

Virus Spec:mov ebp, [ebx] No match with Program 2

Virus Spec with Uninterpreted Symbols:mov X, [Y]

Page 27: Static Analysis of Binaries for Malicious Code Detection€¦ · Vanilla virus Signatures Regex signatures Packing/encryption Emulation/heuristics Register renaming ... Chernobyl-1.4

Mihai Christodorescu [email protected] Project http://www.cs.wisc.edu/wisaAugust 7, 2003 Page 27

Defeating Code Reordering

<instruction A><instruction B>

jmp L_1L_2: <instruction B>

jmp L_3L_1: <instruction A>

jmp L_2L_3: …

Page 28: Static Analysis of Binaries for Malicious Code Detection€¦ · Vanilla virus Signatures Regex signatures Packing/encryption Emulation/heuristics Register renaming ... Chernobyl-1.4

Mihai Christodorescu [email protected] Project http://www.cs.wisc.edu/wisaAugust 7, 2003 Page 28

Defeating Code Reorderingjmp L_1

L_2: <instruction B>jmp L_3

L_1: <instruction A>jmp L_2

L_3: …

Construct CFG:jmp L_1

<instruction A>

jmp L_2

<instruction B>

jmp L_3

Page 29: Static Analysis of Binaries for Malicious Code Detection€¦ · Vanilla virus Signatures Regex signatures Packing/encryption Emulation/heuristics Register renaming ... Chernobyl-1.4

Mihai Christodorescu [email protected] Project http://www.cs.wisc.edu/wisaAugust 7, 2003 Page 29

Defeating Code Reordering

jmp L_1

<instruction A>

jmp L_2

<instruction B>

jmp L_3

Pattern:jmp TARGET

whereCount( CFGPredecessors( TARGET ) ) = 1

<instruction A>

<instruction B>

Page 30: Static Analysis of Binaries for Malicious Code Detection€¦ · Vanilla virus Signatures Regex signatures Packing/encryption Emulation/heuristics Register renaming ... Chernobyl-1.4

Mihai Christodorescu [email protected] Project http://www.cs.wisc.edu/wisaAugust 7, 2003 Page 30

Prototype Implementation• The detection tool can handle:

NOP-insertionCode reordering (irrelevant jumps and branches)Register renaming

• Work in progress to detect:– Malicious code split across procedures

(need inter-procedural analysis)– Obfuscations using complex data structures

(need integration with pointer analyses)

Page 31: Static Analysis of Binaries for Malicious Code Detection€¦ · Vanilla virus Signatures Regex signatures Packing/encryption Emulation/heuristics Register renaming ... Chernobyl-1.4

Mihai Christodorescu [email protected] Project http://www.cs.wisc.edu/wisaAugust 7, 2003 Page 31

Testing Setup

Goals:• Measure true negatives and false positives

– Scan a representative collection of benign programs

• Measure true positives and false negatives– Scan a set of viruses obfuscated with various

parameters• Measure performance

Page 32: Static Analysis of Binaries for Malicious Code Detection€¦ · Vanilla virus Signatures Regex signatures Packing/encryption Emulation/heuristics Register renaming ... Chernobyl-1.4

Mihai Christodorescu [email protected] Project http://www.cs.wisc.edu/wisaAugust 7, 2003 Page 32

ResultsEffectiveness:

False positive rate: 0All benign programs passed the scans.

False negative rate: 0All obfuscated viruses were detected.But there are obfuscations we cannot yet

detect.

Page 33: Static Analysis of Binaries for Malicious Code Detection€¦ · Vanilla virus Signatures Regex signatures Packing/encryption Emulation/heuristics Register renaming ... Chernobyl-1.4

Mihai Christodorescu [email protected] Project http://www.cs.wisc.edu/wisaAugust 7, 2003 Page 33

Performance

1

100

10000

tiffdither(6656)

winmine(12120)

spyxx(307200)

QuickTimePlayer(499712)

Tim

e (s

econ

ds)

Detector avg.Annotator avg.

7.363

17.950

224.584

959.913

Page 34: Static Analysis of Binaries for Malicious Code Detection€¦ · Vanilla virus Signatures Regex signatures Packing/encryption Emulation/heuristics Register renaming ... Chernobyl-1.4

Mihai Christodorescu [email protected] Project http://www.cs.wisc.edu/wisaAugust 7, 2003 Page 34

Performance Implications

• Combine with other techniques to amortize cost

E.g.: Secure checksum database

InternetScanner Disk

Checksum DB

New program

Checksum

Page 35: Static Analysis of Binaries for Malicious Code Detection€¦ · Vanilla virus Signatures Regex signatures Packing/encryption Emulation/heuristics Register renaming ... Chernobyl-1.4

Mihai Christodorescu [email protected] Project http://www.cs.wisc.edu/wisaAugust 7, 2003 Page 35

Performance Implications

• Combine with other techniques to amortize cost

E.g.: Secure checksum database

InternetScanner Disk

Checksum DBChecksum

Existing program

Page 36: Static Analysis of Binaries for Malicious Code Detection€¦ · Vanilla virus Signatures Regex signatures Packing/encryption Emulation/heuristics Register renaming ... Chernobyl-1.4

Mihai Christodorescu [email protected] Project http://www.cs.wisc.edu/wisaAugust 7, 2003 Page 36

Future Directions

• New languages– Scripts: Visual Basic (in progress), ASP,

JavaScript– Multi-language malicious code

• Attack diversity– Beyond virus patterns: worms, trojans

• Irrelevant sequence detection– Decision procedures– Theorem provers

Page 37: Static Analysis of Binaries for Malicious Code Detection€¦ · Vanilla virus Signatures Regex signatures Packing/encryption Emulation/heuristics Register renaming ... Chernobyl-1.4

Mihai Christodorescu [email protected] Project http://www.cs.wisc.edu/wisaAugust 7, 2003 Page 37

Conclusions

Viruses can self-modify as they propagate.

Current virus scanners cannot detectsuch malware.

Our semantic analysis can defeat obfuscations and detect viruses.

Page 38: Static Analysis of Binaries for Malicious Code Detection€¦ · Vanilla virus Signatures Regex signatures Packing/encryption Emulation/heuristics Register renaming ... Chernobyl-1.4

Mihai Christodorescu [email protected] Project http://www.cs.wisc.edu/wisaAugust 7, 2003 Page 38

Related Work• Metacompilation:

Ashcraft, Engler Using programmer-written compiler extensions to catch security holes (Oakland’02)

• Theorem proving for security properties:Chess Improving computer security using extended static checking

(Oakland’02)• Model checking programs for security properties:

Chen, Wagner MOPS: an infrastructure for examining security properties of software (CCS’02)

• Malicious code filter:Lo, Levitt, Olsson MCF: a malicious code filter (Computers and

Society 1995)• Inline reference monitors

Erlingsson, Schneider IRM enforcement of Java stack inspection(Oakland’00)

Page 39: Static Analysis of Binaries for Malicious Code Detection€¦ · Vanilla virus Signatures Regex signatures Packing/encryption Emulation/heuristics Register renaming ... Chernobyl-1.4

Static Analysis of Binaries for Malicious Code Detection

Mihai Christodorescu, Somesh Jha{mihai,jha}@cs.wisc.edu

University of Wisconsin, Madison

WiSA Projecthttp://www.cs.wisc.edu/wisa