KR102167767B1 - 머신러닝의 학습 데이터셋 생성을 위한 애플리케이션 자동화 빌드 장치 및 방법 - Google Patents

머신러닝의 학습 데이터셋 생성을 위한 애플리케이션 자동화 빌드 장치 및 방법 Download PDF

Info

Publication number
KR102167767B1
KR102167767B1 KR1020180169672A KR20180169672A KR102167767B1 KR 102167767 B1 KR102167767 B1 KR 102167767B1 KR 1020180169672 A KR1020180169672 A KR 1020180169672A KR 20180169672 A KR20180169672 A KR 20180169672A KR 102167767 B1 KR102167767 B1 KR 102167767B1
Authority
KR
South Korea
Prior art keywords
open source
source data
unit
learning
build
Prior art date
Application number
KR1020180169672A
Other languages
English (en)
Other versions
KR20200084441A (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 KR1020180169672A priority Critical patent/KR102167767B1/ko
Publication of KR20200084441A publication Critical patent/KR20200084441A/ko
Application granted granted Critical
Publication of KR102167767B1 publication Critical patent/KR102167767B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code

Abstract

본 발명은 멀웨어 탐지, 분류 등을 수행하는 머신러닝의 학습을 위해 샘플 애플리케이션의 데이터셋을 자동으로 생성하고, 데이터셋 생성 시 빌드과정에서 발생되는 문제를 자동으로 해결하는 자동화 빌드 장치 및 방법에 관한 기술로서, 머신러닝 학습을 위한 다수의 오픈소스 데이터가 저장되는 저장부, 저장부에 저장된 오픈소스 데이터의 빌드시스템 종류 식별, 적합한 환경 또는 옵션 정보 설정, 필요 라이브러리 적용이 포함된 시스템설정을 실시하는 설정부, 및 오픈소스 데이터를 설정부가 시스템설정한 환경 또는 옵션으로 빌드하여 애플리케이션 데이터셋을 생성하는 구축부를 포함한다.

Description

머신러닝의 학습 데이터셋 생성을 위한 애플리케이션 자동화 빌드 장치 및 방법 {AUTOMATIC BUILD APPARATUS AND METHOD OF APPLICATION FOR GENERATING TRAINING DATA SET OF MACHINE LEARNING}
본 발명은 머신러닝의 학습 데이터셋 생성을 위한 애플리케이션 자동화 빌드 장치 및 방법에 관한 것으로서, 보다 상세하게는 멀웨어 탐지, 분류 등을 수행하는 머신러닝의 학습을 위해 샘플 애플리케이션의 데이터셋을 자동으로 생성하고, 데이터셋 생성 시 빌드과정에서 발생되는 문제를 자동으로 해결하는 자동화 빌드 장치 및 방법에 관한 기술이다.
연산장치의 고도화에 의해 머신러닝을 이용한 자동화 시스템이 차세대 기술로 떠오르고 있다.
한편, 다양한 종류의 멀웨어 및 은폐 기법이 적용된 멀웨어가 등장하면서 멀웨어의 탐지 및 분류를 위해 머신러닝을 활용는 노력이 계속되고 있다. 멀웨어의 유형에는 바이러스, 웜, 트로이목마, 백도어, 논리폭탄, 봇(bot), 에드웨어, 스파이웨어, 랜섬웨어 등이 있다.
머신러닝이 제 기능을 수행하기 위해서는 선행하여 학습이 실시되어야 한다. 머신러닝의 학습을 위해서는 방대한 학습 데이터셋이 필요하다. 머신러닝의 성능을 결정짓는 요소는 학습 데이터셋이라 할 정도로 학습 데이터셋의 중요도는 머신러닝의 활용에서 가장 크다.
멀웨어 탐지 또는 분류를 위한 머신러닝은 멀웨어에 감염되지 않은 애플리케이션과, 멀웨어에 감염된 애플리케이션이 마련되어야 한다.
학습 데이터셋 중 멀웨어에 감염된 애플리케이션을 관리자가 식별할 수 있어야 올바른 학습과정과 테스트를 실시할 수 있다. 하지만 일반적으로 앱스토어 등 온라인에서 획득할 수 있는 애플리케이션 중에는 멀웨어에 감염된 것이 존재할 가능성이 있기 때문에 종래 애플리케이션을 멀웨어에 감염된 것과 감염되지 않은 것으로 구분하는 것은 완전무결하지 않을 수 있다. 만약 멀웨어에 감염된 애플리케이션이 감염되지 않은 애플리케이션으로 머신러닝에 학습된다면 해당 머신러닝은 지속적으로 관련 멀웨어에 대한 탐지율이 저하될 수 있는 문제가 발생된다.
따라서 학습 데이터셋으로 바람직한 애플리케이션은 소스 내용을 검토할 수 있는 오픈소스 애플리케이션이다. 하지만 오픈소스의 경우 다양한 빌드시스템 환경에서 코딩되고, 애플리케이션마다 세부 옵션이나 호출하는 라이브러리가 상이하다. 때문에 수작업으로 오픈소스를 빌드할 때에는 빌드 중 발생되는 오류를 수십 차례 해결하여야 하나의 실행 가능한 애플리케이션을 획득할 수 있게 된다.
하지만 신뢰성 있는 머신러닝 알고리즘을 구현하기 위해서는 수천 내지 수백만개의 학습 데이터가 필요하다. 따라서 멀웨어 탐지 및 분류를 수행하는 머신러닝을 위한 학습 데이터셋을 수작업으로 생성하는 일은 사실상 불가능에 가까운 상태이다.
등록특허공보 제10-1880628호
이에 본 발명은 상기와 같은 종래의 제반 문제점을 해소하기 위해 제안된 것으로, 본 발명의 목적은 멀웨어 탐지, 분류 등을 수행하는 머신러닝의 학습을 위해 샘플 애플리케이션의 데이터셋을 자동으로 생성하고, 데이터셋 생성 시 빌드과정에서 발생되는 문제를 자동으로 해결하는 자동화 빌드 장치 및 방법을 제공하는 것을 과제로 한다.
상기와 같은 목적을 달성하기 위하여 본 발명의 기술적 사상에 의한 머신러닝의 학습 데이터셋 생성을 위한 애플리케이션 자동화 빌드 장치는 머신러닝 학습을 위한 다수의 오픈소스 데이터가 저장되는 저장부; 상기 저장부에 저장된 오픈소스 데이터의 빌드시스템 종류 식별, 적합한 환경 또는 옵션 정보 설정, 필요 라이브러리 적용이 포함된 시스템설정을 실시하는 설정부; 상기 오픈소스 데이터를 상기 설정부가 시스템설정한 환경 또는 옵션으로 빌드하여 애플리케이션 데이터셋을 생성하는 구축부를 포함하는 것을 특징으로 한다.
또한, 상기 오픈소스 데이터에 난독화기법 또는 패킹기법을 적용하여 은폐화 하는 은폐부를 더 포함하는 것을 특징으로 할 수 있다.
또한, 상기 구축부가 상기 오픈소스 데이터의 빌드 시 전자서명을 추가하는 서명부를 더 포함하는 것을 특징으로 할 수 있다.
또한, 상기 오픈소스 데이터에 머신러닝 학습에 필요한 학습용 멀웨어 코드를 삽입하는 멀웨어삽입부를 더 포함하는 것을 특징으로 할 수 있다.
또한, 상기 설정부는, 상기 오픈소스 데이터의 빌드시스템 종류를 식별하고, 누락된 빌드 필요 파일을 생성하는 빌드분석부; 상기 오픈소스 데이터에 적합한 환경 또는 옵션 정보를 설정하는 환경조정부; 상기 오픈소스 데이터가 호출하는 라이브러리를 적용하는 라이브러리구성부; 및 상기 오픈소스 데이터의 문법 오류 정정 및 문법 최신화를 실시하는 교정부를 포함하는 것을 특징으로 할 수 있다.
또한, 상기 머신러닝은 안드로이드 애플리케이션의 멀웨어 탐지 또는 분류를 위한 알고리즘이고, 상기 오픈소스 데이터는 안드로이 애플리케이션의 오픈소스이며, 상기 빌드분석부는 상기 오픈소스 데이터의 빌드시스템이 이클립스(Eclipse), 안드로이드 스튜디오(Android studio), 그래들(Gradle) 중 어떤 것에 해당되는지 식별하는 것을 특징으로 할 수 있다.
또한, 상기 라이브러리구성부는 상기 오픈소스 데이터의 필요 라이브러리를 탐색하기 위한 라이브러리 데이터베이스를 포함하는 것을 특징으로 할 수 있다.
또한, 상기 라이브러리구성부는 상기 오픈소스 데이터가 유효하지 않은 안드로이드 서버의 연결정보를 포함하는 경우 상기 연결정보를 관련된 최신 안드로이드 서버의 정보로 최신화 하는 것을 특징으로 할 수 있다.
또한, 상기 교정부는 local.properties, build.xml, gradle-wrapper.properties를 포함하는 빌드 관련파일을 대상으로 문법 오류 정정 및 문법 최신화를 실시하는 것을 특징으로 할 수 있다.
한편, 상기와 같은 목적을 달성하기 위하여 본 발명의 기술적 사상에 의한 머신러닝의 학습 데이터셋 생성을 위한 애플리케이션 자동화 빌드 방법은 (A)저장부가 머신러닝 학습을 위한 다수의 오픈소스 데이터를 저장하는 단계; (B)설정부가 상기 저장부에 저장된 오픈소스 데이터의 빌드시스템 종류 식별, 적합한 환경 또는 옵션 정보 설정, 필요 라이브러리 적용이 포함된 시스템설정을 실시하는 단계; 및 (C)구축부가 오픈소스 데이터를 상기 설정부가 시스템설정한 환경 또는 옵션으로 빌드하여 애플리케이션 데이터셋을 생성하는 단계를 포함하는 것을 특징으로 한다.
또한, 상기 (C) 단계 전, 은폐부가 상기 오픈소스 데이터에 난독화기법 또는 패킹기법을 적용하여 은폐화 하는 단계를 더 포함하는 것을 특징으로 할 수 있다.
또한, 상기 (C) 단계 전, 서명부가 상기 오픈소스 데이터에 전자서명을 추가하는 단계를 더 포함하는 것을 특징으로 할 수 있다.
또한, 상기 (C) 단계 전, 멀웨어삽입부가 상기 오픈소스 데이터에 머신러닝 학습에 필요한 학습용 멀웨어 코드를 삽입하는 단계를 더 포함하는 것을 특징으로 할 수 있다.
본 발명에 의한 머신러닝의 학습 데이터셋 생성을 위한 애플리케이션 자동화 빌드 장치 및 방법에 따르면,
첫째, 멀웨어 탐지, 분류 등을 수행하는 머신러닝의 학습을 위한 애플리케이션의 데이터셋을 자동으로 생성하므로, 머신러닝의 충분한 학습을 지원할 수 있게 된다.
둘째, 오픈소스의 빌드에 필요한 환경설정 및 라이브러리 적용이 자동으로 실시되고, 오류가 있는 코드는 자동으로 수정하므로 애플리케이션 데이터셋을 신속하게 생성할 수 있게 된다.
셋째, 오픈소스를 다양한 방법으로 은폐화 할 수 있고, 은폐화된 멀웨어를 효율적으로 생성하게 해 주어 은폐화된 멀웨어를 탐지하기 위한 머신러닝의 학습도 지원할 수 있게 된다.
넷째, 오픈소스에 학습용 멀웨어 코드를 삽입하여 빌드할 수 있기 때문에 충분한 수의 멀웨어 감염 애플리케이션의 데이터셋을 마련하는 것이 용이하다.
도 1은 본 발명의 실시예에 따른 머신러닝의 학습 데이터셋 생성을 위한 애플리케이션 자동화 빌드 장치의 구성도.
도 2는 본 발명의 실시예에 따른 머신러닝의 학습 데이터셋 생성을 위한 애플리케이션 자동화 빌드 방법의 순서도.
첨부한 도면을 참조하여 본 발명의 실시예들에 의한 머신러닝의 학습 데이터셋 생성을 위한 애플리케이션 자동화 빌드 장치 및 방법에 대하여 상세히 설명한다. 본 발명은 다양한 변경을 가할 수 있고 여러 가지 형태를 가질 수 있는바, 특정 실시예들을 도면에 예시하고 본문에 상세하게 설명하고자 한다. 그러나 이는 본 발명을 특정한 개시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 각 도면을 설명하면서 유사한 참조부호를 유사한 구성요소에 대해 사용하였다.
또한, 다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥 상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
본 발명은 윈도우즈 환경, 안드로이드 환경, 리눅스 환경, iOS 환경 등 다양한 플랫폼에서 제약 없이 이용 가능하다. 발명을 설명하기 위해 안드로이드 환경을 예시로 사용하지만 이것으로 본 발명의 적용 환경이 안드로이드로 한정되는 것은 아니다.
본 발명의 실시예에 따른 머신러닝의 학습 데이터셋 생성을 위한 애플리케이션 자동화 빌드 장치(100)는 하나의 컴퓨터 장치에 설치 운영되거나, 복수의 컴퓨터 장치에 분산 설치되고 유선 또는 무선으로 각 컴퓨터 장치가 서로 연결되어 연동되는 것으로 실시될 수 있다.
도 1을 참조하면, 본 발명의 실시예에 따른 머신러닝의 학습 데이터셋 생성을 위한 애플리케이션 자동화 빌드 장치(100)는, 머신러닝 학습을 위한 다수의 오픈소스 데이터가 저장되는 저장부(110); 저장부(110)에 저장된 오픈소스 데이터의 빌드시스템 종류 식별, 적합한 환경 및 ·옵션 정보 설정, 필요 라이브러리 적용이 포함된 시스템설정을 실시하는 설정부(140); 및 오픈소스 데이터를 설정부(140)가 시스템설정한 환경 또는 옵션으로 빌드하여 애플리케이션 데이터셋을 생성하는 구축부(180)를 포함한다.
오픈소스 데이터에는 소스코드가 공개된 애플리케이션이 포함된다.
저장부(110)는 데이터베이스 관리 응용프로그램에 의해 운영되거나, 각 오픈소스별로 디렉토리를 생성하는 것으로 관리될 수 있다.
리스트생성부(120)는 저장부(110)에 저장된 오픈소스 데이터에 고유 명칭, 앱스토어에서의 분류, 포함되는 기능, 이용하는 API, 포함된 퍼미션(permission) 등을 정리하여 리스트화 한다.
아래에서는 이 실시예의 오픈소스 데이터가 안드로이드 애플리케이션의 오픈소스이고, 머신러닝이 안드로이드 애플리케이션의 멀웨어 탐지 또는 분류를 위한 알고리즘인 것을 가정하여 설명한다.
저장부(110)에는 F-droid 등 온라인 또는 오프라인에서 공개된 안드로이드 애플리케이션의 오픈소스가 수집되어 저장된다.
설정부(140)는, 오픈소스 데이터의 빌드시스템 종류를 식별하고, 누락된 빌드 필요 파일을 생성하는 빌드분석부(142); 오픈소스 데이터에 적합한 환경 ·또는 옵션 정보를 설정하는 환경조정부(143); 오픈소스 데이터가 호출하는 라이브러리를 적용하는 라이브러리구성부(145); 및 오픈소스 데이터의 문법 오류 정정과 문법 최신화를 실시하는 교정부(144)를 포함할 수 있다.
빌드분석부(142)는 오픈소스 데이터가 안드로이드 애플리케이션인 경우, 빌드시스템이 이클립스(Eclipse), 안드로이드 스튜디오(Android studio), 그래들(Gradle) 중 어떤 것에 해당되는지 식별한다.
또한 빌드분석부(142)는 build.xml, local.properties와 같이 누락된 빌드 필요 파일을 자동으로 생성한다.
환경조정부(143)는 오픈소스 데이터에 적합한 환경 또는·옵션 정보를 설정한다. 환경 또는 옵션에는 안드로이드 운영체제 버전(Android 4.1~4.3 Jelly Bean, Android 4.4 KitKat, Android 5.0~5.1 Lollipop, Android 6.0 Marshmallow, Android 7 Nougat, Android 8 Oreo, Android 9 Pie), 컴파일러 버전 정보, 적용되는 난독화 도구나 패킹 도구, 컴파일 최적화 또는 난독화 옵션 등을 포함한다. 예를 들어, Android 6.0 Marshmallow부터는 허가모드가 런타임 퍼미션이 적용되어, 기존 버전과는 상이하게 애플리케이션이 빌드된다.
라이브러리구성부(145)는 오픈소스 데이터에 필요한 라이브러리를 적용한다. 라이브러리의 예로는 Facebook, Gson, Flurry Analytics, Bolts, Crashlytics, OKHttp, Nine Old Androids, Picasso, Retrofit 등이 있다.
빌드분석부(142)가 오픈소스 데이터의 빌드시스템을 이클립스 또는 안드로이드 스튜디오로 판단한 경우, 필요 라이브러리를 구글 라이브러리에서 자동 다운로드하여 설치되게 한다.
한편, 라이브러리구성부(145)는 빌드시스템이 그래들인 경우, 구글 라이브러리에 포함되는 라이브러리는 자동 다운로드하여 설치한다. 만약 구글 라이브러리에 포함되지 않는 사용자 라이브러리이고, 오픈소스 데이터에 저장소(repositories)가 없으면 라이브러리구성부(145)는 내장된 라이브러리 데이터베이스에서 해당 라이브러리를 검색한다. 이를 위해, 라이브러리구성부(145)는 오픈소스 데이터의 필요 라이브러리를 탐색하기 위한 라이브러리 데이터베이스를 포함한다. 라이브러리 데이터베이스에는 알려진 다양한 사용자 라이브러리가 기 저장된다.
또한, 오래된 오픈소스 데이터는 유효하지 않은 안드로이드 서버의 연결정보를 포함할 수 있다. 라이브러리구성부(145)는 오픈소스 데이터가 유효하지 않은 안드로이드 서버의 연결정보를 포함하는 경우 연결정보를 관련된 최신 안드로이드 서버의 정보로 최신화 한다.
교정부(144)는 오픈소스 데이터의 문법 오류 정정과 문법 최신화를 실시한다. 교정부(144)는 안드로이드 환경에서 local.properties, build.xml, gradle-wrapper.properties를 포함하는 빌드 관련파일을 대상으로 문법 오류 정정 및 문법 최신화를 실시한다.
교정부(144)는 빌드 중 발생될 수 있는 오류 및 문제를 자동으로 수정한다.
예를 들어, 안드로이드 프로젝트의 디렉터리 구조 및 파일구성 확인한다. 또한 오픈소스 데이터의 저장소(repositories)가 구 버전이라면 최신 버전으로 변경하고, 관련 오류도 함께 수정한다. 또한 빌드시스템이 그래들인 경우, 일부 잘못될 수 있는 소스코드를 수정한다. 이용되는 그래들이 구 버전이어서 빌드가 어려울 경우, 최신의 그래들 버전으로 수정한다.
구축부(180)는 빌드분석부(142)가 식별한 종류의 빌드시스템으로 오픈소스 데이터를 빌드한다. 이를 위해, 구축부(180)는 빌드시스템에 대응하여 오픈소스 데이터의 빌드구조를 재 정렬할 수 있다.
또한 이 실시예는 오픈소스 데이터에 코드 난독화(obfuscation)기법 또는 패킹(packing)기법을 적용하여 은폐화 하는 은폐부(150)를 더 포함한다.
난독화기법(code obfuscation)은 소스코드나 실행코드를 해석하기 어렵게 만드는 기술이다. 난독화는 대상에 따라 크게 소스코드 난독화와 바이너리 난독화로 나눌 수 있다. 소스코드 난독화는 소스코드를 알아보기 힘든 형태로 바꾸는 기술이고, 바이너리 난독화는 컴파일 후 생성된 바이너리를 역공학으로 분석하기 어렵게 변환하는 기술이다. 난독화 기법에는 레이아웃 난독화(layout obfuscation), 제어 난독화(제어흐름 난독화, control obfuscation = control flow obfuscation), 데이터 난독화(data obfuscation), 예방적 변환(preventive transformations) 등이 있다.
패킹기법(packing)은 암호화, 인코딩, 압축 등의 변환 기법을 포함한다. 패킹은 소스코드를 분석하기 어렵도록 암호화 또는 인코딩하거나 압축하는 연산 동작, 불필요한 코드를 인위적으로 삽입하는 연산 동작 등을 포함한다. 암호화의 경우, 애플리케이션을 특정 키를 이용하여 암호화 하여 배포하거나 저장하면서, 필요 시 해당 키를 이용해 복호화 해야 정상적으로 애플리케이션이 실행될 수 있게 한다. 강력한 패킹 도구는 수십 내지 수백 번의 패킹을 하고, 코드 중간에 안티 디버깅 기술도 함께 포함하여 해석이 곤란하게 한다.
멀웨어가 난독화 또는 패킹되어 은폐된 상태로 애플리케이션에 포함된 경우, 은폐되지 않은 애플리케이션 데이터셋으로 학습된 머신러닝은 해당 멀웨어를 탐지 또는 분류하지 못할 수 있다. 하지만 은폐부(150)가 오픈소스 데이터를 난독화 또는 패킹하면 하나의 오픈소스 데이터에서 다양한 방식으로 은폐된 애플리케이션 데이터셋을 준비할 수 있게 된다. 난독화된 애플리케이션 데이터셋 또는 패킹된 애플리케이션 데이터셋으로 학습된 머신러닝은 은폐된 애플리케이션을 대상으로 멀웨어 탐지, 분류 성능이 향상된다.
또한 이 실시예는 구축부(180)가 오픈소스 데이터의 빌드 시 전자서명을 추가하는 서명부(160)를 더 포함한다.
또한 이 실시예는 오픈소스 데이터에 머신러닝 학습에 필요한 학습용 멀웨어 코드를 삽입하는 멀웨어삽입부(170)를 더 포함할 수 있다. 멀웨어삽입부(170)는 기 공개된 멀웨어의 소스코드를 포함한다.
멀웨어 탐지 및 분류 머신러닝의 학습을 위해서는 멀웨어에 감염된 애플리케이션의 데이터셋도 충분히 필요하다. 하지만 멀웨어에 감염된 애플리케이션이나 해당 오픈소스 데이터를 수집하는 것은 감염되지 않은 애플리케이션이나 오픈소스를 수집하는 것 보다 어렵다.
따라서 멀웨어삽입부(170)는 기 공개된 멀웨어의 소스코드를 다수의 오픈소스 데이터에 추가 삽입하여 임의로 멀웨어에 감염된 애플리케이션을 생성할 수 있다. 멀웨어는 바이러스, 웜, 트로이목마, 백도어, 논리폭탄, 봇(bot), 에드웨어, 스파이웨어, 랜섬웨어 등의 유형이 존재하고 각 유형마다 수십 내지 수천가지의 멀웨어가 존재한다. 이러한 다양한 멀웨어의 소스코드를 하나의 오픈소스에 삽입하면 적어도 천 개 이상의 멀웨어에 감염된 애플리케이션을 획득할 수 있다. 이 실시예의 저장부(110)에는 다수의 오픈소스 데이터가 저장되므로, 각 오픈소스 데이터에 멀웨어 소스코드를 종류별로 적용하면 수억 개의 멀웨어에 감염된 애플리케이션 데이터셋을 마련할 수 있게 된다.
멀웨어삽입부(170)는 멀웨어 소스코드를 오픈소스 데이터에서 실행영역에 해당되는 위치에 삽입한다.
멀웨어삽입부(170)는 임의로 멀웨어 소스코드가 삽입된 오픈소스 데이터에 어떠한 멀웨어가 적용되었는지 라벨링한다. 라벨에는 멀웨어의 이름, 멀웨어 유형 등 정보가 포함될 수 있다. 이로써 관리자는 이 실시예에서 빌드된 애플리케이션 중에서 멀웨어에 감염된 애플리케이션만을 선별하고, 필요한 멀웨어의 종류도 선별할 수 있게 된다.
특히, 멀웨어삽입부(170)가 오픈소스 데이터에 멀웨어 코드를 삽입하고, 은폐부(150)가 해당 오픈소스 데이터를 은폐화 하면 무한대에 가까운 유형의 애플리케이션 데이터셋을 생성하는 것이 가능하게 된다.
이어서, 본 발명의 실시예에 따른 머신러닝의 학습 데이터셋 생성을 위한 애플리케이션 자동화 빌드 방법을 설명한다.
도 2를 참조하면, 이 실시예는 저장부(110)가 머신러닝 학습을 위한 다수의 오픈소스 데이터를 저장하는 단계(S110); 설정부(140)가 상기 저장부(110)에 저장된 오픈소스 데이터의 빌드시스템 종류 식별, 적합한 환경 또는 ·옵션 정보 설정, 필요 라이브러리 적용이 포함된 시스템설정을 실시하는 단계(S120); 및 구축부(180)가 오픈소스 데이터를 설정부(140)가 시스템설정한 환경 또는 옵션으로 빌드하여 애플리케이션 데이터셋을 생성하는 단계(S160)를 포함한다.
또한 이 실시예는 S160 단계 전, 멀웨어삽입부(170)가 오픈소스 데이터에 머신러닝 학습에 필요한 학습용 멀웨어 코드를 삽입하는 단계(S130)를 더 포함한다.
또한 이 실시예는 S160 단계 전, 은폐부(150)가 오픈소스 데이터에 난독화기법 또는 패킹기법을 적용하여 은폐화 하는 단계(S140)를 더 포함한다. 멀웨어 코드도 은폐화 될 수 있도록, S140 단계는 S130 단계 후에 실행되는 것이 바람직하다.
또한 이 실시예는 S160 단계 전, 서명부(160)가 오픈소스 데이터에 전자서명을 추가하는 단계(S150)를 더 포함한다.
S160 단계 후 출력부(190)가 생성된 애플리케이션 데이터셋을 멀웨어 진단 분류 장치(300)에 포함된 머신러닝을 학습 시키는 학습 장치(200)에 제공되거나, 향후 적합한 환경에서 이용하기 위해 별도의 저장소에 저장한다(S170).
이상에서 본 발명의 바람직한 실시예를 설명하였으나, 본 발명은 다양한 변화와 변경 및 균등물을 사용할 수 있다. 본 발명은 상기 실시예를 적절히 변형하여 동일하게 응용할 수 있음이 명확하다. 따라서 상기 기재 내용은 다음 특허청구범위의 한계에 의해 정해지는 본 발명의 범위를 한정하는 것이 아니다.
100 : 애플리케이션 자동화 빌드 장치
110 : 저장부 120 : 리스트생성부
140 : 설정부 142 : 빌드분석부
143 : 환경조정부 144 : 교정부
145 : 라이브러리구성부 150 : 은폐부
160 : 서명부 170 : 멀웨어삽입부
180 : 구축부 190 : 출력부
200 : 머신러닝 학습 장치 300 : 멀웨어 탐지 분류 장치

Claims (13)

  1. 머신러닝 학습을 위한 다수의 오픈소스 데이터가 저장되는 저장부;
    상기 저장부에 저장된 오픈소스 데이터의 빌드시스템 종류 식별, 적합한 환경 또는 옵션 정보 설정, 필요 라이브러리 적용이 포함된 시스템설정을 실시하는 설정부; 및
    상기 오픈소스 데이터를 상기 설정부가 시스템설정한 환경 또는 옵션으로 빌드하여 애플리케이션 데이터셋을 생성하는 구축부를 포함하며,
    상기 오픈소스 데이터에 머신러닝 학습에 필요한 학습용 멀웨어 코드를 삽입하는 멀웨어삽입부를 더 포함하며,
    상기 멀웨어삽입부는,
    임의로 멀웨어 소스코드가 삽입된 오픈소스 데이터에 어떠한 멀웨어가 적용되었는지 라벨링하여, 빌드된 애플리케이션 중에서 멀웨어에 감염된 애플리케이션만을 선별하는 것을 특징으로 하는 머신러닝의 학습 데이터셋 생성을 위한 애플리케이션 자동화 빌드 장치.
  2. 제1항에 있어서,
    상기 오픈소스 데이터에 난독화기법 또는 패킹기법을 적용하여 은폐화 하는 은폐부를 더 포함하는 것을 특징으로 하는 머신러닝의 학습 데이터셋 생성을 위한 애플리케이션 자동화 빌드 장치.
  3. 제1항에 있어서,
    상기 구축부가 상기 오픈소스 데이터의 빌드 시 전자서명을 추가하는 서명부를 더 포함하는 것을 특징으로 하는 머신러닝의 학습 데이터셋 생성을 위한 애플리케이션 자동화 빌드 장치.
  4. 삭제
  5. 제1항에 있어서, 상기 설정부는,
    상기 오픈소스 데이터의 빌드시스템 종류를 식별하고, 누락된 빌드 필요 파일을 생성하는 빌드분석부;
    상기 오픈소스 데이터에 적합한 환경 또는 옵션 정보를 설정하는 환경조정부;
    상기 오픈소스 데이터가 호출하는 라이브러리를 적용하는 라이브러리구성부; 및
    상기 오픈소스 데이터의 문법 오류 정정 및 문법 최신화를 실시하는 교정부를 포함하는 것을 특징으로 하는 머신러닝의 학습 데이터셋 생성을 위한 애플리케이션 자동화 빌드 장치.
  6. 제5항에 있어서,
    상기 머신러닝은 안드로이드 애플리케이션의 멀웨어 탐지 또는 분류를 위한 알고리즘이고,
    상기 오픈소스 데이터는 안드로이 애플리케이션의 오픈소스이며,
    상기 빌드분석부는 상기 오픈소스 데이터의 빌드시스템이 이클립스(Eclipse), 안드로이드 스튜디오(Android studio), 그래들(Gradle) 중 어떤 것에 해당되는지 식별하는 것을 특징으로 하는 머신러닝의 학습 데이터셋 생성을 위한 애플리케이션 자동화 빌드 장치.
  7. 제6항에 있어서,
    상기 라이브러리구성부는 상기 오픈소스 데이터의 필요 라이브러리를 탐색하기 위한 라이브러리 데이터베이스를 포함하는 것을 특징으로 하는 머신러닝의 학습 데이터셋 생성을 위한 애플리케이션 자동화 빌드 장치.
  8. 제6항에 있어서,
    상기 라이브러리구성부는 상기 오픈소스 데이터가 유효하지 않은 안드로이드 서버의 연결정보를 포함하는 경우 상기 연결정보를 관련된 최신 안드로이드 서버의 정보로 최신화 하는 것을 특징으로 하는 머신러닝의 학습 데이터셋 생성을 위한 애플리케이션 자동화 빌드 장치.
  9. 제6항에 있어서,
    상기 교정부는 local.properties, build.xml, gradle-wrapper.properties를 포함하는 빌드 관련파일을 대상으로 문법 오류 정정 및 문법 최신화를 실시하는 것을 특징으로 하는 머신러닝의 학습 데이터셋 생성을 위한 애플리케이션 자동화 빌드 장치.
  10. 컴퓨터로 구현되는 애플리케이션 자동화 빌드 장치에 의해 각 단계가 수행되는 머신러닝의 학습데이터셋 생성을 위한 애플리케이션 자동화 빌드 방법에 있어서,
    (A) 저장부가 머신러닝 학습을 위한 다수의 오픈소스 데이터를 저장하는 단계;
    (B) 설정부가 상기 저장부에 저장된 오픈소스 데이터의 빌드시스템 종류 식별, 적합한 환경 또는 옵션 정보 설정, 필요 라이브러리 적용이 포함된 시스템설정을 실시하는 단계; 및
    (C) 구축부가 오픈소스 데이터를 상기 설정부가 시스템설정한 환경 또는 옵션으로 빌드하여 애플리케이션 데이터셋을 생성하는 단계를 포함하며,
    상기 (C) 단계 전,
    은폐부가 상기 오픈소스 데이터에 난독화기법 또는 패킹기법을 적용하여 은폐화 하는 단계를 더 포함하며,
    상기 (C) 단계 전,
    서명부가 상기 오픈소스 데이터에 전자서명을 추가하는 단계를 더 포함하고,
    상기 (C) 단계 전,
    멀웨어삽입부가 상기 오픈소스 데이터에 머신러닝 학습에 필요한 학습용 멀웨어 코드를 삽입하는 단계를 더 포함하며,
    임의로 멀웨어 소스코드가 삽입된 오픈소스 데이터에 어떠한 멀웨어가 적용되었는지 라벨링하여, 빌드된 애플리케이션 중에서 멀웨어에 감염된 애플리케이션만을 선별하는 단계;를 더 포함하는 것을 특징으로 하는 머신러닝의 학습 데이터셋 생성을 위한 애플리케이션 자동화 빌드 방법.
  11. 삭제
  12. 삭제
  13. 삭제
KR1020180169672A 2018-12-26 2018-12-26 머신러닝의 학습 데이터셋 생성을 위한 애플리케이션 자동화 빌드 장치 및 방법 KR102167767B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020180169672A KR102167767B1 (ko) 2018-12-26 2018-12-26 머신러닝의 학습 데이터셋 생성을 위한 애플리케이션 자동화 빌드 장치 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180169672A KR102167767B1 (ko) 2018-12-26 2018-12-26 머신러닝의 학습 데이터셋 생성을 위한 애플리케이션 자동화 빌드 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20200084441A KR20200084441A (ko) 2020-07-13
KR102167767B1 true KR102167767B1 (ko) 2020-10-19

Family

ID=71570824

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180169672A KR102167767B1 (ko) 2018-12-26 2018-12-26 머신러닝의 학습 데이터셋 생성을 위한 애플리케이션 자동화 빌드 장치 및 방법

Country Status (1)

Country Link
KR (1) KR102167767B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20240041647A (ko) * 2022-09-23 2024-04-01 한국전자기술연구원 IoT 플랫폼에서 정책 리소스를 활용한 ML 데이터셋 관리 방법

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150186123A1 (en) 2013-12-27 2015-07-02 Buongiorno S.p.A. Method and system for implementing in-app software development kits
WO2018150550A1 (ja) * 2017-02-17 2018-08-23 株式会社日立製作所 学習データ管理装置及び学習データ管理方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017127850A1 (en) * 2016-01-24 2017-07-27 Hasan Syed Kamran Computer security based on artificial intelligence
KR101845155B1 (ko) * 2016-06-30 2018-04-03 라인 가부시키가이샤 어플리케이션 패키지를 제공하는 방법 및 시스템, 그리고 어플리케이션을 실행하는 방법 및 시스템
KR101880628B1 (ko) 2017-11-27 2018-08-16 한국인터넷진흥원 기계 학습 데이터셋에 대한 레이블링 방법 및 그 장치

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150186123A1 (en) 2013-12-27 2015-07-02 Buongiorno S.p.A. Method and system for implementing in-app software development kits
WO2018150550A1 (ja) * 2017-02-17 2018-08-23 株式会社日立製作所 学習データ管理装置及び学習データ管理方法

Also Published As

Publication number Publication date
KR20200084441A (ko) 2020-07-13

Similar Documents

Publication Publication Date Title
US9910743B2 (en) Method, system and device for validating repair files and repairing corrupt software
US20170372068A1 (en) Method to identify known compilers functions, libraries and objects inside files and data items containing an executable code
Hemel et al. Finding software license violations through binary code clone detection
CN103902910B (zh) 检测智能终端中恶意代码的方法及装置
US10885201B2 (en) Apparatus for quantifying security of open-source software package, and apparatus and method for optimizing open-source software package
US8424093B2 (en) System and method for updating antivirus cache
US9003398B2 (en) Stochastic method for program security using deferred linking
US11775636B1 (en) Systems and methods of detecting malicious powershell scripts
CN103761475A (zh) 检测智能终端中恶意代码的方法及装置
Schulte et al. Repairing COTS router firmware without access to source code or test suites: A case study in evolutionary software repair
US10241759B2 (en) Detecting open source components built into mobile applications
US20220107827A1 (en) Applying security mitigation measures for stack corruption exploitation in intermediate code files
US20140115720A1 (en) License verification method and apparatus
KR102073068B1 (ko) 어플리케이션 클러스터링 방법 및 그 장치
US10685298B2 (en) Mobile application compatibility testing
KR102167767B1 (ko) 머신러닝의 학습 데이터셋 생성을 위한 애플리케이션 자동화 빌드 장치 및 방법
US20170003958A1 (en) Non-transitory computer-readable recording medium, information processing device, and information processing method
Ladisa et al. The Hitchhiker's Guide to Malicious Third-Party Dependencies
JP7355211B2 (ja) シグネチャ生成装置、シグネチャ生成方法およびシグネチャ生成プログラム
Silberg Machine code database for matching embedded libraries
Ozogur et al. Malware Detection for Android TV
Calleja Cortiñas et al. The malSource dataset: quantifying complexity and code reuse in malware development
Mishra Solving Problems of Virus Definition Files-A TRIZ Perspective

Legal Events

Date Code Title Description
AMND Amendment
E601 Decision to refuse application
X091 Application refused [patent]
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant