Rozszerzenia aplikacji iOS
Reading time: 3 minutes
tip
Ucz się i ćwicz AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Wsparcie HackTricks
- Sprawdź plany subskrypcyjne!
- Dołącz do 💬 grupy Discord lub grupy telegram lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Dziel się trikami hackingowymi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów github.
Rozszerzenia aplikacji zwiększają funkcjonalność aplikacji, umożliwiając im interakcję z innymi aplikacjami lub systemem, oferując niestandardowe funkcje lub treści. Te rozszerzenia obejmują:
- Niestandardowa klawiatura: Oferuje unikalną klawiaturę we wszystkich aplikacjach, zastępując domyślną klawiaturę iOS.
- Udostępnij: Umożliwia udostępnianie w sieciach społecznościowych lub innym użytkownikom bezpośrednio.
- Dziś (Widgety): Dostarcza treści lub wykonuje zadania szybko z widoku Dziś w Centrum powiadomień.
Gdy użytkownik korzysta z tych rozszerzeń, takich jak udostępnianie tekstu z aplikacji głównej, rozszerzenie przetwarza ten input w swoim kontekście, wykorzystując udostępnione informacje do wykonania swojego zadania, jak opisano w dokumentacji Apple.
Rozważania dotyczące bezpieczeństwa
Kluczowe aspekty bezpieczeństwa obejmują:
- Rozszerzenia i ich aplikacje zawierające komunikują się za pomocą komunikacji międzyprocesowej, a nie bezpośrednio.
- Widget Dziś jest wyjątkowy, ponieważ może zażądać otwarcia swojej aplikacji za pomocą określonej metody.
- Dostęp do udostępnionych danych jest dozwolony w prywatnym kontenerze, ale bezpośredni dostęp jest ograniczony.
- Niektóre API, w tym HealthKit, są niedostępne dla rozszerzeń aplikacji, które również nie mogą uruchamiać długoterminowych zadań, uzyskiwać dostępu do kamery ani mikrofonu, z wyjątkiem rozszerzeń iMessage.
Analiza statyczna
Identyfikacja rozszerzeń aplikacji
Aby znaleźć rozszerzenia aplikacji w kodzie źródłowym, wyszukaj NSExtensionPointIdentifier
w Xcode lub sprawdź pakiet aplikacji pod kątem plików .appex
, które wskazują na rozszerzenia. Bez kodu źródłowego użyj grep lub SSH, aby zlokalizować te identyfikatory w pakiecie aplikacji.
Obsługiwane typy danych
Sprawdź plik Info.plist
rozszerzenia pod kątem NSExtensionActivationRule
, aby zidentyfikować obsługiwane typy danych. Ta konfiguracja zapewnia, że tylko kompatybilne typy danych uruchamiają rozszerzenie w aplikacjach głównych.
Udostępnianie danych
Udostępnianie danych między aplikacją a jej rozszerzeniem wymaga wspólnego kontenera, skonfigurowanego za pomocą "Grup aplikacji" i uzyskiwanego przez NSUserDefaults
. Ta wspólna przestrzeń jest niezbędna do transferów w tle inicjowanych przez rozszerzenia.
Ograniczanie rozszerzeń
Aplikacje mogą ograniczać niektóre typy rozszerzeń, szczególnie niestandardowe klawiatury, zapewniając, że obsługa danych wrażliwych jest zgodna z protokołami bezpieczeństwa.
Analiza dynamiczna
Analiza dynamiczna obejmuje:
- Inspekcję elementów udostępnionych: Podłącz się do
NSExtensionContext - inputItems
, aby zobaczyć typy i źródła udostępnianych danych. - Identyfikację rozszerzeń: Odkryj, które rozszerzenia przetwarzają twoje dane, obserwując wewnętrzne mechanizmy, takie jak
NSXPCConnection
.
Narzędzia takie jak frida-trace
mogą pomóc w zrozumieniu podstawowych procesów, szczególnie dla tych, którzy są zainteresowani szczegółami technicznymi komunikacji międzyprocesowej.
Odniesienia
- https://mas.owasp.org/MASTG/iOS/0x06h-Testing-Platform-Interaction/
- https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0072/
tip
Ucz się i ćwicz AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Wsparcie HackTricks
- Sprawdź plany subskrypcyjne!
- Dołącz do 💬 grupy Discord lub grupy telegram lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Dziel się trikami hackingowymi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów github.