KR102146882B1 - 메시지 모니터링 장치 및 방법 - Google Patents
메시지 모니터링 장치 및 방법 Download PDFInfo
- Publication number
- KR102146882B1 KR102146882B1 KR1020180138445A KR20180138445A KR102146882B1 KR 102146882 B1 KR102146882 B1 KR 102146882B1 KR 1020180138445 A KR1020180138445 A KR 1020180138445A KR 20180138445 A KR20180138445 A KR 20180138445A KR 102146882 B1 KR102146882 B1 KR 102146882B1
- Authority
- KR
- South Korea
- Prior art keywords
- message
- monitoring
- malicious
- window
- function
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/302—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Virology (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Mathematical Physics (AREA)
- Quality & Reliability (AREA)
- Debugging And Monitoring (AREA)
Abstract
일 실시예에 따른 메시지 모니터링 장치는, 처리를 요청받은 메시지에 따라 호출된 함수를, 사용자 모드(user mode)에서 모니터링하는 함수 모니터링부와, 상기 모니터링된 결과로부터 획득된 상기 함수에 관한 정보를 기초로 상기 메시지가 악성 메시지인지를 판단하는 악성 판단부와, 상기 악성 판단부에 의해 판단된 결과에 따라 기 지정된 행위를 수행하는 행위 수행부를 포함한다.
Description
본 발명은 메시지 모니터링 장치 및 방법에 관한 것이다.
윈도우 메시지는 실행 중인 윈도우 자체를 제어할 수 있고, 윈도우에서 실행 중인 프로그램을 제어할 수 있으며, 윈도우에 관한 프로시저나 이벤트를 제어할 수 있다.
이러한 윈도우 메시지는 악성 행위의 수단으로 악용될 수도 있다. 예컨대 악의를 가진 제3 자가 DLL 인젝션(injection)과 같은 기법을 이용해서 소정의 프로세스에 악성의 DLL을 삽입시킨 것으로 가정하자. 소정의 프로세스가 실행될 경우, 삽입된 DLL이 함께 실행될 수 있다. DLL이 실행되는 과정에서, 실행된 해당 프로세스와 관련된 악성 메시지가 생성될 수 있다. 이러한 악성 메시지는 해당 프로세스와 관련된 윈도우를 강제 종료시킬 수 있고, 윈도우에서 실행 중인 프로그램을 악의적으로 제어할 수 있으며, 윈도우에 관한 프로시저나 이벤트를 후킹할 수 있다.
전술한 악성 행위를 모니터링하고 관리하기 위한 다양한 방법들이 존재한다. 예컨대 사용자 모드(user mode)에서 수행 가능한 방법이 있는데, 해당 방법에 따르면 윈도우에서 어떠한 이벤트가 발생하고 있는지가 각각의 윈도우 별로 모니터링되어서 차단될 수 있다. 이와 달리 커널 모드(kernel mode)에서 수행 가능한 방법이 있는데, 해당 방법에 따르면 시스템 shadowSSDT 커널 테이블을 기초로 악성 행위가 모니터링되어서 차단될 수 있다.
전술한 악성 행위를 모니터링하고 관리하는 방법들 각각에는 단점이 존재한다. 예컨대 사용자 모드에서 수행 가능한 것으로 언급된 전술한 방법의 경우, 각각의 윈도우 별로 모니터링이 수행되어야 한다는 점에서 프로그래밍 복잡도가 높고 또한 유지보수 비용이 많이 든다. 이와 달리 커널 모드에서 수행 가능한 것으로 언급된 전술한 방법의 경우, 64bit 운영체제 하에서는 커널패치보호(patchguard)로 인해 적용 자체가 불가능하고, 32bit 운영체제 하에서는 이러한 방법을 수행하는 것만으로도 시스템이 (악)영향을 받을 수 있다.
이에 본 발명의 해결하고자 하는 과제는, 프로그래밍 복잡도가 높지 않고 유지보수 비용 또한 적게 들면서, 시스템에 영향을 끼치지 않는, 윈도우 메시지에 의한 악성 행위를 모니터링하여서 관리하는 기술을 제공하는 것이다.
다만, 본 발명의 해결하고자 하는 과제는 이상에서 언급한 것으로 제한되지 않으며, 언급되지 않은 또 다른 해결하고자 하는 과제는 아래의 기재로부터 본 발명이 속하는 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
일 실시예에 따른 메시지 모니터링 장치는, 처리를 요청받은 메시지에 따라 호출된 함수를, 사용자 모드(user mode)에서 모니터링하는 함수 모니터링부와, 상기 함수 모니터링부에 의해 모니터링된 결과를 기초로 상기 메시지가 악성 메시지인지를 판단하는 악성 판단부와, 상기 악성 판단부에 의해 판단된 결과에 따라 기 지정된 행위를 수행하는 행위 수행부를 포함한다.
또한, 상기 함수 모니터링부는 복수 개의 프로세스 각각에 마련된 커널콜백테이블을 대상으로 해서 상기 모니터링을 수행할 수 있다.
또한, 상기 악성 판단부는 상기 메시지가 윈도우 종료 메시지, 윈도우 프로시저 후킹 메시지, 윈도우 이벤트 후킹 메시지 또는 무차별 공격(bruteforce) 메시지 중 어느 하나인 것으로 판단할 수 있다.
또한, 상기 행위 수행부는 상기 악성 판단부에 의해 상기 메시지가 악성 메시지로 판단되면 상기 메시지를 수정하거나 상기 메시지에 따른 동작을 차단시킬 수 있다.
일 실시예에 따른 메시지 모니터링 장치가 수행하는 메시지 모니터링 방법은 처리를 요청받은 메시지에 따라 호출된 함수를, 사용자 모드(user mode)에서 모니터링하는 단계와, 상기 모니터링된 결과를 기초로 상기 메시지가 악성 메시지인지를 판단하는 단계와, 상기 판단된 결과에 따라 기 지정된 행위를 수행하는 행위 수행부를 포함한다.
또한, 상기 모니터링하는 단계는 복수 개의 프로세스 각각에 마련된 커널콜백테이블을 대상으로 해서 상기 모니터링을 수행할 수 있다.
또한, 상기 판단하는 단계는 상기 메시지가 윈도우 종료 메시지, 윈도우 프로시저 후킹 메시지, 윈도우 이벤트 후킹 메시지 또는 무차별 공격(bruteforce) 메시지 중 어느 하나인 것으로 판단할 수 있다.
또한, 상기 행위를 수행하는 단계는 상기 메시지가 악성 메시지로 판단되면 상기 메시지를 수정하거나 상기 메시지에 따른 동작을 차단시킬 수 있다.
일 실시예에 따르면, 호출되는 함수를 모니터링하는 과정이 커널 모드(kernel mode)가 아닌 사용자 모드(user mode)에서 수행될 수 있다. 따라서 컴퓨팅 장치가 이러한 모니터링 과정을 수행함으로써 메시지의 악성 여부를 판단한다고 하여도, 해당 컴퓨팅 장치가 이러한 모니터링 과정의 수행에 의해 영향을 받지는 않게 된다.
뿐만 아니라, 호출되는 함수를 모니터링하는 이러한 과정은 프로세스를 단위로 수행된다. 따라서, 호출되는 함수를 모니터링하는 과정에 소요되는 유지보수 비용은, 윈도우를 단위로 모니터링이 수행되는 종래의 경우에 비해 일 실시예에 따르는 경우가 적을 수 있다.
도 1은 일 실시예에 따른 메시지 모니터링 장치가 구현될 컴퓨팅 장치의 하드웨어적인 구성에 대해 도시하고 있다.
도 2는 일 실시예에 따른 메시지 모니터링 장치의 구성을 도시하고 있다.
도 3은 일 실시예에 따른 메시지 모니터링 장치가 컴퓨팅 장치에서 실행 중인 각각의 프로세스를 모니터링하는 상황에 대해 도시하고 있다.
도 4는 일 실시예에 따른 메시지 모니터링 방법의 절차를 도시하고 있다.
도 2는 일 실시예에 따른 메시지 모니터링 장치의 구성을 도시하고 있다.
도 3은 일 실시예에 따른 메시지 모니터링 장치가 컴퓨팅 장치에서 실행 중인 각각의 프로세스를 모니터링하는 상황에 대해 도시하고 있다.
도 4는 일 실시예에 따른 메시지 모니터링 방법의 절차를 도시하고 있다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다.
본 발명의 실시예들을 설명함에 있어서 공지 기능 또는 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략할 것이다. 그리고 후술되는 용어들은 본 발명의 실시예에서의 기능을 고려하여 정의된 용어들로서 이는 사용자, 운용자의 의도 또는 관례 등에 따라 달라질 수 있다. 그러므로 그 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다.
도 1은 일 실시예에 따른 메시지 모니터링 장치가 구현될 컴퓨팅 장치(1000)의 하드웨어적인 구성에 대해 도시하고 있다. 이러한 컴퓨팅 장치(1000)는 예컨대 PC, 서버 또는 스마트 기기(스마트폰이나 스마트 패드 등) 등일 수 있다.
도 1을 참조하면, 컴퓨팅 장치(1000)는 프로세서(200) 및 메모리(300)를 포함한다. 다만, 컴퓨팅 장치(1000)는 실시예에 따라 도 1에 도시되지 않은 구성들을 포함할 수도 있다.
먼저, 프로세서(200)는 메모리(300)에 저장된 프로그램을 실행시키는 하드웨어 디바이스이다. 이러한 프로세서(200)는 중앙 처리 장치(CPU) 또는 그래픽 처리 장치(GPU)와 같은 것일 수 있다.
메모리(300)는 다양한 종류의 RAM, ROM 또는 디스크 등과 같은 것일 수 있으며 또는 이들의 결합으로 구현될 수 있다.
이러한 메모리(300)에는 다양한 종류의 데이터가 저장된다. 예컨대 메모리(300)에는 운영체제(310)나 어플리케이션(320)과 같은 프로그램이 저장될 수 있다. 또한 메모리(300)에는 전술한 운영체제(310)나 어플리케이션(320)의 동작에 필요한 다양한 정보들이 저장될 수도 있다. 뿐만 아니라 메모리(300)에는 악의를 가진 제3 자에 의해 작성된, 악성의 DLL과 같은 악성 코드(도면에는 도시되지 않음)가 저장될 수도 있다.
메모리(300)에 저장된 데이터는 프로세서(200)에 의해 액세스 가능하다. 메모리(300)로부터 액세스된 데이터의 종류에 따라, 컴퓨팅 장치(1000)에서는 다양한 기능이 실행될 수 있다. 예컨대 프로세서(200)의 액세스에 의해 메모리(300)에 저장된 어플리케이션(320)이 실행될 수 있다. 만약 소정의 악성 코드가 어플리케이션과 연계되어 있다면, 이러한 악성 코드 또한 해당 어플리케이션의 실행에 수반되어서 실행될 수 있다.
어플리케이션(320)이 실행되면, 이러한 어플리케이션(320)과 관련된 윈도우가 적어도 한 개 생성될 수 있다. 이와 같이 생성된 윈도우는 컴퓨팅 장치(1000)의 디스플레이부(도면에는 미도시)에 디스플레이될 수 있다.
프로세서(200)는 윈도우에 관한 다양한 메시지(이하에서 '메시지'는 '윈도우에 관한 메시지'를 지칭하는 것으로 함)를 생성할 수 있다. 이와 같이 생성된 메시지는 윈도우의 제어에 이용될 수 있다. 예컨대 프로세서(200)에 의해 생성된 메시지는 윈도우 자체를 제어할 수 있고, 윈도우에서 실행 중인 프로그램을 제어할 수 있으며 또한 윈도우에 관한 프로시저나 이벤트를 제어할 수 있다. 이러한 메시지는 정상적인, 즉 악성이 아닌 메시지이다.
이와 달리 컴퓨팅 장치(1000)에서 실행된 악성 코드는 프로세서(200)를 악의적으로 제어함으로써 이러한 프로세서(200)가 악성 메시지를 생성하도록 할 수도 있다. 예컨대 프로세서(200)에 의해 생성된 악성 메시지는 윈도우 자체를 강제 종료시킬 수 있고, 윈도우에서 실행 중인 프로그램을 악의적으로 제어할 수 있으며 또한 윈도우에 관한 프로시저나 이벤트를 후킹할 수 있다.
이러한 악성 메시지를 모니터링하고 그에 따른 악성 행위를 차단 내지 관리하기 위해, 일 실시예에 따른 메시지 모니터링 장치는 메시지의 처리 과정에서 호출되는 함수를 모니터링하여서, 즉 메시지의 처리 과정에서 수행되는 함수의 행위를 모니터링하여서 해당 메시지의 악성 여부를 판단하고, 악성으로 판단되면 악성으로 판단된 해당 메시지에 대해 소정의 조치가 취해지도록 한다. 만약 악성이 아닌 것으로 판단되면 메시지 모니터링 장치는 해당 메시지가 요구하였던 본래 동작이 수행되도록 조치한다.
이 때, 일 실시예에 따르면, 호출되는 함수를 모니터링하는 과정은 커널 모드(kernel mode)가 아닌 사용자 모드(user mode)에서 수행될 수 있다. 따라서 컴퓨팅 장치가 이러한 모니터링 과정을 수행함으로써 메시지의 악성 여부를 판단한다고 하여도, 해당 컴퓨팅 장치가 이러한 모니터링 과정의 수행에 의해 영향을 받지는 않게 된다.
뿐만 아니라, 뒤에 보다 자세하게 설명하겠지만, 호출되는 함수를 모니터링하는 이러한 과정은 프로세스를 단위로 하여서 수행된다. 따라서, 호출되는 함수를 모니터링하는 과정에 소요되는 유지보수 비용은, 윈도우를 단위로 모니터링이 수행되는 경우에 비해 일 실시예에 따르는 경우가 적을 수 있다.
이하에서는 이러한 일 실시예에 따른 메시지 모니터링 장치에 대해 보다 자세하게 살펴보기로 한다.
도 2는 일 실시예에 따른 메시지 모니터링 장치(100)의 구성에 대해 도시하고 있다. 도 2를 참조하면, 메시지 모니터링 장치(100)는 함수 모니터링부(110), 부가 정보 획득부(120), 악성 판단부(130) 및 행위 수행부(140)를 포함한다. 다만 도 2에 도시된 메시지 모니터링 장치(100)의 구성은 예시적인 것에 불과하므로, 메시지 모니터링 장치(100)의 구성이 도 2에 도시된 것으로 한정 해석되는 것은 아니다.
메시지 모니터링 장치(100) 및 이에 포함되는 전술한 구성들 각각(110 내지 140)은 도 1에 도시된 프로세서(200) 및 메모리(300)에 의해 구현 가능하다.
함수 모니터링부(110)는 메시지의 처리 과정에서 호출되는 함수를 모니터링한다. 이 때 함수 모니터링부(110)는 복수 개의 프로세스 별로 각각 마련된 커널콜백테이블을 참조하여서 모니터링할 수 있는데, 이에 대해서는 도 1과 도 3을 함께 참조하면서, 이하에서 보다 자세하게 살펴보기로 한다.
이를 위해 먼저 어플리케이션(320), 프로세스, 커널콜백테이블 및 메시지 모니터링 장치(100)의 함수 모니터링부(110)의 관계에 대해 살펴보기로 한다. 도 1의 프로세서(200)가 메모리(300)에 저장된 소정의 어플리케이션(320)에 액세스하면, 액세스된 어플리케이션(320)이 실행된다. 어플리케이션(320)이 실행됨에 따라, 해당 어플리케이션(320)에 관한 프로세스(process)가 적어도 한 개, 컴퓨팅 장치(1000)에서 실행된다. 도 3에는 예시적으로, 4개의 프로세스(400 내지 430)가 실행되는 것으로 도시되어 있다.
도 3에 도시된 각각의 프로세스(400 내지 430)를 살펴보도록 한다. 각각의 프로세스(400 내지 430)에는, 각 프로세스와 관련된 윈도우가 생성되어 있다. 구체적으로 살펴보면, 제1 프로세스(400)에 관련된 윈도우(402)가 생성되어 있고, 제2 프로세스(410)에 관련된 윈도우(412)가 생성되어 있으며, 제3 프로세스(420)에 관련된 윈도우(422)가 생성되어 있고, 제4 프로세스(430)에 관련된 윈도우(432)가 생성되어 있다. 각 프로세스(400 내지 430) 별로는, 적어도 한 개의 윈도우(402 내지 432)가 생성되어 있을 수 있다.
각각의 프로세스(400 내지 430)에는 커널콜백테이블(401 내지 431)이 마련된다. 이러한 커널콜백테이블(401 내지 431)은 각각의 프로세스(400 내지 430) 별로 메모리(300)에 사전에 저장되어 있던 것이 해당하는 프로세스(400 내지 430)에 로딩된 것일 수 있다. 아울러, 이러한 커널콜백테이블(401 내지 431)은 사용자 모드(user mode)에서 다뤄지는 것일 수 있다.
여기서 커널콜백테이블(401 내지 431)은 해당 프로세스에서 어떠한 함수가 호출되었는지를 실시간으로 나타낸다. 따라서 함수 모니터링부(100)는 이러한 커널콜백테이블(401 내지 431)을 모니터링함으로써, 현재 내지 가장 최근에 어떤 함수가 호출되었는지를 파악할 수 있다. 예컨대 함수 모니터링부(110)는 제1 커널콜백테이블(401)을 모니터링함으로써 제1 프로세스(400)에서 어떠한 함수가 호출되었는지를 파악할 수 있고, 제2 커널콜백테이블(411)을 모니터링함으로써 제2 프로세스(410)에서 어떠한 함수가 호출되었는지를 파악할 수 있으며, 제3 커널콜백테이블(421)을 모니터링함으로써 제3 프로세스(420)에서 어떠한 함수가 호출되었는지를 파악할 수 있고, 제4 커널콜백테이블(431)을 모니터링함으로써 제4 프로세스(430)에서 어떠한 함수가 호출되었는지를 파악할 수 있다.
지금까지의 설명을 기초로, 함수 모니터링부(110)가 메시지의 처리 과정에서 호출되는 함수를 모니터링하는 과정에 대해 예를 들어 살펴보기로 한다.
프로세서(200)가 제1 프로세스(400)의 특정 윈도우(402)를 대상으로 하는 메시지를 생성하였다고 가정하자. 이러한 메시지는 예컨대 특정 윈도우(402) 자체를 종료시키는 메시지, 특정 윈도우(402)에서 실행 중인 프로그램을 악의적으로 제어하는 메시지 또는 특정 윈도우(402)에 관한 프로시저나 이벤트를 후킹하는 메시지일 수 있으나 이에 한정되는 것은 아니다. 이렇게 생성된 메시지가 전술한 특정 윈도우(402)를 향해 전달되면, 특정 윈도우(402)의 제1 프로세스(400)에서는 이렇게 전달받은 메시지의 처리 과정이 수행되는데, 이 과정에서 제1 프로세스(400)의 제1 커널콜백테이블(401)의 함수 중 어느 하나가 호출될 수 있다. 호출된 함수에 대한 정보는 제1 커널콜백테이블(401)에 나타난다.
그러면, 함수 모니터링부(110)는 이러한 제1 커널콜백테이블(401)을 모니터링하고 있다가, 호출된 함수에 대한 정보를 획득한다.
여기서, 제1 커널콜백테이블(401)을 비롯한 커널콜백테이블(401 내지 431)은 함수 모니터링부(110)의 모니터링 대상이며, 사용자 모드(user mode)에서 다뤄지는 것들이다. 즉, 함수 모니터링부(110)가 모니터링하는 과정은 커널 모드(kernel mode)가 아닌 사용자 모드(user mode)에서 수행된다. 따라서 컴퓨팅 장치(1000)가 이러한 모니터링 과정을 수행함으로써 메시지의 악성 여부를 판단한다고 하여도, 해당 컴퓨팅 장치(1000)가 이러한 모니터링 과정의 수행에 의해 영향을 받지는 않게 된다.
한편 커널콜백테이블은 프로세스마다 하나씩, 프로세스를 단위로 마련되어 있다. 따라서 어느 하나의 프로세스에 관련된 윈도우가 복수 개이고 프로세서가 이들 복수 개의 윈도우 각각을 대상으로 하는 메시지를 생성하였다고 하더라도, 이러한 각각의 메시지의 처리 과정에서 호출되는 함수는 상기 어느 하나의 프로세스에 마련되어 있는 커널콜백테이블 1개만을 모니터링함으로써 파악 가능하다. 즉, 어느 하나의 프로세스에 관련된 복수 개의 윈도우 각각을 대상으로 하는 복수 개의 메시지의 처리 과정에서, 어떠한 함수가 호출되는지를 파악하기 위해, 종래에는 복수 개의 커널콜백테이블을 모니터링해야하는 경우가 있었지만, 일 실시예에서는 상기 어느 하나의 프로세스에 마련되어 있는 커널콜백테이블 1개만을 모니터링하면 된다. 따라서 함수 모니터링에 소요되는 유지보수 비용이 종래에 비해 경감될 수 있다.
다시 도 2를 참조하도록 한다. 부가 정보 획득부(120)는 메시지에 관한 부가 정보를 획득한다. 예컨대 부가 정보 획득부(120)는 부가 정보로서 프로세서에 관한 정보, 스레드에 관한 정보, 처리를 요청받은 메시지가 복수 개인 경우 이러한 복수 개의 메시지의 처리 순서 등에 대한 정보를 획득할 수 있으며 다만 이에 한정되는 것은 아니다.
악성 판단부(130)는 메시지의 악성 여부를 판단한다. 판단 과정에서 악성 판단부(130)는 함수 모니터링부(110)가 모니터링해서 획득한 정보 및 부가 정보 획득부(120)가 획득한 부가 정보 각각을 참조하거나 또는 이들 정보들 중 적어도 두 개를 조합하여 참조할 수 있다.
여기서 함수 모니터링부(110)가 모니터링해서 획득한 정보에는, 호출된 함수 그 자체에 대한 정보 뿐만 아니라 호출된 함수가 파라미터로서 전달받은 내용 등이 포함될 수 있다.
아울러, 악성 판단부(130)는 다음과 같은 정보 각각을 또는 다음과 같은 정보 중 적어도 두 개를 조합해서 판단할 수 있다.
- 호출된 함수의 이름
- 호출된 함수가 파라미터로서 전달받은 정보
- 호출된 함수와 관련된 프로세서 또는 프로세스에 관한 정보
- 호출된 함수와 관련된 스레드에 관한 정보
행위 수행부(140)는 악성 판단부(130)의 판단을 기초로 소정의 행위를 수행할 수 있다. 예컨대 행위 수행부(140)는 메시지가 악성이라고 판단되면, 메시지의 처리를 중단 내지 차단시키거나 메시지가 수정되어서 처리되도록 조치할 수 있다. 이와 달리 행위 수행부(140)는 메시지가 악성이 아니라고, 즉 정상이라고 판단되면 호출된 함수의 결과에 따라 메시지가 처리되도록 조치할 수 있다.
이상에서 살펴본 바와 같이, 일 실시예에 따르면, 호출되는 함수를 모니터링하는 과정이 커널 모드(kernel mode)가 아닌 사용자 모드(user mode)에서 수행될 수 있다. 따라서 컴퓨팅 장치가 이러한 모니터링 과정을 수행함으로써 메시지의 악성 여부를 판단한다고 하여도, 해당 컴퓨팅 장치가 이러한 모니터링 과정의 수행에 의해 영향을 받지는 않게 된다.
뿐만 아니라, 호출되는 함수를 모니터링하는 이러한 과정은 프로세스 별로 수행된다. 따라서, 호출되는 함수를 모니터링하는 과정에 소요되는 유지보수 비용은, 윈도우 별로 수행되는 경우에 비해 일 실시예에 따르는 경우가 적을 수 있다.
이하에서는 메시지 모니터링 방법의 절차에 대해 살펴보기로 한다.
도 4는 일 실시예에 따른 메시지 모니터링 방법의 절차를 도시하고 있다. 이러한 방법은 도 2에 도시된 메시지 모니터링 장치(100)에 의해 수행 가능하다. 한편, 도 4에 도시된 방법의 절차는 예시적인 것에 불과하므로, 메시지 모니터링 방법의 절차가 도 4에 도시된 것으로 한정 해석되어서 수행되는 것은 아니다.
먼저 메시지 모니터링 장치(100)는 제1 프로세스(400)에 마련된 제1 커널콜백테이블을 모니터링한다(S100).
메시지 송신자(500)는 제1 프로세스의 특정 윈도우를 대상으로 하는 메시지를 생성한다. 이렇게 생성된 메시지는 제1 프로세스의 특정 윈도우를 타겟으로 하여 전달된다(S200). 여기서 메시지 송신자(500)는 도 1에 도시된 프로세스(200)일 수 있으나 이에 한정되는 것은 아니며, 실시예에 따라 컴퓨팅 장치(1000)의 외부나 내부의 임의의 주체일 수도 있다.
제1 프로세스(400)에서는 단계 S200에서 전달받은 메시지에 대한 처리 과정이 수행된다. 메시지 처리 과정으로는, 예컨대 단계 S210에서와 같이 메시지에 대한 전처리 과정 또는 단계 S220에서와 같이 메시지의 처리를 위한 소정의 함수를 호출하는 과정이 포함될 수 있다.
메시지 모니터링 장치(100)는 단계 S220에서 호출된 함수에 대한 정보를 단계 S100에서부터 수행하던 모니터링을 통해 획득한다(S230).
이 후 메시지 모니터링 장치(100)는 단계 S200에서 제1 프로세스의 특정 윈도우를 대상으로 하는 메시지에 대한 악성 여부를 판단한다(S240). 판단 과정에서 메시지 모니터링 장치(100)는 단계 S230에서 획득된 정보, 그리고 도면에는 도시되지 않았지만 도 2에서 설명된 부가 정보 획득부(120)가 획득한 부가 정보를 참조할 수 있다.
판단 결과 악성 메시지로 판단되면 메시지 모니터링 장치(100)는 지정된 행위가 수행되도록 조치할 수 있다(S300). 예컨대 메시지 모니터링 장치(100)는 메시지의 처리를 중단 내지 차단시키거나 메시지가 수정되어서 처리되도록 조치할 수 있다.
이와 달리 행위 수행부(140)는 메시지가 악성이 아니라고, 즉 정상이라고 판단될 수 있다. 이 경우 메시지가 정상이라는 정보가 메시지 모니터링 장치(100)로부터 제1 프로세스(400)에 전달될 수 있고(S400), 호출된 함수의 결과에 따라 메시지가 처리될 수 있으며(S410), 이러한 메시지에 대한 처리 결과가 메시지 송신자(500)에게 전달될 수 있다(S420).
여기서, 도 4에는 메시지 모니터링 장치(100)가 제1 커널콜백테이블만을 모니터링하고 있고 메시지 송신자(500)는 제1 프로세스의 특정 윈도우를 대상으로만 메시지를 생성해서 전달하는 것으로 도시되어 있는데, 이는 예시적인 것에 불과하다. 즉, 실시예에 따라 메시지 모니터링 장치(100)는 제1 커널콜백테이블 뿐만 아니라 다른 커널콜백테이블에 대해서도 모니터링할 수 있고 동시에 복수 개의 커널콜백테이블을 모니터링할 수도 있다. 아울러, 메시지 송신자(500)는 제1 프로세스의 특정 윈도우 뿐 아니라 다른 프로세스의 윈도우를 대상으로도 메시지를 생성해서 전달할 수 있다.
한편, 도 4에 도시된 방법은 도 2에 도시된 메시지 처리 장치(100)에 의해 수행되는 것이므로, 설명되지 않은 부분은 메시지 처리 장치(100)에 대해 이미 설명된 부분을 원용하기로 한다.
이상에서 살펴본 바와 같이, 일 실시예에 따르면, 호출되는 함수를 모니터링하는 과정이 커널 모드(kernel mode)가 아닌 사용자 모드(user mode)에서 수행될 수 있다. 따라서 컴퓨팅 장치가 이러한 모니터링 과정을 수행함으로써 메시지의 악성 여부를 판단한다고 하여도, 해당 컴퓨팅 장치가 이러한 모니터링 과정의 수행에 의해 영향을 받지는 않게 된다.
뿐만 아니라, 호출되는 함수를 모니터링하는 이러한 과정은 프로세스를 단위로 수행된다. 따라서, 호출되는 함수를 모니터링하는 과정에 소요되는 유지보수 비용은, 윈도우를 단위로 수행되는 경우에 비해 일 실시예에 따르는 경우가 적을 수 있다.
한편, 전술한 발명의 사상의 경우, 이러한 실시예의 내용을 수행하도록 프로그램된 컴퓨터 판독가능한 기록매체에 저장된 컴퓨터 프로그램 또는 컴퓨터 프로그램을 저장하는 컴퓨터 판독가능한 기록매체의 형태로 구현 가능하다.
이상의 설명은 본 발명의 기술 사상을 예시적으로 설명한 것에 불과한 것으로서, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면 본 발명의 본질적인 품질에서 벗어나지 않는 범위에서 다양한 수정 및 변형이 가능할 것이다. 따라서, 본 발명에 개시된 실시예들은 본 발명의 기술 사상을 한정하기 위한 것이 아니라 설명하기 위한 것이고, 이러한 실시예에 의하여 본 발명의 기술 사상의 범위가 한정되는 것은 아니다. 본 발명의 보호 범위는 아래의 청구범위에 의하여 해석되어야 하며, 그와 균등한 범위 내에 있는 모든 기술사상은 본 발명의 권리범위에 포함되는 것으로 해석되어야 할 것이다.
1000: 컴퓨팅 장치
100: 메시지 모니터링 장치
100: 메시지 모니터링 장치
Claims (10)
- 처리를 요청받은 메시지에 따라 호출된 함수를, 사용자 모드(user mode)에서 모니터링하는 함수 모니터링부와,
상기 함수 모니터링부에 의해 모니터링된 결과를 기초로 상기 메시지가 악성 메시지인지를 판단하는 악성 판단부와,
상기 악성 판단부에 의해 판단된 결과에 따라 기 지정된 행위를 수행하는 행위 수행부를 포함하고,
상기 사용자 모드에서 모니터링 되는 메시지는 어플리케이션 실행에 따라 생성된 윈도우의 제어에 관련된 것이고,
상기 어플리케이션의 실행으로 인해 상기 어플리케이션에 대한 프로세스가 실행되면 상기 프로세스와 관련된 윈도우가 복수 개 형성되며,
상기 복수 개의 윈도우와 관련된 메시지의 실행으로 인해 호출되는 모든 함수는,
상기 함수 모니터링부가, 상기 프로세스에 마련된 커널콜백테이블을 이용해서 상기 사용자 모드에서 모니터링 가능한
메시지 모니터링 장치. - 삭제
- 제 1 항에 있어서,
상기 악성 판단부는,
상기 메시지가 윈도우 종료 메시지, 윈도우 프로시저 후킹 메시지, 윈도우 이벤트 후킹 메시지 또는 무차별 공격(bruteforce) 메시지 중 어느 하나인 것으로 판단하는
메시지 모니터링 장치. - 제 1 항에 있어서,
상기 행위 수행부는,
상기 악성 판단부에 의해 상기 메시지가 악성 메시지로 판단되면 상기 메시지를 수정하거나 상기 메시지에 따른 동작을 차단시키는
메시지 모니터링 장치. - 메시지 모니터링 장치가 수행하는 메시지 모니터링 방법으로서,
처리를 요청받은 메시지에 따라 호출된 함수를, 사용자 모드(user mode)에서 모니터링하는 단계와,
상기 모니터링된 결과를 기초로 상기 메시지가 악성 메시지인지를 판단하는 단계와,
상기 판단된 결과에 따라 기 지정된 행위를 수행하는 단계를 포함하고,
상기 사용자 모드에서 모니터링 되는 메시지는 어플리케이션 실행에 따라 생성된 윈도우의 제어에 관련된 것이고,
상기 어플리케이션의 실행으로 인해 상기 어플리케이션에 관한 프로세스가 실행되면 상기 프로세스와 관련된 윈도우가 복수 개 생성되며, 상기 복수 개의 윈도우와 관련된 메시지의 실행으로 인해 호출되는 모든 함수는,
상기 모니터링하는 단계에서, 상기 프로세스에 마련된 커널콜백테이블을 이용해서 상기 사용자 모드에서 모니터링 가능한
메시지 모니터링 방법. - 삭제
- 제 5 항에 있어서,
상기 판단하는 단계는,
상기 메시지가 윈도우 종료 메시지, 윈도우 프로시저 후킹 메시지, 윈도우 이벤트 후킹 메시지 또는 무차별 공격(bruteforce) 메시지 중 어느 하나인 것으로 판단하는
메시지 모니터링 방법. - 제 5 항에 있어서,
상기 행위를 수행하는 단계는,
상기 메시지가 악성 메시지로 판단되면 상기 메시지를 수정하거나 상기 메시지에 따른 동작을 차단시키는
메시지 모니터링 방법. - 제 5 항에 따른 방법의 각 단계를 포함하여 수행하도록 프로그램된 컴퓨터 프로그램을 저장하는 컴퓨터 판독가능한 기록매체.
- 제 5 항에 따른 방법의 각 단계를 포함하여 수행하도록 프로그램된 컴퓨터 판독가능한 기록매체에 저장된 컴퓨터 프로그램.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020180138445A KR102146882B1 (ko) | 2018-11-12 | 2018-11-12 | 메시지 모니터링 장치 및 방법 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020180138445A KR102146882B1 (ko) | 2018-11-12 | 2018-11-12 | 메시지 모니터링 장치 및 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20200054752A KR20200054752A (ko) | 2020-05-20 |
KR102146882B1 true KR102146882B1 (ko) | 2020-08-21 |
Family
ID=70919500
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020180138445A KR102146882B1 (ko) | 2018-11-12 | 2018-11-12 | 메시지 모니터링 장치 및 방법 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR102146882B1 (ko) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101663013B1 (ko) * | 2010-01-15 | 2016-10-06 | 삼성전자주식회사 | 코드 주입 공격을 감지하는 장치 및 방법 |
KR101671795B1 (ko) | 2010-01-18 | 2016-11-03 | 삼성전자주식회사 | 동적 링크 라이브러리 삽입 공격을 방지하는 컴퓨터 시스템 및 방법 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20070010808A (ko) * | 2005-07-20 | 2007-01-24 | 김재명 | 파일의 강제적 접근통제와 윈도우 메시지 후킹 차단에 의한공인인증서 파일과 비밀번호 보호방법 및 그 제작방법과공인인증서 보호 시스템 |
KR101174751B1 (ko) * | 2010-09-27 | 2012-08-17 | 한국인터넷진흥원 | 커널 콜백 매커니즘을 이용한 악성코드 자동 분석 방법 |
KR101242127B1 (ko) | 2011-04-28 | 2013-03-12 | 주식회사 파수닷컴 | Dll 인젝션 기능을 구비한 컴퓨팅 장치 및 dll 인젝션 방법 |
-
2018
- 2018-11-12 KR KR1020180138445A patent/KR102146882B1/ko active IP Right Grant
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101663013B1 (ko) * | 2010-01-15 | 2016-10-06 | 삼성전자주식회사 | 코드 주입 공격을 감지하는 장치 및 방법 |
KR101671795B1 (ko) | 2010-01-18 | 2016-11-03 | 삼성전자주식회사 | 동적 링크 라이브러리 삽입 공격을 방지하는 컴퓨터 시스템 및 방법 |
Also Published As
Publication number | Publication date |
---|---|
KR20200054752A (ko) | 2020-05-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10181029B1 (en) | Security cloud service framework for hardening in the field code of mobile software applications | |
US10565378B1 (en) | Exploit of privilege detection framework | |
US20160300044A1 (en) | Anti-debugging method | |
US9280664B2 (en) | Apparatus and method for blocking activity of malware | |
US8627458B2 (en) | Detecting malicious computer program activity using external program calls with dynamic rule sets | |
US9367681B1 (en) | Framework for efficient security coverage of mobile software applications using symbolic execution to reach regions of interest within an application | |
US10649877B2 (en) | Macro-script execution control | |
EP3502944B1 (en) | Detecting script-based malware cross reference to related applications | |
EP3270317A1 (en) | Dynamic security module server device and operating method thereof | |
US10824572B2 (en) | Memory space protection | |
CN104639650A (zh) | 一种细粒度分布式接口访问控制方法及装置 | |
US20210049262A1 (en) | Stack pivot exploit detection and mitigation | |
CN106484592B (zh) | 一种异常检测方法和装置 | |
TWI678615B (zh) | 在資料處理裝置中進行除錯 | |
US11966478B2 (en) | Managing the loading of sensitive modules | |
CN105426751A (zh) | 一种防止篡改***时间的方法及装置 | |
CN109376530B (zh) | 基于标记的进程强制行为控制方法和*** | |
KR102146882B1 (ko) | 메시지 모니터링 장치 및 방법 | |
US10063558B2 (en) | Method for blocking unauthorized data access and computing device with feature of blocking unauthorized data access | |
US10922125B2 (en) | Capability liveness of containerized services | |
CN107621976A (zh) | 一种保持应用程序实例处于激活状态的方法及云服务器 | |
US20190102541A1 (en) | Apparatus and method for defending against unauthorized modification of programs | |
US20180321970A1 (en) | Controlling Background Activity of an Application Using a Policy | |
CN113836529A (zh) | 进程检测方法、装置、存储介质以及计算机设备 | |
CN112860328A (zh) | 服务器的控制方法、装置、计算设备和介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AMND | Amendment | ||
E601 | Decision to refuse application | ||
X091 | Application refused [patent] | ||
AMND | Amendment | ||
X701 | Decision to grant (after re-examination) |