KR101582601B1 - 액티비티 문자열 분석에 의한 안드로이드 악성코드 검출 방법 - Google Patents
액티비티 문자열 분석에 의한 안드로이드 악성코드 검출 방법 Download PDFInfo
- Publication number
- KR101582601B1 KR101582601B1 KR1020140003395A KR20140003395A KR101582601B1 KR 101582601 B1 KR101582601 B1 KR 101582601B1 KR 1020140003395 A KR1020140003395 A KR 1020140003395A KR 20140003395 A KR20140003395 A KR 20140003395A KR 101582601 B1 KR101582601 B1 KR 101582601B1
- Authority
- KR
- South Korea
- Prior art keywords
- malicious
- portable terminal
- classes
- malicious code
- string
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Virology (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Telephone Function (AREA)
Abstract
본 발명은 검사대상 앱의 APK 파일 중 classes.dex 파일 데이터만 압축 해제하고 디컴파일하여 검사대상 앱이 가지고 있는 액티비티 및 URL 등의 문자열을 얻어 미리 준비된 악성코드 데이터베이스와 비교함으로써, 검사 속도를 획기적으로 개선하며 악성코드의 변종에 대한 대처 능력이 우수한 액티비티 문자열 분석에 의한 안드로이드 악성코드 검출 방법을 제공한다.
Description
본 발명은 모바일 보안에 관한 것으로, 더욱 상세하게는 안드로이드 운영체제로 동작하는 안드로이드 휴대용 단말기의 악성코드 검출 방법에 관한 것이다.
안드로이드 운영체제는 구글 사에서 제공하는 모바일 플랫폼으로 리눅스(Linux) 기반의 오픈소스라는 점에 그 특징이 있다. 이에 따라 스마트폰 플랫폼 시장 중에서 안드로이드가 가장 높은 점유율(2012년 1/4분기 시장 조사 결과에 의하면, 전체의 약 59%가 안드로이드 플랫폼을 사용)을 기록하고 있다. 또한, 오픈소스라는 태생적 원인에 기인하고 Java 언어로 용이하게 다양한 어플리켄이션(이하, '앱'이라 함)이 개발되면서 악성코드로 인한 안드로이드 보안 위협도 나날이 증가하고 있다.
모든 안드로이드 앱은 '.apk'의 확장자를 갖는 앱 패키지(Application PacKage: APK) 파일(이하, 'APK 파일'이라 함)로 압축된 상태에서 앱스토어 등으로부터 다운받아 휴대용 단말기에 설치하게 된다.
APK 파일을 알집이나 zip 같은 압축 프로그램을 이용하여 압축을 해제 후 열게 되면, 공통적으로 휴대용 단말기 내장 리소스 접근이나 기능 사용 권한 등을 명시한 파일인 AndroidManifest.xml, 앱 실행 파일인 classes.dex, 리소스 파일인 resources.arsc와 그 외에 3개 폴더 assets, META-INF, res를 포함하여 구성되어 있음을 확인할 수 있다.
현재까지 알려진 악성 앱들은 전혀 새로운 형태의 앱이 아니라 이미 존재하는 악성 앱의 기능을 약간 수정하거나 악성 행위를 수행하는 액티비티(activity)를 발췌해서 또 다른 앱에 삽입하는 형태의 변종들이 대다수를 차지하고 있다.
악성 앱에 의한 휴대용 단말기의 악성코드 검출 관련 선행기술로는 한국 등록특허 제1130088호, 제1246623호 및 제1264102호 등이 있으나, 휴대용 단말기에 백신 앱으로 구동하며 변종 악성 앱들을 효과적으로 검출하는데 어려움이 있어 왔다.
즉, 한국 등록특허 제1130088호에 의하면, 수집된 바이너리 데이터의 해쉬 값과 기 저장된 악성코드 해쉬 값을 비교하여 악성코드 여부를 판단하는 기술이 개시되어 있으나, 이에 의하여 악성코드 여부를 판단하기 위해서는 먼저 악성코드 샘플을 수집해서 등록해야만 검출이 가능하다는 문제점과 악성 앱 제작자가 컴파일 방법을 바꾸거나 일부 소스를 수정하여 다시 컴파일할 경우 등의 변종에 대해서는 검출하지 못하게 되는 문제점이 있다.
한국 등록특허 제1246623호에 의하면, 악성 앱의 파일과 그 악성 앱의 변종 파일의 공통적인 특징정보를 악성 여부 진단을 위한 시그니처 데이터로 하는 시그니처 저장부, 진단 대상 앱의 파일로부터 공통적인 특징정보를 수집하는 정보 수집부, 양 정보를 대비하여 악성 여부를 판단하는 진단 판별부, 그외 결과 제공부 및 진단규칙 저장부를 구비한 악성 앱 진단 장치 및 방법을 개시하고 있으나, 이는 시그니처 저장부 외에 별도의 악성 여부를 판별하기 위한 진단 규칙이 저장된 진단규칙 저장부(및 이를 위한 설정부)를 구비하여야 하고, 정보 수집부도 진단 대상 앱으로부터 진단 규칙에 따라 대비할 정보를 수집해야 하므로, 스마트폰 등 휴대용 단말기에서 구동하기 어렵고, 구동된다 하더라도 진단 대상 앱의 정보 수집에 너무 많은 시간이 소요되는 문제점이 있다. 특히, 상기 정보 수집부는 dex 파일에서 포함하는 Java 클래스 파일들의 이름을 나열하여 CRC를 구하는 클래스 리스트 추출부를 포함하는 것도 개시되어 있으나, CRC 코드는 Cyclic Redundancy Check(순환 덧붙임 검사)로 파일을 전송할 때 전송 중에 정보(데이터)에 오류(error)가 발생했는지 확인하기 위하여 송신 데이터에 덧붙여 보내는 코드이어서, 이를 기초로 악성 앱인지 여부를 판별하기 어려운 문제점이 있다.
한국 등록특허 제1264102호에 의하면, 악성 앱이 실제로 수행하는 행위를 분석하고, 앱의 배포를 위해 기록되는 디지털 싸인을 검사하여 악성 앱을 검출하는 방법이 개시되어 있으나, 이를 위해서는 판단근거데이터에 기초하여 판단하는 별도의 행위분석부를 구비하여야될 뿐만 아니라 진단 대상 앱의 실행에 의해 수행되는 기능을 분석하여 사후적으로 판단하는 것이므로, 일반 수요자의 휴대용 단말기에서는 구동하기 어려운 근본적인 문제점이 있고, 디지털(전자) 싸인에 의한 검출 방법은 오진의 가능성이 크고 전자싸인을 변경할 경우 검출하지 못하여, 결국 '앱의 권한'에 의한 방법은 오진이 너무 많아 실질적으로 적용하기 어려운 문제점이 있다.
본 발명은 상기 종래 기술의 문제점을 해결하기 위하여, 악성코드 유포자가 일부의 기능을 수정하여 배포하거나 악성 앱 소스를 공개하여 제 3 자가 이 소스를 가공하여 재배포하여도 악성 행위를 하는 액티비티 및 URL 등의 문자열은 변하지 않는다 점에 착안하여, 검사대상 앱의 APK 파일 중 classes.dex 부분의 압축을 해제하고 디컴파일하여 검사대상 앱이 가지고 있는 액티비티 및 URL 등의 문자열을 얻어 미리 준비된 악성코드 데이터베이스와 비교함으로써, 검사 속도를 획기적으로 개선하며 악성코드의 변종에 대한 대처 능력이 우수한 액티비티 문자열 분석에 의한 안드로이드 악성코드 검출 방법을 제공하는데 그 목적이 있다.
상기 목적을 달성하기 위하여, 본 발명에 의한 안드로이드 악성코드 검출 방법은 안드로이드 휴대용 단말기의 악성코드 검출 방법에 있어서, 상기 휴대용 단말기에 설치 또는 설치 대기 중인 검사대상 앱의 압축을 상기 휴대용 단말기의 저장부에 해제하는 제 1 단계; 압축 해제된 classes.dex 파일의 데이터를 디컴파일하는 제 2 단계; 및 디컴파일된 classes.dex 파일의 데이터로부터 액티비티 및 URL 문자열을 수집하여 악성코드 데이터베이스와 비교하는 제 3 단계를 포함하여 구성되되, 상기 악성코드 데이터베이스는 등급, 규칙, 악성이름, 악성 앱의 특성 문자열로 분류하여 상기 휴대용 단말기의 저장부 또는 상기 휴대용 단말기가 접속할 수 있는 업데이트 서버의 저장부에 저장되고, 상기 등급은 악성 행위의 위험도에 따라 3개 등급이상으로 구분되고, 상기 규칙은 상기 악성 앱의 특성 문자열이 상기 등급 및 상기 악성이름으로 판단되는 반복 횟수를 일치하는 문자열의 개수, 순차적 번호 또는 순차적 영문자 알파벳으로 표시한 것이고, 상기 악성이름은 악성 행위에 대한 특성을 요약한 이름이고, 상기 악성 앱의 특성 문자열은 악성 행위를 하는 액티비티 또는 URL과 관련된 특징적인 문자열로 생략표시 '*'가 포함되는 것을 특징으로 한다.
삭제
상기 제 3 단계 이후 악성코드와 문자열이 일치할 경우 해당 문자열과 연계된 위험등급과 악성이름이 포함된 악성 앱 경고창을, 악성코드와 문자열이 일치하지 않을 경우 검사 결과창을 상기 휴대용 단말기의 출력부에 띄우는 단계와 상기 악성 앱 경고창에 상기 휴대용 단말기의 사용자가 제거 아이콘을 클릭할 때 상기 휴대용 단말기에 내장된 제거 프로그램을 호출하여 악성 앱을 제거하는 단계를 더 포함하는 것을 본 발명에 의한 안드로이드 악성코드 검출 방법의 다른 특징으로 한다.
상기 제 1 단계는 상기 검사대상 앱의 APK 파일에서 classes.dex 파일의 데이터 위치를 확인하여 classes.dex 파일의 데이터만 상기 휴대용 단말기의 저장부에 압축을 해제하는 것을 본 발명에 의한 안드로이드 악성코드 검출 방법의 다른 특징으로 한다.
상기 제 3 단계는 상기 디컴파일된 classes.dex 파일의 데이터로부터 액티비티 및 URL 문자열이 저장된 영역을 순차적으로 읽어와 상기 악성코드 데이터베이스를 바이너리 검색하며 일치하는 문자열이 있는지 비교하는 것을 본 발명에 의한 안드로이드 악성코드 검출 방법의 다른 특징으로 한다.
본 발명에 의한 안드로이드 휴대용 단말기는 상기 방법으로 안드로이드 악성코드를 검출하는 백신 앱이 설치된 것을 특징으로 한다.
삭제
본 발명에 의한 안드로이드 악성코드 검출 방법은 검사대상 앱의 APK 파일 중 classes.dex 부분의 압축을 해제하고 디컴파일하여 얻은 액티비티 및 URL의 문자열로 미리 준비된 악성코드 데이터베이스와 비교함으로써, 휴대용 단말기의 백신 앱으로 용이하게 설치되어 검사 속도를 획기적으로 개선하며 악성코드의 변종에 대한 대처 능력이 우수하여 추가 패턴 업데이트 없이도 변종 악성코드를 검출할 수 있는 효과가 있다.
도 1은 본 발명의 일 실시 예로 휴대용 단말기의 저장부 또는 휴대용 단말기가 접속할 수 있는 업데이트 서버의 저장부에 악성코드 데이터베이스로 저장되는 악성코드 패턴 등록 예를 보여주는 표이다.
도 2는 검사대상 앱의 APK 파일을 Hex 에디터로 보여준 것으로, APK 파일에서 classes.dex 파일의 데이터 위치를 확인하여 classes.dex 파일의 데이터만 가져올 수 있음을 보여준다.
도 3은 도 2에서 classes.dex 파일의 데이터만 가져와 디컴파일시킨 후 Hex 에디터로 보여준 것으로, 디컴파일된 classes.dex 파일의 데이터로부터 액티비티 및 URL 문자열을 수집할 수 있음을 보여준다.
도 4는 도 3의 디컴파일된 classes.dex 파일의 데이터로부터 얻은 액티비티 및 URL 문자열 리스트이다.
도 5는 본 발명에 의한 도 4의 리스트와 대비하기 위하여 동일한 검사대상 앱의 APK 파일을 공지의 JAVA 툴(dex2jar)로 얻은 화면이다.
도 6은 본 발명의 일 실시 예에 의한 안드로이드 악성코드 검출 방법을 보여주는 순서도이다.
도 2는 검사대상 앱의 APK 파일을 Hex 에디터로 보여준 것으로, APK 파일에서 classes.dex 파일의 데이터 위치를 확인하여 classes.dex 파일의 데이터만 가져올 수 있음을 보여준다.
도 3은 도 2에서 classes.dex 파일의 데이터만 가져와 디컴파일시킨 후 Hex 에디터로 보여준 것으로, 디컴파일된 classes.dex 파일의 데이터로부터 액티비티 및 URL 문자열을 수집할 수 있음을 보여준다.
도 4는 도 3의 디컴파일된 classes.dex 파일의 데이터로부터 얻은 액티비티 및 URL 문자열 리스트이다.
도 5는 본 발명에 의한 도 4의 리스트와 대비하기 위하여 동일한 검사대상 앱의 APK 파일을 공지의 JAVA 툴(dex2jar)로 얻은 화면이다.
도 6은 본 발명의 일 실시 예에 의한 안드로이드 악성코드 검출 방법을 보여주는 순서도이다.
이하, 첨부된 도면을 참조하며 본 발명의 바람직한 실시 예에 대하여 설명한다.
본 발명에 의한 안드로이드 악성코드 검출 방법은, 도 6과 같이, 기본적으로 안드로이드 휴대용 단말기의 악성코드 검출 방법에 있어서, 상기 휴대용 단말기에 설치 또는 설치 대기 중인 검사대상 앱의 압축을 상기 휴대용 단말기의 저장부에 해제하는 제 1 단계(S10); 압축 해제된 classes.dex 파일의 데이터를 디컴파일하는 제 2 단계(S20); 및 디컴파일된 classes.dex 파일의 데이터로부터 액티비티 및 URL 문자열을 수집하여 악성코드 데이터베이스와 비교하는 제 3 단계(S30)를 포함하여 구성된다.
여기서, 상기 안드로이드 휴대용 단말기는 안드로이드 운영체제로 동작하는 스마트폰, 테블릿 피씨 등 인터넷이 가능한 일체의 휴대용 기기를 포함하는 것으로, 모두 제어부, 저장부, 입력부, 출력부, 유무선통신부 및 전원부를 포함하여 구성되고, 이들 각 구성은 휴대용 단말기의 일반적인 구성이므로 이에 대한 상세한 설명은 생략한다.
본 발명에 의한 안드로이드 악성코드 검출 방법은 백신 앱으로 제작되어 앱스토어 등을 통해 안드로이드 휴대용 단말기에 다운받아 설치되어 구동하게 된다. 따라서, 이하에서는 본 발명에 의한 안드로이드 악성코드 검출용 백신 앱(이하, '백신 앱'이라 함)이 설치된 휴대용 단말기가 동작하며 악성코드를 검출하는 방법에 대하여 설명한다.
백신 앱이 휴대용 단말기에 설치하게 되면, 악성코드 여부의 비교/판단 대상이 되는 악성코드 데이터베이스가 휴대용 단말기의 저장부에 저장되거나 휴대용 단말기로 접속할 수 있는 업데이트 서버의 저장부에 저장된 악성코드 데이터베이스를 이용하게 할 수도 있다. 전자의 경우에는 업데이트 서버에서 데이터베이스가 업데이트 될 때마다 또는 일정 주기 등으로 백신 앱 또는 악성코드 데이터베이스만이라도 업데이트 되도록 함이 바람직하다.
상기 악성코드 데이터베이스는 수집된 앱들의 행위를 분석하여 악성 앱으로 판명될 경우 실제 악성 행위를 하는 액티비티 이름, 정보를 유출시키는 서버 URL 등을 수집하고, 도 1과 같이, 바이너리 검색이 가능하게 등급(10), 규칙(20), 악성이름(30), 악성 앱의 특성 문자열(40)로 순차적으로 분류하여 미리 업데이트 서버에서 데이터베이스로 구축된다.
여기서, 상기 등급(10)은 악성 행위의 위험도에 따라 3개 등급이상으로 구분되도록 함이 바람직하다. 예컨대, 바이러스일 경우 1-3 등급으로, 위험 앱이나 애드웨어일 경우 4-6등급으로, 위험도가 다소 낮은 일반 애드웨어일 경우 7-9등급으로 구분하여 등록하고, 앞의 1-3 등급은 Very High로, 4-6등급은 High로, 7-9등급은 Low로 휴대용 단말기의 출력부에 악성이름과 함께 악성등급이 악성 앱 경고창으로 띄어지게 할 수 있다.
상기 규칙(20)은 악성 앱의 특성 문자열(40)이 등급(10) 및 악성이름(30)으로 판단되는 반복 횟수를 일치하는 문자열의 개수(예컨대, 1), 순차적 번호(예컨대, 6, 7) 또는 순차적 영문자 알파벳(예컨대, A, B, C)으로 표시한 것이다. 예를 들어, 도 1에서 "*/MarketReceiver;"와 "*/SmsDelete$1;"가 2번 나올 경우 순차적 번호(예컨대, 6, 7)를 규칙(20)으로 부여하고 2등급의 "Trojan.Tetus.A1" 악성이름으로 판단되도록 한 것이다.
상기 악성이름(30)은 악성 행위에 대한 특성을 요약한 이름이고, 상기 악성 앱의 특성 문자열(40)은 악성 행위를 하는 액티비티 또는 URL과 관련된 특징적인 문자열로 생략표시 '*'가 포함될 수 있다.
백신 앱이 설치된 휴대용 단말기는 사용자로부터 설치 또는 설치 대기 중인 검사대상 앱에 대하여 악성코드 검출을 요청받게 되거나, 실시간 감시에 의하여 새로 설치되는 앱이 감지될 경우, 먼저 검사대상 앱의 압축을 휴대용 단말기의 저장부에 해제하게 된다(제 1 단계, S10).
이때, 상기 검사대상 앱은 휴대용 단말기에 이미 설치된 모든 앱 또는 특정 앱일 수 있고, 앱스토어 등으로부터 다운받아 설치 대기 중이거나 실시간 감시로 새로 설치되는 앱일 수도 있다.
그리고, 검사대상 앱의 압축을 휴대용 단말기의 저장부에 해제할 때, 검사대상 앱의 APK 파일에 포함된 모든 파일에 대하여 압축을 해제할 수도 있으나, APK 파일 중 classes.dex 파일의 데이터만 찾아 이를 휴대용 단말기의 저장부에 압축을 해제하는 것이 휴대용 단말기의 저장부 메모리를 적게 사용하게 되어 바람직하다.
도 2는 검사대상 앱의 APK 파일을 Hex 에디터로 보여준 것으로, 이에 의하면 휴대용 단말기의 제어부에 의하여 다운받은 APK 파일에서 classes.dex 파일의 데이터 위치를 확인하여 classes.dex 파일의 데이터만 가져와 압축 해제시 예상되는 메모리로 최소 확보 후 이에 저장할 수 있음을 보여준다.
Hex 에디터는, 공지되어 있는 바와 같이, 상대적 저장 위치를 나타내는 offset 주소(50)를 수직좌표로, 00~0F의 16진수를 수평좌표로 나누고, 각 교점에 00~FF의 16진수 두 자리로 저장 공간 바이트를 소정의 파일 구조에 따라 나열한 헥사값(60), 그리고 헥사값에 해당하는 Ascii코드(70)로 표시된다.
검사대상 앱의 APK 파일은 압축파일이므로, 일반 zip 파일 구조에 따라 헥사값(60)이 나열하게 되는데, 이에 의하면 본 발명에서 찾고자 하는 classes.dex 파일은, 도 2와 같이, Local header 서명(50 4B 03 04)으로 시작되는 Local File Header과 Central header 서명(50 4B 01 02)으로 시작되는 Central File Header 두군데 나타나게 된다.
Central File Header에서 Central header 서명(50 4B 01 02)으로부터 43~46 바이트 위치 또는 classes.dex 파일 이름(1) 앞의 4 바이트(2)는 Local File Header의 시작점을 offset 주소(50)의 수직좌표와 16진수의 수평좌표를 역으로 표시하여 해당 정보를 주게 된다.
즉, 도 2에서 Central File Header에서 Central header 서명(50 4B 01 02)으로부터 43~46 바이트 위치 또는 classes.dex 파일 이름(1) 앞의 4 바이트(2)는 6C E1 03 00으로 되어 있는데, 이로부터 Local File Header의 시작점은 offset 주소(50)의 수직좌표 00 03 e1 60h, 16진수의 수평좌표 0C가 만나는 점임을 알 수 있다(도면부호 80의 시작점 참조).
또한, Central File Header에서 Central header 서명(50 4B 01 02)으로부터 21~24 바이트 위치의 4 바이트(3)는 classes.dex 파일의 압축크기, 그 다음 4 바이트는 classes.dex 파일의 압축 전 원본크기를 각각 역으로 표시하여 나타내는데, 도 2에선 classes.dex 파일의 압축크기는 16진수로 0000773A 바이트, 원본크기는 16진수로 0000FE74임을 각각 알 수 있다(압축크기와 원본크기의 정보는 Local File Header에서도 얻을 수 있다).
본 발명에서 찾고자 하는 classes.dex 파일의 데이터(90)는 Local File Header에서 classes.dex 파일 이름 다음부터 시작되어 압축크기에 해당하는 바이트 위치까지 있게 된다.
classes.dex 파일 이름의 크기는 Local header 서명(50 4B 03 04)으로부터 27~28 바이트 위치의 2 바이트(0B 00)로 표시되고, 추가 필드 길이 2 바이트 이후 파일명이 시작되므로, 도 2에서 classes.dex 파일명은 11 바이트 길이 63 6C 61 73 73 65 73 2E 64 65 78(이는 도 2에서 아스키코드로 파일명 classes.dex로 표현되는 부분이기도 함)를 갖게 된다.
따라서, 본 발명에서 찾고자 하는 classes.dex 파일의 데이터(90)는 0003e195에서 시작하여, 여기에 압축크기에 1 바이트를 뺀 00007739를 더한 000458ce까지 있음을 알 수 있다.
상기와 같은 방법으로 검사대상 앱의 APK 파일에서 classes.dex 파일의 데이터 위치를 확인하여 classes.dex 파일의 데이터(90)만 가져와 휴대용 단말기의 저장부에 압축 해제시 예상되는 메모리(원본크기, 도 2에서는 0000FE74 바이트)로 최소 확보 후 압축을 해제할 수 있게 된다. 압축 해제시에는 zlib을 사용하여 해제할 수 있다.
다음은 압축 해제된 classes.dex 파일의 데이터를 디컴파일한다(제 2 단계, S20).
도 3은 도 2에서 classes.dex 파일의 데이터만 가져와 디컴파일시킨 후 Hex 에디터로 보여준 것으로, 디컴파일된 classes.dex 파일의 데이터로부터 액티비티 및 URL 문자열을 수집할 수 있음을 보여준다.
구체적으로, 도 3에서는 도 1과 같이 악성코드 패턴으로 등록된 "MarketReceiver;"와 "SmsDelete$1;"이 발견되어, 이를 용이하게 수집할 수 있음을 보여준다.
따라서, 압축 해제된 classes.dex 파일의 데이터를 디컴파일하게 되면, classes.dex 파일에 포함된 액티비티 정보나 외부 서버의 URL 정보와 같은 특징적인 문자열을 모두 수집할 수 있게 된다.
도 4는 도 3의 디컴파일된 classes.dex 파일의 데이터로부터 얻은 액티비티 및 URL 문자열 리스트를 보여준다.
도 5는 본 발명에 의한 도 4의 리스트와 대비하기 위하여 동일한 검사대상 앱의 APK 파일을 공지의 JAVA 툴(dex2jar)로 얻은 화면이다.
도 4와 도 5를 대비하여 보면, 본 발명에 의하여 검사대상 앱의 APK 파일 중 classes.dex 파일의 데이터(90)만 압축 해제 후 디컴파일하여 얻은 액티비티 및 URL 문자열은 공지의 JAVA 툴(dex2jar)에서 보여주는 액티비티 및 URL 문자열을 동일하게 얻을 수 있음을 알 수 있다.
그리고, 도 5로부터 악성코드 유포자가 기존 악성 앱의 검출을 피하고자 악성 앱에 클래스 내용을 일부 수정하며 계속 배포하더라도 동일한 액티비티 이름이나 URL 문자열을 사용하는 한 악성 앱으로 검출할 수 있어, 다양한 악성코드의 변종에 대처할 수 있게 된다.
다음, 디컴파일된 classes.dex 파일의 데이터로부터 액티비티 및 URL 문자열을 수집하여 미리 저장된 악성코드 데이터베이스와 비교한다(제 3 단계, S30).
도 4는 본 발명에 의하여 디컴파일된 classes.dex 파일의 데이터로부터 도 1 즉 미리 저장된 악성코드 데이터베이스와 대비할 수 있는 검사대상 앱의 액티비티 및 URL 문자열 리스트를 보여주는 것이고, 실제는 본 발명에 의하여 디컴파일된 classes.dex 파일의 데이터로부터 액티비티 및 URL 문자열이 저장된 영역을 순차적으로 읽어와 미리 저장된 악성코드 데이터베이스를 바이너리 검색하며 일치하는 문자열이 있는지 비교하도록 할 수 있다. 이렇게 함으로써, 검사 속도를 획기적으로 높일 수 있다.
상기 제 3 단계(S30) 이후에는 백신 앱의 목적에 따라 다양하게 응용되어 실시될 수 있다. 구체적 예로, 도 6과 같이, 악성코드 데이터베이스에 등록되어 있는 악성코드와 검사대상 앱으로부터 찾은 문자열이 일치하는지 여부를 판단하여(S40), 일치할 경우 해당 문자열과 연계된 위험등급과 악성이름이 포함된 악성 앱 경고창을 휴대용 단말기의 출력부에 띄우고(S50), 악성코드와 문자열이 일치하지 않을 경우 검사 결과창을 휴대용 단말기의 출력부에 띄우는 단계(S60)를 더 추가할 수 있다.
이어, 상기 악성 앱 경고창에 휴대용 단말기의 사용자가 제거 아이콘을 클릭하는지를 판단하여(S70), 제거 아이콘을 클릭할 때 휴대용 단말기에 내장된 제거 프로그램을 호출하여 악성 앱을 제거하는 단계(S80)를 더 진행하고 종료되도록 할 수 있고, 제거 아이콘을 클릭하지 않고 기타 아이콘을 클릭할 경우(S90) 해당 동작을 수행(S100)한 후 종료할 수 있으며, 물론 아무런 클릭이 없을 때 종료하게 할 수 있다.
이상으로 본 발명에 의한 안드로이드 악성코드 검출 방법에 대하여 첨부도면을 참조하며 바람직한 실시 예에 대하여 설명하였으나, 이에 한정되지 않고 다양하게 응용되어 실시될 수 있으며, 특히 상술한 방법으로 안드로이드 악성코드를 검출하는 안드로이드 악성코드 검출용 백신 앱의 형태로 실시될 수 있음은 자명하고, 상술한 방법으로 동작 되도록 만들어진 안드로이드 악성코드 검출용 백신 앱은 일반 앱과 마찬가지로 안드로이드 휴대용 단말기에 용이하게 설치하여 실시될 수 있으므로, 이에 대한 구체적인 설명은 생략한다.
10: 등급
20: 규칙
30: 악성이름
40: 악성 앱의 특성 문자열
50: offset 주소
60: 헥사값
70: Ascii코드
80: classes.dex 파일의 로컬 헤더
90: classes.dex 파일의 데이터
20: 규칙
30: 악성이름
40: 악성 앱의 특성 문자열
50: offset 주소
60: 헥사값
70: Ascii코드
80: classes.dex 파일의 로컬 헤더
90: classes.dex 파일의 데이터
Claims (7)
- 삭제
- 안드로이드 휴대용 단말기의 악성코드 검출 방법에 있어서,
상기 휴대용 단말기에 설치 또는 설치 대기 중인 검사대상 앱의 압축을 상기 휴대용 단말기의 저장부에 해제하는 제 1 단계;
압축 해제된 classes.dex 파일의 데이터를 디컴파일하는 제 2 단계; 및
디컴파일된 classes.dex 파일의 데이터로부터 액티비티 및 URL 문자열을 수집하여 악성코드 데이터베이스와 비교하는 제 3 단계를 포함하여 구성되되,
상기 악성코드 데이터베이스는 등급, 규칙, 악성이름, 악성 앱의 특성 문자열로 분류하여 상기 휴대용 단말기의 저장부 또는 상기 휴대용 단말기가 접속할 수 있는 업데이트 서버의 저장부에 저장되고,
상기 등급은 악성 행위의 위험도에 따라 3개 등급이상으로 구분되고,
상기 규칙은 상기 악성 앱의 특성 문자열이 상기 등급 및 상기 악성이름으로 판단되는 반복 횟수를 일치하는 문자열의 개수, 순차적 번호 또는 순차적 영문자 알파벳으로 표시한 것이고,
상기 악성이름은 악성 행위에 대한 특성을 요약한 이름이고,
상기 악성 앱의 특성 문자열은 악성 행위를 하는 액티비티 또는 URL과 관련된 특징적인 문자열로 생략표시 '*'가 포함되는 것을 특징으로 하는 안드로이드 악성코드 검출 방법.
- 제 2 항에 있어서,
상기 제 3 단계 이후 악성코드와 문자열이 일치할 경우 해당 문자열과 연계된 위험등급과 악성이름이 포함된 악성 앱 경고창을, 악성코드와 문자열이 일치하지 않을 경우 검사 결과창을 상기 휴대용 단말기의 출력부에 띄우는 단계와 상기 악성 앱 경고창에 상기 휴대용 단말기의 사용자가 제거 아이콘을 클릭할 때 상기 휴대용 단말기에 내장된 제거 프로그램을 호출하여 악성 앱을 제거하는 단계를 더 포함하는 것을 특징으로 하는 안드로이드 악성코드 검출 방법.
- 제 2 항 또는 제 3 항에 있어서,
상기 제 1 단계는 상기 검사대상 앱의 APK 파일에서 classes.dex 파일의 데이터 위치를 확인하여 classes.dex 파일의 데이터만 상기 휴대용 단말기의 저장부에 압축을 해제하는 것을 특징으로 하는 안드로이드 악성코드 검출 방법.
- 제 4 항에 있어서,
상기 제 3 단계는 상기 디컴파일된 classes.dex 파일의 데이터로부터 액티비티 및 URL 문자열이 저장된 영역을 순차적으로 읽어와 상기 악성코드 데이터베이스를 바이너리 검색하며 일치하는 문자열이 있는지 비교하는 것을 특징으로 하는 안드로이드 악성코드 검출 방법.
- 제 4 항의 방법으로 안드로이드 악성코드를 검출하는 백신 앱이 설치된 것을 특징으로 하는 안드로이드 휴대용 단말기.
- 삭제
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020140003395A KR101582601B1 (ko) | 2014-01-10 | 2014-01-10 | 액티비티 문자열 분석에 의한 안드로이드 악성코드 검출 방법 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020140003395A KR101582601B1 (ko) | 2014-01-10 | 2014-01-10 | 액티비티 문자열 분석에 의한 안드로이드 악성코드 검출 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20150083627A KR20150083627A (ko) | 2015-07-20 |
KR101582601B1 true KR101582601B1 (ko) | 2016-01-05 |
Family
ID=53873931
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020140003395A KR101582601B1 (ko) | 2014-01-10 | 2014-01-10 | 액티비티 문자열 분석에 의한 안드로이드 악성코드 검출 방법 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR101582601B1 (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102057724B1 (ko) | 2018-05-25 | 2019-12-19 | 고려대학교 산학협력단 | 메모리 해제 오류를 자동으로 수정하는 장치 및 방법 |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017030569A1 (en) | 2015-08-18 | 2017-02-23 | Hewlett Packard Enterprise Development Lp | Identifying randomly generated character strings |
US9954873B2 (en) | 2015-09-30 | 2018-04-24 | The Mitre Corporation | Mobile device-based intrusion prevention system |
KR101862614B1 (ko) * | 2016-10-05 | 2018-05-31 | 한국전력공사 | 프로그램 유효성 검증 장치 및 컴퓨터 판독가능 기록 매체 |
CN109460234B (zh) * | 2018-09-04 | 2023-04-11 | 中国平安人寿保险股份有限公司 | 应用程序瘦身方法、装置、终端及存储介质 |
US11347850B2 (en) | 2018-10-01 | 2022-05-31 | Blackberry Limited | Analyzing binary software code |
US10984102B2 (en) | 2018-10-01 | 2021-04-20 | Blackberry Limited | Determining security risks in binary software code |
US11106791B2 (en) | 2018-10-01 | 2021-08-31 | Blackberry Limited | Determining security risks in binary software code based on network addresses |
CN111459822B (zh) * | 2020-04-01 | 2023-10-03 | 抖音视界有限公司 | 系统组件数据的提取方法、装置、设备及可读介质 |
CN113051569B (zh) * | 2021-03-31 | 2024-05-28 | 深信服科技股份有限公司 | 一种病毒检测方法、装置、电子设备及存储介质 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101056283B1 (ko) * | 2009-10-29 | 2011-08-11 | 주식회사 반딧불소프트웨어 | 악성코드 검출 장치 및 그 방법 |
KR101364599B1 (ko) * | 2012-03-26 | 2014-02-20 | 연세대학교 원주산학협력단 | 어플리케이션의 유해성 판단 방법 및 시스템 |
-
2014
- 2014-01-10 KR KR1020140003395A patent/KR101582601B1/ko active IP Right Grant
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102057724B1 (ko) | 2018-05-25 | 2019-12-19 | 고려대학교 산학협력단 | 메모리 해제 오류를 자동으로 수정하는 장치 및 방법 |
Also Published As
Publication number | Publication date |
---|---|
KR20150083627A (ko) | 2015-07-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101582601B1 (ko) | 액티비티 문자열 분석에 의한 안드로이드 악성코드 검출 방법 | |
JP5694473B2 (ja) | 危険度計算を通じたリパッケージアプリケーションの分析システム及び分析方法 | |
US10200391B2 (en) | Detection of malware in derived pattern space | |
KR101161493B1 (ko) | 안드로이드 단말 플랫폼에서의 악성 코드와 위험 파일의 진단 방법 | |
CN106295348B (zh) | 应用程序的漏洞检测方法及装置 | |
KR101246623B1 (ko) | 악성 애플리케이션 진단 장치 및 방법 | |
US20180082061A1 (en) | Scanning device, cloud management device, method and system for checking and killing malicious programs | |
KR20150044490A (ko) | 안드로이드 악성 애플리케이션의 탐지장치 및 탐지방법 | |
US9069963B2 (en) | Statistical inspection systems and methods for components and component relationships | |
KR20160109870A (ko) | 안드로이드 멀웨어의 고속 검색 시스템 및 방법 | |
CN107395650B (zh) | 基于沙箱检测文件识别木马回连方法及装置 | |
KR102095853B1 (ko) | 바이러스 데이터베이스 획득 방법 및 기기, 장비, 서버 그리고 시스템 | |
CN103793649A (zh) | 通过云安全扫描文件的方法和装置 | |
CN105095759A (zh) | 文件的检测方法及装置 | |
CN114386032A (zh) | 电力物联网设备的固件检测系统及方法 | |
CN105205398B (zh) | 一种基于apk加壳软件动态行为的查壳方法 | |
CN113486350A (zh) | 恶意软件的识别方法、装置、设备及存储介质 | |
CN105791250B (zh) | 应用程序检测方法及装置 | |
CN106709350B (zh) | 一种病毒检测方法及装置 | |
CN105809034A (zh) | 一种恶意软件识别方法 | |
CN107766342B (zh) | 一种应用的识别方法和装置 | |
CN113704569A (zh) | 信息的处理方法、装置及电子设备 | |
CN112560030A (zh) | 文件监控方法、装置、电子设备和计算机可读存储介质 | |
CN104794397B (zh) | 病毒检测方法和装置 | |
CN105956050B (zh) | 一种数据收集方法、装置及设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20181231 Year of fee payment: 4 |