KR100926115B1 - 특정 이벤트/조건에서 동작하는 윈도우용 악성 코드탐지를 위한 프로그램 자동 분석 장치 및 방법 - Google Patents

특정 이벤트/조건에서 동작하는 윈도우용 악성 코드탐지를 위한 프로그램 자동 분석 장치 및 방법 Download PDF

Info

Publication number
KR100926115B1
KR100926115B1 KR1020070132763A KR20070132763A KR100926115B1 KR 100926115 B1 KR100926115 B1 KR 100926115B1 KR 1020070132763 A KR1020070132763 A KR 1020070132763A KR 20070132763 A KR20070132763 A KR 20070132763A KR 100926115 B1 KR100926115 B1 KR 100926115B1
Authority
KR
South Korea
Prior art keywords
execution
program
performance
flow
analysis
Prior art date
Application number
KR1020070132763A
Other languages
English (en)
Other versions
KR20090065277A (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 KR1020070132763A priority Critical patent/KR100926115B1/ko
Priority to US12/270,897 priority patent/US8584101B2/en
Publication of KR20090065277A publication Critical patent/KR20090065277A/ko
Application granted granted Critical
Publication of KR100926115B1 publication Critical patent/KR100926115B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • G06F11/3612Software analysis for verifying properties of programs by runtime analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • 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/53Monitoring 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 executing in a restricted environment, e.g. sandbox or secure virtual machine

Abstract

본 발명은 특정 이벤트가 발생하거나 특정 프로그램 수행 조건이 만족하는 경우에만 악성 행위를 실행하도록 작성된 윈도우용 악성 코드를 탐지하기 위한 프로그램 자동 분석 장치에 관한 것이다.
본 발명에 따른 프로그램 자동 분석 장치는 분석 대상 프로그램의 명령어를 분석하고 상기 명령어의 적어도 한번 이상의 강제 수행을 통해 프로그램 수행 정보를 생성하는 자동 분석 엔진과, 상기 자동 분석 엔진에 의해 생성된 프로그램 수행 정보를 저장하는 수행 정보 DB와, 상기 수행 정보 DB에 저장된 수행 정보에 기반하여 상기 분석 대상 프로그램의 수행 흐름을 분석하는 수행 흐름 분석부와, 상기 수행 흐름 분석부에 의해 분석된 수행 흐름 정보에 기초하여 사용자에게 수행 결과를 제공하는 수행 결과 제공부를 포함한다.
백도어, 트로이 목마, 봇, IRC 봇, 윈도우, 악성코드, 행위 분석, 디버거

Description

특정 이벤트/조건에서 동작하는 윈도우용 악성 코드 탐지를 위한 프로그램 자동 분석 장치 및 방법{Apparatus and method for automatically analyzing a program for detecting malicious codes triggered under an certain event/context}
본 발명은 윈도우 운영체제에서 동작하는 응용 프로그램의 행위를 자동 분석하는 장치 및 방법에 관한 것으로서, 구체적으로는 특정 이벤트가 발생하거나 특정 프로그램 수행 조건이 만족하는 경우에만 악성 행위를 실행하도록 작성된 윈도우용 악성 코드를 탐지하기 위한 프로그램 자동 분석 장치 및 방법에 관한 것이다.
현재 악성 코드 분석은 주로 보안 업체에서 행해지고 있고 악성 코드 분석을 통해 악성 코드를 탐지할 수 있는 패턴을 생성한다. 이러한 악성 코드 분석은 분석자의 능력과 악성 코드의 분석 방해 정도에 따라 적게는 1,2시간 길게는 하루 이상의 시간을 요구한다. 또한, 악성 코드 샘플이 없는 새로운 악성 코드나 기존 악성 코드의 변종이 발생한 경우에 패턴 매칭에 의한 악성 코드 탐지 기법은 악성 코드에 능동적으로 대처하는데 한계가 있다.
특히, 트로이 목마, 백도어, 봇과 같은 악성 코드는 보통의 경우 다른 윈도 우 응용프로그램과 마찬가지로 정상적인 동작을 수행하다가, 특정 이벤트(예를 들어, 네트워크를 통해 특정 패킷을 수신하거나, 외부 URL에 접속해서 명령어를 다운로드 받는 경우 등)가 발생하거나, 특정 프로그램 수행 조건(예를 들어, 특정 시간, 디버깅 모드가 아닌 경우, 가상머신이 아닌 경우 등)이 만족하는 경우에만 정해진 악성 행위를 하도록 작성된 악성 코드이다. 하나의 프로그램 속에 정상 행위와 악성 행위가 같이 존재하지만, 일반적인 경우에는 악성 행위를 행하지 않기 때문에 정적/동적 분석 방식에 의한 자동 분석으로는 정확한 행위 분석이 이루어지기 어렵다.
정적 분석의 경우, 정적 분석을 어렵게 하는 다양한 기법들이 소개되었고, 특히 실행 압축의 경우 정적 분석을 통해서는 실행 압축을 해제하는 부분만이 분석되기 때문에 실제 실행 파일이 어떠한 행위를 하는지에 대한 분석은 어렵다.
이러한 한계를 극복하기 위해 최근 동적 분석을 활용한 프로그램의 행위 분석 기법이 많이 연구되고 있다. 이러한 동적 분석 기법의 대표적인 예로 Sandbox 분석 기법이 있다. Sandbox 기법은 악성코드로 의심되는 프로그램을 사용하고 있는 시스템과 분리하여 수행하면서, 프로그램의 행위를 다양한 방식( 예를 들어, API 후킹)을 통해 관찰하는 방식이다. 그러나, 이러한 동적 기법 역시 앞에서 설명한 트로이 목마, 백도어, 봇과 같은 악성코드의 행위를 정확히 분석하기 어렵다. 악성 코드가 다양한 방법을 통해 자신이 수행되고 있는 환경이 Sandbox 내부인지를 판단하여 Sandbox 내부인 경우는 정상적인 행위만 하도록 하기 때문에 분석에 한계가 존재한다.
따라서, 본 발명의 목적은 특정 이벤트가 발생하거나 특정 프로그램 수행 조건이 만족하는 경우에만 악성 행위를 실행하도록 작성된 악성 코드의 행위를 정확히 분석하기 위한 장치 및 방법을 제공하는 것이다.
본 발명의 다른 목적은 등록된 이벤트 핸들러 및 조건 분기문에서의 조건 만족/불만족인 경우의 명려어를 적어도 한번씩 수행함을 보장하는 강제 수행을 통해 특정 이벤트를 기다리거나 프로그램 수행 환경이 특정 조건을 만족시켜야만 동작하는 악성 코드의 행위를 자동 분석하기 위한 장치 및 방법을 제공하는 것이다.
본 발명의 일 특징에 따른 프로그램 자동 분석 장치는, 분석 대상 프로그램의 명령어를 분석하고 상기 명령어의 적어도 한번 이상의 강제 수행을 통해 프로그램 수행 정보를 생성하는 자동 분석 엔진과, 상기 자동 분석 엔진에 의해 생성된 프로그램 수행 정보를 저장하는 수행 정보 DB와, 상기 수행 정보 DB에 저장된 수행 정보에 기반하여 상기 분석 대상 프로그램의 수행 흐름을 분석하는 수행 흐름 분석부와, 상기 수행 흐름 분석부에 의해 분석된 수행 흐름 정보에 기초하여 사용자에게 수행 결과를 제공하는 수행 결과 제공부를 포함한다.
본 발명의 다른 특징에 따른 프로그램 자동 수행 방법은, 분석 대상 프로그램의 명령어를 분석하고 상기 명령어의 적어도 한번 이상의 강제 수행을 통해 프로그램 수행 정보를 생성 및 저장하는 단계와, 상기 저장된 수행 정보에 기반하여 상 기 분석 대상 프로그램의 수행 흐름을 분석하는 단계와, 상기 분석된 수행 흐름 정보에 기초하여 사용자에게 수행 결과를 제공하는 단계를 포함한다.
일실시예에서, 상기 강제 수행은 ,분석 대상 프로그램의 명령어가 조건 분기문이거나 API 호출 명령어인지를 판단하는 단계와, 상기 명령어가 조건 분기문인 것으로 판단되면 해당 조건을 만족하는 경우에 후속하는 명령어 및 그렇지 않은 경우에 후속하는 명령어 모두를 수행하고 수행된 명령어를 저장하는 단계와, 상기 명령어가 API 호출인 것으로 판단되면 호출 처리 방식이 정상 수행인지 판단하는 단계와, 정상 수행인 것으로 판단되면 해당 호출 명령어를 수행하고, 그렇지 않은 경우에 사용자에 의해 등록된 핸들러를 수행하는 단계를포함한다.
본 발명은 프로그램의 행위 분석에 있어, 강제 수행을 통해 프로그램 에 포함된 모든 스테이트먼트(statement)를 적어도 한번씩 자동 수행하기 때문에, 특정 이벤트가 발생하거나 특정 프로그램 수행 조건이 만족하는 경우에만 실행되는 악성 코드의 행위의 분석도 가능하다. 본 발명에 따르면, 악성코드 분석에 시간과 인력을 줄일 수 있기 때문에, 악성코드에 대해 신속히 대응할 수 있다.
또한, 본 발명은 임의의 프로그램의 행위에 대한 분석 결과를 제공함으로써 상기 분석 결과가 해당 프로그램의 악성 여부를 판단할 수 있는 근거 자료로 활용될 수 있도록 해준다. 임의의 프로그램이 실행되었을 경우 이루어지는 행위에 대한 분석 자료는 새로운 변종 및 아직 알려지지 않은 악성 코드를 탐지할 수 있는 방법을 개발하기 위한 근거 자료로서 많이 활용될 것이라 기대한다.
이하에서는 본 발명을 첨부된 도면에 도시된 실시예들과 관련하여 예시적으로 상세히 설명하겠다. 그러나, 이하의 상세한 설명은 단지 예시적인 목적으로 제공되는 것이며 본 발명의 개념을 임의의 특정된 물리적 구성에 한정하는 것으로 해석되어서는 안 될 것이다.
도 1은 본 발명의 일 실시예에 따른 프로그램 자동 분석 장치를 도시한다. 도시된 바와 같이, 프로그램 자동 분석 장치(100)는, 자동 분석 엔진(110)과, 수행 정보 DB(130), 수행 흐름 분석부(140) 및 수행 결과 분석부(120)를 포함한다.
자동 분석 엔진(110)은, 프로그램의 명령어 분석 및 강제 수행을 통해 프로그램 수행 정보를 생성하기 위해, 디버거(111), 역어셈블러(112) 및 강제 수행부(113)를 포함한다.
디버거(111)는 분석 대상 프로그램의 명령어를 수행하는 프로그램으로서, 일실시예에서 윈도우에서 제공하는 윈도우 디버거 엔진이 사용될 수 있다. 본 발명에서 디버거(111)는 매 명령어를 수행하기 이전에 강제 수행 여부를 판단하는 강제 수행부(113)에 제어를 넘긴다.
역어셈블러(112)는 디버거(111)에서 수행할 명령어를 기계어로 변환한다.
강제 수행부(113)는 역어셈블러(112)에 의해 기계어로 변환된 명령어를 분석하여 조건 분기문 또는 API 호출인지를 판단하고 조건 분기문 및 API 핸들러의 강제 수행을 디버거(111)에 지시한다. 강제 수행을 위해, 조건 분기문 또는 API 호출을 위한 체크 포인트를 수행정보 DB(130)에 기록한다. 예를 들어, 조건 분기문인 경우 조건에 만족하는 분기로 수행 흐름이 택해진다면, 그렇지 않은 경우의 분기로 수행 흐름이 택해지도록 조작된 분석대상 프로세스가 사용하는 메모리 영역 및 레지스터 값을 포함하는 수행환경정보(context)를 체크포인트로서 수행정보 DB(130)에 기록한다. 본 발명의 특징은 이벤트 핸들러를 등록하는 부분과 기계어 수순에서 조건 분기가 일어나는 명령어의 경우에 대해 적어도 한번씩 수행을 보장하는 강제 수행을 통해 프로그램 분석을 수행하는 것이다. 특정 이벤트가 발생하거나 프로그램 수행 환경이 특정 조건을 만족시켜야만 수행되는 프로그램내의 명령어를 강제 수행시킴으로써 프로그램에 잠재되어 있는 악성 행위를 분석 및 탐지하는 것이다. "강제 수행"이란 프로그램의 수행환경(Context)을 변경하여 프로그래램의 수행 흐름을 임의로 변경하는 것을 의미한다. 예를 들어, "jnz 0x445555"라는 명령어는 플래그 레지스터의 ZF 비트가 0이고 EAX 레지스터의 값이 0이 아닌 경우에는 0x445555로 분기하고, 그렇지 않은 경우엔 그 다음 명령을 수행하는 명령어라고 가정한다. 강제 수행을 수행하지 않으면, 해당 프로그램은 0x445555로 분기하거나, 그 다음 명령을 수행하는 두 가지 경우중 하나의 경우만 수행한다. 그러나, 강제 수행을 하게 되면 두 가지 경우를 적어도 한번은 수행하게 된다. 예를 들어, 특정 시간에 특정 사이트로 DDoS 공격을 하는 악성코드를 분석하는 경우에 특정 시간이 되지 않으면 악성코드는 DDoS 공격을 하지 않기 때문에 제대로 된 분석 결과를 얻을 수 없다. 그러나, 강제 수행 기법을 적용하게 되면 시간을 비교하는 구문에서 조건을 만족하는 경우와 그렇지 않은 경우 두가지 경우를 전부 수행하기 때문에 악성코드에 DDoS 공격을 하는 행위가 포함되어 있음을 확인할 수 있다.
윈도우 시스템에서 이벤트는 주로 제공되는 API에 의해 등록되기 때문에, 이벤트 핸들러의 주소를 알 수 있다. 본 발명은 이렇게 얻어진 주소를 이용하여 프로그램의 수행 환경을 변경함으로써 실제 이벤트가 발생하지 않았더라도 등록된 모든 이벤트 핸들러에서 수행하는 행위를 분석할 수 있다. 또한, 모든 조건 분기문에서 조건이 맞는 경우와 맞지 않는 경우에 대해 강제로 수행하도록 하여 결과적으로 프로그램에 기술된 모든 스테이트먼트(statement)를 적어도 한번은 수행 및 분석 할 수 있다.
본 발명의 강제 수행부(113)는 효율적인 강제 수행을 위해 다음 몇가지 중요한 특징을 갖는다.
첫째, 가능한 프로그램 수행 환경을 정확히 유지한다. 이를 위해, 본 발명은 강제 분기의 체크 포인트에서의 프로그램 수행 환경(context)을 스택에 저장한다.
둘째, 루프내의 조건 분기문이 있는 경우 하나의 수행 흐름내에서 하나의 조건 분기문은 한번만 수행되도록 제어한다. 프로그램이 루프를 수행하고, 루프내에 조건 분기문이 있는 경우에 매번 루프를 수행할 때마다 조건 분기문을 강제 수행하게 되면 수행 경로가 기하급수적으로 증가할 수 있다. 따라서, 본 발명은 이를 방지하기 위해 코드 커버리지(Code coverage)가 아닌 스테이트먼트 커버리지(statement coverage)를 100% 달성하는 것을 목표로 한다.
셋째, 프로그램이 무한 루프에 빠지지 않도록 한다. 이를 위해, 본 발명은 사용자에게 수행 흐름에 걸리는 시간을 기본 블록(Basic Block) 단위로 알려주고, 사용자가 분석 시간이 길다고 판단하면 분석을 일시 정지하고 분석되는 코드 부분을 사용자에게 보여줌으로써 사용자로 하여금 무한 루프 여부를 판단하고, 무한 루프로 판단한 경우에는 현재 흐름 분석을 중지하고 다른 수행 흐름 분석을 진행할 수 있도록 해준다.
다시 도 1을 참조하여, 수행 정보 DB(130)은 강제 수행부(113)에 의해 처리된 체크포인트 정보를 저장함과 동시에 강제 수행부(110)에 의해 수행된 명령어들을 저장하는 장소이다. 일실시예에서, 체크포인트는 스택 구조로 저장된다.
수행 흐름 분석부(140)는 수행 정보 DB(130)를 참조하여 강제 수행부(110)에 의해 수행된 명령어들을 함수 단위로 분석하며, 시스템 콜 호출 정보, API 명칭, 제어 흐름 그래프(Control Flow Graph:CFG), 호출 사이트 흐름 그래프(Call Site Flow Graph: CSFG) 등을 생성하여 수행 정보 DB(130)에 기록한다.
수행 결과 제공부(120)는 수행 정보 DB(140)에 기록된 정보에 기하여, 특정 조건 분기문에 사용된 변수값 추적, 제어 흐름 그래프(CFG), 호출 사이트 흐름 그래프(CSFG), 특정 함수의 호출 위치 추적 등을 포함하는 사용자 질의에 응답한다.
도 2는 본 발명의 일실시예에 따른 강제 수행 알고리즘을 도시한 흐름도이다.
프로그램 분석이 시작되면, 강제 수행부(113)는 우선 스택에 분석대상 프로그램의 프로세스 수행 환경 정보(Context)를 저장한다(200).
단계(202)에서, 강제 수행부(113)는 스택을 검사하여 저장된 Context가 있는지 여부를 판단한다. 스택이 비어 있다면 강제 수행 절차는 종료된다.
반면, 스택에 저장된 Context가 있는 경우에, 스택에서 하나의 Context를 꺼낸(pop) 후(220), 디버거(111)에서 동작하고 있는 분석 대상 프로그램 프로세스의 Context로 설정하고 새로운 수행 흐름을 시작한다(230).
디버거(111)가 매 명령어를 수행하기 전에 상기 강제 수행부(113)로 제어를 넘기면, 강제 수행부(113)는 명령어 모니터링 과정에서 상기 디버거(110)에서 수행하려는 명령어를 확인한다(240).
강제 수행부(113)는 해당 명령어가 시스템 콜 또는 윈도우에서 제공하는 API의 호출인지를 판단한다(250). 시스템 콜 또는 윈도우에서 제공하는 API 호출인 것으로 판단되면, 호출 처리 방식이 정상 수행인지 판단한다(255). 정상 수행으로 설정된 경우라면 해당 호출 명령어를 수행한다(285). 그러나, 정상 수행이 아닌 경우라면, 사용자가 등록한 핸들러가 있는지 확인한다(270). 핸들러가 있는 경우, 등록된 핸들러로 프로그램 제어를 넘겨 핸들러를 수행한다(280). 정상 수행도 아니고, 등록된 핸들러도 없는 경우는 해당 호출을 무시하고 단계(290)로 진행한다.
일실시예에서, 쓰레드 생성 API인 CreateRemoteThread() 또는 CreateThread()가 호출되었을 경우, API 핸들러에서 호출된 API의 인자를 확인하여, 파라미터와 쓰레드 함수(ThreadProc)의 값을 얻은 뒤, 분석대상 프로그램의 프로세스가 현재 사용하는 메모리 영역과 CPU 레지스터 정보를 저장하고, 쓰레드 함수의 시작 주소로 EIP를 변경하여 쓰레드를 수행한다. 따라서, 실제 쓰레드를 생성하지 않고서 쓰레드 내부의 행위를 분석할 수 있게 된다.
유사하게, Callback 함수를 등록하는 API에 대해서도 API 핸들러에서 등록되 는 Callback 함수의 주소를 얻은 뒤, Callback 함수를 강제 수행함으로써 Callback 함수의 행위를 분석할 수 있다.
핸들러 수행이 완료되면 현재 수행 흐름의 종료 여부를 판단한다(290). 등록된 핸들러가 없는 경우에는 바로 현재 수행 흐름의 종료 여부를 판단한다(290).
한편, 단계(250)에서 API 호출이 아닌 것으로 판단된 경우에, 해당 명령어가 조건 분기문인지 판단한다(265). 조건 분기문이 아닌 경우, 해당 명령어를 수행하고(285), 현재 수행 흐름의 종료 여부를 판단한다(290). 해당 명령어가 조건 분기문인 경우, 명령어의 주소 값과 명령어 비교를 통해 현재 수행 흐름에서 처음 수행하는 조건 분기문인지 판단한다(260).
처음 수행하는 조건 분기문인 경우에, 강제 분기를 위해 프로그램의 Context(예, PC(또는 EIP), 플래그 레지스터(Flag Register) 값, 조건 비교에 사용된 변수값)를 변경하여 스택에 저장한다(275). 강제 분기를 위한 변수값은 심볼 표현 매칭(Symbolic Expression Matching) 기법에 의해 얻을 수 있다. 다음, 단계(280)로 진행하여 해당 명령어를 수행하고, 단계(290)로 진행한다. 예를 들어, 조건분기문이 if(A==B) ... 라고 하면, 이는 A,B의 값을 비교하는 cmp 계열의 명령어와 Jcc 계열의 명령어(jne, je, jnz 등등)의 조합으로 표현되는데, cmp는 플래그 레지스터의 값을 변경하고, 이 변경된 값에 따라 jne, je등의 분기를 수행하는 명령어이다. 여기서, a=10, b=5 if(a>b) a=1; else b=1 이라고 하면 정상적으로는 a=1이라는 구문이 수행되어야 하는데, 이 시점에서 b=1이 수행될 수 있도록 하는게 강제수행이다. 따라서, 강제수행을 위해 다음 EIP를 b=1로 지정하고, a>b(cmp 명 령)의 결과가 저장된 플래그 레지스터의 값을 변경한다는 의미이다.
반면에, 해당 명령어가 이미 수행되었던 조건 분기문인 경우에는 Context를 저장하지 않고 해당 명령어를 수행한다. 이는 프로그램 루프 내에 조건 분기문이 존재하는 경우에 매번 루프를 수행할 때마다 조건 분기문에 의해 수행해야 하는 수행 경로가 반복적으로 증가하는 것을 방지하기 위해 하나의 수행 흐름내에서 하나의 조건 분기문은 한번만 강제 수행되도록 하기 위함이다.
단계(290)에서 수행흐름이 종료되었는지 판단하고, 종료되지 않은 경우에는 명령어 모니터링 단계(240)로 진행하고, 종료된 경우에는 새로운 수행 흐름을 시작하기 위해 단계(210)로 진행하여 스택에 저장된 Context가 있는지 확인한다.
본 발명은 상기 강제 수행 알고리즘을 통해 프로그램의 수행 환경을 변경함으로써 실제 이벤트가 발생하지 않았더라도 등록된 모든 이벤트 핸들러에서 수행하는 행위를 분석할 수 있고, 모든 조건 분기문에서 조건이 맞는 경우와 맞지 않는 경우 모두에 대하여 강제로 수행되어 결과적으로 프로그램에 기술된 모든 스테이트먼트(statement)가 적어도 한번은 수행되도록 함으로써, 특정 조건 또는 특정 이벤트의 발생 경우에만 동작하는 악성 코드의 행위를 분석 및 탐지를 가능케 한다.
도 3은 도 2에 도시된 강제 수행 절차의 예를 보여주는 도면이다. 도 3의 각 노드를 프로그램 명령어들이라고 생각하고, 정상적인 수행흐름은 1, 2, 4, 6, 2, 4, 6, 7, 8, a, b, d, 9라고 한다. 본 발명의 강제 수행 알고리즘에 따르면 다음과 같이 수행된다. (체크포인트 숫자)의 표현은 숫자 노드로 갈 수 있도록 context를 수정해서 스택에 저장하는 것을 의미한다.
첫번째 수행흐름은 1(체크포인트 3), 2(체크포인트 5), 4, 6(체크포인트 7), 2, 4, 6, 7(체크포인트 1), 8, a(체크포인트 c), b, d, 9 이다. 두번째 수행흐름은 단계(210,220)에 의해 (체크포인트 c)를 복원한 뒤 시작하기 때문에 (1, 2, 4, 6, 2, 4, 6, 7, 8, a), c, d, 9이다. 세번째 수행흐름은 (1, 2, 4, 6, 2, 4, 6, 7), 1, 2, 4, 6, 7, 8, a(체크포인트 c), b, d, 9이다. 세번째 수행흐름을 보면 a를 수행한뒤 다시 (체크포인트 c)가 수행되는 것을 확인할 수 있다. 이는 단계(260)에서 현재 수행흐름인 세번째 수행흐름에서 a에서 수행되는 조건 분기문이 처음으로 나왔기 때문이다. 네번째 수행흐름은 (1, 2, 4, 6, 2, 4, 6, 7), 1, 2, 4, 6, 7, 8, a, c, d, 9 이고, 다섯번째 수행흐름은 (1, 2, 4, 6), 7, 8, a(체크포인트 c), b, d, 9가 된다. 이 과정을 반복하고, 더 이상 새로운 수행 흐름이 없을 경우 강제 수행 알고리즘은 종료한다.
이상에서, 특정 실시예와 관련하여 본 발명을 설명하였으나, 본 발명은 전술한 실시예 및 첨부된 도면에 한정되는 것이 아니고, 본 발명의 기술적 사상을 벗어나지 않는 범위 내에서, 여러 치환, 변형 및 변경이 가능하다는 것이 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 있어 명백할 것이다.
도 1은 본 발명의 일 실시예에 따른 프로그램 자동 분석 장치를 도시한다.
도 2는 본 발명의 일실시예에 따른 강제 수행 알고리즘을 도시한 흐름도이다.
도 3은 도 2에 도시된 강제 수행 절차의 예를 보여주는 도면이다.

Claims (9)

  1. 분석 대상 프로그램을 분석하고 상기 프로그램에 포함된 명령어들의 적어도 한번 이상의 강제 수행을 통해 프로그램 수행 정보를 생성하는 자동 분석 엔진과,
    상기 자동 분석 엔진에 의해 생성된 프로그램 수행 정보를 저장하는 수행 정보 DB와,
    상기 수행 정보 DB에 저장된 수행 정보에 기반하여 상기 분석 대상 프로그램의 수행 흐름을 분석하는 수행 흐름 분석부와,
    상기 수행 흐름 분석부에 의해 분석된 수행 흐름 정보에 기초하여 사용자에게 수행 결과를 제공하는 수행 결과 제공부
    를 포함하는 프로그램 자동 분석 장치.
  2. 제1항에 있어서, 상기 자동 분석 엔진은,
    상기 분석 대상 프로그램의 명령어를 수행하는 디버거와,
    상기 디버거에서 수행될 명령어를 기계어로 변환하는 역어셈블러와,
    상기 기계어로 변환된 명령어가 조건 분기문 또는 API 호출인지를 판단하고 조건 분기문 및 API 핸들러의 강제 수행을 상기 디버거에 지시하는 강제 수행부
    를 포함하는 프로그램 자동 분석 장치.
  3. 제2항에 있어서, 상기 조건 분기문의 강제 수행은 상기 명령어의 수행 조건 에 부합하는 경우와 그렇지 않은 경우 모두에 대해 수행하는 프로그램 자동 분석 장치.
  4. 제2항에 있어서, 상기 강제 수행부는 상기 분석 대상 프로그램내에 조건 분기문을 포함하는 루프가 존재하는 경우에 하나의 수행 흐름내에서 상기 조건 분기문이 한번만 수행되도록 제어하는 프로그램 자동 분석 장치.
  5. 제2항에 있어서, 상기 강제 수행부는 사용자에게 수행 흐름에 걸리는 시간을 기본 블록 단위로 알려주고 사용자가 분석 시간이 길다고 판단하면 분석을 일시 정지하고 분석되는 코드 부분을 사용자에게 보여줌으로써 사용자로 하여금 무한 루프 여부를 판단케 하는 프로그램 자동 분석 장치.
  6. 제1항에 있어서, 상기 수행 흐름 분석부는, 제어 흐름 그래프(Control Flow Graph) 및 호출 사이트 흐름 그래프(Call Cite Flow Graph)중 적어도 하나를 생성하는 프로그램 자동 분석 장치.
  7. 제1항에 있어서, 상기 수행 결과 제공부에 의해 제공된 수행 결과에 기초하여 사용자는 악성 코드의 행위를 탐지하는 프로그램 자동 분석 장치.
  8. 분석 대상 프로그램의 명령어를 분석하고 상기 명령어의 적어도 한번 이상의 강제 수행을 통해 프로그램 수행 정보를 생성 및 저장하는 단계와,
    상기 저장된 수행 정보에 기반하여 상기 분석 대상 프로그램의 수행 흐름을 분석하는 단계와,
    상기 분석된 수행 흐름 정보에 기초하여 사용자에게 수행 결과를 제공하는 단계
    를 포함하는 프로그램 자동 분석 방법.
  9. 제8항에 있어서, 상기 강제 수행은
    분석 대상 프로그램의 명령어가 조건 분기문이거나 API 호출 명령어인지를 판단하는 단계와,
    상기 명령어가 조건 분기문인 것으로 판단되면 해당 조건을 만족하는 경우에 후속하는 명령어 및 그렇지 않은 경우에 후속하는 명령어 모두를 수행하고 수행된 명령어를 저장하는 단계와,
    상기 명령어가 API 호출인 것으로 판단되면 호출 처리 방식이 정상 수행인지 판단하는 단계와,
    정상 수행인 것으로 판단되면 해당 호출 명령어를 수행하고, 그렇지 않은 경우에 사용자에 의해 등록된 핸들러를 수행하는 단계
    를 포함하는 프로그램 자동 분석 방법.
KR1020070132763A 2007-12-17 2007-12-17 특정 이벤트/조건에서 동작하는 윈도우용 악성 코드탐지를 위한 프로그램 자동 분석 장치 및 방법 KR100926115B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020070132763A KR100926115B1 (ko) 2007-12-17 2007-12-17 특정 이벤트/조건에서 동작하는 윈도우용 악성 코드탐지를 위한 프로그램 자동 분석 장치 및 방법
US12/270,897 US8584101B2 (en) 2007-12-17 2008-11-14 Apparatus and method for automatically analyzing program for detecting malicious codes triggered under specific event/context

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020070132763A KR100926115B1 (ko) 2007-12-17 2007-12-17 특정 이벤트/조건에서 동작하는 윈도우용 악성 코드탐지를 위한 프로그램 자동 분석 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20090065277A KR20090065277A (ko) 2009-06-22
KR100926115B1 true KR100926115B1 (ko) 2009-11-11

Family

ID=40755012

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020070132763A KR100926115B1 (ko) 2007-12-17 2007-12-17 특정 이벤트/조건에서 동작하는 윈도우용 악성 코드탐지를 위한 프로그램 자동 분석 장치 및 방법

Country Status (2)

Country Link
US (1) US8584101B2 (ko)
KR (1) KR100926115B1 (ko)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101012669B1 (ko) * 2008-09-25 2011-02-11 주식회사 안철수연구소 불법적인 메모리 접근을 진단하는 악성 프로그램 탐지기 및그 제어방법
US8065567B1 (en) * 2009-03-03 2011-11-22 Symantec Corporation Systems and methods for recording behavioral information of an unverified component
US9154364B1 (en) * 2009-04-25 2015-10-06 Dasient, Inc. Monitoring for problems and detecting malware
US8516590B1 (en) 2009-04-25 2013-08-20 Dasient, Inc. Malicious advertisement detection and remediation
US8683584B1 (en) 2009-04-25 2014-03-25 Dasient, Inc. Risk assessment
US8555391B1 (en) 2009-04-25 2013-10-08 Dasient, Inc. Adaptive scanning
US8607199B2 (en) * 2009-12-16 2013-12-10 International Business Machines Corporation Techniques for debugging code during runtime
US8516229B2 (en) * 2010-02-05 2013-08-20 International Business Machines Corporation Two pass test case generation using self-modifying instruction replacement
US8782434B1 (en) 2010-07-15 2014-07-15 The Research Foundation For The State University Of New York System and method for validating program execution at run-time
KR101230271B1 (ko) * 2010-12-24 2013-02-06 고려대학교 산학협력단 악성 코드 탐지를 위한 시스템 및 방법
US20120317642A1 (en) * 2011-06-09 2012-12-13 Barracuda Networks, Inc. Parallel Tracing Apparatus For Malicious Websites
US9531805B1 (en) 2012-06-19 2016-12-27 Google Inc. Systems and methods for run time migration
CN102779255B (zh) * 2012-07-16 2014-11-12 腾讯科技(深圳)有限公司 判断恶意程序的方法及装置
US9122873B2 (en) 2012-09-14 2015-09-01 The Research Foundation For The State University Of New York Continuous run-time validation of program execution: a practical approach
US9754105B1 (en) * 2012-09-25 2017-09-05 Malwarebytes Corporation Preventing the successful exploitation of software application vulnerability for malicious purposes
US9069782B2 (en) 2012-10-01 2015-06-30 The Research Foundation For The State University Of New York System and method for security and privacy aware virtual machine checkpointing
CN104134034B (zh) * 2013-06-13 2015-10-21 腾讯科技(深圳)有限公司 控制应用运行的方法和装置
US9195809B1 (en) 2014-08-14 2015-11-24 Synack, Inc. Automated vulnerability and error scanner for mobile applications
CN105186463B (zh) * 2015-08-31 2018-03-16 许继集团有限公司 一种防止智能变电站继电保护装置误操作的方法
US10657255B2 (en) * 2015-12-17 2020-05-19 International Business Machines Corporation Detecting malicious code based on conditional branch asymmetry
US20170344463A1 (en) * 2016-05-27 2017-11-30 International Business Machines Corporation System and method for bypassing evasion tests with applications in analysis and monitoring of mobile applications
US10521588B1 (en) * 2017-08-30 2019-12-31 Trend Micro Incorporated Dynamic analysis of malware that has evasion code
KR102653309B1 (ko) * 2021-03-03 2024-03-29 주식회사 카카오뱅크 스케쥴링 장치 및 방법
KR102393795B1 (ko) * 2021-08-26 2022-05-03 시큐레터 주식회사 응용프로그램의 실행 흐름 변경을 통한 비실행 파일의 악성 탐지 방법 및 장치
WO2023229066A1 (ko) * 2022-05-26 2023-11-30 시큐레터 주식회사 리버싱 엔진 기반의 문서 행위를 판단하기 위한 방법 및 이를 위한 장치

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20050066048A (ko) * 2003-12-26 2005-06-30 한국전자통신연구원 다단계 트래픽 흐름 관리 장치 및 방법
KR20060055147A (ko) * 2004-11-18 2006-05-23 한제헌 네트워크 악성실행코드 차단장치 및 방법
KR20070049511A (ko) * 2005-11-08 2007-05-11 한국정보보호진흥원 악성코드 분석 시스템 및 방법

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5050168A (en) * 1989-12-29 1991-09-17 Paterson Timothy L Test coverage analyzer
US6083281A (en) * 1997-11-14 2000-07-04 Nortel Networks Corporation Process and apparatus for tracing software entities in a distributed system
US6327699B1 (en) * 1999-04-30 2001-12-04 Microsoft Corporation Whole program path profiling
US6959431B1 (en) * 1999-05-13 2005-10-25 Compuware Corporation System and method to measure and report on effectiveness of software program testing
US7814544B1 (en) * 2006-06-22 2010-10-12 Symantec Corporation API-profile guided unpacking

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20050066048A (ko) * 2003-12-26 2005-06-30 한국전자통신연구원 다단계 트래픽 흐름 관리 장치 및 방법
KR20060055147A (ko) * 2004-11-18 2006-05-23 한제헌 네트워크 악성실행코드 차단장치 및 방법
KR20070049511A (ko) * 2005-11-08 2007-05-11 한국정보보호진흥원 악성코드 분석 시스템 및 방법

Also Published As

Publication number Publication date
US20090158260A1 (en) 2009-06-18
KR20090065277A (ko) 2009-06-22
US8584101B2 (en) 2013-11-12

Similar Documents

Publication Publication Date Title
KR100926115B1 (ko) 특정 이벤트/조건에서 동작하는 윈도우용 악성 코드탐지를 위한 프로그램 자동 분석 장치 및 방법
CN109002721B (zh) 一种信息安全漏洞的挖掘分析方法
US10581879B1 (en) Enhanced malware detection for generated objects
JP5908132B2 (ja) プログラムの脆弱点を用いた攻撃の探知装置および方法
US10055585B2 (en) Hardware and software execution profiling
KR101966514B1 (ko) 소프트웨어 정의 네트워크에서의 악성 프로그램 탐지 장치, 방법 및 컴퓨터 프로그램
CN109101815B (zh) 一种恶意软件检测方法及相关设备
Junaid et al. Dexteroid: Detecting malicious behaviors in android apps using reverse-engineered life cycle models
US20160283716A1 (en) System and Method for Emulation-based Detection of Malicious Code with Unmet Operating System or Architecture Dependencies
US10242190B2 (en) System and method for detection of malicious code by iterative emulation of microcode
CN108268371B (zh) 面向Android应用的智能模糊测试方法
US9507933B2 (en) Program execution apparatus and program analysis apparatus
WO2008091272A2 (en) Methods, systems and media for software self-healing
US10650147B2 (en) Method and apparatus for ensuring control flow integrity
CN109255240B (zh) 一种漏洞处理方法和装置
US20240121261A1 (en) Automated Security Analysis of Software Libraries
KR101972825B1 (ko) 하이브리드 분석 기술을 이용한 임베디드 기기 취약점 자동 분석 방법, 장치 및 그 방법을 실행하는 컴퓨터 프로그램
US11568052B2 (en) Undetectable sandbox for malware
CN102012988A (zh) 自动二进制恶意代码行为分析方法
EP2972828B1 (en) Operating system support for contracts
US20220108007A1 (en) Firmware Protection
CN113779578A (zh) 移动端应用的智能混淆方法和系统
CN111767548A (zh) 一种漏洞捕获方法、装置、设备及存储介质
Shen et al. Toward efficient dynamic analysis and testing for Android malware
Lim et al. Survey of Dynamic Anti-Analysis Schemes for Mobile Malware.

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

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20130930

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20140916

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20161004

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20170918

Year of fee payment: 9

LAPS Lapse due to unpaid annual fee