KR101568872B1 - 프로그램 이상흐름 검출 장치 및 방법 - Google Patents

프로그램 이상흐름 검출 장치 및 방법 Download PDF

Info

Publication number
KR101568872B1
KR101568872B1 KR1020150065327A KR20150065327A KR101568872B1 KR 101568872 B1 KR101568872 B1 KR 101568872B1 KR 1020150065327 A KR1020150065327 A KR 1020150065327A KR 20150065327 A KR20150065327 A KR 20150065327A KR 101568872 B1 KR101568872 B1 KR 101568872B1
Authority
KR
South Korea
Prior art keywords
flow
program
code
abnormal
abnormal flow
Prior art date
Application number
KR1020150065327A
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 KR1020150065327A priority Critical patent/KR101568872B1/ko
Application granted granted Critical
Publication of KR101568872B1 publication Critical patent/KR101568872B1/ko
Priority to EP16159635.8A priority patent/EP3093787A1/en
Priority to US15/068,144 priority patent/US20160335439A1/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
    • 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/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/577Assessing vulnerabilities and evaluating computer system security
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • 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/554Detecting local intrusion or implementing counter-measures involving event detection and direct action
    • 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
    • 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

Abstract

본 발명은 프로그램에서 발생되는 이상 흐름을 검출하여 프로그램의 취약점을 이용한 악성코드 배포를 방지할 수 있는 프로그램 이상흐름 검출 장치 및 방법에 관한 것이다. 이와 같은 본 발명은 프로세스에서 수행 중인 프로그램 흐름을 인터럽트하는 프로그램 흐름 인터럽트부; 프로그램 흐름 인터럽트부에서 인터럽트된 프로그램을 수집하는 프로그램 수집부; 프로그램 수집부에서 수집된 프로그램에서 이상흐름을 판단하는 이상흐름 판단부; 및 이상흐름 판단부에서 판단결과에 따라 이상흐름을 검출하는 이상흐름 검출부;를 포함하여 구성됨을 특징으로 하는 프로그램 이상흐름 검출 장치를 제공한다.

Description

프로그램 이상흐름 검출 장치 및 방법{Method and apparatus for detecting unsteadyflow in program}
본 발명은 프로그램 이상흐름 검출에 관한 것으로, 더욱 상세하게는 윈도우를 포함하는 운영체제 상에서 동작하는 모든 프로세스에서 발생되는 이상흐름을 검출할 수 있는 프로그램 이상흐름 검출 장치 및 방법에 관한 것이다.
요즘에는 해커들이 악성코드를 배포하기 위해서 상용 프로그램의 취약점을 찾아 그 허점을 통해 악성코드를 배포하는 형태를 많이 이용한다.
이러한 방법을 사용하는 이유는 악성코드(실행 가능한 프로그램, 예로 .exe 같은 파일)를 직접적으로 배포를 하기에는 컴퓨터를 사용하는 사람들의 보안 의식이 예전보다 좋아져 배포가 잘 되지 않아 큰 파급효과를 내기엔 어려움이 있기 때문이다.
하지만 상용 프로그램의 취약점을 이용해 배포를 하게 되면 컴퓨터를 이용하는 사람들은 특정 사이트를 들어간다던지, .hwp, .pdf와 같은 문서 파일을 여는 행위만 하더라도 바로 악성코드가 실행되기 때문에 배포가 쉬워져 파급효과까지 커지게 된다.
일반적으로 프로그램의 취약점을 이용해 악성코드를 배포하게 되는 경우, 취약점 공격을 받는 대상 프로그램은 평소와 다르게 동작을 하게 된다.
해커가 한컴오피스 프로그램의 취약점을 찾아 공격을 하는 경우를 예로 들면, 사람들에게 한컴오프스의 한글 프로그램인 .hwp 라는 확장자를 가진 문서 파일을 배포하는데, 이때 배포되는 .hwp 파일은 악성문서 파일이고, 보통 해당 악성문서 파일 내부에는 실질적으로 악성행위를 수행하는 악성코드를 별도의 악성서버로부터 다운로드 받아와 실행시키는 코드(이하, 악성 쉘코드)가 들어있다.
사용자가 이러한 악성 .hwp 파일을 실행하는 경우, 한컴오피스 프로그램은 악성 .hwp 파일을 읽는 도중 취약점 공격으로 인하여 악성 .hwp 내부에 있는 악성 쉘코드로 제어를 뺏기게 되고 악성 쉘코드는 악성코드를 다운로드 받아와 사용자 컴퓨터를 감염시키게 된다.
위 예를 보면 한컴오피스 프로그램이 정상적으로 잘 실행되다가 취약점 공격으로 인하여 악성 쉘코드로 제어가 이동되는 부분이 있다는 것을 알 수 있다.
이러한 흐름은 한컴오피스 프로그램을 개발한 개발자가 의도한 흐름이 아닌 “이상 흐름”이 발생되었다고 볼 수 있는 것이다.
참고로, 쉘코드(shellcode)는, 사이버 공격에 의해 대상 시스템에서 실행할 수 있는 명령어 코드의 집합이다.
이러한 쉘코드는, 공격당한 시스템을 제어하여, 시스템에 원격 연결할 수 있게 하거나, 특정 악성 코드를 다운로드 받아 실행하게 하는 등의 다양한 역할을 수행한다.
대한민국 등록특허 제10-1473726호 "쉘코드 은닉 및 침입 탐지 장치 및 그 방법"
본 발명은 상기와 같은 종래 기술의 문제점을 해결하기 위한 것으로, 본 발명은 프로그램에서 발생되는 이상 흐름을 검출하여 프로그램의 취약점을 이용한 악성코드 배포를 방지할 수 있는 프로그램 이상흐름 검출 장치 및 방법을 제공하는데 그 목적이 있다.
상기한 목적을 달성하기 위한 본 발명 프로그램 이상흐름 검출 장치는, 프로세스에서 수행 중인 프로그램 흐름을 인터럽트하는 프로그램 흐름 인터럽트부; 상기 프로그램 흐름 인터럽트부에서 인터럽트된 프로그램을 수집하는 프로그램 수집부; 상기 프로그램 수집부에서 수집된 프로그램에서 이상흐름을 판단하는 이상흐름 판단부; 및 상기 이상흐름 판단부에서 판단결과에 따라 이상흐름을 검출하는 이상흐름 검출부;를 포함하여 구성됨을 특징으로 한다.
여기서, 프로그램 이상흐름 검출장치는 상기 프로세스에서 발생되는 모든 이상흐름에 대해 모니터에 경고로 출력하고, 이상흐름을 수집하는 데이터베이스로 로그전송하는 것을 특징으로 한다.
그리고, 이상흐름 판단부는, 실행 권한이 없는 메모리 영역에서 코드 실행이 발생되는 경우와, 코드 실행은 가능하지만 코드가 실행되어선 안 되는 영역에서 코드 실행이 발생되는 경우 및 코드 실행 흐름이 함수 블록 단위로 이동되지 않는 경우를 이상흐름으로 판단하는 것을 특징으로 한다.
한편 이상흐름 검출부는, 실행 권한이 없는 메모리 영역에서 코드 실행이 발생되는 경우와, 코드 실행은 가능하지만 코드가 실행되어선 안 되는 영역에서 코드 실행이 발생되는 경우 및 코드 실행 흐름이 함수 블록 단위로 이동되지 않는 경우를 이상흐름으로 검출하여 모니터에 경고로 출력하고, 이상흐름을 수집하는 데이터베이스에 로그 전송하는 것을 특징으로 한다.
여기서 이상흐름을 판단하는 이상흐름 판단부는, 모든 예외를 핸들링하는 기법과, API(Application Program Interface)를 후킹하여 모니터링하는 기법을 이용하여 이상흐름을 판단하는 것을 특징으로 한다.
한편 모든 예외를 핸들링하는 기법은 코드가 실행되어선 안 되는 영역에서 DEP가 설정된 상태에서 코드 실행이 발생되는 경우 모든 이상흐름(예외)를 핸들링하는 것임을 특징으로 한다.
그리고 코드 실행은 가능하지만 코드가 실행되어선 안 되는 영역에서 코드 실행이 발생되는 경우는 코드 실행이 가능한 영역은 실제로 쉘코드가 실행되어도 아무런 예외가 발생하지 않기 때문에 모든 이상흐름(예외)를 전부 핸들링하는 것임을 특징으로 한다.
또한 API(Application Program Interface)를 후킹하여 모니터링하는 방법은 코드 실행은 가능하지만 코드가 실행되어선 안 되는 영역에서 코드 실행이 발생되는 경우와, 코드 실행 흐름이 함수 블록 단위로 이동되지 않는 경우에 이용됨을 특징으로 한다.
그리고 상기한 목적을 달성하기 위한 본 발명 프로그램 이상흐름 검출 방법은, 프로그램을 실행하기 위한 프로세스를 로드하는 단계; 상기 프로세스를 보호하는 보호모듈로써 이상흐름을 검출하는 이상흐름 검출장치를 프로세스에 로드하는 단계; 상기 프로세스 실행 전에 상기 이상흐름 검출장치의 프로세스 인터럽트를 설치하는 단계; 상기 프로세스가 실행되면, 예외정보를 수집하는 단계; 상기 수집에 따라 예외정보를 판단하고, 이상흐름이 검출되었는지를 판단하는 단계; 이상흐름이 검출되었다면 상기 이상흐름 검출장치는 이상흐름 정보를 로그 전송하고, 이상흐름을 경고하며, 데이터베이스에 해당 이상흐름 정보를 저장하는 단계; 및 이상흐름이 검출된 프로세스를 종료하는 단계;를 포함하여 이루어지는 것을 특징으로 한다.
여기서 예외 정보는 실행 권한이 없는 메모리 영역에서 코드 실행이 발생되는 경우와, 코드 실행은 가능하지만 코드가 실행되어선 안 되는 영역에서 코드 실행이 발생되는 경우 및 코드 실행 흐름이 함수 블록 단위로 이동되지 않는 경우를 수집하는 것임을 특징으로 한다.
그리고 예외정보를 수집하는 단계는, 모든 예외를 핸들링하는 기법과, API(Application Program Interface)를 후킹하여 모니터링하는 기법을 이용하여 이상흐름을 판단하는 것을 특징으로 한다.
또한 모든 예외를 핸들링하는 기법은 코드가 실행되어선 안 되는 영역에서 DEP가 설정된 상태에서 코드 실행이 발생되는 경우 모든 이상흐름(예외)를 핸들링하는 것임을 특징으로 한다.
코드 실행이 발생되는 경우는 코드 실행이 가능한 영역은 실제로 쉘코드가 실행되어도 아무런 예외가 발생하지 않기 때문에 모든 이상흐름(예외)를 전부 핸들링하는 것임을 특징으로 한다.
한편 API(Application Program Interface)를 후킹하여 모니터링하는 방법은 코드 실행은 가능하지만 코드가 실행되어선 안 되는 영역에서 코드 실행이 발생되는 경우와, 코드 실행 흐름이 함수 블록 단위로 이동되지 않는 경우에 이용됨을 특징으로 한다.
본 발명에 의하면 다음과 같은 효과가 있다.
첫째, 프로그램의 취약점을 이용해 악성코드를 배포하는 공격 방식은 정상 프로그램의 제어를 빼앗는 행위가 필요하기 때문에 프로그램의 흐름이 정상적이지 않은 방향으로 흘러가게 되어 있는데, 본 발명에서는 취약점 공격으로 인하여 이러한 정상적이지 않은 흐름(이상 흐름)이 발생될 부분들에 대해 먼저 모니터링을 함으로써 여러 취약점 공격 방식들에 대해 차단을 할 수 있는 효과가 있다.
둘째, 특히 악성코드를 배포하기 위해 해커들이 사용하는 zero-day 공격을 효과적으로 방지할 수 있다.
셋째, 본 발명에서는 실행권한이 없고 코드실행이 발생되어선 안되는 영역, 실행권한은 있지만 코드실행이 발생되어선 안 되는 영역, 실행권한도 있고 코드가 실행되어도 되는 영역, 세 가지 영역에서 발생될 수 있는 취약점 공격을 막음으로써 프로그램에서 발생되는 이상 흐름을 차단하게 되고 이로 인하여 발생될 후폭풍을 전부 막을 수 있는 효과가 있다.
도 1은 본 발명에 따른 프로그램 이상흐름 검출을 위한 포인트를 설명하기 위한 도면이다.
도 2는 일반적인 프로그램에서 정상적인 함수 호출 흐름을 설명하기 위한 도면이다.
도 3은 일반적인 프로그램에서 비정상적인 함수 호출 흐름을 설명하기 위한 도면이다.
도 4는 본 발명에 따른 프로그램 이상흐름 검출 장치를 설명하기 위한 도면이다.
도 5는 본 발명에 따른 프로그램 이상흐름 검출 방법을 설명하기 위한 흐름도이다.
본 발명의 바람직한 실시 예를 첨부된 도면에 의하여 상세히 설명하면 다음과 같다.
아울러, 본 발명에서 사용되는 용어는 가능한 한 현재 널리 사용되는 일반적인 용어를 선택하였으나, 특정한 경우는 출원인이 임의로 선정한 용어도 있으며 이 경우는 해당되는 발명의 설명부분에서 상세히 그 의미를 기재하였으므로, 단순한 용어의 명칭이 아닌 용어가 가지는 의미로서 본 발명을 파악하여야 함을 밝혀두고자 한다. 또한 실시예를 설명함에 있어서 본 발명이 속하는 기술 분야에 익히 알려져 있고, 본 발명과 직접적으로 관련이 없는 기술 내용에 대해서는 설명을 생략한다. 이는 불필요한 설명을 생략함으로써 본 발명의 요지를 흐리지 않고 더욱 명확히 전달하기 위함이다.
먼저 본 발명은 특정 프로세스에 국한되어 적용할 수 있는 방법이 아닌 윈도우 운영체제 상에서 동작하는 모든 프로세스들에 적용할 수 있는 방법을 설명하기로 한다.
이를 위하여 프로그램에서 발생되는 “이상 흐름”과 “이상 행동”에 대한 차이를 설명하기로 한다.
프로그램에서 발생되는 이상 흐름은 프로그램에서 발생되어선 안될 코드 흐름이다.
그리고, 이상 행동은 프로그램에서 발생되어선 안되는 행위이다.
예를 들어, 코드가 실행되어선 안 되는 영역에서 쉘코드가 실행되는 경우 이상 흐름이라고 보고, 해당 쉘코드가 프로그램(예로써 계산기)를 실행하는 행위는 이상 행위로 볼 수 있다.
도 1은 본 발명에 따른 프로그램 이상흐름 검출 포인트를 설명하기 위한 도면이고, 도 2는 일반적인 프로그램에서 정상적인 함수 호출 흐름을 설명하기 위한 도면이고, 도 3은 일반적인 프로그램에서 비정상적인 함수 호출 흐름을 설명하기 위한 도면이다.
이를 이해하기 위해 가장 먼저 생각해야 할 부분은 프로그램에서 발생되는 이상 흐름이 어떠한 것들이 있는지 정의하는 것이다.
이상 흐름은 도 1에 나타낸 바와 같이 크게 세 가지로 나눠볼 수 있다.
첫번째는 실행 권한이 없는 메모리 영역에서 코드 실행이 발생되는 경우이다.
두번째는 코드 실행은 가능하지만 코드가 실행되어선 안 되는 영역에서 코드 실행이 발생되는 경우이다.
세번째는 코드 실행 흐름이 함수 블록 단위로 이동되지 않는 경우이다.
우선, 실행 권한이 없는 메모리 영역에서 코드 실행이 발생되는 경우를 설명하면, 코드 실행이 불가능한 메모리 영역은 할당되지 않은 메모리 영역과, 메모리에 할당은 되어 있지만 실행 권한이 없는 메모리 영역이 있다.
이 때 할당되지 않은 메모리 영역 같은 경우는 쉘코드도 실행될 수 없기 때문에 쉘코드를 무시할 수 있다.
그러나 메모리 영역은 할당되어 있지만 실행 권한이 없는 메모리 영역에서 쉘코드가 실행되는 경우는 무시해서는 안된다. 왜냐하면 예를 들어 윈도우에서 제공해주는 데이터 실행 방지(DEP :Data Execution Prevetion)라는 속성이 없는 프로그램의 경우에는 실행 권한이 없는 메모리라 하더라도 코드 실행이 가능하기 때문이다. 그렇기 때문에 실행권한이 없는 메모리 영역에서 쉘코드가 실행되는 경우 이상 흐름으로 검출할 수 있다.
그 다음, 코드 실행은 가능하지만 코드가 실행되어선 안 되는 영역에서 코드 실행이 발생되는 경우를 설명하면, 정상적으로 메모리 할당도 되어 있고 해당 영역에 코드 실행 권한까지 있지만 코드가 실행되어선 안되는 영역들이 있다.
예를 들면, 프로그램에서 실행 권한을 가진 메모리를 동적 할당하고 해당 영역에서 코드 실행이 발생되는 경우, 정상적으로 코드 실행이 되지만 취약점 공격을 통해 쉘코드가 실행되는 영역이기도 하기 때문에 쉘코드에서 주로 사용하는 API 함수 호출이 발생되면 이러한 부분은 이상 흐름이라고 정의할 수 있다.
마지막으로 코드 실행 흐름이 함수 블록 단위로 이동되지 않는 경우를 설명하면, 프로그램은 하나의 기능을 수행하는 함수들의 집합으로 이루어져 있는데, 정상적인 흐름을 가진 프로그램은 도 2와 같은 구조로 동작을 하게 된다.
정상적인 함수 호출 흐름은 도 2에서와 같이 A함수는 내부적으로 B함수를 호출한다. 그리고, B함수는 내부적으로 C함수를 호출한다. 한편 C함수는 동작을 마치고 C함수를 호출한 다음 명령어를 가리키고 있는 B함수의 위치로 돌아간다.
그러면, B함수는 동작을 마치고 B함수를 호출한 다음 명령어를 가리키고 있는 A함수의 위치로 돌아간다.
이런식으로 정상적인 흐름에서는 동작을 하지만 취약점 공격으로 인하여 악성 흐름에 제어를 뺏긴 다음에는 도 3과 같이 비정상적으로 동작할 수도 있다.
비정상적인 함수 호출 흐름은 도 3에 나타낸 바와 같은데, 함수의 실행 흐름이 비정상적으로 흐르고 있는 것을 알 수 있다. 도 3과 같이 코드 실행 흐름이 비정상적으로 발생되는 경우 '이상 흐름'이라고 정의 할 수 있는데 이와 같은 경우도 쉘코드에서 주로 사용하는 API 함수 호출이 발생되면 이러한 부분은 이상 흐름이라고 정의할 수 있다.
도 4는 본 발명에 따른 프로그램 이상흐름 검출 장치를 설명하기 위한 도면이다.
본 발명에 따른 프로그램 이상흐름 검출장치는 도 4에 나타낸 바와 같이, 다양한 프로그램이 로드되고 실행되는 프로세스(100)에서 실행되는 소프트웨어와 하드웨어에 프로세스의 이상흐름을 디스패쳐 이전에 후킹하여 이상흐름을 로그하고, 데이터베이스로 전송하며, 외부로 경고하는 이상흐름 검출장치(200)로 구성된다. 이러한 이상흐름 검출장치(200)는 프로세스에서 수행 중인 프로그램 흐름을 인터럽트하는 프로그램 흐름 인터럽트부(210)와, 인터럽트된 프로그램을 수집하는 프로그램 수집부(220)와, 수집된 프로그램에서 이상흐름을 판단하는 이상흐름 판단부(230) 및 이상흐름 판단부(230)에서 판단결과에 따라 이상흐름을 검출하는 이상흐름 검출부(240)로 구성된다.
이제 이상 흐름이라고 정의한 위 세 가지에 대해 제어를 하고 모니터링을 하는 방법에 대해 알아본다. 또한 단순히 막기만 하면 안되고 각각 상황이 발생되었을 때 관련 정보를 얻기 위해서 각 이벤트들을 핸들링을 할 수 있어야 한다.
이러한 이벤트들에 대한 핸들링은 도 1에 나타낸 바와 같이, 모든 이상흐름(예외)를 전부 핸들링하는 기법과, API(Application Program Interface)를 후킹하여 모니터링하는 기법이 있다.
우선, 모든 이상흐름(예외)를 전부 핸들링하는 기법은 실행 권한이 없는 메모리 영역에서 코드 실행이 발생되는 경우 코드 실행을 방지하기 위해서 앞에서 설명한 윈도우에서 제공해주는 DEP라는 속성을 프로그램이 시작되면 무조건 설정한다.
이렇게 되면 실행 권한이 없는 메모리에서 코드 실행이 발생할 경우 하드웨어 예외가 발생함으로써 프로그램이 크래시나게 되는데, 본 발명에서는 프로그램에서 발생되는 모든 이상흐름(예외)에 대해 핸들링하기 위해 이러한 이상흐름(예외)들을 이상흐름 검출장치(200)에서 먼저 처리할 수 있도록 가로챈다. 이와 같이 가로챈 이상흐름 정보는 모니터(300)에 경고로 출력하고, 이상흐름을 수집하는 데이터베이스(400)로 로그된다.
일반적으로 윈도우에서 동작하는 프로그램의 경우 하드웨어나 소프트웨어 예외가 발생을 하면 가장 먼저 “KiUserExceptionDispatcher” 라는 함수로 들어오게 되는데 위 함수 같은 경우 운영체제 버전마다 구조도 조금씩 다르고 함수 프롤로그가 없는 함수이기 때문에 가로채서 범용적으로 핸들링하기에는 안정적이지 않을 수 있다. 그래서 위의 함수보다 더 원천적인(깊이 있는) 함수를 가로챔으로써 안정적으로 모든 예외에 대해 핸들링 할 수 있게 된다. 이를 일명 Deep Hook Exception 가로채기라고 정의한다.
기존의 프로그램들은 예외 핸들링을 하기 위해 윈도우에서 제공하는 API함수를 사용해 예외 루틴을 등록하는 형태로 많이 사용한다. 하지만 이러한 방법을 사용하는 경우 코드 상에서 _try _exception 와 같은 문법을 사용한 예외처리보다 우선순위가 떨어지기 때문에 모든 예외에 대해서 핸들링을 하지 못하고 이벤트 로깅이 안 되는 현상이 발생한다.
다시 돌아와 예외를 핸들링 할 수 있게 되면 시스템이 예외 핸들러에 넘겨준 예외 코드, 예외 관련 정보들을 토대로 취약점 공격에 의해 발생된 이상 흐름인지를 판단할 수 있다.
그 다음 API(Application Program Interface)를 후킹하여 모니터링하는 방법은 코드 실행은 가능하지만 코드가 실행되어선 안 되는 영역에서 코드 실행이 발생되는 경우와, 코드 실행 흐름이 함수 블록 단위로 이동되지 않는 경우에 이용할 수 있다.
우선, 코드 실행은 가능하지만 코드가 실행되어선 안 되는 영역에서 코드 실행이 발생되는 경우는 코드 실행이 가능한 영역은 실제로 쉘코드가 실행되어도 아무런 예외가 발생하지 않기 때문에 모든 이상흐름(예외)를 전부 핸들링하는 기법과는 다른 가법을 이용해야 한다.
하지만 CPU가 해석하는 명령어 한 줄 한 줄 핸들링을 하게 되면 엄청난 오버헤드가 발생하게 되므로 현실적으로 불가능할 수 있으므로, 쉘코드에서 주로 사용되는 API함수들의 호출을 모니터링 함으로서 해당 함수가 호출되었을 때 코드가 실행되어선 안 되는 영역에서 호출되어 넘어이면 취약점 공격에 의해 발생된 이상 흐름이라고 판단한다.
이어서 코드 실행 흐름이 함수 블록 단위로 이동되지 않는 경우에 API(Application Program Interface)를 후킹하여 모니터링하는 방법은 도 2에서 설명한 바와 같이 코드 실행 흐름이 비정상적인 경우도 코드 실행이 가능한 영역들에서 동작하기 때문에 예외가 발생하는 형태는 아니다. 그렇기 때문에 이 또한 쉘코드에서 주로 사용되는 API함수들의 호출을 모니터링하고, 해당 함수가 호출되었을 때 함수 호출 흐름이 비정상적인 흐름을 가지고 있다면 이상 흐름이라고 판단한다.
한편 핸들링 방식에서 API함수를 후킹해서 모니터링하는 방식은 보안 업계에서 일반적인 방식이므로 상세한 설명은 생략하기로 한다.
도 5는 본 발명에 따른 프로그램 이상흐름 검출 방법을 설명하기 위한 흐름도이다.
본 발명에 따른 프로그램 이상흐름 검출 방법은 도 5에 나타낸 바와 같이, 프로세스를 로드한다(S100).
그러면 본 발명에 따른 보호모듈인 이상흐름 검출장치(200)를 프로세스에 로드한다(S110).
이어 프로세스가 실행되기 전에 프로그램 흐름을 인터럽트하는 인터럽트부를 설치한다(S120).
그 다음 프로세스가 실행되면(S130), 예외정보를 수집한다(S140).
이와 같은 예외 정보는 실행 권한이 없는 메모리 영역에서 코드 실행이 발생되는 경우와, 코드 실행은 가능하지만 코드가 실행되어선 안 되는 영역에서 코드 실행이 발생되는 경우 및 코드 실행 흐름이 함수 블록 단위로 이동되지 않는 경우이다.
이와 같은 수집에 따라 예외정보를 판단하고(S150), 이상흐름이 검출되었는지를 판단한다(S160).
판단결과(S160), 이상흐름이 검출되었다면 이상흐름 정보를 로그 전송하고(S170), 이상흐름을 모니터(300) 등을 통해 경고하며, 데이터베이스(400)에 해당 이상흐름 정보를 저장한다.
그리고 이상흐름이 검출된 프로세스를 종료한다(S190).
본 발명을 첨부된 도면과 함께 설명하였으나, 이는 본 발명의 요지를 포함하는 다양한 실시 형태 중의 하나의 실시예에 불과하며, 당업계에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 하는 데에 그 목적이 있는 것으로, 본 발명은 상기 설명된 실시예에만 국한되는 것이 아님은 명확하다. 따라서, 본 발명의 보호범위는 하기의 청구범위에 의해 해석되어야 하며, 본 발명의 요지를 벗어나지 않는 범위 내에서의 변경, 치환, 대체 등에 의해 그와 동등한 범위 내에 있는 모든 기술 사상은 본 발명의 권리범위에 포함될 것이다. 또한, 도면의 일부 구성은 구성을 보다 명확하게 설명하기 위한 것으로 실제보다 과장되거나 축소되어 제공된 것임을 명확히 한다.
100 : 프로세스 200 : 이상흐름 검출장치
210 : 프로그램 흐름 인터럽트부 220 : 프로그램 수집부
230 : 이상흐름 판단부 240 : 이상흐름 검출
300 : 모니터 400 : 데이터베이스

Claims (12)

  1. 프로세스에서 수행 중인 프로그램 흐름을 인터럽트하는 프로그램 흐름 인터럽트부;
    상기 프로그램 흐름 인터럽트부에서 인터럽트된 프로그램을 수집하는 프로그램 수집부;
    상기 프로그램 수집부에서 수집된 프로그램 중 실행 권한이 없는 메모리 영역에서 코드 실행이 발생되는 경우와, 코드 실행은 가능하지만 코드가 실행되어선 안 되는 영역에서 코드 실행이 발생되는 경우 및 코드 실행 흐름이 함수 블록 단위로 이동되지 않는 경우를 이상흐름으로 판단하되 상기 코드가 실행되어선 안 되는 영역에서는 데이터 실행 방지(DEP :Data Execution Prevetion)가 설정된 상태에서 코드 실행이 발생되는 경우 모든 이상흐름(예외)를 핸들링하는 모든 예외를 핸들링하는 기법을 이용하고, 상기 코드 실행은 가능하지만 코드가 실행되어선 안 되는 영역에서 코드 실행이 발생되는 경우와, 코드 실행 흐름이 함수 블록 단위로 이동되지 않는 경우에는 API(Application Program Interface)를 후킹하여 모니터링하는 기법을 이용하는 이상흐름 판단부; 및
    상기 이상흐름 판단부에서 판단결과에 따라 이상흐름을 검출하는 이상흐름 검출부;를 포함하여 구성됨을 특징으로 하는 프로그램 이상흐름 검출 장치.
  2. 제1항에 있어서,
    상기 프로그램 이상흐름 검출장치는 상기 프로세스에서 발생되는 모든 이상흐름에 대해 모니터에 경고로 출력하고, 이상흐름을 수집하는 데이터베이스로 로그전송하는 것을 특징으로 하는 프로그램 이상흐름 검출 장치.
  3. 삭제
  4. 제1항에 있어서,
    상기 이상흐름 검출부는,
    실행 권한이 없는 메모리 영역에서 코드 실행이 발생되는 경우와, 코드 실행은 가능하지만 코드가 실행되어선 안 되는 영역에서 코드 실행이 발생되는 경우 및 코드 실행 흐름이 함수 블록 단위로 이동되지 않는 경우를 이상흐름으로 검출하여 모니터에 경고로 출력하고, 이상흐름을 수집하는 데이터베이스로 로그전송하는 것을 특징으로 하는 프로그램 이상흐름 검출 장치.
  5. 삭제
  6. 삭제
  7. 삭제
  8. 프로그램을 실행하기 위한 프로세스를 로드하는 단계;
    상기 프로세스를 보호하는 보호모듈로써 이상흐름을 검출하는 이상흐름 검출프로그램을 프로세스에 로드하는 단계;
    상기 프로세스 실행 전에 상기 이상흐름 검출 프로그램의 프로세스 인터럽트를 설치하는 단계;
    상기 프로세스가 실행되면, 코드가 실행되어선 안되는 영역에서 코드 실행이 발생되는 경우와, 코드 실행은 가능하지만 코드가 실행되어선 안 되는 영역에서 코드 실행이 발생되는 경우 및 코드 실행 흐름이 함수 블록 단위로 이동되지 않는 경우의 예외정보를 수집하되,
    상기 코드가 실행되어선 안 되는 영역에서 데이터 실행 방지(DEP :Data Execution Prevetion)가 설정된 상태에서 코드 실행이 발생되는 경우 모든 이상흐름(예외)를 핸들링하는 모든 예외를 핸들링하는 기법과, 상기 코드 실행은 가능하지만 코드가 실행되어선 안 되는 영역에서 코드 실행이 발생되는 경우와, 상기 코드 실행 흐름이 함수 블록 단위로 이동되지 않는 경우에 API(Application Program Interface)를 후킹하여 모니터링하는 기법을 이용하여 이상흐름을 수집하는 단계;
    상기 수집에 따라 예외정보를 판단하고, 이상흐름이 검출되었는지를 판단하는 단계;
    이상흐름이 검출되었다면 상기 이상흐름 검출 프로그램은 이상흐름 정보를 로그 전송하고, 이상흐름을 경고하며, 데이터베이스에 해당 이상흐름 정보를 저장하는 단계; 및
    이상흐름이 검출된 프로세스를 종료하는 단계;를 포함하여 이루어지는 것을 특징으로 하는 프로그램 이상흐름 검출 방법.
  9. 삭제
  10. 삭제
  11. 삭제
  12. 삭제
KR1020150065327A 2015-05-11 2015-05-11 프로그램 이상흐름 검출 장치 및 방법 KR101568872B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020150065327A KR101568872B1 (ko) 2015-05-11 2015-05-11 프로그램 이상흐름 검출 장치 및 방법
EP16159635.8A EP3093787A1 (en) 2015-05-11 2016-03-10 Apparatus and method for detecting unsteady flow of program
US15/068,144 US20160335439A1 (en) 2015-05-11 2016-03-11 Method and apparatus for detecting unsteady flow in program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150065327A KR101568872B1 (ko) 2015-05-11 2015-05-11 프로그램 이상흐름 검출 장치 및 방법

Publications (1)

Publication Number Publication Date
KR101568872B1 true KR101568872B1 (ko) 2015-11-12

Family

ID=54610154

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150065327A KR101568872B1 (ko) 2015-05-11 2015-05-11 프로그램 이상흐름 검출 장치 및 방법

Country Status (3)

Country Link
US (1) US20160335439A1 (ko)
EP (1) EP3093787A1 (ko)
KR (1) KR101568872B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102067733B1 (ko) * 2019-05-15 2020-01-17 세종대학교산학협력단 포맷 스트링 취약점 검출 방법 및 이를 수행하기 위한 장치
CN112685735A (zh) * 2018-12-27 2021-04-20 慧安金科(北京)科技有限公司 用于检测异常数据的方法、设备和计算机可读存储介质

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106874755B (zh) * 2017-01-22 2019-07-12 中国人民解放军信息工程大学 多数一致逃逸错误处理装置及方法
US11169869B1 (en) 2020-07-08 2021-11-09 International Business Machines Corporation System kernel error identification and reporting

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101445634B1 (ko) * 2014-01-27 2014-10-06 주식회사 이글루시큐리티 프로그램의 취약점을 이용한 공격의 탐지 장치 및 방법

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030014667A1 (en) * 2001-07-16 2003-01-16 Andrei Kolichtchak Buffer overflow attack detection and suppression
US7930733B1 (en) * 2006-04-10 2011-04-19 At&T Intellectual Property Ii, L.P. Method and system for execution monitor-based trusted computing
US20080148399A1 (en) * 2006-10-18 2008-06-19 Microsoft Corporation Protection against stack buffer overrun exploitation
DE102007038763A1 (de) * 2007-08-16 2009-02-19 Siemens Ag Verfahren und Vorrichtung zur Sicherung eines Programms gegen eine Kontrollflussmanipulation und gegen einen fehlerhaften Programmablauf
FR2928755B1 (fr) * 2008-03-14 2014-04-11 Sagem Securite Procede de securisation d'une execution d'un programme
US8271959B2 (en) * 2008-04-27 2012-09-18 International Business Machines Corporation Detecting irregular performing code within computer programs
KR101057432B1 (ko) * 2010-02-23 2011-08-22 주식회사 이세정보 프로세스의 행위 분석을 통한 유해 프로그램을 실시간으로 탐지하고 차단하는 시스템, 방법, 프로그램 및 기록매체
CN103377341A (zh) * 2012-04-28 2013-10-30 北京网秦天下科技有限公司 一种安全检测的方法和系统
EP2720170B1 (en) * 2012-10-10 2016-09-14 AO Kaspersky Lab Automated protection against computer exploits
KR101473726B1 (ko) 2012-12-05 2014-12-18 국방과학연구소 쉘코드 은닉 및 침입 탐지 장치 및 그 방법

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101445634B1 (ko) * 2014-01-27 2014-10-06 주식회사 이글루시큐리티 프로그램의 취약점을 이용한 공격의 탐지 장치 및 방법

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112685735A (zh) * 2018-12-27 2021-04-20 慧安金科(北京)科技有限公司 用于检测异常数据的方法、设备和计算机可读存储介质
CN112685735B (zh) * 2018-12-27 2024-04-12 慧安金科(北京)科技有限公司 用于检测异常数据的方法、设备和计算机可读存储介质
KR102067733B1 (ko) * 2019-05-15 2020-01-17 세종대학교산학협력단 포맷 스트링 취약점 검출 방법 및 이를 수행하기 위한 장치

Also Published As

Publication number Publication date
EP3093787A1 (en) 2016-11-16
US20160335439A1 (en) 2016-11-17

Similar Documents

Publication Publication Date Title
US10893068B1 (en) Ransomware file modification prevention technique
KR102307534B1 (ko) 다수 소프트웨어 개체들에 걸쳐서 악성 행동을 트래킹하기 위한 시스템들 및 방법들
US7673137B2 (en) System and method for the managed security control of processes on a computer system
US9094451B2 (en) System and method for reducing load on an operating system when executing antivirus operations
US9942269B2 (en) Effectively preventing data leakage, spying and eavesdropping through a networked computing device by controlling access to a plurality of its device interfaces
KR101445634B1 (ko) 프로그램의 취약점을 이용한 공격의 탐지 장치 및 방법
US8272059B2 (en) System and method for identification and blocking of malicious code for web browser script engines
US7895448B1 (en) Risk profiling
US9372989B2 (en) Robust malware detector
US8347380B1 (en) Protecting users from accidentally disclosing personal information in an insecure environment
US8214900B1 (en) Method and apparatus for monitoring a computer to detect operating system process manipulation
US9323925B2 (en) Method and system for prevention of windowless screen capture
KR20180097527A (ko) 다수의 네트워크 종점들을 보호하기 위한 듀얼 메모리 인트로스펙션
WO2015163953A2 (en) Behavioral analytics driven host-based malicious behavior and data exfiltration disruption
KR101086203B1 (ko) 악성 프로세스의 행위를 판단하여 사전에 차단하는 악성프로세스 사전차단 시스템 및 방법
KR101568872B1 (ko) 프로그램 이상흐름 검출 장치 및 방법
US20190095616A1 (en) Methods for protecting software hooks, and related computer security systems and apparatus
US20220417255A1 (en) Managed detection and response system and method based on endpoints
US8499351B1 (en) Isolated security monitoring system
EP3482335B1 (en) Mitigation of malicious actions associated with graphical user interface elements
EP2881883B1 (en) System and method for reducing load on an operating system when executing antivirus operations
CN111480160B (zh) 用于过程验证的系统、方法和介质
KR101585968B1 (ko) 웹 쉘 탐지 장치와 이를 이용한 함수 실행 제어 방법
KR20230100483A (ko) 보안 설정 장치, 프로세스 단위의 보안 정책을 설정하는 보안 설정 방법 및 상기 방법을 실행시키기 위하여 기록매체에 저장된 컴퓨터 프로그램
KR101368949B1 (ko) 공격코드 실행 사전 차단 방법 및 공격코드 실행 사전 차단 장치

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: 20180831

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20200210

Year of fee payment: 6