mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
94 lines
6.0 KiB
Markdown
94 lines
6.0 KiB
Markdown
# iOS Pentesting Checklist
|
||
|
||
{{#include ../banners/hacktricks-training.md}}
|
||
|
||
### 准备
|
||
|
||
- [ ] 阅读 [**iOS 基础**](ios-pentesting/ios-basics.md)
|
||
- [ ] 准备你的环境,阅读 [**iOS 测试环境**](ios-pentesting/ios-testing-environment.md)
|
||
- [ ] 阅读 [**iOS 初步分析**](ios-pentesting/index.html#initial-analysis) 的所有部分,以了解对 iOS 应用进行渗透测试的常见操作
|
||
|
||
### 数据存储
|
||
|
||
- [ ] [**Plist 文件**](ios-pentesting/index.html#plist) 可用于存储敏感信息。
|
||
- [ ] [**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 数据库**](ios-pentesting/index.html#realm-databases)可以存储敏感信息。
|
||
- [ ] [**Couchbase Lite 数据库**](ios-pentesting/index.html#couchbase-lite-databases)可以存储敏感信息。
|
||
- [ ] [**二进制 Cookie**](ios-pentesting/index.html#cookies)可以存储敏感信息。
|
||
- [ ] [**缓存数据**](ios-pentesting/index.html#cache)可以存储敏感信息。
|
||
- [ ] [**自动快照**](ios-pentesting/index.html#snapshots)可以保存视觉敏感信息。
|
||
- [ ] [**钥匙串**](ios-pentesting/index.html#keychain) 通常用于存储敏感信息,这些信息在转售手机时可能会被遗留。
|
||
- [ ] 总之,只需 **检查应用程序在文件系统中保存的敏感信息**
|
||
|
||
### 键盘
|
||
|
||
- [ ] 应用程序是否 [**允许使用自定义键盘**](ios-pentesting/index.html#custom-keyboards-keyboard-cache)?
|
||
- [ ] 检查是否在 [**键盘缓存文件**](ios-pentesting/index.html#custom-keyboards-keyboard-cache) 中保存了敏感信息。
|
||
|
||
### **日志**
|
||
|
||
- [ ] 检查是否 [**记录了敏感信息**](ios-pentesting/index.html#logs)。
|
||
|
||
### 备份
|
||
|
||
- [ ] [**备份**](ios-pentesting/index.html#backups) 可用于 **访问文件系统中保存的敏感信息**(检查此检查表的初始点)。
|
||
- [ ] 此外,[**备份**](ios-pentesting/index.html#backups) 可用于 **修改应用程序的一些配置**,然后 **在手机上恢复** 备份,作为 **修改后的配置** 被 **加载** 时,某些(安全) **功能** 可能会被 **绕过**。
|
||
|
||
### **应用程序内存**
|
||
|
||
- [ ] 检查 [**应用程序内存**](ios-pentesting/index.html#testing-memory-for-sensitive-data) 中的敏感信息。
|
||
|
||
### **破损的加密**
|
||
|
||
- [ ] 检查是否可以找到 [**用于加密的密码**](ios-pentesting/index.html#broken-cryptography)。
|
||
- [ ] 检查是否使用 [**过时/弱算法**](ios-pentesting/index.html#broken-cryptography) 来发送/存储敏感数据。
|
||
- [ ] [**钩取并监控加密函数**](ios-pentesting/index.html#broken-cryptography)。
|
||
|
||
### **本地身份验证**
|
||
|
||
- [ ] 如果应用程序中使用了 [**本地身份验证**](ios-pentesting/index.html#local-authentication),你应该检查身份验证的工作方式。
|
||
- [ ] 如果使用的是 [**本地身份验证框架**](ios-pentesting/index.html#local-authentication-framework),则可能很容易被绕过。
|
||
- [ ] 如果使用的是 [**可以动态绕过的函数**](ios-pentesting/index.html#local-authentication-using-keychain),你可以创建一个自定义的 frida 脚本。
|
||
|
||
### 通过 IPC 暴露敏感功能
|
||
|
||
- [**自定义 URI 处理程序 / 深度链接 / 自定义方案**](ios-pentesting/index.html#custom-uri-handlers-deeplinks-custom-schemes)
|
||
- [ ] 检查应用程序是否 **注册了任何协议/方案**。
|
||
- [ ] 检查应用程序是否 **注册以使用** 任何协议/方案。
|
||
- [ ] 检查应用程序 **是否期望从自定义方案接收任何类型的敏感信息**,这些信息可以被注册相同方案的另一个应用程序 **拦截**。
|
||
- [ ] 检查应用程序 **是否没有检查和清理** 通过自定义方案的用户输入,某些 **漏洞可能被利用**。
|
||
- [ ] 检查应用程序 **是否暴露了任何敏感操作**,可以通过自定义方案从任何地方调用。
|
||
- [**通用链接**](ios-pentesting/index.html#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)
|
||
- [ ] 检查使用了哪种类型的 webviews。
|
||
- [ ] 检查 **`javaScriptEnabled`**、**`JavaScriptCanOpenWindowsAutomatically`**、**`hasOnlySecureContent`** 的状态。
|
||
- [ ] 检查 webview 是否可以使用协议 **file://** **(`allowFileAccessFromFileURLs`、`allowUniversalAccessFromFileURLs`)** 访问本地文件。
|
||
- [ ] 检查 Javascript 是否可以访问 **Native** **方法**(`JSContext`、`postMessage`)。
|
||
|
||
### 网络通信
|
||
|
||
- [ ] 执行 [**MitM 通信**](ios-pentesting/index.html#network-communication) 并搜索网络漏洞。
|
||
- [ ] 检查 [**证书的主机名**](ios-pentesting/index.html#hostname-check) 是否被检查。
|
||
- [ ] 检查/绕过 [**证书钉扎**](ios-pentesting/index.html#certificate-pinning)。
|
||
|
||
### **其他**
|
||
|
||
- [ ] 检查 [**自动修补/更新**](ios-pentesting/index.html#hot-patching-enforced-updateing) 机制。
|
||
- [ ] 检查 [**恶意第三方库**](ios-pentesting/index.html#third-parties)。
|
||
|
||
{{#include ../banners/hacktricks-training.md}}
|