/ POSTS

android-0x01

Android 정적 분석

안녕하세요 chaem 입니다.

지난 포스팅에 이어서 이번에는 Android 정적 분석에 대해 포스팅 하려고 합니다.

Android 정적 분석은 크게 2가지로 분류할 수 있습니다.

-압축 해제 후 분석

첫째로 Android 앱은 .apk 파일 확장자를 가지며, 압축된 형태이므로 압축을 해제한 후 해당 파일을 분석하는 방법입니다.

아래 그림과 같이 apk 파일을 압축 해제하면 class.dex 파일이 생성되는 것을 확인할 수 있습니다.

[그림 1-1]

이 class.dex 파일을 dex -> jar -> java 로 decompile 하면 소스코드를 확인 할 수 있습니다.

우선 dex2jar를 이용하여 dex -> jar로 decompile 합니다.

[그림 1-2]

jar 파일은 jd-gui를 이용해 decompile하여 소스코드를 확인할 수 있으며, 아래와 같이 난독화가 적용되어 있지 않으면 소스코드 분석을 통해 루팅 탐지 우회 등이 가능합니다.

[그림 1-3]

아래와 같이 jadx-gui를 이용하면 apk 파일을 바로 java 소스 코드로 확인할 수 있는 방법도 있습니다.

[그림 1-4]

-Decompile 후 분석

두번째는 apk파일을 decompile한 후 해당 파일을 분석하는 방법입니다.

apktool을 이용하면 아래 그림과 같이 apk 파일이 decompile되는 것을 확인할 수 있습니다. 주요 분석 대상은 AndroidManifest 파일, smali 코드, lib 폴더 등이 있습니다.

[그림 1-5]

AndroidManifest.xml 파일은 해당 앱에 대한 권한 등의 필수적인 정보를 포함하고 있으며, 앱에서 불필요한 권한을 요청하고 있는지 확인해보아야 합니다.

[그림 1-6]

smali 코드는 An assembler/disassembler for Android’s dex format의 약자로 코드 분석을 통해 실행 원리를 파악할 수 있습니다. 따라서 코드 수정 후 리패키징을 통해 앱 변조가 가능합니다.

[그림 1-7]
[그림 1-8]

lib 폴더 내에는 동적라이브러리인 *.so 파일을 포함하며, 보통 보안 솔루션들이 동적 라이브러리로 존재하고 있습니다. 아래 그림과 같이 IDA를 통해 분석이 가능하며, 보안 솔루션에서 루팅을 탐지하는 로직을 확인할 수 있습니다.

[그림 1-9]

지금까지 Android 정적 분석에 대해 알아보았고, 다음 포스팅에서는 Android 동적 분석에 대해 알아보도록 하겠습니다.

감사합니다.