KR20180104982A - 루팅 탐지 장치, 방법 및 이를 수행하기 위한 컴퓨터 프로그램이 기록된 컴퓨터로 판독가능한 기록매체 - Google Patents

루팅 탐지 장치, 방법 및 이를 수행하기 위한 컴퓨터 프로그램이 기록된 컴퓨터로 판독가능한 기록매체 Download PDF

Info

Publication number
KR20180104982A
KR20180104982A KR1020170031988A KR20170031988A KR20180104982A KR 20180104982 A KR20180104982 A KR 20180104982A KR 1020170031988 A KR1020170031988 A KR 1020170031988A KR 20170031988 A KR20170031988 A KR 20170031988A KR 20180104982 A KR20180104982 A KR 20180104982A
Authority
KR
South Korea
Prior art keywords
routing
detection module
routing detection
policy
rooting
Prior art date
Application number
KR1020170031988A
Other languages
English (en)
Inventor
정수환
김태훈
Original Assignee
숭실대학교산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 숭실대학교산학협력단 filed Critical 숭실대학교산학협력단
Priority to KR1020170031988A priority Critical patent/KR20180104982A/ko
Publication of KR20180104982A publication Critical patent/KR20180104982A/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
    • 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

Landscapes

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

Abstract

루팅탐지장치, 방법, 및 이를 수행하기 위한 컴퓨터 프로그램이 기록된 컴퓨터로 판독가능한 기록매체가 개시된다.
루팅탐지장치는 클라우드 서버와 연동되어 디바이스 내의 루팅 여부를 탐지하는 루팅탐지장치로서, 루팅 탐지 실행을 명령받으면, 상기 루팅 탐지를 위한 적어도 하나 이상의 정책을 포함하는 루팅탐지모듈을 상기 클라우드 서버로부터 수신하는 통신부 및 상기 루팅탐지모듈의 정책에 기초하여 상기 루팅 여부를 탐지하고 상기 루팅 탐지가 완료되면 상기 수신된 루팅탐지모듈을 삭제하는 루팅탐지모듈관리부를 포함하고, 상기 루팅탐지모듈은 상기 정책을 수행하기 위해 NDK(Native Development Kit) 기반의 코딩 및 크로스 컴파일(compile) 과정을 통해 생성된 so 파일을 포함한다.
따라서, 루팅 탐지시마다 클라우드 서버로부터 루팅탐지코드가 포함된 루팅탐지모듈을 수신하여 이에 따라 루팅을 탐지하고 이후 삭제하므로, 루팅탐지장치 내 apk 파일의 디컴파일을 통한 루팅 탐지 우회를 효과적으로 방지할 수 있다.

Description

루팅 탐지 장치, 방법 및 이를 수행하기 위한 컴퓨터 프로그램이 기록된 컴퓨터로 판독가능한 기록매체{DEVICE , METHOD FOR DETECTING ROOTING, AND COMPUTER RECORDING MEDIUM FOR PERFORMING THE METHOD}
본 발명은 루팅 탐지 장치, 방법 및 이를 수행하기 위한 컴퓨터 프로그램이 기록된 컴퓨터로 판독가능한 기록매체로서, 보다 상세하게는 디바이스 내의 루팅 여부를 탐지하는 루팅 탐지 장치, 방법 및 이를 수행하기 위한 컴퓨터 프로그램이 기록된 컴퓨터로 판독가능한 기록매체이다.
이동통신 기술의 발달로 인하여 무선 인터넷 기능 등의 다양한 기능을 갖춘 휴대폰이 보급되고 있다. 특히, 최근에 보급이 확산되고 있는 스마트폰은 모바일 운영체계에서 동작하는 다양한 애플리케이션을 설치할 수 있으며, 이러한 이유로 사용자들은 스마트폰을 여러가지의 용도로 이용하고 있다.
이러한 스마트폰에는 안드로이드(Android), i-OS(iPhone-operation System), 윈도우 모바일(window mobile) 등과 같은 모바일 운영체제가 탑재되며, 각종 모바일 운영체제에서 실행가능한 애플리케이션의 개발이 활발히 이루어지고 있다.
위와 같은 모바일 운영체제 중에서 안드로이드 플랫폼은 구글(Google)사가 주도하는 OHA(Open Handset Alliance)에서 공개한 오픈 소스 플랫폼이며, 리눅스(Linux) 커널, 가상머신(Virtual Machine: VM), 프레임워크(framework) 및 응용프로그램을 모두 포함하는 소프트웨어 패키지를 의미한다.
한편, 모바일 운영체제 중에서 안드로이드를 탑재한 스마트폰 등의 디바이스에서는 샌드박스(Sandbox) 개념을 적용하여 각 애플리케이션은 자신의 영역 외에 자원접근 자체가 제한되어 있고, 또한 각 애플리케이션 각자의 서명화(signing)를 통해 위변조에 대한 기본적인 방어 메커니즘을 제공하고 있다.
또한, 은행의 뱅킹 애플리케이션이나 증권사의 HTS(Home Trading System) 애플리케이션 등과 같이 위변조에 민감한 애플리케이션의 경우에는 자체적으로 위변조에 대한 검증 메커니즘을 적용하고 있으며, 이러한 검증 메커니즘은 위변조를 확인하기 이전에 루팅 여부에 대한 확인을 사전에 수행하게 된다.
이때, 루팅이란, 루트 권한을 얻는 일련의 과정으로 안드로이드 디바이스에서는 일반 유저의 권한보다 더 높은 권한을 얻기 위해 루팅을 한다. 안드로이드 디바이스 제조사들은 유저에게 루트 권한이 없는 디바이스를 제공하며, 안드로이드 애플리케이션들은 디바이스에 치명적인 피해를 입히는 것을 피하기 위해 기본적인 권한에서만 동작한다. 하지만, 대부분의 안드로이드 디바이스들은 루팅이 가능하며, 안드로이드 악성 애플리케이션은 안드로이드의 취약점을 이용해 일반 권한을 루트 권한으로 상승시킨다. 권한 상승은 제로데이나 알려지지 않은 버그 등의 취약점을 이용하여 디바이스를 직접 루팅시키거나, 루팅된 디바이스에서 정상적인 애플리케이션으로 가장하여 루트 권한을 요청하여 간접적으로 이루어질 수 있다. 한편, 루트 권한 접근을 허용하면 잠재적으로 멀웨어(malware) 의 공격경로를 제공할 수 있기 때문에, 뱅킹 애플리케이션과 같은 상용 애플리케이션들에서는 위험을 최소화하기 위해 초기에 루팅 탐지를 수행한다. 하지만, 기존의 루팅 탐지를 수행하는 애플리케이션은 apk 파일 안에 루팅 탐지 코드가 존재하므로, 이러한 apk 파일을 디컴파일하여 루팅 탐지 코드를 분석하면 루팅 탐지를 쉽게 우회할 수 있는 문제점이 있다.
한국공개특허 제2016-0074832호
본 발명의 일 측면은 루팅 탐지 실행을 명령받으면 NDK 기반의 코딩을 통해 생성된 so 파일을 포함한 루팅탐지모듈을 클라우드 서버로부터 수신하고, 수신된 루팅탐지모듈의 정책에 기초하여 루팅 여부를 탐지한 이후 해당 루팅탐지모듈을 삭제하는 루팅탐지장치, 방법 및 이를 수행하기 위한 컴퓨터 프로그램이 기록된 컴퓨터 판독가능한 기록매체를 제공하고자 한다.
본 발명의 일 측면에 따른 루팅탐지장치는 클라우드 서버와 연동되어 디바이스 내의 루팅 여부를 탐지하는 루팅 탐지장치로서, 루팅 탐지 실행을 명령받으면, 상기 루팅 탐지를 위한 적어도 하나 이상의 정책을 포함하는 루팅탐지모듈을 상기 클라우드 서버로부터 수신하는 통신부 및 상기 루팅탐지모듈의 정책에 기초하여 상기 루팅 여부를 탐지하고 상기 루팅 탐지가 완료되면 상기 수신된 루팅탐지모듈을 삭제하는 루팅탐지모듈관리부를 포함하고, 상기 루팅탐지모듈은 상기 정책을 수행하기 위한, NDK(Native Development Kit) 기반의 코딩 및 크로스 컴파일(compile) 과정을 통해 생성된 so 파일을 포함한다.
한편, 루팅탐지모듈은 루팅 탐지 대상으로서 미리 정해진 디렉토리에 액세스하여 해당 디렉토리 내에 루팅과 관련된 미리 정해진 파일이 존재하면 루팅인 것으로 판단하는 제 1 정책을 포함할 수 있다.
또한, 루팅탐지모듈은 루팅 탐지 대상인 미리 정해진 파일에서 시스템 속성을 확인하기 위한 제 2 정책을 포함하고, 상기 제 2 정책은 상기 미리 정해진 파일의 내용을 확인하여 상기 확인된 파일의 내용이 특정 빌드키를 포함하면 루팅이 아닌 것으로 판단하거나, 상기 확인된 파일의 내용이 특정값이면 루팅이 아닌 것으로 판단할 수 있다.
또한, 루팅탐지모듈은 현재 디바이스 내에서 실행중인 프로세스를 출력하고 상기 프로세스에 루팅과 관련된 미리 정해진 패키지 네임(package name)이 포함되면 루팅인 것으로 판단하는 제 3 정책을 포함할 수 있다.
또한, 루팅탐지모듈은 미리 정해진 명령어를 입력했을 때 해당 명령어에 대한 결과값이 출력되면 루팅인 것으로 판단하는 제 4 정책을 포함할 수 있다.
본 발명의 다른 측면에 따른 루팅탐지방법은 클라우드 서버와 연동되어 디바이스 내의 루팅 여부를 탐지하는 루팅탐지 방법으로서, 루팅 탐지 실행의 명령을 수신하면, 상기 루팅 탐지를 위한 적어도 하나 이상의 정책을 포함하는 루팅탐지모듈을 상기 클라우드 서버로부터 수신하는 단계, 상기 루팅탐지모듈의 상기 정책에 기초하여 상기 루팅 여부를 탐지하는 단계 및 상기 루팅 탐지가 완료되면 상기 수신된 루팅탐지모듈을 삭제하는 단계를 포함하고, 상기 루팅탐지모듈은 상기 정책을 수행하기 위한, NDK(Native Development Kit) 기반의 코딩 및 크로스 컴파일(compile) 과정을 통해 생성된 so 파일을 포함한다.
한편, 루팅탐지모듈은 루팅 탐지 대상으로서 미리 정해진 디렉토리에 액세스하여 해당 디렉토리 내에 루팅과 관련된 미리 정해진 파일이 존재하면 루팅인 것으로 판단하는 제 1 정책을 포함할 수 있다.
또한, 루팅탐지모듈은 루팅 탐지 대상인 미리 정해진 파일에서 시스템 속성을 확인하기 위한 제 2 정책을 포함하고, 상기 제 2 정책은 상기 미리 정해진 파일의 내용을 확인하여 상기 확인된 파일의 내용이 특정 빌드키를 포함하면 루팅이 아닌 것으로 판단하거나, 상기 확인된 파일의 내용이 특정값이면 루팅이 아닌 것으로 판단할 수 있다.
또한, 루팅탐지모듈은 현재 디바이스 내에서 실행중인 프로세스를 출력하고 상기 프로세스에 루팅과 관련된 미리 정해진 패키지 네임(package name)이 포함되면 루팅인 것으로 판단하는 제 3 정책을 포함할 수 있다.
또한, 루팅탐지모듈은 미리 정해진 명령어를 입력했을 때 해당 명령어에 대한 결과값이 출력되면 루팅인 것으로 판단하는 제 4 정책을 포함할 수 있다.
또한, 본 발명의 또 다른 측면에 따라 상술한 루팅탐지방법을 수행하기 위한, 컴퓨터 프로그램이 기록된 컴퓨터로 판독가능한 기록매체를 포함할 수 있다.
상술한 본 발명에 따르면, 루팅탐지장치 내의 apk 파일 안에 루팅탐지를 위한 정책과 관련된 코드가 포함되어 있지 않고, 루팅 탐지시마다 클라우드 서버로부터 루팅 탐지 코드가 포함된 루팅탐지모듈을 수신하여 이에 따라 루팅을 탐지하고 이후 삭제하므로, 루팅탐지장치 내 apk 파일의 디컴파일을 통한 루팅 탐지 우회를 효과적으로 방지할 수 있다.
또한, 루팅 탐지 모듈은 루팅 탐지 코드를 안드로이드의 native level 에서 동작하는 so 파일로 생성하므로, 기존의 java 언어로 구성된 루팅 탐지 코드보다 루팅 탐지 우회에 강점을 가질 수 있다.
도 1 은 본 발명의 일 실시예에 따른 루팅 탐지 시스템을 도시한 도면이다.
도 2 는 도 1 에 도시된 루팅탐지장치의 구성을 도시한 블록도이다.
도 3 은 도 1 에 도시된 클라우드 서버의 구성을 도시한 블록도이다.
도 4 는 도 2 의 루팅탐지장치에서 루팅 탐지를 수행하는 과정을 도시한 순서도이다.
도 5 는 루팅탐지모듈의 제 1 정책에 기초하여 디바이스 내 루팅 여부를 탐지하는 과정을 도시한 순서도이다.
도 6a 은 루팅탐지모듈의 제 2 정책에 기초하여 디바이스 내 루팅 여부를 탐지하는 과정의 제 1 예를 도시한 순서도이다.
도 6b 은 루팅탐지모듈의 제 2 정책에 기초하여 디바이스 내 루팅 여부를 탐지하는 과정의 제 2 예를 도시한 순서도이다.
도 7 은 루팅탐지모듈의 제 3 정책에 기초하여 디바이스 내 루팅 여부를 탐지하는 과정을 도시한 순서도이다.
도 8 은 루팅탐지모듈의 제 4 정책에 기초하여 디바이스 내 루팅 여부를 탐지하는 과정을 도시한 순서도이다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 것이며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
본 명세서에서 사용된 용어는 실시예들을 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다. 명세서에서 사용되는 "포함한다(comprises)" 및/또는 "포함하는(comprising)"은 언급된 구성요소, 단계 및 동작은 하나 이상의 다른 구성요소, 단계 및 동작의 존재 또는 추가를 배제하지 않는다.
도 1 은 본 발명의 일 실시예에 따른 루팅 탐지 시스템을 도시한 도면이다.
도 1 을 참조하면, 본 실시예에 따른 루팅 탐지 시스템은 디바이스(10)와 클라우드 서버(200)를 포함한다.
이러한 디바이스(10)와 클라우드 서버(200)는 네트워크를 통해 연결된다. 이때, 네트워크는 단말들 및 서버들과 같은 각각의 노드 상호 간에 정보 교환이 가능한 연결구조를 의미하는 것으로서, 예컨대, Wi-Fi, 블루투스(Bluetooth), 인터넷(Internet), LAN(Local Area Network), Wireless LAN(Wireless Local Area Network), WAN(Wide Area Network), PAN(Personal Area Network), 3G, 4G, 5G, LTE 등이 포함되며 이에 한정되지 않는다. 도 1 에는 하나의 디바이스(10)와 클라우드 서버(200)가 네트워크를 통해 연결되어 있는 모습이 도시되어 있으나, 다수의 디바이스(10)가 네트워크를 통해 클라우드 서버(200)에 동시에 접속될 수 있음은 물론이다.
디바이스(10)는 안드로이드 운영체제를 갖는 무선 통신 장치로서, 예컨대, PCS(Personal Communication System), GSM(Global System for Mobile communication), PDC(Personal Digital Celluar), PHS(Personal Handyphone System), PDA(Personal Digital Assistant), IMT(International Mobile Telecommunication-2000), CDMA(Code Division Multiple Access), W-CDMA(W-Code Division Multiple Access), Wibro(Wireless Broadcast Internet), 3G, 4G, 5G 단말, 스마트폰(smartphone), 태플릿 PC, 노트북 중 어느 하나일 수 있으며 이에 한정되지 않는다.
클라우드 서버(200)는 다수개의 애플리케이션이 저장된 플랫폼일 수 있다. 예컨대, 클라우드 서버(200)는 구글 플레이스토어나 써드파티 마겟의 서버일 수 있다. 그 구체적인 구성은 도 3 을 통해 설명한다.
한편, 안드로이드는 리눅스 커널 기반의 운영 체제로 안드로이드에서 루트 권한을 얻게 될 경우 리눅수에서와 마찬가지로 시스템 상의 모든 파일을 읽을 수 있거나 디바이스의 제어권을 가질 수 있다. 따라서, 뱅킹 애플리케이션 등과 같이 보안이 필요한 애플리케이션은 그 실행전에 디바이스가 루팅 단말인지 여부를 검사하여 루팅 단말이 아닌 것으로 판단되는 경우에만 정상적으로 동작시키도록 구현될 수 있다.
이를 위해 본 실시예의 디바이스(10)는 클라우드 서버(200)와 네트워크 접속을 수행하여 루팅 탐지 장치(100)를 다운로드받고, 이를 디바이스(10)내에 설치할 수 있다. 이러한 루팅탐지장치(100)는 예컨대, 루팅 탐지 애플리케이션일 수 있다.
루팅탐지장치(100)의 구체적 구성은 도 2 와 같다. 도 2 는 도 1 에 도시된 루팅탐지장치의 구성을 도시한 블록도이다.
도 2 를 참조하면, 본 실시예에 따른 루팅탐지장치(100)는 통신부(110), 루팅탐지모듈관리부(120) 및 데이터베이스(130)를 포함한다.
통신부(110)는 유무선 통신망을 통해 네트워크에 접속하여 클라우드 서버(200)로부터 데이터를 송수신한다. 이러한 본 실시예의 통신부(110)는 루팅탐지장치 내에 포함되어 있는 것으로 도시되어 있으나, 디바이스(10)의 통신부로 대체할 수 있음은 물론이다.
특히, 본 실시예에 따른 통신부(110)는 루팅탐지장치(100) 자체로부터 또는 디바이스(10)에 설치된 다른 애플리케이션으로부터 루팅 탐지 실행을 명령받으면, 클라우드 서버(200)에 루팅탐지모듈 요청신호를 송신하고, 해당 요청신호에 응답한 루팅탐지모듈을 클라우드 서버(200)로부터 수신한다. 또한, 통신부(110)는 루팅탐지장치(100)에서의 루팅 탐지 결과와 이와 관련된 정보를 클라우드 서버(200)에 송신할 수 있다. 상기 정보는 디바이스 내 루팅 여부에 대한 결과정보, 디바이스 내에 설치된 애플리케이션 정보, 패키지명, 버전 정보, 단말환경정보 등을 포함할 수 있다.
루팅탐지모듈관리부(120)는 통신부(110)에서 수신한 루팅탐지모듈에 기초하여 디바이스의 루팅 여부를 탐지하고 상기 루팅 탐지가 완료되면 해당 루팅탐지모듈을 삭제한다.
이러한 루팅탐지모듈관리부(120)에서의 구체적 동작은 도 4 와 같다. 도 4 를 참조하면, 루팅탐지모듈관리부(120)는 디바이스(10) 내에서 루팅 탐지의 필요성이 인식되어 루팅탐지장치(100)에 루팅탐지 실행명령이 입력되면(310), 통신부(110)를 통해 루팅탐지모듈 요청신호를 클라우드 서버(200)에 송신하게 한다. 상기 루팅탐지모듈 요청신호에 응답한 루팅탐지모듈이 통신부(110)를 통해 수신되면(320), 해당 루팅탐지모듈 내 정책에 기초하여 디바이스(10)의 루팅 여부를 탐지한다(330). 상기 디바이스의 루팅 여부 탐지가 완료되면(340), 루팅탐지모듈관리부는 루팅탐지장치 내에서 루팅 여부 탐지에 사용된 루팅탐지모듈을 삭제한다(350).
한편, 본 실시예의 루팅탐지모듈은 디바이스(10) 내 루팅 여부를 탐지하기 위한 적어도 하나 이상의 정책을 포함하는 모듈이다. 특히, 본 실시예에 따른 루팅탐지모듈은 상기 정책을 수행하기 위한, NDK(Native Development Kit) 기반의 코딩 및 크로스 컴파일(compile) 과정을 통해 생성된 so 파일을 포함할 수 있다. 즉, 본 실시예의 루팅탐지모듈은 Native 레벨에서 동작하는 C/C++언어로 작성된 루팅탐지코드로 구성될 수 있다. 이로써, 기존의 java 언어로 구성된 루팅탐지코드가 apk 디컴파일을 통해 쉽게 분석이 가능하며 실 단말이나 가상환경에서 Xposed 프레임워크를 이용하여 해당 메소드를 후킹하는 등 루팅 탐지 우회의 문제점을 갖고 있었으나, 본 실시예의 루팅탐지모듈은 이러한 루팅탐지 우회에 대한 강점을 가질 수 있게된다.
루팅탐지모듈은 디바이스(10) 내 루팅 여부를 탐지하기 위한 적어도 하나 이상의 정책으로서, 루팅 탐지 대상으로서 미리 정해진 디렉토리에 액세스하여 해당 디렉토리 내에 루팅과 관련된 미리 정해진 파일이 존재하면 루팅인 것으로 판단하는 제 1 정책을 포함한다. 상기 제 1 정책에 기초하여 디바이스(10) 내 루팅 여부를 탐지하는 구체적 과정은 도 5 와 같다.
먼저, 디바이스(10)가 루팅되는 경우 디바이스(10)의 일정 파일 시스템(디렉토리)에는 SU(Super User)라는 바이너리 파일이 생성될 수 있다.
따라서, 제 1 정책에 따른 루팅탐지(410)는 루팅 탐지의 대상이 되는 디렉토리로 액세스(420)하여 해당 디렉토리에 상기 SU 와 같은 미리 정해진 파일이 존재하는지 확인(430)하고, 해당 파일이 존재하면 루팅인 것으로 그렇지 않으면 루팅이 아닌 것으로 판단한다(430,441,442). 이때, 상기 디렉토리로 액세스하기 위해 'access' 함수가 이용된 정규표현식이 이용될 수 있다. 또한, 상기 미리 정해진 디렉토리는 예컨대, /system/bin, /system/xbin/, /system/bin/.ext/, /sbin/, /data/local/, /data/local/bin/, /data/local/xbin 중 적어도 어느 하나일 수 있으며 이에 한정되지 않는다.
루팅탐지모듈은 루팅탐지대상인 미리 정해진 파일에서 시스템 속성을 확인하기 위한 제 2 정책을 포함한다. 이때, 상기 제 2 정책은 미리 정해진 파일의 내용을 확인하여 확인된 파일의 내용이 특정 빌드키이거나 특정값인지 여부를 확인하는 과정을 통해 디바이스 내 루팅 여부를 판단한다.
구체적인 제 2 정책에 따른 디바이스 내 루팅 여부를 탐지하는 과정은 도 6 a 및 도 6b 에 따른다.
먼저, 제 2 정책에 따른 루팅탐지(510,610)는 미리 정해진 파일을 오픈하고 출력한다(520,620). 이때, 상기 미리 정해진 파일은 해당 디바이스가 루팅된 디바이스가 아님을 나타내는 빌드키 또는 값이 포함될 수 있는 파일이며, 예컨대, "ro.buile.tags" 또는 "ro.seucre" 일 수 있다. 이를 위해, 시스템 속성을 확인할 수 있는 디렉토리(예컨대, /system/bulid.prop 또는 /default.prop) 내의 파일에서 상기 미리 정해진 파일을 포함하는 파일을 모두 출력하기 위한 popen 함수와 같은 정규표현식이 이용될 수 있다. 상기 미리 정해진 파일이 오픈 및 출력되면(520,620) 해당 파일 내의 내용을 문자열로 읽고(530,630), 그 결과 해당 내용이 특정 빌드키 또는 특정 값이면(540,640) 디바이스가 루팅이 아니고(541,641) 그 값이 아니면 루팅인 것으로 판단할 수 있다(542,642). 이때, strcmp 와 같은 정규표현식과 같이 내가 원하는 내용이 문자열에 포함되어 있는지 확인하는 정규표현식이 사용될 수 있으며, 상기 특정 빌드키는 루팅이 아닌 디바이스의 signature 인 "release-keys" 일 수 있고, 특정 값은 "0" 일 수 있다.
루팅탐지모듈은 현재 디바이스 내에서 실행중인 프로세스를 출력하고 상기 프로세스에 루팅과 관련된 패키지 네임(package name)이 포함되면 루팅인 것으로 판단하는 제 3 정책을 포함한다. 상기 제 3 정책에 따른 디바이스 내 루팅 여부를 판단하는 구체적 과정은 도 7 과 같다.
먼저, 제 3 정책에 따른 루팅탐지(710)는 현재 실행중인 프로세스를 출력(720)하여 해당 프로세스 내에 미리 정해진 패키지 네임이 존재하는지 확인(730)하고, 그 결과 패키지 네임이 존재하면 루팅인 것으로 그렇지 않으면 루팅이 아닌 것으로 판단한다(741,742). 이를 위해 popen 함수에 ps 와 grep 을 입력하여 현재 실행중인 프로세스와 특정 문자열을 포함하는 파일을 출력하는 정규표현식과, 상술한 명령어를 입력한 결과 stream 이 NULL 이면 상기 미리 정해진 패키지 네임이 존재하지 않음을 의미하므로 루팅이 아닌 것으로 판단하고, NULL 이 아니면 루팅인 것으로 판단하는 정규표현식이 사용될 수 있다. 상기 미리 정해진 패키지 네임은 루팅과 관련된다고 의심되는 것으로서, 예컨대, 'de.robv.android.xposed','com.devadvance.rootcloak','de.robv.android.xposed.installer','com.saurik.substrate','com.devadvance.rootcloakplus','eu.chainfire.supersu', 'com.noshufou.android.su' 중 어느 하나일 수 있고 이에 한정되는 것은 아니다.
루팅탐지모듈은 미리 정해진 명령어를 입력했을 때 해당 명령어에 대한 결과값이 출력되면 루팅인 것으로 판단하는 제 4 정책을 포함한다. 상기 제 4 정책에 따른 디바이스 내 루팅 여부를 판단하는 구체적 과정은 도 8 과 같다.
먼저, 제 4 정책에 따른 루팅탐지(810)는 미리 정해진 명령어를 입력(820)하여 해당 명령어에 대한 결과값이 출력(830)되면 루팅인 것으로 판단(841)하고, 그렇지 않으면 루팅이 아닌 것으로 판단(842)한다. 즉, 상기 제 4 정책은 기설정된 명령어를 입력했을 때 해당 명령어에 대한 결과값이 출력되는지 여부에 따라 루팅을 판단하는 것으로서, 예컨대 'su' 명령어를 입력하여 그 값이 출력되면 루팅이 디텍되는 정규표현식이 사용될 수 있다.
도 2 로 돌아가서, 본 실시예에 따른 루팅탐지장치(100)는 데이터베이스(130)를 더 포함한다. 데이터베이스(130)는 기본 애플리케이션의 동작을 위한 apk 파일을 포함할 수 있다. 특히, 본 실시예에 따른 데이터베이스(130)는 상기 apk 파일 내에 루팅탐지코드를 저장하고 있지 않고, 루팅탐지모듈관리부(120)에 의한 제어에 따라 클라우드 서버(200)로부터 루팅탐지모듈을 수신하면 해당 루팅탐지모듈 내 포함된 루팅탐지코드 및 이와 관련된 데이터를 저장하고, 루팅탐지가 완료되면 상기 저장된 루팅탐지코드 및 이와 관련된 데이터를 삭제한다. 즉, 데이터베이스(130)는 루팅탐지가 실행되는 동안만 루팅탐지코드 및 이와 관련된 데이터를 저장하는 것이다. 또한, 본 실시예에 따른 데이터베이스(130)는 루팅탐지 결과를 저장하고, 해당 결과와 연관된 정보로서 예컨대, 디바이스(10) 내에 설치된 애플리케이션 정보, 패키지명, 버전 정보, 단말환경정보 등을 함께 루팅탐지 결과정보로서 저장할 수 있다.
한편, 본 실시예에 따른 클라우드 서버(200)는 루팅탐지모듈을 송신한 결과로서 루팅탐지 결과에 대한 데이터를 수집하고, 이를 분석하여 루팅탐지를 위한 정책에 반영할 수 있다. 이를 위한 클러우드 서버(200)의 구성은 도 3 에 도시된 바와 같다.
도 3 을 참조하면, 본 실시예에 따른 클라우드 서버(200)는 통신부(210), 루팅탐지결과 분석부(220), 정책관리부(230) 및 so 파일 생성부(240)를 포함한다.
통신부(210)는 적어도 하나 이상의 디바이스(10)와 유무선 통신방식 등을 통해 네트워크에 접속하는 구성으로서, 디바이스(10)로부터 루팅탐지모듈 요청신호를 수신하고, 루팅탐지모듈 요청신호에 응답한 루팅탐지모듈을 전송할 수 있다. 또한, 디바이스(10)로부터 상기 루팅탐지모듈을 전송한 결과인 루팅탐지 결과에 대한 데이터를 수신할 수 있다.
루팅탐지결과 분석부(220)는 상기 수신된 루팅탐지 결과에 대한 데이터를 분석한다. 상기 데이터는 디바이스(10)에 설치된 애플리케이션의 이름, 패키지 명, 버전 정보, 단말환경정보를 포함할 수 있고, 단말환경정보는 예컨대, 디바이스 이름, 디바이스의 빌드 키, 커널 버전 정보, 장치 정보 및 달빅 VM(Dalvik Virtual Machine) 설정 값 등을 포함할 수 있다.
루팅탐지결과 분석부(220)는 루팅된 디바이스의 애플리케이션 정보 및 단말환경정보를 분석하여 루팅판단의 정책에 반영할 수 있다. 구체적으로, 루팅탐지결과 분석부(220)는 루팅된 디바이스에 설치된 애플리케이션의 패키지 명이 변경되었는지 확인하고, 루팅된 디바이스에만 설치된 애플리케이션을 추출할 수 있다. 또한, 루팅탐지결과 분석부(220)는 루팅된 디바이스와 그 디바이스의 단말환경정보의 상관관계를 도출할 수 있다.
정책관리부(230)는 루팅 탐지를 위한 적어도 하나 이상의 정책을 저장하고 관리하는 구성으로서, 특히, 루팅탐지결과 분석부(220)에서 분석된 결과를 반영하여 상기 정책을 변경하거나 업데이트할 수 있다.
so파일 생성부(240)는 정책관리부(230)에 저장된 정책을 실행하기 위한 루팅탐지코드를 생성하는 구성으로서, NDK(Native Development Kit) 기반의 코딩 및 크로스 컴파일(compile) 과정을 통해 so 파일을 생성한다. 또한, 정책관리부(230)에서 상기 정책을 변경하거나 업데이트하면, 해당 정책과 관련된 루팅탐지코드를 변경 또는 업데이트할 수 있다.
상술한 본 발명에 따르면, 루팅탐지장치 내의 apk 파일 안에 루팅탐지를 위한 정책과 관련된 코드가 포함되어 있지 않고, 루팅 탐지시마다 클라우드 서버로부터 루팅 탐지 코드가 포함된 루팅탐지모듈을 수신하여 이에 따라 루팅을 탐지하고 이후 삭제하므로, 루팅탐지장치 내 apk 파일의 디컴파일을 통한 루팅 탐지 우회를 효과적으로 방지할 수 있다.
또한, 루팅 탐지 모듈은 루팅 탐지 코드를 안드로이드의 native level 에서 동작하는 so 파일로 생성하므로, 기존의 java 언어로 구성된 루팅 탐지 코드보다 루팅 탐지 우회에 강점을 가질 수 있다.
이와 같은, 루팅탐지방법은 다양한 컴퓨터 구성요소를 통하여 수행될 수 있는 프로그램 명령어의 형태로 구현되어 컴퓨터 판독 가능한 기록 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능한 기록 매체는 프로그램 명령어, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다.
상기 컴퓨터 판독 가능한 기록 매체에 기록되는 프로그램 명령어는 본 발명을 위하여 특별히 설계되고 구성된 것들이거니와 컴퓨터 소프트웨어 분야의 당업자에게 공지되어 사용 가능한 것일 수도 있다.
컴퓨터 판독 가능한 기록 매체의 예에는, 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체, CD-ROM, DVD 와 같은 광기록 매체, 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 ROM, RAM, 플래시 메모리 등과 같은 프로그램 명령어를 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다.
프로그램 명령어의 예에는, 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드도 포함된다. 상기 하드웨어 장치는 본 발명에 따른 처리를 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상 첨부된 도면을 참조하여 본 발명의 실시예를 설명하였지만, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.
10: 디바이스
100: 루팅탐지장치
200: 클라우드 서버

Claims (11)

  1. 클라우드 서버와 연동되어 디바이스 내의 루팅 여부를 탐지하는 루팅 탐지장치로서,
    루팅 탐지 실행을 명령받으면, 상기 루팅 탐지를 위한 적어도 하나 이상의 정책을 포함하는 루팅탐지모듈을 상기 클라우드 서버로부터 수신하는 통신부; 및
    상기 루팅탐지모듈의 정책에 기초하여 상기 루팅 여부를 탐지하고 상기 루팅 탐지가 완료되면 상기 수신된 루팅탐지모듈을 삭제하는 루팅탐지모듈관리부를 포함하고,
    상기 루팅탐지모듈은 상기 정책을 수행하기 위한, NDK(Native Development Kit) 기반의 코딩 및 크로스 컴파일(compile) 과정을 통해 생성된 so 파일을 포함하는 루팅탐지장치.
  2. 제 1 항에 있어서,
    상기 루팅탐지모듈은
    루팅 탐지 대상으로서 미리 정해진 디렉토리에 액세스하여 해당 디렉토리 내에 루팅과 관련된 미리 정해진 파일이 존재하면 루팅인 것으로 판단하는 제 1 정책을 포함하는 루팅탐지장치.
  3. 제 1 항에 있어서,
    상기 루팅탐지모듈은
    루팅 탐지 대상인 미리 정해진 파일에서 시스템 속성을 확인하기 위한 제 2 정책을 포함하고,
    상기 제 2 정책은 상기 미리 정해진 파일의 내용을 확인하여 상기 확인된 파일의 내용이 특정 빌드키를 포함하면 루팅이 아닌 것으로 판단하거나, 상기 확인된 파일의 내용이 특정값이면 루팅이 아닌 것으로 판단하는 루팅탐지장치.
  4. 제 1 항에 있어서,
    상기 루팅탐지모듈은
    현재 디바이스 내에서 실행중인 프로세스를 출력하고 상기 프로세스에 루팅과 관련된 미리 정해진 패키지 네임(package name)이 포함되면 루팅인 것으로 판단하는 제 3 정책을 포함하는 루팅탐지장치.
  5. 제 1 항에 있어서,
    상기 루팅탐지모듈은
    미리 정해진 명령어를 입력했을 때 해당 명령어에 대한 결과값이 출력되면 루팅인 것으로 판단하는 제 4 정책을 포함하는 루팅탐지장치.
  6. 클라우드 서버와 연동되어 디바이스 내의 루팅 여부를 탐지하는 루팅탐지 방법으로서,
    루팅 탐지 실행의 명령을 수신하면, 상기 루팅 탐지를 위한 적어도 하나 이상의 정책을 포함하는 루팅탐지모듈을 상기 클라우드 서버로부터 수신하는 단계;
    상기 루팅탐지모듈의 상기 정책에 기초하여 상기 루팅 여부를 탐지하는 단계; 및
    상기 루팅 탐지가 완료되면 상기 수신된 루팅탐지모듈을 삭제하는 단계를 포함하고,
    상기 루팅탐지모듈은 상기 정책을 수행하기 위한, NDK(Native Development Kit) 기반의 코딩 및 크로스 컴파일(compile) 과정을 통해 생성된 so 파일을 포함하는 루팅탐지방법.
  7. 제 6 항에 있어서,
    상기 루팅탐지모듈은
    루팅 탐지 대상으로서 미리 정해진 디렉토리에 액세스하여 해당 디렉토리 내에 루팅과 관련된 미리 정해진 파일이 존재하면 루팅인 것으로 판단하는 제 1 정책을 포함하는 루팅탐지방법.
  8. 제 6 항에 있어서,
    상기 루팅탐지모듈은
    루팅 탐지 대상인 미리 정해진 파일에서 시스템 속성을 확인하기 위한 제 2 정책을 포함하고,
    상기 제 2 정책은 상기 미리 정해진 파일의 내용을 확인하여 상기 확인된 파일의 내용이 특정 빌드키를 포함하면 루팅이 아닌 것으로 판단하거나, 상기 확인된 파일의 내용이 특정값이면 루팅이 아닌 것으로 판단하는 루팅탐지방법.
  9. 제 6 항에 있어서,
    상기 루팅탐지모듈은
    현재 디바이스 내에서 실행중인 프로세스를 출력하고 상기 프로세스에 루팅과 관련된 미리 정해진 패키지 네임(package name)이 포함되면 루팅인 것으로 판단하는 제 3 정책을 포함하는 루팅탐지방법.
  10. 제 6 항에 있어서,
    상기 루팅탐지모듈은
    미리 정해진 명령어를 입력했을 때 해당 명령어에 대한 결과값이 출력되면 루팅인 것으로 판단하는 제 4 정책을 포함하는 루팅탐지방법.
  11. 제 6 항 내지 제 10 항 중 어느 한 항에 따른 루팅탐지방법을 수행하기 위한, 컴퓨터 프로그램이 기록된 컴퓨터로 판독가능한 기록매체.
KR1020170031988A 2017-03-14 2017-03-14 루팅 탐지 장치, 방법 및 이를 수행하기 위한 컴퓨터 프로그램이 기록된 컴퓨터로 판독가능한 기록매체 KR20180104982A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020170031988A KR20180104982A (ko) 2017-03-14 2017-03-14 루팅 탐지 장치, 방법 및 이를 수행하기 위한 컴퓨터 프로그램이 기록된 컴퓨터로 판독가능한 기록매체

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170031988A KR20180104982A (ko) 2017-03-14 2017-03-14 루팅 탐지 장치, 방법 및 이를 수행하기 위한 컴퓨터 프로그램이 기록된 컴퓨터로 판독가능한 기록매체

Publications (1)

Publication Number Publication Date
KR20180104982A true KR20180104982A (ko) 2018-09-27

Family

ID=63719486

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170031988A KR20180104982A (ko) 2017-03-14 2017-03-14 루팅 탐지 장치, 방법 및 이를 수행하기 위한 컴퓨터 프로그램이 기록된 컴퓨터로 판독가능한 기록매체

Country Status (1)

Country Link
KR (1) KR20180104982A (ko)

Similar Documents

Publication Publication Date Title
KR102137773B1 (ko) 보안 애플리케이션을 통해 안전한 데이터를 전송하기 위한 시스템 및 그에 관한 방법
US9081967B2 (en) System and method for protecting computers from software vulnerabilities
US11086983B2 (en) System and method for authenticating safe software
CN102651061B (zh) 用于检测复杂恶意软件的系统和方法
JP5586216B2 (ja) コンテキストアウェアによるリアルタイムコンピュータ保護システムおよび方法
US8272048B2 (en) Restriction of program process capabilities
CN102792307B (zh) 在虚拟环境中提供网络访问控制的系统和方法
RU2514140C1 (ru) Система и способ увеличения качества обнаружений вредоносных объектов с использованием правил и приоритетов
US20150332043A1 (en) Application analysis system for electronic devices
CN110119614B (zh) 检测浏览器扩展的隐藏行为的系统和方法
US8869284B1 (en) Systems and methods for evaluating application trustworthiness
US10320810B1 (en) Mitigating communication and control attempts
CN105760787A (zh) 用于检测随机存取存储器中的恶意代码的系统及方法
CN104769598A (zh) 用于检测非法应用程序的系统和方法
Choi et al. Personal information leakage detection method using the inference-based access control model on the Android platform
Alfalqi et al. Android platform malware analysis
Wang et al. FSFC: An input filter-based secure framework for smart contract
CN109818972B (zh) 一种工业控制系统信息安全管理方法、装置及电子设备
El-Zawawy et al. Do not let Next-Intent Vulnerability be your next nightmare: type system-based approach to detect it in Android apps
Kim et al. Burnfit: Analyzing and exploiting wearable devices
KR101345867B1 (ko) 클라우드 스토리지를 위한 악성파일 탐지 시스템 및 그 탐지 방법
US11170103B2 (en) Method of detecting malicious files resisting analysis in an isolated environment
CN110807195A (zh) 一种智能合约的发布方法、发布平台装置及发布系统
CN103413093B (zh) 一种基于内存隔离的xen云平台虚拟机隔离方法
Chang et al. Towards a multilayered permission‐based access control for extending Android security

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment