이번 포스팅에서는 Android 앱 (apk) 파일에 대해 디컴파일과 리패키징을 진행하고, 암호화된 DEX 파일이 포함된 apk를 분석 시 해당 DEX 파일을 복호화하는 과정에 대해서 글을 작성하겠다.
해당글을 읽기 전 [MobSF] 악성코드 자동탐지 및 분석 시스템 도구, [ApkTool] Android 앱 분석을 위한 설치 과정 2가지의 포스팅 글을 읽고 이번 [MobSF] Dex 파일 복호화 및 리패키징 글을 읽으면 이해가 잘 될 것이다.
이번 포스팅에서는 Sample.apk파일을 이용해서 사용할 예정이다. 해당 파일이 필요하신 분은 비밀댓글을 주시면 해당 파일을 제공해 드리겠습니다.
DEX파일 암호화 여부 확인 & 파일 복호화
MobSF를 통하여 해당 파일을 정적분석한 결과 classes.dex, kill-classes.dex, kill-classes2.dex 파일이 존재한다.
하지만 dex파일의 암호화 여부는 확인이 불가능하다.
ApkTool을 사용하여 해당 apk파일을 디컴파일 하여, 암호화가 되어있을 경우 복호화를 해줘야 하는 과정이 필요하다.
명령 프롬프트로 디컴파일할 apk파일의 폴더로 이동하여, 해당 명령어를 사용해서 sample.apk를 복호화해 준다.
apktool d -s sample.apk -o unpack
d : apktool의 디컴파일 하는 명령어. apk파일을 디딩하여 원시 리소스 및 소스코드를 추출한다.
s : apktool이 리소스를 디컴파일하는데 사용하는 특정 설정을 지정한다.
s 옵션을 사용하면 특정 리소스 ID가 변하지 않고 유지가 가능하다.
o unpack: 디컴파일된 파일을 출력할 디렉토리를 지정한다
unpack는 디코딩된 파일이 저장된 폴더 이름이다.
apktool을 사용하여 sample.apk 파일을 디컴파일 하면 다음과 같이 디컴파일이 된다.
여기서 classes.dex, kill-classes.dex, kill-classes2.dex 파일을 확인할 수 있고, kill-classes.dex를 복호화하는 과정이 필요하다.
파일 복호화
복호화 하는 과정은 CyberChef를 사용해서 파일을 복호화를 진행한다.
(해당 링크 : https://gchq.github.io/CyberChef/)
해당 kill-classes.dex파일을 업로드를 하게 되면 Input으로 위에 암호화가 되어있는 것을 확인할 수 있다.
Output으로 해당 첫 줄에 dex가 출력이 되면 복호화가 된 것이고 해당 파일을 저장하면 된다.
Kill-classes.dex 파일과 Kill-classes2.dex파일을 복호화를 진행하고 암호화가 된 Kill-classes.dex파일을 지우고 해당 파일들을 classes2.dex, classes3.dex 파일로 대체한다.
파일 리패키징
classes2.dex, classes3.dex 파일을 대체한 후 리패키징을 진행하면 된다.
마찬가지로 apktool을 사용하여 파일을 리패키징을 할 수 있으며, 해당 명령 프롬프트 명령어는 다음과 같다.
apktool b [디컴파일된 폴더] -o [리패키징할 apk 파일 이름]
b :해당 파일을 리패키징하기 위한 명령어이다.
o : 출력 apk이름을 설정하는 명령어이다.
APK 서명
해당 Android apk 파일을 디컴파일 - 복호화 - 리패키징하는 과정을 알아보았다.
하지만 해당 파일을 에뮬레이터에 사용하게 될 경우. 서명을 하지 않아서 무경설이 보장이 되지 않아, 오류가 발생하게 된다. Apk Signing을 하기 위해서는 keystore가 필요한데 keystore가 없다면 만들어줘야 한다.
keystore를 만들기 위해서는 java의 keytool을 사용하여 해당 키를 발급하고 해당 파일에 적용을 시켜줘야 한다.
keytool -genkey -v keystore [keystore 이름] -alias [alias이름] -keyalg [키알고리즘]
해당 명령어를 사용하여 keystore을 생성하고 해당 파일에 적용시켜 주면 에뮬레이터에서도 동작이 가능하다.
'Mobile' 카테고리의 다른 글
[ApkTool] Android 앱 분석을 위한 설치 과정 (2) | 2024.12.28 |
---|---|
[MobSF] 악성코드 자동 탐지 및 분석 시스템 도구 (1) | 2024.12.27 |