2022-04-28 16:01:33 +00:00
< details >
2024-02-08 04:42:06 +00:00
< summary > < strong > 从零开始学习AWS黑客技术, 成为专家< / strong > < a href = "https://training.hacktricks.xyz/courses/arte" > < strong > htARTE( HackTricks AWS红队专家) < / strong > < / a > < strong > ! < / strong > < / summary >
2022-04-28 16:01:33 +00:00
2024-01-12 09:01:50 +00:00
支持HackTricks的其他方式:
2022-04-28 16:01:33 +00:00
2024-02-08 04:42:06 +00:00
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
* 获取[**官方PEASS & HackTricks周边产品**](https://peass.creator-spring.com)
2024-02-09 12:48:25 +00:00
* 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们独家的[**NFTs**](https://opensea.io/collection/the-peass-family)
* **加入** 💬 [**Discord群** ](https://discord.gg/hRep4RUj7f ) 或 [**电报群** ](https://t.me/peass ) 或 **关注**我们的**Twitter** 🐦 [**@carlospolopm** ](https://twitter.com/hacktricks_live )**。**
2024-02-08 04:42:06 +00:00
* 通过向[**HackTricks**](https://github.com/carlospolop/hacktricks)和[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。
2022-04-28 16:01:33 +00:00
< / details >
2024-02-08 04:42:06 +00:00
在iOS设备上, 应用程序内部和跨应用程序之间的数据共享是通过[`UIPasteboard`](https://developer.apple.com/documentation/uikit/uipasteboard)机制实现的,该机制分为两个主要类别:
2022-04-28 16:01:33 +00:00
2024-02-09 12:48:25 +00:00
- **系统范围的通用剪贴板**:用于与**任何应用程序**共享数据, 并且旨在在iOS 10以后可用的设备重新启动和应用程序卸载时保留数据。
- **自定义/命名剪贴板**: 专门用于在应用程序内部或与共享相同团队ID的另一个应用程序之间共享数据, 并且不会在创建它们的应用程序进程的生命周期之外保留数据, 这是iOS 10引入的更改。
2021-05-21 16:38:18 +00:00
2024-02-08 04:42:06 +00:00
在使用剪贴板时,**安全考虑**起着重要作用。例如:
2024-02-09 12:48:25 +00:00
- 用户没有机制来管理应用程序访问**剪贴板**的权限。
- 为了减轻未经授权的后台监视剪贴板的风险, 访问仅限于应用程序在前台运行时( 自iOS 9以来) 。
2024-02-08 04:42:06 +00:00
- 由于隐私问题,不鼓励使用持久命名剪贴板,而是推荐使用共享容器。
2024-02-09 12:48:25 +00:00
- iOS 10引入的**通用剪贴板**功能允许通过通用剪贴板在设备之间共享内容,开发人员可以管理数据过期时间并禁用自动内容传输。
2021-05-21 16:38:18 +00:00
2024-02-09 12:48:25 +00:00
确保**敏感信息不会被意外存储**在全局剪贴板中至关重要。此外,应用程序应设计为防止全局剪贴板数据被用于非预期操作,鼓励开发人员实施措施防止将敏感信息复制到剪贴板中。
2021-05-21 16:38:18 +00:00
2024-02-08 04:42:06 +00:00
### 静态分析
2021-05-21 16:38:18 +00:00
2024-02-08 04:42:06 +00:00
对于静态分析,搜索源代码或二进制文件以查找:
- `generalPasteboard` 以识别对**系统范围的通用剪贴板**的使用。
- `pasteboardWithName:create:` 和 `pasteboardWithUniqueName` 用于创建**自定义剪贴板**。验证是否启用了持久性,尽管这已被弃用。
2021-05-21 16:38:18 +00:00
2024-02-08 04:42:06 +00:00
### 动态分析
2021-05-21 16:38:18 +00:00
2024-02-08 04:42:06 +00:00
动态分析涉及挂钩或跟踪特定方法:
2024-02-09 12:48:25 +00:00
- 监视 `generalPasteboard` 以进行系统范围的使用。
- 跟踪 `pasteboardWithName:create:` 和 `pasteboardWithUniqueName` 以进行自定义实现。
2024-02-08 04:42:06 +00:00
- 观察已弃用的 `setPersistent:` 方法调用以检查持久性设置。
2021-05-21 16:38:18 +00:00
2024-02-08 04:42:06 +00:00
要监视的关键细节包括:
- **剪贴板名称**和**内容**( 例如, 检查字符串、URL、图像) 。
- 存在的**项目数量**和**数据类型**,利用标准和自定义数据类型检查。
2024-02-09 12:48:25 +00:00
- 通过检查 `setItems:options:` 方法检查**到期和仅本地选项**。
2021-05-21 16:38:18 +00:00
2024-02-08 04:42:06 +00:00
一个监视工具的示例是**objection的剪贴板监视器**, 它每5秒轮询generalPasteboard以查看更改并输出新数据。
2021-05-21 16:38:18 +00:00
2024-02-09 12:48:25 +00:00
以下是一个简单的JavaScript脚本示例, 受objection方法的启发, 每5秒读取并记录剪贴板中的更改:
2021-05-21 16:38:18 +00:00
```javascript
const UIPasteboard = ObjC.classes.UIPasteboard;
2023-08-03 19:12:22 +00:00
const Pasteboard = UIPasteboard.generalPasteboard();
var items = "";
var count = Pasteboard.changeCount().toString();
2021-05-21 16:38:18 +00:00
setInterval(function () {
2023-08-03 19:12:22 +00:00
const currentCount = Pasteboard.changeCount().toString();
const currentItems = Pasteboard.items().toString();
2021-05-21 16:38:18 +00:00
2023-08-03 19:12:22 +00:00
if (currentCount === count) { return; }
2021-05-21 16:38:18 +00:00
2023-08-03 19:12:22 +00:00
items = currentItems;
count = currentCount;
2021-05-21 16:38:18 +00:00
2023-08-03 19:12:22 +00:00
console.log('[* Pasteboard changed] count: ' + count +
' hasStrings: ' + Pasteboard.hasStrings().toString() +
' hasURLs: ' + Pasteboard.hasURLs().toString() +
' hasImages: ' + Pasteboard.hasImages().toString());
console.log(items);
2021-05-21 16:38:18 +00:00
2023-08-03 19:12:22 +00:00
}, 1000 * 5);
2021-05-21 16:38:18 +00:00
```
2024-02-08 04:42:06 +00:00
## 参考资料
2022-04-28 16:01:33 +00:00
2024-02-08 04:42:06 +00:00
* [https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06h-testing-platform-interaction#testing-object-persistence-mstg-platform-8 ](https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06h-testing-platform-interaction#testing-object-persistence-mstg-platform-8 )
* [https://hackmd.io/@robihamanto/owasp-robi ](https://hackmd.io/@robihamanto/owasp-robi )
* [https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0073/ ](https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0073/ )
2022-04-28 16:01:33 +00:00
< details >
2024-02-09 12:48:25 +00:00
< summary > < strong > 从零开始学习AWS黑客技术, 成为专家< / strong > < a href = "https://training.hacktricks.xyz/courses/arte" > < strong > htARTE (HackTricks AWS Red Team Expert)< / strong > < / a > < strong > !< / strong > < / summary >
2022-04-28 16:01:33 +00:00
2024-02-09 12:48:25 +00:00
支持HackTricks的其他方式:
2022-04-28 16:01:33 +00:00
2024-02-09 12:48:25 +00:00
* 如果您想在HackTricks中看到您的**公司广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
* 获取[**官方PEASS & HackTricks周边产品**](https://peass.creator-spring.com)
* 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family)
* **加入** 💬 [**Discord群** ](https://discord.gg/hRep4RUj7f ) 或 [**电报群** ](https://t.me/peass ) 或 **关注**我们的**Twitter** 🐦 [**@carlospolopm** ](https://twitter.com/hacktricks_live )**.**
* 通过向[**HackTricks**](https://github.com/carlospolop/hacktricks)和[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。
2022-04-28 16:01:33 +00:00
< / details >