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

[인시큐어뱅크] 안드로이드 앱 내/외부 저장소 진단

by jwcs 2025. 1. 4.
728x90

중요 정보들이 평문으로 저장되어 있는 경우가 있다. 이런 것들에 대한 진단 방법에 대해 알아보자.

 

[내부 저장소]

/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/<패키지명>/

패키지 폴더 안에 들어가면 이렇게 구성되어 있다.

 

[/data/data/<패키지명>/cache/]

 

/data/data/<패키지명>/cache/
/data/data/<패키지명>/code_cache/

cache 폴더 안에는 별다른 것을 확인할 수 없었다.

 

[/data/data/<패키지명>/databases/]

 

/data/data/<패키지명>/databases/

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

adb pull 명령어 사용

adb pull [다운받을 파일 경로] [위치시킬 경로]

위의 명령어를 사용하면 된다. 필자는 nox를 사용하고 있기 때문에 nox_adb를 사용했다.

이제 다운 받은 파일을 도구로 열어서 분석하면 된다.

db browser

필자는 DB 브라우저라는 도구를 설치해서 사용 중이다.

https://sqlitebrowser.org/

 

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

DB Browser
database

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

DB Browser 데이터베이스 구조

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

데이터베이스 데이터 탐색

위와 같이 데이터들도 확인해볼 수 있다.

 

[/data/data/<패키지명>/shared_prefs]

shared_prefs

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

 

cat mySharedPreferences.xml

위는 cat 명령으로 확인한 모습이다. base64로 인코딩된 것으로 보이는데, 디코딩했을 때 password가 평문으로 그대로 노출된다면 취약점으로 분류할 수 있다.

 

[외부 저장소]

외부 저장소는 sd card를 의미한다. 위치는 `/sdcard`에서도 보이고, `/mnt/sdcard`에서도 보인다. 심볼릭 링크로 되어 있는 것이 보이는데, 실제 마운트 지점은 `/storage/self/primary`인 것을 알 수 있다.

sdcard

 

username: jack
password: Jack@123$

username: dinesh
password: Dinesh@123$

위의 계정으로 로그인하면

 

로그인 후

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

Transfer 기능 사용 전/후

위와 같이 처음에는 없던 Statements_jack.html 파일이 생성되었고, 여기에 입금 정보가 그대로 저장되는 것을 확인할 수 있다.

 

[대응 방안]

  • 중요 정보 암호화 저장
  • 민감 정보는 캐시 지양
728x90
반응형