[안드로이드 취약점] Backup 취약점

2023. 10. 15. 18:20모바일 앱 해킹 및 보안/Android

취약점 설명: 사용자가 안드로이드 모바일 앱을 이용하면서 입력했던 중요정보(ID, PW, 주민등록번호 등)이 백업파일에 저장된다. 이떄, AndroidManifest.xml 파일에 android:allowBackup 속성이 "true"로 되어 있는 경우, 제 3자가 획득한 단말기에서 사용자의 중요정보, 인증정보 등을 획득할 수 있는 위험이 있게 된다.

 

취약점 진단 방법:

진단하고자 하는 모바일 단말기를 PC에 연결하여 CMD 프롬프트를 열어 아래 명령어를 실행한다.

adb backup -f test.ad com.android.test

adb backup -f test.ad com.android.test

옵션:

 -f test.ad : 저장할 백업 파일명(확장자는 반드시 ad로 지정함)

 com.android.test : 백업할 앱의 패키지명

 -apk [APK_파일명] : 앱의 전체를 백업함

 

위 명령어 실행 결과 단말기에 백업 유무 메시지와 비밀번호 입력 메시지가 출력된다.

여기서 비밀번호를 입력하지 않고 Back up my data 버튼을 클릭하면 암호화 된 백업 파일이 .ad 확장자로 로컬 PC에 저장된다. 텍스트 편집기로 백업 파일을 열면 암호화 되어 있기 때문에 정상적으로 보이지 않는다. 안드로이드 백업 추출 라이브러리(abe-all.jar)를 사용하여 백업 파일을 복호화하여 압축 파일로 저장한다.

java -jar abe-all.jar unpack test.ad test.tar

명령어 실행 결과 tar 형식의 압축 파일이 생성된 것을 확인하고 이 파일을 압축 해제하면 apps 디렉토리 하위에 db, sp, _manifest 디렉토리를 확인할 수 있다.

db 디렉토리 : 데이터베이스 테이블 정보

sp 디렉토리 : Shared Preferences 정보

_manifest 파일 : 앱 복구 시 필요한 정보

 

대응방안:

AndroidManifest.xml 파일에 구현되어 있는 <application> 태그 내의 android:allowBackup="true" 속성을 "false"로 변경하고, 프로젝트를 다시 빌드한다.