KR102226218B1 - Apparatus and method for extracting feature information to identify an application created by cross-platform development framework - Google Patents

Apparatus and method for extracting feature information to identify an application created by cross-platform development framework Download PDF

Info

Publication number
KR102226218B1
KR102226218B1 KR1020190135873A KR20190135873A KR102226218B1 KR 102226218 B1 KR102226218 B1 KR 102226218B1 KR 1020190135873 A KR1020190135873 A KR 1020190135873A KR 20190135873 A KR20190135873 A KR 20190135873A KR 102226218 B1 KR102226218 B1 KR 102226218B1
Authority
KR
South Korea
Prior art keywords
application
framework
analysis unit
created
classification unit
Prior art date
Application number
KR1020190135873A
Other languages
Korean (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 KR1020190135873A priority Critical patent/KR102226218B1/en
Application granted granted Critical
Publication of KR102226218B1 publication Critical patent/KR102226218B1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/77Software metrics
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/75Structural analysis for program understanding

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

The present invention is a technology capable of classifying the types of cross-platform development frameworks used for application development by using symbol information of native functions and symbols of main classes inheriting the main classes of WebKit. A device for extracting feature information comprises: an input unit receiving an application to be analyzed for a creation platform; an analysis unit selecting a method symbol that an access flag is a native function from a dex file of the application received from the input unit; and a classification unit classifying a cross-platform development framework used to create the application using the information selected in the analysis unit.

Description

크로스플랫폼 개발 프레임워크로 제작된 애플리케이션을 식별하기 위한 특징정보 추출 장치 및 방법 {APPARATUS AND METHOD FOR EXTRACTING FEATURE INFORMATION TO IDENTIFY AN APPLICATION CREATED BY CROSS-PLATFORM DEVELOPMENT FRAMEWORK}A device and method for extracting feature information to identify an application created with a cross-platform development framework {APPARATUS AND METHOD FOR EXTRACTING FEATURE INFORMATION TO IDENTIFY AN APPLICATION CREATED BY CROSS-PLATFORM DEVELOPMENT FRAMEWORK}

본 발명은 크로스플랫폼 개발 프레임워크로 제작된 애플리케이션을 식별하기 위한 특징정보 추출 장치 및 방법에 관한 것으로서, 보다 상세하게는 네이티브 함수의 심볼 정보 및 웹킷의 주요 클래스를 상속받는 주요 클래스들의 심볼을 이용하여 애플리케이션 개발에 이용된 크로스플랫폼 개발 프레임워크의 종류를 분류할 수 있는 기술이다.The present invention relates to an apparatus and method for extracting feature information for identifying an application produced by a cross-platform development framework, and in more detail, using symbol information of a native function and symbols of main classes inheriting main classes of WebKit. It is a technology that can classify the types of cross-platform development frameworks used in application development.

스마트폰 플랫폼은 안드로이드, iOS, 윈도우즈 폰, BlackBerry OS와 같이 다양하다. 각 스마트폰 플랫폼은 개발 환경과 프로그래밍 언어가 달라 특정 플랫폼에 종속되어 개발된 소프트웨어(애플리케이션)는 다른 플랫폼에 그대로 사용될 수 없다. 따라서 특정 플랫폼을 위한 네이티브 앱(native app)을 서로 다른 플랫폼마다 각각 별도로 개발하는 것은 개발 비용을 크게 증가시킨다. 이러한 문제를 해결하기 위해서 최근 크로스-플랫폼 모바일 앱 개발 프레임워크(cross-platform mobile app development framework)의 사용이 증가하고 있다. 크로스-플랫폼 모바일 앱 개발 프레임워크를 줄여서, 크로스플랫폼 개발 프레임워크(cross-platform development framework)로 칭한다.Smartphone platforms are diverse, such as Android, iOS, Windows Phone, and BlackBerry OS. Each smartphone platform has different development environments and programming languages, so software (applications) developed by subordinate to a specific platform cannot be used on other platforms as it is. Therefore, developing a native app for a specific platform separately for each different platform greatly increases the development cost. In order to solve this problem, the use of a cross-platform mobile app development framework is increasing recently. Cross-platform mobile app development framework is shortened and referred to as a cross-platform development framework.

대표적인 크로스-플랫폼 개발 프레임워크로는 유니티(Unity), 자마린(Xamarin), Appcelerator Titanium, Apache Cordova, PhoneGap, Sencha, Cocos2d 등이 존재한다. 이러한 프레임워크들은 모바일 애플리케이션의 개발 생명주기 동안 효율성을 증대시켜 준다. 이러한 이유 때문에 특정 플랫폼에 독립적인 크로스플랫폼 개발 프레임워크가 주목받고 있다. Sencha나 PhoneGap 등의 크로스플랫폼 개발 프레임워크들은 웹 기반의 Javascript, HTML5을 사용한다. 유니티는 기존 Windows나 MacOS X와 같은 PC 기반 플랫폼에서 게임 개발에 사용되는 엔진으로, 2010년 Unity 3이 발표되면서 다양한 스마트폰 플랫폼용 모바일 애플리케이션 개발에 사용되고 있다. C# 프로그래머들은 유니티를 이용하여 새로운 프로그래밍 언어를 익힐 필요 없이 모바일 애플리케이션을 즉시 개발할 수 있으며, 작성한 C# 코드를 다양한 플랫폼 간에 재사용이 가능하다. 이들 크로스-플랫폼 개발 프레임워크로 작성된 애플리케이션들을 크로스플랫폼 애플리케이션이라고 칭한다.Representative cross-platform development frameworks include Unity, Xamarin, Appcelerator Titanium, Apache Cordova, PhoneGap, Sencha, and Cocos2d. These frameworks increase efficiency during the development life cycle of mobile applications. For this reason, a cross-platform development framework independent of a specific platform is attracting attention. Cross-platform development frameworks such as Sencha and PhoneGap use web-based Javascript and HTML5. Unity is an engine used for game development on PC-based platforms such as Windows or MacOS X, and has been used for mobile application development for various smartphone platforms with the release of Unity 3 in 2010. C# programmers can use Unity to instantly develop mobile applications without having to learn a new programming language, and they can reuse their C# code across various platforms. Applications written with these cross-platform development frameworks are referred to as cross-platform applications.

한편, 멀웨어 작성자(malware writer)들도 멀웨어 제작 시간과 비용을 최소화하면서 최대의 공격 효과를 내려고 이러한 크로스-플랫폼 개발 프레임워크를 사용한다. 공격자들은 C#을 사용하여 악성 애플리케이션들을 더 빨리 수정하여 더 많은 모바일 플랫폼들에 전파할 수 있기 때문이다. Veil-Framework는 백신을 우회하는 실행파일을 생성하는 공격 도구들의 집합으로, 페이로드가 C#으로 개발되기도 했다.On the other hand, malware writers also use this cross-platform development framework to maximize the effect of attack while minimizing the time and cost of creating malware. This is because attackers can use C# to modify malicious applications faster and spread them to more mobile platforms. Veil-Framework is a set of attack tools that create an executable file that bypasses the vaccine, and the payload was also developed in C#.

실제 인터넷을 검색하여 보면 C# 기반의 악성코드를 제작하는 정보가 많다. C#으로 키로거(keylogger)를 작성하는 방법, C#을 사용한 Crypto-Ransomware 작성, C#으로 콘솔 기반의 트로이목마를 작성하는 튜토리얼, C#기반 Nemesis.Worm 등을 접할 수 있다. 실제 Mylonas 등은 실험을 통해 학생들이 C#을 이용하여 Windows Mobile에서는 이틀 만에 악성 애플리케이션을 제작하고, Windows Phone에서는 하루 만에 악성 애플리케이션을 제작할 수 있음을 보였다. Lee 등의 연구에 의하면, 유니티와 PhoneGap으로 작성된 안드로이드 애플리케이션들이 증가하고 있다. 그리고 잠재적으로 원하지 않는 애플리케이션(potentially unwanted app, PUA)들의 샘플이 유니티와 Cocos2d로 작성된 애플리케이션들 중에서 다수 발견되었으며, 멀웨어 샘플이 PhoneGap으로 작성된 애플리케이션들에서 많이 발견되었다. 결과적으로, 보안 연구자들이 크로스플랫폼 개발 프레임워크로 제작된 모바일 멀웨어를 분석하고 탐지해야 하는 큰 도전과제에 직면하고 있다고 서술하였다. 이처럼, 크로스플랫폼 개발 프레임워크로 작성되는 모바일 애플리케이션들은 많은데, 이들 프레임워크로 제작된 악성 애플리케이션이나 불법 애플리케이션에 대한 관심이나 분석 연구는 많지 않다.If you actually search the Internet, there is a lot of information about creating C#-based malicious codes. You can learn how to write a keylogger in C#, write Crypto-Ransomware using C#, a tutorial for writing a console-based Trojan horse in C#, and Nemesis.Worm based on C#. Actually, Mylonas et al. showed that students can use C# to create malicious applications in two days on Windows Mobile and in one day on Windows Phone. According to research by Lee et al., Android applications written with Unity and PhoneGap are increasing. In addition, many samples of potentially unwanted applications (PUAs) were found among applications written with Unity and Cocos2d, and many malware samples were found in applications written with PhoneGap. As a result, he described that security researchers are facing a big challenge to analyze and detect mobile malware created with a cross-platform development framework. As such, there are many mobile applications written with cross-platform development frameworks, but there are not many studies or interest in malicious applications or illegal applications created with these frameworks.

종래 연구에서는 모바일 애플리케이션 개발 방법 및 애플리케이션 실행 방법에 따라 여러 분류 기준을 제시했다. 그 중 논문 ‘Evaluating cross-platform development approaches for mobile applications’는 (1)네이티브 앱(native apps), (2)모바일 웹 애플리케이션(mobile web apps), (3)하이브리드 앱(hybrid app roaches of Web and native components, 이하 하이브리드 앱), (4)자립형 프레임워크 앱(self-contained framework apps run on self-contained runtime environment)의 4가지 타입을 제시한다.In the previous study, several classification criteria were proposed according to the mobile application development method and the application execution method. Among them,'Evaluating cross-platform development approaches for mobile applications' are (1) native apps, (2) mobile web apps, and (3) hybrid app roaches of Web and native. components, hereinafter, hybrid apps) and (4) self-contained framework apps run on self-contained runtime environment.

네이티브 앱(native apps)은 특정 플랫폼에 종속적인 앱으로서, 시스템 콜 호출이 가능하기에 기기에 저장된 주소록, 파일 등의 고유 정보를 사용할 수 있으며 카메라 등의 하드웨어 또한 제어 가능하며, 웹 애플리케이션에 비하여 높은 사양의 그래픽과 성능을 자랑하면서도 구동 속도가 빠르며, 인터넷이 연결되어 있지 않아도 사용이 가능하다. 일반적으로 안드로이드 네이티브 앱은 Android SDK (Software Development Kit)가 포함된 안드로이드 스튜디오를 이용해 개발하는 것이 일반적이다. 안드로이드 SDK에는 포괄적인 개발 도구들이 포함되어 있다. 예를 들면 디버거, 라이브러리, QEMU 기반 에뮬레이터 및 각종 샘플코드 등이 존재한다. 또한 모바일 기기의 API 버전에 맞는 Android.jar (2019년 6월 기준 안드로이드 9.0 파이 API 레벨 28)를 제공하여 Windows, Linux, Mac OS 등 다양한 개발 환경에서 의존성을 해결하고 애플리케이션을 컴파일할 수 있도록 한다. 그 외에 성능의 최적화 및 고성능의 그래픽 작업과 널리 사용되는 C/C++ 라이브러리 사용을 위해 크로스 컴파일이 지원되는 Android NDK(Native Development Kit)를 제공하여 C++코드가 포함된 안드로이드 애플리케이션을 개발할 수 있도록 지원한다.Native apps are apps that are dependent on a specific platform, and because system calls can be called, unique information such as address books and files stored in the device can be used, and hardware such as cameras can also be controlled. While boasting the graphics and performance of the specifications, the operating speed is fast, and it can be used even if there is no internet connection. In general, Android native apps are generally developed using Android Studio, which includes Android SDK (Software Development Kit). The Android SDK includes comprehensive development tools. For example, there are debuggers, libraries, QEMU-based emulators, and various sample codes. In addition, it provides Android.jar (Android 9.0 Pie API level 28 as of June 2019) that matches the API version of the mobile device to resolve dependencies and compile applications in various development environments such as Windows, Linux, and Mac OS. In addition, Android NDK (Native Development Kit), which supports cross-compilation, is provided for optimization of performance, high-performance graphic work, and the use of widely used C/C++ libraries to support the development of Android applications containing C++ code.

모바일 웹 애플리케이션(Mobile Web Apps)은 HTML, CSS, JavsScript로 구현되며, 런타임 환경으로 브라우저를 사용하고 모바일 플랫폼의 브라우저 지원을 활용한다. 표준 기술로 각 플랫폼의 모바일 브라우저를 사용하여 유사한 방식으로 웹 사이트들을 접근할 수 있다. 그러나 각 플랫폼 의존적인 실행코드를 포함하지 않기에, 각 플랫폼에 해당하는 애플리케이션 포멧(안드로이드: .apk, 애플: .ipa) 형태로 배포되지 않으며, 한 모바일 웹 애플리케이션은 카메라,GPS 센서와 같은 디바이스, 특정 하드웨어 기능들을 사용할 수 없다. 대표적 예는 JQueryMobile, Sencha Touch 등이 존재한다.Mobile Web Apps are implemented in HTML, CSS, and JavsScript, and use a browser as a runtime environment and utilize the browser support of mobile platforms. As a standard technique, web sites can be accessed in a similar manner using the mobile browser of each platform. However, since it does not contain the execution code dependent on each platform, it is not distributed in the form of an application (Android: .apk, Apple: .ipa) corresponding to each platform, and one mobile web application is a device such as a camera, GPS sensor, and Certain hardware features are not available. Representative examples include JQueryMobile and Sencha Touch.

웹과 네이티브 컴포넌트들로 구성된 하이브리드 앱(Hybrid apps, 이하 하이브리드 앱)은 외부형태는 네이티브 앱이면서 실제 내부는 각 모바일 OS에 탑재된 웹킷(Webkit)을 활용하여 모바일 웹 애플리케이션을 실행할 수 있다. 하이브리드 앱은 개발자가 플랫폼에 의존적인 기능(카메라 등의 장치 제어)만 네이티브 라이브러리로 제작하고 HTML과 JavaScript로 네이티브 기능을 이용할 수 있도록 했다. 애플리케이션의 네이티브 부분은 각 OS의 API를 사용하여 브라우저와 디바이스 API 간에 연결고리 역할을 하는 엔진을 통해 하이브리드 앱은 최신 디바이스가 제공하는 모든 기능을 활용할 수 있다. 현재 많은 웹 기반 하이브리드 개발 프레임워크가 존재하며 Titanium Mobile과 PhoneGap, Cordova 등이 있으며 개발과 배포가 용이하다는 점 때문에 널리 사용되고 있다. 하이브리드 앱은 기존의 웹 기술을 사용하기에 크로스 사이트 스크립팅(XSS, Cross-Site Scripting)과 크로스 사이트 요청 위조(Cross-site request forgery)와 같은 웹 관련 취약점을 가지고 있을 수 있다. 이러한 웹 기반 취약점들이 하이브리드 앱에서 악용될 경우 자바스크립트(Java Script)를 통하여 네이티브 API와 하드웨어 및 기기정보에 접근할 수 있기에 민감 정보를 탈취할 수 있으며, 따라서 더욱 위협적인 웹 공격으로 변모할 수 있다.Hybrid apps (hereinafter referred to as hybrid apps) composed of web and native components can run mobile web applications using a webkit installed in each mobile OS while the external form is a native app. Hybrid apps allow developers to create only platform-dependent functions (controlling devices such as cameras) as a native library and use native functions in HTML and JavaScript. The native part of the application uses the API of each OS to act as a link between the browser and the device API, allowing hybrid apps to take advantage of all the features offered by modern devices. Currently, there are many web-based hybrid development frameworks, including Titanium Mobile, PhoneGap, and Cordova, and are widely used because of their ease of development and distribution. Since hybrid apps use existing web technologies, they may have web-related vulnerabilities such as cross-site scripting (XSS) and cross-site request forgery. When these web-based vulnerabilities are exploited in hybrid apps, sensitive information can be stolen because native APIs, hardware and device information can be accessed through JavaScript, and thus it can be transformed into a more threatening web attack. .

자립형 프레임워크 앱(self-contained framework apps)은 모바일 플랫폼에 존재하는 어떤 (웹) 환경도 재사용하지 않고, 자기 자신의 분리된 런타임 환경(their own, separate runtime environment)을 사용한다. 대표적으로 모노(Mono) 프로젝트는 마이크로소프트에서 개발한 닷넷 프레임워크(.NET Framework)의 오픈소스 버전이다. 모노 프로젝트는 C#으로 작성하여 컴파일된 공통언어(CIL)인 모노 런타임(Mono Runtime) 환경에서 동작하게 하여 윈도우, mac OS, 리눅스와 같은 환경에서 닷넷 프레임워크를 적용할 수 있다. 다양한 OS환경에서 동작하는 모노는 모바일개발 플랫폼인 자마린(Xamarin)과 유니티(Unity)의 기반 프레임워크로 동작하여 모바일 환경인 iOS와 Android에서 동시에 개발 및 적용이 가능하다. 모노를 활용하는 자마린과 유니티의 특징은 각종 시스템 콜과 기반 OS(Android, iOS)의 API의 래퍼(Wrapper)를 구현하였다. 개발자는 이를 활용하여 SQLite DB, 파일 접근, 카메라 등 하드웨어 이벤트 또한 제어가 가능하며, 구동속도가 빠름과 동시에 다양한 플랫폼 환경에서도 적용 가능하다. 대표적인 예로 자마린 사에서 개발한 Xamarin Evolve라는 안드로이드와 iOS를 지원하는 애플리케이션의 경우 약 15,000 라인의 코드로 작성되었는데, iOS의 경우 이중 93%가 공유 코드이고, 안드로이드의 경우 90%가 공유 코드로 나타나 자마린의 C# 코드 재사용성의 장점을 보여주었다.Self-contained framework apps do not reuse any (web) environments existing on the mobile platform, but use their own, separate runtime environment. Representatively, the Mono project is an open source version of the .NET Framework developed by Microsoft. The Mono project is written in C# and made to run in the Mono Runtime environment, which is a compiled common language (CIL), so that the .NET framework can be applied in environments such as Windows, mac OS, and Linux. Mono, which operates in various OS environments, operates as a framework based on mobile development platforms, Xamarin and Unity, and can be developed and applied simultaneously in iOS and Android, which are mobile environments. The characteristics of Jamarin and Unity that utilize Mono are various system calls and a wrapper of the API of the base OS (Android, iOS). Developers can use this to control hardware events such as SQLite DB, file access, and cameras, and they can be applied to various platform environments while driving speed is fast. As a representative example, Xamarin Evolve developed by Jamarin, an application that supports Android and iOS, was written with about 15,000 lines of code.In the case of iOS, 93% of the code was shared, and in the case of Android, 90% appeared as shared code. Demonstrates the advantages of Jamarin's C# code reusability.

다른 크로스플랫폼 프레임워크로는 Cocos2d-x가 존재한다. Cocos2d는 2D 게임 개발용 오픈 소스 소프트웨어 프레임워크이며, 게임과 모바일 애플리케이션, 반응형 전자책 등 GUI 기반 상호작용 소프트웨어의 개발방법과 Cordova 애플리케이션을 대상으로 하는 XSS 공격에 사용할 수 있다. Cocos2d-x는 C++ 언어로 제작하여 iOS에서 사용할 수 있는 IPA파일을 생성할 수 있고, 안드로이드에서 사용하는 APK파일을 생성할 수 있으며, 네이티브 언어인 C++를 사용하기에 C# 래퍼(Wrapper)를 사용하는 유니티보다 빠르다는 장점을 가지고 있다.Another cross-platform framework is Cocos2d-x. Cocos2d is an open source software framework for 2D game development, and can be used to develop GUI-based interactive software such as games, mobile applications, and responsive e-books, as well as XSS attacks targeting Cordova applications. Cocos2d-x is produced in C++ language and can generate IPA files that can be used in iOS, and APK files for use in Android can be created, and C# wrappers are used because native language C++ is used. It has the advantage of being faster than Unity.

자립형 프레임워크 앱은 Native 애플리케이션과 달리 실행코드가 dll(dynamic link library)이나 so(shared object)에 존재할 수 있기에 악성코드 제작자들에 의해 악용될 수 있다. 대표적으로 Trojan.Android.Banker를 들 수 있다. 이 악성 앱은 자마린으로 개발되었으며, 구글 플레이스토어에서 원본 애플리케이션과 비슷하게 만든 페이크 애플리케이션을 이용하여 사용자를 속인다. 또한 지속적인 원격 명령을 통해 기기정보 탈취뿐만 아니라 문자기록, 주소록 등의 개인정보 및 카드정보까지 탈취한다. 크로스플랫폼 애플리케이션을 이용한 공격은 악성행위를 수행하는 실행코드가 dll에 존재하기에 악성코드 분석 대상인 dex를 통해서는 탐지할 수 없다.Unlike native applications, standalone framework apps can be exploited by malicious code makers because executable code can exist in dll (dynamic link library) or so (shared object). A typical example is Trojan.Android.Banker. This malicious app was developed in Jamarin, and uses a fake application made similar to the original application on the Google Play Store to trick users. In addition, it steals personal information and card information, such as text records and address books, as well as device information through continuous remote commands. Attacks using cross-platform applications cannot be detected through dex, which is the target of malicious code analysis, because the executable code that performs the malicious action exists in the dll.

공개특허공보 제10-2014-0004819호Unexamined Patent Publication No. 10-2014-0004819

이에 본 발명은 상기와 같은 종래의 제반 문제점을 해소하기 위해 제안된 것으로, 본 발명의 목적은 네이티브 함수의 심볼 정보 및 웹킷의 주요 클래스를 상속받는 주요 클래스들의 심볼을 이용하여 애플리케이션 개발에 이용된 크로스플랫폼 개발 프레임워크의 종류를 분류하는 방법 및 장치를 제공하기 위한 것이다.Accordingly, the present invention has been proposed in order to solve the problems of the related art as described above, and an object of the present invention is to use the symbol information of the native function and the symbols of the main classes inheriting the main classes of the webkit to be used for application development. It is to provide a method and apparatus for classifying types of platform development frameworks.

상기와 같은 목적을 달성하기 위하여 본 발명의 기술적 사상에 의한 크로스플랫폼 개발 프레임워크로 제작된 애플리케이션을 식별하기 위한 특징정보 추출 장치는, 제작 플랫폼 분석 대상이 되는 애플리케이션을 수신하는 입력부, 상기 입력부에서 수신된 애플리케이션의 dex 파일에서 액세스 플래그(Access flag)가 네이티브(native) 함수인 메소드 심볼을 선별하는 분석부, 상기 분석부에서 선별된 정보를 이용하여 상기 애플리케이션 작성에 이용된 크로스플랫폼 개발 프레임워크를 분류하는 분류부를 포함할 수 있다.In order to achieve the above object, a feature information extraction device for identifying an application produced with a cross-platform development framework according to the technical idea of the present invention includes an input unit for receiving an application to be analyzed for a production platform, and a reception unit at the input unit. An analysis unit that selects a method symbol whose access flag is a native function in the dex file of an application, and classifies the cross-platform development framework used for creating the application by using the information selected by the analysis unit. It may include a classification unit.

상기 분류부는 상기 애플리케이션이 작성된 프레임워크를 상기 분석부가 선별한 메소드 심볼의 네이티브 함수 이름에 따라 하기 표 2에 기초하여 분류할 수 있다.The classification unit may classify the framework in which the application is created based on Table 2 below according to the native function name of the method symbol selected by the analysis unit.

[표 2][Table 2]

Figure 112019110816461-pat00001
Figure 112019110816461-pat00001

상기 분류부는 WebView 또는 WebViewClient를 상속받는 클래스 명을 더 이용할 수 있다.The classifier may further use a class name that inherits WebView or WebViewClient.

상기 분류부는 상기 애플리케이션이 작성된 프레임워크를 상기 분석부가 선별한 메소드 심볼의 네이티브 함수 이름에 따라 하기 표 5에 기초하여 분류할 수 있다.The classification unit may classify the framework in which the application is created based on Table 5 below according to the native function name of the method symbol selected by the analysis unit.

[표 5][Table 5]

Figure 112019110816461-pat00002
Figure 112019110816461-pat00002

상기 분석부는 상기 입력부에서 수신된 애플리케이션의 dex 파일 포맷 중 네이티브 함수, 패키지, 클래스, 메소드 중에 포함된 mono, qtproject, QtNative, unity, Cocos2d, ansca, gdx, vuforia, apache, cordova, titanium, appyet, facebook, react, tns, rhomobile 중 어느 하나의 키워드를 메소드 심볼로써 더 선별하고,The analysis unit includes mono, qtproject, QtNative, unity, Cocos2d, ansca, gdx, vuforia, apache, cordova, titanium, appyet, facebook included in native functions, packages, classes, and methods among dex file formats of the application received from the input unit. , react, tns, rhomobile, select any one keyword as a method symbol,

상기 분류부는 상기 분석부에서 선별된 키워드 중 mono가 있으면 애플리케이션이 작성된 프레임워크를 Xamarin으로 분류하고,The classification unit classifies the framework in which the application is created as Xamarin if there is mono among the keywords selected by the analysis unit,

상기 분류부는 상기 분석부에서 선별된 키워드 중 qtproject 또는 QtNative가 있으면 애플리케이션이 작성된 프레임워크를 Qt project로 분류하고,If there is qtproject or QtNative among keywords selected by the analysis unit, the classification unit classifies the framework in which the application is created as a Qt project,

상기 분류부는 상기 분석부에서 선별된 키워드 중 unity가 있으면 애플리케이션이 작성된 프레임워크를 Unity로 분류하고,If there is unity among the keywords selected by the analysis unit, the classification unit classifies the framework in which the application is created as Unity,

상기 분류부는 상기 분석부에서 선별된 키워드 중 Cocos2d가 있으면 애플리케이션이 작성된 프레임워크를 Cocos2d-x로 분류하고,If there is Cocos2d among the keywords selected by the analysis unit, the classification unit classifies the framework in which the application is created as Cocos2d-x,

상기 분류부는 상기 분석부에서 선별된 키워드 중 ansca 또는 corona가 있으면 애플리케이션이 작성된 프레임워크를 Corona로 분류하고,If there is ansca or corona among the keywords selected by the analysis unit, the classification unit classifies the framework in which the application is created as Corona,

상기 분류부는 상기 분석부에서 선별된 키워드 중 gdx가 있으면 애플리케이션이 작성된 프레임워크를 libGDX로 분류하고,The classification unit classifies the framework in which the application is created as libGDX if there is gdx among the keywords selected by the analysis unit,

상기 분류부는 상기 분석부에서 선별된 키워드 중 vuforia가 있으면 애플리케이션이 작성된 프레임워크를 Vuforia로 분류하고,If there is vuforia among the keywords selected by the analysis unit, the classification unit classifies the framework in which the application is created as Vuforia,

상기 분류부는 상기 분석부에서 선별된 키워드 중 apache 또는 cordova가 있으면 애플리케이션이 작성된 프레임워크를 Cordova로 분류하고,If there is apache or cordova among the keywords selected by the analysis unit, the classification unit classifies the framework in which the application is created as Cordova,

상기 분류부는 상기 분석부에서 선별된 키워드 중 titanium이 있으면 애플리케이션이 작성된 프레임워크를 Titanium으로 분류하고,If there is titanium among the keywords selected by the analysis unit, the classification unit classifies the framework in which the application is created as Titanium,

상기 분류부는 상기 분석부에서 선별된 키워드 중 appyet이 있으면 애플리케이션이 작성된 프레임워크를 AppYet로 분류하고,If there is appyet among the keywords selected by the analysis unit, the classification unit classifies the framework in which the application is created as AppYet,

상기 분류부는 상기 분석부에서 선별된 키워드 중 facebook 또는 react가 있으면 애플리케이션이 작성된 프레임워크를 React Native로 분류하고,If there is facebook or react among the keywords selected by the analysis unit, the classification unit classifies the framework in which the application is created as React Native,

상기 분류부는 상기 분석부에서 선별된 키워드 중 tns가 있으면 애플리케이션이 작성된 프레임워크를 NativeScript로 분류하고,If there is tns among the keywords selected by the analysis unit, the classification unit classifies the framework in which the application is created as NativeScript,

상기 분류부는 상기 분석부에서 선별된 키워드 중 rhomobile가 있으면 애플리케이션이 작성된 프레임워크를 RhoMobile로 분류하는 것을 특징으로 할 수 있다.The classification unit may classify a framework in which an application is created as RhoMobile if there is rhomobile among keywords selected by the analysis unit.

입력부가 제작 플랫폼 분석 대상이 되는 애플리케이션을 수신하는 단계, 분석부가 상기 애플리케이션의 dex 파일에서 액세스 플래그(Access flag)가 네이티브(native) 함수인 메소드 심볼을 선별하는 단계, 분류부가 상기 분석부에서 선별된 정보를 이용하여 상기 애플리케이션 작성에 이용된 크로스플랫폼 개발 프레임워크를 분류하는 단계를 포함할 수 있다.Receiving an application to be analyzed by the production platform by the input unit, selecting a method symbol whose access flag is a native function from the dex file of the application by the analysis unit, and the classification unit selected by the analysis unit It may include the step of classifying the cross-platform development framework used to create the application by using the information.

상기 분류부는 WebView 또는 WebViewClient를 상속받는 클래스 명을 더 이용할 수 있다.The classifier may further use a class name that inherits WebView or WebViewClient.

본 발명에 의한 크로스플랫폼 개발 프레임워크로 제작된 애플리케이션을 식별하기 위한 특징정보 추출 장치 및 방법에 따르면,According to an apparatus and method for extracting feature information for identifying an application produced with a cross-platform development framework according to the present invention,

첫째, 본 발명이 자동으로 애플리케이션의 개발 도구를 분석해 줄 수 있기 때문에, 정상 애플리케이션들의 개발 도구 및 현황을 파악하는데 도움을 줄 수 있게 된다.First, since the present invention can automatically analyze the application development tool, it is possible to help to grasp the development tool and status of normal applications.

둘째, 크로스플랫폼 개발 프레임워크로 제작된 애플리케이션을 신속히 식별할 수 있기 때문에 애플리케이션의 개발도구에 따라 악성코드를 효율적으로 분석하는데 기여할 수 있게 된다.Second, since applications created with a cross-platform development framework can be quickly identified, it is possible to contribute to efficient analysis of malicious codes according to application development tools.

셋째, 모바일 애플리케이션 개발자들이 크로스플랫폼 애플리케이션 개발 시 어떤 프레임워크를 채택해야 할지 고민할 때, 관련 고민을 해결하는데 도움을 줄 수 있게 된다.Third, when mobile application developers are contemplating which framework to adopt when developing cross-platform applications, it will be able to help solve related concerns.

도 1은 본 발명의 실시예에 따른 크로스플랫폼 개발 프레임워크로 제작된 애플리케이션을 식별하기 위한 특징정보 추출 장치의 구성도.
도 2는 C++에서 네이티브 함수를 선언한 예를 나타낸 도면.
도 3은 Java에서 네이티브 함수의 등록 및 호출을 나타낸 도면.
도 4는 Cordova(코르도바) SystemWebView의 상속구조를 나타낸 도면.
도 5는 본 발명의 실시예에 따른 크로스플랫폼 개발 프레임워크로 제작된 애플리케이션을 식별하기 위한 특징정보 추출 방법의 순서도.
1 is a block diagram of an apparatus for extracting feature information for identifying an application produced with a cross-platform development framework according to an embodiment of the present invention.
2 is a diagram showing an example of declaring a native function in C++.
3 is a diagram showing registration and calling of a native function in Java.
4 is a diagram showing the inheritance structure of Cordova (Cordova) SystemWebView.
5 is a flow chart of a method for extracting feature information for identifying an application produced with a cross-platform development framework according to an embodiment of the present invention.

첨부한 도면을 참조하여 본 발명의 실시예들에 의한 크로스플랫폼 개발 프레임워크로 제작된 애플리케이션을 식별하기 위한 특징정보 추출 장치 및 방법에 대하여 상세히 설명한다. 본 발명은 다양한 변경을 가할 수 있고 여러 가지 형태를 가질 수 있는바, 특정 실시예들을 도면에 예시하고 본문에 상세하게 설명하고자 한다. 그러나 이는 본 발명을 특정한 개시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 각 도면을 설명하면서 유사한 참조부호를 유사한 구성요소에 대해 사용하였다.An apparatus and a method for extracting feature information for identifying an application produced by a cross-platform development framework according to embodiments of the present invention will be described in detail with reference to the accompanying drawings. Since the present invention can be modified in various ways and has various forms, specific embodiments will be illustrated in the drawings and described in detail in the text. However, this is not intended to limit the present invention to a specific form of disclosure, and it should be understood to include all changes, equivalents, and substitutes included in the spirit and scope of the present invention. In describing each drawing, similar reference numerals have been used for similar elements.

또한, 다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥 상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.In addition, unless otherwise defined, all terms used herein including technical or scientific terms have the same meaning as commonly understood by one of ordinary skill in the art to which the present invention belongs. Terms as defined in a commonly used dictionary should be interpreted as having a meaning consistent with the meaning in the context of the related technology, and should not be interpreted as an ideal or excessive formal meaning unless explicitly defined in this application. Does not.

본 발명의 발명자는 AndroZoo 사이트에서 수집한 애플리케이션들을 대상으로 크로스플랫폼 개발 프레임워크로 개발된 애플리케이션들에 대한 년도 별 추이를 분석하였다. 즉, 크로스플랫폼 개발 프레임워크로 작성된 정상 애플리케이션들(benign apps)과 악성 애플리케이션들(malicious apps)에 대한 연도별 비율을 파악하는 연구를 수행하였다. 본 발명의 실시예는 정상 애플리케이션들의 개발 도구 및 현황을 파악하는데 도움을 줄 수 있고, 악성코드의 효율적 분석에 기여할 수 있다. 또한, 모바일 애플리케이션 개발자들이 크로스플랫폼 애플리케이션 개발 시 어떤 프레임워크를 채택해야 할지 고민할 때, 관련 고민을 해결하는데 도움이 될 수 있다.The inventors of the present invention analyzed year-by-year trends in applications developed with a cross-platform development framework targeting applications collected on the AndroZoo site. In other words, a study was conducted to determine the yearly ratio of benign apps and malicious apps created with a cross-platform development framework. Embodiments of the present invention can help to grasp development tools and status of normal applications, and can contribute to efficient analysis of malicious codes. In addition, when mobile application developers are contemplating which framework to adopt when developing cross-platform applications, it can be helpful in resolving related concerns.

도 1을 참조하면, 본 발명의 실시예에 따른 크로스플랫폼 개발 프레임워크로 제작된 애플리케이션을 식별하기 위한 특징정보 추출 장치는, 제작 플랫폼 분석 대상이 되는 애플리케이션을 수신하는 입력부(120), 입력부(120)에서 수신된 애플리케이션의 dex 파일에서 액세스 플래그(Access flag)가 네이티브(native) 함수인 메소드 심볼을 선별하는 분석부(140), 분석부(140)에서 선별된 정보를 이용하여 상기 애플리케이션 작성에 이용된 크로스플랫폼 개발 프레임워크를 분류하는 분류부(160)를 포함한다.Referring to FIG. 1, a feature information extraction device for identifying an application produced by a cross-platform development framework according to an embodiment of the present invention includes an input unit 120 and an input unit 120 for receiving an application to be analyzed for a production platform. ) From the dex file of the application received from the analysis unit 140, which selects a method symbol whose access flag is a native function, and uses the information selected by the analysis unit 140 to create the application It includes a classification unit 160 for classifying the developed cross-platform development framework.

정상 개발자뿐만 아니라 공격자들도 멀웨어 제작시간을 최소화하면서 최대의 공격 효과를 내기 위해 크로스플랫폼 개발 프레임워크를 이용하여 악성 애플리케이션을 작성한다. 이러한 공격 방법에 대응하기 위해서는 애플리케이션 작성에 사용된 크로스플랫폼 개발 프레임워크를 분류하고 그에 따른 분석 방법이 필요하다. 본 발명의 실시예는 크로스플랫폼 개발 프레임워크를 이용한 저작권 침해 및 악성행위를 방지하기 위한 일환으로 애플리케이션이 제작된 크로스플랫폼 개발 프레임워크를 유추한다.Not only normal developers but also attackers write malicious applications using a cross-platform development framework in order to maximize the attack effect while minimizing the malware production time. In order to cope with this attack method, it is necessary to classify the cross-platform development framework used for application creation and to analyze it accordingly. An embodiment of the present invention infers a cross-platform development framework in which an application is produced as a part of preventing copyright infringement and malicious behavior using a cross-platform development framework.

구체적으로, 분류부(160)는 애플리케이션을 네이티브 앱, 자립형 프레임워크 앱, 하이브리드 앱으로 분류한다. 이 실시예가 종래 연구에서 분류한 모바일 웹 애플리케이션을 제외한 이유는 모바일 웹 애플리케이션은 안드로이드 플랫폼에서 애플리케이션 형태로 배포하지 않기에 직접 분석이 어렵기 때문이다. 자립형 프레임워크 앱과 하이브리드 앱의 경우, 세부적으로 어떠한 프레임워크를 사용하여 애플리케이션이 제작되었는가를 분석한다.Specifically, the classification unit 160 classifies the application into a native app, a standalone framework app, and a hybrid app. The reason why this embodiment excludes the mobile web applications classified in the prior studies is that it is difficult to directly analyze the mobile web application because the mobile web application is not distributed in the form of an application on the Android platform. In the case of standalone framework apps and hybrid apps, we analyze in detail what framework the application was created using.

자립형 프레임워크 앱은 대표적으로 모노 런타임을 사용하는 자마린(Xamarin)과 유니티(Unity)가 존재하며, Cocos2d-x는 Cocos2d라는 게임엔진을 사용한다.Standalone framework apps typically include Xamarin and Unity, which use mono runtimes, and Cocos2d-x uses a game engine called Cocos2d.

애플리케이션을 동작하기 위해 안드로이드에서 모노 런타임과 Cocos2d를 구축하기 위해서는 자바 코드를 시작으로 C/C++로 제작된 네이티브 함수를 JNI(Java Native Interface)를 이용해 등록하고 호출해야 한다. 이들 엔진 및 머신에 사용하는 공유 라이브러리(so)는 개발사의 중요 정보로서 한번 빌드되고, 애플리케이션 개발환경에서는 재빌드되지 않는다. 따라서 JNI에 매핑되는 함수의 심볼 정보는 Proguard, Dexguard, DashO와 같은 난독화 도구에 의해 변조되기 힘들다. 대표적으로 안드로이드에서 JNI 사용 예는 도 2와 같다. 도 2는 C++에서 네이티브 함수를 선언한 예를 보여준다.In order to build the Mono runtime and Cocos2d in Android to run the application, the native function produced in C/C++ starting with Java code must be registered and called using JNI (Java Native Interface). The shared library (so) used for these engines and machines is built once as important information of the developer, and is not rebuilt in the application development environment. Therefore, symbol information of functions mapped to JNI is difficult to be modulated by obfuscation tools such as Proguard, Dexguard, and DashO. Representatively, an example of using JNI in Android is shown in FIG. 2. 2 shows an example of declaring a native function in C++.

도 3과 같이, Java에서 First 클래스의 foo라는 네이티브 함수를 등록하기 위해서는 System.loadLibrary라는 함수를 이용하여, JNIEXPORT 속성과 Java_First_foo (First: 클래스 명, foo: 메소드 명) 심볼을 보유한 공유 라이브러리(so)를 로드해야한다. 이렇기에 공유 라이브러리(so)의 심볼 정보가 변조되지 않는 한 자바코드에서 불려지는 네이티브 함수의 심볼 정보는 난독화 도구에 의해 변조되기 힘들다. 안드로이드의 실행파일인 dex에서 참조되는 메소드 중에서도 네이티브 메소드(native method)를 구분짓기 위해 메소드의 접근 플래그(access flag)를 활용한다.As shown in Fig. 3, in order to register a native function called foo of the First class in Java, a shared library (so) that has the JNIEXPORT property and Java_First_foo (First: class name, foo: method name) symbol using a function called System.loadLibrary. Should be loaded. Therefore, unless the symbol information of the shared library (so) is altered, the symbol information of the native function called in Java code is difficult to be altered by the obfuscation tool. Among the methods referenced in the Android executable file dex, the access flag of the method is used to distinguish the native method.

이름name 액세스 플래그 (access flag; value)Access flag (value) 메소드 접근 제한자 및 설명Method access limiter and description PUBLICPUBLIC 0x10x1 visible everywherevisible everywhere PRIVATEPRIVATE 0x20x2 only visible to defining classonly visible to defining class PROTECTEDPROTECTED 0x40x4 visible to package and subclassesvisible to package and subclasses STATICSTATIC 0x80x8 does not take a this(instance) argumentdoes not take a this(instance) argument FINALFINAL 0x100x10 not overridablenot overridable NATIVENATIVE 0x1000x100 implemented in nativeimplemented in native

dex 파일 포맷에서 사용하는 주요 접근 플래그는 표 1과 같으며, 이 중 Access flags가 native(ACC_NATIVE: 0x100)를 포함하는 메소드의 심볼 및 소속 클래스 정보(class descriptor)를 이용하여 자립형 프레임워크 앱을 분류한다.The main access flags used in the dex file format are shown in Table 1, and among them, the access flags are classified by using the symbol of a method including native(ACC_NATIVE: 0x100) and class descriptor of a self-supporting framework. do.

하이브리드 앱을 개발하게 해 주는 프레임워크는 네이티브 앱과 웹 애플리케이션의 장점을 함께 고려한 도구이기에, 하이브리드 앱은 네이티브 앱처럼 하드웨어의 기능들을 사용할 수 있고, 마켓에 등록이 가능하며 배포 후에도 웹만 연결되어 있다면 수정 및 보완이 용이하다. 이들 웹 기반 하이브리드 앱들은 기기에 API 형태로 내포되어 있는 웹킷(WebKit)을 활용하는 것이 일반적이며 안드로이드의 경우 기기의 OS에 내포된 Webkit이 정의된 클래스를 상속받아 개발하도록 설계되어 있다. 도 4는 대표적인 웹 기반 하이브리드 앱의 기반인 코르도바(Apache Cordova)의 주요 클래스인 Lorg/apache/cordova/engine/SystemWebView; 의 상속구조이다.The framework that allows you to develop hybrid apps is a tool that considers the advantages of both native and web applications, so hybrid apps can use hardware features like native apps, can be registered in the market, and modified if only the web is connected after deployment. And easy to supplement. These web-based hybrid apps generally use WebKit, which is embedded in the device as an API, and in the case of Android, it is designed to inherit and develop the class defined by Webkit embedded in the device's OS. Fig. 4 is a Lorg/apache/cordova/engine/SystemWebView, which is a main class of Cordova, which is a base of a representative web-based hybrid app; It is the inheritance structure of

안드로이드 OS를 대상으로 한 하이브리드 앱들은 대부분 Landroid.webkit.WebView; 클래스와 Landroid.webkit.WebViewClient;를 상속받아 웹킷의 주요 메소드들을 오버라이딩(Overriding)하여 재사용성을 증가시키고, 필요한 메소드를 추가적으로 구현하여 사용한다. 따라서, 분류부(160)는 WebView와 WebViewClient를 상속받는 클래스 명을 식별하고 이를 기준으로 웹 기반 하이브리드 앱을 종류에 따라 식별할 수 있다.Most hybrid apps targeting Android OS are Landroid.webkit.WebView; Inherit class and Landroid.webkit.WebViewClient; and overriding main methods of WebKit to increase reusability and additionally implement and use necessary methods. Accordingly, the classifier 160 may identify class names that inherit WebView and WebViewClient, and identify a web-based hybrid app according to the type based on this.

하지만 상속받는 클래스는 난독화 도구에 의해 심볼이 변경(renaming)될 경우 분석이 부정확할 수 있다. 또한 상속받는 클래스의 심볼이 버전에 따라 다를 수 있다. 대표적인 예시로 Native Script가 존재한다. Native Script는 자체 렌더링 엔진을 위한 런타임을 보유하고 있으며, 버전에 따라 WebView를 상속받는 클래스 명이 상이하다. (예 : WebViewClient_vendor_1_1934982_n;, WebViewClient_vendor_1_1978533_n;) 이러한 이유로 인해 하이브리드 앱을 분류할 때도 자립형 프레임워크 앱을 분류할 때 사용한 정보인 네이티브 함수를 사용한다. 하이브리드 앱에서도 자체 렌더링 엔진을 사용하는 경우가 존재하며, 런타임을 구축하기 위해 네이티브 함수를 등록하고 실행한다. 따라서, 분류부(160)는 하이브리드 앱을 더욱 세부적으로 분류하기 위해 네이티브 함수의 심볼 정보를 활용한다.However, in the inherited class, if the symbol is renaming by the obfuscation tool, the analysis may be inaccurate. Also, the symbol of the inherited class may differ depending on the version. As a representative example, there is Native Script. Native Script has a runtime for its own rendering engine, and the class name that inherits WebView is different depending on the version. (Example: WebViewClient_vendor_1_1934982_n;, WebViewClient_vendor_1_1978533_n;) For this reason, when classifying hybrid apps, a native function, which is the information used to classify standalone framework apps, is used. Hybrid apps also use their own rendering engine, and they register and execute native functions to build the runtime. Accordingly, the classification unit 160 utilizes symbol information of a native function in order to further classify the hybrid app.

분류부(160)는 크로스플랫폼 애플리케이션들을 자립형 프레임워크 앱과 하이브리드 앱, 네이티브 앱으로 분류한다. 그리고, 자립형 프레임워크 앱과 하이브리드 앱의 특징이 나타나지 않는 애플리케이션들의 경우 네이티브 앱 또는 미분류 상태로 분류한다.The classification unit 160 classifies cross-platform applications into standalone framework apps, hybrid apps, and native apps. In addition, applications that do not exhibit the characteristics of a standalone framework app and a hybrid app are classified as native apps or unclassified.

대표적인 자립형 프레임워크 앱으로 모노 런타임(mono runtime)을 사용하는 자마린 애플리케이션과 유니티 애플리케이션이 존재한다. 또한 Write once, compile anywhere를 표방하여 C++ 언어를 이용해 크로스플랫폼 애플리케이션을 제작하는 qt 프레임워크로 작성된 애플리케이션도 존재한다. 또한, 게임 애플리케이션은 그래픽 렌더링 작업 및 게임 처리속도의 향상이 필요하기에 네이티브 작업이 많이 필요하다. 이에 맞는 게임개발 프레임워크인 cocos2dx, libgdx, Corona도 존재하며, 크로스플랫폼 증강현실(AR) 개발환경을 용이하게 만들어 주는 Vuforia도 존재한다.Representative standalone framework apps include Jamarin applications and Unity applications that use mono runtime. There are also applications written with the qt framework that create cross-platform applications using the C++ language by advocating write once, compile anywhere. In addition, game applications require a lot of native work because graphics rendering work and game processing speed need to be improved. There are also game development frameworks such as cocos2dx, libgdx, and Corona, and Vuforia, which facilitates a cross-platform augmented reality (AR) development environment.

분석부(140)가 선별한 메소드 심볼의 네이티브 함수 이름이 Lmono/android/Runtime;init이면, 분류부(160)는 애플리케이션이 작성된 프레임워크를 자마린(Xamarin)으로 분류한다.If the native function name of the method symbol selected by the analysis unit 140 is Lmono/android/Runtime;init, the classification unit 160 classifies the framework in which the application is created as Xamarin.

또한, 분석부(140)가 선별한 메소드 심볼의 네이티브 함수 이름이 Lorg/qtproject/qt5/android/QtNative;keyDown 또는 Lorg/qtproject/qt5/android/QtNative;keyUp 이면, 분류부(160)는 상기 애플리케이션이 작성된 프레임워크를 Qt로 분류한다.In addition, if the native function name of the method symbol selected by the analysis unit 140 is Lorg/qtproject/qt5/android/QtNative; keyDown or Lorg/qtproject/qt5/android/QtNative; keyUp, the classification unit 160 is the application This created framework is classified as Qt.

또한, 분석부(140)가 선별한 메소드 심볼의 네이티브 함수 이름이 Lcom/unity3d/player/NativeLoader;load 또는 Lcom/unity3d/player/UnityPlayer;initJni 이면, 분류부(160)는 상기 애플리케이션이 작성된 프레임워크를 유니티(Unity)로 분류한다.In addition, if the native function name of the method symbol selected by the analysis unit 140 is Lcom/unity3d/player/NativeLoader;load or Lcom/unity3d/player/UnityPlayer; initJni, the classification unit 160 is the framework in which the application is created. Is classified as Unity.

또한, 분석부(140)가 선별한 메소드 심볼의 네이티브 함수 이름이 Lorg/cocos2dx/lib/Cocos2dxRenderer;nativeInit 또는 Lorg/cocos2dx/lib/Cocos2dxRenderer;nativeOnPause 면, 분류부(160)는 애플리케이션이 작성된 프레임워크를 Cocos2d-x로 분류한다.In addition, if the native function name of the method symbol selected by the analysis unit 140 is Lorg/cocos2dx/lib/Cocos2dxRenderer; nativeInit or Lorg/cocos2dx/lib/Cocos2dxRenderer; nativeOnPause, the classification unit 160 determines the framework in which the application is created. Classified as Cocos2d-x.

또한, 분석부(140)가 선별한 메소드 심볼의 네이티브 함수 이름이 Lcom/ansca/corona/CoronaWebView, Lcom/ansca/corona/CoronaWebView$CoronaWebViewClient, Lcom/ansca/corona/JavaToNativeShim;nativeInit 중 하나이면, 분류부(160)는 애플리케이션이 작성된 프레임워크를 Corona로 분류한다.In addition, if the native function name of the method symbol selected by the analysis unit 140 is one of Lcom/ansca/corona/CoronaWebView, Lcom/ansca/corona/CoronaWebView$CoronaWebViewClient, Lcom/ansca/corona/JavaToNativeShim; nativeInit, the classification unit (160) classifies the framework in which the application is written as Corona.

또한, 분석부(140)가 선별한 메소드 심볼의 네이티브 함수 이름이 Lcom/badlogic/gdx/physics/box2d/Body;jniApplyAngularImpulse 또는 Lcom/badlogic/gdx/physics/box2d/Body;jniSetAngularVelocity 면, 분류부(160)는 애플리케이션이 작성된 프레임워크를 libGDX로 분류한다.In addition, if the native function name of the method symbol selected by the analysis unit 140 is Lcom/badlogic/gdx/physics/box2d/Body;jniApplyAngularImpulse or Lcom/badlogic/gdx/physics/box2d/Body;jniSetAngularVelocity, then the classification unit 160 ) Classifies the framework in which the application is written as libGDX.

또한, 분석부(140)가 선별한 메소드 심볼의 네이티브 함수 이름이 Lcom/vuforia/VuforiaJNI;init 또는 Lcom/qualcomm/vuforia/VuforiaJNI;deinit 이면, 분류부(160)는 애플리케이션이 작성된 프레임워크를 Vuforia로 분류한다.In addition, if the native function name of the method symbol selected by the analysis unit 140 is Lcom/vuforia/VuforiaJNI;init or Lcom/qualcomm/vuforia/VuforiaJNI;deinit, the classification unit 160 sets the framework in which the application is created as Vuforia. Classify.

네이티브 함수별 분류되는 크로스플랫폼 개발 프레임워크를 정리하면 표 2와 같다.Table 2 summarizes the cross-platform development framework classified by native function.

프레임워크Framework 네이티브 함수 이름Native function name XamarinXamarin Lmono/android/Runtime;initLmono/android/Runtime;init Qt project Qt project Lorg/qtproject/qt5/android/QtNative;keyDown
Lorg/qtproject/qt5/android/QtNative;keyUp
Lorg/qtproject/qt5/android/QtNative;keyDown
Lorg/qtproject/qt5/android/QtNative;keyUp
UnityUnity Lcom/unity3d/player/NativeLoader;load
Lcom/unity3d/player/UnityPlayer;initJni
Lcom/unity3d/player/NativeLoader;load
Lcom/unity3d/player/UnityPlayer;initJni
Cocos2d-xCocos2d-x Lorg/cocos2dx/lib/Cocos2dxRenderer;nativeInit
Lorg/cocos2dx/lib/Cocos2dxRenderer;nativeOnPause
Lorg/cocos2dx/lib/Cocos2dxRenderer;nativeInit
Lorg/cocos2dx/lib/Cocos2dxRenderer;nativeOnPause
CoronaCorona Lcom/ansca/corona/CoronaWebView;
Lcom/ansca/corona/CoronaWebView$CoronaWebViewClient;
Lcom/ansca/corona/JavaToNativeShim;nativeInit
Lcom/ansca/corona/CoronaWebView;
Lcom/ansca/corona/CoronaWebView$CoronaWebViewClient;
Lcom/ansca/corona/JavaToNativeShim;nativeInit
libGDXlibGDX Lcom/badlogic/gdx/physics/box2d/Body;jniApplyAngularImpulse
Lcom/badlogic/gdx/physics/box2d/Body;jniSetAngularVelocity
Lcom/badlogic/gdx/physics/box2d/Body;jniApplyAngularImpulse
Lcom/badlogic/gdx/physics/box2d/Body;jniSetAngularVelocity
VuforiaVuforia Lcom/vuforia/VuforiaJNI;init
Lcom/qualcomm/vuforia/VuforiaJNI;deinit
Lcom/vuforia/VuforiaJNI;init
Lcom/qualcomm/vuforia/VuforiaJNI;deinit

프레임워크Framework 개발언어Language of development 주요 특징Main features 지원support XamarinXamarin C#(.net)C# (.net) Mono 런타임 활용Utilizing the Mono runtime Android, iOSAndroid, iOS QT projectQT project C++C++ 주요 C++ 라이브러리 제공Provides major C++ libraries Android, iOSAndroid, iOS UnityUnity C#(.net)C# (.net) Mono 런타임 활용Utilizing the Mono runtime Android, iOSAndroid, iOS Cocos2d-xCocos2d-x C++,
Lua Script,
JavaScript
C++,
Lua Script,
JavaScript
오픈소스 2D 게임엔진Open source 2D game engine Android, iOSAndroid, iOS
Ansca CoronaAnsca Corona Lua ScriptLua Script 2D 게임엔진. C, C++, Obj-C, Java의 라이브러리 또는 API를 사용할 수 있음2D game engine. Libraries or APIs of C, C++, Obj-C, and Java can be used Android, iOSAndroid, iOS libGDXlibGDX Java, C, C++Java, C, C++ 자바 기반의 게임 개발환경 제공Provides a Java-based game development environment Android, iOS, BlackBerryAndroid, iOS, BlackBerry VuforiaVuforia C++C++ 증강현실 개발 프레임워크.
Unity를 위한 SDK 제공
Augmented Reality Development Framework.
SDK provided for Unity
Android, iOSAndroid, iOS

표 3의 프레임워크들은 자체 엔진을 활용하기 위해 JNI를 이용하여 자바코드에서 네이티브 함수를 등록하고 호출한다. 자바에서 사용하는 네이티브 함수는 Java의 심볼과 C++에서 작성한 함수의 심볼이 일치해야 하기에 난독화에 의해 변조되기 어렵다.The frameworks in Table 3 use JNI to register and call native functions in Java code to utilize their own engine. Native functions used in Java are difficult to be altered by obfuscation because the symbols of Java and the symbols of functions written in C++ must match.

본 발명의 실시예가 자립형 프레임워크 앱을 분류하기 위해 사용하는 주요 네이티브 함수의 명은 표 2와 같으며, 이 정보들을 특징정보로 활용하여 자립형 프레임워크 앱인지 확인하고, 구체적으로 어떤 프레임워크를 이용하여 제작된 애플리케이션인지 확인한다.The names of the main native functions used by the embodiments of the present invention to classify a standalone framework app are shown in Table 2, and use this information as feature information to determine whether the application is a standalone framework, and specifically, what framework is used. Check if it is a built application.

한편, 하이브리드 앱을 개발하는데 가장 널리 사용되는 프레임워크는 Apache Cordova이다. Apache Cordova에서 파생된 웹 기반 하이브리드 개발환경은 Onsen UI, PhoneGap, Ionic, framework7, Kendo UI 등이 존재한다. 다른 개발 환경으로는 Titanium, AppYet, React Native, Native Script 등이 존재한다. AppYet의 경우 안드로이드만 지원하지만, 개발 방식이 기존 하이브리드 앱들과 동일하며 안드로이드 플랫폼에서 널리 사용되어 하이브리드 앱 분류에 포함했다.Meanwhile, the most widely used framework for developing hybrid apps is Apache Cordova. Web-based hybrid development environments derived from Apache Cordova include Onsen UI, PhoneGap, Ionic, framework7, and Kendo UI. Other development environments include Titanium, AppYet, React Native, and Native Script. In the case of AppYet, only Android is supported, but the development method is the same as the existing hybrid apps, and it is widely used on the Android platform, so it is included in the hybrid app classification.

프레임워크Framework 개발 언어Development language 특징Characteristic 지원support Apache CordovaApache Cordova C#, C++, CSS, HTML, Java, JavaScript, Obj-CC#, C++, CSS, HTML, Java, JavaScript, Obj-C 많은 파생 프레임워크 존재(Onsen UI, PhoneGap, Ionic, framework7, Kendo UI 등)Many derivative frameworks exist (Onsen UI, PhoneGap, Ionic, framework7, Kendo UI, etc.) Android, iOS, BlackBerryAndroid, iOS, BlackBerry Appcelerator Titanium StudioAppcelerator Titanium Studio JavaScriptJavaScript JavaScript로 Native UI Component API를 사용Using Native UI Component API with JavaScript Android, iOS, BlackBerry, WindowsAndroid, iOS, BlackBerry, Windows AppYetAppYet 프로그래밍 지식이 필요하지 않음No programming knowledge required 무료 배포 및 코딩 불필요, 손쉬운 개발Free distribution and no coding required, easy development AndroidAndroid React NativeReact Native JavaScriptJavaScript Swift, Java, Obj-C에서 작성된 Component를 결합할 수 있음. React를 사용Components written in Swift, Java, and Obj-C can be combined. Use React Android, iOSAndroid, iOS NativeScriptNativeScript JavaScript, TypeScriptJavaScript, TypeScript 단일 UI 작성 후, 플랫폼에 맞게 약간씩 조정. Vue.js, Angular, TypeScript 사용After creating a single UI, slightly tweaked to fit the platform. Using Vue.js, Angular, TypeScript Android, iOSAndroid, iOS RhoMobileRhoMobile CCS3, HTML, JavaScriptCCS3, HTML, JavaScript Rhodes 오픈소스 기반 프레임워크Rhodes open source based framework Android, iOS, WindowsAndroid, iOS, Windows

이들 웹 기반 하이브리드 프레임워크의 특징은 표 4에 나타나 있다. 본 발명의 실시예에 따른 분석부(140)는 하이브리드 앱을 분류하기 위해 WebView와 WebViewClient를 상속받는 클래스 명을 추가로 확인한다. 분류부(160)는 WebView 또는 WebViewClient를 상속받는 클래스 명을 더 이용하여 하이브리드 앱을 분류한다. Native Script 애플리케이션은 각 버전마다 WebView를 상속받는 클래스명이 상이하기 때문에, 분류부(160)는 네이티브 함수 정보를 함께 활용하여 하이브리드 앱을 탐지한다.The characteristics of these web-based hybrid frameworks are shown in Table 4. The analysis unit 140 according to an embodiment of the present invention further checks the name of a class inheriting WebView and WebViewClient in order to classify hybrid apps. The classification unit 160 further classifies the hybrid app by using a class name that inherits WebView or WebViewClient. Since the native script application has a different class name that inherits WebView for each version, the classification unit 160 detects the hybrid app by using the native function information together.

분석부(140)가 선별한 메소드 심볼의 네이티브 함수 이름이 Lorg/apache/cordova/inappbrowser/InAppBrowser$InAppBrowserClient 또는 Lorg/apache/cordova/engine/SystemWebView 이면, 분류부(160)는 애플리케이션이 작성된 프레임워크를 Cordova로 분류한다.If the native function name of the method symbol selected by the analysis unit 140 is Lorg/apache/cordova/inappbrowser/InAppBrowser$InAppBrowserClient or Lorg/apache/cordova/engine/SystemWebView, the classification unit 160 determines the framework in which the application is created. Classified as Cordova.

또한, 분석부(140)가 선별한 메소드 심볼의 네이티브 함수 이름이 Lti/modules/titanium/ui/widget/webview/TiUIWebView이면, 분류부(160)는 애플리케이션이 작성된 프레임워크를 Titanium 으로 분류한다.In addition, if the native function name of the method symbol selected by the analysis unit 140 is Lti/modules/titanium/ui/widget/webview/TiUIWebView, the classification unit 160 classifies the framework in which the application is created as Titanium.

또한, 분석부(140)가 선별한 메소드 심볼의 네이티브 함수 이름이 Lcom/appyet/view/ObservableWebView 또는 Lcom/appyet/view/observablescrollview/ObservableWebView 이면, 분류부(160)는 애플리케이션이 작성된 프레임워크를 AppYet으로 분류한다.In addition, if the native function name of the method symbol selected by the analysis unit 140 is Lcom/appyet/view/ObservableWebView or Lcom/appyet/view/observablescrollview/ObservableWebView, the classification unit 160 sets the framework in which the application is created as AppYet. Classify.

또한, 분석부(140)가 선별한 메소드 심볼의 네이티브 함수 이름이 Lcom/facebook/react/views/webview/ReactWebViewManager$ReactWebView 또는 Lcom/facebook/react/views/webview/ReactWebViewManager$ReactWebViewClient 이면, 분류부(160)는 애플리케이션이 작성된 프레임워크를 React Native로 분류한다.In addition, if the native function name of the method symbol selected by the analysis unit 140 is Lcom/facebook/react/views/webview/ReactWebViewManager$ReactWebView or Lcom/facebook/react/views/webview/ReactWebViewManager$ReactWebViewClient, the classification unit 160 ) Classifies the framework in which the application is written as React Native.

또한, 분석부(140)가 선별한 메소드 심볼의 네이티브 함수 이름이 Lcom/tns/Runtime;initNativeScript 또는 Lcom/tns/AndroidJsV8Inspector;init 이면, 분류부(160)는 애플리케이션이 작성된 프레임워크를 NativeScript로 분류한다.In addition, if the native function name of the method symbol selected by the analysis unit 140 is Lcom/tns/Runtime;initNativeScript or Lcom/tns/AndroidJsV8Inspector;init, the classification unit 160 classifies the framework in which the application is created as NativeScript. .

또한, 분석부(140)가 선별한 메소드 심볼의 네이티브 함수 이름이 Lcom/rhomobile/rhodes/webview/RhoWebViewClient 이면, 분류부(160)는 애플리케이션이 작성된 프레임워크를 RhoMobile로 분류한다.In addition, if the native function name of the method symbol selected by the analysis unit 140 is Lcom/rhomobile/rhodes/webview/RhoWebViewClient, the classification unit 160 classifies the framework in which the application is created as RhoMobile.

이 실시예의 분석부(140)가 하이브리드 앱의 특징정보로 이용하는 WebView 및 WebViewClient를 상속받는 클래스와, 네이티브 함수 명을 정리하면 표 5와 같다.Table 5 shows classes inheriting WebView and WebViewClient, which are used by the analysis unit 140 as feature information of a hybrid app, and native function names of this embodiment.

프레임워크Framework 네이티브 함수 이름Native function name CordovaCordova [클래스]
Lorg/apache/cordova/inappbrowser/InAppBrowser$InAppBrowserClient;
Lorg/apache/cordova/engine/SystemWebView;
[class]
Lorg/apache/cordova/inappbrowser/InAppBrowser$InAppBrowserClient;
Lorg/apache/cordova/engine/SystemWebView;
TitaniumTitanium [클래스]
Lti/modules/titanium/ui/widget/webview/TiUIWebView
[class]
Lti/modules/titanium/ui/widget/webview/TiUIWebView
AppYetAppYet [클래스]
Lcom/appyet/view/ObservableWebView;
Lcom/appyet/view/observablescrollview/ObservableWebView;
[class]
Lcom/appyet/view/ObservableWebView;
Lcom/appyet/view/observablescrollview/ObservableWebView;
React NativeReact Native [클래스]
Lcom/facebook/react/views/webview/ReactWebViewManager$ReactWebView;
Lcom/facebook/react/views/webview/ReactWebViewManager$ReactWebViewClient;
[class]
Lcom/facebook/react/views/webview/ReactWebViewManager$ReactWebView;
Lcom/facebook/react/views/webview/ReactWebViewManager$ReactWebViewClient;
NativeScriptNativeScript [네이티브 함수]
Lcom/tns/Runtime;initNativeScript
Lcom/tns/AndroidJsV8Inspector;init
[Native function]
Lcom/tns/Runtime;initNativeScript
Lcom/tns/AndroidJsV8Inspector;init
RhoMobileRhoMobile [클래스]
Lcom/rhomobile/rhodes/webview/RhoWebViewClient;
[class]
Lcom/rhomobile/rhodes/webview/RhoWebViewClient;

한편, 분석부(140)는 입력부에서 수신된 애플리케이션의 dex 파일 포맷 중 네이티브 함수, 패키지, 클래스, 메소드 중에 포함된 특정 키워드를 메소드 심볼로써 더 선별할 수 있다.Meanwhile, the analysis unit 140 may further select a specific keyword included in a native function, a package, a class, and a method among the dex file format of the application received from the input unit as a method symbol.

분류부(160)는 분석부(140)에서 선별된 키워드 중 mono가 있으면 애플리케이션이 작성된 프레임워크를 Xamarin으로 분류한다.The classification unit 160 classifies the framework in which the application is written as Xamarin if there is mono among the keywords selected by the analysis unit 140.

또한, 분류부(160)는 분석부(140)에서 선별된 키워드 중 qtproject 또는 QtNative가 있으면 애플리케이션이 작성된 프레임워크를 Qt project로 분류한다.In addition, if there is qtproject or QtNative among keywords selected by the analysis unit 140, the classification unit 160 classifies the framework in which the application is created as a Qt project.

또한, 분류부(160)는 분석부(140)에서 선별된 키워드 중 unity가 있으면 애플리케이션이 작성된 프레임워크를 Unity로 분류한다.In addition, the classification unit 160 classifies the framework in which the application is created as Unity if there is unity among the keywords selected by the analysis unit 140.

또한, 분류부(160)는 분석부(140)에서 선별된 키워드 중 Cocos2d가 있으면 애플리케이션이 작성된 프레임워크를 Cocos2d-x로 분류한다.In addition, if there is Cocos2d among the keywords selected by the analysis unit 140, the classification unit 160 classifies the framework in which the application is created as Cocos2d-x.

또한, 분류부(160)는 분석부(140)에서 선별된 키워드 중 ansca 또는 corona가 있으면 애플리케이션이 작성된 프레임워크를 Corona로 분류한다.In addition, the classification unit 160 classifies the framework in which the application is created as Corona if ansca or corona among keywords selected by the analysis unit 140 is present.

또한, 분류부(160)는 분석부(140)에서 선별된 키워드 중 gdx가 있으면 애플리케이션이 작성된 프레임워크를 libGDX로 분류한다.In addition, the classification unit 160 classifies the framework in which the application is created as libGDX if there is gdx among the keywords selected by the analysis unit 140.

또한, 분류부(160)는 분석부(140)에서 선별된 키워드 중 vuforia가 있으면 애플리케이션이 작성된 프레임워크를 Vuforia로 분류한다.In addition, the classification unit 160 classifies the framework in which the application is created as Vuforia if there is vuforia among the keywords selected by the analysis unit 140.

또한, 분류부(160)는 분석부(140)에서 선별된 키워드 중 apache 또는 cordova가 있으면 애플리케이션이 작성된 프레임워크를 Cordova로 분류한다.In addition, the classification unit 160 classifies the framework in which the application is created as Cordova if there is apache or cordova among the keywords selected by the analysis unit 140.

또한, 분류부(160)는 분석부(140)에서 선별된 키워드 중 titanium이 있으면 애플리케이션이 작성된 프레임워크를 Titanium으로 분류한다.In addition, the classification unit 160 classifies the framework in which the application is created as titanium if there is titanium among the keywords selected by the analysis unit 140.

또한, 분류부(160)는 분석부(140)에서 선별된 키워드 중 appyet이 있으면 애플리케이션이 작성된 프레임워크를 AppYet로 분류한다.In addition, the classification unit 160 classifies the framework in which the application is created as AppYet if there is appyet among the keywords selected by the analysis unit 140.

또한, 분류부(160)는 분석부(140)에서 선별된 키워드 중 facebook 또는 react가 있으면 애플리케이션이 작성된 프레임워크를 React Native로 분류한다.In addition, the classification unit 160 classifies the framework in which the application is created as React Native if there is facebook or react among the keywords selected by the analysis unit 140.

또한, 분류부(160)는 분석부(140)에서 선별된 키워드 중 tns가 있으면 애플리케이션이 작성된 프레임워크를 NativeScript로 분류한다.In addition, the classification unit 160 classifies the framework in which the application is created as NativeScript if there is tns among the keywords selected by the analysis unit 140.

또한, 분류부(160)는 분석부(140)에서 선별된 키워드 중 rhomobile가 있으면 애플리케이션이 작성된 프레임워크를 RhoMobile로 분류한다.In addition, if there is rhomobile among the keywords selected by the analysis unit 140, the classification unit 160 classifies the framework in which the application is created as RhoMobile.

이어서, 본 발명의 실시예에 따른 크로스플랫폼 개발 프레임워크로 제작된 애플리케이션을 식별하기 위한 특징정보 추출 방법을 설명한다.Next, a method of extracting feature information for identifying an application produced with a cross-platform development framework according to an embodiment of the present invention will be described.

도 5를 참조하면, 본 발명의 실시예에 따른 크로스플랫폼 개발 프레임워크로 제작된 애플리케이션을 식별하기 위한 특징정보 추출 방법은, 입력부(120)가 제작 플랫폼 분석 대상이 되는 애플리케이션을 수신하는 단계(S120), 분석부(140)가 애플리케이션의 dex 파일에서 액세스 플래그(Access flag)가 네이티브(native) 함수인 메소드 심볼을 선별하는 단계(S140), 분류부(160)가 분석부(140)에서 선별된 정보를 이용하여 상기 애플리케이션 작성에 이용된 크로스플랫폼 개발 프레임워크를 분류하는 단계를 포함한다.Referring to FIG. 5, in the method of extracting feature information for identifying an application produced with a cross-platform development framework according to an embodiment of the present invention, the input unit 120 receives an application to be analyzed for a production platform (S120). ), the analysis unit 140 selecting a method symbol whose access flag is a native function from the dex file of the application (S140), and the classification unit 160 is selected by the analysis unit 140 And classifying the cross-platform development framework used to create the application by using the information.

분류부(160)는 WebView 또는 WebViewClient를 상속받는 클래스 명을 더 이용할 수 있다.The classification unit 160 may further use a class name that inherits WebView or WebViewClient.

분류부(160)가 이용하는 분석부(140)의 선별 자료는 크로스플랫폼 개발 프레임워크로 제작된 애플리케이션을 식별하기 위한 특징정보 추출 장치의 실시예를 참고할 수 있다.The selection data of the analysis unit 140 used by the classification unit 160 may refer to an embodiment of a feature information extraction device for identifying an application produced by a cross-platform development framework.

실험.Experiment.

본 발명의 실시예에서 크로스플랫폼 애플리케이션들의 분포를 분석하기 위해 AndroZoo에서 제공하는 데이터를 활용하여 분석하였다. AndroZoo에서 제공하는 데이터 셋은 2014년부터 2018년까지의 데이터셋을 제공하며, 악성 애플리케이션과 정상 애플리케이션이 혼재되어 있다. 이 실시예에서 사용한 애플리케이션은 총 189,800개이며, 악성 애플리케이션 31,936(26.8%)개, 정상 애플리케이션157,864(83.2%)개 이다.In the embodiment of the present invention, data provided by AndroZoo were used to analyze the distribution of cross-platform applications. The data set provided by AndroZoo provides data sets from 2014 to 2018, and malicious applications and normal applications are mixed. A total of 189,800 applications were used in this example, 31,936 (26.8%) malicious applications, and 157,864 (83.2%) normal applications.

AndroZoo 데이터 셋을 구성하는 애플리케이션들의 악성여부는 VirusTotal을 활용하여 검수하였으며 이를 기반으로 malware (악성 애플리케이션, malicious apps), goodware (정상 애플리케이션, benign apps)로 분류하였다. 이 실시예가 제안한 분류기법을 사용하여 연도 별로 크로스플랫폼 애플리케이션의 사용 빈도를 파악함으로서 크로스플랫폼 프레임워크의 사용경향을 분석한다. 또한 연도 별로 악성코드 중에서 크로스플랫폼 프레임워크를 얼마나 사용하는지 파악하여, 악성코드에 대한 크로스플랫폼 별 분석 기법의 필요성을 확인한다.Malicious applications that make up the AndroZoo data set were inspected using VirusTotal, and based on this, they were classified as malware (malware applications) and goodware (normal applications). Using the classification technique proposed by this embodiment, the usage trend of the cross-platform framework is analyzed by grasping the frequency of use of the cross-platform application by year. In addition, by grasping how many cross-platform frameworks are used among malicious codes by year, the necessity of cross-platform analysis techniques for malicious codes is confirmed.

본 발명의 실시예를 이용하여 AndroZoo에서 제공한 정상 애플리케이션(goodware) 분석결과, 전체 157,864개의 애플리케이션 중에서 하이브리드 앱은 13,036(8.26%)개, 자립형 프레임워크 앱은 20,284(16.29%)개이며 전체 크로스플랫폼 애플리케이션의 개수는 33,320(21.10%)개로 파악되었다. 정상 애플리케이션에 대한 자세한 분류결과는 표 6과 같다. 또한 크로스플랫폼 애플리케이션 활용의 증가추세를 확인할 수 있는데, 2014년 크로스플랫폼 애플리케이션의 비율의 경우 13.06% 인데 반해, 2018년의 경우 45.69%로 증가했음을 알 수 있다. 또한 하이브리드 앱의 비율은 2014년 3.23%에서 2016년 14.37%로 증가했으며 2018년 9.95%로 소폭 감소했다.As a result of analyzing goodware provided by AndroZoo using an embodiment of the present invention, out of a total of 157,864 applications, 13,036 (8.26%) hybrid apps and 20,284 (16.29%) standalone framework apps are cross-platform. The number of applications was identified as 33,320 (21.10%). The detailed classification results for normal applications are shown in Table 6. In addition, we can see the increasing trend of the use of cross-platform applications. In 2014, the ratio of cross-platform applications was 13.06%, whereas in 2018, it increased to 45.69%. In addition, the proportion of hybrid apps increased from 3.23% in 2014 to 14.37% in 2016 and slightly decreased to 9.95% in 2018.

Figure 112019110816461-pat00003
Figure 112019110816461-pat00003

반면 자립형 프레임워크 앱의 비중은 점진적 증가한 것을 알 수 있다. 2014년 9.93%이던 앱의 비중은 2016년에 9.08%로 소폭 감소했으나, 2017년 17.71%, 2018년 35.75%로 증가하여 자립형 프레임워크 앱의 비율이 증가하였음을 알 수 있다. 특히, 모바일 환경에서 Mono 런타임을 활용하는 경우가 점진적으로 증가하는 것을 관찰할 수 있는데, Xamarin 프레임워크의 경우 2014년 0.74%에서 2018년 6.51%로 증가하였으며, Unity의 경우 2014년 4.52%에서 2018년 23.79%로 증가하였다. On the other hand, it can be seen that the proportion of standalone framework apps has gradually increased. The share of apps from 9.93% in 2014 decreased slightly to 9.08% in 2016, but increased to 17.71% in 2017 and 35.75% in 2018, indicating that the proportion of self-contained framework apps increased. In particular, it can be observed that the cases of using the Mono runtime in mobile environments gradually increase.In the case of the Xamarin framework, it increased from 0.74% in 2014 to 6.51% in 2018, and in the case of Unity, from 4.52% in 2014 to 2018. Increased to 23.79%.

AndroZoo에서 제공한 악성 애플리케이션(malware) 분석결과 전체 31,936개의 애플리케이션 중에서 하이브리드 앱은 909(2.85%)개, 자립형 프레임워크 앱은 5,455(21.33%)이며, 전체 크로스플랫폼 애플리케이션의 개수는 6,364(19.93%)개로 파악되었다. 악성 애플리케이션에 대한 자세한 분류결과는 표 7과 같다.As a result of analyzing malicious applications provided by AndroZoo, 909 (2.85%) of hybrid apps and 5,455 (21.33%) of self-supporting framework apps out of a total of 31,936 applications, and the total number of cross-platform applications is 6,364 (19.93%). It was identified as a dog. Table 7 shows the detailed classification results for malicious applications.

Figure 112019110816461-pat00004
Figure 112019110816461-pat00004

정상 애플리케이션에 반해 악성 애플리케이션의 경우 2014년을 기점으로 크로스플랫폼 개발 프레임워크를 활용한 경우가 점차 줄어드는 것을 확인할 수 있는데, 2014년 17.29%이던 크로스플랫폼 애플리케이션 비율이 2017년 4.89%, 2018년 3.12%로 감소하였음을 확인할 수 있다.Compared to normal applications, it can be seen that the use of cross-platform development frameworks gradually decreases in the case of malicious applications starting in 2014. The ratio of cross-platform applications from 17.29% in 2014 to 4.89% in 2017 and 3.12% in 2018. It can be seen that it has decreased.

하이브리드 앱과 자립형 프레임워크 앱의 종류에 따라서 감소추세를 보인다. 악성 애플리케이션 중에서 하이브리드 앱의 비율은 2014년 7.00%, 2017년 0.54%, 2018년 0.52%로 감소하였음을 확인할 수 있다. 또한 자립형 프레임워크 앱의 비율은 2014년 17.29%, 2017년 4.32%, 2018년 2.51%로 지속적으로 감소함을 알 수 있다. 하지만 여전히 크로스플랫폼 개발 프레임워크를 이용한 악성 애플리케이션이 존재한다는 것을 알 수 있으며, 이에 대한 보안 및 저작권 보호차원에서의 대책이 필요한 것으로 보인다.Depending on the type of hybrid app and standalone framework app, there is a decrease in trend. It can be seen that the proportion of hybrid apps among malicious applications decreased to 7.00% in 2014, 0.54% in 2017, and 0.52% in 2018. In addition, it can be seen that the proportion of self-supporting framework apps continues to decrease to 17.29% in 2014, 4.32% in 2017, and 2.51% in 2018. However, it can be seen that there are still malicious applications using the cross-platform development framework, and it seems that countermeasures in terms of security and copyright protection are needed.

크로스플랫폼 애플리케이션들의 분포를 파악하기 위한 연구가 기존에도 있었다. 하지만, 종래 연구들은 실행코드를 분석하지 않았고, 압축 파일형태로 온라인 마켓에 배포되는 APK 파일 내부의 파일명 및 디렉토리 구조들을 분석하여 크로스플랫폼 애플리케이션들의 분포를 분석하였다. cocos2dx의 경우, APK 내부 특징 정보라고 할 수 있는 libcocos2dcpp.so 파일과 libunity.so 파일 이동시에 존재하는 것을 확인했다. 이 경우 dex 파일을 분석하면 구체적으로 어떤 공유 라이브러리가 실제로 사용되는지 파악할 수 있다. 따라서 본 발명의 실시예는 바이트코드를 역공학하여 네이티브 함수와 부모 클래스(super class)의 정보를 확인하여 크로스플랫폼 애플리케이션을 분류하였다.There have been studies to understand the distribution of cross-platform applications. However, prior studies did not analyze the execution code, but analyzed the distribution of cross-platform applications by analyzing the file name and directory structure inside the APK file distributed in the online market in the form of a compressed file. In the case of cocos2dx, it was confirmed that there existed when moving the libcocos2dcpp.so file and libunity.so file, which can be referred to as the characteristic information inside the APK. In this case, by analyzing the dex file, you can figure out which shared library is actually being used. Accordingly, in the embodiment of the present invention, cross-platform applications are classified by confirming information on a native function and a super class by reverse engineering the bytecode.

정리.theorem.

본 발명의 실시예는 안드로이드 애플리케이션을 개발 프레임워크에 따라 (1) 네이티브 앱(native apps), (2) 하이브리드 앱(hybrid apps of Web and native components), (3) 자립형 프레임워크 앱(self-contained framework apps)의 3가지 타입으로 분류한다. 크로스플랫폼 애플리케이션 분류 시, 자립형 프레임워크 앱의 경우 네이티브 함수의 심볼 정보를 활용하고, 하이브리드 앱의 경우 네이티브 함수의 심볼 정보와, 웹킷의 주요 클래스를 상속 받는 주요 클래스들의 심볼을 확인하여 크로스플랫폼 애플리케이션을 식별하고 분류한다.An embodiment of the present invention is an Android application according to a development framework (1) native apps, (2) hybrid apps of Web and native components, (3) self-contained framework apps. framework apps). When classifying cross-platform applications, in the case of a standalone framework app, the symbol information of the native function is used, in the case of a hybrid app, the symbol information of the native function and the symbols of major classes that inherit the main classes of WebKit are checked to identify the cross-platform application. Identify and classify.

실험을 위해 AndroZoo 데이터 셋을 이용하였으며, 정상 애플리케이션으로 분류된 데이터 셋의 경우 크로스플랫폼 애플리케이션이라고 파악된 개수가 전체157,864개 중 33,320(21.10%)개로 파악되었으며, 악성 애플리케이션으로 분류된 데이터 셋의 경우 크로스플랫폼 애플리케이션이라고 파악된 애플리케이션의 개수가 전체 31,936개 중 6,364(19.93)개로 파악되었다.For the experiment, the AndroZoo data set was used. In the case of the data set classified as a normal application, the number identified as cross-platform applications was identified as 33,320 (21.10%) out of the total 157,864, and the data set classified as a malicious application was identified as cross-platform applications. The number of applications identified as platform applications was 6,364 (19.93) out of 31,936.

이상에서 본 발명의 바람직한 실시예를 설명하였으나, 본 발명은 다양한 변화와 변경 및 균등물을 사용할 수 있다. 본 발명은 상기 실시예를 적절히 변형하여 동일하게 응용할 수 있음이 명확하다. 따라서 상기 기재 내용은 다음 특허청구범위의 한계에 의해 정해지는 본 발명의 범위를 한정하는 것이 아니다.Although the preferred embodiment of the present invention has been described above, the present invention can use various changes, modifications, and equivalents. It is clear that the present invention can be applied in the same manner by appropriately modifying the above embodiments. Therefore, the above description is not intended to limit the scope of the present invention determined by the limits of the following claims.

120 : 입력부
140 : 분석부
160 : 분류부
120: input
140: analysis unit
160: classification unit

Claims (7)

제작 플랫폼 분석 대상이 되는 애플리케이션을 수신하는 입력부;
상기 입력부에서 수신된 애플리케이션의 dex 파일에서 액세스 플래그(Access flag)가 네이티브(native) 함수인 메소드 심볼을 선별하는 분석부;
상기 분석부에서 선별된 정보를 이용하여 상기 애플리케이션 작성에 이용된 크로스플랫폼 개발 프레임워크를 분류하는 분류부를 포함하는 것을 특징으로 하는 크로스플랫폼 개발 프레임워크로 제작된 애플리케이션을 식별하기 위한 특징정보 추출 장치.
An input unit for receiving an application to be analyzed for a production platform;
An analysis unit for selecting a method symbol whose access flag is a native function from the dex file of the application received from the input unit;
And a classification unit for classifying a cross-platform development framework used to create the application by using the information selected by the analysis unit.
제1항에 있어서, 상기 분류부는,
상기 애플리케이션이 작성된 프레임워크를 상기 분석부가 선별한 메소드 심볼의 네이티브 함수 이름에 따라 하기 표 2에 기초하여 분류하는 것을 특징으로 하는 크로스플랫폼 개발 프레임워크로 제작된 애플리케이션을 식별하기 위한 특징정보 추출 장치.
[표 2]
Figure 112019110816461-pat00005
The method of claim 1, wherein the classification unit,
A feature information extraction device for identifying an application made with a cross-platform development framework, characterized in that the framework in which the application is created is classified based on the following Table 2 according to the native function name of the method symbol selected by the analysis unit.
[Table 2]
Figure 112019110816461-pat00005
제1항에 있어서,
상기 분류부는 WebView 또는 WebViewClient를 상속받는 클래스 명을 더 이용하는 것을 특징으로 하는 크로스플랫폼 개발 프레임워크로 제작된 애플리케이션을 식별하기 위한 특징정보 추출 장치.
The method of claim 1,
The device for extracting feature information for identifying an application produced with a cross-platform development framework, characterized in that the classification unit further uses a class name inheriting WebView or WebViewClient.
제3항에 있어서, 상기 분류부는,
상기 애플리케이션이 작성된 프레임워크를 상기 분석부가 선별한 메소드 심볼의 네이티브 함수 이름에 따라 하기 표 5에 기초하여 분류하는 것을 특징으로 하는 크로스플랫폼 개발 프레임워크로 제작된 애플리케이션을 식별하기 위한 특징정보 추출 장치.
[표 5]
Figure 112019110816461-pat00006
The method of claim 3, wherein the classification unit,
A feature information extraction device for identifying an application made with a cross-platform development framework, characterized in that the framework in which the application is created is classified according to the native function name of the method symbol selected by the analysis unit based on Table 5 below.
[Table 5]
Figure 112019110816461-pat00006
제1항에 있어서,
상기 분석부는 상기 입력부에서 수신된 애플리케이션의 dex 파일 포맷 중 네이티브 함수, 패키지, 클래스, 메소드 중에 포함된 mono, qtproject, QtNative, unity, Cocos2d, ansca, gdx, vuforia, apache, cordova, titanium, appyet, facebook, react, tns, rhomobile 중 어느 하나의 키워드를 메소드 심볼로써 더 선별하고,
상기 분류부는 상기 분석부에서 선별된 키워드 중 mono가 있으면 애플리케이션이 작성된 프레임워크를 Xamarin으로 분류하고,
상기 분류부는 상기 분석부에서 선별된 키워드 중 qtproject 또는 QtNative가 있으면 애플리케이션이 작성된 프레임워크를 Qt project로 분류하고,
상기 분류부는 상기 분석부에서 선별된 키워드 중 unity가 있으면 애플리케이션이 작성된 프레임워크를 Unity로 분류하고,
상기 분류부는 상기 분석부에서 선별된 키워드 중 Cocos2d가 있으면 애플리케이션이 작성된 프레임워크를 Cocos2d-x로 분류하고,
상기 분류부는 상기 분석부에서 선별된 키워드 중 ansca 또는 corona가 있으면 애플리케이션이 작성된 프레임워크를 Corona로 분류하고,
상기 분류부는 상기 분석부에서 선별된 키워드 중 gdx가 있으면 애플리케이션이 작성된 프레임워크를 libGDX로 분류하고,
상기 분류부는 상기 분석부에서 선별된 키워드 중 vuforia가 있으면 애플리케이션이 작성된 프레임워크를 Vuforia로 분류하고,
상기 분류부는 상기 분석부에서 선별된 키워드 중 apache 또는 cordova가 있으면 애플리케이션이 작성된 프레임워크를 Cordova로 분류하고,
상기 분류부는 상기 분석부에서 선별된 키워드 중 titanium이 있으면 애플리케이션이 작성된 프레임워크를 Titanium으로 분류하고,
상기 분류부는 상기 분석부에서 선별된 키워드 중 appyet이 있으면 애플리케이션이 작성된 프레임워크를 AppYet로 분류하고,
상기 분류부는 상기 분석부에서 선별된 키워드 중 facebook 또는 react가 있으면 애플리케이션이 작성된 프레임워크를 React Native로 분류하고,
상기 분류부는 상기 분석부에서 선별된 키워드 중 tns가 있으면 애플리케이션이 작성된 프레임워크를 NativeScript로 분류하고,
상기 분류부는 상기 분석부에서 선별된 키워드 중 rhomobile가 있으면 애플리케이션이 작성된 프레임워크를 RhoMobile로 분류하는 것을 특징으로 하는 크로스플랫폼 개발 프레임워크로 제작된 애플리케이션을 식별하기 위한 특징정보 추출 장치.
The method of claim 1,
The analysis unit includes mono, qtproject, QtNative, unity, Cocos2d, ansca, gdx, vuforia, apache, cordova, titanium, appyet, facebook included among native functions, packages, classes, and methods among dex file formats of the application received from the input unit. , react, tns, rhomobile, select any one keyword as a method symbol,
The classification unit classifies the framework in which the application is created as Xamarin if there is mono among the keywords selected by the analysis unit,
If there is qtproject or QtNative among keywords selected by the analysis unit, the classification unit classifies the framework in which the application is created as a Qt project,
If there is unity among the keywords selected by the analysis unit, the classification unit classifies the framework in which the application is created as Unity,
If there is Cocos2d among the keywords selected by the analysis unit, the classification unit classifies the framework in which the application is created as Cocos2d-x,
If there is ansca or corona among the keywords selected by the analysis unit, the classification unit classifies the framework in which the application is created as Corona,
The classification unit classifies the framework in which the application is created as libGDX if there is gdx among the keywords selected by the analysis unit,
If there is vuforia among the keywords selected by the analysis unit, the classification unit classifies the framework in which the application is created as Vuforia,
If there is apache or cordova among the keywords selected by the analysis unit, the classification unit classifies the framework in which the application is created as Cordova,
If there is titanium among the keywords selected by the analysis unit, the classification unit classifies the framework in which the application is created as Titanium,
If there is appyet among the keywords selected by the analysis unit, the classification unit classifies the framework in which the application is created as AppYet,
If there is facebook or react among the keywords selected by the analysis unit, the classification unit classifies the framework in which the application is created as React Native,
If there is tns among the keywords selected by the analysis unit, the classification unit classifies the framework in which the application is created as NativeScript,
The classification unit classifies a framework in which the application is created as RhoMobile if there is rhomobile among keywords selected by the analysis unit.
입력부가 제작 플랫폼 분석 대상이 되는 애플리케이션을 수신하는 단계;
분석부가 상기 애플리케이션의 dex 파일에서 액세스 플래그(Access flag)가 네이티브(native) 함수인 메소드 심볼을 선별하는 단계;
분류부가 상기 분석부에서 선별된 정보를 이용하여 상기 애플리케이션 작성에 이용된 크로스플랫폼 개발 프레임워크를 분류하는 단계를 포함하는 것을 특징으로 하는 크로스플랫폼 개발 프레임워크로 제작된 애플리케이션을 식별하기 위한 특징정보 추출 방법.
Receiving an application that is an input unit to be analyzed for a production platform;
Selecting, by an analysis unit, a method symbol whose access flag is a native function from the dex file of the application;
Extracting feature information for identifying an application created with a cross-platform development framework, characterized in that it comprises the step of classifying a cross-platform development framework used for creating the application by a classification unit using the information selected by the analysis unit. Way.
제6항에 있어서,
상기 분류부는 WebView 또는 WebViewClient를 상속받는 클래스 명을 더 이용하는 것을 특징으로 하는 크로스플랫폼 개발 프레임워크로 제작된 애플리케이션을 식별하기 위한 특징정보 추출 방법.
The method of claim 6,
The classification unit further uses a class name that inherits WebView or WebViewClient. Feature information extraction method for identifying an application produced with a cross-platform development framework.
KR1020190135873A 2019-10-29 2019-10-29 Apparatus and method for extracting feature information to identify an application created by cross-platform development framework KR102226218B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020190135873A KR102226218B1 (en) 2019-10-29 2019-10-29 Apparatus and method for extracting feature information to identify an application created by cross-platform development framework

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190135873A KR102226218B1 (en) 2019-10-29 2019-10-29 Apparatus and method for extracting feature information to identify an application created by cross-platform development framework

Publications (1)

Publication Number Publication Date
KR102226218B1 true KR102226218B1 (en) 2021-03-10

Family

ID=75147728

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190135873A KR102226218B1 (en) 2019-10-29 2019-10-29 Apparatus and method for extracting feature information to identify an application created by cross-platform development framework

Country Status (1)

Country Link
KR (1) KR102226218B1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114217788A (en) * 2021-12-21 2022-03-22 北京达佳互联信息技术有限公司 Method and device for realizing cross-frame assembly

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20140004819A (en) 2012-06-20 2014-01-14 (주)쉬프트웍스 Method for detecting fake and falsification of application by using android obfuscation
KR20150044490A (en) * 2013-10-16 2015-04-27 (주)이스트소프트 A detecting device for android malignant application and a detecting method therefor

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20140004819A (en) 2012-06-20 2014-01-14 (주)쉬프트웍스 Method for detecting fake and falsification of application by using android obfuscation
KR20150044490A (en) * 2013-10-16 2015-04-27 (주)이스트소프트 A detecting device for android malignant application and a detecting method therefor

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114217788A (en) * 2021-12-21 2022-03-22 北京达佳互联信息技术有限公司 Method and device for realizing cross-frame assembly

Similar Documents

Publication Publication Date Title
Seo et al. FLEXDROID: Enforcing In-App Privilege Separation in Android.
Ligh et al. The art of memory forensics: detecting malware and threats in windows, linux, and Mac memory
Bojinov et al. Address space randomization for mobile devices
CN105760773B (en) The system and method for opening file by pregnable application control
Hallaraker et al. Detecting malicious javascript code in mozilla
JP5985631B2 (en) Activate trust level
US11822654B2 (en) System and method for runtime detection, analysis and signature determination of obfuscated malicious code
WO2016135729A1 (en) A method to identify known compilers functions, libraries and objects inside files and data items containing an executable code
CN109255235B (en) Mobile application third-party library isolation method based on user state sandbox
Macht Live memory forensics on android with volatility
US9038161B2 (en) Exploit nonspecific host intrusion prevention/detection methods and systems and smart filters therefor
CN103778373A (en) Virus detection method and device
US9197446B2 (en) Address pinning
Nolan Decompiling android
Lim et al. An Android Application Protection Scheme against Dynamic Reverse Engineering Attacks.
Case et al. HookTracer: A system for automated and accessible API hooks analysis
US9372704B2 (en) Virtual environment having harvard architecture
Kawakoya et al. Stealth loader: Trace-free program loading for API obfuscation
Alfalqi et al. Android platform malware analysis
KR102226218B1 (en) Apparatus and method for extracting feature information to identify an application created by cross-platform development framework
Lancia et al. Java card virtual machine compromising from a bytecode verified applet
Rousseau Hijacking. net to defend powershell
Na et al. Comparative Analysis of Mobile App Reverse Engineering Methods on Dalvik and ART.
Lee et al. Cross-platform mobile malware, write once, run everywhere
CN107239703B (en) Dynamic analysis method for executable program with dynamic link library missing

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant