중요 정보들이 평문으로 저장되어 있는 경우가 있다. 이런 것들에 대한 진단 방법에 대해 알아보자.
[내부 저장소]
/data/data/<패키지명>/ | - 앱별 데이터가 저장되는 경로이다 |
/data/data/shared_prefs/ | - 앱의 설정 정보가 저장되는 XML 파일이다. - 자동 로그인 정보, 세션 토큰 등 민감한 정보가 평문으로 저장될 수 있다. |
/data/data/databases/ | - SQLite 데이터베이스 파일이 저장되는 디렉터리이다 - 데이터베이스 내 테이블에서 민감 정보(사용자 정보, 쿠키, 인증 토큰 등)가 저장될 수 있다 - 도구를 통해 열면 된다. |
/data/data/cache/ | - 앱 실행 중 생성된 캐시 파일이다 - 요청 응답, 이미지, JSON 등 불필요한 정보가 평문으로 남아 있을 가능성이 있다 |
/data/data/files/ | - 앱에서 저장한 파일이 존재한다 - 로그 파일이나 다운로드된 민감한 파일 등을 저장하는 경우가 있을 수 있다 |
/data/data/lib/ | - 네이티브 라이브러리 파일이 저장된다 - 리버싱이 필요할 수 있다 |
[/data/data/<패키지명>/]

패키지 폴더 안에 들어가면 이렇게 구성되어 있다.
[/data/data/<패키지명>/cache/]


cache 폴더 안에는 별다른 것을 확인할 수 없었다.
[/data/data/<패키지명>/databases/]

데이터베이스 폴더에서는 위와 같은 파일들을 볼 수 있다. 이 파일들을 adb pull 명령으로 다운받아 도구로 열어서 분석하면 된다.

adb pull [다운받을 파일 경로] [위치시킬 경로]
위의 명령어를 사용하면 된다. 필자는 nox를 사용하고 있기 때문에 nox_adb를 사용했다.
이제 다운 받은 파일을 도구로 열어서 분석하면 된다.

필자는 DB 브라우저라는 도구를 설치해서 사용 중이다.
DB Browser for SQLite
DB Browser for SQLite DB Browser for SQLite (DB4S) is a high quality, visual, open source tool designed for people who want to create, search, and edit SQLite or SQLCipher database files. DB4S gives a familiar spreadsheet-like interface on the database in
sqlitebrowser.org


위 도구에 mydb 파일을 끌어도 놓으면 된다.

그럼 위와 같이 테이블과 그 구조를 확인할 수 있다.

위와 같이 데이터들도 확인해볼 수 있다.
[/data/data/<패키지명>/shared_prefs]

위는 shared_prefs 폴더 내부 모습이다. 하나씩 `cat` 명령을 통해서 확인하든지 pull해서 가져와서 분석해도 된다.

위는 cat 명령으로 확인한 모습이다. base64로 인코딩된 것으로 보이는데, 디코딩했을 때 password가 평문으로 그대로 노출된다면 취약점으로 분류할 수 있다.
[외부 저장소]
외부 저장소는 sd card를 의미한다. 위치는 `/sdcard`에서도 보이고, `/mnt/sdcard`에서도 보인다. 심볼릭 링크로 되어 있는 것이 보이는데, 실제 마운트 지점은 `/storage/self/primary`인 것을 알 수 있다.

username: jack
password: Jack@123$
username: dinesh
password: Dinesh@123$
위의 계정으로 로그인하면

위와 같은 화면을 볼 수 있다. `Transfer` 기능을 쓴 후 외부 저장소를 확인해보면

위와 같이 처음에는 없던 Statements_jack.html 파일이 생성되었고, 여기에 입금 정보가 그대로 저장되는 것을 확인할 수 있다.
[대응 방안]
- 중요 정보 암호화 저장
- 민감 정보는 캐시 지양
'안드로이드 해킹 > InsecureBankv2' 카테고리의 다른 글
[인시큐어뱅크] 취약한 로깅 메커니즘 (6) | 2025.01.04 |
---|---|
[인시큐어뱅크] 하드코딩된 중요 정보 확인 실습 (0) | 2024.12.31 |