scalable, behavior-based malware clustering

36
Scalable, Behavior- Based Malware Clustering Ulrich Bayer ,Paolo Milani Comparetti ,Clemens Hlauschek ,Christopher Kruegel , and Engin Kirda Technical University Vienna University of California , Santa Brabara Institute Eurecom, Sophia Antipolis 2009.10.21 by Mike Hsiao 2009 NDSS

Upload: emmy

Post on 09-Feb-2016

64 views

Category:

Documents


6 download

DESCRIPTION

2009 NDSS. Scalable, Behavior-Based Malware Clustering. Ulrich Bayer ,Paolo Milani Comparetti ,Clemens Hlauschek ,Christopher Kruegel , and Engin Kirda Technical University Vienna University of California , Santa Brabara Institute Eurecom , Sophia Antipolis. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Scalable, Behavior-Based Malware Clustering

Scalable, Behavior-Based Malware ClusteringUlrich Bayer ,Paolo Milani Comparetti ,Clemens Hlauschek ,Christopher Kruegel , and Engin Kirda

Technical University Vienna

University of California , Santa Brabara

Institute Eurecom, Sophia Antipolis

2009.10.21 by Mike Hsiao

2009 NDSS

Page 2: Scalable, Behavior-Based Malware Clustering

2

OutlineIntroductionSystem OverviewDynamic AnalysisBehavior ProfileScalable ClusteringEvaluationLimitations and Future WorkRelated Work

Page 3: Scalable, Behavior-Based Malware Clustering

3

IntroductionThousands of new malware samples appear each day.Automatic analysis systems allow us to create thousands of

analysis reports.Now a way to group the reports is needed. We would like to

cluster them into sets of malware reports that exhibit similar behavior.◦ We require automated clustering techniques.

Clustering allows us to◦ discard reports of samples that have been seen before◦ guide an analyst in the selection of those samples that require most

attention◦ derive generalized signatures, implement removal procedures that

work for a whole class of samples

Page 4: Scalable, Behavior-Based Malware Clustering

4

Scalable, Behavior-Based Malware ClusteringMalware Clustering: Find a partitioning of a given set of

malware samples into subsets so that subsets share some common traits (i.e., find “virus families”)

Behavior-Based: A malware sample is represented by its actions performed at run-time.

Scalable: It has to work for large sets of malware samples.

Page 5: Scalable, Behavior-Based Malware Clustering

5

System Overview

Page 6: Scalable, Behavior-Based Malware Clustering

6

Dynamic AnalysisBased on our existing automatic, dynamic analysis

system called Anubis (based on Qemu).◦ Anubis is a full-system emulator.◦ Anubis generates an execution trace listing all invoked

system calls.In this work, we extended Anubis with:

◦ system call dependencies (Tainting)◦ control flow dependencies◦ network analysis (for accurately describing a sample’s

network behavior)Output of this step: Execution trace augmented

with taint information and network analysis results.

Page 7: Scalable, Behavior-Based Malware Clustering

7

Dynamic Analysis (cont’d)The goal is to identify how the program

uses information that it obtains from the OS.

Tainting system◦We attach (taint) labels to certain interesting

bytes in memory and propagate these labels whenever they are copied or otherwise manipulated.

◦System calls serves as taint source. I.e., we taint the out-arguments and return values of all

system calls.

Page 8: Scalable, Behavior-Based Malware Clustering

8

Dynamic Analysis (cont’d)Example

◦1) get the return value of GetDate, and then it is used in CreateFile call.

◦2) a program reads its own code segment might be a worm propagation code.

Record program control flow◦ identify similarities between programs that perform

the same actionsNetwork

◦use Bro to analyze the sent/received data to recognize and parse application level protocols.

Page 9: Scalable, Behavior-Based Malware Clustering

9

Extraction Of The Behavioral Profile In this step, we process the execution trace provided by

the ‘dynamic analysis’ step.Goal: abstract from the system call trace

◦ system calls can vary significantly, even between programs that exhibit the same behavior

◦ remove execution-specific artifacts from the trace

A behavioral profile is an abstraction of the program‘s execution trace that accurately captures the behavior of the binary.

Page 10: Scalable, Behavior-Based Malware Clustering

10

Reasons For An Abstract Behavioral DescriptionDifferent ways to read from a file

Different system calls with similar semantics◦ e.g., NtCreateProcess, NtCreateProcessEx

You can easily interleave the trace with unrelated calls:

f = fopen(“C:\\test”);read(f, 1);read(f, 1);read(f, 1);

f = fopen(“C:\\test”);read(f, 3);A: B:

f = fopen(“C:\\test”);read(f, 1);readRegValue(..);read(f, 1);

C:

Page 11: Scalable, Behavior-Based Malware Clustering

11

Elements Of A Behavioral Profile

OS Objects: represent a resource such as a file that can be manipulated via system calls◦ has a name and a type

OS Operations: generalization of a system call◦ carried out on an OS object◦ the order of operations is irrelevant◦ the number of operations on a certain resource does not matter

Object Dependencies: model dependencies between OS objects (e.g., a copy operation from a source file to a target file)◦ also reflect the true order of operations

Control Flow Dependencies: reflect how tainted data is used by the program (comparisons with tainted data)

Page 12: Scalable, Behavior-Based Malware Clustering

12

Example: Behavioral Profilesrc = NtOpenFile(“C:\\sample.exe”);// memory map the target filedst = NtCreateFile(“C:\\Windows\\” + GetTempFilename());dst_section = NtCreateSection(dst);char *base = NtMapViewOfSection(dst_section);while(len < length(src)) { *(base+len)=NtReadFile(src, 1); len++; }

Op | File | C:\sample.exe open:1, read:1Op | File | RANDOM_1 create:1Op | Section | RANDOM_1 open:1, map:1, mem_write: 1Dep | File | C:\sample.exe -> Section | RANDOM_1 read – mem_write

Page 13: Scalable, Behavior-Based Malware Clustering

13

Example: Behavioral Profilesrc = NtOpenFile(“C:\\sample.exe”);// memory map the target filedst = NtCreateFile(“C:\\Windows\\” + GetTempFilename());dst_section = NtCreateSection(dst);char *base = NtMapViewOfSection(dst_section);while(len < length(src)) { *(base+len)=NtReadFile(src, 1); len++; }

Op | File | C:\sample.exe open:1, read:1Op | File | RANDOM_1 create:1Op | Section | RANDOM_1 open:1, map:1, mem_write: 1Dep | File | C:\sample.exe -> Section | RANDOM_1 read – mem_write

Page 14: Scalable, Behavior-Based Malware Clustering

14

Example: Behavioral Profile

src = NtOpenFile(“C:\\sample.exe”);// memory map the target filedst = NtCreateFile(“C:\\Windows\\” + GetTempFilename());dst_section = NtCreateSection(dst);char *base = NtMapViewOfSection(dst_section);while(len < length(src)) { *(base+len)=NtReadFile(src, 1); len++; }

Op | File | C:\sample.exe open:1, read:1Op | File | RANDOM_1 create:1Op | Section | RANDOM_1 open:1, map:1, mem_write: 1Dep | File | C:\sample.exe -> Section | RANDOM_1 read – mem_write

Page 15: Scalable, Behavior-Based Malware Clustering

15

Example: Behavioral Profilesrc = NtOpenFile(“C:\\sample.exe”);// memory map the target filedst = NtCreateFile(“C:\\Windows\\” + GetTempFilename());dst_section = NtCreateSection(dst);char *base = NtMapViewOfSection(dst_section);while(len < length(src)) { *(base+len)=NtReadFile(src, 1); len++; }

Op | File | C:\sample.exe open:1, read:1Op | File | RANDOM_1 create:1Op | Section | RANDOM_1 open:1, map:1, mem_write: 1Dep | File | C:\sample.exe -> Section | RANDOM_1 read – mem_write

Page 16: Scalable, Behavior-Based Malware Clustering

16

Example: Behavioral Profilesrc = NtOpenFile(“C:\\sample.exe”);// memory map the target filedst = NtCreateFile(“C:\\Windows\\” + GetTempFilename());dst_section = NtCreateSection(dst);char *base = NtMapViewOfSection(dst_section);while(len < length(src)) { *(base+len)=NtReadFile(src, 1); len++; }

Op | File | C:\sample.exe open:1, read:1Op | File | RANDOM_1 create:1Op | Section | RANDOM_1 open:1, map:1, mem_write: 1Dep | File | C:\sample.exe -> Section | RANDOM_1 read – mem_write

Page 17: Scalable, Behavior-Based Malware Clustering

17

Example: Behavioral Profilesrc = NtOpenFile(“C:\\sample.exe”);// memory map the target filedst = NtCreateFile(“C:\\Windows\\” + GetTempFilename());dst_section = NtCreateSection(dst);char *base = NtMapViewOfSection(dst_section);while(len < length(src)) { *(base+len)=NtReadFile(src, 1); len++; }

Op | File | C:\sample.exe open:1, read:1Op | File | RANDOM_1 create:1Op | Section | RANDOM_1 open:1, map:1, mem_write: 1Dep | File | C:\sample.exe -> Section | RANDOM_1 read – mem_write

Page 18: Scalable, Behavior-Based Malware Clustering

18

Example: Behavioral Profilesrc = NtOpenFile(“C:\\sample.exe”);// memory map the target filedst = NtCreateFile(“C:\\Windows\\” + GetTempFilename());dst_section = NtCreateSection(dst);char *base = NtMapViewOfSection(dst_section);while(len < length(src)) { *(base+len)=NtReadFile(src, 1); len++; }

Op | File | C:\sample.exe open:1, read:1Op | File | RANDOM_1 create:1Op | Section | RANDOM_1 open:1, map:1, mem_write: 1Dep | File | C:\sample.exe -> Section | RANDOM_1 read – mem_write

Page 19: Scalable, Behavior-Based Malware Clustering

19

Example: Behavioral Profilesrc = NtOpenFile(“C:\\sample.exe”);// memory map the target filedst = NtCreateFile(“C:\\Windows\\” + GetTempFilename());dst_section = NtCreateSection(dst);char *base = NtMapViewOfSection(dst_section);while(len < length(src)) { *(base+len)=NtReadFile(src, 1); len++; }

Op | File | C:\sample.exe open:1, read:1Op | File | RANDOM_1 create:1Op | Section | RANDOM_1 open:1, map:1, mem_write: 1Dep | File | C:\sample.exe -> Section | RANDOM_1 read – mem_write

Page 20: Scalable, Behavior-Based Malware Clustering

20

Scalable Clustering Most clustering algorithms require to compute the distances

between all pairs of points => O(n2). We use LSH (locality sensitive hashing), a technique introduced by

Indyk and Motwani, to compute an approximate clustering that requires less than n2 distance computations.

Our clustering algorithm takes as input a set of malware samples where each malware sample is represented as a set of features.◦ We have to transform each behavioral profile into a feature set first

Consider a and b are two samples. Our similarity measure: Jaccard Index defined as

Page 21: Scalable, Behavior-Based Malware Clustering

21

LSH ClusteringWe are performing an approximate, single-

linkage hierarchical clustering:

Step 1: Locality Sensitive Hashing◦ to cluster a set of samples we have to choose a

similarity threshold t◦ the result is an approximation of the true set of all

near (as defined by the parameter t) pairsStep 2: Single-Linkage hierarchical clustering

Page 22: Scalable, Behavior-Based Malware Clustering

22

Evaluating Clustering Quality For assessing the quality of the clustering algorithm, we compare

our clustering results with a reference clustering of the same sample set◦ since no reference clustering for malware exists, we had to create it first

Reference Clustering:

1. we obtained a random sampling of 14,212 malware samples that were submitted to Anubis from Oct. 27th 2007 to Jan. 31st 2008

2. we scanned each sample with 6 different virus scanners

3. we selected only those samples for which the majority of the antivirus programs reported the same malware family. This resulted in a total of 2,658 samples.

4. we manually corrected classification problems

Page 23: Scalable, Behavior-Based Malware Clustering

23

Quantitative EvaluationWe ran our clustering algorithm with a similarity

threshold t = 0.7 on the reference set of 2,658 samples.Our system produced 87 clusters while the reference

clustering consists of 84 clusters.

Precision: 0.984◦ precision measures how well a clustering algorithm distinguishes

between samples that are different

Recall: 0.930◦ recall measures how well a clustering algorithm recognizes

similar samples

c

j

tjjjj

Pn

P

TCTCTCP

1

21

1

|)|,|,||,max(|

r

j

jcjjj

Rn

R

TCTCTCR

1

21

1

|)|,|,||,max(|

T: reference clusteringC: authors’ clustering

Page 24: Scalable, Behavior-Based Malware Clustering

24

Comparative EvaluationBehavioralDescription

Similarity Measure

Clustering

Quality=precision*recall

Bailey-profile

NCD Exact 0.916 =0.979*0.935

Bailey-profile

JaccardIndex

Exact 0.801 =0.971*0.825

Syscalls JaccardIndex

Exact 0.656 =0.874*0.750

Our Profile

JaccardIndex

Exact 0.959 =0.977*0.981

Our Profile

JaccardIndex

LSH 0.959 =0.979*0.980NCD: Normalized Compression Distance

LSH: Locality Sensitive HashingExact: all n*n/2 distance are computed

Page 25: Scalable, Behavior-Based Malware Clustering

25

Precision and Recall

t

The relationship between Precision/Recall and threshold t.

Page 26: Scalable, Behavior-Based Malware Clustering

26

Performance EvaluationInput: 75,692 malware samples

Previous work by Bailey et al (extrapolated from their results of 500 samples):◦Number of distance calculations: 2,864,639,432◦Time for a single distance calculation: 1.25 ms◦Runtime: 995 hours (~ 6 weeks)

Our results:◦Number of distance calculations: 66,528,049◦Runtime: 2h 18min

Page 27: Scalable, Behavior-Based Malware Clustering

27

Performance Evaluation

Page 28: Scalable, Behavior-Based Malware Clustering

28

More results4 largest cluster (account for 86% of all samples)

◦Allaple.1 (1,289 samples) a polymorphic worm with ICMP scans

◦Allaple.2 (717 samples) exploit the target systems using a wider variety of

propagation behavior with DNS lookup

◦DOS (179 samples) This cluster contains various DOS malware sample but with

similar behavior

◦GBDialer.j (106 samples) similar startup actions and system modification with

attempting modem dial

Page 29: Scalable, Behavior-Based Malware Clustering

29

More resultSimilar register key access to check if anti-

virus system is installed.Compare fixed value with system time.

◦to launch a specific action at specific timeWrong cluster (one cluster with 25 samples)

◦sample crash◦cause debugger activate◦generate crash report◦display popup message

Page 30: Scalable, Behavior-Based Malware Clustering

30

Limitations and Future WorkTrace Dependence

◦more behavior might be hidden in other execution context.

Evasion◦We are not interested in labor-intensive, manual

evasion.◦We consider adversary who attempts to

automatically produce an arbitrary number of mutations of a malware sample in such a way that most such mutations are assigned to different clusters by our tools.

Page 31: Scalable, Behavior-Based Malware Clustering

31

Related WorkBehavioral Analysis

◦All of them focus on system call analysis.Dynamic Data Tainting

◦Recently, dynamic taint analysis has been also used for the automatic analysis of network protocol. [18] D. Song, “Polylot: Automatic Extraction of Protocol

Message Format using Dynamic Binary Analysis,” in CCS 2007.

[43] C. Kruegel, “Automatic Network Protocol Analysis,” in NDSS 2008.

◦But they focus on protocol format or syntax analysis, not execution behavior.

Page 32: Scalable, Behavior-Based Malware Clustering

32

ConclusionsNovel approach for clustering large collections of

malware samples◦ dynamic analysis◦ extraction of behavioral profiles◦ clustering algorithm that requires less than a quadratic

amount of distance calculations

Experiments on real-world datasets that demonstrate that our techniques can accurately recognize malicious code that behaves in a similar fashion

Available online: http://anubis.iseclab.org

Page 33: Scalable, Behavior-Based Malware Clustering

33

Coding for profile),,,,,,,( CmpLabelCmpValueCLCVOPOP

Page 34: Scalable, Behavior-Based Malware Clustering

34

Example of profile

Page 35: Scalable, Behavior-Based Malware Clustering

35

Example: Behavioral Profilesrc = NtOpenFile(“C:\\sample.exe”);// memory map the target filedst = NtCreateFile(“C:\\Windows\\” + GetTempFilename());dst_section = NtCreateSection(dst);char *base = NtMapViewOfSection(dst_section);while(len < length(src)) { *(base+len)=NtReadFile(src, 1); len++; }

Op | File | C:\sample.exe open:1, read:1Op | File | RANDOM_1 create:1Op | Section | RANDOM_1 open:1, map:1, mem_write: 1Dep | File | C:\sample.exe -> Section | RANDOM_1 read – mem_write

Page 36: Scalable, Behavior-Based Malware Clustering

Coding for Cluster

36

),,,,,,,( CmpLabelCmpValueCLCVOPOP

transform into a set of features

1. For each object , and for each operation

2. For each dependence

3. For each label-value comparison

4. For each label-label comparison