hacktricks/mobile-pentesting/ios-pentesting/ios-uiactivity-sharing.md

64 lines
5.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# iOS UIActivity Sharing
<details>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>からAWSハッキングをゼロからヒーローまで学ぶ</strong></a><strong></strong></summary>
HackTricks をサポートする他の方法:
* **HackTricks で企業を宣伝**したい場合や **HackTricks をPDFでダウンロード** したい場合は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください!
* [**公式PEASSHackTricksスウォッグ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) のコレクションを見つける
* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)** に参加するか、[telegramグループ](https://t.me/peass) に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live) をフォローする。
* **ハッキングトリックを共有するために、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **と** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出してください。**
</details>
# UIActivity Sharing Simplified
iOS 6以降、サードパーティアプリケーションは、Appleの[Inter-App Communicationガイド](https://developer.apple.com/library/archive/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/Inter-AppCommunication/Inter-AppCommunication.html#//apple_ref/doc/uid/TP40007072-CH6-SW3)で説明されているように、AirDropなどのメカニズムを使用してテキスト、URL、画像などのデータを**共有**できるようになりました。この機能は、"共有"ボタンを操作すると表示されるシステム全体の_共有アクティビティシート_を介して表れます。
すべての組み込み共有オプションの包括的な列挙は[UIActivity.ActivityType](https://developer.apple.com/documentation/uikit/uiactivity/activitytype)で利用可能です。開発者は、アプリケーションに適さないと判断した場合、特定の共有オプションを除外することができます。
## **データの共有方法**
以下に注意すべき点があります:
- 共有されるデータの性質。
- カスタムアクティビティの含有。
- 特定のアクティビティタイプの除外。
共有は、共有するアイテムが渡される`UIActivityViewController`のインスタンス化を通じて容易に行われます。これは、以下を呼び出すことで達成されます:
```bash
$ rabin2 -zq Telegram\ X.app/Telegram\ X | grep -i activityItems
0x1000df034 45 44 initWithActivityItems:applicationActivities:
```
開発者は、`UIActivityViewController`を検討すべきです。初期化されたアクティビティやカスタムアクティビティ、および指定された`excludedActivityTypes`を確認する必要があります。
## **データの受信方法**
データを受信する際に重要な点は次のとおりです:
- **カスタムドキュメントタイプ**の宣言。
- アプリが開くことができる**ドキュメントタイプ**の指定。
- 受信したデータの**整合性の検証**。
ソースコードにアクセスできない場合でも、`Info.plist`を調査して、アプリが処理できるドキュメントの種類や宣言を理解するために、`UTExportedTypeDeclarations`、`UTImportedTypeDeclarations`、`CFBundleDocumentTypes`などのキーを調べることができます。
これらのキーに関する簡潔なガイドは、[Stackoverflow](https://stackoverflow.com/questions/21937978/what-are-utimportedtypedeclarations-and-utexportedtypedeclarations-used-for-on-i)で利用可能であり、システム全体での認識やアプリとの統合のためにUTIを定義およびインポートする重要性を強調しています。
## 動的テストアプローチ
**アクティビティの送信**をテストするためには、次のことができます:
- `init(activityItems:applicationActivities:)`メソッドにフックして、共有されるアイテムやアクティビティをキャプチャします。
- `excludedActivityTypes`プロパティを傍受して、除外されたアクティビティを特定します。
**アイテムの受信**に関しては、次の手順が含まれます:
- 他のソースAirDrop、メールなどからアプリにファイルを共有し、「開く」ダイアログを表示します。
- 静的解析中に特定された他のメソッドと共に`application:openURL:options:`をフックして、アプリの応答を観察します。
- アプリの堅牢性を評価するために、不正なファイルやファジング技術を使用します。
## 参考文献
* [https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06h-testing-platform-interaction](https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06h-testing-platform-interaction)