# iOS UIActivity Sharing
htARTE(HackTricks AWS Red Team Expert) からAWSハッキングをゼロからヒーローまで学ぶ HackTricks をサポートする他の方法: * **HackTricks で企業を宣伝**したい場合や **HackTricks をPDFでダウンロード** したい場合は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください! * [**公式PEASS&HackTricksスウォッグ**](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リポジトリに提出してください。**
# 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)