0. 들어가기 앞서...
https://github.com/dineshshetty/Android-InsecureBankv2
GitHub - dineshshetty/Android-InsecureBankv2: Vulnerable Android application for developers and security enthusiasts to learn ab
Vulnerable Android application for developers and security enthusiasts to learn about Android insecurities - dineshshetty/Android-InsecureBankv2
github.com
사용설명서를 잘 읽고 시작해야 한다.
그리고 생각보다 준비할 것들이 많다.
설치가 제일 어렵다.
1.InsecureBankv2 사용법 (Server 실행)
2.apk 디 컴파일링
3.drozer 사용법
4.Python 버전 맞추기 (가상)
5. 기도
1. 취약한 액티비티 탐색
Drozer를 사용하여 액티비티를 실행하여 민감한 데이터를 유출할 수 있는지 확인 가능하다.

dz> run app.activity.info -a com.android.insecurebankv2
Exported 된 액티비티를 확인하는 하는 과정이다.
해석하자면..
Package: com.android.insecurebankv2 -> 앱의 패키지 이름을 나타냄
com.android.insecurebankv2.LoginActivity -> 앱의 로그인 화면을 담당하는 액티비티
:Permission: null -> 별도의 접근 제한이 없다.
com.android.insecurebankv2.PostLogin -> 로그인 후의 처리를 담당하는 액티비티
:Permission: null -> 별도의 접근 제한이 없다.
com.android.insecurebankv2.DoTransfer -> 송금 기능을 수행하는 액티비티
:Permission: null -> 별도의 접근 제한이 없다.
com.android.insecurebankv2.ViewStatement -> 계좌 내역 조회를 위한 액티비티
:Permission: null -> 별도의 접근 제한이 없다.
com.android.insecurebankv2.ChangePassword -> 비밀번호 변경 기능 제공하는 액티비티
:Permission: null -> 별도의 접근 제한이 없다.
요약하자면 중요한 역할들을 하는 기능들이 아무런 권한제한이 없다.
1-1. Exported?
Exported란 해당 컴포넌트(액티비티, 서비스, 브로드캐스트, 리시버 등) 들이 앱 외부(다른 앱이나 시스템)에 의해 호출될 수 있는지를 나타내는 속성이다.
Exported가 true인 경우:
- 해당 액티비티나 컴포넌트는 외부 애플리케이션 또는 시스템에서 접근하여 실행할 수 있다.
Exported가 false인 경우:
- 해당 컴포넌트는 앱 내부에서만 접근하도록 제한한다.
1-2. 그럼 다 false로 하면 되는 거 아님?
보안이 중요한 액티비티 (로그인, 금융, 비번변경 등) --> False 이 바람직 하지만...
외부에서 호출해야 하는 액티비티 (공유, 브라우저, 웹뷰) -->True로 해도 큰 문제는 없어 보인다.
android:permission 같이 권한을 설정하여 대비하는 게 제일 좋은 방법인 거 같다.
2. 특정 액티비티 실행 (Change password)
로그인 후의 액티비티를 담당하는 PostLogin을 실행시켜 보자.

run app.activity.start --component com.android.insecurebankv2 com.android.insecurebankv2.PostLogin
휴대폰 화면을 보면...

로그인 후에 화면이 보인다.
3. 취약한 서비스 분석
Change Password 기능을 이용해 보자.
이용하기 앞서 apk 파일을 디컴파일링 시켜 소스코드를 봐야 한다.

변수를 확인할 수 있다.
저 변수를 이용해 보도록 하자.

dz> run app.activity.start --component com.android.insecurebankv2 com.android.insecurebankv2.ChangePassword --extra string uname jack
앱 패키지명 -> com.android.insecurebankv2
실행할 액티비티명 -> com.android.insecurebankv2.ChangePassword
전달하려는 데이터 타입 -> --extra
데이터 타입 -> string
키값 (uname) -> jack(기존 user 명)
이런 식으로 액티비티를 강제로 실행하고 데이터 삽입을 하면

패스워드가 바뀐 걸 확인할 수 있다.
로그인도 정상적으로 작동한다.
'Mobile_security > Drozer_Android' 카테고리의 다른 글
| 4.Drozer 실습 (Insecurebankv2) - Broadcast Receiver (1) | 2025.02.10 |
|---|---|
| 3.Drozer 실습 (Insecurebankv2) - Content Provider (0) | 2025.02.08 |
| 1.Drozer 기초 (이론 + 실습) (0) | 2025.02.01 |