/ POSTS

android-0x02

Android 동적 분석

안녕하세요 chaem 입니다.

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

Android를 동적 분석하는 방법은 다양하지만 이번 포스팅에서는 FRIDA이용하는 방법에 대해 알아보겠습니다.

FRIDA

FRIDA를 이용한 동적 분석은 Android 앱을 후킹하여 분석하는 방법입니다.

분석 환경은 아래와 같습니다.

OS : Window7

Tools : FRIDA, frida-server, nox, adb, python, pip

FRIDA를 사용하기 위해서는 python 및 pip가 설치되어있어야 하며,
아래와 같이 cmd에서 “pip install frida” 명령어를 입력하여 FRIDA를 쉽게 설치할 수 있습니다.

[그림 1-1]

FRIDA 설치 후 하기 링크에서 Android architecure에 맞는 frida-server를 다운로드합니다.

https://github.com/frida/frida/releases

[그림 1-2]
다운로드한 frida-server를 Android 기기에 설치하고 실행 권한 부여 후 실행시켜줍니다.
[그림 1-3]
아래 링크의 예제 앱을 이용해서 동적 분석을 진행하겠습니다.
https://github.com/OWASP/owasp-mstg/tree/master/Crackmes/Android
[그림 1-3-1]

앱을 실행하면 루팅을 탐지하게 되고, ok 버튼을 누르면 앱이 종료되는 것을 확인할 수 있습니다.
[그림 1-4]
앱이 종료되지 않도록 후킹 포인트를 찾기 위해 MainActivity를 확인해보겠습니다.
MainActivity를 살펴보면 ok 버튼을 누르면 System.exit(0)를 호출하는 것을 확인할 수 있습니다.
[그림 1-5]
따라서 System.exit 함수가 호출될 때 해당 함수를 후킹해보도록 하겠습니다.
아래 python 코드를 이용해 후킹을 시도하면 ok 버튼을 눌러도 앱이 종료되지 않는 것을 확인할 수 있습니다.
[그림 1-6]
이후 특정 문자열을 입력하여 인증하는 절차가 나옵니다. 아래와 같이 잘못된 문자열을 입력할 시 재시도하라는 메시지가 출력되고 있습니다.
[그림 1-7]
특정 문자열 확인을 위해 아래 verify 함수를 확인해보면 인증 로직인 if(a.a(obj))을 확인할 수 있습니다.
[그림 1-8]
sg.vantagepoint.uncrackable1.a class에서는 입력된 문자열과 암호를 복호화한 값과 비교하여 결과를 리턴하는 것을 확인할 수 있습니다.
[그림 1-9]
마지막으로 sg.vantagepoint.a.a class의 a함수를 확인해보면 최종으로 복호화된 문자열을 리턴하는 것을 확인할 수 있습니다.
[그림 1-10]
분석한 결과를 토대로 암호화된 특정 문자열을 복호화하여 출력하는 python 코드를 아래와 같이 작성해보았습니다.
[그림 1-11]
코드를 실행한 결과 복호화된 문자열을 확인할 수 있었고, 해당 문자열을 입력한 결과 성공이라는 메시지가 출력되는 것을 확인했습니다.
[그림 1-12]
지금까지 Android 동적 분석에 대해 알아보았고, 다음 포스팅에서는 SSL Pinning 우회 방법에 대해 알아보도록 하겠습니다.

감사합니다.