iOS Pentesting without Jailbreak

Reading time: 7 minutes

tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Učite i vežbajte Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Podržite HackTricks

Glavna ideja

Aplikacije potpisane sa entitlement get_task_allow omogućavaju trećim aplikacijama da pokrenu funkciju nazvanu task_for_pid() sa ID-jem procesa inicijalne aplikacije kao argumentom kako bi dobile port zadatka nad njom (da bi mogle da je kontrolišu i pristupe njenoj memoriji).

Međutim, nije tako lako kao samo preuzimanje IPA, ponovo potpisivanje sa entitlement-om i vraćanje na vaš uređaj. To je zbog FairPlay zaštite. Kada se potpis aplikacije promeni, DRM (Digital Rights Management) ključ je nevažeći i aplikacija neće raditi.

Sa starim jailbroken uređajem, moguće je instalirati IPA, dekriptovati je koristeći vaš omiljeni alat (kao što su Iridium ili frida-ios-dump), i preuzeti je nazad sa uređaja. Ipak, ako je moguće, preporučuje se da jednostavno pitate klijenta za dekriptovani IPA.

Dobijanje dekriptovanog IPA

Preuzmite ga od Apple-a

  1. Instalirajte aplikaciju koju želite da testirate na iPhone
  2. Instalirajte i pokrenite Apple Configurator na vašem macOS-u
  3. Otvorite Terminal na vašem Mac-u, i idite u /Users/[username]/Library/Group\\ Containers/K36BKF7T3D.group.com.apple.configurator/Library/Caches/Assets/TemporaryItems/MobileApps. IPA će se kasnije pojaviti u ovoj fascikli.
  4. Trebalo bi da vidite svoj iOS uređaj. Dvaput kliknite na njega, a zatim kliknite na Dodaj + → Aplikacije iz gornjeg menija.
  5. Nakon što kliknete na Dodaj, Configurator će preuzeti IPA sa Apple-a i pokušati da je pošalje na vaš uređaj. Ako ste pratili moju preporuku ranije i već instalirali IPA, pojaviće se prozor koji vas pita da ponovo instalirate aplikaciju.
  6. IPA bi trebala biti preuzeta unutar /Users/[username]/Library/Group\\ Containers/K36BKF7T3D.group.com.apple.configurator/Library/Caches/Assets/TemporaryItems/MobileApps odakle je možete uzeti.

Proverite https://dvuln.com/blog/modern-ios-pentesting-no-jailbreak-needed za detaljnije informacije o ovom procesu.

Dekriptovanje aplikacije

Da bismo dekriptovali IPA, instaliraćemo je. Međutim, ako imate stariji jailbroken iPhone, potencijalno njegova verzija neće biti podržana od strane aplikacije, jer obično aplikacije podržavaju samo najnovije verzije.

Dakle, da biste je instalirali, jednostavno raspakujte IPA:

bash
unzip redacted.ipa -d unzipped

Proverite Info.plist za minimalnu podržanu verziju i ako je vaš uređaj stariji od toga, promenite vrednost tako da bude podržana.

Ponovo zipujte IPA:

bash
cd unzipped
zip -r ../no-min-version.ipa *

Zatim instalirajte IPA, na primer sa:

bash
ideviceinstaller -i no-min-version.ipa -w

Napomena da vam može biti potreban AppSync Unified tweak iz Cydie da biste sprečili bilo kakve invalid signature greške.

Kada je instaliran, možete koristiti Iridium tweak iz Cydie kako biste dobili dekriptovani IPA.

Patch entitlements & re-sign

Da biste ponovo potpisali aplikaciju sa get-task-allow entitlements, dostupni su različiti alati kao što su app-signer, codesign i iResign. app-signer ima vrlo korisnički prijateljski interfejs koji omogućava lako ponovo potpisivanje IPA datoteke tako što se navodi IPA za ponovo potpisivanje, da se postavi get-task-allow i sertifikat i profil za obezbeđenje koji će se koristiti.

Što se tiče sertifikata i profila za potpisivanje, Apple nudi besplatne profile za potpisivanje developera za sve naloge putem Xcode-a. Samo kreirajte aplikaciju i konfigurišite jedan. Zatim, konfigurišite iPhone da veruje aplikacijama developera tako što ćete otići na SettingsPrivacy & Security, i kliknite na Developer Mode.

Sa ponovo potpisanim IPA, vreme je da ga instalirate na uređaj kako biste ga pentestovali:

bash
ideviceinstaller -i resigned.ipa -w

Omogućite režim programera (iOS 16+)

Od iOS 16, Apple je uveo Režim programera: bilo koja binarna datoteka koja nosi get_task_allow ili je potpisana razvojnim sertifikatom odbiće da se pokrene dok se Režim programera ne omogući na uređaju. Takođe nećete moći da priključite Frida/LLDB osim ako je ova oznaka uključena.

  1. Instalirajte ili prenesite bilo koji IPA potpisan od strane programera na telefon.
  2. Idite na Podešavanja → Privatnost i bezbednost → Režim programera i uključite ga.
  3. Uređaj će se ponovo pokrenuti; nakon unosa lozinke bićete upitani da Uključite Režim programera.

Režim programera ostaje aktivan dok ga ne onemogućite ili ne obrišete telefon, tako da ovaj korak treba izvesti samo jednom po uređaju. Apple dokumentacija objašnjava bezbednosne implikacije.

Savremene opcije sideloadinga

Sada postoji nekoliko zrelih načina za sideloading i održavanje ponovo potpisanih IPA-a ažuriranim bez jailbreak-a:

AlatZahteviSnageOgraničenja
AltStore 2 / SideStoremacOS/Windows/Linux pratilac koji ponovo potpisuje IPA svake 7 dana sa besplatnim razvojnim profilomAutomatsko učitavanje preko Wi-Fi, radi do iOS 17Potreban računar na istoj mreži, ograničenje od 3 aplikacije koje nameće Apple
TrollStore 1/2Uređaj na iOS 14 – 15.4.1 ranjiv na CoreTrust greškuTrajno potpisivanje (bez 7-dnevnog ograničenja); nije potreban računar nakon instalacijeNije podržano na iOS 15.5+ (greška ispravljena)

Za rutinske pentestove na trenutnim iOS verzijama, Alt/Side-Store su obično najpraktičniji izbor.

Hooking / dinamička instrumentacija

Možete hook-ovati vašu aplikaciju tačno kao na jailbreak-ovanom uređaju kada je potpisana sa get_task_allow i kada je Režim programera uključen:

bash
# Spawn & attach with objection
objection -g "com.example.target" explore

# Or plain Frida
frida -U -f com.example.target -l my_script.js --no-pause

Nedavne Frida verzije (>=16) automatski upravljaju autentifikacijom pokazivača i drugim mitigacijama iOS 17, tako da većina postojećih skripti radi odmah.

Automatizovana dinamička analiza sa MobSF (bez jailbreak-a)

MobSF može instrumentisati dev-potpisanu IPA na pravom uređaju koristeći istu tehniku (get_task_allow) i pruža web UI sa pretraživačem datotečnog sistema, snimanjem saobraćaja i Frida konzolom【】. Najbrži način je da pokrenete MobSF u Docker-u, a zatim povežete svoj iPhone putem USB-a:

bash
docker pull opensecurity/mobile-security-framework-mobsf:latest
docker run -p 8000:8000 --privileged \
-v /var/run/usbmuxd:/var/run/usbmuxd \
opensecurity/mobile-security-framework-mobsf:latest
# Browse to http://127.0.0.1:8000 and upload your resigned IPA

MobSF će automatski implementirati binarni fajl, omogućiti Frida server unutar sandbox-a aplikacije i generisati interaktivni izveštaj.

iOS 17 & Lockdown Mode upozorenja

  • Lockdown Mode (Podešavanja → Privatnost i bezbednost) blokira dinamički linker da učitava nesigned ili eksterno potpisane dinamičke biblioteke. Kada testirate uređaje koji mogu imati ovaj režim omogućen, uverite se da je onemogućen ili će vaši Frida/objection sesije odmah prekinuti.
  • Pointer Authentication (PAC) se sprovodi sistemski na A12+ uređajima. Frida ≥16 transparentno obrađuje PAC stripping — samo održavajte frida-server i Python/CLI alatke ažuriranim kada nova glavna verzija iOS-a bude objavljena.

Reference

tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Učite i vežbajte Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Podržite HackTricks