7 KiB
Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!
Inne sposoby wsparcia HackTricks:
- Jeśli chcesz zobaczyć swoją firmę reklamowaną w HackTricks lub pobrać HackTricks w formacie PDF Sprawdź PLANY SUBSKRYPCYJNE!
- Kup oficjalne gadżety PEASS & HackTricks
- Odkryj Rodzinę PEASS, naszą kolekcję ekskluzywnych NFT
- Dołącz do 💬 grupy Discord lub grupy telegramowej lub śledź nas na Twitterze 🐦 @carlospolopm.
- Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do HackTricks i HackTricks Cloud github repos.
{% embed url="https://websec.nl/" %}
Udostępnianie danych wewnątrz i między aplikacjami na urządzeniach iOS jest ułatwione przez mechanizm UIPasteboard
, który dzieli się na dwie główne kategorie:
- Systemowy schowek ogólny: Służy do udostępniania danych z dowolną aplikacją i jest zaprojektowany do przechowywania danych po restarcie urządzenia i odinstalowaniu aplikacji, funkcja dostępna od iOS 10.
- Niestandardowe / Nazwane schowki: Są przeznaczone do udostępniania danych w ramach aplikacji lub z inną aplikacją, która ma ten sam identyfikator zespołu, i nie są zaprojektowane do przechowywania poza czasem życia procesu aplikacji, który je tworzy, zgodnie z wprowadzonymi zmianami w iOS 10.
Rozważania dotyczące bezpieczeństwa odgrywają istotną rolę podczas korzystania ze schowków. Na przykład:
- Nie ma mechanizmu umożliwiającego użytkownikom zarządzanie uprawnieniami aplikacji do dostępu do schowka.
- Aby zmniejszyć ryzyko nieautoryzowanego monitorowania schowka w tle, dostęp jest ograniczony do czasu, gdy aplikacja jest w pierwszym planie (od iOS 9).
- Zaleca się unikanie używania trwałych nazwanych schowków na rzecz kontenerów współdzielonych ze względów prywatności.
- Funkcja Uniwersalny Schowek wprowadzona wraz z iOS 10, umożliwiająca udostępnianie treści między urządzeniami za pomocą schowka ogólnego, może być zarządzana przez deweloperów w celu ustawienia wygaśnięcia danych i wyłączenia automatycznego transferu treści.
Zapewnienie, że wrażliwe informacje nie są przypadkowo przechowywane w globalnym schowku jest kluczowe. Ponadto aplikacje powinny być zaprojektowane tak, aby zapobiegać nadużyciom danych z globalnego schowka do niezamierzonych działań, a deweloperów zachęca się do wprowadzenia środków zapobiegających kopiowaniu wrażliwych informacji do schowka.
Analiza statyczna
W analizie statycznej wyszukaj w kodzie źródłowym lub binarnym:
generalPasteboard
aby zidentyfikować użycie systemowego schowka ogólnego.pasteboardWithName:create:
ipasteboardWithUniqueName
do tworzenia niestandardowych schowków. Sprawdź, czy włączona jest trwałość, chociaż jest to przestarzałe.
Analiza dynamiczna
Analiza dynamiczna polega na hakowaniu lub śledzeniu konkretnych metod:
- Monitoruj
generalPasteboard
dla użycia ogólnego w systemie. - Śledź
pasteboardWithName:create:
ipasteboardWithUniqueName
dla niestandardowych implementacji. - Obserwuj wywołania metody
setPersistent:
do sprawdzenia ustawień trwałości.
Kluczowe szczegóły do monitorowania obejmują:
- Nazwy schowków i zawartość (na przykład sprawdzanie ciągów znaków, adresów URL, obrazów).
- Liczba elementów i typy danych obecne, wykorzystując sprawdzenia standardowych i niestandardowych typów danych.
- Opcje wygaśnięcia i lokalne poprzez sprawdzenie metody
setItems:options:
.
Przykładem narzędzia do monitorowania jest monitor schowka objection, który sprawdza schowek ogólny co 5 sekund w poszukiwaniu zmian i wypisuje nowe dane.
Oto prosty przykładowy skrypt JavaScript, inspirowany podejściem objection, do odczytywania i rejestrowania zmian ze schowka co 5 sekund:
const UIPasteboard = ObjC.classes.UIPasteboard;
const Pasteboard = UIPasteboard.generalPasteboard();
var items = "";
var count = Pasteboard.changeCount().toString();
setInterval(function () {
const currentCount = Pasteboard.changeCount().toString();
const currentItems = Pasteboard.items().toString();
if (currentCount === count) { return; }
items = currentItems;
count = currentCount;
console.log('[* Pasteboard changed] count: ' + count +
' hasStrings: ' + Pasteboard.hasStrings().toString() +
' hasURLs: ' + Pasteboard.hasURLs().toString() +
' hasImages: ' + Pasteboard.hasImages().toString());
console.log(items);
}, 1000 * 5);
Odnośniki
- 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://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0073/
{% embed url="https://websec.nl/" %}
Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!
Inne sposoby wsparcia HackTricks:
- Jeśli chcesz zobaczyć swoją firmę reklamowaną w HackTricks lub pobrać HackTricks w formacie PDF sprawdź PLANY SUBSKRYPCYJNE!
- Zdobądź oficjalne gadżety PEASS & HackTricks
- Odkryj Rodzinę PEASS, naszą kolekcję ekskluzywnych NFT
- Dołącz do 💬 grupy Discord lub grupy telegramowej lub śledź nas na Twitterze 🐦 @carlospolopm.
- Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do HackTricks i HackTricks Cloud github repos.