KR20190102456A - 어플리케이션 클러스터링 방법 및 그 장치 - Google Patents

어플리케이션 클러스터링 방법 및 그 장치 Download PDF

Info

Publication number
KR20190102456A
KR20190102456A KR1020180022858A KR20180022858A KR20190102456A KR 20190102456 A KR20190102456 A KR 20190102456A KR 1020180022858 A KR1020180022858 A KR 1020180022858A KR 20180022858 A KR20180022858 A KR 20180022858A KR 20190102456 A KR20190102456 A KR 20190102456A
Authority
KR
South Korea
Prior art keywords
center point
cluster
reset
application
information
Prior art date
Application number
KR1020180022858A
Other languages
English (en)
Other versions
KR102073068B1 (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 KR1020180022858A priority Critical patent/KR102073068B1/ko
Publication of KR20190102456A publication Critical patent/KR20190102456A/ko
Application granted granted Critical
Publication of KR102073068B1 publication Critical patent/KR102073068B1/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/51Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/35Clustering; Classification
    • 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
    • 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/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/577Assessing vulnerabilities and evaluating computer system security

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Data Mining & Analysis (AREA)
  • General Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Computing Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

어플리케이션을 클러스터링하는 방법 및 장치가 제공 된다. 본 발명의 일 실시예에 따른 어플리케이션 클러스터링 방법은, 어플리케이션의 특성 정보를 추출하는 특성 정보 추출 단계와, 상기 특성 정보를 특성 벡터로 맵핑(mapping)하는 좌표 설정 단계와, 상기 특성 벡터에 대해 클러스터 수량에 따라 중심점을 설정하는 중심점 설정 단계와, 상기 중심점으로부터의 거리를 기준으로 상기 특성 벡터를 포함하는 데이터에 대한 클러스터를 설정하는 클러스터 설정 단계와, 상기 클러스터에 포함된 데이터의 평균값을 이용하여 중심점을 재설정하는 중심점 재설정 단계와, 상기 중심점 재설정 단계를 수행한 결과, 상기 재설정된 중심점이 상기 재설정되기 이전의 중심점과 다른 경우, 상기 재설정된 중심점으로부터의 거리를 기준으로 상기 클러스터를 재설정하는 클러스터 재설정 단계를 포함한다.

Description

어플리케이션 클러스터링 방법 및 그 장치{METHOD FOR CLUSTERING APPLICATION AND APPARATUS THEREOF}
본 발명은 어플리케이션을 클러스터링하는 방법 및 장치에 관한 것이다. 보다 자세하게는, 정상 어플리케이션과 악성 어플리케이션을 유사한 것들끼리 클러스터링하여 분석하기 위한 방법 및 장치에 관한 것이다.
본 영역의 기재는 본 발명의 여러 양태들에 대한 보다 나은 이해를 용이하게 하기 위해 배경 지식을 제공하기 위한 것이며, 종래 기술의 인정으로 간주되지 않아야 한다.
네트워크 환경과 서비스의 발달로 네트워크를 통해 수많은 어플리케이션들이 배포되고 있다. 예를 들어, Android™, iOS™ 등의 운영체제에서는 개발자들이 플랫폼과 서비스 인프라를 기반으로 서비스를 개발하고 공개하여 사람들이 이용할 수 있도록 하는 어플리케이션 마켓을 통해 어플리케이션을 배포한다. 또는 웹 페이지 등을 통해 어플리케이션 설치 파일을 전송함으로써 어플리케이션이 배포되기도 한다. 수 많은 어플리케이션들이 네트워크를 통해 배포되면서, 사용자에게 피해를 입히는 악성 어플리케이션이 배포되기도 한다. 유사한 성질을 가지는 악성 어플리케이션은 서로 유사한 특성들을 가지게 되며, 여러 가지 변종 악성 코드를 가진다. 유사한 악성 어플리케이션에 대한 대응방안이나 위험도 등은 서로 유사할 수 있으므로, 유사한 어플리케이션들끼리 묶어서 분석할 필요가 있다. 따라서, 어플리케이션들의 특성을 파악하여 클러스터링하기 위한 방법 및 장치가 필요하다.
Android™ 운영체제 시스템 상에 어플리케이션 소프트웨어를 배포 및 설치하기 위해 APK(Android Application PacKage)라 불리는 파일 포맷이 이용된다. 즉, 어플리케이션 소프트웨어가 설치 및 실행파일인 APK 파일을 통해서 배포될 수 있다. APK 파일을 작성하기 위해, 프로그램이 먼저 중간 언어로 컴파일된 다음, 그 부분들이 압축된 아카이브 파일(ZIP 포맷)으로 패키징된다. 아카이브 파일은 단일의 DEX(Dalvik EXecutable code) 파일(classes.dex), 여러 리소스들(예를 들어, 이미지 파일들) 및 APK 파일의 매니페스트에 전체 프로그램 코드를 포함한다. 아카이브 파일은 2개의 추가 파일들: CERT.SF 및 CERT.RSA를 포함한다. CERT.SF는 모든 다른 아카이브 파일들의 암호 해시들을 포함하고; CERT.RSA는 서명 검증을 위해 이용되는 공개 키를 포함한다. CERT.SF 만이 RSA 개인 키로 서명된다. CERT.SF에 대한 RSA 서명은 설치 동안에 APK 파일의 전체 컨텐츠의 검증을 실행한다. 실제로, CERT.SF 파일에 언급된 모든 파일들은 CERT.SF가 그들의 해시들을 포함하여 간접적으로 서명된다. 파일 다이제스트가 CERT.SF 파일에서의 해시와 매칭하지 않음을 소프트웨어가 검출하므로, 설치전에 임의의 파일을 변경하는 것은 오류를 야기시킨다.
DEX 파일 헤더는 또한 CEX 파일의 컨텐츠에 대한 글로벌 체크섬 등을 포함한다. 어플리케이션의 첫번째 실행시, 시스템은 실행전 시간에만 DEX 해석된 바이트 코드를 ODEX(Optimized DEX)로 불리는 최적화된 머신 명령들 시퀀스로 수정하는 옵티마이저를 이용한다. 옵티마이저는 또한 체크섬을 업데이트한다. 이후, ODEX 파일은 장래의 이용을 위해 파일 시스템 내에서의 특정 레포지토리에 저장될 수 있다.
본 발명이 해결하고자 하는 기술적 과제는, 어플리케이션을 유사한 어플리케이션끼리 자동적으로 클러스터링할 수 있는 방법 및 장치를 제공하는 것이다.
본 발명의 기술적 과제들은 이상에서 언급한 기술적 과제들로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 본 발명의 기술분야에서의 통상의 기술자에게 명확하게 이해 될 수 있을 것이다.
상기 기술적 과제를 해결하기 위한, 본 발명의 몇몇 실시예에 따른 어플리케이션 클러스터링 방법은, 어플리케이션의 특성 정보를 추출하는 특성 정보 추출 단계; 상기 특성 정보를 특성 벡터로 맵핑(mapping)하는 좌표 설정 단계; 상기 특성 벡터에 대해 클러스터 수량에 따라 중심점을 설정하는 중심점 설정 단계; 상기 중심점으로부터의 거리를 기준으로 상기 특성 벡터를 포함하는 데이터에 대한 클러스터를 설정하는 클러스터 설정 단계; 상기 클러스터에 포함된 데이터의 평균값을 이용하여 중심점을 재설정하는 중심점 재설정 단계; 상기 중심점 재설정 단계를 수행한 결과, 상기 재설정된 중심점이 상기 재설정되기 이전의 중심점과 다른 경우, 상기 재설정된 중심점으로부터의 거리를 기준으로 상기 클러스터를 재설정하는 클러스터 재설정 단계;를 포함하고, 상기 중심점 재설정 단계는 상기 클러스터 재설정 단계에서 상기 클러스터가 재설정된 경우 재설정된 클러스터를 기초로 중심점을 다시 재설정하는 것을 특징으로 할 수 있다.
또한, 다른 몇몇 실시 예에 따르면, 상기 특성 정보 추출 단계는 상기 어플리케이션에 대한 APK(Android application PacKage) 파일을 획득하는 단계와, 상기 APK 파일로부터 DEX(Dalvik Executable Format) 파일을 획득하는 단계와, 상기 DEX 파일에 미리 정해진 특성 리스트에 포함된 특성이 포함되어 있는지 여부를 확인하는 단계와, 상기 확인 결과에 따라서 상기 특성 정보를 생성하는 단계를 포함할 수 있다.
또한, 또 다른 몇몇 실시 예에 따르면, 상기 특성 정보는 API(Application Programming Interface) 특성 정보 및 문자열 특성 정보를 포함하고, 상기 미리 정해진 특성 리스트는 미리 정해진 문자열 및 미리 정해진 조작 부호(OP code)를 포함하며, 상기 확인하는 단계는 상기 DEX 파일의 문자열 테이블에 대해 미리 정해진 문자열의 포함 여부를 확인하는 단계와, 상기 DEX 파일을 컴파일한 어셈블리 코드에 포함된 조작 부호(OP code)를 확인하는 단계를 포함하고, 상기 특성 정보를 생성하는 단계는 상기 미리 정해진 문자열의 포함 여부에 따라서 상기 문자열 특성 정보를 생성하고, 상기 조작 부호의 포함 여부에 따라서 상기 API 특성 정보를 생성할 수 있다.
또한, 또 다른 몇몇 실시 예에 따르면, 상기 조작 부호를 확인하는 단계는, 상기 DEX 파일을 컴파일하여 상기 어셈블리 코드를 획득하는 단계와, 상기 어셈블리 코드 내에서 호출 명령어의 위치를 확인하는 단계와, 상기 호출 명령어의 위치를 이용하여 상기 조작 부호를 확인하는 단계를 포함할 수 있다.
또한, 또 다른 몇몇 실시 예에 따르면, 상기 중심점 재설정 단계를 수행한 결과, 상기 재설정된 중심점이 상기 재설정되기 이전의 중심점과 동일한 경우, 기준 특성 벡터와 상기 특성 벡터 사이의 거리를 산출하는 단계; 및 상기 기준 특성 벡터가 속하는 클러스터에 포함된 데이터로부터 상기 산출된 거리를 기준으로 선택된 유사 특성 벡터에 대한 정보를 디스플레이하는 단계를 더 포함할 수 있다.
또한, 또 다른 몇몇 실시 예에 따르면, 상기 유사 특성 벡터는 상기 기준 특성 벡터로부터의 거리가 짧은 순서대로 선택된 것을 특징으로 할 수 있다.
또한, 또 다른 몇몇 실시 예에 따르면, 상기 유사 특성 벡터에 대한 정보는 상기 유사 특성 벡터에 상응하는 유사 어플리케이션의 정보인 것을 특징으로 할 수 있다.
또한, 또 다른 몇몇 실시 예에 따르면, 상기 유사 어플리케이션의 정보는 어플리케이션 패키지 정보, 어플리케이션 위험도 정보 및 바이러스 검사 카운트 정보를 포함할 수 있다.
또한, 또 다른 몇몇 실시 예에 따르면, 어플리케이션 클러스터링 방법은 상기 중심점 재설정 단계를 수행한 결과, 상기 재설정된 중심점이 상기 재설정되기 이전의 중심점과 동일한 경우, 상기 특성 벡터가 속하는 클러스터에 대한 정보를 상기 특성 벡터에 대한 라벨(label)으로 부여하는 단계 및 상기 라벨이 부여된 특성 벡터에 대한 기계 학습을 수행하여 분류되지 않은 어플리케이션의 특성 정보를 입력 받으면 상기 분류되지 않은 어플리케이션이 속할 것으로 예측되는 클러스터 정보를 출력하는 예측 모델을 생성하는 단계를 더 포함할 수 있다.
상기 기술적 과제를 해결하기 위한, 본 발명의 몇몇 실시예에 따른 컴퓨팅 장치는, 프로세서; 및 상기 프로세서에 의하여 실행되는 복수의 인스트럭션을 저장하는 메모리를 포함하되, 상기 복수의 인스트럭션은, 상기 특성 정보를 특성 벡터로 맵핑(mapping)하는 좌표 설정 인스트럭션; 상기 특성 벡터에 대해 클러스터 수량에 따라 중심점을 설정하는 중심점 설정 인스트럭션; 상기 중심점으로부터의 거리를 기준으로 상기 특성 벡터를 포함하는 데이터에 대한 클러스터를 설정하는 클러스터 설정 인스트럭션; 상기 클러스터에 포함된 데이터의 평균값을 이용하여 중심점을 재설정하는 중심점 재설정 인스트럭션; 상기 중심점 재설정 인스트럭션이 실행된 이후 실행되며, 상기 재설정된 중심점이 상기 재설정되기 이전의 중심점과 다른 경우, 상기 재설정된 중심점으로부터의 거리를 기준으로 상기 클러스터를 재설정하는 클러스터 재설정 인스트럭션;을 포함하고, 상기 프로세서는 상기 클러스터 재설정 인스트럭션에 의해 상기 클러스터가 재설정된 경우 상기 중심점 재설정 인스트럭션을 재실행하여 재설정된 클러스터를 기초로 중심점을 다시 재설정할 수 있다.
상기 기술적 과제를 해결하기 위한, 본 발명의 몇몇 실시예에 따른 비일시적(non-transitory) 컴퓨터 판독 가능한 매체에 기록된 컴퓨터 프로그램은, 상기 컴퓨터 프로그램의 명령어들이 컴퓨팅 장치의 프로세서에 의해 실행되는 경우에, 어플리케이션의 특성 정보를 추출하는 특성 정보 추출 단계; 상기 특성 정보를 특성 벡터로 맵핑(mapping)하는 좌표 설정 단계; 상기 특성 벡터에 대해 클러스터 수량에 따라 중심점을 설정하는 중심점 설정 단계; 상기 중심점으로부터의 거리를 기준으로 상기 특성 벡터를 포함하는 데이터에 대한 클러스터를 설정하는 클러스터 설정 단계; 상기 클러스터에 포함된 데이터의 평균값을 이용하여 중심점을 재설정하는 중심점 재설정 단계; 상기 중심점 재설정 단계를 수행한 결과, 상기 재설정된 중심점이 상기 재설정되기 이전의 중심점과 다른 경우, 상기 재설정된 중심점으로부터의 거리를 기준으로 상기 클러스터를 재설정하는 클러스터 재설정 단계;가 실행되며, 상기 중심점 재설정 단계는 상기 클러스터 재설정 단계에서 상기 클러스터가 재설정된 경우 재설정된 클러스터를 기초로 중심점을 다시 재설정할 수 있다.
도 1은 몇몇 실시 예에 따라 어플리케이션을 클러스터링하는 프로세스를 도시한 순서도이다.
도 2는 몇몇 실시 예에 따라 어플리케이션의 특성 정보를 추출하는 프로세스를 도시한 순서도이다.
도 3은 몇몇 실시 예에 따라 특성 정보를 추출하는 방법을 설명하기 위한 예시를 도시한 도면이다.
도 4는 몇몇 실시 예에 따라 API 특성 정보를 추출하는 방법을 설명하기 위한 예시를 도시한 도면이다.
도 5는 몇몇 실시 예에 따라 추출되는 특성 정보의 예시를 도시한 도면이다.
도 6 내지 도 9는 몇몇 실시 예에 따라 어플리케이션을 클러스터링하는 과정을 도식화한 도면이다.
도 10은 몇몇 실시 예에 따라 컴퓨팅장치가 출력하는 유사 어플리케이션의 정보의 예시를 도시한 도면이다.
도 11은 몇몇 실시 예에 따라 클러스터링된 어플리케이션의 정보를 이용하여 기계 학습을 수행하는 프로세스를 도시한 도면이다.
도 12는 몇몇 실시 예에 따른 컴퓨팅 장치의 구조를 도시한 도면이다.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예들을 상세히 설명한다. 본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시 예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 게시되는 실시 예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시 예들은 본 발명의 게시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
다른 정의가 없다면, 본 명세서에서 사용되는 모든 용어(기술 및 과학적 용어를 포함)는 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 공통적으로 이해될 수 있는 의미로 사용될 수 있다. 또 일반적으로 사용되는 사전에 정의되어 있는 용어들은 명백하게 특별히 정의되어 있지 않는 한 이상적으로 또는 과도하게 해석되지 않는다. 본 명세서에서 사용된 용어는 실시예들을 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다.
이하, 도면들을 참조하여 본 발명의 몇몇 실시예들을 설명한다. 이하에서 설명되는 몇몇 실시예들은 프로세서 및 메모리를 포함하고, 메모리에 저장된 복수의 인스트럭션을 프로세서가 실행하는 컴퓨팅 장치에 의해 수행될 수 있다. 다만, 이에 한정되지 아니한다.
도 1은 몇몇 실시 예에 따라 어플리케이션을 클러스터링하는 프로세스를 도시한 순서도이다.
먼저, 단계 S110에서 컴퓨팅 장치는 어플리케이션의 특성 정보를 추출하는 특성 정보 추출(Feature Extraction) 단계를 수행할 수 있다. 여기서, 특성 정보는 미리 정해진 기준에 따라서 어플리케이션의 특성을 나타내는 정보를 의미한다. 예를 들어, 특성 정보는 어플리케이션이 특정 문자열(String)을 포함하는지 여부를 나타내는 문자열 특성 정보 및 어플리케이션이 특정 API(Application Programming Interface)를 포함하는지 여부를 나타내는 API 특성 정보 중 적어도 하나를 포함할 수 있다. 몇몇 실시 예에 따르면, 컴퓨팅 장치는 특성 정보를 추출하기 위해 도 2 내지 도 5 및 그에 관련된 기재에 의해 설명되는 프로세스를 수행할 수 있다.
이후, 단계 S120에서 컴퓨팅 장치는 추출된 특성 정보를 특성 벡터로 맵핑(mapping)하는 좌표 설정 단계를 수행할 수 있다. 여기서, 특성 벡터는 클러스터링을 수행하기 위한 공간 좌표계 상의 좌표에 상응하며, 특성 정보의 값을 지시한다. 공간 좌표계는, 예를 들어, 거리 공간인 유클리드 공간(Euclidean Space)일 수 있다.
이후, 단계 S130에서 컴퓨팅 장치는 특성 벡터가 설정된 공간 좌표계 상에 중심점(centroid)을 설정할 수 있다. 여기서, 컴퓨팅 장치는 중심점의 위치를 무작위로 결정할 수 있다. 또는 분류하고자 하는 클러스터에 속하는 샘플 어플리케이션의 특성 정보에 상응하는 좌표를 중심점으로 설정할 수도 있다. 예를 들어, 컴퓨팅 장치는 랜섬 웨어에 속하는 어플리케이션들을 나타내는 클러스터에 대한 중심점을 설정하기 위해, 미리 주어진 랜섬 웨어의 특성 정보에 상응하는 좌표를 중심점으로 설정할 수 있다. 초기 중심점의 위치를 설정하는 방법은 실시 예에 따라 변경될 수 있다.
또한, 컴퓨팅 장치는 미리 정해진 클러스터의 수량 값 k개의 중심점을 설정할 수 있다. 도 6을 참조하면, k=3인 경우에 특성 벡터가 설정된 공간 좌표계(600) 상에 중심점들(611-1, 612-1, 613-1)이 설정된 예시가 도시되어 있다.
이후, 단계 S140에서 컴퓨팅 장치는 설정된 중심점을 기준으로 클러스터를 설정할 수 있다. 컴퓨팅 장치는 각 특성 벡터들을 가장 가까운 거리에 위치한 중심점과 매칭함으로써 클러스터를 설정할 수 있다. 여기서, 특성 벡터와 중심점 사이의 거리는 유클리드 거리(Euclidean Distance)일 수 있다. 몇몇 실시 예에 따르면, 컴퓨팅 장치는 하기 수학식 1에 기초하여 클러스터를 설정할 수도 있다.
Figure pat00001
수학식 1에서,
Figure pat00002
는 클러스터에 속하는 데이터들의 집합, 즉 클러스터링된 특성 벡터(어플리케이션)의 집합을 의미한다.
Figure pat00003
는 i번째 클러스터의 중심점을 의미한다. x는 데이터, 즉 특성 벡터를 의미한다. t는 회차를 의미한다. 여기서, 회차란 클러스터를 설정한 횟수값 또는 중심점을 설정한 횟수값을 의미한다. 측, 최초 클러스터를 설정할 경우, t는 1이 된다.
도 7을 참조하면, 특성 벡터가 설정된 공간 좌표계(600) 상에서 중심점들(611-1, 612-1, 613-1)을 기준으로 설정된 클러스터들(711-1, 711-2, 711-3)의 예시가 도시되어 있다. 도 7에 도시된 바와 같이, 컴퓨팅 장치는 특성 벡터들이 설정된 중심점들(611-1, 612-1, 613-1) 중 가장 가까운 하나에 상응하는 클러스터에 속하도록 클러스터들(711-1, 711-2, 711-3)을 설정할 수 있다.
이후, 단계 S150에서 컴퓨팅 장치는 단계 S140에서 설정된 클러스터의 중심점을 재설정할 수 있다. 컴퓨팅 장치는 클러스터의 중심점을 재설정하기 위하여, 클러스터에 속한 특성 벡터들의 평균값을 산출할 수 있다. 몇몇 실시 예에 따르면, 컴퓨팅 장치는 하기 수학식 2를 이용하여 중심점을 재설정할 수 있다.
Figure pat00004
수학식 2에서,
Figure pat00005
는 클러스터에 속하는 데이터들의 집합, 즉 클러스터링된 특성 벡터(어플리케이션)의 집합을 의미한다.
Figure pat00006
는 i번째 클러스터의 중심점을 의미한다. x는 데이터, 즉 특성 벡터를 의미한다. t는 회차를 의미한다.
도 8을 참조하면, 특성 벡터가 설정된 공간 좌표계(600) 상에서 재설정된 중심점들(611-2, 612-2, 613-2)의 예시가 도시되어 있다. 컴퓨팅 장치는 각 클러스터들(도 7의 711-1, 711-2, 711-3)에 속하는 특성 벡터들의 평균값에 상응하여 재설정된 중심점들(611-2, 612-2, 613-2)을 결정할 수 있다.
단계 S150에서 중심점이 재설정된 이후, 단계 S160에서 컴퓨팅 장치는 단계 S150에서 중심점을 재설정한 결과, 변경된 중심점이 있는지 여부를 판단할 수 있다. 예를 들어, 컴퓨팅 장치는 수학식 1 및 수학식 2의 μ_i^t와 μ_i^(t+1)가 동일한지 여부를 판단할 수 있다.
재설정된 중심점이 재설정되기 이전의 중심점과 다른 경우, 즉, 변경된 중심점이 있는 경우, 컴퓨팅 장치는 단계 S170에서 재설정된 중심점으로부터 각 특성 벡터들 사이의 거리를 기준으로 클러스터를 재설정할 수 있다. 즉, 컴퓨팅 장치는 각 특성 벡터들이 가장 가까운 중심점에 상응하는 클러스터에 속하도록 클러스터를 설정할 수 있다. 단계 S170은 단계 S140과 동일하거나 유사한 프로세스를 통해 수행될 수 있다. 컴퓨팅 장치는 단계 S170 단계에서 재설정된 클러스터를 기준으로 단계 S150을 다시 수행할 수 있다.
재설정된 중심점이 재설정되기 이전의 중심점과 같은 경우, 즉, 변경된 중심점이 없는 경우, 컴퓨팅 장치는 단계 S180에서 기준 특성 벡터로부터 기준 특성 벡터가 속하는 클러스터에 속하는 특성 벡터 사이의 거리를 산출할 수 있다. 여기서, 기준 특성 벡터는 유사 어플리케이션을 선택하기 위한 기준이 되는 기준 어플리케이션의 특성 벡터를 의미한다. 여기서, 기준 어플리케이션은 그 유형이 알려진 어플리케이션 중에서 선택될 수 있다. 예를 들어, 기준 어플리케이션은 정상 어플리케이션인지, 랜섬웨어(ransomware)인지, 애드웨어(adware)인지, 스파이웨어(spyware)인지, 봇넷(botnet) 악성코드인지, 스미싱(smishing) 악성코드인지, 또는 RAT(Remote Access Trojan) 어플리케이션인지 여부가 알려진 어플리케이션일 수 있다. 또한, 실시 예에 따라서 기준 어플리케이션은 공간 좌표계 상에 설정된 특성 벡터들 중에서 선택될 수도 있고, 별도의 벡터로 설정될 수도 있다.
이후, 단계 S190에서 컴퓨팅 장치는 기준 특성 벡터로부터의 거리를 기준으로 기준 특성 벡터와 동일한 클러스터에 포함된 특성 벡터로부터 유사 특성 벡터를 선택하고, 그 유사 특성 벡터에 대한 정보를 디스플레이할 수 있다. 즉, 그 유사 특성 벡터에 상응하는 유사 어플리케이션에 대한 정보를 디스플레이할 수 있다. 컴퓨팅 장치는 유사 특성 벡터에 대한 정보를 디스플레이함으로써, 사용자에게 악성 어플리케이션의 변종 악성 어플리케이션에 대한 정보를 제공할 수 있다.
도 10을 참조하면, 유사 특성 벡터에 대한 정보의 예시가 도시되어 있다. 몇몇 실시 예에 따르면, 유사 특성 벡터(1000)는 어플리케이션 번호(1010), 패키지 정보(1020), 위험도(1030), 바이러스 검사 정보(1040), 어플리케이션 분석 링크(1050), 다운로드 링크(1060)를 포함할 수 있다. 어플리케이션 번호(1010)는 어플리케이션에 대해 부여된 순번을 의미한다. 패키지 정보(1020)는 어플리케이션 패키지를 식별하는 정보 내지 어플리케이션 패키지를 지시하는 정보를 의미한다. 위험도(1030)는 어플리케이션이 악성 어플리케이션일 가능성을 나타내는 정보일 수 있다. 위험도(1030)는 기준 특성 벡터로부터 유사 특성 벡터 사이의 거리에 비례하여 산출될 수도 있으나, 이에 한정되지 아니한다. 바이러스 검사 정보(1040)는 유사 특성 벡터에 상응하는 유사 어플리케이션을 검사한 결과 악성 어플리케이션으로 판단한 백신의 수에 대한 정보일 수 있다. 예를 들어, 50개의 백신 프로그램으로 유사 어플리케이션을 검사한 결과 33개의 백신 프로그램이 악성 어플리케이션으로 진단한 경우, 바이러스 검사 정보(1040)는 33/50일 수 있다. 어플리케이션 분석 링크(1050)는 사용자에 의해 선택되면 해당 유사 어플리케이션에 대한 분석을 실행하도록 하는 링크일 수 있다. 다운로드 링크(1060)는 사용자에 의해 선택되면 해당 유사 어플리케이션을 다운로드하도록 하는 링크일 수 있다.
몇몇 실시 예에 따르면, 컴퓨팅 장치는 어플리케이션의 특성 정보를 추출하고 클러스터링함으로써, 사용자가 분석을 진행할 어플리케이션을 쉽게 파악할 수 있도록 할 수 있다.
도 2는 몇몇 실시 예에 따라 어플리케이션의 특성 정보를 추출하는 프로세스를 도시한 순서도이다. 특히, 도 2는 어플리케이션이 Android™ 운영체제 시스템 상에서 배포 및 실행되는 어플리케이션인 경우에 특성 정보를 추출하는 프로세스에 대한 것이다.
먼저, 단계 S210에서, 컴퓨팅 장치는 어플리케이션의 특성 정보를 추출하기 위해 어플리케이션의 설치 및 실행을 위한 APK 파일에 포함된 DEX 파일에 접근할 수 있다. DEX 파일은 헤더, 데이터, 문자열(string) 테이블, 타입(type) 테이블, 프로토(proto) 테이블, 필드(field) 테이블, 메소드(method) 테이블, 및 클래스(class) 테이블 등의 정보를 포함할 수 있다.
이후, 단계 S221에서, 컴퓨팅 장치는 특성 리스트에 포함된 문자열이 DEX 파일의 문자열 테이블에 포함되어 있는지 여부를 확인할 수 있다. 컴퓨팅 장치는 DEX 파일의 문자열 테이블에 접근하기 위하여 DEX 파일의 헤더를 참조할 수 있다. 이후, 단계 S222에서 컴퓨팅 장치는 미리 정해진 특성 리스트에 포함된 문자열이 문자열 테이블에 포함되어 있는지 여부에 따라서 문자열 특성 정보를 생성할 수 있다. 예를 들어, 특성 리스트가 "NPKI, shutdown"이며, 문자열 테이블에 "NPKI"라는 문자열이 포함되어 있고, "shutdown"이라는 문자열이 포함되어 있지 않은 경우, 컴퓨팅 장치는 "1, 0"을 특성 정보로서 생성할 수 있다.
또한, 컴퓨팅 장치는 DEX 파일의 데이터에 직접 접근하여 API 특성 정보를 생성할 수 있다. API 특성 정보를 생성하기 위해, 컴퓨팅 장치는 단계 S231에서 DEX 파일을 컴파일할 수 있다. 이후, 단계 S232에서 컴퓨팅 장치는 DEX 파일을 컴파일하여 얻어진 어셈블리 코드에 포함된 조작 부호(OP code)를 확인할 수 있다. 즉, APK 파일에서 사용하는 메소드(method)에 대한 정보를 추출할 수 있다. 여기서, 어셈블리 코드는 중간 언어(intermediate language)로 구성된 코드를 의미한다. 컴퓨팅 장치는 미리 정해진 특성 리스트에 포함된 조작 부호가 어셈블리 코드에 포함되어 있는지 여부에 따라서, 단계 S233에서 API 특성 정보를 생성할 수 있다. 예를 들어, 특성 리스트가 "delete, query, get, getColumbIndex"이며, DEX 파일이 delete, query, get를 조작 부호로 포함하고, getColumbIndex를 포함하지 않는 경우, 컴퓨팅 장치는 API 특성 정보로서 "1, 1, 1, 0"을 생성할 수 있다.
이후, 단계 S240에서 컴퓨팅 장치는 문자열 특성 정보와 API 특성 정보를 포함하는 특성 정보를 획득할 수 있다.
도 3은 몇몇 실시 예에 따라 특성 정보를 추출하는 방법을 설명하기 위한 예시를 도시한 도면이다.
도 3을 참조하면, APK 파일(300)은 DEX 파일(310)을 포함할 수 있다. 컴퓨팅 장치는 DEX 파일(310)의 헤더(311)를 참조하여 문자열 테이블(312)의 위치를 확인할 수 있다. 컴퓨팅 장치는 헤더(311)를 통해 문자열 테이블(312)에 접근하여 문자열 테이블(312)에 포함된 문자열들을 확인할 수 있다. 컴퓨팅 장치는 문자열 테이블(312)에 특성 리스트에 포함된 문자열이 포함되어 있는지 여부에 따라서 문자열 특성 정보(321)를 추출할 수 있다.
또한, 컴퓨팅 장치는 메소드 테이블(313)에 접근하지 않고 DEX 파일의 데이터(314)에 직접 접근하여 API 특성(322)을 추출할 수 있다. 컴퓨팅 장치는 DEX 파일의 데이터에 포함되어 있는 조작 부호(330)를 확인할 수 있다. 컴퓨팅 장치는 확인된 조작 부호(330) 중에서 특성 리스트에 포함된 조작 부호가 있는지 여부에 따라서 API 특성 정보(322)를 생성할 수 있다.
도 4는 몇몇 실시 예에 따라 API 특성 정보를 추출하는 방법을 설명하기 위한 예시를 도시한 도면이다.
도 4를 참조하면, 컴퓨팅 장치는 데이터(314)를 컴파일하여 어셈블리 코드(400)를 획득할 수 있다. 이후, 컴퓨팅 장치는 어셈블리 코드(400) 내에서 호출 명령어(410)(예를 들어, invoke 등)의 위치를 탐색할 수 있다. 컴퓨팅 장치는 호출 명령어(410) 이후에 위치한 코드를 조작 부호(420)로서 획득할 수 있다.
몇몇 실시 예에 따르면, 컴퓨팅 장치는 획득된 조작 부호(420)에 상응하는 조작 부호가 특성 리스트에 포함되어 있는 경우, 해당 조작 부호에 상응하는 특성의 값을 1로 결정할 수 있다. 반대로, 컴퓨팅 장치는 특성 리스트에 포함된 특성에 상응하는 조작 부호가 어셈블리 코드(400)에 포함되어 있지 않는 경우, 해당 조작 부호에 상응하는 특성의 값을 0으로 결정할 수 있다.
도 5는 몇몇 실시 예에 따라 추출되는 특성 정보의 예시를 도시한 도면이다.
도 5를 참조하면, 컴퓨팅 장치는 미리 정해진 특성 리스트(510)에 포함된 특성을 APK 파일이 포함하는 경우(예를 들어, DEX 파일 내에 미리 정해진 문자열이나 조작 부호가 포함된 경우), 그 특성에 상응하는 특성 값을 1로 가지는 특성 정보(520)를 추출할 수 있다. 반대로, 미리 정해진 특성 리스트(510)에 포함된 특성을 APK 파일이 포함하지 않는 경우, 특성 정보(520)는 그 특성에 상응하는 특성 값을 0으로 가질 수 있다.
또한, 특성 정보(520)는 그 특성 정보를 추출한 어플리케이션을 식별하기 위하여, 분석 대상 어플리케이션 내지 분석 대상 APK 파일의 해시 값과 매칭하여 저장될 수 있다.
도 11은 몇몇 실시 예에 따라 클러스터링된 어플리케이션의 정보를 이용하여 기계 학습을 수행하는 프로세스를 도시한 도면이다.
단계 S150이 수행된 이후 중심점이 변경되지 않은 경우, 컴퓨팅 장치는 특성 벡터가 속하는 클러스터에 대한 정보를 그 특성 벡터(즉, 어플리케이션의 특성 정보)에 대한 라벨(label)으로 부여할 수 있다(S1110).
이후 단계 S1120에서, 컴퓨팅 장치는 라벨이 부여된 특성 정보에 대한 기계 학습을 수행하여 예측 모델을 생성할 수 있다. 여기서, 예측 모델은 분류되지 않은 어플리케이션의 특성 정보를 입력 받으면 그 어플리케이션이 속할 것으로 예측되는 클러스터 정보를 출력하는 것을 특징으로 할 수 있다. 단계 S1120에서, 컴퓨팅 장치는 의사결정 나무(Decision Tree), 랜덤 포레스트(Random Forest), SVM(Support Vector Machine) 또는 신경망(Neural Network) 등의 학습 모델을 이용하여 특성 정보를 학습할 수 있으나, 이에 한정되지 아니한다.
몇몇 실시 예에 따라 클러스터링된 정보를 라벨로 가지는 데이터를 기초로 기계 학습을 수행함으로써, 컴퓨팅 장치는 보다 세분화된 라벨을 가지는 트레이닝 데이터를 이용하여 예측 모델을 생성할 수 있다. 따라서, 컴퓨팅 장치는 보다 정확도가 높은 예측 모델을 생성할 수 있다.
도 12는 몇몇 실시 예에 따른 컴퓨팅 장치의 구조를 도시한 도면이다.
몇몇 실시 예에 따른 컴퓨팅 장치는 유사도 분석 장치(10) 및 트레이닝 장치(20)를 포함할 수 있다. 또는, 다른 실시 예에 따르면 유사도 분석 장치(10) 및 트레이닝 장치(20)는 별개의 컴퓨팅 장치로 구성될 수도 있다.
유사도 분석 장치(10)는 특성 추출기(11), 유사도 분류기(12) 및 디스플레이(13)를 포함할 수 있다.
특성 추출기(11)는 어플리케이션의 특성 정보를 추출하고, 추출된 특성 정보를 유사도 분류기(12)로 출력할 수 있다. 유사도 분류기(12)는 특성 추출기(11)로부터 입력된 특성 정보에 기초하여 어플리케이션을 클러스터링할 수 있다. 이후, 유사도 분류기(12)는 클러스터링된 어플리케이션으로부터 선택된 유사 어플리케이션 정보를 디스플레이(13)를 통해 디스플레이할 수 있다.
또한, 유사도 분류기(12)는 어플리케이션이 속하는 클러스터에 대한 정보를 특성 정보의 라벨로 부여하여 그 특성 정보를 트레이닝 장치(20)의 학습 모델(21)에 제공할 수 있다. 트레이닝 장치(20)는 제공 받은 특성 정보를 학습 모델(21)에 적용하여 어플리케이션을 분류하는 악성 어플리케이션 예측 모델(22)을 생성할 수 있다.
지금까지 설명된 본 발명의 실시예에 따른 방법들은 컴퓨터가 읽을 수 있는 코드로 구현된 컴퓨터프로그램의 실행에 의하여 수행될 수 있다. 상기 컴퓨터프로그램은 인터넷 등의 네트워크를 통하여 제1 컴퓨팅 장치로부터 제2 컴퓨팅 장치에 전송되어 상기 제2 컴퓨팅 장치에 설치될 수 있고, 이로써 상기 제2 컴퓨팅 장치에서 사용될 수 있다. 상기 제1 컴퓨팅 장치 및 상기 제2 컴퓨팅 장치는, 서버 장치, 클라우드 서비스를 위한 서버 풀에 속한 물리 서버, 데스크탑 피씨와 같은 고정식 컴퓨팅 장치를 모두 포함한다.
상기 컴퓨터프로그램은 DVD-ROM, 플래시 메모리 장치 등의 기록매체에 저장된 것일 수도 있다.
이상 첨부된 도면을 참조하여 본 발명의 실시예들을 설명하였지만, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적인 것이 아닌 것으로 이해해야만 한다.

Claims (12)

  1. 어플리케이션의 특성 정보를 추출하는 특성 정보 추출 단계;
    상기 특성 정보를 특성 벡터로 맵핑(mapping)하는 좌표 설정 단계;
    상기 특성 벡터에 대해 클러스터 수량에 따라 중심점을 설정하는 중심점 설정 단계;
    상기 중심점으로부터의 거리를 기준으로 상기 특성 벡터를 포함하는 데이터에 대한 클러스터를 설정하는 클러스터 설정 단계;
    상기 클러스터에 포함된 데이터의 평균값을 이용하여 중심점을 재설정하는 중심점 재설정 단계;
    상기 중심점 재설정 단계를 수행한 결과, 상기 재설정된 중심점이 상기 재설정되기 이전의 중심점과 다른 경우, 상기 재설정된 중심점으로부터의 거리를 기준으로 상기 클러스터를 재설정하는 클러스터 재설정 단계;를 포함하고,
    상기 중심점 재설정 단계는,
    상기 클러스터 재설정 단계에서 상기 클러스터가 재설정된 경우 재설정된 클러스터를 기초로 중심점을 다시 재설정하는,
    어플리케이션 클러스터링 방법.
  2. 제1항에 있어서,
    상기 특성 정보 추출 단계는,
    상기 어플리케이션에 대한 APK(Android application PacKage) 파일을 획득하는 단계와,
    상기 APK 파일로부터 DEX(Dalvik Executable Format) 파일을 획득하는 단계와,
    상기 DEX 파일에 미리 정해진 특성 리스트에 포함된 특성이 포함되어 있는지 여부를 확인하는 단계와,
    상기 확인 결과에 따라서 상기 특성 정보를 생성하는 단계를 포함하는,
    어플리케이션 클러스터링 방법.
  3. 제2항에 있어서,
    상기 특성 정보는 API(Application Programming Interface) 특성 정보 및 문자열 특성 정보를 포함하고,
    상기 미리 정해진 특성 리스트는 미리 정해진 문자열 및 미리 정해진 조작 부호(OP code)를 포함하며,
    상기 확인하는 단계는,
    상기 DEX 파일의 문자열 테이블에 대해 미리 정해진 문자열의 포함 여부를 확인하는 단계와,
    상기 DEX 파일을 컴파일한 어셈블리 코드에 포함된 조작 부호(OP code)를 확인하는 단계를 포함하고,
    상기 특성 정보를 생성하는 단계는,
    상기 미리 정해진 문자열의 포함 여부에 따라서 상기 문자열 특성 정보를 생성하고, 상기 조작 부호의 포함 여부에 따라서 상기 API 특성 정보를 생성하는,
    어플리케이션 클러스터링 방법.
  4. 제3항에 있어서,
    상기 조작 부호를 확인하는 단계는,
    상기 DEX 파일을 컴파일하여 상기 어셈블리 코드를 획득하는 단계와,
    상기 어셈블리 코드 내에서 호출 명령어의 위치를 확인하는 단계와,
    상기 호출 명령어의 위치를 이용하여 상기 조작 부호를 확인하는 단계를 포함하는,
    어플리케이션 클러스터링 방법.
  5. 제1항에 있어서,
    상기 클러스터 설정 단계는,
    하기 수학식에 기초하여 클러스터를 설정하며,
    Figure pat00007

    상기 중심점 재설정 단계는,
    하기 수학식에 기초하여 중심점을 재설정하고,
    Figure pat00008

    i는 클러스터의 순번을 의미하며, Si는 클러스터에 속하는 데이터들의 집합을 의미하고, μi는 i 번째 클러스터의 중심점을 의미하며, x는 데이터를 의미하고, t는 클러스터 설정 회차를 의미하는,
    어플리케이션 클러스터링 방법.
  6. 제1항에 있어서,
    상기 중심점 재설정 단계를 수행한 결과, 상기 재설정된 중심점이 상기 재설정되기 이전의 중심점과 동일한 경우, 기준 특성 벡터와 상기 특성 벡터 사이의 거리를 산출하는 단계; 및
    상기 기준 특성 벡터가 속하는 클러스터에 포함된 데이터로부터 상기 산출된 거리를 기준으로 선택된 유사 특성 벡터에 대한 정보를 디스플레이하는 단계를 더 포함하는,
    어플리케이션 클러스터링 방법.
  7. 제6항에 있어서,
    상기 유사 특성 벡터는,
    상기 기준 특성 벡터로부터의 거리가 짧은 순서대로 선택된 것인,
    어플리케이션 클러스터링 방법.
  8. 제6항에 있어서,
    상기 유사 특성 벡터에 대한 정보는,
    상기 유사 특성 벡터에 상응하는 유사 어플리케이션의 정보인,
    어플리케이션 클러스터링 방법.
  9. 제8항에 있어서,
    상기 유사 어플리케이션의 정보는,
    어플리케이션 패키지 정보, 어플리케이션 위험도 정보 및 바이러스 검사 카운트 정보를 포함하는,
    어플리케이션 클러스터링 방법.
  10. 제1항에 있어서,
    상기 중심점 재설정 단계를 수행한 결과, 상기 재설정된 중심점이 상기 재설정되기 이전의 중심점과 동일한 경우, 상기 특성 벡터가 속하는 클러스터에 대한 정보를 상기 특성 벡터에 대한 라벨(label)으로 부여하는 단계; 및
    상기 라벨이 부여된 특성 벡터에 대한 기계 학습을 수행하여 분류되지 않은 어플리케이션의 특성 정보를 입력 받으면 상기 분류되지 않은 어플리케이션이 속할 것으로 예측되는 클러스터 정보를 출력하는 예측 모델을 생성하는 단계를 더 포함하는,
    어플리케이션 클러스터링 방법.
  11. 프로세서; 및
    상기 프로세서에 의하여 실행되는 복수의 인스트럭션을 저장하는 메모리를 포함하되,
    상기 복수의 인스트럭션은,
    상기 특성 정보를 특성 벡터로 맵핑(mapping)하는 좌표 설정 인스트럭션;
    상기 특성 벡터에 대해 클러스터 수량에 따라 중심점을 설정하는 중심점 설정 인스트럭션;
    상기 중심점으로부터의 거리를 기준으로 상기 특성 벡터를 포함하는 데이터에 대한 클러스터를 설정하는 클러스터 설정 인스트럭션;
    상기 클러스터에 포함된 데이터의 평균값을 이용하여 중심점을 재설정하는 중심점 재설정 인스트럭션;
    상기 중심점 재설정 인스트럭션이 실행된 이후 실행되며, 상기 재설정된 중심점이 상기 재설정되기 이전의 중심점과 다른 경우, 상기 재설정된 중심점으로부터의 거리를 기준으로 상기 클러스터를 재설정하는 클러스터 재설정 인스트럭션;을 포함하고,
    상기 프로세서는,
    상기 클러스터 재설정 인스트럭션에 의해 상기 클러스터가 재설정된 경우 상기 중심점 재설정 인스트럭션을 재실행하여 재설정된 클러스터를 기초로 중심점을 다시 재설정하는,
    컴퓨팅 장치.
  12. 비일시적(non-transitory) 컴퓨터 판독 가능한 매체에 기록된 컴퓨터 프로그램으로서, 상기 컴퓨터 프로그램의 명령어들이 컴퓨팅 장치의 프로세서에 의해 실행되는 경우에,
    어플리케이션의 특성 정보를 추출하는 특성 정보 추출 단계;
    상기 특성 정보를 특성 벡터로 맵핑(mapping)하는 좌표 설정 단계;
    상기 특성 벡터에 대해 클러스터 수량에 따라 중심점을 설정하는 중심점 설정 단계;
    상기 중심점으로부터의 거리를 기준으로 상기 특성 벡터를 포함하는 데이터에 대한 클러스터를 설정하는 클러스터 설정 단계;
    상기 클러스터에 포함된 데이터의 평균값을 이용하여 중심점을 재설정하는 중심점 재설정 단계;
    상기 중심점 재설정 단계를 수행한 결과, 상기 재설정된 중심점이 상기 재설정되기 이전의 중심점과 다른 경우, 상기 재설정된 중심점으로부터의 거리를 기준으로 상기 클러스터를 재설정하는 클러스터 재설정 단계;가 실행되며,
    상기 중심점 재설정 단계는,
    상기 클러스터 재설정 단계에서 상기 클러스터가 재설정된 경우 재설정된 클러스터를 기초로 중심점을 다시 재설정하는,
    컴퓨터 프로그램.
KR1020180022858A 2018-02-26 2018-02-26 어플리케이션 클러스터링 방법 및 그 장치 KR102073068B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020180022858A KR102073068B1 (ko) 2018-02-26 2018-02-26 어플리케이션 클러스터링 방법 및 그 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180022858A KR102073068B1 (ko) 2018-02-26 2018-02-26 어플리케이션 클러스터링 방법 및 그 장치

Publications (2)

Publication Number Publication Date
KR20190102456A true KR20190102456A (ko) 2019-09-04
KR102073068B1 KR102073068B1 (ko) 2020-02-04

Family

ID=67950798

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180022858A KR102073068B1 (ko) 2018-02-26 2018-02-26 어플리케이션 클러스터링 방법 및 그 장치

Country Status (1)

Country Link
KR (1) KR102073068B1 (ko)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111339303A (zh) * 2020-03-06 2020-06-26 成都晓多科技有限公司 一种基于聚类与自动摘要的文本意图归纳方法及装置
CN112131382A (zh) * 2020-08-20 2020-12-25 彭涛 民生问题高发地的识别方法、装置及电子设备
KR20220096226A (ko) * 2020-12-30 2022-07-07 주식회사 안랩 화이트 리스트 생성 방법 및 이를 수행하는 사용자 단말, 컴퓨터 판독 가능한 기록 매체 및 컴퓨터 프로그램
KR102450004B1 (ko) * 2021-08-13 2022-10-06 로봇앤컴주식회사 클러스터링 기반의 온라인 통합 수리 플랫폼 제공 방법 및 장치
KR102590514B1 (ko) * 2022-10-28 2023-10-17 셀렉트스타 주식회사 레이블링에 사용될 데이터를 선택하기 위하여 데이터를 시각화 하는 방법, 이를 수행하는 서비스서버 및 컴퓨터-판독가능 매체

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150044490A (ko) * 2013-10-16 2015-04-27 (주)이스트소프트 안드로이드 악성 애플리케이션의 탐지장치 및 탐지방법

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150044490A (ko) * 2013-10-16 2015-04-27 (주)이스트소프트 안드로이드 악성 애플리케이션의 탐지장치 및 탐지방법

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111339303A (zh) * 2020-03-06 2020-06-26 成都晓多科技有限公司 一种基于聚类与自动摘要的文本意图归纳方法及装置
CN111339303B (zh) * 2020-03-06 2023-08-22 成都晓多科技有限公司 一种基于聚类与自动摘要的文本意图归纳方法及装置
CN112131382A (zh) * 2020-08-20 2020-12-25 彭涛 民生问题高发地的识别方法、装置及电子设备
CN112131382B (zh) * 2020-08-20 2024-05-10 彭涛 民生问题高发地的识别方法、装置及电子设备
KR20220096226A (ko) * 2020-12-30 2022-07-07 주식회사 안랩 화이트 리스트 생성 방법 및 이를 수행하는 사용자 단말, 컴퓨터 판독 가능한 기록 매체 및 컴퓨터 프로그램
KR102450004B1 (ko) * 2021-08-13 2022-10-06 로봇앤컴주식회사 클러스터링 기반의 온라인 통합 수리 플랫폼 제공 방법 및 장치
KR102590514B1 (ko) * 2022-10-28 2023-10-17 셀렉트스타 주식회사 레이블링에 사용될 데이터를 선택하기 위하여 데이터를 시각화 하는 방법, 이를 수행하는 서비스서버 및 컴퓨터-판독가능 매체

Also Published As

Publication number Publication date
KR102073068B1 (ko) 2020-02-04

Similar Documents

Publication Publication Date Title
KR102073068B1 (ko) 어플리케이션 클러스터링 방법 및 그 장치
US10152594B2 (en) Method and device for identifying virus APK
Duan et al. Detective: Automatically identify and analyze malware processes in forensic scenarios via DLLs
US9525706B2 (en) Apparatus and method for diagnosing malicious applications
US9553889B1 (en) System and method of detecting malicious files on mobile devices
KR102058966B1 (ko) 악성 어플리케이션 탐지 방법 및 그 장치
US10635812B2 (en) Method and apparatus for identifying malicious software
BR102015017215A2 (pt) método implementado em computador para classificação de aplicativos móveis, e, programa de computador codificado em um meio de armazenamento não-trasitório
CN103761475A (zh) 检测智能终端中恶意代码的方法及装置
RU91213U1 (ru) Система автоматического составления описания и кластеризации различных, в том числе и вредоносных, объектов
CN110298171B (zh) 移动互联网大数据应用的智能检测与安全防护方法
US10241759B2 (en) Detecting open source components built into mobile applications
CN105631337A (zh) 控制机器代码的本机图像访问操作系统资源的系统及方法
US11916937B2 (en) System and method for information gain for malware detection
Nguyen et al. Detecting repackaged android applications using perceptual hashing
KR20210152624A (ko) 컨테이너 이미지에 대한 보안 가시성 제공 방법 및 장치
KR102011725B1 (ko) 악성코드 검출을 위한 화이트리스트 구축 방법 및 이를 수행하기 위한 기록매체 및 장치
CN110023938A (zh) 利用函数长度统计确定文件相似度的系统和方法
US11580220B2 (en) Methods and apparatus for unknown sample classification using agglomerative clustering
US10685298B2 (en) Mobile application compatibility testing
CN116868193A (zh) 固件组件标识和漏洞评估
CN105701405A (zh) 对软件程序集的本机图像进行防病毒检查的系统和方法
Vashishtha et al. An Ensemble approach for advance malware memory analysis using Image classification techniques
WO2023072002A1 (zh) 开源组件包的安全检测方法及装置
KR102415494B1 (ko) 에뮬레이션 기반의 임베디드 기기 취약점 점검 및 검증 방법

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant