개요
동적 디버깅이란 어떤 로직이 호출되는지 해당 부분만 파악하기 위해 앱 구동 시 어떠한 로직이 동작하는지 하나씩 확인할 수 있는 방법으로 루팅 탐지 등 다양한 로직을 분석할 수 있는 방법이다.
진행
동적 디버깅을 하기 위해서는 아래의 작업을 먼저 진행해야 한다.
- 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로 변경 후 넘겨주는 방식으로 진행하게 된다.
'4. 모바일 앱 취약점 진단' 카테고리의 다른 글
[Android, iOS] 3.6. 디버깅을 통한 정보 노출 (0) | 2024.06.19 |
---|---|
[Android, iOS] 3.2. 중요 정보 평문 저장 (0) | 2024.06.19 |
[Android, iOS] 3.1. 백그라운드 화면 보호 취약점 (0) | 2024.06.19 |
[Android, iOS] Burp Suite 프록시 도구로 패킷 잡는법 + SSL Pinning (1) | 2024.06.19 |
QR코드에 악성코드 주입하는 방법 (0) | 2023.12.27 |