모바일어플리케이션의정적분석을통한개인정보유출차단 Blocking Personal Information Leakage of Mobile Application using Static Analysis I. 서론 1.1 연구의필요성 2013년인터넷이용실태조사결과 [1] 에따르면

Similar documents
Secure Programming Lecture1 : Introduction

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

Android Master Key Vulnerability

Microsoft PowerPoint - chap01-C언어개요.pptx

1. 자바프로그램기초 및개발환경 2 장 & 3 장. 자바개발도구 충남대학교 컴퓨터공학과

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp");

이 장에서 사용되는 MATLAB 명령어들은 비교적 복잡하므로 MATLAB 창에서 명령어를 직접 입력하지 않고 확장자가 m 인 text 파일을 작성하여 실행을 한다

Microsoft PowerPoint App Fundamentals[Part1](1.0h).pptx

Microsoft PowerPoint - 11주차_Android_GoogleMap.ppt [호환 모드]

슬라이드 1

ScanDal/Privacy 안드로이드앱의 개인정보누출을잡아내는 정적분석기 서울대학교프로그래밍연구실김진영윤용호이광근

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc

ISP and CodeVisionAVR C Compiler.hwp

안드로이드 앱의 개인정보 유출 여부 분석

Microsoft PowerPoint SDK설치.HelloAndroid(1.5h).pptx

게시판 스팸 실시간 차단 시스템

MB525_M_1104_L.pdf

UI TASK & KEY EVENT

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

Microsoft PowerPoint Android-SDK설치.HelloAndroid(1.0h).pptx

Chapter #01 Subject

이도경, 최덕재 Dokyeong Lee, Deokjai Choi 1. 서론

iii. Design Tab 을 Click 하여 WindowBuilder 가자동으로생성한 GUI 프로그래밍환경을확인한다.

서현수

U.Tu System Application DW Service AGENDA 1. 개요 4. 솔루션 모음 1.1. 제안의 배경 및 목적 4.1. 고객정의 DW구축에 필요한 메타정보 생성 1.2. 제품 개요 4.2. 사전 변경 관리 1.3. 제품 특장점 4.3. 부품화형


Microsoft Word - src.doc

JVM 메모리구조

UI TASK & KEY EVENT

Windows Server 2012

C# Programming Guide - Types

SBR-100S User Manual

JDK이클립스

Microsoft PowerPoint App Fundamentals[Part1].pptx

gnu-lee-oop-kor-lec06-3-chap7

문학석사학위논문 존밀링턴싱과이효석의 세계주의비교 로컬 을중심으로 년 월 서울대학교대학원 협동과정비교문학 이유경

Facebook API

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CBED0C3E0C7C1B7CEB1D7B7A55C D616E2E637070>

슬라이드 1

Microsoft Word - [2017SMA][T8]OOPT_Stage_2040 ver2.docx

제이쿼리 (JQuery) 정의 자바스크립트함수를쉽게사용하기위해만든자바스크립트라이브러리. 웹페이지를즉석에서변경하는기능에특화된자바스크립트라이브러리. 사용법 $( 제이쿼리객체 ) 혹은 $( 엘리먼트 ) 참고 ) $() 이기호를제이쿼리래퍼라고한다. 즉, 제이쿼리를호출하는기호

[Blank Page] i

1. What is AX1 AX1 Program은 WIZnet 사의 Hardwired TCP/IP Chip인 iinchip 들의성능평가및 Test를위해제작된 Windows 기반의 PC Program이다. AX1은 Internet을통해 iinchip Evaluation

adfasdfasfdasfasfadf

View Licenses and Services (customer)

vRealize Automation용 VMware Remote Console - VMware

쉽게 풀어쓴 C 프로그래밍

Frama-C/JESSIS 사용법 소개

Microsoft PowerPoint - additional01.ppt [호환 모드]

Special Theme _ 모바일웹과 스마트폰 본 고에서는 모바일웹에서의 단말 API인 W3C DAP (Device API and Policy) 의 표준 개발 현황에 대해서 살펴보고 관 련하여 개발 중인 사례를 통하여 이해를 돕고자 한다. 2. 웹 애플리케이션과 네이

4) 5) 6) 7)

ActFax 4.31 Local Privilege Escalation Exploit

SQL Developer Connect to TimesTen 유니원아이앤씨 DB 기술지원팀 2010 년 07 월 28 일 문서정보 프로젝트명 SQL Developer Connect to TimesTen 서브시스템명 버전 1.0 문서명 작성일 작성자

Microsoft PowerPoint - chap10-함수의활용.pptx

Microsoft PowerPoint - Java7.pptx

(Microsoft PowerPoint - AndroG3\306\367\306\303\(ICB\).pptx)

var answer = confirm(" 확인이나취소를누르세요."); // 확인창은사용자의의사를묻는데사용합니다. if(answer == true){ document.write(" 확인을눌렀습니다."); else { document.write(" 취소를눌렀습니다.");

쉽게 풀어쓴 C 프로그래밊

PowerPoint 프레젠테이션

NX1000_Ver1.1

금오공대 컴퓨터공학전공 강의자료

. 스레드 (Thread) 란? 스레드를설명하기전에이글에서언급되는용어들에대하여알아보도록하겠습니다. - 응용프로그램 ( Application ) 사용자에게특정서비스를제공할목적으로구현된응용프로그램을말합니다. - 컴포넌트 ( component ) 어플리케이션을구성하는기능별요

PathEye 공식 블로그 다운로드 받으세요!! 지속적으로 업그래이드 됩니다. 여러분의 의견을 주시면 개발에 반영하겠 습니다.

Mobile Service > IAP > Android SDK [ ] IAP SDK TOAST SDK. IAP SDK. Android Studio IDE Android SDK Version (API Level 10). Name Reference V

API 매뉴얼

OCW_C언어 기초

02_3 지리산권 스마트폰 기반 3D 지도서비스_과업지시서.hwp

1부

Microsoft Word - FunctionCall

PowerPoint 프레젠테이션

저작자표시 - 비영리 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할

리눅스설치가이드 3. 3Rabbitz Book 을리눅스에서설치하기위한절차는다음과같습니다. 설치에대한예시는우분투서버 기준으로진행됩니다. 1. Java Development Kit (JDK) 또는 Java Runtime Environment (JRE) 를설치합니다. 2.

Ver 1.0 마감하루전 Category Partitioning Testing Tool Project Team T1 Date Team Information 김강욱 김진욱 김동권

PowerPoint Presentation

CODESYS 런타임 설치과정

슬라이드 1

<32BDBAB8B6C6AEC6F9B1DDC0B6B0C5B7A13130B0E8B8EDBEC8B3BBBCAD2E687770>

<4D F736F F F696E74202D B3E22032C7D0B1E220C0A9B5B5BFECB0D4C0D3C7C1B7CEB1D7B7A1B9D620C1A638B0AD202D20C7C1B7B9C0D320BCD3B5B5C0C720C1B6C0FD>

PCC =10100 =minusby by1000 ±âto0.03ex±âto0.03ex±â=10100 =minusby by1000 ¹Ýto0.03ex¹Ýto0.03ex¹Ý =10100 =minusby by1000 ¾Èto0.03

슬라이드 1

Windows 8에서 BioStar 1 설치하기

C. KHU-EE xmega Board 에서는 Button 을 2 개만사용하기때문에 GPIO_PUSH_BUTTON_2 과 GPIO_PUSH_BUTTON_3 define 을 Comment 처리 한다. D. AT45DBX 도사용하지않기때문에 Comment 처리한다. E.

ad hwp

PowerPoint Presentation

Install stm32cubemx and st-link utility

2) 활동하기 활동개요 활동과정 [ 예제 10-1]main.xml 1 <LinearLayout xmlns:android=" 2 xmlns:tools="

API - Notification 메크로를통하여어느특정상황이되었을때 SolidWorks 및보낸경로를통하여알림메시지를보낼수있습니다. 이번기술자료에서는메크로에서이벤트처리기를통하여진행할예정이며, 메크로에서작업을수행하는데유용할것입니다. 알림이벤트핸들러는응용프로그램구현하는데있어

ThisJava ..

LATEX과 Mendeley를 활용한 문헌 관리 2017년 2월 6일 제1절 서지 관리 프로그램 연구 주제를 찾거나 선행 연구를 조사하는 가장 대표적인 방법이 문헌들을 찾아보는 것이다. 수없이 많은 논문들을 찾게 되고, 이런 논문들을 다운로드한 후 체계적으로 관리할 필

Microsoft Word - Armjtag_문서1.doc

로거 자료실

[Brochure] KOR_TunA

PowerPoint 프레젠테이션

슬라이드 1

Figure 1: 현존하는 정적 분석 기술의 한계와 본 연구의 목표. 이러한 허위경보(false alarm)를 가질 수 밖에 없는데, 오탐율(전체 경보중 허위경보의 비율)이 정확도의 척도가 된다. 유용한 정적 분석기는 충분히 낮은 허위경보율을 가져야 한다. 대형 프로그

JUNIT 실습및발표

- 목차 - - ios 개발환경및유의사항. - 플랫폼 ios Project. - Native Controller와플랫폼화면연동. - 플랫폼 Web(js)-Native 간데이터공유. - 플랫폼확장 WN Interface 함수개발. - Network Manager clas

Chap 6: Graphs

저작자표시 - 비영리 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할

Transcription:

모바일어플리케이션의정적분석을통한개인정보유출차단 Blocking Personal Information Leakage of Mobile Application using Static Analysis 요 약 스마트폰의빠른보급에따라거의대부분의사람들이스마트폰을통해어플리케이션을사용하는시대가도래했다. 그러나특히안드로이드플랫폼상에서의어플리케이션은권한시스템의한계점으로인해어플리케이션이어떤정보를요구하는지등을알기어려우며, 요구하는정보들중일부만거부하는것도불가능하다. 또한, 획득된정보가기기내에서만사용되는지, 외부로전송되는지도알수없는것이현실이다. 따라서본연구에서는모바일어플리케이션을정적분석한결과를토대로개인정보가유출될수있는부분에서사용자의의도를물어보고사용자가원하는방향으로실행될수있도록하고, 별도로개인정보관리기능을제공하여추후에도이미부여된권한을수정하고체계적으로관리할수있도록하는시스템을구현해보았다.

모바일어플리케이션의정적분석을통한개인정보유출차단 Blocking Personal Information Leakage of Mobile Application using Static Analysis I. 서론 1.1 연구의필요성 2013년인터넷이용실태조사결과 [1] 에따르면스마트폰을보유한가구의비율은 79.7% 로 5가구중 4가구는스마트폰을사용하고있다. 여러통계자료로볼때우리의일상에서이미스마트폰은땔레야땔수없는중요한전자기기가되어있는것이다. 또한, 2012년하반기스마트폰이용실태조사결과 [2] 에따르면스마트폰이용자의 1인평균설치된어플리케이션의개수는 46.1개로상당히많음을알수있다. 한편, 삼성갤럭시S 내의 거울 위젯어플리케이션이동작하는기능에비해엄청난권한을요구하고있던것 [3] 이밝혀진바있으며, 얼마전에는유명손전등어플리케이션에서유심칩번호등의중요한개인정보를외부로유출한다는것 [4] 이드러난바가있다. 앞에서보이는것처럼원래의목적과는다르게사용자몰래개인정보를유출할수있는악성어플리케이션이증가하고있다. 또한, 악성어플리케이션이아니라도사용자위치기반광고서비스등부가서비스를위해사용자의개인정보영역에접근하는경우가많이늘어나고있다.

그림 1 손전등앱개인정보훔쳐가 유심칩번호까지유출 [4] Fig.1 Flashlight app steals personal information Leakage up to USIM chip number[4] 일반적으로사람들이널리사용하는스마트폰은크게 ios와 Android로구분된다. ios 를사용한아이폰의경우에는어플리케이션이요청하는모든권한에대해승인여부를물어보는팝업창을띄우고사용자의답변을받는형태로개인정보를관리하며그림2처럼설정창에서각권한별로승인여부를쉽게변경할수있도록한다.

그림 2 ios 상에서는사용자가각개인정보에대해사용을허가하거나거부할수있음 Fig.2 On ios, user can grant or refuse for use of specific kind of personal information 이에반해, 2014년 1월기준으로대한민국스마트폰사용자의 93.4% 가사용하는플랫폼인 Android[5] 는그림3처럼처음에설치할때에단한번, 이어플리케이션이이러한개인정보에접근할수있음을표시할뿐이다. 그마저도이중하나라도거부한다면그어플리케이션은설치조차되지않는다. 따라서특정기능을이용하고싶은사용자는울며겨자먹기로어플리케이션이요구하는권한을모두수락할수밖에없는것이다. 한편, 어플리케이션이특정권한을획득한다면, 그이후부터는사용자에게알려지는것하나없이개인정보에쉽게접근할수도있다. 따라서 Android 상에서도어플리케이션이개인정보를사용할수있도록하는권한을각유형별로사용자가관리할필요가있다.

그림 3 어플리케이션설치시사용자는모든권한에동의해야만함 Fig.3 When user installs application, user must accept all of permisions

그림 4 개인정보에접근할수있는권한이있는어플리케이션 Fig.4 Application which has permission to access personal information 1.2 연구현황 1.2.1 ScanDal[6] 달빅가상머신언어로기술되어있는안드로이드어플리케이션을분석대상으로하는정적분석기이다. 달빅프로그램에대해분석한다는것은자바역컴파일러등의툴을이용하지않는다는뜻이다. 악성행동을의도한어플리케이션의경우달빅바이트코드수준에서코드의수정이있을수있고, 그경우자바로의역컴파일러가제대로작동하지못할수있다. 따라서달빅바이트코드의실행의미를직접분석한다. 분석이어플리케이션으로부터알아내고자하는성질은어플리케이션이개인정보를누출시키는지의여부로, 개인정보의누출은정보의소스 ( 개인정보를운영체제로부터꺼내오는 API 함수호출위치 ) 로부터싱크 ( 임의의데이터를기기밖으로내보낼수있는 API 함수호출위치 ) 로데이터흐름의존재로정의하여요약해석기법을통해

구현된도구이다. 1.2.2 TaintDroid TaintDroid는 Android Open Source Project(AOSP) 를기반으로하여제작된시스템으로, 실행되는어플리케이션이어떤정보에접근하는지를실시간으로감시한다. 이를통해개인정보에접근하거나유출하는것이확인될경우에는사용자에게통지를하거나작동여부를물어보는역할을한다. 그러나동적분석의특성상실제로실행을해봐야하며작동속도도느려진다. 관련논문 [7] 에따르면 IPC 벤치마크를사용하여성능을평가했을때원래의 Android 시스템에비해 27% 더느리다. 1.3 이론적배경 1.3.1 정적분석 [6] 정적으로분석한다는것은프로그램을실행시켜보지않고원하는성질을얻어내는것이다. 이를자동으로, 즉일단분석기가완성되면사람의손을거치지않고분석기가스스로대상프로그램을분석한다. 요약해석에서제안하는조건들을만족하는분석기를디자인할경우, 그분석기는해당실행의미에대해모든실행과정을안전하게포섭하게된다. 이방법은임의의언어와임의의성질에대해활용할수있고, 디자인과구현에따라다양한정밀도를얻어낼수있다. 1.3.2 Android 어플리케이션파일의구조 Android 시스템에서어플리케이션은 APK 파일로지정되어있다. 이 APK 파일은일반적으로사용되는압축파일형식인 ZIP 파일과같은구조를가지고있다. 이파일의내부에는그림5에서나타난것과같이이미지, 음원과같은리소스파일들과, 컴파일된바이너리들로이루어진 classes.dex 파일, 어플리케이션의컴포넌트목록, 권한등과같은정보를포함하고있는 AndroidManifest.xml 등의파일로이루어져있다.

그림 5 Android 어플리케이션파일의구조 [8] Fig.5 Structure of Android application file[8] 1.3.3 Dalvik VM 및 smali 언어 Android 시스템은 Dalvik이라는가상머신위에서실행되는데, 이가상머신의명령코드를포함하는것이위에서설명한 classes.dex 파일이다. 여러개의 java 소스코드로부터컴파일된 class 파일들이합쳐져 Dalvik OpCode들로바뀌어바이너리생성되는것이다. 한편, 이렇게생성된바이너리파일은사람이읽을수없기에조금더사람이쉽게볼수있도록하는변환작업이필요하다. baksmali라는과정을통하면 classes.dex 파일은사람이읽기좋도록 const( 상수지정명령 ), move-result( 함수의실행결과를레지스터로복사 ), invoke-static( 정적멤버함수호출 ) 등으로쉽게풀어써져있는 smali 코드형태로바뀌게된다. 이를이용하면어플리케이션의특정부분을바꿀수있다. 다시 smali라는툴을이용하면이 smali 코드파일들을 classes.dex로바꿀수도있다.

II. 연구과정및방법 2.1 구현내용 2.1.1 개인정보흐름의차단본연구에서는개인정보를유출을 ScanDal에서분석한결과와같이프로그램상의두부분에서차단하고자한다. 첫번째는어플리케이션이개인정보를시스템에서얻어오는부분 ( 이하 source, 소스 ) 이고, 두번째는얻어온개인정보를인터넷, MMS, 파일등을통해서외부로유출하려하는것으로추정되는부분 ( 이하 sink, 싱크 ) 이다. 2.1.2 시스템의구조 본연구에서구현한시스템은크게 2 가지프로그램으로이루어져있다. 첫번째프로그램은주어진 APK 파일과이어플리케이션을 ScanDal로분석한결과를이용해서어플리케이션을압축해제한후, smali 코드를고쳐서 classes.dex 파일을바꾼뒤다시압축하여수정된 APK 파일을만들어주는프로그램인 PrivateRepacker이다. 두번째는 Android 시스템내에서어플리케이션이개인정보유출로추정되는부분을차단할지그대로실행할지를선택, 관리할수있게하는어플리케이션인 PrivateManager이다. PrivateManager는그림6과같이크게 2가지역할을하는데, 첫번째는어플리케이션이개인정보에접근하거나, 개인정보를유출하려는시도를할때, 다이얼로그를띄워서코드의해당부분의실행을승인할지거부할지선택하게하는역할이다. 두번째역할은이미사용자가선택한적이있는개인정보의흐름에대해서, 이전에입력한승인 / 거부여부를변경할수있게설정하는부분이다.

그림 6 PrivateManager 가하는일 Fig.6 What PrivateManager does 이 PrivateManager에서차단할필요가있는프로그램의실행부분각각의실행여부를관리할수있게하고, 사용자가설정한적이있는실행지점의경우다시묻지않고저장된기록을활용함으로써, 본연구에서는과다한다이얼로그의노출로사용자가어플리케이션사용중불편을겪는일이최소가되게할수있도록했다. 정적분석의특성상나타나는개인정보의유출지점이아님에도불구하고개인정보의유출로판단해차단하는부분이나, 어플리케이션이동작하는데필수적으로활용되는개인정보의활용의경우에차단해서어플리케이션이정상적으로동작하지않으면, 설정을변경하여어플리케이션이정상적으로동작할수있게하여정적분석의한계점을해결하였다. 2.2 구현방법

2.2.1 ScanDal과의상호작용 ScanDal에서정적분석을통해얻어낸소스와싱크정보를각각 json 파일형식으로전달한다. json 파일은프로그램의실행부분을나타내는 JsonObject의 Array로되어있으며, 각각의 Object에는어떤객체의어떤함수에서실행되는부분이고, 해당함수의몇번째명령어인지, 어떤함수를호출하는부분인지, 어떤종류의개인정보를받아오고, 어떤경로를통해서나가는지와같은정보가아래와같이주어진다. { type : src, // 소스면 src, 싱크면 sink category : geo, // 위치정보는 geo, 전화번호는 number, 기기번호는 imei, pos : { caller : ["Lcom/test/Test;, test:()v ], line : 1, // 호출위치. 리스너의인자일경우 arg : "1 callee : [, ] } } 2.2.2 inappclass 어플리케이션에코드를추가할때, 반복되는코드를줄이고작업의편의성을높이기위하여 inappclass라는클래스를자바코드로작성한뒤 smali 코드로변환하여원래어플리케이션의 smali 코드와함께컴파일하였다. inappclass가하는일은크게두가지인데, 첫번째는어플리케이션이실행중에현재소스나싱크가차단되는지승인되는지확인해야할때해당어플리케이션의고유식별자와소스 / 싱크의번호를인자로이함수를호출하면승인 / 차단여부를 boolean으로리턴해주는일이다. 이함수가호출이되면시스템은우선 PrivateManager가설치되어있는지확인한다. 설치되어있다면우선 PrivateManager와통신하기위한로컬소켓을하나생성한뒤, 로컬소켓에접근할수있는경로와소스 / 싱크의정보, 호출한시간등의정보를

Intent에담아서 PrivateManager를호출한다. 마지막으로, PrivateManager가결과를로컬소켓을통해전송할때까지최대 9초기다린다. 이는 Android 시스템의 ANR(Application Not Responding, 어플리케이션이 10초동안아무런동작도하지않을경우강제로어플리케이션을종료시키는과정 ) 을피하기위한수단이다. 두번째역할은, 프로그램의 Context를관리하는것이다. Android 시스템에서는시스템함수를호출할때, 어플리케이션을구분하기위해각각에고유한 Context라는클래스의인스턴스를부여한다. 이 Context는다른어플리케이션의컴포넌트를호출하거나사용자와상호작용하기위한다이얼로그등이포함되어있는 UI 작업을하는데에필수적으로필요하기때문에, inappclass에서 PrivateManager를호출하는시점에서어플리케이션의 Context의인스턴스가있어야한다. 그러나소스 / 싱크같은임의의프로그램실행지점에서콘텍스트를얻어오는방법은경우의수가많고구할수없을수도있다. 따라서어플리케이션의컴포넌트가시작되는지점에서, inappclass의 setcontext 함수를호출하여 inappclass에정적멤버변수로 Context 를저장해놓고, 필요할때불러서쓸수있게하였다. 2.2.3 PrivateRepacker PrivateRepacker는어플리케이션을본연구에서구현한기능이포함될수있도록수정하는프로그램이다. java 언어를기반으로작성되었고, 자체적으로수정한 smali/baksmali[9] 및 json-simple[10], signapk[11], AXMLPrinter2[12] 등의공개프로젝트들을사용하였다. PrivateRepacker는 APK 파일을읽어와서가장먼저해당어플리케이션의고유식별자로사용되는해시값을 MD5 알고리즘을이용하여생성한다. 악의적으로변경된어플리케이션의경우원래의정상적인어플리케이션과버전코드, 버전이름까지동일하게따라할수있으므로최종적으로생성된 APK 파일자체의해시값만고유식별자로사용한다. 그후내장된압축해제라이브러리를통해파일의압축을해제한

다. 그리고자체적으로수정한 baksmali 프로그램을이용하여 classes.dex 파일을 smali 파일들로변환한다. 그이후, 어플리케이션에 smali 코드를추가한다. 우선 inappclass 관련파일들을추가한뒤, ScanDal이분석한 json 파일을 json-simple 라이브러리를활용해읽어서소스 / 싱크목록을얻어온다. 각각의소스 / 싱크에대해서함수호출및결과를받아오는부분을실행할지뛰어넘을지선택하게해야한다. 따라서그림7과같이해당부분을실행하기전에 2.2.2에서기술한 PrivateRequest 함수를호출하여결과값을받아온뒤, 분기문을통해서원래의코드를실행하거나그렇지않게하였다. 그림 7 변경된 smali 코드의모습 Fig.7 Figure of changed smali code 이과정에서, 수정되는함수마다추가적인레지스터 ( 지역변수 ) 가필요하게되었는데, 원래에있던레지스터는임의로사용할경우어플리케이션에심각한오류를발생시킬수있으므로레지스터를별도로추가하여사용하였다. 한편, 어떤함수를호출할때에그인자는무조건가장뒤에있는레지스터부터들어가므로함수가시작될때에인자들을원래있던자리로옮겨주는작업을추가해주었다. 이과정에서원래의 baksmali/smali는전체레지스터의개수만볼수있거나인자의개수만볼수있기에이를둘다볼수있도록 baksmali/smali를수정하였다. 또한, Dalvik VM 특성상

레지스터가 16 개를넘어가는경우다른형태의명령어 (wide/range 계열 ) 를사용해야 하기에이를구현해주었다. smali 코드를수정한이후에는, 이를이용하여새로운 classes.dex 파일을생성한뒤, 나머지파일들과함께압축하였다. 리소스들은 STORED 메서드를사용하여압축함으로써오동작을방지하였다. 최종적으로는압축된파일에서명을해서기기에설치할수있게한다. 이후사용자의요구에따라생성된 APK 파일을바로기기에설치하도록할수도있다. 2.2.4 PrivateManager PrivateManager 는 2.1.1 에서설명한두가지기능을구현하기위해서두가지의 Activity 를구현한다. 첫번째는 PrivateRequestActivity로, inappclass의 PrivateRequest에서호출하는컴포넌트이다. 이 Activity가호출이되면, 우선 Intent를통해전달된정보와일치하는실행지점에대한정보가 SharedPreference에저장되어있다면이정보를그대로전달된로컬소켓을통해서 boolean 값을넘겨준다. 저장되어있지않다면, AlertDialog를띄워서사용자에게 inappsmali에서 Intent를생성한시간이후로최대 9초까지사용자에게해당실행지점을실행할지말지에대한입력을받은후사용자의선택을로컬소켓을통해서보내주고, SharedPreference에저장한다. 두번째로구현한 Activity는 PrivateSettingActivity로, 이 Activity에서는사용자가선택한기록이있는어플리케이션의목록을 SharedPreference로부터읽어와서 ListView를통해보여준다. 사용자가특정어플리케이션을선택하면, 새로운 ListView에사용자가선택한기록이있는프로그램의실행지점을보여주고, 그부분의실행여부에대한선택을사용자가변경하면, SharedPreference에저장된기록을변경하도록하였다.

III. 결과및토의 3.1 연구결과구현된 PrivateRepacker를사용하여생성된 APK 파일을 Android 기기에설치해본결과, 아래의그림8, 그림9와같이의도한대로사용자의개인정보에접근할때및유출이가능할때사용자의동의여부를물어보는창이나타났고, PrivateManager에서다시그권한을수정할수있는것을확인할수있었다. 그림 8 개인정보가획득 / 유출되려는부분에서사용자의의사를묻는창이나타남 Fig.8 Asking dialog is appeared when personal information is going to be acquired/spilled

그림9 최초 1회의다이얼로그이후에도사용자가개인정보접근 / 유출에관한허가여부를변경할수있다 Fig.9 User can change whether access/spill is permitted or declined after the first dialog 3.2 연구의한계점및발전가능성본연구의한계점으로는정적분석결과개인정보가유출되는것으로추정되는싱크부분에서사용자가프로그램실행지점의실행여부를선택할때참고할수있는자료가거의없다는점이있다. 이러한한계점을해결하기위해서고안한개선방법으로는, 우선소스-싱크매칭이있다. 지금은독립적으로존재하는싱크의목록을, ScanDal에서어떤소스에서나온개인정보가어떤싱크로유출되는지에대한정보를이용해서, 현재선택해야하는싱크가어떤종류의개인정보를유출할가능성이있는지에대해서보여준다면, 지도

어플리케이션이현재검색장소를찾기위해위치정보를전송하는것과같이어플리 케이션이정상적으로동작하는데필수적으로요구되는개인정보의전송을제어하는 데에도움이될수있을것이다. 두번째로고안한개선방법으로는, 여러사용자가이시스템을사용하면서얻어진개인정보접근또는유출에대한동의 / 거부여부를서버를이용해수집하여통계자료를제공하는것이다. 많은사용자가이시스템을이용하게된다면, 어떤어플리케이션의특정실행지점에서여러사람들이선택한통계자료가존재할것이다. 많은사람들이거부한곳에대해서는자동적으로거부하도록할수도있고, 다이얼로그를띄울때통계자료를함께제공하여이를참고하여선택할수있게하면, 더욱정확한판단을하게할수있을것이다. IV. 결론스마트폰은편리함을무기로하여수많은개인정보유출위험을지니고있는도구이다 따라서편리하면서도개인정보유출위험을최소화하기위해사용자의의도를파악하고이에따라어플리케이션이개인정보에선택적으로접근할수있도록하는시스템에대한연구를진행하였다 이시스템은정적분석을통해나온결과를이용함으로써직접실행시켜보지않아도적용할수있으므로시간적으로이득이상당하며 어플리케이션실행시모든동작을계속추적함으로써성능이하락되는 와다르게성능하락도전혀없다 정적분석이유출가능성이있는부분 을모두출력함으로써과도하게접근이제한되는부분과어플리케이션의정상적인작동을위해필수적으로요구되어지는부분도사용자가직접설정할수있도록하여오작동을최대한방지할수있도록했다 이연구에서나온결과물이잘사용된다면사용자가편리하면서도체계적으로자신의개인정보를지킬수있게되어보 안수준을한단계더높일수있을것이다 이후에도 소스 싱크매칭및통계자료 활용을적용한다면더스마트하게자신의개인정보를관리할수있게될것이다

참고문헌 한국인터넷진흥원 년인터넷이용실태조사결과발표 한국인터넷진흥원 년하반기스마트폰이용실태조사결과발표 동아일보 삼성갤럭시 거울 앱속에당신의정보몰래보는 눈 이있다 단독 손전등앱 개인정보훔쳐가 유심칩번호까지유출 연합뉴스 한국은세계 위안드로이드공화국 가사용 윤용호 안드로이드앱에서개인정보누출을검출하는정적분석기설계 공학석사학위논문 서울대학교 외 인

외 인