KR20160082644A - 코드 블록 구분을 통한 악성 코드 탐지 방법 및 장치 - Google Patents
코드 블록 구분을 통한 악성 코드 탐지 방법 및 장치 Download PDFInfo
- Publication number
- KR20160082644A KR20160082644A KR1020140192799A KR20140192799A KR20160082644A KR 20160082644 A KR20160082644 A KR 20160082644A KR 1020140192799 A KR1020140192799 A KR 1020140192799A KR 20140192799 A KR20140192799 A KR 20140192799A KR 20160082644 A KR20160082644 A KR 20160082644A
- Authority
- KR
- South Korea
- Prior art keywords
- code
- malicious
- execution
- malicious code
- point
- 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
- G06F21/563—Static 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)
- Debugging And Monitoring (AREA)
Abstract
본 발명은 악성 코드 탐지 방법 및 장치에 관한 것으로, 보다 구체적으로 코드 블록 구분을 통하여 악성 코드를 탐지하는 방법 및 장치에 관한 것이다. 본 발명의 일 실시예에 따른 악성 코드 탐지 방법은, 정보 처리 장치가 데이터베이스에 저장된 기초 악성 코드에 관한 정보를 이용하여 악성 코드를 탐지하는 방법으로서, 실행 코드를 적어도 하나의 코드 블록으로 구분하는 단계; 상기 코드 블록으로부터 특징값을 추출하는 단계; 상기 특징값을 기반으로 상기 기초 악성 코드에 대한 상기 실행 코드의 유사도를 분석하는 단계; 및 상기 유사도에 따라 상기 실행 코드를 상기 기초 악성 코드에 속하는 악성 코드로 분류하는 단계;를 포함할 수 있다.
Description
본 발명은 악성 코드 탐지 방법 및 장치에 관한 것으로, 보다 구체적으로 코드 블록 구분을 통하여 악성 코드를 탐지하는 방법 및 장치에 관한 것이다.
최근 사용자 시스템에 침투해 정보를 유출하거나 정상적인 동작을 지연 또는 방해하는 등 악의적인 목적을 위해 작성된 악성 코드가 해커나 악성 코드 제작자들에 의해 보다 빠르게 대량으로 생성 및 유포되고 있다. 이들은 기존의 악성 코드를 수정하거나 모듈을 재사용하는 등 다양한 방법을 통해 악성 코드의 변종들을 제작하여 유포하고 있으며, 이에 따라 인터넷에서 발견되는 악성 코드의 개체 수는 지속적으로 증가하고 있는 추세이다.
기존의 안티-바이러스 소프트웨어는 악성 코드 샘플 분석을 통해 획득한 시그니처를 기반으로 탐지 엔진을 업데이트함으로써 악성 코드를 탐지하고 있다. 그러나, 악성 코드를 분석하여 안티-바이러스 엔진을 업데이트하기 위해서는 복잡한 단계를 거쳐야 한다.
대부분의 악성 코드 분석 전문가가 다양한 분석 도구를 이용하여 악성 코드 샘플에 대한 리버스 엔지니어링을 통해 정적 분석을 수행하고, 악성 코드 내에 포함되어 있는 특정 문자열이나 패턴을 발견함으로써 해당 악성 코드를 탐지하기 위한 시그니처를 생성한다. 그러나, 이러한 정적 분석 과정은 악성 코드에 포함된 함수 등을 분석해야 하는 경우가 대부분이고, 악성 코드의 루틴에 따른 철저한 분석이 요구되기 때문에 분석에 많은 시간이 소요된다.
과거에 비해 최근 유포되는 악성 코드의 종류 및 변종이 급증하고 있어 보다 신속한 분석과 업데이트가 요구되고 있다. 또한, 최근 유포되는 악성 코드는 패킹, 난독화 등 시그니처 기반의 안티-바이러스 소프트웨어에서 탐지를 회피하기 위한 기술들이 적용되고 있는 실정이다.
본 발명의 실시예는 기존 코드를 재사용하여 생성된 변종 악성 코드를 정확하게 탐지하고 분류할 수 있는 악성 코드 탐지 방법 및 장치를 제공하는 것을 목적으로 한다.
본 발명의 일 실시예에 따른 악성 코드 탐지 방법은, 정보 처리 장치가 데이터베이스에 저장된 기초 악성 코드에 관한 정보를 이용하여 악성 코드를 탐지하는 방법으로서, 실행 코드를 적어도 하나의 코드 블록으로 구분하는 단계; 상기 코드 블록으로부터 특징값을 추출하는 단계; 상기 특징값을 기반으로 상기 기초 악성 코드에 대한 상기 실행 코드의 유사도를 분석하는 단계; 및 상기 유사도에 따라 상기 실행 코드를 상기 기초 악성 코드에 속하는 악성 코드로 분류하는 단계;를 포함할 수 있다.
상기 실행 코드는 어셈블리 언어로 작성될 수 있다.
상기 실행 코드를 코드 블록으로 구분하는 단계는: 상기 실행 코드에서 시작점 및 끝점을 지정하는 단계; 및 상기 시작점 및 상기 끝점을 경계로 상기 코드 블록을 정의하는 단계;를 포함할 수 있다.
상기 실행 코드에서 시작점 및 끝점을 지정하는 단계는: 상기 실행 코드 내 "push" 명령어 및 "move" 명령어 중 적어도 하나를 검출하여 상기 시작점으로 선언하는 단계; 및 상기 실행 코드 내 "ret" 명령어 및 "align" 명령어 중 적어도 하나를 검출하여 상기 끝점으로 선언하는 단계;를 포함할 수 있다.
상기 실행 코드에서 시작점 및 끝점을 지정하는 단계는: 상기 실행 코드 내 분기 명령어를 검출하는 단계; 및 상기 분기 명령어가 가리키는 지점을 상기 시작점으로 선언하는 단계;를 더 포함할 수 있다.
상기 분기 명령어는 "call", "jmp", "jnz", "jz" 및 "jne" 중 적어도 하나를 포함할 수 있다.
상기 실행 코드를 코드 블록으로 구분하는 단계는: 상기 실행 코드에서 상기 시작점과 상기 끝점 사이에 분기 명령어가 포함된 경우, 상기 시작점부터 상기 끝점까지의 코드로 구성된 코드 블록을 상기 분기 명령어가 나타난 지점을 경계로 분할하는 단계를 더 포함할 수 있다.
상기 코드 블록을 분할하는 단계는: 상기 시작점부터 상기 끝점까지의 코드로 구성된 코드 블록을, 상기 시작점부터 상기 분기 명령어가 나타난 지점까지의 코드로 구성된 코드 블록과, 상기 분기 명령어가 나타난 지점부터 상기 끝점까지의 코드로 구성된 코드 블록으로 분할하는 단계를 포함할 수 있다.
상기 코드 블록의 특징값을 획득하는 단계는: 상기 코드 블록 내 코드의 해쉬값을 획득하는 단계를 포함할 수 있다.
상기 유사도를 분석하는 단계는: 상기 기초 악성 코드의 특징값과 상기 실행 코드의 특징값을 비교하여 일치 여부를 판별하는 단계를 포함할 수 있다.
본 발명의 일 실시예에 따른 악성 코드 탐지 장치는, 실행 코드를 적어도 하나의 코드 블록으로 구분하는 코드 블록 구분부; 상기 코드 블록으로부터 특징값을 추출하는 특징값 추출부; 상기 특징값을 기반으로 기초 악성 코드에 대한 상기 실행 코드의 유사도를 분석하는 유사도 분석부; 및 상기 유사도에 따라 상기 실행 코드를 상기 기초 악성 코드에 속하는 악성 코드로 분류하는 악성 코드 분류부;를 포함할 수 있다.
본 발명의 실시예에 따른 악성 코드 탐지 방법은 컴퓨터로 실행될 수 있는 프로그램으로 구현되어, 컴퓨터로 읽을 수 있는 기록매체에 기록될 수 있다.
본 발명의 실시예에 따른 악성 코드 탐지 방법은 컴퓨터와 결합되어 실행하기 위하여 매체에 저장된 컴퓨터 프로그램으로 구현될 수 있다.
본 발명의 실시예에 따르면, 기존 코드를 재사용하여 생성된 변종 악성 코드를 정확하게 탐지하고 분류할 수 있다.
도 1은 본 발명의 일 실시예에 따른 악성 코드 탐지 장치의 예시적인 블록도이다.
도 2는 본 발명의 일 실시예에 따른 악성 코드 탐지 방법의 예시적인 흐름도이다.
도 3은 본 발명의 일 실시예에 따라 실행 코드를 코드 블록으로 구분하는 과정을 설명하기 위한 예시적인 도면이다.
도 4는 본 발명의 일 실시예에 따라 유사도를 분석하여 악성 코드를 탐지하는 과정을 설명하기 위한 예시적인 도면이다.
도 2는 본 발명의 일 실시예에 따른 악성 코드 탐지 방법의 예시적인 흐름도이다.
도 3은 본 발명의 일 실시예에 따라 실행 코드를 코드 블록으로 구분하는 과정을 설명하기 위한 예시적인 도면이다.
도 4는 본 발명의 일 실시예에 따라 유사도를 분석하여 악성 코드를 탐지하는 과정을 설명하기 위한 예시적인 도면이다.
본 발명의 실시예는 데이터베이스에 저장된 기초 악성 코드에 관한 정보를 이용하여 기초 악성 코드와 검사 대상인 실행 코드 간의 유사도를 분석함으로써 실행 코드가 기초 악성 코드에 속하는 변종 악성 코드인지 여부를 검사한다. 이 때, 본 발명의 실시예는 단순히 실행 코드로부터 함수를 추출하여 함수를 기반으로 기초 악성 코드와의 유사도를 분석하는 대신, 실행 코드를 적어도 하나의 코드 블록으로 구분한 뒤, 이 코드 블록 단위로 기초 악성 코드와 유사도를 분석하여 악성 코드를 탐지할 수 있다.
그 결과, 본 발명의 실시예에 따르면, 기존의 함수 기반 악성 코드 탐지 프로그램이 제대로 탐지하지 못하던 코드, 예컨대 함수 형태가 아닌 어셈블리어로 직접 작성된 코드 또는 함수 형태지만 호출되지 않는 부분을 갖는 코드에 대해서도 악성 코드 여부를 정확하게 판별할 수 있다.
이하, 본 명세서에 첨부된 도면을 참조하여 본 발명의 실시예를 상세하게 설명한다.
도 1은 본 발명의 일 실시예에 따른 악성 코드 탐지 장치(10)의 예시적인 블록도이다.
본 발명의 일 실시예에 따른 악성 코드 탐지 장치(10)는 악성 코드를 탐지하기 위한 프로그램을 실행하여 검사 대상인 실행 코드가 악성 코드에 해당하는지 여부를 판별할 수 있다. 상기 악성 코드 탐지 장치(10)는 컴퓨터와 같은 정보 처리 장치로서, HDD, SSD 등과 같은 저장 장치로부터 악성 코드 탐지를 위한 프로그램을 불러와 실행할 수 있는 프로세서, 예컨대 CPU 등을 포함할 수 있다.
도 1에 도시된 바와 같이, 상기 악성 코드 탐지 장치(10)는 코드 블록 구분부(110), 특징값 추출부(120), 유사도 분석부(130) 및 악성 코드 분류부(140)를 포함할 수 있다.
상기 코드 블록 구분부(110)는 실행 코드를 적어도 하나의 코드 블록으로 구분할 수 있다. 상기 특징값 추출부(120)는 상기 코드 블록으로부터 특징값을 추출할 수 있다. 상기 유사도 분석부(130)는 상기 특징값을 기반으로 기초 악성 코드에 대한 상기 실행 코드의 유사도를 분석할 수 있다. 상기 악성 코드 분류부(140)는 분석 결과인 상기 유사도에 따라 상기 실행 코드를 상기 기초 악성 코드에 속하는 악성 코드로 분류할 수 있다.
상기 유사도 분석부(130)는 유사도 분석 과정에서 데이터베이스(150)에 저장되어 있는 기초 악성 코드에 관한 정보를 불러와 해당 정보를 이용하여 상기 실행 코드와의 유사도를 분석할 수 있다.
도 2는 본 발명의 일 실시예에 따른 악성 코드 탐지 방법(20)의 예시적인 흐름도이다.
상기 악성 코드 탐지 방법(20)은 본 발명의 실시예에 따른 악성 코드 탐지 장치(10)에 의해 수행될 수 있다.
도 2에 도시된 바와 같이, 상기 악성 코드 탐지 방법(20)은 정보 처리 장치가 데이터베이스(150)에 저장된 기초 악성 코드에 관한 정보를 이용하여 악성 코드를 탐지하는 방법으로서, 실행 코드를 적어도 하나의 코드 블록으로 구분하는 단계(S210), 상기 코드 블록으로부터 특징값을 추출하는 단계(S220), 상기 특징값을 기반으로 상기 기초 악성 코드에 대한 상기 실행 코드의 유사도를 분석하는 단계(S230), 및 상기 유사도에 따라 상기 실행 코드를 상기 기초 악성 코드에 속하는 악성 코드로 분류하는 단계(S240)를 포함할 수 있다.
일 실시예에 따르면, 상기 실행 코드는 어셈블리 언어로 작성된 코드일 수 있다. 예를 들어, 상기 실행 코드는 Windows의 x86 플랫폼으로 작성된 어셈블리 코드일 수 있으나, 상기 실행 코드의 포맷은 이에 제한되지 않는다.
본 발명의 실시예는 실행 코드가 악성 코드에 해당하는지 여부를 검사하기 위한 사전 단계로 상기 실행 코드를 적어도 하나의 코드 블록으로 구분할 수 있다.
도 3은 본 발명의 일 실시예에 따라 실행 코드를 코드 블록으로 구분하는 과정을 설명하기 위한 예시적인 도면이다.
본 발명의 일 실시예에 따르면, 상기 실행 코드를 적어도 하나의 코드 블록으로 구분하는 단계(S210)는, 상기 실행 코드에서 시작점 및 끝점을 지정하는 단계, 및 상기 시작점 및 상기 끝점을 경계로 상기 코드 블록을 정의하는 단계를 포함할 수 있다.
예를 들어, 도 3을 참조하면, 상기 실행 코드에서 시작점 및 끝점을 지정하는 단계는, 상기 실행 코드 내에서 "push" 명령어 및 "move" 명령어 중 적어도 하나를 검출하여 시작점(①, ③, ⑥)으로 선언하는 단계, 및 상기 실행 코드 내에서 "ret" 명령어 및 "align" 명령어 중 적어도 하나를 검출하여 끝점(②, ⑤, ⑧)으로 선언하는 단계를 포함할 수 있다.
구체적으로, 상기 실행 코드에서 시작점으로 선언되는 지점은 상기 실행 코드 내 "push ebp" 또는 "move ebp, esp"가 표시되는 라인일 수 있으며, "push ebp"와 "move ebp, esp"가 연속으로 표시되는 경우에는 두 라인들 중 먼저 나타나는 라인이 시작점으로 선언될 수 있다.
마찬가지로, 상기 실행 코드에서 끝점으로 선언되는 지점은 상기 실행 코드 내 "ret" 또는 "align"이 표시되는 라인일 수 있으며, "ret"와 "align"이 연속으로 표시되는 경우에는 두 라인들 중 먼저 나타나는 라인이 끝점으로 선언될 수 있다.
추가적으로, 상기 실행 코드에서 시작점 및 끝점을 지정하는 단계는, 상기 실행 코드 내에서 분기 명령어를 검출하는 단계, 및 상기 분기 명령어가 가리키는 지점을 상기 시작점으로 선언하는 단계를 더 포함할 수 있다.
이 실시예에 따르면, 상기 분기 명령어는 실행 코드 내 다른 영역의 코드를 호출하기 위한 명령어로서, 예를 들어 "call", "jmp", "jnz", "jz" 및 "jne" 중 적어도 하나를 포함할 수 있다.
이 경우, 상기 분기 명령어가 가리키는 지점, 즉 분기 명령어 다음에 표시되는 어드레스 값에 해당하는 지점이 또 다른 시작점으로 선언될 수 있다.
예를 들어, 도 3과 같이 실행 코드의 B 부분에 "call C"라는 명령어가 포함되어 있는 경우, "call"에 의해 호출되는 C 부분이 또 다른 시작점으로 선언될 수 있다. 마찬가지로, 도 3과 같이 실행 코드의 D 부분에 "jmp E"라는 명령어가 포함되어 있는 경우, "jmp"에 의해 지정되는 E 부분이 또 다른 시작점으로 선언될 수 있다.
본 발명의 실시예에 따르면, 상기 실행 코드를 코드 블록으로 구분하는 단계(S210)는, 상기 실행 코드에서 시작점과 끝점 사이에 분기 명령어가 포함된 경우, 상기 시작점부터 상기 끝점까지의 코드로 구성된 코드 블록을 상기 분기 명령어가 나타난 지점을 경계로 분할하는 단계를 더 포함할 수 있다.
예를 들어, 도 3에 도시된 바와 같이, 상기 실행 코드의 B 부분에 포함된 시작점인 "push ebp"(③)와 끝점인 "ret"(⑤) 사이에 분기 명령어인 "call C"(④)가 포함된 경우, 상기 시작점(③)부터 상기 끝점(⑤)까지의 코드로 구성된 코드 블록(즉, 실행 코드의 B 부분)을 상기 분기 명령어가 나타난 지점(④)을 경계로 소분할할 수 있다.
구체적으로, 상기 코드 블록을 분할하는 단계는, 상기 시작점(③)부터 상기 끝점(⑤)까지의 코드로 구성된 코드 블록(실행 코드의 B 부분)을, 상기 시작점(③)부터 상기 분기 명령어가 나타난 지점(④)까지의 코드로 구성된 코드 블록 2-1과, 상기 분기 명령어가 나타난 지점(④)부터 상기 끝점(⑤)까지의 코드로 구성된 코드 블록 2-2으로 분할하는 단계를 포함할 수 있다.
마찬가지로, 도 3과 같이 상기 실행 코드의 D 부분에 포함된 시작점인 "push ebp"(⑥)와 끝점인 "align"(⑧) 사이에 분기 명령어인 "jmp E"(⑦)가 포함된 경우, 상기 시작점(⑥)부터 상기 끝점(⑧)까지의 코드로 구성된 코드 블록(실행 코드의 D 부분)을, 상기 시작점(⑥)부터 상기 분기 명령어가 나타난 지점(⑦)까지의 코드로 구성된 코드 블록 4-1과, 상기 분기 명령어가 나타난 지점(⑦)부터 상기 끝점(⑧)까지의 코드로 구성된 코드 블록 4-2로 분할하는 단계를 포함할 수 있다.
이와 같이, 본 발명의 실시예에 따른 악성 코드 탐지 장치 및 방법은 실행 코드가 악성 코드인지 여부를 검사하기 위한 사전 단계로 상기 실행 코드를 코드 블록으로 분할할 수 있다.
그러고 나서, 상기 악성 코드 탐지 장치 및 방법은 상기 실행 코드를 적어도 하나의 코드 블록으로 구분한 뒤, 상기 코드 블록으로부터 해당 코드 블록의 특징값을 추출할 수 있다.
본 발명의 일 실시예에 따르면, 상기 특징값은 상기 코드 블록 내 코드의 해쉬값을 포함할 수 있다.
이를 위해, 상기 특징값 추출부(120)는 상기 실행 코드의 각 코드 블록에 포함된 코드를 추출한 뒤, 상기 추출된 코드를 기초로 특징값(예컨대, 해쉬값)을 획득할 수 있다.
다른 실시예에 따르면, 상기 특징값 획득부(120)는 상기 추출된 코드의 변수 중에서 레지스터에 관한 변수만을 남겨두고 나머지 변수들을 삭제한 뒤, 해당 코드의 해쉬값을 특징값으로 획득할 수도 있다. 여기서, 상기 레지스터에 관한 변수는 "eax", "ecx", "ebp", "ebx, "edi"와 같은 변수일 수 있다.
실시예에 따라, 상기 특징값 획득부(120)는 각각의 코드 블록으로부터 얻은 해쉬값을 논리 연산하여 상기 실행 코드의 특징값을 획득할 수 있다. 즉, 이 실시예에 따르면, 상기 특징값 획득부(120)는 상기 실행 코드에 포함된 각 코드 블록의 해쉬값을 논리 연산함으로써 최종적으로 상기 실행 코드로부터 하나의 해쉬값을 특징값으로 추출할 수 있다.
이 경우, 상기 특징값 획득부(120)는 각 코드 블록에 대한 해쉬값을 AND 연산하거나 XOR 연산하여 하나의 해쉬값을 상기 실행 코드의 특징값으로 얻을 수 있다.
다른 실시예에 따르면, 상기 특징값은 상기 코드 블록에 포함된 명령어의 종류 및 상기 코드 블록 내 해당 명령어의 출현 빈도를 포함할 수 있다. 실시예에 따라, 상기 특징값은 상기 코드 블록에 포함된 변수의 종류 및 상기 코드 블록 내 해당 변수의 출현 빈도를 포함할 수도 있다.
이와 같이 각 코드 블록으로부터 특징값이 획득되면, 상기 유사도 분석부(130)는 상기 특징값을 상기 데이터베이스(150)에 저장된 기초 악성 코드에 대한 특징값과 비교하여 그 일치 여부를 판별함으로써 상기 기초 악성 코드에 대한 상기 실행 코드의 유사도를 분석할 수 있다.
상기 데이터베이스(150)는 기초 악성 코드에 관한 정보, 예컨대 특징값을 저장하고 있으며, 상기 유사도 분석부(130)는 상기 데이터베이스(150)로부터 상기 기초 악성 코드의 특징값을 불러와 상기 실행 코드의 유사도 분석에 사용할 수 있다.
그러고 나서, 상기 악성 코드 분류부(140)는 상기 유사도에 따라 실행 코드를 기초 악성 코드에 속하는 악성 코드로 분류할 수 있다. 예를 들어, 상기 악성 코드 분류부(140)는 실행 코드의 상기 기초 악성 코드에 대한 유사도가 기 설정된 기준치 이상인 경우, 상기 실행 코드를 해당 기초 악성 코드에 속하는 변종 악성 코드로 결정할 수 있다.
도 4는 본 발명의 일 실시예에 따라 유사도를 분석하여 악성 코드를 탐지하는 과정을 설명하기 위한 예시적인 도면이다.
도 4를 참조하면, 실행 코드 C와 비교되는 기초 악성 코드는 악성 코드 A와 악성 코드 B이며, 악성 코드 A로부터 얻은 코드 블록 테이블(tbl1)에는 복수의 코드 블록들(A-1, A-2, A-3, A-4)이 포함되어 있고, 악성 코드 B로부터 얻은 코드 블록 테이블(tbl2)에는 복수의 코드 블록들(B-1, B-2, B-3, B-4)이 포함되어 있다.
그리고, 데이터베이스에는 악성 코드 A와 악성 코드 B로부터 얻은 각 코드 블록의 특징값이 저장되어 있다.
본 발명의 실시예에 따르면, 상기 실행 코드 C가 악성 코드인지 여부를 검사하기 위해, 먼저 상기 코드 블록 구분부(110)가 상기 실행 코드 C를 적어도 하나의 코드 블록으로 구분한다. 그러고 나서, 상기 특징값 추출부(120)는 상기 실행 코드 C의 각 코드 블록으로부터 특징값(특징값 C-1, 특징값 C-2, 특징값 C-3, 특징값 C-4)을 획득할 수 있다.
그러고 나서, 상기 유사도 분석부(130)는 추출된 특징값과 데이터베이스(150)에 저장된 기초 악성 코드들의 특징값을 비교하여 상기 실행 코드 C의 코드 블록과 유사한 기초 코드 블록을 결정할 수 있다.
도 4에 도시된 분석 테이블(tbl4)을 참조하면, 기초 악성 코드 A의 특징값 A-3와 실행 코드 C의 특징값 C-1이 유사하고, 기초 악성 코드 A의 특징값 A-4와 실행 코드 C의 특징값 C-2가 유사하다. 또한, 기초 악성 코드 B의 특징값 B-2와 실행 코드 C의 특징값 C-4가 유사하다. 실행 코드 C의 특징값 C-3와 유사한 기초 악성 코드의 특징값은 발견되지 않았다. 그 결과, 상기 유사도 분석부(130)는 상기 실행 코드 C에 포함된 코드 블록과 유사한 기초 악성 코드의 코드 블록으로 코드 블록 A-3, A-4 그리고 B-2를 선택할 수 있다.
그러고 나서, 상기 악성 코드 분류부(140)는 상기 유사도 분석부(130)가 분석하여 얻은 상기 실행 코드의 상기 기초 악성 코드들에 대한 유사도를 기반으로, 상기 기초 악성 코드들 중에서 상기 실행 코드에 대응하는 기초 악성 코드를 선택하여 상기 실행 코드를 해당 기초 악성 코드에 속하는 변종 악성 코드로 분류할 수 있다.
일 실시예에 따르면, 상기 악성 코드 분류부(140)는 상기 실행 코드의 코드 블록과 유사한 상기 기초 악성 코드의 코드 블록 개수에 따라 상기 실행 코드에 대응하는 기초 악성 코드를 선택할 수 있다.
예를 들어, 도 4를 참조하면, 기초 악성 코드 A 및 B 중에서 실행 코드 C의 코드 블록들(C-1, C-2, C-3, C-4)과 유사한 코드 블록을 가장 많이 포함하고 있는 코드는 기초 악성 코드 A이며, 상기 악성 코드 분류부(140)는 상기 기초 악성 코드 A 및 B 중에서 상기 실행 코드 C의 코드 블록과 유사한 코드 블록을 가장 많이 포함하고 있는 기초 악성 코드 A를 상기 실행 코드에 대응하는 기초 악성 코드로 선택할 수 있다.
그 결과, 도 4의 코드 그룹 A와 같이, 상기 악성 코드 분류부(140)는 상기 실행 코드 C를 상기 기초 악성 코드 A에 속하는 악성 코드로 분류할 수 있다.
실시예에 따라, 상기 악성 코드 분류부(140)는 상기 실행 코드의 코드 블록 내 코드에 의한 동작이 기 결정된 주의 동작에 해당하는지 여부를 판별하고, 판별 결과에 따라 상기 실행 코드의 악성 코드 여부를 결정할 수 있다.
구체적으로, 상기 악성 코드 분류부(140)는 상기 실행 코드의 코드 블록 내 코드에 의한 동작이 상기 주의 동작에 해당하는 경우 상기 실행 코드를 악성 코드로 분류하고, 상기 주의 동작에 해당하지 않는 경우에는 상기 실행 코드를 악성 코드로 분류하지 않을 수 있다.
이 실시예에서, 상기 주의 동작은 시스템의 성능에 영향을 미칠 수 있는 동작으로서, 파일에 접근하는 동작, 레지스트리에 접근하는 동작, 및 네트워크에 접근하는 동작 중 적어도 하나를 포함할 수 있다.
상기 파일에 접근하는 동작은 시스템에 저장된 파일을 열거나, 수정하거나, 삭제하는 행위로서, 상기 실행 코드의 코드 블록에 "open", "delete" 등의 명령어가 포함된 경우, 해당 코드 블록 내 코드는 파일에 접근하는 동작을 수행하는 것으로 판별될 수 있다.
상기 레지스트리에 접근하는 동작은 시스템의 레지스트리에 저장된 정보를 열람하거나, 수정하거나, 삭제하는 행위로서, 상기 실행 코드의 코드 블록에 "registry key open" 등의 명령어가 포함된 경우, 해당 코드 블록 내 코드는 레지스트리에 접근하는 동작을 수행하는 것으로 판별될 수 있다.
상기 네트워크에 접근하는 동작은 시스템에 연결된 네트워크를 통해 트래픽을 유발하는 행위로서, 상기 실행 코드의 코드 블록에 "recv", "send", "send to" 등의 명령어가 포함된 경우, 해당 코드 블록 내 코드는 네트워크에 접근하는 동작을 수행하는 것으로 판별될 수 있다.
이와 같이, 본 발명의 실시예는 실행 코드의 코드 블록으로부터 추출된 특징값을 기초 악성 코드의 코드 블록으로부터 추출된 특징값과 비교하여 기초 악성 코드에 대한 실행 코드의 유사도를 분석하는 과정 외에, 실행 코드의 코드 블록 내 코드에 의한 동작을 더 분석함으로써 악성 코드 탐지 정확도를 보다 향상시킬 수 있다.
이상에서 실시예를 통해 본 발명을 설명하였으나, 위 실시예는 단지 본 발명의 사상을 설명하기 위한 것으로 이에 한정되지 않는다. 통상의 기술자는 전술한 실시예에 다양한 변형이 가해질 수 있음을 이해할 것이다. 본 발명의 범위는 첨부된 특허청구범위의 해석을 통해서만 정해진다.
10: 악성 코드 탐지 장치
110: 코드 블록 구분부
120: 특징값 추출부
130: 유사도 분석부
140: 악성 코드 분류부
150: 데이터베이스
110: 코드 블록 구분부
120: 특징값 추출부
130: 유사도 분석부
140: 악성 코드 분류부
150: 데이터베이스
Claims (5)
- 정보 처리 장치가 데이터베이스에 저장된 기초 악성 코드에 관한 정보를 이용하여 어셈블리 언어로 작성된 악성 코드를 탐지하는 방법에 있어서,
실행 코드를 적어도 하나의 코드 블록으로 구분하는 단계;
상기 코드 블록으로부터 특징값을 추출하는 단계;
상기 특징값을 기반으로 상기 기초 악성 코드에 대한 상기 실행 코드의 유사도를 분석하는 단계; 및
상기 유사도에 따라 상기 실행 코드를 상기 기초 악성 코드에 속하는 악성 코드로 분류하는 단계;
를 포함하는 악성 코드 탐지 방법. - 제 1 항에 있어서,
상기 실행 코드를 코드 블록으로 구분하는 단계는:
상기 실행 코드에서 시작점 및 끝점을 지정하는 단계; 및
상기 시작점 및 상기 끝점을 경계로 상기 코드 블록을 정의하는 단계;
를 포함하는 악성 코드 탐지 방법. - 제 2 항에 있어서,
상기 실행 코드에서 시작점 및 끝점을 지정하는 단계는:
상기 실행 코드 내 분기 명령어를 검출하는 단계; 및
상기 분기 명령어가 가리키는 지점을 상기 시작점으로 선언하는 단계;
를 더 포함하는 악성 코드 탐지 방법. - 제 2 항에 있어서,
상기 실행 코드를 코드 블록으로 구분하는 단계는:
상기 실행 코드에서 상기 시작점과 상기 끝점 사이에 분기 명령어가 포함된 경우, 상기 시작점부터 상기 끝점까지의 코드로 구성된 코드 블록을 상기 분기 명령어가 나타난 지점을 경계로 분할하는 단계를 더 포함하는 악성 코드 탐지 방법. - 제 4 항에 있어서,
상기 코드 블록을 분할하는 단계는:
상기 시작점부터 상기 끝점까지의 코드로 구성된 코드 블록을, 상기 시작점부터 상기 분기 명령어가 나타난 지점까지의 코드로 구성된 코드 블록과, 상기 분기 명령어가 나타난 지점부터 상기 끝점까지의 코드로 구성된 코드 블록으로 분할하는 단계를 포함하는 악성 코드 탐지 방법.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020140192799A KR20160082644A (ko) | 2014-12-30 | 2014-12-30 | 코드 블록 구분을 통한 악성 코드 탐지 방법 및 장치 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020140192799A KR20160082644A (ko) | 2014-12-30 | 2014-12-30 | 코드 블록 구분을 통한 악성 코드 탐지 방법 및 장치 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020160102941A Division KR20160100887A (ko) | 2016-08-12 | 2016-08-12 | 코드 블록 비교를 통한 악성 코드 탐지 방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20160082644A true KR20160082644A (ko) | 2016-07-08 |
Family
ID=56504470
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020140192799A KR20160082644A (ko) | 2014-12-30 | 2014-12-30 | 코드 블록 구분을 통한 악성 코드 탐지 방법 및 장치 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR20160082644A (ko) |
Cited By (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102066022B1 (ko) * | 2018-08-03 | 2020-01-14 | 국민대학교산학협력단 | 실행 코드 상의 함수 시그니처 생성 장치 및 방법 |
KR20200008799A (ko) | 2018-07-17 | 2020-01-29 | 단국대학교 산학협력단 | 코딩 규칙 기반으로 plc용 안전한 프로그래밍을 지원하기 위한 장치 및 방법 |
KR20200015198A (ko) * | 2018-08-03 | 2020-02-12 | 국민대학교산학협력단 | 이분 그래프 기반의 악성 코드 탐지 장치 |
KR20200080104A (ko) * | 2018-12-26 | 2020-07-06 | 한양대학교 에리카산학협력단 | 서로 다른 언어로 작성된 프로그램들 간 유사성 검사 방법 및 장치 |
KR102308477B1 (ko) * | 2020-12-07 | 2021-10-06 | 주식회사 샌즈랩 | 악성 코드의 악성 행위 특징 정보를 생성하는 방법 |
KR102362516B1 (ko) * | 2021-08-11 | 2022-02-15 | 주식회사 샌즈랩 | 사이버 위협 정보 처리 장치, 사이버 위협 정보 처리 방법 및 사이버 위협 정보 처리하는 프로그램을 저장하는 저장매체 |
KR102396238B1 (ko) * | 2022-02-09 | 2022-05-10 | 주식회사 샌즈랩 | 사이버 위협 정보 처리 장치, 사이버 위협 정보 처리 방법 및 사이버 위협 정보 처리하는 프로그램을 저장하는 저장매체 |
KR102396236B1 (ko) * | 2021-08-11 | 2022-05-10 | 주식회사 샌즈랩 | 사이버 위협 정보 처리 장치, 사이버 위협 정보 처리 방법 및 사이버 위협 정보 처리하는 프로그램을 저장하는 저장매체 |
KR102396237B1 (ko) * | 2022-02-09 | 2022-05-10 | 주식회사 샌즈랩 | 사이버 위협 정보 처리 장치, 사이버 위협 정보 처리 방법 및 사이버 위협 정보 처리하는 프로그램을 저장하는 저장매체 |
KR20220091733A (ko) * | 2020-12-24 | 2022-07-01 | 숭실대학교산학협력단 | 코드 시퀀스 기반 지능형 핵심코드 식별 방법, 이를 수행하기 위한 기록 매체 및 장치 |
KR102420884B1 (ko) * | 2022-02-09 | 2022-07-15 | 주식회사 샌즈랩 | 사이버 위협 정보 처리 장치, 사이버 위협 정보 처리 방법 및 사이버 위협 정보 처리하는 프로그램을 저장하는 저장매체 |
KR102424014B1 (ko) * | 2022-02-09 | 2022-07-25 | 주식회사 샌즈랩 | 사이버 위협 정보 처리 장치, 사이버 위협 정보 처리 방법 및 사이버 위협 정보 처리하는 프로그램을 저장하는 저장매체 |
CN114881018A (zh) * | 2022-05-06 | 2022-08-09 | 安天科技集团股份有限公司 | 一种文件处理方法、装置、电子设备及存储介质 |
KR102432649B1 (ko) * | 2022-02-09 | 2022-08-16 | 주식회사 샌즈랩 | 사이버 위협 정보 처리 프로세서, 사이버 위협 정보 처리 방법 및 사이버 위협 정보 처리하는 프로그램을 저장하는 저장매체 |
KR102437376B1 (ko) * | 2022-02-09 | 2022-08-30 | 주식회사 샌즈랩 | 사이버 위협 정보 처리 장치, 사이버 위협 정보 처리 방법 및 사이버 위협 정보 처리하는 프로그램을 저장하는 저장매체 |
KR102447280B1 (ko) * | 2022-02-09 | 2022-09-27 | 주식회사 샌즈랩 | 사이버 위협 정보 처리 장치, 사이버 위협 정보 처리 방법 및 사이버 위협 정보 처리하는 프로그램을 저장하는 저장매체 |
KR102447279B1 (ko) * | 2022-02-09 | 2022-09-27 | 주식회사 샌즈랩 | 사이버 위협 정보 처리 장치, 사이버 위협 정보 처리 방법 및 사이버 위협 정보 처리하는 프로그램을 저장하는 저장매체 |
KR102447278B1 (ko) * | 2022-02-09 | 2022-09-27 | 주식회사 샌즈랩 | 사이버 위협 정보 처리 장치, 사이버 위협 정보 처리 방법 및 사이버 위협 정보 처리하는 프로그램을 저장하는 저장매체 |
WO2023017931A1 (ko) * | 2021-08-11 | 2023-02-16 | 주식회사 샌즈랩 | 사이버 위협 정보 처리 장치, 사이버 위협 정보 처리 방법 및 사이버 위협 정보 처리하는 프로그램을 저장하는 저장매체 |
-
2014
- 2014-12-30 KR KR1020140192799A patent/KR20160082644A/ko active Search and Examination
Cited By (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20200008799A (ko) | 2018-07-17 | 2020-01-29 | 단국대학교 산학협력단 | 코딩 규칙 기반으로 plc용 안전한 프로그래밍을 지원하기 위한 장치 및 방법 |
KR20200015198A (ko) * | 2018-08-03 | 2020-02-12 | 국민대학교산학협력단 | 이분 그래프 기반의 악성 코드 탐지 장치 |
KR102066022B1 (ko) * | 2018-08-03 | 2020-01-14 | 국민대학교산학협력단 | 실행 코드 상의 함수 시그니처 생성 장치 및 방법 |
KR20200080104A (ko) * | 2018-12-26 | 2020-07-06 | 한양대학교 에리카산학협력단 | 서로 다른 언어로 작성된 프로그램들 간 유사성 검사 방법 및 장치 |
KR102308477B1 (ko) * | 2020-12-07 | 2021-10-06 | 주식회사 샌즈랩 | 악성 코드의 악성 행위 특징 정보를 생성하는 방법 |
KR20220091733A (ko) * | 2020-12-24 | 2022-07-01 | 숭실대학교산학협력단 | 코드 시퀀스 기반 지능형 핵심코드 식별 방법, 이를 수행하기 위한 기록 매체 및 장치 |
KR102362516B1 (ko) * | 2021-08-11 | 2022-02-15 | 주식회사 샌즈랩 | 사이버 위협 정보 처리 장치, 사이버 위협 정보 처리 방법 및 사이버 위협 정보 처리하는 프로그램을 저장하는 저장매체 |
WO2023017931A1 (ko) * | 2021-08-11 | 2023-02-16 | 주식회사 샌즈랩 | 사이버 위협 정보 처리 장치, 사이버 위협 정보 처리 방법 및 사이버 위협 정보 처리하는 프로그램을 저장하는 저장매체 |
KR102396236B1 (ko) * | 2021-08-11 | 2022-05-10 | 주식회사 샌즈랩 | 사이버 위협 정보 처리 장치, 사이버 위협 정보 처리 방법 및 사이버 위협 정보 처리하는 프로그램을 저장하는 저장매체 |
KR102420884B1 (ko) * | 2022-02-09 | 2022-07-15 | 주식회사 샌즈랩 | 사이버 위협 정보 처리 장치, 사이버 위협 정보 처리 방법 및 사이버 위협 정보 처리하는 프로그램을 저장하는 저장매체 |
KR102396237B1 (ko) * | 2022-02-09 | 2022-05-10 | 주식회사 샌즈랩 | 사이버 위협 정보 처리 장치, 사이버 위협 정보 처리 방법 및 사이버 위협 정보 처리하는 프로그램을 저장하는 저장매체 |
KR102424014B1 (ko) * | 2022-02-09 | 2022-07-25 | 주식회사 샌즈랩 | 사이버 위협 정보 처리 장치, 사이버 위협 정보 처리 방법 및 사이버 위협 정보 처리하는 프로그램을 저장하는 저장매체 |
KR102432649B1 (ko) * | 2022-02-09 | 2022-08-16 | 주식회사 샌즈랩 | 사이버 위협 정보 처리 프로세서, 사이버 위협 정보 처리 방법 및 사이버 위협 정보 처리하는 프로그램을 저장하는 저장매체 |
KR102437376B1 (ko) * | 2022-02-09 | 2022-08-30 | 주식회사 샌즈랩 | 사이버 위협 정보 처리 장치, 사이버 위협 정보 처리 방법 및 사이버 위협 정보 처리하는 프로그램을 저장하는 저장매체 |
KR102447280B1 (ko) * | 2022-02-09 | 2022-09-27 | 주식회사 샌즈랩 | 사이버 위협 정보 처리 장치, 사이버 위협 정보 처리 방법 및 사이버 위협 정보 처리하는 프로그램을 저장하는 저장매체 |
KR102447279B1 (ko) * | 2022-02-09 | 2022-09-27 | 주식회사 샌즈랩 | 사이버 위협 정보 처리 장치, 사이버 위협 정보 처리 방법 및 사이버 위협 정보 처리하는 프로그램을 저장하는 저장매체 |
KR102447278B1 (ko) * | 2022-02-09 | 2022-09-27 | 주식회사 샌즈랩 | 사이버 위협 정보 처리 장치, 사이버 위협 정보 처리 방법 및 사이버 위협 정보 처리하는 프로그램을 저장하는 저장매체 |
KR102396238B1 (ko) * | 2022-02-09 | 2022-05-10 | 주식회사 샌즈랩 | 사이버 위협 정보 처리 장치, 사이버 위협 정보 처리 방법 및 사이버 위협 정보 처리하는 프로그램을 저장하는 저장매체 |
CN114881018A (zh) * | 2022-05-06 | 2022-08-09 | 安天科技集团股份有限公司 | 一种文件处理方法、装置、电子设备及存储介质 |
CN114881018B (zh) * | 2022-05-06 | 2024-10-01 | 安天科技集团股份有限公司 | 一种文件处理方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR20160082644A (ko) | 코드 블록 구분을 통한 악성 코드 탐지 방법 및 장치 | |
US20150256552A1 (en) | Imalicious code detection apparatus and method | |
KR101162051B1 (ko) | 문자열 비교 기법을 이용한 악성코드 탐지 및 분류 시스템 및 그 방법 | |
CN109101815B (zh) | 一种恶意软件检测方法及相关设备 | |
US9621571B2 (en) | Apparatus and method for searching for similar malicious code based on malicious code feature information | |
US8171551B2 (en) | Malware detection using external call characteristics | |
Rathnayaka et al. | An efficient approach for advanced malware analysis using memory forensic technique | |
KR102317833B1 (ko) | 악성 코드 탐지 모델 학습 방법 및 이를 이용한 탐지 방법 | |
KR20160100887A (ko) | 코드 블록 비교를 통한 악성 코드 탐지 방법 | |
US11048798B2 (en) | Method for detecting libraries in program binaries | |
RU2427890C2 (ru) | Система и способ сравнения файлов на основе шаблонов функциональности | |
US20120151586A1 (en) | Malware detection using feature analysis | |
KR20140030989A (ko) | 안드로이드 운영체제에서 apk 파일의 시그니처 추출 방법, 그리고 이를 위한 컴퓨터로 판독가능한 기록매체 | |
CN105205397A (zh) | 恶意程序样本分类方法及装置 | |
KR101110308B1 (ko) | 실행압축 특성을 이용한 악성코드 탐지장치 및 그 방법 | |
KR101520671B1 (ko) | 실행코드 유사도 분석 시스템 및 방법 | |
Nguyen et al. | Detecting repackaged android applications using perceptual hashing | |
US20170277887A1 (en) | Information processing apparatus, information processing method, and computer readable medium | |
CN111651768B (zh) | 计算机二进制程序的链接库函数名识别方法及装置 | |
KR100961179B1 (ko) | 디지털 포렌식 방법 및 장치 | |
KR102031592B1 (ko) | 악성코드를 탐지하기 위한 방법 및 장치 | |
KR101327740B1 (ko) | 악성코드의 행동 패턴 수집장치 및 방법 | |
CN107368740B (zh) | 一种针对数据文件中可执行代码的检测方法及系统 | |
CN115310082A (zh) | 信息处理方法、装置、电子设备及存储介质 | |
CN113032783B (zh) | 一种基于非代码特征的病毒检测方法和系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AMND | Amendment | ||
AMND | Amendment |