KR20170102712A - 윈도우 api분석을 이용한 어플리케이션의 행위 판단 장치 및 방법 - Google Patents
윈도우 api분석을 이용한 어플리케이션의 행위 판단 장치 및 방법 Download PDFInfo
- Publication number
- KR20170102712A KR20170102712A KR1020160025189A KR20160025189A KR20170102712A KR 20170102712 A KR20170102712 A KR 20170102712A KR 1020160025189 A KR1020160025189 A KR 1020160025189A KR 20160025189 A KR20160025189 A KR 20160025189A KR 20170102712 A KR20170102712 A KR 20170102712A
- Authority
- KR
- South Korea
- Prior art keywords
- windows api
- application
- windows
- information
- api
- Prior art date
Links
Images
Classifications
-
- 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
- G06F21/566—Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
-
- 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
-
- G06F9/4421—
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Computing Systems (AREA)
- Computer Hardware Design (AREA)
- Health & Medical Sciences (AREA)
- Virology (AREA)
- General Health & Medical Sciences (AREA)
- Mathematical Physics (AREA)
- Quality & Reliability (AREA)
- Debugging And Monitoring (AREA)
Abstract
본 발명의 일 실시예에 따른 어플리케이션의 행위 판단 장치는 Windows API의 호출 정보를 저장하는 저장부;어플리케이션으로부터 Windows API 호출을 받아 커널에 상기 Windows API 호출을 하고, 상기 호출 받은 Windows API가 기 분류된 Windows API 목록에 포함되는 경우, 상기 호출 받은 Windows API의 호출 정보를 상기 저장부에 저장하는 Windows API 수집 모듈; 및 상기 어플리케이션이 악성 코드라는 경고 정보를 수신하고, 상기 저장부에 저장된 Windows API의 호출 정보 중 상기 경고 정보와 연관된 Windows API의 호출 정보를 이용하여 상기 어플리케이션이 수행한 행위를 판단하는 상기 경고 관리 모듈; 을 포함할 수 있다.
Description
본 발명은 어플리케이션과 시스템 커널 사이에 호출되는 Windows API 분석을 이용하여 악성코드가 수행한 행위를 판단하는 장치 및 방법에 관한 것이다.
변칙 기반 침입탐지 시스템 (Anomaly based Intrusion Detection System)은 호스트에서 일반적인 동작과 다른 것으로 추정되는 사용자 어플리케이션을 시스템 운영자에게 알려준다.
하지만 변칙 기반 침입탐지 시스템은 사용자 어플리케이션이 악성 코드라는 것을 알 수 있을 뿐 사용자 어플리케이션이 정확히 어떤 행위를 수행 했는지 알 수 없다.
이러한 악성 코드의 공격에 대한 적절한 대응을 수행하기 위해서 악성 코드가 어떠한 행위를 수행하였는지 알 필요가 있다.
한편, 윈도우 운영체제(Windows OS)에서 사용자 어플리케이션은 메모리, 파일, 네트워크, 비디오 및 사운드 등의 시스템 자원에 직접 접근할 수 없다. 이러한 시스템 자원은 운영체제에 의해 직접 관리되고, 안전성, 보안 및 효율 등의 이유로 사용자 어플리케이션이 직접 접근하는 것을 막아 놓았기 때문이다.
도 1 은 사용자 어플리케이션이 Windows API를 이용하는 예시를 나타낸 도면이다. 도 1을 참조하면 사용자 어플리케이션은 시스템 자원을 사용하기 위해 시스템 커널에 시스템 자원을 요청하고, 커널로부터 시스템 자원을 반환받는다.
악성 코드 또한 비정상 프로세스를 수행할 때 이러한 Windows API를 이용하며, 악성 코드가 이용한 Windows API를 파악한다면 악성 코드가 수행한 행위 또한 판단할 수 있다.
따라서 악성 코드가 이용한 Windows API를 파악하여 악성 코드가 수행한 행위를 판단하는 장치 및 방법의 개발이 요구되고 있는 실정이다.
본 발명은 상기와 같은 종래의 문제점을 해결하기 위하여 안출된 것으로서, 사용자 어플리케이션과 시스템 커널 사이에 호출되는 Windows API 분석을 통해 악성코드가 수행하였던 행위가 무엇이었는지 판단하는 장치 및 방법을 제공하는 데 그 목적이 있다.
한편, 본 발명에서 이루고자 하는 기술적 과제들은 이상에서 언급한 기술적 과제들로 제한되지 않으며, 언급하지 않은 또 다른 기술적 과제들은 아래의 기재로부터 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
상술한 과제를 실현하기 위한 본 발명의 일예와 관련된 어플리케이션의 행위 판단 장치는 Windows API의 호출 정보를 저장하는 저장부;어플리케이션으로부터 Windows API 호출을 받아 커널에 상기 Windows API 호출을 하고, 상기 호출 받은 Windows API가 기 분류된 Windows API 목록에 포함되는 경우, 상기 호출 받은 Windows API의 호출 정보를 상기 저장부에 저장하는 Windows API 수집 모듈; 및 상기 어플리케이션이 악성 코드라는 경고 정보를 수신하고, 상기 저장부에 저장된 Windows API의 호출 정보 중 상기 경고 정보와 연관된 Windows API의 호출 정보를 이용하여 상기 어플리케이션이 수행한 행위를 판단하는 상기 경고 관리 모듈; 을 포함할 수 있다.
또한, 상기 Windows API의 호출 정보는 상기 Windows API가 호출된 시간, 상기 Windows API를 호출한 프로세스의 이름, 상기 Windows API를 호출한 프로세스의 ID, 상기 호출된 Windows API의 이름 및 상기 Windows API의 입력 변수 중 적어도 하나를 포함할 수 있다.
또한, 상기 경고 정보는, 상기 경고가 발생한 시간, 상기 경고를 발생시킨 프로세서의 이름 및 상기 경고를 발생시킨 프로세서의 ID 중 적어도 하나를 포함할 수 있다.
또한, 상기 저장부는, 상기 Windows API 목록에 포함되는 하나 이상의 Windows API 조합에 따른 상기 어플리케이션의 행위 목록을 저장하고, 상기 경고 관리 모듈은, 상기 어플리케이션의 행위 목록을 참조하여 상기 어플리케이션이 수행한 행위를 판단할 수 있다.
또한, 상기 기 분류된 Windows API 목록은 connect(), HttpOpenRequstA(), HttpOpenRequstW(), sendto(), NtCreateFile(), listen(), HttpSendRequestW(), FindFisrtFileExW() 및 SetWindowsHookExA() 중 적어도 하나를 포함할 수 있다.
상술한 과제를 실현하기 위한 본 발명의 일예와 관련된 어플리케이션의 행위 판단 방법은 어플리케이션으로부터 Windows API 호출을 받아 커널에 상기 Windows API 호출을 하는 Windows API 수집 모듈, 상기 Windows API의 호출 정보를 저장하는 저장부 및 상기 Windows API의 호출 정보를 이용하여 상기 어플리케이션이 수행한 행위를 판단하는 경고 관리 모듈을 이용하여 어플리케이션의 행위를 판단하는 방법에 있어서, 상기 Windows API 수집 모듈이 상기 어플리케이션으로부터 상기 Windows API를 호출 받는 단계; 상기 호출 받은 Windows API가 기 분류된 Windows API 목록에 포함되는 경우, 상기 Windows API의 호출 정보가 상기 저장부에 저장되는 단계; 상기 어플리케이션이 악성 코드라는 경고 정보를 상기 경고 관리 모듈이 수신하는 단계; 상기 저장부에 저장된 Windows API의 호출 정보 중 상기 경고 정보와 연관된 Windows API의 호출 정보를 이용하여 상기 어플리케이션이 수행한 행위를 판단하는 단계;를 포함할 수 있다.
또한, 상기 Windows API의 호출 정보는 상기 Windows API가 호출된 시간, 상기 Windows API를 호출한 프로세스의 이름, 상기 Windows API를 호출한 프로세스의 ID, 상기 호출된 Windows API의 이름 및 상기 Windows API의 입력 변수 중 적어도 하나를 포함할 수 있다.
또한, 상기 경고 정보는 상기 경고가 발생한 시간, 상기 경고를 발생시킨 프로세서의 이름 및 상기 경고를 발생시킨 프로세서의 ID 중 적어도 하나를 포함할 수 있다.
또한, 상기 저장부는, 상기 Windows API 목록에 포함되는 하나 이상의 Windows API 조합에 따른 상기 어플리케이션의 행위 목록을 저장하고, 상기 어플리케이션이 수행한 행위를 판단하는 단계는, 상기 어플리케이션의 행위 목록을 참조하여 상기 어플리케이션이 수행한 행위를 판단할 수 있다.
또한, 상기 기 분류된 Windows API 목록은 connect(), HttpOpenRequstA(), HttpOpenRequstW(), sendto(), NtCreateFile(), listen(), HttpSendRequestW(), FindFisrtFileExW() 및 SetWindowsHookExA() 중 적어도 하나를 포함할 수 있다.
본 발명의 실시예들은 사용자 어플리케이션과 시스템 커널 사이에 호출되는 Windows API 분석을 통해 악성코드가 수행하였던 행위가 무엇이었는지 판단하는 장치 및 방법을 제공할 수 있다.
한편, 본 발명에서 얻을 수 있는 효과는 이상에서 언급한 효과들로 제한되지 않으며, 언급하지 않은 또 다른 효과들은 아래의 기재로부터 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
본 명세서에 첨부되는 다음의 도면들은 본 발명의 바람직한 일 실시예를 예시하는 것이며, 발명의 상세한 설명과 함께 본 발명의 기술적 사상을 더욱 이해시키는 역할을 하는 것이므로, 본 발명은 그러한 도면에 기재된 사항에만 한정되어 해석 되어서는 아니 된다.
도 1 은 사용자 어플리케이션이 Windows API를 이용하는 예시를 나타낸 도면이다.
도 2는 본 발명의 일 실시예에 따른 어플리케이션의 행위 판단 장치의 블록도와 어플리케이션의 행위 판단 장치가 침입탐지 시스템, 사용자 어플리케이션 및 커널과 연결된 것을 나타낸다.
도 3은 본 발명의 일 실시예에 따른 Windows API 조합에 따른 어플리케이션의 행위 목록을 나타낸다.
도 4는 본 발명의 일 실시예에 따른 어플리케이션의 행위 판단 방법을 나타내는 흐름도이다.
도 5는 본 발명의 일 실시예에 따른 어플리케이션의 행위 판단 장치가 악성 코드가 수행한 행위를 판단하는 과정을 나타내는 도면이다.
도 6은 본 발명의 일 실시예에 따른 어플리케이션의 행위 판단 방법을 실행하는 컴퓨팅 시스템을 보여주는 블록도이다.
도 1 은 사용자 어플리케이션이 Windows API를 이용하는 예시를 나타낸 도면이다.
도 2는 본 발명의 일 실시예에 따른 어플리케이션의 행위 판단 장치의 블록도와 어플리케이션의 행위 판단 장치가 침입탐지 시스템, 사용자 어플리케이션 및 커널과 연결된 것을 나타낸다.
도 3은 본 발명의 일 실시예에 따른 Windows API 조합에 따른 어플리케이션의 행위 목록을 나타낸다.
도 4는 본 발명의 일 실시예에 따른 어플리케이션의 행위 판단 방법을 나타내는 흐름도이다.
도 5는 본 발명의 일 실시예에 따른 어플리케이션의 행위 판단 장치가 악성 코드가 수행한 행위를 판단하는 과정을 나타내는 도면이다.
도 6은 본 발명의 일 실시예에 따른 어플리케이션의 행위 판단 방법을 실행하는 컴퓨팅 시스템을 보여주는 블록도이다.
이하, 본 발명의 일부 실시예들을 예시적인 도면을 통해 상세하게 설명한다. 각 도면의 구성요소들에 참조부호를 부가함에 있어서, 동일한 구성요소들에 대해서는 비록 다른 도면상에 표시되더라도 가능한 한 동일한 부호를 가지도록 하고 있음에 유의해야 한다. 또한, 본 발명의 실시예를 설명함에 있어, 관련된 공지 구성 또는 기능에 대한 구체적인 설명이 본 발명의 실시예에 대한 이해를 방해한다고 판단되는 경우에는 그 상세한 설명은 생략한다.
본 발명의 실시예의 구성 요소를 설명하는 데 있어서, 제 1, 제 2, A, B, (a), (b) 등의 용어를 사용할 수 있다. 이러한 용어는 그 구성 요소를 다른 구성 요소와 구별하기 위한 것일 뿐, 그 용어에 의해 해당 구성 요소의 본질이나 차례 또는 순서 등이 한정되지 않는다. 또한, 다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 가진 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
도 2는 본 발명의 일 실시예에 따른 어플리케이션의 행위 판단 장치의 블록도와 어플리케이션의 행위 판단 장치가 침입탐지 시스템, 사용자 어플리케이션 및 커널과 연결된 것을 나타낸다.
또한, 도 3은 본 발명의 일 실시예에 따른 Windows API 조합에 따른 어플리케이션의 행위 목록을 나타낸다.
도 2를 참조하면, 어플리케이션의 행위 판단 장치는 Windows API 수집 모듈(100), 저장부(200) 및 경고 관리 모듈(300) 등을 포함할 수 있다.
다만, 도 2에 도시된 구성요소들이 필수적인 것은 아니어서, 그보다 많은 구성요소들을 갖거나 그보다 적은 구성요소들을 갖는 어플리케이션의 행위 판단 장치가 구현될 수도 있다.
먼저, Windows API 수집 모듈(100)은 사용자 어플리케이션과 커널 사이에 위치하고, 어플리케이션으로부터 Windows API 호출을 받아 커널에 Windows API 호출을 하며, 커널로부터 Windows API를 반환받아 어플리케이션으로 반환받은 Windows API를 반환하는 구성이다.
즉, 사용자 어플리케이션이 시스템 자원을 사용하기 위해 커널에 Windows API 를 호출할 때, 커널의 Windows API가 바로 실행되는 것이 아니라 중간에 Windows API 수집 모듈(100)을 경유한 뒤 실행되는 것이다.
Windows API 수집 모듈(100)은 호출 받은 Windows API의 호출 정보를 저장부(200)에 저장한다. Windows API 수집 모듈(100)이 수집하는 Windows API의 호출 정보는 Windows API 가 호출된 시간, Windows API를 호출한 프로세스의 이름, Windows API를 호출한 프로세스의 ID, 호출된 Windows API 이름 및 Windows API의 입력 변수 중 적어도 하나를 포함할 수 있다.
Windows API 수집 모듈(100)은 호출되는 모든 Windows API의 호출 정보를 수집할 수 있을 뿐만 아니라, 호출 받은 Windows API가 기 분류된 Windows API 목록에 포함되는 경우, Windows API의 호출 정보를 저장부(200)에 저장하여 검색 및 저장의 효율을 높일 수 있다.
기 분류된 Windows API 목록은 connect(), HttpOpenRequstA(), HttpOpenRequstW(), sendto(), NtCreateF she(), listen(), HttpSendRequestW(), FindFisrtFileExW() 및 SetWindowsHookExA() 중 적어도 하나를 포함할 수 있다. 다만, 이러한 예시에 한정되지 않는다.
저장부(200)는 Windows API 수집 모듈(100)이 수집한 Windows API의 호출 정보를 저장하는 구성이다. 저장부(200)에 저장된 Windows API의 호출 정보는 후술할 경고 관리 모듈(300)에 의해 사용될 수 있다.
또한, 저장부(200)는 Windows API 목록에 포함되는 하나 이상의 Windows API 조합에 따른 어플리케이션의 행위 목록을 저장할 수 있다. 이러한 행위 목록 또한 경고 관리 모듈(300)에 의해 어플리케이션의 행위를 판단하는 데 사용될 수 있다.
도 3을 참조하면, 기 분류된 Windows API 목록에 포함되는 하나 이상의 Windows API 조합에 따른 어플리케이션의 행위 목록의 예시가 나타나 있다.
이와 같은 행위 목록은 악성코드, 즉 비정상 프로세스가 수행될 것으로 예상되는 행위이다.
External System Connection은 외부 시스템과의 접속(Victim -> 외부 시스템)하는 행위로써, 사용자 어플리케이션이 External System Connection 행위를 수행할 경우 'connect()' Windows API를 호출하며, 'connect()' Windows API 입력 변수 중 destination IP 주소는 망 외부 주소가 된다.
File Download from External System은 외부 서버 시스템(예를 들어, E-mail, Web Server, Update Server)에 접속 후 파일 다운로드를 하는 행위로써, 사용자 어플리케이션이 File Download from External System 행위를 수행할 경우 'connect()', 'HttpOpenRequstA(Get)', 'HttpOpenRequstW(Get)', 'HttpSendRequestW()' 및 'NtCreateFile()' Windows API를 호출하며, 'connect()' Windows API 입력 변수 중 destination IP 주소는 망 외부 주소가 된다.
Port Open은 사용자 어플리케이션이 외부 시스템으로부터 접속을 기다리는 행위로써, 사용자 어플리케이션이 Port Open 행위를 수행할 경우 'listen()' Windows API를 호출한다.
File Searching은 시스템 내 파일 검색을 하는 행위로써, 사용자 어플리케이션이 File Searching 행위를 수행할 경우 'FindFisrtFileExW()' Windows API를 호출한다.
Windows Hooking은 시스템 내 키보드 및 마우스 입력 정보 수집하는 행위로써, 사용자 어플리케이션이 Windows Hooking 행위를 수행할 경우 'SetWindowsHookExA()' Windows API를 호출한다.
Internal System Searching은 포트 스캐닝과 같은 내부망 탐색을 시도하는 행위로써, 사용자 어플리케이션이 Internal System Searching 행위를 수행할 경우 다수의 'sendto()' Windows API를 호출하며, 'sendto()' Windows API 입력 변수 중 destination IP 주소는 망 내부 주소가 된다.
Internal Server Connection은 DB 서버를 포함한 내부 망의 중요 서버 접속 행위로써, 사용자 어플리케이션이 Internal Server Connection 행위를 수행할 경우 'connect()' Windows API 를 호출하며, 'connect()' Windows API 입력 변수 중 destination IP 주소는 망 내부 중요 서버의 IP 주소가 된다.
File Upload to External System은 외부 시스템으로 정보를 유출하는 행위로써, 사용자 어플리케이션이 File Upload to External System 행위를 수행할 경우 'connect()', 'HttpOpenRequstA(Post)' 및 'HttpSendRequestA()' Windows API를 호출하며, 'connect()' Windows API 입력 변수 중 destination IP 주소는 망 외부 주소가 된다.
File Upload to Internal System은 사용자 어플리케이션이 DB 서버를 포함한 내부 망의 중요 서버에 파일을 업로드하는 행위로써, 사용자 어플리케이션이 File Upload to Internal System 행위를 수행할 경우 'connect()', 'HttpOpenRequstA(Post)' 및 'HttpSendRequestA()' Windows API를 호출하며, 'connect()' Windows API 입력 변수 중 destination IP 주소는 망 내부 중요 서버의 IP 주소가 된다.
저장부(200)는 위와 같은 행위 목록을 저장할 수 있으나, 이에 한정되는 것은 아니다.
경고 관리 모듈(300)은 침입탐지 시스템으로부터 경고 정보를 수신하고, 이를 이용하여 어플리케이션이 수행한 행위를 판단한다.
경고 관리 모듈(300)은 침입탐지 시스템으로부터 사용자 어플리케이션이 악성 코드라는 경고 정보를 수신하는 것으로써, 수신하는 경고 정보는 경고가 발생한 시간(악성 코드를 발견한 시간), 경고를 발생시킨 프로세서의 이름 및 경고를 발생시킨 프로세서의 ID 중 적어도 하나를 포함할 수 있다. 다만, 경고 관리 모듈(300)이 경고 정보를 수신할 수 있는 대상은 침입 탐지 시스템에 한정되지 않는다.
경고 관리모듈은 저장부(200)에 저장된 Windows API의 호출 정보 중 경고 정보와 연관된 Windows API의 호출 정보를 이용하여 어플리케이션이 수행한 행위를 판단한다.
즉, 전술한 저장부(200)에 저장된 Windows API의 호출 정보 중 경고 정보와 연관된 Windows API의 호출 정보를 이용하여 어플리케이션이 수행한 행위를 판단하는 것이다.
예를 들어, 경고 관리 모듈(300)이 수신한 경고 정보에 포함된 경고가 발생한 시간이 11시 이고, 경고를 발생시킨 프로세서의 이름이 a.exe이며, 경고를 발생시킨 프로세서의 ID가 1234 인 경우, 이러한 경고 정보를 Windows API 수집 모듈(100)에 의해 저장부(200)에 저장된 Windows API 호출 정보에 매칭시킨다.
매칭된 Windows API 호출 정보의 Windows API가 무엇인지 파악하고, 파악한 Windows API와 저장부(200)에 저장된 어플리케이션의 행위 목록을 이용하여 매칭되는 어플리케이션의 행위를 판단할 수 있다.
이하에서는 도 4를 참조하여 전술한 구성들을 기초로 어플리케이션의 행위 판단 방법에 대해 구체적으로 설명한다.
도 4는 본 발명의 일 실시예에 따른 어플리케이션의 행위 판단 방법을 나타내는 흐름도이다.
Windows API 수집 모듈이 어플리케이션으로부터 Windows API를 호출 받는다(S100).
전술한 바와 같이 Windows API 수집 모듈은 어플리케이션이 Windows API 수집 모듈을 통하여 커널로부터 Windows API를 반환받도록 어플리케이션과 커널 사이에 위치한다. 이와 같이 어플리케이션과 커널 사이에 위치한 Windows API 수집 모듈은 어플리케이션으로부터 Windows API를 호출 받아 커널에 Windows API 호출을 한다.
따라서 어플리케이션이 시스템 자원을 활용하기 위해 Windows API를 호출할 때 Windows API 수집 모듈은 어플리케이션으로부터 Windows API를 호출 받는다.
호출 받은 Windows API가 기 분류된 Windows API 목록에 포함되는 경우, Windows API 수집 모듈에 의해 Windows API의 호출 정보가 저장부에 저장된다(S200).
Windows API 수집 모듈은 전술한 바와 같이 호출되는 모든 Windows API의 호출 정보를 수집하여 저장부에 저장할 수 있을 뿐만 아니라, 호출 받은 Windows API가 기 분류된 Windows API 목록에 포함되는 경우, Windows API의 호출 정보를 저장부에 저장하여 검색 및 저장의 효율을 높일 수 있다.
기 분류된 Windows API 목록은 connect(), HttpOpenRequstA(), HttpOpenRequstW(), sendto(), NtCreateFile(), listen(), HttpSendRequestW(), FindFisrtFileExW() 및 SetWindowsHookExA() 중 적어도 하나를 포함할 수 있다. 다만, 이러한 예시에 한정되지 않는다.
또한, Windows API 수집 모듈이 수집하는 Windows API의 호출 정보는 Windows API 가 호출된 시간, Windows API를 호출한 프로세스의 이름, Windows API를 호출한 프로세스의 ID, 호출된 Windows API 이름 및 Windows API의 입력 변수 중 적어도 하나를 포함할 수 있다.
어플리케이션이 악성 코드라는 경고 정보를 경고 관리 모듈이 수신한다(S300).
경고 관리 모듈은 침입 탐지 시스템으로부터 어플리케이션이 악성 코드라는 경고 정보를 수신할 수 있으며, 수신하는 경고 정보는 경고가 발생한 시간(악성 코드를 발견한 시간), 경고를 발생시킨 프로세서의 이름 및 경고를 발생시킨 프로세서의 ID 중 적어도 하나를 포함할 수 있다. 다만, 경고 관리 모듈이 경고 정보를 수신할 수 있는 대상은 침입 탐지 시스템에 한정되지 않는다.
저장부에 저장된 Windows API의 호출 정보 중 경고 정보와 연관된 Windows API의 호출 정보를 이용하여 어플리케이션이 수행한 행위를 판단한다(S400).
즉, 전술한 저장부에 저장된 Windows API의 호출 정보 중 경고 정보와 연관된 Windows API의 호출 정보를 이용하여 어플리케이션이 수행한 행위를 판단하는 것이다.
구체적인 판단 방법의 예시는 이하에서 도 5를 참조하여 설명한다.
도 5는 본 발명의 일 실시예에 따른 경고 관리 모듈이 악성 코드가 수행한 행위를 판단하는 과정을 나타내는 도면이다.
Windows API의 호출 정보가 Windows API 수집 모듈에 의해 수집되고 저장부에 저장된 것을 전제로 설명한다.
도 5에 나타난 바와 같이 경고 관리 모듈이 침입탐지 시스템으로부터 경고 정보 수신한다.
이러한 경고 정보에는 경고가 발생한 시간인 'Time : 2015.02.06 11:02', 경고를 발생시킨 프로세스의 이름인 'Process Name: k.exe' 및 경고를 발생시킨 프로세서의 ID인 'Process ID: 2852'가 포함될 수 있다.
경고 관리 모듈은 수신한 경고 정보인 'Time : 2015.02.06 11:02', 'Process Name: k.exe' 및 'Process ID: 2852'를 이용하여 저장부에 저장된 Windows API의 호출 정보를 검색하여 이에 매칭되는 Windows API를 찾는다.
경고 관리 모듈은 어플리케이션이 호출한 Windows API 가 'connect()', 'HttpOpenRequestA(Post)' 및 'HttpSendRequestA()'이라고 판단할 수 있고, 이를 전술한 도 3과 같은 행위 목록에 매칭하여, 어플리케이션이 수행한 행위가 File Upload to External System 및 File Upload to Internal System 중 하나임을 판단할 수 있고, connect()의 입력 변수 중 destination IP 주소가 망 외부 주소 일 경우, 사용자 어플리케이션이 외부 시스템으로 정보 유출하는 행위(File Upload to External System)를 수행한 것으로 판단할 수 있다.
도 6을 참조하면, 컴퓨팅 시스템(1000)은 버스(1200)를 통해 연결되는 적어도 하나의 프로세서(1100), 메모리(1300), 사용자 인터페이스 입력 장치(1400), 사용자 인터페이스 출력 장치(1500), 스토리지(1600), 및 네트워크 인터페이스(1700)를 포함할 수 있다.
프로세서(1100)는 중앙 처리 장치(CPU) 또는 메모리(1300) 및/또는 스토리지(1600)에 저장된 명령어들에 대한 처리를 실행하는 반도체 장치일 수 있다. 메모리(1300) 및 스토리지(1600)는 다양한 종류의 휘발성 또는 불휘발성 저장 매체를 포함할 수 있다. 예를 들어, 메모리(1300)는 ROM(Read Only Memory) 및 RAM(Random Access Memory)을 포함할 수 있다.
따라서, 본 명세서에 개시된 실시예들과 관련하여 설명된 방법 또는 알고리즘의 단계는 프로세서(1100)에 의해 실행되는 하드웨어, 소프트웨어 모듈, 또는 그 2 개의 결합으로 직접 구현될 수 있다. 소프트웨어 모듈은 RAM 메모리, 플래시 메모리, ROM 메모리, EPROM 메모리, EEPROM 메모리, 레지스터, 하드 디스크, 착탈형 디스크, CD-ROM과 같은 저장 매체(즉, 메모리(1300) 및/또는 스토리지(1600))에 상주할 수도 있다. 예시적인 저장 매체는 프로세서(1100)에 커플링되며, 그 프로세서(1100)는 저장 매체로부터 정보를 판독할 수 있고 저장 매체에 정보를 기입할 수 있다. 다른 방법으로, 저장 매체는 프로세서(1100)와 일체형일 수도 있다. 프로세서 및 저장 매체는 주문형 집적회로(ASIC) 내에 상주할 수도 있다. ASIC는 사용자 단말기 내에 상주할 수도 있다. 다른 방법으로, 프로세서 및 저장 매체는 사용자 단말기 내에 개별 컴포넌트로서 상주할 수도 있다.
상기와 같이 설명된 어플리케이션의 행위 판단 방법은 상기 설명된 실시예들의 구성과 방법이 한정되게 적용될 수 있는 것이 아니라, 상기 실시예들은 다양한 변형이 이루어질 수 있도록 각 실시예들의 전부 또는 일부가 선택적으로 조합되어 구성될 수도 있다.
100 : Windows API 수집 모듈
200 : 저장부
300 : 경고 관리 모듈
1000: 컴퓨팅 시스템
1100: 프로세서
1200: 시스템 버스
1300: 메모리
1310: ROM
1320: RAM
1400: 사용자 인터페이스
200 : 저장부
300 : 경고 관리 모듈
1000: 컴퓨팅 시스템
1100: 프로세서
1200: 시스템 버스
1300: 메모리
1310: ROM
1320: RAM
1400: 사용자 인터페이스
Claims (10)
- Windows API의 호출 정보를 저장하는 저장부;
어플리케이션으로부터 Windows API 호출을 받아 커널에 상기 Windows API 호출을 하고, 상기 호출 받은 Windows API가 기 분류된 Windows API 목록에 포함되는 경우, 상기 호출 받은 Windows API의 호출 정보를 상기 저장부에 저장하는 Windows API 수집 모듈; 및
상기 어플리케이션이 악성 코드라는 경고 정보를 수신하고, 상기 저장부에 저장된 Windows API의 호출 정보 중 상기 경고 정보와 연관된 Windows API의 호출 정보를 이용하여 상기 어플리케이션이 수행한 행위를 판단하는 상기 경고 관리 모듈; 을 포함하는 것을 특징으로 하는 어플리케이션의 행위 판단 장치. - 제 1 항에 있어서,
상기 Windows API의 호출 정보는 상기 Windows API가 호출된 시간, 상기 Windows API를 호출한 프로세스의 이름, 상기 Windows API를 호출한 프로세스의 ID, 상기 호출된 Windows API의 이름 및 상기 Windows API의 입력 변수 중 적어도 하나를 포함하는 것을 특징으로 하는 어플리케이션의 행위 판단 장치. - 제 1 항에 있어서,
상기 경고 정보는, 상기 경고가 발생한 시간, 상기 경고를 발생시킨 프로세서의 이름 및 상기 경고를 발생시킨 프로세서의 ID 중 적어도 하나를 포함하는 것을 특징으로 하는 어플리케이션의 행위 판단 장치. - 제 1 항에 있어서,
상기 저장부는, 상기 Windows API 목록에 포함되는 하나 이상의 Windows API 조합에 따른 상기 어플리케이션의 행위 목록을 저장하고,
상기 경고 관리 모듈은, 상기 어플리케이션의 행위 목록을 참조하여 상기 어플리케이션이 수행한 행위를 판단하는 것을 특징으로 하는 어플리케이션의 행위 판단 장치. - 제 1 항에 있어서,
상기 기 분류된 Windows API 목록은 connect(), HttpOpenRequstA(), HttpOpenRequstW(), sendto(), NtCreateFile(), listen(), HttpSendRequestW(), FindFisrtFileExW() 및 SetWindowsHookExA() 중 적어도 하나를 포함하는 것을 특징으로 하는 어플리케이션의 행위 판단 장치. - 어플리케이션으로부터 Windows API 호출을 받아 커널에 상기 Windows API 호출을 하는 Windows API 수집 모듈, 상기 Windows API의 호출 정보를 저장하는 저장부 및 상기 Windows API의 호출 정보를 이용하여 상기 어플리케이션이 수행한 행위를 판단하는 경고 관리 모듈을 이용하여 어플리케이션의 행위를 판단하는 방법에 있어서,
상기 Windows API 수집 모듈이 상기 어플리케이션으로부터 상기 Windows API를 호출 받는 단계;
상기 호출 받은 Windows API가 기 분류된 Windows API 목록에 포함되는 경우, 상기 Windows API의 호출 정보가 상기 저장부에 저장되는 단계;
상기 어플리케이션이 악성 코드라는 경고 정보를 상기 경고 관리 모듈이 수신하는 단계;
상기 저장부에 저장된 Windows API의 호출 정보 중 상기 경고 정보와 연관된 Windows API의 호출 정보를 이용하여 상기 어플리케이션이 수행한 행위를 판단하는 단계;를 포함하는 것을 특징으로 하는 어플리케이션의 행위 판단 방법. - 제 6 항에 있어서,
상기 Windows API의 호출 정보는 상기 Windows API가 호출된 시간, 상기 Windows API를 호출한 프로세스의 이름, 상기 Windows API를 호출한 프로세스의 ID, 상기 호출된 Windows API의 이름 및 상기 Windows API의 입력 변수 중 적어도 하나를 포함하는 것을 특징으로 하는 어플리케이션의 행위 판단 방법. - 제 6 항에 있어서,
상기 경고 정보는 상기 경고가 발생한 시간, 상기 경고를 발생시킨 프로세서의 이름 및 상기 경고를 발생시킨 프로세서의 ID 중 적어도 하나를 포함하는 것을 특징으로 하는 어플리케이션의 행위 판단 방법. - 제 6 항에 있어서,
상기 저장부는, 상기 Windows API 목록에 포함되는 하나 이상의 Windows API 조합에 따른 상기 어플리케이션의 행위 목록을 저장하고,
상기 어플리케이션이 수행한 행위를 판단하는 단계는, 상기 어플리케이션의 행위 목록을 참조하여 상기 어플리케이션이 수행한 행위를 판단하는 것을 특징으로 하는 어플리케이션의 행위 판단 방법. - 제 6 항에 있어서,
상기 기 분류된 Windows API 목록은 connect(), HttpOpenRequstA(), HttpOpenRequstW(), sendto(), NtCreateFile(), listen(), HttpSendRequestW(), FindFisrtFileExW() 및 SetWindowsHookExA() 중 적어도 하나를 포함하는 것을 특징으로 하는 어플리케이션의 행위 판단 방법.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020160025189A KR20170102712A (ko) | 2016-03-02 | 2016-03-02 | 윈도우 api분석을 이용한 어플리케이션의 행위 판단 장치 및 방법 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020160025189A KR20170102712A (ko) | 2016-03-02 | 2016-03-02 | 윈도우 api분석을 이용한 어플리케이션의 행위 판단 장치 및 방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20170102712A true KR20170102712A (ko) | 2017-09-12 |
Family
ID=59926295
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020160025189A KR20170102712A (ko) | 2016-03-02 | 2016-03-02 | 윈도우 api분석을 이용한 어플리케이션의 행위 판단 장치 및 방법 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR20170102712A (ko) |
-
2016
- 2016-03-02 KR KR1020160025189A patent/KR20170102712A/ko unknown
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9781144B1 (en) | Determining duplicate objects for malware analysis using environmental/context information | |
RU2551820C2 (ru) | Способ и устройство для проверки файловой системы на наличие вирусов | |
US10430586B1 (en) | Methods of identifying heap spray attacks using memory anomaly detection | |
US8839435B1 (en) | Event-based attack detection | |
US10216934B2 (en) | Inferential exploit attempt detection | |
US8453244B2 (en) | Server, user device and malware detection method thereof | |
CN111737696A (zh) | 一种恶意文件检测的方法、系统、设备及可读存储介质 | |
CN111460445B (zh) | 样本程序恶意程度自动识别方法及装置 | |
US8171550B2 (en) | System and method for defining and detecting pestware with function parameters | |
JP6726706B2 (ja) | コンボリューションのポピュラリティに基づいて異常なイベントを検出するシステムおよび方法 | |
US20140053267A1 (en) | Method for identifying malicious executables | |
US9787699B2 (en) | Malware detection | |
US9871810B1 (en) | Using tunable metrics for iterative discovery of groups of alert types identifying complex multipart attacks with different properties | |
CN107231364B (zh) | 一种网站漏洞检测方法及装置、计算机装置及存储介质 | |
KR102045772B1 (ko) | 악성 코드를 탐지하기 위한 전자 시스템 및 방법 | |
US8065664B2 (en) | System and method for defining and detecting pestware | |
CN111131166B (zh) | 一种用户行为预判方法及相关设备 | |
CN111191234B (zh) | 一种病毒信息检测的方法及装置 | |
KR20170102712A (ko) | 윈도우 api분석을 이용한 어플리케이션의 행위 판단 장치 및 방법 | |
US11763004B1 (en) | System and method for bootkit detection | |
CN112948831A (zh) | 应用程序风险识别的方法和装置 | |
CN110784471A (zh) | 黑名单采集管理方法、装置、计算机设备及存储介质 | |
CN116938605B (zh) | 网络攻击防护方法、装置、电子设备及可读存储介质 | |
US20240333729A1 (en) | Connection destination malignancy determination system, connection destination malignancy determination program, and connection destination malignancy determination method | |
JP7152657B2 (ja) | 監視装置、監視方法及び監視プログラム |