본문 바로가기
정보보안/안드로이드해킹

안드로이드 모의해킹) 안드로이드 백업 취약점

by _miiiiiin_zzang_ 2020. 9. 10.

아이스크림 샌드위치 버전으로 업데이트되면서 백업 데이터를 사용자 PC 저장할 있게 해주는 로컬 백업을 지원하게 되었음

전체 백업의 경우 안드로이드 장치를 PC 연결하여 수동으로 백업 과정을 진행

애플리케이션 설치 파일과 저장소에 저장된 파일을 사용자 PC 저장하게 되는데 경우 사용자가 데이터를 관리할 있지만 저장된 파일이 유출된 가능도 있으므로 보안상 취약

 

  1. 백업 파일 추출하는 방법
    • 안드로이드 시스템에서 백업하는 방법을 알아야
      • 해당 앱의 AndroidManifest.xml 포함된 allowBackup 속성을 따름
      • 값이 아예 설정되어 있지 않거나 false 되어있는 경우 추출하려는 패키지의 데이터가 추출되지 않으며 true 경우에만 백업 가능
      • true 되어 있으면 전체 백업 수행이 가능한 것으로 판단
    • 전체 백업과 파일 추출
      • 별도의 프로그램 설치 없이 adb 명령으로 진행 가능
      • adb backup 패키지명 -f 저장파일명.ab
      • backup my data 클릭
      • 생성 완료
      • 뭔데? 왜없는데?
      • ㅡㅡ 0byte
      • 어디가 문제였을까 돌아가보자
      • 문제 였던 같다.
      • -apk (패키지) 추가하면 됩니다.
      • 차례대로
        • ANDROID BACKUP : 파일 포맷 식별자 부분, 안드로이드 백업
        • 5 : 백업 형식의 버전
        • 1 : 압축에 대한 플래그값, 1=압축되어 있는 경우
        • NONE : 암호화 여부, 현재는 암호화되지 않은 상태, 전체 백업을 수행하는 과정에서 실행되는 액티비티의 암호 입력 부분을 의미
        • 난독화 부분 : 해당 부분을 암호화하는데 사용된 알고리즘, 여기선 저따고로 보이는지 모르겠음
    • 백업 파일은 압축된 형식의 tar 파일로 정보를 담은 매니페스트 파일과 백업 데이터가 포함
    • 파일 자체는 deflate 알고리즘으로 압축되어 있어 일반적인 압축 해제 방법으로는 해제가 불가능
    • ABE 응용프로그램 사용
      • 한번에 될리가 없지여
      • 에잇 시불탱 안해시부럴
      • 된건가
      • 생김!
      • 변환된 파일 목록을 확인하기 전에 아카이브에 포함된 리스트를 별도로 저장 필요
      • 복원 과정에서 처음 리스트 그대로 인식하도록 되어있기 때문에 별도로 리스틀르 텍스트로 저장하고 복원 과정을 진행하며 처음 리스트 그대로 아카이브를 만드는 사용

 

    • 파일 추출 결과 있음
    • 추출한 결과는 기본적으로 manifest 파일이 포함되어 있으며 db 폴더에는 데베, sp 폴더에는 공유 환경 설정 파일이 포함됨
  1. 취약점 확인
    • 안드로이드 시스템은 보안을 위해 애플리케이션이 각각의 샌드박스에서 실행되도록 독립성을 보장
    • 백업 기능을 이용하면 루팅되어 있지 않더라도 특정 애플리케이션의 데이터나 저장소에 저장된 파일이 접근이 가능
      • 공격에 사용할 만한 정보들이 있는지 확인, 서버 접속 정보 찾아냄
    • 이번 공격의 시나리오는 서버 주소를 변경하여 임의의 서버에 접속하도록 변조된 정보를 담은 파일을 복원시킴
    • 이걸
    • 이걸로 변경
    • 원래 시스템에 변조된 파일을 포함하여 복원시키기 위해 백업했던 형태대로 파일을 다시 변환해야
      • tar 아카이브 파일 생성
      • 백업 파일 추출 과정에서 생성한 list 파일
      • 파일을 기준으로 tar 파일 생성
      • 아나
    • 여기까지 진행 하겠다. 후에 다시 생각난다면 이어서 진행을 해보겠다.
  2. 취약점 대응 방안
    • 애플리케이션에 데이터를 저장해야 하는 애플리케이션의 경우, 데이터를 ㅏㅇㅁ호화하고 저장하여 유출되더라도 어떤 정보인지 알아볼 없게 해야함
    • 데이터 백업을 허용하지 않도록 설정하여 외부에 데이터를 저장하지 않도록 설정해야함
    • allowBackup 속성을 false 하거나 삭제해야함

 

댓글