아이폰에서 홈 버튼을 두 번 눌렀을 때 백그라운드로 전환된 앱 리스트들이 표시되는데,
이 때 앱 화면이 실시간으로 보여지는 것이 아니라, 백그라운드로 전환되기 직전 앱 화면을 이미지로 저장되어 보여주는 것이다.
따라서 금융권 앱과 같이 중요 정보를 입력 하는 앱이 백그라운드 상태로 전환될 때는 앱 화면이 보호되지 않고 스냅샷으로 저장되어 노출되는지 확인해야 한다.
샌드박스 내 스냅샷이 저장되는 경로를 알기 위해 DVIA 앱 입력 칸에 문자열을 입력하고 홈 버튼을 눌러 백그라운드 상태로 전환한다.
이런식으로 홈 버튼을 두 번 누르면 백그라운드로 전환된 앱 리스트가 표시되는데, 백그라운드로 전환되기 직전 화면이 이미지로 저장된다는 것을 알고 있어야 한다.
/private/var/mobile/Containers/Data/Application/[앱 디렉토리]/Library/Caches/Snapshots/com.highaltitudehacks.DVIAswiftv2 디렉토리 내에 .ktx 파일이 있는 것을 확인할 수 있다.
filza 파일 관리 앱을 실행한다.
찾았던 .ktx 파일을 이미지 뷰어로 열어본다.
백그라운드로 전환되기 직전의 앱 화면이 이미지 파일로 저장되어 있음을 알 수 있다.
입력칸에 카드 번호 등 개인 정보를 입력하고, 그 중 카드 번호를 복사한다.
pasteboard는 클립보드라고 생각하면 되는데, 일부 텍스트를 복사하면 pasteboard 버퍼에 저장되어 다른 앱에서 해당 버퍼에 저장된 텍스트를 가져올 수 있게 된다.
https://github.com/interference-security/frida-scripts/blob/master/iOS/pasteboard-monitoring.js
다른 포스팅에서 소개했던 ios frida 코드가 저장된 gitlab에서 pasteboard에 저장된 데이터를 확인하는 코드를 가져와서 사용했다.
frida로 해당 코드를 실행하면 pasteboard에 처음에 복사한 데이터가 저장된 것을 확인할 수 있다.
iOS에서는 텍스트 필드에 대해 Secure 설정이 되어 있지 않으면 입력되는 모든 값이 로그로 남게 된다.
keystroke 로그는 /var/mobile/Library/Keyboard/OO-dynamic.lm 디렉토리 내에 있다.
해당 디렉토리 안에 있는 모든 파일을 가져와서 열어보니 입력했던 기록이 남아 있는 것을 알 수 있다.
일부 앱에서 cookie 값을 cookies.binarycookies 파일에 저장된다고 한다.
해당 파일을 /Library/Cookies/ 디렉토리 내에서 찾아 쿠키 값을 얻는 것이 목표다.
해당 파일을 찾아 메모장으로 쿠키 파일 내부를 살펴보면 username/admin123, password/dvpassword 가 눈에 띈다.
바이너리 파일이라 보기가 불편하다면 python 패키지 중 binarycookiesreader를 설치하여 사용한다.
그러면 cookie 값이 가독성 좋게 txt 파일로 생성되어 볼 수 있다.
또는 Objection 이라는 툴을 사용하여 앱에 저장된 cookie 값을 확인해볼 수도 있다.
얻은 쿠키 계정 정보를 입력하면 성공적으로 쿠키 값을 얻었다는 것을 알 수 있다.