이번시간엔 Insecure Bank 를 통하여 '취약한 인증 메커니즘' 취약점에 대하여 알아보겠습니다.
*취약한 인증 메커니즘 이란?
> 정상적인 인증 절차를 우회하여 잘못된 인증으로 접근권한을 취득하는 취약점으로써, OWASP는 Mobile Top 10 2014-M5에 해당하는 취약점으로 다음과 같은 경우에 해당합니다.
- 적절하지 않은 앱 퍼미션 설정 여부
- 서비스 권한 상승 행위에 대한 통제 여부
- 기능에 대한 제한 또는 우회 금지 여부
- 불필요하거나 사용하지 않는 액티비티 제거 여부
- 인텐트 사용에 대한 안정성 여부
- 마스터 키 취약점 대응 여부
1. 취약점 탐색
> 우선 Insecure Bank 앱을 Jadx 로 디컴파일링 한 후 AndroidManifest.xml 코드를 보게 되면 표시된 부분처럼 anroid:exported = "true" 속성으로 설정되어있는 액티비티들을 볼 수 있습니다. 이게 이번시간 저희의 취약점 포인트가 되겠습니다. 아무런 권한설정없이 저런식으로 설정을 해놓게 되면 핸드폰에 악성앱이 깔렸을때 악성앱이 저 설정을 통해 이 액티비티들을 무단으로 동작시킬 수 있게됩니다.
2. 공격 결과
> nox_adb 를 통해 앱 외부에서 표시된 액티비티들을 실행해보겠습니다.
*공격에 사용된 명령어*
> nox_adb shell am start [앱이 설치된 주소]/[호출하고 싶은 패키지 주소]
1. PostLogin
2. DoTransfer
3. ChangePassword
3. 대응방안
1. android:exported="false" 설정
> 특별한 경우가 아니라면 액티비티 속성은 android:exported="false" 로 설정해야합니다.
2. 커스텀 권한 설정
> 다른 앱에서 액티비티를 호출할때 특정권한이 있어야만 해당 컴포넌트를 호출할 수 있도록 합니다.
DoTransfer 의 xml 소스코드를 예를 들어보자면 아래와 같은 식으로 커스텀 권한 설정을 해야합니다.
<activity
android:name="com.android.insecurebankv2.DoTransfer"
android:exported="true"
android:permission="com.android.insecurebankv2.PERMISSION_ACCESS_DOTRANSFER">
</activity>
긴 글 읽어주셔서 감사합니다!
'모바일 앱해킹(Android) > Insecure Bank' 카테고리의 다른 글
[Insecure Bank] 루팅 탐지 및 우회 (0) | 2024.12.02 |
---|---|
[Insecure Bank] 액티비티 컴포넌트 취약점 (0) | 2024.11.29 |
[Insecure Bank] 로컬 암호화 이슈 취약점 (0) | 2024.11.26 |
[Insecure Bank] 브로드캐스트 리시버 결함 취약점 (0) | 2024.11.18 |
[Insecure Bank] 앱 모의해킹용 어플 '인시큐어 뱅크' 설치방법(feat. Miniconda) (0) | 2024.11.10 |