운영체제보안 3번 과제 설명 팀 기반의 설계 프로젝트 2018.11.13 박민재 souling4you@gmail.com.

Slides:



Advertisements
Similar presentations
Android Application. 최신버전 안드로이드 SDK 설치 1. SDK 설치 접속.
Advertisements

- 1 - IT COOKBOOK 전산정보처리학과 프로그래밍 언어 전산정보처리학과 중위 ( 진 ) 정세화.
모바일 프로그래밍 개론 UNIT 01 로봇 SW 컨텐츠 교육원 조용수. 학습 목표 모바일 프로그래밍이란 ? Embedded System 특성 Mobile OS Hybrid and Native SDK and NDK 2.
Android 소개.  스마트폰의 의미  손 안의 PC 혹은 스마트폰은 모바일 인터넷 단말기이다.  과거 일부 비즈니스 계층과 얼리 어댑터의 전유물에서 최근 일반 대중의 생활로 빠르게 확산 됨.  세계 최초의 스마트폰은 1992 년 COMDEX 에서 IBM 이.
컴퓨터 프로그래머 Confidential 1 넥스트리밍㈜ 책임연구원 10 기 이준용,
H. I. T.. Smart-Phone?! Smart-Phone  애플리케이션의 추가 / 삭제가 용이한 범용 OS 를 탑재한 단말  변화되는 시장요구에 대응하여 PC 환경과 동일한 서비스 활용 가능.
한국의 전통 문화 2 조 국제 수행 보고서 조장 : 신양우 조원 : 김 솔, 류원빈, 송선우, 임준희 2 조 국제 수행 보고서 조장 : 신양우 조원 : 김 솔, 류원빈, 송선우, 임준희.
For Android 이재원.  페이스북 SDK 설치  2 가지 예제 & 소스  API 사용 예제 프로젝트 만들기  Graph API  참고사항 & 사이트.
Page  1 Copyright© 2015 Hanbit Academy, Inc. All rights reserved. [ 강의교안 이용 안내 ] 본 강의교안의 저작권은 한빛아카데미㈜에 있습니다. 이 자료를 무단으로 전제하거나 배포할 경우 저작권법 136 조에 의거하여.
삼성소프트웨어멤버십 20 th 박희근 ( A n d r o i d.
안드로이드 (Android) 발표자 : 이강민. 1. 안드로이드란 ? 구글에서 제작한 모바일 디바이스를 위한 플랫폼 ▫ 모바일 디바이스 플랫폼이란 ?  모바일 디바이스를 위한 소프트웨어 집합 ( 미들웨어, 키 어플리케이션, 운영체제 등 ) 2. 모바일 플랫폼 시장 점유율.
컴퓨터공학과 CHAP.1 기초 사항. 컴퓨터공학과 1스마트폰 스마트폰 = 컴퓨터 + mp3 플레이어 + 휴 대용 게임기 다양한 앱 설치 가능.
Page 1 Android Programming November 04 / 2009 S/W Junhyuk Jang.
Embedded S/W 기초이론 및 실습.
미국의 미디어교육 신문방송학과 강진구 한인수 곽모란 이명현.
루틴스(EVA-EDMS)제품소개서 EVA(Enterprise Value Approach_기업자산 가치로서의 접근)
디지털 음원 인터넷 판매(다운로드,스트리밍) 분배 구조
안드로이드 악성코드 분석론 및 리버싱 27th OCTOBER 2013.
Android 개발환경 설정 및 Android View 소개
01. 안드로이드 개요와 개발환경 구축 제목.
이규헌 강병현 송영철.
Puzzle 1 To 50 관심분야연구회 박찬수 장진호 최효진.
A n d r o i d Android 2010 년 5월 19일 작성자 : 백 선 재.
Java Seminar 6.
Web Programming 강의 소개
[INA470] Java Programming Youn-Hee Han
Google Analytics Seminar
System Call Linux Kernel 수업 3번째.
PDA & PC Webhard Network Project 오민식, 김상용, 배은희.
Linux/UNIX Programming
제1강 안드로이드 특징과 개발환경 구축 안드로이드 앱 개발 강좌.
Sookmyung Women’s Univ. PSLAB Moon, Se won
안드로이드 개요 2005년 휴대폰 소프트웨어 개발사인 Android를 구글이 인수 2007년 11월 오픈소스로 공개
Hello World Bot Framework
13. 멀티미디어와 Google 지도 제목. 13. 멀티미디어와 Google 지도 제목.
Computer Science & Engineering
3주차 Android Application ANDROID App..
가속도 감지센서를 이용한 안드로이드 게임 지도교수님 : 전진우 이동훈.
제3장 이클립스 사용하기.
07. 메뉴와 대화상자 제목. 07. 메뉴와 대화상자 제목 메뉴를 작성하고 사용하는 방법을 배운다. 토스트의 다양한 출력 방법을 알아본다. 대화상자의 사용법을 익힌다.
PHP + Eclipse + Google Code를 이용한 개발환경
08. 파일 처리 제목. 08. 파일 처리 제목 파일을 처리하는 방식을 익힌다. SD카드의 파일을 처리하는 방식을 배운다. 커스텀뷰의 작성법을 알아본다.
Android 개발환경 설치 및 Hello World
한국교원대학교 스마트캠퍼스 교육정보원.
운영체제 (Operating Systems) (Multi-Thread Programming)
02. 처음으로 만드는 안드로이드 애플리케이션 제목.
Android Studio 설치하기 PPD JSY.
컴퓨터 소프트웨어 설계 및 실험 년 1학기 실험계획 -.
CHAP. 2 안드로이드 개발 도구 설치.
객체 지향 프로그래밍.
Project apk 디컴파일과 난독화(with Proguard)
TinyOS Tutorial Network lab. 김인태
모바일 운영 체제 구글의 안드로이드 애플의 iOS 마이크로소프트의 윈도폰 8 RIM의 블랙베리 OS
1조 김성수 백현기 석광우 김지원 박광연.
CHAP 3. 첫번째 애플리케이션.
Android 한글 키보드 설치하기.
김 정 석 Web Programming 김 정 석
컴퓨터 소프트웨어 설계 및 실험 년 1학기 실험계획 -.
개인정보처리와 개인정보보호 2017년 2월.
좋은징조 담당교수 : 조성제 김도엽 김현일 이상훈.
MIDP-MOBILE INFORMANTION DEVICE PROFILE
Bingo 빙고 따라가기.
운영체제의 종류 장승빈.
JSP와의 첫 만남 간간한 JSP 프로그램을 작성하면서 앞으로 학습에 필요한 과정을 익힌다.
의사결정과 의사소통 발표 철학과 나지훈 요약 정치외교학과 양승명 PPT 일본어학과 왕동현 사례 패션학과 강민경
(1) 자아의 발견과 실현 도 덕 1학년 1학기삶과 도덕 Ⅰ. 삶과 도덕 2. 개성신장과 인격도야 [제작의도] [활용방법]
CHAP. 2 안드로이드 개발 도구 설치.
안드로이드 앱 분석 팀 기반의 설계 프로젝트 박민재
Java Programming for Beginners
Eclipse를 이용한 Embedded Linux 응용 프로그램 개발
Presentation transcript:

운영체제보안 3번 과제 설명 팀 기반의 설계 프로젝트 2018.11.13 박민재 souling4you@gmail.com

운영체제 보안 3번 과제 안드로이드 에뮬레이터를 탐지하는 앱을 구현하여 제출 자유롭게 2~4명씩 팀을 구성 평가 기준 팀원과 상의를 통해 가장 효율적으로 과제를 수행할 수 있는 역할을 배분 평가 기준 구현 : 안드로이드 에뮬레이터 탐지 기능 1개에 4점씩 총 5개의 기능을 가진 앱을 구현 권장사항: 안드로이드 버전 6.0 미만에서 구현할 것 ! 보고서 : 구현한 기능이 왜 에뮬레이터 탐지에 적합한 기능이라고 생각하는지에 대하여 구현한 기능별로 서술. 다음 내용을 포함해야 함. 에뮬레이터 탐지하는 알고리즘 개요 및 설명 실험 환경 및 실험 결과. 실험 결과에 대한 분석 구현한 소스코드 및 실행코드 제출. 실행코드 수행 방법 설명. 과제를 수행함에 있어서 어려운 점 또는 건의사항 기재 제출 기한 12월 4일 배점 ( 총 40점 ) 설계 및 구현 20점 보고서 20점

운영체제 보안 3번 과제 컴퓨터공학도 안드로이드 에뮬레이터를 탐지하는 앱을 구현하여 제출 C++ 자료구조 인공지능 파이썬 시스템프로그래밍 안드로이드 운영체제 보안 C언어 Java 알고리즘 객체지향 프로그래밍 어떤 과목을 B+ 맞아야 되나 ? 웹 어플리케이션 HTML 출처: 조선일보 DB

A A+ 운영체제 보안 3번 과제 안드로이드 에뮬레이터를 탐지하는 앱을 구현하여 제출 운영체제 보안인데 왜... ? 운영체제 보안인데 왜 ... ? 출처: 조선일보 DB

운영체제 보안 3번 과제 안드로이드 OS app process service process Binder driver 출처(강의): 아임구루 김정인대표님 기기의 led를 on시키는 device driver

운영체제 보안 3번 과제 안드로이드 4대 컴포넌트 1. 액티비티 (Activity) 2. 서비스 (Service) 하나의 화면을 하나의 액티비티로 생각 앱을 구성하는 화면을 액티비티로 구현하고 각각의 화면간에 이동하는 과정은 각각의 액티비티를 필요에 따라 열거나 닫거나 하는 과정 2. 서비스 (Service) 백그라운드에서 실행되는 프로세스 3. 브로드캐스트 수신자(Broadcast Receiver) 브로드캐스팅은 메시지를 여러 객체에서 전달하는 방법을 의미 전달된 브로드캐스팅 메시지는 브로드캐스트 수신자라는 앱 구성 요소를 이용해서 받을 수 있음 4. 콘텐츠 제공자 (Content Provider) 콘텐츠 제공자는 한 프로세스의 데이터에 다른 프로세스에서 실행 중인 코드를 연결하는 표준 인터페이스 안드로이드 시스템에서 앱은 콘텐츠 제공자를 통해 제공하고자 설정한 공유 범위 내에서 네트워크, 데이터베이스, 파일시스템을 제공할 수 있고, 다른 앱은 콘텐츠 해결자(Content Resolver)를 통해서 관련 정보를 얻을 수 있음 출처(책): 안드로이드 애플리케이션 리버스 엔지니어링

운영체제 보안 3번 과제 안드로이드 퍼미션(Permission) permissions check UID check package name check thread status check permissions check는 기본적인 보안 정책 집행 출처(논문): Kratos Discovering Inconsistent Security Policy Enforcement in the Android Framework

운영체제 보안 3번 과제 안드로이드 앱 설정 파일 AndroidManifest.xml package : 앱을 구분하기 위한 이름 동일한 디바이스에 동일한 패키지 이름을 갖는 앱은 설치될 수 없음

운영체제 보안 3번 과제 안드로이드 앱 설정 파일 AndroidManifest.xml permission : 앱의 기능 상 필요한 권한을 명시 Android 6.0 이상에서 dangerous permission은 실행 중에 user에게 요청하도록 프로그래밍 해야함

운영체제 보안 3번 과제 안드로이드 앱 설정 파일 AndroidManifest.xml application 속성 : 앱에 필요한 컴포넌트 등을 명시 application 속성 안에 있는 android:name은 처음 시작하는 클래스명을 의미

운영체제 보안 3번 과제 안드로이드 데몬 or 프로세스 init process property ueventd 최초 부팅시 load되는 데몬으로써 pid 1 을 갖는다. init.rc 를 parsing하여 action/command를 수행하고 service를 기동시킨다. am.ExecuteOneCommand()로 command를 수행 class_start로 service를 실행 자식 프로세스가 죽었을 경우 init 프로세스로 signal이 전달되고, init은 handle_signal을 호출하여 자식 프로세스를 처리한다. property property란 전체 프로세스가 볼 수 있는 시스템 전역 변수이다. 보는 기능 : 모든 프로세스가 가능, 세팅 기능 : init만 가능 property에는 ctl 과 trigger가 있다. ctl은 stop, start, restart로 서비스를 제어 가능하고, trigger는 변경했을 시 자동으로 코드를 실행시킨다. ueventd 하드웨어가 추가되었을 때, 디바이스 특수 파일을 생성하거나 제거하는 데몬 ueventd.rc를 parsing하여 /dev 디렉토리 밑에 존재하는 ueventd 파일에 add라고 써서, 커널 레벨에 존재하는 디바이스들을 유저 레벨에 파일로 생성한다. /dev는 메모리에 존재하기 때문에 하위 파일들은 시스템이 종료되면 삭제된다.

운영체제 보안 3번 과제 안드로이드 데몬 or 프로세스 servicemanager zygote 모든 service들은 servicemanager에 등록해야만 유저 앱에서 사용할 수 있다. servicemanager는 service 리스트를 제공하고 안드로이드 기기에서 service list 명령어로 확인할 수 있다. service check <서비스명>을 이용해서 service가 존재하는지 확인할 수 있다. servicemanager는 context manager에 등록된다. zygote pid 2 Java에서 사용하는 class와 resource를 VM상에 미리 load 시켜놓는다. init.zygote32.rc 에서 service로 zygote를 띄워준다. 프로세스를 fork하고 자신의 memory layout을 복사하여 만든 memory에 SystemServer(java service를 한 번에 동작시키는 서버)를 올려서 동작시킨다. 그 이후에 zygote는 polling 상태로 기다리고 있다가 요청이 오면 사용자 앱의 main을 찾아서 invoke_main을 호출하여 새로 생성된 프로세스(app.apk)를 실행시킨다.

운영체제 보안 3번 과제 안드로이드 앱 빌드 과정 개발자는 Java를 이용하여 앱을 빌드 Java source code는 Java compiler에 의해 .class 파일로 컴파일됨 .class 파일은 표준 Java bytecode를 포함 Java bytecode는 classes.dex로 컴파일됨 classes.dex는 모든 Dalvik bytecode와 .jar file을 포함 일반적인 경우 classes.dex 파일은 하나이지만 앱의 크기가 클 경우 여러 개의 dex 파일로 분리됨 설치 시점에, Android runtime은 dex2oat 도구를 이용하여 classes.dex 파일을 컴파일 출력 결과는 실행 가능한 코드이며, Dalvik bytecode보다 성능이 뛰어남 .apk 파일은 dex 파일과 resource 파일을 포함 출처(논문): Who Changed You Obfuscator Identificaton for Android

운영체제 보안 3번 과제 안드로이드 에뮬레이터 Android Emulator는 기기를 시뮬레이션하여 이를 개발용 컴퓨터에 표시 에뮬레이터를 사용하면 하드웨어 기기를 사용하지 않고서도 Android 앱의 프로토타입을 만들고 개발, 테스트 에뮬레이터는 Android 전화기, 태블릿, Android Wear 및 Android TV 기기 등을 지원 연결된 하드웨어 기기를 사용할 때보다 빠르게 정보를 전송할 수 있어 개발 절차를 한층 빠르게 함 출처(사이트): https://developer.android.com/studio/run/emulator?hl=ko

운영체제 보안 3번 과제 안드로이드 에뮬레이터 탐지 목적 악성 앱 개발자 관점 이해 앱의 지적재산권 보호 차원 악성 앱 분석 시에 에뮬레이터에 앱을 설치하여 분석함 실제 디바이스에 설치하여 분석한다면 악성 앱에 감염되었을 때, 디바이스를 포맷하고 새로 설치해야 함 악성 앱 개발자는 이러한 환경을 파악하고 악성 기능을 동작시키지 않는 방식으로 분석 환경을 우회하고자 함 안드로이드 에뮬레이터 환경을 탐지 방법을 배움으로써, 악성 앱 개발자가 어떻게 분석 환경을 우회하고자 하는지 학습 앱의 지적재산권 보호 차원 금융 앱이나 게임 앱은 주요한 business logic(영업 비밀)을 포함하여 민감한 정보(credentials, 개인정보 등)를 처리하고 저장함  대부분의 금융 앱이나 게임 앱은 난독화 또는 패킹 기법 등의 보호 기법을 적용하고 있음. 공격자는 주요 앱들을 동적으로 역공학하여 business logic을 크랙하거나 민감한 정보를 빼내려고 함 패킹된 앱의 경우 에뮬레이터에서 동적으로 분석하는 것이 가능 이에, 금융 앱이나 게임 앱은 자신이 에뮬레이터에서 수행되는 것을 공격 받는 것이라고 판단  에뮬레이터 상에서 분석 당하는 것을 판단하면 스스로 종료되게 함

운영체제 보안 3번 과제 안드로이드 에뮬레이터 탐지 기법 출처(논문): 안드로이드 모바일 악성앱 동적분석 회피기술 동향 출처(논문): 동적 분석 회피를 위한 안드로이드 에뮬레이터 탐지 기법

운영체제 보안 3번 과제 제공된 안드로이드 프로젝트의 소스코드를 이용하여 앱 구현 MainActivity.java s1Check() - 첫번째 에뮬레이터 관련 시그니처를 탐지하면 경고 메시지 출력 s2Check() - 두번째 에뮬레이터 관련 시그니처를 탐지하면 경고 메시지 출력 s3Check() - 세번째 에뮬레이터 관련 시그니처를 탐지하면 경고 메시지 출력 s4Check() - 네번째 에뮬레이터 관련 시그니처를 탐지하면 경고 메시지 출력 s5Check() - 다섯번째 에뮬레이터 관련 시그니처를 탐지하면 경고 메시지 출력 MainActivity.java 메소드 onCreate() { TextView tv1 = (TextView) findViewBy(R.id.sample_text1); tv1.setText(s1.s1Check()); TextView tv1 = (TextView) findViewBy(R.id.sample_text2); tv1.setText(s2.s2Check()); TextView tv1 = (TextView) findViewBy(R.id.sample_text3); tv1.setText(s3.s3Check()); TextView tv1 = (TextView) findViewBy(R.id.sample_text4); tv1.setText(s4.s4Check()); TextView tv1 = (TextView) findViewBy(R.id.sample_text5); tv1.setText(s5.s5Check()); } 클래스 인스턴스 Java { s1Check(){} s2Check(){} s3Check(){} s4Check(){} s5Check(){} } Java s1 new Java(); Java s2 Java s3 Java s4 Java s5

운영체제 보안 3번 과제 제공된 안드로이드 프로젝트의 소스코드를 이용하여 앱 구현 activity_main.xml sample_text1 sample_text2 sample_text3 sample_text4 sample_text5

부록 안드로이드 에뮬레이터 생성 안드로이드 스튜디오 > Tools > AVD Manager ① ②

부록 안드로이드 에뮬레이터 생성 Android Virtual Device Manager > Create Virtual Device... ③

부록 안드로이드 에뮬레이터 생성 Virtual Device Configuration > Next ④

부록 안드로이드 에뮬레이터 생성 Virtual Device Configuration > Other Images > Next Target에서 Android 6.0 미만의 버전을 사용할 것 ⑤

부록 안드로이드 에뮬레이터 생성 최신 안드로이드 스튜디오 버전(3.2)에서 armeabi 계열 에뮬레이터가 제대로 작동하지 않는 issue가 있으므로 x86 Images를 사용할 것을 권장 ! ⑤

부록 안드로이드 에뮬레이터 생성 Virtual Device Configuration > Other Images > Next Target에서 Android 6.0 미만의 버전을 사용할 것 ⑥

부록 ADB (Android Debug Bridge) 안드로이드 스튜디오 설치 시에 SDK Manager에 내장되어 배포됨 adb devices : 현재 데스크탑(PC)에 연결된 디바이스를 조회 adb shell : 연결된 디바이스의 shell로 접속

부록 ADB (Android Debug Bridge) adb shell 명령어 id : 사용자 id와 그룹 id를 조회 에뮬레이터는 기본적으로 루팅된 상태이기 때문에 uid와 gid가 0으로 나옴 cat /proc/meminfo : 메모리 정보를 조회

부록 ADB (Android Debug Bridge) adb shell 명령어 getprop : property를 조회 ps : 데몬 or 프로세스를 조회

부록 JDK (Java Devlopment Kit) https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 개발 환경에 맞는 버전을 설치

부록 안드로이드 스튜디오(Android Studio) https://developer.android.com/studio/?hl=ko#downloads 개발 환경에 맞는 버전을 설치

부록 참고 사이트 https://scholar.google.co.kr PPT에 적혀있는 논문 이름을 검색하면 해당 논문을 찾을 수 있음 https://developer.android.com/reference/packages API level 19~26까지 사용 가능 https://developer.android.com/studio/command-line/adb ADB (Android Debug Bridge) 명령어 https://docs.oracle.com/javase/8/docs/api/overview-summary.html java 버전 8을 기준으로 참고 https://stackoverflow.com/ 개발 시에 참고

Thank You !