Self-Improvement

안드로이드 백업 취약점 본문

AOS

안드로이드 백업 취약점

JoGeun 2018. 10. 22. 22:33

안드로이드 백업 취약점

안드로이드 시스템에서는 기본적으로 설치된 애플리케이션의 데이터를 백업하고 복구를 제공한다. 백업에는 클라우드 백업과, 백업 데이터를 사용자 PC에 저장할 수 있게 해주는 전체 백업을 지원한다. 클라우드 백업은 안드로이드 시스템에서 동기화 주기를 설정함으로써 자동으로 애플리케이션 데이터나 설정 등을 구글 클라우드와 동기화하도록 설정한다. 사용자는 직접 데이터를 관리하지 않지만 구글 클라우드에서 비교적 안전하게 관리해주기에 외부로부터의 유출이 적다는 장점이 있다. 하지만 전체 백업의 경우에는 저장된 파일이 외부로 유출될 가능성이 있으므로 보안에 취약하다. 전체 백업은 AndroidManifest.xml 파일에서 설정을 할 수있다.

 

AndroidManifest.xml에서 allowBackup=true로 되어있어서 전체 백업이 가능한 상태이다.


adb을 통하여 Insecurebankv2의 전체 백업을 실시한다.

adb bakcup com.android.insecurebankv2 f insecurebank.ab


핸드폰 화면에서도 전체 백업을 물어볼게 되면서 암호를 입력할 수도 있게 된다. 여기서는 암호를 입력없이 진행을 해보았다.


데이터 백업을 눌러주게되면 insecurebank.ab 라는 백업 파일이 만들어지며 용량은 3510k이다.


다음 insecurebank.ab 백업 파일은 윈도우에서 tar 아카이브 파일 insecurebankv2.tar로 변환을 해준다.

java -jar abe.jar unpack insecurebankv2.ab insecurebankv2.tar

리눅스에서 insecurebankv2.tartar 명령어를 통하여 압축을 해제해 준다.


압축해제하고 SharePreferences.xml 파일들을 확인해보면 정보들을 쉽게 볼 수 있는 취약점을 확인할 수 있다.




대응방안

애플리케이션에 데이터를 저장해야 하는 애플리케이션의 경우에는 데이터를 암호화하고 저장하여 유출되더라도 어떠한 정보인지 알아볼 수 없게 해야 하며 AndroidManifest.xml 파일의 allowBackup 속성을 false로 수정하여 백업 기능을 제한할 수 도 있다.


adb backup을 다시 수행해보면 insecurebank2.ab의 파일의 용량이 47k로 전체 백업이 안되었다는 걸 확인할 수 있다.



'AOS' 카테고리의 다른 글

인자 전달값 조작  (0) 2018.10.22
안전하지 않은 HTTP 통신  (0) 2018.10.22
애플리케이션 디버깅 취약점  (0) 2018.10.22
취약한 웹 뷰 구현  (0) 2018.10.22
안전하지 않은 콘텐츠 프로바이더 취약점  (0) 2018.10.22