KR20200071822A - 애플리케이션의 동적 특징정보 및 머신러닝을 이용하여 멀웨어를 탐지 분류하는 시스템 및 방법 - Google Patents
애플리케이션의 동적 특징정보 및 머신러닝을 이용하여 멀웨어를 탐지 분류하는 시스템 및 방법 Download PDFInfo
- Publication number
- KR20200071822A KR20200071822A KR1020180152680A KR20180152680A KR20200071822A KR 20200071822 A KR20200071822 A KR 20200071822A KR 1020180152680 A KR1020180152680 A KR 1020180152680A KR 20180152680 A KR20180152680 A KR 20180152680A KR 20200071822 A KR20200071822 A KR 20200071822A
- Authority
- KR
- South Korea
- Prior art keywords
- application
- dynamic
- unit
- data
- machine learning
- Prior art date
Links
- 238000010801 machine learning Methods 0.000 title claims abstract description 32
- 238000000034 method Methods 0.000 title claims abstract description 30
- 238000006243 chemical reaction Methods 0.000 claims abstract description 22
- 238000007689 inspection Methods 0.000 claims abstract description 17
- 238000013075 data extraction Methods 0.000 claims abstract description 8
- 238000000059 patterning Methods 0.000 claims abstract description 7
- 238000001514 detection method Methods 0.000 claims description 19
- 230000006870 function Effects 0.000 claims description 13
- 238000004891 communication Methods 0.000 claims description 12
- 238000007405 data analysis Methods 0.000 claims description 8
- 239000000284 extract Substances 0.000 claims description 5
- 239000008186 active pharmaceutical agent Substances 0.000 claims description 4
- 230000006835 compression Effects 0.000 abstract description 4
- 238000007906 compression Methods 0.000 abstract description 4
- 238000012856 packing Methods 0.000 abstract description 4
- 238000005516 engineering process Methods 0.000 abstract description 2
- 238000004458 analytical method Methods 0.000 description 20
- 230000003068 static effect Effects 0.000 description 16
- 238000013527 convolutional neural network Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 238000003745 diagnosis Methods 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- 238000013528 artificial neural network Methods 0.000 description 2
- 230000006399 behavior Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 238000005070 sampling Methods 0.000 description 2
- 230000002123 temporal effect Effects 0.000 description 2
- 241000700605 Viruses Species 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- ZXQYGBMAQZUVMI-GCMPRSNUSA-N gamma-cyhalothrin Chemical compound CC1(C)[C@@H](\C=C(/Cl)C(F)(F)F)[C@H]1C(=O)O[C@H](C#N)C1=CC=CC(OC=2C=CC=CC=2)=C1 ZXQYGBMAQZUVMI-GCMPRSNUSA-N 0.000 description 1
- 238000010191 image analysis Methods 0.000 description 1
- 208000015181 infectious disease Diseases 0.000 description 1
- 230000000306 recurrent effect Effects 0.000 description 1
- 238000012502 risk assessment Methods 0.000 description 1
- 230000036962 time dependent Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/566—Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/044—Recurrent networks, e.g. Hopfield networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/0464—Convolutional networks [CNN, ConvNet]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Biomedical Technology (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Evolutionary Computation (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Biophysics (AREA)
- Artificial Intelligence (AREA)
- Life Sciences & Earth Sciences (AREA)
- Virology (AREA)
- Debugging And Monitoring (AREA)
Abstract
본 발명은 애플리케이션을 구동시켜 동적 특징들을 추출하고, 추출된 동적 특징들을 분석함으로써 암호화, 압축, 난독화, 패킹 등으로 처리된 애플리케이션에서 악성코드를 탐지할 수 있는 시스템 및 방법에 관한 기술로서, 구동 상태의 애플리케이션을 대상으로 기 설정된 이벤트를 실행시키는 명령실행부와, 명령실행부의 이벤트가 실행되는 애플리케이션으로부터 동적 특징데이터를 추출하는 특징데이터 추출부와, 특징데이터 추출부가 추출한 동적 특징데이터를 패턴화하여 패턴데이터를 생성하는 변환부와, 머신러닝을 이용하여 패턴데이터의 악성코드 포함 여부를 진단하는 악성코드 검사부를 포함한다.
Description
본 발명은 애플리케이션의 동적 특징정보 및 머신러닝을 이용하여 멀웨어를 탐지 분류하는 시스템 및 방법에 관한 것으로서, 보다 상세하게는 애플리케이션을 구동시켜 동적 특징들을 추출하고, 추출된 동적 특징들을 분석함으로써 난독화, 패킹(암호화 또는 압축) 등으로 처리된 애플리케이션에서 악성코드를 탐지 및 분류할 수 있는 방법에 관한 기술이다.
악성코드 탐지 및 분류에 이용되는 대표 특징정보(feature)에는 정적 특징정보와 동적 특징정보가 있다. 또한, 악성코드 분석 방법도 정적 분석과 동적 분석이 있다. 정적 분석은 정적 특징정보를 이용하는 분석이고, 동적 분석은 동적 특징정보를 이용하는 분석이다.
정적 특징정보는 분석 대상 애플리케이션을 실행하지 않고 주어진 애플리케이션 내용을 단순 스캔하여 특징정보를 추출하고 가공한 것을 의미한다. 따라서, 정적 분석은 애플리케이션을 실행할 필요가 없기 때문에 단순하며, 코드 커버리지(code coverage)가 높은 장점이 있다.
정적 특징정보에는 실행파일 내에 존재하는 API(Application Programming Interface) 정보, n-gram Opcode (n개의 연속적인 연산자), 안드로이드 애플리케이션 XML 파일 내의 접근허가(permission) 정보, 정적인 제어흐름그래프(Control Flow Graph, CFG), 클래스 정보, 하드웨어/소프트웨어 컴포넌트, 스트링 정보, 안드로이드 인텐트(intent) 등이 있다. 정적 특징정보에는 애플리케이션의 특정 API 포함 여부, API의 이용 횟수 등이 포함될 수 있다.
하지만, 정적 분석으로는 난독화, 패킹(암호화 또는 압축) 등으로 처리된 악성코드를 분석하기가 매우 어려운 한계가 있다.
한편, 동적 특징정보는 분석 대상 애플리케이션을 실제 구동하면서 특징정보를 추출하여 가공한 것을 의미한다. 따라서, 동적 분석은 구동 환경 구축이 필요하며, 실행을 위한 시나리오 및 입력 값 선정이 필요하다.
정적 특징정보와 동적 특징정보는 반복문이나 조건문의 수행, 실행 순서에서 차이가 있다. 반복문의 경우, 정적 특징정보(API나 opcode 존재)는 한 차례만 등장하게 되지만, 동적 특징정보(API나 opcode 호출, 함수 호출)는 실행 반복횟수 만큼 여러 차례 등장할 수 있다. 또한, 정적 분석으로는 실행 순서를 정확히 파악할 수 없지만, 동적 분석으로는 실행 순서를 정확하게 추적할 수 있다.
이에 본 발명은 상기와 같은 종래의 제반 문제점을 해소하기 위해 제안된 것으로, 본 발명의 목적은 애플리케이션을 구동시켜 동적 특징들을 추출하고, 추출된 동적 특징들을 분석함으로써 난독화, 패킹(암호화 또는 압축) 등으로 처리된 애플리케이션에서 악성코드를 탐지 및 분류할 수 있는 방법을 제공하기 위한 것이다.
상기와 같은 목적을 달성하기 위하여 본 발명의 기술적 사상에 의한 애플리케이션의 동적 특징정보 및 머신러닝을 이용하여 멀웨어를 탐지 분류하는 시스템은 구동 상태의 애플리케이션을 대상으로 기 설정된 이벤트를 실행시키는 명령실행부; 상기 명령실행부의 이벤트가 실행되는 애플리케이션으로부터 동적 특징데이터를 추출하는 특징데이터 추출부; 상기 특징데이터 추출부가 추출한 동적 특징데이터를 패턴화하여 패턴데이터를 생성하는 변환부; 및 머신러닝을 이용하여 상기 패턴데이터의 악성코드 포함 여부를 진단하는 악성코드 검사부를 포함하는 것을 특징한다.
또한, 상기 특징정보에는 애플리케이션의 구동 중 호출되는 API들의 종류 또는 호출 순서(sequence), API 호출 빈도(API call frequency), 시스템 콜(system call)의 순서나 호출 빈도, 콜 스택 정보(또는 콜 스택 프레임 할당 해제 패턴), 동적 힙 할당 패턴(dynamic heap allocation pattern), 애플리케이션의 구동 중 나타나는 명령어들의 실행 순서를 반영하는 n-gram opcode, 애플리케이션의 구동 중 기본블록(Basic block)들의 실행 순서를 나타내는 동적 제어흐름그래프(control-flow graph, CFG), 애플리케이션의 구동 중 메소드(함수, 프로시저)들의 호출 순서 정보를 포함하는 CG(call graph), 프로세스간 통신(Inter-Process Communication)정보, 컴포넌트간 통신(Inter-component communication)정보, 네트워크 접근 정보 중 적어도 하나를 포함하는 것을 특징으로 할 수 있다.
또한, 상기 변환부에서 생성된 패턴데이터는 사운드 포맷의 데이터이고, 상기 머신러닝은 동적 데이터 분석에 강인한 머신러닝 알고리즘인 것을 특징으로 할 수 있다.
또한, 상기 변환부는 상기 동적 특징데이터의 이진코드(Binary)를 MIDI 포맷으로 변환한 후, 변환된 MIDI 포맷의 동적 특징데이터를 wav 포맷 또는 MFCC(Mel-Frequency Cepstral Coefficients) 포맷으로 변환하는 것으로 패턴데이터를 생성하는 것을 특징으로 할 수 있다.
또한, 상기 변환부는 동적 특징데이터의 MIDI 포맷 변환 시, 동적 특징데이터를 1 바이트 단위로 분할한 후, 상기 1 바이트를 2 비트로 구성된 제1채널과, 6 비트로 구성된 제2채널로 구성하는 것을 특징으로 할 수 있다.
또한, 상기 변환부는 제1채널과 제2채널의 음이 서로 중복되지 않게 어느 하나의 채널에 가중치를 더한 후 MIDI 포맷으로 변환하는 것을 특징으로 할 수 있다.
또한, 상기 머신러닝의 학습을 위해, 공지된 악성코드를 상기 패턴데이터와 동일한 포맷으로 변환하여 상기 머신러닝에 입력하는 학습부를 더 포함하는 것을 특징으로 할 수 있다.
또한, 상기 학습부는 멀웨어 패밀리(Malware family)에 따라 공지된 악성코드를 분류한 후 머신러닝에 입력하고, 상기 악성코드 검사부는 탐지된 악성코드의 멀웨어 패밀리 종류를 자동 분류하는 것을 특징으로 할 수 있다.
한편, 상기와 같은 목적을 달성하기 위하여 본 발명의 기술적 사상에 의한 애플리케이션의 동적 특징정보 및 머신러닝을 이용하여 멀웨어를 탐지 분류하는 방법은 명령실행부가 구동 상태의 애플리케이션을 대상으로 기 설정된 이벤트를 실행시키는 단계; 특징데이터 추출부가 이벤트가 실행되는 상기 애플리케이션으로부터 동적 특징데이터를 추출하는 단계; 변환부가 상기 동적 특징데이터를 패턴화하여 패턴데이터를 생성하는 단계; 및 악성코드 검사부가 머신러닝을 이용하여 상기 패턴데이터의 악성코드 포함 여부를 진단하는 단계를 포함하는 것을 특징으로 한다.
본 발명에 의한 애플리케이션의 동적 특징정보 및 머신러닝을 이용하여 멀웨어를 탐지 분류하는 시스템 및 방법에 따르면,
첫째, 본 발명은 동적으로 특징데이터를 추출하여 분석하므로 난독화, 패킹(암호화 도는 압축) 등으로 처리된 애플리케이션이라 하더라도 정적 분석으로는 발견되지 않는 은폐된 악성코드를 탐지 및 분류할 수 있게 된다.
둘째, 본 발명의 특징데이터 추출부가 동적 특징데이터 중에서 악성코드 진단에 도움이 되는 데이터만을 선별하기 때문에 악성코드 탐지율에 영향을 주지 않으면서도 분석 대상이 되는 데이터 볼륨이 현저히 감소되고, 악성코드를 진단하기 위해 분석에 소요되는 시간이 단축된다.
셋째, 본 발명의 변환부는 동적 특징데이터를 MIDI 포맷으로 변환할 때, 데이터를 1 바이트 단위로 구분한 후, 1 바이트의 8 비트 중 2개의 비트를 제1채널의 음표로 설정하고, 나머지 6개의 비트를 제2채널의 음표로 설정한다. 이로써, 하나의 음이 재생되는 타이밍에 128개의 음표만 설정할 수 있는 MIDI 포맷에 256개(1 바이트)의 정보를 모두 담을 수 있게 된다.
넷째, 본 발명의 변환부는 제1채널과 제2채널 중 적어도 어느 하나의 채널에 가중치를 더한 후 MIDI 포맷으로 변환하므로 제1채널이 음표를 설정하는 범위와, 제2채널이 음표를 설정하는 범위가 중복되지 않는다.
다섯째, 본 발명의 악성코드 검사부는 사운드 포맷의 패턴데이터에서 악성코드 포함 여부를 진단하기 위해 동적 특징데이터 분석에 강인한 머신러닝 알고리즘을 이용하므로 재생시간이라는 시간 정보가 포함된 사운드 포맷의 패턴데이터를 정밀하게 분석할 수 있다.
여섯째, 본 발명의 악성코드 검사부는 악성코드를 탐지한 후, 해당 악성코드의 멀웨어 패밀리 정보도 함께 제공하므로 악성코드의 기능을 파악하고, 대응방법을 선택하는 것이 더 용이하다.
도 1은 본 발명의 실시예에 따른 멀웨어 탐지 분류 시스템의 구성도.
도 2는 동적 특징데이터를 사운드 포맷으로 변환하는 실시예에 있어서, 동적 특징데이터를 구성하는 이진코드를 MIDI 포맷으로 변환하는 과정을 나타내는 도면.
도 3은 동적 특징데이터를 사운드 포맷으로 변환하는 실시예에 있어서, MIDI 포맷으로 변환된 동적 특징데이터가 wav, MFCC 등 다른 포맷으로 최종 변환되어 패턴데이터가 되는 것을 나타내는 도면.
도 4는 멀웨어 패밀리의 리스트를 나타내는 예시 도면.
도 5는 본 발명의 실시예에 따른 멀웨어 탐지 분류 방법의 순서도.
도 2는 동적 특징데이터를 사운드 포맷으로 변환하는 실시예에 있어서, 동적 특징데이터를 구성하는 이진코드를 MIDI 포맷으로 변환하는 과정을 나타내는 도면.
도 3은 동적 특징데이터를 사운드 포맷으로 변환하는 실시예에 있어서, MIDI 포맷으로 변환된 동적 특징데이터가 wav, MFCC 등 다른 포맷으로 최종 변환되어 패턴데이터가 되는 것을 나타내는 도면.
도 4는 멀웨어 패밀리의 리스트를 나타내는 예시 도면.
도 5는 본 발명의 실시예에 따른 멀웨어 탐지 분류 방법의 순서도.
첨부한 도면을 참조하여 본 발명의 실시예들에 의한 애플리케이션의 동적 특징정보 및 머신러닝을 이용하여 멀웨어를 탐지 분류하는 시스템 및 방법에 대하여 상세히 설명한다. 본 발명은 다양한 변경을 가할 수 있고 여러 가지 형태를 가질 수 있는바, 특정 실시예들을 도면에 예시하고 본문에 상세하게 설명하고자 한다. 그러나 이는 본 발명을 특정한 개시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 각 도면을 설명하면서 유사한 참조부호를 유사한 구성요소에 대해 사용하였다.
또한, 다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥 상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
본 발명의 실시예에 의한 애플리케이션의 동적 특징정보 및 머신러닝을 이용하여 멀웨어를 탐지 분류하는 시스템 및 방법은 단일 또는 복수개로 구성된 컴퓨팅 시스템에서 실행되어 각 구성의 기능이 실시될 수 있다.
도 1을 참조하면, 본 발명의 실시예에 따른 멀웨어 탐지 분류 시스템(100)은 구동 상태의 애플리케이션을 대상으로 기 설정된 이벤트를 실행시키는 명령실행부(120); 명령실행부(120)의 이벤트가 실행되는 애플리케이션으로부터 동적 특징데이터를 추출하는 특징데이터 추출부(130); 특징데이터 추출부(130)가 추출한 동적 특징데이터를 패턴화하여 패턴데이터를 생성하는 변환부(140); 및 머신러닝을 이용하여 패턴데이터의 악성코드 포함 여부를 진단하는 악성코드 검사부(160)를 포함한다.
또한, 이 실시예는 악성코드 진단 대상 애플리케이션을 구동시키는 구동부(110)도 더 포함할 수 있다.
구동부(110)는 애플리케이션의 실행환경(runtime environment)을 포함한다. 예를 들어, PE(Portable Executable) 구조의 애플리케이션을 위해 Microsoft Windows 환경, DEX(Dalvik Executable) 구조의 애플리케이션을 위해 안드로이드(Android) 런타임 환경, ELF(Executable and Linkable Format) 구조의 애플리케이션을 위해 Linux 환경을 구축한다.
악성코드가 주 시스템 상에서 구동되면 감염의 위험성이 있으므로, 구동부(110)는 가상 머신(virtual machine) 또는 에뮬레이터를 구축하고, 해당 영역에서만 애플리케이션이 구동되게 한다.
명령실행부(120)는 애플리케이션에서 다양한 이벤트가 실행되게 유도한다. 명령실행부(120)는 애플리케이션의 기능과 구조에 대응하여 실행 시나리오 및 입력 데이터를 준비하고, 실행 시나리오를 구동중인 애플리케이션 상에서 실행시키거나, 입력 데이터를 입력하는 등의 방식으로 이벤트를 실행시킨다. 예를 들어, 금융 관련 애플리케이션이라면, 계좌정보 조회, 공인인증서 관리, 비밀번호 관리, 잔액 조회, 계좌이체 등의 기능에 접근할 수 있는 실행 시나리오 및 입력 데이터가 설계된다.
특징데이터 추출부(130)는 구동 중인 애플리케이션으로부터 동적 특징데이터를 추출한다. 추출되는 동적 특징데이터는 이진코드 형태인 것이 바람직하다. 동적 특징데이터는 구동 중인 애플리케이션에서 시계열적으로 순차 추출되므로, 이진코드가 나열된 순서는 추출 시간 정보가 포함된다.
애플리케이션이 난독화 또는 패킹(암호화 또는 압축)되어 있는 경우, 정적 분석 방법으로는 악성코드의 특징정보를 추출하는 것이 불가능하거나 매우 제한적이다. 하지만, 난독화 또는 패킹된 애플리케이션이라 하더라도 구동 중에는 악성코드의 특징이 실행되기 때문에 시간에 따라 추출되는 데이터들을 분석하면 정적 분석으로는 발견되지 않는 악성코드를 탐지 및 분류할 수 있게 된다.
애플리케이션의 동적 특징데이터 추출은 바이너리 인스트루먼테이션(dynamic binary instrumentation, DBI) 도구가 이용될 수 있다. 동적 인스트루먼테이션 도구에는 DynamoRIO 플랫폼, Pin-A Dynamic Binary Instrumentation Tool(Microsoft Windows 환경), Valgrind(Linux 환경), Frida(Android 환경), QBDI(QuarkslaB Dynamic binary Instrumentation) 등이 있다. 이 중 QBDI는 교차 플랫폼 및 교차 아키텍처 DBI 프레임워크로서 Linux, Android, iOS, Windows 등의 환경을 다양하게 지원한다.
특히, 특징데이터 추출부(130)는 추출하는 데이터 중에서 특징정보를 선택적으로 선별한다. 특징정보란 악성코드의 동작 특징이 나타날 수 있는 데이터이다. 애플리케이션의 구동 시간이 길어지면 추출되는 데이터도 많아지므로 악성코드 진단율도 다소 증가된다. 하지만, 추출된 데이터 중 악성코드 진단에 도움이 되는 데이터는 일부에 불과하다.
이 실시예의 특징데이터 추출부(130)는 악성코드 진단에 도움이 되는 데이터만을 선별함으로써 분석 대상이 되는 데이터 볼륨을 현저히 감소시킨다. 또한, 분석 대상 데이터 볼륨이 감소되면 악성코드를 진단하기 위해 분석에 소요되는 시간도 단축된다.
특징정보에는 애플리케이션의 구동 중 실제로 호출되는 API들의 종류와 호출 순서(sequence), API 호출 빈도, 시스템 콜(system call)의 순서나 호출 빈도, 콜 스택 정보(또는 콜 스택 프레임 할당 해제 패턴), 동적 힙 할당 패턴(dynamic heap allocation pattern), 제어흐름그래프(Control Flow Graph), 함수 호출 그래프(Call Graph), n-gram opcode, 프로세스간 통신(Inter-Process Communication, IPC) 정보 및 컴포넌트간 통신(Inter-component communication) 정보, 네트워크 접근 정보 등이 포함될 수 있다. 악성코드에 감염되거나, 악성코드에 준하는 동작이 포함된 애플리케이션은 정상 애플리케이션과 대비할 때 호출하는 API 종류에서 차이가 있다. 또한, 악성코드는 API를 호출하는 순서에서도 정상 애플리케이션과 차별되는 특징이 있다.
또한, 특징정보는 애플리케이션의 구동 중 나타나는 명령어들의 순차 즉, 실행 순서를 반영하는 n-gram opcode를 포함할 수 있다.
또한, 특징정보는 애플리케이션의 구동 중 추출되는 동적 제어흐름그래프(control-flow graph, CFG)를 포함할 수 있다. 제어흐름그래프는 기본블록(Basic block)들의 실행 순서를 나타낸다.
또한, 특징정보는 애플리케이션의 구동 중 추출되는 CG(call graph)를 포함할 수 있다. CG는 메소드(함수, 프로시저)들의 호출 순서 정보를 포함한다.
또한, 특징정보는 콜 스택(call stack) 정보 또는 콜 스택 프레임(call stack frame) 할당 정보를 포함한다. 앱(또는 프로그램) 실행 중 함수가 호출되면 콜 스택 프레임이 스택에 쌓이고, 함수가 복귀(return)하면 해당 콜 스택 프레임이 제거되는데, 이러한 정보들은 악성 행위와 관련 가능성이 있다.
또한, 특징정보는 동적 힙 할당(dynamic heap allocation)과 관련된 정보를 포함할 수 있다. malloc()/calloc()/free() 등의 인터페이스를 사용하여 프로그램 실행 중 동적으로 메모리 공간이 할당되고 해제되는데, 이러한 정보들도 악성 행위를 판단하는데 단서가 될 수 있다.
또한, 특징정보는 애플리케이션의 구동 중 추출되는 IPC나 소프트웨어 컴포넌트들 간의 통신 정보를 포함할 수 있다. 이것에는 프로세스들 간의 통신 정보나 안드로이드 인텐트 정보 등이 포함된다.
또한, 특징정보는 애플리케이션의 구동 중 추출되는 C&C 서버 등과 통신하는 네트워크 접근 정보를 포함할 수 있다. 네트워크 접근 정보에는 유무선으로 통신하는 IP주소, 포트번호, Wi-Fi 정보, 블루투스 정보, GPS 정보, NFC 통신정보 등이 포함된다.
도 2를 참조하면, 이 실시예의 변환부(140)에서 생성된 패턴데이터는 사운드 포맷의 데이터이다.
또한, 악성코드 검사부(160)의 머신러닝은 동적 데이터 분석에 강인한 머신러닝 알고리즘이 이용된다.
변환부(140)는 동적 특징데이터의 이진코드(Binary)를 MIDI(Musical Instrument Digital Interface) 포맷으로 변환한다. 또한, 변환된 MIDI 포맷의 동적 특징데이터를 wav 포맷 또는 MFCC(Mel-Frequency Cepstral Coefficients) 포맷으로 재 변환한다.
MIDI는 디지털 음원 생성을 위한 언어로서, 음원은 아니지만, 음에 대한 정보를 기록한다. MIDI에는 악기의 종류, 음의 높낮이, 감쇠(Attenuation), 동시 연구되는 악기를 의미하는 채널, Note ON/OFF 등의 정보들이 포함된다.
하나의 채널은 하나의 악기로 볼 수 있다. 복수의 채널이 설정되면 여러 악기의 협연으로 볼 수 있다. 5선지에 악기별로 음표가 작성되듯 채널별로 음표가 설정된다.
변환부(140)는 동적 특징데이터의 이진코드를 1 바이트 단위로 분할하여 MIDI 포맷으로 변환한다.
피치(Pitch)는 음의 높낮이를 의미하는 주파수이고, 이것은 음표로 나타낼 수 있다. MIDI에서 음표의 범위는 0 부터 127 까지, 즉 7 비트까지의 데이터를 표현할 수 있다. 그러나 1 바이트는 8 비트로서, 0 내지 255까지 나타낼 수 있으므로, MIDI 음표에서는 1 바이트를 음표로 표현하는 것이 불가능하다. 이 문제를 해결하기 위해, 변환부(140)는 1 바이트의 8 비트 중 2개의 비트를 제1채널의 음표로 설정하고, 나머지 6개의 비트를 제2채널의 음표로 설정한다. 제1채널은 0 내지 3까지 4개의 음을 출력하는 악기인 것으로 가정하고, 제2채널은 0 내지 63까지 64개의 음을 출력하는 악기인 것으로 가정하여 두 개의 악기가 동시에 하모니를 이루는 것으로 가정하는 것이다. 이러한 방식으로 1 바이트를 나누어 MIDI화하면, 하나의 음이 재생되는 타이밍에 256개(1 바이트)의 정보를 모두 담을 수 있게 된다.
또한, 변환부(140)는 제1채널과 제2채널에서 음이 서로 중복되는 것을 방지하기 위해, 적어도 어느 하나의 채널에 가중치를 더한 후 MIDI 포맷으로 변환한다. 즉, 제1채널의 음표가 설정되는 범위와, 제2채널의 음표가 설정되는 범위가 중복되지 않게 한다. 예를 들어, 제1채널의 이진 값이 11이고, 제2채널의 이진 값이 000011이면, 두 채널의 음표가 동일 위치에 설정되어 데이터의 식별이 어렵게 된다. 이 문제의 해결을 위해, 이 실시예는 제2채널의 이진 값에 가중치 24를 더한 후 음표를 설정하였다. 24를 더한 이유는 피아노가 최대 88개의 음을 가지는 것에 착안하여 6 비트로 표현되는 최대값이 24와 더해질 때 88이 되게 한 것이다. 제2채널에 더해진 수 24에 의해, 제2채널은 0 내지 23에 해당되는 음표가 나타나지 않게 된다. 따라서, 0 내지 23의 범위에 나타는 음표는 제1채널의 음표인 것으로 식별할 수 있게 된다.
또한, 제1채널은 4가지의 음을 표현할 수 있으나, 0 내지 23의 넓은 범위에서 음표의 설정이 가능하므로, 음 간 식별력을 강화하기 위해, 이진 값에 가중치를 더하거나 곱해줄 수 있다. 이 실시예는 제1채널의 이진 값에 3을 곱하였다. 이진 값이 1이면 3번째 음표, 2이면 6번째 음표, 3이면 9번째 음표가 설정되므로 제1채널의 음 식별이 더 용이하게 된다.
도 3을 참조하면, 변환부(140)는 MIDI 포맷으로 변환된 동적 특징데이터를 wav 포맷으로 변환한다. MIDI는 음의 정보를 포함하지만, 그 자체가 오디오 파일은 아니다. wav 포맷으로 변환된 동적 특징데이터는 오디오 재생이 가능하게 된다.
wav 파일은 16 비트, 44100Hz의 일반적 수준으로 변환되었을 때 1초당 87KB의 용량을 가진다. 샘플링 레이트(sampling rate)가 높을수록 정교한 오디오가 재생되지만, 일정 수준을 넘으면 오히려 wav 파일의 크기가 너무 크게 되어 오디오 분석에 투입되는 자원이 과도하게 된다. 따라서, 이 실시예는 샘플링 레이트를 22050 Hz 이하로 설정하였다.
또한, 변환부(140)는 MIDI 포맷 또는 wav 포맷의 동적 특징데이터를 MFCC(Mel-frequency cepstral coefficients) 포맷으로 변환할 수 있다.
악성코드 검사부(160)는 사운드 포맷의 패턴데이터에서 악성코드 포함 여부를 진단하기 위해, 동적 데이터 분석에 강인한 머신러닝 알고리즘을 이용한다. 동적 데이터 분석에 강인한 머신러닝 알고리즘이란, 시계열(time series) 패턴 또는 서열(sequence) 데이터 분석의 수학적 모델링 분석에 적합한 알고리즘으로서, 재생시간이라는 시간 정보가 포함된 사운드 포맷의 패턴데이터를 정밀하게 분석하는데 적합하다.
예를 들어, 합성곱신경망(Convolutional Neural Network, CNN)은 이미지 분석에 특화된 알고리즘이다. Google의 AlphaGo, Facebook의 얼굴인식 알고리즘 등이 CNN을 이용하는 대표적인 사례이다. CNN은 특정 입력에 대응하는 최적의 출력을 찾아주는 성능이 뛰어나지만, 현재의 출력이 과거의 입력에 영향을 받는 시간적 종속성(temporal dependency)은 표현하지 못한다. 반면, 순환신경망(Recurrent Neural Network, RNN)은 시계열(time series) 패턴 또는 서열(sequence) 데이터 분석의 수학적 모델링에 적합하다. 일정 시간 간격으로 시간에 종속적으로 측정된 시계열(time series)자료에는 주가(stock), 매출액, 물가지수, 환율, 실업률 등이 있다. 또한, 순서가 의미를 가지는 서열(sequence)자료에는 텍스트, 음성, 동영상, DNA 가닥의 염기쌍 등이 있다. RNN은 현재의 출력이 과거의 입력에 영향을 받는 시간적 종속성(temporal dependency)을 표현하는 능력을 가지고 있다. RNN을 시간 전개에 따라 신경망 구조를 전개하면 전향신경망(feed-forward network)과 같은 구조를 나타낸다. 따라서, RNN은 음성, 동영상, 언어 모델 분석에 다수 활용되고 있다.
이 실시예의 악성코드 검사부(160)는 사운드화된 패턴데이터의 분석을 위해 RNN을 이용하였다.
악성코드 검사부(160)의 정확한 악성코드 진단을 위해, 머신러닝 알고리즘은 사전에 공지된 악성코드로부터 변환된 사운드 패턴으로 학습이 실시된다. 학습부(180)는 공지된 악성코드들을 사운드 패턴화하여 악성코드 검사부(160)의 머신러닝에 입력한다. 학습부(180)가 변환하는 악성코드의 사운드 패턴은 변환부(140)에서 변환하는 패턴데이터와 동일 포맷인 것이 바람직하다.
학습부(180)는 공지된 악성코드를 멀웨어 패밀리(Malware family)에 따라 분류한 후 머신러닝에 학습시킨다. 이로써 악성코드 검사부(160)는 악성코드의 멀웨어 패밀리 종류도 자동 분류할 수 있게 된다.
도 4는 멀웨어 패밀리의 예를 나타낸 표이다. 악성코드는 유형에 따라 멀웨어 패밀리로 분류할 수 있다. 악성코드의 유형에는 바이러스, 웜, 트로이목마, 백도어, 논리폭탄, 봇(bot), 에드웨어, 스파이웨어, 랜섬웨어 등이 있다. 멀웨어 패밀리는 이러한 악성코드를 유형별로 분류하는 기준이 된다.
멀웨어 패밀리의 카테고리에 따라, 치료, 삭제, 백업 등 대응 방법도 상이하다. 따라서, 악성코드 검사부(160)가 악성코드 탐지 후 해당 악성코드의 멀웨어 패밀리를 분류하면 해당 악성코드의 기능을 파악하고, 대응방법을 선택하는 것이 더 용이해진다.
이어서, 도 5를 참조하여 본 발명의 실시예에 따른 멀웨어 탐지 분류 방법을 설명한다.
본 발명의 실시예에 따른 멀웨어 탐지 분류 방법은 구동부(110)가 악성코드 진단 대상 애플리케이션을 구동시키는 단계(S110); 명령실행부(120)가 구동 상태의 애플리케이션을 대상으로 기 설정된 이벤트를 실행시키는 단계(S120); 특징데이터 추출부(130)가 이벤트가 실행되는 애플리케이션으로부터 동적 특징데이터를 추출하는 단계(S130); 변환부(140)가 동적 특징데이터를 패턴화하여 패턴데이터를 생성하는 단계(S140); 및 악성코드 검사부(160)가 머신러닝을 이용하여 패턴데이터의 악성코드 포함 여부를 진단하는 단계(S160)를 포함한다.
본 발명의 실시예에 따른 멀웨어 탐지 분류 방법의 각 단계는 멀웨어 탐지 분류 시스템(100)에서 설명된 세부적인 기능과 특징을 더 포함할 수 있다.
이상에서 본 발명의 바람직한 실시예를 설명하였으나, 본 발명은 다양한 변화와 변경 및 균등물을 사용할 수 있다. 본 발명은 상기 실시예를 적절히 변형하여 동일하게 응용할 수 있음이 명확하다. 따라서 상기 기재 내용은 다음 특허청구범위의 한계에 의해 정해지는 본 발명의 범위를 한정하는 것이 아니다.
100 : 멀웨어 탐지 분류 시스템
110 : 구동부
120 : 명령실행부 130 : 특징데이터 추출부
140 : 변환부 160 : 악성코드 검사부
180 : 학습부
120 : 명령실행부 130 : 특징데이터 추출부
140 : 변환부 160 : 악성코드 검사부
180 : 학습부
Claims (9)
- 구동 상태의 애플리케이션을 대상으로 기 설정된 이벤트를 실행시키는 명령실행부;
상기 명령실행부의 이벤트가 실행되는 애플리케이션으로부터 동적 특징데이터를 추출하는 특징데이터 추출부;
상기 특징데이터 추출부가 추출한 동적 특징데이터를 패턴화하여 패턴데이터를 생성하는 변환부; 및
머신러닝을 이용하여 상기 패턴데이터의 악성코드 포함 여부를 진단하는 악성코드 검사부를 포함하는 것을 특징으로 하는 멀웨어 탐지 분류 시스템. - 제1항에 있어서,
상기 특징정보에는 애플리케이션의 구동 중 호출되는 API들의 종류 또는 호출 순서(sequence), API 호출 빈도, 시스템 콜(system call)의 순서 또는 호출빈도, 함수 호출 및 복귀와 관련된 콜 스택 정보, 콜 스택 프레임 할당 해제 패턴, 애플리케이션 실행 시 동적으로 할당되고 해제되는 동적 힙 할당 패턴(dynamic heap allocation pattern), 애플리케이션의 구동 중 나타나는 명령어들의 실행 순서를 반영하는 n-gram opcode, 애플리케이션의 구동 중 기본블록(Basic block)들의 실행 순서를 나타내는 동적 제어흐름그래프(control-flow graph, CFG), 애플리케이션의 구동 중 메소드(함수, 프로시저)들의 호출 순서 정보를 포함하는 CG(call graph), 프로세스간 통신(Inter-Process Communication)정보, 컴포넌트간 통신(Inter-component communication)정보, 네트워크 접근 정보 중 적어도 하나를 포함하는 것을 특징으로 하는 멀웨어 탐지 분류 시스템. - 제1항에 있어서,
상기 변환부에서 생성된 패턴데이터는 사운드 포맷의 데이터이고,
상기 머신러닝은 동적 데이터 분석에 강인한 머신러닝 알고리즘인 것을 특징으로 하는 멀웨어 탐지 분류 시스템. - 제3항에 있어서,
상기 변환부는 상기 동적 특징데이터의 이진코드를 MIDI 포맷으로 변환한 후, 변환된 MIDI 포맷의 동적 특징데이터를 wav 포맷 또는 MFCC(Mel-Frequency Cepstral Coefficients) 포맷으로 변환하는 것으로 패턴데이터를 생성하는 것을 특징으로 하는 멀웨어 탐지 분류 시스템. - 제4항에 있어서,
상기 변환부는 동적 특징데이터의 MIDI 포맷 변환 시, 동적 특징데이터를 1 바이트 단위로 분할한 후, 상기 1 바이트를 2 비트로 구성된 제1채널과, 6 비트로 구성된 제2채널로 구성하는 것을 특징으로 하는 멀웨어 탐지 분류 시스템. - 제5항에 있어서,
상기 변환부는 제1채널과 제2채널의 음이 서로 중복되지 않게 어느 하나의 채널에 가중치를 더한 후 MIDI 포맷으로 변환하는 것을 특징으로 하는 멀웨어 탐지 분류 시스템. - 제3항에 있어서,
상기 머신러닝의 학습을 위해, 공지된 악성코드를 상기 패턴데이터와 동일한 포맷으로 변환하여 상기 머신러닝에 입력하는 학습부를 더 포함하는 것을 특징으로 하는 멀웨어 탐지 분류 시스템. - 제7항에 있어서,
상기 학습부는 멀웨어 패밀리(Malware family)에 따라 공지된 악성코드를 분류한 후 머신러닝에 입력하고,
상기 악성코드 검사부는 탐지된 악성코드의 멀웨어 패밀리 종류를 자동 분류하는 것을 특징으로 하는 멀웨어 탐지 분류 시스템. - 명령실행부가 구동 상태의 애플리케이션을 대상으로 기 설정된 이벤트를 실행시키는 단계;
특징데이터 추출부가 이벤트가 실행되는 상기 애플리케이션으로부터 동적 특징데이터를 추출하는 단계;
변환부가 상기 동적 특징데이터를 패턴화하여 패턴데이터를 생성하는 단계; 및
악성코드 검사부가 머신러닝을 이용하여 상기 패턴데이터의 악성코드 포함 여부를 진단하는 단계를 포함하는 것을 특징으로 하는 멀웨어 탐지 분류 방법.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020180152680A KR20200071822A (ko) | 2018-11-30 | 2018-11-30 | 애플리케이션의 동적 특징정보 및 머신러닝을 이용하여 멀웨어를 탐지 분류하는 시스템 및 방법 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020180152680A KR20200071822A (ko) | 2018-11-30 | 2018-11-30 | 애플리케이션의 동적 특징정보 및 머신러닝을 이용하여 멀웨어를 탐지 분류하는 시스템 및 방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20200071822A true KR20200071822A (ko) | 2020-06-22 |
Family
ID=71142434
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020180152680A KR20200071822A (ko) | 2018-11-30 | 2018-11-30 | 애플리케이션의 동적 특징정보 및 머신러닝을 이용하여 멀웨어를 탐지 분류하는 시스템 및 방법 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR20200071822A (ko) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112861135A (zh) * | 2021-04-12 | 2021-05-28 | 中南大学 | 基于注意力机制的恶意代码检测方法 |
WO2022107963A1 (ko) * | 2020-11-20 | 2022-05-27 | 숭실대학교 산학협력단 | Api 호출 그래프 추출 기반 모바일 애플리케이션 악성 행위 패턴 탐지 방법, 이를 수행하기 위한 기록 매체 및 장치 |
KR102518394B1 (ko) | 2021-09-30 | 2023-04-05 | 단국대학교 산학협력단 | 설명 가능한 딥러닝 분석을 활용한 멀웨어 패밀리 분류 네트워크 시스템 |
SE2151287A1 (en) * | 2021-10-21 | 2023-04-22 | Assa Abloy Ab | Transmitting data for detecting suspicious activity by an electronic device |
US11768938B2 (en) | 2020-11-20 | 2023-09-26 | Foundation Of Soongsil University-Industry Cooperation | Mobile application malicious behavior pattern detection method based on API call graph extraction and recording medium and device for performing the same |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20150044490A (ko) | 2013-10-16 | 2015-04-27 | (주)이스트소프트 | 안드로이드 악성 애플리케이션의 탐지장치 및 탐지방법 |
-
2018
- 2018-11-30 KR KR1020180152680A patent/KR20200071822A/ko not_active Application Discontinuation
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20150044490A (ko) | 2013-10-16 | 2015-04-27 | (주)이스트소프트 | 안드로이드 악성 애플리케이션의 탐지장치 및 탐지방법 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022107963A1 (ko) * | 2020-11-20 | 2022-05-27 | 숭실대학교 산학협력단 | Api 호출 그래프 추출 기반 모바일 애플리케이션 악성 행위 패턴 탐지 방법, 이를 수행하기 위한 기록 매체 및 장치 |
US11768938B2 (en) | 2020-11-20 | 2023-09-26 | Foundation Of Soongsil University-Industry Cooperation | Mobile application malicious behavior pattern detection method based on API call graph extraction and recording medium and device for performing the same |
CN112861135A (zh) * | 2021-04-12 | 2021-05-28 | 中南大学 | 基于注意力机制的恶意代码检测方法 |
CN112861135B (zh) * | 2021-04-12 | 2024-05-31 | 中南大学 | 基于注意力机制的恶意代码检测方法 |
KR102518394B1 (ko) | 2021-09-30 | 2023-04-05 | 단국대학교 산학협력단 | 설명 가능한 딥러닝 분석을 활용한 멀웨어 패밀리 분류 네트워크 시스템 |
SE2151287A1 (en) * | 2021-10-21 | 2023-04-22 | Assa Abloy Ab | Transmitting data for detecting suspicious activity by an electronic device |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR20200071822A (ko) | 애플리케이션의 동적 특징정보 및 머신러닝을 이용하여 멀웨어를 탐지 분류하는 시스템 및 방법 | |
US11082441B1 (en) | Systems and methods for detecting data anomalies by analysing morphologies of known and/or unknown cybersecurity threats | |
US9230106B2 (en) | System and method for detecting malicious software using malware trigger scenarios in a modified computer environment | |
US8850581B2 (en) | Identification of malware detection signature candidate code | |
CN103679031B (zh) | 一种文件病毒免疫的方法和装置 | |
US7069583B2 (en) | Detection of polymorphic virus code using dataflow analysis | |
KR102317833B1 (ko) | 악성 코드 탐지 모델 학습 방법 및 이를 이용한 탐지 방법 | |
US20080289042A1 (en) | Method for Identifying Unknown Virus and Deleting It | |
US20050154900A1 (en) | Detecting malicious computer program activity using external program calls with dynamic rule sets | |
RU2430411C1 (ru) | Система и способ обнаружения вредоносного программного обеспечения | |
JP4903223B2 (ja) | 対象コードモニタリング方法及びその装置並びにコードパターン抽出方法及びその装置 | |
CN112084497A (zh) | 嵌入式Linux系统恶意程序检测方法及装置 | |
TW201721497A (zh) | 用以檢測運作時期所產生碼中之惡意碼的系統及方法 | |
CN106355092B (zh) | 用于优化反病毒测定的系统和方法 | |
Farrokhmanesh et al. | A novel method for malware detection using audio signal processing techniques | |
KR102011725B1 (ko) | 악성코드 검출을 위한 화이트리스트 구축 방법 및 이를 수행하기 위한 기록매체 및 장치 | |
CN109783316B (zh) | 系统安全日志篡改行为的识别方法及装置、存储介质、计算机设备 | |
Asyrofi et al. | Crossasr++: A modular differential testing framework for automatic speech recognition | |
US9349002B1 (en) | Android application classification using common functions | |
KR102174475B1 (ko) | 머신러닝을 이용하여 애플리케이션의 난독화 또는 패킹 여부를 식별하는 시스템과, 그것을 포함하는 은폐된 멀웨어 탐지 분류 시스템 및 방법 | |
JP7274162B2 (ja) | 異常操作検知装置、異常操作検知方法、およびプログラム | |
CN112632547A (zh) | 一种数据处理方法和相关装置 | |
KR102140714B1 (ko) | 안드로이드 애플리케이션의 주요부분을 패턴화한 멀웨어 탐지 분류 방법 및 시스템 | |
CN106462704B (zh) | 动态读入代码分析装置和动态读入代码分析方法 | |
CN108319853A (zh) | 病毒特征码处理方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E601 | Decision to refuse application |