KR101445634B1 - 프로그램의 취약점을 이용한 공격의 탐지 장치 및 방법 - Google Patents

프로그램의 취약점을 이용한 공격의 탐지 장치 및 방법 Download PDF

Info

Publication number
KR101445634B1
KR101445634B1 KR1020140009869A KR20140009869A KR101445634B1 KR 101445634 B1 KR101445634 B1 KR 101445634B1 KR 1020140009869 A KR1020140009869 A KR 1020140009869A KR 20140009869 A KR20140009869 A KR 20140009869A KR 101445634 B1 KR101445634 B1 KR 101445634B1
Authority
KR
South Korea
Prior art keywords
return address
function
call stack
information
unit
Prior art date
Application number
KR1020140009869A
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 KR1020140009869A priority Critical patent/KR101445634B1/ko
Application granted granted Critical
Publication of KR101445634B1 publication Critical patent/KR101445634B1/ko
Priority to JP2015010352A priority patent/JP5908132B2/ja
Priority to US14/604,374 priority patent/US20150213260A1/en

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/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/54Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by adding security routines or objects to programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • 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
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software

Landscapes

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

Abstract

본 발명은 프로그램의 취약점을 이용하여 악성코드를 실행하는 행위를 방지하기 위한 장치 및 방법에 대한 것으로, 더욱 상세하게는 프로세스에서 특정 행위를 수행하기 위해 프로세스가 실행되어 특정 함수가 호출된 경우 상기 함수를 후킹하여 프로세스의 실행을 일시 중단시키는 후킹처리부와 상기 후킹처리부에서 후킹된 함수의 콜스택을 확인하여 콜스택 리턴주소 정보를 수집출력하는 정보수집부와 상기 정보수집부에서 출력된 콜스택 리턴주소 정보를 분석하므로써 악성행위를 탐지하여 악성코드가 실행되는 것을 방지하는 정보판단부를 포함하여, 메모리의 전 영역에서의 코드 실행 혹은 잘못된 접근을 탐지하여 악성코드가 실행되는 것을 방지할 수 있는 프로그램 취약점을 이용한 공격의 탐지 장치 및 방법에 대한 것이다.

Description

프로그램의 취약점을 이용한 공격의 탐지 장치 및 방법{Device and Method for detecting vulnerability attack in any program}
본 발명은 프로그램의 취약점을 이용하여 악성코드를 실행하는 행위를 방지하기 위한 장치 및 방법에 대한 것으로, 더욱 상세하게는 프로세스에서 특정 행위를 수행하기 위해 프로세스가 실행되어 특정 함수가 호출된 경우 상기 함수를 후킹하여 프로세스의 실행을 일시 중단시키는 후킹처리부와 상기 후킹처리부에서 후킹된 함수의 콜스택을 확인하여 콜스택 리턴주소 정보를 수집출력하는 정보수집부와 상기 정보수집부에서 출력된 콜스택 리턴주소 정보를 분석하므로써 악성행위를 탐지하여 악성코드가 실행되는 것을 방지하는 정보판단부를 포함하여, 메모리의 전 영역에서의 코드 실행 혹은 잘못된 접근을 탐지하여 악성코드가 실행되는 것을 방지할 수 있는 프로그램 취약점을 이용한 공격의 탐지 장치 및 방법에 대한 것이다.
개인이나 조직의 정보가 컴퓨터 등에 저장되고 인터넷, 무선통신망을 통한 정보교환 등의 컴퓨팅 환경 또한 다양하고 복잡해지면서, 정보보안 대책이 날로 중요해지고 있는데, 특히 다양한 경로로 유입되는 악성코드에 의한 피해를 방지하는 것이 매우 중요하다. 상기 악성코드라 함은 컴퓨터 사용자에게 피해를 주는 악의적인 용도로 사용될 수 있는 유해 프로그램을 의미하고, 그 종류로는 컴퓨터 바이러스, 웜, 트로이 목마, 스파이웨어, 애드웨어 등이 있으며, 네트워크 트래픽 발생, 시스템 성능 저하, 파일 삭제, 이메일 자동발송, 개인 정보 유출, 원격 제어 등의 문제를 일으킨다.
상기 악성코드의 배포는 실행파일 확장자를 숨기는 방법 등에 의해 사용자가 운영체제의 실행파일인지 아닌지 모르게 하여 악성코드를 배포하는 일반적 방식에서 벗어나, 프로그램의 취약점을 이용한 공격이 가능하도록 악성코드를 배포하는 방식이 널리 행하여지고 있다. 예컨대, 특정 프로그램인 인터넷 익스플로러의 취약점을 이용하면, 사용자가 특정 웹 페이지에 들어온 순간 어떤 행위를 하지 않아도 컴퓨터가 악성코드에 감염되어 실행되게 된다. 상기 프로그램의 취약점을 이용하여 공격하다는 것은 프로그램의 버그를 찾아내서 그 버그를 이용해 프로그램 코드 실행 흐름을 공격자가 원하는 흐름으로 바꾸는 것을 말한다. 즉, 취약한 코드는 일반적인 경우에 버그가 발생하지 않지만, 취약한 코드 부분에서 항상 버그가 발생하도록 비정상적인 입력데이터(input data)를 삽입하는 것이다. 이때, 입력데이터에는 악성코드와 버그를 발생시키는 데이터를 포함하여, 그 후 해당 프로세스는 해당 입력데이터를 처리하게 되고 이 과정에서 버그가 발생하고, 발생한 버그로 인해 프로그램 코드 실행 흐름이 입력데이터에 있는 악성코드로 옮겨지게 되어, 악성코드가 실행되게 된다.
따라서, 아래 특허문헌 등과 같은 해킹 탐지 기법 등에 의해 악성코드의 실행을 방지한다.
공개특허공보 10-2003-0046581(2003. 06. 18. 공개) "실시간 버퍼 오버플로우 해킹 탐지 방법"
하지만, 상기 해킹 탐지 기법은 시스템 콜(API 함수 호출)이 발생했을 때 리턴 값이 스택 영역에 있는지 없는지를 판단하여 악성인지 아닌지를 판단하므로, 즉 스택 영역만 방어를 하게 되므로 상기 해킹 탐지 기법의 우회가 용이하여 악성코드의 미탐지율이 높게 된다.
또한, 비실행 파일을 검사하여 실행 주소가 지시하는 메모리 영역이 실행 속성인지를 판단하여 비실행 파일이 악성인지 판단하는 장치 및 방법은 스택, 힙 등의 일반적인 메모리 영역에서의 코드 실행은 막을 수 있지만, 실행 주소가 실행 속성을 가지는 경우 정상으로 판별해버리기 때문에 코드 영역에서만 실행되는 ROP(return-oriented programming)와 같은 공격은 방어를 하지 못한다.
본 발명은 상기와 같은 문제점을 해결하기 위해 안출된 것으로,
본 발명은 프로그램의 취약점을 이용하여 악성코드를 실행시키는 행위를 시그니쳐 기반이 아니라 행위기반으로 진단하고 차단하는 프로그램의 취약점을 이용한 공격의 탐지 장치 및 방법을 제공하는데 그 목적이 있다.
또한, 본 발명은 프로세스에서 특정 행위를 수행하기 위해 프로세스가 실행되어 특정 함수가 호출된 경우, 상기 함수를 후킹하여 프로세스의 실행을 일시 중단시키고 후킹된 함수의 콜스택을 확인하여 콜스택 리턴주소 정보를 수집하고 상기 콜스택 리턴주소 정보를 분석함으로써 메모리의 전 영역에서의 코드 실행 혹은 잘못된 접근을 탐지하여 악성코드가 실행되는 것을 방지할 수 있는 프로그램의 취약점을 이용한 공격의 탐지 장치 및 방법을 제공하는데 그 목적이 있다.
또한, 본 발명은 콜스택 탐지기법을 이용하여 하나의 함수만 후킹해도 수십 가지의 함수 호출 경로를 탐지할 수 있는 프로그램의 취약점을 이용한 공격의 탐지 장치 및 방법을 제공하는데 그 목적이 있다.
또한, 본 발명은 프로세스에 영구디이피를 설정하고, 힙 영역의 주소를 미리 선점하고, 프로세스에 로드되는 동적 모듈의 기존 주소를 재배치하여, 더욱 효과적으로 악성행위를 방지할 수 있는 프로그램의 취약점을 이용한 공격의 탐지 장치 및 방법을 제공하는데 그 목적이 있다.
또한, 본 발명은 필터링부가 콜스택 리턴주소 정보를 필터링하여 진단처리부의 실행을 용이하게 할 수 있는 프로그램의 취약점을 이용한 공격의 탐지 장치 및 방법을 제공하는데 그 목적이 있다.
본 발명은 앞서 본 목적을 달성하기 위해서 다음과 같은 구성을 가진 실시예에 의해서 구현된다.
본 발명의 일 실시예에 따르면, 본 발명에 따른 프로그램의 취약점을 이용한 공격의 탐지 장치는 프로세스에서 특정 행위를 수행하기 위해 프로세스가 실행되어 특정 함수가 호출된 경우, 상기 함수를 후킹하여 프로세스의 실행을 일시 중단시키는 후킹처리부와; 상기 후킹처리부에서 후킹된 함수의 콜스택을 확인하여 콜스택 리턴주소 정보를 수집출력하는 정보수집부와; 상기 정보수집부에서 출력된 콜스택 리턴주소 정보를 분석하므로써 악성행위를 탐지하여 악성코드가 실행되는 것을 방지하는 정보판단부;를 포함하는 것을 특징으로 한다.
본 발명의 다른 실시예에 따르면, 본 발명에 따른 프로그램의 취약점을 이용한 공격의 탐지 장치에 있어서 상기 콜스택 리턴주소 정보는 후킹된 함수를 호출하는 모든 함수호출 경로 상에 위치하는 모든 함수의 리턴주소, 상기 리턴주소를 포함하고 있는 메모리 속성, 상기 리턴주소를 포함하고 있는 모듈의 이름을 포함하는 것을 특징으로 한다.
본 발명의 또 다른 실시예에 따르면, 본 발명에 따른 프로그램의 취약점을 이용한 공격의 탐지 장치에 있어서 상기 정보판단부는 콜스택 리턴주소 정보를 분석하여 리턴주소가 코드 영역에 있는지 판단하여 리턴주소가 코드 영역에 존재하지 않는 경우 악성행위가 있는 것으로 판단하는 제1진단부와, 상기 콜스택 리턴주소 정보를 분석하여 리턴주소가 가리키는 명령어의 이전 명령어가 함수 호출 명령어인지 판단하여 리턴주소가 가리키는 명령어의 이전 명령어가 함수 호출 명령어가 아닌 경우 악성행위가 있는 것으로 판단하는 제2진단부를 포함하는 것을 특징으로 한다.
본 발명의 또 다른 실시예에 따르면, 본 발명에 따른 프로그램의 취약점을 이용한 공격의 탐지 장치에 있어서 상기 정보판단부는 상기 제1, 2진단부의 어느 하나 이상이 악성행위를 감지한 경우 진단정보를 로그 파일과 함께 디스크에 저장하고 프로세스에서 더 이상의 코드 실행이 되지 않도록 종료시키고, 상기 제1, 2진단부가 악성행위를 감지하지 못한 경우 일시 중단하였던 프로세스를 실행시키는 처리부를 추가로 포함하는 것을 특징으로 한다.
본 발명의 또 다른 실시예에 따르면, 본 발명에 따른 프로그램의 취약점을 이용한 공격의 탐지 장치에 있어서 상기 정보판단부는 상기 정보수집부에서 출력된 콜스택 리턴주소 정보를 기설정된 예외처리 기준과 비교하여 상기 콜스택 리턴주소 정보가 예외처리 기준에 해당한다고 판단시 제1, 2진단부의 판단의 예외처리가 되도록 하는 필터링부를 추가로 포함하며, 상기 필터링부는 콜스택 리턴주소 정보의 리턴주소가 프로세스 주소 공간 내에 할당되어 있지 않은 메모리에 있는 경우, 콜스택 리턴주소 정보의 리턴주소가 메모리의 스택 영역에 있는 경우, 콜스택 리턴주소 정보의 리턴주소가 화이트리스트에 있는 경우, 콜스택 리턴주소 정보의 리턴주소의 속성이 기본 쓰기 상태인 경우, 예외처리하는 것을 특징으로 한다.
본 발명의 또 다른 실시예에 따르면, 본 발명에 따른 프로그램의 취약점을 이용한 공격의 탐지 장치는 프로세스의 실행 전에 프로세스의 보안상태를 확인설정하는 보안설정부를 추가로 포함하며, 상기 보안설정부는 운영체제의 디이피 상태를 체크하여 활성화시키는 체크부와, 상기 체크부에 의해 운영체제의 디이피가 활성화되어 있음을 확인된 경우 프로세스에 영구디이피를 적용시켜 실행권한이 없는 메모리 영역에서의 코드가 실행되는 것을 방지하는 실행부를 포함하는 것을 특징으로 한다.
본 발명의 또 다른 실시예에 따르면, 본 발명에 따른 프로그램의 취약점을 이용한 공격의 탐지 장치에 있어서 상기 실행부는 상기 프로세스에 디이피가 적용되어 있지 않으면 프로세스가 생성된 상태에서 디이피를 적용하여 주고, 기존에 디이피가 설정되어 있으면 해당 디이피를 해제하고 디이피를 다시 적용시켜서, 해당 프로세스에서 악성행위에 의해 해제가 불가능한 영구디이피가 설정하는 것을 특징으로 한다.
본 발명의 또 다른 실시예에 따르면, 본 발명에 따른 프로그램의 취약점을 이용한 공격의 탐지 장치에 있어서 상기 보안설정부는 힙스프레이 공격 기법에 의한 악성행위에 사용되는 힙 영역의 주소를 미리 선점하도록 하는 주소선점부를 추가로 포함하는 것을 특징으로 한다.
본 발명의 또 다른 실시예에 따르면, 본 발명에 따른 프로그램의 취약점을 이용한 공격의 탐지 장치는 상기 후킹처리부에서 후킹된 함수에 대한 정보를 분석하여 동적모듈의 로드를 수행하는 함수에서 프로세스에 로드되는 동적모듈의 기존 주소를 재배치하는 재배치부를 추가로 포함하며, 상기 재배치부는 동적모듈의 재배치 옵션이 활성화되어 있는지 판단하고, 상기 재배치 옵션이 비활성되어 있으면 동적모듈의 로드를 수행하는 함수에서 동적모듈의 기존 주소를 수집하고, 상기 기존 주소에 메모리를 할당하는 것을 특징으로 한다.
본 발명의 또 다른 실시예에 따르면, 본 발명에 따른 프로그램의 취약점을 이용한 공격의 탐지 방법은 프로세스에서 특정 행위를 수행하기 위해 프로세스가 실행되어 특정 함수가 호출된 경우, 상기 함수를 후킹하여 프로세스의 실행을 일시 중단시키는 후킹처리단계와; 상기 후킹처리단계에서 후킹된 함수의 콜스택을 확인하여 콜스택 리턴주소 정보를 수집출력하는 정보수집단계와; 상기 정보수집단계에서 출력된 콜스택 리턴주소 정보를 분석함으로써 악성행위를 탐지하여 악성코드가 실행되는 것을 방지하는 진단처리단계를 포함하는 것을 특징으로 한다.
본 발명의 또 다른 실시예에 따르면, 본 발명에 따른 프로그램의 취약점을 이용한 공격의 탐지 방법에 있어서 상기 콜스택 리턴주소 정보는 후킹된 함수를 호출하는 모든 함수호출 경로 상에 위치하는 모든 함수의 리턴주소, 상기 리턴주소를 포함하고 있는 메모리 속성, 상기 리턴주소를 포함하고 있는 모듈의 이름을 포함하며, 상기 진단처리단계는 콜스택 리턴주소 정보를 분석하여 리턴주소가 코드 영역에 있는지 판단하여 리턴주소가 코드 영역에 존재하지 않는 경우 악성행위가 있는 것으로 판단하는 제1진단단계와, 콜스택 리턴주소 정보를 분석하여 리턴주소가 가리키는 명령어의 이전 명령어가 함수 호출 명령어인지 판단하여 리턴주소가 가리키는 명령어의 이전 명령어가 함수 호출 명령어가 아닌 경우 악성행위가 있는 것으로 판단하는 제2진단단계를 포함하는 것을 특징으로 한다.
본 발명의 또 다른 실시예에 따르면, 본 발명에 따른 프로그램의 취약점을 이용한 공격의 탐지 방법은 상기 정보수집단계 후 진단처리단계 전에 상기 정보수집단계에서 출력된 콜스택 리턴주소 정보를 기설정된 예외처리 기준과 비교하여 상기 콜스택 리턴주소 정보가 예외처리 기준에 해당한다고 판단시 진단처리단계에서의 판단의 예외처리가 되도록 하는 필터링단계를 추가로 포함하며, 상기 필터링단계에서는 콜스택 리턴주소 정보의 리턴주소가 프로세스 주소 공간 내에 할당되어 있지 않은 메모리에 있는 경우, 콜스택 리턴주소 정보의 리턴주소가 메모리의 스택 영역에 있는 경우, 콜스택 리턴주소 정보의 리턴주소가 화이트리스트에 있는 경우, 골스택 리턴주소 정보의 리턴주소의 속성이 기본 쓰기 상태인 경우, 예외처리하는 것을 특징으로 한다.
본 발명의 또 다른 실시예에 따르면, 본 발명에 따른 프로그램의 취약점을 이용한 공격의 탐지 방법은 후킹처리단계 전에 프로세스의 보안상태를 확인설정하는 보안설정단계를 추가로 포함하며, 상기 보안설정단계는 운영체제의 디이피 상태를 체크하여 활성화하는 체크단계와, 상기 체크단계에서 운영체제의 디이피가 활성화되어 있음을 확인된 경우 프로세스에 영구디이피를 적용시켜 실행권한이 없는 메모리 영역에서의 코드가 실행되는 것을 방지하는 실행단계와, 상기 실행단계에서 영구디이피가 설정된 후에 힙스프레이 공격 기법에 의한 악성행위에 사용되는 힙 영역의 주소를 미리 선점하는 주소선점단계를 포함하고, 상기 실행단계에서는 상기 프로세스에 디이피가 적용되어 있지 않으면 프로세스가 생성된 상태에서 디이피를 적용하여 주고, 기존에 디이피가 설정되어 있으면 해당 디이피를 해제하고 디이피를 다시 적용시켜, 해당 프로세스에서 악성행위에 의해 해제가 불가능한 영구디이피가 설정되는 것을 특징으로 한다.
본 발명의 또 다른 실시예에 따르면, 본 발명에 따른 프로그램의 취약점을 이용한 공격의 탐지 방법은 상기 프로그램의 취약점을 이용한 공격의 탐지 방법은 상기 후킹처리단계에서 후킹된 함수에 대한 정보를 분석하여 프로세스에 로드되는 동적 모듈의 기존 주소를 재배치하는 재배치단계를 추가로 포함하며, 상기 재배치단계에서는 동적모듈의 재배치 옵션이 활성화되어 있는지 판단하고, 상기 재배치 옵션이 비활성되어 있으면 동적모듈의 로드를 수행하는 함수에서 기존 주소를 수집하고, 상기 기존 주소에 메모리를 할당하는 것을 특징으로 한다.
본 발명은 앞서 본 실시예와 하기에 설명할 구성과 결합, 사용관계에 의해 다음과 같은 효과를 얻을 수 있다.
본 발명은 프로그램의 취약점을 이용하여 악성코드를 실행시키는 행위를 시그니쳐 기반이 아니라 행위기반으로 진단하고 차단할 수 있는 효과가 있다.
또한, 본 발명은 프로세스에서 특정 행위를 수행하기 위해 프로세스가 실행되어 특정 함수가 호출된 경우, 상기 함수를 후킹하여 프로세스의 실행을 일시 중단시키고 후킹된 함수의 콜스택을 확인하여 콜스택 리턴주소 정보를 수집하고 상기 콜스택 리턴주소 정보를 분석함으로써 메모리의 전 영역에서의 코드 실행 혹은 잘못된 접근을 탐지하여 악성코드가 실행되는 것을 방지할 수 있는 효과가 있다.
또한, 본 발명은 콜스택 탐지기법을 이용하여 하나의 함수만 후킹해도 수십 가지의 함수 호출 경로를 탐지할 수 있는 효과가 있다.
또한, 본 발명은 프로세스에 영구디이피를 설정하고, 힙 영역의 주소를 미리 선점하고, 프로세스에 로드되는 동적 모듈의 기존 주소를 재배치하여, 더욱 효과적으로 악성행위를 방지할 수 있는 효과가 있다.
또한, 본 발명은 필터링부가 콜스택 리턴주소 정보를 필터링하여 진단처리부의 실행을 용이하게 할 수 있는 효과가 있다.
도 1은 본 발명의 일 실시예에 따른 프로그램의 취약점을 이용한 공격의 탐지 장치의 블럭도.
도 2는 도 1의 보안설정부의 세부 구성을 나타내는 블럭도.
도 3은 도 1의 프로세스검토부의 세부 구성을 나타내는 블럭도.
도 4는 프로그램 취약점을 이용한 일반적인 공격 기법을 설명하기 위한 참고도.
도 5는 프로그램 취약점을 이용한 알오피(ROP) 공격 기법을 설명하기 위한 참고도.
도 6은 프로그램 취약점을 이용한 힙스프레이(Heap Spray) 공격 기법을 설명하기 위한 참고도.
도 7은 도 3의 정보수집부를 설명하기 위한 함수 호출 경로를 나타내는 참고도.
도 8 및 9는 도 3의 제2진단부를 설명하기 위한 참고도.
도 10은 도 1의 재배치부의 작동과정을 설명하기 위한 순서도.
도 11은 본 발명의 다른 실시예에 따른 프로그램의 취약점을 이용한 공격의 탐지 방법의 순서도.
이하에서는 본 발명에 따른 프로그램의 취약점을 이용한 공격의 탐지 장치 및 방법의 바람직한 실시예들을 첨부된 도면을 참조하여 상세히 설명한다. 하기에서 본 발명을 설명함에 있어서 공지 기능 또는 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략하도록 한다. 명세서 전체에서, 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미하며, 또한 명세서에 기재된 "...부" 등의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며 이는 하드웨어나 소프트웨어 또는 하드웨어 및 소프트웨어의 결합으로 구현될 수 있다.
도 1은 본 발명의 일 실시예에 따른 프로그램의 취약점을 이용한 공격의 탐지 장치의 블럭도이며, 도 2는 도 1의 보안설정부의 세부 구성을 나타내는 블럭도이고, 도 3은 도 1의 프로세스검토부의 세부 구성을 나타내는 블럭도이며, 도 4는 프로그램 취약점을 이용한 일반적인 공격 기법을 설명하기 위한 참고도이고, 도 5는 프로그램 취약점을 이용한 알오피(ROP) 공격 기법을 설명하기 위한 참고도이며, 도 6은 프로그램 취약점을 이용한 힙스프레이(Heap Spray) 공격 기법을 설명하기 위한 참고도이고, 도 7은 도 3의 정보수집부를 설명하기 위한 함수 호출 경로를 나타내는 참고도이며, 도 7 및 8은 도 3의 제2진단부를 설명하기 위한 참고도이고, 도 10은 도 1의 재배치부의 작동과정을 설명하기 위한 순서도이며, 도 11은 본 발명의 다른 실시예에 따른 프로그램의 취약점을 이용한 공격의 탐지 방법의 순서도이다.
본 발명의 일 실시예에 따른 프로그램의 취약점을 이용한 공격의 탐지 장치를 도 1 내지 10을 참조하여 설명하면, 프로세스에 보호부(2)를 로드하는 설치부(1)와, 상기 설치부(1)에 의해 프로세스에 로드되어 프로그램의 취약점을 이용한 공격을 탐지방어하는 보호부(2) 등을 포함한다.
상기 설치부(1)는 프로세스에 보호부(2)를 로드하는 구성으로, 상기 설치부(1)는 커널에서 작동하는 디바이스 드라이버이며 프로세스가 생성될 때 콜백루틴을 사용해 프로세스가 생성되고 난 후 프로세스의 실행이 되지 않은 상태에서 보호부(2)를 설치하게 된다. 예컨대, 상기 설치부(1)는 비동기 프로시져 콜(Asynchronous Procedure Calls)이라는 기술을 사용해 보호부(2)를 프로세스에 로드할 수 있다. 상기 프로세스(Process)의 생성이라 함은 일반적으로 프로그램이 작동 중인 경우를 말하는데, 프로세스가 생성되면 각각의 프로세스는 메모리에 개인공간을 가지게 된다. 예컨대, NotePad.exe라는 실행파일이 있을 때, 이 파일이 실행되어 메모리에 적재되면 메모장 프로세스가 생성되게 된다. 또한, 상기 프로세스의 실행이라 함은 프로세스가 생성된 후, 상기 프로세스에서 특정 행위(예컨대, 파일 생성, 외부 통신 등)가 수행되기 위해 코드를 실행시키는 것을 의미한다.
상기 보호부(2)는 프로세스가 생성되고 난 후 프로세스의 실행이 되지 않은 상태에서 상기 설치부(1)에 의해 프로세스에 로드되어 프로그램의 취약점을 이용한 공격을 탐지방어하는 구성으로, 보안설정부(3), 프로세스검토부(4), 재배치부(5) 등을 포함한다.
상기 보안설정부(3)는 프로그램의 취약점을 이용한 공격(이하, '악성행위'라 함)을 진단차단하기 위해 프로세스의 실행 전에 프로세스의 보안상태를 확인설정하는 구성으로, 영구디이피설정부(31), 주소선점부(32) 등을 포함한다.
상기 영구디이피설정부(31)는 프로세스에 영구디이피(Permanent DEP)를 설정하는 구성으로, 체크부(311), 실행부(312) 등을 포함한다.
상기 체크부(311)는 운영체제(Operating System)의 디이피(DEP, Data Execution Prevention)의 상태를 체크하여 활성화시키는 구성으로, 상기 데이터 실행 방지(DEP)라 함은 실행권한이 없는 메모리 영역에서 코드 실행이 되는 것을 막는 방어 기법이다. 상기 디이피는 각각의 프로세스마다 적용되는 것이 가능하나 운영체제의 디이피가 비활성화되어 있으면 각각의 프로세스에 디이피를 적용하여도 디이피 기능이 작용하지 않으므로, 각각의 프로세스에 디이피를 적용시켜 주기 전에 상기 체크부(311)가 운영체제의 디이피 상태를 체크하여 상기 운영체제의 디이피가 비활성화되어 있다면 활성화되도록 한다.
상기 실행부(312)는 상기 체크부(311)에 의해 운영체제의 디이피가 활성화되어 있음을 확인된 경우, 프로세스에 영구디이피를 적용시켜 실행권한이 없는 메모리 영역에서의 코드가 실행되는 것을 방지한다. 일반적으로 프로그램을 만들 때 컴파일러에서 디이피 옵션을 주고 프로그램을 만들면 해당 프로그램이 실행되어 프로세스 상태가 되었을 때 해당 프로세스에 디이피가 적용되게 되지만, 이 상태에서는 디이피를 해제하는 것이 가능하여 프로세스가 생성된 상태에서 상기 프로세스에 디이피를 적용하여 해제가 불가능한 영구디이피를 생성하게 된다. 상기 프로세스에 디이피가 적용되어 있지 않으면 프로세스가 생성된 상태에서 디이피를 적용하여 주고, 기존에 디이피가 설정되어 있으면 해당 디이피를 해제하고 디이피를 다시 적용시켜 주면, 해당 프로세스에서 악성행위에 의해 해제가 불가능한 영구디이피가 설정되게 된다. 본 명세서에 전체에 걸쳐 일반적인 메모리(Normal Memory) 영역이라 하면, 메모리에서 코드(Code) 영역을 제외한 데이터, 스택, 힙 영역 등의 메모리 영역을 의미하며, 정상적인 경우에 코드 실행은 메모리의 코드 영역에서 수행되므로 일반적인 메모리 영역은 실행권한이 없는 메모리 영역으로 표현될 수 있다.
상기 프로세스에 영구디이피를 설정하는 이유를 살펴보면, 도 4에 도시된 바와 같은 일반적인 악성행위의 경우 입력데이터(Input Data, 예컨대 입력데이터는 문서 리더 프로그램인 경우 문서 파일이 될 수 있고, 채팅프로그램인 경우 채팅 메시지 값이 될 수 있음)가 들어오면, 프로세스는 들어온 입력데이터를 처리하는데 이때 입력데이터가 취약한 코드를 공격해 코드 실행 흐름이 코드 영역에서 일반적인 메모리 영역의 입력데이터 위치로 바꾸게 되어, 코드 영역에서 더 이상 코드 실행이 되지 않고 일반적인 메모리 영역에서 코드 실행이 이루어지게 되어, 입력데이터에 들어 있는 악성코드가 실행되게 된다. 이때, 해당 프로세스에 디이피가 걸려 있으면, 일반적인 메모리 영역에 있는 악성코드는 실행이 되지 않는다.
하지만, 알오피(ROP, Return Oriented Programming)라는 공격 기법을 이용하면, 일반적인 메모리 영역에서 코드 실행이 바로 되지 않고 코드 영역에서 악의적인 행위를 수행하여, 일반적이 디이피 기능을 우회하는 것이 가능하다. 도 5에 도시된 바와 같이, 알오피 공격 기법은 코드 영역의 코드 섹션들(Gaget)을 이용하여 악성행위를 하는 하나의 흐름을 만들어 내는데, 즉 악성행위를 하는 코드는 코드 영역에 있는 명령어들을 조합해서 발생시키는 것으로, 이렇게 되면 해당 프로세스에 디이피가 걸려 있어도 이를 우회하고 악성행위가 발생하게 된다. 하지만, 코드 섹션들을 찾고 이를 의미있는 조합으로 만들어내기란 쉬운 일이 아니어서, 알오피 공격 기술을 사용해 많은 악성행위를 하기란 어려움이 있어, 공격자들은 알오피 공격기법을 이용해 프로세스의 디이피의 해제 함수를 호출하는 행위를 생성하여 프로세스에 설정되어 있는 디이피를 해제시킨 다음, 일반적인 메모리 영역에 있는 악성코드로 실행 흐름을 넘김으로써 악성코드를 실행시킨다. 그러나, 상기 디이피설정부에 의해 프로세스에는 영구디이피가 적용되어 있으므로, 알오피 공격 기법을 사용해도 프로세스에 적용된 디이피를 해제할 수 없어 여전히 일반적인 메모리 영역에서 코드 실행을 막을 수 있게 된다.
상기 주소선점부(32)는 힙스프레이 공격 기법을 방어하기 위해 악성행위에 사용되는 일반적인 메모리 영역의 힙 영역의 주소를 미리 선점하는 구성이다. 도 6을 참조하여 힙스프레이 공격 기법을 먼저 살펴보면, 상기 힙스프레이(Heap Spray) 공격 기법은 아무 의미 없는 일을 하는 놉 슬레드(Nop Sled)를 메모리의 힙 영역에 채워 놓고 중간 중간에 셀코드(Shell Code)를 삽입하여, 코드 영역의 취약한 코드 부분에서 점프(jmp) 또는 콜(Call) 명령어가 수행되게 하여 공격자가 원하는 주조로 제어가 이동하게 하여, 악의적인 코드(Shell Code)가 수행되도록 한다. 악의적인 코드를 실행하기 위해서는 놉 슬레드를 타고 내려오게 되는데, 상기 놉 슬레드 값으로 사용한 값이 점프 또는 콜 명령어에 의해 제어가 이동되는 주소가 된다. 따라서, 힙스프레이 공격 기법에 의한 악성행위에 사용되는 힙 영역의 주소(놉 슬레드 값)를 미리 선점해 버리면 악성코드가 실행되는 것을 방지할 수 있다. 구체적인 예를 들어 설명하면, "ADC AL, 0x14"라는 명령어는 AL레지스터에만 영향을 줄 뿐 여러 번 수행된다고 해도 추후 실행되는 코드(악성코드)에 전혀 영향을 미치지 못하는 명령어인데, 상기 명령어의 바이너리 값은 "0x14"로서 "0x14"가 놉 슬레드로 사용될 수 있다. 힙스프레이 공격 기법에 있어 놉 슬레드 값으로 사용된 값이 점프 또는 콜 명령어에 의해 제어가 이동되는 주소가 되는데, 즉 위에서 0x14를 놉 슬레드로 사용하므로 분기되는 주소는 0x14141414가 되고, 만약 0x14141414에 미리 주소가 할당이 되어 있으면 추후에 할당되는 힙 영역은 0x14141414 주소를 포함하는 페이지를 건너뛰고 주소가 할당되게 된다. 위와 같은 상황에서 프로그램의 취약점으로 인해 점프 또는 콜이 0x14141414로 발생한 경우, 해당 영역에는 놉 슬레드가 아닌 주조선점부가 할당(선점)했던 영역으로 들어오게 됨으로써 악성코드의 실행이 방지되게 된다.
상기 프로세스검토부(4)는 프로세스에서 특정 행위를 수행하기 위해 프로세스가 실행되어 특정 함수가 호출된 경우, 상기 함수를 후킹하여 프로세스의 실행을 일시 중단시키고 후킹된 함수의 콜스택을 확인하여 콜스택 리턴주소 정보를 수집하고 상기 콜스택 리턴주소 정보를 분석하므로써 악성행위를 탐지하여 악성코드가 실행되는 것을 방지하는 구성으로, 후킹처리부(41), 정보수집부(42), 정보판단부(43) 등을 포함한다. 상기 보안설정부(3)와 프로세스검토부(4)는 각각 다른 방식으로 악성행위를 차단하기 위한 구성이므로, 본원발명에서 상기 프로세스검토부(4)의 작동 전에 반드시 상기 보안설정부(3)가 작동하여야 하는 것은 아니며, 더욱 보안설정부(3) 없이 상기 프로세스검토부(4)만 작동하여 악성행위를 차단하는 것도 가능하다.
상기 후킹처리부(41)는 프로세스에서 특정 행위를 수행하기 위해 프로세스가 실행되어 특정 함수가 호출된 경우, 상기 함수를 후킹하여 프로세스의 실행을 일시 중단시키는 구성이다. 상기 후킹(Hooking)은 함수 호출 과정을 중간에 가로채서 원하는 작업을 할 수 있게 하는 기술을 의미하는데, 각각의 프로세스는 목적에 맞게 여러 가지 행위를 하게 되는데 특정 행위를 수행하기 위해 프로세스가 실행되어 특정 함수를 호출하므로, 상기 특정 함수를 후킹하면 프로세스의 실행을 일시 중단시켜 원하는 작업(프로그램의 코드 실행 흐름이 악성행위에 의해 이루어졌는지 여부 판단)을 수행할 수 있다. 예컨대, 프로그램이 문서 편집기라면 디스크에 파일을 생성하기 위해 "CreateFile" 함수를 호출하고 프로그램이 브라우저라면 외부와 통신을 하기 위해 "Connect" 함수가 호출되게 되어, 상기 CreateFile, Connect 등의 함수를 후킹함으로 디스크 파일을 생성, 외부와 통신을 일시 중단시킬 수 있다. 상기 프로세스의 실행에서 호출되는 함수를 후킹함으로서 프로세스 생성, 프로세스 정보 변경, 프로세스 핸들 얻기, 파일 생성, 레지스트리 접근, 시스템 정보 접근, 메모리 할당, 메모리 속성 변경, 외부와 통신, 파일 다운로드 등 행위를 감시할 수 있게 된다.
상기 정보수집부(42)는 상기 후킹처리부(41)에서 후킹된 함수의 콜스택을 확인하여 콜스택 리턴주소 정보를 수집출력하는 구성으로, 상기 콜스택 리턴주소 정보는 후킹된 함수를 호출하는 모든 함수호출 경로 상에 위치하는 모든 함수의 리턴주소, 상기 리턴주소를 포함하고 있는 메모리 속성(예컨대, 메모리의 보호권한, 상태값 등) 및 모듈명(예컨대, hwp, exe, dll), 동적모듈이 로드되는 기본 주소(Imagebase) 등을 포함한다. 상기 후킹된 함수의 콜스택(Callstack)을 통해 특정 함수를 호출하는데 까지 어떠한 함수호출 경로를 타고 왔는지 확인가능한데, 예컨대 "main" 함수가 내부적으로 "func1" 함수를 호출하고 "func1" 함수는 "func2" 함수를 호출하고 "func2" 함수는 "CreateFile" 함수를 호출하였고 상기 프로세스검토부(4)에서 "CreateFile" 함수가 감시(후킹)대상 함수로 등록되어 있다면, 상기 정보수집부(42)는 "CreateFile" 함수를 호출한 주소의 다음 주소", "func2" 함수를 호출한 주소의 다음 주소", "func1" 함수를 호출한 주소의 다음 주소" 순으로 콜스택을 얻게 된다. 즉, 호출한 주소의 다음 주소를 리턴주소(Return Address)라 하는데, 상기 정보수집부(42)는 각 함수를 호출한 리턴주소를 연이어 수집하게 된다. 상기 콜스택은 단순히 리턴주소 리스트만 가지고 있으므로, 이후 상기 정보수집부(42)는 메모리로부터 상기 리턴주소를 포함하고 있는 메모리 속성(예컨대, 메모리의 보호권한, 상태값 등) 및 모듈이름(예컨대, hwp, exe, dll), 동적모듈이 로드되는 기본 주소(Imagebase) 등을 수집하여 콜스택 리턴주소 정보를 완성하여 출력한다.
상기 정보수집부(42)는 콜스택을 이용하여 감시 대상이 되는 함수의 모든 함수호출 경로 상의 함수의 정보를 포함하는 콜스택 리턴주소 정보를 수집출력하므로, 상기 정보판단부(43)에 의해 감시 대상이 되는 함수의 상위 모든 함수를 진단할 수 있게 되어 악성행위를 효과적으로 방지할 수 있다. 구체적으로, 도 7에 도시된 바와 같이 후킹을 하고 있는 함수는 NtCreateFile 하나이지만 상위의 모든 함수에 대해서 함수호출(코드) 흐름이 악의적인 흐름인지 아닌지를 검사할 수 있게 된다. 도 7에서는 3개의 함수호출 경로만 나타냈지만 실제로 NtCreateFile 함수를 호출하는 경로는 수십 가지이며 이에 대한 모든 검사를 할 수 있다. 즉, 수십 가지의 호출 경로를 탐지할 때 콜스택 탐지기법을 사용하지 않은 경우 수십 가지의 함수를 각각 후킹하여야 하나, 콜스택 탐지기법을 이용하는 경우 하나의 함수만 후킹해도 수십 가지의 호출 경로를 탐지할 수 있게 된다.
상기 정보판단부(43)는 콜스택 리턴주소 정보를 분석하므로써 악성행위를 탐지하여 악성코드가 실행되는 것을 방지하는 구성으로, 필터링부(431), 진단처리부(432) 등을 포함한다.
상기 필터링부(431)는 상기 정보수집부(42)에서 출력된 콜스택 리턴주소 정보를 기설정된 예외처리 기준과 비교하여 상기 콜스택 리턴주소 정보가 예외처리 기준에 해당한다고 판단시 진단처리부(432)의 판단의 예외처리(필터링)가 되도록 하는 구성이다. 상기 필터링부(431)의 예외처리 기준을 살펴보면, 예컨대, 콜스택 리턴주소 정보의 리턴주소가 프로세스 주소 공간 내에 할당되어 있지 않은 메모리에 있는 경우, 콜스택 리턴주소 정보의 리턴주소가 메모리의 스택 영역에 있는 경우, 콜스택 리턴주소 정보의 리턴주소가 화이트리스트에 있는 경우, 콜스택 리턴주소 정보의 리턴주소의 속성이 기본 쓰기(Write) 상태인 경우, 예외처리하게 된다.
일반적으로 리턴주소가 있는 영역은 코드가 실행되는 영역이기 때문에 리턴 주소를 포함하는 메모리의 속성은 정상적으로 구할 수 있어야 한다. 메모리 속성이 정상적이라는 말은 리턴주소를 포함하는 메모리주소가 메모리에 정상적으로 할당된 영역임을 말한다. 그러나, 실제로 콜스택을 따라가면서 리턴주소를 얻어오다 보면 어디까지 리턴주소를 얻어야 하는지 모르기 때문에 잘못된 리턴주소를 얻어오는 경우도 발생하게 되므로, 즉 리턴주소가 프로세스 주소 공간 내에 할당되어 있지 않은 메모리에 있는 경우 예외처리하게 된다.
또한, 프로세스에는 상기 보안설정부(3)에 의해 영구디이피가 설정되어 있으므로, 스택영역에서 코드실행이 이뤄지는 일은 존재하지 않게 된다. 하지만, 수집한 리턴주소가 스택 영역 안에 존재한다면 이는 악의적인 흐름으로 인한 것이 아닌 애당초 잘못된 리턴주소를 얻어온 것으로 판단하여, 즉 리턴주소가 메모리의 스택 영역에 있는 경우 예외처리하게 된다.
또한, 일반적인 바이너리는 코드 실행 흐름이 코드 영역 안에서만 작동하지만 안티바이러스(Anti-Virus)와 같이 시스템에 종속적인 프로그램들은 스스로 악의적인 행위처럼 보이는 작업들을 많이 하게 된다. 예를 들어 코드 영역은 일반적으로 실행(Execute)과 읽기(Read) 권한만 가져야하지만 코드 영역을 수정하기 위해 쓰기(Write) 권한을 추가로 주게 되면 실행/읽기/쓰기(Execute/Read/Write) 권한을 가지게 된다. 이때 해당 영역에서 파일을 생성하는 행위가 발생했다면 해당 행위를 후킹 모니터링 루틴에서 잡아내게 된다. 그 후, 리턴주소를 구하고 리턴주소의 메모리 속성을 검사했을 때 실행/읽기/쓰기(Execute/Read/Write) 권한을 가지고 있다면 악의적인 흐름으로 판단 즉, 오탐을 하게 된다. 먼저 위 경우 코드 영역에 쓰기(Write) 권한을 주기 위한 행위가 정상적인 흐름에서 발생되었기 때문에 개발자가 의도적으로 위와 같은 행위를 했다고 볼 수 있다. 그렇기 때문에 해당 메모리 속성이 실행/읽기/쓰기(Execute/Read/Write)로 변경되는 행위가 정상적인 흐름에 발생했다면 메모리 속성이 변경된 메모리는 화이트리스트(White Address) 범위로 등록을 해두고 판단부에서 리턴주소가 화이트리스트(Write Address) 범위에 들어가 있다면 정상적인 흐름으로 판단해버리는 것이다. 그 외에도 정상적인 흐름에서 실행/읽기/쓰기(Execute/Read/Write) 권한으로 메모리를 할당하는 경우 등은 화이트리스트(Write Address) 범위로 등록이 되어 오탐이 되지 않도록 하고 있으므로, 즉 리턴주소가 화이트리스트에 있는 경우 예외처리하게 된다.
또한, 파일 상에서 특정 영역이 이미 실행/읽기/쓰기(Execute/Read/Write) 권한을 가지고 있다면, 이 또한 개발자가 의도한 행위로 볼 수 있는데, 하지만 이는 코드 상에서 메모리 속성을 변경하는 것이 아니기 때문에 리턴주소가 화이트리스트에 있는 경우 예외처리하는 판단방법에 의해 예외처리되는 것이 불가능하여, 리턴주소를 포함하는 메모리 영역이 실행/읽기/쓰기(Execute/Read/Write) 권한을 가지고 있을 때 상기 필터링부가 해당 메모리 영역에 매칭되는 디스크 상의 파일을 찾아가 파일상에서 해당 영역에 대한 속성을 구하여, 이때 파일상에서 실행/읽기/쓰기(Execute/Read/Write) 권한을 가지고 있었다면 이는 정상적인 행위로 판단하여, 리턴주소의 속성이 기본 쓰기(Write) 상태인 경우 예외처리하게 된다.
상기 진단처리부(432)는 상기 필터링부(431)에 의해 필터링된 콜스택 리턴주소 정보를 분석하여 악성행위를 탐지하여 악성코드가 실행되는 것을 방지하는 구성으로, 리턴주소가 코드 영역에 있는지 판단하는 제1진단부(432a)와, 리턴 주소가 가리키는 명령어의 이전 명령어가 함수 호출 명령어인지 판단하는 제2진단부(432b), 상기 제1, 2진단부(432a, 432b)의 판단결과에 따라 프로세스를 중단여부를 결정하는 처리부(432c) 등을 포함한다. 상기 필터링부(431)는 콜스택 리턴주소 정보를 필터링하여 상기 진단처리부(431)의 실행을 용이하게 하기 위한 구성이므로, 본원발명에서 상기 필터링부(431) 없이 상기 정보수집부(42)에서 출력된 콜스택 리턴주소 정보를 분석하여 악성행위를 탐지하여 악성코드가 실행되는 것을 방지하는 것도 가능하다.
상기 제1진단부(432a)는 콜스택 리턴주소 정보를 분석하여 리턴주소가 코드 영역에 있는지 판단하는 구성으로, 리턴주소가 코드 영역에 존재하지 않는 경우 악성행위가 있는 것으로 판단한다. 일반적으로 코드 실행은 코드 영역에서만 하도록 되어 있는데, 프로그램의 취약점으로 인해 코드 흐름이 바뀌게 되어 일반적인 메모리 영역으로 코드 흐름이 이동되고 이 상태에서 예컨대 파일 생성 등과 같은 행위가 일어났다고 하면, 해당 파일 생성 행위는 일반적인 메모리 영역에서 발생하였기 때문에 콜스택 리턴주소 정보의 리턴주소를 보면 어느 리턴주소는 코드 영역이 아닌 일반적인 메모리 영역인 부분이 있게 되므로, 상기 제1진단부(432a)는 위 경우로 악성행위로 판단하게 된다.
상기 제2진단부(432b)는 콜스택 리턴주소 정보를 분석하여 리턴주소가 가리키는 명령어의 이전 명령어가 함수 호출(Call) 명령어인지 판단하는 구성으로, 리턴주소가 가리키는 명령어의 이전 명령어가 함수 호출 명령어가 아닌 경우 악성행위가 있는 것으로 판단한다. 구체적으로, 상기 제2진단부(432b)는 콜스택 리턴주소 정보에서 리턴주소를 확인하여 메모리로부터 리턴주소가 가리키는 명령어의 이전 명령어가 함수 호출(Call) 명령어인지 판단하게 된다. 도 8은 함수 실행 흐름의 일 예를 나타내는데, 도 8을 참조하여 상기 제2진단부(432b)를 설명하면, 함수 f1에서 명령어 1, 2가 차례로 실행되어 함수 f2를 호출하는 명령어 2(Call)에 의해 함수 f2가 호출되어 f2의 명령어들이 차례로 실행된 후, 함수 f1의 함수 f2를 호출한 주소의 다음 주소(리턴주소)의 명령어 3이 실행되게 되는데, 상기 제2진단부(432b)는 상기 리턴주소가 가리키는 명령어 3의 이전 명령어 2가 함수 호출(Call) 명령어인지 판단하여 악성행위를 판단한다. 앞서 본 바와 같이, 알오피 공격 기법은 코드 섹션들(Gaget)을 조합해 악성코드를 만들게 되는데, 하나의 코드 섹션은 이전 명령어가 함수 호출 명령어가 아닐 확률이 매우 높기 때문이다. 따라서, 상기 제2진단부(432b)에 의해 코드 섹션들을 실행하는 것을 막을 수 있게 된다. 구체적으로, 도 9는 함수 호출 명령어의 흐름을 어셈블리 언어로 나타내는 도면인데, 도 9에 도시된 바와 같이 함수가 호출되는 경우, "GetSystemTimeAsFileTime"이라는 함수가 호출되었을 때 리턴주소는 0x004021B7 즉, "Call GetSystemTimeAsFileTime"이라는 명령어의 다음 명령어가 있는 위치이다. 그러므로, 리턴주소의 이전 명령어가 호출(Call)이 아니라면 정상적인 흐름이 아니라고 판단할 수 있게 된다.
상기 처리부(432c)은 상기 제1, 2진단부(432a, 432b)의 판단결과에 따라 프로세스를 중단여부를 결정한다. 상기 처리부(432c)는 상기 제1, 2진단부(432a, 432b)의 어느 하나 이상이 악성행위를 감지한 경우 진단정보를 로그(Log) 파일과 함께 디스크에 저장하고 프로세스에서 더 이상의 코드 실행이 되지 않도록 종료시키고, 상기 제1, 2진단부(432a, 432b)가 악성행위를 감지하지 못한 경우 일시 중단하였던 프로세스를 실행시킨다.
상기 재배치부(5)는 상기 후킹처리부(41)에서 후킹된 함수(동적 모듈의 로드에 관여하는 함수)에 대한 정보를 분석하여 프로세스에 로드되는 동적 모듈의 기존 주소를 재배치하는 구성이다. 상기 동적 모듈(예컨대, dll, ocx 등)은 독립적으로 실행되어 프로세스를 생성하는 실행파일(예컨대, exe 등)에 종속하여 실행되는 파일로, 동적모듈에서 재배치 옵션(DYNAMICBASE)이 활성화되어 있으면 상기 동적모듈은 메모리에 로드될 때마다 다른 주소(imagebase)로 로드되게 되며, 재배치 옵션의 활성화와 상관없이 로드하려고 하는 주소가 이미 할당되어 있으면 다른 주소로 로드되게 된다. 따라서, 도 10에 도시된 바와 같이, 상기 재배치부(5)가 동적모듈의 재배치 옵션이 활성화되어 있는지 판단하고(S51), 상기 재배치 옵션이 비활성되어 있으면 동적모듈의 기존 주소를 수집하고(S52), 상기 기존 주소에 메모리를 할당하면(S53), 동적모듈의 재배치 옵션의 활성화와 상관없이 로드하려고 하는 주소가 이미 할당되어 있으면 운영체제는 다른 주소로 동적모듈을 로드한다(S54). 상기 알오피 공격 기법은 코드 영역에 있는 코드 섹션들을 조합해 악성코드를 완성하므로, 이를 위해서는 코드 섹션들을 공격자가 직접 찾아야 하며 해당 주소가 고정된 주소를 가지는 동적모듈이 있어야만 적용시킬 수 있다. 하지만, 어떠한 동적모듈이든 강제 재배치를 해주게 되면 공격자는 알오피 공격시 코드 섹션을 더 이상 찾지 못하게 되며 공격에 실패하게 되어 알오피에 의한 공격을 효과적으로 방어할 수 있다.
상기와 같은 구성을 가지는 탐지 장치를 이용하여 프로그램의 취약점을 이용한 공격을 탐지하는 방법을 도 1 내지 11을 참조하여 살펴보면, 상기 프로그램의 취약점을 이용한 공격 탐지 방법은 설치부(1)가 프로세스에 보호부(2)를 로드하는 설치단계(S1)와; 프로세스에서 특정 행위를 수행하기 위해 프로세스가 실행되어 특정 함수가 호출된 경우, 상기 설치단계(S1)에서 설치된 상기 보호부(2)의 후킹처리부(41)가 상기 함수를 후킹하여 프로세스의 실행을 일시 중단시키는 후킹처리단계(S2)와; 상기 보호부(2)의 상기 정보수집부(42)가 상기 후킹처리단계(S2)에서 후킹된 함수의 콜스택을 확인하여 콜스택 리턴주소 정보를 수집출력하는 정보수집단계(S3)와; 상기 정보수집단계(S3)에서 출력된 콜스택 리턴주소 정보를 상기 진단처리부(432)가 분석하므로써 악성행위를 탐지하여 악성코드가 실행되는 것을 방지하는 진단처리단계(S4);를 포함한다.
상기 설치단계(S1)는 설치부(1)가 프로세스에 보호부(2)를 로드하는 단계로, 상기 설치부(1)는 프로세스가 생성될 때 콜백루틴을 사용해 프로세스가 생성되고 난 후 프로세스의 실행이 되지 않은 상태에서 보호부(2)를 설치한다.
상기 후킹처리단계(S2)는 프로세스에서 특정 행위를 수행하기 위해 프로세스가 실행되어 특정 함수가 호출된 경우, 상기 설치단계(S1)에서 설치된 상기 보호부(2)의 후킹처리부(41)가 상기 함수를 후킹하여 프로세스의 실행을 일시 중단시키는 단계이다.
상기 정보수집단계(S3)는 상기 보호부(2)의 상기 정보수집부(42)가 상기 후킹처리단계(S2)에서 후킹된 함수의 콜스택을 확인하여 콜스택 리턴주소 정보를 수집출력하는 단계로, 상기 콜스택 리턴주소 정보는 후킹된 함수를 호출하는 모든 함수호출 경로 상에 위치하는 모든 함수의 리턴주소, 상기 리턴주소를 포함하고 있는 메모리 속성(예컨대, 메모리의 보호권한, 상태값 등) 및 모듈명(예컨대, hwp, exe, dll), 동적모듈이 로드되는 기본 주소(Imagebase) 등을 포함한다.
상기 진단처리단계(S4)는 상기 정보수집단계(S3)에서 출력된 콜스택 리턴주소 정보를 상기 보호부(2)의 진단처리부(432)가 분석하므로써 악성행위를 탐지하여 악성코드가 실행되는 것을 방지하는 단계로, 제1진단단계(S41), 제2진단단계(S42), 프로세스 종료단계(S43), 프로세스 실행단계(S44)를 포함한다.
상기 제1진단단계(S41)은 상기 진단처리부(432)의 제1진단부(432a)가 콜스택 리턴주소 정보를 분석하여 리턴주소가 코드 영역에 있는지 판단하는 단계로, 리턴주소가 코드 영역에 존재하지 않는 경우 악성행위가 있는 것으로 판단한다.
상기 제2진단단계(S42)는 상기 진단처리부(432)의 제2진단부(432b)가 콜스택 리턴주소 정보를 분석하여 리턴주소가 가리키는 명령어의 이전 명령어가 함수 호출(Call) 명령어인지 판단하는 단계로, 리턴주소가 가리키는 명령어의 이전 명령어가 함수 호출 명령어가 아닌 경우 악성행위가 있는 것으로 판단한다.
상기 프로세스 종료단계(S43)는 상기 제1진단단계(S41) 또는/및 제2진단단계(S42)에서 악성행위가 있는 것으로 판단한 경우, 상기 진단처리부(432)의 처리부(432c)가 진단정보를 로그(Log) 파일과 함께 디스크에 저장하고 프로세스에서 더 이상의 코드 실행이 되지 않도록 종료시키는 단계이다.
상기 프로세스 실행단계(S44)는 상기 제1, 2진단부(432a, 432b)가 악성행위를 감지하지 못한 경우, 상기 진단처리부(432)의 처리부(432c)가 일시 중단하였던 프로세스를 실행시키는 단계이다.
본 발명의 다른 실시예에 따른 프로그램의 취약점을 이용한 공격 탐지 방법은 보안설정단계(미도시), 필터링단계(미도시), 재배치단계(미도시) 등을 추가로 포함할 수 있다.
상기 보안설정단계는 설치단계(S1)에서 설치된 보호부(1)의 보안설정부(3)가 후킹처리단계(S2) 전에 프로세스의 보안상태를 확인설정하는 단계로, 영구디이피설정단계, 주소선점단계를 포함한다.
상기 영구디이피설정단계는 상기 보안설정부(3)의 영구디이피설정부(31)가 프로세스에 영구디이피(Permanent DEP)를 설정하는 단계로, 체크단계, 실행단계 등을 포함한다.
상기 체크단계는 상기 영구디이피설정부(31)의 체크부(311)가 운영체제(Operating System)의 디이피(DEP, Data Execution Prevention) 상태를 체크하여 활성화하는 단계이다.
상기 실행단계는 상기 체크단계에서 운영체제의 디이피가 활성화되어 있음을 확인된 경우, 상기 영구디이피설정부(31)의 실행부(312)가 프로세스에 영구디이피를 적용시켜 실행권한이 없는 메모리 영역에서의 코드가 실행되는 것을 방지하는 단계로, 상기 프로세스에 디이피가 적용되어 있지 않으면 프로세스가 생성된 상태에서 디이피를 적용하여 주고, 기존에 디이피가 설정되어 있으면 해당 디이피를 해제하고 디이피를 다시 적용시켜 주면, 해당 프로세스에서 악성행위에 의해 해제가 불가능한 영구디이피가 설정되게 된다.
상기 주소선점단계는 상기 영구디이피설정단계 후에 상기 보안설정부(3)의 주소선점부(32)가 힙스프레이 공격 기법을 방어하기 위해 악성행위에 사용되는 일반적인 메모리 영역의 힙 영역의 주소를 미리 선점하는 단계로, 힙스프레이 공격 기법에 의한 악성행위에 사용되는 힙 영역의 주소(놉 슬레드 값)를 미리 선점해 버리면 악성코드가 실행되는 것을 방지할 수 있다.
상기 필터링단계는 정보수집단계(S3) 후 진단처리단계(S4) 전에 상기 정보판단부(43)의 필터링부(431)가 상기 정보수집단계(S3)에서 출력된 콜스택 리턴주소 정보를 기설정된 예외처리 기준과 비교하여 상기 콜스택 리턴주소 정보가 예외처리 기준에 해당한다고 판단시 진단처리단계(S4)에서의 판단의 예외처리(필터링)가 되도록 하는 단계이다. 상기 필터링단계에서는 콜스택 리턴주소 정보의 리턴주소가 일반적인 메모리에 있지 않은 경우, 콜스택 리턴주소 정보의 리턴주소가 메모리의 스택 영역에 있는 경우, 콜스택 리턴주소 정보의 리턴주소가 화이트리스트에 있는 경우, 콜스택 리턴주소 정보의 리턴주소의 속성이 기본 쓰기(Write) 상태인 경우, 예외처리하게 된다.
상기 재배치단계는 상기 후킹처리단계(S2)에서 후킹된 함수(동적 모듈의 로드에 관여하는 함수)에 대한 정보를 분석하여 동적모듈의 로드를 수행하는 함수에서 동적 모듈의 기존 주소를 재배치하는 단계로, 도 10에 도시된 바와 같이, 상기 재배치부(5)가 동적모듈의 재배치 옵션이 활성화되어 있는지 판단하고(S51), 상기 재배치 옵션이 비활성되어 있으면 동적모듈의 로드를 수행하는 함수에서 기존 주소를 수집하고(S52), 상기 기존 주소에 메모리를 할당하면(S53), 운영체제의 재배치 옵션의 활성화와 상관없이 로드하려고 하는 주소가 이미 할당되어 있으면 운영체제는 다른 주소로 동적모듈을 로드한다(S54).
이상에서, 출원인은 본 발명의 바람직한 실시예들을 설명하였지만, 이와 같은 실시예들은 본 발명의 기술적 사상을 구현하는 일 실시예일 뿐이며 본 발명의 기술적 사상을 구현하는 한 어떠한 변경예 또는 수정예도 본 발명의 범위에 속하는 것으로 해석되어야 한다.
1: 설치부 2: 보호부 3: 보안설정부 4: 프로세스검토부
5: 재배치부 31: 영구데이터설정부 32: 주소선점부 41: 후킹처리부
42: 정보수집부 43: 정보판단부 311: 체크부 312: 실행부
431: 필터링부 432: 진단처리부 432a: 제1진단부 432b: 제2진단부
432c: 처리부

Claims (14)

  1. 프로세스에서 특정 행위를 수행하기 위해 프로세스가 실행되어 특정 함수가 호출된 경우, 상기 함수를 후킹하여 프로세스의 실행을 일시 중단시키는 후킹처리부와;
    상기 후킹처리부에서 후킹된 함수의 콜스택을 확인하여 콜스택 리턴주소 정보를 수집출력하는 정보수집부와;
    상기 정보수집부에서 출력된 콜스택 리턴주소 정보를 분석함으로써 악성행위를 탐지하여 악성코드가 실행되는 것을 방지하는 정보판단부를 포함하며,
    상기 콜스택 리턴주소 정보는 후킹된 함수를 호출하는 모든 함수호출 경로 상에 위치하는 모든 함수의 리턴주소, 상기 리턴주소를 포함하고 있는 메모리 속성을 포함하고,
    상기 정보판단부는 콜스택 리턴주소 정보를 분석하여 리턴주소가 코드 영역에 있는지 판단하여 리턴주소가 코드 영역에 존재하지 않는 경우 악성행위가 있는 것으로 판단하는 제1진단부와, 상기 콜스택 리턴주소 정보를 분석하여 리턴주소가 가리키는 명령어의 이전 명령어가 함수 호출 명령어인지 판단하여 리턴주소가 가리키는 명령어의 이전 명령어가 함수 호출 명령어가 아닌 경우 악성행위가 있는 것으로 판단하는 제2진단부와, 상기 제1, 2진단부의 어느 하나 이상이 악성행위를 감지한 경우 진단정보를 로그 파일과 함께 디스크에 저장하고 프로세스에서 더 이상의 코드 실행이 되지 않도록 종료시키고, 상기 제1, 2진단부가 악성행위를 감지하지 못한 경우 일시 중단하였던 프로세스를 실행시키는 처리부를 포함하는 것을 특징으로 하는 프로그램의 취약점을 이용한 공격의 탐지 장치.
  2. 삭제
  3. 삭제
  4. 삭제
  5. 프로세스에서 특정 행위를 수행하기 위해 프로세스가 실행되어 특정 함수가 호출된 경우, 상기 함수를 후킹하여 프로세스의 실행을 일시 중단시키는 후킹처리부와;
    상기 후킹처리부에서 후킹된 함수의 콜스택을 확인하여 콜스택 리턴주소 정보를 수집출력하는 정보수집부와;
    상기 정보수집부에서 출력된 콜스택 리턴주소 정보를 분석하므로써 악성행위를 탐지하여 악성코드가 실행되는 것을 방지하는 정보판단부를 포함하며,
    상기 콜스택 리턴주소 정보는 후킹된 함수를 호출하는 모든 함수호출 경로 상에 위치하는 모든 함수의 리턴주소, 상기 리턴주소를 포함하고 있는 메모리 속성을 포함하고,
    상기 정보판단부는 콜스택 리턴주소 정보를 분석하여 리턴주소가 코드 영역에 있는지 판단하여 리턴주소가 코드 영역에 존재하지 않는 경우 악성행위가 있는 것으로 판단하는 제1진단부와, 상기 콜스택 리턴주소 정보를 분석하여 리턴주소가 가리키는 명령어의 이전 명령어가 함수 호출 명령어인지 판단하여 리턴주소가 가리키는 명령어의 이전 명령어가 함수 호출 명령어가 아닌 경우 악성행위가 있는 것으로 판단하는 제2진단부와, 상기 정보수집부에서 출력된 콜스택 리턴주소 정보를 기설정된 예외처리 기준과 비교하여 상기 콜스택 리턴주소 정보가 예외처리 기준에 해당한다고 판단시 제1, 2진단부의 판단의 예외처리가 되도록 하는 필터링부를 포함하며,
    상기 필터링부는 콜스택 리턴주소 정보의 리턴주소가 프로세스 주소 공간 내에 할당되어 있지 않은 메모리에 있는 경우, 콜스택 리턴주소 정보의 리턴주소가 메모리의 스택 영역에 있는 경우, 콜스택 리턴주소 정보의 리턴주소가 화이트리스트에 있는 경우, 콜스택 리턴주소 정보의 리턴주소의 속성이 기본 쓰기 상태인 경우, 예외처리하는 것을 특징으로 하는 프로그램의 취약점을 이용한 공격의 탐지 장치.
  6. 삭제
  7. 프로세스에서 특정 행위를 수행하기 위해 프로세스가 실행되어 특정 함수가 호출된 경우, 상기 함수를 후킹하여 프로세스의 실행을 일시 중단시키는 후킹처리부와;
    상기 후킹처리부에서 후킹된 함수의 콜스택을 확인하여 콜스택 리턴주소 정보를 수집출력하는 정보수집부와;
    상기 정보수집부에서 출력된 콜스택 리턴주소 정보를 분석하므로써 악성행위를 탐지하여 악성코드가 실행되는 것을 방지하는 정보판단부와,
    프로세스의 실행 전에 프로세스의 보안상태를 확인설정하는 보안설정부를 포함하며,
    상기 보안설정부는 운영체제의 디이피 상태를 체크하여 활성화시키는 체크부와, 상기 체크부에 의해 운영체제의 디이피가 활성화되어 있음을 확인된 경우 프로세스에 영구디이피를 적용시켜 실행권한이 없는 메모리 영역에서의 코드가 실행되는 것을 방지하는 실행부를 포함하며,
    상기 실행부는 상기 프로세스에 디이피가 적용되어 있지 않으면 프로세스가 생성된 상태에서 디이피를 적용하여 주고, 기존에 디이피가 설정되어 있으면 해당 디이피를 해제하고 디이피를 다시 적용시켜서, 해당 프로세스에서 악성행위에 의해 해제가 불가능한 영구디이피가 설정하는 것을 특징으로 하는 프로그램의 취약점을 이용한 공격의 탐지 장치.
  8. 제7항에 있어서, 상기 보안설정부는
    힙스프레이 공격 기법에 의한 악성행위에 사용되는 힙 영역의 주소를 미리 선점하도록 하는 주소선점부를 추가로 포함하는 것을 특징으로 하는 프로그램의 취약점을 이용한 공격의 탐지 장치.
  9. 프로세스에서 특정 행위를 수행하기 위해 프로세스가 실행되어 특정 함수가 호출된 경우, 상기 함수를 후킹하여 프로세스의 실행을 일시 중단시키는 후킹처리부와;
    상기 후킹처리부에서 후킹된 함수의 콜스택을 확인하여 콜스택 리턴주소 정보를 수집출력하는 정보수집부와;
    상기 정보수집부에서 출력된 콜스택 리턴주소 정보를 분석하므로써 악성행위를 탐지하여 악성코드가 실행되는 것을 방지하는 정보판단부와,
    상기 후킹처리부에서 후킹된 함수에 대한 정보를 분석하여 동적모듈의 로드를 수행하는 함수에서 프로세스에 로드되는 동적모듈의 기존 주소를 재배치하는 재배치부를 포함하며,
    상기 재배치부는 동적모듈의 재배치 옵션이 활성화되어 있는지 판단하고, 상기 재배치 옵션이 비활성되어 있으면 동적모듈의 로드를 수행하는 함수에서 동적모듈의 기존 주소를 수집하고, 상기 기존 주소에 메모리를 할당하는 것을 특징으로 하는 프로그램의 취약점을 이용한 공격의 탐지 장치.
  10. 프로세스에서 특정 행위를 수행하기 위해 프로세스가 실행되어 특정 함수가 호출된 경우, 상기 함수를 후킹하여 프로세스의 실행을 일시 중단시키는 후킹처리단계와;
    상기 후킹처리단계에서 후킹된 함수의 콜스택을 확인하여 콜스택 리턴주소 정보를 수집출력하는 정보수집단계와;
    상기 정보수집단계에서 출력된 콜스택 리턴주소 정보를 분석함으로써 악성행위를 탐지하여 악성코드가 실행되는 것을 방지하는 진단처리단계를 포함하며,
    상기 콜스택 리턴주소 정보는 후킹된 함수를 호출하는 모든 함수호출 경로 상에 위치하는 모든 함수의 리턴주소, 상기 리턴주소를 포함하고 있는 메모리 속성을 포함하고,
    상기 진단처리단계는 콜스택 리턴주소 정보를 분석하여 리턴주소가 코드 영역에 있는지 판단하여 리턴주소가 코드 영역에 존재하지 않는 경우 악성행위가 있는 것으로 판단하는 제1진단단계와, 콜스택 리턴주소 정보를 분석하여 리턴주소가 가리키는 명령어의 이전 명령어가 함수 호출 명령어인지 판단하여 리턴주소가 가리키는 명령어의 이전 명령어가 함수 호출 명령어가 아닌 경우 악성행위가 있는 것으로 판단하는 제2진단단계를 포함하며,
    상기 정보수집단계 후 진단처리단계 전에 상기 정보수집단계에서 출력된 콜스택 리턴주소 정보를 기설정된 예외처리 기준과 비교하여 상기 콜스택 리턴주소 정보가 예외처리 기준에 해당한다고 판단시 진단처리단계에서의 판단의 예외처리가 되도록 하는 필터링단계를 포함하고,
    상기 필터링단계에서는 콜스택 리턴주소 정보의 리턴주소가 프로세스 주소 공간 내에 할당되어 있지 않은 메모리에 있는 경우, 콜스택 리턴주소 정보의 리턴주소가 메모리의 스택 영역에 있는 경우, 콜스택 리턴주소 정보의 리턴주소가 화이트리스트에 있는 경우, 골스택 리턴주소 정보의 리턴주소의 속성이 기본 쓰기 상태인 경우, 예외처리하는 것을 특징으로 하는 프로그램의 취약점을 이용한 공격의 탐지 방법.
  11. 삭제
  12. 삭제
  13. 프로세스에서 특정 행위를 수행하기 위해 프로세스가 실행되어 특정 함수가 호출된 경우, 상기 함수를 후킹하여 프로세스의 실행을 일시 중단시키는 후킹처리단계와;
    상기 후킹처리단계 전에 프로세스의 보안상태를 확인설정하는 보안설정단계와;
    상기 후킹처리단계에서 후킹된 함수의 콜스택을 확인하여 콜스택 리턴주소 정보를 수집출력하는 정보수집단계와;
    상기 정보수집단계에서 출력된 콜스택 리턴주소 정보를 분석함으로써 악성행위를 탐지하여 악성코드가 실행되는 것을 방지하는 진단처리단계를 포함하며,
    상기 콜스택 리턴주소 정보는 후킹된 함수를 호출하는 모든 함수호출 경로 상에 위치하는 모든 함수의 리턴주소, 상기 리턴주소를 포함하고 있는 메모리 속성을 포함하고,
    상기 진단처리단계는 콜스택 리턴주소 정보를 분석하여 리턴주소가 코드 영역에 있는지 판단하여 리턴주소가 코드 영역에 존재하지 않는 경우 악성행위가 있는 것으로 판단하는 제1진단단계와, 콜스택 리턴주소 정보를 분석하여 리턴주소가 가리키는 명령어의 이전 명령어가 함수 호출 명령어인지 판단하여 리턴주소가 가리키는 명령어의 이전 명령어가 함수 호출 명령어가 아닌 경우 악성행위가 있는 것으로 판단하는 제2진단단계를 포함하며,
    상기 보안설정단계는 운영체제의 디이피 상태를 체크하여 활성화하는 체크단계와, 상기 체크단계에서 운영체제의 디이피가 활성화되어 있음을 확인된 경우 영구디이피를 적용시켜 실행권한이 없는 메모리 영역에서의 코드가 실행되는 것을 방지하는 실행단계와, 상기 실행단계에서 영구디이피가 설정된 후에 힙스프레이 공격 기법에 의한 악성행위에 사용되는 힙 영역의 주소를 미리 선점하는 주소선점단계를 포함하고,
    상기 실행단계에서는 상기 프로세스에 디이피가 적용되어 있지 않으면 프로세스가 생성된 상태에서 디이피를 적용하여 주고, 기존에 디이피가 설정되어 있으면 해당 디이피를 해제하고 디이피를 다시 적용시켜, 해당 프로세스에서 악성행위에 의해 해제가 불가능한 영구디이피가 설정되는 것을 특징으로 하는 프로그램의 취약점을 이용한 공격의 탐지 방법.
  14. 프로세스에서 특정 행위를 수행하기 위해 프로세스가 실행되어 특정 함수가 호출된 경우, 상기 함수를 후킹하여 프로세스의 실행을 일시 중단시키는 후킹처리단계와;
    상기 후킹처리단계에서 후킹된 함수의 콜스택을 확인하여 콜스택 리턴주소 정보를 수집출력하는 정보수집단계와;
    상기 정보수집단계에서 출력된 콜스택 리턴주소 정보를 분석함으로써 악성행위를 탐지하여 악성코드가 실행되는 것을 방지하는 진단처리단계와;
    상기 후킹처리단계에서 후킹된 함수에 대한 정보를 분석하여 프로세스에 로드되는 동적 모듈의 기존 주소를 재배치하는 재배치단계를 포함하며,
    상기 재배치단계에서는 동적모듈의 재배치 옵션이 활성화되어 있는지 판단하고, 상기 재배치 옵션이 비활성되어 있으면 동적모듈의 로드를 수행하는 함수에서 기존 주소를 수집하고, 상기 기존 주소에 메모리를 할당하는 것을 특징으로 하는 프로그램의 취약점을 이용한 공격의 탐지 방법.
KR1020140009869A 2014-01-27 2014-01-27 프로그램의 취약점을 이용한 공격의 탐지 장치 및 방법 KR101445634B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020140009869A KR101445634B1 (ko) 2014-01-27 2014-01-27 프로그램의 취약점을 이용한 공격의 탐지 장치 및 방법
JP2015010352A JP5908132B2 (ja) 2014-01-27 2015-01-22 プログラムの脆弱点を用いた攻撃の探知装置および方法
US14/604,374 US20150213260A1 (en) 2014-01-27 2015-01-23 Device and method for detecting vulnerability attack in program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140009869A KR101445634B1 (ko) 2014-01-27 2014-01-27 프로그램의 취약점을 이용한 공격의 탐지 장치 및 방법

Publications (1)

Publication Number Publication Date
KR101445634B1 true KR101445634B1 (ko) 2014-10-06

Family

ID=51996073

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140009869A KR101445634B1 (ko) 2014-01-27 2014-01-27 프로그램의 취약점을 이용한 공격의 탐지 장치 및 방법

Country Status (3)

Country Link
US (1) US20150213260A1 (ko)
JP (1) JP5908132B2 (ko)
KR (1) KR101445634B1 (ko)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101568872B1 (ko) * 2015-05-11 2015-11-12 주식회사 블랙포트시큐리티 프로그램 이상흐름 검출 장치 및 방법
KR20170048060A (ko) * 2015-10-26 2017-05-08 삼성에스디에스 주식회사 악성 코드 탐지 장치 및 방법
KR101845162B1 (ko) 2015-10-13 2018-04-03 베이징 바이두 넷컴 사이언스 앤 테크놀로지 코., 엘티디. 컨테이너 기반의 가상화 시스템용 조작 포획 방법 및 장치
KR20180062796A (ko) 2016-12-01 2018-06-11 한국과학기술원 메모리 힙 영역 공격을 방어하기 위한 메모리 정렬 랜덤화 방법
KR20210063677A (ko) * 2019-11-25 2021-06-02 세종대학교산학협력단 도커 이미지 취약성 진단 장치 및 방법
KR20220145580A (ko) * 2021-04-22 2022-10-31 명지대학교 산학협력단 Dll 인젝션을 탐지하는 산업제어시스템의 보안 관리 방법

Families Citing this family (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU2015279922B2 (en) * 2014-06-24 2018-03-15 Virsec Systems, Inc. Automated code lockdown to reduce attack surface for software
US9767283B2 (en) * 2014-06-27 2017-09-19 Mcafee, Inc. System and method to mitigate malicious calls
US9767794B2 (en) * 2014-08-11 2017-09-19 Nuance Communications, Inc. Dialog flow management in hierarchical task dialogs
JP6435834B2 (ja) * 2014-12-12 2018-12-12 富士通株式会社 命令実行制御装置、命令実行制御方法
US20160232347A1 (en) * 2015-02-09 2016-08-11 Palo Alto Networks, Inc. Mitigating malware code injections using stack unwinding
US9940455B2 (en) * 2015-02-25 2018-04-10 International Business Machines Corporation Programming code execution management
US10282216B2 (en) * 2015-07-16 2019-05-07 Apptimize, Inc. Automatic import of third party analytics
CN105184169A (zh) * 2015-09-14 2015-12-23 电子科技大学 Windows操作环境下基于插桩工具的漏洞检测方法
US9978247B2 (en) * 2015-09-24 2018-05-22 Microsoft Technology Licensing, Llc Smart fabric that detects events and generates notifications
US10289570B2 (en) * 2015-12-24 2019-05-14 Mcafee, Llc Detecting data corruption by control flow interceptions
US10007787B2 (en) * 2015-12-28 2018-06-26 International Business Machines Corporation Runtime return-oriented programming detection
US10558809B1 (en) * 2017-04-12 2020-02-11 Architecture Technology Corporation Software assurance system for runtime environments
US10621348B1 (en) * 2017-08-15 2020-04-14 Ca, Inc. Detecting a malicious application executing in an emulator based on a check made by the malicious application after making an API call
US20190080090A1 (en) * 2017-09-11 2019-03-14 Qualcomm Incorporated Method and apparatus for detecting dynamically-loaded malware with run time predictive analysis
US10691800B2 (en) * 2017-09-29 2020-06-23 AO Kaspersky Lab System and method for detection of malicious code in the address space of processes
US10997027B2 (en) * 2017-12-21 2021-05-04 Arizona Board Of Regents On Behalf Of Arizona State University Lightweight checkpoint technique for resilience against soft errors
US11544379B2 (en) * 2018-04-13 2023-01-03 Webroot Inc. Malicious software detection based on API trust
CN108959923B (zh) * 2018-05-31 2022-05-17 深圳壹账通智能科技有限公司 综合安全感知方法、装置、计算机设备和存储介质
US11449380B2 (en) 2018-06-06 2022-09-20 Arizona Board Of Regents On Behalf Of Arizona State University Method for detecting and recovery from soft errors in a computing device
US10749890B1 (en) 2018-06-19 2020-08-18 Architecture Technology Corporation Systems and methods for improving the ranking and prioritization of attack-related events
US10817604B1 (en) 2018-06-19 2020-10-27 Architecture Technology Corporation Systems and methods for processing source codes to detect non-malicious faults
US10868825B1 (en) 2018-08-14 2020-12-15 Architecture Technology Corporation Cybersecurity and threat assessment platform for computing environments
CN109558726B (zh) * 2018-09-29 2022-02-11 四川大学 一种基于动态分析的控制流劫持攻击检测方法与系统
DE102018128045A1 (de) * 2018-11-09 2020-05-14 Infineon Technologies Ag Behandlung von Ausnahmen in einem Programm
US11429713B1 (en) 2019-01-24 2022-08-30 Architecture Technology Corporation Artificial intelligence modeling for cyber-attack simulation protocols
US11128654B1 (en) 2019-02-04 2021-09-21 Architecture Technology Corporation Systems and methods for unified hierarchical cybersecurity
US10949338B1 (en) 2019-02-07 2021-03-16 Architecture Technology Corporation Automated software bug discovery and assessment
US11451581B2 (en) 2019-05-20 2022-09-20 Architecture Technology Corporation Systems and methods for malware detection and mitigation
US11403405B1 (en) 2019-06-27 2022-08-02 Architecture Technology Corporation Portable vulnerability identification tool for embedded non-IP devices
US11687646B2 (en) * 2019-08-15 2023-06-27 Dellfer, Inc. Forensic data collection and analysis utilizing function call stacks
CN112395600B (zh) * 2019-08-15 2023-08-01 奇安信安全技术(珠海)有限公司 恶意行为的去误报方法、装置及设备
CN112395603B (zh) * 2019-08-15 2023-09-05 奇安信安全技术(珠海)有限公司 基于指令执行序列特征的漏洞攻击识别方法、装置及计算机设备
US11444974B1 (en) 2019-10-23 2022-09-13 Architecture Technology Corporation Systems and methods for cyber-physical threat modeling
US11314899B2 (en) * 2020-01-07 2022-04-26 Supercell Oy Method and system for detection of tampering in executable code
US11503075B1 (en) 2020-01-14 2022-11-15 Architecture Technology Corporation Systems and methods for continuous compliance of nodes
CN113569246B (zh) * 2020-04-28 2024-05-28 腾讯科技(深圳)有限公司 漏洞检测方法、装置、计算机设备和存储介质
CN112100570A (zh) * 2020-08-20 2020-12-18 北京智游网安科技有限公司 指定函数被hook的处理方法、智能终端、存储介质
CN113157324B (zh) * 2021-03-19 2023-01-24 山东英信计算机技术有限公司 一种计算机设备的启动方法、装置、设备及可读存储介质
CN114707150B (zh) * 2022-03-21 2023-05-09 安芯网盾(北京)科技有限公司 一种恶意代码检测方法、装置、电子设备和存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100843701B1 (ko) 2006-11-07 2008-07-04 소프트캠프(주) 콜 스택에 기록된 정보를 이용한 에이피아이 확인방법
JP2010257150A (ja) 2009-04-23 2010-11-11 Ntt Docomo Inc 不正処理検知装置、不正処理検知方法及びプログラム
KR101033191B1 (ko) 2010-02-19 2011-05-11 고려대학교 산학협력단 메모리 실행영역 추적을 사용한 버퍼오버플로 악성코드 탐지기법
KR20110048670A (ko) * 2009-11-03 2011-05-12 주식회사 안철수연구소 악성 사이트 검출 장치, 방법 및 컴퓨터 프로그램이 기록된 기록매체

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7437759B1 (en) * 2004-02-17 2008-10-14 Symantec Corporation Kernel mode overflow attack prevention system and method
US7971255B1 (en) * 2004-07-15 2011-06-28 The Trustees Of Columbia University In The City Of New York Detecting and preventing malcode execution
JP2006172003A (ja) * 2004-12-14 2006-06-29 Ntt Docomo Inc プログラム実行監視装置、プログラム実行監視方法及びプログラム作成方法
US7350040B2 (en) * 2005-03-03 2008-03-25 Microsoft Corporation Method and system for securing metadata to detect unauthorized access
JP4140920B2 (ja) * 2006-04-20 2008-08-27 インターナショナル・ビジネス・マシーンズ・コーポレーション 個人情報の保護を支援する情報処理装置
TWI335531B (en) * 2006-12-13 2011-01-01 Inst Information Industry Apparatus, method, application program, and computer readable medium thereof for generating and utilizing a feature code to monitor a program
JP2009199529A (ja) * 2008-02-25 2009-09-03 Fourteenforty Research Institute Inc 情報機器、プログラム及び不正なプログラムコードの実行防止方法
US8214900B1 (en) * 2008-12-18 2012-07-03 Symantec Corporation Method and apparatus for monitoring a computer to detect operating system process manipulation
JP4572259B1 (ja) * 2009-04-27 2010-11-04 株式会社フォティーンフォティ技術研究所 情報機器、プログラム及び不正なプログラムコードの実行防止方法
US20120297485A1 (en) * 2010-12-08 2012-11-22 Manabu Maeda Information processing device and information processing method
US8997218B2 (en) * 2010-12-22 2015-03-31 F-Secure Corporation Detecting a return-oriented programming exploit
JP4927231B1 (ja) * 2011-12-22 2012-05-09 株式会社フォティーンフォティ技術研究所 プログラム、情報機器、及び不正アクセス検出方法
RU2531861C1 (ru) * 2013-04-26 2014-10-27 Закрытое акционерное общество "Лаборатория Касперского" Система и способ оценки вредоносности кода, исполняемого в адресном пространстве доверенного процесса
US9465936B2 (en) * 2013-11-06 2016-10-11 Bitdefender IPR Management Ltd. Systems and methods for detecting return-oriented programming (ROP) exploits

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100843701B1 (ko) 2006-11-07 2008-07-04 소프트캠프(주) 콜 스택에 기록된 정보를 이용한 에이피아이 확인방법
JP2010257150A (ja) 2009-04-23 2010-11-11 Ntt Docomo Inc 不正処理検知装置、不正処理検知方法及びプログラム
KR20110048670A (ko) * 2009-11-03 2011-05-12 주식회사 안철수연구소 악성 사이트 검출 장치, 방법 및 컴퓨터 프로그램이 기록된 기록매체
KR101033191B1 (ko) 2010-02-19 2011-05-11 고려대학교 산학협력단 메모리 실행영역 추적을 사용한 버퍼오버플로 악성코드 탐지기법

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101568872B1 (ko) * 2015-05-11 2015-11-12 주식회사 블랙포트시큐리티 프로그램 이상흐름 검출 장치 및 방법
KR101845162B1 (ko) 2015-10-13 2018-04-03 베이징 바이두 넷컴 사이언스 앤 테크놀로지 코., 엘티디. 컨테이너 기반의 가상화 시스템용 조작 포획 방법 및 장치
KR20170048060A (ko) * 2015-10-26 2017-05-08 삼성에스디에스 주식회사 악성 코드 탐지 장치 및 방법
KR101982734B1 (ko) * 2015-10-26 2019-05-27 삼성에스디에스 주식회사 악성 코드 탐지 장치 및 방법
KR20180062796A (ko) 2016-12-01 2018-06-11 한국과학기술원 메모리 힙 영역 공격을 방어하기 위한 메모리 정렬 랜덤화 방법
US10664589B2 (en) 2016-12-01 2020-05-26 Korea Advanced Institute Of Science And Technology Memory alignment randomization method for mitigation of heap exploit
KR20210063677A (ko) * 2019-11-25 2021-06-02 세종대학교산학협력단 도커 이미지 취약성 진단 장치 및 방법
KR102276885B1 (ko) * 2019-11-25 2021-07-13 세종대학교산학협력단 도커 이미지 취약성 진단 장치 및 방법
KR20220145580A (ko) * 2021-04-22 2022-10-31 명지대학교 산학협력단 Dll 인젝션을 탐지하는 산업제어시스템의 보안 관리 방법
KR102545488B1 (ko) * 2021-04-22 2023-06-20 명지대학교 산학협력단 Dll 인젝션을 탐지하는 산업제어시스템의 보안 관리 방법

Also Published As

Publication number Publication date
US20150213260A1 (en) 2015-07-30
JP5908132B2 (ja) 2016-04-26
JP2015141718A (ja) 2015-08-03

Similar Documents

Publication Publication Date Title
KR101445634B1 (ko) 프로그램의 취약점을 이용한 공격의 탐지 장치 및 방법
US9779240B2 (en) System and method for hypervisor-based security
EP3039608B1 (en) Hardware and software execution profiling
US9565214B2 (en) Real-time module protection
RU2531861C1 (ru) Система и способ оценки вредоносности кода, исполняемого в адресном пространстве доверенного процесса
US9094451B2 (en) System and method for reducing load on an operating system when executing antivirus operations
EP3462358B1 (en) System and method for detection of malicious code in the address space of processes
US9032525B2 (en) System and method for below-operating system trapping of driver filter attachment
US8904537B2 (en) Malware detection
US8925089B2 (en) System and method for below-operating system modification of malicious code on an electronic device
US8966629B2 (en) System and method for below-operating system trapping of driver loading and unloading
US8650642B2 (en) System and method for below-operating system protection of an operating system kernel
US8627478B2 (en) Method and apparatus for inspecting non-portable executable files
US20120254995A1 (en) System and method for below-operating system trapping and securing loading of code into memory
US20120255014A1 (en) System and method for below-operating system repair of related malware-infected threads and resources
KR20180032566A (ko) 다수 소프트웨어 개체들에 걸쳐서 악성 행동을 트래킹하기 위한 시스템들 및 방법들
CN109074450B (zh) 威胁防御技术
KR101086203B1 (ko) 악성 프로세스의 행위를 판단하여 사전에 차단하는 악성프로세스 사전차단 시스템 및 방법
Kawakoya et al. Api chaser: Anti-analysis resistant malware analyzer
JP2010262609A (ja) 効率的なマルウェアの動的解析手法
US20160335439A1 (en) Method and apparatus for detecting unsteady flow in program
EP2881883B1 (en) System and method for reducing load on an operating system when executing antivirus operations
KR20110057297A (ko) 악성 봇 동적 분석 시스템 및 방법
US20160337383A1 (en) Detecting deviation from a data packet send-protocol in a computer system
Aboughadareh et al. Detecting rootkits with the RAI runtime application inventory

Legal Events

Date Code Title Description
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20170912

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20190515

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20200122

Year of fee payment: 7