KR101480244B1 - 클래스 단위의 시그니처를 이용한 악성 어플리케이션 탐지 방법 및 장치 - Google Patents

클래스 단위의 시그니처를 이용한 악성 어플리케이션 탐지 방법 및 장치 Download PDF

Info

Publication number
KR101480244B1
KR101480244B1 KR1020130100581A KR20130100581A KR101480244B1 KR 101480244 B1 KR101480244 B1 KR 101480244B1 KR 1020130100581 A KR1020130100581 A KR 1020130100581A KR 20130100581 A KR20130100581 A KR 20130100581A KR 101480244 B1 KR101480244 B1 KR 101480244B1
Authority
KR
South Korea
Prior art keywords
signature
malicious
application
malicious application
instructions
Prior art date
Application number
KR1020130100581A
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 KR1020130100581A priority Critical patent/KR101480244B1/ko
Application granted granted Critical
Publication of KR101480244B1 publication Critical patent/KR101480244B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/562Static detection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/302Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/53Decompilation; Disassembly

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computing Systems (AREA)
  • Computer Hardware Design (AREA)
  • Health & Medical Sciences (AREA)
  • Virology (AREA)
  • General Health & Medical Sciences (AREA)
  • Mathematical Physics (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)

Abstract

클래스 단위의 시그니처를 이용한 악성 어플리케이션 탐지 방법이 개시된다. 상기 방법은 악성 패밀리에 포함된 적어도 하나의 악성 어플리케이션로부터 추출된 복수의 클래스들을 이용하여 상기 악성 패밀리를 대표하는 적어도 하나의 시그니처를 생성하는 단계; 및 상기 결정된 시그니처를 이용하여 대상 어플리케이션이 악성 어플리케이션인지 여부를 판단하는 단계를 포함한다.

Description

클래스 단위의 시그니처를 이용한 악성 어플리케이션 탐지 방법 및 장치{METHOD FOR DETECTING MALICIOUS APPLICATION USING SIGNATURE ON CLASS BASIS AND DEVICE ENABLING THE METHOD}
아래의 실시예들은 악성 어플리케이션을 탐지하는 방법 및 장치에 관한 것으로, 특히, 클래스 단위의 시그니처를 이용하여 악성 어플리케이션을 탐지하는 기술에 관한 것이다.
사용자의 PC, 모바일 디바이스에 설치된 악성 어플리케이션은 사용자의 행위를 감시하거나 사용자가 원하지 않는 데이터를 추출하거나 제공한다. 이러한 악성 어플리케이션은 PC, 모바일 디바이스의 자원을 소모하거나, PC, 모바일 디바이스를 마비시킬 뿐만 아니라 사용자의 중요한 정보(예를 들어, 개인 정보 등)를 외부로 유출한다.
악성 어플리케이션을 탐지하기 위하여 미리 정의된 시그니처가 이용될 수 있다. 예를 들어, 악성 어플리케이션을 탐지하기 위하여 어플리케이션의 제작자에 의하여 정의된 인증키, 권한 정보, 어플리케이션의 무결성을 검증하는 해시값, 어플리케이션 내에서 사용되는 API들의 목록, 문자열에 대한 정보 등이 시그니처로 정의된 정보와 비교될 수 있다.
그러나, 상술한 방법에 의하면, 인증키 혹은 권한 정보의 조작, API들의 목록 혹은 문자열에 대한 정보의 암호화 혹은 난독화 등을 통하여 악성 어플리케이션의 탐지에 실패할 수 있다.
본 발명의 실시예는 악성 어플리케이션을 포함하는 악성 패밀리로부터 클래스 단위로 시그니처를 정의하고, 이를 이용하여 악성 어플리케이션을 탐지함으로써 암호화 또는 난독화 기법이 적용된 어플리케이션에 대해서도 악성 여부를 판단할 수 있다.
또한, 본 발명의 실시예는 복수의 클래스들 각각에 대하여 명령어들의 사용 빈도에 대한 정보를 포함하는 시그니처를 이용함으로써, 악성 어플리케이션의 탐지를 누락하는 것을 방지할 수 있다.
또한, 본 발명의 실시예는 클래스를 단위로 작은 양의 정보를 갖는 시그니처를 정의함으로써 보다 빠르게 악성 어플리케이션을 탐지할 수 있다.
본 발명의 실시예에 따른 클래스 단위의 시그니처를 이용한 악성 어플리케이션 탐지 방법은 악성 패밀리에 포함된 적어도 하나의 악성 어플리케이션로부터 추출된 복수의 클래스들을 이용하여 상기 악성 패밀리를 대표하는 적어도 하나의 시그니처를 생성하는 단계; 및 상기 결정된 시그니처를 이용하여 대상 어플리케이션이 악성 어플리케이션인지 여부를 판단하는 단계를 포함한다.
상기 방법은 상기 복수의 클래스들 각각에 대하여 명령어들의 사용과 관련된 정보를 추출하는 단계를 더 포함할 수 있다.
상기 복수의 클래스들 각각에 대하여 명령어들의 사용과 관련된 정보를 추출하는 단계는 상기 적어도 하나의 악성 어플리케이션에 대하여 역어셈블(disassemble)을 수행하는 단계; 및 상기 복수의 클래스들 각각에 대한 어셈블리 코드 파일을 획득하는 단계를 포함할 수 있다.
상기 복수의 클래스들 각각에 대하여 명령어들의 사용과 관련된 정보를 추출하는 단계는 상기 어셈블리 코드 파일에 포함된 명령어들을 추출하는 단계; 및 상기 명령어들의 사용과 관련된 정보를 추출하기 위하여 상기 추출된 명령어들의 개수 또는 사용 빈도에 대한 정보를 획득하는 단계를 더 포함할 수 있다.
상기 적어도 하나의 악성 어플리케이션이 제1 악성 어플리케이션 및 제2 악성 어플리케이션을 포함하고, 상기 악성 패밀리를 대표하는 적어도 하나의 시그니처를 생성하는 단계는 상기 적어도 하나의 시그니처를 생성하기 위하여 상기 제1 악성 어플리케이션에 대응하는 복수의 제1 클래스들 각각에 대한 명령어들의 사용과 관련된 정보와 상기 제2 악성 어플리케이션에 대응하는 복수의 제2 클래스들 각각에 대한 명령어들의 사용과 관련된 정보를 비교하는 단계를 포함할 수 있다.
상기 대상 어플리케이션이 악성 어플리케이션인지 여부를 판단하는 단계는 상기 대상 어플리케이션이 악성 어플리케이션인지 여부를 판단하기 위하여 상기 대상 어플리케이션에 포함된 명령어들의 개수 또는 사용 빈도에 대한 정보를 획득하는 단계를 포함할 수 있다.
상기 대상 어플리케이션이 악성 어플리케이션인지 여부를 판단하는 단계는 상기 대상 어플리케이션에 포함된 명령어들 중에서 미리 설정된 사용 빈도 이상으로 사용되거나, 미리 설정된 순위보다 높은 순위의 사용 빈도를 갖는 상위 명령어들을 추출하는 단계; 상기 상위 명령어들과 상기 시그니처에 포함된 적어도 일부의 명령어들을 비교하는 단계를 포함할 수 있다.
상기 방법은 상기 비교 결과에 따라 상기 대상 어플리케이션에 포함된 명령어들과 상기 시그니처에 명령어들 사이의 동일성 혹은 유사성을 판단하는 단계를 더 포함할 수 있다.
또한, 본 발명의 실시예에 따른 클래스 단위의 시그니처를 이용한 악성 어플리케이션 탐지 방법은 적어도 하나의 악성 어플리케이션을 포함하는 복수의 악성 패밀리들 각각을 대표하는 적어도 하나의 시그니처를 로딩하는 단계; 및 상기 로딩된 적어도 하나의 시그니처를 이용하여 대상 어플리케이션이 악성 어플리케이션인지 여부를 판단하는 단계를 포함한다. 여기서, 상기 적어도 하나의 시그니처는 상기 적어도 하나의 악성 어플리케이션에 대응하는 상기 복수의 클래스들 각각에 대하여 명령어들의 사용과 관련된 정보를 포함한다.
상기 대상 어플리케이션이 악성 어플리케이션인지 여부를 판단하는 단계는 상기 대상 어플리케이션에 포함된 명령어들의 개수 또는 사용 빈도에 대한 정보를 획득하는 단계; 및 상기 적어도 하나의 시그니처에 포함된 상기 적어도 하나의 악성 어플리케이션에 대응하는 상기 복수의 클래스들 각각에 대하여 명령어들의 사용과 관련된 정보와 상기 대상 어플리케이션에 포함된 명령어들의 개수 또는 사용 빈도에 대한 정보를 비교하는 단계를 포함한다.
본 발명의 실시예는 악성 어플리케이션을 포함하는 악성 패밀리로부터 클래스 단위로 시그니처를 정의하고, 이를 이용하여 악성 어플리케이션을 탐지함으로써 암호화 또는 난독화 기법이 적용된 어플리케이션에 대해서도 악성 여부를 판단할 수 있다.
또한, 본 발명의 실시예는 복수의 클래스들 각각에 대하여 명령어들의 사용 빈도에 대한 정보를 포함하는 시그니처를 이용함으로써, 악성 어플리케이션의 탐지를 누락하는 것을 방지할 수 있다.
또한, 본 발명의 실시예는 클래스를 단위로 작은 양의 정보를 갖는 시그니처를 정의함으로써 보다 빠르게 악성 어플리케이션을 탐지할 수 있다.
도 1은 본 발명의 일실시예에 따른 클래스 단위의 시그니처를 이용한 악성 어플리케이션 탐지 방법을 나타낸 플로우 차트이다.
도 2는 도 1에 도시된 단계 110을 보다 구체적으로 설명하는 도면이다.
도 3은 복수의 클래스들 각각에 대하여 명령어들의 사용 빈도를 추출하는 것을 개념적으로 도시한 도면이다.
도 4는 도 1에 도시된 단계 120을 보다 구체적으로 설명하는 도면이다.
도 5는 본 발명의 일실시예에 따른 클래스 단위의 시그니처를 이용한 악성 어플리케이션 탐지 장치를 나타낸 블록도이다.
이하, 본 발명의 실시예들을 첨부된 도면을 참조하여 상세하게 설명한다.
도 1은 본 발명의 일실시예에 따른 클래스 단위의 시그니처를 이용한 악성 어플리케이션 탐지 방법을 나타낸 플로우 차트이다.
도 1을 참조하면, 본 발명의 일실시예에 따른 클래스 단위의 시그니처를 이용한 악성 어플리케이션 탐지 방법은 시그니처를 생성하고, 생성된 시그니처를 로딩하는 단계(110) 및 로딩된 시그니처를 이용하여 대상 어플리케이션이 악성 어플리케이션인지 여부를 검증하는 단계(120)를 포함한다.
여러 어플리케이션들은 안드로이드, 윈도우, 리눅스, iOS 등 다양한 운영 체제에서 설치되고, 실행된다. 이 때, 악성 애플리케이션들은 그들 각각 행위와 특징에 따라 악성 패밀리로 그룹핑될 수 있다. 즉, 악성 패밀리는 유사한 행위와 특징을 갖는 적어도 하나의 악성 어플리케이션을 포함한다.
이 때, 악성 패밀리들 각각은 적어도 하나의 시그니처에 의하여 대표된다. 본 발명의 실시예는 시그니처를 추출하기 위하여 악성 패밀리에 포함된 적어도 하나의 악성 애플리케이션 중 일부를 시그니처 추출 샘플로 선택하고, 선택된 시그니처 추출 샘플에 대해서 Disassembler를 이용하여 역어셈블을 수행한다.
역어셈블 과정을 통하여 얻은 데이터는 하나의 클래스 당 하나의 어셈블리 코드 파일로 존재한다. 따라서, 하나의 악성 애플리케이션은 다수의 Assembly Code 파일들을 가지게 된다. 역서, Assembly Code 파일은 패키지, 클래스, 상속에 대한 정보를 갖고 있으며, 실제로 행위를 수행하는데 사용되는 바이트 코드의 명령어들과 오퍼랜드들을 갖는다.
이 때, Disassembler를 통해 획득된 데이터는 Instruction Extractor를 이용하여 파싱되며, 바이트 코드의 명령어들을 추출하여 Instruction Sequence로 저장된다. 바이트 코드의 명령어들은 운영 체제에 의해 정의된 명령어들(예를 들어, 구글에 의해 정의된 총 218개의 명령어들)을 포함할 수 있고, 본 발명의 실시예는 이러한 명령어들 각각이 얼마나 자주 사용되었는지를 체크한다.
악성 패밀리 내에 시그니처 추출 샘플로 선택된 악성 애플리케이션들 모두에 대해서 상술한 작업이 수행되며, 그 악성 어플리케이션들 각각의 클래스들 각각에 대하여 명령어들의 사용 빈도에 대한 정보가 추출되고, 저장될 수 있다. 이 때, 저장된 정보는 다음 작업에 있을 Similar Class Extractor를 통해서 시그니처를 정의하는 데에 사용된다. 악성 패밀리 내의 악성 애플리케이션들은 유사한 악성 행위를 갖기 때문에 악성 패밀리 내의 서로 다른 애플리케이션들은 유사한 클래스 정보를 갖는다. 이와 같은 사실을 이용하여, 본 발명의 실시예는 선정된 모든 악성 애플리케이션들에 대해서 유사성을 비교한다.
우선 하나의 악성 애플리케이션과 다른 악성 애플리케이션이 비교된다. 악성 애플리케이션에 포함된 클래스들 각각에 대한 명령어들의 사용 빈도에 대한 정보는 다른 악성 애플리케이션에 포함된 클래스들 각각에 대한 명령어들의 사용 빈도에 대한 정보와 비교된다. 이를 통해 유사하게 판별된 클래스 정보를 기초로 1차 시그니처가 정의되며, 다음으로 정의된 1차 시그니처를 이용하여 다른 악성 애플리케이션과의 반복 작업을 통하여 2차 시그니처가 정의된다. 이와 같은 반복 작업은 모든 악성 애플리케이션들 대해서 수행되며, 결국 악성 패밀리를 대표하는 시그니처가 정의된다.
단계 120에서, 본 발명의 실시예는 검증되지 않은 대상 애플리케이션이 악성 어플리케이션인지 여부를 판단하기 위해서 위와 같은 역어셈블을 수행한다. 이를 통하여 클래스들 각각에 대한 명령어들의 사용 빈도에 대한 정보가 추출된다.
이를 통해서 얻은 명령어들의 사용 빈도에 대한 정보와 미리 정의되어 있는 시그니처는 두 개의 스텝들을 포함하는 유사도 비교 과정을 통해 비교된다.
예를 들어, 본 발명의 실시예는 먼저 명령어 빈도수 상위 20개에 해당하는 명령어들의 집합 정보를 비교한다. 즉, 시그니쳐에 선언된 명령어 빈도 정보에서 명령어 빈도수가 가장 높은 20개의 명령어와 검증하기를 원하는 애플리케이션 내부에 선언되어 있는 명령어 빈도수의 상위 20개의 명령어와의 동일성 여부를 판단한다. 이를 통하여 동일하게 판별된 클래스 정보들에 대해서 두 번째 유사도 비교 과정을 수행하게 된다. 이와 같이 첫 번째의 유사도 비교 과정은 클래스의 유사성을 대략적으로 판단하여 실제 비교하는데 필요한 클래스들을 미리 선별하여 속도를 향상시키기 위해 사용된다. 두 번째 유사도 비교 과정은 악성 어플리케이션의 명령어 빈도 정보와 시그니처에 정의된 명령어 정보를 모두 내림차순으로 정렬함으로써 두 데이터 간의 명령어 순서를 비교하여 최종 유사성을 판단하게 된다.
도 2는 도 1에 도시된 단계 110을 보다 구체적으로 설명하는 도면이다.
도 2를 참조하면, 악성 패밀리(210)들은 유사한 행위 및 특징을 갖는 악성 어플리케이션들의 집합들로 정의된다. 악성 패밀리 k는 복수의 악성 어플리케이션들(220)을 포함한다.
본 발명의 실시예는 복수의 악성 어플리케이션들 중 적어도 일부에 대하여 역어셈블을 수행함으로써, 어셈블리 코드 파일들(230)을 생성한다. 이 때, 어셈블리 코드 파일들(230) 각각은 하나의 클래스에 대하여 하나의 파일로 존재하며, 하나의 악성 어플리케이션은 복수의 어셈블리 코드 파일들을 갖는다.
또한, 본 발명의 명령어 추출기는 복수의 클래스들 각각에 대하여 사용된 명령어들을 추출하여, 명령어들의 시퀀스(240)를 생성한다. 또한, 명령어 카운터는 명령어들의 시퀀스로부터 명령어들의 사용과 관련된 정보(예를 들어, 명령어들 각각의 사용 빈도에 대한 정보, 250)를 추출한다. 예를 들어, 안드로이드 운영 체제는 218 개의 명령어들을 갖고 있으며, 218개의 명령어들 각각의 사용 빈도에 대한 정보가 추출되고 저장된다.
상술한 과정을 통하여, 악성 패밀리 k 내에 포함된 악성 어플리케이션과 관련된 복수의 클래스들 각각에 대하여 명령어들의 사용과 관련된 정보가 추출된다. 또한, 다른 악성 패밀리들에 대해서도 동일한 작업이 수행된다.
동일한 악성 패밀리에 속하는 악성 어플리케이션들은 유사한 악성 행위를 갖고 있을 확률이 높으므로, 본 발명은 유사 클래스 추출기를 통하여 악성 패밀리를 대표하는 시그니처를 정의한다. 예를 들어, 복수의 클래스들 각각에 대하여 어플리케이션 A에 포함되는 명령어들의 사용 빈도와 어플리케이션 B에 포함되는 명령어들의 사용 빈도가 비교된다. 이러한 비교 결과에 기초하여 유사한 클래스에 대한 정보가 추출되며, 추출된 데이터와 어플리케이션 C에 포함되는 명령어들의 사용 빈도가 비교된다. 상술한 과정이 반복적으로 수행되면, 악성 패밀리 k를 대표하는 시그니처(260)가 생성된다. 이러한 악성 패밀리 k의 시그니처는 메모리(270)에 저장되고 로딩된다. 다른 악성 패밀리들 각각에 대한 시그니처도 동일한 방식을 통하여 메모리(270)에 저장되고, 로딩된다.
도 3은 복수의 클래스들 각각에 대하여 명령어들의 사용 빈도를 추출하는 것을 개념적으로 도시한 도면이다.
도 3을 참조하면, 어플리케이션이 역어셈블되면, 복수의 클래스들(클래스 A, B, C)에 대한 하나의 어셈블리 코드 파일이 생성된다. 이 때, 어셈블리 코드 파일에 사용되는 명령어들은 추출될 수 있고, 본 발명은 이러한 명령어들의 사용 빈도에 대한 정보를 시그니처를 정의하는 데에 사용할 수 있다.
도 4는 도 1에 도시된 단계 120을 보다 구체적으로 설명하는 도면이다.
도 1 내지 도 3에 설명된 바와 같이, 악성 패밀리를 대표하는 시그니처가 정의되면, 본 발명은 그 시그니처와 대상 어플리케이션을 비교함으로써 대상 어플리케이션이 악성 어플리케이션인지 여부를 판단한다. 이 때, 본 발명은 두 번의 비교 과정들을 수행할 수 있다.
우선, 대상 어플리케이션에도 역어셈블링이 수행되고, 이를 통하여 복수의 클래스들에 대하여 대상 어플리케이션에 의해 사용되는 명령어들이 추출된다.
이 때, 도 4에 도시된 바와 같이, 1차 비교 과정(410)은 시그니처가 정의하는 명령어들 중에서 상위 빈도수를 갖는 N 개의 명령어들의 집합과 복수의 클래스들 각각에 대하여 대상 어플리케이션에 의해 사용되는 상위 빈도수를 갖는 N 개의 명령어들의 집합을 비교한다. 비교 결과, 양자가 동일한 경우에는 2차 비교 과정(420)이 수행되며, 양자가 동일하지 않은 경우에는 대상 어플리케이션이 악성 어플리케이션이 아닌 것으로 판단될 수 있다. 이러한 1차 비교 과정(410)은 시그니처와 대상 어플리케이션 사이의 유사성을 대략적으로 판단함으로써 판단 속도를 향상시킬 수 있다. 특히, 1차 비교 과정(410)을 통하여 복수의 클래스들 중에서 2차 비교 과정(420)에서 사용되는 클래스가 빠르게 선택될 수 있다.
2차 비교 과정(420)은 1차 비교 과정(410)을 통하여 선택된 클래스에서 사용되는 명령어들의 사용 빈도에 대한 정보와 시그니처에 의해 정의된 명령어들의 사용 빈도에 대한 정보를 비교한다. 이 때, 2차 비교 과정(420)은 양자의 명령어들 모두를 내림차순으로 정렬하여 양자의 유사성을 판단함으로써, 대상 어플리케이션이 악성 어플리케이션인지 여부를 판단할 수 있다.
도 5는 본 발명의 일실시예에 따른 클래스 단위의 시그니처를 이용한 악성 어플리케이션 탐지 장치를 나타낸 블록도이다.
도 5를 참조하면, 본 발명의 일실시예에 따른 클래스 단위의 시그니처를 이용한 악성 어플리케이션 탐지 장치는 외부 인터페이스(510), 프로세서(520) 및 메모리(530)를 포함한다.
외부 인터페이스(510)는 여러 입력 장치들, 출력 장치들과 상기 장치와의 통신 인터페이스와, 외부의 다른 장치들과의 통신 인터페이스를 포함한다.
프로세서(520)는 적어도 하나의 악성 어플리케이션을 포함하는 복수의 악성 패밀리들 각각을 대표하는 적어도 하나의 시그니처를 생성하고, 이를 메모리(530)에 로딩한다.
그리고, 프로세서(520)는 상기 로딩된 적어도 하나의 시그니처를 이용하여 대상 어플리케이션이 악성 어플리케이션인지 여부를 판단한다.
도 5에 도시된 장치에 대해서는 도 1 내지 도 4를 통해 설명된 내용이 그대로 적용될 수 있으므로, 보다 상세한 설명은 생략한다.
이상에서 설명된 장치는 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPA(field programmable array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 콘트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치, 또는 전송되는 신호 파(signal wave)에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 실시예들이 비록 한정된 실시예와 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.

Claims (10)

  1. 악성 패밀리에 포함된 적어도 하나의 악성 어플리케이션로부터 추출된 복수의 클래스들을 이용하여 상기 악성 패밀리를 대표하는 적어도 하나의 시그니처를 생성하는 단계; 및
    상기 생성된 시그니처를 이용하여 대상 어플리케이션이 악성 어플리케이션인지 여부를 판단하는 단계
    를 포함하고,
    상기 적어도 하나의 악성 어플리케이션이 제1 악성 어플리케이션 및 제2 악성 어플리케이션을 포함하고,
    상기 악성 패밀리를 대표하는 적어도 하나의 시그니처를 생성하는 단계는
    상기 적어도 하나의 시그니처를 생성하기 위하여 상기 제1 악성 어플리케이션에 대응하는 복수의 제1 클래스들 각각에 대한 명령어들의 사용과 관련된 정보와 상기 제2 악성 어플리케이션에 대응하는 복수의 제2 클래스들 각각에 대한 명령어들의 사용과 관련된 정보를 비교하는 단계
    를 포함하는 클래스 단위의 시그니처를 이용한 악성 어플리케이션 탐지 방법.
  2. 제1항에 있어서,
    상기 복수의 클래스들 각각에 대하여 명령어들의 사용과 관련된 정보를 추출하는 단계
    를 더 포함하는 클래스 단위의 시그니처를 이용한 악성 어플리케이션 탐지 방법.
  3. 제2항에 있어서,
    상기 복수의 클래스들 각각에 대하여 명령어들의 사용과 관련된 정보를 추출하는 단계는
    상기 적어도 하나의 악성 어플리케이션에 대하여 역어셈블(disassemble)을 수행하는 단계; 및
    상기 복수의 클래스들 각각에 대한 어셈블리 코드 파일을 획득하는 단계
    를 포함하는 클래스 단위의 시그니처를 이용한 악성 어플리케이션 탐지 방법.
  4. 제3항에 있어서,
    상기 복수의 클래스들 각각에 대하여 명령어들의 사용과 관련된 정보를 추출하는 단계는
    상기 어셈블리 코드 파일에 포함된 명령어들을 추출하는 단계; 및
    상기 명령어들의 사용과 관련된 정보를 추출하기 위하여 상기 추출된 명령어들의 개수 또는 사용 빈도에 대한 정보를 획득하는 단계
    를 더 포함하는 클래스 단위의 시그니처를 이용한 악성 어플리케이션 탐지 방법.
  5. 삭제
  6. 제1항에 있어서,
    상기 대상 어플리케이션이 악성 어플리케이션인지 여부를 판단하는 단계는
    상기 대상 어플리케이션이 악성 어플리케이션인지 여부를 판단하기 위하여 상기 대상 어플리케이션에 포함된 명령어들의 개수 또는 사용 빈도에 대한 정보를 획득하는 단계
    를 포함하는 클래스 단위의 시그니처를 이용한 악성 어플리케이션 탐지 방법.
  7. 제1항에 있어서,
    상기 대상 어플리케이션이 악성 어플리케이션인지 여부를 판단하는 단계는
    상기 대상 어플리케이션에 포함된 명령어들 중에서 미리 설정된 사용 빈도 이상으로 사용되거나, 미리 설정된 순위보다 높은 순위의 사용 빈도를 갖는 상위 명령어들을 추출하는 단계; 및
    상기 상위 명령어들과 상기 시그니처에 포함된 적어도 일부의 명령어들을 비교하는 단계
    를 포함하는 클래스 단위의 시그니처를 이용한 악성 어플리케이션 탐지 방법.
  8. 제7항에 있어서,
    상기 비교 결과에 따라 상기 대상 어플리케이션에 포함된 명령어들과 상기 시그니처에 명령어들 사이의 동일성 혹은 유사성을 판단하는 단계
    를 더 포함하는 클래스 단위의 시그니처를 이용한 악성 어플리케이션 탐지 방법.
  9. 적어도 하나의 악성 어플리케이션을 포함하는 복수의 악성 패밀리들 각각을 대표하는 적어도 하나의 시그니처를 로딩하는 단계; 및
    상기 로딩된 적어도 하나의 시그니처를 이용하여 대상 어플리케이션이 악성 어플리케이션인지 여부를 판단하는 단계
    를 포함하고,
    상기 적어도 하나의 시그니처는
    상기 적어도 하나의 악성 어플리케이션에 대응하는 상기 복수의 클래스들 각각에 대하여 명령어들의 사용과 관련된 정보를 포함하고,
    상기 적어도 하나의 악성 어플리케이션이 제1 악성 어플리케이션 및 제2 악성 어플리케이션을 포함하고,
    상기 로딩된 적어도 하나의 시그니처는, 상기 제1 악성 어플리케이션에 대응하는 복수의 제1 클래스들 각각에 대한 명령어들의 사용과 관련된 정보와 상기 제2 악성 어플리케이션에 대응하는 복수의 제2 클래스들 각각에 대한 명령어들의 사용과 관련된 정보를 비교하여 생성되는 클래스 단위의 시그니처를 이용한 악성 어플리케이션 탐지 방법.
  10. 제9항에 있어서,
    상기 대상 어플리케이션이 악성 어플리케이션인지 여부를 판단하는 단계는
    상기 대상 어플리케이션에 포함된 명령어들의 개수 또는 사용 빈도에 대한 정보를 획득하는 단계; 및
    상기 적어도 하나의 시그니처에 포함된 상기 적어도 하나의 악성 어플리케이션에 대응하는 상기 복수의 클래스들 각각에 대하여 명령어들의 사용과 관련된 정보와 상기 대상 어플리케이션에 포함된 명령어들의 개수 또는 사용 빈도에 대한 정보를 비교하는 단계
    를 포함하는 클래스 단위의 시그니처를 이용한 악성 어플리케이션 탐지 방법.
KR1020130100581A 2013-08-23 2013-08-23 클래스 단위의 시그니처를 이용한 악성 어플리케이션 탐지 방법 및 장치 KR101480244B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020130100581A KR101480244B1 (ko) 2013-08-23 2013-08-23 클래스 단위의 시그니처를 이용한 악성 어플리케이션 탐지 방법 및 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020130100581A KR101480244B1 (ko) 2013-08-23 2013-08-23 클래스 단위의 시그니처를 이용한 악성 어플리케이션 탐지 방법 및 장치

Publications (1)

Publication Number Publication Date
KR101480244B1 true KR101480244B1 (ko) 2015-01-12

Family

ID=52588508

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130100581A KR101480244B1 (ko) 2013-08-23 2013-08-23 클래스 단위의 시그니처를 이용한 악성 어플리케이션 탐지 방법 및 장치

Country Status (1)

Country Link
KR (1) KR101480244B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180133726A (ko) * 2017-06-07 2018-12-17 주식회사 케이티 특징 벡터를 이용하여 데이터를 분류하는 장치 및 방법

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20090096823A (ko) * 2008-03-10 2009-09-15 주식회사 안철수연구소 코드 보호 기법을 고려한 악성 프로그램 감지 시스템 및 그방법
KR20110084693A (ko) * 2010-01-18 2011-07-26 (주)쉬프트웍스 안드로이드 단말 플랫폼에서의 악성 코드와 위험 파일의 진단 방법
JP2013065168A (ja) * 2011-09-16 2013-04-11 Kddi Corp アプリケーション解析装置およびプログラム
KR101256468B1 (ko) * 2012-09-11 2013-04-19 주식회사 안랩 악성 파일 진단 장치 및 방법

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20090096823A (ko) * 2008-03-10 2009-09-15 주식회사 안철수연구소 코드 보호 기법을 고려한 악성 프로그램 감지 시스템 및 그방법
KR20110084693A (ko) * 2010-01-18 2011-07-26 (주)쉬프트웍스 안드로이드 단말 플랫폼에서의 악성 코드와 위험 파일의 진단 방법
JP2013065168A (ja) * 2011-09-16 2013-04-11 Kddi Corp アプリケーション解析装置およびプログラム
KR101256468B1 (ko) * 2012-09-11 2013-04-19 주식회사 안랩 악성 파일 진단 장치 및 방법

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180133726A (ko) * 2017-06-07 2018-12-17 주식회사 케이티 특징 벡터를 이용하여 데이터를 분류하는 장치 및 방법
KR102367859B1 (ko) 2017-06-07 2022-02-25 주식회사 케이티 특징 벡터를 이용하여 데이터를 분류하는 장치 및 방법

Similar Documents

Publication Publication Date Title
KR102450834B1 (ko) 다중 특징벡터를 이용하는 행위기반 악성코드 탐지 장치 및 방법
US9621571B2 (en) Apparatus and method for searching for similar malicious code based on malicious code feature information
KR102317833B1 (ko) 악성 코드 탐지 모델 학습 방법 및 이를 이용한 탐지 방법
Bacci et al. Impact of Code Obfuscation on Android Malware Detection based on Static and Dynamic Analysis.
Salehi et al. Using feature generation from API calls for malware detection
KR101966514B1 (ko) 소프트웨어 정의 네트워크에서의 악성 프로그램 탐지 장치, 방법 및 컴퓨터 프로그램
US20200380125A1 (en) Method for Detecting Libraries in Program Binaries
Choudhary et al. A simple method for detection of metamorphic malware using dynamic analysis and text mining
Cimitile et al. Machine Learning Meets iOS Malware: Identifying Malicious Applications on Apple Environment.
JPWO2016027641A1 (ja) 脆弱性発見装置、脆弱性発見方法、及び脆弱性発見プログラム
WO2012103646A1 (en) Determining the vulnerability of computer software applications to privilege-escalation attacks
Han et al. Malware classification methods using API sequence characteristics
JP6000465B2 (ja) プロセス検査装置、プロセス検査プログラムおよびプロセス検査方法
KR101558652B1 (ko) 바이너리 정보의 시각화를 이용한 악성 코드 분석 및 변종 탐지 방법, 그 방법을 수행하는 장치
WO2017177003A1 (en) Extraction and comparison of hybrid program binary features
KR20190037895A (ko) 바이너리 파일에 기초하여 오픈소스 소프트웨어 패키지를 식별하는 방법 및 시스템
US20180341770A1 (en) Anomaly detection method and anomaly detection apparatus
TWI656453B (zh) 檢測系統及檢測方法
Mitchell et al. Systematic audit of third-party android phones
KR101480244B1 (ko) 클래스 단위의 시그니처를 이용한 악성 어플리케이션 탐지 방법 및 장치
KR102415494B1 (ko) 에뮬레이션 기반의 임베디드 기기 취약점 점검 및 검증 방법
KR101900190B1 (ko) Iat 후킹 탐지 방법 및 장치
KR102104198B1 (ko) 느긋한 심볼화를 활용한 바이너리 재조립 기술의 정확도 향상 기술 및 도구
KR101934381B1 (ko) 해킹툴 탐지 방법 및 이를 수행하는 사용자 단말 및 서버
Xin et al. Obfuscated computer virus detection using machine learning algorithm

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee