KR20090088198A - 커널 모드의 악성 행위 검출 시스템 및 그 방법 - Google Patents

커널 모드의 악성 행위 검출 시스템 및 그 방법 Download PDF

Info

Publication number
KR20090088198A
KR20090088198A KR1020080013596A KR20080013596A KR20090088198A KR 20090088198 A KR20090088198 A KR 20090088198A KR 1020080013596 A KR1020080013596 A KR 1020080013596A KR 20080013596 A KR20080013596 A KR 20080013596A KR 20090088198 A KR20090088198 A KR 20090088198A
Authority
KR
South Korea
Prior art keywords
kernel mode
address
function
memory
arbitrary
Prior art date
Legal status (The legal status 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 status listed.)
Granted
Application number
KR1020080013596A
Other languages
English (en)
Other versions
KR100925401B1 (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 KR1020080013596A priority Critical patent/KR100925401B1/ko
Publication of KR20090088198A publication Critical patent/KR20090088198A/ko
Application granted granted Critical
Publication of KR100925401B1 publication Critical patent/KR100925401B1/ko
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • G—PHYSICS
    • G06—COMPUTING OR CALCULATING; COUNTING
    • G06F—ELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55—Detecting local intrusion or implementing counter-measures
    • G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
    • G—PHYSICS
    • G06—COMPUTING OR CALCULATING; COUNTING
    • G06F—ELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G—PHYSICS
    • G06—COMPUTING OR CALCULATING; COUNTING
    • G06F—ELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55—Detecting local intrusion or implementing counter-measures
    • G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/562—Static detection

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)
  • General Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Storage Device Security (AREA)

Abstract

본 발명은 커널(Kernel) 모드의 악성 행위 검출 시스템 및 그 방법을 개시한다. 즉, 임의의 커널 모드 드라이버에 대한 실행 이미지 파일 및 객체 정보를 전달받아 상기 임의의 커널 모드 드라이버를 메모리에 로드하여 가상으로 구동하고, 상기 임의의 커널 모드 드라이버의 가상 구동에 따라 산출되는 디스패처(Dispatcher) 함수의 상기 메모리 상 주소 정보를 반환하는 커널 모드 가상 실행 모듈; 및 상기 임의의 커널 모드 드라이버에 대한 객체 정보를 토대로 상기 임의의 커널 모드 드라이버의 실제 구동에 따라 산출되는 디스패처 함수의 메모리 상의 실제 주소를 파악하며, 상기 파악된 상기 디스패처 함수의 실제 주소 정보와 상기 커널 모드 가상 실행 모듈로부터 반환되는 주소 정보를 비교하여 상이할 경우, 상기 디스패처 함수의 주소를 상기 반환된 주소 정보로 변경하는 커널 모드 객체 제어 모듈을 포함함으로써, 커널 모드 객체 내 디스패처 함수 주소가 변경되는 악성 행위에 대한 감지 및 복구가 용이하다.
커널 모드, 검출, 디스패처(Dispatcher) 함수

Description

커널 모드의 악성 행위 검출 시스템 및 그 방법{DETECTING SYSTEM FOR MALICIOUS BEHAVIOR BASED ON KERNEL MODE AND METHOD THEREOF}
본 발명은 커널(Kernel) 모드의 악성 행위를 검출하고, 이를 복구하기 위한 것으로, 보다 상세하게는, 가상 실행을 산출된 디스패처(Dispatcher) 함수 주소와 실제 커널 모드 드라이버의 구동에 따른 디스패처 함수 주소를 비교하여 변조 여부를 확인하고 이를 복구하는 커널 모드의 악성 행위 검출 시스템 및 그 방법에 관한 것이다.
근래의 악성 프로그램들은 과거 응용 프로그램 형태로 동작하거나 특정 응용 프로그램을 감염시켜 악성 행위를 하던 것과 달리 커널 모드(Kernel Mode) 라는 운영체제의 관리 기능이 동작하는 특별한 환경에서 동작하도록 만들어져 그 악성 행위가 더욱 강력해짐에 따라, 안티 바이러스(Anti-Virus) 프로그램에서 이를 진단하거나 치료하기가 어려워지고 있는 실정이다.
특히, 커널 모드 드라이버의 객체내에 있는 디스패처(Dispatcher) 함수 주소 를 변경하여 악성 행위를 하는 경우, 예컨대, 정상적인 운영체제의 드라이버간 I/O를 자신의 함수로 변경함으로써 이를 가로채고 악성 행위를 수행하는 경우에는 이를 진단 및 치료하기가 더욱 어렵다.
이와 관련하여, 지금까지는 이러한 악성 프로그램에 의해 변경된 커널 모드 드라이버 객체내의 디스패처 함수 주소에 대해 악성 프로그램의 실행 명령을 분석하여 원본 함수 주소를 찾아내고 이를 다시 커널 모드 드라이버 객체내에 저장해 주는 방법을 통해 해당 악성 행위에 대응하였다.
그러나, 상술한 방법은 악성 행위 진단 및 치료하는데 있어서 많은 시간이 소요된다는 단점이 있으며, 더욱이, 상술한 악성 행위의 진단 및 치료 동작에 대한 분석 결과를 그대로 반영하는 프로그램이 존재하지 않아 커널 모드에서 이루어지는 악성 행위에 대한 대응에 한계가 있다.
이에 따라, 현재 커널 모드에서의 악성 행위, 보다 구체적으로 커널 모드 객체 내 디스패처 함수 주소가 변경되는 것에 대해 이를 감지하여 빠르고 원래 함수 주소로 안정되게 복구하여 주는 방안이 시급히 필요한 실정이다.
본 발명은 상기한 바와 같이 선행 기술에 내재되었던 문제점을 해결하기 위해 창작된 것으로, 본 발명의 목적은 가상 실행을 통해 산출된 디스패처(Dispatcher) 함수 주소를 토대로 실제 커널 모드 드라이버의 구동에 따른 디스패처 함수 주소의 변조 여부를 확인하고 이를 복구하는 커널 모드의 악성 행위 검출 시스템 및 그 방법을 제공함에 있다.
상술한 목적을 달성하기 위한 본 발명의 일면에 따라, 커널(Kernel) 모드의 악성 행위 검출 시스템이 제공되며: 이 시스템은, 임의의 커널 모드 드라이버에 대한 실행 이미지 파일 및 객체 정보를 전달받아 상기 임의의 커널 모드 드라이버를 메모리에 로드하여 가상으로 구동하고, 상기 임의의 커널 모드 드라이버의 가상 구동에 따라 산출되는 디스패처(Dispatcher) 함수의 상기 메모리 상 주소 정보를 반환하는 커널 모드 가상 실행 모듈; 및 상기 임의의 커널 모드 드라이버에 대한 객체 정보를 토대로 상기 임의의 커널 모드 드라이버의 실제 구동에 따라 산출되는 디스패처 함수의 메모리 상의 실제 주소를 파악하며, 상기 파악된 상기 디스패처 함수의 실제 주소 정보와 상기 커널 모드 가상 실행 모듈로부터 반환되는 주소 정보를 비교하여 상이할 경우, 상기 디스패처 함수의 주소를 상기 반환된 주소 정보로 변경하는 커널 모드 객체 제어 모듈을 포함하는 것을 특징으로 한다.
바람직하게는, 상기 시스템은, 상기 임의의 커널 모드 드라이버에 대한 실행 이미지 파일 및 객체 정보를 제공하며, 상기 커널 모드 가상 실행 모듈로부터 반환되는 디스패처 함수의 주소 정보를 상기 커널 모드 객체 제어 모듈로 전달하는 제어 모듈을 더 포함하는 것을 특징으로 한다.
바람직하게는, 상기 커널 모드 가상 실행 모듈은, 상기 실행 이미지 파일의 크기와 동일한 크기의 메모리를 할당하여 상기 실행 이미지를 로딩하며, 상기 메모리의 시작 주소를 기준으로 상기 로딩된 실행 이미지에 대한 실행 명령의 주소 값을 재배치하는 것을 특징으로 한다.
바람직하게는, 상기 커널 모드 가상 실행 모듈은, IAT(Import Address Table)의 함수 목록을 검색하여 지원 가능한 함수를 선별하고, 상기 선별된 함수의 주소를 자체 처리를 위한 지원 대상 주소로 변환하여 상기 메모리에 저장하는 것을 특징으로 한다.
바람직하게는, 상기 커널 모드 가상 실행 모듈은, 상기 객체 정보에 포함된 상기 임의의 커널 모드 드라이버의 구동에 따른 호출 대상 함수 목록을 토대로, 해당 함수의 상기 지원 대상 주소를 상기 메모리 상의 실제 함수 주소로 변경하는 것을 특징으로 한다.
바람직하게는, 상기 커널 모드 가상 실행 모듈은, 상기 객체 정보에 포함된 인수 정보를 통해 메모리 상의 실제 함수 주소로 변환된 상기 해당 함수의 실행 명령을 실행하는 것을 특징으로 한다.
바람직하게는, 상기 커널 모드 객체 제어 모듈은, 상기 객체 정보에 포함된 상기 임의의 커널 모드 드라이버에 대한 이름 정보를 토대로 상기 임의의 커널 모드 드라이버에 대한 실제 구동에 따른 메모리 상의 로딩 위치를 확인하여 상기 임의의 커널 모드 드라이버의 실제 구동에 따라 산출되는 상기 디스패처 함수의 메모리 상의 실제 주소를 파악하는 것을 특징으로 한다.
바람직하게는, 상기 커널 모드 객체 제어 모듈은, 상기 파악된 상기 디스패처 함수의 실제 주소 정보와 상기 커널 모드 가상 실행 모듈로부터 반환되는 주소 정보를 동일 기준의 절대 주소로 변환하여 상호 비교하는 것을 특징으로 한다.
본 발명의 또 다른 일면에 따라, 커널(Kernel) 모드의 악성 행위 검출 방법이 제공되며: 이 방법은, a) 임의의 커널 모드 드라이버에 대한 실행 이미지 파일 및 객체 정보를 전달받아 상기 임의의 커널 모드 드라이버를 메모리에 로드하여 가상으로 구동하는 단계; b) 상기 임의의 커널 모드 드라이버의 가상 구동에 따라 산출되는 디스패처(Dispatcher) 함수의 상기 메모리 상의 주소 정보를 반환하는 단계; c) 상기 임의의 커널 모드 드라이버에 대한 객체 정보를 토대로 상기 임의의 커널 모드 드라이버의 실제 구동에 따라 산출되는 디스패처 함수의 메모리 상의 실제 주소를 파악하는 단계; 및 d) 상기 파악된 상기 디스패처 함수의 실제 주소 정보와 상기 커널 모드 가상 실행 모듈로부터 반환되는 주소 정보를 비교하는 단계를 포함하는 것을 특징으로 한다.
바람직하게는, 상기 방법은, e) 상기 'd) 단계'를 통한 비교 결과, 상이할 경우 상기 디스패처 함수의 주소를 상기 반환된 주소 정보로 변경하는 단계를 더 포함하는 것을 특징으로 한다.
바람직하게는, 상기 a) 단계는, a-1) 상기 실행 이미지 파일의 크기와 동일한 크기의 메모리를 할당하여 상기 실행 이미지를 로딩하는 단계; a-2) 상기 메모리의 시작 주소를 기준으로 상기 로딩된 실행 이미지에 대한 실행 명령의 주소 값을 재배치하는 단계; a-3) IAT(Import Address Table)의 함수 목록을 검색하여 지원 가능한 함수를 선별하는 단계; a-4) 상기 선별된 함수의 주소를 자체 처리를 위한 지원 대상 주소로 변환하여 상기 메모리에 저장하는 단계; a-5) 상기 객체 정보에 포함된 상기 임의의 커널 모드 드라이버의 구동에 따른 호출 대상 함수 목록을 토대로, 해당 함수의 상기 지원 대상 주소를 상기 메모리 상의 실제 함수 주소로 변경하는 단계; 및 a-6) 상기 객체 정보에 포함된 인수 정보를 통해 메모리 상의 실제 함수 주소로 변환된 상기 해당 함수의 실행 명령을 실행하는 단계를 포함하는 것을 특징으로 한다.
바람직하게는, 상기 c) 단계는, c-1) 상기 객체 정보에 포함된 상기 임의의 커널 모드 드라이버에 대한 이름 정보를 토대로 상기 임의의 커널 모드 드라이버의 실제 구동에 따른 메모리 상의 로딩 위치를 확인하는 단계; 및 c-2) 상기 확인된 메모리 상의 로딩 위치를 토대로, 상기 임의의 커널 모드 드라이버의 실제 구동에 따라 산출되는 상기 디스패처 함수의 메모리 상의 실제 주소를 파악하는 단계를 포함하는 것을 특징으로 한다.
바람직하게는, 상기 d) 단계는, 상기 파악된 상기 디스패처 함수의 실제 주소 정보와 상기 커널 모드 가상 실행 모듈로부터 반환되는 주소 정보를 동일 기준의 절대 주소로 변환하여 상호 비교하는 것을 특징으로 한다.
본 발명에 따른 커널(Kernel) 모드의 악성 행위 검출 시스템 및 그 방법은 커널 모드 드라이버를 가상으로 실행하여 그 실행 결과로 저장된 임의의 커널 모드 드라이버의 구동에 따른 디스패처(Dispatcher) 함수의 주소를 구하고, 이를 실제 커널 모드 드라이버의 구동에 따른 디스패처 함수의 주소와 비교하여 다를 경우, 이를 가상 실행에 따른 주소 값으로 변경함으로써, 커널 모드 객체 내 디스패처 함수 주소가 변경되는 악성 행위를 빠르게 감지하고 원래 함수 주소로 복구할 수 있다.
아울러, 본 발명에 따른 커널(Kernel) 모드의 악성 행위 검출 시스템 및 그 방법은 변경 전 디스패처 함수의 주소를 찾기 위해 가상 실행 환경을 적용함에 따라 실제 실행 중인 컴퓨터 환경에는 아무런 영향을 주지 않아 안정적으로 동작할 수 있다
이하에서는 첨부한 도면을 참조하여 본 발명의 바람직한 실시예를 상술하기로 한다.
도 1에는 본 발명의 실시예에 따른 커널(Kernel) 모드의 악성 행위 검출 시스템의 개략적인 구성도를 도시한다.
도 1에 도시한 바와 같이, 상기 시스템은 임의의 커널 모드 드라이버에 대한 실행이미지 파일을 메모리에 로드하고, 이를 가상 환경에서 실행함으로써 산출되는 디스패처(Dispatcher) 함수의 주소를 반환하는 커널 모드 가상 실행 모듈(100); 상기 임의의 커널 모드 드라이버 객체 내 디스패처 함수 주소의 변경 여부를 확인하고, 이를 원래 값으로 복구하는 커널 모드 객체 제어 모듈(200); 및 상기 커널 모드 가상 실행 모듈(100)과 커널 모드 객체 제어 모듈(200)의 구동을 제어하며 상기 임의의 커널 모드 드라이버에 대한 실행 이미지 파일 및 객체 정보를 제공하며, 상기 커널 모드 가상 실행 모듈(100)로부터 반환되는 디스패처 함수의 주소 정보를 커널 모드 객체 제어 모듈(200)로 전달하는 제어 모듈(300)을 포함하는 구성을 갖는다.
상기 커널 모드 가상 실행 모듈(100)은 임의의 커널 모드 드라이버에 대한 실행 이미지 파일 및 객체 정보를 제어 모듈(300)로부터 전달받아 상기 임의의 커널 모드 드라이버를 메모리에 로드하여 가상으로 구동한다.
보다 구체적으로 커널 모드 가상 실행 모듈(100)은 제어 모듈(300)로부터 전달되는 실행 이미지 파일의 크기와 동일한 크기의 메모리를 할당하여 상기 실행 이미지를 해당 위치에 로딩한다.
이때, 커널 모드 가상 실행 모듈(100)은 할당된 메모리의 시작 주소를 기준으로 상기 로딩된 실행 이미지에 대한 실행 명령의 주소 값을 재배치함으로써 메모리 상에서 실행 가능하도록 한다.
이와 더불어, 커널 모드 가상 실행 모듈(100)은, IAT(Import Address Table)의 함수 목록을 검색하여 지원 가능한 함수를 선별하고, 상기 선별된 함수의 주소 를 자체 처리를 위한 지원 대상 주소로 변환하여 메모리에 저장한다. 여기서, 상기 메모리에 저장되는 함수는 주로 커널이 제공하는 함수로써, 예컨대, 'KeInitializeSpinLock' 등을 커널 모드 가상 실행 모듈(100)의 동작 환경에 맞도록 구현한 함수이다. 한편, IAT 영역에는 프로그램이 필요한 함수의 주소뿐만 아니라 그 함수가 포함된 다른 모듈의 이름을 포함하고 있으므로 커널 모드 가상 실행 모듈(100)은 IAT에 포함된 다른 모듈도 상술한 방식을 통해 메모리에 저장함이 바람직하다.
또한, 커널 모드 가상 실행 모듈(100)은 제어 모듈(300)로부터 전달되는 객체 정보에 포함된 상기 임의의 커널 모드 드라이버의 구동에 따른 호출 대상 함수 목록(주소 정보 포함)을 토대로, 해당 함수의 상기 지원 대상 주소를 상기 메모리 상의 실제 함수 주소로 변경한다.
아울러, 커널 모드 가상 실행 모듈(100)은, 제어 모듈(300)로부터 전달되는 객체 정보에 포함된 인수 정보를 통해 메모리 상의 실제 함수 주소로 변환된 상기 해당 함수의 실행 명령을 실행한다.
또한, 커널 모드 가상 실행 모듈(100)은 상기 임의의 커널 모드 드라이버의 가상 구동에 따라 산출되는 디스패처(Dispatcher) 함수의 상기 메모리 상의 주소 정보를 제어 모듈(300)로 반환한다. 즉, 해당 함수의 실행이 종료되거나 또는 커널 모드 가상 실행 모듈(100)의 미구현 함수의 문제 등으로 인한 오류가 발생할 경우, 커널 모드 가상 실행 모듈(100)은 구동을 종료하고 해당 결과 값을 반환한다.
상기 커널 모드 객체 제어 모듈(200)은 제어 대상인 상기 임의의 커널 모드 드라이버의 실제 구동에 따라 산출되는 상기 디스패처 함수의 메모리 상의 실제 주소를 파악한다.
보다 구체적으로, 커널 모드 객체 제어 모듈(200)은 제어 모듈(300)로부터 전달되는 객체 정보에 포함된 임의의 커널 모드 드라이버에 대한 이름 정보를 토대로 상기 임의의 커널 모드 드라이버에 대한 실제 구동에 따른 메모리 상의 로딩 위치를 확인한다. 더 나아가, 커널 모드 객체 제어 모듈(200)은 상기 확인된 임의의 커널 모드 드라이버의 메모리 상의 로딩 위치를 토대로, 상기 임의의 커널 모드 드라이버의 실제 구동에 따라 산출되는 상기 디스패처 함수의 메모리 상의 실제 주소를 파악한다.
또한, 커널 모드 객체 제어 모듈(200)은 상기 파악된 디스패처 함수의 실제 주소 정보와 커널 모드 가상 실행 모듈(100)로부터 반환되는 주소 정보를 비교하여 서로 상이할 경우, 상기 실제 구동에 따른 디스패처 함수의 주소를 커널 모드 가상 실행 모듈(100)로부터 반환된 주소 정보로 변경한다. 이때, 커널 모드 객체 제어 모듈(200)은 상기 디스패처 함수의 실제 주소 정보와 상기 커널 모드 가상 실행 모듈(100)로부터 반환되는 주소 정보를 동일 기준의 절대 주소로 변환하여 상호 비교한다.
이하, 도 2를 참조하여 본 발명의 실시예에 따른 커널(Kernel) 모드의 악성 행위 검출 방법을 설명하기로 한다. 여기서, 도 2는 커널 모드의 악성 행위 검출 방법을 설명하기 위한 개략적인 순서도이다.
먼저, 임의의 커널 모드 드라이버에 대한 실행 이미지 파일 및 객체 정보를 전달받아 상기 임의의 커널 모드 드라이버를 메모리에 로드하여 가상으로 구동한다. 바람직하게는, 커널 모드 가상 실행 모듈(100)이 제어 모듈(300)로부터 전달되는 실행 이미지 파일의 크기와 동일한 크기의 메모리를 할당하여 상기 실행 이미지를 해당 위치에 로딩한다(S110-S120). 이때, 커널 모드 가상 실행 모듈(100)은 할당된 메모리의 시작 주소를 기준으로 상기 로딩된 실행 이미지에 대한 실행 명령의 주소 값을 재배치함으로써 메모리 상에서 실행 가능하도록 한다(S130). 이와 더불어, 커널 모드 가상 실행 모듈(100)이, IAT(Import Address Table)의 함수 목록을 검색하여 지원 가능한 함수를 선별하고, 상기 선별된 함수의 주소를 자체 처리를 위한 지원 대상 주소로 변환하여 메모리에 저장한다(S140-S150). 한편, IAT 영역에는 프로그램이 필요한 함수의 주소뿐만 아니라 그 함수가 포함된 다른 모듈의 이름을 포함하고 있으므로 커널 모드 가상 실행 모듈(100)은 IAT에 포함된 다른 모듈과 아울러, 제어 모듈(100)이 지정한 실행 이미지가 더 있을 경우 상술한 단계 'S110' 내지 단계 'S150'을 통해 메모리에 저장함이 바람직하다(S160). 또한, 커널 모드 가상 실행 모듈(100)이 제어 모듈(300)로부터 전달되는 객체 정보에 포함된 상기 임의의 커널 모드 드라이버의 구동에 따른 호출 대상 함수 목록(주소 정보 포함)을 토대로, 해당 함수의 상기 지원 대상 주소를 상기 메모리 상의 실제 함수 주소로 변경한다(S170). 아울러, 커널 모드 가상 실행 모듈(100)이 제어 모듈(300)로부터 전달되는 객체 정보에 포함된 인수 정보를 통해 메모리 상의 실제 함수 주소로 변환된 상기 해당 함수의 실행 명령을 실행한다(S180).
다음으로, 임의의 커널 모드 드라이버의 가상 구동에 따라 산출되는 디스패처(Dispatcher) 함수의 상기 메모리 상의 주소 정보를 반환한다. 바람직하게는, 커널 모드 가상 실행 모듈(100)이 상기 임의의 커널 모드 드라이버의 가상 구동에 따라 산출되는 디스패처(Dispatcher) 함수의 상기 메모리 상의 주소 정보를 제어 모듈(300)로 반환한다(S190). 즉, 해당 함수의 실행이 종료되거나 또는 커널 모드 가상 실행 모듈(100)의 미구현 함수의 문제 등으로 인한 오류가 발생할 경우, 커널 모드 가상 실행 모듈(100)은 구동을 종료하고 해당 결과 값을 반환한다.
그리고 나서, 상기 임의의 커널 모드 드라이버에 대한 객체 정보를 토대로 상기 임의의 커널 모드 드라이버의 실제 구동에 따라 산출되는 상기 디스패처 함수의 메모리 상의 실제 주소를 파악한다. 바람직하게는, 커널 모드 객체 제어 모듈(200)이 제어 모듈(300)로부터 전달되는 객체 정보에 포함된 임의의 커널 모드 드라이버에 대한 이름 정보를 토대로 상기 임의의 커널 모드 드라이버에 대한 실제 구동에 따른 메모리 상의 로딩 위치를 확인한다(S200). 이후, 커널 모드 객체 제어 모듈(200)은 상기 확인된 메모리 상의 로딩 위치를 토대로, 상기 임의의 커널 모드 드라이버의 실제 구동에 따라 산출되는 디스패처 함수의 메모리 상의 실제 주소를 파악한다(S210).
그런 다음, 상기 파악된 상기 디스패처 함수의 실제 주소 정보와 상기 커널 모드 가상 실행 모듈로부터 반환되는 주소 정보를 비교한다. 바람직하게는, 커널 모드 객체 제어 모듈(200)이 상기 파악된 디스패처 함수의 실제 주소 정보와 커널 모드 가상 실행 모듈(100)로부터 반환되는 주소 정보를 비교한다(S220). 이때, 커 널 모드 객체 제어 모듈(200)은 상기 디스패처 함수의 실제 주소 정보와 상기 커널 모드 가상 실행 모듈(100)로부터 반환되는 주소 정보를 동일 기준의 절대 주소로 변환하여 상호 비교한다.
이후, 상기 단계 'S220'를 통한 비교 결과, 상이할 경우 상기 디스패처 함수의 주소를 상기 반환된 주소 정보로 변경한다. 바람직하게는, 커널 모드 객체 제어 모듈(200)이 상기 파악된 디스패처 함수의 실제 주소 정보와 커널 모드 가상 실행 모듈(100)로부터 반환되는 주소 정보를 비교하여 서로 상이할 경우, 상기 실제 구동에 따른 디스패처 함수의 주소를 커널 모드 가상 실행 모듈(100)로부터 반환된 주소 정보로 변경한다(S230).
지금까지 본 발명을 바람직한 실시예를 참조하여 상세히 설명하였지만, 본 발명이 상기한 실시예에 한정되는 것은 아니며, 이하의 특허청구범위에서 청구하는 본 발명의 요지를 벗어남이 없이 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면 누구든지 다양한 변형 또는 수정이 가능한 범위까지 본 발명의 기술적 사상이 미친다 할 것이다.
본 발명에 따른 커널(Kernel) 모드의 악성 행위 검출 시스템 및 그 방법은 변경 전 디스패처 함수의 주소를 찾기 위해 가상 실행 환경을 적용함에 따라 실제 실행 중인 컴퓨터 환경에는 아무런 영향을 주지 않아 안정적인 동작 환경을 제공하 며, 이를 토대로 커널 모드 객체내 함수 주소를 변경하는 파일, 네트워크, 레지스트리, 키보드, 게임 해킹 프로그램 등 다양한 악성 프로그램의 행위의 진단 및 차단에 효과적으로 적용할 수 있다는 점에서 기존의 기술의 한계를 뛰어 넘음에 따라 관련 기술에 대한 이용만이 아닌 적용되는 장치의 시판 또는 영업의 가능성이 충분할 뿐만 아니라 현실적으로 명백하게 실시할 수 있는 정도이므로 산업상 이용가능성이 있는 발명이다.
본 명세서에서 첨부되는 다음의 도면들은 본 발명의 바람직한 실시예를 예시하는 것이며, 후술하는 발명의 상세한 설명과 함께 본 발명의 기술사상을 더욱 이해시키는 역할을 하는 것이므로, 본 발명은 그러한 도면에 기재된 사항에만 한정되어 해석되어서는 아니된다.
도 1은 본 발명의 실시예에 따른 커널 모드의 악성 행위 검출 시스템의 개략적인 구성도.
도 2는 본 발명의 실시예에 따른 커널 모드의 악성 행위 검출 방법을 설명하기 위한 개략적인 순서도.
*도면의 주요 부분에 대한 부호의 설명*
100: 커널 모드 가상 실행 모듈
200: 커널 모드 객체 제어 모듈
300: 제어 모듈

Claims (13)

  1. 커널(Kernel) 모드의 악성 행위 검출 시스템에 있어서,
    임의의 커널 모드 드라이버에 대한 실행 이미지 파일 및 객체 정보를 전달받아 상기 임의의 커널 모드 드라이버를 메모리에 로드하여 가상으로 구동하고, 상기 임의의 커널 모드 드라이버의 가상 구동에 따라 산출되는 디스패처(Dispatcher) 함수의 상기 메모리 상 주소 정보를 반환하는 커널 모드 가상 실행 모듈; 및
    상기 임의의 커널 모드 드라이버에 대한 객체 정보를 토대로 상기 임의의 커널 모드 드라이버의 실제 구동에 따라 산출되는 디스패처 함수의 메모리 상의 실제 주소를 파악하며, 상기 파악된 상기 디스패처 함수의 실제 주소 정보와 상기 커널 모드 가상 실행 모듈로부터 반환되는 주소 정보를 비교하여 상이할 경우, 상기 디스패처 함수의 주소를 상기 반환된 주소 정보로 변경하는 커널 모드 객체 제어 모듈을 포함하는 것을 특징으로 하는 커널 모드의 악성 행위 검출 시스템.
  2. 제 1 항에 있어서, 상기 시스템은,
    상기 임의의 커널 모드 드라이버에 대한 실행 이미지 파일 및 객체 정보를 제공하며, 상기 커널 모드 가상 실행 모듈로부터 반환되는 디스패처 함수의 주소 정보를 상기 커널 모드 객체 제어 모듈로 전달하는 제어 모듈을 더 포함하는 것을 특징으로 하는 커널 모드의 악성 행위 검출 시스템.
  3. 제 1 항에 있어서, 상기 커널 모드 가상 실행 모듈은,
    상기 실행 이미지 파일의 크기와 동일한 크기의 메모리를 할당하여 상기 실행 이미지를 로딩하며, 상기 메모리의 시작 주소를 기준으로 상기 로딩된 실행 이미지에 대한 실행 명령의 주소 값을 재배치하는 것을 특징으로 하는 커널 모드의 악성 행위 검출 시스템.
  4. 제 3 항에 있어서, 상기 커널 모드 가상 실행 모듈은,
    IAT(Import Address Table)의 함수 목록을 검색하여 지원 가능한 함수를 선별하고, 상기 선별된 함수의 주소를 자체 처리를 위한 지원 대상 주소로 변환하여 상기 메모리에 저장하는 것을 특징으로 하는 커널 모드의 악성 행위 검출 시스템.
  5. 제 4 항에 있어서, 상기 커널 모드 가상 실행 모듈은,
    상기 객체 정보에 포함된 상기 임의의 커널 모드 드라이버의 구동에 따른 호출 대상 함수 목록을 토대로, 해당 함수의 상기 지원 대상 주소를 상기 메모리 상의 실제 함수 주소로 변경하는 것을 특징으로 하는 커널 모드의 악성 행위 검출 시스템.
  6. 제 5 항에 있어서, 상기 커널 모드 가상 실행 모듈은,
    상기 객체 정보에 포함된 인수 정보를 통해 메모리 상의 실제 함수 주소로 변환된 상기 해당 함수의 실행 명령을 실행하는 것을 특징으로 하는 커널 모드의 악성 행위 검출 시스템.
  7. 제 1 항에 있어서, 상기 커널 모드 객체 제어 모듈은,
    상기 객체 정보에 포함된 상기 임의의 커널 모드 드라이버에 대한 이름 정보를 토대로 상기 임의의 커널 모드 드라이버에 대한 실제 구동에 따른 메모리 상의 로딩 위치를 확인하여 상기 임의의 커널 모드 드라이버의 실제 구동에 따라 산출되는 상기 디스패처 함수의 메모리 상의 실제 주소를 파악하는 것을 특징으로 하는 커널 모드의 악성 행위 검출 시스템.
  8. 제 1 항에 있어서, 상기 커널 모드 객체 제어 모듈은,
    상기 파악된 상기 디스패처 함수의 실제 주소 정보와 상기 커널 모드 가상 실행 모듈로부터 반환되는 주소 정보를 동일 기준의 절대 주소로 변환하여 상호 비교하는 것을 특징으로 하는 커널 모드의 악성 행위 검출 시스템.
  9. 커널(Kernel) 모드의 악성 행위 검출 방법에 있어서,
    a) 임의의 커널 모드 드라이버에 대한 실행 이미지 파일 및 객체 정보를 전달받아 상기 임의의 커널 모드 드라이버를 메모리에 로드하여 가상으로 구동하는 단계;
    b) 상기 임의의 커널 모드 드라이버의 가상 구동에 따라 산출되는 디스패처(Dispatcher) 함수의 상기 메모리 상의 주소 정보를 반환하는 단계;
    c) 상기 임의의 커널 모드 드라이버에 대한 객체 정보를 토대로 상기 임의의 커널 모드 드라이버의 실제 구동에 따라 산출되는 디스패처 함수의 메모리 상의 실제 주소를 파악하는 단계; 및
    d) 상기 파악된 상기 디스패처 함수의 실제 주소 정보와 상기 커널 모드 가상 실행 모듈로부터 반환되는 주소 정보를 비교하는 단계를 포함하는 것을 특징으로 하는 커널 모드의 악성 행위 검출 방법.
  10. 제 9 항에 있어서, 상기 방법은,
    e) 상기 'd) 단계'를 통한 비교 결과, 상이할 경우 상기 디스패처 함수의 주소를 상기 반환된 주소 정보로 변경하는 단계를 더 포함하는 것을 특징으로 하는 커널 모드의 악성 행위 검출 방법.
  11. 제 9 항에 있어서, 상기 a) 단계는,
    a-1) 상기 실행 이미지 파일의 크기와 동일한 크기의 메모리를 할당하여 상기 실행 이미지를 로딩하는 단계;
    a-2) 상기 메모리의 시작 주소를 기준으로 상기 로딩된 실행 이미지에 대한 실행 명령의 주소 값을 재배치하는 단계;
    a-3) IAT(Import Address Table)의 함수 목록을 검색하여 지원 가능한 함수를 선별하는 단계;
    a-4) 상기 선별된 함수의 주소를 자체 처리를 위한 지원 대상 주소로 변환하 여 상기 메모리에 저장하는 단계;
    a-5) 상기 객체 정보에 포함된 상기 임의의 커널 모드 드라이버의 구동에 따른 호출 대상 함수 목록을 토대로, 해당 함수의 상기 지원 대상 주소를 상기 메모리 상의 실제 함수 주소로 변경하는 단계; 및
    a-6) 상기 객체 정보에 포함된 인수 정보를 통해 메모리 상의 실제 함수 주소로 변환된 상기 해당 함수의 실행 명령을 실행하는 단계를 포함하는 것을 특징으로 하는 커널 모드의 악성 행위 검출 방법.
  12. 제 9 항에 있어서, 상기 c) 단계는,
    c-1) 상기 객체 정보에 포함된 상기 임의의 커널 모드 드라이버에 대한 이름 정보를 토대로 상기 임의의 커널 모드 드라이버의 실제 구동에 따른 메모리 상의 로딩 위치를 확인하는 단계; 및
    c-2) 상기 확인된 메모리 상의 로딩 위치를 토대로, 상기 임의의 커널 모드 드라이버의 실제 구동에 따라 산출되는 상기 디스패처 함수의 메모리 상의 실제 주소를 파악하는 단계를 포함하는 것을 특징으로 하는 커널 모드의 악성 행위 검출 방법.
  13. 제 10 항에 있어서, 상기 d) 단계는,
    상기 파악된 상기 디스패처 함수의 실제 주소 정보와 상기 커널 모드 가상 실행 모듈로부터 반환되는 주소 정보를 동일 기준의 절대 주소로 변환하여 상호 비 교하는 것을 특징으로 하는 커널 모드의 악성 행위 검출 방법.
KR1020080013596A 2008-02-14 2008-02-14 커널 모드의 악성 행위 검출 시스템 및 그 방법 Active KR100925401B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020080013596A KR100925401B1 (ko) 2008-02-14 2008-02-14 커널 모드의 악성 행위 검출 시스템 및 그 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020080013596A KR100925401B1 (ko) 2008-02-14 2008-02-14 커널 모드의 악성 행위 검출 시스템 및 그 방법

Publications (2)

Publication Number Publication Date
KR20090088198A true KR20090088198A (ko) 2009-08-19
KR100925401B1 KR100925401B1 (ko) 2009-11-09

Family

ID=41206958

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020080013596A Active KR100925401B1 (ko) 2008-02-14 2008-02-14 커널 모드의 악성 행위 검출 시스템 및 그 방법

Country Status (1)

Country Link
KR (1) KR100925401B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20260037628A1 (en) * 2024-07-31 2026-02-05 Palo Alto Networks (Israel Analytics) Ltd. Malicious Direct Syscall Call Detection

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101097590B1 (ko) * 2011-07-15 2011-12-22 오영광 동적 링크 라이브러리 인젝션 방어 방법

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20020097344A (ko) * 2001-06-20 2002-12-31 주식회사 마이크로모스 컴퓨터 하드디스크 내 자료 복구 방법
KR100786725B1 (ko) * 2005-11-08 2007-12-21 한국정보보호진흥원 악성코드 분석 시스템 및 방법

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20260037628A1 (en) * 2024-07-31 2026-02-05 Palo Alto Networks (Israel Analytics) Ltd. Malicious Direct Syscall Call Detection
US12625961B2 (en) * 2024-07-31 2026-05-12 Palo Alto Networks, Inc. Malicious direct syscall call detection

Also Published As

Publication number Publication date
KR100925401B1 (ko) 2009-11-09

Similar Documents

Publication Publication Date Title
US8909913B2 (en) Method for integrating heterogeneous operating systems based on the same system kernel using a shared information area accessible to multiple operating systems
KR101493076B1 (ko) 버퍼 오버플로우 관리를 통한 바이러스 코드 실행방지장치 및 그 방법
US7574624B2 (en) Integrated test method on multi-operating system platform
US9158562B2 (en) Method and apparatus for supporting virtualization of loadable module
US20180357068A1 (en) Method And System For Automated Agent Injection In Container Environments
US20170103206A1 (en) Method and apparatus for capturing operation in a container-based virtualization system
KR100704629B1 (ko) 변경된 위치의 마스터 부트 레코드의 바이러스 감염 여부를판단하고 치료하는 장치 및 방법
CN102024113B (zh) 快速检测恶意代码的方法和系统
CN113051088B (zh) 程序加载方法、装置、设备及计算机可读介质
US20130096880A1 (en) System test method
US12475053B2 (en) Method for detecting error of operating system kernel memory in real time
US7814471B2 (en) Method and apparatus for providing DLL compatibility
CN105678160B (zh) 用于提供对引导驱动程序的原始例程的访问的系统和方法
Cui et al. Tracking rootkit footprints with a practical memory analysis system
US20150324580A1 (en) Apparatus and method for analyzing malicious code in real environment
CN111399988B (zh) 一种云平台的内存安全检测系统及方法
TWI656453B (zh) 檢測系統及檢測方法
US10372472B2 (en) System, method, and computer program product for conditionally preventing use of hardware virtualization
JP4903149B2 (ja) コンピュータシステム上でコンピュータプログラムを処理する方法
KR100925401B1 (ko) 커널 모드의 악성 행위 검출 시스템 및 그 방법
JP2018081514A (ja) マルウェアの解析方法及び記憶媒体
TWI450090B (zh) 關於改變程式之啟動列表以判定電腦系統性能是否增進之方法及系統
CN119645872A (zh) 一种针对闭源操作系统的模糊测试方法及装置
US12135690B2 (en) Method for processing a system image
KR101052735B1 (ko) 메모리 조작유무를 감지하는 방법 및 이를 이용한 장치

Legal Events

Date Code Title Description
A201 Request for examination
PA0109 Patent application

St.27 status event code: A-0-1-A10-A12-nap-PA0109

PA0201 Request for examination

St.27 status event code: A-1-2-D10-D11-exm-PA0201

D13-X000 Search requested

St.27 status event code: A-1-2-D10-D13-srh-X000

D14-X000 Search report completed

St.27 status event code: A-1-2-D10-D14-srh-X000

E902 Notification of reason for refusal
PE0902 Notice of grounds for rejection

St.27 status event code: A-1-2-D10-D21-exm-PE0902

P11-X000 Amendment of application requested

St.27 status event code: A-2-2-P10-P11-nap-X000

P13-X000 Application amended

St.27 status event code: A-2-2-P10-P13-nap-X000

PG1501 Laying open of application

St.27 status event code: A-1-1-Q10-Q12-nap-PG1501

E701 Decision to grant or registration of patent right
PE0701 Decision of registration

St.27 status event code: A-1-2-D10-D22-exm-PE0701

GRNT Written decision to grant
PR0701 Registration of establishment

St.27 status event code: A-2-4-F10-F11-exm-PR0701

PR1002 Payment of registration fee

St.27 status event code: A-2-2-U10-U11-oth-PR1002

Fee payment year number: 1

PG1601 Publication of registration

St.27 status event code: A-4-4-Q10-Q13-nap-PG1601

R18-X000 Changes to party contact information recorded

St.27 status event code: A-5-5-R10-R18-oth-X000

R18-X000 Changes to party contact information recorded

St.27 status event code: A-5-5-R10-R18-oth-X000

PN2301 Change of applicant

St.27 status event code: A-5-5-R10-R13-asn-PN2301

St.27 status event code: A-5-5-R10-R11-asn-PN2301

FPAY Annual fee payment

Payment date: 20121030

Year of fee payment: 4

PR1001 Payment of annual fee

St.27 status event code: A-4-4-U10-U11-oth-PR1001

Fee payment year number: 4

FPAY Annual fee payment

Payment date: 20131030

Year of fee payment: 5

PR1001 Payment of annual fee

St.27 status event code: A-4-4-U10-U11-oth-PR1001

Fee payment year number: 5

R18-X000 Changes to party contact information recorded

St.27 status event code: A-5-5-R10-R18-oth-X000

FPAY Annual fee payment

Payment date: 20141030

Year of fee payment: 6

PR1001 Payment of annual fee

St.27 status event code: A-4-4-U10-U11-oth-PR1001

Fee payment year number: 6

PR1001 Payment of annual fee

St.27 status event code: A-4-4-U10-U11-oth-PR1001

Fee payment year number: 7

P22-X000 Classification modified

St.27 status event code: A-4-4-P10-P22-nap-X000

PR1001 Payment of annual fee

St.27 status event code: A-4-4-U10-U11-oth-PR1001

Fee payment year number: 8

PR1001 Payment of annual fee

St.27 status event code: A-4-4-U10-U11-oth-PR1001

Fee payment year number: 9

R18-X000 Changes to party contact information recorded

St.27 status event code: A-5-5-R10-R18-oth-X000

R18-X000 Changes to party contact information recorded

St.27 status event code: A-5-5-R10-R18-oth-X000

R18-X000 Changes to party contact information recorded

St.27 status event code: A-5-5-R10-R18-oth-X000

FPAY Annual fee payment

Payment date: 20181030

Year of fee payment: 10

PR1001 Payment of annual fee

St.27 status event code: A-4-4-U10-U11-oth-PR1001

Fee payment year number: 10

FPAY Annual fee payment

Payment date: 20191030

Year of fee payment: 11

PR1001 Payment of annual fee

St.27 status event code: A-4-4-U10-U11-oth-PR1001

Fee payment year number: 11

R18-X000 Changes to party contact information recorded

St.27 status event code: A-5-5-R10-R18-oth-X000

PR1001 Payment of annual fee

St.27 status event code: A-4-4-U10-U11-oth-PR1001

Fee payment year number: 12

PR1001 Payment of annual fee

St.27 status event code: A-4-4-U10-U11-oth-PR1001

Fee payment year number: 13

PR1001 Payment of annual fee

St.27 status event code: A-4-4-U10-U11-oth-PR1001

Fee payment year number: 14

PR1001 Payment of annual fee

St.27 status event code: A-4-4-U10-U11-oth-PR1001

Fee payment year number: 15

PR1001 Payment of annual fee

St.27 status event code: A-4-4-U10-U11-oth-PR1001

Fee payment year number: 16

P14-X000 Amendment of ip right document requested

St.27 status event code: A-5-5-P10-P14-nap-X000

R18-X000 Changes to party contact information recorded

St.27 status event code: A-5-5-R10-R18-oth-X000

PR1001 Payment of annual fee

St.27 status event code: A-4-4-U10-U11-oth-PR1001

Fee payment year number: 17

U11 Full renewal or maintenance fee paid

Free format text: ST27 STATUS EVENT CODE: A-4-4-U10-U11-OTH-PR1001 (AS PROVIDED BY THE NATIONAL OFFICE)

Year of fee payment: 17