본문 바로가기
4. 모바일 앱 취약점 진단

동적 디버깅 하는 방법

by Robert8478 2024. 6. 19.

개요

동적 디버깅이란 어떤 로직이 호출되는지 해당 부분만 파악하기 위해 앱 구동 시 어떠한 로직이 동작하는지 하나씩 확인할 수 있는 방법으로 루팅 탐지 등 다양한 로직을 분석할 수 있는 방법이다.

진행

동적 디버깅을 하기 위해서는 아래의 작업을 먼저 진행해야 한다.

  1. AndroidManifest.xml(서비스, 구성요소, 액세스 권한 등 정보 포함)에서 <application android:debuggable="true"> 설정 활성화

  2. getprop | grep ro.debuggable 값이 1로 변경되면 디버깅 모드 활성화, 해당 값이 1이면 Manifest 설정 값에 관계없이 debug 모드 진입

그 후 JEB 상단 벌레모양 디버거를 실행, 프로세스에 진단할 패키지 명 검색 후 더블 클릭한다.

루팅 탐지 등 로직에서 디버깅을 하고싶은 경우 해당 코드 부분의 Smali 파트로 이동해서 Ctrl + B 혹은 디버거 - 토글 브레이크 포인트 버튼을 클릭하고 앱의 해당 기능을 실행한다. 그러면 VM/ 지역 변수 부분에 여러 값들이 오가는 것을 볼 수 있다.

여기서 변조를 하고 싶을 경우, 예를 들어 System Directory의 su라는 파일을 검사하고 있는 경우 이 값을 fake로 변경한 후 위쪽 툴바의 '한단계 들어가기' 버튼을 클릭하며 값을 보낸다. 계속 전송하다 magisk가 나오면 이를 또 fake로 변경 후 넘겨주는 방식으로 진행하게 된다.