KR20170048060A - 악성 코드 탐지 장치 및 방법 - Google Patents

악성 코드 탐지 장치 및 방법 Download PDF

Info

Publication number
KR20170048060A
KR20170048060A KR1020150148943A KR20150148943A KR20170048060A KR 20170048060 A KR20170048060 A KR 20170048060A KR 1020150148943 A KR1020150148943 A KR 1020150148943A KR 20150148943 A KR20150148943 A KR 20150148943A KR 20170048060 A KR20170048060 A KR 20170048060A
Authority
KR
South Korea
Prior art keywords
memory
attribute
memory address
page
execute
Prior art date
Application number
KR1020150148943A
Other languages
English (en)
Other versions
KR101982734B1 (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 KR1020150148943A priority Critical patent/KR101982734B1/ko
Priority to US15/333,849 priority patent/US20170116417A1/en
Publication of KR20170048060A publication Critical patent/KR20170048060A/ko
Application granted granted Critical
Publication of KR101982734B1 publication Critical patent/KR101982734B1/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
    • 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
    • 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/563Static detection by source code analysis

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Virology (AREA)
  • General Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)

Abstract

악성 코드 탐지 장치 및 방법이 개시된다. 본 발명의 일 실시예에 따른 악성 코드 탐지 방법은 모니터링 그룹에 포함된 하나 이상의 API(Application Program Interface) 중 어느 하나의 호출을 감지하는 단계; 감지된 API의 호출자의 메모리 주소를 획득하는 단계; 획득된 상기 메모리 주소에 해당하는 메모리 영역의 속성을 검사하는 단계; 및 상기 속성에 따라 상기 메모리 영역에 기록된 코드가 악성 코드인지 여부를 판단하는 단계를 포함한다.

Description

악성 코드 탐지 장치 및 방법{APPARATUS AND METHOD FOR DETECTING MALICIOUS CODE}
본 발명의 실시예들은 컴퓨터의 악성 코드를 탐지하기 위한 기술과 관련된다.
익스플로잇(Exploit)이란 소프트웨어 또는 하드웨어의 버그 혹은 프로그래밍 과정에서 발생한 취약점 등을 이용하여 공격자가 의도한 동작이나 명령을 실행하도록 만든 명령어의 집합, 또는 이를 이용한 공격 행위를 의미하는 용어이다.
이러한 익스플로잇 공격에 대응하여, 일반적인 네트워크 보안 시스템은 알려진 익스플로잇 코드의 시그니처(signature)를 이용하여 익스플로잇 공격을 탐지하도록 구성된다. 그러나 이러한 시그니처를 이용한 탐지 방법의 경우 시그니처가 존재하지 않는 알려지지 않은 코드는 탐지가 불가능한 문제가 있다. 특히 익스플로잇 코드는 그 특성상 그 종류가 매우 다양하므로, 익스플로잇 코드를 정확하게 탐지하기 위한 방법이 필요하게 되었다.
대한민국 공개특허공보 제10-2010-0073124호 (2010. 07. 01)
본 발명의 실시예들은 코드가 실행되는 메모리 영역을 추적하여 악성 코드를 탐지하기 위한 수단을 제공하기 위한 것이다.
예시적인 실시예에 따르면, 악성 코드를 탐지하기 위한 방법으로서, 모니터링 그룹에 포함된 하나 이상의 API(Application Program Interface) 중 어느 하나의 호출을 감지하는 단계; 감지된 API의 호출자의 메모리 주소를 획득하는 단계; 획득된 상기 메모리 주소에 해당하는 메모리 영역의 속성을 검사하는 단계; 및 상기 속성에 따라 상기 메모리 영역에 기록된 코드가 악성 코드인지 여부를 판단하는 단계를 포함하는 악성 코드 탐지 방법이 제공된다.
상기 메모리 주소를 획득하는 단계는, 상기 호출과 연관된 콜스택(Call Stack)의 리턴 주소를 이용하여 상기 호출자의 메모리 주소를 획득하도록 구성될 수 있다.
상기 메모리 주소를 획득하는 단계는, 상기 콜스택에 상기 호출자와 대응되는 하나 이상의 상위 호출자가 존재하는 경우, 상기 하나 이상의 상위 호출자 각각의 메모리 주소를 획득하는 단계를 더 포함할 수 있다.
상기 속성은, 상기 메모리 영역의 타입 및 프로텍션 속성을 포함할 수 있다.
상기 판단하는 단계는, 상기 메모리 타입이 실행 타입(PAGE_EXECUTE*)이고, 상기 프로텍션 속성이 프라이빗(MEM_PRIVATE)인 경우, 상기 코드가 악성 코드인 것으로 판단할 수 있다.
상기 판단하는 단계는, 상기 메모리 타입이 PAGE_EXECUTE, PAGE_EXECUTE_READ, PAGE_EXECUTE_READWRITE, PAGE_EXECUTE_WRITECOPY 중 어느 하나인 경우, 상기 메모리 타입이 실행 타입인 것으로 판단할 수 있다.
다른 예시적인 실시예에 따르면, 악성 코드를 탐지하기 위한 장치로서, 모니터링 그룹에 포함된 하나 이상의 API(Application Program Interface) 중 어느 하나의 호출을 감지하는 모니터링부; 감지된 API의 호출자의 메모리 주소를 획득하는 메모리 주소 획득부; 획득된 상기 메모리 주소에 해당하는 메모리 영역의 속성을 검사하는 메모리 속성 검사부; 및 상기 속성에 따라 상기 메모리 영역에 기록된 코드가 악성 코드인지 여부를 판단하는 판단부를 포함하는 악성 코드 탐지 장치가 제공된다.
상기 메모리 주소 획득부는, 상기 호출과 연관된 콜스택(Call Stack)의 리턴 주소를 이용하여 상기 호출자의 메모리 주소를 획득하도록 구성될 수 있다.
상기 메모리 주소 획득부는, 상기 콜스택에 상기 호출자와 대응되는 하나 이상의 상위 호출자가 존재하는 경우, 상기 하나 이상의 상위 호출자 각각의 메모리 주소를 획득하는 단계를 더 포함할 수 있다.
상기 속성은, 상기 메모리 영역의 타입 및 프로텍션 속성을 포함할 수 있다.
상기 판단부는, 상기 메모리 타입이 실행 타입(PAGE_EXECUTE*)이고, 상기 프로텍션 속성이 프라이빗(MEM_PRIVATE)인 경우, 상기 코드가 악성 코드인 것으로 판단할 수 있다.
상기 판단부는, 상기 메모리 타입이 PAGE_EXECUTE, PAGE_EXECUTE_READ, PAGE_EXECUTE_READWRITE, PAGE_EXECUTE_WRITECOPY 중 어느 하나인 경우, 상기 메모리 타입이 실행 타입인 것으로 판단할 수 있다.
다른 예시적인 실시예에 따르면, 하드웨어와 결합되어, 모니터링 그룹에 포함된 하나 이상의 API(Application Program Interface) 중 어느 하나의 호출을 감지하는 단계; 감지된 API의 호출자의 메모리 주소를 획득하는 단계; 획득된 상기 메모리 주소에 해당하는 메모리 영역의 속성을 검사하는 단계; 및 상기 속성에 따라 상기 메모리 영역에 기록된 코드가 악성 코드인지 여부를 판단하는 단계를 포함하는 단계들을 실행시키기 위하여 컴퓨터 판독 가능한 기록매체에 저장된 컴퓨터 프로그램이 제공된다
본 발명의 실시예들에 따르면, 악성 코드가 자주 사용하는 API를 호출한 호출자의 메모리 속성에 따라 악성 코드의 존재 여부를 확인함으로써, 기존에 알려지지 않은 악성 코드의 경우에도 정확히 악성 코드의 존재를 탐지할 수 있다.
또한, 본 발명의 실시예들에 따르면 악성 코드가 자주 사용하는 API를 직접 호출한 경우 뿐 아니라 다른 함수를 경유하여 호출한 경우에도 해당 API의 호출자를 모두 추적하도록 구성되는 바, 악성 코드 탐지의 정확도를 높일 수 있게 된다.
도 1은 본 발명의 일 실시예에 따른 악성 코드 탐지 장치를 설명하기 위한 블록도
도 2는 본 발명의 일 실시예에 따른 악성 코드 탐지 방법을 설명하기 위한 흐름도
이하, 도면을 참조하여 본 발명의 구체적인 실시형태를 설명하기로 한다. 이하의 상세한 설명은 본 명세서에서 기술된 방법, 장치 및/또는 시스템에 대한 포괄적인 이해를 돕기 위해 제공된다. 그러나 이는 예시에 불과하며 본 발명은 이에 제한되지 않는다.
본 발명의 실시예들을 설명함에 있어서, 본 발명과 관련된 공지기술에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략하기로 한다. 그리고 후술되는 용어들은 본 발명에서의 기능을 고려하여 정의된 용어들로서 이는 사용자, 운용자의 의도 또는 관례 등에 따라 달라질 수 있다. 그러므로 그 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다. 상세한 설명에서 사용되는 용어는 단지 본 발명의 실시예들을 기술하기 위한 것이며, 결코 제한적이어서는 안 된다. 명확하게 달리 사용되지 않는 한, 단수 형태의 표현은 복수 형태의 의미를 포함한다. 본 설명에서, "포함" 또는 "구비"와 같은 표현은 어떤 특성들, 숫자들, 단계들, 동작들, 요소들, 이들의 일부 또는 조합을 가리키기 위한 것이며, 기술된 것 이외에 하나 또는 그 이상의 다른 특성, 숫자, 단계, 동작, 요소, 이들의 일부 또는 조합의 존재 또는 가능성을 배제하도록 해석되어서는 안 된다.
도 1은 본 발명의 일 실시예에 따른 악성 코드 탐지 장치(100)를 설명하기 위한 블록도이다. 도시된 바와 같이, 본 발명의 일 실시예에 따른 악성 코드 탐지 장치(100)는 모니터링부(102), 메모리 주소 획득부(104), 메모리 속성 검사부(106) 및 판단부(108)를 포함한다.
모니터링부(102)는 모니터링 그룹에 포함된 하나 이상의 API(Application Program Interface) 중 어느 하나의 호출을 감지한다. 상기 모니터링 그룹은 익스플로잇 공격 코드가 주로 사용하는 API의 집합으로서, 주로 프로그램 또는 프로세서의 실행과 관련된 API가 포함된다. 모니터링 그룹에 포함되는 API의 종류를 예시하면 다음과 같다.
- WinExec
- CreateProcessW
- CreateProcessA
- CreateProcessInternalW
- CreateProcessInternalA
- ShellExecuteW
- ShellExecuteA
- ShellExecuteExW
- ShellExecuteExA
일 실시예에서, 모니터링부(102)는 API 후킹 등의 기술을 이용하여 모니터링 그룹에 속한 API 중 어느 하나의 호출을 감지할 수 있다. 이때 API 후킹(hooking)이란 애플리케이션의 API 호출을 중간에서 가로채어 제어권을 획득하는 것을 의미한다.
메모리 주소 획득부(104)는 모니터링부(102)에서 감지된 API의 호출자의 메모리 주소를 획득한다. 일 실시예에서, 메모리 주소 획득부(104)는 상기 호출과 연관된 콜스택(Call Stack)의 리턴 주소를 이용하여 상기 호출자의 메모리 주소를 획득할 수 있다. 콜스택이란 애플리케이션에서 실행할 컴퓨터 프로그램 코드 정보를 저장하는 스택 자료구조이다. 예를 들어, 애플리케이션이 특정한 API를 호출할 경우 해당 애플리케이션의 콜스택은 해당 API의 실행 후 복귀할 리턴 주소(return address)를 저장하게 된다. 이를 이용하여, 메모리 주소 획득부(104)는 감지된 API를 호출한 호출자의 메모리 주소를 획득할 수 있다.
몇몇 실시예들에서, 콜스택은 감지된 API를 직접 호출한 호출자 이외에 해당 호출자의 상위 호출자를 하나 이상 포함할 수 있다. 예를 들어 애플리케이션이 특정 서브루틴을 호출하고 해당 서브루틴에서 모니터링 그룹에 속한 API를 호출한 경우, 콜스택은 상기 서브루틴의 메모리 주소 뿐만 아니라, 상기 서브루틴을 호출한 상위 호출자의 메모리 주소 또한 저장하고 있다. 이와 같이 콜스택에 API의 호출자와 대응되는 하나 이상의 상위 호출자가 존재하는 경우, 메모리 주소 획득부(104)는 상기 호출자의 주소와 함께 하나 이상의 상위 호출자 각각의 메모리 주소를 획득하도록 구성된다. 이와 같이 메모리 주소 획득부(104)에서 호출자 및 상위 호출자들의 메모리 주소를 모두 획득함으로써 본 발명의 실시예들을 따를 경우 API가 서브루틴에서 호출된 경우 등에 있어서도 정확히 악성 코드의 존재 여부를 탐지할 수 있다.
메모리 속성 검사부(106)는 메모리 주소 획득부(104)에서 획득된 상기 메모리 주소에 해당하는 메모리 영역의 속성을 검사한다. 메모리 속성 검사부(106)에서 검사하는 속성은 메모리 영역의 타입 및 프로텍션 속성을 포함할 수 있다.
일 실시예에서, 메모리 속성 검사부(106)는 운영체제에서 제공하는 MEMORY_BASIC_INFORMATION 자료 구조를 이용하여 메모리 영역의 속성을 검사할 수 있다. 예를 들어, 메모리 영역의 타입(AllocationProtect)은 다음과 같은 값을 가질 수 있다.
- PAGE_EXECUTE
- PAGE_EXECUTE_READ
- PAGE_EXECUTE_READWRITE
- PAGE_EXECUTE_WRITECOPY
- PAGE_NOACCESS
- PAGE_READONLY
- PAGE_READWRITE
- PAGE_WRITECOPY
- PAGE_TARGETS_INVALID
- PAGE_TARGETS_NO_UPDATE
- PAGE_GUARD
- PAGE_NOCACHE
- PAGE_WRITECOMBINE
또한, 상술한 자료 구조에서 메모리의 프로텍션 속성(Type)은 다음과 같은 값을 가질 수 있다.
- MEM_IMAGE
- MEM_MAPPED
- MEM_PRIVATE
메모리 속성 검사부(106)는 메모리 주소 획득부(104)에서 획득한 메모리 주소의 대응되는 메모리 정보(MEMORY_BASIC_INFORMATION)로부터 해당 메모리 영역의 타입 및 프로텍션 속성이 전술한 값 중 어떤 값을 가지는지를 검사할 수 있다. 또한, 메모리 속성 검사부(106)는 메모리 주소 획득부(104)에서 획득한 메모리 주소가 복수 개인 경우, 복수 개의 메모리 주소 전부에 대하여 상기 메모리 속성을 검사한다.
판단부(108)는 메모리 속성 검사부(106)에서 확인한 속성에 따라 상기 메모리 영역에 기록된 코드가 악성 코드인지 여부를 판단한다. 일 실시예에서, 판단부(108)는 상기 메모리 타입이 실행 타입(PAGE_EXECUTE*)이고, 상기 프로텍션 속성이 프라이빗(MEM_PRIVATE)인 경우, 상기 코드가 악성 코드인 것으로 판단한다. 구체적으로 판단부(108)는 상기 메모리 타입이 PAGE_EXECUTE, PAGE_EXECUTE_READ, PAGE_EXECUTE_READWRITE, PAGE_EXECUTE_WRITECOPY 중 어느 하나인 경우, 상기 메모리 타입이 실행 타입인 것으로 판단하게 된다.
익스플로잇 공격이 실행되기 위해서는 반드시 공격자 프로세스에 의해 익스플로잇 코드가 공격 대상 애플리케이션의 어딘가에 삽입되어야 한다. 이때 익스플로잇이 삽입된 메모리 영역은 공격자 프로세스에 의하여 할당되어져야 하므로 MEM_PRIVATE 프로텍션 속성을 갖게 된다. 또한 해당 영역은 코드를 실행할 수 있어야 하므로 메모리 타입이 실행 타입(PAGE_EXECUTE*)이어야 한다. 따라서, 실행중인 코드의 주소가 속한 메모리의 프로텍션 속성이 MEM_PRIVATE이고, 타입이 PAGE_EXECUTE*에 해당한다면 공격자에 의해 삽입된 익스플로잇 코드로 판단할 수 있다.
일 실시예에서, 모니터링부(102), 메모리 주소 획득부(104), 메모리 속성 검사부(106) 및 판단부(108)를 포함하는 악성 코드 탐지 장치(100)는 하나 이상의 프로세서 및 그 프로세서와 연결된 컴퓨터 판독 가능 기록 매체를 포함하는 컴퓨팅 장치 상에서 구현될 수 있다. 컴퓨터 판독 가능 기록 매체는 프로세서의 내부 또는 외부에 있을 수 있고, 잘 알려진 다양한 수단으로 프로세서와 연결될 수 있다. 컴퓨팅 장치 내의 프로세서는 각 컴퓨팅 장치로 하여금 본 명세서에서 기술되는 예시적인 실시예에 따라 동작하도록 할 수 있다. 예를 들어, 프로세서는 컴퓨터 판독 가능 기록 매체에 저장된 명령어를 실행할 수 있고, 컴퓨터 판독 가능 기록 매체에 저장된 명령어는 프로세서에 의해 실행되는 경우 컴퓨팅 장치로 하여금 본 명세서에 기술되는 예시적인 실시예에 따른 동작들을 수행하도록 구성될 수 있다.
도 2는 본 발명의 일 실시예에 따른 악성 코드 탐지 방법(200)을 설명하기 위한 흐름도이다. 도 2에 도시된 방법은 예를 들어, 전술한 악성 코드 탐지 장치(100)에 의해 수행될 수 있다. 도시된 흐름도에서는 상기 방법을 복수 개의 단계로 나누어 기재하였으나, 적어도 일부의 단계들은 순서를 바꾸어 수행되거나, 다른 단계와 결합되어 함께 수행되거나, 생략되거나, 세부 단계들로 나뉘어 수행되거나, 또는 도시되지 않은 하나 이상의 단계가 부가되어 수행될 수 있다.
단계 202에서, 악성 코드 탐지 장치(100)의 모니터링부(102)는 모니터링 그룹에 포함된 하나 이상의 API(Application Program Interface) 중 어느 하나의 호출을 감지한다.
단계 204에서, 악성 코드 탐지 장치(100)의 메모리 주소 획득부(104)는 단계 202에서 감지된 API를 호출한 호출자의 메모리 주소를 획득한다. 이때, 메모리 주소 획득부(104)는 상기 호출과 연관된 콜스택(Call Stack)의 리턴 주소를 이용하여 상기 호출자의 메모리 주소를 획득할 수 있다. 또한, 메모리 주소 획득부(104)는 상기 콜스택에 상기 호출자와 대응되는 하나 이상의 상위 호출자가 존재하는 경우, 상기 하나 이상의 상위 호출자 각각의 메모리 주소를 추가적으로 획득하도록 구성될 수 있다.
단계 206에서, 악성 코드 탐지 장치(100)의 메모리 속성 검사부(106)는 획득된 상기 메모리 주소에 해당하는 메모리 영역의 속성을 검사한다. 이때 상기 속성은 상기 메모리 영역의 타입 및 프로텍션 속성을 포함할 수 있다.
단계 208 및 210에서, 악성 코드 탐지 장치(100)의 판단부(108)는 단계 206에서 검사한 속성에 따라 상기 메모리 영역에 기록된 코드가 악성 코드인지 여부를 판단한다.
구체적으로, 단계 208에서, 판단부(108)는 상기 메모리 영역의 타입이 실행 타입(PAGE_EXECUTE*)인지의 여부를 판단한다. 만약 판단 결과 실행 타입인 경우, 단계 210에서 판단부(108)는 상기 메모리 영역의 상기 프로텍션 속성이 프라이빗(MEM_PRIVATE)인지의 여부를 판단한다.
만약 상기 단계 208 및 210의 판단 결과, 상기 메모리 타입이 실행 타입(PAGE_EXECUTE*)이고, 상기 프로텍션 속성이 프라이빗(MEM_PRIVATE)인 경우, 판단부(108)는 해당 메모리 영역에 존재하는 코드가 악성 코드인 것으로 판단한다(단계 212). 그러나 이와 달리 상기 메모리 타입이 실행 타입(PAGE_EXECUTE*)이 아니거나, 상기 프로텍션 속성이 프라이빗(MEM_PRIVATE)이 아닌 경우, 판단부(108)는 해당 메모리 영역에 존재하는 코드가 악성 코드에 해당하지 않는 것으로 판단한다(단계 214).
한편, 본 발명의 실시예는 본 명세서에서 기술한 방법들을 컴퓨터상에서 수행하기 위한 프로그램, 및 상기 프로그램을 포함하는 컴퓨터 판독 가능 기록매체를 포함할 수 있다. 상기 컴퓨터 판독 가능 기록매체는 프로그램 명령, 로컬 데이터 파일, 로컬 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체는 본 발명을 위하여 특별히 설계되고 구성된 것들이거나, 또는 컴퓨터 소프트웨어 분야에서 통상적으로 사용 가능한 것일 수 있다. 컴퓨터 판독 가능 기록매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체, CD-ROM, DVD와 같은 광 기록 매체, 및 롬, 램, 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 상기 프로그램의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함할 수 있다.
이상에서 본 발명의 대표적인 실시예들을 상세하게 설명하였으나, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 상술한 실시예에 대하여 본 발명의 범주에서 벗어나지 않는 한도 내에서 다양한 변형이 가능함을 이해할 것이다. 그러므로 본 발명의 권리범위는 설명된 실시예에 국한되어 정해져서는 안 되며, 후술하는 특허청구범위뿐만 아니라 이 특허청구범위와 균등한 것들에 의해 정해져야 한다.
100: 악성 코드 탐지 장치
102: 모니터링부
104: 메모리 속성 검사부
106: 메모리 주소 획득부
108: 판단부

Claims (13)

  1. 악성 코드를 탐지하기 위한 방법으로서,
    모니터링 그룹에 포함된 하나 이상의 API(Application Program Interface) 중 어느 하나의 호출을 감지하는 단계;
    감지된 API의 호출자의 메모리 주소를 획득하는 단계;
    획득된 상기 메모리 주소에 해당하는 메모리 영역의 속성을 검사하는 단계; 및
    상기 속성에 따라 상기 메모리 영역에 기록된 코드가 악성 코드인지 여부를 판단하는 단계를 포함하는 악성 코드 탐지 방법.
  2. 청구항 1에 있어서,
    상기 메모리 주소를 획득하는 단계는,
    상기 호출과 연관된 콜스택(Call Stack)의 리턴 주소를 이용하여 상기 호출자의 메모리 주소를 획득하도록 구성되는, 악성 코드 탐지 방법.
  3. 청구항 2에 있어서,
    상기 메모리 주소를 획득하는 단계는,
    상기 콜스택에 상기 호출자와 대응되는 하나 이상의 상위 호출자가 존재하는 경우, 상기 하나 이상의 상위 호출자 각각의 메모리 주소를 획득하는 단계를 더 포함하는, 악성 코드 탐지 방법.
  4. 청구항 1에 있어서,
    상기 속성은, 상기 메모리 영역의 타입 및 프로텍션 속성을 포함하는, 악성 코드 탐지 방법.
  5. 청구항 4에 있어서,
    상기 판단하는 단계는,
    상기 메모리 타입이 실행 타입(PAGE_EXECUTE*)이고, 상기 프로텍션 속성이 프라이빗(MEM_PRIVATE)인 경우, 상기 코드가 악성 코드인 것으로 판단하는, 악성 코드 탐지 방법.
  6. 청구항 5에 있어서,
    상기 판단하는 단계는,
    상기 메모리 타입이 PAGE_EXECUTE, PAGE_EXECUTE_READ, PAGE_EXECUTE_READWRITE, PAGE_EXECUTE_WRITECOPY 중 어느 하나인 경우, 상기 메모리 타입이 실행 타입인 것으로 판단하는, 악성 코드 탐지 방법.
  7. 악성 코드를 탐지하기 위한 장치로서,
    모니터링 그룹에 포함된 하나 이상의 API(Application Program Interface) 중 어느 하나의 호출을 감지하는 모니터링부;
    감지된 API의 호출자의 메모리 주소를 획득하는 메모리 주소 획득부;
    획득된 상기 메모리 주소에 해당하는 메모리 영역의 속성을 검사하는 메모리 속성 검사부; 및
    상기 속성에 따라 상기 메모리 영역에 기록된 코드가 악성 코드인지 여부를 판단하는 판단부를 포함하는 악성 코드 탐지 장치.
  8. 청구항 7에 있어서,
    상기 메모리 주소 획득부는,
    상기 호출과 연관된 콜스택(Call Stack)의 리턴 주소를 이용하여 상기 호출자의 메모리 주소를 획득하도록 구성되는, 악성 코드 탐지 장치.
  9. 청구항 8에 있어서,
    상기 메모리 주소 획득부는,
    상기 콜스택에 상기 호출자와 대응되는 하나 이상의 상위 호출자가 존재하는 경우, 상기 하나 이상의 상위 호출자 각각의 메모리 주소를 획득하는 단계를 더 포함하는, 악성 코드 탐지 장치.
  10. 청구항 7에 있어서,
    상기 속성은, 상기 메모리 영역의 타입 및 프로텍션 속성을 포함하는, 악성 코드 탐지 장치.
  11. 청구항 10에 있어서,
    상기 판단부는,
    상기 메모리 타입이 실행 타입(PAGE_EXECUTE*)이고, 상기 프로텍션 속성이 프라이빗(MEM_PRIVATE)인 경우, 상기 코드가 악성 코드인 것으로 판단하는, 악성 코드 탐지 장치.
  12. 청구항 11에 있어서,
    상기 판단부는,
    상기 메모리 타입이 PAGE_EXECUTE, PAGE_EXECUTE_READ, PAGE_EXECUTE_READWRITE, PAGE_EXECUTE_WRITECOPY 중 어느 하나인 경우, 상기 메모리 타입이 실행 타입인 것으로 판단하는, 악성 코드 탐지 장치.
  13. 하드웨어와 결합되어,
    모니터링 그룹에 포함된 하나 이상의 API(Application Program Interface) 중 어느 하나의 호출을 감지하는 단계;
    감지된 API의 호출자의 메모리 주소를 획득하는 단계;
    획득된 상기 메모리 주소에 해당하는 메모리 영역의 속성을 검사하는 단계; 및
    상기 속성에 따라 상기 메모리 영역에 기록된 코드가 악성 코드인지 여부를 판단하는 단계를 포함하는 단계들을 실행시키기 위하여 컴퓨터 판독 가능한 기록매체에 저장된 컴퓨터 프로그램.
KR1020150148943A 2015-10-26 2015-10-26 악성 코드 탐지 장치 및 방법 KR101982734B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020150148943A KR101982734B1 (ko) 2015-10-26 2015-10-26 악성 코드 탐지 장치 및 방법
US15/333,849 US20170116417A1 (en) 2015-10-26 2016-10-25 Apparatus and method for detecting malicious code

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150148943A KR101982734B1 (ko) 2015-10-26 2015-10-26 악성 코드 탐지 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20170048060A true KR20170048060A (ko) 2017-05-08
KR101982734B1 KR101982734B1 (ko) 2019-05-27

Family

ID=58561723

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150148943A KR101982734B1 (ko) 2015-10-26 2015-10-26 악성 코드 탐지 장치 및 방법

Country Status (2)

Country Link
US (1) US20170116417A1 (ko)
KR (1) KR101982734B1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10795993B2 (en) * 2018-07-16 2020-10-06 Juniper Networks, Inc. Memory tracking for malware detection
US11599629B2 (en) * 2019-01-31 2023-03-07 Rubrik, Inc. Real-time detection of system threats
US11709932B2 (en) 2019-01-31 2023-07-25 Rubrik, Inc. Realtime detection of ransomware

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20090096823A (ko) * 2008-03-10 2009-09-15 주식회사 안철수연구소 코드 보호 기법을 고려한 악성 프로그램 감지 시스템 및 그방법
KR20100073124A (ko) 2008-12-22 2010-07-01 한국전자통신연구원 익스플로잇 코드를 탐지하는 네트워크 보안시스템 및 방법
KR101265173B1 (ko) * 2012-05-11 2013-05-15 주식회사 안랩 비실행 파일 검사 장치 및 방법
KR20130077621A (ko) * 2011-12-29 2013-07-09 주식회사 안랩 악성코드 동적 분석정보 제공 장치 및 방법
KR101445634B1 (ko) * 2014-01-27 2014-10-06 주식회사 이글루시큐리티 프로그램의 취약점을 이용한 공격의 탐지 장치 및 방법

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20090096823A (ko) * 2008-03-10 2009-09-15 주식회사 안철수연구소 코드 보호 기법을 고려한 악성 프로그램 감지 시스템 및 그방법
KR20100073124A (ko) 2008-12-22 2010-07-01 한국전자통신연구원 익스플로잇 코드를 탐지하는 네트워크 보안시스템 및 방법
KR20130077621A (ko) * 2011-12-29 2013-07-09 주식회사 안랩 악성코드 동적 분석정보 제공 장치 및 방법
KR101265173B1 (ko) * 2012-05-11 2013-05-15 주식회사 안랩 비실행 파일 검사 장치 및 방법
KR101445634B1 (ko) * 2014-01-27 2014-10-06 주식회사 이글루시큐리티 프로그램의 취약점을 이용한 공격의 탐지 장치 및 방법

Also Published As

Publication number Publication date
KR101982734B1 (ko) 2019-05-27
US20170116417A1 (en) 2017-04-27

Similar Documents

Publication Publication Date Title
US11625485B2 (en) Method of malware detection and system thereof
US9779240B2 (en) System and method for hypervisor-based security
JP5908132B2 (ja) プログラムの脆弱点を用いた攻撃の探知装置および方法
US9846779B2 (en) Detecting a return-oriented programming exploit
US10318730B2 (en) Detection and prevention of malicious code execution using risk scoring
JP5265061B1 (ja) 悪意のあるファイル検査装置及び方法
US20160196428A1 (en) System and Method for Detecting Stack Pivot Programming Exploit
US8782615B2 (en) System, method, and computer program product for simulating at least one of a virtual environment and a debugging environment to prevent unwanted code from executing
KR20150063417A (ko) 데이터 처리장치와, 안전한 도메인 및 덜 안전한 도메인 사이에서 전환될 때 데이터 및 프로그램 코드를 안전하지 않은 액세스로부터 보호하는 방법
CN104834837A (zh) 一种基于语义的二进制代码反混淆方法
US20190286820A1 (en) Apparatus and method for detecting container rootkit
US11120124B2 (en) Method for detecting a deviation of a security state of a computing device from a desired security state
KR101982734B1 (ko) 악성 코드 탐지 장치 및 방법
RU2018118828A (ru) Системы и способы обнаружения вредоносных программ с алгоритмом генерации доменов (dga)
KR20090067569A (ko) 가상화 기법을 이용한 윈도우 커널 보호 시스템
KR102494167B1 (ko) 메모리의 커널영역을 보호하기 위한 전자장치 및 방법
CN108319850B (zh) 沙箱检测的方法、沙箱系统和沙箱设备
KR102292844B1 (ko) 악성코드 탐지 장치 및 방법
KR102102577B1 (ko) 악성 앱 탐지 장치 및 그 방법
KR20170036465A (ko) 악성 코드 탐지 시스템 및 방법
JP4643201B2 (ja) バッファオーバーフロー脆弱性分析方法、データ処理装置、分析情報提供装置、分析情報抽出処理用プログラムおよび分析情報提供処理用プログラム
KR101217668B1 (ko) 악성 프로그램 후킹 방지 장치 및 방법
KR20190035244A (ko) 캡쳐 데이터에 워터마크를 추가하는 화면 유출방지 프로그램과 화면 유출방지 서비스 제공방법
US9654498B2 (en) Detecting deviation from a data packet send-protocol in a computer system
JP2006106939A (ja) 侵入検知方法及び侵入検知装置並びにプログラム

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
J301 Trial decision

Free format text: TRIAL NUMBER: 2017101005803; TRIAL DECISION FOR APPEAL AGAINST DECISION TO DECLINE REFUSAL REQUESTED 20171130

Effective date: 20190415

S901 Examination by remand of revocation
GRNO Decision to grant (after opposition)
GRNT Written decision to grant