KR20070076935A - 은닉 프로세스 모니터링 방법 및 모니터링 시스템 - Google Patents

은닉 프로세스 모니터링 방법 및 모니터링 시스템 Download PDF

Info

Publication number
KR20070076935A
KR20070076935A KR1020060006460A KR20060006460A KR20070076935A KR 20070076935 A KR20070076935 A KR 20070076935A KR 1020060006460 A KR1020060006460 A KR 1020060006460A KR 20060006460 A KR20060006460 A KR 20060006460A KR 20070076935 A KR20070076935 A KR 20070076935A
Authority
KR
South Korea
Prior art keywords
list
hidden
module
information
link information
Prior art date
Application number
KR1020060006460A
Other languages
English (en)
Other versions
KR100832074B1 (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 KR1020060006460A priority Critical patent/KR100832074B1/ko
Publication of KR20070076935A publication Critical patent/KR20070076935A/ko
Application granted granted Critical
Publication of KR100832074B1 publication Critical patent/KR100832074B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3089Monitoring arrangements determined by the means or processing involved in sensing the monitored data, e.g. interfaces, connectors, sensors, probes, agents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3051Monitoring arrangements for monitoring the configuration of the computing system or of the computing system component, e.g. monitoring the presence of processing resources, peripherals, I/O links, software programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/32Monitoring with visual or acoustical indication of the functioning of the machine
    • G06F11/324Display of status information

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Debugging And Monitoring (AREA)

Abstract

본 발명은 운영체제를 사용하는 시스템의 은닉 프로세스 모니터링 시스템 및 모니터링 방법에 관한 것으로, 본 발명에 따른 은닉 프로세스 모니터링 시스템은, 현재 실행중인 프로세스 별로 EPROCESS 구조체를 구성하는 프로세스 링크정보를 호출하는 프로세스 링크정보 호출부; 호출된 상기 프로세스 링크정보에 따라 현재 실행중인 모든 프로세스에 대한 제 1 프로세스 리스트를 생성하는 제 1 프로세스 리스트 생성부; API 함수를 통해 실행중인 프로세스에 대한 제 2 프로세스 리스트를 생성하는 제 2 프로세스 리스트 생성부; 상기 제 1 프로세스 리스트와 상기 제 2 프로세스 리스트를 비교하는 프로세스 리스트 비교부; 및 상기 프로세스 리스트 비교부의 비교결과 은닉된 프로세스를 사용자에게 통보하는 은닉 프로세스 통보부;를 포함하여 구성되는 것을 특징으로 하여 API 후킹에 의한 프로세스 은닉에도 불구하고 은닉된 프로세스를 모니터링 할 수 있는 효과를 제공한다.
API 후킹, 은닉 프로세스, 메시지 후킹, Process Link, API hooking, Root-kit

Description

은닉 프로세스 모니터링 방법 및 모니터링 시스템{Method of Monitoring hided processes, System thereof}
도 1은 종래기술에 의한 프로세스 모니터링 방법의 처리흐름도.
도 2는 프로세스 은닉 방법의 처리흐름도.
도 3은 IAT 후킹 기법의 개념도.
도 4는 dll 파일 변조 기법의 개념도.
도 5는 본 발명의 실시예에 따른 은닉 프로세스 모니터링 시스템의 구성도.
도 6은 EPROCESS 구조체의 구성도.
도 7은 윈도우즈 XP에서 EPROCESS의 변수별 오프-셋 테이블.
도 8은 윈도우즈 2000에서 EPROCESS의 변수별 오프-셋 테이블.
도 9는 윈도우즈 XP에서 EPROCESS의 레지스터 구성도.
도 10은 복수의 EPROCESS 간 ActiveProcessLinks 의 구성도.
도 11은 본 발명의 실시예에 따른 은닉 프로세스 통보 과정의 개념도.
도 12는 본 발명의 실시예에 따른 은닉 모듈 모니터링 시스템의 구성도.
도 13은 EPROCESS 구조체의 PEB의 구성도.
도 14는 PEB의 LDR의 구성도.
도 15는 LDR 테이블의 구성도.
도 16은 윈도우즈 2000에서 PEB의 실제 구성 테이블.
도 17은 본 발명의 실시예에 따른 은닉 모듈 통보 과정의 개념도.
도 18은 본 발명의 실시예에 따른 은닉 프로세스 통보결과 출력화면의 화면구성도.
도 19는 본 발명의 실시예에 따른 은닉 모듈 통보결과 출력화면의 화면구성도.
도 20은 프로세스 실행파일의 등록정보 중 버전-언어 정보의 실제 출력 화면.
도 21은 본 발명의 실시예에 따른 은닉 프로세스 모니터링 방법의 흐름도.
도 22는 본 발명의 실시예에 따른 은닉 프로세스 모니터링 방법의 통신처리 흐름도.
<도면의 주요부분에 대한 부호의 설명>
10 : 은닉 프로세스 모니터링 시스템
100 : 프로세스 링크정보 호출부 110 : 제 1 프로세스 리스트 생성부
200 : 제 2 프로세스 리스트 생성부
300 : 프로세스 리스트 비교부 310 : 은닉 프로세스 통보부
본 발명은 운영체제를 사용하는 시스템의 은닉 프로세스 모니터링 방법 및 모니터링 시스템에 관한 것이다.
윈도우즈 계열 운영체제에서는 윈도우즈 작업 관리자를 이용하여 현재 실행중인 프로세스를 모니터링할 수 있다. 이때 유저 애플리케이션인 윈도우즈 작업 관리자는, 도 1에 도시된 바와 같이 psapi.dll 파일로부터 유저 API(Application Programming Interface) 함수인 EnumProcesses() 함수를 호출하고, enumprocesses() 함수는 다시 ntdll.dll 파일로부터 네이티브 API 함수인 ZwQuerySystemInformation() 함수를 호출하여 현재 실행중인 프로세스에 대한 정보를 커널단으로부터 프로세스 및 모듈 정보(SystemProcessInformation, SystemModuleInformation)를 획득하여 윈도우즈 작업 관리자를 통해 사용자가 프로세스를 모니터링할 수 있게 한다.
그런데, 해킹 등에 사용되는 루트-킷(root-kit)은 자신의 해킹 프로세스를 은닉하기 위해 EmumProcess() 함수를 통해 획득된 프로세스 리스트 정보를 중간에서 가로채서(hooking) 은닉하고자 하는 프로세스를 누락한 결과를 유저 애플리케이션에 통보하도록 한다. 예컨대 도 2에 도시된 바와 같이 EmumProcess() 함수가 ZwQuerySystemInformation() 함수를 통해 커널단으로부터 올바른 프로세스 리스트인 A, B, C를 수신받은 경우 루트-킷은 그 결과를 중간에서 후킹하여 프로세스 B를 은닉하고 프로세스 A, C 만을 유저 애플리케이션에 통보하게 된다. 따라서 이 경우 사용자의 시스템에서는 해킹 프로세스가 유효하게 실행되고 있지만 윈도우즈 작업 관리자 등의 통상적인 프로세스 모니터링 툴에서는 해킹 프로세스가 누락된 결과만이 보고된다.
API 후킹 기법은 크게 두가지로 나눌 수 있다. 첫 번째는 IAT(Import Address Table)를 변조하는 방법이고, 두 번째는 메모리 상에 읽혀져 있는 API 함수의 정의를 변조하는 방법이다. IAT는 메모리 상에 존재하여 API 함수별로 각 함수가 정의되는 dll 파일을 지정하는 테이블이다. IAT 변조 방법은 도 3에 도시된 바와 같이 IAT 에 정의된 dll 파일과 API 함수의 정당한 연결관계를 끊고 변조된 dll 파일 예컨대 hook.dll로 원하는 API 함수를 연결하는 기법이다. 즉 EmumProcess() 함수의 경우 psapi.dll 에 정의가 되어 있는데 IAT 의 연결관계를 변조함으로써 EmumProcess() 함수를 psapi.dll 이 아닌 조작된 dll 파일인 hook.dll 로 연결하여 EmumProcess() 함수가 자신이 원하는 프로세스를 은닉한 결과를 유저 애플리케이션에 반환하도록 정의하는 것이다.
API 함수의 정의를 변조하는 방법은 도 4에 도시된 바와 같이 IAT 는 변조하지 않고, 메모리 상에 읽혀져 있는 API 함수의 정의를 변조하는 방식이다. 즉 enumprocesses() 함수를 정의하는 psapi.dll 파일이 읽혀져 있는 메모리 정보를 조작하여 변조된 dll 파일 예컨대 hook.dll 로 점프를 하도록 하여 EmumProcess() 함수가 자신이 원하는 프로세스를 은닉한 결과를 유저 애플리케이션에 반환하도록 정의하는 것이다.
상술한 API 후킹 방법은 유저 API 함수 뿐만 아니라 ZwQuerySystemInformation 등의 네이티브 API 함수에도 사용될 수 있다.
따라서 종래의 프로세스 모니터링 방법에 의해서는 API 후킹 방법으로 은닉된 프로세스를 발견하지 못하기 때문에 해킹 등에 의한 피해에 조속히 대응하기 어 렵고 전문가가 아닌 일반 사용자의 경우 은닉된 프로세스에 대한 강제종료 등의 대응이 불가능하다는 문제가 있었다.
한편 하나의 프로세스(파일 확장자 exe)는 다수의 모듈(파일 확장자 dll)을 부속하게 되는데, 하나의 프로세스에 부속하는 모듈 정보를 얻기 위해서는 프로세스의 경우와 동일하게 psapi.dll의 API 함수를 이용하는 것이 일반적이다. 모듈 정보는 OpenProcess(), EnumProcessModules(), GetModuleFileName() 등의 API 함수를 통해 알 수 있다. OpenProcess() 함수는 프로세스의 ID와 핸들을 사용자에게 반환하고, EnumProcessModules()은 각 프로세스에 부속하는 모듈의 핸들을 사용하에게 반환하고, GetModuleFileName()은 해당 모듈의 파일명을 포함하는 경로정보를 사용자에게 반환한다. 이상의 API 함수를 통해 사용자는 각 프로세스의 모듈 정보를 모니터링 할 수 있다.
그런데 모듈 정보의 경우도 프로세스 모니터링과 동일하게 API 함수를 이용하기 때문에 전술한 IAT 변조 및 메모리상의 함수정의 변조 등의 기법을 통해 해킹으로 부속된 모듈정보를 은닉할 수 있다. 이 경우 사용자는 자신의 프로세스에 해킹된 모듈이 포함된 경우 이를 발견하여 적절한 대응을 하기가 어렵다는 문제가 있다.
본 발명은 상기의 문제점을 해결하기 위한 것으로, 프로세스 모니터링에 있어서 종래의 API 함수가 아닌 해킹 등에 의한 변조가 극히 어려운 커널단의 오브젝트인 각 프로세스를 구성하는 EPROCESS 구조체의 프로세스 링크 정보를 통해 현재 실행중인 프로세스 리스트를 생성함으로써 API 후킹에 의한 프로세스 은닉에도 불구하고 은닉된 프로세스를 모니터링 할 수 있는 은닉 프로세스 모니터링 시스템 및 모니터링 방법을 제공하는 것을 목적으로 한다.
본 발명의 실시예에 따르면, EPROCESS 구조체의 프로세스 링크 정보에 의해 생성되는 제 1 프로세스 리스트와 종래의 API 함수에 의해 생성되는 제 2 프로세스 리스트를 비교하여 API 후킹기법에 의해 은닉된 프로세스를 선별적으로 사용자에게 통보함으로써 API 후킹기법에 의해 은닉된 프로세스를 용이하게 모니터링 할 수 있는 은닉 프로세스 모니터링 시스템 및 모니터링 방법을 제공하는 것을 다른 목적으로 한다.
본 발명의 다른 실시예에 따르면, EPROCESS 구조체의 프로세스 링크 정보로서 ActiveProcessLinks 뿐만 아니라 SessionProceseeLinks를 사용하여 프로세스 리스트를 생성함으로써, API 후킹기법이 아닌 EPROCESS 구조체의 프로세스 링크 변조에 의해 은닉된 프로세스도 모니터링할 수 있는 은닉 프로세스 모니터링 시스템 및 모니터링 방법을 제공하는 것을 다른 목적으로 한다.
본 발명의 다른 실시예에 따르면, 모듈 모니터링에 있어서 종래의 API 함수가 아닌 해킹 등에 의한 변조가 극히 어려운 커널단의 오브젝트인 각 프로세스를 구성하는 EPROCESS 구조체의 PEB(Process Environmental Block)정보를 통해 프로세스 리스트에 포함되는 모든 프로세스 별로 모듈 리스트를 생성함으로써 API 후킹에 의한 모듈 은닉에도 불구하고 은닉된 모듈도 모니터링 할 수 있는 은닉 프로세스 모니터링 시스템 및 모니터링 방법을 제공하는 것을 목적으로 한다.
본 발명의 다른 실시예에 따르면, EPROCESS 구조체의 모듈 정보에 의해 생성되는 제 1 모듈 리스트와 종래의 API 함수에 의해 생성되는 제 2 모듈 리스트를 비교하여 API 후킹기법에 의해 은닉된 모듈을 선별적으로 사용자에게 통보함으로써 API 후킹기법에 의해 은닉된 모듈을 용이하게 모니터링 할 수 있는 은닉 프로세스 모니터링 시스템 및 모니터링 방법을 제공하는 것을 다른 목적으로 한다.
본 발명의 다른 실시예에 따르면, 은닉된 프로세스 또는 은닉된 모듈만을 자동으로 감지하여 종료함으로써 전문적인 지식이 없는 사용자도 은닉된 프로세스 또는 모듈을 용이하게 시스템에서 제거할 수 있는 은닉 프로세스 모니터링 시스템 및 모니터링 방법을 제공하는 것을 다른 목적으로 한다.
본 발명의 다른 실시예에 따르면, 프로세스 리스트에 포함된 모든 프로세스의 실행파일의 속성을 통해 특정 언어로 작성된 것으로 판단된 경우 이를 사용자에게 통보함으로써, 해킹 프로세스로 의심이 되는 프로세스를 사용자에게 선별적으로 통보할 수 있는 은닉 프로세스 모니터링 시스템 및 모니터링 방법을 제공하는 것을 다른 목적으로 한다.
마지막으로 본 발명의 다른 실시예에 따르면, 설정시각 이후 예컨대 시스템 시작시각 이후에 실행된 것으로 판단된 프로세스를 사용자에게 통보함으로써 시스템 시작 이후에 사용자가 의도하지 않은 프로세스가 해킹 등에 의해 생성되는 것을 방지할 수 있는 은닉 프로세스 모니터링 시스템 및 모니터링 방법을 제공하는 것을 다른 목적으로 한다.
상기한 목적을 달성하기 위하여, 본 발명에 따른 운영체제를 사용하는 시스템의 은닉 프로세스 모니터링 방법은, 현재 실행중인 프로세스 별로 EPROCESS 구조체를 구성하는 프로세스 링크정보를 호출하는 제 1 단계; 및 호출된 상기 프로세스 링크정보에 따라 현재 실행중인 모든 프로세스에 대한 제 1 프로세스 리스트를 생성하는 제 2 단계;를 포함하여 구성되는 것을 특징으로 한다.
본 발명의 실시예에 따른 윈도우즈 계열 운영체제를 사용하는 시스템의 은닉 프로세스 모니터링 시스템은, 현재 실행중인 프로세스 별로 EPROCESS 구조체를 구성하는 프로세스 링크정보를 호출하는 프로세스 링크정보 호출부; 호출된 상기 프로세스 링크정보에 따라 현재 실행중인 모든 프로세스에 대한 제 1 프로세스 리스트를 생성하는 제 1 프로세스 리스트 생성부; API 함수를 통해 실행중인 프로세스에 대한 제 2 프로세스 리스트를 생성하는 제 2 프로세스 리스트 생성부; 상기 제 1 프로세스 리스트와 상기 제 2 프로세스 리스트를 비교하는 프로세스 리스트 비교부; 및 상기 프로세스 리스트 비교부의 비교결과 은닉된 프로세스를 사용자에게 통보하는 은닉 프로세스 통보부;를 포함하여 구성되는 것을 특징으로 한다.
마지막으로 본 발명의 실시예에 따른 윈도우즈 계열 운영체제를 사용하는 시스템의 은닉 프로세스 모니터링 방법을 실행할 수 있는 프로그램을 기록매체는, 현재 실행중인 프로세스 별로 EPROCESS 구조체를 구성하는 프로세스 링크정보를 호출하는 제 1 단계; 호출된 상기 프로세스 링크정보에 따라 현재 실행중인 모든 프로세스에 대한 제 1 프로세스 리스트를 생성하는 제 2 단계; API 함수를 통해 실행중인 프로세스에 대한 제 2 프로세스 리스트를 생성하는 제 3 단계; 및 상기 제 1 프 로세스 리스트와 상기 제 2 프로세스 리스트를 비교하여 은닉된 프로세스를 사용자에게 통보하는 제 4 단계;를 더 포함하여 구성되는 것을 특징으로 한다.
상술한 목적 및 기타의 목적과 본 발명의 특징 및 이점은 첨부된 도면과 관련한 다음의 상세한 설명을 통하여 보다 분명해 질 것이다. 이하, 첨부된 도면을 참조하여 본 발명의 실시예를 상세히 설명하면 다음과 같다.
도 5는 본 발명의 실시예에 따른 은닉 프로세스 모니터링 시스템을 도시한다. 본 발명이 적용되는 시스템은 윈도우즈 2000 또는 윈도우즈 XP 등의 윈도우즈 계열 운영체제를 사용하는 시스템이다.
은닉 프로세스 모니터링 시스템(10)은, 프로세스 링크정보 호출부(100), 제 1 프로세스 리스트 생성부(110), 제 2 프로세스 리스트 생성부(200), 프로세스 리스트 비교부(300), 및 은닉 프로세스 통보부(310)를 포함하여 구성된다.
링크정보 호출부(100)는 현재 실행중인 프로세스 별로 EPROCESS 구조체를 구성하는 프로세스 링크정보를 호출하는 기능을 수행한다. 이하에서는 링크정보 호출부(100)의 프로세스 링크정보 호출동작을 설명한다.
시스템에서 실행되는 프로세스는 프로세스별로 메모리 상의 EPROCESS 구조체를 형성하는데, EPROCESS 구조체는 도 6에 도시된 바와 같은 프로세스와 관련된 PCB(Process Control Block), ActiveProcessLinks, SessionProcessLinks, PEB(Process Environmental Block) 등의 각종 정보(변수)의 집합체로 구성된다. PCB는 프로세스 제어블록으로서 해당 프로세스에 대한 정보를 기록하고 있는 데이터 블록이다. PCB는 프로세스의 현상태, 프로세스의 고유한 식별자, 프로세스가 위 치한 메모리에 대한 포인터 등의 프로세스 정보를 기록한다. ActiveProcessLinks 및 SessionProcessLinks는 CPU 가 프로세스를 처리하는 순서에 관한 정보로서 각각 CPU 의 프로세스 스케쥴링 순서상 다음 프로세스에 관한 정보인 Flink(fore-link) 및 이전 프로세스에 관한 정보인 Blink(back-link)로 구성된다. ActiveProcessLinks는 현재 활성화된 프로세스의 CPU 할당 순서에 대한 링크정보이고, SessionProcessLinks 는 시스템 프로세스(System Process, 최우선 프로세스) 및 smss(Session Manager SubSystem) 프로세스(사용자 세션을 시작하는 프로세스)를 제외한 프로세스 간의 CPU 할당 순서에 대한 링크정보이다. ActiveProcessLinks 는 변조가 가능한 반면 SessionProcessLinks 는 변조가 불가능하다는 차이가 있다.
도 7 및 도 8은 각각 윈도우즈 XP 및 윈도우즈 2000의 EPROCESS 구조체의 각 변수별 오프-셋 값의 일부를 도시한다. 윈도우즈 XP의 경우 도 7에 도시된 바와 같이 ActiveProcessLinks의 Flink는 오프-셋 +0X088, Blink는 오프-셋 +0X08C, SessionProcessLinks의 Flink는 오프-셋 +0X0b4, Blink는 +0X0b8 이고, 윈도우즈 2000의 경우 도 8에 도시된 바와 같이 ActiveProcessLinks의 Flink는 오프-셋 +0X0a0, Blink는 오프-셋 +0X0a4, SessionProcessLinks의 Flink는 오프-셋 +0X118, Blink는 +11c 이다.
도 9는 윈도우즈 XP에서의 실제 메모리상의 각 어드레스에 저장된 ActiveProcessLinks의 Flink 및 Blink를 도시한다. 예컨대 프로세스 A, B, C 가 존재하고 처리순서가 A,B,C인 경우 프로세스 B의 EPROCSS의 시작 어드레스가 816da398라 가정하면, 시작 어드레스에 프로세스 B의 ActiveProcessLinks 의 Flink 의 어드레스는 오프-셋인 +088을 더하면 816DA420 이고, 그에 해당하는 데이터는 "81DFED28"이고, Blink는 "81D5C6C0"임을 확인할 수 있다. Flink 데이터는 다음 프로세스인 프로세스 C의 ActiveProcessLinks의 어드레스를 나타내고, Blink 데이터는 이전 프로세스인 프로세스 A의 ActiveProcessLinks의 어드레스를 나타낸다.
각 프로세스의 정보를 알기 위해서는 구해진 ActiveProcessLinks의 어드레스에서 오프-셋 값인 -088을 감산하면 각 프로세스의 EPROCESS 구조체의 시작 어드레스를 알 수 있다. 이 경우 프로세스 A의 시작 어드레스는 81D5C6C0(프로세스 B의 Blink)-88, 프로세스 C의 시작 어드레스는 81DFED28(프로세스 B의 Flink)-88이다. 시작 어드레스는 PCB를 나타내기 때문에 PCB를 통해 각종 프로세스의 상세정보를 확인할 수 있다. 윈도우즈 2000의 경우 및 SessionProcessLinks를 이용하여 각각의 프로세스 정보를 모니터링 하는 경우는 전술한 오프-셋 값만 변경하여 동일한 방법을 적용하기 때문에 자세한 설명은 생략한다.
도 10은 프로세스 A,B,C 의 EPROCESS의 구조체와 각각의 ActiveProcessLinks의 Flink 및 Blink의 연결관계를 도시한다(SessionProcessLinks의 경우도 동일하다). 도시된 바와 같이 프로세스 링크정보 호출부(100)는 PsActiveProcessHead를 통해 최우선의 프로세스인 시스템 프로세스(프로세스 A)의 ActiveProcessLinks 정보를 획득하여 순차적으로 프로세스 B 및 프로세스 C의 ActiveProcessLinks 정보를 획득할 수 있으며, 역시 PsInitialSystemProcess를 통해 시스템 프로세스의 EPROCESS의 시작 어드레스를 획득하여 해당 프로세스 링크 정보의 오프-셋을 가산함으로서 프로세스 A, B, C의 ActiveProcessLinks 정보를 순차적으로 획득할 수 있 다.
그런데, API 후킹 뿐만이 아니라 커널 오브젝트인 ActiveProcessLinks를 변조하는 경우는 ActiveProcessLinks를 통한 은닉 프로세스 모니터링이 불가능할 수도 있다. 이를 방지하기 위해 본 발명의 실시예에서는 변조가 불가능한 SessionProcessLinks를 통해 프로세스를 모니터링 함으로써 프로세스 은닉을 원천적으로 방지할 수 있는 효과를 제공한다.
제 1 프로세스 리스트 생성부(110)는, 호출된 프로세스 링크정보(ActiveProcessLinks, SessionProcessLinks)에 따라 현재 실행중인 모든 제 1 프로세스 리스트(115)를 생성하는 기능을 수행한다. 프로세스 링크정보 호출부(100)가 호출하는 링크정보는 단순히 각 프로세스 별 링크정보의 메모리 어드레스만을 나타내기 때문에 도 18에 도시된 바와 같이 실제로 사용자가 필요한 구체적인 프로세스 정보인 프로세스 명칭, 프로세스 ID, 실행 시간, 언어, 회사, 실행파일의 경로 등은 제 1 프로세스 리스트 생성부(110)가 도 6에 도시된 해당 EPROCESS의 해당 블록 또는 도 21에 도시된 실행파일의 등록정보를 통해 획득하여 제 1 프로세스 리스트(115)를 생성한다. 특히 프로세스 명칭 및 실행파일의 경로는 PEB의 ImageFileName, 프로세스의 실행시간은 PEB의 CreateTime, 프로세스 ID는 UniqueProcessID, 언어는 실행파일의 등록정보 중 버전-언어 정보를 통해 획득할 수 있다.
제 2 프로세스 리스트 생성부(200)는, 도 1에 도시된 종래의 프로세스 모니터링 방법 즉 EnumProcesses(), ZwQuerySystemInformation() 등의 API 함수를 통해 실행중인 프로세스에 대한 제 2 프로세스 리스트(205)를 생성하는 기능을 수행한다. 제 2 프로세스 리스트 생성부(200)는 윈도우즈에서 제공하는 애플리케이션 예컨대 윈도우즈 작업 관리자로부터 제 2 프로세스 리스트(205)를 전달받도록 구성할 수도 있다.
프로세스 리스트 비교부(300)는 도 11에 도시된 바와 같이 제 1 프로세스 리스트(115)와 제 2 프로세스 리스트(205)를 비교하는 기능을 수행한다. 예컨대 프로세스 A,B,C 가 실행되는 시스템에 있어서 API 후킹에 의해 프로세스 B가 은닉된 경우를 가정하면 EPROCESS 구조체에 직접 접근하여 프로세스 링크 정보를 획득하여 생성된 제 1 프로세스 리스트(115)에는 프로세스 A, 프로세스 B, 프로세스 C가 모두 포함되지만, API 함수를 통해 생성되는 제 2 프로세스 리스트(205)에는 프로세스 A, 프로세스 C 만 포함된다. 프로세스 리스트 비교부(300)는 양 리스트(115,205)를 비교하여 제 1 프로세스 리스트(115)에만 포함된 프로세스를 은닉된 프로세스로 판단할 수 있다.
은닉 프로세스 통보부(310)는 프로세스 리스트 비교부(300)의 비교결과 은닉된 프로세스를 사용자에게 통보하는 기능을 수행한다. 전술한 예에 있어서, 은닉 프로세스 통보부(310)는 도 11에 도시된 바와 같은 사용자 출력화면(315)을 통해 은닉된 프로세스를 선택적으로 부각하거나 은닉된 프로세스만 출력하는 방법을 통해 은닉된 프로세스(프로세스 B)를 사용자에게 통보한다.
도 18은 사용자 출력화면(315)의 실제 구현예를 도시한다. 사용자 출력화면(315)은 프로세스 리스트 출력창(316) 및 각 프로세스별 모듈 리스트 출력창(317) 을 포함하여 구성될 수 있다. 프로세스 리스트 출력창(316)은 제 1 프로세스 리스트(115)에만 포함된 프로세스는 은닉 프로세스로 표시하게 되는데, 도 18의 실시예의 경우 총 프로세스의 수는 76 개, 은닉 프로세스는 1 개인 경우를 나타낸다. 은닉 프로세스인 hg1.exe 는 리스트 상에서 적색 등으로 표시하여 일반 프로세스와 구별되도록 하는 것이 바람직하다.
한편 은닉 프로세스 모니터링 시스템(10)은 은닉된 프로세스로 판단되는 경우 즉 제 1 프로세스 리스트(115)에만 포함된 프로세스를 자동으로 종료시키는 은닉 프로세스 종료부(350)를 더 포함하여 구성되는 것이 바람직하다. 이러한 실시예에 따르면 보안 전문가가 아닌 일반 사용자의 경우도 용이하에 은닉 프로세스를 선택적으로 종료시킴으로서 해킹에 의한 피해를 조기에 차단할 수 있는 효과를 제공한다.
또한 은닉 프로세스 통보부(310)는 은닉된 프로세스 뿐만 아니라 해킹에 의해 생성된 프로세스로 의심되는 프로세스를 사용자에게 더 통보하는 것이 바람직하다. 예컨대 해당 프로세스의 언어정보가 사용자가 사용하지 않는 특정국가의 언어정보 예컨대 중국어 등인 경우 이는 해킹에 의해 삽입된 프로세스일 가능성이 높고, 특정 프로세스가 다른 프로세스와 비교하여 실행시간이 최근인 것으로 판단되는 경우 이 역시 해킹에 의해 삽입된 프로세스일 가능성이 높다. 따라서 특정 언어정보에 해당하거나 설정시각 이후 실행된 것으로 판단되는 프로세스의 경우도 사용자에게 선별적으로 통보하는 것이 보다 바람직하다.
다음으로 각 프로세스 별로 은닉 모듈을 모니터링하는 실시예를 설명한다. 하나의 프로세스는 다수의 모듈을 포함하여 구성된다. 도 19를 참조하면 NOTEPAD 프로세스는 notepad.exe(첫 번째 모듈은 해당 프로세스의 실행파일이다), ntdll.dll, kernel32.dll, comdlg32.dll 등의 총 29 개의 모듈을 포함하는 것을 확인할 수 있다.
도 12는 은닉 모듈의 모니터링이 가능한 은닉 프로세스 모니터링 시스템(10)을 도시한다. 도 12에 도시된 구성은 도 5의 구성과 유사하게, 모듈정보 호출부(400), 제 1 모듈 리스트 생성부(410), 제 2 모듈 리스트 생성부(500), 모듈 리스트 비교부(600), 및 은닉 모듈 통보부(610)를 포함하여 구성된다.
모듈정보 호출부(400)는 현재 실행중인 프로세스 별로 EPROCESS 구조체를 구성하는 PEB(Process Environmental Block)를 통해 각 프로세스 별 모듈정보를 호출하는 기능을 수행한다. 이하에서는 모듈정보 호출부(400)의 호출동작을 설명한다.
프로세스 별 EPROCESS 구조체의 PEB는 베이스 주소, 버전 넘버, 모듈 리스트 등의 이미지 정보, 프로세스 힙 정보 등을 포함한다. 도 13은 PEB의 구조를 도시한다. PEB 의 LDR 블록을 통해 모듈 리스트를 확인할 수 있다. 도 14는 LDR 블록(PEB_LDR_DATA)의 구조를 도시한다.
LDR 블록(PEB_LDR_DATA)의 InLoadOrderModuleList, InMemoryOrderModuleList, InInitializationOrderModuleList는 각각 프로세스를 구성하는 모듈별 LDR_DATA_TABLE_ENTRY 구조체를 포함한다. 도 15는 LDR_DATA_TABLE_ENTRY의 구조를 도시한다. LDR_DATA_TABLE_ENTRY의 InLoadOrderLinks, InMemoryOrderLinks, InInitializationOrderLinks 는 전술한 ActiveProcessLinks 및 SessionProcessLinks 와 유사하게 각 모듈 간의 링크정보로 구성된다. 상기의 모듈 링크정보(InLoadOrderLinks, InMemoryOrderLinks, InInitializationOrderLinks)를 통해 하나의 프로세스를 구성하는 모듈 정보를 획득할 수 있다.
도 16은 윈도우즈 2000에서의 실제 PEB의 내용을 도시하는데, 해당 프로세스를 구성하는 다수의 모듈 정보(ntdll.dll, IMAGEHELP.dll, MSCVRT.dll 등)를 포함하고 있는 것을 확인할 수 있다.
제 1 모듈 리스트 생성부(410)는, 호출된 모듈 정보(InLoadOrderLinks, InMemoryOrderLinks, InInitializationOrderLinks)에 따라 각 프로세스 별로 부속된 모든 모듈에 대한 제 1 모듈 리스트(415)를 생성하는 기능을 수행한다. 제 1 모듈 리스트(415)는 제 1 프로세스 리스트(115)와는 다르게 각 프로세스 별로 모듈 리스트(415)를 작성한다. 예컨대 3개의 프로세스가 실행중인 시스템의 경우 제 1 프로세스 리스트(115)는 1개만 생성이 되지만 제 1 모듈 리스트(415)는 프로세스 수와 동수인 3개가 생성된다.
제 2 모듈 리스트 생성부(500)는, 종래의 모듈 모니터링 방법 즉 EnumProcessModules() 등의 API 함수를 통해 각 프로세스 별로 제 2 모듈 리스트(505)를 생성하는 기능을 수행한다.
모듈 리스트 비교부(600)는 도 17에 도시된 바와 같이 제 1 모듈 리스트(415)와 제 2 모듈 리스트(505)를 비교하는 기능을 수행한다. 예컨대 프로세스 A,B,C 가 실행되고 프로세스 A는 모듈 A,B,C로 구성되는 시스템에 있어서 API 후킹 에 의해 모듈 B가 은닉된 경우를 가정하면 EPROCESS 구조체에 직접 접근하여 모듈 정보를 획득하여 생성된 제 1 모듈 리스트(415)에는 모듈 A, 모듈 B, 모듈 C가 모두 포함되지만, API 함수를 통해 생성되는 제 2 모듈 리스트(505)에는 모듈 A, 모듈 C 만 포함된다. 모듈 리스트 비교부(600)는 양 리스트(415,505)를 비교하여 제 1 모듈 리스트(415)에만 포함된 모듈을 은닉된 모듈로 판단할 수 있다.
은닉 모듈 통보부(610)는 모듈 리스트 비교부(600)의 비교결과 은닉된 모듈을 사용자에게 통보하는 기능을 수행한다. 전술한 예에 있어서, 은닉 모듈 통보부(610)는 도 17에 도시된 바와 같은 사용자 출력화면(615)을 통해 은닉된 모듈을 선택적으로 부각하거나 은닉된 모듈만 출력하는 방법을 통해 은닉된 모듈(모듈 B)을 사용자에게 통보한다.
도 19는 사용자 출력화면(615)의 실제 구현예를 도시한다. 사용자가 사용자 출력화면(615)의 프로세스 리스트 출력창(316)에서 하나의 프로세스(NOTEPAD.EXE)를 선택하게 되면 하단의 모듈 리스트 출력창(317)은 선택된 프로세스를 구성하는 모듈 리스트(notepad.exe, ntdll.dll, kernel32.dll 등)를 사용자에게 출력하게 된다. 이때 은닉된 모듈이 있는 경우 은닉 프로세스의 경우와 동일하게 모듈 리스트 상에서 적색 등으로 표시하여 일반 모듈과 구별되도록 하는 것이 바람직하다.
한편 은닉 프로세스 모니터링 시스템(10)은 은닉된 모듈로 판단되는 경우 즉 제 1 모듈 리스트(415)에만 포함된 모듈을 자동으로 종료시키는 은닉 모듈 종료부(350)를 더 포함하여 구성되는 것이 바람직하다. 이러한 실시예에 따르면 보안 전문가가 아닌 일반 사용자의 경우도 용이하게 은닉 모듈을 선택적으로 종료시킴으로 서 해킹에 의한 피해를 조기에 차단할 수 있는 효과를 제공한다.
전술한 은닉 프로세스 모니터링 시스템(10)의 각 구성요소(100, 110, 200, 300, 310, 350, 400, 410, 500, 600, 610, 700)는 설명의 편의를 위해 논리적으로 구분한 것이고 반드시 물리적으로 구분되어야 할 필요는 없으며 실제 구현에 있어서는 단일의 프로그램 또는 논리회로 등으로 구현될 수 있다.
도 21 및 도 22는 본 발명의 실시예에 따른 윈도우즈 계열 운영체제를 사용하는 시스템의 은닉 프로세스 모니터링 방법을 도시한다.
먼저 현재 실행중인 프로세스 별로 EPROCESS 구조체를 구성하는 프로세스 링크정보를 호출하는 제 1 단계(S100)를 수행한다. 프로세스 모니터링 시스템(10)은 PsActiveProccessHead, PsInitialSystemProcess 등의 정보를 통해 커널단의 각 프로세스별 EPROCESS 구조체의 ActiveProcessLinks 및/또는 SessionProcessLinks 정보를 획득한다(110).
은닉 모듈을 더 모니터링하는 실시예의 경우, 제 1 단계(S100)는 EPROCESS 구조체의 PEB를 통해 상기 모듈 정보(InLoadOrderLinks, InMemoryOrderLinks, InInitializationOrderLinks)를 더 호출하는 것이 바람직하다.
다음으로, 호출된 프로세스 링크정보(ActiveProcessLinks, SessionProcessLinks)에 따라 현재 실행중인 모든 프로세스에 대한 제 1 프로세스 리스트(115)를 생성하는 제 2 단계(S200)를 수행한다. 제 1 프로세스 리스트(115)는 EPROCESS 구조체를 통해 각 프로세스에 대한 상세 정보(프로세스 명칭, 프로세스 사용자, CPU 점유율 등)를 포함하는 것이 바람직하다.
이러한 방법에 따르면 사용자는 실제 시스템에서 API 후킹기법에 의해 은닉된 프로세스를 포함하는 모든 프로세스에 대한 정보를 획득할 수 있다.
은닉 모듈을 더 모니터링하는 실시예의 경우, 제 2 단계(S200)는 호출된 모듈 정보에 따라 현재 실행중인 모든 프로세스 별로 제 1 모듈 리스트(415)를 더 생성하는 것이 바람직하다.
그런데, 은닉된 프로세스는 대부분이 사용자가 원치 않는 해킹 프로세스인 바, 제 1 프로세스 리스트(115) 만으로는 어느 프로세스가 은닉된 프로세스인지를 판단할 수가 없다. 따라서 은닉된 프로세스만을 선별적으로 파악하기 위해서는 통상의 API 함수를 통해 제 2 프로세스 리스트(205)를 생성하여 양 리스트(115,205)를 비교함으로서 은닉된 프로세스를 선별적으로 모니터링하는 것이 보다 바람직하다.
이를 위해서 은닉 프로세스 모니터링 방법은 API 함수(enumprocesses(), ZwQuerySystemInformation 등)를 통해 실행중인 프로세스에 대한 제 2 프로세스 리스트(205)를 생성하는 제 3 단계(S300)를 수행한다. 이때 API 후킹이 이루어진 경우 루트-킷(20)은 커널(40)로부터의 프로세스 리스트를 후킹하여 은닉하고자 하는 프로세스를 제외한 프로세스 리스트를 프로세스 모니터링 시스템(10)에 전송한다(S330).
은닉 모듈을 더 모니터링하는 실시예의 경우, 제 3 단계(S300)는, EnumProcessModules() 함수 등의 API 함수를 통해 프로세스 별로 제 2 모듈 리스트를 더 생성하는 것이 바람직하다.
마지막으로, 프로세스 모니터링 시스템(10)은 모든 프로세스가 포함된 제 1 프로세스 리스트(115)와 은닉된 프로세스가 제외된 제 2 프로세스 리스트(205)를 비교하여(S400) 은닉된 프로세스를 사용자에게 통보하는 제 4 단계(S450)를 수행한다.
은닉 모듈을 더 모니터링하는 실시예의 경우, 제 4 단계(S400,S450)는 제 1 모듈 리스트(415) 및 상기 제 2 모듈 리스트(505)를 더 비교하여 은닉된 모듈을 사용자에게 더 통보하는 것이 바람직하다.
한편 은닉 프로세스 모니터링 방법은, 제 1 프로세스 리스트(115)에만 포함된 은닉 프로세스 또는 제 1 모듈 리스트(415)에만 포함된 은닉 모듈을 자동으로 종료하는 제 5 단계를 더 포함하는 것이 바람직하며, 제 1 프로세스 리스트에 포함된 프로세스의 실행파일의 파일속성을 통해 언어정보를 추출하여 특정 언어정보에 해당하는 프로세스 및 제 1 프로세스 리스트에 포함된 프로세스의 실행시간이 설정시각 이후인 경우 해당 프로세스를 사용자에게 더 통보하는 것이 보다 바람직하다.
이상에서 설명한 바와 같이 본 발명에 따른 은닉 프로세스 모니터링 시스템 및 모니터링 방법은, 프로세스 모니터링에 있어서 종래의 API 함수가 아닌 해킹 등에 의한 변조가 극히 어려운 커널단의 오브젝트인 각 프로세스를 구성하는 EPROCESS 구조체의 프로세스 링크 정보를 통해 현재 실행중인 프로세스 리스트를 생성함으로써 API 후킹에 의한 프로세스 은닉에도 불구하고 은닉된 프로세스를 모니터링 할 수 있는 효과를 제공한다.
본 발명의 실시예에 따른 은닉 프로세스 모니터링 시스템 및 모니터링 방법은, EPROCESS 구조체의 프로세스 링크 정보에 의해 생성되는 제 1 프로세스 리스트와 종래의 API 함수에 의해 생성되는 제 2 프로세스 리스트를 비교하여 API 후킹기법에 의해 은닉된 프로세스를 선별적으로 사용자에게 통보함으로써 API 후킹기법에 의해 은닉된 프로세스를 용이하게 모니터링 할 수 있는 효과를 제공한다.
본 발명의 실시예에 따른 은닉 프로세스 모니터링 시스템 및 모니터링 방법은, EPROCESS 구조체의 프로세스 링크 정보로서 ActiveProcessLinks 뿐만 아니라 SessionProceseeLinks를 사용하여 프로세스 리스트를 생성함으로써, API 후킹기법이 아닌 EPROCESS 구조체의 프로세스 링크 변조에 의해 은닉된 프로세스도 모니터링할 수 있는 효과를 제공한다.
본 발명의 실시예에 따른 은닉 프로세스 모니터링 시스템 및 모니터링 방법은, 모듈 모니터링에 있어서 종래의 API 함수가 아닌 해킹 등에 의한 변조가 극히 어려운 커널단의 오브젝트인 각 프로세스를 구성하는 EPROCESS 구조체의 PEB(Process Environmental Block)정보를 통해 프로세스 리스트에 포함되는 모든 프로세스 별로 모듈 리스트를 생성함으로써 API 후킹에 의한 모듈 은닉에도 불구하고 은닉된 모듈도 모니터링 할 수 있는 효과를 제공한다.
본 발명의 실시예에 따른 은닉 프로세스 모니터링 시스템 및 모니터링 방법은, EPROCESS 구조체의 모듈 정보에 의해 생성되는 제 1 모듈 리스트와 종래의 API 함수에 의해 생성되는 제 2 모듈 리스트를 비교하여 API 후킹기법에 의해 은닉된 모듈을 선별적으로 사용자에게 통보함으로써 API 후킹기법에 의해 은닉된 모듈을 용이하게 모니터링 할 수 있는 효과를 제공한다.
본 발명의 실시예에 따른 은닉 프로세스 모니터링 시스템 및 모니터링 방법은, 은닉된 프로세스 또는 은닉된 모듈만을 자동으로 감지하여 종료함으로써 전문적인 지식이 없는 사용자도 은닉된 프로세스 또는 모듈을 용이하게 시스템에서 제거할 수 있는 효과를 제공한다.
본 발명의 실시예에 따른 은닉 프로세스 모니터링 시스템 및 모니터링 방법은, 프로세스 리스트에 포함된 모든 프로세스의 실행파일의 속성을 통해 특정 언어로 작성된 것으로 판단된 경우 이를 사용자에게 통보함으로써, 해킹 프로세스로 의심이 되는 프로세스를 사용자에게 선별적으로 통보할 수 있는 효과를 제공한다.
마지막으로 본 발명의 실시예에 따른 은닉 프로세스 모니터링 시스템 및 모니터링 방법은, 설정시각 이후 예컨대 시스템 시작시각 이후에 실행된 것으로 판단된 프로세스를 사용자에게 통보함으로써 시스템 시작 이후에 사용자가 의도하지 않은 프로세스가 해킹 등에 의해 생성되는 것을 방지할 수 있는 효과를 제공한다.
아울러 본 발명의 바람직한 실시예들은 예시의 목적을 위해 개시된 것이며, 당업자라면 본 발명의 사상과 범위 안에서 다양한 수정, 변경, 부가 등이 가능할 것이며, 이러한 수정 변경 등은 이하의 특허청구의 범위에 속하는 것으로 보아야 할 것이다.

Claims (27)

  1. 운영체제를 사용하는 시스템의 은닉 프로세스 모니터링 방법 있어서,
    현재 실행중인 프로세스 별로 EPROCESS 구조체를 구성하는 프로세스 링크정보를 호출하는 제 1 단계; 및
    호출된 상기 프로세스 링크정보에 따라 현재 실행중인 모든 프로세스에 대한 제 1 프로세스 리스트를 생성하는 제 2 단계;를 포함하여 구성되는 것을 특징으로 하는 은닉 프로세스 모니터링 방법.
  2. 제 1 항에 있어서, 상기 은닉 프로세스 모니터링 방법은,
    API 함수를 통해 실행중인 프로세스에 대한 제 2 프로세스 리스트를 생성하는 제 3 단계; 및
    상기 제 1 프로세스 리스트와 상기 제 2 프로세스 리스트를 비교하여 은닉된 프로세스를 사용자에게 통보하는 제 4 단계;를 더 포함하여 구성되는 것을 특징으로 하는 은닉 프로세스 모니터링 방법.
  3. 제 1 항 또는 제 2 항에 있어서, 제 1 단계는,
    상기 프로세스 링크정보로서 ActiveProcessLinks를 호출하는 것을 특징으로 하는 은닉 프로세스 모니터링 방법.
  4. 제 3 항에 있어서, 제 1 단계는,
    PsActiveProcessHead 또는 PsInitialSystemProcess를 통해 상기 ActiveProcessLinks를 호출하는 것을 특징으로 하는 은닉 프로세스 모니터링 방법.
  5. 제 3 항 또는 제 4 항에 있어서,
    상기 운영체제는 윈도우즈 2000이고,
    제 1 단계는, 특정 프로세스의 EPROCESS 구조체의 시작 포인터로부터 오프-셋 +0x0a0 에 위치하는 Flink 및 오프-셋 +0x0a4 에 위치하는 Blink를 통해 각각 다음 프로세스의 EPROCESS 구조체의 시작 포인터 및 이전 프로세스의 EPROCESS 구조체의 시작 포인터를 검색하는 방법으로 상기 ActivceProcessLinks를 호출하는 것을 특징으로 하는 은닉 프로세스 모니터링 방법.
  6. 제 3 항 또는 제 4 항에 있어서,
    상기 운영체제는 윈도우즈 XP이고,
    제 1 단계는, 특정 프로세스의 EPROCESS 구조체의 시작 포인터로부터 오프-셋 +0x088 에 위치하는 Flink 및 오프-셋 +0x08c 에 위치하는 Blink를 통해 각각 다음 프로세스의 EPROCESS 구조체의 시작 포인터 및 이전 프로세스의 EPROCESS 구조체의 시작 포인터를 연속적으로 검색하는 방법으로 상기 ActivceProcessLinks를 호출하는 것을 특징으로 하는 은닉 프로세스 모니터링 방법.
  7. 제 1 항 또는 제 2 항에 있어서, 제 1 단계는,
    상기 프로세스 링크정보로서 SessionProcessLinks를 호출하는 것을 특징으로 하는 은닉 프로세스 모니터링 방법.
  8. 제 7 항에 있어서,
    상기 운영체제는 윈도우즈 2000이고,
    제 1 단계는, 특정 프로세스의 EPROCESS 구조체의 시작 포인터로부터 오프-셋 +0x118 에 위치하는 Flink, 오프-셋 +0x11c 에 위치하는 Blink를 통해 각각 다음 프로세스의 EPROCESS 구조체의 시작 포인터 및 이전 프로세스의 EPROCESS 구조체의 시작 포인터를 연속적으로 검색하는 방법으로 상기 SessionProcessLinks를 호출하는 것을 특징으로 하는 은닉 프로세스 모니터링 방법.
  9. 제 7 항에 있어서,
    상기 운영체제는 윈도우즈 XP이고,
    제 1 단계는, 특정 프로세스의 EPROCESS 구조체의 시작 포인터로부터 오프-셋 +0x0b4 에 위치하는 Flink, 오프-셋 +0x0b8 에 위치하는 Blink를 통해 각각 다음 프로세스의 EPROCESS 구조체의 시작 포인터 및 이전 프로세스의 EPROCESS 구조체의 시작 포인터를 연속적으로 검색하는 방법으로 상기 SessionProcessLinks를 호출하는 것을 특징으로 하는 은닉 프로세스 모니터링 방법.
  10. 제 2 항에 있어서, 제 3 단계는,
    EnumProcesses() 함수를 통해 제 2 프로세스 리스트를 생성하는 것을 특징으로 하는 은닉 프로세스 모니터링 방법.
  11. 제 1 항, 제 2 항 또는 제 10 항 중 어느 한 항에 있어서,
    제 1 단계는, 현재 실형중인 프로세스 별로 EPROCESS 구조체를 구성하는 프로세스 링크정보 및 부속하는 모듈 정보를 더 호출하고,
    제 2 단계는, 호출된 상기 프로세스 링크정보에 따라 현재 실행중인 모든 프로세스에 대한 제 1 프로세스 리스트 및 각 프로세스 별로 제 1 모듈 리스트를 생성하는 것을 특징으로 하는 은닉 프로세스 모니터링 방법.
  12. 제 2 항 또는 제 10 항에 있어서,
    제 1 단계는, 현재 실형중인 프로세스 별로 EPROCESS 구조체를 통해 부속하는 모듈 정보를 더 호출하고,
    제 2 단계는, 호출된 상기 모듈 정보에 따라 현재 실행중인 모든 프로세스 별로 제 1 모듈 리스트를 생성하고,
    제 3 단계는, API 함수를 통해 프로세스 별로 제 2 모듈 리스트를 더 생성하고,
    제 4 단계는, 상기 제 1 모듈 리스트 및 상기 제 2 모듈 리스트를 더 비교하여 은닉된 모듈을 사용자에게 더 통보하는 것을 특징으로 하는 은닉 프로세스 모니 터링 방법.
  13. 제 12 항에 있어서, 제 1 단계는,
    상기 EPROCESS 구조체의 PEB를 통해 상기 모듈 정보를 호출하는 것을 특징으로 하는 은닉 프로세스 모니터링 방법.
  14. 제 12 항 또는 제 13 항에 있어서, 제 1 단계는,
    상기 모듈 정보로서 InLoadOrderLinks, InMemoryOrderLinks, InInitializationOrderLinks를 호출하는 것을 특징으로 하는 은닉 프로세스 모니터링 방법.
  15. 제 12 항 또는 제 13 항에 있어서, 제 3 단계는,
    EnumProcessModules() 함수를 통해 상기 제 2 모듈 리스트를 생성하는 것을 특징으로 하는 은닉 프로세스 모니터링 방법.
  16. 제 1 항, 제 2 항 또는 제 10 항 중 어느 한 항에 있어서, 제 4 단계는,
    제 1 프로세스 리스트에 포함된 프로세스의 실행파일의 파일속성을 통해 언어정보를 추출하여 특정 언어정보에 해당하는 프로세스를 사용자에게 더 통보하는 것을 특징으로 하는 은닉 프로세스 모니터링 방법.
  17. 제 1 항, 제 2 항 또는 제 10 항 중 어느 한 항에 있어서, 상기 은닉 프로세스 모니터링 방법은,
    제 1 프로세스 리스트에만 포함된 프로세스를 자동으로 종료하는 제 5 단계;를 더 포함하는 것을 특징으로 하는 은닉 프로세스 모니터링 방법.
  18. 제 2 항 또는 제 10 항에 있어서, 제 2 단계는,
    상기 각 프로세스 별로 EPROCESS 구조체의 CreateTime 및 ImageFileName을 통해 상기 프로세스의 실행시간 및 실행파일명을 포함하는 파일경로를 더 호출하고, 제 2 프로세스 리스트는 프로세스 별로 상기 실행시간 및 상기 실행파일명을 포함하는 파일경로를 더 포함하여 생성되는 것을 특징으로 하는 은닉 프로세스 모니터링 방법.
  19. 제 18 항에 있어서, 제 4 단계는,
    제 1 프로세스 리스트에 포함된 프로세스의 실행시간이 설정시간 이후인 경우 해당 프로세스를 사용자에게 더 통보하는 것을 특징으로 하는 은닉 프로세스 모니터링 방법.
  20. 윈도우즈 계열 운영체제를 사용하는 시스템의 은닉 프로세스 모니터링 시스템에 있어서,
    현재 실행중인 프로세스 별로 EPROCESS 구조체를 구성하는 프로세스 링크정 보를 호출하는 프로세스 링크정보 호출부;
    호출된 상기 프로세스 링크정보에 따라 현재 실행중인 모든 프로세스에 대한 제 1 프로세스 리스트를 생성하는 제 1 프로세스 리스트 생성부;
    API 함수를 통해 실행중인 프로세스에 대한 제 2 프로세스 리스트를 생성하는 제 2 프로세스 리스트 생성부;
    상기 제 1 프로세스 리스트와 상기 제 2 프로세스 리스트를 비교하는 프로세스 리스트 비교부; 및
    상기 프로세스 리스트 비교부의 비교결과 은닉된 프로세스를 사용자에게 통보하는 은닉 프로세스 통보부;를 포함하여 구성되는 것을 특징으로 하는 은닉 프로세스 모니터링 시스템.
  21. 제 20 항에 있어서,
    상기 프로세스 링크정보는, ActiveProcessLinks 및/또는 SessionProcessLinks이고, 상기 API 함수는 EnumProcesses() 및/또는 ZwQuerySystemInformation인 것을 특징으로 하는 은닉 프로세스 모니터링 시스템.
  22. 제 20 항 또는 제 21 항에 있어서, 상기 은닉 프로세스 모니터링 시스템은,
    제 1 프로세스 리스트에만 포함된 프로세스를 자동으로 종료시키는 은닉 프로세스 종료부;를 더 포함하여 구성되는 것을 특징으로 하는 은닉 프로세스 모니터링 시스템.
  23. 제 20 항 또는 제 21 항에 있어서, 상기 은닉 프로세스 모니터링 시스템은,
    제 1 프로세스 리스트에 포함되는 각 프로세스 별로 EPROCESS 구조체의 PEB를 통해 각 프로세스별로 모듈정보를 호출하는 모듈정보 호출부;
    호출된 상기 모듈정보에 따라 현재 실행중인 프로세스 별로 제 1 모듈 리스트를 생성하는 제 1 모듈 리스트 생성부;
    API 함수를 통해 실행중인 프로세스 별로 제 2 모듈 리스트를 생성하는 제 2 모듈 리스트 생성부;
    상기 제 1 모듈 리스트와 상기 제 2 모듈 리스트를 비교하는 모듈 리스트 비교부; 및
    상기 모듈 리스트 비교부의 비교결과 은닉된 모듈을 사용자에게 통보하는 은닉 모듈 통보부;를 더 포함하여 구성되는 것을 특징으로 하는 은닉 프로세스 모니터링 시스템.
  24. 제 23 항에 있어서,
    상기 모듈정보는, InLoadOrderLinks, InMemoryOrderLinks, InInitializationOrderLinks이고, 상기 제 2 모듈 리스트 생성부의 API 함수는 EnumProcessModules()인 것을 특징으로 하는 은닉 프로세스 모니터링 시스템.
  25. 제 23 항에 있어서, 상기 은닉 프로세스 모니터링 시스템은,
    제 1 모듈 리스트에만 포함된 모듈을 자동으로 종료시키는 은닉 모듈 종료부;를 더 포함하여 구성되는 것을 특징으로 하는 은닉 프로세스 모니터링 시스템.
  26. 윈도우즈 계열 운영체제를 사용하는 시스템의 은닉 프로세스 모니터링 방법을 실행할 수 있는 프로그램을 기록매체에 있어서,
    현재 실행중인 프로세스 별로 EPROCESS 구조체를 구성하는 프로세스 링크정보를 호출하는 제 1 단계;
    호출된 상기 프로세스 링크정보에 따라 현재 실행중인 모든 프로세스에 대한 제 1 프로세스 리스트를 생성하는 제 2 단계;
    API 함수를 통해 실행중인 프로세스에 대한 제 2 프로세스 리스트를 생성하는 제 3 단계; 및
    상기 제 1 프로세스 리스트와 상기 제 2 프로세스 리스트를 비교하여 은닉된 프로세스를 사용자에게 통보하는 제 4 단계;를 더 포함하여 구성되는 것을 특징으로 하는 은닉 프로세스 모니터링 방법을 실행할 수 있는 프로그램을 기록매체.
  27. 제 26 항에 있어서,
    상기 프로세스 링크정보는, ActiveProcessLinks 및/또는 SessionProcessLinks 이고, 상기 API 함수는 EnumProcesses() 및/또는 ZwQuerySystemInformation 인 것을 특징으로 하는 은닉 프로세스 모니터링 방법을 실행할 수 있는 프로그램을 기록매체.
KR1020060006460A 2006-01-20 2006-01-20 은닉 프로세스 모니터링 방법 및 모니터링 시스템 KR100832074B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020060006460A KR100832074B1 (ko) 2006-01-20 2006-01-20 은닉 프로세스 모니터링 방법 및 모니터링 시스템

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020060006460A KR100832074B1 (ko) 2006-01-20 2006-01-20 은닉 프로세스 모니터링 방법 및 모니터링 시스템

Publications (2)

Publication Number Publication Date
KR20070076935A true KR20070076935A (ko) 2007-07-25
KR100832074B1 KR100832074B1 (ko) 2008-05-27

Family

ID=38501674

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020060006460A KR100832074B1 (ko) 2006-01-20 2006-01-20 은닉 프로세스 모니터링 방법 및 모니터링 시스템

Country Status (1)

Country Link
KR (1) KR100832074B1 (ko)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100938672B1 (ko) * 2007-11-20 2010-01-25 한국전자통신연구원 악성 코드에 의해 삽입된 동적 연결 라이브러리 검출 장치 및 방법
WO2010035957A2 (ko) * 2008-09-25 2010-04-01 주식회사 안철수연구소 은폐된 시스템 개체 진단 시스템 및 진단 방법
WO2010044616A2 (ko) * 2008-10-15 2010-04-22 주식회사 씨디네트웍스 은닉 프로세스 모니터링 방법 및 시스템
KR101366544B1 (ko) * 2012-11-09 2014-02-26 (주)네오위즈게임즈 해킹을 위한 dll 루트킷 감지 방법 및 장치
KR101438979B1 (ko) * 2012-12-31 2014-09-11 현대자동차주식회사 소프트웨어 검사 방법 및 시스템
KR101439207B1 (ko) * 2012-11-09 2014-09-15 (주)네오위즈게임즈 해킹 프로세스 감지 방법 및 장치
CN110765456A (zh) * 2018-11-07 2020-02-07 北京安天网络安全技术有限公司 一种检测隐藏进程的方法、装置及存储设备
CN112612633A (zh) * 2021-01-06 2021-04-06 Oppo广东移动通信有限公司 进程间通信方法、装置、存储介质以及终端

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001306338A (ja) 2000-04-20 2001-11-02 Meidensha Corp プロセスの監視方式

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100938672B1 (ko) * 2007-11-20 2010-01-25 한국전자통신연구원 악성 코드에 의해 삽입된 동적 연결 라이브러리 검출 장치 및 방법
WO2010035957A2 (ko) * 2008-09-25 2010-04-01 주식회사 안철수연구소 은폐된 시스템 개체 진단 시스템 및 진단 방법
WO2010035957A3 (ko) * 2008-09-25 2010-07-01 주식회사 안철수연구소 은폐된 시스템 개체 진단 시스템 및 진단 방법
WO2010044616A2 (ko) * 2008-10-15 2010-04-22 주식회사 씨디네트웍스 은닉 프로세스 모니터링 방법 및 시스템
WO2010044616A3 (ko) * 2008-10-15 2010-07-29 주식회사 씨디네트웍스 은닉 프로세스 모니터링 방법 및 시스템
KR101039551B1 (ko) * 2008-10-15 2011-06-09 (주)씨디네트웍스 은닉 프로세스 모니터링 방법 및 시스템
KR101366544B1 (ko) * 2012-11-09 2014-02-26 (주)네오위즈게임즈 해킹을 위한 dll 루트킷 감지 방법 및 장치
KR101439207B1 (ko) * 2012-11-09 2014-09-15 (주)네오위즈게임즈 해킹 프로세스 감지 방법 및 장치
KR101438979B1 (ko) * 2012-12-31 2014-09-11 현대자동차주식회사 소프트웨어 검사 방법 및 시스템
CN110765456A (zh) * 2018-11-07 2020-02-07 北京安天网络安全技术有限公司 一种检测隐藏进程的方法、装置及存储设备
CN112612633A (zh) * 2021-01-06 2021-04-06 Oppo广东移动通信有限公司 进程间通信方法、装置、存储介质以及终端
CN112612633B (zh) * 2021-01-06 2023-10-03 Oppo广东移动通信有限公司 进程间通信方法、装置、存储介质以及终端

Also Published As

Publication number Publication date
KR100832074B1 (ko) 2008-05-27

Similar Documents

Publication Publication Date Title
KR100832074B1 (ko) 은닉 프로세스 모니터링 방법 및 모니터링 시스템
US10296437B2 (en) Framework for efficient security coverage of mobile software applications
US10181029B1 (en) Security cloud service framework for hardening in the field code of mobile software applications
US9594905B1 (en) Framework for efficient security coverage of mobile software applications using machine learning
US9367681B1 (en) Framework for efficient security coverage of mobile software applications using symbolic execution to reach regions of interest within an application
US9009823B1 (en) Framework for efficient security coverage of mobile software applications installed on mobile devices
US9009822B1 (en) Framework for multi-phase analysis of mobile applications
JP6829718B2 (ja) 複数のソフトウェアエンティティにわたって悪意あるビヘイビアを追跡するためのシステムおよび方法
US7941861B2 (en) Permitting multiple tasks requiring elevated rights
US7823201B1 (en) Detection of key logging software
US20140137183A1 (en) Security system and method for the android operating system
US20070240215A1 (en) Method and system for tracking access to application data and preventing data exploitation by malicious programs
JP2007316637A (ja) 個別アプリケーション・プログラム用のスクリーンセーバ
US11290322B2 (en) Honeypot asset cloning
JP2004537105A (ja) 状態参照モニタ
US8990116B2 (en) Preventing execution of tampered application code in a computer system
CN104252594B (zh) 病毒检测方法和装置
JP5159896B2 (ja) プロセス分離実行を通じたdrmクライアント衝突防止システム及び方法
US7716650B2 (en) Non-destructive debugging for add-ins
CN112257037B (zh) 一种进程水印方法、系统及电子设备
Chailytko et al. Defeating sandbox evasion: how to increase the successful emulation rate in your virtual environment
CN111988322A (zh) 一种攻击事件展示系统
JP5423063B2 (ja) 情報処理装置と方法とプログラム
CN111062035A (zh) 一种勒索软件检测方法、装置、电子设备及存储介质
US11949696B2 (en) Data security system with dynamic intervention response

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
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: 20110411

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20130329

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20160329

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20170328

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20180405

Year of fee payment: 11