iOS Extracting Entitlements From Compiled Application

Support HackTricks

Podsumowanie strony https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0069/#review-entitlements-embedded-in-the-compiled-app-binary

Extracting Entitlements and Mobile Provision Files

Podczas pracy z plikiem IPA aplikacji lub zainstalowaną aplikacją na urządzeniu z jailbreakiem, bezpośrednie znalezienie plików .entitlements lub pliku embedded.mobileprovision może być niemożliwe. Niemniej jednak, listy właściwości uprawnień można nadal wyodrębnić z binarnego pliku aplikacji, stosując procedury opisane w rozdziale "Podstawowe testowanie bezpieczeństwa iOS", szczególnie w sekcji "Pozyskiwanie binarnego pliku aplikacji".

Nawet w przypadku zaszyfrowanych plików binarnych, można zastosować pewne kroki, aby wyodrębnić te pliki. Jeśli te kroki zawiodą, mogą być wymagane narzędzia takie jak Clutch (jeśli jest zgodne z wersją iOS), frida-ios-dump lub podobne narzędzia do odszyfrowania i wyodrębnienia aplikacji.

Extracting the Entitlements Plist from the App Binary

Gdy binarny plik aplikacji jest dostępny na komputerze, binwalk można wykorzystać do wyodrębnienia wszystkich plików XML. Poniższe polecenie pokazuje, jak to zrobić:

$ binwalk -e -y=xml ./Telegram\ X

DECIMAL       HEXADECIMAL     DESCRIPTION
--------------------------------------------------------------------------------
1430180       0x15D2A4        XML document, version: "1.0"
1458814       0x16427E        XML document, version: "1.0"

Alternatywnie, radare2 może być użyty do cichego uruchomienia polecenia i wyjścia, przeszukując wszystkie ciągi w binarnym pliku aplikacji, które zawierają "PropertyList":

$ r2 -qc 'izz~PropertyList' ./Telegram\ X

0x0015d2a4 ascii <?xml version="1.0" encoding="UTF-8" standalone="yes"?>...
0x0016427d ascii H<?xml version="1.0" encoding="UTF-8"?>...

Obie metody, binwalk i radare2, umożliwiają ekstrakcję plików plist, przy czym inspekcja pierwszej (0x0015d2a4) ujawnia udane odzyskanie oryginalnego pliku uprawnień z Telegramu.

Dla binariów aplikacji uzyskanych na urządzeniach z jailbreakiem (np. przez SSH), polecenie grep z flagą -a, --text może być użyte do traktowania wszystkich plików jako tekst ASCII:

$ grep -a -A 5 'PropertyList' /var/containers/Bundle/Application/...

Dostosowanie flagi -A num, --after-context=num pozwala na wyświetlenie większej lub mniejszej liczby linii. Ta metoda jest wykonalna nawet dla zaszyfrowanych binariów aplikacji i została zweryfikowana w przypadku wielu aplikacji z App Store. Narzędzia wspomniane wcześniej mogą być również używane na zrootowanych urządzeniach iOS w podobnych celach.

Uwaga: Bezpośrednie użycie polecenia strings nie jest zalecane do tego zadania z powodu jego ograniczeń w znajdowaniu istotnych informacji. Zamiast tego, zaleca się użycie grep z flagą -a na binarium lub wykorzystanie radare2 (izz)/rabin2 (-zz) dla bardziej efektywnych wyników.

Support HackTricks

Last updated