KR20120014673A - 위장 동적연결라이브러리 삽입에 의한 프로세스 변조 검출방법 - Google Patents

위장 동적연결라이브러리 삽입에 의한 프로세스 변조 검출방법 Download PDF

Info

Publication number
KR20120014673A
KR20120014673A KR1020100076786A KR20100076786A KR20120014673A KR 20120014673 A KR20120014673 A KR 20120014673A KR 1020100076786 A KR1020100076786 A KR 1020100076786A KR 20100076786 A KR20100076786 A KR 20100076786A KR 20120014673 A KR20120014673 A KR 20120014673A
Authority
KR
South Korea
Prior art keywords
dll
selection
address
game
dynamic link
Prior art date
Application number
KR1020100076786A
Other languages
English (en)
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 KR1020100076786A priority Critical patent/KR20120014673A/ko
Publication of KR20120014673A publication Critical patent/KR20120014673A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/14Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4494Execution paradigms, e.g. implementations of programming paradigms data driven
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • G06F9/453Help systems

Abstract

이 발명은 프로세스에 위장 동적연결라이브러리를 삽입하여 프로세스를 변조하는 것을 검출하는 방법에 관한 것이다.
이 발명에 따른 위장 동적연결라이브러리 삽입에 의한 프로세스 변조 검출방법은, 보안프로세스가 실행프로세스에 로드된 동적연결라이브러리 파일 중 윈도우즈 DLL로 판단되는 선택 DLL의 PE구조를 분석하여 헤더를 추출하는 제1단계와, 상기 보안프로세스가 상기 선택 DLL의 헤더로부터 섹션개수 및 섹션이름을 분석하여 상기 선택 DLL의 위장 여부를 판단하는 제2단계와, 상기 제2단계의 판단 결과 상기 선택 DLL이 위장 DLL로 판단되면, 상기 보안프로세스가 상기 선택 DLL을 상기 실행프로세스로부터 언로딩하거나 상기 실행프로세스를 종료시키는 제3단계를 포함한다.

Description

위장 동적연결라이브러리 삽입에 의한 프로세스 변조 검출방법{method for dectecting falsification of process by inserting disguised DLL}
이 발명은 프로세스 변조 검출방법에 관한 것으로서, 보다 상세하게는 프로세스에 위장 동적연결라이브러리를 삽입하여 프로세스를 변조하는 것을 검출하는 방법에 관한 것이다.
초고속인터넷이 널리 보급되면서 온라인 게임인구가 급속도로 증가하고 수많은 온라인 게임들이 개발되었지만 아직까지 게임 보안에 대한 인식과 개념이 매우 미약하다. 컴퓨터에서의 불법 프로그램을 핵 또는 해킹프로그램이라고 하며, 게임에서의 핵 또는 해킹프로그램을 게임 핵이라고 하는데, 이 게임 핵은 특정 게임프로세스의 파일이나 메모리 등을 조작하는 프로그램을 가리킨다.
게임 핵은 게임의 메모리를 조작하여 능력치나 체력 등과 같은 특정 데이터를 바꾸어 주거나, 격투기 게임의 경우 타격 속도나 타격 횟수를 증가시키거나, 매크로 기능을 부여함으로써, 게이머가 게임을 손쉽게 이길 수 있도록 해준다. 이 때문에 게이머들은 온라인 게임시 게임 핵을 설치하고 싶어한다. 그러나, 온라인 게임에서의 게임 핵 사용은 사용자들간의 밸런스 붕괴, 게임서버로의 가중한 부하 등과 같은 문제를 일으킬 수 있다. 즉, 온라인 게임에서 일부 사용자들이 비정상적인 방법으로 이득을 보면서 게임(play)을 하게 되면, 다른 사용자들과의 균형이 무너지게 되고, 심각한 경우에는 온라인 게임 전체의 밸런스가 깨지며 게임서버에 과부하가 발생하게 된다.
따라서, 게임 공급자들은 게임과 함께 보안프로그램을 게이머 클라이언트시스템에 설치하도록 하고 있는 바, 사용자가 게임프로그램을 실행시키면 게임프로세스가 실행되고 보안프로세스도 게임과 함께 실행된다. 아울러, 게임이 실행되는 동안에 게이머가 보안프로세스를 중단시키면 게임프로세스도 함께 중단된다. 즉, 온라인 게임시 게임프로세스와 함께 보안프로세스가 실행되어, 그 실행된 보안프로세스가 게임 핵의 실행을 차단한다.
통상적으로 '프로그램' 또는 '파일'은 컴퓨터를 실행시키기 위해 차례대로 작성된 명령어 모음을 의미하며, '프로세스'라 함은 컴퓨터 내에서 실행중인 프로그램을 일컫는다. 즉, 게임프로그램은 게임프로세스로서 게이머 컴퓨터에서 실행되고, 보안프로그램은 보안프로세스로서 실행되며, 보안프로세스가 컴퓨터에서 실행되는 게임 핵을 검출하여 차단한다.
게임프로세스, 보안프로세스 및 게임 핵 프로세스가 컴퓨터에서 실행됨에 있어서, 통상적으로 윈도우즈 운영체제(Windows OS)는 프로세스가 실행될 때 필요한 다수의 동적연결라이브러리(DLL)를 기본적으로 제공하고 있으며, 윈도우 운영체제 하에서 구동되는 실행 프로세스들(게임프로세스, 보안프로세스, 게임 핵 프로세스 등)은 자신의 실행에 필요한 동적연결라이브러리(DLL)를 윈도우즈 커널 메모리에 로드한다.
예컨대, 윈도우즈 운영체제에서 동작하는 유저인터페이스(UI) 프로세스는 윈도우즈 운영체제가 기본적으로 제공하는 동적연결라이브러리들을 로드하여 사용하는데, 구체적으로 User32.dll, Kernel32.dll, ntdll.dll 등이 포함된다. 이와 유사하게 게임프로세스와 게임 핵 프로세스는 각각 자신의 실행에 필요한 기능을 구현하기 위한 동적연결라이브러리(DLL)들을 로드하는 바, 이 로드되는 동적연결라이브러리들 중에는 윈도우즈 운영체제에서 기본적으로 제공하는 동적연결라이브러리들과, 자체적으로 제작한 동적연결라이브러리들(그래픽 관련 동적연결라이브러리, 게임이 사적으로 사용하는 동적연결라이브러리, 사운드 관련 동적연결라이브러리 등), 또는 외부프로세스에서 삽입하는 동적연결라이브러리들이 포함된다.
종래의 게임 핵 방법으로서, 게임프로세스에 게임 핵 기능을 수행하는 게임 핵 동적연결라이브러리를 삽입함으로써, 게임프로세스가 그 게임 핵 동적연결라이브러리를 로드하여 게임 핵이 구동되도록 하는 방법이 있다. 이렇게 삽입된 게임 핵 동적연결라이브러리는 보안프로세스에 의해 쉽게 검출되어 차단될 수 있지만, 실행파일을 패킹(packing)하면 본래의 코드가 압축되어 감춰지기 때문에 언패킹 과정을 거쳐야 바이너리 분석이 가능하게 된다. 따라서, 패킹된 파일에 대해서는 언패킹하지 않는 이상 게임 핵 여부를 분석하기 곤란하다. 아울러, 게임 핵 동적연결라이브러리들은 그 파일명과 제작사 등의 파일 정보를 윈도우즈 운영체제에서 기본적으로 제공하는 동적연결라이브러리나 게임에서 자체적으로 제작된 동적연결라이브러리의 파일 정보로 위장함으로써 외형적으로는 게임프로세스가 게임 핵 동적연결라이브러리를 윈도우즈 운영체제 제공 동적연결라이브러리 또는 게임사 제작 동적연결라이브러리로 착각하도록 하고 있다.
즉 최근 대부분의 게임 핵 동적연결라이브러리는 윈도우즈 운영체제에서 제공하는 동적연결라이브러리나 게임에서 자체적으로 제작된 동적연결라이브러리로 위장하고 패킹하여 게임프로세스에 삽입되고 있지만, 종래에는 윈도우즈 운영체제 제공 동적연결라이브러리나 게임사 제작 동적연결라이브러리로 위장하고 패킹된 게임 핵 동적연결라이브러리를 검출하는 방법이 제안된 바 없다.
상술한 종래기술의 문제점을 해결하기 위하여 안출된 이 발명의 목적은, 윈도우즈 운영체제나 게임 제작사가 제공하는 동적연결라이브러리로 위장된 게임 핵 동적연결라이브러리를 삽입하는 방법으로 변조된 프로세스의 변조 여부를 검출하는 방법을 제공하기 위한 것이다.
상기한 목적을 달성하기 위한 이 발명의 한 실시예에 따른 위장 동적연결라이브러리 삽입에 의한 프로세스 변조 검출방법은, 보안프로세스가 실행프로세스에 로드된 동적연결라이브러리 중 윈도우즈 DLL로 판단되는 선택 DLL을 분석하여 헤더를 추출하는 제1단계와,
상기 보안프로세스가 상기 선택 DLL의 헤더로부터 섹션 정보들을 추출하여 상기 선택 DLL의 위장 여부를 판단하는 제2단계와,
상기 제2단계의 판단 결과 상기 선택 DLL이 위장 DLL로 판단되면, 상기 보안프로세스가 상기 선택 DLL을 상기 실행프로세스로부터 언로딩하거나 상기 실행프로세스를 종료시키는 제3단계를 포함한 것을 특징으로 한다.
이상과 같이 이 발명에 따르면 윈도우즈 운영체제나 게임 제작사에서 제공하는 동적연결라이브러리로 위장한 해킹 동적연결라이브러리를 실행 프로세스에 삽입하는 방법으로 변조된 실행 프로세스의 변조 여부를 검출할 수 있는 잇점이 있다.
도 1은 일반적인 윈도우즈 커널 메모리 구조를 도시한 도면이다.
도 2는 일반적인 실행파일의 PE(Portable Excutable) 구조를 도시한 도면이다.
도 3a 및 도 3b는 이 발명에 따라 보안프로세스가 프로세스의 변조를 검출하는 과정을 도시한 동작 흐름도이다.
이하, 첨부된 도면을 참조하며 이 발명의 한 실시예에 따른 위장 동적연결라이브러리 삽입에 의한 프로세스 변조 검출방법을 보다 상세하게 설명한다.
도 1은 일반적인 윈도우즈 커널 메모리 구조를 도시한 도면이다.
윈도우즈 커널 메모리에는 윈도우즈 운영체제상에서 실행되는 모든 드라이버들에 관한 정보들이 다양한 형태로 저장된다. 이 윈도우즈 커널 메모리에 저장되는 정보들에는 시스템모듈인포메이션(11), 드라이버객체공간(12), 드라이버이미지공간(PE, Portable Executable 구조체)(13), IDT(Interrupt Descriptor Table)(14), SSDT(System Service Descriptor Table)(16)가 포함된다.
NT 커널(17)은 윈도우즈 커널 메모리 내부에서 일반적으로 사용되는 다양한 데이터 구조체의 관리, 드라이버 로드, 장치 입출력, 시스템 콜 제공 등을 담당한다. 시스템모듈인포메이션(11)에는 현재 로드된 드라이버들의 목록이 저장되는데, 각 드라이버 이미지의 드라이버 이름과, 그 드라이버 이미지가 로드된 장소의 시작주소 및 끝주소 정보가 저장된다.
드라이버객체공간(12)에는 각 드라이버 객체의 함수 테이블이 저장되는데, 임의의 드라이버의 드라이버 객체를 구성하는 함수들이 참조하는 주소값은 해당 드라이버의 드라이버이미지공간(PE 구조체)(13) 내의 주소값이어야 한다. 드라이버이미지공간(PE 구조체)(13)에는 드라이버 파일이 현재 메모리에 로드된 드라이버의 이미지(드라이버 파일이 메모리에 로드된 상태를 이미지라 함)가 저장된다. 즉, 드라이버이미지공간(13)에는 실행프로세스에 로드된 동적연결라이브러리 파일 이미지가 PE 구조체 형태로 저장된다.
도 2는 일반적인 실행파일의 PE(Portable Excutable) 구조를 도시한 도면이다.
PE(Portable Excutable)란 1993년 마이크로소프트(Microsoft)사에서 표준화한 형식으로 이식성이 좋은(Portable) 실행구조(Excutable)를 의미하며 32bit 혹은 64bit의 윈도우즈 운영체제에서 사용되는 실행 파일(File), 오브젝트 코드(Object code), 동적연결라이브러리(DLL)등이 이러한 PE 구조를 갖는다.
PE는 API 내보내기(Export)/불러오기(Import) 테이블(table), 리소스(Resource) 등이 포함된 구조체로 이루어져 있다.
도 2에 도시된 바와 같이 PE구조는 실행 파일에서 필요한 모든 정보들을 포함하며 여러 섹션(Section) 영역을 포함한다.
이 중 IMAGE_NT_HEADER는 PE 고유의 식별자로 시작하며 실행될 수 있는 시스템, 섹션 수, 시간 값, 실행 속성 등이 포함되어 있다. 코드, 데이터, 리소스, 디버그 정보와 같은 서로 다른 데이터 속성을 가지는 데이터들로 분리, 관리되는 섹션 테이블이 존재한다. 그리고, 실제 실행되는 실행코드와 데이터 혹은 리소스와 같은 여러 가지 실제적인 데이터가 포함된 섹션 데이터로 구성되어 있다.
윈도우즈 운영체제에서 실행프로세스에 로드된 동적연결라이브러리 파일 이미지는 모두 PE 구조체 형태로 저장되고 실행된다.
도 3a 및 도 3b는 이 발명에 따라 보안프로세스가 실행프로세스의 변조를 검출하는 과정을 도시한 동작 흐름도이다.
이 발명에 따른 위장 동적연결라이브러리 삽입에 의한 프로세스 변조 검출방법은 보안프로세스에 의해 구현된다.
보안프로세스는 실행프로세스(게임프로세스)에 로드된 모든 동적연결라이브러리(DLL) 리스트와 각 동적연결라이브러리의 실행경로나 맵핑된 DLL의 메모리 주소(맵핑 주소)를 읽어온다(S301). 구체적으로 보안프로세스는 CreatToolhelp32Snapshot()와 같은 API(application programming interface) 함수를 이용하면 프로세스 리스트와, 각 프로세스에 로드된 모든 동적연결라이브러리 파일 리스트 및 각 파일의 실행경로, 메모리에 맵핑된 주소(맵핑 주소) 정보를 얻을 수 있다. 보안프로세스는 이렇게 얻어진 정보 중 게임프로세스에 로드된 동적연결라이브러리 리스트와 각 동적연결라이브러리의 실행경로, 맵핑 주소를 추출하여 별도의 구조체로 저장함으로써, 게임프로세스에 로드된 DLL 리스트와 각 DLL의 실행경로 또는 맵핑 주소를 읽을 수 있다.
다음, 보안프로세스는 단계 S301에서 읽어온 DLL 리스트 중 하나의 DLL을 순차적으로 선택하고(S302), 선택 DLL의 실행경로 정보를 이용하여 선택 DLL의 내부 이름, 언어, 원본 파일 이름, 제품 버전, 제품 이름, 파일 버전, 회사 등의 파일 정보를 읽어온다(S303). 이때, GetFileVersionInfo와 같은 윈도우즈 API를 사용하여 선택 DLL의 파일 정보를 읽어 올 수 있다.
보안프로세스는 선택 DLL의 파일 정보로부터 선택 DLL이 윈도우즈 운영체제에서 기본적으로 제공하는 동적연결라이브러리(이하, 윈도우즈 DLL 이라 함)인지를 판단한다(S304). 선택 DLL이 윈도우즈 DLL로 판단되면(S305), 보안프로세스는 드라이버이미지공간에서 선택 DLL의 PE 구조를 분석하여 선택 DLL의 헤더(IMAGE_FILE_HEADER, IMAGE_NT_HEADERS, IMAGE_SECTION_HEADERS)를 추출한다(S306).
보안프로세스는 추출된 헤더를 분석하여 선택 DLL의 섹션 정보 즉, 섹션 개수와 섹션명을 추출한다(S307). 보안프로세스는 추출된 선택 DLL의 섹션 개수 및 섹션명을 통상적인 윈도우즈 DLL의 섹션 개수 및 섹션명과 비교하여 그 차이가 허용 범위 내인지를 판단한다(S308). 그 차이가 허용 범위 내에서 동일하면(S309), 선택 DLL의 헤더(IMAGE_NT_HEADERS의 IMAGE_OPTIONAL_HEADER)에서 내보내기주소(ExportAddress)와 불러오기주소(ImportAddress)가 정상적으로 존재하는 지를 검사한다(S310). 단계 S309에서 그 차이가 허용 범위 내가 아니면, 보안프로세스는 선택 DLL을 위장 동적연결라이브러리(DLL)로 판단한다(S311). 통상적으로 윈도우즈(System32) DLL은 4개의 섹션으로 이루어지며, 그 이름은 text 섹션, data 섹션, rsrc 섹션, reloc 섹션이다. 위장 DLL은 앞서 설명한 바와 같이 외부프로세스(통상적으로 보안프로세스)가 위장 DLL을 분석하기 어렵게 하기 위해 패킹되는데, 일반적으로 범용적인 툴에 의해 패킹된 파일의 섹션명은 위와 완전히 다르거나 일부 같다고 하더라도 upx나 vpm 등과 같은 일반적이지 않은 섹션명을 포함한다. 따라서, 파일의 섹션 개수와 섹션명과 같은 섹션 정보를 분석하여 그 섹션 개수 및 섹션명이 허용 범위를 벗어난 것인지를 판단한다.
단계 S310의 검사 결과, IMAGE_DATA_DIRECTORY를 분석하여 내보내기주소와 불러오기주소가 정상적으로 존재하는지를 확인한다(S312). 단계 S312에서 내보내기주소 또는 불러오기주소가 존재하지 않으면, 보안프로세스는 단계 S311로 진행하여 선택 DLL을 위장 동적연결라이브러리(DLL)로 판단한다.
단계 S312에서 내보내기주소와 불러오기주소가 정상적으로 존재하면, 보안프로세스는 불러오기주소에 해당하는 불러오기모듈(ImportModule)에 대한 정보(OriginalFirstThunk)가 존재하는지를 검사한다(S313).
불러오기모듈에 대한 정보가 존재하지 않으면(S314), 보안프로세스는 단계 S311로 진행하여 선택 DLL을 위장 DLL로 판단한다. 불러오기모듈에 대한 정보가 존재하면(S314), 보안프로세스는 불러오기모듈(ImportModule)이 사용한 모든 API 개수를 읽어온다(S315).
단계 S315에서 읽어온 API 개수가 임계치 이상이면(S316), 보안프로세스는 선택 DLL을 정상적인 윈도우즈 DLL로 판단한다(S317). 반면, 단계 S316에서 불러오기모듈이 사용한 API의 개수가 임계치 미만이면 보안프로세스는 단계 S311로 진행하여 선택 DLL을 위장 DLL로 판단한다.
앞서 설명한 바와 같이 게임 핵 제작자들은 게임 핵이 바이너리 분석되지 못하도록 하기 위해 패킹함으로써, 내보내기를 하거나 불러오기를 하는 모듈의 주소를 숨기거나 해당 모듈이 사용한 API에 대한 정보를 숨긴다. 따라서, 상술한 바와 같이 분석하면 동적연결라이브러리의 패킹 여부를 판독할 수 있으며, 윈도우즈 DLL로 위장한 게임 핵을 검출할 수 있다.
단계 S311에서 선택 DLL이 위장 DLL로 판단한 후, 보안프로세스는 선택 DLL을 강제로 게임프로세스로부터 언로딩하거나 게임프로세스를 강제로 종료함으로써, 게임 핵이 실행되는 환경에서 게임이 수행되지 못하도록 한다(S318).
한편, 단계 S305에서 선택 DLL이 윈도우즈 DLL이 아닌 경우, 단계 S317에서 선택 DLL을 정상적인 윈도우즈 DLL로 판단한 후, 및 단계 S318에서 선택 DLL을 언로딩하거나 게임프로세스를 종료시킨 후, DLL 리스트의 마지막 DLL 인지를 판단(S319)한 후 마지막 DLL이 아니면 단계 S302로 되돌아간다.
위의 실시예에서는 게임 핵 동적연결라이브러리가 윈도우즈 DLL로 위장한 경우를 예로서 설명하였다. 그러나, 이 발명은 이에 한정되지 아니하며, 게임 핵 동적연결라이브러리가 게임사 제작 동적연결라이브러리(DLL)로 위장한 경우에라도 검출할 수 있다. 이를 상세하게 설명하면, 게임사 제작 DLL은 각 게임사마다 고유의 규칙(예컨대, 윈도우즈 DLL들의 섹션 개수는 4개이고, 섹션명은 text 섹션, data 섹션, rsrc 섹션, reloc 섹션인 점)을 가지도록 제작된다. 게임 핵 제작자가 게임 핵의 분석을 어렵게 하기 위해 패킹한 경우 게임사 제작 DLL로 위장한 게임 핵은 그 게임사 제작 DLL의 규칙을 포함하지 않게 된다. 따라서, 상술한 실시예와 유사하게 게임사 제작 DLL로 위장한 게임 핵이 게임사 제작 DLL의 규칙을 포함하는지 여부를 판별함으로써, 게임사 제작 DLL로 위장한 게임 핵을 검출한다.
11 : 시스템모듈인포메이션 12 : 드라이버객체공간
13 : 드라이버이미지공간 14 : IDT(Interrupt Descriptor Table)
16 : SSDT(System Service Descriptor Table)
17 : NT 커널

Claims (6)

  1. 보안프로세스가 실행프로세스에 로드된 동적연결라이브러리 중 윈도우즈 DLL로 판단되는 선택 DLL을 분석하여 헤더를 추출하는 제1단계와,
    상기 보안프로세스가 상기 선택 DLL의 헤더로부터 섹션 정보들을 추출하여 상기 선택 DLL의 위장 여부를 판단하는 제2단계와,
    상기 제2단계의 판단 결과 상기 선택 DLL이 위장 DLL로 판단되면, 상기 보안프로세스가 상기 선택 DLL을 상기 실행프로세스로부터 언로딩하거나 상기 실행프로세스를 종료시키는 제3단계를 포함한 것을 특징으로 하는 위장 동적연결라이브러리 삽입에 의한 프로세스 변조 검출방법.
  2. 제 1 항에 있어서, 상기 제2단계는 상기 선택 DLL의 섹션개수 및 섹션이름과, 윈도우즈 DLL의 섹션개수 및 섹션이름과 비교하여, 그 차이가 허용범위를 벗어나면, 상기 보안프로세스가 상기 선택 DLL을 위장 DLL로 판단하는 것을 특징으로 하는 위장 동적연결라이브러리 삽입에 의한 프로세스 변조 검출방법.
  3. 제 2 항에 있어서, 상기 제2단계는, 상기 선택 DLL의 섹션개수 및 섹션이름과, 윈도우즈 DLL의 섹션개수 및 섹션이름의 차이가 허용범위 내이면, 상기 보안프로세스가 상기 선택 DLL의 내보내기주소와 불러오기주소가 존재하는지 검사하여, 상기 선택 DLL의 내보내기주소와 불러오기주소가 존재하지 않으면 상기 선택 DLL을 위장 DLL로 판단하는 것을 특징으로 하는 위장 동적연결라이브러리 삽입에 의한 프로세스 변조 검출방법.
  4. 제 3 항에 있어서, 상기 제2단계는, 상기 선택 DLL의 불러오기주소가 존재하고, 상기 불러오기주소에 해당되는 모듈에 대한 정보가 존재하지 않으면, 상기 보안프로세스가 상기 선택 DLL을 위장 DLL로 판단하는 것을 특징으로 하는 위장 동적연결라이브러리 삽입에 의한 프로세스 변조 검출방법.
  5. 제 4 항에 있어서, 상기 제2단계는, 상기 불러오기주소에 해당되는 모듈에 대한 정보가 존재하면, 상기 보안프로세스가 상기 모듈이 사용한 API 개수가 임계치 이상인지 판단하여, 상기 모듈이 사용한 API 개수가 임계치 이상이 아니면 상기 선택 DLL을 위장 DLL로 판단하는 것을 특징으로 하는 위장 동적연결라이브러리 삽입에 의한 프로세스 변조 검출방법.
  6. 제 1 항에 있어서, 상기 제1단계는, 상기 보안프로세스가 상기 실행프로세스에 로드된 모든 DLL 리스트와 각 DLL의 실행경로 또는 맵핑주소를 읽는 단계와, 상기 DLL 리스트 중 상기 선택 DLL을 선택하는 단계와, 상기 선택 DLL의 실행경로 또는 맵핑주소를 이용하여 상기 선택 DLL의 파일 정보를 읽는 단계와, 상기 선택 DLL의 PE구조를 분석하여 헤더를 추출하는 단계를 포함한 것을 특징으로 하는 위장 동적연결라이브러리 삽입에 의한 프로세스 변조 검출방법.

KR1020100076786A 2010-08-10 2010-08-10 위장 동적연결라이브러리 삽입에 의한 프로세스 변조 검출방법 KR20120014673A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020100076786A KR20120014673A (ko) 2010-08-10 2010-08-10 위장 동적연결라이브러리 삽입에 의한 프로세스 변조 검출방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020100076786A KR20120014673A (ko) 2010-08-10 2010-08-10 위장 동적연결라이브러리 삽입에 의한 프로세스 변조 검출방법

Publications (1)

Publication Number Publication Date
KR20120014673A true KR20120014673A (ko) 2012-02-20

Family

ID=45837651

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020100076786A KR20120014673A (ko) 2010-08-10 2010-08-10 위장 동적연결라이브러리 삽입에 의한 프로세스 변조 검출방법

Country Status (1)

Country Link
KR (1) KR20120014673A (ko)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101366544B1 (ko) * 2012-11-09 2014-02-26 (주)네오위즈게임즈 해킹을 위한 dll 루트킷 감지 방법 및 장치
KR101503785B1 (ko) * 2013-10-10 2015-03-18 (주)잉카엔트웍스 동적 라이브러리를 보호하는 방법 및 장치
KR101688632B1 (ko) * 2015-07-31 2016-12-22 한국전자통신연구원 라이브러리 적재 탐지를 위한 방법 및 장치
CN111611580A (zh) * 2020-05-27 2020-09-01 福建天晴在线互动科技有限公司 检测程序是否运行于金山安全沙箱系统环境的方法及系统
US20230092747A1 (en) * 2021-09-22 2023-03-23 International Business Machines Corporation Using containers to clean runtime resouces when unloading a shared library
US11847225B2 (en) 2020-03-06 2023-12-19 Samsung Electronics Co., Ltd. Blocking access to firmware by units of system on chip

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101366544B1 (ko) * 2012-11-09 2014-02-26 (주)네오위즈게임즈 해킹을 위한 dll 루트킷 감지 방법 및 장치
KR101503785B1 (ko) * 2013-10-10 2015-03-18 (주)잉카엔트웍스 동적 라이브러리를 보호하는 방법 및 장치
WO2015053509A1 (ko) * 2013-10-10 2015-04-16 (주)잉카엔트웍스 동적 라이브러리를 보호하는 방법 및 장치
CN105683990A (zh) * 2013-10-10 2016-06-15 Inka安特沃客有限公司 用于保护动态库的方法和装置
CN105683990B (zh) * 2013-10-10 2018-11-09 Inka安特沃客有限公司 用于保护动态库的方法和装置
KR101688632B1 (ko) * 2015-07-31 2016-12-22 한국전자통신연구원 라이브러리 적재 탐지를 위한 방법 및 장치
US11847225B2 (en) 2020-03-06 2023-12-19 Samsung Electronics Co., Ltd. Blocking access to firmware by units of system on chip
CN111611580A (zh) * 2020-05-27 2020-09-01 福建天晴在线互动科技有限公司 检测程序是否运行于金山安全沙箱系统环境的方法及系统
CN111611580B (zh) * 2020-05-27 2022-09-23 福建天晴在线互动科技有限公司 检测程序是否运行于金山安全沙箱系统环境的方法及系统
US20230092747A1 (en) * 2021-09-22 2023-03-23 International Business Machines Corporation Using containers to clean runtime resouces when unloading a shared library

Similar Documents

Publication Publication Date Title
US9858417B2 (en) Detecting malicious computer code in an executing program module
US7657419B2 (en) Analytical virtual machine
US7854004B2 (en) Computer immune system and method for detecting unwanted code in a computer system
EP2713302B1 (en) System and method for countering detection of emulation by malware
US7146305B2 (en) Analytical virtual machine
US7370360B2 (en) Computer immune system and method for detecting unwanted code in a P-code or partially compiled native-code program executing within a virtual machine
CN102799817B (zh) 用于使用虚拟化技术进行恶意软件保护的系统和方法
RU2679175C1 (ru) Способ поведенческого обнаружения вредоносных программ с использованием виртуальной машины-интерпретатора
US9223964B2 (en) Detecting JAVA sandbox escaping attacks based on JAVA bytecode instrumentation and JAVA method hooking
Wang et al. Compac: Enforce component-level access control in android
US20130246038A1 (en) Emulator updating system and method
KR20120014673A (ko) 위장 동적연결라이브러리 삽입에 의한 프로세스 변조 검출방법
US9740864B2 (en) System and method for emulation of files using multiple images of the emulator state
CN109255235B (zh) 基于用户态沙箱的移动应用第三方库隔离方法
CN115659333A (zh) 一种基于二进制插桩的沙箱、内存隔离方法及存储介质
CN108319850B (zh) 沙箱检测的方法、沙箱系统和沙箱设备
CN110414220B (zh) 沙箱内程序动态执行过程中的操作文件提取方法及装置
KR100457405B1 (ko) 타이머 api 후킹 여부 판단방식에 의한 스피드 핵 사용여부 검출방법
CN113769410A (zh) 一种云游戏控制方法、系统、装置及计算机可读存储介质
Lancia et al. Fuzzing and overflows in Java Card smart cards
Bouffard et al. Hardening a Java Card Virtual Machine Implementation with the MPU
KR102226218B1 (ko) 크로스플랫폼 개발 프레임워크로 제작된 애플리케이션을 식별하기 위한 특징정보 추출 장치 및 방법
KR101252185B1 (ko) 쓰레드 체크를 이용한 핵 차단방법
EP2866167A1 (en) System and method for preserving and subsequently restoring emulator state

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application