iOS Testing Environment

Support HackTricks

Apple Developer Program

Provisioning identity je zbirka javnih i privatnih ključeva koji su povezani sa Apple developer nalogom. Da biste potpisali aplikacije, potrebno je da platite 99$/god da biste se registrovali u Apple Developer Program kako biste dobili svoju provisioning identity. Bez toga nećete moći da pokrenete aplikacije iz izvornog koda na fizičkom uređaju. Druga opcija je korišćenje jailbroken uređaja.

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 podacima) --> Kliknite na kreirani Apple ID --> Manage Certificates --> + (Apple Development) --> Done __Zatim, da biste pokrenuli vašu aplikaciju na iPhone-u, prvo morate navesti iPhone da veruje računaru. Zatim, možete pokušati da pokrenete aplikaciju na mobilnom iz Xcode-a, ali će se pojaviti greška. Idite na Settings --> General --> Profiles and Device Management --> Izaberite nepouzdani profil i kliknite na "Trust".

Napomena da aplikacije potpisane istim potpisnim sertifikatom mogu deliti resurse na siguran način, kao što su stavke u keychain-u.

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

Simulator

Napomena da simulator nije isto što i emulator. Simulator samo simulira ponašanje uređaja i funkcije, ali ih zapravo ne koristi.

Simulator

Prva stvar koju treba da znate je da je izvođenje pentesta unutar simulatora mnogo ograničenije nego na jailbroken uređaju.

Svi alati potrebni za izgradnju i podršku iOS aplikacije su samo zvanično podržani na Mac OS. Apple-ov de facto alat za kreiranje/debugovanje/instrumentaciju iOS aplikacija je Xcode. Može se koristiti za preuzimanje drugih komponenti kao što su simulatori i različite SDK verzije potrebne za izgradnju i testiranje vaše aplikacije. Preporučuje se da preuzmete Xcode iz zvanične prodavnice aplikacija. Druge verzije mogu sadržati malver.

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

Da biste otvorili simulator, pokrenite Xcode, zatim pritisnite 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)

Once you know the UID the apps installed within it can be found in /Users/<username>/Library/Developer/CoreSimulator/Devices/{UID}/data/Containers/Data/Application

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

I u ovoj fascikli možete pronaći paket aplikacije.

Emulator

Corellium je jedini javno dostupan iOS emulator. To je preduzetničko SaaS rešenje sa modelom licence po korisniku i ne nudi probnu licencu.

Jailbeaking

Apple strogo zahteva da kod koji se izvršava na iPhone-u mora biti potpisan sertifikatom koji je izdao Apple. Jailbreaking je proces aktivnog zaobilaženja takvih ograničenja i drugih bezbednosnih kontrola koje postavlja OS. Stoga, kada je uređaj jailbreakovan, provera integriteta koja je odgovorna za proveru instaliranih aplikacija je zakrpljena tako da je zaobiđena.

Za razliku od Android-a, ne možete preći u "Developer Mode" na iOS-u da biste pokrenuli nepodpisani/neprovereni kod na uređaju.

Android Rooting vs. iOS Jailbreaking

Iako se često upoređuju, rooting na Android-u i jailbreaking na iOS-u su fundamentalno različiti procesi. Rooting Android uređaja može uključivati instalaciju su binarnog fajla ili zamenu sistema sa root-ovanim prilagođenim ROM-om, što ne zahteva nužno eksploate ako je bootloader otključan. Flashing custom ROMs zamenjuje OS uređaja nakon otključavanja bootloader-a, ponekad zahtevajući eksploataciju.

Nasuprot tome, iOS uređaji ne mogu flash-ovati prilagođene ROM-ove zbog ograničenja bootloader-a da pokreće samo Apple-om potpisane slike. Jailbreaking iOS ima za cilj da zaobiđe Apple-ove zaštite potpisivanja koda kako bi se pokrenuo nepodpisani kod, proces koji otežava Apple-ovo kontinuirano unapređenje bezbednosti.

Jailbreaking Challenges

Jailbreaking iOS postaje sve teži jer Apple brzo zakrpljuje ranjivosti. Downgrading iOS je moguć samo na ograničeno vreme nakon izdanja, što čini jailbreaking vremenski osetljivim pitanjem. Uređaji korišćeni za bezbednosno testiranje ne bi trebali biti ažurirani osim ako re-jailbreaking nije zagarantovan.

Ažuriranja iOS-a kontrolišu se mehanizmom izazov-odgovor (SHSH blobs), omogućavajući instalaciju samo za Apple-om potpisane odgovore. Ovaj mehanizam, poznat kao "prozor potpisivanja", ograničava mogućnost čuvanja i kasnije korišćenje OTA firmware paketa. IPSW Downloads website je resurs za proveru trenutnih prozora potpisivanja.

Jailbreak Varieties

  • Tethered jailbreaks zahtevaju vezu sa računarom za svaki reboot.

  • Semi-tethered jailbreaks omogućavaju pokretanje u ne-jailbroken režimu bez računara.

  • Semi-untethered jailbreaks zahtevaju ručno re-jailbreaking bez potrebe za računarom.

  • Untethered jailbreaks nude trajno rešenje za jailbreak bez potrebe za ponovnom primenom.

Jailbreaking Tools and Resources

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

  • Checkra1n za A7-A11 čip uređaje.

  • Palera1n za Checkm8 uređaje (A8-A11) na iOS 15.0-16.5.

  • Unc0ver za iOS verzije do 14.8.

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

Jailbreaking Benefits and Risks

Jailbreaking uklanja sandboxing koji nameće OS, 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 nije preporučen zbog potencijalnih bezbednosnih rizika i nestabilnosti uređaja.

After Jailbreaking

iOS Basic Testing Operations

Jailbreak Detection

Nekoliko aplikacija će pokušati da otkrije da li je mobilni uređaj jailbreakovan i u tom slučaju aplikacija neće raditi

  • Nakon jailbreaking-a, iOS fajlovi i fascikle se obično instaliraju, ovi se mogu pretraživati da bi se utvrdilo da li je uređaj jailbreakovan.

  • Na jailbreakovanom uređaju aplikacije dobijaju read/write pristup novim fajlovima van sandbox-a.

  • Neki API pozivi će drugačije reagovati.

  • Prisutnost OpenSSH servisa.

  • Pozivanje /bin/sh će vratiti 1 umesto 0.

Više informacija o tome kako otkriti jailbreaking ovde.

Možete pokušati da izbegnete ova otkrića koristeći objection's ios jailbreak disable.

Jailbreak Detection Bypass

  • Možete pokušati da izbegnete ova otkrića koristeći objection's ios jailbreak disable.

  • Takođe možete instalirati alat Liberty Lite (https://ryleyangus.com/repo/). Kada se repo doda, aplikacija bi trebala da se pojavi u kartici ‘Search’.

References

Support HackTricks

Last updated