반응형
안드로이드 역사
- 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 등 다양한 기기에서 사용
- 구조: 여러 계층으로 구성되며, 각 계층은 상위 계층에 서비스를 제공
안드로이드의 주요 계층 구성
- 리눅스 커널 계층
- 리눅스 커널 기반: 이동성 높은 리눅스 플랫폼을 기반으로 하며, 기기의 소프트웨어와 하드웨어 사이의 추상화 계층 역할 수행
- 기능: 프로세스 관리, 메모리 관리, 네트워크 프로토콜 스택 등 핵심 시스템 기능 제공
- 라이브러리
- 구성 언어: C/C++로 작성된 라이브러리
- 기능: 다양한 데이터 처리 지원 (예: 미디어 파일, 그래픽, 데이터베이스 등)
- 안드로이드 런타임: 애플리케이션 실행 환경 제공, 달빅 가상 머신(Dalvik Virtual Machine)과 핵심 라이브러리 포함
- 안드로이드 런타임 정의: 애플리케이션이 시작되어 종료될 때까지의 실행 환경
- 달빅 가상 머신 (DVM, Dalvik Virtual Machine)
- 언어: 자바 프로그래밍 언어로 작성된 애플리케이션 실행
- 변환 프로세스: 자바 바이트코드를 달빅 바이트코드로 변환하여 실행 (Dex 컴파일러 사용)
- 특징: 낮은 메모리와 처리 성능에서도 효과적으로 작동
- 애플리케이션 프레임워크 계층
- 기능: 기기의 자원 관리, 통화 관리 등 기본적인 기능 제공
- 역할: 설치된 애플리케이션과 직접 통신하여 필요한 기능과 서비스를 제공
주요블록
Telephony Manager | 모든 음성 통화 관리 |
Content Provider | 다른 애플리케이션 간의 데이터 공유를 관리 |
Resource Manager | 애플리케이션이 사용하는 다양한 자원 관리 |
애플리케이션 계층
- 위치: 안드로이드 시스템의 최상위 계층
- 특징: 사용자가 기기와 직접 상호작용하는 영역
- 구성: 미리 설치된 애플리케이션(예: 전화, 메시지, 카메라)과 사용자가 설치한 애플리케이션으로 구분
- 역할: 기기에서 볼 수 있는 모든 요소(아이콘, 화면, 버튼 등)를 통해 사용자에게 서비스를 제공
안드로이드 보안
- 다계층 보안: 기기에 존재하는 사용자 데이터를 보호하기 위해 여러 계층에 걸쳐 보안 적용
- 보안 기본 설정: 사용자를 보호하기 위해 기본적으로 설정된 보안 기능 제공
- 개발자 보안 기능: 개발자 커뮤니티에서 안전한 애플리케이션 개발을 위한 다양한 보안 기능 활용
- 보안 목표:
- 사용자 데이터 보호: 개인 정보와 같은 중요한 사용자 데이터의 안전성 보장
- 시스템 자원 보호: 시스템 자원의 무단 접근 방지
- 애플리케이션 간 데이터 분리: 각 애플리케이션이 서로의 데이터에 접근하지 못하도록 제한
http://source.android.com/devices/tech/security/
안전한 커널
안드로이드 버전 | 리눅스 커널 버전 |
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 |
안드로이드 보안 모델
- 퍼미션 모델
- 민감한 기능 접근: 인터넷 사용, 전화 걸기 등 민감한 기능에 접근하기 위해 사용자로부터 퍼미션(권한)을 받아야 함
- 위험성: 사용자가 의식하지 못하고 과도한 퍼미션을 허용할 경우, 보안 위협 발생 가능
- 애플리케이션 샌드박스
- 리눅스 시스템 유사 방식: 각 사용자는 고유한 사용자 ID(UID)를 할당받고, 서로의 데이터에 접근할 수 없음
- 안드로이드의 구현: 각 애플리케이션이 고유 사용자처럼 실행되며, 리눅스 커널을 통해 애플리케이션 샌드박스 적용
- 보안 관리 방식: UID와 GID를 통해 애플리케이션 간 보안 제약 관리
- 안전한 프로세스 간 통신 (IPC)
- 통신 방식: 동일 애플리케이션 내의 액티비티 간 메시지 전송이나 다른 애플리케이션의 액티비티와의 메시지 전송을 통해 프로세스 간 안전한 통신 제공
- IPC 메커니즘: Intent, Service, Content Provider 등을 통한 안전한 통신 가능
- 애플리케이션 서명
- 디지털 서명: 모든 애플리케이션은 설치 시 디지털 서명이 필요함으로써 인증 및 신뢰성 확보
- 안드로이드 파일 계층
- 파티션 구조: 안드로이드는 여러 파티션을 사용하여 데이터와 시스템 파일을 구분
- /boot: 부팅에 필요한 정보와 파일. 커널과 램 디스크가 있어 이 파티션 없이는 작동하지 않음.
- /system: 커널과 램디스트 이외의 시스템 관련 파일 포함. 없으면 부팅이 안됨
- /recovery: 백업 목적으로 설계. 기기가 복구 모드로 부팅하는 것을 가능하게 함. 복구 모드에서 폰 설치를 복구할 수 있는 도구를 찾을 수 있음
- /data: 애플리케이션의 데이터 포함. 주소록, SMS, 통화한 전화번호 등 데이터가 저장됨
- /cache: 빠른 데이터 일긱를 위해 자주 접근되는 데이터와 몇가지 로그를 저장
- /misc: 기타 설정 정보 담고 있음. 켜고 꺼짐등의 대부분 기기 상태 정의. 하드웨어 설정, USB 설정 등도 포함
안드로이드 파일 시스템
- 파일 시스템 개요
- 정의: 데이터가 저장, 구성되고, 볼륨에서 검색되는 방법을 의미
- 구조: 하나의 볼륨이 여러 파티션으로 나뉘며, 각 파티션은 고유한 파일 시스템으로 관리됨
- 특징: 안드로이드는 드라이브 대신 마운트 지점을 사용하여 파일 시스템을 관리함
- 관리 방식: 파일 시스템마다 규칙이 다르며, 각 규칙에 따라 검색 속도, 보안 수준, 크기 등이 달라짐
- 안드로이드 기기의 파일 시스템 확인
- 커널 지원 파일 시스템 조회: cat /proc/filesystems 명령어로 확인 가능
- 파티션 확인: mount 명령어를 통해 현재 마운트된 파티션 확인 가능
- 특정 파일 시스템 위치:
- sysfs: 기기 환경설정 정보 저장, /sys 폴더에 마운트
- devpts: 터미널 세션과 인터페이스 제공, /dev/pts에 마운트
- cgroup: 작업 추적용으로 사용, control groups로서 작업 모니터링 기능 제공
- proc: 커널 데이터 구조 및 시스템 관련 정보 저장, /proc 디렉토리에 위치
- tmpfs: 램을 활용한 임시 저장소, 휘발성 메모리로 재시작 시 데이터 소실됨
- 안드로이드에서 사용되는 주요 파일 시스템
- 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 플래시 메모리 지원
- EXT (Extended File System):
반응형
'학회_공부해요 > 모바일포렌식' 카테고리의 다른 글
3주차 퀴즈 (0) | 2024.11.05 |
---|---|
안드로이드 포렌식 셋업과 데이터 사전 추출 기법 (0) | 2024.11.05 |
모바일 포렌식 입문 (7) | 2024.10.08 |
모바일 포렌식 분석 (2) | 2024.10.01 |
아이폰 데이터 수집 (0) | 2024.10.01 |