"Быстрое обнаружение вредоносного ПО для android с...
DESCRIPTION
В докладе речь пойдёт о применении алгоритмов машинного обучения для обнаружения вредоносных приложений для Android. Я расскажу, как на базе Матрикснета в Яндексе был спроектирован высокопроизводительный инструмент для решения этой задачи. А также продемонстрирую, в каких случаях аналитические методы выявления вредоносного ПО помогают блокировать множество простых образцов вирусного кода. Затем мы поговорим о том, как можно усовершенствовать такие методы для обнаружения более хитроумных вредных программ.TRANSCRIPT
![Page 1: "Быстрое обнаружение вредоносного ПО для Android с помощью машинного обучения". Юрий Леонычев, Яндекс](https://reader033.vdocuments.us/reader033/viewer/2022061218/54b686204a7959601b8b457c/html5/thumbnails/1.jpg)
1
![Page 2: "Быстрое обнаружение вредоносного ПО для Android с помощью машинного обучения". Юрий Леонычев, Яндекс](https://reader033.vdocuments.us/reader033/viewer/2022061218/54b686204a7959601b8b457c/html5/thumbnails/2.jpg)
2
Fast detection of Android malware
Yury Leonychev
![Page 3: "Быстрое обнаружение вредоносного ПО для Android с помощью машинного обучения". Юрий Леонычев, Яндекс](https://reader033.vdocuments.us/reader033/viewer/2022061218/54b686204a7959601b8b457c/html5/thumbnails/3.jpg)
3
Introduction
![Page 4: "Быстрое обнаружение вредоносного ПО для Android с помощью машинного обучения". Юрий Леонычев, Яндекс](https://reader033.vdocuments.us/reader033/viewer/2022061218/54b686204a7959601b8b457c/html5/thumbnails/4.jpg)
4
Android application
APK
Manifest
(AndroidManifest.xml)
Code (Classes.dex and
native)
Meta information
(META-INF)
Resources (files and
Resources.arsc)
![Page 5: "Быстрое обнаружение вредоносного ПО для Android с помощью машинного обучения". Юрий Леонычев, Яндекс](https://reader033.vdocuments.us/reader033/viewer/2022061218/54b686204a7959601b8b457c/html5/thumbnails/5.jpg)
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 с помощью машинного обучения". Юрий Леонычев, Яндекс](https://reader033.vdocuments.us/reader033/viewer/2022061218/54b686204a7959601b8b457c/html5/thumbnails/6.jpg)
6
Is this all? Really?
! http://www.apk-analyzer.net ! http://anubis.iseclab.org ! http://apkscan.nviso.be
![Page 7: "Быстрое обнаружение вредоносного ПО для Android с помощью машинного обучения". Юрий Леонычев, Яндекс](https://reader033.vdocuments.us/reader033/viewer/2022061218/54b686204a7959601b8b457c/html5/thumbnails/7.jpg)
7
Our task is more complex
Malware detector
![Page 8: "Быстрое обнаружение вредоносного ПО для Android с помощью машинного обучения". Юрий Леонычев, Яндекс](https://reader033.vdocuments.us/reader033/viewer/2022061218/54b686204a7959601b8b457c/html5/thumbnails/8.jpg)
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 с помощью машинного обучения". Юрий Леонычев, Яндекс](https://reader033.vdocuments.us/reader033/viewer/2022061218/54b686204a7959601b8b457c/html5/thumbnails/9.jpg)
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 с помощью машинного обучения". Юрий Леонычев, Яндекс](https://reader033.vdocuments.us/reader033/viewer/2022061218/54b686204a7959601b8b457c/html5/thumbnails/10.jpg)
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 с помощью машинного обучения". Юрий Леонычев, Яндекс](https://reader033.vdocuments.us/reader033/viewer/2022061218/54b686204a7959601b8b457c/html5/thumbnails/11.jpg)
11
Methods of malware detection
Seems like the most efficient way is hybrid solution
![Page 12: "Быстрое обнаружение вредоносного ПО для Android с помощью машинного обучения". Юрий Леонычев, Яндекс](https://reader033.vdocuments.us/reader033/viewer/2022061218/54b686204a7959601b8b457c/html5/thumbnails/12.jpg)
12
MatrixNet
What is The Matrix?
![Page 13: "Быстрое обнаружение вредоносного ПО для Android с помощью машинного обучения". Юрий Леонычев, Яндекс](https://reader033.vdocuments.us/reader033/viewer/2022061218/54b686204a7959601b8b457c/html5/thumbnails/13.jpg)
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 с помощью машинного обучения". Юрий Леонычев, Яндекс](https://reader033.vdocuments.us/reader033/viewer/2022061218/54b686204a7959601b8b457c/html5/thumbnails/14.jpg)
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 с помощью машинного обучения". Юрий Леонычев, Яндекс](https://reader033.vdocuments.us/reader033/viewer/2022061218/54b686204a7959601b8b457c/html5/thumbnails/15.jpg)
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 с помощью машинного обучения". Юрий Леонычев, Яндекс](https://reader033.vdocuments.us/reader033/viewer/2022061218/54b686204a7959601b8b457c/html5/thumbnails/16.jpg)
16
MatrixNet post learning optimization
![Page 17: "Быстрое обнаружение вредоносного ПО для Android с помощью машинного обучения". Юрий Леонычев, Яндекс](https://reader033.vdocuments.us/reader033/viewer/2022061218/54b686204a7959601b8b457c/html5/thumbnails/17.jpg)
17
MatrixNet post learning optimization
Copyright © 2013 by Sidney Harris.
![Page 18: "Быстрое обнаружение вредоносного ПО для Android с помощью машинного обучения". Юрий Леонычев, Яндекс](https://reader033.vdocuments.us/reader033/viewer/2022061218/54b686204a7959601b8b457c/html5/thumbnails/18.jpg)
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 с помощью машинного обучения". Юрий Леонычев, Яндекс](https://reader033.vdocuments.us/reader033/viewer/2022061218/54b686204a7959601b8b457c/html5/thumbnails/19.jpg)
19
Features
What kind of features to use: ! Permissions
! URI in strings and other resources
! Adware library usage
! Obfuscation methods
! …
![Page 20: "Быстрое обнаружение вредоносного ПО для Android с помощью машинного обучения". Юрий Леонычев, Яндекс](https://reader033.vdocuments.us/reader033/viewer/2022061218/54b686204a7959601b8b457c/html5/thumbnails/20.jpg)
20
Samples and classification
Malware applications: ! VirusTotal feed ! Samples from malicious sites
Normal applications: ! Manual testing ! Trusted developers ! Yandex applications
![Page 21: "Быстрое обнаружение вредоносного ПО для Android с помощью машинного обучения". Юрий Леонычев, Яндекс](https://reader033.vdocuments.us/reader033/viewer/2022061218/54b686204a7959601b8b457c/html5/thumbnails/21.jpg)
21
Formula
Features weight
Features cost
Learning
Normal
Malware
MatrixNet Features
![Page 22: "Быстрое обнаружение вредоносного ПО для Android с помощью машинного обучения". Юрий Леонычев, Яндекс](https://reader033.vdocuments.us/reader033/viewer/2022061218/54b686204a7959601b8b457c/html5/thumbnails/22.jpg)
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 с помощью машинного обучения". Юрий Леонычев, Яндекс](https://reader033.vdocuments.us/reader033/viewer/2022061218/54b686204a7959601b8b457c/html5/thumbnails/23.jpg)
23
Analyzer architecture
Fine! I'll go build my own casino, with blackjack and big data
![Page 24: "Быстрое обнаружение вредоносного ПО для Android с помощью машинного обучения". Юрий Леонычев, Яндекс](https://reader033.vdocuments.us/reader033/viewer/2022061218/54b686204a7959601b8b457c/html5/thumbnails/24.jpg)
24
Main parts
Parsers Analyzers
Oracle Report
![Page 25: "Быстрое обнаружение вредоносного ПО для Android с помощью машинного обучения". Юрий Леонычев, Яндекс](https://reader033.vdocuments.us/reader033/viewer/2022061218/54b686204a7959601b8b457c/html5/thumbnails/25.jpg)
25
Parsers
In depth APK
ManifestParser ResourceParser MetaInfoParser ClassesParser
Analyzers
PermissionAnalyzer PackageAnalyzer URLAnalyzer ReflectionAnalyzer
Reports
XHTMLReporter JSONReporter
Oracle
MatrixNet
![Page 26: "Быстрое обнаружение вредоносного ПО для Android с помощью машинного обучения". Юрий Леонычев, Яндекс](https://reader033.vdocuments.us/reader033/viewer/2022061218/54b686204a7959601b8b457c/html5/thumbnails/26.jpg)
26
ManifestParser
Avoid some obfuscation methods: ! HEUR:Backdoor.AndroidOS.Obad.a
![Page 27: "Быстрое обнаружение вредоносного ПО для Android с помощью машинного обучения". Юрий Леонычев, Яндекс](https://reader033.vdocuments.us/reader033/viewer/2022061218/54b686204a7959601b8b457c/html5/thumbnails/27.jpg)
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 с помощью машинного обучения". Юрий Леонычев, Яндекс](https://reader033.vdocuments.us/reader033/viewer/2022061218/54b686204a7959601b8b457c/html5/thumbnails/28.jpg)
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 с помощью машинного обучения". Юрий Леонычев, Яндекс](https://reader033.vdocuments.us/reader033/viewer/2022061218/54b686204a7959601b8b457c/html5/thumbnails/29.jpg)
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 с помощью машинного обучения". Юрий Леонычев, Яндекс](https://reader033.vdocuments.us/reader033/viewer/2022061218/54b686204a7959601b8b457c/html5/thumbnails/30.jpg)
30
ReflectionAnalyzer
java.lang.reflect.* ! Classes: Field, Method, etc. ! Functions: getClass(), getDeclaredField(), etc.
![Page 31: "Быстрое обнаружение вредоносного ПО для Android с помощью машинного обучения". Юрий Леонычев, Яндекс](https://reader033.vdocuments.us/reader033/viewer/2022061218/54b686204a7959601b8b457c/html5/thumbnails/31.jpg)
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 с помощью машинного обучения". Юрий Леонычев, Яндекс](https://reader033.vdocuments.us/reader033/viewer/2022061218/54b686204a7959601b8b457c/html5/thumbnails/32.jpg)
32
Service architecture
Nginx
Gunicorn
Flask
Celery
MongoDB
Nginx
Gunicorn
Flask
Celery
MongoDB
![Page 33: "Быстрое обнаружение вредоносного ПО для Android с помощью машинного обучения". Юрий Леонычев, Яндекс](https://reader033.vdocuments.us/reader033/viewer/2022061218/54b686204a7959601b8b457c/html5/thumbnails/33.jpg)
33
Case study
![Page 34: "Быстрое обнаружение вредоносного ПО для Android с помощью машинного обучения". Юрий Леонычев, Яндекс](https://reader033.vdocuments.us/reader033/viewer/2022061218/54b686204a7959601b8b457c/html5/thumbnails/34.jpg)
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 с помощью машинного обучения". Юрий Леонычев, Яндекс](https://reader033.vdocuments.us/reader033/viewer/2022061218/54b686204a7959601b8b457c/html5/thumbnails/35.jpg)
35
Perfomance. Check timing
~2 ms
~0,25 s
~4,5 min
![Page 36: "Быстрое обнаружение вредоносного ПО для Android с помощью машинного обучения". Юрий Леонычев, Яндекс](https://reader033.vdocuments.us/reader033/viewer/2022061218/54b686204a7959601b8b457c/html5/thumbnails/36.jpg)
36
Performance. Amount of checks
! More than 16.000 applications checked in 1 hour on 1 cluster node
![Page 37: "Быстрое обнаружение вредоносного ПО для Android с помощью машинного обучения". Юрий Леонычев, Яндекс](https://reader033.vdocuments.us/reader033/viewer/2022061218/54b686204a7959601b8b457c/html5/thumbnails/37.jpg)
37
Confusion matrix
Meaning
Malware (Score > 0) Normal (Score < 0)
Fact Malware 485 (97%) 15 (3%)
Normal 25 (5%) 475 (95%)
![Page 38: "Быстрое обнаружение вредоносного ПО для Android с помощью машинного обучения". Юрий Леонычев, Яндекс](https://reader033.vdocuments.us/reader033/viewer/2022061218/54b686204a7959601b8b457c/html5/thumbnails/38.jpg)
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 с помощью машинного обучения". Юрий Леонычев, Яндекс](https://reader033.vdocuments.us/reader033/viewer/2022061218/54b686204a7959601b8b457c/html5/thumbnails/39.jpg)
39
Conclusion
It’s alive… alive!
![Page 40: "Быстрое обнаружение вредоносного ПО для Android с помощью машинного обучения". Юрий Леонычев, Яндекс](https://reader033.vdocuments.us/reader033/viewer/2022061218/54b686204a7959601b8b457c/html5/thumbnails/40.jpg)
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 с помощью машинного обучения". Юрий Леонычев, Яндекс](https://reader033.vdocuments.us/reader033/viewer/2022061218/54b686204a7959601b8b457c/html5/thumbnails/41.jpg)
41
Thanks for attention