모바일 앱해킹(Android)/Insecure Bank

[Insecure Bank] 취약한 인증 메커니즘 취약점

무너박사 2024. 11. 23. 23:04

이번시간엔 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

PostLogin 실행 명령어


2. DoTransfer

DoTransfer 실행 명령어


3. ChangePassword

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>

긴 글 읽어주셔서 감사합니다!