본문 바로가기

모바일 앱 해킹

[DIVA] Insecure Data Storage - Part2 (안전하지 않은 데이터 저장) | 안드로이드 앱 취약점 실습

안전하지 않은 데이터 저장 취약점은 중요정보(패스워드, 거래정보, 계좌정보 등)가 내부 저장소에 평문으로 저장될 때 발생한다.

 

데이터가 암호화되지 않고 평문으로 저장된다면 단말기가 악성코드에 감염되거나, 공격자가 앱에 접근할 수 있는 권한을 획득했을 때 중요 정보들을 탈취할 수 있다.

 

아무 아이디와 패스워드를 입력하고 SAVE 버튼을 누르니 자격증명이 저장되었다는 메시지가 뜬다.

 

 

우선 adb shell로 안드로이드 쉘에 접근한 후 DIVA 앱 패키지 디렉터리로 이동한다. 안전하지 않은 정보 저장 취약점에서 주로 확인해봐야할 디렉터리는 

shared_prefs

databases 

이 두개다.

 

part1 에서는 shared_prefs 디렉터리에서 취약점을 발견했으니 이번에는 databases를 확인해보자

 

저장된 파일 목록을 보니까 마지막 수정 날짜가 오늘인 ids 파일을 발견했다. (ids 파일은 db 파일이다.)

 

adb pull로 databases에 저장된 파일들을 모두 pc로 가져올 수도 있지만

많은 데이터가 저장되어있는 게 아니기 때문에 sqlite3로 db 파일 안에 중요 정보가 평문으로 저장되어있는지 확인하겠다.

 

[참고]

sqlite3  

  • SQLite 데이터베이스를 관리하고 조작하기 위해 사용되는소프트웨어 라이브러리

여기서 사용할 명령어

.tables

  • 현재 데이터베이스에 있는 모든 테이블의 목록을 보여줌

.dump [table_name]

  • 데이터베이스 또는 특정 테이블의 모든 데이터를 SQL 형식으로 덤프

 

 

.table로 계정 정보가 저장되어있을 것같은 myuser 테이블을 확인했고,

myuser에 저장된 데이터를 한번에 보기 위해 .dump myuser 명령을 이용했다.

 

역시 예상대로 입력한 아이디와 패스워드가 평문으로 저장되어있는 것을 볼 수 있었다.

 

 

 

대응방안

  • 중요 정보는 암호화해서 저장한다.
  • 특히 패스워드는 복호화되지 않게 일방향 암호 알고리즘으로 암호화한다.