android-0x01
Android 정적 분석
안녕하세요 chaem 입니다.
지난 포스팅에 이어서 이번에는 Android 정적 분석에 대해 포스팅 하려고 합니다.
Android 정적 분석은 크게 2가지로 분류할 수 있습니다.
-압축 해제 후 분석
첫째로 Android 앱은 .apk 파일 확장자를 가지며, 압축된 형태이므로 압축을 해제한 후 해당 파일을 분석하는 방법입니다.
아래 그림과 같이 apk 파일을 압축 해제하면 class.dex 파일이 생성되는 것을 확인할 수 있습니다.
![[그림 1-1]](/assets/images/mobile/0x01/01.png)
이 class.dex 파일을 dex -> jar -> java 로 decompile 하면 소스코드를 확인 할 수 있습니다.
우선 dex2jar를 이용하여 dex -> jar로 decompile 합니다.
![[그림 1-2]](/assets/images/mobile/0x01/02.png)
jar 파일은 jd-gui를 이용해 decompile하여 소스코드를 확인할 수 있으며, 아래와 같이 난독화가 적용되어 있지 않으면 소스코드 분석을 통해 루팅 탐지 우회 등이 가능합니다.
![[그림 1-3]](/assets/images/mobile/0x01/03.png)
아래와 같이 jadx-gui를 이용하면 apk 파일을 바로 java 소스 코드로 확인할 수 있는 방법도 있습니다.
![[그림 1-4]](/assets/images/mobile/0x01/04.png)
-Decompile 후 분석
두번째는 apk파일을 decompile한 후 해당 파일을 분석하는 방법입니다.
apktool을 이용하면 아래 그림과 같이 apk 파일이 decompile되는 것을 확인할 수 있습니다. 주요 분석 대상은 AndroidManifest 파일, smali 코드, lib 폴더 등이 있습니다.
![[그림 1-5]](/assets/images/mobile/0x01/05.png)
AndroidManifest.xml 파일은 해당 앱에 대한 권한 등의 필수적인 정보를 포함하고 있으며, 앱에서 불필요한 권한을 요청하고 있는지 확인해보아야 합니다.
![[그림 1-6]](/assets/images/mobile/0x01/06.png)
smali 코드는 An assembler/disassembler for Android’s dex format의 약자로 코드 분석을 통해 실행 원리를 파악할 수 있습니다. 따라서 코드 수정 후 리패키징을 통해 앱 변조가 가능합니다.
![[그림 1-7]](/assets/images/mobile/0x01/07.png)
![[그림 1-8]](/assets/images/mobile/0x01/08.png)
lib 폴더 내에는 동적라이브러리인 *.so 파일을 포함하며, 보통 보안 솔루션들이 동적 라이브러리로 존재하고 있습니다. 아래 그림과 같이 IDA를 통해 분석이 가능하며, 보안 솔루션에서 루팅을 탐지하는 로직을 확인할 수 있습니다.
![[그림 1-9]](/assets/images/mobile/0x01/09.png)
지금까지 Android 정적 분석에 대해 알아보았고, 다음 포스팅에서는 Android 동적 분석에 대해 알아보도록 하겠습니다.
감사합니다.