2024-07-19 05:18:31 +00:00
{% hint style="success" %}
学习与实践 AWS Hacking:< 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 Hacking: < 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)
2022-04-28 16:01:33 +00:00
2024-07-19 05:18:31 +00:00
< details >
2022-04-28 16:01:33 +00:00
2024-07-19 05:18:31 +00:00
< summary > 支持 HackTricks< / summary >
2022-04-28 16:01:33 +00:00
2024-07-19 05:18:31 +00:00
* 查看 [**订阅计划** ](https://github.com/sponsors/carlospolop )!
* **加入** 💬 [**Discord 群组** ](https://discord.gg/hRep4RUj7f ) 或 [**telegram 群组** ](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 ) github 仓库提交 PR 分享黑客技巧。
2022-04-28 16:01:33 +00:00
< / details >
2024-07-19 05:18:31 +00:00
{% endhint %}
2022-04-28 16:01:33 +00:00
2024-05-02 15:03:25 +00:00
< figure > < img src = "https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt = "" > < figcaption > < / figcaption > < / figure >
2022-04-28 16:01:33 +00:00
2024-04-07 22:57:42 +00:00
{% embed url="https://websec.nl/" %}
2021-05-21 16:38:18 +00:00
2024-04-07 22:57:42 +00:00
2024-07-19 05:18:31 +00:00
在 iOS 设备上,应用程序之间的数据共享是通过 [`UIPasteboard` ](https://developer.apple.com/documentation/uikit/uipasteboard ) 机制实现的,该机制分为两个主要类别:
- **系统范围的通用粘贴板**:用于与 **任何应用程序** 共享数据,并设计为在设备重启和应用程序卸载之间持久化数据,该功能自 iOS 10 起可用。
- **自定义/命名粘贴板**:专门用于 **在应用程序内或与共享相同团队 ID 的另一个应用程序** 共享数据,并不设计为在创建它们的应用程序进程的生命周期之外持久化,遵循 iOS 10 引入的更改。
2024-04-07 22:57:42 +00:00
2024-07-19 05:18:31 +00:00
**安全考虑** 在使用粘贴板时起着重要作用。例如:
- 用户没有机制来管理应用程序访问 **粘贴板** 的权限。
- 为了减轻未经授权的后台监控粘贴板的风险,访问限制为应用程序在前台时(自 iOS 9 起)。
- 由于隐私问题,不鼓励使用持久命名粘贴板,而是倾向于使用共享容器。
- 自 iOS 10 引入的 **通用剪贴板** 功能,允许通过通用粘贴板在设备之间共享内容,开发人员可以管理数据过期并禁用自动内容传输。
2021-05-21 16:38:18 +00:00
2024-07-19 05:18:31 +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-05-02 15:03:25 +00:00
对于静态分析,搜索源代码或二进制文件中的:
2024-07-19 05:18:31 +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-07-19 05:18:31 +00:00
动态分析涉及钩住或跟踪特定方法:
- 监控 `generalPasteboard` 的系统范围使用。
- 跟踪 `pasteboardWithName:create:` 和 `pasteboardWithUniqueName` 的自定义实现。
2024-02-08 04:42:06 +00:00
- 观察已弃用的 `setPersistent:` 方法调用以检查持久性设置。
2021-05-21 16:38:18 +00:00
2024-07-19 05:18:31 +00:00
需要监控的关键细节包括:
- **粘贴板名称** 和 **内容** ( 例如, 检查字符串、URL、图像) 。
- **项目数量** 和 **数据类型** ,利用标准和自定义数据类型检查。
- 通过检查 `setItems:options:` 方法来查看 **过期和本地选项** 。
2021-05-21 16:38:18 +00:00
2024-07-19 05:18:31 +00:00
一个监控工具使用的示例是 **objection 的粘贴板监控器** ,每 5 秒轮询一次 generalPasteboard 以检查更改并输出新数据。
2021-05-21 16:38:18 +00:00
2024-07-19 05:18:31 +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-07-19 05:18:31 +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
2024-05-02 15:03:25 +00:00
< figure > < img src = "https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt = "" > < figcaption > < / figcaption > < / figure >
2024-04-07 22:57:42 +00:00
{% embed url="https://websec.nl/" %}
2024-07-19 05:18:31 +00:00
{% hint style="success" %}
学习和实践 AWS Hacking: < 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 Hacking: < 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)
2022-04-28 16:01:33 +00:00
2024-07-19 05:18:31 +00:00
< details >
2022-04-28 16:01:33 +00:00
2024-07-19 05:18:31 +00:00
< summary > 支持 HackTricks< / summary >
2022-04-28 16:01:33 +00:00
2024-07-19 05:18:31 +00:00
* 查看 [**订阅计划** ](https://github.com/sponsors/carlospolop )!
* **加入** 💬 [**Discord 群组** ](https://discord.gg/hRep4RUj7f ) 或 [**telegram 群组** ](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 ) github 仓库提交 PR 来分享黑客技巧。
2022-04-28 16:01:33 +00:00
< / details >
2024-07-19 05:18:31 +00:00
{% endhint %}