hacktricks/mobile-pentesting/ios-pentesting/ios-testing-environment.md

11 KiB

iOS Testing Environment

Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

Drugi načini podrške HackTricks-u:

Apple Developer Program

Provisioning identitet je kolekcija javnih i privatnih ključeva koji su povezani sa Apple developerskim nalogom. Da biste potpisali aplikacije, morate platiti 99 dolara/godina da se registrujete u Apple Developer Program i dobijete svoj provisioning identitet. Bez toga nećete moći da pokrenete aplikacije iz izvornog koda na fizičkom uređaju. Druga opcija je da koristite jailbroken uređaj.

Počevši od Xcode 7.2, Apple je omogućio opciju za kreiranje besplatnog iOS razvojnog provisioning profila koji omogućava pisanje i testiranje vaše aplikacije na pravom iPhone-u. Idite na Xcode --> Preferences --> Accounts --> + (Dodajte novi Appli ID sa vašim pristupnim podacima) --> Kliknite na kreirani Apple ID --> Manage Certificates --> + (Apple Development) --> Done
__Zatim, da biste pokrenuli aplikaciju na svom iPhone-u, prvo morate ukazati poverenje iPhone-u u računar. Zatim, možete pokušati da pokrenete aplikaciju na mobilnom uređaju iz Xcode-a, ali će se pojaviti greška. Zato idite na Settings --> General --> Profiles and Device Management --> Izaberite nepovereni profil i kliknite na "Trust".

Imajte na umu da aplikacije potpisane istim potpisnim sertifikatom mogu deliti resurse na siguran način, poput stavki u kešu.

Provisioning profili se čuvaju unutar telefona u /Library/MobileDevice/ProvisioningProfiles

Simulator

{% hint style="info" %} Imajte na umu da simulator nije isto što i emulator. Simulator samo simulira ponašanje uređaja i funkcije, ali ih zapravo ne koristi. {% endhint %}

Simulator

Prvo što treba da znate je da izvođenje pentesta unutar simulatora će biti mnogo ograničenije nego kada se radi na jailbroken uređaju.

Svi alati potrebni za izgradnju i podršku iOS aplikacije zvanično su podržani samo na Mac OS-u.
Apple-ov de facto alat za kreiranje/debagovanje/instrumentiranje iOS aplikacija je Xcode. Može se koristiti za preuzimanje drugih komponenti kao što su simulatori i različite verzije SDK-a potrebne za izgradnju i testiranje vaše aplikacije.
Visoko se preporučuje da preuzmete Xcode sa zvaničnog App Store-a. Druge verzije mogu sadržati malver.

Datoteke simulatora se mogu pronaći u /Users/<username>/Library/Developer/CoreSimulator/Devices

Da biste otvorili simulator, pokrenite Xcode, zatim kliknite na Xcode tab --> Open Developer tools --> Simulator
__Na sledećoj slici klikom na "iPod touch [...]" možete izabrati drugi uređaj za testiranje:

Aplikacije u Simulatoru

Unutar /Users/<username>/Library/Developer/CoreSimulator/Devices možete pronaći sve instalirane simulatore. Ako želite da pristupite datotekama aplikacije kreirane unutar jednog od emulatora, može biti teško znati u kojem je instalirana aplikacija. Brz način da pronađete tačan UID je da pokrenete aplikaciju u simulatoru i izvršite:

xcrun simctl list | grep Booted
iPhone 8 (BF5DA4F8-6BBE-4EA0-BA16-7E3AFD16C06C) (Booted)

Kada jednom znate UID, aplikacije instalirane unutar njega mogu se pronaći u /Users/<username>/Library/Developer/CoreSimulator/Devices/{UID}/data/Containers/Data/Application

Međutim, iznenađujuće, aplikaciju nećete pronaći ovde. Morate pristupiti /Users/<username>/Library/Developer/Xcode/DerivedData/{Application}/Build/Products/Debug-iphonesimulator/

I u ovom folderu možete pronaći paket aplikacije.

Emulator

Corellium je jedini javno dostupan iOS emulator. To je rešenje preduzeća sa modelom licence po korisniku i ne nudi probnu licencu.

Jailbreaking

Apple strogo zahteva da kod koji se izvršava na iPhone-u mora biti potpisan sertifikatom izdatim od strane Apple-a. Jailbreaking je proces aktivnog zaobilaska takvih ograničenja i drugih sigurnosnih kontrola postavljenih od strane OS-a. Stoga, kada je uređaj jailbroken, integritetna provera koja je odgovorna za proveru instaliranih aplikacija je zakrpljena tako da je zaobiđena.

{% hint style="info" %} Za razliku od Androida, ne možete prebaciti u "Režim programera" u iOS-u da biste pokrenuli nepotpisani/nepoverljivi kod na uređaju. {% endhint %}

Rooting Androida vs. Jailbreaking iOS-a

Iako se često porede, rooting na Androidu i jailbreaking na iOS-u su fundamentalno različiti procesi. Rooting Android uređaja može uključivati instaliranje su binarnog koda ili zamenu sistema sa rootovanim prilagođenim ROM-om, što ne zahteva nužno eksploate ako je bootloader otključan. Flashing prilagođenih ROM-ova zamenjuje OS uređaja nakon otključavanja bootloader-a, ponekad zahtevajući eksploate.

Za razliku od toga, iOS uređaji ne mogu flashovati prilagođene ROM-ove zbog restrikcije bootloader-a da samo podiže Apple-ove slike. Jailbreaking iOS-a ima za cilj da zaobiđe Apple-ove zaštite potpisa koda kako bi pokrenuo nepotpisani kod, proces koji otežava kontinuiranim sigurnosnim unapređenjima Apple-a.

Izazovi Jailbreakinga

Jailbreaking iOS-a je sve teži kako Apple brzo zakrpljuje ranjivosti. Vraćanje na stariju verziju iOS-a je moguće samo u ograničenom vremenskom periodu nakon izdanja, čineći jailbreaking pitanje vremenske osetljivosti. Uređaji korišćeni za testiranje sigurnosti ne bi trebalo da se ažuriraju osim ako ponovno jailbreakingovanje nije garantovano.

Ažuriranja iOS-a kontroliše mehanizam izazova-odgovora (SHSH blokovi), omogućavajući instalaciju samo za Apple-ove potpisane odgovore. Ovaj mehanizam, poznat kao "prozor potpisa", ograničava mogućnost skladištenja i kasnije korišćenje OTA firmware paketa. Veb sajt IPSW Downloads je resurs za proveru trenutnih prozora potpisa.

Vrste Jailbreaka

  • Tethered jailbreaks zahtevaju povezivanje sa računarom za svako ponovno pokretanje.
  • Semi-tethered jailbreaks omogućavaju pokretanje u režimu bez jailbreaka bez računara.
  • Semi-untethered jailbreaks zahtevaju ručno ponovno jailbreakingovanje bez potrebe za računarom.
  • Untethered jailbreaks nude trajno rešenje za jailbreak bez potrebe za ponovnom primenom.

Alati i Resursi za Jailbreaking

Alati za jailbreaking variraju prema verziji iOS-a i uređaju. Resursi poput Can I Jailbreak?, The iPhone Wiki i Reddit Jailbreak pružaju ažurirane informacije. Primeri uključuju:

  • Checkra1n za uređaje sa čipom A7-A11.
  • Palera1n za uređaje Checkm8 (A8-A11) na iOS 15.0-16.5.
  • Unc0ver za verzije iOS-a do 14.8.

Modifikacija vašeg uređaja nosi rizike, a jailbreaking treba pristupiti sa oprezom.

Prednosti i Rizici Jailbreakinga

Jailbreaking uklanja sandboxing nametnut od strane OS-a, omogućavajući aplikacijama pristup celom fajl sistemu. Ova sloboda omogućava instalaciju neodobrenih aplikacija i pristup više API-ja. Međutim, za obične korisnike, jailbreaking se ne preporučuje zbog potencijalnih sigurnosnih rizika i nestabilnosti uređaja.

Nakon Jailbreakinga

{% content-ref url="basic-ios-testing-operations.md" %} basic-ios-testing-operations.md {% endcontent-ref %}

Detekcija Jailbreaka

Nekoliko aplikacija će pokušati da detektuju da li je mobilni uređaj jailbroken i u tom slučaju aplikacija neće pokrenuti

  • Nakon jailbreakinga iOS-a obično se instaliraju fajlovi i folderi, koji se mogu pretražiti da bi se utvrdilo da li je uređaj jailbroken.
  • Na jailbroken uređaju aplikacije dobijaju pristup za čitanje/pisanje novih fajlova van sandboxa
  • Neki API pozivi će se ponašati drugačije
  • Prisustvo OpenSSH servisa
  • Pozivanje /bin/sh će vratiti 1 umesto 0

Više informacija o detekciji jailbreakinga ovde.

Možete pokušati da izbegnete ove detekcije koristeći objection's ios jailbreak disable

Bypass Detekcije Jailbreaka

  • Možete pokušati da izbegnete ove detekcije koristeći objection's ios jailbreak disable
  • Takođe možete instalirati alat Liberty Lite (https://ryleyangus.com/repo/). Kada se repozitorijum doda, aplikacija bi trebalo da se pojavi u 'Pretraga' tabu

Reference

Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

Drugi načini podrške HackTricks-u: