iOS Testing Environment
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
A 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 ovoga 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 iz keychain-a.
Provisioning profili se čuvaju unutar telefona u /Library/MobileDevice/ProvisioningProfiles
Napomena da simulator nije isto što i emulator. Simulator samo simulira ponašanje uređaja i funkcije, ali ih zapravo ne koristi.
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:
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:
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.
Corellium je jedini javno dostupan iOS emulator. To je preduzetničko SaaS rešenje sa modelom licence po korisniku i ne nudi probnu licencu.
Pogledajte ovaj blog post o tome kako da pentestujete iOS aplikaciju na ne-jailbroken uređaju: https://dvuln.com/blog/modern-ios-pentesting-no-jailbreak-needed
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 jailbreak-ovan, 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.
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 rooted custom ROM-om, što ne zahteva nužno eksploate ako je bootloader otključan. Flashing custom ROM-ova zamenjuje OS uređaja nakon otključavanja bootloader-a, ponekad zahtevajući eksploataciju.
Nasuprot tome, iOS uređaji ne mogu flash-ovati custom 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 pokrenuo nepodpisani kod, proces koji otežava Apple-ovo kontinuirano unapređenje bezbednosti.
Jailbreaking iOS-a postaje sve teži jer Apple brzo zakrpljuje ranjivosti. Downgrade iOS-a 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 nije zagarantovano ponovno jailbreak-ovanje.
Ažuriranja iOS-a kontrolišu se putem mehanizma 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.
Tethered jailbreak-ovi zahtevaju vezu sa računarom za svaki reboot.
Semi-tethered jailbreak-ovi omogućavaju pokretanje u ne-jailbroken režimu bez računara.
Semi-untethered jailbreak-ovi zahtevaju ručno ponovno jailbreak-ovanje bez potrebe za računarom.
Untethered jailbreak-ovi nude trajno rešenje za jailbreak bez potrebe za ponovnim primenom.
Alati za jailbreaking variraju u zavisnosti od verzije iOS-a i uređaja. 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.
Modifikovanje vašeg uređaja nosi rizike, a jailbreaking treba pristupiti sa oprezom.
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.
Nekoliko aplikacija će pokušati da detektuje da li je mobilni uređaj jailbreak-ovan i u tom slučaju aplikacija neće raditi
Nakon jailbreak-a na iOS-u fajlovi i fascikle se obično instaliraju, ovi se mogu pretraživati da bi se utvrdilo da li je uređaj jailbreak-ovan.
Na jailbreak-ovanom 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 detektovati jailbreak-ovanje ovde.
Možete pokušati da izbegnete ovu detekciju koristeći objection's ios jailbreak disable
.
Možete pokušati da izbegnete ovu detekciju 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 ‘Search’ tabu.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)