Android Master Key Vulnerability

Similar documents
Secure Programming Lecture1 : Introduction

어댑터뷰

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

( )부록

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

안드로이드기본 11 차시어댑터뷰 1 학습목표 어댑터뷰가무엇인지알수있다. 리스트뷰와스피너를사용하여데이터를출력할수있다. 2 확인해볼까? 3 어댑터뷰 1) 학습하기 어댑터뷰 - 1 -

2 Application Name: Day10_yhg <LinearLayout android:layout_weight="3" > /> an

13ÀåÃß°¡ºÐ

[ 그림 8-1] XML 을이용한옵션메뉴설정방법 <menu> <item 항목ID" android:title=" 항목제목 "/> </menu> public boolean oncreateoptionsmenu(menu menu) { getme

슬라이드 1

슬라이드 1

1부

q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2

유니티 변수-함수.key

03장

50_1953.pdf

TipssoftAppActivity.java // 기본소스파일 main.xml // 배치와구성에관련된리소스파일 string.xml // 프로그램에서사용할문자열에관련된리소스파일 컴파일을하고나면 r.java 라는소스파일이하나추가되는데이파일은리소스파일을소스파일에서이용할수있도

9 차시고급위젯다루기 1 학습목표 날짜 / 시간과관련된위젯을배운다. 웹뷰를사용하여간단한웹브라우저기능을구현한다. 매니패스트파일의설정법을배운다. 2 확인해볼까? 3 날짜 / 시간위젯 1) 활동하기 활동개요

Poison null byte Excuse the ads! We need some help to keep our site up. List 1 Conditions 2 Exploit plan 2.1 chunksize(p)!= prev_size (next_chunk(p) 3

ThisJava ..

[ 그림 7-1] 프로젝트 res 폴더 이미지뷰 [ 예제 7-1] 이미지뷰 1 <LinearLayout 2 ~~~~ 중간생략 ~~~~ 3 android:orientation="vertical" > 4 <ImageView

Research & Technique Apache Tomcat RCE 취약점 (CVE ) 취약점개요 지난 4월 15일전세계적으로가장많이사용되는웹애플리케이션서버인 Apache Tomcat에서 RCE 취약점이공개되었다. CVE 취약점은 W

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

OpenCV와 함께하는 컴퓨터 비전 프로그래밍 캠프

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

PowerPoint Template

Dropbox Forensics

INAPP결제 API 가이드

Spring Boot/JDBC JdbcTemplate/CRUD 예제

01장

서현수

취약점분석보고서 [Photodex ProShow Producer v ] RedAlert Team 안상환

학습목표 메뉴를추가하는방법을이해하고실습할수있다. 프로그램의기본설정 (settings) 을정의하는방법을알고실습할수있다. 대화상자를여는방법을알고실습할수있다. 로그메시지로디버깅하는방법을이해한다. 디버거로디버깅하는방법을이해한다.

PowerPoint Presentation

Facebook API

Microsoft PowerPoint - 04-UDP Programming.ppt

학습목표 선언하여디자인을하는방법을이해하고, 실행할수있다. 시작화면을만드는방법과대체리소스를사용하는방법을이해하고실행할수있다. About 과같은상자를구현하고, 테마를적용하는법을이해하고실행할수있다.

슬라이드 1

REMON Android SDK GUIDE (SDK Version 1.4.1) 1 / 25

오핀 (OFIN) SDK Guide Fintech Mobile SDK Guide - Android V 1.0 OPPFLIB 1

PowerPoint Presentation

PowerPoint Presentation

Microsoft Word - Crackme 15 from Simples 문제 풀이_by JohnGang.docx

Spring Boot

PowerPoint 프레젠테이션

Microsoft PowerPoint - java1-lab5-ImageProcessorTestOOP.pptx

안드로이드2_14

리니어레이아웃 - 2 -

혼자서일을다하는 JSP. 이젠일을 Servlet 과나눠서한다. JSP와서블릿의표현적인차이 - JSP는 <html> 내에서자바를사용할수있는수단을제공한다. - 서블릿은자바내에서 <html> 을작성할수있는수단을제공한다. - JSP나서블릿으로만웹페이지를작성하면자바와다양한코드가

슬라이드 1

Microsoft PowerPoint - CSharp-10-예외처리

PowerPoint Presentation

Speaker MVP (Visual C++) 팁스웨어대표 tipssoft.com 개발커뮤니티운영자 한이음 IT 멘토 tipsware blog.naver.com/tipsware

gnu-lee-oop-kor-lec11-1-chap15

Design Issues

Chapter #01 Subject

Daum 카페

취약점분석보고서 [Elecard AVC_HD/MPEG Player 5.7 Buffer Overflow] RedAlert Team 봉용균

PowerPoint Presentation

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

PowerPoint Presentation

C++ Programming

PowerPoint Presentation

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

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

07 자바의 다양한 클래스.key

THE TITLE

리눅스 취약점대응방안권고 / KISA 취약점점검팀 영향받는플랫폼 OS, FAQ 추가 개요 미국보안회사 에의해 시스템의 라이브러리 의특정함수에서임의코드를실행할수있는취약점이공개 해당취약점은 CVE 지정, 도메인네임을

C++ Programming

Microsoft Word - java19-1-midterm-answer.doc

PowerPoint Presentation

예제 2) Test.java class A intvar= 10; void method() class B extends A intvar= 20; 1"); void method() 2"); void method1() public class Test 3"); args) A

chap 5: Trees

ESET Mobile Security for Android

Chap 6: Graphs

adfasdfasfdasfasfadf

목 차 1. 개 요 배경 요약 정보 대상시스템 원리 공격 기법 및 기본 개념 Heap Spray Font 공 격..

- JPA를사용하는경우의스프링설정파일에다음을기술한다. <bean id="entitymanagerfactory" class="org.springframework.orm.jpa.localentitymanagerfactorybean" p:persistenceunitname=

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

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

JAVA PROGRAMMING 실습 09. 예외처리

기술문서 작성 XXE Attacks 작성자 : 인천대학교 OneScore 김영성 I. 소개 2 II. 본문 2 가. XML external entities 2 나. XXE Attack 3 다. 점검방법 3 라.

헬로, 안드로이드 13 주차 SQL 활용하기 (2) 강대기동서대학교컴퓨터정보공학부

SKT UCC DRM

JAVA PROGRAMMING 실습 08.다형성

01 EDITOR S PICK: 068_ _069

표준프레임워크로 구성된 컨텐츠를 솔루션에 적용하는 것에 문제가 없는지 확인

class Sale void makelineitem(productspecification* spec, int qty) SalesLineItem* sl = new SalesLineItem(spec, qty); ; 2. 아래의액티비티다이어그램을보고 Java 또는 C ++,

5장.key

목차 INDEX JSON? - JSON 개요 - JSONObject - JSONArray 서울시공공데이터 API 살펴보기 - 요청인자살펴보기 - Result Code - 출력값 HttpClient - HttpHelper 클래스작성 - JSONParser 클래스작성 공공

A Hierarchical Approach to Interactive Motion Editing for Human-like Figures

PowerPoint 프레젠테이션

Ⅰ. 스마트폰에대한보안위협현황 1. 국내스마트폰이용현황 2009 년 11월 28일아이폰의국내정식출시를시작으로스마트폰의보급과그이용이빠르게늘어나기시작하여 2012 년 8월에이르러서는국내스마트폰이용자가 3,000 만명을넘어서게되었다. 방송통신위원회의무선통신서비스현황자료 (

Google Maps Android API v2

rmi_박준용_final.PDF

PowerPoint Template

Microsoft PowerPoint - Chapter 6.ppt

Spring Data JPA Many To Many 양방향 관계 예제

항상쌍 ( 키, 값 ) 으로만데이터를저장하는클래스 의최고조상 : Map - Map을조상으로하는클래스, HashTable, HashMap, LinkedHashMap, TreeMap 등은데이터를저장할때반드시 키 와 값 의쌍으로저장한다. - Map에저장되는 키 는중복되면안되

이것은리스트뷰의 setadapter 메소드에잘표현되어있습니다. setadapter 는리스트뷰에사용할데이터객체를넘겨주는메소드입니다. 일반적으로생각한다면 ArrayAdapter 객체를생성하여사용할데이터를저장할것이고데이터가저장된 ArrayAdapter 객체를 setadapt

Transcription:

Android Master Key Vulnerability Android Bug 8219321 2013/08/06 http://johnzon3.tistory.com Johnzone

内容 1. 개요... 2 1.1. 취약점요약... 2 1.2. 취약점정보... 2 2. 분석... 2 2.1. 기본개념... 2 2.2. 공격방법... 4 3. 방어대책... 7 4. References... 8

1. 개요 1.1. 취약점요약 이것은 Android security Bug 8219321 와 Master Key Vulnerability 로알려진취약점입니다. Android 1.6 부터 4.2 까지어플리케이션의암호화서명을정확하게체크하지않습니다. 이때 APK 파일은 ZIP 파일형식을가지고있는데만약같은이름의서로다른두개의 Entry 가존재할경우공격자는 APK 파일에암호화서명에위반되지않는임의의파일을생성할수있습니다. 1.2. 취약점정보 취약점이름 Android Master Key Vulnerability (Android Bug 8219321) 최초발견일자 2013/02 월 (Android Bug 8219321) CVE 명 CVE-2013-4787 CVE 등록일자 2013/07/09 위험등급 높음 (9.3) 2. 분석 2.1. 기본개념 APK 파일은 ZIP 파일형태로이루어져있습니다. 이때 APK 파일은 META-INF 폴더에서 MANIFEST.MF 파일을참조하여해당파일의위변조상황을 ZipFile 라는클래스에서 HashMap 형태로저장하게되는데 classes.dex 라는같은이름의파일이존재하게될경우 HashMap 클래스에서는중복을허용하지않아해당값을덮어쓰는취약점이존재합니다. 이경우 APK 파일을따로자가서명 (Self Signing) 하지않아도사용할수있습니다.

Manifest-Version: 1.0 Created-By: 1.0 (Android) Name: resources.arsc SHA1-Digest: PeGR4Th/o6th5FTq2s9UqSSsj80= Name: AndroidManifest.xml SHA1-Digest: Bx4FbcrctpgqEVmtxuOrNoAz3yI= Name: classes.dex SHA1-Digest: QhhKIzuo/WSxPZtUcbi+1me/BB0=.. <MANIFEST.MF> 해당 APK 파일은각파일의 Hash 정보를 Manifest.MF 에저장합니다. 이것은나중에 Android 의 PackageParser 에서해당 APK 파일을가지고오게되는데이때 ZipFile.java 클래스에서해당정보를 HashMap 클래스형태로담당합니다. 해당 APK 파일안에는여러가지파일이존재하는이때사용된암호화서명과일치하지않을경우설치가진행되지않습니다. 이때 HashMap<Key, Value> 에대해서간단하게살펴보겠습니다. HashMap<String, String> hashmap = new HashMap<String, String>(); hashmap.put( resources.arsc, PeGR4Th/o6th5FTq2s9UqSSsj80= ); hashmap.put( AndroidManifest.xml, Bx4FbcrctpgqEVmtxuOrNoAz3yI= ); hashmap.put( classes.dex, QhhKIzuo/WSxPZtUcbi+1me/BB0= ); 이형태로저장이되어관리됩니다. 이때 HashMap 은 Key 의중복이허용되지않습니다. 만약똑같은 Key 가두개이상존재한다면, 제일마지막 Value 가저장이됩니다.

HashMap<String, String> hashmap = new HashMap<String, String>(); hashmap.put( resources.arsc, PeGR4Th/o6th5FTq2s9UqSSsj80= ); hashmap.put( AndroidManifest.xml, Bx4FbcrctpgqEVmtxuOrNoAz3yI= ); hashmap.put( classes.dex,????? ); // 알수없는위변조된 dex 파일이있을경우 hashmap.put( classes.dex, QhhKIzuo/WSxPZtUcbi+1me/BB0= ); ZipFile.java 에서는해당파일이존재하더라도 classes.dex 라는 Key 가두개존재하므로 제일나중에집어넣은 classes.dex 파일의 value 로덮어쓰게됩니다. 2.2. 공격방법 http://johnzon3.tistory.com/attachment/cfile9.uf@2332394751ff842719b3bb.apk 기본적인 HelloWorld app 화면입니다. 해당앱은임의의코드를삽입하면서주소록을볼수있도록 permission 을추가했습니다. 이경우방법이 2 가지가있습니다. 1. 기존의 dex 파일을 smali 코드를수정하여리패키징 2. AndroidManifest.xml 에있는해당패키지, 클래스들을그대로복원하여해당소스를재구성.

해당앱의경우소스가간단하기때문에 2 번방법을사용하도록하겠습니다. public class MainActivity extends Activity { @Override protected void oncreate(bundle savedinstancestate) { LinearLayout linear = new LinearLayout(this); TextView tv = new TextView(this); ArrayList<Contact> list = getcontactlist(); String result = null; for (int i = 0; i < list.size(); i++) { result+=list.get(i).tostring()+"\n"; } tv.settext(result); linear.addview(tv); super.oncreate(savedinstancestate); setcontentview(linear); } 기존의앱에있던패키지명과동일하고해당클래스명도동일하게구성하였지만 activity_main.xml 을불러오는코드가아닌자바코드에서 getcontactlist 라는함수를만들어주소록을불러오고, TextView 로표시하는코드입니다. 해당파일을컴파일하고 classes.dex 파일을가지고옵니다. 그리고 dex 파일을구별하기위해서 evil.dex 파일이라고파일명을변경하였습니다. classes.dex -> Mission 에서가지고온원본 dex 파일 (Helloworld) evil.dex -> 삽입하려는악성 dex 파일 ( 주소록표시 ) Mission.apk -> 주소록 permission 이들어간 HelloWorld 파일

이제변조가될 apk 의 zip entry 순서는다음과같아야합니다. HashMap 은나중의결과를덮어쓰므로해당암호화서명을덮어쓰기위해서는원본 classes.dex 파일이뒤로와야합니다. 다음에 Hex Editor 와같은도구를통해 evil.dex -> classes.dex 로변경합니다. 이렇게만들어진해당앱을 JarSigner 로검증하게되면검증되지않습니다. 하지만앱설치는가능합니다. 이때 Dalvik 머신은기존의위변조되었던 evil.dex 가 zip 파일내부에서먼저실행되므로 악성행위가담겨져있는코드가실행이됩니다.

해당공격을통해삽입된 dex 파일이실행되었음을확인할수있습니다. 3. 방어대책 1. 다운로드할어플리케이션의게시자를확인해봐야합니다. 2. 해당프레임워크가취약한버젼인지확인하고패치해야합니다. http://bluebox.com/corporate-blog/free-scanner-to-manage-risk-of-major-androidvulnerability/ 해당앱에서무료로해당디바이스가취약한지확인해주는어플을공개하고있습니다.

4. References [1] : http://bluebox.com/corporate-blog/bluebox-uncovers-android-master-key/ [2] : http://bluebox.com/corporate-blog/free-scanner-to-manage-risk-of-major-androidvulnerability/