학회_공부해요/모바일포렌식

안드로이드의 이해

yenas0 2024. 11. 5. 20:48
반응형

안드로이드 역사

  • 2003년: 앤디 루빈, 리치 마이너, 크리스 화이트가 안드로이드 주식회사 설립
  • 2005년: 구글이 안드로이드 주식회사 인수
  • 구글 합류 후: 루빈 팀이 리눅스 커널을 기반으로 한 유연하고 강력한 운영체제 개발
  • 2007년: 리눅스 커널 2.6을 기반으로 한 첫 오픈소스 무료 모바일 플랫폼, 안드로이드 발표
  • 2008년: 안드로이드 운영체제를 탑재한 첫 스마트폰 HTC 드림 출시
  • 2010년 이후: 구글이 다양한 안드로이드 버전(예: 진저브레드, 허니콤, 아이스크림 샌드위치 등) 출시
  • 현재: 글로벌 모바일 운영체제 시장에서 점유율 1위, 다양한 디바이스에 확장

 

안드로이드 버전 역사

버전 버전 이름 출시연도
Android 1.0 Apple pie 2008
Android 1.1 Banana bread 2009
Android 1.5 Cupcake 2009
Android 1.6 Donut 2009
Android 2.0 Eclair 2009
Android 2.2 Froyo 2010
Android 2.3 Gingerbread 2010
Android 3.0 Honeycomb 2011
Android 4.0 Ice Cream Sandwich 2011
Android 4.1 Jelly Bean 2012
Android 4.4 KitKat 2013

 

 

안드로이드 모델 개요

  • 컴퓨팅 시스템에서의 OS 역할: 운영체제(OS)는 시스템 자원을 관리하며, 애플리케이션이 하드웨어에 접근하여 특정 작업을 수행할 수 있도록 지원
  • 안드로이드의 특징: 모바일 기기를 위한 대중적인 오픈소스 운영체제로, 사용자는 코드를 수정하여 다양한 기기의 요구사항에 맞출 수 있음
  • 주요 제조사: 삼성, HTC, 소니, LG 등 다양한 기기에서 사용
  • 구조: 여러 계층으로 구성되며, 각 계층은 상위 계층에 서비스를 제공

 

 

안드로이드의 주요 계층 구성

  1. 리눅스 커널 계층
    • 리눅스 커널 기반: 이동성 높은 리눅스 플랫폼을 기반으로 하며, 기기의 소프트웨어와 하드웨어 사이의 추상화 계층 역할 수행
    • 기능: 프로세스 관리, 메모리 관리, 네트워크 프로토콜 스택 등 핵심 시스템 기능 제공
  2. 라이브러리
    • 구성 언어: C/C++로 작성된 라이브러리
    • 기능: 다양한 데이터 처리 지원 (예: 미디어 파일, 그래픽, 데이터베이스 등)
    • 안드로이드 런타임: 애플리케이션 실행 환경 제공, 달빅 가상 머신(Dalvik Virtual Machine)과 핵심 라이브러리 포함
    • 안드로이드 런타임 정의: 애플리케이션이 시작되어 종료될 때까지의 실행 환경
  3. 달빅 가상 머신 (DVM, Dalvik Virtual Machine)
    • 언어: 자바 프로그래밍 언어로 작성된 애플리케이션 실행
    • 변환 프로세스: 자바 바이트코드를 달빅 바이트코드로 변환하여 실행 (Dex 컴파일러 사용)
    • 특징: 낮은 메모리와 처리 성능에서도 효과적으로 작동
  4. 애플리케이션 프레임워크 계층
    • 기능: 기기의 자원 관리, 통화 관리 등 기본적인 기능 제공
    • 역할: 설치된 애플리케이션과 직접 통신하여 필요한 기능과 서비스를 제공

주요블록

Telephony Manager 모든 음성 통화 관리
Content Provider 다른 애플리케이션 간의 데이터 공유를 관리
Resource Manager 애플리케이션이 사용하는 다양한 자원 관리

 

애플리케이션 계층

  • 위치: 안드로이드 시스템의 최상위 계층
  • 특징: 사용자가 기기와 직접 상호작용하는 영역
  • 구성: 미리 설치된 애플리케이션(예: 전화, 메시지, 카메라)과 사용자가 설치한 애플리케이션으로 구분
  • 역할: 기기에서 볼 수 있는 모든 요소(아이콘, 화면, 버튼 등)를 통해 사용자에게 서비스를 제공

 

안드로이드 보안

  • 다계층 보안: 기기에 존재하는 사용자 데이터를 보호하기 위해 여러 계층에 걸쳐 보안 적용
  • 보안 기본 설정: 사용자를 보호하기 위해 기본적으로 설정된 보안 기능 제공
  • 개발자 보안 기능: 개발자 커뮤니티에서 안전한 애플리케이션 개발을 위한 다양한 보안 기능 활용
  • 보안 목표:
    • 사용자 데이터 보호: 개인 정보와 같은 중요한 사용자 데이터의 안전성 보장
    • 시스템 자원 보호: 시스템 자원의 무단 접근 방지
    • 애플리케이션 간 데이터 분리: 각 애플리케이션이 서로의 데이터에 접근하지 못하도록 제한

http://source.android.com/devices/tech/security/

 

Android 보안  |  Android 오픈소스 프로젝트  |  Android Open Source Project

컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. 안전한 Android 기기 Android는 업계 최고의 보안 기능을 통합하여 Android 플랫폼 및 생태계의 보안을 유지합니다.

source.android.com

 

 

안전한 커널

안드로이드 버전 리눅스 커널 버전
1 2.6.25
1.5 2.6.27
1.6 2.6.29
2.2 2.6.32
2.3 2.6.35
3 2.6.36
4 3.0.1
4.1 3.0.31
4.2 3.4.0
4.2 3.4.39
4.4 3.8

 

 

안드로이드 보안 모델

  1. 퍼미션 모델
    • 민감한 기능 접근: 인터넷 사용, 전화 걸기 등 민감한 기능에 접근하기 위해 사용자로부터 퍼미션(권한)을 받아야 함
    • 위험성: 사용자가 의식하지 못하고 과도한 퍼미션을 허용할 경우, 보안 위협 발생 가능
  2. 애플리케이션 샌드박스
    • 리눅스 시스템 유사 방식: 각 사용자는 고유한 사용자 ID(UID)를 할당받고, 서로의 데이터에 접근할 수 없음
    • 안드로이드의 구현: 각 애플리케이션이 고유 사용자처럼 실행되며, 리눅스 커널을 통해 애플리케이션 샌드박스 적용
    • 보안 관리 방식: UID와 GID를 통해 애플리케이션 간 보안 제약 관리
  3. 안전한 프로세스 간 통신 (IPC)
    • 통신 방식: 동일 애플리케이션 내의 액티비티 간 메시지 전송이나 다른 애플리케이션의 액티비티와의 메시지 전송을 통해 프로세스 간 안전한 통신 제공
    • IPC 메커니즘: Intent, Service, Content Provider 등을 통한 안전한 통신 가능
  4. 애플리케이션 서명
    • 디지털 서명: 모든 애플리케이션은 설치 시 디지털 서명이 필요함으로써 인증 및 신뢰성 확보
  5. 안드로이드 파일 계층
    • 파티션 구조: 안드로이드는 여러 파티션을 사용하여 데이터와 시스템 파일을 구분
  • /boot: 부팅에 필요한 정보와 파일. 커널과 램 디스크가 있어 이 파티션 없이는 작동하지 않음.
  • /system: 커널과 램디스트 이외의 시스템 관련 파일 포함. 없으면 부팅이 안됨
  • /recovery: 백업 목적으로 설계. 기기가 복구 모드로 부팅하는 것을 가능하게 함. 복구 모드에서 폰 설치를 복구할 수 있는 도구를 찾을 수 있음
  • /data: 애플리케이션의 데이터 포함. 주소록, SMS, 통화한 전화번호 등 데이터가 저장됨
  • /cache: 빠른 데이터 일긱를 위해 자주 접근되는 데이터와 몇가지 로그를 저장
  • /misc: 기타 설정 정보 담고 있음. 켜고 꺼짐등의 대부분 기기 상태 정의. 하드웨어 설정, USB 설정 등도 포함

 

안드로이드 파일 시스템

  1. 파일 시스템 개요
    • 정의: 데이터가 저장, 구성되고, 볼륨에서 검색되는 방법을 의미
    • 구조: 하나의 볼륨이 여러 파티션으로 나뉘며, 각 파티션은 고유한 파일 시스템으로 관리됨
    • 특징: 안드로이드는 드라이브 대신 마운트 지점을 사용하여 파일 시스템을 관리함
    • 관리 방식: 파일 시스템마다 규칙이 다르며, 각 규칙에 따라 검색 속도, 보안 수준, 크기 등이 달라짐
  2. 안드로이드 기기의 파일 시스템 확인
    • 커널 지원 파일 시스템 조회: cat /proc/filesystems 명령어로 확인 가능
    • 파티션 확인: mount 명령어를 통해 현재 마운트된 파티션 확인 가능
    • 특정 파일 시스템 위치:
      • sysfs: 기기 환경설정 정보 저장, /sys 폴더에 마운트
      • devpts: 터미널 세션과 인터페이스 제공, /dev/pts에 마운트
      • cgroup: 작업 추적용으로 사용, control groups로서 작업 모니터링 기능 제공
      • proc: 커널 데이터 구조 및 시스템 관련 정보 저장, /proc 디렉토리에 위치
      • tmpfs: 램을 활용한 임시 저장소, 휘발성 메모리로 재시작 시 데이터 소실됨
  3. 안드로이드에서 사용되는 주요 파일 시스템
    • EXT (Extended File System):
      • 출시: 1992년, 리눅스 커널 전용
      • 특징: 초기 가상 파일 시스템 중 하나
    • VFAT (Virtual File Allocation Table):
      • 기반: FAT16과 FAT32의 확장 버전
      • 특징: 마이크로소프트의 FAT32 파일 시스템으로, 안드로이드 기기에서 파일을 쉽게 읽고 수정 및 삭제 가능
    • YAFFS2 (Yet Another Flash File System 2):
      • 출시: 2002년
      • 특징: NAND 플래시 메모리를 다루기 위해 설계된 로그 구조 파일 시스템으로, 데이터 무결성 보장
      • 용도: 갑작스러운 정전에도 데이터 보호, 널리 사용됨
    • F2FS (Flash-Friendly File System):
      • 출시: 2013년, 리눅스 커널 3.8 기반
      • 특징: NAND 플래시 메모리 최적화 및 로그 구조 기반의 설계
      • 용도: 삼성 기기 등에서 널리 사용됨
    • RFS (Robust File System):
      • 특징: FAT16 기반 저널링 파일 시스템으로, 트랜잭션 로그를 통한 데이터 무결성 보장
      • 용도: 삼성 기기의 NAND 플래시 메모리 지원

 

 

 

 

반응형