Download - "Быстрое обнаружение вредоносного ПО для Android с помощью машинного обучения". Юрий Леонычев, Яндекс

Transcript
Page 1: "Быстрое обнаружение вредоносного ПО для Android с помощью машинного обучения". Юрий Леонычев, Яндекс

1

Page 2: "Быстрое обнаружение вредоносного ПО для Android с помощью машинного обучения". Юрий Леонычев, Яндекс

2

Fast detection of Android malware

Yury Leonychev

Page 3: "Быстрое обнаружение вредоносного ПО для Android с помощью машинного обучения". Юрий Леонычев, Яндекс

3

Introduction

Page 4: "Быстрое обнаружение вредоносного ПО для Android с помощью машинного обучения". Юрий Леонычев, Яндекс

4

Android application

APK

Manifest

(AndroidManifest.xml)

Code (Classes.dex and

native)

Meta information

(META-INF)

Resources (files and

Resources.arsc)

Page 5: "Быстрое обнаружение вредоносного ПО для Android с помощью машинного обучения". Юрий Леонычев, Яндекс

5

Brief list of tools for APK analysis

! Androguard (ultimate tool by @adesnos and others) – used by VirusTotal, APKInspector, etc.

! SCanDroid (Adam P. Fuchs, Avik Chaudhuri, and Jeffrey S. Foster)

! TaintDroid (guys from Intel, Penn State University, Duke University)

! DroidBox (dynamic analysis by Lantz Patric) – used by ApkScan

Page 6: "Быстрое обнаружение вредоносного ПО для Android с помощью машинного обучения". Юрий Леонычев, Яндекс

6

Is this all? Really?

!  http://www.apk-analyzer.net !  http://anubis.iseclab.org !  http://apkscan.nviso.be

Page 7: "Быстрое обнаружение вредоносного ПО для Android с помощью машинного обучения". Юрий Леонычев, Яндекс

7

Our task is more complex

Malware detector

Page 8: "Быстрое обнаружение вредоносного ПО для Android с помощью машинного обучения". Юрий Леонычев, Яндекс

8

Methods of malware detection

Static analysis !  Advantages

–  APK has predictable content. Application behavior can be learned by simply reading the file

–  Checks are safe !  Limitations

–  Can be ineffective for sophisticated malware and obfuscation techniques –  We cannot really tell as we don't execute app

Page 9: "Быстрое обнаружение вредоносного ПО для Android с помощью машинного обучения". Юрий Леонычев, Яндекс

9

Methods of malware detection

Dynamic analysis !  Advantages

–  Clear results and interpretation

–  Open source solutions available

!  Limitations

–  Not fast (enough)

–  Can be detected and bypassed

–  Big ecosystem requires big infrastructure

Page 10: "Быстрое обнаружение вредоносного ПО для Android с помощью машинного обучения". Юрий Леонычев, Яндекс

10

Methods of malware detection

Signature analysis !  Advantages

–  Effective for known malware –  Commercial solutions available !  Limitations

–  Signature databases requires regular (and frequent) updates –  Not effective for new malware –  Do you have a team of virus analytics?

Page 11: "Быстрое обнаружение вредоносного ПО для Android с помощью машинного обучения". Юрий Леонычев, Яндекс

11

Methods of malware detection

Seems like the most efficient way is hybrid solution

Page 12: "Быстрое обнаружение вредоносного ПО для Android с помощью машинного обучения". Юрий Леонычев, Яндекс

12

MatrixNet

What is The Matrix?

Page 13: "Быстрое обнаружение вредоносного ПО для Android с помощью машинного обучения". Юрий Леонычев, Яндекс

13

Why can we use machine learning?

Abstract task description: !  We have a set of objects (APK-files). We should divide this set into two

subsets (malware and normal)

!  For every element in main set we can count predictable amount of features

!  Subsets – only result of simple classification task, so we can try to choose effective features

Page 14: "Быстрое обнаружение вредоносного ПО для Android с помощью машинного обучения". Юрий Леонычев, Яндекс

14

What is the MatrixNet?

MatrixNet is an implementation of gradient boosted decision trees algorithm MatrixNet is a bit different from standard: !  Using Oblivious Trees

!  Accounting for sample count in each leaf

Page 15: "Быстрое обнаружение вредоносного ПО для Android с помощью машинного обучения". Юрий Леонычев, Яндекс

15

Why MatrixNet is powerful?

!  This is machine learning algorithm for classification task

!  A key feature of this method is it’s resistance to overfitting

Page 16: "Быстрое обнаружение вредоносного ПО для Android с помощью машинного обучения". Юрий Леонычев, Яндекс

16

MatrixNet post learning optimization

Page 17: "Быстрое обнаружение вредоносного ПО для Android с помощью машинного обучения". Юрий Леонычев, Яндекс

17

MatrixNet post learning optimization

Copyright © 2013 by Sidney Harris.

Page 18: "Быстрое обнаружение вредоносного ПО для Android с помощью машинного обучения". Юрий Леонычев, Яндекс

18

How it works?

Offline learning process: !  Choosing features

!  Choosing samples

!  Manual classification (malware or not)

!  Learning on combined set of apps

!  Calculating mistakes

Page 19: "Быстрое обнаружение вредоносного ПО для Android с помощью машинного обучения". Юрий Леонычев, Яндекс

19

Features

What kind of features to use: !  Permissions

!  URI in strings and other resources

!  Adware library usage

!  Obfuscation methods

!  …

Page 20: "Быстрое обнаружение вредоносного ПО для Android с помощью машинного обучения". Юрий Леонычев, Яндекс

20

Samples and classification

Malware applications: ! VirusTotal feed !  Samples from malicious sites

Normal applications: !  Manual testing !  Trusted developers !  Yandex applications

Page 21: "Быстрое обнаружение вредоносного ПО для Android с помощью машинного обучения". Юрий Леонычев, Яндекс

21

Formula

Features weight

Features cost

Learning

Normal

Malware

MatrixNet Features  

Page 22: "Быстрое обнаружение вредоносного ПО для Android с помощью машинного обучения". Юрий Леонычев, Яндекс

22

Measuring of mistakes

Formula 1

Features cost 1

Formula N

Features cost N

Normal

Malware

Formula with cool confusion matrix and low cost

Page 23: "Быстрое обнаружение вредоносного ПО для Android с помощью машинного обучения". Юрий Леонычев, Яндекс

23

Analyzer architecture

Fine! I'll go build my own casino, with blackjack and big data

Page 24: "Быстрое обнаружение вредоносного ПО для Android с помощью машинного обучения". Юрий Леонычев, Яндекс

24

Main parts

Parsers Analyzers

Oracle Report

Page 25: "Быстрое обнаружение вредоносного ПО для Android с помощью машинного обучения". Юрий Леонычев, Яндекс

25

Parsers

In depth APK

ManifestParser ResourceParser MetaInfoParser ClassesParser

Analyzers

PermissionAnalyzer PackageAnalyzer URLAnalyzer ReflectionAnalyzer

Reports

XHTMLReporter JSONReporter

Oracle

MatrixNet

Page 26: "Быстрое обнаружение вредоносного ПО для Android с помощью машинного обучения". Юрий Леонычев, Яндекс

26

ManifestParser

Avoid some obfuscation methods: ! HEUR:Backdoor.AndroidOS.Obad.a

Page 27: "Быстрое обнаружение вредоносного ПО для Android с помощью машинного обучения". Юрий Леонычев, Яндекс

27

<?xml version="1.0" encoding="utf-8"?> <manifest ="singleTop" android:versionCode="2" ="2.0" android:installLocation="internalOnly" package="com.android.system.admin" xmlns:android="http://schemas.android.com/apk/res/android"> <uses-permission ="android.permission.READ_LOGS" /> <uses-permission ="android.permission.WAKE_LOCK" /> … <uses-permission ="android.permission.RECEIVE_SMS" /> <uses-permission ="android.permission.SEND_SMS" /> <uses-permission ="android.permission.CALL_PHONE" />

ManifestParser

Page 28: "Быстрое обнаружение вредоносного ПО для Android с помощью машинного обучения". Юрий Леонычев, Яндекс

28

ClassesParser

!  Parser for DEX files

!  Internal DEX disassembler

!  Callgraph builder

!  Embeds “real” functions/variables names into disassembly listing

!  Builds a list of used procedures and functions

Page 29: "Быстрое обнаружение вредоносного ПО для Android с помощью машинного обучения". Юрий Леонычев, Яндекс

29

ClassesParser Disassembler https://github.com/tracer0tong/de

Example: ./de.py test1.dex.dat

[[0, 'sget-object v0, {type} [{class}].{field} // field@2225'],

[2, 'invoke-virtual v0 @13970 // {class}->{method}'],

[5, 'move-result-object v0'],

[6, 'check-cast v0, [{type_name}] // type@0958'],

[8, 'return-object v0']]

Page 30: "Быстрое обнаружение вредоносного ПО для Android с помощью машинного обучения". Юрий Леонычев, Яндекс

30

ReflectionAnalyzer

java.lang.reflect.* !  Classes: Field, Method, etc. !  Functions: getClass(), getDeclaredField(), etc.

Page 31: "Быстрое обнаружение вредоносного ПО для Android с помощью машинного обучения". Юрий Леонычев, Яндекс

31

ReflectionAnalyzer

Output: !  Report:

There is some reflections usage: [email protected]>getContentResolver calls: [email protected]>forName [email protected]>onActivityResult calls: [email protected]>forName !  Amount of reflection calls is a feature.

Page 32: "Быстрое обнаружение вредоносного ПО для Android с помощью машинного обучения". Юрий Леонычев, Яндекс

32

Service architecture

Nginx  

Gunicorn  

Flask  

Celery  

MongoDB  

Nginx  

Gunicorn  

Flask  

Celery  

MongoDB  

Page 33: "Быстрое обнаружение вредоносного ПО для Android с помощью машинного обучения". Юрий Леонычев, Яндекс

33

Case study

Page 34: "Быстрое обнаружение вредоносного ПО для Android с помощью машинного обучения". Юрий Леонычев, Яндекс

34

Let's try it on...

Yandex.Store application feed: !  More than 50K Android applications

!  More than 200 new/updated apps per week

!  Open for developers (no strict manual verification)

Page 35: "Быстрое обнаружение вредоносного ПО для Android с помощью машинного обучения". Юрий Леонычев, Яндекс

35

Perfomance. Check timing

~2 ms

~0,25 s

~4,5 min

Page 36: "Быстрое обнаружение вредоносного ПО для Android с помощью машинного обучения". Юрий Леонычев, Яндекс

36

Performance. Amount of checks

!  More than 16.000 applications checked in 1 hour on 1 cluster node

Page 37: "Быстрое обнаружение вредоносного ПО для Android с помощью машинного обучения". Юрий Леонычев, Яндекс

37

Confusion matrix

Meaning

Malware (Score > 0) Normal (Score < 0)

Fact Malware 485 (97%) 15 (3%)

Normal 25 (5%) 475 (95%)

Page 38: "Быстрое обнаружение вредоносного ПО для Android с помощью машинного обучения". Юрий Леонычев, Яндекс

38

(Un)predictable results

!  Applications with malicious adware library AirPush classified as malware

!  But we have no special features for adware in first version

Page 39: "Быстрое обнаружение вредоносного ПО для Android с помощью машинного обучения". Юрий Леонычев, Яндекс

39

Conclusion

It’s alive… alive!

Page 40: "Быстрое обнаружение вредоносного ПО для Android с помощью машинного обучения". Юрий Леонычев, Яндекс

40

It works!

!  Analytic methods work fine for detection Android mobile malware

!  Machine learning is not a “rocket science” but cool and effective instrument

!  Open API coming soon.

Page 41: "Быстрое обнаружение вредоносного ПО для Android с помощью машинного обучения". Юрий Леонычев, Яндекс

41

Thanks for attention

Page 42: "Быстрое обнаружение вредоносного ПО для Android с помощью машинного обучения". Юрий Леонычев, Яндекс

42

Yury Leonychev Application Security Engineer

[email protected]

!   tracer0tong © Yandex LLC 2013