KR101162051B1 - 문자열 비교 기법을 이용한 악성코드 탐지 및 분류 시스템 및 그 방법 - Google Patents
문자열 비교 기법을 이용한 악성코드 탐지 및 분류 시스템 및 그 방법 Download PDFInfo
- Publication number
- KR101162051B1 KR101162051B1 KR1020100131401A KR20100131401A KR101162051B1 KR 101162051 B1 KR101162051 B1 KR 101162051B1 KR 1020100131401 A KR1020100131401 A KR 1020100131401A KR 20100131401 A KR20100131401 A KR 20100131401A KR 101162051 B1 KR101162051 B1 KR 101162051B1
- Authority
- KR
- South Korea
- Prior art keywords
- string
- strings
- binary
- classification
- malicious code
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/562—Static detection
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
본 발명은 악성코드 탐지 및 분류 시스템에 있어서, 악성코드 바이너리 파일로부터 상기 바이너리 파일에 존재하는 모든 표현되는 문자열을 추려내는 문자열 추출부; 상기 문자열 추출부로부터 추출된 문자열 중 악성코드 탐지 및 분류에 방해되는 요소들을 정제하는 문자열 정제부; 및 상기 문자열 정제부로부터 정제된 문자열의 비교를 통해서 하나의 바이너리가 다른 바이너리와 얼마나 유사한지 판단하는 문자열 비교부;를 포함하는 것을 특징으로 하는 문자열 비교 기법을 이용한 악성코드 탐지 및 분류 시스템을 제공한다.
또한, 본 발명은 악성코드 탐지 및 분류 방법에 있어서, 문자열 추출부에 의해 악성코드 바이너리 파일로부터 상기 바이너리 파일에 존재하는 모든 표현되는 문자열을 추려내는 단계; 문자열 정제부에 의해 추출된 문자열 중 악성코드 탐지 및 분류에 방해되는 요소들을 정제하는 단계; 문자열 비교부에 의해 정제된 문자열을 비교하는 단계; 및 상기 문자열 비교부에 의해 비교된 문자열 하나의 바이너리가 다른 바이너리와 얼마나 유사한지 판단하는 단계;를 포함하는 것을 특징으로 하는 문자열 비교 기법을 이용한 악성코드 탐지 및 분류 방법을 제공한다.
또한, 본 발명은 악성코드 탐지 및 분류 방법에 있어서, 문자열 추출부에 의해 악성코드 바이너리 파일로부터 상기 바이너리 파일에 존재하는 모든 표현되는 문자열을 추려내는 단계; 문자열 정제부에 의해 추출된 문자열 중 악성코드 탐지 및 분류에 방해되는 요소들을 정제하는 단계; 문자열 비교부에 의해 정제된 문자열을 비교하는 단계; 및 상기 문자열 비교부에 의해 비교된 문자열 하나의 바이너리가 다른 바이너리와 얼마나 유사한지 판단하는 단계;를 포함하는 것을 특징으로 하는 문자열 비교 기법을 이용한 악성코드 탐지 및 분류 방법을 제공한다.
Description
본 발명은 문자열 비교 기법을 이용한 악성코드 탐지 및 분류 시스템 및 그 방법에 관한 것으로, 문자열 비교를 통해 두 실행파일에 대한 유사도를 측정함으로써, 악성코드 판별 및 분류를 도와주는 정적 분석기법을 제안하는 문자열 비교 기법을 이용한 악성코드 탐지 및 분류 시스템 및 그 방법에 관한 것이다.
최근 수년간 악성코드의 수가 큰 폭으로 증가하고 있다.
시만텍(Symantec)의 '인터넷 보안 위협 보고서'에 따르면 2009년 한 해 동안 280만개 이상의 악성코드 시그니쳐가 생성되었고 이는 전년 대비 71% 가량 증가된 수치이다. 또한, 이는 지금까지 생성된 모든 시그니쳐의 51%에 해당된다. 이처럼 폭발적으로 증가하는 악성코드에 대응하기 위해서는 전문가의 양성도 중요하지만 분석 시스템의 자동화가 필수불가결하다.
악성코드 분석 시스템은 크게 동적 분석을 이용한 방법과 정적 분석을 이용한 방법으로 구분된다. 동적 분석은 파일을 수행시킴으로써, 분석대상이 어떤 행위를 하는지 그리고 어떤 영향을 미치는지에 대한 정보를 얻을 수 있다. 이는 악성여부 탐지 및 분석대상의 행위 특성을 결정짓는데 도움이 된다. 반면 정적 분석은 파일을 수행시키지 않고 분석을 수행하기 때문에 분석 시스템에 적용하기에는 여러 가지 제약이 존재한다. 하지만 정적 분석은 분석된 악성코드와의 비교를 통해 특정 악성코드의 변종 여부를 판단할 수 있는 장점이 있다.
대표적인 악성코드 정적 분석 중 하나의 실행파일의 코드영역을 분석하여 프로그램의 분기점을 그래프로 표현하는 방법이 있다. 이 CFG(Control Flow Graph)를 이용한 악성코드 분석은 두 실행파일에 대한 유사성 검증을 자동화하는데 적합하다. 마찬가지로 실행파일로부터 추출한 문자열을 비교함으로써, 두 실행파일에 대한 유사성을 검증하는 방법 역시 악성코드 자동분석 시스템에 충분히 유효하다. 특히 디스어셈블(Disassemble) 기능을 방해하는 요소나 난독화(Obfuscation) 기능을 포함된 실행파일에 대해서는 전자의 방법을 사용할 수 없기 때문에 후자와 같은 범용성 높은 정적 분석 기법연구가 필요하다.
따라서, 본 발명은 종래 기술에 제기된 문제점을 해결하기 위한 것으로, 비교 문자열의 수와 종류에 따라 그 성능이 결정되기 때문에 문자열들을 정제하는 정제과정이 적용됨으로써, 악성코드 탐지 및 분류 시스템의 성능을 향상시킬 수 있는 문자열 비교 기법을 이용한 악성코드 탐지 및 분류 시스템 및 그 방법을 제공하는데 그 목적이 있다.
또한, 본 발명은 동일 문자열만을 찾기보다는 문자열들 간의 유사도를 측정하며, 유사도 측정에 있어서 악성코드가 가지는 문자열들의 특성을 고려하여 보다 더 정확한 결과를 도출할 수 있는 문자열 비교 기법을 이용한 악성코드 탐지 및 분류 시스템 및 그 방법을 제공하는데 그 목적이 있다.
상기의 목적을 달성하기 위한 본 발명은 악성코드 탐지 및 분류 시스템에 있어서, 악성코드 바이너리 파일로부터 상기 바이너리 파일에 존재하는 모든 표현되는 문자열을 추려내는 문자열 추출부; 상기 문자열 추출부로부터 추출된 문자열 중 악성코드 탐지 및 분류에 방해되는 요소들을 정제하는 문자열 정제부; 및 상기 문자열 정제부로부터 정제된 문자열의 비교를 통해서 하나의 바이너리가 다른 바이너리와 얼마나 유사한지 판단하는 문자열 비교부;를 포함하는 것을 특징으로 하는 문자열 비교 기법을 이용한 악성코드 탐지 및 분류 시스템을 제공한다.
이때, 상기 문자열은 바이너리 데이터가 아스키 혹은 유니코드 표준에 정의된 문자영역 데이터를 연속으로 갖는 데이터일 수 있다.
그리고 상기 문자열 추출부로부터 추출된 문자열들은 10글자 이하의 모든 문자열, 10글자 이상이지만 의미 없는 문자열, 윈도우즈 DLL파일 및 API명, 프로그램 언어가 지원하는 라이브러리 함수 명, PE 파일 포맷이 기본적으로 가지는 문자열로 분류될 수 있다.
상기의 목적을 달성하기 위한 본 발명은 악성코드 탐지 및 분류 방법에 있어서, 문자열 추출부에 의해 악성코드 바이너리 파일로부터 상기 바이너리 파일에 존재하는 모든 표현되는 문자열을 추려내는 단계; 문자열 정제부에 의해 추출된 문자열 중 악성코드 탐지 및 분류에 방해되는 요소들을 정제하는 단계; 문자열 비교부에 의해 정제된 문자열을 비교하는 단계; 및 상기 문자열 비교부에 의해 비교된 문자열 하나의 바이너리가 다른 바이너리와 얼마나 유사한지 판단하는 단계;를 포함하는 것을 특징으로 하는 문자열 비교 기법을 이용한 악성코드 탐지 및 분류 방법을 제공한다.
또한, 상기 문자열 정제부에 의해 추출된 문자열 중 악성코드 탐지 및 분류에 방해되는 요소들을 정제하는 단계에서, 한 문자열의 문자 조합이 하기와 같은 문자열 정제수식에 만족하면 해당 문자열은 삭제될 수 있다.
또한, 상기 문자열 비교부에 의해 정제된 문자열을 비교하는 단계에서, 상기 문자열 비교부는 두 문자열 집합 간에 동일한 문자열 수 측정하는 방법으로 문자열을 비교할 수 있다.
또한, 상기 문자열 비교부에 의해 정제된 문자열을 비교하는 단계에서, 상기 문자열 비교부는 두 문자열 집합 간에 일정 임계치 이상의 Edit Distance 값을 보이는 문자열 수를 측정할 수 있다.
또한, 상기 문자열 비교부에 의해 비교된 문자열 하나의 바이너리가 다른 바이너리와 얼마나 유사한지 판단하는 단계에서, 두 문자열 간에 Levenshtein distance 값을 계산한 후 아래 수식의 결과를 기반으로 유사도를 점수화할 수 있다.
또한. 상기 유사도 점수는 최소 0에서 최대 1까지 표현되며, 1에 가까울수록 두 문자열을 유사하다고 판단할 수 있다.
또한, 상기 문자열 비교부에 의해 비교된 문자열 하나의 바이너리가 다른 바이너리와 얼마나 유사한지 판단하는 단계에서, URL 유사도 판단은 URL 전송시 반드시 들어가는 문자를 포함한 문자열을 추린 후, 비교 문자열 집합과의 문자열의 유사도를 판단할 수 있다.
이때, 상기 URL 전송시 반드시 들어가는 문자는 http://, GET, POST일 수 있다.
이상에서, 본 발명은 비교 문자열의 수와 종류에 따라 그 성능이 결정되기 때문에 문자열들을 정제하는 정제과정이 적용됨으로써, 악성코드 탐지 및 분류 시스템의 성능을 향상시킬 수 있는 효과가 있다.
그리고 본 발명은 동일 문자열만을 찾기보다는 문자열들 간의 유사도를 측정함으로써, 유사도 측정에 있어서 악성코드가 가지는 문자열들의 특성을 고려하여 보다 더 정확한 결과를 도출할 수 있는 효과가 있다.
도 1은 본 발명의 실시예에 따른 문자열 비교 기법을 이용한 악성코드 탐지 및 분류 시스템과 그에 대한 프로세스를 나타낸 도면이다.
도 2는 본 발명의 실시예에 따른 문자열 비교 기법을 이용한 악성코드 탐지 및 분류 방법에 대한 순서를 나타낸 도면이다.
도 3은 본 발명의 실시예에 채용되는 문자열 비교 기법을 이용한 악성코드 탐지 및 분류 시스템에 악성코드 Asylum을 입력했을 때의 결과를 나타낸 그래프에 대한 도면이다.
도 2는 본 발명의 실시예에 따른 문자열 비교 기법을 이용한 악성코드 탐지 및 분류 방법에 대한 순서를 나타낸 도면이다.
도 3은 본 발명의 실시예에 채용되는 문자열 비교 기법을 이용한 악성코드 탐지 및 분류 시스템에 악성코드 Asylum을 입력했을 때의 결과를 나타낸 그래프에 대한 도면이다.
본 발명에 따른 문자열 비교 기법을 이용한 악성코드 탐지 및 분류 시스템 및 그 방법에 대한 기술적 구성을 비롯한 작용효과에 관한 사항은 본 발명의 바람직한 실시예가 도시된 도면을 참조하여 아래의 상세한 설명에 의해서 명확하게 이해될 것이다.
문자열 비교 기법을 이용한 악성코드 탐지 및 분류 시스템
도 1을 참조하여 설명하면, 본 발명은 악성코드 탐지 및 분류 시스템(100)에 있어서, 악성코드 바이너리 파일로부터 상기 바이너리 파일에 존재하는 모든 표현되는 문자열을 추려내는 문자열 추출부(110), 상기 문자열 추출부(110)로부터 추출된 문자열 중 악성코드 탐지 및 분류에 방해되는 요소들을 정제하는 문자열 정제부(120) 및 상기 문자열 정제부(120)로부터 정제된 문자열의 비교를 통해서 하나의 바이너리가 다른 바이너리와 얼마나 유사한지 판단하는 문자열 비교부(130)를 포함하여 이루어질 수 있다.
여기서, 상기 문자열 비교 기법을 이용한 악성코드 탐지 및 분류 시스템(100)은 바이너리 파일로부터 추출 가능한 모든 문자열을 뽑아낸 후 각각의 문자열들을 비교함으로써, 두 파일간의 유사도를 판단하는 시스템(100)이다. 예를 들어, 두 파일의 유사도가 매우 높고 하나의 파일이 이미 분석된 악성코드라면 다른 한 파일은 이 악성코드의 변종일 가능성이 높은 것이다. 즉, 기존에 분석 완료된 악성코드를 비교기준으로 삼아 새롭게 입력되는 의심스런 바이너리 파일에 대한 악성여부 판단 및 변종정보를 결정해주는 시스템(100)이다.
이와 같은 시스템(100)은 크게 문자열 추출부(110), 문자열 정제부(120), 문자열 비교부(130)라는 3가지 구성으로 이루어질 수 있다.
상기 문자열 추출부(110)는 바이너리에 존재하는 모든 표현 가능한 문자열을 추려낼 수 있다. 이때, 상기 문자열은 바이너리 데이터가 아스키 혹은 유니코드 표준에 정의된 문자영역 데이터를 연속으로 갖는 데이터로 판단할 수 있다. 일반적으로 문자열은 널(Null)값을 종결자로 가지지만 실행파일 안에 존재하는 문자열의 경우 항상 그런 것만은 아니기 때문에 0x00으로 종료되지 않는 연속된 문자영역 데이터로 고려해야 한다. 최근 이슈가 되는 악성코드는 미국을 제외한 중국, 브라질, 인도 등에서 가장 활발하게 활동하고 있으므로 해당국가 고유의 문자영역을 문자열 추출 기준에 포함시키는 것도 좋은 방법이다.
상기 문자열 추출부(110)로부터 추출된 문자열들은 아래 [표 1]에 도시된 바와 같이 10글자 이하의 모든 문자열, 10글자 이상이지만 의미 없는 문자열, 윈도우즈 DLL파일 및 API명, 프로그램 언어가 지원하는 라이브러리 함수 명, PE 파일 포맷이 기본적으로 가지는 문자열로 분류될 수 있다. 이는 실험을 위해 선택된 100개의 악성코드로부터 추출된 모든 문자열에 대한 수치이다. 이와 같이 분류된 문자열은 다음에서 설명되는 문자열 정제부(120)를 통해 정제되며 이에 대한 설명은 이후 자세히 하기로 한다.
문자열 구분 기준 | 구성률 | 문자열 수 |
10글자 이하의 모든 문자열 | 83% | 86084 |
윈도우즈 DLL파일 및 API함수명 | 4% | 4509 |
프로그램 언너에 종속적인 함수군 | 25 | 2609 |
PE 파일 포맷의 기분 문자열 | 0.09% | 103 |
나머지 문자열 | 10.91% | 10464 |
Total | 100% | 13769 |
상기 문자열 정제부(120)는 추출된 문자열 중 악성코드 탐지 및 분류에 방해되는 요소들을 정제할 수 있다. 바이너리로부터 추출된 문자열은 그 수가 많으면 많을 수록 문자열을 비교하는데 소모되는 시간이 급격히 증가한다. 대량의 악성코드를 자동 분석해야 하는 시스템(100)은 반드시 이러한 성능 문제가 고려되어야 하기 때문에 추출된 문자열의 수를 줄이는 과정은 필수적이다. 또한, 악성코드뿐만 아니라 일반 실행파일에서도 쉽게 찾을 수 있는 문자열의 경우는 악성코드 탐지 및 분류의 적중률을 낮추기 때문에 이러한 문자열 역시 제거되는 것이 바람직하다.
상기 문자열 비교부(130)는 정제과정을 거친 문자열 간에 비교를 통해서 하나의 바이너리가 다른 바이너리와 얼마나 유사한지를 판단하는 과정이다. 기본적으로 상호간에 부합되는 문자열의 수가 얼마나 되는지를 파악함으로써, 두 바이너리 파일간의 유사성을 측정할 수 있다. 추가적으로 부합되는 문자열은 아니지만 각 문자열의 Edit Distance가 임계치 이상이면 서로 동일한 문자열로 취급할 수 있다. 이는 악성코드가 포함하고 있는 URL 문자열 등은 호스트나 변수영역이 수시로 변경되어 재배포되는 특성을 고려한 것이다.
문자열 비교 기법을 이용한 악성코드 탐지 및 분류 방법
도 2 및 도 3을 참조하여 설명하면, 본 발명의 실시예에 따른 문자열 비교 기법을 이용한 악성코드 탐지 및 분류 방법은 앞서 설명한 도 1과 같은 구성으로 이루어진 문자열 비교 기법을 이용한 악성코드 탐지 및 분류 시스템(100)을 기반으로 하는 탐지 및 분류 방법으로 이하 중복되는 설명은 생략한다.
먼저, 문자열 추출부(110)에 의해 악성코드 바이너리 파일로부터 상기 바이너리 파일에 존재하는 모든 표현되는 문자열을 추려낼 수 있다.(S100)
다음으로, 문자열 정제부(120)에 의해 추출된 문자열 중 악성코드 탐지 및 분류에 방해되는 요소들을 정제할 수 있다.(S110) 실험을 위해 선택된 100개의 악성코드로부터 상기 문자열 추출부(110)를 통해 문자열을 추출한 후 그 구성을 분석한 결과, 다음과 같이 악성코드 탐지 및 분류 시스템(100)의 성능에 영향을 미치는 요소들을 분류할 수 있었다. 이는 문자열들은 10글자 이하의 모든 문자열, 10글자 이상이지만 의미 없는 문자열, 윈도우즈 DLL파일 및 API명, 프로그램 언어가 지원하는 라이브러리 함수 명, PE 파일 포맷이 기본적으로 가지는 문자열로 분류되었다.
실행파일로부터 추출된 문자열들은 [표 1]과 같이 10글자 이하의 문자열들이 대부분을 이룬다. 이 문자열 집합은 특수문자와 숫자 등으로 구성된 의미 없는 문자열과 의미는 있지만 너무나 짧은 문자열로 구성되어 있다. 하지만 의미 있는 문자열은 그렇지 않은 문자열에 비해 10%미만의 적은 분포도를 보이기 때문에 무시해도 무방하다. 그 이유는 짧은 문자열일수록 Edit Distance 결과를 신뢰하기 어렵기 때문이다. 또한, 정제조건이 복잡해지는 이유도 있다.
10글자 이상의 문자열 중에서도 반복되는 특수문자와 숫자의 조합으로 구성된 의미없는 문자열이 나타난다. 그 수는 적은 편이지만 정제가 가능하다면 해주는 것이 바람직하다. 한 문자열의 문자 조합이 하기와 같은 문자열 정제수식에 만족하면 해당 문자열을 삭제하도록 한다.
PE(Portable Executable)는 파일이 실행되는 순간 동적 라이브러리를 메모리에 로드시키기 위해 DLL 파일명과 그 파일 안에 정의된 API 함수 명을 포함하고 있다. 따라서, 실행파일로부터 문자열을 추출하면 다량의 DLL 파일명과 Windows API 함수 명이 출력된다. 두 요소는 실행파일에서는 잘 사용되지 않는 희귀한 Windows API 함수를 제외한 모든 DLL 파일명 및 함수명은 제거되어야 한다.
악성코드는 다양한 언어로 작성되어 다양한 컴파일러로 생성될 수 있다. 대표적으로 악성코드는 C나 C++언어로 만들어지지만 역 공학을 어렵게 만들기 위해 델파이나 비쥬얼베이직(VB) 등의 언어로 작성되기도 한다. 이때, 각 언어에서 제공하는 라이브러리 함수를 이용해 악성코드를 작성하게 되면 최종적으로 이 함수들의 이름이 실행파일에 기록되기도 한다. 특히 비쥬얼베이직의 경우 컴포넌트 방식의 프로그래밍 언어이기 때문에 일반 실행파일이나 악성코드에 사용되는 함수들의 중류가 판이하게 다르지 않다. 따라서, '_vba"로 시작되거나 '_adj'등의 접두어를 가진 문자열에 대해서는 삭제를 고려해봐야한다.
여기서, 상기 PE는 Windows 운영체제의 실행파일 포맷이다. 파일이 악성코드이건 아니건 Windows 운영체제에서 수행되려면 PE 구조를 가져야 한다, 따라서, PE 실행파일 포맷이 기본적으로 가지는 문자열은 악성코드 탐지 및 분류에 의미가 없다. PE 헤더의 처음에 존재한 '!This program can not be run in DOS mode' 나 '!This program must be run under Win32'등의 문자열은 제거되어야 한다.
다음으로, 문자열 비교부(130)에 의해 정제된 문자열을 비교할 수 있다.(S120) 이때, 사용되는 문자열 비교 방법은 상기 문자열 비교부(130)는 두 문자열 집합 간에 동일한 문자열 수 측정하는 방법과 상기 문자열 비교부(130)는 두 문자열 집합 간에 일정 임계치 이상의 Edit Distance 값을 보이는 문자열 수를 측정하는 방법이 사용될 수 있다.
변종 악성코드는 PE 실행파일의 리소스 영역 데이터를 직접적으로 수정하지 않는 이상 기존의 문자열 데이터는 그대로 유지된다. 때문에 악성코드 탐지 및 분류에 있어서 동일한 문자열의 존재여부를 점검하는 작업은 필수적이다. 두 문자열 집한 간에 동일한 문자열 수가 많으면 많을수록 상호 유사성은 높아지며 시스템(100)은 이들의 변종으로 판단할 수 있다. 다만 이런 문자열 비교를 통한 악성코드 탐지는 악성코드 제작자가 조금만 시간을 들여도 쉽게 피해갈 수 있다는 단점을 가지고 있다.
하지만, 악성코드가 데이터를 송수신하기 위해 이용하는 URL은 일반적인 문자열과는 다르게 조작이 번거롭다. 호스트와의 동적 통신을 위해 전송되는 파라미터들은 그 이름이나 형태를 변경하기 위해서는 서버 프로그램 자체가 수정되어야 하기 때문이다. 따라서, http://, GET, POST와 같이 URL 전송시 반드시 들어가는 문자를 포함한 문자열만 추린 후, 비교 문자열 집합과의 문자열 유사도를 측정함으로써 좀더 지능적인 변종 악성코드에 대응을 수행할 수 있다.
다음으로, 상기 문자열 비교부(130)에 의해 비교된 문자열 하나의 바이너리가 다른 바이너리와 얼마나 유사한지 판단할 수 있다.(S130) 이때, 사용되는 문자열 유사도 측정 방법은 다음과 같다. 먼저, 두 문자열 간에 Levenshtein distance 값을 계산한 후 그 결과를 기반으로 아래 수식과 같은 변형 Jaro-Winkler 수식으로 유사도를 점수화 할 수 있다. 이 유사도 점수는 최소 0에서 최대 1까지 표현되며, 1에 가까울수록 두 문자열을 유사하다고 판단할 수 있다.
상기와 같은 문자열 비교 기법을 통한 악성코드 탐지 및 분류 시스템(100) 및 그 방법의 성능을 측정하기 위해서 이미 분석 완료된 1만개의 악성코드로부터 100개의 테스트 집단을 구성하였다. 그 중 시스템(100)의 입력값으로 선택된 악성코드는 Backdoor.Win32.Asylum이며 총 5가지 변종을 실험에 포함시켰다. 선택된 Asylum의 분류명은 아래의 [표 2]와 같다.
Classification(Kaspersky) | Submission date | |
Asylum1 | Backdoor.Win32.Asylum.013.c | 2009-12-02 00:44:34(UTC) |
Asylum2 | Backdoor.Win32.Asylum.Web.c | 2009-12-19 16:12:20(UTC) |
Asylum3 | Backdoor.Win32.Asylum.Web.a | 2010-02-15 01:48:20(UTC) |
Asylum4 | Backdoor.Win32.Asylum.012 | 2010-01-18 14:47:00(UTC) |
Asylum5 | Backdoor.Win32.Asylum.013.e | 2009-12-23 02:34:45(UTC) |
[표 2]의 악성코드 분류명은 카스퍼스키 랩(Kaspersky Lab)의 것을 따르고 제출날짜는 바이러스 토탈에 기록된 날짜를 의미한다.
도 3은 문자열 비교 기법을 통한 악성코드 탐지 및 분류 시스템(100)에 순서대로 악성코드 Asylum4, Asylum1, Asylum5을 입력했을 때의 결과 그래프이다. 그래프의 가로축은 실험에 사용된 100개의 악성코드를 의미하며 세로축은 시스템(100)의 출력값(높을수록 유사함)을 뜻한다. 이들 그래프에 따르면 Asylum1, Asylum4, Asylum5는 서로 유사하다는 것을 확인할 수 있다. 반면 Asylum2, Asylum3은 유사하지 않은 것으로 나타났는데 이는 오히려 정확한 결과이다. Asylum2, Asylum3은 [표 2]에서 보는 바와 같이 변종 중에서도 Web이라는 구분 명을 가진 Asylum1, Asylum4, Asylum5와는 다른 형태의 변종이기 때문이다.
이처럼, 본 발명에 따른 문자열 비교 기법을 이용한 악성코드 탐지 및 분류 시스템(100) 및 그 방법은 비교 문자열의 수와 종류에 따라 그 성능이 결정되기 때문에 문자열들을 정제하는 정제과정이 적용됨으로써 악성코드 탐지 및 분류 시스템(100)의 성능을 향상시킬 수 있으며. 동일 문자열만을 찾기보다는 문자열들 간의 유사도를 측정함으로써 유사도 측정에 있어서 악성코드가 가지는 문자열들의 특성을 고려하여 보다 더 정확한 결과를 도출할 수 있다.
100 : 문자열 비교 기법을 이용한 악성코드 탐지 및 분류 시스템
110 : 문자열 추출부 120 : 문자열 정제부
130 : 문자열 비교부
110 : 문자열 추출부 120 : 문자열 정제부
130 : 문자열 비교부
Claims (11)
- 악성코드 탐지 및 분류 시스템에 있어서,
악성코드 바이너리 파일로부터 상기 바이너리 파일에 존재하는 모든 표현되는 문자열을 추려내는 문자열 추출부;
상기 문자열 추출부로부터 추출된 문자열 중 악성코드 탐지 및 분류에 방해되는 요소들을 정제하는 문자열 정제부; 및
상기 문자열 정제부로부터 정제된 문자열의 비교를 통해서 하나의 바이너리가 다른 바이너리와 얼마나 유사한지 판단하는 문자열 비교부;
를 포함하는 것을 특징으로 하는 문자열 비교 기법을 이용한 악성코드 탐지 및 분류 시스템.
- 제 1항에 있어서,
상기 문자열은 바이너리 데이터가 아스키 혹은 유니코드 표준에 정의된 문자영역 데이터를 연속으로 갖는 데이터인 것을 특징으로 하는 문자열 비교 기법을 이용한 악성코드 탐지 및 분류 시스템.
- 제 1항에 있어서,
상기 문자열 추출부로부터 추출된 문자열들은 10글자 이하의 모든 문자열, 10글자 이상이지만 의미 없는 문자열, 윈도우즈 DLL파일 및 API명, 프로그램 언어가 지원하는 라이브러리 함수 명, PE 파일 포맷이 기본적으로 가지는 문자열로 분류되는 것을 특징으로 하는 것을 특징으로 하는 문자열 비교 기법을 이용한 악성코드 탐지 및 분류 시스템.
- 악성코드 탐지 및 분류 방법에 있어서,
문자열 추출부에 의해 악성코드 바이너리 파일로부터 상기 바이너리 파일에 존재하는 모든 표현되는 문자열을 추려내는 단계;
문자열 정제부에 의해 추출된 문자열 중 악성코드 탐지 및 분류에 방해되는 요소들을 정제하는 단계;
문자열 비교부에 의해 정제된 문자열을 비교하는 단계; 및
상기 문자열 비교부에 의해 비교된 문자열 하나의 바이너리가 다른 바이너리와 얼마나 유사한지 판단하는 단계;
를 포함하는 것을 특징으로 하는 문자열 비교 기법을 이용한 악성코드 탐지 및 분류 방법.
- 제 4항에 있어서,
상기 문자열 비교부에 의해 정제된 문자열을 비교하는 단계에서,
상기 문자열 비교부는 두 문자열 집합 간에 동일한 문자열 수 측정하는 방법으로 문자열을 비교하는 것을 특징으로 하는 문자열 비교 기법을 이용한 악성코드 탐지 및 분류 방법.
- 제 4항에 있어서,
상기 문자열 비교부에 의해 정제된 문자열을 비교하는 단계에서,
상기 문자열 비교부는 두 문자열 집합 간에 일정 임계치 이상의 Edit Distance 값을 보이는 문자열 수를 측정하는 방법으로 문자열을 비교하는 것을 특징으로 하는 문자열 비교 기법을 이용한 악성코드 탐지 및 분류 방법.
- 제 8항에 있어서,
상기 유사도 점수는 최소 0에서 최대 1까지 표현되며, 1에 가까울수록 두 문자열을 유사하다고 판단하는 것을 특징으로 하는 문자열 비교 기법을 이용한 악성코드 탐지 및 분류 방법.
- 제 4항에 있어서,
상기 문자열 비교부에 의해 비교된 문자열 하나의 바이너리가 다른 바이너리와 얼마나 유사한지 판단하는 단계에서,
URL 유사도 판단은 URL 전송시 반드시 들어가는 문자를 포함한 문자열을 추린 후, 비교 문자열 집합과의 문자열의 유사도를 판단하는 것을 특징으로 하는 문자열 비교 기법을 이용한 악성코드 탐지 및 분류 방법.
- 제 10항에 있어서,
상기 URL 전송시 반드시 들어가는 문자는 http://, GET, POST인 것을 특징으로 하는 문자열 비교 기법을 이용한 악성코드 탐지 및 분류 방법.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020100131401A KR101162051B1 (ko) | 2010-12-21 | 2010-12-21 | 문자열 비교 기법을 이용한 악성코드 탐지 및 분류 시스템 및 그 방법 |
US13/282,978 US20120159625A1 (en) | 2010-12-21 | 2011-10-27 | Malicious code detection and classification system using string comparison and method thereof |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020100131401A KR101162051B1 (ko) | 2010-12-21 | 2010-12-21 | 문자열 비교 기법을 이용한 악성코드 탐지 및 분류 시스템 및 그 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20120070016A KR20120070016A (ko) | 2012-06-29 |
KR101162051B1 true KR101162051B1 (ko) | 2012-07-03 |
Family
ID=46236337
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020100131401A KR101162051B1 (ko) | 2010-12-21 | 2010-12-21 | 문자열 비교 기법을 이용한 악성코드 탐지 및 분류 시스템 및 그 방법 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20120159625A1 (ko) |
KR (1) | KR101162051B1 (ko) |
Families Citing this family (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102930206B (zh) * | 2011-08-09 | 2015-02-25 | 腾讯科技(深圳)有限公司 | 病毒文件的聚类划分处理方法和装置 |
KR101602993B1 (ko) * | 2012-08-23 | 2016-03-11 | 엘에스산전 주식회사 | 프로그래밍 언어 오류 검색 장치 |
CN102982291B (zh) * | 2012-11-05 | 2015-11-25 | 北京奇虎科技有限公司 | 可信文件数字签名的获取方法及装置 |
KR20140061654A (ko) * | 2012-11-14 | 2014-05-22 | 한국인터넷진흥원 | 고위험 악성코드 식별 시스템 |
KR101579347B1 (ko) * | 2013-01-02 | 2015-12-22 | 단국대학교 산학협력단 | 실행 파일의 특징 정보를 이용한 소프트웨어 유사도 탐지 방법 및 장치 |
KR101432429B1 (ko) * | 2013-02-26 | 2014-08-22 | 한양대학교 산학협력단 | 시각적 데이터 생성을 이용한 악성 코드 분석 시스템과 그 방법 |
RU2541123C1 (ru) | 2013-06-06 | 2015-02-10 | Закрытое акционерное общество "Лаборатория Касперского" | Система и способ определения рейтинга электронных сообщений для борьбы со спамом |
RU2541120C2 (ru) * | 2013-06-06 | 2015-02-10 | Закрытое акционерное общество "Лаборатория Касперского" | Система и способ обнаружения вредоносных исполняемых файлов на основании сходства ресурсов исполняемых файлов |
KR101508577B1 (ko) * | 2013-10-08 | 2015-04-07 | 고려대학교 산학협력단 | 악성코드 탐지장치 및 방법 |
US9286338B2 (en) | 2013-12-03 | 2016-03-15 | International Business Machines Corporation | Indexing content and source code of a software application |
US9665716B2 (en) * | 2014-12-23 | 2017-05-30 | Mcafee, Inc. | Discovery of malicious strings |
US10089473B2 (en) * | 2014-12-24 | 2018-10-02 | Sap Se | Software nomenclature system for security vulnerability management |
KR101645868B1 (ko) * | 2015-04-07 | 2016-08-04 | 주식회사 퓨쳐시스템 | 어플리케이션 인식을 위한 룰 생성 방법 및 어플리케이션 인식을 위한 룰 생성 장치 |
CN105975857A (zh) | 2015-11-17 | 2016-09-28 | 武汉安天信息技术有限责任公司 | 基于深度学习方法推断恶意代码规则的方法及*** |
US20170185667A1 (en) * | 2015-12-24 | 2017-06-29 | Mcafee, Inc. | Content classification |
US10289843B2 (en) * | 2016-04-06 | 2019-05-14 | Nec Corporation | Extraction and comparison of hybrid program binary features |
US11120106B2 (en) | 2016-07-30 | 2021-09-14 | Endgame, Inc. | Hardware—assisted system and method for detecting and analyzing system calls made to an operating system kernel |
US11151247B2 (en) | 2017-07-13 | 2021-10-19 | Endgame, Inc. | System and method for detecting malware injected into memory of a computing device |
US11151251B2 (en) * | 2017-07-13 | 2021-10-19 | Endgame, Inc. | System and method for validating in-memory integrity of executable files to identify malicious activity |
US11580219B2 (en) * | 2018-01-25 | 2023-02-14 | Mcafee, Llc | System and method for malware signature generation |
US10824723B2 (en) * | 2018-09-26 | 2020-11-03 | Mcafee, Llc | Identification of malware |
US10762214B1 (en) | 2018-11-05 | 2020-09-01 | Harbor Labs Llc | System and method for extracting information from binary files for vulnerability database queries |
WO2020257973A1 (en) * | 2019-06-24 | 2020-12-30 | Citrix Systems, Inc. | Detecting hard-coded strings in source code |
KR102246405B1 (ko) * | 2019-07-25 | 2021-04-30 | 호서대학교 산학협력단 | Tf-idf 기반 벡터 변환 및 데이터 분석 장치 및 방법 |
CN110837642B (zh) * | 2019-11-14 | 2023-10-13 | 腾讯科技(深圳)有限公司 | 恶意程序分类方法、装置、设备及存储介质 |
KR102437481B1 (ko) * | 2021-11-26 | 2022-08-29 | 한국인터넷진흥원 | 5g 단독모드 네트워크 침입 탐지 시스템 및 방법 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100968267B1 (ko) | 2008-06-13 | 2010-07-06 | 주식회사 안철수연구소 | 컴파일러 구분에 의한 악성코드 진단장치 및 방법 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5675711A (en) * | 1994-05-13 | 1997-10-07 | International Business Machines Corporation | Adaptive statistical regression and classification of data strings, with application to the generic detection of computer viruses |
US20060242686A1 (en) * | 2003-02-21 | 2006-10-26 | Kenji Toda | Virus check device and system |
US7739737B2 (en) * | 2003-07-29 | 2010-06-15 | Wisconsin Alumni Research Foundation | Method and apparatus to detect malicious software |
WO2005052767A1 (en) * | 2003-11-05 | 2005-06-09 | Qinetiq Limited | Detection of items stored in a computer system |
US20060015630A1 (en) * | 2003-11-12 | 2006-01-19 | The Trustees Of Columbia University In The City Of New York | Apparatus method and medium for identifying files using n-gram distribution of data |
US7603715B2 (en) * | 2004-07-21 | 2009-10-13 | Microsoft Corporation | Containment of worms |
US20060075481A1 (en) * | 2004-09-28 | 2006-04-06 | Ross Alan D | System, method and device for intrusion prevention |
US20060101516A1 (en) * | 2004-10-12 | 2006-05-11 | Sushanthan Sudaharan | Honeynet farms as an early warning system for production networks |
US20060230454A1 (en) * | 2005-04-07 | 2006-10-12 | Achanta Phani G V | Fast protection of a computer's base system from malicious software using system-wide skins with OS-level sandboxing |
JP4687382B2 (ja) * | 2005-10-25 | 2011-05-25 | 株式会社日立製作所 | ストレージシステムにおけるウイルスチェック方法 |
-
2010
- 2010-12-21 KR KR1020100131401A patent/KR101162051B1/ko not_active IP Right Cessation
-
2011
- 2011-10-27 US US13/282,978 patent/US20120159625A1/en not_active Abandoned
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100968267B1 (ko) | 2008-06-13 | 2010-07-06 | 주식회사 안철수연구소 | 컴파일러 구분에 의한 악성코드 진단장치 및 방법 |
Non-Patent Citations (1)
Title |
---|
고려대학교 석사학위논문(2008.02) |
Also Published As
Publication number | Publication date |
---|---|
US20120159625A1 (en) | 2012-06-21 |
KR20120070016A (ko) | 2012-06-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101162051B1 (ko) | 문자열 비교 기법을 이용한 악성코드 탐지 및 분류 시스템 및 그 방법 | |
US9621571B2 (en) | Apparatus and method for searching for similar malicious code based on malicious code feature information | |
RU2580036C2 (ru) | Система и способ создания гибкой свертки для обнаружения вредоносных программ | |
CN103365699B (zh) | 基于apk的***api和运行时字符串的提取方法及*** | |
Gandotra et al. | Zero-day malware detection | |
US10789366B2 (en) | Security information management system and security information management method | |
CN105956180B (zh) | 一种敏感词过滤方法 | |
CN107368856B (zh) | 恶意软件的聚类方法及装置、计算机装置及可读存储介质 | |
CN111639337B (zh) | 一种面向海量Windows软件的未知恶意代码检测方法及*** | |
WO2015190446A1 (ja) | マルウェア判定器、マルウェア判定システム、マルウェア判定方法、プログラム | |
WO2018159010A1 (ja) | 選択装置、選択方法及び選択プログラム | |
KR102317833B1 (ko) | 악성 코드 탐지 모델 학습 방법 및 이를 이용한 탐지 방법 | |
KR20160082644A (ko) | 코드 블록 구분을 통한 악성 코드 탐지 방법 및 장치 | |
CN105718795B (zh) | Linux下基于特征码的恶意代码取证方法及*** | |
CN105224600B (zh) | 一种样本相似度的检测方法及装置 | |
CN106407809A (zh) | 一种Linux平台恶意软件检测方法 | |
CN103177215A (zh) | 基于软件控制流特征的计算机恶意软件检测新方法 | |
CN107463844B (zh) | Web木马检测方法及*** | |
Li et al. | FEPDF: a robust feature extractor for malicious PDF detection | |
CN101751530A (zh) | 检测漏洞攻击行为的方法及设备 | |
EP2977928B1 (en) | Malicious code detection | |
KR101520671B1 (ko) | 실행코드 유사도 분석 시스템 및 방법 | |
Lee et al. | A study of malware detection and classification by comparing extracted strings | |
KR20180133726A (ko) | 특징 벡터를 이용하여 데이터를 분류하는 장치 및 방법 | |
Li et al. | MDBA: Detecting malware based on bytes n-gram with association mining |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20150617 Year of fee payment: 4 |
|
LAPS | Lapse due to unpaid annual fee |