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.
Udostępnianie danych w ramach i między aplikacjami na urządzeniach iOS jest ułatwione dzięki mechanizmowi UIPasteboard
, który dzieli się na dwie główne kategorie:
- Ogólny schowek systemowy: Służy do udostępniania danych w dowolnej aplikacji i jest zaprojektowany tak, aby utrzymywać dane po ponownym uruchomieniu urządzenia i odinstalowaniu aplikacji, co jest dostępne 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 czasem życia 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łby 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
do tworzenia niestandardowych schowków. 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 wywołania przestarzałej 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 generalPasteboard pod kątem zmian i wyświetla nowe dane.
Oto prosty przykład skryptu JavaScript, inspirowany podejściem objection, do odczytu 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)
Odniesienia
- 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/
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.