KR102174393B1 - 악성 코드 탐지 장치 - Google Patents

악성 코드 탐지 장치 Download PDF

Info

Publication number
KR102174393B1
KR102174393B1 KR1020200101919A KR20200101919A KR102174393B1 KR 102174393 B1 KR102174393 B1 KR 102174393B1 KR 1020200101919 A KR1020200101919 A KR 1020200101919A KR 20200101919 A KR20200101919 A KR 20200101919A KR 102174393 B1 KR102174393 B1 KR 102174393B1
Authority
KR
South Korea
Prior art keywords
api
chain
apis
malicious
representative
Prior art date
Application number
KR1020200101919A
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 KR1020200101919A priority Critical patent/KR102174393B1/ko
Application granted granted Critical
Publication of KR102174393B1 publication Critical patent/KR102174393B1/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/22Indexing; Data structures therefor; Storage structures
    • G06F16/221Column-oriented storage; Management thereof
    • 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/23Updating

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computer Hardware Design (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Debugging And Monitoring (AREA)

Abstract

본 발명에서는 악성 코드 탐지 장치가 개시된다.
본 발명의 일 실시예에 따른 악성 코드 탐지 장치는, 적어도 하나의 프로세서(processor); 및 상기 적어도 하나의 프로세서가 적어도 하나의 단계를 수행하도록 지시하는 명령어들(instructions)을 포함할 수 있다. 상기 적어도 하나의 단계는, 악성 코드들을 수집하는 단계; 가상 머신 환경에서 상기 악성 코드들에 의해 호출되는 API(Application Programming Interface)들을 추출하는 단계; 추출된 상기 API들을 호출 순서에 따라 연결하여 상기 악성 코드들 각각에 대응하는 API 체인들을 생성하는 단계; 및 상기 API 체인들을 테스트 코드로부터 생성된 API 체인과 비교하여 상기 테스트 코드가 악성 코드인지 여부를 결정하는 단계를 포함한다.
따라서, 본 발명은 악성 코드를 정확하게 탐지하는 효과를 사용자에게 제공할 수 있다.

Description

악성 코드 탐지 장치{MALICIOUS CODE DETECTION DEVICE}
본 발명은 악성 코드 탐지 장치에 관한 것으로, 더욱 상세하게는 악성 코드의 패턴을 기초로 악성 코드를 탐지하는 장치에 관한 것이다.
멀웨어(Malware)로도 불리는 악성 코드(Malicious code)는 개인용 단말, 서버, 클라우드, 네트워크 장비 등에서 매우 광범위하게 발견되고 있다. 악성 코드는, 바이러스, 웜, 트로이 목마, 스파이웨어, 봇, 루트킷(rootkit), 랜섬웨어 등 다양한 형태로 네트워크를 통해 전파된다. 특히, 사물 인터넷(Internet of Things, IoT)의 발달에 따라 CCTV, 카메라 등에도 널리 네트워크 접속이 가능해짐에 따라 악성 코드로 인한 피해가 크게 증가하고 있다.
악성 코드를 비롯한 소스 코드를 분석하는 대표적인 분석 방법으로는, 소스 코드를 역공학으로 분해하여 내부 함수들을 분석하는 정적 분석과 소스 코드를 실행하여, 소스 코드의 동작 특징을 분석하는 동적 분석이 있다.
한편, 정적 분석은 역공학을 통해 소스 코드를 세부적으로 분석하는 데 많은 시스템 자원을 필요로 하고, 각 단말에서 동작 중에 있는 악성 코드를 곧바로 발견하기 어려운 문제가 있다.
또한, 동적 분석은 소스 코드의 동작 패턴을 정형화하여 분석해야 하지만, 패턴을 정형화하는 기준이 모호하거나 불명확하여 쉽게 적용하기 어려운 문제가 있다.
상기와 같은 문제점을 해결하기 위한 본 발명의 목적은, 악성 코드 탐지 성능이 우수한 악성 코드 탐지 장치를 제공하는 데 있다.
본 발명에서 이루고자 하는 기술적 과제들은 이상에서 언급한 기술적 과제들로 제한되지 않으며, 언급하지 않은 또 다른 기술적 과제들은 아래의 기재로부터 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
상기 목적을 달성하기 위한 본 발명은, 악성 코드 탐지 장치를 제공한다.
상기 악성 코드 탐지 장치는, 적어도 하나의 프로세서(processor); 및 상기 적어도 하나의 프로세서가 적어도 하나의 단계를 수행하도록 지시하는 명령어들(instructions)을 포함할 수 있다.
상기 적어도 하나의 단계는, 악성 코드들을 수집하는 단계; 가상 머신 환경에서 상기 악성 코드들에 의해 호출되는 API(Application Programming Interface)들을 추출하는 단계; 추출된 상기 API들을 호출 순서에 따라 연결하여 상기 악성 코드들 각각에 대응하는 API 체인들을 생성하는 단계; 및 상기 API 체인들을 테스트 코드로부터 생성된 API 체인과 비교하여 상기 테스트 코드가 악성 코드인지 여부를 결정하는 단계를 포함할 수 있다.
상기 API들을 추출하는 단계는, 상기 가상 머신 환경에서 상기 악성 코드들을 실행하는 단계; 및 실행된 상기 악성 코드들에 의해 호출되는 API들을 후킹하는 단계를 포함할 수 있다.
상기 후킹은, SSDT(System Service Descriptor Table) 후킹 및 IDT(Interrupt Descriptor Table) 후킹 중 적어도 하나를 포함할 수 있다.
상기 API들을 추출하는 단계는, 상기 API들의 호출 순서, 호출 빈도, 상기 API들 각각과 대응하는 인자(parameter) 및 반환 값(return value) 중 적어도 하나를 수집하는 단계를 더 포함할 수 있다.
상기 수집하는 단계는, 상기 실행된 악성 코드들에 의해 파일 시스템에 접근하는 프로세서 이름, 파일 접근 시각, 및 파일 경로명 중 적어도 하나를 수집하는 단계를 포함할 수 있다.
상기 API 체인들은 리스트(list) 형태의 데이터 구조를 가질 수 있다.
상기 API 체인들을 생성하는 단계는, 추출된 상기 API들을 호출 순서에 따라 연결하여 상기 악성 코드들 각각에 대응하는 초기 API 체인들을 생성하는 단계; 상기 초기 API 체인들 각각에 포함된 API들 중 적어도 하나를 대표 API로 치환하여 중간 API 체인들을 생성하는 단계; 및 상기 중간 API 체인들에 포함된 API들 중에서 시간적으로 연속적으로 호출되는 API들을 제1 가중치를 갖는 하나의 API로 치환하여 상기 API 체인들을 생성하는 단계를 포함할 수 있다.
상기 대표 API는, 상기 초기 API 체인들 각각에 포함된 API들 중 기능이 동일하거나 유사한 API들을 대표하는 API일 수 있다.
상기 적어도 하나의 단계는, 정상적인 코드들과 상기 악성 코드들을 이용하여 호출되는 API들을 추출하고, 추출된 API들의 인자(parameter)와 반환 값(return value)가 동일한 API들을 그룹핑하여 복수의 그룹들을 생성하는 단계; 및 상기 그룹들 각각에서 API들 중 하나를 선정함으로써 상기 그룹들 각각에 대한 상기 대표 API를 선정하는 단계를 더 포함할 수 있다.
상기 대표 API를 선정하는 단계는, 상기 그룹들 각각에 포함된 API들 중에서 개수가 많은 API를 상기 대표 API로 선정할 수 있다.
상기와 같은 본 발명에 따른 악성 코드 탐지 장치를 이용할 경우에는 악성 코드의 API 체인들을 패턴화하고, 패턴 유사도를 비교하여 악성 코드 여부를 탐지할 수 있다.
또한, 필요에 따라서는 딥러닝 네트워크를 이용해 API 체인들을 학습할 수 있어 여러 API 체인들의 패턴 변화를 용이하게 추적하고 학습할 수 있는 장점이 있다.
본 발명에서 얻을 수 있는 효과는 이상에서 언급한 효과들로 제한되지 않으며, 언급하지 않은 또 다른 효과들은 아래의 기재로부터 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
본 발명의 특정한 바람직한 실시예들의 상기에서 설명한 바와 같은 또한 다른 측면들과, 특징들 및 이득들은 첨부 도면들과 함께 처리되는 하기의 설명으로부터 보다 명백하게 될 것이다.
도 1은 일 실시예에 따른 악성 코드 탐지 장치가 수행되는 환경을 나타낸 예시도이다.
도 2는 도 1에 따른 악성 코드 탐지 장치가 API 체인을 생성하는 과정을 설명하기 위한 예시도이다.
도 3은 도 1에 따른 악성 코드 탐지 장치가 API 체인을 1:1 비교하는 방법을 나타낸 예시도이다.
도 4는 다른 실시예에 따른 악성 코드 탐지 장치의 동작을 나타낸 예시 흐름도이다.
도 5는 일 실시예에 따른 악성 코드 탐지 장치에 대한 하드웨어 구성도이다.
상기 도면들을 통해, 유사 참조 번호들은 동일한 혹은 유사한 엘리먼트들과, 특징들 및 구조들을 도시하기 위해 사용된다는 것에 유의해야만 한다.
이하, 본 발명의 실시예를 첨부된 도면을 참조하여 상세하게 설명한다.
실시예를 설명함에 있어서 본 발명이 속하는 기술 분야에 익히 알려져 있고 본 발명과 직접적으로 관련이 없는 기술 내용에 대해서는 설명을 생략한다. 이는 불필요한 설명을 생략함으로써 본 발명의 요지를 흐리지 않고 더욱 명확히 전달하기 위함이다.
마찬가지 이유로 첨부 도면에 있어서 일부 구성요소는 과장되거나 생략되거나 개략적으로 도시되었다. 또한, 각 구성요소의 크기는 실제 크기를 전적으로 반영하는 것이 아니다. 각 도면에서 동일한 또는 대응하는 구성요소에는 동일한 참조 번호를 부여하였다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시 예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시 예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시 예들은 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
이때, 처리 흐름도 도면들의 각 블록과 흐름도 도면들의 조합들은 컴퓨터 프로그램 인스트럭션들에 의해 수행될 수 있음을 이해할 수 있을 것이다. 이들 컴퓨터 프로그램 인스트럭션들은 범용 컴퓨터, 특수용 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서에 탑재될 수 있으므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서를 통해 수행되는 그 인스트럭션들이 흐름도 블록(들)에서 설명된 기능들을 수행하는 수단을 생성하게 된다. 이들 컴퓨터 프로그램 인스트럭션들은 특정 방식으로 기능을 구현하기 위해 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 지향할 수 있는 컴퓨터 이용 가능 또는 컴퓨터 판독 가능 메모리에 저장되는 것도 가능하므로, 그 컴퓨터 이용가능 또는 컴퓨터 판독 가능 메모리에 저장된 인스트럭션들은 흐름도 블록(들)에서 설명된 기능을 수행하는 인스트럭션 수단을 내포하는 제조 품목을 생산하는 것도 가능하다. 컴퓨터 프로그램 인스트럭션들은 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에 탑재되는 것도 가능하므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에서 일련의 동작 단계들이 수행되어 컴퓨터로 실행되는 프로세스를 생성해서 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 수행하는 인스트럭션들은 흐름도 블록(들)에서 설명된 기능들을 실행하기 위한 단계들을 제공하는 것도 가능하다.
또한, 각 블록은 특정된 논리적 기능(들)을 실행하기 위한 하나 이상의 실행 가능한 인스트럭션들을 포함하는 모듈, 세그먼트 또는 코드의 일부를 나타낼 수 있다. 또, 몇 가지 대체 실행 예들에서는 블록들에서 언급된 기능들이 순서를 벗어나서 발생하는 것도 가능함을 주목해야 한다. 예컨대, 잇달아 도시되어 있는 두 개의 블록들은 사실 실질적으로 동시에 수행되는 것도 가능하고 또는 그 블록들이 때때로 해당하는 기능에 따라 역순으로 수행되는 것도 가능하다.
이 때, 본 실시 예에서 사용되는 '~부'라는 용어는 소프트웨어 또는 FPGA(field-Programmable Gate Array) 또는 ASIC(Application Specific Integrated Circuit)과 같은 하드웨어 구성요소를 의미하며, '~부'는 어떤 역할들을 수행한다. 그렇지만 '~부'는 소프트웨어 또는 하드웨어에 한정되는 의미는 아니다. '~부'는 어드레싱할 수 있는 저장 매체에 있도록 구성될 수도 있고 하나 또는 그 이상의 프로세서들을 재생시키도록 구성될 수도 있다. 따라서, 일 예로서 '~부'는 소프트웨어 구성요소들, 객체지향 소프트웨어 구성요소들, 클래스 구성요소들 및 태스크 구성요소들과 같은 구성요소들과, 프로세스들, 함수들, 속성들, 프로시저들, 서브루틴들, 프로그램 코드의 세그먼트들, 드라이버들, 펌웨어, 마이크로코드, 회로, 데이터, 데이터베이스, 데이터 구조들, 테이블들, 어레이들, 및 변수들을 포함한다. 구성요소들과 '~부'들 안에서 제공되는 기능은 더 작은 수의 구성요소들 및 '~부'들로 결합되거나 추가적인 구성요소들과 '~부'들로 더 분리될 수 있다. 뿐만 아니라, 구성요소들 및 '~부'들은 디바이스 또는 보안 멀티미디어카드 내의 하나 또는 그 이상의 CPU들을 재생시키도록 구현될 수도 있다.
본 발명의 실시예들을 구체적으로 설명함에 있어서, 특정 시스템의 예를 주된 대상으로 할 것이지만, 본 명세서에서 청구하고자 하는 주요한 요지는 유사한 기술적 배경을 가지는 여타의 통신 시스템 및 서비스에도 본 명세서에 개시된 범위를 크게 벗어나지 아니하는 범위에서 적용 가능하며, 이는 당해 기술분야에서 숙련된 기술적 지식을 가진 자의 판단으로 가능할 것이다.
삭제
도 1은 일 실시예에 따른 악성 코드 탐지 장치가 수행되는 환경을 나타낸 예시도이다.
도 1을 참조하면, 악성 코드 탐지 장치(100)는, 유무선 네트워크를 통해 악성 코드들을 수집하고, 수집된 악성 코드들을 사용자 단말(200)로부터 제공된 테스트 코드와 비교하여 테스트 코드가 악성 코드인지 여부를 탐지하고, 탐지 결과를 사용자 단말(200)에 전송할 수 있다.
사용자 단말(200)의 예를 들면, 통신 가능한 데스크탑 컴퓨터(desktop computer), 랩탑 컴퓨터(laptop computer), 노트북(notebook), 스마트폰(smart phone), 태블릿 PC(tablet PC), 모바일폰(mobile phone), 스마트 워치(smart watch), 스마트 글래스(smart glass), e-book 리더기, PMP(portable multimedia player), 휴대용 게임기, 네비게이션(navigation) 장치, 디지털 카메라(digital camera), DMB(digital multimedia broadcasting) 재생기, 디지털 음성 녹음기(digital audio recorder), 디지털 음성 재생기(digital audio player), 디지털 동영상 녹화기(digital video recorder), 디지털 동영상 재생기(digital video player), PDA(Personal Digital Assistant) 등일 수 있다.
악성 코드 탐지 장치(100)는, 수집된 악성 코드들에 대해 가상 머신 환경에서 동적 분석을 수행하여 악성코드들 각각에서 호출되는 API(application programming interface)들을 추출할 수 있다.
예를 들어, 악성 코드 탐지 장치(100)는, 가성 머신 환경에서 동적 분석을 통해 악성 코드들에 의해 호출되는 API를 후킹함으로써, API들을 추출할 수 있다. 여기서 가상 머신 환경은 보호된 영역 안에서 프로그램을 작동시키는 보안 소프트웨어인 샌드 박스(sandbox)일 수 있다. 샌드 박스는 OS(Operation System)에는 영향을 주지 않고 HVM(Java Virtual Machine)이라는 보호된 영역 안에 가두어 악성 코드들을 작동시킴으로써, 악성 코드들이 OS 와 같이 시스템 주요 환경에 침투하는 것을 방지할 수 있다.
후킹은, 운영 체제나 응용 소프트웨어 등의 각종 컴퓨터 프로그램에서 소프트웨어 구성 요소 사이에 발생하는 함수 호출, 메시지, 이벤트 등을 가로채는 명령어, 방법 등일 수 있다. 후킹은 SSDT(System Service Descriptor Table) 후킹 또는 IDT(Interrupt Descriptor Table) 후킹 등을 포함할 수 있다. 이때, 악성 코드 탐지 장치(100)는, 추출되는 API들의 호출 순서, 호출 빈도, 추출되는 각각의 API와 대응하는 인자(parameter), 반환 값(return value) 등을 수집할 수 있다.
예를 들어, 악성 코드들에서 추출되는 API들은 CallNextHookEx, CreateWindowExA, DefWindowProcA, EnterCriticalSection, TlsAlloc, TlsFree, TlsGetValue, TlsSetValue, UnhookWindowsHookEx 등일 수 있다.
또한, 정상적인 코드에서 추출되는 API들은 CharNextW, CharPrevW, CoCreateInstance, Sleep, CreateProcess, VirtualProtect, GetCommandLineW, GetCurrentProcessId, GetModuleFileNameW 등일 수 있다. 다만 이러한 API들은 예시적인 것으로 악성 코드와 정상적인 코드에서 공통적으로 추출되는 API들도 다수 존재하기 때문에 API 만으로 악성 코드 여부를 특정하는 것은 어려울 수 있다.
또한, 악성 코드 탐지 장치(100)는, 가상 머신 환경 내에서 악성 코드가 실행되면, 실행된 악성 코드에 의해 파일 시스템에 접근하는 프로세스 이름, 파일 접근 시각, 파일 경로명, 전달 인자 등을 수집하여 로그 데이터(log data)로 저장할 수 있다.
다음으로, 악성 코드 탐지 장치(100)는 추출된 API들을 호출 순서에 따라 연결하여 악성 코드들 각각에 대응하는 API 체인들을 포함하는 블랙 리스트(blacklist)를 생성할 수 있다. 여기서, API 체인들은 호출 순서에 따라 API들을 연결한 가상의 체인으로서, 리스트(list) 형태의 데이터 구조를 가질 수 있다.
악성 코드 탐지 장치(100)는, 생성된 블랙 리스트에 포함된 API 체인들 각각을 테스트 코드로부터 생성된 테스트 API 체인과 비교함으로써, 테스트 코드가 악성 코드인지 여부를 결정할 수 있다.
한편, 도 1에서는 테스트 코드를 악성 코드 탐지 장치(100)가 사용자 단말(200)로부터 수신하고, 수신된 테스트 코드를 블랙 리스트와 비교하여 테스트 코드가 악성 코드인지 여부를 결정하는 것으로 도시하였으나, 본 발명은 이에 한정되지 않는다. 예를 들어, 사용자 단말(200)이 악성 코드 탐지 장치(100)에 포함되어, 악성 코드 탐지 장치(100)는 저장소 내부의 테스트 코드를 획득할 수도 있다.
삭제
도 2는 도 1에 따른 악성 코드 탐지 장치가 API 체인을 생성하는 과정을 설명하기 위한 예시도이다.
도 2를 참조하면, 악성 코드 탐지 장치(100)는, 악성 코드에서 추출된 API들을 호출 순서에 따라 연결하여 초기 API 체인을 생성할 수 있다. 예를 들어, 악성 코드 탐지 장치(100)는, 도 2에서와 같이 API a, API c, API f, API m, API c, API u, API j, API p, API p, API k의 호출 순서로 API들을 연결하여 초기 API 체인을 생성할 수 있다.
다음으로, 악성 코드 탐지 장치(100)는, 초기 API 체인에 포함된 API들 중 적어도 하나를 대표 API로 치환하여 중간 API 체인을 생성할 수 있다. 여기서, 대표 API는 초기 API에 포함된 API들 중 기능적으로 동일하거나 유사한 기능을 수행하는 API들을 대표하는 API로서, 미리 선정될 수 있다.
예를 들어, 악성 코드 탐지 장치(100)는, 특정 가상 머신 환경에서, 정상적인 코드들과 악성 코드들을 이용하여 호출되는 API들을 추출하고, 추출된 API들의 인자(parameter)와 반환 값(return value)가 동일한 API들을 그룹핑하여 복수의 그룹들을 생성할 수 있다. 여기서 인자와 반환값이 동일한 API들은 특정 가상 머신 환경에서 서로 동일한 인자와 반환 값을 가지고 있어 동일한 기능을 수행할 가능성이 높을 수 있다. 악성 코드 탐지 장치(100)는, 복수의 그룹들 각각에서 API들 중 하나를 선정함으로써, 그룹들 각각에 대한 대표 API를 미리 선정할 수 있다. 예를 들어, 악성 코드 탐지 장치(100)는, 그룹들 각각에 포함된 API들 중에서 개수가 가장 많은 API를 대표 API로 선정할 수 있다.
도 2를 참조하면, 악성 코드 탐지 장치(100)는, 초기 API 체인에 포함된 API m을 대표 API인 API f로 치환할 수 있고, 초기 API 체인에 포함된 API p를 대표 API인 API j로 치환할 수 있다. 초기 API 체인에 포함된 API들 중 나머지 API들은 대표 API가 선정되어 있지 않은 것으로 가정할 수 있다.
다음으로, 악성 코드 탐지 장치(100)는, 중간 API 체인에서 시간적으로 연속적으로 호출되는 API들을 제1 가중치를 갖는 하나의 API로 치환함으로써 API 체인을 생성할 수 있다. 예를 들어, 중간 API 체인에 포함된 API f가 2번 연속되는 경우, 연속되는횟수(2번)과 상응하는 제1 가중치를 갖는 하나의 API f로 2개의 API f를 치환할 수 있고, 중간 API 체인에 포함된 API j가 3번 연속되는 경우, 연속되는 횟수(3번)과 상응하는 제1 가중치를 갖는 하나의 API j로 3개의 API j를 치환할 수 있다.
한편, 도 2에서는 악성 코드에서 추출된 API들을 대상으로 API 체인을 생성하는 과정을 설명하였으나, 테스트 코드에서 추출된 API들을 대상으로도 동일한 방식으로 API 체인을 생성할 수 있다.
삭제
도 3은 도 1에 따른 악성 코드 탐지 장치가 API 체인을 1:1 비교하는 방법을 나타낸 예시도이다.
도 3을 참조하여, 제1 API 체인과 제2 API 체인을 상호 1:1 비교하는 방법을 설명하며, 제1 API 체인은 테스트 코드로부터 생성된 API 체인이고, 제2 API 체인은 악성 코드들 중 하나로부터 생성된 API 체인일 수 있다.
악성 코드 탐지 장치(100)는, 제1 API 체인에 포함된 API들과 제2 API 체인에 포함된 API들을 호출 순서에 따라 1:1 대응시켜 대응관계가 있는 적어도 하나의 대응 체인을 생성할 수 있다.
예를 들어, 제1 API 체인에서 첫번째 API인 API a가 제2 API 체인에서의 API a와 대응하고, 제1 API 체인의 두번째 API인 API c가 제2 API 체인에서의 API c와 대응하고, 제1 API 체인에서 마지막 API인 API k가 제2 API 체인에서의 API k와 대응할 수 있다. 따라서, 악성 코드 탐지 장치(100)는, API a, API c, API k의 순서를 갖는 제1 대응 체인을 생성할 수 있다.
또한, 제1 API 체인에서 첫번째 API인 API a가 제2 API 체인에서의 API a와 대응하고, 제1 API 체인의 네번째 API인 API c가 제2 API 체인에서의 API c와 대응하고, 제1 API 체인에서 마지막 API인 API k가 제2 API 체인에서의 API k와 대응하는 경우에도, API a, API c, API k의 순서를 갖는 제1 대응 체인이 생성될 수 있다.
그 밖에도, 제1 API 체인에서 첫번째 API인 API a가 제2 API 체인에서의 API a와 대응하고, 제1 API 체인의 다섯번째 API 내지 일곱번째 API인 API u, API j, API k가 제2 API 체인에서의 API u, API j, API k와 대응할 수 있다. 따라서, 악성 코드 탐지 장치(100)는, API a, API u, API j, API k의 순서를 갖는 제2 대응 체인을 생성할 수 있다.
이처럼, 악성 코드 탐지 장치(100)는 비교되는 2개의 API 체인들(제1 API 체인, 제2 API 체인)에 포함된 API들을 1:1 비교하여 호출 순서의 선후 관계가 동일한 API들을 연결한 대응 체인들(제1 대응 체인, 제2 대응 체인)을 생성할 수 있다.
악성 코드 탐지 장치(100)는, 생성된 대응 체인이 2개 이상인 경우, 가장 길이가 긴 대응 체인을 대표 대응 체인으로 선정할 수 있다. 예를 들어, 악성 코드 탐지 장치(100)는, 제1 대응 체인과 제2 대응 체인 중에서 길이가 더 긴 제2 대응 체인을 대표 대응 체인으로 선정할 수 있다.
대표 대응 체인이 선정되면, 악성 코드 탐지 장치(100)는, 대표 대응 체인을 이용하여, 2개의 API 체인들(제1 API 체인, 제2 API 체인)의 패턴 유사도를 최종적으로 결정할 수 있다.
예를 들어, 악성 코드 탐지 장치(100)는, 대표 대응 체인에 포함된 API들의 인자, 대표 대응 체인의 길이, 제1 가중치 등을 이용하여 패턴 유사도를 다음의 수학식 1과 같이 산출할 수 있다.
Figure 112020108681594-pat00001
삭제
수학식 1에서, l은 대표 대응 체인의 길이이고, k는 대표 대응 체인에 포함된 API들 중에서 연속적으로 호출된 API에 할당된 제1 가중치 또는 2개 이상의 제1 가중치들의 합(k, 도 2의 설명을 참조)이고, p는 제1 API 체인에 따른 API의 인자(parameter)와 제2 API 체인에 따른 API의 인자가 서로 동일하면, 1이고, 다르면 0을 나타내는 값일 수 있다. 예를 들어, p는 제2 대응 체인에 포함된 API a가 제1 API 체인에 따른 테스트 코드를 통해 실행되었을 때 사용된 인자와 API a가 제2 API 체인에 따른 악성 코드를 통해 실행되었을 때 사용된 인자가 서로 동일하면 1이고 다르면 0일 수 있다.
또한, q는 제1 API 체인에 따른 API를 통해 실행되는 프로세스 이름과 제2 API 체인에 따른 API를 통해 실행되는 프로세스 이름이 서로 동일하면 1이고, 다르면 0을 나타내는 값일 수 있다. 예를 들어, q는 제2 대응 체인에 포함된 API a가 테스트 코드를 통해 실행되었을 때 실행되는 프로세스 이름과 API a가 악성 코드를 통해 실행되었을 때 실행되는 프로세스 이름이 서로 동일하면 1이고 다르면 0일 수 있다. a1은 인자(parameter)에 대한 가중치를 지시하는 제2 가중치이고, a2는 프로세스에 대한 가중치를 지시하는 제3 가중치일 수 있다. a1과 a2의 합은 1과 동일할 수 있다.
수학식 1에서 i는 대표 대응 체인에 포함된 API들 각각에 대응하는 변수일 수 있다. 즉, 수학식 1에서, p, q는 대표 대응 체인에 포함된 API들 각각에 대하여 개별적으로 산출될 수 있고, 대표 대응 체인의 길이(l), 제1 가중치(k), 제2 가중치(a1), 제3 가중치(a2)는 대표 대응 체인에 포함된 API들 모두에 대해 공통적으로 적용될 수 있다.
악성 코드 탐지 장치(100)는, 패턴 유사도가 미리 설정된 임계값 이상인 경우, 테스트 코드가 악성 코드인 것으로 결정할 수 있다. 여기서 임계값은 악성 코드 탐지 장치(100)의 하드웨어 자원(source), 통신 대역폭(communication bandwidth) 등에 기초하여 결정될 수 있다.
삭제
도 4는 다른 실시예에 따른 악성 코드 탐지 장치의 동작을 나타낸 예시 흐름도이다.
악성 코드 탐지 장치(100)는 전술한 동작 중 일부를 딥러닝 네트워크의 일종인 LSTM(Long Short-Term Memory) 네트워크를 사용할 수 있다. LSTM 네트워크는 일련의 순차 데이터를 장기간 저장하면서 입력 데이터의 관찰 구간을 조절할 수 있어 호출 순서에 따른 API 체인의 패턴을 학습하기에 적합할 수 있다.
예를 들어, 도 4를 참조하면, 악성 코드 탐지 장치(100)는, 악성 코드들을 수집하고(S100), 가상 머신 환경에서 악성 코드들에 의해 호출되는 API들을 추출하고(S110), 추출된 API들을 호출 순서에 따라 연결하여 악성 코드들 각각에 대응하는 API 체인들을 생성(S120)할 수 있다.
다음으로, 악성 코드 탐지 장치(100)는 생성된 API 체인들을 LSTM 네트워크에 입력하여 API 체인들을 학습할 수 있다. LSTM 네트워크는 복수의 LSTM 셀들(cells)을 가지고, 각 LSTM 셀들은 입력 계층, 학습 계층, 및 출력 계층을 포함할 수 있다. 예를 들어, 악성 코드 탐지 장치(100)는, API 체인들 각각을 미리 설정된 길이를 갖는 입력 벡터들로 분할하고, 분할된 입력 벡터들에 악성 코드를 레이블링(labeling)하여 LSTM 네트워크를 학습시킬 수 있다.
구체적인 LSTM 네트워크의 세부 구조는 Sepp Hocheriter and Jurgen Schmidhuber, "Long short-term memory", Neural Computation, Vol. 9, No. 8, pp. 1735-1780, Aug. 1997.를 참조할 수 있다.
다음으로, 악성 코드 탐지 장치(100)는, 학습된 LSTM 네트워크에 테스트 코드로부터 생성된 API 체인을 입력하고, LSTM 네트워크의 출력값에 기초하여 테스크 코드가 악성 코드인지 여부를 결정할 수 있다(S140).
삭제
도 5는 일 실시예에 따른 악성 코드 탐지 장치에 대한 하드웨어 구성도이다.
도 5를 참조하면, 일 실시예에 따른 악성 코드 탐지 장치(100)는, 적어도 하나의 프로세서(110), 및 상기 적어도 하나의 프로세서가 적어도 하나의 단계를 수행하도록 지시하는 명령어들(instructions)을 저장하는 메모리(120)를 포함할 수 있다.
여기서 적어도 하나의 프로세서(110)는 중앙 처리 장치(central processing unit, CPU), 그래픽 처리 장치(graphics processing unit, GPU), 또는 본 발명의 실시예들에 따른 방법들이 수행되는 전용의 프로세서를 의미할 수 있다. 메모리(120) 및 저장 장치(160) 각각은 휘발성 저장 매체 및 비휘발성 저장 매체 중에서 적어도 하나로 구성될 수 있다. 예를 들어, 메모리(120)는 읽기 전용 메모리(read only memory, ROM) 및 랜덤 액세스 메모리(random access memory, RAM) 중에서 적어도 하나로 구성될 수 있다.
또한, 악성 코드 탐지 장치(100)는, 무선 네트워크를 통해 통신을 수행하는 송수신 장치(transceiver)(130)를 포함할 수 있다. 또한, 악성 코드 탐지 장치(100)는 입력 인터페이스 장치(140), 출력 인터페이스 장치(150), 저장 장치(160) 등을 더 포함할 수 있다. 악성 코드 탐지 장치(100)에 포함된 각각의 구성 요소들은 버스(bus)(170)에 의해 연결되어 서로 통신을 수행할 수 있다.
상기 적어도 하나의 단계는, 악성 코드들을 수집하는 단계; 가상 머신 환경에서 상기 악성 코드들에 의해 호출되는 API(Application Programming Interface)들을 추출하는 단계; 추출된 상기 API들을 호출 순서에 따라 연결하여 상기 악성 코드들 각각에 대응하는 API 체인들을 생성하는 단계; 및 상기 API 체인들을 테스트 코드로부터 생성된 API 체인과 비교하여 상기 테스트 코드가 악성 코드인지 여부를 결정하는 단계를 포함할 수 있다.
상기 API들을 추출하는 단계는, 상기 가상 머신 환경에서 상기 악성 코드들을 실행하는 단계; 및 실행된 상기 악성 코드들에 의해 호출되는 API들을 후킹하는 단계를 포함할 수 있다.
상기 후킹은, SSDT(System Service Descriptor Table) 후킹 및 IDT(Interrupt Descriptor Table) 후킹 중 적어도 하나를 포함할 수 있다.
상기 API들을 추출하는 단계는, 상기 API들의 호출 순서, 호출 빈도, 상기 API들 각각과 대응하는 인자(parameter) 및 반환 값(return value) 중 적어도 하나를 수집하는 단계를 더 포함할 수 있다.
상기 수집하는 단계는, 상기 실행된 악성 코드들에 의해 파일 시스템에 접근하는 프로세서 이름, 파일 접근 시각, 및 파일 경로명 중 적어도 하나를 수집하는 단계를 포함할 수 있다.
상기 API 체인들은 리스트(list) 형태의 데이터 구조를 가질 수 있다.
상기 API 체인들을 생성하는 단계는, 추출된 상기 API들을 호출 순서에 따라 연결하여 상기 악성 코드들 각각에 대응하는 초기 API 체인들을 생성하는 단계; 상기 초기 API 체인들 각각에 포함된 API들 중 적어도 하나를 대표 API로 치환하여 중간 API 체인들을 생성하는 단계; 및 상기 중간 API 체인들에 포함된 API들 중에서 시간적으로 연속적으로 호출되는 API들을 제1 가중치를 갖는 하나의 API로 치환하여 상기 API 체인들을 생성하는 단계를 포함할 수 있다.
상기 대표 API는, 상기 초기 API 체인들 각각에 포함된 API들 중 기능이 동일하거나 유사한 API들을 대표하는 API일 수 있다.
상기 적어도 하나의 단계는, 정상적인 코드들과 상기 악성 코드들을 이용하여 호출되는 API들을 추출하고, 추출된 API들의 인자(parameter)와 반환 값(return value)가 동일한 API들을 그룹핑하여 복수의 그룹들을 생성하는 단계; 및 상기 그룹들 각각에서 API들 중 하나를 선정함으로써 상기 그룹들 각각에 대한 상기 대표 API를 선정하는 단계를 더 포함할 수 있다.
상기 대표 API를 선정하는 단계는, 상기 그룹들 각각에 포함된 API들 중에서 개수가 많은 API를 상기 대표 API로 선정할 수 있다.
그 밖에도, 상기 적어도 하나의 단계는, 전술한 도 1 내지 도 4를 참조하여 설명한 악성 코드 탐지 장치(100)의 동작 중 적어도 일부를 포함할 수 있다.
삭제
본 발명에 따른 방법들은 다양한 컴퓨터 수단을 통해 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 컴퓨터 판독 가능 매체에 기록되는 프로그램 명령은 본 발명을 위해 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다.
컴퓨터 판독 가능 매체의 예에는 롬(ROM), 램(RAM), 플래시 메모리(flash memory) 등과 같이 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함될 수 있다. 프로그램 명령의 예에는 컴파일러(compiler)에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터(interpreter) 등을 사용해서 컴퓨터에 의해 실행될 수 있는 고급 언어 코드를 포함할 수 있다. 상술한 하드웨어 장치는 본 발명의 동작을 수행하기 위해 적어도 하나의 소프트웨어 모듈로 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
또한, 상술한 방법 또는 장치는 그 구성이나 기능의 전부 또는 일부가 결합되어 구현되거나, 분리되어 구현될 수 있다.
상기에서는 본 발명의 바람직한 실시예를 참조하여 설명하였지만, 해당 기술 분야의 숙련된 당업자는 하기의 특허 청구의 범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.
100: 악성 코드 탐지 장치 110: 프로세서
120: 메모리 130: 송수신 장치
140: 입력 인터페이스 장치 150: 출력 인터페이스 장치
160: 저장 장치 170: 버스
200: 사용자 단말

Claims (5)

  1. 프로세서(processor); 및
    상기 프로세서가 적어도 하나의 단계를 수행하도록 지시하는 명령어들(instructions)을 포함하는 악성 코드 탐지 장치로서,
    상기 프로세서는,
    악성 코드들을 수집하고,
    가상 머신 환경에서 상기 악성 코드들을 실행하고,
    실행된 상기 악성 코드들에 의해 호출되는 복수의 제1 API(Application Programming Interface)를 후킹(hooking)하고,
    상기 복수의 제1 API를 호출 순서에 따라 연결하여 상기 악성 코드들 중 어느 하나에 대응하는 초기 API 체인(chain)을 생성하되, 상기 초기 API 체인은 리스트(list) 형태의 데이터 구조를 갖고,
    상기 초기 API 체인에 포함되는 상기 복수의 제1 API 중에서 동일한 API의 개수에 기반하여 대표 API를 설정하고,
    상기 초기 API 체인에 포함되는 상기 복수의 제1 API 중에서 상기 대표 API와 상이한 특징을 갖는 API를 상기 대표 API로 치환함으로써 중간 API 체인을 생성하고,
    상기 중간 API 체인에 포함되는 복수의 제2 API 중에서 상기 대표 API 및 상기 대표 API와 동일한 특징을 갖는 API를, 특정 가중치가 설정되는 하나의 대표 API로 치환함으로써 최종 API 체인을 생성하고,
    상기 최종 API 체인은 제1 API 체인에 상응하고,
    상기 제1 API 체인을 테스트 코드로부터 생성된 제2 API 체인과 비교하여 중복되는 API에 기반하여 복수의 대응 체인을 생성하고,
    상기 복수의 대응 체인 중에서 체인의 개수가 가장 많은 체인을 대표 대응 체인으로 설정하고,
    상기 대표 대응 체인에 기반하여 상기 테스트 코드가 악성 코드인지 여부를 결정하는 것을 특징으로 하는,
    악성 코드 탐지 장치.
  2. 삭제
  3. 삭제
  4. 삭제
  5. 삭제
KR1020200101919A 2020-08-13 2020-08-13 악성 코드 탐지 장치 KR102174393B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020200101919A KR102174393B1 (ko) 2020-08-13 2020-08-13 악성 코드 탐지 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200101919A KR102174393B1 (ko) 2020-08-13 2020-08-13 악성 코드 탐지 장치

Publications (1)

Publication Number Publication Date
KR102174393B1 true KR102174393B1 (ko) 2020-11-04

Family

ID=73571405

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200101919A KR102174393B1 (ko) 2020-08-13 2020-08-13 악성 코드 탐지 장치

Country Status (1)

Country Link
KR (1) KR102174393B1 (ko)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20100035045A (ko) * 2008-09-25 2010-04-02 주식회사 안철수연구소 은폐된 시스템 개체 진단 시스템 및 진단 방법
KR20170081386A (ko) * 2016-01-04 2017-07-12 한국전자통신연구원 다중 특징벡터를 이용하는 행위기반 악성코드 탐지 장치 및 방법
KR20190102678A (ko) * 2018-02-27 2019-09-04 한국인터넷진흥원 악성 앱 탐지 장치 및 그 방법

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20100035045A (ko) * 2008-09-25 2010-04-02 주식회사 안철수연구소 은폐된 시스템 개체 진단 시스템 및 진단 방법
KR20170081386A (ko) * 2016-01-04 2017-07-12 한국전자통신연구원 다중 특징벡터를 이용하는 행위기반 악성코드 탐지 장치 및 방법
KR20190102678A (ko) * 2018-02-27 2019-09-04 한국인터넷진흥원 악성 앱 탐지 장치 및 그 방법

Similar Documents

Publication Publication Date Title
Xiao et al. Malware detection based on deep learning of behavior graphs
US10581879B1 (en) Enhanced malware detection for generated objects
Sethi et al. A novel machine learning based malware detection and classification framework
Han et al. Malware analysis using visualized image matrices
CN109586282B (zh) 一种电网未知威胁检测***及方法
Ahmed et al. Mitigating adversarial evasion attacks of ransomware using ensemble learning
Bibi et al. A dynamic DL-driven architecture to combat sophisticated Android malware
US20220100857A1 (en) Systems and Methods of Anomalous Pattern Discovery and Mitigation
US10255434B2 (en) Detecting software attacks on processes in computing devices
US10645099B1 (en) Malware detection facilitated by copying a memory range from an emulator for analysis and signature generation
KR20200039912A (ko) Ai 기반 안드로이드 악성코드 자동화 분석 시스템 및 방법
CN105095759A (zh) 文件的检测方法及装置
Sihag et al. Opcode n-gram based malware classification in android
Zuo Defense of Computer Network Viruses Based on Data Mining Technology.
Casolare et al. On the resilience of shallow machine learning classification in image-based malware detection
CN108229168B (zh) 一种嵌套类文件的启发式检测方法、***及存储介质
Guerra-Manzanares et al. Differences in android behavior between real device and emulator: a malware detection perspective
US20210342448A1 (en) Kernel-based proactive engine for malware detection
CN116595523A (zh) 基于动态编排的多引擎文件检测方法、***、设备及介质
CN112395603B (zh) 基于指令执行序列特征的漏洞攻击识别方法、装置及计算机设备
US11263307B2 (en) Systems and methods for detecting and mitigating code injection attacks
KR102174393B1 (ko) 악성 코드 탐지 장치
US20220138311A1 (en) Systems and methods for detecting and mitigating code injection attacks
Mohamed et al. Malware detection techniques
US20220318377A1 (en) Responsible parent process identification

Legal Events

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