악성코드분석🍳/Android

[Android] APK 파일 구조 및 분석 개요

壓倒 2022. 9. 27. 01:43

APK 란?

안드로이드 앱의 확장자로 Android Package Kit 의 줄임말이다. 인증을 위한 서명이 포함되어 있으며 ZIP 파일 형식으로 압축되어 있다. Windows OS에서 exe 파일과 동일하다.

 

APK 구조

APK 구조는 크게 6가지로 나눌 수 있다.

APK 파일 구성(출처 : https://www.igloo.co.kr/security-information/%EC%95%85%EC%84%B1-apk%EC%9D%84-%EC%9D%B4%EC%9A%A9%ED%95%9C-dynamic-dex-loading-%EB%B6%84%EC%84%9D/)

위의 그림과 같이 각 폴더 및 파일마다 주요 정보들이 담겨져 있다.

 

악성 APK 분석 시 EP

실제 악성 APK 분석을 하며 가장 어려웠던 것이 어디부터 분석을 시작해야 하는지 모르는 것이었다.

아무것도 모를 때 기본으로 돌아가기 위해 APK 구조부터 다시 공부하였고 AndroidManifest.xml 를 가장 우선적으로 확인해야 한다는 것을 알 수 있었다.

 

왜 AndroidManifest.xml 부터 분석해야할까??

실제 악성 APK 파일의 AndroidManifest.xml 을 보면 다음과 같다.

AndroidManifest.xml

AndroidManifest.xml 파일은 모든 모바일 앱에 필수적으로 존재해야 하는 파일이며 에는 해당 APK 파일이 사용하는 Permission, Service 등 핵심적인 정보들이 존재하기 때문이다. 

 

이후에는 EP 가 어떻게 선언되어 있는지 확인하여야 한다. EP 가 선언되는 방식은 크게 2가지로 볼 수 있다.

 

첫 번째 방식은 Application 클래스를 상속한 뒤, Manifest의 android:name 속성에 등록하여 사용하는 방식이다. 

EP 선언 방식(1)(출처 : https://www.igloo.co.kr/security-information/%EC%95%85%EC%84%B1-apk%EC%9D%84-%EC%9D%B4%EC%9A%A9%ED%95%9C-dynamic-dex-loading-%EB%B6%84%EC%84%9D/)

 

두 번째 방식은 Application 클래스를 상속받지 않고 Manifest의 android:name 속성에 등록하여 사용하는 방식이다.

EP 선언 방식(2)(출처 : https://www.igloo.co.kr/security-information/%EC%95%85%EC%84%B1-apk%EC%9D%84-%EC%9D%B4%EC%9A%A9%ED%95%9C-dynamic-dex-loading-%EB%B6%84%EC%84%9D/)

두 방식 중 첫 번째 방식이 가장 먼저 인스턴스화되기 때문에 클래스 상속 유무를 확인한 후 EP를 설정하고 분석을 시작하여야 한다. 

 

오류, 잘못된 점 또는 궁금한 점이 있으시다면 댓글 남겨주세요❗