2
1. 안드로이드 소개
• 구글에서 만든 휴대전화 중심의 운영체제
• 오픈 소스 플랫폼으로 누구나 원한다면 안드로이드의 소스를 볼 수
있어서 보안에 대한 우려가 많음
http://android.git.kernel.org/ 에서 안드로이드의 소스를 다운받아
볼 수 있음
1.1 안드로이드란?1.1 안드로이드란?
3
2. 안드로이드 소개
• 리눅스(Linux) 운영체제 기반
- 리눅스 커널을 이용하여 운영체제가 구성
- 리눅스와 같은 형식의 권한 구조
• 달빅 가상 머신(Dalvik VM)
- 안드로이드의 어플리케이션은 대부분 JAVA 기반의 언어로 구성
- 달빅 가상머신은 안드로이드에서의 실행파일 수행을 위한 가상머신
• 실행파일은 .apk 확장자
- 실행파일 내부에는 달빅 머신이 실행할 수 있는 .dex 확장자와 리소스 그리고 라
이브러리 파일인 so파일이 존재
- 안드로이드의 어플리케이션은 apk파일로 실행되고 설치됨.
1.2 특징1.2 특징
4
2. 안드로이드 소개
Dalvic 가상 신에서 Apk 파 실행
안드로 드 구조
각종 드라 버Driver
전원관리
libc WebKit SQL Lite Dalvic 가상 신
Setting Contact각종 관리
어플리케 션
사 어플리케 션
1.3 구조1.3 구조
6
2. 안드로이드 권한 2.2 토리 구성2.2 토리 구성
디렉토리 용도
/data 사용자 어플리케이션이 저장되는 장소
/data/app/ 사용자 어플리케이션이 설치된 장소
/data/data/패키지이름/ 해당 어플리케이션의 라이브러리나 데이터베이스가
저장되는 장소
/system 관리 어플리케이션이 저장되는 장소
/sdcard 외부 저장 장소인 SD카드
7
2. 안드로이드 권한
• 리눅스 운영체제로 타 어플리케이션이나 내부 시스템에 접근하지
못하도록 되어 있음
2.3 Sandbox2.3 Sandbox
/data/app : 타 사 는 기만 가능
/data/data/패키지 : app_24라는 사 로 타 사 는 실행만 가능
/data/data/패키지 /databases/ 타 사 는 아무 권한 없
8
3. 악성 어플리 이션의 위험
• 개발 시 주소록, SMS와 같은 정보는 다루어야 함
• 해당 어플리케이션에 권한을 주는 방법으로 접근 가능
• 안드로이드의 AndroidManifest.xml 에 아래와 같이 권한을 부여
• 권한 부여가 없다면 관련 작동을 사용할 수 없게 설계되어 있음
• 권한관련 상세 문서는 개발자 사이트에서 볼 수 있음
http://developer.android.com/reference/android/Manifest.permission.html
3.1 어플리 이션의 권한 설3.1 어플리 이션의 권한 설
인터넷과 주소록을 읽을 수 있는 권한
9
3. 악성 어플리 이션의 위험
• 설치 시에 권한 정보를 보여주고 있음
• 일반 설치 시에 보여주는 권한 정보를 통해
서 사용자에게 해당 프로그램을 설치할 것
인지의 여부를 확인
• 문제점은 일반 사용자가 설치 시에 권한을
전부 살펴보고 설치하기는 어려움
• 휴대폰의 관리 프로그램에서의 설치가 아닌
adb와 같은 프로그램을 이용한 설치에서는
권한정보를 볼 수 없음
3.2 어플리 이션 설치시의 취약3.2 어플리 이션 설치시의 취약
10
3. 악성 어플리 이션의 위험
• 사용자가 모르게 휴대폰 내의 주소록이나 SMS, 휴대폰 정보, 사용
자의 위치정보 등을 탈취 가능
• 주소록이나 SMS정보의 조작 및 삭제 가능
• 피싱을 통한 비밀번호 탈취
- 얼마 전에 최초로 공개된 droid09 악성코드는 은행 어플리케이션
인 것처럼 속이고 사용자의 비밀번호를 탈취했음
- 얼마든지 은행 어플리케이션과 똑같이 만들어 내고 배포 할 수 있
는 위험이 있음
3.3 공격 가능한 악성코드 종류3.3 공격 가능한 악성코드 종류
11
3. 악성 어플리 이션의 위험
다운로드 후에 악성코드를 설치하게 되는 형식
1) 안드로이드 마켓
2) SMS : 악성코드 프로그램 URL을 링크
3) MMS : 링크 및 파일 첨부
4) 웹 브라우저 : 다운로드
그 외에 악성코드 파일을 받아서 설치하는 경우
3.4 악성코드의 경로3.4 악성코드의 경로
12
4. 주소록 탈취 악성코드
• 직접 제작한 간단한 악성코드 예제를 통해 위험 설명
• 사용자의 주소록을 탈취하여 타 서버로 전송하고 저장하는 어플리케이션
• 피싱 설명과 함께 ID와 패스워드 정보를 타 서버로 전송 저장
4.1 보 장 서버 실행4.1 보 장 서버 실행
java kr.co.shiftworks.contact.ContactServer
악성 어플리케이션으로부터 주소록 정보와 로그인 정보를 저장 받는 서버를 실행
java kr.co.shiftworks.contact.PhsingServer
15
4. 주소록 탈취 악성코드
• 해당 악성코드는 로그인 프로그램처럼 보이지만 실행과 동시에 사용자의
개인 정보를 탈취하는 코드를 가지고 있음
• 프로그램을 실행하는 순간 주소록 정보가 타 서버로 전송되어 저장됨
4.4 주소록 보 확인4.4 주소록 보 확인
16
5. 피싱 악성코드
• 이 프로그램의 디자인을 은행의 어
플리케이션과 동일하게 만든다면 사
용자의 ID와 암호를 탈취 가능
• 로그인 버튼을 누르면 임의의 서버
로 E-Mail과 Password 정보가 전송
5.1 피싱 악성코드 실행5.1 피싱 악성코드 실행
18
6. 응방안
• 스마트폰은 전화 기능이 있는 작은 컴퓨터와 같으므로 사용자가 악
성 어플리케이션과 안전한 어플리케이션을 분리하여 관리하여야
함
• 백신과 같은 보안 어플리케이션을 설치하여 관리
19
6. 응방안
• 발견된 악성코드를 탐지
• 실행파일 분석을 통해 위험성이 있는 어플리케이션을 탐지
• 위험성 있는 어플리케이션 중 안전한 어플리케이션은 탐지하지 않음
6.1 VGuard for Android 6.1 VGuard for Android