JDK 환경구성
자바의 구동환경은 JRE(자바 응용 프로그램을 구동시키는 환경), JDK(자바 응용 프로그램을 개발하는 환경) 두 가지가 있다. 안드로이드 앱을 개발하거나 분석하는 도구들은 JDK를 요구하므로 JDK 환경을 구성해야 한다.
JDK 7버전은 이클립스 ADT에서 사용할 파일이고, JDK 8 버전은 안드로이드 스튜디오에서 사용할 파일이므로 두 개의 버전 모두 설치한다.
JDK 7 버전을 설치하면 32 비트 폴더인 Program Files (x86) > Java 폴더에 JRE, JDK가 설치된다.
JDK 8 버전을 설치하면 64비트 폴더인 Program Files > Java 폴더에 JRE, JDK가 설치된다.
JDK를 설치하면 자동 업데이트 기능이 활성화되어 있는데, 업데이트 기능을 비활성화 한다. 일부 분석 도구는 특정 버전의 JDK를 요구하는데, 갑자기 JDK가 업데이트되면 분석 도구가 실행되지 않을 수 있다.
○ 제어판 > Java > 업데이트 > 자동 업데이트 확인 체크 해제 > 확인 안함
○ 환경 변수
- JAVA_HOME : C:\Program Files (x86)\Java\jdk1.7.0_79
- Path : %JAVA_HOME%\bin;
ADB 환경구성
현재 위치에서 안드로이드 분석 도구를 실행하려면 환경 변수에 등록해야 한다. 현재 adb가 설치된 경로를 복사하여 시스템 환경 변수(PATH)에 붙여 넣기 한다.
한글 제외, 경로명이 띄어쓰기가 있으면 더블 쿼터("") 지정
○ 내 컴퓨터 > 속성 > 고급 > 환경 변수 > 시스템 변수 > Path
○ 안드로이드 분석 도구 설치 경로 : D:\Mobile\android\Tools)
○ adb 설치 경로 : D:\Mobile\android\Tools\adb
apktool 환경구성
adb와 동일하게 apktool도 현재 위치에서 실행할 수 있도록 환경 변수를 등록한다.
○ apktool 설치 경로 : D:\Mobile\android\Tools\apktool
dex2jar 환경구성
adb와 동일하게 dex2jar도 현재 위치에서 실행할 수 있도록 환경 변수를 등록한다.
○ dex2jar 설치 경로 : D:\Mobile\android\Tools\dex2jar-0.0.9.15
jadx 환경구성
jadx 배포 사이트에서 다운로드 받은 파일의 경로로 이동하여 gradlew.bat 파일을 이용해 빌드한다.
○ jadx 빌드 : gradlew.bat dist
빌드가 모두 완료되면 build\jadx\bin 폴더에 커맨드 라인 환경의 도구와 GUI 도구가 빌드되어 생성된다.
안드로이드 스튜디오 환경구성
안드로이드 스튜디오를 설치를 진행하면 SDK를 자동으로 설치한다. 안드로이드 스튜디오를 이용해 앱을 개발 및 분석을 하다 보면 설치 용량이 증가하게 된다.
기본 디렉토리(C:\Users\Administrator\AppData\Local\Android\sdk)에 설치하면 C 드라이브 용량 부족 현상이 발생하게 되므로, 용량이 많은 드라이브로 변경하여 설치한다.
○ SDK 경로 : D:\Mobile\android\Tools\Android_Studio\Android\sdk
안드로이드 스튜디오를 실행하면 이전에 설정한 환경이 존재하는지 묻는 창이 출력된다. 현재 설치한 안드로이드 스튜디오는 깨끗한(Clean) 버전이므로 세 번째 라디오 박스에 체크한다.
안드로이드 스튜디오를 처음 실행하면 자동으로 SDK를 업데이트한다. 설치 시 지정한 SDK 경로로 변경하여 SDK를 업데이트한다.
SDK 업데이트가 완료되면 안드로이드 스튜디오를 실행할 수 있는 여러 가지 방법이 출력된다.
이클립스 ADT 환경구성
이클립스 ADT 버전을 실행하면 SDK 경로를 찾을 수 없다는 경고 메시지가 출력된다. Open Preferences 버튼을 클릭하여 안드로이드 스튜디오 설치 시 자동으로 설치된 SDK 경로를 지정하면 에러 메시지가 출력되지 않는다.
Send usage statistics to Google에 체크 박스를 해제하고, Proceed 버튼을 클릭한다.
SDK 경로를 지정하면 SDK 목록이 출력된다.
SDK 환경구성
SDK 경로로 이동하여 SDK Manager.exe 파일을 실행하면 설치된 SDK 목록과 설치할 수 있는 SDK 목록이 출력된다.
하단의 Show: Updates/New, Installed 항목에 체크되어 있는 것을 해제했다가 Updates/New 항목만 체크한다. Android 5.1.1 (API 22), Android 4.1.2 (API 16)를 다음과 같이 체크하고, Install packages 버튼을 눌러 설치한다.
⊙ 설치 AVD
- ndroid 5.1.1 (API 22)
- Android 4.1.2 (API 16)
⊙ 설치 SDK
- SDK Platform
- ARM EABI v7a System Image
- Sources for Android SDK
⊙ 프로그래밍
- ARM EABI v7a System Image
- Intel x86 Atom System Image
- Google APIs ARM EABI v7a System Image
- Android Support Library
- Google Play services
- Google USB Driver
※ AVD 버전이 높으면 높을 수록 높은 사양을 요구하므로 사양이 좋지 않은 컴퓨터는 Android 4.1.2를 실행하고, 사양이 좋은 컴퓨터는 Android 5.1.1을 실행
※ 처음으로 안드로이드를 설치하게 되면 Intel x86 Atom 관련된 이미지만 설치하게 된다. 아직까지 ARM 계열의 CPU를 사용하므로 추가로 설치해야 한다.
가상 단말기 환경구성
새로운 가상 단말기를 안드로이드 스튜디오에서 생성하고, 실행한다. 상단의 AVD Manager 아이콘을 클릭하면 가상 단말기를 생성, 삭제, 편집할 수 있는 화면이 출력된다.
하단의 Create Virtual Device 버튼을 클릭하여 가상 단말기를 생성한다.
○ Select Hardware : Phone(Nexus S)
○ System Image : Jelly Bean(API 16, armeabi-v6a, Android 4.1)
○ Android Virtual Device(AVD) : 디폴트 > Finish
실제 단말기 환경구성
모바일 앱 취약점 진단을 하다 보면 가상 단말기에서 앱이 실행되지 않을 때가 종종 있다. 이는 앱이 가상 단말기를 인식하거나 루팅 탐지 로직이 구현되어 있어 가상 단말기에서 실행되지 않는 것이다.
이럴 때, PC와 실제 단말기를 연결하여 실제 단말기에서 앱 취약점 진단을 해야 한다. 실제 단말기의 개발자 옵션을 활성화하여 켜진 상태로 유지와 USB 디버깅 옵션에 체크한다.
또한, 해당 단말기의 드라이버를 PC에 설치하고, 단말기와 PC 사이의 USB를 연결하면 이제부터 실제 단말기를 이용해 앱 취약점 진단이 가능하다.
개발자 옵션 활성화
○ 스마트폰 > 환경설정 > 개발자 옵션 활성화
- 켜진 상태로 유지, USB 디버깅 체크
※ 개발자 옵션이 활성화되지 않을 때
- 디바이스 정보 > 빌드 번호를 연속으로 누름
- 개발자 모드 단계가 높아지면서 개발자 옵션이 자동으로 활성화 됨
PC에 스마트폰 드라이버 설치
○ 스마트폰과 PC는 연결이 되지 않은 상태이어야 함
PC와 스마트폰을 USB로 연결
○ cmd > adb devices (PC에 연결된 단말기 정보)
adb devices 명령어를 입력하면 PC에 연결된 단말기 정보를 확인할 수 있다. 42f0d50dad6f93은 실제 단말기이고, emulator-5554는 가상 단말기이다.
모비즌 환경구성
모비즌(Mobizen)은 로컬 PC에서 현재 실제로 사용중인 스마트폰 단말기를 원격 제어하는 프로그램으로 로컬 PC에 스마트폰 단말기 화면이 나와 직접 마우스나 키보드로 스마트폰 단말기를 제어해 파일을 송수신할 수 있는 프로그램이다.
앱 취약점 진단 및 분석 시 가상 애뮬레이터로 하면 해당 앱에서 루팅 탐지 코드가 있으면 제대로 진단이 되지 않거나, 일부 기능이 애뮬레이터에서 실행되지 않는 문제가 있다.
그렇다고 실제 스마트폰 단말기를 직접 사람의 손으로 눌러서 실행하기에는 약간의 제한이 있어 모비즌을 이용하면 수월하게 진단할 수 있다.
드로저 환경구성
드로저는 agent.apk 파일을 안드로이드 단말기에 설치하고 실행하면 드로저 앱이 명령어를 전달 받고, 명령어를 실행하게 된다.
즉, 명령어를 전달 받은 서버와 명령어를 이행하는 클라이언트로 구성되어 있으므로 서버와 클라이언트 환경을 구성해야 한다.
공식 홈페이지에서 윈도우용 드로저 설치 파일을 다운로드 받고, setup.exe 파일을 로컬 PC에 설치한다. (환경 변수 등록 필요)
드로저 서버 구동에 필요한 agent.apk 파일을 adb를 이용하여 가상 단말기에 설치한다.
○ adb install agent.apk
○ 두 개 이상의 단말기가 나타나면서 오류가 발생할 때
- adb -s [설치할 단말기] install agent.apk
드로저에 명령어를 보내기 위해 단말기에 설치된 드로저 앱을 실행하고, 드로저 서버를 활성화 한다.
로컬 PC에서 입력한 명령어가 드로저 서버에게만 전달될 수 있도록 adb 명령어를 이용해 드로저 기본 포트인 31415로 포트포워딩을 한다.
drozer 명령어를 이용해 단말기에 설치된 드로저 서버에 연결한다. 정상적으로 연결되면 하단의 명령어를 입력할 수 있는 새로운 프롬프트가 출력된다.