1. AndroLabServer 구동
(1) PowerShell을 띄우고 아래 명령어를 수행한다.
cd ~\\Desktop\\InsecureBankv2\\AndroLabServer
(2) 그리고 다음의 명령어를 수행함으로써 AndroLabServer를 구동한다.
python .\\app.py
(3) 서버가 정상적으로 구동하면 아래의 메시지가 출력된다.
The server is hosted on port: 8888
2. InsecureBankv2 앱 구동 및 AndroidManifest.xml 파일 확인
(1) 안드로이드 스튜디오를 실행시킨 후, 안드로이드 가상 디바이스 (AVD)를 띄운다. 안드로이드 스튜디오에서 InsecureBankv2 프로젝트를 빌드한다. AVD상에 InsecureBankv2 앱을 설치한 후 구동시킨다.
(2) 안드로이드 스튜디오 InsecureBankv2 프로젝트의 AndroidManifest.xml 파일에서 PostLogin 액티비티와 DoTransfer 액티비티와 관련된 설정들 중 다음의 설정을 확인한다.
android:exported=“true”
3. adb를 이용한 취약한 인증 메커니즘 분석
(1) InsecureBankv2 앱에 로그인 하지 않은 상태에서, 다음의 명령어를 PowerShell에서 실행하여 InsecureBankv2 앱의 PostLogin 액티비티를 호출한다.
adb shell am start com.android.insecurebankv2/com.android.insecurebankv2.PostLogin
(2) (1)번 명령어 수행 후 InsecureBankv2 앱에 나타나는 화면을 캡처한다.
(3) InsecureBankv2 앱에 로그인 하지 않은 상태에서, 다음의 명령어를 PowerShell에서 실행하여 InsecureBankv2 앱의 DoTransfer 액티비티를 호출한다.
adb shell am start com.android.insecurebankv2/com.android.insecurebankv2.DoTransfer
(4) (3)번 명령어 수행 후 InsecureBankv2 앱에 나타나는 화면을 캡처한다.
4. drozer를 이용한 취약한 인증 메커니즘 분석 → 추후 실습
(1) PowerShell에서 다음의 명령어를 실행하여, 안드로이드 가상 디바이스 (AVD) 에 drozer 앱을 설치한다.
adb install drozer 앱의 이름 (완전한 경로 포함)
(2) 안드로이드 가상 디바이스 (AVD) 에 설치된 drozer 앱을 구동하고 내장된 drozer 서버를 활성화 시킨다.
(3) 안드로이드 가상 디바이스 (AVD) 에서 구동하는 drozer 서버의 포트(31415)와 PC의 로컬 포트(31415)를 연결하는 다음의 명령어를 PowerShell상에서 수행한다.
adb forward tcp:31415 tcp:31415
(4) drozer 앱에 내장된 서버에 콘솔 모드로 접속하는 다음의 명령어를 PowerShell상에서 수행한다.
drozer console connect
(5) 다음의 명령어를 drozer 프롬프트( dz>)상에서 수행함으로써 InsecureBankv2 앱의 액티비티들의 권한 관련 취약점을 파악한다.
run app.activity.info -a com.android.insecurebankv2
(6) drozer 앱을 AVD의 화면상에 띄운다. 그리고 다음의 명령어를 drozer 프롬프트( dz>)상에서 수행함으로써 InsecureBankv2 앱의 PostLogin 액티비티를 호출한다.
run app.activity.start --component com.android.insecurebankv2 com.android.insecurebankv2.PostLogin
(7) (6)번 명령어 수행 후 InsecureBankv2 앱에 나타나는 화면이 Login 후의 화면인지 확인하다.
(8) drozer 앱을 AVD의 화면상에 띄운다. 그리고 다음의 명령어를 drozer 프롬프트( dz>)상에서 수행함으로써 InsecureBankv2 앱의 DoTransfer 액티비티를 호출한다.
run app.activity.start --component com.android.insecurebankv2 com.android.insecurebankv2.DoTransfer
(9) (8)번 명령어 수행 후 InsecureBankv2 앱에 나타나는 화면이 Transfer 화면인지 확인하다.
5. 취약한 인증 메커니즘 방어
(1) 안드로이드 스튜디오 InsecureBankv2 프로젝트의 AndroidManifest.xml 파일에서 PostLogin 액티비티와 DoTransfer 액티비티와 관련된 android:exported=“true” 설정을 android:exported=“false”로 변경한 후 InsecureBankv2 프로젝트를 빌드하고 새롭게 빌드한다.
(2)InsecureBankv2 앱을 AVD 상에서 설치 후 구동한다. 여기서 주의할 점은 루트 권한이 부여되지 않은 상태에서 android:exported=“false”로 변경해야 한다는 것이다.
- Root 권한인 상태에서 할 경우 false로 변경하는 것이 방어책으로 무의미하다
(3) InsecureBankv2 앱에 로그인 하지 않은 상태에서, 다음의 명령어를 PowerShell에서 실행하여 InsecureBankv2 앱의 PostLogin 액티비티를 호출한다. → Permission Denial Error
adb shell am start com.android.insecurebankv2/com.android.insecurebankv2.PostLogin
(4) InsecureBankv2 앱에 로그인 하지 않은 상태에서, 다음의 명령어를 PowerShell에서 실행하여 InsecureBankv2 앱의 DoTransfer 액티비티를 호출한다. → Permission Denial Error
adb shell am start com.android.insecurebankv2/com.android.insecurebankv2.DoTransfer