KR101473535B1 - Multi N―gram을 이용한 악성코드 분류 방법 - Google Patents

Multi N―gram을 이용한 악성코드 분류 방법 Download PDF

Info

Publication number
KR101473535B1
KR101473535B1 KR1020120156590A KR20120156590A KR101473535B1 KR 101473535 B1 KR101473535 B1 KR 101473535B1 KR 1020120156590 A KR1020120156590 A KR 1020120156590A KR 20120156590 A KR20120156590 A KR 20120156590A KR 101473535 B1 KR101473535 B1 KR 101473535B1
Authority
KR
South Korea
Prior art keywords
gram
malicious code
extracting
section
signature
Prior art date
Application number
KR1020120156590A
Other languages
English (en)
Other versions
KR20140087236A (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 KR1020120156590A priority Critical patent/KR101473535B1/ko
Publication of KR20140087236A publication Critical patent/KR20140087236A/ko
Application granted granted Critical
Publication of KR101473535B1 publication Critical patent/KR101473535B1/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
    • G06F21/562Static detection
    • G06F21/563Static detection by source code analysis

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

Multi N-gram을 이용한 악성코드 분류 방법이 개시된다. 악성코드를 분류하는 방법은 악성코드 분류 장치가 실행파일에서 텍스트 섹션을 추출하는 단계, 멀티 N-gram 매트릭스(Multi N-gram Matrix)를 이용하여 상기 추출된 텍스트 섹션에서 시그니처를 추출하는 단계 및 상기 추출한 시그니처를 분석하여 악성코드를 분류하는 단계를 포함할 수 있다.

Description

Multi N―gram을 이용한 악성코드 분류 방법{MALWARE CLASSIFICATION METHOD USING MULTI N―GRAM}
본 발명의 실시예들은 N-gram을 기반으로 하는 Multi N-gram을 이용하여 악성코드를 분류하는 방법에 관한 것이다.
최근 소프트웨어 시장의 규모가 기하급수적으로 증가하게 되면서, 하루에도 수십만 건의 바이너리(Binary)가 제작된다. 하지만 단순히 바이너리뿐만 아니라, 악성 행위를 수행하는 바이너리인 악성코드(Malware)의 수 또한 폭발적으로 증가하고 있다.
악성코드는 사용자의 컴퓨터를 감염시켜 악성 행위를 하기 위한 목적으로 만들어진 바이너리로, 불법적인 방법을 통해 사용자들의 개인정보를 탈취하는 목적에서부터 공격자의 명령에 따라 다른 컴퓨터를 공격하기 위한 목적, 그리고 금전적인 목적까지 다양한 형태로 작성되는데 하루에도 수백 또는 수천 개 이상이 발견되고 있다. 이러한 악성코드들은 자동 생성 및 변경 도구들을 통해 다양한 변종들을 손쉽게 생성시킬 수 있기 때문에, 신속한 분류를 통한 대응이 필요하다.
악성코드의 탐지는 다양한 분석 방법을 통해 만들어진 시그니처(Signature)에 의해 주로 수행된다. 하지만 하루에도 수백 개의 변종 악성코드들이 간단한 실행압축 등의 기술을 통해서 제작되기 때문에 이를 시그니처를 기반으로 탐지하는 경우, 변종 분석 및 데이터베이스의 업데이트 등에 오랜 시간이 소요된다. 실제로 분석하는 시간이 악성코드의 악성행위 발발 시점보다 오래 소요되어 제 시간 안에 악성행위를 방지할 수 없는 경우 또한 존재한다.
현재 대부분의 백신 프로그램 내에서 악성코드 탐지 및 치료는 동적(dynamic) 혹은 정적(static) 분석 방법을 통해서 얻어진 시그니처를 사용하여 동작한다. 동적 분석 방법은 제한된 시간 및 독립된 공간 내에서 바이너리를 직접 실행시키고, 실질적으로 일어나는 행위들을 관찰하는 분석 방법이다. 하지만, 동적 분석 방법은 악성행위가 제한된 시간 동안 발생하지 않는다면 악성코드를 검출해 낼 수 없다. 즉, 바이너리의 모든 행위를 분석할 수 없다는 단점이 있다.
한편, 정적 분석 방법은 바이너리를 어셈블리어 레벨에서 관찰한 후, 그 특징을 기반으로 시그니처를 생성하는 분석 방법이다.
정적 분석 방법에 관한 기술 중 하나로, 한국공개특허공보 제10-2010-0073126호(공개일 2010년 7월 1일) "실행압축 특성을 이용한 악성코드 탐지장치 및 그 방법"에는 검사 대상 파일의 파일헤더에 PE 파일임을 식별하는 PE 시그니처를 포함하는지 검사하여 파일헤더에 상기 PE 시그니처가 포함될 때, 상기 파일헤더의 섹션헤더에서 압축여부와 압축방법을 검출하고, 악성코드에 사용되지 않는 압축방법이 저장된 제1 리스트에 상기 압축방법이 포함되는지 비교하여 상기 파일의 악성코드 여부를 판단하는 것이 개시되어 있다.
하지만, 이러한 정적 분석 방법은 모든 발생 가능한 행위를 검출할 수 있다는 장점은 있지만 분석을 위한 선처리(pre-processing)과정이 필요하며, 분석 시간이 오래 걸린다는 단점이 있다.
따라서, 별도의 선처리 과정이 필요하지 않으며 보다 신속하고 정확하게 악성코드를 분류할 수 있는 방법이 요구되고 있다.
악성코드의 분류를 위한 별도의 선처리 과정이 필요하지 않은 Multi N-gram을 이용한 악성코드 분류 방법이 개시된다.
보다 신속하고 정확하게 악성코드를 분류할 수 있는 Multi N-gram을 이용한 악성코드 분류 방법이 개시된다.
악성코드를 분류하는 방법은 악성코드 분류 장치가 실행파일에서 텍스트 섹션을 추출하는 단계, 멀티 N-gram 매트릭스(Multi N-gram Matrix)를 이용하여 상기 추출된 텍스트 섹션에서 시그니처를 추출하는 단계 및 상기 추출한 시그니처를 분석하여 악성코드를 분류하는 단계를 포함할 수 있다.
일측에 따르면, 상기 텍스트 섹션을 추출하는 단계는 상기 실행파일의 섹션 별 엔트로피 값을 이용하여 상기 텍스트 섹션을 추출하는 단계일 수 있다.
다른 측면에 따르면, 상기 텍스트 섹션을 추출하는 단계 이후에 상기 실행파일의 각 섹션을 구분하고 조정하기 위해 사용되는 값을 제거하는 단계를 더 포함할 수 있다.
또 다른 측면에 따르면, 상기 시그니처를 추출하는 단계는 상기 멀티 N-gram 매트릭스를 이용하여 한번의 추출에 복수개의 시그니처를 추출하는 단계일 수 있다.
또 다른 측면에 따르면, 상기 멀티 N-gram 매트릭스는 한번의 수행에 유니 그램(Uni-gram), 비 그램(Bi-gram) 및 트리 그램(Tri-gram)을 추출할 수 있다.
또 다른 측면에 따르면, 상기 분류하는 단계는 상기 추출한 시그니처와 기 저장된 악성코드들의 시그니처 간의 유사도를 비교함으로써 상기 악성코드를 분류하는 단계일 수 있다.
악성코드 분류 장치는 실행파일에서 텍스트 섹션을 추출하는 추출부 및 멀티 N-gram 매트릭스(Multi N-gram Matrix)를 이용하여 상기 추출된 텍스트 섹션에서 시그니처를 추출하고 상기 추출한 시그니처를 분석하여 악성코드를 분류하는 분석부를 포함할 수 있다.
N-gram 기법을 기반으로 하는 멀티 N-gram 매트릭스를 이용하여 악성코드를 분류함으로써 악성코드의 분류를 위한 별도의 선처리 과정이 필요하지 않다.
실행파일에서 텍스트 섹션만을 추출하고 멀티 N-gram 매트릭스를 이용하여 추출한 텍스트 섹션에서 한번에 복수개의 시그니처를 추출하기 때문에 보다 신속하고 정확하게 악성코드를 분류할 수 있다.
도 1은 본 발명의 일실시예에 있어서, 악성코드 분류 방법을 나타내는 흐름도이다.
도 2는 본 발명의 일실시예에 있어서, 악성코드 분류 장치의 구조를 나타내는 도면이다.
도 3은 일반적인 실행파일의 구조를 나타내는 도면이다.
도 4는 본 발명의 일실시예에 있어서, 텍스트 섹션을 추출하는 과정을 설명하기 위한 도면이다.
도 5는 본 발명의 일실시예에 있어서, 멀티 N-gram 매트릭스를 나타내는 도면이다.
도 6은 본 발명의 일실시예에 있어서, 멀티 N-gram 매트릭스를 통한 유사도 계산 결과를 나타내는 그래프이다.
이하, 본 발명의 실시예를 첨부된 도면을 참조하여 상세하게 설명한다.
도 1은 본 발명의 일실시예에 있어서, 악성코드 분류 방법을 나타내는 흐름도이다.
본 발명에 따른 악성코드 분류 방법은 N-gram 기법을 기반으로 하는 멀티 N-gram 매트릭스(Multi N-gram Matrix)를 이용하여 악성코드를 분류한다.
N-gram 기법이란 바이너리 파일 전체를 길이 N의 서브스트링(Sub-string)으로 나누는 방법이다. 여기서, N의 단위는 1 bit, 1 hex, 1 byte 등 기준에 따라 자유롭게 정할 수 있다. 이 기법은 대표적인 확률적 언어 모델의 하나로, n개의 단어의 연쇄를 확률적으로 표현하여 다음 단어를 확률적으로 예측하는데 사용된다. 예를 들어 "SIGNATURE"이라는 문자열이 있다고 가정했을 경우, 1byte를 기준으로 5-gram 기법을 적용한다면, "SIGNA", "IGNAT", "GNATU", "NATUR", "ATURE" 라는 5가지 하위 문자열들이 각각 빈도수 "1"로 생성된다.
N-gram을 이용한 악성코드 탐지 기법은 이러한 하위 문자열의 빈도수를 프로그램의 시그니처로 사용하여 탐지하는 방법이다. 악성코드를 탐지하고자 하는 프로그램 전체를 이진 바이너리 파일로 표현한 후, N에 따라 크기 N의 하위 바이너리 문자열을 추출한 바이트 패턴을 시그니처로 사용한다.
그러나, 이러한 기존의 N-gram을 이용한 악성코드 탐지 기법은 바이너리 전체의 바이트 패턴을 추출해 내므로, 빈도수가 낮은 N-gram은 유사도 계산에 영향을 미치지 않는다. 또한, "FF" 혹은 "00" 과 같이 섹션을 구분하고 조정(Align)하기 위해 사용되는 값들을 유사도 계산에 사용하기 때문에 이러한 잘못된 입력 잡음(Input Noise)으로 인해 악성코드 분류 시 그 정확도가 떨어지는 결과를 초래한다. 또한, 리스트를 사용하여 시그니처를 추출하는 경우, 수행시간이 지나치게 많이 소요된다.
따라서, 본 발명에 따른 악성코드 분류 장치는 도 1에 도시된 것과 같이 악성코드를 분류하고자 하는 실행파일에서 바이너리의 행위를 직접적으로 담당하는 텍스트 섹션(.text section)만을 추출함으로써 악성코드 분류의 정확성을 높일 수 있다(110). 이 때, 실행파일의 각 섹션을 구분하고 조정하기 위해 사용되는 값(입력 잡음)은 제거될 수 있다.
대부분의 악성코드들은 안티 바이러스를 회피하기 위해 실행 압축(Packing)이 되어 있기 때문에 섹션 구분이 어렵다. 이를 해결하기 위해 본 발명에 따른 악성코드 분류 장치는 실행파일의 섹션 별 엔트로피 값을 이용하여 텍스트 섹션을 추출할 수 있다. 여기서, 엔트로피(Entropy)란 정보의 양을 나타내는 척도로, 엔트로피 값이 높다는 것은 해당 정보가 나타나는 확률이 낮다는 것이며 그만큼 정보의 가치가 높다는 것을 의미한다.
실행파일에서 텍스트 섹션이 추출되면, 멀티 N-gram 매트릭스를 이용하여 추출된 텍스트 섹션에서 시그니처를 추출한다(120). 이 때, 본 발명에 따른 악성코드 분류 장치는 멀티 N-gram 매트릭스를 이용하기 때문에 한번의 추출에 복수개의 시그니처를 추출할 수 있고, 따라서 시그니처의 추출에 소요되는 시간을 줄여 신속성을 높일 수 있다. 멀티 N-gram 매트릭스는 한번의 수행에 유니 그램(Uni-gram), 비 그램(Bi-gram) 및 트리 그램(Tri-gram)을 추출할 수 있기 때문에 N-gram의 정확성을 높일 수 있다.
실행파일의 텍스트 섹션에서 복수개의 시그니처가 추출되면, 악성코드 분류 장치는 추출한 시그니처를 분석하여 악성코드를 분류할 수 있다(130). 일 예로, 악성코드 분류 장치는 추출한 시그니처와 데이터베이스에 기 저장된 악성코드들의 시그니처 간의 유사도를 비교함으로써 악성코드를 분류할 수 있다.
도 2는 본 발명의 일실시예에 있어서, 악성코드 분류 장치의 구조를 나타내는 도면이다.
본 발명에 따른 악성코드 분류 장치는 N-gram을 기반으로 하는 Multi N-gram을 사용하여 악성코드를 분석한다. 이를 위하여 본 발명에 따른 악성코드 분류 장치는 실행파일에서 텍스트 섹션을 추출하는 추출부(Section Extractor) 및 멀티 N-gram 매트릭스를 이용하여 상기 추출된 텍스트 섹션에서 시그니처를 추출하고 상기 추출한 시그니처를 분석하여 악성코드를 분류하는 분석부(Byte Analyzer)를 포함할 수 있다.
추출부는 악성코드의 효율적이고 정확한 분석을 위해 Multi N-gram의 적용 범주를 텍스트 섹션에 집중할 수 있다. 이 때, 추출부는 섹션들을 분류하기 위해 각 섹션(텍스트 섹션, 데이터 섹션 등) 별로 엔트로피 값을 계산하여 비교할 수 있다.
분석부는 추출된 텍스트 섹션에 Multi N-gram matrix를 사용하며, 추출한 N-gram 가운데 빈도수가 가장 높은 K개의 N-gram들을 그 시그니처로 정의한다. 이 때, 추출된 시그니처는 악성코드의 분류를 위해 데이터베이스에 저장될 수 있다. 따라서, 새로운 악성코드가 입력되면 동일한 방법으로 N-gram 및 스트링(String)을 추출하여, 기존의 시그니처들과 비교하여 동종 유사도 혹은 이종 여부를 계산해낼 수 있다.
도 3은 일반적인 실행파일의 구조를 나타내는 도면이다.
기존의 N-gram 기법은 바이너리 전체를 대상으로 적용되었다. 모든 섹션 및 헤더(Header)에서 N-gram을 추출하여 그 빈도수를 계산하기 때문에, 빈도수가 낮은 N-gram은 유사도 계산에 영향을 끼치지 않는다. 또한, 기존의 N-gram 기법은 'FF' 혹은 '00' 과 같이 섹션을 구분하고 조정(Align)하기 위해 사용되는 값들이 유사도 계산에 사용된다. 이러한 잘못된 입력 잡음(Input Noise) 때문에 기존의 N-gram 기법은 악성코드 분류 시, 그 정확도가 떨어지는 결과를 초래한다. 따라서, 보다 정확한 시그니처를 만들기 위해 본 발명에 따른 악성코드 분류 방법은 텍스트 섹션에만 Multi N-gram 기법을 적용한다. 이를 위해서는 섹션의 분류가 우선적으로 이루어져야 한다.
윈도우 실행파일인 PE(Portable Executable)의 구조는 도 3과 같으며, 헤더 정보 중 섹션 헤더(PE 헤더)를 통해 섹션을 추출해 낼 수 있다. 하지만, 최근 악성코드들은 대부분 실행 압축 기술이 적용되어 있거나, 섹션 명을 사용자 임의로 변환해 놓는다. 이는 단순히 헥스 에디터(Hex Editor)를 통해서 손쉽게 변환 가능하다. 이러한 기술들이 적용되는 이유는 바이너리의 해쉬(Hash)값 등을 시그니처로 사용하는 안티 바이러스 기술을 우회하거나, 분석을 어렵게 하기 위함이다. 따라서, 분석을 위해서는 실행 압축 해제(Unpacking)을 한 후 섹션을 분류해 낼 수 있어야 한다.
본 발명에 따른 악성코드 분류 방법은 텍스트 섹션 추출을 위해 섹션 별 엔트로피(Entropy)값을 이용한다. 섹션마다 내제되어 있는 정보의 종류와 그 방식이 다르므로 엔트로피의 값 또한 다르게 나타난다. 따라서, 본 발명에 따른 악성코드 분류 방법은 이러한 섹션 엔트로피 차이를 이용하여 섹션들을 분류할 수 있다.
도 4는 본 발명의 일실시예에 있어서, 텍스트 섹션을 추출하는 과정을 설명하기 위한 도면이다.
텍스트 섹션은 코드섹션으로도 불리며, 뜻 그대로 실행 명령어들을 담고 있는 섹션이다. 즉, 작성된 바이너리의 모든 명령어들이 도 4와 같은 형태로 모두 섹션 안에 존재한다. 따라서, 본 섹션에 1-gram을 적용하는 경우 단일 바이트 연산부호(opcode)의 빈도수를 근사하게 계산해 낼 수 있으며, 명령어들이 정렬(Align)되는 단위가 1byte 이므로 오퍼랜드(operand)들의 빈도수 또한 함께 계산해낼 수 있다. 또한, N 값으로 2 혹은 3 등을 적용하는 경우 2byte opcode, 3 byte opcode와 더불어 명령어의 빈도수 또한 근사하게 계산해낼 수 있다.
기존의 N-gram 기법에서는 바이트(byte)를 대상으로 N-gram을 추출해 내는 데 약 99%의 시간이 걸리며, 파일 크기(n)가 선형적으로 증가함에 따라 수행 시간이 O(n2)의 형태로 증가한다. 이는, 매 N-gram 추출 시, 기존의 N-gram List에 존재하는지를 탐색하는데 시간이 소요되기 때문이다. 또한, 한 번의 N-gram 실험 시 N의 값은 한 가지만 사용할 수 있다. 이러한 수행시간의 더딤은 정확한 시그니처를 작성하기 위해 적게는 수십에서 많게는 수백 개까지의 샘플에 다양한 N값을 정하여 N-gram을 수행하여야 하는 N-gram 기법에 치명적이다.
따라서, 본 발명에 따른 악성코드 분류 방법은 이러한 문제점을 해결하기 위해 기존의 리스트를 사용한 방법 대신 N-gram 매트릭스를 사용할 수 있다. 나아가 매트릭스를 여러 레벨(level)로 확장하여, 한번의 N-gram 실험으로 N을 다양하게 추출할 수 있는 멀티 N-gram 매트릭스를 사용할 수 있다.
도 5는 본 발명의 일실시예에 있어서, 멀티 N-gram 매트릭스를 나타내는 도면이다.
기존의 N-gram 기법의 경우 N값 하나를 정해 이를 바이너리에 적용한다. N-gram은 선처리 과정이 필요하지 않다는 장점이 있지만, N 값이 높아질수록 리스트 내 비교·탐색 시간이 높아진다. 또한, 분류의 정확도를 높이기 위해서는 N의 값을 다양하게 적용시키는 것이 필요하므로 N값에 따른 반복된 계산이 필요하다. 그러나, 악성코드의 정확한 분류를 위해서는 시그니처를 만들기 위해 샘플을 적게는 수십 개에서 많게는 수백 개를 사용하여야 한다. 따라서, 본 발명에 따른 악성코드 분류 방법은 멀티 N-gram 매트릭스를 이용함으로써 한번의 N-gram 수행으로 1-gram, 2-gram, 3-gram list들을 모두 추출하여 저장할 수 있다.
이러한 멀티 N-gram은 배열을 사용하여 구현될 수 있다. 배열의 각 인덱스(index)는 1바이트의 1-gram 값을 의미한다. 1 바이트는 8 비트(bit)로써 28개의 종류가 존재하므로, 하나의 배열에는 256개의 인덱스가 존재한다. 하나의 인덱스 배열 공간에는 해당 1-gram의 빈도수가 저장된다. 또한, 각각의 인덱스 배열에는 256개의 하위 배열이 존재한다. 한 개의 1-gram이 추출되는 경우 바로 다음에 추출되는 1-gram은 해당 인덱스의 하위 배열에 저장되게 된다. 도 5는 일 예로, 2bit로 이루어진 스트링에 bit를 기준으로 N-bit-gram을 적용한 예를 나타낸다.
도 5를 참조하면, 2 bit이므로 하나의 배열 당 인덱스 개수는 22 = 4가 사용된다. 1-bit-gram을 사용하고자 하면 어레이(Array)들 만을 비교하면 된다. Array[i]의 값은 스트링 내의 1-bit-gram 'i'의 빈도수를 의미한다. 마찬가지로, Array[i][j]의 값은 스트링 내의 'i j'의 빈도수가 되며, 이는 스트링 내의 2-bit-gram 'ij'의 빈도수를 의미한다. 본 발명에 따른 악성코드 분류 방법은 이를 byte 수준으로 확장시켜 멀티 N-gram 매트릭스를 생성할 수 있다.
도 6은 본 발명의 일실시예에 있어서, 멀티 N-gram 매트릭스를 통한 유사도 계산 결과를 나타내는 그래프이다.
본 발명에 따른 악성코드 분류 방법의 실험을 위해 악성코드 샘플을 수집하였다. 수집한 악성코드는 트로이 목마(Trojan)로 분류되며, DDoS(Distributed Denial of Service) 공격을 수행한다. 각 악성코드 샘플의 진단명은 Kaspersky 안티 바이러스 프로그램의 진단명을 사용하였다. 분별 가능성을 증명하기 위해 정상 바이너리 또한 실험에 사용하였으며, 일반적으로 윈도우 OS 상에서 사용되는 메모장(notepad.exe), 계산기(calc.exe), 익스플로러(Explorer.exe) 등을 사용하였다.
다음의 표 1 및 표 2는 Boxed 패밀리 및 정상 바이너리들의 섹션 별 엔트로피를 계산한 결과이다.
Figure 112012109139550-pat00001
Figure 112012109139550-pat00002
대상 정상 바이너리들의 경우, 프로그램 내에서 사용된 API, DLL의 정보가 담겨있는 "import table"이 ".idata" 섹션에 존재하지 않지만 텍스트 섹션에서 테이블이 명시되어 있었다. 따라서, 텍스트 섹션의 엔트로피를 계산하는 과정에서 이를 제외하였으며, "import table"의 엔트로피를 ".idata" 섹션의 엔트로피로 계산하였다.
결과적으로, 텍스트 섹션이 섹션들 중 가장 높은 엔트로피를 보였으며, ".idata" 섹션, 데이터 섹션 순으로 높게 나타났다. 다음의 표 3은 Boxed 패밀리의 엔트로피를 계산한 것이다.
Figure 112012109139550-pat00003
특이점은 UPX 패킹이 이루어 졌다는 점이다. 분석을 하기 전 언패킹을 마쳤지만, 섹션 이름은 "UPX0", "UPX1", "UPX2", ".dswlab" 등으로 나뉘어 졌음을 발견하였다. 이를 직접적으로 헥스 에디터를 사용하여 확인해본 결과 가장 엔트로피가 높게 나타났던 "UPX0" 섹션은 명령어를 담고 있는 텍스트 섹션의 구조를 가지고 있었으며, ".dswlab" 섹션은 ".idata" 섹션과 동일한 형태를 담고 있는 것을 확인할 수 있었다.
따라서, 기존의 안티 바이러스 기술을 회피하기 위한 섹션명 변경 기술이 적용된 바이너리라도, 엔트로피를 계산해 내어 섹션 구분을 하는 것이 가능하다는 것을 알 수 있다.
본 발명에 따른 텍스트 섹션 N-gram을 구현하여 실험해본 결과는 다음의 표 4와 같다.
Figure 112012109139550-pat00004
악성코드 샘플로는 Boxed 패밀리와 Delf 패밀리를 사용하였으며, K = 17, N = 4을 사용하였다. 트레이닝 셋(Training Set)은 Boxed.b 및 Boxed.d를 사용하였다. 따라서, 계산된 유사도는 b와 d에 N-gram를 적용하여 얻어진 Boxed 패밀리의 시그니처와 얼마나 유사한지를 나타낸다. 텍스트 섹션 N-gram의 대조군으로는 KNN-Ngram을 사용하였다. 실험 결과, 기존의 N-gram과 비교했을 경우 텍스트 섹션 N-gram의 수행시간이 현저히 적고, 동일 패밀리 별 유사도는 한층 증가됨을 확인 할 수 있었다. 반면에, 타 패밀리 및 정상 바이너리와의 유사도는 감소하였다. 따라서, 텍스트 섹션에만 N-gram을 적용할 경우 더 정확하고 효율적인 시그니처 제작이 가능하다는 것을 알 수 있다.
다음의 표 5는 기존의 N-gram을 구현 및 실험해 본 결과, 각 단계별 수행 시간 및 비중을 나타낸 것이며, 앞서 언급한 바와 같이 대부분의 수행시간이 N-gram을 추출해 내는 데 소요되는 것을 알 수 있다.
Figure 112012109139550-pat00005
기존의 리스트를 사용한 N-gram의 경우 1-gram, 2-gram, 3-gram을 모두 적용하여 시그니처를 만드는 경우 77.891초가 소요되었다. 본 발명에 따른 Multi N-gram Matrix의 경우 0.74초이며, 기존 기법에 비해 1/100로 시간을 줄일 수 있었다. 또한, 각기 다른 N값에 대한 N-gram 시그니처를 사용하여 유사도를 계산해 낼 수 있었다. 도 6은 이를 통해 계산해 낸 통합 유사도를 나타낸다.
전체적으로 유사도는 2-gram만을 적용한 섹션 N-gram 결과와 유사한 경향을 보였다. 일반적으로 동일 패밀리의 악성코드의 경우 0.7 ~ 0.95에 달하는 높은 유사도를 보였지만, 이종 패밀리 및 정상 프로그램과의 유사도는 0.4 이하의 낮은 값이 측정되었다. 따라서, 임계값(Threshold)을 0.7로 하면 정확한 분류가 가능하다.
이상과 같이 실시예들이 비록 한정된 실시예와 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다.  예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.

Claims (7)

  1. 악성코드를 분류하는 방법에 있어서,
    악성코드 분류 장치가 실행파일에서 텍스트 섹션을 추출하는 단계;
    멀티 N-gram 매트릭스(Multi N-gram Matrix)를 이용하여 상기 추출된 텍스트 섹션에서 시그니처를 추출하는 단계; 및
    상기 추출한 시그니처를 분석하여 악성코드를 분류하는 단계
    를 포함하고,
    상기 시그니처를 추출하는 단계는,
    상기 멀티 N-gram 매트릭스를 이용하여 한번의 추출에 복수개의 시그니처를 추출하는 단계인 것을 특징으로 하는 악성코드 분류 방법.
  2. 제1항에 있어서,
    상기 텍스트 섹션을 추출하는 단계는,
    상기 실행파일의 섹션 별 엔트로피 값을 이용하여 상기 텍스트 섹션을 추출하는 단계인 것을 특징으로 하는 악성코드 분류 방법.
  3. 제1항에 있어서,
    상기 텍스트 섹션을 추출하는 단계 이후에,
    상기 실행파일의 각 섹션을 구분하고 조정하기 위해 사용되는 값을 제거하는 단계를 더 포함하는 것을 특징으로 하는 악성코드 분류 방법.
  4. 삭제
  5. 제1항에 있어서,
    상기 멀티 N-gram 매트릭스는,
    한번의 수행에 유니 그램(Uni-gram), 비 그램(Bi-gram) 및 트리 그램(Tri-gram)을 추출하는 것을 특징으로 하는 악성코드 분류 방법.
  6. 제1항에 있어서,
    상기 분류하는 단계는,
    상기 추출한 시그니처와 기 저장된 악성코드들의 시그니처 간의 유사도를 비교함으로써 상기 악성코드를 분류하는 단계인 것을 특징으로 하는 악성코드 분류 방법.
  7. 악성코드를 분류하는 장치에 있어서,
    실행파일에서 텍스트 섹션을 추출하는 추출부; 및
    멀티 N-gram 매트릭스(Multi N-gram Matrix)를 이용하여 상기 추출된 텍스트 섹션에서 시그니처를 추출하고 상기 추출한 시그니처를 분석하여 악성코드를 분류하는 분석부
    를 포함하고,
    상기 분석부는,
    상기 멀티 N-gram 매트릭스를 이용하여 한번의 추출에 복수개의 시그니처를 추출하는 것
    을 특징으로 하는 악성코드 분류 장치.
KR1020120156590A 2012-12-28 2012-12-28 Multi N―gram을 이용한 악성코드 분류 방법 KR101473535B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020120156590A KR101473535B1 (ko) 2012-12-28 2012-12-28 Multi N―gram을 이용한 악성코드 분류 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020120156590A KR101473535B1 (ko) 2012-12-28 2012-12-28 Multi N―gram을 이용한 악성코드 분류 방법

Publications (2)

Publication Number Publication Date
KR20140087236A KR20140087236A (ko) 2014-07-09
KR101473535B1 true KR101473535B1 (ko) 2014-12-18

Family

ID=51736179

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120156590A KR101473535B1 (ko) 2012-12-28 2012-12-28 Multi N―gram을 이용한 악성코드 분류 방법

Country Status (1)

Country Link
KR (1) KR101473535B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019216502A1 (ko) * 2018-05-09 2019-11-14 국방과학연구소 악성코드 데이터를 분류하는 장치 및 방법
KR20200005910A (ko) * 2018-07-09 2020-01-17 한양대학교 산학협력단 악성 도메인을 판단하는 방법, 이를 이용하는 컴퓨팅 장치, 및 프로그램

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101851233B1 (ko) * 2018-02-13 2018-04-23 (주)지란지교시큐리티 파일 내 포함된 악성 위협 탐지 장치 및 방법, 그 기록매체
KR102120200B1 (ko) * 2019-12-27 2020-06-17 주식회사 와이햇에이아이 악성 코드 수집 방법 및 시스템

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004348239A (ja) 2003-05-20 2004-12-09 Fujitsu Ltd テキスト分類プログラム
JP2007219620A (ja) 2006-02-14 2007-08-30 Fuji Xerox Co Ltd テキスト検索装置、テキスト検索プログラム、及びテキスト検索方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004348239A (ja) 2003-05-20 2004-12-09 Fujitsu Ltd テキスト分類プログラム
JP2007219620A (ja) 2006-02-14 2007-08-30 Fuji Xerox Co Ltd テキスト検索装置、テキスト検索プログラム、及びテキスト検索方法

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019216502A1 (ko) * 2018-05-09 2019-11-14 국방과학연구소 악성코드 데이터를 분류하는 장치 및 방법
KR20200005910A (ko) * 2018-07-09 2020-01-17 한양대학교 산학협력단 악성 도메인을 판단하는 방법, 이를 이용하는 컴퓨팅 장치, 및 프로그램
KR102100393B1 (ko) 2018-07-09 2020-04-13 한양대학교 산학협력단 악성 도메인을 판단하는 방법, 이를 이용하는 컴퓨팅 장치, 및 프로그램

Also Published As

Publication number Publication date
KR20140087236A (ko) 2014-07-09

Similar Documents

Publication Publication Date Title
Cakir et al. Malware classification using deep learning methods
US9621571B2 (en) Apparatus and method for searching for similar malicious code based on malicious code feature information
CN107844705B (zh) 基于二进制代码特征的第三方组件漏洞检测方法
RU2420791C1 (ru) Метод отнесения ранее неизвестного файла к коллекции файлов в зависимости от степени схожести
WO2015101097A1 (zh) 特征提取的方法及装置
KR101162051B1 (ko) 문자열 비교 기법을 이용한 악성코드 탐지 및 분류 시스템 및 그 방법
US9454658B2 (en) Malware detection using feature analysis
RU2722692C1 (ru) Способ и система выявления вредоносных файлов в неизолированной среде
KR102317833B1 (ko) 악성 코드 탐지 모델 학습 방법 및 이를 이용한 탐지 방법
WO2018159010A1 (ja) 選択装置、選択方法及び選択プログラム
RU2728497C1 (ru) Способ и система определения принадлежности программного обеспечения по его машинному коду
RU2728498C1 (ru) Способ и система определения принадлежности программного обеспечения по его исходному коду
KR101473535B1 (ko) Multi N―gram을 이용한 악성코드 분류 방법
CN113139189B (zh) 一种挖矿恶意软件的识别方法、系统和存储介质
Schofield et al. Convolutional neural network for malware classification based on API call sequence
US11947572B2 (en) Method and system for clustering executable files
O'Kane et al. N-gram density based malware detection
CN110399729B (zh) 一种基于组件特征权重的二进制软件分析方法
KR20160100887A (ko) 코드 블록 비교를 통한 악성 코드 탐지 방법
Bat-Erdene et al. Dynamic classification of packing algorithms for inspecting executables using entropy analysis
KR102031592B1 (ko) 악성코드를 탐지하기 위한 방법 및 장치
Toan et al. Static feature selection for IoT malware detection
Hang et al. Malware detection method of android application based on simplification instructions
Nataraj et al. Detecting packed executables based on raw binary data
RU2778979C1 (ru) Способ и система кластеризации исполняемых файлов

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee