KR101749210B1 - 다중 서열 정렬 기법을 이용한 악성코드 패밀리 시그니쳐 생성 장치 및 방법 - Google Patents

다중 서열 정렬 기법을 이용한 악성코드 패밀리 시그니쳐 생성 장치 및 방법 Download PDF

Info

Publication number
KR101749210B1
KR101749210B1 KR1020150182040A KR20150182040A KR101749210B1 KR 101749210 B1 KR101749210 B1 KR 101749210B1 KR 1020150182040 A KR1020150182040 A KR 1020150182040A KR 20150182040 A KR20150182040 A KR 20150182040A KR 101749210 B1 KR101749210 B1 KR 101749210B1
Authority
KR
South Korea
Prior art keywords
api
code
sequence
malicious
signature
Prior art date
Application number
KR1020150182040A
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 KR1020150182040A priority Critical patent/KR101749210B1/ko
Application granted granted Critical
Publication of KR101749210B1 publication Critical patent/KR101749210B1/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/566Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication

Abstract

다중 서열 정렬 기법을 이용한 악성코드 패밀리 시그니쳐 생성 장치 및 방법이 개시된다. 악성코드 시그니쳐 생성 방법은 악성코드의 패밀리를 구성하는 복수의 악성코드 샘플들 각각을 동적 분석하여 상기 악성코드 샘플들 각각에 대해 API 호출 시퀀스를 결정하는 단계; 상기 결정된 API 호출 시퀀스를 API 코드 시퀀스로 변환하는 단계; 상기 변환된 API 코드 시퀀스에 다중 서열 정렬 기법을 적용하는 단계; 및 상기 다중 서열 정렬 기법을 적용한 결과를 이용하여 상기 악성코드의 패밀리에 대한 시그니쳐를 생성하는 단계를 포함할 수 있다.

Description

다중 서열 정렬 기법을 이용한 악성코드 패밀리 시그니쳐 생성 장치 및 방법{MALWARE FAMILY SIGNATURE GENERATION APPARATUS AND METHOD USING MULTIPLE SEQUENCE ALIGNMENT TECHNIQUE}
본 발명은 다중 서열 정렬 기법을 이용한 악성코드 패밀리에 대한 시그니쳐 생성 장치 및 방법에 관한 것으로, 보다 구체적으로는 악성코드 패밀리를 구성하는 복수의 악성코드 샘플들 각각을 동적 분석하여 획득한 API 코드 시퀀스에 다중 서열 정렬 기법을 적용한 결과를 이용하여 악성코드 패밀리에 대한 시그니쳐를 생성하는 장치 및 방법을 제공한다.
일반적으로 API 호출 정보를 기반으로 하는 프로그램의 비교 분석은 특별한 과정 없이 개별 API 정보를 1:1로 비교한다. 이는 기존의 exact string matching과 동일한 원리이다. 두 프로그램의 API 호출 정보를 비교하는 경우, 각 프로그램 API 호출 정보가 이루는 두 시퀀스의 개별 API 정보 마다 1:1 비교가 이루어지고, 최종적으로 유사도를 계산할 수 있다. 이러한 비교는 개별 API 정보의 위치에 매우 민감하다. 예를 들어 100개의 API 정보로 이루어진 두 API 호출 정보 중 하나의 API 정보만 다르더라도 두 API 호출 정보는 다른 것으로 간주한다.
이때, 사용되는 API 호출 정보의 경우 프로그램의 동작에 의존적이다. 기능적으로 매우 유사한 프로그램이더라도 API 호출 순서를 변경하거나, 혹은 유사한 API를 호출함으로써 API 호출 정보 측면에서의 유사도가 낮을 수 있다. 즉 API 호출 정보를 단순 비교하는 경우, 유사도가 상당히 떨어질 수 있다. Exact string matching 기법과 마찬가지로, 약간의 노이즈가 발생한 경우 올바른 유사도보다 훨씬 낮은 결과를 얻을 수 있기 때문이다. 따라서 종래의 API 호출 정보 비교 분석 기법은 API 호출 정보를 올바르게 비교 분석하고 유사도를 얻는데 적절하지 못하다.
본 발명은 다중 서열 정렬 기법을 이용한 악성코드 패밀리에 대한 시그니쳐 생성 장치 및 방법에 관한 것으로, 보다 구체적으로는 악성코드 패밀리를 구성하는 복수의 악성코드 샘플들 각각을 동적 분석하여 획득한 API 코드 시퀀스에 다중 서열 정렬 기법을 적용한 결과를 이용하여 악성코드 패밀리에 대한 시그니쳐를 생성함으로써 보다 효과적으로 악성코드를 탐지할 수 있는 장치 및 방법을 제공한다.
본 발명의 일실시예에 따른 악성코드 시그니쳐 생성 방법은 악성코드의 패밀리를 구성하는 복수의 악성코드 샘플들 각각을 동적 분석하여 상기 악성코드 샘플들 각각에 대해 API 호출 시퀀스를 결정하는 단계; 상기 결정된 API 호출 시퀀스를 API 코드 시퀀스로 변환하는 단계; 상기 변환된 API 코드 시퀀스에 다중 서열 정렬 기법을 적용하는 단계; 및 상기 다중 서열 정렬 기법을 적용한 결과를 이용하여 상기 악성코드의 패밀리에 대한 시그니쳐를 생성하는 단계를 포함할 수 있다.
상기 시그니쳐를 생성하는 단계는 상기 다중 서열 정렬 기법을 적용한 결과 생성된 복수의 악성코드의 샘플별 API 코드 시퀀스로 구성된 행렬에서 각각의 열 마다 최대 빈도수를 가지는 API 코드를 선정하는 단계; 상기 선정된 API 코드를 각각의 열에 대한 대표 API 코드로 정의하는 단계; 및 상기 정의된 각각의 열에 대한 대표 API 코드를 병합하여 대표 API 패턴을 추출하는 단계를 포함할 수 있다.
상기 적용하는 단계는 일정 길이 범위를 벗어나는 API 코드 시퀀스를 아웃라이어(outlier)로 정의하고, 정의된 API 코드 시퀀스를 배제하고 다중 서열 정렬 기법을 적용할 수 있다.
상기 대표 API 패턴은 상기 악성코드의 패밀리에 대한 시그니쳐로 결정될 수 있다.
상기 다중 서열 정렬 기법을 적용한 결과 생성된 복수의 악성코드의 샘플별 API 코드 시퀀스는 각각의 열에 포함된 API 코드의 공통 부분이 최대가 되도록 각각의 샘플별 API 코드 시퀀스 내부에 공백이 삽입될 수 있다.
상기 대표 API 패턴을 추출하는 단계는 상기 정의된 각각의 열에 포함된 공백의 비율을 고려하는 대표 API 코드를 병합할 수 있다.
본 발명의 일실시예에 따른 악성코드 시그니쳐 생성 방법은 상기 변환된 API 코드 시퀀스에서 동일한 API 코드가 반복되는 경우, 상기 반복되는 API 코드를 제거하는 단계를 더 포함하고, 상기 적용하는 단계는 상기 상기 반복되는 API 코드가 제거된 API 코드 시퀀스에 다중 서열 정렬 기법을 적용할 수 있다.
상기 API 코드 시퀀스를 구성하는 API 코드는 상기 API 코드 시퀀스에 대응하는 악성코드 샘플에 대한 카테고리 및 상기 카테고리 내부의 API 순서에 대응하는 인덱스 정보를 포함할 수 있다.
본 발명의 일실시예에 따른 악성코드 탐지 방법은 분석 대상 샘플을 동적 분석하여 상기 분석 대상 샘플의 API 호출 시퀀스를 결정하는 단계; 상기 결정된 API 호출 시퀀스를 API 코드 시퀀스로 변환하는 단계; 상기 변환된 API 코드 시퀀스를 미리 저장된 악성코드의 패밀리에 대한 시그니쳐와 비교하여 유사도를 확인하는 단계; 및 상기 확인된 유사도에 기초하여 상기 분석 대상 샘플의 악성코드 여부를 판단하는 단계를 포함할 수 있다.
미리 저장된 악성코드의 패밀리에 대한 시그니쳐는 상기 악성코드의 패밀리를 구성하는 복수의 악성코드 샘플들 각각을 동적 분석하여 결정된 상기 악성코드 샘플들 각각의 API 호출 시퀀스에 다중 서열 정렬 기법을 적용함으로써 생성될 수 있다.
미리 저장된 악성코드의 패밀리에 대한 시그니쳐는 상기 다중 서열 정렬 기법을 적용한 결과 생성된 복수의 악성코드의 샘플별 API 코드 시퀀스로 구성된 행렬에서 각각의 열 마다 최대 빈도수를 가지는 API 코드를 이용하여 생성될 수 있다.
본 발명의 일실시예에 따른 악성코드 탐지 장치는 분석 대상 샘플을 동적 분석하여 상기 분석 대상 샘플의 API 호출 시퀀스를 결정하는 결정부; 상기 결정된 API 호출 시퀀스를 API 코드 시퀀스로 변환하는 변환부; 상기 변환된 API 코드 시퀀스를 미리 저장된 악성코드의 패밀리에 대한 시그니쳐와 비교하여 유사도를 확인하는 확인부; 및 상기 판단된 유사도에 기초하여 상기 분석 대상 샘플의 악성코드 여부를 판단하는 판단부를 포함할 수 있다.
미리 저장된 악성코드의 패밀리에 대한 시그니쳐는 상기 악성코드의 패밀리를 구성하는 복수의 악성코드 샘플들 각각을 동적 분석하여 결정된 상기 악성코드 샘플들 각각의 API 호출 시퀀스에 다중 서열 정렬 기법을 적용함으로써 생성될 수 있다.
미리 저장된 악성코드의 패밀리에 대한 시그니쳐는 상기 다중 서열 정렬 기법을 적용한 결과 생성된 복수의 악성코드의 샘플별 API 코드 시퀀스로 구성된 행렬에서 각각의 열 마다 최대 빈도수를 가지는 API 코드를 이용하여 생성될 수 있다.
본 발명의 일실시예에 따르면, 악성코드 패밀리를 구성하는 복수의 악성코드 샘플들 각각을 동적 분석하여 획득한 API 코드 시퀀스에 다중 서열 정렬 기법을 적용한 결과를 이용하여 악성코드 패밀리에 대한 시그니쳐를 생성함으로써 보다 효과적으로 악성코드를 탐지할 수 있다.
도 1은 본 발명의 일실시예에 따른 악성코드 시그니쳐 생성 장치를 도시한 도면이다.
도 2는 본 발명의 일실시예에 따른 API 코드의 예를 도시한 도면이다.
도 3은 본 발명의 일실시예에 따른 반복되는 API 코드의 패턴을 제거하는 과정의 예를 도시한 도면이다.
도 4는 본 발명의 일실시예에 따른 제거할 반복되는 API 코드의 패턴의 길이에 따른 악성코드 API 호출 정보의 길이 변화를 도시한 도면이다.
도 5는 본 발명의 일실시예에 따른 다중 서열 정렬 기법을 적용한 결과로부터 대표 API 패턴을 추출하는 과정의 예를 도시한 도면이다.
도 6은 본 발명의 일실시예에 따른 악성코드 시그니쳐 생성 방법을 플로우차트로 도시한 도면이다.
도 7은 본 발명의 일실시예에 따른 악성코드 탐지 장치를 도시한 도면이다.
도 8은 본 발명의 일실시예에 따른 공백 비율에 따른 악성코드의 탐지 정확도를 도시한 도면이다.
이하, 본 발명의 실시예를 첨부된 도면을 참조하여 상세하게 설명한다.
도 1은 본 발명의 일실시예에 따른 악성코드 시그니쳐 생성 장치를 도시한 도면이다.
악성코드 시그니쳐 생성 장치(100)는 결정부(110), 변환부(120), 제거부(130), 적용부(140) 및 생성부(150)로 구성될 수 있다. 결정부(110)는 악성코드의 패밀리를 구성하는 복수의 악성코드 샘플들 각각을 분석하여 상기 악성코드 샘플들 각각에 대해 API 호출 정보를 추출할 수 있다.
결정부(110)는 분석 과정에서 실행된 모든 프로그램들의 API 호출 정보를 호출 순서대로 정렬하고, 각 프로그램들의 실행 순서에 따라 모든 프로그램들을 배열하여 API 호출 시퀀스를 결정할 수 있다.
이는 각 악성코드마다 실제로 악성행위를 수행하는 프로그램과 첫 번째 실행되는 프로그램이 서로 다를 수 있기 때문이며, 모든 API 정보를 포함하여 보다 정확한 분석을 하기 위함이다.
이때, 결정부(110)는 API 호출 시퀀스를 결정하기 위하여 각 API의 이름만을 고려하며, 인수 또는 반환 값의 부가 정보는 고려하지 않을 수 있다. 추가적으로 결정부(110)는 일부 API 호출 정보를 무시할 수 있다.
LdrGetProcAddress()와 LoadLibraryA()등의 API는 특정 API를 호출하기 위하여 해당 API가 존재하는 라이브러리 파일을 메모리로 로드하고 해당 API의 라이브러리 상의 위치를 찾기 위하여 호출하는 API이다. 이러한 API는 다른 API를 호출하기 위하여 빈번하게 사용되며 호출 빈도가 모든 프로그램에 대해 높은 편이다. 따라서, LdrGetProcAddress()와 LoadLibraryA()등의 API는 유사도 분석에 교란을 줄 수 있으므로, 이러한 부정적인 영향을 최소화하기 위하여 API 호출 정보를 추출할 때 무시할 수 있다.
이때, 결정부(110)는 기존의 정적 분석 기반의 악성코드 시그니쳐 생성 방법과는 달리 프로그램을 실행하는 과정에서 추출된 API 호출 정보를 이용하는 동적 분석 기반의 악성코드 시그니쳐를 생성할 수 있다.
예를 들어, 결정부(110)는 샌드박스(Sandbox) 도구를 이용하여 악성코드의 패밀리를 구성하는 복수의 악성코드 샘플들 각각에 대해 동적 분석을 실행할 수 있다. 이때, 결정부(110)는 동적 분석을 실행함으로써 언패킹이 불가능한 프로그램의 경우에도 문제없이 분석할 수 있다.
변환부(120)는 결정된 API 호출 시퀀스를 API 코드 시퀀스로 변환할 수 있다. 결정부(110)를 통해 추출한 API 호출 정보에 포함된 각각의 API는 다양한 길이의 이름을 가질 수 있으므로, 문자열을 대상으로 동작하는 다중 서열 정렬 기법을 적용하기에는 부적절하다. 따라서, 변환부(120)는 API 호출 정보에 포함된 각각의 API를 고정 길이를 가지는 코드로 변환하는 작업이 필요하다.
제거부(130)는 변환된 API 코드 시퀀스에서 동일한 API 코드가 반복되는 경우, 반복되는 API 코드를 제거할 수 있다. API 호출 정보의 길이는 각각의 악성코드 마다 다양하게 존재할 수 있다.
예를 들어, 하나의 악성코드는 10개 미만의 매우 짧은 API 호출 정보를 가질 수 있는 반면, 다른 하나의 악성코드는 수십만 개의 API 호출 정보를 가질 수 있다. 이러한 경우는 악성코드 내에 반복문이 많이 존재하거나, 또는 악의적으로 의미 없는 동작을 반복함으로써 결정부(110)가 수행하는 동적 분석을 교란할 수 있다.
이러한 극단적인 경우를 배제하지 않는 경우, 악성코드 시그니쳐 생성 장치(100)는 API 코드 시퀀스에 다중 서열 정렬 기법을 적용하는 것이 불가능하거나, 그 성능이 매우 떨어질 가능성이 있다.
따라서, 제거부(130)는 변환된 API 코드 시퀀스에서 크고 작은 동일 API 코드의 반복되는 부분을 제거함으로써 다중 서열 정렬 기법을 적용할 API 코드 시퀀스의 최적화를 이룰 수 있다.
적용부(140)는 제거부(130)를 통해 최적화된 API 코드 시퀀스에 다중 서열 정렬 기법을 적용할 수 있다. 다중 서열 정렬 기법은 비교적 노이즈를 많이 포함하고 있는 두 문자열을 비교하는데 매우 유용할 수 있다.
일반적인 서열 정렬 기법은 두 문자열의 각 문자를 하나씩 비교할 수 있다. 각 문자를 비교하는 과정에서, 일반적인 서열 정렬 기법은 두 문자열의 각 문자가 같은지의 여부를 확인할 수 있다. 만약 다른 경우, 두 문자열 중 하나에 공백(gap)을 추가할 수 있다. 일반적인 서열 정리 기법은 이러한 4가지 경우(같은 경우, 다른 경우, 각 문자열에 공백을 추가하는 2가지 경우)에 대하여 고유한 점수를 부여하고, 모든 경우에 대하여 점수 행렬을 만들어 누적 점수를 기록할 수 있다. 두 문자열의 끝까지 정렬을 수행한 뒤, 최종적으로 가장 높은 누적 점수를 가지는 경우의 경로를 점수 행렬에서 확인할 수 있다. 일반적인 서열 정리 기법은 이러한 경로를 따라서 공백을 삽입할 수 있으며, 정렬을 완료할 수 있다. 일반적인 서열 정리 기법은 정렬 결과로부터 두 문자열의 유사한 부분이 최대가 되는 상태를 확인할 수 있다.
적용부(140)는 정렬 대상 문자열이 3개 이상인 경우, 다중 서열 정렬 기법을 적용할 수 있다. 다중 서열 정렬 기법은 3개 이상의 문자열의 공통 부분이 최대가 되도록 정렬을 수행하는 것이다.
본 발명의 일실시예에 따라 적용부(140)는 대표적인 다중 서열 정렬 알고리즘인 클러스탈(clustal) 알고리즘을 이용할 수 있다. 클러스탈(clustal) 알고리즘은 구현된 프로그램의 형태로 제공될 수 있다.
이때, 적용부(140)는 악성코드의 패밀리를 구성하는 복수의 악성코드 샘플들로부터 결정된 각각의 API 코드 시퀀스들에 다중 서열 정렬 기법을 적용하는 과정에서 필요한 경우 공백을 삽입함으로써 각각의 API 코드 시퀀스들 간의 관계를 파악하고, 유사도가 최대가 되도록 할 수 있다.
또한, 적용부(140)는 악성코드의 패밀리를 구성하는 복수의 악성코드 샘플들로부터 결정된 각각의 API 코드 시퀀스들 중 일정 길이 범위를 벗어나는 API 코드 시퀀스를 아웃라이어(outlier)로 정의하고, 정의된 API 코드 시퀀스를 배제하고 다중 서열 정리 기법을 적용할 수 있다.
생성부(150)는 다중 서열 정렬 기법을 적용한 결과 생성된 복수의 악성코드의 샘플별 API 코드 시퀀스로 구성된 행렬에서 각각의 열 마다 최대 빈도수를 가지는 API 코드를 이용하여 악성코드 패밀리에 대한 시그니쳐를 생성할 수 있다.
악성코드 시그니쳐 데이터베이스(160)는 생성부(150)를 통해 생성된 악성코드 패밀리에 대한 시그니쳐를 저장할 수 있다. 이때, 악성코드 시그니쳐 데이터베이스(160)는 악성코드 시그니쳐 생성 장치(100) 내에 포함되거나 혹은 별도의 서버 내에 포함될 수 있다.
도 2는 본 발명의 일실시예에 따른 API 코드의 예를 도시한 도면이다.
API 호출 시퀀스가 변환된 API 코드 시퀀스에서 API 코드는 도 2와 같이 총 3개의 알파벳으로 구성될 수 있다. 첫 번째 알파벳은 해당 API의 카테고리를 의미하며, 나머지 두 번째 및 세 번째 알파벳은 카테고리 내의 API 순서에 대응하는 인덱스 정보를 의미할 수 있다.
예를 들어, 첫 번째 알파벳에 대응하는 API의 카테고리는 아래의 표 1과 같을 수 있다.
Code Category Code Category
A Registry H System
B File System I Device
C Process J Threading
D Service K Hooking
E Network L Misc.
F Socket M Windows
G Synchronization
만약 API 코드가 'AAA'라고 한다면, 해당 API는 Registry 카테고리에 속하고, Registry 카테고리 내의 첫 번째 API임을 알 수 있다. 다른 예로, 만약 API 코드가 'CBD'라고 한다면, 해당 API는 Process 카테고리에 속하고, Process 카테고리 내의 30번째 API임을 알 수 있다.
도 3은 본 발명의 일실시예에 따른 반복되는 API 코드의 패턴을 제거하는 과정의 예를 도시한 도면이다.
모든 프로그램은 반복문을 가질 수 있으며, 반복문을 수행함에 따라 API 코드 시퀀스에서 동일한 API 코드가 반복되는 경우가 발생할 수 있다. 이러한 반복 부분은 제거하여도 악성코드를 탐지하는 정확도에 큰 영향을 미치지 않으나, API 코드 시퀀스의 길이가 지나치게 길면 문제가 발생될 수 있다.
통상적으로 10만개 이상의 API 코드로 이루어진 API 코드 시퀀스에 대한 다중 서열 정렬 기법의 적용은 성능상의 문제로 불가능할 수 있다. 따라서 API 코드 시퀀스의 길이를 최대한 줄임으로써 API 코드 시퀀스를 최적화할 필요가 있다. 반복되는 API 코드의 패턴 제거를 위하여, 악성코드 시그니쳐 생성 장치(100)는 다음과 같은 과정을 수행할 수 있다.
먼저, 악성코드 시그니쳐 생성 장치(100)는 도 3과 같이 특정 API 코드를 기준으로 하여 1개 단위에 대하여 반복되는 API 코드를 제거할 수 있다. 즉, 도 3의 (a)와 같은 원래의 API 코드 시퀀스를 확인해 보면 API #1이 반복되는 것을 확인할 수 있다. 따라서, 악성코드 시그니쳐 생성 장치(100)는 반복되는 두 개의 API #1 중 하나를 제거할 수 있다.
이어서, 악성코드 시그니쳐 생성 장치(100)는 2개 단위에 대하여 반복되는 API 코드를 제거할 수 있다. 즉, 도 3의 (a)에서와 같이 연속하는 API #2와 API #3의 쌍이 반복되는 것을 확인할 수 있다. 따라서, 악성코드 시그니쳐 생성 장치(100)는 반복되는 두 개의 API #2와 API #3의 쌍 중 하나의 쌍을 제거할 수 있다.
이러한 방식으로 악성코드 시그니쳐 생성 장치(100)는 반복되는 API 코드의 패턴 길이를 늘려가며 반복되는 부분을 탐색하여 제거할 수 있다. 이후에, 악성코드 시그니쳐 생성 장치(100)는 더 이상 반복되는 부분이 발견되지 않는다면 다음 API 코드 시퀀스를 기준으로 동일한 과정을 반복할 수 있다.
이와 같은 과정을 통해 악성코드 시그니쳐 생성 장치(100)가 제거하는 반복되는 API 코드의 패턴의 길이에 따른 악성코드 API 호출 정보의 길이 변화를 도 4에서 확인할 수 있다.
도 5는 본 발명의 일실시예에 따른 다중 서열 정렬 기법을 적용한 결과로부터 대표 API 패턴을 추출하는 과정의 예를 도시한 도면이다.
API 호출 정보의 길이가 지나치게 짧은 경우, 이를 이용하여 유사도를 계산하는 것은 어려울 수 있다. 반대로, API 호출 정보의 길이가 지나치게 긴 경우, 이를 이용하여 다중 서열 정렬 기법을 적용하기에는 시스템 자원이 부족할 수 있다. 따라서, 악성코드 시그니쳐 생성 장치(100)는 이러한 극단적인 길이를 가지는 API 코드 시퀀스들을 아웃라이어(outlier)로 정의하고, 정의된 API 코드 시퀀스들을 배제하여 다중 서열 정렬 기법을 적용할 수 있다. 통상적으로 악성코드 시그니쳐 생성 장치(100)는 API 코드 시퀀스의 길이에 따라 오름차순으로 각각의 API 코드 시퀀스를 배열한 뒤, 상/하위 10~20%를 배제하고 다중 서열 정렬 기법을 적용할 수 있다.
API 코드 시퀀스에 다중 서열 정렬 기법을 적용하면 도 5의 (a)와 같은 행렬을 획득할 수 있다. 이때, 다중 서열 정렬 기법이 적용되는 API 코드 시퀀스는 반복되는 API 코드가 제거되고, 일정 길이 범위를 벗어나는 API 코드 시퀀스를 배제한 API 코드 시퀀스일 수 있다.
API 코드 시퀀스에 다중 서열 정렬 기법을 적용하여 획득한 행렬 내에 포함된 복수의 API 코드 시퀀스들은 각각의 열에 포함된 API 코드의 공통 부분이 최대가 되도록 각각의 API 코드 시퀀스 내부에 공백이 삽입될 수 있다.
따라서 API 코드 시퀀스에 다중 서열 정렬 기법을 적용하여 획득한 행렬의 각 행은 정렬된 API 코드 시퀀스로 구성되고, 각 열은 API 코드 또는 공백으로 구성될 수 있다.
악성코드 시그니쳐 생성 장치(100)는 도 5의 (a)의 행렬에서 각각의 열에 존재하는 API 코드들 각각의 빈도수를 확인할 수 있다. 이때, 악성코드 시그니쳐 생성 장치(100)는 도 5의 (b)와 같이 확인된 빈도수 중 최대 값을 가지는 API 코드를 해당하는 열의 대표 API 코드로 정의할 수 있다. 이후, 악성코드 시그니쳐 생성 장치(100)는 도 5의 (c)와 같이 대표 API 코드 중 공백을 제외한 나머지 대표 API 코드들을 병합하여 대표 API 패턴으로 추출할 수 있다.
이때, 악성코드 시그니쳐 생성 장치(100)는 추출된 대표 API 패턴을 악성코드의 패밀리에 대한 시그니처로 결정하고, 이를 악성코드 시그니쳐 데이터 베이스(160)에 저장할 수 있다.
악성코드 시그니쳐 생성 장치(100)가 대표 API 패턴을 추출할 때, 각 열에 포함된 공백의 비율을 고려하는 대표 API 코드를 병합할 수 있다. 이는 만약 특정한 열에서 공백의 비율이 지나치게 높으면, 대표 API 코드로 정의된 API 코드의 대표성이 떨어질 수 있기 때문이다.
예를 들어, 공백 비율의 기준치를 50%라고 가정한다면, 악성코드 시그니쳐 생성 장치(100)는 도 5의 (a)에서와 같이 4번째 열에 대해서는 대표 API 코드를 정의하지 않고, 공백으로 처리할 수 있다. 왜냐하면 4번째 열은 공백의 비율이 75%이므로 공백 비율의 기준치인 50% 이상이기 때문이다. 이러한 공백 비율은 추후 악성코드 탐지에 대한 정확도에 영향을 미칠 수 있다.
도 6은 본 발명의 일실시예에 따른 악성코드 시그니쳐 생성 방법을 플로우차트로 도시한 도면이다.
단계(610)에서 악성코드 시그니쳐 생성 장치(100)는 악성코드의 패밀리를 구성하는 복수의 악성코드 샘플들 각각을 동적 분석하여 악성코드 샘플들 각각에 대해 API 호출 시퀀스를 결정할 수 있다.
악성코드 시그니쳐 생성 장치(100)는 API 호출 시퀀스를 결정하기 위하여 각 API의 이름만을 고려하며, 인수 또는 반환 값의 부가 정보는 고려하지 않을 수 있다. 추가적으로 악성코드 시그니쳐 생성 장치(100)는 일부 API 호출 정보를 무시할 수 있다.
LdrGetProcAddress()와 LoadLibraryA()등의 API는 특정 API를 호출하기 위하여 해당 API가 존재하는 라이브러리 파일을 메모리로 로드하고 해당 API의 라이브러리 상의 위치를 찾기 위하여 호출하는 API이다. 이러한 API는 다른 API를 호출하기 위하여 빈번하게 사용되며 호출 빈도가 모든 프로그램에 대해 높은 편이다. 따라서, LdrGetProcAddress()와 LoadLibraryA()등의 API는 유사도 분석에 교란을 줄 수 있으므로, 이러한 부정적인 영향을 최소화하기 위하여 API 호출 정보를 추출할 때 무시할 수 있다.
또한, 악성코드 시그니쳐 생성 장치(100)는 기존의 정적 분석 기반의 악성코드 시그니쳐 생성 방법과는 달리 프로그램을 실행하는 과정에서 추출된 API 호출 정보를 이용하는 동적 분석 기반의 악성코드 시그니쳐를 생성할 수 있다.
예를 들어, 악성코드 시그니쳐 생성 장치(100)는 샌드박스(Sandbox) 도구를 이용하여 악성코드의 패밀리를 구성하는 복수의 악성코드 샘플들 각각에 대해 동적 분석을 실행할 수 있다. 이때, 악성코드 시그니쳐 생성 장치(100)는 동적 분석을 실행함으로써 언패킹이 불가능한 프로그램의 경우에도 문제없이 분석할 수 있다.
단계(620)에서, 악성코드 시그니쳐 생성 장치(100)는 결정된 API 호출 시퀀스를 API 코드 시퀀스로 변환할 수 있다. API 호출 정보에 포함된 각각의 API는 다양한 길이의 이름을 가질 수 있으므로, 문자열을 대상으로 동작하는 다중 서열 정렬 기법을 적용하기에는 부적절하다. 따라서, 악성코드 시그니쳐 생성 장치(100)는 API 호출 정보에 포함된 각각의 API를 고정 길이를 가지는 코드로 변환하는 작업이 필요하다.
단계(630)에서, 악성코드 시그니쳐 생성 장치(100)는 변환된 API 코드 시퀀스에서 동일한 API 코드가 반복되는 경우, 반복되는 API 코드를 제거할 수 있다. API 호출 정보의 길이는 각각의 악성코드 마다 다양하게 존재할 수 있다.
예를 들어, 하나의 악성코드는 10개 미만의 매우 짧은 API 호출 정보를 가질 수 있는 반면, 다른 하나의 악성코드는 수십만 개의 API 호출 정보를 가질 수 있다. 이러한 경우는 악성코드 내에 반복문이 많이 존재하거나, 또는 악의적으로 의미 없는 동작을 반복함으로써 악성코드 시그니쳐 생성 장치(100)가 수행하는 동적 분석을 교란할 수 있다.
이러한 극단적인 경우를 배제하지 않는 경우, 악성코드 시그니쳐 생성 장치(100)는 API 코드 시퀀스에 다중 서열 정렬 기법을 적용하는 것이 불가능하거나, 그 성능이 매우 떨어질 가능성이 있다.
따라서, 악성코드 시그니쳐 생성 장치(100)는 변환된 API 코드 시퀀스에서 동일 API 코드의 반복되는 부분을 제거함으로써 다중 서열 정렬 기법을 적용할 API 코드 시퀀스의 최적화를 이룰 수 있다.
단계(640)에서, 악성코드 시그니쳐 생성 장치(100)는 반복되는 API 코드가 제거된 API 코드 시퀀스에 다중 서열 정렬 기법을 적용할 수 있다. 다중 서열 정렬 기법은 비교적 노이즈를 많이 포함하고 있는 두 문자열을 비교하는데 매우 유용할 수 있다.
다중 서열 정렬 기법은 정렬 대상 문자열이 3개 이상인 경우에 적용할 수 있으며, 3개 이상의 문자열의 공통 부분이 최대가 되도록 정렬을 수행할 수 있다.
이때, 악성코드 시그니쳐 생성 장치(100)는 악성코드의 패밀리를 구성하는 복수의 악성코드 샘플들로부터 결정된 각각의 API 코드 시퀀스들에 다중 서열 정렬 기법을 적용하는 과정에서 필요한 경우 공백을 삽입함으로써 각각의 API 코드 시퀀스들 간의 관계를 파악하고, 유사도가 최대가 되도록 할 수 있다.
또한, 악성코드 시그니쳐 생성 장치(100)는 악성코드의 패밀리를 구성하는 복수의 악성코드 샘플들로부터 결정된 각각의 API 코드 시퀀스들 중 일정 길이 범위를 벗어나는 API 코드 시퀀스를 아웃라이어(outlier)로 정의하고, 정의된 API 코드 시퀀스를 배제하고 다중 서열 정리 기법을 적용할 수 있다.
단계(650)에서 악성코드 시그니쳐 생성 장치(100)는 다중 서열 정렬 기법을 적용한 결과를 이용하여 악성코드의 패밀리에 대한 시그니쳐를 생성할 수 있다. 악성코드 시그니쳐 생성 장치(100)는 다중 서열 정렬 기법을 적용한 결과 생성된 복수의 악성코드의 샘플별 API 코드 시퀀스로 구성된 행렬에서 각각의 열 마다 최대 빈도수를 가지는 API 코드를 이용하여 악성코드 패밀리에 대한 시그니쳐를 생성할 수 있다.
구체적으로 악성코드 시그니쳐 생성 장치(100)는 도 5의 (a)의 행렬에서 각각의 열에 존재하는 API 코드들 각각의 빈도수를 확인할 수 있다. 이때, 악성코드 시그니쳐 생성 장치(100)는 도 5의 (b)와 같이 확인된 빈도수 중 최대 값을 가지는 API 코드를 해당하는 열의 대표 API 코드로 정의할 수 있다. 이후, 악성코드 시그니쳐 생성 장치(100)는 도 5의 (c)와 같이 대표 API 코드 중 공백을 제외한 나머지 대표 API 코드들을 병합하여 대표 API 패턴으로 추출할 수 있다.
이때, 악성코드 시그니쳐 생성 장치(100)는 추출된 대표 API 패턴을 악성코드의 패밀리에 대한 시그니처로 결정하고, 이를 악성코드 시그니쳐 데이터 베이스(160)에 저장할 수 있다.
도 7은 본 발명의 일실시예에 따른 악성코드 탐지 장치를 도시한 도면이다.
악성코드 탐지 장치(700)는 결정부(710), 변환부(720), 확인부(730) 및 판단부(740)으로 구성될 수 있다. 결정부(710)는 분석 대상 샘플을 동적 분석하여 상기 분석 대상 샘플의 API 호출 시퀀스를 결정할 수 있다.
이때, 결정부(710)는 API 호출 시퀀스를 결정하기 위하여 각 API의 이름만을 고려하며, 인수 또는 반환 값의 부가 정보는 고려하지 않을 수 있다. 추가적으로 결정부(710)는 일부 API 호출 정보를 무시할 수 있다.
LdrGetProcAddress()와 LoadLibraryA()등의 API는 특정 API를 호출하기 위하여 해당 API가 존재하는 라이브러리 파일을 메모리로 로드하고 해당 API의 라이브러리 상의 위치를 찾기 위하여 호출하는 API이다. 이러한 API는 다른 API를 호출하기 위하여 빈번하게 사용되며 호출 빈도가 모든 프로그램에 대해 높은 편이다. 따라서, LdrGetProcAddress()와 LoadLibraryA()등의 API는 유사도 분석에 교란을 줄 수 있으므로, 이러한 부정적인 영향을 최소화하기 위하여 API 호출 정보를 추출할 때 무시할 수 있다.
이때, 결정부(710)는 기존의 정적 분석 기반의 악성코드 시그니쳐 생성 방법과는 달리 프로그램을 실행하는 과정에서 API 호출 정보를 추출하는 동적 분석을 이용할 수 있다. 예를 들어, 결정부(710)는 샌드박스(Sandbox) 도구를 이용하여 분석 대상 샘플에 대해 동적 분석을 실행할 수 있다. 이때, 결정부(110)는 동적 분석을 실행함으로써 언패킹이 불가능한 프로그램의 경우에도 문제없이 분석할 수 있다.
변환부(720)는 결정된 API 호출 시퀀스를 API 코드 시퀀스로 변환할 수 있다. 결정부(710)를 통해 추출한 API 호출 정보에 포함된 각각의 API는 다양한 길이의 이름을 가질 수 있으므로, 문자열을 대상으로 동작하는 다중 서열 정렬 기법을 적용하기에는 부적절하다. 따라서, 변환부(720)는 API 호출 정보에 포함된 각각의 API를 고정 길이를 가지는 코드로 변환하는 작업이 필요하다.
확인부(730)는 변환된 API 코드 시퀀스를 미리 저장된 악성코드의 패밀리에 대한 시그니쳐와 비교하여 유사도를 확인할 수 있다. 악성코드의 패밀리에 대한 시그니쳐가 저장된 악성코드 시그니쳐 데이터베이스(750)는 악성코드 탐지 장치(700) 내에 존재하거나 별도의 서버에 존재할 수 있다.
또한, 악성코드 시그니쳐 데이터베이스(750)에 저장된 악성코드의 패밀리에 대한 시그니쳐는 악성코드의 패밀리를 구성하는 복수의 악성코드 샘플들 각각을 동적 분석하여 결정된 상기 악성코드 샘플들 각각의 API 호출 시퀀스에 다중 서열 정렬 기법을 적용함으로써 생성될 수 있다.
악성코드 시그니쳐 데이터베이스(750)에 저장된 악성코드의 패밀리에 대한 시그니쳐는 다중 서열 정렬 기법을 적용한 결과 생성된 복수의 악성코드의 샘플별 API 코드 시퀀스로 구성된 행렬에서 각각의 열 마다 최대 빈도수를 가지는 API 코드를 이용하여 생성될 수 있다.
본 발명의 일실시예에 따라 유사도를 확인하기 위하여 변환된 API 코드 시퀀스 및 악성코드의 패밀리에 대한 시그니쳐에 대해 쌍 서열 정렬을 수행할 수 있다.
확인부(730)는 정렬 결과로부터 다음의 식 1을 통해 점수를 계산할 수 있다.
식 1
Score = matched - mismatched - gaps
상기 식 1은 다음과 같은 의미를 가질 수 있다. 변환된 API 코드 시퀀스 및 악성코드의 패밀리에 대한 시그니쳐의 쌍 서열 정렬 결과 같은 위치의 두 API 코드가 일치하거나 불일치 할 수 있으며, 두 API 코드 중 하나가 공백일 수 있다. 이때, 일치하는 두 API 코드는 1점, 불일치하는 두 API 코드는 -1.5점, 공백이 포함된 경우에는 -1점을 부여하고, 각 경우에 해당하는 점수의 총합을 정렬 결과의 유사도로써 확인할 수 있다.
판단부(740)는 확인된 유사도에 기초하여 상기 분석 대상 샘플의 악성코드 여부를 판단할 수 있다. 이때, 판단부(740)는 분석 대상 샘플의 API 코드 시퀀스와 미리 저장된 악성코드의 패밀리에 대한 시그니쳐를 비교하여 일정 기준치 이상의 유사도를 가지는 경우, 해당 분석 대상 샘플을 악성코드로 처리하고, 일정 기준치 이하의 유사도를 가지는 경우, 정상 프로그램으로 처리할 수 있다.
이때, 분석 대상 샘플의 API 코드 시퀀스와 미리 저장된 악성코드의 패밀리에 대한 시그니쳐를 비교하여 일정 기준치 이상의 유사도를 가지는 경우, 해당 분석 대상 샘플을 가장 높은 유사도를 가지는 악성코드의 패밀리로 분류할 수 있다.
도 8은 본 발명의 일실시예에 따른 공백 비율에 따른 악성코드의 탐지 정확도를 도시한 도면이다.
악성코드 패밀리에 대한 시그니쳐를 생성하기 위하여 대표 API 패턴을 추출할 때 고려되는 공백의 비율에 따라 악성코드 탐지 장치(700)가 악성코드를 탐지하는 정확도는 달라질 수 있다. 도 8과 같이 공백 비율의 기준치가 높아질수록 악성코드의 탐지 정확도가 높아지는 것을 확인할 수 있다.
본 발명의 실시 예에 따른 방법들은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다.
이상과 같이 본 발명은 비록 한정된 실시예와 도면에 의해 설명되었으나, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 본 발명이 속하는 분야에서 통상의 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다.
그러므로, 본 발명의 범위는 설명된 실시예에 국한되어 정해져서는 아니 되며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등한 것들에 의해 정해져야 한다.
100 : 악성코드 시그니쳐 생성 장치
110 : 결정부
120 : 변환부
130 : 제거부
140 : 적용부
150 : 생성부
160, 750 : 악성코드 시그니쳐 데이터베이스
700 : 악성코드 탐지 장치
710 : 결정부
720 : 변환부
730 : 확인부
740 : 판단부

Claims (14)

  1. 악성코드 시그니쳐 생성 장치가 악성코드의 패밀리에 대한 시그니쳐를 생성하는 방법에 있어서,
    결정부가, 상기 악성코드의 패밀리를 구성하는 복수의 악성코드 샘플들 각각을 동적 분석하여 상기 악성코드 샘플들 각각에 대해 API 호출 시퀀스를 결정하는 단계;
    변환부가, 상기 결정된 API 호출 시퀀스를 API 코드 시퀀스로 변환하는 단계;
    정렬부가, 상기 변환된 API 코드 시퀀스에 다중 서열 정렬 기법을 적용하는 단계; 및
    생성부가, 상기 다중 서열 정렬 기법을 적용한 결과 및 상기 결과에 포함된 API 코드별 빈도수를 이용하여 상기 악성코드의 패밀리에 대한 시그니쳐를 생성하는 단계
    를 포함하는 악성코드 시그니쳐 생성 방법.
  2. 제1항에 있어서,
    상기 시그니쳐를 생성하는 단계는,
    상기 다중 서열 정렬 기법을 적용한 결과 생성된 복수의 악성코드의 샘플별 API 코드 시퀀스로 구성된 행렬에서 각각의 열 마다 최대 빈도수를 가지는 API 코드를 선정하는 단계;
    상기 선정된 API 코드를 각각의 열에 대한 대표 API 코드로 정의하는 단계; 및
    상기 정의된 각각의 열에 대한 대표 API 코드를 병합하여 대표 API 패턴을 추출하는 단계
    를 포함하는 악성코드 시그니쳐 생성 방법.
  3. 제1항에 있어서,
    상기 적용하는 단계는,
    일정 길이 범위를 벗어나는 API 코드 시퀀스를 아웃라이어(outlier)로 정의하고, 정의된 API 코드 시퀀스를 배제하고 다중 서열 정렬 기법을 적용하는 악성코드 시그니쳐 생성 방법.
  4. 제2항에 있어서,
    상기 대표 API 패턴은,
    상기 악성코드의 패밀리에 대한 시그니쳐로 결정되는 악성코드 시그니쳐 생성 방법.
  5. 제2항에 있어서,
    상기 다중 서열 정렬 기법을 적용한 결과 생성된 복수의 악성코드의 샘플별 API 코드 시퀀스는,
    각각의 열에 포함된 API 코드의 공통 부분이 최대가 되도록 각각의 샘플별 API 코드 시퀀스 내부에 공백이 삽입될 수 있는 악성코드 시그니쳐 생성 방법.
  6. 제2항에 있어서,
    상기 대표 API 패턴을 추출하는 단계는,
    상기 정의된 각각의 열에 포함된 공백의 비율을 고려하는 대표 API 코드를 병합하는 악성코드 시그니쳐 생성 방법.
  7. 제1항에 있어서,
    상기 변환된 API 코드 시퀀스에서 동일한 API 코드가 반복되는 경우, 상기 반복되는 API 코드를 제거하는 단계
    를 더 포함하고,
    상기 적용하는 단계는,
    상기 상기 반복되는 API 코드가 제거된 API 코드 시퀀스에 다중 서열 정렬 기법을 적용하는 악성코드 시그니쳐 생성 방법.
  8. 제1항에 있어서,
    상기 API 코드 시퀀스를 구성하는 API 코드는,
    상기 API 코드 시퀀스에 대응하는 악성코드 샘플에 대한 카테고리 및 상기 카테고리별로 정의된 API 순서에 대응하는 인덱스 정보를 포함하는 악성코드 시그니쳐 생성 방법.
  9. 악성코드 탐지 장치가 악성코드를 탐지하는 방법에 있어서,
    결정부가, 분석 대상 샘플을 동적 분석하여 상기 분석 대상 샘플의 API 호출 시퀀스를 결정하는 단계;
    변환부가, 상기 결정된 API 호출 시퀀스를 API 코드 시퀀스로 변환하는 단계;
    확인부가, 상기 변환된 API 코드 시퀀스를 미리 저장된 악성코드의 패밀리에 대한 시그니쳐와 비교하여 유사도를 확인하는 단계; 및
    판단부가, 상기 확인된 유사도에 기초하여 상기 분석 대상 샘플의 악성코드 여부를 판단하는 단계
    를 포함하고,
    상기 미리 저장된 악성코드 패밀리에 대한 시그니쳐는
    상기 악성코드 패밀리를 구성하는 악성코드 샘플들 각각의 API 코드 시퀀스에 다중 서열 정렬 기법을 적용한 결과 및 상기 결과에 포함된 API 코드별 빈도수를 이용하여 생성되는 악성코드 탐지 방법.
  10. 삭제
  11. 삭제
  12. 분석 대상 샘플을 동적 분석하여 상기 분석 대상 샘플의 API 호출 시퀀스를 결정하는 결정부;
    상기 결정된 API 호출 시퀀스를 API 코드 시퀀스로 변환하는 변환부;
    상기 변환된 API 코드 시퀀스를 미리 저장된 악성코드의 패밀리에 대한 시그니쳐와 비교하여 유사도를 확인하는 확인부; 및
    상기 확인된 유사도에 기초하여 상기 분석 대상 샘플의 악성코드 여부를 판
    단하는 판단부
    를 포함하고,
    상기 미리 저장된 악성코드 패밀리에 대한 시그니쳐는
    상기 악성코드 패밀리를 구성하는 악성코드 샘플들 각각의 API 코드 시퀀스에 다중 서열 정렬 기법을 적용한 결과 및 상기 결과에 포함된 API 코드별 빈도수를 이용하여 생성되는 악성코드 탐지 장치.
  13. 삭제
  14. 삭제
KR1020150182040A 2015-12-18 2015-12-18 다중 서열 정렬 기법을 이용한 악성코드 패밀리 시그니쳐 생성 장치 및 방법 KR101749210B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020150182040A KR101749210B1 (ko) 2015-12-18 2015-12-18 다중 서열 정렬 기법을 이용한 악성코드 패밀리 시그니쳐 생성 장치 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150182040A KR101749210B1 (ko) 2015-12-18 2015-12-18 다중 서열 정렬 기법을 이용한 악성코드 패밀리 시그니쳐 생성 장치 및 방법

Publications (1)

Publication Number Publication Date
KR101749210B1 true KR101749210B1 (ko) 2017-06-20

Family

ID=59281268

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150182040A KR101749210B1 (ko) 2015-12-18 2015-12-18 다중 서열 정렬 기법을 이용한 악성코드 패밀리 시그니쳐 생성 장치 및 방법

Country Status (1)

Country Link
KR (1) KR101749210B1 (ko)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107437027A (zh) * 2017-07-28 2017-12-05 四川长虹电器股份有限公司 恶意代码快速查询和检测的系统与方法
KR101932174B1 (ko) * 2017-07-18 2018-12-26 한양대학교 산학협력단 악성 코드 탐지 방법 및 그 장치
KR20210013432A (ko) * 2019-07-25 2021-02-04 호서대학교 산학협력단 이상치 스코어 기반의 edr에서의 이상 징후 탐지 장치 및 방법
WO2022107964A1 (ko) * 2020-11-19 2022-05-27 숭실대학교 산학협력단 인접 행렬 기반의 악성 코드 탐지 및 분류 장치와 악성 코드 탐지 및 분류 방법

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101337874B1 (ko) 2010-12-31 2014-01-28 주식회사 안랩 파일 유전자 지도를 이용하여 파일의 악성코드 포함 여부를 판단하는 방법 및 시스템

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101337874B1 (ko) 2010-12-31 2014-01-28 주식회사 안랩 파일 유전자 지도를 이용하여 파일의 악성코드 포함 여부를 판단하는 방법 및 시스템

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
□ 조인겸외 1인, ‘서열 정렬 알고리즘을 적용을 통한 악성 코드 유사도 분석 및 분류’, 한국정보과학회 학술발표논문집 pp.940-942, 2014.6.*
□ 조인겸외 1인, ‘서열 정렬 알고리즘을 적용을 통한 악성 코드 유사도 분석의 성능 개선’, 정보과학회 컴퓨팅의 실제 논문지 21(3), pp.263-268, 2015.3.*

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101932174B1 (ko) * 2017-07-18 2018-12-26 한양대학교 산학협력단 악성 코드 탐지 방법 및 그 장치
CN107437027A (zh) * 2017-07-28 2017-12-05 四川长虹电器股份有限公司 恶意代码快速查询和检测的系统与方法
CN107437027B (zh) * 2017-07-28 2020-11-03 四川长虹电器股份有限公司 恶意代码快速查询和检测的系统与方法
KR20210013432A (ko) * 2019-07-25 2021-02-04 호서대학교 산학협력단 이상치 스코어 기반의 edr에서의 이상 징후 탐지 장치 및 방법
KR102251467B1 (ko) 2019-07-25 2021-05-13 호서대학교 산학협력단 이상치 스코어 기반의 edr에서의 이상 징후 탐지 장치 및 방법
WO2022107964A1 (ko) * 2020-11-19 2022-05-27 숭실대학교 산학협력단 인접 행렬 기반의 악성 코드 탐지 및 분류 장치와 악성 코드 탐지 및 분류 방법

Similar Documents

Publication Publication Date Title
KR101749210B1 (ko) 다중 서열 정렬 기법을 이용한 악성코드 패밀리 시그니쳐 생성 장치 및 방법
US20200082083A1 (en) Apparatus and method for verifying malicious code machine learning classification model
US20090132477A1 (en) Methods of object search and recognition.
CN107016018B (zh) 数据库索引创建方法及装置
CN103914657A (zh) 一种基于函数特征的恶意程序检测方法
KR20170004983A (ko) 라인 분할 방법
CN112651028B (zh) 基于上下文语义和补丁验证的漏洞代码克隆检测方法
US20080127043A1 (en) Automatic Extraction of Programming Rules
KR101520671B1 (ko) 실행코드 유사도 분석 시스템 및 방법
WO2012169128A1 (ja) 表記ゆれ検出装置及び表記ゆれ検出プログラム
CN104036187A (zh) 计算机病毒类型确定方法及其系统
CN109241737B (zh) 一种面向多种补丁模式的差异分支识别方法及系统
JP2019512127A (ja) 文字列距離計算方法及び装置
KR20130071617A (ko) 변종 악성 코드를 탐지하기 위한 시스템 및 방법
CN113961768B (zh) 敏感词检测方法、装置、计算机设备和存储介质
US7548652B1 (en) Rapid comparison of similar data strings
US20070172130A1 (en) Structural description of a document, a method of describing the structure of graphical objects and methods of object recognition.
US8549023B2 (en) Method and apparatus for resorting a sequence of sorted strings
CN112506897A (zh) 一种分析、定位数据质量问题的方法及系统
KR20190051261A (ko) 오디오 핑거프린트 매칭 시스템
CN111078227B (zh) 一种基于代码特征的二进制代码与源代码相似性分析方法与装置
CN103778210A (zh) 一种待分析文件的文件具体类型的判断方法及装置
US9122543B2 (en) Data processing method, apparatus and computer program product for similarity comparison of software programs
Kim et al. A static birthmark of windows binary executables based on strings
Tsuzaki et al. A fuzzy hashing technique for large scale software birthmarks

Legal Events

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