본문 바로가기

IOS 모의해킹

8. Side Channel Data Leakage

1. Side Channel Data Leakage 개요

- 사이드 채널 데이터 유출 취약점은 애플리케이션이 중요한 데이터를 실수로 유출할 때 발생

- 디바이스 로그, Pasteboard, 앱 스크린샷, Keystroke 로깅, HTTP 쿠키에 사용되는 보안되지 않은 API 등과 같은 다양한 종류가 존재

  • Keystroke : 입력 키를 누르는 행위로, 키보드 또는 이와 유사한 입력 장치 키를 누르는 것
  • Pasteboard :  애플리케이션 내에서 또는 애플리케이션 간에 데이터를 교환하기 위한 표준화된 메커니즘

2. 실습

2-1. Device Logs

- 개발자는 애플리케이션 디버깅동안 로그를 추가하지만, 배포할 때 로그를 제거하는 것을 잊어서 발생하는 취약점

 

Sign Up을 클릭 시 앱이 종료되면서 기능 사용 불가

 

Realtime Log 기능을 이용해 로그 정보들을 실시간으로 확인 가능

 

export를 이용해 로그를 빼옴

 

입력한 값은 로그에 남지 않음

 

Sign Up 버튼을 눌렀을 때 입력한 값들이 로그에 출력이 되는지 확인해야한다. 그리고 각 입력란마다 로그에 하나씩 기록이 되는지도 확인필요

2-2. App Screenshot

-애플리케이션이 백그라운드로 들어갈 때 스크린샷을 찍는 것으로, 사용자에게 UI를 원활하게 보여주기 위해 사용

 

실행 중인 앱 백그라운드로 전환

실행 중인 앱을 백그라운드로 전환하면 앱이 실시간으로 반영되는 창을 보여주는 것이 아니라 백그라운드로 전환될 당시의 창이 그대로 보인다

 

Filza 앱을 통해 스크린샷 확인 가능

2-3. Pasteboard

- 일부 텍스트를 복사하면 Pasteboard 버퍼에 저장되어, 다른 애플리케이션이 이 버퍼에 저장된 데이터를 가져올 수 있음

- 복사한 중요한 텍스트가 Pasteboard에 포함되어 있으면 다른 애플리케이션에서 가져와 데이터 유출이 가능

 

카드번호 복사 시도

 

해당 코드 실행

 

복사했던 값 출력 확인

해당 앱을 종료하더라도 복사했던 값은 pasteboard 버퍼에 저장되어 있기 때문에 복사한 중요 데이터들이 pasteboard에 저장될 경우 취약

참고 : https://github.com/interference-security/frida-scripts/blob/master/iOS/pasteboard-monitoring.js

 

2-4. Keystroke logging

- 텍스트 필드가 Secure로 설정되지 않은 경우 기본적으로 디바이스의 텍스트 필드에 입력한 모든 입력을 기록함

- Keystroke 로그는 디바이스에서 쉽게 가져와 볼 수 있음

- /var/mobile/Library/Keyboard/en-dynamic.lm 위치에 확장자가 .dat 파일로 저장됨

 

'testing' 문자열 입력

 

해당 경로에 dat 확장자로 keystroke 로그가 저장되어 있음

IOS 버전이 올라가면서 입력값에 대한 기록을 확인하기가 어려워졌지만 부분적으로 로그에 남는 부분이 있을 수 있기에 진단은 필요

2-5. Cookies

- 일부 애플리케이션은 Persistance Cookies를 생성해 cookie.binarycooies 파일에 저장

- 쿠키 경로는 /var/mobile/Containers/Data/Application/$uuid/Library/Cookies/Cookies.binarycookies

 

'Test the results' 버튼 클릭 시 실패 메시지 출력

 

해당 경로에서 저장된 쿠키값 확인

 

저장된 쿠키값을 확인 가능하며 username password가 출력되는 것을 확인

 

저장된 쿠키값에서 계정정보가 노출되어 있는 것을 확인

 

글자깨짐 없이 쿠키값이 출력되는 것을 확인

노트패드로 저장된 쿠키값을 확인하면 글자가 깨지기 때문에 BinaryCookieReader 라는 툴을 이용하면 글자깨짐없이 쿠키값을 볼 수 있다.

3. 대응방안

Device Logs
- 로그 활성화 여부 확인 필요

 

App Screenshot
- 애플리케이션이 백그라운드로 전활될 때 스크린 샷은 중요 데이터가 노출되지 않는 화면을 사용

 

Pasteboard
- 중요한 데이터를 다루는 곳에서는 Custom Pasteboard / 가상 키패드를 사용
- 중요한 데이터가 Pasteboard 버퍼에 캐시 여부 확인

 

Keystroke logging
- 텍스트 필드를 Secure로 설정하고, autocorrect(자동고침) 옵션을 해제해야 함

 

Cookies
- 중요한 데이터(계정정보)를 저장하면 안되고, 서버에서 세션 값을 받아와 인증하도록 설정


[도움 및 출처]
보안프로젝트 김태영 팀장 해커를 위한 iOS 앱 모의 해킹 전문 과정

'IOS 모의해킹' 카테고리의 다른 글

10. Network Layer Security  (0) 2023.03.14
9. IPC Issues  (0) 2023.03.14
7. Runtime Manpulation(3)  (0) 2023.03.13
6. Runtime Manpulation(2)  (0) 2023.03.13
5. Runtime Manpulation(1)  (0) 2023.03.12