보안개구리

[DVIA-v2 실습] 1. Local Data Storage - Plist 본문

앱 진단(iOS)/DVIA 실습

[DVIA-v2 실습] 1. Local Data Storage - Plist

보안개구리 2024. 8. 16. 13:07

[개요]

 Local Data Storage애플리케이션에서 데이터를 로컬 디바이스에 저장하는 기술이나 방법을 의미합니다.

 데이터가 클라우드 서버와 같은 원격 위치가 아닌, 사용자의 디바이스에 직접 저장된다는 특징이 있는데 일반적으로 오프라인 상태에서도 데이터에 접근하거나 애플리케이션을 사용할 수 있도록 하기 위해 사용됩니다.

 

 iOS 애플리케이션은 임시 데이터와 영구 데이터를 저장하기 위해 로컬 시스템과 상호작용을 하는데 이때 애플리케이션이 중요한 정보를 안전하지 않은 상태(평문)로 저장하게 되면 위험이 발생합니다.

 이번 실습에서는 데이터 저장 방식 중 하나인 Plist 파일을 이용한 저장 방식을 다룹니다.

 

 Plist(Property List)란 앱 데이터 및 설정 정보를 저장하는데 사용되는 XML 파일로 저장된 정보는 암호화가 되지 않기 때문에 중요한 정보를 저장해서는 안됩니다.

 각 앱의 번들 디렉터리 경로(/var/containers/Bundle/Application/$uuid/Documents/)에 이동 시 info.plist 파일이 존재하는데 해당 파일은 버전 정보, 실행 가능한 바이너리 이름, 지원되는 iOS 버전등이 저장되어 있습니다.

 plist 파일은 일반 텍스트 에디터로 확인하기 어렵워 Plist Editor같은 특정 에디터를 사용하여 확인이 가능합니다.

 

[진단]

1) Local Data Storage내 Plist 메뉴로 이동합니다.

 

2) Plist 메뉴에 접속하면 Username과 Password를 입력할 수 있고 Save 버튼을 클릭시 입력한 값들이 저장됩니다. 이번 실습에 목표는 디렉터리 내 저장된 plist를 확인하는 것입니다.

3) 3utools를 이용하여 DVIA 앱의 데이터 디렉터리로 이동합니다. 데이터 디렉터리는 앱 내부 데이터를 저장하는 공간으로, 경로는 /var/mobile/Containers/Data/Application/$uuid/Documents입니다.

 해당 경로로 이동 시 userInfo.plist 파일이 존재합니다. (빠른 실습을 위해 데이터 디렉터리 내 userInfo.plist만 확인했지만, 실제 진단 시 번들 디렉터리도 확인해야 합니다.)

 

4) 3utools를 통해 접속이 불가한 상황이라면 iphone에 설치한 Filza혹은 Filezila를통해서 해당 디렉터리내 존재하는 userInfo.plist 파일을 찾을 수 있습니다. Diva 내 Documents 디렉터리 경로로 이동 시 userInfo.plist 파일이 존재함을 확인할 수 있습니다.

5) userInfo.plist 파일을 열어보면 우리가 입력했던 Username과 Password가 평문으로 저장되어 있는 것을 확인할 수 있습니다.