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

80 lines
5.8 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 Paylaşımı
{% hint style="success" %}
AWS Hacking'i öğrenin ve pratik yapın:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Eğitim AWS Kırmızı Takım Uzmanı (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCP Hacking'i öğrenin ve pratik yapın: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Eğitim GCP Kırmızı Takım Uzmanı (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>HackTricks'i Destekleyin</summary>
* [**abonelik planlarını**](https://github.com/sponsors/carlospolop) kontrol edin!
* **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın ya da **Twitter'da** bizi **takip edin** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Hacking ipuçlarını paylaşmak için** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github reposuna PR gönderin.
</details>
{% endhint %}
# UIActivity Paylaşımının Basitleştirilmesi
iOS 6'dan itibaren, üçüncü taraf uygulamalar, Apple'ın [Uygulamalar Arası İletişim kılavuzunda](https://developer.apple.com/library/archive/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/Inter-AppCommunication/Inter-AppCommunication.html#//apple_ref/doc/uid/TP40007072-CH6-SW3) belirtildiği gibi, AirDrop gibi mekanizmaları kullanarak metin, URL veya resim gibi **veri paylaşma** yeteneğine sahip olmuştur. Bu özellik, "Paylaş" butonuna etkileşimde bulunulduğunda ortaya çıkan sistem genelinde bir _paylaşım etkinliği sayfası_ aracılığıyla kendini gösterir.
Tüm yerleşik paylaşım seçeneklerinin kapsamlı bir listesi [UIActivity.ActivityType](https://developer.apple.com/documentation/uikit/uiactivity/activitytype) adresinde mevcuttur. Geliştiriciler, uygulamaları için uygun olmadığını düşündükleri belirli paylaşım seçeneklerini hariç tutmayı tercih edebilirler.
## **Veri Nasıl Paylaşılır**
Dikkat edilmesi gerekenler:
- Paylaşılan verinin niteliği.
- Özel etkinliklerin dahil edilmesi.
- Belirli etkinlik türlerinin hariç tutulması.
Paylaşım, paylaşılacak öğelerin geçirildiği bir `UIActivityViewController` örneği oluşturularak kolaylaştırılır. Bu, şu şekilde çağrılarak gerçekleştirilir:
```bash
$ rabin2 -zq Telegram\ X.app/Telegram\ X | grep -i activityItems
0x1000df034 45 44 initWithActivityItems:applicationActivities:
```
Geliştiriciler, `UIActivityViewController`'ı başlatıldığı aktiviteler ve özel aktiviteler için dikkatlice incelemeli, ayrıca belirtilen `excludedActivityTypes`'ı da göz önünde bulundurmalıdır.
## **Veri Alma Yöntemi**
Veri alırken aşağıdaki unsurlar kritik öneme sahiptir:
- **özel belge türlerinin** beyanı.
- Uygulamanın açabileceği **belge türlerinin** belirtilmesi.
- **alınan verilerin bütünlüğünün** doğrulanması.
Kaynak koduna erişim olmadan, `Info.plist` dosyasında `UTExportedTypeDeclarations`, `UTImportedTypeDeclarations` ve `CFBundleDocumentTypes` gibi anahtarları inceleyerek bir uygulamanın işleyebileceği ve beyan edebileceği belge türlerini anlamak mümkündür.
Bu anahtarlar hakkında kısa bir rehber [Stackoverflow](https://stackoverflow.com/questions/21937978/what-are-utimportedtypedeclarations-and-utexportedtypedeclarations-used-for-on-i) üzerinde mevcuttur ve sistem genelinde tanınma için UTIs tanımlamanın ve içe aktarmanın önemini vurgular, ayrıca belge türlerini uygulamanızla ilişkilendirerek "Aç" diyalogunda entegrasyon sağlar.
## Dinamik Test Yaklaşımı
**gönderme aktivitelerini** test etmek için:
- Paylaşılan öğeleri ve aktiviteleri yakalamak için `init(activityItems:applicationActivities:)` yöntemine hook atılabilir.
- `excludedActivityTypes` özelliğini keserek hariç tutulan aktiviteleri belirlemek mümkündür.
**öğeleri alma** süreci ise:
- "Aç..." diyalogunu tetikleyen başka bir kaynaktan (örneğin, AirDrop, e-posta) uygulama ile bir dosya paylaşmayı içerir.
- Uygulamanın yanıtını gözlemlemek için statik analiz sırasında belirlenen diğer yöntemler arasında `application:openURL:options:` yöntemine hook atmak.
- Uygulamanın dayanıklılığını değerlendirmek için hatalı dosyalar veya fuzzing teknikleri kullanmak.
## Referanslar
* [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)
{% hint style="success" %}
Learn & practice 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">\
Learn & practice 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)
<details>
<summary>Support HackTricks</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}