[목차]
1. Android Backup vulnerability (안드로이드 백업 취약점)
- 취약점 설명
- 진단 방법
- ABE (Android Backup Extractor) 활용
- 대응방안
[Android Backup vulnerability]
1. 취약점 설명
AndroidManifest.xml 파일의
android:allowBackup 속성 값이 'true'로
설정되어 있는 경우, 단말기 백업 시 중요정보 및
인증정보를 노출하게 되는데
단말기를 분실하는 경우
사용자의 중요정보가 제3자에게
노출될 수 있는 취약점
2. 진단 방법
(1) AndroidManifest.xml 설정 확인
allowBackup 값이 true로 되어 있다.
(2) 데이터 추출 실습
먼저 데이터가 저장되도록
앱을 열어 로그인 등 기능 사용 후 진행
ㄱ. 데이터 백업 파일 생성
adb backup -f [백업 파일명] [패키지명]
C:> adb backup -f bank.ad com.android.insecurebankv2 #ad = android data
위 명령어를 입력하면
녹스에서 백업 진행 창이 뜨는데
비번 설정 없이 데이터 백업 선택한 뒤
백업 완료 후, adb 명령어를 실행한 경로에
백업 파일이 생성되고
해당 파일을 살펴보면
압축된 형식의 tar 파일로
백업 정보를 담은
manifest.xml 파일과
백업 데이터가 포함되는데
일반적인 방법으로는
파일을 해제가 불가능하고
보통
zlip이라는 범용 압축 라이브러리를
사용하던가 ABE(Android Backup Extractor)를
사용해 해제하는데 본 실습에서는 ABE를
사용한다.
(3) 백업 파일을 tar 아카이브 파일로 변환
abe-all.jar 프로그램은 아래 경로에서 받을 수 있고
https://sourceforge.net/projects/android-backup-processor/
다음 명령어를 통해
tar 파일로 변환이 가능하며
java -jar abe-all.jar unpack bank.ad bank.tar
다음과 같이 tar 파일이 생성된다.
tar 파일 압축을 해제하면
기본적으로 다음과 같은
백업 파일 및 디렉터리 확인이 가능한데
db는 데이터베이스
sp(shared preference)는 공유환경설정
그리고 _manifest 파일이다.
sp 디렉터리에 들어가 보면
xml 설정 파일 확인이 가능하며
이 중, mysharedManifest.xml
파일을 살펴보면
로그인 정보가 암호화되어 저장되어 있고
Username은 Base64 방식이기 때문에
쉽게 복호화가 가능,
Password의 경우는 복호화 힌트를
특정 소스코드에서 확인할 수 있는데
해당 부분은 다음 실습인
'로컬 암호화 취약점'에서 확인해 본다.
다시 돌아와 백업 디렉터리 내
preferences.xml 파일을 확인해 보면
기동 중인 서버의 IP와 포트 정보
확인이 가능한데
해당 주소를
공격자의 주소로 변조 후 restore 하면
기존의 서버가 아닌 공격자의 서버로
앱 연결이 가능하다.
3. 대응 방안
안드로이드 시스템은 보안을 위해
각각의 애플리케이션(이하 앱)이
각각의 sandbox에서 실행되어
독립성을 보장하고 있기 때문에
앱끼리 접근이 불가능한데
이러한 백업 기능을 악용하면
루팅 되어 있지 않은 단말기를 통해서도
특정 앱에 저장된 데이터나 파일에
접근이 가능하다.
그러므로 데이터 백업을 허용하지 않도록
AndroidManifest.xml 파일의
android:allowBackup 값을
false로 설정하고
데이터를 앱에 저장해야 하는 경우
유출되어도 정보 확인이 불가능하도록
강도 높은 암호화 시스템을 사용해
저장되도록 한다.
'APP 진단 > Android' 카테고리의 다른 글
9. 안드로이드 앱 진단 실습 (7) - 항목별 진단 실습 4 : 취약한 웹 뷰 구현 (0) | 2022.07.03 |
---|---|
8. 안드로이드 앱 진단 실습 (6) - 항목별 진단 실습 3 : 로컬 암호화 이슈 (1) | 2022.07.02 |
6. 안드로이드 앱 진단 실습 (4) - 항목별 진단 실습 1 : 취약한 브로드캐스트 리시버 (0) | 2022.06.24 |
5. 안드로이드 앱 진단 실습 (3) 진단 환경 구성 3 (0) | 2022.06.23 |
4. 안드로이드 앱 진단 실습 (2) 진단 환경 구성 2 (Frida) (2) | 2022.06.21 |