7 KiB
{% hint style="success" %}
Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Wsparcie dla HackTricks
- Sprawdź plany subskrypcyjne!
- Dołącz do 💬 grupy Discord lub grupy telegram lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Podziel się sztuczkami hackingowymi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów na githubie.
{% embed url="https://websec.nl/" %}
Udostępnianie danych w ramach i między aplikacjami na urządzeniach iOS jest ułatwione przez mechanizm UIPasteboard
, który dzieli się na dwie główne kategorie:
- Ogólny schowek systemowy: Używany do udostępniania danych z dowolną aplikacją i zaprojektowany tak, aby utrzymywać dane po ponownym uruchomieniu urządzenia i odinstalowaniu aplikacji, funkcja ta jest dostępna od iOS 10.
- Niestandardowe / nazwane schowki: Służą specjalnie do udostępniania danych w obrębie aplikacji lub z inną aplikacją, która dzieli ten sam identyfikator zespołu, i nie są zaprojektowane do utrzymywania danych poza życiem procesu aplikacji, która je tworzy, zgodnie ze zmianami wprowadzonymi w iOS 10.
Rozważania dotyczące bezpieczeństwa odgrywają znaczącą rolę przy korzystaniu ze schowków. Na przykład:
- Nie ma mechanizmu, który pozwala użytkownikom zarządzać uprawnieniami aplikacji do dostępu do schowka.
- Aby zminimalizować ryzyko nieautoryzowanego monitorowania schowka w tle, dostęp jest ograniczony do momentu, gdy aplikacja jest na pierwszym planie (od iOS 9).
- Użycie trwałych nazwanych schowków jest odradzane na rzecz wspólnych kontenerów z powodu obaw o prywatność.
- Funkcja Uniwersalny schowek, wprowadzona w iOS 10, umożliwiająca udostępnianie treści między urządzeniami za pośrednictwem ogólnego schowka, może być zarządzana przez programistów w celu ustawienia wygasania danych i wyłączenia automatycznego transferu treści.
Zabezpieczenie, aby wrażliwe informacje nie były przypadkowo przechowywane w globalnym schowku, jest kluczowe. Dodatkowo aplikacje powinny być zaprojektowane tak, aby zapobiegać niewłaściwemu wykorzystaniu danych z globalnego schowka do niezamierzonych działań, a programiści są zachęcani do wdrażania środków zapobiegających kopiowaniu wrażliwych informacji do schowka.
Analiza statyczna
W przypadku analizy statycznej przeszukaj kod źródłowy lub binarny w poszukiwaniu:
generalPasteboard
, aby zidentyfikować użycie ogólnego schowka systemowego.pasteboardWithName:create:
ipasteboardWithUniqueName
, aby tworzyć niestandardowe schowki. Sprawdź, czy trwałość jest włączona, chociaż jest to przestarzałe.
Analiza dynamiczna
Analiza dynamiczna polega na podłączaniu lub śledzeniu konkretnych metod:
- Monitoruj
generalPasteboard
w celu użycia systemowego. - Śledź
pasteboardWithName:create:
ipasteboardWithUniqueName
dla niestandardowych implementacji. - Obserwuj przestarzałe wywołania metody
setPersistent:
, aby sprawdzić ustawienia trwałości.
Kluczowe szczegóły do monitorowania obejmują:
- Nazwy schowków i zawartość (na przykład sprawdzanie ciągów, adresów URL, obrazów).
- Liczba elementów i typy danych obecnych, wykorzystując standardowe i niestandardowe kontrole typów danych.
- Opcje wygasania i lokalne poprzez inspekcję metody
setItems:options:
.
Przykładem użycia narzędzia monitorującego jest monitor schowka objection, który co 5 sekund sprawdza zmiany w generalPasteboard i wyświetla nowe dane.
Oto prosty przykład skryptu JavaScript, inspirowany podejściem objection, do odczytu i rejestrowania zmian z 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);
References
- 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/" %}
{% hint style="success" %}
Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Wsparcie HackTricks
- Sprawdź plany subskrypcyjne!
- Dołącz do 💬 grupy Discord lub grupy telegramowej lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Dziel się trikami hackingowymi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów na githubie.