KR102421394B1 - 하드웨어와 소프트웨어 기반 트레이싱을 이용한 악성코드 탐지 장치 및 방법 - Google Patents

하드웨어와 소프트웨어 기반 트레이싱을 이용한 악성코드 탐지 장치 및 방법 Download PDF

Info

Publication number
KR102421394B1
KR102421394B1 KR1020200072447A KR20200072447A KR102421394B1 KR 102421394 B1 KR102421394 B1 KR 102421394B1 KR 1020200072447 A KR1020200072447 A KR 1020200072447A KR 20200072447 A KR20200072447 A KR 20200072447A KR 102421394 B1 KR102421394 B1 KR 102421394B1
Authority
KR
South Korea
Prior art keywords
malicious code
tracing
code
hardware
software
Prior art date
Application number
KR1020200072447A
Other languages
English (en)
Other versions
KR20210155214A (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 KR1020200072447A priority Critical patent/KR102421394B1/ko
Publication of KR20210155214A publication Critical patent/KR20210155214A/ko
Application granted granted Critical
Publication of KR102421394B1 publication Critical patent/KR102421394B1/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
    • G06F21/566Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
    • 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

Abstract

본 발명의 일 실시예에 따른 하드웨어와 소프트웨어 기반 트레이싱을 이용한 악성코드 탐지 장치는 분석 대상 코드를 실행하고 하드웨어 디버깅하여 하드웨어 트레이싱 정보를 생성하는 하드웨어 트레이싱부; 소프트웨어 트레이싱 기법으로 상기 분석 대상 코드를 가상으로 실행하여 소프트웨어 트레이싱 정보를 생성하는 소프트웨어 트레이싱부; 및 하드웨어 트레이싱 정보와 소프트웨어 트레이싱 정보를 분석하여 악성코드를 탐지하는 악성코드 탐지부를 포함한다.

Description

하드웨어와 소프트웨어 기반 트레이싱을 이용한 악성코드 탐지 장치 및 방법{APPARATUS AND METHOD FOR DETECTING MALICIOUS CODE USING TRACING BASED ON HARDWARE AND SOFTWARE}
본 발명은 하드웨어와 소프트웨어 기반 트레이싱을 이용한 악성코드 탐지 장치 및 방법에 관한 것이다.
최근 사용자의 편의를 제공하기 위하여 컴퓨팅을 이용한 다양한 서비스가 제공됨에 따라 공인 인증서나 카드 정보, 로그인 정보 등과 같은 중요한 정보들은 컴퓨팅 기기에 저장하는 횟수가 증가하였으며, 이를 이용하는 사례가 빈번히 발생하고 있어 정보의 보호에 대한 관심과 필요성이 높아지고 있다.
컴퓨팅 기기의 대표적인 비정상 행위로는 악성코드에 의한 행위가 있을 수 있으며, 악성코드(malicious code)는 비정상적인 동작 또는 시스템 위해(harm) 행위를 목적으로 작성된 코드를 말한다.
악성코드는 소프트웨어를 보호하고 분석을 어렵게 하기 위하여 자가 수정이나 안티디버깅(Anti-Debugging)과 같은 상용 난독화 기법을 채택하기도 한다.
이러한 난독화 기법이 사용된 악성 코드를 탐지하고, 탐지된 악성코드를 우회할 방법이 요구된다.
종래의 기존 악성코드를 분석하는 기술로서 트레이싱 기법을 활용한다. 트레이싱이란 프로그램의 실행되는 흐름을 파악하기 위하여, 특정한 툴을 사용하여 코드를 실행시킨고 실행에 관한 정보를 기록하는 기술이다. 트레이싱 기법은 크게 하드웨어 기반 트레이싱과 소프트웨어 기반 트레이싱으로 나눌 수 있다.
하드웨어 기반 트레이싱은 대상코드를 실행하여 정보를 기록하되 정보를 분기별로 기록한다. 소프트웨어 기반 트레이싱은 통제가 가능한 가상 환경에서 대상 코드를 직접 실행시켜 코드별 정보를 기록함으로써 악성코드의 행위를 식별하는 방식이다.
그러나, 하드웨어 기반 트레이싱 또는 소프트웨어 기반 트레이싱 분석은 각 방식에 따라 한계를 가지고 있다. 하드웨어 기반 트레이싱은 실행에 의해 생성되는 정보(이하, 하드웨어 트레이싱 정보라 함)가 안티리버싱에 탐지되지 않지만, 상세한 실행 파일에 의해 변경되는 변경되는 값에 대한 오류를 상세히 탐지하지 못하고, 소프트웨어 기반 트레이싱의 경우, 가상환경을 만들거나 애물레이팅하여 코드마다 플래그, 레지스터와 같은 정보(이하, 소프트웨어 정보라 함)를 생성하므로 상세하게 분석할 수 있으나, 안티리버싱에 탐지될 수 있다.
나아가, 악성코드 식별 기술이 진화함에 따라서 악성코드 제작자의 제작 기술 또한 더 교묘해지고 있어 기존 악성코드 분석 기술로는 정확한 악성코드 식별이 어렵다는 문제가 있었다.
상기와 같은 문제점을 해결하기 위하여, 본 발명의 하드웨어와 소프트웨어 기반 트레이싱을 이용한 악성코드 탐지 장치 및 방법을 제공함으로써, 종래의 정적 또는 동적 분석을 이용한 식별 장치 및 방법보다 빠르고 정확하게 악성코드를 탐지하고, 처리할 수 있도록 하는 것을 목적으로 한다.
본 발명이 해결하고자 하는 과제는 이상에서 언급한 과제(들)로 제한되지 않으며, 언급되지 않은 또 다른 과제(들)은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
상기 목적을 달성하기 위한 본 발명의 일 실시예에 따른 하드웨어와 소프트웨어 기반 트레이싱을 이용한 악성코드 탐지 장치는 하드웨어와 소프트웨어 기반 트레이싱을 이용한 악성코드 탐지 장치는 분석 대상 코드를 실행하고 하드웨어 디버깅하여 하드웨어 트레이싱 정보를 생성하는 하드웨어 트레이싱부; 소프트웨어 트레이싱 기법으로 상기 분석 대상 코드를 가상으로 실행하여 소프트웨어 트레이싱 정보를 생성하는 소프트웨어 트레이싱부; 및 하드웨어 트레이싱 정보와 소프트웨어 트레이싱 정보를 분석하여 악성코드를 탐지하는 악성코드 탐지부를 포함한다.
일 실시예에서, 하드웨어와 소프트웨어 기반 트레이싱을 이용한 악성코드 탐지 장치는 탐지된 악성코드를 삭제 또는 우회 처리하는 악성코드 처리부를 더 포함한다.
일 실시예에서, 상기 악성코드 탐지부는 생성된 하드웨어 트레이싱 정보에 기초하여 미리 저장된 악성코드 패턴과 유사한 패턴이 확인되는 경우, 해당 패턴을 포함하는 분기에 대한 소프트웨어 트레이싱 정보를 출력하거나 분석한다.
일 실시예에서, 상기 악성코드 탐지부는 생성된 하드웨어 트레이싱 정보에 기초하여 미리 저장된 악성코드 패턴과 유사한 패턴이 확인되는 경우, 해당 패턴을 포함하는 분기에 대한 소프트웨어 트레이싱 정보를 출력하거나 분석한다.
일 실시예에서, 상기 악성코드 탐지부는 매 분기별로 정상 파일과 악성 파일의 실행 과정에서 호출하는 레지스트리 빈도, 호출 프로세스, 호출 결과를 분석하여 악성코드를 동적으로 식별한다.
일 실시예에서, 상기 악성코드 탐지부는 메타정보, API(Application Programming Interface) 분석, 리소스 분석 중의 적어도 하나를 이용하여 악성코드를 정적으로 식별한다.
일 실시예에서, 상기 악성코드 처리부는 악성코드를 포함하는 분석 대상 코드의 상태 플래그를 수정하거나, 관련 레지스터 또는 메모리 값을 수정하여 악성코드를 처리한다.
일 실시예에서, 상기 악성코드 처리부는 수정된 코드를 상기 분기 내의 소스코드, 컴파일러의 입력코드, 오브젝트 코드, 실행파일 중 어느 하나에 삽입하여 런타임 중 동작을 변경한다.
본 발명의 일 실시예에 따른 악성코드 탐지 장치에 의한 하드웨어와 소프트웨어 기반 트레이싱을 이용한 악성코드 탐지 방법은, 분석 대상 코드를 실행하고 하드웨어 디버깅하고, 소프트웨어 트레이싱 기법으로 상기 분석 대상 코드를 가상으로 실행하여, 하드웨어 트레이싱 정보 및 소프트웨어 트레이싱 정보를 생성하는 단계; 및 하드웨어 트레이싱 정보와 소프트웨어 트레이싱 정보를 분석하여 악성코드를 탐지하는 단계를 포함한다.
일 실시예에서, 악성코드 탐지 장치에 의한 하드웨어와 소프트웨어 기반 트레이싱을 이용한 악성코드 탐지 방법은, 탐지된 악성코드를 삭제 또는 우회 처리하는 단계를 더 포함한다.
일 실시예에서, 상기 악성코드를 탐지하는 단계는, 생성된 하드웨어 트레이싱 정보에 기초하여 미리 저장된 악성코드 패턴과 유사한 패턴이 확인되는 경우, 해당 패턴을 포함하는 분기에 대한 소프트웨어 트레이싱 정보를 출력하거나 분석하는 것을 특징으로 한다.
일 실시예에서, 상기 탐지된 악성코드를 삭제 또는 우회 처리하는 단계는, 악성코드를 포함하는 분석 대상 코드의 상태 플래그를 수정하거나, 관련 레지스터 또는 메모리 값을 수정하여 악성코드를 처리하는 것을 특징으로 한다.
본 발명의 일 실시예에 따르면 동적 및 정적 악성코드를 신속하고 정확하게 탐지할 수 있는 효과가 있다.
본 발명의 일 실시예에 따르면 악성 코드가 포함된 분기를 추출하거나, 삭제 또는 우회하는 처리를 할 수 있다.
본 발명의 효과들은 이상에서 언급한 효과들로 제한되지 않으며, 언급되지 않은 또 다른 효과들은 아래의 기재로부터 통상의 기술자에게 명확하게 이해될 수 있을 것이다.
도 1은 본 발명의 일 실시예에서 설명하는 악성 코드인 자가 수정 코드의 일 예이다.
도 2는 본 발명의 일 실시예에 따른 악성코드 탐지 장치의 구성을 개략적으로 도시한 블록도이다.
도 3은 도 1의 자가 수정 코드를 포함하는 분석 대상 코드를 하드웨어 트레이싱부에 의해 디버깅한 결과의 예시이다.
도 4는 본 발명의 일 실시예에 의해 자가 수정을 포함하는 악성 코드의 일 예이다.
도 5는 본 발명의 일 실시예에 의해 수정된 분석 대상 코드의 레지스터 정보의 일 예이다.
도 6은 본 발명의 일 실시예에 따른 하드웨어와 소프트웨어 기반 트레이싱을 이용한 악성코드 탐지 방법을 설명하기 위한 흐름도이다.
도 7은 본 발명의 일 실시예에 따른 하드웨어와 소프트웨어 기반 트레이싱을 이용한 악성코드 탐지 방법을 설명하기 위한 개념도이다.
도 8은 본 발명의 일 실시예에 따른 디버거 실행 정보의 일 예이다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 상세한 설명에 상세하게 설명하고자 한다. 그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 각 도면을 설명하면서 유사한 참조부호를 유사한 구성요소에 대해 사용하였다.
제1, 제2, A, B 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 본 발명의 권리 범위를 벗어나지 않으면서 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다. 및/또는 이라는 용어는 복수의 관련된 기재된 항목들의 조합 또는 복수의 관련된 기재된 항목들 중의 어느 항목을 포함한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥 상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
본 발명의 일 실시예에 따른 상세한 설명에 앞서, 자가 수정 코드를 설명한다.
본 명세서에서 자가 수정 코드는 실행 흐름 정보와 같이 실행에 의해 소스 코드로부터 변경되는 정적 코드를 변경하여, 동적 트레이싱으로는 탐지할 수 없는 악성 코드를 의미한다.
도 1은 본 발명의 일 실시예에서 설명하는 악성 코드인 자가 수정 코드의 일 예이다.
도 1에 예시한 바와 같이, 자가 수정 코드는 특정 구간(B1)에서 분기를 통해 수많은 반복을 수행하게 하는 코드이다. 자가 수정 코드에 의해 특정 구간(B1)을 수없이 반복한 후에, eax, edx와 같은 레지스터값이나 분기정보가 일정값이 되면 해당 분기를 빠져나오게 된다.
이하, 본 발명에 따른 바람직한 실시예를 첨부된 도면을 참조하여 상세하게 설명한다.
도 2는 본 발명의 일 실시예에 따른 악성코드 탐지 장치의 구성을 개략적으로 도시한 블록도이다.
도 2에 도시된 바와 같이, 본 발명의 악성코드 탐지 장치는 하드웨어 트레이싱부(110), 소프트웨어 트레이싱부(120), 악성코드 탐지부(130) 및 악성코드 처리부(140)를 더 포함한다. 본 발명의 악성코드 탐지 장치는 도면에 도시하지는 않았지만, 실행파일을 저장하는 데이터베이스를 더 포함하여, 데이터베이스에 저장된 실행파일을 정적 및 동적으로 분석하여, 분석된 데이터에 기초하여 악성코드를 탐지할 수 있다.
하드웨어 트레이싱부(110)는 분석 대상 코드를 실행하여 하드웨어 트레이싱 기법으로 디버깅하여, 하드웨어 트레이싱 정보를 생성한다. 하드웨어 디버깅이란 하드웨어 트레이싱 기법으로 디버깅하는 것으로 보다 구체적으로, 분석 대상의 실행 파일을 실행시킨 후, 그 실행 흐름을 분기 단위로 기록하는 것을 의미한다. 이로써 알 수 있는 바와 같이, 하드웨어 디버깅에 의해 분기 단위로 기록된 하드웨어 트레이싱 정보가 생성된다. 여기서 분기는, 주어진 주소로 실행 흐름이 바뀌는 부분을 말한다.
하드웨어 트레이싱의 도구는 Intel PT(Processor Trace) 등이 채택될 수 있다. Intel PT는 Intel CPU에서 지원하는 낮은 오버헤드의 실행 트레이스 기능이다. Intel PT는 소프트웨어 실행 후 캡처된 트레이스 데이터를 처리하고 정확한 프로그램 실행 흐름을 재구성 할 수 있도록 Intel CPU 하드웨어 전용 기능을 사용하여 각 하드웨어 쓰레드에서 소프트웨어 실행에 대한 정보를 캡처하며 동작하고, 이 정보들은 데이터 패킷단위의 PT 패킷 로그가 수집된다. 이러한 PT 패킷 로그에는 패킷 주소, 패킷 정보 그리고 실행파일의 코드 주소가 출력된다. 패킷 정보에는 타이밍, 프로그램 흐름 정보(분기 대상, 분기 수행) 및 상태 전이, CR3 변경 정보가 포함되어 있다. 명령 포인터(instruction pointer), 간접 분기 대상 및 조건부 분기 방향과 같은 실행 흐름 정보가 포함된 패킷과 프로그램의 바이너리를 결합하여 실행 트레이스를 획득할 수도 있다.
하드웨어 트레이싱부(110)는 분석대상 파일의 실행 과정에서 호출하는 레지스트리 빈도, 호출 프로세스, 호출 결과를 분석하여 악성 코드를 정적으로 식별할 수 있다. 이때, 하드웨어 트레이싱부(110)는 윈도우의 레지스트리를 기반으로 분석대상 파일에 대한 정적 분석을 수행할 수 있다.
소프트웨어 트레이싱부(120)는 실행되는 분석 대상 코드를 소프트웨어 트레이싱 기법으로 디버깅하여 소프트웨어 트레이싱 정보를 수집한다. 소프트웨어 트레이싱 기법에 의해 생성된 소프트웨어 트레이싱 정보는 하드웨어 트레이싱 정보와는 달리 명령어 단위로 실행 흐름을 상세히 기록된다.
소프트웨어 트레이싱의 도구는 Intel Pin, DynamicRio, Dyninst, Valgrind 등이 채택될 수 있다.
일 예로, Intel Pin은 프로그램 동적 분석 도구를 생성할 수 있는 프레임워크로, 프로그램 분석은 Pin 내부 가상머신의 JIT(Just-in-time) 컴파일러를 이용하여 프로그램 코드 사이사이에 분석 코드를 삽입하고 프로그램 코드와 삽입된 분석 코드가 실행되면서 진행된다. 사용자는 분석 코드를 통해 동적으로 프로그램 정보를 얻을 수 있게 된다. 프로그램 정보를 얻기 위해 삽입하는 분석 코드는 Pin이 제공하는 다양한 API와 C 언어를 사용하여 사용자가 변경 할 수 있다.
Pin은 바이너리 파일의 첫 명령어의 실행을 멈추고 각각의 명령어사이에 분석 코드를 삽입한다. 그 후, Pin은 제어권을 넘겨주어 새롭게 만들어진 명령어 순서가 실행되도록 하고, 분기를 통해 새로운 명령어 순서를 빠져나갈 때 다시 제어권을 받아온다. 이때, Pin은 분기의 명령어 순서와 분기 명령어 아래의 명령어 순서에 분석 코드를 삽입하고 제어권을 넘겨준다. 이 과정을 반복하면서 Pin은 동작하기 때문에, 실행되는 명령어는 새롭게 만들어진 코드이다. 즉, 원래 명령어 순서는 참조를 위해 사용된다.
Pin은 사용자에게 자신의 코드를 삽입할 수 있게 하는 것을 instrumentation이라고 한다. Instrumentation을 통해 사용자는 특정 지점에 원하는 명령어를 삽입할 수 있게 되어 타겟 프로그램의 정보를 얻거나 흐름을 변경할 수 있게 된다.
소프트웨어 트레이싱부(120)는 메타정보, API 분석, 리소스 분석 중의 적어도 하나를 이용하여 악성 코드를 동적으로 식별할 수 있다.
일 예로, API(Application Programming Interface)는 응용프로그램에서 시스템 자원을 사용할 수 있도록 운영체제나 프로그램 언어가 제공하는 미리 정해진 메소드이다. API는 주로 파일 제어, 창 제어, 화상처리, 문자제어 등을 위한 인터페이스를 제공하며, 시스템 자원을 사용하거나 다른 응용프로그램과 상호 작용을 위해서 프로그램 내부의 자원을 호출하는 역할을 수행한다. 윈도우 운영체제에서는 응용프로그램 동작에 필요한 Windows API 함수를 동적 라이브러리(Dynamic Link Library)파일을 링크하거나 정적으로 파일 자체에 포함하여 제공한다. Windows API는 사용자모드와 커널모드에서 동작하며, 커널 모드에서 동작하는 API는 NativeAPI라고 부른다. 파일이 동작하는 특징은 속성별 API정보를 추출하여 비교 분석할 수 있다. API정보를 추출하는 방법에는 바이너리 파일 자체를 분석하거나 프로그램 동작 과정에서 호출되는 API를 정보를 후킹하여 확인할 수 있다.
악성코드 탐지부(130)는 하드웨어 트레이싱 정보와 소프트웨어 트레이싱 정보를 분석하여 악성코드를 탐지한다.
악성코드 탐지부(130)는 정상 파일과 악성 파일의 실행 과정에서 호출하는 레지스트리 빈도, 호출 프로세스, 호출 결과를 분석하여 악성코드를 정적으로 식별한다. 또한, 하드웨어 트레이싱 정보에 기초하여 악성코드로 의심 패턴을 포함하는 분기를 판단하고, 해당 분기에 대한 소프트웨어 트레이싱 정보를 분석하여 동적 악성코드를 탐지한다.
악성코드 탐지부(130)는 생성된 하드웨어 트레이싱 정보에 기초하여 미리 저장된 악성코드 패턴과 유사한 패턴이 확인되는 경우, 해당 패턴을 포함하는 분기에 대한 소프트웨어 트레이싱 정보를 출력하여 분석할 수 있다. 즉,
악성코드 탐지부(130)는 하드웨어 트레이싱부(110)에 의해 생성된 하드웨어 트레이싱 정보에 미리 설정된 자가 수정 코드 패턴이 포함되어 있는지 확인한다.
악성코드 탐지부(130)는 하드웨어 트레이싱 정보에 이와 같이, 미리 설정된 악성코드와 유사한 패턴을 포함하고 있다고 판단되는 경우, 분석 대상 코드의 해당 분기의 위치를 확인한다.
악성코드 탐지부(130)는 위치가 확인된 해당 분기의 소프트웨어 트레이싱 정보를 추출하여 악성코드 처리부(140)에 전달하거나 표시부(도시생략)에 표시할 수 있다.
이하, 악성코드 탐지부(130)가 도 1에 도시한 바와 같은 자가 수정 코드를 포함하는 악성코드를 탐지하는 일 예를 설명한다.
도 3은 도 1의 자가 수정 코드를 포함하는 분석 대상 코드를 하드웨어 트레이싱부(110)에 의해 디버깅한 결과의 예시이다.
도 3에서, @는 실행을 의미하며, 특정 부분(B1)은 TNT(Taken or Not Taken) 패킷(@#@#@@, @@@#@@, @#@@@@ 등)만으로 구성된 것을 확인할 수 있다.
악성코드 탐지부(130)는 하드웨어 트레이싱 정보에 기초하여 악성 코드로 의심되는 특정 부분(B1)의 분기 위치를 확인하여, 해당 분기의 소프트웨어 트레이싱 정보를 확인할 수 있다. 해당 분기 위치는 하드웨어 트레이싱 정보의 패킷 주소, 패킷 주소 그리고 실행파일의 코드 주소 중 어느 하나 이상을 통해 확인할 수 있다.
또는 악성코드 탐지부(130)는 딥러닝 등에 의해 학습된 악성코드 의심 정보에 기초하여 소프트웨어 트레이싱 정보를 분석한다.
악성코드 탐지부(130)는 메타정보, API(Application Programming Interface) 분석, 리소스 분석 중의 적어도 하나를 이용하여 악성코드를 정적으로 식별한다. 코드를 실행하기 전과 후의 변경 상태를 추출하여 정적 악성코드를 탐지한다.
악성코드 처리부(140)는 탐지된 악성코드를 삭제 또는 우회 처리한다.
악성코드 처리부(140)는 분석 대상 코드의 상태 플래그를 수정하거나, 관련 레지스터 또는 메모리 값을 수정할 수 있다. 예를 들어, 악성코드 처리부(140)는 수정된 코드를 상기 분기 내의 소스코드, 컴파일러의 입력코드, 오브젝트 코드, 실행파일 중 어느 하나에 삽입하여 런타임 중 동작을 변경한다.
도 4는 본 발명의 일 실시예에 의해 자가 수정을 포함하는 악성 코드의 일 예이고, 도 5는 본 발명의 일 실시예에 의해 수정된 분석 대상 코드의 레지스터 정보의 일 예이다.
도 4에 예시된 바와 같이, 0x4299a4까지 진행이 되면 0x42999d로 점프하여 다시 실행되는데 이를 반복하는 자가 수정을 포함하는 악성 코드가 악성코드 탐지부(130)에 의해 탐지된 경우, 악성코드 처리부(140)는 도 5와 같이, 되면 0x42999d를 0x4299a4로 수정하여 0x4299a4에서 0x42999d가 반복 실행되는 것을 방지할 수 있다.
위와 같이 악성코드 처리부(140)는 디버거와 비슷하게 반복되는 코드 부분의 레지스터값을 수정하여 DBI로 삽입(Instrumentation)하게 되면 런타임 중에 동작을 변경하여 자가 수정을 우회하게 한다.
본 발명의 일 실시예에 따르면, 분석 대상 코드를 실행하고 하드웨어 트레이싱을 통해 트레이스 파일을 생성한다. 다음에는 분석 대상 코드를 소프트웨어 트레이싱을 통해 직접 실행하되 매 분기의 하드웨어 트레이싱 정보를 참조하여 비교 및 수정된 코드를 분석 대상 코드에 삽입 또는 삭제하여, 자가 수정 루틴, 안티리버싱을 포함한 악성 행위를 탐지 및 우회하는 동적 코드 분석 플랫폼을 설계할 수 있다.
도 6은 본 발명의 일 실시예에 따른 하드웨어와 소프트웨어 기반 트레이싱을 이용한 악성코드 탐지 방법을 설명하기 위한 흐름도이고 도 7은 본 발명의 일 실시예에 따른 하드웨어와 소프트웨어 기반 트레이싱을 이용한 악성코드 탐지 방법을 설명하기 위한 개념도이며 도 8은 본 발명의 일 실시예에 따른 디버거 실행 정보의 일 예이다. 도 2, 도 6 및 도 7을 참조하면, 단계 S110에서 검색엔진이 활성화되면, 하드웨어 트레이싱부와 소프트웨어 트레이싱부가 병렬적으로 분석 대상 코드의 디버깅을 수행하여, 하드웨어 트레이싱 정보 및 소프트웨어 트레이싱 정보를 생성한다.
하드웨어 트레이싱부는 분석 대상 코드를 실행하고, 실행에 따른 행위 정보인 하드웨어 트레이싱 정보를 추출하여 임시 저장한다.
단계 S120에서 하드웨어 트레이싱 정보와 소프트웨어 트레이싱 정보를 비교분석하여 악성코드를 탐지한다.
하드웨어 트레이싱부에 의해 실행된 분석 대상 코드의 명령어와 실행에 따라 임시 저장된 행위 정보를 비교한다.
예를 들어, 하드웨어 트레이싱 정보를 미리 설정된 악성코드 의심 패턴과 비교한다. 악성코드 의심 패턴과 유사한 패턴이 발견되면, 해당 분기에 대한 소프트웨어 트레이싱 정보를 확인한다. 다른 변형예에서는 디버거 정보를 확인할 수 있다. 여기서 디버거 정보는 예를 들어, OllyDbg, WinDbg, x64dbg 등과 같은 디버깅 도구들에 의해 디버깅에 의해 생성도된 정보일 수 있다.
여기서 디버거는 디버깅을 수행하는 도구이고, 디버깅은 프로그램의 오류를 찾아내기 위한 테스트 과정을 뜻한다. 디버거는 원하는 코드에 중단점을 지정하여 프로그램 실행을 정지하고, 메모리에 저장된 값을 확인하여 실행을 재개하거나 코드를 단계적으로 실행하는 등의 동작을 한다.
악성코드 탐지를 위해 디버거의 의한 실행 정보를 참고할 수 있다.
소프트웨어 트레이싱 정보에는 명령어가 실행되었는지 여부가 포함된다.
디버거의 실행 정보와 소프트웨어의 트레이싱의 정보를 비교하여 악성코드 여부를 판단할 수 있다.
단계 S130에서 탐지된 악성코드를 삭제 또는 우회 처리한다.
예를 들어, 정적 악성코드의 경우, 하드웨어 트레이싱에 의해 파일에 수정이 발생되었다고 판단된 경우, 임시 저장된 명령어 파일을 이용하여 수정이 발생되기 전 상태로 복원하고, 해당 악성코드를 삭제할 수 있다.
또한, 동적 악성코드의 경우, 예를 들어 자가 수정 코드를 점프하는 코드를 런타임 중에 소스코드에 포함시킴으로써, 반복되는 자가 수정 코드를 우회하도록 할 수 있다.
도 8은 본 발명의 일 실시예에 따른 디버거 실행 정보의 일 예이다.
소프트웨어의 트레이싱 정보에 점프 명령 및 점프 주소, 실행 여부에 대한 정보가 포함된다. 예를 들어, 소프트웨어 트레이싱 정보에 jnz 0x40104d X 가 포함되어 있는 경우, 이는 해당 주소(0x40104d)로 점프(jnz)하라는 명령어를 포함하고, X는 점프를 실행하지 않음을 뜻한다.
이 경우, 디버거인 OllyDbg로 jmp(점프) 명령어가 실행된 부분의 코드를 확인해본다. 해당 코드가 도 8과 같다고 가정하면, 디버거를 통하여 해당 분기 부분을 확인해보았을 때 코드 주소가 0x401049에서 0x40104d로 DBI의 Jmp(점프) 트레이스와 같이 명령어 JNZ를 실행하지 않는 것을 확인할 수 있다. 해당 부분에 대한 하드웨어 트레이싱 정보를 비교해볼 때 패킷 주소 0x000008cf(프로그램 주소 0x40103e)에서 트레이스가 시작되고 난 후 첫 분기점은 '@@@'중 첫 번째 @(Taken)으로서 실행됨을 알 수 있다. 분기를 통해 서로 다른 경로로 이동한 후에는 디버거가 Detected 또는 Clean 한지를 띄워주는 알림창을 생성하는 경로에서 각각 실행된다. 이러한 분기를 결정짓는 부분은 상태 레지스터인 Zero Flag값을 변경함으로써, DBI나 디버거를 탐지하는 안티디버깅 기법을 우회하도록 한다.
본 발명의 일 실시예에 따르면, 자가 수정과 안티디버깅이 동시에 적용된 상황에서도 탐지 또는 우회가 가능하다.
한편, 상술한 본 발명의 실시예들은 컴퓨터에서 실행될 수 있는 프로그램으로 작성가능하고, 컴퓨터로 읽을 수 있는 기록매체를 이용하여 상기 프로그램을 동작시키는 범용 디지털 컴퓨터에서 구현될 수 있다.
상기 컴퓨터로 읽을 수 있는 기록매체는 마그네틱 저장매체(예를 들면, 롬, 플로피 디스크, 하드디스크 등), 광학적 판독 매체(예를 들면, 시디롬, 디브이디 등) 를 포함한다.
이제까지 본 발명에 대하여 그 바람직한 실시예들을 중심으로 살펴보았다. 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 본 발명이 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로 개시된 실시예들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 본 발명의 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으로 해석되어야 할 것이다.

Claims (11)

  1. 분석 대상 코드를 실행하고 하드웨어 디버깅하여 분기 단위로 기록된 하드웨어 트레이싱 정보를 생성하는 하드웨어 트레이싱부;
    소프트웨어 트레이싱 기법으로 상기 분석 대상 코드를 실행하여 명령어 단위로 기록되는 소프트웨어 트레이싱 정보를 생성하는 소프트웨어 트레이싱부;
    하드웨어 트레이싱 정보와 소프트웨어 트레이싱 정보를 분석하여 악성코드를 탐지하는 악성코드 탐지부; 및
    탐지된 악성코드를 삭제 또는 우회 처리하는 악성코드 처리부를 포함하고,
    상기 악성코드 탐지부는 상기 하드웨어 트레이싱 정보에 기초하여 악성코드로 의심되는 의심패턴을 포함하는 분기를 판단하고, 해당 분기에 대한 소프트웨어 트레이싱 정보를 분석하여 동적 악성 코드를 탐지하며,
    상기 악성코드 처리부는 악성코드를 포함하는 분석 대상 코드의 상태 플래그를 수정하거나, 관련 레지스터 또는 메모리 값을 수정하여 악성코드를 처리하고, 상기 악성코드가 처리된 상기 분석 대상 코드를 분기 내의 소스코드, 컴파일러의 입력코드, 오브젝트 코드, 실행파일 중 어느 하나에 삽입하여 런타임 중 동작을 변경하는 것을 특징으로 하는 하드웨어와 소프트웨어 기반 트레이싱을 이용한 악성코드 탐지 장치.
  2. 삭제
  3. 제1항에 있어서,
    상기 악성코드 탐지부는 생성된 하드웨어 트레이싱 정보에 기초하여 미리 저장된 악성코드 패턴과 유사한 패턴이 확인되는 경우, 해당 패턴을 포함하는 분기에 대한 소프트웨어 트레이싱 정보를 출력하거나 분석하는 것을 특징으로 하는 하드웨어와 소프트웨어 기반 트레이싱을 이용한 악성코드 탐지 장치.
  4. 제1항에 있어서,
    상기 악성코드 탐지부는 매 분기별로 정상 파일과 악성 파일의 실행 과정에서 호출하는 레지스트리 빈도, 호출 프로세스, 호출 결과를 분석하여 악성코드를 동적으로 식별하는 것을 특징으로 하는 하드웨어와 소프트웨어 기반 트레이싱을 이용한 악성코드 탐지 장치.
  5. 제1항에 있어서,
    상기 악성코드 탐지부는 메타정보, API(Application Programming Interface) 분석, 리소스 분석 중의 적어도 하나를 이용하여 악성코드를 정적으로 식별하는 것을 특징으로 하는 하드웨어와 소프트웨어 기반 트레이싱을 이용한 악성코드 탐지 장치.
  6. 삭제
  7. 삭제
  8. 악성코드 탐지 장치에 의한 하드웨어와 소프트웨어 기반 트레이싱을 이용한 악성코드 탐지 방법으로서,
    분석 대상 코드를 실행하고 하드웨어 디버깅하고, 소프트웨어 트레이싱 기법으로 상기 분석 대상 코드를 실행하여, 분기 단위로 기록된 하드웨어 트레이싱 정보 및 명령어 단위로 기록되는 소프트웨어 트레이싱 정보를 생성하는 단계;
    하드웨어 트레이싱 정보와 소프트웨어 트레이싱 정보를 분석하여 악성코드를 탐지하는 단계; 및
    탐지된 악성코드를 삭제 또는 우회 처리하는 단계를 포함하고,
    상기 악성코드를 탐지하는 단계는 상기 하드웨어 트레이싱 정보에 기초하여 악성코드로 의심되는 의심패턴을 포함하는 분기를 판단하고, 해당 분기에 대한 소프트웨어 트레이싱 정보를 분석하여 동적 악성 코드를 탐지하며,
    상기 탐지된 악성코드를 삭제 또는 우회 처리하는 단계는,
    악성코드를 포함하는 분석 대상 코드의 상태 플래그를 수정하거나, 관련 레지스터 또는 메모리 값을 수정하여 악성코드를 처리하고, 상기 악성코드가 처리된 상기 분석 대상 코드를 분기 내의 소스코드, 컴파일러의 입력코드, 오브젝트 코드, 실행파일 중 어느 하나에 삽입하여 런타임 중 동작을 변경하는 것을 특징으로 하는 하드웨어와 소프트웨어 기반 트레이싱을 이용한 악성코드 탐지 방법.
  9. 삭제
  10. 제8항에 있어서,
    상기 악성코드를 탐지하는 단계는,
    생성된 하드웨어 트레이싱 정보에 기초하여 미리 저장된 악성코드 패턴과 유사한 패턴이 확인되는 경우, 해당 패턴을 포함하는 분기에 대한 소프트웨어 트레이싱 정보를 출력하거나 분석하는 것을 특징으로 하는 하드웨어와 소프트웨어 기반 트레이싱을 이용한 악성코드 탐지 방법.



  11. 삭제
KR1020200072447A 2020-06-15 2020-06-15 하드웨어와 소프트웨어 기반 트레이싱을 이용한 악성코드 탐지 장치 및 방법 KR102421394B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020200072447A KR102421394B1 (ko) 2020-06-15 2020-06-15 하드웨어와 소프트웨어 기반 트레이싱을 이용한 악성코드 탐지 장치 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200072447A KR102421394B1 (ko) 2020-06-15 2020-06-15 하드웨어와 소프트웨어 기반 트레이싱을 이용한 악성코드 탐지 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20210155214A KR20210155214A (ko) 2021-12-22
KR102421394B1 true KR102421394B1 (ko) 2022-07-15

Family

ID=79164276

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200072447A KR102421394B1 (ko) 2020-06-15 2020-06-15 하드웨어와 소프트웨어 기반 트레이싱을 이용한 악성코드 탐지 장치 및 방법

Country Status (1)

Country Link
KR (1) KR102421394B1 (ko)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170116418A1 (en) * 2015-10-26 2017-04-27 Mcafee, Inc. Hardware heuristic-driven binary translation-based execution analysis for return-oriented programming malware detection
KR101819322B1 (ko) * 2016-03-16 2018-02-28 주식회사 엘지유플러스 악성코드 분석모듈 및 그 악성코드 분석방법

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8286238B2 (en) * 2006-09-29 2012-10-09 Intel Corporation Method and apparatus for run-time in-memory patching of code from a service processor

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170116418A1 (en) * 2015-10-26 2017-04-27 Mcafee, Inc. Hardware heuristic-driven binary translation-based execution analysis for return-oriented programming malware detection
KR101819322B1 (ko) * 2016-03-16 2018-02-28 주식회사 엘지유플러스 악성코드 분석모듈 및 그 악성코드 분석방법

Also Published As

Publication number Publication date
KR20210155214A (ko) 2021-12-22

Similar Documents

Publication Publication Date Title
EP3956773B1 (en) Program execution coverage expansion by selective data capture
Kawakoya et al. Memory behavior-based automatic malware unpacking in stealth debugging environment
CN109583200B (zh) 一种基于动态污点传播的程序异常分析方法
Dolan-Gavitt et al. Virtuoso: Narrowing the semantic gap in virtual machine introspection
Carmony et al. Extract Me If You Can: Abusing PDF Parsers in Malware Detectors.
Oyama Trends of anti-analysis operations of malwares observed in API call logs
CN109101815B (zh) 一种恶意软件检测方法及相关设备
US20210064512A1 (en) Selective memory tracing of program execution
US10089126B2 (en) Function exit instrumentation for tail-call optimized code
JP2006185211A (ja) プログラム解析装置、テスト実行装置、その解析方法及びプログラム
US20210390183A1 (en) Analysis function imparting device, analysis function imparting method, and recording medium
Nu1L Team Reverse engineering
US20230028595A1 (en) Analysis function imparting device, analysis function imparting method, and analysis function imparting program
Otsuki et al. Building stack traces from memory dump of Windows x64
Usman et al. TEGDroid: Test case generation approach for android apps considering context and GUI events
CN109857520B (zh) 一种虚拟机自省中的语义重构改进方法及系统
Kim et al. Large-scale analysis on anti-analysis techniques in real-world malware
CN113760770A (zh) 基于自动静态资源检测的反调试方法和系统
Chen et al. ARMORY: An automatic security testing tool for buffer overflow defect detection
CN109726115B (zh) 一种基于Intel处理器跟踪的反调试自动绕过方法
KR102421394B1 (ko) 하드웨어와 소프트웨어 기반 트레이싱을 이용한 악성코드 탐지 장치 및 방법
US20220335135A1 (en) Vulnerability analysis and reporting for embedded systems
Mori et al. A tool for analyzing and detecting malicious mobile code
US10460108B1 (en) Method and system to identify and rectify input dependency based evasion in dynamic analysis
Bhardwaj et al. Fuzz testing in stack-based buffer overflow

Legal Events

Date Code Title Description
AMND Amendment
E601 Decision to refuse application
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant