다음으로는 모바일을 분석하던 도중 제일 첫 번째로 하는 것은
분석하고자 하는 APK 파일을 Decompile 하여 DEX 파일을 분석하는 것이다.
하지만 요즘 대부분의 모바일 보안 솔루션은 서비스하는 애플리케이션의 DEX를
동적으로 로딩을 하거나 암호화된 파일을 런타임 중에 암호화된 DEX를 복호화를 하기 때문에
APK 파일을 Decompile 툴을 이용해서 분석을 할 때 보이지 않아 한계가 존재한다.
따라서 APK를 정적으로 분석할때 가장 먼저 하는 것이 AndroidManifest 파일을 먼저 분석하고
애플리케이션이 어떻게 동작하는지 이해를 해야한다.
AndroidManifest 파일에 대해서 조금 짧게 설명하자면 다음과 같다.
AndroidManifest 파일에는 앱의 기본 설정 및 특성을 정의하는 중요한 파일이다.
따라서 AndroidManifest 파일에는 앱의 구성 요소, 권한, 서비스, 액티비티, 리시버 등과
관련된 정보가 포함되어 있다.
이런 정보를 가지고 분석하고자 하는 애플리케이션의 동작을 이해하는 것이다.
두 번째로 좋은 포인트는 바로 아래의 모습처럼 모바일 보안 솔루션에서 알려주는 탐지 문구이다.
다음 예시를 보자.
이름만 들어도 대부분이 알만한 애플리케이션을 루팅 된 단말기에서 실행하면 다음과 같은 문구를 볼 수 있다.
(물론 아래의 문구는 다른 단어로 대체한 것이다.)
따라서 많은 모의 해커들이 애플리케이션을 분석할 때 이런 탐지 문구가 보인다면
Decompile 툴을 이용하여 탐지 문구를 찾아서 해당 포인트부터 분석을 시작할 것이다.
이렇게 노출된다면 해당 애플리케이션을 분석하는 것은 시간문제이다.
따라서 많은 보안 솔루션들은 위의 탐지 로직의 문자열을 Decompile 툴에서 문자열 검색을 못하도록
난독화를 진행한다던지 암호화된 파일을 런타임 중 복호화하여 로딩하는
Dynamic Dex Loading 기법을 사용해 Decompile 툴에서 노출이 되지 않게 조치를 하고 있다.
아래의 예시가 암호화된 DEX 파일의 일부이다.
이는 한 모바일 보안 솔루션에서 Dynamic Dex Loading 기법으로 사용하고 있는 암호화된 DEX 파일이다.
이렇게 암호화된 것을 확인할 수 있다.
하지만 이를 런타임 중 확인을 해보면 다음과 같이 복호화 과정을 통해 원본의 파일을 얻을 수 있다.
또 다른 모바일 보안 솔루션에서는 assets 폴더 아래에 암호화된 파일을 활용하여 애플리케이션을 실행한다.
하지만 위의 작업을 통해 원본의 파일을 획득하기 위해 조금이라도 고민을 해보면 정말 귀찮은 작업이다.
모바일 보안 솔루션 마다 적용되어 있는 기법도 다르고, 실컷 분석하고 있는데
애플리케이션이 업데이트가 된다던지.. 정말 많은 노력과 시간이 필요하다.
따라서 이런 과정을 쉽게 하기 위해 해당 애플리케이션에서 실행하고 있는 모든 DEX를 빠르게 덤프하여
Java단을 분석하고자 Utility 탭에 Dex Dump라는 버튼을 만들었다.
물론 그 유명한 Frida를 사용하면 되지만 Frida를 사용하여 DEX 파일을 덤프 할 시
대부분의 모바일 보안 솔루션에서는 이를 탐지하고 탐지 문구와 함께 분석하고 있는 애플리케이션을
종료시킬 것이다.
따라서 Frida는 사용하지 않고 해당 기능을 구현해 보았다.
DEX 파일을 덤프 하기 위해 Dex Dump를 클릭하면 현재 앱에서 동작하고 있는 애플리케이션을
다음과 같이 보여준다.
이렇게 현재 실행 중인 애플리케이션 목록을 확인한 후 분석하고자 하는 애플리케이션의
PID값을 입력한 후 Dump 버튼을 클릭하면 모든 DEX가 덤프 된다.
하지만, 모든 DEX를 덤프 하기 때문에 시간이 조금 걸리는 건지어디서 시간이 걸리는지
작성한 코드를 다시 살펴봐야 하지만 일단은 기능적인 측면에서는 잘 동작한다.
위에 보이는 모든 애플리케이션에서 잘 작동하였고 결과는 아래처럼 패키지명 아래에 저장된다.
끝으로 개인 연구 및 개발 목적이지
포스팅 내용 중 보이는 애플리케이션에 대한 악의적인 목적은 전혀 없다
'모바일 분석 도구' 카테고리의 다른 글
08. Home - Utility - Memory Dump (0) | 2024.01.22 |
---|---|
06. Home - Utility - System Property (0) | 2024.01.17 |
05. Tab - Package (2) | 2024.01.17 |
04. Menu-Proxy (0) | 2023.12.23 |
03. Menu-Connect (0) | 2023.12.22 |