Shine's dev log

[논문] Hardware Performance Counters Can Detect Malware: Myth or Fact? 본문

논문

[논문] Hardware Performance Counters Can Detect Malware: Myth or Fact?

dong1 2021. 11. 24. 03:41

논문 제목 : Hardware Performance Counters Can Detect Malware: Myth or Fact?

 

 

0. abstract


최근 연구들에서 HPC 값과 ML 모델을 통한 멀웨어 탐지 방안이 제안되었다.


HPC는 low level 행위 (가령 cache hit/miss, branch prediction, load/store operation)등을 기록하는 특수 목적의 레지스터이다. 하지만, HPCS는 low level에서 동작하므로, high level인 어플리케이션의 특징을 담진 못한다.


본 연구에서 저자는 HPC 값을 통해 멀웨어를 탐지할 수 없다는 것을 증명해내려고 한다. 또한 추가적으로 랜섬웨어에 감염된 Notepad++가 HPC 기반의 멀웨어 탐지를 할 수 없다는것을 직접 실험을 통해 보이려고 한다.


1. Introduction


Malware detection에는 특정 패턴 등을 통해 멀웨어 감지하는 signature-base detection과, 사용자의 행동을 분석하는 behavior-base detection 방식이 있다.

하지만 behavior-base detection 방식은 너무 performance overhead 가 크다. 그래서 최근 연구들에서는 HPCs 값을 통해 Malware detection을 수행하여 overhead를 줄이려는 방안이 제안되었다.


HPC는 앞서 말했듯이 low-level 에서 특정 행위 수행 횟수를 세는 녀석이다. 그러나 구조상 한계로 한번에 여러개의 행위를 카운트하지는 못한다는 단점이 있다.


이전 연구들에서는 이 HPC 값을 통해 Malware detection을 수행하였다. 하지만, Malware의 동작이 HPC의 값에 영향을 준다는 명백한 상관관계가 있어야만 detection이 가능한데, 여기서 저자는 Malware의 동작과 HPC 값 사이의 상관관계가 부족하다고 주장한다.


예를 들어 benign program이 암호화를 하는것과, ransomware program이 데이터를 암호화해버린 것은 HPC의 값에 차이를 주지 않는다.


또, 저자는 이전의 연구들은 과도하게 optimistic한 상황에서 실험이 진행되었기에 현실성이 떨어진다고 주장한다.

뿐만 아니라, 실험에 사용된 dataset도 너무 작았고, dataset을 train data와 test data로 나누는 과정에도 오류가 있으며, 검증 과정도 부족하였기 때문에 엄격한 실험 환경과 조건 속에서 다시 검증되어야할 필요가 있다고 말한다.


그래서 저자는 엄격하고 실질적인 환경에서 실험을 다시 진행해보고자 한다. 실험 환경은 아래와 같다.

 

 1) 실제 환경과 비슷하게 하기 위해 가상환경(VM 등)을 사용하지 않고 bare-metal environment 사용.

 2) 10-fold-cross-validation을 1000번 iteration함으로써 철저한 validation 과정을 추가한다.

 3) Training과 Test 데이터를 나눌 때, benign program과 malware program을 명확하게 나눈다.

 

2. Related work and motivation

 

기존의 연구에서 HPC를 통해 Malware detection을 수행하려는 다양한 연구는 아래와 같은 단점들을 가지고 있다.

 

 Drawback 1) sub-semantic features (Not HPC)를 통해 Malware detection을 수행하는 경우, DBI 툴을 사용해야 하는데, overhead가 커서 항상 켜둘 수 없다.

 

 Drawback 2) VM 사용하면 isolation 환경이 되어 좋지만, HPC가 VM 자체의 리소스를 공유하기 때문에 정확도 떨어진다는 문제가 있다. 게다가 어떤 Malware는 VM 사용하면 이를 감지하고 악의적인 동작을 안하기도 한다.

 

 Drawback 3) Training data와 Test data를 명확히 구분하지 않는다는 문제점이 존재한다. HPCs 값들을 traces로 하여 이를 통해 dataset을 분류하였는데, 이러면 같은 프로그램의 HPCs 값이 Test와 Train 과정 모두에 관여하게 될 수 있다.

 

 Drawback 4) dataset을 쪼개서 여러번 검증하는 cross-validation 과정이 부재한다.

 

 Drawback 5) 실험에 사용된 프로그램(benign or malicious)의 개수가 너무 적은 것 같다. 정확한 결과를 위해서는 최소 1000개 이상의 프로그램을 대상으로 실험 진행 해야한다.

 

3. Experimental setup

 

Experimental setup 장에서는 어떻게 benignware 와 malware에서 HPCs 값을 모았는지 설명한다.

 

HPCs 값을 모으는데는 15개의 work node와 1개의 master node로 구성된 시스템을 구축하여 data를 모았다.

HPCs 값을 측정하는 도구로는 Savitor 사용하였다. 해당 도구로 한번에 최대 6개(레지스터개수) 기록 가능하도록 하였다.

 

연구팀의 Experiment workflow

 

classification bias를 피하기 위해 비슷한 수의 benignware와 malware 준비하였고, precision, recall, F1-score 등의 수치를 확인할 것이다.

 

4. Machine learning models

 

dataset에서 feature extraction을 진행하는 과정에서 curse of dimensionality를 경계해야한다. 하지만, 그렇다고 해서 dimensionality를 너무 낮추면 underfitting이 발생할 수 있기 때문에 feature extraction을 적절하게 잘 해야함.

 

차원 낮추는데에는 PCA 방식 사용하였다. 아래 그림에서 확인할 수 있듯이 PCA를 통해 dimension을 낮춘 경우 (b) malware와 benignware를 구분하기 명확해졌다. (빨간 박스가 malware의 값 범위, 파란 박스가 benignware의 값 범위)

 

Features in dataset.

event 선택을 할 때는 1) jitter, 2) noise, 3) approximation error 세가지 losses들을 최소화하는 방향으로 선택하였다.

 

저자는 ML 학습을 시키는 과정에서 Training data와 Test data를 나누는 정책에 따라 TTA1과 TTA2로 구분했다.

 

 1) TTA1 : traces를 기준으로 9:1(train:test)로 나누는 방법이다. TTA1의 경우, 같은 프로그램에 속해있는 traces들이 train, test에 쪼개질 수 있다. 항상 새로운 프로그램이 등장하는 malware detection에는 사용하기는 적합하지 않다고 판단된다.

 

 2) TTA2 : programs을 기준으로 9:1로 나누는 방법이다. TTA2의 경우, 같은 프로그램에 속해있는 traces들이 train, test 에 쪼개지지 않는다.

 

위 두가지 방식 모두 실험한 후 precision, recall, F1-score, AUC(Area Under Curve) 측정하는 것이 이 실험의 목표이다.

ML 모델 구현에는 scikit-learn 사용하였다.

 

5. Experimental results

 

Experiment results

 

위의 그림은 저자가 실험한 결과를 TTA1(a) 과 TTA2(b) 로 나누어 나타낸 것이다.

 

Decision Tree, Random Forest, KNN, Neural Network, AdaBoost, Naive Bayes 총 6가지 ML 모델을 사용했을 경우 나오는 결과값을 precision, recall, F1-score, AUC 지표로 정리하였다.

 

TTA1의 경우를 살펴보면, outliar를 분류하는데 특화된 DT, RF, KNN 모델이 NN, AdaBoost 모델에 비해 성능이 좋다는 것을 확인할 수 있다. 반면 Naive Bayes는 성능이 매우 낮게 측정된 것을 확인할 수 있다.

 

TTA2의 경우를 살펴보면, 대체적으로 TTA1보다 성능이 낮은 것을 확인할 수 있다.

 

TTA1은 앞서 말했다시피 dataset을 trace 기준으로 나눈 것이다. 그러다보면 같은 program에서 나온 trace들이 train set과 test set에 동시에 들어갈 수 있다. 이렇게 되면 모델의 정확도와 상관없이 test 결과가 좋게 나오게 되므로,  TTA1은 정확한 실험이 될 수 없다.

 

즉 데이터 나누는 방법 때문에 정확도가 높게 나온것일 뿐, 정확한 방법으로 실험을 진행해본 결과, HPCs값을 활용한 ML 모델로 malware detection을 하는 방법은 타당하지 않다는 것이 저자의 주장이다.

 

보다 정확한 결과를 위해 10-fold cross validation을 표준편차가 증가하지 않을때까지 반복하였다. (약 1000번 반복) 또한, 매 iteration 마다 dataset을 shuffle하였다.

 

result of 10-fold cross validation

 

위의 그림은 10-fold cross validation을 수행한 결과이다. 파란색 네모박스가 세로로 좁으면, 다양한 학습 데이터 셋에도 stable 하다는 뜻이고, 세로로 길면 unstable, 즉 fluctuate 하다는 의미이다.

 

그림에서 볼 수 있듯이 TTA1에 비해 TTA2가, 모든 ML 모델에서 표준편차가 모두 증가한 것을 확인할 수 있었다.

 

이전 연구에서는 검증 과정도 부족하였고, 표준편차에 대한 언급도 없었는데, 저자는 위 실험의 결과를 통해 본인의 주장 (HPCs 값과 ML 모델을 통해 Malware detection 할 수 없다.) 의 근거로 제시하였다.

 

해당 논문의 연구진들은 여기서 그치지 않고 HPCs 기반 malware detection을 회피하는 malware(ransomware) 만들어보기도 하였다.

ransomware는 Notepad++를 실행할 경우 파일들을 암호화하도록 설계하였고, 이를 통해 실험한 결과 정확도가 매우 낮은 것을 확인할 수 있었다.

 

6. Discussion

 

본 실험은 Window7 32bit OS, AMD 15th family Buldozer micro-architecture에서 수행되었다.

 

Weaver et al.의 연구결과에 따르면, micro-architecture가 서로 다르더라도, HPCs 값의 variants는 동일하였다. 따라서 본 실험 결과는 다른 micro-architecture에서도 동일할 것이다.

 

7. Conclusion

 

과거 RPC가 malware detection에 효과가 있다고 한 연구들은 너무 optimistic한 가정과 비현실적인 실험 조건 때문이었다.

 

본 저자는 이전 연구들보다 엄격하게 통제하고 알맞은 환경에서 실험하고, 검증하였더니, RPCs 값을 이용한 ML 모델로 Malware detection 하는 방법은 효과 없었음을 밝혔다. (TTA1과 TTA2의 비교)

 

또 랜섬웨어 program을 만들어서, 해당 program을 실행할때 추출되는 HPC로 malware detection이 되지 않음 또한 보였다.

 

8. 고찰

 

우선 논문의 제목에서 알 수 있듯이, 본 논문의 저자는 기존의 연구 결과에 회의적인 입장을 가지고 기존 연구들의 문제점들을 까면서(?) 시작한다.

저자가 크게 문제 삼은 부분으로는, 기존연구들은 1) 실제 환경과 너무 동떨어진 환경, 즉 너무 낙관적인 실험 환경을 설정했다는 것과 2) ML 학습과정에서 생긴(특히 dataset 관련) 문제점, 3) ML 모델 검증 과정이 부족했다는 것이다.

 

특히 ML 학습시키는 과정에서 TTA1와 TTA2를 기존연구와 자신의 연구로 대응시켜 비교분석했다는 점이 굉장히 논리적이라고 생각이 들었다. 또한 ML 관련 논문이 거의 처음인 나에게도 논문의 전체 흐름과 저자의 주장이 잘 보였다.

 

다만 ML 모델 학습시키기 전 preprocessing 하는 단계(특히 PCA)에서 나온 수식들과 개념들이 잘 이해가 되지 않았는데, 확통과 선대 관련 부분들을 다시 공부해야겠다는 생각이 들었다.

앞으로 이 논문의 주장을 다시 재반박하는 논문이 나오면 굉장히 흥미로울 것 같다.

 

 

Reference

Boyou Zhou, Anmol Gupta, Rasoul Jahanshahi, Manuel Egele, and Ajay Joshi. 2018. Hardware Performance Counters Can Detect Malware: Myth or Fact? In Proceedings of the 2018 on Asia Conference on Computer and Communications Security (ASIACCS '18). Association for Computing Machinery, New York, NY, USA, 457–468.