Activity란?
안드로이드 4대 컴포넌트(Activity, Service, BroadCast Receiver, Content Provider) 중 하나로 사용자와 상호작용을 하는 UI를 제공하는 역할을 합니다. (안드로이드 폰에서 특정 애플리케이션을 실행하면 보이는 화면)
테스트 환경(소스코드)
모바일 앱 취약점 진단 시 Activity를 통해 루팅 탐지 우회, 인증 우회 등의 취약점이 발생되게 되는데, 주로 해당 취약점의 대응 방안은 “Android.Mainfest.xml” 파일에서 “Activty”를 외부에서 호출할 수 없게 “android:exported=”true” 설정을 하라고 나오지만, 찾아보니 일반 사용자의 호출은 막을 수 있지만, 루팅 된 단말기에서의 호출은 막지 못하는 것으로 추정됨.
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools">
....
<activity android:name=".Login" android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".L1.Activity_Auth_L1" android:exported="false"/>
....
Activity 화면 강제 호출 취약점
여기에서 첫 UI 호출 액티비티(MainActivity)는 "Login” Activity로 설정하였으며, 해당 Activity에서는 “exported="false”로 설정 시 에러가 발생되며, 무조건 “true”로 설정되어 있기 때문에, 일반, 관리자 권한 둘 다 호출이 가능하다.
- 명령어: adb shell am start –n com.gompo.mtc/.Login
일반 사용자 권한으로 “android:exported=false”로 설정되어 있는 액티비티 호출 시 에러가 발생되는 것을 확인 가능하다.
- 명령어: adb shell am start –n com.gompo.mtc/.L1.Activity_Auth_L1
루팅 된 단말에서 관리자 권한으로 Activity 호출 시 호출되는 것을 확인 가능하다 (adb shell에서 관리자 권한 호출한 상태에서 진행)
- 명령어: am start –n com.gompo.mtc/.L1.Activity_Auth_L1
“AndroidMainfest.xml” 파일에서 외부에서 Activity 호출을 막는 것도 하나의 방법이긴 하지만 페이지 별 서버단에서 원하는 데이터가 없으면 접근을 못하도록 막는 방안이 필요할 거 같으며, 이 부분은 공부를 해봐야 될 거 같습니다.
'Hacking > Mobile' 카테고리의 다른 글
[Android] 분할 APK 설치 방법 (0) | 2025.05.15 |
---|---|
[Android] 안드로이드 캡처 우회 (0) | 2025.05.15 |
[Android] 프로그램 무결성 검증 (API 28 이상 버전) (2) | 2024.10.31 |