1. 분석 포인트
1.1. 앱 패키지 내부

/data/data/[앱 패키지 명] # 하위 모든 파일 검토
# 보통 아래와 같은 경로를 많이 검토한다.
# shared_prefs : xml 파일들로 앱의 환경설정 정보 및 인증 정보 저장 (ex : 토큰 정보)
# cache : 임시 데이터 (ex : json 응답 결과)
# database : 사용자 데이터 (ex : 채팅 기록)
1.1.1. shared_prefs

tar -cvf [앱 이름].tar [압축대상]
# tar -cvf diva.tar shared_prefs
mv diva.tar /sdcard
# PC로 파일을 이동할 때 sdcard에 있어야 권한 등의 문제가 없어 편리함

adb pull [PC로 가져올 파일의 위치]
# adb pull /sdcard/diva.tar


XML 파일 내용 확인 시, 민감정보가 출력되는 모습을 확인할 수 있습니다.
1.1.2. Databases



※ 위의 대표적인 예시 2개 이외에도 단말기 내에 민감정보가 있을 수 있는 장소는 많이 있습니다.
2. 유용한? 분석 기법
2.1. 최근 수정된 파일 검색

앱에서 중요정보와 관련된 값을 입력한 뒤

ls -alR
ls -R 옵션을 이용해 앱 패키지 내부 파일 중 가장 최근에 수정된 파일을 확인합니다.

이후 해당 파일을 살펴보면
입력했던 중요정보가 저장된 모습을 확인할 수 있습니다.
3. 공격 사례 및 조치 방법
루팅된 기기에 설치된 악성 앱이 다른(피해) 앱의 내부 저장소에 접근하여 평문으로 노출돼 있는 중요정보를 탈취할 수 있습니다.
ex : 세션 값, 비밀번호, 주민등록번호 > 인증 관련 값
따라서 중요정보는 최소한으로 저장해야 하며, 저장 시에는 암호화를 필수로 적용해야 합니다.
그리고 서버에 요청할 때, 앱 내부에서 복호화 한 뒤 서버에 요청하는 방식으로 로직을 구성해야 하며,
복호화 키는 Keystore에 저장하여 앱 외부에서 직접 접근할 수 없도록 격리된 장소에 보관해야 합니다.
또한, Keystore를 통해 복호화된 평문은 메모리에 반환되므로, 해당 값 사용 후 메모리를 덮어쓰는 로직 구현이 필요합니다.
(※ Android Keystore는 앱 외부에서 접근할 수 없는 안전한 영역에 암호화 키를 보관하고, 암호화·복호화 연산을 안전하게 처리해주는 시스템입니다.)
'Mobile App > Android' 카테고리의 다른 글
| [Android] 프로그램 무결성 검증 (0) | 2025.05.22 |
|---|---|
| [Android] 앱 소스코드 내 운영정보 노출 (0) | 2025.05.20 |
| [Android] 소스코드 난독화 적용 여부 (0) | 2025.05.20 |
| [Android] 앱 트래픽 Proxy(Brup) 연결하기 (0) | 2025.05.15 |
| [Android] 디버그 로그 내 중요정보 노출 (0) | 2025.05.12 |