KR100745639B1 - 파일 시스템 및 레지스트리를 보호하는 방법 및 그 장치 - Google Patents

파일 시스템 및 레지스트리를 보호하는 방법 및 그 장치 Download PDF

Info

Publication number
KR100745639B1
KR100745639B1 KR1020050073905A KR20050073905A KR100745639B1 KR 100745639 B1 KR100745639 B1 KR 100745639B1 KR 1020050073905 A KR1020050073905 A KR 1020050073905A KR 20050073905 A KR20050073905 A KR 20050073905A KR 100745639 B1 KR100745639 B1 KR 100745639B1
Authority
KR
South Korea
Prior art keywords
registry
value
file system
database
hash value
Prior art date
Application number
KR1020050073905A
Other languages
English (en)
Other versions
KR20070019190A (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 KR1020050073905A priority Critical patent/KR100745639B1/ko
Publication of KR20070019190A publication Critical patent/KR20070019190A/ko
Application granted granted Critical
Publication of KR100745639B1 publication Critical patent/KR100745639B1/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
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/1734Details of monitoring file system events, e.g. by the use of hooks, filter drivers, logs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database

Landscapes

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

Abstract

본 발명은 악성코드를 탐지하여 제거하는 파일 시스템 및 레지스트리 보호 방법 및 그 장치에 관한 것이다. 본 발명은 응용 수준에서 공격 시그너처 정보를 주기적으로 수집하는 단계와, 상기 수집된 공격 시그너처 정보를 데이터베이스에 기록하는 단계와, 상기 파일 시스템을 검색하는 단계와, (1) 상기 데이터베이스에 기록된 값과 동일한 값이 상기 파일 시스템에 대한 검색 결과에 포함된 경우, 악성코드에 의한 공격을 탐지하여 해당 정보를 제거하는 단계를 포함하고, (2) 상기 데이터베이스에 기록된 값과 동일한 값이 상기 파일 시스템에 대한 검색 결과에 포함되지 않은 경우, 상기 레지스트리를 검색하는 단계 및 상기 데이터베이스에 기록된 값과 동일한 값이 상기 레지스트리에 대한 검색 결과에 포함된 경우, 악성코드에 의한 공격을 탐지하여 해당 정보를 제거하는 단계를 포함하는 것을 특징으로 하는 파일 시스템 및 레지스트리 보호 방법을 제공한다. 본 발명에 의하면, 파일 시스템 및 레지스트리에 대한 악성코드를 탐지하여 제거함으로써 시스템에서 수행 가능한 악성행위를 사전에 방지할 수 있기 때문에 클라이언트/서버 환경에서 서버 및 클라이언트 시스템에 설치되어 서버 및 인트라넷, 클라이언트 운영 환경의 안정성을 향상시킬 수 있다.
파일 시스템, 레지스트리, 악성코드, 탐지, 제거, 복원

Description

파일 시스템 및 레지스트리를 보호하는 방법 및 그 장치{METHOD FOR PROTECTING FILE SYSTEM AND REGISTRY AND APPARATUS THEREOF}
도 1은 본 발명에 따른 윈도우 커널 기반의 악성코드를 제거하는 시스템의 구성을 나타내는 도면이다.
도 2는 본 발명에 따른 파일 시스템 및 레지스트리 보호 방법에 있어서, 파일 시스템 및 레지스트리의 악성코드를 검색하는 과정을 나타내는 도면이다.
도 3은 본 발명의 일실시예에 따른 파일 시스템 및 레지스트리 보호 방법의 흐름을 나타내는 도면이다.
도 4는 본 발명의 일실시예에 따른 파일 시스템 및 레지스트리 보호 장치를 나타내는 도면이다.
<도면의 주요 부분에 대한 부호의 설명>
110: 악성코드 제거 시스템
111: 파일 및 레지스트리 검사 모듈 112: 커널 메모리 검사 모듈
113: 커널 드라이버 검사 모듈 114: 프로세스 검사 모듈
120: 사용자 모드
121: 파일 시스템 122: 레지스트리
130: 커널 모드
131: 커널 메모리 132: 커널 드라이버
400: 파일 시스템 및 레지스트리 보호 장치
410: 수집부 420: 데이터베이스
430: 검색부 440: 비교부
450: 처리부 460: 저장부
본 발명은 파일 시스템 및 레지스트리를 보호하는 방법 및 그 장치에 관한 것으로, 더욱 상세하게는 악성코드를 탐지하여 제거하는 파일 시스템 및 레지스트리 보호 방법 및 그 장치에 관한 것이다.
통상적으로 악성코드(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퍼센트가 윈도우에서 발생하 였다.
이처럼 윈도우 커널 수준에서 빈번하게 발생되는 악성코드를 탐지하고 제거하는 방법이 절실히 요청되어 오고 있다.
본 발명은 상기와 같은 종래기술을 개선하기 위해 안출된 것으로서, 파일 시스템 및 레지스트리를 검사하여 커널 수준에서 작성된 악성코드를 탐지하여 제거하는 방법을 제공하는 것을 목적으로 한다.
상기의 목적을 이루고 종래기술의 문제점을 해결하기 위하여, 본 발명은 응용 수준에서 공격 시그너처 정보를 주기적으로 수집하는 단계와, 상기 수집된 공격 시그너처 정보를 데이터베이스에 기록하는 단계와, 상기 파일 시스템을 검색하는 단계와, (1) 상기 데이터베이스에 기록된 값과 동일한 값이 상기 파일 시스템에 대한 검색 결과에 포함된 경우, 악성코드에 의한 공격을 탐지하여 해당 정보를 제거하는 단계를 포함하고, (2) 상기 데이터베이스에 기록된 값과 동일한 값이 상기 파일 시스템에 대한 검색 결과에 포함되지 않은 경우, 상기 레지스트리를 검색하는 단계 및 상기 데이터베이스에 기록된 값과 동일한 값이 상기 레지스트리에 대한 검색 결과에 포함된 경우, 악성코드에 의한 공격을 탐지하여 해당 정보를 제거하는 단계를 포함하는 것을 특징으로 하는 파일 시스템 및 레지스트리 보호 방법을 제공한다.
본 발명의 다른 일측에 따르는 파일 시스템 및 레지스트리를 보호하는 장치 는 공격 시그너처를 주기적으로 수집하는 수집부와, 상기 수집된 공격 시그너처 정보를 기록하는 데이터베이스와, 상기 파일 시스템 또는 상기 레지스트리를 검색하는 검색부와, 상기 데이터베이스에 기록된 값과 상기 파일 시스템 또는 상기 레지스트리를 검색한 결과 값을 비교하는 비교부, 및 상기 데이터베이스에 기록된 값과 동일한 값이 상기 파일 시스템에 대한 검색 결과에 포함된 경우 또는 상기 데이터베이스에 기록된 값과 동일한 값이 상기 레지스트리에 대한 검색 결과에 포함된 경우, 악성코드를 탐지하여 제거하는 처리부를 포함하는 것을 특징으로 한다.
이하에서는 첨부된 도면들을 참조하여 본 발명에 따른 파일 시스템 및 레지스트리 보호 방법 및 그 장치를 상세히 설명한다.
도 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)은 인터럽트 호출 게이트 IDTR(Interrupt Descriptor Table Register)와 IDT(Interrupt Descriptor Table), 시스템 호출 서비스 디스크립터 SDT(Service Descriptor Table), 프로세스 및 쓰레드 구조체 ETHREAD를 포함한 커널 메모리(131)의 변경 여부를 탐지하고, 변경되었을 경우 안전한 상태로 복원시킨다.
커널 메모리 검사 모듈(112)은 사용자 입력 또는 사용자의 설정에 의해서 자동으로 커널 메모리(131)에 대한 영역 검사를 수행한다. 커널 메모리 검사 모듈(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 프로세스 목록을 비교하여 동일하지 않은 경우, 은폐된 프로세스를 탐지하여 제거한다.
도 2는 본 발명의 일실시예에 따른 공격 시그너처를 기반으로 파일 시스템 및 레지스트리의 악성코드를 검색하는 과정을 나타내는 도면이다.
도 2를 참조하면, 단계(210)에서 악성코드 제거 시스템은 응용 수준에서 공격 시그너처 정보를 주기적으로 수집한다.
단계(220)에서 상기 악성코드 제거 시스템은 상기 수집된 공격 시그너처 정보를 데이터베이스에 기록한다. 상기 공격 시그너처 정보는 파일 경로, 파일 이름, 레지스트리 이름, 레지스트리 버전 및 레지스트리 값 중 적어도 하나를 포함할 수 있다.
단계(230)에서 상기 악성코드 제거 시스템은 사용자의 입력 또는 사용자의 설정에 따라 파일 시스템을 검색한다.
단계(240)에서 상기 악성코드 제거 시스템은 상기 파일 시스템을 검색한 결과가 상기 데이터베이스에 기록된 공격 시그너처 정보와 일치하는지를 판단한다. 즉, 상기 악성코드 제거 시스템은 상기 데이터베이스에 기록된 값과 동일한 값이 상기 파일 시스템을 검색한 결과에 포함되는지를 판단할 수 있다.
상기 파일 시스템을 검색한 결과가 상기 데이터베이스에 기록된 공격 시그너처 정보와 일치하는 경우, 단계(241)에서 상기 악성코드 제거 시스템은 상기 일치하는 공격 시그너처 정보에 의한 공격으로 탐지한다. 즉, 상기 악성코드 제거 시스템은 상기 데이터베이스에 기록된 값과 동일한 값이 상기 파일 시스템을 검색한 결과에 포함되는 경우, 이를 공격 탐지로 간주한다.
단계(242)에서 상기 악성코드 제거 시스템은 상기 공격 탐지에 따라 해당되는 정보를 제거한 후 상기 파일 시스템에 대한 검색을 계속 진행한다.
상기 파일 시스템을 검색한 결과가 상기 데이터베이스에 기록된 공격 시그너처 정보와 일치하는 않는 경우, 단계(250)에서 상기 악성코드 제거 시스템은 레지스트리를 검색한다. 즉, 상기 악성코드 제거 시스템은 상기 데이터베이스에 기록된 값과 동일한 값이 상기 파일 시스템에 대한 검색 결과에 포함되지 않은 경우, 상기 파일 시스템에 대한 검색을 완료한 후 상기 레지스트리에 대한 검색을 다시 수행한다.
단계(260)에서 상기 악성코드 제거 시스템은 상기 레지스트리를 검색한 결과가 상기 데이터베이스에 기록된 공격 시그너처 정보와 일치하는지를 판단한다. 즉, 상기 악성코드 제거 시스템은 상기 데이터베이스에 기록된 값과 동일한 값이 상기 파일 시스템에 대한 검색 결과에 포함되는지를 판단한다.
상기 레지스트리를 검색한 결과가 상기 데이터베이스에 기록된 공격 시그너처 정보와 일치하는 경우, 단계(261)에서 상기 악성코드 제거 시스템은 상기 일치 하는 공격 시그너처에 의한 공격을 탐지한다. 즉, 상기 악성코드 제거 시스템은 상기 데이터베이스에 기록된 값과 동일한 값이 상기 레지스트리를 검색한 결과에 포함되는 경우, 이를 공격 탐지로 간주한다.
단계(262)에서 상기 악성코드 제거 시스템은 상기 탐지된 공격에 따라 해당되는 정보를 제거한 후 상기 레지스트리에 대한 검색을 다시 수행한다.
상기 레지스트리를 검색한 결과가 상기 데이터베이스에 기록된 공격 시그너처 정보와 일치하지 않는 경우, 상기 악성코드 제거 시스템은 상기 레지스트리에 대한 악성코드가 존재하지 않는 것으로 간주한다. 즉, 상기 악성코드 제거 시스템은 상기 데이터베이스에 기록된 값과 동일한 값이 상기 레지스트리를 검색한 결과에 포함되지 않는 경우, 상기 레지스트리에 대한 악성코드가 존재하지 않으므로 상기 레지스트리에 대한 검색을 종료한다.
도 3은 본 발명의 일실시예에 따른 파일 시스템 및 레지스트리의 무결성을 검사하는 과정을 나타내는 도면이다.
도 3을 참조하면, 단계(310)에서 악성코드 제거 시스템은 도 2에 도시된 것과 같은 과정을 통해 공격 시그너처에 의한 악성코드 탐지를 수행한다.
단계(320)에서 상기 악성코드 제거 시스템은 상기 악성코드 탐지를 수행한 결과에 따라 상기 파일 시스템 및 상기 레지스트리에 대해 안전 상태인지를 판단한다.
상기 파일 시스템 및 상기 레지스트리에 대해 안전 상태가 아닌 경우, 단계(325)에서 상기 파일 시스템 및 상기 레지스트리에 대한 악성코드를 제거한다.
상기 파일 시스템 및 상기 레지스트리에 대해 안전 상태인 경우, 단계(330)에서 상기 악성코드 제거 시스템은 상기 안전 상태의 파일 시스템 및 레지스트리를 덤프한다.
단계(340)에서 상기 악성코드 제거 시스템은 상기 덤프된 안전 상태의 파일 시스템 및 레지스트리를 일방향 해쉬 함수(hash function)에 입력하고, 상기 해쉬 함수로부터 출력된 결과인 해쉬 값을 상기 안전 상태의 파일 시스템 및 레지스트리에 대한 원본 해쉬 값으로 저장한다. 상기 악성코드 제거 시스템은 상기 데이터베이스에 기록된 값과 동일한 값이 상기 레지스트리에 대한 검색 결과에 포함되지 않은 경우 안전 상태로 간주하고, 상기 안전 상태의 파일 시스템 및 상기 레지스트리에 대한 해쉬 함수를 적용하여 출력된 상기 원본 해쉬 값을 저장할 수 있다.
단계(350)에서 상기 악성코드 제거 시스템은 현재의 파일 시스템 및 레지스트리를 덤프한다.
단계(360)에서 상기 악성코드 제거 시스템은 상기 덤프된 현재의 파일 시스템 및 상기 레지스트리에 대한 해쉬 함수를 적용하여 출력된 현재 해쉬 값을 저장한다.
단계(370)에서 상기 악성코드 제거 시스템은 상기 원본 해쉬 값과 상기 현재 해쉬 값이 동일한지를 판단한다. 즉, 상기 악성코드 제거 시스템은 상기 원본 해쉬 값과 상기 현재 해쉬 값을 주기적으로 비교한 결과 상기 원본 해쉬 값과 상기 현재 해쉬 값이 일치하는지를 판단한다.
상기 원본 해쉬 값과 상기 현재 해쉬 값이 동일하지 않는 경우, 단계(380) 에서 상기 악성코드 제거 시스템은 현재 해쉬 값을 상기 원본 해쉬 값으로 대체한다.
상기 원본 해쉬 값과 상기 현재 해쉬 값이 동일한 경우, 상기 악성코드 제거 시스템은 상기 파일 시스템 및 상기 레지스트리에 대한 위조 또는 변조가 없는 것으로 간주하여 시스템 상태 검사를 종료한다.
도 4는 본 발명의 일실시예에 따른 파일 시스템 및 레지스트리 보호 장치를 나타내는 도면으로서, 파일 시스템 및 레지스트리 보호 장치(400)는 수집부(410), 데이터베이스(420), 검색부(430), 비교부(440), 처리부(450), 및 저장부(460)를 포함한다.
도 4를 참조하면, 수집부(410)는 파일 시스템 및 레지스트리에 대한 공격 시그너처 정보를 주기적으로 수집한다. 상기 공격 시그너처 정보는 파일 경로, 파일 이름, 레지스트리 이름, 레지스트리 버전, 및 레지스트리 값 중 적어도 하나를 포함할 수 있다.
데이터베이스(420)는 상기 수집된 공격 시그너처 정보를 기록한다.
검색부(430)는 상기 파일 시스템 및 상기 레지스트리를 검색한다.
비교부(440)는 데이터베이스(420)에 기록된 값과 상기 파일 시스템 및 상기 레지스트리를 검색한 결과 값을 비교한다. 또한, 비교부(440)는 안전 상태의 파일 시스템 및 레지스트리에 대한 원본 해쉬 값과 현재 상태의 파일 시스템 및 레지스트리에 대한 현재 해쉬 값을 비교한다.
처리부(450)는 비교부(440)의 비교 결과에 따라 데이터베이스(420)에 기록 된 값과 동일한 값이 상기 파일 시스템에 대한 검색 결과에 포함된 경우 또는 데이터베이스(420)에 기록된 값과 동일한 값이 상기 레지스트리에 대한 검색 결과에 포함된 경우 악성코드를 탐지하여 제거한다. 또한, 처리부(450)는 비교부(440)의 비교 결과에 따라 상기 원본 해쉬 값과 상기 현재 해쉬 값이 일치하지 않는 경우 상기 현재 해쉬 값을 상기 원본 해쉬 값으로 대체한다.
저장부(460)는 데이터베이스(420)에 기록된 값과 동일한 값이 상기 레지스트리에 대한 검색 결과가 포함되지 않는 경우, 상기 파일 시스템 및 상기 레지스트리에 해쉬 함수를 적용하여 출력된 상기 원본 해쉬 값을 저장한다. 또한, 저장부(460)는 상기 현재 파일 시스템 및 레지스트리에 해쉬 함수를 적용하여 출력된 상기 현재 해쉬 값을 저장한다.
또한 본 발명의 실시예들은 다양한 컴퓨터로 구현되는 동작을 수행하기 위한 프로그램 명령을 포함하는 컴퓨터 판독 가능 매체를 포함한다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 상기 매체는 프로그램 명령, 데이터 구조 등을 지정하는 신호를 전송하는 반송파를 포함하는 광 또는 금속선, 도파관 등의 전송 매체일 수도 있다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다.
이상과 같이 본 발명은 비록 한정된 실시예와 도면에 의해 설명되었으나, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 이는 본 발명이 속하는 분야에서 통상의 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다. 따라서, 본 발명 사상은 아래에 기재된 특허청구범위에 의해서만 파악되어야 하고, 이의 균등 또는 등가적 변형 모두는 본 발명 사상의 범주에 속한다고 할 것이다.
본 발명에 따르면, 공격 시그너처 정보를 수집하여 파일 시스템 및 레지스트리에 대한 악성코드의 공격을 탐지함으로써 알려지지 않은 악성코드를 손쉽게 제거할 수 있다.
또한 본 발명에 따르면, 파일 시스템 및 레지스트리에 대한 악성코드를 탐지하여 제거함으로써 시스템에서 수행 가능한 악성행위를 사전에 방지할 수 있기 때문에 클라이언트/서버 환경에서 서버 및 클라이언트 시스템에 설치되어 서버 및 인트라넷, 클라이언트 운영 환경의 안전성을 향상시킬 수 있다.

Claims (6)

  1. 삭제
  2. 파일 시스템 및 레지스트리를 보호하는 방법에 있어서,
    응용 수준의 공격 시그너처 정보를 수집하고 데이터베이스에 기록하는 단계;
    상기 파일 시스템을 검색하는 단계;
    상기 데이터베이스에 기록된 값과 동일한 값이 상기 파일 시스템에 대한 검색 결과에 포함된 경우, 악성코드에 의한 공격을 탐지하여 해당 정보를 제거하는 단계를 포함하고,
    상기 데이터베이스에 기록된 값과 동일한 값이 상기 파일 시스템에 대한 검색 결과에 포함되지 않은 경우,
    (1) 상기 레지스트리를 검색하여 상기 데이터베이스에 기록된 값과 동일한 값이 상기 레지스트리에 대한 검색 결과에 포함된 경우, 악성코드에 의한 공격을 탐지하여 해당 정보를 제거하는 단계를 포함하고,
    (2) 상기 레지스트리를 검색하여 상기 데이터베이스에 기록된 값과 동일한 값이 상기 레지스트리에 대한 검색 결과에 포함되지 않은 경우, 상기 파일 시스템 및 상기 레지스트리에 해쉬 함수를 적용하여 출력된 원본 해쉬 값을 저장하는 단계와, 현재 파일 시스템 및 레지스트리에 대한 현재 해쉬 값을 상기 원본 해쉬 값과 주기적으로 비교하는 단계와, 상기 비교 결과 상기 원본 해쉬 값과 상기 현재 해쉬 값이 일치하지 않는 경우 상기 현재 해쉬 값을 상기 원본 해쉬 값으로 대체하는 단계를 포함하는 것을 특징으로 하는 파일 시스템 및 레지스트리 보호 방법.
  3. 제2항에 있어서,
    상기 공격 시그너처 정보는 파일 경로, 파일 이름, 레지스트리 이름, 레지스트리 버전 및 레지스트리 값 중 적어도 하나를 포함하는 것을 특징으로 하는 파일 시스템 및 레지스트리 보호 방법.
  4. 제2항 또는 제3항의 방법을 컴퓨터에서 실행하기 위한 프로그램을 기록하는 컴퓨터 판독 가능한 기록매체.
  5. 삭제
  6. 파일 시스템 및 레지스트리를 보호하는 장치에 있어서,
    공격 시그너처를 주기적으로 수집하는 수집부;
    상기 수집된 공격 시그너처 정보를 기록하는 데이터베이스;
    상기 파일 시스템 또는 상기 레지스트리를 검색하는 검색부;
    상기 데이터베이스에 기록된 값과 상기 파일 시스템 또는 상기 레지스트리를 검색한 결과 값을 비교하는 비교부;
    상기 데이터베이스에 기록된 값과 동일한 값이 상기 파일 시스템에 대한 검색 결과에 포함된 경우 또는 상기 데이터베이스에 기록된 값과 동일한 값이 상기 레지스트리에 대한 검색 결과에 포함된 경우, 악성코드를 탐지하여 제거하는 처리부; 및
    상기 데이터베이스에 기록된 값과 동일한 값이 상기 레지스트리에 대한 검색 결과에 포함되지 않은 경우, 상기 파일 시스템 및 상기 레지스트리에 해쉬 함수를 적용하여 출력된 원본 해쉬 값을 저장하고, 현재 파일 시스템 및 레지스트리에 대한 현재 해쉬 값을 저장하는 저장부를 포함하고,
    상기 처리부는 상기 원본 해쉬 값과 현재 파일 시스템 및 레지스트리에 대한 현재 해쉬 값을 비교하여 일치하지 않는 경우, 상기 현재 해쉬 값을 상기 원본 해쉬 값으로 대체하는 것을 특징으로 하는 파일 시스템 및 레지스트리 보호 장치.
KR1020050073905A 2005-08-11 2005-08-11 파일 시스템 및 레지스트리를 보호하는 방법 및 그 장치 KR100745639B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020050073905A KR100745639B1 (ko) 2005-08-11 2005-08-11 파일 시스템 및 레지스트리를 보호하는 방법 및 그 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020050073905A KR100745639B1 (ko) 2005-08-11 2005-08-11 파일 시스템 및 레지스트리를 보호하는 방법 및 그 장치

Publications (2)

Publication Number Publication Date
KR20070019190A KR20070019190A (ko) 2007-02-15
KR100745639B1 true KR100745639B1 (ko) 2007-08-02

Family

ID=41631100

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020050073905A KR100745639B1 (ko) 2005-08-11 2005-08-11 파일 시스템 및 레지스트리를 보호하는 방법 및 그 장치

Country Status (1)

Country Link
KR (1) KR100745639B1 (ko)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100870140B1 (ko) * 2006-11-13 2008-11-24 한국전자통신연구원 악성 코드가 숨겨진 파일 탐지 장치 및 방법
US8359647B1 (en) * 2007-07-19 2013-01-22 Salesforce.Com, Inc. System, method and computer program product for rendering data of an on-demand database service safe
KR100915202B1 (ko) * 2007-11-27 2009-09-02 유디코스모 주식회사 악성코드 수집 방법 및 장치
KR100977179B1 (ko) * 2008-03-19 2010-08-23 엔에이치엔비즈니스플랫폼 주식회사 악성코드 탐지 방법 및 시스템
KR101039551B1 (ko) * 2008-10-15 2011-06-09 (주)씨디네트웍스 은닉 프로세스 모니터링 방법 및 시스템
KR101210258B1 (ko) * 2010-05-25 2012-12-10 주식회사 잉카인터넷 온라인 게임에서 핵 툴 사용 정보 표시방법
KR101861952B1 (ko) * 2017-01-25 2018-05-28 한양대학교 에리카산학협력단 소프트웨어 브레이크 포인트를 무력화시키기 위한 안티 디버깅 방법 및 장치

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004533041A (ja) * 2001-03-30 2004-10-28 コンピュータ アソシエイツ シンク,インコーポレイテッド 悪性コンピュータプログラムにより損傷されたコンピュータシステムを回復するシステム及び方法
US6873988B2 (en) 2001-07-06 2005-03-29 Check Point Software Technologies, Inc. System and methods providing anti-virus cooperative enforcement

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004533041A (ja) * 2001-03-30 2004-10-28 コンピュータ アソシエイツ シンク,インコーポレイテッド 悪性コンピュータプログラムにより損傷されたコンピュータシステムを回復するシステム及び方法
US6873988B2 (en) 2001-07-06 2005-03-29 Check Point Software Technologies, Inc. System and methods providing anti-virus cooperative enforcement

Also Published As

Publication number Publication date
KR20070019190A (ko) 2007-02-15

Similar Documents

Publication Publication Date Title
US10984097B2 (en) Methods and apparatus for control and detection of malicious content using a sandbox environment
McIntosh et al. Ransomware mitigation in the modern era: A comprehensive review, research challenges, and future directions
KR102307534B1 (ko) 다수 소프트웨어 개체들에 걸쳐서 악성 행동을 트래킹하기 위한 시스템들 및 방법들
JP5326062B1 (ja) 非実行ファイル検査装置及び方法
EP3039608B1 (en) Hardware and software execution profiling
US8261344B2 (en) Method and system for classification of software using characteristics and combinations of such characteristics
US7934261B1 (en) On-demand cleanup system
US8056134B1 (en) Malware detection and identification via malware spoofing
US8434151B1 (en) Detecting malicious software
JP5265061B1 (ja) 悪意のあるファイル検査装置及び方法
US20140053267A1 (en) Method for identifying malicious executables
US11494491B2 (en) Systems and methods for protecting against malware code injections in trusted processes by a multi-target injector
KR100745639B1 (ko) 파일 시스템 및 레지스트리를 보호하는 방법 및 그 장치
RU2697954C2 (ru) Система и способ создания антивирусной записи
KR100745640B1 (ko) 커널 메모리를 보호하는 방법 및 그 장치
Ramilli et al. Multi-stage delivery of malware
JP5326063B1 (ja) デバッグイベントを用いた悪意のあるシェルコードの検知装置及び方法
Rohith et al. A comprehensive study on malware detection and prevention techniques used by anti-virus
KR100666562B1 (ko) 커널 드라이버 및 프로세스 보호 방법
US7620983B1 (en) Behavior profiling
KR101311367B1 (ko) 메모리 보호기능 우회 공격 진단 장치 및 방법
US10880316B2 (en) Method and system for determining initial execution of an attack
WO2020007249A1 (zh) 一种操作系统安全主动防御方法及操作系统
Xie et al. Lightweight examination of dll environments in virtual machines to detect malware
Saleh Malware detection model based on classifying system calls and code attributes: a proof of concept

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