DOI QR코드

DOI QR Code

적층 콘볼루션 오토엔코더를 활용한 악성코드 탐지 기법

Technique for Malicious Code Detection using Stacked Convolution AutoEncoder

  • 최현웅 (한성대학교 컴퓨터공학부) ;
  • 허준영 (한성대학교 컴퓨터공학부 부교수)
  • 투고 : 2020.02.20
  • 심사 : 2020.04.03
  • 발행 : 2020.04.30

초록

악성코드는 탐지 프로그램을 피해 기기들에게 피해를 유발한다. 기존의 악성코드 탐지 기법으로 이러한 새로운 악성코드를 탐지하는데 어려움을 겪는 이유는 서명 기반의 탐지 기법을 사용하기 때문이다. 이 기법은 기존 악성코드들은 효과적으로 탐지하지만, 새로운 악성코드에 대해서는 탐지가 어렵다. 이러한 문제점을 인식하여, 휴리스틱 기법을 추가적으로 사용한다. 이 논문에서는 딥러닝을 활용하여 악성코드를 탐지하는 기술에 대해 소개하여 새로운 악성코드를 탐지하는 기술에 대해서 제안한다. 또한, 악성코드를 탐지한다는 것은, 기기에서 실행 가능한 파일의 개수는 무수히 많으므로, 지도학습 방식(Supervisor Learning)으로는 분명한 한계가 존재한다. 그렇기 때문에, 준지도 학습으로 알려진 SCAE(Stacked Convolution AutoEncoder)를 활용한다, 파일들의 바이트 정보들을 추출하여, 이미지화를 진행하고, 이 이미지들을 학습을 시켜, 학습 시키지 않은 10,869개의 악성코드, 3,442개의 비악성코드를 모델에 추론한 결과 정확도를 98.84%을 달성하였다.

Malicious codes cause damage to equipments while avoiding detection programs(vaccines). The reason why it is difficult to detect such these new malwares using the existing vaccines is that they use "signature-based" detection techniques. these techniques effectively detect already known malicious codes, however, they have problems about detecting new malicious codes. Therefore, most of vaccines have recognized these drawbacks and additionally make use of "heuristic" techniques. This paper proposes a technology to detecting unknown malicious code using deep learning. In addition, detecting malware skill using Supervisor Learning approach has a clear limitation. This is because, there are countless files that can be run on the devices. Thus, this paper utilizes Stacked Convolution AutoEncoder(SCAE) known as Semi-Supervisor Learning. To be specific, byte information of file was extracted, imaging was carried out, and these images were learned to model. Finally, Accuracy of 98.84% was achieved as a result of inferring unlearned malicious and non-malicious codes to the model.

키워드

Ⅰ. 서론

시대가 발전함에 따라, 컴퓨터 및 과학기술이 발전하고, 이러한 점이 인간의 삶에 많은 이점을 가져다 주었지만, 이를 악용할 수 있는 악성코드 또한 많은 발전을 하게 되었다. 계속해서 새로운 악성코드가 제작되고 유포되는 과정에서 정보 유출, 금전적인 피해가 빈번하게 발생되고 있다. 이러한 위협을 최소화하기 위해, 악성코드를 사전에 탐지하기 위한 백신이라는 프로그램이 존재하지만, 주로 서명 기반의 탐지 기술을 이용하는 백신에서는 기존 악성코드에 대해서는 성능이 우수하지만, 새로운 악성코드에 대해서는 성능이 많이 떨어진다는 문제점이 있다. 게다가 악성코드는 자동 생성 프로그램에 의해 쉽고 다양하게 변종으로 생성될 수 있기 때문에, 서명 기반의 백신 프로그램은 계속해서 데이터를 갱신해야 하고, 대응이 느리다는 문제점이 존재한다.

이러한 문제를 해결하기 위해 대부분의 백신 프로그램에서는 서명 기반 탐지 기술에 추가적으로 휴리스틱(Heuristic) 탐지 기술[1]을 사용한다. 이 기술은 프로그램 자체의 룰과 패턴을 사용하여 알려지지 않은 악성코드를 탐지하기 위한 방법으로써, 서명 기반 탐지 기술과더불어 탐지 성능을 향상시키기 위해 교차 검증(Cross-validation)을 하기 위해 사용된다.

따라서, 이러한 서명 기반 탐지 기술의 문제점을 최소화 하기 위해 휴리스틱 탐지 기술을 사용하는 것처럼, 실행 가능한 파일의 바이트 코드를 기반으로 이미지화 하고,이 이미지와 딥러닝 기술인 SCAE(Stacked ConvolutionAutoEncoder)를 결합하여, 발견되지 않은 새로운 악성코드를 탐지하는 기술을 제안한다.

이 논문에서는 2장에서 이와 관련된 선행 연구들에 대한 기법들을 소개하고, 3장에서는 연구 주요 개념 및 제안 기법에 대해서 논한다. 4장에서는 데이터 전처리 및 수집에 대한 내용을 다루고, 5장에서 실험 결과를 보여주고 해석한다. 마지막으로, 6장에서 결론을 맺고, 후속 연구에 대해 제안한다.

Ⅱ. 관련연구

기계학습 기반 악성코드 탐지 방법에 대한 연구는 예전부터 활발하게 연구되고 있다. 기계 학습 기반 분석 기술에는 정적 분석, 동적 분석, 하이브리드 분석 등이 주로이용되며, CNN(Convolution Neural Network)의 발전과 함께 이미지화 분석도 사용되고 있다.

또한, Damodaran 등 5명은 악성코드의 정적 분석, 동적 분석, 하이브리드 방식의 특징 및 비교기법을 제안했다[2].

1. 악성코드 정적 분석

악성코드의 구조상 특정 API에 의존하여 실행되는 구조가 빈번하기 때문에, API 호출 빈도수 등을 측정하여서 악성코드를 탐지하는 API 호출 기반의 탐지 기법[3][4][5][6]등이 존재한다. Hardy 등 5명은 윈도우 운영체제에서 사용되는 PE(Portable Executable) 파일에서 특정 API 목록을 추출하고, SAEStacked AutoEncoder)에 넣어서 악성코드를 탐지하는 프레임워크를 제안했다[3].

Schmidt 등 8명은 안드로이드 기반 실행 파일의 특정 API 호출 목록들을 추출하여, 다른 악성코드들의 거리 값을 기반으로 분류하는 KNN 방식을 사용하여 탐지하는 방법을 제안했다[4]. Sheen 등 3명은 안드로이드 기반 실행 파일의 특정 API를 추출하고, 추가적으로 권한(Permission)을 추출하여 두 가지 값을 이용해 결정 트리(Decision Tree)를 앙상블 기법으로 학습해 악성코드 패밀리를 분류하는 방법을 제안했다[5]. 마지막으로Alazab 등 3명은 악성코드들의 난독화 기법을 해결할방법과 주요 행동 6가지에 따라 악성코드 카테고리를 생성하여 분류하는 방법을 제안했다[6].

정적 분석의 또 다른 방법으로는 악성코드 자체를 디스어셈블(Disassemble)하여 악성코드에서 사용되는 특정 OP_CODE, PERMISSION 값 등을 추출하여 탐지하는 기법[7][8] 등이 있다. Santos 등 4명은 악성코드 파일의 OP_CODE를 패밀리(Family)별로 추출하여, 이 데이터를 기반으로 결정 트리를 이용하여 새로운 악성코드에 대해 분류를 하는 기법에 대해 제안했다[7].

2. 악성코드 동적 분석

악성코드 동적 분석[16][17][18]이란, 정적 분석 및 자동화분석을 실시한다고 해도, 악성 프로그램 자체에 특정 명령어를 전달을 해야지만 악성코드가 실행되게 하는 구조를 만들 수 있어, 정적 분석시에는 악성코드로 간주가 되지 않을 수도 있다. 그렇기 때문에, 실제로 악성코드 프로그램을 실행하며 나타나는 변화를 모니터링하여 어떤 기능을 수행하는지 확인하는 방법이다. 주로 가상환경에서동적 분석을 실시한다.

3. 악성코드 이미지화 분석

해당 분야는 악성코드의 바이트 코드를 기반으로 이미지화를 하여, 딥러닝 기술인 CNN(Convolution NeuralNetwork)에 적용하는 이미지화 분석 기법이다.[9][10]. 조영복은 악성코드의 바이트 코드를 읽어들여, R-CNN의기법으로 악성코드의 패밀리 분류를 하는 것을 제안했다[9]. 김형겸 등 4명은 바이트 코드를 이미지화 하는 기법을 Stream order 방식과 Incremental Coordinate라는 방식을 제안했다[10].

Ⅲ. 연구핵심기법

1. 연구 주요 모델

가. AutoEncoder(AE)

AutoEncoder는 입력 데이터를 출력으로 복사하는 신경망이다. 이 과정에서 여러 가지 제약을 가함으로, 신경망을 학습시키는 방법이다. 이러한 제약들은 모델이 데이터를 좀 더 효율성 있게 표현하는 방법에 해서 학습하도록 제어한다. 이러한 특징 때문에 주로, 이상 탐지나 차원 축소, 전처리 단계에서 사용한다.

AutoEncoder는 인코더(encoder)와 디코더(decoder)로 나누어져 구성이 되어 있고, 특징은 다음과 같다.

·Encoder : 입력 데이터를 내부 표현으로 변환

·Decoder : 내부 표현을 출력 데이터로 재구성

또한, AE는 대표적인 준지도학습(Semi-supervisorLearning) 방법으로 항등함수의 가장 근사한 값을 학습하는 것이 목적이다. 즉, 입력값과 출력값이 가장 유사한형태를 갖게 하는 것이 목적이다. 여기서 AE는 데이터를 효율적으로 표현하는 방법을 학습한다. AE의 데이터는 입력보다 낮은 차원(압축된)의 데이터로 입력 데이터를 재구성한다. 이 데이터에서의 일정한 구조, 특징간의 연관성을 찾아내어서 최종적으로, 출력 데이터를 최대한 입력 데이터와 유사하게 재구성하는 것이다. AE도 여러 개의 레이어를 쌓아서 만들 수 있으며, 각 레이어마다 학습이 일어난다.

AE를 기반으로 하는 모델은[11][12][13][14] 주로 특징 추출, 잡음 제거, 이상 탐지 등 여러 분야에 사용된다. Masci등 4명은 이미지 특징 추출을 위한 CAE(ConvolutionAutoEncoder)를 제안했다[11]. Du 등 6명과 Vincent 등 5명이 진행한 연구에서는 잡음 제거를 위한 DenoisingAutoEncoder를 제안하고[12][13], Makhzani 등 2명은 AE의 성능을 더욱 올려주기 위한 "Winner-Take-AllAutoEncoder“에 대해 제안했다[14].

나. Convolution Neural Network(CNN)

Fully Connected Layer가 1차원 형태의 데이터만 처리할 수 있다는 반면에, CNN은 3차원의 데이터인 이미지에서 객체 등을 인식 및 검출하기 위한 패턴을 찾아내는데에 특히 유용한 모델이다. CNN은 합성곱이라는 개념을 도입하여, 각 이미지의 특정 부분을 담당하는 필터에서 특징들을 추출한다.

2. SCAE 모델 구축

SCAE는 앞서 논한 3.1.가와 3.1.나의 특징을 합쳐 만든 Stacked Convolution AutoEncoder 모델이다.[11Convolution의 개념을 씌어 SCAE는 보다 더 효율적으로 이미지의 표현을 학습할 수 있다. 여기서 가장 중요한 점은, 데이터를 다시 복호화할 때, 기존에 학습 시킨 데이터를 기반으로만 복호화가 가능하다는 점이다.

SCAE 모델의 세부 레이어는 다음 표와 같다.

표 1.의 내용을 살펴보면, Max_pool_2d_2까지 Encoder에 대한 부분이고, 그 후로는 Decoder에 해당 하는 부분이다.

표 1. SCAE 모델 세부 레이어

Table 1. Dtail layers of SCAE model

OTNBBE_2020_v20n2_39_t0001.png 이미지

3. 이미지 유사도 계산

이미지 유사도 계산 기법이란, 두 이미지 간의 유사도를 측정하여서 특정 유사도 이상의 특징을 갖을 때, 악성코드라고 분류하는 계산법이다. 유사도를 계산하기 위해, 피처 매칭(Feature Matching) 방법을 이용하도록 한다. 피처 매칭은 각 이미지에 대한 Keypoint(특징점) 추출 후 각 Keypoint끼리 비슷한 부분에 대해서 유사도 비율을 기준으로 유사한 부분을 찾아주는 기법[15]이다.

악성코드와 비악성코드의 이미지를 모델에 넣고 복호화된 이미지를 시각화하여, 두 이미지 간의 피처 매핑을 수행한다. 두 이미지의 결과는 다음과 같다.

두 개의 그림은 Ratio를 0.7로 설정했을 때, 매칭되는 결과이다. 또한, 두 데이터 간의 복호화된 이미지를 시각화시켰을 때, 그림 1.에서는 복호화가 잘 수행이 되는 반면, 그림 2.에서는 복호화가 원활하게 수행이 되지 않아, 피처 매칭이 잘 수행이 되지 않는 점을 확인할 수 있다.

OTNBBE_2020_v20n2_39_f0001.png 이미지

그림 1. 악성코드 이미지 피처 매칭 수행 결과

Fig. 1. Result of feature matching at malicious code

OTNBBE_2020_v20n2_39_f0002.png 이미지

그림 2. 비악성코드 이미지 피처 매칭 수행 결과

Fig. 2. Result of feature matching at non-malicious code

4. 계산 기법

Ⅲ.3.에서 살펴본 특징을 이용하여, 원본 이미지와 모델에서 복호화한 이미지 간의 픽셀 값 차이를 기반으로 악성코드를 탐지하는 기법을 제안한다. 악성코드로만 학습을 시킨 SCAE에서는 기존에 학습이 된 악성코드 이미지와 비슷한 데이터의 악성코드는 특징 추출이 원활하게 되어, 원본 이미지와 유사한 이미지가 만들어지고, 비악성코드 이미지의 경우에는, 특징들을 효과적으로 추출할 수 없어 이미지 간 차이가 큰 특징을 이용하였다. 계산 방식은 수식 (1)과 같다.

\(y=\left|\sum_{i=1}^{n} \sum_{j=1}^{m}\left(O_{i, j}-D_{i, j}\right)\right|\left\{\begin{array}{l} y>\alpha \text { Non }-\text { maluere } \\ y \leq \alpha \text { Mhlurre } \end{array}\right. \)       (1)

O = 입력 미지, D = 재구성된 이미지, α = Cut-off

Ⅳ. 데이터 전처리 및 수집

1. 악성코드 데이터 셋 전처리

먼저 실험하기에 앞서 데이터를 전처리하는 것이 가장 중요하다. 해당 실험에서는 이미지화 기법을 통해서악성코드 탐지 가능성에 대해 알아보고자 한다. 데이터 셋은 Kaggle Microsoft Malware ClassificationChallenge Dataset를 이용하였다.

이 데이터 셋은 총 Train set 10,869개, Test set10,869개가 있으며, 총 개의 클래스가 존재한다. 해당연구에서는 오로지 악성코드 탐지가 목적이므로, 여러 개의 클래스로 나누어진 것을 고려하지 않고, 모두가 악성코드라고 간주하도록 한다. 즉, 이진 분류를 위한 사전 준비를 한다. 또한 이 데이터 셋은 악성코드 어셈블리 코드에 따른 바이트 코드를 제공한다. 이 바이트 코드를 기반으로, 각 파일을 이미지화 하여 가공하도록 한다. 이미지화 한 사이즈는 파일의 크기에 따라 다르지만, 대부분의악성코드 파일들은 10Kb ~ 3Mb 정도 되는 용량을 차지하고 있고, 파일 사이즈에 따라 생성되는 이미지의 크기도 균등하게 설정하였기 때문에, 생성되는 이미지 간의 크기는 큰 차이는 없다.

OTNBBE_2020_v20n2_39_f0003.png 이미지

그림 3. 생성된 악성코드 이미지 파일의 예

Fig. 3. Example of a created malware image file

2. 비악성코드 데이터 수집

또한, 모델의 성능을 검증하기 위해 비악성코드 데이터를 수집하도록 하였다. 수집은 특정 Windows PC들에저장되어 있는 exe 파일을 수집하여 비악성코드로 처리하도록 하였다. 이러한 수집 활동을 거쳐 총 겹치지 않는3,442개의 비악성코드 데이터를 확보할 수 있었다.

데이터를 확보할 때, 악성코드 파일간의 유사성을 유지하기 위해 용량 범위를 10kb ~ 2Mb로 제한을 가하였다. 또한, Windows 운영체제 관련된 데이터도 수집 대상에서 제외하였다.

이 데이터도 마찬가지로, 바이트 코드를 기반으로 이미지화 하여 저장하도록 한다.

Ⅴ 실험결과

악성코드 10,869개, 비악성코드 3,442개의 데이터를Test Set으로 실험하고, 여러 가지 Cut-off 중에서 대표적인 값들의 결과들은 다음과 같다.

표 2. Cut-off 600으로 설정한 모델의 혼동행렬

Table 2. Confusion matrix of models set to Cut-off 600

OTNBBE_2020_v20n2_39_t0002.png 이미지

표 3. Cut-off 400으로 설정한 모델의 혼동행렬

Table 3. Confusion matrix of models set to Cut-of 400

OTNBBE_2020_v20n2_39_t0003.png 이미지

표 4. Cut-off 200으로 설정한 모델의 혼동행렬

Table 4. Confusion matrix of models set to Cut-off 200

OTNBBE_2020_v20n2_39_t0004.png 이미지

위의 표는 Cut-off에 따른 분류 결과를 보여주는 혼동행렬로, 행 방향으로는 실제 값을 의미하고, 열 방향으로는 모델에서 예측한 값을 의미한다. 또한, Cut-off는픽셀 임계값을 의미한다. 즉, 임계값 이하는 악성코드. 이상은 비악성코드로 분류하도록 한다. 해당 실험에 대한 세부 내용은 다음과 같다.

표 5.에서의Sensitivity는 민감도로, 실제 악성코드를 악성코드라고 예측한 비율을 의미하고, Specificity는 특이도로, 실제 비악성코드를 비악성코드라고 올바르게 예측한 비율을 의미한다.

표 5. 각 컷오프에 따른 세부 분류 정보

Table 5. Detailed classification report for each Cut-offCut-off

OTNBBE_2020_v20n2_39_t0005.png 이미지

Ⅵ. 결론

위의 실험 결과에 따라, SCAE를 이용한 악성코드 탐지 방법은 새로운 악성코드에 대해서도 성과가 있음을 의미한다. 이것은 백신 프로그램에서 휴리스틱 방법 외에도 이미지화 분석과의 교차 검증으로 새로운 악성코드를 탐지하는 데에 탐지 확률과 오탐율을 현저하게 낮출 수 있다는 가능성을 제공한다. 하지만, 이미지화 분석 기법은 이미지 사이즈에 따라서도 성능이 좌우가 된다는 점이 있는데, 후속 연구에서는 이미지 사이즈에 따라서도 범용적으로 적용이 가능한 모델을 구축하는 연구를 진행할 예정이다. 또한, 새로운 악성코드를 임의로 만들어내 백신에서 빠르게 대처할 수 있도록, SCAE를 활용한, GAN(Generative Adversarial Network)를 이용하여 악성코드 자동 생성 모델에 대해서도 연구할 계획이다.

참고문헌

  1. Tversky, Amos, and Daniel Kahneman. "Judgment under uncertainty: Heuristics and biases." science 185.4157, pp.1124-1131, 1974. DOI: https://doi.org/10.1126/science.185.4157.1124
  2. Damodaran, Anusha, et al. "A comparison of static, dynamic, and hybrid analysis for malware detection." Journal of Computer Virology and Hacking Techniques 13.1, : pp.1-12, 2017 DOI: https://doi.org/10.1007/s11416-015-0261-z
  3. Hardy, William, et al. "DL4MD: A deep learning framework for intelligent malware detection." Proceedings of the International Conference on Data Mining (DMIN). The Steering Committee of The World Congress in Computer Science, Computer Engineering and Applied Computing (WorldComp), 2016.
  4. Schmidt, A-D. et al. "Static analysis of executables for collaborative malware detection on android." 2009 IEEE International Conference on Communications. IEEE, 2009. DOI: https://doi.org/10.1109/ICC.2009.5199486
  5. Sheen, Shina, R. Anitha, and V. Natarajan. "Android based malware detection using a multifeature collaborative decision fusion approach." Neurocomputing 151 : pp.905-912, 2015 DOI: https://doi.org/10.1016/j.neucom.2014.10.004
  6. Alazab, Mamoun, Sitalakshmi Venkataraman, and Paul Watters. "Towards understanding malware behaviour by the extraction of API calls." 2010 Second Cybercrime and Trustworthy Computing Workshop. IEEE, 2010. DOI: https://doi.org/10.1109/CTC.2010.8
  7. Santos, Igor, et al. "Opcode sequences as representation of executables for data-mining-based unknown malware detection." Information Sciences 231, pp.64-82. 2013 DOI: https://doi.org/10.1016/j.ins.2011.08.020
  8. Li, Yuancheng, Rong Ma, and Runhai Jiao. "A hybrid malicious code detection method based on deep learning." International Journal of Security and Its Applications 9.5, pp.205-216, 2015 DOI: http://dx.doi.org/10.14257/ijsia.2015.9.5.21
  9. Cho, Young-Bok. "The Malware Detection Using Deep Learning based R-CNN." Journal of Digital Contents Society 19.6 pp.1177-1183, 2018 DOI: https://doi.org/10.9728/dcs.2018.19.6.1177
  10. Kim, Hyeonggyeom, et al. "Visualization of Malwares for Classification Through Deep Learning." Journal of Internet Computing and Services 19.5, pp.67-75, 2018. DOI: https://doi.org/10.7472/jksii.2018.19.5.67
  11. Masci, Jonathan, et al. "Stacked convolutional auto-encoders for hierarchical feature extraction." International conference on artificial neural networks. Springer, Berlin, Heidelberg, 2011. DOI: https://doi.org/10.1007/978-3-642-21735-7_7
  12. Du, Bo, et al. "Stacked convolutional denoising auto-encoders for feature representation." IEEE transactions on cybernetics 47.4, pp.1017-1027, 2016. DOI: https://doi.org/10.1109/TCYB.2016.2536638
  13. Vincent, Pascal, et al. "Stacked denoising autoencoders: Learning useful representations in a deep network with a local denoising criterion." Journal of machine learning research 11.Dec, pp. 3371-3408, 2010.
  14. Makhzani, Alireza, and Brendan J. Frey. "Winner-take-all autoencoders." Advances in neural information processing systems. 2015.
  15. Baumberg, Adam. "Reliable feature matching across widely separated views." Proceedings IEEE Conference on Computer Vision and Pattern Recognition. CVPR 2000 (Cat. No. PR00662). Vol. 1. IEEE, 2000. DOI: https://doi.org/10.1109/CVPR.2000.855899
  16. Kim, Jang-Il, Hee-Seok Lee, and Yong-Gyu Jung. "Malware Behavior Analysis based on Mobile Virtualization." The Journal of The Institute of Internet, Broadcasting and Communication 15.2, pp. 1-7, 2015. DOI: https://doi.org/10.7236/JIIBC.2015.15.2.1
  17. Lee, Yong-Joon, and Chang-Beom Lee. "A Malware Detection Method using Analysis of Malicious Script Patterns." Journal of the Korea Academia-Industrial cooperation Society 20.7, pp. 613-621, 2019. DOI: https://doi.org/10.5762/KAIS.2019.20.7.613
  18. Jeon, Deok-jo, and Park, Dong-Gue. "Real-time Linux Malware Detection Using Machine Learning." The Journal of Korean Institute of Information Technology, Vol. 17, No. 7, pp.111-122, 2019. DOI: https://doi.org/10.14801/jkiit.2019.17.7.111