액티비티란 애플리케이션 실행 시 나타나는 화면이라고 생각하면 좋다.
안드로이드 모바일 앱은 " 메인 액티비티" 가 존재하고 메인 액티비티는 애플리케이션 시작 시 나타는 화면이다.
새로운 액티비티가 나오게되면 이전 실행되었던 액티비티는 잠시 멈추고 새로운 액티비티가 실행된다.
그리고 뒤로가기 실행 시 세컨 액티비티는 사라지고 메인 액티비티가 나오게된다.
해당 취약점은 권한이 없는 사용자가 특정 액티비티에 접근하여 권한 없이 특정 기능을 활성화 할 수 있는 취약점을 말한다.
-- 취약점 진단 방법 --
1. androidmanifest.xml 확인
<application android:allowBackup="true" android:debuggable="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:theme="@android:style/Theme.Holo.Light.DarkActionBar">
<activity android:label="@string/app_name" android:name="com.android.insecurebankv2.LoginActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<activity android:label="@string/title_activity_file_pref" android:name="com.android.insecurebankv2.FilePrefActivity" android:windowSoftInputMode="adjustNothing|stateVisible"/>
<activity android:label="@string/title_activity_do_login" android:name="com.android.insecurebankv2.DoLogin"/>
<activity android:exported="true" android:label="@string/title_activity_post_login" android:name="com.android.insecurebankv2.PostLogin"/>
<activity android:label="@string/title_activity_wrong_login" android:name="com.android.insecurebankv2.WrongLogin"/>
<activity android:exported="true" android:label="@string/title_activity_do_transfer" android:name="com.android.insecurebankv2.DoTransfer"/>
<activity android:exported="true" android:label="@string/title_activity_view_statement" android:name="com.android.insecurebankv2.ViewStatement"/>
- <activity> 내 선언되어 있는 액티비를 확인
- android:name 속성은 액티비티 이름, 속성 값은 "com.android.insecurebankv2.ChangePassword"와 같이 선언
2. ADB를 사용해 액티비티 취약점 확인
명령어 : adb shell am start -n com.android.insecurebankv2/.ChangePassword
- '-n' 명령어 뒤로 "패키지명/.액티비티 경로"를 입력
3. 드로저를 사용해 액티비티 취약점 확인
>> 노출된 액티비티 확인
명령어 : run app.activity.start --component com.android.insecurebankv2 com.android.insecurebankv2.ChangePassword
>> 액티비티 실행 확인
명령어 : run app.activity.start --component com.android.insecurebankv2 com.android.insecurebankv2.ChangePassword --extra string uname jack
user name에 "jack"이라는 stirng 값을 넣어서 실행 시키는 방법
4. 대응 방안
- exported="false"로 선언
- 특정 퍼미션을 주고 권한을 가진 사람만이 액티비티를 사용할 수 있도록 설정
'보안 공부 > 모바일 보안' 카테고리의 다른 글
안드로이드 취약점 진단(4) - 콘텐츠 프로바이더 취약점 (1) | 2024.02.21 |
---|---|
안드로이드 취약점 진단(2) - 취약한 인증 메커니즘(activity 취약점) (0) | 2024.02.18 |
안드로이드 취약점 진단(1) - 브로드캐스트 리시버 취약점 (0) | 2024.02.17 |
드로저(drozer) 사용법 - 취약점 분석(1) (1) | 2024.02.03 |
드로저(drozer) 사용법 - 앱 패키지 정보 확인 (0) | 2024.02.02 |