-->

[인시큐어뱅크] 안드로이드 백업 (Android Backup) 취약점

안드로이드 백업 취약점

안드로이드 시스템에서 제공하는 백업에는 클라우드 백업과 전체 백업 지원하는데, 전체백업의 경우 사용자가 단말기를 분실하는 등 저장된 중요 정보나 파일이 외부로 유출될 가능성이 있으므로 취약하다. 전체 백업 설정은 AndroidManifest.xml 파일에서 할 수 있다.

 

인시큐어뱅크(InsecureBankv2) 앱의 경우 AndroidManifrest.xml에 다음과 같이 allowBackup 값이 true로 설정되어있기 때문에 전체 백업이 가능하다.

 

 

 

진단을 수행하기 전, 사용자가 인시큐어뱅크 앱 로그인 후 중요 기능 중 하나인 계좌이체를 수행했다고 가정해보자.

 

 

 

Transfer 메뉴를 누른 후 From Account, To Account 작성, Get Accounts 를 누른다. 그리고 Amount를 작성한 후 Transfer를 누르면 이체가 성공했다는 알림이 뜬다. 

 

 

 

ViewStatement를 확인하면 9999999에서 555555555 계좌로 333333333를 이체했음을 확인할 수 있다.

 

 

서버에도 뜬다.

 

 

 

안드로이드 백업 취약점 진단

백업을 진행해보고 백업된 파일에서 중요 정보를 확인할 수 있는지 봐보기로 한다. 백업을 진행하기 위해선, 연결된 디바이스가 있는지 확인한 후 < adb backup [패키지명] -f [저장할파일명]  > 명령을 사용하면 된다.

 


> adb backup com.android.insecurebankv2 -f insecurebankv2_backup.ab 

 

 

 

그러면 아래와 같이 인시큐어뱅크앱에서 전체 백업을 진행할 것인지 여부를 묻는다. 패스워드를 입력한 후 전체백업을 진행한다.

 

 

 

그럼 아래와 같이 insecurebankv2_backup.ab 파일이 생긴 것을 볼 수 있다.

 

 

 

이 ab 파일을 다시 우리에게 익숙한 형태로 변경할 필요가 있는데 이 때  abe.jar을 사용한다. SDK에 포함되어 있을 줄 알았는데 찾아보니 없어서 android-backup-tookit 을 구글링해서 따로 다운받아주었다.

 


> java -jar abe.jar unpack [백업된 ab 파일] [저장할 tar 파일명]

 

 

 

생성된 tar 파일을 살펴보면, apps\com.android.insecurebankv2\sp 폴더에 3개의 xml 파일이 있다. 아래와 같이 com.android.insecurebankv2_preferences.xml 파일에서 평문의 서버포트와 IP 정보를 확인할 수 있다.

 

 

 

그리고 mySharedPreferences 파일에서 암호화된 계정을 확인할 수 있다. 이 중, 유저네임은 취약한 암호화 알고리즘은 base64를 사용하고 있으므로 복호화가 가능하다. 계좌이체 관련 정보는 확인할 수 없었다.

 

 

 

안드로이드 백업 취약점 진단 결과 및 대응방안

  • AndroidManifest.xml의 allowBackup 값이 true로 설정되어 있어 전체 백업이 가능했고 백업된 파일을 통해 특정 정보를 확인할 수 있었다.
  • 따라서 전체 백업을 제한하기 위해 allowBackup 값을 false로 변경하거나 백업된 파일을 통해 정보를 확인할 수 있더라도 평문값은 확인할 수 없도록 각 정보들에 안전한 암호화 알고리즘을 적용해야 한다.

 

댓글

Designed by JB FACTORY