KR102068605B1 - 함수 실행 순서를 이용한 악성코드 분류 방법 및 이를 사용한 장치 - Google Patents

함수 실행 순서를 이용한 악성코드 분류 방법 및 이를 사용한 장치 Download PDF

Info

Publication number
KR102068605B1
KR102068605B1 KR1020190033966A KR20190033966A KR102068605B1 KR 102068605 B1 KR102068605 B1 KR 102068605B1 KR 1020190033966 A KR1020190033966 A KR 1020190033966A KR 20190033966 A KR20190033966 A KR 20190033966A KR 102068605 B1 KR102068605 B1 KR 102068605B1
Authority
KR
South Korea
Prior art keywords
sequence
code
similarity
specific
malicious
Prior art date
Legal status (The legal status 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 status listed.)
Active
Application number
KR1020190033966A
Other languages
English (en)
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 KR1020190033966A priority Critical patent/KR102068605B1/ko
Application granted granted Critical
Publication of KR102068605B1 publication Critical patent/KR102068605B1/ko
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/35Clustering; Classification

Landscapes

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

Abstract

본 발명에 따르면, 악성코드를 분류하는 방법으로서, (a) 미확인 코드가 실행되면, 장치가, 상기 미확인 코드의 실행 과정에서 호출되는 적어도 하나의 특정 호출 함수 정보 - 상기 특정 호출 함수 정보는, 전체 호출 함수 정보에 대응되는 전체 행위 기반 키워드 중 특정 행위 기반 키워드에 대응되는 함수 정보임 - 및 상기 특정 호출 함수 정보에 대응되는 호출 순서 정보를 참조로 하여, 제1 시퀀스를 획득하는 단계; (b) 상기 장치가, 복수의 과거 악성코드에 대응되는 복수의 참조 시퀀스 - 상기 복수의 참조 시퀀스는 소정의 데이터베이스에 저장되어 있음 - 중 적어도 하나의 제2 시퀀스와 상기 제1 시퀀스를 참조로 하여, 상기 제1 시퀀스와 상기 제2 시퀀스의 유사도를 판단하는 단계; 및 (c) 상기 유사도가 제1 임계치 이상인 것으로 판단되는 경우, 상기 장치가, 상기 유사도를 판단할 때 참조된 상기 제2 시퀀스에 대응되는 특정 과거 악성코드와 상기 제1 시퀀스에 대응되는 상기 미확인 코드를 동일한 특정 악성코드 클러스터 - 상기 특정 악성코드 클러스터는 상기 특정 과거 악성코드에 대응되는 악성코드 클러스터임 - 에 포함되는 것으로 판단하고, 상기 유사도가 상기 제1 임계치 미만인 것으로 판단되는 경우, 상기 장치가, 상기 미확인 코드를 별도 검사 대상으로 분류하는 단계; 를 포함하되, 상기 행위 기반 키워드는, 상기 전체 호출 함수 각각을 행위 별로 분류할 수 있도록 사전에 정해진 키워드로서 'FindFirst', 'FindNext', 'CreateFile', 'OpenFile', 'WriteFile', 'CloseHandle', 'Process', 'Crypt' 및 'SetFile' 키워드를 포함하는 것을 특징으로 하며, 상기 (a) 단계 이전에, (a0) 상기 장치가, 상기 데이터베이스에 저장된 상기 복수의 참조 시퀀스를, 복수의 악성코드 클러스터 중 어느 악성코드 클러스터에 속하는지 분류하는 단계; 를 더 포함하고, 상기 (b) 단계는, 상기 장치가, 상기 복수의 악성코드 클러스터 중 상기 특정 악성코드 클러스터에서 상기 제2 시퀀스를 선택하는 것을 특징으로 하며, 상기 (b) 단계에서, 상기 유사도의 판단은, 상기 장치가, (i) 상기 제1 시퀀스의 길이값 및 상기 제2 시퀀스의 길이값들의 평균인 제1 평균값을 계산하여, 상기 제1 시퀀스 및 상기 제2 시퀀스 중에서 상기 제1 평균값을 초과하는 길이의 시퀀스를 제외한 나머지 시퀀스의 길이값들의 평균인 제2 평균값을 구하는 프로세스, (ii) 상기 제2 시퀀스 중 적어도 일부와 상기 제1 시퀀스의 조합을 참조로 하여 적어도 하나의 최장공통부분시퀀스(Longest Common Subsequence, LCS)를 구하는 프로세스, 및 (iii) 상기 LCS의 길이값들 중 가장 큰 값을 상기 제2 평균값으로 나누어 획득된 결과값을 참조로 하여 유사도를 판단하는 프로세스를 수행함에 의하여 이루어지는 것을 특징으로 하고, 상기 (a) 단계에서, 상기 제1 시퀀스에, 상기 특정 행위 기반 키워드 중 악의적인 영향을 주지 않는 함수의 행위 기반 키워드에 대응되는 구성요소가 둘 이상 연속하여 포함된 경우, 상기 장치가, 상기 구성요소를 병합하여 상기 제1 시퀀스를 업데이트하는 것을 특징으로 하는 악성코드 분류 방법이 제공된다.

Description

함수 실행 순서를 이용한 악성코드 분류 방법 및 이를 사용한 장치 {METHOD FOR CLASSIFYING MALICIOUS CODE BY USING SEQUENCE OF FUNCTIONS' EXECUTION AND DEVICE USING THE SAME}
본 발명은 함수 실행 순서를 이용한 악성코드 분류 방법 및 이를 사용한 장치에 관한 것이다.
악성코드는 인가되지 않은 접근을 통한 악의적인 행위를 하기 위해 시스템 함수를 호출하여 실행한다. 이러한 악성코드를 막기 위해, 기존의 안티바이러스 프로그램은 수집된 악성코드를 분석해 추출한 특징을 기반으로 하는 시그니처 방식을 사용한다. 예를 들면, 기존의 시그니처 방식으로 악성코드를 분류하는 방법은 다음과 같다. 안티바이러스 프로그램이 실행되는 장치가, 기존에 발생되고 수집된 악성코드 A에 대응되는 시그니처를 획득한 상태에서, A와 비슷한 유형의 A-1, A-2, ..., A-n 의 악성코드들이 발생하면, 각각의 악성코드들에 대하여 수동분석을 수행하여 대응되는 시그니처들을 획득한다. 그리고 나서, 악성코드 A의 시그니처와, A-1, A-2, ..., A-n의 악성코드와 대응되는 시그니처들을 각각 비교하여, A-1, A-2, ..., A-n의 악성코드가 악성코드 A와 비슷한 유형임을 탐지하고, 상황에 따라 해당 코드의 차단 등을 수행한다.
하지만, 최근 악의적인 목적을 가진 해커들이 악성코드를 자동으로 생성하는 도구를 사용함에 따라 악성코드가 대량으로 생성 및 유포되고 있다. 더욱이, 이러한 악성코드들은 안티 디버깅, 패킹을 이용한 리버스 엔지니어링 방지, 지능화된 난독화 기술, 악성코드 은닉 등의 특성을 가짐으로써 그 탐지 및 분석에 어려움이 있다.
결과적으로, 기존의 시그니처 방식의 안티바이러스 프로그램이 가지는 높은 정확성이라는 장점에도 불구하고, 기준이 되는 악성코드 시그니처의 수집 및 분석에 많은 시간이 소요됨에 따라 한 해에 수십억 건 이상 생성 및 유포되는 악성코드에 실시간으로 대응하기에는 현실적인 어려움이 발생하게 되었다.
따라서, 이러한 문제점을 해결하기 위하여 많은 연구가 이루어져 왔다. 참고문헌 (최상명, "악성코드의 악성 행위와 탐지 기법", https://www.hauri.co.kr/security/issue_view.html?intSeq=93&page=18&article_num=92)에서 이러한 종래 기술과 관련된 내용을 찾아볼 수 있으며, 그에 더하여 상기 참고문헌은 종래 기술의 문제점을 보완하기 위한 방안으로서 휴리스틱 방식과 관련된 내용도 포함하고 있다. 하지만, 참고문헌에서도 밝히고 있듯이, 휴리스틱 방식은 높은 오탐률 및 느린 속도 등의 또 다른 문제를 내포하고 있다는 한계가 있다.
분석이 필요한 악성코드의 모집단이 갈수록 다양해지고 방대해짐에 따라, 이를 탐지하고 분류하는 데 있어 효율성이 떨어지는 문제가 계속해서 발생하고 있기에, 이에 대한 개선이 필요한 실정이다.
따라서, 본 발명은 상술한 문제점을 모두 해결하는 것을 그 목적으로 한다.
또한, 본 발명은, 악성코드를 동적으로 분석함으로써 악성코드의 분석을 방해하는 난독화 등의 문제를 극복할 수 있도록 하는 것을 다른 목적으로 한다.
또한, 본 발명은, 악성코드가 실행한 함수들을 순서대로 수집하여 분류 및 재배치하는 과정을 통해 악성코드의 행위를 시퀀스화함으로써 빠르게 악성코드의 악의적인 특징을 발견할 수 있도록 하는 것을 다른 목적으로 한다.
또한, 본 발명은, 악성코드가 실행한 함수들을 순서대로 수집하여 분류 및 재배치하는 과정을 통해 악성코드의 행위를 시퀀스화하고, 기존에 수집된 악성코드에 대응되는 시퀀스와의 유사도를 판단함으로써 추가적인 분석이 필요한 악성코드를 효과적으로 구분할 수 있도록 하는 것을 다른 목적으로 한다.
또한, 본 발명은, 악성코드가 실행한 함수들을 순서대로 수집하여 분류 및 재배치하는 과정을 통해 악성코드의 행위를 시퀀스화하고, 기존에 수집된 악성코드에 대응되는 시퀀스와의 유사도를 판단하는 일련의 과정을 자동적으로 수행함으로써 대량으로 생성 및 유포되는 악성 코드를 효율적으로 분류하는 방법 및 장치를 제공하는 것을 다른 목적으로 한다.
상기한 바와 같은 본 발명의 목적을 달성하고, 후술하는 본 발명의 특징적인 효과를 실현하기 위한, 본 발명의 특징적인 구성은 하기와 같다.
본 발명의 일 태양에 따르면, 악성코드를 분류하는 방법으로서, (a) 미확인 코드가 실행되면, 장치가, 상기 미확인 코드의 실행 과정에서 호출되는 적어도 하나의 특정 호출 함수 정보 - 상기 특정 호출 함수 정보는, 전체 호출 함수 정보에 대응되는 전체 행위 기반 키워드 중 특정 행위 기반 키워드에 대응되는 함수 정보임 - 및 상기 특정 호출 함수 정보에 대응되는 호출 순서 정보를 참조로 하여, 제1 시퀀스를 획득하는 단계; (b) 상기 장치가, 복수의 과거 악성코드에 대응되는 복수의 참조 시퀀스 - 상기 복수의 참조 시퀀스는 소정의 데이터베이스에 저장되어 있음 - 중 적어도 하나의 제2 시퀀스와 상기 제1 시퀀스를 참조로 하여, 상기 제1 시퀀스와 상기 제2 시퀀스의 유사도를 판단하는 단계; 및 (c) 상기 유사도가 제1 임계치 이상인 것으로 판단되는 경우, 상기 장치가, 상기 유사도를 판단할 때 참조된 상기 제2 시퀀스에 대응되는 특정 과거 악성코드와 상기 제1 시퀀스에 대응되는 상기 미확인 코드를 동일한 특정 악성코드 클러스터 - 상기 특정 악성코드 클러스터는 상기 특정 과거 악성코드에 대응되는 악성코드 클러스터임 - 에 포함되는 것으로 판단하고, 상기 유사도가 상기 제1 임계치 미만인 것으로 판단되는 경우, 상기 장치가, 상기 미확인 코드를 별도 검사 대상으로 분류하는 단계; 를 포함하되, 상기 행위 기반 키워드는, 상기 전체 호출 함수 각각을 행위 별로 분류할 수 있도록 사전에 정해진 키워드로서 'FindFirst', 'FindNext', 'CreateFile', 'OpenFile', 'WriteFile', 'CloseHandle', 'Process', 'Crypt' 및 'SetFile' 키워드를 포함하는 것을 특징으로 하며, 상기 (a) 단계 이전에, (a0) 상기 장치가, 상기 데이터베이스에 저장된 상기 복수의 참조 시퀀스를, 복수의 악성코드 클러스터 중 어느 악성코드 클러스터에 속하는지 분류하는 단계; 를 더 포함하고, 상기 (b) 단계는, 상기 장치가, 상기 복수의 악성코드 클러스터 중 상기 특정 악성코드 클러스터에서 상기 제2 시퀀스를 선택하는 것을 특징으로 하며, 상기 (b) 단계에서, 상기 유사도의 판단은, 상기 장치가, (i) 상기 제1 시퀀스의 길이값 및 상기 제2 시퀀스의 길이값들의 평균인 제1 평균값을 계산하여, 상기 제1 시퀀스 및 상기 제2 시퀀스 중에서 상기 제1 평균값을 초과하는 길이의 시퀀스를 제외한 나머지 시퀀스의 길이값들의 평균인 제2 평균값을 구하는 프로세스, (ii) 상기 제2 시퀀스 중 적어도 일부와 상기 제1 시퀀스의 조합을 참조로 하여 적어도 하나의 최장공통부분시퀀스(Longest Common Subsequence, LCS)를 구하는 프로세스, 및 (iii) 상기 LCS의 길이값들 중 가장 큰 값을 상기 제2 평균값으로 나누어 획득된 결과값을 참조로 하여 유사도를 판단하는 프로세스를 수행함에 의하여 이루어지는 것을 특징으로 하고, 상기 (a) 단계에서, 상기 제1 시퀀스에, 상기 특정 행위 기반 키워드 중 악의적인 영향을 주지 않는 함수의 행위 기반 키워드에 대응되는 구성요소가 둘 이상 연속하여 포함된 경우, 상기 장치가, 상기 구성요소를 병합하여 상기 제1 시퀀스를 업데이트하는 것을 특징으로 하는 악성코드 분류 방법이 제공된다.
삭제
삭제
삭제
일례로서, 상기 (c) 단계에서, 상기 미확인 코드가 상기 별도 검사 대상으로 분류되는 경우, (d1) 상기 장치가, 상기 미확인 코드에 관련된 정보를 제공함으로써 상기 미확인 코드에 대한 수동분석이 가능하도록 지원하는 프로세스, 및 (d2) 상기 장치가, 상기 장치에 연결된 별도의 사용자 단말이 상기 미확인 코드에 관련된 정보를 제공하도록 함으로써 상기 미확인 코드에 대한 수동분석이 가능하도록 지원하는 프로세스 중 적어도 하나의 프로세스를 수행하는 단계를 더 포함하는 악성코드 분류 방법이 제공된다.
일례로서, 상기 (c) 단계에서, 상기 유사도가 상기 제1 임계치 미만인 경우에, (c1) 상기 유사도가 제2 임계치 미만 - 상기 제2 임계치는 상기 제1 임계치보다 작음 - 인 경우, 상기 장치가, 상기 미확인 코드를 정상 코드로 판단하고, (c2) 상기 유사도가 상기 제2 임계치 이상인 경우, 상기 장치가, 상기 미확인 코드를 별도의 검사 대상으로 분류하는 것을 특징으로 하는 악성코드 분류 방법이 제공된다.
일례로서, 상기 데이터베이스에는 상기 복수의 참조 시퀀스에 대응되는 상기 복수의 과거 악성코드가 함께 저장되어 있는 것을 특징으로 하는 악성코드 분류 방법이 제공된다.
일례로서, 상기 미확인 코드는 가상환경에서 실행되는 것을 특징으로 하는 악성코드 분류 방법이 제공된다.
또한, 본 발명의 다른 태양에 따르면, 악성코드를 분류하는 장치로서, 인스트럭션들을 저장하는 적어도 하나의 메모리; 및 상기 인스트럭션들을 실행하기 위해 구성된 적어도 하나의 프로세서; 를 포함하고, 상기 프로세서가, (I) 미확인 코드가 실행되면, 상기 미확인 코드의 실행 과정에서 호출되는 적어도 하나의 특정 호출 함수 정보 - 상기 특정 호출 함수 정보는, 전체 호출 함수 정보에 대응되는 전체 행위 기반 키워드 중 특정 행위 기반 키워드에 대응되는 함수 정보임 - 및 상기 특정 호출 함수 정보에 대응되는 호출 순서 정보를 참조로 하여, 제1 시퀀스를 획득하는 프로세스; (II) 복수의 과거 악성코드에 대응되는 복수의 참조 시퀀스 - 상기 복수의 참조 시퀀스는 소정의 데이터베이스에 저장되어 있음 - 중 적어도 하나의 제2 시퀀스와 상기 제1 시퀀스를 참조로 하여, 상기 제1 시퀀스와 상기 제2 시퀀스의 유사도를 판단하는 프로세스; 및 (III) 상기 유사도가 제1 임계치 이상인 것으로 판단되는 경우, 상기 유사도를 판단할 때 참조된 상기 제2 시퀀스에 대응되는 특정 과거 악성코드와 상기 제1 시퀀스에 대응되는 상기 미확인 코드를 동일한 특정 악성코드 클러스터 - 상기 특정 악성코드 클러스터는 상기 특정 과거 악성코드에 대응되는 악성코드 클러스터임 - 에 포함되는 것으로 판단하고, 상기 유사도가 상기 제1 임계치 미만인 것으로 판단되는 경우, 상기 장치가, 상기 미확인 코드를 별도 검사 대상으로 분류하는 프로세스; 를 수행하되, 상기 행위 기반 키워드는, 상기 전체 호출 함수 각각을 행위 별로 분류할 수 있도록 사전에 정해진 키워드로서 'FindFirst', 'FindNext', 'CreateFile', 'OpenFile', 'WriteFile', 'CloseHandle', 'Process', 'Crypt' 및 'SetFile' 키워드를 포함하는 것을 특징으로 하며, 상기 (I) 프로세스 이전에, (I-0) 상기 프로세서가, 상기 데이터베이스에 저장된 상기 복수의 참조 시퀀스를, 복수의 악성코드 클러스터 중 어느 악성코드 클러스터에 속하는지 분류하는 프로세스; 를 더 수행하고, 상기 (II) 프로세스는, 상기 프로세서가, 상기 복수의 악성코드 클러스터 중 상기 특정 악성코드 클러스터에서 상기 제2 시퀀스를 선택하는 것을 특징으로 하며, 상기 (II) 프로세스에서, 상기 유사도의 판단은, 상기 프로세서가, (i) 상기 제1 시퀀스의 길이값 및 상기 제2 시퀀스의 길이값들의 평균인 제1 평균값을 계산하여, 상기 제1 시퀀스 및 상기 제2 시퀀스 중에서 상기 제1 평균값을 초과하는 길이의 시퀀스를 제외한 나머지 시퀀스의 길이값들의 평균인 제2 평균값을 구하는 프로세스, (ii) 상기 제2 시퀀스 중 적어도 일부와 상기 제1 시퀀스의 조합을 참조로 하여 적어도 하나의 최장공통부분시퀀스(Longest Common Subsequence, LCS)를 구하는 프로세스, 및 (iii) 상기 LCS의 길이값들 중 가장 큰 값을 상기 제2 평균값으로 나누어 획득된 결과값을 참조로 하여 유사도를 판단하는 프로세스를 수행함에 의하여 이루어지는 것을 특징으로 하고, 상기 (I) 프로세스에서, 상기 제1 시퀀스에, 상기 특정 행위 기반 키워드 중 악의적인 영향을 주지 않는 함수의 행위 기반 키워드에 대응되는 구성요소가 둘 이상 연속하여 포함된 경우, 상기 프로세서가, 상기 구성요소를 병합하여 상기 제1 시퀀스를 업데이트하는 것을 특징으로 하는 악성코드 분류 장치가 제공된다.
삭제
삭제
삭제
일례로서, 상기 (III) 프로세스에서, 상기 미확인 코드가 상기 별도 검사 대상으로 분류되는 경우, (IV-1) 상기 프로세서가, 상기 미확인 코드에 관련된 정보를 제공함으로써 상기 미확인 코드에 대한 수동분석이 가능하도록 지원하는 프로세스, 및 (IV-2) 상기 프로세서가, 상기 장치에 연결된 별도의 사용자 단말이 상기 미확인 코드에 관련된 정보를 제공하도록 함으로써 상기 미확인 코드에 대한 수동분석이 가능하도록 지원하는 프로세스 중 적어도 하나의 프로세스를 더 수행하는 악성코드 분류 장치가 제공된다.
일례로서, 상기 (III) 프로세스에서, 상기 유사도가 상기 제1 임계치 미만인 경우에, (III-1) 상기 유사도가 제2 임계치 미만 - 상기 제2 임계치는 상기 제1 임계치보다 작음 - 인 경우, 상기 프로세서가, 상기 미확인 코드를 정상 코드로 판단하고, (III-2) 상기 유사도가 상기 제2 임계치 이상인 경우, 상기 프로세서가, 상기 미확인 코드를 별도의 검사 대상으로 분류하는 것을 특징으로 하는 악성코드 분류 장치가 제공된다.
일례로서, 상기 데이터베이스에는 상기 복수의 참조 시퀀스에 대응되는 상기 복수의 과거 악성코드가 함께 저장되어 있는 것을 특징으로 하는 악성코드 분류 장치가 제공된다.
일례로서, 상기 미확인 코드는 가상환경에서 실행되는 것을 특징으로 하는 악성코드 분류 장치가 제공된다.
본 발명에 의하면, 다음과 같은 효과가 있다.
본 발명은, 악성코드를 동적으로 분석함으로써 악성코드의 분석을 방해하는 난독화 등의 문제를 극복할 수 있는 효과가 있다.
또한, 본 발명은, 악성코드가 실행한 함수들을 순서대로 수집하여 분류 및 재배치하는 과정을 통해 악성코드의 행위를 시퀀스화함으로써 빠르게 악성코드의 악의적인 특징을 발견할 수 있는 효과가 있다.
또한, 본 발명은, 악성코드가 실행한 함수들을 순서대로 수집하여 분류 및 재배치하는 과정을 통해 악성코드의 행위를 시퀀스화하고, 기존에 수집된 악성코드에 대응되는 시퀀스와의 유사도를 판단함으로써 추가적인 분석이 필요한 악성코드를 효과적으로 구분할 수 있는 효과가 있다.
또한, 본 발명은, 악성코드가 실행한 함수들을 순서대로 수집하여 분류 및 재배치하는 과정을 통해 악성코드의 행위를 시퀀스화하고, 기존에 수집된 악성코드에 대응되는 시퀀스와의 유사도를 판단하는 일련의 과정을 자동적으로 수행함으로써 대량으로 생성 및 유포되는 악성 코드를 효율적으로 분류할 수 있는 효과가 있다.
도 1은 본 발명의 일 실시예에 따른 악성코드 분류 장치를 개략적으로 나타내는 도면이다.
도 2는 본 발명의 일 실시예에 따라, 악성코드 분류 장치가, 미확인 코드와 과거 악성코드의 유사도를 판단하고 분류하는 방법을 개략적으로 나타내는 흐름도이다.
도 3a 및 도 3b는, 본 발명의 일 실시예에 따라, 악성코드 분류 장치가 안티바이러스 프로그램과 연동되는 구성을 개략적으로 도시한 도면이다.
후술하는 본 발명에 대한 상세한 설명은, 본 발명이 실시될 수 있는 특정 실시예를 예시로서 도시하는 첨부 도면을 참조한다. 이들 실시예는 당업자가 본 발명을 실시할 수 있기에 충분하도록 상세히 설명된다. 본 발명의 다양한 실시예는 서로 다르지만 상호 배타적일 필요는 없음이 이해되어야 한다. 예를 들어, 여기에 기재되어 있는 특정 형상, 구조 및 특성은 일 실시예에 관련하여 본 발명의 정신 및 범위를 벗어나지 않으면서 다른 실시예로 구현될 수 있다.
또한, 각각의 개시된 실시예 내의 개별 구성요소의 위치 또는 배치는 본 발명의 정신 및 범위를 벗어나지 않으면서 변경될 수 있음이 이해되어야 한다. 따라서, 후술하는 상세한 설명은 한정적인 의미로서 취하려는 것이 아니며, 본 발명의 범위는, 적절하게 설명된다면, 그 청구항들이 주장하는 것과 균등한 모든 범위와 더불어 첨부된 청구항에 의해서만 한정된다. 도면에서 유사한 참조부호는 여러 측면에 걸쳐서 동일하거나 유사한 기능을 지칭한다.
이하, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명을 용이하게 실시할 수 있도록 하기 위하여, 본 발명의 바람직한 실시예들에 관하여 첨부된 도면을 참조하여 상세히 설명하기로 한다.
도 1은 본 발명의 일 실시예에 따른 악성코드 분류 장치를 개략적으로 나타내는 도면이다.
도 1을 참조하면, 악성코드 분류 장치(100)는 메모리(110), 프로세서(120) 및 데이터베이스(200)를 포함할 수 있다. 이 때, 악성코드 분류 장치(100)의 메모리(110)는, 프로세서(120)의 인스트럭션들을 저장할 수 있는데, 구체적으로, 인스트럭션들은 악성코드 분류 장치(100)로 하여금 특정의 방식으로 기능하게 하기 위한 컴퓨터 소프트웨어로서, 컴퓨터 기타 프로그램 가능한 데이터 프로세싱 장비를 지향할 수 있는 컴퓨터 이용 가능 또는 컴퓨터 판독 가능 메모리에 저장될 수 있다. 인스트럭션들은 본 발명의 명세서에서 설명되는 기능들을 실행하기 위한 프로세스들을 수행할 수 있다.
그리고, 악성코드 분류 장치(100)의 프로세서(120)는, MPU(Micro Processing Unit) 또는 CPU(Central Processing Unit), 캐쉬 메모리(Cache Memory), 데이터 버스(Data Bus) 등의 하드웨어 구성을 포함할 수 있다. 또한, 운영체제, 특정 목적을 수행하는 애플리케이션의 소프트웨어 구성을 포함할 수 있다.
다음으로, 데이터베이스(200)는 악성코드의 분류를 위한 각종 데이터를 저장하는 매체로서, 기존 악성코드 및 그에 대응되는 악성코드 클러스터와 참조 시퀀스 등의 정보를 포함할 수 있으나, 이에 한정되는 것은 아닐 것이다. 이 때, 데이터베이스(200)는 플래시 메모리 타입(flash memory type), 하드디스크 타입(hard disk type), 멀티미디어 카드 마이크로 타입(multimedia card micro type), 카드 타입의 메모리(예를 들어 SD 또는 XD 메모리), 램(Random Access Memory, RAM), SRAM(Static Random Access Memory), 롬(ReadOnly Memory, ROM), EEPROM(Electrically Erasable Programmable ReadOnly Memory), PROM(Programmable ReadOnly Memory), 자기 메모리, 자기 디스크, 광디스크 중 적어도 하나의 타입의 저장매체를 포함할 수 있으며, 이에 한정되지 않으며 데이터를 저장할 수 있는 모든 매체를 포함할 수 있다. 또한, 데이터베이스(200)는 악성코드 분류 장치(100)의 내부에 포함될 수도 있고, 악성코드 분류 장치(100)의 외부에 별도로 위치할 수도 있다.
한편, 악성코드 분류 장치(100)는 도 2의 구성에 한정되는 것은 아니며, 데이터베이스가 내장되거나 접근 가능한 사용자 단말일 수도 있고 이와 연결된 서버일 수도 있을 것이다.
이와 같은 악성코드 분류 장치(100)를 이용하여 악성코드를 분류하는 방법을 도 2를 참조하여 설명하면 다음과 같다.
도 2는 본 발명의 일 실시예에 따라, 악성코드 분류 장치가, 미확인 코드와 과거 악성코드의 유사도를 판단하고 분류하는 방법을 개략적으로 나타내는 흐름도이다.
도 2를 참조하면, 본 발명의 일 실시예에 따라, 악성코드 분류 장치(100)가, 미확인 코드와 과거 악성코드의 유사도를 판단하고 분류하는 방법은, 우선 악성코드 분류 장치(100)의 프로세서(120)가 미확인 코드를 획득(S301)하는 것으로 시작한다.
그리고 나서, 프로세서(120)가 미확인 코드를 실행(S302)할 수 있다. 이 때, 미확인 코드가 실행되는 환경은 DynamoRIO, VMware, Docker 등을 기반으로 한 가상환경일 수 있으나, 이에 한정되는 것은 아닐 것이다.
다음으로, 프로세서(120)가, 사전에 정의된 키워드 정보를 획득(S303)할 수 있다. 이 때, 사전에 정의된 키워드 정보는, 아래 [표 1]과 같이 나타낼 수 있다.
숫자 키워드 함수
0 NULL etc.
1 FindFirst FindFirstFile, FindFirstFileEx, FindFirstFileName
FindFirstFileNameW, FindFirstFileTransacted
FindFirstStream, FindFirstStreamW...
2 FindNext FindNextFile, FindNextFileW, FindNextFileNameW,
FindNextStreamW...
3 CreateFile CreateFile, CreateFileW, CreateFileTransacted...
4 OpenFile OpenFile, OpenFileByld, ReOpenFile...
5 WriteFile WriteFile
6 CloseHandle CloseHandle
7 Process OpenProcess, CreateProcessAsUser, GetCurrentProcessId
ProcessPrng, TerminateProcess...
8 Crypt CryptDestroy, BCryptDestroyKey, CryptGenRandom,
CryptAcquireContextW, CryptAcquireContextA, CryptCreateHash...
9 SetFile SetFilePointer, SetFilePointerEx, SetFileApisToANSI
SetFileApisToOEM, SetFileAttributes, SetFileAttributesW...
위 [표 1]과 같이, 사전에 정의된 키워드 정보에는, 특정 키워드와 함께 그에 대응되는 함수 정보도 포함될 수 있고, 특정 키워드 각각에 대응되는 숫자 정보도 추가로 포함될 수 있다. 물론, 위 [표 1]은 본 발명의 일 실시예일 뿐 이에 한정되는 것은 아니다. 위 [표 1]에서는, 숫자 1 내지 9에 대응되는 특정 키워드 및 그에 대응되는 함수 이외에는 모두 키워드 'NULL' 및 그에 대응되는 숫자 '0'으로 동일하게 처리하는 것으로 정의하고 있다. 이 때, 숫자 0에 대응되는 함수란에 기재된'etc.'는, 숫자 1 내지 9에 대응되는 특정 키워드 및 그에 대응되는 함수를 제외한 다른 함수를 의미한다. 그러나, 이와는 달리, 숫자 1 내지 9에 대응되는 특정 키워드 및 그에 대응되는 함수 이외에는 별도의 정의를 하지 않음으로써, 숫자 1 내지 9에 대응되는 특정 키워드 및 그에 대응되는 함수만을 본 발명의 실시 과정에서 고려할 수도 있을 것이다. 물론, 특정 키워드에 대응되는 숫자는, 문자, 특수기호 등의 다른 형태로 정의될 수도 있음은 당연한 것이다.
또한, 본 발명의 다른 예로서, 사전에 정의된 키워드 정보의 획득(S303)은, 미확인 코드를 획득(S301)하기 전이나 미확인 코드를 실행(S302)하기 전에 수행될 수도 있다.
그리고 나서, 프로세서(120)가, 미확인 코드의 실행 과정에서 호출되는 호출 함수 정보를 수집(S304)할 수 있다. 이 때, 수집되는 정보는 미확인 코드의 실행 과정에서 호출되는 호출 함수 정보뿐만 아니라, 호출되는 함수의 호출 순서 정보도 포함될 수 있다.
다음으로, 프로세서(120)는 미확인 코드의 호출 함수 정보와, 사전에 정의된 키워드 정보를 참조로 하여, 미확인 코드의 호출 함수가 특정 키워드에 대응되는 함수인지를 판단(S305)할 수 있다.
이 때, 본 발명의 다른 예로서, 프로세서(120)는 미확인 코드의 실행 과정에서 호출되는 호출 함수 정보를 수집하면서, 해당 호출 함수가 특정 키워드에 대응되는 함수인지의 판단을 병행하여 수행할 수도 있다.
그리고 나서, 프로세서(120)가, 미확인 코드의 실행 과정에서 호출되는 호출 함수를 특정 키워드에 대응되는 것으로 판단하면, 사전에 정의된 키워드 정보의 테이블을 참조로 하여 해당 특정 키워드에 대응되는 숫자를 획득(S306)할 수 있다. 예를 들어, 미확인 코드의 호출 함수가 'CreateFile'이고, 사전에 정의된 키워드 정보가 위 [표 1]과 같다면, 미확인 코드의 호출 함수에 대응되는 숫자로서 '3'이 획득될 수 있을 것이다.
반면에, 프로세서(120)가, 미확인 코드의 실행 과정에서 호출되는 호출 함수가 특정 키워드에 대응되지 않는 것으로 판단하면, 미확인 코드의 호출 함수 정보 중 후순위로 호출되는 함수가 특정 키워드에 대응되는 함수인지 판단하는 과정을 반복하여 수행할 수 있다. 이 과정은, 미확인 코드의 호출 함수 정보 전체에 대하여 판단이 이루어질 때까지 반복될 수 있으나, 이와 같이 한정되는 것은 아니며, 본 발명의 실시 조건에 따라 미확인 코드의 호출 함수 중 일부에 대해서만 수행될 수도 있다.
다음으로, 프로세서(120)가, 미확인 코드의 호출 순서 정보를 참조하여, 상기 과정의 결과로서 획득된 숫자들로 제1 시퀀스를 생성(S307)할 수 있다. 예를 들어, 미확인 코드의 호출 함수가 'CreateFile, OpenFile, WriteFile'의 순서이고, 사전에 정의된 키워드 정보가 위 [표 1]과 같다면, 미확인 코드의 호출 함수에 대응되는 '3, 4, 5'의 숫자가 획득될 수 있을 것이고, 결과적으로 제1 시퀀스는 '345'가 될 것이다.
이 때, 본 발명의 다른 예로서, 생성된 제1 시퀀스의 구성요소에, 상기 특정 키워드 중 악의적인 영향을 주지 않는 함수에 대응되는 구성요소가 둘 이상 연속하여 포함되는 경우, 프로세서(120)가, 해당되는 구성요소를 병합하여 제1 시퀀스를 생성하는 과정을 수행할 수 있다. 예를 들어, 악의적인 영향을 주지 않는 함수에 대응되는 구성요소가 0인 경우, 제1 시퀀스가 '1001'로 생성된다면, 두 번 연속되는 0을 병합하여, 제1 시퀀스를 '101'로 업데이트 할 수 있음을 의미한다. 다만, 이러한 병합 과정이 필수적인 것은 아니며, 본 발명의 실시 조건에 따라 선택적으로 수행될 수 있다.
그리고 나서, 프로세서(120)가, 특정 과거 악성코드에 대응되는 제2 시퀀스를 획득(S308)할 수 있다. 이 때, 제2 시퀀스는, 복수의 과거 악성코드에 대응되는 복수의 참조 시퀀스 중에서 하나 이상 선택될 수 있으며, 상기 특정 과거 악성코드는, 선택된 참조 시퀀스들에 대응되는 과거 악성코드를 의미한다. 또한, 상기 복수의 참조 시퀀스는 별도의 데이터베이스(200)에 저장되어 있을 수 있으며, 사전에 과거 악성코드의 클러스터별로 분류되어 저장되어 있을 수도 있다.
이와 달리, 본 발명의 다른 예로서, 프로세서(120)가 과거 악성코드에 대응되는 제2 시퀀스를 획득하는 단계(S308)는, 제1 시퀀스가 획득되는 단계(S307) 이전에도 수행될 수 있다.
제1 시퀀스와 제2 시퀀스가 모두 획득되면, 프로세서(120)가, 제1 시퀀스와 제2 시퀀스의 유사도를 판단(S309)할 수 있다. 이 때, 유사도는 다음의 수학식을 참조로 한 연산에 의해 결정될 수 있다.
Figure 112019030623389-pat00001
위 [수학식 1]에서, A는 미확인 코드에 대응되는 제1 시퀀스를 의미하고, B, ..., n은 복수의 과거 악성코드에 대응되는 복수의 참조 시퀀스 중에서 적어도 하나 이상 선택된 제2 시퀀스 각각을 의미하며, 'Group'은 A, B, ..., n이 포함된 집합을 의미한다. 이 때, 제2 시퀀스는 복수의 과거 악성코드 클러스터 중에서 특정 과거 악성코드 클러스터에서만 선택될 수도 있다. 또한, 'Total Length'는 시퀀스 각각의 길이값을 의미하고, 분자의 'LCS'는 최장공통부분수열(Longest Common Subsequence)이며, 대상이 되는 복수개의 수열이 공통적으로 포함하는 부분수열 중 가장 긴 수열을 의미한다.
그러므로, [수학식 1]에서, 제1 시퀀스의 길이값 및 제2 시퀀스의 길이값들의 평균인 제1 평균값을 구하여, 상기 제1 시퀀스 및 상기 제2 시퀀스 중에서 상기 제1 평균값을 초과하는 길이의 시퀀스를 제외한 나머지 시퀀스의 길이값들의 평균인 제2 평균값을 구하면, 해당 제2 평균값이 [수학식 1]의 분모값이 될 것이다. 그리고, [수학식 1]에서, 제1 시퀀스와, 제2 시퀀스 중 적어도 하나 이상의 시퀀스의 조합을 입력값으로 하여 도출된 LCS들의 길이값 중 최대값이, [수학식 1]의 분자값이 될 것이다.
예를 들어, 제1 시퀀스가 '8087'이고, 제2 시퀀스가 '807' 과 '87'인 경우, 제1 시퀀스인'8087'의 길이값인 4와, 제2 시퀀스인'807'과 '87'의 길이값인 3과 2 전체의 평균값인 3이 제1 평균값이 된다. 그 다음, 3보다 긴 길이값을 가지는 '8087'을 제외한 나머지 '807'과 '87' 시퀀스들의 길이값의 평균을 구하면, 그 결과값인 2.5가 제2 평균값이 되고, [수학식 1]의 분모값이 될 것이다. 그리고, 제1 시퀀스인 '8087'과 제2 시퀀스인 '807'및 '87'의 조합인 ('8087','807') 과 ('8087','87')의 LCS를 구하면, '807'과 '87'의 LCS가 얻어지고, 각각의 LCS 길이값인 3과 2 중 최대값인 3이 상기 [수학식 1]의 분자값이 될 것이다. 따라서, 제1 시퀀스와 제2 시퀀스의 유사도는, 3을 2.5로 나눈 값인 1.2가 될 것이다.
다음으로, 상기 유사도의 결과값이 산출되면, 프로세서(120)가, 유사도의 결과값이 제1 임계치 이상인 경우에는, 제1 시퀀스에 대응되는 미확인 코드를, 상기 유사도를 판단할 때 참조된 제2 시퀀스에 대응되는 특정 과거 악성코드와 동일한 특정 악성코드 클러스터로 판단하고 분류(S311)할 수 있다. 즉, 제1 시퀀스에 대응되는 미확인 코드를, 제2 시퀀스에 대응되는 특정 과거 악성코드와 동일한 유사군으로 판단하고 분류할 수 있음을 의미한다.
이에 반하여, 유사도의 결과값이 제1 임계치 미만인 경우에는, 프로세서(120)가, 제1 시퀀스에 대응되는 미확인 코드를 별도 검사 대상으로 분류할 수 있다. 하지만, 다른 예로서, 프로세서(120)가, 상기 유사도의 결과값을 제1 임계치보다 작은 값인 제2 임계치와 다시 비교(S312)할 수도 있다. 이 경우, 상기 유사도의 결과값이 (i) 제2 임계치 이상인 경우에는, 프로세서(120)가, 미확인 코드를 별도 검사 대상으로 판단하고 분류(S313)할 수 있고, (ii) 제2 임계치 미만인 경우에는, 프로세서(120)가, 미확인 코드를 정상 코드로 판단하고 분류(S314)할 수 있다. 이 때, 제2 임계치를 별도로 설정하여 정상 코드로 판단하고 분류하는 과정은 필수적인 것은 아니며, 본 발명의 실시 조건에 따라 생략될 수도 있을 것이다.
또한, 제1 임계치와 제2 임계치의 값은 본 발명의 실시 조건에 따라 다양하게 정의될 수 있으며, 특정한 값으로 한정되는 것은 아니다.
그리고, 제1 시퀀스에 대응되는 미확인 코드가 별도 검사 대상으로 분류되는 경우, 악성코드 분류 장치(100)의 구성 형태에 따라, 악성코드 분류 장치(100)가 직접 미확인 코드의 정보를 제공함으로써 사용자로 하여금 미확인 코드에 대한 수동분석이 가능하도록 지원할 수 있고, 이와 달리, 악성코드 분류 장치(100)에 연결된 별도의 사용자 단말이 미확인 코드의 정보를 제공하도록 하여 사용자로 하여금 미확인 코드에 대한 수동분석이 가능하도록 지원할 수도 있다. 또한, 상기 미확인 코드의 수동분석 과정은 악성코드 분류 장치(100)에서 이루어질 수도 있고, 이와 달리 사용자 단말 등의 별도 장치에서 이루어질 수도 있다.
도 3a 및 도 3b는, 본 발명의 일 실시예에 따라, 악성코드 분류 장치(100)가 안티바이러스 프로그램과 연동되는 구성을 개략적으로 도시한 도면이다.
도 3a를 참조하면, 본 발명의 일 실시예에서, 악성코드 분류 장치(100)가, 기존에 발생하고 수집된 악성코드 A에 대응되는 참조 시퀀스를 안티바이러스 프로그램의 시그니처로서 획득할 수 있다. 이 때, 안티바이러스 프로그램의 시그니처 정보는 악성코드 분류 장치(100)와 연결된 별도의 데이터베이스(미도시)와 연동될 수도 있다. 이러한 상황에서, 악성코드 A와 비슷한 유형의 악성코드 A-1, A-2, ..., A-n이 발생하게 되면, 악성코드 분류 장치(100)의 프로세서(120)는, 악성코드 A-1, A-2, ..., A-n 각각에 대한 시퀀스를 획득하고, 악성코드 A의 시그니처인 참조 시퀀스와 유사도 판단을 수행할 수 있다. 이 때, 상기 유사도 판단의 결과가 제1 임계치 이상으로 도출되면, 프로세서(120)는, 악성코드 A-1, A-2, ..., A-n을 악성코드 A와 동일한 악성코드 클러스터로 분류할 수 있다.
이와 비교하여, 악성코드 A와 상이한 유형의 미확인 코드 B가 새롭게 발생한 경우, 도 3b를 참조하면, 상기 도 3a를 참조하여 설명한 바와 같이 악성코드 A에 대응되는 참조 시퀀스가 안티바이러스 프로그램의 시그니처로서 획득된 상태에서, 악성코드 분류 장치(100)의 프로세서(120)는, 미확인 코드 B의 시퀀스를 획득하고, 악성코드 A의 시그니처인 참조 시퀀스와 미확인 코드 B의 시퀀스에 대하여 유사도 판단을 수행할 수 있다. 이 때, 상기 유사도 판단 결과가 제1 임계치 미만으로 도출되면, 프로세서(120)는, 미확인 코드 B를 별도 검사 대상으로 분류할 수 있다. 또한, 이러한 경우에, 상기 유사도 판단 결과를 제2 임계치와 다시 비교함으로서, 미확인 코드 B의 악성 여부 판단도 수행할 수 있다. 상기 유사도 판단 결과가 제1 임계치 미만임과 동시에 제2 임계치 이상인 경우에는 미확인 코드 B가 별도 검사 대상으로 분류되지만, 제1 임계치 미만임과 동시에 제2 임계치 미만인 경우에는 미확인 코드 B가 정상 코드로 분류될 수 있다. 또한, 수동 분석과 같은 별도 검사 결과, 미확인 코드 B가 새로운 유형의 악성코드로 판단될 경우, 악성코드 프로그램은 미확인 코드 B에 대응되는 시퀀스를 악성코드 B의 시그니처로서 업데이트 할 수 있다.
이상 설명된 본 발명에 따른 실시예들은 다양한 컴퓨터 구성요소를 통하여 수행될 수 있는 프로그램 명령어의 형태로 구현되어 컴퓨터 판독 가능한 기록 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능한 기록 매체는 프로그램 명령어, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 컴퓨터 판독 가능한 기록 매체에 기록되는 프로그램 명령어는 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 분야의 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능한 기록 매체의 예에는, 하드디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체, CD-ROM, DVD와 같은 광기록 매체, 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magnetooptical media), 및 ROM, RAM, 플래시 메모리 등과 같은 프로그램 명령어를 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령어의 예에는, 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드도 포함된다. 상기 하드웨어 장치는 본 발명에 따른 처리를 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상에서 본 발명이 구체적인 구성요소 등과 같은 특정 사항들과 한정된 실시예 및 도면에 의해 설명되었으나, 이는 본 발명의 보다 전반적인 이해를 돕기 위해서 제공된 것일 뿐, 본 발명이 상기 실시예들에 한정되는 것은 아니며, 본 발명이 속하는 기술분야에서 통상적인 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형을 꾀할 수 있다.
따라서, 본 발명의 사상은 상기 설명된 실시예에 국한되어 정해져서는 아니 되며, 후술하는 특허청구범위뿐만 아니라 이 특허청구범위와 균등하게 또는 등가적으로 변형된 모든 것들은 본 발명의 사상의 범주에 속한다고 할 것이다.
100 : 악성코드 분류 장치 110 : 메모리
120 : 프로세서 200 : 데이터베이스
1000 : 안티바이러스 프로그램과 연동된 악성코드 분류 시스템

Claims (16)

  1. 악성코드를 분류하는 방법으로서,
    (a) 미확인 코드가 실행되면, 장치가, 상기 미확인 코드의 실행 과정에서 호출되는 적어도 하나의 특정 호출 함수 정보 - 상기 특정 호출 함수 정보는, 전체 호출 함수 정보에 대응되는 전체 행위 기반 키워드 중 특정 행위 기반 키워드에 대응되는 함수 정보임 - 및 상기 특정 호출 함수 정보에 대응되는 호출 순서 정보를 참조로 하여, 제1 시퀀스를 획득하는 단계;
    (b) 상기 장치가, 복수의 과거 악성코드에 대응되는 복수의 참조 시퀀스 - 상기 복수의 참조 시퀀스는 소정의 데이터베이스에 저장되어 있음 - 중 적어도 하나의 제2 시퀀스와 상기 제1 시퀀스를 참조로 하여, 상기 제1 시퀀스와 상기 제2 시퀀스의 유사도를 판단하는 단계; 및
    (c) 상기 유사도가 제1 임계치 이상인 것으로 판단되는 경우, 상기 장치가, 상기 유사도를 판단할 때 참조된 상기 제2 시퀀스에 대응되는 특정 과거 악성코드와 상기 제1 시퀀스에 대응되는 상기 미확인 코드를 동일한 특정 악성코드 클러스터 - 상기 특정 악성코드 클러스터는 상기 특정 과거 악성코드에 대응되는 악성코드 클러스터임 - 에 포함되는 것으로 판단하고, 상기 유사도가 상기 제1 임계치 미만인 것으로 판단되는 경우, 상기 장치가, 상기 미확인 코드를 별도 검사 대상으로 분류하는 단계;
    를 포함하되,
    상기 행위 기반 키워드는, 상기 전체 호출 함수 각각을 행위 별로 분류할 수 있도록 사전에 정해진 키워드로서 'FindFirst', 'FindNext', 'CreateFile', 'OpenFile', 'WriteFile', 'CloseHandle', 'Process', 'Crypt' 및 'SetFile' 키워드를 포함하는 것을 특징으로 하며,
    상기 (a) 단계 이전에,
    (a0) 상기 장치가, 상기 데이터베이스에 저장된 상기 복수의 참조 시퀀스를, 복수의 악성코드 클러스터 중 어느 악성코드 클러스터에 속하는지 분류하는 단계; 를 더 포함하고,
    상기 (b) 단계는,
    상기 장치가, 상기 복수의 악성코드 클러스터 중 상기 특정 악성코드 클러스터에서 상기 제2 시퀀스를 선택하는 것을 특징으로 하며,
    상기 (b) 단계에서,
    상기 유사도의 판단은,
    상기 장치가, (i) 상기 제1 시퀀스의 길이값 및 상기 제2 시퀀스의 길이값들의 평균인 제1 평균값을 계산하여, 상기 제1 시퀀스 및 상기 제2 시퀀스 중에서 상기 제1 평균값을 초과하는 길이의 시퀀스를 제외한 나머지 시퀀스의 길이값들의 평균인 제2 평균값을 구하는 프로세스, (ii) 상기 제2 시퀀스 중 적어도 일부와 상기 제1 시퀀스의 조합을 참조로 하여 적어도 하나의 최장공통부분시퀀스(Longest Common Subsequence, LCS)를 구하는 프로세스, 및 (iii) 상기 LCS의 길이값들 중 가장 큰 값을 상기 제2 평균값으로 나누어 획득된 결과값을 참조로 하여 유사도를 판단하는 프로세스를 수행함에 의하여 이루어지는 것을 특징으로 하고,
    상기 (a) 단계에서,
    상기 제1 시퀀스에, 상기 특정 행위 기반 키워드 중 악의적인 영향을 주지 않는 함수의 행위 기반 키워드에 대응되는 구성요소가 둘 이상 연속하여 포함된 경우, 상기 장치가, 상기 구성요소를 병합하여 상기 제1 시퀀스를 업데이트하는 것을 특징으로 하는 악성코드 분류 방법.
  2. 삭제
  3. 삭제
  4. 삭제
  5. 제1항에 있어서,
    상기 (c) 단계에서,
    상기 미확인 코드가 상기 별도 검사 대상으로 분류되는 경우,
    (d1) 상기 장치가, 상기 미확인 코드에 관련된 정보를 제공함으로써 상기 미확인 코드에 대한 수동분석이 가능하도록 지원하는 프로세스, 및 (d2) 상기 장치가, 상기 장치에 연결된 별도의 사용자 단말이 상기 미확인 코드에 관련된 정보를 제공하도록 함으로써 상기 미확인 코드에 대한 수동분석이 가능하도록 지원하는 프로세스 중 적어도 하나의 프로세스를 수행하는 단계를 더 포함하는 악성코드 분류 방법.
  6. 제1 항에 있어서,
    상기 (c) 단계에서,
    상기 유사도가 상기 제1 임계치 미만인 경우에,
    (c1) 상기 유사도가 제2 임계치 미만 - 상기 제2 임계치는 상기 제1 임계치보다 작음 - 인 경우, 상기 장치가, 상기 미확인 코드를 정상 코드로 판단하고, (c2) 상기 유사도가 상기 제2 임계치 이상인 경우, 상기 장치가, 상기 미확인 코드를 별도의 검사 대상으로 분류하는 것을 특징으로 하는 악성코드 분류 방법.
  7. 제1 항에 있어서,
    상기 데이터베이스에는 상기 복수의 참조 시퀀스에 대응되는 상기 복수의 과거 악성코드가 함께 저장되어 있는 것을 특징으로 하는 악성코드 분류 방법.
  8. 제1항에 있어서,
    상기 미확인 코드는 가상환경에서 실행되는 것을 특징으로 하는 악성코드 분류 방법.
  9. 악성코드를 분류하는 장치로서,
    인스트럭션들을 저장하는 적어도 하나의 메모리; 및
    상기 인스트럭션들을 실행하기 위해 구성된 적어도 하나의 프로세서; 를 포함하고,
    상기 프로세서가,
    (I) 미확인 코드가 실행되면, 상기 미확인 코드의 실행 과정에서 호출되는 적어도 하나의 특정 호출 함수 정보 - 상기 특정 호출 함수 정보는, 전체 호출 함수 정보에 대응되는 전체 행위 기반 키워드 중 특정 행위 기반 키워드에 대응되는 함수 정보임 - 및 상기 특정 호출 함수 정보에 대응되는 호출 순서 정보를 참조로 하여, 제1 시퀀스를 획득하는 프로세스; (II) 복수의 과거 악성코드에 대응되는 복수의 참조 시퀀스 - 상기 복수의 참조 시퀀스는 소정의 데이터베이스에 저장되어 있음 - 중 적어도 하나의 제2 시퀀스와 상기 제1 시퀀스를 참조로 하여, 상기 제1 시퀀스와 상기 제2 시퀀스의 유사도를 판단하는 프로세스; 및 (III) 상기 유사도가 제1 임계치 이상인 것으로 판단되는 경우, 상기 유사도를 판단할 때 참조된 상기 제2 시퀀스에 대응되는 특정 과거 악성코드와 상기 제1 시퀀스에 대응되는 상기 미확인 코드를 동일한 특정 악성코드 클러스터 - 상기 특정 악성코드 클러스터는 상기 특정 과거 악성코드에 대응되는 악성코드 클러스터임 - 에 포함되는 것으로 판단하고, 상기 유사도가 상기 제1 임계치 미만인 것으로 판단되는 경우, 상기 장치가, 상기 미확인 코드를 별도 검사 대상으로 분류하는 프로세스;
    를 수행하되,
    상기 행위 기반 키워드는, 상기 전체 호출 함수 각각을 행위 별로 분류할 수 있도록 사전에 정해진 키워드로서 'FindFirst', 'FindNext', 'CreateFile', 'OpenFile', 'WriteFile', 'CloseHandle', 'Process', 'Crypt' 및 'SetFile' 키워드를 포함하는 것을 특징으로 하며,
    상기 (I) 프로세스 이전에,
    (I-0) 상기 프로세서가, 상기 데이터베이스에 저장된 상기 복수의 참조 시퀀스를, 복수의 악성코드 클러스터 중 어느 악성코드 클러스터에 속하는지 분류하는 프로세스; 를 더 수행하고,
    상기 (II) 프로세스는,
    상기 프로세서가, 상기 복수의 악성코드 클러스터 중 상기 특정 악성코드 클러스터에서 상기 제2 시퀀스를 선택하는 것을 특징으로 하며,
    상기 (II) 프로세스에서,
    상기 유사도의 판단은,
    상기 프로세서가, (i) 상기 제1 시퀀스의 길이값 및 상기 제2 시퀀스의 길이값들의 평균인 제1 평균값을 계산하여, 상기 제1 시퀀스 및 상기 제2 시퀀스 중에서 상기 제1 평균값을 초과하는 길이의 시퀀스를 제외한 나머지 시퀀스의 길이값들의 평균인 제2 평균값을 구하는 프로세스, (ii) 상기 제2 시퀀스 중 적어도 일부와 상기 제1 시퀀스의 조합을 참조로 하여 적어도 하나의 최장공통부분시퀀스(Longest Common Subsequence, LCS)를 구하는 프로세스, 및 (iii) 상기 LCS의 길이값들 중 가장 큰 값을 상기 제2 평균값으로 나누어 획득된 결과값을 참조로 하여 유사도를 판단하는 프로세스를 수행함에 의하여 이루어지는 것을 특징으로 하고,
    상기 (I) 프로세스에서,
    상기 제1 시퀀스에, 상기 특정 행위 기반 키워드 중 악의적인 영향을 주지 않는 함수의 행위 기반 키워드에 대응되는 구성요소가 둘 이상 연속하여 포함된 경우, 상기 프로세서가, 상기 구성요소를 병합하여 상기 제1 시퀀스를 업데이트하는 것을 특징으로 하는 악성코드 분류 장치.
  10. 삭제
  11. 삭제
  12. 삭제
  13. 제9항에 있어서,
    상기 (III) 프로세스에서,
    상기 미확인 코드가 상기 별도 검사 대상으로 분류되는 경우,
    (IV-1) 상기 프로세서가, 상기 미확인 코드에 관련된 정보를 제공함으로써 상기 미확인 코드에 대한 수동분석이 가능하도록 지원하는 프로세스, 및 (IV-2) 상기 프로세서가, 상기 장치에 연결된 별도의 사용자 단말이 상기 미확인 코드에 관련된 정보를 제공하도록 함으로써 상기 미확인 코드에 대한 수동분석이 가능하도록 지원하는 프로세스 중 적어도 하나의 프로세스를 더 수행하는 악성코드 분류 장치.
  14. 제9 항에 있어서,
    상기 (III) 프로세스에서,
    상기 유사도가 상기 제1 임계치 미만인 경우에,
    (III-1) 상기 유사도가 제2 임계치 미만 - 상기 제2 임계치는 상기 제1 임계치보다 작음 - 인 경우, 상기 프로세서가, 상기 미확인 코드를 정상 코드로 판단하고, (III-2) 상기 유사도가 상기 제2 임계치 이상인 경우, 상기 프로세서가, 상기 미확인 코드를 별도의 검사 대상으로 분류하는 것을 특징으로 하는 악성코드 분류 장치.
  15. 제9 항에 있어서,
    상기 데이터베이스에는 상기 복수의 참조 시퀀스에 대응되는 상기 복수의 과거 악성코드가 함께 저장되어 있는 것을 특징으로 하는 악성코드 분류 장치.
  16. 제9항에 있어서,
    상기 미확인 코드는 가상환경에서 실행되는 것을 특징으로 하는 악성코드 분류 장치.
KR1020190033966A 2019-03-25 2019-03-25 함수 실행 순서를 이용한 악성코드 분류 방법 및 이를 사용한 장치 Active KR102068605B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020190033966A KR102068605B1 (ko) 2019-03-25 2019-03-25 함수 실행 순서를 이용한 악성코드 분류 방법 및 이를 사용한 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190033966A KR102068605B1 (ko) 2019-03-25 2019-03-25 함수 실행 순서를 이용한 악성코드 분류 방법 및 이를 사용한 장치

Publications (1)

Publication Number Publication Date
KR102068605B1 true KR102068605B1 (ko) 2020-01-21

Family

ID=69369688

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190033966A Active KR102068605B1 (ko) 2019-03-25 2019-03-25 함수 실행 순서를 이용한 악성코드 분류 방법 및 이를 사용한 장치

Country Status (1)

Country Link
KR (1) KR102068605B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112435688A (zh) * 2020-11-20 2021-03-02 腾讯音乐娱乐科技(深圳)有限公司 音频识别方法、服务器及存储介质
KR20220013085A (ko) * 2020-07-24 2022-02-04 주식회사 한글과컴퓨터 검색 키워드에 대응되는 쿼리 실행을 통해 문서에 삽입된 개체에 대한 검색을 수행하는 전자 장치 및 그 동작 방법

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120124667A1 (en) * 2010-11-12 2012-05-17 National Chiao Tung University Machine-implemented method and system for determining whether a to-be-analyzed software is a known malware or a variant of the known malware
KR101589656B1 (ko) * 2015-01-19 2016-01-28 한국인터넷진흥원 Api 기반 악성 코드 변종 탐지 조회 시스템 및 방법
KR20170108330A (ko) * 2016-03-17 2017-09-27 한국전자통신연구원 악성 코드 탐지 장치 및 방법
KR20180097824A (ko) * 2017-02-24 2018-09-03 성균관대학교산학협력단 악성코드 검출을 위한 자동 규칙 생성방법, 장치, 시스템 및 이를 기록한 컴퓨터로 판독가능한 기록매체

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120124667A1 (en) * 2010-11-12 2012-05-17 National Chiao Tung University Machine-implemented method and system for determining whether a to-be-analyzed software is a known malware or a variant of the known malware
KR101589656B1 (ko) * 2015-01-19 2016-01-28 한국인터넷진흥원 Api 기반 악성 코드 변종 탐지 조회 시스템 및 방법
KR20170108330A (ko) * 2016-03-17 2017-09-27 한국전자통신연구원 악성 코드 탐지 장치 및 방법
KR20180097824A (ko) * 2017-02-24 2018-09-03 성균관대학교산학협력단 악성코드 검출을 위한 자동 규칙 생성방법, 장치, 시스템 및 이를 기록한 컴퓨터로 판독가능한 기록매체

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220013085A (ko) * 2020-07-24 2022-02-04 주식회사 한글과컴퓨터 검색 키워드에 대응되는 쿼리 실행을 통해 문서에 삽입된 개체에 대한 검색을 수행하는 전자 장치 및 그 동작 방법
KR102375557B1 (ko) * 2020-07-24 2022-03-17 주식회사 한글과컴퓨터 검색 키워드에 대응되는 쿼리 실행을 통해 문서에 삽입된 개체에 대한 검색을 수행하는 전자 장치 및 그 동작 방법
CN112435688A (zh) * 2020-11-20 2021-03-02 腾讯音乐娱乐科技(深圳)有限公司 音频识别方法、服务器及存储介质

Similar Documents

Publication Publication Date Title
Ye et al. CIMDS: adapting postprocessing techniques of associative classification for malware detection
US10162967B1 (en) Methods and systems for identifying legitimate computer files
Tian et al. An automated classification system based on the strings of trojan and virus families
US9454658B2 (en) Malware detection using feature analysis
US7809670B2 (en) Classification of malware using clustering that orders events in accordance with the time of occurance
KR101620931B1 (ko) 악성코드 특징 정보 기반의 유사 악성코드 검색 장치 및 방법
US20150172303A1 (en) Malware Detection and Identification
Mosli et al. A behavior-based approach for malware detection
EP2975873A1 (en) A computer implemented method for classifying mobile applications and computer programs thereof
US20080263669A1 (en) Systems, apparatus, and methods for detecting malware
KR20160082644A (ko) 코드 블록 구분을 통한 악성 코드 탐지 방법 및 장치
CN103679030B (zh) 一种基于动态语义特征的恶意代码分析检测方法
KR101851233B1 (ko) 파일 내 포함된 악성 위협 탐지 장치 및 방법, 그 기록매체
Palahan et al. Extraction of statistically significant malware behaviors
KR102068605B1 (ko) 함수 실행 순서를 이용한 악성코드 분류 방법 및 이를 사용한 장치
US11270000B1 (en) Generation of file digests for detecting malicious executable files
US20180089365A1 (en) Method for identification of nucleic acid signatures
KR101907681B1 (ko) 악성코드 검출을 위한 자동 규칙 생성방법, 장치, 시스템 및 이를 기록한 컴퓨터로 판독가능한 기록매체
US8151117B2 (en) Detection of items stored in a computer system
EP4202741B1 (en) System and method of synthesizing potential malware for predicting a cyberattack
KR20160100887A (ko) 코드 블록 비교를 통한 악성 코드 탐지 방법
KR102318991B1 (ko) 유사도 기반의 악성코드 진단 방법 및 장치
CN108268775B (zh) 一种Web漏洞检测方法、装置、电子设备及存储介质
RU2747464C2 (ru) Способ обнаружения вредоносных файлов на основании фрагментов файлов
Park et al. Antibot: Clustering common semantic patterns for bot detection

Legal Events

Date Code Title Description
PA0109 Patent application

Patent event code: PA01091R01D

Comment text: Patent Application

Patent event date: 20190325

PA0201 Request for examination
PA0302 Request for accelerated examination

Patent event date: 20190327

Patent event code: PA03022R01D

Comment text: Request for Accelerated Examination

Patent event date: 20190325

Patent event code: PA03021R01I

Comment text: Patent Application

PE0902 Notice of grounds for rejection

Comment text: Notification of reason for refusal

Patent event date: 20190417

Patent event code: PE09021S01D

AMND Amendment
PE0601 Decision on rejection of patent

Patent event date: 20190910

Comment text: Decision to Refuse Application

Patent event code: PE06012S01D

Patent event date: 20190417

Comment text: Notification of reason for refusal

Patent event code: PE06011S01I

X091 Application refused [patent]
AMND Amendment
PX0901 Re-examination

Patent event code: PX09011S01I

Patent event date: 20190910

Comment text: Decision to Refuse Application

Patent event code: PX09012R01I

Patent event date: 20190717

Comment text: Amendment to Specification, etc.

PX0701 Decision of registration after re-examination

Patent event date: 20191212

Comment text: Decision to Grant Registration

Patent event code: PX07013S01D

Patent event date: 20191115

Comment text: Amendment to Specification, etc.

Patent event code: PX07012R01I

Patent event date: 20190910

Comment text: Decision to Refuse Application

Patent event code: PX07011S01I

Patent event date: 20190717

Comment text: Amendment to Specification, etc.

Patent event code: PX07012R01I

X701 Decision to grant (after re-examination)
GRNT Written decision to grant
PR0701 Registration of establishment

Comment text: Registration of Establishment

Patent event date: 20200115

Patent event code: PR07011E01D

PR1002 Payment of registration fee

Payment date: 20200116

End annual number: 3

Start annual number: 1

PG1601 Publication of registration
PR1001 Payment of annual fee

Payment date: 20221125

Start annual number: 4

End annual number: 4

PR1001 Payment of annual fee

Payment date: 20231115

Start annual number: 5

End annual number: 5

PR1001 Payment of annual fee

Payment date: 20241023

Start annual number: 6

End annual number: 6