A Multi-view Context-aware Approach to Android Malware Detection and Malicious Code Localization

17.04. 논문. ANN이 아니라 SVM을 사용했다. 그래서 읽다 중단함. 읽은 곳 까지만 정리.

classification에 SVM을 사용했지만 악성코드 검출에서 어떤 flow를 고려해야 하는지와 각 PRG가 어떤 식으로 나타나고, 어떤 장점과 한계를 가지고 있는지 대략적으로 파악할 수 있었다.


Abstract

현재 Android malware detection approaches에 사용하는 방식은 여러가지가 있다. 정확도를 위해 머신 러닝 classifier와 연결해서 사용하기도 하며, 각각의 방식은 앱의 행위에 대한 unique semantic perspective(view)를 가지고 있다고 한다. 각 방식마다 잘 캐치하는 부분과 그렇지 못한 부분이 있다. (논문에 따르면) 기존 malware detection approaches는 여러가지 방식 중 한 가지 방식만 선택했다고 한다. 그러나 각 방식마다 강점과 약점이 있고, malware가 특정 view를 피하려고 위장할 수는 있어도 모든 view로부터 자신을 숨기는 것은 매우 어렵다는 것을 근거로 여러가지 방식을 조합해서 사용하자는 것이 논문의 주된 내용이며 이를 기반으로 제안하고 있는 것이 MKLDroid다. 
MKLDroid(Multiple Kernel Learing Droid) : a unified framework that systematically integrates multiple views of apps for performing comprehensive malware detection and malicious code localization

MKLDroid는 앱의 dependency graph로부터 structural and contextual information을 캡쳐하기 위해서, 그리고 각 view로부터 malice code pattern을 식별하기 위해 graph kernel을 사용한다. 
각 view의 가중치 최적값을 찾기 위해 Multiple_kernel_learning을 사용하기 때문에 MKL Droid인 듯.
MKLDroid는 multi-view learning 말고도, dependency raph에서 fine-grained malice code portion이 어디인지 찾아내는 기능도 있다고 한다.
정확도(accuracy) 측면에서 세 state-of-the-art techniques를 능가한다고 함. 검출률(recall)은 94%.
아무튼,  이 논문에서 제안하는 MKLDroid의 특징은 multiple perspectives와 malicious code localization 두 가지다.
detection에서는 검출률(recall)만 따져서는 안된다.
검출률은 말 그대로 모든 입력에서 대상이 검출된 확률을 말하기 때문에, 검출률은 모든 입력에 대해 항상 일치하는 것으로 인식하게 만들면 100%로 만들 수 있기 때문이다.
그래서 논문에서 recall이라는 단어가 나오면 주의해야 한다. 

알고리즘의 성능을 제대로 고려하려면 false-positive도 고려해야 한다. 즉, 정확도(precision)도 고려해야 한다.
* accuracy와 precision
accuracy는 모든 입력 중 올바르게 ( true-positive, true-negative ) 판단한 정도. 
precision은 true로 판단한 경우 중 올바르게 ( true-positive ) 판단한 정도.

accuracy와 recall을 모두 고려한 지표로는 F-measure가 있다. 산술 기하 평균의 산술 평균같은 거라고 생각하면 된다.

1 Introduction

malware의 증가에는 repackaged malware variant(변종)가 주된 이유 중 하나라고 본다.
Android app packaging and distribution model이 공격자의 malice code를 멀쩡한 app에 piggyback 할 수 있는 기회를 제공한다고.
대부분의 Android malware가 멀쩡한 app의 repackaged version이라고 한다.
아무튼 malware의 증가에 따라 automated detection의 니즈가 늘어났는데, machine learning technique를 사용하기도 한다.
대체로 detection process는 PRG로부터 semantic features를 추출한 다음 ML classifier를 이용해 의심스러운 코드나 행동 패턴을 식별하는 것으로 이루어져있다.
* PRG : Program Representation Graph. e.g., assembly code, call graph, control- and data-flow graph 등등인데 code가 상당히 변경되어도 비슷한 양상을 보여준다. 그래서 변종에 대해서도 유연성(resilient)을 보여주며 이 같은 성질 덕분에 PRG를 이용하면 malware detection 문제를 graph classification 문제로 cast할 수 있으며 graph mining/classification 테크닉을 적용할 수 있게 된다.
물론 이같은 접근은 PRG를 얼마나 잘 추출하느냐에 달려있다.

저명하고 강력한 접근 방식은 멀쩡한 앱과 malware를 구별하기 위한 discriminatory function을 학습하기 위해 다음 특징들을 사용했다고 한다. 특징들 각각은 장점과 한계를 가지고 있기 때문에, 각각이 앱에 대해 고유한 perspective(view)를 표현한다.
  • API sequences
  • permissions used
  • information flows observed
  • instruction sequences used
  • Control Flow Graph(CFG) patterns

1.1 Challenges in ML based malware detection

ML, PRG based 접근을 사용하려면 다음 네 가지 문제를 해결해야 한다.

(C1) Expressiveness

PRG는 program entity 사이의 위상적(topological) 관계를 나타내는 rich, complex and expressive data structure로 알려져 있다. 그러나 그들을 ML 알고리즘에 적용하기 위해 벡터 또는 다루기 편한 다른 포맷으로 표현하는 것은 간단한 작업이 아니다.
그런 식으로 변환하다가 vital information이 손실되는 경우, 표현력이 사라지는 경우 좋은 결과를 얻지 못할 수 있음.

(C2) Scalability ( 확장성 ) 

dataset이 커져도 사용할 수 있는지에 대한 문제인 듯.
많은 classic graph mining based 접근이 NP hard이며 심각한 확장성 문제가 있어 실제로 사용하기 어렵다고 한다.

(C3) Integrating multiple views

그냥 위에서 언급한 다양한 features를 모두 사용하여 multiple views를 얻어내야 한다는 내용.
예를 들어 information flow는 privacy leak attack은 잘 잡아내지만 privilege escalation은 잘 못잡아내기 때문에.

(C4) Malicious code localization

대부분의 ML based 접근이 어디가 악성인지를 알려주는게 아니라 app 전체가 악성인지 아닌지만 알려준다고 한다.
근데 이건 code localization 기능도 있다고 함.

1.2 Our Approach

MKLDroid는 위에서 언급한 네 가지 문제를 고려했으며 다섯가지 특징을 통합했다고 함.
  • API dependencies
  • permission dependencies
  • information source and sink dependencies
  • instructions sequences
  • Control Flow Graph(CFG) patterns
여기에 추가로 malicious code localization 기능도.


MKLDroid는 다음 세 가지 목표를 기반으로 개발되었다.


1. Accuracy

multi-view PRG based approach는 다음 두 factor에 영향을 받는다.
  1. PRG의 표현력을 얼마나 잘 유지하고 있는지
  2. 서로 다른 view들을 얼마나 효과적으로 통합했는지
즉, C1과 C3을 얼마나 잘 해결했는지다.
C1을 해결하기 위해 Contextural Weisfeiler-Lehman Kernel(CWLK)를 사용했다.
* CWLK : PRG로부터 구조적, 문맥적 정보를 캡쳐해 정확한 malware detection을 수행하기 위해 디자인된 커널이라고 함.
C3을 해결하기 위해 Multiple Kernel Learning(MKL)을 사용했다.

자기네들 말로는 서로 다른 PRG의 dependencies로부터 구조적, 문맥적 정보를 캡쳐하는 접근은 본인들이 처음이라고 한다.
기존에는 왜 이런 접근을 시도하지 않았던건지는 모르겠다.


2. Efficiency

MLKDroid는 CWLK와 Sequential Minimal Optimization (SMO) MKL을 결합해 효율성을 확보했다고 함.
CWLK와 MKL은 MKLDroid를 이루는 두 메인 컴포넌트다.

3. Locating malice code

MKL SVM을 사용하는 듯.
PRG 내의 각각의 node에 maliciousness score ( m-score ) 부여하는 방식.

C4를 해결.


Experiments

실험 데이터는 실제 사용 환경에서 수집한 것과 벤치마크 데이터셋을 합쳐 60,000개의 앱이다.
실험 결과 F-measure 수치 등이 꽤 잘 나온 듯. state-of-the-art 보다 높은 결과를 보여줬다고 한다.

Contibutions

- CWLK. 이 논문이 아니라 연구팀의 이전 논문에서 제안했다.
- MKLDroid 제안.
- PRG에서 악성 코드 부분을 찾기 위한 kernel method based novel approach
- 등등등

2 Background and Motivations

논문에 example source code와 PRG가 나오는데, 이 파트는 그냥 논문을 직접 보는게 낫다.