KR101436742B1 - 메모리 해킹 방어 방법 및 시스템 - Google Patents

메모리 해킹 방어 방법 및 시스템 Download PDF

Info

Publication number
KR101436742B1
KR101436742B1 KR1020130059980A KR20130059980A KR101436742B1 KR 101436742 B1 KR101436742 B1 KR 101436742B1 KR 1020130059980 A KR1020130059980 A KR 1020130059980A KR 20130059980 A KR20130059980 A KR 20130059980A KR 101436742 B1 KR101436742 B1 KR 101436742B1
Authority
KR
South Korea
Prior art keywords
variable
changed
variable value
memory
hacking
Prior art date
Application number
KR1020130059980A
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 KR1020130059980A priority Critical patent/KR101436742B1/ko
Application granted granted Critical
Publication of KR101436742B1 publication Critical patent/KR101436742B1/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/60Protecting data
    • G06F21/604Tools and structures for managing or administering access control systems
    • 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)
  • Computer Security & Cryptography (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Health & Medical Sciences (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Automation & Control Theory (AREA)
  • Storage Device Security (AREA)

Abstract

본 발명은 메모리 해킹 방어 방법 및 시스템에 관한 것으로, 본 발명은 메모리 상에서 실행되는 프로그램의 변수 값이 변조되는 것을 차단하는 메모리 해킹 방어 방법으로, 변수 정의 정보 및 연산자 정의 정보를 포함하는 보호 라이브러리를 이용하여, 상기 변수 및 상기 변수의 연산자를 재정의하고, 상기 재정의된 변수 및 연산자의 지시 정보를 메모리에 저장하는 단계; 상기 재정의된 연산자를 이용하여, 상기 변수의 값을 변경하는 단계; 및 상기 변경된 변수 값을 상기 메모리와 분리된 데이터 저장부에 저장하는 단계를 포함하고, 상기 데이터 저장부는, 상기 프로그램이 구동되는 운영체제(OS)의 커널(Kernel), 그래픽카드 메모리(GPGPU), 상기 프로그램의 라이브러리 파일 중 적어도 하나로 구성된 메모리 해킹 방어 방법을 제공한다.상기와 같은 구성을 통하여, 본 발명에 따른 메모리 해킹 방어 방법 및 시스템은, 해킹 프로세스가 변수 값을 변경하는 것을 제어하여, 메모리 해킹을 원천 차단할 수 있다.

Description

메모리 해킹 방어 방법 및 시스템{THE METHOD AND SYSTEM FOR DEFENDING MEMORY HACKING}
본 발명은 메모리 해킹 방어 방법 및 시스템에 관한 것으로, 보다 구체적으로는 메모리에 저장되는 변수와 연산자를 재정의하고, 재정의된 변수와 연산자를 이용하여 변수 값이 비정상적인 방법으로 변경되는 것을 차단하는 메모리 해킹 방어 방법 및 시스템에 관한 것이다.
최근 전자분야의 발전으로 인해 다양한 하드웨어(Hardware) 기기들이 전자화, 디지털화 되고 있고, 이에 따라 소프트웨어(Software) 프로그램에 의해 동작되는 하드웨어 기기들이 점차 늘어나고 있다.
그중 대표적인 것이 컴퓨터(Computer)로, 컴퓨터에는 운영체제(OS, Operating System)이 설치되어 있고, 각종 어플리케이션이 별도의 프로그램으로 컴퓨터에 설치되어 동작된다. 이러한 컴퓨터는 비단 데스크톱과 같은 개인용 컴퓨터(Personal Computer) 뿐만 아니라 스마트폰(Smart Phone)과 같은 통신 단말기도 해당된다.
그러나, 이처럼 소프트웨어에 의해 프로그래밍된 어플리케이션들이 널리 이용됨에 따라 가장 크게 문제되는 것이 바로 프로그램 해킹(Hacking)이다.
일반적으로, 해킹은 컴퓨터 네트워크의 취약한 보안망에 불법적으로 접근하여, 정보 시스템 또는 특정 단말기 상의 동작에 유해한 영향을 끼치는 제반 행위를 일컫는 것으로서, 결국 시스템 상에서 구동되고 있는 어플리케이션의 프로그램 코드를 임의로 조작하여, 어플리케이션이 개발자가 의도하지 않은 형태로 동작하도록 만드는 것을 말한다.
이런 프로그램 해킹의 일례로는, 인증되지 않은 다수의 사용자에게 어플리케이션을 배포하기 위하여 프로그램 코드를 무단 복사(Copy)하거나, 어플리케이션이해커(Hacker)가 원하는 기능을 수행하도록 프로그램 코드를 조작(Manipulate)하는 것이 있다.
이와 같은 프로그램 해킹은, 개발자의 저작권을 침해거나 어플리케이션이 실행되는 시스템 전반에 큰 영향을 미치는 것으로서 결코 무시하거나 간과할 수 없는 중요한 문제로 부각되고 있다.
관련하여, 대부분의 프로그램 해킹은 메모리 해킹으로 이루어진다. 널리 사용되는 메모리 해킹 방식은 프로그램 상에서 변수 값을 변경하고, 변경된 변수 값을 메모리에서 찾아, 해당 변수가 저장된 위치를 파악하는 것이다.
일례로, 게임 프로그램에서 총알의 개수를 조작하기 위해, 해커는 초기 메모리 값을 검색하고, 총알을 사용 후, 감소된 메모리 값을 찾는 등의 방식으로 해당 변수 값을 검색하는 하는 것이다.
메모리 해킹에 대한 기존 방어 방법으로, 변수 값을 인코딩, 암호화하여 메모리에 저장하거나, 변수 값의 저장 위치를 임의로 설정하거나 랜덤하게 변경하는 방법이 사용되었다.
그리나, 기존 메모리 해킹 방어 방법은, 복잡한 인코딩, 암호화 알고리즘을 사용하는 경우에는 시스템에 과도한 부하가 발생하고, 단순한 알고리즘을 사용하는 경우에는 해킹 공격에 취약하다는 문제점이 발생하였다. 그리고, 메모리 상에서 변수 값의 저장 위치를 변경하더라고, 동적 할당 모니터링 방법을 이용해서, 해당 저장 위치를 파악할 수 있다는 문제점이 있다.
따라서, 기존 메모리 해킹 방어 방법을 대체할 수 있는 강력하고 효율적인 메모리 해킹 방어 방법 및 시스템이 요구되고 있다.
본 발명은 상기의 문제점을 해결하기 위하여 창작된 것으로, 변수 값의 저장 위치가 노출되는 것과 변수 값이 비정상적인 방법으로 변경되는 것을 효율적으로 차단하는 메모리 해킹 방어 방법 및 시스템을 제공하는 것을 목적으로 한다.
상기 목적을 달성하기 위하여, 본 발명은 메모리 상에서 실행되는 프로그램의 변수 값이 변조되는 것을 차단하는 메모리 해킹 방어 방법으로, 변수 정의 정보 및 연산자 정의 정보를 포함하는 보호 라이브러리를 이용하여, 상기 변수 및 상기 변수의 연산자를 재정의하고, 상기 재정의된 변수 및 연산자의 지시 정보를 메모리에 저장하는 단계; 상기 재정의된 연산자를 이용하여, 상기 변수의 값을 변경하는 단계; 및 상기 변경된 변수 값을 상기 메모리와 분리된 데이터 저장부에 저장하는 단계를 포함하고, 상기 데이터 저장부는, 상기 프로그램이 구동되는 운영체제(OS)의 커널(Kernel), 그래픽카드 메모리(GPGPU), 상기 프로그램의 라이브러리 파일 중 적어도 하나로 구성된 메모리 해킹 방어 방법을 제공한다.
또한, 본 발명은 상기 보호 라이브러리는, 변수 값의 변경 제한 정보를 포함하는 변수 속성 정보를 더 포함하고, 상기 보호 라이브러리를 이용하여, 상기 변수의 속성을 설정하는 단계를 포함하는실시예를 포함한다.
또한, 본 발명은 상기 변수 값의 변경 여부를 확인하는 단계; 상기 변수 값이 변경된 경우, 상기 변경된 변수 값이 상기 연산자를 이용하여 변경되었는지 확인하는 단계; 및 상기 변경된 변수 값이 상기 연산자를 이용하여 변경되지 않은 경우, 상기 변수 값이 해킹 프로세스에 의해 변경된 것으로 판단하는 단계를 포함하는 실시예를 포함한다.
또한, 본 발명은 상기 변수 값이 변경된 경우, 상기 변경된 변수 값이 상기 변수 속성에 부합되는지 확인하는 단계; 및 상기 변경된 변수 값이 상기 변수 속성에 부합되지 않은 경우, 상기 변수 값이 해킹 프로세스에 의해 변경된 것으로 판단하는 단계를 포함하는 실시예를 포함한다.
또한, 본 발명은 상기 변수 값이 해킹 프로세스에 의해 변경된 것으로 판단된 경우, 해킹 탐지 메시지를 사용자에게 출력하는 단계를 포함하는 실시예를 포함한다.
또한, 본 발명은 상기 변수 값이 해킹 프로세스에 의해 변경된 것으로 판단된 경우, 상기 커널에서 상기 해킹 프로세스를 종료하는 단계를 포함하는 실시예를 포함한다.
또한, 본 발명은 상기 변수 값 변경 여부 확인 단계는, 기 설정된 주기로 상기 변수 값의 변경 여부를 확인하는 실시예를 포함한다.
또한, 본 발명은 메모리 상에서 실행되는 프로그램의 변수 값이 변조되는 것을 차단하도록 구성된 메모리 해킹 방어 시스템으로, 데이터를 저장하는 메모리; 및 변수 정의 정보 및 연산자 정의 정보를 포함하는 보호 라이브러리를 이용하여 상기 변수 및 상기 변수의 연산자를 재정의하고, 상기 재정의된 변수 및 연산자의 지시 정보를 저장하도록 상기 메모리를 제어하고, 상기 재정의된 연산자를 이용하여 상기 변수의 값을 변경하고, 상기 변경된 변수 값을 상기 메모리와 분리된 데이터 저장부에 저장하는 프로세서를 포함하고, 상기 데이터 저장부는, 상기 프로그램이 구동되는 운영체제(OS)의 커널(Kernel), 그래픽카드 메모리(GPGPU), 상기 프로그램의 라이브러리 파일 중 적어도 하나로 구성된 메모리 해킹 방어 시스템을 제공한다.
또한, 본 발명은 상기 보호 라이브러리는, 변수 값의 변경 제한 정보를 포함하는 변수 속성 정보를 더 포함하고, 상기 프로세서는, 상기 보호 라이브러리를 이용하여, 상기 변수의 속성을 설정하도록 구성된 실시예를 포함한다.
또한, 본 발명은 상기 프로세서는, 상기 변수 값의 변경 여부를 확인하고, 상기 변수 값이 변경된 경우, 상기 변경된 변수 값이 상기 연산자를 이용하여 변경되었는지 확인하고, 상기 변경된 변수 값이 상기 연산자를 이용하여 변경되지 않은 경우, 상기 변수 값이 해킹 프로세스에 의해 변경된 것으로 판단하도록 구성된 실시예를 포함한다.
또한, 본 발명은 상기 프로세서는, 상기 변수 값이 변경된 경우, 상기 변경된 변수 값이 상기 변수 속성에 부합되는지 확인하고, 상기 변경된 변수 값이 상기 변수 속성에 부합되지 않은 경우, 상기 변수 값이 해킹 프로세스에 의해 변경된 것으로 판단하도록 구성된 실시예를 포함한다.
또한, 본 발명은 데이터를 출력하는 디스플레이부를 더 포함하고, 상기 프로세서는, 상기 변수 값이 해킹 프로세스에 의해 변경된 것으로 판단된 경우, 해킹 탐지 메시지를 사용자에게 출력하도록 상기 디스플레이부를 제어하도록 구성된 실시예를 포함한다.
또한, 본 발명은 상기 프로세서는, 상기 변수 값이 해킹 프로세스에 의해 변경된 것으로 판단된 경우, 상기 커널에서 상기 해킹 프로세스를 종료하도록 구성된 실시예를 포함한다.
또한, 본 발명은 상기 프로세서는, 기 설정된 주기로 상기 변수 값의 변경 여부를 확인하도록 구성된 실시예를 포함한다.
본 발명은 상술한 실시예에 한정되지 않으며, 첨부된 청구범위에서 알 수 있는 바와 같이 본 발명이 속한 분야의 통상의 지식을 가진 자에 의해 변형이 가능하고 이러한 변형은 본 발명의 범위에 속함을 밝혀둔다.
상기와 같은 구성을 통하여, 본 발명에 따른 메모리 해킹 방어 방법 및 시스템은, 해킹 프로세스가 변수 값을 변경하는 것을 제어하여, 메모리 해킹을 원천 차단할 수 있다. 그리고, 기존 메모리에 저장되는 변수 값을 인코딩 또는 암호화할 필요가 없어, 프로세서의 작업 부하를 낮출 수 있다. 또한, 해킹 프로세스의 동작을 실시간으로 파악할 수 있어, 해킹 프로세스의 동작을 분석하여, 이후 메모리 해킹에 대한 대응 정책을 세울 수 있는 효과가 있다.
도 1은 본 발명의 실시예에 따른 메모리 해킹 방어 시스템의 하드웨어 구성도이다.
도 2는 본 발명의 실시예에 따른 메모리 해킹 방어 시스템의 소프트웨어 구성도이다.
도 3은 본 발명의 실시예에 따른 보호 라이브러리를 도시한 도면이다.
도 4는 본 발명의 실시예에 따른 데이터 저장부를 도시한 도면이다.
도 5는 본 발명의 실시예에 따른 보호 엔진의 변수 값 사용 및 저장을 설명하기 위한 도면이다.
도 6은 본 발명의 실시예에 따른 보호 엔진의 기능을 도시한 도면이다.
도 7은 본 발명의 실시예에 따른 탐지 엔진의 기능을 도시한 도면이다.
도 8은 본 발명의 실시예에 따른 대응 엔진의 기능을 도시한 도면이다.
도 9는 본 발명의 제 1 실시예에 따른 프로그램 해킹 방어 방법의 순서도이다.
도 10은 본 발명의 제 2 실시예에 따른 프로그램 해킹 방어 방법의 순서도이다.
이하 첨부된 도면을 참조하여 본 발명의 실시예를 본 발명이 속하는 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세하게 설명한다. 이하 설명에서 동일한 구성 요소에는 설명의 편의상 동일 명칭 및 동일 부호를 부여한다.
본 발명에서 사용되는 용어는 가능한 한 현재 널리 사용되는 일반적인 용어를 선택하였으나, 특정한 경우는 출원인이 임의로 선정한 용어도 있으며, 이 경우는 해당되는 발명의 설명부분에서 상세히 그 의미를 기재하였으므로, 단순한 용어의 명칭이 아닌 용어가 가지는 의미로서 본 발명을 파악하여야 한다.
이하의 설명에서 사용되는 구성요소에 대한 접미사 "모듈" 및 "부"는 명세서 작성의 용이함만이 고려되어 부여되거나 혼용되는 것으로서, 그 자체로 서로 구별되는 의미 또는 역할을 갖는 것은 아니다.
본 발명은 메모리 상에서 실행되는 프로그램의 변수 값의 저장 위치가 노출되는 것과 변수 값이 비정상적인 방법으로 변경되는 것을 차단하도록 구성된는 메모리 해킹 방어 방법 및 시스템에 관한 것이다. 이와 관련하여, 프로그램은 C, C++, Basic, Java와 같은 다양한 프로그램 언어로 작성될 수 있는데, 본 명세서에서 설명하는 프로그램은 Java 언어로 작성된 자바(Java) 프로그램인 경우를 일례로 하여 설명하기로 한다.
도 1은 본 발명의 실시예에 따른 메모리 해킹 방어 시스템(100)의 하드웨어 구성도이다.
도면과 같이, 메모리 해킹 방어 시스템(100)은 프로세서(110), 메모리(120), 저장매체(130), 디스플레이브(140) 및 사용자 인터페이스부(150)를 포함한다.
프로세서(110)는 메모리(120), 저장매체(130), 디스플레이부(140) 및 사용자 인터페이스부(150)를 제어하는 제어부(Controller) 역할을 수행한다.
프로세서(110)는 후술하는 보호 엔진(11), 연산자 변조 탐지 엔진(12), 주기적 변조 탐지 엔진(13) 및 대응 엔진(14)을 실행하여, 본 발명의 메모리 해킹 방어 방법을 수행하는 것이다.
메모리(120)는 데이터를 저장하는 데이터 저장소(Data Storage)로, 메모리(120)는 램(RAM)과 같은 휘발성 매체로 구성될 수 있다.
저장매체(130)는 데이터를 저장하는 데이터 저장소(Data Storage)로, 메모리(120)와 분리되어 구성된다. 저장매체(130)는 하드디스크, CD, Blu-Ray와 같은 비휘발성 매체 또는 그래픽카드 메모리(GPGPU)와 같은 휘발성 매체로 구성될 수 있다.
디스플레이부(140)는 사용자에게 데이터를 출력하는 장치로, 디스플레이부(140)는 TV, 모니터, 프로젝터와 같은 영상 출력 장치로 구성될 수 있다.
사용자 인터페이스부(150)는 사용자로부터 사용자 명령을 입력받도록 구성된다. 사용자 인터페이스부(150)는 키보드, 마우스, 음성 입력 장치 등으로 구성되어, 사용자로부터 프로그램 실행, 제어와 같은 사용자 명령를 입력받고, 입력받은 사용자 명령을 프로세서(110)에 전달한다.
도 2는 본 발명의 실시예에 따른 메모리 해킹 방어 시스템(10)의 소프트웨어 구성도이다.
도면과 같이, 메모리 해킹 방어 시스템(10)은 보호 엔진(11), 연산자 변조 탐지 엔진(12), 주기적 변조 탐지 엔진(13), 대응 엔진(14)를 포함한다. 그리고, 메모리 해킹 방어 시스템(10)은 보호 라이브러리(20)와 데이터 저장부(30)를 더 포함하여 구성될 수 있다.
보호 엔진(11)은 연산자 변조 탐지 엔진(12), 주기적 변조 탐지 엔진(13), 대응 엔진(14)을 제어하여, 변수 값의 저장 위치가 노출되는 것과 변수 값이 비정상적인 방법으로 변경되는 것을 차단하는 메모리 해킹 방어 방법을 수행한다.
우선, 보호 엔진(11)은 보호 라이브러리(20)를 이용하여, 변수와 연산자를 재정의(Re-define)하고, 재정의된 변수의 속성(Attribute)를 설정한다.
프로그램의 변수와 연산자는 기본적으로 프로그램이 구동되는 운영체제(OS, Operating System) 또는 프로그램 언어(Program Language)에서 정의된다.
일례로, "INT" 변수는 정수 값을 가지도록 정의되고, "FLOAT" 변수는 실수 값을 가지도록 정의된다. 그리고, 연산자 "+"는 좌우 변수 값을 더한 값을 생성하고 , 연산자 "-"는 좌우 변수 값의 차이 값을 생성하도록 정의된다.
보호 엔진(11)은 이런 운영체제(OS, Operating System) 또는 프로그램 언어에 의해 정의된 변수와 연산자를 재정의하는 것이다.
일례로, 보호 엔진(11)은 "INT" 변수를 양의 정수 값을 가지도록 정의하고, "FLOAT" 변수를 양의 실수 값을 가지도록 정의할 수 있다. 즉, 변수가 가질 수 있는 값의 범위를 제한하는 것이다.
그리고, 보호 엔진(11)은 연산자 "+"를 좌우 변수 값을 더한 결과의 절대값을 생성하고, 연산자 "-"는 좌우 변수 값 차이의 절대값을 생성하도록 정의할 수 있다. 즉, 연산자의 결과 값을 변경하는 것이다.
또한, 보호 엔진(11)은 변수와 연산자의 이름을 새로 정의할 수도 있다. 일례로, 새로운 "XINT" 변수는 양의 정수 값을 가지도록 정의하고, 새로운 "YINT" 변수는 음의 정수 값을 가지도록 정의하는 것이다.
그리고, 보호 엔진(11)은 재정의된 변수에 속성(Attribute)을 설정한다. 구체적으로, 보호 엔진(11)은 변수 값의 변경 범위를 제한하도록 변수의 속성을 설정하는 것이다.
일례로, 보호 엔진(11)은 "XINT" 변수 값은 감소하지 않고 증가만 하도록 설정하고, "YINT" 변수 값은 증가하지 않고, 감소만 하도록 설정할 수 있다. 또는, 보호 엔진(11)은 "FLOAT" 변수는 변경되지 않도록 설정할 수 있는 것이다.
보호 엔진(11)은 전술한 변수와 연산자를 재정의 및 변수의 속성 설정을 위해, 보호 라이브러리(20)에 기록된 변수와 연산자의 정의 정보 및 변수 속성 정보를 이용한다.
도 3은 본 발명의 실시예에 따른 보호 라이브러리(20)를 도시한 도면이다.
도면과 같이, 보호 라이브러리(20)는 변수 정의 정보(21), 연산자 정의 정보(22), 변수 속성 정보(23)를 포함한다.
변수 정의 정보(21)는 "INT", "FLOAT", "BYTE"와 같이 운영체제 또는 프로그램 언어에서 정의된 변수의 재정의 정보를 포함한다. 운영체제 또는 프로그램 언어에서 정의된 변수의 범위를 제한하거나 확장하는 정보를 포함하는 것이다.
그리고, 변수 정의 정보(21)는 운영체제 또는 프로그램 언어에서 정의되지 않은 새로운 변수의 정의 정보를 포함한다. 양의 정수 값을 가지는 "XINT" 변수, 음의 정수 값을 가지는 "YINT" 변수를 새로 정의하는 정보를 포함하는 것이다.
연산자 정의 정보(22)는 "+", "-"와 같이 운영체제 또는 프로그램 언어에서 정의된 연산자의 재정의 정보를 포함한다. 운영체제 또는 프로그램 언어에서 정의된 연산자의 기능, 결과 값을 변경하는 정보를 포함하는 것이다.
변수 속성 정보(23)는 변수 정의 정보(21)에서 재정의된 변수의 속성 정보를 포함한다. 전술한 바와 같이, "XINT" 변수는 값이 감소하지 않고 증가만 하는 속성정보를, "YINT" 변수는 값이 증가하지 않고 감소만 하는 속성 정보를, "FLOAT" 변수는 변경되지 않는 속성 정보를 포함할 수 있다.
따라서, 보호 엔진(11)은 보호 라이브러리(20)에 기록된 변수 정의 정보(21), 연산자 정의 정보(22), 변수 속성 정보(23)에 따라, 변수와 연산자를 정의, 재정의, 속성 설정하는 것이다.
이에 따라, 본 발명은 변수가 변수의 정의 및 속성에 부합되지 않도록 변경된 경우, 해당 변수는 정상적인 연산자가 아닌 비정상적인 해킹 프로세스에 의해 변경된 것으로 판단할 수 있다.
그리고, 보호 엔진(11)은 재정의된 변수를 사용하도록 선언(Declare)한 지시 정보를 메모리(120)에 저장한다. 지시 정보는 해당 변수 값이 저장된 영역의 주소(Adress)가 기록된다. 따라서, 프로그램은 변수의 지시 정보를 이용하여, 해당 변수를 사용하는 것이다.
그리고, 보호 엔진(11)은 재정의된 연산자를 이용하여, 재정의된 변수의 값을 변경하고, 변경된 변수 값을 데이터 저장부(30)에 저장한다.
도 4는 본 발명의 실시예에 따른 데이터 저장부(30)를 도시한 도면이다.
데이터 저장부(30)는 전술한 저장매체(130)의 일례로, 메모리(120)와 분리된 데이터 저장소(Data Storage)이다. 도면과 같이, 데이터 저장부(30)는 커널(Kernel, 31), 그래픽카드 메모리(GPGPU, 32), 프로그램 라이브러리(33), 쓰레드(34)를 포함한다.
커널(Kernel, 31)은 프로그램이 하드웨어를 제어할 수 있도록 구성된 운영체제의 일 요소이다.
그래픽카드 메모리(GPGPU, 32)는 디스플레이부(140)를 제어하는 그래픽카드에 포함된 메모리이다.
프로그램 라이브러리(33)는 프로그램에서 공통으로 사용되는 소스 코드인 라이브러리를 포함하는 파일로, 자바 프로그램의 ".so" 파일이 이에 해당한다.
쓰레드(34)는 프로그램의 기능를 수행하도록 구성된 서비스 단위이다.
즉, 보호 엔진(11)은 커널(31), 그래픽카드 메모리(32), 프로그램 라이브러리(33) 및 쓰레드(34) 중 적어도 하나의 데이터 저장소에 변수 값을 저장하는 것이다.
따라서, 메모리(120)에 저장된 변수의 지시 정보는 해당 변수 값이 저장된 커널(31), 그래픽카드 메모리(32), 프로그램 라이브러리(33) 및 쓰레드(34)의 데이터 저장소 주소 정보를 포함하게 된다.
도 5는 본 발명의 실시예에 따른 보호 엔진(11)의 변수 값 사용 및 저장을 설명하기 위한 도면이다.
도면과 같이, 보호 엔진(11)은 메모리(120)에 저장된 변수의 지시 정보를 이용하여, 해당 변수를 사용하고, 변수 값을 데이터 저장부(30)에 저장한다.
즉, 본 발명은 변수를 사용, 정의, 지시하는 정보를 저장하는 영역과 변수 값을 저장하는 영역을, 메모리(120)와 데이터 저장부(130)로 나누는 것이다.
이에 따라, 메모리(120)에 저장된 변수의 지시 정보만을 가지고는 해당 변수 값을 읽어올 수 없게 되어, 해당 변수에 접근하고자 하는 해커 프로세스에 변수 값의 저장 위치를 노출하지 않게 된다.
도 6은 본 발명의 실시예에 따른 보호 엔진(11)의 기능을 도시한 도면이다.
도면과 같이, 보호 엔진(11)은 연산자 변조 탐지 엔진(12)과 주기적 변조 탐지 엔진(13)을 등록 및 제어하고,(S100), 변수 및 연산자를 재정의하고,(S110), 변수 속성을 설정하고,(S120), 연산자를 이용하여 변수 값을 변경하고,(S130), 변경된 변수 값을 데이터 저장부(30)에 저장한다.(S140)
우선, 보호 엔진(11)은 후술하는 연산자 변조 탐지 엔진(12)과 주기적 변조 탐지 엔진(13)을 등록 및 제어한다.(S100), 즉, 보호 엔진(11)은 연산자 변조 탐지 엔진(12)과 주기적 변조 탐지 엔진(13)을 실행하고, 이들을 제어하여, 변수 값이 비정상적인 방법으로 변경되었는지 탐지하도록 한다. 이에 대하여는, 도 7 이하에서 자세히 설명하도록 한다.
그리고, 보호 엔진(11)은 보호 라이브러리(20)를 이용하여, 변수 및 연산자를 재정의하고,(S110), 변수 속성을 설정한다.(S120) 보호 엔진(11)은 전술한 보호 라이브러리(20)에 기록된 변수 정의 정보(21), 연산자 정의 정보(22), 변수 속성 정보(23)에 따라, 변수와 연산자를 정의, 재정의, 속성 설정하는 것이다.
그리고, 보호 엔진(11)은 연산자를 이용하여 변수 값을 변경하고,(S130), 변경된 변수 값을 데이터 저장부(30)에 저장한다.(S140) 보호 엔진(11)은 커널(31), 그래픽카드 메모리(32), 프로그램 라이브러리 파일(33) 및 쓰레드(34) 중 적어도 하나의 데이터 저장소에 변수 값을 저장하는 것이다.
이하에서는, 연산자 변조 탐지 엔진(12)과 주기적 변조 탐지 엔진(13)에 대하여 설명하도록 한다. 이들 탐지 엔진(12, 13)은 보호 엔진(11)의 제어를 받아, 변수 값이 비정상적인 방법으로 변경되었는지 탐지하도록 구성된다.
그리고, 보호 엔진(11)은 변수의 사용 빈도에 따라 해당 변수에 어느 탐지 엔진(12, 13)를 이용할지 판단한다.
보호 엔진(11)은 사용 빈도가 낮은 변수에 대하여는, 해당 변수 값이 변경된 경우마다, 연산자 변조 탐지 엔진(12)을 이용하고, 보호 엔진(11)은 사용 빈도가 높은 변수에 대하여는, 주기적 변조 탐지 엔진(13)을 이용하여, 기 설정된 주기에 따라 해당 변수의 변경 여부를 탐지한다.
이에 따라, 본 발명은 사용 빈도가 높은 변수를 탐지하는데 필요한 시스템 부하를 경감시킬 수 있게 된다.
도 7은 본 발명의 실시예에 따른 탐지 엔진(12, 13)의 기능을 도시한 도면이다.
도면과 같이, 탐지 엔진(12, 13)은 변수 값의 변경을 확인하고,(S200), 변경된 변수 값이 재정의된 연산자를 이용하여 변경되었는지 확인하고,(S210), 변경된 변수 값이 설정된 변수 속성에 부합되는지 확인한다.(S220)
우선, 탐지 엔진(12, 13)은 변수 값이 변경되었는지 확인한다.(S200)
그리고, 변수 값이 변경된 경우, 탐지 엔진(12, 13)은 변경된 변수 값이 재정의된 연산자를 이용하여 변경되었는지 확인한다.(S210) 탐지 엔진(12, 13)은 변경된 변수 값이 재정의된 연산자의 결과 값과 동일한지 여부로, 변수 값이 재정의된 연산자를 이용하여 변경되었는지 확인할 수 있다.
일례로, 재정의된 "-" 연산자는 좌우 변수 값 차이의 절대값을 생성하나, 변경된 변수 값이 마이너스 값을 가진다면, 변수 값이 연산자를 이용하여 변경되지 않은 경우라 판단할 수 있다.
탐지 엔진(12, 13)은 변경된 변수 값이 연산자를 이용하여 변경되지 않은 경우, 변수 값이 정상적인 방법이 아닌 비정상적인 방법 즉, 해킹 프로세스에 의해 변경된 것으로 판단한다.
또한, 변수 값이 변경된 경우, 탐지 엔진(12, 13)은 변경된 변수 값이 설정된 변수 속성에 부합되는지 확인한다.(S220) 탐지 엔진(12, 13)은 변경된 변수 값이 변수 속성에서 설정된 범위 내에 존재하는지 여부로, 변수 값이 변수 속성에 부합되는지 확인할 수 있다.
일례로, "XINT" 변수 값은 감소하지 않고 증가만 하도록 설정되었는데, 변경된 "XINT" 변수 값이 이전 값보다 감소했다면, 변수 속성에 부합되지 않은 경우라 판단할 수 있다.
탐지 엔진(12, 13)은 변경된 변수 값이 변수 속성에 부합되지 않은 경우, 상기 변수 값이 정상적인 방법이 아닌 비정상적인 방법 즉, 해킹 프로세스에 의해 변경된 것으로 판단한다.
탐지 엔진(12, 13)이 변수 값이 해킹 프로세스에 의해 변경된 것으로 판단하면, 이하에서 설명하는 대응 엔진(14)이 해킹 프로세스를 종료시키는 등의 대응을 실행한다.
도 8은 본 발명의 실시예에 따른 대응 엔진(14)의 기능을 도시한 도면이다.
도면과 같이, 대응 엔진(14)은 커널에서 해킹 프로세스를 종료하고,(S300) 해킹 탐지 메시지를 사용자에게 출력한다.(S310)
우선, 대응 엔진(14)은 커널에서 해킹 프로세스를 종료한다.(S300) 해킹 프로세스가 어느 시점에서 종료되었는지 확인할 수 없도록 하기 위해, 대응 엔진(14)은 커널 레벨에서 해킹 프로세스를 종료하는 것이다.
그리고, 대응 엔진(14)은 디스플레이부(140)를 통하여, 해킹 프로세스가 감지되었다는 해킹 탐지 메시지를 사용자에게 출력한다.(S310)
이상에서, 프로그램 해킹 방어 시스템에 대하여 설명하였다. 이하 도 9와 도 10에서는 프로그램 해킹 방어 시스템에서 구현되는 프로그램 해킹 방어 방법을 설명하도록 한다.
프로그램 해킹 방어 방법은, 변수 값의 저장 위치가 노출되는 것을 차단하는 제 1 실시예와 변수 값이 비정상적인 방법으로 변경되는 것을 차단하는 제 2 실시예로 나눠 설명하도록 한다.
도 9는 본 발명의 제 1 실시예에 따른 프로그램 해킹 방어 방법의 순서도이다.
도면과 같이, 본 발명의 제 1 실시예에 따른 프로그램 해킹 방어 방법은 변수 및 연산자를 재정의하는 단계(S10), 변수 속성을 설정하는 단계(S20), 연산자를 이용하여 변수 값을 변경하는 단계(S30), 변경된 변수 값을 데이터 저장부(30)에 저장하는 단계(S40)을 포함한다.
우선, 보호 엔진(11)은 변수 및 연산자를 재정의한다.(S10) 보호 엔진(11)은 보호 라이브러리(20)에 기록된 변수 정의 정보와 연산자 정의 정보를 이용하여, 해당 변수 및 연산자를 재정의하는 것이다.
그리고, 보호 엔진(11)은 변수 속성을 설정한다.(S20) 보호 엔진(11)은 보호 라이브러리(20)에 기록된 변수 속성 정보를 이용하여, 해당 변수의 속성을 설정하는 것이다.
그리고, 보호 엔진(11)은 연산자를 이용하여 변수 값을 변경하고,(S30) 변경된 변수 값을 데이터 저장부(30)에 저장한다.(S40) 보호 엔진(11)은 변수 값을 메모리(120)와 분리된, 커널(31), 그래픽카드 메모리(32), 프로그램 라이브러리 파일(33) 및 쓰레드(34) 중 적어도 하나로 구성된 데이터 저장부(3)에 저장하는 것이다.
도 10은 본 발명의 제 2 실시예에 따른 프로그램 해킹 방어 방법의 순서도이다.
도면과 같이, 본 발명의 제 2 실시예에 따른 프로그램 해킹 방어 방법은 변수 값의 변경을 확인하는 단계(S50), 변수 값이 연산자를 이용하여 변경되었는지 확인하는 단계(S60), 변경된 변수 값이 변수 속성에 부합되는지 확인하는 단계(S70), 커널에서 해킹 프로세스를 종료하는 단계(S80), 해킹 탐지 메시지를 사용자에게 출력하는 단계(90)를 포함한다.
우선, 탐지 엔진(12, 13)은 변수 값의 변경을 확인한다.(S50)
그리고, 변수 값이 변경된 경우, 탐지 엔진(12, 13)은 변경된 변수 값이 재정의된 연산자를 이용하여 변경되었는지 확인한다(S60) 탐지 엔진(12, 13)은 변경된 변수 값이 재정의된 연산자의 결과 값과 동일한지 여부로, 변수 값이 재정의된 연산자를 이용하여 변경되었는지 확인하는 것이다.
그리고, 변수 값이 변경된 경우, 탐지 엔진(12, 13)은 변경된 변수 값이 설정된 변수 속성에 부합되는지 확인한다.(S70) 탐지 엔진(12, 13)은 변경된 변수 값이 변수 속성에서 설정된 범위 내에 존재하는지 여부로, 변수 값이 변수 속성에 부합되는지 확인하는 것이다.
변경된 변수 값이 연산자를 이용하여 변경되지 않은 경우와 변경된 변수 값이 변수 속성에 부합되지 않은 경우에, 대응 엔진(14)은 커널에서 해킹 프로세스를 종료한다.(S80) 해킹 프로세스가 어느 시점에서 종료되었는지 확인할 수 없도록 하기 위해, 대응 엔진(14)은 커널 레벨에서 해킹 프로세스를 종료하는 것이다.
그리고, 대응 엔진(14)은 디스플레이부(140)를 통하여, 해킹 프로세스가 감지되었다는 해킹 탐지 메시지를 사용자에게 출력한다.(S80)
이상 전술한 메모리 해킹 방어 방법 및 시스템은, 해킹 프로세스가 변수 값을 변경하는 것을 제어하여, 메모리 해킹을 원천 차단할 수 있다. 그리고, 기존 메모리에 저장되는 변수 값을 인코딩 또는 암호화할 필요가 없어, 프로세서의 작업 부하를 낮출 수 있다. 또한, 해킹 프로세스의 동작을 실시간으로 파악할 수 있어, 해킹 프로세스의 동작을 분석하여, 이후 메모리 해킹에 대한 대응 정책을 세울 수 있는 효과가 있다.
상기에서 본 발명의 바람직한 실시예에 대하여 설명하였지만, 본 발명은 이에 한정되는 것이 아니고 특허청구범위와 발명의 상세한 설명 및 첨부한 도면의 범위 안에서 여러 가지로 변형하여 실시하는 것이 가능하고 이 또한 본 발명의 범위에 속하는 것은 당연하다.

Claims (14)

  1. 메모리 상에서 실행되는 프로그램의 변수 값이 변조되는 것을 차단하는 메모리 해킹 방어 방법으로,
    변수 정의 정보 및 연산자 정의 정보를 포함하는 보호 라이브러리를 이용하여, 상기 변수 및 상기 변수의 연산자를 재정의하고, 상기 재정의된 변수 및 연산자의 지시 정보를 메모리에 저장하는 단계;
    상기 재정의된 연산자를 이용하여, 상기 변수의 값을 변경하는 단계; 및
    상기 변경된 변수 값을 상기 메모리와 분리된 데이터 저장부에 저장하는 단계를 포함하고,
    상기 데이터 저장부는, 상기 프로그램이 구동되는 운영체제(OS)의 커널(Kernel), 그래픽카드 메모리(GPGPU), 상기 프로그램의 라이브러리 파일 중 적어도 하나로 구성되고,
    상기 보호 라이브러리는, 변수 값의 변경 제한 정보를 포함하는 변수 속성 정보를 더 포함하고,
    상기 보호 라이브러리를 이용하여, 상기 변수의 속성을 설정하는 단계를 더 포함하는 메모리 해킹 방어 방법.
  2. 삭제
  3. 제 1 항에 있어서,
    상기 변수 값의 변경 여부를 확인하는 단계;
    상기 변수 값이 변경된 경우, 상기 변경된 변수 값이 상기 연산자를 이용하여 변경되었는지 확인하는 단계; 및
    상기 변경된 변수 값이 상기 연산자를 이용하여 변경되지 않은 경우, 상기 변수 값이 해킹 프로세스에 의해 변경된 것으로 판단하는 단계를 포함하는 메모리 해킹 방어 방법.
  4. 제 3 항에 있어서,
    상기 변수 값이 변경된 경우, 상기 변경된 변수 값이 상기 변수 속성에 부합되는지 확인하는 단계; 및
    상기 변경된 변수 값이 상기 변수 속성에 부합되지 않은 경우, 상기 변수 값이 해킹 프로세스에 의해 변경된 것으로 판단하는 단계를 포함하는 메모리 해킹 방어 방법.
  5. 제 3 또는 4 항에 있어서,
    상기 변수 값이 해킹 프로세스에 의해 변경된 것으로 판단된 경우, 해킹 탐지 메시지를 사용자에게 출력하는 단계를 포함하는 메모리 해킹 방어 방법.
  6. 제 3 또는 4 항에 있어서,
    상기 변수 값이 해킹 프로세스에 의해 변경된 것으로 판단된 경우, 상기 커널에서 상기 해킹 프로세스를 종료하는 단계를 포함하는 메모리 해킹 방어 방법.
  7. 제 3 항에 있어서,
    상기 변수 값 변경 여부 확인 단계는,
    기 설정된 주기로 상기 변수 값의 변경 여부를 확인하는 메모리 해킹 방어 방법.
  8. 메모리 상에서 실행되는 프로그램의 변수 값이 변조되는 것을 차단하도록 구성된 메모리 해킹 방어 시스템으로,
    데이터를 저장하는 메모리; 및
    변수 정의 정보 및 연산자 정의 정보를 포함하는 보호 라이브러리를 이용하여 상기 변수 및 상기 변수의 연산자를 재정의하고, 상기 재정의된 변수 및 연산자의 지시 정보를 저장하도록 상기 메모리를 제어하고, 상기 재정의된 연산자를 이용하여 상기 변수의 값을 변경하고, 상기 변경된 변수 값을 상기 메모리와 분리된 데이터 저장부에 저장하는 프로세서를 포함하고,
    상기 데이터 저장부는, 상기 프로그램이 구동되는 운영체제(OS)의 커널(Kernel), 그래픽카드 메모리(GPGPU), 상기 프로그램의 라이브러리 파일 중 적어도 하나로 구성되고,
    상기 보호 라이브러리는, 변수 값의 변경 제한 정보를 포함하는 변수 속성 정보를 더 포함하고,
    상기 프로세서는, 상기 보호 라이브러리를 이용하여, 상기 변수의 속성을 설정하도록 구성된 메모리 해킹 방어 시스템.
  9. 삭제
  10. 제 8 항에 있어서,
    상기 프로세서는,
    상기 변수 값의 변경 여부를 확인하고, 상기 변수 값이 변경된 경우, 상기 변경된 변수 값이 상기 연산자를 이용하여 변경되었는지 확인하고, 상기 변경된 변수 값이 상기 연산자를 이용하여 변경되지 않은 경우, 상기 변수 값이 해킹 프로세스에 의해 변경된 것으로 판단하도록 구성된 메모리 해킹 방어 시스템.
  11. 제 10 항에 있어서,
    상기 프로세서는,
    상기 변수 값이 변경된 경우, 상기 변경된 변수 값이 상기 변수 속성에 부합되는지 확인하고, 상기 변경된 변수 값이 상기 변수 속성에 부합되지 않은 경우, 상기 변수 값이 해킹 프로세스에 의해 변경된 것으로 판단하도록 구성된 메모리 해킹 방어 시스템.
  12. 제 10 또는 11 항에 있어서,
    데이터를 출력하는 디스플레이부를 더 포함하고,
    상기 프로세서는,
    상기 변수 값이 해킹 프로세스에 의해 변경된 것으로 판단된 경우, 해킹 탐지 메시지를 사용자에게 출력하도록 상기 디스플레이부를 제어하는 메모리 해킹 방어 시스템.
  13. 제 10 또는 11 항에 있어서,
    상기 프로세서는,
    상기 변수 값이 해킹 프로세스에 의해 변경된 것으로 판단된 경우, 상기 커널에서 상기 해킹 프로세스를 종료하도록 구성된 메모리 해킹 방어 시스템.
  14. 제 10 항에 있어서,
    상기 프로세서는,
    기 설정된 주기로 상기 변수 값의 변경 여부를 확인하도록 구성된 메모리 해킹 방어 시스템.
KR1020130059980A 2013-05-27 2013-05-27 메모리 해킹 방어 방법 및 시스템 KR101436742B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020130059980A KR101436742B1 (ko) 2013-05-27 2013-05-27 메모리 해킹 방어 방법 및 시스템

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020130059980A KR101436742B1 (ko) 2013-05-27 2013-05-27 메모리 해킹 방어 방법 및 시스템

Publications (1)

Publication Number Publication Date
KR101436742B1 true KR101436742B1 (ko) 2014-09-01

Family

ID=51759087

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130059980A KR101436742B1 (ko) 2013-05-27 2013-05-27 메모리 해킹 방어 방법 및 시스템

Country Status (1)

Country Link
KR (1) KR101436742B1 (ko)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100955725B1 (ko) * 2007-12-28 2010-05-03 엔에이치엔비즈니스플랫폼 주식회사 메모리 해킹 차단 방법 및 시스템

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100955725B1 (ko) * 2007-12-28 2010-05-03 엔에이치엔비즈니스플랫폼 주식회사 메모리 해킹 차단 방법 및 시스템

Similar Documents

Publication Publication Date Title
KR102307534B1 (ko) 다수 소프트웨어 개체들에 걸쳐서 악성 행동을 트래킹하기 위한 시스템들 및 방법들
US10545851B2 (en) Breakpoint insertion into kernel pages
CN103955438A (zh) 基于硬件辅助虚拟化技术的进程内存保护方法
US20100132053A1 (en) Information processing device, information processing method and program
US20170364679A1 (en) Instrumented versions of executable files
US11593473B2 (en) Stack pivot exploit detection and mitigation
CN111400723A (zh) 基于tee扩展的操作系统内核强制访问控制方法及系统
CN109409086B (zh) 基于新增指令的检测堆栈中返回地址被篡改的装置
CN110717181B (zh) 基于新型程序依赖图的非控制数据攻击检测方法及装置
KR20210001057A (ko) 랜섬웨어 탐지 및 차단 방법
Hawkins et al. Dynamic canary randomization for improved software security
US20160335439A1 (en) Method and apparatus for detecting unsteady flow in program
US9450965B2 (en) Mobile device, program, and control method
KR101436742B1 (ko) 메모리 해킹 방어 방법 및 시스템
KR20190035244A (ko) 캡쳐 데이터에 워터마크를 추가하는 화면 유출방지 프로그램과 화면 유출방지 서비스 제공방법
KR101956725B1 (ko) 인가된 실행 파일 및 동적 라이브러리 파일 기반 서버 접근 통제 시스템
CN109409083B (zh) 检测堆栈中返回地址被篡改的装置
KR100985073B1 (ko) 네트워크 공유폴더 접근 제어 장치 및 방법
US12001545B2 (en) Detecting stack pivots using stack artifact verification
JP7431776B2 (ja) 情報処理装置、情報処理方法、およびプログラム
JP2011048851A (ja) ソフトウェアの改竄検出装置及び改竄検出方法
US20240231959A9 (en) Apparatus, and method
US20240134720A1 (en) Apparatus, and method
US20210157612A1 (en) Encaching and sharing transformed libraries
CN118171263A (zh) 提权防护方法及装置

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20170607

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20190802

Year of fee payment: 6