KR101976993B1 - 모바일 코드 자동 분석을 위한 동적 바이너리 계측 코드추출장치 및 그 방법 - Google Patents
모바일 코드 자동 분석을 위한 동적 바이너리 계측 코드추출장치 및 그 방법 Download PDFInfo
- Publication number
- KR101976993B1 KR101976993B1 KR1020180107100A KR20180107100A KR101976993B1 KR 101976993 B1 KR101976993 B1 KR 101976993B1 KR 1020180107100 A KR1020180107100 A KR 1020180107100A KR 20180107100 A KR20180107100 A KR 20180107100A KR 101976993 B1 KR101976993 B1 KR 101976993B1
- Authority
- KR
- South Korea
- Prior art keywords
- information
- execution
- code
- unit
- manager unit
- 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
- 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/52—Monitoring 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/54—Monitoring 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 adding security routines or objects to programs
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Virology (AREA)
- Debugging And Monitoring (AREA)
Abstract
본 발명은 모바일 코드 자동 분석을 위한 동적 바이너리 계측 코드추출장치 및 그 방법에 대한 것이다.
본 발명에 따른 모바일 환경 내에서 애플리케이션을 자동분석하기 위한 동적 바이너리 계측 코드추출장치는 모바일 환경에서 실행중인 애플리케이션으로부터 수신된 실행 코드에서 객체를 추출하고 관리하는 구성 요소 매니저부, 상기 객체를 추출한 실행 코드의 실행정보를 관리하는 실행 환경 매니저부, 그리고 상기 구성요소 매니저부로부터 추출된 객체정보와 상기 실행 환경 매니저부로부터 실행정보를 수신하고, 수신된 객체정보와 실행정보를 결합하여 파일형태로 저장하거나 외부로 전달하는 로그 매니저부를 포함한다.
이와 같이 본 발명에 따르면, 분석방지기법이 적용되어 기존의 방법으로 분석이 어려워진 악성 애플리케이션을 분석할 수 있어, 최신의 악성 애플리케이션의 분석이 가능하게 되고, 시간과 노력 또한 단축 시킬 수 있어 악성 애플리케이션으로 인해 입는 피해에 대한 적절하고 빠른 대응이 가능하게 되는 효과가 있다.
본 발명에 따른 모바일 환경 내에서 애플리케이션을 자동분석하기 위한 동적 바이너리 계측 코드추출장치는 모바일 환경에서 실행중인 애플리케이션으로부터 수신된 실행 코드에서 객체를 추출하고 관리하는 구성 요소 매니저부, 상기 객체를 추출한 실행 코드의 실행정보를 관리하는 실행 환경 매니저부, 그리고 상기 구성요소 매니저부로부터 추출된 객체정보와 상기 실행 환경 매니저부로부터 실행정보를 수신하고, 수신된 객체정보와 실행정보를 결합하여 파일형태로 저장하거나 외부로 전달하는 로그 매니저부를 포함한다.
이와 같이 본 발명에 따르면, 분석방지기법이 적용되어 기존의 방법으로 분석이 어려워진 악성 애플리케이션을 분석할 수 있어, 최신의 악성 애플리케이션의 분석이 가능하게 되고, 시간과 노력 또한 단축 시킬 수 있어 악성 애플리케이션으로 인해 입는 피해에 대한 적절하고 빠른 대응이 가능하게 되는 효과가 있다.
Description
본 발명은 모바일 코드 자동 분석을 위한 동적 바이너리 계측 코드추출장치 및 그 방법에 관한 것으로서, 더욱 상세하게는 모바일 환경에서 애플리케이션을 분석하는 기능과 분석방지기법 우회 기능을 제공하기 위한 모바일 코드 자동 분석을 위한 동적 바이너리 계측 코드추출장치 및 그 방법에 관한 것이다.
안드로이드 애플리케이션 시장 성장과 함께 악성 애플리케이션 시장도 크게 성장하고 있으며, 다양한 방법으로 악성 행위를 수행하는 악성 애플리케이션을 분석하고 대응하기 위해서는 정적 분석과 동적 분석을 이용한 악성 애플리케이션 분석을 선행적으로 진행하여야 한다.
하지만 최근의 악성 애플리케이션은 분석방지기법을 사용하여 기존의 분석 시스템을 통한 정적 및 동적 분석이 어렵게 되었다. 이런 악성 애플리케이션을 분석하기 위해서는 안드로이드의 분석방지를 우회하고 동적 분석을 진행할 수 있도록 하는 프레임워크의 개발이 필요하다.
바이너리 계측 프레임워크는 CPU, 사용 언어 등에 따라 다양한 방법이 존재한다. 또한 기존의 계측 프레임워크는 직접 가상 머신 혹은 커널 레벨의 코드를 수정하여 작성하기 때문에 개발과 사용에는 숙련되기 위한 시간과 노력이 필요하다. 현재 PC를 대상으로 하는 분석 프레임워크는 다양하게 존재하고 있지만 안드로이드 악성 애플리케이션의 분석을 위한 프레임워크의 경우 많은 보완이 필요한 수준이다. 현재 많이 사용하는 CPU 기반의 분석 프레임워크로는 Pin tool과 DynamoRio가 있다.
종래의 분석 시스템의 경우, 루팅, 에뮬레이터, 디버거 등을 통하여 분석 환경을 구성하였는데, 악성 애플리케이션 개발 기술의 발전으로 인해 분석 환경에 대한 탐지 기법들이 등장하면서 기존 분석 시스템이 무력화되는 문제가 발생하였다. 이러한 문제를 해결하기 위해 알려진 분석방지기법에 대해서는 우회가 가능하도록 조치하고 있으나 근본적인 문제인 분석 시스템의 구성 문제에 대해서는 해결하지 못하고 있는 실정이다.
악성 행위만을 수행하는 기존의 악성 애플리케이션과는 달리 최신의 악성 애플리케이션은 분석방지를 위한 기술을 함께 적용시키는 것으로 기존의 분석 방법을 사용할 수 없게 만들었다. 이런 악성 애플리케이션을 분석하기 위해서는 분석 기능뿐만 아니라 분석방지 기법 우회 기능을 제공하는 분석 프레임워크가 필요하다.
본 발명의 배경이 되는 기술은 대한민국 공개특허공보 제10-2016-0114037호(2016.10.04 공개)에 개시되어 있다.
본 발명이 이루고자 하는 기술적 과제는 모바일 환경에서 애플리케이션을 분석하는 기능과 분석방지기법 우회 기능을 제공하기 위한 모바일 코드 자동 분석을 위한 동적 바이너리 계측 코드추출장치 및 그 방법을 제공하기 위한 것이다.
이러한 기술적 과제를 이루기 위한 본 발명의 실시예에 따른 모바일 환경 내에서 애플리케이션을 자동분석하기 위한 동적 바이너리 계측 코드추출장치에 있어서, 모바일 환경에서 실행중인 애플리케이션으로부터 수신된 실행 코드에서 객체를 추출하고 관리하는 구성 요소 매니저부, 상기 객체를 추출한 실행 코드의 실행정보를 관리하는 실행 환경 매니저부, 그리고 상기 구성요소 매니저부로부터 추출된 객체정보와 상기 실행 환경 매니저부로부터 실행정보를 수신하고, 수신된 객체정보와 실행정보를 결합하여 파일형태로 저장하거나 외부로 전달하는 로그 매니저부를 포함한다.
또한, 분석 수행을 위한 기능 명세가 구현된 플러그인을 관리하며, 상기 플러그인이 상기 구성 요소 매니저부 및 상기 실행 환경 매니저부를 활용할 수 있도록 연동하는 기능을 수행하는 플러그인 매니저부를 더 포함할 수 있다.
상기 구성 요소 매니저부는, 상기 실행 코드로부터 파생된 객체를 추출하는 객체 추출부, 상기 추출된 객체에 대한 값을 조회하거나 객체와 객체 사이의 연결 관계를 추적하는 모니터부, 그리고 상기 추출된 객체가 감염되거나 분석회피된 코드를 포함할 경우 우회 또는 제거의 기능을 수행하는 객체 관리부를 포함할 수 있다,
상기 객체는, 현재 작업이 일어나는 클래스에 대한 정보를 포함하는 CLASS, 현재 실행중인 함수에 해당하는 정보를 포함하는 METHOD, 상기 클래스가 갖고 있는 세부정보인 특성에 관련된 데이터를 포함하는 Field, CPU 명령어에 해당하는 정보를 포함하는 Instruction, 그리고 객체와 애플리케이션이 실행 중 사용하는 정보 포함하는 Object를 포함할 수 있다.
상기 실행 환경 매니저부는, 상기 애플리케이션으로부터 실행 코드를 수신하고, 수신된 실행 코드에 포함되며 특정 기능을 담당하는 객체가 저장된 스택프레임에 대하여 추가, 제거, 복사, 수정의 기능을 수행하는 스택관리모듈, 그리고 상기 실행 코드의 실행 흐름을 제어하는 실행제어관리모듈을 포함할 수 있다.
상기 객체 추출부가 상기 애플리케이션의 실행 코드의 하나 이상의 라인을 전달받으면, 상기 전달받은 하나 이상의 라인으로부터 추출된 객체 정보와 실행정보는 분류되어 객체 추출부와, 실행 환경 매니저부에 저장될 수 있다.
본 발명의 다른 실시예에 따른 모바일 환경 내에서 동적 바이너리 계측 코드추출장치를 이용한 모바일 코드를 자동 분석을 위한 방법에 있어서, 모바일 환경에서 실행중인 애플리케이션으로부터 수신된 실행 코드에 대한 정보를 구성 요소 매니저부와 실행 환경 매니저부에 각각 전달하고, 상기 실행 코드에 대한 정보를 전달받은 구성 요소 매니저부는 객체를 추출하고, 상기 실행 코드에 대한 정보를 전달받은 실행 환경 매니져부는 실행정보를 추출하는 단계, 상기 APK실행부에서 실행 코드를 실행하겠다는 명령에 대한 정보를 구성요소 매니저부에 전달하는 단계, 그리고 상기 구성요소 매니저부로부터 추출된 객체정보와 실행 환경 매니저부로부터 실행정보를 수신한 로그 메니저부가 수신된 객체정보와 실행정보를 결합하여 파일형태로 저장하거나 외부로 전달하는 단계를 포함한다.
이와 같이 본 발명에 따르면, 분석방지기법이 적용되어 기존의 방법으로 분석이 어려워진 악성 애플리케이션을 분석할 수 있어, 최신의 악성 애플리케이션의 분석이 가능하게 되고, 시간과 노력 또한 단축 시킬 수 있어 악성 애플리케이션으로 인해 입는 피해에 대한 적절하고 빠른 대응이 가능하게 되는 효과가 있다.
또한 본 발명에 따르면, 안드로이드 환경에서의 악성 애플리케이션 분석을 효율적으로 가능하게 하는 바이너리 계측 방법 및 프레임워크를 개발하여 분석에 걸리는 노력, 시간을 단축할 수 있다.
또한 본 발명에 따르면, 분석 프레임워크와 그 플러그인을 이용하여 분석 대상 코드의 흐름을 추출함으로써, 난독화된 애플리케이션의 복호화 루틴 확인 및 분석방지기법의 우회가 가능한 효과가 있다.
또한 본 발명에 따르면, 분석 기능은 플러그인을 통해서 개발되는 형태이기 때문에 새로운 플러그인 개발을 통해 변종 악성 애플리케이션에 대한 빠른 대응이 가능한 효과가 있다.
도 1은 본 발명의 실시예에 따른 동적 바이너리 계측 코드추출장치를 나타내는 구성도이다.
도 2는 도 1에 도시된 코드추출장치의 구조를 나타낸 도면이다.
도 3은 도 2에 도시된 객체 추출부에 포함되는 객체를 나타낸 도면이다.
도 4는 본 발명의 실시예에 따른 동적 바이너리 계측 코드추출장치를 이용한 코드추출방법을 나타내는 순서도이다.
도 5는 도 4에 도시된 로그 매니저부에서 생성한 파일을 개략적으로 나타낸 도면이다.
도 2는 도 1에 도시된 코드추출장치의 구조를 나타낸 도면이다.
도 3은 도 2에 도시된 객체 추출부에 포함되는 객체를 나타낸 도면이다.
도 4는 본 발명의 실시예에 따른 동적 바이너리 계측 코드추출장치를 이용한 코드추출방법을 나타내는 순서도이다.
도 5는 도 4에 도시된 로그 매니저부에서 생성한 파일을 개략적으로 나타낸 도면이다.
이하 첨부된 도면을 참조하여 본 발명에 따른 바람직한 실시예를 상세히 설명하기로 한다. 이 과정에서 도면에 도시된 선들의 두께나 구성요소의 크기 등은 설명의 명료성과 편의상 과장되게 도시되어 있을 수 있다.
또한 후술되는 용어들은 본 발명에서의 기능을 고려하여 정의된 용어들로서, 이는 사용자, 운용자의 의도 또는 관례에 따라 달라질 수 있다. 그러므로 이러한 용어들에 대한 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다.
먼저 도 1을 통해 본 발명의 실시예에 따른 모바일 코드 자동 분석을 위한 동적 바이너리 계측 코드 추출 장치에 대하여 설명한다.
도 1은 본 발명의 실시예에 따른 동적 바이너리 계측 코드 추출 장치를 나타내는 구성도이다.
도 1에 나타낸 바와 같이, 본 발명의 실시예에 따른 코드 추출 장치(100)는 콜백부(110), 구성 요소 매니저부(120), 실행 환경 매니저부(130), 로그 매니저부(140) 및 플러그인 매니저부(150)를 포함한다.
콜백부(110)는 어플리케이션과 코드추출장치(100)에서 발생되는 신호를 전달한다.
구성 요소 매니저부(120)는 어플리케이션으로부터 실행 코드에 포함된 하나 이상의 라인을 수신하고, 수신된 라인에 포함된 객체정보를 추출한다.
실행 환경 매니저부(130)는 구성 요소 매니저부(120)와 동일한 라인을 수신하고, 수신된 라인에 포함된 실행정보를 관리한다.
로그 매니저부(140)는 구성 요소 매니저부(120)로부터 객체 정보를 수신하고, 실행 환경 매니저부(130)로부터 실행 정보를 수신하여, 수신된 객체 정보와 실행 정보를 결합하여 파일을 생성한다.
생성된 파일은 로그 매니저부(140)를 통해 코드추출장치(100)내에 저장되거나, 다른 기기로 전달된다.
플러그인 매니저부(150)는 분석 수행을 위한 기능 명세가 구현된 플러그인을 관리하며, 상기 플러그인이 상기 구성 요소 매니저부 및 상기 실행 환경 매니저부를 활용할 수 있도록 연동하는 기능을 수행한다.
도 2는 도 1에 도시된 코드추출장치의 구조를 나타낸 도면이고, 도 3은 도 2에 도시된 객체 추출부에 포함되는 객체를 나타낸 도면이다.
도 2에 나타낸 바와 같이, 본 발명이 실시예에 따른 코드추출장치(100)는 모바일 환경에서 실행중인 애플리케이션으로부터 실행 코드를 수신하고, 수신된 실행 코드로부터 명령어 조작, 실행 흐름 조작, 오브젝트 조작 등과 같은 행위를 수행할 수 있도록 API를 제공한다.
먼저, 코드 추출 장치(100)는 애플리케이션의 APK실행부(200)를 통해 실행하고자 하는 실행 코드에 포함된 라인을 수신한다.
이때, APK실행부(200)는 명령어 실행, 메서드 실행, 메서드 종료, 데이터 읽기, 데이터 쓰기 등의 이벤트가 발생하기 직전에 이벤트를 발생시키는 이벤트 발생기이다.
APK실행부(200)는 이벤트에 대한 처리를 수행하여 디버깅, 프로파일링 기능을 제공하며, 실행 코드에 포함된 하나 이상의 라인을 실행하는 해석부(210)와, 실행 코드에 포함된 하나 이상의 라인을 실행하기 직전에 실행정보신호를 전달하는 계측부(220)를 포함한다.
여기서 실행 코드는 해당 애플리케이션의 실행 파일에 포함된 코드로서, 복수의 라인 형태로 구현된다. 원칙적으로 1개의 라인 단위로 실행이 이루어지나, 경우에 따라서는 실행 코드의 기능에 따라 복수의 라인이 세트 형태로 실행이 이루어진다.
이하에서는 설명의 편의상 “라인”은 1줄로 국한하지 않고 1줄 이상으로 이루어진 것으로 가정하여 설명한다.
해석부(210)는 실행 코드에 포함되어 있는 하나 이상의 라인을 획득하고, 획득한 라인을 코드 추출장치(100)의 콜백부(110)에 전달한다.
즉, 본 발명의 실시예에서 해석부(210)는 하나 이상의 라인 중에서 하나의 라인만을 획득한다고 기재하였으나, 이에 한정하지 않고 다수개의 라인을 하나의 세트로 형성한 세트 형태의 라인을 획득할 수도 있다.
계측부(220)는 상기 해석부(210)로부터 획득된 실행 코드에 포함된 해당 라인을 실행하기에 앞서 코드 추출 장치(100)의 모니터부(121)에 획득한 라인을 실행하겠다라는 정보 신호를 전달한다.
획득한 라인을 실행하겠다라는 정보 신호를 수신한 모니터부(121)는 로그매니저부(140)로 하여금 객제정보와 실행정보를 결합한 파일을 생성하게 한다.
파일 생성이 완료되면, 모니터부(121)는 계측부(220)에 실행하고자 하는 라인을 실행하라는 신호를 계측부(220)에 전달한다. 실행 신호를 수신한 계측부(220)는 실행 신호를 해석부(210)에 전달하여, 해석부(210)에서 라인이 실행된다.
한편, 콜백부(110)는 해석부(210)가 획득한 하나의 라인을 수신받는다.
하나의 라인을 수신한 콜백부(110)는 수신한 라인을 구성 요소 매니저부(120)와 실행 환경 매니저부(130)에 각각 제공한다.
라인을 수신한 구성 요소 매니저부(120)는 라인으로 파생된 객체 정보를 추출하여 저장하고, 실행 환경 매니저부(130)는 라인에 포함된 실행정보를 추출하여 저장한다.
이때, 구성 요소 매니저부(120)는 모니터부(121), 객체 추출부(122) 및 객체 관리부(123)를 포함한다.
모니터부(121)는 계측부(220)로부터 라인을 실행한다는 정보를 수신하였을 경우, 실행하고자 하는 라인에 포함되어 있는 객체에 대한 값을 조회하거나 객체와 객체 사이의 연결 관계를 추적한다.
또한, 모니터부(121)는 객체 추출부(122)와 실행 환경 매니저부(130)에게 각각 객체정보와 실행정보를 로그 매니저부(140)에 전달하라는 신호를 발생한다.
객체 추출부(122)는 콜백부(110)를 통해 한줄의 라인을 수신하고, 수신된 라인에 포함된 객체 정보를 추출하고 이를 저장하고, 저장된 객체 정보는 모니터부(121)에서 발생된 신호에 따라 필요한 객체 정보를 추출하여 로그 매니저부(140)에 전달한다.
한편, 객체 추출부(122)에서 추출되는 객체는 라인으로부터 파생된 구성요소로 런타임에 의해서 관리되는 객체를 의미하며, 도 3에 도시된 바와 같이, 현재 작업이 일어나는 클래스에 대한 정보를 포함하는 Class, 현재 실행중인 함수에 해당하는 정보를 포함하는 Method, 상기 클래스가 갖고 있는 세부정보인 특성에 관련된 데이터를 포함하는 Field, CPU 명령어에 해당하는 정보를 포함하는 Instruction, 그리고 객체와 애플리케이션이 실행 중 사용하는 정보를 포함하는 Object를 포함한다.
이때, class는 Method와 Field를 포함하는 하나의 큰 구조를 뜻한다.
예를 들어, class를 실행하고자 하는 실행 코드라고 가정하면, method는 해당 실행 코드의 동작정보를 나타내고, field는 해당 실행 코드의 상태정보를 나타낸다.
따라서, class에 대한 정보를 가지고 있으면 내부 정보인 Method와 Field에 대한 접근이 용이한 장점이 있다. 또한, 상기와 같이 class를 Method와 Field를 분류하여 관리함으로써 안드로이드 환경에서 코드추출장치의 내부적인 동작을 수행하는데 있어서 훨씬 용이하고, 확장성을 도모할 수 있다.
객체 관리부(123)는 객체 추출부(122)를 통해 추출된 객체 정보를 관리하는 것으로, 객체 관리부(123)는 추출된 객체가 감염되거나 분석회피된 코드를 포함할 경우 우회 또는 제거의 기능을 수행한다. 즉, 객체 관리부(123)는 회피기법에 대한 분석을 방지하고자 심어진 코드를 제거하여 안드로이드의 분석방지를 우회할 수 있도록 한다.
또한, 실행 환경 매니저부(130)는 스택관리모듈(131)과 실행제어 관리모듈(132)을 포함한다.
스택관리모듈(131)은 콜백부(110)를 통해 수신된 하나 이상의 라인에 포함된 객체가 저장된 스택 프레임을 관리하는 것으로, 스택관리모듈(131)은 런타임에 의해 관리되는 스택 프레임을 추가, 제거, 복사, 수정 등의 기능을 제공한다.
한편, 하나의 라인에는 특정 기능을 담당하는 하나 이상의 객체가 포함되며, 하나 이상의 객체는 각각의 스택프레임에 저장된다. 이때, 스택프레임에 저장된 객체는 상기 객체 추출부(122)에 추출된 객체와 동일할 수 있다.
실행제어 관리모듈(132)는 실행되는 라인을 제어하여 실행 흐름을 변경한다. 예를 들어, 객체 추출부(122)에서 추출된 객체 정보를 통해 3번째 라인에 악성코드가 발견되었을 경우, 실행제어 관리모듈(132)은 "3번째 라인에 악성 코드가 있으니 건너뛰고, 4번째 라인을 먼저 실행하라"라는 명령 신호를 발생하고, 발생된 신호는 모니터부(121)를 통해 계측부(220)에 전달된다.
상기와 같이 구성 요소 매니저부(120)와 실행 환경 매니저부(130)는 APK실행부(200)로부터 하나의 라인 정보를 수신하고, 수신된 라인 정보를 이용하여 구성 요소 매니저부(120)는 객체정보를 추출하고, 실행 환경 매니저부(130)는 실행정보를 추출한다.
추출된 객체 정보와 실행정보는 각각 구성 요소 매니저부(120)와 실행 환경 매니저부(130)에 저장된 상태를 유지하며, 계측부(220)에서 특정한 라인을 실행한다는 신호가 발생될 경우, 저장된 객체 정보와 실행정보를 로그매니저부(140)에 전달한다.
따라서, 로그매니저부(140)는 수신된 객체정보와 실행정보를 결합하여 파일을 생성한다.
생성된 파일은 로그매니저부(140)에 저장되거나, 유선 또는 무선 통신을 통하여 다른 기기로 전달된다.
한편, 코드추출장치(100)는 플러그인 매니저부(150)를 더 포함하고 있으며, 플러그인 매니저부(150)는 분석 수행을 위한 기능 명세가 구현된 플러그인을 관리하며, 상기 플러그인이 상기 구성 요소 매니저부 및 상기 실행 환경 매니저부를 활용할 수 있도록 연동하는 기능을 수행한다.
플러그인 매니저부(150)는 특정 객체정보를 추출하거나 특정 라인의 실행정보만을 추출하는 것으로, 확장성을 위한 모듈이다.
이하에서는 도 4 및 도 5를 이용하여 본 발명의 실시예에 따른 모바일 환경 내에서 동적 바이너리 계측 코드추출장치를 이용한 모바일 코드를 자동 분석을 위한 방법에 대하여 더욱 상세하게 설명한다.
도 4는 본 발명의 실시예에 따른 동적 바이너리 계측 코드추출장치를 이용한 코드추출방법을 나타내는 순서도이고, 도 5는 도 4에 도시된 로그 매니저부에서 생성한 파일을 개략적으로 나타낸 도면이다.
도 4에 나타난 바와 같이, 본 발명의 실시예에 따르면, 코드추출장치(100)는 모바일 환경에서 실행중인 애플리케이션의 APK실행부(200)로부터 하나 이상의 라인을 수신한다(S410),
APK실행부(200)에 포함된 해석부(210)는 실행 코드에 포함된 하나 이상의 라인을 추출한다. 추출된 라인은 첫번째 라인부터 순차적으로 콜백부(110)를 통해 구성 요소 매니저부(120)와 실행 환경 매니저부(130)에 전달된다.
다음으로, 라인에 대한 정보를 수신 받은 구성 요소 매니저부(120)는 객체정보를 추출하고, 실행 환경 매니저부(130)는 수신된 라인을 통해 실행정보를 추출한다.
추출된 객체 정보와 실행정보는 구성 요소 매니저부(120)와 실행 환경 매니저부(130) 내에 각각 저장된다(S420).
S420 단계와 같이 구성 요소 매니저부(120)가 객제 정보를 저장하면, 실행 환경 매니저부(130)는 실행정보를 저장한 상태에서, 계측부(220)는 실행하고자 하는 특정한 라인에 대한 정보를 전달한다(S430).
예를 들어, APK장치(200)가 실행 코드에 포함된 하나 이상의 라인 중에서 첫번째 라인을 실행하고자 한다면, 계측부(220)는 첫번째 라인을 실행하기 앞서 먼저 코드추출장치(100)에 첫번째 라인을 실행하겠다라는 정보를 전달한다.
계측부(220)로부터 첫번째 라인을 실행하겠다라는 정보를 전달받은 모니터부(121)는 구성 요소 매니저부(120)와 실행 환경 매니저부(130)에 첫번째 라인으로부터 추출된 객체정보와 실행정보를 요청하여 전달받는다(S440).
따라서, 로그 매니저부(140)는 구성 요소 매니저부(120)로부터 수신된 객체정보와 실행 환경 매니저부(130)로부터 수신된 실행정보를 상호 결합하여 파일을 생성한다(S450).
상기 로그 매니저부(140)에서 생성된 파일에는 실행 환경 매니저부(130)로부터 수신된 실행정보인 Thread ID와, 구성 요소 매니저부(120)로부터 수신된 구성요소를 표시한다. 도 5에 나타낸 바와 같이, 예를 들어, 현재 흐름을 알 수 있게 해주는 지표인 Thread ID가 12이고, 실행정보인 12에 포함된 class와 method는 각각 Car(class에 포함)와 startEngine(method에 포함)을 수신하여 표시한다.
이때, Instruction은 method의 구성요소인 "0xff8cf78c"가 표시된다.
한편, method에 포함된 다른 구성인 speedup이 수신되고, 수신된 speedup에 대해 요구되는 값이 30일 경우, object는 30으로 나타내며, Instruction은 0xff8cf9c0"가 표시된다.
상기와 같이 생성된 파일은 코드추출장치(100)내에 저장될 수도 있고, 필요에 따라 외부의 다른 기기에 stream방식으로 전달되어 외부에서 파일이 생성될 수도 있다.
파일의 생성이 완료된 다음에는 모니터부(121)는 콜백부(110)를 통해 APK장치(200)에 첫번째 라인을 실행해도 된다는 신호를 전달한다(S460).
실행신호를 전달받은 APK장치(200)는 첫번째 라인을 실행하고, 실행함과 동시에 계측부(220)는 두번째 라인을 실행하겠다라는 신호 정보를 생성하여 코드추출장치(100)에 송신함으로써, 상기 순서를 반복하여 실행한다.
본 발명의 실시예에 따른 코드 추출 장치에서 제공하는 명령어 조작, 오브젝트 조작, 실행 흐름 조작 등의 행위는 안드로이드에서 내장하고 있는 계측 기능을 활용하기 때문에 안정성이 더 뛰어나다. 또한, 코드 추출 장치를 안드로이드 계측 프레임워크와 연동하는 과정에서 '분석을 위한 환경'이 갖는 특징적 요소들 활용하지 않기 때문에 악성 애플리케이션에게 일반적인 실행환경처럼 분석 환경을 제공할 수 있다. 따라서 악성 애플리케이션이 활발하게 악성 행위를 수행할 것이기 때문에 악성 애플리케이션에 대한 상세하게 분석할 수 있다.
상술한 바와 같이, 본 발명의 실시예에 따른 모바일 코드 자동 분석을 위한 동적 바이너리 계측 방법은 분석방지기법을 적용함으로써 기존의 방법으로 분석이 난해했던 악성 애플리케이션을 분석할 수 있어, 최신의 악성 애플리케이션의 분석이 가능하게 한다. 또한, 애플리케이션의 분석에 소요되는 시간과 노력을 단축 시킬 수 있어 악성 애플리케이션으로 인해 입는 피해에 대한 적절하고 빠른 대응이 가능하게 되는 효과가 있다.
또한 본 발명의 실시예에 따르면, 안드로이드 환경에서의 악성 애플리케이션 분석을 효율적으로 가능하게 하는 바이너리 계측 방법 및 프레임워크를 개발하여 분석에 걸리는 노력, 시간을 단축할 수 있다.
또한 본 발명의 실시예에 따르면, 분석 프레임워크와 그 플러그인을 이용하여 분석 대상 코드의 흐름을 추출함으로써, 난독화된 애플리케이션의 복호화 루틴 확인 및 분석방지기법의 우회가 가능한 효과가 있다.
또한 본 발명의 실시예에 따르면, 분석 기능은 플러그인을 통해서 개발되는 형태이기 때문에 새로운 플러그인 개발을 통해 변종 악성 애플리케이션에 대한 빠른 대응이 가능한 효과가 있다.
본 발명은 도면에 도시된 실시예를 참고로 하여 설명되었으나 이는 예시적인 것에 불과하며, 당해 기술이 속하는 분야에서 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서 본 발명의 진정한 기술적 보호범위는 아래의 특허청구범위의 기술적 사상에 의하여 정해져야 할 것이다.
100 : 코드 추출 장치
110 : 콜백부
120 : 구성 요소 매니저부
121 : 모니터부
122 : 객체 추출부
123 : 객체 관리부
130 : 실행 환경 매니저부
131 : 스택 관리 모듈
132 : 실행제어 관리모듈
140 : 로그 매니저부
150 : 플러그인 매니저부
110 : 콜백부
120 : 구성 요소 매니저부
121 : 모니터부
122 : 객체 추출부
123 : 객체 관리부
130 : 실행 환경 매니저부
131 : 스택 관리 모듈
132 : 실행제어 관리모듈
140 : 로그 매니저부
150 : 플러그인 매니저부
Claims (12)
- 모바일 환경 내에서 애플리케이션을 자동분석하기 위한 동적 바이너리 계측 코드추출장치에 있어서,
모바일 환경에서 실행중인 애플리케이션으로부터 수신된 실행 코드로부터 파생된 객체를 추출하는 객체 추출부, 상기 추출된 객체에 대한 값을 조회하거나 객체와 객체 사이의 연결 관계를 추적하는 모니터부, 그리고 상기 추출된 객체가 감염되거나 분석회피된 코드를 포함할 경우 우회 또는 제거의 기능을 수행하는 객체 관리부를 포함하는 구성 요소 매니저부,
상기 애플리케이션으로부터 실행 코드를 수신하고, 수신된 실행 코드에 포함되며 특정 기능을 담당하는 객체가 저장된 스택프레임에 대하여 추가, 제거, 복사, 수정의 기능을 수행하는 스택관리모듈, 그리고 상기 실행 코드의 실행 흐름을 제어하는 실행제어관리모듈을 포함하는 실행 환경 매니저부, 그리고
상기 구성요소 매니저부로부터 추출된 객체정보와 상기 실행 환경 매니저부로부터 실행정보를 수신하고, 수신된 객체정보와 실행정보를 결합하여 파일형태로 저장하거나 외부로 전달하는 로그 매니저부를 포함하는 동적 바이너리 계측 코드추출장치. - 제1항에 있어서,
분석 수행을 위한 기능 명세가 구현된 플러그인을 관리하며, 상기 플러그인이 상기 구성 요소 매니저부 및 상기 실행 환경 매니저부를 활용할 수 있도록 연동하는 기능을 수행하는 플러그인 매니저부를 더 포함하는 동적 바이너리 계측 코드추출장치. - 삭제
- 제1항에 있어서,
상기 객체는,
현재 작업이 일어나는 클래스에 대한 정보를 포함하는 CLASS,
현재 실행중인 함수에 해당하는 정보를 포함하는 METHOD,
상기 클래스가 갖고 있는 세부정보인 특성에 관련된 데이터를 포함하는 Field,
CPU 명령어에 해당하는 정보를 포함하는 Instruction, 그리고
객체와 애플리케이션이 실행 중 사용하는 정보 포함하는 Object를 포함하는 동적 바이너리 계측 코드추출장치. - 삭제
- 제1항에 있어서,
상기 객체 추출부가 상기 애플리케이션의 실행 코드의 하나 이상의 라인을 전달받으면, 상기 전달받은 하나 이상의 라인으로부터 객체 정보와 실행정보를 추출하고, 추출된 객체정보는 객체 추출부에 저장되고, 추출된 실행정보는 실행 환경 매니저부에 저장되는 동적 바이너리 계측 코드추출장치. - 모바일 환경 내에서 동적 바이너리 계측 코드추출장치를 이용한 모바일 코드를 자동 분석을 위한 방법에 있어서,
모바일 환경에서 실행중인 애플리케이션으로부터 수신된 실행 코드로부터 파생된 객체를 추출하고, 상기 추출된 객체에 대한 값을 조회하거나 객체와 객체 사이의 연결 관계를 추적하며, 상기 추출된 객체가 감염되거나 분석회피된 코드를 포함할 경우 우회 또는 제거의 기능을 수행하는 단계,
상기 애플리케이션으로부터 실행 코드를 수신하고, 수신된 실행 코드에 포함되며 특정 기능을 담당하는 객체가 저장된 스택프레임에 대하여 추가, 제거, 복사, 수정의 기능을 수행하고, 상기 실행 코드의 실행 흐름을 제어하는 단계를 포함하는 단계, 그리고
상기 추출된 객체정보와실행정보를 수신하고, 상기 수신된 객체정보와 실행정보를 결합하여 파일형태로 저장하거나 외부로 전달하는 단계를 포함하는 동적 바이너리 계측 코드추출방법. - 제7항에 있어서,
분석 수행을 위한 기능 명세가 구현된 플러그인을 관리하며, 상기 플러그인이 구성 요소 매니저부 및 실행 환경 매니저부를 활용할 수 있도록 연동하는 기능을 수행하는 단계를 더 포함하는 동적 바이너리 계측 코드추출방법. - 삭제
- 제7항에 있어서,
상기 객체는
현재 작업이 일어나는 클래스에 대한 정보를 포함하는 Class,
현재 실행중인 함수에 해당하는 정보를 포함하는 Method,
상기 클래스가 갖고 있는 세부정보인 특성에 관련된 데이터를 포함하는 Field,
CPU 명령어에 해당하는 정보를 포함하는 Instruction, 그리고
객체와 애플리케이션이 실행 중 사용하는 정보 포함하는 Object를 포함하는 동적 바이너리 계측 코드추출방법. - 삭제
- 제7항에 있어서,
상기 실행 코드로부터 파생된 객체를 추출하는 단계는,
상기 애플리케이션의 실행 코드의 하나 이상의 라인을 전달받으면, 상기 전달받은 하나 이상의 라인으로부터 객체 정보와 실행정보를 추출하고, 추출된 객체정보는 객체 추출부에 저장되고, 추출된 실행정보는 실행 환경 매니저부에 저장되는 동적 바이너리 계측 코드추출방법.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020170153306 | 2017-11-16 | ||
KR20170153306 | 2017-11-16 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR101976993B1 true KR101976993B1 (ko) | 2019-05-10 |
Family
ID=66580970
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020180107100A KR101976993B1 (ko) | 2017-11-16 | 2018-09-07 | 모바일 코드 자동 분석을 위한 동적 바이너리 계측 코드추출장치 및 그 방법 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR101976993B1 (ko) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101518420B1 (ko) * | 2014-11-11 | 2015-05-07 | 주식회사 에스이웍스 | 안드로이드 플랫폼에서의 apk 파일 관리 장치 및 방법 |
KR101557455B1 (ko) * | 2015-04-21 | 2015-10-07 | 숭실대학교산학협력단 | 응용 프로그램 코드 분석 장치 및 그것을 이용한 코드 분석 방법 |
KR101623096B1 (ko) * | 2015-05-13 | 2016-05-23 | 주식회사 에스이웍스 | 안드로이드 플랫폼에서의 apk 파일 관리 장치 및 방법 |
KR20170068814A (ko) * | 2015-12-10 | 2017-06-20 | 한국전자통신연구원 | 악성 모바일 앱 감지 장치 및 방법 |
-
2018
- 2018-09-07 KR KR1020180107100A patent/KR101976993B1/ko active IP Right Grant
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101518420B1 (ko) * | 2014-11-11 | 2015-05-07 | 주식회사 에스이웍스 | 안드로이드 플랫폼에서의 apk 파일 관리 장치 및 방법 |
KR101557455B1 (ko) * | 2015-04-21 | 2015-10-07 | 숭실대학교산학협력단 | 응용 프로그램 코드 분석 장치 및 그것을 이용한 코드 분석 방법 |
KR101623096B1 (ko) * | 2015-05-13 | 2016-05-23 | 주식회사 에스이웍스 | 안드로이드 플랫폼에서의 apk 파일 관리 장치 및 방법 |
KR20170068814A (ko) * | 2015-12-10 | 2017-06-20 | 한국전자통신연구원 | 악성 모바일 앱 감지 장치 및 방법 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9262300B1 (en) | Debugging computer programming code in a cloud debugger environment | |
US9063766B2 (en) | System and method of manipulating virtual machine recordings for high-level execution and replay | |
US20170255545A1 (en) | Methods and systems of function-specific tracing | |
US9965631B2 (en) | Apparatus and method for analyzing malicious code in multi-core environment using a program flow tracer | |
US9355002B2 (en) | Capturing trace information using annotated trace output | |
US8881115B2 (en) | Compiling source code for debugging with expanded snapshots | |
US11726800B2 (en) | Remote component loader | |
US20130311600A1 (en) | Event-responsive download of portions of streamed applications | |
US10366226B2 (en) | Malicious code analysis device and method based on external device connected via USB cable | |
US10997055B2 (en) | Methods, circuits, apparatus, systems and associated software modules for evaluating code behavior | |
US20180025162A1 (en) | Application program analysis apparatus and method | |
US8533683B2 (en) | Stack walking enhancements using sensorpoints | |
KR101926142B1 (ko) | 프로그램 분석 장치 및 방법 | |
US10713145B2 (en) | Automated debugging with combined static and dynamic analysis | |
US8904346B1 (en) | Method and system for automated load testing of web applications | |
US20160088007A1 (en) | Information processing device and information processing method | |
US20180189167A1 (en) | Methods, circuits, apparatus, systems and associated software modules for evaluating code behavior | |
US20040168157A1 (en) | System and method for creating a process invocation tree | |
US20190102279A1 (en) | Generating an instrumented software package and executing an instance thereof | |
US20160291951A1 (en) | Dynamic provision of debuggable program code | |
US20110219365A1 (en) | High and low value application state | |
KR101976993B1 (ko) | 모바일 코드 자동 분석을 위한 동적 바이너리 계측 코드추출장치 및 그 방법 | |
KR101593183B1 (ko) | 가상환경에서의 악성코드 분석을 위한 자동 행위발현 장치 및 방법 | |
US8171345B2 (en) | Disablement of an exception generating operation of a client system | |
US10169197B2 (en) | Temporary breakpoints during debug process |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |