17
안안안안안 안안안안 안안안 KSIA IT4U 7 th 안안안

KSIA 7th Security Conference Session 2 ( Android Masterkey )

Embed Size (px)

DESCRIPTION

KSIA 7th Security Conference

Citation preview

Page 1: KSIA 7th Security Conference Session 2 ( Android Masterkey )

안드로이드 마스터키 취약점KSIA IT4U 7th 강연회

Page 2: KSIA 7th Security Conference Session 2 ( Android Masterkey )

발표자에 대한 짧은 소개

NTMALab Researcher

부흥고등학교 학생

오늘 KSIA 강연회의 발표자 중 유일한 민간인

Page 3: KSIA 7th Security Conference Session 2 ( Android Masterkey )

이번 강연을 듣기 위해서 필요한 것은 ?

한국어 듣기 능력약간의 영어 듣기 능력

컴퓨터 키는 법

Page 4: KSIA 7th Security Conference Session 2 ( Android Masterkey )

안드로이드가 무엇일까 ?

2008 년 출시된 리눅스 커널 기반의 모바일 플랫폼

현재 Android 4.3 버전인 젤리빈까지 업데이트

ARM, MIPS, x86 Architecture 까지 지원

Apache 2.0, GPL v2 License

전세계에서 약 9 억대의 단말기에서 사용되고 있음

Page 5: KSIA 7th Security Conference Session 2 ( Android Masterkey )

왜 안드로이드 취약점이 위험한가

레퍼런스 폰을 제외한 다른 휴대폰은 단말기 제조사가 업데이트 된 버전을 제공해야 하기 때문에 빠른 업데이트가 어려움

업데이트 된 버전을 제공하더라도 본인이 업데이트를 하지 않는 경우가 많고 , 업데이트 하는 법이 번거로워 업데이트를 잘 하지 않음 .

공격자가 취약점을 악용해 공격할 경우 APK 파일을 “알 수 없는 소스 설치”를 활성화 해 놓으면 설치 가능

이 때문에 패치가 되더라도 공격 대상은 줄지 않는 것이 특징

1-Day Exploit!

T store, Olleh store, OZ store 의

경우알 수 없는 소스 체크를

해제해야 설치가 가능함

Page 6: KSIA 7th Security Conference Session 2 ( Android Masterkey )

안드로이드 마스터키 취약점 ?

모든 앱을 내 앱처럼내가 원하는 코드를

호텔의 마스터키 처럼

Page 7: KSIA 7th Security Conference Session 2 ( Android Masterkey )

APK 파일 구조

APK 내부에서 사용할 파일들이 저장됨 APK 에서 사용될 외부

라이브러리가 위치함

APK 파일을 인증하는 파일들이 위치함

Dalvik 머신에서 돌릴 소스 파일

Xml 이나 APK 에서 사용될 이미지가 저장

Page 8: KSIA 7th Security Conference Session 2 ( Android Masterkey )

APK 파일 실행 과정

AndroidManifest.xml

classes.dex

resources.arsc

META-INFMANIFEST.MF

Android Dalvik Machine

classes.dex

MANIFEST.MF

AndroidPackageParser

ZipFile.java

IF Match

NOT MATCH

Load Fail

Page 9: KSIA 7th Security Conference Session 2 ( Android Masterkey )

META-INF 파일 ?

각 파일의 Hash 정보를 MANIFEST.MF 에 저장함나중에 여기에 저장된 파일은 ZipFile.java 라는 곳에서

HashMap class 로 가져옴

Page 10: KSIA 7th Security Conference Session 2 ( Android Masterkey )

HashMap class?

HashMap<String, String> hashmap = new HashMap<String, String>();

……..

hashmap.put(“resources.arsc”, “te8QmLcoFryubr7j35nJn9hBL0w=“);

hashmap.put(“classes.dex”, “1scfAxJEwLtNZ7GFtfPjRIN7cJg=“);

hashmap.put(“AndroidManifest.xml”, “NkADBOd37NXe+7rROuZr9VekTdM=“);

……...

중복될 수 없음IF Duplicate제일 마지막 것이 입력됨

Page 11: KSIA 7th Security Conference Session 2 ( Android Masterkey )

Duplicate classes.dex

HashMap<String, String> hashmap = new HashMap<String, String>();

……..

hashmap.put(“resources.arsc”, “te8QmLcoFryubr7j35nJn9hBL0w=“);

hashmap.put(“classes.dex”, “1scfAxJEwLtNZ7GFtfPjRIN7cJg=“);

hashmap.put(“classes.dex”, “//////////////////////////////////”);

hashmap.put(“AndroidManifest.xml”, “NkADBOd37NXe+7rROuZr9VekTdM=“);

……...hashmap.put(“classes.dex”, “//////////////////////////////////”); 정상실행

Page 12: KSIA 7th Security Conference Session 2 ( Android Masterkey )

공격을 하기 위한 조건

Package 명과 Class 명을 공격 대상 애플리케이션과 동일하게 해야 함

1. 기존의 dex File 의 snail code 를 수정하여 repackaging

2. AndroidManifest.xml 에 있는 package, class 를 그대로 복원하여 소스를 reconstruct

Page 13: KSIA 7th Security Conference Session 2 ( Android Masterkey )

시연

Target Application : Test application (kr.reversergoodboy.hackersbank)

Target Environment : Android 4.0 (Android Virtual Machine)

Page 14: KSIA 7th Security Conference Session 2 ( Android Masterkey )

왜 이 취약점이 위험할까 ?

진짜 파일에 Classes.dex 만 수정하는 것이라 일반인은 구분이 불가함 Classes.dex 만 생성해서 삽입하면 공격이 됨 . ( 간 . 편 )

취약점이 발생하더라도 단말기 제조업체에서 업데이트를 하지 않으면 DANGER! 1-Day Exploit 이 발생

Page 15: KSIA 7th Security Conference Session 2 ( Android Masterkey )

해결 방법

기기 업데이트 ( 단말기 제조업체에서 제공하는 경우 )

Play store 에서만 애플리케이션 다운로드 할 것 . (Play store 에서도 악성 앱의 발견수가 증가하고 있으므로 믿을 수 있는 애플리케이션만 설치할 것 )

Bluebox Security 사에서 제공하는 스캐너를 이용하여 이 취약점을 이용한 악성코드를 탐지하고 취약 여부를 확인함

Page 16: KSIA 7th Security Conference Session 2 ( Android Masterkey )

질의응답

살 .. 살 .. 물어보세요

Page 17: KSIA 7th Security Conference Session 2 ( Android Masterkey )

감사합니다

[email protected]@hwak.me