KR101907443B1 - 구성 요소 기반 악성 파일 유사성 분석 장치 및 방법 - Google Patents

구성 요소 기반 악성 파일 유사성 분석 장치 및 방법 Download PDF

Info

Publication number
KR101907443B1
KR101907443B1 KR1020170143082A KR20170143082A KR101907443B1 KR 101907443 B1 KR101907443 B1 KR 101907443B1 KR 1020170143082 A KR1020170143082 A KR 1020170143082A KR 20170143082 A KR20170143082 A KR 20170143082A KR 101907443 B1 KR101907443 B1 KR 101907443B1
Authority
KR
South Korea
Prior art keywords
frequency
module
malicious
apis
attribute
Prior art date
Application number
KR1020170143082A
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 KR1020170143082A priority Critical patent/KR101907443B1/ko
Application granted granted Critical
Publication of KR101907443B1 publication Critical patent/KR101907443B1/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/565Static detection by checking file integrity

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

본 발명은 악성 파일 유사성 분석 장치 및 방법에 관한 것으로, 특히 본 발명은 악성 실행 파일에서 발생하는 주요 구성 요소의 속성 빈도와 속성 역빈도를 이용하여 유사성을 판단할 수 있도록 한 구성 요소 기반 악성 파일 유사성 분석 장치 및 방법에 관한 것이다.
또한, 본 발명에 따르면, 다수의 실행 파일이 실행되는 시점의 각각의 실행 파일에 대응되는 다수의 API를 추출하기 위한 동적 분석 모듈; 상기 동적 분석 모듈에서 추출된 다수의 API 중에서 주요 구성 요소를 식별하기 위한 주요 구성 요소 판별 모듈; 식별된 주요 구성 요소를 기반하여 벡터를 생성하는 벡터 생성 모듈; 다수의 실행 파일에 대한 각각의 벡터를 매트릭스(Matrix)로 생성하는 매트릭스 생성 모듈; 상기 생성된 매트릭스의 각 속성에 대한 속성 빈도와 역빈도를 산출하는 속성 빈도 산출 모듈; 상기 속성 빈도 산출 모듈의 처리 과정을 거친 최종 매트릭스에 대해서 유사성을 계산하여 유사율을 산출하는 유사율 산출 모듈; 및 유사율을 기준으로 유사성을 판단하여 그룹핑하는 클러스터링 모듈을 포함하는 구성 요소 기반 악성 파일 유사성 분석 장치 및 방법을 제공한다.

Description

구성 요소 기반 악성 파일 유사성 분석 장치 및 방법{Component-based malicious file similarity analysis device and method}
본 발명은 악성 파일 유사성 분석 장치 및 방법에 관한 것으로, 특히 본 발명은 악성 실행 파일에서 발생하는 주요 구성 요소의 속성 빈도와 속성 역빈도를 이용하여 유사성을 판단할 수 있도록 한 구성 요소 기반 악성 파일 유사성 분석 장치 및 방법에 관한 것이다.
보안 시장에서 잘 알려진 공격에 대한 대응은 백신과 같은 엔드 포인트 보안 솔루션으로 일부 대응은 가능하나 지능화된 공격에 대한 대응은 어려운 상태에 있다.
특히, 신종/변종 악성코드가 매년 기하급수적으로 증가함에 따라 악성코드를 분석하고 대응하기 위한 기술변화가 새롭게 대두되고 있다.
더욱이, 유사 악성코드가 대량으로 출현함에 따라 개별적인 악성코드 분석의 한계가 있으며 대규모 실시간 분석이 불가능해져 초기 대응 실패로 피해가 확산되고 있다.
이에 따라 손쉬운 해킹 제작 툴에 의한 유사 악성코드를 빠르게 분석 및 대응 할수 있는 장치와 방법에 대한 연구가 필요하다.
공개번호 10-2008-0043201호 공개번호 10-2015-0136919호 등록번호 10-1745873호
본 발명은 상기와 같은 필요에 따라 안출된 것으로, 악성 실행 파일에서 발생하는 주요 구성 요소의 속성 빈도와 속성 역빈도를 이용하여 유사성을 판단할 수 있도록 한 구성 요소 기반 악성 파일 유사성 분석 장치 및 방법을 제공하는 데 있다.
본 발명의 장치는 다수의 실행 파일이 실행되는 시점의 각각의 실행 파일에 대응되는 다수의 API를 추출하기 위한 동적 분석 모듈; 상기 동적 분석 모듈에서 추출된 다수의 API 중에서 주요 구성 요소를 식별하기 위한 주요 구성 요소 판별 모듈; 식별된 주요 구성 요소를 기반하여 벡터를 생성하는 벡터 생성 모듈; 다수의 실행 파일에 대한 각각의 벡터를 매트릭스(Matrix)로 생성하는 매트릭스 생성 모듈; 상기 생성된 매트릭스의 각 속성에 대한 속성 빈도와 역빈도를 산출하는 속성 빈도 산출 모듈; 상기 속성 빈도 산출 모듈의 처리 과정을 거친 최종 매트릭스에 대해서 유사성을 계산하여 유사율을 산출하는 유사율 산출 모듈; 및 유사율을 기준으로 유사성을 판단하여 그룹핑하는 클러스터링 모듈을 포함한다.
또한, 본 발명의 장치의 상기 동적 분석 모듈은 실행 파일의 종류를 판별하여 가상 머신 실행 파일인 경우에 가상 머신을 구동하여 실행 파일이 실행되도록 하고, 실행 파일이 실제 머신 실행 파일인 경우에 실제 머신을 구동하여 실행 파일이 실행되도록 한다.
또한, 본 발명의 장치의 상기 동적 분석 모듈은 다수의 실행 파일을 입력받아 실행 파일의 중복 여부를 확인하여 중복되지 않는 경우에 실행 파일을 실행한다.
또한, 본 발명의 장치의 상기 주요 구성 요소 판별 모듈은 학습을 통하여 각 실행 파일에서 공통으로 호출되는 API 목록을 운영 체제 주요 API 목록으로 선정하고, 악성으로 판단된 파일들에서 특징으로 정할만한 API들에 대해서 학습되어 관리되는 API 목록을 악성 주요 API 목록으로 선정하여 선정된 운영 체제 주요 API 목록과 악성 주요 API 목록을 주요 구성 요소로 판별하는 것을 특징으로 한다.
또한, 본 발명의 장치의 상기 벡터 생성 모듈은 주요 구성 요소의 각각의 API 목록을 속성과 방향으로 하고 발생 빈도를 크기로 하는 벡터를 생성한다.
또한, 본 발명의 장치의 상기 속성 빈도 산출 모듈은 아래 수학식1에서 처럼 주요 구성 요소가 하나의 실행 파일에서 몇 번 나타나는가를 "속성 빈도수"로 계산하고, 주요 구성 요소가 몇 개의 실행 파일에서 나타나는 가를 "속성 역빈도수"로 계산하여 속성 빈도를 산출한다.
또한, 본 발명의 장치의 상기 클러스터링 모듈은 유사율을 기준으로 클러스터링 임계치보다 크거나 같은 경우에 동일한 그룹으로 그룹핑하도록 하며, 생성된 그룹의 각 대표 그룹원들과 유사율을 계산하여 클러스터링 임계치보다 크거나 같은 그룹원을 유사 악성 그룹으로 선정하고 악성이라고 판단하고, 클러스터링 임계치보다 작은 그룹원 중 가장 유사성이 큰 그룹에 대해 해당 그룹의 변종이라고 판단한다.
한편, 본 발명의 방법은 (A) 동적 분석 모듈이 다수의 실행 파일이 실행되는 시점의 각각의 실행 파일에 대응되는 다수의 API를 추출하는 단계; (B) 주요 구성 요소 판별 모듈이 상기 동적 분석 모듈에서 추출된 다수의 API 중에서 주요 구성 요소를 식별하는 단계; (C) 벡터 생성 모듈이 식별된 주요 구성 요소를 기반하여 벡터를 생성하는 단계; (D) 매트릭스 생성 모듈이 다수의 실행 파일에 대한 각각의 벡터를 매트릭스(Matrix)로 생성하는 단계; (E) 속성 빈도 산출 모듈이 상기 생성된 매트릭스의 각 속성에 대한 속성 빈도와 역빈도를 산출하는 단계; (F) 유사율 산출 모듈이 상기 속성 빈도 산출 모듈의 처리 과정을 거친 최종 매트릭스에 대해서 유사성을 계산하여 유사율을 산출하는 단계; 및 (G) 클러스터링 모듈이 유사율을 기준으로 유사성을 판단하여 그룹핑하는 단계를 포함한다.
또한, 본 발명의 방법의 상기 (A) 단계는 (A-1) 상기 동적 분석 모듈이 실행 파일의 종류를 판별하는 단계; (A-2) 상기 동적 분석 모듈이 판별 결과, 가상 머신 실행 파일인 경우에 가상 머신을 구동하여 실행 파일이 실행되도록 하여 다수의 실행 파일이 실행되는 시점의 각각의 실행 파일에 대응되는 다수의 API를 추출하는 단계; 및 (A-3) 상기 동적 분석 모듈이 판별 결과, 실행 파일이 실제 머신 실행 파일인 경우에 실제 머신을 구동하여 실행 파일이 실행되도록 하여 다수의 실행 파일이 실행되는 시점의 각각의 실행 파일에 대응되는 다수의 API를 추출하는 단계를 포함한다.
또한, 본 발명의 방법의 상기 (B) 단계는 (B-1) 상기 주요 구성 요소 판별 모듈이 학습을 통하여 각 실행파일에서 공통으로 호출되는 API 목록을 운영 체제 주요 API 목록으로 선정하는 단계; (B-2) 상기 주요 구성 요소 판별 모듈이 악성으로 판단된 파일들에서 특징으로 정할만한 API들에 대해서 학습되어 관리되는 API 목록을 악성 주요 API 목록으로 선정하는 단계; 및 (B-3) 상기 주요 구성 요소 판별 모듈이 선정된 운영 체제 주요 API 목록과 악성 주요 API 목록을 주요 구성 요소로 판별하는 단계를 포함한다.
또한, 본 발명의 방법의 상기 (C) 단계에서 상기 벡터 생성 모듈은 주요 구성 요소의 각각의 API 목록을 속성과 방향으로 하고 발생 빈도를 크기로 하는 벡터를 생성한다.
또한, 본 발명의 방법의 상기 (E) 단계에서 상기 속성 빈도 산출 모듈은 아래 수학식1에서처럼 주요 구성 요소가 하나의 실행 파일에서 몇 번 나타나는가를 "속성 빈도수"로 계산하고, 주요 구성요소가 몇 개의 실행 파일에서 나타나는가를 "속성 역빈도수"로 계산하여 속성 빈도를 산출한다.
상기와 같은 본 발명에 따르면 신종 악성 코드에 대해서 기존 악성 코드와의 유사성을 판단하여 악성 여부를 판단할 수 있다.
또한, 본 발명에 따르면 대량 유사 악성 코드에 대해서 악성 코드와의 유사성을 판별하여 변종 여부를 판단할 수 있다.
또한, 본 발명에 따르면 "주요 구성 요소 판별 모듈"을 구성함으로써 다차원 매트릭스 구성시 차원을 축소하는 효과가 있으며, 메모리 사용량을 감소시키는 효과가 있다.
또한, 본 발명에 따르면, "속성 빈도 산출 모듈"에서 "분석한 실행 파일 리스트의 누적 정보"와 "주요 구성 요소 발생 빈도 누적 정보"를 학습하고, 이를 기반하여 학습된 데이터를 사용하여 유사성 분류가 가능하다.
또한, 본 발명에 따르면, "벡터 생성 모듈"에서 벡터의 인덱스 생성 속도를 향상시키기 위하여 벡터 인덱싱 정보를 캐싱하여 처리하도록 하였다.
도 1은 본 발명의 바람직한 일 실시예에 따른 구성 요소 기반 악성 파일 유사성 분석 장치의 구성도이다.
도 2는 실행 파일이 실행시 추출되는 API 목록을 보여주는 예시도이다.
도 3은 주요 API 목록을 인덱스화한 인덱스 테이블을 보여주는 예시도이다.
도 4는 인덱스화된 API 인덱스 목록을 대상으로 생성된 벡터를 보여주는 예시도이다.
도 5는 매트릭스를 보여주는 예시도이다.
도 6은 본 발명의 바람직한 일 실시예에 따른 구성 요소 기반 악성 파일 유사성 분석 방법의 흐름도이다.
도 7은 도 6의 API 목록 추출 과정의 상세한 흐름도이다.
도 8은 도 6의 주요 구성 요소 판별 과정의 상세한 흐름도이다.
도 9는 도 6의 벡터 생성 과정의 상세한 흐름도이다.
도 10은 도 6의 매트릭스 생성 과정의 상세한 흐름도이다.
도 11은 도 6의 클러스터링 과정의 상세한 흐름도이다.
본 발명은 다양한 변환을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 이하에서는 특정 실시예들을 첨부된 도면을 기초로 상세히 설명하고자 한다.
본 발명을 설명함에 있어서 관련된 공지 기술에 대한 구체적인 설명이 본 발명의 요지를 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다.
제1, 제2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되는 것은 아니며, 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다.
도 1은 본 발명의 바람직한 일 실시예에 따른 구성 요소 기반 악성 파일 유사성 분석 장치의 구성도이다.
도 1을 참조하면, 본 발명의 바람직한 일 실시예에 따른 구성 요소 기반 악성 파일 유사성 분석 장치는 다수의 실행 파일이 실행되는 시점의 각각의 실행 파일에 대응되는 다수의 API를 추출하기 위한 동적 분석 모듈(100), 상기 동적 분석 모듈에서 추출된 다수의 API 중에서 주요 구성 요소를 식별하기 위한 주요 구성 요소 판별 모듈(200), 식별된 주요 구성 요소를 기반하여 벡터를 생성하는 벡터 생성 모듈(300), 다수의 실행 파일에 대한 각각의 벡터를 매트릭스(Matrix)로 생성하는 매트릭스 생성 모듈(400), 상기 생성된 매트릭스의 각 속성에 대한 빈도와 역빈도를 산출하는 속성 빈도 산출 모듈(500), 속성 빈도 산출 모듈(500)의 처리 과정을 거친 최종 매트릭스에 대해서 유사성을 계산하여 유사율을 산출하는 유사율 산출 모듈(600) 및 유사율을 기준으로 유사성을 판단하여 그룹핑하는 클러스터링 모듈(700)을 포함한다.
이와 같은 구성에서 상기 동적 분석 모듈(100)은 가상 머신(Virtual Machine) 또는 실제 머신(Real Machine)을 이용하여 다수의 실행 파일을 실행할 수 있는 환경을 제공하며, 다수의 실행 파일이 실행되는 시점에 각각의 실행 파일이 실행되면서 호출되는 각각의 실행 파일에 대응되는 다수의 API(application programming interface )에 대한 목록(일예로 n개의 API 목록)을 도 2에 도시된 바와 같이 후킹으로 추출하여 저장한다.
이때, 상기 동적 분석 모듈(100)은 실행 파일이 가상 머신 실행 파일인 경우에 가상 머신을 구동하여 실행 파일이 실행되도록 하고, 실행 파일이 실제 머신 실행 파일인 경우에 실제 머신을 구동하여 실행 파일이 실행되도록 한다.
그리고, 상기 동적 분석 모듈(100)은 다수의 실행 파일(일예로 N개의 실행 파일)을 입력받아 실행 파일을 순차적으로 실행하게 되는데, 먼저 실행 파일의 중복 여부를 확인하여 중복되지 않는 경우에 실행 파일을 실행한다.
그리고, 주요 구성 요소 판별 모듈(200)은 운영 체제의 메모리 주소, 네트워크 소켓, 파일 접근, 파일 저장, 파일 읽기, 파일 변경, 파일 암호화, 파일 복호화 등에서 자주 사용되는 "운영 체제 주요 API 목록"과 실행 파일 중에서 악성 파일에서 자주 사용되는 "악성 주요 API 목록"을 주요 구성 요소로 구별한다.
상기 운영 체제 API 목록은 운영 체제에서 동작되기 위한 필수 API 목록과 개발자가 구현한 API 목록, window API 목록 및 기타 라이브러리에서 제공되는 API 목록이 존재한다.
이처럼 운영 체제 API 목록은 window API의 모든 API가 될 수 있기 때문에 매우 다양하며, 상기 주요 구성 요소 판별 모듈(200)은 학습을 통하여 각 실행 파일(정상/비정상 파일포함)에서 공통으로 호출되는 API 목록을 운영 체제 주요 API로 선정한다.
그리고, 악성 파일에 사용되는 API 목록은 이미 악성으로 판단된 파일들에서 특징으로 정할만한 API들에 대해서 학습되어 관리되는 API 목록을 악성 주요 API 목록으로 선정한다.
이처럼 악성 파일에서 사용되는 API 목록은 학습됨에 따라 추가되기 때문에 모두 나열하기에는 어렵겠지만 예를 들어 NtDeleteFile, CreateDirectoryW, CreateDirectoryExW, RemoveDirectoryA, RemoveDirectoryW, FindFirstFileExA, FindFirstFileExW 등이 있다.
이렇게 생성된 악성 주요 API 목록과 운영 체제 주요 API 목록을 주요 구성 요소로 정의하고, 이를 행위 지표로 사용할 수 있도록 재가공하여 데이터베이스(미도시)에 저장한다.
여기에서, 재가공이란 주요 구성 요소 판별 모듈(200)이 "주요 구성 요소"의 목록에 해당하는 주요 API 목록을 도 3에 도시된 바와 같이 인덱스화하여 주요 API 인덱스 테이블을 생성하는 것을 의미하며, 인덱스화된 주요 API 인덱스 목록을 행위지표로 사용할 수 있다.
이와 같은 주요 구성 요소에 대한 인덱스화된 주요 API 인덱스 목록은 데이터베이스에 주요 구성 요소 이름과 매핑되어 저장되어 있으며, 주요 구성 요소 판별 모듈(200)은 필요에 따라 매핑된 정보를 참조하여 필요한 처리를 수행할 수 있다.
예를 들어, API 목록 중 WriteProcessMemory의 경우에 API 이름 그대로 사용하면 문자열을 길이가 길고 이에 따른 메모리 사용 및 자원이 많이 소요된다. 이에 따라 주요 구성 요소 판별 모듈(200)은 API 목록을 인덱스하여 처리하도록 하며, 일예로, WriteProcessMemory의 API 목록은 1로 인덱스화하고, Module32NextW의 API 목록을 2로 인덱스화할 수 있다.
이와 같은 주요 구성 요소 판별 모듈(200)은 매트릭스 생성 모듈(500)에서 사용되는 매트릭스(Matrix)의 차원을 매트릭스 생성 전에 축소하여 처리될 수 있도록 한다.
이때, 악성에서 자주 사용되는 "악성 주요 API 목록"과 "운영 체제 주요 API 목록"은 유사율을 측정함에 따라 자동으로 학습되어 업데이트 되도록 되어 있다.
또한, "주요 구성 요소"는 사용자가 임의의 단어를 추가하여 처리할 수도 있다.
또한, "주요 구성 요소"는 API 목록의 이름을 기준으로 어간 처리(Stemming)를 통하여 유사한 API에 대해 일원화시킬 수 있다.
한편, 상기 벡터 생성 모듈(300)은 주요 구성 요소의 각각의 API 목록을 속성과 방향으로 하고 발생 빈도를 크기로 하는 벡터를 생성하는 기능을 한다.
이때, 상기 벡터 생성 모듈(300)은 주요 구성 요소를 구성하는 API 목록이 인덱스화되어 있는 경우에 각각의 주요 API 인덱스 목록을 속성과 방향으로 하고, 발생 빈도를 크기로 하는 벡터를 생성하는데 그 예가 도 4에 도시되어 있다.
다음으로, 매트릭스 생성 모듈(400)은 하나 이상의 벡터로 구성되어 있으며, 다수의 실행 파일에 대해서 1:N 유사성 비교를 위한 매트릭스를 생성한다.
이때, 도 5에 도시된 바와 같이 매트릭스의 행은 실행 파일을 나타내며, 매트릭스의 열은 속성(주요 구성요소들)을 나타낸다.
이처럼 "악성에서 자주 사용되는 API 목록(악성 주요 API 목록)" 과 운영 체제 주요 API 목록" 에 대한 "API 목록을 인덱스화"하여 여러개의 벡터들에 생성된 매트릭스 정보를 벡터 인덱스(Vector Index) 사전 정보(도 5로 도시되어 있다)라고 명명할 수 있다.
다음으로, 속성 빈도 산출 모듈(500)는 주요 구성 요소가 하나의 실행 파일에서 몇번 나타나는가를 "속성 빈도수"로 계산하고, 주요 구성 요소가 몇 개의 실행 파일에서 나타나는가를 "속성 역빈도수"로 계산하여 생성된 매트릭스의 크기를 갱신하도록 한다.
하나의 실행 파일에 대한 속성 빈도를 산출하는 계산식은 다음과 같다.
(수학식 1)
속성 빈도= "속성 빈도수" + "속성 역빈도수"
"속성 빈도수" = "단일 실행 파일의 주요 구성 요소의 빈도수" / "단일 실행 파일의 전체 구성 요소 수"
"속성 역빈도수" = log("학습된 악성 파일 전체 수" / "학습된 악성 파일 전체에서 해당 주요 구성 요소가 나타난 파일 빈도수")
이처럼 속성 빈도를 산출하기 위하여, 속성 빈도 산출 모듈(500)은 분석한 실행 파일의 누적된 정보, 즉 분석한 실행 파일 목록 누적 정보를 데이터베이스에 저장한다.
또한, 속성 빈도 산출 모듈(500)은 주요 구성 요소 발생 빈도의 누적 정보를 데이터베이스에 저장한다.
한편, 유사율 산출 모듈(600)은 1:N에 대한 유사성을 비교할 수 있도록 각 실행 파일들의 속성들에 대해서 생성된 매트릭스의 방향과 크기를 비교하여 각 벡터의 방향이 서로 얼마나 다른지를 판단할 수 있으며, 코사인 유사도(Cosine Similarity)를 계산하여 벡터의 유사성을 판단한다.
두 벡터의 방향이 같으면 1의 값을, 방향이 다르면 1보다 작은 값을, 전혀 다르면 0의 값을 나타낸다.
다음으로, 클러스터링 모듈(700)은 계산된 유사율을 기준으로 클러스터링 임계치보다 크거나 같은 경우에 동일한 그룹으로 그룹핑하도록 한다.
클러스터링 임계치의 범위는 1~99이며, 기본값은 99이고 설정이 가능하다.
상기 클러스터링 모듈(700)에서는 생성된 그룹의 각 대표 그룹원들과 유사율을 계산하여 클러스터링 임계치보다 크거나 같은 그룹원을 유사 악성 그룹으로 선정하고 악성이라고 판단한다.
유사율을 계산하여 클러스터링 임계치보다 작은 그룹원 중 가장 유사성이 큰 그룹에 대해 해당 그룹의 변종이라고 판단한다.
도 6은 본 발명의 바람직한 일 실시예에 따른 구성 요소 기반 악성 파일 유사성 분석 방법의 흐름도이다.
도 6을 참조하면, 본 발명의 바람직한 일 실시예에 따른 구성 요소 기반 악성 파일 유사성 분석 방법은 API 목록 추출 과정(S100)과, 주요 구성 요소 판별 과정(S200)과, 벡터 생성 과정(S300)과, 매트릭스 생성 과정(S400)과, 속성 빈도 산출 과정(S500)과, 유사율 산출 과정(S600) 및 클러스터링 과정(S700)을 포함한다.
상기 API 목록 추출 과정(S100)은 도 7에 도시되어 있는데 먼저 상기 동적 분석 모듈(100)은 다수의 실행 파일(일예로 N개의 실행 파일)을 입력받아(S102) 실행 파일을 순차적으로 실행하게 되는데, 먼저 실행 파일의 중복 여부를 확인하여(S104) 중복되지 않는 경우에 실행 파일을 실행한다.
이때, 상기 동적 분석 모듈(100)은 실행 파일의 종류를 판단하여(S106) 가상 머신 실행 파일인 경우에 가상 머신을 구동하여 실행 파일이 실행되도록 하고(S108), 실행 파일이 실제 머신 실행 파일인 경우에 실제 머신을 구동하여 실행 파일이 실행되도록 한다(S110)..
이처럼 상기 동적 분석 모듈(100)은 가상 머신(Virtual Machine) 또는 실제 머신(Real Machine)을 이용하여 실행 파일을 실행할 수 있는 환경을 제공하여, 실행 파일이 실행되는 시점에 호출되는 API(application programming interface ) 목록(일예로 n개의 API 목록)을 후킹으로 추출하여(S110, S114) 저장한다(S116).
다음으로, 상기 주요 구성 요소 판별 과정(S200)은 도 8에 도시된 바와 같이, 주요 구성 요소 판별 모듈(200)이 운영 체제의 메모리 주소, 네트워크 소켓, 파일 접근, 파일 저장, 파일 읽기, 파일 변경, 파일 암호화, 파일 복호화 등에서 자주 사용되는 "운영 체제 주요 API 목록"과 실행 파일 중에서 악성 파일에서 자주 사용되는 "악성 주요 API 목록"을 주요 구성 요소로 구별한다.
상기 운영 체제 API 목록은 window API의 모든 API가 될 수 있기 때문에 매우 다양하며, 상기 주요 구성 요소 판별 모듈(200)은 학습을 통하여 각 실행 파일(정상/비정상 파일 포함)에서 공통으로 호출되는 API 목록을 운영 체제 주요 API로 선정한다(S202).
그리고, 주요 구성 요소 판별 모듈(200)은 이미 악성으로 판단된 파일들에서 특징으로 정할만한 API들에 대해서 학습되어 관리되는 API 목록을 악성 주요 API 목록으로 선정한다(S204).
이렇게 생성된 악성 주요 API 목록과 운영 체제 주요 API 목록을 주요 구성 요소로 정의하고, 이를 행위 지표로 사용할 수 있도록 주요 구성 요소 판별 모듈(200)은 "주요 구성 요소"의 목록에 해당하는 주요 API 목록을 인덱스화하여 주요 API 인덱스 테이블을 생성한다(S206).
이와 같은 주요 구성 요소에 대한 인덱스화된 주요 API 인덱스 목록은 주요 구성 요소 데이터베이스에 주요 구성 요소 이름과 매핑되어 저장되어 있으며, 주요 구성 요소 판별 모듈(200)은 필요에 따라 매핑된 정보를 참조하여 필요한 처리를 수행할 수 있다.
이와 같은 주요 구성 요소 판별 모듈(200)은 매트릭스 생성 모듈(500)에서 사용되는 매트릭스(Matrix)의 차원을 매트릭스 생성 전에 축소하여 처리될 수 있도록 하며, 악성에서 자주 사용되는 "악성 주요 API 목록"과 "운영 체제 주요 API 목록"은 유사율을 측정함에 따라 자동으로 학습되어 업데이트 되도록 되어 있다.
또한, "주요 구성 요소"는 사용자가 임의의 단어를 추가하여 처리할 수도 있으며, "주요 구성 요소"는 API 목록의 이름을 기준으로 어간 처리(Stemming)를 통하여 유사한 API에 대해 일원화시킬 수도 있다.
다음으로, 상기 벡터 생성 과정(S300)은 도 9에 도시되어 있는 바와 같이, 벡터 생성 모듈(300)이 주요 구성 요소의 각각의 API 목록을 속성과 방향으로 하고 발생 빈도를 크기로 하는 벡터를 생성한다.
이때, 상기 벡터 생성 모듈(300)은 주요 구성 요소를 구성하는 API 목록이 인덱스화되어 있는 경우에 API 인덱스 목록을 속성과 방향으로 하고(S402), 발생 빈도를 크기로 하는 벡터를 생성한다(S404).
이를 위하여 벡터 생성 모듈(300)은 먼저 API 인덱스 테이블을 테이터베이스의 벡터 인덱스 사전 정보를 기준으로 속성 순서에 따라 벡터 속성을 재구성한다.
여기에서 벡터 인덱스 사전 정보란 악성에서 자주 사용되는 API 목록(악성 주요 API 목록)과 "운영 체제 주요 API 목록" 에 대한 행위 지표를 "API 목록을 인덱스화"하여 여러개의 벡터들에 대해서 매트릭스를 생성하고 이렇게 생성된 매트릭스 정보를 의미하며, 매트릭스는 한 개 이상의 벡터(vector)로 구성되어 있다.
다음으로, 상기 매트릭스 생성 과정(S400)은 도 10에 도시되어 있는 바와 같이 매트릭스 생성 모듈(400)이 다수의 실행 파일에 대해서 1:N 유사성 비교를 위한 매트릭스를 생성한다.
이때, 매트릭스의 행은 실행 파일을 나타내며, 매트릭스의 열은 속성(주요 구성 요소들)을 나타낸다.
다음으로, 속성 빈도 산출 과정(S500)은 먼저 속성 빈도 산출 모듈(500)이 주요 구성 요소가 하나의 실행 파일에서 몇 번 나타나는가를 "속성 빈도수"로 계산하고, 주요 구성 요소가 몇 개의 실행 파일에서 나타나는가를 "속성 역빈도수"로 계산하여 속성 빈도를 산출한다(S502).
이때, 속성 빈도 산출 모듈(500)은 속성 가중치를 매트릭스에 적용하여 계산상의 편리성을 도모한다(S504).
다음으로, 클러스터링 과정(S700)은 클러스터링 모듈(700)이 계산된 유사율을 기준으로 클러스터링 임계치보다 크거나 같은 경우에 동일한 그룹으로 그룹핑 하도록 한다.
클러스터링 임계치의 범위는 1~99이며, 기본값은 99이고 설정이 가능하다.
상기 클러스터링 모듈(700)에서는 생성된 그룹의 각 대표 그룹원들과 유사율을 계산하여 클러스터링 임계치와 비교하여(S602), 임계치보다 크거나 같은 그룹원을 유사 악성 그룹으로 선정하고 악성이라고 판단하며 이후에 해당 그룹원을 추가한다(S604).
이와 달리 클러스터링 모듈(700)은 유사율이 임계치보다 작으면 신규 그룹을 생성한 후에(S606) 클러스터링 임계치보다 작은 그룹원 중 가장 유사성이 큰 그룹에 대해 해당 그룹의 변종이라고 판단한다(S608).
상기와 같은 본 발명에 따르면 신종 악성 코드에 대해서 기존 악성 코드와의 유사성을 판단하여 악성 여부를 판단할 수 있다.
또한, 본 발명에 따르면 대량 유사 악성 코드에 대해서 악성 코드와의 유사성을 판별하여 변종 여부를 판단할 수 있다.
또한, 본 발명에 따르면 "주요 구성 요소 판별 모듈"을 구성함으로써 다차원 매트릭스 구성시 차원을 축소하는 효과가 있으며, 메모리 사용량을 감소시키는 효과가 있다.
또한, 본 발명에 따르면, "속성 빈도 산출 모듈"에서 "분석한 실행 파일 리스트의 누적 정보"와 "주요 구성 요소 발생 빈도 누적 정보"를 학습하고, 이를 기반하여 학습된 데이터를 사용하여 유사성 분류가 가능하다.
또한, 본 발명에 따르면, "벡터 생성 모듈"에서 벡터의 인덱스 생성 속도를 향상시키기 위하여 벡터 인덱싱 정보를 캐싱하여 처리하도록 하였다.
이상의 설명은 본 발명의 기술 사상을 예시적으로 설명한 것에 불과한 것으로서, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 다양한 수정 및 변형이 가능할 것이다. 따라서 본 발명에 기재된 실시예들은 본 발명의 기술 사상을 한정하기 위한 것이 아니라 설명하기 위한 것이고, 이러한 실시예에 의하여 본 발명의 기술 사상이 한정되는 것은 아니다. 본 발명의 보호 범위는 아래의 청구범위에 의해서 해석되어야 하며, 그와 동등한 범위 내에 있는 모든 기술 사상은 본 발명의 권리범위에 포함되는 것으로 해석되어야 할 것이다.
100 : 동적 분석 모듈 200 : 주요 구성 요소 판별 모듈
300 : 벡터 생성 모듈 400 : 매트릭스 생성 모듈
500 : 속성 빈도 산출 모듈 600 : 유사율 산출 모듈
700 : 클러스터링 모듈

Claims (12)

  1. 다수의 실행 파일이 실행되는 시점의 각각의 실행 파일에 대응되는 다수의 API를 추출하기 위한 동적 분석 모듈;
    상기 동적 분석 모듈에서 추출된 다수의 API 중에서 주요 구성 요소를 식별하기 위한 주요 구성 요소 판별 모듈;
    식별된 주요 구성 요소를 기반하여 벡터를 생성하는 벡터 생성 모듈;
    다수의 실행 파일에 대한 각각의 벡터를 매트릭스(Matrix)로 생성하는 매트릭스 생성 모듈;
    상기 생성된 매트릭스의 각 속성에 대한 속성 빈도와 역빈도를 산출하는 속성 빈도 산출 모듈;
    상기 속성 빈도 산출 모듈의 처리 과정을 거친 최종 매트릭스에 대해서 유사성을 계산하여 유사율을 산출하는 유사율 산출 모듈; 및
    유사율을 기준으로 유사성을 판단하여 그룹핑하는 클러스터링 모듈을 포함하며,
    상기 벡터 생성 모듈은 주요 구성 요소의 각각의 API 목록을 속성과 방향으로 하고 발생 빈도를 크기로 하는 벡터를 생성하는 것을 특징으로 하는 구성 요소 기반 악성 파일 유사성 분석 장치.
  2. 청구항 1항에 있어서,
    상기 동적 분석 모듈은 실행 파일의 종류를 판별하여 가상 머신 실행 파일인 경우에 가상 머신을 구동하여 실행 파일이 실행되도록 하고, 실행 파일이 실제 머신 실행 파일인 경우에 실제 머신을 구동하여 실행 파일이 실행되도록 하는 구성 요소 기반 악성 파일 유사성 분석 장치.
  3. 청구항 1항에 있어서,
    상기 동적 분석 모듈은 다수의 실행 파일을 입력받아 실행 파일의 중복 여부를 확인하여 중복되지 않는 경우에 실행 파일을 실행하는 구성 요소 기반 악성 파일 유사성 분석 장치.
  4. 청구항 1항에 있어서,
    상기 주요 구성 요소 판별 모듈은 학습을 통하여 각 실행 파일에서 공통으로 호출되는 API 목록을 운영 체제 주요 API 목록으로 선정하고, 악성으로 판단된 파일들에서 특징으로 정할만한 API들에 대해서 학습되어 관리되는 API 목록을 악성 주요 API 목록으로 선정하여 선정된 운영 체제 주요 API 목록과 악성 주요 API 목록을 주요 구성 요소로 판별하는 것을 특징으로 하는 구성 요소 기반 악성 파일 유사성 분석 장치.
  5. 삭제
  6. 청구항 1항에 있어서,
    상기 속성 빈도 산출 모듈은 아래 수학식1에서처럼 주요 구성 요소가 하나의 실행 파일에서 몇 번 나타나는가를 "속성 빈도수"로 계산하고, 주요 구성 요소가 몇 개의 실행 파일에서 나타나는가를 "속성 역빈도수"로 계산하여 속성 빈도를 산출하는 구성 요소 기반 악성 파일 유사성 분석 장치.
    (수학식 1)
    속성 빈도= "속성 빈도수" + "속성 역빈도수"
    "속성 빈도수" = "단일 실행 파일의 주요 구성 요소의 빈도수" / "단일 실행 파일의 전체 구성 요소 수"
    "속성 역빈도수" = log("학습된 악성 파일 전체 수" / "학습된 악성 파일 전체에서 해당 주요 구성 요소가 나타난 파일 빈도수")
  7. 청구항 1항에 있어서,
    상기 클러스터링 모듈은 유사율을 기준으로 클러스터링 임계치보다 크거나 같은 경우에 동일한 그룹으로 그룹핑 하도록 하며, 생성된 그룹의 각 대표 그룹원들과 유사율을 계산하여 클러스터링 임계치보다 크거나 같은 그룹원을 유사 악성 그룹으로 선정하고 악성이라고 판단하고, 클러스터링 임계치보다 작은 그룹원 중 가장 유사성이 큰 그룹에 대해 해당 그룹의 변종이라고 판단하는 구성 요소 기반 악성 파일 유사성 분석 장치.
  8. (A) 동적 분석 모듈이 다수의 실행 파일이 실행되는 시점의 각각의 실행 파일에 대응되는 다수의 API를 추출하는 단계;
    (B) 주요 구성 요소 판별 모듈이 상기 동적 분석 모듈에서 추출된 다수의 API 중에서 주요 구성 요소를 식별하는 단계;
    (C) 벡터 생성 모듈이 식별된 주요 구성 요소를 기반하여 벡터를 생성하는 단계;
    (D) 매트릭스 생성 모듈이 다수의 실행 파일에 대한 각각의 벡터를 매트릭스(Matrix)로 생성하는 단계;
    (E) 속성 빈도 산출 모듈이 상기 생성된 매트릭스의 각 속성에 대한 속성 빈도와 역빈도를 산출하는 단계;
    (F) 유사율 산출 모듈이 상기 속성 빈도 산출 모듈의 처리 과정을 거친 최종 매트릭스에 대해서 유사성을 계산하여 유사율을 산출하는 단계; 및
    (G) 클러스터링 모듈이 유사율을 기준으로 유사성을 판단하여 그룹핑하는 단계를 포함하며,
    상기 (C) 단계에서 상기 벡터 생성 모듈은 주요 구성 요소의 각각의 API 목록을 속성과 방향으로 하고 발생 빈도를 크기로 하는 벡터를 생성하는 것을 특징으로 하는 구성 요소 기반 악성 파일 유사성 분석 방법.
  9. 청구항 8항에 있어서,
    상기 (A) 단계는
    (A-1) 상기 동적 분석 모듈이 실행 파일의 종류를 판별하는 단계;
    (A-2) 상기 동적 분석 모듈이 판별 결과, 가상 머신 실행 파일인 경우에 가상 머신을 구동하여 실행 파일이 실행되도록 하여 다수의 실행 파일이 실행되는 시점의 각각의 실행 파일에 대응되는 다수의 API를 추출하는 단계; 및
    (A-3) 상기 동적 분석 모듈이 판별 결과, 실행 파일이 실제 머신 실행 파일인 경우에 실제 머신을 구동하여 실행 파일이 실행되도록 하여 다수의 실행 파일이 실행되는 시점의 각각의 실행 파일에 대응되는 다수의 API를 추출하는 단계를 포함하는 구성 요소 기반 악성파일 유사성 분석 방법.
  10. 청구항 8항에 있어서,
    상기 (B) 단계는
    (B-1) 상기 주요 구성 요소 판별 모듈이 학습을 통하여 각 실행 파일에서 공통으로 호출되는 API 목록을 운영 체제 주요 API 목록으로 선정하는 단계;
    (B-2) 상기 주요 구성 요소 판별 모듈이 악성으로 판단된 파일들에서 특징으로 정할만한 API들에 대해서 학습되어 관리되는 API 목록을 악성 주요 API 목록으로 선정하는 단계; 및
    (B-3) 상기 주요 구성 요소 판별 모듈이 선정된 운영 체제 주요 API 목록과 악성 주요 API 목록을 주요 구성 요소로 판별하는 단계를 포함하는 구성 요소 기반 악성 파일 유사성 분석 방법.
  11. 삭제
  12. 청구항 8항에 있어서,
    상기 (E) 단계에서 상기 속성 빈도 산출 모듈은 아래 수학식1에서처럼 주요 구성 요소가 하나의 실행 파일에서 몇 번 나타나는가를 "속성 빈도수"로 계산하고, 주요 구성요소가 몇 개의 실행 파일에서 나타나는가를 "속성 역빈도수"로 계산하여 속성 빈도를 산출하는 구성 요소 기반 악성 파일 유사성 분석 방법.
    (수학식 1)
    속성 빈도= "속성 빈도수" + "속성 역빈도수"
    "속성 빈도수" = "단일 실행 파일의 주요 구성 요소의 빈도수" / "단일 실행 파일의 전체 구성 요소 수"
    "속성 역빈도수" = log("학습된 악성 파일 전체 수" / "학습된 악성 파일 전체에서 해당 주요 구성 요소가 나타난 파일 빈도수")
KR1020170143082A 2017-10-31 2017-10-31 구성 요소 기반 악성 파일 유사성 분석 장치 및 방법 KR101907443B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020170143082A KR101907443B1 (ko) 2017-10-31 2017-10-31 구성 요소 기반 악성 파일 유사성 분석 장치 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170143082A KR101907443B1 (ko) 2017-10-31 2017-10-31 구성 요소 기반 악성 파일 유사성 분석 장치 및 방법

Publications (1)

Publication Number Publication Date
KR101907443B1 true KR101907443B1 (ko) 2018-10-12

Family

ID=63876287

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170143082A KR101907443B1 (ko) 2017-10-31 2017-10-31 구성 요소 기반 악성 파일 유사성 분석 장치 및 방법

Country Status (1)

Country Link
KR (1) KR101907443B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11019099B2 (en) 2019-04-25 2021-05-25 Foundation Of Soongsil University-Industry Cooperation Method of application malware detection based on dynamic API extraction, and readable medium and apparatus for performing the method

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101589656B1 (ko) * 2015-01-19 2016-01-28 한국인터넷진흥원 Api 기반 악성 코드 변종 탐지 조회 시스템 및 방법

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101589656B1 (ko) * 2015-01-19 2016-01-28 한국인터넷진흥원 Api 기반 악성 코드 변종 탐지 조회 시스템 및 방법

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11019099B2 (en) 2019-04-25 2021-05-25 Foundation Of Soongsil University-Industry Cooperation Method of application malware detection based on dynamic API extraction, and readable medium and apparatus for performing the method

Similar Documents

Publication Publication Date Title
CN108268777B (zh) 一种利用补丁信息进行未知漏洞发现的相似性检测方法
Li et al. On challenges in evaluating malware clustering
EP3258409B1 (en) Device for detecting terminal infected by malware, system for detecting terminal infected by malware, method for detecting terminal infected by malware, and program for detecting terminal infected by malware
CN111291070B (zh) 一种异常sql检测方法、设备及介质
CN112866023B (zh) 网络检测、模型训练方法、装置、设备及存储介质
CN108549814A (zh) 一种基于机器学习的sql注入检测方法、数据库安全***
CN111368289B (zh) 一种恶意软件检测方法和装置
RU2722692C1 (ru) Способ и система выявления вредоносных файлов в неизолированной среде
KR102302484B1 (ko) 특성 선택에 기반한 모바일 악성 코드 분류 방법, 이를 수행하기 위한 기록 매체 및 장치
CN111222137A (zh) 一种程序分类模型训练方法、程序分类方法及装置
Kumar et al. Machine learning based malware detection in cloud environment using clustering approach
CN111338692A (zh) 基于漏洞代码的漏洞分类方法、装置及电子设备
CN106682515B (zh) 恶意代码分析中行为能力的度量方法
KR101907443B1 (ko) 구성 요소 기반 악성 파일 유사성 분석 장치 및 방법
CN113515450A (zh) 一种环境异常检测方法和***
JP2017004097A (ja) 情報分析システム、情報分析方法
CN112464297A (zh) 硬件木马检测方法、装置及存储介质
CN111368128A (zh) 目标图片的识别方法、装置和计算机可读存储介质
US20230098919A1 (en) Malware attributes database and clustering
CN112367336B (zh) webshell拦截检测方法、装置、设备及可读存储介质
CN114925365A (zh) 一种文件处理方法、装置、电子设备及存储介质
JP2019175334A (ja) 情報処理装置、制御方法、及びプログラム
EP4266200A1 (en) Generating device, generating method, and generating program
JP2016048485A (ja) 遺伝子発現情報解析装置、遺伝子発現情報解析方法、及びプログラム
CN113032774B (zh) 异常检测模型的训练方法、装置、设备及计算机存储介质

Legal Events

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