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