Android/InsecureBankv2

인시큐어뱅크 앱 취약점 - 백업 취약점

박연준 2023. 7. 3. 19:13

인시큐어뱅크 앱 취약점 - 백업 취약점

취약점 소개

안드로이드 시스템은 애플리케이션의 데이터를 백업할 수 있는 기능을 제공하는데 처음에는 구글 클라우드를 통한 백업만 가능했으나 4.0버전으로 업데이트 이후 사용자 로컬 PC에 데이터를 저장할 수 있게 되었다.

이를 로컬 백업 또는 전체 백업이라고 하는데, 사용자는 전체 백업을 통해 apk 파일, 데이터, 파일 등을 USB를 통해 사용자 PC에 저장할 수 있다.

 

클라우드 백업과 전체 백업의 차이는 다음과 같다.

클라우드 백업을 했을 때는 데이터가 클라우드에서 관리되므로 외부 유출이 적고 직접 관리하지 않아도 되어 다소 안전하지만 전체 백업은 사용자가 직접 백업을 진행하므로 데이터 유출에 대한 위험이 있다. 만약 이러한 과정에서 원치 않은 데이터나 파일이 백업된다면 보안 위협이 될 수 있다.

데이터를 강제로 백업했을 때 시스템에 위협이 될 수 있는 공격을 수행해볼 것이다.

취약점 진단

안드로이드는 AndroidManifest.xml 파일에 포함된 allowBackup 속성을 따라 백업하게 되는데, 값이 없거나 false로 설정되어 있다면 전체 백업이 불가하다.

이 값이 true일 때만 백업이 가능하고, 기본 값은 백업을 하지 않는 것이다.

먼저 인시큐어뱅크 앱의 AndroidManifest.xml 파일을 살펴본다.

 

다음과 같이 android.allowBackup이 true로 되어있는 것이 확인되었고 전체 백업이 가능하다.

adb backup 명령어

전체 백업은 안드로이드 SDK의 ADB 명령을 수행하여 할 수 있다.

기본적으로 adb backup 명령어로 수행하며, [-f], [-apk | -noapk], [-obb | -noobb], [-shared | -noshared], [-all] 옵션들을 결합하여 수행할 수 있다.

 

인시큐어뱅크 앱에 대해서만 백업을 수행해 볼 것이므로

adb backup com.android.insecurebankv2 -f insecurebankv2.ab 명령어로 인시큐어뱅크 앱에 대한 백업을 수행한다.

 

백업 명령을 수행하면 Now unlock your device and confirm the backup operation… 이라는 메세지가 뜨며 Nox 장치에 아래와 같은 입력창이 뜬다.

비밀번호를 설정하고 백업 버튼을 누르면 쉘에 위치했던 디렉터리에 백업 파일이 설정한 파일명대로 생성된다.

ABP 사용

insecurebankv2.ab 파일은 deflate 알고리즘으로 압축되어 일반적인 방법으로 압축 해제가 불가하므로 ABP(Android Backup Processor)를 사용한다.

ABE의 abp.jar가 있는 디렉터리로 이동한뒤 java -jar abp.jar unpack insecurebankv2.ab insecurebankv2.tar 명령을 수행하면 파일 정보가 나타나고 백업 시 설정했던 비밀번호를 입력해야한다.

 

아래 링크에서 abp.jar을 다운받을 수 있다.

https://sourceforge.net/projects/android-backup-processor/files/abp.jar/download

 

아래처럼 abp.jar을 이용해 insecurebankv2.tar 파일로 insecurebankv2.ab 파일을 unpack에 성공한 모습이다.

tar의 추출 결과를 확인해보면 _manifest 파일과 db 디렉터리의 데이터베이스 파일, sp 폴더의 공유 환경설정 파일이 포함되어 있다. 이 파일들은 현재 쉘에서 위치한 디렉터리의 apps 디렉터리에 추출되었다.

파일 변조

서버 ip 주소 변

파일을 변조한 후 insecurebankv2.list 파일을 활용하여 역순으로 복원한다.

즉, 변조한 파일을 포함하여 백업 파일을 복원하는 것이다.

 

먼저 star -c -v -f insecurebankv2_new.tar -no-dirslash list=insecurebankv2.list 명령어로 insecurebankv2.list에 있는 파일만 새로 생성할 tar 아카이브에 포함한다.

 

이후, insecurebankv2_new.tar 파일이 생성되고 이를 다시 deflate 알고리즘으로 압축하면 된다.

 

이 파일을 adb restore insecurebankv2_new.ab 명령어로 복원하고 애플리케이션 로그인을 수행하면 변조된 서버 ip로 접속하게 된다.

 

이렇게 되면 변조된 서버로 정보를 보내 사용자 정보, 암호화되지 않은 중요한 정보 등을 탈취당할 수도 있는 것이다.

대응 방안

안드로이드 전체 백업 기능을 사용하려면 AndroidManifest.xml파일의 allowBackup 속성을 true로 설정해야 하는데, 백업 기능을 제한하기 위해 false로 설정한다. 또는, allowBackup 속성을 삭제한다.

 

allowBackup 속성을 false로 설정하면 백업이 정상적으로 아루어졌을 때의 파일 크기가 10KB 라면 백업이 제한된 설정에서 백업을 시도했을 때의 insecurebankv2_false_ab 파일의 용량이 0KB로 나타낸다. 즉, 비어있는 파일로 백업에 실패한 것이다.

 

백업 취약점은 개발 과정에서 간단한 설정으로 공격을 예방할 수 있다. 하지만 사용자가 파일 저장소나 자신의 기기에 대해 이중 보안을 적용하는 것도 중요하다.