본문 바로가기

모바일 앱 해킹

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

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

 

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

 

 

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

 

 

설치된 앱 패키지들 저장된 /data/data로 이동하여 DIVA 패키지 이름(jakhar.aseem.diva)을 확인 후 해당 디렉터리로 이동한다. ls -al 명령으로 저장된 파일 목록을 확인할 수 있다.

 

그 중 설정 파일이 저장되는 shared_prefs 디렉터리로 이동해본다. shared_prefs 파일은 앱 실행동안 필요한 데이터들이 저장되는 곳이다. 여기에 자동 로그인 시 사용하는 아이디, 패스워드 정보도 저장된다. 

 

 

shared_prefs로 이동하고 저장된 파일 목록을 보니 xml 파일이 하나 존재하는 것을 확인했다. 정보들은 xml 파일 안에 텍스트 형식으로 저장되니 cat 명령어로 바로 볼 수 있다.

 

 

아까 입력한 계정 정보가 평문으로 저장되어 있다. 중요정보인 패스워드가 암호화되지 않고 평문으로 저장되어 있으니 안전하지 않은 데이터 저장 취약점이라고 판단할 수 있다.

 

 

apk 파일을 디컴파일해서 소스코드를 확인해보자.

 

 

InsecureDataStorage1Activity 파일의 소스코드를 보면 아이디와 패스워드를 보낼 때 문자열 그대로 전송하고 있는 것을 볼 수 있다.

 

 

대응방안

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