부채널을 통한 데이터 유출 이란?
부채널 데이터 유출(Side Channel Data Leakage)이란 앱의 주기능이 아닌 제삼의(Side) 기능으로 중요정보가 유출되는 것을 말함.
Keystroke logging 이란?
- 텍스트 필드가 Secure로 설정되지 않은 경우 기본적으로 디바이스의 텍스트 필드에 입력한 모든 입력을 Keystroke 로그에 기록함.
- Keystroke 로그는 /var/mobile/Library/Keyboard/ 위치에 .dat 확장자를 가진 파일로 저장됨.
- 디바이스에서 쉽게 가져와 볼 수 있으므로 평문으로 저장된 중요 데이터가 있을 경우 정보가 유출될 수 있음.
대응 방법
- 텍스트 필드를 Secure로 설정하고, autocorrect(자동고침) 옵션을 해제해야 함.
- 예제(샘플) 소스
//텍스트 필드 secure 설정 샘플 소스
textField.isSecureTextEntry = true
//텍스트 필드 autocorrect 해제 샘플 소스
//Objective-C
textField.autocorrectionType = UITextAutocorrectionTypeNo;
//Swift 2
textField.autocorrectionType = .No
//Swift 3
textField.autocorrectionType = .no
//SwiftUI
textField.disableAutocorrection(false)
DVIA-v2 앱을 통한 실습
앱 내에서 입력한 텍스트가 Keystroke logging 으로 디바이스 내에 저장되는지 확인하기 위해 DVIA-v2 앱을 실행.
메인메뉴 좌측 상단 메뉴 클릭 > Side Channel Data Leakage 클릭 > Keystroke logging 클릭 > 텍스트 입력.
3uTools 실행 > private/var/mobile/Library/Keyboard/ 경로로 이동 > dynamic.lm 폴더안에 있는 파일들을 PC로 추출
※ en-dynamic.lm : 영어로 입력된 텍스트가 저장된 폴더
※ ko-dynamic.lm : 한글로 입력된 텍스트가 저장된 폴더
추출한 파일을 메모장같은 텍스트 편집기로 열어보면 기존에 입력했던 텍스트들이 기록되어 있는것을 확인할 수 있음.
※ iOS 12 이상의 버전에서는 Keystroke logging 기능으로 기록된 텍스트가 많이 없는것을 확인할 수 있음. iOS 자체적으로 Keystroke logging 기능으로 중요 텍스트가 유출되는 일이 없도록 조치하고 있는 듯 함.
'Mobile App 취약점 진단 · 모의해킹 > iOS App 취약점 진단 · 모의해킹' 카테고리의 다른 글
[iOS 취약점 진단] 07강 - 불필요한 권한 (0) | 2023.02.12 |
---|---|
[iOS 취약점 진단] 06강 - 부채널을 통한 데이터 유출(Cookies) (0) | 2023.02.12 |
[iOS 취약점 진단] 06강 - 부채널을 통한 데이터 유출(Pasteboard) (0) | 2023.02.12 |
[iOS 취약점 진단] 06강 - 부채널을 통한 데이터 유출(App Screenshot) (0) | 2023.02.12 |
[iOS 취약점 진단] 06강 - 부채널을 통한 데이터 유출(Device Logs) (0) | 2023.02.12 |