KR101012669B1 - 불법적인 메모리 접근을 진단하는 악성 프로그램 탐지기 및그 제어방법 - Google Patents

불법적인 메모리 접근을 진단하는 악성 프로그램 탐지기 및그 제어방법 Download PDF

Info

Publication number
KR101012669B1
KR101012669B1 KR1020080094054A KR20080094054A KR101012669B1 KR 101012669 B1 KR101012669 B1 KR 101012669B1 KR 1020080094054 A KR1020080094054 A KR 1020080094054A KR 20080094054 A KR20080094054 A KR 20080094054A KR 101012669 B1 KR101012669 B1 KR 101012669B1
Authority
KR
South Korea
Prior art keywords
thread
searching
list
environment
processes
Prior art date
Application number
KR1020080094054A
Other languages
English (en)
Other versions
KR20100034852A (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 KR1020080094054A priority Critical patent/KR101012669B1/ko
Priority to PCT/KR2009/005495 priority patent/WO2010036057A2/ko
Publication of KR20100034852A publication Critical patent/KR20100034852A/ko
Application granted granted Critical
Publication of KR101012669B1 publication Critical patent/KR101012669B1/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

Landscapes

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

Abstract

본 발명은 악성 프로그램이 메모리에 접근하는 경우를 감지하는 악성 프로그램 탐지기 및 그 제어방법에 관한 것이다.
본 발명에 따른 악성 프로그램 탐지기는 특정 쓰레드(Thread)의 컨텍스트(Context)정보를 추출하고, 상기 Context가 어느 프로세스의 Context인지를 검색하는 환경프로세스 탐지모듈; 상기 쓰레드를 실제로 생성한 프로세스를 검색하는 생성프로세스 탐지모듈 및 상기 환경프로세스와 상기 생성프로세스를 비교하는 제어모듈을 포함한다.
Context, API 후킹, 쓰레드(Thread), 컨텍스트(Context), 악성 프로그램, DPC(Deferred Procedure call)

Description

불법적인 메모리 접근을 진단하는 악성 프로그램 탐지기 및 그 제어방법 { Malicious program detector for scanning a illegal memory access and method thereof }
본 발명은 악성 프로그램이 메모리에 접근하는 경우를 감지하는 악성 프로그램 탐지기 및 그 제어방법에 관한 것이다.
API 후킹이란 컴퓨터의 특정 프로그램이나 시스템 전역에서 API가 호출되는 것을 가로채는 것을 의미한다.
이렇게 API 호출을 가로채면, 프로그램이 어떤 식으로 동작하는지 알 수 있고, 또 주어진 인자 또는 리턴값을 수정하여 프로그램의 동작을 제어할 수도 있다. 윈도즈 운영체제의 API 후킹을 이용한 예로서 아래아 한글사전과 같은 전자 사전 프로그램이 윈도즈 응용 프로그램에서 마우스로 선택한 단어를 인식할 수 있는 것을 들 수 있다.
종래에는 악성 프로그램의 불법적인 메모리 접근을 차단하거나 진단하기 위해 API 후킹(Hooking)이나 Table Hooking, 또는 Kernel Object Hooking 등과 같은 후킹(Hooking)기법을 이용하였다.
즉 악성 프로그램이 불법적으로 메모리에 접근하고자 하면, 메모리 접근용으로 운영체제에서 제공하는 API를 사용하는 경우가 많다. 따라서 상기 API를 후킹하여 허용되지 않는 프로세스가 해당 API를 통해 접근할 경우 판단 로직에 의해 불법적인 메모리 접근 행위를 차단하거나 진단하는 방법들이 사용되었다.
하지만 최근 들어 악성 프로그램들이 상기 API를 사용하지 않고, 좀더 진화되어서 해당 API와는 다르지만 동일한 목적을 달성할 수 있는 API를 찾아 후킹(Hooking)을 우회하거나, 후킹된 API를 직접 구현하거나 또는 후킹된 부분을 원래대로 돌려놓는 방법등을 이용하여 후킹을 통한 보호 방법을 우회하는 경우가 많이 발생하고 있다.
결과적으로 기존의 후킹 방법으로는 진단이나 방어법으로는 불법적인 메모리 접근을 진단할 수 없는 상황에 처하게 되었다.
본 발명은 상기와 같은 문제점을 해결하기 위하여 안출된 것으로서, 본 발명의 목적은, 쓰레드의 Context를 활용해서 기존의 API 후킹을 통한 감지 및 방어법이 가진 한계를 넘어설 수 있는 악성 프로그램 탐지기 및 그 제어방법을 제공하는데 있다.
상기 목적을 달성하기 위한 본 발명에 따른 악성 프로그램 탐지기는 특정 쓰레드(Thread)의 Context정보를 추출하고, 상기 Context가 어느 프로세스의 Context인지를 검색하는 환경프로세스 탐지모듈; 상기 쓰레드를 실제로 생성한 프로세스를 검색하는 생성프로세스 탐지모듈 및 상기 환경프로세스와 상기 생성프로세스를 비교하는 제어모듈을 포함한다.
그리고 쓰레드 검색모듈을 더 포함하고, 상기 쓰레드 검색모듈은 DPC가 수행되는 시점에 실행되고 있는 쓰레드를 검색하는 것이 바람직하다.
또한 상기 제어모듈은, 상기 환경프로세스와 상기 생성프로세스를 비교결과 일치하지 않는 경우, 상기 생성프로세스는 악성 프로그램에 의한 프로세스인 것으로 판단하는 기능을 더 포함하는 것이 바람직하다.
그리고 보호하고자 하는 프로세스의 목록을 저장하고 있는 프로세스목록 저장부를 더 포함하는 것이 바람직하다.
또한 상기 제어모듈은, 상기 환경프로세스가 상기 프로세스 목록에 포함되어 있는 경우에만 판단하는 것이 바람직하다.
또한 쓰레드 검색모듈을 더 포함하고, 상기 쓰레드 검색모듈은 상기 프로세스목록 저장부에 포함된 프로세스들 각각에 대해서, 상기 프로세스들에 포함되어 있는 쓰레드 리스트들을 조회하여, 상기 쓰레드 리스트들에 포함되어 있는 쓰레드를 검색하는 것이 바람직하다.
그리고 상기 제어모듈은, 상기 환경프로세스와 상기 생성프로세스를 비교결과 일치하지 않는 경우, 상기 생성프로세스는 악성 프로그램에 의한 프로세스인 것으로 판단하는 기능을 더 포함하는 것이 바람직하다.
한편 상기 목적을 달성하기 위한 본 발명에 다른 일 실시예에 따른 악성 프로그램 탐지기의 제어방법은 특정 쓰레드의 컨텍스트(Context)정보를 추출하고, 상기 컨텍스트(Context)에 해당하는 프로세스를 검색하는 환경프로세스 탐지단계; 상기 쓰레드를 실제로 생성한 프로세스를 검색하는 생성프로세스 탐지단계 및 상기 환경프로세스와 상기 생성프로세스를 비교하는 단계를 포함한다.
그리고 상기 환경프로세스 탐지단계전에, 쓰레드를 검색하는 단계를 더 포함하고, 상기 쓰레드를 검색하는 단계는, DPC가 수행되는 시점에 실행되고 있는 쓰레드를 검색하는 것이 바람직하다.
또한 상기 비교하는 단계는, 상기 환경프로세스와 상기 생성프로세스의 비교결과가 일치하지 않는 경우, 상기 생성프로세스는 악성 프로그램에 의한 프로세스인 것으로 판단하는 것이 바람직하다.
그리고 보호하고자 하는 프로세스의 목록을 저장하는 단계를 더 포함하고, 상기 비교하는 단계는 상기 환경프로세스가 상기 프로세스 목록에 포함되어 있는 경우에만 판단하는 것이 바람직하다.
또한 보호하고자 하는 프로세스의 목록을 저장하는 단계 및 상기 환경프로세스 탐지단계전에, 쓰레드를 검색하는 단계를 더 포함하고, 상기 쓰레드를 검색하는 단계는 상기 프로세스목록에 저장된 포함된 프로세스들 각각에 대해서, 상기 프로세스들에 포함되어 있는 쓰레드 리스트들을 조회하는 단계 및 상기 쓰레드 리스트들에 포함되어 있는 쓰레드를 검색하는 단계를 포함하는 것이 바람직하다.
그리고 상기 비교하는 단계는, 상기 환경프로세스와 상기 생성프로세스를 비교결과 일치하지 않는 경우, 상기 생성프로세스는 악성 프로그램에 의한 프로세스인 것으로 판단하는 것이 바람직하다.
한편, 본 발명에 따른 컴퓨터로 읽을 수 있는 기록매체에는, 특정 쓰레드의 Context정보를 추출하고, 상기 Context가 어느 프로세스의 Context인지를 검색하는 환경프로세스 탐지단계; 상기 쓰레드를 실제로 생성한 프로세스를 검색하는 생성프로세스 탐지단계 및 상기 환경프로세스와 상기 생성프로세스를 비교하는 단계를 수행할 수 있는 프로그램이 기록된다.
이상 설명한 바와 같이, 본 발명에서 제공되는 방법 및 그 장치를 이용하면 실제 메모리를 접근하는 작업을 수행중인 쓰레드의 Context에서 수행하므로 후킹을 우회하는 기법을 사용하더라도 진단이 가능하며, 악성 프로그램 사용자가 직접 API 를 제작해서 사용한다 할지라도 진단할 수 있게 된다.
쓰레드(Thread)는 보통 OS가 프로세서 시간을 할당하는 기본적인 단위라고 표현한다. 쉽게 말해서 하나의 프로세스에서 파생되는 독립적 처리단위라고 볼 수 있다.
보통 하나의 프로세스(Proccess)는 다수의 쓰레드를 가질 수 있다. 개수에 제한은 없어서 자원 되는대로 제작하는데, Context switching 때문에 너무 많으면 비효율적이고, 또한 속도도 느려지는 바 보통은 프로세스당 5~60개 이하로 많이 작성된다.
이러한 각 쓰레드는 예외 핸들러와 스케쥴 우선순위, 시스템 스케쥴에 따른 쓰레드 context를 저장하기 위해 쓰일 구조체 집합을 포함한다. 쓰레드는 레지스터(Register Set), 커널 스택(Kernel Stack), 사용자 스택 등의 여러 가지 실행환경 정보를 보관하고 있는데, 이러한 정보들을 컨텍스트(이하 Context)라고 한다. Context들은 쓰레드가 작업을 진행하는 동안 작업에 대한 정보를 보관하고 있으며, 다른 쓰레드로 작업 순서가 넘어갈 때 저장된다.
만약에 특정 쓰레드를 다른 프로세스에 Attach할 경우, 해당 쓰레드는 자신의 원래 프로세스의 Context에서 수행되지 않고 대신에 Attach 된 프로세스의 Context에서 수행하게 되어서 결과적으로 Attach 된 프로세스의 메모리를 직접 접근할 수 있게 된다. 따라서 본 발명에서는 이렇게 특정 쓰레드가 Attach 된 프로세 스의 Context에서 수행하는지 여부를 가지고 비정상적인 메모리에 대한 접근을 감지하는 방법을 활용한다.
도 1은 DPC를 활용해서 쓰레드를 탐지한 후, 상기 쓰레드에 대해서 탐지하는 방법에 대해서 도시된 흐름도이다.
우선 DPC(Deferred Procedure call, 이하 DPC)가 수행되는지를 파악한다(S210).
DPC 설명에 앞서서 우선 IRQL에 대해서 설명하도록 하겠다. IRQL(Interrupt Request Level, 이하 IRQL)이란 윈도우에서의 논리적인 인터럽트를 의미한다.
도 2는 윈도우에서의 IRQL의 구조를 도시한 도면이다.
도 2에 도시된 바와 같이 0부터 31까지의 IRQL이 존재한다. 위로 갈수록 중요하고, 하부 레벨에게 꼭 필요한 인터럽트가 된다.
그리고 이러한 IRQL는 다시 세개로 나뉜다.
우선 Hardware Interrupt는 우리가 일반적으로 알고 있는 IRQ라고 생각하면 된다. 비동기적으로 하드웨어 적으로 걸려오는 인터럽트를 말하며 간단한 예를 생각하면 키보드 입력 또는 마우스 입력과 같은 것을 의미한다.
두번째로 Software Interrupt가 있으며 여기서 DPC가 있다.
마지막으로 Passive가 있으며, 우리들이 만든 대부분의 프로그램이 돌아가는 곳이 0 레벨이다. 결국 가장 중요도가 낮다.
이렇게 윈도우는 디바이스에 대한 반응을 최대화하면서 동시에 여러 작업을 지원하기 위해 인터럽트를 IRQL이라는 여러 단계의 Level로 나누고 각 Level별 우 선순위를 두어 중요한 인터럽트에 대해 우선적으로 처리할 수 있는 방법을 사용하였다.
하지만 상위 레벨의 IRQL에서 인터럽트를 처리하기 위해 많은 시간을 소모한다면 하위 레벨의 IRQL에 존재하는 디바이스들의 반응 속도는 상대적으로 많이 떨어지게 되는 문제가 있어 이러한 문제를 해결하기 위해 실제 Interrupt Handler에서는 꼭 필요한 최소한의 작업을 수행하고 나머지 작업에 대해서는 낮은 IRQL에서 순차적으로 실행할 수 있도록 함으로써 반응 속도를 높이는 개념을 만들었고 이것이 바로 DPC(Deferred Procedure Call)이다.
이러한 DPC는 프로세스 Context에 관계없이 수행되므로 짧은 주기의 Timer DPC를 사용한다면 해당 Timer 주기마다 수행되고 있던 Process의 Context에서 특정 작업을 수행할 수 있게 된다. 따라서 오랜 기간 DPC를 사용하게 된다면 실행하고 있는 모든 프로세스에서 실행할 수 있게 된다.
즉 짧은 주기의 DPC를 등록하여 해당 DPC가 수행될 때의 쓰레드 정보를 탐지하면, 현재 실행되고 있는 쓰레드를 검색하게 된다(S220).
이렇게 쓰레드를 검색한 이후, 상기 쓰레드의 Context 정보를 추출한다(S230).
상술한 바와 같이 Context들은 쓰레드가 작업을 진행하는 동안 작업에 대한 정보를 보관하고 있는데, 이를 통해서 상기 쓰레드가 어떤 프로세스의 Context 하에서 작업하는지를 찾아낸다(S240).
이렇게 찾아낸 프로세스는 이하 환경프로세스라고 호칭한다.
한편 상기 쓰레드를 실제로 생성한 프로세스를 탐지한다(S250). 이하에서는 S250단계에서 탐지한 프로세스를 생성프로세스라고 호칭한다.
이후 환경프로세스와 생성프로세스가 서로 일치하는지 비교한 후(S260), 일치하는 경우(S280-Y) 작업을 종료한다.
반면 일치하지 않는 경우(S280-N), 다시 상기 환경프로세스가 프로세스 목록 저장부에 포함되어 있는지를 비교한다(S270).
프로세스 목록 저장부에는 보호가 필요한 프로세스의 목록을 저장한다. 물론 일치하지 않는 모든 경우에 악성프로그램이 있는 것으로 판단하는 것도 무방하나, 보안프로그램의 정책상 또는 사용자의 입력에 따라 다른 프로세스로의 쓰레드로부터 접근하면 안되는 특정 프로세스의 목록을 따로 관리하는 것이 더 효율적이다.
따라서 상기 환경프로세스가 프로세스목록 저장부에 포함되어 있지 않다면(S270-N), 작업을 종료한다. 반면 환경프로세스가 프로세스목록 저장부에 포함되어 있다면(S270-Y), 악성 프로그램이 감지된 것으로 판단한다.
이하에서는 보다 용이한 이해를 위해서 구체적인 예를 들어서 S220 단계 이하 부분을 다시 서술한다.
우선 현재 A프로세스가 A1,A2 내지 An 쓰레드를 가지고 있다고 가정한다. 그리고 A프로세스의 A2 쓰레드가 불법적인 메모리 접근을 위해서 B프로세스를 Attach 한 경우를 가정한다.
이 경우 실행되고 있는 쓰레드로 A2 쓰레드가 검색된다(S220).
이 후 쓰레드의 Context 정보를 추출한다(S230).
한편 여기서 A2 쓰레드는 B 프로세스를 Attach 하고 있는 바, 추출된 Context 정보는 B 프로세스의 실행환경일 것이고 따라서 환경 프로세스는 B프로세스가 탐지된다(S240).
그리고 A2 쓰레드는 A프로세스로부터 생성된 쓰레드인 바, 생성프로세스는 A프로세스가 탐지된다(S250).
결과적으로 환경프로세스와 생성프로세스는 각각 B프로세스와 A프로세스로 일치하지 않게 된다(S260-N).
이후 상기 환경프로세스 즉 B 프로세스가 프로세스 목록 저장부에 포함되어 있는지를 판단한다(S270). B프로세스가 보호대상인 경우인지를 판단해서 보호대상이라면 B프로세스에 Attach한 A2 쓰레드가 악성프로그램임을 감지하게 된다(S280).
이 경우 A2 쓰레드 또는 A2 쓰레드를 생성한 A 프로세스에 대한 정보를 사용자에게 경고해서 현재 악성 프로그램이 실행되고 있음을 알려주는 등의 조치가 가능하다.
도 3은 본 발명의 다른 일 실시예에 따른 보호 프로세스로 등록된 프로세스에 포함되는 쓰레드에 대해서 탐지하는 방법에 대해서 도시된 흐름도이다.
도 1에서는 DPC의 기능을 활용해서 현 시점에 실행되는 쓰레드를 검색한 후 이 쓰레드에 대해서 악성 프로그램의 실행여부를 탐지하였다. 도 3은 보호 프로세스로 등록된 프로세스들에 대해서 모두 탐색하는 방법이다.
우선 프로세스목록 저장부에 포함된 프로세스들을 탐색한다(S310).
예를 들어 보호해야 할 프로세스로 A프로세스 및 B프로세스가 있다고 가정하 자. 이 경우 본 악성 프로그램 탐지기의 개발 단계 또는 사용자가 직접 A프로세스 및 B프로세스를 프로세스목록 저장부에 저장한다. 이는 상기 탐지기 내부에 포함된 데이타파일 형태도 가능하며, 또는 상기 탐지기와 네트워크로 연결되어서 상기 사업자가 중앙에 데이터베이스 서버 형태로 유지하는 것도 무방하다.
이 후 상기 프로세스들의 쓰레드 리스트들을 조회한다(S320).
우선 A프로세스가 A1쓰레드, A2쓰레드를 생성하였고, B프로세스가 B1쓰레드 및 B2쓰레드를 생성하였다고 가정하자. 또한 악성프로그램인 C프로세스가 C1쓰레드, C2쓰레드를 생성하였고 C2쓰레드가 B프로세스에 Attach 한 경우를 예로 들어보자
이 경우 A프로세스의 쓰레드 리스트에는 A1쓰레드 및 A2쓰레드가 있고, B프로세스의 쓰레드 리스트에는 B1쓰레드, B2쓰레드 및 C2쓰레드가 포함되게 된다.
상기 5개의 쓰레드에 각각에 대해서 Context 정보를 추출하고, 환경 프로세스와 생성프로세스를 탐지한다(S330, S340, S350). 이 과정은 도1에서의 S230,S240 및 S250와 유사한 바 자세한 설명은 생략한다.
이 경우 다른 쓰레드들은 문제가 없으나, C2 쓰레드의 경우 환경프로세스는 B프로세스이면서 생성프로세스는 C프로세스로서 불일치하고(S360-N), 이에 따라 악성프로그램으로 감지한다(S370).
본 실시예에서는 쓰레드를 탐지하는 방법으로 DPC를 활용하거나 또는 프로세스목록에 포함된 프로세스들로부터 쓰레드리스트를 조회해서 활용하는 방법을 설명하였으나 이는 설명의 편의를 위한 일 실시예에 불과하다. 따라서 이러한 이러한 방법이외에도 특정 쓰레드를 추출해서 해당 쓰레드의 Context정보를 활용해서 악성 프로그램을 감지하는 방법이라면 그 무엇이라도 본 발명이 적용될 수 있음은 물론이다.
또한, 이상에서는 본 발명의 바람직한 실시예에 대하여 도시하고 설명하였지만, 본 발명은 상술한 특정의 실시예에 한정되지 아니하며, 청구범위에서 청구하는 본 발명의 요지를 벗어남이 없이 당해 발명이 속하는 기술분야에서 통상의 지식을 가진자에 의해 다양한 변형실시가 가능한 것은 물론이고, 이러한 변형실시들은 본 발명의 기술적 사상이나 전망으로부터 개별적으로 이해되어져서는 안될 것이다.
도 1은 본 발명의 일 실시예에 따른 DPC를 활용해서 쓰레드를 탐지한 후, 상기 쓰레드에 대해서 탐지하는 방법에 대해서 도시된 흐름도
도 2는 윈도우에서의 IRQL의 구조를 도시한 도면 및
도 3은 본 발명의 다른 일 실시예에 따른 보호 프로세스로 등록된 프로세스에 포함되는 쓰레드에 대해서 탐지하는 방법에 대해서 도시된 흐름도이다.

Claims (15)

  1. DPC가 수행되는 시점에 실행되고 있는 쓰레드를 검색하는 쓰레드 검색모듈;
    상기 쓰레드의 컨텍스트(Context)정보를 추출하고, 상기 컨텍스트(Context)에 해당하는 프로세스를 검색하는 환경프로세스 탐지모듈;
    상기 쓰레드를 실제로 생성한 프로세스를 검색하는 생성프로세스 탐지모듈; 및
    상기 환경프로세스와 상기 생성프로세스를 비교하는 제어모듈을 포함하는 것을 특징으로 하는 악성 프로그램 탐지기.
  2. 삭제
  3. 제 1항에 있어서,
    상기 제어모듈은,
    상기 환경프로세스와 상기 생성프로세스를 비교결과 일치하지 않는 경우, 상기 생성프로세스는 악성 프로그램에 의한 프로세스인 것으로 판단하는 기능을 더 포함하는 것을 특징으로 하는 악성 프로그램 탐지기.
  4. 제 3항에 있어서,
    보호하고자 하는 프로세스의 목록을 저장하고 있는 프로세스목록 저장부를 더 포함하는 것을 특징으로 하는 악성 프로그램 탐지기.
  5. 제 4항에 있어서,
    상기 제어모듈은,
    상기 환경프로세스가 상기 프로세스 목록에 포함되어 있는 경우에만 판단하는 것을 특징으로 하는 악성 프로그램 탐지기.
  6. 제 1항에 있어서,
    보호하고자 하는 프로세스의 목록을 저장하고 있는 프로세스목록 저장부를 더 포함하는 것을 특징으로 하는 악성 프로그램 탐지기.
  7. 제 6항에 있어서,
    상기 쓰레드 검색모듈은
    상기 프로세스목록 저장부에 포함된 프로세스들 각각에 대해서,
    상기 프로세스들에 포함되어 있는 쓰레드 리스트들을 조회하여, 상기 쓰레드 리스트들에 포함되어 있는 쓰레드를 검색하는 것을 특징으로 하는 악성 프로그램 탐지기.
  8. 제 7항에 있어서,
    상기 제어모듈은,
    상기 환경프로세스와 상기 생성프로세스를 비교결과 일치하지 않는 경우, 상기 생성프로세스는 악성 프로그램에 의한 프로세스인 것으로 판단하는 기능을 더 포함하는 것을 특징으로 하는 악성 프로그램 탐지기.
  9. DPC가 수행되는 시점에 실행되고 있는 쓰레드를 검색하는 단계;
    상기 쓰레드의 컨텍스트(Context)정보를 추출하고, 상기 컨텍스트(Context)에 해당하는 프로세스를 검색하는 환경프로세스 탐지단계;
    상기 쓰레드를 실제로 생성한 프로세스를 검색하는 생성프로세스 탐지단계; 및
    상기 환경프로세스와 상기 생성프로세스를 비교하는 단계를 포함하는 것을 특징으로 하는 악성 프로그램 탐지기의 제어방법.
  10. 삭제
  11. 제 9항에 있어서,
    상기 비교하는 단계는,
    상기 환경프로세스와 상기 생성프로세스의 비교결과가 일치하지 않는 경우, 상기 생성프로세스는 악성 프로그램에 의한 프로세스인 것으로 판단하는 것을 특징으로 하는 악성 프로그램 탐지기의 제어방법.
  12. 제 11항에 있어서,
    보호하고자 하는 프로세스의 목록을 저장하는 단계를 더 포함하고,
    상기 비교하는 단계는
    상기 환경프로세스가 상기 프로세스 목록에 포함되어 있는 경우에만 판단하는 것을 특징으로 하는 악성 프로그램 탐지기의 제어방법.
  13. 제 9항에 있어서,
    보호하고자 하는 프로세스의 목록을 저장하는 단계를 더 포함하고,
    상기 쓰레드를 검색하는 단계는
    상기 프로세스목록에 저장된 포함된 프로세스들 각각에 대해서, 상기 프로세스들에 포함되어 있는 쓰레드 리스트들을 조회하는 단계 및
    상기 쓰레드 리스트들에 포함되어 있는 쓰레드를 검색하는 단계를 포함하는 것을 특징으로 하는 악성 프로그램 탐지기의 제어방법.
  14. 제 13항에 있어서,
    상기 비교하는 단계는,
    상기 환경프로세스와 상기 생성프로세스를 비교결과 일치하지 않는 경우, 상기 생성프로세스는 악성 프로그램에 의한 프로세스인 것으로 판단하는 것을 특징으로 하는 악성 프로그램 탐지기의 제어방법.
  15. DPC가 수행되는 시점에 실행되고 있는 쓰레드를 검색하는 단계;
    상기 쓰레드의 컨텍스트(Context)정보를 추출하고, 상기 컨텍스트(Context)에 해당하는 프로세스를 검색하는 환경프로세스 탐지단계;
    상기 쓰레드를 실제로 생성한 프로세스를 검색하는 생성프로세스 탐지단계 및
    상기 환경프로세스와 상기 생성프로세스를 비교하는 단계를 수행할 수 있는 프로그램이 기록된 컴퓨터로 읽을 수 있는 기록매체.
KR1020080094054A 2008-09-25 2008-09-25 불법적인 메모리 접근을 진단하는 악성 프로그램 탐지기 및그 제어방법 KR101012669B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020080094054A KR101012669B1 (ko) 2008-09-25 2008-09-25 불법적인 메모리 접근을 진단하는 악성 프로그램 탐지기 및그 제어방법
PCT/KR2009/005495 WO2010036057A2 (ko) 2008-09-25 2009-09-25 불법적인 메모리 접근을 진단하는 악성 프로그램 탐지기 및 그 제어방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020080094054A KR101012669B1 (ko) 2008-09-25 2008-09-25 불법적인 메모리 접근을 진단하는 악성 프로그램 탐지기 및그 제어방법

Publications (2)

Publication Number Publication Date
KR20100034852A KR20100034852A (ko) 2010-04-02
KR101012669B1 true KR101012669B1 (ko) 2011-02-11

Family

ID=42060295

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020080094054A KR101012669B1 (ko) 2008-09-25 2008-09-25 불법적인 메모리 접근을 진단하는 악성 프로그램 탐지기 및그 제어방법

Country Status (2)

Country Link
KR (1) KR101012669B1 (ko)
WO (1) WO2010036057A2 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101252185B1 (ko) * 2010-08-10 2013-04-05 주식회사 잉카인터넷 쓰레드 체크를 이용한 핵 차단방법

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20040098902A (ko) * 2003-05-16 2004-11-26 주식회사 안철수연구소 프로세스메모리의 악성코드 검출기 및 그 방법
KR20040104112A (ko) * 2003-06-03 2004-12-10 주식회사 안철수연구소 악성쓰레드 검출기 및 그 방법
US20060031940A1 (en) * 2004-08-07 2006-02-09 Rozman Allen F System and method for protecting a computer system from malicious software
US20070250927A1 (en) * 2006-04-21 2007-10-25 Wintutis, Inc. Application protection

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20050053401A (ko) * 2003-12-02 2005-06-08 주식회사 하우리 컴퓨터 바이러스 방역방법과 그 프로그램을 기록한 기록매체
US8365286B2 (en) * 2006-06-30 2013-01-29 Sophos Plc Method and system for classification of software using characteristics and combinations of such characteristics
KR100926115B1 (ko) * 2007-12-17 2009-11-11 한국전자통신연구원 특정 이벤트/조건에서 동작하는 윈도우용 악성 코드탐지를 위한 프로그램 자동 분석 장치 및 방법

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20040098902A (ko) * 2003-05-16 2004-11-26 주식회사 안철수연구소 프로세스메모리의 악성코드 검출기 및 그 방법
KR20040104112A (ko) * 2003-06-03 2004-12-10 주식회사 안철수연구소 악성쓰레드 검출기 및 그 방법
US20060031940A1 (en) * 2004-08-07 2006-02-09 Rozman Allen F System and method for protecting a computer system from malicious software
US20070250927A1 (en) * 2006-04-21 2007-10-25 Wintutis, Inc. Application protection

Also Published As

Publication number Publication date
KR20100034852A (ko) 2010-04-02
WO2010036057A3 (ko) 2010-07-08
WO2010036057A2 (ko) 2010-04-01

Similar Documents

Publication Publication Date Title
US8516589B2 (en) Apparatus and method for preventing virus code execution
KR101174751B1 (ko) 커널 콜백 매커니즘을 이용한 악성코드 자동 분석 방법
AU2016293058B2 (en) Computer security systems and methods using asynchronous introspection exceptions
CA2856268C (en) Methods of detection of software exploitation
JP5094928B2 (ja) 偽装仮想マシン情報を利用したインテリジェントボット対応方法及び装置
JP5382450B2 (ja) アクセス制御装置、その方法及び情報記録媒体
KR102534334B1 (ko) 컴퓨팅 디바이스들에서 프로세스들에 대한 소프트웨어 공격들의 검출
US20170103206A1 (en) Method and apparatus for capturing operation in a container-based virtualization system
US10623438B2 (en) Detecting execution of modified executable code
US10664594B2 (en) Accelerated code injection detection using operating system controlled memory attributes
Nadim et al. Characteristic features of the kernel-level rootkit for learning-based detection model training
US11361077B2 (en) Kernel-based proactive engine for malware detection
CN113176926A (zh) 一种基于虚拟机自省技术的api动态监控方法及系统
CN108985098B (zh) 数据处理器
KR101012669B1 (ko) 불법적인 메모리 접근을 진단하는 악성 프로그램 탐지기 및그 제어방법
CA2774802A1 (en) Windows kernel alteration searching method
KR100746944B1 (ko) 정보 유출 방지 방법 및 정보 유출 방지를 수행하는프로그램이 저장된 기록 매체
CN109033842B (zh) 数据处理器
Shamshirsaz et al. An Improved Process Supervision and Control Method for Malware Detection.
Yu-Tao et al. HPDBF: A forensics method for hidden process based on memory analysis
CN117150487A (zh) 一种动态链接库文件注入检测方法及装置

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20140127

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20150127

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20160127

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20180129

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20190128

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20200128

Year of fee payment: 10