KR20190064264A - 하이브리드 분석을 통한 머신러닝 기반의 랜섬웨어 탐지 방법 및 장치 - Google Patents

하이브리드 분석을 통한 머신러닝 기반의 랜섬웨어 탐지 방법 및 장치 Download PDF

Info

Publication number
KR20190064264A
KR20190064264A KR1020170163681A KR20170163681A KR20190064264A KR 20190064264 A KR20190064264 A KR 20190064264A KR 1020170163681 A KR1020170163681 A KR 1020170163681A KR 20170163681 A KR20170163681 A KR 20170163681A KR 20190064264 A KR20190064264 A KR 20190064264A
Authority
KR
South Korea
Prior art keywords
frequency
event
objects
vector
api
Prior art date
Application number
KR1020170163681A
Other languages
English (en)
Other versions
KR101988747B1 (ko
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 KR1020170163681A priority Critical patent/KR101988747B1/ko
Publication of KR20190064264A publication Critical patent/KR20190064264A/ko
Application granted granted Critical
Publication of KR101988747B1 publication Critical patent/KR101988747B1/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases
    • G06F16/285Clustering or classification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/18Complex mathematical operations for evaluating statistical data, e.g. average values, frequency distributions, probability functions, regression analysis

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Health & Medical Sciences (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Evolutionary Biology (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Operations Research (AREA)
  • Probability & Statistics with Applications (AREA)
  • Virology (AREA)
  • Algebra (AREA)
  • General Health & Medical Sciences (AREA)
  • Debugging And Monitoring (AREA)

Abstract

하이브리드 분석을 통한 머신러닝 기반의 랜섬웨어 탐지 방법 및 장치가 개시된다. 일 실시예에 따른 랜섬웨어 탐지 방법은, 복수의 객체를 수신하는 단계와, 상기 복수의 객체에 대하여 정적 분석(static analysis) 및 동적 분석(dynamic analysis)을 수행하여 데이터셋(dataset)을 생성하는 단계와, 상기 데이터셋을 필터링하여 복수의 모델링 변수를 생성하는 단계와, 상기 복수의 모델링 변수에 기초한 모델링을 통해 상기 복수의 객체 각각의 랜섬웨어 여부를 판별(discriminate)하는 단계를 포함한다.

Description

하이브리드 분석을 통한 머신러닝 기반의 랜섬웨어 탐지 방법 및 장치{RANSOMWARE DECTECTING METHOD AND APPARATUS BASED ON MACHINE LEARNING THROUGH HYBRID ANALYSIS}
아래 실시예들은 정적 분석 및 동적 분석을 이용하여 랜섬웨어를 탐지하는 방법 및 장치에 관한 것이다.
최근 국내 기관의 조사에 따르면 국내의 랜섬웨어 공격 피해자가 작년 대비 3.7배가 증가하였으며, 미국의 Cyber Security 기업인 Herjavec Group이 발표한 보고서에 의하면 랜섬웨어로 2016년의 피해액이 10억 달러에 달한다고 전망했다.
현재 악성코드 분석 기법은 크게 정적 분석 방법과 동적 분석 방법으로 분류 된다. 랜섬웨어는 버전이 업데이트가 됨에 따라서 다양한 형태의 패턴을 가지고 유입이 된다.
정적 분석 방법은 시그니쳐(Signiture) 기반의 탐지기법이 대표적이지만 신규 악성코드가 유입되거나, 다양한 우회기술을 적용한 악성코드는 탐지하지 못한다. 즉, 정적분석만으로 새로운 형태의 랜섬웨어 분석은 한계가 존재한다.
동적 분석 방법의 대표적인 분석 방법은 악성코드가 실행 된 이후의 시스템 변화를 분석하는 것이다. 보통 실시간 프로세스 및 레지스트리 모니터링, API 니터링, Windows 메시지 모니터링, 실시간 네트워크 연결 분석, 실시간 네트워크 패킷 분석 등의 방식을 사용한다. 하지만, 동적 분석 방법은 악성코드 실행을 통한 시스템 증상을 분석하기 때문에 코드 기반의 상세한 분석에는 제한이 있다.
실시예들은 정적 분석 및 동적 분석을 동시에 활용함으로써 랜섬 웨어의 탐지율을 높이는 기술을 제공할 수 있다.
일 실시예에 따른 랜섬웨어 탐지 방법은, 복수의 객체를 수신하는 단계와, 상기 복수의 객체에 대하여 정적 분석(static analysis) 및 동적 분석(dynamic analysis)을 수행하여 데이터셋(dataset)을 생성하는 단계와, 상기 데이터셋을 필터링하여 복수의 모델링 변수를 생성하는 단계와, 상기 복수의 모델링 변수에 기초한 모델링을 통해 상기 복수의 객체 각각의 랜섬웨어 여부를 판별(discriminate)하는 단계를 포함한다.
상기 데이터셋을 생성하는 단계는, 상기 복수의 객체에 대하여 정적 분석을 수행하여 오피코드(Opcode) 명령어 빈도수를 추출하는 단계와, 상기 복수의 객체에 대하여 제1 동적 분석을 수행하여 API(Application Programming Interface) 실행 빈도수를 추출하는 단계와, 상기 복수의 객체에 대하여 제2 동적 분석을 수행하여 이벤트 빈도수를 추출하는 단계를 포함할 수 있다.
상기 오피코드 명령어 빈도수를 추출하는 단계는, 상기 복수의 객체의 바이너리 실행파일을 디스어셈블리(disassembly) 코드로 변환하는 단계와, 상기 디스어셈블리 코드로부터 상기 오피코드 명령어 빈도수를 추출하는 단계를 포함할 수 있다.
상기 API 실행 빈도수를 추출하는 단계는, 상기 복수의 객체 각각에 대하여 윈도우 API 후킹(Windows API Hooking)을 수행하는 단계와, 상기 복수의 객체 각각이 실행하는 API들의 실행 빈도수를 추출하는 단계를 포함할 수 있다.
상기 이벤트 빈도수를 추출하는 단계는, 이벤트 로그(log)를 추출하는 단계와, 상기 이벤트 로그에 기초하여 상기 이벤트 빈도수를 추출하는 단계를 포함할 수 있다.
상기 이벤트 빈도수를 추출하는 단계는, 상기 복수의 객체에 발생하는 생성(created) 이벤트, 삭제(deleted) 이벤트, 변경(modified) 이벤트 및 이동(moved) 이벤트 각각에 대한 빈도수를 추출하는 단계를 포함할 수 있다.
상기 데이터셋은 상기 오피코드 명령어 빈도수, 상기 API 실행 빈도수 및 상기 이벤트 빈도수를 포함하고, 상기 필터링하는 단계는, 상기 오피코드 명령어 빈도수에 기초한 기계 학습을 통해 클러스터 벡터를 생성하는 단계와, 상기 API 실행 빈도수에 기초하여 의심 API(Suspicious API)를 분류함으로써 API 벡터를 생성하는 단계와, 상기 이벤트 빈도수에 기초하여 이벤트 벡터를 생성하는 단계를 포함할 수 있다.
상기 클러스터 벡터를 생성하는 단계는, K-means 클러스터링 알고리즘을 이용한 기계 학습을 통해 상기 오피코드 명령어 빈도수로부터 상기 클러스터 벡터를 생성하는 단계를 포함할 수 있다.
상기 복수의 모델링 변수는, 상기 클러스터 벡터, 상기 API 벡터 및 상기 이벤트 벡터를 포함하고, 상기 판별하는 단계는, 상기 클러스터 벡터, API 벡터 및 이벤트 벡터에 기초한 기계 학습을 통해 상기 복수의 객체에 대한 랜섬웨어 여부를 판별하는 단계를 포함할 수 있다.
상기 판별하는 단계는, 로지스틱 회귀 알고리즘, SVM(Support Vector Machine) 알고리즘 및 나이브 베이즈(Naive Bayes) 알고리즘 중 하나를 이용한 기계 학습을 통해 상기 복수의 객체에 대한 랜섬웨어 여부를 판별하는 단계를 포함할 수 있다.
일 실시예에 따른 랜섬웨어 탐지 장치는, 복수의 객체를 수신하는 수신기와, 상기 복수의 객체에 대한 랜섬웨어 여부를 판별하는 컨트롤러를 포함하고, 상기 컨트롤러는, 상기 복수의 객체에 대하여 정적 분석(static analysis) 및 동적 분석(dynamic analysis)을 수행하여 데이터셋(dataset)을 생성하는 데이터셋 생성기와, 상기 데이터셋을 필터링하여 복수의 모델링 변수를 생성하는 필터와, 상기 복수의 모델링 변수에 기초한 모델링을 통해 상기 복수의 객체 각각의 랜섬웨어 여부를 판별하는 판별기(discriminator)를 포함한다.
상기 데이터셋 생성기는, 상기 복수의 객체에 대하여 상기 정적 분석을 수행하여 오피코드(Opcode) 명령어 빈도수를 추출하는 정적 분석기와, 상기 복수의 객체에 대하여 제1 동적 분석을 수행하여 API 실행 빈도수를 추출하는 제1 동적 분석기와, 상기 복수의 객체에 대하여 제2 동적 분석을 수행하여 이벤트 빈도수를 추출하는 제2 동적 분석기를 포함할 수 있다.
상기 정적 분석기는, 상기 복수의 객체의 바이너리 실행파일을 디스어셈블리(disassembly) 코드로 변환하고, 상기 디스어셈블리 코드로부터 상기 오피코드 명령어 빈도수를 추출할 수 있다.
상기 제1 동적 분석기는, 상기 복수의 객체 각각에 대하여 윈도우 API 후킹(Windows API Hooking)을 수행하고, 상기 복수의 객체 각각이 실행하는 API들의 실행 빈도수를 추출할 수 있다.
상기 제2 동적 분석기는, 이벤트 로그(log)를 추출하고, 상기 이벤트 로그에 기초하여 상기 이벤트 빈도수를 추출할 수 있다.
상기 제2 동적 분석기는, 상기 복수의 객체에 발생하는 생성(created) 이벤트, 삭제(deleted) 이벤트, 변경(modified) 이벤트 및 이동(moved) 이벤트 각각에 대한 빈도수를 추출할 수 있다.
상기 데이터셋은 상기 오피코드 명령어 빈도수, 상기 API 실행 빈도수 및 상기 이벤트 빈도수를 포함하고, 상기 필터는, 상기 오피코드 명령어 빈도수에 기초한 기계 학습을 통해 클러스터 벡터를 생성하고, 상기 API 실행 빈도수에 기초하여 의심 API(Suspicious API)를 분류함으로써 API 벡터를 생성하고, 상기 이벤트 빈도수에 기초하여 이벤트 벡터를 생성할 수 있다.
상기 필터는, K-means 클러스터링 알고리즘을 이용한 기계 학습을 통해 상기 오피코드 명령어 빈도수로부터 상기 클러스터 벡터를 생성할 수 있다.
상기 복수의 모델링 변수는, 상기 클러스터 벡터, 상기 API 벡터 및 상기 이벤트 벡터를 포함하고, 상기 판별기는, 상기 클러스터 벡터, API 벡터 및 이벤트 벡터에 기초한 기계 학습을 통해 상기 복수의 객체에 대한 랜섬웨어 여부를 판별할 수 있다.
상기 판별기는, 로지스틱 회귀 알고리즘, SVM(Support Vector Machine) 알고리즘 및 나이브 베이즈(Naive Bayes) 알고리즘 중 하나를 이용한 기계 학습을 통해 상기 복수의 객체에 대한 랜섬웨어 여부를 판별할 수 있다.
도 1은 일 실시예에 따른 랜섬웨어 탐지 장치의 개략적인 블록도를 나타낸다.
도 2는 도 1에 도시된 컨트롤러의 개략적인 블록도를 나타낸다.
도 3은 도 2에 도시된 데이터셋 생성기의 개략적인 블록도를 나타낸다.
도 4는 도 1에 도시된 랜섬웨어 탐지 장치의 동작의 예시를 나타낸다.
도 5는 도 3에 도시된 정적 분석기의 동작의 예시를 나타낸다.
도 6은 일반 파일과 랜섬웨어의 오피코드 명령어 빈도수를 비교한 그래프를 나타낸다.
도 7은 도 2에 도시된 필터의 클러스터링 동작을 설명하기 위한 그래프를 나타낸다.
도 8은 도 3에 도시된 제1 동적 분석기의 동작의 예시를 나타낸다.
도 9는 일 실시예에 따른 의심 API의 예시를 나타낸다.
도 10은 도 3에 도시된 제2 동적 분석기의 동작의 예시를 나타낸다.
도 11은 일 실시예에 따른 필터의 이벤트 빈도수의 필터링 결과를 나타낸다.
도 12는 랜섬웨어 실행 전후의 디스크 용량변화의 예시를 나타낸다.
도 13은 정적 분석, 동적 분석 및 하이브리드 분석 방법의 랜섬웨어 탐지율을 비교한 그래프의 예를 나타낸다.
도 14는 판별기가 사용하는 기계 학습 알고리즘에 따른 탐지율을 비교한 그래프의 예를 나타낸다.
도 15는 판별기가 사용하는 기계 학습 알고리즘에 따른 속도를 비교한 그래프의 예를 나타낸다.
본 명세서에 개시되어 있는 본 발명의 개념에 따른 실시예들에 대해서 특정한 구조적 또는 기능적 설명들은 단지 본 발명의 개념에 따른 실시예들을 설명하기 위한 목적으로 예시된 것으로서, 본 발명의 개념에 따른 실시예들은 다양한 형태로 실시될 수 있으며 본 명세서에 설명된 실시예들에 한정되지 않는다.
본 발명의 개념에 따른 실시예들은 다양한 변경들을 가할 수 있고 여러 가지 형태들을 가질 수 있으므로 실시예들을 도면에 예시하고 본 명세서에 상세하게 설명하고자 한다. 그러나, 이는 본 발명의 개념에 따른 실시예들을 특정한 개시형태들에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 변경, 균등물, 또는 대체물을 포함한다.
제1 또는 제2 등의 용어를 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만, 예를 들어 본 발명의 개념에 따른 권리 범위로부터 이탈되지 않은 채, 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소는 제1 구성요소로도 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 “연결되어” 있다거나 “접속되어” 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 “직접 연결되어” 있다거나 “직접 접속되어” 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성요소들 간의 관계를 설명하는 표현들, 예를 들어 “~사이에”와 “바로~사이에” 또는 “~에 직접 이웃하는” 등도 마찬가지로 해석되어야 한다.
본 명세서에서 사용한 용어는 단지 특정한 실시예들을 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, “포함하다” 또는 “가지다” 등의 용어는 설시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함으로 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
본 명세서에서의 모듈(module)은 본 명세서에서 설명되는 각 명칭에 따른 기능과 동작을 수행할 수 있는 하드웨어를 의미할 수도 있고, 특정 기능과 동작을 수행할 수 있는 컴퓨터 프로그램 코드를 의미할 수도 있고, 또는 특정 기능과 동작을 수행시킬 수 있는 컴퓨터 프로그램 코드가 탑재된 전자적 기록 매체, 예를 들어 프로세서 또는 마이크로 프로세서를 의미할 수 있다.
다시 말해, 모듈이란 본 발명의 기술적 사상을 수행하기 위한 하드웨어 및/또는 상기 하드웨어를 구동하기 위한 소프트웨어의 기능적 및/또는 구조적 결합을 의미할 수 있다.
이하, 실시예들을 첨부된 도면을 참조하여 상세하게 설명한다. 그러나, 특허출원의 범위가 이러한 실시예들에 의해 제한되거나 한정되는 것은 아니다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.
도 1은 일 실시예에 따른 랜섬웨어 탐지 장치의 개략적인 블록도를 나타낸다.
도 1을 참조하면, 랜섬웨어 탐지 장치(10)는 복수의 객체를 수신하고, 복수의 객체에 대한 랜섬웨어 여부를 판별할 수 있다. 객체란 컴퓨터 시스템에서 하나의 단위로서 처리되는 서로 관련 있는 레코드의 집합을 의미할 수 있다. 객체는 정상적인 파일, 악성코드를 포함할 수 있다. 악성코드는 랜섬웨어를 포함할 수 있다.
랜섬웨어 탐지 장치(10)는 복수의 객체에 대한 정적 분석(static analysis) 및 동적 분석(dynamic analysis)을 혼합한 하이브리드 방법을 통해 복수의 객체에 대한 랜섬웨어 여부를 판별할 수 있다.
대표적인 정적 분석 방법은 시그니쳐(signiture) 기반의 탐지 기법인데, 이 방법은 신규 악성코드가 유입되거나 다양한 우회기술을 적용한 악성코드를 탐지하는 것이 어려울 수 있다.
대표적인 동적 분석 방법은 악성코드가 실행된 이후의 시스템 변화를 분석하는 것일 수 있다. 동적 분석 방법은 실시간 프로세스 및 레지스트리 모니터링, API(Application Programming Interfaces) 모니터링, 윈도우(windows) 메시지 모니터링, 실시간 네트워크 연결 분석, 실시간 네트워크 패킷 분석등을 포함할 수 있다. 하지만, 동적 분석 방법은 악성 코드 실행을 통한 시스템 증상을 분석하기 때문에 코드 기반의 상세한 분석에 제한이 있을 수 있다.
랜섬웨어 탐지 장치(10)는 하이브리드 분석 방법을 통해서 정적 분석의 낮은 탐지 정확성을 동적 분석으로 보완할 수 있다. 또한, 랜섬웨어 탐지 장치(10)는 정적 분석이 탐지하는 부분은 동적 분석에서 제외함으로써 동적 분석의 컴퓨팅 오버헤드를 줄일 수 있다.
랜섬웨어 탐지 장치(10)는 기계 학습(machine learning) 알고리즘을 이용하여 새로운 패턴의 악성 코드를 분석 할 수 있다. 랜섬웨어 탐지 장치(10)는 기계 학습 알고리즘을 통해 다양한 랜섬웨어 패턴을 찾을 수 있고, 랜섬웨어에 대한 자동화 분류를 용이하게 수행할 수 있다.
랜섬웨어 탐지 장치(10)는 수신기(100) 및 컨트롤러(200)를 포함할 수 있다.
수신기(100)는 복수의 객체를 수신할 수 있다. 수신기(100)는 수신한 복수의컨트롤객체를 컨트롤러(200)에 출력할 수 있다.
컨트롤러(200)는 복수의 객체에 대하여 정적 분석(static analysis) 및 동적 분석(dynamic analysis)을 수행하여 데이터셋(dataset)을 생성하고, 데이터셋을 필터링하여 복수의 모델링 변수를 생성할 수 있다.
컨트롤러(200)는 복수의 모델링 변수에 기초한 모델링을 통해 복수의 객체 각각의 랜섬웨어 여부를 판별할 수 있다.
도 2는 도 1에 도시된 컨트롤러의 개략적인 블록도를 나타낸다.
도 2를 참조하면, 컨트롤러(200)는 데이터셋 생성기(210), 필터(230) 및 판별기(250)를 포함할 수 있다.
데이터셋 생성기(210)는 복수의 객체에 대하여 정적 분석(static analysis) 및 동적 분석(dynamic analysis)을 수행하여 데이터셋(dataset)을 생성할 수 있다. 데이터셋은 오피코드 명령어 빈도수, API 실행 빈도수 및 이벤트 빈도수를 포함할 수 있다.
이벤트 빈도수는 객체에 대한 생성(created) 이벤트, 삭제(deleted) 이벤트, 변경(modified) 이벤트 및 이동(moved) 이벤트에 대한 빈도수를 포함할 수 있다. 데이터셋 생성기(210)는 데이터셋을 필터로 출력할 수 있다.
필터(230)는 데이터셋을 필터링하여 복수의 모델링 변수를 생성할 수 있다. 복수의 모델링 변수는 클러스터 벡터, API 벡터 및 이벤트 벡터를 포함할 수 있다.
필터(230)는 오피코드 명령어 빈도수에 기초한 기계 학습을 통해 클러스터 벡터를 생성할 수 있다. 예를 들어, 필터(230)는 K-means 클러스터링 알고리즘을 이용한 기계 학습을 통해 오피코드 명령어 빈도수로부터 클러스터 벡터를 생성할 수 있다.
필터(230)는 API 실행 빈도수에 기초하여 의심 API(Suspicious API)를 분류함으로써 API 벡터를 생성할 수 있다. 또한, 필터(230)는 이벤트 빈도수에 기초하여 이벤트 벡터를 생성할 수 있다.
필터(230)는 클러스터 벡터, API 벡터 및 이벤트 벡터를 판별기(250)로 출력할 수 있다.
판별기(discriminator, 250)는 복수의 모델링 변수에 기초한 모델링을 통해 복수의 객체 각각의 랜섬웨어 여부를 판별할 수 있다. 복수의 모델링 변수는 클러스터 벡터, API 벡터 및 이벤트 벡터를 포함할 수 있다. 판별기(250)는 클러스터 벡터, API 벡터 및 이벤트 벡터에 기초한 기계 학습을 통해 복수의 객체에 대한 랜섬웨어 여부를 판별할 수 있다.
판별기(250)는 로지스틱 회귀(logistic regression) 알고리즘, SVM(Support Vector Machine) 알고리즘 및 나이브 베이즈(Naive Bayes) 알고리즘 중 하나를 이용한 기계 학습을 통해 복수의 객체에 대한 랜섬웨어 여부를 판별할 수 있다.
도 3은 도 2에 도시된 데이터셋 생성기의 개략적인 블록도를 나타낸다.
도 3을 참조하면, 데이터셋 생성기(210)는 정적 분석기(211), 제1 동적 분석기(213) 및 제2 동적 분석기(215)를 포함할 수 있다.
정적 분석기(211)는 복수의 객체에 대하여 정적 분석을 수행하여 오피코드(Opcode) 명령어 빈도수를 추출할 수 있다. 정적 분석기(211)는 복수의 객체의 바이너리 실행파일을 디스어셈블리(disassembly) 코드로 변환하고, 디스어셈블리 코드로부터 오피코드 명령어 빈도수를 추출할 수 있다.
제1 동적 분석기(213)는 복수의 객체에 대하여 제1 동적 분석을 수행하여 API 실행 빈도수를 추출할 수 있다. 제1 동적 분석기(213)는 복수의 객체 각각에 대하여 윈도우 API 후킹(Windows API Hooking)을 수행하고, 복수의 객체 각각이 실행하는 API들의 실행 빈도수를 추출할 수 있다.
제2 동적 분석기(215)는 복수의 객체에 대하여 제2 동적 분석을 수행하여 이벤트 빈도수를 추출할 수 있다. 제2 동적 분석기(215)는 이벤트 로그(log)를 추출하고, 이벤트 로그에 기초하여 이벤트 빈도수를 추출할 수 있다.
제2 동적 분석기(215)는 복수의 객체에 발생하는 생성(created) 이벤트, 삭제(deleted) 이벤트, 변경(modified) 이벤트 및 이동(moved) 이벤트 각각에 대한 빈도수를 추출할 수 있다.
도 4는 도 1에 도시된 랜섬웨어 탐지 장치의 동작의 예시를 나타낸다.
도 4를 참조하면, 수신기(100)는 복수의 객체를 수신할 수 있다. 예를 들어, 복수의 객체는 100개의 정상 파일과 100개의 랜섬웨어 파일을 포함할 수 있다. 표 1은 수신기(100)가 수신하는 30여개의 Cryto 랜섬웨어 패밀리 정보를 의미할 수 있다.
Family Samples Family Samples
7ev3n 2 RAA 2
BlackShades 2 Raas 3
Cerber 3 Ransomware_shade2 2
CryptoHasYou 3 RANSOMEWARE2 1
CryptoLocker 6 SkidLocker 1
cryptowall 3 SNSLocker 1
Cryptxxx 3 Strictor 1
CTBLocker 3 Teslacrypt 12
Domino 3 TorrentLocker 3
hitler 2 Troldesh 1
HydraCrypt 3 turkishRansom 1
Jigsaw 4 venusLocker 1
Locky 8 Virlock 2
Matsnu 6 Virus-Encoder 2
Mobef 13 Zyklon 2
NoobCrypt 1 Total 100
랜섬웨어는 적게는 135개에서 많게는 250개 이상의 종류의 파일을 암호화시킬 수 있다. 감염된 파일은 ".aaa", ".crjoker", ".cryptotorlocker", ".ecc", ".encrypted", ".exx", ".ezz", ".xyz", ".zzz", ".frtrss", ".hydracrypt_ID", ".locky", ".lol",".r5a", ".ttt", ".vault", ".vvv", ".xxx", ".crypt"의 확장자를 갖는 형태의 파일로 바뀔 수 있다.
데이터셋 생성기(210)는 정적 분석 정보, 동적 분석 정보를 활용한 하이브리드 분석 방법을 이용하여 데이터셋을 생성할 수 있다.
정적 분석기(211)는 PE(Portable Excutable) 파일 포멧 내에 정의 되어있는 실행 코드를 디스어셈블리어로 변환할 수 있다. 정적 분석기(211) 오피코드를 추출하고 각 오피코드 명령어들의 빈도수를 추출할 수 있다. 정적 분석기(211)는 오피코드 명령어 빈도수를 필터(230)로 출력할 수 있다.
제1 동적 분석기(213)는 파일을 직접 실행시켜 그 행위를 분석하고 디버깅을 통하여 코드 흐름과 메모리 상태 등을 통해 프로그램 내부 구조와 동작원리를 분석할 수 있다. 예를 들어, 제1 동적 분석기(213)은 파이썬(Python) 모듈 기반 분석 도구를 활용하여 복수의 객체로부터 의심스러운 API들을 추출하여 API 빈도수를 추출할 수 있다. 제1 동적 분석기(213)는 API 빈도수를 필터(230)로 출력할 수 있다.
제2 동적 분석기(215)는 파일 시스템 액티비티(Filesystem Activity)를 모니터링하고 이벤트 로그를 추출할 수 있다. 제 동적 분석기(215)는 이벤트 로그에 기초하여 이벤트 빈도수를 추출할 수 있다. 제2 동적 분석기(215)는 이벤트 빈도수를 필터(230)로 출력할 수 있다.
데이터셋 생성기(210)가 생성한 정보들은 모델링하기에 불필요한 정보를 포함하고 있을 수 있다. 필터(230)는 랜섬웨어만이 가지는 특징을 필터링함으로써, 모델링 과정을 최적화할 수 있다.
필터(230)는 랜섬웨어의 탐지율을 최적화하기 위하여 데이터셋을 필터링할 수 있다. 필터(230)는 오피코드 빈도수 정보에 K-means 클러스터링(clustering)을 적용하여, 복수의 객체를 오피코드 명령어 빈도수 크기에 따라서 분류화시킨 군집화 정보를 생성할 수 있다. 필터(230)는 군집화 정보로 클러스터 벡터를 생성할 수 있다.
랜섬웨어들은 일반 파일에 비하여 오피코드 명령어 빈도수 분포가 적게 나타날 수 있다.
필터(230)는 API 빈도수를 분석하여 랜섬웨어가 자주 사용하는 특정 API들을 이용하여 API들을 필터링하여 의심 API들을 분류할 수 있고, 의심 API에 기초하여 API 벡터를 생성할 수 있다.
필터(230)는 파일 시스템 액티비티 정보를 통해 랜섬웨어가 동작하면서 데이터에 액세스하는 이벤트 과정을 모니터링할 수 있다. 필터(230)는 이벤트 모니터링을 통해 이벤트 벡터를 생성할 수 있다.
판별기(250)는 기계 학습 알고리즘을 이용하여 모델링을 수행할 수 있다. 판별기(250)는 클러스터 벡터, API 벡터 및 이벤트 벡터를 독립변수로 사용하고, 랜섬웨어 여부를 종속 변수로 사용할 수 있다.
판별기(250)는 로지스틱 회귀 모델을 이용하여 복수의 객체에 대한 랜섬웨어 여부를 판별할 수 있다. 클러스터 벡터는 오피코드 명령어 빈도수에 기초한 랜섬웨어 정보를 포함할 수 있다. API 벡터는 의심 API로 분류된 API들에 대한 정보를 포함할 수 있다. 이벤트 벡터는 생성, 삭제, 변경, 이동 이벤트들에 대한 빈도수 정보를 포함할 수 있다.
판별기(250)는 오피코드 군집화에 대한 정보와, 의심 API 정보 및 이벤트 정보들을 독립 변수로 사용하고, 랜섬웨어 여부를 종속 변수로 사용하는 로지스틱 회귀 모델에 기반하여 복수의 객체에 대한 랜섬웨어 여부를 판별할 수 있다.
판별기(250)는 수학식 1에 따라 랜섬웨어 여부를 판별할 수 있다.
Figure pat00001
여기서,
Figure pat00002
,
Figure pat00003
...
Figure pat00004
는 회귀 계수를 의미할 수 있고,
Figure pat00005
는 모델의 절편으로 x=0일 때 y값을 의미할 수 있다.
Figure pat00006
...
Figure pat00007
는 기울기 값이 한 단위 변할 때의 y의 변화량을 의미할 수 있고, ei는 오차항을 의미할 수 있다.
Figure pat00008
는 K-means 클러스터링을 통해 생성한 클러스터벡터를 의미할 수 있고,
Figure pat00009
,
Figure pat00010
는 의심 API 정보를 이용하여 생성한API 벡터를 의미할 수 있고,
Figure pat00011
이벤트 빈도수에 기초하여 생성한 이벤트 벡터를 의미할 수 있다.
도 5는 도 3에 도시된 정적 분석기의 동작의 예시를 나타낸다.
도 5를 참조하면, 정적 분석기(211)는 랜섬웨어 바이너리 실행파일의 프로그램 구조 특징을 파악하기 위하여 리버스 엔지니어링을 통해 바이너리 실행파일을 디스어셈블리 코드로 변환할 수 있다. 정적 분석기(211)는 디스어셈블리 코드로부터 오피코드 명령어를 추출할 수 있다.
예를 들어, 정적 분석기(211)는 파이썬 모듈(pefile, distorm3)을 활용하여 오피코드를 추출할 수 있다. 디스어셈블리 코드는 CPU에 의해 실행되는 코드로 행위를 설명하는 니마닉(Mnemonic) 또는 오피코드(Opcode) 부분과 대상을 가리키는 오퍼랜드(Operand) 부분으로 나누어질 수 있다.
정적 분석기(211)는 PE 파일이 메모리에 로딩되었을 때의 메모리 주소를 의미하는 'RVA'와 PE 파일이 로딩되기 전에 파일 오프셋(file offset)을 의미하는 'RAW'를 매핑시키는 작업을 통해 바이너리 실행파일을 메모리에 로딩할 수 있다. PE 파일의 섹션 크기와 위치는 메모리에 로딩되면서 달라질 수 있다.
프로세스에 로딩되는 가상 메모리의 주소 값 계산을 통해 명령어가 실행되는 주소 값은 변하지만, 실행 행위를 나타내는 오피코드는 메모리에 로딩되어도 대부분 그 순서를 유지할 수 있다. 정적 분석기(211)는 실행 행위를 나타내는 오피코드 명령어를 추출할 수 있다.
바이너리 실행 파일은 PE 파일 포멧 구조의 형식을 가질 수 있다. 정적 분석기(211)는 동작 코드를 나타내는 '.text' 섹션으로 범위를 좁혀 오피코드 명령어를 추출할 수 있다.
정적 분석기(211)는 도 5의 IMAGE_SECTION_HEADER 구조체 내에 파일의 섹션이 차지하는 크기를 나타내는 'SizeOfRawData'와 파일에서 섹션의 시작 위치를 나타내는 'PointerToRawData'의 위치를 찾을 수 있다.
정적 분석기(211)는 'SizeOfRawData'와 'PointerToRawData'를 더하여 메모리에 매핑되는 주소를 찾을 수 있다. 정적 분석기(211)는 이 주소에 파일이 메모리에 로딩되는 시작 주소인 'ImageBase'를 더하여 실제 동작코드를 나타내는 '.text'섹션 범위를 찾을 수 있다.
정적 분석기(211)는 '.text'섹션 내의 디스어셈블리 코드에서 실행 동작 과정을 나타내는 오피코드 명령어를 추출할 수 있다.
도 6은 일반 파일과 랜섬웨어의 오피코드 명령어 빈도수를 비교한 그래프를 나타낸다.
도 6을 참조하면, 일반파일은 오피코드 명령어 빈도수가 랜섬웨어의 오피코드 명령어 빈도수에 비해서 높은 수치를 가질 수 있다. 랜섬웨어는 은닉 특성으로 인해 정적 분석이 제대로 이루어지지 않도록 되어있거나 단일 기능을 수행하기 때문에 적은 오피코드 명령어 빈도수를 가질 수 있다.
도 7은 도 2에 도시된 필터의 클러스터링 동작을 설명하기 위한 그래프를 나타낸다.
도 7을 참조하면, 오피코드 명령어 빈도수에대한 K-means 클러스터링 알고리즘을 적용하여 도 7와 같이 나타낼 수 있다.
K-means 클러스터링 알고리즘은 데이터 분류 알고리즘 중에 비지도 학습 알고리즘에 포함될 수 있다. 비지도 학습은 특정한 입력 값 없이 데이터 구성을 알아낼 수 있는 학습법을 의미할 수 있다.
K-means 클러스터링 알고리즘은 분할 접근의 대표적 기법이고, 숫자 속성 데이터를 군집화하는데 사용될 수 있다.
K-means 클러스터링 방법은 데이터 집합 내에 선정된 K 개의 중심점을 기준으로, 중심점에서 가장 근접한 항목들을 각 클러스터에 할당할 수 있다. 모든 데이터들의 평균 점은 새로운 중심점으로 설정되고, 이에 대한 데이터들의 재할당이 수행될 수 있다.
K-means 클러스터링 알고리즘은 수학식 2와 같은 공식을 사용하여 분산을 계산함으로써, 클러스터링을 수행할 수 있다.
Figure pat00012
여기서,
Figure pat00013
는 i번째 클러스터의 중심을 의미할 수 있고, Si는 i번째 클러스터에 속하는 데이터의 집합을 의미할 수 있다.
필터(230)는 수학식 2의 집합 Si의 값을 최소화하도록 클러스터링을 수행할 수 있다. 필터(230)는 일반 파일과 랜섬웨어의 오피코드 명령어 빈도수에 K-means 클러스터링 알고리즘을 적용하여 2개의 군집을 분류할 수 있다.
필터(230)는 이러한 군집 정보를 이용하여 클러스터 벡터를 생성할 수 있다.
필터(230)는 K-means 알고리즘뿐만 아니라 악성코드가 많이 사용하는 상위 14개 오피코드 명령어 빈도수와 하위 14개 오피코드 명령어 빈도수를 이용하여 복수의 객체에 대한 상관 관계 수치를 통해 악성코드를 탐지하는 방법을 이용할 수 도 있다.
또한, 필터(230)는 오피코드 민감도에 따라 악성코드와 일반파일을 구분할 수도 있고, 동적 분석에서 발생하는 오피코드 정보에 기초하여 악성코드를 분석할 수도 있다.
필터(230) 수학식 2의 K 값을 2로 설정하여 클러스터링을 수행할 수 있다. 필터(230)는 K 값을 2로 설정함으로써, 오피코드 명령어 빈도수가 적은 랜섬웨어와 일반 파일을 분류할 수 있다.
필터(230)는 오피코드 명령어 빈도수가 큰 군집과 오피코드 명령어 빈도수가 적은 군집의 두 개의 군집을 분류하는 클러스터링을 수행할 수 있다. 필터(230)는 오피코드 명령어 빈도수가 적은 군집에 오피코드 명령어 빈도수가 큰 군집에 비하여 큰 값의 클러스터 벡터를 적용할 수 있다.
도 8은 도 3에 도시된 제1 동적 분석기의 동작의 예시를 나타낸다.
도 8을 참조하면, 랜섬웨어는 API를 이용하여 시스템 정보 및 프로세스의 수정을 요청하거나 권한 상승, 서비스 비활성화 등의 행위를 수행할 수 있다.
이러한 행위를 분석하기 위하여 제1 동적 분석기(213)는 바이너리 실행파일을 가상 환경에서 실행 시켜 API 모니터링을 통해 API 빈도수를 추출할 수 있다.
응용프로그램의 동작 모델에 사용되는 API 호출은 의심스런 시퀀스를 검출하여 분류하는데 사용될 수 있다. PE 파일 포멧 구조내의 NT Header -> Optional Header -> DataDirectory 멤버의 구조체는 EXPORT Directory 및 IMPORT Directory와 관련된 정보를 포함할 수 있다. 또한, Data Directory는 IAT(Import Address Table) 정보와 EAT(Export Address Tables)를 포함할 수 있다.
IAT 파일은 프로세스, 메모리, DLL 구조 등에 대한 내용을 함축하고 있으며, 프로그램이 어떤 라이브러리에서 어떤 함수를 호출하는지를 나타낼 수 있다. EAT 파일은 라이브러리 파일에서 제공하는 함수를 다른 프로그램에서 가져다 사용할 수 있도록 해주는 역할을 수행할 수 있다.
랜섬웨어의 IAT, EAT 정보들은 공격자들이 정적 분석으로 정보를 파악하지 못하도록 안티 리버싱 기능을 내장하고 있거나, 무의미한 import table 함수를 배치함으로써 악성코드 분석을 어렵게 할 수 있다.
제1 동적 분석기(213)는 API 호출을 통한 API 빈도수 분석을 통해 실제로 어떤 호출이 일어나는지에 대하여 정확하게 탐지할 수 있다.
랜섬웨어가 이용하는 대표적인 WriteFile API에 대한 호출 순서는 도 8과 같이 도식화할 수 있다. Write API는 디스크에 파일을 기록하는 동작을 수행할 수 있다.
제1 동적 분석기(213)는 동적 분석을 통해 랜섬웨어가 시스템의 권한을 획득한 후 원하는 행위를 하기 위하여 사용하는 API들의 호출을 모니터링하여 랜섬웨어 탐지의 정확도를 높일 수 있다.
제1 동적 분석기(213)는 API 모니터링 도구(예를 들어, WinAppDbg)를 활용하여 보수의 객체에 대하여 윈도우 API 후킹(windows API hooking)을 수행하여, 각 API별 실행 빈도수를 추출할 수 있다.
제1 동적 분석기(213)는 실행 오류나 완료에 의해 디버깅에 무한루프가 발생하면 분석을 정지할 수 있다. 제1 동적 분석기(213)는 랜섬웨어 동작의 시작부터 모든 프로세스를 디버깅하여 호출하는 API의 빈도수를 추출할 수 있다.
도 9는 일 실시예에 따른 의심 API의 예시를 나타낸다.
도 9를 참조하면, 도 9의 의심 API 목록은 랜섬웨어가 실행하는 주요 API를 의미할 수 있다. 필터(230)는 API 빈도수에 기초하여 의심(suspicious) API들을 추출할 수 있다. 의심 API는 API 빈도수 분석결과 상위 API를 필터링함으로써 획득할 수 있다. 필터(230)는 의심 API를 이용하여 API 벡터를 생성할 수 있다.
랜섬웨어는 일반적으로, "FindFirtstFile", "CreateFile", "ReadFile", "WriteFile", "FindNextFile"의 순서로 API가 호출되면서 동작할 수 있다.
랜섬웨어는 FindFirtstFile을 통해 암호화하고자 하는 대상 파일을 찾을 수 있다. 랜섬웨어는 CreateFile을 통해 대상이된 파일을 열고, ReadFile을 통해 파일의 내용을 읽을 수 있다.
랜섬웨어는 읽은 파일의 데이터를 기록하고, 파일에 대한 기록이 완료되면 FindNextFile을 통해 다음 파일에 대한 검색을 수행할 수 있다. 이런 방식으로 스레드가 생성되고, 모든 대상 파일에 암호화가 진행되면, 스레드가 종료되고 해당 프로세스도 종료될 수 있다.
도 10은 도 3에 도시된 제2 동적 분석기의 동작의 예시를 나타낸다.
도 10을 참조하면, 제2 동적 분석기(215)는 시스템에서 데이터 액세스 이벤트가 발생하는 과정을 모니터링 할 수 있다.
랜섬웨어는 제어 흐름의 결과를 필터링하거나 수정하기 위해서 운영체제가 제공하는 주요한 서비스 중에 하나인 입출력 제어를 가로채서 파일시스템을 통제할 수 있다.
랜섬웨어는 프로세스나 유저, 커널 모드의 파일에 대한 접근을 통해, 파일을 이동시키거나 암호화시키며 설정의 수정을 요청할 수 있다.
랜섬웨어 패밀리별로 파일을 암호화시키는 확장자 패턴이 다를 수 있다. 랜섬웨어는 주로 텍스트, 그림, 동영상 파일 등의 정보 파일을 대상으로 암호화를 수행할 수 있다. 랜섬웨어는 시스템과 관련된 확장자인 *.chm", "*.ini", "*.tmp", "*.url", "*.lnk", "*.cmd", "*.bat", "*.scr", "*.msi", "*.sys", "*.dll", "*.exe 를 화이트리스트 처리하여 자신 외의 모든 파일을 암호화할 수도 있다.
랜섬웨어는 공격, 통신, 은닉, 자기방어 등의 행위를 위하여 파일 시스템에 접근하여 파일의 변경('modified'), 파일의 생성('created'), 파일의 이동('moved'), 파일의 삭제('deleted') 이벤트를 발생시킬 수 있다.
제2 동적 분석기(215)는 이러한 이벤트 들을 모니터링 하여 그 빈도수를 추출할 수 있다. 파일 시스템의 호출 순서로, 유저모드에서 파일을 오픈할 때의 커널 모드에서의 동작 과정은 도 10과 같이 도식화할 수 있다.
제2 동적 분석기(215)는 입출력 관리자로부터 파일시스템 모니터링 객체를 전달하여 이벤트 핸들러(Event Handler)를 생성하고, 로컬 디스크의 모든 경로에서 파일이나 디렉토리가 변경될 경우 발생하는 이벤트 로그 기록을 모니터링할 수 있다.
제2 동적 분석기(215)는 이벤트 카운트 기준을 통일시키기 위하여 분석 시간을 조정할 수 있다. 예를 들어, 분석 시간은 30분일 수 있다.
도 11은 일 실시예에 따른 필터의 이벤트 빈도수의 필터링 결과를 나타낸다.
도 11을 참조하면, 랜섬웨어가 일반 파일에 비하여 약 25.9배 많은 이벤트 사용량을 보임을 알 수 있다.
7ev3n, CTBLocker, HydraCrypt, Jigsaw 랜섬웨어는 하드 디스크의 원본 파일 데이터를 삭제하는 특징을 보일 수 있다. Jigsaw는 파일 삭제를 향항 카운트 다운을 시작하여 $20~$150을 요구하며, 시간마다 배로 증가하는 숫자의 파일을 삭제하고, 컴퓨터를 재부팅할 경우 1000개의 암호화된 파일을 삭제할 수 있다.
또한, BlackShades, cerber, CryptoHasyou, Domino, Modef, NoobCrypt, RaaS, ransomeware_shade2, TeslaCrypt 랜섬웨어는 많은 파일을 이동시키는 특징을 나타낼 수 있다.
보통의 랜섬웨어는 파일의 암호화를 성공시킨 후 피해자에게 공격 당한 사실을 알리면서 동시에 피해자가 보유하고 있는 많은 주용 자료들이 손상되어 복원을 해야할 필요성이 있다는 것을 가시적으로 보여줄 수 있다.
따라서, 랜섬웨어는 모든 폴더마다 메시지 파일을 남기고, 감염시킨 파일들을 바탕화면으로 옮길 수 있다.
도 12는 랜섬웨어 실행 전후의 디스크 용량변화의 예시를 나타낸다.
도 12를 참조하면, 도 12의 그래프는 제2 동적 분석기(215)가 일정 시간 동적 분석을 수행한 후의 디스크 용량 변화를 의미할 수 있다. 예를 들어, 제2 동적 분석기(215)는 30분 동안 동적 분석을 수행할 수 있다.
랜섬웨어가 파일의 암호화 속도를 빠르게 하기 위해 원본 파일을 압축하고, 서버로 파일을 이동 시키고, 삭제하는 동작을 수행하기 때문에 디스크 용량이 랜섬웨어 실행 후에 줄어드는 양상을 보일 수 있다.
또한, 랜섬웨어는 디스크의 가장 처음 부분인 부트 섹터에 위치하는 프로그램이 가장 먼저 실행되는 부트 바이러스 기능을 내장하여, 하드디스크를 인식하지 못하게 하여 피해자 PC가 재기능을 수행하지 못하게 할 수 있다. 이러한 동작은 사용 가능한 메모리의 크기나 디스크 용량을 줄일 수 있다.
도 13은 정적 분석, 동적 분석 및 하이브리드 분석 방법의 랜섬웨어 탐지율을 비교한 그래프의 예를 나타낸다.
도 13을 참조하면, 정적 분석, 동적 분석 및 하이브리드 분석 파라미터를 로지스틱 회귀 모델에 적용하여 랜섬웨어 탐지율을 비교할 수 있다.
정적 분석의 랜섬웨어 탐지율은 랜섬웨어의 탐지 비율을 종속변수로 하고, 오피코드의 명령어의 빈도수의 총합에 대해 K-means 클러스터링을 적용하여 측정될 수 있다. 정적 분석의 랜섬웨어 탐지율은 두 개의 군집 중 빈도수가 적은 군집의 클러스터 벡터를 크게 적용시켜 독립변수로 사용하는 방법으로 측정될 수 있다.
동적 분석의 랜섬웨어 탐지율은 랜섬웨어의 탐지율을 종속 변수로하고, API 빈도수의 총합에 대해 정적 분석과 마찬가지로 K-means 클러스터링을 적용하여 클러스터 벡터 정보를 독립변수로 사용하여 측정될 수 있다.
하이브리드 분석의 랜섬웨어 탐지율은 랜섬웨어 탐지율을 종속변수로 하고, 오피코드에 K-means 클러스터링을 적용하고, API 빈도수에 필터링을 수행하여 오피코드 정보와 API 정보를 독립변수로 사용하여 측정될 수 있다.
파라미터는 5, 10, 20, 30, 40, 50, 100개씩 적용시켜 탐지율이 측정될 수 있으며, 정적 분석에 대한 탐지율은 최소 59% 에서 최대 89% 까지, 동적 분석에 대한 탐지율은 최소 64%에서 최대 99%까지, 하이브리드 분석에 대한 탐지율은 최소 81%에서 최대99% 까지로 나타날 수 있다.
파라미터 값에 대한 탐지율은 차이를 보일수 있지만, 정적 분석, 동적 분석만 수행한 경우에 비하여 하이브리드 분석 방법을 적용한 경우가 랜섬웨어 탐지율이 더 높은 것을 알 수 있다.
도 14는 판별기가 사용하는 기계 학습 알고리즘에 따른 탐지율을 비교한 그래프의 예를 나타내고, 도 15는 판별기가 사용하는 기계 학습 알고리즘에 따른 속도를 비교한 그래프의 예를 나타낸다.
도 14 및 도 15를 참조하면, 로지스틱 회귀(Logistic Regression) 알고리즘, SVM 알고리즘, 나이브 베이즈(Naive Bayes) 알고리즘을 사용한 경우의 탐지율이 비교될 수 있다.
비교를 위하여, 예측 인자를 이용한 진단 결과의 sensitivity(True positive rate, y축)과 1-specificity(False positive rate, x축) 간의 좌표들을 연결하여 성능 지표를 나타내는 ROC(Receiver Operating Characteristic) 커브(curve)가 활용될 수 있다.
세 개의 기계 학습 알고리즘은 트레인 데이터(train data) 100개를 이용하여 모델화될 수 있고, 트레인 데이터의 임계값에 대한 성능 트레이드 오프(trade off)가 그래프 상에 나타날 수 있다.
ROC 커브는 sensitivity(y축)의 값이 커질수록, 1-specificity(x축) 에서 멀어질수록 좋은 성능을 의미할 수 있다. 성능 비교결과 로지스틱 회귀 알고리즘, SVM 알고리즘, 나이브 베이즈 알고리즘 순으로 높은 탐지율을 나타냄을 알 수 있다.
각 모델에 따른 모델 생성 시간은 R에서 제공하는 벤치마크(Benchmark) 라이브러리를 이용하여 해당 알고리즘의 연산이 얼마나 빨리 수행되는지를 측정함으로써 비교될 수 있다.
도 15의 그래프는 각 알고리즘이 연산을 100번 실행했을 때의 평균 속도(us)를 나타낼 수 있다. 평균속도는 나이브 베이즈 알고리즘이 가장 빠르고, 그 다음으로 로지스틱 회귀 알고리즘, SVM 알고리즘 순으로 빠름을 알 수 있다.
이상에서 설명된 장치는 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPGA(field programmable gate 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 (20)

  1. 복수의 객체를 수신하는 단계;
    상기 복수의 객체에 대하여 정적 분석(static analysis) 및 동적 분석(dynamic analysis)을 수행하여 데이터셋(dataset)을 생성하는 단계;
    상기 데이터셋을 필터링하여 복수의 모델링 변수를 생성하는 단계; 및
    상기 복수의 모델링 변수에 기초한 모델링을 통해 상기 복수의 객체 각각의 랜섬웨어 여부를 판별(discriminate)하는 단계
    를 포함하는 랜섬웨어 탐지 방법.
  2. 제1항에 있어서,
    상기 데이터셋을 생성하는 단계는,
    상기 복수의 객체에 대하여 정적 분석을 수행하여 오피코드(Opcode) 명령어 빈도수를 추출하는 단계;
    상기 복수의 객체에 대하여 제1 동적 분석을 수행하여 API(Application Programming Interface) 실행 빈도수를 추출하는 단계; 및
    상기 복수의 객체에 대하여 제2 동적 분석을 수행하여 이벤트 빈도수를 추출하는 단계
    를 포함하는 랜섬웨어 탐지 방법.
  3. 제2항에 있어서,
    상기 오피코드 명령어 빈도수를 추출하는 단계는,
    상기 복수의 객체의 바이너리 실행파일을 디스어셈블리(disassembly) 코드로 변환하는 단계; 및
    상기 디스어셈블리 코드로부터 상기 오피코드 명령어 빈도수를 추출하는 단계
    를 포함하는 랜섬웨어 탐지 방법.
  4. 제2항에 있어서,
    상기 API 실행 빈도수를 추출하는 단계는,
    상기 복수의 객체 각각에 대하여 윈도우 API 후킹(Windows API Hooking)을 수행하는 단계; 및
    상기 복수의 객체 각각이 실행하는 API들의 실행 빈도수를 추출하는 단계;
    를 포함하는 랜섬웨어 탐지 방법.
  5. 제2항에 있어서,
    상기 이벤트 빈도수를 추출하는 단계는,
    이벤트 로그(log)를 추출하는 단계; 및
    상기 이벤트 로그에 기초하여 상기 이벤트 빈도수를 추출하는 단계
    를 포함하는 랜섬웨어 탐지 방법.
  6. 제5항에 있어서,
    상기 이벤트 빈도수를 추출하는 단계는,
    상기 복수의 객체에 발생하는 생성(created) 이벤트, 삭제(deleted) 이벤트, 변경(modified) 이벤트 및 이동(moved) 이벤트 각각에 대한 빈도수를 추출하는 단계
    를 포함하는 랜섬웨어 탐지 방법.
  7. 제2항에 있어서,
    상기 데이터셋은 상기 오피코드 명령어 빈도수, 상기 API 실행 빈도수 및 상기 이벤트 빈도수를 포함하고,
    상기 필터링하는 단계는,
    상기 오피코드 명령어 빈도수에 기초한 기계 학습을 통해 클러스터 벡터를 생성하는 단계;
    상기 API 실행 빈도수에 기초하여 의심 API(Suspicious API)를 분류함으로써 API 벡터를 생성하는 단계; 및
    상기 이벤트 빈도수에 기초하여 이벤트 벡터를 생성하는 단계
    를 포함하는 랜섬웨어 탐지 방법.
  8. 제7항에 있어서,
    상기 클러스터 벡터를 생성하는 단계는,
    K-means 클러스터링 알고리즘을 이용한 기계 학습을 통해 상기 오피코드 명령어 빈도수로부터 상기 클러스터 벡터를 생성하는 단계
    를 포함하는 랜섬웨어 탐지 방법.
  9. 제7항에 있어서,
    상기 복수의 모델링 변수는,
    상기 클러스터 벡터, 상기 API 벡터 및 상기 이벤트 벡터를 포함하고,
    상기 판별하는 단계는,
    상기 클러스터 벡터, API 벡터 및 이벤트 벡터에 기초한 기계 학습을 통해 상기 복수의 객체에 대한 랜섬웨어 여부를 판별하는 단계
    를 포함하는 랜섬웨어 탐지 방법.
  10. 제9항에 있어서,
    상기 판별하는 단계는,
    로지스틱 회귀 알고리즘, SVM(Support Vector Machine) 알고리즘 및 나이브 베이즈(Naive Bayes) 알고리즘 중 하나를 이용한 기계 학습을 통해 상기 복수의 객체에 대한 랜섬웨어 여부를 판별하는 단계
    를 포함하는 랜섬웨어 탐지 방법.
  11. 복수의 객체를 수신하는 수신기; 및
    상기 복수의 객체에 대한 랜섬웨어 여부를 판별하는 컨트롤러
    를 포함하고,
    상기 컨트롤러는,
    상기 복수의 객체에 대하여 정적 분석(static analysis) 및 동적 분석(dynamic analysis)을 수행하여 데이터셋(dataset)을 생성하는 데이터셋 생성기;
    상기 데이터셋을 필터링하여 복수의 모델링 변수를 생성하는 필터; 및
    상기 복수의 모델링 변수에 기초한 모델링을 통해 상기 복수의 객체 각각의 랜섬웨어 여부를 판별하는 판별기(discriminator)
    를 포함하는 랜섬웨어 탐지 장치.
  12. 제11항에 있어서,
    상기 데이터셋 생성기는,
    상기 복수의 객체에 대하여 상기 정적 분석을 수행하여 오피코드(Opcode) 명령어 빈도수를 추출하는 정적 분석기;
    상기 복수의 객체에 대하여 제1 동적 분석을 수행하여 API 실행 빈도수를 추출하는 제1 동적 분석기; 및
    상기 복수의 객체에 대하여 제2 동적 분석을 수행하여 이벤트 빈도수를 추출하는 제2 동적 분석기
    를 포함하는 랜섬웨어 탐지 장치.
  13. 제12항에 있어서,
    상기 정적 분석기는,
    상기 복수의 객체의 바이너리 실행파일을 디스어셈블리(disassembly) 코드로 변환하고, 상기 디스어셈블리 코드로부터 상기 오피코드 명령어 빈도수를 추출하는
    랜섬웨어 탐지 장치.
  14. 제12항에 있어서,
    상기 제1 동적 분석기는,
    상기 복수의 객체 각각에 대하여 윈도우 API 후킹(Windows API Hooking)을 수행하고, 상기 복수의 객체 각각이 실행하는 API들의 실행 빈도수를 추출하는
    랜섬웨어 탐지 장치.
  15. 제12항에 있어서,
    상기 제2 동적 분석기는,
    이벤트 로그(log)를 추출하고, 상기 이벤트 로그에 기초하여 상기 이벤트 빈도수를 추출하는
    랜섬웨어 탐지 장치.
  16. 제15항에 있어서,
    상기 제2 동적 분석기는,
    상기 복수의 객체에 발생하는 생성(created) 이벤트, 삭제(deleted) 이벤트, 변경(modified) 이벤트 및 이동(moved) 이벤트 각각에 대한 빈도수를 추출하는
    랜섬웨어 탐지 장치.
  17. 제12항에 있어서,
    상기 데이터셋은 상기 오피코드 명령어 빈도수, 상기 API 실행 빈도수 및 상기 이벤트 빈도수를 포함하고,
    상기 필터는,
    상기 오피코드 명령어 빈도수에 기초한 기계 학습을 통해 클러스터 벡터를 생성하고, 상기 API 실행 빈도수에 기초하여 의심 API(Suspicious API)를 분류함으로써 API 벡터를 생성하고, 상기 이벤트 빈도수에 기초하여 이벤트 벡터를 생성하는
    랜섬웨어 탐지 장치.
  18. 제17항에 있어서,
    상기 필터는,
    K-means 클러스터링 알고리즘을 이용한 기계 학습을 통해 상기 오피코드 명령어 빈도수로부터 상기 클러스터 벡터를 생성하는
    랜섬웨어 탐지 장치.
  19. 제17항에 있어서,
    상기 복수의 모델링 변수는,
    상기 클러스터 벡터, 상기 API 벡터 및 상기 이벤트 벡터를 포함하고,
    상기 판별기는,
    상기 클러스터 벡터, API 벡터 및 이벤트 벡터에 기초한 기계 학습을 통해 상기 복수의 객체에 대한 랜섬웨어 여부를 판별하는
    랜섬웨어 탐지 장치.
  20. 제19항에 있어서,
    상기 판별기는,
    로지스틱 회귀 알고리즘, SVM(Support Vector Machine) 알고리즘 및 나이브 베이즈(Naive Bayes) 알고리즘 중 하나를 이용한 기계 학습을 통해 상기 복수의 객체에 대한 랜섬웨어 여부를 판별하는
    랜섬웨어 탐지 장치.
KR1020170163681A 2017-11-30 2017-11-30 하이브리드 분석을 통한 머신러닝 기반의 랜섬웨어 탐지 방법 및 장치 KR101988747B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020170163681A KR101988747B1 (ko) 2017-11-30 2017-11-30 하이브리드 분석을 통한 머신러닝 기반의 랜섬웨어 탐지 방법 및 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170163681A KR101988747B1 (ko) 2017-11-30 2017-11-30 하이브리드 분석을 통한 머신러닝 기반의 랜섬웨어 탐지 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20190064264A true KR20190064264A (ko) 2019-06-10
KR101988747B1 KR101988747B1 (ko) 2019-06-12

Family

ID=66845816

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170163681A KR101988747B1 (ko) 2017-11-30 2017-11-30 하이브리드 분석을 통한 머신러닝 기반의 랜섬웨어 탐지 방법 및 장치

Country Status (1)

Country Link
KR (1) KR101988747B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114969734A (zh) * 2022-05-16 2022-08-30 北京航空航天大学 一种基于api调用序列的勒索病毒变种检测方法
US11573785B2 (en) 2020-05-14 2023-02-07 International Business Machines Corporation Predicting code vulnerabilities using machine learning classifier models trained on internal analysis states

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016109283A1 (en) * 2014-12-30 2016-07-07 Fireeye, Inc. Intelligent context aware user interaction for malware detection
US20160285897A1 (en) * 2015-03-24 2016-09-29 Qualcomm Incorporated Methods and systems for identifying malware through differences in cloud vs. client behavior
KR20170087007A (ko) * 2016-01-19 2017-07-27 삼성전자주식회사 악성 코드 분석을 위한 전자 장치 및 이의 방법
KR20170107665A (ko) * 2016-03-16 2017-09-26 주식회사 엘지유플러스 악성코드 분석모듈 및 그 악성코드 분석방법

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016109283A1 (en) * 2014-12-30 2016-07-07 Fireeye, Inc. Intelligent context aware user interaction for malware detection
US20160285897A1 (en) * 2015-03-24 2016-09-29 Qualcomm Incorporated Methods and systems for identifying malware through differences in cloud vs. client behavior
KR20170087007A (ko) * 2016-01-19 2017-07-27 삼성전자주식회사 악성 코드 분석을 위한 전자 장치 및 이의 방법
KR20170107665A (ko) * 2016-03-16 2017-09-26 주식회사 엘지유플러스 악성코드 분석모듈 및 그 악성코드 분석방법

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11573785B2 (en) 2020-05-14 2023-02-07 International Business Machines Corporation Predicting code vulnerabilities using machine learning classifier models trained on internal analysis states
CN114969734A (zh) * 2022-05-16 2022-08-30 北京航空航天大学 一种基于api调用序列的勒索病毒变种检测方法
CN114969734B (zh) * 2022-05-16 2024-05-14 北京航空航天大学 一种基于api调用序列的勒索病毒变种检测方法

Also Published As

Publication number Publication date
KR101988747B1 (ko) 2019-06-12

Similar Documents

Publication Publication Date Title
US11277423B2 (en) Anomaly-based malicious-behavior detection
EP3506139B1 (en) Malware detection in event loops
Xu et al. Malware detection using machine learning based analysis of virtual memory access patterns
JP7405596B2 (ja) コンピュータシステムのオブジェクト分類のためのシステムおよび方法
US10936717B1 (en) Monitoring containers running on container host devices for detection of anomalies in current container behavior
US9813437B2 (en) Systems and methods for determining malicious-download risk based on user behavior
KR102160659B1 (ko) 하드웨어-기반 마이크로-아키텍처 데이터를 이용한 이상 프로그램 실행의 검출
CN110383278A (zh) 用于检测恶意计算事件的系统和方法
Ho et al. PREC: practical root exploit containment for android devices
KR102534334B1 (ko) 컴퓨팅 디바이스들에서 프로세스들에 대한 소프트웨어 공격들의 검출
EP3531329B1 (en) Anomaly-based-malicious-behavior detection
US20210014243A1 (en) Method and system for antivirus scanning of backup data at a centralized storage
CN110865866B (zh) 一种基于自省技术的虚拟机安全检测方法
US9552481B1 (en) Systems and methods for monitoring programs
Pundir et al. RanStop: A hardware-assisted runtime crypto-ransomware detection technique
Rajput et al. Remote non-intrusive malware detection for plcs based on chain of trust rooted in hardware
KR101988747B1 (ko) 하이브리드 분석을 통한 머신러닝 기반의 랜섬웨어 탐지 방법 및 장치
KR102105885B1 (ko) 랜섬웨어 탐지 방법 및 랜섬웨어 탐지 시스템
Rana et al. Automated windows behavioral tracing for malware analysis
US20220253524A1 (en) Malware Detection System
US10546125B1 (en) Systems and methods for detecting malware using static analysis
US11822666B2 (en) Malware detection
Joy et al. A host based kernel level rootkit detection mechanism using clustering technique
Wang et al. MrKIP: Rootkit Recognition with Kernel Function Invocation Pattern.
Melaragno et al. Detecting ransomware execution in a timely manner

Legal Events

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