KR102090423B1 - 동적 api 추출 기반의 애플리케이션 악성코드 탐지 방법, 이를 수행하기 위한 기록 매체 및 장치 - Google Patents

동적 api 추출 기반의 애플리케이션 악성코드 탐지 방법, 이를 수행하기 위한 기록 매체 및 장치 Download PDF

Info

Publication number
KR102090423B1
KR102090423B1 KR1020190048172A KR20190048172A KR102090423B1 KR 102090423 B1 KR102090423 B1 KR 102090423B1 KR 1020190048172 A KR1020190048172 A KR 1020190048172A KR 20190048172 A KR20190048172 A KR 20190048172A KR 102090423 B1 KR102090423 B1 KR 102090423B1
Authority
KR
South Korea
Prior art keywords
api
malicious
application
general
application group
Prior art date
Application number
KR1020190048172A
Other languages
English (en)
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 KR1020190048172A priority Critical patent/KR102090423B1/ko
Priority to US16/515,723 priority patent/US11019099B2/en
Application granted granted Critical
Publication of KR102090423B1 publication Critical patent/KR102090423B1/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
    • G06F21/566Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/21Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
    • G06F18/214Generating training patterns; Bootstrap methods, e.g. bagging or boosting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/21Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
    • G06F18/214Generating training patterns; Bootstrap methods, e.g. bagging or boosting
    • G06F18/2155Generating training patterns; Bootstrap methods, e.g. bagging or boosting characterised by the incorporation of unlabelled data, e.g. multiple instance learning [MIL], semi-supervised techniques using expectation-maximisation [EM] or naïve labelling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/24Classification techniques
    • G06F18/243Classification techniques relating to the number of classes
    • G06F18/24323Tree-organised classifiers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/561Virus type analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/541Interprogram communication via adapters, e.g. between incompatible applications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/01Dynamic search techniques; Heuristics; Dynamic trees; Branch-and-bound
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1433Vulnerability analysis
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1441Countermeasures against malicious traffic
    • H04L63/1483Countermeasures against malicious traffic service impersonation, e.g. phishing, pharming or web spoofing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Mathematical Physics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Evolutionary Biology (AREA)
  • Medical Informatics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computational Linguistics (AREA)
  • Stored Programmes (AREA)

Abstract

동적 API 추출 기반의 애플리케이션 악성코드 탐지 방법, 이를 수행하기 위한 기록매체 및 장치가 개시된다.
동적 API 추출 기반의 애플리케이션 악성코드 탐지 방법은 악성 애플리케이션 집단 또는 일반 애플리케이션 집단으로 분류되는 샘플 애플리케이션에서 사용하는 API를 이용하여 입력되는 API를 악성 또는 일반으로 분류하는 API 분류기를 생성하하고, 미리 저장된 분류 대상 API를 상기 API 분류기에 입력하여 상기 분류 대상 API를 악성 또는 일반으로 분류하는 단계를 포함한다.

Description

동적 API 추출 기반의 애플리케이션 악성코드 탐지 방법, 이를 수행하기 위한 기록 매체 및 장치{METHOD OF APPLICATION MALWARE DETECTION BASED ON DYNAMIC API EXTRACTION, READABLE MEDIUM AND APPARATUS FOR PERFORMING THE METHOD}
본 발명은 동적 API(Application Programming Interface) 추출 기반의 애플리케이션 악성코드 탐지 방법, 이를 수행하기 위한 기록 매체 및 장치에 관한 것으로, 더욱 상세하게는 안드로이드 운영체제 기반의 모바일 장치에서 실행되는 애플리케이션에서 사용되는 API에 기반하여 상기 모바일 장치에서의 악성코드를 탐지하기 위한 동적 API 추출 기반의 애플리케이션 악성코드 탐지 방법, 이를 수행하기 위한 기록 매체 및 장치에 관한 것이다.
모바일 장치에서 실행되는 애플리케이션의 코드 보안 취약성 평가 방법들은 주로 애플리케이션이 요청하는 퍼미션, 애플리케이션의 디스크립션, 유저 리뷰 등의 분석에 의하여 이루어진다.
그러나 애플리케이션이 요청하는 퍼미션의 경우, 애플리케이션 개발자가 해당 퍼미션의 의미와 영향을 정확히 알지 못하고 불필요한 퍼미션을 요청함에 따라 애플리케이션의 실제 동작과는 상관 없이 평가에 영향을 미칠 수 있다.
애플리케이션의 디스크립션의 경우, 개발자의 주관에 의해 작성되고, 유저 리뷰 또한 불특정 다수의 사용자가 작성하므로 객관성이 떨어지며, 백그라운드 서비스에 대한 평가가 이루어지지 않기 때문에 애플리케이션의 동작을 모두 반영하지 못한다.
이처럼 종래의 애플리케이션의 코드 보안 취약성 평가 방법들은 애플리케이션의 실제 동작을 정확히 반영하여 평가하는 데에 한계가 있다.
본 발명의 일측면은 애플리케이션의 실제 동작을 반영할 수 있도록 애플리케이션에서 사용되는 API에 기반하여 애플리케이션의 악성코드를 탐지하는 동적 API 추출 기반의 애플리케이션 악성코드 탐지 방법, 이를 수행하기 위한 기록 매체 및 장치를 제공한다.
본 발명의 기술적 과제는 이상에서 언급한 기술적 과제로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
상기 과제를 해결하기 위한 본 발명의 동적 API 추출 기반의 애플리케이션 악성코드 탐지 방법은 애플리케이션에서 사용하는 API(Application Programming Interface)를 악성 또는 일반으로 분류하여 상기 애플리케이션의 악성코드를 탐지하는 악성코드 탐지 장치에서의 악성코드 탐지 방법에 있어서, 악성 애플리케이션 집단 또는 일반 애플리케이션 집단으로 분류되는 샘플 애플리케이션에서 사용하는 API를 추출하여 API 목록을 생성하는 단계, 상기 API 목록에 포함되는 각 API의 상기 악성 애플리케이션 집단 또는 상기 일반 애플리케이션 집단에서의 출현 빈도에 따라 상기 API 목록에서 API를 추출하여 학습 데이터 셋을 생성하는 단계, 상기 학습 데이터 셋으로 머신러닝 알고리즘을 학습하여 입력되는 API를 악성 또는 일반으로 분류하는 API 분류기를 생성하는 단계 및 미리 저장된 분류 대상 API를 상기 API 분류기에 입력하여 상기 분류 대상 API를 악성 또는 일반으로 분류하는 단계를 포함한다.
한편, 상기 API 목록에 포함되는 각 API의 상기 악성 애플리케이션 집단 또는 상기 일반 애플리케이션 집단에서의 출현 빈도에 따라 상기 API 목록에서 API를 추출하여 학습 데이터 셋을 생성하는 단계는, 상기 API 목록에 포함되는 각 API가 추출된 샘플 애플리케이션이 악성 애플리케이션 집단 또는 일반 애플리케이션 집단으로 분류되는지에 따라 상기 API 목록에 포함되는 각 API의 악성 애플리케이션 집단 또는 일반 애플리케이션 집단에서의 출현 빈도를 측정하는 단계, 상기 API 목록에 포함되는 각 API의 악성 애플리케이션 집단에서의 출현 빈도 및 일반 애플리케이션 집단에서의 출현 빈도 간의 상호 의존성 정보(MI: Mutual Information) 값을 산출하는 단계 및 상기 API 목록에 포함되는 각 API의 상호 의존성 정보(MI) 값을 기준으로 하여 상기 API 목록으로부터 상기 학습 데이터 셋을 구성할 API를 추출하는 단계를 포함할 수 있다.
또한, 안드로이드 애플리케이션의 레퍼런스 사이트에 접속하여, 상기 사이트에서 제공하는 API 별 패키지 이름, 클래스 이름, API 이름 및 디스크립션을 포함하는 특성 정보를 수집하는 단계 및 상기 API 별 특성 정보를 계층구조로 저장하여 API 데이터 베이스를 구축하는 단계를 더 포함할 수 있다.
또한, 상기 API 목록에 포함되는 각 API의 상기 악성 애플리케이션 집단 또는 상기 일반 애플리케이션 집단에서의 출현 빈도에 따라 상기 API 목록에서 API를 추출하여 학습 데이터 셋을 생성하는 단계는, 상기 API 목록에서 추출한 API에 악성 또는 일반의 레이블을 부여하는 단계, 상기 API 데이터 베이스에서 상기 API 목록에서 추출한 API에 해당하는 특성 정보를 획득하는 단계 및 상기 API 목록에서 추출한 API 별 악성 또는 일반의 레이블 및 특성 정보를 포함하는 상기 학습 데이터 셋을 생성하는 단계를 포함할 수 있다.
또한, 미리 저장된 분류 대상 API를 상기 API 분류기에 입력하여 상기 분류 대상 API를 악성 또는 일반으로 분류하는 단계는, 상기 API 데이터 베이스에서 상기 분류 대상 API에 해당하는 특성 정보를 획득하는 단계 및 상기 분류 대상 API에 해당하는 특성 정보를 상기 API 분류기에 입력하여 악성 또는 일반으로 분류하는 단계를 포함할 수 있다.
또한, 상기 동적 API 추출 기반의 애플리케이션 악성코드 탐지 방법을 수행하기 위한, 컴퓨터 프로그램이 기록된 컴퓨터로 판독 가능한 기록 매체일 수 있다.
한편, 본 발명의 동적 API 추출 기반의 애플리케이션 악성코드 탐지 장치는 악성 애플리케이션 집단 또는 일반 애플리케이션 집단으로 분류되는 샘플 애플리케이션에서 사용하는 API를 추출하여 API 목록을 생성하는 API 추출부, 상기 API 목록에 포함되는 각 API의 상기 악성 애플리케이션 집단 또는 상기 일반 애플리케이션 집단에서의 출현 빈도에 따라 상기 API 목록에서 API를 추출하여 학습 데이터 셋을 생성하는 학습 데이터 셋 생성부 및 상기 학습 데이터 셋으로 머신러닝 알고리즘을 학습하여 입력되는 API를 악성 또는 일반으로 분류하는 API 분류기를 생성하고, 미리 저장된 분류 대상 API를 상기 API 분류기에 입력하여 상기 분류 대상 API를 악성 또는 일반으로 분류하는 API 분류부를 포함한다.
한편, 상기 학습 데이터 셋 생성부는, 상기 API 목록에 포함되는 각 API가 추출된 샘플 애플리케이션이 악성 애플리케이션 집단 또는 일반 애플리케이션 집단으로 분류되는지에 따라 상기 API 목록에 포함되는 각 API의 악성 애플리케이션 집단 또는 일반 애플리케이션 집단에서의 출현 빈도를 측정하는 API 카운터부 및 상기 API 목록에 포함되는 각 API의 악성 애플리케이션 집단에서의 출현 빈도 및 일반 애플리케이션 집단에서의 출현 빈도 간의 상호 의존성 정보(MI: Mutual Information) 값을 산출하고, 상기 API 목록에 포함되는 각 API의 상호 의존성 정보(MI) 값을 기준으로 하여 상기 API 목록으로부터 상기 학습 데이터 셋을 구성한 API를 추출하는 MI벡터 생성부를 포함할 수 있다.
또한, 안드로이드 애플리케이션의 레퍼런스 사이트에 접속하여, 상기 사이트에서 제공하는 API 별 패키지 이름, 클래스 이름, API 이름 및 디스크립션을 포함하는 특성 정보를 수집하고, 상기 API 별 특성 정보를 계층구조로 저장하여 API 데이터 베이스를 구축하는 API 메타 데이터 수집부를 더 포함할 수 있다.
또한, 상기 API 분류부는, 상기 API 데이터 베이스에서 상기 분류 대상 API에 해당하는 특성 정보를 획득하고, 상기 분류 대상 API에 해당하는 특성 정보를 상기 API 분류기에 입력하여 악성 또는 일반으로 분류할 수 있다.
본 발명에 따르면 API의 특성 정보에 기반하여 애플리케이션의 위험 정도를 탐지함으로써, 애플리케이션의 실제 동작에 대하여 보다 정확하게 평가할 수 있다.
또한, 본 발명에 따르면 모바일 장치에서 애플리케이션을 사용하기 전에 해당 애플리케이션의 위험도를 객관적으로 제시할 수 있으며, 모바일 장치에서의 악성 행위로 인한 피해를 방지할 수 있다.
도 1은 본 발명의 일 실시예에 따른 동적 API 추출 기반의 애플리케이션 악성코드 탐지 장치의 블록도이다.
도 2는 도 1에 도시된 악성코드 탐지 장치에서의 악성코드 탐지 방법을 간략히 설명하기 위한 도면이다.
도 3은 도 1에 도시된 학습 데이터 셋 생성부의 세부 블록도이다.
도 4는 도 1에 도시된 API 메타 데이터 수집부의 세부 블록도이다.
도 5는 도 1에 도시된 API 분류부에서의 API 분류의 일 예를 보여주는 도면이다.
도 6은 본 발명의 일 실시예에 따른 동적 API 추출 기반의 애플리케이션 악성코드 탐지 방법의 순서도이다.
후술하는 본 발명에 대한 상세한 설명은, 본 발명이 실시될 수 있는 특정 실시예를 예시로서 도시하는 첨부 도면을 참조한다. 이들 실시예는 당업자가 본 발명을 실시할 수 있기에 충분하도록 상세히 설명된다. 본 발명의 다양한 실시예는 서로 다르지만 상호 배타적일 필요는 없음이 이해되어야 한다. 예를 들어, 여기에 기재되어 있는 특정 형상, 구조 및 특성은 일 실시예와 관련하여 본 발명의 정신 및 범위를 벗어나지 않으면서 다른 실시예로 구현될 수 있다. 또한, 각각의 개시된 실시예 내의 개별 구성요소의 위치 또는 배치는 본 발명의 정신 및 범위를 벗어나지 않으면서 변경될 수 있음이 이해되어야 한다. 따라서, 후술하는 상세한 설명은 한정적인 의미로서 취하려는 것이 아니며, 본 발명의 범위는, 적절하게 설명된다면, 그 청구항들이 주장하는 것과 균등한 모든 범위와 더불어 첨부된 청구항에 의해서만 한정된다. 도면에서 유사한 참조부호는 여러 측면에 걸쳐서 동일하거나 유사한 기능을 지칭한다.
이하, 도면들을 참조하여 본 발명의 바람직한 실시예들을 보다 상세하게 설명하기로 한다.
도 1은 본 발명의 일 실시예에 따른 동적 API 추출 기반의 애플리케이션 악성코드 탐지 장치의 블록도이다.
도 1을 참조하면, 본 발명의 일 실시예에 따른 동적 API(Application Programming Interface)추출 기반의 애플리케이션 악성코드 탐지 장치(1)는 API 추출부(10), 학습 데이터 셋 생성부(30), API 메타 데이터 수집부(50), API 데이터 베이스(70) 및 API 분류부(90)를 포함할 수 있다.
본 발명의 일 실시예에 다른 동적 API 추출 기반의 애플리케이션 악성코드 탐지 장치(1)는 도 1에 도시된 구성요소보다 많은 구성요소에 의해 구현될 수 있고, 그보다 적은 구성요소에 의해 구현될 수도 있다.
본 발명의 일 실시예에 따른 동적 API 추출 기반의 애플리케이션 악성코드 탐지 장치(1)는 정보의 입출력이 가능한 장치로, 애플리케이션 악성코드 탐지를 위한 소프트웨어(애플리케이션)가 설치되어 실행될 수 있으며, 도 1에 도시된 API 추출부(10), 학습 데이터 셋 생성부(30), API 메타 데이터 수집부(50) 및 API 분류부(90)는 본 발명의 일 실시예에 따른 동적 API 추출 기반의 애플리케이션 악성코드 탐지 장치(1)에서 실행되는 소프트웨어에 의해 제어될 수 있다.
본 발명의 일 실시예에 따른 동적 API 추출 기반의 애플리케이션 악성코드 탐지 장치(1)는 애플리케이션의 API 특성 정보로 머신러닝 알고리즘을 학습하여 애플리케이션의 API를 악성 또는 일반으로 분류하는 API 분류기를 생성하고, API 분류기를 이용하여 안드로이드 운영체제 기반의 모바일 장치에서 실행되는 애플리케이션의 API를 악성 또는 일반으로 분류함으로써, 애플리케이션의 악성코드를 탐지할 수 있다. 이와 관련하여 도 2를 참조하여 간략히 설명한다.
도 2는 도 1에 도시된 악성코드 탐지 장치에서의 악성코드 탐지 방법을 간략히 설명하기 위한 도면이다.
도 2를 참조하면, API 추출부(10)는 일반 애플리케이션 집단(Benign Apps) 또는 악성 애플리케이션 집단(Malicious Apps)으로 분류되는 샘플 애플리케이션에서 사용되는 API를 추출할 수 있다.
API 메타 데이터 수집부(50)는 안드로이드 애플리케이션의 레퍼런스 사이트에서 제공하는 API 별 특성 정보를 수집하여 API 데이터 베이스(70)를 구축할 수 있다. 본 실시예에서 API의 특성 정보에는 API 이름, API가 속한 패키지 이름, API가 속한 클래스 이름 및 API의 디스크립션이 포함될 수 있다.
학습 데이터 셋 생성부(30)는 API 추출부(10)에서 추출한 API 중 API 분류기의 학습에 사용할 API를 선택하고, 선택한 API를 악성(1) 또는 일반(0)으로 레이블링하며, API 데이터 베이스(70)에서 선택한 API에 해당하는 특성 정보를 획득하여 학습 데이터 셋을 생성할 수 있다.
API 분류부(90)는 학습 데이터 셋으로 머신러닝 알고리즘을 학습하여 API 분류기를 생성할 수 있다. API 분류부(90)는 API 분류기에 특정 애플리케이션에서 사용되는 API의 특성 정보를 입력하여 해당 API를 악성 또는 일반으로 분류할 수 있다.
이와 같은 본 발명의 일 실시예에 따른 동적 API 추출 기반의 애플리케이션 악성코드 탐지 장치(1)는 애플리케이션의 API 특성 정보에 기반하여 애플리케이션의 위험 정도를 명확하게 분석할 수 있다. 따라서 본 발명의 일 실시예에 따른 동적 API 추출 기반의 애플리케이션 악성코드 탐지 장치(1)는 모바일 장치에서 애플리케이션을 사용하기 전에 해당 애플리케이션의 위험도를 객관적으로 제시할 수 있으며, 모바일 장치에서의 악성 행위로 인한 피해를 방지할 수 있다.
이하 도 1에 도시된 본 발명의 일 실시예에 따른 동적 API 추출 기반의 애플리케이션 악성코드 탐지 장치(1)의 각 구성요소에 대해 구체적으로 설명한다.
API 추출부(10)는 샘플 애플리케이션에서 사용되는 API를 추출하여 API 목록을 생성할 수 있다.
샘플 애플리케이션은 악성 애플리케이션 그룹 또는 일반 애플리케이션 그룹으로 미리 분류될 수 있다. 샘플 애플리케이션이 악성코드를 포함하여 악성 행위를 실행하는 경우 악성 애플리케이션 그룹으로 분류될 것이고, 샘플 애플리케이션이 악성코드를 포함하지 않는 경우 일반 애플리케이션 그룹으로 분류될 것이다.
예를 들면, API 목록은 샘플 애플리케이션에서 사용되는 API의 이름들로 구성될 수 있다.
학습 데이터 셋 생성부(30)는 API 추출부(10)에서 생성한 API 목록에서 API 분류기 구축에 사용할 API를 선택하여 학습 데이터 셋을 생성할 수 있다.
학습 데이터 셋 생성부(30)는 API 목록에 포함되는 각 API의 악성 애플리케이션 집단 또는 일반 애플리케이션 집단에서의 출현 빈도에 기반하여 API 목록에서 API 분류기 구축에 사용할 API를 선택할 수 있다. 이와 관련하여 구체적인 설명은 도 3을 참조하여 후술한다.
API 메타 데이터 수집부(50)는 안드로이드 애플리케이션의 레퍼런스 사이트로부터 API 별 특성 정보를 수집하여 API 데이터 베이스(70)를 구축할 수 있다.
상술한 것처럼 API 별 특성 정보는 어느 API에 대하여 API 이름, API가 속한 패키지 이름, API가 속한 클래스 이름 및 API의 디스크립션이 포함될 수 있다.
안드로이드 애플리케이션의 레퍼런스 사이트에서는 모든 안드로이드 애플리케이션에서 사용되는 API 별 특성 정보를 제공할 수 있다.
API 메타 데이터 수집부(50)는 이러한 안드로이드 애플리케이션의 레퍼런스 사이트에 접속하여 API 별 특성 정보를 수집할 수 있으며, API 별 특성 정보를 계층 구조로 저장하여 API 데이터 베이스(70)를 구축할 수 있다. 이와 관련하여 구체적인 설명은 도 4를 참조하여 후술한다.
API 데이터 베이스(70)는 API 메타 데이터 수집부(50)에 의해 API 별 특성 정보가 계층 구조로 저장되어 구축될 수 있다.
예를 들면, API 데이터 베이스(70)는 패키지 테이블, 클래스 테이블 및 메소드 테이블로 구성될 수 있다. API 데이터 베이스(70)는 패키지 종류 별로 각 패키지에 속하는 클래스를 저장하고, 클래스 종류 별로 각 클래스에 속하는 모든 API를 저장할 수 있다.
한편 학습 데이터 셋 생성부(30)는 API 추출부(10)에서 생성한 API 목록에서 API 분류기 구축에 사용할 API를 선택하고, 선택한 API에 악성 또는 일반의 레이블을 부여하며, 선택한 API의 특성 정보를 API 데이터 베이스(70)로부터 획득하여 학습 데이터 셋을 생성할 수 있다.
예를 들면 학습 데이터 셋 생성부(30)는 API 목록에서 선택한 API의 이름에 근거하여 API 데이터 베이스(70)에서 해당 API의 디스크립션, API가 속한 클래스 이름 및 API가 속한 패키지 이름을 계층적으로 획득할 수 있다.
API 분류부(90)는 API의 특성 정보를 학습 또는 분류할 수 있다. 이때 API의 특성 정보는 문자열 형태이므로 API 분류부(90)는 자연어 처리 과정을 거쳐 API의 특성 정보를 나타내는 각 단어 별 벡터를 생성하고, 각 벡터를 학습 또는 분류할 수 있다.
API 분류부(90)는 학습 데이터 셋 생성부(30)에서 생성하는 학습 데이터 셋을 머신러닝 알고리즘으로 학습하여 API를 악성 또는 일반으로 분류하는 API 분류기를 생성할 수 있다. 예를 들면, 머신러닝 알고리즘은 디시전 트리 알고리즘일 수 있다.
또한 API 분류부(90)는 API 데이터 베이스(70)에 저장되어 있는 모든 API의 특성 정보를 API 분류기에 입력하여 각 API를 악성 또는 일반으로 분류할 수 있다. 즉 API 분류부(90)는 안드로이드 애플리케이션의 레퍼런스 사이트에서 제공하는 모든 애플리케이션의 API를 악성 또는 일반으로 분류하여 제시할 수 있다. 예를 들면, API 분류부(90)는 API 데이터 베이스(70)에 저장되어 있는 각 API의 특성 정보를 타겟 데이터 셋으로 생성하고, 타겟 데이터 셋을 API 분류기에 입력하여 해당 타겟 데이터 셋을 악성 또는 일반으로 분류할 수 있다. 이와 관련하여 구체적인 설명은 도 5를 참조하여 후술한다.
도 3은 도 1에 도시된 학습 데이터 셋 생성부의 세부 블록도이다.
도 3을 참조하면, 학습 데이터 셋 생성부(30)는 API 카운터부(31), MI(Mutual Information)벡터 생성부(33) 및 레이블 생성부(35)를 포함할 수 있다.
API 카운터부(31)는 API 목록에 포함되는 각 API가 추출된 샘플 애플리케이션이 악성 애플리케이션 집단 또는 일반 애플리케이션 집단으로 분류되는지에 따라 각 API의 악성 애플리케이션 집단 또는 일반 애플리케이션 집단에서의 출현 빈도를 측정할 수 있다.
예를 들면, API 카운터부(31)는 악성 애플리케이션 집단으로 분류되는 샘플 애플리케이션의 전체 개수 및 일반 애플리케이션 집단으로 분류되는 샘플 애플리케이션의 전체 개수를 미리 저장할 수 있다.
API 카운터부(31)는 API 목록에 포함되는 어느 API에 대하여, 해당 API가 추출되는 경우, 그 샘플 애플리케이션이 악성 애플리케이션 집단 또는 일반 애플리케이션 집단으로 분류되는지를 확인할 수 있다.
API 카운터부(31)는 API 목록에 포함되는 어느 API에 대하여, 해당 API가 추출되는 샘플 애플리케이션이 악성 애플리케이션 집단 또는 일반 애플리케이션 집단으로 분류되는 경우, 각각 그 횟수를 카운트할 수 있다.
API 카운터부(31)는 모든 샘플 애플리케이션으로부터 API 추출이 완료되는 경우, API 목록에 포함되는 어느 API에 대하여, 해당 API가 추출된 샘플 애플리케이션이 악성 애플리케이션 집단으로 분류된 횟수를 악성 애플리케이션 집단으로 분류되는 샘플 애플리케이션의 전체 개수로 나누어 해당 API의 악성 애플리케이션 집단에서의 출현 빈도를 측정할 수 있다.
API 카운터부(31)는 모든 샘플 애플리케이션으로부터 API 추출이 완료되는 경우, API 목록에 포함되는 어느 API에 대하여, 해당 API가 추출된 샘플 애플리케이션이 일반 애플리케이션 집단으로 분류된 횟수를 일반 애플리케이션 집단으로 분류되는 샘플 애플리케이션의 전체 개수로 나누어 해당 API의 일반 애플리케이션 집단에서의 출현 빈도를 측정할 수 있다.
이처럼 API 카운터부(31)는 API 목록에 포함되는 각 API의 악성 애플리케이션 집단에서의 출현 빈도 및 일반 애플리케이션 집단에서의 출현 빈도를 측정할 수 있다.
MI벡터 생성부(33)는 API 목록에 포함되는 각 API의 악성 애플리케이션 집단에서의 출현 빈도 및 일반 애플리케이션 집단에서의 출현 빈도 간의 상호 의존성 정보(MI: Mutual Information) 값을 산출할 수 있다. 여기서 상호 의존성 정보(MI) 값은 MI 벡터에 해당한다.
상호 의존성 정보 값은 두 변수 사이의 상호 의존성을 측정하여 정보량을 정량화한 값에 해당한다.
MI벡터 생성부(33)는 API의 악성 애플리케이션 집단에서의 출현 빈도 및 일반 애플리케이션 집단에서의 출현 빈도 간의 상호 의존성 정보(MI) 값을 근거로 하여 API의 민감한 정도를 판단할 수 있다. 즉 상호 의존성 정보(MI) 값이 클수록 API의 민감한 정도가 크다고 볼 수 있다.
MI벡터 생성부(33)는 API 목록에 포함되는 각 API의 상호 의존성 정보(MI) 값을 기준으로 하여 API 목록에서 학습 데이터 셋을 구성할 API를 선택할 수 있다.
예를 들면, MI벡터 생성부(33)는 API 목록에서 상호 의존성 정보(MI) 값이 큰 순서대로 미리 정해진 개수의 API를 학습 데이터 셋을 구성할 API로 선택하거나, API 목록에서 상호 의존성 정보(MI) 값이 미리 정해진 값 이상인 API를 학습 데이터 셋을 구성할 API로 선택할 수 있다.
레이블 생성부(35)는 API 목록에서 학습 데이터 셋을 구성할 API로 선택된 API에 악성 또는 일반의 레이블을 부여할 수 있다.
예를 들면, 레이블 생성부(35)는 API 목록에서 선택된 API의 악성 애플리케이션 집단에서의 출현 빈도 및 일반 애플리케이션 집단에서의 출현 빈도를 비교할 수 있다. 레이블 생성부(35)는 API 목록에서 선택된 API의 악성 애플리케이션 집단에서의 출현 빈도가 일반 애플리케이션 집단에서의 출현 빈도보다 높은 경우, 해당 API에 악성의 레이블을 부여할 수 있으며, 그 반대의 경우 일반의 레이블을 부여할 수 있다.
레이블 생성부(35)는 API 데이터 베이스(70)에서 API 목록에서 선택된 API의 특성 정보를 획득하여 학습 데이터 셋을 구성할 수 있다.
이처럼 레이블 생성부(35)는 API 목록에서 선택된 API에 악성 또는 일반의 레이블을 부여하고, 각 특성 정보를 포함시켜 학습 데이터 셋을 생성할 수 있다.
도 4는 도 1에 도시된 API 메타 데이터 수집부의 세부 블록도이다.
도 4를 참조하면, API 메타 데이터 수집부(50)는 데이터 크롤러부(51) 및 데이터 저장부(53)를 포함할 수 있다.
데이터 크롤러부(51)는 안드로이드 애플리케이션의 레퍼런스 사이트에 접속하여, 안드로이드 레퍼런스 사이트에서 제공하는 모든 API의 특성 정보를 수집할 수 있다.
예를 들면, 데이터 크롤러부(51)는 html 파싱 라이브러리를 사용하여 안드로이드 애플리케이션의 레퍼런스 사이트에서 제공하는 API의 특성 정보를 파싱할 수 있다.
데이터 저장부(53)는 데이터 크롤러부(51)에서 수집한 API의 특성 정보를 계층구조로 저장하여 API 데이터 베이스(70)를 구축할 수 있다.
데이터 저장부(53)는 API 데이터 베이스(70)를 패키지 테이블, 클래스 테이블 및 메소드 테이블로 구성하고, 패키지 종류 별로 각 패키지에 속하는 클래스를 저장하고, 클래스 종류 별로 각 클래스에 속하는 모든 API를 저장할 수 있다.
도 5는 도 1에 도시된 API 분류부에서의 API 분류의 일 예를 보여주는 도면이다.
도 5를 참조하면, API 분류부(90)는 학습 데이터 셋을 악성 또는 일반으로 학습하거나, 타겟 데이터 셋을 악성 또는 일반으로 분류할 수 있다. 학습 데이터 셋은 상술한 것처럼 샘플 애플리케이션으로부터 추출한 API의 특성 정보로 구성될 수 있으며, 타겟 데이터 셋은 API 데이터 베이스(70)에 저장되어 있는 API의 특성 정보로 이루어질 수 있다.
API 분류부(90)는 학습 데이터 셋을 디시전 트리 알고리즘으로 학습하여 도 5와 같이 입력되는 API의 특성 정보를 일반(0) 또는 악성(1)으로 분류하는 API 분류기를 생성할 수 있다.
예를 들면, 타겟 데이터 셋이 "getLine1Number"에 해당하는 특성 정보로 이루어진 경우, 아래 표 1과 같다.
Figure 112019042520478-pat00001
표 1을 참조하면, API의 특성 정보는 문자열 형태이므로, API 분류부(90)는 API 특성 정보를 나타내는 각 단어에 대하여 자연어 처리 및 벡터화를 진행할 수 있다.
API 분류부(90)는 표 1에 개시된 특성 정보를 {x1, x2, ?, x10}={telephony, manager, ?, gsm}과 같이 벡터화할 수 있으며, 이를 API 분류기에 입력할 수 있다.
API 분류부(90)는 API 분류기를 이용한 특성 정보의 분류 결과가 "1"로 산출되는 경우, 해당 특성 정보를 갖는 API를 악성으로 분류하고, 특성 정보의 분류 결과가 "0"으로 산출되는 경우, 해당 특성 정보를 갖는 API를 일반으로 분류할 수 있다.
"getLine1Number"의 경우, API 분류기의 분류 결과가 "1"로 산출되었으므로, 해당 API는 악성으로 분류될 것이다.
이하에서는 본 발명의 일 실시예에 따른 동적 API 추출 기반의 애플리케이션 악성코드 탐지 방법에 대해 설명한다.
본 발명의 일 실시예에 따른 동적 API 추출 기반의 애플리케이션 악성코드 탐지 방법은 도 1에 도시된 본 발명의 일 실시예에 따른 동적 API 추출 기반의 애플리케이션 악성코드 탐지 장치(1)와 실질적으로 동일한 구성 하에서 진행될 수 있다. 따라서 도 1의 장치(1)와 동일한 구성요소는 동일한 도면부호를 부여하고 반복되는 설명은 생략한다.
도 6은 본 발명의 일 실시예에 따른 동적 API 추출 기반의 애플리케이션 악성코드 탐지 방법의 순서도이다.
도 6을 참조하면, API 추출부(10)는 샘플 애플리케이션으로부터 API를 추출하여 API 목록을 생성할 수 있다(S100).
샘플 애플리케이션은 악성 애플리케이션 그룹 또는 일반 애플리케이션 그룹으로 미리 분류될 수 있다. 샘플 애플리케이션이 악성코드를 포함하여 악성 행위를 실행하는 경우 악성 애플리케이션 그룹으로 분류될 것이고, 샘플 애플리케이션이 악성코드를 포함하지 않는 경우 일반 애플리케이션 그룹으로 분류될 것이다.
학습 데이터 셋 생성부(30)는 API 목록에서 사용 빈도에 따라 API를 추출하여 학습 데이터 셋을 생성할 수 있다(S200).
학습 데이터 셋 생성부(30)는 API 추출부(10)에서 생성한 API 목록에서 API 분류기 구축에 사용할 API를 선택하여 학습 데이터 셋을 생성할 수 있다.
학습 데이터 셋 생성부(30)는 API 목록에 포함되는 각 API의 악성 애플리케이션 집단 또는 일반 애플리케이션 집단에서의 출현 빈도에 기반하여 API 목록에서 API 분류기 구축에 사용할 API를 선택할 수 있다. 이때 학습 데이터 셋 생성부(30)는 API의 악성 애플리케이션 집단에서의 출현 빈도 및 일반 애플리케이션 집단에서의 출현 빈도 간의 상호 의존성 정보(MI) 값을 근거로 하여 API 목록에서 API 분류기 구축에 사용할 API를 선택할 수 있다.
학습 데이터 셋 생성부(30)는 API 목록에서 선택된 API에 악성 또는 일반의 레이블을 부여하고, 각 특성 정보를 포함시켜 학습 데이터 셋을 생성할 수 있다.
API 분류부(90)는 학습 데이터 학습한 API 분류기를 생성할 수 있다(S300).
API 분류부(90)는 학습 데이터 셋 생성부(30)에서 생성하는 학습 데이터 셋을 머신러닝 알고리즘으로 학습하여 API를 악성 또는 일반으로 분류하는 API 분류기를 생성할 수 있다. 예를 들면, 머신러닝 알고리즘은 디시전 트리 알고리즘일 수 있다.
API 분류부(90)는 API 분류기를 이용하여 타겟 애플리케이션의 API를 분류할 수 있다(S400).
API 분류부(90)는 API 데이터 베이스(70)에 저장되어 있는 모든 API의 특성 정보를 API 분류기에 입력하여 각 API를 악성 또는 일반으로 분류할 수 있다. 즉 API 분류부(90)는 안드로이드 애플리케이션의 레퍼런스 사이트에서 제공하는 모든 애플리케이션의 API를 악성 또는 일반으로 분류하여 제시할 수 있다. 예를 들면, API 분류부(90)는 API 데이터 베이스(70)에 저장되어 있는 각 API의 특성 정보를 타겟 데이터 셋으로 생성하고, 타겟 데이터 셋을 API 분류기에 입력하여 해당 타겟 데이터 셋을 악성 또는 일반으로 분류할 수 있다.
이와 같은, 본 발명의 동적 API 추출 기반의 애플리케이션 악성코드 탐지 방법은 어플리케이션으로 구현되거나 다양한 컴퓨터 구성요소를 통하여 수행될 수 있는 프로그램 명령어의 형태로 구현되어 컴퓨터 판독 가능한 기록 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능한 기록 매체는 프로그램 명령어, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다.
상기 컴퓨터 판독 가능한 기록 매체에 기록되는 프로그램 명령어는 본 발명을 위하여 특별히 설계되고 구성된 것들이거니와 컴퓨터 소프트웨어 분야의 당업자에게 공지되어 사용 가능한 것일 수도 있다.
컴퓨터 판독 가능한 기록 매체의 예에는, 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체, CD-ROM, DVD 와 같은 광기록 매체, 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 ROM, RAM, 플래시 메모리 등과 같은 프로그램 명령어를 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다.
프로그램 명령어의 예에는, 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드도 포함된다. 상기 하드웨어 장치는 본 발명에 따른 처리를 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상에서는 실시예들을 참조하여 설명하였지만, 해당 기술 분야의 숙련된 당업자는 하기의 특허 청구범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.
1: 동적 API 추출 기반의 애플리케이션 악성코드 탐지 장치
10: API 추출부
30: 학습 데이터 셋 생성부
50: API 메타 데이터 수집부
70: API 데이터 베이스
90: API 분류부

Claims (10)

  1. 애플리케이션에서 사용하는 API(Application Programming Interface)를 악성 또는 일반으로 분류하여 상기 애플리케이션의 악성코드를 탐지하는 동적 API 추출 기반의 애플리케이션 악성코드 탐지 방법에 있어서,
    악성 애플리케이션 집단 또는 일반 애플리케이션 집단으로 분류되는 샘플 애플리케이션에서 사용하는 API를 추출하여 API 목록을 생성하는 단계;
    상기 API 목록에 포함되는 각 API의 상기 악성 애플리케이션 집단 또는 상기 일반 애플리케이션 집단에서의 출현 빈도에 따라 상기 API 목록에서 API를 추출하여 학습 데이터 셋을 생성하는 단계;
    상기 학습 데이터 셋으로 머신러닝 알고리즘을 학습하여 입력되는 API를 악성 또는 일반으로 분류하는 API 분류기를 생성하는 단계; 및
    미리 저장된 분류 대상 API를 상기 API 분류기에 입력하여 상기 분류 대상 API를 악성 또는 일반으로 분류하는 단계를 포함하되,
    상기 API 목록에 포함되는 각 API의 상기 악성 애플리케이션 집단 또는 상기 일반 애플리케이션 집단에서의 출현 빈도에 따라 상기 API 목록에서 API를 추출하여 학습 데이터 셋을 생성하는 단계는,
    상기 API 목록에 포함되는 각 API가 추출된 샘플 애플리케이션이 악성 애플리케이션 집단 또는 일반 애플리케이션 집단으로 분류되는지에 따라 상기 API 목록에 포함되는 각 API의 악성 애플리케이션 집단 또는 일반 애플리케이션 집단에서의 출현 빈도를 측정하는 단계;
    상기 API 목록에 포함되는 각 API의 악성 애플리케이션 집단에서의 출현 빈도 및 일반 애플리케이션 집단에서의 출현 빈도 간의 상호 의존성 정보(MI: Mutual Information) 값을 산출하는 단계; 및
    상기 API 목록에 포함되는 각 API의 상호 의존성 정보(MI) 값을 기준으로 하여 API의 민감한 정도를 판단하고, API의 민감한 정도에 따라 상기 API 목록으로부터 상기 학습 데이터 셋을 구성할 API를 추출하는 단계를 포함하며,
    상기 API 목록에 포함되는 각 API가 추출된 샘플 애플리케이션이 악성 애플리케이션 집단 또는 일반 애플리케이션 집단으로 분류되는지에 따라 상기 API 목록에 포함되는 각 API의 악성 애플리케이션 집단 또는 일반 애플리케이션 집단에서의 출현 빈도를 측정하는 단계는,
    샘플 애플리케이션으로부터 API가 추출되는 경우, 해당 API가 추출되는 샘플 애플리케이션이 악성 애플리케이션 집단 또는 일반 애플리케이션 집단으로 분류되는지에 따라 그 횟수를 각각 카운트 하며, 모든 샘플 애플리케이션으로부터 API 추출이 완료되는 경우, 상기 API 목록에 포함되는 API에 대하여, 해당 API가 추출된 샘플 애플리케이션이 악성 애플리케이션 집단으로 분류된 횟수와, 악성애플리케이션 집단으로 분류되는 샘플 애플리케이션의 전체 개수의 비율로 해당 API의 악성 애플리케이션 집단에서의 출현빈도를 측정하는 것이며,
    상기 학습 데이터 셋은,
    문자열 형태의 타겟 데이터 셋으로 구성되고, 상기 API 분류기에 입력되어 악성 또는 일반으로 분류되며, API 데이터 베이스에 계층적으로 저장되는 것을 포함하며,
    상기 머신러닝 알고리즘은,
    디시전 트리 알고리즘인 것인, 동적 API 추출 기반의 애플리케이션 악성코드 탐지 방법.
  2. 삭제
  3. 제1항에 있어서,
    안드로이드 애플리케이션의 레퍼런스 사이트에 접속하여, 상기 사이트에서 제공하는 API 별 패키지 이름, 클래스 이름, API 이름 및 디스크립션을 포함하는 특성 정보를 수집하는 단계; 및
    상기 API 별 특성 정보를 계층구조로 저장하여 API 데이터 베이스를 구축하는 단계를 더 포함하는 동적 API 추출 기반의 애플리케이션 악성코드 탐지 방법.
  4. 제3항에 있어서,
    상기 API 목록에 포함되는 각 API의 상기 악성 애플리케이션 집단 또는 상기 일반 애플리케이션 집단에서의 출현 빈도에 따라 상기 API 목록에서 API를 추출하여 학습 데이터 셋을 생성하는 단계는,
    상기 API 목록에서 추출한 API에 악성 또는 일반의 레이블을 부여하는 단계;
    상기 API 데이터 베이스에서 상기 API 목록에서 추출한 API에 해당하는 특성 정보를 획득하는 단계; 및
    상기 API 목록에서 추출한 API 별 악성 또는 일반의 레이블 및 특성 정보를 포함하는 상기 학습 데이터 셋을 생성하는 단계를 포함하는 동적 API 추출 기반의 애플리케이션 악성코드 탐지 방법.
  5. 제4항에 있어서,
    미리 저장된 분류 대상 API를 상기 API 분류기에 입력하여 상기 분류 대상 API를 악성 또는 일반으로 분류하는 단계는,
    상기 API 데이터 베이스에서 상기 분류 대상 API에 해당하는 특성 정보를 획득하는 단계; 및
    상기 분류 대상 API에 해당하는 특성 정보를 상기 API 분류기에 입력하여 악성 또는 일반으로 분류하는 단계를 포함하는 동적 API 추출 기반의 애플리케이션 악성코드 탐지 방법.
  6. 제1항 및 제3항 내지 제5항 중 어느 하나의 항에 따른 동적 API 추출 기반의 애플리케이션 악성코드 탐지 방법을 수행하기 위한, 컴퓨터 프로그램이 기록된 컴퓨터로 판독 가능한 기록 매체.
  7. 악성 애플리케이션 집단 또는 일반 애플리케이션 집단으로 분류되는 샘플 애플리케이션에서 사용하는 API를 추출하여 API 목록을 생성하는 API 추출부;
    상기 API 목록에 포함되는 각 API의 상기 악성 애플리케이션 집단 또는 상기 일반 애플리케이션 집단에서의 출현 빈도에 따라 상기 API 목록에서 API를 추출하여 학습 데이터 셋을 생성하는 학습 데이터 셋 생성부; 및
    상기 학습 데이터 셋으로 머신러닝 알고리즘을 학습하여 입력되는 API를 악성 또는 일반으로 분류하는 API 분류기를 생성하고, 미리 저장된 분류 대상 API를 상기 API 분류기에 입력하여 상기 분류 대상 API를 악성 또는 일반으로 분류하는 API 분류부를 포함하되,
    상기 학습 데이터 셋 생성부는,
    상기 API 목록에 포함되는 각 API가 추출된 샘플 애플리케이션이 악성 애플리케이션 집단 또는 일반 애플리케이션 집단으로 분류되는지에 따라 상기 API 목록에 포함되는 각 API의 악성 애플리케이션 집단 또는 일반 애플리케이션 집단에서의 출현 빈도를 측정하는 API 카운터부; 및
    상기 API 목록에 포함되는 각 API의 악성 애플리케이션 집단에서의 출현 빈도 및 일반 애플리케이션 집단에서의 출현 빈도 간의 상호 의존성 정보(MI: Mutual Information) 값을 산출하고, 상기 API 목록에 포함되는 각 API의 상호 의존성 정보(MI) 값을 기준으로 하여 여 API의 민감한 정도를 판단하고, API의 민감한 정도에 따라 상기 API 목록으로부터 상기 학습 데이터 셋을 구성한 API를 추출하는 MI벡터 생성부;를 포함하며,
    상기 API 카운터부는,
    샘플 애플리케이션으로부터 API가 추출되는 경우, 해당 API가 추출되는 샘플 애플리케이션이 악성 애플리케이션 집단 또는 일반 애플리케이션 집단으로 분류되는지에 따라 그 횟수를 각각 카운트 하며, 모든 샘플 애플리케이션으로부터 API 추출이 완료되는 경우, 상기 API 목록에 포함되는 API에 대하여, 해당 API가 추출된 샘플 애플리케이션이 악성 애플리케이션 집단으로 분류된 횟수와, 악성애플리케이션 집단으로 분류되는 샘플 애플리케이션의 전체 개수의 비율로 해당 API의 악성 애플리케이션 집단에서의 출현빈도를 측정하는 것이며,
    상기 학습 데이터 셋은,
    문자열 형태의 타겟 데이터 셋으로 구성되고, 상기 API 분류기에 입력되어 악성 또는 일반으로 분류되며, API 데이터 베이스에 계층적으로 저장되는 것을 포함하며,
    상기 머신러닝 알고리즘은,
    디시전 트리 알고리즘인 것인, 동적 API 추출 기반의 애플리케이션 악성코드 탐지 장치.
  8. 삭제
  9. 제7항에 있어서,
    안드로이드 애플리케이션의 레퍼런스 사이트에 접속하여, 상기 사이트에서 제공하는 API 별 패키지 이름, 클래스 이름, API 이름 및 디스크립션을 포함하는 특성 정보를 수집하고, 상기 API 별 특성 정보를 계층구조로 저장하여 API 데이터 베이스를 구축하는 API 메타 데이터 수집부를 더 포함하는 동적 API 추출 기반의 애플리케이션 악성코드 탐지 장치.
  10. 제9항에 있어서,
    상기 API 분류부는,
    상기 API 데이터 베이스에서 상기 분류 대상 API에 해당하는 특성 정보를 획득하고, 상기 분류 대상 API에 해당하는 특성 정보를 상기 API 분류기에 입력하여 악성 또는 일반으로 분류하는 동적 API 추출 기반의 애플리케이션 악성코드 탐지 장치.
KR1020190048172A 2019-04-25 2019-04-25 동적 api 추출 기반의 애플리케이션 악성코드 탐지 방법, 이를 수행하기 위한 기록 매체 및 장치 KR102090423B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020190048172A KR102090423B1 (ko) 2019-04-25 2019-04-25 동적 api 추출 기반의 애플리케이션 악성코드 탐지 방법, 이를 수행하기 위한 기록 매체 및 장치
US16/515,723 US11019099B2 (en) 2019-04-25 2019-07-18 Method of application malware detection based on dynamic API extraction, and readable medium and apparatus for performing the method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190048172A KR102090423B1 (ko) 2019-04-25 2019-04-25 동적 api 추출 기반의 애플리케이션 악성코드 탐지 방법, 이를 수행하기 위한 기록 매체 및 장치

Publications (1)

Publication Number Publication Date
KR102090423B1 true KR102090423B1 (ko) 2020-05-04

Family

ID=70732610

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190048172A KR102090423B1 (ko) 2019-04-25 2019-04-25 동적 api 추출 기반의 애플리케이션 악성코드 탐지 방법, 이를 수행하기 위한 기록 매체 및 장치

Country Status (2)

Country Link
US (1) US11019099B2 (ko)
KR (1) KR102090423B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102302484B1 (ko) 2020-11-26 2021-09-14 숭실대학교산학협력단 특성 선택에 기반한 모바일 악성 코드 분류 방법, 이를 수행하기 위한 기록 매체 및 장치

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112417448B (zh) * 2020-11-15 2022-03-18 复旦大学 一种基于api关系图谱的恶意软件检测模型抗老化增强方法
CN112464234B (zh) * 2020-11-21 2024-04-05 西北工业大学 一种云平台上基于svm的恶意软件检测方法
CN112464232B (zh) * 2020-11-21 2024-04-09 西北工业大学 一种基于混合特征组合分类的Android系统恶意软件检测方法
CN114329468B (zh) * 2021-12-24 2024-03-29 浙江工业大学 一种基于映射关系的对抗性Android恶意软件检测方法
CN115168859B (zh) * 2022-09-05 2022-11-29 浙江工业大学 面向api序列恶意软件检测模型的黑盒攻击与防御方法
US20240160727A1 (en) * 2022-11-08 2024-05-16 Akamai Technologies, Inc. Detecting anomalous Application Programming Interface (API) behaviors

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140181973A1 (en) * 2012-12-26 2014-06-26 National Taiwan University Of Science And Technology Method and system for detecting malicious application
KR101589656B1 (ko) * 2015-01-19 2016-01-28 한국인터넷진흥원 Api 기반 악성 코드 변종 탐지 조회 시스템 및 방법
KR101803889B1 (ko) * 2017-01-18 2017-12-04 한국인터넷진흥원 위험도 기반 악성 어플리케이션 탐지 방법 및 장치
KR20180107932A (ko) * 2017-03-23 2018-10-04 한국과학기술원 소프트웨어 정의 네트워크에서의 악성 프로그램 탐지 장치, 방법 및 컴퓨터 프로그램

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101326896B1 (ko) 2011-08-24 2013-11-11 주식회사 팬택 단말기 및 이를 이용하는 어플리케이션의 위험도 제공 방법
EP3382609A4 (en) 2015-11-27 2018-12-05 Fujitsu Limited Risk assessment method, risk assessment program, and information processing device
KR20170108330A (ko) * 2016-03-17 2017-09-27 한국전자통신연구원 악성 코드 탐지 장치 및 방법
US10645099B1 (en) * 2017-09-01 2020-05-05 Ca, Inc. Malware detection facilitated by copying a memory range from an emulator for analysis and signature generation
KR101907443B1 (ko) 2017-10-31 2018-10-12 주식회사 윈스 구성 요소 기반 악성 파일 유사성 분석 장치 및 방법
US11295013B2 (en) * 2017-12-11 2022-04-05 International Business Machines Corporation Dimensionality reduction based on functionality

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140181973A1 (en) * 2012-12-26 2014-06-26 National Taiwan University Of Science And Technology Method and system for detecting malicious application
KR101589656B1 (ko) * 2015-01-19 2016-01-28 한국인터넷진흥원 Api 기반 악성 코드 변종 탐지 조회 시스템 및 방법
KR101803889B1 (ko) * 2017-01-18 2017-12-04 한국인터넷진흥원 위험도 기반 악성 어플리케이션 탐지 방법 및 장치
KR20180107932A (ko) * 2017-03-23 2018-10-04 한국과학기술원 소프트웨어 정의 네트워크에서의 악성 프로그램 탐지 장치, 방법 및 컴퓨터 프로그램

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102302484B1 (ko) 2020-11-26 2021-09-14 숭실대학교산학협력단 특성 선택에 기반한 모바일 악성 코드 분류 방법, 이를 수행하기 위한 기록 매체 및 장치
WO2022114392A1 (ko) * 2020-11-26 2022-06-02 숭실대학교 산학협력단 특성 선택에 기반한 모바일 악성 코드 분류 방법, 이를 수행하기 위한 기록 매체 및 장치
US11809557B2 (en) 2020-11-26 2023-11-07 Foundation Of Soongsil University-Industry Cooperation Mobile malicious code classification method based on feature selection and recording medium and device for performing the same

Also Published As

Publication number Publication date
US11019099B2 (en) 2021-05-25
US20200344261A1 (en) 2020-10-29

Similar Documents

Publication Publication Date Title
KR102090423B1 (ko) 동적 api 추출 기반의 애플리케이션 악성코드 탐지 방법, 이를 수행하기 위한 기록 매체 및 장치
CN105653956B (zh) 基于动态行为依赖图的Android恶意软件分类方法
CN110737899B (zh) 一种基于机器学习的智能合约安全漏洞检测方法
Schelter et al. Fairprep: Promoting data to a first-class citizen in studies on fairness-enhancing interventions
US20180173495A1 (en) Duplicate and similar bug report detection and retrieval using neural networks
CN105022957B (zh) 随选检测恶意程序的方法及其电子装置
US20150178366A1 (en) Data generation for performance evaluation
US10459704B2 (en) Code relatives detection
KR102006245B1 (ko) 바이너리 파일에 기초하여 오픈소스 소프트웨어 패키지를 식별하는 방법 및 시스템
CN107391682B (zh) 知识验证方法、知识验证设备以及存储介质
CN109766697A (zh) 应用于Linux系统的漏洞扫描方法、存储介质、设备及系统
KR102302484B1 (ko) 특성 선택에 기반한 모바일 악성 코드 분류 방법, 이를 수행하기 위한 기록 매체 및 장치
CN115146282A (zh) 基于ast的源代码异常检测方法及其装置
CN112688966A (zh) webshell检测方法、装置、介质和设备
KR102046748B1 (ko) 트리 부스팅 기반 애플리케이션의 위험도 평가 방법, 이를 수행하기 위한 기록 매체 및 장치
CN112817877B (zh) 异常脚本检测方法、装置、计算机设备和存储介质
CN116975881A (zh) 一种基于llvm的漏洞细粒度定位方法
CN111582313A (zh) 样本数据生成方法、装置及电子设备
KR20210029006A (ko) 제품 평가 마이닝 방법 및 이를 수행하는 장치
Naeem et al. Identifying vulnerable IoT applications using deep learning
KR102217092B1 (ko) 애플리케이션의 품질 정보 제공 방법 및 장치
KR102443938B1 (ko) 코드 시퀀스 기반 지능형 핵심코드 식별 방법, 이를 수행하기 위한 기록 매체 및 장치
KR20210100844A (ko) 안드로이드 악성 앱 레이블 가중치 투표 기반 패밀리 분류 방법, 이를 수행하기 위한 기록 매체 및 장치
KR102286451B1 (ko) 자연어 처리 기반 난독화된 식별자 인식 방법, 이를 수행하기 위한 기록 매체 및 장치
Yu et al. Android Malware Detection Using Ensemble Learning on Sensitive APIs

Legal Events

Date Code Title Description
GRNT Written decision to grant