# iOS Pentesting Checklist {{#include ../banners/hacktricks-training.md}} ### Preparation - [ ] Read [**iOS Basics**](ios-pentesting/ios-basics.md) - [ ] Prepare your environment reading [**iOS Testing Environment**](ios-pentesting/ios-testing-environment.md) - [ ] Read all the sections of [**iOS Initial Analysis**](ios-pentesting/index.html#initial-analysis) to learn common actions to pentest an iOS application ### Data Storage - [ ] [**Plist files**](ios-pentesting/index.html#plist) can be used to store sensitive information. - [ ] [**Core Data**](ios-pentesting/index.html#core-data) (SQLite 데이터베이스)는 민감한 정보를 저장할 수 있습니다. - [ ] [**YapDatabases**](ios-pentesting/index.html#yapdatabase) (SQLite 데이터베이스)는 민감한 정보를 저장할 수 있습니다. - [ ] [**Firebase**](ios-pentesting/index.html#firebase-real-time-databases) 잘못된 구성. - [ ] [**Realm databases**](ios-pentesting/index.html#realm-databases)는 민감한 정보를 저장할 수 있습니다. - [ ] [**Couchbase Lite databases**](ios-pentesting/index.html#couchbase-lite-databases)는 민감한 정보를 저장할 수 있습니다. - [ ] [**Binary cookies**](ios-pentesting/index.html#cookies)는 민감한 정보를 저장할 수 있습니다. - [ ] [**Cache data**](ios-pentesting/index.html#cache)는 민감한 정보를 저장할 수 있습니다. - [ ] [**Automatic snapshots**](ios-pentesting/index.html#snapshots)는 시각적 민감한 정보를 저장할 수 있습니다. - [ ] [**Keychain**](ios-pentesting/index.html#keychain)은 일반적으로 전화기를 재판매할 때 남길 수 있는 민감한 정보를 저장하는 데 사용됩니다. - [ ] 요약하자면, **파일 시스템에 저장된 애플리케이션의 민감한 정보를 확인하세요.** ### Keyboards - [ ] 애플리케이션이 [**사용자 정의 키보드 사용을 허용하는지**](ios-pentesting/index.html#custom-keyboards-keyboard-cache) 확인하세요. - [ ] 민감한 정보가 [**키보드 캐시 파일**](ios-pentesting/index.html#custom-keyboards-keyboard-cache)에 저장되어 있는지 확인하세요. ### **Logs** - [ ] [**민감한 정보가 기록되고 있는지**](ios-pentesting/index.html#logs) 확인하세요. ### Backups - [ ] [**Backups**](ios-pentesting/index.html#backups)는 파일 시스템에 저장된 **민감한 정보에 접근하는 데** 사용될 수 있습니다 (이 체크리스트의 초기 포인트를 확인하세요). - [ ] 또한, [**backups**](ios-pentesting/index.html#backups)는 **애플리케이션의 일부 구성을 수정하는 데** 사용될 수 있으며, 그런 다음 **백업을 전화기에 복원**하면 **수정된 구성**이 **로드**되어 일부 (보안) **기능**이 **우회**될 수 있습니다. ### **Applications Memory** - [ ] [**애플리케이션의 메모리**](ios-pentesting/index.html#testing-memory-for-sensitive-data) 내에서 민감한 정보를 확인하세요. ### **Broken Cryptography** - [ ] [**암호화에 사용된 비밀번호**](ios-pentesting/index.html#broken-cryptography)를 찾을 수 있는지 확인하세요. - [ ] 민감한 데이터를 전송/저장하기 위해 [**사용된 알고리즘이 구식/약한지**](ios-pentesting/index.html#broken-cryptography) 확인하세요. - [ ] [**암호화 함수 후킹 및 모니터링**](ios-pentesting/index.html#broken-cryptography). ### **Local Authentication** - [ ] 애플리케이션에서 [**로컬 인증**](ios-pentesting/index.html#local-authentication)을 사용하는 경우, 인증이 어떻게 작동하는지 확인해야 합니다. - [ ] [**로컬 인증 프레임워크**](ios-pentesting/index.html#local-authentication-framework)를 사용하는 경우 쉽게 우회될 수 있습니다. - [ ] [**동적으로 우회할 수 있는 함수**](ios-pentesting/index.html#local-authentication-using-keychain)를 사용하는 경우, 사용자 정의 frida 스크립트를 생성할 수 있습니다. ### Sensitive Functionality Exposure Through IPC - [**Custom URI Handlers / Deeplinks / Custom Schemes**](ios-pentesting/index.html#custom-uri-handlers-deeplinks-custom-schemes) - [ ] 애플리케이션이 **프로토콜/스킴을 등록하고 있는지** 확인하세요. - [ ] 애플리케이션이 **프로토콜/스킴을 사용하기 위해 등록하고 있는지** 확인하세요. - [ ] 애플리케이션이 **다른 애플리케이션이 동일한 스킴을 등록하여 가로챌 수 있는 민감한 정보를 수신할 것으로 예상하는지** 확인하세요. - [ ] 애플리케이션이 **사용자 입력을 확인하고 정리하지 않는지** 확인하고, 일부 **취약점이 악용될 수 있는지** 확인하세요. - [ ] 애플리케이션이 **어디서든 호출할 수 있는 민감한 작업을 노출하는지** 확인하세요. - [**Universal Links**](ios-pentesting/index.html#universal-links) - [ ] 애플리케이션이 **유니버설 프로토콜/스킴을 등록하고 있는지** 확인하세요. - [ ] `apple-app-site-association` 파일을 확인하세요. - [ ] 애플리케이션이 **사용자 입력을 확인하고 정리하지 않는지** 확인하고, 일부 **취약점이 악용될 수 있는지** 확인하세요. - [ ] 애플리케이션이 **어디서든 호출할 수 있는 민감한 작업을 노출하는지** 확인하세요. - [**UIActivity Sharing**](ios-pentesting/ios-uiactivity-sharing.md) - [ ] 애플리케이션이 UIActivities를 수신할 수 있는지 확인하고, 특별히 제작된 활동으로 어떤 취약점을 악용할 수 있는지 확인하세요. - [**UIPasteboard**](ios-pentesting/ios-uipasteboard.md) - [ ] 애플리케이션이 **일반 클립보드에 무엇인가를 복사하고 있는지** 확인하세요. - [ ] 애플리케이션이 **일반 클립보드의 데이터를 사용하는지** 확인하세요. - [ ] 클립보드를 모니터링하여 **민감한 데이터가 복사되는지** 확인하세요. - [**App Extensions**](ios-pentesting/ios-app-extensions.md) - [ ] 애플리케이션이 **어떤 확장을 사용하고 있는지** 확인하세요. - [**WebViews**](ios-pentesting/ios-webviews.md) - [ ] 어떤 종류의 웹뷰가 사용되고 있는지 확인하세요. - [ ] **`javaScriptEnabled`**, **`JavaScriptCanOpenWindowsAutomatically`**, **`hasOnlySecureContent`**의 상태를 확인하세요. - [ ] 웹뷰가 **file://** 프로토콜로 **로컬 파일에 접근할 수 있는지** 확인하세요 (**`allowFileAccessFromFileURLs`, `allowUniversalAccessFromFileURLs`**). - [ ] Javascript가 **Native** **메서드**에 접근할 수 있는지 확인하세요 (`JSContext`, `postMessage`). ### Network Communication - [ ] [**MitM 공격을 수행하여 통신을**](ios-pentesting/index.html#network-communication) 분석하고 웹 취약점을 검색하세요. - [ ] [**인증서의 호스트 이름**](ios-pentesting/index.html#hostname-check)이 확인되는지 확인하세요. - [ ] [**인증서 고정**](ios-pentesting/index.html#certificate-pinning)을 확인/우회하세요. ### **Misc** - [ ] [**자동 패치/업데이트**](ios-pentesting/index.html#hot-patching-enforced-updateing) 메커니즘을 확인하세요. - [ ] [**악성 제3자 라이브러리**](ios-pentesting/index.html#third-parties)를 확인하세요. {{#include ../banners/hacktricks-training.md}}