system/app/기본 파일
data/app/file_name/base.apk
data/data/file_name/cache
data/data/file_name/database
shared_prefs는 애플리케이션이 기본 데이터 유형의 키-값 쌍을 저장하고 검색할 수 있도록 하는 Android API이다. 사용자 기본 설정, 설정 또는 간단한 애플리케이션 상태와 같이 세션 전반에 걸쳐 유지하려는 소량의 데이터를 저장하는 데 주로 사용한다.
세션 상태나 로그인 정보를 저장해서 자동 로그인에 사용하며 직접 제거하지 않는 이상, 앱을 종료하거나 단말기를 종료해도 shared_prefs에 저장된 데이터는 삭제되지 않는다.
기기가 루팅된 경우 shared_prefs에 저장된 데이터를 읽을 수 있다. 보안을 강화하려면 안전한 암호화 알고리즘을 사용하여 키와 값을 모두 암호화하는 'EncryptedSharedPreferences'를 사용해야 한다.
안드로이드는 sqlite로 내장형 DB를 사용한다.
경로는 /data/data/package_name/databases 이다.
wireshark
adb logcat grep -i
/mnt/sdcard/[평문 data]
만약에 암호화 되어 있다면 암호화 키가 하드코딩되어 디컴파일 코드에서 노출되는지 확인해야 한다.
외부 저장소에 저장되는 것이 왜 위험할까?
외부 저장소는 모두가 접근 가능한 저장소이다. 따라서 악성앱으로 인한 악성코드 감염, SD카드 탈취 등의 악성 행위로 외부 저장소에 접근할 경우, 평문으로 저장된 데이터에 접근할 수 있다.