KR20070019191A - 커널 메모리를 보호하는 방법 및 그 장치 - Google Patents

커널 메모리를 보호하는 방법 및 그 장치 Download PDF

Info

Publication number
KR20070019191A
KR20070019191A KR1020050073907A KR20050073907A KR20070019191A KR 20070019191 A KR20070019191 A KR 20070019191A KR 1020050073907 A KR1020050073907 A KR 1020050073907A KR 20050073907 A KR20050073907 A KR 20050073907A KR 20070019191 A KR20070019191 A KR 20070019191A
Authority
KR
South Korea
Prior art keywords
kernel memory
value
current
kernel
memory value
Prior art date
Application number
KR1020050073907A
Other languages
English (en)
Other versions
KR100745640B1 (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 KR1020050073907A priority Critical patent/KR100745640B1/ko
Publication of KR20070019191A publication Critical patent/KR20070019191A/ko
Application granted granted Critical
Publication of KR100745640B1 publication Critical patent/KR100745640B1/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/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/82Protecting input, output or interconnection devices
    • G06F21/85Protecting input, output or interconnection devices interconnection devices, e.g. bus-connected or in-line devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1666Error detection or correction of the data by redundancy in hardware where the redundant component is memory or memory area
    • G06F11/167Error detection by comparing the memory output

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Debugging And Monitoring (AREA)

Abstract

본 발명은 악성코드를 탐지하여 제거하는 커널 메모리 보호 방법 및 그 장치에 관한 것이다. 본 발명은 안전 상태의 원본 커널 메모리 값을 저장하는 단계와, 사용자의 입력 또는 설정에 따라 현재의 커널 메모리를 덤프(dump)하는 단계와, 상기 덤프된 현재의 커널 메모리의 현재 커널 메모리 값과 상기 원본 커널 메모리 값을 비교하는 단계, 및 상기 비교 결과 상기 원본 커널 메모리 값과 상기 현재 커널 메모리 값이 일치하지 않는 경우, 상기 현재 커널 메모리 값을 상기 원본 커널 메모리 값으로 대체하는 단계를 포함하는 것을 특징으로 하는 커널 메모리 보호 방법을 제공한다. 본 발명에 의하면, 커널 메모리의 안전 상태의 원본 값을 저장하여 현재의 시스템 정보와 비교하여 공격을 탐지한 경우 현재 메모리 값을 안전 상태의 원본 메모리 값으로 복원함으로써 커널 메모리 영역을 보호할 수 있다.
커널 메모리, 악성코드, 탐지, 제거, 복원

Description

커널 메모리를 보호하는 방법 및 그 장치{METHOD FOR PROTECTING KERNEL MEMORY AND APPARATUS THEREOF}
도 1은 본 발명에 따른 윈도우 커널 기반의 악성코드를 제거하는 시스템의 구성을 나타내는 도면이다.
도 2는 본 발명에 따른 커널 메모리 영역의 보호 대상을 나타내는 도면이다.
도 3은 본 발명에 따른 커널 메모리 보호 방법에 있어서, 안전 상태의 커널 메모리 상태 값을 저장하는 과정을 나타내는 도면이다.
도 4는 본 발명의 일실시예에 따른 커널 메모리 보호 방법의 흐름을 나타내는 도면이다.
도 5는 본 발명의 일실시예에 따른 커널 메모리 보호 장치의 구성을 나타내는 도면이다.
<도면의 주요 부분에 대한 부호의 설명>
110: 악성코드 제거 시스템
111: 파일 및 레지스트리 검사 모듈 112: 커널 메모리 검사 모듈
113: 커널 드라이버 검사 모듈 114: 프로세스 검사 모듈
120: 사용자 모드
121: 파일 시스템 122: 레지스트리
130: 커널 모드
131: 커널 메모리 132: 커널 드라이버
210: 코드 영역 220: SDT/SST
230: IDT 240: ETHREAD
250: IDTR
500: 커널 메모리 보호 장치
510: 저장부 520: 덤프부
530: 비교부 540: 대체부
본 발명은 커널 메모리를 보호하는 방법 및 그 장치에 관한 것으로, 더욱 상세하게는 악성코드를 탐지하여 제거하는 커널 메모리 보호 방법 및 그 장치에 관한 것이다.
통상적으로 악성코드(Malicious code)는 시스템 파괴, 정보 유출 및 위변조 등의 악의적인 목적을 위해 제작된 프로그램을 총칭한다. 이러한 악성코드는 바이러스(virus), 웜(worm), 악성 모바일코드(예를 들면, applet, activeX) 등으로 분류될 수 있다. 또한, 악성코드는 컴퓨터 시스템 계층(computer system layer)에 따라 응용 계층의 악성코드와 커널 기반의 악성코드로 분류될 수도 있다.
상기 응용 계층의 악성코드는 바이러스 백신 등의 기존의 정보 보호 시스템으로 탐지 및 제거가 가능하며, 이는 시스템 내의 공격 시그너처(Attack Signature)의 존재를 기반으로 한다.
이처럼 알려진 공격 시그너처를 기반으로 하는 공격 기법에 관한 연구는 보안 라이프-사이클의 사후 대응(response)을 중요시하는 개념이고, 알려지지 않은 커널 공격 기법에 관한 연구는 사전 예방(prevention)에 집중된 개념이다. 최신의 정보 보호기술 동향이 능동적(proactive) 경향을 갖는 것에 비추어 볼 때 사후 대응의 접근 보다는 사전 예방의 접근이 더 중요하다.
윈도우 환경과 관련된 커널 공격 기법은 크게 시스템 객체 및 주체 정보 은폐 기법, 시스템 제어 흐름 변경 및 악성코드 추가 기법, 커널 드라이버 조작 기법으로 분류할 수 있다. 공격 기법에 대한 대응 기법 수준은 각 개별 기법에 대해 한정된 플랫폼에서만 연구되고 있으며, 이의 통합 보안 관리 및 지능형 아키텍처, 프레임워크에 관한 연구는 전무한 실정이다.
이와 같이 관련 연구가 부진한 이유는 윈도우 커널 관련 정보의 부재, 운영 체제 커널 프로그래밍 기술의 어려움, 시스템의 안정성 확보 등과 같은 다양한 문제점에 의해 기인된 것이다. 하지만 다변화, 고도화되어 가는 커널 공격에 대한 대응 기법 연구는 다가오는 유비쿼터스 시대에 적극적인 대안이 될 수 밖에 없는 상황이다.
운영 체제 시스템에서 커널 기반의 악성코드에 대한 전형적인 동작 방식을 설명하면 다음과 같다. 먼저 악성코드는 운영 체제 시스템의 취약점을 이용하여 네트워크를 통해 상기 운영 체제 시스템에 접근하고, 상기 운영 체제 시스템에 커널 백도어(kernel backdoor)를 설치한 후 상기 커널 백도어를 이용하여 상기 운영 체제 시스템에서 인지 없이 접근한 후 은밀하게 악의적인 활동을 수행할 수 있다. 즉, 상기 커널 기반의 악성코드는 먼저 자신의 존재를 감추기 위해 커널 백도어를 통해 자신과 관련된 개체와 주체 정보를 은폐함으로써 운영 체제 시스템의 인지 없이 언제든지 자신이 의도한 악의적인 기능을 수행할 수 있도록 한다.
일반적인 운영 체제 시스템의 제어 흐름은 상기 운영 체제 시스템에서 윈도우 응용 프로그램이 시스템 서비스를 요청하게 되면, 커널을 통해 인터럽트 호출을 발생시키며, 해당 요청에 대한 서비스 기계어 코드를 수행하게 된다.
커널 기반 악성코드는 윈도우 운영체제의 정상적인 시스템 제어 흐름을 변경하여 자신의 존재를 은폐하는 공격코드를 삽입시킨다. 이와 같은 커널 함수 제어 흐름을 변경하는 작업은 함수 포인터를 변경하는 과정으로 원래의 커널 함수와 변경된 커널 함수의 입력 인자(input parameter) 및 출력 인자(output parameter)가 정확히 맞아야 한다. 하지만, 원래 커널 함수 제어 흐름을 변경하는 작업은 함수 포인터를 변경하는 과정으로 커널 내부에 데이터 타입이 정확히 일치하지 않으면 시스템 크래쉬(system crash)가 발생한다.
윈도우의 서비스 테이블에서 서비스 디스크립터(service descriptor)를 변경하여 공격자 코드로 명령어 수행번지를 지정하는 공격 기법이다. 상기 악의적인 코드는 커널 수준에서 수행되기 때문에 시스템 수행 권한을 장학하게 되어 어떠한 악의적인 행위도 가능하다.
커널 기반 악성코드의 대표적 기능인 커널 정보 은폐 기법은 운영체제 커널 정보인 이중 링크 구조의 프로세스 목록(double-linked lists)에서 공격코드 프로세스인 자신의 정보를 링크에서 해제하는 것이다. 상기 공격코드 프로세스 정보는 상기 링크가 해제된 이후부터 시스템 내에 사라지게 되어 공격코드의 존재가 은폐된다. 즉, 커널 기반 악성코드는 윈도우 운영 체제의 정상적인 시스템 제어 흐름을 변경하고, 시스템 제어 경로의 중간 과정의 공격 코드를 삽입하여 자신의 존재를 은폐한다.
이와 같이 커널 기반의 악성코드의 시스템 정보가 은폐되고, 커널 공격 기법에 대한 패턴이 존재하지 않기 때문에 기존의 정보 보호 시스템에 의해 탐지 및 제거하기가 매우 어렵다.
윈도우 운영 체계 수준에서 수행되는 코드는 커널 모드(kernel mode)에서 실행되는 것이며, win32 API를 사용하는 어플리케이션 프로그램의 경우는 사용자 모드(user mode)에서 수행되는 프로그램이다. 상기 커널 모드와 상기 사용자 모드는 세그먼트 디스크립터의 수행 권한 수준(Descriptor Privilege Level: 이하 DPL이라고 함), 필드에서 결정된다.
인텔 마이크로프로세서(intel microprocessor)의 세그먼트 디스크립터에는 해당 스크립터가 가지는 수행 권한 값을 나타내는 DPL 필드를 가지고 있으며, 이러한 디스크립터 가운데 현재 실행 중에 있는 코드 세그먼트(Code Segment: CS) 디스크립터가 가지는 DPL 값을 특별히 CPL(Current Privilege Level)이라 하며, 이 값이 현재 실행되고 있는 코드의 수행 권한이 된다.
현재 실행되고 있는 코드 세그먼트 디스크립터의 DPL 값이 '0'일 경우 이 코는 커널 모드에서 실행되고 있는 코드로서 프로세서가 가지는 모든 명령어와 모든 메모리 참조가 가능하다. 커널 기반의 악성코드는 이와 같이 DPL 값이 '0'인 상태에서 동작하는 악성코드를 말한다.
응용 계층의 악성코드와 비교하여 커널 기반의 악성코드의 특징으로 살펴보면 다음과 같다. 응용 계층 코드는 일반 사용자 수준의 응용 프로그램을 변경시키거나 프로세스의 메모리를 변경시켜 공격자의 흔적을 은폐하는 기능을 제공한다. 하지만, 커널 기반 악성코드는 윈도우 운영 체제의 커널 수준인 Windows Native API(ntdll.dll, kernel32.dll, user32.dll) 커널 드라이브와 WIN32 응용 프로그램 간의 데이터를 중간에서 조작함으로써 공격자의 흔적을 은폐한다.
따라서, 파일 내의 특정 위치에서의 매직 넘버(file magic number), 시스템 레지시트리 값, 프로세스 이름, 드라이버 이름 등을 검색하여 악성코드를 탐지하는 기존 응용 계층의 악성코드 탐지 시스템은 커널 기반의 악성코드를 탐지할 수 없는 문제점이 있다.
이러한 악성코드에 의한 악의적인 공격으로 인해 금전적 손실 또한 막대해지고 있다. 특히 개인용 컴퓨터 보안의 경우 현재의 바이러스에 대한 대처에서 벗어나 슈퍼웜이라고 불리우는 능동적인 특성을 지니고 있는 악성코드를 어떻게 탐지하느냐가 매우 중요한 이슈로 대두되고 있다.
이와 같은 악성코드와 관련된 정보 침해 사고는 대부분 마이크로소프트(Micro-soft)의 윈도우(Windows)에서 발생하고 있으며, 사고가 발생하는 빈도가 해 마다 증가하는 추세에 있다. 미국의 컴퓨터 범죄수사국(CSI: Computer Security Institute) 보고에 따르면, 2003년 전 세계적으로 전체 침해 사고의 78퍼센트가 윈도우에서 발생하였다. 국내의 경우에는 2003년 전체 침해 사고의 68퍼센트가 윈도우에서 발생하였으며, 2004년 8월 전체 침해 사고의 73퍼센트가 윈도우에서 발생하였다.
이처럼 윈도우 커널 수준에서 빈번하게 발생되는 악성코드를 탐지하고 제거하는 방법이 절실히 요청되어 오고 있다.
본 발명은 상기와 같은 종래기술을 개선하기 위해 안출된 것으로서, 파일 시스템 및 레지스트리를 검사하여 커널 수준에서 작성된 악성코드를 탐지하여 제거하는 방법을 제공하는 것을 목적으로 한다.
상기의 목적을 이루고 종래기술의 문제점을 해결하기 위하여, 본 발명은 안전 상태의 원본 커널 메모리 값을 저장하는 단계와, 사용자의 입력 또는 설정에 따라 현재의 커널 메모리를 덤프(dump)하는 단계와, 상기 덤프된 현재의 커널 메모리의 현재 커널 메모리 값과 상기 원본 커널 메모리 값을 비교하는 단계, 및 상기 비교 결과 상기 원본 커널 메모리 값과 상기 현재 커널 메모리 값이 일치하지 않는 경우, 상기 현재 커널 메모리 값을 상기 원본 커널 메모리 값으로 대체하는 단계를 포함하는 것을 특징으로 하는 커널 메모리 보호 방법을 제공한다.
본 발명의 다른 일측에 따르는 커널 메모리를 보호하는 장치는 소정의 안전 상태의 원본 커널 메모리 값을 저장하는 저장부와, 사용자의 입력 또는 설정에 따라 현재의 커널 메모리를 덤프(dump)하는 덤프부와, 상기 덤프된 현재의 커널 메모리의 현재 커널 메모리 값과 상기 원본 커널 메모리 값을 비교하는 비교부, 및 상기 비교 결과 상기 원본 커널 메모리 값과 상기 현재 커널 메모리 값이 일치하지 않는 경우, 상기 현재 커널 메모리 값을 상기 원본 커널 메모리 값으로 대체하는 대체부를 포함하는 것을 특징으로 한다.
이하에서는 첨부된 도면들을 참조하여 본 발명에 따른 커널 메모리 보호 방법 및 그 장치를 상세히 설명한다.
도 1은 본 발명에 따른 윈도우 커널 기반 악성코드를 탐지 및 제거하는 시스템의 구성을 나타내는 도면이다.
도 1을 참조하면, 악성코드 제거 시스템(110)은 파일 및 레지스트리 검사 모듈(111), 커널 메모리 검사 모듈(112), 커널 드라이버 감사 모듈(113), 및 프로세스 검사 모듈(114)을 포함한다.
파일 및 레지스트리 검사 모듈(111)은 사용자 모드(120)의 파일 시스템(121)과 레지스트리(122)를 검사하여 사용자 수준에서 악성코드를 탐지하여 제거한다. 파일 및 레지스트리 검사 모듈(111)은 커널 기반의 악성코드라도 최소한의 흔적인 공격 시그너처를 남기기 때문에 상기 공격 시그너처 정보를 주기적으로 수집한다. 파일 및 레지스트리 검사 모듈(111)은 상기 수집된 공격 시그너처 정보를 데이터베이스에 기록하고, 파일 시스템 및 레지스트리를 검색한다. 파일 및 레지스트리 검사 모듈(111)은 상기 파일 시스템 및 상기 레지스트리에 대한 검색 결과 를 상기 수집된 공격 시그너처 정보와 비교하여 일치하는 경우 공격 탐지로 간주하여 해당 정보를 제거한다.
또한, 파일 및 레지스트리 검사 모듈(111)은 안전 상태(clean state)의 파일 시스템 정보를 현재의 파일 시스템 정보와 주기적으로 비교하여 악성코드에 대한 침입을 탐지하여 차단한다. 상기 안전 상태는 악성코드에 대한 침입을 받지 않은 상태 또는 시스템이 설치되는 초기 상태를 포함할 수 있다. 즉, 파일 및 레지스트리 검사 모듈(111)은 상기 안전 상태의 파일 시스템 및 레지스트리에 대한 원본 해쉬 값과 상기 현재의 파일 시스템 및 레지스트리에 대한 현재 해쉬 값을 비교하여 동일하지 않는 경우, 상기 현재 해쉬 값을 상기 원본 해쉬 값으로 대체할 수 있다.
파일 시스템(121) 및 레지스트리(122)는 커널 기반의 악성코드를 포함하여 대부분의 악성코드 공격에 있어서 집중 공략의 대상이 된다. 상기 악성코드는 파일 시스템(121)에 접근하여 백도어를 설치하고, 차후에 자동 실행을 위하여 레지스트리(122)에 등록 정보를 저장한다. 따라서, 악성코드 제거 시스템(110)은 커널 기반 악성코드를 커널 수준에서 탐지 및 제거하기 이전에 파일 시스템(121) 및 레지스트리(122)에서 악성코드를 검사한다.
커널 메모리 검사 모듈(112)은 커널 메모리(131)에 적재된 운영 체제 커널 함수 및 변수들이 조작 또는 변경되는 것을 방지하기 위하여 안전한 상태의 커널 메모리 값과 현재 커널 메모리 값을 비교하여 공격 행위를 탐지하여 차단한다. 즉, 커널 메모리 검사 모듈(112)은 도 2에 도시된 것과 같이 인터럽트 호출 게이트 IDTR(Interrupt Descriptor Table Register)(250)와 IDT(Interrupt Descriptor Table)(230), 시스템 호출 서비스 디스크립터 SDT(Service Descriptor Table)(220), 프로세스 및 쓰레드 구조체 ETHREAD(240)를 포함한 커널 메모리(131)의 변경 여부를 탐지하고, 변경되었을 경우 안전한 상태로 복원시킨다.
커널 메모리 검사 모듈(112)은 사용자 입력 또는 사용자의 설정에 의해서 자동으로 커널 메모리(131)에 대한 영역 검사를 수행한다. 커널 메모리 검사 모듈(112)은 안전 상태의 커널 메모리 값을 저장한 후 일방향 해쉬 함수를 이용하여 커널 메모리의 위조 또는 변조 여부를 검사한다. 커널 메모리 검사 모듈(112)은 현재의 커널 메모리 값을 덤프(dump)하고, 상기 덤프한 결과를 미리 저장하고 있는 안전 상태의 커널 메모리 값과 비교한다. 커널 메모리 검사 모듈(112)은 상기 비교 결과가 동일한 경우, 현재 커널 메모리가 안전 상태인 것으로 간주한다. 상기 안전 상태는 윈도우 시스템의 설치 당시 또는 윈도우 시스템의 설치할 때 저장된 원본 커널 메모리 값과 현재 커널 메모리 값이 동일한 경우이다.
또한, 커널 메모리 검사 모듈(112)은 상기 비교 결과가 동일하지 않은 경우, 현재 커널 메모리를 복원하기 위해 상기 현재 커널 메모리 값을 상기 저장된 안전 상태의 커널 메모리 값으로 대체한다. 상기 커널 메모리를 복원하는 작업은 시스템 명령어의 제어 흐름을 변경하는 작업으로 시스템 크래쉬 발생 가능성이 매우 높기 때문에 커널 정보를 정확하고 안전하게 복원하기 위해 임계 영역(critical section)을 피해 운영 체제 수준의 상호 배제(mutual exclusion) 방식을 사용한다.
커널 드라이버 검사 모듈(113)은 커널 기반 악성코드가 커널 드라이버로 제 작되기 때문에 신뢰성 있는 커널 드라이버 목록을 생성하고, 의심되는 커널 드라이버를 탐지하여 삭제 또는 차단한다. 커널 드라이버 검사 모듈(113)은 사용자 모드에서 API를 이용하여 검색 가능한 커널 드라이버 목록과 커널 구조체를 통하여 검색 가능한 드라이버 목록을 비교하여 동일하지 않은 경우, 은폐된 커널 드라이버를 탐지하여 제거한다.
커널 드라이버 검사 모듈(113)은 사용자 입력 또는 사용자 설정에 의해 자동으로 은폐된 드라이버 탐지를 시작하며, Win32 ToolHelp API를 호출하여 실시간으로 제1 커널 드라이버 목록을 검색한다. 또한, 커널 드라이버 검사 모듈(113)은 커널 모드의 PsLoadModulelist를 호출하여 커널 구조체를 통하여 제2 커널 드라이버 목록을 검색한다. 커널 드라이버 검사 모듈(113)은 상기 제1 커널 드라이버 목록과 상기 제2 커널 드라이버 목록을 비교하여 동일하지 않은 경우, 은폐된 커널 드라이버를 탐지하여 제거한다.
커널 드라이버 검사 모듈(113)은 프로그램에 의한 커널 드라이버 적재 요청에 따라 미리 작성된 접근제어목록을 검색하여 상기 적재될 경로가 신뢰구간에 해당하지 않은 경우, 비정상적인 커널 드라이버가 적재되지 못하도록 한다.
커널 드라이버 검사 모듈(113)은 커널 드라이버에 대한 신뢰 구간과 비신뢰 구간에 대한 접근통제목록을 구성한다. 커널 드라이버 검사 모듈(113)은 상기 접근통제목록을 참조하여 적재될 커널 드라이버가 신뢰 구간의 드라이버인 경우, 상기 커널 드라이버를 정상적으로 커널 영역에 적재한다. 커널 드라이버 검사 모듈(113)은 상기 접근통제목록을 참조하여 상기 커널 드라이버가 비신뢰 구간의 드라 이버인 경우, 상기 커널 드라이버가 상기 커널 영역에 적재되지 못하도록 처리한다.
프로세스 검사 모듈(114)은 운영 체제 수준에서 은폐된 프로세스 및 관련 정보를 검색하여 의심되는 악성 프로세스 및 관련 정보를 제거하고, 프로세스 수행 권을 제어 관리한다.
프로세스 검사 모듈(114)은 실시간으로 검색된 제1 프로세스 목록과 커널 구조체를 통해 검색된 제2 프로세스 목록을 비교하여 동일하지 않은 경우, 은폐된 프로세스를 탐지하여 제거한다.
또한, 프로세스 검사 모듈(114)은 ActiveProcessLinks를 통해서 검색된 제3 프로세스 목록과 ETHREAD를 순회하여 검색된 제4 프로세스 목록을 비교하여 동일하지 않은 경우, 은폐된 프로세스를 탐지하여 제거한다.
도 3은 본 발명에 따른 커널 메모리 보호 방법에 있어서, 안전 상태의 커널 메모리 상태 값을 저장하는 과정을 나타내는 도면이다.
도 3을 참조하면, 단계(S310)에서 악성코드 제거 시스템은 사용자의 입력 또는 윈도우 시스템(Windows system)의 최초 설치시 생성되는 IDT 값을 덤프하여 저장한다.
단계(S320)에서 상기 악성코드 제거 시스템은 안전 상태의 SDT 절대값을 저장한다.
단계(S330)에서 상기 악성코드 제거 시스템은 상기 IDT 값과 상기 SDT 절대값을 안전한 커널 메모리 값으로 간주한다. 즉, 상기 악성코드 제거 시스템은 상 기 안전한 커널 메모리 값인 원본 커널 메모리 값에 상기 IDT 값과 상기 SDT 절대값을 포함할 수 있다. 상기 원본 커널 메모리 값은 윈도우 시스템이 최초 설치될 때 함께 제공될 수 있다.
도 4는 본 발명의 일실시예에 따른 커널 메모리 보호 방법의 흐름을 나타내는 도면이다.
도 4를 참조하면, 단계(S410)에서 악성코드 제거 시스템은 도 3에 도시된 것과 같은 절차에 따라 결정된 안전 상태의 상기 원본 커널 메모리 값을 저장한다.
단계(S420)에서 상기 악성코드 제거 시스템은 사용자 입력 또는 요구에 따라 자동으로 도 2에 도시된 것과 같은 커널 메모리 영역을 검사하여 현재의 커널 메모리를 덤프한다.
단계(S430)에서 상기 악성코드 제거 시스템은 상기 덤프된 현재의 커널 메모리 값과 상기 저장된 원본 커널 메모리 값을 비교하여 동일한지를 판단한다. 상기 악성코드 제거 시스템은 상기 현재 커널 메모리 값에 대한 일방향 해쉬 함수의 결과와 상기 원본 커널 메모리 값에 대한 일방향 해쉬 함수의 결과를 비교하여 동일한지를 판단할 수 있다.
상기 현재의 커널 메모리 값과 상기 원본 커널 메모리 값이 동일하지 않는 경우, 단계(S440)에서 상기 악성코드 제거 시스템은 상기 현재의 커널 메모리 값을 상기 원본 커널 메모리 값으로 대체한다. 상기 악성코드 제거 시스템은 상기 현재 커널 메모리 값을 상호 배제(mutual exclusion) 방식에 의해 상기 원본 커널 메모리 값인 상기 IDT 값과 상기 SDT 절대값으로 대체할 수 있다.
상기 현재의 커널 메모리 값과 상기 원본 커널 메모리 값이 동일한 경우 상기 악성코드 제거 시스템은 현재의 커널 메모리가 안전 상태인 것으로 간주하여 상기 현재의 커널 메모리 값으로 안전 상태의 메모리 값을 갱신할 수도 있다.
도 5는 본 발명의 일실시예에 따른 커널 메모리 보호 장치의 구성을 나타내는 도면으로서, 커널 메모리 보호 장치(500)는 저장부(510), 덤프부(520), 비교부(530), 및 대체부(540)를 포함한다.
도 5를 참조하면, 저장부(510)는 안전 상태의 원본 커널 메모리 값을 저장한다. 저장부(510)는 윈도우 시스템의 최초 설치시 생성되는 IDT 값을 덤프하여 저장하고, 상기 안전 상태의 SDT 절대값을 저장한다. 상기 원본 커널 메모리 값은 상기 IDT 값과 상기 SDT 절대값을 포함할 수 있다.
덤프부(520)는 사용자의 입력 또는 설정에 따라 안전 상태의 커널 메모리 또는 현재의 커널 메모리를 덤프한다.
비교부(530)는 상기 현재의 커널 메모리 값과 상기 원본 커널 메모리 값을 비교한다.
대체부(540)는 비교부(530)의 비교 결과가 상기 원본 커널 메모리 값과 상기 현재 커널 메모리 값이 일치하지 않는 경우, 즉 상기 커널 메모리 영역에 대한 공격을 탐지한 경우 상기 현재 커널 메모리 값을 상기 원본 커널 메모리 값으로 대체한다. 또한, 대체부(540)는 상기 현재의 커널 메모리 값과 상기 원본 커널 메모리 값이 일치하는 경우 상기 현재의 커널 메모리를 덤프한 결과를 안전한 상태로 간주하고, 안전한 커널 메모리 값을 상기 현재의 커널 메모리 값으로 갱신할 수도 있다.
또한 본 발명의 실시예들은 다양한 컴퓨터로 구현되는 동작을 수행하기 위한 프로그램 명령을 포함하는 컴퓨터 판독 가능 매체를 포함한다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 상기 매체는 프로그램 명령, 데이터 구조 등을 지정하는 신호를 전송하는 반송파를 포함하는 광 또는 금속선, 도파관 등의 전송 매체일 수도 있다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다.
이상과 같이 본 발명은 비록 한정된 실시예와 도면에 의해 설명되었으나, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 이는 본 발명이 속하는 분야에서 통상의 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다. 따라서, 본 발명 사상은 아래에 기재된 특허청구범위에 의해서만 파악되어야 하고, 이의 균등 또는 등가적 변형 모두는 본 발명 사상의 범주에 속한다고 할 것이다.
본 발명에 따르면, 커널 메모리에 대한 위조 또는 변조를 탐지하여 현재 메모리 값을 안전 상태의 원본 메모리 값으로 복원함으로써 커널 메모리 영역을 보호할 수 있다.
또한 본 발명에 따르면, 커널 메모리에 대한 악성코드를 탐지하여 제거함으로써 시스템에서 수행 가능한 악성행위를 사전에 방지할 수 있기 때문에 클라이언트/서버 환경에서 서버 및 클라이언트 시스템에 설치되어 서버 및 인트라넷, 클라이언트 운영 환경의 안전성을 향상시킬 수 있다.

Claims (7)

  1. 커널 메모리를 보호하는 방법에 있어서,
    소정의 안전 상태의 원본 커널 메모리 값을 저장하는 단계;
    사용자의 입력 또는 설정에 따라 현재의 커널 메모리를 덤프(dump)하는 단계;
    상기 덤프된 현재의 커널 메모리의 현재 커널 메모리 값과 상기 원본 커널 메모리 값을 비교하는 단계; 및
    상기 비교 결과 상기 원본 커널 메모리 값과 상기 현재 커널 메모리 값이 일치하지 않는 경우, 상기 현재 커널 메모리 값을 상기 원본 커널 메모리 값으로 대체하는 단계
    를 포함하는 것을 특징으로 하는 커널 메모리 보호 방법.
  2. 제1항에 있어서,
    상기 안전 상태의 원본 커널 메모리 값을 저장하는 상기 단계는,
    윈도우 시스템(windows system)의 최초 설치시 생성되는 IDT(Interrupt Descriptor Table) 값을 덤프하여 저장하는 단계; 및
    상기 안전 상태의 SDT(Service Descriptor Table) 절대값을 저장하는 단계
    를 포함하고,
    상기 원본 커널 메모리 값은 상기 IDT 값과 상기 SDT 절대값을 포함하는 것 을 특징으로 하는 커널 메모리 보호 방법.
  3. 제2항에 있어서,
    상기 현재 커널 메모리 값을 상기 원본 커널 메모리 값으로 대체하는 상기 단계는,
    상기 현재 커널 메모리 값을 상호 배제(mutual exclusion) 방식에 따라 상기 IDT 값 및 상기 SDT 절대값으로 대체하는 것을 특징으로 하는 커널 메모리 보호 방법.
  4. 제1항에 있어서,
    상기 덤프된 현재의 커널 메모리의 현재 커널 메모리 값과 상기 원본 커널 메모리 값을 비교하는 상기 단계는,
    상기 현재 커널 메모리 값에 대한 일방향 해쉬 함수의 결과와 상기 원본 커널 메모리 값에 대한 일방향 해쉬 함수의 결과를 비교하는 것을 특징으로 하는 커널 메모리 보호 방법.
  5. 제1항 내지 제4항 중 어느 한 항의 방법을 컴퓨터에서 실행하기 위한 프로그램을 기록하는 컴퓨터 판독 가능한 기록매체.
  6. 커널 메모리를 보호하는 장치에 있어서,
    소정의 안전 상태의 원본 커널 메모리 값을 저장하는 저장부;
    사용자의 입력 또는 설정에 따라 현재의 커널 메모리를 덤프(dump)하는 덤프부;
    상기 덤프된 현재의 커널 메모리의 현재 커널 메모리 값과 상기 원본 커널 메모리 값을 비교하는 비교부; 및
    상기 비교 결과 상기 원본 커널 메모리 값과 상기 현재 커널 메모리 값이 일치하지 않는 경우, 상기 현재 커널 메모리 값을 상기 원본 커널 메모리 값으로 대체하는 대체부
    를 포함하는 것을 특징으로 하는 커널 메모리 보호 장치.
  7. 제6항에 있어서,
    상기 저장부는 윈도우 시스템(windows system)의 최초 설치시 생성되는 IDT(Interrupt Descriptor Table) 값 및 상기 안전 상태의 SDT(Service Descriptor Table) 절대값을 저장하며,
    상기 원본 커널 메모리 값은 상기 IDT 값과 상기 SDT 절대값을 포함하는 것을 특징으로 하는 커널 메모리 보호 장치.
KR1020050073907A 2005-08-11 2005-08-11 커널 메모리를 보호하는 방법 및 그 장치 KR100745640B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020050073907A KR100745640B1 (ko) 2005-08-11 2005-08-11 커널 메모리를 보호하는 방법 및 그 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020050073907A KR100745640B1 (ko) 2005-08-11 2005-08-11 커널 메모리를 보호하는 방법 및 그 장치

Publications (2)

Publication Number Publication Date
KR20070019191A true KR20070019191A (ko) 2007-02-15
KR100745640B1 KR100745640B1 (ko) 2007-08-02

Family

ID=41631101

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020050073907A KR100745640B1 (ko) 2005-08-11 2005-08-11 커널 메모리를 보호하는 방법 및 그 장치

Country Status (1)

Country Link
KR (1) KR100745640B1 (ko)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100938672B1 (ko) * 2007-11-20 2010-01-25 한국전자통신연구원 악성 코드에 의해 삽입된 동적 연결 라이브러리 검출 장치 및 방법
US20120246723A1 (en) * 2009-09-24 2012-09-27 Jae Hong Lee Windows kernel alteration searching method
KR101658641B1 (ko) 2015-06-12 2016-09-22 서울대학교산학협력단 하드웨어 기반의 커널 코드 삽입 공격 탐지 장치 및 그 방법
KR101861952B1 (ko) * 2017-01-25 2018-05-28 한양대학교 에리카산학협력단 소프트웨어 브레이크 포인트를 무력화시키기 위한 안티 디버깅 방법 및 장치
WO2024027472A1 (zh) * 2022-08-03 2024-02-08 华为技术有限公司 一种确定内核状态的方法和相关设备

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102416501B1 (ko) 2017-09-20 2022-07-05 삼성전자주식회사 전자 장치 및 그의 제어 방법
CN109947673B (zh) * 2019-03-26 2021-10-15 北京经纬恒润科技股份有限公司 一种内存保护方法、保护装置及单片机

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100456512B1 (ko) * 2002-05-06 2004-11-10 한국전자통신연구원 커널 백도어 탐지 시스템, 이를 이용한 커널 백도어 탐지방법 및 커널 데이터 복구 방법

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100938672B1 (ko) * 2007-11-20 2010-01-25 한국전자통신연구원 악성 코드에 의해 삽입된 동적 연결 라이브러리 검출 장치 및 방법
US20120246723A1 (en) * 2009-09-24 2012-09-27 Jae Hong Lee Windows kernel alteration searching method
KR101658641B1 (ko) 2015-06-12 2016-09-22 서울대학교산학협력단 하드웨어 기반의 커널 코드 삽입 공격 탐지 장치 및 그 방법
KR101861952B1 (ko) * 2017-01-25 2018-05-28 한양대학교 에리카산학협력단 소프트웨어 브레이크 포인트를 무력화시키기 위한 안티 디버깅 방법 및 장치
WO2024027472A1 (zh) * 2022-08-03 2024-02-08 华为技术有限公司 一种确定内核状态的方法和相关设备

Also Published As

Publication number Publication date
KR100745640B1 (ko) 2007-08-02

Similar Documents

Publication Publication Date Title
KR102307534B1 (ko) 다수 소프트웨어 개체들에 걸쳐서 악성 행동을 트래킹하기 위한 시스템들 및 방법들
JP5326062B1 (ja) 非実行ファイル検査装置及び方法
EP3039608B1 (en) Hardware and software execution profiling
CN106991324B (zh) 一种基于内存保护类型监控的恶意代码跟踪识别方法
US8261344B2 (en) Method and system for classification of software using characteristics and combinations of such characteristics
AU2006210698B2 (en) Intrusion detection for computer programs
JP5265061B1 (ja) 悪意のあるファイル検査装置及び方法
US20140053267A1 (en) Method for identifying malicious executables
KR100745640B1 (ko) 커널 메모리를 보호하는 방법 및 그 장치
KR20140033349A (ko) 가상 머신 모니터 기반 안티 악성 소프트웨어 보안 시스템 및 방법
CN107330328B (zh) 防御病毒攻击的方法、装置及服务器
KR100745639B1 (ko) 파일 시스템 및 레지스트리를 보호하는 방법 및 그 장치
Ramilli et al. Multi-stage delivery of malware
JP2019169121A (ja) ウィルス対策レコードを作成するシステムと方法
KR100666562B1 (ko) 커널 드라이버 및 프로세스 보호 방법
JP5326063B1 (ja) デバッグイベントを用いた悪意のあるシェルコードの検知装置及び方法
KR101311367B1 (ko) 메모리 보호기능 우회 공격 진단 장치 및 방법
Ohm et al. You Can Run But You Can't Hide: Runtime Protection Against Malicious Package Updates For Node. js
WO2020007249A1 (zh) 一种操作系统安全主动防御方法及操作系统
CN116910768B (zh) 一种防御攻击方法、系统、装置及介质
KR20090080469A (ko) 프로그램의 설치 방지 방법 및 장치
CN116415231A (zh) 一种Linux恶意代码分析沙箱隐藏与保护方法及系统
He et al. Anti-attack Model of Application in Storing State
CN113779561A (zh) 内核漏洞处理方法、装置、存储介质及电子设备
Goel A comprehensive Analysis of Kernel Exploits for the Linux Operating System

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
G170 Publication of correction
LAPS Lapse due to unpaid annual fee