hacktricks/mobile-pentesting/ios-pentesting-checklist.md

135 lines
10 KiB
Markdown

# iOS Pentesting Checklist
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks)를 사용하여 세계에서 **가장 진보된** 커뮤니티 도구로 구동되는 **워크플로우를 쉽게 구축하고 자동화**하세요.\
지금 액세스하세요:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{% hint style="success" %}
AWS 해킹 배우기 및 연습하기:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCP 해킹 배우기 및 연습하기: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>HackTricks 지원하기</summary>
* [**구독 계획**](https://github.com/sponsors/carlospolop) 확인하기!
* 💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 참여하거나 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**를 팔로우하세요.**
* [**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.
</details>
{% endhint %}
### 준비
* [ ] [**iOS 기초**](ios-pentesting/ios-basics.md) 읽기
* [ ] [**iOS 테스트 환경**](ios-pentesting/ios-testing-environment.md) 읽어 환경 준비하기
* [ ] [**iOS 초기 분석**](ios-pentesting/#initial-analysis)의 모든 섹션을 읽어 iOS 애플리케이션을 펜테스트하는 일반적인 작업 배우기
### 데이터 저장
* [ ] [**Plist 파일**](ios-pentesting/#plist)은 민감한 정보를 저장하는 데 사용될 수 있습니다.
* [ ] [**Core Data**](ios-pentesting/#core-data) (SQLite 데이터베이스)는 민감한 정보를 저장할 수 있습니다.
* [ ] [**YapDatabases**](ios-pentesting/#yapdatabase) (SQLite 데이터베이스)는 민감한 정보를 저장할 수 있습니다.
* [ ] [**Firebase**](ios-pentesting/#firebase-real-time-databases) 잘못된 구성.
* [ ] [**Realm 데이터베이스**](ios-pentesting/#realm-databases)는 민감한 정보를 저장할 수 있습니다.
* [ ] [**Couchbase Lite 데이터베이스**](ios-pentesting/#couchbase-lite-databases)는 민감한 정보를 저장할 수 있습니다.
* [ ] [**이진 쿠키**](ios-pentesting/#cookies)는 민감한 정보를 저장할 수 있습니다.
* [ ] [**캐시 데이터**](ios-pentesting/#cache)는 민감한 정보를 저장할 수 있습니다.
* [ ] [**자동 스냅샷**](ios-pentesting/#snapshots)은 시각적 민감한 정보를 저장할 수 있습니다.
* [ ] [**키체인**](ios-pentesting/#keychain)은 일반적으로 전화기를 재판매할 때 남길 수 있는 민감한 정보를 저장하는 데 사용됩니다.
* [ ] 요약하자면, 애플리케이션이 파일 시스템에 저장한 민감한 정보를 **확인하세요.**
### 키보드
* [ ] 애플리케이션이 [**사용자 정의 키보드 사용을 허용하는지**](ios-pentesting/#custom-keyboards-keyboard-cache) 확인하세요.
* [ ] [**키보드 캐시 파일**](ios-pentesting/#custom-keyboards-keyboard-cache)에 민감한 정보가 저장되어 있는지 확인하세요.
### **로그**
* [ ] [**민감한 정보가 기록되고 있는지**](ios-pentesting/#logs) 확인하세요.
### 백업
* [ ] [**백업**](ios-pentesting/#backups)은 파일 시스템에 저장된 **민감한 정보에 접근하는 데 사용될 수 있습니다** (이 체크리스트의 초기 포인트 확인).
* [ ] 또한, [**백업**](ios-pentesting/#backups)은 **애플리케이션의 일부 구성을 수정하는 데 사용될 수 있으며**, 그런 다음 **백업을 전화기에 복원하면** **수정된 구성**이 **로드되어** 일부 (보안) **기능이 우회될 수 있습니다.**
### **애플리케이션 메모리**
* [ ] [**애플리케이션의 메모리**](ios-pentesting/#testing-memory-for-sensitive-data) 내에서 민감한 정보를 확인하세요.
### **손상된 암호화**
* [ ] [**암호화에 사용된 비밀번호**](ios-pentesting/#broken-cryptography)를 찾을 수 있는지 확인하세요.
* [ ] 민감한 데이터를 전송/저장하기 위해 [**사용된 알고리즘이 구식/약한지**](ios-pentesting/#broken-cryptography) 확인하세요.
* [ ] [**암호화 함수 후킹 및 모니터링**](ios-pentesting/#broken-cryptography).
### **로컬 인증**
* [ ] 애플리케이션에서 [**로컬 인증**](ios-pentesting/#local-authentication)을 사용하는 경우, 인증이 어떻게 작동하는지 확인해야 합니다.
* [ ] [**로컬 인증 프레임워크**](ios-pentesting/#local-authentication-framework)를 사용하는 경우 쉽게 우회될 수 있습니다.
* [ ] [**동적으로 우회할 수 있는 함수**](ios-pentesting/#local-authentication-using-keychain)를 사용하는 경우, 사용자 정의 frida 스크립트를 생성할 수 있습니다.
### IPC를 통한 민감한 기능 노출
* [**사용자 정의 URI 핸들러 / 딥링크 / 사용자 정의 스킴**](ios-pentesting/#custom-uri-handlers-deeplinks-custom-schemes)
* [ ] 애플리케이션이 **어떤 프로토콜/스킴을 등록하고 있는지** 확인하세요.
* [ ] 애플리케이션이 **어떤 프로토콜/스킴을 사용하도록 등록하고 있는지** 확인하세요.
* [ ] 애플리케이션이 **어떤 종류의 민감한 정보를 수신할 것으로 예상하는지** 확인하세요. 이 정보는 동일한 스킴을 등록한 다른 애플리케이션에 의해 **가로챌 수 있습니다.**
* [ ] 애플리케이션이 **사용자 입력을 확인하고 정리하지 않는지** 확인하세요. 이로 인해 일부 **취약점이 악용될 수 있습니다.**
* [ ] 애플리케이션이 **어디서든 호출할 수 있는 민감한 작업을 노출하는지** 확인하세요.
* [**유니버설 링크**](ios-pentesting/#universal-links)
* [ ] 애플리케이션이 **어떤 유니버설 프로토콜/스킴을 등록하고 있는지** 확인하세요.
* [ ] `apple-app-site-association` 파일 확인하기
* [ ] 애플리케이션이 **사용자 입력을 확인하고 정리하지 않는지** 확인하세요. 이로 인해 일부 **취약점이 악용될 수 있습니다.**
* [ ] 애플리케이션이 **어디서든 호출할 수 있는 민감한 작업을 노출하는지** 확인하세요.
* [**UIActivity 공유**](ios-pentesting/ios-uiactivity-sharing.md)
* [ ] 애플리케이션이 UIActivities를 수신할 수 있는지 확인하고, 특별히 제작된 활동으로 어떤 취약점을 악용할 수 있는지 확인하세요.
* [**UIPasteboard**](ios-pentesting/ios-uipasteboard.md)
* [ ] 애플리케이션이 **일반 클립보드에 무엇인가를 복사하고 있는지** 확인하세요.
* [ ] 애플리케이션이 **일반 클립보드의 데이터를 사용하는지** 확인하세요.
* [ ] 클립보드를 모니터링하여 **민감한 데이터가 복사되는지** 확인하세요.
* [**앱 확장**](ios-pentesting/ios-app-extensions.md)
* [ ] 애플리케이션이 **어떤 확장을 사용하고 있는지** 확인하세요.
* [**WebViews**](ios-pentesting/ios-webviews.md)
* [ ] 어떤 종류의 웹뷰가 사용되고 있는지 확인하세요.
* [ ] **`javaScriptEnabled`**, **`JavaScriptCanOpenWindowsAutomatically`**, **`hasOnlySecureContent`**의 상태를 확인하세요.
* [ ] 웹뷰가 **파일 프로토콜** **file://**로 **로컬 파일에 접근할 수 있는지** 확인하세요 (**`allowFileAccessFromFileURLs`, `allowUniversalAccessFromFileURLs`**).
* [ ] Javascript가 **네이티브** **메서드**에 접근할 수 있는지 확인하세요 (`JSContext`, `postMessage`).
### 네트워크 통신
* [ ] [**MitM 공격을 수행하여 통신을**](ios-pentesting/#network-communication) 분석하고 웹 취약점을 검색하세요.
* [ ] [**인증서의 호스트 이름**](ios-pentesting/#hostname-check)이 확인되는지 확인하세요.
* [ ] [**인증서 핀닝**](ios-pentesting/#certificate-pinning)을 확인/우회하세요.
### **기타**
* [ ] [**자동 패치/업데이트**](ios-pentesting/#hot-patching-enforced-updateing) 메커니즘을 확인하세요.
* [ ] [**악성 제3자 라이브러리**](ios-pentesting/#third-parties)를 확인하세요.
{% hint style="success" %}
AWS 해킹 배우기 및 연습하기:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCP 해킹 배우기 및 연습하기: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>HackTricks 지원하기</summary>
* [**구독 계획**](https://github.com/sponsors/carlospolop) 확인하기!
* 💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 참여하거나 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**를 팔로우하세요.**
* [**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.
</details>
{% endhint %}
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks)를 사용하여 세계에서 **가장 진보된** 커뮤니티 도구로 구동되는 **워크플로우를 쉽게 구축하고 자동화**하세요.\
지금 액세스하세요:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}