1 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 앱의 액티비티들의 권한 관련 취약점을 파악한다. 특히 ChangePassword 액티비티의 권한이 없는 것을 확인한다.
run app.activity.info -a com.android.insecurebankv2
(6) 다음의 명령어를 drozer 프롬프트( dz>)상에서 실행한 후 2.(3)번의 화면과 같은 화면이 나오는지 확인한다.
run app.activity.start --component com.android.insecurebankv2 com.android.insecurebankv2.ChangePassword
(7) ChangePassword.java 파일의 내용중 OnCreate 메소드를 분석하면 패스워드 변경시 사용자 이름이 화면에 나타나는 부분을 파악할 수 있다.
(8) drozer 앱을 구동한 후에 아래 명령어를 drozer 프롬프트( dz>)상에서 실행한다.
run app.activity.start --component com.android.insecurebankv2 com.android.insecurebankv2.ChangePassword --extra string uname jack
(9) (8)번 명령어 실행 후, username 이 jack으로 표기된 ChangePassword 화면이 뜨는 것을 확인한 후 해당 화면을 캡처한다, 사용자 jack의 패스워드를 Test!123$로 변경한다.
(10) 패스워드가 변경된 것을 확인한 후, InsecureBankv2 앱을 다시 구동하여 username에 jack을 password에 Test!123$를 입력하면 로그인 되는 것을 확인한다.