안드로이드 강의 인프런 미리보기
안드로이드 시대 별 버전 (디저트 이름)
4.1 정도부터 보안안에 다룸. JellyBean인데, 이건 갤럭시 노트 2랑 맞는
현재는 Android 11.0
하지만 최신만 맞출 수 없고, 노트 2 아직도 쓰는 사람 있어서 여기부터 일단..
안드로이드 운영체제 소개
- 구글에서 개발한 리눅스 (커널) 기반 오픈 소스 플랫폼으로, 모바일 운영체제 역할
환경 구축할 때 녹스 에뮬레이터 사용
- 구글 플레이 스토어 및 기타 마켓 플레이스를 통한 타사 앱 설치를 지원함
- 오늘날 플랫폼은 휴대전화, 태블릿, 웨어러블 기술, TV 및 기타 스마트 디바이스와 같은 다양한 최신 기술의 토대
안드로이드 운영체제 구조
- Linux Kernel
Drivers(Audio, Keypad, Shared Memory, Binder(IPC), Bluetooth, USB, Display, Camera, WIFI) + Power Management
- HAL(하드웨어 추상화 계층)
Audio + Bluetooth + Camera + Sensors
- Android 런타임
Android Runtime(ART) + Core Libraries
- 네이티브 C/C++ 라이브러리
Webkit + OpenMAX AL + Libc + Media Framework + OpenGL ES
- Java API 프레임워크
Content Providers + View System + Managers(Activity, Location, Package, Notification, Resource, Telephony, Window)
- 시스템 앱
자바 개발 관점에서 보는 것도 중요,,, ㅎㅎ 난 자바 모르는데 ><
안드로이드 앱 컴포넌트 (구성요소)
- Activity, Service, Broadcast Receiver, Content Provider
- 앱 컴포넌트는 안드로이드 앱의 필수적인 구성 요소로 각 독립된 형태로 존재하며 정해진 역할을 수행
- 각 구성 요소는 시스템이나 사용자가 앱에 들어올 수 있는 진입점
- "인텐트(Intent)"는 다른 앱 컴포넌트로부터 작업을 요청하는 데 사용할 수 있는 메시징 객체 (메세지 연결자..?)
- 액티비티 (Activity)
- 서비스 (Service)
- Broadcast Receiver
- 콘텐츠 프로바이더 (Content Provider)
안드로이드 앱 취약점 분석 유튜브
https://www.youtube.com/watch?v=VCXMCWQLqCE&list=PL1jdJcP6uQtvSGi1tH0Nekww8JTmgbdjh&index=2
보니까 바로 녹스 연결해서 실전으로 들어가는 느낌?
본격적으로 하면서 하면 학습 효과가 증대되므로 책과 더불어서 해도 좋을 듯 함.
APK 파일이란?
APK 또는 Android Package Kit
: Google의 Android OS에 애플리케이션을 배포하는 데 사용되는 Android 패키지 파일의 확장
APK 파일에는 리소스 및 매니페스트에서 앱의 컴파일 된 애플리케이션 코드에 이르기까지 애플리케이션의 모든 데이터가 포함됩니다.
안드로이드 앱 구조
애플리케이션의 구성
JAVA/Kotlin 파일 (소스코드) + XML 파일(리소스) = .apk
안드로이드 앱 apk (Android Package)의 구조 분석
- 안드로이드 앱은 기본적으로 .apk 라는 파일 확장자 명을 가짐
- 매직 넘버는 PK
- apk 파일의 압축 해제시 간단하게 3가지로 구분됨
- AndroidManifest.xml (attack vector)
안드로이드 앱의 속성들을 주로 다루게 되는데, Activity, Service, Receiver, Permission 등의 속성은 이 파일에서 정의
패키지명, 버전정보, 권한정보 등 설치된 앱 정보가 저장된 파일
이중에 유일하게 폴더가 아닌 파일이다
디컴파일 할때랑 안할때랑 차이가 크다
처음 압축 해제 시 바이너리 형태의 xml로 인코딩 되어 형태를 알아보기 어렵지만, 이를 apktool과 같은 디컴파일러를 통하여 확인하면 디코딩된 xml 정보를 얻을 수 있음.
- Resource
안드로이드의 Image, Style 등과 같은 정보 관리
이것 또한 apktool로 확인 가능 - DEX (Dalvik Executable)
안드로이드에서 앱이 구동하기 위한 핵심적인 파일 포맷
Kotlin 및 Java로 이루어진 class를 달빅(vm)에서 인식할 수 있도록 바이트 코드로 변환시킨 실행파일
해당 파일은 low 언어이기에 IF-eqz, if-nez 등 분기문으로 작동시키는것을 볼수 있다
low언어를 읽기위해 dex2jar와 같은 방식의 해석가능한 수준으로 만드는 것이 필요
META-INF
앱 인증 및 서명 관련 데이터가 저장되는 폴더
SHA를 보관하여 무결성 검증함
즉, 이 폴더에는 앱 무결성 검증과 서명을 담당하고 있는 부분이 있음.
권한과 관련한 고찰 블로그 : https://chanztudio.tistory.com/93
패키지 폴더의 설명
java : 자바 소스 파일들이 들어있는 폴더.
Gradle Scripts : Gradle은 빌드 시 필요한 스크립트
res : 각종 리소스들이 저장되는 폴더.
→ drawable : 해상도 별로 아이콘 파일들이 저장, 프로젝트에 활용될 이미지들
→ layout : 화면의 구성을 정의
→ values : 문자열과 같은 리소스
- dimens.xml : 크기에 관련된 설정 파일로 텍스트 크기, 도형 크기 등을 정의
- string.xml : 문자열에 관련된 설정 파일
- styles.xml : 화면 디자인 관련 설정을 정의, 색상, 액션바 유무, 배경 색 등등
→ menu : 메뉴 리소스
manifest : XML 파일로 앱의 전반적인 정보 즉 앱의 이름이나 컴포넌트 구성과 같은 정보를 가지고 있다.
안드로이드 앱 프로젝트 구조 결론
안드로이드 앱 프로젝트는 복잡해 보이지만,
사실상 아래의 3가지로 구성되어 있음을 알 수 있다.
1. 소스코드: java/kotlin
2. 리소스: 레이아웃/문자열(xml), 이미지(png) 등
3. 환경설정: manifest.xml, gradle Scripts(build.gradle)
출처:
https://curryyou.tistory.com/366
안드로이드 앱 분석
- 정적분석
APK 파일 실행시키기 전 리버싱으로 분석
이는 난독화 기법이 적용된 악성코드일 때는 분석하기 어려움 - 동적분석
APK를 실행시킨 후 앱 설치 및 실행되는 과정 분석
분석 시 에뮬레이터 사용
안티 에뮬레이션을 적용한 고도화된 악성코드일 때 분석하기 어려움. - Androidmanifest.xml 파일 분석
다음 해야할 일?
- 무작정 하나 구현해오기?
단.. 개발 환경이나 뭘 할건지는 통일해서.. 그냥하면 막연하니깐.. - 안드로이드 앱 Androidmanifest.xml 파일을 디컴파일 하는 과정을 해봐야 함
- 개념적인 이해 추가 필요, 생각보다 복잡
'4-7. 2021-2 심화 스터디 > 안드로이드 앱 모의해킹 분석' 카테고리의 다른 글
[2021.11.06] 취약한 로깅 메커니즘, 안드로이드 dumpsys 패키지 정보 확인, 녹스(Nox)에서 앱 SSL 자격증명 설치, 취약한 HTTP 통신: 통신과정 암호화 통신 여부 확인 - 와이어샤크 활용 (0) | 2021.11.06 |
---|---|
[2021.10.09] 하드코드 된 중요 정보, 안드로이드 페이스트보드 취약점, 사용자 계정 목록화 (0) | 2021.10.09 |
[2021.09.25]로컬 암호화 이슈 (0) | 2021.09.25 |
[2021.09.18]취약한 브로드 캐스트 리시버 & 안드로이드 백업 취약점 (0) | 2021.09.18 |
[2021.09.11] 안드로이드 운영체제 이해, 인시큐어 뱅크 환경 구축 (0) | 2021.09.11 |