KR101605783B1 - 악성 애플리케이션 탐지 방법 및 이 방법을 실행시키는 컴퓨터프로그램 - Google Patents

악성 애플리케이션 탐지 방법 및 이 방법을 실행시키는 컴퓨터프로그램 Download PDF

Info

Publication number
KR101605783B1
KR101605783B1 KR1020140120948A KR20140120948A KR101605783B1 KR 101605783 B1 KR101605783 B1 KR 101605783B1 KR 1020140120948 A KR1020140120948 A KR 1020140120948A KR 20140120948 A KR20140120948 A KR 20140120948A KR 101605783 B1 KR101605783 B1 KR 101605783B1
Authority
KR
South Korea
Prior art keywords
application
malicious
detection
parsing
applications
Prior art date
Application number
KR1020140120948A
Other languages
English (en)
Other versions
KR20160031589A (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 KR1020140120948A priority Critical patent/KR101605783B1/ko
Publication of KR20160031589A publication Critical patent/KR20160031589A/ko
Application granted granted Critical
Publication of KR101605783B1 publication Critical patent/KR101605783B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/562Static detection
    • G06F21/563Static detection by source code analysis
    • 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/554Detecting local intrusion or implementing counter-measures involving event detection and direct action

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Telephonic Communication Services (AREA)

Abstract

본 발명은 (a) 애플리케이션을 파싱(parsing)하는 단계, (b) 파싱으로부터 추출된 제작자 정보를 악성 제작자 블랙 리스트와 비교하는 단계 및 (c) 비교의 결과에 기초하여 애플리케이션이 악성 애플리케이션인지를 결정하는 단계를 포함하는 악성 애플리케이션 탐지 방법 및 이 방법을 실행시키는 컴퓨터프로그램에 관한 것이다.
본 발명을 이용함으로써 악성 애플리케이션을 신속하고 정확하게 탐지하고 분류할 수 있는 효과가 있다.

Description

악성 애플리케이션 탐지 방법 및 이 방법을 실행시키는 컴퓨터프로그램{MALICIOUS APPLICATION DETECTING METHOD AND COMPUTER PROGRAM EXECUTING THE METHOD}
본 발명은 악성 애플리케이션 탐지 방법 및 이 방법을 실행시키는 컴퓨터프로그램에 관한 것으로서, 구체적으로는 애플리케이션에 포함된 제작자 정보를 활용하여 휴대형 단말기에서 이용가능한 애플리케이션이 악성코드인지를 체계적으로 탐지하고 분류할 수 있도록 하는, 악성 애플리케이션 탐지 방법 및 이 방법을 실행시키는 컴퓨터프로그램에 관한 것이다.
스마트폰의 악성코드는 대부분 안드로이드 플랫폼을 공격 목표로 한다. 이는 안드로이드 플랫폼을 탑재한 스마트폰이 시장의 대부분을 차지하고 있고, 안드로이드 플랫폼의 공개로 인해 악성코드의 제작과 배포가 용이하게 때문이다. 이로 인하여, 안드로이드 플랫폼 기반의 스마트폰의 악성코드는 기하급수적으로 늘어나는 추세여서 신속한 대응이 필요하다.
스마트폰이 일반화됨에 따라 모바일 악성코드의 탐지 방법이 지속적으로 연구되고 있다. 백신 회사들은 PC 기반의 악성코드 탐지 방법을 일반적으로 적용하여 모바일 악성코드를 탐지하고 있다. PC 기반의 악성코드 탐지 방법은 시그니처(signature) 기반의 탐지 방법으로 분석가가 지속적으로 데이터베이스를 업데이트해야 하고 알려지지 않은 새로운 악성코드(Zero-day) 공격의 탐지가 용이치 않으며 악성코드의 일부나 전체를 변경한 경우에 탐지율이 현저히 떨어지는 문제점이 있다.
한편 악성코드를 탐지하는 방법은 NP-Hard 또는 NP-Complete 문제로 알려져 있어 일반 컴퓨터에서 문제를 사실상 풀 수 없는 것을 알려져 있다.
시그너처 기반의 탐지 방법의 문제점을 해결하기 위해서 그리고 악성코드의 문제 복잡도를 완화하기 위해서 악성코드에서 추출될 수 있는 일부 의미있는 특징만을 이용하여 탐지하는 방안이 연구되고 있고 주로 3가지의 악성코드 탐지 방법이 알려져 있다.
첫째는 애플리케이션 설치시 요구되는 퍼미션(permission) 기반의 탐지 방법으로 정상코드를 악성코드로 분류하는 오탐(false positive)율이 높아 효과적이지 않기 때문에 퍼미션에만 치우친 악성코드 탐지 방법은 높은 탐지율을 보장하기 힘들다.
두 번째는 API(Application Program Interface) 호출기반의 정적 분석 방법으로 모든 디컴파일(decompile) 과정이 완료되어야 시그너처를 생성할 수 있고 일반적으로 적용될 수 있는 변조 및 난독화 기술에 취약한 문제가 있다.
세 번째는 시스템 콜(System Call) 기반의 악성코드 탐지 방법으로 주로 시스템 콜 함수의 호출빈도에 기반하여 애플리케이션이 악성코드인지를 탐지하나 시스템 콜에서 이용되고 동작을 이해할 수 있는 인자를 고려하지 않아 탐지 정확도에 한계가 있다.
이와 같이 선행 연구들에서의 한계점을 보완하고 효율적으로 악성코드를 탐지하고 분류하기 위한 새로운 탐지 방법이 필요하다.
본 발명은 상술한 문제점을 해결하기 위해서 안출한 것으로서, 애플리케이션에 포함된 제작자 정보를 활용하여 애플리케이션이 악성코드인지를 신속하게 탐지하고 추가적으로 체계화된 단계별 탐지를 통해서 악성코드 여부를 정확하게 탐지 및 분류가능하도록 하는 악성 애플리케이션 탐지 방법 및 이 방법을 실행시키는 컴퓨터프로그램을 제공하는 데 그 목적이 있다.
상기와 같은 목적을 달성하기 위한 악성 애플리케이션 탐지 방법은 (a) 애플리케이션을 파싱(parsing)하는 단계, (b) 파싱으로부터 추출된 제작자 정보를 악성 제작자 블랙 리스트와 비교하는 단계 및 (c) 비교의 결과에 기초하여 애플리케이션이 악성 애플리케이션인지를 결정하는 단계를 포함한다.
또한 상기와 같은 목적을 달성하기 위한 컴퓨터프로그램은 하드웨어와 결합되어 악성 애플리케이션 탐지 방법을 실행시키기 위해서 매체에 저장되고 악성 애플리케이션 탐지 방법은 (a) 애플리케이션을 파싱(parsing)하는 단계, (b) 파싱으로부터 추출된 제작자 정보를 악성 제작자 블랙 리스트와 비교하는 단계 및 (c) 비교의 결과에 기초하여 애플리케이션이 악성 애플리케이션인지를 결정하는 단계를 포함한다.
상기와 같은 본 발명에 따른 악성 애플리케이션 탐지 방법 및 이 방법을 실행시키는 컴퓨터프로그램은 애플리케이션에 포함된 제작자 정보를 활용하여 애플리케이션이 악성코드인지를 신속하게 탐지하고 추가적으로 체계화된 단계별 탐지를 통해서 악성코드 여부를 정확하게 탐지 및 분류가능하도록 하는 효과가 있다.
도 1은 본 발명에 따른 예시적인 악성 애플리케이션 탐지 시스템을 도시한 도면이다.
도 2는 본 발명에 따른 악성 애플리케이션 탐지 방법의 예시적인 흐름도를 도시한 도면이다.
도 3은 탐지 서버의 예시적인 기능 블록도를 도시한 도면이다.
상술한 목적, 특징 및 장점은 첨부된 도면을 참조하여 상세하게 후술 되어 있는 상세한 설명을 통하여 더욱 명확해 질 것이며, 그에 따라 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 것이다. 또한, 본 발명을 설명함에 있어서 본 발명과 관련된 공지 기술에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에 그 상세한 설명을 생략하기로 한다. 이하, 첨부된 도면을 참조하여 본 발명에 따른 바람직한 실시 예를 상세히 설명하기로 한다.
도 1은 본 발명에 따른 예시적인 악성 애플리케이션 탐지 시스템을 도시한 도면이다.
도 1에 따르면 악성 애플리케이션 탐지 시스템은 통신망에 연결된 하나 이상의 다운로드 서버(200), 하나 이상의 스마트폰(300) 및 탐지 서버(100)를 포함한다.
악성 애플리케이션 탐지 시스템의 각 블록들을 살펴보면, 스마트폰(300)은 일반 사용자가 휴대하고 이동통신망 및/또는 인터넷망을 통해 전화 및 데이터 송수신이 가능한 핸드폰이다. 스마트폰(300)은 각종 애플리케이션을 실행할 수 있는 환경을 사용자에게 제공한다. 예를 들어 스마트폰(300)은 안드로이드 플랫폼을 탑재하여 안드로이드 플랫폼 상에서 수행될 수 있는 애플리케이션을 실행시킬 수 있다.
특정 애플리케이션은 사용자의 의도와는 달리 스마트폰(300) 내의 각종 중요 데이터를 수집하거나 각종 중요 데이터를 원격의 다른 서버로 문자 메시지나 데이터 통신 등을 통해 전송할 수 있다. 그리고 이 애플리케이션은 사용자의 제어를 벗어나서 사용자를 속일 수 있다. 이러한 특정 애플리케이션은 소위 악성 애플리케이션으로 이하 지칭된다. 악성 애플리케이션은 악성코드, 악성 앱 또는 맬웨어(Malware) 등으로도 언급되기도 한다.
악성 애플리케이션은 예를 들어 권한 상승(Privilege escalation), 원격 제어, 금융비용 부가(financial charge), 정보 수집 등과 같은 악성 동작(행위)을 수행하거나 정보를 유출하거나 모바일 봇넷(botnet)으로 동작하거나 루트 권한을 획득할 수 있다. 악성 애플리케이션은 주로 루트 권한(root privilege)에서 수행되는 시스템 명령어를 사용하거나 SMS(Short Message Service) 알림(Notification)을 숨기는 동작을 수행하여 금융 사기를 치거나 각종 민감한 중요 정보를 수집할 수 있다.
애플리케이션은 다운로드 서버(200)를 통해서 혹은 다른 장치를 통해서 배포될 수 있다. 애플리케이션은 예를 들어 패키지(Package)로 구성되어 배포되어 스마트폰(300)에서의 수행시 필요한 다양한 정보를 포함한다. 애플리케이션은 예를 들어 안드로이드 플랫폼을 탑재한 스마트폰(300)에서 수행되는 응용 프로그램이다.
이하에서는 안드로이드 플랫폼을 중심으로 본 발명을 설명하도록 하며, 본 발명의 기술적 사상은 안드로이드 플랫폼 외의 다른 운영체제 플랫폼이나 앞으로 적용될 운영체제 플랫폼에도 적용될 수 있다.
다운로드 서버(200)는 하나 이상의 애플리케이션을 저장하고 저장된 애플리케이션을 스마트폰(300)에서의 브라우징과 특정 애플리케이션의 선택에 따른 다운로드 요청에 따라 스마트폰(300)으로 다운로드할 수 있도록 하는 서버이다. 다운로드 서버(200)로부터 정상적인 애플리케이션("benign application")이나 악성 애플리케이션이 스마트폰(300)으로 다운로드될 수 있다.
탐지 서버(100)는 통신망에서 산재되어 있는 애플리케이션이 악성인지를 탐지하고 이를 보고할 수 있다. 탐지 서버(100)는 크롤러(Crawler) 등을 탑재하고 다운로드 서버(200)에 자동 접속하여 애플리케이션을 다운로드 받고 다운로드 받은 애플리케이션이 악성 애플리케이션인지를 결정할 수 있다. 또는 탐지 서버(100)는 스마트폰(300)으로부터의 탐지 요청에 따라 애플리케이션을 수신하고 수신된 애플리케이션의 정보를 활용하여 악성인지를 결정할 수 있다.
탐지 서버(100)는 통신망을 통해 접속가능하고 웹 페이지를 스마트폰(300)에 제공할 수 있도록 구성될 수도 있다. 이에 따라 스마트폰(300)은 웹 페이지의 브라우징에 따라 이용할 애플리케이션이 악성 애플리케이션인지를 탐지 요청하고 그 결과를 탐지 서버(100)로부터 수신할 수 있다.
탐지 서버(100)는 적어도 통신망에 액세스할 수 있는 통신 인터페이스와 컴퓨터프로그램을 수행할 수 있는 하나 이상의 프로세서와 각종 데이터를 저장하기 위한 대용량 저장매체를 포함한다. 탐지 서버(100)는 대용량 저장매체에 포함된 컴퓨터프로그램을 프로세서상에서 수행하여 요청된 애플리케이션이 악성인지를 결정한다.
탐지 서버(100)에서 이루어지는 탐지 방법 등은 도 2 및 도 3을 통해서 상세히 살펴보도록 한다.
통신망(도면부호 미도시)은 각종 서버(200, 300)와 스마트폰(300) 사이의 데이터를 송수신할 수 있는 유선, 무선 또는 유무선 망이다. 통신망은 이동통신망 또는 인터넷망을 포함한다. 물론 이동통신망은 인터넷망을 구성할 수도 있다.
도 2는 본 발명에 따른 악성 애플리케이션 탐지 방법의 예시적인 흐름도를 도시한 도면이다. 도 2의 흐름도는 바람직하게는 탐지 서버(100)에서 수행되고 대용량 저장매체에 포함된 컴퓨터프로그램의 프로그램 코드를 프로세서가 수행함으로써 이루어진다. 프로그램 코드는 컴퓨터프로그램 내에 포함되고 도 2의 흐름도의 각 단계를 프로세서가 수행할 수 있도록 구성된다.
먼저 탐지 서버(100)는 크롤러에 의한 신규 애플리케이션의 인식에 따라 또는 스마트폰(300)으로부터 웹 페이지를 통한 탐지 요청에 따라 애플리케이션을 통신망을 통해 수신(S101)한다.
수신되는 애플리케이션은 스마트폰(300)의 특정 플랫폼에서 수행될 수 있는 애플리케이션이다. 이러한 애플리케이션은 플랫폼과 약속된 포맷에 따라 포맷팅되어 있다. 예를 들어 애플리케이션은 APK(Android PacKage)로 포맷팅되어 있어 안드로이드 플랫폼상에서 수행될 수 있는 응용 프로그램이다.
이후 탐지 서버(100)는 수신된 애플리케이션을 파싱(S103)하고 파싱에 따라 악성 애플리케이션 탐지에 필요한 정보를 애플리케이션으로부터 추출하고 이를 데이터베이스(101) 등에 저장한다.
예를 들어 탐지 서버(100)는 안드로이드 APK 포맷으로된 애플리케이션의 패키지로부터 AndroidManifest.xml로부터 애플리케이션이 요구하는 요청 퍼미션(requested permission, '요청 권한'이라고도 함)과 콤포넌트 이름과 인텐트(Intent)를 추출한다. 또한 탐지 서버(100)는 안드로이드 APK 파일 포맷으로된 애플리케이션의 패키지로부터 인증서 정보(예를 들어 META-INF 폴더 내에 저장된 인증서)를 추출하고 패키지에 포함된 Classes.dex을 디스어셈블하여 스말리(smali) 코드를 생성하고 콤포넌트에 따라 분석하여 애플리케이션에서 이용되는 API들과 시스템 명령어들을 추출한다.
이러한 다양한 정보들의 추출 이후에 탐지 서버(100)는 추출된 정보들 중 악성 애플리케이션의 탐지에 필요한 정보들을 선별(이하 '탐지용 정보'라고 함)하여 해당 애플리케이션을 위해 대용량 저장매체(또는 데이터베이스(101)) 등에 저장한다.
좀 더 구체적으로 저장되는 정보를 살펴보면, 수신된 애플리케이션의 안드로이드 APK는 X.509 표준인 RFC 2459에 따른 인증서를 포함하고 있다. 인증서는 애플리케이션을 만든 제작자를 식별할 수 있도록 하는 제작자 정보를 포함한다. 제작자 정보는 주소, 이름, 조직 등과 시리얼 넘버 같은 다양한 정보로 구성될 수 있다. 추출되어 탐지용 정보에 저장되는 제작자 정보는 바람직하게는 인증서에 포함된 시리얼 넘버일 수 있다. 시리얼 넘버는 예를 들어 안드로이드 플랫폼상에서 애플리케이션의 등록시에 자동으로 생성되는 넘버이고 제작자별로 상이한 시리얼 넘버가 할당된다. 다른 정보와 달리 시리얼 넘버는 예를 들어 공개키 및 개인키 조합을 통한 제작자 인증으로 자동 생성되고 동일한 제작자에 대해서 동일한 시리얼 넘버가 할당된다. 인증서의 시리얼 넘버는 탐지 서버(100)에 의해서 추출되고 탐지에 필요한 정보로서 저장된다.
여기서 악성 애플리케이션의 배포 유형을 살펴보면, 출원인에 의해 수집된 악성 애플리케이션 샘플들에서 622개의 시리얼 넘버를 발견하였고 샘플들 중 70%가 24개의 동일한 시리얼 넘버에 의해서 제작되었음을 발견하였다. 특히 샘플들 중 50%가 단지 5개의 시리얼 넘버에 의해서 인증되고 있음을 알 수 있었다. 즉 하나의 동일한 시리얼 넘버로 여러 악성 애플리케이션이 생성됨을 알 수 있고 이러한 시리얼 넘버의 특징을 악성 애플리케이션의 탐지에 이용한다면 편리하고 그리고 신속하게 악성코드의 탐지가 가능하다. 그러나 이전에는 이러한 시리얼 넘버를 활용한 악성 애플리케이션의 탐지의 시도는 존재하지 않았다.
본 발명에 따른 탐지 서버(100)는 복수의 악성 애플리케이션의 배포 유형, 특히 동일한 제작자에 의해서 여러 악성 애플리케이션을 제작하고 배포하고 있다는 점에 착안하여 악성 제작자 블랙 리스트를 미리 구성하고 이를 대용량 저장매체 등의 데이터베이스(101)에 미리 저장한다.
또한 수신된 애플리케이션의 안드로이드 APK의 AndroidManifest.xml은 애플리케이션의 수행시 필요한 또는 요청한 퍼미션 정보와 인텐트(Intent) 정보를 포함한다.
안드로이드 플랫폼상에는 대략 122 가지의 퍼미션이 존재한다. 퍼미션은 애플리케이션이 어떤 액션(동작)과 어떤 리소스를 접근할 것인지를 사용자에게나 안드로이드 플랫폼에 알려줄 수 있다. 총 122가지의 퍼미션 중에는 정상 애플리케이션이 일반적으로 사용하는 퍼미션이 존재하고 악성 애플리케이션이 주로 사용하는 퍼미션이 존재한다. 조사 결과 악성 애플리케이션은 다른 퍼미션에 비해 상대적으로 보안과 프라이버시(Privacy)와 관련된 26개의 위험한 퍼미션을 주로 사용하는 것으로 파악되었다. 이러한 조사 결과를 바탕으로 탐지 서버(100)는 애플리케이션의 AndroidManifest.xml에서 퍼미션을 추출하고 26개의 위험한 퍼미션(이하 '위험 퍼미션'이라고도 함)이 존재하는 지를 비교하여 애플리케이션에 위험한 퍼미션이 존재하는 경우 존재하는 각각의 퍼미션 정보를 탐지용 정보에 저장한다.
위험 퍼미션들은 예를 들어 ACCESS_COARSE_LOCATION, ACCESS_FINE_LOCATION, CALL_PHONE, INSTALL_PACKAGES, READ_SMS, SEND_SMS, GET_ACCOUNTS, MOUNT_UNMOUNT_FILESYSTEMS, RECEIVE_MMS, RECEIVE_SMS 등을 포함한다.
또한 API 각각은 API 각각의 호출과 관련된 퍼미션(이하 'API 관련 퍼미션'이라고도 함)을 가진다. 각각의 API는 API의 기능에 따라 대응하는 퍼미션을 가지고 특정 API는 위험한 퍼미션을 가지는 것이 알려져 있다. 따라서 탐지 서버(100)는 디스어셈블리 과정을 통해 API들을 식별하고 식별된 API들 중에서 위험한 API 관련 퍼미션을 식별하여 해당 API 관련 퍼미션들을 탐지용 정보에 더 저장할 수 있다.
한편, AndroidManifest.xml은 인텐트를 가지고 있다. 안드로이드 OS(Operating System)의 경우 애플리케이션의 프로그램에 대한 유일한 엔트리가 있지 않은 구조이다. 안드로이드 애플리케이션은 액티비티(activity), 서비스(service), 브로드캐스트 리시버(broadcast receiver), 및 콘테츠 프로바이더(contents provider)로 구성된다. 서비스는 백그라운드로 수행되는 반면에 액티비티는 스마트폰(300)의 스크린에 관련된 UI(User Interface) 콤포넌트이다. 브로드캐스트 리시버는 안드로이드의 시스템으로부터 시그널을 기다리고 시그널의 수신후에 적절한 액션을 깨우도록(wake up) 구성된다. 콘텐츠 프로바이더는 애플리케이션 간 데이터를 공유할 수 있도록 중간단계의 유닛으로 역할을 수행한다.
이 네개의 콤포넌트는 독립적으로 동작하고 이에 따라 메시지를 전달할 유닛인 인텐트가 필요하게 된다. 인텐트는 애플리케이션이 원하는 특정 명령을 포함하여 액티비티로부터 액티비티로 메시지를 전달할 수 있다. 이러한 인텐트는 악성 애플리케이션에서 악용될 수 있고 이에 따라 탐지 서버(100)는 인텐트를 XML 파일로부터 추출하여 탐지용 정보에 저장한다.
탐지 서버(100)는 패키지에 포함된 Classes.dex을 디스어셈블하여 스말리 코드를 생성하고 콤포넌트에 따라 분석하여 애플리케이션에서 이용되는 API들과 시스템 명령어들을 추출하고 추출된 API들과 시스템 명령어들 중 악성 애플리케이션에서 주로 사용되는 API들과 시스템 명령어들을 탐지용 정보에 저장한다.
일반적으로 악성 애플리케이션에 자주 이용되는 또는 주로 이용되는 API들과 일반 정상 애플리케이션에서 이용된 API 들은 악성 애플리케이션과 정상 애플리케이션의 API 분석을 통해서 분류될 수 있다. 예를 들어 악성 애플리케이션에 주로 이용되는 API(이하 '위험 API'라고도 함)들은 사용자 또는 스마트폰(300) 정보를 수집하기 위한 기능을 수행하는 API, 웹 사이트에 접속하는 API, SMS를 전송하고(거나) SMS를 삭제하는 API, 애플리케이션을 인스톨하는 API 등일 수 있다. 추출된 API들 중에서 이러한 미리 분류된(지정된) 위험 API 리스트에 포함된 API가 애플리케이션에 존재하는 경우 해당 API는 탐지용 정보에 저장된다.
위험 API들은 예를 들어 getDeviceId(), getNetworkOperator(), getNetworkType(), getPhoneType(), getSimSerialNumber(), getSubscriberId() 등과 같은 텔레포니 메니저(TelephonyManager) 클래스에 포함된 함수들과, 빌드(Build) 클래스에 포함된 BOARD, DEVICE, ID, SERIAL 등과 위치(Location) 클래스에 포함된 getAltitude(), getLatitude() 등과 SMS 메시지(SmsMessage) 클래스에 포함된 sendTextMessage(), getDisplayMessageBody(), abortBroadcast() 등과 암호화(Cipher) 클래스에 포함된 getInstance() 등과 HTTP URL 연결(HttpsURLConnection) 클래스에 포함된 getInputStream(), getOutputStream() 등이 있다. 위험 API들은 총 63개로 구성될 수 있다.
또한 악성 애플리케이션에 일반적으로 이용되는 시스템 명령어들은 미리 분류될 수 있다. 예를 들어, 안드로이드 플랫폼에서 활용될 수 있는 'chmod', 'insmod', 'su', 'mount', 'sh', 'killall', 'reboot', 'mkdir', 'getprop', 'ln', 'ps' 등은 악성 애플리케이션에 주로 활용되는 시스템 명령어(이하 '위험 명령어'라고도 함)들이다. 추출된 시스템 명령어들 중에서 이러한 미리 지정된 위험 명령어의 리스트에 포함된 시스템 명령어가 존재하는 경우 탐지 서버(100)는 해당 시스템 명령어를 탐지용 정보에 저장한다.
이와 같이 탐지용 정보는 시리얼 넘버, 인텐트, 존재하는 경우 하나 이상의 위험 API들, 존재하는 경우 하나 이상의 위험 명령어들, 퍼미션 정보들을 포함하고 대용량 저장매체 등에 저장된다.
나아가 탐지 서버(100)는 APK 파일을 유일하게 식별하기 위한 APK 파일의 해쉬(Hash) 값을 탐지용 정보에 더 저장할 수 있다. 해쉬 값은 이후 동일한 애플리케이션에 대한 악성 애플리케이션 탐지의 요청시 이미 탐지된 애플리케이션을 식별하기 위해서 이용된다.
여기서, 탐지용 정보가 대용량 저장매체에 저장되는 것으로 설명하였으나 이에 국한될 필요는 없으며 예를 들어 탐지 서버(100)에 더 포함될 수 있는 휘발성 메모리 등에 임시로 먼저 저장될 수도 있다.
애플리케이션 파싱에 따라 필요한 탐지용 정보의 생성 이후에, 탐지 서버(100)는 시리얼 넘버와 같은 추출된 제작자 정보(예를 들어 '탐지용 정보'의 시리얼 넘버)를 미리 구성된 악성 제작자 블랙 리스트와 비교하고 블랙 리스트 내에 추출된 제작자 정보가 포함되어 있는 지를 결정(S105)한다. 단계 S105 이후에 탐지 서버(100)는 블랙 리스트와 제작자 정보의 비교 결과에 기초하여 수신된 애플리케이션이 악성 애플리케이션인지를 결정한다.
앞서 살펴본 바와 같이, 블랙 리스트는 복수의 시리얼 넘버를 포함하고 시리얼 넘버 각각은 적어도 복수 회에 걸쳐서 악성 애플리케이션을 배포한 제작자를 나타내는 정보이다. 시리얼 넘버는 애플리케이션 등록을 위해서 조작이 불가능한 데이터이다. 따라서 블랙 리스트에 포함된 시리얼 넘버를 이용하는 애플리케이션은 악성 애플리케이션일 가능성이 크다. 또한 시리얼 넘버를 활용함으로써 신속한 1차적인 악성 애플리케이션의 필터링이 가능하고 단계적인 악성 애플리케이션의 탐지를 가능하도록 한다.
만일 블랙 리스트에 제작자 정보가 존재하는 경우에 탐지 서버(100)는 탐지를 위한 애플리케이션이 미리 지정된 위험 API를 사용하고 있는 지를 판단(S107)한다. 위험 API의 사용은 탐지용 정보에 저장된 하나 이상의 위험 API들이 존재하는 지로 간단하게 결정될 수 있다. 만일 위험 API들이 존재하지 않는 경우에는 탐지 서버(100)는 단계 S119로 전이하여 정상 애플리케이션으로 결정하고 만약 위험 API들이 존재하는 경우 탐지 서버(100)는 수신된 애플리케이션을 악성 애플리케이션으로 결정(S121)한다.
이러한 단계 S105, 단계 S107, 및 단계 S121을 통해서 간단하고 신속하게 악성코드 유무를 판별할 수 있다.
추출된 제작자 정보가 블랙 리스트에 존재하지 않는 경우에는 추가적인 분석이 더 필요하다. 탐지 서버(100)는 단계 S109에서 악성코드 탐지를 위한 애플리케이션이 지정된 위험 API를 사용하는 지를 판단한다. 만일 지정된 위험 API를 사용하지 않는 경우 탐지 서버(100)는 단계 S119로 전이하여 정상 애플리케이션으로 결정한다.
위험 API를 사용하는 경우, 탐지 서버(100)는 단계 S110에서 지정된 위험 명령어를 사용하는 지를 판단한다. 만일 지정된 위험 명령어를 사용하는 경우 탐지 서버(100)는 단계 S121로 전이하여 악성 애플리케이션으로 결정한다.
이러한 판단은 예를 들어 탐지용 정보에 하나 이상의 위험 API들이 존재하는지(단계 S109)와 하나 이상의 위험 명령어들이 존재하는지(단계 S110)로 이루어질 수 있다. 만일 위험 API를 사용하고 위험 명령어를 사용하는 경우 탐지 서버(100)는 단계 S121로 전이하여 악성 애플리케이션으로 결정한다.
만일 지정된 위험 API를 애플리케이션이 사용하나 지정된 시스템 명령어를 이 애플리케이션이 사용하지 않는 경우에 탐지 서버(100)는 단계 S111에서 애플리케이션이 SMS 알림을 숨기는 지를 결정(판단)한다.
SMS 알림을 숨기는 악성 애플리케이션은 SMS을 통한 확인 및 알림을 제공하는 프리미엄 서비스에 가입하는 전형적인 악성코드이다. 일반적으로 이러한 애플리케이션은 SMS의 전송을 위해서 sendTextMessage()를 사용하고 SMS 수신 인텐트에 대해 가장 높은 우선순위를 획득하고 다른 애플리케이션과 사용자에게 SMS 알림을 숨기기 위해 abortBroadcast()를 호출한다.
탐지 서버(100)는 바람직하게는 탐지용 정보에 저장된 인텐트, 하나 이상의 위험 API들을 이용하여 SMS 알림을 숨기는 지를 결정할 수 있다. SMS 알림을 숨기는 경우 탐지 서버(100)는 단계 S121로 전이하여 악성 애플리케이션으로 결정할 수 있다.
만일 SMS 알림을 숨기지 않는 경우에는 악성 애플리케이션 여부를 확률적으로 판단할 필요가 있다. 이에 따라 단계 S113에서 탐지 서버(100)는 퍼미션에 대한 우도비(likelihood ratio)를 계산한다.
정상(benign) 애플리케이션과 악성 애플리케이션은 요청 퍼미션들이 다른 경향이 존재한다. 악성 애플리케이션은 정상 애플리케이션보다 더 많은 퍼미션을 요청하고(거나) 프라이버시 또는 금융 사기 위험을 야기할 수 있는 퍼미션들을 종종 요청한다. SEND_SMS과 같은 퍼미션은 요청 퍼미션과 API 관련 퍼미션에 관련하여 정상 애플리케이션은 1.82% 및 1.04% 정도가 요청되고 악성코드는 43.98% 및 35.07% 정도가 요청되고 있다.
각 카테고리(예를 들어 정상 또는 악성 카테고리)의 퍼미션의 우도(likelihood)는 나이브 베이지안 분류기(Naive Bayes Classifier)에 의해서 계산될 수 있다. 안드로이드 퍼미션 분석에 따르면 퍼미션 각각은 다른 퍼미션과 극소의(subtle) 상관관계가 있음을 알 수 있었다. 따라서 퍼미션 간에는 각각 독립적인 것으로 가정할 수 있다.
n이 탐지 서버(100)가 알고 있거나 탐지를 수행한 애플리케이션의 개수를 나타내고 m이 앞서 살펴본 위험한 퍼미션 또는 위험한 API 관련 퍼미션의 개수를 나타내는 것으로 가정하면, 각 애플리케이션의 요청 퍼미션 벡터 또는 API 관련 퍼미션 벡터는
Figure 112014086553253-pat00001
로 표현되고
Figure 112014086553253-pat00002
(1 <= j <=m)는 만일 애플리케이션 i가 j 퍼미션을 사용하는 경우 1이고 사용하지 않는 경우 0을 나타낸다. 또한 애플리케이션의 카테고리는
Figure 112014086553253-pat00003
중 하나이다.
베이즈 정리를 사용하고 확률
Figure 112014086553253-pat00004
으로 가정하면, 우도비(likelihood ratio)
Figure 112014086553253-pat00005
Figure 112014086553253-pat00006
으로 표현된다.
우도비 계산에서의 곱셈 연산으로 인해 만일 조건부 확률들 중 하나라도 0이 되면 우도비의 결과값이 0이 되기에 이를 방지하기 위해서 조건부 확률은 라플라스(Laplace) 추정(estimation)인,
Figure 112014086553253-pat00007
로 계산된다.
단계 S113에 따른 우도비의 계산은 수신된 애플리케이션(n 중에 하나로서)에 대해서 계산되며 바람직하게는 애플리케이션의 탐지용 정보에 저장된 애플리케이션의 요청 퍼미션들과 API 관련 퍼미션들을 이용하여 계산되며, 요청 퍼미션과 API 관련 퍼미션 각각에 대해서 우도비는 각각 계산된다.
이와 같이 탐지 서버(100)는 하나의 우도비를 파싱을 통해 추출된 요청 퍼미션에 기초하여 계산하고 다른 하나의 우도비 또한 파싱을 통해 추출된 API 관련 퍼미션에 기초하여 계산한다.
이후 단계 S115에서 탐지 서버(100)는 보다 더 정확한 악성 애플리케이션의 탐지를 위해 지정된 동작을 수행하는 지를 결정한다. 예를 들어 탐지 서버(100)는 악성 탐지 대상인 애플리케이션이 SMS 메시지를 전송하거나 디바이스 ID, 전화번호, 심(SIM) 카드의 시리얼 넘버, 스마트폰(300)의 위치를 수집하는 지를 결정한다. 이러한 동작은 악성 애플리케이션에서 수행할 가능성이 큰 동작들이다.
단계 S113과 단계 S115에서의 계산 및/또는 결정에 따라 탐지 서버(100)는 단계 S117에서 계산된 하나 혹은 두 개의 우도비가 지정된 임계치(예를 들어 1) 이상인지를 결정한다. 나아가 탐지 서버(100)는 계산된 두 개의 우도비가 지정된 임계치 이상이고 지정된 동작을 수행하는 지를 결정한다.
만일 지정된 임계치 이상이거나 또는 지정된 임계치 이상이고 지정된 동작을 수행하는 경우에 탐지 서버(100)는 수신된 애플리케이션을 악성 애플리케이션으로 결정(S121)한다.
만일 지정된 임계치 이하이거나 또는 지정된 임계치 이하이거나 지정된 동작을 수행하지 않는 경우 탐지 서버(100)는 악성 탐지를 위한 애플리케이션이 정상 애플리케이션으로 결정(S119)하고 그 결정을 나타내는 데이터를 스마트폰(300) 등으로 전송하고(거나) 데이터베이스(101)에 탐지용 정보와 함께 저장한다. 예를 들어 탐지 서버(100)는 정상 애플리케이션으로 결정한 경우에 데이터베이스(101)에 정상 애플리케이션임을 나타내는 데이터와 함께 탐지용 정보 또는 탐지용 정보 내의 시리얼 넘버 및/또는 해쉬 값을 같이 저장할 수 있다.
만일 단계 S121에서의 결정으로 악성 애플리케이션으로 판명될 경우에 탐지 서버(100)는 탐지를 위한 이 애플리케이션을 분류(S123)한다.
분류를 위해서 탐지 서버(100)는 수신된 애플리케이션의 위험 API들의 스트링, 위험 명령어들 및 위험 퍼미션들과 API 관련 퍼미션들(이하 위험 퍼미션들 및 API 관련 퍼미션들을 같이 '중요 퍼미션'으로 지칭할 수 있음)을 이용하여 이미 분류되어 있는 악성 애플리케이션 그룹들 각각의 대표 시그너처(signature)와 유사도(similarity Score)를 계산한다. 계산된 유사도가 특정 임계치 이상(예를 들어 0.7 등)인 그룹에 또는 임계치 이상이면서도 유사도가 가장 높은 그룹에 해당 애플리케이션이 속하는 것으로 탐지 서버(100)는 분류한다. 물론 그룹별 모든 유사도가 임계치 이하인 경우에는 새로운 그룹을 데이터베이스(101)에 생성할 수도 있다.
좀 더 구체적으로 살펴보면, 하나의 악성 애플리케이션과 다른 하나의 악성 애플리케이션(또는 특정 그룹을 대표하는 대표 시그너처)은 본 발명에 따라 선별된 위험 API들, 위험 명령어들 및 중요 퍼미션들을 사용해서 유사도(SS)를 계산할 수 있다. 아래 수학식 3을 통해서 두 악성 애플리케이션 또는 대표 시그너처와의 유사도를 탐지 서버(100)가 계산한다. 대표 시그너처는 예를 들어 특정 그룹을 대표하는 악성 애플리케이션에서 이용되는 위험 API들, 위험 명령어들 및 중요 퍼미션들로 표현된다. 또는 대표 시그너처는 특정 그룹에서의 데이터 마이닝을 통해 해당 그룹을 대표하고 공통되는 위험 API들, 위험 명령어들 및 중요 퍼미션들로 구성된다.
Figure 112014086553253-pat00008
i는 위험 API들, 위험 명령어들 및 중요 퍼미션들 중 하나를 나타내는 인덱스이고,
Figure 112014086553253-pat00009
는 해당 인덱스에서 이용되는 가중치를 나타낸다. 예를 들어
Figure 112014086553253-pat00010
는 1/3일 수 있다.
위험 API들 사이의 유사도는 스트링(String) 비교로 계산될 수 있다. 예를 들어 두 스트링 간 최상의 공유 부분을 찾기 위해서는 위험 API들이 파싱된 순서대로 나열되어 문자열로 치환된 상태이어야 하고, 이 때 생물정보학(Bio informatics) 분야에서 주로 사용하는 염기 서열 유사도 비교 알고리즘 중 하나인 Needleman-Wunsch 알고리즘을 이용하여 위험 API들 사이의 유사도를 계산할 수 있다.
위험 명령어들 사이의 유사도는 자카드 계수(Jaccard coefficient)를 적용하여 계산할 수 있다. 자카드 계수는 합집합(union)에서의 요소(element)의 개수로 교집합(intersection)의 요소 개수를 나누어서 계산된다.
중요 퍼미션들의 유사도는 레빈쉬타인 거리(Levenshtein distance)를 이용하여 계산한다. 레빈쉬타인 거리는 중요 퍼미션의 두 스트링이 동일하게 되기 위해 수정되어야 하는 글자(character)의 개수를 계산한다. 물론 중요 퍼미션들의 스트링을 순서화(sorting)한 후에 레빈쉬타인 거리가 계산될 수 있다.
중요 퍼미션들의 유사도는 위험 퍼미션들에 대한 유사도 계산과 API-관련 퍼미션들에 대한 유사도를 계산하고 이 두 유사도 값을 평균하여 계산될 수 있다.
이와 같이 탐지 서버(100)는 데이터베이스(101) 내에서 분류되어 있는 악성 애플리케이션 그룹을 대표하는 대표 시그너처와 악성 애플리케이션으로 결정된 애플리케이션에 대한 유사도를 계산하도록 구성된다.
탐지 서버(100)는 각 그룹의 대표 시그너처와의 유사도를 계산하고 지정된 임계치(예를 들어 0.7) 이상인 경우에 해당 대응하는 그룹으로 애플리케이션을 분류할 수 있다. 또는 지정된 임계치 이상인 경우가 여러 그룹인 경우에 가장 높은 유사도를 가지는 해당 대응하는 그룹으로 애플리케이션을 분류할 수 있다.
만일 애플리케이션이 모든 그룹에 대해서 임계치 이하인 경우에, 탐지 서버(100)는 새로운 그룹을 데이터베이스(101)에 생성하고 생성된 그룹에 이 애플리케이션을 나타내는 시그너처를 저장하고 이후 유사도 계산에 활용할 수도 있다.
애플리케이션의 분류에 따라, 대표 시그너처는 변경될 수 있다. 예를 들어 데이터 마이닝 알고리즘 등을 통해서 대표 시그너처는 새로운 분류된 악성 애플리케이션을 반영하여 업데이트될 수 있다.
이후 탐지 서버(100)는 탐지 및 분류 결과를 나타내는 데이터를 스마트폰(300)에 전송하고(거나) 데이터베이스(101)에 저장하고 애플리케이션에 대한 악성코드 탐지 및 분류를 종료(S200)한다.
도 2의 흐름도에 따른 악성 애플리케이션 탐지 방법은 컴퓨터프로그램으로 구성될 수 있다. 예를 들어 컴퓨터프로그램은 도 2의 흐름도의 각 단계를 실행시키기 위한 프로그램 코드로 구성된다. 탐지 서버(100)나 개인용 컴퓨터 등에 내장된 프로세서와 같은 하드웨어와 결합되어 이 프로세서가 프로그램 코드를 수행할 수 있다. 프로그램 코드는 탐지 서버(100)나 개인용 컴퓨터의 프로세서에 수행될 수 있는 오브젝트 코드 등으로 구성된다. 또한 이 컴퓨터프로그램은 하드디스크, USB 메모리, CD, DVD, SD 카드 등과 같은 매체(저장매체)에 저장되고 온라인 또는 오프라인을 통해 배포될 수 있다.
도 3은 탐지 서버(100)의 예시적인 기능 블록도를 도시한 도면이다.
도 3에 따르면 탐지 서버(100)는 적어도 파싱부(103), 탐지부(105), 분류부(107) 및 데이터베이스(101)를 포함한다. 이미 도 2를 통해서 악성 애플리케이션의 탐지 및 분류에 대해서 상세히 살펴보았으므로 여기서는 도 2의 설명 부분과 중복되는 부분에 대해서는 간단하게 살펴보도록 한다. 탐지 서버(100)의 기능 블록들은 하드웨어 블록 상에서 구현될 수 있다.
데이터베이스(101)는 악성 애플리케이션의 탐지에 필요한 각종 데이터를 저장한다. 데이터베이스(101)는 대용량 저장매체에 각종 데이터를 저장하고 쿼리(query)를 처리할 수 있고 프로세서에서 수행되는 프로그램에 의한 제어로 각종 데이터를 정형화되는 형태로 관리한다.
데이터베이스(101)는 악성 애플리케이션을 악성 그룹별로 분류하도록 구성되고, 각 그룹 내에는 해당 그룹 내의 각 악성 애플리케이션에 대한 탐지용 정보 또는 탐지용 정보 중 일부를 저장한다. 탐지용 정보는 예를 들어 APK 파일을 유일하게 식별하기 위한 해쉬(Hash) 값, 시리얼 넘버, 인텐트, 해당 악성 애플리케이션의 위험 API들, 위험 명령어들, 퍼미션 정보들을 저장하고 있다.
또한 데이터베이스(101)는 필터링에 이용될 위험 API 리스트, 위험 명령어 리스트, 위험 퍼미션 리스트 및 API 관련 퍼미션 리스트를 저장한다. 각각의 리스트는 각 API, 각 명령어 및 각 퍼미션을 분석 의뢰된 애플리케이션의 대응 정보와 비교할 수 있도록 구성된다. 리스트들은 특정 애플리케이션의 탐지 및 분류 이전에 미리 구성되어 있다.
데이터 베이스는 악성 제작자 블랙 리스트를 또한 저장하고 있다. 블랙 리스트는 복수의 시리얼 넘버를 포함하고 적어도 복수 회에 걸쳐서 악성 애플리케이션을 배포한 제작자를 나타내는 정보이다. 이러한 블랙 리스트는 악성 애플리케이션이 추가됨에 따라 갱신될 수 있다.
데이터베이스(101)는 또한 각 그룹별 대표 시그너처를 저장한다. 대표 시그너처는 그룹 내의 특정 애플리케이션의 탐지 정보로부터 구성되거나 그룹 내의 애플리케이션의 탐지 정보간 공통 정보에 의해서 구성될 수 있다.
파싱부(103)는 악성 여부 탐지 대상인 애플리케이션(예를 들어 통신 인터페이스를 통해 수신되거나 찾아진 애플리케이션)을 파싱하고 파싱 결과로부터 탐지용 정보를 생성한다. 생성된 탐지용 정보는 데이터베이스(101)에 저장될 수 있다. 저장되는 탐지용 정보는 그룹별 데이터와는 별도로 저장될 수도 있다.
탐지부(105)는 애플리케이션으로부터 생성된 탐지용 정보를 이용하여 해당 애플리케이션이 악성 애플리케이션인지를 결정한다. 탐지부(105)는 단계적인 탐지(단계 S105, 단계 S109, 단계 S111, 단계 S117 등 참조)가 이루어지도록 구성된다. 더욱이 탐지부(105)는 제작자 정보를 먼저 활용하여 애플리케이션이 악성인 지를 신속하게 결정할 수 있다. 제작자 정보의 비교에 따라 악성으로 분류되지 않는 경우에는 탐지용 정보에 포함된 각종 데이터를 활용하여 순차적인 필터링으로 악성 애플리케이션인 지를 탐지할 수 있다. 위험 API 및 위험 명령어의 사용 여부, SMS 알림의 숨김 여부, 우도비와 지정된 동작의 수행 여부에 따라서 순차적인 악성 애플리케이션의 필터링이 가능하다. 이에 따라 효율적인 악성 애플리케이션의 탐지가 가능하다.
분류부(107)는 데이터베이스(101)의 그룹의 대표 시그너처를 이용하여 악성으로 판명된 애플리케이션을 분류한다. 분류 과정에서 그룹 내의 대표 시그너처 간의 유사도를 계산하고 그 유사도가 임계치를 넘는 지로 해당 애플리케이션을 분류할 수 있다. 분류에 이용되는 유사도는 3가지 이상의 특징(위험 API들, 위험 명령어들, 중요 퍼미션들)들을 이용하여 이루어져 유사도 분석의 신뢰성을 제공할 수 있다.
분류부(107)는 탐지 및 분류 결과를 스마트폰(300) 등으로 통신 인터페이스 등을 통해 출력할 수 있다.
이상 도 2와 도 3에 따른 본 발명은 그 실험 결과 악성 애플리케이션 1MB 당 탐지 및 분류에 약 72 초 소요되었다. 이는 애뮬레이터 등을 활용하는 동적 분석 기법과 비슷한 수준으로 탐지 및 분류가 가능함을 알 수 있다. 또한 악성 애플리케이션의 실행 없이 단지 애플리케이션의 데이터를 활용하여 이루어지는 정적 분석 기법을 적용한 본 발명은 다른 정적 분석 기법에 비해서 빨리 그리고 정확한 탐지 및 분류가 가능하였다.
참고로, 본 발명에서 적용된 악성 그룹들은 안드로이드 플랫폼상에서 탐지되어 왔던 악성군(진단명)을 나타내며, 예를 들어 악성 그룹들은 AdWo, Boxer, FakeApp, Smshider, FakeBattScar 등이 있고 이러한 악성 그룹들에서 평균 90% 이상의 분류 정확도를 가지는 것을 알 수 있고 정상 애플리케이션이 포함된 경우에도 98% 이상의 정확도로 악성이 아님을 탐지 및 분류할 수 있었다.
이상에서 설명한 본 발명은, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 있어 본 발명의 기술적 사상을 벗어나지 않는 범위 내에서 여러 가지 치환, 변형 및 변경이 가능하므로 전술한 실시 예 및 첨부된 도면에 의해 한정되는 것이 아니다.
100 : 탐지 서버
101 : 데이터베이스 103 : 파싱부
105 : 탐지부 107 : 분류부
200 : 다운로드 서버 300 : 스마트폰

Claims (10)

  1. (a) 애플리케이션을 파싱(parsing)하는 단계;
    (b) 상기 파싱으로부터 추출된 제작자 정보를 악성 제작자 블랙 리스트와 비교하는 단계; 및
    (c) 상기 비교의 결과에 기초하여 상기 애플리케이션이 악성 애플리케이션인지를 결정하는 단계를 포함하고,
    상기 단계 (c)는,
    상기 제작자 정보가 상기 블랙 리스트에 존재하지 않는 경우 상기 파싱을 통해 상기 애플리케이션이 지정된 위험 API를 사용하고 상기 파싱을 통해 상기 애플리케이션이 지정된 위험 명령어를 사용하는 지를 판단하는 단계;
    상기 판단에 따라 지정된 위험 API를 사용하고 지정된 위험 명령어를 사용하는 경우 악성 애플리케이션으로 결정하는 단계;
    상기 판단에 따라 지정된 위험 API를 사용하고 지정된 위험 명령어를 사용하지 않는 경우 상기 애플리케이션이 SMS 알림을 숨기는 지를 결정하는 단계;
    상기 애플리케이션이 SMS 알림을 숨기는 경우 상기 애플리케이션을 악성 애플리케이션으로 결정하는 단계;
    상기 애플리케이션이 SMS 알림을 숨기지 않는 경우 상기 파싱을 통해 추출되는 요청 퍼미션(permission)에 기초한 우도비(likelihood ratio)와 상기 파싱을 통해 추출되는 API 관련 퍼미션에 기초한 우도비를 계산하는 단계; 및
    상기 계산된 우도비가 임계치 이상인 경우에 악성 애플리케이션으로 결정하는 단계를 포함하는,
    악성 애플리케이션 탐지 방법.
  2. 제1항에 있어서,
    상기 애플리케이션은 안드로이드 플랫폼상에서 수행될 수 있는 응용 프로그램이고 상기 제작자 정보는 X.509 표준에 따른 인증서에 포함된 시리얼 넘버인,
    악성 애플리케이션 탐지 방법.
  3. 제1항에 있어서,
    상기 단계 (c)는,
    상기 제작자 정보가 상기 블랙 리스트에 존재하는 경우 상기 파싱을 통해 상기 애플리케이션이 지정된 위험 API를 사용하는 지를 판단하는 단계; 및
    상기 판단에 따라 상기 위험 API를 사용하는 경우 악성 애플리케이션으로 결정하는 단계를 더 포함하는,
    악성 애플리케이션 탐지 방법.
  4. 삭제
  5. 삭제
  6. 삭제
  7. 제1항에 있어서,
    상기 단계 (c)는, 상기 우도비를 계산하는 단계 이후에, 상기 애플리케이션이 지정된 동작을 수행하는 지를 결정하는 단계;를 더 포함하고 상기 악성 애플리케이션으로 결정하는 단계는 상기 지정된 동작을 수행하고 상기 계산된 우도비가 임계치 이상인 경우에 악성 애플리케이션으로 결정하는,
    악성 애플리케이션 탐지 방법.
  8. 삭제
  9. (a) 애플리케이션을 파싱(parsing)하는 단계;
    (b) 상기 파싱으로부터 추출된 제작자 정보를 악성 제작자 블랙 리스트와 비교하는 단계;
    (c) 상기 비교의 결과에 기초하여 상기 애플리케이션이 악성 애플리케이션인지를 결정하는 단계; 및
    (d) 상기 애플리케이션이 악성 애플리케이션으로 결정된 경우에 상기 애플리케이션을 분류하는 단계;를 포함하고,
    상기 단계 (d)는 악성 애플리케이션 그룹별 대표 시그너처(signature)와 상기 애플리케이션 사이의 유사도(Similarity)를 계산하는 단계 및 계산된 유사도가 임계치 이상인 경우에 대응하는 그룹으로 분류하는 단계를 포함하는,
    악성 애플리케이션 탐지 방법.
  10. 하드웨어와 결합되어 제1항에 따른 악성 애플리케이션 탐지 방법의 각 단계를 실행시키기 위하여 저장매체에 저장된 컴퓨터프로그램.
KR1020140120948A 2014-09-12 2014-09-12 악성 애플리케이션 탐지 방법 및 이 방법을 실행시키는 컴퓨터프로그램 KR101605783B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020140120948A KR101605783B1 (ko) 2014-09-12 2014-09-12 악성 애플리케이션 탐지 방법 및 이 방법을 실행시키는 컴퓨터프로그램

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140120948A KR101605783B1 (ko) 2014-09-12 2014-09-12 악성 애플리케이션 탐지 방법 및 이 방법을 실행시키는 컴퓨터프로그램

Publications (2)

Publication Number Publication Date
KR20160031589A KR20160031589A (ko) 2016-03-23
KR101605783B1 true KR101605783B1 (ko) 2016-03-24

Family

ID=55645006

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140120948A KR101605783B1 (ko) 2014-09-12 2014-09-12 악성 애플리케이션 탐지 방법 및 이 방법을 실행시키는 컴퓨터프로그램

Country Status (1)

Country Link
KR (1) KR101605783B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019147101A1 (ko) * 2018-01-29 2019-08-01 삼성전자 주식회사 악성 코드를 분류하는 전자 장치 및 그 동작 방법

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11058953B2 (en) 2019-07-26 2021-07-13 Roblox Corporation Detection of malicious games
CN112287343A (zh) * 2020-10-16 2021-01-29 深圳市和讯华谷信息技术有限公司 Sdk监控方法、装置、计算机设备及存储介质
KR102443938B1 (ko) * 2020-12-24 2022-09-16 숭실대학교 산학협력단 코드 시퀀스 기반 지능형 핵심코드 식별 방법, 이를 수행하기 위한 기록 매체 및 장치

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100864867B1 (ko) * 2007-12-05 2008-10-23 한국전자통신연구원 휴대용 단말기에서의 악성 파일 탐지 장치 및 방법

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100864867B1 (ko) * 2007-12-05 2008-10-23 한국전자통신연구원 휴대용 단말기에서의 악성 파일 탐지 장치 및 방법

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019147101A1 (ko) * 2018-01-29 2019-08-01 삼성전자 주식회사 악성 코드를 분류하는 전자 장치 및 그 동작 방법
US11645387B2 (en) 2018-01-29 2023-05-09 Samsung Electronics Co., Ltd. Electronic device for classifying malicious code and operation method thereof

Also Published As

Publication number Publication date
KR20160031589A (ko) 2016-03-23

Similar Documents

Publication Publication Date Title
Fan et al. Dapasa: detecting android piggybacked apps through sensitive subgraph analysis
Chakraborty et al. Ec2: Ensemble clustering and classification for predicting android malware families
Faruki et al. AndroSimilar: robust statistical feature signature for Android malware detection
Zhang et al. Semantics-aware android malware classification using weighted contextual api dependency graphs
Moonsamy et al. Mining permission patterns for contrasting clean and malicious android applications
Kang et al. Detecting and classifying android malware using static analysis along with creator information
Sanz et al. Puma: Permission usage to detect malware in android
CN109154966B (zh) 易受攻击的应用程序检测
KR101402057B1 (ko) 위험도 계산을 통한 리패키지 애플리케이션의 분석시스템 및 분석방법
US8479296B2 (en) System and method for detecting unknown malware
US20160057159A1 (en) Semantics-aware android malware classification
CN103679031B (zh) 一种文件病毒免疫的方法和装置
KR20150044490A (ko) 안드로이드 악성 애플리케이션의 탐지장치 및 탐지방법
Andow et al. A study of grayware on google play
KR101605783B1 (ko) 악성 애플리케이션 탐지 방법 및 이 방법을 실행시키는 컴퓨터프로그램
US9954874B2 (en) Detection of mutated apps and usage thereof
Gandotra et al. Integrated framework for classification of malwares
Shrivastava et al. Android application behavioural analysis for data leakage
Pavithra et al. A comparative study on detection of malware and benign on the internet using machine learning classifiers
Su et al. Anomadroid: Profiling android applications' behaviors for identifying unknown malapps
Faruki et al. Droidolytics: robust feature signature for repackaged android apps on official and third party android markets
Ndagi et al. Machine learning classification algorithms for adware in android devices: a comparative evaluation and analysis
Agrawal et al. Android malware detection using machine learning
KR101657667B1 (ko) 악성 앱 분류 장치 및 악성 앱 분류 방법
Jang et al. Function-oriented mobile malware analysis as first aid

Legal Events

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

Payment date: 20190211

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20200128

Year of fee payment: 5