KR102174475B1 - 머신러닝을 이용하여 애플리케이션의 난독화 또는 패킹 여부를 식별하는 시스템과, 그것을 포함하는 은폐된 멀웨어 탐지 분류 시스템 및 방법 - Google Patents

머신러닝을 이용하여 애플리케이션의 난독화 또는 패킹 여부를 식별하는 시스템과, 그것을 포함하는 은폐된 멀웨어 탐지 분류 시스템 및 방법 Download PDF

Info

Publication number
KR102174475B1
KR102174475B1 KR1020180155512A KR20180155512A KR102174475B1 KR 102174475 B1 KR102174475 B1 KR 102174475B1 KR 1020180155512 A KR1020180155512 A KR 1020180155512A KR 20180155512 A KR20180155512 A KR 20180155512A KR 102174475 B1 KR102174475 B1 KR 102174475B1
Authority
KR
South Korea
Prior art keywords
data
unit
application
machine learning
static
Prior art date
Application number
KR1020180155512A
Other languages
English (en)
Other versions
KR20200071869A (ko
Inventor
조성제
정재민
Original Assignee
단국대학교 산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 단국대학교 산학협력단 filed Critical 단국대학교 산학협력단
Priority to KR1020180155512A priority Critical patent/KR102174475B1/ko
Publication of KR20200071869A publication Critical patent/KR20200071869A/ko
Application granted granted Critical
Publication of KR102174475B1 publication Critical patent/KR102174475B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • GPHYSICS
    • G02OPTICS
    • G02BOPTICAL ELEMENTS, SYSTEMS OR APPARATUS
    • G02B27/00Optical systems or apparatus not provided for by any of the groups G02B1/00 - G02B26/00, G02B30/00
    • G02B27/01Head-up displays
    • G02B27/017Head mounted
    • G02B27/0172Head mounted characterised by optical features
    • GPHYSICS
    • G03PHOTOGRAPHY; CINEMATOGRAPHY; ANALOGOUS TECHNIQUES USING WAVES OTHER THAN OPTICAL WAVES; ELECTROGRAPHY; HOLOGRAPHY
    • G03HHOLOGRAPHIC PROCESSES OR APPARATUS
    • G03H1/00Holographic processes or apparatus using light, infrared or ultraviolet waves for obtaining holograms or for obtaining an image from them; Details peculiar thereto
    • G03H1/0005Adaptation of holography to specific applications
    • GPHYSICS
    • G03PHOTOGRAPHY; CINEMATOGRAPHY; ANALOGOUS TECHNIQUES USING WAVES OTHER THAN OPTICAL WAVES; ELECTROGRAPHY; HOLOGRAPHY
    • G03HHOLOGRAPHIC PROCESSES OR APPARATUS
    • G03H1/00Holographic processes or apparatus using light, infrared or ultraviolet waves for obtaining holograms or for obtaining an image from them; Details peculiar thereto
    • G03H1/22Processes or apparatus for obtaining an optical image from holograms
    • G03H1/2249Holobject properties
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/044Recurrent networks, e.g. Hopfield networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/0464Convolutional networks [CNN, ConvNet]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/10Geometric effects
    • G06T15/20Perspective computation
    • G06T15/205Image-based rendering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T19/00Manipulating 3D models or images for computer graphics
    • G06T19/006Mixed reality
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/50Depth or shape recovery
    • GPHYSICS
    • G02OPTICS
    • G02BOPTICAL ELEMENTS, SYSTEMS OR APPARATUS
    • G02B27/00Optical systems or apparatus not provided for by any of the groups G02B1/00 - G02B26/00, G02B30/00
    • G02B27/01Head-up displays
    • G02B27/0101Head-up displays characterised by optical features
    • G02B2027/0138Head-up displays characterised by optical features comprising image capture systems, e.g. camera
    • GPHYSICS
    • G02OPTICS
    • G02BOPTICAL ELEMENTS, SYSTEMS OR APPARATUS
    • G02B27/00Optical systems or apparatus not provided for by any of the groups G02B1/00 - G02B26/00, G02B30/00
    • G02B27/01Head-up displays
    • G02B27/017Head mounted
    • G02B27/0172Head mounted characterised by optical features
    • G02B2027/0174Head mounted characterised by optical features holographic
    • GPHYSICS
    • G02OPTICS
    • G02BOPTICAL ELEMENTS, SYSTEMS OR APPARATUS
    • G02B27/00Optical systems or apparatus not provided for by any of the groups G02B1/00 - G02B26/00, G02B30/00
    • G02B27/01Head-up displays
    • G02B27/017Head mounted
    • G02B2027/0178Eyeglass type
    • GPHYSICS
    • G02OPTICS
    • G02BOPTICAL ELEMENTS, SYSTEMS OR APPARATUS
    • G02B27/00Optical systems or apparatus not provided for by any of the groups G02B1/00 - G02B26/00, G02B30/00
    • G02B27/01Head-up displays
    • G02B27/0179Display position adjusting means not related to the information to be displayed
    • G02B2027/0187Display position adjusting means not related to the information to be displayed slaved to motion of at least a part of the body of the user, e.g. head, eye
    • GPHYSICS
    • G03PHOTOGRAPHY; CINEMATOGRAPHY; ANALOGOUS TECHNIQUES USING WAVES OTHER THAN OPTICAL WAVES; ELECTROGRAPHY; HOLOGRAPHY
    • G03HHOLOGRAPHIC PROCESSES OR APPARATUS
    • G03H1/00Holographic processes or apparatus using light, infrared or ultraviolet waves for obtaining holograms or for obtaining an image from them; Details peculiar thereto
    • G03H1/22Processes or apparatus for obtaining an optical image from holograms
    • G03H1/2249Holobject properties
    • G03H2001/2252Location of the holobject
    • G03H2001/2255Holobject out of Fourier or hologram planes

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Computing Systems (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Artificial Intelligence (AREA)
  • Computational Linguistics (AREA)
  • Computer Graphics (AREA)
  • Molecular Biology (AREA)
  • Optics & Photonics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Virology (AREA)
  • Computational Mathematics (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Geometry (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Storage Device Security (AREA)

Abstract

본 발명은 애플리케이션의 난독화 또는 패킹(암호화 또는 압축) 여부를 선행 분석하고, 난독화된 경우 및 패킹된 경우에 대응하여 특화된 악성코드 탐지 및 분류 알고리즘이 실행되는 은폐된 멀웨어 탐지 및 분류 시스템에 관한 기술로서, 악성코드 진단 대상 애플리케이션을 분석하여 난독화 또는 패킹 여부를 판단하는 은폐 검사부, 애플리케이션에서 특징데이터를 추출하는 데이터 추출부, 데이터 추출부가 추출한 특징데이터를 패턴화하여 패턴데이터를 생성하는 데이터 변환부, 및 데이터 변환부가 생성한 패턴데이터를 종래 악성코드 패턴이 학습된 머신러닝을 이용하여 악성코드 포함 여부를 진단하는 멀웨어 진단부를 포함한다.

Description

머신러닝을 이용하여 애플리케이션의 난독화 또는 패킹 여부를 식별하는 시스템과, 그것을 포함하는 은폐된 멀웨어 탐지 분류 시스템 및 방법 {A SYSTEM FOR DETECTING OBFUSCATION OR PACKING OF AN APPLICATION USING MACHINE LEARNING, AND CONCEALED MALWARE DETECTION AND CLASSIFICATION SYSTEM AND METHODS INCLUDING IT}
본 발명은 머신러닝을 이용하여 애플리케이션의 난독화 또는 패킹 여부를 식별하는 시스템과, 그것을 포함하는 은폐된 멀웨어 탐지 분류 시스템 및 방법에 관한 것으로서, 보다 상세하게는 애플리케이션의 난독화 또는 패킹(암호화 또는 압축) 여부를 선행 분석하고, 난독화된 경우 및 패킹된 경우에 대응하여 특화된 악성코드 탐지 및 분류 알고리즘이 실행되는 은폐된 멀웨어 탐지 및 분류 시스템에 관한 기술이다.
역공학(reverse engineering) 기술을 이용하여 실행코드를 역공학하여 애플리케이션의 소스코드를 조회하고, 조회된 소스코드를 복제하여 이용하거나, 악의적으로 해를 입히는 동작을 추가하는 사례가 증가하고 있다. 이에 대응하여 개발자들은 자신들의 애플리케이션이 역공학되는 것을 방지하기 위한 다양한 방안을 모색하고 있다.
대표적인 애플리케이션 역공학을 방지하기 위한 기술에는 코드 난독화(code obfuscation) 및 패킹(packing)이 있다. 여기서 패킹은 암호화, 인코딩, 압축 등의 변환 기법을 포함한다.
코드 난독화는 소스코드나 실행코드를 해석하기 어렵게 만드는 기술을 의미한다. 난독화는 대상에 따라 크게 소스코드 난독화와 바이너리 난독화로 나눌 수 있다. 소스코드 난독화는 C/C++/JAVA 등의 소스코드를 알아보기 힘든 형태로 바꾸는 기술이고, 바이너리 난독화는 컴파일 후 생성된 바이너리를 역공학으로 분석하기 어렵게 변환하는 기술이다. 난독화 기법에는 레이아웃 난독화(layout obfuscation), 제어 난독화(제어흐름 난독화, control obfuscation = control flow obfuscation), 데이터 난독화(data obfuscation), 예방적 변환(preventive transformations) 등이 있다.
패킹은 소스코드를 분석하기 어렵도록 암호화 또는 인코딩하거나 압축하는 연산(동작), 불필요한 코드를 인위적으로 삽입하는 연산(동작) 등을 포함한다. 암호화의 경우, 애플리케이션을 특정 키를 이용하여 암호화 하여 배포하거나 저장하면서, 필요 시 이를 해당 키를 이용해 복호화 해야 정상적으로 애플리케이션이 실행될 수 있게 한다. 강력한 패킹 도구는 수십 내지 수백 번의 패킹을 하고, 코드 중간에 안티 디버깅 기술도 함께 포함하여 해석이 곤란하게 한다.
하지만, 이러한 역공학 방지 기술은 악성코드에서도 많이 이용되고 있다. 악성코드 제작자도 악성코드의 존재를 은폐하기 위해 악성코드를 난독화 또는 패킹 하고 있으며, 이로써 종래의 진단 방법으로는 악성코드를 탐지하기가 어려워지고 있다.
종래 악성코드 탐지의 한계점을 극복하기 위해 머신러닝 기법이 도입되고 있다.
악성코드를 분석하는 방식으로는 크게 정적 분석과 동적 분석이 존재한다. 악성코드를 실행하지 않고 디컴파일 혹은 디어셈블된 코드를 분석하는 방법인 정적 분석은 코드 커버리지(Code coverage)가 높다는 장점을 가지나, 분석에 많은 시간이 소요되며 난독화 등의 분석 방해 기법에 의해 제한적으로 이용이 가능하다. 반면, 동적 분석은 악성코드를 제한된 환경에서 실행하며 일부를 분석하는 방법이다. 이는 분석 방해 기법으로부터 상대적으로 자유로우며 상대적으로 적은 분석 시간을 요구한다는 장점이 있으나, 코드 커버리지가 협소하여 Logic bomb이나 Time bomb 등에 대처가 힘들고, 제한된 환경을 구성하기가 복잡하다는 단점이 있다.
한국등록특허공보 제10-1809159호
이에 본 발명은 상기와 같은 종래의 제반 문제점을 해소하기 위해 제안된 것으로, 본 발명의 목적은 애플리케이션의 난독화 또는 패킹(암호화 또는 압축) 여부를 선행 분석하고, 난독화된 경우 및 패킹된 경우에 대응하여 특화된 악성코드 탐지 및 분류 알고리즘이 실행되는 은폐된 멀웨어 탐지 분류 시스템을 제공하기 위한 것이다.
상기와 같은 목적을 달성하기 위하여 본 발명의 기술적 사상에 의한 머신러닝을 이용하여 애플리케이션의 난독화 또는 패킹 여부를 식별하는 시스템과, 그것을 포함하는 은폐된 멀웨어 탐지 분류 시스템은 악성코드 진단 대상 애플리케이션을 분석하여 난독화 또는 패킹 여부를 판단하는 은폐 검사부; 상기 애플리케이션에서 특징데이터를 추출하는 데이터 추출부; 상기 데이터 추출부가 추출한 특징데이터를 패턴화하여 패턴데이터를 생성하는 데이터 변환부; 및 상기 데이터 변환부가 생성한 패턴데이터를 종래 악성코드 패턴이 학습된 머신러닝을 이용하여 악성코드 포함 여부를 진단하는 멀웨어 진단부를 포함하는 것을 특징으로 한다
또한, 상기 멀웨어 진단부는, 상기 애플리케이션이 난독화 된 경우 상기 패턴데이터를 난독화 데이터셋(set)으로 학습된 난독화진단 머신러닝을 이용하여 악성코드 포함 여부를 진단하고, 상기 애플리케이션이 패킹화 된 경우 상기 패턴데이터를 패킹 데이터셋으로 학습된 패킹진단 머신러닝을 이용하여 악성코드 포함 여부를 진단하며, 상기 애플리케이션이 난독화 또는 패킹되지 않은 경우 상기 패턴데이터를 비(非)은폐 데이터셋으로 학습된 비은폐진단 머신러닝을 이용하여 악성코드 포함 여부를 진단하는 것을 특징으로 할 수 있다.
또한, 상기 은폐 검사부는, 상기 애플리케이션을 이미지 포맷으로 패턴화하는 은폐 변환부; 상기 은폐 변환부가 패턴화한 애플리케이션을 대상으로 난독화 또는 패킹 여부를 식별하며, 정적 데이터 분석에 강인한 은폐검사 머신러닝을 포함하는 은폐 진단부로 구성되는 것을 특징으로 할 수 있다.
또한, 상기 데이터 추출부는 상기 애플리케이션에서 악성코드가 포함될 수 있는 주요부분의 데이터를 특징데이터로서 선택 추출하는 정적 특징 추출부를 포함하고, 상기 데이터 변환부는 상기 주요부분을 이진코드(binary code) 형태로 로드한 후 기 설정된 단위로 분할하고, 분할된 이진코드를 대응되는 명암 또는 색상으로 변환하는 정적 변환부를 포함하고, 상기 멀웨어 진단부는 상기 정적 변환부에서 생성된 패턴데이터를 대상으로 악성코드 포함 여부를 진단하며 정적 데이터 분석에 강인한 머신러닝이 포함되는 정적 진단부를 포함하는 것을 특징으로 할 수 있다.
또한, 상기 주요부분은 상기 애플리케이션의 실행코드 영역인 것을 특징으로 할 수 있다.
또한, 상기 데이터 추출부는, 상기 애플리케이션을 구동시키는 구동부; 구동 상태의 애플리케이션을 대상으로 기 설정된 이벤트를 실행시키는 명령실행부; 상기 명령실행부의 이벤트가 실행되는 애플리케이션으로부터 특징데이터를 추출하는 동적 특징 추출부를 포함하고, 상기 데이터 변환부는 상기 특징데이터를 사운드 포맷의 패턴데이터로 변환하는 동적 변환부를 포함하고, 상기 멀웨어 진단부는 상기 동적 변환부에서 생성된 패턴데이터를 대상으로 악성코드 포함 여부를 진단하며 동적 데이터 분석에 강인한 머신러닝이 포함되는 동적 진단부를 포함하는 것을 특징으로 할 수 있다.
또한, 상기 동적 변환부는 상기 특징데이터의 이진코드를 MIDI 포맷으로 변환한 후, 변환된 MIDI 포맷의 특징데이터를 wav 포맷 또는 MFCC(Mel-Frequency Cepstral Coefficients) 포맷으로 변환하는 것으로 패턴데이터를 생성하는 것을 특징으로 할 수 있다.
또한, 상기 동적 변환부는 특징데이터의 MIDI 포맷 변환 시, 특징데이터를 1 바이트 단위로 분할한 후, 상기 1 바이트를 2 비트로 구성된 제1채널과, 6 비트로 구성된 제2채널로 구성하는 것을 특징으로 할 수 있다.
또한, 상기 동적 변환부는 상기 제1채널과 상기 제2채널의 음이 서로 중복되지 않게 어느 하나의 채널에 가중치를 더한 후 MIDI 포맷으로 변환하는 것을 특징으로 할 수 있다.
또한, 상기 멀웨어 진단부의 머신러닝을 학습하기 위해, 공지된 악성코드를 상기 패턴데이터와 동일한 포맷으로 변환하여 상기 머신러닝에 입력하는 학습부를 더 포함하고, 상기 학습부는 멀웨어 패밀리(Malware family)에 따라 공지된 악성코드를 분류한 후 머신러닝에 입력하며, 상기 멀웨어 검사부는 악성코드 탐지 시 멀웨어 패밀리 종류를 자동 분류하는 것을 특징으로 할 수 있다.
한편, 상기와 같은 목적을 달성하기 위하여 본 발명의 기술적 사상에 의한 은폐된 멀웨어 탐지 분류 방법은 (a)은폐 검사부가 악성코드 진단 대상 애플리케이션을 분석하여 난독화 또는 패킹 여부를 판단하는 단계; (b)데이터 추출부가 상기 애플리케이션에서 특징데이터를 추출하는 단계; (c)데이터 변환부가 상기 특징데이터를 패턴화하여 패턴데이터를 생성하는 단계; 및 (d)멀웨어 진단부가 상기 패턴데이터를 종래 악성코드 패턴이 학습된 머신러닝을 이용하여 악성코드 포함 여부를 진단하는 단계를 포함하는 것을 특징으로 한다.
또한, 상기 (a) 단계는, 상기 애플리케이션을 이미지 포맷으로 패턴화하는 단계; 상기 패턴화된 애플리케이션을 대상으로 정적 데이터 분석에 강인한 은폐검사 머신러닝을 이용하여 난독화 또는 패킹 여부를 식별하는 단계를 포함하는 것을 특징으로 할 수 있다.
본 발명에 의한 머신러닝을 이용하여 애플리케이션의 난독화 또는 패킹 여부를 식별하는 시스템과, 그것을 포함하는 은폐된 멀웨어 탐지 분류 시스템 및 방법에 따르면,
첫째, 본 발명은 애플리케이션의 악성코드 진단 전에 애플리케이션의 난독화 또는 패킹(암호화 또는 압축)의 적용 여부를 먼저 확인함으로써, 애플리케이션이 은폐되지 않은 경우, 난독화된 경우, 패킹된 경우를 구분하여 최적의 악성코드 진단을 실시할 수 있게 된다.
둘째, 난독화 또는 패킹되어 정적 분석으로는 탐지가 용이하지 않은 악성코드가 있을 경우 동적 분석이 실시되므로 악성코드의 탐지율이 증가된다.
셋째, 동적 특징 추출부가 특징데이터 중에서 악성코드 진단에 도움이 되는 데이터만을 선별하기 때문에 악성코드 탐지율에 영향을 주지 않으면서도 분석 대상이 되는 데이터 볼륨이 현저히 감소되고, 악성코드를 진단하기 위해 분석에 소요되는 시간이 단축된다.
넷째, 동적 변환부가 동적 데이터를 MIDI 포맷으로 변환할 때, 특징데이터를 1 바이트 단위로 구분한 후, 1 바이트의 8 비트 중 2개의 비트를 제1채널의 음표로 설정하고, 나머지 6개의 비트를 제2채널의 음표로 설정하므로, 하나의 음이 재생되는 타이밍에 128개의 음표만 설정할 수 있는 MIDI 포맷에 256개(1 바이트)의 정보를 모두 담을 수 있게 된다.
다섯째, 동적 변환부가 제1채널과 제2채널 중 적어도 어느 하나의 채널에 가중치를 더한 후 MIDI 포맷으로 변환하므로 제1채널이 음표를 설정하는 범위와, 제2채널이 음표를 설정하는 범위가 중복되지 않게 한다.
여섯째, 동적 진단부는 악성코드 진단을 위해 동적 데이터 분석에 강인한 머신러닝 알고리즘을 이용하므로 재생시간이라는 시간 정보가 포함된 사운드 포맷의 패턴데이터를 정밀하게 분석할 수 있다.
일곱째, 멀웨어 진단부는 악성코드 탐지 후, 해당 악성코드의 멀웨어 패밀리 정보도 함께 제공하므로 악성코드의 기능을 파악하고, 대응방법을 선택하는 것이 더 용이해진다.
도 1은 본 발명의 실시예에 따른 은폐된 멀웨어 탐지 분류 시스템의 구성도.
도 2는 은폐 변환부 또는 정적 변환부가 애플리케이션을 이미지 포맷으로 변환하는 단계에 있어서, 데이터를 구성하는 이진코드를 대응하는 색상으로 변환하여 이미지 포맷의 패턴데이터를 생성하는 과정을 나타내는 도면.
도 3은 안드로이드 애플리케이션에 포함되는 파일을 나타낸 참고 도면.
도 4는 안드로이드 애플리케이션에 포함된 파일 중 classes.dex 파일에 포함된 섹션들과, Data 섹션의 세부 구성을 나타낸 참고 도면.
도 5는 DEX 클래스 구성의 색인(Dex class member indexing)을 나타낸 참고 도면.
도 6은 data 섹션과 class_defs 섹션의 관계를 나타낸 참고 도면.
도 7은 멀웨어 패밀리의 리스트를 나타내는 예시 도면.
도 8은 특징데이터를 사운드 포맷의 패턴데이터로 변환하는 단계에 있어서, 특징데이터를 구성하는 이진코드를 MIDI 포맷으로 변환하는 과정을 나타내는 도면.
도 9는 MIDI 포맷으로 변환된 특징데이터를 wav, MFCC 등 다른 사운드 포맷으로 최종 변환하여 패턴데이터를 생성하는 것을 나타내는 도면.
도 10은 본 발명의 실시예에 따른 은폐된 멀웨어 탐지 분류 방법의 순서도.
첨부한 도면을 참조하여 본 발명의 실시예들에 의한 머신러닝을 이용하여 애플리케이션의 난독화 또는 패킹 여부를 식별하는 시스템과, 그것을 포함하는 은폐된 멀웨어 탐지 분류 시스템 및 방법에 대하여 상세히 설명한다. 본 발명은 다양한 변경을 가할 수 있고 여러 가지 형태를 가질 수 있는바, 특정 실시예들을 도면에 예시하고 본문에 상세하게 설명하고자 한다. 그러나 이는 본 발명을 특정한 개시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 각 도면을 설명하면서 유사한 참조부호를 유사한 구성요소에 대해 사용하였다.
또한, 다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥 상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
본 발명의 실시예는 단일 또는 복수개로 구성된 컴퓨팅 시스템에서 실행되어 각 구성의 기능이 실시될 수 있다.
본 발명은 윈도우즈 환경, 안드로이드 환경, 리눅스 환경, IOS 환경 등 다양한 플랫폼에서 제약 없이 이용 가능하다. 발명을 설명하기 위해 안드로이드 환경을 예시로 사용하지만 이것으로 본 발명의 적용 환경이 안드로이드로 한정되는 것은 아니다.
이 실시예는 악성코드가 포함된 애플리케이션을 탐지 및 분류하기 전에 애플리케이션 전체 또는 일부 영역이 난독화 또는 패킹(암호화 또는 압축)되었는지 탐지하고, 대응되는 방법으로 악성코드의 탐지 및 분류를 실시한다.
본 발명의 실시예에 따른 머신러닝을 이용하여 애플리케이션의 난독화 또는 패킹 여부를 식별하는 시스템은 애플리케이션을 이미지 포맷으로 패턴화하는 은폐 변환부(122)와, 은폐 변환부(122)가 패턴화한 애플리케이션을 대상으로 난독화 또는 패킹 여부를 식별하며, 정적 데이터 분석에 강인한 은폐검사 머신러닝을 포함하는 은폐 진단부(124)로 구성된다.
도 1을 참조하면, 본 발명의 실시예에 따른 은폐된 멀웨어 탐지 분류 시스템(100)은 악성코드 진단 대상 애플리케이션을 분석하여 난독화 또는 패킹 여부를 판단하는 은폐 검사부(120); 애플리케이션에서 특징데이터를 추출하는 데이터 추출부(140); 데이터 추출부(140)가 추출한 특징데이터를 패턴화하여 패턴데이터를 생성하는 데이터 변환부(160); 및 데이터 변환부(160)가 생성한 패턴데이터를 종래 악성코드 패턴이 학습된 머신러닝을 이용하여 악성코드 포함 여부를 진단하는 멀웨어 진단부(180)를 포함한다.
은폐 검사부(120)는, 애플리케이션을 이미지 포맷으로 패턴화하는 은폐 변환부(122)와, 은폐 변환부(122)가 패턴화한 애플리케이션을 대상으로 난독화 또는 패킹 여부를 식별하며, 정적 데이터 분석에 강인한 은폐검사 머신러닝을 포함하는 은폐 진단부(124)로 구성된다.
은폐 진단부(124) 및 멀웨어 진단부(180)의 이용을 위해, 각 구성에 포함된 머신러닝이 학습된다. 먼저, 학습을 위해 6가지 종류의 데이터셋(Data Set)이 준비된다. 제1데이터셋은 난독화 또는 패킹되지 않으며, 악성코드가 포함되지 않은 애플리케이션의 코드로 구성된 데이터이다. 제2데이터셋은 난독화 또는 패킹되지 않으며, 악성코드가 포함된 애플리케이션의 코드로 구성된 데이터이다. 제3데이터셋은 난독화되며, 악성코드가 포함되지 않은 애플리케이션의 코드로 구성된 데이터이다. 제4데이터셋은 난독화되며, 악성코드가 포함된 애플리케이션의 코드로 구성된 데이터이다. 제5데이터셋은 패킹되며, 악성코드가 포함되지 않은 애플리케이션의 코드로 구성된 데이터이다. 제6데이터셋은 패킹되며, 악성코드가 포함된 애플리케이션의 코드로 구성된 데이터이다.
난독화 여부 패킹 여부 악성코드 포함 여부
제1데이터셋 X X X
제2데이터셋 X X O
제3데이터셋 O X X
제4데이터셋 O X O
제5데이터셋 X O X
제6데이터셋 X O O
머신러닝의 학습은 학습부(190)가 지원한다.
먼저, 학습부(190)는 전체 데이터셋을 이용하여 은폐 진단부(124)의 은폐검사 머신러닝을 학습시킨다. 은폐검사 머신러닝은 이미지 포맷으로 패턴화된 데이터를 입력받으므로, 전체 데이터셋을 대응되는 이미지 포맷으로 패턴화 한다. 전체 데이터셋의 패턴화는 후술되는 은폐 변환부(122)의 패턴화 과정과 동일 또는 유사하다. 학습부(190)에 의해 학습된 은폐 진단부(124)의 은폐검사 머신러닝은 애플리케이션의 난독화 여부, 패킹 여부, 비(非)은폐 여부를 판단할 수 있게 된다.
또한, 학습부(190)는 전체 데이터셋을 이용하여 멀웨어 진단부(180)의 머신러닝을 학습시킨다. 멀웨어 진단부(180)는 악성코드 진단 성능 향상을 위해, 특화된 6개의 머신러닝이 포함될 수 있다. 6개의 머신러닝은 비은폐진단 정적 머신러닝, 난독화진단 정적 머신러닝, 패킹진단 정적 머신러닝, 비은폐진단 동적 머신러닝, 난독화진단 동적 머신러닝 및 패킹진단 동적 머신러닝이 포함된다.
학습부(190)는 비은폐진단 정적 머신러닝을 대상으로 제1데이터셋 및 제2데이터셋을 일정한 포맷으로 변환하여 입력하는 것으로 학습시킨다. 정적 머신러닝은 정적 변환부(162)가 변환한 이미지 포맷으로 패턴화된 데이터를 입력 받으므로, 제1데이터셋 및 제2데이터셋도 대응되는 포맷으로 변환된다.
또한, 난독화진단 정적 머신러닝을 대상으로 제3데이터셋 및 제4데이터셋을 이미지 포맷으로 변환하여 입력하는 것으로 학습시킨다.
또한, 패킹진단 정적 머신러닝을 대상으로 제5데이터셋 및 제6데이터셋을 이미지 포맷으로 변환하여 입력하는 것으로 학습시킨다.
또한, 학습부(190)는 비은폐진단 동적 머신러닝을 대상으로 제1데이터셋 및 제2데이터셋을 일정한 포맷으로 변환하여 입력하는 것으로 학습시킨다. 동적 머신러닝은 동적 변환부(163)가 변환한 사운드 포맷으로 패턴화된 데이터를 입력 받으므로, 제1데이터셋 및 제2데이터셋도 대응되는 포맷으로 변환된다.
또한, 난독화진단 동적 머신러닝을 대상으로 제3데이터셋 및 제4데이터셋을 사운드 포맷으로 변환하여 입력하는 것으로 학습시킨다.
또한, 패킹진단 동적 머신러닝을 대상으로 제5데이터셋 및 제6데이터셋을 사운드 포맷으로 변환하여 입력하는 것으로 학습시킨다.
정적 진단부(182)의 머신러닝을 학습하기 위해, 공지된 악성코드를 패턴데이터와 동일한 포맷으로 변환하여 머신러닝에 입력하는 학습부(190)를 더 포함한다.
애플리케이션의 난독화 또는 패킹은 공지된 테크닉을 이용하여 코드의 변경, 생략, 더미코드 추가, 인코딩, 식별자 이름변경, 제어흐름 변경, 암호화, 압축 등이 적용되는 것이다. 경험 많은 프로그램 개발자라 하더라도 난독화 또는 패킹된 코드를 검토하여 실제 의미를 파악하는 것은 대단히 곤란하다. 하지만, 코드를 검토하면 적어도 코드의 난독화 또는 패킹 여부를 식별할 수 있다.
은폐 검사부(120)는 애플리케이션을 이미지 포맷으로 패턴화 함으로써, 시각적인 정보를 이용하여 머신러닝이 난독화 또는 패킹 여부를 판단할 수 있게 한다.
도 2를 참조하면, 은폐 변환부(122)는 애플리케이션을 이진코드 형태로 로드한 후, 기 설정된 단위로 분할한다. 또한, 분할된 이진코드를 대응되는 명암 또는 색상으로 변환하는 것으로 패턴화된 이미지를 생성한다.
도면을 참조하면, 이 실시예는 은폐 변환부(122)가 애플리케이션을 이진코드로 읽어 8-bit 벡터(vector)로 변환하고, 각 8-bit 벡터를 하나의 픽셀(pixel)로 표현하여 한 픽셀 당 0에서 255의 값을 가지는 그레이스케일 이미지(Grayscale Image)를 생성했다.
이미지는 데이터의 볼륨에 대응하여 일정 너비(width)를 가지는 행으로 구성된다. 너비는 픽셀 수 단위가 될 수 있다. 실시예로서, 이미지의 너비는 데이터의 볼륨에 대응하여 정사각형이 되는 픽셀 수가 될 수 있다. 예를 들어, 데이터의 볼륨이524,288 bit라면, 이미지의 너비는 256 픽셀이 될 수 있다(256×256 이미지 생성).
데이터 볼륨 범위 [KB] 이미지 너비 [pixel]
< 10 32
10 - 30 64
30 - 60 128
60 - 100 256
100 - 200 384
200 - 500 512
500 - 1000 768
> 1000 1024
은폐 변환부(122)는 마지막 이진코드가 8 bit를 완성하지 않고 종료되어 픽셀을 생성할 수 없거나, 이진코드가 종료되어 사각형 이미지의 마지막 영역이 일부 완성되지 않으면, 사각형 이미지가 완성될 수 있게 부족한 영역에 0-padding을 삽입한다. 이로써, 은폐 변환부(122)는 선(linear) 성격의 이미지를 생성할 수 있게 된다.
정적 데이터 분석에 강인한 머신러닝 알고리즘에는 합성곱신경망(Convolutional Neural Network, CNN) 등이 있다. 이 실시예는 이미지화된 패턴데이터의 분석을 위해 CNN을 이용하였으나, 정적 데이터 분석에 강인한 머신러닝이 CNN으로만 한정되는 것은 아니다. CNN은 이미지 분석에 특화된 알고리즘이다. Google의 AlphaGo, Facebook의 얼굴인식 알고리즘 등이 CNN을 이용하는 대표적인 사례이다. CNN은 특정 입력에 해당하는 최적의 출력을 찾아주는 성능이 뛰어나고, 코드 커버리지가 광범위한 장점이 있다.
은폐 진단부(124)의 머신러닝은 애플리케이션을 대상으로 정확하게 난독화 또는 패킹 여부를 판단할 수 있게, 난독화 또는 패킹된 애플리케이션들의 학습 데이터 세트로 선행 학습된다.
은폐 검사부(120)에서 애플리케이션의 난독화 또는 패킹 여부를 판단하면, 데이터 추출부(140)가 애플리케이션에서 특징데이터를 추출한다.
다시 도 1을 참조하면, 이 실시예의 데이터 추출부(140), 데이터 변환부(160) 및 멀웨어 진단부(180)는 정적 분석을 위한 구성과 동적 분석을 위한 구성들을 포함한다.
먼저, 정적 분석을 위한 구성을 설명한다.
데이터 추출부(140)는 애플리케이션에서 악성코드가 포함될 수 있는 주요부분의 데이터를 특징데이터로서 선택 추출하는 정적 특징 추출부(142)를 포함한다.
데이터 변환부(160)는 주요부분을 이진코드(binary code) 형태로 로드한 후 기 설정된 단위로 분할하고, 분할된 이진코드를 대응되는 명암 또는 색상으로 변환하는 정적 변환부(162)를 포함한다.
멀웨어 진단부(180)는 정적 변환부(162)에서 생성된 패턴데이터를 대상으로 악성코드 포함 여부를 진단하며 정적 데이터 분석에 강인한 머신러닝이 포함되는 정적 진단부(182)를 포함한다.
정적 특징 추출부(142)는 애플리케이션을 역공학으로 분석하여 소스코드를 획득한다. 주요부분은 애플리케이션의 실행코드 영역이 될 수 있다.
다음에서는 예로써, 애플리케이션이 안드로이드 애플리케이션인 경우를 설명한다.
도 3은 Java로 개발된 안드로이드 애플리케이션 APK의 내부 구조로서, AndroidManifest.xml, assets/, META-INF/, lib/, classes.dex, res/, resources.arsc 등의 파일이 포함된다(Unity, Xamarin, PhoneGap, Cordova, Cocos2d 등의 교차 플랫폼 앱 개발도구로 개발된 애플리케이션의 경우에는 APK 구조가 상이할 수 있다).
도 4를 참조하면, 이 중 classes.dex(이하, DEX파일)의 구조는 크게 header, string_ids, type_ids, proto_ids, fields_ids, method_ids, class_defs, link_data, 식별자 및 클래스 관련 오프셋들이 저장된 배열들과 DEX파일 내 실질적인 데이터와 실행코드(명령어)를 가지는 영역인 Data 섹션으로 구성된다.
Data 섹션은 바이트코드 및 메소드의 정보가 존재하는 code_item, String 값이 저장되는 string_data, 디버깅(debugging) 관련 정보 등이 포함되는 Optional, 모든 섹션과 컴포넌트(component)의 크기와 오프셋(offset)을 가지는 map list 등으로 구성된다.
Data 섹션 외 다른 섹션들은 데이터가 아닌 오프셋과 크기에 대한 정보를 가지고 있다.
도 5 및 도 6을 참조하면, DEX 파일의 class_defs 섹션은 클라스를 나타내는 class_def_item 들을 포함한다. class_def_item에는 class_data_off가 포함되는데, class_data_off가 class_data_item을 가리킨다.
class_data_item은 각 클래스의 데이터를 포함한다. 또한, class_data_item은 DEX 파일의 data 섹션에 존재한다.
data 섹션의 class_data_item은 encoded method 포맷의 direct method 및 virtual method 멤버를 포함한다. encoded method 포맷은 code_off를 포함하는데, 각 메소드는 encoded method에 의해 표현된다. code_off는 code_item을 의미하며, code_item은 각 메소드의 명령들을 포함한다. code_item의 insns_size 및 insns 멤버 필드가 메소드의 바이트 코드 즉, 실행코드(instructions)를 나타낸다.
안드로이드 애플리케이션에 관한 연구 경험에 비추어 DEX파일을 심도있게 분석한 결과, 악성코드가 동작하는 실행코드가 code_item에 위치하게 됨을 발견할 수 있었다.
정적 특징 추출부(142)가 추출하는 주요부분의 데이터는 안드로이드 애플리케이션의 DEX파일 중 Data 섹션의 code_item이 포함된다.
정적 특징 추출부(142)는 안드로이드 애플리케이션의 APK를 압축해제(unzip)하여 DEX파일을 추출한 후, DEX파일의 헤더를 파싱하여 Data 섹션의 오프셋(offset)을 획득한다. 이후, 오프셋을 기준으로 파일을 분리하여 실행코드가 포함된 code_item을 주요부분으로 정의한다.
종래의 안드로이드 애플리케이션 악성코드 진단 기술에서는 별도의 전처리 과정 없이 DEX파일 전체를 진단 대상으로 하기 때문에 진단을 위한 데이터 볼륨이 상당하였다. 반면, 본 발명의 실시예는 DEX파일을 심도 있게 분리하여 code_item만을 추출하고 악성코드를 진단하기 때문에 분석 대상 데이터 볼륨이 현저히 감축되면서도 악성코드의 진단율에는 악영향이 없다.
한편, 안드로이드는 다양한 개발 환경에서도 애플리케이션 제작이 가능하다. 예를 들어, Java 뿐만 아니라, C#, Javascript, C++, HTML 등의 프로그래밍 언어로도 애플리케이션의 제작이 가능하다. 하지만, 프로그래밍 언어에 따라 악성코드가 위치할 수 있는 영역이 추가로 발생됨을 발견하였다.
따라서, 정적 특징 추출부(142)는 code_item과 함께 추출될 추가영역을 안드로이드 애플리케이션의 프로그래밍 언어에 대응하여 선택한다. 구체적으로, 정적 특징 추출부(142)는 Java로 제작된 애플리케이션에서는 반드시 code_item을 추출한다. 또한, C 또는 C++로 제작된 애플리케이션에서는 code_item과 so 확장자의 파일을 추출한다. C#으로 제작된 애플리케이션에서는 code_item과 Assembly-CSharp.dll 또는 App.dll를 포함하는 dll 파일을 추출한다. .NET libraries로 제작된 애플리케이션에서는 code_item, System.dll 및 System.core.dll를 포함하는 dll 파일을 추출한다. HTML로 제작된 애플리케이션에서는 code_item 및 index.html 파일을 추출한다. Javascript로 제작된 애플리케이션에서는 code_item 및 index.js 등의 dll 파일을 추출한다.
다른 실시예로서, 정적 특징 추출부(142)는 애플리케이션의 프로그래밍 언어에 관계없이, code_item, so 확장자 파일, dll 확장자 파일, js 확장자 파일, html 확장자 파일을 일괄적으로 추출할 수도 있다.
이 실시예는 애플리케이션에서 code_item에 더하여 악성코드가 감염될 수 있는 영역을 선택적으로 추가 추출하기 때문에 애플리케이션 전체를 대상으로 악성코드 검사를 실시하는 종래기술보다 악성코드 검사 대상이 되는 데이터 볼륨이 감축되는 효과가 있다. 데이터 볼륨이 감축되면 악성코드 검사 시간이 감축되고, 보다 정밀한 검사가 가능해지는 등 향상된 효과가 다수 발생된다. 아울러, 종래기술들은 DEX파일만을 검사하는 경향이 있어 애플리케이션이 다른 프로그래밍 언어로 제작된 경우에는 악성코드가 포함된 영역을 검사하지 않는 문제가 있으나, 이 실시예는 프로그래밍 언어에 따라 추가적으로 감염될 수 있는 영역을 발견하여 해당 영역들을 검사 데이터에 추가함으로써 악성코드 검사가 실패할 확률을 현저히 감소시켰다.
또한, 애플리케이션은 카테고리에 따라 이용되는 클래스, 메소드(API), 코드, 컴포넌트(액티비티, 서비스, 콘텐츠 제공자, Broadcast receiver), 스트링(문자열), 인텐트(intent) 등에서 차이가 있다. 카테고리란 게임, 금융, 문서 편집기, 백신, 유틸리티 등 애플리케이션을 기능 중심으로 분류한 그룹이라 볼 수 있다. 안드로이드 애플리케이션의 배포를 주도하는 구글플레이(2018년 현재의 명칭)는 등록된 애플리케이션을 카테고리별로 분류하여 제공하고 있다. 다른 실시예로서, 정적 특징 추출부(142)는 code-item과 함께 추출될 추가영역을 구글플레이의 애플리케이션 카테고리에 대응하여 선택하고, 정적 진단부(182)는 애플리케이션의 카테고리에 대응하는 진단을 실시할 수 있다. 예를 들어, 악성코드가 다수 이용하는 음성API(악성 앱이 다수 사용하는 API) 및 카테고리 별 애플리케이션들이 다수 이용하는 양성API(정상 앱이 다수 사용하는 API)들을 정적 진단부(182)의 머신러닝에 기 학습시키고, 정적 특징 추출부(142)가 진단 대상 애플리케이션이 호출하는 API를 추출하여, 추출된 API가 관련 카테고리의 양성API의 패턴과 유사한지, 악성API의 패턴과 유사한지 대조할 수 있게 실시될 수 있다. 이 밖에도, 카테고리에 따라 애플리케이션에서 나타나는 고유 특징을 사전에 정의한 후, 검사 대상 애플리케이션의 카테고리에 대응하여 악성코드 진단이 실시되게 할 수 있다.
정적 변환부(162)는 주요부분 및 추가영역이 포함된 특징데이터를 이진코드 형태로 로드한 후 기 설정된 단위로 분할한다. 또한, 분할된 이진코드를 대응되는 명암 또는 색상으로 변환하는 것으로 이미지를 생성한다. 정적 변환부(162)는 특징데이터를 이진코드로 읽어 8-bit 벡터(vector)로 변환하고, 이것을 하나의 픽셀(pixel)로 표현하여 한 픽셀 당 0에서 255의 값을 가지는 그레이스케일 이미지(Grayscale Image)를 생성한다(도 2 참고). 정적 변환부(162)의 이미지 변환 특징은 은폐 변환부(122)의 특징과 동일하게 실시된다.
정적 진단부(182)는 패턴데이터 내 악성코드 포함 여부를 진단하기 위해 정적 데이터 분석에 강인한 머신러닝 알고리즘을 이용한다. 정적 데이터 분석에 강인한 머신러닝 알고리즘에는 합성곱신경망(Convolutional Neural Network, CNN) 등이 있다. 이 실시예는 이미지화된 패턴데이터의 분석을 위해 CNN을 이용하였으나, 정적 데이터 분석에 강인한 머신러닝이 CNN으로만 한정되는 것은 아니다.
특히, CNN 중에서도 state-of-the-art CNN 모델인 Inception-V3, Inception-ResNet-V2을 이용할 수 있다. Inception-V3는 GoogLeNet을 개량시킨 모델로써, 많은 정적 데이터 분석 연구에서 응용되고 있다. 한편, Inception-ResNet-V2는 Inception-V3에 ResNet의 특성을 결합한 모델이다. 각 CNN 모델에 적용되는 최적화 방법(Optimization method)은 RMSprop(Root Mean Square Propagation), Adam(Adaptive Moment Estimation), SGD(Stochastic Gradient Descent)를 이용할 수 있다. Adam은 인기가 있는 알고리즘으로써, 많은 딥러닝 프레임워크(Deep Learning framework)에서 이용한다. SGD는 RMSprop과 Adam의 원형이 되는 알고리즘으로, Inception-v3와 결합되었을 때, 높은 성능으로 악성코드를 탐지하는 특징이 있다.
난독화와 패킹은 서로 상이한 기법이다. 멀웨어 진단부(180)의 정적 진단부(182)는 애플리케이션이 난독화된 경우 패턴데이터를 난독화 데이터셋으로 학습된 난독화진단 머신러닝(난독화진단 정적 머신러닝)을 이용하여 악성코드 포함 여부를 진단한다. 또한, 애플리케이션이 패킹화 된 경우 패턴데이터를 패킹 데이터셋으로 학습된 패킹진단 머신러닝(패킹진단 정적 머신러닝)을 이용하여 악성코드 포함 여부를 진단한다. 또한, 애플리케이션이 난독화 또는 패킹되지 않은 경우 패턴데이터를 비(非)은폐 데이터셋으로 학습된 비은폐진단 머신러닝(비은폐진단 정적 머신러닝)을 이용하여 악성코드 포함 여부를 진단한다. 비은폐, 난독화, 패킹된 애플리케이션이 대응하는 전용 머신러닝으로 분석됨에 따라, 악성코드의 탐지 및 분류 성능이 더욱 향상될 수 있게 된다.
정적 진단부(182)의 머신러닝을 학습하기 위해, 공지된 악성코드를 패턴데이터와 동일한 포맷으로 변환하여 머신러닝에 입력하는 학습부(190)를 더 포함한다. 학습부(190)는 멀웨어 패밀리(Malware family)에 따라 공지된 악성코드를 분류한 후 머신러닝에 입력한다. 이로써 멀웨어 검사부는 악성코드 탐지 시 멀웨어 패밀리 종류를 자동 분류할 수 있게 된다.
도 7은 멀웨어 패밀리의 예를 나타낸 표이다. 악성코드는 유형에 따라 멀웨어 패밀리로 분류할 수 있다. 악성코드의 유형에는 바이러스, 웜, 트로이목마, 백도어, 논리폭탄, 봇(bot), 에드웨어, 스파이웨어, 랜섬웨어 등이 있다. 멀웨어 패밀리는 이러한 악성코드를 유형별로 분류하는 기준이 된다.
멀웨어 패밀리의 카테고리에 따라, 치료, 삭제, 백업 등 대응 방법도 상이하다. 따라서, 멀웨어 진단부(180)가 악성코드 탐지 후 해당 악성코드의 멀웨어 패밀리를 분류하면 해당 악성코드의 기능을 파악하고, 대응방법을 선택하는 것이 더 용이해진다.
정적 변환부(162)가 생성하는 패턴데이터와 학습부(190)가 생성하는 학습 데이터 세트는 동일한 데이터 포맷을 가지는 것이 바람직하다.
이어서, 동적 분석을 위한 구성을 설명한다.
다시 도 1을 참조하면, 이 실시예의 데이터 추출부(140)는, 애플리케이션을 구동시키는 구동부(143), 구동 상태의 애플리케이션을 대상으로 기 설정된 이벤트를 실행시키는 명령실행부(145), 명령실행부(145)의 이벤트가 실행되는 애플리케이션으로부터 특징데이터를 추출하는 동적 특징 추출부(147)를 포함한다.
데이터 변환부(160)는 특징데이터를 사운드 포맷의 패턴데이터로 변환하는 동적 변환부(163)를 포함한다.
멀웨어 진단부(180)는 동적 변환부(163)에서 생성된 패턴데이터를 대상으로 악성코드 포함 여부를 진단하며 동적 데이터 분석에 강인한 머신러닝이 포함되는 동적 진단부(183)를 포함한다.
구동부(143)는 애플리케이션의 실행환경(runtime environment)을 포함한다. 예를 들어, PE(Portable Executable) 구조의 애플리케이션을 위해 Microsoft Windows 환경, DEX(Dalvik Executable) 구조의 애플리케이션을 위해 안드로이드(Android) 런타임 환경, ELF(Executable and Linkable Format) 구조의 애플리케이션을 위해 Linux 환경을 구축한다.
악성코드가 주 시스템 상에서 구동되면 감염의 위험성이 있으므로, 구동부(143)는 가상 머신(virtual machine) 또는 에뮬레이터를 구축하고, 해당 영역에서만 애플리케이션이 구동되게 한다.
명령실행부(145)는 애플리케이션에서 다양한 이벤트가 실행되게 유도한다. 명령실행부(145)는 애플리케이션의 기능과 구조에 대응하여 실행 시나리오 및 입력 데이터를 준비하고, 실행 시나리오를 구동중인 애플리케이션 상에서 실행시키거나, 입력 데이터를 입력하는 등의 방식으로 이벤트를 실행시킨다. 예를 들어, 금융 관련 애플리케이션이라면, 계좌정보 조회, 공인인증서 관리, 비밀번호 관리, 잔액 조회, 계좌이체 등의 기능에 접근할 수 있는 실행 시나리오 및 입력 데이터가 설계된다.
동적 특징 추출부(147)는 구동 중인 애플리케이션으로부터 특징데이터를 추출한다. 추출되는 특징데이터는 이진코드 형태인 것이 바람직하다. 특징데이터는 구동 중인 애플리케이션에서 시계열적으로 순차 추출되므로, 이진코드가 나열된 순서는 추출 시간 정보가 포함된다.
애플리케이션이 난독화 또는 패킹(암호화 또는 압축)과 같이 은폐되어 있는 경우, 정적 분석으로는 악성코드의 특징정보를 추출하는 것이 어려울 수 있다. 하지만, 난독화 또는 패킹된 애플리케이션이라 하더라도 구동 중에는 악성코드의 특징이 실행되기 때문에 시간에 따라 추출되는 데이터들을 분석하면 정적 분석으로는 발견되지 않는 악성코드를 탐지 및 분류할 수 있게 된다.
애플리케이션의 특징데이터 추출은 바이너리 인스트루먼테이션(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 등의 환경을 다양하게 지원한다.
특히, 동적 특징 추출부(147)는 추출하는 데이터 중에서 특징정보를 선택적으로 선별한다. 특징정보란 악성코드의 동작 특징이 나타날 수 있는 데이터이다. 애플리케이션의 구동 시간이 길어지면 추출되는 데이터도 많아지므로 악성코드 진단율도 다소 증가된다. 하지만, 현실적으로 추출된 데이터 중 악성코드 진단에 도움이 되는 데이터는 일부에 불과하다.
이 실시예의 동적 특징 추출부(147)는 악성코드 진단에 도움이 되는 데이터만을 선별함으로써 분석 대상이 되는 데이터 볼륨을 현저히 감소시킨다. 또한, 분석 대상 데이터 볼륨이 감소되면 악성코드를 진단하기 위해 분석에 소요되는 시간도 단축된다.
특징정보에는 애플리케이션의 구동 중 실제로 호출되는 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 통신정보 등이 포함된다.
이 실시예의 동적 변환부(163)는 특징데이터의 이진코드를 MIDI 포맷으로 변환한 후, 변환된 MIDI 포맷의 특징데이터를 wav 포맷 또는 MFCC(Mel-Frequency Cepstral Coefficients) 포맷으로 변환하는 것으로 패턴데이터를 생성한다.
MIDI는 디지털 음원 생성을 위한 언어로서, 음원은 아니지만, 음에 대한 정보를 기록한다. MIDI에는 악기의 종류, 음의 높낮이, 감쇠(Attenuation), 동시 연구되는 악기를 의미하는 채널, Note ON/OFF 등의 정보들이 포함된다.
하나의 채널은 하나의 악기로 볼 수 있다. 복수의 채널이 설정되면 여러 악기의 협연으로 볼 수 있다. 5선지에 악기별로 음표가 작성되듯 채널별로 음표가 설정된다.
도 8을 참조하면, 동적 변환부(163)는 동적 특징데이터의 이진코드를 1 바이트 단위로 분할하여 MIDI 포맷으로 변환한다.
피치(Pitch)는 음의 높낮이를 의미하는 주파수이고, 이것은 음표로 나타낼 수 있다. MIDI에서 음표의 범위는 0 부터 127 까지, 즉 7 비트까지의 데이터를 표현할 수 있다. 그러나 1 바이트는 8 비트로서, 0 내지 255까지 나타낼 수 있으므로, MIDI 음표에서는 1 바이트를 음표로 표현하는 것이 불가능하다. 이 문제를 해결하기 위해, 동적 변환부(163)는 1 바이트의 8 비트 중 2개의 비트를 제1채널의 음표로 설정하고, 나머지 6개의 비트를 제2채널의 음표로 설정한다. 제1채널은 0 내지 3까지 4개의 음을 출력하는 악기인 것으로 가정하고, 제2채널은 0 내지 63까지 64개의 음을 출력하는 악기인 것으로 가정하여 두 개의 악기가 동시에 하모니를 이루는 것으로 가정하는 것이다. 이러한 방식으로 1 바이트를 나누어 MIDI화하면, 하나의 음이 재생되는 타이밍에 256개(1 바이트)의 정보를 모두 담을 수 있게 된다.
또한, 동적 변환부(163)는 제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채널의 음 식별이 더 용이하게 된다.
도 9를 참조하면, 동적 변환부(163)는 MIDI 포맷으로 변환된 특징데이터를 wav 포맷으로 변환한다. MIDI는 음의 정보를 포함하지만, 그 자체가 오디오 파일은 아니다. wav 포맷으로 변환된 특징데이터는 오디오 재생이 가능하게 된다.
wav 파일은 16 비트, 44100Hz의 일반적 수준으로 변환되었을 때 1초당 87KB의 용량을 가진다. 샘플링 레이트(sampling rate)가 높을수록 정교한 오디오가 재생되지만, 일정 수준을 넘으면 오히려 wav 파일의 크기가 너무 크게 되어 오디오 분석에 투입되는 자원이 과도하게 된다. 따라서, 이 실시예는 샘플링 레이트를 22050 Hz 이하로 설정하였다.
동적 변환부(163)는 MIDI 포맷 또는 wav 포맷의 동적 특징데이터를 MFCC(Mel-frequency cepstral coefficients) 포맷으로 변환할 수 있다.
동적 진단부(183)는 사운드 포맷의 패턴데이터에서 악성코드 포함 여부를 진단하기 위해, 동적 데이터 분석에 강인한 머신러닝 알고리즘을 이용한다. 동적 데이터 분석에 강인한 머신러닝 알고리즘이란, 시계열(time series) 패턴 또는 서열(sequence) 데이터 분석의 수학적 모델링 분석에 적합한 알고리즘으로서, 재생시간이라는 시간 정보가 포함된 사운드 포맷의 패턴데이터를 정밀하게 분석하는데 적합하다.
합성곱신경망(Convolutional Neural Network, CNN)은 이미지 분석에 특화된 알고리즘이다. CNN은 특정 입력에 대응하는 최적의 출력을 찾아주는 성능이 뛰어나지만, 현재의 출력이 과거의 입력에 영향을 받는 시간적 종속성(temporal dependency)은 표현하지 못한다. 따라서 사운드 포맷의 패턴데이터를 분석하는데 적합하지 않다.
반면, 순환신경망(Recurrent Neural Network, RNN)은 시계열(time series) 패턴 또는 서열(sequence) 데이터 분석의 수학적 모델링에 적합하다. 일정 시간 간격으로 시간에 종속적으로 측정된 시계열(time series)자료에는 주가(stock), 매출액, 물가지수, 환율, 실업률 등이 있다. 또한, 순서가 의미를 가지는 서열(sequence)자료에는 텍스트, 음성, 동영상, DNA 가닥의 염기쌍 등이 있다. RNN은 현재의 출력이 과거의 입력에 영향을 받는 시간적 종속성(temporal dependency)을 표현하는 능력을 가지고 있다. RNN을 시간 전개에 따라 신경망 구조를 전개하면 전향신경망(feed-forward network)과 같은 구조를 나타낸다. 따라서, RNN은 음성, 동영상, 언어 모델 분석에 다수 활용되고 있다.
이 실시예의 동적 진단부(183)는 사운드화된 패턴데이터의 분석을 위해 RNN을 이용하였으나, 동적 데이터 분석에 강인한 머신러닝이 RNN으로만 한정되는 것은 아니다.
동적 진단부(183)는 애플리케이션이 난독화된 경우 패턴데이터를 난독화 데이터셋으로 학습된 난독화진단 머신러닝(난독화진단 동적 머신러닝)을 이용하여 악성코드 포함 여부를 진단한다. 또한, 애플리케이션이 패킹화된 경우 패턴데이터를 패킹 데이터셋으로 학습된 패킹진단 머신러닝(패킹진단 동적 머신러닝)을 이용하여 악성코드 포함 여부를 진단한다. 또한, 애플리케이션이 난독화 또는 패킹되지 않은 경우 패턴데이터를 비은폐 데이터셋으로 학습된 비은폐진단 머신러닝(비은폐진단 동적 머신러닝)을 이용하여 악성코드 포함 여부를 진단한다. 비은폐, 난독화, 패킹된 애플리케이션이 대응하는 전용 머신러닝으로 분석됨에 따라, 악성코드의 탐지 및 분류 성능이 더욱 향상될 수 있게 된다.
정확한 악성코드 진단을 위해, 동적 진단부(183)에 포함된 머신러닝은 사전에 공지된 악성코드로부터 변환된 사운드 패턴으로 학습이 실시된다. 학습부(190)는 공지된 악성코드들을 사운드 패턴화하여 동적 진단부(183)의 머신러닝에 학습시킨다. 학습부(190)가 변환하는 악성코드의 사운드 패턴은 동적 변환부(163)에서 변환하는 패턴데이터와 동일 포맷인 것이 바람직하다.
학습부(190)는 공지된 악성코드를 멀웨어 패밀리(Malware family)에 따라 분류한 후 동적 진단부(183)의 머신러닝에 학습시킨다. 이로써 동적 진단부(183)는 악성코드의 멀웨어 패밀리 종류도 자동 분류할 수 있게 된다.
애플리케이션을 대상으로 정적 분석과 동적 분석 중 어떠한 방법을 실시할 것인지는 다양하게 결정될 수 있다. 제1방법으로서, 난독화 또는 패킹되지 않은 애플리케이션은 정적 분석이 실시되고, 난독화 또는 패킹된 애플리케이션은 동적 분석이 실시될 수 있다. 제2방법으로서, 모든 애플리케이션을 대상으로 먼저 정적 분석이 빠르게 실시되고, 정적 분석에서 악성코드가 진단되지 않거나, 악성코드 감염이 의심되는 애플리케이션을 대상으로 동적 분석이 실시될 수 있다.
이어서, 도 10을 참조하여 본 발명의 실시예에 따른 은폐된 멀웨어 탐지 분류 방법을 설명한다.
이 실시예는 은폐 검사부(120)가 악성코드 진단 대상 애플리케이션을 분석하여 난독화 또는 패킹 여부를 판단하는 단계(S120), 데이터 추출부(140)가 애플리케이션에서 특징데이터를 추출하는 단계(S144, S154), 데이터 변환부(160)가 특징데이터를 패턴화하여 패턴데이터를 생성하는 단계(S146, S156) 및 멀웨어 진단부(180)가 패턴데이터를 종래 악성코드 패턴이 학습된 머신러닝을 이용하여 악성코드 포함 여부를 진단하는 단계(S148, S158)를 포함한다.
S120 단계는 구체적으로 애플리케이션을 이미지 포맷으로 패턴화하는 단계(S122)와, 패턴화된 애플리케이션을 대상으로 정적 데이터 분석에 강인한 은폐검사 머신러닝을 이용하여 난독화 또는 패킹 여부를 식별하는 단계(S124)를 포함한다.
애플리케이션을 대상으로 정적 분석과 동적 분석 중 어떠한 방법을 실시할 것인지 결정하는 단계(S130)는 다양한 판단 기준이 있다. 제1방법으로서, 난독화 또는 패킹되지 않은 애플리케이션은 정적 분석이 실시되고, 난독화 또는 패킹된 애플리케이션은 동적 분석이 실시되게 할 수 있다. 제2방법으로서, 모든 애플리케이션을 대상으로 먼저 정적 분석을 빠르게 실시하고, 정적 분석에서 악성코드가 진단되지 않거나, 악성코드 감염이 의심되는 애플리케이션을 대상으로 동적 분석을 실시할 수 있다.
이 실시예의 각 단계는 은폐된 멀웨어 탐지 분류 시스템(100)에서 설명된 세부적인 단계, 기능, 특징을 더 포함할 수 있다.
이상에서 본 발명의 바람직한 실시예를 설명하였으나, 본 발명은 다양한 변화와 변경 및 균등물을 사용할 수 있다. 본 발명은 상기 실시예를 적절히 변형하여 동일하게 응용할 수 있음이 명확하다. 따라서 상기 기재 내용은 다음 특허청구범위의 한계에 의해 정해지는 본 발명의 범위를 한정하는 것이 아니다.
100 : 은폐된 멀웨어 탐지 분류 시스템
120 : 은폐 검사부 122 : 은폐 변환부
124 : 은폐 진단부 140 : 데이터 추출부
142 : 정적 특징 추출부 143 : 구동부
145 : 명령실행부 147 : 동적 특징 추출부
160 : 데이터 변환부 162 : 정적 변환부
163 : 동적 변환부 180 : 멀웨어 진단부
182 : 정적 진단부 183 : 동적 진단부
190 : 학습부

Claims (12)

  1. 악성코드 진단 대상 애플리케이션을 분석하여 난독화 또는 패킹 여부를 판단하는 은폐 검사부;
    상기 애플리케이션에서 특징데이터를 추출하는 데이터 추출부;
    상기 데이터 추출부가 추출한 특징데이터를 패턴화하여 패턴데이터를 생성하는 데이터 변환부; 및
    상기 데이터 변환부가 생성한 패턴데이터를 종래 악성코드 패턴이 학습된 머신러닝을 이용하여 악성코드 포함 여부를 진단하는 멀웨어 진단부를 포함하고,
    상기 데이터 추출부는 상기 애플리케이션에서 악성코드가 포함될 수 있는 주요부분의 데이터를 특징데이터로서 선택 추출하는 정적 특징 추출부를 포함하고,
    상기 데이터 변환부는 상기 주요부분을 이진코드(binary code) 형태로 로드한 후 기 설정된 단위로 분할하고, 분할된 이진코드를 대응되는 명암 또는 색상으로 변환하는 정적 변환부를 포함하고,
    상기 멀웨어 진단부는 상기 정적 변환부에서 생성된 패턴데이터를 대상으로 악성코드 포함 여부를 진단하며 정적 데이터 분석에 강인한 머신러닝이 포함되는 정적 진단부를 포함하는 것을 특징으로 하는 은폐된 멀웨어 탐지 분류 시스템.
  2. 제1항에 있어서, 상기 멀웨어 진단부는,
    상기 애플리케이션이 난독화된 경우 상기 패턴데이터를 난독화 데이터셋(data set)으로 학습된 난독화진단 머신러닝을 이용하여 악성코드 포함 여부를 진단하고,
    상기 애플리케이션이 패킹화된 경우 상기 패턴데이터를 패킹 데이터셋으로 학습된 패킹진단 머신러닝을 이용하여 악성코드 포함 여부를 진단하며,
    상기 애플리케이션이 난독화 또는 패킹되지 않은 경우 상기 패턴데이터를 비(非)은폐 데이터셋으로 학습된 비은폐진단 머신러닝을 이용하여 악성코드 포함 여부를 진단하는 것을 특징으로 하는 은폐된 멀웨어 탐지 분류 시스템.
  3. 제1항에 있어서, 상기 은폐 검사부는,
    상기 애플리케이션을 이미지 포맷으로 패턴화하는 은폐 변환부;
    상기 은폐 변환부가 패턴화한 애플리케이션을 대상으로 난독화 또는 패킹 여부를 식별하며, 정적 데이터 분석에 강인한 은폐검사 머신러닝을 포함하는 은폐 진단부로 구성되는 것을 특징으로 하는 은폐된 멀웨어 탐지 분류 시스템.
  4. 삭제
  5. 제1항에 있어서,
    상기 주요부분은 상기 애플리케이션의 실행코드 영역인 것을 특징으로 하는 안드로이드 은폐된 멀웨어 탐지 분류 시스템.
  6. 제1항에 있어서,
    상기 데이터 추출부는, 상기 애플리케이션을 구동시키는 구동부; 구동 상태의 애플리케이션을 대상으로 기 설정된 이벤트를 실행시키는 명령실행부; 상기 명령실행부의 이벤트가 실행되는 애플리케이션으로부터 특징데이터를 추출하는 동적 특징 추출부를 포함하고,
    상기 데이터 변환부는 상기 특징데이터를 사운드 포맷의 패턴데이터로 변환하는 동적 변환부를 포함하고,
    상기 멀웨어 진단부는 상기 동적 변환부에서 생성된 패턴데이터를 대상으로 악성코드 포함 여부를 진단하며 동적 데이터 분석에 강인한 머신러닝이 포함되는 동적 진단부를 포함하는 것을 특징으로 하는 은폐된 멀웨어 탐지 분류 시스템.
  7. 제6항에 있어서,
    상기 동적 변환부는 상기 특징데이터의 이진코드를 MIDI 포맷으로 변환한 후, 변환된 MIDI 포맷의 특징데이터를 wav 포맷 또는 MFCC(Mel-Frequency Cepstral Coefficients) 포맷으로 변환하는 것으로 패턴데이터를 생성하는 것을 특징으로 하는 은폐된 멀웨어 탐지 분류 시스템.
  8. 제7항에 있어서,
    상기 동적 변환부는 특징데이터의 MIDI 포맷 변환 시, 특징데이터를 1 바이트 단위로 분할한 후, 상기 1 바이트를 2 비트로 구성된 제1채널과, 6 비트로 구성된 제2채널로 구성하는 것을 특징으로 하는 은폐된 멀웨어 탐지 분류 시스템.
  9. 제8항에 있어서,
    상기 동적 변환부는 상기 제1채널과 상기 제2채널의 음이 서로 중복되지 않게 어느 하나의 채널에 가중치를 더한 후 MIDI 포맷으로 변환하는 것을 특징으로 하는 은폐된 멀웨어 탐지 분류 시스템.
  10. 제1항에 있어서,
    상기 멀웨어 진단부의 머신러닝을 학습하기 위해, 공지된 악성코드를 상기 패턴데이터와 동일한 포맷으로 변환하여 상기 머신러닝에 입력하는 학습부를 더 포함하고,
    상기 학습부는 멀웨어 패밀리(Malware family)에 따라 공지된 악성코드를 분류한 후 머신러닝에 입력하며,
    상기 멀웨어 진단부는 악성코드 탐지 시 멀웨어 패밀리 종류를 자동 분류하는 것을 특징으로 하는 은폐된 멀웨어 탐지 분류 시스템.
  11. (a) 은폐 검사부가 악성코드 진단 대상 애플리케이션을 분석하여 난독화 또는 패킹 여부를 판단하는 단계;
    (b) 데이터 추출부가 상기 애플리케이션에서 특징데이터를 추출하는 단계;
    (c) 데이터 변환부가 상기 특징데이터를 패턴화하여 패턴데이터를 생성하는 단계; 및
    (d) 멀웨어 진단부가 상기 패턴데이터를 종래 악성코드 패턴이 학습된 머신러닝을 이용하여 악성코드 포함 여부를 진단하는 단계를 포함하고,
    (e) 상기 데이터 추출부의 정적 특징 추출부에서 상기 애플리케이션의 악성코드가 포함될 수 있는 주요부분의 데이터를 특징데이터로서 선택 추출하는 단계;
    (f) 상기 데이터 변환부의 정적 변환부는 상기 주요부분을 이진코드(binary code) 형태로 로드한 후 기 설정된 단위로 분할하고, 분할된 이진코드를 대응되는 명암 또는 색상으로 변환하는 단계;
    (g) 상기 멀웨어 진단부의 정적 진단부는 상기 정적 변환부에서 생성된 패턴데이터를 대상으로 악성코드 포함 여부를 진단하며 정적 데이터 분석에 강인한 머신러닝 분석 단계를 포함하는 것을 특징으로 하는 은폐된 멀웨어 탐지 분류 방법.
  12. 제11항에 있어서, 상기 (a) 단계는,
    상기 애플리케이션을 이미지 포맷으로 패턴화하는 단계;
    상기 패턴화된 애플리케이션을 대상으로 정적 데이터 분석에 강인한 은폐검사 머신러닝을 이용하여 난독화 또는 패킹 여부를 식별하는 단계를 포함하는 것을 특징으로 하는 은폐된 멀웨어 탐지 분류 방법.
KR1020180155512A 2018-12-05 2018-12-05 머신러닝을 이용하여 애플리케이션의 난독화 또는 패킹 여부를 식별하는 시스템과, 그것을 포함하는 은폐된 멀웨어 탐지 분류 시스템 및 방법 KR102174475B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020180155512A KR102174475B1 (ko) 2018-12-05 2018-12-05 머신러닝을 이용하여 애플리케이션의 난독화 또는 패킹 여부를 식별하는 시스템과, 그것을 포함하는 은폐된 멀웨어 탐지 분류 시스템 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180155512A KR102174475B1 (ko) 2018-12-05 2018-12-05 머신러닝을 이용하여 애플리케이션의 난독화 또는 패킹 여부를 식별하는 시스템과, 그것을 포함하는 은폐된 멀웨어 탐지 분류 시스템 및 방법

Publications (2)

Publication Number Publication Date
KR20200071869A KR20200071869A (ko) 2020-06-22
KR102174475B1 true KR102174475B1 (ko) 2020-11-04

Family

ID=70971003

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180155512A KR102174475B1 (ko) 2018-12-05 2018-12-05 머신러닝을 이용하여 애플리케이션의 난독화 또는 패킹 여부를 식별하는 시스템과, 그것을 포함하는 은폐된 멀웨어 탐지 분류 시스템 및 방법

Country Status (1)

Country Link
KR (1) KR102174475B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102495329B1 (ko) 2022-08-10 2023-02-06 (주)케이엔비씨 높은 탐지율의 서비스백신 플랫폼 제공을 위해 lstm 방식을 이용한 악성코드 탐지 시스템

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102450834B1 (ko) * 2016-01-04 2022-10-05 한국전자통신연구원 다중 특징벡터를 이용하는 행위기반 악성코드 탐지 장치 및 방법
KR101809159B1 (ko) 2017-08-01 2017-12-14 주식회사 에프원시큐리티 머신러닝을 이용한 악성코드 유포지 위험도 분석 시스템

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
Mehrdad Farrokhmanesh et al, "A Novel Method for Malware Detection Using Audio Signal Processing Techniques"(2016.08.)*
Mohaddeseh Zakeri et al, "A Static Heuristic Approach to Detecting Malware Targets"(2015.04.)*
Sang Ni et al, "Malware Identification Using Visualization Images and Deep Learning"(2018.04.)*

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102495329B1 (ko) 2022-08-10 2023-02-06 (주)케이엔비씨 높은 탐지율의 서비스백신 플랫폼 제공을 위해 lstm 방식을 이용한 악성코드 탐지 시스템

Also Published As

Publication number Publication date
KR20200071869A (ko) 2020-06-22

Similar Documents

Publication Publication Date Title
US8762948B1 (en) System and method for establishing rules for filtering insignificant events for analysis of software program
Bao et al. {BYTEWEIGHT}: Learning to recognize functions in binary code
US7409718B1 (en) Method of decrypting and analyzing encrypted malicious scripts
CN104834859B (zh) 一种Android应用中恶意行为的动态检测方法
EP2955658B1 (en) System and methods for detecting harmful files of different formats
US8850581B2 (en) Identification of malware detection signature candidate code
US20170372068A1 (en) Method to identify known compilers functions, libraries and objects inside files and data items containing an executable code
US20080289042A1 (en) Method for Identifying Unknown Virus and Deleting It
US20040205411A1 (en) Method of detecting malicious scripts using code insertion technique
KR20200071822A (ko) 애플리케이션의 동적 특징정보 및 머신러닝을 이용하여 멀웨어를 탐지 분류하는 시스템 및 방법
RU91213U1 (ru) Система автоматического составления описания и кластеризации различных, в том числе и вредоносных, объектов
JP2006523898A (ja) ソースコードの脆弱点の検出法および検出システム
KR102151318B1 (ko) 이종 정보 네트워크 기반 악성 코드 탐지 방법 및 장치
CN106355092B (zh) 用于优化反病毒测定的系统和方法
CN114266050B (zh) 一种跨平台恶意软件对抗样本生成方法及系统
KR20190080445A (ko) 악성코드 검출을 위한 화이트리스트 구축 방법 및 이를 수행하기 위한 기록매체 및 장치
CN112287342A (zh) 物联网固件动态检测方法、装置、电子设备以及存储介质
RU2673708C1 (ru) Система и способ машинного обучения модели обнаружения вредоносных файлов
KR102174475B1 (ko) 머신러닝을 이용하여 애플리케이션의 난독화 또는 패킹 여부를 식별하는 시스템과, 그것을 포함하는 은폐된 멀웨어 탐지 분류 시스템 및 방법
CN108228312A (zh) 通过解释器执行代码的系统和方法
CN112817877B (zh) 异常脚本检测方法、装置、计算机设备和存储介质
EP4332805A1 (en) Emulation-based malware detection
CN113468524A (zh) 基于rasp的机器学习模型安全检测方法
US8689327B2 (en) Method for characterization of a computer program part
KR102140714B1 (ko) 안드로이드 애플리케이션의 주요부분을 패턴화한 멀웨어 탐지 분류 방법 및 시스템

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant