중요 정보들이 평문으로 저장되어 있는 경우가 있다. 이런 것들에 대한 진단 방법에 대해 알아보자.
[내부 저장소]
/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 브라우저라는 도구를 설치해서 사용 중이다.
위 도구에 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' 카테고리의 다른 글
[인시큐어뱅크] 취약한 로깅 메커니즘 (0) | 2025.01.04 |
---|---|
[인시큐어뱅크] 하드코딩된 중요 정보 확인 실습 (0) | 2024.12.31 |