직접 연구하여 작성한 자료입니다. 공식 출처가 명시되지 않은 자료의 무단 복제, 사용을 금지합니다.
공격 기법은 학습용, 허가된 환경에서 실습 바랍니다. 실 운영망 대상 공격은 처벌받습니다. (정보통신망법 제48조 1항)
학습자료 apk파일은 https://github.com/colfax0483/Vulnerable_apk 에서 clone할 수 있습니다.
개요
동적분석을 실시하기 위해 앱을 설치하고 실행할 단말기 또는 에뮬레이터 등 분석환경을 준비한다. 실제 단말기를 사용하는 경우 루팅된 기기를 준비하며, 실습에서는 안드로이드 스튜디오를 이용한 에뮬레이터 단말 환경을 준비한다.
1. 동적 분석 환경 준비
안드로이드 스튜디오는 구글에서 제공하는 공식 홈페이지(https://developer.android.com/studio)에서 다운로드 및 설치할 수 있다.
설치 후에 그림과 같은 화면에서 ‘Device Manager’, ‘Create device’를 순서대로 접근 후 단말기 사양 선택 후 에뮬레이터를 실행하면 된다. 초기 실행 시 리소스 다운로드를 위해 시간이 소요된다.
에뮬레이터가 실행되면 앱 분석을 위한 준비는 모두 마쳤다. 하지만 그 전에 안드로이드 파일 시스템에서 확인할 수 있는 특징들을 살펴본다. 안드로이드는 리눅스 커널을 사용하기 때문에 커널, 파일시스템 등 유사한 점이 있다. 안드로이드와 리눅스 모두 계층적 디렉토리 구조를 가지며, 파일 시스템의 최상위 경로는 루트(’/’)이다. 에뮬레이터가 실행 중이라면 안드로이드 스튜디오 우측 하단의 ‘Device File Explorer’에서 파일시스템을 직접 살펴볼 수 있다. 실제 단말기를 연결한 경우에도 연결된 단말을 선택하는 드롭다운 메뉴에서 선택하면 동일하게 파일 시스템을 볼 수 있다.
2. 안드로이드 디버그 브릿지(Android Debug Bridge, ADB)
ADB는 안드로이드 단말과 컴퓨터 간의 통신을 도와주는 명령줄 도구이다. ADB를 사용하면 안드로이드 단말과 컴퓨터 간의 파일 복사, 설치, 디버깅, 명령 실행 등을 수행할 수 있다. ADB는 안드로이드 개발자들에게 앱 및 시스템 수준의 작업을 수행하기위한 도구로 제공되었지만, 앱 취약점 진단 시에도 동일한 기능을 사용한다.
ADB는 안드로이드 개발 도구(SDK)에 포함되어 있어 안드로이드 스튜디오를 설치한 경우 함께 설치되며, 안드로이드 공식 홈페이지에서 별도로 설치할 수도 있다. ADB는 명령어를 전송하는 클라이언트, 기기에서 명령을 실행하는 데몬(adbd), 클라이언트와 데몬 간의 통신을 관리하는 서버로 구성되어 있다. 앱 진단 관점에서 클라이언트는 진단자의 PC가 되며, 데몬은 안드로이드 단말에서 실행되는 프로세스, 서버는 안드로이드 단말에서 동작하여 클라이언트와 데몬 사이의 통신을 지원하는 백그라운드 프로세스이다.
사용법은 PC에서 명령프롬프트에서 ‘adb’ 명령어 이후 사용하고자 하는 명령을 인자를 실행한다. 각 명령어별로 옵션 인자를 추가로 사용하고자 할 경우 공식 문서(https://developer.android.com/studio/command-line/adb)를 참고한다.
명령 | 설명 |
adb kill-server | adb 서버 종료(동작중인 경우) |
adb start-server | adb 서버 시작 |
adb devices | 연결된 단말 목록 |
adb push [PC 파일 경로] [단말기 경로] | 로컬 파일을 단말기에 복사 |
adb pull [단말기 경로] [PC 경로] | 단말기 파일을 PC에 복사 |
adb install [test.apk] | 연결된 단말에 apk 파일 설치 |
adb shell | 단말기 쉘 실행 |
루팅 시 개발자모드를 활성화하는 과정이 포함되어 있지만 단말기 초기화 등 과정으로 비활성화 되어 있는 경우가 있다. 다음의 과정으로 활성화할 수 있다.
설정 → 휴대전화 정보 → 소프트웨어 정보 → 빌드번호 반복 터치 → “개발자 모드가 활성화되었습니다” 확인 → 설정 메뉴 가장 하단에서 ‘개발자 옵션’ 확인
USB로 연결하여 다양한 단말기의 정보를 확인하기 위해 ‘USB 디버깅’ 옵션을 활성화한다.
실습 앱을 단말기에 설치하는 실습을 진행한다. 먼저 단말기 연결을 다음 명령으로 확인한다.
PS C:\Users\ADMIN > adb devices List of devices attached emulator-5554 device |
PC 쉘의 작업 경로를 실습 앱이 위치한 폴더로 이동한 후 ‘adb install’ 명령을 사용하여 앱을 설치하였다. ‘-r’ 옵션은 이미 설치되어 있는 경우라도 재설치하는 하는 옵션이다. 명령 실행 후 성공 메시지를 확인한다.
PS C:\Users\ADMIN > adb install -r .\DivaApplication.apk Performing Streamed Install Success |
또한, ‘adb shell’을 통해 안드로이드 쉘에 접근하고 직접 명령을 실행시킬 수 있다. 리눅스 기반으로 동작하기 때문에 많은 명령어가 호환된다.
aab 파일 설치하기
블로그의 다른 포스트(https://gomguk.tistory.com/100)에 작성하였다.
'Security > Mobile' 카테고리의 다른 글
[안드로이드 모의해킹] Magisk 루팅 원리와 기능 (1) | 2023.12.20 |
---|---|
[안드로이드 모의해킹] Zygote와 Zygisk (0) | 2023.12.13 |
[안드로이드 모의해킹] 정적분석과 동적분석 (0) | 2023.11.28 |
[안드로이드 모의해킹] 로그캣 뷰어 - lognote 소개 (0) | 2023.11.25 |
[AOSP] Ubuntu에서 안드로이드 13 빌드하기 3 (0) | 2023.09.30 |