KR102582580B1 - 악성 코드 분석을 위한 전자 장치 및 이의 방법 - Google Patents

악성 코드 분석을 위한 전자 장치 및 이의 방법 Download PDF

Info

Publication number
KR102582580B1
KR102582580B1 KR1020160072230A KR20160072230A KR102582580B1 KR 102582580 B1 KR102582580 B1 KR 102582580B1 KR 1020160072230 A KR1020160072230 A KR 1020160072230A KR 20160072230 A KR20160072230 A KR 20160072230A KR 102582580 B1 KR102582580 B1 KR 102582580B1
Authority
KR
South Korea
Prior art keywords
data
malicious code
executable file
code
electronic device
Prior art date
Application number
KR1020160072230A
Other languages
English (en)
Other versions
KR20170087007A (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 US16/068,263 priority Critical patent/US20190005239A1/en
Priority to PCT/KR2016/012443 priority patent/WO2017126786A1/ko
Publication of KR20170087007A publication Critical patent/KR20170087007A/ko
Application granted granted Critical
Publication of KR102582580B1 publication Critical patent/KR102582580B1/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/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/14Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
    • 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/565Static detection by checking file integrity
    • 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
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/74Reverse engineering; Extracting design information from source code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N7/00Computing arrangements based on specific mathematical models
    • G06N7/01Probabilistic graphical models, e.g. probabilistic networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software

Abstract

본 개시는 전자 장치의 악성 코드 분석 방법에 있어서, 실행 파일을 수신하는 단계, 상기 수신된 실행 파일이 설치되기 전에, 상기 실행 파일을 분석하여 상기 실행 파일로부터 악성 코드 의심 데이터를 수집하는 단계, 정규화된 상기 수집된 악성 코드 의심 데이터를 확률 모델 알고리즘을 바탕으로 분석하여 악성 코드 의심 데이터를 판단하는 단계 및 상기 판단 결과를 출력하는 단계를 포함하는 악성 코드 분석 방법에 관한 것이다.

Description

악성 코드 분석을 위한 전자 장치 및 이의 방법{Electronic Apparatus for detecting Malware and Method thereof}
본 발명은 악성 코드 검출을 하는 전자 장치에 있어서, 사용자 단말 장치의 로컬 영역 내에서 확률 모델 알고리즘을 통해 실행 파일의 해킹 노출 정도를 통계화하여 사용자에게 위험성을 제공하는 방법, 장치 및 그 방법을 실행하기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체에 관한 것이다.
모바일 디바이스(예: 스마트폰, 태블릿 PC, 등)의 사용이 증가함에 따라 다양한 API(Application Program Interface)가 개발되고 있다. 이에 따라, 사용자는 직접 애플리케이션(Application)을 개발하여 공개할 수 있고, 공개된 다른 애플리케이션(Application)을 자유롭게 설치(install)하여 사용할 수 있다.
그러나, 공개된 애플리케이션 안에는 사용자 단말 내부의 정보를 수집해 외부로 송신할 수 있는 악성 애플리케이션이 존재한다. 또한, 최근의 악성 애플리케이션은 정상적인 애플리케이션을 가장하여 사용자도 모르는 사이에 사용자의 개인 정보가 누설되는 가능성이 높아지고 있다.
종래에는, 모바일 디바이스에 설치되는 애플리케이션의 악성 코드를 감지하는 방법에 있어서, 악성 코드 감지 프로그램을 설치하고, 설치된 프로그램은 Wifi등의 통신에 연결되어 있을 때 최신의 악성 코드 및 바이러스 관련 검색 엔진 또는 데이터 베이스를 서버로부터 다운로드 받아서 주기적으로 업데이트해야 하는 문제점이 있다. 그리고 종래의 기술은 데이터 베이스에 존재하는 기존의 악성 코드와 사용자의 애플리케이션에 포함된 특징(feature) 데이터(예: 메타 데이터, 소스파일의 이름, 시그니처등)를 비교하여 악성 코드 위험성을 유추하였다. 따라서, 종래의 기술은 서버의 데이터 베이스에 대한 의존성이 높으며 최신 해킹 동향을 반영하기 힘든 문제점이 있다.
본 개시의 목적은, 상술한 종래 기술의 문제점을 해결하기 위하여 안출된 것으로, 서버 기반이 아닌 단말 장치 기반으로, 실행파일(executable file)을 디컴파일하여 소스 코드를 분석하고 실행파일에 포함되어 있는 악성 코드 의심 파일을 유추한 결과를 사용자에게 제공하는 방법 및 장치를 제공함에 있다.
상술한 목적을 달성하기 위한 본 개시의 일 실시예에 따른, 전자 장치의 악성 코드 분석 방법은, 실행 파일을 수신하는 단계; 상기 수신된 실행 파일이 설치되기 전에, 상기 실행 파일을 분석하여 상기 실행 파일로부터 악성 코드 의심 데이터를 수집하는 단계, 정규화된 상기 수집된 악성 코드 의심 데이터를 확률 모델 알고리즘을 바탕으로 분석하여 악성 코드 의심 데이터를 판단하는 단계; 및 상기 판단 결과를 출력하는 단계를 포함한다.
상기 수집하는 단계는, 상기 실행 파일의 기계 코드를 디컴파일하여 소스 코드 레벨로 복원하는 단계를 포함하고, 상기 복원된 소스 코드 레벨에서 상기 실행 파일의 악성 코드로 의심되는 데이터를 수집할 수 있다.
상기 복원하는 단계는, 상기 실행 파일의 기계 코드가 암호화된 경우, 상기 기계 코드를 복호화하여 상기 복호화된 기계 코드를 소스 코드 레벨로 복원할 수 있다.
상기 수집하는 단계는, 상기 실행 파일의 심볼 테이블, 문자 상수를 수집하여 네이티브 소스 레벨에서 악성 코드로 의심되는 데이터를 분석하는 단계를 포함할 수 있다.
상기 수집하는 단계는, 상기 실행 파일을 LLVM(Low Level Virtual Machine) 컴파일러를 이용해 IR(Intermediate Representation) 코드 레벨로 디컴파일하여 네이티브 소스 레벨에서 악성 코드로 의심되는 데이터를 분석하는 단계;를 포함할 수 있다.
상기 수집하는 단계는, 상기 실행 파일의 메타 데이터 및 모바일 운영체제 내에서의 상기 실행 파일의 실행 권한 정보를 바탕으로 악성 코드 의심 데이터를 분석하는 단계를 포함할 수 있다.
상기 수집하는 단계는, 상기 실행 파일 내 다른 파일 포맷에 숨겨진 또 다른 실행 파일 혹은 커맨드를 검출하도록 특정 파일마다 복호화, 압축 해제, 헤더 파일 확인, 바이트 값 대조를 통해 상기 파일 내부의 상이한 정보 데이터를 바탕으로 악성 코드 의심 데이터를 분석하는 단계를 포함할 수 있다.
상기 수집된 데이터를 정규화하여 상기 정규화된 데이터가 상기 확률 모델 알고리즘에 입력될 수 있도록 하는 데이터 정규화 단계를 더 포함할 수 있다.
상기 출력하는 단계는, 상기 판단 결과 악성 코드 데이터가 존재하는 것으로 판단되면, 상기 판단된 악성 코드 데이터의 유형 및 확률 정보 중 적어도 하나를 출력할 수 있다.
상기 확률 모델 알고리즘은, 딥러닝(deep learning) 엔진, SVM(Support Vector Machine), 신경망 알고리즘 중 적어도 하나일 수 있다.
반면, 본 개시의 일 실시예에 따른, 악성 코드 분석을 하는 전자 장치는, 디스플레이 및 실행 파일을 수신하고, 상기 수신된 실행 파일이 설치되기 전에, 상기 실행 파일을 분석하여 상기 실행 파일로부터 악성 코드 의심 데이터를 수집하고, 정규화된 상기 수집된 악성 코드 의심 데이터를 확률 모델 알고리즘을 바탕으로 분석하여 악성 코드 의심 데이터를 판단하고, 상기 판단 결과를 출력하는 프로세서를 포함한다.
상기 프로세서는, 상기 실행 파일의 기계 코드를 디컴파일하여 소스 코드 레벨로 복원하고, 상기 복원된 소스 코드 레벨에서 상기 실행 파일의 악성 코드 의심 데이터를 수집할 수 있다.
이때, 상기 프로세서는, 상기 실행 파일의 기계 코드가 암호화된 경우, 상기 실행 파일을 복호화하여 상기 복호화된 기계 코드를 소스 코드 레벨로 복원할 수 있다.
상기 프로세서는, 상기 실행 파일의 심볼 테이블, 문자 상수를 수집하여 네이티브 소스 레벨에서 악성 코드로 의심되는 데이터를 분석하여 악성 코드 의심 데이터를 수집할 수 있다.
상기 프로세서는, 상기 실행 파일을 LLVM(Low Level Virtual Machine) 컴파일러를 이용해 IR(Intermediate Representation) 코드 레벨로 디컴파일하여 네이티브 소스 레벨을 분석하여 악성 코드 의심 데이터를 수집할 수 있다.
상기 프로세서는, 상기 실행 파일의 메타 데이터 및 모바일 운영체제 내에서의 상기 실행 파일의 실행 권한 정보를 분석하여 악성 코드 의심 데이터를 수집할 수 있다.
상기 프로세서는, 상기 실행 파일 내 다른 파일 포맷에 숨겨진 또 다른 실행 파일 혹은 커맨드를 검출하도록 특정 파일마다 복호화, 압축 해제, 헤더 파일 확인, 바이트 값 대조를 통해 상기 파일 내부의 상이한 정보 데이터를 분석하여 악성 코드 의심 데이터를 수집할 수 있다.
      상기 수집된 데이터를 정규화하여 상기 정규화된 데이터가 상기 확률 모델 알고리즘에 입력될 수 있도록 상기 정규화된 데이터를 저장하는 메모리를 더 포함할 수 있다.
상기 프로세서는, 상기 판단 결과 악성 코드 데이터가 존재하는 것으로 판단되면, 상기 판단된 악성 코드 데이터의 유형 및 확률 정보 중 적어도 하나를 출력할 수 있다.
그리고 본 개시의 일 실시 예에 따른, 전자 장치의 악성 코드 분석 방법을 수행하기 위한 프로그램이 저장된 컴퓨터 판독 가능 기록 매체에 있어서, 상기 악성 코드 분석 방법은, 실행 파일을 수신하는 단계, 상기 수신된 실행 파일을 분석하여 상기 실행 파일로부터 악성 코드 의심 데이터를 수집하는 단계, 확률 알고리즘을 바탕으로 상기 수집된 악성 코드 의심 데이터를 분석하여 악성 코드 데이터를 판단하는 단계 및 상기 판단 결과를 출력하는 단계를 포함하는 컴퓨터 판독 가능 기록매체일 수 있다.
상술한 바와 같이, 본 개시의 실시 예들에 따른 악성 코드 검출 방법은, 단말 장치에서 디컴파일러를 활용하여 실행파일의 소스코드를 정적 분석하여 소스 코드에서 악성 코드 감염 여부를 더욱 빠르고 정확하게 판단할 수 있는 장치 및 방법을 제공할 수 있다.
도 1은 본 개시의 일 실시 예에 따른 전자 장치의 구성을 간략히 나타내는 블록도,
도 2는 본 개시의 일 실시 예에 따른 악성 코드 검출 프로그램의 구성을 나타내는 블록도,
도 3은 본 개시의 일 실시 예에 따른 LLVM(Low Level Virtual Machine) 컴파일러의 구성을 설명하기 위한 도면,
도 4는 본 개시의 일 실시 예에 따른 사용자에게 악성 코드 분석 결과를 보여주는 방법을 설명하기 위한 도면,
도 5는 본 개시의 일 실시 예에 따른 악성 코드 의심 데이터를 검출하는 방법을 설명하기 위한 순서도,
도 6은 본 개시의 일 실시 예에 따른 악성 코드 의심 데이터를 수집하는 방법을 설명하기 위한 순서도,
도 7은 본 개시의 일 실시 예에 따른 수집된 악성 코드 의심 데이터를 통계화하는 방법을 설명하기 위한 순서도,
도 8은 본 개시의 일 실시예에 따른 제 1 전자 장치에서 악성 코드 의심 데이터를 검출하고, 제 2 전자 장치로 검사 결과를 전송하는 상황을 나타내는 도면
도 9 및 10은 본 개시의 일 실시예에 따른 전자 장치에 악성 코드 검출 프로그램이 없을 때, 악성 코드 의심 데이터를 검출하는 상황에 대한 도면, 그리고
도 11은 본 개시의 일 실시예에 따른 전자 장치가 악성 코드 의심 데이터를 검출하는 다른 상황에 대한 도면이다.
본 명세서에서 사용되는 용어에 대해 간략히 설명하고, 본 개시에 대해 구체적으로 설명하기로 한다.
본 개시에서 사용되는 용어는 본 개시에서의 기능을 고려하면서 가능한 현재 널리 사용되는 일반적인 용어들을 선택하였으나, 이는 당 분야에 종사하는 기술자의 의도 또는 판례, 새로운 기술의 출현 등에 따라 달라질 수 있다.  또한, 특정한 경우는 출원인이 임의로 선정한 용어도 있으며, 이 경우 해당되는 발명의 설명 부분에서 상세히 그 의미를 기재할 것이다. 따라서 본 개시에서 사용되는 용어는 단순한 용어의 명칭이 아닌, 그 용어가 가지는 의미와 본 개시의 전반에 걸친 내용을 토대로 정의되어야 한다.
본 개시의 실시 예들은 다양한 변환을 가할 수 있고 여러 가지 실시 예를 가질 수 있는바, 특정 실시 예들을 도면에 예시하고 상세한 설명에 상세하게 설명하고자 한다. 그러나 이는 특정한 실시 형태에 대해 범위를 한정하려는 것이 아니며, 개시된 사상 및 기술 범위에 포함되는 모든 변환, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 실시 예들을 설명함에 있어서 관련된 공지 기술에 대한 구체적인 설명이 요지를 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다.
제1, 제2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 구성요소들은 용어들에 의해 한정되어서는 안 된다. 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다.
단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "구성되다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
본 개시에서 "모듈" 혹은 "부"는 적어도 하나의 기능이나 동작을 수행하며, 하드웨어 또는 소프트웨어로 구현되거나 하드웨어와 소프트웨어의 결합으로 구현될 수 있다. 또한, 복수의 "모듈" 혹은 복수의 "부"는 특정한 하드웨어로 구현될 필요가 있는 "모듈" 혹은 "부"를 제외하고는 적어도 하나의 모듈로 일체화되어 적어도 하나의 프로세서(미도시)로 구현될 수 있다.
본 개시에서 기술되는 방법들은 저장장치에 저장된 특정한 목적의 하나 또는 다수의 컴퓨터 프로그램을 뜻한다. 프로그램 소프트웨어는 컴퓨터 하드웨어에 직접 명령어를 주거나 다른 소프트웨어에 입력을 제공함으로써, 그것이 수행하도록 구현된 기능을 수행한다. 또한, 실행파일은 단순히 데이터만 담고 있는 파일뿐만 아니라 암호화된 명령에 따라 지시된 작업을 수행하도록 하는 컴퓨터 파일을 의미한다. 인터프리터나 CPU, 또는 가상 머신을 위한 명령을 포함하는 파일들은 실행파일로 생각할 수 있다. 또한 실행파일은 스크립트나 바이트코드이다. 실행파일들은 이진 파일로 불리며 이는 프로그램의 원시 코드와는 대비되는 용어이다.
일반적으로, 운영 체제 속에서 실행 파일은 상호 작용을 하고, 일부 운영 체제가 파일 확장자로 실행 파일을 구분하거나 메타데이터에 따라 파일을 인지한다. 대부분의 운영 체제는 해당 파일이 올바른 실행 파일 형식인지 확인하여 명령으로서 우발적으로 부주의하게 수행하는 데서 임의의 비트 시퀀스를 보호할 수 있다. 최근의 운영 체제들은 컴퓨터의 리소스에 대한 제어권을 보유하며 이로써 각 프로그램이 시스템 호출을 하여 권한을 받은 리소스에 접근할 것을 요구한다. 각 운영체제 계열이 자체적인 호출 구조를 갖고 있으므로 실행 파일들은 일반적으로 특정 운영 체제에 한정된다.
본 개시에서 사용한 "실행 파일"은 컴퓨터 과학에서 사용되는 실행파일로서 코드화된 명령에 따라 지시된 작업을 수행하도록 하는 컴퓨터 파일을 포함한다. 또한, 본 개시에서 실행파일은 전자 장치에 설치하고자 하는 애플리케이션을 포함한다. 그리고 "실행 파일"은 게임, 그림, 음악 등과 같은 콘텐츠 파일을 포함할 수도 있다.
본 개시에서 이용되는 사용자라는 용어는 전자 장치를 사용하는 사람 또는 전자 장치를 사용하는 장치(예 인공지능 전자 장치)를 지칭할 수 있다.
아래에서는 첨부한 도면을 참고하여 본 개시의 실시 예에 대하여 본 개시가 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다.  그러나 본 개시는 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시 예에 한정되지 않는다. 그리고 도면에서 본 개시를 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
도 1은, 본 개시의 일 실시 예에 따른, 전자 장치의 구성을 간략히 나타내는 블록도이다.
도1을 참조하면, 전자 장치(100)는 디스플레이(110), 프로세서(120), 메모리(130), 입력부(140), 및 통신부(150)을 포함할 수 있다.
디스플레이(110)는, 본 개시의 일 실시 예에 따라, 전자 장치(100)에서 수신한 실행 파일을 터치 스크린에 표시할 수 있다. 디스플레이(110)는 입력부(140)를 통해 디스플레이(110)에 표시된 실행파일의 설치에 대한 명령을 사용자로부터 입력 받도록 다양한 입력 명령을 User Interface(UI)를 통해 표시할 수 있다.
디스플레이(110)는 LCD(liquid-crystal display) 또는 AM-OLED(active-matrix organic light-emitting diode) 등일 수 있다. 디스플레이(150)는 플렉서블(flexible), 투명(transparent) 또는 웨어러블(wearable)하게 구현될 수 있다.
프로세서(120)는, 디스플레이(110), 메모리(130), 입력부(140), 통신부(150)로부터 명령을 수신하여, 수신된 명령을 해독하고, 해독된 명령에 따른 연산이나 데이터 처리를 실행할 수 있다.
프로세서(120)는, 본 개시의 일 실시 예에 따라, 실행 파일을 수신하고, 수신된 실행 파일이 설치되기 전에, 실행 파일을 분석하여 실행 파일로부터 악성 코드 의심 데이터를 수집할 수 있다. 이때, 실행파일의 분석은 정적 분석(static analysis)을 통해 실행 파일의 기계 코드를 디컴파일하여 소스 코드 레벨로 복원하고, 복원된 소스 코드 레벨에서 실행 파일의 악성 코드 의심 데이터를 수집할 수 있다.
또한, 프로세서(120)는, 메모리(130)에 저장된 정규화된 악성 코드 의심 데이터를 확률 모델 알고리즘을 바탕으로 분석하여 악성 코드 의심 데이터를 판단할 수 있다. 이때, 프로세서(120)는 딥러닝 알고리즘과 같은 인공지능 확률 모델 알고리즘을 통해 악성 코드 의심 데이터를 추론(deduce)할 수 있다.
그리고 프로세서(120)는, 판단 결과 악성 코드 데이터가 존재하는 것으로 판단되면, 판단된 악성 코드 데이터의 유형 및 확률 정보 중 적어도 하나를 출력하도록 디스플레이(110)를 제어할 수 있다. 본 개시의 일 실시 예에 따른 프로세서(120)에 대한 상세한 설명은 도5 내지 도7에서 후술하기로 한다.
메모리(130)는, 프로세서(120) 또는 다른 구성 요소들(예: 디스플레이 110, 입력부 140, 통신부 150 등)로부터 수신되거나 프로세서(120) 또는 다른 구성 요소들에 의해 생성된 명령 또는 데이터를 저장할 수 있다. 메모리(130)는 커널(미도시), 미들웨어(미도시), 어플리케이션 프로그래밍 인터페이스(API, application programming interface)(미도시), 또는 애플리케이션(미도시), 실행파일(미도시) 등의 프로그래밍 모듈을 포함할 수 있다. 상술한 각각의 프로그래밍 모듈들은 소프트웨어, 펌웨어, 하드웨어 또는 이들 중 적어도 둘 이상의 조합으로 구성될 수 있다.
메모리(130)는, 본 개시의 일 실시 예에 따라, 실행파일의 악성 코드 분석용 데이터를 저장할 수 있다. 악성 코드 분석용 데이터는 악성코드가 포함된 악성 데이터(malicious data) 및 악성코드가 포함되지 않은 클린 데이터(clean data)일 수 있다. 메모리(130)는, 프로세서(120)에 의해 수집된 데이터를 딥러닝(Deep Learning) 엔진, Support Vector Machine(SVM), 신경망 엔진 등의 확률 모델 알고리즘을 통해 정규화되고(normalized) 추론된(deduced) 데이터를 저장할 수 있다.
메모리(130)는 내장 메모리(미도시) 또는 외장 메모리(미도시)를 포함할 수 있다. 내장 메모리(미도시)는, 휘발성 메모리 또는 비휘발성 메모리(non-volatile Memory) 중 적어도 하나를 포함할 수 있다. 휘발성 메모리는 예를 들어 DRAM(dynamic RAM), SRAM(static RAM), SDRAM(synchronous dynamic RAM) 등일 수 있다. 비휘발성 메모리는 예를 들어 OTPROM(one time programmable ROM), PROM(programmable ROM), EPROM(erasable and programmable ROM), EEPROM(electrically erasable and programmable ROM), mask ROM, flash ROM, NAN flash memory, NOR flash memory 등일 수 있다. 또한, 내장 메모리(미도시)는 Solid State Drive(SSD)일 수 있다.
외장 메모리(미도시)는 flash drive, CF(compact flash), SD(secure digital), Micro-SD(micro secure digital), Mini-SD(mini secure digital), xD(extreme digital) 또는 Memory Stick 등을 포함할 수 있다. 외장 메모리(미도시)는 다양한 인터페이스를 통하여 전자 장치(100)와 기능적으로 연결될 수 있다. 또한, 전자 장치(100)는 하드 드라이브와 같은 저장 장치를 더 포함할 수 있다.
입력부(140)는, 입출력 장치(예: 센서, 키보드 또는 터치 스크린)를 통하여 사용자로부터 입력된 명령 또는 데이터를 프로세서(120), 메모리(130), 통신부(150) 등에 전달할 수 있다. 입력부(140)는 터치 스크린을 통하여 입력된 사용자의 터치에 대한 데이터를 프로세서(120)로 제공할 수 있다.
입력부(140)는, 본 개시의 일 실시 예에 따라, 사용자가 전자 장치(100)의 동작 제어를 위한 입력 데이터를 발생시킬 수 있다. 예를 들어, 전자 장치(100)는 입력부(140)를 통해 실행파일을 선택할 수 있고, 선택한 실행파일을 설치할 지 설치를 취소할 지에 대한 명령을 입력 받을 수 있다.
통신부(150)는, 전자 장치(100)와 외부 장치(예: 서버, 다른 전자 장치 등) 간의 통신을 수행하도록 할 수 있다. 통신부(150)는 무선 통신 또는 유선 통신을 통해서 네트워크(미도시)에 연결되어 외부 장치(미도시)와 통신할 수 있다.
본 개시에 따른 전자 장치(100)는 통신 기능이 포함된 장치일 수 있다. 예를 들어, 전자 장치(100)는 스마트폰, 태블릿 PC, 이동 전화기, 화상 전화기, 전자북 리더기(e-book reader), 넷북 컴퓨터, PDA, PMP(portable multimedia player), MP3 플레이어, 또는 웨어러블 장치(wearable device) 중 적어도 하나를 포함할 수 있다.
무선 통신은 Wifi(wireless fidelity), BT(Bluetooth), NFC(near field communication), GPS(global positioning system) 또는 cellular 통신(예: LTE, LTE-A, CDMA, WCDMA, UMTS, Wibro 또는 GSM 등) 중 적어도 하나를 포함할 수 있다. 유선 통신은 USB(universal serial bus), HDMI(high definition multimedia interface), RS-232(recommended standard 232) 또는 POTS(plain old telephone service) 중 적어도 하나를 포함할 수 있다.
도 2는 본 개시의 일 실시 예에 따른 악성 코드 검출 프로그램의 구성을 나타내는 블록도이다.
도2를 참조하면, 본 개시의 일 실시 예에 따른 프로그램은, 실행 파일 수신 모듈(201), 악성코드 의심 데이터 수집 모듈(202), 악성 코드 의심 데이터 판단 모듈(203), 및 악성코드 의심 데이터 결과 출력 모듈(204)을 포함할 수 있다. 전자 장치(100)는 적어도 하나의 기능(tasks)를 수행(perform)하기 위해 적어도 하나 이상의 프로그램 모듈을 포함할 수 있다. 그러나, 상술한 모듈들은 본 개시를 설명하기 위한 일 실시 예일 뿐, 이에 한정되지 않고 다양한 변형으로 구현될 수 있다. 또한, 상술한 모듈들은 프로세서(120)에 의해 제어될 수 있는 컴퓨터로 판독 가능한 기록매체로서 메모리(130)에 저장될 수 있다.
본 개시에서는 모바일 운영체제 중 AndroidTM, iOSTM 등을 예로 들어 설명하기로 한다.
실행 파일 수신 모듈(201)은 전자 장치(100)가 외부 서버 또는 외부 장치로부터 실행파일을 수신할 수 있다. 전자장치(100)는 수신된 실행파일을 설치할 지, 설치하지 않을 지 선택하는 명령을 사용자로부터 입력할 수 있다. 전자장치(100)가 수신된 실행파일을 설치하고자 하는 명령을 사용자로부터 입력 받을 때, 전자장치(100)는 악성코드 의심 데이터 수집 모듈(202)을 수행할 수 있다.
악성코드 의심 데이터 수집 모듈(202)은 전자장치(100)에서 수신된 실행파일의 다양한 정보를 수집할 수 있다. 본 개시의 일 실시 예에 따라, 악성코드 의심 데이터 수집 모듈(202)은 실행파일의 기계코드를 디컴파일하여 소스코드 레벨로 복원할 수 있다. 이때, 악성코드 의심 데이터 수집 모듈(202)은 복원된 소스 코드를 분석하여 실행파일에 포함된 악성코드로 의심되는 데이터를 수집할 수 있다.
그리고 악성코드 의심 데이터 수집 모듈(202)은 실행파일의 기계코드가 암호화된 경우에도 기계코드를 디컴파일하여 복원된 소스 코드를 분석하여 실행파일에 포함된 악성코드로 의심되는 데이터를 수집할 수 있다.
    악성코드 의심 데이터 수집 모듈(202)은 실행 파일을 디컴파일을 하여 심볼 테이블, 문자 상수를 수집하여 네이티브 소스 레벨에서 데이터를 분석하여 실행파일에 포함된 악성코드로 의심되는 데이터를 수집할 수 있다.
그리고 악성코드 의심 데이터 수집 모듈(202)은 실행 파일을 LLVM(Low Level Virtual Machine) 컴파일러를 이용해 IR(Intermediate Representation) 코드 레벨로 디컴파일하여 네이티브 소스 레벨에서 악성 코드로 의심되는 데이터를 분석하여 실행파일에 포함된 악성코드로 의심되는 데이터를 수집할 수 있다. 본 개시의 일 실시 예에 따른, LLVM(low level virtual machine) IR 코드에 대해서는 도3에서 상술하기로 한다.
      악성코드 의심 데이터 수집 모듈(202)은 실행 파일의 메타데이터 및 모바일 운영체제 내에서의 상기 실행 파일의 실행 권한 정보를 바탕으로 악성 코드 의심 데이터를 분석하여 실행파일에 포함된 악성코드로 의심되는 데이터를 수집할 수도 있다. 실행파일의 메타데이터는 실행파일의 헤더파일 및/또는 다른 데이터 필드를 포함할 수 있고, 힙(heap) 크기(size), 스택 크기(stack size)의 분석을 통해 실행파일에 포함된 악성 코드로 의심되는 데이터를 수집할 수 있다.
또한, 실행파일이 모바일 운영체제(예, AndroidTM, iOSTM, 타이젠TM등)에서 특정 애플리케이션에 접근 권한이 있는 지, 해당 접근 권한 정보를 분석하여 실행파일에 포함된 악성코드로 의심되는 데이터를 수집할 수 있다.
악성코드 의심 데이터 수집 모듈(202)은 실행 파일 내 다른 파일 포맷에 숨겨진 또 다른 실행 파일 혹은 커맨드를 검출하도록 특정 파일마다 복호화, 압축 해제, 헤더 파일 확인, 바이트 값 대조, 매직 넘버 등을 통해 파일 내부의 상이한 정보 데이터를 바탕으로 악성 코드 의심 데이터를 분석하여 실행파일에 포함된 악성코드로 의심되는 데이터를 수집할 수 있다.
또한, 악성 코드 의심 데이터 판단 모듈(203)은 악성코드 의심 데이터 수집 모듈(202)에서 수집된 데이터를 확률 모델 알고리즘에 입력 받을 수 있다. 이때, 악성 코드 의심 데이터 판단 모듈(203)은 입력 받은 데이터를 바탕으로 실행 파일이 악성 코드 의심 데이터를 포함하고 있는 지 추론(deducing)할 수 있다.
본 개시의 일 실시 예로, 본 개시의 일 실시 예들은 딥러닝(deep learning), SVM(Support Vector Machine), 신경망(Neural Network) 알고리즘 등의 인공지능 확률 모델 알고리즘을 이용하여 구현할 수 있다. 상술한 인공지능 확률 모델 알고리즘은 머신 러닝(Machine Learning)이 확장된 형태이다.
악성코드 의심 데이터 결과 출력 모듈(204)은 악성 코드 의심 데이터 판단 모듈(203)로부터 추론된(deducted) 실행파일의 악성코드 가능성을 확률 데이터를 전자장치(100)의 디스플레이를 통해 표시할 수 있다. 이때, 표시된 확률 데이터는 그래프, 도표, 또는 이미지를 통해 사용자에게 표시될 수 있고, 실행파일에 대한 세부적인 정보(예를 들어, 개발자, 배포자, 추천 점수(rate) 등)등을 포함할 수 있다. 추론된 결과를 전자 장치(100)에 표시하는 다양한 방법은 당업자들에게 다양하게 응용 변경될 수 있으므로 상세한 설명을 생략하기로 한다.
도 3은 LLVM(Low Level Virtual Machine) 컴파일러의 구성을 설명하기 위한 도면이다.
본 개시는 일 실시 예에 따라, LLVM(Low Level Virtual Machine) 컴파일러를 이용하여 구현할 수 있다. LLVM은 오픈 소스 솔루션으로서, 전자 장치(100)의 프로세서(120)와는 독립적으로 코드 최적화가 가능하고, 다양한 소스 코드를 다양한 머신 코드로 변환할 수 있다.
도3을 참조하면, LLVM(300) 컴파일러는 입력 받은 소스 코드(301)를 Frontend(302)를 통해 IR(Intermediate Representation)(304) 코드로 변환한다. Middle end(305)는 입력 받은 IR(304)코드를 최적화(optimizer)하여 IR(306)코드로 변환하여 Backend(307)에 전송한다. Backend(307)는 입력 받은 최적화 IR(306)코드를 미리 정의된 타겟 디스크립션(target description) 파일을 이용하여 기계 코드인 타겟 코드(308)를 생성한다.
IR(Intermediate Representation)(304, 306) 코드는 소스 코드와 타겟 코드의 중간 단계를 나타내는 프로그램으로서, 번역(translation)하기 어려운 소스 코드를 보다 빠르고 쉽게 분석할 수 있다.
본 개시의 일 실시 예에 따라, 도2에서 상술한 악성코드 의심 데이터 수집 모듈(202)은 실행 파일을 LLVM(Low Level Virtual Machine) 컴파일러를 이용해 IR(Intermediate Representation) 코드 레벨로 디컴파일하여 네이티브 소스 레벨에서 악성 코드로 의심되는 데이터를 분석하여 실행파일에 포함된 악성코드로 의심되는 데이터를 수집할 수 있다.
즉, 실행파일의 기계 코드인 타겟 코드(308)을 LLVM 컴파일러를 이용해 디컴파일하면 IR 코드 레벨에서 악성코드 의심 데이터를 분석하여 수집할 수 있다. 도2에서 상술한 바와 같이, 예를 들어, IR 코드 레벨에서 안드로이드TM의 네이티브(Native) 또는 JNI(Java Native Interface) TM 레벨에서 악성 코드로 의심되는 데이터를 수집할 수 있다.
도 4는 본 개시의 일 실시 예에 따른 사용자에게 악성 코드 분석 결과를 보여주는 방법을 설명하기 위한 도면이다.
도 4를 참조하면, 전자 장치(100)는 디스플레이에 실행 파일이 검사 중(401)인 것을 표시할 수 있다. 이때, 실행 파일의 기계 코드를 디컴파일하여 소스 코드를 분석하는 과정 및 헤더파일 분석 등의 소스 경로를 빠르게 화면에 도시할 수 있다. 이때, 전자 장치(100)는 분석된 악성 코드 분석용 데이터를 메모리에 저장할 수 있다.
전자 장치(100)는 실행 파일에서 악성 코드 데이터가 발견될 때, 악성 코드가 발견되었다는 경고 메시지(402)를 사용자에게 표시할 수 있다. 이때, 사용자는 실행파일의 설치를 계속 진행(402, 설치)하거나 설치를 취소(402, 최소)할 수 있다. 사용자가 실행파일 설치를 취소(402, 취소) 명령을 입력할 때, 전자 장치(100)는 애플리케이션 다운로드 프로그램 API로 화면이 변경될 수 있다.
또한, 전자 장치(100)는 실행 파일에서 악성 코드 의심 데이터가 악성 코드일 확률 데이터(403)를 사용자에게 표시할 수 있다. 이때, 전자 장치(100)는 확률 모델 알고리즘을 통해 추출된 통계를 바탕으로 악성 코드 의심 확률을 제공할 수 있다. 전자 장치(100)는 악성 코드 의심 확률 수치를 바탕으로 실행 파일을 설치할 것인지 설치를 취소할 것인지 경고 메시지를 표시할 수 있다. 전자 장치(100)는 악성 코드 의심 확률을 구간별로 구분하여 기 설정된 확률 수치(threshold)에 따라 실행파일의 설치를 제한하도록 제안하는 메시지 또는 GUI(Graphic User Interface)를 표시할 수 있다.
예를 들어, 실행파일이 악성 코드 의심 파일일 확률이 70%이상일 때, 전자 장치(100)는 경고 창에 적색(red) 경고를 함께 표시할 수도 있고, 실행 파일의 설치를 취소하라는 경고 메시지를 표시할 수도 있다. 실행 파일이 악성 코드 의심 파일일 확률이 50%이상이고 70%미만일 때, 전자 장치(100)는 경고 창에 오렌지색 경고를 함께 표시할 수도 있고, 실행 파일의 설치를 취소하라는 경고 메시지를 표시할 수 있다.
실행 파일이 악성 코드 의심 파일일 확률이 30%이상이고 50%미만일 때, 전자 장치(100)는 경고 창에 녹색 경고를 함께 표시할 수도 있고, 실행 파일의 설치를 취소하라는 경고 메시지를 표시할 수 있다. 실행 파일이 악성 코드 의심 파일일 확률이 30%미만일 때, 전자 장치(100)는 경고 창에 파랑색 경고를 함께 표시할 수도 있고, 실행 파일의 설치를 진행하거나 취소하라는 경고 메시지를 표시할 수 있다. 그러나, 전자 장치(100)의 경고 메시지 GUI 표시 및 확률 구간은 본 개시를 설명하기 위한 일 실시 예일 뿐, 전자 장치(100)는 다양한 GUI를 통해 실행파일의 악성 코드 의심 결과 데이터를 출력되도록 구현될 수 있다.
상술한 악성 코드 의심 결과 데이터를 UI(User Interface)로 구현하는 방법은 분석된 결과를 바탕으로 실행 파일에 대한 상세한 정보 및 설명 등이 표시되도록 다양한 방법으로 구현될 수 있다.
도 5는 본 개시의 일 실시 예에 따른 악성 코드 의심 데이터를 검출하는 방법을 설명하기 위한 순서도이다.
도 5를 참조하면, 전자장치(100)는 수신한 새로운 실행 파일을 설치할 지 판단할 수 있다(S501). 전자장치(100)는 외부 서버 또는 외부 장치로부터 실행파일을 수신할 수 있다. 예를 들어, 전자장치(100)는 AndroidTM 및 iOSTM에서 애플리케이션 스토어(application store)를 통해 다양한 실행파일을 수신할 수 있다. 또한, 일 실시 예로, 전자장치(100)는 다른 단말장치로부터 SMS등의 API를 통해 실행파일을 수신할 수도 있다. 이때, 전자장치(100)는 수신된 실행파일을 설치할 지, 설치하지 않을 지 선택하는 명령을 사용자로부터 입력할 수 있다.
전자장치(100)가 수신된 실행파일을 설치하고자 하는 명령을 사용자로부터 입력 받을 때, 전자장치(100)는 악성코드 의심 데이터 수집을 수행할 수 있다(S502).
전자장치(100)는 수신된 실행파일에 포함된 다양한 정보를 수집할 수 있다. 본 개시의 일 실시 예에 따라, 전자장치(100)는 정적 분석(static analysis)를 통해 실행파일을 분석하고 악성코드 의심 데이터를 수집할 수 있다. 정적 분석(static analysis)는, 실행파일의 기계코드를 디컴파일하여 소스코드(원시 코드)로 복원하여, 복원된 소스 코드(원시 코드)로부터 악성 의심 데이터를 분석하는 방법이다.
예를 들어, 안드로이드 TM 운영체제에서는 안드로이드TM 플랫폼에서 애플리케이션 설치를 위해 배포되는 패키지 파일인 APK(Android Package)를 압축 해제하면, 메니페스트(Manifest)와 DEX(Dalvik Executable)와 네이티브 라이브러리(Native Library) 파일을 수집할 수 있다. Dex 파일은 달빅(Dalvik) 가상머신에 맞게 클래스 파일을 바이트 코드로 변환한 파일이다. 본 개시의 실시 예에서, 전자장치(100)는 안드로이드TM의 메니페스트와 DEX와 네이티브 라이브러리(Native Library)를 디컴파일 하여 소스 코드분석을 수행할 수 있다.
그리고 전자장치(100)는 실행파일의 기계코드가 암호화된 경우에도 기계코드를 디컴파일하여 복원된 소스 코드를 분석하여 실행파일에 포함된 악성코드로 의심되는 데이터를 수집할 수 있다. 예를 들어, 안드로이드TM 운영체제에서 소스코드에 암호화 및 난독화(예: proguardTM 등)가 적용되어 있다면 소스코드에 대한 해석이 어렵게 된다. 그러나, 암호화된 실행파일을 디컴파일하면 classes.dex파일을 얻을 수 있다. 디컴파일하여 획득한 classes.dex 파일에서 MainActivity.class를 java 파일로 변환해 소스코드를 확인할 수 있다.
    전자장치(100)는 실행 파일을 디컴파일을 하여 심볼 테이블, 문자 상수를 수집하여 네이티브 소스 레벨에서 데이터를 분석하여 실행파일에 포함된 악성코드로 의심되는 데이터를 수집할 수 있다. 소스 코드를 컴파일하여 바이너리를 획득할 때, 소스코드는 실행파일에 이용되는 함수 및 변수 등이 포함된 심볼 테이블 및 문자 상수를 가진다. 따라서, 컴파일 된 바이너리 파일을 디컴파일하여 다시 소스코드로 복원하여, 실행파일의 심볼 테이블 및 문자 상수를 수집할 수 있다.
예를 들어, 안드로이드TM 운영체제에서 JAVATM로 코딩 시 C 라이브러리를 사용해야 할 때(예: 오디오, 영상처리 등), JAVATM와 C 라이브러리를 연결해주는 JNI(Java Native Interface)가 필요하다. 즉, JNI는 안드로이드TM에서 C/C++로 작성한 API(Application Program Interface)를 JAVATM에서 호출하게 해준다. Java 소스 코드는 안드로이드TM 내에 있는 Dalvik 가상 머신에서 구동되지만, 안드로이드TM 운영체제를 사용하는 전자장치(100) 내의 센서나 커널 등은 JNI를 통해 C/C++로 접근한다. 따라서, 실행파일을 디컴파일하여 C/C++로 작성된 소스코드를 통해 안드로이드TM의 네이티브 소스 레벨인 JNI에 포함된 악성코드로 의심되는 데이터를 수집할 수 있다.
그리고 전자 장치(100)는 실행 파일을 LLVM(Low Level Virtual Machine) 컴파일러를 이용해 IR(Intermediate Representation) 코드 레벨로 디컴파일하여 네이티브 소스 레벨에서 악성 코드로 의심되는 데이터를 분석하여 실행파일에 포함된 악성코드로 의심되는 데이터를 수집할 수 있다.
즉, 전자장치(100)는 실행파일의 기계 코드인 타겟 코드(308)을 LLVM 컴파일러를 이용해 디컴파일하면 IR 코드 레벨에서 악성코드 의심 데이터를 분석하여 수집할 수 있다. 예를 들어, 전자장치(100)는 IR 코드 레벨에서 안드로이드TM의 네이티브(Native) 또는JNI(Java Native Interface) 레벨에서 악성 코드로 의심되는 데이터를 수집할 수 있다.
      전자장치(100)는 실행 파일의 메타데이터 및 모바일 운영체제 내에서의 상기 실행 파일의 실행 권한 정보를 바탕으로 악성 코드 의심 데이터를 분석하여 실행파일에 포함된 악성코드로 의심되는 데이터를 수집할 수도 있다. 실행파일의 메타데이터는 실행파일의 헤더파일 및/또는 다른 데이터 필드를 포함할 수 있고, 힙(heap) 크기(size), 스택 크기(stack size)의 분석을 통해 실행파일에 포함된 악성 코드로 의심되는 데이터를 수집할 수 있다.
또한, 실행파일이 모바일 운영체제(예, AndroidTM, iOSTM, 타이젠TM 등)에서 특정 애플리케이션에 접근 권한이 있는 지, 해당 접근 권한 정보를 분석하여 실행파일에 포함된 악성코드로 의심되는 데이터를 수집할 수 있다. 예를 들어, 각각의 운영체제에서 실행 파일의 권한 정보는 안드로이드TM의 경우 메니페스트 파일인 AndroidManifest.xml, iOSTM의 경우 Info.plist 파일, 타이젠TM의 경우 privilege_desc파일에 포함된다.
전자장치(100)는 실행 파일 내 다른 파일 포맷에 숨겨진 또 다른 실행 파일 혹은 커맨드를 검출하도록 특정 파일마다 복호화, 압축 해제, 헤더 파일 확인, 바이트 값 대조 등을 통해 파일 내부의 상이한 정보 데이터를 바탕으로 악성 코드 의심 데이터를 분석하여 실행파일에 포함된 악성코드로 의심되는 데이터를 수집할 수 있다.
예를 들어, AndroidTM의 패키지 파일인 APK에는 리눅스용 실행 파일 포맷인 ELF(Executable Linking Format)인 .so 파일이 ARM용으로 컴파일 되어 포함될 수 있다. 이때, 본 개시의 일 실시 예에 따른, 정적 분석(static analysis)를 통한 디컴파일러 툴을 이용하여 ELF파일에 대한 소스 코드 분석을 수행할 수 있다. 특히, ELF 파일의 경우 매직넘버를 통해 ELF 파일 내부의 속성(feature) 정보를 확인하여 악성 코드 의심 데이터를 분석하고 수집할 수 있다.
매직 넘버는 파일 포맷에 따라 파일의 헤더에 데이터 필드(fields)를 식별하는 매직 바이트이다. ELF 헤더는 실행파일에 대한 정보를 가지고 있으며, ELF의 매직넘버는 .ELF(0x7F 0x45 0x4C 0x46)이다. 이때, ELF 매직넘버는 파일이 오브젝트 파일인지, 실행파일인지, ELF 버전, 또는 어떤 운영체제와 비트를 위해 컴파일 된 파일인지 등에 대한 데이터 및 정보가 포함되어 있다.
또 다른 예로, 매직 넘버(Magic Number) 상의 실제 파일 포맷(예: 악성 .so 파일)과 파일의 확장자(예: .png 또는.jpg 등과 같은 사진 파일)가 상이할 경우, 악성 코드 의심 데이터 수집 모듈(202)은 실행파일에 포함된 악성코드로 의심되는 데이터를 수집할 수 있다.
또 다른 예로, 실행파일의 확장자가 .png 또는.jpg 등과 같은 사진 파일일 때, 실행파일은 사진 파일 포맷을 위장하여 다른 실행 파일 혹은 커맨드를 포함할 수 있다. 이때, 악성코드 의심 데이터 수집 모듈(202)은 특정 파일(예: .jpg 또는.png 등과 같은 사진 파일 포맷)이 압축되어 있을 때 압축을 해제하고, 특정 파일이 암호화되어 있을 때 특정 파일마다 복호화하여, 악성 코드 의심데이터를 분석할 수 있다. 그리고 복호화하고 압축 해제된 실행파일을 디컴파일하여 실행파일의 헤더파일 및 바이트 값을 대조하여 파일 내부에 악성 코드 의심 데이터를 분석하여 실행파일에 포함된 악성코드로 의심되는 데이터를 수집할 수 있다.
전자장치(100)는 전처리 과정을 통해 정규화된 데이터를 확률 모델 알고리즘에 입력 받아 악성 코드 의심 데이터를 판단할 수 있다(S504). 이때, 전자장치(100)는 입력 받은 데이터를 바탕으로 실행 파일이 악성 코드 의심 데이터를 포함하고 있는 지 추론(deducing)할 수 있다.
본 개시의 일 실시 예로, 본 개시의 일 실시 예들은 딥러닝(deep learning), SVM(Support Vector Machine), 신경망(Neural Network) 알고리즘 등의 인공지능 확률 모델 알고리즘을 이용하여 구현할 수 있다. 상술한 인공지능 확률 모델 알고리즘은 머신 러닝(Machine Learning)이 확장된 형태이다.
일반적인 머신 러닝(Machine Learning) 확률 모델 알고리즘은 수집된 데이터를 정규화 수집된 데이터를 전처리(pre-processing)과정을 통해 정규화하여 확률 모델 알고리즘에 입력한다.
전처리 주요 과정으로 누락된 값(missing value)를 채우는 데이터 클리닝 과정을 수행할 수 있다. 예를 들어, 베이즈 공식(Bayesian fomula)이용하여 누락된 값을 채울 수 있다. 또한, 데이터 통합(integration)과정으로 일관성이 없는 데이터를 수정하고, 중복되는 데이터는 중복성을 해결할 수 있다. 이때, 같은 의미를 갖는 속성(feature) 데이터의 표현법이 다를 때, 표현을 하나의 규칙으로 저장할 수 있으며 correlation analysis 를 통해 데이터의 중복을 해결할 수 있다. 이외에도 다양한 방법을 통해 데이터 전처리 과정을 이용한 데이터의 정규화를 수행하도록 구현할 수 있다.
즉, 머신 러닝(Machine Learning) 알고리즘은 데이터를 수집하여 분석하고, 분석된 데이터의 전처리를 수행하여, 전처리된 데이터들의 특징을 추출하여, 목적에 맞는 알고리즘을 선택하여 반복 학습을 통해 최종의 결과를 도출하게 된다. 따라서, 머신 러닝은 전문가에 의해 해당 데이터에 대한 특징을 가정하고 추출해 낼 수 있도록 알고리즘을 직접 만들어 문제를 해결할 수 있다.
반면, 본 개시에서 사용되는 딥러닝(Deep Learning)은 상술한 머신 러닝에서의 전처리 과정을 신경망 아키텍처 내에 포함 시켜 데이터 추출 자체도 스스로 학습하는 알고리즘이다. 따라서, 딥러닝 알고리즘을 확률 모델 알고리즘으로 이용할 경우 본 개시에서 이용한 전처리 과정을 생략할 수 있어 더 빠르고 정확한 추론 결과를 획득할 수 있다.
또한, 일반적인 머신 러닝(Machine Learning) 알고리즘은 각 특성(feature)에 관련된(associated) 값(value)의 선형 조합(linear combination)을 계산하여 추론 결과를 도출한다. 반면, 딥러닝 알고리즘은 비선형(non-linear) 변환기법의 조합을 통해 높은 수준의 추상화(abstractions)를 할 수 있다. 즉, 딥러닝 알고리즘은 다량의 데이터나 복잡한 자료들 속에서 핵심적인 내용 또는 기능을 요약하는 작업을 전처리 과정 없이 자동으로 수행할 수 있다.
전자장치(100)는 실행파일이 확률 모델 알고리즘을 통해 악성 코드 의심 데이터일 확률을 출력할 수 있다(S505). 전자장치(100)는, 도4에 상술한 바와 같이 추론된(deducted) 실행파일의 악성코드 가능성을 확률 데이터를 디스플레이를 통해 표시할 수 있다. 추론된 결과를 전자 장치(100)에 표시하는 다양한 방법은 당업자들에게 다양하게 응용 변경될 수 있으므로 상세한 설명을 생략하기로 한다.
그리고 전자장치(100)는 출력된 악성코드 및 악성코드 의심 데이터 및 파일 정보를 메모리에 메모리에 저장할 수 있다(S506). 이때, 저장된 악성코드 관련 데이터는 확률 모델 알고리즘을 구현할 때 빅데이터 기반의 데이터베이스로 이용될 수 있다.
도 6은 본 개시의 일 실시 예에 따른 악성 코드 의심 데이터를 수집하는 방법을 설명하기 위한 순서도이다.
도 6을 참조하면, 전자장치(100)는 실행 파일이 악성코드를 포함하고 있는지, 악성코드일 위험성이 있는지를 분석할 수 있다(S601). 본 개시의 일 실시 예에 따라, 전자장치(100)는 실행파일을 수신하고 실행파일이 설치되기 전에 실행파일을 분석할 수 있다.
예를 들어, 전자장치(100)는 안드로이드TM의 애플리케이션 마켓 또는 IOSTM의 APP Store에서 실행파일을 수신할 수 있다. 다른 예로, 전자장치(100)는 SMS API, 앨범 API, MUSIC API, 게임 API 등의 다양한 API를 통해서 외부장치 또는 서버로부터 실행파일을 수신할 수 있다.
본 개시의 일 실시 예로, 안드로이드TM 운영체제를 예로 들어 설명하기로 한다. 안드로이드TM의 실행파일은 APK라는 패키지 파일 구조를 가진다. 이때, 전자장치(100)는 zip 포맷으로 압축된 안드로이드TM APK의 압축을 해제하여 APK 내부 구조를 분석할 수 있다.
본 개시의 일 실시 예에 따라, 전자 장치(100)는 실행파일의 정적 분석을 수행하여 악성코드 의심 데이터를 수집할 수 있다(S602). 정적 분석은 악성코드 분석 대상인 실행파일의 실행 코드를 디컴파일/디스어셈블링하여 얻어진 소스 코드(원시 코드)를 해석해서 소스 코드에 포함된 악성 코드 의심 데이터를 추출하여 수집할 수 있다. 디컴파일된 소스 코드는 실행파일이 무슨 동작을 수행할 것인지 판단할 수 있는 바이트 코드(Byte Codes) 또는 어셈블리 랭귀지(Assembly languages)가 포함될 수 있다.
또한, 전자장치(100)는 복원된 소스코드의 네이티브 명령(native instructions), 바이트 코드(Byte Codes), 함수 이름들, 데이터 흐름 등을 분석하여 악성코드 의심 데이터를 수집할 수 있다.
또한, 전자장치(100)는 복원된 소스 코드에서 루트 권한을 탈취하거나 사용자의 사적인(private) 데이터를 외부로 보내는 등의 악성 행위가 실행파일에 포함되어 있는지 수집할 수 있다. 즉, 전자장치(100)는 실행파일이 사용자의 허락(permission)없이 사용자의 개인정보를 외부로 보내거나, SMS 전송, GPS 정보 사용, 사진 파일 외부 전송 등을 수행하는 지 분석하여 악성 코드 의심 데이터를 수집할 수 있다.
도 5에서 상술한 바와 같이, 본 개시의 일 실시 예로, 전자장치(100)는 안드로이드TM의 압축 해제된 APK를 디컴파일하여 Manifest 파일 및 DEX(Dalvik Executable)파일 및 네이티브 라이브러리(Native Library) 파일을 수집할 수 있다.
본 개시의 일 실시 예에 따라, 전자장치(100)는 안드로이드TM에서 메니페스트 분석 후, 코드 분석을 위해 Dex파일을 디컴파일하여 소스코드를 분석할 수 있다. 이때, 기계코드의 일부가 암호화되어 있더라도, 암호화된 코드를 복호화하고, 전자장치(100)는 복호화된 코드를 디컴파일하여 소스코드로 복원할 수 있다. 전자장치(100)는 복원된 소스코드를 분석하여 실행파일의 악성코드 의심 데이터를 수집할 수 있다.
예를 들어, 복호화된 dex파일의 시그니처(signature)와 메모리에 저장된 dex파일의 시그니처(signature) 스트링을 검색하여 매핑 된 주소를 비교할 수 있다. 전자장치(100)는 매핑 된 주소에서 최적화된 Dex의 시그니처를 확인하고, dex 헤더를 통해 메모리에서 찾은 dex가 복호화된 dex의 것인지 확인할 수 있다. 이를 통해, 전자장치(100)는 암호화된 기계 코드를 디컴파일하여 복원된 소스 코드를 분석하여 실행파일에 포함된 악성코드 의심 데이터를 수집할 수 있다.
그리고 전자 장치(100)는 디컴파일된 네이티브 라이브러리(Native Library) 파일의 소스코드를 통해 심볼 테이블, 문자 상수를 수집하여 네이티브 소스 레벨에서 악성코드 의심 데이터를 수집할 수 있다(S603).
도5에서 상술한 바와 같이, 전자장치(100)는 소스 코드를 컴파일하여 바이너리를 획득할 때, 소스코드는 실행파일에 이용되는 함수 및 변수 등이 포함된 심볼 테이블 및 문자 상수를 가진다. 따라서, 컴파일 된 바이너리 파일을 디컴파일하여 다시 소스코드로 복원하여, 실행파일의 심볼 테이블 및 문자 상수를 수집할 수 있다. 구체적인 예시는 도5에 상술하였으므로 여기에서는 이에 대한 설명은 생략하기로 한다.
또한, 전자장치(100)는 LLVM 컴파일러를 이용하여 실행파일을 LLVM IR 코드로 디컴파일하여 LLVM IR 코드 레벨에서 실행파일의 네이티브 소스 코드를 분석하여 악성코드 의심 데이터를 분석하여 수집할 수 있다(S604). 이때, 전자장치(100)는 LLVM 컴파일러를 통해 실행파일의 기계 코드를 LLVM 바이트 코드(Bytes Code)인 IR(Intermediate Representation) 코드로 변환할 수 있다.
 예를 들어, 전자장치(100)는 IR 코드 레벨에서 안드로이드TM의 네이티브(Native) 또는JNI(Java Native Interface) 레벨에서 악성 코드로 의심되는 데이터를 수집할 수 있다. LLVM IR 코드에 대한 구체적인 설명은 도3 및 도5에서 상술하였으므로 여기에서는 이에 대한 설명은 생략하기로 한다.
그리고 전자장치(100)는 실행파일의 모바일 운영체제(예: AndroidTM, IOSTM, 타이젠TM, 등)에 대한 실행 권한 정보 및 메타데이터 분석을 통해 악성코드 의심 데이터를 수집할 수 있다(S605).
본 개시의 일 실시 예에서, 모바일 운영체제에 대한 실행 권한 정보는, 안드로이드TM의 경우 메니페스트 파일이며, 타이젠TM의 경우 privilege_desc 파일, IOSTM의 경우 Info.plist 파일이다.
예를 들어, 안드로이드TM의 메니페스트(Manifest) 파일은 애플리케이션의 실행파일에서 사용하는 권한과 컴포턴트 및 애플리케이션의 엔트리 포인트(entry point)를 기술하고 있다. 따라서, 본 개시의 일 실시 예에 따라, 실행파일의 악성코드 의심 데이터를 분석하기 위해, 전자장치(100)는 메니페스트의 엔트리 포인트를 분석하여 데이터를 수집할 수 있다.
구체적으로 예를 들어, 안드로이드TM의 메니페스트의 코드는 다음과 같다. <application
  android:theme= "@android:0103000F"
  android:label="@7F050000"
  android:icon="@7F020001"
  android:name="APKPMainAPP1345F"
  android:debuggable="true"
  android:allowBackup="true"
  >
  <activity
     android:label="@7F050000"
     android:name="com.goolge.xps.gfcfc.MainActivity"
     >
     <intent-filter
        >
        <action
           android:name="android.intent.action.MAIN"
           >
        </action>
        <category
           android:name="android.intent.category.LAUNCHER"
           >
        </category>
     </intent-filter>
  </activity>
이때, <activity></activity> 사이에 기술된 속성은 실행파일의 엔트리 포인트이며, 실행파일 실행 시 최초로 실행되는 코드이다. 따라서, 전자장치(100)는  <activity>와 </activity> 사이의 MainActivity 클래스의 분석을 통해 이후 호출되는 클래스들을 순서대로 분석하면서 악성코드 의심 데이터를 수집할 수 있다.
그리고 전자장치(100)는 다른 파일 포맷에 숨겨진 파일 또는 커맨드를 검출하여 악성코드 의심 데이터를 분석하고 수집할 수 있다(S606).
구체적으로 예를 들어, 안드로이드TM의 숨겨진 파일인 APK 파일에는 dex파일과는 다른 ELF와 같은 다른 파일 포맷으로 파일이 포함될 수 있다. 압축 해제된 APK파일에는 NDK(Native Development Kit) 라이브러리 파일이 있을 수 있다. 이때, NDK파일에는 .so 파일 확장자를 가진 리눅스용 실행파일 포맷인 ELF(Executable Linking Format)이 arm용으로 컴파일 되어 있을 수 있다. 이때, 전자 장치(100)는 본 개시의 일 실시 예에 따라, 정적 분석을 통해 ELF파일을 디컴파일하여 복원한 소스코드를 분석하여 실행파일에 포함된 악성코드 의심 데이터를 수집할 수 있다. 이때, 전자장치(100)는 ELF의 심볼 테이블 또는 문자상수를 통해 악성코드 의심 데이터를 수집할 수 있다. 또는, 전자장치(100)는 ELF 파일을 디컴파일하여 복원된 IR 코드 또는 소스 코드를 통해 악성코드 의심 데이터를 수집할 수 있다.
또한, 안드로이드TM에서 실행파일이 특정 파일(예: 이미지, 동영상 파일 등)의 확장자로 표현되어 있을 때, 특정파일의 루트 권한 획득을 판단하기 위해 실행파일의 커맨드(command)를 검출하여 악성코드 의심 데이터를 수집할 수 있다. 이때, 루트 권한 획득이란 특정 파일이 안드로이드TM에서 특정 파일이 실행될 수 있는 경로에 진입하고 해당 API에 접근할 수 있는 권한을 의미한다.
이때, 전자장치(100)는 특정 파일 포맷의 루트 권한을 검출하기 위해서 특정 파일에 대해서 복호화, 압축해제를 통해 특정파일의 파일 구조를 추출할 수 있다. 전자장치(100)는 추출된 특정파일의 바이트 값을 대조하여 특정 파일 내부에 의도된 상이한 확장자 정보를 분석하여 악성코드 의심 데이터를 수집할 수 있다.
예를 들어, 실행파일이 .png 또는 .jpg 파일 확장자를 가진 이미지 파일을 경우, 실행파일은 사용자의 앨범 등과 같은 사진파일이 접근 가능한 API에 루트 권한을 획득할 수 있다. 그러나, 실행파일이 의도적으로 악성코드를 포함하는 사진파일로 위장된 파일일 수 있다. 따라서, 전자장치(100)는 이미지 파일 포맷의 확장자를 지닌 실행파일도 복호화 및 압축해제를 통해 바이트 값을 대조함으로써, 파일 포맷에 의도된 악성코드 의심 데이터가 있는지 수집할 수 있다. 그러나, 상술한 예시들은 본 개시를 설명하기 위한 일 실시 예일 뿐, 다양한 파일 포맷에 본 개시는 적용될 수 있다.
또한, 전자장치(100)는 실행파일의 메타데이터를 통해 악성코드 의심 데이터를 분석할 수 있다. 메타데이터는 실행파일의 헤더파일 및/또는 다른 데이터 필드를 포함할 수 있다. 메타데이터는 실행파일의 다양한 특성(characteristics)를 나타낼 수 있다. 예를 들어, 메타데이터는 힙(heap) 크기(size), 스택 크기(stack size), 헤더 사이즈, 이미지 사이즈, 코드 섹션 사이즈, 초기화 데이터 사이즈 등 다양한 특성 필드(characteristics fields)를 포함할 수 있다. 전자 장치(100)는 실행파일의 특성 필드들(예, heap size, stack size, etc.)의 분석을 통해 실행파일에 포함된 악성 코드로 의심되는 데이터를 수집할 수 있다.
그리고 전자장치(100)는 상술한 바와 같이 분석된 실행파일의 악성코드 의심 데이터를 쓰레드(thread)를 생성하여 동시에 수집할 수 있다(S607). 전자장치(100)는 수집된 악성 코드 의심 데이터를 메모리에 저장하여 데이터베이스로 이용할 수 있다.
도 7은 본 개시의 일 실시 예에 따른 수집된 악성 코드 의심 데이터를 통계화하는 방법을 설명하기 위한 순서도이다.
도7을 참조하면, 전자장치(100)는 수집된 악성 코드 의심 데이터를 전처리 과정을 통해 정규화하여 및 메모리에 저장할 수 있다(S701). 일반적인 머신 러닝 알고리즘은 수집된 데이터의 전처리(pre-processing)을 통해 데이터를 정규화(normalization)하여 사용한다. 전처리과정에 대해서는 도5에서 상술하였으므로 여기에서는 이에 대한 설명은 생략하기로 한다.
전자장치(100)는 전처리 과정을 거쳐 정규화된 데이터를 확률 모델 알고리즘에 입력 받는다(S702). 본 개시의 실시 예에 따라, 확률 모델 알고리즘은 딥러닝(deep learning), SVM(Support Vector Machine), 신경망(Neural Network) 등의 인공지능 확률 모델 알고리즘을 이용하여 구현할 수 있다. 상술한 인공지능 확률 모델 알고리즘은 머신 러닝(Machine Learning)이 확장된 형태이다.
전자장치(100)는 확률 모델 알고리즘을 통해 악성 코드 의심 데이터 판단할 수 있다(S703). 도5에서 상술한 바와 같이, 본 개시에서 사용되는 딥러닝(Deep Learning) 알고리즘에서는 상술한 머신 러닝(Machine Learning)에서의 전처리 과정을 신경망 아키텍처 내에 포함시켜, 데이터 추출 자체도 스스로 학습하는 알고리즘이다. 따라서, 딥러닝 알고리즘을 확률 모델 알고리즘으로 이용할 경우, 본 개시에서 이용한 전처리 과정을 생략할 수 있어 더 빠르고 정확한 추론 결과를 획득할 수 있다.
구체적으로, 표1 및 표2에서 개시된 바와 같이 본 개시를 통한 악성코드 여부 판단 결과는 높은 정확도를 도출할 수 있다.
테스트 환경
운영체제 안드로이드TM
악성코드 출처 Contagio MobileTM
악성코드 생성 시기 2014년 이후
악성 코드 개수 137
기존 악성코드 검출 프로그램과 본 개시의 테스트 결과 비교
구분 정확도
기존 악성 코드 탐지 기술(McAfeeTM) 83.94%
 
본 개시
False-Positive 1% 94.16%
Threshold 49.7%
False-Positive 2% 96.35%
Threshold 28.5%
그리고 전자장치(100)는 확률 모델 알고리즘을 통해 획득한 악성코드 의심 데이터의 확률 수치를 출력할 수 있다(S704). 전자장치(100)는 악성코드에 대한 다양한 정보를 포함하는 UI(User Interface)를 제공할 수도 있으나, 본 개시를 통해 실행파일의 악성코드 의심 확률을 수치화하여 간단한 UI(User Interface)를 제공할 수도 있다. 본 개시를 통한 UI는 도4 및 도5에서 구체적으로 개시하였으므로 여기에서는 이에 대한 설명은 생략하기로 한다.
도 8은 본 개시의 일 실시예에 따른 제 1 전자 장치에서 악성 코드 의심 데이터를 검출하고, 제 2 전자 장치로 검사 결과를 전송하는 상황을 설명하는 도면이다.
상술한 전자 장치(100)는 다양한 형태일 수 있다. 도 8을 참조하면, 전자 장치(100)는 프린터(820), 냉장고(830), 스마트 폰(850), 태블릿(860) 등일 수 있다. 이하에서는 프린터(820), 냉장고(830)를 제 1 전자 장치(810)로 가정하고 스마트 폰(850), 태블릿(860)을 제 2 전자 장치(840)로 가정하여 설명한다. 제 1 전자 장치(810)는, 예를 들면, 부피가 크거나 질량이 커서 사용자의 휴대가 어렵고 또한 장치의 특성상 한번 위치가 정해지면 위치 이동이 어려운 전자 장치를 포함할 수 있다. 제 2 전자 장치(840)는, 예를 들면, 부피가 작아 사용자가 휴대할 수 있는 전자 장치를 포함할 수 있다. 그러나 상술한 예는 이에 한정되지 않고 제 1 전자 장치(810)와 제 2 전자 장치(840)에 속한 전자 장치들은 상호 변경이 가능하며 또한 다양한 전자 장치들을 포함할 수 있다.
제 1 전자 장치(810) 및 제 2 전자 장치(840)는 도 1의 전자 장치(100)를 참조할 수 있다. 따라서, 제 1 전자 장치(810) 및 제 2 전자 장치(840) 각각은 디스플레이, 프로세서(미도시), 메모리(미도시), 입력부(미도시), 및 통신부(미도시)를 포함할 수 있다. 전자 장치(100)의 각 구성 요소의 기능은 도 1 에서 설명하였으므로 자세한 설명은 생략한다. 또한, 제 1 전자 장치(810) 및 제 2 전자 장치(840)는 도 1의 전자 장치(100)와 동일 또는 유사한 과정으로 실행 파일에서 악성 코드를 검출하고, 분석 결과를 표시할 수 있다. 전자 장치(100)에서 악성 코드를 검출하고, 분석 결과를 표시하는 과정은 상술하였으므로 자세한 설명은 생략한다.
도 8을 참조하면, 제 1 전자 장치(810)는 악성 코드를 검출한 결과를 제 2 전자 장치(840)로 전송할 수 있다. 예를 들어, 제1 전자 장치(810)인 프린터(820)는 출력 옵션을 추가하는 실행 파일을 다운로드 하고, 실행 파일이 설치되기 전 악성 코드를 검사하여, 악성 코드 검사 결과를 제2 전자 장치(840)인 스마트 폰(850)으로 전송할 수 있다. 스마트 폰(850) 또는 태블릿(860)은 프린터(820)로부터 수신 받은 악성 코드 검사 결과에 기반하여 각각의 디스플레이(855, 865)에 경고 메시지(856, 866)를 표시할 수 있다.
제 1 전자 장치(810)는 제 2 전자 장치(840)로 악성 코드 분석 결과를 다양한 방법으로 전송할 수 있다. 예를 들어, 제 1 전자 장치(810)는 악성 코드 분석 결과를 전송할 제 2 전자 장치(840)를 사전에 지정할 수 있다. 이 경우, 제 1 전자 장치(810)는 악성 코드 분석 결과가 도출되면, 제1 전자 장치(810)의 통신부(미도시)를 이용하여 제 2 전자 장치(840)로 악성 코드 분석 결과를 전송할 수 있다.
본 개시의 다른 실시 예에 따라, 제 1 전자 장치(810)는 제 2 전자 장치(840)를 검색한 후, 검색된 제2 전자 장치(840)에 악성 코드 분석 결과를 전송할 수 있다. 예를 들어, 제 1 전자 장치(810)는, 제1 전자 장치(810)로부터 기 설정된 거리 내에 있는 복수의 제 2 전자 장치(840)를 검색한 후 검색된 제 2 전자 장치(840) 중 적어도 하나의 제2 전자 장치(840)에 악성 코드 분석 결과를 전송할 수 있다. 제 1 전자 장치(810)는 BT, Wifi, NFC 등의 근거리 통신 방법을 이용하여 제 2 전자 장치(840)를 검색할 수 있다. 그리고, 제 1 전자 장치(810)는 검색된 제 2 전자 장치(840)에 악성 코드 분석 결과를 전송할 수 있다.
그러나 상술한 예들은 이에 한정되지 않고, 제 1 전자 장치(810)는 다양한 셀룰러(cellular) 통신(예: LTE, LTE-A, CDMA, WCDMA, UMTS, Wibro 또는 GSM 등), 유선 통신(예: USB(universal serial bus), HDMI(high definition multimedia interface), RS-232(recommended standard 232) 또는 POTS(plain old telephone service)) 방법을 이용하여 제 2 전자 장치(840)를 검색하고, 검색된 제2 전자 장치(840)에 악성 코드 분석 결과를 전송할 수 있다.
본 개시의 다른 실시예에 따르면, 제 1 전자 장치(810)는 제1 전자 장치(810)와 동일한 ID(Identification)로 로그인 되어 있는 제 2 전자 장치(840)에 악성 코드 분석 결과를 전송할 수 있다. 예를 들어, 제 1 전자 장치(810)와 제 2 전자 장치(840)는 동일한 악성 코드 분석 프로그램을 공유할 수 있다. 제 1 전자 장치(810)와 제 2 전자 장치(840) 각각은 악성 코드 분석 프로그램을 제공하는 서버로부터 악성 코드 분석 프로그램을 다운로드 하여 설치하고, 상황에 맞추어 제 1 전자 장치(810) 및/또는 제 2 전자 장치(840)에서 악성 코드 분석을 실행할 수 있다. 이 경우, 제 1 전자 장치(810)는 악성 코드 분석 결과를 상기 서버에 전송할 수 있다. 서버는 수신된 제 1 전자 장치(810)의 악성 코드 분석 결과를 제 2 전자 장치(840)로 전송할 수 있다.
또한, 다른 실시예에 따르면, 제 1 전자 장치(810)와 제 2 전자 장치(820)는 서로 다른 악성 코드 분석 프로그램을 설치할 수 있다. 예를 들어, 제 1 전자 장치(810)와 제 2 전자 장치(820)는 하나의 ID로 다양한 서비스 또는 다양한 어플리케이션을 실행할 수 있는 싱글 사인 온(Single Sign On) 방법을 사용하여 서로 다른 악성 코드 프로그램을 설치하여 악성 코드 분석을 하고 그 결과를 공유할 수 있다.
상기와 같이 다양한 방법을 이용하여 제 1 전자 장치(810)는 악성 코드 분석 결과를 제 2 전자 장치(840)와 공유할 수 있다. 이로 인해, 제 2 전자 장치(840)를 휴대하고 있는 사용자는 제 1 전자 장치(810)와 물리적으로 이격되어 있는 상황에서도 제 1 전자 장치(810)에 설치하고자 하는 파일에 포함된 악성 코드 유무를 판단할 수 있다.
도 9 및 도 10은 본 개시의 일 실시예에 따른 전자 장치에 악성 코드 검출 프로그램이 없을 때, 악성 코드 의심 데이터를 검출하는 상황에 대한 도면이다.
도 9 및 도 10을 참조하면, 제 1 전자 장치(810)는 새로운 실행 파일을 다운로드 하여 설치할 수 있다(S910). 예를 들어, 제 1 전자 장치(810)는 AndroidTM 및 iOSTM에서 애플리케이션 스토어(application store)를 통해 다양한 실행 파일을 수신할 수 있다.
제 1 전자 장치(810)는 악성 코드를 검출할 수 있는 프로그램이 설치되어 있지 않지만, 수신된 실행 파일이 악성 코드 검사를 받았는지 확인할 수 있다(S920:Y). 예를 들어, 제1 전자 장치(810)는 악성 코드 여부에 대한 검사를 받은 실행 파일에 대하여, 실행 파일의 기 설정된 영역에 악성 코드 검사를 진행했는지 여부에 대한 기록을 저장할 수 있다. 이 경우, 제 1 전자 장치(810)가 실행 파일을 설치하고자 하는 명령을 사용자로부터 입력 받을 때, 제 1 전자 장치(810)는 실행 파일에서 악성 코드 검사를 진행했는지 여부에 대한 기록을 확인할 수 있다.
악성 코드 검사가 진행되지 않은 경우(S920:N), 제 1 전자 장치(810)는 다양한 무선 통신, 유선 통신, 셀룰러(Cellular) 통신 방법을 이용하여 악성 코드 검사가 가능한 제 2 전자 장치(840)를 확인할 수 있다(S930). 예를 들어, 제1 전자 장치(810)는 지정된 영역 내에서 제2 전자 장치(840)를 검색하거나, 지정된 제2 전자 장치(840)를 기 설정하거나, 제1 전자 장치(810)와 동일한 ID로 로그인 된 제 2 전자 장치(840)를 확인할 수 있다(S930).
제 1 전자 장치(810)는 확인된 제 2 전자 장치(840)로 실행 파일을 전송할 수 있다(S940). 제 2 전자 장치(840)는 수신된 실행 파일에 대하여 악성 코드 검사를 수행하고, 그 결과를 제2 전자 장치(840)의 각각의 디스플레이(855, 865)에 표시할 수 있다. 이때, 제2 전자 장치(840)는 제1 전자 장치(810)와의 무선 통신 방법 및 사용자 명령 등을 통하여 악성 코드 검사가 완료된 실행 파일을 제1 전자 장치(810)에 전송할 수 있다. 제 1 전자 장치(810)는 제 2 전자 장치(840)로부터 악성 코드 검사가 끝난 실행 파일을 수신할 수 있다(S950). 제 1 전자 장치(810)는 제2 전자 장치(840)로부터 수신된 실행 파일을 설치할 수 있다(S960).
상술한 바와 같이, 본 개시의 실시 예들에 따라, 제 1 전자 장치(810)는 악성 코드를 검출할 수 있는 프로그램을 설치하고 있지 않더라도, 제 1 전자 장치(810)와 유선 또는 무선으로 연결이 가능한 제 2 전자 장치(840)를 이용하여 실행 파일 설치 전에 악성 코드를 검출할 수 있다.
도 11은 본 개시의 일 실시예에 따른 전자 장치가 악성 코드 의심 데이터를 검출하는 다른 상황에 대한 도면이다.
도 11을 참조하면, 제 1 전자 장치(810)는 건물 안에 배치된 사물 인터넷(Internet Of Things)과 관련된 장치일 수 있다. 사물 인터넷은, 예를 들면, 사람, 사물, 공간, 데이터 등이 인터넷으로 서로 연결되어, 정보가 생성, 수집, 공유, 활용 되는 것을 의미할 수 있다.
본 개시의 일 실시 예에 따라, 제 1 전자 장치(810)는 다양한 데이터를 수집하고 생성한 후 다양한 통신 기술을 이용하여 타 전자 장치로 데이터를 전송하는 사물 인터넷 센서 장치일 수 있다. 예를 들어, 제 1 전자 장치(810)는 온도 장치(811), 보안 카메라(813), 전등(815), TV(817) 등과 연관되어 정보를 수집하고 외부로 전송하는 센서 장치일 수 있다. 예를 들어, 온도 장치(811), 보안 카메라(813), 전등(815), TV(817) 등은 상술한 센서를 내장한 일체형으로 구성될 수 있다. 그러나 상술한 예들은 본 개시를 설명하기 위한 예일 뿐 이에 한정되지 않는다.
각각의 센서 장치(810)들은 생성한 데이터를 각 센서와 연관된 장치로 전송하거나, 다른 장치로 전송하여 각 장치들의 동작에 활용될 수 있다. 또한 각각의 센서 장치(810)들은 생성한 데이터를 제 2 전자 장치(840)로 전송할 수 있다.
예를 들어, 보안 카메라(813)가 인식한 피사체의 얼굴이 기 인식된 건물에 주거하는 사람이라면, 보안 카메라(813)와 연관된 센서 장치(810)는 전등과 연관된 센서 장치(810)에 거주인이 접근했음을 알리는 데이터를 전송할 수 있다. 전등(815)과 관련된 센서 장치(810)는 수신된 데이터를 전등(815)에 전송하여 건물 내부의 전등(815)을 활성화 시킬 수 있다.
이와 같은 사물 인터넷과 관련된 센서 장치(810)들은 필요한 경우 소프트웨어(SW, Software) 업데이트 또는 펌웨어 업데이트 등을 수행할 수 있다. 센서 장치(810)는 SW 업데이트를 위해서 필요한 파일을 다운로드 받아 설치될 수 있다. 센서 장치(810)는 악성 코드를 검출할 수 있는 프로그램이 설치되어 있지 않을 수 있다. 이 경우, 제 2 전자 장치(840)는 센서 장치(810)에 설치할 파일에 대하여 악성 코드 검사를 수행한 후, 검사가 완료된 파일을 센서 장치(810)에 전송할 수 있다. 센서 장치(810)는 수신된 파일을 이용하여 SW 업데이트를 진행할 수 있다.
또한, 다양한 실시예에 따라, 센서 장치(810)에 악성 코드 검출 프로그램이 설치된 경우, 센서 장치(810)는 SW 업데이트를 위해 필요한 파일을 수신 받아 악성 코드 검사를 진행할 수 있다. 이 경우, 센서 장치(810)는 검사 결과를 제 2 전자 장치(840)로 전송할 수 있다.
      도1 내지 도11에서 상술한 바와 같이 본 개시에서 실행파일의 악성 코드 인식률은 딥러닝 엔진에 입력되는 악성코드 분석용 데이터(특징 데이터)를 통해 높은 악성코드 인식률을 획득할 수 있다. 이를 위해, 전자 장치(100)는 실행파일을 구동하는 전자장치(100) 내부의 특정 메모리 위치에 악성코드 분석용으로 수집된 데이터들을 저장시킬 수 있다. 구체적으로 수집된 정보들은 네이티브 소스를 분석하기 위한 데이터로 예를 들어 헤더파일 정보 및 함수 이름 등일 수 있다. 즉, 실행파일의 심볼 테이블, 문자 상수를 통해 수집된 악성 코드 의심 데이터, LLVM 컴파일러를 이용해 실행 파일을 IR 코드 레벨로 디컴파일하여 분석된 악성코드 의심 데이터일 수 있다.
      전자장치(100)는 상술한 네이티브 소스를 분석하기 위한 데이터에 대해 운영 체제에 루트 권한을 획득하여 수집된 악성 코드 의심 데이터를 램 또는 하드 디스크에 저장할 수 있다.
수집된 악성 코드 의심 데이터가 램에 저장되는 경우, 전자 장치(100)는 메모리 덤프 생성 과정을 통해 특정 위치 혹은 전체 메모리에 데이터를 저장할 수 있다. 예를 들어, 안드로이드TM는 DMA(Direct Memory Access) 방식을 이용하여 빠른 덤프가 가능하다. 또한, JTAG을 이용하여 OS(Operating System) 버전에 제한 받거나 루트 킷에 영향을 받는 가능성이 낮은 하드웨어적인 방법을 이용할 수도 있다. 다른 모바일 운영체제의 경우도 상술한 방법과 같은 방식으로 데이터를 저장하고 확인할 수 있다.
      반면, 수집된 악성 코드 의심 데이터가 하드 디스크에 저장되는 경우, 전자 장치(100)는 애플리케이션 레벨에서 동작할 때 특정 위치에 데이터를 저장할 수 있다. 예를 들어, 안드로이드TM는 수집된 데이터를 내장 메모리(/data/data/패키지명/databases/)에 저장할 수 있고, 외장메모리(/mnt/sdcard/패키지명/)에 저장할 수도 있다. 따라서, 전자장치(100)는 외장 메모리 및 외장 메모리의 특정 위치에 데이터를 저장하고 데이터의 위치를 확인할 수 있다. IOSTM의 경우에는 현재 폴더와 Documents 폴더에 악성코드 의심 파일로 분석된 파일을 저장하여 분석용 데이터의 위치를 확인할 수 있다.
      또 다른 예로, 클라우드 기반의 경우, 전자장치(100)는 수집된 데이터를 서버의 데이터 베이스에 업데이트하여 동적 분석(dynamic analysis)을 수행하도록 할 수 있다. 이때, 전자장치(100)는 서버로 보내는 분석용 데이터를 읽어 분석용 데이터를 확인할 수 있다.
      상술한 본 개시를 통한 방법들 및 전자장치(100)를 통해, 인터넷에 접속하여 악성 코드와 관련된 데이터 베이스를 업데이트하지 않더라도, 전자장치(100)는 사용자 디바이스의 로컬에서 인지 엔진(예: 딥러닝, SVM, 신경망 등)을 통해 악성 코드 의심 데이터를 분석할 수 있다. 또한, 인지 엔진은 자가 학습이 가능한 인공지능 형태로 구성되어 추가적인 데이트 베이스 업데이트가 불필요한 효과가 있다.
      또한 본 개시는, 전체적인 시나리오 관점에서, 데이터 베이스를 업데이트하고 서버로 실행파일을 전송하는 과정이 포함된 기존 악성 코드 탐지 기술보다 검사 시간을 줄일 수 있는 효과가 있다. 본 개시를 통한 방법들을 이용할 경우, 사용자 디바이스에서 구동되는 악성코드 분석 및 탐지 시간은 약1초 정도의 검사 시간이 사용되는 장점을 지닌다.
본 개시에 설명된 방법들은 컴퓨터에 의해 읽힐 수 있는 기록매체에 기록되고 컴퓨터에 의해 실행됨으로써 전술한 기능들이 실행될 수 있다.
이와 같이, 본 개시의 각 실시 예에 따른 방법을 실행시키기 위하여, 상술한 방법들은 컴퓨터의 프로세서(CPU)가 읽힐 수 있는 C, C++, Java, 기계어 등의 컴퓨터 언어로 코드화된 코드(Code)를 포함할 수 있다.
이러한 코드는 상술한 방법들을 컴퓨터(프로세서)가 실행시키는데 필요한 추가 정보나 미디어가 컴퓨터의 내부 또는 외부 메모리의 어느 위치(주소 번지)에서 참조되어야 하는지에 대한 메모리 참조 관련 코드를 더 포함할 수 있다.
또한, 컴퓨터의 프로세서가 전술한 기능들을 실행시키기 위한 원격(remote)에 있는 어떠한 다른 컴퓨터나 서버 등과 통신이 필요한 경우, 코드는 컴퓨터의 프로세서가 컴퓨터의 통신 모듈(예: 유선 및/또는 무선 통신 모듈)을 이용하여 원격(remote)에 있는 어떠한 다른 컴퓨터나 서버 등과 어떻게 통신해야만 하는지, 통신 시 어떠한 정보나 미디어를 송수신해야 하는지 등에 대한 통신 관련 코드를 더 포함할 수도 있다.
본 개시의 다양한 실시 예에 따른 장치 (예: 모듈들 또는 전자 장치(100)) 또는 방법 (예: 동작들)은, 예컨대, 컴퓨터로 읽을 수 있는 저장매체(computer-readable storage media)에 유지되는(maintain) 프로그램들 중 적어도 하나의 프로그램에 포함된 명령어(instructions)를 실행하는 적어도 하나의 컴퓨터(예: 프로세서 120)에 의하여 수행될 수 있다.
상기 명령어가 컴퓨터(예: 프로세서 120)에 의해 실행될 경우, 상기 적어도 하나의 컴퓨터는 상기 명령어에 해당하는 기능을 수행할 수 있다. 이 때, 컴퓨터로 읽을 수 있는 저장매체는, 예를 들면, 상기 메모리(130)가 될 수 있다.
프로그램은, 예로, 하드디스크, 플로피디스크, 마그네틱 매체 (magnetic media)(예: 자기테이프), 광기록 매체 (optical media)(예: CD-ROM (compact disc read only memory), DVD (digital versatile disc), 자기-광 매체 (magneto-optical media)(예: 플롭티컬 디스크 (floptical disk)), 하드웨어 장치 (예: ROM (read only memory), RAM (random access memory), 또는 플래시 메모리 등) 등과 같은 컴퓨터로 읽을 수 저장 매체에 포함될 수 있다.  이 경우, 저장 매체는 일반적으로 전자 장치(100)의 구성의 일부로 포함되나, 전자 장치(100)의 포트(port)를 통하여 장착될 수도 있으며, 또는 전자 장치(100)의 외부에 위치한 외부 기기(예로, 클라우드, 서버 또는 다른 전자 기기)에 포함될 수도 있다.  또한, 프로그램은 복수의 저장 매체에 나누어 저장될 수도 있으며, 이 때, 복수의 저장 매체의 적어도 일부는 전자 장치(100)의 외부 기기에 위치할 수도 있다.
명령어는, 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함할 수 있다. 상술한 하드웨어 장치는 다양한 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지다.
또한, 이상에서는 본 개시의 바람직한 실시 예에 대하여 도시하고 설명하였지만, 본 개시는 상술한 특정의 실시 예에 한정되지 아니하며, 청구범위에서 청구하는 본 개시의 요지를 벗어남이 없이 당해 발명이 속하는 기술분야에서 통상의 지식을 가진 자에 의해 다양한 변형실시가 가능한 것은 물론이고, 이러한 변형실시들은 본 개시의 기술적 사상이나 전망으로부터 개별적으로 이해되어서는 안될 것이다.
110: 디스플레이
120: 프로세서
130: 메모리
140: 입력부
150: 통신부

Claims (20)

  1. 전자 장치의 악성 코드 분석 방법에 있어서,
    실행 파일을 수신하는 단계;
    상기 수신된 실행 파일이 설치되기 전에, 상기 실행 파일을 분석하여 상기 실행 파일로부터 악성 코드 의심 데이터를 수집하는 단계;
    정규화된 상기 수집된 악성 코드 의심 데이터를 확률 모델 알고리즘을 바탕으로 분석하여 악성 코드 의심 데이터를 판단하는 단계; 및
    상기 판단 결과를 출력하는 단계;를 포함하고,
    상기 수집하는 단계는,
    상기 실행 파일의 기계 코드를 디컴파일하여 소스 코드 레벨로 복원하는 단계; 를 포함하고,
    상기 복원된 소스 코드 레벨에서 상기 실행 파일의 악성 코드로 의심되는 데이터를 수집하고,
    상기 복원하는 단계는,
    상기 실행 파일의 기계 코드가 암호화된 경우, 상기 기계 코드를 복호화 하고, 복호화된 코드를 디컴파일하여 소스 코드 레벨로 복원하는 악성 코드 분석 방법.
  2. 삭제
  3. 삭제
  4. 제1항에 있어서,
    상기 수집하는 단계는,
    상기 실행 파일의 심볼 테이블, 문자 상수를 수집하여 네이티브 소스 레벨에서 악성 코드로 의심되는 데이터를 분석하는 단계;를 포함하는 악성 코드 분석 방법.
  5. 제1항에 있어서,
    상기 수집하는 단계는,
    상기 실행 파일을 LLVM(Low Level Virtual Machine) 컴파일러를 이용해 IR(Intermediate Representation) 코드 레벨로 디컴파일하여 네이티브 소스 레벨에서 악성 코드로 의심되는 데이터를 분석하는 단계;를 포함하는 악성 코드 분석 방법.
  6. 제1항에 있어서,
    상기 수집하는 단계는,
    상기 실행 파일의 메타 데이터 및 모바일 운영체제 내에서의 상기 실행 파일의 실행 권한 정보를 바탕으로 악성 코드 의심 데이터를 분석하는 단계;를 포함하는 악성 코드 분석 방법.
  7. 제1항에 있어서,
    상기 수집하는 단계는,
    상기 실행 파일 내 다른 파일 포맷에 숨겨진 또 다른 실행 파일 혹은 커맨드를 검출하도록 특정 파일마다 복호화, 압축 해제, 헤더 파일 확인, 바이트 값 대조를 통해 상기 파일 내부의 상이한 정보 데이터를 바탕으로 악성 코드 의심 데이터를 분석하는 단계;를 포함하는 악성 코드 분석 방법.
  8. 제1항에 있어서,
    상기 수집된 데이터를 정규화하여 상기 정규화된 데이터가 상기 확률 모델 알고리즘에 입력될 수 있도록 하는 데이터 정규화 단계;를 더 포함하는 악성 코드 분석 방법.
  9. 제1항에 있어서,
    상기 출력하는 단계는,
    상기 판단 결과 악성 코드 데이터가 존재하는 것으로 판단되면, 상기 판단된 악성 코드 데이터의 유형 및 확률 정보 중 적어도 하나를 출력하는 악성 코드 분석 방법.
  10. 제1항에 있어서,
    상기 확률 모델 알고리즘은, 딥 러닝 엔진, SVM(Support Vector Machine), 신경망 알고리즘 중 적어도 하나인 악성 코드 분석 방법.
  11. 악성 코드 분석을 하는 전자 장치에 있어서,
    디스플레이; 및
    실행 파일을 수신하고, 상기 수신된 실행 파일이 설치되기 전에, 상기 실행 파일의 기계 코드를 디컴파일하여 소스 코드 레벨로 복원하고, 상기 복원된 소스 코드 레벨에서 상기 실행 파일의 악성 코드 의심 데이터를 수집하고, 정규화된 상기 수집된 악성 코드 의심 데이터를 확률 모델 알고리즘을 바탕으로 분석하여 악성 코드 의심 데이터를 판단하고, 상기 판단 결과를 출력하고, 실행 파일의 기계 코드가 암호화된 경우, 상기 기계 코드를 복호화하고, 복호화된 코드를 디컴파일하여 소스 코드 레벨로 복원하는 프로세서;를 포함하는 전자 장치.
  12. 삭제
  13. 삭제
  14. ◈청구항 14은(는) 설정등록료 납부시 포기되었습니다.◈
    제11항에 있어서,
    상기 프로세서는,
    상기 실행 파일의 심볼 테이블, 문자 상수를 수집하여 네이티브 소스 레벨에서 악성 코드로 의심되는 데이터를 분석하여 악성 코드 의심 데이터를 수집하는 전자 장치.
  15. ◈청구항 15은(는) 설정등록료 납부시 포기되었습니다.◈
    제11항에 있어서,
    상기 프로세서는,
    상기 실행 파일을 LLVM(Low Level Virtual Machine) 컴파일러를 이용해 IR(Intermediate Representation) 코드 레벨로 디컴파일하여 네이티브 소스 레벨을 분석하여 악성 코드 의심 데이터를 수집하는 전자 장치.
  16. ◈청구항 16은(는) 설정등록료 납부시 포기되었습니다.◈
    제11항에 있어서,
    상기 프로세서는,
    상기 실행 파일의 메타 데이터 및 모바일 운영체제 내에서의 상기 실행 파일의 실행 권한 정보를 분석하여 악성 코드 의심 데이터를 수집하는 전자 장치.
  17. ◈청구항 17은(는) 설정등록료 납부시 포기되었습니다.◈
    제11항에 있어서,
    상기 프로세서는,
    상기 실행 파일 내 다른 파일 포맷에 숨겨진 또 다른 실행 파일 혹은 커맨드를 검출하도록 특정 파일마다 복호화, 압축 해제, 헤더 파일 확인, 바이트 값 대조를 통해 상기 파일 내부의 상이한 정보 데이터를 분석하여 악성 코드 의심 데이터를 수집하는 전자 장치.
  18. ◈청구항 18은(는) 설정등록료 납부시 포기되었습니다.◈
    제11항에 있어서,
    상기 수집된 데이터를 정규화하여 상기 정규화된 데이터가 상기 확률 모델 알고리즘에 입력될 수 있도록 상기 정규화된 데이터를 저장하는 메모리;를 더 포함하는 전자 장치.
  19. ◈청구항 19은(는) 설정등록료 납부시 포기되었습니다.◈
    제11항에 있어서,
    상기 프로세서는,
    상기 판단 결과 악성 코드 데이터가 존재하는 것으로 판단되면, 상기 판단된 악성 코드 데이터의 유형 및 확률 정보 중 적어도 하나를 출력하는 전자 장치.
  20. 전자 장치의 악성 코드 분석 방법을 수행하기 위한 프로그램이 저장된 컴퓨터 판독 가능 기록 매체에 있어서,
    상기 악성 코드 분석 방법은,
    실행 파일을 수신하는 단계;
    상기 수신된 실행 파일이 설치되기 전에, 상기 실행 파일을 분석하여 상기 실행 파일로부터 악성 코드 의심 데이터를 수집하는 단계;
    정규화된 상기 수집된 악성 코드 의심 데이터를 확률 모델 알고리즘을 바탕으로 분석하여 악성 코드 의심 데이터를 판단하는 단계; 및
    상기 판단 결과를 출력하는 단계;를 포함하고,
    상기 수집하는 단계는,
    상기 실행 파일의 기계 코드를 디컴파일하여 소스 코드 레벨로 복원하는 단계; 를 포함하고,
    상기 복원된 소스 코드 레벨에서 상기 실행 파일의 악성 코드로 의심되는 데이터를 수집하고,
    상기 복원하는 단계는,
    상기 실행 파일의 기계 코드가 암호화된 경우, 상기 기계 코드를 복호화 하고, 복호화된 코드를 디컴파일하여 소스 코드 레벨로 복원하는 컴퓨터 판독 가능 기록매체.

KR1020160072230A 2016-01-19 2016-06-10 악성 코드 분석을 위한 전자 장치 및 이의 방법 KR102582580B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US16/068,263 US20190005239A1 (en) 2016-01-19 2016-11-01 Electronic device for analyzing malicious code and method therefor
PCT/KR2016/012443 WO2017126786A1 (ko) 2016-01-19 2016-11-01 악성 코드 분석을 위한 전자 장치 및 이의 방법

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR20160006257 2016-01-19
KR1020160006257 2016-01-19

Publications (2)

Publication Number Publication Date
KR20170087007A KR20170087007A (ko) 2017-07-27
KR102582580B1 true KR102582580B1 (ko) 2023-09-26

Family

ID=59428014

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160072230A KR102582580B1 (ko) 2016-01-19 2016-06-10 악성 코드 분석을 위한 전자 장치 및 이의 방법

Country Status (2)

Country Link
US (1) US20190005239A1 (ko)
KR (1) KR102582580B1 (ko)

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10649753B2 (en) * 2016-12-14 2020-05-12 Verizon Patent And Licensing Inc. Enabling user device application modularity
US20180285567A1 (en) * 2017-03-31 2018-10-04 Qualcomm Incorporated Methods and Systems for Malware Analysis and Gating Logic
KR20190040755A (ko) 2017-10-11 2019-04-19 한국전자통신연구원 파일 이미지를 이용한 악성코드 탐지 방법 및 이를 위한 장치
US10715619B2 (en) * 2017-10-16 2020-07-14 Red Hat, Inc. Cache management using a probabilistic data structure
KR101976992B1 (ko) * 2017-11-16 2019-05-10 숭실대학교산학협력단 시그니처 추출을 이용한 분석회피기법 자동 인식 장치 및 그 방법
KR102249758B1 (ko) * 2017-11-28 2021-05-10 김훈 사례기반추론기술 및 블록체인방식을 적용한 인공지능형 개인 정보 보안 시스템 및 그것의 서버
KR101988747B1 (ko) * 2017-11-30 2019-06-12 건국대학교 산학협력단 하이브리드 분석을 통한 머신러닝 기반의 랜섬웨어 탐지 방법 및 장치
KR102058966B1 (ko) * 2018-02-26 2019-12-24 한국인터넷진흥원 악성 어플리케이션 탐지 방법 및 그 장치
KR102031592B1 (ko) * 2018-02-27 2019-10-14 아주대학교산학협력단 악성코드를 탐지하기 위한 방법 및 장치
KR102010468B1 (ko) 2018-09-06 2019-08-14 주식회사 윈스 악성코드 머신 러닝 분류 모델 검증 장치 및 방법
US11537541B2 (en) 2018-09-28 2022-12-27 Xilinx, Inc. Network interface device and host processing device
US11570045B2 (en) 2018-09-28 2023-01-31 Xilinx, Inc. Network interface device
KR20200039912A (ko) 2018-10-08 2020-04-17 순천향대학교 산학협력단 Ai 기반 안드로이드 악성코드 자동화 분석 시스템 및 방법
US11012411B2 (en) 2018-11-05 2021-05-18 Xilinx, Inc. Network interface device
US11082364B2 (en) * 2019-04-25 2021-08-03 Xilinx, Inc. Network interface device
KR102388280B1 (ko) * 2018-11-28 2022-04-18 김훈 인공지능형 개인 정보 보안 시스템의 서버
US11303660B2 (en) * 2019-01-24 2022-04-12 Terry Edward Trees Computer-protection system and method for preventing a networked computer from executing malicious code
CN109976836A (zh) * 2019-01-31 2019-07-05 中山大学 一种获取安卓终端摄像头数据的方法及系统
WO2020189822A1 (ko) * 2019-03-20 2020-09-24 주식회사 하우리 클라우드 환경에서의 악성코드 진단장치, 진단방법 및 진단시스템
CN110363003B (zh) * 2019-07-25 2022-08-02 哈尔滨工业大学 一种基于深度学习的Android病毒静态检测方法
CN111008378B (zh) * 2019-11-29 2023-08-01 四川效率源信息安全技术股份有限公司 一种清洗硬盘固件区恶意代码的方法
RU2728498C1 (ru) 2019-12-05 2020-07-29 Общество с ограниченной ответственностью "Группа АйБи ТДС" Способ и система определения принадлежности программного обеспечения по его исходному коду
RU2728497C1 (ru) 2019-12-05 2020-07-29 Общество с ограниченной ответственностью "Группа АйБи ТДС" Способ и система определения принадлежности программного обеспечения по его машинному коду
KR102334228B1 (ko) * 2020-02-07 2021-12-02 숭실대학교 산학협력단 안드로이드 악성 앱 레이블 가중치 투표 기반 패밀리 분류 방법, 이를 수행하기 위한 기록 매체 및 장치
RU2722692C1 (ru) 2020-02-21 2020-06-03 Общество с ограниченной ответственностью «Группа АйБи ТДС» Способ и система выявления вредоносных файлов в неизолированной среде
CN111382437A (zh) * 2020-03-03 2020-07-07 思客云(北京)软件技术有限公司 基于配置分析引擎的缺陷检测方法、设备和计算机可读存储介质
KR102146883B1 (ko) * 2020-05-28 2020-08-21 주식회사 엠티커뮤니케이션 서버 및 사용자 디바이스를 관리하는 시스템
KR102177223B1 (ko) * 2020-06-26 2020-11-10 최원천 악성코드 모니터링을 수행하는 서버 및 그 시스템
RU2743619C1 (ru) 2020-08-06 2021-02-20 Общество с ограниченной ответственностью "Группа АйБи ТДС" Способ и система генерации списка индикаторов компрометации
KR102206493B1 (ko) * 2020-08-12 2021-01-22 주식회사 엠티커뮤니케이션 디바이스의 빅데이터에 기반하여 디바이스 관리 서비스를 제공하는 시스템
KR102434899B1 (ko) * 2020-11-04 2022-08-23 영남대학교 산학협력단 악성코드 탐지모델 학습방법 및 악성코드 탐지방법
RU2759087C1 (ru) * 2020-12-07 2021-11-09 Общество с ограниченной ответственностью "Группа АйБи ТДС" Способ и система статического анализа исполняемых файлов на основе предиктивных моделей
US11947572B2 (en) 2021-03-29 2024-04-02 Group IB TDS, Ltd Method and system for clustering executable files

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070240221A1 (en) * 2006-04-06 2007-10-11 George Tuvell Non-Signature Malware Detection System and Method for Mobile Platforms
US20150363196A1 (en) * 2014-06-13 2015-12-17 The Charles Stark Draper Laboratory Inc. Systems And Methods For Software Corpora

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101369254B1 (ko) * 2013-04-19 2014-03-06 주식회사 안랩 악성 애플리케이션 진단장치 및 방법

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070240221A1 (en) * 2006-04-06 2007-10-11 George Tuvell Non-Signature Malware Detection System and Method for Mobile Platforms
US20150363196A1 (en) * 2014-06-13 2015-12-17 The Charles Stark Draper Laboratory Inc. Systems And Methods For Software Corpora

Also Published As

Publication number Publication date
US20190005239A1 (en) 2019-01-03
KR20170087007A (ko) 2017-07-27

Similar Documents

Publication Publication Date Title
KR102582580B1 (ko) 악성 코드 분석을 위한 전자 장치 및 이의 방법
Feng et al. A performance-sensitive malware detection system using deep learning on mobile devices
KR102546601B1 (ko) 정적 바이너리 계측을 사용하여 커널 제어-흐름 무결성을 보호하기 위한 방법 및 장치
US9336389B1 (en) Rapid malware inspection of mobile applications
US9525706B2 (en) Apparatus and method for diagnosing malicious applications
WO2017049800A1 (zh) 检测应用漏洞代码的方法和装置
TW201807576A (zh) 對用於應用二進位碼的經更新的版本的目標應用功能的虛擬記憶體位址進行更新
US20140082729A1 (en) System and method for analyzing repackaged application through risk calculation
Feng et al. Mobidroid: A performance-sensitive malware detection system on mobile platform
TW201721497A (zh) 用以檢測運作時期所產生碼中之惡意碼的系統及方法
WO2017126786A1 (ko) 악성 코드 분석을 위한 전자 장치 및 이의 방법
CN109657488A (zh) 一种资源文件加密处理方法、智能终端及存储介质
Alfalqi et al. Android platform malware analysis
US11580220B2 (en) Methods and apparatus for unknown sample classification using agglomerative clustering
KR101757407B1 (ko) 바이너리 병합 장치, 방법 및 컴퓨터 프로그램
CN110633073B (zh) 基于Il2cpp编译的Unity代码混淆的方法
US20190005226A1 (en) Automatic unpacking of executables
US11822920B1 (en) Methods and systems for providing a source code extractions mechanism
KR102011725B1 (ko) 악성코드 검출을 위한 화이트리스트 구축 방법 및 이를 수행하기 위한 기록매체 및 장치
US9646157B1 (en) Systems and methods for identifying repackaged files
KR101557455B1 (ko) 응용 프로그램 코드 분석 장치 및 그것을 이용한 코드 분석 방법
JP6018344B2 (ja) 動的読み込みコード解析装置、動的読み込みコード解析方法及び動的読み込みコード解析プログラム
KR101369254B1 (ko) 악성 애플리케이션 진단장치 및 방법
CN114880667A (zh) 一种脚本检测方法及装置
Bokolo et al. Hybrid analysis based cross inspection framework for android malware detection

Legal Events

Date Code Title Description
A201 Request for examination
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