KR101161008B1 - 악성코드 탐지시스템 및 방법 - Google Patents

악성코드 탐지시스템 및 방법 Download PDF

Info

Publication number
KR101161008B1
KR101161008B1 KR1020090058960A KR20090058960A KR101161008B1 KR 101161008 B1 KR101161008 B1 KR 101161008B1 KR 1020090058960 A KR1020090058960 A KR 1020090058960A KR 20090058960 A KR20090058960 A KR 20090058960A KR 101161008 B1 KR101161008 B1 KR 101161008B1
Authority
KR
South Korea
Prior art keywords
malicious code
driver
api
detection system
user process
Prior art date
Application number
KR1020090058960A
Other languages
English (en)
Other versions
KR20110001426A (ko
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 KR1020090058960A priority Critical patent/KR101161008B1/ko
Priority to PCT/KR2010/002375 priority patent/WO2011002146A2/ko
Publication of KR20110001426A publication Critical patent/KR20110001426A/ko
Application granted granted Critical
Publication of KR101161008B1 publication Critical patent/KR101161008B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/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
    • 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/562Static detection
    • G06F21/563Static detection by source code analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring

Abstract

이 발명은 경험적(heuristic) 기법을 적용하여 임의의 응용프로그램이 악성코드를 포함하는지 여부를 정확하게 탐지하는 시스템 및 방법에 관한 것이다.
이 발명에 따른 악성코드 탐지시스템은, 검사대상드라이버를 선택하는 커널드라이버검색부와, 상기 검사대상드라이버가 사용하고 있는 API 함수들을 확인하는 커널드라이버변환부와, 상기 검사대상드라이버가 사용하고 있는 API 함수들 중 악성코드의심API가 포함되어 있는지를 분석하는 커널드라이버분석부와, 상기 검사대상드라이버가 사용하고 있는 악성코드의심API 및 파라미터값을 디어셈블링하여 상기 악성코드의심API가 악성코드API인지를 분석하는 악성코드분석부를 포함한다.
보안드라이버, 악성코드, API, 드라이버핸들, 파라미터

Description

악성코드 탐지시스템 및 방법 {system and method for detecting malicious code}
이 발명은 악성코드 탐지시스템 및 방법에 관한 것으로서, 보다 상세하게는 경험적(heuristic) 기법을 적용하여 임의의 응용프로그램이 악성코드를 포함하는지 여부를 정확하게 탐지하는 시스템 및 방법에 관한 것이다.
최근 정보보호의 위협은 악성코드(exploit code, malicious code)에 집중되고 있으며, 이러한 악성코드는 비밀성, 무결성, 가용성 등으로 집약되는 정보보호의 목적에 반하여 전반적인 문제를 일으키고 있다. 악성코드의 실질적 정의는 다른 사람에게 심리적, 실질적으로 피해를 주기 위하여 제작된 모든 프로그램과 실행가능한 부분을 말한다. 크래커들의 악성코드 제작 기술력이 증가함에 따라 보안 위협도 증가하고 있다.
이러한 악성코드를 분석하기 위한 방법에는 지문(signature) 검사법, CRC(Cyclic Redundancy Check) 검사법 및 경험적(heuristic) 검사법이 있다.
지문 검사법은 사람을 구별할 때 지문을 보듯이 보안프로그램이 악성코드를 진단하는 방법 중의 한 가지이다. 즉, 악성코드가 가지고 있는 독특한 문자열(패턴)을 수집하여 이를 데이터베이스에 저장하고, 보안프로그램이 패턴을 매칭하는 방법을 이용하여 악성코드를 분석한다. 이러한 지문 검사법에는 순차적 문자열 검사법과 특정 문자열 검사법이 있는데, 순차적 문자열 검사법은 속도는 빠르지만 악성코드 탐지율이 떨어지는 단점이 있고, 특정 문자열 검사법은 악성코드탐지율은 높으나 속도가 느리다는 단점이 있다.
이 지문 검사법은 동일한 문자열 패턴 비교를 통해 악성코드를 탐지하기 때문에, 악성코드의 패턴 중 일부가 수정될 경우에는 해당 악성코드를 탐지할 수 없는 문제점이 있다. 이 때문에, 악성코드 탐지율을 높이려면, 보안업체는 악성코드의 패턴이 수정될 때마다 매번 다시 분석하여 수정된 악성코드의 패턴을 데이터베이스에 저장해야 하는 작업을 반복해야 하는 문제점이 있다.
CRC 검사법은 시리얼 전송에서 데이터의 신뢰성을 검증하기 위한 에러검출방법의 일종으로 오진율이 낮다는 장점이 있으나, 데이터가 1 바이트라도 변형되면 악성코드를 진단할 수 없는 단점이 있다.
따라서, 최근에는 악성코드 분석방법으로서 지문 검사법의 기능을 향상시킨 경험적(heuristic) 기법이 주로 사용되는데, 이는 악성코드의 행동을 분석하거나 방식을 분석하여 자체적으로 학습하는 학습기반 분석법 중 하나이다. 즉, 악성 바이러스프로그램의 경우 독특한 조합의 API 명령을 사용하는 경우가 많은데, 경험적 기법은 이와 같이 독특한 API 명령의 조합을 학습하여 API 명령을 기반으로 악성코 드 여부를 판단한다.
그러나, 통상적으로 악성코드와 보안프로그램이 유사한 API 명령어 조합을 사용하는 경우가 많으며, 이로 인해 임의의 응용프로그램의 악성코드 포함 여부를 경험적 기법으로 판단할 경우 보안프로그램을 악성코드로 오탐지하게 될 문제점이 있다.
상술한 문제점을 해결하기 위하여 안출된 이 발명의 목적은, 컴퓨터시스템에서 구동되는 임의의 응용프로그램이 사용하는 API 명령어 패턴을 커널레벨 영역에서 검출하고 디어셈블링하여 해당 응용프로그램의 행동패턴을 파악함으로써, 해당 응용프로그램이 악성코드를 포함하는지 여부를 정확하게 탐지하는 시스템 및 방법을 제공하기 위한 것이다.
상기한 목적을 달성하기 위한 이 발명의 한 실시예에 따른 악성코드 탐지시스템은, 검사대상드라이버를 선택하는 커널드라이버검색부와, 상기 검사대상드라이버가 사용하고 있는 API 함수들을 확인하는 커널드라이버변환부와, 상기 검사대상드라이버가 사용하고 있는 API 함수들 중 악성코드의심API가 포함되어 있는지를 분석하는 커널드라이버분석부와, 상기 검사대상드라이버가 사용하고 있는 악성코드의심API 및 파라미터값을 디어셈블링하여 상기 악성코드의심API가 악성코드API인지를 분석하는 악성코드분석부를 포함한 것을 특징으로 한다.
또한, 이 발명의 한 실시예에 따른 악성코드 탐지방법은, 검사대상드라이버를 선택하는 커널드라이버검색단계와, 상기 검사대상드라이버가 사용하고 있는 API 함수들을 확인하는 커널드라이버변환단계와, 상기 검사대상드라이버가 사용하고 있는 API 함수들 중 악성코드의심API가 포함되어 있는지를 분석하는 커널드라이버분 석단계와, 상기 검사대상드라이버가 사용하고 있는 악성코드의심API 및 파라미터값을 디어셈블링하여 상기 악성코드의심API가 악성코드API인지를 분석하는 악성코드분석단계를 포함한 것을 특징으로 한다.
또한, 이 발명의 다른 실시예에 따른 악성코드 탐지시스템은, 검사대상드라이버를 선택하는 커널드라이버검색부와, 상기 검사대상드라이버가 사용하고 있는 API 함수들을 확인하는 커널드라이버변환부와, 상기 검사대상드라이버가 사용하고 있는 API 함수들 중 악성코드의심API가 포함되어 있는지를 분석하는 커널드라이버분석부와, 상기 검사대상드라이버가 사용하고 있는 악성코드의심API 및 파라미터값을 디어셈블링하여 상기 악성코드의심API가 악성코드API인지를 분석하는 악성코드분석부와, 상기 악성코드분석부의 분석결과 상기 검사대상드라이버에 상기 악성코드API가 포함되면 상기 검사대상드라이버를 사용하는 유저프로세스를 조사하는 유저프로세스검색부와, 상기 유저프로세스가 상기 악성코드API를 호출하는지 분석하여 상기 검사대상드라이버의 상기 악성코드API가 실제 실행되는지를 탐지하는 유저프로세스분석부를 포함한 것을 특징으로 한다.
또한, 이 발명의 다른 실시예에 따른 악성코드 탐지방법은, 검사대상드라이버를 선택하는 커널드라이버검색단계와, 상기 검사대상드라이버가 사용하고 있는 API 함수들을 확인하는 커널드라이버변환단계와, 상기 검사대상드라이버가 사용하고 있는 API 함수들 중 악성코드의심API가 포함되어 있는지를 분석하는 커널드라이버분석단계와, 상기 검사대상드라이버가 사용하고 있는 악성코드의심API 및 파라미터값을 디어셈블링하여 상기 악성코드의심API가 악성코드API인지를 분석하는 악성 코드분석단계와, 상기 악성코드분석단계의 분석결과 상기 검사대상드라이버에 상기 악성코드API가 포함되면 상기 검사대상드라이버를 사용하는 유저프로세스를 조사하는 유저프로세스검색단계와, 상기 유저프로세스가 상기 악성코드API를 호출하는지 분석하여 상기 검사대상드라이버의 상기 악성코드API가 실제 실행되는지를 탐지하는 유저프로세스분석단계를 포함한 것을 특징으로 한다.
이상과 같이 상술한 이 발명에 따른 악성코드 탐지시스템 및 방법은 컴퓨터시스템에서 구동되는 임의의 응용프로그램의 악성코드 포함 여부를 정확하게 탐지할 수 있는 효과가 있다.
이하, 첨부된 도면을 참조하여 이 발명의 한 실시예에 따른 악성코드 탐지시스템 및 방법을 보다 상세하게 설명하면 다음과 같다.
컴퓨터시스템에 응용프로그램들이 실행되면, 해당 컴퓨터시스템의 드라이버정보 저장소에는 그 실행되는 응용프로그램의 커널레벨프로그램(통상적으로 커널드라이버라고 칭함) 이름들과, 각 커널드라이버가 참조하는 메모리 번지값이 저장된다. 이 드라이버정보 저장소에 저장된 드라이버 리스트의 모든 커널드라이버가 이 발명의 검사대상드라이버이다. 드라이버 리스트의 검사대상드라이버를 PE 구조체로 변환하면 해당 커널드라이버가 사용하고 있는 API 함수들과 해당 API 함수가 실 제 존재하는 메모리 번지 정보를 추출할 수 있다.
이 발명에서는 컴퓨터시스템에 구동되는 응용프로그램들 중 악성코드를 포함하는 응용프로그램을 악성코드프로그램이라고 하고, 악성코드에서 사용하는 API 함수들을 악성코드의심API라고 명명한다.
도 1은 이 발명의 한 실시예에 따른 악성코드 탐지시스템의 구성 블록도이다.
이 발명의 악성코드 탐지시스템은 드라이버정보저장소(1)에 저장된 드라이버 리스트 중 임의의 검사대상드라이버를 선택하는 커널드라이버검색부(11)와, 검사대상드라이버를 PE구조체로 변환하여 검사대상드라이버가 사용하고 있는 API 함수들을 확인하는 커널드라이버변환부(12)와, 검사대상드라이버가 사용하고 있는 API함수들 중 악성코드의심API가 포함되어 있는지를 분석하는 커널드라이버분석부(13)와, 검사대상드라이버가 사용하고 있는 악성코드의심API 및 파라미터값을 디어셈블링하여 상기 악성코드의심API가 악성코드API인지를 분석하는 악성코드분석부(14)를 포함한다. 이 발명의 악성코드 탐지시스템은 악성코드분석부(14)의 분석 결과, 악성코드API를 사용하는 검사대상드라이버의 작동을 차단하는 무력화처리부(15)를 더 포함한다.
커널드라이버검색부(11)는 드라이버정보 저장소(1)에 저장된 드라이버 리스트 중 임의의 검사대상드라이버를 선택한다. 커널드라이버변환부(12)는 검사대상드라이버를 PE 구조체로 변환하는데, 그러면 검사대상드라이버가 사용하고 있는 API 함수들의 리스트 정보가 얻어진다.
커널드라이버분석부(13)는 검사대상드라이버가 사용하고 있는 API 함수들 중 악성코드의심API가 포함되어 있는지를 분석한다. 여기서, 악성코드의심API는 키로거가 사용하는 키 입출력이나 키보드 포트 접근 관련 API 함수일 수도 있고, USB 입출력함수나 파일을 읽기 또는 저장하는 API 함수일 수도 있으며, 온라인게임핵이 사용하는 키보드나 마우스의 입력과 관련된 API 함수 또는 메모리 조작과 관련된 API 함수일 수도 있다.
커널드라이버분석부(13)는 검사대상드라이버가 사용하고 있는 API 함수들 중 악성코드의심API가 포함되어 있으면 해당 악성코드의심API가 실제 존재하는 메모리의 번지 정보를 추출한다. 이 악성코드의심API는 악성코드API일 수도 있고 아닐 수도 있으며, 악성코드분석부(14)는 해당 악성코드의심API가 악성코드API인지 아닌지를 분석한다.
악성코드분석부(14)는 악성코드의심API의 메모리 번지를 주변으로 기설정된 바이트(디어셈블링대상바이트)의 코드값을 추출하여 디어셈블링한다. 이때 디어셈블링하는 코드값에 해당 악성코드의심API와 그 악성코드의심API가 사용하는 파라미터값이 포함되도록 디어셈블링대상바이트를 설정한다. 악성코드분석부(14)는 디어셈블링된 악성코드의심API와 그 파라미터값을 분석하여 해당 악성코드의심API가 보호해야 할 자원에 접근하는지를 검사함으로써, 해당 악성코드의심API가 악성코드API인지 여부를 판단한다.
예컨대, 하드웨어와 관련된 악성코드의심API는 포트의 주소를 파라미터값으로 갖는다. 키보드보안을 하고자 할 경우 키보드 입출력에 관련된 악성코드의심 API(예컨대, ReadPortUChar API)가 파라미터값으로서 60h 또는 64h를 갖는다면, 그 악성코드의심API를 사용하는 검사대상드라이버는 키보드에 접근을 시도하는 악성코드로 판단한다.
무력화처리부(15)는 악성코드분석부(14)가 악성코드를 포함하는 것으로 판단한 검사대상드라이버를 무력화한다. 드라이버를 무력화하는 기술은 종래 공지된 기술을 단순 적용할 수 있다.
도 2는 이 발명의 한 실시예에 따른 악성코드 탐지시스템의 악성코드 탐지방법을 도시한 동작 흐름도이다.
먼저, 드라이버 리스트 중 검사대상드라이버를 선정한다(S21). 검사대상드라이버를 PE구조체로 변환하여 해당 검사대상드라이버가 사용하는 API함수들을 확인한다(S22). 그 API함수들 중 악성코드의심API가 포함되는지 분석하고(S23), 악성코드의심API와 파라미터값을 디어셈블링한다(S24). 그리고, 디어셈블링된 악성코드의심API와 파라미터값을 이용하여 해당 악성코드의심API가 악성코드API인지 분석한다(S25). 마지막으로, 단계 S25의 분석결과 악성코드API를 사용하는 검사대상드라이버를 무력화한다(S26).
상술한 도 1 및 도 2의 실시예에 따르면 커널드라이버가 악성코드를 포함하고 있으면 모두 무력화하여 그 실행을 차단한다. 그러나, 커널드라이버가 악성코드를 포함하고 있더라도 실제 유저레벨의 프로세스가 이를 실행시키지 않으면 해당 악성코드는 실행되지 않는데, 도 1 및 도 2의 실시예는 이러한 경우까지 모두 차단하는 문제점이 있다. 도 3은 이러한 문제를 해결하기 위한 해결방안이다.
도 3은 이 발명의 다른 실시예에 따른 악성코드 탐지시스템의 구성 블록도이다.
이 발명의 악성코드 탐지시스템은 드라이버정보저장소(1)에 저장된 드라이버 리스트 중 임의의 검사대상드라이버를 선택하는 커널드라이버검색부(31)와, 검사대상드라이버를 PE구조체로 변환하여 검사대상드라이버가 사용하고 있는 API 함수들을 확인하는 커널드라이버변환부(32)와, 검사대상드라이버가 사용하고 있는 API함수들 중 악성코드의심API가 포함되어 있는지를 분석하는 커널드라이버분석부(33)와, 검사대상드라이버가 사용하고 있는 악성코드의심API 및 파라미터값을 디어셈블링하여 상기 악성코드의심API가 악성코드API인지를 분석하고 악성코드API를 사용하는 검사대상드라이버의 드라이버핸들 및 악성코드API 정보를 공유메모리(2)에 저장하는 악성코드분석부(34)와, 상기 공유메모리에 저장된 드라이버핸들 정보를 이용하여 검사대상드라이버를 사용하는 유저프로세스 리스트를 조사하는 유저프로세스검색부(35)와, 유저프로세스 리스트의 각 유저프로세스가 상기 악성코드API를 호출하는지를 검사하는 유저프로세스 분석부(36)와, 악성코드API를 호출하는 유저프로세스를 무력화하는 무력화처리부(37)를 포함한다.
무력화처리부(37)는 검사대상드라이버의 드라이버핸들을 닫거나, 유저프로세스를 종료시킴으로써, 악성코드의 실행을 차단한다.
상기와 같이 구성된 악성코드 탐지시스템에서 커널드라이버검색부(31)와 커널드라이버변환부(32)와, 커널드라이버분석부(33)의 기능 및 동작은 도 1의 커널드라이버검색부(11)와 커널드라이버변환부(32)와 커널드라이버분석부(33)의 기능 및 동작과 동일한 바, 여기에서는 상세한 설명은 생략한다.
악성코드분석부(34)는 악성코드의심API의 메모리 번지를 주변으로 디어셈블링대상바이트의 코드값을 추출하여 디어셈블링하고, 디어셈블링된 악성코드의심API와 그 파라미터값을 분석하여 해당 악성코드의심API가 보호해야 할 자원에 접근하는지를 검사함으로써, 해당 악성코드의심API가 악성코드API인지 여부를 판단한다. 그리고, 악성코드분석부(34)는 검사대상드라이버가 악성코드API를 사용하는 것으로 판단되면, 해당 검사대상드라이버의 드라이버핸들 및 사용중인 악성코드API 정보를 공유메모리(2)에 저장한다.
유저프로세스검색부(35)는 공유메모리에 저장된 드라이버핸들 정보를 이용하여 검사대상드라이버를 사용하고 있는 유저프로세스들을 조사하여 유저프로세스 리스트를 만든다. 커널드라이버와 유저프로세스들은 일대일 매칭 관계가 아니므로, 검사대상드라이버를 사용하는 유저프로세스가 다수 존재하거나 없을 수도 있다.
유저프로세스분석부(36)는 유저프로세스 리스트의 유저프로세스가 검사대상드라이버에 포함된 악성코드API를 호출하는 지를 분석한다. 유저프로세스가 검사대상드라이버에 포함된 악성코드API를 호출할 경우, 악성코드가 실행되는 것이기 때문에 무력화처리부(37)는 해당 악성코드가 실행되지 못하도록 무력화 처리한다. 유저프로세스가 검사대상드라이버에 포함된 악성코드API를 호출하지 않은 경우에는 악성코드API의 악용 가능성이 없는 것이므로 검사대상드라이버와 유저프로세스가 정상적으로 동작하도록 한다.
무력화처리부(37)는 검사대상드라이버의 드라이버핸들을 닫거나, 유저프로세 스를 종료시킴으로써, 해당 악성코드가 실행되지 못하도록 무력화 처리한다.
도 4는 이 발명의 다른 실시예에 따른 악성코드 탐지시스템의 악성코드 탐지방법을 도시한 동작 흐름도이다.
먼저, 드라이버 리스트 중 검사대상드라이버를 선정한다(S41). 검사대상드라이버를 PE구조체로 변환하여 해당 검사대상드라이버가 사용하는 API함수들을 확인한다(S42). 그 API함수들 중 악성코드의심API가 포함되는지 분석하고(S43), 악성코드의심API와 파라미터값을 디어셈블링한다(S44). 그리고, 디어셈블링된 악성코드의심API와 파라미터값을 이용하여 해당 악성코드의심API가 악성코드API인지 분석한다(S45). 단계 S45의 분석결과, 악성코드API를 사용하는 검사대상드라이버의 드라이버의 드라이버핸들 및 사용중인 악성코드API 정보를 공유메모리에 저장한다(S46).
드라이버핸들 정보를 이용하여 검사대상드라이버를 사용하는 유저프로세스 리스트를 조사하고(S47), 해당 유저프로세스가 악성코드API를 호출하는지를 분석한다(S48). 마지막으로, 단계 S48의 분석결과 유저프로세스가 악성코드API를 호출할 경우에는 해당 악성코드의 실행을 무력화하는데(S49), 이는 해당 드라이버핸들을 닫거나 유저프로세스를 종료시킴으로써 이룰 수 있다.
이상에서 본 발명에 대한 기술사상을 첨부도면과 함께 서술하였지만, 이는 본 발명의 가장 양호한 실시예를 예시적으로 설명한 것이지 본 발명을 한정하는 것은 아니다. 또한, 이 기술분야의 통상의 지식을 가진 자라면 누구나 본 발명의 기술사상의 범주를 이탈하지 않는 범위 내에서 다양한 변형 및 모방이 가능함은 명백 한 사실이다.
도 1은 이 발명의 한 실시예에 따른 악성코드 탐지시스템의 기능 블록도,
도 2는 이 발명의 한 실시예에 따른 악성코드 탐지방법을 도시한 동작 흐름도,
도 3은 이 발명의 다른 실시예에 따른 악성코드 탐지시스템의 기능 블록도,
도 4는 이 발명의 다른 실시예에 따른 악성코드 탐지방법을 도시한 동작 흐름도이다.
< 도면의 주요 부분에 대한 부호의 간단한 설명 >
1 : 드라이버정보 저장소 2 : 공유메모리
11, 31 : 커널드라이버검색부 12, 32 : 커널드라이버변환부
13, 33 : 커널드라이버분석부 14, 34 : 악성코드분석부
15 : 무력화처리부 35 : 유저프로세스검색부
36 : 유저프로세스분석부 37 : 무력화처리부

Claims (16)

  1. 드라이버정보 저장소에 저장된 드라이버 리스트 중 임의의 검사대상드라이버를 선택하는 커널드라이버검색부와,
    상기 선택된 검사대상드라이버를 구조체로 변환하여 상기 검사대상드라이버에 포함된 API 함수 리스트 정보를 획득하는 커널드라이버변환부와,
    상기 검사대상드라이버에 포함된 API 함수 리스트 중 악성코드의심API를 추출하는 커널드라이버분석부와,
    상기 악성코드의심API가 저장된 메모리 번지로부터 상기 악성코드의심API 및 파라미터값을 추출하고 상기 추출된 악성코드의심API 및 파라미터값을 디어셈블링하여 상기 악성코드의심API가 보호대상자원에 접근하는지 판단하며 상기 악성코드의심API가 상기 보호대상자원에 접근하는지 여부에 따라 상기 악성코드의심API가 악성코드API인지를 판단하는 악성코드분석부를 포함한 것을 특징으로 하는 악성코드 탐지시스템.
  2. 제 1 항에 있어서, 상기 악성코드분석부의 분석 결과 상기 악성코드의심API가 악성코드API이면 상기 검사대상드라이버의 동작을 무력화 처리하는 무력화처리부를 더 포함한 것을 특징으로 하는 악성코드 탐지시스템.
  3. 제 2 항에 있어서, 상기 무력화처리부는 상기 검사대상드라이버의 드라이버핸들을 닫는 것을 특징으로 하는 악성코드 탐지시스템.
  4. 악성코드 탐지시스템이 드라이버정보 저장소에 저장된 드라이버 리스트 중 임의의 검사대상드라이버를 선택하는 커널드라이버검색단계와,
    상기 악성코드 탐지시스템이 상기 선택된 검사대상드라이버를 구조체로 변환하여 상기 검사대상드라이버에 포함된 API 함수 리스트 정보를 획득하는 커널드라이버변환단계와,
    상기 악성코드 탐지시스템이 상기 검사대상드라이버에 포함된 API 함수 리스트 중 악성코드의심API를 추출하는 커널드라이버분석단계와,
    상기 악성코드 탐지시스템이 상기 악성코드의심API가 저장된 메모리 번지로부터 상기 악성코드의심API 및 파라미터값을 추출하고 상기 추출된 악성코드의심API 및 파라미터값을 디어셈블링하여 상기 악성코드의심API가 보호대상자원에 접근하는지 판단하며 상기 악성코드의심API가 상기 보호대상자원에 접근하는지 여부에 따라 상기 악성코드의심API가 악성코드API인지를 판단하는 악성코드분석단계를 포함한 것을 특징으로 하는 악성코드 탐지방법.
  5. 제 4 항에 있어서, 상기 악성코드분석단계의 분석 결과 상기 악성코드의심API가 악성코드API이면, 상기 악성코드탐지시스템이 상기 검사대상드라이버의 동작을 무력화 처리하는 무력화처리단계를 더 포함한 것을 특징으로 하는 악성코드 탐지방법.
  6. 제 5 항에 있어서, 상기 무력화처리단계는 상기 검사대상드라이버의 드라이버핸들을 닫는 것을 특징으로 하는 악성코드 탐지방법.
  7. 드라이버정보 저장소에 저장된 드라이버 리스트 중 임의의 검사대상드라이버를 선택하는 커널드라이버검색부와,
    상기 검사대상드라이버를 구조체로 변환하여 상기 검사대상드라이버에 포함된 API 함수 리스트 정보를 획득하는 커널드라이버변환부와,
    상기 검사대상드라이버에 포함된 API 함수 리스트 중 악성코드의심API를 추출하는 커널드라이버분석부와,
    상기 악성코드의심API가 저장된 메모리 번지로부터 상기 악성코드의심API 및 파라미터값을 추출하고 상기 추출된 악성코드의심API 및 파라미터값을 디어셈블링하여 상기 악성코드의심API가 보호대상자원에 접근하는지 판단하며 상기 악성코드의심API가 상기 보호대상자원에 접근하는지 여부에 따라 상기 악성코드의심API가 악성코드API인지를 판단하는 악성코드분석부와,
    상기 악성코드분석부의 분석결과 상기 검사대상드라이버에 상기 악성코드API가 포함되면 상기 검사대상드라이버를 사용하는 유저프로세스를 조사하는 유저프로세스검색부와,
    상기 유저프로세스가 상기 악성코드API를 호출하는지 분석하여 상기 검사대상드라이버에 포함된 상기 악성코드API가 실제 실행되는지를 탐지하는 유저프로세스분석부를 포함한 것을 특징으로 하는 악성코드 탐지시스템.
  8. 제 7 항에 있어서, 상기 유저프로세스분석부의 분석 결과 상기 유저프로세스가 상기 악성코드API를 호출하면 상기 검사대상드라이버의 동작을 무력화 처리하는 무력화처리부를 더 포함한 것을 특징으로 하는 악성코드 탐지시스템.
  9. 제 8 항에 있어서, 상기 무력화처리부는 상기 검사대상드라이버의 드라이버핸들을 닫는 것을 특징으로 하는 악성코드 탐지시스템.
  10. 제 8 항에 있어서, 상기 무력화처리부는 상기 유저프로세스를 종료시키는 것을 특징으로 하는 악성코드 탐지시스템.
  11. 제 8 항에 있어서, 상기 악성코드분석부는 상기 검사대상드라이버에 상기 악 성코드API가 포함되면 상기 검사대상드라이버의 드라이버핸들과 악성코드API 정보를 공유메모리에 저장하고, 상기 유저프로세스검색부는 상기 검사대상드라이버의 드라이버핸들을 이용하여 상기 검사대상드라이버를 사용하는 유저프로세스를 조사하는 것을 특징으로 하는 악성코드 탐지시스템.
  12. 악성코드 탐지시스템이 드라이버정보 저장소에 저장된 드라이버 리스트 중 임의의 검사대상드라이버를 선택하는 커널드라이버검색단계와,
    상기 악성코드 탐지시스템이 상기 검사대상드라이버를 구조체로 변환하여 상기 검사대상드라이버에 포함된 API 함수 리스트 정보를 획득하는 커널드라이버변환단계와,
    상기 악성코드 탐지시스템이 상기 검사대상드라이버에 포함된 API 함수 리스트 중 악성코드의심API를 추출하는 커널드라이버분석단계와,
    상기 악성코드 탐지시스템이 상기 악성코드의심API가 저장된 메모리 번지로부터 상기 악성코드의심API 및 파라미터값을 추출하고 상기 추출된 악성코드의심API 및 파라미터값을 디어셈블링하여 상기 악성코드의심API가 보호대상자원에 접근하는지 판단하며 상기 악성코드의심API가 상기 보호대상자원에 접근하는지 여부에 따라 상기 악성코드의심API가 악성코드API인지를 판단하는 악성코드분석단계와,
    상기 악성코드 탐지시스템이 상기 악성코드분석단계의 판단결과 상기 검사대상드라이버에 상기 악성코드API가 포함되면 상기 검사대상드라이버를 사용하는 유저프로세스를 조사하는 유저프로세스검색단계와,
    상기 악성코드 탐지시스템이 상기 유저프로세스가 상기 악성코드API를 호출하는지 분석하여 상기 검사대상드라이버에 포함된 상기 악성코드API가 실제 실행되는지를 탐지하는 유저프로세스분석단계를 포함한 것을 특징으로 하는 악성코드 탐지방법.
  13. 제 12 항에 있어서, 상기 유저프로세스분석단계의 탐지 결과 상기 유저프로세스가 상기 악성코드API를 호출하면 상기 악성코드 탐지시스템이 상기 검사대상드라이버의 동작을 무력화 처리하는 무력화처리단계를 더 포함한 것을 특징으로 하는 악성코드 탐지방법.
  14. 제 13 항에 있어서, 상기 무력화처리단계는 상기 검사대상드라이버의 드라이버핸들을 닫는 것을 특징으로 하는 악성코드 탐지방법.
  15. 제 13 항에 있어서, 상기 무력화처리단계는 상기 유저프로세스를 종료시키는 것을 특징으로 하는 악성코드 탐지방법.
  16. 제 12 항에 있어서, 상기 악성코드분석단계는 상기 검사대상드라이버에 상기 악성코드API가 포함되면 상기 검사대상드라이버의 드라이버핸들과 악성코드API 정보를 공유메모리에 저장하고, 상기 유저프로세스검색단계는 상기 검사대상드라이버의 드라이버핸들을 이용하여 상기 검사대상드라이버를 사용하는 유저프로세스를 조사하는 것을 특징으로 하는 악성코드 탐지방법.
KR1020090058960A 2009-06-30 2009-06-30 악성코드 탐지시스템 및 방법 KR101161008B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020090058960A KR101161008B1 (ko) 2009-06-30 2009-06-30 악성코드 탐지시스템 및 방법
PCT/KR2010/002375 WO2011002146A2 (ko) 2009-06-30 2010-04-16 악성코드 탐지시스템 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020090058960A KR101161008B1 (ko) 2009-06-30 2009-06-30 악성코드 탐지시스템 및 방법

Publications (2)

Publication Number Publication Date
KR20110001426A KR20110001426A (ko) 2011-01-06
KR101161008B1 true KR101161008B1 (ko) 2012-07-02

Family

ID=43411537

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020090058960A KR101161008B1 (ko) 2009-06-30 2009-06-30 악성코드 탐지시스템 및 방법

Country Status (2)

Country Link
KR (1) KR101161008B1 (ko)
WO (1) WO2011002146A2 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170035507A (ko) * 2015-09-23 2017-03-31 한국전자통신연구원 확장 코드를 이용한 어플리케이션 분석 장치 및 방법

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101206853B1 (ko) 2011-06-23 2012-11-30 주식회사 잉카인터넷 네트워크 접근 제어시스템 및 방법
CN103186740B (zh) * 2011-12-27 2015-09-23 北京大学 一种Android恶意软件的自动化检测方法
KR101404882B1 (ko) * 2013-01-24 2014-06-11 주식회사 이스트시큐리티 행위를 기반으로 한 악성코드 분류시스템 및 분류방법
CN103150513B (zh) * 2013-03-20 2015-12-09 北京奇虎科技有限公司 拦截应用程序中的植入信息的方法及装置
US10242200B1 (en) * 2015-03-06 2019-03-26 Tripwire, Inc. Static analysis of vulnerabilities in application packages

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU7738500A (en) * 1999-10-01 2001-05-10 Infraworks Corporation Back-channeling in a memory vault system
US7743257B2 (en) * 2002-06-27 2010-06-22 Nxp B.V. Security processor with bus configuration
KR100509650B1 (ko) * 2003-03-14 2005-08-23 주식회사 안철수연구소 코드 삽입 기법을 이용한 악성 스크립트 감지 방법
US7603715B2 (en) * 2004-07-21 2009-10-13 Microsoft Corporation Containment of worms
KR100704721B1 (ko) * 2004-09-10 2007-04-06 (주) 세이프아이 실시간 감시를 통한 컴퓨터 보호 방법 및 이에 따라 보호되는 컴퓨터 보호 시스템과 실행가능한 파일이 보호되는 시스템
KR100628869B1 (ko) * 2004-12-14 2006-09-27 한국전자통신연구원 악성 코드가 숨겨진 오피스 문서 탐지장치 및 그 방법
KR100666562B1 (ko) * 2005-08-11 2007-01-09 주식회사 웨어플러스 커널 드라이버 및 프로세스 보호 방법
US20090064337A1 (en) * 2007-09-05 2009-03-05 Shih-Wei Chien Method and apparatus for preventing web page attacks

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
논문(2007.12)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170035507A (ko) * 2015-09-23 2017-03-31 한국전자통신연구원 확장 코드를 이용한 어플리케이션 분석 장치 및 방법
KR101724412B1 (ko) 2015-09-23 2017-04-10 한국전자통신연구원 확장 코드를 이용한 어플리케이션 분석 장치 및 방법

Also Published As

Publication number Publication date
WO2011002146A2 (ko) 2011-01-06
WO2011002146A3 (ko) 2011-02-17
KR20110001426A (ko) 2011-01-06

Similar Documents

Publication Publication Date Title
Carmony et al. Extract Me If You Can: Abusing PDF Parsers in Malware Detectors.
Kapravelos et al. Revolver: An automated approach to the detection of evasive web-based malware
RU2526716C2 (ru) Эвристический способ анализа кода
JP4732484B2 (ja) 仮想環境を利用した非実行ファイル内のエクスプロイトコード分析方法及び装置
US20070152854A1 (en) Forgery detection using entropy modeling
KR101161008B1 (ko) 악성코드 탐지시스템 및 방법
JP5265061B1 (ja) 悪意のあるファイル検査装置及び方法
US20100011441A1 (en) System for malware normalization and detection
Agosta et al. Automated security analysis of dynamic web applications through symbolic code execution
TW201533604A (zh) 產生候選鈎點以偵測惡意程式之方法及其系統
CN106611122A (zh) 基于虚拟执行的未知恶意程序离线检测系统
Van Overveldt et al. FlashDetect: ActionScript 3 malware detection
Cimitile et al. Formal methods meet mobile code obfuscation identification of code reordering technique
KR101110308B1 (ko) 실행압축 특성을 이용한 악성코드 탐지장치 및 그 방법
KR101640479B1 (ko) 소스코드기반 소프트웨어 취약점 공격행위 분석시스템
Manes et al. The art, science, and engineering of fuzzing: A survey
CN116366377B (zh) 恶意文件检测方法、装置、设备及存储介质
KR101327740B1 (ko) 악성코드의 행동 패턴 수집장치 및 방법
Ladisa et al. Towards the detection of malicious java packages
CN111291377A (zh) 一种应用漏洞的检测方法及系统
CN113901459B (zh) 固件内部二进制程序脆弱性发现方法及装置
Shehu et al. Towards the usage of invariant-based app behavioral fingerprinting for the detection of obfuscated versions of known malware
CN107368740B (zh) 一种针对数据文件中可执行代码的检测方法及系统
Albabtain et al. The process of reverse engineering GPU malware and provide protection to GPUs
Agrawal et al. Preventing insider malware threats using program analysis techniques

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20190617

Year of fee payment: 8