앱 모의해킹을 시작하기 전 안드로이드에 대한 이해를 시작하고 접근하도록 한다.
앱 컴포넌트 ( 구성 요소 )
앱 컴포넌트 안드로이드 앱의 구성요소
1. 액티비티
사용자와 상호작용하기 위한 시작점
사용자 인터페이스를 포함한 화면 하나를 나타냄
이메일 앱이라면 새 이메일 목록을 표시하는 액티비티 하나, 이메일을 작성하는 액티비티 하나, 이메일을 읽는 데 쓰는 액티비티 하나 등이 존재
이메일 앱에서 허용할 경우 다른 앱에서 이와 같은 액티비티 중 하나를 시작할 수 있음
"우리가 앱에서 보는 모든 화면들은 액티비티" 라고 볼 수 있다.
2. 서비스
백그라운드에서 앱을 계속 실행하기 위한 진입점
사용자 인터페이스 UI를 제공하지 않음
사용자 액티비티 간의 상호작용을 차단하지 않고 네트워드를 통해 데이터를 가져올 수 있음
"유튜브 프리미엄 기능을 생각하면 화면을 꺼도 계속 노래가 들리는 것과 같다" 라고 볼 수 있다.
3. Broadcast Receiver
시스템이 정기적인 사용자 플로우 밖에서 이벤트를 앱에 전달하도록 지원하는 컴포넌트
대다수의 브로드캐스트는 시스템에서 발생한다. ( 화면 꺼짐 표시, 배터리 부족 알림 등등 )
일반 앱도 브로드캐스트를 사용하여 사용자 인터페이스를 표시하지 않지만, 상태 표시줄 알림을 생성
4. 콘텐츠 프로바이더
콘텐츠 제공자는 파일 시스템, SQLite 데이터베이스, 웹상이나 앱이 접근할 수 있는 다른 모든 영구 저장소에 저장 가능한 앱 데이터의 공유형 집합을 관리함
다른 앱은 컨텐츠 제공자를 통해 해당 데이터를 쿼리하거나, 콘텐츠 제공자가 허용할 경우에는 수정도 가능
안드로이드 시스템은 사용자의 연락처 정보를 관리하는 콘텐츠 제공자를 제공하여, 적절한 권한을 가진 앱이라면 콘텐츠 제공자를 쿼리하여 특정한 인물에 대한 정보를 읽고 쓸 수 있음
안드로이드 디바이스 디렉터리 구조
1. 디바이스 디렉터리 구조
디렉터리 | 설명 |
/ | - 루트(root) 파일 시스템 디렉터리 - 부트와 관련된 설정을 참고하며, 초기 프로세스 정보가 존재함 |
/system | - 안드로이드 운영체제 홈 디렉터리 - 안드로이드 UI 및 사전에 설치된 앱을 포함하며, 운영체제가 존재하는 디렉터리 ( 루팅은 system 디렉터리의 대부분을 건드린다. ) |
/data | - 사용자 앱 상태 정보가 포함된 파일 시스템 디렉터리 ( 보통 다운로드를 받은 apk에 대한 모든 정보가 적제되는 장소이다. ) |
/cache | - 자주 사용하는 데이터 및 앱 컴포넌트를 저장하는 디렉터리로 읽기 / 쓰기 권한 존재 - 브라우저 캐시같이 일시적인 사용자의 상태정보가 포함 |
2. 앱 설치 디렉터리 구조
디렉터리 | 설명 |
/system/app | - 시스템에 의해 미리 설치된 앱 경로 |
/data/app | - 사용자에 의해 설치된 앱 경로 ( 앞으로 APK 파일이 존재할 경로 ) |
/data/data/<package> | - 설치 앱 패키지 경로, 루트 권한으로 접근 가능함 |
/data/data/<package>/files | - 어플리케이션의 데이터, 파일저장 ( data 파일, ini 파일 등이 여기에 속함 ) |
/data/data/<package>/lib | - 어플리케이션에 요청하는 라이브러리 파일 저장 ( so 파일이 존재함 ) ( 보통의 보안 솔루션 파일은 SO 파일로 저장되어 있음 ) |
/data/data/<package>/databases | - 설정 파일 , 컨텐츠 파일 등의 쿼리 정보가 포함된 SQLite DB 파일 |
/data/data/<package>/cache | - 브라우저 캐시처럼 일시적으로 사용자의 정보를 저장시킴 |
/data/data/<package>/shared_prefs | - XML 파일로 저장되며, 앱에 공유되는 설정 파일 |
/mnt/sdcard/sdcard |
- External/Internal SD 카드 경로 |
/system/app/앱이름.apk |
- 시스템 앱 공간 - 세이프모드로 부팅이 될 시에는 시스템 앱들이 가능한 앱들이 실행 |
/data/app/앱이름.apk |
- 사용자가 다운로드한 앱들의 공간 ( 플레이스토어 등 에서 다운로드 받은 파일의 저장위치 ) |
/data/davik-cache |
- dex 파일이 보관 ( dex 파일은 Dalvic 가상머신에서 실행시킬 수 있는 파일. 리버싱에 사용된다 ) |
[출처] 인프런 보안프로젝트 안드로이드 모바일 앱 모의해킹과 시큐어코딩
'앱 모의해킹 > 안드로이드' 카테고리의 다른 글
Frida(1) - 문법, 개념 이해 (0) | 2024.06.13 |
---|---|
InsecureBank 취약점 분석 (0) | 2024.06.04 |
Drozer 프레임워크 (0) | 2024.05.30 |
안드로이드 기본개념(3) (0) | 2024.05.29 |
안드로이드 기본개념(2) (0) | 2024.05.28 |